From e7d719328412c7d410d5c37b1f91ee0612e4f4c5 Mon Sep 17 00:00:00 2001 From: Gabriele Cosmo Date: Wed, 8 Jun 2016 15:42:07 +0200 Subject: [PATCH] Import Geant4 2.0.0 source tree --- ReleaseNotes/ReleaseNotes4.2.0.txt | 392 + config/History | 40 +- config/architecture.gmk | 376 +- config/binmake.gmk | 4 +- config/g4step_correct.pl | 24 +- config/makeshlib.sh | 236 +- config/sys/AIX-xlC.gmk | 37 + config/sys/DEC-cxx.gmk | 41 + config/sys/HP-aCC.gmk | 45 + config/sys/Linux-g++.gmk | 47 + config/sys/SGI-CC.gmk | 36 + config/sys/SUN-CC.gmk | 50 + config/sys/SUN-CC5.gmk | 59 + config/sys/WIN32-VC.gmk | 52 + environments/History | 11 +- environments/OPACS/History | 5 +- environments/OPACS/app/EXPO.cc | 8 +- environments/OPACS/app/TEST.cc | 4 +- environments/OPACS/include/EXPO_Detector.icc | 4 +- .../OPACS/include/EXPO_PhysicsList.hh | 4 +- .../OPACS/include/EXPO_PhysicsList.icc | 4 +- environments/OPACS/include/EXPO_Primary.icc | 4 +- environments/OPACS/include/G4o.h | 4 +- environments/OPACS/include/G4oCommon.hh | 4 +- environments/OPACS/include/G4oCommon.icc | 4 +- environments/OPACS/include/G4oDrawer.hh | 4 +- environments/OPACS/include/G4oEXPO.h | 4 +- environments/OPACS/include/G4oScene.hh | 14 +- environments/OPACS/include/G4oState.hh | 4 +- environments/OPACS/include/WoG4o.h | 4 +- environments/OPACS/mgr/Config.mk | 4 +- environments/OPACS/mgr/Makefile | 4 +- environments/OPACS/mgr/setup.csh | 21 +- environments/OPACS/src/G4o.cc | 8 +- environments/OPACS/src/G4oDrawer.cc | 8 +- environments/OPACS/src/G4oScene.cc | 103 +- environments/OPACS/src/G4oState.cc | 8 +- examples/History | 43 +- .../electromagnetic/TestEm1/GNUmakefile | 4 +- .../extended/electromagnetic/TestEm1/History | 6 +- .../electromagnetic/TestEm1/TestEm1.cc | 2 +- .../electromagnetic/TestEm1/TestEm1.out | 121 +- .../electromagnetic/TestEm1/geant3/README | 4 +- .../electromagnetic/TestEm1/geant3/gmakeB | 17 +- .../electromagnetic/TestEm1/geant3/gmakeT | 10 +- .../TestEm1/geant3/include/calor.inc | 7 + .../TestEm1/geant3/include/celoss.inc | 4 + .../TestEm1/geant3/src/gtgama.F | 267 + .../TestEm1/geant3/src/gukine.F | 30 + .../TestEm1/geant3/src/guout.F | 28 + .../TestEm1/geant3/src/gustep.F | 44 + .../TestEm1/geant3/src/gutrak.F | 29 + .../TestEm1/geant3/src/gutrev.F | 13 + .../electromagnetic/TestEm1/geant3/src/main.F | 61 + .../TestEm1/geant3/src/ugeom.F | 75 + .../TestEm1/geant3/src/uginit.F | 53 + .../TestEm1/geant3/src/uglast.F | 45 + .../TestEm1/geant3/src/uhinit.F | 13 + .../TestEm1/geant3/testem1.cra | 423 - .../include/Em1DetectorConstruction.hh | 2 +- .../TestEm1/include/Em1DetectorMessenger.hh | 2 +- .../TestEm1/include/Em1EventAction.hh | 2 +- .../include/Em1EventActionMessenger.hh | 2 +- .../TestEm1/include/Em1PhysicsList.hh | 2 +- .../include/Em1PhysicsListMessenger.hh | 2 +- .../include/Em1PrimaryGeneratorAction.hh | 2 +- .../TestEm1/include/Em1RunAction.hh | 2 +- .../TestEm1/include/Em1RunActionMessenger.hh | 2 +- .../TestEm1/include/Em1SteppingAction.hh | 2 +- .../TestEm1/include/Em1SteppingVerbose.hh | 12 +- .../TestEm1/include/Em1TrackingAction.hh | 2 +- .../TestEm1/include/Em1VisManager.hh | 2 +- .../TestEm1/include/ProcessesCount.hh | 2 +- .../TestEm1/src/Em1DetectorConstruction.cc | 2 +- .../TestEm1/src/Em1DetectorMessenger.cc | 2 +- .../TestEm1/src/Em1EventAction.cc | 2 +- .../TestEm1/src/Em1EventActionMessenger.cc | 2 +- .../TestEm1/src/Em1PhysicsList.cc | 5 +- .../TestEm1/src/Em1PhysicsListMessenger.cc | 2 +- .../TestEm1/src/Em1PrimaryGeneratorAction.cc | 2 +- .../TestEm1/src/Em1RunAction.cc | 2 +- .../TestEm1/src/Em1RunActionMessenger.cc | 2 +- .../TestEm1/src/Em1SteppingAction.cc | 2 +- .../TestEm1/src/Em1SteppingVerbose.cc | 8 +- .../TestEm1/src/Em1TrackingAction.cc | 2 +- .../TestEm1/src/Em1VisManager.cc | 2 +- .../electromagnetic/TestEm2/GNUmakefile | 4 +- .../extended/electromagnetic/TestEm2/History | 25 + .../electromagnetic/TestEm2/TestEm2.cc | 2 +- .../electromagnetic/TestEm2/TestEm2.in | 4 +- .../electromagnetic/TestEm2/TestEm2.out | 221 +- .../electromagnetic/TestEm2/geant3/README | 2 +- .../electromagnetic/TestEm2/geant3/gmakeB | 19 +- .../electromagnetic/TestEm2/geant3/gmakeT | 12 +- .../TestEm2/geant3/include/celoss.inc | 6 + .../TestEm2/geant3/include/history.inc | 30 + .../TestEm2/geant3/include/pvolum.inc | 9 + .../TestEm2/geant3/src/gukine.F | 31 + .../TestEm2/geant3/src/guout.F | 77 + .../TestEm2/geant3/src/gustep.F | 50 + .../TestEm2/geant3/src/gutrev.F | 15 + .../electromagnetic/TestEm2/geant3/src/main.F | 61 + .../TestEm2/geant3/src/ugeom.F | 94 + .../TestEm2/geant3/src/uginit.F | 52 + .../TestEm2/geant3/src/uglast.F | 94 + .../TestEm2/geant3/src/uhinit.F | 61 + .../TestEm2/geant3/testem2.cra | 586 - .../include/Em2DetectorConstruction.hh | 2 +- .../TestEm2/include/Em2DetectorMessenger.hh | 2 +- .../TestEm2/include/Em2EventAction.hh | 2 +- .../include/Em2EventActionMessenger.hh | 2 +- .../TestEm2/include/Em2PhysicsList.hh | 18 +- .../include/Em2PhysicsListMessenger.hh} | 34 +- .../include/Em2PrimaryGeneratorAction.hh | 2 +- .../TestEm2/include/Em2RunAction.hh | 2 +- .../TestEm2/include/Em2RunActionMessenger.hh | 2 +- .../TestEm2/include/Em2SteppingAction.hh | 2 +- .../TestEm2/include/Em2SteppingVerbose.hh | 10 +- .../TestEm2/include/Em2TrackingAction.hh | 2 +- .../TestEm2/include/Em2VisManager.hh | 2 +- .../electromagnetic/TestEm2/run01.mac | 4 +- .../electromagnetic/TestEm2/run02.mac | 4 +- .../electromagnetic/TestEm2/run03.mac | 4 +- .../electromagnetic/TestEm2/run04.mac | 4 +- .../TestEm2/src/Em2DetectorConstruction.cc | 45 +- .../TestEm2/src/Em2DetectorMessenger.cc | 2 +- .../TestEm2/src/Em2EventAction.cc | 2 +- .../TestEm2/src/Em2EventActionMessenger.cc | 2 +- .../TestEm2/src/Em2PhysicsList.cc | 63 +- .../TestEm2/src/Em2PhysicsListMessenger.cc | 71 + .../TestEm2/src/Em2PrimaryGeneratorAction.cc | 2 +- .../TestEm2/src/Em2RunAction.cc | 8 +- .../TestEm2/src/Em2RunActionMessenger.cc | 2 +- .../TestEm2/src/Em2SteppingAction.cc | 2 +- .../TestEm2/src/Em2SteppingVerbose.cc | 8 +- .../TestEm2/src/Em2TrackingAction.cc | 2 +- .../TestEm2/src/Em2VisManager.cc | 2 +- .../electromagnetic/TestEm3/GNUmakefile | 4 +- .../{TestEm6 => TestEm3}/History | 8 +- .../electromagnetic/TestEm3/TestEm3.cc | 2 +- .../electromagnetic/TestEm3/TestEm3.out | 87 +- .../electromagnetic/TestEm3/geant3/README | 4 +- .../electromagnetic/TestEm3/geant3/gmakeB | 19 +- .../electromagnetic/TestEm3/geant3/gmakeT | 12 +- .../TestEm3/geant3/include/calor.inc | 18 + .../TestEm3/geant3/include/celoss.inc | 4 + .../TestEm3/geant3/src/gukine.F | 45 + .../TestEm3/geant3/src/guout.F | 52 + .../TestEm3/geant3/src/gustep.F | 29 + .../TestEm3/geant3/src/gutrev.F | 17 + .../electromagnetic/TestEm3/geant3/src/main.F | 62 + .../TestEm3/geant3/src/ugeom.F | 145 + .../TestEm3/geant3/src/uginit.F | 55 + .../TestEm3/geant3/src/uglast.F | 50 + .../TestEm3/geant3/src/uhinit.F | 17 + .../TestEm3/geant3/testem3.cra | 518 - .../TestEm3/include/Em3CalorHit.hh | 2 +- .../TestEm3/include/Em3CalorimeterSD.hh | 2 +- .../include/Em3DetectorConstruction.hh | 2 +- .../TestEm3/include/Em3DetectorMessenger.hh | 2 +- .../TestEm3/include/Em3EventAction.hh | 2 +- .../include/Em3EventActionMessenger.hh | 2 +- .../TestEm3/include/Em3PhysicsList.hh | 35 +- .../include/Em3PhysicsListMessenger.hh | 28 +- .../include/Em3PrimaryGeneratorAction.hh | 2 +- .../include/Em3PrimaryGeneratorMessenger.hh | 2 +- .../TestEm3/include/Em3RunAction.hh | 2 +- .../TestEm3/include/Em3RunActionMessenger.hh | 2 +- .../TestEm3/include/Em3SteppingAction.hh | 2 +- .../TestEm3/include/Em3SteppingVerbose.hh | 9 +- .../TestEm3/include/Em3VisManager.hh | 2 +- .../TestEm3/src/Em3CalorHit.cc | 2 +- .../TestEm3/src/Em3CalorimeterSD.cc | 2 +- .../TestEm3/src/Em3DetectorConstruction.cc | 2 +- .../TestEm3/src/Em3DetectorMessenger.cc | 2 +- .../TestEm3/src/Em3EventAction.cc | 2 +- .../TestEm3/src/Em3EventActionMessenger.cc | 2 +- .../TestEm3/src/Em3PhysicsList.cc | 58 +- .../TestEm3/src/Em3PhysicsListMessenger.cc | 71 + .../TestEm3/src/Em3PrimaryGeneratorAction.cc | 2 +- .../src/Em3PrimaryGeneratorMessenger.cc | 2 +- .../TestEm3/src/Em3RunAction.cc | 2 +- .../TestEm3/src/Em3RunActionMessenger.cc | 2 +- .../TestEm3/src/Em3SteppingAction.cc | 2 +- .../TestEm3/src/Em3SteppingVerbose.cc | 8 +- .../TestEm3/src/Em3VisManager.cc | 2 +- .../electromagnetic/TestEm4/GNUmakefile | 4 +- .../extended/electromagnetic/TestEm4/History | 7 +- .../electromagnetic/TestEm4/TestEm4.cc | 2 +- .../electromagnetic/TestEm4/TestEm4.out | 25 +- .../electromagnetic/TestEm4/geant3/README | 24 + .../electromagnetic/TestEm4/geant3/gmakeB | 19 +- .../electromagnetic/TestEm4/geant3/gmakeT | 12 +- .../TestEm4/geant3/include/celoss.inc | 2 + .../TestEm4/geant3/src/gukine.F | 33 + .../TestEm4/geant3/src/guout.F | 27 + .../TestEm4/geant3/src/gustep.F | 24 + .../TestEm4/geant3/src/gutrev.F | 13 + .../electromagnetic/TestEm4/geant3/src/main.F | 58 + .../TestEm4/geant3/src/ugeom.F | 57 + .../TestEm4/geant3/src/uginit.F | 38 + .../TestEm4/geant3/src/uglast.F | 21 + .../TestEm4/geant3/src/uhinit.F | 11 + .../TestEm4/geant3/testem4.cra | 314 - .../include/Em4DetectorConstruction.hh | 2 +- .../TestEm4/include/Em4EventAction.hh | 2 +- .../include/Em4EventActionMessenger.hh | 2 +- .../TestEm4/include/Em4PhysicsList.hh | 2 +- .../include/Em4PrimaryGeneratorAction.hh | 2 +- .../TestEm4/include/Em4RunAction.hh | 2 +- .../TestEm4/include/Em4RunActionMessenger.hh | 2 +- .../TestEm4/include/Em4SteppingAction.hh | 2 +- .../TestEm4/include/Em4SteppingVerbose.hh | 9 +- .../TestEm4/include/Em4VisManager.hh | 2 +- .../TestEm4/src/Em4DetectorConstruction.cc | 2 +- .../TestEm4/src/Em4EventAction.cc | 2 +- .../TestEm4/src/Em4EventActionMessenger.cc | 2 +- .../TestEm4/src/Em4PhysicsList.cc | 2 +- .../TestEm4/src/Em4PrimaryGeneratorAction.cc | 2 +- .../TestEm4/src/Em4RunAction.cc | 2 +- .../TestEm4/src/Em4RunActionMessenger.cc | 2 +- .../TestEm4/src/Em4SteppingAction.cc | 2 +- .../TestEm4/src/Em4SteppingVerbose.cc | 8 +- .../TestEm4/src/Em4VisManager.cc | 2 +- .../electromagnetic/TestEm5/GNUmakefile | 4 +- .../extended/electromagnetic/TestEm5/History | 5 +- .../electromagnetic/TestEm5/TestEm5.cc | 2 +- .../electromagnetic/TestEm5/TestEm5.out | 357 +- .../electromagnetic/TestEm5/geant3/README | 10 +- .../electromagnetic/TestEm5/geant3/gmakeB | 19 +- .../electromagnetic/TestEm5/geant3/gmakeT | 12 +- .../TestEm5/geant3/include/edepo.inc | 18 + .../electromagnetic/TestEm5/geant3/run55.dat | 17 + .../electromagnetic/TestEm5/geant3/src/grun.F | 63 + .../TestEm5/geant3/src/gukine.F | 43 + .../TestEm5/geant3/src/guout.F | 38 + .../TestEm5/geant3/src/gustep.F | 153 + .../electromagnetic/TestEm5/geant3/src/main.F | 64 + .../TestEm5/geant3/src/ugeom.F | 106 + .../TestEm5/geant3/src/uginit.F | 126 + .../TestEm5/geant3/src/uglast.F | 61 + .../TestEm5/geant3/src/uhinit.F | 52 + .../TestEm5/geant3/testem5.cra | 759 - .../TestEm5/include/Em5CalorHit.hh | 2 +- .../TestEm5/include/Em5CalorimeterSD.hh | 2 +- .../include/Em5DetectorConstruction.hh | 2 +- .../TestEm5/include/Em5DetectorMessenger.hh | 2 +- .../TestEm5/include/Em5EventAction.hh | 2 +- .../include/Em5EventActionMessenger.hh | 2 +- .../TestEm5/include/Em5PhysicsList.hh | 2 +- .../include/Em5PhysicsListMessenger.hh | 2 +- .../include/Em5PrimaryGeneratorAction.hh | 2 +- .../include/Em5PrimaryGeneratorMessenger.hh | 2 +- .../TestEm5/include/Em5RunAction.hh | 2 +- .../TestEm5/include/Em5RunMessenger.hh | 2 +- .../TestEm5/include/Em5StepCut.hh | 2 +- .../TestEm5/include/Em5SteppingAction.hh | 2 +- .../TestEm5/include/Em5SteppingMessenger.hh | 2 +- .../TestEm5/include/Em5SteppingVerbose.hh | 8 +- .../TestEm5/include/Em5VisManager.hh | 2 +- .../electromagnetic/TestEm5/run55.mac | 38 + .../TestEm5/src/Em5CalorHit.cc | 2 +- .../TestEm5/src/Em5CalorimeterSD.cc | 2 +- .../TestEm5/src/Em5DetectorConstruction.cc | 2 +- .../TestEm5/src/Em5DetectorMessenger.cc | 2 +- .../TestEm5/src/Em5EventAction.cc | 2 +- .../TestEm5/src/Em5EventActionMessenger.cc | 2 +- .../TestEm5/src/Em5PhysicsList.cc | 14 +- .../TestEm5/src/Em5PhysicsListMessenger.cc | 2 +- .../TestEm5/src/Em5PrimaryGeneratorAction.cc | 2 +- .../src/Em5PrimaryGeneratorMessenger.cc | 2 +- .../TestEm5/src/Em5RunAction.cc | 2 +- .../TestEm5/src/Em5RunMessenger.cc | 2 +- .../electromagnetic/TestEm5/src/Em5StepCut.cc | 2 +- .../TestEm5/src/Em5SteppingAction.cc | 2 +- .../TestEm5/src/Em5SteppingMessenger.cc | 2 +- .../TestEm5/src/Em5SteppingVerbose.cc | 8 +- .../TestEm5/src/Em5VisManager.cc | 2 +- .../electromagnetic/TestEm6/GNUmakefile | 27 - .../electromagnetic/TestEm6/TestEm6.cc | 109 - .../electromagnetic/TestEm6/TestEm6.in | 50 - .../electromagnetic/TestEm6/TestEm6.out | 297 - .../electromagnetic/TestEm6/batch.mac | 57 - .../TestEm6/include/Em6CalorHit.hh | 81 - .../TestEm6/include/Em6CalorimeterSD.hh | 50 - .../include/Em6DetectorConstruction.hh | 138 - .../TestEm6/include/Em6DetectorMessenger.hh | 66 - .../TestEm6/include/Em6EventAction.hh | 65 - .../TestEm6/include/Em6PhysicsList.hh | 78 - .../include/Em6PhysicsListMessenger.hh | 49 - .../include/Em6PrimaryGeneratorAction.hh | 47 - .../TestEm6/include/Em6RunAction.hh | 202 - .../TestEm6/include/Em6RunMessenger.hh | 97 - .../TestEm6/include/Em6StepCut.hh | 120 - .../TestEm6/include/Em6SteppingAction.hh | 53 - .../TestEm6/include/Em6SteppingMessenger.hh | 48 - .../TestEm6/include/Em6SteppingVerbose.hh | 47 - .../TestEm6/include/Em6VisManager.hh | 48 - .../TestEm6/include/G4IonAr40.hh | 81 - .../TestEm6/include/G4IonC12.hh | 82 - .../TestEm6/include/G4IonFe56.hh | 82 - .../TestEm6/src/Em6CalorHit.cc | 60 - .../TestEm6/src/Em6DetectorConstruction.cc | 371 - .../TestEm6/src/Em6DetectorMessenger.cc | 137 - .../TestEm6/src/Em6DetectorSD.cc | 119 - .../TestEm6/src/Em6EventAction.cc | 215 - .../TestEm6/src/Em6EventActionMessenger.cc | 59 - .../TestEm6/src/Em6PhysicsList.cc | 441 - .../TestEm6/src/Em6PhysicsListMessenger.cc | 96 - .../TestEm6/src/Em6PrimaryGeneratorAction.cc | 80 - .../TestEm6/src/Em6RunAction.cc | 1784 - .../TestEm6/src/Em6RunMessenger.cc | 349 - .../electromagnetic/TestEm6/src/Em6StepCut.cc | 48 - .../TestEm6/src/Em6SteppingAction.cc | 199 - .../TestEm6/src/Em6SteppingMessenger.cc | 42 - .../TestEm6/src/Em6SteppingVerbose.cc | 170 - .../TestEm6/src/Em6VisManager.cc | 138 - .../electromagnetic/TestEm6/src/G4IonAr40.cc | 79 - .../electromagnetic/TestEm6/src/G4IonC12.cc | 76 - .../electromagnetic/TestEm6/src/G4IonFe56.cc | 76 - .../electromagnetic/TestEm8/GNUmakefile | 10 +- .../electromagnetic/TestEm8/TestEm8.cc | 2 +- .../electromagnetic/TestEm8/TestEm8.in | 57 + .../TestEm8/TestEm8.large_N.in | 57 + .../TestEm8/include/Em8CalorHit.hh | 6 +- .../TestEm8/include/Em8CalorimeterSD.hh | 6 +- .../include/Em8DetectorConstruction.hh | 23 +- .../TestEm8/include/Em8DetectorMessenger.hh | 6 +- .../TestEm8/include/Em8EventAction.hh | 6 +- .../include/Em8EventActionMessenger.hh | 6 +- .../TestEm8/include/Em8PhysicsList.hh | 15 +- .../include/Em8PhysicsListMessenger.hh | 6 +- .../include/Em8PrimaryGeneratorAction.hh | 6 +- .../include/Em8PrimaryGeneratorMessenger.hh | 6 +- .../TestEm8/include/Em8RunAction.hh | 20 +- .../TestEm8/include/Em8RunMessenger.hh | 6 +- .../TestEm8/include/Em8StepCut.hh | 14 +- .../TestEm8/include/Em8SteppingAction.hh | 6 +- .../TestEm8/include/Em8SteppingMessenger.hh | 6 +- .../TestEm8/include/Em8SteppingVerbose.hh | 6 +- .../TestEm8/include/Em8VisManager.hh | 6 +- .../include/TRTDetectorConstruction.hh | 11 + .../TestEm8/include/TRTMaterials.hh | 12 + .../electromagnetic/TestEm8/run11.mac | 12 +- .../TestEm8/src/Em8CalorHit.cc | 6 +- .../TestEm8/src/Em8CalorimeterSD.cc | 10 +- .../TestEm8/src/Em8DetectorConstruction.cc | 386 +- .../TestEm8/src/Em8DetectorMessenger.cc | 6 +- .../TestEm8/src/Em8EventAction.cc | 24 +- .../TestEm8/src/Em8EventActionMessenger.cc | 6 +- .../TestEm8/src/Em8PhysicsList.cc | 70 +- .../TestEm8/src/Em8PhysicsListMessenger.cc | 6 +- .../TestEm8/src/Em8PrimaryGeneratorAction.cc | 12 +- .../src/Em8PrimaryGeneratorMessenger.cc | 6 +- .../TestEm8/src/Em8RunAction.cc | 355 +- .../TestEm8/src/Em8RunMessenger.cc | 8 +- .../electromagnetic/TestEm8/src/Em8StepCut.cc | 18 +- .../TestEm8/src/Em8SteppingAction.cc | 8 +- .../TestEm8/src/Em8SteppingMessenger.cc | 6 +- .../TestEm8/src/Em8SteppingVerbose.cc | 120 +- .../TestEm8/src/Em8VisManager.cc | 8 +- .../persistency/PersistentEx01/History | 8 +- .../PersistentEx01/PersistentEx01.cc | 4 +- .../PersistentEx01/PersistentEx01.out | 114 +- .../PersistentEx01/src/PersEx01PhysicsList.cc | 2 +- .../persistency/PersistentEx02/History | 8 +- .../PersistentEx02/PersistentEx02.cc | 4 +- .../PersistentEx02/PersistentEx02.out | 808 +- .../include/PersEx02DetectorConstruction.hh | 2 +- .../include/PersEx02EventAction.hh | 2 +- .../include/PersEx02PhysicsList.hh | 2 +- .../include/PersEx02PrimaryGeneratorAction.hh | 2 +- .../include/PersEx02RunAction.hh | 2 +- .../include/PersEx02StackingAction.hh | 2 +- .../include/PersEx02TrackerHit.ddl | 2 +- .../include/PersEx02TrackerHitsCollection.ddl | 2 +- .../include/PersEx02TrackerSD.hh | 2 +- .../PersistentEx02/readDB/GNUmakefile | 4 +- .../src/PersEx02DetectorConstruction.cc | 4 +- .../PersistentEx02/src/PersEx02EventAction.cc | 4 +- .../PersistentEx02/src/PersEx02PhysicsList.cc | 4 +- .../src/PersEx02PrimaryGeneratorAction.cc | 2 +- .../PersistentEx02/src/PersEx02RunAction.cc | 2 +- .../src/PersEx02StackingAction.cc | 2 +- .../PersistentEx02/src/PersEx02TrackerHit.cc | 2 +- .../src/PersEx02TrackerHitsCollection.cc | 2 +- .../PersistentEx02/src/PersEx02TrackerSD.cc | 2 +- examples/novice/N01/History | 6 +- examples/novice/N01/README | 30 +- examples/novice/N01/exampleN01.cc | 2 +- examples/novice/N01/exampleN01.out | 6 +- .../N01/include/ExN01DetectorConstruction.hh | 2 +- .../novice/N01/include/ExN01PhysicsList.hh | 2 +- .../include/ExN01PrimaryGeneratorAction.hh | 2 +- .../N01/src/ExN01DetectorConstruction.cc | 2 +- examples/novice/N01/src/ExN01PhysicsList.cc | 2 +- .../N01/src/ExN01PrimaryGeneratorAction.cc | 2 +- examples/novice/N02/History | 15 +- examples/novice/N02/README | 4 +- examples/novice/N02/exampleN02.cc | 2 +- examples/novice/N02/exampleN02.out | 10540 +-- .../include/ExN02ChamberParameterisation.hh | 2 +- .../N02/include/ExN02DetectorConstruction.hh | 2 +- .../N02/include/ExN02DetectorMessenger.hh | 2 +- .../novice/N02/include/ExN02EventAction.hh | 2 +- .../novice/N02/include/ExN02MagneticField.hh | 2 +- .../novice/N02/include/ExN02PhysicsList.hh | 4 +- .../include/ExN02PrimaryGeneratorAction.hh | 2 +- .../include/ExN02PrimaryGeneratorMessenger.hh | 2 +- examples/novice/N02/include/ExN02RunAction.hh | 2 +- .../novice/N02/include/ExN02SteppingAction.hh | 2 +- .../N02/include/ExN02SteppingVerbose.hh | 11 +- .../novice/N02/include/ExN02TrackerHit.hh | 2 +- examples/novice/N02/include/ExN02TrackerSD.hh | 2 +- .../novice/N02/include/ExN02VisManager.hh | 2 +- .../N02/src/ExN02ChamberParameterisation.cc | 2 +- .../N02/src/ExN02DetectorConstruction.cc | 6 +- .../novice/N02/src/ExN02DetectorMessenger.cc | 2 +- examples/novice/N02/src/ExN02EventAction.cc | 2 +- examples/novice/N02/src/ExN02MagneticField.cc | 2 +- examples/novice/N02/src/ExN02PhysicsList.cc | 5 +- .../N02/src/ExN02PrimaryGeneratorAction.cc | 2 +- .../N02/src/ExN02PrimaryGeneratorMessenger.cc | 2 +- examples/novice/N02/src/ExN02RunAction.cc | 2 +- .../novice/N02/src/ExN02SteppingAction.cc | 2 +- .../novice/N02/src/ExN02SteppingVerbose.cc | 8 +- examples/novice/N02/src/ExN02TrackerHit.cc | 2 +- examples/novice/N02/src/ExN02TrackerSD.cc | 2 +- examples/novice/N02/src/ExN02VisManager.cc | 2 +- examples/novice/N03/History | 67 +- examples/novice/N03/exN03Vis0.mac | 80 +- examples/novice/N03/exN03Vis1.mac | 107 +- examples/novice/N03/exN03Vis2.mac | 83 +- examples/novice/N03/exN03Vis3.mac | 94 +- examples/novice/N03/exN03Vis4.mac | 95 + examples/novice/N03/exN03Vis5.mac | 68 + examples/novice/N03/exN03Vis6.mac | 64 + examples/novice/N03/exampleN03.cc | 14 +- examples/novice/N03/exampleN03.large_N.in | 1 + examples/novice/N03/exampleN03.out | 124 +- examples/novice/N03/{g4.xrm => g4Xt.xrm} | 5 +- examples/novice/N03/gui.mac | 27 + examples/novice/N03/include/ExN03CalorHit.hh | 2 +- .../novice/N03/include/ExN03CalorimeterSD.hh | 2 +- .../N03/include/ExN03DetectorConstruction.hh | 2 +- .../N03/include/ExN03DetectorMessenger.hh | 2 +- .../novice/N03/include/ExN03EventAction.hh | 2 +- .../N03/include/ExN03EventActionMessenger.hh | 2 +- .../novice/N03/include/ExN03PhysicsList.hh | 10 +- .../include/ExN03PrimaryGeneratorAction.hh | 2 +- .../include/ExN03PrimaryGeneratorMessenger.hh | 2 +- examples/novice/N03/include/ExN03RunAction.hh | 2 +- .../novice/N03/include/ExN03SteppingAction.hh | 2 +- .../N03/include/ExN03SteppingVerbose.hh | 13 +- .../novice/N03/include/ExN03VisManager.hh | 2 +- examples/novice/N03/newgeom.mac | 7 +- examples/novice/N03/prerunN03.mac | 3 +- examples/novice/N03/run2.mac | 3 +- examples/novice/N03/src/ExN03CalorHit.cc | 2 +- examples/novice/N03/src/ExN03CalorimeterSD.cc | 2 +- .../N03/src/ExN03DetectorConstruction.cc | 2 +- .../novice/N03/src/ExN03DetectorMessenger.cc | 2 +- examples/novice/N03/src/ExN03EventAction.cc | 87 +- .../N03/src/ExN03EventActionMessenger.cc | 2 +- examples/novice/N03/src/ExN03PhysicsList.cc | 126 +- .../N03/src/ExN03PrimaryGeneratorAction.cc | 2 +- .../N03/src/ExN03PrimaryGeneratorMessenger.cc | 2 +- examples/novice/N03/src/ExN03RunAction.cc | 2 +- .../novice/N03/src/ExN03SteppingAction.cc | 2 +- .../novice/N03/src/ExN03SteppingVerbose.cc | 8 +- examples/novice/N03/src/ExN03VisManager.cc | 12 +- examples/novice/N04/History | 11 +- examples/novice/N04/exampleN04.EMtest.out | 64 +- examples/novice/N04/exampleN04.cc | 2 +- examples/novice/N04/exampleN04.out | 50 +- examples/novice/N04/src/ExN04PhysicsList.cc | 2 +- .../novice/N04/src/ExN04StackingAction.cc | 2 +- examples/novice/N05/History | 6 +- examples/novice/N05/exampleN05.cc | 10 +- examples/novice/N05/exampleN05.out | 338 +- .../novice/N05/include/ExN05CalorimeterHit.hh | 2 +- .../novice/N05/include/ExN05CalorimeterSD.hh | 2 +- .../N05/include/ExN05DetectorConstruction.hh | 2 +- .../N05/include/ExN05DetectorMessenger.hh | 2 +- .../novice/N05/include/ExN05EMShowerModel.hh | 2 +- .../novice/N05/include/ExN05EnergySpot.hh | 2 +- .../novice/N05/include/ExN05EventAction.hh | 2 +- .../N05/include/ExN05EventActionMessenger.hh | 2 +- .../novice/N05/include/ExN05MaxTimeCuts.hh | 2 +- .../novice/N05/include/ExN05MinEkineCuts.hh | 2 +- .../novice/N05/include/ExN05MinRangeCuts.hh | 2 +- .../novice/N05/include/ExN05PhysicsList.hh | 2 +- examples/novice/N05/include/ExN05PiModel.hh | 2 +- .../N05/include/ExN05PionShowerModel.hh | 2 +- .../include/ExN05PrimaryGeneratorAction.hh | 2 +- examples/novice/N05/include/ExN05RunAction.hh | 2 +- .../novice/N05/include/ExN05SpecialCuts.hh | 2 +- .../novice/N05/include/ExN05SteppingAction.hh | 2 +- .../include/ExN05SteppingActionMessenger.hh | 2 +- .../novice/N05/include/ExN05VisManager.hh | 18 +- .../novice/N05/src/ExN05CalorimeterHit.cc | 2 +- examples/novice/N05/src/ExN05CalorimeterSD.cc | 2 +- .../N05/src/ExN05DetectorConstruction.cc | 2 +- .../novice/N05/src/ExN05DetectorMessenger.cc | 2 +- examples/novice/N05/src/ExN05EMShowerModel.cc | 2 +- examples/novice/N05/src/ExN05EnergySpot.cc | 2 +- examples/novice/N05/src/ExN05EventAction.cc | 2 +- .../N05/src/ExN05EventActionMessenger.cc | 2 +- examples/novice/N05/src/ExN05MaxTimeCuts.cc | 2 +- examples/novice/N05/src/ExN05MinEkineCuts.cc | 2 +- examples/novice/N05/src/ExN05MinRangeCuts.cc | 2 +- examples/novice/N05/src/ExN05PhysicsList.cc | 2 +- examples/novice/N05/src/ExN05PiModel.cc | 2 +- .../novice/N05/src/ExN05PionShowerModel.cc | 2 +- .../N05/src/ExN05PrimaryGeneratorAction.cc | 2 +- examples/novice/N05/src/ExN05RunAction.cc | 2 +- examples/novice/N05/src/ExN05SpecialCuts.cc | 2 +- .../novice/N05/src/ExN05SteppingAction.cc | 2 +- .../N05/src/ExN05SteppingActionMessenger.cc | 2 +- .../novice/N05/src/ExN05VisManager.cc | 33 +- examples/novice/N06/History | 6 +- examples/novice/N06/exampleN06.out | 33736 +++++----- source/GNUmakefile | 35 +- .../digits+hits/detector/include/G4HCtable.hh | 2 +- .../detector/include/G4SDManager.hh | 2 +- .../detector/include/G4SDStructure.hh | 2 +- .../detector/include/G4SDmessenger.hh | 2 +- .../detector/include/G4SensitiveVolumeList.hh | 2 +- .../include/G4SensitiveVolumeList.icc | 2 +- .../detector/include/G4VReadOutGeometry.hh | 2 +- .../detector/include/G4VSensitiveDetector.hh | 2 +- source/digits+hits/detector/src/G4HCtable.cc | 2 +- .../digits+hits/detector/src/G4SDManager.cc | 2 +- .../digits+hits/detector/src/G4SDStructure.cc | 2 +- .../digits+hits/detector/src/G4SDmessenger.cc | 2 +- .../detector/src/G4SensitiveVolumeList.cc | 2 +- .../detector/src/G4VReadOutGeometry.cc | 2 +- .../detector/src/G4VSensitiveDetector.cc | 2 +- .../digits/include/G4DCofThisEvent.hh | 2 +- .../digits/include/G4TDigiCollection.hh | 2 +- source/digits+hits/digits/include/G4VDigi.hh | 2 +- .../digits/include/G4VDigiCollection.hh | 2 +- .../digits+hits/digits/src/G4DCofThisEvent.cc | 2 +- .../digits/src/G4TDigiCollection.cc | 2 +- source/digits+hits/digits/src/G4VDigi.cc | 2 +- .../digits/src/G4VDigiCollection.cc | 2 +- .../hits/include/G4HCofThisEvent.hh | 2 +- .../hits/include/G4THitsCollection.hh | 2 +- source/digits+hits/hits/include/G4VHit.hh | 2 +- .../hits/include/G4VHitsCollection.hh | 2 +- .../digits+hits/hits/src/G4HCofThisEvent.cc | 2 +- .../digits+hits/hits/src/G4THitsCollection.cc | 2 +- source/digits+hits/hits/src/G4VHit.cc | 2 +- .../digits+hits/hits/src/G4VHitsCollection.cc | 2 +- .../include/G4ClassificationOfNewTrack.hh | 2 +- source/event/include/G4EvManMessenger.hh | 2 +- source/event/include/G4Event.hh | 2 +- source/event/include/G4EventManager.hh | 2 +- source/event/include/G4HEPEvtInterface.hh | 2 +- source/event/include/G4HEPEvtParticle.hh | 2 +- source/event/include/G4ParticleGun.hh | 2 +- .../event/include/G4ParticleGunMessenger.hh | 2 +- source/event/include/G4PrimaryParticle.hh | 2 +- source/event/include/G4PrimaryTransformer.hh | 2 +- source/event/include/G4PrimaryVertex.hh | 2 +- source/event/include/G4StackManager.hh | 2 +- source/event/include/G4StackedTrack.hh | 2 +- source/event/include/G4StackingMessenger.hh | 2 +- source/event/include/G4TrackStack.hh | 2 +- source/event/include/G4TrajectoryContainer.hh | 2 +- source/event/include/G4UserEventAction.hh | 2 +- source/event/include/G4UserStackingAction.hh | 2 +- source/event/include/G4VPrimaryGenerator.hh | 2 +- source/event/include/eventgendefs.hh | 2 +- source/event/include/evmandefs.hh | 2 +- source/event/include/trajectoryControl.hh | 2 +- source/event/src/G4EvManMessenger.cc | 2 +- source/event/src/G4Event.cc | 2 +- source/event/src/G4EventManager.cc | 2 +- source/event/src/G4HEPEvtInterface.cc | 2 +- source/event/src/G4HEPEvtParticle.cc | 2 +- source/event/src/G4ParticleGun.cc | 2 +- source/event/src/G4ParticleGunMessenger.cc | 2 +- source/event/src/G4PrimaryParticle.cc | 2 +- source/event/src/G4PrimaryTransformer.cc | 2 +- source/event/src/G4PrimaryVertex.cc | 2 +- source/event/src/G4StackManager.cc | 2 +- source/event/src/G4StackedTrack.cc | 2 +- source/event/src/G4StackingMessenger.cc | 2 +- source/event/src/G4TrackStack.cc | 2 +- source/event/src/G4UserEventAction.cc | 2 +- source/event/src/G4UserStackingAction.cc | 2 +- source/event/src/G4VPrimaryGenerator.cc | 2 +- source/g3tog4/GNUmakefile | 1 + source/g3tog4/History | 6 +- source/g3tog4/include/G3CalcParams.hh | 2 +- source/g3tog4/include/G3DetTable.hh | 2 +- source/g3tog4/include/G3DetTableEntry.hh | 2 +- source/g3tog4/include/G3Division.hh | 2 +- source/g3tog4/include/G3EleTable.hh | 2 +- source/g3tog4/include/G3G4Interface.hh | 2 +- source/g3tog4/include/G3MatTable.hh | 2 +- source/g3tog4/include/G3MatTableEntry.hh | 2 +- source/g3tog4/include/G3MedTable.hh | 2 +- source/g3tog4/include/G3MedTableEntry.hh | 2 +- source/g3tog4/include/G3PartTable.hh | 2 +- source/g3tog4/include/G3Pos.hh | 2 +- source/g3tog4/include/G3RotTable.hh | 2 +- source/g3tog4/include/G3RotTableEntry.hh | 2 +- source/g3tog4/include/G3SensVolVector.hh | 2 +- source/g3tog4/include/G3VolTable.hh | 2 +- source/g3tog4/include/G3VolTableEntry.hh | 2 +- source/g3tog4/include/G3toG4.hh | 2 +- source/g3tog4/include/G3toG4.inc | 2 +- source/g3tog4/include/G3toG4BuildTree.hh | 2 +- source/g3tog4/include/G3toG4MakeSolid.hh | 2 +- source/g3tog4/include/G3toG4RotationMatrix.hh | 2 +- source/g3tog4/include/gcbank.inc | 2 +- source/g3tog4/src/G3CalcParams.cc | 2 +- source/g3tog4/src/G3DetTable.cc | 2 +- source/g3tog4/src/G3DetTableEntry.cc | 2 +- source/g3tog4/src/G3Division.cc | 2 +- source/g3tog4/src/G3EleTable.cc | 2 +- source/g3tog4/src/G3MatTable.cc | 2 +- source/g3tog4/src/G3MatTableEntry.cc | 2 +- source/g3tog4/src/G3MedTable.cc | 2 +- source/g3tog4/src/G3MedTableEntry.cc | 2 +- source/g3tog4/src/G3NegVolPars.cc | 2 +- source/g3tog4/src/G3PartTable.cc | 2 +- source/g3tog4/src/G3Pos.cc | 2 +- source/g3tog4/src/G3RotTable.cc | 2 +- source/g3tog4/src/G3RotTableEntry.cc | 2 +- source/g3tog4/src/G3VolTable.cc | 2 +- source/g3tog4/src/G3VolTableEntry.cc | 2 +- source/g3tog4/src/G3fillParams.cc.archive | 2 +- source/g3tog4/src/G3toG4BuildTree.cc | 2 +- source/g3tog4/src/G3toG4Debug.cc | 2 +- source/g3tog4/src/G3toG4MakeSolid.cc | 2 +- source/g3tog4/src/G3toG4RotationMatrix.cc | 2 +- source/g3tog4/src/G4BuildGeom.cc | 2 +- source/g3tog4/src/G4ggclos.cc | 2 +- source/g3tog4/src/G4gsatt.cc | 2 +- source/g3tog4/src/G4gsdet.cc | 2 +- source/g3tog4/src/G4gsdeta.cc | 2 +- source/g3tog4/src/G4gsdetd.cc | 2 +- source/g3tog4/src/G4gsdeth.cc | 2 +- source/g3tog4/src/G4gsdetu.cc | 2 +- source/g3tog4/src/G4gsdetv.cc | 2 +- source/g3tog4/src/G4gsdk.cc | 2 +- source/g3tog4/src/G4gsdvn.cc | 2 +- source/g3tog4/src/G4gsdvn2.cc | 2 +- source/g3tog4/src/G4gsdvt.cc | 2 +- source/g3tog4/src/G4gsdvt2.cc | 2 +- source/g3tog4/src/G4gsdvx.cc | 2 +- source/g3tog4/src/G4gsmate.cc | 2 +- source/g3tog4/src/G4gsmixt.cc | 2 +- source/g3tog4/src/G4gspart.cc | 2 +- source/g3tog4/src/G4gspos.cc | 2 +- source/g3tog4/src/G4gsposp.cc | 2 +- source/g3tog4/src/G4gsrotm.cc | 2 +- source/g3tog4/src/G4gstmed.cc | 2 +- source/g3tog4/src/G4gstpar.cc | 2 +- source/g3tog4/src/G4gsvolu.cc | 2 +- source/g3tog4/src/clparse.cc | 2 +- source/g3tog4/src/g3routines.F | 2 +- source/g3tog4/src/g3test.F.main | 2 +- source/g3tog4/src/g3tog4.F | 2 +- source/g3tog4/src/g4geom.cc.main | 2 +- source/g3tog4/src/jshape.F | 2 +- source/g3tog4/src/mztog4.F | 2 +- source/g3tog4/src/rztog4.F | 2 +- source/g3tog4/src/tog4.F | 2 +- source/g3tog4/test/GNUmakefile | 105 - source/g3tog4/test/README | 12 - source/g3tog4/test/clGeometry.cc | 163 - source/g3tog4/test/clGeometry.x | 29 - source/g3tog4/test/cltog4.cc | 111 - source/g3tog4/test/cltog4.x | 15 - .../include/G3toG4DetectorConstruction.hh | 45 - .../g3tog4/test/include/G3toG4EventAction.hh | 45 - .../g3tog4/test/include/G3toG4PhysicsList.hh | 68 - .../include/G3toG4PrimaryGeneratorAction.hh | 36 - source/g3tog4/test/include/G3toG4RunAction.hh | 35 - source/g3tog4/test/parity.dat | 14 - .../test/src/G3toG4DetectorConstruction.cc | 110 - source/g3tog4/test/src/G3toG4EventAction.cc | 77 - .../test/src/G3toG4EventActionMessenger.cc | 52 - source/g3tog4/test/src/G3toG4PhysicsList.cc | 294 - .../test/src/G3toG4PrimaryGeneratorAction.cc | 76 - source/g3tog4/test/src/G3toG4RunAction.cc | 38 - source/g3tog4/test/svtwaf.dat | 598 - source/g3tog4/test/testmodel.dat | 33 - source/geometry/GNUmakefile | 8 +- source/geometry/History | 78 +- source/geometry/benchmarks/BuildBoxWorld.hh | 2 +- .../geometry/benchmarks/BuildCalorimeter.hh | 2 +- source/geometry/benchmarks/Shoot.hh | 2 +- source/geometry/benchmarks/calorimeter.cc | 2 +- .../benchmarks/f77cppcomparison/G4Box.cc | 2 +- .../benchmarks/f77cppcomparison/G4Box.hh | 2 +- .../f77cppcomparison/G4Box_fastfabs.cc | 2 +- .../f77cppcomparison/G4RotationMatrix.hh | 2 +- .../f77cppcomparison/G4RotationMatrix.icc | 2 +- .../f77cppcomparison/G4ThreeVector.hh | 2 +- .../f77cppcomparison/G4ThreeVector.icc | 2 +- .../benchmarks/f77cppcomparison/boxtoincpp.cc | 2 +- .../benchmarks/f77cppcomparison/geomdefs.hh | 2 +- .../benchmarks/f77cppcomparison/globals.hh | 2 +- source/geometry/benchmarks/replicaCal.cc | 2 +- source/geometry/benchmarks/shooter.cc | 2 +- source/geometry/magneticfield/History | 51 +- .../magneticfield/include/G4CashKarpRKF45.hh | 55 +- .../magneticfield/include/G4ChordFinder.hh | 88 +- .../magneticfield/include/G4ChordFinder.icc | 59 + .../magneticfield/include/G4ClassicalRK4.hh | 71 +- .../include/G4ElectroMagneticField.hh | 38 +- .../include/G4EqMagElectricField.hh | 42 +- .../include/G4EquationOfMotion.hh | 72 +- .../include/G4EquationOfMotion.icc | 39 +- .../magneticfield/include/G4ExplicitEuler.hh | 25 +- .../geometry/magneticfield/include/G4Field.hh | 26 +- .../magneticfield/include/G4FieldManager.hh | 97 +- .../magneticfield/include/G4FieldManager.icc | 45 + .../magneticfield/include/G4FieldTrack.hh | 98 +- .../magneticfield/include/G4FieldTrack.icc | 2 +- .../include/G4HelixExplicitEuler.hh | 48 +- .../magneticfield/include/G4HelixHeum.hh | 40 +- .../include/G4HelixImplicitEuler.hh | 39 +- .../include/G4HelixSimpleRunge.hh | 10 +- .../magneticfield/include/G4ImplicitEuler.hh | 2 +- .../magneticfield/include/G4LineSection.hh | 53 +- .../include/G4MagErrorStepper.hh | 65 +- .../include/G4MagErrorStepper.icc | 2 +- .../include/G4MagHelicalStepper.hh | 101 +- .../include/G4MagHelicalStepper.icc | 13 +- .../include/G4MagIntegratorDriver.hh | 157 +- .../include/G4MagIntegratorDriver.icc | 40 +- .../include/G4MagIntegratorStepper.hh | 77 +- .../include/G4MagIntegratorStepper.icc | 2 +- .../magneticfield/include/G4Mag_EqRhs.hh | 64 +- .../magneticfield/include/G4Mag_SpinEqRhs.hh | 39 +- .../magneticfield/include/G4Mag_UsualEqRhs.hh | 44 +- .../magneticfield/include/G4MagneticField.hh | 37 +- .../magneticfield/include/G4RKG3_Stepper.hh | 107 +- .../magneticfield/include/G4SimpleHeum.hh | 50 +- .../magneticfield/include/G4SimpleRunge.hh | 42 +- .../include/G4UniformElectricField.hh | 47 +- .../include/G4UniformMagField.hh | 55 +- .../magneticfield/src/G4CashKarpRKF45.cc | 2 +- .../magneticfield/src/G4ChordFinder.cc | 109 +- .../magneticfield/src/G4ClassicalRK4.cc | 2 +- .../magneticfield/src/G4EquationOfMotion.cc | 2 +- .../magneticfield/src/G4ExplicitEuler.cc | 2 +- .../magneticfield/src/G4FieldManager.cc | 2 +- .../magneticfield/src/G4FieldTrack.cc | 2 +- .../magneticfield/src/G4HelixExplicitEuler.cc | 12 +- .../geometry/magneticfield/src/G4HelixHeum.cc | 27 +- .../magneticfield/src/G4HelixImplicitEuler.cc | 18 +- .../magneticfield/src/G4HelixSimpleRunge.cc | 18 +- .../magneticfield/src/G4ImplicitEuler.cc | 2 +- .../magneticfield/src/G4LineSection.cc | 36 +- .../magneticfield/src/G4MagErrorStepper.cc | 29 +- .../magneticfield/src/G4MagHelicalStepper.cc | 49 +- .../src/G4MagIntegratorDriver.cc | 28 +- .../src/G4MagIntegratorStepper.cc | 2 +- .../geometry/magneticfield/src/G4Mag_EqRhs.cc | 2 +- .../magneticfield/src/G4Mag_UsualEqRhs.cc | 2 +- .../magneticfield/src/G4RKG3_Stepper.cc | 13 +- .../magneticfield/src/G4SimpleHeum.cc | 2 +- .../magneticfield/src/G4SimpleRunge.cc | 2 +- .../src/G4UniformElectricField.cc | 2 +- .../magneticfield/src/G4UniformMagField.cc | 2 +- source/geometry/management/History | 19 +- .../management/include/G4AffineTransform.hh | 180 +- .../management/include/G4AffineTransform.icc | 2 +- .../management/include/G4DrawVoxels.hh | 49 +- .../management/include/G4GeometryManager.hh | 51 +- .../management/include/G4LogicalSurface.hh | 93 +- .../management/include/G4LogicalSurface.icc | 53 +- .../management/include/G4LogicalVolume.hh | 256 +- .../management/include/G4LogicalVolume.icc | 2 +- .../include/G4LogicalVolumeStore.hh | 54 +- .../management/include/G4PVParameterised.hh | 56 +- .../management/include/G4PVPlacement.hh | 130 +- .../management/include/G4PVReplica.hh | 18 +- .../include/G4PhysicalVolumeStore.hh | 43 +- .../management/include/G4SmartVoxelHeader.hh | 231 +- .../management/include/G4SmartVoxelHeader.icc | 67 + .../management/include/G4SmartVoxelNode.hh | 127 +- .../management/include/G4SmartVoxelNode.icc | 55 + .../management/include/G4SmartVoxelProxy.hh | 97 +- .../management/include/G4SmartVoxelProxy.icc | 45 + .../management/include/G4SolidStore.hh | 43 +- .../include/G4VPVParameterisation.hh | 57 +- .../management/include/G4VPhysicalVolume.hh | 191 +- .../management/include/G4VPhysicalVolume.icc | 2 +- .../geometry/management/include/G4VSolid.hh | 343 +- .../geometry/management/include/G4VSolid.icc | 20 +- .../management/include/G4VTouchable.hh | 105 +- .../management/include/G4VTouchable.icc | 39 +- .../management/include/G4VoxelLimits.hh | 250 +- .../management/include/G4VoxelLimits.icc | 138 + .../geometry/management/include/meshdefs.hh | 11 +- .../geometry/management/include/voxeldefs.hh | 13 +- .../geometry/management/src/G4DrawVoxels.cc | 2 +- .../management/src/G4GeometryManager.cc | 2 +- .../management/src/G4LogicalVolume.cc | 2 +- .../management/src/G4LogicalVolumeStore.cc | 2 +- .../management/src/G4PVParameterised.cc | 2 +- .../geometry/management/src/G4PVPlacement.cc | 2 +- source/geometry/management/src/G4PVReplica.cc | 2 +- .../management/src/G4PhysicalVolumeStore.cc | 2 +- .../management/src/G4SmartVoxelHeader.cc | 2 +- .../management/src/G4SmartVoxelNode.cc | 2 +- .../geometry/management/src/G4SolidStore.cc | 2 +- .../management/src/G4VPVParameterisation.cc | 2 +- .../management/src/G4VPhysicalVolume.cc | 2 +- source/geometry/management/src/G4VSolid.cc | 23 +- .../geometry/management/src/G4VoxelLimits.cc | 2 +- source/geometry/solids/BREPS/GNUmakefile | 3 +- source/geometry/solids/BREPS/History | 70 +- source/geometry/solids/BREPS/ToDo.txt | 321 - .../solids/BREPS/include/G4BREPSolid.hh | 17 +- .../solids/BREPS/include/G4BREPSolidBox.hh | 2 +- .../solids/BREPS/include/G4BREPSolidCone.hh | 2 +- .../BREPS/include/G4BREPSolidCylinder.hh | 2 +- .../solids/BREPS/include/G4BREPSolidPCone.hh | 2 +- .../BREPS/include/G4BREPSolidPolyhedra.hh | 2 +- .../solids/BREPS/include/G4BREPSolidSphere.hh | 2 +- .../solids/BREPS/include/G4BREPSolidTorus.hh | 2 +- .../solids/BREPS/include/G4BSplineCurve.hh | 2 +- .../BREPS/include/G4BSplineCurveWithKnots.hh | 2 +- .../solids/BREPS/include/G4BSplineSurface.hh | 29 +- .../include/G4BSplineSurfaceWithKnots.hh | 21 + .../solids/BREPS/include/G4BezierSurface.hh | 2 +- .../solids/BREPS/include/G4CircularCurve.hh | 2 +- .../geometry/solids/BREPS/include/G4Conic.hh | 1 - .../solids/BREPS/include/G4ConicalSurface.hh | 8 +- .../solids/BREPS/include/G4ControlPoints.hh | 16 +- .../solids/BREPS/include/G4ConvexHull.hh | 2 +- .../geometry/solids/BREPS/include/G4Curve.hh | 6 +- .../BREPS/include/G4CylindricalSurface.hh | 8 +- .../solids/BREPS/include/G4Ellipse.hh | 11 +- .../solids/BREPS/include/G4FConicalSurface.hh | 6 +- .../BREPS/include/G4FCylindricalSurface.hh | 6 +- .../geometry/solids/BREPS/include/G4FPlane.hh | 6 +- .../solids/BREPS/include/G4Globals.hh | 2 +- .../solids/BREPS/include/G4Hyperbola.hh | 8 +- .../solids/BREPS/include/G4KnotVector.hh | 2 +- .../geometry/solids/BREPS/include/G4Line.hh | 2 +- .../solids/BREPS/include/G4OsloMatrix.hh | 2 +- .../solids/BREPS/include/G4Parabola.hh | 9 +- .../solids/BREPS/include/G4PlacedSolid.hh | 2 +- .../geometry/solids/BREPS/include/G4Plane.hh | 2 +- .../solids/BREPS/include/G4Point3DVector.hh | 2 +- .../solids/BREPS/include/G4PointRat.hh | 8 +- .../BREPS/include/G4ProjectedSurface.hh | 2 +- source/geometry/solids/BREPS/include/G4Ray.hh | 2 +- .../include/G4RectangularTrimmedSurface.hh | 6 +- .../geometry/solids/BREPS/include/G4Sort.hh | 2 +- .../BREPS/include/G4SphericalSurface.hh | 8 +- .../solids/BREPS/include/G4Surface.hh | 2 +- .../solids/BREPS/include/G4SurfaceList.hh | 2 +- .../solids/BREPS/include/G4ThreeMat.hh | 6 +- .../solids/BREPS/include/G4ToroidalSurface.hh | 2 +- .../geometry/solids/BREPS/include/G4UVHit.hh | 12 +- .../geometry/solids/BREPS/src/G4BREPSolid.cc | 53 +- .../solids/BREPS/src/G4BREPSolidBox.cc | 2 +- .../solids/BREPS/src/G4BREPSolidCone.cc | 2 +- .../solids/BREPS/src/G4BREPSolidCylinder.cc | 2 +- .../solids/BREPS/src/G4BREPSolidOpenPCone.cc | 2 +- .../solids/BREPS/src/G4BREPSolidPCone.cc | 2 +- .../solids/BREPS/src/G4BREPSolidPolyhedra.cc | 2 +- .../solids/BREPS/src/G4BREPSolidSphere.cc | 2 +- .../solids/BREPS/src/G4BREPSolidTorus.cc | 2 +- .../solids/BREPS/src/G4BSplineCurve.cc | 2 +- .../BREPS/src/G4BSplineCurveWithKnots.cc | 2 +- .../solids/BREPS/src/G4BSplineSurface.cc | 62 +- .../BREPS/src/G4BSplineSurfaceWithKnots.cc | 12 + .../solids/BREPS/src/G4BezierSurface.cc | 2 +- .../solids/BREPS/src/G4CircularCurve.cc | 2 +- source/geometry/solids/BREPS/src/G4Conic.cc | 1 - .../solids/BREPS/src/G4ConicalSurface.cc | 28 +- .../solids/BREPS/src/G4ControlPoints.cc | 18 +- source/geometry/solids/BREPS/src/G4Curve.cc | 2 +- .../solids/BREPS/src/G4CylindricalSurface.cc | 2 +- source/geometry/solids/BREPS/src/G4Ellipse.cc | 16 +- .../solids/BREPS/src/G4FConicalSurface.cc | 2 +- .../solids/BREPS/src/G4FCylindricalSurface.cc | 2 +- source/geometry/solids/BREPS/src/G4FPlane.cc | 2 +- .../geometry/solids/BREPS/src/G4Hyperbola.cc | 2 +- .../geometry/solids/BREPS/src/G4KnotVector.cc | 2 +- source/geometry/solids/BREPS/src/G4Line.cc | 2 +- .../geometry/solids/BREPS/src/G4OsloMatrix.cc | 2 +- .../geometry/solids/BREPS/src/G4Parabola.cc | 2 +- .../solids/BREPS/src/G4PlacedSolid.cc | 2 +- .../geometry/solids/BREPS/src/G4PointRat.cc | 12 +- .../solids/BREPS/src/G4ProjectedSurface.cc | 2 +- source/geometry/solids/BREPS/src/G4Ray.cc | 2 +- .../BREPS/src/G4RectangularTrimmedSurface.cc | 8 +- source/geometry/solids/BREPS/src/G4Sort.cc | 2 +- .../solids/BREPS/src/G4SphericalSurface.cc | 2 +- .../solids/BREPS/src/G4SurfaceList.cc | 14 +- .../geometry/solids/BREPS/src/G4ThreeMat.cc | 2 +- .../solids/BREPS/src/G4ToroidalSurface.cc | 2 +- source/geometry/solids/Boolean/History | 39 +- .../solids/Boolean/include/G4BooleanSolid.hh | 72 +- .../Boolean/include/G4DisplacedSolid.hh | 112 +- .../Boolean/include/G4IntersectionSolid.hh | 73 +- .../Boolean/include/G4SubtractionSolid.hh | 72 +- .../solids/Boolean/include/G4UnionSolid.hh | 76 +- .../solids/Boolean/src/G4BooleanSolid.cc | 10 + .../solids/Boolean/src/G4DisplacedSolid.cc | 44 +- .../solids/Boolean/src/G4IntersectionSolid.cc | 67 +- .../solids/Boolean/src/G4SubtractionSolid.cc | 50 +- .../solids/Boolean/src/G4UnionSolid.cc | 51 +- source/geometry/solids/CSG/History | 155 +- source/geometry/solids/CSG/include/G4Box.hh | 52 +- .../geometry/solids/CSG/include/G4CSGSolid.hh | 23 +- source/geometry/solids/CSG/include/G4Cons.hh | 31 +- source/geometry/solids/CSG/include/G4Hype.hh | 214 - source/geometry/solids/CSG/include/G4Para.hh | 34 +- .../geometry/solids/CSG/include/G4Sphere.hh | 38 +- source/geometry/solids/CSG/include/G4Torus.hh | 86 +- source/geometry/solids/CSG/include/G4Trap.hh | 151 +- source/geometry/solids/CSG/include/G4Trd.hh | 95 +- source/geometry/solids/CSG/include/G4Tubs.hh | 67 +- .../geometry/solids/CSG/include/G4VCSGface.hh | 271 - source/geometry/solids/CSG/src/G4Box.cc | 671 +- source/geometry/solids/CSG/src/G4CSGSolid.cc | 2 +- source/geometry/solids/CSG/src/G4Cons.cc | 53 +- source/geometry/solids/CSG/src/G4Hype.cc | 1669 - source/geometry/solids/CSG/src/G4Para.cc | 33 +- source/geometry/solids/CSG/src/G4Sphere.cc | 1223 +- source/geometry/solids/CSG/src/G4Torus.cc | 2111 +- source/geometry/solids/CSG/src/G4Trap.cc | 33 +- source/geometry/solids/CSG/src/G4Trd.cc | 459 +- source/geometry/solids/CSG/src/G4Tubs.cc | 1568 +- source/geometry/solids/GNUmakefile | 6 +- source/geometry/solids/History | 37 +- source/geometry/solids/STEP/GNUmakefile | 11 +- source/geometry/solids/STEP/History | 46 + source/geometry/solids/STEP/README | 316 + .../geometry/solids/STEP/include/EntityInst.h | 83 - .../solids/STEP/include/Enumeration.h | 176 - source/geometry/solids/STEP/include/ExpDict.h | 1402 +- .../geometry/solids/STEP/include/Registry.h | 76 +- .../solids/STEP/include/STEPaggregate.h | 320 +- .../solids/STEP/include/STEPattribute.h | 115 +- .../solids/STEP/include/STEPattributeList.h | 40 +- .../solids/STEP/include/STEPcomplex.h | 53 +- .../geometry/solids/STEP/include/STEPentity.h | 165 - .../geometry/solids/STEP/include/STEPfile.h | 110 +- .../geometry/solids/STEP/include/STEPselect.h | 113 - .../solids/STEP/include/STEPundefined.h | 14 +- .../geometry/solids/STEP/include/SdaiBinary.h | 47 +- .../STEP/include/SdaiCONFIG_CONTROL_DESIGN.h | 20508 ++++-- .../solids/STEP/include/Sdaiclasses.h | 2266 + source/geometry/solids/STEP/include/Select.h | 28 + .../solids/STEP/include/SingleLinkList.h | 59 +- source/geometry/solids/STEP/include/Str.h | 24 +- .../geometry/solids/STEP/include/baseType.h | 39 +- source/geometry/solids/STEP/include/classes.h | 4 +- source/geometry/solids/STEP/include/cmdmgr.h | 23 +- .../solids/STEP/include/complexSupport.h | 351 + .../geometry/solids/STEP/include/dictdefs.h | 90 + source/geometry/solids/STEP/include/dirobj.h | 93 +- .../geometry/solids/STEP/include/dispnode.h | 15 +- .../solids/STEP/include/dispnodelist.h | 25 +- .../solids/STEP/include/editordefines.h | 24 +- .../geometry/solids/STEP/include/errordesc.h | 44 +- source/geometry/solids/STEP/include/gennode.h | 34 +- .../solids/STEP/include/gennodearray.h | 65 +- .../solids/STEP/include/gennodelist.h | 54 +- source/geometry/solids/STEP/include/instmgr.h | 94 +- source/geometry/solids/STEP/include/mgrnode.h | 73 +- .../solids/STEP/include/mgrnodearray.h | 51 +- .../solids/STEP/include/mgrnodelist.h | 19 +- .../geometry/solids/STEP/include/read_func.h | 34 +- .../solids/STEP/include/s_HEADER_SCHEMA.h | 156 +- source/geometry/solids/STEP/include/schema.h | 39 +- source/geometry/solids/STEP/include/scl_cf.h | 67 + .../solids/STEP/include/scl_char_str_list.h | 30 + .../geometry/solids/STEP/include/scl_hash.h | 56 +- .../solids/STEP/include/scl_osschema.h | 94 + .../geometry/solids/STEP/include/scl_string.h | 37 +- source/geometry/solids/STEP/include/scldir.h | 79 + .../solids/STEP/include/sclprefixes.h | 353 + source/geometry/solids/STEP/include/sdai.h | 430 +- .../STEP/include/sdaiApplication_instance.h | 233 + .../{dir.h => sdaiApplication_instance_set.h} | 62 +- .../solids/STEP/include/sdaiDaObject.h | 662 + .../solids/STEP/include/sdaiEntity_extent.h | 127 + .../STEP/include/sdaiEntity_extent_set.h | 111 + .../geometry/solids/STEP/include/sdaiEnum.h | 251 + .../solids/STEP/include/sdaiModel_contents.h | 229 + .../STEP/include/sdaiModel_contents_list.h | 58 + .../geometry/solids/STEP/include/sdaiObject.h | 68 + .../geometry/solids/STEP/include/sdaiSelect.h | 137 + .../STEP/include/sdaiSession_instance.h | 36 + .../include/{STEPstring.h => sdaiString.h} | 46 +- .../solids/STEP/include/seeinfodefault.h | 19 +- source/geometry/solids/STEP/include/stat.h | 17 +- .../geometry/solids/STEP/include/str_list.h | 24 + source/geometry/solids/STEP/src/ExpDict.cc | 1599 +- .../solids/STEP/src/ExpDict_inline.cc | 475 +- .../solids/STEP/src/Registry_inline.cc | 330 +- .../geometry/solids/STEP/src/STEPaggregate.cc | 559 +- .../geometry/solids/STEP/src/STEPattribute.cc | 291 +- .../solids/STEP/src/STEPattributeList.cc | 47 +- .../solids/STEP/src/STEPattribute_inline.cc | 100 +- .../geometry/solids/STEP/src/STEPcomplex.cc | 421 +- source/geometry/solids/STEP/src/STEPfile.cc | 585 +- .../solids/STEP/src/STEPfile_inline.cc | 112 +- source/geometry/solids/STEP/src/STEPselect.cc | 473 - .../geometry/solids/STEP/src/STEPundefined.cc | 16 +- source/geometry/solids/STEP/src/SdaiAll.cc | 5531 ++ source/geometry/solids/STEP/src/SdaiBinary.cc | 57 +- .../STEP/src/SdaiCONFIG_CONTROL_DESIGN.cc | 54337 +++++++++++++--- .../src/SdaiCONFIG_CONTROL_DESIGN_init.cc | 4842 +- .../solids/STEP/src/SingleLinkList.cc | 69 +- .../solids/STEP/src/SingleLinkList_inline.cc | 14 +- source/geometry/solids/STEP/src/Str.cc | 51 +- source/geometry/solids/STEP/src/cmdmgr.cc | 30 +- source/geometry/solids/STEP/src/collect.cc | 175 + .../geometry/solids/STEP/src/complexlist.cc | 260 + .../geometry/solids/STEP/src/compstructs.cc | 1696 + source/geometry/solids/STEP/src/dirobj.cc | 76 +- source/geometry/solids/STEP/src/dispnode.cc | 24 +- .../geometry/solids/STEP/src/dispnodelist.cc | 33 +- source/geometry/solids/STEP/src/entlist.cc | 140 + source/geometry/solids/STEP/src/entnode.cc | 198 + source/geometry/solids/STEP/src/errordesc.cc | 203 +- .../src/{gennode_inline.cc => gennode.cc} | 32 +- .../geometry/solids/STEP/src/gennodearray.cc | 103 +- .../geometry/solids/STEP/src/gennodelist.cc | 93 + source/geometry/solids/STEP/src/instmgr.cc | 244 +- source/geometry/solids/STEP/src/match_ors.cc | 163 + source/geometry/solids/STEP/src/mgrnode.cc | 39 +- .../geometry/solids/STEP/src/mgrnodearray.cc | 53 +- .../geometry/solids/STEP/src/mgrnodelist.cc | 26 +- source/geometry/solids/STEP/src/multlist.cc | 261 + source/geometry/solids/STEP/src/non_ors.cc | 146 + source/geometry/solids/STEP/src/orlist.cc | 87 + source/geometry/solids/STEP/src/print.cc | 113 + source/geometry/solids/STEP/src/read_func.cc | 288 +- .../solids/STEP/src/s_HEADER_SCHEMA.cc | 52 +- .../solids/STEP/src/s_HEADER_SCHEMA_init.cc | 159 +- source/geometry/solids/STEP/src/schema.cc | 30 +- .../solids/STEP/src/scl_char_str_list.cc | 115 + source/geometry/solids/STEP/src/scl_hash.cc | 32 +- source/geometry/solids/STEP/src/scl_string.cc | 152 +- source/geometry/solids/STEP/src/sdai.cc | 15 + ...Pentity.cc => sdaiApplication_instance.cc} | 522 +- .../STEP/src/sdaiApplication_instance_set.cc | 144 + .../geometry/solids/STEP/src/sdaiDaObject.cc | 336 + .../solids/STEP/src/sdaiEntity_extent.cc | 138 + .../solids/STEP/src/sdaiEntity_extent_set.cc | 327 + .../STEP/src/{Enumeration.cc => sdaiEnum.cc} | 630 +- .../solids/STEP/src/sdaiModel_contents.cc | 161 + .../STEP/src/sdaiModel_contents_list.cc | 225 + source/geometry/solids/STEP/src/sdaiObject.cc | 33 + source/geometry/solids/STEP/src/sdaiSelect.cc | 722 + .../solids/STEP/src/sdaiSession_instance.cc | 9 + .../STEP/src/{STEPstring.cc => sdaiString.cc} | 40 +- source/geometry/solids/STEP/src/trynext.cc | 161 + source/geometry/solids/STEPinterface/History | 44 +- ...4AdvancedBrepShapeRepresentationCreator.hh | 52 +- .../include/G4AdvancedFaceCreator.hh | 54 +- .../include/G4AssemblyCreator.hh | 77 +- .../include/G4Axis1PlacementCreator.hh | 50 +- .../include/G4Axis2Placement2dCreator.hh | 53 +- .../include/G4Axis2Placement3dCreator.hh | 52 +- .../include/G4Axis2PlacementCreator.hh | 50 +- .../include/G4Axis2PlacementsCreator.hh | 54 +- .../include/G4BSplineCurveWithKnotsCreator.hh | 52 +- .../include/G4BSplineSurfaceCreator.hh | 50 +- .../G4BSplineSurfaceWithKnotsCreator.hh | 52 +- .../include/G4BoundedSurfaceCreator.hh | 52 +- .../include/G4CartesianPointCreator.hh | 52 +- .../STEPinterface/include/G4CircleCreator.hh | 52 +- .../include/G4ClosedShellCreator.hh | 53 +- .../STEPinterface/include/G4ConicCreator.hh | 52 +- .../include/G4ConicalSurfaceCreator.hh | 52 +- .../include/G4ConnectedFaceSetCreator.hh | 50 +- ...textDependentShapeRepresentationCreator.hh | 54 +- .../STEPinterface/include/G4CurveCreator.hh | 50 +- .../include/G4CylindricalSurfaceCreator.hh | 52 +- .../include/G4DirectionCreator.hh | 52 +- .../include/G4EdgeCurveCreator.hh | 52 +- .../include/G4EdgeLoopCreator.hh | 50 +- .../STEPinterface/include/G4EllipseCreator.hh | 52 +- .../include/G4FaceBoundCreator.hh | 50 +- .../include/G4FaceOuterBoundCreator.hh | 52 +- .../include/G4FaceSurfaceCreator.hh | 52 +- ...G4GeometricRepresentationContextCreator.hh | 50 +- .../include/G4GeometryCreator.hh | 95 +- .../STEPinterface/include/G4GeometryTable.hh | 80 +- .../include/G4HyperbolaCreator.hh | 52 +- .../G4ItemDefinedTransformationCreator.hh | 53 +- .../STEPinterface/include/G4LineCreator.hh | 51 +- .../include/G4ManifoldSolidBrepCreator.hh | 51 +- .../STEPinterface/include/G4NISTStepReader.hh | 61 +- .../include/G4OpenShellCreator.hh | 50 +- .../include/G4OrientedEdgeCreator.hh | 50 +- .../include/G4ParabolaCreator.hh | 50 +- .../STEPinterface/include/G4PlaneCreator.hh | 50 +- .../STEPinterface/include/G4PointCreator.hh | 50 +- .../include/G4PointOnCurveCreator.hh | 50 +- .../include/G4PointOnSurfaceCreator.hh | 52 +- .../include/G4PointReplicaCreator.hh | 52 +- .../G4ProductDefinitionShapeCreator.hh | 49 +- .../G4RationalBSplineSurfaceCreator.hh | 52 +- .../G4RepresentationRelationshipCreator.hh | 52 +- ...onRelationshipWithTransformationCreator.hh | 57 +- .../G4ShapeDefinitionRepresentationCreator.hh | 50 +- .../include/G4ShapeRepresentationCreator.hh | 52 +- ...4ShapeRepresentationRelationshipCreator.hh | 51 +- .../include/G4SphericalSurfaceCreator.hh | 52 +- .../STEPinterface/include/G4StepFileReader.hh | 29 +- .../include/G4ToroidalSurfaceCreator.hh | 50 +- .../STEPinterface/include/G4VectorCreator.hh | 50 +- .../include/G4VertexPointCreator.hh | 50 +- .../solids/STEPinterface/include/includes | 1 + ...4AdvancedBrepShapeRepresentationCreator.cc | 86 +- .../src/G4AdvancedFaceCreator.cc | 74 +- .../STEPinterface/src/G4AssemblyCreator.cc | 132 +- .../src/G4Axis1PlacementCreator.cc | 28 +- .../src/G4Axis2Placement2dCreator.cc | 30 +- .../src/G4Axis2Placement3dCreator.cc | 58 +- .../src/G4Axis2PlacementCreator.cc | 30 +- .../src/G4Axis2PlacementsCreator.cc | 28 +- .../src/G4BSplineCurveWithKnotsCreator.cc | 36 +- .../src/G4BSplineSurfaceCreator.cc | 38 +- .../src/G4BSplineSurfaceWithKnotsCreator.cc | 104 +- .../src/G4BoundedSurfaceCreator.cc | 95 +- .../src/G4CartesianPointCreator.cc | 33 +- .../STEPinterface/src/G4CircleCreator.cc | 36 +- .../STEPinterface/src/G4ClosedShellCreator.cc | 60 +- .../STEPinterface/src/G4ConicCreator.cc | 29 +- .../src/G4ConicalSurfaceCreator.cc | 53 +- .../src/G4ConnectedFaceSetCreator.cc | 30 +- ...textDependentShapeRepresentationCreator.cc | 52 +- .../STEPinterface/src/G4CurveCreator.cc | 32 +- .../src/G4CylindricalSurfaceCreator.cc | 53 +- .../STEPinterface/src/G4DirectionCreator.cc | 30 +- .../STEPinterface/src/G4EdgeCurveCreator.cc | 63 +- .../STEPinterface/src/G4EdgeLoopCreator.cc | 39 +- .../STEPinterface/src/G4EllipseCreator.cc | 31 +- .../STEPinterface/src/G4FaceBoundCreator.cc | 34 +- .../src/G4FaceOuterBoundCreator.cc | 29 +- .../STEPinterface/src/G4FaceSurfaceCreator.cc | 36 +- ...G4GeometricRepresentationContextCreator.cc | 32 +- .../STEPinterface/src/G4GeometryCreator.cc | 39 +- .../STEPinterface/src/G4GeometryTable.cc | 56 +- .../STEPinterface/src/G4HyperbolaCreator.cc | 33 +- .../src/G4ItemDefinedTransformationCreator.cc | 43 +- .../solids/STEPinterface/src/G4LineCreator.cc | 46 +- .../src/G4ManifoldSolidBrepCreator.cc | 36 +- .../STEPinterface/src/G4NISTStepReader.cc | 28 +- .../STEPinterface/src/G4OpenShellCreator.cc | 31 +- .../src/G4OrientedEdgeCreator.cc | 49 +- .../STEPinterface/src/G4ParabolaCreator.cc | 30 +- .../STEPinterface/src/G4PlaneCreator.cc | 52 +- .../STEPinterface/src/G4PointCreator.cc | 28 +- .../src/G4PointOnCurveCreator.cc | 45 +- .../src/G4PointOnSurfaceCreator.cc | 38 +- .../src/G4PointReplicaCreator.cc | 33 +- .../src/G4ProductDefinitionShapeCreator.cc | 25 +- .../src/G4RationalBSplineSurfaceCreator.cc | 42 +- .../G4RepresentationRelationshipCreator.cc | 114 +- ...onRelationshipWithTransformationCreator.cc | 46 +- .../G4ShapeDefinitionRepresentationCreator.cc | 40 +- .../src/G4ShapeRepresentationCreator.cc | 45 +- ...4ShapeRepresentationRelationshipCreator.cc | 36 +- .../src/G4SphericalSurfaceCreator.cc | 59 +- .../src/G4ToroidalSurfaceCreator.cc | 60 +- .../STEPinterface/src/G4VectorCreator.cc | 45 +- .../STEPinterface/src/G4VertexPointCreator.cc | 35 +- source/geometry/solids/specific/GNUmakefile | 22 + source/geometry/solids/specific/History | 80 + .../include/G4ClippablePolygon.hh | 49 +- .../specific/include/G4EllipticalTube.hh | 94 + .../include/G4EnclosingCylinder.hh | 25 +- .../solids/specific/include/G4Hype.hh | 209 + .../include/G4IntersectingCone.hh | 24 +- .../include/G4PolyPhiFace.hh | 33 +- .../include/G4PolyPhiFace.icc | 20 +- .../{CSG => specific}/include/G4Polycone.hh | 28 +- .../include/G4PolyconeSide.hh | 21 +- .../{CSG => specific}/include/G4Polyhedra.hh | 25 +- .../include/G4PolyhedraSide.hh | 23 +- .../include/G4ReduciblePolygon.hh | 47 +- .../include/G4SolidExtentList.hh | 29 +- .../solids/specific/include/G4VCSGface.hh | 283 + .../include/G4VCSGfaceted.hh | 31 +- .../src/G4ClippablePolygon.cc | 37 +- .../solids/specific/src/G4EllipticalTube.cc | 709 + .../src/G4EnclosingCylinder.cc | 19 +- source/geometry/solids/specific/src/G4Hype.cc | 1188 + .../src/G4IntersectingCone.cc | 21 +- .../{CSG => specific}/src/G4PolyPhiFace.cc | 21 +- .../{CSG => specific}/src/G4Polycone.cc | 23 +- .../{CSG => specific}/src/G4PolyconeSide.cc | 19 +- .../{CSG => specific}/src/G4Polyhedra.cc | 24 +- .../{CSG => specific}/src/G4PolyhedraSide.cc | 29 +- .../src/G4ReduciblePolygon.cc | 25 +- .../src/G4SolidExtentList.cc | 19 +- .../{CSG => specific}/src/G4VCSGfaceted.cc | 85 +- source/geometry/volumes/History | 49 +- .../volumes/include/G4AuxiliaryNavServices.hh | 35 +- .../volumes/include/G4BlockingList.hh | 106 +- .../volumes/include/G4BlockingList.icc | 2 +- source/geometry/volumes/include/G4GRSSolid.hh | 50 +- .../geometry/volumes/include/G4GRSSolid.icc | 2 +- .../geometry/volumes/include/G4GRSVolume.hh | 48 +- .../geometry/volumes/include/G4GRSVolume.icc | 2 +- .../volumes/include/G4LogicalBorderSurface.hh | 69 +- .../include/G4LogicalBorderSurface.icc | 50 + .../volumes/include/G4LogicalSkinSurface.hh | 60 +- .../volumes/include/G4LogicalSkinSurface.icc | 32 + .../volumes/include/G4NavigationHistory.hh | 19 +- .../volumes/include/G4NavigationHistory.icc | 2 +- .../volumes/include/G4NavigationLevel.hh | 37 +- .../volumes/include/G4NavigationLevel.icc | 2 +- .../volumes/include/G4NavigationLevelRep.hh | 60 +- .../volumes/include/G4NavigationLevelRep.icc | 2 +- .../geometry/volumes/include/G4Navigator.hh | 416 +- .../geometry/volumes/include/G4Navigator.icc | 2 +- .../volumes/include/G4NormalNavigation.hh | 71 +- .../volumes/include/G4NormalNavigation.icc | 2 +- .../include/G4ParameterisedNavigation.hh | 41 +- .../include/G4ParameterisedNavigation.icc | 2 +- .../volumes/include/G4PropagatorInField.hh | 112 +- .../volumes/include/G4PropagatorInField.icc | 32 +- .../volumes/include/G4ReplicaNavigation.hh | 27 +- .../volumes/include/G4ReplicaNavigation.icc | 2 +- .../volumes/include/G4TouchableHistory.hh | 50 +- .../volumes/include/G4TouchableHistory.icc | 2 +- .../geometry/volumes/include/G4Transform.hh | 266 - .../include/G4TransportationManager.hh | 31 +- .../include/G4TransportationManager.icc | 2 +- .../volumes/include/G4VoxelNavigation.hh | 56 +- .../volumes/include/G4VoxelNavigation.icc | 2 +- source/geometry/volumes/src/G4BlockingList.cc | 2 +- source/geometry/volumes/src/G4GRSSolid.cc | 2 +- source/geometry/volumes/src/G4GRSVolume.cc | 2 +- .../volumes/src/G4LogicalBorderSurface.cc | 15 +- .../volumes/src/G4LogicalSkinSurface.cc | 9 +- .../volumes/src/G4NavigationHistory.cc | 2 +- source/geometry/volumes/src/G4Navigator.cc | 2 +- .../volumes/src/G4NormalNavigation.cc | 2 +- .../volumes/src/G4ParameterisedNavigation.cc | 2 +- .../volumes/src/G4PropagatorInField.cc | 8 +- .../volumes/src/G4ReplicaNavigation.cc | 13 +- .../volumes/src/G4TouchableHistory.cc | 2 +- .../volumes/src/G4TransportationManager.cc | 2 +- .../geometry/volumes/src/G4VoxelNavigation.cc | 2 +- .../HEPGeometry/include/G4LorentzRotation.hh | 2 +- .../HEPGeometry/include/G4LorentzVector.hh | 2 +- .../global/HEPGeometry/include/G4Normal3D.hh | 2 +- .../global/HEPGeometry/include/G4Plane3D.hh | 2 +- .../global/HEPGeometry/include/G4Point3D.hh | 2 +- .../HEPGeometry/include/G4Transform3D.hh | 2 +- .../global/HEPGeometry/include/G4Vector3D.hh | 2 +- source/global/HEPGeometry/include/geomdefs.hh | 2 +- .../include/G4ChebyshevApproximation.hh | 2 +- .../include/G4DataInterpolation.hh | 2 +- .../HEPNumerics/include/G4GaussChebyshevQ.hh | 2 +- .../HEPNumerics/include/G4GaussHermiteQ.hh | 2 +- .../HEPNumerics/include/G4GaussJacobiQ.hh | 2 +- .../HEPNumerics/include/G4GaussLaguerreQ.hh | 2 +- .../HEPNumerics/include/G4GaussLegendreQ.hh | 2 +- .../HEPNumerics/include/G4Integrator.hh | 133 +- .../HEPNumerics/include/G4Integrator.icc | 115 +- .../include/G4SimpleIntegration.hh | 2 +- .../include/G4VGaussianQuadrature.hh | 2 +- .../src/G4ChebyshevApproximation.cc | 2 +- .../HEPNumerics/src/G4DataInterpolation.cc | 2 +- .../HEPNumerics/src/G4GaussChebyshevQ.cc | 2 +- .../global/HEPNumerics/src/G4GaussHermiteQ.cc | 2 +- .../global/HEPNumerics/src/G4GaussJacobiQ.cc | 2 +- .../HEPNumerics/src/G4GaussLaguerreQ.cc | 2 +- .../HEPNumerics/src/G4GaussLegendreQ.cc | 2 +- .../HEPNumerics/src/G4SimpleIntegration.cc | 2 +- .../HEPNumerics/src/G4VGaussianQuadrature.cc | 2 +- source/global/HEPRandom/include/G4Poisson.hh | 2 +- source/global/HEPRandom/include/Randomize.hh | 2 +- .../HEPRandom/test/G4RandDistributionTest.cc | 233 - .../global/HEPRandom/test/G4RandGlobalTest.cc | 282 - .../global/HEPRandom/test/G4ShootBitTest.cc | 72 - source/global/HEPRandom/test/GNUmakefile | 24 - source/global/History | 53 +- source/global/STLInterface/History | 33 +- source/global/STLInterface/g4rw/cstring.h | 6 +- source/global/STLInterface/g4rw/cstring.icc | 32 +- source/global/STLInterface/g4rw/ctoken.h | 2 +- source/global/STLInterface/g4rw/defs.h | 16 +- source/global/STLInterface/g4rw/rstream.h | 2 +- source/global/STLInterface/g4rw/rw2stl_algo.h | 2 +- source/global/STLInterface/g4rw/tpordvec.h | 2 +- source/global/STLInterface/g4rw/tpordvec.icc | 9 +- source/global/STLInterface/g4rw/tpsrtvec.h | 2 +- source/global/STLInterface/g4rw/tpsrtvec.icc | 18 +- source/global/STLInterface/g4rw/tpvector.h | 2 +- source/global/STLInterface/g4rw/tpvector.icc | 8 +- source/global/STLInterface/g4rw/tvordvec.h | 4 +- source/global/STLInterface/g4rw/tvordvec.icc | 14 +- source/global/STLInterface/g4rw/tvvector.h | 4 +- source/global/STLInterface/g4rw/tvvector.icc | 6 +- .../global/management/include/G4Allocator.hh | 2 +- .../management/include/G4AllocatorPage.hh | 2 +- .../management/include/G4AllocatorUnit.hh | 2 +- .../global/management/include/G4DataVector.hh | 2 +- .../global/management/include/G4FastVector.hh | 2 +- .../include/G4LPhysicsFreeVector.hh | 2 +- .../include/G4LPhysicsFreeVector.icc | 2 +- .../management/include/G4OrderedTable.hh | 2 +- .../management/include/G4PhysicsFreeVector.hh | 2 +- .../include/G4PhysicsLinearVector.hh | 2 +- .../management/include/G4PhysicsLnVector.hh | 79 + .../management/include/G4PhysicsLogVector.hh | 2 +- .../include/G4PhysicsOrderedFreeVector.hh | 2 +- .../include/G4PhysicsOrderedFreeVector.icc | 2 +- .../management/include/G4PhysicsTable.hh | 2 +- .../management/include/G4PhysicsVector.hh | 2 +- .../management/include/G4PhysicsVector.icc | 2 +- .../management/include/G4RotationMatrix.hh | 2 +- .../management/include/G4ThreeVector.hh | 2 +- source/global/management/include/G4Timer.hh | 2 +- source/global/management/include/G4Types.hh | 2 +- .../global/management/include/G4UnitsTable.hh | 2 +- .../global/management/include/G4UnitsTest.hh | 2 +- .../global/management/include/G4UserLimits.hh | 30 +- .../management/include/G4UserLimits.icc | 25 +- .../management/include/G4coutDestination.hh | 2 +- source/global/management/include/G4ios.hh | 2 +- .../management/include/G4strstreambuf.hh | 2 +- .../management/include/PhysicalConstants.h | 2 +- .../global/management/include/SystemOfUnits.h | 2 +- .../global/management/include/g4std/algorithm | 2 +- .../global/management/include/g4std/complex | 30 + .../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/map | 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 +- source/global/management/include/globals.hh | 2 +- source/global/management/include/templates.hh | 2 +- source/global/management/src/G4Exception.cc | 2 +- .../management/src/G4LPhysicsFreeVector.cc | 2 +- .../management/src/G4PhysicsFreeVector.cc | 2 +- .../management/src/G4PhysicsLinearVector.cc | 2 +- .../management/src/G4PhysicsLnVector.cc | 79 + .../management/src/G4PhysicsLogVector.cc | 2 +- .../src/G4PhysicsOrderedFreeVector.cc | 2 +- .../global/management/src/G4PhysicsVector.cc | 2 +- source/global/management/src/G4Timer.cc | 9 +- source/global/management/src/G4UnitsTable.cc | 5 +- source/global/management/src/G4ios.cc | 2 +- source/graphics_reps/History | 36 +- source/graphics_reps/include/G4Circle.hh | 2 +- source/graphics_reps/include/G4Circle.icc | 2 +- source/graphics_reps/include/G4Color.hh | 2 +- source/graphics_reps/include/G4Colour.hh | 2 +- source/graphics_reps/include/G4NURBS.hh | 2 +- source/graphics_reps/include/G4NURBSbox.hh | 2 +- .../graphics_reps/include/G4NURBScylinder.hh | 2 +- .../include/G4NURBShexahedron.hh | 2 +- source/graphics_reps/include/G4NURBStube.hh | 2 +- .../include/G4NURBStubesector.hh | 2 +- .../include/G4PlacedPolyhedron.hh | 2 +- source/graphics_reps/include/G4Point3DList.hh | 2 +- source/graphics_reps/include/G4Polyhedron.hh | 505 +- source/graphics_reps/include/G4Polyline.hh | 2 +- source/graphics_reps/include/G4Polymarker.hh | 2 +- source/graphics_reps/include/G4Polymarker.icc | 2 +- source/graphics_reps/include/G4Square.hh | 2 +- source/graphics_reps/include/G4Square.icc | 2 +- source/graphics_reps/include/G4Text.hh | 2 +- source/graphics_reps/include/G4Text.icc | 2 +- source/graphics_reps/include/G4VMarker.hh | 2 +- source/graphics_reps/include/G4VMarker.icc | 2 +- source/graphics_reps/include/G4VVisPrim.hh | 2 +- source/graphics_reps/include/G4VVisPrim.icc | 2 +- .../graphics_reps/include/G4VisAttributes.hh | 10 +- .../graphics_reps/include/G4VisAttributes.icc | 2 +- source/graphics_reps/include/G4VisExtent.hh | 2 +- source/graphics_reps/include/G4Visible.hh | 2 +- source/graphics_reps/include/G4Visible.icc | 2 +- source/graphics_reps/include/HepPolyhedron.h | 439 + source/graphics_reps/src/BooleanProcessor.src | 2045 + source/graphics_reps/src/G4Circle.cc | 2 +- source/graphics_reps/src/G4Colour.cc | 2 +- source/graphics_reps/src/G4NURBS.cc | 2 +- source/graphics_reps/src/G4NURBSbox.cc | 2 +- source/graphics_reps/src/G4NURBScylinder.cc | 2 +- source/graphics_reps/src/G4NURBShexahedron.cc | 2 +- source/graphics_reps/src/G4NURBStube.cc | 2 +- source/graphics_reps/src/G4NURBStubesector.cc | 2 +- .../graphics_reps/src/G4PlacedPolyhedron.cc | 2 +- source/graphics_reps/src/G4Point3DList.cc | 2 +- source/graphics_reps/src/G4Polyhedron.cc | 1468 +- source/graphics_reps/src/G4Polyline.cc | 2 +- source/graphics_reps/src/G4Polymarker.cc | 2 +- source/graphics_reps/src/G4Square.cc | 2 +- source/graphics_reps/src/G4Text.cc | 2 +- source/graphics_reps/src/G4VMarker.cc | 2 +- source/graphics_reps/src/G4VVisPrim.cc | 2 +- source/graphics_reps/src/G4VisAttributes.cc | 2 +- source/graphics_reps/src/G4VisExtent.cc | 2 +- source/graphics_reps/src/G4Visible.cc | 2 +- source/graphics_reps/src/HepPolyhedron.cc | 1645 + .../intercoms/include/G4ApplicationState.hh | 2 +- source/intercoms/include/G4StateManager.hh | 2 +- source/intercoms/include/G4UIbatch.hh | 2 +- .../intercoms/include/G4UIcmdWith3Vector.hh | 2 +- .../include/G4UIcmdWith3VectorAndUnit.hh | 2 +- source/intercoms/include/G4UIcmdWithABool.hh | 2 +- .../intercoms/include/G4UIcmdWithADouble.hh | 2 +- .../include/G4UIcmdWithADoubleAndUnit.hh | 2 +- .../intercoms/include/G4UIcmdWithAString.hh | 2 +- .../intercoms/include/G4UIcmdWithAnInteger.hh | 2 +- .../include/G4UIcmdWithoutParameter.hh | 2 +- source/intercoms/include/G4UIcommand.hh | 2 +- source/intercoms/include/G4UIcommandStatus.hh | 2 +- source/intercoms/include/G4UIcommandTree.hh | 2 +- .../intercoms/include/G4UIcontrolMessenger.hh | 2 +- source/intercoms/include/G4UIdirectory.hh | 2 +- source/intercoms/include/G4UImanager.hh | 2 +- source/intercoms/include/G4UImessenger.hh | 2 +- source/intercoms/include/G4UIparameter.hh | 2 +- source/intercoms/include/G4UIsession.hh | 2 +- source/intercoms/include/G4UItokenNum.hh | 2 +- source/intercoms/include/G4UnitsMessenger.hh | 2 +- .../include/G4VFlavoredParallelWorld.hh | 2 +- .../include/G4VGlobalFastSimulationManager.hh | 2 +- source/intercoms/include/G4VGraphicsScene.hh | 2 +- source/intercoms/include/G4VStateDependent.hh | 2 +- source/intercoms/include/G4VVisManager.hh | 2 +- source/intercoms/src/G4StateManager.cc | 2 +- source/intercoms/src/G4UIbatch.cc | 2 +- source/intercoms/src/G4UIcmdWith3Vector.cc | 2 +- .../src/G4UIcmdWith3VectorAndUnit.cc | 2 +- source/intercoms/src/G4UIcmdWithABool.cc | 2 +- source/intercoms/src/G4UIcmdWithADouble.cc | 2 +- .../src/G4UIcmdWithADoubleAndUnit.cc | 2 +- source/intercoms/src/G4UIcmdWithAString.cc | 2 +- source/intercoms/src/G4UIcmdWithAnInteger.cc | 2 +- .../intercoms/src/G4UIcmdWithoutParameter.cc | 2 +- source/intercoms/src/G4UIcommand.cc | 2 +- source/intercoms/src/G4UIcommandTree.cc | 2 +- source/intercoms/src/G4UIcontrolMessenger.cc | 2 +- source/intercoms/src/G4UIdirectory.cc | 2 +- source/intercoms/src/G4UImanager.cc | 2 +- source/intercoms/src/G4UImessenger.cc | 2 +- source/intercoms/src/G4UIparameter.cc | 2 +- source/intercoms/src/G4UIsession.cc | 2 +- source/intercoms/src/G4UnitsMessenger.cc | 2 +- .../src/G4VGlobalFastSimulationManager.cc | 2 +- source/intercoms/src/G4VStateDependent.cc | 2 +- source/intercoms/src/G4VVisManager.cc | 2 +- source/interfaces/GAG/include/G4UIGAG.hh | 4 +- source/interfaces/GAG/src/G4UIGAG.cc | 4 +- source/interfaces/History | 31 +- 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 | 45 + source/interfaces/basic/include/G4UIWin32.hh | 12 +- source/interfaces/basic/include/G4UIXaw.hh | 4 +- source/interfaces/basic/include/G4UIXm.hh | 12 +- source/interfaces/basic/include/G4UIcsh.hh | 34 + source/interfaces/basic/include/G4UItcsh.hh | 126 + .../interfaces/basic/include/G4UIterminal.hh | 104 +- source/interfaces/basic/include/G4VUIshell.hh | 102 + .../interfaces/basic/src/G4UIArrayString.cc | 174 + 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 | 59 + source/interfaces/basic/src/G4UItcsh.cc | 684 + source/interfaces/basic/src/G4UIterminal.cc | 374 +- source/interfaces/basic/src/G4VUIshell.cc | 284 + source/interfaces/common/GNUmakefile | 3 +- .../common/include/G4InteractorMessenger.hh | 1 + .../common/include/G4VBasicShell.hh | 4 +- .../common/include/G4VInteractorManager.hh | 4 +- source/interfaces/common/include/G4Win32.hh | 4 +- source/interfaces/common/include/G4Xt.hh | 4 +- .../common/src/G4InteractorMessenger.cc | 19 +- source/interfaces/common/src/G4VBasicShell.cc | 4 +- .../common/src/G4VInteractorManager.cc | 4 +- source/interfaces/common/src/G4Win32.cc | 4 +- source/interfaces/common/src/G4Xt.cc | 4 +- source/materials/History | 8 +- source/materials/include/G4AtomicShells.hh | 21 +- source/materials/include/G4Element.hh | 49 +- source/materials/include/G4ElementTable.hh | 4 +- source/materials/include/G4ElementVector.hh | 4 +- source/materials/include/G4IonisParamElm.hh | 34 +- source/materials/include/G4IonisParamMat.hh | 28 +- source/materials/include/G4Isotope.hh | 20 +- source/materials/include/G4IsotopeVector.hh | 4 +- source/materials/include/G4MPVEntry.hh | 4 +- source/materials/include/G4Material.hh | 85 +- .../include/G4MaterialPropertiesTable.hh | 16 +- .../include/G4MaterialPropertyVector.hh | 4 +- source/materials/include/G4MaterialTable.hh | 4 +- source/materials/include/G4OpticalSurface.hh | 2 +- source/materials/include/G4SandiaTable.hh | 21 +- .../materials/include/G4StaticSandiaData.hh | 28 +- source/materials/src/G4AtomicShells.cc | 4 +- source/materials/src/G4Element.cc | 4 +- source/materials/src/G4IonisParamElm.cc | 4 +- source/materials/src/G4IonisParamMat.cc | 4 +- source/materials/src/G4Isotope.cc | 4 +- source/materials/src/G4MPVEntry.cc | 4 +- source/materials/src/G4Material.cc | 4 +- .../src/G4MaterialPropertiesTable.cc | 16 +- .../materials/src/G4MaterialPropertyVector.cc | 4 +- source/materials/src/G4OpticalSurface.cc | 4 +- source/materials/src/G4SandiaTable.cc | 4 +- source/particles/History | 55 +- .../bosons/include/G4BosonConstructor.hh | 4 +- .../bosons/include/G4ChargedGeantino.hh | 4 +- source/particles/bosons/include/G4Gamma.hh | 4 +- source/particles/bosons/include/G4Geantino.hh | 4 +- .../bosons/include/G4OpticalPhoton.hh | 4 +- source/particles/bosons/include/G4VBoson.hh | 4 +- .../bosons/src/G4BosonConstructor.cc | 4 +- .../particles/bosons/src/G4ChargedGeantino.cc | 5 +- source/particles/bosons/src/G4Gamma.cc | 5 +- source/particles/bosons/src/G4Geantino.cc | 5 +- .../particles/bosons/src/G4OpticalPhoton.cc | 5 +- source/particles/bosons/src/G4VBoson.cc | 4 +- .../hadrons/barions/include/G4AntiLambda.hh | 4 +- .../barions/include/G4AntiLambdacPlus.hh | 4 +- .../hadrons/barions/include/G4AntiNeutron.hh | 4 +- .../barions/include/G4AntiOmegaMinus.hh | 4 +- .../barions/include/G4AntiOmegacZero.hh | 4 +- .../hadrons/barions/include/G4AntiProton.hh | 4 +- .../barions/include/G4AntiSigmaMinus.hh | 4 +- .../barions/include/G4AntiSigmaPlus.hh | 4 +- .../barions/include/G4AntiSigmaZero.hh | 4 +- .../barions/include/G4AntiSigmacPlus.hh | 4 +- .../barions/include/G4AntiSigmacPlusPlus.hh | 4 +- .../barions/include/G4AntiSigmacZero.hh | 4 +- .../hadrons/barions/include/G4AntiXiMinus.hh | 4 +- .../hadrons/barions/include/G4AntiXiZero.hh | 4 +- .../hadrons/barions/include/G4AntiXicPlus.hh | 4 +- .../hadrons/barions/include/G4AntiXicZero.hh | 4 +- .../barions/include/G4BaryonConstructor.hh | 4 +- .../hadrons/barions/include/G4Lambda.hh | 4 +- .../hadrons/barions/include/G4LambdacPlus.hh | 4 +- .../hadrons/barions/include/G4Neutron.hh | 24 +- .../hadrons/barions/include/G4OmegaMinus.hh | 4 +- .../hadrons/barions/include/G4OmegacZero.hh | 4 +- .../hadrons/barions/include/G4Proton.hh | 26 +- .../hadrons/barions/include/G4SigmaMinus.hh | 4 +- .../hadrons/barions/include/G4SigmaPlus.hh | 4 +- .../hadrons/barions/include/G4SigmaZero.hh | 4 +- .../hadrons/barions/include/G4SigmacPlus.hh | 4 +- .../barions/include/G4SigmacPlusPlus.hh | 4 +- .../hadrons/barions/include/G4SigmacZero.hh | 4 +- .../hadrons/barions/include/G4VBaryon.hh | 4 +- .../hadrons/barions/include/G4XiMinus.hh | 4 +- .../hadrons/barions/include/G4XiZero.hh | 4 +- .../hadrons/barions/include/G4XicPlus.hh | 4 +- .../hadrons/barions/include/G4XicZero.hh | 4 +- .../hadrons/barions/src/G4AntiLambda.cc | 5 +- .../hadrons/barions/src/G4AntiLambdacPlus.cc | 5 +- .../hadrons/barions/src/G4AntiNeutron.cc | 5 +- .../hadrons/barions/src/G4AntiOmegaMinus.cc | 5 +- .../hadrons/barions/src/G4AntiOmegacZero.cc | 5 +- .../hadrons/barions/src/G4AntiProton.cc | 5 +- .../hadrons/barions/src/G4AntiSigmaMinus.cc | 5 +- .../hadrons/barions/src/G4AntiSigmaPlus.cc | 5 +- .../hadrons/barions/src/G4AntiSigmaZero.cc | 5 +- .../hadrons/barions/src/G4AntiSigmacPlus.cc | 5 +- .../barions/src/G4AntiSigmacPlusPlus.cc | 5 +- .../hadrons/barions/src/G4AntiSigmacZero.cc | 5 +- .../hadrons/barions/src/G4AntiXiMinus.cc | 5 +- .../hadrons/barions/src/G4AntiXiZero.cc | 5 +- .../hadrons/barions/src/G4AntiXicPlus.cc | 5 +- .../hadrons/barions/src/G4AntiXicZero.cc | 5 +- .../barions/src/G4BaryonConstructor.cc | 4 +- .../particles/hadrons/barions/src/G4Lambda.cc | 5 +- .../hadrons/barions/src/G4LambdacPlus.cc | 5 +- .../hadrons/barions/src/G4Neutron.cc | 5 +- .../hadrons/barions/src/G4OmegaMinus.cc | 5 +- .../hadrons/barions/src/G4OmegacZero.cc | 5 +- .../particles/hadrons/barions/src/G4Proton.cc | 5 +- .../hadrons/barions/src/G4SigmaMinus.cc | 5 +- .../hadrons/barions/src/G4SigmaPlus.cc | 5 +- .../hadrons/barions/src/G4SigmaZero.cc | 5 +- .../hadrons/barions/src/G4SigmacPlus.cc | 5 +- .../hadrons/barions/src/G4SigmacPlusPlus.cc | 5 +- .../hadrons/barions/src/G4SigmacZero.cc | 7 +- .../hadrons/barions/src/G4VBaryon.cc | 4 +- .../hadrons/barions/src/G4XiMinus.cc | 5 +- .../particles/hadrons/barions/src/G4XiZero.cc | 5 +- .../hadrons/barions/src/G4XicPlus.cc | 5 +- .../hadrons/barions/src/G4XicZero.cc | 5 +- .../particles/hadrons/ions/include/G4Alpha.hh | 4 +- .../hadrons/ions/include/G4Deuteron.hh | 4 +- .../hadrons/ions/include/G4GenericIon.hh | 4 +- .../particles/hadrons/ions/include/G4He3.hh | 4 +- .../hadrons/ions/include/G4IonConstructor.hh | 4 +- .../hadrons/ions/include/G4Triton.hh | 4 +- .../particles/hadrons/ions/include/G4VIon.hh | 24 +- source/particles/hadrons/ions/src/G4Alpha.cc | 4 +- .../particles/hadrons/ions/src/G4Deuteron.cc | 4 +- .../hadrons/ions/src/G4GenericIon.cc | 4 +- source/particles/hadrons/ions/src/G4He3.cc | 4 +- .../hadrons/ions/src/G4IonConstructor.cc | 4 +- source/particles/hadrons/ions/src/G4Triton.cc | 4 +- source/particles/hadrons/ions/src/G4VIon.cc | 4 +- .../mesons/include/G4AntiBMesonZero.hh | 4 +- .../mesons/include/G4AntiBsMesonZero.hh | 4 +- .../mesons/include/G4AntiDMesonZero.hh | 4 +- .../hadrons/mesons/include/G4AntiKaonZero.hh | 4 +- .../hadrons/mesons/include/G4BMesonMinus.hh | 4 +- .../hadrons/mesons/include/G4BMesonPlus.hh | 4 +- .../hadrons/mesons/include/G4BMesonZero.hh | 4 +- .../hadrons/mesons/include/G4BsMesonZero.hh | 4 +- .../hadrons/mesons/include/G4DMesonMinus.hh | 4 +- .../hadrons/mesons/include/G4DMesonPlus.hh | 4 +- .../hadrons/mesons/include/G4DMesonZero.hh | 4 +- .../hadrons/mesons/include/G4DsMesonMinus.hh | 4 +- .../hadrons/mesons/include/G4DsMesonPlus.hh | 4 +- .../particles/hadrons/mesons/include/G4Eta.hh | 4 +- .../hadrons/mesons/include/G4EtaPrime.hh | 4 +- .../hadrons/mesons/include/G4JPsi.hh | 4 +- .../hadrons/mesons/include/G4KaonMinus.hh | 4 +- .../hadrons/mesons/include/G4KaonPlus.hh | 4 +- .../hadrons/mesons/include/G4KaonZero.hh | 4 +- .../hadrons/mesons/include/G4KaonZeroLong.hh | 4 +- .../hadrons/mesons/include/G4KaonZeroShort.hh | 4 +- .../mesons/include/G4MesonConstructor.hh | 4 +- .../hadrons/mesons/include/G4PionMinus.hh | 4 +- .../hadrons/mesons/include/G4PionPlus.hh | 4 +- .../hadrons/mesons/include/G4PionZero.hh | 4 +- .../hadrons/mesons/include/G4RhoMinus.hh | 81 - .../hadrons/mesons/include/G4RhoPlus.hh | 81 - .../hadrons/mesons/include/G4RhoZero.hh | 73 - .../hadrons/mesons/include/G4VMeson.hh | 4 +- .../hadrons/mesons/src/G4AntiBMesonZero.cc | 5 +- .../hadrons/mesons/src/G4AntiBsMesonZero.cc | 5 +- .../hadrons/mesons/src/G4AntiDMesonZero.cc | 5 +- .../hadrons/mesons/src/G4AntiKaonZero.cc | 5 +- .../hadrons/mesons/src/G4BMesonMinus.cc | 5 +- .../hadrons/mesons/src/G4BMesonPlus.cc | 5 +- .../hadrons/mesons/src/G4BMesonZero.cc | 5 +- .../hadrons/mesons/src/G4BsMesonZero.cc | 5 +- .../hadrons/mesons/src/G4DMesonMinus.cc | 5 +- .../hadrons/mesons/src/G4DMesonPlus.cc | 5 +- .../hadrons/mesons/src/G4DMesonZero.cc | 5 +- .../hadrons/mesons/src/G4DsMesonMinus.cc | 5 +- .../hadrons/mesons/src/G4DsMesonPlus.cc | 5 +- source/particles/hadrons/mesons/src/G4Eta.cc | 5 +- .../hadrons/mesons/src/G4EtaPrime.cc | 5 +- source/particles/hadrons/mesons/src/G4JPsi.cc | 5 +- .../hadrons/mesons/src/G4KaonMinus.cc | 5 +- .../hadrons/mesons/src/G4KaonPlus.cc | 5 +- .../hadrons/mesons/src/G4KaonZero.cc | 5 +- .../hadrons/mesons/src/G4KaonZeroLong.cc | 5 +- .../hadrons/mesons/src/G4KaonZeroShort.cc | 5 +- .../hadrons/mesons/src/G4MesonConstructor.cc | 6 +- .../hadrons/mesons/src/G4PionMinus.cc | 5 +- .../hadrons/mesons/src/G4PionPlus.cc | 5 +- .../hadrons/mesons/src/G4PionZero.cc | 5 +- .../hadrons/mesons/src/G4RhoMinus.cc | 92 - .../particles/hadrons/mesons/src/G4RhoPlus.cc | 92 - .../particles/hadrons/mesons/src/G4RhoZero.cc | 122 - .../particles/hadrons/mesons/src/G4VMeson.cc | 4 +- .../leptons/include/G4AntiNeutrinoE.hh | 4 +- .../leptons/include/G4AntiNeutrinoMu.hh | 4 +- .../leptons/include/G4AntiNeutrinoTau.hh | 4 +- .../particles/leptons/include/G4Electron.hh | 4 +- .../leptons/include/G4LeptonConstructor.hh | 4 +- .../particles/leptons/include/G4MuonMinus.hh | 4 +- .../particles/leptons/include/G4MuonPlus.hh | 4 +- .../particles/leptons/include/G4NeutrinoE.hh | 4 +- .../particles/leptons/include/G4NeutrinoMu.hh | 4 +- .../leptons/include/G4NeutrinoTau.hh | 4 +- .../particles/leptons/include/G4Positron.hh | 4 +- .../particles/leptons/include/G4TauMinus.hh | 4 +- source/particles/leptons/include/G4TauPlus.hh | 4 +- source/particles/leptons/include/G4VLepton.hh | 4 +- .../particles/leptons/src/G4AntiNeutrinoE.cc | 5 +- .../particles/leptons/src/G4AntiNeutrinoMu.cc | 5 +- .../leptons/src/G4AntiNeutrinoTau.cc | 5 +- source/particles/leptons/src/G4Electron.cc | 5 +- .../leptons/src/G4LeptonConstructor.cc | 4 +- source/particles/leptons/src/G4MuonMinus.cc | 5 +- source/particles/leptons/src/G4MuonPlus.cc | 5 +- source/particles/leptons/src/G4NeutrinoE.cc | 5 +- source/particles/leptons/src/G4NeutrinoMu.cc | 5 +- source/particles/leptons/src/G4NeutrinoTau.cc | 5 +- source/particles/leptons/src/G4Positron.cc | 5 +- source/particles/leptons/src/G4TauMinus.cc | 5 +- source/particles/leptons/src/G4TauPlus.cc | 5 +- source/particles/leptons/src/G4VLepton.cc | 4 +- .../include/G4DalitzDecayChannel.hh | 4 +- .../management/include/G4DecayProducts.hh | 4 +- .../management/include/G4DecayTable.hh | 41 +- .../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 | 21 +- source/particles/management/include/G4Ions.hh | 4 +- .../management/include/G4IsotopeProperty.hh | 2 +- .../management/include/G4KL3DecayChannel.hh | 4 +- .../management/include/G4MuonDecayChannel.hh | 11 +- .../management/include/G4NucleiProperties.hh | 17 +- .../include/G4NucleiPropertiesTable.hh | 4 +- .../management/include/G4PDGCodeChecker.hh | 4 +- .../include/G4ParticleDefinition.hh | 19 +- .../management/include/G4ParticleMessenger.hh | 4 +- .../management/include/G4ParticleMomentum.hh | 4 +- .../include/G4ParticlePropertyMessenger.hh | 4 +- .../management/include/G4ParticleTable.hh | 24 +- .../management/include/G4ParticleTable.icc | 35 +- .../include/G4ParticleTableIterator.hh | 4 +- .../management/include/G4ParticleWithCuts.hh | 4 +- .../include/G4PhaseSpaceDecayChannel.hh | 4 +- .../management/include/G4ShortLivedTable.hh | 27 +- .../management/include/G4VDecayChannel.hh | 7 +- .../management/include/G4VIsotopeTable.hh | 5 +- .../management/src/G4DalitzDecayChannel.cc | 4 +- .../management/src/G4DecayProducts.cc | 4 +- .../particles/management/src/G4DecayTable.cc | 67 +- .../management/src/G4DecayTableMessenger.cc | 4 +- .../management/src/G4DynamicParticle.cc | 4 +- .../management/src/G4ElectronOccupancy.cc | 4 +- source/particles/management/src/G4IonTable.cc | 57 +- source/particles/management/src/G4Ions.cc | 4 +- .../management/src/G4IsotopeProperty.cc | 4 +- .../management/src/G4KL3DecayChannel.cc | 4 +- .../management/src/G4MuonDecayChannel.cc | 25 +- .../management/src/G4NucleiProperties.cc | 4 +- .../src/G4NucleiPropertiesTableA.cc | 4 +- .../src/G4NucleiPropertiesTableB.cc | 4 +- .../management/src/G4PDGCodeChecker.cc | 4 +- .../management/src/G4ParticleDefinition.cc | 8 +- .../management/src/G4ParticleMessenger.cc | 4 +- .../src/G4ParticlePropertyMessenger.cc | 4 +- .../management/src/G4ParticleTable.cc | 51 +- .../management/src/G4ParticleWithCuts.cc | 4 +- .../src/G4PhaseSpaceDecayChannel.cc | 4 +- .../management/src/G4ShortLivedTable.cc | 32 +- .../management/src/G4VDecayChannel.cc | 64 +- .../shortlived/include/G4DiQuarks.hh | 4 +- .../include/G4ExcitedBaryonConstructor.hh | 5 +- .../shortlived/include/G4ExcitedBaryons.hh | 10 +- .../include/G4ExcitedDeltaConstructor.hh | 13 +- .../include/G4ExcitedLambdaConstructor.hh | 14 +- .../include/G4ExcitedMesonConstructor.hh | 6 +- .../shortlived/include/G4ExcitedMesons.hh | 13 +- .../include/G4ExcitedNucleonConstructor.hh | 12 +- .../include/G4ExcitedSigmaConstructor.hh | 13 +- .../include/G4ExcitedXiConstructor.hh | 13 +- .../particles/shortlived/include/G4Gluons.hh | 4 +- .../particles/shortlived/include/G4Quarks.hh | 4 +- .../include/G4ShortLivedConstructor.hh | 4 +- .../include/G4VShortLivedParticle.hh | 4 +- source/particles/shortlived/src/G4DiQuarks.cc | 5 +- .../src/G4ExcitedBaryonConstructor.cc | 7 +- .../shortlived/src/G4ExcitedBaryons.cc | 4 +- .../src/G4ExcitedDeltaConstructor.cc | 4 +- .../src/G4ExcitedLambdaConstructor.cc | 4 +- .../src/G4ExcitedMesonConstructor.cc | 8 +- .../shortlived/src/G4ExcitedMesons.cc | 4 +- .../src/G4ExcitedNucleonConstructor.cc | 4 +- .../src/G4ExcitedSigmaConstructor.cc | 4 +- .../shortlived/src/G4ExcitedXiConstructor.cc | 4 +- source/particles/shortlived/src/G4Gluons.cc | 5 +- source/particles/shortlived/src/G4Quarks.cc | 5 +- .../shortlived/src/G4ShortLivedConstructor.cc | 64 +- .../shortlived/src/G4VShortLivedParticle.cc | 4 +- source/persistency/GNUmakefile | 5 +- source/persistency/History | 7 + .../digits/include/G4PDCofThisEvent.ddl | 2 +- .../digits+hits/digits/include/G4PVDigit.ddl | 2 +- .../digits/include/G4PVDigitsCollection.ddl | 2 +- .../digits/include/G4PersistentDigitMan.hh | 2 +- .../digits/src/G4PDCofThisEvent.cc | 2 +- .../digits+hits/digits/src/G4PVDigit.cc | 2 +- .../digits/src/G4PVDigitsCollection.cc | 2 +- .../digits/src/G4PersistentDigitMan.cc | 2 +- .../hits/include/G4PHCofThisEvent.ddl | 2 +- .../digits+hits/hits/include/G4PVHit.ddl | 2 +- .../hits/include/G4PVHitsCollection.ddl | 2 +- .../hits/include/G4PersistentHitMan.hh | 2 +- .../digits+hits/hits/src/G4PHCofThisEvent.cc | 2 +- .../digits+hits/hits/src/G4PVHit.cc | 2 +- .../hits/src/G4PVHitsCollection.cc | 2 +- .../hits/src/G4PersistentHitMan.cc | 2 +- .../persistency/events/include/G4PEvent.ddl | 2 +- .../events/include/G4PPrimaryParticle.ddl | 2 +- .../events/include/G4PPrimaryVertex.ddl | 2 +- .../events/include/G4PersistentEventMan.hh | 2 +- source/persistency/events/src/G4PEvent.cc | 2 +- .../events/src/G4PPrimaryParticle.cc | 2 +- .../events/src/G4PPrimaryVertex.cc | 2 +- .../events/src/G4PersistentEventMan.cc | 2 +- .../global/include/G4PAffineTransform.ddl | 2 +- .../geometry/global/include/G4PVSolid.ddl | 2 +- .../geometry/global/src/G4PAffineTransform.cc | 2 +- .../geometry/global/src/G4PVSolid.cc | 2 +- .../geometry/management/GNUmakefile | 4 +- .../include/G4PGeometryObjectMap.ddl | 2 +- .../management/include/G4PLogicalVolume.ddl | 8 +- .../management/include/G4PPVParameterised.ddl | 2 +- .../management/include/G4PPVPlacement.ddl | 2 +- .../management/include/G4PPVReplica.ddl | 2 +- .../management/include/G4PVPhysicalVolume.ddl | 2 +- .../management/include/G4PersistentGeomMan.hh | 6 +- .../management/src/G4PGeometryObjectMap.cc | 2 +- .../management/src/G4PLogicalVolume.cc | 24 +- .../management/src/G4PPVParameterised.cc | 2 +- .../geometry/management/src/G4PPVPlacement.cc | 2 +- .../geometry/management/src/G4PPVReplica.cc | 2 +- .../management/src/G4PVPhysicalVolume.cc | 2 +- .../management/src/G4PersistentGeomMan.cc | 65 +- .../geometry/solids/CSG/include/G4PBox.ddl | 2 +- .../solids/CSG/include/G4PCSGSolid.ddl | 2 +- .../geometry/solids/CSG/include/G4PCons.ddl | 2 +- .../geometry/solids/CSG/include/G4PPara.ddl | 2 +- .../geometry/solids/CSG/include/G4PSphere.ddl | 2 +- .../geometry/solids/CSG/include/G4PTorus.ddl | 2 +- .../geometry/solids/CSG/include/G4PTrap.ddl | 2 +- .../geometry/solids/CSG/include/G4PTrd.ddl | 2 +- .../geometry/solids/CSG/include/G4PTubs.ddl | 2 +- .../geometry/solids/CSG/src/G4PBox.cc | 2 +- .../geometry/solids/CSG/src/G4PCSGSolid.cc | 2 +- .../geometry/solids/CSG/src/G4PCons.cc | 2 +- .../geometry/solids/CSG/src/G4PPara.cc | 2 +- .../geometry/solids/CSG/src/G4PSphere.cc | 2 +- .../geometry/solids/CSG/src/G4PTorus.cc | 2 +- .../geometry/solids/CSG/src/G4PTrap.cc | 2 +- .../geometry/solids/CSG/src/G4PTrd.cc | 2 +- .../geometry/solids/CSG/src/G4PTubs.cc | 2 +- .../geometry/solids/specific/GNUmakefile | 44 + .../{CSG => specific}/include/G4PHype.ddl | 4 +- .../solids/{CSG => specific}/src/G4PHype.cc | 4 +- source/persistency/global/GNUmakefile | 5 +- .../global/include/G4DatabaseTypes.hh | 2 +- .../global/include/G4PersistentSchema.hh | 2 +- .../global/include/G4PersistentTypes.hh | 2 +- .../global/include/G4VMaterialMap.hh | 50 + .../global/include/G4VPersistentSubDbMan.hh | 2 +- .../global/include/G4VPersistentSubMan.hh | 2 +- .../persistency/global/src/G4VMaterialMap.cc | 31 + .../global/src/G4VPersistentSubDbMan.cc | 2 +- .../global/src/G4VPersistentSubMan.cc | 2 +- source/persistency/management/GNUmakefile | 3 +- .../include/G4PersistencyManager.hh | 2 +- .../include/G4PersistencyMessenger.hh | 2 +- .../include/G4TransactionManager.hh | 2 +- .../management/src/G4PersistencyManager.cc | 2 +- .../management/src/G4PersistencyMessenger.cc | 2 +- .../management/src/G4TransactionManager.cc | 2 +- source/persistency/run/include/G4PRun.ddl | 2 +- .../run/include/G4PersistentRunMan.hh | 2 +- source/persistency/run/src/G4PRun.cc | 2 +- .../persistency/run/src/G4PersistentRunMan.cc | 2 +- source/processes/GNUmakefile | 4 +- source/processes/decay/History | 22 + source/processes/decay/include/G4Decay.hh | 4 +- source/processes/decay/src/G4Decay.cc | 10 +- source/processes/electromagnetic/History | 7 +- .../electromagnetic/lowenergy/History | 135 +- .../include/G4LowEnergyBremsstrahlung.hh | 54 +- .../include/G4LowEnergyBremsstrahlung.icc | 34 +- .../lowenergy/include/G4LowEnergyCompton.hh | 4 +- .../lowenergy/include/G4LowEnergyCompton.icc | 4 +- .../include/G4LowEnergyGammaConversion.hh | 4 +- .../include/G4LowEnergyGammaConversion.icc | 4 +- .../include/G4LowEnergyIonisation.hh | 38 +- .../include/G4LowEnergyIonisation.icc | 49 +- .../include/G4LowEnergyPhotoElectric.hh | 4 +- .../include/G4LowEnergyPhotoElectric.icc | 4 +- .../lowenergy/include/G4LowEnergyRayleigh.hh | 4 +- .../lowenergy/include/G4LowEnergyRayleigh.icc | 4 +- .../lowenergy/include/G4LowEnergyUtilities.hh | 4 +- .../lowenergy/include/G4QAOLowEnergyLoss.hh | 113 + .../lowenergy/include/G4VeLowEnergyLoss.hh | 222 + .../lowenergy/include/G4VhEnergyLossModel.hh | 69 + .../include/G4eLowEnergyLoss.hh} | 165 +- .../include/G4eLowEnergyLoss.icc} | 13 +- .../include/G4hLowEnergyIonisation.hh | 47 +- .../include/G4hLowEnergyLoss.hh} | 23 +- .../include/G4hLowEnergyLoss.icc} | 11 +- .../src/G4LowEnergyBremsstrahlung.cc | 645 +- .../lowenergy/src/G4LowEnergyCompton.cc | 11 +- .../src/G4LowEnergyGammaConversion.cc | 13 +- .../lowenergy/src/G4LowEnergyIonisation.cc | 1087 +- .../lowenergy/src/G4LowEnergyPhotoElectric.cc | 46 +- .../lowenergy/src/G4LowEnergyRayleigh.cc | 8 +- .../lowenergy/src/G4LowEnergyUtilities.cc | 2 +- .../lowenergy/src/G4QAOLowEnergyLoss.cc | 398 + .../lowenergy/src/G4VeLowEnergyLoss.cc | 1081 + .../lowenergy/src/G4eLowEnergyLoss.cc | 395 + .../lowenergy/src/G4hLowEnergyIonisation.cc | 975 +- .../src/G4hLowEnergyLoss.cc} | 153 +- .../processes/electromagnetic/muons/History | 55 + .../muons/documents/dif_tab.dat | 54 + .../muons/documents/ion_comm.txt | 21 + .../muons/documents/mcs_qst.txt | 45 + .../muons/documents/mcs_refs.txt | 27 + .../muons/documents/summary.txt | 47 + .../muons/documents/tasklist.txt | 36 + .../muons/documents/testlist.txt | 47 + .../muons/include/G4IMuBremsstrahlung.hh | 8 +- .../muons/include/G4IMuBremsstrahlung.icc | 4 +- .../muons/include/G4IMuIonisation.hh | 8 +- .../muons/include/G4IMuIonisation.icc | 4 +- .../muons/include/G4IMuPairProduction.hh | 8 +- .../muons/include/G4IMuPairProduction.icc | 4 +- .../muons/include/G4MuBremsstrahlung.hh | 38 +- .../muons/include/G4MuBremsstrahlung.icc | 4 +- .../muons/include/G4MuIonisation.hh | 30 +- .../muons/include/G4MuIonisation.icc | 4 +- .../muons/include/G4MuPairProduction.hh | 39 +- .../muons/include/G4MuPairProduction.icc | 5 +- ...G4IMuEnergyLoss.hh => G4VIMuEnergyLoss.hh} | 24 +- ...IMuEnergyLoss.icc => G4VIMuEnergyLoss.icc} | 12 +- .../{G4MuEnergyLoss.hh => G4VMuEnergyLoss.hh} | 151 +- ...G4MuEnergyLoss.icc => G4VMuEnergyLoss.icc} | 14 +- .../muons/src/G4IMuBremsstrahlung.cc | 8 +- .../muons/src/G4IMuIonisation.cc | 8 +- .../muons/src/G4IMuPairProduction.cc | 16 +- .../muons/src/G4MuBremsstrahlung.cc | 100 +- .../muons/src/G4MuEnergyLoss.cc | 1338 - .../muons/src/G4MuIonisation.cc | 43 +- .../muons/src/G4MuPairProduction.cc | 114 +- ...G4IMuEnergyLoss.cc => G4VIMuEnergyLoss.cc} | 96 +- .../muons/src/G4VMuEnergyLoss.cc | 454 + .../electromagnetic/standard/GNUmakefile | 3 +- .../electromagnetic/standard/History | 61 + .../standard/include/G4ComptonScattering.hh | 59 +- .../standard/include/G4ComptonScattering.icc | 4 +- .../standard/include/G4EnergyLossMessenger.hh | 5 +- .../standard/include/G4GammaConversion.hh | 63 +- .../standard/include/G4GammaConversion.icc | 4 +- .../standard/include/G4IeBremsstrahlung.hh | 8 +- .../standard/include/G4IeBremsstrahlung.icc | 4 +- .../standard/include/G4IeIonisation.hh | 8 +- .../standard/include/G4IeIonisation.icc | 4 +- .../standard/include/G4IeplusAnnihilation.hh | 4 +- .../standard/include/G4IeplusAnnihilation.icc | 4 +- .../standard/include/G4IhIonisation.hh | 8 +- .../standard/include/G4IhIonisation.icc | 4 +- .../include/G4IonisationByLogicalVolume.hh | 97 + .../standard/include/G4PAIonisation.hh | 8 +- .../standard/include/G4PAIonisation.icc | 12 +- .../standard/include/G4PAIxSection.hh | 4 +- .../standard/include/G4PhotoElectricEffect.hh | 60 +- .../include/G4PhotoElectricEffect.icc | 4 +- .../include/G4PolarizedComptonScattering.hh | 4 +- .../include/G4SynchrotronRadiation.hh | 4 +- .../{G4IeEnergyLoss.hh => G4VIeEnergyLoss.hh} | 24 +- ...G4IeEnergyLoss.icc => G4VIeEnergyLoss.icc} | 10 +- .../{G4IhEnergyLoss.hh => G4VIhEnergyLoss.hh} | 24 +- ...G4IhEnergyLoss.icc => G4VIhEnergyLoss.icc} | 10 +- ...G4PAIenergyLoss.hh => G4VPAIenergyLoss.hh} | 138 +- ...PAIenergyLoss.icc => G4VPAIenergyLoss.icc} | 26 +- ...G4eEnergyLossPlus.hh => G4VeEnergyLoss.hh} | 175 +- ...eEnergyLossPlus.icc => G4VeEnergyLoss.icc} | 15 +- ...G4hEnergyLossPlus.hh => G4VhEnergyLoss.hh} | 175 +- .../{G4hEnergyLoss.icc => G4VhEnergyLoss.icc} | 11 +- .../standard/include/G4eBremsstrahlung.hh | 36 +- .../standard/include/G4eBremsstrahlung.icc | 27 +- .../standard/include/G4eBremsstrahlungPlus.hh | 132 - .../include/G4eBremsstrahlungPlus.icc | 135 - .../standard/include/G4eIonisation.hh | 31 +- .../standard/include/G4eIonisation.icc | 4 +- .../standard/include/G4eIonisationPlus.hh | 105 - .../standard/include/G4eIonisationPlus.icc | 78 - .../standard/include/G4eplusAnnihilation.hh | 76 +- .../standard/include/G4eplusAnnihilation.icc | 4 +- .../standard/include/G4hIonisation.hh | 28 +- .../standard/include/G4hIonisation.icc | 4 +- .../standard/include/G4hIonisationPlus.hh | 113 - .../standard/include/G4hIonisationPlus.icc | 61 - .../standard/include/G4ionIonisation.hh | 4 +- .../standard/include/G4ionIonisation.icc | 4 +- .../standard/src/G4ComptonScattering.cc | 6 +- .../standard/src/G4EnergyLossMessenger.cc | 40 +- .../standard/src/G4GammaConversion.cc | 8 +- .../standard/src/G4IeBremsstrahlung.cc | 6 +- .../standard/src/G4IeIonisation.cc | 6 +- .../standard/src/G4IeplusAnnihilation.cc | 4 +- .../standard/src/G4IhIonisation.cc | 6 +- .../src/G4IonisationByLogicalVolume.cc | 259 + .../standard/src/G4PAIenergyLoss.cc | 845 - .../standard/src/G4PAIonisation.cc | 58 +- .../standard/src/G4PAIxSection.cc | 4 +- .../standard/src/G4PhotoElectricEffect.cc | 6 +- .../src/G4PolarizedComptonScattering.cc | 4 +- .../standard/src/G4SynchrotronRadiation.cc | 4 +- .../{G4IeEnergyLoss.cc => G4VIeEnergyLoss.cc} | 100 +- .../{G4IhEnergyLoss.cc => G4VIhEnergyLoss.cc} | 146 +- .../standard/src/G4VPAIenergyLoss.cc | 364 + .../standard/src/G4VeEnergyLoss.cc | 621 + .../standard/src/G4VhEnergyLoss.cc | 702 + .../standard/src/G4eBremsstrahlung.cc | 125 +- .../standard/src/G4eBremsstrahlungPlus.cc | 947 - .../standard/src/G4eEnergyLoss.cc | 1141 - .../standard/src/G4eEnergyLossPlus.cc | 1377 - .../standard/src/G4eIonisation.cc | 80 +- .../standard/src/G4eIonisationPlus.cc | 458 - .../standard/src/G4eplusAnnihilation.cc | 4 +- .../standard/src/G4hEnergyLossPlus.cc | 1567 - .../standard/src/G4hIonisation.cc | 43 +- .../standard/src/G4hIonisationPlus.cc | 574 - .../standard/src/G4ionIonisation.cc | 4 +- .../processes/electromagnetic/utils/History | 51 + .../utils/include/G4EnergyLossTables.hh | 4 +- .../utils/include/G4EnergyLossTables.icc | 12 +- .../include/G4IMultipleScattering.hh | 4 +- .../include/G4IMultipleScattering.icc | 4 +- .../include/G4MultipleScattering.hh | 4 +- .../include/G4MultipleScattering.icc | 9 +- .../utils/include/G4VEnergyLoss.hh | 224 + .../utils/src/G4EnergyLossTables.cc | 9 +- .../src/G4IMultipleScattering.cc | 4 +- .../src/G4MultipleScattering.cc | 11 +- .../utils/src/G4VEnergyLoss.cc | 1082 + .../processes/electromagnetic/xrays/History | 50 + .../xrays/include/G4Cerenkov.hh | 4 +- .../xrays/include/G4ForwardXrayTR.hh | 19 +- .../xrays/include/G4Scintillation.hh | 4 +- .../xrays/include/G4TransitionRadiation.hh | 13 +- .../electromagnetic/xrays/src/G4Cerenkov.cc | 4 +- .../xrays/src/G4ForwardXrayTR.cc | 15 +- .../xrays/src/G4Scintillation.cc | 4 +- .../xrays/src/G4TransitionRadiation.cc | 4 +- source/processes/hadronic/GNUmakefile | 6 +- .../include/G4CrossSectionDataStore.hh | 4 +- .../include/G4HadronCaptureDataSet.hh | 4 +- .../include/G4HadronCrossSections.hh | 4 +- .../include/G4HadronElasticDataSet.hh | 4 +- .../include/G4HadronFissionDataSet.hh | 4 +- .../include/G4HadronInelasticDataSet.hh | 4 +- .../include/G4IonProtonCrossSection.hh | 45 + .../include/G4ProtonInelasticCrossSection.hh | 2 + .../include/G4TripathiCrossSection.hh | 37 + .../include/G4VCrossSectionDataSet.hh | 4 +- .../src/G4CrossSectionDataStore.cc | 4 +- .../src/G4HadronCaptureDataSet.cc | 4 +- .../src/G4HadronCrossSections.cc | 4 +- .../src/G4HadronElasticDataSet.cc | 4 +- .../src/G4HadronFissionDataSet.cc | 4 +- .../src/G4HadronInelasticDataSet.cc | 4 +- .../src/G4ProtonInelasticCrossSection.cc | 8 +- .../src/G4TripathiCrossSection.cc | 76 + .../src/G4VCrossSectionDataSet.cc | 4 +- .../include/G4EnergyRangeManager.hh | 4 +- .../include/G4HadronInelasticProcess.hh | 4 +- .../include/G4HadronicInteraction.hh | 4 +- .../include/G4HadronicInteractionRegistry.hh | 6 + .../management/include/G4HadronicProcess.hh | 4 +- .../include/G4InelasticInteraction.hh | 4 +- .../management/src/G4EnergyRangeManager.cc | 4 +- .../src/G4HadronInelasticProcess.cc | 6 +- .../management/src/G4HadronicInteraction.cc | 4 +- .../management/src/G4HadronicProcess.cc | 4 +- .../management/src/G4InelasticInteraction.cc | 24 +- source/processes/hadronic/models/GNUmakefile | 6 +- .../hadronic/models/generator/History | 21 + .../processes/hadronic/models/generator/ToDo | 18 + .../include/G4AlphaCoulombBarrier.hh | 40 + .../include/G4AlphaEvaporationChannel.hh | 47 + .../include/G4AlphaEvaporationProbability.hh | 56 + .../G4CameronGilbertPairingCorrections.hh | 46 + .../G4CameronGilbertShellCorrections.hh | 46 + .../G4CameronShellPlusPairingCorrections.hh | 45 + .../G4CameronTruranHilfPairingCorrections.hh | 46 + .../G4CameronTruranHilfShellCorrections.hh | 47 + .../include/G4CompetitiveFission.hh | 3 +- .../de_excitation/include/G4CoulombBarrier.hh | 48 + .../include/G4DeuteronCoulombBarrier.hh | 40 + .../include/G4DeuteronEvaporationChannel.hh | 46 + .../G4DeuteronEvaporationProbability.hh | 55 + .../de_excitation/include/G4Evaporation.hh | 111 +- .../include/G4EvaporationChannel.hh | 167 +- .../G4EvaporationLevelDensityParameter.hh | 32 +- .../include/G4EvaporationProbability.hh | 76 +- .../include/G4ExcitationHandler.hh | 4 +- .../de_excitation/include/G4FissionBarrier.hh | 13 +- .../include/G4FissionLevelDensityParameter.hh | 2 +- .../include/G4FissionParameters.hh | 2 +- .../include/G4FissionProbability.hh | 23 +- .../include/G4He3CoulombBarrier.hh | 40 + .../include/G4He3EvaporationChannel.hh | 46 + .../include/G4He3EvaporationProbability.hh | 56 + .../include/G4NeutronCoulombBarrier.hh | 41 + .../include/G4NeutronEvaporationChannel.hh | 46 + .../G4NeutronEvaporationProbability.hh | 54 + .../include/G4ProtonCoulombBarrier.hh | 40 + .../include/G4ProtonEvaporationChannel.hh | 46 + .../include/G4ProtonEvaporationProbability.hh | 55 + .../include/G4TritonCoulombBarrier.hh | 40 + .../include/G4TritonEvaporationChannel.hh | 46 + .../include/G4TritonEvaporationProbability.hh | 56 + .../include/G4VCoulombBarrier.hh | 50 + .../include/G4VEmissionProbability.hh | 6 +- .../include/G4VEvaporationChannel.hh | 12 +- .../include/G4VFissionBarrier.hh | 8 +- .../src/G4AlphaCoulombBarrier.cc | 56 + .../src/G4AlphaEvaporationChannel.cc | 37 + .../src/G4AlphaEvaporationProbability.cc | 91 + .../src/G4CameronGilbertPairingCorrections.cc | 47 + .../src/G4CameronGilbertShellCorrections.cc | 47 + .../G4CameronShellPlusPairingCorrections.cc | 65 + .../G4CameronTruranHilfPairingCorrections.cc | 52 + .../G4CameronTruranHilfShellCorrections.cc | 54 + .../de_excitation/src/G4CompetitiveFission.cc | 500 +- .../de_excitation/src/G4CoulombBarrier.cc | 74 + .../src/G4DeuteronCoulombBarrier.cc | 58 + .../src/G4DeuteronEvaporationChannel.cc | 36 + .../src/G4DeuteronEvaporationProbability.cc | 106 + .../de_excitation/src/G4Evaporation.cc | 568 +- .../de_excitation/src/G4EvaporationChannel.cc | 368 +- .../src/G4EvaporationLevelDensityParameter.cc | 31 +- .../src/G4EvaporationProbability.cc | 203 +- .../de_excitation/src/G4ExcitationHandler.cc | 24 +- .../de_excitation/src/G4FissionBarrier.cc | 119 +- .../src/G4FissionLevelDensityParameter.cc | 2 +- .../de_excitation/src/G4FissionParameters.cc | 22 +- .../de_excitation/src/G4FissionProbability.cc | 60 +- .../de_excitation/src/G4He3CoulombBarrier.cc | 58 + .../src/G4He3EvaporationChannel.cc | 37 + .../src/G4He3EvaporationProbability.cc | 91 + .../src/G4NeutronCoulombBarrier.cc | 38 + .../src/G4NeutronEvaporationChannel.cc | 37 + .../src/G4NeutronEvaporationProbability.cc | 96 + .../src/G4NuclearLevelManager.cc | 14 +- .../src/G4ProtonCoulombBarrier.cc | 56 + .../src/G4ProtonEvaporationChannel.cc | 38 + .../src/G4ProtonEvaporationProbability.cc | 103 + .../src/G4TritonCoulombBarrier.cc | 58 + .../src/G4TritonEvaporationChannel.cc | 36 + .../src/G4TritonEvaporationProbability.cc | 96 + .../de_excitation/src/G4VCoulombBarrier.cc | 56 + .../src/G4VEmissionProbability.cc | 2 +- .../de_excitation/src/G4VFissionBarrier.cc | 6 +- .../include/G4DiffractiveHHScatterer.hh | 2 +- .../include/G4DiffractiveSplitableHadron.hh | 4 +- .../diffractive_string/include/G4FTFModel.hh | 4 +- .../include/G4FTFParticipants.hh | 4 +- .../src/G4DiffractiveSplitableHadron.cc | 4 +- .../diffractive_string/src/G4FTFModel.cc | 4 +- .../src/G4FTFParticipants.cc | 4 +- .../high_energy/include/G4TheoFSGenerator.hh | 2 +- .../high_energy/src/G4TheoFSGenerator.cc | 2 +- .../management/include/G4V3DNucleus.hh | 4 +- .../include/G4VHighEnergyGenerator.hh | 4 +- .../include/G4VIntraNuclearTransportModel.hh | 4 +- .../management/include/G4VKineticNucleon.hh | 4 +- .../management/include/G4VNuclearDensity.hh | 9 +- .../management/include/G4VPreCompoundModel.hh | 4 +- .../generator/management/src/G4V3DNucleus.cc | 4 +- .../management/src/G4VHighEnergyGenerator.cc | 4 +- .../src/G4VIntraNuclearTransportModel.cc | 4 +- .../management/src/G4VKineticNucleon.cc | 4 +- .../management/src/G4VNuclearDensity.cc | 4 +- .../management/src/G4VPreCompoundModel.cc | 4 +- .../include/G4PreCompoundModel.hh | 4 +- .../pre_equilibrium/src/G4PreCompoundModel.cc | 4 +- .../generator/quark_gluon_string/GNUmakefile | 3 +- .../include/G4ASCCrossSection.hh | 39 + .../include/G4AnnihilationCrossSection.hh | 34 + .../include/G4BaryonSplitter.hh | 5 +- .../include/G4GammaAnnCrossSection.hh | 21 + .../include/G4InelasticSplitableHadron.hh | 4 +- .../include/G4PartonStringAnnihilator.hh | 41 +- .../quark_gluon_string/include/G4SPBaryon.hh | 55 +- .../include/G4SPPartonInfo.hh | 20 + .../include/G4VAnnihilationCrossSection.hh | 13 + .../src/G4ASCCrossSection.cc | 13 + .../src/G4AnnihilationCrossSection.cc | 38 + .../src/G4BaryonSplitter.cc | 67 +- .../src/G4GammaAnnCrossSection.cc | 47 + .../src/G4PartonStringAnnihilator.cc | 185 + .../quark_gluon_string/src/G4SPBaryon.cc | 336 +- .../include/G4DiffractiveExcitation.hh | 2 +- .../string_common/include/G4EventGenerator.hh | 4 +- .../include/G4InteractionCode.hh | 4 +- .../include/G4InteractionContent.hh | 4 +- .../include/G4PomeronCrossSection.hh | 4 +- .../include/G4SingleDiffractiveExcitation.hh | 2 +- .../string_common/include/G4StringModel.hh | 4 +- .../string_common/include/G4VParticipants.hh | 4 +- .../include/G4VPartonStringModel.hh | 4 +- .../include/G4VSplitableHadron.hh | 4 +- .../include/G4VStringFragmentation.hh | 4 +- .../string_common/include/G4VertexCode.hh | 4 +- .../src/G4DiffractiveExcitation.cc | 4 +- .../string_common/src/G4EventGenerator.cc | 4 +- .../string_common/src/G4InteractionContent.cc | 4 +- .../src/G4PomeronCrossSection.cc | 4 +- .../src/G4SingleDiffractiveExcitation.cc | 2 +- .../string_common/src/G4StringModel.cc | 4 +- .../string_common/src/G4VParticipants.cc | 4 +- .../string_common/src/G4VPartonStringModel.cc | 4 +- .../string_common/src/G4VSplitableHadron.cc | 4 +- .../src/G4VStringFragmentation.cc | 4 +- .../include/G4ExcitedStringDecay.hh | 4 +- .../include/G4LundStringFragmentation.hh | 4 +- .../include/G4QGSMFragmentation.hh | 4 +- .../include/G4VKinkyStringDecay.hh | 4 +- .../include/G4VLongitudinalStringDecay.hh | 24 +- .../src/G4ExcitedStringDecay.cc | 4 +- .../src/G4LundStringFragmentation.cc | 4 +- .../src/G4QGSMFragmentation.cc | 4 +- .../src/G4VKinkyStringDecay.cc | 4 +- .../src/G4VLongitudinalStringDecay.cc | 152 +- .../generator/util/include/G4ExcitedString.hh | 4 +- .../util/include/G4ExcitedStringVector.hh | 4 +- .../util/include/G4Fancy3DNucleus.hh | 4 +- .../generator/util/include/G4FermiMomentum.hh | 4 +- .../generator/util/include/G4Fragment.hh | 4 +- .../util/include/G4FragmentVector.hh | 4 +- .../util/include/G4GeneralPhaseSpaceDecay.hh | 4 +- .../generator/util/include/G4KineticTrack.hh | 44 +- .../util/include/G4KineticTrackVector.hh | 4 +- .../util/include/G4NuclearFermiDensity.hh | 5 +- .../include/G4NuclearShellModelDensity.hh | 7 +- .../generator/util/include/G4Nucleon.hh | 4 +- .../models/generator/util/include/G4Parton.hh | 4 +- .../generator/util/include/G4PartonVector.hh | 4 +- .../generator/util/src/G4ExcitedString.cc | 4 +- .../generator/util/src/G4Fancy3DNucleus.cc | 6 +- .../generator/util/src/G4FermiMomentum.cc | 4 +- .../models/generator/util/src/G4Fragment.cc | 4 +- .../util/src/G4GeneralPhaseSpaceDecay.cc | 4 +- .../generator/util/src/G4KineticTrack.cc | 266 +- .../util/src/G4NuclearFermiDensity.cc | 19 +- .../util/src/G4NuclearShellModelDensity.cc | 12 +- .../models/generator/util/src/G4Nucleon.cc | 4 +- .../models/generator/util/src/G4Parton.cc | 4 +- .../include/G4HEAntiKaonZeroInelastic.hh | 4 +- .../include/G4HEAntiLambdaInelastic.hh | 4 +- .../include/G4HEAntiNeutronInelastic.hh | 4 +- .../include/G4HEAntiOmegaMinusInelastic.hh | 4 +- .../include/G4HEAntiProtonInelastic.hh | 4 +- .../include/G4HEAntiSigmaMinusInelastic.hh | 4 +- .../include/G4HEAntiSigmaPlusInelastic.hh | 4 +- .../include/G4HEAntiSigmaZeroInelastic.hh | 4 +- .../include/G4HEAntiXiMinusInelastic.hh | 4 +- .../include/G4HEAntiXiZeroInelastic.hh | 4 +- .../high_energy/include/G4HEInelastic.hh | 4 +- .../include/G4HEKaonMinusInelastic.hh | 4 +- .../include/G4HEKaonPlusInelastic.hh | 4 +- .../include/G4HEKaonZeroInelastic.hh | 4 +- .../include/G4HEKaonZeroLongInelastic.hh | 4 +- .../include/G4HEKaonZeroShortInelastic.hh | 4 +- .../include/G4HELambdaInelastic.hh | 4 +- .../include/G4HENeutronInelastic.hh | 4 +- .../include/G4HEOmegaMinusInelastic.hh | 4 +- .../include/G4HEPionMinusInelastic.hh | 4 +- .../include/G4HEPionPlusInelastic.hh | 4 +- .../models/high_energy/include/G4HEPlot.hh | 4 +- .../include/G4HEProtonInelastic.hh | 4 +- .../include/G4HESigmaMinusInelastic.hh | 4 +- .../include/G4HESigmaPlusInelastic.hh | 4 +- .../include/G4HESigmaZeroInelastic.hh | 4 +- .../models/high_energy/include/G4HEVector.hh | 4 +- .../include/G4HEXiMinusInelastic.hh | 4 +- .../include/G4HEXiZeroInelastic.hh | 4 +- .../src/G4HEAntiKaonZeroInelastic.cc | 4 +- .../src/G4HEAntiLambdaInelastic.cc | 4 +- .../src/G4HEAntiNeutronInelastic.cc | 4 +- .../src/G4HEAntiOmegaMinusInelastic.cc | 4 +- .../src/G4HEAntiProtonInelastic.cc | 4 +- .../src/G4HEAntiSigmaMinusInelastic.cc | 4 +- .../src/G4HEAntiSigmaPlusInelastic.cc | 4 +- .../src/G4HEAntiSigmaZeroInelastic.cc | 4 +- .../src/G4HEAntiXiMinusInelastic.cc | 4 +- .../src/G4HEAntiXiZeroInelastic.cc | 4 +- .../models/high_energy/src/G4HEInelastic.cc | 4 +- .../high_energy/src/G4HEKaonMinusInelastic.cc | 4 +- .../high_energy/src/G4HEKaonPlusInelastic.cc | 4 +- .../high_energy/src/G4HEKaonZeroInelastic.cc | 4 +- .../src/G4HEKaonZeroLongInelastic.cc | 4 +- .../src/G4HEKaonZeroShortInelastic.cc | 4 +- .../high_energy/src/G4HELambdaInelastic.cc | 4 +- .../high_energy/src/G4HENeutronInelastic.cc | 4 +- .../src/G4HEOmegaMinusInelastic.cc | 4 +- .../high_energy/src/G4HEPionMinusInelastic.cc | 4 +- .../high_energy/src/G4HEPionPlusInelastic.cc | 4 +- .../models/high_energy/src/G4HEPlot.cc | 4 +- .../high_energy/src/G4HEProtonInelastic.cc | 4 +- .../src/G4HESigmaMinusInelastic.cc | 4 +- .../high_energy/src/G4HESigmaPlusInelastic.cc | 4 +- .../high_energy/src/G4HESigmaZeroInelastic.cc | 4 +- .../models/high_energy/src/G4HEVector.cc | 4 +- .../high_energy/src/G4HEXiMinusInelastic.cc | 4 +- .../high_energy/src/G4HEXiZeroInelastic.cc | 4 +- ...ctions.hh => G4ElementIsoCrossSections.hh} | 16 +- .../G4ElementIsoCrossSections.icc} | 31 +- ...sSections.hh => G4IsoProdCrossSections.hh} | 8 +- .../include/G4NeutronElementCrossSections.hh | 12 - .../include/G4NeutronIsoIsoCrossSections.hh | 4 +- .../include/G4NeutronIsotopeProduction.hh | 5 +- .../include/G4ProtonIsoIsoCrossSections.hh | 33 + .../include/G4ProtonIsotopeProduction.hh | 25 + ...ssSections.cc => G4IsoProdCrossSection.cc} | 8 +- .../src/G4NeutronIsoIsoCrossSections.cc | 4 +- .../src/G4NeutronIsotopeProduction.cc | 4 +- .../models/low_energy/include/G4LCapture.hh | 4 +- .../low_energy/include/G4LEAlphaInelastic.hh | 4 +- .../include/G4LEAntiLambdaInelastic.hh | 4 +- .../include/G4LEAntiNeutronInelastic.hh | 4 +- .../include/G4LEAntiOmegaMinusInelastic.hh | 4 +- .../include/G4LEAntiProtonInelastic.hh | 4 +- .../include/G4LEAntiSigmaMinusInelastic.hh | 4 +- .../include/G4LEAntiSigmaPlusInelastic.hh | 4 +- .../include/G4LEAntiXiMinusInelastic.hh | 4 +- .../include/G4LEAntiXiZeroInelastic.hh | 4 +- .../include/G4LEDeuteronInelastic.hh | 4 +- .../include/G4LEKaonMinusInelastic.hh | 4 +- .../include/G4LEKaonPlusInelastic.hh | 4 +- .../include/G4LEKaonZeroLInelastic.hh | 4 +- .../include/G4LEKaonZeroSInelastic.hh | 4 +- .../low_energy/include/G4LELambdaInelastic.hh | 4 +- .../include/G4LEOmegaMinusInelastic.hh | 4 +- .../include/G4LEPionMinusInelastic.hh | 4 +- .../include/G4LEPionPlusInelastic.hh | 4 +- .../low_energy/include/G4LEProtonInelastic.hh | 4 +- .../include/G4LESigmaMinusInelastic.hh | 4 +- .../include/G4LESigmaPlusInelastic.hh | 4 +- .../low_energy/include/G4LETritonInelastic.hh | 4 +- .../include/G4LEXiMinusInelastic.hh | 4 +- .../low_energy/include/G4LEXiZeroInelastic.hh | 4 +- .../models/low_energy/include/G4LElastic.hh | 4 +- .../models/low_energy/include/G4LFission.hh | 4 +- .../models/low_energy/src/G4LCapture.cc | 4 +- .../low_energy/src/G4LEAlphaInelastic.cc | 3 +- .../low_energy/src/G4LEAntiLambdaInelastic.cc | 4 +- .../src/G4LEAntiNeutronInelastic.cc | 4 +- .../src/G4LEAntiOmegaMinusInelastic.cc | 4 +- .../low_energy/src/G4LEAntiProtonInelastic.cc | 4 +- .../src/G4LEAntiSigmaMinusInelastic.cc | 4 +- .../src/G4LEAntiSigmaPlusInelastic.cc | 4 +- .../src/G4LEAntiXiMinusInelastic.cc | 4 +- .../low_energy/src/G4LEAntiXiZeroInelastic.cc | 4 +- .../low_energy/src/G4LEDeuteronInelastic.cc | 3 +- .../low_energy/src/G4LEKaonMinusInelastic.cc | 4 +- .../low_energy/src/G4LEKaonPlusInelastic.cc | 4 +- .../low_energy/src/G4LEKaonZeroLInelastic.cc | 4 +- .../low_energy/src/G4LEKaonZeroSInelastic.cc | 4 +- .../low_energy/src/G4LELambdaInelastic.cc | 4 +- .../low_energy/src/G4LENeutronInelastic.cc | 3 +- .../low_energy/src/G4LEOmegaMinusInelastic.cc | 4 +- .../low_energy/src/G4LEPionMinusInelastic.cc | 2 - .../low_energy/src/G4LEPionPlusInelastic.cc | 4 +- .../low_energy/src/G4LEProtonInelastic.cc | 3 +- .../low_energy/src/G4LESigmaMinusInelastic.cc | 4 +- .../low_energy/src/G4LESigmaPlusInelastic.cc | 4 +- .../low_energy/src/G4LETritonInelastic.cc | 4 +- .../low_energy/src/G4LEXiMinusInelastic.cc | 4 +- .../low_energy/src/G4LEXiZeroInelastic.cc | 4 +- .../models/low_energy/src/G4LElastic.cc | 4 +- .../models/low_energy/src/G4LFission.cc | 4 +- .../include/G4InterpolationIterator.hh | 2 +- .../include/G4InterpolationManager.hh | 2 +- .../include/G4InterpolationScheme.hh | 2 +- .../include/G4NeutronHP2AInelasticFS.hh | 2 +- .../include/G4NeutronHP2N2AInelasticFS.hh | 2 +- .../include/G4NeutronHP2NAInelasticFS.hh | 2 +- .../include/G4NeutronHP2NDInelasticFS.hh | 2 +- .../include/G4NeutronHP2NInelasticFS.hh | 2 +- .../include/G4NeutronHP2NPInelasticFS.hh | 2 +- .../include/G4NeutronHP2PInelasticFS.hh | 2 +- .../include/G4NeutronHP3AInelasticFS.hh | 2 +- .../include/G4NeutronHP3NAInelasticFS.hh | 2 +- .../include/G4NeutronHP3NInelasticFS.hh | 2 +- .../include/G4NeutronHP3NPInelasticFS.hh | 2 +- .../include/G4NeutronHP4NInelasticFS.hh | 2 +- .../include/G4NeutronHPAInelasticFS.hh | 2 +- .../neutron_hp/include/G4NeutronHPAngular.hh | 2 +- .../neutron_hp/include/G4NeutronHPAngularP.hh | 2 +- .../include/G4NeutronHPArbitaryTab.hh | 2 +- .../neutron_hp/include/G4NeutronHPCapture.hh | 2 +- .../include/G4NeutronHPCaptureData.hh | 2 +- .../include/G4NeutronHPCaptureFS.hh | 2 +- .../neutron_hp/include/G4NeutronHPChannel.hh | 2 +- .../include/G4NeutronHPChannelList.hh | 2 +- .../include/G4NeutronHPContAngularPar.hh | 2 +- .../include/G4NeutronHPContEnergyAngular.hh | 2 +- .../include/G4NeutronHPD2AInelasticFS.hh | 2 +- .../include/G4NeutronHPDAInelasticFS.hh | 2 +- .../include/G4NeutronHPDInelasticFS.hh | 2 +- .../neutron_hp/include/G4NeutronHPData.hh | 2 +- .../include/G4NeutronHPDataPoint.hh | 2 +- .../include/G4NeutronHPDeExGammas.hh | 2 +- .../include/G4NeutronHPDiscreteTwoBody.hh | 2 +- .../neutron_hp/include/G4NeutronHPElastic.hh | 2 +- .../include/G4NeutronHPElasticData.hh | 2 +- .../include/G4NeutronHPElasticFS.hh | 2 +- .../include/G4NeutronHPElementData.hh | 2 +- .../include/G4NeutronHPEnAngCorrelation.hh | 2 +- .../include/G4NeutronHPEnergyDistribution.hh | 2 +- .../include/G4NeutronHPEvapSpectrum.hh | 2 +- .../include/G4NeutronHPFCFissionFS.hh | 2 +- .../include/G4NeutronHPFSFissionFS.hh | 2 +- .../include/G4NeutronHPFastLegendre.hh | 2 +- .../neutron_hp/include/G4NeutronHPField.hh | 2 +- .../include/G4NeutronHPFieldPoint.hh | 2 +- .../include/G4NeutronHPFinalState.hh | 2 +- .../neutron_hp/include/G4NeutronHPFission.hh | 2 +- .../include/G4NeutronHPFissionBaseFS.hh | 2 +- .../include/G4NeutronHPFissionData.hh | 2 +- .../include/G4NeutronHPFissionERelease.hh | 2 +- .../include/G4NeutronHPFissionFS.hh | 2 +- .../include/G4NeutronHPFissionSpectrum.hh | 2 +- .../neutron_hp/include/G4NeutronHPGamma.hh | 2 +- .../include/G4NeutronHPHe3InelasticFS.hh | 2 +- .../include/G4NeutronHPInelastic.hh | 2 +- .../include/G4NeutronHPInelasticBaseFS.hh | 2 +- .../include/G4NeutronHPInelasticCompFS.hh | 2 +- .../include/G4NeutronHPInelasticData.hh | 2 +- .../include/G4NeutronHPInterpolator.hh | 2 +- .../neutron_hp/include/G4NeutronHPIsoData.hh | 2 +- .../include/G4NeutronHPIsotropic.hh | 2 +- .../include/G4NeutronHPKallbachMannSyst.hh | 2 +- .../include/G4NeutronHPLCFissionFS.hh | 2 +- .../include/G4NeutronHPLabAngularEnergy.hh | 2 +- .../include/G4NeutronHPLegendreStore.hh | 2 +- .../include/G4NeutronHPLegendreTable.hh | 2 +- .../neutron_hp/include/G4NeutronHPLevel.hh | 2 +- .../neutron_hp/include/G4NeutronHPList.hh | 2 +- .../include/G4NeutronHPMadlandNixSpectrum.hh | 2 +- .../include/G4NeutronHPN2AInelasticFS.hh | 2 +- .../include/G4NeutronHPN2PInelasticFS.hh | 2 +- .../include/G4NeutronHPN3AInelasticFS.hh | 2 +- .../include/G4NeutronHPNAInelasticFS.hh | 2 +- .../include/G4NeutronHPNBodyPhaseSpace.hh | 2 +- .../include/G4NeutronHPND2AInelasticFS.hh | 2 +- .../include/G4NeutronHPNDInelasticFS.hh | 2 +- .../include/G4NeutronHPNHe3InelasticFS.hh | 2 +- .../include/G4NeutronHPNInelasticFS.hh | 2 +- .../include/G4NeutronHPNPAInelasticFS.hh | 2 +- .../include/G4NeutronHPNPInelasticFS.hh | 2 +- .../include/G4NeutronHPNT2AInelasticFS.hh | 2 +- .../include/G4NeutronHPNTInelasticFS.hh | 2 +- .../include/G4NeutronHPNXInelasticFS.hh | 2 +- .../neutron_hp/include/G4NeutronHPNames.hh | 2 +- .../include/G4NeutronHPNeutronYield.hh | 2 +- .../include/G4NeutronHPPAInelasticFS.hh | 2 +- .../include/G4NeutronHPPDInelasticFS.hh | 2 +- .../include/G4NeutronHPPInelasticFS.hh | 2 +- .../include/G4NeutronHPPTInelasticFS.hh | 2 +- .../neutron_hp/include/G4NeutronHPPartial.hh | 2 +- .../include/G4NeutronHPPhotonDist.hh | 2 +- .../include/G4NeutronHPPhotonXSection.hh | 2 +- .../include/G4NeutronHPPolynomExpansion.hh | 2 +- .../neutron_hp/include/G4NeutronHPProduct.hh | 2 +- .../include/G4NeutronHPSCFissionFS.hh | 2 +- .../include/G4NeutronHPSimpleEvapSpectrum.hh | 2 +- .../include/G4NeutronHPT2AInelasticFS.hh | 2 +- .../include/G4NeutronHPTCFissionFS.hh | 2 +- .../include/G4NeutronHPTInelasticFS.hh | 2 +- .../neutron_hp/include/G4NeutronHPVector.hh | 2 +- .../include/G4NeutronHPWattSpectrum.hh | 2 +- .../neutron_hp/include/G4VNeutronHPEDis.hh | 2 +- .../include/G4VNeutronHPEnergyAngular.hh | 2 +- .../neutron_hp/src/G4NeutronHPCaptureData.cc | 2 +- .../neutron_hp/src/G4NeutronHPFissionData.cc | 2 +- .../neutron_hp/src/G4NeutronHPInelastic.cc | 2 +- .../src/G4NeutronHPInelasticCompFS.cc | 143 +- .../src/G4NeutronHPInelasticData.cc | 2 +- .../src/G4NeutronHPNBodyPhaseSpace.cc | 2 +- .../models/radiative_decay/GNUmakefile | 37 + .../hadronic/models/radiative_decay/History | 29 + .../include/G4AlphaDecayChannel.hh | 58 + .../include/G4BetaFermiFunction.hh | 61 + .../include/G4BetaMinusDecayChannel.hh | 59 + .../include/G4BetaPlusDecayChannel.hh | 59 + .../include/G4ITDecayChannel.hh | 34 + .../include/G4KshellECDecayChannel.hh | 58 + .../include/G4LshellECDecayChannel.hh | 37 + .../include/G4NuclearDecayChannel.hh | 112 + .../include/G4NucleusLimits.hh | 85 + .../include/G4ParticleChangeForRadDecay.hh | 89 + .../include/G4RIsotopeTable.hh | 120 + .../include/G4RadioactiveDecay.hh | 257 + .../include/G4RadioactiveDecayMode.hh | 52 + .../include/G4RadioactiveDecayRate.hh | 109 + .../include/G4RadioactiveDecayRateVector.hh | 88 + .../include/G4RadioactiveDecaymessenger.hh | 86 + .../include/G4UIcmdWithNucleusLimits.hh | 79 + .../include/G4UserLimitsForRD.hh | 34 + .../src/G4BetaFermiFunction.cc | 71 + .../src/G4NuclearDecayChannel.cc | 543 + .../radiative_decay/src/G4NucleusLimits.cc | 114 + .../radiative_decay/src/G4RIsotopeTable.cc | 242 + .../radiative_decay/src/G4RadioactiveDecay.cc | 1616 + .../src/G4RadioactiveDecayMode.cc | 27 + .../src/G4RadioactiveDecayRate.cc | 64 + .../src/G4RadioactiveDecayRateVector.cc | 41 + .../src/G4RadioactiveDecaymessenger.cc | 182 + .../src/G4UIcmdWithNucleusLimits.cc | 93 + .../include/G4AlphaInelasticProcess.hh | 4 +- .../include/G4AntiLambdaInelasticProcess.hh | 4 +- .../include/G4AntiNeutronInelasticProcess.hh | 4 +- .../G4AntiOmegaMinusInelasticProcess.hh | 4 +- .../include/G4AntiProtonInelasticProcess.hh | 4 +- .../G4AntiSigmaMinusInelasticProcess.hh | 4 +- .../G4AntiSigmaPlusInelasticProcess.hh | 4 +- .../include/G4AntiXiMinusInelasticProcess.hh | 4 +- .../include/G4AntiXiZeroInelasticProcess.hh | 4 +- .../include/G4DeuteronInelasticProcess.hh | 4 +- .../include/G4HadronCaptureProcess.hh | 4 +- .../include/G4HadronElasticProcess.hh | 4 +- .../include/G4HadronFissionProcess.hh | 4 +- .../include/G4IonInelasticProcess.hh | 35 + .../include/G4KaonMinusInelasticProcess.hh | 4 +- .../include/G4KaonPlusInelasticProcess.hh | 4 +- .../include/G4KaonZeroLInelasticProcess.hh | 4 +- .../include/G4KaonZeroSInelasticProcess.hh | 4 +- .../include/G4LambdaInelasticProcess.hh | 4 +- .../include/G4NeutronInelasticProcess.hh | 4 +- .../include/G4OmegaMinusInelasticProcess.hh | 4 +- .../include/G4PionMinusInelasticProcess.hh | 4 +- .../include/G4PionPlusInelasticProcess.hh | 4 +- .../include/G4ProtonInelasticProcess.hh | 4 +- .../include/G4SigmaMinusInelasticProcess.hh | 4 +- .../include/G4SigmaPlusInelasticProcess.hh | 4 +- .../include/G4TritonInelasticProcess.hh | 4 +- .../include/G4XiMinusInelasticProcess.hh | 4 +- .../include/G4XiZeroInelasticProcess.hh | 4 +- .../processes/src/G4HadronCaptureProcess.cc | 4 +- .../processes/src/G4HadronElasticProcess.cc | 4 +- .../processes/src/G4HadronFissionProcess.cc | 4 +- .../G4AntiNeutronAnnihilationAtRest.hh | 4 +- .../include/G4AntiProtonAnnihilationAtRest.hh | 4 +- .../include/G4DistributionGenerator.hh | 4 +- .../stopping/include/G4KaonMinusAbsorption.hh | 4 +- .../include/G4KaonMinusAbsorptionAtRest.hh | 4 +- .../include/G4MuMinusCaptureCascade.hh | 85 + .../include/G4MuonMinusCaptureAtRest.hh | 16 +- .../include/G4NeutronCaptureAtRest.hh | 4 +- .../include/G4PiMinusAbsorptionAtRest.hh | 4 +- .../include/G4PiMinusStopAbsorption.hh | 4 +- .../stopping/include/G4PiMinusStopAl.hh | 4 +- .../stopping/include/G4PiMinusStopC.hh | 4 +- .../stopping/include/G4PiMinusStopCo.hh | 4 +- .../stopping/include/G4PiMinusStopCu.hh | 4 +- .../stopping/include/G4PiMinusStopLi.hh | 4 +- .../stopping/include/G4PiMinusStopMaterial.hh | 5 +- .../stopping/include/G4PiMinusStopN.hh | 4 +- .../stopping/include/G4PiMinusStopO.hh | 4 +- .../stopping/include/G4PiMinusStopPb.hh | 4 +- .../stopping/include/G4PiMinusStopTa.hh | 4 +- .../include/G4PionMinusAbsorptionAtRest.hh | 4 +- .../stopping/include/G4StopDeexcitation.hh | 4 +- .../include/G4StopDeexcitationAlgorithm.hh | 4 +- .../include/G4StopDummyDeexcitation.hh | 4 +- .../stopping/include/G4StopElementSelector.hh | 60 + .../include/G4StopTheoDeexcitation.hh | 4 +- .../src/G4AntiNeutronAnnihilationAtRest.cc | 4 +- .../src/G4AntiProtonAnnihilationAtRest.cc | 4 +- .../stopping/src/G4DistributionGenerator.cc | 4 +- .../stopping/src/G4KaonMinusAbsorption.cc | 4 +- .../stopping/src/G4MuMinusCaptureCascade.cc | 276 + .../stopping/src/G4MuonMinusCaptureAtRest.cc | 168 +- .../stopping/src/G4NeutronCaptureAtRest.cc | 4 +- .../stopping/src/G4PiMinusAbsorptionAtRest.cc | 4 +- .../stopping/src/G4PiMinusStopAbsorption.cc | 4 +- .../hadronic/stopping/src/G4PiMinusStopAl.cc | 6 +- .../hadronic/stopping/src/G4PiMinusStopC.cc | 6 +- .../hadronic/stopping/src/G4PiMinusStopCo.cc | 6 +- .../hadronic/stopping/src/G4PiMinusStopCu.cc | 6 +- .../hadronic/stopping/src/G4PiMinusStopLi.cc | 6 +- .../stopping/src/G4PiMinusStopMaterial.cc | 6 +- .../hadronic/stopping/src/G4PiMinusStopN.cc | 6 +- .../hadronic/stopping/src/G4PiMinusStopO.cc | 6 +- .../hadronic/stopping/src/G4PiMinusStopPb.cc | 6 +- .../hadronic/stopping/src/G4PiMinusStopTa.cc | 6 +- .../src/G4PionMinusAbsorptionAtRest.cc | 4 +- .../stopping/src/G4StopDeexcitation.cc | 4 +- .../stopping/src/G4StopDummyDeexcitation.cc | 4 +- .../stopping/src/G4StopElementSelector.cc | 264 + .../stopping/src/G4StopTheoDeexcitation.cc | 4 +- .../util/include/G4DynamicParticleVector.hh | 4 +- .../util/include/G4GHEKinematicsVector.hh | 4 +- .../hadronic/util/include/G4LightMedia.hh | 4 +- .../hadronic/util/include/G4Nucleus.hh | 4 +- .../hadronic/util/include/G4ParticleVector.hh | 4 +- .../util/include/G4ReactionDynamics.hh | 4 +- .../util/include/G4ReactionKinematics.hh | 4 +- .../util/include/G4ReactionProduct.hh | 4 +- .../util/include/G4ReactionProductVector.hh | 4 +- .../hadronic/util/include/G4StableIsotopes.hh | 6 +- .../hadronic/util/src/G4LightMedia.cc | 4 +- .../processes/hadronic/util/src/G4Nucleus.cc | 4 +- .../hadronic/util/src/G4ReactionDynamics.cc | 161 +- .../hadronic/util/src/G4ReactionKinematics.cc | 4 +- .../hadronic/util/src/G4ReactionProduct.cc | 4 +- .../hadronic/util/src/G4StableIsotopes.cc | 4 +- source/processes/management/History | 13 +- .../include/G4IVContinuousDiscreteProcess.hh | 4 +- .../include/G4IVRestDiscreteProcess.hh | 4 +- .../management/include/G4ParticleTypes.hh | 5 +- .../management/include/G4ProcTblElement.hh | 32 +- .../management/include/G4ProcTblElement.icc | 59 +- .../management/include/G4ProcessAttribute.hh | 2 +- .../management/include/G4ProcessManager.hh | 9 +- .../management/include/G4ProcessManager.icc | 4 +- .../include/G4ProcessManagerMessenger.hh | 2 +- .../management/include/G4ProcessTable.hh | 32 +- .../management/include/G4ProcessTable.icc | 34 + .../include/G4ProcessTableMessenger.hh | 2 +- .../management/include/G4ProcessType.hh | 2 +- .../management/include/G4ProcessVector.hh | 4 +- .../include/G4VContinuousDiscreteProcess.hh | 4 +- .../include/G4VContinuousProcess.hh | 4 +- .../management/include/G4VDiscreteProcess.hh | 4 +- .../management/include/G4VProcess.hh | 2 +- .../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 | 17 +- .../management/src/G4ProcessAttribute.cc | 4 +- .../management/src/G4ProcessManager.cc | 79 +- .../src/G4ProcessManagerMessenger.cc | 4 +- .../management/src/G4ProcessTable.cc | 220 +- .../management/src/G4ProcessTableMessenger.cc | 34 +- .../src/G4VContinuousDiscreteProcess.cc | 4 +- .../management/src/G4VContinuousProcess.cc | 4 +- .../management/src/G4VDiscreteProcess.cc | 4 +- source/processes/management/src/G4VProcess.cc | 4 +- .../src/G4VRestContinuousDiscreteProcess.cc | 4 +- .../src/G4VRestContinuousProcess.cc | 4 +- .../management/src/G4VRestDiscreteProcess.cc | 4 +- .../management/src/G4VRestProcess.cc | 4 +- .../optical/include/G4OpAbsorption.hh | 2 +- .../optical/include/G4OpBoundaryProcess.hh | 2 +- .../processes/optical/include/G4OpRayleigh.hh | 2 +- .../processes/optical/src/G4OpAbsorption.cc | 2 +- source/processes/optical/src/G4OpRayleigh.cc | 2 +- source/processes/parameterisation/GNUmakefile | 4 +- source/processes/parameterisation/History | 20 +- .../include/G4FastSimulationManager.hh | 20 +- .../include/G4FastSimulationManagerProcess.hh | 6 +- .../include/G4FastSimulationMessenger.hh | 4 +- .../include/G4FastSimulationVector.hh | 49 + .../include/G4FastSimulationVector.icc | 61 + .../parameterisation/include/G4FastStep.hh | 4 +- .../parameterisation/include/G4FastStep.icc | 4 +- .../parameterisation/include/G4FastTrack.hh | 4 +- .../include/G4FlavoredParallelWorld.hh | 4 +- .../include/G4FoamXrayTRmodel.hh | 47 + .../include/G4GamDistrXrayTRmodel.hh | 60 + .../include/G4GlobalFastSimulationManager.hh | 13 +- .../include/G4IrregularXrayTRmodel.hh | 49 + .../include/G4PlateIrrGasXrayTRmodel.hh | 47 + .../include/G4RegularXrayTRmodel.hh | 47 + .../include/G4VFastSimulationModel.hh | 4 +- .../include/G4VXrayTRmodel.hh | 144 + .../src/G4FastSimulationManager.cc | 105 +- .../src/G4FastSimulationManagerProcess.cc | 4 +- .../src/G4FastSimulationMessenger.cc | 4 +- .../parameterisation/src/G4FastStep.cc | 5 +- .../parameterisation/src/G4FastTrack.cc | 5 +- .../parameterisation/src/G4FoamXrayTRmodel.cc | 101 + .../src/G4GamDistrXrayTRmodel.cc | 108 + .../src/G4GlobalFastSimulationManager.cc | 46 +- .../src/G4IrregularXrayTRmodel.cc | 229 + .../src/G4PlateIrrGasXrayTRmodel.cc | 112 + .../src/G4RegularXrayTRmodel.cc | 118 + .../src/G4VFastSimulationModel.cc | 5 +- .../parameterisation/src/G4VXrayTRmodel.cc | 812 + .../include/G4MuNuclearInteraction.hh | 6 +- .../include/G4MuNuclearInteraction.icc | 4 +- .../src/G4MuNuclearInteraction.cc | 19 +- source/processes/transportation/History | 17 +- .../include/G4Transportation.hh | 4 +- .../include/G4Transportation.icc | 4 +- .../include/G4UserSpecialCuts.hh | 4 +- .../transportation/src/G4Transportation.cc | 24 +- .../transportation/src/G4UserSpecialCuts.cc | 4 +- source/readout/include/G4DCtable.hh | 2 +- source/readout/include/G4DMmessenger.hh | 2 +- source/readout/include/G4DigiManager.hh | 2 +- source/readout/include/G4VDigitizerModule.hh | 2 +- source/readout/src/G4DCtable.cc | 2 +- source/readout/src/G4DMmessenger.cc | 2 +- source/readout/src/G4DigiManager.cc | 2 +- source/readout/src/G4VDigitizerModule.cc | 2 +- source/run/include/G4Run.hh | 2 +- source/run/include/G4RunManager.hh | 2 +- source/run/include/G4RunMessenger.hh | 2 +- .../run/include/G4UserPhysicsListMessenger.hh | 2 +- source/run/include/G4UserRunAction.hh | 2 +- source/run/include/G4VPersistencyManager.hh | 2 +- .../include/G4VUserDetectorConstruction.hh | 2 +- source/run/include/G4VUserPhysicsList.hh | 2 +- .../include/G4VUserPrimaryGeneratorAction.hh | 2 +- source/run/src/G4Run.cc | 2 +- source/run/src/G4RunManager.cc | 9 +- source/run/src/G4RunMessenger.cc | 2 +- source/run/src/G4UserPhysicsListMessenger.cc | 2 +- source/run/src/G4UserRunAction.cc | 2 +- source/run/src/G4VPersistencyManager.cc | 2 +- source/run/src/G4VUserDetectorConstruction.cc | 2 +- source/run/src/G4VUserPhysicsList.cc | 2 +- .../run/src/G4VUserPrimaryGeneratorAction.cc | 2 +- source/track/GNUmakefile | 3 +- source/track/History | 26 +- source/track/include/G4EvtBiasMechanism.hh | 2 +- source/track/include/G4ForceCondition.hh | 2 +- source/track/include/G4GPILSelection.hh | 2 +- source/track/include/G4Mars5GeVMechanism.hh | 2 +- source/track/include/G4ParticleChange.hh | 5 +- source/track/include/G4ParticleChange.icc | 5 +- .../track/include/G4ParticleChangeForDecay.hh | 2 +- .../track/include/G4ParticleChangeForLoss.hh | 2 +- .../track/include/G4ParticleChangeForMSC.icc | 2 +- .../include/G4ParticleChangeForRadDecay.hh | 89 + .../include/G4ParticleChangeForTransport.hh | 28 +- .../include/G4ParticleChangeForTransport.icc | 24 +- source/track/include/G4Step.hh | 2 +- source/track/include/G4Step.icc | 7 +- source/track/include/G4StepPoint.hh | 182 +- source/track/include/G4StepPoint.icc | 158 + source/track/include/G4StepStatus.hh | 2 +- source/track/include/G4SteppingControl.hh | 2 +- source/track/include/G4Track.hh | 29 +- source/track/include/G4Track.icc | 32 +- source/track/include/G4TrackFastVector.hh | 2 +- source/track/include/G4TrackStatus.hh | 2 +- source/track/include/G4VEvtBiasMechanism.hh | 2 +- source/track/include/G4VParticleChange.hh | 2 +- source/track/include/G4VParticleChange.icc | 8 +- .../track/include/G4VUserTrackInformation.hh | 51 + source/track/src/G4EvtBiasMechanism.cc | 2 +- source/track/src/G4Mars5GeVMechanism.cc | 2 +- source/track/src/G4ParticleChange.cc | 5 +- source/track/src/G4ParticleChangeForDecay.cc | 5 +- source/track/src/G4ParticleChangeForLoss.cc | 5 +- source/track/src/G4ParticleChangeForMSC.cc | 5 +- .../track/src/G4ParticleChangeForTransport.cc | 11 +- source/track/src/G4Step.cc | 2 +- source/track/src/G4StepPoint.cc | 62 +- source/track/src/G4Track.cc | 9 +- source/track/src/G4VEvtBiasMechanism.cc | 2 +- source/track/src/G4VParticleChange.cc | 5 +- source/tracking/History | 11 +- source/tracking/include/G4SteppingManager.hh | 24 +- source/tracking/include/G4SteppingManager.icc | 2 +- source/tracking/include/G4SteppingVerbose.hh | 2 +- source/tracking/include/G4TrackVector.hh | 2 +- source/tracking/include/G4TrackingManager.hh | 13 +- .../tracking/include/G4TrackingMessenger.hh | 2 +- source/tracking/include/G4Trajectory.hh | 2 +- source/tracking/include/G4TrajectoryPoint.hh | 2 +- .../tracking/include/G4UserSteppingAction.hh | 2 +- .../tracking/include/G4UserTrackingAction.hh | 2 +- source/tracking/include/G4VSteppingVerbose.hh | 8 +- source/tracking/include/G4VTrajectory.hh | 2 +- source/tracking/include/G4VTrajectoryPoint.hh | 2 +- source/tracking/src/G4SteppingManager.cc | 10 +- source/tracking/src/G4SteppingVerbose.cc | 2 +- source/tracking/src/G4TrackingManager.cc | 2 +- source/tracking/src/G4TrackingMessenger.cc | 2 +- source/tracking/src/G4Trajectory.cc | 2 +- source/tracking/src/G4TrajectoryPoint.cc | 2 +- source/tracking/src/G4UserSteppingAction.cc | 2 +- source/tracking/src/G4UserTrackingAction.cc | 2 +- source/tracking/src/G4VSteppingVerbose.cc | 6 +- .../visualization/FukuiRenderer/GNUmakefile | 3 +- source/visualization/FukuiRenderer/History | 15 + .../FukuiRenderer/include/G4DAWNFILE.hh | 2 +- .../include/G4DAWNFILESceneHandler.hh | 2 +- .../FukuiRenderer/include/G4DAWNFILEViewer.hh | 2 +- .../FukuiRenderer/include/G4FRClientServer.hh | 6 +- .../FukuiRenderer/include/G4FRConst.hh | 2 +- .../FukuiRenderer/include/G4FRFeatures.hh | 2 +- .../FukuiRenderer/include/G4FRSocketConfig.hh | 2 +- .../FukuiRenderer/include/G4FRSocketMacro.hh | 2 +- .../FukuiRenderer/include/G4FRofstream.hh | 2 +- .../FukuiRenderer/include/G4FukuiRenderer.hh | 2 +- .../include/G4FukuiRendererSceneHandler.hh | 2 +- .../include/G4FukuiRendererViewer.hh | 2 +- .../FukuiRenderer/src/G4DAWNFILE.cc | 2 +- .../src/G4DAWNFILESceneHandler.cc | 68 +- .../FukuiRenderer/src/G4DAWNFILEViewer.cc | 12 +- .../FukuiRenderer/src/G4FRClientServer.cc | 2 +- .../FukuiRenderer/src/G4FRSceneFunc.icc | 2 +- .../FukuiRenderer/src/G4FukuiRenderer.cc | 2 +- .../src/G4FukuiRendererSceneHandler.cc | 9 +- .../src/G4FukuiRendererViewer.cc | 8 +- source/visualization/GNUmakefile | 7 +- source/visualization/History | 166 +- source/visualization/OPACS/GNUmakefile | 3 +- .../OPACS/include/G4GoSceneHandler.hh | 2 +- source/visualization/OPACS/include/G4Wo.hh | 2 +- .../visualization/OPACS/include/G4WoViewer.hh | 2 +- source/visualization/OPACS/include/G4Xo.hh | 2 +- .../visualization/OPACS/include/G4XoViewer.hh | 2 +- .../OPACS/src/G4GoSceneHandler.cc | 125 +- source/visualization/OPACS/src/G4Wo.cc | 2 +- source/visualization/OPACS/src/G4WoViewer.cc | 15 +- source/visualization/OPACS/src/G4Xo.cc | 2 +- source/visualization/OPACS/src/G4XoViewer.cc | 16 +- source/visualization/OpenGL/GNUmakefile | 3 +- source/visualization/OpenGL/History | 34 + .../include/G4OpenGLImmediateSceneHandler.hh | 2 +- .../OpenGL/include/G4OpenGLImmediateViewer.hh | 2 +- .../OpenGL/include/G4OpenGLImmediateWin32.hh | 2 +- .../include/G4OpenGLImmediateWin32Viewer.hh | 2 +- .../OpenGL/include/G4OpenGLImmediateX.hh | 2 +- .../include/G4OpenGLImmediateXViewer.hh | 2 +- .../OpenGL/include/G4OpenGLImmediateXm.hh | 2 +- .../include/G4OpenGLImmediateXmViewer.hh | 2 +- .../OpenGL/include/G4OpenGLSceneHandler.hh | 2 +- .../OpenGL/include/G4OpenGLSceneHandler.icc | 2 +- .../include/G4OpenGLStoredSceneHandler.hh | 2 +- .../OpenGL/include/G4OpenGLStoredViewer.hh | 2 +- .../OpenGL/include/G4OpenGLStoredWin32.hh | 2 +- .../include/G4OpenGLStoredWin32Viewer.hh | 2 +- .../OpenGL/include/G4OpenGLStoredX.hh | 2 +- .../OpenGL/include/G4OpenGLStoredXViewer.hh | 2 +- .../OpenGL/include/G4OpenGLStoredXm.hh | 2 +- .../OpenGL/include/G4OpenGLStoredXmViewer.hh | 2 +- .../OpenGL/include/G4OpenGLTransform3D.hh | 2 +- .../OpenGL/include/G4OpenGLViewer.hh | 2 +- .../OpenGL/include/G4OpenGLWin32Viewer.hh | 2 +- .../OpenGL/include/G4OpenGLXViewer.hh | 8 +- .../OpenGL/include/G4OpenGLXmBox.hh | 2 +- .../include/G4OpenGLXmConvenienceRoutines.hh | 2 +- .../include/G4OpenGLXmFourArrowButtons.hh | 2 +- .../OpenGL/include/G4OpenGLXmFramedBox.hh | 2 +- .../include/G4OpenGLXmMainMenubarCallbacks.hh | 2 +- .../include/G4OpenGLXmPanningCallbacks.hh | 2 +- .../OpenGL/include/G4OpenGLXmPushButton.hh | 2 +- .../OpenGL/include/G4OpenGLXmRadioButton.hh | 2 +- .../OpenGL/include/G4OpenGLXmResources.hh | 2 +- .../include/G4OpenGLXmRotationCallbacks.hh | 2 +- .../OpenGL/include/G4OpenGLXmSeparator.hh | 2 +- .../OpenGL/include/G4OpenGLXmSliderBar.hh | 2 +- .../include/G4OpenGLXmStyleCallbacks.hh | 2 +- .../OpenGL/include/G4OpenGLXmTextField.hh | 2 +- .../OpenGL/include/G4OpenGLXmTopLevelShell.hh | 2 +- .../include/G4OpenGLXmVWidgetComponent.hh | 2 +- .../include/G4OpenGLXmVWidgetContainer.hh | 2 +- .../OpenGL/include/G4OpenGLXmVWidgetObject.hh | 2 +- .../OpenGL/include/G4OpenGLXmVWidgetShell.hh | 2 +- .../OpenGL/include/G4OpenGLXmViewer.hh | 2 +- .../G4OpenGLXmWindowHandlingCallbacks.hh | 2 +- .../src/G4OpenGLImmediateSceneHandler.cc | 2 +- .../OpenGL/src/G4OpenGLImmediateViewer.cc | 2 +- .../OpenGL/src/G4OpenGLImmediateWin32.cc | 2 +- .../src/G4OpenGLImmediateWin32Viewer.cc | 2 +- .../OpenGL/src/G4OpenGLImmediateX.cc | 2 +- .../OpenGL/src/G4OpenGLImmediateXViewer.cc | 8 +- .../OpenGL/src/G4OpenGLImmediateXm.cc | 2 +- .../OpenGL/src/G4OpenGLImmediateXmViewer.cc | 8 +- .../OpenGL/src/G4OpenGLSceneHandler.cc | 8 +- .../OpenGL/src/G4OpenGLStoredSceneHandler.cc | 6 +- .../OpenGL/src/G4OpenGLStoredViewer.cc | 2 +- .../OpenGL/src/G4OpenGLStoredWin32.cc | 2 +- .../OpenGL/src/G4OpenGLStoredWin32Viewer.cc | 2 +- .../OpenGL/src/G4OpenGLStoredX.cc | 2 +- .../OpenGL/src/G4OpenGLStoredXViewer.cc | 8 +- .../OpenGL/src/G4OpenGLStoredXm.cc | 2 +- .../OpenGL/src/G4OpenGLStoredXmViewer.cc | 9 +- .../OpenGL/src/G4OpenGLTransform3D.cc | 2 +- .../OpenGL/src/G4OpenGLViewer.cc | 34 +- .../OpenGL/src/G4OpenGLWin32Viewer.cc | 2 +- .../OpenGL/src/G4OpenGLXViewer.cc | 40 +- .../visualization/OpenGL/src/G4OpenGLXmBox.cc | 2 +- .../src/G4OpenGLXmConvenienceRoutines.cc | 2 +- .../OpenGL/src/G4OpenGLXmFourArrowButtons.cc | 2 +- .../OpenGL/src/G4OpenGLXmFramedBox.cc | 2 +- .../src/G4OpenGLXmMainMenubarCallbacks.cc | 24 +- .../OpenGL/src/G4OpenGLXmPanningCallbacks.cc | 18 +- .../OpenGL/src/G4OpenGLXmPushButton.cc | 2 +- .../OpenGL/src/G4OpenGLXmRadioButton.cc | 2 +- .../OpenGL/src/G4OpenGLXmRotationCallbacks.cc | 7 +- .../OpenGL/src/G4OpenGLXmSeparator.cc | 2 +- .../OpenGL/src/G4OpenGLXmSliderBar.cc | 2 +- .../OpenGL/src/G4OpenGLXmStyleCallbacks.cc | 2 +- .../OpenGL/src/G4OpenGLXmTextField.cc | 2 +- .../OpenGL/src/G4OpenGLXmTopLevelShell.cc | 2 +- .../OpenGL/src/G4OpenGLXmVWidgetComponent.cc | 2 +- .../OpenGL/src/G4OpenGLXmVWidgetContainer.cc | 2 +- .../OpenGL/src/G4OpenGLXmVWidgetObject.cc | 2 +- .../OpenGL/src/G4OpenGLXmVWidgetShell.cc | 2 +- .../OpenGL/src/G4OpenGLXmViewer.cc | 33 +- .../src/G4OpenGLXmWindowHandlingCallbacks.cc | 2 +- source/visualization/OpenInventor/GNUmakefile | 3 +- .../OpenInventor/include/G4OpenInventor.hh | 2 +- .../include/G4OpenInventorSceneHandler.hh | 2 +- .../include/G4OpenInventorSceneHandler.icc | 2 +- .../include/G4OpenInventorTransform3D.hh | 2 +- .../include/G4OpenInventorViewer.hh | 2 +- .../include/G4OpenInventorWin32.hh | 2 +- .../OpenInventor/include/G4OpenInventorX.hh | 2 +- .../OpenInventor/src/G4OpenInventor.cc | 2 +- .../src/G4OpenInventorSceneHandler.cc | 61 +- .../src/G4OpenInventorTransform3D.cc | 2 +- .../OpenInventor/src/G4OpenInventorViewer.cc | 2 +- .../OpenInventor/src/G4OpenInventorWin32.cc | 2 +- .../OpenInventor/src/G4OpenInventorX.cc | 2 +- source/visualization/README | 167 +- source/visualization/RayTracer/GNUmakefile | 42 + source/visualization/RayTracer/History | 65 + source/visualization/RayTracer/README | 82 + .../RayTracer/include/G4RTJpeg.hh | 191 + .../RayTracer/include/G4RTJpegCoder.hh | 80 + .../RayTracer/include/G4RTJpegCoderTables.hh | 316 + .../RayTracer/include/G4RTJpegMaker.hh | 41 + .../RayTracer/include/G4RTMessenger.hh | 64 + .../RayTracer/include/G4RTOutBitStream.hh | 53 + .../RayTracer/include/G4RTSteppingAction.hh | 52 + .../RayTracer/include/G4RTTrackingAction.hh | 56 + .../RayTracer/include/G4RayShooter.hh | 62 + .../RayTracer/include/G4RayTracer.hh | 165 + .../RayTracer/include/G4RayTracerFeatures.hh | 28 + .../include/G4RayTracerSceneHandler.hh | 53 + .../RayTracer/include/G4RayTracerViewer.hh | 29 + .../RayTracer/include/G4RayTrajectory.hh | 83 + .../RayTracer/include/G4RayTrajectoryPoint.hh | 77 + .../RayTracer/include/G4VFigureFileMaker.hh | 38 + .../RayTracer/src/G4RTJpegCoder.cc | 363 + .../RayTracer/src/G4RTJpegMaker.cc | 54 + .../RayTracer/src/G4RTMessenger.cc | 177 + .../RayTracer/src/G4RTOutBitStream.cc | 145 + .../RayTracer/src/G4RTSteppingAction.cc | 63 + .../RayTracer/src/G4RTTrackingAction.cc | 37 + .../RayTracer/src/G4RayShooter.cc | 60 + .../RayTracer/src/G4RayTracer.cc | 358 + .../RayTracer/src/G4RayTracerSceneHandler.cc | 31 + .../RayTracer/src/G4RayTracerViewer.cc | 74 + .../RayTracer/src/G4RayTrajectory.cc | 108 + .../RayTracer/src/G4RayTrajectoryPoint.cc | 28 + source/visualization/VRML/GNUmakefile | 3 +- source/visualization/VRML/History | 3 + .../visualization/VRML/g4vrmlview/g4mini.java | 2 +- .../VRML/g4vrmlview/g4vrmlview.java | 2 +- source/visualization/VRML/include/FRClient.h | 2 +- .../visualization/VRML/include/G4FRClient.hh | 2 +- source/visualization/VRML/include/G4VRML1.hh | 2 +- .../visualization/VRML/include/G4VRML1File.hh | 2 +- .../VRML/include/G4VRML1FileSceneHandler.hh | 2 +- .../VRML/include/G4VRML1FileViewer.hh | 2 +- .../VRML/include/G4VRML1SceneHandler.hh | 2 +- .../VRML/include/G4VRML1Viewer.hh | 2 +- source/visualization/VRML/include/G4VRML2.hh | 2 +- .../visualization/VRML/include/G4VRML2File.hh | 2 +- .../VRML/include/G4VRML2FileSceneHandler.hh | 2 +- .../VRML/include/G4VRML2FileViewer.hh | 2 +- .../VRML/include/G4VRML2SceneHandler.hh | 2 +- .../VRML/include/G4VRML2Viewer.hh | 2 +- .../VRML/include/G4VRMLNetConfig.hh | 2 +- source/visualization/VRML/src/FRClient.cc | 2 +- source/visualization/VRML/src/G4FRClient.cc | 2 +- source/visualization/VRML/src/G4VRML1.cc | 2 +- source/visualization/VRML/src/G4VRML1File.cc | 2 +- .../VRML/src/G4VRML1FileSceneHandler.cc | 10 +- .../VRML/src/G4VRML1FileViewer.cc | 2 +- .../VRML/src/G4VRML1SceneHandler.cc | 10 +- .../VRML/src/G4VRML1SceneHandlerFunc.icc | 2 +- .../visualization/VRML/src/G4VRML1Viewer.cc | 2 +- source/visualization/VRML/src/G4VRML2.cc | 2 +- source/visualization/VRML/src/G4VRML2File.cc | 2 +- .../VRML/src/G4VRML2FileSceneHandler.cc | 7 +- .../VRML/src/G4VRML2FileViewer.cc | 8 +- .../VRML/src/G4VRML2SceneHandler.cc | 7 +- .../VRML/src/G4VRML2SceneHandlerFunc.icc | 2 +- .../visualization/VRML/src/G4VRML2Viewer.cc | 8 +- source/visualization/management/GNUmakefile | 3 +- .../include/G4GraphicsSystemList.hh | 2 +- .../management/include/G4Scene.hh | 2 +- .../management/include/G4Scene.icc | 7 +- .../management/include/G4SceneHandlerList.hh | 2 +- .../management/include/G4SceneList.hh | 2 +- .../management/include/G4VGraphicsSystem.hh | 2 +- .../management/include/G4VGraphicsSystem.icc | 2 +- .../management/include/G4VSceneHandler.hh | 39 +- .../management/include/G4VSceneHandler.icc | 8 +- .../management/include/G4VViewer.hh | 8 +- .../management/include/G4VViewer.icc | 10 +- .../management/include/G4VVisCommand.hh | 2 +- .../management/include/G4VVisCommand.icc | 2 +- .../management/include/G4ViewParameters.hh | 54 +- .../management/include/G4ViewParameters.icc | 2 +- .../management/include/G4ViewerList.hh | 2 +- .../include/G4VisCommandTemplates.hh | 2 +- .../include/G4VisCommandTemplates.icc | 2 +- .../management/include/G4VisCommandsCamera.hh | 2 +- .../include/G4VisCommandsCameraMessengers.hh | 2 +- .../management/include/G4VisCommandsClear.hh | 2 +- .../include/G4VisCommandsCompound.hh | 48 + .../management/include/G4VisCommandsCopy.hh | 2 +- .../include/G4VisCommandsCreateScene.hh | 2 +- .../include/G4VisCommandsCreateView.hh | 2 +- .../management/include/G4VisCommandsDelete.hh | 2 +- .../management/include/G4VisCommandsDraw.hh | 2 +- .../management/include/G4VisCommandsLights.hh | 2 +- .../management/include/G4VisCommandsPrint.hh | 2 +- .../include/G4VisCommandsRefresh.hh | 2 +- .../management/include/G4VisCommandsScene.hh | 2 +- .../include/G4VisCommandsSceneAdd.hh | 42 +- .../include/G4VisCommandsSceneHandler.hh | 2 +- .../include/G4VisCommandsSceneInclude.hh | 2 +- .../management/include/G4VisCommandsSet.hh | 2 +- .../management/include/G4VisCommandsShow.hh | 2 +- .../management/include/G4VisCommandsViewer.hh | 22 +- .../include/G4VisCommandsViewerSet.hh | 41 + .../include/G4VisFeaturesOfDAWNFILE.hh | 2 +- .../include/G4VisFeaturesOfFukuiRenderer.hh | 2 +- .../include/G4VisFeaturesOfOpenGL.hh | 2 +- .../include/G4VisFeaturesOfOpenInventor.hh | 2 +- .../management/include/G4VisManMessenger.hh | 2 +- .../management/include/G4VisManager.hh | 24 +- .../management/include/G4VisManager.icc | 2 +- .../management/include/G4VisStateDependent.hh | 2 +- .../include/G4VisToOldVisCommands.hh | 2 +- .../management/include/MyVisManager.cc | 12 +- .../management/include/MyVisManager.hh | 2 +- .../visualization/management/src/G4Scene.cc | 2 +- .../management/src/G4VGraphicsSystem.cc | 2 +- .../management/src/G4VSceneHandler.cc | 23 +- .../visualization/management/src/G4VViewer.cc | 21 +- .../management/src/G4VVisCommand.cc | 2 +- .../management/src/G4ViewParameters.cc | 13 +- .../management/src/G4VisCommandTemplates.cc | 2 +- .../management/src/G4VisCommandsCamera.cc | 12 +- .../src/G4VisCommandsCameraMessengers.cc | 2 +- .../management/src/G4VisCommandsCompound.cc | 122 + .../management/src/G4VisCommandsScene.cc | 49 +- .../management/src/G4VisCommandsSceneAdd.cc | 470 +- .../src/G4VisCommandsSceneHandler.cc | 51 +- .../src/G4VisCommandsSceneInclude.cc | 18 +- .../management/src/G4VisCommandsViewer.cc | 270 +- .../management/src/G4VisCommandsViewerSet.cc | 314 + .../management/src/G4VisFeaturesOfDAWNFILE.cc | 2 +- .../src/G4VisFeaturesOfFukuiRenderer.cc | 2 +- .../management/src/G4VisFeaturesOfOpenGL.cc | 2 +- .../src/G4VisFeaturesOfOpenInventor.cc | 2 +- .../management/src/G4VisManMessCamera.cc | 2 +- .../management/src/G4VisManMessCreateView.cc | 2 +- .../management/src/G4VisManMessDraw.cc | 2 +- .../management/src/G4VisManMessExpert.cc | 2 +- .../management/src/G4VisManMessLights.cc | 2 +- .../management/src/G4VisManMessSet.cc | 6 +- .../management/src/G4VisManMessenger.cc | 2 +- .../management/src/G4VisManager.cc | 101 +- .../src/G4VisManagerRegisterMessengers.cc | 423 +- .../management/src/G4VisStateDependent.cc | 2 +- .../management/src/G4VisToOldVisCommands.cc | 2 +- source/visualization/modeling/GNUmakefile | 3 +- source/visualization/modeling/History | 23 +- .../modeling/include/G4BoundingSphereScene.hh | 8 +- .../include/G4FlavoredParallelWorldModel.hh | 2 +- .../modeling/include/G4HitsModel.hh | 2 +- .../modeling/include/G4HitsModel.icc | 2 +- .../modeling/include/G4LogicalVolumeModel.hh | 12 +- .../modeling/include/G4ModelingParameters.hh | 2 +- .../modeling/include/G4ModelingParameters.icc | 2 +- .../modeling/include/G4NullModel.hh | 2 +- .../modeling/include/G4PhysicalVolumeModel.hh | 12 +- .../include/G4PhysicalVolumeSearchScene.hh | 6 +- .../include/G4PhysicalVolumeSearchScene.icc | 2 +- .../modeling/include/G4TrajectoriesModel.hh | 2 +- .../modeling/include/G4TrajectoriesModel.icc | 2 +- .../modeling/include/G4VModel.hh | 2 +- .../modeling/include/G4VModel.icc | 2 +- .../modeling/include/G4VTreeGraphicsScene.hh | 80 + .../modeling/include/G4VTreeGraphicsScene.icc | 21 + .../modeling/src/G4BoundingSphereScene.cc | 11 +- .../src/G4FlavoredParallelWorldModel.cc | 2 +- .../visualization/modeling/src/G4HitsModel.cc | 2 +- .../modeling/src/G4LogicalVolumeModel.cc | 34 +- .../modeling/src/G4ModelingParameters.cc | 2 +- .../visualization/modeling/src/G4NullModel.cc | 2 +- .../modeling/src/G4PhysicalVolumeModel.cc | 58 +- .../src/G4PhysicalVolumeSearchScene.cc | 2 +- .../modeling/src/G4TrajectoriesModel.cc | 2 +- source/visualization/modeling/src/G4VModel.cc | 2 +- .../modeling/src/G4VTreeGraphicsScene.cc | 43 + 3106 files changed, 171117 insertions(+), 90550 deletions(-) create mode 100644 ReleaseNotes/ReleaseNotes4.2.0.txt create mode 100644 config/sys/AIX-xlC.gmk create mode 100644 config/sys/DEC-cxx.gmk create mode 100644 config/sys/HP-aCC.gmk create mode 100644 config/sys/Linux-g++.gmk create mode 100644 config/sys/SGI-CC.gmk create mode 100644 config/sys/SUN-CC.gmk create mode 100644 config/sys/SUN-CC5.gmk create mode 100644 config/sys/WIN32-VC.gmk create mode 100644 examples/extended/electromagnetic/TestEm1/geant3/include/calor.inc create mode 100644 examples/extended/electromagnetic/TestEm1/geant3/include/celoss.inc create mode 100644 examples/extended/electromagnetic/TestEm1/geant3/src/gtgama.F create mode 100644 examples/extended/electromagnetic/TestEm1/geant3/src/gukine.F create mode 100644 examples/extended/electromagnetic/TestEm1/geant3/src/guout.F create mode 100644 examples/extended/electromagnetic/TestEm1/geant3/src/gustep.F create mode 100644 examples/extended/electromagnetic/TestEm1/geant3/src/gutrak.F create mode 100644 examples/extended/electromagnetic/TestEm1/geant3/src/gutrev.F create mode 100644 examples/extended/electromagnetic/TestEm1/geant3/src/main.F create mode 100644 examples/extended/electromagnetic/TestEm1/geant3/src/ugeom.F create mode 100644 examples/extended/electromagnetic/TestEm1/geant3/src/uginit.F create mode 100644 examples/extended/electromagnetic/TestEm1/geant3/src/uglast.F create mode 100644 examples/extended/electromagnetic/TestEm1/geant3/src/uhinit.F delete mode 100644 examples/extended/electromagnetic/TestEm1/geant3/testem1.cra create mode 100644 examples/extended/electromagnetic/TestEm2/History create mode 100644 examples/extended/electromagnetic/TestEm2/geant3/include/celoss.inc create mode 100644 examples/extended/electromagnetic/TestEm2/geant3/include/history.inc create mode 100644 examples/extended/electromagnetic/TestEm2/geant3/include/pvolum.inc create mode 100644 examples/extended/electromagnetic/TestEm2/geant3/src/gukine.F create mode 100644 examples/extended/electromagnetic/TestEm2/geant3/src/guout.F create mode 100644 examples/extended/electromagnetic/TestEm2/geant3/src/gustep.F create mode 100644 examples/extended/electromagnetic/TestEm2/geant3/src/gutrev.F create mode 100644 examples/extended/electromagnetic/TestEm2/geant3/src/main.F create mode 100644 examples/extended/electromagnetic/TestEm2/geant3/src/ugeom.F create mode 100644 examples/extended/electromagnetic/TestEm2/geant3/src/uginit.F create mode 100644 examples/extended/electromagnetic/TestEm2/geant3/src/uglast.F create mode 100644 examples/extended/electromagnetic/TestEm2/geant3/src/uhinit.F delete mode 100644 examples/extended/electromagnetic/TestEm2/geant3/testem2.cra rename examples/extended/electromagnetic/{TestEm6/include/Em6EventActionMessenger.hh => TestEm2/include/Em2PhysicsListMessenger.hh} (55%) create mode 100644 examples/extended/electromagnetic/TestEm2/src/Em2PhysicsListMessenger.cc rename examples/extended/electromagnetic/{TestEm6 => TestEm3}/History (69%) create mode 100644 examples/extended/electromagnetic/TestEm3/geant3/include/calor.inc create mode 100644 examples/extended/electromagnetic/TestEm3/geant3/include/celoss.inc create mode 100644 examples/extended/electromagnetic/TestEm3/geant3/src/gukine.F create mode 100644 examples/extended/electromagnetic/TestEm3/geant3/src/guout.F create mode 100644 examples/extended/electromagnetic/TestEm3/geant3/src/gustep.F create mode 100644 examples/extended/electromagnetic/TestEm3/geant3/src/gutrev.F create mode 100644 examples/extended/electromagnetic/TestEm3/geant3/src/main.F create mode 100644 examples/extended/electromagnetic/TestEm3/geant3/src/ugeom.F create mode 100644 examples/extended/electromagnetic/TestEm3/geant3/src/uginit.F create mode 100644 examples/extended/electromagnetic/TestEm3/geant3/src/uglast.F create mode 100644 examples/extended/electromagnetic/TestEm3/geant3/src/uhinit.F delete mode 100644 examples/extended/electromagnetic/TestEm3/geant3/testem3.cra rename source/g3tog4/test/include/G3toG4EventActionMessenger.hh => examples/extended/electromagnetic/TestEm3/include/Em3PhysicsListMessenger.hh (54%) create mode 100644 examples/extended/electromagnetic/TestEm3/src/Em3PhysicsListMessenger.cc create mode 100644 examples/extended/electromagnetic/TestEm4/geant3/README create mode 100644 examples/extended/electromagnetic/TestEm4/geant3/include/celoss.inc create mode 100644 examples/extended/electromagnetic/TestEm4/geant3/src/gukine.F create mode 100644 examples/extended/electromagnetic/TestEm4/geant3/src/guout.F create mode 100644 examples/extended/electromagnetic/TestEm4/geant3/src/gustep.F create mode 100644 examples/extended/electromagnetic/TestEm4/geant3/src/gutrev.F create mode 100644 examples/extended/electromagnetic/TestEm4/geant3/src/main.F create mode 100644 examples/extended/electromagnetic/TestEm4/geant3/src/ugeom.F create mode 100644 examples/extended/electromagnetic/TestEm4/geant3/src/uginit.F create mode 100644 examples/extended/electromagnetic/TestEm4/geant3/src/uglast.F create mode 100644 examples/extended/electromagnetic/TestEm4/geant3/src/uhinit.F delete mode 100644 examples/extended/electromagnetic/TestEm4/geant3/testem4.cra create mode 100644 examples/extended/electromagnetic/TestEm5/geant3/include/edepo.inc create mode 100644 examples/extended/electromagnetic/TestEm5/geant3/run55.dat create mode 100644 examples/extended/electromagnetic/TestEm5/geant3/src/grun.F create mode 100644 examples/extended/electromagnetic/TestEm5/geant3/src/gukine.F create mode 100644 examples/extended/electromagnetic/TestEm5/geant3/src/guout.F create mode 100644 examples/extended/electromagnetic/TestEm5/geant3/src/gustep.F create mode 100644 examples/extended/electromagnetic/TestEm5/geant3/src/main.F create mode 100644 examples/extended/electromagnetic/TestEm5/geant3/src/ugeom.F create mode 100644 examples/extended/electromagnetic/TestEm5/geant3/src/uginit.F create mode 100644 examples/extended/electromagnetic/TestEm5/geant3/src/uglast.F create mode 100644 examples/extended/electromagnetic/TestEm5/geant3/src/uhinit.F delete mode 100644 examples/extended/electromagnetic/TestEm5/geant3/testem5.cra create mode 100644 examples/extended/electromagnetic/TestEm5/run55.mac delete mode 100644 examples/extended/electromagnetic/TestEm6/GNUmakefile delete mode 100644 examples/extended/electromagnetic/TestEm6/TestEm6.cc delete mode 100644 examples/extended/electromagnetic/TestEm6/TestEm6.in delete mode 100644 examples/extended/electromagnetic/TestEm6/TestEm6.out delete mode 100644 examples/extended/electromagnetic/TestEm6/batch.mac delete mode 100644 examples/extended/electromagnetic/TestEm6/include/Em6CalorHit.hh delete mode 100644 examples/extended/electromagnetic/TestEm6/include/Em6CalorimeterSD.hh delete mode 100644 examples/extended/electromagnetic/TestEm6/include/Em6DetectorConstruction.hh delete mode 100644 examples/extended/electromagnetic/TestEm6/include/Em6DetectorMessenger.hh delete mode 100644 examples/extended/electromagnetic/TestEm6/include/Em6EventAction.hh delete mode 100644 examples/extended/electromagnetic/TestEm6/include/Em6PhysicsList.hh delete mode 100644 examples/extended/electromagnetic/TestEm6/include/Em6PhysicsListMessenger.hh delete mode 100644 examples/extended/electromagnetic/TestEm6/include/Em6PrimaryGeneratorAction.hh delete mode 100644 examples/extended/electromagnetic/TestEm6/include/Em6RunAction.hh delete mode 100644 examples/extended/electromagnetic/TestEm6/include/Em6RunMessenger.hh delete mode 100644 examples/extended/electromagnetic/TestEm6/include/Em6StepCut.hh delete mode 100644 examples/extended/electromagnetic/TestEm6/include/Em6SteppingAction.hh delete mode 100644 examples/extended/electromagnetic/TestEm6/include/Em6SteppingMessenger.hh delete mode 100644 examples/extended/electromagnetic/TestEm6/include/Em6SteppingVerbose.hh delete mode 100644 examples/extended/electromagnetic/TestEm6/include/Em6VisManager.hh delete mode 100644 examples/extended/electromagnetic/TestEm6/include/G4IonAr40.hh delete mode 100644 examples/extended/electromagnetic/TestEm6/include/G4IonC12.hh delete mode 100644 examples/extended/electromagnetic/TestEm6/include/G4IonFe56.hh delete mode 100644 examples/extended/electromagnetic/TestEm6/src/Em6CalorHit.cc delete mode 100644 examples/extended/electromagnetic/TestEm6/src/Em6DetectorConstruction.cc delete mode 100644 examples/extended/electromagnetic/TestEm6/src/Em6DetectorMessenger.cc delete mode 100644 examples/extended/electromagnetic/TestEm6/src/Em6DetectorSD.cc delete mode 100644 examples/extended/electromagnetic/TestEm6/src/Em6EventAction.cc delete mode 100644 examples/extended/electromagnetic/TestEm6/src/Em6EventActionMessenger.cc delete mode 100644 examples/extended/electromagnetic/TestEm6/src/Em6PhysicsList.cc delete mode 100644 examples/extended/electromagnetic/TestEm6/src/Em6PhysicsListMessenger.cc delete mode 100644 examples/extended/electromagnetic/TestEm6/src/Em6PrimaryGeneratorAction.cc delete mode 100644 examples/extended/electromagnetic/TestEm6/src/Em6RunAction.cc delete mode 100644 examples/extended/electromagnetic/TestEm6/src/Em6RunMessenger.cc delete mode 100644 examples/extended/electromagnetic/TestEm6/src/Em6StepCut.cc delete mode 100644 examples/extended/electromagnetic/TestEm6/src/Em6SteppingAction.cc delete mode 100644 examples/extended/electromagnetic/TestEm6/src/Em6SteppingMessenger.cc delete mode 100644 examples/extended/electromagnetic/TestEm6/src/Em6SteppingVerbose.cc delete mode 100644 examples/extended/electromagnetic/TestEm6/src/Em6VisManager.cc delete mode 100644 examples/extended/electromagnetic/TestEm6/src/G4IonAr40.cc delete mode 100644 examples/extended/electromagnetic/TestEm6/src/G4IonC12.cc delete mode 100644 examples/extended/electromagnetic/TestEm6/src/G4IonFe56.cc create mode 100644 examples/extended/electromagnetic/TestEm8/TestEm8.in create mode 100644 examples/extended/electromagnetic/TestEm8/TestEm8.large_N.in create mode 100644 examples/novice/N03/exN03Vis4.mac create mode 100644 examples/novice/N03/exN03Vis5.mac create mode 100644 examples/novice/N03/exN03Vis6.mac rename examples/novice/N03/{g4.xrm => g4Xt.xrm} (99%) create mode 100644 examples/novice/N03/gui.mac rename source/g3tog4/test/include/G3toG4VisManager.hh => examples/novice/N05/include/ExN05VisManager.hh (80%) rename source/g3tog4/test/src/G3toG4VisManager.cc => examples/novice/N05/src/ExN05VisManager.cc (87%) delete mode 100644 source/g3tog4/test/GNUmakefile delete mode 100644 source/g3tog4/test/README delete mode 100644 source/g3tog4/test/clGeometry.cc delete mode 100644 source/g3tog4/test/clGeometry.x delete mode 100644 source/g3tog4/test/cltog4.cc delete mode 100644 source/g3tog4/test/cltog4.x delete mode 100644 source/g3tog4/test/include/G3toG4DetectorConstruction.hh delete mode 100644 source/g3tog4/test/include/G3toG4EventAction.hh delete mode 100644 source/g3tog4/test/include/G3toG4PhysicsList.hh delete mode 100644 source/g3tog4/test/include/G3toG4PrimaryGeneratorAction.hh delete mode 100644 source/g3tog4/test/include/G3toG4RunAction.hh delete mode 100644 source/g3tog4/test/parity.dat delete mode 100644 source/g3tog4/test/src/G3toG4DetectorConstruction.cc delete mode 100644 source/g3tog4/test/src/G3toG4EventAction.cc delete mode 100644 source/g3tog4/test/src/G3toG4EventActionMessenger.cc delete mode 100644 source/g3tog4/test/src/G3toG4PhysicsList.cc delete mode 100644 source/g3tog4/test/src/G3toG4PrimaryGeneratorAction.cc delete mode 100644 source/g3tog4/test/src/G3toG4RunAction.cc delete mode 100644 source/g3tog4/test/svtwaf.dat delete mode 100644 source/g3tog4/test/testmodel.dat create mode 100644 source/geometry/magneticfield/include/G4ChordFinder.icc create mode 100644 source/geometry/magneticfield/include/G4FieldManager.icc create mode 100644 source/geometry/management/include/G4SmartVoxelHeader.icc create mode 100644 source/geometry/management/include/G4SmartVoxelNode.icc create mode 100644 source/geometry/management/include/G4SmartVoxelProxy.icc create mode 100644 source/geometry/management/include/G4VoxelLimits.icc delete mode 100644 source/geometry/solids/BREPS/ToDo.txt create mode 100644 source/geometry/solids/BREPS/include/G4BSplineSurfaceWithKnots.hh create mode 100644 source/geometry/solids/BREPS/src/G4BSplineSurfaceWithKnots.cc delete mode 100644 source/geometry/solids/CSG/include/G4Hype.hh delete mode 100644 source/geometry/solids/CSG/include/G4VCSGface.hh delete mode 100644 source/geometry/solids/CSG/src/G4Hype.cc create mode 100644 source/geometry/solids/STEP/History create mode 100644 source/geometry/solids/STEP/README delete mode 100644 source/geometry/solids/STEP/include/EntityInst.h delete mode 100644 source/geometry/solids/STEP/include/Enumeration.h delete mode 100644 source/geometry/solids/STEP/include/STEPentity.h delete mode 100644 source/geometry/solids/STEP/include/STEPselect.h create mode 100644 source/geometry/solids/STEP/include/Sdaiclasses.h create mode 100644 source/geometry/solids/STEP/include/Select.h create mode 100644 source/geometry/solids/STEP/include/complexSupport.h create mode 100644 source/geometry/solids/STEP/include/dictdefs.h create mode 100644 source/geometry/solids/STEP/include/scl_cf.h create mode 100644 source/geometry/solids/STEP/include/scl_char_str_list.h create mode 100644 source/geometry/solids/STEP/include/scl_osschema.h create mode 100644 source/geometry/solids/STEP/include/scldir.h create mode 100644 source/geometry/solids/STEP/include/sclprefixes.h create mode 100644 source/geometry/solids/STEP/include/sdaiApplication_instance.h rename source/geometry/solids/STEP/include/{dir.h => sdaiApplication_instance_set.h} (50%) create mode 100644 source/geometry/solids/STEP/include/sdaiDaObject.h create mode 100644 source/geometry/solids/STEP/include/sdaiEntity_extent.h create mode 100644 source/geometry/solids/STEP/include/sdaiEntity_extent_set.h create mode 100644 source/geometry/solids/STEP/include/sdaiEnum.h create mode 100644 source/geometry/solids/STEP/include/sdaiModel_contents.h create mode 100644 source/geometry/solids/STEP/include/sdaiModel_contents_list.h create mode 100644 source/geometry/solids/STEP/include/sdaiObject.h create mode 100644 source/geometry/solids/STEP/include/sdaiSelect.h create mode 100644 source/geometry/solids/STEP/include/sdaiSession_instance.h rename source/geometry/solids/STEP/include/{STEPstring.h => sdaiString.h} (55%) create mode 100644 source/geometry/solids/STEP/include/str_list.h delete mode 100644 source/geometry/solids/STEP/src/STEPselect.cc create mode 100644 source/geometry/solids/STEP/src/SdaiAll.cc create mode 100644 source/geometry/solids/STEP/src/collect.cc create mode 100644 source/geometry/solids/STEP/src/complexlist.cc create mode 100644 source/geometry/solids/STEP/src/compstructs.cc create mode 100644 source/geometry/solids/STEP/src/entlist.cc create mode 100644 source/geometry/solids/STEP/src/entnode.cc rename source/geometry/solids/STEP/src/{gennode_inline.cc => gennode.cc} (72%) create mode 100644 source/geometry/solids/STEP/src/gennodelist.cc create mode 100644 source/geometry/solids/STEP/src/match_ors.cc create mode 100644 source/geometry/solids/STEP/src/multlist.cc create mode 100644 source/geometry/solids/STEP/src/non_ors.cc create mode 100644 source/geometry/solids/STEP/src/orlist.cc create mode 100644 source/geometry/solids/STEP/src/print.cc create mode 100644 source/geometry/solids/STEP/src/scl_char_str_list.cc create mode 100644 source/geometry/solids/STEP/src/sdai.cc rename source/geometry/solids/STEP/src/{STEPentity.cc => sdaiApplication_instance.cc} (61%) create mode 100644 source/geometry/solids/STEP/src/sdaiApplication_instance_set.cc create mode 100644 source/geometry/solids/STEP/src/sdaiDaObject.cc create mode 100644 source/geometry/solids/STEP/src/sdaiEntity_extent.cc create mode 100644 source/geometry/solids/STEP/src/sdaiEntity_extent_set.cc rename source/geometry/solids/STEP/src/{Enumeration.cc => sdaiEnum.cc} (51%) create mode 100644 source/geometry/solids/STEP/src/sdaiModel_contents.cc create mode 100644 source/geometry/solids/STEP/src/sdaiModel_contents_list.cc create mode 100644 source/geometry/solids/STEP/src/sdaiObject.cc create mode 100644 source/geometry/solids/STEP/src/sdaiSelect.cc create mode 100644 source/geometry/solids/STEP/src/sdaiSession_instance.cc rename source/geometry/solids/STEP/src/{STEPstring.cc => sdaiString.cc} (79%) create mode 100644 source/geometry/solids/STEP/src/trynext.cc create mode 100644 source/geometry/solids/specific/GNUmakefile create mode 100644 source/geometry/solids/specific/History rename source/geometry/solids/{CSG => specific}/include/G4ClippablePolygon.hh (53%) create mode 100644 source/geometry/solids/specific/include/G4EllipticalTube.hh rename source/geometry/solids/{CSG => specific}/include/G4EnclosingCylinder.hh (69%) create mode 100644 source/geometry/solids/specific/include/G4Hype.hh rename source/geometry/solids/{CSG => specific}/include/G4IntersectingCone.hh (62%) rename source/geometry/solids/{CSG => specific}/include/G4PolyPhiFace.hh (83%) rename source/geometry/solids/{CSG => specific}/include/G4PolyPhiFace.icc (83%) rename source/geometry/solids/{CSG => specific}/include/G4Polycone.hh (88%) rename source/geometry/solids/{CSG => specific}/include/G4PolyconeSide.hh (81%) rename source/geometry/solids/{CSG => specific}/include/G4Polyhedra.hh (88%) rename source/geometry/solids/{CSG => specific}/include/G4PolyhedraSide.hh (91%) rename source/geometry/solids/{CSG => specific}/include/G4ReduciblePolygon.hh (77%) rename source/geometry/solids/{CSG => specific}/include/G4SolidExtentList.hh (66%) create mode 100644 source/geometry/solids/specific/include/G4VCSGface.hh rename source/geometry/solids/{CSG => specific}/include/G4VCSGfaceted.hh (63%) rename source/geometry/solids/{CSG => specific}/src/G4ClippablePolygon.cc (91%) create mode 100644 source/geometry/solids/specific/src/G4EllipticalTube.cc rename source/geometry/solids/{CSG => specific}/src/G4EnclosingCylinder.cc (89%) create mode 100644 source/geometry/solids/specific/src/G4Hype.cc rename source/geometry/solids/{CSG => specific}/src/G4IntersectingCone.cc (96%) rename source/geometry/solids/{CSG => specific}/src/G4PolyPhiFace.cc (98%) rename source/geometry/solids/{CSG => specific}/src/G4Polycone.cc (96%) rename source/geometry/solids/{CSG => specific}/src/G4PolyconeSide.cc (98%) rename source/geometry/solids/{CSG => specific}/src/G4Polyhedra.cc (97%) rename source/geometry/solids/{CSG => specific}/src/G4PolyhedraSide.cc (98%) rename source/geometry/solids/{CSG => specific}/src/G4ReduciblePolygon.cc (96%) rename source/geometry/solids/{CSG => specific}/src/G4SolidExtentList.cc (91%) rename source/geometry/solids/{CSG => specific}/src/G4VCSGfaceted.cc (84%) create mode 100644 source/geometry/volumes/include/G4LogicalBorderSurface.icc create mode 100644 source/geometry/volumes/include/G4LogicalSkinSurface.icc delete mode 100644 source/geometry/volumes/include/G4Transform.hh delete mode 100644 source/global/HEPRandom/test/G4RandDistributionTest.cc delete mode 100644 source/global/HEPRandom/test/G4RandGlobalTest.cc delete mode 100644 source/global/HEPRandom/test/G4ShootBitTest.cc delete mode 100644 source/global/HEPRandom/test/GNUmakefile create mode 100644 source/global/management/include/G4PhysicsLnVector.hh create mode 100644 source/global/management/include/g4std/complex create mode 100644 source/global/management/src/G4PhysicsLnVector.cc create mode 100644 source/graphics_reps/include/HepPolyhedron.h create mode 100755 source/graphics_reps/src/BooleanProcessor.src create mode 100644 source/graphics_reps/src/HepPolyhedron.cc create mode 100644 source/interfaces/basic/include/G4UIArrayString.hh create mode 100644 source/interfaces/basic/include/G4UIcsh.hh create mode 100644 source/interfaces/basic/include/G4UItcsh.hh create mode 100644 source/interfaces/basic/include/G4VUIshell.hh create mode 100644 source/interfaces/basic/src/G4UIArrayString.cc create mode 100644 source/interfaces/basic/src/G4UIcsh.cc create mode 100644 source/interfaces/basic/src/G4UItcsh.cc create mode 100644 source/interfaces/basic/src/G4VUIshell.cc delete mode 100644 source/particles/hadrons/mesons/include/G4RhoMinus.hh delete mode 100644 source/particles/hadrons/mesons/include/G4RhoPlus.hh delete mode 100644 source/particles/hadrons/mesons/include/G4RhoZero.hh delete mode 100644 source/particles/hadrons/mesons/src/G4RhoMinus.cc delete mode 100644 source/particles/hadrons/mesons/src/G4RhoPlus.cc delete mode 100644 source/particles/hadrons/mesons/src/G4RhoZero.cc create mode 100644 source/persistency/geometry/solids/specific/GNUmakefile rename source/persistency/geometry/solids/{CSG => specific}/include/G4PHype.ddl (94%) rename source/persistency/geometry/solids/{CSG => specific}/src/G4PHype.cc (95%) create mode 100644 source/persistency/global/include/G4VMaterialMap.hh create mode 100644 source/persistency/global/src/G4VMaterialMap.cc create mode 100644 source/processes/decay/History create mode 100644 source/processes/electromagnetic/lowenergy/include/G4QAOLowEnergyLoss.hh create mode 100644 source/processes/electromagnetic/lowenergy/include/G4VeLowEnergyLoss.hh create mode 100644 source/processes/electromagnetic/lowenergy/include/G4VhEnergyLossModel.hh rename source/processes/electromagnetic/{standard/include/G4eEnergyLoss.hh => lowenergy/include/G4eLowEnergyLoss.hh} (59%) rename source/processes/electromagnetic/{standard/include/G4eEnergyLoss.icc => lowenergy/include/G4eLowEnergyLoss.icc} (89%) rename source/processes/electromagnetic/{standard/include/G4hEnergyLoss.hh => lowenergy/include/G4hLowEnergyLoss.hh} (94%) rename source/processes/electromagnetic/{standard/include/G4hEnergyLossPlus.icc => lowenergy/include/G4hLowEnergyLoss.icc} (79%) create mode 100644 source/processes/electromagnetic/lowenergy/src/G4QAOLowEnergyLoss.cc create mode 100644 source/processes/electromagnetic/lowenergy/src/G4VeLowEnergyLoss.cc create mode 100644 source/processes/electromagnetic/lowenergy/src/G4eLowEnergyLoss.cc rename source/processes/electromagnetic/{standard/src/G4hEnergyLoss.cc => lowenergy/src/G4hLowEnergyLoss.cc} (88%) create mode 100644 source/processes/electromagnetic/muons/History create mode 100644 source/processes/electromagnetic/muons/documents/dif_tab.dat create mode 100644 source/processes/electromagnetic/muons/documents/ion_comm.txt create mode 100644 source/processes/electromagnetic/muons/documents/mcs_qst.txt create mode 100644 source/processes/electromagnetic/muons/documents/mcs_refs.txt create mode 100644 source/processes/electromagnetic/muons/documents/summary.txt create mode 100644 source/processes/electromagnetic/muons/documents/tasklist.txt create mode 100644 source/processes/electromagnetic/muons/documents/testlist.txt rename source/processes/electromagnetic/muons/include/{G4IMuEnergyLoss.hh => G4VIMuEnergyLoss.hh} (94%) rename source/processes/electromagnetic/muons/include/{G4IMuEnergyLoss.icc => G4VIMuEnergyLoss.icc} (92%) rename source/processes/electromagnetic/muons/include/{G4MuEnergyLoss.hh => G4VMuEnergyLoss.hh} (53%) rename source/processes/electromagnetic/muons/include/{G4MuEnergyLoss.icc => G4VMuEnergyLoss.icc} (81%) delete mode 100644 source/processes/electromagnetic/muons/src/G4MuEnergyLoss.cc rename source/processes/electromagnetic/muons/src/{G4IMuEnergyLoss.cc => G4VIMuEnergyLoss.cc} (92%) create mode 100644 source/processes/electromagnetic/muons/src/G4VMuEnergyLoss.cc create mode 100644 source/processes/electromagnetic/standard/History create mode 100644 source/processes/electromagnetic/standard/include/G4IonisationByLogicalVolume.hh rename source/processes/electromagnetic/standard/include/{G4IeEnergyLoss.hh => G4VIeEnergyLoss.hh} (94%) rename source/processes/electromagnetic/standard/include/{G4IeEnergyLoss.icc => G4VIeEnergyLoss.icc} (86%) rename source/processes/electromagnetic/standard/include/{G4IhEnergyLoss.hh => G4VIhEnergyLoss.hh} (94%) rename source/processes/electromagnetic/standard/include/{G4IhEnergyLoss.icc => G4VIhEnergyLoss.icc} (83%) rename source/processes/electromagnetic/standard/include/{G4PAIenergyLoss.hh => G4VPAIenergyLoss.hh} (63%) rename source/processes/electromagnetic/standard/include/{G4PAIenergyLoss.icc => G4VPAIenergyLoss.icc} (77%) rename source/processes/electromagnetic/standard/include/{G4eEnergyLossPlus.hh => G4VeEnergyLoss.hh} (62%) rename source/processes/electromagnetic/standard/include/{G4eEnergyLossPlus.icc => G4VeEnergyLoss.icc} (88%) rename source/processes/electromagnetic/standard/include/{G4hEnergyLossPlus.hh => G4VhEnergyLoss.hh} (50%) rename source/processes/electromagnetic/standard/include/{G4hEnergyLoss.icc => G4VhEnergyLoss.icc} (83%) delete mode 100644 source/processes/electromagnetic/standard/include/G4eBremsstrahlungPlus.hh delete mode 100644 source/processes/electromagnetic/standard/include/G4eBremsstrahlungPlus.icc delete mode 100644 source/processes/electromagnetic/standard/include/G4eIonisationPlus.hh delete mode 100644 source/processes/electromagnetic/standard/include/G4eIonisationPlus.icc delete mode 100644 source/processes/electromagnetic/standard/include/G4hIonisationPlus.hh delete mode 100644 source/processes/electromagnetic/standard/include/G4hIonisationPlus.icc create mode 100644 source/processes/electromagnetic/standard/src/G4IonisationByLogicalVolume.cc delete mode 100644 source/processes/electromagnetic/standard/src/G4PAIenergyLoss.cc rename source/processes/electromagnetic/standard/src/{G4IeEnergyLoss.cc => G4VIeEnergyLoss.cc} (92%) rename source/processes/electromagnetic/standard/src/{G4IhEnergyLoss.cc => G4VIhEnergyLoss.cc} (89%) create mode 100644 source/processes/electromagnetic/standard/src/G4VPAIenergyLoss.cc create mode 100644 source/processes/electromagnetic/standard/src/G4VeEnergyLoss.cc create mode 100644 source/processes/electromagnetic/standard/src/G4VhEnergyLoss.cc delete mode 100644 source/processes/electromagnetic/standard/src/G4eBremsstrahlungPlus.cc delete mode 100644 source/processes/electromagnetic/standard/src/G4eEnergyLoss.cc delete mode 100644 source/processes/electromagnetic/standard/src/G4eEnergyLossPlus.cc delete mode 100644 source/processes/electromagnetic/standard/src/G4eIonisationPlus.cc delete mode 100644 source/processes/electromagnetic/standard/src/G4hEnergyLossPlus.cc delete mode 100644 source/processes/electromagnetic/standard/src/G4hIonisationPlus.cc create mode 100644 source/processes/electromagnetic/utils/History rename source/processes/electromagnetic/{standard => utils}/include/G4IMultipleScattering.hh (97%) rename source/processes/electromagnetic/{standard => utils}/include/G4IMultipleScattering.icc (98%) rename source/processes/electromagnetic/{standard => utils}/include/G4MultipleScattering.hh (97%) rename source/processes/electromagnetic/{standard => utils}/include/G4MultipleScattering.icc (95%) create mode 100644 source/processes/electromagnetic/utils/include/G4VEnergyLoss.hh rename source/processes/electromagnetic/{standard => utils}/src/G4IMultipleScattering.cc (99%) rename source/processes/electromagnetic/{standard => utils}/src/G4MultipleScattering.cc (98%) create mode 100644 source/processes/electromagnetic/utils/src/G4VEnergyLoss.cc create mode 100644 source/processes/electromagnetic/xrays/History create mode 100644 source/processes/hadronic/cross_sections/include/G4IonProtonCrossSection.hh create mode 100644 source/processes/hadronic/cross_sections/include/G4TripathiCrossSection.hh create mode 100644 source/processes/hadronic/cross_sections/src/G4TripathiCrossSection.cc create mode 100644 source/processes/hadronic/models/generator/History create mode 100644 source/processes/hadronic/models/generator/ToDo create mode 100644 source/processes/hadronic/models/generator/de_excitation/include/G4AlphaCoulombBarrier.hh create mode 100644 source/processes/hadronic/models/generator/de_excitation/include/G4AlphaEvaporationChannel.hh create mode 100644 source/processes/hadronic/models/generator/de_excitation/include/G4AlphaEvaporationProbability.hh create mode 100644 source/processes/hadronic/models/generator/de_excitation/include/G4CameronGilbertPairingCorrections.hh create mode 100644 source/processes/hadronic/models/generator/de_excitation/include/G4CameronGilbertShellCorrections.hh create mode 100644 source/processes/hadronic/models/generator/de_excitation/include/G4CameronShellPlusPairingCorrections.hh create mode 100644 source/processes/hadronic/models/generator/de_excitation/include/G4CameronTruranHilfPairingCorrections.hh create mode 100644 source/processes/hadronic/models/generator/de_excitation/include/G4CameronTruranHilfShellCorrections.hh create mode 100644 source/processes/hadronic/models/generator/de_excitation/include/G4CoulombBarrier.hh create mode 100644 source/processes/hadronic/models/generator/de_excitation/include/G4DeuteronCoulombBarrier.hh create mode 100644 source/processes/hadronic/models/generator/de_excitation/include/G4DeuteronEvaporationChannel.hh create mode 100644 source/processes/hadronic/models/generator/de_excitation/include/G4DeuteronEvaporationProbability.hh create mode 100644 source/processes/hadronic/models/generator/de_excitation/include/G4He3CoulombBarrier.hh create mode 100644 source/processes/hadronic/models/generator/de_excitation/include/G4He3EvaporationChannel.hh create mode 100644 source/processes/hadronic/models/generator/de_excitation/include/G4He3EvaporationProbability.hh create mode 100644 source/processes/hadronic/models/generator/de_excitation/include/G4NeutronCoulombBarrier.hh create mode 100644 source/processes/hadronic/models/generator/de_excitation/include/G4NeutronEvaporationChannel.hh create mode 100644 source/processes/hadronic/models/generator/de_excitation/include/G4NeutronEvaporationProbability.hh create mode 100644 source/processes/hadronic/models/generator/de_excitation/include/G4ProtonCoulombBarrier.hh create mode 100644 source/processes/hadronic/models/generator/de_excitation/include/G4ProtonEvaporationChannel.hh create mode 100644 source/processes/hadronic/models/generator/de_excitation/include/G4ProtonEvaporationProbability.hh create mode 100644 source/processes/hadronic/models/generator/de_excitation/include/G4TritonCoulombBarrier.hh create mode 100644 source/processes/hadronic/models/generator/de_excitation/include/G4TritonEvaporationChannel.hh create mode 100644 source/processes/hadronic/models/generator/de_excitation/include/G4TritonEvaporationProbability.hh create mode 100644 source/processes/hadronic/models/generator/de_excitation/include/G4VCoulombBarrier.hh create mode 100644 source/processes/hadronic/models/generator/de_excitation/src/G4AlphaCoulombBarrier.cc create mode 100644 source/processes/hadronic/models/generator/de_excitation/src/G4AlphaEvaporationChannel.cc create mode 100644 source/processes/hadronic/models/generator/de_excitation/src/G4AlphaEvaporationProbability.cc create mode 100644 source/processes/hadronic/models/generator/de_excitation/src/G4CameronGilbertPairingCorrections.cc create mode 100644 source/processes/hadronic/models/generator/de_excitation/src/G4CameronGilbertShellCorrections.cc create mode 100644 source/processes/hadronic/models/generator/de_excitation/src/G4CameronShellPlusPairingCorrections.cc create mode 100644 source/processes/hadronic/models/generator/de_excitation/src/G4CameronTruranHilfPairingCorrections.cc create mode 100644 source/processes/hadronic/models/generator/de_excitation/src/G4CameronTruranHilfShellCorrections.cc create mode 100644 source/processes/hadronic/models/generator/de_excitation/src/G4CoulombBarrier.cc create mode 100644 source/processes/hadronic/models/generator/de_excitation/src/G4DeuteronCoulombBarrier.cc create mode 100644 source/processes/hadronic/models/generator/de_excitation/src/G4DeuteronEvaporationChannel.cc create mode 100644 source/processes/hadronic/models/generator/de_excitation/src/G4DeuteronEvaporationProbability.cc create mode 100644 source/processes/hadronic/models/generator/de_excitation/src/G4He3CoulombBarrier.cc create mode 100644 source/processes/hadronic/models/generator/de_excitation/src/G4He3EvaporationChannel.cc create mode 100644 source/processes/hadronic/models/generator/de_excitation/src/G4He3EvaporationProbability.cc create mode 100644 source/processes/hadronic/models/generator/de_excitation/src/G4NeutronCoulombBarrier.cc create mode 100644 source/processes/hadronic/models/generator/de_excitation/src/G4NeutronEvaporationChannel.cc create mode 100644 source/processes/hadronic/models/generator/de_excitation/src/G4NeutronEvaporationProbability.cc create mode 100644 source/processes/hadronic/models/generator/de_excitation/src/G4ProtonCoulombBarrier.cc create mode 100644 source/processes/hadronic/models/generator/de_excitation/src/G4ProtonEvaporationChannel.cc create mode 100644 source/processes/hadronic/models/generator/de_excitation/src/G4ProtonEvaporationProbability.cc create mode 100644 source/processes/hadronic/models/generator/de_excitation/src/G4TritonCoulombBarrier.cc create mode 100644 source/processes/hadronic/models/generator/de_excitation/src/G4TritonEvaporationChannel.cc create mode 100644 source/processes/hadronic/models/generator/de_excitation/src/G4TritonEvaporationProbability.cc create mode 100644 source/processes/hadronic/models/generator/de_excitation/src/G4VCoulombBarrier.cc create mode 100644 source/processes/hadronic/models/generator/quark_gluon_string/include/G4ASCCrossSection.hh create mode 100644 source/processes/hadronic/models/generator/quark_gluon_string/include/G4AnnihilationCrossSection.hh create mode 100644 source/processes/hadronic/models/generator/quark_gluon_string/include/G4GammaAnnCrossSection.hh create mode 100644 source/processes/hadronic/models/generator/quark_gluon_string/include/G4SPPartonInfo.hh create mode 100644 source/processes/hadronic/models/generator/quark_gluon_string/include/G4VAnnihilationCrossSection.hh create mode 100644 source/processes/hadronic/models/generator/quark_gluon_string/src/G4ASCCrossSection.cc create mode 100644 source/processes/hadronic/models/generator/quark_gluon_string/src/G4AnnihilationCrossSection.cc create mode 100644 source/processes/hadronic/models/generator/quark_gluon_string/src/G4GammaAnnCrossSection.cc create mode 100644 source/processes/hadronic/models/generator/quark_gluon_string/src/G4PartonStringAnnihilator.cc rename source/processes/hadronic/models/isotope_production/include/{G4NeutronElementIsoCrossSections.hh => G4ElementIsoCrossSections.hh} (55%) rename source/processes/hadronic/models/isotope_production/{src/G4NeutronElementIsoCrossSections.cc => include/G4ElementIsoCrossSections.icc} (64%) rename source/processes/hadronic/models/isotope_production/include/{G4NeutronIsoProdCrossSections.hh => G4IsoProdCrossSections.hh} (66%) delete mode 100644 source/processes/hadronic/models/isotope_production/include/G4NeutronElementCrossSections.hh create mode 100644 source/processes/hadronic/models/isotope_production/include/G4ProtonIsoIsoCrossSections.hh create mode 100644 source/processes/hadronic/models/isotope_production/include/G4ProtonIsotopeProduction.hh rename source/processes/hadronic/models/isotope_production/src/{G4NeutronIsoProdCrossSections.cc => G4IsoProdCrossSection.cc} (68%) create mode 100644 source/processes/hadronic/models/radiative_decay/GNUmakefile create mode 100644 source/processes/hadronic/models/radiative_decay/History create mode 100644 source/processes/hadronic/models/radiative_decay/include/G4AlphaDecayChannel.hh create mode 100644 source/processes/hadronic/models/radiative_decay/include/G4BetaFermiFunction.hh create mode 100644 source/processes/hadronic/models/radiative_decay/include/G4BetaMinusDecayChannel.hh create mode 100644 source/processes/hadronic/models/radiative_decay/include/G4BetaPlusDecayChannel.hh create mode 100644 source/processes/hadronic/models/radiative_decay/include/G4ITDecayChannel.hh create mode 100644 source/processes/hadronic/models/radiative_decay/include/G4KshellECDecayChannel.hh create mode 100644 source/processes/hadronic/models/radiative_decay/include/G4LshellECDecayChannel.hh create mode 100644 source/processes/hadronic/models/radiative_decay/include/G4NuclearDecayChannel.hh create mode 100644 source/processes/hadronic/models/radiative_decay/include/G4NucleusLimits.hh create mode 100644 source/processes/hadronic/models/radiative_decay/include/G4ParticleChangeForRadDecay.hh create mode 100644 source/processes/hadronic/models/radiative_decay/include/G4RIsotopeTable.hh create mode 100644 source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecay.hh create mode 100644 source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecayMode.hh create mode 100644 source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecayRate.hh create mode 100644 source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecayRateVector.hh create mode 100644 source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecaymessenger.hh create mode 100644 source/processes/hadronic/models/radiative_decay/include/G4UIcmdWithNucleusLimits.hh create mode 100644 source/processes/hadronic/models/radiative_decay/include/G4UserLimitsForRD.hh create mode 100644 source/processes/hadronic/models/radiative_decay/src/G4BetaFermiFunction.cc create mode 100644 source/processes/hadronic/models/radiative_decay/src/G4NuclearDecayChannel.cc create mode 100644 source/processes/hadronic/models/radiative_decay/src/G4NucleusLimits.cc create mode 100644 source/processes/hadronic/models/radiative_decay/src/G4RIsotopeTable.cc create mode 100644 source/processes/hadronic/models/radiative_decay/src/G4RadioactiveDecay.cc create mode 100644 source/processes/hadronic/models/radiative_decay/src/G4RadioactiveDecayMode.cc create mode 100644 source/processes/hadronic/models/radiative_decay/src/G4RadioactiveDecayRate.cc create mode 100644 source/processes/hadronic/models/radiative_decay/src/G4RadioactiveDecayRateVector.cc create mode 100644 source/processes/hadronic/models/radiative_decay/src/G4RadioactiveDecaymessenger.cc create mode 100644 source/processes/hadronic/models/radiative_decay/src/G4UIcmdWithNucleusLimits.cc create mode 100644 source/processes/hadronic/processes/include/G4IonInelasticProcess.hh create mode 100644 source/processes/hadronic/stopping/include/G4MuMinusCaptureCascade.hh create mode 100644 source/processes/hadronic/stopping/include/G4StopElementSelector.hh create mode 100644 source/processes/hadronic/stopping/src/G4MuMinusCaptureCascade.cc create mode 100644 source/processes/hadronic/stopping/src/G4StopElementSelector.cc create mode 100644 source/processes/parameterisation/include/G4FastSimulationVector.hh create mode 100644 source/processes/parameterisation/include/G4FastSimulationVector.icc create mode 100644 source/processes/parameterisation/include/G4FoamXrayTRmodel.hh create mode 100644 source/processes/parameterisation/include/G4GamDistrXrayTRmodel.hh create mode 100644 source/processes/parameterisation/include/G4IrregularXrayTRmodel.hh create mode 100644 source/processes/parameterisation/include/G4PlateIrrGasXrayTRmodel.hh create mode 100644 source/processes/parameterisation/include/G4RegularXrayTRmodel.hh create mode 100644 source/processes/parameterisation/include/G4VXrayTRmodel.hh create mode 100644 source/processes/parameterisation/src/G4FoamXrayTRmodel.cc create mode 100644 source/processes/parameterisation/src/G4GamDistrXrayTRmodel.cc create mode 100644 source/processes/parameterisation/src/G4IrregularXrayTRmodel.cc create mode 100644 source/processes/parameterisation/src/G4PlateIrrGasXrayTRmodel.cc create mode 100644 source/processes/parameterisation/src/G4RegularXrayTRmodel.cc create mode 100644 source/processes/parameterisation/src/G4VXrayTRmodel.cc create mode 100644 source/track/include/G4ParticleChangeForRadDecay.hh create mode 100644 source/track/include/G4StepPoint.icc create mode 100644 source/track/include/G4VUserTrackInformation.hh create mode 100644 source/visualization/OpenGL/History create mode 100644 source/visualization/RayTracer/GNUmakefile create mode 100644 source/visualization/RayTracer/History create mode 100644 source/visualization/RayTracer/README create mode 100644 source/visualization/RayTracer/include/G4RTJpeg.hh create mode 100644 source/visualization/RayTracer/include/G4RTJpegCoder.hh create mode 100644 source/visualization/RayTracer/include/G4RTJpegCoderTables.hh create mode 100644 source/visualization/RayTracer/include/G4RTJpegMaker.hh create mode 100644 source/visualization/RayTracer/include/G4RTMessenger.hh create mode 100644 source/visualization/RayTracer/include/G4RTOutBitStream.hh create mode 100644 source/visualization/RayTracer/include/G4RTSteppingAction.hh create mode 100644 source/visualization/RayTracer/include/G4RTTrackingAction.hh create mode 100644 source/visualization/RayTracer/include/G4RayShooter.hh create mode 100644 source/visualization/RayTracer/include/G4RayTracer.hh create mode 100644 source/visualization/RayTracer/include/G4RayTracerFeatures.hh create mode 100644 source/visualization/RayTracer/include/G4RayTracerSceneHandler.hh create mode 100644 source/visualization/RayTracer/include/G4RayTracerViewer.hh create mode 100644 source/visualization/RayTracer/include/G4RayTrajectory.hh create mode 100644 source/visualization/RayTracer/include/G4RayTrajectoryPoint.hh create mode 100644 source/visualization/RayTracer/include/G4VFigureFileMaker.hh create mode 100644 source/visualization/RayTracer/src/G4RTJpegCoder.cc create mode 100644 source/visualization/RayTracer/src/G4RTJpegMaker.cc create mode 100644 source/visualization/RayTracer/src/G4RTMessenger.cc create mode 100644 source/visualization/RayTracer/src/G4RTOutBitStream.cc create mode 100644 source/visualization/RayTracer/src/G4RTSteppingAction.cc create mode 100644 source/visualization/RayTracer/src/G4RTTrackingAction.cc create mode 100644 source/visualization/RayTracer/src/G4RayShooter.cc create mode 100644 source/visualization/RayTracer/src/G4RayTracer.cc create mode 100644 source/visualization/RayTracer/src/G4RayTracerSceneHandler.cc create mode 100644 source/visualization/RayTracer/src/G4RayTracerViewer.cc create mode 100644 source/visualization/RayTracer/src/G4RayTrajectory.cc create mode 100644 source/visualization/RayTracer/src/G4RayTrajectoryPoint.cc create mode 100644 source/visualization/management/include/G4VisCommandsCompound.hh create mode 100644 source/visualization/management/include/G4VisCommandsViewerSet.hh create mode 100644 source/visualization/management/src/G4VisCommandsCompound.cc create mode 100644 source/visualization/management/src/G4VisCommandsViewerSet.cc create mode 100644 source/visualization/modeling/include/G4VTreeGraphicsScene.hh create mode 100644 source/visualization/modeling/include/G4VTreeGraphicsScene.icc create mode 100644 source/visualization/modeling/src/G4VTreeGraphicsScene.cc diff --git a/ReleaseNotes/ReleaseNotes4.2.0.txt b/ReleaseNotes/ReleaseNotes4.2.0.txt new file mode 100644 index 0000000000..141d9a6718 --- /dev/null +++ b/ReleaseNotes/ReleaseNotes4.2.0.txt @@ -0,0 +1,392 @@ + + Geant4 2.0 Release Notes + ------------------------ + + 30th June 2000 + +These are the main new features/fixes included in this release (for the +detailed list of fixes/additions, please refer to the related History files): + + o Electromagnetic Processes: + ------------------------- + - internal reorganisation of the EnergyLoss classes. + Introduced one level of abstraction through the G4VEnergyLoss class + for muons, electrons and hadrons. + - introduced new functionalities for the energy loss fluctuation model, + and bug fixes. + - removed *Plus* process classes and merged to standard processes: + optimized generation of delta rays near the geometrical boudaries is + now performed as the default. + - bug fixed in the multiple scattering. + - bugs fixed in G4eIonisation and G4hIonisation. + - absolute min gamma energy fixed to 10 keV in G4eBremsstrahlung. + - bugs fixed in G4MuIonisation and G4MuPairProduction. + Updated Physics Reference Manual for muon processes. + - Added new models of Transition Radiation radiators + in processes/parametrisation. + + o Electromagnetic Processes, Low-energy : + ------------------------------------- + - fixes in G4LowEnergyBremsstrahlung for continuous energy loss. + - modifications for integration of cross sections, corrections of + fluorescence transition probabilities to take into account + non-radiative transitions. + + o General Processes, Parameterisation, Decay : + ------------------------------------------ + - introduced new set of models for X-ray transition radiation + parameterisation. + - implemented full migration to STL for processes/parameterisation + and processes/management modules. + - added process registration into ProcessTable in copy constructor. + - fixed registration of "shortlived" particles for G4Decay. + + o Geometry: + -------- + - magneticfield: + o corrected helical steppers. + o fix in G4LineSection to prevent divisions by 0 and sqrt(<0). + o modified method for finding new trial step in G4ChordFinder. + - management: + o design change in G4VSolid for visualization utilities: changed pure + virtual method G4VSolid::GetExtent() to virtual. Added default + implementation based on CalculateExtent(). + - BREPS solids: + o Decoupled BREPS module from the STEP Reader; + o Memory leak fixes and some code cleanup. + - CSG and specific solids: + o created new module solids/specific and moved therein all non-CSG + shapes previously placed in solids/CSG. + o Added new shape in solids/specific: G4EllipticalTube. + o Fixed bug in G4PolyhedraSide::Normal(...). This fixes a problem + observed in G4Polyhedra::SurfaceNormal. Fixes in G4Hype. + o Fixed typo in method name in G4Polyhedra.: changed GetNumSIde() to + GetNumSide(). + o Added more diagnostics in G4Cons, G4Sphere and G4Torus in function + DistanceToOut(p,v,...). + o Fix in DistanceToIn(p,v) for G4Box and G4Trd to return zero + distance in case computed value is less than 0.5*kCarTolerance. + o Added safety against call from outside in DistanceToOut(p) + o Fix to G4Tubs::DistanceToOut(p,v,...) in computation of xi, yi + for (sphi>=-0.5*kCarTolerance). + o Added more diagnostics in case of invalid enum for DistanceToOut. + o Added new alternative functions SolveBiQuadratic/CubicNew in G4Torus. + - solids/Boolean: + o Implemented CreatePolyhedron method. + o G4DisplacedSolid: reversed implementation of GetFrameRotation and + GetObjectRotation, removing inappropriate invertion. + o G4DisplacedSolid::GetConstituentMovedSolid() made const. + o Fixed bug in G4SubtractionSolid::DistanceToOut(p,v,...). + validNorm flag was uncorrectly set to true. + - STEP: + o Upgraded NIST STEP Reader to SCL (STEP Class Library) 3.2; + o Implemented porting on supported platforms/compilers and + ISO-ANSI C++ compliance. + - STEP Interface module: + o Implemented porting to support the new NIST STEP Reader; + o Reduced inter-class dependencies by reorganising include + statements. + o Improved overall diagnostics and fixed internal memory-leaks; + o Added protections for NULL pointers generated by missing geometry + creators. + o Implemented temporary solution for association of placements + with manifolded solids for advanced BREP shape representations. + - volumes: + o introduced kCarTolerance for check over taken step length and + TruePathLength in G4PropagatorInField::ComputeStep(). + o fixes in G4ReplicaNavigation::ComputeStep() for zero-step length + loops observed when point is on boundary. + + o Globals and Config: + ------------------ + - Added class G4PhysicsLnVector implementing a physics vector with + natural logarithmic scale for energy/momentum bins. + - Added string identifier to G4UserLimits. + - Defined G4complex type as complex type of doubles. + - Fixes to STLInterface wrappers: fixed initialization of base STL + vector in default constructor of vector collections. + - Changed implementation of G4Integrator to a template class. + - Config: implemented modular setup. Now system specific configurations + are grouped in separated files $G4SYSTEM.gmk and placed in the new + directory config/sys. + + o Graphics Representations: + ------------------------ + - Added HepPolyhedron class and re-implemented G4Polyhedron using this + new class (which will become part of CLHEP). + - Added boolean processor for boolean operations of HepPolyhedron + objects. + + o Hadronic Processes: + ------------------ + - management: allowing ion interactions in G4HadronInelasticProcess. + - cross_sections: added new classes for ion-ion reactions, and for ion + reactions on Hydrogen. + - processes: added new process for ion induced reactions. + - models/isotope_production: added model for proton induced isotope + production, validity range is the proton spallation energy range + (to use this, an update of the G4NDL library is required). + - models/neutron_hp: enabled production of residual nuclei for some + inelastic final states. + - models/generator/de_excitation: design iteration to allow re-use of + root-finding algorithms. + - models/generator/quark_gluon_string: added gamma annihilation + cross-sections and anti-nucleaon-nucleon annihilation. Bug fixes + in AntiSigma SU(12) wafe-function. Extended G4SPBaryon. + - models/generator/string_fragmentation: extended + G4VLongitudinalStringDecay to allow string excitation dependent + parameters. + - models/generator/util: bug fixes and added functionality in + G4KineticTrack. + - models/radiative_decay: added model for simulating the decay of + radio-active nuclei and isomeric states. Validity range is the + range of materials available from ENSDF as of May 2000. To use + this model a data set is provided in geant4/data/RadiativeDecay + and the environment variable G4RADIOACTIVEDATA must be set. + - fixes for memory leaks observed at event loop. + + NOTE: the consistent data sets for photon evaporation and radio-active + decay (derived from the same version of the ENSDF data) are + provided from Web in the source download area. A previous version + of photon evaporation data is also provided. + + o Interfaces: + ---------- + - Introduced new G4UITerminal (G4UItcsh) with UNIX-like shell + (currently fully tested only on Linux-g++ and SUN-CC systems). + + o Particles: + --------- + - Full migration to STL performed. + - Removed G4RhoPlus, G4RhoZero, and G4RhoMinus classes. + Added "rho0" in G4ShortLivedConstructor. + - Fixes in G4IsotopeTable and G4NucleiProperties classes. + - Introduced ParticleSubType property in ParticleDefinition. + - Added GetAtomicNumber() and GetAtomicMass() methods to G4VIon, + G4Proton, and G4Neutron. + - Added G4VDecayChannel::GetAngularMomentum() method. + + o Tracking & Track: + ---------------- + - Added thePolarizationChange in G4ParticleChangeForTransportation. + - Added cashing mechanism of pointer to material in G4StepPoint. + to extract material information from parametrized volumes. + - GetTouchable/SetTouchable methods have been changed to handle + "const" pointers. + - Introduced G4VUserTrackInformation class and associated to G4Track. + - Fixed problem in deleting touchable in G4SteppingManager. + + o Visualization: + ------------- + - Introduced first implementation of the G4RayTracer. With G4RayTracer + all solids types supported in Geant4 can be visualised. + - Added commands /vis/viewer/update, /vis/viewer/reset. + - Added "compound" commands: /vis/open, /vis/drawVolume. + - Added ability to visualise boolean solids through G4Polyhedron objects. + - Added G4LogicalVolumeModel::DescribeSolid(), which explicitly adds + components of composite solids as white forced-wireframe objects. + - OPACS: + o G4GoSceneHandler: correct polyhedron wire-frame in order to remove + some edges. + o G4WoViewer: changed camera name checking so that a viewer created + by the GUI (Wo) could be hooked. + o G4GoSceneHandler: changed circle rendering. + - Bug fix in G4PhysicalVolumeModel for replicas. + + +Notes: + + o Geant4 2.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. +Updates to the documentation for Geant4 2.0 are expected to be published as +usual within three weeks from the release date. + + +Contents +-------- + + 1. Supported and Tested Platforms + 2. LHC++ and CLHEP 1.5 + 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.6, C++ 4.2 patch 104631-04. + o HP 10.20, aCC C++ B3910B A.01.23 + o Linux 2.2.12-20, gcc C++ 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 Debian + and Suse distributions. + +Platforms also tested but giving rise to some problems - see below: + + o DEC V4.0, cxx C++ V6.1-027. + o SUN Solaris 5.6, C++ 5.0 patches 107357-07, 107311-09. + +Platforms configured but not yet tested (a patch will follow, if needed): + + o NT 4.0 with Service Pack 4 and Cygnus Tools b20 with: + Visual C++ 6.0 Service Pack 2 + +Platforms configured but not tested and not supported: + o SGI V6.5.5, CC 7.2.1 with ObjectSpace + o AIX 4.3.2, xlC compiler with ObjectSpace + + +2. LHC++ and CLHEP 1.5 +---------------------- + +Geant4 2.0 requires the installation of CLHEP 1.5. + +See +CLHEP 1.5. + +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 those compilers (for example, DEC). +Note that the installation of the "Hist" package in CLHEP for histogramming +is now disabled by default. If you wish to install CLHEP with the "Hist" +package, you need to edit the CLHEP installation scripts and add the +corresponding entry. + +Geant4 2.0 coworks with LHC++ 2.0.0 and components included therein: + Objectivity 5.2.1 + ObjectSpace 2.1 + HepODBMS 0.3.1.3 + CLHEP 1.5.0.0 + +For more information about LHC++ 2.0.0, see: + LHC++ 2.0.0 + +3. The Standard Template Library +-------------------------------- + +The following versions of STL have been tested: + + ObjectSpace STL on + DEC, HP and SUN. + + See ObjectSpace. + + "Native" STL on: Linux, HP, DEC and SUN. + +This is selected at installation/compile time by the environment variable +G4USE_OSPACE in the case of the former - see documentation. + +NOTES: +- Be aware that by default, the installation scripts will expect to use + the native STL implementation. You must set the G4USE_OSPACE variable + in the environment in order to select the ObjectSpace implementation. + +- Platform specific setup: + o DEC: ObjectSpace is required in non ISO/ANSI setup. + Native STL is required for ISO/ANSI setup. + o HP: either ObjectSpace or native STL can be used (non ISO/ANSI setup). + o SUN: ObjectSpace is required in non ISO/ANSI setup (CC 4.2). + Native STL is required for ISO/ANSI setup (CC 5.0 only). + o Linux: native STL is required (non ISO/ANSI setup). + o NT: Native STL and ISO/ANSI setup required. + +In the interest of stability, a significant part of the code in Geant4 2.0 +still makes use of the "STL Interface" wrapper classes, used for allowing the +migration from Rogue Wave Tools.h++ container library. For these the emphasis +has remained on correct behaviour, rather than performance. + + +4. Persistency +-------------- + +- Platforms + + Persistency in Geant4 2.0 release has been tested on the following + platforms/software versions: + + G4SYSTEM OS C++ compiler HepODBMS Objectivity + --------- ----------- ------------ --------- ----------- + SUN-CC SunOS 5.6 CC 4.2 0.3.1.4 5.2.1 + Linux-g++ Linux RH6.1 egcs 1.1.2 0.3.1.1 5.2.1 + +- Known Problems + + There are many 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. + + For the detail of the warning messages, please refer to the release + note of Geant4 1.0. + + +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. + + o SUN Solaris 5.6, C++ 5.0 patches 107357-07, 107311-09. + + Due to a compiler bug, some code in Geant4 cannot be compiled in + optimised mode, patches are available from SUN (107357-09, 107311-10) + which are claimed to fix this problem, we have not been able to test + them yet. Tests have been performed only by using the debuggable + version of the libraries. + + +6. Known Run-Time Problems and Limitations +------------------------------------------ + +- In the "high energy" hadronic model, a problem of energy non conservation + has been observed. A fix for it is currently under test and will be + available soon in a public patch. +- In multiple scattering, the nuclear size correction maybe not well adapted + for electrons. A fix will come soon. +- The parametrisation of the total cross section for electron bremsstrahlung + will be reviewed in order to allow generation of gamma below 10 keV. + + +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/History b/config/History index f9a7b856f6..e72592e471 100644 --- a/config/History +++ b/config/History @@ -1,5 +1,5 @@ -$Id: History,v 1.97 2000/02/14 11:27:42 gcosmo Exp $ -$Name: geant4-01-01 $ +$Id: History,v 1.105 2000/05/23 06:48:25 gcosmo Exp $ +$Name: geant4-02-00 $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,42 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +23rd May 2000 John Allison (config-V01-01-04) +- Added -I$(G4BASE)/processes/hadronic/models/radiative_decay/include to + binmake.gmk. + +19th May 2000 Gabriele Cosmo (config-V01-01-03) +- architecture.gmk: + o changed -pic option to -KPIC for SUN architectures. + o fixed HP-aCC setup to cope with new CLHEP version 1.5. + o implemented modular setup. Now system specific configurations are + grouped in separated files $G4SYSTEM.gmk and placed in the new + directory config/sys. + +7th April 2000 Gabriele Cosmo (config-V01-01-02) +- binmake.gmk: added include path to the new directory + geometry/solids/specific. +- Updated PERL script g4step_correct.pl for parsing STEP files. + +30th March 2000 Gabriele Cosmo (config-V01-01-01) +- makeshlib.sh: + o added few corrections to the script in order to allow + creation of shared libraries without need of the static archive on + platforms which allow this. + o added section for SunOS systems. + (courtesy of I.G.Caballero) +- architecture.gmk: + o on SUN-CC and SUN-CC5, added -pic to CXXFLAGS for building shared + libraries. + +21st March 2000 Gabriele Cosmo +- makeshlib.sh: corrected invokation of compiler for HP-aCC setup. + Changed CC to aCC (fixes bug-report #68). + +13th March 2000 Gabriele Cosmo (config-V01-01-00) +- architecture.gmk: corrected FCLIBS for Linux-g++ + o added -lg2c -lnsl and removed -lf2c. + 14th February 2000 Gabriele Cosmo (config-V01-00-02) - architecture.gmk: added option '+W823' to HP-aCC compilation setup to discard warnings for macros parameter definition as used in the new diff --git a/config/architecture.gmk b/config/architecture.gmk index 68b75af8cf..154d02c2fd 100644 --- a/config/architecture.gmk +++ b/config/architecture.gmk @@ -1,4 +1,4 @@ -# $Id: architecture.gmk,v 1.62 2000/02/14 11:27:26 gcosmo Exp $ +# $Id: architecture.gmk,v 1.66 2000/05/19 07:29:06 gcosmo Exp $ # ------------------------------------------------------------------------ # GEANT 4 - Architecture configuration script for GNU Make # @@ -15,11 +15,11 @@ # # SUN-CC SunOS 5.6, CC 4.2 compiler (default) # -# HP-aCC HP-UX 10.20, aCC A.01.21 compiler +# HP-aCC HP-UX 10.20, aCC A.01.23 compiler # # DEC-cxx DEC-OSF/1 4.0, DEC C++ 6.1 # -# Linux-g++ Linux (Red Hat 5.1/6.1), egcs 1.1.2 +# 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...) @@ -358,375 +358,9 @@ ECHO:= echo # GREP := grep +# Include architecture dependent setups... # -# Architecture dependent setups... -# - -# -------- SUN --------- -# -ifeq ($(G4SYSTEM),SUN-CC) - CXX := CC - ifdef G4OPTIMISE - CXXFLAGS := -O - else - ifdef G4DEBUG - CXXFLAGS := -g - FCFLAGS := -g - CCFLAGS := -g - endif - endif -# CXXFLAGS += -fnonstd - CFRONT_G4TEMPLATE_REPOSITORY := true - FC := f77 - SHEXT := so - AR := $(CXX) -xar -ptr$(G4TREP) -o - ECHO := /bin/echo - GREP := /usr/xpg4/bin/grep - FCLIBS := -lM77 -lF77 -lsunmath - X11FLAGS := -I/usr/openwin/include/X11/extensions -I/usr/openwin/include/X11 - X11FLAGS += -I/usr/openwin/include - X11LIBS := -L/usr/openwin/lib -L/usr/dt/lib -L/usr/ucblib - X11LIBS += -R/usr/openwin/lib -lXmu -lX11 -lXext - XMLIBS := -L/usr/openwin/lib -L/usr/dt/lib -L/usr/ucblib - XMLIBS += -R/usr/openwin/lib -lXt -lXm -lX11 - XAWFLAGS := -I/usr/openwin/include/X11 - XAWLIBS := -L/usr/openwin/lib -L/usr/dt/lib -L/usr/ucblib - XAWLIBS += -R/usr/openwin/lib -lXaw -lXmu -lXt -lX11 -lXext - ifndef OGLFLAGS - OGLFLAGS := -I$(OGLHOME)/include - endif - ifndef OGLLIBS - OGLLIBS := -L$(OGLHOME)/lib -lGLU -lGL - endif - CPPFLAGS += -DSOCKET_IRIX_SOLARIS - LOADLIBS += -L/usr/lib -lsocket -lnsl - CPPFLAGS += -DG4NOT_ISO_DELETES - CPPFLAGS += -I$(G4STLINC)/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) - endif -endif - -# -------- SUN/CC5 --------- !!! under testing !!! -# SunOS-2.6 CC-5.0 -ifeq ($(G4SYSTEM),SUN-CC5) - CXX := CC - ifdef G4OPTIMISE - CXXFLAGS := -O - else - ifdef G4DEBUG - CXXFLAGS := -g - FCFLAGS := -g - CCFLAGS := -g - endif - endif -# CXXFLAGS += -fnonstd - G4_HAVE_BOOL := yes - CFRONT_G4TEMPLATE_REPOSITORY := true - FC := f77 - SHEXT := so - AR := $(CXX) -xar -ptr$(G4TREP) -o - ECHO := /bin/echo - GREP := /usr/xpg4/bin/grep - FCLIBS := -lM77 -lF77 -lsunmath - X11FLAGS := -I/usr/openwin/include/X11/extensions -I/usr/openwin/include/X11 - X11FLAGS += -I/usr/openwin/include - X11LIBS := -L/usr/openwin/lib -L/usr/dt/lib -L/usr/ucblib - X11LIBS += -R/usr/openwin/lib -lXmu -lX11 -lXext - XMLIBS := -L/usr/openwin/lib -L/usr/dt/lib -L/usr/ucblib - XMLIBS += -R/usr/openwin/lib -lXt -lXm -lX11 - XAWFLAGS := -I/usr/openwin/include/X11 - XAWLIBS := -L/usr/openwin/lib -L/usr/dt/lib -L/usr/ucblib - XAWLIBS += -R/usr/openwin/lib -lXaw -lXmu -lXt -lX11 -lXext - ifndef OGLFLAGS - OGLFLAGS := -I$(OGLHOME)/include - endif - ifndef OGLLIBS - OGLLIBS := -L$(OGLHOME)/lib -lGLU -lGL - endif - CPPFLAGS += -DSOCKET_IRIX_SOLARIS - LOADLIBS += -L/usr/lib -lsocket -lnsl - CPPFLAGS += -DG4NOT_ISO_DELETES - CPPFLAGS += -I$(G4STLINC)/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 -endif - -# -------- HP --------- -# -ifeq ($(G4SYSTEM),HP-aCC) - CXX := aCC - ifdef G4OPTIMISE - CXXFLAGS := +O2 +Onolimit - else - ifdef G4DEBUG - CXXFLAGS := -g - FCFLAGS := -g - CCFLAGS := -g - endif - endif - CXXFLAGS += +DAportable +W823 - CPPFLAGS += -I/usr - ifdef G4MAKESHLIB - CXXFLAGS += +Z - endif - G4_HAVE_BOOL := yes - FC := f77 - FCFLAGS += +E6 +ppu - CCFLAGS += -Ae +DAportable - X11FLAGS := -I/usr/include/X11/extensions -I/usr/contrib/X11R6/include - X11FLAGS += -I/usr/contrib/X11R6/include/X11 - X11LIBS := -L/usr/contrib/X11R6/lib -lXmu -L/usr/lib -lXt -lXext -lX11 - XMFLAGS := -I/usr/include/Motif1.2 - XMLIBS := -L/usr/lib/Motif1.2_R6 -lXm - XAWFLAGS := -I/usr/contrib/X11R6/include -I/usr/contrib/X11R6/include/X11 - XAWLIBS := -L/usr/contrib/X11R6/lib -lXaw - ifndef OGLFLAGS - OGLFLAGS := -I$(OGLHOME)/include - endif - ifndef OGLLIBS - OGLLIBS := -L$(OGLHOME)/lib -lGLU -lGL - OGLLIBS += -L/opt/graphics/common/lib -lXwindow -lhpgfx -lXhp11 -ldld - endif - CPPFLAGS += -DG4NOT_ISO_DELETES - CPPFLAGS += -I$(G4STLINC)/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 - CPPFLAGS += $(OSPACEINC) -I$(OSPACE_BASE_DIR) - else - ifndef G4NO_STD_NAMESPACE - G4USE_STD_NAMESPACE := yes - CPPFLAGS += -DG4USE_STD_NAMESPACE - endif - endif -endif - -# -------- SGI --------- !!! not supported !!! -# Irix-6.5.5 CC-7.2.1 -ifeq ($(G4SYSTEM),SGI-CC) - CXX := CC - ifdef G4OPTIMISE - CXXFLAGS := -O -OPT:Olimit=5000 - else - ifdef G4DEBUG - CXXFLAGS := -g - FCFLAGS := -g - CCFLAGS := -g - endif - endif - G4_HAVE_BOOL := yes - CXXFLAGS += -ptused - FC := f77 - FCLIBS := -lftn - SHEXT := so - X11FLAGS := -I/usr/include/X11/extensions -I/usr/include/X11 - X11LIBS := -L/usr/lib -lXmu -lXt -lXext -lX11 - XMLIBS := -L/usr/lib -lXm - ifndef OGLFLAGS - OGLFLAGS := - endif - ifndef OGLLIBS - OGLLIBS := -L/usr/lib -lGLU -lGL - endif - CPPFLAGS += -DSOCKET_IRIX_SOLARIS - CPPFLAGS += -I$(G4STLINC)/wrappers/$(G4SYSTEM) - ifdef G4USE_OSPACE - CPPFLAGS += -DOS_IRIX_6_5 -DOS_NEW_CHECK -DOS_STL_ASSERT - CPPFLAGS += -DOS_NO_WSTRING -DOS_NO_ALLOCATORS - CPPFLAGS += $(OSPACEINC) -I$(OSPACE_BASE_DIR) - endif -endif - -# -------- AIX ---------- !!! not supported !!! -# AIX-4.3.2 xlC -ifeq ($(G4SYSTEM),AIX-xlC) - CXX := xlC - ifdef G4OPTIMISE - CXXFLAGS := -O3 -qtwolink -+ - else - ifdef G4DEBUG - CXXFLAGS := -g -qdbxextra -qcheck=all -qfullpath -qtwolink -+ - FCFLAGS := -g - CCFLAGS := -g - endif - endif - FC := xlf - FCFLAGS += -qextname - FCLIBS := -lxlf90 -lxlf - X11FLAGS := -I/usr/include/X11/extensions -I/usr/include/X11 - X11LIBS := -L/usr/lib -lXmu -lX11 -lXext - XMFLAGS := -I/usr/include/Motif1.2 - XMLIBS := -L/usr/lib -lXm -lXt -lX11 - XAWFLAGS := -I/usr/include/X11 - XAWLIBS := -L/usr/lib -lXaw -lXmu -lXt -lX11 -lXext - ifndef OGLFLAGS - OGLFLAGS := -I$(OGLHOME)/include - endif - ifndef OGLLIBS - OGLLIBS := -L$(OGLHOME)/lib -lGLU -lGL - endif - CPPFLAGS += -DG4NOT_ISO_DELETES - CPPFLAGS += -I$(G4STLINC)/wrappers/$(G4SYSTEM) - ifdef G4USE_OSPACE - CPPFLAGS += -DOS_AIX_4 -DOS_NEW_CHECK -DOS_STL_ASSERT - CPPFLAGS += -DOS_NO_WSTRING -DOS_NO_ALLOCATORS - CPPFLAGS += $(OSPACEINC) -I$(OSPACE_BASE_DIR) - endif -endif - -# -------- DEC --------- -# -ifeq ($(G4SYSTEM),DEC-cxx) - CXX := cxx - ifdef G4OPTIMISE - CXXFLAGS := -O - else - ifdef G4DEBUG - CXXFLAGS := -gall - FCFLAGS := -g - CCFLAGS := -g - endif - endif - G4_HAVE_BOOL := yes - CXXFLAGS += -ieee -timplicit_local - FC := f77 - FCLIBS := -lUfor -lfor -lFutil -lots - X11FLAGS := -I/usr/include/X11/extensions -I/usr/include/X11 - ifndef OGLFLAGS - OGLFLAGS := -I$(OGLHOME)/include -# OGLFLAGS := -I/usr/include -I/usr/local/include - endif - ifndef OGLLIBS - OGLLIBS := -L$(OGLHOME)/lib -lGLU -lGL -# OGLLIBS := -lMesaGLU -lMesaGL - endif - CPPFLAGS += -I$(G4STLINC)/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 - CPPFLAGS += $(OSPACEINC) -I$(OSPACE_BASE_DIR) - CXXFLAGS += -nostdnew - else - ifndef G4NO_STD_NAMESPACE - G4USE_STD_NAMESPACE := yes - CXXFLAGS += -std strict_ansi - CPPFLAGS += -DG4USE_STD_NAMESPACE - endif - endif -endif - -# ------ GNU/LINUX ------ -# -ifeq ($(G4SYSTEM),Linux-g++) - 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 G4MAKESHLIB - CXXFLAGS += -fPIC - FCFLAGS += -fPIC - CCFLAGS += -fPIC - endif - FC := g77 - FCFLAGS += -fno-automatic -fno-backslash -fno-second-underscore - FCLIBS := -lf2c - ECHO := /bin/echo -e - 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 - 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 - G4OODDLX_FLAGS += -D__STL_CLASS_PARTIAL_SPECIALIZATION -Dstd="" - endif -endif - -# ------ WIN32/VC ------ -# -ifeq ($(G4SYSTEM),WIN32-VC) - CXX := CL - G4_HAVE_BOOL := yes - G4_NO_CBRT := yes - ifdef G4OPTIMISE - CXXFLAGS += -Ox - else - ifdef G4DEBUG - CXXFLAGS += -Od -Zi -Fd$(G4LIBDIR)/lib$(name) - endif - endif - CXXFLAGS += -MD -GX -Zm200 -nologo -DWIN32 -D_CONSOLE - CXXFLAGS += -D_WIN32 -DOS - CPPFLAGS += -DWIN32 - # - # Should set $INCLUDE environment, if not set as below - # - ifdef G4USE_OSPACE - CXXFLAGS += $(OSPACEINC) - else - ifdef G4USE_STLPORT - CXXFLAGS += $(OSPACEINC) - else - # If native STL is selected, use ISO standard version. - G4USE_STD_NAMESPACE := yes - CPPFLAGS += -DG4USE_STD_NAMESPACE - endif - endif #ospace - - LDFLAGS += -FORCE /NODEFAULTLIB:MSVCRT.dll - - # - # Should set $LIB environment to include VC++ Studio lib directories, e.g. - # - # $(LIB_PATH)"c:\ProgramFiles\DevStudio\vc\lib" \ - # $(LIB_PATH)'\\srv1_info\v2\vc50pro1\DEVSTUDIO\VC\LIB' \ - # $(LIB_PATH)'\\srv1_info\v2\DecFtn5\x86\df\lib' - - AR := LIB - ECHO := echo -e - FC := f77 -# FCLIBS := -lf2c - ifndef OGLFLAGS - OGLFLAGS := - endif - ifndef OGLLIBS - OGLLIBS := -lGLU -lGL - endif -endif +include $(G4INSTALL)/config/sys/$(G4SYSTEM).gmk # If compiler recognises implicit C++ type bool... # diff --git a/config/binmake.gmk b/config/binmake.gmk index ad69859671..bfb9dceb5e 100644 --- a/config/binmake.gmk +++ b/config/binmake.gmk @@ -1,4 +1,4 @@ -# $Id: binmake.gmk,v 1.42 2000/02/14 11:24:45 gcosmo Exp $ +# $Id: binmake.gmk,v 1.45 2000/05/23 05:32:14 stesting Exp $ # ---------------------------------------------------------- # Script defining rules and paths for making binaries. # Gabriele Cosmo, 25/06/1998. @@ -58,9 +58,11 @@ ifndef INCFLAGS -I$(G4BASE)/processes/hadronic/models/low_energy/include \ -I$(G4BASE)/processes/hadronic/models/neutron_hp/include \ -I$(G4BASE)/processes/hadronic/models/isotope_production/include \ + -I$(G4BASE)/processes/hadronic/models/radiative_decay/include \ -I$(G4BASE)/processes/hadronic/stopping/include \ -I$(G4BASE)/geometry/management/include \ -I$(G4BASE)/geometry/solids/CSG/include \ + -I$(G4BASE)/geometry/solids/specific/include \ -I$(G4BASE)/geometry/solids/BREPS/include \ -I$(G4BASE)/geometry/solids/Boolean/include \ -I$(G4BASE)/geometry/solids/STEP/include \ diff --git a/config/g4step_correct.pl b/config/g4step_correct.pl index 41e954eac0..e1c13dcdfe 100755 --- a/config/g4step_correct.pl +++ b/config/g4step_correct.pl @@ -1,4 +1,4 @@ -#!/usr/local/bin/perl +#!/usr/bin/perl $filename = $ARGV[0]; open(INFILE, $filename) || die "\nSTEP file ".$filename." not found."; @@ -13,23 +13,35 @@ print "\nModifying STEP file for NIST toolkit..."; foreach (@filebuf) { - if(/.*VERTEX\_POINT.*/) +if(/.*VERTEX\_POINT.*/) { - s/VERTEX\_POINT\(\'\'\,/VERTEX\_POINT\(\'\'\,\'\'\,/g ; + s/VERTEX\_POINT\s*\(\s*\'\s*\'\s*\,/VERTEX\_POINT\(\'\'\,\'\'\,/g ; + s/VERTEX\_POINT\s*\(\s*\'NONE\'\s*\,/VERTEX\_POINT\(\'NONE\'\,\'\'\,/g ; } elsif(/.*EDGE\_LOOP.*/) { - s/EDGE\_LOOP\(\'\'\,/EDGE\_LOOP\(\'\'\,\'\'\,/g; + s/EDGE\_LOOP\s*\(\s*\'\s*\'\s*\,/EDGE\_LOOP\(\'\'\,\'\'\,/g; + s/EDGE\_LOOP\s*\(\s*\'NONE\'\s*\,/EDGE\_LOOP\(\'NONE\'\,\'\'\,/g; +} +elsif(/.*POLY\_LOOP.*/) +{ + s/POLY\_LOOP\s*\(\s*\'\s*\'\s*\,/POLY\_LOOP\(\'\'\,\'\'\,/g; + s/POLY\_LOOP\s*\(\s*\'NONE\'\s*\,/POLY\_LOOP\(\'NONE\'\,\'\'\,/g; } elsif(/.*ADVANCED\_FACE.*/) { ($a,$b,$c) = split('\)',$&); - s//$a\)\,\'\' $b\)$c\n/; + s//$a\)\,\'\'$b\)$c\n/; +} +elsif(/.*FACE\_SURFACE.*/) +{ + ($a,$b,$c) = split('\)',$&); + s//$a\)\,\'\'$b\)$c\n/; } elsif(/.*EDGE\_CURVE.*/) { ($a,$b,$c,$d,$e) = split(",",$&); - s//$a\, $b\,$c\,\'\'\,$d\,$e\n/; + s//$a\,$b\,$c\,\'\'\,$d\,$e\n/; } print OUTFILE; diff --git a/config/makeshlib.sh b/config/makeshlib.sh index 9587f32524..841ad05719 100755 --- a/config/makeshlib.sh +++ b/config/makeshlib.sh @@ -4,120 +4,140 @@ ############# G.Barrand #################### ############################################ if test $# -eq 2 ; then -g4system=$1 -name=$2 -liba=lib$name.a -#echo $g4system -#echo $name -############################################ -##### build libs ########################### -############################################ -if test -f $g4system/$liba ; then + g4system=$1 + name=$2 + liba=lib$name.a + #echo $g4system + #echo $name + ############################################ + ##### build libs ########################### + ############################################ + if test `uname` = "OSF1" ; then + if test -f $g4system/$liba ; then + cd $g4system + # Need to specify a path, so that at run time loader + # is able to find the so lib. This path is put in the + # binaries at link time. In principle a relative + # path from the binary is ok, but we will have + # more than one binary at different places; so + # we have to specify an absolute path. + rpath=`pwd` + #echo $rpath + libso=lib$name.so + /bin/rm -f $libso + /bin/rm -f so_locations + ld -expect_unresolved '*' -shared -o $libso -all $liba -rpath $rpath + cd .. + echo "$libso built." + else + ArchiveError=1 + fi + fi -if test `uname` = "OSF1" ; then -cd $g4system -# Need to specify a path, so that at run time loader -# is able to find the so lib. This path is put in the -# binaries at link time. In principle a relative -# path from the binary is ok, but we will have -# more than one binary at different places; so -# we have to specify an absolute path. -rpath=`pwd` -#echo $rpath -libso=lib$name.so -/bin/rm -f $libso -/bin/rm -f so_locations -ld -expect_unresolved '*' -shared -o $libso -all $liba -rpath $rpath -cd .. -echo "$libso built." -fi + if test `uname` = "HP-UX" ; then + cd $g4system + libso=lib$name.sl + /bin/rm -f $libso + # get .o files + objs=`ls *.o` + #ld -b -a shared -o $libso $objs + # CC does more than ld. + aCC -b -o $libso $objs + cd .. + echo "$libso built." + fi -if test `uname` = "HP-UX" ; then -cd $g4system -libso=lib$name.sl -/bin/rm -f $libso -# get .o files -objs=`ls *.o` -#ld -b -a shared -o $libso $objs -# CC does more than ld. -CC -b -o $libso $objs -cd .. -echo "$libso built." -fi + if test `uname` = "SunOS" ; then + cd $g4system + libso=lib$name.so + /bin/rm -f $libso + # get .o files + objs=`ls *.o` + CC -G -o $libso $objs + cd .. + echo "$libso built." + fi -if test `uname` = "IRIX" ; then -cd $g4system -# For path same remarks as for OSF1. -rpath=`pwd` -libso=lib$name.so -/bin/rm -f $libso -/bin/rm -f so_locations -#ld -shared -o $libso -all $liba -rpath $rpath -# CC does more than ld. -CC -Wl,-rpath,$rpath -shared -o $libso -all $liba -cd .. -echo "$libso built." -fi + if test `uname` = "IRIX" ; then + if test -f $g4system/$liba ; then + cd $g4system + # For path same remarks as for OSF1. + rpath=`pwd` + libso=lib$name.so + /bin/rm -f $libso + /bin/rm -f so_locations + #ld -shared -o $libso -all $liba -rpath $rpath + # CC does more than ld. + CC -Wl,-rpath,$rpath -shared -o $libso -all $liba + cd .. + echo "$libso built." + else + ArchivError=1 + fi + fi -if test `uname` = "Linux" ; then -cd $g4system -# For path same remarks as for OSF1. -libso=lib$name.so -/bin/rm -f $libso -g++ -Wl,-soname,$libso -shared *.o -o $libso -echo "$libso built." -fi + if test `uname` = "Linux" ; then + cd $g4system + # For path same remarks as for OSF1. + libso=lib$name.so + /bin/rm -f $libso + g++ -Wl,-soname,$libso -shared *.o -o $libso + echo "$libso built." + fi -if test `uname` = "AIX" ; then -# Not yet ready. -exit -#set -x -cd $g4system -libso=lib$name'.so' -/bin/rm -f lib$name.o -/bin/rm -f $libso -/bin/rm -f lib$name.exp -# Get .o files -objs=`ls *.o` -# Determine how to invoke nm depending on AIX version -AIXVERSION=`uname -v` -case ${AIXVERSION} in -#{ - 3*) - NM=/usr/ucb/nm - ;; - 4*) - NM='/usr/bin/nm -B' - ;; - *) - echo "Error in g4makeshlib.sh!" - exit 1 - ;; -#} -esac -# Build export file (from Mesa mklib.aix). -echo "#! lib$name.so " > lib$name.exp -echo "noentry" >> lib$name.exp -$NM $objs | awk '/ [BD] /{print $3}' | sort | uniq >> lib$name.exp -# Below command from Mesa mklib.aix. -#cc -o lib$name.o $objs $3 -bE:lib$name.exp -bM:SRE -enoentry -# Unnecessary option -enoentry that produces -# noentry file that contains exported symbols -cc -o lib$name.o $objs $3 -bE:lib$name.exp -bM:SRE -if test -f lib$name.o ; then -ar r $libso lib$name.o -/bin/rm -f lib$name.o -else -echo "Can't create lib$name.o." -fi -#cp $libso lib$name.a -cd .. -echo "$libso treated." -fi + if test `uname` = "AIX" ; then + # Not yet ready. + exit + #set -x + cd $g4system + libso=lib$name'.so' + /bin/rm -f lib$name.o + /bin/rm -f $libso + /bin/rm -f lib$name.exp + # Get .o files + objs=`ls *.o` + # Determine how to invoke nm depending on AIX version + AIXVERSION=`uname -v` + case ${AIXVERSION} in + #{ + 3*) + NM=/usr/ucb/nm + ;; + 4*) + NM='/usr/bin/nm -B' + ;; + *) + echo "Error in g4makeshlib.sh!" + exit 1 + ;; + #} + esac + # Build export file (from Mesa mklib.aix). + echo "#! lib$name.so " > lib$name.exp + echo "noentry" >> lib$name.exp + $NM $objs | awk '/ [BD] /{print $3}' | sort | uniq >> lib$name.exp + # Below command from Mesa mklib.aix. + #cc -o lib$name.o $objs $3 -bE:lib$name.exp -bM:SRE -enoentry + # Unnecessary option -enoentry that produces + # noentry file that contains exported symbols + cc -o lib$name.o $objs $3 -bE:lib$name.exp -bM:SRE + if test -f lib$name.o ; then + ar r $libso lib$name.o + /bin/rm -f lib$name.o + else + echo "Can't create lib$name.o." + fi + #cp $libso lib$name.a + cd .. + echo "$libso treated." + fi + + if [ $ArchiveError ]; then + echo "ERROR: Archive libraries needed and not found." + echo " Compile first with G$MAKESHLIB unset." + fi - -fi ############################################ else -echo 'Give name of binaray directory and library' + echo 'Give name of binary directory and library' fi diff --git a/config/sys/AIX-xlC.gmk b/config/sys/AIX-xlC.gmk new file mode 100644 index 0000000000..62f30036a5 --- /dev/null +++ b/config/sys/AIX-xlC.gmk @@ -0,0 +1,37 @@ +# +# -------- AIX ---------- !!! not supported !!! +# AIX-4.3.2 xlC +ifeq ($(G4SYSTEM),AIX-xlC) + CXX := xlC + ifdef G4OPTIMISE + CXXFLAGS := -O3 -qtwolink -+ + else + ifdef G4DEBUG + CXXFLAGS := -g -qdbxextra -qcheck=all -qfullpath -qtwolink -+ + FCFLAGS := -g + CCFLAGS := -g + endif + endif + FC := xlf + FCFLAGS += -qextname + FCLIBS := -lxlf90 -lxlf + X11FLAGS := -I/usr/include/X11/extensions -I/usr/include/X11 + X11LIBS := -L/usr/lib -lXmu -lX11 -lXext + XMFLAGS := -I/usr/include/Motif1.2 + XMLIBS := -L/usr/lib -lXm -lXt -lX11 + XAWFLAGS := -I/usr/include/X11 + XAWLIBS := -L/usr/lib -lXaw -lXmu -lXt -lX11 -lXext + ifndef OGLFLAGS + OGLFLAGS := -I$(OGLHOME)/include + endif + ifndef OGLLIBS + OGLLIBS := -L$(OGLHOME)/lib -lGLU -lGL + endif + CPPFLAGS += -DG4NOT_ISO_DELETES + CPPFLAGS += -I$(G4STLINC)/wrappers/$(G4SYSTEM) + ifdef G4USE_OSPACE + CPPFLAGS += -DOS_AIX_4 -DOS_NEW_CHECK -DOS_STL_ASSERT + CPPFLAGS += -DOS_NO_WSTRING -DOS_NO_ALLOCATORS + CPPFLAGS += $(OSPACEINC) -I$(OSPACE_BASE_DIR) + endif +endif diff --git a/config/sys/DEC-cxx.gmk b/config/sys/DEC-cxx.gmk new file mode 100644 index 0000000000..c9c206f976 --- /dev/null +++ b/config/sys/DEC-cxx.gmk @@ -0,0 +1,41 @@ +# +# -------- DEC --------- +# +ifeq ($(G4SYSTEM),DEC-cxx) + CXX := cxx + ifdef G4OPTIMISE + CXXFLAGS := -O + else + ifdef G4DEBUG + CXXFLAGS := -gall + FCFLAGS := -g + CCFLAGS := -g + endif + endif + G4_HAVE_BOOL := yes + CXXFLAGS += -ieee -timplicit_local + FC := f77 + FCLIBS := -lUfor -lfor -lFutil -lots + X11FLAGS := -I/usr/include/X11/extensions -I/usr/include/X11 + ifndef OGLFLAGS + OGLFLAGS := -I$(OGLHOME)/include +# OGLFLAGS := -I/usr/include -I/usr/local/include + endif + ifndef OGLLIBS + OGLLIBS := -L$(OGLHOME)/lib -lGLU -lGL +# OGLLIBS := -lMesaGLU -lMesaGL + endif + CPPFLAGS += -I$(G4STLINC)/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 + CPPFLAGS += $(OSPACEINC) -I$(OSPACE_BASE_DIR) + CXXFLAGS += -nostdnew + else + ifndef G4NO_STD_NAMESPACE + G4USE_STD_NAMESPACE := yes + CXXFLAGS += -std strict_ansi + CPPFLAGS += -DG4USE_STD_NAMESPACE + endif + endif +endif diff --git a/config/sys/HP-aCC.gmk b/config/sys/HP-aCC.gmk new file mode 100644 index 0000000000..72a464ec42 --- /dev/null +++ b/config/sys/HP-aCC.gmk @@ -0,0 +1,45 @@ +# +# -------- HP --------- +# +ifeq ($(G4SYSTEM),HP-aCC) + CXX := aCC + ifdef G4OPTIMISE + CXXFLAGS := +O2 +Onolimit + else + ifdef G4DEBUG + CXXFLAGS := -g + FCFLAGS := -g + CCFLAGS := -g + endif + endif + CXXFLAGS += +DAportable +W823 + CPPFLAGS += -I/usr + ifdef G4MAKESHLIB + CXXFLAGS += +Z + endif + G4_HAVE_BOOL := yes + FC := f77 + FCFLAGS += +E6 +ppu + CCFLAGS += -Ae +DAportable + X11FLAGS := -I/usr/include/X11/extensions -I/usr/contrib/X11R6/include + X11FLAGS += -I/usr/contrib/X11R6/include/X11 + X11LIBS := -L/usr/contrib/X11R6/lib -lXmu -L/usr/lib -lXt -lXext -lX11 + XMFLAGS := -I/usr/include/Motif1.2 + XMLIBS := -L/usr/lib/Motif1.2_R6 -lXm + XAWFLAGS := -I/usr/contrib/X11R6/include -I/usr/contrib/X11R6/include/X11 + XAWLIBS := -L/usr/contrib/X11R6/lib -lXaw + ifndef OGLFLAGS + OGLFLAGS := -I$(OGLHOME)/include + endif + ifndef OGLLIBS + OGLLIBS := -L$(OGLHOME)/lib -lGLU -lGL + OGLLIBS += -L/opt/graphics/common/lib -lXwindow -lhpgfx -lXhp11 -ldld + endif + CPPFLAGS += -DG4NOT_ISO_DELETES + CPPFLAGS += -I$(G4STLINC)/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 + CPPFLAGS += $(OSPACEINC) -I$(OSPACE_BASE_DIR) + endif +endif diff --git a/config/sys/Linux-g++.gmk b/config/sys/Linux-g++.gmk new file mode 100644 index 0000000000..3e300119aa --- /dev/null +++ b/config/sys/Linux-g++.gmk @@ -0,0 +1,47 @@ +# +# ------ GNU/LINUX ------ +# +ifeq ($(G4SYSTEM),Linux-g++) + 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 G4MAKESHLIB + CXXFLAGS += -fPIC + FCFLAGS += -fPIC + CCFLAGS += -fPIC + endif + FC := g77 + FCFLAGS += -fno-automatic -fno-backslash -fno-second-underscore + FCLIBS := -lg2c -lnsl + ECHO := /bin/echo -e + 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 + 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 + G4OODDLX_FLAGS += -D__STL_CLASS_PARTIAL_SPECIALIZATION -Dstd="" + endif +endif diff --git a/config/sys/SGI-CC.gmk b/config/sys/SGI-CC.gmk new file mode 100644 index 0000000000..04ddec6d99 --- /dev/null +++ b/config/sys/SGI-CC.gmk @@ -0,0 +1,36 @@ +# +# -------- SGI --------- !!! not supported !!! +# Irix-6.5.5 CC-7.2.1 +ifeq ($(G4SYSTEM),SGI-CC) + CXX := CC + ifdef G4OPTIMISE + CXXFLAGS := -O -OPT:Olimit=5000 + else + ifdef G4DEBUG + CXXFLAGS := -g + FCFLAGS := -g + CCFLAGS := -g + endif + endif + G4_HAVE_BOOL := yes + CXXFLAGS += -ptused + FC := f77 + FCLIBS := -lftn + SHEXT := so + X11FLAGS := -I/usr/include/X11/extensions -I/usr/include/X11 + X11LIBS := -L/usr/lib -lXmu -lXt -lXext -lX11 + XMLIBS := -L/usr/lib -lXm + ifndef OGLFLAGS + OGLFLAGS := + endif + ifndef OGLLIBS + OGLLIBS := -L/usr/lib -lGLU -lGL + endif + CPPFLAGS += -DSOCKET_IRIX_SOLARIS + CPPFLAGS += -I$(G4STLINC)/wrappers/$(G4SYSTEM) + ifdef G4USE_OSPACE + CPPFLAGS += -DOS_IRIX_6_5 -DOS_NEW_CHECK -DOS_STL_ASSERT + CPPFLAGS += -DOS_NO_WSTRING -DOS_NO_ALLOCATORS + CPPFLAGS += $(OSPACEINC) -I$(OSPACE_BASE_DIR) + endif +endif diff --git a/config/sys/SUN-CC.gmk b/config/sys/SUN-CC.gmk new file mode 100644 index 0000000000..e31a890492 --- /dev/null +++ b/config/sys/SUN-CC.gmk @@ -0,0 +1,50 @@ +# +# -------- SUN --------- +# +ifeq ($(G4SYSTEM),SUN-CC) + CXX := CC + ifdef G4OPTIMISE + CXXFLAGS := -O + else + ifdef G4DEBUG + CXXFLAGS := -g + FCFLAGS := -g + CCFLAGS := -g + endif + endif + ifdef G4MAKESHLIB + CXXFLAGS += -KPIC + endif +# CXXFLAGS += -fnonstd + CFRONT_G4TEMPLATE_REPOSITORY := true + FC := f77 + SHEXT := so + AR := $(CXX) -xar -ptr$(G4TREP) -o + ECHO := /bin/echo + GREP := /usr/xpg4/bin/grep + FCLIBS := -lM77 -lF77 -lsunmath + X11FLAGS := -I/usr/openwin/include/X11/extensions -I/usr/openwin/include/X11 + X11FLAGS += -I/usr/openwin/include + X11LIBS := -L/usr/openwin/lib -L/usr/dt/lib -L/usr/ucblib + X11LIBS += -R/usr/openwin/lib -lXmu -lX11 -lXext + XMLIBS := -L/usr/openwin/lib -L/usr/dt/lib -L/usr/ucblib + XMLIBS += -R/usr/openwin/lib -lXt -lXm -lX11 + XAWFLAGS := -I/usr/openwin/include/X11 + XAWLIBS := -L/usr/openwin/lib -L/usr/dt/lib -L/usr/ucblib + XAWLIBS += -R/usr/openwin/lib -lXaw -lXmu -lXt -lX11 -lXext + ifndef OGLFLAGS + OGLFLAGS := -I$(OGLHOME)/include + endif + ifndef OGLLIBS + OGLLIBS := -L$(OGLHOME)/lib -lGLU -lGL + endif + CPPFLAGS += -DSOCKET_IRIX_SOLARIS + LOADLIBS += -L/usr/lib -lsocket -lnsl + CPPFLAGS += -DG4NOT_ISO_DELETES + CPPFLAGS += -I$(G4STLINC)/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) + endif +endif diff --git a/config/sys/SUN-CC5.gmk b/config/sys/SUN-CC5.gmk new file mode 100644 index 0000000000..346c98b1ab --- /dev/null +++ b/config/sys/SUN-CC5.gmk @@ -0,0 +1,59 @@ +# +# -------- SUN --------- +# +ifeq ($(G4SYSTEM),SUN-CC5) + CXX := CC + ifdef G4OPTIMISE + CXXFLAGS := -O + else + ifdef G4DEBUG + CXXFLAGS := -g + FCFLAGS := -g + CCFLAGS := -g + endif + endif +# CXXFLAGS += -fnonstd + ifdef G4MAKESHLIB + CXXFLAGS += -KPIC + endif + G4_HAVE_BOOL := yes + CFRONT_G4TEMPLATE_REPOSITORY := true + FC := f77 + SHEXT := so + AR := $(CXX) -xar -ptr$(G4TREP) -o + ECHO := /bin/echo + GREP := /usr/xpg4/bin/grep + FCLIBS := -lM77 -lF77 -lsunmath + X11FLAGS := -I/usr/openwin/include/X11/extensions -I/usr/openwin/include/X11 + X11FLAGS += -I/usr/openwin/include + X11LIBS := -L/usr/openwin/lib -L/usr/dt/lib -L/usr/ucblib + X11LIBS += -R/usr/openwin/lib -lXmu -lX11 -lXext + XMLIBS := -L/usr/openwin/lib -L/usr/dt/lib -L/usr/ucblib + XMLIBS += -R/usr/openwin/lib -lXt -lXm -lX11 + XAWFLAGS := -I/usr/openwin/include/X11 + XAWLIBS := -L/usr/openwin/lib -L/usr/dt/lib -L/usr/ucblib + XAWLIBS += -R/usr/openwin/lib -lXaw -lXmu -lXt -lX11 -lXext + ifndef OGLFLAGS + OGLFLAGS := -I$(OGLHOME)/include + endif + ifndef OGLLIBS + OGLLIBS := -L$(OGLHOME)/lib -lGLU -lGL + endif + CPPFLAGS += -DSOCKET_IRIX_SOLARIS + LOADLIBS += -L/usr/lib -lsocket -lnsl + CPPFLAGS += -DG4NOT_ISO_DELETES + CPPFLAGS += -I$(G4STLINC)/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 +endif diff --git a/config/sys/WIN32-VC.gmk b/config/sys/WIN32-VC.gmk new file mode 100644 index 0000000000..59d76f69b0 --- /dev/null +++ b/config/sys/WIN32-VC.gmk @@ -0,0 +1,52 @@ +# +# ------ WIN32/VC ------ +# +ifeq ($(G4SYSTEM),WIN32-VC) + CXX := CL + G4_HAVE_BOOL := yes + G4_NO_CBRT := yes + ifdef G4OPTIMISE + CXXFLAGS += -Ox + else + ifdef G4DEBUG + CXXFLAGS += -Od -Zi -Fd$(G4LIBDIR)/lib$(name) + endif + endif + CXXFLAGS += -MD -GX -Zm200 -nologo -DWIN32 -D_CONSOLE + CXXFLAGS += -D_WIN32 -DOS + CPPFLAGS += -DWIN32 + # + # Should set $INCLUDE environment, if not set as below + # + ifdef G4USE_OSPACE + CXXFLAGS += $(OSPACEINC) + else + ifdef G4USE_STLPORT + CXXFLAGS += $(OSPACEINC) + else + # If native STL is selected, use ISO standard version. + G4USE_STD_NAMESPACE := yes + CPPFLAGS += -DG4USE_STD_NAMESPACE + endif + endif #ospace + + LDFLAGS += -FORCE /NODEFAULTLIB:MSVCRT.dll + + # + # Should set $LIB environment to include VC++ Studio lib directories, e.g. + # + # $(LIB_PATH)"c:\ProgramFiles\DevStudio\vc\lib" \ + # $(LIB_PATH)'\\srv1_info\v2\vc50pro1\DEVSTUDIO\VC\LIB' \ + # $(LIB_PATH)'\\srv1_info\v2\DecFtn5\x86\df\lib' + + AR := LIB + ECHO := echo -e + FC := f77 +# FCLIBS := -lf2c + ifndef OGLFLAGS + OGLFLAGS := + endif + ifndef OGLLIBS + OGLLIBS := -lGLU -lGL + endif +endif diff --git a/environments/History b/environments/History index 324f0e94c6..f20d9f0baa 100644 --- a/environments/History +++ b/environments/History @@ -1,4 +1,4 @@ -$Id: History,v 1.4 1999/11/10 16:27:22 johna Exp $ +$Id: History,v 1.6 2000/06/09 10:09:21 barrand Exp $ ------------------------------------------------------------------- ========================================================= @@ -18,6 +18,15 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +envs-V01-01-01 09 June 2000 John Allison +- Only OPACS and History tagged. + +09 June 2000 Guy Barrand +- Some correction to be able to compile + with 01-01-ref-04 + +envs-V01-01-00 7th June 2000 Guy Barrand + envs-V00-01-00 10th November 1999 John Allison - Only OPACS and History tagged. diff --git a/environments/OPACS/History b/environments/OPACS/History index 46de704308..4e3b16ad4d 100644 --- a/environments/OPACS/History +++ b/environments/OPACS/History @@ -1,4 +1,4 @@ -$Id: History,v 1.2 1999/09/15 12:28:18 barrand Exp $ +$Id: History,v 1.3 2000/03/17 08:59:46 barrand Exp $ ------------------------------------------------------------------- ========================================================= @@ -18,6 +18,9 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +15 March 2000 Guy Barrand +- Modification to compile on Linux-g++ with STL. + 15 Sep 1999 Guy Barrand - Modification to compile on Linux-g++ with STL. diff --git a/environments/OPACS/app/EXPO.cc b/environments/OPACS/app/EXPO.cc index 881e7490f1..01a03bf676 100644 --- a/environments/OPACS/app/EXPO.cc +++ b/environments/OPACS/app/EXPO.cc @@ -5,15 +5,11 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: EXPO.cc,v 1.5.2.1.2.1 1999/12/07 20:46:48 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: EXPO.cc,v 1.8 2000/03/17 08:56:10 barrand Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #include -// GB : put this include before the GL ones. -// It avoid a clash with STL includes on Linux. -#include "g4rw/tvhdict.h" - /*Geant4*/ #include diff --git a/environments/OPACS/app/TEST.cc b/environments/OPACS/app/TEST.cc index 6a93bb1401..8654778934 100644 --- a/environments/OPACS/app/TEST.cc +++ b/environments/OPACS/app/TEST.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: TEST.cc,v 1.2.6.1 1999/12/07 20:46:49 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: TEST.cc,v 1.3 1999/12/15 14:48:40 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #include diff --git a/environments/OPACS/include/EXPO_Detector.icc b/environments/OPACS/include/EXPO_Detector.icc index d93a829609..3ace85c0af 100644 --- a/environments/OPACS/include/EXPO_Detector.icc +++ b/environments/OPACS/include/EXPO_Detector.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: EXPO_Detector.icc,v 1.2.6.1 1999/12/07 20:46:49 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: EXPO_Detector.icc,v 1.3 1999/12/15 14:48:41 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 f6a78c6b83..c7fabdf9a5 100644 --- a/environments/OPACS/include/EXPO_PhysicsList.hh +++ b/environments/OPACS/include/EXPO_PhysicsList.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: EXPO_PhysicsList.hh,v 1.3.6.1 1999/12/07 20:46:49 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: EXPO_PhysicsList.hh,v 1.4 1999/12/15 14:48:41 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/environments/OPACS/include/EXPO_PhysicsList.icc b/environments/OPACS/include/EXPO_PhysicsList.icc index c3882e9344..cd07626ef4 100644 --- a/environments/OPACS/include/EXPO_PhysicsList.icc +++ b/environments/OPACS/include/EXPO_PhysicsList.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: EXPO_PhysicsList.icc,v 1.3.6.1.2.3 1999/12/14 07:06:18 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: EXPO_PhysicsList.icc,v 1.4 1999/12/15 14:48:41 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/environments/OPACS/include/EXPO_Primary.icc b/environments/OPACS/include/EXPO_Primary.icc index 67c94bdf4b..922e5d54ac 100644 --- a/environments/OPACS/include/EXPO_Primary.icc +++ b/environments/OPACS/include/EXPO_Primary.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: EXPO_Primary.icc,v 1.2.6.1 1999/12/07 20:46:50 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: EXPO_Primary.icc,v 1.3 1999/12/15 14:48:41 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // See also G4/run/example/EXPO_PrimaryGeneratorAction.cc. diff --git a/environments/OPACS/include/G4o.h b/environments/OPACS/include/G4o.h index 573e2cf8d0..d0605903b7 100644 --- a/environments/OPACS/include/G4o.h +++ b/environments/OPACS/include/G4o.h @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4o.h,v 1.2.6.1 1999/12/07 20:46:50 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4o.h,v 1.3 1999/12/15 14:48:41 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 c0e2c3c16d..a12244acc0 100644 --- a/environments/OPACS/include/G4oCommon.hh +++ b/environments/OPACS/include/G4oCommon.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4oCommon.hh,v 1.2.6.1 1999/12/07 20:46:50 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4oCommon.hh,v 1.3 1999/12/15 14:48:41 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // /* Included by G4o.h. diff --git a/environments/OPACS/include/G4oCommon.icc b/environments/OPACS/include/G4oCommon.icc index 493b4d4ca6..eda41d54a0 100644 --- a/environments/OPACS/include/G4oCommon.icc +++ b/environments/OPACS/include/G4oCommon.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4oCommon.icc,v 1.2.6.1 1999/12/07 20:46:50 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4oCommon.icc,v 1.3 1999/12/15 14:48:41 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // /* Included by G4o.cc. diff --git a/environments/OPACS/include/G4oDrawer.hh b/environments/OPACS/include/G4oDrawer.hh index b8f22bdfa3..65d07d1cf5 100644 --- a/environments/OPACS/include/G4oDrawer.hh +++ b/environments/OPACS/include/G4oDrawer.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4oDrawer.hh,v 1.2.6.1 1999/12/07 20:46:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4oDrawer.hh,v 1.3 1999/12/15 14:48:43 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 52e212c828..4b1c263f7b 100644 --- a/environments/OPACS/include/G4oEXPO.h +++ b/environments/OPACS/include/G4oEXPO.h @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4oEXPO.h,v 1.2.6.1 1999/12/07 20:46:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4oEXPO.h,v 1.3 1999/12/15 14:48:43 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 295b58023c..ebc6df3e12 100644 --- a/environments/OPACS/include/G4oScene.hh +++ b/environments/OPACS/include/G4oScene.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4oScene.hh,v 1.2.6.1 1999/12/07 20:46:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4oScene.hh,v 1.4 2000/03/17 08:58:32 barrand Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // /* +---------------------- Copyright notice -------------------------------+ */ /* | Copyright (C) 1995, Guy Barrand, LAL Orsay, (barrand@lal.in2p3.fr) | */ @@ -44,6 +44,16 @@ public: void AddThis (const G4Polyhedra&); void AddThis (const G4VSolid& solid); // For solids not above. + void BeginPrimitives (const G4Transform3D&); + void EndPrimitives (); + void AddPrimitive (const G4Polyline&); + void AddPrimitive (const G4Text&); + void AddPrimitive (const G4Circle&); + void AddPrimitive (const G4Square&); + void AddPrimitive (const G4Polymarker&); + void AddPrimitive (const G4Polyhedron&); + void AddPrimitive (const G4NURBS&); + void PreAddThis (const G4Transform3D& objectTransformation, const G4VisAttributes& visAttribs); void PostAddThis (); diff --git a/environments/OPACS/include/G4oState.hh b/environments/OPACS/include/G4oState.hh index 46414804cf..f338d63744 100644 --- a/environments/OPACS/include/G4oState.hh +++ b/environments/OPACS/include/G4oState.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4oState.hh,v 1.3.4.1 1999/12/07 20:46:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4oState.hh,v 1.4 1999/12/15 14:48:43 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4oState_h #define G4oState_h diff --git a/environments/OPACS/include/WoG4o.h b/environments/OPACS/include/WoG4o.h index 22993fce38..a4c94cc69f 100644 --- a/environments/OPACS/include/WoG4o.h +++ b/environments/OPACS/include/WoG4o.h @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: WoG4o.h,v 1.2.6.1 1999/12/07 20:46:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: WoG4o.h,v 1.3 1999/12/15 14:48:43 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // /* +---------------------- Copyright notice -------------------------------+ */ /* | Copyright (C) 1995, Guy Barrand, LAL Orsay, (barrand@lal.in2p3.fr) | */ diff --git a/environments/OPACS/mgr/Config.mk b/environments/OPACS/mgr/Config.mk index 6b7c07b5ca..ef599e149f 100644 --- a/environments/OPACS/mgr/Config.mk +++ b/environments/OPACS/mgr/Config.mk @@ -39,7 +39,7 @@ OSF1-cxx : This_needed "CCLDFLAGS = -std1" \ "CCLDEND = -lots -lSM -lICE -ldnet_stub" \ "CXX = cxx" \ -"CXXFLAGS = -ptr ${OREPOSITORY} -DG4_HAVE_BOOL -g" \ +"CXXFLAGS = -std strict_ansi -ptr ${OREPOSITORY} -DG4_HAVE_BOOL -g" \ "CXXLD = cxx" \ "CXXLDFLAGS = -ptr ${OREPOSITORY} -non_shared" \ "CXXLDEND = -lots -lSM -lICE -ldnet_stub" \ @@ -131,7 +131,7 @@ Linux-gxx : This_needed "libXt = -L/usr/X11R6/lib -lXt" \ "libXmu = -L/usr/X11R6/lib -lXmu" \ "libXaw = -L/usr/X11R6/lib -lXaw" \ -"libXm = -L/usr/X11R6/lib -lXm" \ +"libXm = -L/usr/X11R6/lib -lXm -lXaw" \ $(This_macros) SunOS-CC : This_needed diff --git a/environments/OPACS/mgr/Makefile b/environments/OPACS/mgr/Makefile index 350f2c1847..dd200a8e9f 100644 --- a/environments/OPACS/mgr/Makefile +++ b/environments/OPACS/mgr/Makefile @@ -37,8 +37,8 @@ This_macros = \ "libGo = -L${GOROOT}/${OCONFIG} -lGo" \ "libwww = -L${W3OROOT}/${OCONFIG} -lW3o" \ "libhtmlw = -L${HTMLOROOT}/${OCONFIG} -lHTMLo" \ -"G4_CPPFLAGS = -I${G4INSTALL}/source/global/management/include -I${G4INSTALL}/source/global/HEPRandom/include -I${G4INSTALL}/source/global/HEPGeometry/include -I${G4INSTALL}/source/run/include -I${G4INSTALL}/source/materials/include -I${G4INSTALL}/source/particles/management/include -I${G4INSTALL}/source/particles/bosons/include -I${G4INSTALL}/source/particles/leptons/include -I${G4INSTALL}/source/particles/hadrons/barions/include -I${G4INSTALL}/source/particles/hadrons/ions/include -I${G4INSTALL}/source/particles/hadrons/mesons/include -I${G4INSTALL}/source/processes/management/include -I${G4INSTALL}/source/processes/general/include -I${G4INSTALL}/source/processes/decay/include -I${G4INSTALL}/source/processes/optical/include -I${G4INSTALL}/source/processes/transportation/include -I${G4INSTALL}/source/processes/parameterisation/include -I${G4INSTALL}/source/processes/electromagnetic/standard/include -I${G4INSTALL}/source/processes/electromagnetic/muons/include -I${G4INSTALL}/source/processes/electromagnetic/utils/include -I${G4INSTALL}/source/processes/electromagnetic/xrays/include -I${G4INSTALL}/source/processes/hadronic/management/include -I${G4INSTALL}/source/processes/hadronic/processes/include -I${G4INSTALL}/source/processes/hadronic/util/include -I${G4INSTALL}/source/processes/hadronic/cross_sections/include -I${G4INSTALL}/source/processes/hadronic/models/generator/include -I${G4INSTALL}/source/processes/hadronic/models/high_energy/include -I${G4INSTALL}/source/processes/hadronic/models/low_energy/include -I${G4INSTALL}/source/processes/hadronic/stopping/include -I${G4INSTALL}/source/geometry/management/include -I${G4INSTALL}/source/geometry/solids/CSG/include -I${G4INSTALL}/source/geometry/solids/BREPS/include -I${G4INSTALL}/source/geometry/solids/STEP/include -I${G4INSTALL}/source/geometry/volumes/include -I${G4INSTALL}/source/geometry/magneticfield/include -I${G4INSTALL}/source/track/include -I${G4INSTALL}/source/tracking/include -I${G4INSTALL}/source/digits+hits/detector/include -I${G4INSTALL}/source/digits+hits/hits/include -I${G4INSTALL}/source/digits+hits/digits/include -I${G4INSTALL}/source/readout/include -I${G4INSTALL}/source/event/include -I${G4INSTALL}/source/graphics_reps/include -I${G4INSTALL}/source/persistency/include -I${G4INSTALL}/source/intercoms/include -I${G4INSTALL}/source/visualization/modeling/include" \ -"libg4 = -L${G4LIB}/$${G4SYSTEM} -lG4modeling -lG4emstandard -lG4decay -lG4UIbasic -lG4muons -lG4ions -lG4mesons -lG4leptons -lG4barions -lG4run -lG4event -lG4bosons -lG4tracking -lG4transportation -lG4detector -lG4emutils -lG4hits -lG4procman -lG4digits -lG4track -lG4UIcommon -lG4partman -lG4volumes -lG4magneticfield -lG4csg -lG4geometrymng -lG4materials -lG4intercoms -lG4graphics_reps -lG4globman" +"G4_CPPFLAGS = -DG4USE_STL -DG4USE_NAMESPACE -DG4USE_STD_NAMESPACE -I${G4INSTALL}/source/global/management/include -I${G4INSTALL}/source/global/HEPRandom/include -I${G4INSTALL}/source/global/HEPGeometry/include -I${G4INSTALL}/source/run/include -I${G4INSTALL}/source/materials/include -I${G4INSTALL}/source/particles/management/include -I${G4INSTALL}/source/particles/bosons/include -I${G4INSTALL}/source/particles/leptons/include -I${G4INSTALL}/source/particles/hadrons/barions/include -I${G4INSTALL}/source/particles/hadrons/ions/include -I${G4INSTALL}/source/particles/hadrons/mesons/include -I${G4INSTALL}/source/processes/management/include -I${G4INSTALL}/source/processes/general/include -I${G4INSTALL}/source/processes/decay/include -I${G4INSTALL}/source/processes/optical/include -I${G4INSTALL}/source/processes/transportation/include -I${G4INSTALL}/source/processes/parameterisation/include -I${G4INSTALL}/source/processes/electromagnetic/standard/include -I${G4INSTALL}/source/processes/electromagnetic/muons/include -I${G4INSTALL}/source/processes/electromagnetic/utils/include -I${G4INSTALL}/source/processes/electromagnetic/xrays/include -I${G4INSTALL}/source/processes/hadronic/management/include -I${G4INSTALL}/source/processes/hadronic/processes/include -I${G4INSTALL}/source/processes/hadronic/util/include -I${G4INSTALL}/source/processes/hadronic/cross_sections/include -I${G4INSTALL}/source/processes/hadronic/models/generator/include -I${G4INSTALL}/source/processes/hadronic/models/high_energy/include -I${G4INSTALL}/source/processes/hadronic/models/low_energy/include -I${G4INSTALL}/source/processes/hadronic/stopping/include -I${G4INSTALL}/source/geometry/management/include -I${G4INSTALL}/source/geometry/solids/CSG/include -I${G4INSTALL}/source/geometry/solids/specific/include -I${G4INSTALL}/source/geometry/solids/BREPS/include -I${G4INSTALL}/source/geometry/solids/STEP/include -I${G4INSTALL}/source/geometry/volumes/include -I${G4INSTALL}/source/geometry/magneticfield/include -I${G4INSTALL}/source/track/include -I${G4INSTALL}/source/tracking/include -I${G4INSTALL}/source/digits+hits/detector/include -I${G4INSTALL}/source/digits+hits/hits/include -I${G4INSTALL}/source/digits+hits/digits/include -I${G4INSTALL}/source/readout/include -I${G4INSTALL}/source/event/include -I${G4INSTALL}/source/graphics_reps/include -I${G4INSTALL}/source/persistency/include -I${G4INSTALL}/source/intercoms/include -I${G4INSTALL}/source/visualization/modeling/include" \ +"libg4 = -L${G4LIB}/$${G4SYSTEM} -lG4modeling -lG4emstandard -lG4decay -lG4UIbasic -lG4muons -lG4ions -lG4mesons -lG4leptons -lG4baryons -lG4run -lG4event -lG4bosons -lG4tracking -lG4transportation -lG4detector -lG4emutils -lG4hits -lG4procman -lG4digits -lG4track -lG4UIcommon -lG4partman -lG4volumes -lG4magneticfield -lG4geomBoolean -lG4csg -lG4geometrymng -lG4materials -lG4intercoms -lG4graphics_reps -lG4globman" # With Geant4 global libs use : #"libg4 = -L${G4LIB}/$${G4SYSTEM} -lG4modeling -lG4run -lG4event -lG4tracking -lG4processes -lG4particles -lG4digits+hits -lG4track -lG4materials -lG4geometry -lG4graphics_reps -lG4intercoms -lG4global" diff --git a/environments/OPACS/mgr/setup.csh b/environments/OPACS/mgr/setup.csh index 83a8095fc9..4bf0353620 100644 --- a/environments/OPACS/mgr/setup.csh +++ b/environments/OPACS/mgr/setup.csh @@ -19,18 +19,23 @@ setenv CLHEPROOT /lal/CLHEP/1.4/HP-UX-aCC setenv RWLIBS "-lrwtool" endif if ( `uname -n` == "asc" ) then +setenv G4WORKDIR /geant4/geant4-01-01 +setenv G4INSTALL $G4WORKDIR +setenv G4LIB $G4WORKDIR/lib +setenv G4SYSTEM DEC-cxx setenv CLHEPROOT /lal/CLHEP/1.4/OSF1-cxx -setenv RWROOT /lal/rogue/6.1/OSF1-cxx -setenv RWFLAGS "-I${RWROOT}" -setenv RWLIBS "-L${RWROOT}/lib -lrwtool" +setenv RWFLAGS "-I$G4INSTALL/source/global/STLInterface" +setenv RWLIBS "" +# To be able to link : +limit datasize 500000 endif if ( `uname -n` == "lx1.lal.in2p3.fr" ) then +setenv G4WORKDIR /geant4/geant4-01-01 +setenv G4INSTALL $G4WORKDIR +setenv G4LIB $G4WORKDIR/lib +setenv G4SYSTEM Linux-g++ setenv CLHEPROOT /lal/CLHEP/1.4/Linux-gxx -# With RogueWave : -#setenv RWROOT /lal/rogue/6.1/Linux-gxx -#setenv RWFLAGS "-I${RWROOT}" -#setenv RWLIBS "-L${RWROOT}/lib -lrwtool" -# With STL : +# With STL, hook the dummy rw things : setenv RWFLAGS "-I$G4INSTALL/source/global/STLInterface" setenv RWLIBS "" endif diff --git a/environments/OPACS/src/G4o.cc b/environments/OPACS/src/G4o.cc index d22174aa55..fde6a6c0ae 100644 --- a/environments/OPACS/src/G4o.cc +++ b/environments/OPACS/src/G4o.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4o.cc,v 1.4.2.1.2.1 1999/12/07 20:46:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4o.cc,v 1.7 2000/03/17 08:57:45 barrand Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // /* #define DEBUG @@ -15,10 +15,6 @@ #include #include -// GB : put this include before the GL ones. -// It avoid a clash with STL includes on Linux. -#include "g4rw/tvhdict.h" - // Geant4 : #include #include diff --git a/environments/OPACS/src/G4oDrawer.cc b/environments/OPACS/src/G4oDrawer.cc index 06c5609634..2e0470c5b3 100644 --- a/environments/OPACS/src/G4oDrawer.cc +++ b/environments/OPACS/src/G4oDrawer.cc @@ -5,18 +5,14 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4oDrawer.cc,v 1.3.2.1.2.1 1999/12/07 20:46:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4oDrawer.cc,v 1.6 2000/03/17 08:57:46 barrand Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // /* From geant4/visualization/management/src/G4VisManager.cc. */ #include -// GB : put this include before the GL ones. -// It avoid a clash with STL includes on Linux. -#include "g4rw/tvhdict.h" - #include /*G4*/ diff --git a/environments/OPACS/src/G4oScene.cc b/environments/OPACS/src/G4oScene.cc index d9a7850ca7..566836c2e4 100644 --- a/environments/OPACS/src/G4oScene.cc +++ b/environments/OPACS/src/G4oScene.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4oScene.cc,v 1.3.2.1.2.1 1999/12/07 20:46:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4oScene.cc,v 1.7 2000/06/09 10:00:58 barrand Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // /* +---------------------- Copyright notice -------------------------------+ */ /* | Copyright (C) 1995, Guy Barrand, LAL Orsay, (barrand@lal.in2p3.fr) | */ @@ -25,10 +25,6 @@ #include #endif -// GB : put this include before the GL ones. -// It avoid a clash with STL includes on Linux. -#include "g4rw/tvhdict.h" - /*Co*/ #include #include @@ -52,6 +48,7 @@ #include #include #include +#include #include @@ -251,6 +248,100 @@ void G4oScene::AddThis ( AddPolyhedron (solid.CreatePolyhedron()); } /***************************************************************************/ +void G4oScene::BeginPrimitives( + const G4Transform3D& objectTransformation +) +/***************************************************************************/ +/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ +{ + //G4VSceneHandler::BeginPrimitives (objectTransformation); +} +/***************************************************************************/ +void G4oScene::EndPrimitives( +) +/***************************************************************************/ +/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ +{ + //G4VSceneHandler::EndPrimitives (); +} +/***************************************************************************/ +void G4oScene::AddPrimitive( + const G4Polyline& +) +/***************************************************************************/ +/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ +{ +#ifdef DEBUG + printf ("debug : AddPrimitive : polyline.\n"); +#endif +} +/***************************************************************************/ +void G4oScene::AddPrimitive( + const G4Text& +) +/***************************************************************************/ +/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ +{ +#ifdef DEBUG + printf ("debug : AddPrimitive : text.\n"); +#endif +} +/***************************************************************************/ +void G4oScene::AddPrimitive( + const G4Circle& +) +/***************************************************************************/ +/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ +{ +#ifdef DEBUG + printf ("debug : AddPrimitive : circle.\n"); +#endif +} +/***************************************************************************/ +void G4oScene::AddPrimitive( + const G4Square& +) +/***************************************************************************/ +/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ +{ +#ifdef DEBUG + printf ("debug : AddPrimitive : square.\n"); +#endif +} +/***************************************************************************/ +void G4oScene::AddPrimitive( + const G4Polymarker& +) +/***************************************************************************/ +/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ +{ +#ifdef DEBUG + printf ("debug : AddPrimitive : polymarker.\n"); +#endif +} +/***************************************************************************/ +void G4oScene::AddPrimitive( + const G4Polyhedron& +) +/***************************************************************************/ +/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ +{ +#ifdef DEBUG + printf ("debug : AddPrimitive : polyhedron.\n"); +#endif +} +/***************************************************************************/ +void G4oScene::AddPrimitive( + const G4NURBS& +) +/***************************************************************************/ +/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ +{ +#ifdef DEBUG + printf ("debug : AddPrimitive : NURBS.\n"); +#endif +} +/***************************************************************************/ void G4oScene::SetNodeName ( char* a_name ) diff --git a/environments/OPACS/src/G4oState.cc b/environments/OPACS/src/G4oState.cc index a507ab36f0..b4f936b827 100644 --- a/environments/OPACS/src/G4oState.cc +++ b/environments/OPACS/src/G4oState.cc @@ -5,15 +5,11 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4oState.cc,v 1.3.2.1.2.1 1999/12/07 20:46:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4oState.cc,v 1.6 2000/03/17 08:57:48 barrand Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // //#define DEBUG -// GB : put this include before the GL ones. -// It avoid a clash with STL includes on Linux. -#include "g4rw/tvhdict.h" - //G4 #include #include diff --git a/examples/History b/examples/History index b7913b1fea..2a4506cb45 100644 --- a/examples/History +++ b/examples/History @@ -1,4 +1,4 @@ -$Id: History,v 1.42 2000/02/18 13:23:04 stesting Exp $ +$Id: History,v 1.55 2000/06/17 12:56:56 stesting Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,47 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +17th June 2000 John Allison (examples-V01-01-07) +- Updated all .out files for geant4-01-01-ref-06. + +8th June 2000 John Allison (examples-V01-01-06) +- geant4-01-01-ref-05 + exampleN03-V01-01-00 + exampleN03-V01-01-01 + + exampleN04-V01-01-00 + PersistentEx01-V01-00-00 + PersistentEx01-V01-00-00. + +5th June 2000 Steve O'Neale (examples-V01-01-05) +- Updated N02 and N04.out for geant4-01-01-ref-05 + +26th May 2000 John Allison (examples-V01-01-04) +- Updated N02 and N06.out relative to examples-V01-01-00. Note: + examples-V01-01-02 should be abandoned since em-V01-01-01 was rejected. + +14th May 2000 John Allison (examples-V01-01-03) +- TestEm6 compatible with em-V01-01-01 (testem6-V01-01-00). +- Comments in examples/novice/N03/exN03VisX.mac 's are + updated for DAWN Version 3.85a + +3rd May 2000 John Allison (examples-V01-01-02) +- Updated many .out files for em-V01-01-01. + +20th April 2000 John Allison (examples-V01-01-00) +- Updated exampleN04[.EMtest].out for field-V01-01-00. + +9th March 2000 John Allison (examples-V01-00-05) +- Updated all .out files - novice and extended - for Sun debug NONISO. +- Included minor fix for NT in TestEm4.cc. + +6th March 2000 John Allison (examples-V01-00-04) +- testem-V01-00-02 for TestEm1-5. +- testem-V01-00-03 for TestEm6. +- geant4-01-00-ref-07 for TestEm8. +- changes to TestEm1/2/3 physics lists for ref-07 (Hisaya). + +2nd March 2000 John Allison (examples-V01-00-03) +- Updated exampleN04.out geant4-01-00-ref-07. + +25th February 2000 Hisaya Kurisige (examples-V01-00-02) +- New Physics Lists for particles-V01-00-00. + 14th February 2000 Michel Maire (tag examples-V01-00-01a by John Allison) - Changed cout to G4cout in extended/electromagnetic/TestEm2/src/Em2DetectorConstruction.cc diff --git a/examples/extended/electromagnetic/TestEm1/GNUmakefile b/examples/extended/electromagnetic/TestEm1/GNUmakefile index ac7fcb3388..8da7bf3cb7 100644 --- a/examples/extended/electromagnetic/TestEm1/GNUmakefile +++ b/examples/extended/electromagnetic/TestEm1/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.2 2000/01/21 12:29:24 maire Exp $ +# $Id: GNUmakefile,v 1.3 2000/05/17 10:55:09 maire Exp $ # -------------------------------------------------------------- # GNUmakefile for examples module. Gabriele Cosmo, 06/04/98. # -------------------------------------------------------------- @@ -19,7 +19,7 @@ include $(G4INSTALL)/config/architecture.gmk ifdef G4NOHIST CPPFLAGS += -DG4NOHIST else - LDFLAGS += -L/cern/pro/lib + LDFLAGS += -L$(CERN)/pro/lib LOADLIBS += -lpacklib $(FCLIBS) endif diff --git a/examples/extended/electromagnetic/TestEm1/History b/examples/extended/electromagnetic/TestEm1/History index 6add39611f..fc10d48428 100644 --- a/examples/extended/electromagnetic/TestEm1/History +++ b/examples/extended/electromagnetic/TestEm1/History @@ -1,4 +1,4 @@ -$Id: History,v 1.3 2000/01/21 12:29:24 maire Exp $ +$Id: History,v 1.4 2000/06/17 12:44:26 stesting Exp $ ------------------------------------------------------------------- ========================================================= @@ -14,6 +14,10 @@ track of all tags. ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- + +June 17, 2000 John Allison (testem1-V01-00-00) +- Updated TestEm1.out for geant4-01-01-ref-06. + 21-01-00 cppflag G4NOHIST to protect hbook histograms. 11-10-99 moved from: source/processes/electromagnetic/test diff --git a/examples/extended/electromagnetic/TestEm1/TestEm1.cc b/examples/extended/electromagnetic/TestEm1/TestEm1.cc index 9f8cca48c4..b1062bc64e 100644 --- a/examples/extended/electromagnetic/TestEm1/TestEm1.cc +++ b/examples/extended/electromagnetic/TestEm1/TestEm1.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: TestEm1.cc,v 1.3 1999/12/15 14:48:48 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/electromagnetic/TestEm1/TestEm1.out b/examples/extended/electromagnetic/TestEm1/TestEm1.out index e6d97fc269..a600c36b99 100644 --- a/examples/extended/electromagnetic/TestEm1/TestEm1.out +++ b/examples/extended/electromagnetic/TestEm1/TestEm1.out @@ -1,11 +1,8 @@ ********************************************** - Geant4 version $Name: geant4-01-01 $ - (07-Dec-99) + Geant4 version $Name: geant4-02-00 $ + (10-Mar-2000) Copyright : Geant4 Collaboration ********************************************** -Constructing Visualization Manager.... -Initialising Visualization Manager.... -Registering graphics systems.... ***** Table : Nb of materials = 8 ***** @@ -61,10 +58,23 @@ eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to delta ray energy sampled from differential Xsection. PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. -eBrem: Total cross sections from a parametrisation. Good description from 1 KeV to 100 GeV. + eIoni Minimum Delta cut in range=0.1 mm. + + material min.delta energy(keV) + + Air 0.99 + H2liquid 28.677 + Water 81.518 + liquidArgon 78.381 + Aluminium 125.07 + Iron 224.12 + Lead 229.66 + Uranium 295.96 + +eBrem: Total cross sections from a parametrisation. Good description from 10 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). gamma energies sampled according Heitler @@ -73,30 +83,43 @@ annihil: Total cross section from Heilter formula (annihilation into 2 photons) 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 Minimum Delta cut in range=0.1 mm. + + material min.delta energy(keV) + + Air 0.99 + H2liquid 28.677 + Water 81.518 + liquidArgon 78.381 + Aluminium 125.07 + Iron 224.12 + Lead 229.66 + Uranium 295.96 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 150 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 100 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. MuBrems: theoretical cross section - Good description up to 1000 TeV. - PhysicsTables from 1 GeV to 1e+03 PeV in 100 bins. + 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 TeV. - PhysicsTables from 1 GeV to 1e+03 PeV in 50 bins. + Good description up to 1000 PeV. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. ============= The cut Energy ============================== gamma e- mu- proton neutron Cut in range 1 mm 1 mm 1 mm 1 mm 1 mm @@ -110,7 +133,7 @@ Cut in energy Lead 101 keV 1.38 MeV 8.52 MeV 20.9 MeV 990 eV Uranium 110 keV 1.92 MeV 10.5 MeV 26.1 MeV 990 eV =================================================== -# $Id: TestEm1.out,v 1.1 2000/01/21 14:58:58 maire Exp $ +# $Id: TestEm1.out,v 1.4 2000/06/17 12:44:26 stesting Exp $ # # Macro file for "TestEm1.cc" # (can be run in batch, without graphic) @@ -130,25 +153,38 @@ phot: Total cross sections from a parametrisation. Good description from 10 KeV 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. + 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 parametrisation. Good description from 1 KeV to 100 GeV. + eIoni Minimum Delta cut in range=0.000605 mm. + + material min.delta energy(keV) + + Air 0.99 + H2liquid 0.99 + Water 3.2733 + liquidArgon 3.7298 + Aluminium 6.301 + Iron 10.426 + Lead 8.9969 + Uranium 11.567 + +eBrem: Total cross sections from a parametrisation. Good description from 10 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). gamma energies sampled according Heitler @@ -157,30 +193,43 @@ annihil: Total cross section from Heilter formula (annihilation into 2 photons) 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 Minimum Delta cut in range=0.000605 mm. + + material min.delta energy(keV) + + Air 0.99 + H2liquid 0.99 + Water 3.2733 + liquidArgon 3.7298 + Aluminium 6.301 + Iron 10.426 + Lead 8.9969 + Uranium 11.567 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 150 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 100 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. MuBrems: theoretical cross section - Good description up to 1000 TeV. - PhysicsTables from 1 GeV to 1e+03 PeV in 100 bins. + 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 TeV. - PhysicsTables from 1 GeV to 1e+03 PeV in 50 bins. + Good description up to 1000 PeV. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. ============= The cut Energy ============================== gamma e- mu- proton neutron Cut in range 2.2 mm 6.05 mum 1 mm 1 mm 1 mm @@ -214,21 +263,19 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 100 - User=11s Real=13s Sys=1.6s + User=68.58s Real=73.99s Sys=4.55s - nb tracks/event neutral: 24.64 charged: 642.10 - nb steps/event neutral: 135.32 charged: 1276.54 + nb tracks/event neutral: 24.41 charged: 637.29 + nb steps/event neutral: 132.32 charged: 1260.26 nb of process calls per event: eIoni eBrem phot compt conv annihil - 1253.39 21.62 23.11 110.68 1.53 1.53 + 1237.22 21.65 23.02 107.91 1.39 1.39 --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 1096809697, 1350310764 + Current couple of seeds = 1386467388, 892794333 ---------------------------------------- -Graphics systems deleted. -VisManager deleting. G4 kernel has come to Quit state. Deletion of G4 kernel class start. UserDetectorConstruction deleted. diff --git a/examples/extended/electromagnetic/TestEm1/geant3/README b/examples/extended/electromagnetic/TestEm1/geant3/README index 921c7abc6d..63b15e8695 100644 --- a/examples/extended/electromagnetic/TestEm1/geant3/README +++ b/examples/extended/electromagnetic/TestEm1/geant3/README @@ -1,5 +1,5 @@ - testem1.cra is the geant3 equivalent of TestEm1 + testem1/src is the geant3 equivalent of TestEm1 % cd geant3 % gmakeB to make an executable (Batch version) @@ -16,7 +16,7 @@ run01.dat (runNN.dat is the equivalent of the G4 runNN.mac) - testem1 produces several histo saved as testem1.histo if ISWIT(2)=1 + testem1 produces several histo saved as testem1.paw if ISWIT(2)=1 Content of these histo: diff --git a/examples/extended/electromagnetic/TestEm1/geant3/gmakeB b/examples/extended/electromagnetic/TestEm1/geant3/gmakeB index e5fcd1bb6b..35531b8f18 100755 --- a/examples/extended/electromagnetic/TestEm1/geant3/gmakeB +++ b/examples/extended/electromagnetic/TestEm1/geant3/gmakeB @@ -9,21 +9,10 @@ if ($G4SYSTEM == AIX-AFS) set extnam=-qextname mkdir $G4SYSTEM cd $G4SYSTEM # -# Run patchy -# -cat > temp.cra << eocra -+USE,batch. -eocra -cat ../$name.cra >> temp.cra -# -ypatchy - $name temp $name - $name :go -rm temp.cra -# # fortran compilation # -fsplit $name.f -rm $name.f -hepf77 $extnam -c -g *.f +hepf77 $extnam -c -g -Dbatch -I/cern/pro/include -I../include ../src/*.F + # # Link # @@ -37,7 +26,7 @@ chmod +x $name.xb # # cleanup # -rm *.lis *.lst *.f *.o +rm *.o echo 'done' exit diff --git a/examples/extended/electromagnetic/TestEm1/geant3/gmakeT b/examples/extended/electromagnetic/TestEm1/geant3/gmakeT index c43ae81a1c..0250f7c723 100755 --- a/examples/extended/electromagnetic/TestEm1/geant3/gmakeT +++ b/examples/extended/electromagnetic/TestEm1/geant3/gmakeT @@ -9,15 +9,9 @@ if ($G4SYSTEM == AIX-AFS) set extnam=-qextname mkdir $G4SYSTEM cd $G4SYSTEM # -# Run patchy -# -ypatchy - $name ../$name $name - $name :go -# # fortran compilation # -fsplit $name.f -rm $name.f -hepf77 $extnam -c -g *.f +hepf77 $extnam -c -g -I/cern/pro/include -I../include ../src/*.F # # Link # @@ -31,7 +25,7 @@ chmod +x $name.xt # # cleanup # -rm *.lis *.lst *.f *.o +rm *.o echo 'done' exit diff --git a/examples/extended/electromagnetic/TestEm1/geant3/include/calor.inc b/examples/extended/electromagnetic/TestEm1/geant3/include/calor.inc new file mode 100644 index 0000000000..01b3d2dae6 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm1/geant3/include/calor.inc @@ -0,0 +1,7 @@ + + COMMON/CALOR/Imat,BoxSize,Field +* +* Imat = GEANT material number. (data card CALOR) +* BoxSize = total size of the box (cm) (data card CALOR) +* Field = magnetic field (tesla) (data card CALOR) +* diff --git a/examples/extended/electromagnetic/TestEm1/geant3/include/celoss.inc b/examples/extended/electromagnetic/TestEm1/geant3/include/celoss.inc new file mode 100644 index 0000000000..eb22131091 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm1/geant3/include/celoss.inc @@ -0,0 +1,4 @@ + + COMMON/CELOSS/ ETOT,NTRAK0,NTRAK1,NSTEP0,NSTEP1,NBCALL(12), + + NSTRK0,NSTRK1 + diff --git a/examples/extended/electromagnetic/TestEm1/geant3/src/gtgama.F b/examples/extended/electromagnetic/TestEm1/geant3/src/gtgama.F new file mode 100644 index 0000000000..6feb8775a5 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm1/geant3/src/gtgama.F @@ -0,0 +1,267 @@ + + SUBROUTINE GTGAMA +C. +C. ****************************************************************** +C. * * +C. * Photon track. Computes step size and propagates particle * +C. * through step. * +C. * * +C. * ==>Called by : GTRACK * +C. * Authors R.Brun, F.Bruyant L.Urban ******** * +C. * * +C. ****************************************************************** +C. +#include "geant321/gcbank.inc" +#include "geant321/gccuts.inc" +#include "geant321/gcjloc.inc" +#include "geant321/gconsp.inc" +#include "geant321/gcphys.inc" +#include "geant321/gcstak.inc" +#include "geant321/gctmed.inc" +#include "geant321/gcmulo.inc" +#include "geant321/gctrak.inc" +#include "geant321/gcunit.inc" + + PARAMETER (EPSMAC=1.E-6) + DOUBLE PRECISION ONE,XCOEF1,XCOEF2,XCOEF3,ZERO + + PARAMETER (ONE=1,ZERO=0) + PARAMETER (EPCUT=1.022E-3) +C. +*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + IABAN = NINT(DPHYS1) +*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +C. ------------------------------------------------------------------ +* +* *** Particle below energy threshold ? Short circuit +* +* + IF (GEKIN.LE.CUTGAM) GOTO 998 +* +* *** Update local pointers if medium has changed +* + IF(IUPD.EQ.0)THEN + IUPD = 1 + JPHOT = LQ(JMA-6) + JCOMP = LQ(JMA-8) + JPAIR = LQ(JMA-10) + JPFIS = LQ(JMA-12) + JRAYL = LQ(JMA-13) + ENDIF +* +* *** Compute current step size +* + IPROC = 103 + STEP = STEMAX + GEKRT1 = 1 .-GEKRAT +* +* ** Step limitation due to pair production ? +* + IF (GETOT.GT.EPCUT) THEN + IF (IPAIR.GT.0) THEN + STEPPA = GEKRT1*Q(JPAIR+IEKBIN) +GEKRAT*Q(JPAIR+IEKBIN+1) + SPAIR = STEPPA*ZINTPA + IF (SPAIR.LT.STEP) THEN + STEP = SPAIR + IPROC = 6 + ENDIF + ENDIF + ENDIF +* +* ** Step limitation due to Compton scattering ? +* + IF (ICOMP.GT.0) THEN + STEPCO = GEKRT1*Q(JCOMP+IEKBIN) +GEKRAT*Q(JCOMP+IEKBIN+1) + SCOMP = STEPCO*ZINTCO + IF (SCOMP.LT.STEP) THEN + STEP = SCOMP + IPROC = 7 + ENDIF + ENDIF +* +* ** Step limitation due to photo-electric effect ? +* + IF (GEKIN.LT.0.4) THEN + IF (IPHOT.GT.0) THEN + STEPPH = GEKRT1*Q(JPHOT+IEKBIN) +GEKRAT*Q(JPHOT+IEKBIN+1) + SPHOT = STEPPH*ZINTPH + IF (SPHOT.LT.STEP) THEN + STEP = SPHOT + IPROC = 8 + ENDIF + ENDIF + ENDIF +* +* ** Step limitation due to photo-fission ? +* + IF (JPFIS.GT.0) THEN + STEPPF = GEKRT1*Q(JPFIS+IEKBIN) +GEKRAT*Q(JPFIS+IEKBIN+1) + SPFIS = STEPPF*ZINTPF + IF (SPFIS.LT.STEP) THEN + STEP = SPFIS + IPROC = 23 + ENDIF + ENDIF +* +* ** Step limitation due to Rayleigh scattering ? +* + IF (IRAYL.GT.0) THEN + IF (GEKIN.LT.0.01) THEN + STEPRA = GEKRT1*Q(JRAYL+IEKBIN) +GEKRAT*Q(JRAYL+IEKBIN+1) + SRAYL = STEPRA*ZINTRA + IF (SRAYL.LT.STEP) THEN + STEP = SRAYL + IPROC = 25 + ENDIF + ENDIF + ENDIF +* + IF (STEP.LT.0.) STEP = 0. +* +* ** Step limitation due to geometry ? +* + IF (STEP.GE.SAFETY) THEN + CALL GTNEXT + IF (IGNEXT.NE.0) THEN + STEP = SNEXT + PREC + INWVOL= 2 + IPROC = 0 + NMEC = 1 + LMEC(1)=1 + ENDIF +* +* Update SAFETY in stack companions, if any + IF (IQ(JSTAK+3).NE.0) THEN + DO 10 IST = IQ(JSTAK+3),IQ(JSTAK+1) + JST = JSTAK +3 +(IST-1)*NWSTAK + Q(JST+11) = SAFETY + 10 CONTINUE + IQ(JSTAK+3) = 0 + ENDIF +* + ELSE + IQ(JSTAK+3) = 0 + ENDIF +* +* *** Linear transport +* + IF (INWVOL.EQ.2) THEN + DO 20 I = 1,3 + VECTMP = VECT(I) +STEP*VECT(I+3) + IF(VECTMP.EQ.VECT(I)) THEN +* +* *** Correct for machine precision +* + IF(VECT(I+3).NE.0.) THEN + VECTMP = VECT(I)+ABS(VECT(I))*SIGN(1.,VECT(I+3))* + + EPSMAC + IF(NMEC.GT.0) THEN + IF(LMEC(NMEC).EQ.104) NMEC=NMEC-1 + ENDIF + NMEC=NMEC+1 + LMEC(NMEC)=104 +#ifdef G3DEBUG + WRITE(CHMAIL, 10000) + CALL GMAIL(0,0) + WRITE(CHMAIL, 10100) GEKIN, NUMED, STEP, SNEXT + CALL GMAIL(0,0) +10000 FORMAT(' Boundary correction in GTGAMA: ', + + ' GEKIN NUMED STEP SNEXT') +10100 FORMAT(31X,E10.3,1X,I10,1X,E10.3,1X,E10.3,1X) +#endif + ENDIF + ENDIF + VECT(I) = VECTMP + 20 CONTINUE + ELSE + DO 30 I = 1,3 + VECT(I) = VECT(I) +STEP*VECT(I+3) + 30 CONTINUE + ENDIF +* + SLENG = SLENG +STEP +* +* *** Update time of flight +* + TOFG = TOFG +STEP/CLIGHT +* +* *** Update interaction probabilities +* + IF (GETOT.GT.EPCUT) THEN + IF (IPAIR.GT.0) ZINTPA = ZINTPA -STEP/STEPPA + ENDIF + IF (ICOMP.GT.0) ZINTCO = ZINTCO -STEP/STEPCO + IF (GEKIN.LT.0.4) THEN + IF (IPHOT.GT.0) ZINTPH = ZINTPH -STEP/STEPPH + ENDIF + IF (JPFIS.GT.0) ZINTPF = ZINTPF -STEP/STEPPF + IF (IRAYL.GT.0) THEN + IF (GEKIN.LT.0.01) ZINTRA = ZINTRA -STEP/STEPRA + ENDIF +* + IF (IPROC.EQ.0) GO TO 999 + NMEC = 1 + LMEC(1) = IPROC +* +* ** Pair production ? +* + IF (IPROC.EQ.6) THEN + CALL GPAIRG +* +* ** Compton scattering ? +* + ELSE IF (IPROC.EQ.7) THEN + CALL GCOMP +* +* ** Photo-electric effect ? +* + ELSE IF (IPROC.EQ.8) THEN +* + IF ((IABAN.NE.0).AND.(GEKIN.LE.0.001)) THEN +* Calculate range of the photoelectron ( with kin. energy Ephot) + JCOEF = LQ(JMA-17) + IF(GEKRAT.LT.0.7) THEN + I1 = MAX(IEKBIN-1,1) + ELSE + I1 = MIN(IEKBIN,NEKBIN-1) + ENDIF + I1 = 3*(I1-1)+1 + XCOEF1 = Q(JCOEF+I1) + XCOEF2 = Q(JCOEF+I1+1) + XCOEF3 = Q(JCOEF+I1+2) + IF(XCOEF1.NE.0.) THEN + STOPMX = -XCOEF2+SIGN(ONE,XCOEF1)*SQRT(XCOEF2**2 - (XCOEF3- + + GEKIN/XCOEF1)) + ELSE + STOPMX = - (XCOEF3-GEKIN)/XCOEF2 + ENDIF +* +* DO NOT call GPHOT if this (overestimated) range is smaller +* than SAFETY +* + IF (STOPMX.LE.SAFETY) GOTO 998 + ENDIF + + CALL GPHOT +* +* ** Rayleigh effect ? +* + ELSE IF (IPROC.EQ.25) THEN + CALL GRAYL +* +* ** Photo-fission ? +* + ELSE IF (IPROC.EQ.23) THEN + CALL GPFIS +* + ENDIF +* + GOTO 999 +998 DESTEP = GEKIN + GEKIN = 0. + GETOT = 0. + VECT(7)= 0. + ISTOP = 2 + NMEC = 1 + LMEC(1)= 30 + 999 END diff --git a/examples/extended/electromagnetic/TestEm1/geant3/src/gukine.F b/examples/extended/electromagnetic/TestEm1/geant3/src/gukine.F new file mode 100644 index 0000000000..a42bdcd433 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm1/geant3/src/gukine.F @@ -0,0 +1,30 @@ + + SUBROUTINE GUKINE +* +* Generates Kinematics for primary track +* +* Data card Kine : Itype Ekine +* +#include "geant321/gcbank.inc" +#include "geant321/gcflag.inc" +#include "geant321/gckine.inc" +* + DIMENSION VERTEX(3),PLAB(3) +* + DATA VERTEX/3*0./ + DATA PLAB /3*0./ +* +* + CALL GSVERT(VERTEX,0,0,0,0,NVERT) +* +* + JPA = LQ(JPART-IKINE) + XMASS = Q(JPA+7) + PLAB(1) = SQRT(PKINE(1)*(PKINE(1)+2*XMASS)) +* + CALL GSKINE(PLAB,IKINE,NVERT,0,0,NT) +* +* *** Kinematics debug + IF (IEVENT.EQ.1.OR.IDEBUG.NE.0) CALL GPRINT('KINE',0) +* + END diff --git a/examples/extended/electromagnetic/TestEm1/geant3/src/guout.F b/examples/extended/electromagnetic/TestEm1/geant3/src/guout.F new file mode 100644 index 0000000000..98db6689c1 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm1/geant3/src/guout.F @@ -0,0 +1,28 @@ + + SUBROUTINE GUOUT +* +* User routine called at the end of each event +* +#include "geant321/gcflag.inc" +#include "celoss.inc" +* + CHARACTER*4 unit +* +* *** drawing +* +#ifndef batch + IF (ISWIT(1).NE.0) THEN + CALL GDHEAD (110110,'TestEm1',0.) + CALL GDSHOW (3) + CALL GDXYZ (0) + END IF +#endif +* +* energy deposited +* + CALL GEVKEV (ETOT,ETunit,unit) + IF (ISWIT(1).NE.0) PRINT 750,ETunit,unit +* + 750 FORMAT(1X,'Energy deposit: ',F8.3,A4) +* + END diff --git a/examples/extended/electromagnetic/TestEm1/geant3/src/gustep.F b/examples/extended/electromagnetic/TestEm1/geant3/src/gustep.F new file mode 100644 index 0000000000..58a5f7cbc4 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm1/geant3/src/gustep.F @@ -0,0 +1,44 @@ + + SUBROUTINE GUSTEP +* +* User routine called at the end of each tracking step +* +#include "geant321/gcflag.inc" +#include "geant321/gckine.inc" +#include "geant321/gcking.inc" +#include "geant321/gctrak.inc" +#include "celoss.inc" +* +* +* *** Debug event and store tracks for drawing + IF (IDEBUG.NE.0) CALL GPCXYZ + IF (IDEBUG.NE.0) CALL GPGKIN + IF ((ISWIT(1).EQ.1).AND.(CHARGE.NE.0.)) CALL GSXYZ + IF (ISWIT(1).EQ.2) CALL GSXYZ +* +* *** Something generated ? + IF(NGKINE.GT.0) CALL GSKING(0) +* +* *** Energy deposited + ETOT = ETOT + DESTEP +* +* *** count number of steps + IF (CHARGE.NE.0.) THEN + NSTEP1 = NSTEP1 + 1 + NSTRK1 = NSTRK1 + 1 + CALL HFILL (3,STEP*10,0.,1.) + ELSE + NSTEP0 = NSTEP0 + 1 + NSTRK0 = NSTRK0 + 1 + ENDIF +* +* *** count nb of invoked processes + IF (NMEC.GT.0) THEN + DO IM = 1,NMEC + IPROC = LMEC(IM) + IF (IPROC.EQ.21) IPROC = 12 + IF (IPROC.LE.12) NBCALL(IPROC) = NBCALL(IPROC)+1 + ENDDO + ENDIF + + END diff --git a/examples/extended/electromagnetic/TestEm1/geant3/src/gutrak.F b/examples/extended/electromagnetic/TestEm1/geant3/src/gutrak.F new file mode 100644 index 0000000000..76ca091500 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm1/geant3/src/gutrak.F @@ -0,0 +1,29 @@ + + + SUBROUTINE GUTRAK +* +* User routine to control tracking of one track +* Called by GTREVE +* +#include "geant321/gckine.inc" +#include "geant321/gctrak.inc" +#include "celoss.inc" + +* +* +* *** initialisation track per track + NSTRK0 = 0 + NSTRK1 = 0 +* + CALL GTRACK +* +* *** count nb of tracks + IF (CHARGE.NE.0.) THEN + NTRAK1 = NTRAK1 + 1 + CALL HFILL (1,SLENG*10,0.,1.) + CALL HFILL (2,REAL(NSTRK1),0.,1.) + ELSE + NTRAK0 = NTRAK0 + 1 + ENDIF +* + END diff --git a/examples/extended/electromagnetic/TestEm1/geant3/src/gutrev.F b/examples/extended/electromagnetic/TestEm1/geant3/src/gutrev.F new file mode 100644 index 0000000000..9e0698c3c2 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm1/geant3/src/gutrev.F @@ -0,0 +1,13 @@ + + SUBROUTINE GUTREV +* +* User routine to control tracking of one event +* Called by GRUN +* +#include "celoss.inc" +* + ETOT = 0. +* + CALL GTREVE +* + END diff --git a/examples/extended/electromagnetic/TestEm1/geant3/src/main.F b/examples/extended/electromagnetic/TestEm1/geant3/src/main.F new file mode 100644 index 0000000000..2ce531104e --- /dev/null +++ b/examples/extended/electromagnetic/TestEm1/geant3/src/main.F @@ -0,0 +1,61 @@ +#ifdef batch + + PROGRAM main +* +* + PARAMETER (NGBANK=100000, NHBOOK=10000) + COMMON/GCBANK/Q(NGBANK) + COMMON/PAWC /H(NHBOOK) +* + CALL GZEBRA( NGBANK) + CALL HLIMIT(-NHBOOK) +* +* *** initialize HIGZ + CALL HPLINT(0) +* +* *** GEANT initialisation + CALL UGINIT +* +* *** Start events processing + CALL GRUN +* +* *** End of RUN + CALL UGLAST +* + STOP + END + +#else + + PROGRAM main +* +* GEANT main program. To link with the MOTIF user interface +* the routine GPAWPP(NWGEAN,NWPAW) should be called, whereas +* the routine GPAW(NWGEAN,NWPAW) gives access to the basic +* graphics version. +* + PARAMETER (NWGEAN=3000000, NWPAW=1000000) + COMMON/GCBANK/GEANT(NWGEAN) + COMMON/PAWC /PAW (NWPAW) +* +* + CALL GPAW (NWGEAN,NWPAW) +* + END +* + SUBROUTINE qnext + END +* + SUBROUTINE czopen + END +* + SUBROUTINE cztcp + END +* + SUBROUTINE czclos + END +* + SUBROUTINE czputa + END + +#endif diff --git a/examples/extended/electromagnetic/TestEm1/geant3/src/ugeom.F b/examples/extended/electromagnetic/TestEm1/geant3/src/ugeom.F new file mode 100644 index 0000000000..ba6471bd6f --- /dev/null +++ b/examples/extended/electromagnetic/TestEm1/geant3/src/ugeom.F @@ -0,0 +1,75 @@ + + SUBROUTINE UGEOM +* +* *** Define user geometry set up +* +* +#include "calor.inc" +* + DIMENSION PAR(3) + + DIMENSION Aair(2),Zair(2),Wair(2) + DIMENSION AH2O(2),ZH2O(2),WH2O(2) +* +* *** Air compound parameters + DATA Aair/14.01, 16.00/ + DATA Zair/ 7. , 8. / + DATA Wair/ 0.7 , 0.3 / +* +* *** Air compound parameters + DATA AH2O/ 1.01, 16.00/ + DATA ZH2O/ 1. , 8. / + DATA WH2O/ 2. , 1. / +* +* *** Defines USER perticular materials + CALL GSMIXT( 1,'Air' , Aair ,Zair, 1.29E-3, 2 , Wair) + CALL GSMATE( 2,'H2 Liquid', 1.01, 1., 0.0708 , 865., 790., 0,0) + CALL GSMIXT( 3,'Water' , AH2O ,ZH2O, 1.0 ,-2 , WH2O) + CALL GSMATE( 4,'Liquid Ar', 39.95, 18., 1.39 , 14.0, 84.0, 0,0) + CALL GSMATE( 5,'Aluminium', 26.98, 13., 2.7 , 8.9, 37.2, 0,0) + CALL GSMATE( 6,'Iron' , 55.85, 26., 7.87 , 1.76, 17.1, 0,0) + CALL GSMATE( 7,'Tungsten' ,183.85, 74., 19.30 , 0.35, 18.5, 0,0) + CALL GSMATE( 8,'Lead' ,207.19, 82., 11.35 , 0.56, 18.5, 0,0) + CALL GSMATE( 9,'Uranium' ,238.03, 92., 18.95 , 0.32, 12. , 0,0) +* +* +* *** Defines USER tracking media parameters + IFIELD = 0 + IF (Field.GT.0.) IFIELD = 3 + FIELDM = 10*Field + TMAXFD = 10.0 + STEMAX = 1000. + DEEMAX = 0.20 + EPSIL = 0.001 + STMIN = 0.010 +* + CALL GSTMED( 1,'Container',Imat, 0 ,IFIELD,FIELDM,TMAXFD, + * STEMAX,DEEMAX,EPSIL,STMIN, 0 , 0 ) +* +* +* *** Geometry + PAR(1) = BoxSize/2. + PAR(2) = BoxSize/2. + PAR(3) = BoxSize/2. + CALL GSVOLU('aBox','BOX ',1,PAR,3,IVOL) +* +* *** Close geometry banks. (obligatory system routine) + CALL GGCLOS +* +* +* *** dessin + CALL GSATT ('*','SEEN',1) +* + DO IX = 1,3 + CALL GDOPEN (IX) + SCALE = 18./BoxSize + PAXIS = 0. + SAXIS = 0.1*BoxSize + CALL GDRAWC ('aBox',IX,0.,10.,9.3,SCALE,SCALE) + CALL GDAXIS (PAXIS,PAXIS,PAXIS,SAXIS) + CALL GDSCAL (10. , 0.3) + CALL GDCLOS + END DO +* + + END diff --git a/examples/extended/electromagnetic/TestEm1/geant3/src/uginit.F b/examples/extended/electromagnetic/TestEm1/geant3/src/uginit.F new file mode 100644 index 0000000000..9c2a8fd284 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm1/geant3/src/uginit.F @@ -0,0 +1,53 @@ + + SUBROUTINE UGINIT +* +* To initialise GEANT/USER program and read data cards +* +#include "calor.inc" +#include "celoss.inc" +* + CHARACTER*20 filnam +* +* *** Define the GEANT parameters + CALL GINIT + +* *** read data cards + PRINT *, 'G3 > gives the filename of the data cards to be read:' + READ (*,'(A)') filnam + IF (filnam.EQ.' ') filnam = 'run01.dat' + OPEN (unit=5,file=filnam,status='unknown',form='formatted') + +* +* *** Calor definition + CALL FFKEY('CALOR',Imat,3,'MIXED') +* +* *** read data cards + CALL GFFGO + +* + CALL GZINIT + CALL GPART +* + CALL GDINIT +* +* *** Geometry and materials description + CALL UGEOM +* +* *** Energy loss and cross-sections initialisations + CALL GPHYSI +* + CALL GPRINT('MATE',0) + CALL GPRINT('TMED',0) + CALL GPRINT('VOLU',0) +* +* *** Define user histograms + CALL UHINIT +* +* *** some initialisation + NTRAK0 = 0 + NTRAK1 = 0 + NSTEP0 = 0 + NSTEP1 = 0 + CALL VZERO (NBCALL,12) +* + END diff --git a/examples/extended/electromagnetic/TestEm1/geant3/src/uglast.F b/examples/extended/electromagnetic/TestEm1/geant3/src/uglast.F new file mode 100644 index 0000000000..21a88bb414 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm1/geant3/src/uglast.F @@ -0,0 +1,45 @@ + + SUBROUTINE UGLAST +* +* Termination routine to print histograms and statistics +* +#include "geant321/gcflag.inc" +#include "geant321/gctrak.inc" +#include "celoss.inc" +* +* *** nb of steps and tracks per event + TOTEVT = IEVENT + FNTRK0 = NTRAK0/TOTEVT + FNTRK1 = NTRAK1/TOTEVT + FNSTP0 = NSTEP0/TOTEVT + FNSTP1 = NSTEP1/TOTEVT + PRINT 750, FNTRK0,FNTRK1,FNSTP0,FNSTP1 +* +* *** frequency of processes call + CALL UCTOH('MUNU',NAMEC(12),4,4) + PRINT 760,(NAMEC(I),I=1,12) + PRINT 761,(NBCALL(I)/TOTEVT,I=1,12) +* +* *** geant termination + CALL GLAST +* +* *** print selected histo + +* +* *** close HIGZ file + CALL HPLEND +* +* *** Save selected histograms + IF (ISWIT(2).EQ.1) THEN + CALL HRPUT(0,'testem1.paw','N') + ENDIF +* +* *** formats + 750 FORMAT(//,1X,'nb tracks/event neutral: ',F9.2,' charged: ',F9.2, + + /,1X,'nb steps/event neutral: ',F9.2,' charged: ',F9.2) + + 760 FORMAT(//,1X,'nb of process calls per event: ', + + /,3X,12A9) + 761 FORMAT( 3X,12F9.2,//) +* + END diff --git a/examples/extended/electromagnetic/TestEm1/geant3/src/uhinit.F b/examples/extended/electromagnetic/TestEm1/geant3/src/uhinit.F new file mode 100644 index 0000000000..1c7fec7b3c --- /dev/null +++ b/examples/extended/electromagnetic/TestEm1/geant3/src/uhinit.F @@ -0,0 +1,13 @@ + + SUBROUTINE UHINIT +* +* To book the user's histograms +* + CALL HBOOK1(1,'track length (mm) of a charged particle', + + 100,0.,500.,0.) + CALL HBOOK1(2,'Nb of steps per track (charged particle)', + + 100,0.,100.,0.) + CALL HBOOK1(3,'step length (mm) charged particle', + + 100,0.,10. ,0.) +* + END diff --git a/examples/extended/electromagnetic/TestEm1/geant3/testem1.cra b/examples/extended/electromagnetic/TestEm1/geant3/testem1.cra deleted file mode 100644 index bb3dfb36cd..0000000000 --- a/examples/extended/electromagnetic/TestEm1/geant3/testem1.cra +++ /dev/null @@ -1,423 +0,0 @@ -+OPTION,MAPASM. -+ASM,23. -+USE,GCDES,TestEm1,T=EXE. -* -+EXE,CRA*. -* -+PAM,11,T=CARD,T=ATTACH. /cern/pro/src/car/geant321.car -+PATCH,TestEm1. -+DECK,BLANKDEK. -* -* TestEm1 1.00 /01 980918 13.00 GEANT EXAMPLES -* -* TEST PROGRAM FOR GEANT TEST -* -* Author M.Maire ********* -* -* -* History -* ------- -* -* -+KEEP,CALOR. - COMMON/CALOR/Imat,BoxSize,Field -* -* Imat = GEANT material number. (data card CALOR) -* BoxSize = total size of the box (cm) (data card CALOR) -* Field = magnetic field (tesla) (data card CALOR) -* -+KEEP,CELOSS. - COMMON/CELOSS/ ETOT,NTRAK0,NTRAK1,NSTEP0,NSTEP1,NBCALL(12), - + NSTRK0,NSTRK1 - -+DECK,main,if=batch. - PROGRAM main -* -* - PARAMETER (NGBANK=100000, NHBOOK=10000) - COMMON/GCBANK/Q(NGBANK) - COMMON/PAWC /H(NHBOOK) -* - CALL GZEBRA( NGBANK) - CALL HLIMIT(-NHBOOK) -* -* *** initialize HIGZ - CALL HPLINT(0) -* -* *** GEANT initialisation - CALL UGINIT -* -* *** Start events processing - CALL GRUN -* -* *** End of RUN - CALL UGLAST -* - STOP - END -+DECK,main,IF=-batch. - PROGRAM main -* -* GEANT main program. To link with the MOTIF user interface -* the routine GPAWPP(NWGEAN,NWPAW) should be called, whereas -* the routine GPAW(NWGEAN,NWPAW) gives access to the basic -* graphics version. -* - PARAMETER (NWGEAN=3000000, NWPAW=1000000) - COMMON/GCBANK/GEANT(NWGEAN) - COMMON/PAWC /PAW (NWPAW) -* -* - CALL GPAW (NWGEAN,NWPAW) -* - END -* - SUBROUTINE qnext - END -* - SUBROUTINE czopen - END -* - SUBROUTINE cztcp - END -* - SUBROUTINE czclos - END -* - SUBROUTINE czputa - END -+DECK,UGINIT - SUBROUTINE UGINIT -* -* To initialise GEANT/USER program and read data cards -* -+SEQ,CALOR,CELOSS. -* - CHARACTER*20 filnam -* -* *** Define the GEANT parameters - CALL GINIT - -* *** read data cards - PRINT *, 'G3 > gives the filename of the data cards to be read:' - READ (*,'(A)') filnam - IF (filnam.EQ.' ') filnam = 'testem1.dat' - OPEN (unit=5,file=filnam,status='unknown',form='formatted') - -* -* *** Calor definition - CALL FFKEY('CALOR',Imat,3,'MIXED') -* -* *** read data cards - CALL GFFGO - -* - CALL GZINIT - CALL GPART -* - CALL GDINIT -* -* *** Geometry and materials description - CALL UGEOM -* -* *** Energy loss and cross-sections initialisations - CALL GPHYSI -* - CALL GPRINT('MATE',0) - CALL GPRINT('TMED',0) - CALL GPRINT('VOLU',0) -* -* *** Define user histograms - CALL UHINIT -* -* *** some initialisation - NTRAK0 = 0 - NTRAK1 = 0 - NSTEP0 = 0 - NSTEP1 = 0 - CALL VZERO (NBCALL,12) -* - END -+DECK,UGEOM. - SUBROUTINE UGEOM -* -* *** Define user geometry set up -* -* -+SEQ,CALOR. -* - DIMENSION PAR(3) - - DIMENSION Aair(2),Zair(2),Wair(2) - DIMENSION AH2O(2),ZH2O(2),WH2O(2) -* -* *** Air compound parameters - DATA Aair/14.01, 16.00/ - DATA Zair/ 7. , 8. / - DATA Wair/ 0.7 , 0.3 / -* -* *** Air compound parameters - DATA AH2O/ 1.01, 16.00/ - DATA ZH2O/ 1. , 8. / - DATA WH2O/ 2. , 1. / -* -* *** Defines USER perticular materials - CALL GSMIXT( 1,'Air' , Aair ,Zair, 1.29E-3, 2 , Wair) - CALL GSMATE( 2,'H2 Liquid', 1.01, 1., 0.0708 , 865., 790., 0,0) - CALL GSMIXT( 3,'Water' , AH2O ,ZH2O, 1.0 ,-2 , WH2O) - CALL GSMATE( 4,'Liquid Ar', 39.95, 18., 1.39 , 14.0, 84.0, 0,0) - CALL GSMATE( 5,'Aluminium', 26.98, 13., 2.7 , 8.9, 37.2, 0,0) - CALL GSMATE( 6,'Iron ', 55.85, 26., 7.87 , 1.76, 17.1, 0,0) - CALL GSMATE( 7,'Lead ',207.19, 82., 11.35 , 0.56, 18.5, 0,0) - CALL GSMATE( 8,'Uranium ',238.03, 92., 18.95 , 0.32, 12. , 0,0) -* -* -* *** Defines USER tracking media parameters - IFIELD = 0 - IF (Field.GT.0.) IFIELD = 3 - FIELDM = 10*Field - TMAXFD = 10.0 - STEMAX = 1000. - DEEMAX = 0.20 - EPSIL = 0.001 - STMIN = 0.010 -* - CALL GSTMED( 1,'Container',Imat, 0 ,IFIELD,FIELDM,TMAXFD, - * STEMAX,DEEMAX,EPSIL,STMIN, 0 , 0 ) -* -* -* *** Geometry - PAR(1) = BoxSize/2. - PAR(2) = BoxSize/2. - PAR(3) = BoxSize/2. - CALL GSVOLU('aBox','BOX ',1,PAR,3,IVOL) -* -* *** Close geometry banks. (obligatory system routine) - CALL GGCLOS -* -* -* *** dessin - CALL GSATT ('*','SEEN',1) -* - DO IX = 1,3 - CALL GDOPEN (IX) - SCALE = 18./BoxSize - PAXIS = 0. - SAXIS = 1. - CALL GDRAWC ('aBox',IX,0.,10.,9.3,SCALE,SCALE) - CALL GDAXIS (PAXIS,PAXIS,PAXIS,SAXIS) - CALL GDSCAL (10. , 0.3) - CALL GDCLOS - END DO -* - - END -+DECK,UHINIT. - SUBROUTINE UHINIT -* -* To book the user's histograms -* - CALL HBOOK1(1,'track length (mm) of a charged particle', - + 100,0.,500.,0.) - CALL HBOOK1(2,'Nb of steps per track (charged particle)', - + 100,0.,100.,0.) - CALL HBOOK1(3,'step length (mm) charged particle', - + 100,0.,10. ,0.) -* - END -+DECK,GUKINE - SUBROUTINE GUKINE -* -* Generates Kinematics for primary track -* -* Data card Kine : Itype Ekine -* -+SEQ,GCBANK,GCFLAG,GCKINE. -* - DIMENSION VERTEX(3),PLAB(3) -* - DATA VERTEX/3*0./ - DATA PLAB /3*0./ -* -* - CALL GSVERT(VERTEX,0,0,0,0,NVERT) -* -* - JPA = LQ(JPART-IKINE) - XMASS = Q(JPA+7) - PLAB(1) = SQRT(PKINE(1)*(PKINE(1)+2*XMASS)) -* - CALL GSKINE(PLAB,IKINE,NVERT,0,0,NT) -* -* *** Kinematics debug - IF (IEVENT.EQ.1.OR.IDEBUG.NE.0) CALL GPRINT('KINE',0) -* - END -+DECK,GUTREV - SUBROUTINE GUTREV -* -* User routine to control tracking of one event -* Called by GRUN -* -+SEQ,CELOSS -* - ETOT = 0. -* - CALL GTREVE -* - END -+DECK,GUTRAK - SUBROUTINE GUTRAK -* -* User routine to control tracking of one track -* Called by GTREVE -* -+SEQ,GCKINE. -+SEQ,GCTRAK. -+SEQ,CELOSS. -* -* -* *** initialisation track per track - NSTRK0 = 0 - NSTRK1 = 0 -* - CALL GTRACK -* -* *** count nb of tracks - IF (CHARGE.NE.0.) THEN - NTRAK1 = NTRAK1 + 1 - CALL HFILL (1,SLENG*10,0.,1.) - CALL HFILL (2,REAL(NSTRK1),0.,1.) - ELSE - NTRAK0 = NTRAK0 + 1 - ENDIF -* - END -+DECK,GUSTEP - SUBROUTINE GUSTEP -* -* User routine called at the end of each tracking step -* -+SEQ,GCFLAG. -+SEQ,GCKINE,GCKING,GCTRAK. -+SEQ,CELOSS. -* -* -* *** Debug event and store tracks for drawing - IF (IDEBUG.NE.0) CALL GPCXYZ - IF ((ISWIT(1).EQ.1).AND.(CHARGE.NE.0.)) CALL GSXYZ - IF (ISWIT(1).EQ.2) CALL GSXYZ -* -* *** Something generated ? - IF(NGKINE.GT.0) CALL GSKING(0) -* -* *** Energy deposited - ETOT = ETOT + DESTEP -* -* *** count number of steps - IF (CHARGE.NE.0.) THEN - NSTEP1 = NSTEP1 + 1 - NSTRK1 = NSTRK1 + 1 - CALL HFILL (3,STEP*10,0.,1.) - ELSE - NSTEP0 = NSTEP0 + 1 - NSTRK0 = NSTRK0 + 1 - ENDIF -* -* *** count nb of invoked processes - IF (NMEC.GT.0) THEN - DO IM = 1,NMEC - IPROC = LMEC(IM) - IF (IPROC.EQ.21) IPROC = 12 - IF (IPROC.LE.12) NBCALL(IPROC) = NBCALL(IPROC)+1 - ENDDO - ENDIF - - END -+DECK,GUOUT - SUBROUTINE GUOUT -* -* User routine called at the end of each event -* -+SEQ,GCFLAG. -+SEQ,CELOSS. -* - CHARACTER*4 unit -* -* *** drawing -* -+self,if=-batch. - IF (ISWIT(1).NE.0) THEN - CALL GDHEAD (110110,'TestEm1',0.) - CALL GDSHOW (3) - CALL GDXYZ (0) - END IF -+self. -* -* energy deposited -* - CALL GEVKEV (ETOT,ETunit,unit) - IF (ISWIT(1).NE.0) PRINT 750,ETunit,unit -* - 750 FORMAT(1X,'Energy deposit: ',F8.3,A4) -* - END -+DECK,UGLAST - SUBROUTINE UGLAST -* -* Termination routine to print histograms and statistics -* -+SEQ,GCFLAG. -+SEQ,GCTRAK. -+SEQ,CELOSS. - -* -* *** nb of steps and tracks per event - TOTEVT = IEVENT - FNTRK0 = NTRAK0/TOTEVT - FNTRK1 = NTRAK1/TOTEVT - FNSTP0 = NSTEP0/TOTEVT - FNSTP1 = NSTEP1/TOTEVT - PRINT 750, FNTRK0,FNTRK1,FNSTP0,FNSTP1 -* -* *** frequency of processes call - CALL UCTOH('MUNU',NAMEC(12),4,4) - PRINT 760,(NAMEC(I),I=1,12) - PRINT 761,(NBCALL(I)/TOTEVT,I=1,12) -* -* *** geant termination - CALL GLAST -* -* *** print selected histo - -* -* *** close HIGZ file - CALL HPLEND -* -* *** Save selected histograms - IF (ISWIT(2).EQ.1) THEN - CALL HRPUT(0,'testem1.histo','N') - ENDIF -* -* *** formats - 750 FORMAT(//,1X,'nb tracks/event neutral: ',F9.2,' charged: ',F9.2, - + /,1X,'nb steps/event neutral: ',F9.2,' charged: ',F9.2) - - 760 FORMAT(//,1X,'nb of process calls per event: ', - + /,3X,12A9) - 761 FORMAT( 3X,12F9.2,//) -* - END -+DECK,ffread,T=data. -LIST -CALOR 5 (Imat) 2000. (size) 0. (field) -TRIG 100 -KINE 3 (Itype) 0.100 (Ekine) -DEBUG 10 5 1000 -SWIT 0 (draw) 0 (save) -CUTS 10.e-6 (cutgam) 10.e-6 (cutele) 3*10.e-3 (cutneu/had/muo) - 2*10.e-6 (bcute/m) 2*10.e-6 (dcute/m) 10.e-3 (ppcutm) -ABAN 0 -LOSS 1 -TIME 2=1. -+QUIT. diff --git a/examples/extended/electromagnetic/TestEm1/include/Em1DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm1/include/Em1DetectorConstruction.hh index 5ff33b00b4..a74c724482 100644 --- a/examples/extended/electromagnetic/TestEm1/include/Em1DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm1/include/Em1DetectorConstruction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em1DetectorConstruction.hh,v 1.2 1999/12/15 14:48:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm1/include/Em1DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm1/include/Em1DetectorMessenger.hh index 0298bc3b6f..b549595bf4 100644 --- a/examples/extended/electromagnetic/TestEm1/include/Em1DetectorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm1/include/Em1DetectorMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em1DetectorMessenger.hh,v 1.2 1999/12/15 14:48:53 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm1/include/Em1EventAction.hh b/examples/extended/electromagnetic/TestEm1/include/Em1EventAction.hh index f8558818d8..63545d2af6 100644 --- a/examples/extended/electromagnetic/TestEm1/include/Em1EventAction.hh +++ b/examples/extended/electromagnetic/TestEm1/include/Em1EventAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em1EventAction.hh,v 1.2 1999/12/15 14:48:55 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm1/include/Em1EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm1/include/Em1EventActionMessenger.hh index 4269ab257c..750a2b2f09 100644 --- a/examples/extended/electromagnetic/TestEm1/include/Em1EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm1/include/Em1EventActionMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em1EventActionMessenger.hh,v 1.2 1999/12/15 14:48:55 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm1/include/Em1PhysicsList.hh b/examples/extended/electromagnetic/TestEm1/include/Em1PhysicsList.hh index 589aa9e2bf..d6295a24c4 100644 --- a/examples/extended/electromagnetic/TestEm1/include/Em1PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm1/include/Em1PhysicsList.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em1PhysicsList.hh,v 1.2 1999/12/15 14:48:55 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm1/include/Em1PhysicsListMessenger.hh b/examples/extended/electromagnetic/TestEm1/include/Em1PhysicsListMessenger.hh index 47cb5f223f..394dc96f92 100644 --- a/examples/extended/electromagnetic/TestEm1/include/Em1PhysicsListMessenger.hh +++ b/examples/extended/electromagnetic/TestEm1/include/Em1PhysicsListMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em1PhysicsListMessenger.hh,v 1.2 1999/12/15 14:48:55 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm1/include/Em1PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm1/include/Em1PrimaryGeneratorAction.hh index 3895dfd69f..72801f8c68 100644 --- a/examples/extended/electromagnetic/TestEm1/include/Em1PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm1/include/Em1PrimaryGeneratorAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em1PrimaryGeneratorAction.hh,v 1.2 1999/12/15 14:48:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm1/include/Em1RunAction.hh b/examples/extended/electromagnetic/TestEm1/include/Em1RunAction.hh index df73646f6d..11a3e59054 100644 --- a/examples/extended/electromagnetic/TestEm1/include/Em1RunAction.hh +++ b/examples/extended/electromagnetic/TestEm1/include/Em1RunAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em1RunAction.hh,v 1.3 2000/01/21 12:29:25 maire Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm1/include/Em1RunActionMessenger.hh b/examples/extended/electromagnetic/TestEm1/include/Em1RunActionMessenger.hh index bd438336e9..11a6fd17ca 100644 --- a/examples/extended/electromagnetic/TestEm1/include/Em1RunActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm1/include/Em1RunActionMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em1RunActionMessenger.hh,v 1.2 1999/12/15 14:48:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm1/include/Em1SteppingAction.hh b/examples/extended/electromagnetic/TestEm1/include/Em1SteppingAction.hh index 8eab8a091b..7d1c2d3c2d 100644 --- a/examples/extended/electromagnetic/TestEm1/include/Em1SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm1/include/Em1SteppingAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em1SteppingAction.hh,v 1.2 1999/12/15 14:48:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm1/include/Em1SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm1/include/Em1SteppingVerbose.hh index 072df318e0..4361888593 100644 --- a/examples/extended/electromagnetic/TestEm1/include/Em1SteppingVerbose.hh +++ b/examples/extended/electromagnetic/TestEm1/include/Em1SteppingVerbose.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em1SteppingVerbose.hh,v 1.2 1999/12/15 14:48:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em1SteppingVerbose.hh,v 1.3 2000/02/29 12:13:24 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -14,13 +14,7 @@ // Em1SteppingVerbose.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) +// This class manages the verbose outputs in G4SteppingManager. // //--------------------------------------------------------------- diff --git a/examples/extended/electromagnetic/TestEm1/include/Em1TrackingAction.hh b/examples/extended/electromagnetic/TestEm1/include/Em1TrackingAction.hh index a20d133f17..d16f140a07 100644 --- a/examples/extended/electromagnetic/TestEm1/include/Em1TrackingAction.hh +++ b/examples/extended/electromagnetic/TestEm1/include/Em1TrackingAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em1TrackingAction.hh,v 1.2 1999/12/15 14:48:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm1/include/Em1VisManager.hh b/examples/extended/electromagnetic/TestEm1/include/Em1VisManager.hh index ff623cf4b6..99e8bcbe5c 100644 --- a/examples/extended/electromagnetic/TestEm1/include/Em1VisManager.hh +++ b/examples/extended/electromagnetic/TestEm1/include/Em1VisManager.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em1VisManager.hh,v 1.2 1999/12/15 14:48:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm1/include/ProcessesCount.hh b/examples/extended/electromagnetic/TestEm1/include/ProcessesCount.hh index f2c4c6d324..6f5de0a604 100644 --- a/examples/extended/electromagnetic/TestEm1/include/ProcessesCount.hh +++ b/examples/extended/electromagnetic/TestEm1/include/ProcessesCount.hh @@ -7,7 +7,7 @@ // and all its terms. // // $Id: ProcessesCount.hh,v 1.3 1999/12/15 14:48:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ----------------------------------------------------------------- diff --git a/examples/extended/electromagnetic/TestEm1/src/Em1DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm1/src/Em1DetectorConstruction.cc index f2f331007f..a247ba0115 100644 --- a/examples/extended/electromagnetic/TestEm1/src/Em1DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm1/src/Em1DetectorConstruction.cc @@ -7,7 +7,7 @@ // and all its terms. // // $Id: Em1DetectorConstruction.cc,v 1.2 1999/12/15 14:48:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm1/src/Em1DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm1/src/Em1DetectorMessenger.cc index 6cb3742bed..cb34d2e03d 100644 --- a/examples/extended/electromagnetic/TestEm1/src/Em1DetectorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm1/src/Em1DetectorMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em1DetectorMessenger.cc,v 1.2 1999/12/15 14:48:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm1/src/Em1EventAction.cc b/examples/extended/electromagnetic/TestEm1/src/Em1EventAction.cc index ddefb2b302..eaf273d1af 100644 --- a/examples/extended/electromagnetic/TestEm1/src/Em1EventAction.cc +++ b/examples/extended/electromagnetic/TestEm1/src/Em1EventAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em1EventAction.cc,v 1.2 1999/12/15 14:48:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm1/src/Em1EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm1/src/Em1EventActionMessenger.cc index 8901dc69e9..3d6db7e736 100644 --- a/examples/extended/electromagnetic/TestEm1/src/Em1EventActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm1/src/Em1EventActionMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em1EventActionMessenger.cc,v 1.2 1999/12/15 14:48:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm1/src/Em1PhysicsList.cc b/examples/extended/electromagnetic/TestEm1/src/Em1PhysicsList.cc index 51c1d4d6b9..fdc1407d2c 100644 --- a/examples/extended/electromagnetic/TestEm1/src/Em1PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm1/src/Em1PhysicsList.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em1PhysicsList.cc,v 1.2 1999/12/15 14:48:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em1PhysicsList.cc,v 1.3 2000/03/05 03:31:39 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // @@ -106,7 +106,6 @@ void Em1PhysicsList::ConstructMesons() G4PionZero::PionZeroDefinition(); G4Eta::EtaDefinition(); G4EtaPrime::EtaPrimeDefinition(); - G4RhoZero::RhoZeroDefinition(); G4KaonPlus::KaonPlusDefinition(); G4KaonMinus::KaonMinusDefinition(); G4KaonZero::KaonZeroDefinition(); diff --git a/examples/extended/electromagnetic/TestEm1/src/Em1PhysicsListMessenger.cc b/examples/extended/electromagnetic/TestEm1/src/Em1PhysicsListMessenger.cc index 43bd753a36..c5ad1a4110 100644 --- a/examples/extended/electromagnetic/TestEm1/src/Em1PhysicsListMessenger.cc +++ b/examples/extended/electromagnetic/TestEm1/src/Em1PhysicsListMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em1PhysicsListMessenger.cc,v 1.2 1999/12/15 14:48:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm1/src/Em1PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm1/src/Em1PrimaryGeneratorAction.cc index c15c57291a..48faaf5cb5 100644 --- a/examples/extended/electromagnetic/TestEm1/src/Em1PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm1/src/Em1PrimaryGeneratorAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em1PrimaryGeneratorAction.cc,v 1.2 1999/12/15 14:48:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm1/src/Em1RunAction.cc b/examples/extended/electromagnetic/TestEm1/src/Em1RunAction.cc index e4392f46e2..d1314cbaa0 100644 --- a/examples/extended/electromagnetic/TestEm1/src/Em1RunAction.cc +++ b/examples/extended/electromagnetic/TestEm1/src/Em1RunAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em1RunAction.cc,v 1.4 2000/01/21 12:29:26 maire Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm1/src/Em1RunActionMessenger.cc b/examples/extended/electromagnetic/TestEm1/src/Em1RunActionMessenger.cc index c079bb4f14..c8cbd24d80 100644 --- a/examples/extended/electromagnetic/TestEm1/src/Em1RunActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm1/src/Em1RunActionMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em1RunActionMessenger.cc,v 1.2 1999/12/15 14:48:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm1/src/Em1SteppingAction.cc b/examples/extended/electromagnetic/TestEm1/src/Em1SteppingAction.cc index 130ff0db89..5c7597a182 100644 --- a/examples/extended/electromagnetic/TestEm1/src/Em1SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm1/src/Em1SteppingAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em1SteppingAction.cc,v 1.3 2000/01/21 12:29:26 maire Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm1/src/Em1SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm1/src/Em1SteppingVerbose.cc index 58008786fd..257e641321 100644 --- a/examples/extended/electromagnetic/TestEm1/src/Em1SteppingVerbose.cc +++ b/examples/extended/electromagnetic/TestEm1/src/Em1SteppingVerbose.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em1SteppingVerbose.cc,v 1.2 1999/12/15 14:48:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em1SteppingVerbose.cc,v 1.3 2000/02/29 12:13:24 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -15,10 +15,6 @@ // // Description: // Implementation of the Em1SteppingVerbose 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) // //--------------------------------------------------------------- diff --git a/examples/extended/electromagnetic/TestEm1/src/Em1TrackingAction.cc b/examples/extended/electromagnetic/TestEm1/src/Em1TrackingAction.cc index 5369ad9d16..f270d87f6d 100644 --- a/examples/extended/electromagnetic/TestEm1/src/Em1TrackingAction.cc +++ b/examples/extended/electromagnetic/TestEm1/src/Em1TrackingAction.cc @@ -7,7 +7,7 @@ // and all its terms. // // $Id: Em1TrackingAction.cc,v 1.3 2000/01/21 12:29:26 maire Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm1/src/Em1VisManager.cc b/examples/extended/electromagnetic/TestEm1/src/Em1VisManager.cc index 4a379420db..b555efb966 100644 --- a/examples/extended/electromagnetic/TestEm1/src/Em1VisManager.cc +++ b/examples/extended/electromagnetic/TestEm1/src/Em1VisManager.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em1VisManager.cc,v 1.2 1999/12/15 14:48:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 24th January 1998. diff --git a/examples/extended/electromagnetic/TestEm2/GNUmakefile b/examples/extended/electromagnetic/TestEm2/GNUmakefile index 034db6a284..1dde9228f2 100644 --- a/examples/extended/electromagnetic/TestEm2/GNUmakefile +++ b/examples/extended/electromagnetic/TestEm2/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.2 2000/01/21 10:56:13 maire Exp $ +# $Id: GNUmakefile,v 1.3 2000/05/17 10:55:39 maire Exp $ # -------------------------------------------------------------- # GNUmakefile for examples module. Gabriele Cosmo, 06/04/98. # -------------------------------------------------------------- @@ -19,7 +19,7 @@ include $(G4INSTALL)/config/architecture.gmk ifdef G4NOHIST CPPFLAGS += -DG4NOHIST else - LDFLAGS += -L/cern/pro/lib + LDFLAGS += -L$(CERN)/pro/lib LOADLIBS += -lpacklib $(FCLIBS) endif diff --git a/examples/extended/electromagnetic/TestEm2/History b/examples/extended/electromagnetic/TestEm2/History new file mode 100644 index 0000000000..78d66ed78a --- /dev/null +++ b/examples/extended/electromagnetic/TestEm2/History @@ -0,0 +1,25 @@ +$Id: History,v 1.4 2000/06/24 08:01:20 stesting Exp $ +------------------------------------------------------------------- + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + TestEm2 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 * + ---------------------------------------------------------- + +June 24, 2000 John Allison (testem2-V01-01-02) +- Updated TestEm2.out for stand-V01-01-05 and utils-V01-01-03. + +June 20, 2000 mma (testem2-V01-01-01) +- Updated TestEm2.in : /gun/particle e- + +June 17, 2000 John Allison (testem2-V01-00-00) +- Updated TestEm2.out for geant4-01-01-ref-06. diff --git a/examples/extended/electromagnetic/TestEm2/TestEm2.cc b/examples/extended/electromagnetic/TestEm2/TestEm2.cc index 8754a83ba9..538a1b5a8d 100644 --- a/examples/extended/electromagnetic/TestEm2/TestEm2.cc +++ b/examples/extended/electromagnetic/TestEm2/TestEm2.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: TestEm2.cc,v 1.3 1999/12/15 14:48:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // Comments // diff --git a/examples/extended/electromagnetic/TestEm2/TestEm2.in b/examples/extended/electromagnetic/TestEm2/TestEm2.in index 1c6359054a..be7eee4662 100644 --- a/examples/extended/electromagnetic/TestEm2/TestEm2.in +++ b/examples/extended/electromagnetic/TestEm2/TestEm2.in @@ -1,4 +1,4 @@ -# $Id: TestEm2.in,v 1.1 2000/01/21 14:40:57 maire Exp $ +# $Id: TestEm2.in,v 1.2 2000/06/20 12:58:06 maire Exp $ # # Macro file for "TestEm2.cc" # (can be run in batch, without graphic) @@ -22,7 +22,7 @@ /event/drawTracks none /event/printModulo 20 # -/gun/particle electron +/gun/particle e- /gun/energy 1 GeV /run/beamOn 100 diff --git a/examples/extended/electromagnetic/TestEm2/TestEm2.out b/examples/extended/electromagnetic/TestEm2/TestEm2.out index 0b99753fc7..482ef5b662 100644 --- a/examples/extended/electromagnetic/TestEm2/TestEm2.out +++ b/examples/extended/electromagnetic/TestEm2/TestEm2.out @@ -1,13 +1,10 @@ ********************************************** - Geant4 version $Name: geant4-01-01 $ - (07-Dec-99) + Geant4 version $Name: geant4-02-00 $ + (10-Mar-2000) Copyright : Geant4 Collaboration ********************************************** -Constructing Visualization Manager.... -Initialising Visualization Manager.... -Registering graphics systems.... -***** Table : Nb of materials = 8 ***** +***** Table : Nb of materials = 9 ***** 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 % @@ -36,12 +33,15 @@ Registering graphics systems.... ---> Element: Lead Pb Z = 82.0 N = 207.2 A = 207.19 g/mole fractionMass: 45.53 % Abundance 16.67 % ---> Element: Tungsten W Z = 74.0 N = 183.8 A = 183.84 g/mole fractionMass: 40.40 % Abundance 16.67 % + Material: Tungsten density: 19.300 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 3.504 mm + ---> Element: Tungsten W Z = 74.0 N = 183.8 A = 183.84 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 Pb Z = 82.0 N = 207.2 A = 207.19 g/mole fractionMass: 100.00 % Abundance 100.00 % -Absorber is 17.848 cm of PbWO4 -Em2PhysicsList::SetCuts:CutLength : 1 (mm) +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 @@ -64,10 +64,24 @@ eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to delta ray energy sampled from differential Xsection. PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. -eBrem: Total cross sections from a parametrisation. Good description from 1 KeV to 100 GeV. + eIoni Minimum Delta cut in range=0.1 mm. + + material min.delta energy(keV) + + Air 0.99 + Water 81.518 + lAr 78.381 + Al 125.07 + Fe 224.12 + BGO 187.02 + PbWO4 200.98 + Tungsten 337 + Lead 229.66 + +eBrem: Total cross sections from a parametrisation. Good description from 10 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). gamma energies sampled according Heitler @@ -76,30 +90,44 @@ annihil: Total cross section from Heilter formula (annihilation into 2 photons) 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 Minimum Delta cut in range=0.1 mm. + + material min.delta energy(keV) + + Air 0.99 + Water 81.518 + lAr 78.381 + Al 125.07 + Fe 224.12 + BGO 187.02 + PbWO4 200.98 + Tungsten 337 + Lead 229.66 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 150 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 100 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. MuBrems: theoretical cross section - Good description up to 1000 TeV. - PhysicsTables from 1 GeV to 1e+03 PeV in 100 bins. + 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 TeV. - PhysicsTables from 1 GeV to 1e+03 PeV in 50 bins. + Good description up to 1000 PeV. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. ============= The cut Energy ============================== gamma e- mu- proton neutron Cut in range 1 mm 1 mm 1 mm 1 mm 1 mm @@ -111,9 +139,10 @@ Cut in energy Fe 20.8 keV 1.28 MeV 8.52 MeV 22 MeV 990 eV BGO 77.7 keV 1.03 MeV 7.17 MeV 18.1 MeV 990 eV PbWO4 84.8 keV 1.13 MeV 7.63 MeV 19.2 MeV 990 eV + Tungsten 105 keV 2.31 MeV 11.7 MeV 29.5 MeV 990 eV Lead 101 keV 1.38 MeV 8.52 MeV 20.9 MeV 990 eV =================================================== -# $Id: TestEm2.out,v 1.1 2000/01/21 14:40:57 maire Exp $ +# $Id: TestEm2.out,v 1.5 2000/06/24 08:01:20 stesting Exp $ # # Macro file for "TestEm2.cc" # (can be run in batch, without graphic) @@ -128,11 +157,11 @@ Cut in energy /calor/setLbin 9 1.11 /calor/setRbin 6 0.111 /calor/update -Absorber is 3.60564 m of Water +Absorber is 3.6056 m of Water # /run/particle/setCut 5.0 mm /run/initialize -Em2PhysicsList::SetCuts:CutLength : 5 (mm) +Em2PhysicsList::SetCuts:CutLength : 5 mm phot: Total cross sections from a parametrisation. Good description from 10 KeV to 50 MeV for all Z Sandia crossSection below 50 KeV @@ -140,25 +169,39 @@ phot: Total cross sections from a parametrisation. Good description from 10 KeV 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. + 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 parametrisation. Good description from 1 KeV to 100 GeV. + eIoni Minimum Delta cut in range=0.5 mm. + + material min.delta energy(keV) + + Air 3.2397 + Water 215.05 + lAr 209.6 + Al 349.54 + Fe 697.76 + BGO 570.46 + PbWO4 624.12 + Tungsten 1195.6 + Lead 745.94 + +eBrem: Total cross sections from a parametrisation. Good description from 10 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). gamma energies sampled according Heitler @@ -167,30 +210,44 @@ annihil: Total cross section from Heilter formula (annihilation into 2 photons) 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 Minimum Delta cut in range=0.5 mm. + + material min.delta energy(keV) + + Air 3.2397 + Water 215.05 + lAr 209.6 + Al 349.54 + Fe 697.76 + BGO 570.46 + PbWO4 624.12 + Tungsten 1195.6 + Lead 745.94 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 150 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 100 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. MuBrems: theoretical cross section - Good description up to 1000 TeV. - PhysicsTables from 1 GeV to 1e+03 PeV in 100 bins. + 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 TeV. - PhysicsTables from 1 GeV to 1e+03 PeV in 50 bins. + Good description up to 1000 PeV. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. ============= The cut Energy ============================== gamma e- mu- proton neutron Cut in range 5 mm 5 mm 5 mm 5 mm 5 mm @@ -202,6 +259,7 @@ Cut in energy Fe 46.4 keV 6.11 MeV 21.5 MeV 54.7 MeV 990 eV BGO 126 keV 4.72 MeV 18.1 MeV 45.7 MeV 990 eV PbWO4 137 keV 5.34 MeV 19.4 MeV 48.3 MeV 990 eV + Tungsten 241 keV 13 MeV 30.7 MeV 75.3 MeV 990 eV Lead 204 keV 6.83 MeV 22 MeV 54 MeV 990 eV =================================================== # @@ -209,7 +267,7 @@ Cut in energy /event/drawTracks none /event/printModulo 20 # -/gun/particle electron +/gun/particle e- /gun/energy 1 GeV /run/beamOn 100 ### Run 0 start. @@ -228,74 +286,25 @@ Start Run processing. ---> Begin Of Event: 40 ---> Begin Of Event: 60 - G4ParticleChangeForMSC::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.5e-09 - G4ParticleChangeForMSC::CheckIt - pointer : 0x140618e58 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 6.91 - Stepping Control : 0 - Event Biasing : not used - Position - x (mm) : 59.8 - Position - y (mm) : -38.6 - Position - z (mm) : 877 - Momentum Direction - x : 0.414 - Momentum Direction - y : 0.0309 - Momentum Direction - z : 0.91 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.51e-09 - G4ParticleChange::CheckIt - pointer : 0x1405d2cc0 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : 62.1 - Position - y (mm) : -38.4 - Position - z (mm) : 882 - Time (ns) : 9.01 - Proper Time (ns) : 0.00338 - Momentum Direct - x : 0.414 - Momentum Direct - y : 0.0309 - Momentum Direct - z : 0.91 - Kinetic Energy (MeV): 5.15 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0x1402b2bc0 ---> Begin Of Event: 80 Run terminated. Run Summary Number of events processed : 100 - User=19.2s Real=22.9s Sys=3.42s + User=135.06s Real=147.92s Sys=11.58s LATERAL PROFILE CUMULATIVE LATERAL PROFILE bin Mean rms bin Mean rms - 0.00-> 1.11 radl: 13.46% 6.25% 0-> 1.11 radl: 13.46% 6.25% - 1.11-> 2.22 radl: 24.71% 10.53% 0-> 2.22 radl: 38.17% 14.12% - 2.22-> 3.33 radl: 23.98% 10.63% 0-> 3.33 radl: 62.15% 18.49% - 3.33-> 4.44 radl: 13.68% 8.06% 0-> 4.44 radl: 75.83% 17.78% - 4.44-> 5.55 radl: 8.09% 7.22% 0-> 5.55 radl: 83.93% 16.08% - 5.55-> 6.66 radl: 5.50% 6.39% 0-> 6.66 radl: 89.43% 11.95% - 6.66-> 7.77 radl: 3.04% 6.08% 0-> 7.77 radl: 92.46% 7.12% - 7.77-> 8.88 radl: 1.87% 3.88% 0-> 8.88 radl: 94.33% 4.60% - 8.88-> 9.99 radl: 0.90% 2.07% 0-> 9.99 radl: 95.23% 3.78% + 0.00-> 1.11 radl: 12.83% 4.80% 0-> 1.11 radl: 12.83% 4.80% + 1.11-> 2.22 radl: 22.99% 10.59% 0-> 2.22 radl: 35.82% 13.46% + 2.22-> 3.33 radl: 23.35% 11.11% 0-> 3.33 radl: 59.17% 18.23% + 3.33-> 4.44 radl: 14.66% 7.64% 0-> 4.44 radl: 73.83% 17.47% + 4.44-> 5.55 radl: 10.04% 7.93% 0-> 5.55 radl: 83.88% 14.03% + 5.55-> 6.66 radl: 5.77% 5.99% 0-> 6.66 radl: 89.65% 11.25% + 6.66-> 7.77 radl: 2.68% 3.89% 0-> 7.77 radl: 92.33% 9.04% + 7.77-> 8.88 radl: 1.65% 3.99% 0-> 8.88 radl: 93.97% 5.64% + 8.88-> 9.99 radl: 1.02% 3.35% 0-> 9.99 radl: 94.99% 3.52% @@ -303,26 +312,24 @@ Run Summary bin Mean rms bin Mean rms - 0.00-> 0.11 radl: 69.28% 9.17% 0-> 0.11 radl: 69.28% 9.17% - 0.11-> 0.22 radl: 15.05% 6.43% 0-> 0.22 radl: 84.33% 5.88% - 0.22-> 0.33 radl: 5.41% 3.14% 0-> 0.33 radl: 89.74% 4.73% - 0.33-> 0.44 radl: 2.67% 1.88% 0-> 0.44 radl: 92.41% 4.14% - 0.44-> 0.56 radl: 1.66% 1.53% 0-> 0.56 radl: 94.07% 3.85% - 0.56-> 0.67 radl: 1.16% 1.18% 0-> 0.67 radl: 95.23% 3.78% + 0.00-> 0.11 radl: 66.01% 9.70% 0-> 0.11 radl: 66.01% 9.70% + 0.11-> 0.22 radl: 16.95% 6.97% 0-> 0.22 radl: 82.95% 7.09% + 0.22-> 0.33 radl: 5.91% 4.08% 0-> 0.33 radl: 88.86% 5.43% + 0.33-> 0.44 radl: 2.97% 2.51% 0-> 0.44 radl: 91.83% 4.45% + 0.44-> 0.56 radl: 1.85% 1.52% 0-> 0.56 radl: 93.68% 3.99% + 0.56-> 0.67 radl: 1.31% 1.50% 0-> 0.67 radl: 94.99% 3.52% SUMMARY - energy deposit : 95.23 % E0 +- 3.78 % E0 - charged traklen: 13.61 radl +- 0.55 radl - neutral traklen: 192.88 radl +- 17.42 radl + energy deposit : 94.99 % E0 +- 3.52 % E0 + charged traklen: 13.64 radl +- 0.52 radl + neutral traklen: 192.15 radl +- 20.63 radl --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 2146177415, 212514321 + Current couple of seeds = 2001046935, 58619762 ---------------------------------------- -Graphics systems deleted. -VisManager deleting. G4 kernel has come to Quit state. Deletion of G4 kernel class start. UserDetectorConstruction deleted. diff --git a/examples/extended/electromagnetic/TestEm2/geant3/README b/examples/extended/electromagnetic/TestEm2/geant3/README index 2659240314..a0072238b4 100644 --- a/examples/extended/electromagnetic/TestEm2/geant3/README +++ b/examples/extended/electromagnetic/TestEm2/geant3/README @@ -16,7 +16,7 @@ run01.dat (runNN.dat is the equivalent of the G4 runNN.mac) - testem2 produces several histo saved as testem2.histo if ISWIT(2)=1 + testem2 produces several histo saved as testem2.paw if ISWIT(2)=1 Content of these histo: diff --git a/examples/extended/electromagnetic/TestEm2/geant3/gmakeB b/examples/extended/electromagnetic/TestEm2/geant3/gmakeB index 18c2d4f70c..1f8c60158e 100755 --- a/examples/extended/electromagnetic/TestEm2/geant3/gmakeB +++ b/examples/extended/electromagnetic/TestEm2/geant3/gmakeB @@ -4,26 +4,15 @@ set name=testem2 set extnam=" " -if ($G4SYSTEM == AIX-xlC) set extnam=-qextname +if ($G4SYSTEM == AIX-AFS) set extnam=-qextname # mkdir $G4SYSTEM cd $G4SYSTEM # -# Run patchy -# -cat > temp.cra << eocra -+USE,batch. -eocra -cat ../$name.cra >> temp.cra -# -ypatchy - $name temp $name - $name :go -rm temp.cra -# # fortran compilation # -fsplit $name.f -rm $name.f -hepf77 $extnam -c -g *.f +hepf77 $extnam -c -g -Dbatch -I/cern/pro/include -I../include ../src/*.F + # # Link # @@ -37,7 +26,7 @@ chmod +x $name.xb # # cleanup # -rm *.lis *.lst *.f *.o +rm *.o echo 'done' exit diff --git a/examples/extended/electromagnetic/TestEm2/geant3/gmakeT b/examples/extended/electromagnetic/TestEm2/geant3/gmakeT index 2515dc08d3..54683b380b 100755 --- a/examples/extended/electromagnetic/TestEm2/geant3/gmakeT +++ b/examples/extended/electromagnetic/TestEm2/geant3/gmakeT @@ -4,20 +4,14 @@ set name=testem2 set extnam=" " -if ($G4SYSTEM == AIX-xlC) set extnam=-qextname +if ($G4SYSTEM == AIX-AFS) set extnam=-qextname # mkdir $G4SYSTEM cd $G4SYSTEM # -# Run patchy -# -ypatchy - $name ../$name $name - $name :go -# # fortran compilation # -fsplit $name.f -rm $name.f -hepf77 $extnam -c -g *.f +hepf77 $extnam -c -g -I/cern/pro/include -I../include ../src/*.F # # Link # @@ -31,7 +25,7 @@ chmod +x $name.xt # # cleanup # -rm *.lis *.lst *.f *.o +rm *.o echo 'done' exit diff --git a/examples/extended/electromagnetic/TestEm2/geant3/include/celoss.inc b/examples/extended/electromagnetic/TestEm2/geant3/include/celoss.inc new file mode 100644 index 0000000000..d7d1a534e2 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm2/geant3/include/celoss.inc @@ -0,0 +1,6 @@ + + PARAMETER (NBIN= 50) + COMMON/CELOSS/ SEL1(NBIN), SEL1C(NBIN), SER1(NBIN), SER1C(NBIN), + + SEL2(NBIN), SEL2C(NBIN), SER2(NBIN), SER2C(NBIN), + + DEDL(NBIN), DEDR(NBIN) , FNPAT(NBIN,3), + + STRCH,STRCH1,STRCH2,STRNE,STRNE1,STRNE2 diff --git a/examples/extended/electromagnetic/TestEm2/geant3/include/history.inc b/examples/extended/electromagnetic/TestEm2/geant3/include/history.inc new file mode 100644 index 0000000000..19b9534ab2 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm2/geant3/include/history.inc @@ -0,0 +1,30 @@ + +* +* TEST PROGRAM FOR GEANT/SHOWER STUDIES +* +* Authors R.Brun, M.Maire ********* +* +* This program generates showers within a cylinder made of an +* homogeneous material.The statistics of shower profiles and +* particle's flux are computed and plotted. +* It has been used to do the GEANT/EGS comparison.(CERN/DD/85/1) +* +* The present release has been modified : +* +* - to increase the flexibility of the volume definition from +* data cards.(see description of the common /PVOLUM/ ) +* +* - to permit to define all kinds of primary particles,i.e electrons +* as well pions ( ===> hadronic showers ). +* see data card KINE. +* +* +* History +* ------- +* +* 08-02-99 : adapted for Geant4 comparison: electromagnetic/test/TestEm2 +* 17-02-98 : adapted to Unix + interactive + graphic +* 21-01-90 : Simplified version (i.e. near gexam1) +* 06-04-89 : Add Hydrogen in the material library (imate=2) +* 10-02-89 : new histgrams for the resolution of the energy profile +* diff --git a/examples/extended/electromagnetic/TestEm2/geant3/include/pvolum.inc b/examples/extended/electromagnetic/TestEm2/geant3/include/pvolum.inc new file mode 100644 index 0000000000..c0b9134895 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm2/geant3/include/pvolum.inc @@ -0,0 +1,9 @@ + + COMMON/PVOLUM/ IMAT,NLTOT,NRTOT,DLX0,DRX0,X0,Z1,R1 +* +* IMAT = GEANT material number. (data card MATE) +* NLTOT = total number of longitudinal bins. (data card BINS) +* NRTOT = total number of radial bins. (data card BINS) +* DLX0 = longitudinal bin length , in radiation length unit. (data card BINS) +* DRX0 = radial bin length , in radiation length unit. (data card BINS) +* diff --git a/examples/extended/electromagnetic/TestEm2/geant3/src/gukine.F b/examples/extended/electromagnetic/TestEm2/geant3/src/gukine.F new file mode 100644 index 0000000000..57b83459cc --- /dev/null +++ b/examples/extended/electromagnetic/TestEm2/geant3/src/gukine.F @@ -0,0 +1,31 @@ + + SUBROUTINE GUKINE +* +* Generates Kinematics for primary track +* +* Data card Kine : Itype Ekine +* (pkine(3) is used internaly to store Etot) +* +#include "geant321/gcbank.inc" +#include "geant321/gcflag.inc" +#include "geant321/gckine.inc" +#include "pvolum.inc" +* + DIMENSION VERTEX(3),PLAB(3) + DATA VERTEX/3*0./ + DATA PLAB /3*0./ +* + VERTEX(3) = - Z1 + 0.0001 + CALL GSVERT(VERTEX,0,0,0,0,NVERT) +* + JPA = LQ(JPART-IKINE) + XMASS = Q(JPA+7) + PKINE(3) = XMASS + PKINE(1) + PLAB(3) = SQRT(PKINE(1)*(PKINE(3)+XMASS)) +* + CALL GSKINE(PLAB,IKINE,NVERT,0,0,NT) +* +* *** Kinematics debug + IF(IEVENT.EQ.1.OR.IDEBUG.NE.0) CALL GPRINT('KINE',0) +* + END diff --git a/examples/extended/electromagnetic/TestEm2/geant3/src/guout.F b/examples/extended/electromagnetic/TestEm2/geant3/src/guout.F new file mode 100644 index 0000000000..87222c0ab2 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm2/geant3/src/guout.F @@ -0,0 +1,77 @@ + + SUBROUTINE GUOUT +* +* User routine called at the end of each event +* +#include "geant321/gcflag.inc" +#include "geant321/gckine.inc" +#include "pvolum.inc" +#include "celoss.inc" +* +* *** drawing +* +#ifndef batch + IF (ISWIT(1).NE.0) THEN + CALL GDHEAD (110110,'testem2',0.) + CALL GDSHOW (1) + CALL GDXYZ (0) + END IF +#endif +* +* +* *** statistic +* + DLC = 0. + DRC = 0. + +* longitudinal profile +* + DO 2 I = 1,NLTOT + SEL1 (I) = SEL1 (I) + DEDL(I) + SEL2 (I) = SEL2 (I) + DEDL(I)**2 + DLC = DLC + DEDL(I) + SEL1C(I) = SEL1C(I) + DLC + SEL2C(I) = SEL2C(I) + DLC**2 + + BIN = (FLOAT(I)-0.5)*DLX0 + CALL HFILL(4,BIN,100*DEDL(I)/(DLX0*PKINE(3)),1.) + BIN = FLOAT(I)*DLX0 + CALL HFILL(5,BIN,100*DLC /PKINE(3),1.) + 2 CONTINUE + +* radial profile +* + DO 3 I = 1,NRTOT + SER1 (I) = SER1 (I) + DEDR(I) + SER2 (I) = SER2 (I) + DEDR(I)**2 + DRC = DRC + DEDR(I) + SER1C(I) = SER1C(I) + DRC + SER2C(I) = SER2C(I) + DRC**2 + + BIN = (FLOAT(I)-0.5)*DRX0 + CALL HFILL(10,BIN,100*DEDR(I)/(DRX0*PKINE(3)),1.) + BIN = FLOAT(I)*DRX0 + CALL HFILL(11,BIN,100*DRC /PKINE(3),1.) + 3 CONTINUE + +* particle flux +* + DO 14 IPAT = 1,3 + DO 14 NPL = 1,NLTOT + BIN = FLOAT(NPL)*DLX0 + CALL HFILL(6+IPAT,BIN,FNPAT(NPL,IPAT),1.) + 14 CONTINUE + +* energy deposited and track length +* + ESEEN = 100.*DLC/PKINE(3) + CALL HFILL(1, ESEEN,0.,1.) + CALL HFILL(2,STRCH/X0,0.,1.) + CALL HFILL(3,STRNE/X0,0.,1.) +* + STRCH1 = STRCH1 + STRCH + STRCH2 = STRCH2 + STRCH**2 + STRNE1 = STRNE1 + STRNE + STRNE2 = STRNE2 + STRNE**2 +* + END diff --git a/examples/extended/electromagnetic/TestEm2/geant3/src/gustep.F b/examples/extended/electromagnetic/TestEm2/geant3/src/gustep.F new file mode 100644 index 0000000000..183ab87c52 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm2/geant3/src/gustep.F @@ -0,0 +1,50 @@ + + SUBROUTINE GUSTEP +* +* User routine called at the end of each tracking step +* +#include "geant321/gcflag.inc" +#include "geant321/gconst.inc" +#include "geant321/gckine.inc" +#include "geant321/gcking.inc" +#include "geant321/gctmed.inc" +#include "geant321/gctrak.inc" +#include "geant321/gcvolu.inc" +#include "pvolum.inc" +#include "celoss.inc" +* + SAVE NLOLD +* +* *** Debug event and strore track for drawing + IF (IDEBUG.NE.0) CALL GPCXYZ + IF (ISWIT(1).EQ.1.AND.(CHARGE.NE.0.)) CALL GSXYZ + IF (ISWIT(1).EQ.2) CALL GSXYZ +* +* *** Something generated ? + IF(NGKINE.GT.0) CALL GSKING(0) +* +* *** Energy deposited + IF (DESTEP.GT.0.)THEN + NR = NUMBER(NLEVEL-1) + NL = NUMBER(NLEVEL) + DEDR(NR) = DEDR(NR) + DESTEP + DEDL(NL) = DEDL(NL) + DESTEP + ENDIF +* +* *** track length + IF (CHARGE.NE.0.) THEN + STRCH = STRCH + STEP + ELSE + STRNE = STRNE + STEP + ENDIF +* +* *** Particle's flux + NL = NUMBER(NLEVEL) + IF(SLENG.LE.0.) NLOLD = NL + IF(NL.NE.NLOLD) THEN + NPL = (NL + NLOLD)/2 + IF (IPART.LE.3) FNPAT(NPL,IPART) = FNPAT(NPL,IPART) + 1. + NLOLD = NL + ENDIF +* + END diff --git a/examples/extended/electromagnetic/TestEm2/geant3/src/gutrev.F b/examples/extended/electromagnetic/TestEm2/geant3/src/gutrev.F new file mode 100644 index 0000000000..7d90be4e19 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm2/geant3/src/gutrev.F @@ -0,0 +1,15 @@ + + SUBROUTINE GUTREV +* +* User routine to control tracking of one event +* Called by GRUN +* +#include "celoss.inc" +* + CALL VZERO(DEDL,5*NBIN) + STRCH = 0. + STRNE = 0. +* + CALL GTREVE +* + END diff --git a/examples/extended/electromagnetic/TestEm2/geant3/src/main.F b/examples/extended/electromagnetic/TestEm2/geant3/src/main.F new file mode 100644 index 0000000000..4fea06b838 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm2/geant3/src/main.F @@ -0,0 +1,61 @@ +#ifdef batch + + PROGRAM main +* +* + PARAMETER (NGBANK=500000, NHBOOK=5000) + COMMON/GCBANK/Q(NGBANK) + COMMON/PAWC /H(NHBOOK) +* + CALL GZEBRA( NGBANK) + CALL HLIMIT(-NHBOOK) +* +* *** initialize HIGZ + CALL HPLINT(0) +* +* *** GEANT initialisation + CALL UGINIT +* +* *** Start events processing + CALL GRUN +* +* *** End of RUN + CALL UGLAST +* + STOP + END + +#else + + PROGRAM main +* +* GEANT main program. To link with the MOTIF user interface +* the routine GPAWPP(NWGEAN,NWPAW) should be called, whereas +* the routine GPAW(NWGEAN,NWPAW) gives access to the basic +* graphics version. +* + PARAMETER (NWGEAN=3000000, NWPAW=1000000) + COMMON/GCBANK/GEANT(NWGEAN) + COMMON/PAWC /PAW (NWPAW) +* +* + CALL GPAW (NWGEAN,NWPAW) +* + END +* + SUBROUTINE qnext + END +* + SUBROUTINE czopen + END +* + SUBROUTINE cztcp + END +* + SUBROUTINE czclos + END +* + SUBROUTINE czputa + END + +#endif diff --git a/examples/extended/electromagnetic/TestEm2/geant3/src/ugeom.F b/examples/extended/electromagnetic/TestEm2/geant3/src/ugeom.F new file mode 100644 index 0000000000..8eb092515f --- /dev/null +++ b/examples/extended/electromagnetic/TestEm2/geant3/src/ugeom.F @@ -0,0 +1,94 @@ + + SUBROUTINE UGEOM +* +* *** Define user geometry set up +* +#include "geant321/gcbank.inc" +#include "pvolum.inc" +* + DIMENSION ZAir (2),AAir (2),WAir (2) + DIMENSION ZH2O (2),AH2O (2),WH2O (2) + DIMENSION ZBGO (3),ABGO (3),WBGO (3) + DIMENSION ZPbWO(3),APbWO(3),WPbWO(3) + + DIMENSION PAR(3) + +* +* *** Air mixture parameters + DATA ZAir/ 7.00, 8.00 / + DATA AAir/ 14.01, 16.00 / + DATA WAir/ 0.70, 0.30 / +* +* *** H2O compound parameters + DATA ZH2O/ 1.00, 8.00 / + DATA AH2O/ 1.01, 16.00 / + DATA WH2O/ 2. , 1. / +* +* *** BGO compound parameters + DATA ZBGO/ 8.00, 32.00, 83.00 / + DATA ABGO/ 16.00, 72.59, 208.98 / + DATA WBGO/ 12. , 3. , 4. / +* +* *** PbWO4 compound parameters + DATA ZPbWO/ 8.00, 74.00, 82.00 / + DATA APbWO/ 16.00, 183.84, 207.19 / + DATA WPbWO/ 4. , 1. , 1. / +* +* *** Defines USER perticular materials +* + CALL GSMIXT( 1,'Air' , AAir , ZAir , 1.29E-3, 2,WAir) + CALL GSMIXT( 2,'Water' , AH2O , ZH2O , 1.0 ,-2,WH2O) + CALL GSMATE( 3,'Ar Liquid', 40.00, 18. , 1.39 ,14.0 ,84.0,0,0) + CALL GSMATE( 4,'Aluminium', 26.98, 13. , 2.7 , 8.9 ,37.2,0,0) + CALL GSMATE( 5,'Iron' , 55.85, 26. , 7.87 , 1.76,17.1,0,0) + CALL GSMIXT( 6,'BGO' , ABGO , ZBGO , 7.1 ,-3,WBGO) + CALL GSMIXT( 7,'PbWO' , APbWO, ZPbWO, 8.28 ,-3,WPbWO) + CALL GSMATE( 8,'Lead ' ,207.19, 82. ,11.35 ,0.56,18.5,0,0) + CALL GSMATE( 9,'Tungsten' ,183.85, 74. ,19.30 ,0.35, 9.6,0,0) +* +* *** Defines USER tracking media parameters + FIELDM = 0.0 + IFIELD = 0 + TMAXFD = 10.0 + STEMAX = 1000. + DEEMAX = 0.20 + EPSIL = 0.001 + STMIN = 0.010 +* + CALL GSTMED( 1,'Absorber',IMAT, 0 ,IFIELD,FIELDM,TMAXFD, + * STEMAX,DEEMAX,EPSIL,STMIN, 0 , 0 ) +* +* *** Defines USER'S VOLUMES + JMA = LQ(JMATE-IMAT) + X0 = Q(JMA + 9) + R1 = NRTOT*DRX0*X0 + Z1 = NLTOT*DLX0*X0*0.5 +* + PAR(1) = 0. + PAR(2) = R1 + PAR(3) = Z1 + CALL GSVOLU( 'ECAL' , 'TUBE' , 1, PAR , 3 , IVOL ) +* + CALL GSDVN( 'RING' , 'ECAL' , NRTOT , 1) + CALL GSDVN( 'SLAB' , 'RING' , NLTOT , 3) +* +* *** Close geometry banks. (obligatory system routine) + CALL GGCLOS +** +* *** dessin + CALL GSATT ('*' ,'SEEN',1) + CALL GSATT ('RING','SEEN',0) +* + DO IX =1,3 + CALL GDOPEN (IX) + SCALE = 9.5/Z1 + PAXIS = 0. + SAXIS = 0.2*Z1 + CALL GDRAWC ('ECAL',IX,0.,10.,10.,SCALE,SCALE) + CALL GDAXIS (PAXIS,PAXIS,PAXIS,SAXIS) + CALL GDSCAL ( 10., 0.3) + CALL GDCLOS + END DO +* + + END diff --git a/examples/extended/electromagnetic/TestEm2/geant3/src/uginit.F b/examples/extended/electromagnetic/TestEm2/geant3/src/uginit.F new file mode 100644 index 0000000000..ab7debb2ee --- /dev/null +++ b/examples/extended/electromagnetic/TestEm2/geant3/src/uginit.F @@ -0,0 +1,52 @@ + + SUBROUTINE UGINIT +* +* To initialise GEANT/USER program and read data cards +* +#include "pvolum.inc" +#include "celoss.inc" +* + CHARACTER*20 filnam +* +* *** Define the GEANT parameters + CALL GINIT + +* *** read data cards + PRINT *, 'G3 > gives the filename of the data cards to be read:' + READ (*,'(A)') filnam + IF (filnam.EQ.' ') filnam = 'run01.dat' + OPEN (unit=5,file=filnam,status='unknown',form='formatted') +* +* *** material definition + CALL FFKEY('MATE',IMAT,1,'INTEGER') +* +* *** volumes and bins definition + CALL FFKEY('BINS',NLTOT,4,'MIXED') +* +* *** read data cards + CALL GFFGO + +* *** achieve initialization + NLTOT = MIN(NLTOT,NBIN) + NRTOT = MIN(NRTOT,NBIN) + CALL VZERO(SEL1,13*NBIN+6) +* + CALL GZINIT + CALL GPART +* + CALL GDINIT +* +* *** Geometry and materials description + CALL UGEOM +* +* *** Energy loss and cross-sections initialisations + CALL GPHYSI +* + CALL GPRINT('MATE',0) + CALL GPRINT('TMED',0) + CALL GPRINT('VOLU',0) +* +* *** Define user histograms + CALL UHINIT +* + END diff --git a/examples/extended/electromagnetic/TestEm2/geant3/src/uglast.F b/examples/extended/electromagnetic/TestEm2/geant3/src/uglast.F new file mode 100644 index 0000000000..325962d343 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm2/geant3/src/uglast.F @@ -0,0 +1,94 @@ + + SUBROUTINE UGLAST +* +* Termination routine to print histograms and statistics +* +#include "geant321/gcbank.inc" +#include "geant321/gcflag.inc" +#include "geant321/gckine.inc" +#include "pvolum.inc" +#include "celoss.inc" +* + DIMENSION XSEL1(NBIN),XSEL1C(NBIN),XSER1(NBIN),XSER1C(NBIN), + + XSEL2(NBIN),XSEL2C(NBIN),XSER2(NBIN),XSER2C(NBIN) + +* +* + CALL GLAST +* +* *** close HIGZ + CALL HPLEND +* +* *** Normalize and print energy distribution + XEVENT=IEVENT + CNORM = 100./(XEVENT*PKINE(3)) +* +* *** longitudinal profile + DO 2 I = 1,NLTOT + XSEL1 (I) = CNORM * SEL1 (I) + XSEL2 (I) = CNORM*SQRT(ABS(XEVENT*SEL2 (I) - SEL1 (I)**2)) + XSEL1C(I) = CNORM * SEL1C(I) + XSEL2C(I) = CNORM*SQRT(ABS(XEVENT*SEL2C(I) - SEL1C(I)**2)) + 2 CONTINUE + CALL HPAK (6,XSEL2C) +* +* *** radial profile + DO 3 I = 1,NRTOT + XSER1 (I) = CNORM * SER1 (I) + XSER2 (I) = CNORM*SQRT(ABS(XEVENT*SER2 (I) - SER1 (I)**2)) + XSER1C(I) = CNORM * SER1C(I) + XSER2C(I) = CNORM*SQRT(ABS(XEVENT*SER2C(I) - SER1C(I)**2)) + 3 CONTINUE + CALL HPAK (12,XSER2C) +* +* *** total track length + CNORM = 1./(XEVENT*X0) + XTRCH1 = CNORM*STRCH1 + XTRCH2 = CNORM*SQRT(ABS(XEVENT*STRCH2 - STRCH1**2)) + XTRNE1 = CNORM*STRNE1 + XTRNE2 = CNORM*SQRT(ABS(XEVENT*STRNE2 - STRNE1**2)) +* +* *** Print profiles +* + PRINT 749 + PRINT 750 + PRINT 751 + DO 15 I=1,NLTOT + B0 = (I-1)*DLX0 + B1 = I*DLX0 + PRINT 754,B0,B1,XSEL1(I),XSEL2(I),B1,XSEL1C(I),XSEL2C(I) + 15 CONTINUE + + PRINT 760 + PRINT 751 + DO 16 I=1,NRTOT + B0 = (I-1)*DRX0 + B1 = I*DRX0 + PRINT 754,B0,B1,XSER1(I),XSER2(I),B1,XSER1C(I),XSER2C(I) + 16 CONTINUE +* +* *** print summary + PRINT 770 + PRINT 771,XSEL1C(NLTOT),XSEL2C(NLTOT) + PRINT 772,XTRCH1,XTRCH2 + PRINT 773,XTRNE1,XTRNE2 +* +* *** Save selected histograms + IF (ISWIT(2).EQ.1) THEN + CALL HRPUT(0,'testem2.paw','N') + ENDIF +* + 749 FORMAT(///) + 750 FORMAT(15X,'LATERAL PROFILE',35X,'CUMULATIVE LATERAL PROFILE'/) + 751 FORMAT( 8X,'Bin',12X,' Mean ',5X,' rms', + * 19X,'Bin', 9X,' Mean ',5X,' rms',/) + 754 FORMAT( 3X,F5.2,'->',F5.2,' radl: ',F7.2,'% ',F7.2,'%', + * 13X, '0->',F5.2,' radl: ',F7.2,'% ',F7.2,'%') + 760 FORMAT(///,15X,'RADIAL PROFILE',35X,'CUMULATIVE RADIAL PROFILE'/) + 770 FORMAT(///,30X,'SUMMARY',/) + 771 FORMAT( 25X,'energy deposit : ',F7.2,' % E0 +- ',F7.2,' % E0') + 772 FORMAT( 25X,'charged traklen: ',F7.2,' radl +- ',F7.2,' radl') + 773 FORMAT( 25X,'neutral traklen: ',F7.2,' radl +- ',F7.2,' radl') +* + END + diff --git a/examples/extended/electromagnetic/TestEm2/geant3/src/uhinit.F b/examples/extended/electromagnetic/TestEm2/geant3/src/uhinit.F new file mode 100644 index 0000000000..ccf8550990 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm2/geant3/src/uhinit.F @@ -0,0 +1,61 @@ + + SUBROUTINE UHINIT +* +* To book the user's histograms +* +#include "geant321/gckine.inc" +#include "pvolum.inc" +* +* *** Histograms for showers development +* + EDMIN=0. + EDMAX=100. + TRKMX=100.*PKINE(1) +* + CALL HBOOK1(1,'total energy deposition (in percent of E inc)' + *,100,EDMIN,EDMAX,0.0) + CALL HBOOK1(2,'total charged tracklengh (in radl)' + *,100, 0. , TRKMX, 0.0) + CALL HBOOK1(3,'total neutral tracklengh (in radl)' + *,100, 0. , 10*TRKMX, 0.0) +* + CALL HIDOPT(0,'STAT') +* +* *** Longitudinal profile + ZMAX=NLTOT*DLX0 + + CALL HBPROF(4,'longit energy profile (in percent of E inc)' + *, NLTOT, 0.,ZMAX, 0., 1000.,' ') +* + ZMIN = 0.5*DLX0 + ZMAX = ZMIN + NLTOT*DLX0 + + CALL HBPROF(5,'cumul longit energy dep. (in percent of E inc)' + *, NLTOT, ZMIN,ZMAX, 0., 100.,' ') + CALL HBOOK1(6,'resolution: cumul L energy dep. (% of E inc)' + *, NLTOT, ZMIN,ZMAX, 0.0) + +* +* *** Particle flux + CALL HBPROF(7,'nb of gamma per plane' + *, NLTOT, ZMIN,ZMAX, 0., 1.E+6,' ') + CALL HBPROF(8,'nb of posit per plane' + *, NLTOT, ZMIN,ZMAX, 0., 1.E+6,' ') + CALL HBPROF(9,'nb of elect per plane' + *, NLTOT, ZMIN,ZMAX, 0., 1.E+6,' ') +* +* *** Radial profile + RMAX=NRTOT*DRX0 + + CALL HBPROF(10,'radial energy profile (in percent of E inc)' + *, NRTOT, 0.,RMAX, 0., 1000.,' ') +* + RMIN = 0.5*DRX0 + RMAX = RMIN + NRTOT*DRX0 + + CALL HBPROF(11,'cumul radial energy dep. (in percent of E inc)' + *, NRTOT, RMIN,RMAX, 0., 100.,' ') + CALL HBOOK1(12,'resolution: cumul R energy dep. (% of E inc)' + *, NRTOT, RMIN,RMAX, 0.0) +* + END diff --git a/examples/extended/electromagnetic/TestEm2/geant3/testem2.cra b/examples/extended/electromagnetic/TestEm2/geant3/testem2.cra deleted file mode 100644 index 6069594326..0000000000 --- a/examples/extended/electromagnetic/TestEm2/geant3/testem2.cra +++ /dev/null @@ -1,586 +0,0 @@ -+OPTION,MAPASM. -+ASM,23. -+USE,GCDES,TestEm2,T=EXE. -* -+EXE,CRA*. -* -+PAM,11,T=CARD,T=ATTACH. /cern/pro/src/car/geant321.car -+PATCH,TestEm2. -+DECK,BLANKDEK. -* -* SHOWER 3.00 /01 900121 18.00 GEANT EXAMPLES -* -* TEST PROGRAM FOR GEANT/SHOWER STUDIES -* -* Authors R.Brun, M.Maire ********* -* -* This program generates showers within a cylinder made of an -* homogeneous material.The statistics of shower profiles and -* particle's flux are computed and plotted. -* It has been used to do the GEANT/EGS comparison.(CERN/DD/85/1) -* -* The present release has been modified : -* -* - to increase the flexibility of the volume definition from -* data cards.(see description of the common /PVOLUM/ ) -* -* - to permit to define all kinds of primary particles,i.e electrons -* as well pions ( ===> hadronic showers ). -* see data card KINE. -* -* -* History -* ------- -* -* 08-02-99 : adapted for Geant4 comparison: electromagnetic/test/TestEm2 -* 17-02-98 : adapted to Unix + interactive + graphic -* 21-01-90 : Simplified version (i.e. near gexam1) -* 06-04-89 : Add Hydrogen in the material library (imate=2) -* 10-02-89 : new histgrams for the resolution of the energy profile -* -+KEEP,PVOLUM. - COMMON/PVOLUM/ IMAT,NLTOT,NRTOT,DLX0,DRX0,X0,Z1,R1 -* -* IMAT = GEANT material number. (data card MATE) -* NLTOT = total number of longitudinal bins. (data card BINS) -* NRTOT = total number of radial bins. (data card BINS) -* DLX0 = longitudinal bin length , in radiation length unit. (data card BINS) -* DRX0 = radial bin length , in radiation length unit. (data card BINS) -* -+KEEP,CELOSS. - PARAMETER (NBIN= 50) - COMMON/CELOSS/ SEL1(NBIN), SEL1C(NBIN), SER1(NBIN), SER1C(NBIN), - + SEL2(NBIN), SEL2C(NBIN), SER2(NBIN), SER2C(NBIN), - + DEDL(NBIN), DEDR(NBIN) , FNPAT(NBIN,3), - + STRCH,STRCH1,STRCH2,STRNE,STRNE1,STRNE2 - -+DECK,main,if=batch. - PROGRAM main -* -* - PARAMETER (NGBANK=500000, NHBOOK=5000) - COMMON/GCBANK/Q(NGBANK) - COMMON/PAWC /H(NHBOOK) -* - CALL GZEBRA( NGBANK) - CALL HLIMIT(-NHBOOK) -* -* *** initialize HIGZ - CALL HPLINT(0) -* -* *** GEANT initialisation - CALL UGINIT -* -* *** Start events processing - CALL GRUN -* -* *** End of RUN - CALL UGLAST -* - STOP - END -+DECK,main,IF=-batch. - PROGRAM main -* -* GEANT main program. To link with the MOTIF user interface -* the routine GPAWPP(NWGEAN,NWPAW) should be called, whereas -* the routine GPAW(NWGEAN,NWPAW) gives access to the basic -* graphics version. -* - PARAMETER (NWGEAN=3000000, NWPAW=1000000) - COMMON/GCBANK/GEANT(NWGEAN) - COMMON/PAWC /PAW (NWPAW) -* -* - CALL GPAW (NWGEAN,NWPAW) -* - END -* - SUBROUTINE qnext - END -* - SUBROUTINE czopen - END -* - SUBROUTINE cztcp - END -* - SUBROUTINE czclos - END -* - SUBROUTINE czputa - END -+DECK,UGINIT - SUBROUTINE UGINIT -* -* To initialise GEANT/USER program and read data cards -* -+SEQ,PVOLUM. -+SEQ,CELOSS. -* - CHARACTER*20 filnam -* -* *** Define the GEANT parameters - CALL GINIT - -* *** read data cards - PRINT *, 'G3 > gives the filename of the data cards to be read:' - READ (*,'(A)') filnam - IF (filnam.EQ.' ') filnam = 'testem2.dat' - OPEN (unit=5,file=filnam,status='unknown',form='formatted') -* -* *** material definition - CALL FFKEY('MATE',IMAT,1,'INTEGER') -* -* *** volumes and bins definition - CALL FFKEY('BINS',NLTOT,4,'MIXED') -* -* *** read data cards - CALL GFFGO - -* *** achieve initialization - NLTOT = MIN(NLTOT,NBIN) - NRTOT = MIN(NRTOT,NBIN) - CALL VZERO(SEL1,13*NBIN+6) -* - CALL GZINIT - CALL GPART -* - CALL GDINIT -* -* *** Geometry and materials description - CALL UGEOM -* -* *** Energy loss and cross-sections initialisations - CALL GPHYSI -* - CALL GPRINT('MATE',0) - CALL GPRINT('TMED',0) - CALL GPRINT('VOLU',0) -* -* *** Define user histograms - CALL UHINIT -* - END -+DECK,UGEOM. - SUBROUTINE UGEOM -* -* *** Define user geometry set up -* -+SEQ,GCBANK. -+SEQ,PVOLUM. -* - DIMENSION ZAir (2),AAir (2),WAir (2) - DIMENSION ZH2O (2),AH2O (2),WH2O (2) - DIMENSION ZBGO (3),ABGO (3),WBGO (3) - DIMENSION ZPbWO(3),APbWO(3),WPbWO(3) - - DIMENSION PAR(3) - -* -* *** Air mixture parameters - DATA ZAir/ 7.00, 8.00 / - DATA AAir/ 14.01, 16.00 / - DATA WAir/ 0.70, 0.30 / -* -* *** H2O compound parameters - DATA ZH2O/ 1.00, 8.00 / - DATA AH2O/ 1.01, 16.00 / - DATA WH2O/ 2. , 1. / -* -* *** BGO compound parameters - DATA ZBGO/ 8.00, 32.00, 83.00 / - DATA ABGO/ 16.00, 72.59, 208.98 / - DATA WBGO/ 12. , 3. , 4. / -* -* *** PbWO4 compound parameters - DATA ZPbWO/ 8.00, 74.00, 82.00 / - DATA APbWO/ 16.00, 183.84, 207.19 / - DATA WPbWO/ 4. , 1. , 1. / -* -* *** Defines USER perticular materials -* - CALL GSMIXT( 1,'Air' , AAir , ZAir , 1.29E-3, 2,WAir) - CALL GSMIXT( 2,'Water' , AH2O , ZH2O , 1.0 ,-2,WH2O) - CALL GSMATE( 3,'Ar Liquid', 40.00, 18. , 1.39 ,14.0 ,84.0,0,0) - CALL GSMATE( 4,'Aluminium', 26.98, 13. , 2.7 , 8.9 ,37.2,0,0) - CALL GSMATE( 5,'Iron' , 55.85, 26. , 7.87 , 1.76,17.1,0,0) - CALL GSMIXT( 6,'BGO' , ABGO , ZBGO , 7.1 ,-3,WBGO) - CALL GSMIXT( 7,'PbWO' , APbWO, ZPbWO, 8.28 ,-3,WPbWO) - CALL GSMATE( 8,'Lead ' ,207.19, 82. ,11.35 ,0.56,18.5,0,0) -* -* *** Defines USER tracking media parameters - FIELDM = 0.0 - IFIELD = 0 - TMAXFD = 10.0 - STEMAX = 1000. - DEEMAX = 0.20 - EPSIL = 0.001 - STMIN = 0.010 -* - CALL GSTMED( 1,'Absorber',IMAT, 0 ,IFIELD,FIELDM,TMAXFD, - * STEMAX,DEEMAX,EPSIL,STMIN, 0 , 0 ) -* -* *** Defines USER'S VOLUMES - JMA = LQ(JMATE-IMAT) - X0 = Q(JMA + 9) - R1 = NRTOT*DRX0*X0 - Z1 = NLTOT*DLX0*X0*0.5 -* - PAR(1) = 0. - PAR(2) = R1 - PAR(3) = Z1 - CALL GSVOLU( 'ECAL' , 'TUBE' , 1, PAR , 3 , IVOL ) -* - CALL GSDVN( 'RING' , 'ECAL' , NRTOT , 1) - CALL GSDVN( 'SLAB' , 'RING' , NLTOT , 3) -* -* *** Close geometry banks. (obligatory system routine) - CALL GGCLOS -** -* *** dessin - CALL GSATT ('*' ,'SEEN',1) - CALL GSATT ('RING','SEEN',0) -* - DO IX =1,3 - CALL GDOPEN (IX) - SCALE = 9.5/Z1 - PAXIS = 0. - SAXIS = 0.2*Z1 - CALL GDRAWC ('ECAL',IX,0.,10.,10.,SCALE,SCALE) - CALL GDAXIS (PAXIS,PAXIS,PAXIS,SAXIS) - CALL GDSCAL ( 10., 0.3) - CALL GDCLOS - END DO -* - - END -+DECK,UHINIT. - SUBROUTINE UHINIT -* -* To book the user's histograms -* -+SEQ,GCKINE -+SEQ,PVOLUM -* -* *** Histograms for showers development -* - EDMIN=0. - EDMAX=100. - TRKMX=100.*PKINE(1) -* - CALL HBOOK1(1,'total energy deposition (in percent of E inc)' - *,100,EDMIN,EDMAX,0.0) - CALL HBOOK1(2,'total charged tracklengh (in radl)' - *,100, 0. , TRKMX, 0.0) - CALL HBOOK1(3,'total neutral tracklengh (in radl)' - *,100, 0. , 10*TRKMX, 0.0) -* - CALL HIDOPT(0,'STAT') -* -* *** Longitudinal profile - ZMAX=NLTOT*DLX0 - - CALL HBPROF(4,'longit energy profile (in percent of E inc)' - *, NLTOT, 0.,ZMAX, 0., 1000.,' ') -* - ZMIN = 0.5*DLX0 - ZMAX = ZMIN + NLTOT*DLX0 - - CALL HBPROF(5,'cumul longit energy dep. (in percent of E inc)' - *, NLTOT, ZMIN,ZMAX, 0., 100.,' ') - CALL HBOOK1(6,'resolution: cumul L energy dep. (% of E inc)' - *, NLTOT, ZMIN,ZMAX, 0.0) - -* -* *** Particle flux - CALL HBPROF(7,'nb of gamma per plane' - *, NLTOT, ZMIN,ZMAX, 0., 1.E+6,' ') - CALL HBPROF(8,'nb of posit per plane' - *, NLTOT, ZMIN,ZMAX, 0., 1.E+6,' ') - CALL HBPROF(9,'nb of elect per plane' - *, NLTOT, ZMIN,ZMAX, 0., 1.E+6,' ') -* -* *** Radial profile - RMAX=NRTOT*DRX0 - - CALL HBPROF(10,'radial energy profile (in percent of E inc)' - *, NRTOT, 0.,RMAX, 0., 1000.,' ') -* - RMIN = 0.5*DRX0 - RMAX = RMIN + NRTOT*DRX0 - - CALL HBPROF(11,'cumul radial energy dep. (in percent of E inc)' - *, NRTOT, RMIN,RMAX, 0., 100.,' ') - CALL HBOOK1(12,'resolution: cumul R energy dep. (% of E inc)' - *, NRTOT, RMIN,RMAX, 0.0) -* - END -+DECK,GUKINE - SUBROUTINE GUKINE -* -* Generates Kinematics for primary track -* -* Data card Kine : Itype Ekine -* (pkine(3) is used internaly to store Etot) -* -+SEQ,GCBANK,GCFLAG,GCKINE. -+SEQ,PVOLUM -* - DIMENSION VERTEX(3),PLAB(3) - DATA VERTEX/3*0./ - DATA PLAB /3*0./ -* - VERTEX(3) = - Z1 + 0.01 - CALL GSVERT(VERTEX,0,0,0,0,NVERT) -* - JPA = LQ(JPART-IKINE) - XMASS = Q(JPA+7) - PKINE(3) = XMASS + PKINE(1) - PLAB(3) = SQRT(PKINE(1)*(PKINE(3)+XMASS)) -* - CALL GSKINE(PLAB,IKINE,NVERT,0,0,NT) -* -* *** Kinematics debug - IF(IEVENT.EQ.1.OR.IDEBUG.NE.0) CALL GPRINT('KINE',0) -* - END -+DECK,GUTREV - SUBROUTINE GUTREV -* -* User routine to control tracking of one event -* Called by GRUN -* -+SEQ,CELOSS -* - CALL VZERO(DEDL,5*NBIN) - STRCH = 0. - STRNE = 0. -* - CALL GTREVE -* - END -+DECK,GUSTEP - SUBROUTINE GUSTEP -* -* User routine called at the end of each tracking step -* -+SEQ,GCFLAG,GCONST. -+SEQ,GCKINE,GCKING,GCTMED,GCTRAK,GCVOLU. -+SEQ,PVOLUM,CELOSS. -* - SAVE NLOLD -* -* *** Debug event and strore track for drawing - IF (IDEBUG.NE.0) CALL GPCXYZ - IF (ISWIT(1).EQ.1.AND.(CHARGE.NE.0.)) CALL GSXYZ - IF (ISWIT(1).EQ.2) CALL GSXYZ -* -* *** Something generated ? - IF(NGKINE.GT.0) CALL GSKING(0) -* -* *** Energy deposited - IF (DESTEP.GT.0.)THEN - NR = NUMBER(NLEVEL-1) - NL = NUMBER(NLEVEL) - DEDR(NR) = DEDR(NR) + DESTEP - DEDL(NL) = DEDL(NL) + DESTEP - ENDIF -* -* *** track length - IF (CHARGE.NE.0.) THEN - STRCH = STRCH + STEP - ELSE - STRNE = STRNE + STEP - ENDIF -* -* *** Particle's flux - NL = NUMBER(NLEVEL) - IF(SLENG.LE.0.) NLOLD = NL - IF(NL.NE.NLOLD) THEN - NPL = (NL + NLOLD)/2 - IF (IPART.LE.3) FNPAT(NPL,IPART) = FNPAT(NPL,IPART) + 1. - NLOLD = NL - ENDIF -* - END -+DECK,GUOUT - SUBROUTINE GUOUT -* -* User routine called at the end of each event -* -+SEQ,GCFLAG,GCKINE. -+SEQ,PVOLUM,CELOSS. -* -* *** drawing -* -+self,if=-batch. - IF (ISWIT(1).NE.0) THEN - CALL GDHEAD (110110,'testem2',0.) - CALL GDSHOW (1) - CALL GDXYZ (0) - END IF -+self. -* -* -* *** statistic -* - DLC = 0. - DRC = 0. - -* longitudinal profile -* - DO 2 I = 1,NLTOT - SEL1 (I) = SEL1 (I) + DEDL(I) - SEL2 (I) = SEL2 (I) + DEDL(I)**2 - DLC = DLC + DEDL(I) - SEL1C(I) = SEL1C(I) + DLC - SEL2C(I) = SEL2C(I) + DLC**2 - - BIN = (FLOAT(I)-0.5)*DLX0 - CALL HFILL(4,BIN,100*DEDL(I)/(DLX0*PKINE(3)),1.) - BIN = FLOAT(I)*DLX0 - CALL HFILL(5,BIN,100*DLC /PKINE(3),1.) - 2 CONTINUE - -* radial profile -* - DO 3 I = 1,NRTOT - SER1 (I) = SER1 (I) + DEDR(I) - SER2 (I) = SER2 (I) + DEDR(I)**2 - DRC = DRC + DEDR(I) - SER1C(I) = SER1C(I) + DRC - SER2C(I) = SER2C(I) + DRC**2 - - BIN = (FLOAT(I)-0.5)*DRX0 - CALL HFILL(10,BIN,100*DEDR(I)/(DRX0*PKINE(3)),1.) - BIN = FLOAT(I)*DRX0 - CALL HFILL(11,BIN,100*DRC /PKINE(3),1.) - 3 CONTINUE - -* particle flux -* - DO 14 IPAT = 1,3 - DO 14 NPL = 1,NLTOT - BIN = FLOAT(NPL)*DLX0 - CALL HFILL(6+IPAT,BIN,FNPAT(NPL,IPAT),1.) - 14 CONTINUE - -* energy deposited and track length -* - ESEEN = 100.*DLC/PKINE(3) - CALL HFILL(1, ESEEN,0.,1.) - CALL HFILL(2,STRCH/X0,0.,1.) - CALL HFILL(3,STRNE/X0,0.,1.) -* - STRCH1 = STRCH1 + STRCH - STRCH2 = STRCH2 + STRCH**2 - STRNE1 = STRNE1 + STRNE - STRNE2 = STRNE2 + STRNE**2 -* - END -+DECK,UGLAST - SUBROUTINE UGLAST -* -* Termination routine to print histograms and statistics -* -+SEQ,GCBANK,GCKINE,GCFLAG. -+SEQ,PVOLUM,CELOSS. -* - DIMENSION XSEL1(NBIN),XSEL1C(NBIN),XSER1(NBIN),XSER1C(NBIN), - + XSEL2(NBIN),XSEL2C(NBIN),XSER2(NBIN),XSER2C(NBIN) - -* -* - CALL GLAST -* -* *** close HIGZ - CALL HPLEND -* -* *** Normalize and print energy distribution - XEVENT=IEVENT - CNORM = 100./(XEVENT*PKINE(3)) -* -* *** longitudinal profile - DO 2 I = 1,NLTOT - XSEL1 (I) = CNORM * SEL1 (I) - XSEL2 (I) = CNORM*SQRT(ABS(XEVENT*SEL2 (I) - SEL1 (I)**2)) - XSEL1C(I) = CNORM * SEL1C(I) - XSEL2C(I) = CNORM*SQRT(ABS(XEVENT*SEL2C(I) - SEL1C(I)**2)) - 2 CONTINUE - CALL HPAK (6,XSEL2C) -* -* *** radial profile - DO 3 I = 1,NRTOT - XSER1 (I) = CNORM * SER1 (I) - XSER2 (I) = CNORM*SQRT(ABS(XEVENT*SER2 (I) - SER1 (I)**2)) - XSER1C(I) = CNORM * SER1C(I) - XSER2C(I) = CNORM*SQRT(ABS(XEVENT*SER2C(I) - SER1C(I)**2)) - 3 CONTINUE - CALL HPAK (12,XSER2C) -* -* *** total track length - CNORM = 1./(XEVENT*X0) - XTRCH1 = CNORM*STRCH1 - XTRCH2 = CNORM*SQRT(ABS(XEVENT*STRCH2 - STRCH1**2)) - XTRNE1 = CNORM*STRNE1 - XTRNE2 = CNORM*SQRT(ABS(XEVENT*STRNE2 - STRNE1**2)) -* -* *** Print profiles -* - PRINT 749 - PRINT 750 - PRINT 751 - DO 15 I=1,NLTOT - B0 = (I-1)*DLX0 - B1 = I*DLX0 - PRINT 754,B0,B1,XSEL1(I),XSEL2(I),B1,XSEL1C(I),XSEL2C(I) - 15 CONTINUE - - PRINT 760 - PRINT 751 - DO 16 I=1,NRTOT - B0 = (I-1)*DRX0 - B1 = I*DRX0 - PRINT 754,B0,B1,XSER1(I),XSER2(I),B1,XSER1C(I),XSER2C(I) - 16 CONTINUE -* -* *** print summary - PRINT 770 - PRINT 771,XSEL1C(NLTOT),XSEL2C(NLTOT) - PRINT 772,XTRCH1,XTRCH2 - PRINT 773,XTRNE1,XTRNE2 -* -* *** Save selected histograms - IF (ISWIT(2).EQ.1) THEN - CALL HRPUT(0,'testem2.histo','N') - ENDIF -* - 749 FORMAT(///) - 750 FORMAT(15X,'LATERAL PROFILE',35X,'CUMULATIVE LATERAL PROFILE'/) - 751 FORMAT( 8X,'Bin',12X,' Mean ',5X,' rms', - * 19X,'Bin', 9X,' Mean ',5X,' rms',/) - 754 FORMAT( 3X,F5.2,'->',F5.2,' radl: ',F7.2,'% ',F7.2,'%', - * 13X, '0->',F5.2,' radl: ',F7.2,'% ',F7.2,'%') - 760 FORMAT(///,15X,'RADIAL PROFILE',35X,'CUMULATIVE RADIAL PROFILE'/) - 770 FORMAT(///,30X,'SUMMARY',/) - 771 FORMAT( 25X,'energy deposit : ',F7.2,' % E0 +- ',F7.2,' % E0') - 772 FORMAT( 25X,'charged traklen: ',F7.2,' radl +- ',F7.2,' radl') - 773 FORMAT( 25X,'neutral traklen: ',F7.2,' radl +- ',F7.2,' radl') -* - END -+DECK,ffread,T=data. -LIST -MATE 7 -BINS 20 (nbZ) 20 (nbR) 1. (dZ/radl) 0.25 (dR/radl) -TRIG 500 -KINE 3 (Itype) 5. (Ekine) -DEBUG 10 5 10 -SWIT 0 (draw) 1 (save) -CUTS 10.0e-6 (cutgam) 10.0e-6 (cutele) 3*10.e-03 (cutneu/had/muo) - 2*84.8e-6 (bcute/m) 2*1.13e-3 (dcute/m) -LOSS 1 -HADR 0 -ABAN 0 -TIME 2=1. -+QUIT. diff --git a/examples/extended/electromagnetic/TestEm2/include/Em2DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm2/include/Em2DetectorConstruction.hh index 03c7dbeb62..c0e682d742 100644 --- a/examples/extended/electromagnetic/TestEm2/include/Em2DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm2/include/Em2DetectorConstruction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em2DetectorConstruction.hh,v 1.2 1999/12/15 14:48:59 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm2/include/Em2DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm2/include/Em2DetectorMessenger.hh index 35d357fe8e..40dd109ac1 100644 --- a/examples/extended/electromagnetic/TestEm2/include/Em2DetectorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm2/include/Em2DetectorMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em2DetectorMessenger.hh,v 1.2 1999/12/15 14:48:59 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm2/include/Em2EventAction.hh b/examples/extended/electromagnetic/TestEm2/include/Em2EventAction.hh index 2ee9225ea3..d120281a43 100644 --- a/examples/extended/electromagnetic/TestEm2/include/Em2EventAction.hh +++ b/examples/extended/electromagnetic/TestEm2/include/Em2EventAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em2EventAction.hh,v 1.2 1999/12/15 14:48:59 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm2/include/Em2EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm2/include/Em2EventActionMessenger.hh index 08e422f664..8e69e63c96 100644 --- a/examples/extended/electromagnetic/TestEm2/include/Em2EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm2/include/Em2EventActionMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em2EventActionMessenger.hh,v 1.2 1999/12/15 14:48:59 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm2/include/Em2PhysicsList.hh b/examples/extended/electromagnetic/TestEm2/include/Em2PhysicsList.hh index 313e349899..f11c707853 100644 --- a/examples/extended/electromagnetic/TestEm2/include/Em2PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm2/include/Em2PhysicsList.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em2PhysicsList.hh,v 1.2 1999/12/15 14:48:59 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em2PhysicsList.hh,v 1.3 2000/04/17 11:25:52 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // @@ -19,6 +19,7 @@ #include "G4VUserPhysicsList.hh" #include "globals.hh" +class Em2PhysicsListMessenger; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -38,12 +39,23 @@ class Em2PhysicsList: public G4VUserPhysicsList public: void SetCuts(); - + void SetCutForGamma(G4double); + void SetCutForElectron(G4double); + void SetCutForProton(G4double); + protected: // Construct processes and register them void ConstructProcess(); void ConstructGeneral(); void ConstructEM(); + + private: + G4double cutForGamma; + G4double cutForElectron; + G4double cutForProton; + G4double currentDefaultCut; + + Em2PhysicsListMessenger* pMessenger; }; #endif diff --git a/examples/extended/electromagnetic/TestEm6/include/Em6EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm2/include/Em2PhysicsListMessenger.hh similarity index 55% rename from examples/extended/electromagnetic/TestEm6/include/Em6EventActionMessenger.hh rename to examples/extended/electromagnetic/TestEm2/include/Em2PhysicsListMessenger.hh index cdc1a47ed4..07f99a9a4f 100644 --- a/examples/extended/electromagnetic/TestEm6/include/Em6EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm2/include/Em2PhysicsListMessenger.hh @@ -5,40 +5,42 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// Class Description: -// Event action messenger. -// Class Description - end +// $Id: Em2PhysicsListMessenger.hh,v 1.1 2000/04/17 11:25:52 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -#ifndef Em6EventActionMessenger_h -#define Em6EventActionMessenger_h 1 +#ifndef Em2PhysicsListMessenger_h +#define Em2PhysicsListMessenger_h 1 #include "globals.hh" #include "G4UImessenger.hh" -class Em6EventAction; -class G4UIcmdWithAString; -class G4UIcmdWithAnInteger; +class Em2PhysicsList; class G4UIcmdWithADoubleAndUnit; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -class Em6EventActionMessenger: public G4UImessenger +class Em2PhysicsListMessenger: public G4UImessenger { -public: // Without description - - Em6EventActionMessenger(Em6EventAction*); - ~Em6EventActionMessenger(); + public: + + Em2PhysicsListMessenger(Em2PhysicsList* ); + ~Em2PhysicsListMessenger(); void SetNewValue(G4UIcommand*, G4String); private: - Em6EventAction* eventAction; - G4UIcmdWithAnInteger* setVerboseCmd; - G4UIcmdWithAString* DrawCmd; + + Em2PhysicsList* pPhysicsList; + + G4UIcmdWithADoubleAndUnit* gammaCutCmd; + G4UIcmdWithADoubleAndUnit* electCutCmd; + G4UIcmdWithADoubleAndUnit* protoCutCmd; }; #endif + diff --git a/examples/extended/electromagnetic/TestEm2/include/Em2PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm2/include/Em2PrimaryGeneratorAction.hh index acea899ac8..91e4aed434 100644 --- a/examples/extended/electromagnetic/TestEm2/include/Em2PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm2/include/Em2PrimaryGeneratorAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em2PrimaryGeneratorAction.hh,v 1.2 1999/12/15 14:48:59 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm2/include/Em2RunAction.hh b/examples/extended/electromagnetic/TestEm2/include/Em2RunAction.hh index 3924576255..c30ec8c6ad 100644 --- a/examples/extended/electromagnetic/TestEm2/include/Em2RunAction.hh +++ b/examples/extended/electromagnetic/TestEm2/include/Em2RunAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em2RunAction.hh,v 1.4 2000/01/21 10:56:14 maire Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm2/include/Em2RunActionMessenger.hh b/examples/extended/electromagnetic/TestEm2/include/Em2RunActionMessenger.hh index 1735d94d4d..0e161650fc 100644 --- a/examples/extended/electromagnetic/TestEm2/include/Em2RunActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm2/include/Em2RunActionMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em2RunActionMessenger.hh,v 1.3 2000/01/21 10:56:15 maire Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm2/include/Em2SteppingAction.hh b/examples/extended/electromagnetic/TestEm2/include/Em2SteppingAction.hh index 336595c8da..271321a02f 100644 --- a/examples/extended/electromagnetic/TestEm2/include/Em2SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm2/include/Em2SteppingAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em2SteppingAction.hh,v 1.2 1999/12/15 14:49:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm2/include/Em2SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm2/include/Em2SteppingVerbose.hh index 5468a5c57d..12b106ae16 100644 --- a/examples/extended/electromagnetic/TestEm2/include/Em2SteppingVerbose.hh +++ b/examples/extended/electromagnetic/TestEm2/include/Em2SteppingVerbose.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em2SteppingVerbose.hh,v 1.2 1999/12/15 14:49:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em2SteppingVerbose.hh,v 1.3 2000/02/29 12:16:59 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -16,12 +16,6 @@ // 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 Em2SteppingVerbose; diff --git a/examples/extended/electromagnetic/TestEm2/include/Em2TrackingAction.hh b/examples/extended/electromagnetic/TestEm2/include/Em2TrackingAction.hh index 2b55797e54..b741f15d6c 100644 --- a/examples/extended/electromagnetic/TestEm2/include/Em2TrackingAction.hh +++ b/examples/extended/electromagnetic/TestEm2/include/Em2TrackingAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em2TrackingAction.hh,v 1.2 1999/12/15 14:49:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm2/include/Em2VisManager.hh b/examples/extended/electromagnetic/TestEm2/include/Em2VisManager.hh index a7d1a301ea..2b01a3c009 100644 --- a/examples/extended/electromagnetic/TestEm2/include/Em2VisManager.hh +++ b/examples/extended/electromagnetic/TestEm2/include/Em2VisManager.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em2VisManager.hh,v 1.2 1999/12/15 14:49:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm2/run01.mac b/examples/extended/electromagnetic/TestEm2/run01.mac index dbd9de3347..09bc2a19ba 100644 --- a/examples/extended/electromagnetic/TestEm2/run01.mac +++ b/examples/extended/electromagnetic/TestEm2/run01.mac @@ -1,4 +1,4 @@ -# $Id: run01.mac,v 1.2 2000/01/21 10:56:13 maire Exp $ +# $Id: run01.mac,v 1.3 2000/06/20 12:58:06 maire Exp $ # # Macro file for "TestEm2.cc" # (can be run in batch, without graphic) @@ -14,7 +14,7 @@ /event/drawTracks none /event/printModulo 10 # -/gun/particle electron +/gun/particle e- /gun/energy 5 GeV /run/beamOn 500 diff --git a/examples/extended/electromagnetic/TestEm2/run02.mac b/examples/extended/electromagnetic/TestEm2/run02.mac index c12bd5a238..2cbc101ba3 100644 --- a/examples/extended/electromagnetic/TestEm2/run02.mac +++ b/examples/extended/electromagnetic/TestEm2/run02.mac @@ -1,4 +1,4 @@ -# $Id: run02.mac,v 1.2 2000/01/21 10:56:14 maire Exp $ +# $Id: run02.mac,v 1.3 2000/06/20 12:58:06 maire Exp $ # # Macro file for "TestEm2.cc" # (can be run in batch, without graphic) @@ -22,7 +22,7 @@ /event/drawTracks none /event/printModulo 10 # -/gun/particle electron +/gun/particle e- /gun/energy 1 GeV /run/beamOn 500 diff --git a/examples/extended/electromagnetic/TestEm2/run03.mac b/examples/extended/electromagnetic/TestEm2/run03.mac index bec1473ea2..51fdf94664 100644 --- a/examples/extended/electromagnetic/TestEm2/run03.mac +++ b/examples/extended/electromagnetic/TestEm2/run03.mac @@ -1,4 +1,4 @@ -# $Id: run03.mac,v 1.2 2000/01/21 10:56:14 maire Exp $ +# $Id: run03.mac,v 1.3 2000/06/20 12:58:06 maire Exp $ # # Macro file for "TestEm2.cc" # (can be run in batch, without graphic) @@ -22,7 +22,7 @@ /event/drawTracks none /event/printModulo 10 # -/gun/particle electron +/gun/particle e- /gun/energy 1 GeV /run/beamOn 500 diff --git a/examples/extended/electromagnetic/TestEm2/run04.mac b/examples/extended/electromagnetic/TestEm2/run04.mac index 5afafd8c3d..323db3c2e8 100644 --- a/examples/extended/electromagnetic/TestEm2/run04.mac +++ b/examples/extended/electromagnetic/TestEm2/run04.mac @@ -1,4 +1,4 @@ -# $Id: run04.mac,v 1.2 2000/01/21 10:56:14 maire Exp $ +# $Id: run04.mac,v 1.3 2000/06/20 12:58:06 maire Exp $ # # Macro file for "TestEm2.cc" # (can be run in batch, without graphic) @@ -21,7 +21,7 @@ /event/drawTracks none /event/printModulo 10 # -/gun/particle electron +/gun/particle e- /gun/energy 30 GeV /run/beamOn 100 diff --git a/examples/extended/electromagnetic/TestEm2/src/Em2DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm2/src/Em2DetectorConstruction.cc index 186ee40913..f64fa884b8 100644 --- a/examples/extended/electromagnetic/TestEm2/src/Em2DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm2/src/Em2DetectorConstruction.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em2DetectorConstruction.cc,v 1.3 2000/02/14 14:09:16 maire Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em2DetectorConstruction.cc,v 1.4 2000/05/09 13:56:33 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // @@ -136,7 +136,12 @@ void Em2DetectorConstruction::DefineMaterials() PbWO->AddElement(O , natoms=4); PbWO->AddElement(Pb, natoms=1); PbWO->AddElement(W , natoms=1); - + + //Tungsten + density = 19.30*g/cm3; + G4Material* w = new G4Material(name="Tungsten", density, ncomponents=1); + w->AddElement(W, fractionmass=1.0); + //Pb density = 11.35*g/cm3; G4Material* pb = new G4Material(name="Lead", density, ncomponents=1); @@ -166,24 +171,24 @@ G4VPhysicalVolume* Em2DetectorConstruction::ConstructVolumes() "Ecal",logicEcal,0,false,0); // Ring - solidRing = new G4Tubs("Ring",0.,dR,0.5*EcalLength,0.,360*deg); - logicRing = new G4LogicalVolume(solidRing,myMaterial,"Ring",0,0,0); - if (nRtot >1) - physiRing = new G4PVReplica("Ring",logicRing,physiEcal, - kRho,nRtot,dR); - else - physiRing = new G4PVPlacement(0,G4ThreeVector(),"Ring",logicRing, - physiEcal,false,0); + // + for (G4int i=0; i1) - physiSlice = new G4PVReplica("Slice",logicSlice,physiRing, - kZAxis,nLtot,dL); - else - physiSlice = new G4PVPlacement(0,G4ThreeVector(),"Slice",logicSlice, - physiRing,false,0); + // 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); + if (nLtot >1) + physiSlice = new G4PVReplica("Slice",logicSlice,physiRing, + kZAxis,nLtot,dL); + else + physiSlice = new G4PVPlacement(0,G4ThreeVector(),"Slice",logicSlice, + physiRing,false,0); + } G4cout << "Absorber is " << G4BestUnit(EcalLength,"Length") diff --git a/examples/extended/electromagnetic/TestEm2/src/Em2DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm2/src/Em2DetectorMessenger.cc index 00426e0b94..26e8d64225 100644 --- a/examples/extended/electromagnetic/TestEm2/src/Em2DetectorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm2/src/Em2DetectorMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em2DetectorMessenger.cc,v 1.2 1999/12/15 14:49:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm2/src/Em2EventAction.cc b/examples/extended/electromagnetic/TestEm2/src/Em2EventAction.cc index 4f9dbba777..e0ed2e4f77 100644 --- a/examples/extended/electromagnetic/TestEm2/src/Em2EventAction.cc +++ b/examples/extended/electromagnetic/TestEm2/src/Em2EventAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em2EventAction.cc,v 1.2 1999/12/15 14:49:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm2/src/Em2EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm2/src/Em2EventActionMessenger.cc index da33bcf16c..868ec3e8b4 100644 --- a/examples/extended/electromagnetic/TestEm2/src/Em2EventActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm2/src/Em2EventActionMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em2EventActionMessenger.cc,v 1.2 1999/12/15 14:49:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm2/src/Em2PhysicsList.cc b/examples/extended/electromagnetic/TestEm2/src/Em2PhysicsList.cc index d6502d2c5d..3c0906bad8 100644 --- a/examples/extended/electromagnetic/TestEm2/src/Em2PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm2/src/Em2PhysicsList.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em2PhysicsList.cc,v 1.2 1999/12/15 14:49:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em2PhysicsList.cc,v 1.4 2000/04/17 11:26:49 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // @@ -14,6 +14,7 @@ //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... #include "Em2PhysicsList.hh" +#include "Em2PhysicsListMessenger.hh" #include "G4ParticleDefinition.hh" #include "G4ParticleWithCuts.hh" @@ -28,14 +29,20 @@ Em2PhysicsList::Em2PhysicsList() : G4VUserPhysicsList() { - defaultCutValue = 1.*mm; + currentDefaultCut = defaultCutValue = 1.0*mm; + cutForGamma = defaultCutValue; + cutForElectron = defaultCutValue; + cutForProton = defaultCutValue; + + pMessenger = new Em2PhysicsListMessenger(this); + SetVerboseLevel(1); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... Em2PhysicsList::~Em2PhysicsList() -{} +{delete pMessenger;} //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -91,7 +98,6 @@ void Em2PhysicsList::ConstructMesons() G4PionZero::PionZeroDefinition(); G4Eta::EtaDefinition(); G4EtaPrime::EtaPrimeDefinition(); - G4RhoZero::RhoZeroDefinition(); G4KaonPlus::KaonPlusDefinition(); G4KaonMinus::KaonMinusDefinition(); G4KaonZero::KaonZeroDefinition(); @@ -210,22 +216,31 @@ void Em2PhysicsList::ConstructGeneral() void Em2PhysicsList::SetCuts() { + // reactualise cutValues + if (currentDefaultCut != defaultCutValue) + { + if(cutForGamma == currentDefaultCut) cutForGamma = defaultCutValue; + if(cutForElectron == currentDefaultCut) cutForElectron = defaultCutValue; + if(cutForProton == currentDefaultCut) cutForProton = defaultCutValue; + currentDefaultCut = defaultCutValue; + } + if (verboseLevel >0){ G4cout << "Em2PhysicsList::SetCuts:"; - G4cout << "CutLength : " << defaultCutValue/mm << " (mm)" << G4endl; + G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << G4endl; } // set cut values for gamma at first and for e- second and next for e+, - // because some processes for e+/e- need cut values for gamma - SetCutValue(defaultCutValue, "gamma"); - SetCutValue(defaultCutValue, "e-"); - SetCutValue(defaultCutValue, "e+"); + // because some processes for e+/e- need cut values for gamma + SetCutValue(cutForGamma, "gamma"); + SetCutValue(cutForElectron, "e-"); + SetCutValue(cutForElectron, "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 - SetCutValue(defaultCutValue, "proton"); - SetCutValue(defaultCutValue, "anti_proton"); - + // because some processes for hadrons need cut values for proton/anti_proton + SetCutValue(cutForProton, "proton"); + SetCutValue(cutForProton, "anti_proton"); + SetCutValueForOthers(defaultCutValue); if (verboseLevel>0) DumpCutValuesTable(); @@ -233,3 +248,23 @@ void Em2PhysicsList::SetCuts() //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +void Em2PhysicsList::SetCutForGamma(G4double cut) +{ + ResetCuts(); + cutForGamma = cut; +} + +void Em2PhysicsList::SetCutForElectron(G4double cut) +{ + ResetCuts(); + cutForElectron = cut; +} + +void Em2PhysicsList::SetCutForProton(G4double cut) +{ + ResetCuts(); + cutForProton = cut; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + diff --git a/examples/extended/electromagnetic/TestEm2/src/Em2PhysicsListMessenger.cc b/examples/extended/electromagnetic/TestEm2/src/Em2PhysicsListMessenger.cc new file mode 100644 index 0000000000..79f5d42a2b --- /dev/null +++ b/examples/extended/electromagnetic/TestEm2/src/Em2PhysicsListMessenger.cc @@ -0,0 +1,71 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: Em2PhysicsListMessenger.cc,v 1.1 2000/04/17 11:26:49 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "Em2PhysicsListMessenger.hh" + +#include "Em2PhysicsList.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +Em2PhysicsListMessenger::Em2PhysicsListMessenger(Em2PhysicsList* pPhys) +:pPhysicsList(pPhys) +{ + gammaCutCmd = new G4UIcmdWithADoubleAndUnit("/run/particle/setGCut",this); + gammaCutCmd->SetGuidance("Set gamma cut."); + gammaCutCmd->SetParameterName("Gcut",false); + gammaCutCmd->SetUnitCategory("Length"); + gammaCutCmd->SetRange("Gcut>0.0"); + gammaCutCmd->AvailableForStates(PreInit,Idle); + + electCutCmd = new G4UIcmdWithADoubleAndUnit("/run/particle/setECut",this); + electCutCmd->SetGuidance("Set electron cut."); + electCutCmd->SetParameterName("Ecut",false); + electCutCmd->SetUnitCategory("Length"); + electCutCmd->SetRange("Ecut>0.0"); + electCutCmd->AvailableForStates(PreInit,Idle); + + protoCutCmd = new G4UIcmdWithADoubleAndUnit("/run/particle/setPCut",this); + protoCutCmd->SetGuidance("Set proton cut."); + protoCutCmd->SetParameterName("Pcut",false); + protoCutCmd->SetUnitCategory("Length"); + protoCutCmd->SetRange("Pcut>0.0"); + protoCutCmd->AvailableForStates(PreInit,Idle); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +Em2PhysicsListMessenger::~Em2PhysicsListMessenger() +{ + delete gammaCutCmd; + delete electCutCmd; + delete protoCutCmd; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void Em2PhysicsListMessenger::SetNewValue(G4UIcommand* command,G4String newValue) +{ + if( command == gammaCutCmd ) + { pPhysicsList->SetCutForGamma(gammaCutCmd->GetNewDoubleValue(newValue));} + + if( command == electCutCmd ) + { pPhysicsList->SetCutForElectron(electCutCmd->GetNewDoubleValue(newValue));} + + if( command == protoCutCmd ) + { pPhysicsList->SetCutForProton(protoCutCmd->GetNewDoubleValue(newValue));} +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/electromagnetic/TestEm2/src/Em2PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm2/src/Em2PrimaryGeneratorAction.cc index 0287ac0f76..33f5cd7d6d 100644 --- a/examples/extended/electromagnetic/TestEm2/src/Em2PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm2/src/Em2PrimaryGeneratorAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em2PrimaryGeneratorAction.cc,v 1.2 1999/12/15 14:49:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm2/src/Em2RunAction.cc b/examples/extended/electromagnetic/TestEm2/src/Em2RunAction.cc index 2a6468efda..74907da497 100644 --- a/examples/extended/electromagnetic/TestEm2/src/Em2RunAction.cc +++ b/examples/extended/electromagnetic/TestEm2/src/Em2RunAction.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em2RunAction.cc,v 1.4 2000/01/21 10:56:15 maire Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em2RunAction.cc,v 1.5 2000/05/18 15:30:28 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -287,8 +287,8 @@ void Em2RunAction::EndOfRunAction(const G4Run* aRun) histo6->accumulate(bin, rmsELongitCumul(i)); histo7->accumulate(bin, gammaFlux(i)); - histo8->accumulate(bin, electronFlux(i)); - histo9->accumulate(bin, positronFlux(i)); + histo8->accumulate(bin, positronFlux(i)); + histo9->accumulate(bin, electronFlux(i)); #endif } diff --git a/examples/extended/electromagnetic/TestEm2/src/Em2RunActionMessenger.cc b/examples/extended/electromagnetic/TestEm2/src/Em2RunActionMessenger.cc index d7c7c7bc3d..9486795468 100644 --- a/examples/extended/electromagnetic/TestEm2/src/Em2RunActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm2/src/Em2RunActionMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em2RunActionMessenger.cc,v 1.3 2000/01/21 10:56:16 maire Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm2/src/Em2SteppingAction.cc b/examples/extended/electromagnetic/TestEm2/src/Em2SteppingAction.cc index 7cff3e68b8..ee6c4a27c6 100644 --- a/examples/extended/electromagnetic/TestEm2/src/Em2SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm2/src/Em2SteppingAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em2SteppingAction.cc,v 1.2 1999/12/15 14:49:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm2/src/Em2SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm2/src/Em2SteppingVerbose.cc index dfbf54c725..75aeae0cdc 100644 --- a/examples/extended/electromagnetic/TestEm2/src/Em2SteppingVerbose.cc +++ b/examples/extended/electromagnetic/TestEm2/src/Em2SteppingVerbose.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em2SteppingVerbose.cc,v 1.2 1999/12/15 14:49:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em2SteppingVerbose.cc,v 1.3 2000/02/29 12:17:15 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -15,10 +15,6 @@ // // Description: // Implementation of the Em2SteppingVerbose 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) // //--------------------------------------------------------------- diff --git a/examples/extended/electromagnetic/TestEm2/src/Em2TrackingAction.cc b/examples/extended/electromagnetic/TestEm2/src/Em2TrackingAction.cc index b000724ac0..67f8afa9aa 100644 --- a/examples/extended/electromagnetic/TestEm2/src/Em2TrackingAction.cc +++ b/examples/extended/electromagnetic/TestEm2/src/Em2TrackingAction.cc @@ -7,7 +7,7 @@ // and all its terms. // // $Id: Em2TrackingAction.cc,v 1.2 1999/12/15 14:49:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm2/src/Em2VisManager.cc b/examples/extended/electromagnetic/TestEm2/src/Em2VisManager.cc index 4b52d342b0..81d831363d 100644 --- a/examples/extended/electromagnetic/TestEm2/src/Em2VisManager.cc +++ b/examples/extended/electromagnetic/TestEm2/src/Em2VisManager.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em2VisManager.cc,v 1.2 1999/12/15 14:49:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 24th January 1998. diff --git a/examples/extended/electromagnetic/TestEm3/GNUmakefile b/examples/extended/electromagnetic/TestEm3/GNUmakefile index 421a303fe5..a2c877e432 100644 --- a/examples/extended/electromagnetic/TestEm3/GNUmakefile +++ b/examples/extended/electromagnetic/TestEm3/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.2 2000/01/21 09:11:04 maire Exp $ +# $Id: GNUmakefile,v 1.3 2000/05/17 10:56:08 maire Exp $ # -------------------------------------------------------------- # GNUmakefile for examples module. Gabriele Cosmo, 06/04/98. # -------------------------------------------------------------- @@ -19,7 +19,7 @@ include $(G4INSTALL)/config/architecture.gmk ifdef G4NOHIST CPPFLAGS += -DG4NOHIST else - LDFLAGS += -L/cern/pro/lib + LDFLAGS += -L$(CERN)/pro/lib LOADLIBS += -lpacklib $(FCLIBS) endif diff --git a/examples/extended/electromagnetic/TestEm6/History b/examples/extended/electromagnetic/TestEm3/History similarity index 69% rename from examples/extended/electromagnetic/TestEm6/History rename to examples/extended/electromagnetic/TestEm3/History index a47681709b..32378eab14 100644 --- a/examples/extended/electromagnetic/TestEm6/History +++ b/examples/extended/electromagnetic/TestEm3/History @@ -1,9 +1,11 @@ +$Id: History,v 1.1 2000/06/17 12:49:00 stesting Exp $ +------------------------------------------------------------------- ========================================================= Geant4 - an Object-Oriented Toolkit for Simulation in HEP ========================================================= - TestEm6 History file + TestEm2 History file -------------------- This file should be used by the G4 example coordinator to briefly summarize all major modifications introduced in the code and keep @@ -12,6 +14,6 @@ track of all tags. ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- - -21.01.2000 - created. Vladimir Ivanchenko +June 17, 2000 John Allison (testem3-V01-00-00) +- Updated TestEm3.out for geant4-01-01-ref-06. diff --git a/examples/extended/electromagnetic/TestEm3/TestEm3.cc b/examples/extended/electromagnetic/TestEm3/TestEm3.cc index fc5e7c2102..fd4196117c 100644 --- a/examples/extended/electromagnetic/TestEm3/TestEm3.cc +++ b/examples/extended/electromagnetic/TestEm3/TestEm3.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: TestEm3.cc,v 1.3 1999/12/15 14:49:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // Comments // diff --git a/examples/extended/electromagnetic/TestEm3/TestEm3.out b/examples/extended/electromagnetic/TestEm3/TestEm3.out index a3597c7067..db5ba708cc 100644 --- a/examples/extended/electromagnetic/TestEm3/TestEm3.out +++ b/examples/extended/electromagnetic/TestEm3/TestEm3.out @@ -1,11 +1,8 @@ ********************************************** - Geant4 version $Name: geant4-01-01 $ - (07-Dec-99) + Geant4 version $Name: geant4-02-00 $ + (10-Mar-2000) Copyright : Geant4 Collaboration ********************************************** -Constructing Visualization Manager.... -Initialising Visualization Manager.... -Registering graphics systems.... ***** Table : Nb of materials = 18 ***** @@ -69,7 +66,7 @@ Registering graphics systems.... ---> 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: Galactic density: 0.000 mg/cm3 temperature: 2.73 K pressure: 0.00 atm RadLength: 6317232936888469300000.000 km + Material: Galactic density: 0.000 mg/cm3 temperature: 2.73 K pressure: 0.00 atm RadLength: 6317232936888469291008.000 km ---> 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 @@ -106,10 +103,33 @@ eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to delta ray energy sampled from differential Xsection. PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. -eBrem: Total cross sections from a parametrisation. Good description from 1 KeV to 100 GeV. + eIoni Minimum Delta cut in range=0.05 mm. + + material min.delta energy(keV) + + Aluminium 82.754 + liquidArgon 52.224 + Iron 142.67 + Copper 153.07 + Tungsten 210.59 + Lead 146.21 + Uranium 198.55 + Water 54.632 + Scintillator 55.566 + Silicium 76.817 + quartz 76.449 + NemaG10 68.972 + Air 0.99 + Aerogel 20.287 + CarbonicGas 6.2987 + WaterSteam 0.99 + Galactic 0.99 + Beam 0.99 + +eBrem: Total cross sections from a parametrisation. Good description from 10 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). gamma energies sampled according Heitler @@ -118,30 +138,53 @@ annihil: Total cross section from Heilter formula (annihilation into 2 photons) 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 Minimum Delta cut in range=0.05 mm. + + material min.delta energy(keV) + + Aluminium 82.754 + liquidArgon 52.224 + Iron 142.67 + Copper 153.07 + Tungsten 210.59 + Lead 146.21 + Uranium 198.55 + Water 54.632 + Scintillator 55.566 + Silicium 76.817 + quartz 76.449 + NemaG10 68.972 + Air 0.99 + Aerogel 20.287 + CarbonicGas 6.2987 + WaterSteam 0.99 + Galactic 0.99 + Beam 0.99 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 150 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 100 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. MuBrems: theoretical cross section - Good description up to 1000 TeV. - PhysicsTables from 1 GeV to 1e+03 PeV in 100 bins. + 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 TeV. - PhysicsTables from 1 GeV to 1e+03 PeV in 50 bins. + Good description up to 1000 PeV. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. ============= The cut Energy ============================== gamma e- mu- proton neutron Cut in range 500 mum 500 mum 500 mum 500 mum 500 mum @@ -165,7 +208,7 @@ Cut in energy Galactic 990 eV 990 eV 990 eV 990 eV 990 eV Beam 990 eV 990 eV 990 eV 990 eV 990 eV =================================================== -# $Id: TestEm3.out,v 1.1 2000/01/21 14:28:45 maire Exp $ +# $Id: TestEm3.out,v 1.4 2000/06/17 12:49:00 stesting Exp $ # # Macro file for "exampleN03.cc" # (can be run in batch, without graphic) @@ -198,22 +241,20 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 100 - User=39s Real=46s Sys=6.9s + User=245.22s Real=266.8s Sys=18.67s ------------------------------------------------------------- total energy dep total tracklen - Absorber0 ( Lead) : 808.32 MeV +- 15.02 MeV 52.43 cm +- 1.21 cm - Absorber1 ( liquidArgon) : 179.35 MeV +- 12.84 MeV 89.37 cm +- 6.43 cm + Absorber0 ( Lead) : 809.43 MeV +- 15.49 MeV 52.53 cm +- 1.18 cm + Absorber1 ( liquidArgon) : 180.05 MeV +- 13.02 MeV 90.31 cm +- 6.77 cm ------------------------------------------------------------- --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 197041347, 1893777350 + Current couple of seeds = 915103625, 1965593171 ---------------------------------------- -Graphics systems deleted. -VisManager deleting. G4 kernel has come to Quit state. Deletion of G4 kernel class start. UserDetectorConstruction deleted. diff --git a/examples/extended/electromagnetic/TestEm3/geant3/README b/examples/extended/electromagnetic/TestEm3/geant3/README index ec85df6618..05281f8229 100644 --- a/examples/extended/electromagnetic/TestEm3/geant3/README +++ b/examples/extended/electromagnetic/TestEm3/geant3/README @@ -1,5 +1,5 @@ - testem3.cra is the geant3 equivalent of TestEm3 + testem3/src is the geant3 equivalent of TestEm3 % cd geant3 % gmakeB to make an executable (Batch version) @@ -16,7 +16,7 @@ run01.dat (runNN.dat is the equivalent of the G4 runNN.mac) - testem3 produce an Ntuple which is saved as testem3.ntupl if ISWIT(2)=1 + testem3 produce an Ntuple which is saved as testem3.paw if ISWIT(2)=1 Content of this Ntuple: diff --git a/examples/extended/electromagnetic/TestEm3/geant3/gmakeB b/examples/extended/electromagnetic/TestEm3/geant3/gmakeB index 69c540dd82..8552e9e651 100755 --- a/examples/extended/electromagnetic/TestEm3/geant3/gmakeB +++ b/examples/extended/electromagnetic/TestEm3/geant3/gmakeB @@ -4,26 +4,15 @@ set name=testem3 set extnam=" " -if ($G4SYSTEM == AIX-xlC) set extnam=-qextname +if ($G4SYSTEM == AIX-AFS) set extnam=-qextname # mkdir $G4SYSTEM cd $G4SYSTEM # -# Run patchy -# -cat > temp.cra << eocra -+USE,batch. -eocra -cat ../$name.cra >> temp.cra -# -ypatchy - $name temp $name - $name :go -rm temp.cra -# # fortran compilation # -fsplit $name.f -rm $name.f -hepf77 $extnam -c -g *.f +hepf77 $extnam -c -g -Dbatch -I/cern/pro/include -I../include ../src/*.F + # # Link # @@ -37,7 +26,7 @@ chmod +x $name.xb # # cleanup # -rm *.lis *.lst *.f *.o +rm *.o echo 'done' exit diff --git a/examples/extended/electromagnetic/TestEm3/geant3/gmakeT b/examples/extended/electromagnetic/TestEm3/geant3/gmakeT index a419a02419..a4c0f1fa60 100755 --- a/examples/extended/electromagnetic/TestEm3/geant3/gmakeT +++ b/examples/extended/electromagnetic/TestEm3/geant3/gmakeT @@ -4,20 +4,14 @@ set name=testem3 set extnam=" " -if ($G4SYSTEM == AIX-xlC) set extnam=-qextname +if ($G4SYSTEM == AIX-AFS) set extnam=-qextname # mkdir $G4SYSTEM cd $G4SYSTEM # -# Run patchy -# -ypatchy - $name ../$name $name - $name :go -# # fortran compilation # -fsplit $name.f -rm $name.f -hepf77 $extnam -c -g *.f +hepf77 $extnam -c -g -I/cern/pro/include -I../include ../src/*.F # # Link # @@ -31,7 +25,7 @@ chmod +x $name.xt # # cleanup # -rm *.lis *.lst *.f *.o +rm *.o echo 'done' exit diff --git a/examples/extended/electromagnetic/TestEm3/geant3/include/calor.inc b/examples/extended/electromagnetic/TestEm3/geant3/include/calor.inc new file mode 100644 index 0000000000..c7a277316b --- /dev/null +++ b/examples/extended/electromagnetic/TestEm3/geant3/include/calor.inc @@ -0,0 +1,18 @@ + + PARAMETER (MaxAbs = 10) + COMMON/CALOR/materAbs(MaxAbs),thickAbs(MaxAbs),NbAbsor,NbLayer, + & calorYZ,Field,thLayer,calorX,worldX,worldYZ + +* +* NbAbsor = Number of Absorbers (data card CALOR) +* NbLayer = Number of Layers (data card CALOR) +* calorYZ = tranverse size of calor (cm) (data card CALOR) +* Field = magnetic field (tesla) (data card CALOR) +* materAbs(i) = Absorber material number. (data card MATE ) +* thickAbs(i) = thickness of absorber (cm) (data card THICK) +* +* thLayer = total thickness of a layer (cm) +* calorX = total X-size of the calor (cm) +* worldX = total X-size of the world (cm) +* worldYZ = total YZ-size of the world (cm) +* diff --git a/examples/extended/electromagnetic/TestEm3/geant3/include/celoss.inc b/examples/extended/electromagnetic/TestEm3/geant3/include/celoss.inc new file mode 100644 index 0000000000..43d3dbcb68 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm3/geant3/include/celoss.inc @@ -0,0 +1,4 @@ + + COMMON/CELOSS/ EdepAbs(MaxAbs),TrckAbs(MaxAbs), + & sumEdep(MaxAbs),sumTrck(MaxAbs), + & su2Edep(MaxAbs),su2Trck(MaxAbs) diff --git a/examples/extended/electromagnetic/TestEm3/geant3/src/gukine.F b/examples/extended/electromagnetic/TestEm3/geant3/src/gukine.F new file mode 100644 index 0000000000..40f78c61b3 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm3/geant3/src/gukine.F @@ -0,0 +1,45 @@ + + SUBROUTINE GUKINE +* +* Generates Kinematics for primary track +* +* Data card Kine : Itype Ekine x0 y0 z0 ux uy uz +* +#include "geant321/gcbank.inc" +#include "geant321/gcflag.inc" +#include "geant321/gckine.inc" +#include "calor.inc" +* + DIMENSION VERTEX(3),PLAB(3) +* +* *** set/reset default kinematic + IF ((IKINE.LT.0).or.(abs(PKINE(2)).GT.0.5*worldX)) THEN + IKINE = ABS(IKINE) + PKINE(2) = -0.5*worldX + PKINE(3) = 0. + PKINE(4) = 0. + PKINE(5) = 1. + PKINE(6) = 0. + PKINE(7) = 0. + ENDIF +* + VERTEX(1) = PKINE(2) + VERTEX(2) = PKINE(3) + VERTEX(3) = PKINE(4) +* + CALL GSVERT(VERTEX,0,0,0,0,NVERT) +* +* + JPA = LQ(JPART-IKINE) + XMASS = Q(JPA+7) + PMOM = SQRT(PKINE(1)*(PKINE(1)+2*XMASS)) + PLAB(1) = PMOM*PKINE(5) + PLAB(2) = PMOM*PKINE(6) + PLAB(3) = PMOM*PKINE(7) +* + CALL GSKINE(PLAB,IKINE,NVERT,0,0,NT) +* +* *** Kinematics debug + IF (IEVENT.EQ.1.OR.IDEBUG.NE.0) CALL GPRINT('KINE',0) +* + END diff --git a/examples/extended/electromagnetic/TestEm3/geant3/src/guout.F b/examples/extended/electromagnetic/TestEm3/geant3/src/guout.F new file mode 100644 index 0000000000..1d7521e5d5 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm3/geant3/src/guout.F @@ -0,0 +1,52 @@ + + SUBROUTINE GUOUT +* +* User routine called at the end of each event +* +#include "geant321/gcflag.inc" +#include "calor.inc" +#include "celoss.inc" +* + DIMENSION sumevent(2*MaxAbS) + CHARACTER*4 unit +* +* *** drawing +* +#ifndef batch + IF (ISWIT(1).NE.0) THEN + CALL GDHEAD (110110,'TestEm3',0.) + CALL GDSHOW (3) + CALL GDXYZ (0) + END IF +#endif +* +* ntuple: energies and track length per event + do k=1,NbAbsor + sumevent(2*k-1) = EdepAbs(k) + sumevent(2*k ) = TrckAbs(k) + enddo + CALL HFN(1,sumevent) +* +* cumul energy deposited and charged track length + do k=1,NbAbsor + sumEdep(k) = sumEdep(k) + EdepAbs(k) + sumTrck(k) = sumTrck(k) + TrckAbs(k) +* + su2Edep(k) = su2Edep(k) + EdepAbs(k)**2 + su2Trck(k) = su2Trck(k) + TrckAbs(k)**2 + enddo +* +* *** print + IF (ISWIT(1).NE.0) THEN + do k=1,NbAbsor + CALL GEVKEV (EdepAbs(k),Eunit,unit) + PRINT 751,k,Eunit,unit,TrckAbs(k) + enddo + print 749 + ENDIF + + 749 FORMAT(/) + 751 FORMAT(1X,'Absorber',I2,' : Energy deposit: ',F8.3,A4, + & ' Track length: ' ,F8.3,' cm') +* + END diff --git a/examples/extended/electromagnetic/TestEm3/geant3/src/gustep.F b/examples/extended/electromagnetic/TestEm3/geant3/src/gustep.F new file mode 100644 index 0000000000..9834a01c1d --- /dev/null +++ b/examples/extended/electromagnetic/TestEm3/geant3/src/gustep.F @@ -0,0 +1,29 @@ + + SUBROUTINE GUSTEP +* +* User routine called at the end of each tracking step +* +#include "geant321/gcflag.inc" +#include "geant321/gckine.inc" +#include "geant321/gcking.inc" +#include "geant321/gctrak.inc" +#include "geant321/gctmed.inc" +#include "calor.inc" +#include "celoss.inc" +* +* +* *** Debug event and store tracks for drawing + IF (IDEBUG.NE.0) CALL GPCXYZ + IF ((ISWIT(1).EQ.1).AND.(CHARGE.NE.0.)) CALL GSXYZ + IF (ISWIT(1).EQ.2) CALL GSXYZ +* +* *** Something generated ? + IF(NGKINE.GT.0) CALL GSKING(0) +* +* *** Energy deposited and charged track length + IF (NUMED.LE.NbAbsor) THEN + if (DESTEP.NE.0.) EdepAbs(NUMED) = EdepAbs(NUMED) + DESTEP + if (CHARGE*STEP.NE.0.) TrckAbs(NUMED) = TrckAbs(NUMED) + STEP + ENDIF +* + END diff --git a/examples/extended/electromagnetic/TestEm3/geant3/src/gutrev.F b/examples/extended/electromagnetic/TestEm3/geant3/src/gutrev.F new file mode 100644 index 0000000000..fe1af57197 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm3/geant3/src/gutrev.F @@ -0,0 +1,17 @@ + + SUBROUTINE GUTREV +* +* User routine to control tracking of one event +* Called by GRUN +* +#include "calor.inc" +#include "celoss.inc" +* + do k=1,NbAbsor + EdepAbs(k) = 0. + TrckAbs(k) = 0. + enddo +* + CALL GTREVE +* + END diff --git a/examples/extended/electromagnetic/TestEm3/geant3/src/main.F b/examples/extended/electromagnetic/TestEm3/geant3/src/main.F new file mode 100644 index 0000000000..b31a7415a2 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm3/geant3/src/main.F @@ -0,0 +1,62 @@ + +#ifdef batch + + PROGRAM main +* +* + PARAMETER (NGBANK=100000, NHBOOK=40000) + COMMON/GCBANK/Q(NGBANK) + COMMON/PAWC /H(NHBOOK) +* + CALL GZEBRA( NGBANK) + CALL HLIMIT(-NHBOOK) +* +* *** initialize HIGZ + CALL HPLINT(0) +* +* *** GEANT initialisation + CALL UGINIT +* +* *** Start events processing + CALL GRUN +* +* *** End of RUN + CALL UGLAST +* + STOP + END + +#else + + PROGRAM main +* +* GEANT main program. To link with the MOTIF user interface +* the routine GPAWPP(NWGEAN,NWPAW) should be called, whereas +* the routine GPAW(NWGEAN,NWPAW) gives access to the basic +* graphics version. +* + PARAMETER (NWGEAN=3000000, NWPAW=1000000) + COMMON/GCBANK/GEANT(NWGEAN) + COMMON/PAWC /PAW (NWPAW) +* +* + CALL GPAW (NWGEAN,NWPAW) +* + END +* + SUBROUTINE qnext + END +* + SUBROUTINE czopen + END +* + SUBROUTINE cztcp + END +* + SUBROUTINE czclos + END +* + SUBROUTINE czputa + END + +#endif diff --git a/examples/extended/electromagnetic/TestEm3/geant3/src/ugeom.F b/examples/extended/electromagnetic/TestEm3/geant3/src/ugeom.F new file mode 100644 index 0000000000..a86f3fafbf --- /dev/null +++ b/examples/extended/electromagnetic/TestEm3/geant3/src/ugeom.F @@ -0,0 +1,145 @@ + + SUBROUTINE UGEOM +* +* *** Define user geometry set up +* +#include "calor.inc" +* + DIMENSION PAR(3) + + DIMENSION Aair(2),Zair(2),Wair(2) + DIMENSION ACO2(2),ZCO2(2),WCO2(2) + DIMENSION AH2O(2),ZH2O(2),WH2O(2) + DIMENSION AG10(4),ZG10(4),WG10(4) +* + CHARACTER*4 volnam + CHARACTER*20 matnam +* +* *** Air compound parameters + DATA Aair/14.01, 16.00/ + DATA Zair/ 7. , 8. / + DATA Wair/ 0.7 , 0.3 / +* +* *** CO2 compound parameters + DATA ACO2/12.01, 16.00/ + DATA ZCO2/ 6. , 8. / + DATA WCO2/ 1. , 2. / +* +* *** Water compound parameters + DATA AH2O/ 1.01, 16.00/ + DATA ZH2O/ 1. , 8. / + DATA WH2O/ 2. , 1. / +* +* *** G10 compound parameters + DATA AG10/ 1.01, 12.00, 16.00, 28.00/ + DATA ZG10/ 1. , 6. , 8. , 14. / + DATA WG10/ 3. , 3. , 2. , 1. / + +* +* *** 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 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) + CALL GSMATE( 7,'Iron ', 55.85, 26., 7.87 , 1.76, 17.1, 0,0) + CALL GSMATE( 8,'Lead ',207.19, 82., 11.35 , 0.56, 18.5, 0,0) + CALL GSMATE( 9,'Uranium ',238.03, 92., 18.95 , 0.32, 12. , 0,0) + CALL GSMATE(10,'Silicium ', 28.09, 14., 2.33 , 9.36, 45.5, 0,0) + CALL GSMATE(11,'Tungsten ',183.85, 74., 19.30 , 0.35, 9.6, 0,0) + CALL GSMIXT(12,'NemaG10' , AG10 ,ZG10, 1.7 ,-4 , WG10) + CALL GSMATE(13,'Copper ', 63.55, 29., 8.96 , 1.43, 15.0, 0,0) +* +* +* *** Defines USER tracking media parameters + IFIELD = 0 + IF (Field.GT.0.) IFIELD = 3 + FIELDM = 10*Field + TMAXFD = 10.0 + STEMAX = 1000. + DEEMAX = 0.20 + EPSIL = 0.001 + STMIN = 0.010 +* + do k=1,NbAbsor + CALL GSTMED( k,'absorber',materAbs(k), 0 ,IFIELD,FIELDM,TMAXFD, + * STEMAX,DEEMAX,EPSIL,STMIN, 0 , 0 ) + enddo +* + nudef = NbAbsor+1 + CALL GSTMED( nudef,'default' , 1 , 0 ,IFIELD,FIELDM,TMAXFD, + * STEMAX,DEEMAX,EPSIL,STMIN, 0 , 0 ) +* +* +* *** calor dimensions + thLayer = 0. + do k=1,NbAbsor + thLayer = thLayer + thickAbs(k) + enddo + calorX = NbLayer*thLayer + worldX = 1.2*calorX + worldYZ = 1.2*calorYZ +* +* *** world + PAR(1) = worldX /2. + PAR(2) = worldYZ/2. + PAR(3) = worldYZ/2. + CALL GSVOLU('worl','BOX ',nudef,PAR,3,IVOL) +* +* *** calorimeter + PAR(1) = calorX /2. + PAR(2) = calorYZ/2. + PAR(3) = calorYZ/2. + CALL GSVOLU('calo','BOX ',nudef,PAR,3,IVOL) + CALL GSPOS ('calo',1,'worl',0.,0.,0.,0,'ONLY') +* +* *** layers + CALL GSDVN ('layr','calo',NbLayer,1) +* +* *** absorbers + volnam = 'abs' + xfront = -0.5*thLayer + do k=1,NbAbsor + PAR(1) = thickAbs(k)/2. + PAR(2) = calorYZ/2. + PAR(3) = calorYZ/2. + volnam(4:4) = char(ichar('0')+k-1) + CALL GSVOLU(volnam,'BOX ',k,PAR,3,IVOL) + xcenter = xfront + 0.5*thickAbs(k) + CALL GSPOS (volnam,1,'layr',xcenter,0.,0.,0,'ONLY') + xfront = xfront + thickAbs(k) + enddo +* +* *** Close geometry banks. (mandatory system routine) + CALL GGCLOS +* +* *** print geometry + PRINT 749 + PRINT 751,NbLayer + do k=1,NbAbsor + call GFMATE (materAbs(k),matnam,dua,duz,dud,dur,dui,udu,idu) + PRINT 752,matnam,thickAbs(k) + enddo + PRINT 749 +* + 749 FORMAT(/ ,60(1H-),/) + 751 FORMAT(1X,'The calorimeter is ',I2,' layers of:') + 752 FORMAT(5X,A10,': ',F8.4,' cm') +* +* *** dessin + CALL GSATT ('*' ,'SEEN',1) + CALL GSATT ('layr','SEEN',0) +* + DO IX = 1,3 + CALL GDOPEN (IX) + SCALE = 18./max(worldX,worldYZ) + PAXIS = 0. + SAXIS = 1. + CALL GDRAWC ('worl',IX,0.,10.,9.3,SCALE,SCALE) +CCC CALL GDAXIS (PAXIS,PAXIS,PAXIS,SAXIS) + CALL GDSCAL (10. , 0.3) + CALL GDCLOS + END DO +* + END diff --git a/examples/extended/electromagnetic/TestEm3/geant3/src/uginit.F b/examples/extended/electromagnetic/TestEm3/geant3/src/uginit.F new file mode 100644 index 0000000000..29e9bf22e9 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm3/geant3/src/uginit.F @@ -0,0 +1,55 @@ + + SUBROUTINE UGINIT +* +* To initialise GEANT/USER program and read data cards +* +#include "calor.inc" +#include "celoss.inc" +#include "geant321/gckine.inc" +* + CHARACTER*20 filnam +* +* *** Define the GEANT parameters + CALL GINIT + +* *** read data cards + PRINT *, 'G3 > gives the filename of the data cards to be read:' + READ (*,'(A)') filnam + IF (filnam.EQ.' ') filnam = 'run01.dat' + OPEN (unit=5,file=filnam,status='unknown',form='formatted') + +* +* *** Calor definition + CALL FFKEY('CALOR',NbAbsor,4,'MIXED') + CALL FFKEY('MATE' ,materAbs(1),MaxAbs,'INTEGER') + CALL FFKEY('THICK',thickAbs(1),MaxAbs,'REAL') +* +* *** read data cards + CALL GFFGO +* + CALL GZINIT + CALL GPART +* + CALL GDINIT +* +* *** Geometry and materials description + CALL UGEOM +* +* *** Energy loss and cross-sections initialisations + CALL GPHYSI +* + CALL GPRINT('MATE',0) + CALL GPRINT('TMED',0) + CALL GPRINT('VOLU',0) +* + CALL UHINIT +* +* *** some initialisation + do k=1,MaxAbs + sumEdep(k) = 0. + sumTrck(k) = 0. + su2Edep(k) = 0. + su2Trck(k) = 0. + enddo +* + END diff --git a/examples/extended/electromagnetic/TestEm3/geant3/src/uglast.F b/examples/extended/electromagnetic/TestEm3/geant3/src/uglast.F new file mode 100644 index 0000000000..28481de19c --- /dev/null +++ b/examples/extended/electromagnetic/TestEm3/geant3/src/uglast.F @@ -0,0 +1,50 @@ + + SUBROUTINE UGLAST +* +* Termination routine to print histograms and statistics +* +#include "geant321/gcflag.inc" +#include "geant321/gctrak.inc" +#include "calor.inc" +#include "celoss.inc" +* + CHARACTER*20 matnam + CHARACTER*4 unitm,unitr +* +* *** mean energy deposit and track length + PRINT 749 + PRINT 750,IEVENT + PRINT 751 + fnorm = 1./IEVENT + do k=1,NbAbsor + call GFMATE (materAbs(k),matnam,dua,duz,dud,dur,dui,udu,idu) + aveEdep = fnorm*sumEdep(k) + rmsEdep = fnorm*sqrt(abs(IEVENT*su2Edep(k)-sumEdep(k)**2)) + aveTrck = fnorm*sumTrck(k) + rmsTrck = fnorm*sqrt(abs(IEVENT*su2Trck(k)-sumTrck(k)**2)) +* + CALL GEVKEV (aveEdep,Emean,unitm) + CALL GEVKEV (rmsEdep,Erms ,unitr) + PRINT 752,k-1,matnam,Emean,unitm,Erms,unitr,aveTrck,rmsTrck + enddo + PRINT 749 +* +* *** geant termination + CALL GLAST +* +* *** close HIGZ + CALL HPLEND +* +* *** Save ntuple + IF (ISWIT(2).EQ.1) THEN + CALL HRPUT(0,'testem3.paw','N') + ENDIF +* +* +* *** formats + 749 FORMAT(/ ,60(1H-),/) + 750 FORMAT(1X,'Nb of events:',I6) + 751 FORMAT(1X,'AbsNo Material',5X,'Energy deposit',14X,'Trck length') + 752 FORMAT(I5,3X,A10,F8.3,A4,' +- ',F6.2,A4,F9.3,' cm +- ',F6.2,' cm') +* + END diff --git a/examples/extended/electromagnetic/TestEm3/geant3/src/uhinit.F b/examples/extended/electromagnetic/TestEm3/geant3/src/uhinit.F new file mode 100644 index 0000000000..a03868ac2a --- /dev/null +++ b/examples/extended/electromagnetic/TestEm3/geant3/src/uhinit.F @@ -0,0 +1,17 @@ + + SUBROUTINE UHINIT +* +* To book the user's histograms +* +#include "calor.inc" +* + CHARACTER*5 chtags(20) +* + DATA chtags /'EAbs0','LAbs0','EAbs1','LAbs1','EAbs2','LAbs2', + + 'EAbs3','LAbs3','EAbs4','LAbs4','EAbs5','LAbs5', + + 'EAbs6','LAbs6','EAbs7','LAbs7','EAbs8','LAbs8', + + 'EAbs9','LAbs9'/ +* + CALL HBOOKN(1,'sum per event',2*NbAbsor,' ',4000,chtags) +* + END diff --git a/examples/extended/electromagnetic/TestEm3/geant3/testem3.cra b/examples/extended/electromagnetic/TestEm3/geant3/testem3.cra deleted file mode 100644 index d45ecc6a72..0000000000 --- a/examples/extended/electromagnetic/TestEm3/geant3/testem3.cra +++ /dev/null @@ -1,518 +0,0 @@ -+OPTION,MAPASM. -+ASM,23. -+USE,GCDES,TestEm3,T=EXE. -* -+EXE,CRA*. -* -+PAM,11,T=CARD,T=ATTACH. /cern/pro/src/car/geant321.car -+PATCH,TestEm3. -+DECK,BLANKDEK. -* -* TestEm3 2.00 /01 990723 13.00 GEANT EXAMPLES -* -* TEST PROGRAM FOR GEANT TEST -* -* Author M.Maire ********* -* -* -* History -* ------- -* -* -+KEEP,CALOR. - PARAMETER (MaxAbs = 10) - COMMON/CALOR/materAbs(MaxAbs),thickAbs(MaxAbs),NbAbsor,NbLayer, - & calorYZ,Field,thLayer,calorX,worldX,worldYZ - -* -* NbAbsor = Number of Absorbers (data card CALOR) -* NbLayer = Number of Layers (data card CALOR) -* calorYZ = tranverse size of calor (cm) (data card CALOR) -* Field = magnetic field (tesla) (data card CALOR) -* materAbs(i) = Absorber material number. (data card MATE ) -* thickAbs(i) = thickness of absorber (cm) (data card THICK) -* -* thLayer = total thickness of a layer (cm) -* calorX = total X-size of the calor (cm) -* worldX = total X-size of the world (cm) -* worldYZ = total YZ-size of the world (cm) -* -+KEEP,CELOSS. - COMMON/CELOSS/ EdepAbs(MaxAbs),TrckAbs(MaxAbs), - & sumEdep(MaxAbs),sumTrck(MaxAbs), - & su2Edep(MaxAbs),su2Trck(MaxAbs) - -+DECK,main,if=batch. - PROGRAM main -* -* - PARAMETER (NGBANK=100000, NHBOOK=40000) - COMMON/GCBANK/Q(NGBANK) - COMMON/PAWC /H(NHBOOK) -* - CALL GZEBRA( NGBANK) - CALL HLIMIT(-NHBOOK) -* -* *** initialize HIGZ - CALL HPLINT(0) -* -* *** GEANT initialisation - CALL UGINIT -* -* *** Start events processing - CALL GRUN -* -* *** End of RUN - CALL UGLAST -* - STOP - END -+DECK,main,IF=-batch. - PROGRAM main -* -* GEANT main program. To link with the MOTIF user interface -* the routine GPAWPP(NWGEAN,NWPAW) should be called, whereas -* the routine GPAW(NWGEAN,NWPAW) gives access to the basic -* graphics version. -* - PARAMETER (NWGEAN=3000000, NWPAW=1000000) - COMMON/GCBANK/GEANT(NWGEAN) - COMMON/PAWC /PAW (NWPAW) -* -* - CALL GPAW (NWGEAN,NWPAW) -* - END -* - SUBROUTINE qnext - END -* - SUBROUTINE czopen - END -* - SUBROUTINE cztcp - END -* - SUBROUTINE czclos - END -* - SUBROUTINE czputa - END -+DECK,UGINIT - SUBROUTINE UGINIT -* -* To initialise GEANT/USER program and read data cards -* -+SEQ,CALOR,CELOSS. -+SEQ,GCKINE. -* - CHARACTER*20 filnam -* -* *** Define the GEANT parameters - CALL GINIT - -* *** read data cards - PRINT *, 'G3 > gives the filename of the data cards to be read:' - READ (*,'(A)') filnam - IF (filnam.EQ.' ') filnam = 'testem3.dat' - OPEN (unit=5,file=filnam,status='unknown',form='formatted') - -* -* *** Calor definition - CALL FFKEY('CALOR',NbAbsor,4,'MIXED') - CALL FFKEY('MATE' ,materAbs(1),MaxAbs,'INTEGER') - CALL FFKEY('THICK',thickAbs(1),MaxAbs,'REAL') -* -* *** read data cards - CALL GFFGO - -* - CALL GZINIT - CALL GPART -* - CALL GDINIT -* -* *** Geometry and materials description - CALL UGEOM -* -* *** Energy loss and cross-sections initialisations - CALL GPHYSI -* - CALL GPRINT('MATE',0) - CALL GPRINT('TMED',0) - CALL GPRINT('VOLU',0) -* -* *** Define user histograms - CALL UHINIT -* -* *** some initialisation - do k=1,MaxAbs - sumEdep(k) = 0. - sumTrck(k) = 0. - su2Edep(k) = 0. - su2Trck(k) = 0. - enddo -* - END -+DECK,UGEOM. - SUBROUTINE UGEOM -* -* *** Define user geometry set up -* -* -+SEQ,CALOR. -* - DIMENSION PAR(3) - - DIMENSION Aair(2),Zair(2),Wair(2) - DIMENSION ACO2(2),ZCO2(2),WCO2(2) - DIMENSION AH2O(2),ZH2O(2),WH2O(2) - DIMENSION AG10(4),ZG10(4),WG10(4) -* - CHARACTER*4 volnam - CHARACTER*20 matnam -* -* *** Air compound parameters - DATA Aair/14.01, 16.00/ - DATA Zair/ 7. , 8. / - DATA Wair/ 0.7 , 0.3 / -* -* *** CO2 compound parameters - DATA ACO2/12.01, 16.00/ - DATA ZCO2/ 6. , 8. / - DATA WCO2/ 1. , 2. / -* -* *** Water compound parameters - DATA AH2O/ 1.01, 16.00/ - DATA ZH2O/ 1. , 8. / - DATA WH2O/ 2. , 1. / -* -* *** G10 compound parameters - DATA AG10/ 1.01, 12.00, 16.00, 28.00/ - DATA ZG10/ 1. , 6. , 8. , 14. / - DATA WG10/ 3. , 3. , 2. , 1. / - -* -* *** 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 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) - CALL GSMATE( 7,'Iron ', 55.85, 26., 7.87 , 1.76, 17.1, 0,0) - CALL GSMATE( 8,'Lead ',207.19, 82., 11.35 , 0.56, 18.5, 0,0) - CALL GSMATE( 9,'Uranium ',238.03, 92., 18.95 , 0.32, 12. , 0,0) - CALL GSMATE(10,'Silicium ', 28.09, 14., 2.33 , 9.36, 45.5, 0,0) - CALL GSMATE(11,'Tungsten ',183.85, 74., 19.30 , 0.35, 9.6, 0,0) - CALL GSMIXT(12,'NemaG10' , AG10 ,ZG10, 1.7 ,-4 , WG10) -* -* -* *** Defines USER tracking media parameters - IFIELD = 0 - IF (Field.GT.0.) IFIELD = 3 - FIELDM = 10*Field - TMAXFD = 10.0 - STEMAX = 1000. - DEEMAX = 0.20 - EPSIL = 0.001 - STMIN = 0.010 -* - do k=1,NbAbsor - CALL GSTMED( k,'absorber',materAbs(k), 0 ,IFIELD,FIELDM,TMAXFD, - * STEMAX,DEEMAX,EPSIL,STMIN, 0 , 0 ) - enddo -* - nudef = NbAbsor+1 - CALL GSTMED( nudef,'default' , 1 , 0 ,IFIELD,FIELDM,TMAXFD, - * STEMAX,DEEMAX,EPSIL,STMIN, 0 , 0 ) -* -* -* *** calor dimensions - thLayer = 0. - do k=1,NbAbsor - thLayer = thLayer + thickAbs(k) - enddo - calorX = NbLayer*thLayer - worldX = 1.2*calorX - worldYZ = 1.2*calorYZ -* -* *** world - PAR(1) = worldX /2. - PAR(2) = worldYZ/2. - PAR(3) = worldYZ/2. - CALL GSVOLU('worl','BOX ',nudef,PAR,3,IVOL) -* -* *** calorimeter - PAR(1) = calorX /2. - PAR(2) = calorYZ/2. - PAR(3) = calorYZ/2. - CALL GSVOLU('calo','BOX ',nudef,PAR,3,IVOL) - CALL GSPOS ('calo',1,'worl',0.,0.,0.,0,'only') -* -* *** layers - CALL GSDVN ('layr','calo',NbLayer,1) -* -* *** absorbers - volnam = 'abs' - xfront = -0.5*thLayer - do k=1,NbAbsor - PAR(1) = thickAbs(k)/2. - PAR(2) = calorYZ/2. - PAR(3) = calorYZ/2. - volnam(4:4) = char(ichar('0')+k-1) - CALL GSVOLU(volnam,'BOX ',k,PAR,3,IVOL) - xcenter = xfront + 0.5*thickAbs(k) - CALL GSPOS (volnam,1,'layr',xcenter,0.,0.,0,'only') - xfront = xfront + thickAbs(k) - enddo -* -* *** Close geometry banks. (mandatory system routine) - CALL GGCLOS -* -* *** print geometry - PRINT 749 - PRINT 751,NbLayer - do k=1,NbAbsor - call GFMATE (materAbs(k),matnam,dua,duz,dud,dur,dui,udu,idu) - PRINT 752,matnam,thickAbs(k) - enddo - PRINT 749 -* - 749 FORMAT(/ ,60(1H-),/) - 751 FORMAT(1X,'The calorimeter is ',I2,' layers of:') - 752 FORMAT(5X,A10,': ',F8.4,' cm') -* -* *** dessin - CALL GSATT ('*' ,'SEEN',1) - CALL GSATT ('layr','SEEN',0) -* - DO IX = 1,3 - CALL GDOPEN (IX) - SCALE = 18./max(worldX,worldYZ) - PAXIS = 0. - SAXIS = 1. - CALL GDRAWC ('worl',IX,0.,10.,9.3,SCALE,SCALE) -CCC CALL GDAXIS (PAXIS,PAXIS,PAXIS,SAXIS) - CALL GDSCAL (10. , 0.3) - CALL GDCLOS - END DO -* - END -+DECK,UHINIT. - SUBROUTINE UHINIT -* -* To book the user's histograms -* -+SEQ,CALOR. -* - CHARACTER*5 chtags(20) -* - DATA chtags /'EAbs0','LAbs0','EAbs1','LAbs1','EAbs2','LAbs2', - + 'EAbs3','LAbs3','EAbs4','LAbs4','EAbs5','LAbs5', - + 'EAbs6','LAbs6','EAbs7','LAbs7','EAbs8','LAbs8', - + 'EAbs9','LAbs9'/ -* - CALL HBOOKN(1,'sum per event',2*NbAbsor,' ',4000,chtags) -* - END -+DECK,GUKINE - SUBROUTINE GUKINE -* -* Generates Kinematics for primary track -* -* Data card Kine : Itype Ekine x0 y0 z0 ux uy uz -* -+SEQ,GCBANK,GCFLAG,GCKINE. -+SEQ,CALOR. -* - DIMENSION VERTEX(3),PLAB(3) -* -* *** set/reset default kinematic - IF ((IKINE.LT.0).or.(abs(PKINE(2)).GT.0.5*worldX)) THEN - IKINE = ABS(IKINE) - PKINE(2) = -0.5*worldX - PKINE(3) = 0. - PKINE(4) = 0. - PKINE(5) = 1. - PKINE(6) = 0. - PKINE(7) = 0. - ENDIF -* - VERTEX(1) = PKINE(2) - VERTEX(2) = PKINE(3) - VERTEX(3) = PKINE(4) -* - CALL GSVERT(VERTEX,0,0,0,0,NVERT) -* -* - JPA = LQ(JPART-IKINE) - XMASS = Q(JPA+7) - PMOM = SQRT(PKINE(1)*(PKINE(1)+2*XMASS)) - PLAB(1) = PMOM*PKINE(5) - PLAB(2) = PMOM*PKINE(6) - PLAB(3) = PMOM*PKINE(7) -* - CALL GSKINE(PLAB,IKINE,NVERT,0,0,NT) -* -* *** Kinematics debug - IF (IEVENT.EQ.1.OR.IDEBUG.NE.0) CALL GPRINT('KINE',0) -* - END -+DECK,GUTREV - SUBROUTINE GUTREV -* -* User routine to control tracking of one event -* Called by GRUN -* -+SEQ,CALOR,CELOSS -* - do k=1,NbAbsor - EdepAbs(k) = 0. - TrckAbs(k) = 0. - enddo -* - CALL GTREVE -* - END -+DECK,GUSTEP - SUBROUTINE GUSTEP -* -* User routine called at the end of each tracking step -* -+SEQ,GCFLAG. -+SEQ,GCKINE,GCKING,GCTRAK,GCTMED. -+SEQ,CALOR,CELOSS. -* -* -* *** Debug event and store tracks for drawing - IF (IDEBUG.NE.0) CALL GPCXYZ - IF ((ISWIT(1).EQ.1).AND.(CHARGE.NE.0.)) CALL GSXYZ - IF (ISWIT(1).EQ.2) CALL GSXYZ -* -* *** Something generated ? - IF(NGKINE.GT.0) CALL GSKING(0) -* -* *** Energy deposited and charged track length - IF (NUMED.LE.NbAbsor) THEN - if (DESTEP.NE.0.) EdepAbs(NUMED) = EdepAbs(NUMED) + DESTEP - if (CHARGE*STEP.NE.0.) TrckAbs(NUMED) = TrckAbs(NUMED) + STEP - ENDIF -* - END -+DECK,GUOUT - SUBROUTINE GUOUT -* -* User routine called at the end of each event -* -+SEQ,GCFLAG. -+SEQ,CALOR,CELOSS. -* - DIMENSION sumevent(2*MaxAbS) - CHARACTER*4 unit -* -* *** drawing -* -+self,if=-batch. - IF (ISWIT(1).NE.0) THEN - CALL GDHEAD (110110,'TestEm3',0.) - CALL GDSHOW (3) - CALL GDXYZ (0) - END IF -+self. -* -* ntuple: energies and track length per event - do k=1,NbAbsor - sumevent(2*k-1) = EdepAbs(k) - sumevent(2*k ) = TrckAbs(k) - enddo - CALL HFN(1,sumevent) -* -* cumul energy deposited and charged track length - do k=1,NbAbsor - sumEdep(k) = sumEdep(k) + EdepAbs(k) - sumTrck(k) = sumTrck(k) + TrckAbs(k) -* - su2Edep(k) = su2Edep(k) + EdepAbs(k)**2 - su2Trck(k) = su2Trck(k) + TrckAbs(k)**2 - enddo -* -* *** print - IF (ISWIT(1).NE.0) THEN - do k=1,NbAbsor - CALL GEVKEV (EdepAbs(k),Eunit,unit) - PRINT 751,k,Eunit,unit,TrckAbs(k) - enddo - print 749 - ENDIF - - 749 FORMAT(/) - 751 FORMAT(1X,'Absorber',I2,' : Energy deposit: ',F8.3,A4, - & ' Track length: ' ,F8.3,' cm') -* - END -+DECK,UGLAST - SUBROUTINE UGLAST -* -* Termination routine to print histograms and statistics -* -+SEQ,GCFLAG. -+SEQ,GCTRAK. -+SEQ,CALOR,CELOSS. -* - CHARACTER*20 matnam - CHARACTER*4 unitm,unitr -* -* *** mean energy deposit and track length - PRINT 749 - PRINT 750,IEVENT - PRINT 751 - fnorm = 1./IEVENT - do k=1,NbAbsor - call GFMATE (materAbs(k),matnam,dua,duz,dud,dur,dui,udu,idu) - aveEdep = fnorm*sumEdep(k) - rmsEdep = fnorm*sqrt(abs(IEVENT*su2Edep(k)-sumEdep(k)**2)) - aveTrck = fnorm*sumTrck(k) - rmsTrck = fnorm*sqrt(abs(IEVENT*su2Trck(k)-sumTrck(k)**2)) -* - CALL GEVKEV (aveEdep,Emean,unitm) - CALL GEVKEV (rmsEdep,Erms ,unitr) - PRINT 752,k-1,matnam,Emean,unitm,Erms,unitr,aveTrck,rmsTrck - enddo - PRINT 749 -* -* *** geant termination - CALL GLAST -* -* *** close HIGZ - CALL HPLEND -* -* *** Save ntuple - IF (ISWIT(2).EQ.1) THEN - CALL HRPUT(0,'testem3.ntupl','N') - ENDIF -* -* -* *** formats - 749 FORMAT(/ ,60(1H-),/) - 750 FORMAT(1X,'Nb of events:',I6) - 751 FORMAT(1X,'AbsNo Material',5X,'Energy deposit',14X,'Trck length') - 752 FORMAT(I5,3X,A10,F8.3,A4,' +- ',F6.2,A4,F9.3,' cm +- ',F6.2,' cm') -* - END -+DECK,ffread,T=data. -LIST -CALOR 2 (nbAbs) 50 (nbLay) 40. (calorYZ) 0. (field) -MATE 8 (lead) 5 (larg) -THICK 0.23(cm) 0.57 (cm) -TRIG 1000 -KINE 3 (Itype) 1.0 (Ekine) 1000. (x0) 0. (y0) 0. (z0) 1. (ux) 0. (uy) 0. (uz) -DEBUG 10 5 100 -SWIT 0 (draw) 1 (save) -CUTS 10.0e-6 (cutgam) 10.0e-6 (cutele) 3*10.e-3 (cutneu/had/muo) - 2*10.0e-6 (bcute/m) 2*217.0e-6 (dcute/m) -ABAN 0 -LOSS 1 -HADR 0 -TIME 2=1. -+QUIT. diff --git a/examples/extended/electromagnetic/TestEm3/include/Em3CalorHit.hh b/examples/extended/electromagnetic/TestEm3/include/Em3CalorHit.hh index 3a322d6ccf..4c7d4fea1b 100644 --- a/examples/extended/electromagnetic/TestEm3/include/Em3CalorHit.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3CalorHit.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em3CalorHit.hh,v 1.2 1999/12/15 14:49:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm3/include/Em3CalorimeterSD.hh b/examples/extended/electromagnetic/TestEm3/include/Em3CalorimeterSD.hh index b3c93b4a58..2ed6435588 100644 --- a/examples/extended/electromagnetic/TestEm3/include/Em3CalorimeterSD.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3CalorimeterSD.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em3CalorimeterSD.hh,v 1.2 1999/12/15 14:49:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm3/include/Em3DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm3/include/Em3DetectorConstruction.hh index e3b5b1d657..6436b98607 100644 --- a/examples/extended/electromagnetic/TestEm3/include/Em3DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3DetectorConstruction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em3DetectorConstruction.hh,v 1.2 1999/12/15 14:49:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm3/include/Em3DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm3/include/Em3DetectorMessenger.hh index d26adffb05..52f564e3a9 100644 --- a/examples/extended/electromagnetic/TestEm3/include/Em3DetectorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3DetectorMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em3DetectorMessenger.hh,v 1.2 1999/12/15 14:49:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm3/include/Em3EventAction.hh b/examples/extended/electromagnetic/TestEm3/include/Em3EventAction.hh index c1807d7fd6..f2791f062a 100644 --- a/examples/extended/electromagnetic/TestEm3/include/Em3EventAction.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3EventAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em3EventAction.hh,v 1.2 1999/12/15 14:49:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm3/include/Em3EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm3/include/Em3EventActionMessenger.hh index 5e24fd0da1..9ef77c6dd9 100644 --- a/examples/extended/electromagnetic/TestEm3/include/Em3EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3EventActionMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em3EventActionMessenger.hh,v 1.2 1999/12/15 14:49:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm3/include/Em3PhysicsList.hh b/examples/extended/electromagnetic/TestEm3/include/Em3PhysicsList.hh index 644273b175..b57b5241aa 100644 --- a/examples/extended/electromagnetic/TestEm3/include/Em3PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3PhysicsList.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em3PhysicsList.hh,v 1.2 1999/12/15 14:49:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em3PhysicsList.hh,v 1.3 2000/04/17 12:06:23 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // @@ -19,6 +19,8 @@ #include "G4VUserPhysicsList.hh" #include "globals.hh" +class Em3PhysicsListMessenger; + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... class Em3PhysicsList: public G4VUserPhysicsList @@ -28,23 +30,32 @@ class Em3PhysicsList: public G4VUserPhysicsList ~Em3PhysicsList(); protected: - // Construct particle and physics + // Construct particle void ConstructParticle(); - void ConstructProcess(); - - void SetCuts(); - - protected: - // these methods Construct particles void ConstructBosons(); void ConstructLeptons(); void ConstructMesons(); - void ConstructBarions(); - + void ConstructBarions(); + + public: + void SetCuts(); + void SetCutForGamma(G4double); + void SetCutForElectron(G4double); + void SetCutForProton(G4double); + protected: - // these methods Construct physics processes and register them + // Construct physics processes and register them + void ConstructProcess(); void ConstructGeneral(); void ConstructEM(); + + private: + G4double cutForGamma; + G4double cutForElectron; + G4double cutForProton; + G4double currentDefaultCut; + + Em3PhysicsListMessenger* pMessenger; }; #endif diff --git a/source/g3tog4/test/include/G3toG4EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm3/include/Em3PhysicsListMessenger.hh similarity index 54% rename from source/g3tog4/test/include/G3toG4EventActionMessenger.hh rename to examples/extended/electromagnetic/TestEm3/include/Em3PhysicsListMessenger.hh index e8fbb5687c..48c6a99480 100644 --- a/source/g3tog4/test/include/G3toG4EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3PhysicsListMessenger.hh @@ -5,36 +5,42 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G3toG4EventActionMessenger.hh,v 1.2 1999/12/05 17:50:25 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em3PhysicsListMessenger.hh,v 1.1 2000/04/17 12:06:23 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -#ifndef G3toG4EventActionMessenger_h -#define G3toG4EventActionMessenger_h 1 +#ifndef Em3PhysicsListMessenger_h +#define Em3PhysicsListMessenger_h 1 #include "globals.hh" #include "G4UImessenger.hh" -class G3toG4EventAction; -class G4UIcmdWithAString; +class Em3PhysicsList; +class G4UIcmdWithADoubleAndUnit; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -class G3toG4EventActionMessenger: public G4UImessenger +class Em3PhysicsListMessenger: public G4UImessenger { public: - G3toG4EventActionMessenger(G3toG4EventAction*); - ~G3toG4EventActionMessenger(); + + Em3PhysicsListMessenger(Em3PhysicsList* ); + ~Em3PhysicsListMessenger(); void SetNewValue(G4UIcommand*, G4String); private: - G3toG4EventAction* eventAction; - G4UIcmdWithAString* DrawCmd; + + Em3PhysicsList* pPhysicsList; + + G4UIcmdWithADoubleAndUnit* gammaCutCmd; + G4UIcmdWithADoubleAndUnit* electCutCmd; + G4UIcmdWithADoubleAndUnit* protoCutCmd; }; #endif + diff --git a/examples/extended/electromagnetic/TestEm3/include/Em3PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm3/include/Em3PrimaryGeneratorAction.hh index 1d09e22838..835723d421 100644 --- a/examples/extended/electromagnetic/TestEm3/include/Em3PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3PrimaryGeneratorAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em3PrimaryGeneratorAction.hh,v 1.2 1999/12/15 14:49:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm3/include/Em3PrimaryGeneratorMessenger.hh b/examples/extended/electromagnetic/TestEm3/include/Em3PrimaryGeneratorMessenger.hh index 30264248cd..a34ead4756 100644 --- a/examples/extended/electromagnetic/TestEm3/include/Em3PrimaryGeneratorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3PrimaryGeneratorMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em3PrimaryGeneratorMessenger.hh,v 1.2 1999/12/15 14:49:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm3/include/Em3RunAction.hh b/examples/extended/electromagnetic/TestEm3/include/Em3RunAction.hh index 76d303f61a..71f05780f7 100644 --- a/examples/extended/electromagnetic/TestEm3/include/Em3RunAction.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3RunAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em3RunAction.hh,v 1.3 2000/01/21 09:11:06 maire Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm3/include/Em3RunActionMessenger.hh b/examples/extended/electromagnetic/TestEm3/include/Em3RunActionMessenger.hh index 148cb7e8fa..39e07502a0 100644 --- a/examples/extended/electromagnetic/TestEm3/include/Em3RunActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3RunActionMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em3RunActionMessenger.hh,v 1.3 2000/01/21 09:11:06 maire Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm3/include/Em3SteppingAction.hh b/examples/extended/electromagnetic/TestEm3/include/Em3SteppingAction.hh index 216fa77f27..7d0d79992b 100644 --- a/examples/extended/electromagnetic/TestEm3/include/Em3SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3SteppingAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em3SteppingAction.hh,v 1.2 1999/12/15 14:49:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm3/include/Em3SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm3/include/Em3SteppingVerbose.hh index 81e2f5f75a..93883d2c36 100644 --- a/examples/extended/electromagnetic/TestEm3/include/Em3SteppingVerbose.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3SteppingVerbose.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em3SteppingVerbose.hh,v 1.2 1999/12/15 14:49:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em3SteppingVerbose.hh,v 1.3 2000/02/29 12:18:58 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -17,11 +17,6 @@ // 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 Em3SteppingVerbose; diff --git a/examples/extended/electromagnetic/TestEm3/include/Em3VisManager.hh b/examples/extended/electromagnetic/TestEm3/include/Em3VisManager.hh index 50e017c45d..0e514037b2 100644 --- a/examples/extended/electromagnetic/TestEm3/include/Em3VisManager.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3VisManager.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em3VisManager.hh,v 1.2 1999/12/15 14:49:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3CalorHit.cc b/examples/extended/electromagnetic/TestEm3/src/Em3CalorHit.cc index f51d8be09d..fd71749b1e 100644 --- a/examples/extended/electromagnetic/TestEm3/src/Em3CalorHit.cc +++ b/examples/extended/electromagnetic/TestEm3/src/Em3CalorHit.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em3CalorHit.cc,v 1.2 1999/12/15 14:49:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3CalorimeterSD.cc b/examples/extended/electromagnetic/TestEm3/src/Em3CalorimeterSD.cc index b432227eae..010eb3bd02 100644 --- a/examples/extended/electromagnetic/TestEm3/src/Em3CalorimeterSD.cc +++ b/examples/extended/electromagnetic/TestEm3/src/Em3CalorimeterSD.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em3CalorimeterSD.cc,v 1.2 1999/12/15 14:49:03 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm3/src/Em3DetectorConstruction.cc index 632cb67053..7acf4011b8 100644 --- a/examples/extended/electromagnetic/TestEm3/src/Em3DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm3/src/Em3DetectorConstruction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em3DetectorConstruction.cc,v 1.2 1999/12/15 14:49:03 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm3/src/Em3DetectorMessenger.cc index 85e9b110b2..33a510e19c 100644 --- a/examples/extended/electromagnetic/TestEm3/src/Em3DetectorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm3/src/Em3DetectorMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em3DetectorMessenger.cc,v 1.2 1999/12/15 14:49:03 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3EventAction.cc b/examples/extended/electromagnetic/TestEm3/src/Em3EventAction.cc index 5a8ccb72cb..1ca7393e7c 100644 --- a/examples/extended/electromagnetic/TestEm3/src/Em3EventAction.cc +++ b/examples/extended/electromagnetic/TestEm3/src/Em3EventAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em3EventAction.cc,v 1.4 2000/01/21 09:11:06 maire Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm3/src/Em3EventActionMessenger.cc index 51cb7f5b6a..03118214a7 100644 --- a/examples/extended/electromagnetic/TestEm3/src/Em3EventActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm3/src/Em3EventActionMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em3EventActionMessenger.cc,v 1.2 1999/12/15 14:49:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3PhysicsList.cc b/examples/extended/electromagnetic/TestEm3/src/Em3PhysicsList.cc index e268f1b9a8..e1117c52d0 100644 --- a/examples/extended/electromagnetic/TestEm3/src/Em3PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm3/src/Em3PhysicsList.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em3PhysicsList.cc,v 1.3 1999/12/15 14:49:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em3PhysicsList.cc,v 1.5 2000/04/17 12:05:39 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // @@ -14,6 +14,7 @@ //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... #include "Em3PhysicsList.hh" +#include "Em3PhysicsListMessenger.hh" #include "G4ParticleDefinition.hh" #include "G4ParticleWithCuts.hh" @@ -28,14 +29,20 @@ Em3PhysicsList::Em3PhysicsList(): G4VUserPhysicsList() { - defaultCutValue = 0.5*mm; + currentDefaultCut = defaultCutValue = 0.5*mm; + cutForGamma = defaultCutValue; + cutForElectron = defaultCutValue; + cutForProton = defaultCutValue; + + pMessenger = new Em3PhysicsListMessenger(this); + SetVerboseLevel(1); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... Em3PhysicsList::~Em3PhysicsList() -{} +{delete pMessenger;} //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -92,7 +99,6 @@ void Em3PhysicsList::ConstructMesons() G4PionZero::PionZeroDefinition(); G4Eta::EtaDefinition(); G4EtaPrime::EtaPrimeDefinition(); - G4RhoZero::RhoZeroDefinition(); G4KaonPlus::KaonPlusDefinition(); G4KaonMinus::KaonMinusDefinition(); G4KaonZero::KaonZeroDefinition(); @@ -211,21 +217,30 @@ void Em3PhysicsList::ConstructGeneral() void Em3PhysicsList::SetCuts() { + // reactualise cutValues + if (currentDefaultCut != defaultCutValue) + { + if(cutForGamma == currentDefaultCut) cutForGamma = defaultCutValue; + if(cutForElectron == currentDefaultCut) cutForElectron = defaultCutValue; + if(cutForProton == currentDefaultCut) cutForProton = defaultCutValue; + currentDefaultCut = defaultCutValue; + } + if (verboseLevel >0){ G4cout << "Em3PhysicsList::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(defaultCutValue, "gamma"); - SetCutValue(defaultCutValue, "e-"); - SetCutValue(defaultCutValue, "e+"); + // because some processes for e+/e- need cut values for gamma + SetCutValue(cutForGamma, "gamma"); + SetCutValue(cutForElectron, "e-"); + SetCutValue(cutForElectron, "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 - SetCutValue(defaultCutValue, "proton"); - SetCutValue(defaultCutValue, "anti_proton"); + SetCutValue(cutForProton, "proton"); + SetCutValue(cutForProton, "anti_proton"); SetCutValueForOthers(defaultCutValue); @@ -234,4 +249,25 @@ void Em3PhysicsList::SetCuts() //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +void Em3PhysicsList::SetCutForGamma(G4double cut) +{ + ResetCuts(); + cutForGamma = cut; +} + +void Em3PhysicsList::SetCutForElectron(G4double cut) +{ + ResetCuts(); + cutForElectron = cut; +} + +void Em3PhysicsList::SetCutForProton(G4double cut) +{ + ResetCuts(); + cutForProton = cut; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3PhysicsListMessenger.cc b/examples/extended/electromagnetic/TestEm3/src/Em3PhysicsListMessenger.cc new file mode 100644 index 0000000000..07f807d40e --- /dev/null +++ b/examples/extended/electromagnetic/TestEm3/src/Em3PhysicsListMessenger.cc @@ -0,0 +1,71 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: Em3PhysicsListMessenger.cc,v 1.1 2000/04/17 12:05:40 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "Em3PhysicsListMessenger.hh" + +#include "Em3PhysicsList.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +Em3PhysicsListMessenger::Em3PhysicsListMessenger(Em3PhysicsList* pPhys) +:pPhysicsList(pPhys) +{ + gammaCutCmd = new G4UIcmdWithADoubleAndUnit("/run/particle/setGCut",this); + gammaCutCmd->SetGuidance("Set gamma cut."); + gammaCutCmd->SetParameterName("Gcut",false); + gammaCutCmd->SetUnitCategory("Length"); + gammaCutCmd->SetRange("Gcut>0.0"); + gammaCutCmd->AvailableForStates(PreInit,Idle); + + electCutCmd = new G4UIcmdWithADoubleAndUnit("/run/particle/setECut",this); + electCutCmd->SetGuidance("Set electron cut."); + electCutCmd->SetParameterName("Ecut",false); + electCutCmd->SetUnitCategory("Length"); + electCutCmd->SetRange("Ecut>0.0"); + electCutCmd->AvailableForStates(PreInit,Idle); + + protoCutCmd = new G4UIcmdWithADoubleAndUnit("/run/particle/setPCut",this); + protoCutCmd->SetGuidance("Set proton cut."); + protoCutCmd->SetParameterName("Pcut",false); + protoCutCmd->SetUnitCategory("Length"); + protoCutCmd->SetRange("Pcut>0.0"); + protoCutCmd->AvailableForStates(PreInit,Idle); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +Em3PhysicsListMessenger::~Em3PhysicsListMessenger() +{ + delete gammaCutCmd; + delete electCutCmd; + delete protoCutCmd; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void Em3PhysicsListMessenger::SetNewValue(G4UIcommand* command,G4String newValue) +{ + if( command == gammaCutCmd ) + { pPhysicsList->SetCutForGamma(gammaCutCmd->GetNewDoubleValue(newValue));} + + if( command == electCutCmd ) + { pPhysicsList->SetCutForElectron(electCutCmd->GetNewDoubleValue(newValue));} + + if( command == protoCutCmd ) + { pPhysicsList->SetCutForProton(protoCutCmd->GetNewDoubleValue(newValue));} +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm3/src/Em3PrimaryGeneratorAction.cc index f4c858ea65..1d54c00a4b 100644 --- a/examples/extended/electromagnetic/TestEm3/src/Em3PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm3/src/Em3PrimaryGeneratorAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em3PrimaryGeneratorAction.cc,v 1.2 1999/12/15 14:49:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3PrimaryGeneratorMessenger.cc b/examples/extended/electromagnetic/TestEm3/src/Em3PrimaryGeneratorMessenger.cc index 105fb14955..3ae1551075 100644 --- a/examples/extended/electromagnetic/TestEm3/src/Em3PrimaryGeneratorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm3/src/Em3PrimaryGeneratorMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em3PrimaryGeneratorMessenger.cc,v 1.2 1999/12/15 14:49:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3RunAction.cc b/examples/extended/electromagnetic/TestEm3/src/Em3RunAction.cc index b46a671011..a6fc7c5861 100644 --- a/examples/extended/electromagnetic/TestEm3/src/Em3RunAction.cc +++ b/examples/extended/electromagnetic/TestEm3/src/Em3RunAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em3RunAction.cc,v 1.4 2000/01/21 09:11:07 maire Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3RunActionMessenger.cc b/examples/extended/electromagnetic/TestEm3/src/Em3RunActionMessenger.cc index 1d95888cfd..a402381352 100644 --- a/examples/extended/electromagnetic/TestEm3/src/Em3RunActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm3/src/Em3RunActionMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em3RunActionMessenger.cc,v 1.3 2000/01/21 09:11:07 maire Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3SteppingAction.cc b/examples/extended/electromagnetic/TestEm3/src/Em3SteppingAction.cc index cffacc6ff1..10f846ee09 100644 --- a/examples/extended/electromagnetic/TestEm3/src/Em3SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm3/src/Em3SteppingAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em3SteppingAction.cc,v 1.2 1999/12/15 14:49:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm3/src/Em3SteppingVerbose.cc index d14badbaa1..ccf8c5956e 100644 --- a/examples/extended/electromagnetic/TestEm3/src/Em3SteppingVerbose.cc +++ b/examples/extended/electromagnetic/TestEm3/src/Em3SteppingVerbose.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em3SteppingVerbose.cc,v 1.2 1999/12/15 14:49:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em3SteppingVerbose.cc,v 1.3 2000/02/29 12:19:50 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -15,10 +15,6 @@ // // Description: // Implementation of the Em3SteppingVerbose 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) // //--------------------------------------------------------------- diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3VisManager.cc b/examples/extended/electromagnetic/TestEm3/src/Em3VisManager.cc index e2e41f7ea5..e117f2b73d 100644 --- a/examples/extended/electromagnetic/TestEm3/src/Em3VisManager.cc +++ b/examples/extended/electromagnetic/TestEm3/src/Em3VisManager.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em3VisManager.cc,v 1.2 1999/12/15 14:49:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 24th January 1998. diff --git a/examples/extended/electromagnetic/TestEm4/GNUmakefile b/examples/extended/electromagnetic/TestEm4/GNUmakefile index 09975ef9cc..3c91a519e6 100644 --- a/examples/extended/electromagnetic/TestEm4/GNUmakefile +++ b/examples/extended/electromagnetic/TestEm4/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.2 2000/01/20 17:27:54 maire Exp $ +# $Id: GNUmakefile,v 1.3 2000/05/17 10:56:21 maire Exp $ # -------------------------------------------------------------- # GNUmakefile for examples module. Gabriele Cosmo, 06/04/98. # -------------------------------------------------------------- @@ -19,7 +19,7 @@ include $(G4INSTALL)/config/architecture.gmk ifdef G4NOHIST CPPFLAGS += -DG4NOHIST else - LDFLAGS += -L/cern/pro/lib + LDFLAGS += -L$(CERN)/pro/lib LOADLIBS += -lpacklib $(FCLIBS) endif diff --git a/examples/extended/electromagnetic/TestEm4/History b/examples/extended/electromagnetic/TestEm4/History index ca71b88db3..aab826e5a7 100644 --- a/examples/extended/electromagnetic/TestEm4/History +++ b/examples/extended/electromagnetic/TestEm4/History @@ -1,4 +1,4 @@ -$Id: History,v 1.2 2000/01/20 17:27:54 maire Exp $ +$Id: History,v 1.4 2000/06/17 12:52:19 stesting Exp $ ------------------------------------------------------------------- ========================================================= @@ -14,7 +14,10 @@ track of all tags. ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- + +June 17, 2000 John Allison (testem4-V01-00-00) +- Updated TestEm4.out for geant4-01-01-ref-06. -17-01-00 cppflag G4NOHIST to protect hbook histograms. +17-01-00 - cppflag G4NOHIST to protect hbook histograms. 12.10.99 - moved to examples/extended/electromagnetic 16.12.98 - created. Michel Maire diff --git a/examples/extended/electromagnetic/TestEm4/TestEm4.cc b/examples/extended/electromagnetic/TestEm4/TestEm4.cc index 46f7ae7368..89a70b06ec 100644 --- a/examples/extended/electromagnetic/TestEm4/TestEm4.cc +++ b/examples/extended/electromagnetic/TestEm4/TestEm4.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: TestEm4.cc,v 1.4 2000/03/09 11:27:37 gracia Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/electromagnetic/TestEm4/TestEm4.out b/examples/extended/electromagnetic/TestEm4/TestEm4.out index 0b266a5858..b78d746fea 100644 --- a/examples/extended/electromagnetic/TestEm4/TestEm4.out +++ b/examples/extended/electromagnetic/TestEm4/TestEm4.out @@ -1,11 +1,8 @@ ********************************************** - Geant4 version $Name: geant4-01-01 $ - (07-Dec-99) + Geant4 version $Name: geant4-02-00 $ + (10-Mar-2000) Copyright : Geant4 Collaboration ********************************************** -Constructing Visualization Manager.... -Initialising Visualization Manager.... -Registering graphics systems.... 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 % @@ -32,10 +29,16 @@ eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to delta ray energy sampled from differential Xsection. PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. -eBrem: Total cross sections from a parametrisation. Good description from 1 KeV to 100 GeV. + eIoni Minimum Delta cut in range=0.1 mm. + + material min.delta energy(keV) + + FluorCarbonate 96.463 + +eBrem: Total cross sections from a parametrisation. Good description from 10 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). gamma energies sampled according Heitler @@ -48,7 +51,7 @@ Cut in energy Cuts in energy have not calculated yet !! Enter /run/initialize command to calculate cuts =================================================== -# $Id: TestEm4.out,v 1.1 2000/01/21 13:53:26 maire Exp $ +# $Id: TestEm4.out,v 1.4 2000/06/17 12:52:19 stesting Exp $ # # Macro file for "TestEm4.cc" # @@ -84,14 +87,12 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 50000 - User=16s Real=21s Sys=2.9s + User=93.01s Real=103.38s Sys=9.49s --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 1887355663, 136449826 + Current couple of seeds = 5382335, 1635673159 ---------------------------------------- -Graphics systems deleted. -VisManager deleting. G4 kernel has come to Quit state. Deletion of G4 kernel class start. UserDetectorConstruction deleted. diff --git a/examples/extended/electromagnetic/TestEm4/geant3/README b/examples/extended/electromagnetic/TestEm4/geant3/README new file mode 100644 index 0000000000..cfc2d76f2b --- /dev/null +++ b/examples/extended/electromagnetic/TestEm4/geant3/README @@ -0,0 +1,24 @@ + + testem4/src is the geant3 equivalent of TestEm4 + + % cd geant3 + % gmakeB to make an executable (Batch version) + % gmakeT to make an executable (inTeractive version) + + To execute: + + % cd geant3 + % $G4SYSTEM/testem4.xb (for batch) or testem4.xt (for interactive) + + The program will ask: + G3 > gives the filename of the data cards to be read: + + run01.dat (runNN.dat is the equivalent of the G4 runNN.mac) + + + testem4 produces 1 histo saved as testem4.paw if ISWIT(2)=1 + + Content of this histo: + + 1 : energy deposit in C6F6 + diff --git a/examples/extended/electromagnetic/TestEm4/geant3/gmakeB b/examples/extended/electromagnetic/TestEm4/geant3/gmakeB index c1fafb89b8..8033c37bb7 100755 --- a/examples/extended/electromagnetic/TestEm4/geant3/gmakeB +++ b/examples/extended/electromagnetic/TestEm4/geant3/gmakeB @@ -4,26 +4,15 @@ set name=testem4 set extnam=" " -if ($G4SYSTEM == AIX-xlC) set extnam=-qextname +if ($G4SYSTEM == AIX-AFS) set extnam=-qextname # mkdir $G4SYSTEM cd $G4SYSTEM # -# Run patchy -# -cat > temp.cra << eocra -+USE,batch. -eocra -cat ../$name.cra >> temp.cra -# -ypatchy - $name temp $name - $name :go -rm temp.cra -# # fortran compilation # -fsplit $name.f -rm $name.f -hepf77 $extnam -c -g *.f +hepf77 $extnam -c -g -Dbatch -I/cern/pro/include -I../include ../src/*.F + # # Link # @@ -37,7 +26,7 @@ chmod +x $name.xb # # cleanup # -rm *.lis *.lst *.f *.o +rm *.o echo 'done' exit diff --git a/examples/extended/electromagnetic/TestEm4/geant3/gmakeT b/examples/extended/electromagnetic/TestEm4/geant3/gmakeT index 97ad96ffdc..290e81a52b 100755 --- a/examples/extended/electromagnetic/TestEm4/geant3/gmakeT +++ b/examples/extended/electromagnetic/TestEm4/geant3/gmakeT @@ -4,20 +4,14 @@ set name=testem4 set extnam=" " -if ($G4SYSTEM == AIX-xlC) set extnam=-qextname +if ($G4SYSTEM == AIX-AFS) set extnam=-qextname # mkdir $G4SYSTEM cd $G4SYSTEM # -# Run patchy -# -ypatchy - $name ../$name $name - $name :go -# # fortran compilation # -fsplit $name.f -rm $name.f -hepf77 $extnam -c -g *.f +hepf77 $extnam -c -g -I/cern/pro/include -I../include ../src/*.F # # Link # @@ -31,7 +25,7 @@ chmod +x $name.xt # # cleanup # -rm *.lis *.lst *.f *.o +rm *.o echo 'done' exit diff --git a/examples/extended/electromagnetic/TestEm4/geant3/include/celoss.inc b/examples/extended/electromagnetic/TestEm4/geant3/include/celoss.inc new file mode 100644 index 0000000000..3f97624f1a --- /dev/null +++ b/examples/extended/electromagnetic/TestEm4/geant3/include/celoss.inc @@ -0,0 +1,2 @@ + + COMMON/CELOSS/ ETOT diff --git a/examples/extended/electromagnetic/TestEm4/geant3/src/gukine.F b/examples/extended/electromagnetic/TestEm4/geant3/src/gukine.F new file mode 100644 index 0000000000..815b3d7aae --- /dev/null +++ b/examples/extended/electromagnetic/TestEm4/geant3/src/gukine.F @@ -0,0 +1,33 @@ + + SUBROUTINE GUKINE +* +* Generates Kinematics for primary track +* +* Data card Kine : Itype Ekine +* +#include "geant321/gconst.inc" +#include "geant321/gcflag.inc" +#include "geant321/gckine.inc" +* + DIMENSION VERTEX(3),PLAB(3) + DIMENSION RNDM(2) +* + DATA VERTEX/3*0./ +* +* + CALL GSVERT(VERTEX,0,0,0,0,NVERT) +* + CALL GRNDM(RNDM,2) + THETA = PI*RNDM(1) + PHI = TWOPI*RNDM(2) +* + PLAB(1) = PKINE(1)*SIN(THETA)*COS(PHI) + PLAB(2) = PKINE(1)*SIN(THETA)*SIN(PHI) + PLAB(3) = PKINE(1)*COS(THETA) +* + CALL GSKINE(PLAB,IKINE,NVERT,0,0,NT) +* +* *** Kinematics debug + IF (IEVENT.EQ.1.OR.IDEBUG.NE.0) CALL GPRINT('KINE',0) +* + END diff --git a/examples/extended/electromagnetic/TestEm4/geant3/src/guout.F b/examples/extended/electromagnetic/TestEm4/geant3/src/guout.F new file mode 100644 index 0000000000..a82fbe8c27 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm4/geant3/src/guout.F @@ -0,0 +1,27 @@ + + SUBROUTINE GUOUT +* +* User routine called at the end of each event +* +#include "geant321/gcflag.inc" +#include "celoss.inc" +* +* *** drawing +* +#ifndef batch + IF (ISWIT(1).NE.0) THEN + CALL GDHEAD (110110,'TestEm4',0.) + CALL GDSHOW (3) + CALL GDXYZ (0) + END IF +#endif +* +* energy deposited +* + EMEV = 1000.*ETOT + CALL HFILL(1,EMEV,0.,1.) + IF (ISWIT(1).NE.0) PRINT 750,EMEV +* + 750 FORMAT(1X,'Energy deposit: ',F6.3,' MeV') +* + END diff --git a/examples/extended/electromagnetic/TestEm4/geant3/src/gustep.F b/examples/extended/electromagnetic/TestEm4/geant3/src/gustep.F new file mode 100644 index 0000000000..eada6c8afc --- /dev/null +++ b/examples/extended/electromagnetic/TestEm4/geant3/src/gustep.F @@ -0,0 +1,24 @@ + + SUBROUTINE GUSTEP +* +* User routine called at the end of each tracking step +* +#include "geant321/gcflag.inc" +#include "geant321/gckine.inc" +#include "geant321/gcking.inc" +#include "geant321/gctrak.inc" +#include "celoss.inc" +* +* +* *** Debug event and store tracks for drawing + IF (IDEBUG.NE.0) CALL GPCXYZ + IF ((ISWIT(1).EQ.1).AND.(CHARGE.NE.0.)) CALL GSXYZ + IF (ISWIT(1).EQ.2) CALL GSXYZ +* +* *** Something generated ? + IF(NGKINE.GT.0) CALL GSKING(0) +* +* *** Energy deposited + IF(DESTEP.GT.0.) ETOT = ETOT + DESTEP +* + END diff --git a/examples/extended/electromagnetic/TestEm4/geant3/src/gutrev.F b/examples/extended/electromagnetic/TestEm4/geant3/src/gutrev.F new file mode 100644 index 0000000000..b4d7148cb6 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm4/geant3/src/gutrev.F @@ -0,0 +1,13 @@ + + SUBROUTINE GUTREV +* +* User routine to control tracking of one event +* Called by GRUN +* +#include "celoss.inc" +* + ETOT = 0. +* + CALL GTREVE +* + END diff --git a/examples/extended/electromagnetic/TestEm4/geant3/src/main.F b/examples/extended/electromagnetic/TestEm4/geant3/src/main.F new file mode 100644 index 0000000000..47f06d36d1 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm4/geant3/src/main.F @@ -0,0 +1,58 @@ + +#ifdef batch + PROGRAM main +* +* + PARAMETER (NGBANK=100000, NHBOOK=10000) + COMMON/GCBANK/Q(NGBANK) + COMMON/PAWC /H(NHBOOK) +* + CALL GZEBRA( NGBANK) + CALL HLIMIT(-NHBOOK) +* +* *** initialize HIGZ + CALL HPLINT(0) +* +* *** GEANT initialisation + CALL UGINIT +* +* *** Start events processing + CALL GRUN +* +* *** End of RUN + CALL UGLAST +* + STOP + END +#else + PROGRAM main +* +* GEANT main program. To link with the MOTIF user interface +* the routine GPAWPP(NWGEAN,NWPAW) should be called, whereas +* the routine GPAW(NWGEAN,NWPAW) gives access to the basic +* graphics version. +* + PARAMETER (NWGEAN=3000000, NWPAW=1000000) + COMMON/GCBANK/GEANT(NWGEAN) + COMMON/PAWC /PAW (NWPAW) +* +* + CALL GPAW (NWGEAN,NWPAW) +* + END +* + SUBROUTINE qnext + END +* + SUBROUTINE czopen + END +* + SUBROUTINE cztcp + END +* + SUBROUTINE czclos + END +* + SUBROUTINE czputa + END +#endif diff --git a/examples/extended/electromagnetic/TestEm4/geant3/src/ugeom.F b/examples/extended/electromagnetic/TestEm4/geant3/src/ugeom.F new file mode 100644 index 0000000000..c57be36460 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm4/geant3/src/ugeom.F @@ -0,0 +1,57 @@ + + SUBROUTINE UGEOM +* +* *** Define user geometry set up +* +* + DIMENSION PAR(3) + DIMENSION AC6F6(2),ZC6F6(2),WC6F6(2) +* +* *** C6F6 compound parameters + DATA AC6F6/12.02, 19.01/ + DATA ZC6F6/ 6. , 9. / + DATA WC6F6/ 6. , 6. / +* + CALL GSMIXT(1,'C6F6',AC6F6,ZC6F6,1.61,-2,WC6F6) +* +* +* *** Defines USER tracking media parameters + IMAT = 1 + FIELDM = 0.0 + IFIELD = 0 + TMAXFD = 10.0 + STEMAX = 1000. + DEEMAX = 0.20 + EPSIL = 0.001 + STMIN = 0.010 +* + CALL GSTMED( 1,'C6F6',IMAT, 0 ,IFIELD,FIELDM,TMAXFD, + * STEMAX,DEEMAX,EPSIL,STMIN, 0 , 0 ) +* +* +* *** Geometry + PAR(1) = 0. + PAR(2) = 5. + PAR(3) = 5. + CALL GSVOLU('C6F6','TUBE',1,PAR,3,IVOL) +* +* *** Close geometry banks. (obligatory system routine) + CALL GGCLOS +* +* +* *** dessin + CALL GSATT ('*','SEEN',1) +* + DO IX = 1,3 + CALL GDOPEN (IX) + SCALE = 1.75 + PAXIS = 0. + SAXIS = 1. + CALL GDRAWC ('C6F6',IX,0.,10.,9.5,SCALE,SCALE) + CALL GDAXIS (PAXIS,PAXIS,PAXIS,SAXIS) + CALL GDSCAL (10. , 0.3) + CALL GDCLOS + END DO +* + + END diff --git a/examples/extended/electromagnetic/TestEm4/geant3/src/uginit.F b/examples/extended/electromagnetic/TestEm4/geant3/src/uginit.F new file mode 100644 index 0000000000..c99fafecd8 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm4/geant3/src/uginit.F @@ -0,0 +1,38 @@ + + SUBROUTINE UGINIT +* +* To initialise GEANT/USER program and read data cards +* + CHARACTER*20 filnam +* +* *** Define the GEANT parameters + CALL GINIT + +* *** read data cards + PRINT *, 'G3 > gives the filename of the data cards to be read:' + READ (*,'(A)') filnam + IF (filnam.EQ.' ') filnam = 'run01.dat' + OPEN (unit=5,file=filnam,status='unknown',form='formatted') + +* *** read data cards + CALL GFFGO +* + CALL GZINIT + CALL GPART +* + CALL GDINIT +* +* *** Geometry and materials description + CALL UGEOM +* +* *** Energy loss and cross-sections initialisations + CALL GPHYSI +* + CALL GPRINT('MATE',0) + CALL GPRINT('TMED',0) + CALL GPRINT('VOLU',0) +* +* *** Define user histograms + CALL UHINIT +* + END diff --git a/examples/extended/electromagnetic/TestEm4/geant3/src/uglast.F b/examples/extended/electromagnetic/TestEm4/geant3/src/uglast.F new file mode 100644 index 0000000000..a3e1543427 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm4/geant3/src/uglast.F @@ -0,0 +1,21 @@ + + SUBROUTINE UGLAST +* +* Termination routine to print histograms and statistics +* +#include "geant321/gcflag.inc" +* +* + CALL GLAST +* +* *** print selected histo +* +* *** close HIGZ + CALL HPLEND +* +* *** Save selected histograms + IF (ISWIT(2).EQ.1) THEN + CALL HRPUT(0,'testem4.paw','N') + ENDIF +* + END diff --git a/examples/extended/electromagnetic/TestEm4/geant3/src/uhinit.F b/examples/extended/electromagnetic/TestEm4/geant3/src/uhinit.F new file mode 100644 index 0000000000..5d722965b8 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm4/geant3/src/uhinit.F @@ -0,0 +1,11 @@ + + SUBROUTINE UHINIT +* +* To book the user's histograms +* + CALL HBOOK1(1,'total energy deposit in C6F6 (MeV)' + *,100, 0., 10., 0.) + + CALL HIDOPT(0,'STAT') +* + END diff --git a/examples/extended/electromagnetic/TestEm4/geant3/testem4.cra b/examples/extended/electromagnetic/TestEm4/geant3/testem4.cra deleted file mode 100644 index 6708b2b5d7..0000000000 --- a/examples/extended/electromagnetic/TestEm4/geant3/testem4.cra +++ /dev/null @@ -1,314 +0,0 @@ -+OPTION,MAPASM. -+ASM,23. -+USE,GCDES,TestEm4,T=EXE. -* -+EXE,CRA*. -* -+PAM,11,T=CARD,T=ATTACH. /cern/pro/src/car/geant321.car -+PATCH,TestEm4. -+DECK,BLANKDEK. -* -* C6F6 1.00 /01 871204 18.00 GEANT EXAMPLES -* -* TEST PROGRAM FOR GEANT TEST -* -* Author R.Brun ********* -* -* -* History -* ------- -* -* 05-08-98 : adapted to Geant3.21, M.Maire -* - -+KEEP,CELOSS. - COMMON/CELOSS/ ETOT - -+DECK,main,if=batch. - PROGRAM main -* -* - PARAMETER (NGBANK=100000, NHBOOK=10000) - COMMON/GCBANK/Q(NGBANK) - COMMON/PAWC /H(NHBOOK) -* - CALL GZEBRA( NGBANK) - CALL HLIMIT(-NHBOOK) -* -* *** initialize HIGZ - CALL HPLINT(0) -* -* *** GEANT initialisation - CALL UGINIT -* -* *** Start events processing - CALL GRUN -* -* *** End of RUN - CALL UGLAST -* - STOP - END -+DECK,main,IF=-batch. - PROGRAM main -* -* GEANT main program. To link with the MOTIF user interface -* the routine GPAWPP(NWGEAN,NWPAW) should be called, whereas -* the routine GPAW(NWGEAN,NWPAW) gives access to the basic -* graphics version. -* - PARAMETER (NWGEAN=3000000, NWPAW=1000000) - COMMON/GCBANK/GEANT(NWGEAN) - COMMON/PAWC /PAW (NWPAW) -* -* - CALL GPAW (NWGEAN,NWPAW) -* - END -* - SUBROUTINE qnext - END -* - SUBROUTINE czopen - END -* - SUBROUTINE cztcp - END -* - SUBROUTINE czclos - END -* - SUBROUTINE czputa - END -+DECK,UGINIT - SUBROUTINE UGINIT -* -* To initialise GEANT/USER program and read data cards -* - CHARACTER*20 filnam -* -* *** Define the GEANT parameters - CALL GINIT - -* *** read data cards - PRINT *, 'G3 > gives the filename of the data cards to be read:' - READ (*,'(A)') filnam - IF (filnam.EQ.' ') filnam = 'testem4.dat' - OPEN (unit=5,file=filnam,status='unknown',form='formatted') - -* *** read data cards - CALL GFFGO -* - CALL GZINIT - CALL GPART -* - CALL GDINIT -* -* *** Geometry and materials description - CALL UGEOM -* -* *** Energy loss and cross-sections initialisations - CALL GPHYSI -* - CALL GPRINT('MATE',0) - CALL GPRINT('TMED',0) - CALL GPRINT('VOLU',0) -* -* *** Define user histograms - CALL UHINIT -* - END -+DECK,UGEOM. - SUBROUTINE UGEOM -* -* *** Define user geometry set up -* -* - DIMENSION PAR(3) - DIMENSION AC6F6(2),ZC6F6(2),WC6F6(2) -* -* *** C6F6 compound parameters - DATA AC6F6/12.02, 19.01/ - DATA ZC6F6/ 6. , 9. / - DATA WC6F6/ 6. , 6. / -* - CALL GSMIXT(1,'C6F6',AC6F6,ZC6F6,1.61,-2,WC6F6) -* -* -* *** Defines USER tracking media parameters - IMAT = 1 - FIELDM = 0.0 - IFIELD = 0 - TMAXFD = 10.0 - STEMAX = 1000. - DEEMAX = 0.20 - EPSIL = 0.001 - STMIN = 0.010 -* - CALL GSTMED( 1,'C6F6',IMAT, 0 ,IFIELD,FIELDM,TMAXFD, - * STEMAX,DEEMAX,EPSIL,STMIN, 0 , 0 ) -* -* -* *** Geometry - PAR(1) = 0. - PAR(2) = 5. - PAR(3) = 5. - CALL GSVOLU('C6F6','TUBE',1,PAR,3,IVOL) -* -* *** Close geometry banks. (obligatory system routine) - CALL GGCLOS -* -* -* *** dessin - CALL GSATT ('*','SEEN',1) -* - DO IX = 1,3 - CALL GDOPEN (IX) - SCALE = 1.75 - PAXIS = 0. - SAXIS = 1. - CALL GDRAWC ('C6F6',IX,0.,10.,9.5,SCALE,SCALE) - CALL GDAXIS (PAXIS,PAXIS,PAXIS,SAXIS) - CALL GDSCAL (10. , 0.3) - CALL GDCLOS - END DO -* - - END -+DECK,UHINIT. - SUBROUTINE UHINIT -* -* To book the user's histograms -* - CALL HBOOK1(1,'total energy deposit in C6F6 (MeV)' - *,100, 0., 10., 0.) - - CALL HIDOPT(0,'STAT') -* - END -+DECK,GUKINE - SUBROUTINE GUKINE -* -* Generates Kinematics for primary track -* -* Data card Kine : Itype Ekine -* -+SEQ,GCONST,GCFLAG,GCKINE. -* - DIMENSION VERTEX(3),PLAB(3) - DIMENSION RNDM(2) -* - DATA VERTEX/3*0./ -* -* - CALL GSVERT(VERTEX,0,0,0,0,NVERT) -* - CALL GRNDM(RNDM,2) - THETA = PI*RNDM(1) - PHI = TWOPI*RNDM(2) -* - PLAB(1) = PKINE(1)*SIN(THETA)*COS(PHI) - PLAB(2) = PKINE(1)*SIN(THETA)*SIN(PHI) - PLAB(3) = PKINE(1)*COS(THETA) -* - CALL GSKINE(PLAB,IKINE,NVERT,0,0,NT) -* -* *** Kinematics debug - IF (IEVENT.EQ.1.OR.IDEBUG.NE.0) CALL GPRINT('KINE',0) -* - END -+DECK,GUTREV - SUBROUTINE GUTREV -* -* User routine to control tracking of one event -* Called by GRUN -* -+SEQ,CELOSS -* - ETOT = 0. -* - CALL GTREVE -* - END -+DECK,GUSTEP - SUBROUTINE GUSTEP -* -* User routine called at the end of each tracking step -* -+SEQ,GCFLAG. -+SEQ,GCKINE,GCKING,GCTRAK. -+SEQ,CELOSS. -* -* -* *** Debug event and store tracks for drawing - IF (IDEBUG.NE.0) CALL GPCXYZ - IF ((ISWIT(1).EQ.1).AND.(CHARGE.NE.0.)) CALL GSXYZ - IF (ISWIT(1).EQ.2) CALL GSXYZ -* -* *** Something generated ? - IF(NGKINE.GT.0) CALL GSKING(0) -* -* *** Energy deposited - IF(DESTEP.GT.0.) ETOT = ETOT + DESTEP -* - END -+DECK,GUOUT - SUBROUTINE GUOUT -* -* User routine called at the end of each event -* -+SEQ,GCFLAG. -+SEQ,CELOSS. -* -* *** drawing -* -+self,if=-batch. - IF (ISWIT(1).NE.0) THEN - CALL GDHEAD (110110,'TestEm4',0.) - CALL GDSHOW (3) - CALL GDXYZ (0) - END IF -+self. -* -* energy deposited -* - EMEV = 1000.*ETOT - CALL HFILL(1,EMEV,0.,1.) - IF (ISWIT(1).NE.0) PRINT 750,EMEV -* - 750 FORMAT(1X,'Energy deposit: ',F6.3,' MeV') -* - END -+DECK,UGLAST - SUBROUTINE UGLAST -* -* Termination routine to print histograms and statistics -* -+SEQ,GCFLAG. -* -* - CALL GLAST -* -* *** print selected histo -* -* *** close HIGZ - CALL HPLEND -* -* *** Save selected histograms - IF (ISWIT(2).EQ.1) THEN - CALL HRPUT(0,'testem4.histo','N') - ENDIF -* - END -+DECK,ffread,T=data. -LIST -TRIG 10000 -KINE 1 (Itype) 0.009(Ekine) -DEBUG 1 5 1000 -SWIT 0 (draw) 1 (save) -CUTS 10.e-6 (cutgam) 10.e-6 (cutele) 3*10.e-3 (cutneu/had/muo) - 2*10.e-6 (bcute/m) 2*428.e-6 (dcute/m) -LOSS 1 -ABAN 0 -TIME 2= 1. -+QUIT. diff --git a/examples/extended/electromagnetic/TestEm4/include/Em4DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm4/include/Em4DetectorConstruction.hh index d5e65ee50d..8f54adc88a 100644 --- a/examples/extended/electromagnetic/TestEm4/include/Em4DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm4/include/Em4DetectorConstruction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em4DetectorConstruction.hh,v 1.2 1999/12/15 14:49:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm4/include/Em4EventAction.hh b/examples/extended/electromagnetic/TestEm4/include/Em4EventAction.hh index 0fb4d0098c..3e96c68157 100644 --- a/examples/extended/electromagnetic/TestEm4/include/Em4EventAction.hh +++ b/examples/extended/electromagnetic/TestEm4/include/Em4EventAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em4EventAction.hh,v 1.2 1999/12/15 14:49:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm4/include/Em4EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm4/include/Em4EventActionMessenger.hh index 67e00d3b9e..713cf26571 100644 --- a/examples/extended/electromagnetic/TestEm4/include/Em4EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm4/include/Em4EventActionMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em4EventActionMessenger.hh,v 1.2 1999/12/15 14:49:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm4/include/Em4PhysicsList.hh b/examples/extended/electromagnetic/TestEm4/include/Em4PhysicsList.hh index 0f7807ebfc..85e74ef5e7 100644 --- a/examples/extended/electromagnetic/TestEm4/include/Em4PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm4/include/Em4PhysicsList.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em4PhysicsList.hh,v 1.2 1999/12/15 14:49:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm4/include/Em4PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm4/include/Em4PrimaryGeneratorAction.hh index 9b661625e5..46cb524cad 100644 --- a/examples/extended/electromagnetic/TestEm4/include/Em4PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm4/include/Em4PrimaryGeneratorAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em4PrimaryGeneratorAction.hh,v 1.2 1999/12/15 14:49:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm4/include/Em4RunAction.hh b/examples/extended/electromagnetic/TestEm4/include/Em4RunAction.hh index bedfae0904..b04eaa7855 100644 --- a/examples/extended/electromagnetic/TestEm4/include/Em4RunAction.hh +++ b/examples/extended/electromagnetic/TestEm4/include/Em4RunAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em4RunAction.hh,v 1.3 2000/01/20 17:27:55 maire Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm4/include/Em4RunActionMessenger.hh b/examples/extended/electromagnetic/TestEm4/include/Em4RunActionMessenger.hh index e903dfd131..295f4779e4 100644 --- a/examples/extended/electromagnetic/TestEm4/include/Em4RunActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm4/include/Em4RunActionMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em4RunActionMessenger.hh,v 1.3 2000/01/20 17:27:56 maire Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm4/include/Em4SteppingAction.hh b/examples/extended/electromagnetic/TestEm4/include/Em4SteppingAction.hh index 4e3fc4fd45..cb17243a92 100644 --- a/examples/extended/electromagnetic/TestEm4/include/Em4SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm4/include/Em4SteppingAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em4SteppingAction.hh,v 1.2 1999/12/15 14:49:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm4/include/Em4SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm4/include/Em4SteppingVerbose.hh index 422946f071..b36da6d4ca 100644 --- a/examples/extended/electromagnetic/TestEm4/include/Em4SteppingVerbose.hh +++ b/examples/extended/electromagnetic/TestEm4/include/Em4SteppingVerbose.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em4SteppingVerbose.hh,v 1.2 1999/12/15 14:49:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em4SteppingVerbose.hh,v 1.3 2000/02/29 12:21:20 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -17,11 +17,6 @@ // 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 Em4SteppingVerbose; diff --git a/examples/extended/electromagnetic/TestEm4/include/Em4VisManager.hh b/examples/extended/electromagnetic/TestEm4/include/Em4VisManager.hh index ee88cae317..986a6db4f1 100644 --- a/examples/extended/electromagnetic/TestEm4/include/Em4VisManager.hh +++ b/examples/extended/electromagnetic/TestEm4/include/Em4VisManager.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em4VisManager.hh,v 1.2 1999/12/15 14:49:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm4/src/Em4DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm4/src/Em4DetectorConstruction.cc index 74c1372d1d..c5aa2922ad 100644 --- a/examples/extended/electromagnetic/TestEm4/src/Em4DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm4/src/Em4DetectorConstruction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em4DetectorConstruction.cc,v 1.2 1999/12/15 14:49:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm4/src/Em4EventAction.cc b/examples/extended/electromagnetic/TestEm4/src/Em4EventAction.cc index 740de2e66c..af484b4f33 100644 --- a/examples/extended/electromagnetic/TestEm4/src/Em4EventAction.cc +++ b/examples/extended/electromagnetic/TestEm4/src/Em4EventAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em4EventAction.cc,v 1.3 2000/01/20 17:27:56 maire Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm4/src/Em4EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm4/src/Em4EventActionMessenger.cc index cbd106eaba..a4a668ad9c 100644 --- a/examples/extended/electromagnetic/TestEm4/src/Em4EventActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm4/src/Em4EventActionMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em4EventActionMessenger.cc,v 1.2 1999/12/15 14:49:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm4/src/Em4PhysicsList.cc b/examples/extended/electromagnetic/TestEm4/src/Em4PhysicsList.cc index 9adeaabbfc..bf52d2e701 100644 --- a/examples/extended/electromagnetic/TestEm4/src/Em4PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm4/src/Em4PhysicsList.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em4PhysicsList.cc,v 1.3 1999/12/15 14:49:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm4/src/Em4PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm4/src/Em4PrimaryGeneratorAction.cc index 4b20dcda96..a3e2cf2c8b 100644 --- a/examples/extended/electromagnetic/TestEm4/src/Em4PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm4/src/Em4PrimaryGeneratorAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em4PrimaryGeneratorAction.cc,v 1.2 1999/12/15 14:49:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm4/src/Em4RunAction.cc b/examples/extended/electromagnetic/TestEm4/src/Em4RunAction.cc index d365edb492..f613f04fa0 100644 --- a/examples/extended/electromagnetic/TestEm4/src/Em4RunAction.cc +++ b/examples/extended/electromagnetic/TestEm4/src/Em4RunAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em4RunAction.cc,v 1.4 2000/01/20 17:27:57 maire Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm4/src/Em4RunActionMessenger.cc b/examples/extended/electromagnetic/TestEm4/src/Em4RunActionMessenger.cc index 16f705710d..a9a59fed9b 100644 --- a/examples/extended/electromagnetic/TestEm4/src/Em4RunActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm4/src/Em4RunActionMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em4RunActionMessenger.cc,v 1.3 2000/01/20 17:27:57 maire Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm4/src/Em4SteppingAction.cc b/examples/extended/electromagnetic/TestEm4/src/Em4SteppingAction.cc index 7af7dc1e4a..2c07a55179 100644 --- a/examples/extended/electromagnetic/TestEm4/src/Em4SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm4/src/Em4SteppingAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em4SteppingAction.cc,v 1.2 1999/12/15 14:49:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm4/src/Em4SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm4/src/Em4SteppingVerbose.cc index c4231e64e7..41dbcf58ce 100644 --- a/examples/extended/electromagnetic/TestEm4/src/Em4SteppingVerbose.cc +++ b/examples/extended/electromagnetic/TestEm4/src/Em4SteppingVerbose.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em4SteppingVerbose.cc,v 1.2 1999/12/15 14:49:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em4SteppingVerbose.cc,v 1.3 2000/02/29 12:22:10 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -15,10 +15,6 @@ // // Description: // Implementation of the Em4SteppingVerbose 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) // //--------------------------------------------------------------- diff --git a/examples/extended/electromagnetic/TestEm4/src/Em4VisManager.cc b/examples/extended/electromagnetic/TestEm4/src/Em4VisManager.cc index 48fcb70f2c..a44f585ce6 100644 --- a/examples/extended/electromagnetic/TestEm4/src/Em4VisManager.cc +++ b/examples/extended/electromagnetic/TestEm4/src/Em4VisManager.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em4VisManager.cc,v 1.2 1999/12/15 14:49:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 24th January 1998. diff --git a/examples/extended/electromagnetic/TestEm5/GNUmakefile b/examples/extended/electromagnetic/TestEm5/GNUmakefile index b44285d6af..a377cc2890 100644 --- a/examples/extended/electromagnetic/TestEm5/GNUmakefile +++ b/examples/extended/electromagnetic/TestEm5/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.2 2000/01/20 15:34:37 maire Exp $ +# $Id: GNUmakefile,v 1.3 2000/05/17 10:56:35 maire Exp $ # -------------------------------------------------------------- # GNUmakefile for examples module. Gabriele Cosmo, 06/04/98. # -------------------------------------------------------------- @@ -19,7 +19,7 @@ include $(G4INSTALL)/config/architecture.gmk ifdef G4NOHIST CPPFLAGS += -DG4NOHIST else - LDFLAGS += -L/cern/pro/lib + LDFLAGS += -L$(CERN)/pro/lib LOADLIBS += -lpacklib $(FCLIBS) endif diff --git a/examples/extended/electromagnetic/TestEm5/History b/examples/extended/electromagnetic/TestEm5/History index d0182a8ad8..dd8ca1eca7 100644 --- a/examples/extended/electromagnetic/TestEm5/History +++ b/examples/extended/electromagnetic/TestEm5/History @@ -1,4 +1,4 @@ -$Id: History,v 1.2 2000/01/20 15:34:38 maire Exp $ +$Id: History,v 1.3 2000/06/17 12:54:08 stesting Exp $ ------------------------------------------------------------------- ========================================================= @@ -15,6 +15,9 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +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) diff --git a/examples/extended/electromagnetic/TestEm5/TestEm5.cc b/examples/extended/electromagnetic/TestEm5/TestEm5.cc index 13ac5e32b6..b37f3130d0 100644 --- a/examples/extended/electromagnetic/TestEm5/TestEm5.cc +++ b/examples/extended/electromagnetic/TestEm5/TestEm5.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: TestEm5.cc,v 1.3 1999/12/15 14:49:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/electromagnetic/TestEm5/TestEm5.out b/examples/extended/electromagnetic/TestEm5/TestEm5.out index 81171840cf..1d0ee9da25 100644 --- a/examples/extended/electromagnetic/TestEm5/TestEm5.out +++ b/examples/extended/electromagnetic/TestEm5/TestEm5.out @@ -1,11 +1,8 @@ ********************************************** - Geant4 version $Name: geant4-01-01 $ - (07-Dec-99) + Geant4 version $Name: geant4-02-00 $ + (10-Mar-2000) Copyright : Geant4 Collaboration ********************************************** -Constructing Visualization Manager.... -Initialising Visualization Manager.... -Registering graphics systems.... ***** Table : Nb of materials = 17 ***** @@ -68,7 +65,7 @@ Registering graphics systems.... ---> Element: Carbon C Z = 6.0 N = 12.0 A = 12.01 g/mole fractionMass: 2.28 % Abundance 12.50 % ---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 0.60 % Abundance 38.89 % - Material: Galactic density: 0.000 mg/cm3 temperature: 2.73 K pressure: 0.00 atm RadLength: 6317232936888469300000.000 km + Material: Galactic density: 0.000 mg/cm3 temperature: 2.73 K pressure: 0.00 atm RadLength: 6317232936888469291008.000 km ---> Element: Galactic Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 100.00 % Abundance 100.00 % @@ -99,10 +96,32 @@ eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to delta ray energy sampled from differential Xsection. PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. -eBrem: Total cross sections from a parametrisation. Good description from 1 KeV to 100 GeV. + eIoni Minimum Delta cut in range=0.1 mm. + + material min.delta energy(keV) + + Beryllium 104.76 + Aluminium 125.07 + Silicon 116.08 + liquidArgon 78.381 + Iron 224.11 + Copper 238.31 + Gold 334.59 + Lead 229.67 + Water 81.518 + Air 0.27455 + XenonGas 1.7521 + CarbonicGas 0.54205 + ArgonCO2 0.41855 + NewArgonCO2 0.41855 + ArgonCH4 0.36851 + XenonMethanePropane 1.547 + Galactic 0.25 + +eBrem: Total cross sections from a parametrisation. Good description from 10 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). gamma energies sampled according Heitler @@ -111,51 +130,73 @@ annihil: Total cross section from Heilter formula (annihilation into 2 photons) 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 100 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. MuBrems: theoretical cross section - Good description up to 1000 TeV. - PhysicsTables from 1 GeV to 1e+03 PeV in 100 bins. + 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 TeV. - PhysicsTables from 1 GeV to 1e+03 PeV in 50 bins. + 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 1e+02 eV to 1e+02 TeV in 100 bins. + PhysicsTables from 100 eV to 100 TeV in 100 bins. + + hIoni Minimum Delta cut in range=0.1 mm. + + material min.delta energy(keV) + + Beryllium 104.76 + Aluminium 125.07 + Silicon 116.08 + liquidArgon 78.381 + Iron 224.11 + Copper 238.31 + Gold 334.59 + Lead 229.67 + Water 81.518 + Air 0.27455 + XenonGas 1.7521 + CarbonicGas 0.54205 + ArgonCO2 0.41855 + NewArgonCO2 0.41855 + ArgonCH4 0.36851 + XenonMethanePropane 1.547 + Galactic 0.25 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 150 bins. + PhysicsTables from 1 keV to 100 TeV in 100 bins. ============= The cut Energy ============================== gamma e- mu- proton neutron Cut in range 1 mm 1 mm 1 mm 1 mm Cut in energy - Beryllium 1.99 keV 466 keV 4.28 MeV 11.5 MeV - Aluminium 6.89 keV 597 keV 5.02 MeV 13.1 MeV - Silicon 6.89 keV 541 keV 4.72 MeV 12.2 MeV - liquidArgon 6.18 keV 343 keV 3.24 MeV 8.32 MeV - Iron 20.8 keV 1.28 MeV 8.52 MeV 22 MeV - Copper 24.6 keV 1.4 MeV 8.95 MeV 23 MeV - Gold 111 keV 2.28 MeV 11.7 MeV 29.2 MeV - Lead 101 keV 1.38 MeV 8.52 MeV 20.9 MeV - Water 2.9 keV 347 keV 3.39 MeV 8.95 MeV - Air 990 eV 990 eV 48.4 keV 83.2 keV - XenonGas 990 eV 1.75 keV 81.2 keV 91.9 keV - CarbonicGas 990 eV 990 eV 67.5 keV 136 keV - ArgonCO2 990 eV 990 eV 54.1 keV 73.6 keV - NewArgonCO2 990 eV 990 eV 54.1 keV 75.4 keV - ArgonCH4 990 eV 990 eV 49.6 keV 60.4 keV - XenonMethanePropane 990 eV 1.55 keV 78.3 keV 101 keV - Galactic 990 eV 990 eV 990 eV 990 eV + Beryllium 1.99 keV 468 keV 4.32 MeV 11.4 MeV + Aluminium 6.91 keV 595 keV 5.04 MeV 13.2 MeV + Silicon 6.88 keV 546 keV 4.71 MeV 12.2 MeV + liquidArgon 6.15 keV 347 keV 3.24 MeV 8.31 MeV + Iron 20.7 keV 1.29 MeV 8.48 MeV 22 MeV + Copper 24.8 keV 1.39 MeV 8.98 MeV 23.1 MeV + Gold 112 keV 2.29 MeV 11.8 MeV 29.3 MeV + Lead 101 keV 1.36 MeV 8.48 MeV 20.9 MeV + Water 2.93 keV 351 keV 3.4 MeV 8.98 MeV + Air 250 eV 275 eV 48.8 keV 83.6 keV + XenonGas 250 eV 1.75 keV 80.4 keV 93.8 keV + CarbonicGas 250 eV 542 eV 67.6 keV 135 keV + ArgonCO2 250 eV 419 eV 53.7 keV 74.5 keV + NewArgonCO2 250 eV 419 eV 53.7 keV 74.5 keV + ArgonCH4 250 eV 369 eV 49.7 keV 59.1 keV + XenonMethanePropane 250 eV 1.55 keV 78.9 keV 101 keV + Galactic 250 eV 250 eV 250 eV 250 eV =================================================== # # Macro file for the initialization phase of "TestEm5.cc" @@ -173,8 +214,8 @@ Cut in energy /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 21 mum of Silicon. The transverse size (YZ) is 10 cm + 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 # @@ -202,25 +243,47 @@ phot: Total cross sections from a parametrisation. Good description from 10 KeV 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. + 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 parametrisation. Good description from 1 KeV to 100 GeV. + eIoni Minimum Delta cut in range=0.0007 mm. + + material min.delta energy(keV) + + Beryllium 6.226 + Aluminium 6.8788 + Silicon 6.3418 + liquidArgon 4.0987 + Iron 11.402 + Copper 11.941 + Gold 14.391 + Lead 9.9278 + Water 3.9978 + Air 0.25 + XenonGas 0.25 + CarbonicGas 0.25 + ArgonCO2 0.25 + NewArgonCO2 0.25 + ArgonCH4 0.25 + XenonMethanePropane 0.25 + Galactic 0.25 + +eBrem: Total cross sections from a parametrisation. Good description from 10 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). gamma energies sampled according Heitler @@ -229,51 +292,73 @@ annihil: Total cross section from Heilter formula (annihilation into 2 photons) 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 100 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. MuBrems: theoretical cross section - Good description up to 1000 TeV. - PhysicsTables from 1 GeV to 1e+03 PeV in 100 bins. + 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 TeV. - PhysicsTables from 1 GeV to 1e+03 PeV in 50 bins. + 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 1e+02 eV to 1e+02 TeV in 100 bins. + PhysicsTables from 100 eV to 100 TeV in 100 bins. + + hIoni Minimum Delta cut in range=0.0007 mm. + + material min.delta energy(keV) + + Beryllium 6.226 + Aluminium 6.8788 + Silicon 6.3418 + liquidArgon 4.0987 + Iron 11.402 + Copper 11.941 + Gold 14.391 + Lead 9.9278 + Water 3.9978 + Air 0.25 + XenonGas 0.25 + CarbonicGas 0.25 + ArgonCO2 0.25 + NewArgonCO2 0.25 + ArgonCH4 0.25 + XenonMethanePropane 0.25 + Galactic 0.25 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 150 bins. + PhysicsTables from 1 keV to 100 TeV in 100 bins. ============= The cut Energy ============================== gamma e- mu- proton neutron Cut in range 2.13 mm 7 mum 1 mm 1 mm Cut in energy - Beryllium 2.45 keV 7.99 keV 4.28 MeV 11.5 MeV - Aluminium 9.84 keV 11.8 keV 5.02 MeV 13.1 MeV - Silicon 9.94 keV 10.1 keV 4.72 MeV 12.2 MeV - liquidArgon 8.91 keV 4.82 keV 3.24 MeV 8.32 MeV - Iron 30.6 keV 47.2 keV 8.52 MeV 22 MeV - Copper 37 keV 49.6 keV 8.95 MeV 23 MeV - Gold 146 keV 65.1 keV 11.7 MeV 29.2 MeV - Lead 123 keV 46.7 keV 8.52 MeV 20.9 MeV - Water 3.99 keV 4.01 keV 3.39 MeV 8.95 MeV - Air 990 eV 990 eV 48.4 keV 83.2 keV - XenonGas 990 eV 990 eV 81.2 keV 91.9 keV - CarbonicGas 990 eV 990 eV 67.5 keV 136 keV - ArgonCO2 990 eV 990 eV 54.1 keV 73.6 keV - NewArgonCO2 990 eV 990 eV 54.1 keV 75.4 keV - ArgonCH4 990 eV 990 eV 49.6 keV 60.4 keV - XenonMethanePropane 990 eV 990 eV 78.3 keV 101 keV - Galactic 990 eV 990 eV 990 eV 990 eV + Beryllium 2.47 keV 8.08 keV 4.32 MeV 11.4 MeV + Aluminium 9.83 keV 11.9 keV 5.04 MeV 13.2 MeV + Silicon 9.89 keV 10.2 keV 4.71 MeV 12.2 MeV + liquidArgon 8.97 keV 4.88 keV 3.24 MeV 8.31 MeV + Iron 30.6 keV 47.4 keV 8.48 MeV 22 MeV + Copper 37.1 keV 49.7 keV 8.98 MeV 23.1 MeV + Gold 146 keV 65.1 keV 11.8 MeV 29.3 MeV + Lead 123 keV 46.9 keV 8.48 MeV 20.9 MeV + Water 4.03 keV 4 keV 3.4 MeV 8.98 MeV + Air 250 eV 250 eV 48.8 keV 83.6 keV + XenonGas 250 eV 250 eV 80.4 keV 93.8 keV + CarbonicGas 250 eV 250 eV 67.6 keV 135 keV + ArgonCO2 250 eV 250 eV 53.7 keV 74.5 keV + NewArgonCO2 250 eV 250 eV 53.7 keV 74.5 keV + ArgonCH4 250 eV 250 eV 49.7 keV 59.1 keV + XenonMethanePropane 250 eV 250 eV 78.9 keV 101 keV + Galactic 250 eV 250 eV 250 eV 250 eV =================================================== # /gun/particle pi+ @@ -313,104 +398,102 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 100000 - User=46s Real=52s Sys=5.5s + User=242.39s Real=259.71s Sys=14.95s ================== run summary ===================== end of Run TotNbofEvents = 100000 - mean charged track length in absorber=0.0211353 +- 1.94106e-05 mm + mean charged track length in absorber=0.0209265 +- 1.37984e-05 mm - mean energy deposit in absorber=0.00687 +- 2.37841e-05 MeV + mean energy deposit in absorber=0.00675313 +- 2.06813e-05 MeV - mean number of steps in absorber (charged) =0.04068 +- 0.000749567 + mean number of steps in absorber (charged) =0.03886 +- 0.000710985 mean number of steps in absorber (neutral) =0 +- 0 - mean number of charged secondaries = 0.03764 +- 0.000638617 + mean number of charged secondaries = 0.03646 +- 0.000624425 mean number of neutral secondaries = 0 +- 0 - mean number of e-s =0.03764 and e+s =0 + mean number of e-s =0.03646 and e+s =0 -(number) transmission coeff=1 reflection coeff=0.49968 +(number) transmission coeff=1 reflection coeff=0.49894 energy deposit distribution -#entries=100000 #underflows=0 #overflows=5913 +#entries=100000 #underflows=0 #overflows=5844 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 - 5 0.001 1 0.05 - 6 0.0012 8 0.4 - 7 0.0014 12 0.6 - 8 0.0016 53 2.65 - 9 0.0018 113 5.65 - 10 0.002 238 11.9 - 11 0.0022 415 20.75 - 12 0.0024 761 38.05 - 13 0.0026 1170 58.5 - 14 0.0028 1741 87.05 - 15 0.003 2339 116.95 - 16 0.0032 3056 152.8 - 17 0.0034 3641 182.05 - 18 0.0036 4197 209.85 - 19 0.0038 4456 222.8 - 20 0.004 4531 226.55 - 21 0.0042 4530 226.5 - 22 0.0044 4362 218.1 - 23 0.0046 4206 210.3 - 24 0.0048 4119 205.95 - 25 0.005 3752 187.6 - 26 0.0052 3718 185.9 - 27 0.0054 3478 173.9 - 28 0.0056 3218 160.9 - 29 0.0058 3080 154 - 30 0.006 2772 138.6 - 31 0.0062 2662 133.1 - 32 0.0064 2316 115.8 - 33 0.0066 2150 107.5 - 34 0.0068 1991 99.55 - 35 0.007 1850 92.5 - 36 0.0072 1727 86.35 - 37 0.0074 1519 75.95 - 38 0.0076 1411 70.55 - 39 0.0078 1258 62.9 - 40 0.008 1141 57.05 - 41 0.0082 1075 53.75 - 42 0.0084 956 47.8 - 43 0.0086 929 46.45 - 44 0.0088 800 40 - 45 0.009 762 38.1 - 46 0.0092 685 34.25 - 47 0.0094 650 32.5 - 48 0.0096 601 30.05 - 49 0.0098 576 28.8 - 50 0.01 534 26.7 - 51 0.0102 450 22.5 - 52 0.0104 422 21.1 - 53 0.0106 420 21 - 54 0.0108 383 19.15 - 55 0.011 346 17.3 - 56 0.0112 352 17.6 - 57 0.0114 292 14.6 - 58 0.0116 317 15.85 - 59 0.0118 279 13.95 - 60 0.012 287 14.35 + 5 0.001 2 0.1 + 6 0.0012 6 0.3 + 7 0.0014 19 0.95 + 8 0.0016 57 2.85 + 9 0.0018 120 6 + 10 0.002 237 11.85 + 11 0.0022 417 20.85 + 12 0.0024 766 38.3 + 13 0.0026 1182 59.1 + 14 0.0028 1809 90.45 + 15 0.003 2458 122.9 + 16 0.0032 3111 155.55 + 17 0.0034 3716 185.8 + 18 0.0036 4281 214.05 + 19 0.0038 4566 228.3 + 20 0.004 4753 237.65 + 21 0.0042 4709 235.45 + 22 0.0044 4637 231.85 + 23 0.0046 4359 217.95 + 24 0.0048 4166 208.3 + 25 0.005 3758 187.9 + 26 0.0052 3518 175.9 + 27 0.0054 3163 158.15 + 28 0.0056 3008 150.4 + 29 0.0058 2749 137.45 + 30 0.006 2525 126.25 + 31 0.0062 2355 117.75 + 32 0.0064 2151 107.55 + 33 0.0066 1966 98.3 + 34 0.0068 1854 92.7 + 35 0.007 1789 89.45 + 36 0.0072 1684 84.2 + 37 0.0074 1548 77.4 + 38 0.0076 1408 70.4 + 39 0.0078 1338 66.9 + 40 0.008 1155 57.75 + 41 0.0082 1138 56.9 + 42 0.0084 1019 50.95 + 43 0.0086 978 48.9 + 44 0.0088 842 42.1 + 45 0.009 809 40.45 + 46 0.0092 727 36.35 + 47 0.0094 667 33.35 + 48 0.0096 658 32.9 + 49 0.0098 579 28.95 + 50 0.01 531 26.55 + 51 0.0102 550 27.5 + 52 0.0104 483 24.15 + 53 0.0106 430 21.5 + 54 0.0108 403 20.15 + 55 0.011 401 20.05 + 56 0.0112 386 19.3 + 57 0.0114 320 16 + 58 0.0116 313 15.65 + 59 0.0118 307 15.35 + 60 0.012 285 14.25 61 0.0122 271 13.55 - 62 0.0124 259 12.95 - 63 0.0126 246 12.3 - 64 0.0128 202 10.1 + 62 0.0124 260 13 + 63 0.0126 231 11.55 + 64 0.0128 227 11.35 - Emp = 0.004 width= 0.0034 MeV + Emp = 0.004 width= 0.003 MeV --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 834154625, 1903261884 + Current couple of seeds = 1546919864, 265575626 ---------------------------------------- # -Graphics systems deleted. -VisManager deleting. G4 kernel has come to Quit state. Deletion of G4 kernel class start. UserDetectorConstruction deleted. diff --git a/examples/extended/electromagnetic/TestEm5/geant3/README b/examples/extended/electromagnetic/TestEm5/geant3/README index 3d610e3004..c683873206 100644 --- a/examples/extended/electromagnetic/TestEm5/geant3/README +++ b/examples/extended/electromagnetic/TestEm5/geant3/README @@ -1,5 +1,5 @@ - testem5.cra is the geant3 equivalent of TestEm5 + testem5 is the geant3 equivalent of TestEm5 % cd geant3 % gmakeB to make an executable (Batch version) @@ -8,7 +8,7 @@ To execute: % cd geant3 - % $G4SYSTEM/testem5.xb (for batch) + % $G4SYSTEM/testem5.xb (for batch) or testem5.xt (for interactive) The program will ask: G3 > gives the filename of the data cards to be read: @@ -17,7 +17,7 @@ data cards: most of the data cards used in runxx.dat are ---------- standard data cards of GEANT3, but some of them - are defined in testem5.cra. These latter cards are: + are defined in testem5. These latter cards are: KEY VARIABLE/type Short description @@ -41,5 +41,5 @@ in GEANT3 . materials: the materials used in this test are defined in - --------- testem5.cra with materialnumbers 21 - 30 (see testem5.cra). -~ + --------- ugeom.F with material numbers 21 - 30 + diff --git a/examples/extended/electromagnetic/TestEm5/geant3/gmakeB b/examples/extended/electromagnetic/TestEm5/geant3/gmakeB index 0f72e213a4..91e4c6bd10 100755 --- a/examples/extended/electromagnetic/TestEm5/geant3/gmakeB +++ b/examples/extended/electromagnetic/TestEm5/geant3/gmakeB @@ -4,26 +4,15 @@ set name=testem5 set extnam=" " -if ($G4SYSTEM == AIX-xlC) set extnam=-qextname +if ($G4SYSTEM == AIX-AFS) set extnam=-qextname # mkdir $G4SYSTEM cd $G4SYSTEM # -# Run patchy -# -cat > temp.cra << eocra -+USE,batch. -eocra -cat ../$name.cra >> temp.cra -# -ypatchy - $name temp $name - $name :go -rm temp.cra -# # fortran compilation # -fsplit $name.f -rm $name.f -hepf77 $extnam -c -g *.f +hepf77 $extnam -c -g -Dbatch -I/cern/pro/include -I../include ../src/*.F + # # Link # @@ -37,7 +26,7 @@ chmod +x $name.xb # # cleanup # -rm *.lis *.lst *.f *.o +rm *.o echo 'done' exit diff --git a/examples/extended/electromagnetic/TestEm5/geant3/gmakeT b/examples/extended/electromagnetic/TestEm5/geant3/gmakeT index 6d427c3a27..98082878dc 100755 --- a/examples/extended/electromagnetic/TestEm5/geant3/gmakeT +++ b/examples/extended/electromagnetic/TestEm5/geant3/gmakeT @@ -4,20 +4,14 @@ set name=testem5 set extnam=" " -if ($G4SYSTEM == AIX-xlC) set extnam=-qextname +if ($G4SYSTEM == AIX-AFS) set extnam=-qextname # mkdir $G4SYSTEM cd $G4SYSTEM # -# Run patchy -# -ypatchy - $name ../$name $name - $name :go -# # fortran compilation # -fsplit $name.f -rm $name.f -hepf77 $extnam -c -g *.f +hepf77 $extnam -c -g -I/cern/pro/include -I../include ../src/*.F # # Link # @@ -31,7 +25,7 @@ chmod +x $name.xt # # cleanup # -rm *.lis *.lst *.f *.o +rm *.o echo 'done' exit diff --git a/examples/extended/electromagnetic/TestEm5/geant3/include/edepo.inc b/examples/extended/electromagnetic/TestEm5/geant3/include/edepo.inc new file mode 100644 index 0000000000..90f53c3d28 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm5/geant3/include/edepo.inc @@ -0,0 +1,18 @@ + + COMMON/EDEPO/EDEP,SEDEP,SEDEP2 + + ,DEEM,STMA,STMI,RMAX + + ,anbstep,sstep,s2step,anch,anne + + ,anele,anpos,sanele,sanpos + + ,sanch,sanch2,sanne,sanne2 + + ,tra,ref,stra,sref + + ,nth0 + + ,NHI1,HIS1(2),NHI2 ,HIS2(2),NHI3,HIS3(2),NHI4,HIS4(2) + + ,NHI5,HIS5(2),NHI6 ,HIS6(2),NHI7,HIS7(2),NHI8,HIS8(2) + + ,NHI9,HIS9(2),NHI10,HIS10(2) + COMMON/PLOTS/NAME + CHARACTER*25 NAME + COMMON/GEOMAT/MATWLD,XWORLD,YZWORL,FieldW, + + MATABS,XABSOR,YZABSO,FieldA, + + XPOSAB,X1ABSO,X2ABSO, + + XVERT ,YVERT ,ZVERT + diff --git a/examples/extended/electromagnetic/TestEm5/geant3/run55.dat b/examples/extended/electromagnetic/TestEm5/geant3/run55.dat new file mode 100644 index 0000000000..8f0a1b6b9e --- /dev/null +++ b/examples/extended/electromagnetic/TestEm5/geant3/run55.dat @@ -0,0 +1,17 @@ +FILE 1000gev.1mm.paw +LIST +ABSOR 25 (iron) 200. (thicknX) 200. (sizeYZ) 0. (field) +KINE 5 (muon) 1000. (Ekine) 90.0 (teta) 0.0 (phi) +TRIG 1000 +DEBUG 1 0 10 +SWIT 0 (draw) +LOSS 1 +HADR 0 +ABAN 0 +CUTS 10.0e-6 (cutgam) 10.0e-6 (cutele) 3*10.e-3 (cutneu/had/muo) +C 2*10.0e+3 (bcute/m) 2*10.0e+3 (dcute/m) 10.0e+3 (ppcutm) + 2*21.0e-6 (bcute/m) 2*1.3e-3 (dcute/m) 10.0e-3 (ppcutm) +HIS2 50 0. 50.e+3 +HIS5 50 950.e+3 1000.e+3 +TIME 2=3. +END diff --git a/examples/extended/electromagnetic/TestEm5/geant3/src/grun.F b/examples/extended/electromagnetic/TestEm5/geant3/src/grun.F new file mode 100644 index 0000000000..b52820ca56 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm5/geant3/src/grun.F @@ -0,0 +1,63 @@ + + SUBROUTINE GRUN +*. +*. ****************************************************************** +*. * * +*. * Steering routine to process all the events * +*. * * +*. * ==>Called by : , main program * +*. * Author R.Brun ********* * +*. * * +*. ****************************************************************** +*. + +#include "geant321/gcbank.inc" +#include "geant321/gcunit.inc" +#include "geant321/gcflag.inc" +#include "geant321/gctime.inc" + + SAVE IFIRST + DATA IFIRST/0/ +*. +*. ------------------------------------------------------------------ +*. +* Keep starting time +* + IF(IFIRST.EQ.0)THEN + IFIRST=1 + CALL TIMEL(TIMINT) + ENDIF +* + 10 IF(IEVENT.LT.NEVENT) THEN + IEVENT=IEVENT+1 +* +* Initialises event partition +* + CALL GTRIGI +* +* Process one event (trigger) +* + CALL GTRIG +* +* Clear event partition +* + CALL GTRIGC +* + IF(IEORUN.EQ.0) THEN +* +* Check time left +* + go to 10 + IF(ITIME.LE.0)GO TO 10 + IF(MOD(IEVENT,ITIME).NE.0)GO TO 10 + CALL TIMEL(TIMNOW) + IF(TIMNOW.GT.TIMEND)GO TO 10 + WRITE(CHMAIL,10000)TIMEND + CALL GMAIL(0,2) + IEORUN = 1 + ENDIF + ENDIF +* +10000 FORMAT(5X,'***** THE JOB STOPS NOW BECAUSE THE TIME LEFT IS LESS', + +' THAN ',F8.3,' SECONDS *****') + END diff --git a/examples/extended/electromagnetic/TestEm5/geant3/src/gukine.F b/examples/extended/electromagnetic/TestEm5/geant3/src/gukine.F new file mode 100644 index 0000000000..c48b0811d7 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm5/geant3/src/gukine.F @@ -0,0 +1,43 @@ + + SUBROUTINE GUKINE +C +#include "geant321/gcbank.inc" +#include "geant321/gcflag.inc" +#include "geant321/gconst.inc" +#include "geant321/gckine.inc" +#include "edepo.inc" +C + DIMENSION VERTEX(3),PLAB(3) +C + VERTEX(1)=XVERT + VERTEX(2)=YVERT + VERTEX(3)=ZVERT + CALL GSVERT(VERTEX,0,0,0,0,NVERT) +* + JPA = LQ(JPART-IKINE) + XMASS = Q(JPA+7) + PMOM = SQRT(PKINE(1)*(PKINE(1)+2*XMASS)) + THETA = PKINE(2)*DEGRAD + PHI = PKINE(3)*DEGRAD +C + PLAB(1)=PMOM*SIN(THETA)*COS(PHI) + PLAB(2)=PMOM*SIN(THETA)*SIN(PHI) + PLAB(3)=PMOM*COS(THETA) +C + CALL GSKINE(PLAB,IKINE,NVERT,0,0,NT) +* +* *** Kinematics debug + IF (IEVENT.EQ.1.OR.IDEBUG.NE.0) CALL GPRINT('KINE',0) +C +* +* *** initialisation per event + anbstep=1.e-6 + anch=0. + anne=0. + anele=0. + anpos=0. + EDEP=0. + tra=0. + ref=0. +* + END diff --git a/examples/extended/electromagnetic/TestEm5/geant3/src/guout.F b/examples/extended/electromagnetic/TestEm5/geant3/src/guout.F new file mode 100644 index 0000000000..7291732310 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm5/geant3/src/guout.F @@ -0,0 +1,38 @@ + + SUBROUTINE GUOUT +C + +#include "geant321/gcbank.inc" +#include "geant321/gcunit.inc" +#include "geant321/gcflag.inc" +#include "geant321/gconst.inc" +#include "edepo.inc" +* + dimension runerr(2) +* *** drawing +* +#ifndef batch + IF (ISWIT(1).NE.0) THEN + CALL GDHEAD (110110,'TestEm5',0.) + CALL GDSHOW (3) + CALL GDXYZ (0) + END IF +#endif +* + call hfill(1,anbstep,0.,1.) + sstep=sstep+anbstep + s2step=s2step+anbstep*anbstep + sanch = sanch+anch + sanch2=sanch2+anch*anch + sanne = sanne+anne + sanne2=sanne2+anne*anne + sanele=sanele+anele + sanpos=sanpos+anpos + SEDEP=SEDEP+EDEP + SEDEP2=SEDEP2+EDEP**2 + stra=stra+tra + sref=sref+ref + eein=1000.*EDEP + CALL HFILL(2,eein,0.,1.0) +C + END diff --git a/examples/extended/electromagnetic/TestEm5/geant3/src/gustep.F b/examples/extended/electromagnetic/TestEm5/geant3/src/gustep.F new file mode 100644 index 0000000000..c4aedb4073 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm5/geant3/src/gustep.F @@ -0,0 +1,153 @@ + + SUBROUTINE GUSTEP +C + +#include "geant321/gcbank.inc" +#include "geant321/gctmed.inc" +#include "geant321/gckine.inc" +#include "geant321/gcking.inc" +#include "geant321/gcflag.inc" +#include "geant321/gctrak.inc" +#include "geant321/gcvolu.inc" +#include "geant321/gccuts.inc" +#include "geant321/gconst.inc" +#include "geant321/gcunit.inc" +#include "edepo.inc" +C + parameter ( facdeg=180./3.1415927 ) + DATA IEVOLD/0/ + +* +* +* *** Debug event and store tracks for drawing + IF (IDEBUG.NE.0) CALL GPCXYZ + IF ((ISWIT(1).EQ.1).AND.(CHARGE.NE.0.)) CALL GSXYZ + IF (ISWIT(1).EQ.2) CALL GSXYZ +* +* + IF(IEVOLD.NE.IEVENT) THEN + IEVOLD=IEVENT + ITOLD=0 + NMOLD=0 + XO=VERT(1) + RO=sqrt(vect(2)**2+vect(3)**2) + ENDIF +C +C TRACK FLAG +C + ITFL=ISTAK+10000*ITRA+100000*IVERT + IF(ITOLD.NE.IEVENT) THEN + XO=VERT(1) + RO=sqrt(vect(2)**2+vect(3)**2) + ENDIF +C + X=VECT(1) +C + IF(NGKINE.GT.0) THEN + do 10 i=1,ngkine + itypa=gkin(5,i) +* all the charged secondaries + if(itypa.ne.1) call hfill(9,10.*GPOS(1,i),0.,1.) +* in absorber only ! + if(NUMED.EQ.1) then + if(itypa.eq.1) then + anne=anne+1. + else + anch=anch+1. + if(itypa.eq.2) anpos=anpos+1. + if(itypa.eq.3) anele=anele+1. + tsec=1000.*(GKIN(4,i)-510.999e-6) + call hfill(8,tsec,0.,1.) + endif + endif +10 continue + CALL GSKING(0) + ENDIF +* + R=SQRT(VECT(2)**2+VECT(3)**2) + if((r.le.YZABSO).and.(xo.lt.X2ABSO).and.(x.ge.X2ABSO)) then + if(vect(4).gt.0.) then + if(ipart.eq.1) call hfill(10,log10(1000.*gekin),0.,1.) + if(ipart.eq.ikine) then + tra=1. +* + call hfill(5,1000.*gekin,0.,1.) + + if((1-vect(4)).gt.1.e-6) then + theta=acos(vect(4)) + else + theta=sqrt(2.*(1.-vect(4))) + endif + if(nhi3.gt.0) then + h1=his3(1)/facdeg + h2=his3(2)/facdeg + dth=(h2-h1)/float(nhi3) + ibin=int((theta-h1)/dth)+1 + if((ibin.le.0).or.(ibin.gt.nhi3)) then + w=1. + else + th=ibin*dth + if(theta.GT.0.001*dth) then + w=PI/(64800.*dth*sin(theta)) + else + nth0=nth0+1 + if(nth0.le.10) then + thdeg=theta*facdeg + write(6,997) thdeg +997 format('theta<0.001*dth (from plot excluded)' + + ,' theta=',e12.4,' deg') + endif + w=0. + endif + endif + theta = facdeg*theta + call hfill(3,theta,0.,w) + endif + call hfill(4,10.*R,0.,1.) + endif + endif + endif + if((r.le.YZABSO).and.(xo.gt.X1ABSO).and.(x.le.X1ABSO)) then + if(vect(4).lt.0.) then + if(ipart.eq.ikine) then + ref=1. + call hfill(7,1000.*gekin,0.,1.) + if((1.+vect(4)).gt.1.e-6) then + theta=acos(vect(4))-PIBY2 + else + theta=sqrt(2.*(1.+vect(4))) + endif + if(nhi6.gt.0) then + h1=his6(1)/facdeg + h2=his6(2)/facdeg + dth=(h2-h1)/float(nhi6) + ibin=int((theta-h1)/dth)+1 + if((ibin.le.0).or.(ibin.gt.nhi6)) then + w=0. + else + th=ibin*dth + if(theta.GT.0.001*dth) then + w=PI/(64800.*dth*sin(theta)) + else + thdeg=theta*facdeg + write(6,997) thdeg + w=0. + endif + theta = facdeg*theta + call hfill(6,theta,0.,w) + endif + endif + endif + endif + endif + + IF(NUMED.EQ.1) THEN + anbstep=anbstep+1. + EDEP = EDEP+DESTEP + ENDIF +C + ITOLD=IEVENT + XO=X + RO=R +C + END diff --git a/examples/extended/electromagnetic/TestEm5/geant3/src/main.F b/examples/extended/electromagnetic/TestEm5/geant3/src/main.F new file mode 100644 index 0000000000..a4a325c761 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm5/geant3/src/main.F @@ -0,0 +1,64 @@ + +#ifdef batch + + PROGRAM main + + PARAMETER (NG=200000,NH=10000) + COMMON/GCBANK/Q(NG) + COMMON/PAWC/H(NH) +C ALLOCATE MEMORY FOR ZEBRA/HBOOK +C + CALL GZEBRA(NG) + CALL HLIMIT(-NH) +C + CALL HPLINT(0) +C +C INITIALISATION +C + CALL UGINIT +C +C PROCESSING +C + CALL GRUN +C +C TERMINATION +C + CALL UGLAST +C + STOP + END + +#else + + PROGRAM main +* +* GEANT main program. To link with the MOTIF user interface +* the routine GPAWPP(NWGEAN,NWPAW) should be called, whereas +* the routine GPAW(NWGEAN,NWPAW) gives access to the basic +* graphics version. +* + PARAMETER (NWGEAN=3000000, NWPAW=1000000) + COMMON/GCBANK/GEANT(NWGEAN) + COMMON/PAWC /PAW (NWPAW) +* +* + CALL GPAW (NWGEAN,NWPAW) +* + END +* + SUBROUTINE qnext + END +* + SUBROUTINE czopen + END +* + SUBROUTINE cztcp + END +* + SUBROUTINE czclos + END +* + SUBROUTINE czputa + END + +#endif diff --git a/examples/extended/electromagnetic/TestEm5/geant3/src/ugeom.F b/examples/extended/electromagnetic/TestEm5/geant3/src/ugeom.F new file mode 100644 index 0000000000..14ad7e17bb --- /dev/null +++ b/examples/extended/electromagnetic/TestEm5/geant3/src/ugeom.F @@ -0,0 +1,106 @@ + + SUBROUTINE UGEOM +C +#include "geant321/gcbank.inc" +#include "geant321/gcunit.inc" +#include "geant321/gctrak.inc" +#include "geant321/gckine.inc" +#include "edepo.inc" +C + DIMENSION AWAT(2),ZWAT(2),WWAT(2) + DIMENSION AAIR(2),ZAIR(2),WAIR(2) + DIMENSION PALL(3),PVOL(3) +C +C COMPOUND/MIXTURE PARAMETERS +C + DATA AWAT/1.01,16.00/ + DATA ZWAT/1.,8./ + DATA WWAT/2.,1./ + DATA AAIR/14.01,16.00/ + DATA ZAIR/7.,8./ + DATA WAIR/0.7,0.3/ +C +C DEFINE MATERIALS +C + CALL GSMATE(21,'BERYLLIUM',9.010,4.,1.848,35.30,0.,0,0) + CALL GSMATE(22,'ALUMINIUM',26.98,13.,2.70,8.900,0.,0,0) + CALL GSMATE(23,'SILICON',28.09,14.,2.33,9.36,45.49,0,0) + CALL GSMATE(24,'LIQUID ARGON',39.95,18.,1.4,14.,83.71,0,0) + CALL GSMATE(25,'IRON',55.85,26.,7.87,1.760,0.,0,0) + CALL GSMATE(26,'COPPER',63.54,29.,8.96,1.430,0.,0,0) + CALL GSMATE(27,'GOLD',196.967,79.,19.32,0.33,0.,0,0) + CALL GSMATE(28,'LEAD',207.190,82.,11.35,0.560,0.,0,0) + CALL GSMATE(31,'XenonGas',131.29,54.,5.858e-3,1447.8,0.,0,0) +C + CALL GSMIXT(29,'WATER',AWAT,ZWAT,1.00,-2,WWAT) + CALL GSMIXT(30,'AIR',AAIR,ZAIR,1.205E-3,+2,WAIR) +C +C DEFINE MEDIA +C + IFIELD=0 + if (FieldW.ne.0.) IFIELD=3 + FIELDM=10*FieldW +* + TMAXFD=10. + STEMAX=1.E+10 + DEEMAX=0.20 + EPSIL=0.0001 + STMIN=0.0010 +C + CALL GSTMED(99,'WORLD',MATWLD,0,IFIELD, + * FIELDM,TMAXFD,STEMAX,DEEMAX,EPSIL,STMIN,0,0) +C + + IFIELD=0 + if (FieldA.ne.0.) IFIELD=3 + FIELDM=10*FieldA +* + IF(IGAUTO.LE.0) THEN + DEEMAX=DEEM + STMIN =STMI + STEMAX=STMA + ENDIF + CALL GSTMED(1,'ABSORBER',MATABS,0,IFIELD, + * FIELDM,TMAXFD,STEMAX,DEEMAX,EPSIL,STMIN,0,0) +C +C +C DEFINE VOLUMES (WORLD+ABSORBER) +* + if(XWORLD*YZWORL.le.0.) then + XWORLD=1.5*XABSOR + YZWORL=1.2*YZABSO + endif +* + PALL(1)=0.5*XWORLD + PALL(2)=0.5*YZWORL + PALL(3)=0.5*YZWORL + CALL GSVOLU('worl','BOX ',99,PALL,3,IVOL) +C + PVOL(1)=0.5*XABSOR + PVOL(2)=0.5*YZABSO + PVOL(3)=0.5*YZABSO + CALL GSVOLU('abso','BOX ', 1,PVOL,3,IVOL) +C +C BUILD GEOMETRY +C + CALL GSPOS('abso',1,'worl',XPOSAB,0.,0.,0,'ONLY') +* +* *** Close geometry banks. (mandatory system routine) + CALL GGCLOS +* +* +* *** dessin + CALL GSATT ('*','SEEN',1) +* + DO IX = 1,3 + CALL GDOPEN (IX) + SCALE = 18./max(XWORLD,YZWORL) + PAXIS = 0. + SAXIS = 0.1*max(XWORLD,YZWORL) + CALL GDRAWC ('worl',IX,0.,10.,9.3,SCALE,SCALE) + CALL GDAXIS (PAXIS,PAXIS,PAXIS,SAXIS) + CALL GDSCAL (10., 0.3) + CALL GDCLOS + END DO +* + END diff --git a/examples/extended/electromagnetic/TestEm5/geant3/src/uginit.F b/examples/extended/electromagnetic/TestEm5/geant3/src/uginit.F new file mode 100644 index 0000000000..4ee71ab8c1 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm5/geant3/src/uginit.F @@ -0,0 +1,126 @@ + + SUBROUTINE UGINIT +C +#include "geant321/gcunit.inc" +#include "geant321/gclist.inc" +#include "geant321/gckine.inc" +#include "edepo.inc" + + CHARACTER*25 filnam + CHARACTER*25 HF + CHARACTER*4 KEY + CHARACTER*2 SPACES + DATA HF/'testem5.paw'/ +C +C INITIALIZE GEANT STRUCTURES +C + CALL GINIT +* +C default values (materials,sizes) +* + MATABS = 23 + XABSOR = 1. + YZABSO = 2. + FieldA = 0. +* + MATWLD = 30 + XWORLD = 0. + YZWORL = 0. + FieldW = 0. +* + XPOSAB = 0. +* + XVERT = -1000. + YVERT = 0. + ZVERT = 0. +* + NAME=HF +C +C DEFINE DATA CARDS +C + CALL FFKEY('WORLD',MATWLD,4,'mixed') + CALL FFKEY('ABSOR',MATABS,4,'mixed') + CALL FFKEY('XPOS' ,XPOSAB,1,'real') + CALL FFKEY('VERT' ,XVERT ,3,'real') +* + CALL FFKEY('HIS1',NHI1 ,3,'mixed') + CALL FFKEY('HIS2',NHI2 ,3,'mixed') + CALL FFKEY('HIS3',NHI3 ,3,'mixed') + CALL FFKEY('HIS4',NHI4 ,3,'mixed') + CALL FFKEY('HIS5',NHI5 ,3,'mixed') + CALL FFKEY('HIS6',NHI6 ,3,'mixed') + CALL FFKEY('HIS7',NHI7 ,3,'mixed') + CALL FFKEY('HIS8',NHI8 ,3,'mixed') + CALL FFKEY('HIS9',NHI9 ,3,'mixed') + CALL FFKEY('HI10',NHI10,3,'mixed') +* + CALL FFKEY('DEEM',DEEM, 1,'REAL') + CALL FFKEY('STMA',STMA, 1,'REAL') + CALL FFKEY('STMI',STMI, 1,'REAL') +* +* *** read data cards + PRINT *, 'G3 > gives the filename of the data cards to be read:' + READ (*,'(A)') filnam + IF (filnam.EQ.' ') filnam = 'run01.dat' + OPEN (unit=5,file=filnam,status='unknown',form='formatted') +* +* filename should be 1st data card ! + READ(5,98)KEY,SPACES,NAME +98 FORMAT(A4,A2,A25) +* + CALL GFFGO +* + write(6,99) NAME +99 FORMAT(/,15x,'histogram file --> NAME:',A25) +C +C INITIALIZE ZEBRA STRUCTURES +C + CALL GZINIT +C +C DEFINE STANDARD PARTICLES AND MATERIALS +C + CALL GPART + CALL GMATE +* + CALL GDINIT +C +C DEFINE GEOMETRY +C + CALL UGEOM +C +C COMPUTE CROSS SECTIONS/ENERGY LOSSES +C + CALL GPHYSI +C +C PRINT MATERIALS,MEDIA,VOLUMES +C + CALL GPRINT('MATE',0) + CALL GPRINT('TMED',0) + CALL GPRINT('VOLU',0) +C +C DEFINE HISTOGRAMS +C + CALL UHINIT +C +C SOME MORE INITIALISATION +C + SEDEP=0. + SEDEP2=0. + sanch=0. + sanch2=0. + sanne=0. + sanne2=0. + sanele=0. + sanpos=0. + sstep=0. + s2step=0. + stra=0. + sref=0. + nth0=0 +* + X1ABSO = XPOSAB-0.5*XABSOR + X2ABSO = XPOSAB+0.5*XABSOR +* + if(xvert.le.-1000.) XVERT=-0.5*XWORLD +* + END diff --git a/examples/extended/electromagnetic/TestEm5/geant3/src/uglast.F b/examples/extended/electromagnetic/TestEm5/geant3/src/uglast.F new file mode 100644 index 0000000000..a816437d44 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm5/geant3/src/uglast.F @@ -0,0 +1,61 @@ + + SUBROUTINE UGLAST +C +#include "geant321/gcbank.inc" +#include "geant321/gcunit.inc" +#include "geant321/gcflag.inc" +#include "geant321/gconst.inc" +#include "geant321/gckine.inc" +#include "edepo.inc" +C + CALL GLAST +C + IF(IEVENT.GT.0) THEN + AEV=FLOAT(IEVENT) + SEDEP=SEDEP/AEV + SE2=SEDEP2/AEV-SEDEP**2 + SEDEP2=0. + IF(SE2.GT.0.) SEDEP2=SQRT(SE2/AEV) +* + WRITE(CHMAIL,1002)SEDEP,SEDEP2 + CALL GMAIL(0,0) + sstep=sstep/aev + s2step=s2step/aev-sstep*sstep + sigst=0. + if(s2step.gt.0.) sigst=sqrt(s2step/aev) + write(6,122)sstep,sigst +122 format(/,' mean number of steps=',f15.3,' +- ',f15.3) + sanch=sanch/aev + sigch2=sanch2/aev-sanch*sanch + sigch=0. + if(sigch2.gt.0.) sigch=sqrt(sigch2/aev) + sanne=sanne/aev + signe2=sanne2/aev-sanne*sanne + signe=0. + if(signe2.gt.0.) signe=sqrt(signe2/aev) + write(6,123) sanch,sigch,sanne,signe +123 format(/,' mean nb of charged secondaries=',f15.4,' +- ',f15.4, + + /,' mean nb of neutral secondaries=',f15.4,' +- ',f15.4) + sanele=sanele/aev + sanpos=sanpos/aev + write(6,124)sanele,sanpos +124 format(/,' mean nb of e-s = ',f15.4,' and e+s=',f15.4) + stra=stra/aev + sref=sref/aev + write(6,125)stra,sref +125 format(/,' (number) transmission coeff=',e12.4, + + ' reflexion coeff=',e12.4) + write(6,126) nth0 +126 format(/,' nb of (theta<0.001*bin) events=',i6) +* +CCC CALL HISTDO +* + CALL HPLEND +* + CALL HRPUT(0,NAME,'N') +C + ENDIF +C +1002 FORMAT(5X,'energy deposit=',E12.4,' +- ',E12.4) +C + END diff --git a/examples/extended/electromagnetic/TestEm5/geant3/src/uhinit.F b/examples/extended/electromagnetic/TestEm5/geant3/src/uhinit.F new file mode 100644 index 0000000000..18e0a31f91 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm5/geant3/src/uhinit.F @@ -0,0 +1,52 @@ + + SUBROUTINE UHINIT +C +#include "geant321/gcbank.inc" +#include "geant321/gckine.inc" +#include "edepo.inc" +C + IF(NHI1.GT.0) THEN + CALL HBOOK1(1,'number of steps/event' + + ,NHI1,HIS1(1),HIS1(2),0.) + ENDIF + IF(NHI2.GT.0) THEN + CALL HBOOK1(2,'energy deposit in absorber (MeV)' + + ,NHI2,HIS2(1),HIS2(2),0.) + ENDIF + IF(NHI3.GT.0) THEN + CALL HBOOK1(3,'angle distribution at exit(deg)' + + ,NHI3,HIS3(1),HIS3(2),0.) + ENDIF + IF(NHI4.GT.0) THEN + CALL HBOOK1(4,'lateral distribution at exit(mm)' + + ,NHI4,HIS4(1),HIS4(2),0.) + ENDIF + IF(NHI5.GT.0) THEN + CALL HBOOK1(5,'kinetic energy of the primary at exit(MeV)' + + ,NHI5,HIS5(1),HIS5(2),0.) + ENDIF + IF(NHI6.GT.0) THEN + CALL HBOOK1(6,'angle distr. of backscattered primaries(deg)' + + ,NHI6,HIS6(1),HIS6(2),0.) + ENDIF + IF(NHI7.GT.0) THEN + CALL HBOOK1(7,'kinetic energy of backscattered primaries(deg)' + + ,NHI7,HIS7(1),HIS7(2),0.) + ENDIF + IF(NHI8.GT.0) THEN + CALL HBOOK1(8,'kinetic energy of the charged secondaries(deg)' + + ,NHI8,HIS8(1),HIS8(2),0.) + ENDIF + IF(NHI9.GT.0) THEN + CALL HBOOK1(9,'z of secondary charged vertices (mm)' + + ,NHI9,HIS9(1),HIS9(2),0.) + ENDIF + IF(NHI10.GT.0) THEN + CALL HBOOK1(10,'energy of gammas escaping the absorber(MeV)' +* + ,NHI10,HIS10(1),HIS10(2),0.) + + ,NHI10,log10(HIS10(1)),log10(HIS10(2)),0.) + ENDIF +* + CALL HIDOPT(0,'STAT') +* + END diff --git a/examples/extended/electromagnetic/TestEm5/geant3/testem5.cra b/examples/extended/electromagnetic/TestEm5/geant3/testem5.cra deleted file mode 100644 index 7e90b6569b..0000000000 --- a/examples/extended/electromagnetic/TestEm5/geant3/testem5.cra +++ /dev/null @@ -1,759 +0,0 @@ -+OPT,MAPASM. -+ASM,23. -+USE,GCDES. -+USE,P=TESTEM5,T=EXE. -+EXE,CRA*. -+PAM,11,T=CARD,T=ATTACH. /cern/pro/src/car/geant321.car -+PATCH,TESTEM5. -+DECK,BLANKDECK. -* -* TestEm5 1.00 /01 980918 13.00 GEANT EXAMPLES -* -* TEST PROGRAM FOR GEANT TEST -* -* Author L.Urban ********* -* -* -* History -* ------- -* -* -+KEEP,EDEPO. - COMMON/EDEPO/EDEP,SEDEP,SEDEP2 - + ,DEEM,STMA,STMI,RMAX - + ,anbstep,sstep,s2step,anch,anne - + ,anele,anpos,sanele,sanpos - + ,sanch,sanch2,sanne,sanne2 - + ,tra,ref,stra,sref - + ,nth0 - + ,NHI1,HIS1(2),NHI2 ,HIS2(2),NHI3,HIS3(2),NHI4,HIS4(2) - + ,NHI5,HIS5(2),NHI6 ,HIS6(2),NHI7,HIS7(2),NHI8,HIS8(2) - + ,NHI9,HIS9(2),NHI10,HIS10(2) - COMMON/PLOTS/NAME - CHARACTER*25 NAME - COMMON/GEOMAT/MATWLD,XWORLD,YZWORL,FieldW, - + MATABS,XABSOR,YZABSO,FieldA, - + XPOSAB,X1ABSO,X2ABSO, - + XVERT ,YVERT ,ZVERT - -+DECK,main,if=batch. - PROGRAM main - - PARAMETER (NG=200000,NH=10000) - COMMON/GCBANK/Q(NG) - COMMON/PAWC/H(NH) -C ALLOCATE MEMORY FOR ZEBRA/HBOOK -C - CALL GZEBRA(NG) - CALL HLIMIT(-NH) -C - CALL HPLINT(0) -C -C INITIALISATION -C - CALL UGINIT -C -C PROCESSING -C - CALL GRUN -C -C TERMINATION -C - CALL UGLAST -C - STOP - END -+DECK,main,IF=-batch. - PROGRAM main -* -* GEANT main program. To link with the MOTIF user interface -* the routine GPAWPP(NWGEAN,NWPAW) should be called, whereas -* the routine GPAW(NWGEAN,NWPAW) gives access to the basic -* graphics version. -* - PARAMETER (NWGEAN=3000000, NWPAW=1000000) - COMMON/GCBANK/GEANT(NWGEAN) - COMMON/PAWC /PAW (NWPAW) -* -* - CALL GPAW (NWGEAN,NWPAW) -* - END -* - SUBROUTINE qnext - END -* - SUBROUTINE czopen - END -* - SUBROUTINE cztcp - END -* - SUBROUTINE czclos - END -* - SUBROUTINE czputa - END -+DECK,UGINIT. - SUBROUTINE UGINIT -C -+SEQ,GCUNIT -+SEQ,GCLIST -+SEQ,GCKINE -+SEQ,EDEPO - CHARACTER*25 filnam - CHARACTER*25 HF - CHARACTER*4 KEY - CHARACTER*2 SPACES - DATA HF/'testem5.histo'/ -C -C INITIALIZE GEANT STRUCTURES -C - CALL GINIT -* -C default values (materials,sizes) -* - MATABS = 23 - XABSOR = 1. - YZABSO = 2. - FieldA = 0. -* - MATWLD = 30 - XWORLD = 0. - YZWORL = 0. - FieldW = 0. -* - XPOSAB = 0. -* - XVERT = -1000. - YVERT = 0. - ZVERT = 0. -* - NAME=HF -C -C DEFINE DATA CARDS -C - CALL FFKEY('WORLD',MATWLD,4,'mixed') - CALL FFKEY('ABSOR',MATABS,4,'mixed') - CALL FFKEY('XPOS' ,XPOSAB,1,'real') - CALL FFKEY('VERT' ,XVERT ,3,'real') -* - CALL FFKEY('HIS1',NHI1 ,3,'mixed') - CALL FFKEY('HIS2',NHI2 ,3,'mixed') - CALL FFKEY('HIS3',NHI3 ,3,'mixed') - CALL FFKEY('HIS4',NHI4 ,3,'mixed') - CALL FFKEY('HIS5',NHI5 ,3,'mixed') - CALL FFKEY('HIS6',NHI6 ,3,'mixed') - CALL FFKEY('HIS7',NHI7 ,3,'mixed') - CALL FFKEY('HIS8',NHI8 ,3,'mixed') - CALL FFKEY('HIS9',NHI9 ,3,'mixed') - CALL FFKEY('HI10',NHI10,3,'mixed') -* - CALL FFKEY('DEEM',DEEM, 1,'REAL') - CALL FFKEY('STMA',STMA, 1,'REAL') - CALL FFKEY('STMI',STMI, 1,'REAL') -* -* *** read data cards - PRINT *, 'G3 > gives the filename of the data cards to be read:' - READ (*,'(A)') filnam - IF (filnam.EQ.' ') filnam = 'testem5.dat' - OPEN (unit=5,file=filnam,status='unknown',form='formatted') -* -* filename should be 1st data card ! - READ(5,98)KEY,SPACES,NAME -98 FORMAT(A4,A2,A25) -* - CALL GFFGO -* - write(6,99) NAME -99 FORMAT(/,15x,'histogram file --> NAME:',A25) -C -C INITIALIZE ZEBRA STRUCTURES -C - CALL GZINIT -C -C DEFINE STANDARD PARTICLES AND MATERIALS -C - CALL GPART - CALL GMATE -* - CALL GDINIT -C -C DEFINE GEOMETRY -C - CALL UGEOM -C -C COMPUTE CROSS SECTIONS/ENERGY LOSSES -C - CALL GPHYSI -C -C PRINT MATERIALS,MEDIA,VOLUMES -C - CALL GPRINT('MATE',0) - CALL GPRINT('TMED',0) - CALL GPRINT('VOLU',0) -C -C DEFINE HISTOGRAMS -C - CALL UHINIT -C -C SOME MORE INITIALISATION -C - SEDEP=0. - SEDEP2=0. - sanch=0. - sanch2=0. - sanne=0. - sanne2=0. - sanele=0. - sanpos=0. - sstep=0. - s2step=0. - stra=0. - sref=0. - nth0=0 -* - X1ABSO = XPOSAB-0.5*XABSOR - X2ABSO = XPOSAB+0.5*XABSOR -* - if(xvert.le.-1000.) XVERT=-0.5*XWORLD -* - END -+DECK,UGEOM. - SUBROUTINE UGEOM -C -+SEQ,GCBANK -+SEQ,GCKINE -+SEQ,GCUNIT -+SEQ,GCTRAK -+SEQ,EDEPO -C - DIMENSION AWAT(2),ZWAT(2),WWAT(2) - DIMENSION AAIR(2),ZAIR(2),WAIR(2) - DIMENSION PALL(3),PVOL(3) -C -C COMPOUND/MIXTURE PARAMETERS -C - DATA AWAT/1.01,16.00/ - DATA ZWAT/1.,8./ - DATA WWAT/2.,1./ - DATA AAIR/14.01,16.00/ - DATA ZAIR/7.,8./ - DATA WAIR/0.7,0.3/ -C -C DEFINE MATERIALS -C - CALL GSMATE(21,'BERYLLIUM',9.010,4.,1.848,35.30,0.,0,0) - CALL GSMATE(22,'ALUMINIUM',26.98,13.,2.70,8.900,0.,0,0) - CALL GSMATE(23,'SILICON',28.09,14.,2.33,9.36,45.49,0,0) - CALL GSMATE(24,'LIQUID ARGON',39.95,18.,1.4,14.,83.71,0,0) - CALL GSMATE(25,'IRON',55.85,26.,7.87,1.760,0.,0,0) - CALL GSMATE(26,'COPPER',63.54,29.,8.96,1.430,0.,0,0) - CALL GSMATE(27,'GOLD',196.967,79.,19.32,0.33,0.,0,0) - CALL GSMATE(28,'LEAD',207.190,82.,11.35,0.560,0.,0,0) - CALL GSMATE(31,'XenonGas',131.29,54.,5.858e-3,1447.8,0.,0,0) -C - CALL GSMIXT(29,'WATER',AWAT,ZWAT,1.00,-2,WWAT) - CALL GSMIXT(30,'AIR',AAIR,ZAIR,1.205E-3,+2,WAIR) -C -C DEFINE MEDIA -C - IFIELD=0 - if (FieldW.ne.0.) IFIELD=3 - FIELDM=10*FieldW -* - TMAXFD=10. - STEMAX=1.E+10 - DEEMAX=0.20 - EPSIL=0.0001 - STMIN=0.0010 -C - CALL GSTMED(99,'WORLD',MATWLD,0,IFIELD, - * FIELDM,TMAXFD,STEMAX,DEEMAX,EPSIL,STMIN,0,0) -C - - IFIELD=0 - if (FieldA.ne.0.) IFIELD=3 - FIELDM=10*FieldA -* - IF(IGAUTO.LE.0) THEN - DEEMAX=DEEM - STMIN =STMI - STEMAX=STMA - ENDIF - CALL GSTMED(1,'ABSORBER',MATABS,0,IFIELD, - * FIELDM,TMAXFD,STEMAX,DEEMAX,EPSIL,STMIN,0,0) -C -C -C DEFINE VOLUMES (WORLD+ABSORBER) -* - if(XWORLD*YZWORL.le.0.) then - XWORLD=1.5*XABSOR - YZWORL=1.2*YZABSO - endif -* - PALL(1)=0.5*XWORLD - PALL(2)=0.5*YZWORL - PALL(3)=0.5*YZWORL - CALL GSVOLU('worl','BOX ',99,PALL,3,IVOL) -C - PVOL(1)=0.5*XABSOR - PVOL(2)=0.5*YZABSO - PVOL(3)=0.5*YZABSO - CALL GSVOLU('abso','BOX ', 1,PVOL,3,IVOL) -C -C BUILD GEOMETRY -C - CALL GSPOS('abso',1,'worl',XPOSAB,0.,0.,0,'ONLY') -* -* *** Close geometry banks. (mandatory system routine) - CALL GGCLOS -* -* -* *** dessin - CALL GSATT ('*','SEEN',1) -* - DO IX = 1,3 - CALL GDOPEN (IX) - SCALE = 18./max(XWORLD,YZWORL) - PAXIS = 0. - SAXIS = 0.1*max(XWORLD,YZWORL) - CALL GDRAWC ('worl',IX,0.,10.,9.3,SCALE,SCALE) - CALL GDAXIS (PAXIS,PAXIS,PAXIS,SAXIS) - CALL GDSCAL (10., 0.3) - CALL GDCLOS - END DO -* - END -+DECK,UHINIT. - SUBROUTINE UHINIT -C -+SEQ,GCBANK -+SEQ,GCKINE -+SEQ,EDEPO -C - IF(NHI1.GT.0) THEN - CALL HBOOK1(1,'number of steps/event' - + ,NHI1,HIS1(1),HIS1(2),0.) - ENDIF - IF(NHI2.GT.0) THEN - CALL HBOOK1(2,'energy deposit in absorber (MeV)' - + ,NHI2,HIS2(1),HIS2(2),0.) - ENDIF - IF(NHI3.GT.0) THEN - CALL HBOOK1(3,'angle distribution at exit(deg)' - + ,NHI3,HIS3(1),HIS3(2),0.) - ENDIF - IF(NHI4.GT.0) THEN - CALL HBOOK1(4,'lateral distribution at exit(mm)' - + ,NHI4,HIS4(1),HIS4(2),0.) - ENDIF - IF(NHI5.GT.0) THEN - CALL HBOOK1(5,'kinetic energy of the primary at exit(MeV)' - + ,NHI5,HIS5(1),HIS5(2),0.) - ENDIF - IF(NHI6.GT.0) THEN - CALL HBOOK1(6,'angle distr. of backscattered primaries(deg)' - + ,NHI6,HIS6(1),HIS6(2),0.) - ENDIF - IF(NHI7.GT.0) THEN - CALL HBOOK1(7,'kinetic energy of backscattered primaries(deg)' - + ,NHI7,HIS7(1),HIS7(2),0.) - ENDIF - IF(NHI8.GT.0) THEN - CALL HBOOK1(8,'kinetic energy of the charged secondaries(deg)' - + ,NHI8,HIS8(1),HIS8(2),0.) - ENDIF - IF(NHI9.GT.0) THEN - CALL HBOOK1(9,'z of secondary charged vertices (mm)' - + ,NHI9,HIS9(1),HIS9(2),0.) - ENDIF - IF(NHI10.GT.0) THEN - CALL HBOOK1(10,'energy of gammas escaping the absorber(MeV)' -* + ,NHI10,HIS10(1),HIS10(2),0.) - + ,NHI10,log10(HIS10(1)),log10(HIS10(2)),0.) - ENDIF -* - CALL HIDOPT(0,'STAT') -* - END -+DECK,GUKINE. - SUBROUTINE GUKINE -C -+SEQ,GCBANK -+SEQ,GCFLAG -+SEQ,GCKINE -+SEQ,GCONST -+SEQ,EDEPO -C - DIMENSION VERTEX(3),PLAB(3) -C - VERTEX(1)=XVERT - VERTEX(2)=YVERT - VERTEX(3)=ZVERT - CALL GSVERT(VERTEX,0,0,0,0,NVERT) -* - JPA = LQ(JPART-IKINE) - XMASS = Q(JPA+7) - PMOM = SQRT(PKINE(1)*(PKINE(1)+2*XMASS)) - THETA = PKINE(2)*DEGRAD - PHI = PKINE(3)*DEGRAD -C - PLAB(1)=PMOM*SIN(THETA)*COS(PHI) - PLAB(2)=PMOM*SIN(THETA)*SIN(PHI) - PLAB(3)=PMOM*COS(THETA) -C - CALL GSKINE(PLAB,IKINE,NVERT,0,0,NT) -* -* *** Kinematics debug - IF (IEVENT.EQ.1.OR.IDEBUG.NE.0) CALL GPRINT('KINE',0) -C -* -* *** initialisation per event - anbstep=1.e-6 - anch=0. - anne=0. - anele=0. - anpos=0. - EDEP=0. - tra=0. - ref=0. -* - END -+DECK,GUSTEP. - SUBROUTINE GUSTEP -C -+SEQ,GCBANK -+SEQ,GCTMED -+SEQ,GCKINE -+SEQ,GCKING -+SEQ,GCFLAG -+SEQ,GCTRAK -+SEQ,GCVOLU -+SEQ,GCCUTS -+SEQ,GCONST -+SEQ,GCUNIT -+SEQ,EDEPO -C - parameter ( facdeg=180./3.1415927 ) - DATA IEVOLD/0/ - -* -* -* *** Debug event and store tracks for drawing - IF (IDEBUG.NE.0) CALL GPCXYZ - IF ((ISWIT(1).EQ.1).AND.(CHARGE.NE.0.)) CALL GSXYZ - IF (ISWIT(1).EQ.2) CALL GSXYZ -* -* - IF(IEVOLD.NE.IEVENT) THEN - IEVOLD=IEVENT - ITOLD=0 - NMOLD=0 - XO=VERT(1) - RO=sqrt(vect(2)**2+vect(3)**2) - ENDIF -C -C TRACK FLAG -C - ITFL=ISTAK+10000*ITRA+100000*IVERT - IF(ITOLD.NE.IEVENT) THEN - XO=VERT(1) - RO=sqrt(vect(2)**2+vect(3)**2) - ENDIF -C - X=VECT(1) -C - IF(NGKINE.GT.0) THEN - do 10 i=1,ngkine - itypa=gkin(5,i) -* all the charged secondaries - if(itypa.ne.1) call hfill(9,10.*GPOS(1,i),0.,1.) -* in absorber only ! - if(NUMED.EQ.1) then - if(itypa.eq.1) then - anne=anne+1. - else - anch=anch+1. - if(itypa.eq.2) anpos=anpos+1. - if(itypa.eq.3) anele=anele+1. - tsec=1000.*(GKIN(4,i)-510.999e-6) - call hfill(8,tsec,0.,1.) - endif - endif -10 continue - CALL GSKING(0) - ENDIF -* - R=SQRT(VECT(2)**2+VECT(3)**2) - if((r.le.YZABSO).and.(xo.lt.X2ABSO).and.(x.ge.X2ABSO)) then - if(vect(4).gt.0.) then - if(ipart.eq.1) call hfill(10,log10(1000.*gekin),0.,1.) - if(ipart.eq.ikine) then - tra=1. -* - call hfill(5,1000.*gekin,0.,1.) - - if((1-vect(4)).gt.1.e-6) then - theta=acos(vect(4)) - else - theta=sqrt(2.*(1.-vect(4))) - endif - if(nhi3.gt.0) then - h1=his3(1)/facdeg - h2=his3(2)/facdeg - dth=(h2-h1)/float(nhi3) - ibin=int((theta-h1)/dth)+1 - if((ibin.le.0).or.(ibin.gt.nhi3)) then - w=1. - else - th=ibin*dth - if(theta.GT.0.001*dth) then - w=PI/(64800.*dth*sin(theta)) - else - nth0=nth0+1 - if(nth0.le.10) then - thdeg=theta*facdeg - write(6,997) thdeg -997 format('theta<0.001*dth (from plot excluded)' - + ,' theta=',e12.4,' deg') - endif - w=0. - endif - endif - theta = facdeg*theta - call hfill(3,theta,0.,w) - endif - call hfill(4,10.*R,0.,1.) - endif - endif - endif - if((r.le.YZABSO).and.(xo.gt.X1ABSO).and.(x.le.X1ABSO)) then - if(vect(4).lt.0.) then - if(ipart.eq.ikine) then - ref=1. - call hfill(7,1000.*gekin,0.,1.) - if((1.+vect(4)).gt.1.e-6) then - theta=acos(vect(4))-PIBY2 - else - theta=sqrt(2.*(1.+vect(4))) - endif - if(nhi6.gt.0) then - h1=his6(1)/facdeg - h2=his6(2)/facdeg - dth=(h2-h1)/float(nhi6) - ibin=int((theta-h1)/dth)+1 - if((ibin.le.0).or.(ibin.gt.nhi6)) then - w=0. - else - th=ibin*dth - if(theta.GT.0.001*dth) then - w=PI/(64800.*dth*sin(theta)) - else - thdeg=theta*facdeg - write(6,997) thdeg - w=0. - endif - theta = facdeg*theta - call hfill(6,theta,0.,w) - endif - endif - endif - endif - endif - - IF(NUMED.EQ.1) THEN - anbstep=anbstep+1. - EDEP = EDEP+DESTEP - ENDIF -C - ITOLD=IEVENT - XO=X - RO=R -C - END -+DECK,GUOUT. - SUBROUTINE GUOUT -C -+SEQ,GCBANK -+SEQ,GCFLAG -+SEQ,GCUNIT -+SEQ,EDEPO -+SEQ,GCONST -* - dimension runerr(2) -* *** drawing -* -+self,if=-batch. - IF (ISWIT(1).NE.0) THEN - CALL GDHEAD (110110,'TestEm5',0.) - CALL GDSHOW (3) - CALL GDXYZ (0) - END IF -+self. -* - call hfill(1,anbstep,0.,1.) - sstep=sstep+anbstep - s2step=s2step+anbstep*anbstep - sanch = sanch+anch - sanch2=sanch2+anch*anch - sanne = sanne+anne - sanne2=sanne2+anne*anne - sanele=sanele+anele - sanpos=sanpos+anpos - SEDEP=SEDEP+EDEP - SEDEP2=SEDEP2+EDEP**2 - stra=stra+tra - sref=sref+ref - eein=1000.*EDEP - CALL HFILL(2,eein,0.,1.0) -C - END -+DECK,UGLAST. - SUBROUTINE UGLAST -C -+SEQ,GCBANK -+SEQ,GCFLAG -+SEQ,GCUNIT -+SEQ,GCONST -+SEQ,EDEPO -+SEQ,GCKINE. -C - CALL GLAST -C - IF(IEVENT.GT.0) THEN - AEV=FLOAT(IEVENT) - SEDEP=SEDEP/AEV - SE2=SEDEP2/AEV-SEDEP**2 - SEDEP2=0. - IF(SE2.GT.0.) SEDEP2=SQRT(SE2/AEV) -* - WRITE(CHMAIL,1002)SEDEP,SEDEP2 - CALL GMAIL(0,0) - sstep=sstep/aev - s2step=s2step/aev-sstep*sstep - sigst=0. - if(s2step.gt.0.) sigst=sqrt(s2step/aev) - write(6,122)sstep,sigst -122 format(/,' mean number of steps=',f15.3,' +- ',f15.3) - sanch=sanch/aev - sigch2=sanch2/aev-sanch*sanch - sigch=0. - if(sigch2.gt.0.) sigch=sqrt(sigch2/aev) - sanne=sanne/aev - signe2=sanne2/aev-sanne*sanne - signe=0. - if(signe2.gt.0.) signe=sqrt(signe2/aev) - write(6,123) sanch,sigch,sanne,signe -123 format(/,' mean nb of charged secondaries=',f15.4,' +- ',f15.4, - + /,' mean nb of neutral secondaries=',f15.4,' +- ',f15.4) - sanele=sanele/aev - sanpos=sanpos/aev - write(6,124)sanele,sanpos -124 format(/,' mean nb of e-s = ',f15.4,' and e+s=',f15.4) - stra=stra/aev - sref=sref/aev - write(6,125)stra,sref -125 format(/,' (number) transmission coeff=',e12.4, - + ' reflexion coeff=',e12.4) - write(6,126) nth0 -126 format(/,' nb of (theta<0.001*bin) events=',i6) -* -CCC CALL HISTDO -* - CALL HPLEND -* - CALL HRPUT(0,NAME,'N') -C - ENDIF -C -1002 FORMAT(5X,'energy deposit=',E12.4,' +- ',E12.4) -C - END -+DECK,GRUN. - SUBROUTINE GRUN -*. -*. ****************************************************************** -*. * * -*. * Steering routine to process all the events * -*. * * -*. * ==>Called by : , main program * -*. * Author R.Brun ********* * -*. * * -*. ****************************************************************** -*. -+SEQ,GCBANK -+SEQ,GCFLAG -+SEQ,GCUNIT -+SEQ,GCTIME - SAVE IFIRST - DATA IFIRST/0/ -*. -*. ------------------------------------------------------------------ -*. -* Keep starting time -* - IF(IFIRST.EQ.0)THEN - IFIRST=1 - CALL TIMEL(TIMINT) - ENDIF -* - 10 IF(IEVENT.LT.NEVENT) THEN - IEVENT=IEVENT+1 -* -* Initialises event partition - LOUT=9 - CALL GTRIGI - LOUT=6 -* Process one event (trigger) -* - CALL GTRIG -* -* Clear event partition -* - CALL GTRIGC -* - IF(IEORUN.EQ.0) THEN -* -* Check time left -* - IF(ITIME.LE.0)GO TO 10 - IF(MOD(IEVENT,ITIME).NE.0)GO TO 10 - CALL TIMEL(TIMNOW) - IF(TIMNOW.GT.TIMEND)GO TO 10 - WRITE(CHMAIL,10000)TIMEND - CALL GMAIL(0,2) - IEORUN = 1 - ENDIF - ENDIF -* -10000 FORMAT(5X,'***** THE JOB STOPS NOW BECAUSE THE TIME LEFT IS LESS', - +' THAN ',F8.3,' SECONDS *****') - END - -+DECK,ffread,T=data. -FILE geant3.siplots -LIST -ABSOR 23 (mate) 1.0 (thicknX) 2.0 (sizeYZ) 0. (field) -KINE 3 (Itype) 0.030000 (Ekine) 90.0 (teta) 0.0 (phi) -TRIG 100000 -DEBUG 1 1 -SWIT 0 (draw) -LOSS 1 -HADR 0 -ABAN 0 -CUTS 10.0e-6 (cutgam) 10.0e-6 (cutele) 3*10.e-3 (cutneu/had/muo) - 2*10.0e-6 (bcute/m) 2*10.0e-6 (dcute/m) -TIME 2=5. -HIS1 50 0. 50. -HIS2 60 0. 1.2 -HIS3 90 0. 90. -HIS4 50 0. 2.5 -HIS5 50 0. 1. -HIS6 90 0. 90. -HIS7 50 0. 1. -HIS8 50 0.0 0.5 -HIS9 100 -0.5 0.5 -HI10 80 0.01 1. -END -+QUIT. diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5CalorHit.hh b/examples/extended/electromagnetic/TestEm5/include/Em5CalorHit.hh index 215d52fe64..a68f71a2c9 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5CalorHit.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5CalorHit.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5CalorHit.hh,v 1.2 1999/12/15 14:49:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5CalorimeterSD.hh b/examples/extended/electromagnetic/TestEm5/include/Em5CalorimeterSD.hh index 04fd6d00ef..4de2ebb245 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5CalorimeterSD.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5CalorimeterSD.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5CalorimeterSD.hh,v 1.2 1999/12/15 14:49:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm5/include/Em5DetectorConstruction.hh index 4ee4d494b7..b3c243e65f 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5DetectorConstruction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5DetectorConstruction.hh,v 1.2 1999/12/15 14:49:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm5/include/Em5DetectorMessenger.hh index 7fcac886c5..6414d582fa 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5DetectorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5DetectorMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5DetectorMessenger.hh,v 1.2 1999/12/15 14:49:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5EventAction.hh b/examples/extended/electromagnetic/TestEm5/include/Em5EventAction.hh index 0441ae5696..83ab148a4b 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5EventAction.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5EventAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5EventAction.hh,v 1.2 1999/12/15 14:49:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm5/include/Em5EventActionMessenger.hh index c016e3e39a..7e7b0dd220 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5EventActionMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5EventActionMessenger.hh,v 1.2 1999/12/15 14:49:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5PhysicsList.hh b/examples/extended/electromagnetic/TestEm5/include/Em5PhysicsList.hh index ed378e5ffd..71cfc8f8b5 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5PhysicsList.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5PhysicsList.hh,v 1.2 1999/12/15 14:49:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5PhysicsListMessenger.hh b/examples/extended/electromagnetic/TestEm5/include/Em5PhysicsListMessenger.hh index 10de47c452..3de7071f9b 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5PhysicsListMessenger.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5PhysicsListMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5PhysicsListMessenger.hh,v 1.2 1999/12/15 14:49:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm5/include/Em5PrimaryGeneratorAction.hh index 494a5de022..685329dd82 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5PrimaryGeneratorAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5PrimaryGeneratorAction.hh,v 1.2 1999/12/15 14:49:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5PrimaryGeneratorMessenger.hh b/examples/extended/electromagnetic/TestEm5/include/Em5PrimaryGeneratorMessenger.hh index 24f7e8adfb..f3da4b374f 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5PrimaryGeneratorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5PrimaryGeneratorMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5PrimaryGeneratorMessenger.hh,v 1.2 1999/12/15 14:49:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5RunAction.hh b/examples/extended/electromagnetic/TestEm5/include/Em5RunAction.hh index b093815e53..3b186e8752 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5RunAction.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5RunAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5RunAction.hh,v 1.3 2000/01/20 15:34:39 maire Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5RunMessenger.hh b/examples/extended/electromagnetic/TestEm5/include/Em5RunMessenger.hh index 5425b32d11..da7add842f 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5RunMessenger.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5RunMessenger.hh @@ -7,7 +7,7 @@ // and all its terms. // // $Id: Em5RunMessenger.hh,v 1.2 1999/12/15 14:49:09 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5StepCut.hh b/examples/extended/electromagnetic/TestEm5/include/Em5StepCut.hh index d3c16506b5..1ccda37c09 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5StepCut.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5StepCut.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5StepCut.hh,v 1.2 1999/12/15 14:49:09 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5SteppingAction.hh b/examples/extended/electromagnetic/TestEm5/include/Em5SteppingAction.hh index 62e85947e3..9196b68614 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5SteppingAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5SteppingAction.hh,v 1.2 1999/12/15 14:49:09 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5SteppingMessenger.hh b/examples/extended/electromagnetic/TestEm5/include/Em5SteppingMessenger.hh index 56cf5c6b1d..694d7682e3 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5SteppingMessenger.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5SteppingMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5SteppingMessenger.hh,v 1.2 1999/12/15 14:49:09 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm5/include/Em5SteppingVerbose.hh index 642fe6e033..707ebf914e 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5SteppingVerbose.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5SteppingVerbose.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em5SteppingVerbose.hh,v 1.2 1999/12/15 14:49:09 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em5SteppingVerbose.hh,v 1.3 2000/02/29 12:23:26 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -17,10 +17,6 @@ // 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) // //--------------------------------------------------------------- diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5VisManager.hh b/examples/extended/electromagnetic/TestEm5/include/Em5VisManager.hh index 240395d421..4137426130 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5VisManager.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5VisManager.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5VisManager.hh,v 1.2 1999/12/15 14:49:09 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm5/run55.mac b/examples/extended/electromagnetic/TestEm5/run55.mac new file mode 100644 index 0000000000..f7c1678065 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm5/run55.mac @@ -0,0 +1,38 @@ +# +# Macro file for the initialization phase of "TestEm5.cc" +# +# It creates the default geometry (simple absorber box ) +# +/control/verbose 2 +/run/verbose 2 +# +/calor/setAbsMat Iron +/calor/setAbsThick 2 m +/calor/setAbsYZ 2 m +/calor/update +/gun/setDefault +# +# +# hist file name +/plots/sethistName 1000gev.1mm.paw +# PLOT: energy deposit distribution in absorber +/plots/setnbinEn 50 +/plots/setEnlow 0. GeV +/plots/setEnhigh 50. GeV +# PLOT: energy of transmitted particles +/plots/setnbinTt 50 +/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 + +/event/printModulo 10 +# +/run/beamOn 1000 +# + diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5CalorHit.cc b/examples/extended/electromagnetic/TestEm5/src/Em5CalorHit.cc index 552a752ceb..633a4738c0 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5CalorHit.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5CalorHit.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5CalorHit.cc,v 1.2 1999/12/15 14:49:09 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5CalorimeterSD.cc b/examples/extended/electromagnetic/TestEm5/src/Em5CalorimeterSD.cc index b6fc3e17a6..efded05230 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5CalorimeterSD.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5CalorimeterSD.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5CalorimeterSD.cc,v 1.2 1999/12/15 14:49:09 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm5/src/Em5DetectorConstruction.cc index 4eaba36b84..743f02f420 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5DetectorConstruction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5DetectorConstruction.cc,v 1.4 2000/01/20 15:34:39 maire Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm5/src/Em5DetectorMessenger.cc index f125a5601a..8ffb9b4196 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5DetectorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5DetectorMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5DetectorMessenger.cc,v 1.2 1999/12/15 14:49:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5EventAction.cc b/examples/extended/electromagnetic/TestEm5/src/Em5EventAction.cc index b2741d356c..74294b3368 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5EventAction.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5EventAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5EventAction.cc,v 1.3 1999/12/15 14:49:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm5/src/Em5EventActionMessenger.cc index 726dc93c4f..e8044d4982 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5EventActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5EventActionMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5EventActionMessenger.cc,v 1.2 1999/12/15 14:49:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5PhysicsList.cc b/examples/extended/electromagnetic/TestEm5/src/Em5PhysicsList.cc index 9a14a6d216..82ab6f0217 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5PhysicsList.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em5PhysicsList.cc,v 1.5 2000/01/20 15:34:40 maire Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em5PhysicsList.cc,v 1.6 2000/05/24 16:13:21 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -250,7 +250,15 @@ void Em5PhysicsList::SetCuts() if (verboseLevel >0){ G4cout << "Em5PhysicsList::SetCuts:"; G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << G4endl; - } + } + + //special for low energy physics + // + 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"); diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5PhysicsListMessenger.cc b/examples/extended/electromagnetic/TestEm5/src/Em5PhysicsListMessenger.cc index 87fa26ddcb..59662a231d 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5PhysicsListMessenger.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5PhysicsListMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5PhysicsListMessenger.cc,v 1.2 1999/12/15 14:49:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm5/src/Em5PrimaryGeneratorAction.cc index bc61236ddc..fd02501a35 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5PrimaryGeneratorAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5PrimaryGeneratorAction.cc,v 1.2 1999/12/15 14:49:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5PrimaryGeneratorMessenger.cc b/examples/extended/electromagnetic/TestEm5/src/Em5PrimaryGeneratorMessenger.cc index c6dc1c104e..f093282c28 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5PrimaryGeneratorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5PrimaryGeneratorMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5PrimaryGeneratorMessenger.cc,v 1.2 1999/12/15 14:49:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5RunAction.cc b/examples/extended/electromagnetic/TestEm5/src/Em5RunAction.cc index aacc0b22a2..019df37630 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5RunAction.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5RunAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5RunAction.cc,v 1.4 2000/01/20 15:34:40 maire Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5RunMessenger.cc b/examples/extended/electromagnetic/TestEm5/src/Em5RunMessenger.cc index eb82c27e03..d28c6df678 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5RunMessenger.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5RunMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5RunMessenger.cc,v 1.2 1999/12/15 14:49:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5StepCut.cc b/examples/extended/electromagnetic/TestEm5/src/Em5StepCut.cc index 0c22c089a9..de590bf74d 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5StepCut.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5StepCut.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5StepCut.cc,v 1.2 1999/12/15 14:49:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ //....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 bbcf5c2a20..13fed1c40e 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5SteppingAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5SteppingAction.cc,v 1.2 1999/12/15 14:49:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5SteppingMessenger.cc b/examples/extended/electromagnetic/TestEm5/src/Em5SteppingMessenger.cc index 9e4fb7b741..6b22151ef6 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5SteppingMessenger.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5SteppingMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5SteppingMessenger.cc,v 1.2 1999/12/15 14:49:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm5/src/Em5SteppingVerbose.cc index 7ace0fba13..db407e387c 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5SteppingVerbose.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5SteppingVerbose.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em5SteppingVerbose.cc,v 1.2 1999/12/15 14:49:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em5SteppingVerbose.cc,v 1.3 2000/02/29 12:24:13 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -15,10 +15,6 @@ // // Description: // Implementation of the Em5SteppingVerbose 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) // //--------------------------------------------------------------- diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5VisManager.cc b/examples/extended/electromagnetic/TestEm5/src/Em5VisManager.cc index 9b16e4f483..ccc1f2cdde 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5VisManager.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5VisManager.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Em5VisManager.cc,v 1.2 1999/12/15 14:49:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 24th January 1998. diff --git a/examples/extended/electromagnetic/TestEm6/GNUmakefile b/examples/extended/electromagnetic/TestEm6/GNUmakefile deleted file mode 100644 index 24d8d9f83f..0000000000 --- a/examples/extended/electromagnetic/TestEm6/GNUmakefile +++ /dev/null @@ -1,27 +0,0 @@ -# $Id: GNUmakefile,v 1.3 2000/01/21 15:59:27 maire Exp $ -# -------------------------------------------------------------- -# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98. -# G4NOHIST variable is checked. Vladimir Ivanchenko, 2000/01/18 -# -------------------------------------------------------------- - -name := TestEm6 -G4TARGET := $(name) -G4EXLIB := true - -ifndef G4INSTALL - G4INSTALL = ../../../.. -endif - -.PHONY: all -all: lib bin - -include $(G4INSTALL)/config/architecture.gmk - -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/TestEm6/TestEm6.cc b/examples/extended/electromagnetic/TestEm6/TestEm6.cc deleted file mode 100644 index ad1dfe8044..0000000000 --- a/examples/extended/electromagnetic/TestEm6/TestEm6.cc +++ /dev/null @@ -1,109 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By 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 - TestEm6 -// -// For information related to this code contact: -// CERN, IT Division, ASD Group -// -------------------------------------------------------------- -// Comments -// This test is created by V.Ivanchenko on the base of -// M.Maire test TestEm5 for the test of LowEnergyIonisation -// class. Particle is penetrate through the number of sensitive -// boxes, dimentions of boxes and particle's kinematic -// parameters can be defined by UI interface. -// 29-Jul-1999 V.Ivanchenko first variant -// -------------------------------------------------------------- - -#include "G4RunManager.hh" -#include "G4UImanager.hh" -#include "G4UIterminal.hh" -#include "Randomize.hh" - -#ifdef G4VIS_USE -#include "Em6VisManager.hh" -#endif - -#include "Em6DetectorConstruction.hh" -#include "Em6PhysicsList.hh" -#include "Em6PrimaryGeneratorAction.hh" -#include "Em6RunAction.hh" -#include "Em6EventAction.hh" -#include "Em6SteppingAction.hh" -#include "Em6SteppingVerbose.hh" - -int main(int argc,char** argv) { - - //choose the Random engine - HepRandom::setTheEngine(new RanecuEngine); - - //my Verbose output class - G4VSteppingVerbose::SetInstance(new Em6SteppingVerbose); - - // Construct the default run manager - G4RunManager * runManager = new G4RunManager; - - // set mandatory initialization classes - Em6DetectorConstruction* det; - runManager->SetUserInitialization(det = new Em6DetectorConstruction); - runManager->SetUserInitialization(new Em6PhysicsList(det)); - runManager->SetUserAction(new Em6PrimaryGeneratorAction(det)); - - #ifdef G4VIS_USE - // visualization manager - G4VisManager* visManager = new Em6VisManager; - visManager->Initialize(); - #endif - - // set user action classes - Em6RunAction* RunAct; - Em6EventAction* EvtAct; - - runManager->SetUserAction(RunAct = new Em6RunAction); - runManager->SetUserAction(EvtAct = new Em6EventAction(RunAct)); - // runManager->SetUserAction(new Em6TrackingAction(RunAct)); - runManager->SetUserAction(new Em6SteppingAction(det,EvtAct,RunAct)); - runManager->SetUserAction(new Em6PrimaryGeneratorAction(det)); - - //Initialize G4 kernel - 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; - G4cout << "TestEm6 is finished!!!" << G4endl; - - return 0; -} - - - - - - - diff --git a/examples/extended/electromagnetic/TestEm6/TestEm6.in b/examples/extended/electromagnetic/TestEm6/TestEm6.in deleted file mode 100644 index 1341026312..0000000000 --- a/examples/extended/electromagnetic/TestEm6/TestEm6.in +++ /dev/null @@ -1,50 +0,0 @@ -# -# Macro file for the initialization phase of "TestEm6.cc" -# -# It creates the default geometry (simple absorber box) -# -#/control/verbose 2 -#control/saveHistory -/run/verbose 2 -#/step/verbose 2 -#/tracking/verbose 2 -#/stepping/verbose 2 -#/event/verbose 2 -# -#/calor/setAbsMat Silicon -#/calor/setAbsThick 50. mum -#/calor/setAbsYZ 10. cm -#/calor/update -#/calor/cutG 100.0 micrometer -#/calor/cutE 100.0 micrometer -# hist file name -#/plots/sethistName p.plot -#/run/initialize -#/run/particle/dumpCutValues -#/event/drawTracks none -# -# Gun with Protons 10 MeV -# -/gun/particle proton -/gun/energy 10.0 MeV -# -/run/beamOn 1000 -# -# Gun with antiProtons 10 MeV -# -#/plots/sethistName antip.plot -/run/initialize -/gun/particle anti_proton -/gun/energy 10.0 MeV -/run/beamOn 100 -# -# Gun with IonC12 100 MeV -# -#/plots/sethistName ionc12.plot -/run/initialize -/gun/particle IonC12 -/gun/energy 50.0 MeV -/run/beamOn 100 - - - diff --git a/examples/extended/electromagnetic/TestEm6/TestEm6.out b/examples/extended/electromagnetic/TestEm6/TestEm6.out deleted file mode 100644 index 09a7966c8f..0000000000 --- a/examples/extended/electromagnetic/TestEm6/TestEm6.out +++ /dev/null @@ -1,297 +0,0 @@ -********************************************** - Geant4 version $Name: geant4-01-01 $ - (07-Dec-99) - Copyright : Geant4 Collaboration -********************************************** -G4VUserPhysicsList::SetVerboseLevel : Verbose level is set to 2 - -***** Table : Nb of materials = 13 ***** - - Material: Beryllium density: 1.848 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 35.267 cm - ---> Element: Beryllium Z = 4.0 N = 9.0 A = 9.01 g/mole fractionMass: 100.00 % Abundance 100.00 % - - Material: Aluminum density: 2.700 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.893 cm - ---> Element: Aluminum Z = 13.0 N = 27.0 A = 26.98 g/mole fractionMass: 100.00 % Abundance 100.00 % - - Material: Carbon density: 2.000 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 21.348 cm - ---> Element: Carbon Z = 6.0 N = 12.0 A = 12.01 g/mole fractionMass: 100.00 % Abundance 100.00 % - - Material: Silicon density: 2.330 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 9.368 cm - ---> Element: Silicon Z = 14.0 N = 28.1 A = 28.09 g/mole fractionMass: 100.00 % Abundance 100.00 % - - Material: 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.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 - ---> Element: Copper Z = 29.0 N = 63.5 A = 63.55 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: Water H_2O 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: Methane CH_4 density: 0.667 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 696.375 m - ---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 25.19 % Abundance 80.00 % - ---> Element: Carbon C Z = 6.0 N = 12.0 A = 12.00 g/mole fractionMass: 74.81 % Abundance 20.00 % - - Material: Graphite Graphite density: 2.265 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 18.834 cm - ---> Element: Carbon C Z = 6.0 N = 12.0 A = 12.00 g/mole fractionMass: 100.00 % Abundance 100.00 % - - Material: Air density: 1.000 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 367.858 m - ---> Element: Nitrogen N Z = 7.0 N = 14.0 A = 14.01 g/mole fractionMass: 70.00 % Abundance 72.71 % - ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 30.00 % Abundance 27.29 % - - - - The WORLD is made of 50 cm of Air. The transverse size (YZ) of the world is 12 cm - The ABSORBER is made of 250 items of 1 mm of Water. The transverse size (YZ) is 10 cm - X position of the middle of the absorber 0 fm -G4VUserPhysicsList::Construct() -Construct particles -Construct processes -Ionic processes for IonAr40 -New ion with Q = 18; MassR = 0.025 -Ionic processes for IonC12 -New ion with Q = 6; MassR = 0.084 -Ionic processes for IonFe56 -New ion with Q = 26; MassR = 0.018 -Ionic processes for alpha -New ion with Q = 2; MassR = 0.25 -Hadronic processes for anti_proton -Ionic processes for deuteron -New ion with Q = 1; MassR = 0.5 -Hadronic processes for kaon+ -Hadronic processes for kaon- -Hadronic processes for pi+ -Hadronic processes for pi- -Hadronic processes for proton -Em6PhysicsList::SetCuts:CutLength : 1 mm -Set cuts for all particles! - -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. -Set cuts for gamma - -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 parametrisation. 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. -Set cuts for e- - -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+ -Set cuts for mu- - -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 100 bins. - -MuBrems: theoretical cross section - Good description up to 1000 TeV. - PhysicsTables from 1 GeV to 1e+03 PeV in 100 bins. - -MuPairProd: theoretical cross sections - Good description up to 1000 TeV. - PhysicsTables from 1 GeV to 1e+03 PeV in 50 bins. -Set cuts for mu+ - -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. - -hLowEIoni: Knock-on electron cross sections . - Good description above the mean excitation energy. - delta ray energy sampled from differential Xsection. - PhysicsTables from 10 eV to 1e+02 TeV in 150 bins. - Low energy losses approximation is taken from ICRU_R49p - from 1 keV to 2 MeV . - Parametrization of the Barkas effect is switched on. -Set cuts for proton -Set cuts for anti_proton -G4VUserPhysicsList::SetCutValueForOthers :1[mm] -Set cuts for IonAr40 -Set cuts for IonC12 -Set cuts for IonFe56 -Set cuts for alpha -Set cuts for anti_nu_e -Set cuts for anti_nu_mu -Set cuts for chargedgeantino -Set cuts for deuteron -Set cuts for geantino -Set cuts for kaon+ -Set cuts for kaon- -Set cuts for nu_e -Set cuts for nu_mu -Set cuts for pi+ -Set cuts for pi- -Set cuts for pi0 -============= The cut Energy ============================== - gamma e- mu- proton neutron -Cut in range 1 mm 1 mm 1 mm 1 mm -Cut in energy - Beryllium 1.99 keV 466 keV 4.28 MeV 11.5 MeV - Aluminum 6.89 keV 597 keV 5.02 MeV 13.1 MeV - Carbon 3.14 keV 521 keV 4.63 MeV 12.3 MeV - Silicon 6.89 keV 541 keV 4.72 MeV 12.2 MeV - liquidArgon 6.18 keV 343 keV 3.24 MeV 8.32 MeV - Iron 20.8 keV 1.28 MeV 8.52 MeV 22 MeV - Copper 24.6 keV 1.4 MeV 8.95 MeV 23 MeV - Gold 111 keV 2.28 MeV 11.7 MeV 29.2 MeV - Lead 101 keV 1.38 MeV 8.52 MeV 20.9 MeV - Water 2.9 keV 347 keV 3.39 MeV 8.95 MeV - Methane 990 eV 990 eV 39.8 keV 82.2 keV - Graphite 3.29 keV 568 keV 4.96 MeV 13.1 MeV - Air 990 eV 990 eV 39.8 keV 59 keV -=================================================== -# -# Macro file for the initialization phase of "TestEm6.cc" -# -# It creates the default geometry (simple absorber box) -# -#/control/verbose 2 -#control/saveHistory -#/step/verbose 2 -#/tracking/verbose 2 -#/stepping/verbose 2 -#/event/verbose 2 -# -#/calor/setAbsMat Silicon -#/calor/setAbsThick 50. mum -#/calor/setAbsYZ 10. cm -#/calor/update -#/calor/cutG 100.0 micrometer -#/calor/cutE 100.0 micrometer -# hist file name -#/plots/sethistName p.plot -#/run/initialize -#/run/particle/dumpCutValues -#/event/drawTracks none -# -# Gun with Protons 10 MeV -# -# -### Run 0 start. -Start closing geometry. -Start Run processing. -Run terminated. -Run Summary - Number of events processed : 1000 - User=51s Real=61s Sys=9.8s - ================== run summary ===================== - end of Run TotNbofEvents = 1000 - mean charged track length in absorber=0.0147529 +- 0.00406827 mm - - mean energy deposit in absorber=0.00282675 +- 0.00076118 MeV - - mean number of steps in absorber (charged) =278.625 +- 1.50063 - mean number of steps in absorber (neutral) =305.527 +- 6.45728 - - mean number of charged secondaries = 4.059 +- 0.0643857 - - mean number of neutral secondaries = 4.234 +- 0.0639941 - - mean number of e-s =4.039 and e+s =0.02 - -(number) transmission coeff=0.084 reflection coeff=0.051 - -# -# Gun with antiProtons 10 MeV -# -#/plots/sethistName antip.plot -### Run 1 start. -Start Run processing. -Run terminated. -Run Summary - Number of events processed : 100 - User=5s Real=6.1s Sys=1s - ================== run summary ===================== - end of Run TotNbofEvents = 100 - mean charged track length in absorber=0 +- 0 mm - - mean energy deposit in absorber=0 +- 0 MeV - - mean number of steps in absorber (charged) =279.89 +- 3.64738 - mean number of steps in absorber (neutral) =293.7 +- 18.7385 - - mean number of charged secondaries = 4.07 +- 0.195067 - - mean number of neutral secondaries = 4.01 +- 0.197228 - - mean number of e-s =4.04 and e+s =0.03 - -(number) transmission coeff=0.08 reflection coeff=0.06 - -# -# Gun with IonC12 100 MeV -# -#/plots/sethistName ionc12.plot -### Run 2 start. -Start Run processing. -Run terminated. -Run Summary - Number of events processed : 100 - User=4.7s Real=5.6s Sys=0.87s - ================== run summary ===================== - end of Run TotNbofEvents = 100 - mean charged track length in absorber=0.0211493 +- 0.0148059 mm - - mean energy deposit in absorber=0.00365839 +- 0.00250438 MeV - - mean number of steps in absorber (charged) =274.36 +- 5.17406 - mean number of steps in absorber (neutral) =247.41 +- 17.9913 - - mean number of charged secondaries = 3.99 +- 0.188942 - - mean number of neutral secondaries = 3.58 +- 0.191927 - - mean number of e-s =3.97 and e+s =0.02 - -(number) transmission coeff=0.09 reflection coeff=0.03 - -G4 kernel has come to Quit state. -Deletion of G4 kernel class start. -UserDetectorConstruction deleted. -UserPhysicsList deleted. -UserRunAction deleted. -UserPrimaryGenerator deleted. -G4SDManager deleted. -EventManager deleted. -UImanager deleted. -StateManager deleted. -RunManager is deleting. -TestEm6 is finished!!! diff --git a/examples/extended/electromagnetic/TestEm6/batch.mac b/examples/extended/electromagnetic/TestEm6/batch.mac deleted file mode 100644 index 6267abb3e7..0000000000 --- a/examples/extended/electromagnetic/TestEm6/batch.mac +++ /dev/null @@ -1,57 +0,0 @@ -# -# Macro file for the initialization phase of "TestEm6.cc" -# -# It creates the default geometry (simple absorber box) -# -#/control/verbose 2 -#control/saveHistory -/run/verbose 2 -#/step/verbose 2 -#/tracking/verbose 2 -#/stepping/verbose 2 -#/event/verbose 2 -# -#/run/initialize -# -#/calor/setAbsMat Silicon -#/calor/setAbsThick 50. mum -#/calor/setAbsYZ 10. cm -#/calor/update -# -# 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 50.0 mm -#/calor/cutG 100.0 micrometer -#/calor/cutE 100.0 micrometer -# hist file name -#/plots/sethistName p.plot -/run/initialize -#/run/particle/dumpCutValues -#/event/drawTracks none -# -#/gun/particle gamma -/gun/particle proton -#/gun/particle IonC12 -#/gun/energy 6.56 MeV -/gun/energy 10.0 MeV -# -/run/beamOn 10 -#/plots/sethistName antip.plot -#/run/initialize -#/gun/particle antiproton -#/gun/energy 10.0 MeV -#/run/beamOn 100 -# -#/plots/sethistName ionc12.plot -#/run/initialize -#/gun/particle IonC12 -#/gun/energy 100.0 MeV -#/run/beamOn 100 - - - - diff --git a/examples/extended/electromagnetic/TestEm6/include/Em6CalorHit.hh b/examples/extended/electromagnetic/TestEm6/include/Em6CalorHit.hh deleted file mode 100644 index 1a1137971c..0000000000 --- a/examples/extended/electromagnetic/TestEm6/include/Em6CalorHit.hh +++ /dev/null @@ -1,81 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By 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 Description: -// The set of hits is defined -// Class Description - end -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#ifndef Em6CalorHit_h -#define Em6CalorHit_h 1 - -#include "G4VHit.hh" -#include "G4THitsCollection.hh" -#include "G4Allocator.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -class Em6CalorHit : public G4VHit -{ -public: // Without description - - Em6CalorHit(); - ~Em6CalorHit(); - Em6CalorHit(const Em6CalorHit&); - const Em6CalorHit& operator=(const Em6CalorHit&); - int operator==(const Em6CalorHit&) 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 Em6CalorHitsCollection; - -extern G4Allocator Em6CalorHitAllocator; - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -inline void* Em6CalorHit::operator new(size_t) -{ - void* aHit; - aHit = (void*) Em6CalorHitAllocator.MallocSingle(); - return aHit; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -inline void Em6CalorHit::operator delete(void* aHit) -{ - Em6CalorHitAllocator.FreeSingle((Em6CalorHit*) aHit); -} - -#endif - - diff --git a/examples/extended/electromagnetic/TestEm6/include/Em6CalorimeterSD.hh b/examples/extended/electromagnetic/TestEm6/include/Em6CalorimeterSD.hh deleted file mode 100644 index ee61f4ae3e..0000000000 --- a/examples/extended/electromagnetic/TestEm6/include/Em6CalorimeterSD.hh +++ /dev/null @@ -1,50 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By 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 Description: -// The sensitive detector is defined -// Class Description - end -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#ifndef Em6CalorimeterSD_h -#define Em6CalorimeterSD_h 1 - -#include "G4VSensitiveDetector.hh" -#include "globals.hh" - -class Em6DetectorConstruction; -class G4HCofThisEvent; -class G4Step; -#include "Em6CalorHit.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -class Em6CalorimeterSD : public G4VSensitiveDetector -{ -public: // Without description - - Em6CalorimeterSD(G4String, Em6DetectorConstruction* ); - ~Em6CalorimeterSD(); - - void Initialize(G4HCofThisEvent*); - G4bool ProcessHits(G4Step*,G4TouchableHistory*); - void EndOfEvent(G4HCofThisEvent*); - void clear(); - void PrintAll(); - - private: - - Em6CalorHitsCollection* CalCollection; - Em6DetectorConstruction* Detector; - G4int* HitID; -}; - -#endif - diff --git a/examples/extended/electromagnetic/TestEm6/include/Em6DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm6/include/Em6DetectorConstruction.hh deleted file mode 100644 index d14086f28b..0000000000 --- a/examples/extended/electromagnetic/TestEm6/include/Em6DetectorConstruction.hh +++ /dev/null @@ -1,138 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By 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 example -// -// For information related to this code contact: -// CERN, IT Division, ASD group -// History: based on object model of -// 2nd December 1995, G.Cosmo -// ---------- Em6DetectorConstruction ------- -// by Vladimir Ivanchenko, 23 July 1999 -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#ifndef Em6DetectorConstruction_h -#define Em6DetectorConstruction_h 1 - -#include "G4VUserDetectorConstruction.hh" -#include "globals.hh" -#include "G4UnitsTable.hh" -#include "G4ios.hh" - -class G4Box; -class G4LogicalVolume; -class G4VPhysicalVolume; -class G4Material; -class G4UniformMagField; -class Em6DetectorMessenger; -class Em6CalorimeterSD; - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -class Em6DetectorConstruction : public G4VUserDetectorConstruction -{ - public: - - Em6DetectorConstruction(); - ~Em6DetectorConstruction(); - - public: - - void SetAbsorberMaterial (G4String); - void SetAbsorberThickness(G4double); - void SetAbsorberSizeYZ (G4double); - - void SetAbsorberXpos(G4double); - - void SetWorldMaterial(G4String); - void SetWorldSizeX (G4double); - void SetWorldSizeYZ (G4double); - - void SetMagField(G4double); - - G4VPhysicalVolume* Construct(); - - void UpdateGeometry(); - - public: - - void PrintCalorParameters(); - - G4Material* GetAbsorberMaterial() {return AbsorberMaterial;}; - G4double GetAbsorberThickness() {return AbsorberThickness;}; - G4double GetAbsorberSizeYZ() {return AbsorberSizeYZ;}; - - G4double GetAbsorberXpos() {return XposAbs;}; - G4double GetxstartAbs() {return xstartAbs;}; - G4double GetxendAbs() {return xendAbs;}; - - G4Material* GetWorldMaterial() {return WorldMaterial;}; - G4double GetWorldSizeX() {return WorldSizeX;}; - G4double GetWorldSizeYZ() {return WorldSizeYZ;}; - - const G4VPhysicalVolume* GetphysiWorld() {return physiWorld;}; - const G4VPhysicalVolume* GetAbsorber() {return physiAbsorber;}; - - private: - - G4Material* AbsorberMaterial; - G4double AbsorberThickness; - G4double AbsorberSizeYZ; - - G4int NumberOfAbsorbers; - - G4double XposAbs; - G4double xstartAbs, xendAbs; - - G4Material* WorldMaterial; - G4double WorldSizeX; - G4double WorldSizeYZ; - - G4bool defaultWorld; - - G4Box* solidWorld; //pointer to the solid World - G4LogicalVolume* logicWorld; //pointer to the logical World - G4VPhysicalVolume* physiWorld; //pointer to the physical World - - 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 - - Em6DetectorMessenger* detectorMessenger; //pointer to the Messenger - Em6CalorimeterSD* calorimeterSD; //pointer to the sensitive detector - - private: - - void DefineMaterials(); - void ComputeCalorParameters(); - G4VPhysicalVolume* ConstructCalorimeter(); -}; - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -inline void Em6DetectorConstruction::ComputeCalorParameters() -{ - // Compute derived parameters of the 1st absorber - - xstartAbs = XposAbs-0.5*AbsorberThickness; - xendAbs = XposAbs+0.5*AbsorberThickness; - - if (defaultWorld) - { - WorldSizeX = 2.0*AbsorberThickness*NumberOfAbsorbers; - WorldSizeYZ = 1.2*AbsorberSizeYZ; - } -} - -#endif - diff --git a/examples/extended/electromagnetic/TestEm6/include/Em6DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm6/include/Em6DetectorMessenger.hh deleted file mode 100644 index 96487137ef..0000000000 --- a/examples/extended/electromagnetic/TestEm6/include/Em6DetectorMessenger.hh +++ /dev/null @@ -1,66 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By 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 Description: -// Detector mesenger is defined. -// Class Description - end -// -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#ifndef Em6DetectorMessenger_h -#define Em6DetectorMessenger_h 1 - -#include "globals.hh" -#include "G4UImessenger.hh" - -class Em6DetectorConstruction; -class G4UIdirectory; -class G4UIcmdWithAString; -class G4UIcmdWithAnInteger; -class G4UIcmdWithADoubleAndUnit; -class G4UIcmdWithoutParameter; - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -class Em6DetectorMessenger: public G4UImessenger -{ -public: // Without description - - Em6DetectorMessenger(Em6DetectorConstruction* ); - ~Em6DetectorMessenger(); - - void SetNewValue(G4UIcommand*, G4String); - - private: - Em6DetectorConstruction* Em6Detector; - - G4UIdirectory* Em6detDir; - - G4UIcmdWithAString* AbsMaterCmd; - G4UIcmdWithADoubleAndUnit* AbsThickCmd; - G4UIcmdWithADoubleAndUnit* AbsSizYZCmd; - - G4UIcmdWithADoubleAndUnit* AbsXposCmd; - - G4UIcmdWithAString* WorldMaterCmd; - G4UIcmdWithADoubleAndUnit* WorldXCmd; - G4UIcmdWithADoubleAndUnit* WorldYZCmd; - - G4UIcmdWithADoubleAndUnit* MagFieldCmd; - G4UIcmdWithoutParameter* UpdateCmd; - -}; - -#endif - - - - - diff --git a/examples/extended/electromagnetic/TestEm6/include/Em6EventAction.hh b/examples/extended/electromagnetic/TestEm6/include/Em6EventAction.hh deleted file mode 100644 index db4436b85f..0000000000 --- a/examples/extended/electromagnetic/TestEm6/include/Em6EventAction.hh +++ /dev/null @@ -1,65 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By 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 Description: -// Event action definition. -// Class Description - end -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#ifndef Em6EventAction_h -#define Em6EventAction_h 1 - -#include "G4UserEventAction.hh" -#include "globals.hh" - -class Em6RunAction; -class Em6EventActionMessenger; - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -class Em6EventAction : public G4UserEventAction -{ -public: // Without description - - Em6EventAction(Em6RunAction* Em6RA); - ~Em6EventAction(); - - 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;}; - - private: - G4int calorimeterCollID; - Em6EventActionMessenger* eventMessenger; - Em6RunAction* runaction; - G4int verboselevel; - G4double nstep,nstepCharged,nstepNeutral; - G4double Nch,Nne; - G4double NE,NP; - G4double Transmitted,Reflected ; - - G4String drawFlag; -}; - -#endif - - diff --git a/examples/extended/electromagnetic/TestEm6/include/Em6PhysicsList.hh b/examples/extended/electromagnetic/TestEm6/include/Em6PhysicsList.hh deleted file mode 100644 index 3a8b288df6..0000000000 --- a/examples/extended/electromagnetic/TestEm6/include/Em6PhysicsList.hh +++ /dev/null @@ -1,78 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By 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 Description: -// The list of particles and processes are defined in this class. -// Class Description - end -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#ifndef Em6PhysicsList_h -#define Em6PhysicsList_h 1 - -#include "G4VUserPhysicsList.hh" -#include "globals.hh" - -class Em6DetectorConstruction; -class Em6PhysicsListMessenger; - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -class Em6PhysicsList: public G4VUserPhysicsList -{ -public: // Without description - - Em6PhysicsList( Em6DetectorConstruction*); - ~Em6PhysicsList(); - - protected: - // Construct particle and physics - void ConstructParticle(); - void ConstructProcess(); - - void SetCuts(); - - protected: - // these methods Construct particles - void ConstructBosons(); - void ConstructLeptons(); - void ConstructMesons(); - void ConstructBarions(); - void ConstructIons(); - - protected: - // these methods Construct physics processes and register them - void ConstructGeneral(); - void ConstructEM(); - - public: // Without description - - void SetGammaCut(G4double); - void SetElectronCut(G4double); - void SetProtonCut(G4double); - void SetCutsByEnergy(G4double); - void GetRange(G4double); - void SetMaxStep(G4double); - - private: - - G4double cutForGamma; - G4double cutForElectron; - G4double cutForProton; - - G4double MaxChargedStep; - - Em6DetectorConstruction* pDet; - Em6PhysicsListMessenger* physicsListMessenger; -}; - -#endif - - - diff --git a/examples/extended/electromagnetic/TestEm6/include/Em6PhysicsListMessenger.hh b/examples/extended/electromagnetic/TestEm6/include/Em6PhysicsListMessenger.hh deleted file mode 100644 index 37e63221a0..0000000000 --- a/examples/extended/electromagnetic/TestEm6/include/Em6PhysicsListMessenger.hh +++ /dev/null @@ -1,49 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By 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 Description: -// The messenger for physics list class. -// Class Description - end -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#ifndef Em6PhysicsListMessenger_h -#define Em6PhysicsListMessenger_h 1 - -#include "globals.hh" -#include "G4UImessenger.hh" - -class Em6PhysicsList; -class G4UIcmdWithADoubleAndUnit; - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -class Em6PhysicsListMessenger: public G4UImessenger -{ - public: // Without description - - Em6PhysicsListMessenger(Em6PhysicsList*); - ~Em6PhysicsListMessenger(); - - void SetNewValue(G4UIcommand*, G4String); - - private: - - Em6PhysicsList* Em6List; - - G4UIcmdWithADoubleAndUnit* cutGCmd; - G4UIcmdWithADoubleAndUnit* cutECmd; - G4UIcmdWithADoubleAndUnit* cutPCmd; - G4UIcmdWithADoubleAndUnit* rCmd; - G4UIcmdWithADoubleAndUnit* eCmd; - G4UIcmdWithADoubleAndUnit* setMaxStepCmd; -}; - -#endif - diff --git a/examples/extended/electromagnetic/TestEm6/include/Em6PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm6/include/Em6PrimaryGeneratorAction.hh deleted file mode 100644 index 93f588959d..0000000000 --- a/examples/extended/electromagnetic/TestEm6/include/Em6PrimaryGeneratorAction.hh +++ /dev/null @@ -1,47 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By 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 Description: -// Inicialisation of particle gun. -// Class Description - end -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#ifndef Em6PrimaryGeneratorAction_h -#define Em6PrimaryGeneratorAction_h 1 - -#include "G4VUserPrimaryGeneratorAction.hh" -#include "globals.hh" - -class G4ParticleGun; -class G4Event; -class Em6DetectorConstruction; - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -class Em6PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction -{ - public: // Without description - - Em6PrimaryGeneratorAction(Em6DetectorConstruction*); - ~Em6PrimaryGeneratorAction(); - - void GeneratePrimaries(G4Event*); - static G4String GetPrimaryName() ; - - private: - G4ParticleGun* particleGun; - Em6DetectorConstruction* Em6Detector; - - static G4String thePrimaryParticleName; -}; - -#endif - - diff --git a/examples/extended/electromagnetic/TestEm6/include/Em6RunAction.hh b/examples/extended/electromagnetic/TestEm6/include/Em6RunAction.hh deleted file mode 100644 index 84ae1b6ed0..0000000000 --- a/examples/extended/electromagnetic/TestEm6/include/Em6RunAction.hh +++ /dev/null @@ -1,202 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By 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 Description: -// The user has a possibility to define and to fill his histograms in this class. -// Class Description - end -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#ifndef Em6RunAction_h -#define Em6RunAction_h 1 - -#include "G4UserRunAction.hh" -#include "globals.hh" -#include "G4Proton.hh" -#include "G4Alpha.hh" -#include "G4IonC12.hh" -#include "G4IonAr40.hh" -#include "G4IonFe56.hh" -#include "G4Electron.hh" -#include "g4std/iostream" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -class Em6RunMessenger; - -#ifndef G4NOHIST -class HepTupleManager; -class HepHistogram; -#endif - -class G4Run; - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -class Em6RunAction : public G4UserRunAction -{ -public: // Without description - - Em6RunAction(); - ~Em6RunAction(); - -public: // With description - - void BeginOfRunAction(const G4Run*); - // In this method histogramms are booked - - void EndOfRunAction(const G4Run*); - // In this method bookHisto method is called in which histogramms are filled - -public: // Without description - - 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); - -#ifndef G4NOHIST - void SethistName(G4String name) ; -#endif - - 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); - - private: - -#ifndef G4NOHIST - void bookHisto(); - void FillLowEnergyTest(); -#endif - - private: - -#ifndef G4NOHIST - G4String histName ; - HepTupleManager* hbookManager; - HepHistogram *histo1, *histo2, *histo3, *histo4, *histo5 ; - HepHistogram *histo6, *histo7, *histo8, *histo9, *histo10; - HepHistogram *histo11, *histo12, *histo13, *histo14, *histo15; - HepHistogram *histo21, *histo22, *histo23, *histo24, *histo25; - HepHistogram *histo31, *histo32, *histo33, *histo34, *histo35; - HepHistogram *histo41, *histo42, *histo43, *histo44, *histo45; - HepHistogram *histo51, *histo52, *histo53, *histo54, *histo55; - HepHistogram *histo61, *histo62, *histo63, *histo64, *histo65; - HepHistogram *histo71, *histo72, *histo73, *histo74, *histo75, *histo76; - HepHistogram *histo81, *histo82, *histo83, *histo84, *histo85, *histo86; -#endif - - G4double LowestEnergy,HighestEnergy; - G4int TotBin; - - G4ParticleDefinition* theProton ; - const G4Electron* theElectron ; - - 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; - - Em6RunMessenger* runMessenger ; -}; - -#endif - diff --git a/examples/extended/electromagnetic/TestEm6/include/Em6RunMessenger.hh b/examples/extended/electromagnetic/TestEm6/include/Em6RunMessenger.hh deleted file mode 100644 index b407c07fab..0000000000 --- a/examples/extended/electromagnetic/TestEm6/include/Em6RunMessenger.hh +++ /dev/null @@ -1,97 +0,0 @@ - -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By 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 Description: -// The run messenger is defined -// Class Description - end -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#ifndef Em6RunMessenger_h -#define Em6RunMessenger_h 1 - -#include "globals.hh" -#include "G4UImessenger.hh" -#include "G4ios.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -class Em6RunAction; -class G4UIdirectory; -class G4UIcmdWithAnInteger; -class G4UIcmdWithADoubleAndUnit; -class G4UIcmdWithADouble; -class G4UIcmdWithAString; - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -class Em6RunMessenger: public G4UImessenger -{ -public: // Without description - - Em6RunMessenger(Em6RunAction* ); - ~Em6RunMessenger(); - - void SetNewValue(G4UIcommand* ,G4String ); - -private: - - Em6RunAction* runAction; - - G4UIdirectory* plotDir; - -#ifndef G4NOHIST - G4UIcmdWithAString* sethistNameCmd; -#endif - - 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; - -}; - -#endif - diff --git a/examples/extended/electromagnetic/TestEm6/include/Em6StepCut.hh b/examples/extended/electromagnetic/TestEm6/include/Em6StepCut.hh deleted file mode 100644 index 791c35106d..0000000000 --- a/examples/extended/electromagnetic/TestEm6/include/Em6StepCut.hh +++ /dev/null @@ -1,120 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By 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 Description: -// Step cut is defined -// Class Description - end -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#ifndef Em6StepCut_h -#define Em6StepCut_h 1 - -#include "G4ios.hh" -#include "globals.hh" -#include "G4VDiscreteProcess.hh" -#include "G4Step.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -class Em6StepCut : public G4VDiscreteProcess -{ -public: // Without description - - Em6StepCut(const G4String& processName ="UserStepCut" ); - Em6StepCut(Em6StepCut &); - - ~Em6StepCut(); - - 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 - Em6StepCut& operator=(const Em6StepCut &right); - - private: - - G4double MaxChargedStep; -}; - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -// inlined function members implementation - -#include "G4Step.hh" -#include "G4Track.hh" -#include "G4UserLimits.hh" -#include "G4VParticleChange.hh" -#include "G4EnergyLossTables.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -inline G4double Em6StepCut::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; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -inline G4VParticleChange* Em6StepCut::PostStepDoIt( - const G4Track& aTrack, - const G4Step& - ) -{ - // do nothing - aParticleChange.Initialize(aTrack); - return &aParticleChange; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -inline G4double Em6StepCut::GetMeanFreePath(const G4Track& aTrack, - G4double previousStepSize, - G4ForceCondition* condition - ) -{ - return 0.; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#endif - diff --git a/examples/extended/electromagnetic/TestEm6/include/Em6SteppingAction.hh b/examples/extended/electromagnetic/TestEm6/include/Em6SteppingAction.hh deleted file mode 100644 index b057bcffec..0000000000 --- a/examples/extended/electromagnetic/TestEm6/include/Em6SteppingAction.hh +++ /dev/null @@ -1,53 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By 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 Description: -// Actions on each step are defined -// Class Description - end -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#ifndef Em6SteppingAction_h -#define Em6SteppingAction_h 1 - -#include "G4UserSteppingAction.hh" -#include "G4Event.hh" -#include "G4EventManager.hh" -#include "G4ios.hh" -#include "globals.hh" - -class Em6DetectorConstruction; -class Em6RunAction; -class Em6EventAction; -class Em6SteppingMessenger; - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -class Em6SteppingAction : public G4UserSteppingAction -{ -public: // Without description - - Em6SteppingAction(Em6DetectorConstruction*, Em6EventAction*, - Em6RunAction* ); - ~Em6SteppingAction(); - - void UserSteppingAction(const G4Step*); - - private: - Em6DetectorConstruction* detector; - Em6EventAction* eventaction; - Em6RunAction* runaction; - Em6SteppingMessenger* steppingMessenger; - - G4int IDnow,IDold; - G4int evnoold ; - -}; - -#endif diff --git a/examples/extended/electromagnetic/TestEm6/include/Em6SteppingMessenger.hh b/examples/extended/electromagnetic/TestEm6/include/Em6SteppingMessenger.hh deleted file mode 100644 index bba980292d..0000000000 --- a/examples/extended/electromagnetic/TestEm6/include/Em6SteppingMessenger.hh +++ /dev/null @@ -1,48 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By 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 Description: -// The stepping messenger is defined -// Class Description - end -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#ifndef Em6SteppingMessenger_h -#define Em6SteppingMessenger_h 1 - -#include "globals.hh" -#include "G4UImessenger.hh" -#include "G4ios.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -class Em6SteppingAction; -class G4UIdirectory; - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -class Em6SteppingMessenger: public G4UImessenger -{ -public: // Without description - - Em6SteppingMessenger(Em6SteppingAction* ); - ~Em6SteppingMessenger(); - - void SetNewValue(G4UIcommand* ,G4String ); - - private: - - Em6SteppingAction* steppingAction; - - G4UIdirectory* steppingDir; - -}; - -#endif - diff --git a/examples/extended/electromagnetic/TestEm6/include/Em6SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm6/include/Em6SteppingVerbose.hh deleted file mode 100644 index 691fc40b4a..0000000000 --- a/examples/extended/electromagnetic/TestEm6/include/Em6SteppingVerbose.hh +++ /dev/null @@ -1,47 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: Em6SteppingVerbose.hh,v 1.2 1999/12/15 14:49:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// -//--------------------------------------------------------------- -// -// Em6SteppingVerbose.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 Em6SteppingVerbose; - -#ifndef Em6SteppingVerbose_h -#define Em6SteppingVerbose_h 1 - -#include "G4SteppingVerbose.hh" - -class Em6SteppingVerbose : public G4SteppingVerbose { -public: -// Constructor/Destructor - Em6SteppingVerbose(); - ~Em6SteppingVerbose(); -// - void StepInfo(); - void TrackingStarted(); -// - - -}; - -#endif diff --git a/examples/extended/electromagnetic/TestEm6/include/Em6VisManager.hh b/examples/extended/electromagnetic/TestEm6/include/Em6VisManager.hh deleted file mode 100644 index d25e45c500..0000000000 --- a/examples/extended/electromagnetic/TestEm6/include/Em6VisManager.hh +++ /dev/null @@ -1,48 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -// Class Description: -// 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); -// The run messenger is defined -// Class Description - end - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#ifndef Em6VisManager_h -#define Em6VisManager_h 1 - -#include "G4VisManager.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -class Em6VisManager: public G4VisManager { - -public: // Without description - - Em6VisManager (); - -private: - - void RegisterGraphicsSystems (); - -}; - -#endif diff --git a/examples/extended/electromagnetic/TestEm6/include/G4IonAr40.hh b/examples/extended/electromagnetic/TestEm6/include/G4IonAr40.hh deleted file mode 100644 index a4bc982b97..0000000000 --- a/examples/extended/electromagnetic/TestEm6/include/G4IonAr40.hh +++ /dev/null @@ -1,81 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4IonAr40.hh,v 1.4 2000/01/19 20:55:11 vnivanch Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// For information related to this code contact: -// CERN, CN Division, ASD group -// History: first implementation, based on object model of -// 4-th April 1996, G.Cosmo -// **************************************************************** -// 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 -// ---------------------------------------------------------------- - -// Class Description: -// The new ion Ar40+ is defined as G4VIon. -// Each class inheriting from G4VIon -// corresponds to a particle type; one and only one -// instance for each class is guaranteed. -// Class Description - end - -#ifndef G4IonAr40_h -#define G4IonAr40_h 1 - -#include "globals.hh" -#include "G4ios.hh" -#include "G4VIon.hh" - -// ###################################################################### -// ### IonAr40 ### -// ###################################################################### - -class G4IonAr40 : public G4VIon -{ - private: - static G4IonAr40 theIonAr40; - static G4double theIonAr40LengthCut; - static G4double* theIonAr40KineticEnergyCuts; - -public: // Without description - - G4IonAr40( - const G4String& aName, G4double mass, - G4double width, G4double charge, - G4int iSpin, G4int iParity, - G4int iConjugation, G4int iIsospin, - G4int iIsospin3, G4int gParity, - const G4String& pType, G4int lepton, - G4int baryon, G4int encoding, - G4bool stable, G4double lifetime, - G4DecayTable *decaytable - ); - virtual ~G4IonAr40(); - - static G4IonAr40* IonAr40Definition(); - static G4IonAr40* IonAr40() {return &theIonAr40;} - static G4double GetCuts() {return theIonAr40LengthCut;} - static G4double* GetCutsInEnergy() {return theIonAr40KineticEnergyCuts;}; - - void SetCuts(G4double aCut); -}; - -inline void G4IonAr40::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theIonAr40LengthCut = theCutInMaxInteractionLength; - theIonAr40KineticEnergyCuts = theKineticEnergyCuts; - -} - -#endif diff --git a/examples/extended/electromagnetic/TestEm6/include/G4IonC12.hh b/examples/extended/electromagnetic/TestEm6/include/G4IonC12.hh deleted file mode 100644 index 32641c6104..0000000000 --- a/examples/extended/electromagnetic/TestEm6/include/G4IonC12.hh +++ /dev/null @@ -1,82 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4IonC12.hh,v 1.4 2000/01/19 20:55:11 vnivanch Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// For information related to this code contact: -// CERN, CN Division, ASD group -// History: first implementation, based on object model of -// 4-th April 1996, G.Cosmo -// **************************************************************** -// 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 -// ---------------------------------------------------------------- - -// Class Description: -// The new ion C12+ is defined as G4VIon. -// Each class inheriting from G4VIon -// corresponds to a particle type; one and only one -// instance for each class is guaranteed. -// Class Description - end - - -#ifndef G4IonC12_h -#define G4IonC12_h 1 - -#include "globals.hh" -#include "G4ios.hh" -#include "G4VIon.hh" - -// ###################################################################### -// ### IonC12 ### -// ###################################################################### - -class G4IonC12 : public G4VIon -{ - private: - static G4IonC12 theIonC12; - static G4double theIonC12LengthCut; - static G4double* theIonC12KineticEnergyCuts; - -public: // Without description - - G4IonC12( - const G4String& aName, G4double mass, - G4double width, G4double charge, - G4int iSpin, G4int iParity, - G4int iConjugation, G4int iIsospin, - G4int iIsospin3, G4int gParity, - const G4String& pType, G4int lepton, - G4int baryon, G4int encoding, - G4bool stable, G4double lifetime, - G4DecayTable *decaytable - ); - virtual ~G4IonC12(); - - static G4IonC12* IonC12Definition(); - static G4IonC12* IonC12() {return &theIonC12;} - static G4double GetCuts() {return theIonC12LengthCut;} - static G4double* GetCutsInEnergy() {return theIonC12KineticEnergyCuts;}; - - void SetCuts(G4double aCut); -}; - -inline void G4IonC12::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theIonC12LengthCut = theCutInMaxInteractionLength; - theIonC12KineticEnergyCuts = theKineticEnergyCuts; - -} - -#endif diff --git a/examples/extended/electromagnetic/TestEm6/include/G4IonFe56.hh b/examples/extended/electromagnetic/TestEm6/include/G4IonFe56.hh deleted file mode 100644 index 988e2f1d63..0000000000 --- a/examples/extended/electromagnetic/TestEm6/include/G4IonFe56.hh +++ /dev/null @@ -1,82 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4IonFe56.hh,v 1.4 2000/01/19 20:55:11 vnivanch Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// For information related to this code contact: -// CERN, CN Division, ASD group -// History: first implementation, based on object model of -// 4-th April 1996, G.Cosmo -// **************************************************************** -// 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 -// ---------------------------------------------------------------- - -// Class Description: -// The new ion Fe56+ is defined as G4VIon. -// Each class inheriting from G4VIon -// corresponds to a particle type; one and only one -// instance for each class is guaranteed. -// Class Description - end - -#ifndef G4IonFe56_h -#define G4IonFe56_h 1 - -#include "globals.hh" -#include "G4ios.hh" -#include "G4VIon.hh" - -// ###################################################################### -// ### IonFe56 ### -// ###################################################################### - -class G4IonFe56 : public G4VIon -{ - private: - static G4IonFe56 theIonFe56; - static G4double theIonFe56LengthCut; - static G4double* theIonFe56KineticEnergyCuts; - -public: // Without description - - G4IonFe56( - const G4String& aName, G4double mass, - G4double width, G4double charge, - G4int iSpin, G4int iParity, - G4int iConjugation, G4int iIsospin, - G4int iIsospin3, G4int gParity, - const G4String& pType, G4int lepton, - G4int baryon, G4int encoding, - G4bool stable, G4double lifetime, - G4DecayTable *decaytable - ); - virtual ~G4IonFe56(); - - static G4IonFe56* IonFe56Definition(); - static G4IonFe56* IonFe56() {return &theIonFe56;} - static G4double GetCuts() {return theIonFe56LengthCut;} - static G4double* GetCutsInEnergy() {return theIonFe56KineticEnergyCuts;}; - - void SetCuts(G4double aCut); -}; - -inline void G4IonFe56::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theIonFe56LengthCut = theCutInMaxInteractionLength; - theIonFe56KineticEnergyCuts = theKineticEnergyCuts; - -} - -#endif - diff --git a/examples/extended/electromagnetic/TestEm6/src/Em6CalorHit.cc b/examples/extended/electromagnetic/TestEm6/src/Em6CalorHit.cc deleted file mode 100644 index d729112e74..0000000000 --- a/examples/extended/electromagnetic/TestEm6/src/Em6CalorHit.cc +++ /dev/null @@ -1,60 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#include "Em6CalorHit.hh" - -G4Allocator Em6CalorHitAllocator; - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6CalorHit::Em6CalorHit() -{ - EdepAbs = 0.; TrackLengthAbs = 0.; - EdepGap = 0.; TrackLengthGap = 0.; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6CalorHit::~Em6CalorHit() -{;} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6CalorHit::Em6CalorHit(const Em6CalorHit& right) -{ - EdepAbs = right.EdepAbs; TrackLengthAbs = right.TrackLengthAbs; - EdepGap = right.EdepGap; TrackLengthGap = right.TrackLengthGap; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -const Em6CalorHit& Em6CalorHit::operator=(const Em6CalorHit& right) -{ - EdepAbs = right.EdepAbs; TrackLengthAbs = right.TrackLengthAbs; - EdepGap = right.EdepGap; TrackLengthGap = right.TrackLengthGap; - return *this; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -int Em6CalorHit::operator==(const Em6CalorHit& right) const -{ - return 0; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6CalorHit::Print() -{;} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - diff --git a/examples/extended/electromagnetic/TestEm6/src/Em6DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm6/src/Em6DetectorConstruction.cc deleted file mode 100644 index 0078636cc5..0000000000 --- a/examples/extended/electromagnetic/TestEm6/src/Em6DetectorConstruction.cc +++ /dev/null @@ -1,371 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By 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 example -// -// For information related to this code contact: -// CERN, IT Division, ASD group -// History: based on object model of -// 2nd December 1995, G.Cosmo -// ---------- Em6DetectorConstruction ------- -// by Vladimir Ivanchenko, 23 July 1999 -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#include "Em6DetectorConstruction.hh" -#include "Em6DetectorMessenger.hh" - -#include "Em6CalorimeterSD.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 "G4VisAttributes.hh" -#include "G4Colour.hh" - -#include "G4ios.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6DetectorConstruction::Em6DetectorConstruction() -:solidWorld(NULL),logicWorld(NULL),physiWorld(NULL), - solidAbsorber(NULL),logicAbsorber(NULL),physiAbsorber(NULL), - AbsorberMaterial(NULL),WorldMaterial(NULL), - magField(NULL),calorimeterSD(NULL),defaultWorld(true) -{ - // default parameter values of the calorimeter - AbsorberThickness = 1.0*mm; - AbsorberSizeYZ = 10.*cm; - XposAbs = 0.*cm ; - NumberOfAbsorbers = 250; - ComputeCalorParameters(); - - // create commands for interactive definition of the calorimeter - detectorMessenger = new Em6DetectorMessenger(this); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6DetectorConstruction::~Em6DetectorConstruction() -{ - delete detectorMessenger; - } - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4VPhysicalVolume* Em6DetectorConstruction::Construct() -{ - DefineMaterials(); - return ConstructCalorimeter(); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6DetectorConstruction::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; //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 = 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 = 12.00*g/mole; -G4Element* elC = new G4Element(name="Carbon" ,symbol="C" , z= 6., 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 = 2.700*g/cm3; -a = 26.98*g/mole; -G4Material* Al = new G4Material(name="Aluminum", z=13., a, density); - -density = 2.0*g/cm3; -a = 12.0107*g/mole; -G4Material* C = new G4Material(name="Carbon", z=6., a, density); - -density = 2.330*g/cm3; -a = 28.09*g/mole; -G4Material* Si = new G4Material(name="Silicon", z=14., 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", symbol="H_2O", density, ncomponents=2); -H2O->AddElement(elH, natoms=2); -H2O->AddElement(elO, natoms=1); - -density = 0.00066715*g/cm3; -G4Material* CH4 = new G4Material(name="Methane", symbol="CH_4", density, ncomponents=2); -CH4->AddElement(elH, natoms=4); -CH4->AddElement(elC, natoms=1); - -G4Material* Graphite = new G4Material(name="Graphite", symbol="Graphite", - density=2.265*g/cm3, ncomponents=1); -Graphite->AddElement( elC, 1 ); -// -// define a material from elements. case 2: mixture by fractional mass -// - -//density = 1.290*mg/cm3; -density = 1.*mg/cm3; -G4Material* Air = new G4Material(name="Air" , density, ncomponents=2); -Air->AddElement(elN, fractionmass=0.7); -Air->AddElement(elO, fractionmass=0.3); - -G4cout << *(G4Material::GetMaterialTable()) << G4endl; - - //default materials of the calorimeter - AbsorberMaterial = H2O; - // AbsorberMaterial = Si; - WorldMaterial = Air; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4VPhysicalVolume* Em6DetectorConstruction::ConstructCalorimeter() -{ - // complete the Calor parameters definition and Print - ComputeCalorParameters(); - - // - // World - // - solidWorld = new G4Box("World", //its name - WorldSizeX/2, //its size X - WorldSizeYZ/2,WorldSizeYZ/2); //its size YZ - - logicWorld = new G4LogicalVolume(solidWorld, //its solid - WorldMaterial, //its material - "World"); //its name - - physiWorld = new G4PVPlacement(0, //no rotation - G4ThreeVector(), //no moving - "World", //its name - logicWorld, //its logical volume - NULL, //its mother volume - false, //no boolean operation - 0); //copy number - - // - // Absorber - // - solidAbsorber = new G4Box("Absorber", - AbsorberThickness/2,AbsorberSizeYZ/2,AbsorberSizeYZ/2); - - logicAbsorber = new G4LogicalVolume(solidAbsorber, //its solid - AbsorberMaterial, //its material - "Absorber"); //its name - - G4int copyNo=0; - G4double x ; - - for (G4int j=0; jAddNewDetector( calorimeterSD ); - logicAbsorber->SetSensitiveDetector(calorimeterSD); - - // - // Visualization attributes - // - G4VisAttributes* VisAtt= new G4VisAttributes(G4Colour(1.0,1.0,1.0)); - VisAtt->SetVisibility(true); - logicWorld->SetVisAttributes(VisAtt); - - // - //always return the physical World - // - PrintCalorParameters(); - return physiWorld; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6DetectorConstruction::PrintCalorParameters() -{ - 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 " << NumberOfAbsorbers << " items of " - <GetName(); - G4cout << ". The transverse size (YZ) is " - << G4BestUnit(AbsorberSizeYZ,"Length") << G4endl; - G4cout << " X position of the middle of the absorber " << G4BestUnit(XposAbs,"Length"); - G4cout << G4endl; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6DetectorConstruction::SetAbsorberMaterial(G4String materialChoice) -{ - // search the material by its name - G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice); - if (pttoMaterial) - {AbsorberMaterial = pttoMaterial; - logicAbsorber->SetMaterial(pttoMaterial); - PrintCalorParameters(); - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6DetectorConstruction::SetWorldMaterial(G4String materialChoice) -{ - // search the material by its name - G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice); - if (pttoMaterial) - {WorldMaterial = pttoMaterial; - logicWorld->SetMaterial(pttoMaterial); - PrintCalorParameters(); - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6DetectorConstruction::SetAbsorberThickness(G4double val) -{ - // change Absorber thickness and recompute the calorimeter parameters - AbsorberThickness = val; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6DetectorConstruction::SetAbsorberSizeYZ(G4double val) -{ - // change the transverse size and recompute the calorimeter parameters - AbsorberSizeYZ = val; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6DetectorConstruction::SetWorldSizeX(G4double val) -{ - WorldSizeX = val; - defaultWorld = false; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6DetectorConstruction::SetWorldSizeYZ(G4double val) -{ - WorldSizeYZ = val; - defaultWorld = false; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6DetectorConstruction::SetAbsorberXpos(G4double val) -{ - XposAbs = val; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6DetectorConstruction::SetMagField(G4double fieldValue) -{ - //apply a global uniform magnetic field along Z 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(0.,0.,fieldValue)); - fieldMgr->SetDetectorField(magField); - fieldMgr->CreateChordFinder(magField); - } else { - magField = NULL; - fieldMgr->SetDetectorField(magField); - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6DetectorConstruction::UpdateGeometry() -{ - G4RunManager::GetRunManager()->DefineWorldVolume(ConstructCalorimeter()); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - - - - - - - - diff --git a/examples/extended/electromagnetic/TestEm6/src/Em6DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm6/src/Em6DetectorMessenger.cc deleted file mode 100644 index 3df0e5ae78..0000000000 --- a/examples/extended/electromagnetic/TestEm6/src/Em6DetectorMessenger.cc +++ /dev/null @@ -1,137 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#include "Em6DetectorMessenger.hh" - -#include "Em6DetectorConstruction.hh" -#include "G4UIdirectory.hh" -#include "G4UIcmdWithAString.hh" -#include "G4UIcmdWithAnInteger.hh" -#include "G4UIcmdWithADoubleAndUnit.hh" -#include "G4UIcmdWithoutParameter.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6DetectorMessenger::Em6DetectorMessenger(Em6DetectorConstruction * Em6Det) -:Em6Detector(Em6Det) -{ - Em6detDir = new G4UIdirectory("/calor/"); - Em6detDir->SetGuidance("Em6 detector control."); - - AbsMaterCmd = new G4UIcmdWithAString("/calor/setAbsMat",this); - AbsMaterCmd->SetGuidance("Select Material of the Absorber."); - AbsMaterCmd->SetParameterName("choice",false); - AbsMaterCmd->AvailableForStates(Idle); - - WorldMaterCmd = new G4UIcmdWithAString("/calor/setWorldMat",this); - WorldMaterCmd->SetGuidance("Select Material of the World."); - WorldMaterCmd->SetParameterName("wchoice",false); - WorldMaterCmd->AvailableForStates(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); - - 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); - - AbsXposCmd = new G4UIcmdWithADoubleAndUnit("/calor/setAbsXpos",this); - AbsXposCmd->SetGuidance("Set X pos. of the Absorber"); - AbsXposCmd->SetParameterName("Xpos",false); - AbsXposCmd->SetUnitCategory("Length"); - AbsXposCmd->AvailableForStates(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); - - 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); - - 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); - - 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); - -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6DetectorMessenger::~Em6DetectorMessenger() -{ - delete AbsMaterCmd; - delete AbsThickCmd; - delete AbsSizYZCmd; - delete AbsXposCmd; - delete WorldMaterCmd; - delete WorldXCmd; - delete WorldYZCmd; - delete UpdateCmd; - delete MagFieldCmd; - delete Em6detDir; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue) -{ - if( command == AbsMaterCmd ) - { Em6Detector->SetAbsorberMaterial(newValue);} - - if( command == WorldMaterCmd ) - { Em6Detector->SetWorldMaterial(newValue);} - - if( command == AbsThickCmd ) - { Em6Detector->SetAbsorberThickness(AbsThickCmd->GetNewDoubleValue(newValue));} - - if( command == AbsSizYZCmd ) - { Em6Detector->SetAbsorberSizeYZ(AbsSizYZCmd->GetNewDoubleValue(newValue));} - - if( command == AbsXposCmd ) - { Em6Detector->SetAbsorberXpos(AbsXposCmd->GetNewDoubleValue(newValue));} - - if( command == WorldXCmd ) - { Em6Detector->SetWorldSizeX(WorldXCmd->GetNewDoubleValue(newValue));} - - if( command == WorldYZCmd ) - { Em6Detector->SetWorldSizeYZ(WorldYZCmd->GetNewDoubleValue(newValue));} - - if( command == UpdateCmd ) - { Em6Detector->UpdateGeometry(); } - - if( command == MagFieldCmd ) - { Em6Detector->SetMagField(MagFieldCmd->GetNewDoubleValue(newValue));} -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/electromagnetic/TestEm6/src/Em6DetectorSD.cc b/examples/extended/electromagnetic/TestEm6/src/Em6DetectorSD.cc deleted file mode 100644 index 6f63fbab1c..0000000000 --- a/examples/extended/electromagnetic/TestEm6/src/Em6DetectorSD.cc +++ /dev/null @@ -1,119 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#include "Em6CalorimeterSD.hh" - -#include "Em6CalorHit.hh" -#include "Em6DetectorConstruction.hh" - -#include "G4VPhysicalVolume.hh" -#include "G4Step.hh" -#include "G4VTouchable.hh" -#include "G4TouchableHistory.hh" -#include "G4SDManager.hh" - -#include "G4ios.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6CalorimeterSD::Em6CalorimeterSD(G4String name, - Em6DetectorConstruction* det) -:G4VSensitiveDetector(name),Detector(det) -{ - collectionName.insert("CalCollection"); - HitID = new G4int[500]; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6CalorimeterSD::~Em6CalorimeterSD() -{ - delete [] HitID; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6CalorimeterSD::Initialize(G4HCofThisEvent*HCE) -{ - CalCollection = new Em6CalorHitsCollection - (SensitiveDetectorName,collectionName[0]); - for (G4int j=0;j<1; j++) {HitID[j] = -1;}; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4bool Em6CalorimeterSD::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 Em6Number = 0 ; - - if (HitID[Em6Number]==-1) - { - Em6CalorHit* calHit = new Em6CalorHit(); - if (physVol == Detector->GetAbsorber()) calHit->AddAbs(edep,stepl); - HitID[Em6Number] = CalCollection->insert(calHit) - 1; - if (verboseLevel>0) - G4cout << " New Calorimeter Hit on Em6: " << Em6Number << G4endl; - } - else - { - if (physVol == Detector->GetAbsorber()) - (*CalCollection)[HitID[Em6Number]]->AddAbs(edep,stepl); - if (verboseLevel>0) - G4cout << " Energy added to Em6: " << Em6Number << G4endl; - } - - return true; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6CalorimeterSD::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 Em6CalorimeterSD::clear() -{} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - - -void Em6CalorimeterSD::PrintAll() -{} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - - - - - - - diff --git a/examples/extended/electromagnetic/TestEm6/src/Em6EventAction.cc b/examples/extended/electromagnetic/TestEm6/src/Em6EventAction.cc deleted file mode 100644 index 2285e0c722..0000000000 --- a/examples/extended/electromagnetic/TestEm6/src/Em6EventAction.cc +++ /dev/null @@ -1,215 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#include "Em6EventAction.hh" - -#include "Em6RunAction.hh" - -#include "Em6CalorHit.hh" -#include "Em6EventActionMessenger.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" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6EventAction::Em6EventAction(Em6RunAction* Em6RA) -:calorimeterCollID(-1),eventMessenger(NULL), - verboselevel(0),runaction (Em6RA),drawFlag("all") -{ - eventMessenger = new Em6EventActionMessenger(this); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6EventAction::~Em6EventAction() -{ - delete eventMessenger; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6EventAction::BeginOfEventAction(const G4Event* evt) -{ if(calorimeterCollID==-1) - { - G4SDManager * SDman = G4SDManager::GetSDMpointer(); - calorimeterCollID = SDman->GetCollectionID("CalCollection"); - } - - if(verboselevel>1) - G4cout << "<<< Event " << evt->GetEventID() << " started." << G4endl; - nstep = 0. ; - nstepCharged = 0. ; - nstepNeutral = 0. ; - Nch = 0. ; - Nne = 0. ; - NE=0.; - NP=0.; - Transmitted=0.; - Reflected =0.; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6EventAction::EndOfEventAction(const G4Event* evt) -{ - G4HCofThisEvent* HCE = evt->GetHCofThisEvent(); - Em6CalorHitsCollection* CHC = NULL; - if (HCE) - CHC = (Em6CalorHitsCollection*)(HCE->GetHC(calorimeterCollID)); - - if (CHC) - { - int n_hit = CHC->entries(); - // if(verboselevel==2) - // G4cout << " " << n_hit - // << " hits are stored in Em6CalorHitsCollection." << 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; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4int Em6EventAction::GetEventno() -{ - G4int evno = fpEventManager->GetConstCurrentEvent()->GetEventID() ; - return evno ; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6EventAction::setEventVerbose(G4int level) -{ - verboselevel = level ; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6EventAction::CountStepsCharged() -{ - nstepCharged += 1. ; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6EventAction::CountStepsNeutral() -{ - nstepNeutral += 1. ; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6EventAction::AddCharged() -{ - Nch += 1.; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6EventAction::AddNeutral() -{ - Nne += 1.; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6EventAction::AddE() -{ - NE += 1.; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6EventAction::AddP() -{ - NP += 1.; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6EventAction::SetTr() -{ - Transmitted = 1.; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6EventAction::SetRef() -{ - Reflected = 1.; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - - - - - - - - - - diff --git a/examples/extended/electromagnetic/TestEm6/src/Em6EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm6/src/Em6EventActionMessenger.cc deleted file mode 100644 index e9bfc672d8..0000000000 --- a/examples/extended/electromagnetic/TestEm6/src/Em6EventActionMessenger.cc +++ /dev/null @@ -1,59 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#include "Em6EventActionMessenger.hh" - -#include "Em6EventAction.hh" -#include "G4UIcmdWithAString.hh" -#include "G4UIcmdWithAnInteger.hh" -#include "G4UIcmdWithADoubleAndUnit.hh" -#include "globals.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6EventActionMessenger::Em6EventActionMessenger(Em6EventAction* 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); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6EventActionMessenger::~Em6EventActionMessenger() -{ - delete setVerboseCmd; - delete DrawCmd; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6EventActionMessenger::SetNewValue(G4UIcommand * command,G4String newValue) -{ - if(command == setVerboseCmd) - {eventAction->setEventVerbose(setVerboseCmd->GetNewIntValue(newValue));} - - if(command == DrawCmd) - {eventAction->SetDrawFlag(newValue);} -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/electromagnetic/TestEm6/src/Em6PhysicsList.cc b/examples/extended/electromagnetic/TestEm6/src/Em6PhysicsList.cc deleted file mode 100644 index b5672c1f4d..0000000000 --- a/examples/extended/electromagnetic/TestEm6/src/Em6PhysicsList.cc +++ /dev/null @@ -1,441 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -// -// Always place it in front! -// -#include "G4Timer.hh" - -#include "Em6PhysicsList.hh" -#include "Em6DetectorConstruction.hh" -#include "Em6PhysicsListMessenger.hh" - -#include "G4ParticleDefinition.hh" -#include "G4ParticleWithCuts.hh" -#include "G4IonC12.hh" -#include "G4IonAr40.hh" -#include "G4IonFe56.hh" -#include "G4ProcessManager.hh" -#include "G4ProcessVector.hh" -#include "G4ParticleTypes.hh" -#include "G4ParticleTable.hh" -#include "G4Material.hh" -#include "G4EnergyLossTables.hh" -#include "G4ios.hh" -#include "g4std/iomanip" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6PhysicsList::Em6PhysicsList(Em6DetectorConstruction* p) -:G4VUserPhysicsList() -{ - pDet = p; - - defaultCutValue = 1*mm; - cutForGamma = defaultCutValue; - cutForElectron = defaultCutValue; - cutForProton = defaultCutValue; - - // MaxChargedStep = DBL_MAX; - MaxChargedStep = 1*mm; - - SetVerboseLevel(2); - physicsListMessenger = new Em6PhysicsListMessenger(this); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6PhysicsList::~Em6PhysicsList() -{ - delete physicsListMessenger; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6PhysicsList::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(); - ConstructMesons(); - ConstructIons(); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6PhysicsList::ConstructBosons() -{ - // pseudo-particles - G4Geantino::GeantinoDefinition(); - G4ChargedGeantino::ChargedGeantinoDefinition(); - - // gamma - G4Gamma::GammaDefinition(); -} - //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6PhysicsList::ConstructLeptons() -{ - // leptons - G4Electron::ElectronDefinition(); - G4Positron::PositronDefinition(); - G4MuonPlus::MuonPlusDefinition(); - G4MuonMinus::MuonMinusDefinition(); - - G4NeutrinoE::NeutrinoEDefinition(); - G4AntiNeutrinoE::AntiNeutrinoEDefinition(); - G4NeutrinoMu::NeutrinoMuDefinition(); - G4AntiNeutrinoMu::AntiNeutrinoMuDefinition(); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6PhysicsList::ConstructMesons() -{ - // mesons - G4PionPlus::PionPlusDefinition(); - G4PionMinus::PionMinusDefinition(); - G4PionZero::PionZeroDefinition(); - G4KaonPlus::KaonPlusDefinition(); - G4KaonMinus::KaonMinusDefinition(); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6PhysicsList::ConstructBarions() -{ -// barions - G4Proton::ProtonDefinition(); - G4AntiProton::AntiProtonDefinition(); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6PhysicsList::ConstructIons() -{ -// Ions - G4Deuteron::DeuteronDefinition(); - G4Alpha::AlphaDefinition(); - G4IonC12::IonC12Definition(); - G4IonAr40::IonAr40Definition(); - G4IonFe56::IonFe56Definition(); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6PhysicsList::ConstructProcess() -{ - AddTransportation(); - ConstructEM(); - ConstructGeneral(); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#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 "G4ionIonisation.hh" -#include "G4hLowEnergyIonisation.hh" -#include "G4ionLowEnergyIonisation.hh" - -#include "Em6StepCut.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6PhysicsList::ConstructEM() -{ - theParticleIterator->reset(); - while( (*theParticleIterator)() ){ - G4ParticleDefinition* particle = theParticleIterator->value(); - G4ProcessManager* pmanager = particle->GetProcessManager(); - G4String particleName = particle->GetParticleName(); - - if (particleName == "gamma") { - // gamma - pmanager->AddDiscreteProcess(new G4PhotoElectricEffect); - pmanager->AddDiscreteProcess(new G4ComptonScattering); - pmanager->AddDiscreteProcess(new G4GammaConversion); - - } else if (particleName == "e-") { - //electron - pmanager->AddProcess(new G4MultipleScattering, -1, 1,1); - pmanager->AddProcess(new G4eIonisation, -1, 2,2); - pmanager->AddProcess(new G4eBremsstrahlung, -1,-1,3); - - Em6StepCut* theeminusStepCut = new Em6StepCut(); - theeminusStepCut->SetMaxStep(MaxChargedStep); - pmanager->AddProcess(theeminusStepCut, -1,-1,4); - - } 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); - - Em6StepCut* theeplusStepCut = new Em6StepCut(); - theeplusStepCut->SetMaxStep(MaxChargedStep) ; - pmanager->AddProcess(theeplusStepCut, -1,-1,5); - - } else if( particleName == "mu+" || - particleName == "mu-" ) { - //muon - pmanager->AddProcess(new G4MultipleScattering,-1, 1,1); - pmanager->AddProcess(new G4MuIonisation, -1, 2,2); - pmanager->AddProcess(new G4MuBremsstrahlung, -1,-1,3); - pmanager->AddProcess(new G4MuPairProduction, -1,-1,4); - - } else if ( - particleName == "proton" - || particleName == "anti_proton" - || particleName == "pi+" - || particleName == "pi-" - || particleName == "kaon+" - || particleName == "kaon-" - ) - { - pmanager->AddProcess(new G4MultipleScattering,-1,1,1); - - G4cout << "Hadronic processes for " << particleName << G4endl; - - // Standard ionisation - // G4hIonisation* hIon = new G4hIonisation() ; - - // Standard ionisation with low energy extantion - // G4ionLowEnergyIonisation* hIon = new G4ionLowEnergyIonisation() ; - // hIon->SetNuclearStoppingOff() ; - G4hLowEnergyIonisation* hIon = new G4hLowEnergyIonisation() ; - hIon->SetNuclearStoppingOff() ; - //hIon->SetNuclearStoppingOn() ; - - //hIon->SetStoppingPowerTableName("Ziegler1977He") ; - //hIon->SetStoppingPowerTableName("Ziegler1977H") ; - hIon->SetStoppingPowerTableName("ICRU_R49p") ; - //hIon->SetStoppingPowerTableName("ICRU_R49He") ; - //hIon->SetStoppingPowerTableName("ICRU_R49PowersHe") ; - - hIon->SetAntiProtonStoppingOn(); - - pmanager->AddProcess(hIon,-1,2,2); - - Em6StepCut* thehadronStepCut = new Em6StepCut(); - thehadronStepCut->SetMaxStep(MaxChargedStep); - pmanager->AddProcess( thehadronStepCut, -1,-1,3); - - } else if ( particleName == "alpha" - || particleName == "deuteron" - || particleName == "IonC12" - || particleName == "IonAr40" - || particleName == "IonFe56" - ) - { - pmanager->AddProcess(new G4MultipleScattering,-1,1,1); - - G4cout << "Ionic processes for " << particleName << G4endl; - - // Standard ionisation - // G4ionIonisation* iIon = new G4ionIonisation() ; - - // Standard ionisation with low energy extantion - // G4hLowEnergyIonisation* iIon = new G4hLowEnergyIonisation() ; - G4ionLowEnergyIonisation* iIon = new G4ionLowEnergyIonisation() ; - iIon->SetNuclearStoppingOff() ; - // iIon->SetNuclearStoppingOn() ; - iIon->SetIonDefinition(particle) ; - - //iIon->SetStoppingPowerTableName("Ziegler1977He") ; - //iIon->SetStoppingPowerTableName("Ziegler1977H") ; - iIon->SetStoppingPowerTableName("ICRU_R49p") ; - //iIon->SetStoppingPowerTableName("ICRU_R49He") ; - //iIon->SetStoppingPowerTableName("ICRU_R49PowersHe") ; - - pmanager->AddProcess(iIon,-1,2,2); - - Em6StepCut* theIonStepCut = new Em6StepCut(); - theIonStepCut->SetMaxStep(MaxChargedStep); - pmanager->AddProcess( theIonStepCut, -1,-1,3); - } - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#include "G4Decay.hh" - -void Em6PhysicsList::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); - } - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6PhysicsList::SetCuts() -{ - // G4Timer theTimer ; - // theTimer.Start() ; - - if (verboseLevel >0){ - G4cout << "Em6PhysicsList::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 - - G4cout << "Set cuts for all particles! " << G4endl; - - 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); - - // G4cout << "Dump the table!" << G4endl; - - if (verboseLevel>0) 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); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6PhysicsList::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; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6PhysicsList::SetMaxStep(G4double step) -{ - MaxChargedStep = step ; - G4cout << " MaxChargedStep=" << MaxChargedStep << G4endl; - G4cout << G4endl; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - - - - - - diff --git a/examples/extended/electromagnetic/TestEm6/src/Em6PhysicsListMessenger.cc b/examples/extended/electromagnetic/TestEm6/src/Em6PhysicsListMessenger.cc deleted file mode 100644 index 16370330c0..0000000000 --- a/examples/extended/electromagnetic/TestEm6/src/Em6PhysicsListMessenger.cc +++ /dev/null @@ -1,96 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#include "Em6PhysicsListMessenger.hh" - -#include "Em6PhysicsList.hh" -#include "G4UIcmdWithADoubleAndUnit.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6PhysicsListMessenger::Em6PhysicsListMessenger(Em6PhysicsList * List) -:Em6List(List) -{ - cutGCmd = new G4UIcmdWithADoubleAndUnit("/calor/cutG",this); - cutGCmd->SetGuidance("Set cut values by RANGE for Gamma."); - cutGCmd->SetParameterName("range",false); - cutGCmd->SetRange("range>0."); - cutGCmd->SetUnitCategory("Length"); - cutGCmd->AvailableForStates(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); - - 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); - - eCmd = new G4UIcmdWithADoubleAndUnit("/calor/cutEnergy",this); - eCmd->SetGuidance("Set cut values by ENERGY for charged particles."); - eCmd->SetParameterName("energy",false); - eCmd->SetRange("energy>0."); - eCmd->SetUnitCategory("Energy"); - eCmd->AvailableForStates(Idle); - - rCmd = new G4UIcmdWithADoubleAndUnit("/calor/range",this); - rCmd->SetGuidance("Display the RANGE of Electron for the current material."); - rCmd->SetParameterName("energy",false); - rCmd->SetRange("energy>0."); - rCmd->SetUnitCategory("Energy"); - rCmd->AvailableForStates(Idle); - - setMaxStepCmd = new G4UIcmdWithADoubleAndUnit("/step/setMaxStep",this); - setMaxStepCmd->SetGuidance("Set max. step length in the detector"); - setMaxStepCmd->SetParameterName("mxStep",false); - setMaxStepCmd->SetRange("mxStep>0."); - setMaxStepCmd->SetUnitCategory("Length"); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6PhysicsListMessenger::~Em6PhysicsListMessenger() -{ - delete cutGCmd; - delete cutECmd; - delete cutPCmd; - delete rCmd; - delete eCmd; - delete setMaxStepCmd; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6PhysicsListMessenger::SetNewValue(G4UIcommand* command,G4String newValue) -{ - if(command == cutGCmd) - { Em6List->SetGammaCut(cutGCmd->GetNewDoubleValue(newValue));} - if(command == cutECmd) - { Em6List->SetElectronCut(eCmd->GetNewDoubleValue(newValue));} - if(command == cutPCmd) - { Em6List->SetProtonCut(eCmd->GetNewDoubleValue(newValue));} - if(command == eCmd) - { Em6List->SetCutsByEnergy(cutECmd->GetNewDoubleValue(newValue));} - if(command == rCmd) - { Em6List->GetRange(rCmd->GetNewDoubleValue(newValue));} - if(command == setMaxStepCmd) - { Em6List->SetMaxStep(setMaxStepCmd->GetNewDoubleValue(newValue));} -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - diff --git a/examples/extended/electromagnetic/TestEm6/src/Em6PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm6/src/Em6PrimaryGeneratorAction.cc deleted file mode 100644 index 84def40d1f..0000000000 --- a/examples/extended/electromagnetic/TestEm6/src/Em6PrimaryGeneratorAction.cc +++ /dev/null @@ -1,80 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#include "Em6PrimaryGeneratorAction.hh" - -#include "Em6DetectorConstruction.hh" - -#include "G4Event.hh" -#include "G4ParticleGun.hh" -#include "G4ParticleTable.hh" -#include "G4ParticleDefinition.hh" -#include "G4ios.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - - G4String Em6PrimaryGeneratorAction::thePrimaryParticleName="e-" ; - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6PrimaryGeneratorAction::Em6PrimaryGeneratorAction( - Em6DetectorConstruction* Em6DC) -:Em6Detector(Em6DC) -{ - G4int n_particle = 1; - particleGun = new G4ParticleGun(n_particle); - - // default particle kinematic - // - G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable(); - G4String particleName; - G4ParticleDefinition* particle - = particleTable->FindParticle(particleName="e-"); - particleGun->SetParticleDefinition(particle); - - thePrimaryParticleName = particle->GetParticleName(); - - particleGun->SetParticleMomentumDirection(G4ThreeVector(1.,0.,0.)); - particleGun->SetParticleEnergy(30.*MeV); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6PrimaryGeneratorAction::~Em6PrimaryGeneratorAction() -{ - delete particleGun; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) -{ - //this function is called at the begining of event - // - thePrimaryParticleName = particleGun->GetParticleDefinition()-> - GetParticleName(); - - G4double x0 = -0.5 * (Em6Detector-> GetAbsorberThickness()); - particleGun->SetParticlePosition(G4ThreeVector(x0, 0*cm, 0*cm)); - - particleGun->GeneratePrimaryVertex(anEvent); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4String Em6PrimaryGeneratorAction::GetPrimaryName() -{ - return thePrimaryParticleName; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - diff --git a/examples/extended/electromagnetic/TestEm6/src/Em6RunAction.cc b/examples/extended/electromagnetic/TestEm6/src/Em6RunAction.cc deleted file mode 100644 index 8d7253bed0..0000000000 --- a/examples/extended/electromagnetic/TestEm6/src/Em6RunAction.cc +++ /dev/null @@ -1,1784 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#include "Em6RunAction.hh" -#include "Em6RunMessenger.hh" - -#include "G4Run.hh" -#include "G4UImanager.hh" -#include "G4VVisManager.hh" -#include "G4ios.hh" -#include "g4std/iomanip" - -#ifndef G4NOHIST -#include "CLHEP/Hist/HBookFile.h" -#include -//#include -#endif - -#include "G4hEnergyLoss.hh" -#include "G4EnergyLossTables.hh" -#include "G4hLowEnergyIonisation.hh" -#include "G4ionLowEnergyIonisation.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6RunAction::Em6RunAction() - :nbinStep(0.),nbinEn(0.),nbinTt(0.),nbinTb(0.), - nbinTsec(0.),nbinTh(0.),nbinThback(0.),nbinR(0.),nbinGamma(0.), - nbinvertexz(0.), -#ifndef G4NOHIST - histName("histfile"),histo1(0),histo2(0),histo3(0),histo4(0),histo5(0), - histo6(0),histo7(0),histo8(0),histo9(0),histo10(0), -#endif - theProton (G4Proton::Proton()), - theElectron ( G4Electron::Electron() ), - LowestEnergy(0.01*keV), - HighestEnergy(100.*TeV), - TotBin(200) -{ - runMessenger = new Em6RunMessenger(this); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6RunAction::~Em6RunAction() -{ - 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 histo11 ; - delete histo12 ; - delete histo13 ; - delete histo14 ; - delete histo15 ; - delete histo21 ; - delete histo22 ; - delete histo23 ; - delete histo24 ; - delete histo25 ; - delete histo31 ; - delete histo32 ; - delete histo33 ; - delete histo34 ; - delete histo35 ; - delete histo41 ; - delete histo42 ; - delete histo43 ; - delete histo44 ; - delete histo45 ; - delete histo51 ; - delete histo52 ; - delete histo53 ; - delete histo54 ; - delete histo55 ; - delete histo61 ; - delete histo62 ; - delete histo63 ; - delete histo64 ; - delete histo65 ; - delete histo71 ; - delete histo72 ; - delete histo73 ; - delete histo74 ; - delete histo75 ; - delete histo76 ; - delete histo81 ; - delete histo82 ; - delete histo83 ; - delete histo84 ; - delete histo85 ; - delete histo86 ; - delete hbookManager; -#endif - -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#ifndef G4NOHIST -void Em6RunAction::bookHisto() -{ - // init hbook - hbookManager = new HBookFile(histName, 68); - // assert (hbookManager != 0); - - // book histograms - if(nbinStep>0) - { - histo1 = hbookManager->histogram("number of steps/event" - ,nbinStep,Steplow,Stephigh) ; - // assert (histo1 != 0); - } - if(nbinEn>0) - { - histo2 = hbookManager->histogram("energy deposit in absorber(in MeV)" - ,nbinEn,Enlow,Enhigh) ; - // 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); - } - - // Test on G4hLowEnergyIonisation - histo11 = hbookManager->histogram("proton 40 keV ionisation (keV*cm2/10^15!atoms) Z77p" - ,92,0.5,92.5) ; - histo12 = hbookManager->histogram("He 10 keV ionisation (keV*cm2/10^15!atoms) Z77 p" - ,92,0.5,92.5) ; - histo13 = hbookManager->histogram("He4 effective charge in Carbon" - ,TotBin,log10(LowestEnergy),log10(HighestEnergy)) ; - histo14 = hbookManager->histogram("C12 ionisation in Al (MeV/(mg/cm^2)) Geant4" - ,TotBin,log10(LowestEnergy),log10(HighestEnergy)) ; - - histo15 = hbookManager->histogram("Ar40 ionisation in Al (MeV/(mg/cm^2)) Geant4" - ,TotBin,log10(LowestEnergy),log10(HighestEnergy)) ; - - histo21 = hbookManager->histogram("proton 40 keV ionisation (keV*cm2/10^15!atoms) G4 Ziegler1977p" - ,92,0.5,92.5) ; - histo22 = hbookManager->histogram("proton 100 keV ionisation (keV*cm2/10^15!atoms) G4 Ziegler1977p" - ,92,0.5,92.5) ; - histo23 = hbookManager->histogram("proton 400 keV ionisation (keV*cm2/10^15!atoms) G4 Ziegler1977p" - ,92,0.5,92.5) ; - histo24 = hbookManager->histogram("proton 1 MeV ionisation (keV*cm2/10^15!atoms) G4 Ziegler1977p" - ,92,0.5,92.5) ; - histo25 = hbookManager->histogram("proton 4 MeV ionisation (keV*cm2/10^15!atoms) G4 Ziegler1977p" - ,92,0.5,92.5) ; - histo31 = hbookManager->histogram("proton ionisation in Carbon (MeV/mm) Geant4 Ziegler" - ,TotBin,log10(LowestEnergy),log10(HighestEnergy)) ; - histo32 = hbookManager->histogram("proton ionisation in Si (MeV/mm) Geant4 Ziegler" - ,TotBin,log10(LowestEnergy),log10(HighestEnergy)) ; - histo33 = hbookManager->histogram("proton ionisation in Cu (MeV/mm) Geant4 Ziegler" - ,TotBin,log10(LowestEnergy),log10(HighestEnergy)) ; - histo34 = hbookManager->histogram("proton ionisation in CH4 (MeV/mm) Geant4 Ziegler" - ,TotBin,log10(LowestEnergy),log10(HighestEnergy)) ; - histo35 = hbookManager->histogram("He effective charge for Au(79)" - ,TotBin,log10(LowestEnergy),log10(HighestEnergy)) ; - - histo41 = hbookManager->histogram("proton 40 keV ionisation (keV*cm2/10^15!atoms) G4 ICRU_49p" - ,92,0.5,92.5) ; - histo42 = hbookManager->histogram("proton 100 keV ionisation (keV*cm2/10^15!atoms) G4 ICRU_49p" - ,92,0.5,92.5) ; - histo43 = hbookManager->histogram("proton 400 keV ionisation (keV*cm2/10^15!atoms) G4 ICRU_49p" - ,92,0.5,92.5) ; - histo44 = hbookManager->histogram("proton 1 MeV ionisation (keV*cm2/10^15!atoms) G4 ICRU_49p" - ,92,0.5,92.5) ; - histo45 = hbookManager->histogram("proton 4 MeV ionisation (keV*cm2/10^15!atoms) G4 ICRU_49p" - ,92,0.5,92.5) ; - histo51 = hbookManager->histogram("proton ionisation in Al (MeV/mm) Geant4" - ,TotBin,log10(LowestEnergy),log10(HighestEnergy)) ; - histo52 = hbookManager->histogram("proton ionisation in Fe (MeV/mm) Geant4" - ,TotBin,log10(LowestEnergy),log10(HighestEnergy)) ; - histo53 = hbookManager->histogram("proton ionisation in Pb (MeV/mm) Geant4" - ,TotBin,log10(LowestEnergy),log10(HighestEnergy)) ; - histo54 = hbookManager->histogram("proton ionisation in H2O (MeV/mm) Geant4" - ,TotBin,log10(LowestEnergy),log10(HighestEnergy)) ; - histo55 = hbookManager->histogram("proton ionisation in Graphite (MeV/mm) Geant4" - ,TotBin,log10(LowestEnergy),log10(HighestEnergy)) ; - - - histo61 = hbookManager->histogram("proton 40 keV ionisation (keV*cm2/10^15!atoms) G4 Ziegler1977He" - ,92,0.5,92.5) ; - histo62 = hbookManager->histogram("proton 100 keV ionisation (keV*cm2/10^15!atoms) G4 Ziegler1977He" - ,92,0.5,92.5) ; - histo63 = hbookManager->histogram("proton 400 keV ionisation (keV*cm2/10^15!atoms) G4 Ziegler1977He" - ,92,0.5,92.5) ; - histo64 = hbookManager->histogram("proton 1 MeV ionisation (keV*cm2/10^15!atoms) G4 Ziegler1977He" - ,92,0.5,92.5) ; - histo65 = hbookManager->histogram("proton 4 MeV ionisation (keV*cm2/10^15!atoms) G4 Ziegler1977He" - ,92,0.5,92.5) ; - - histo71 = hbookManager->histogram("He 40 keV ionisation (keV*cm2/10^15!atoms) G4 Ziegler1977He" - ,92,0.5,92.5) ; - histo72 = hbookManager->histogram("He 100 keV ionisation (keV*cm2/10^15!atoms) G4 Ziegler1977He" - ,92,0.5,92.5) ; - histo73 = hbookManager->histogram("He 400 keV ionisation (keV*cm2/10^15!atoms) G4 Ziegler1977He" - ,92,0.5,92.5) ; - histo74 = hbookManager->histogram("He 1 MeV ionisation (keV*cm2/10^15!atoms) G4 Ziegler1977He" - ,92,0.5,92.5) ; - histo75 = hbookManager->histogram("He 4 MeV ionisation (keV*cm2/10^15!atoms) G4 Ziegler1977He" - ,92,0.5,92.5) ; - histo76 = hbookManager->histogram("He 10 keV ionisation (keV*cm2/10^15!atoms) G4 Ziegler1977He" - ,92,0.5,92.5) ; - histo81 = hbookManager->histogram("He 40 keV ionisation (keV*cm2/10^15!atoms) G4 ICRU49He" - ,92,0.5,92.5) ; - histo82 = hbookManager->histogram("He 100 keV ionisation (keV*cm2/10^15!atoms) G4 ICRU49He" - ,92,0.5,92.5) ; - histo83 = hbookManager->histogram("He 400 keV ionisation (keV*cm2/10^15!atoms) G4 ICRU49He" - ,92,0.5,92.5) ; - histo84 = hbookManager->histogram("He 1 MeV ionisation (keV*cm2/10^15!atoms) G4 ICRU49He" - ,92,0.5,92.5) ; - histo85 = hbookManager->histogram("He 4 MeV ionisation (keV*cm2/10^15!atoms) G4 ICRU49He" - ,92,0.5,92.5) ; - histo86 = hbookManager->histogram("He 10 keV ionisation (keV*cm2/10^15!atoms) G4 ICRU49He" - ,92,0.5,92.5) ; - -} -#endif - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6RunAction::BeginOfRunAction(const G4Run* aRun) -{ - G4cout << "### Run " << aRun->GetRunID() << " start." << G4endl; - - 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; iss0) - {G4double E , dnorm, norm,fmax,Emp,width ; - Emp=-999.999 ; - G4cout << " energy deposit distribution " << G4endl ; - G4cout << "#entries=" << entryEn << " #underflows=" << underEn << - " #overflows=" << overEn << G4endl ; - if( entryEn>0.) - { - E = Enlow - dEn ; - norm = TotNbofEvents*dEn ; - G4cout << " bin nb Elow entries normalized " << G4endl ; - fmax = 0. ; - for(G4int ien=0; ienfmax) - { - fmax=distEn[ien]; - Emp = E ; - } - dnorm = distEn[ien]/norm; - G4cout << G4std::setw(5) << ien << G4std::setw(10) << E << - G4std::setw(12) << distEn[ien] << - G4std::setw(12) << 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 - FillLowEnergyTest() ; - hbookManager->write(); -#endif - -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6RunAction::CountEvent() -{ - TotNbofEvents += 1. ; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6RunAction::AddnStepsCharged(G4double ns) -{ - nStepSumCharged += ns; - nStepSum2Charged += ns*ns; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6RunAction::AddnStepsNeutral(G4double ns) -{ - nStepSumNeutral += ns; - nStepSum2Neutral += ns*ns; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6RunAction::AddEdeps(G4double Eabs) -{ - EnergySumAbs += Eabs; - EnergySquareSumAbs += Eabs*Eabs; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6RunAction::AddTrackLength(G4double tlabs) -{ - tlSumAbs += tlabs; - tlsquareSumAbs += tlabs*tlabs ; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6RunAction::AddTrRef(G4double tr,G4double ref) -{ - Transmitted += tr ; - Reflected += ref; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6RunAction::FillNbOfSteps(G4double ns) -{ - const G4double eps = 1.e-10 ; - G4double n,bin ; - G4int ibin; - -#ifndef G4NOHIST - if(histo1) - { - entryStep += 1. ; - - if(ns=Stephigh) - overStep += 1. ; - else - { - n = ns+eps ; - bin = (n-Steplow)/dStep ; - ibin= bin ; - distStep[ibin] += 1. ; - } - histo1->accumulate(ns) ; - } -#endif -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6RunAction::FillEn(G4double En) -{ - G4double bin ; - G4int ibin; - -#ifndef G4NOHIST - if(histo2) - { - entryEn += 1. ; - - if(En=Enhigh) - overEn += 1. ; - else - { - bin = (En-Enlow)/dEn ; - ibin= bin ; - distEn[ibin] += 1. ; - } - histo2->accumulate(En/MeV) ; - } -#endif -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6RunAction::FillTt(G4double En) -{ - G4double bin ; - G4int ibin; - -#ifndef G4NOHIST - if(histo5) - { - entryTt += 1. ; - Ttmean += En ; - Tt2mean += En*En ; - - if(En=Tthigh) - overTt += 1. ; - else - { - bin = (En-Ttlow)/dTt ; - ibin= bin ; - distTt[ibin] += 1. ; - } - histo5->accumulate(En/MeV) ; - } -#endif -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6RunAction::FillTb(G4double En) -{ - G4double bin ; - G4int ibin; - -#ifndef G4NOHIST - if(histo7) - { - entryTb += 1. ; - Tbmean += En ; - Tb2mean += En*En ; - - if(En=Tbhigh) - overTb += 1. ; - else - { - bin = (En-Tblow)/dTb ; - ibin= bin ; - distTb[ibin] += 1. ; - } - histo7->accumulate(En/MeV) ; - } -#endif -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6RunAction::FillTsec(G4double En) -{ - G4double bin ; - G4int ibin; - -#ifndef G4NOHIST - if(histo8) - { - entryTsec += 1. ; - - if(En=Tsechigh) - overTsec += 1. ; - else - { - bin = (En-Tseclow)/dTsec ; - ibin= bin ; - distTsec[ibin] += 1. ; - } - histo8->accumulate(En/MeV) ; - } -#endif -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6RunAction::FillGammaSpectrum(G4double En) -{ - G4double bin ; - G4int ibin; - -#ifndef G4NOHIST - if(histo10) - { - entryGamma += 1. ; - - if(En=EhighGamma) - overGamma += 1. ; - else - { - bin = log(En/ElowGamma)/dEGamma; - ibin= bin ; - distGamma[ibin] += 1. ; - } - histo10->accumulate(log10(En/MeV)) ; - } -#endif -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6RunAction::FillTh(G4double Th) -{ - static const G4double cn=pi/(64800.*dTh) ; - static const G4double cs=pi/ - (64800.*(cos(Thlow)-cos(Thlow+dTh))); - G4double bin,Thbin ,wg; - G4int ibin; - -#ifndef G4NOHIST - if(histo3) - { - entryTh += 1. ; - - wg = 0.; - - if(Th=Thhigh) - overTh += 1. ; - else - { - bin = (Th-Thlow)/dTh ; - ibin= 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 -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6RunAction::FillThBack(G4double Th) -{ - static const G4double cn=pi/(64800.*dThback) ; - static const G4double cs=pi/ - (64800.*(cos(Thlowback)-cos(Thlowback+dThback))); - G4double bin,Thbin,wg ; - G4int ibin; - -#ifndef G4NOHIST - if(histo6) - { - entryThback += 1. ; - - if(Th=Thhighback) - overThback += 1. ; - else - { - bin = (Th-Thlowback)/dThback ; - ibin= 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 - -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6RunAction::FillR(G4double R ) -{ - G4double bin ; - G4int ibin; - -#ifndef G4NOHIST - if(histo4) - { - entryR += 1. ; - Rmean += R ; - R2mean += R*R ; - - if(R =Rhigh) - overR += 1. ; - else - { - bin = (R -Rlow)/dR ; - ibin= bin ; - distR[ibin] += 1. ; - } - histo4->accumulate(R/mm) ; - } -#endif -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6RunAction::Fillvertexz(G4double z ) -{ - G4double bin ; - G4int ibin; - -#ifndef G4NOHIST - if(histo9) - { - entryvertexz += 1. ; - - if(z =zhigh) - oververtexz += 1. ; - else - { - bin = (z -zlow)/dz ; - ibin= bin ; - distvertexz[ibin] += 1. ; - } - histo9->accumulate(z/mm) ; - } -#endif -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#ifndef G4NOHIST -void Em6RunAction::SethistName(G4String name) -{ - histName = name ; - G4cout << " hist file = " << histName << G4endl; -} -#endif - -void Em6RunAction::SetnbinStep(G4int nbin) -{ - nbinStep = nbin ; - if(nbinStep>0) - G4cout << " Nb of bins in #step plot = " << nbinStep << G4endl ; -} -void Em6RunAction::SetSteplow(G4double low) -{ - Steplow = low ; - if(nbinStep>0) - G4cout << " low in the #step plot = " << Steplow << G4endl ; -} -void Em6RunAction::SetStephigh(G4double high) -{ - Stephigh = high ; - if(nbinStep>0) - G4cout << " high in the #step plot = " << Stephigh << G4endl ; -} -void Em6RunAction::SetnbinEn(G4int nbin) -{ - nbinEn = nbin ; - if(nbinEn>0) - G4cout << " Nb of bins in Edep plot = " << nbinEn << G4endl ; -} -void Em6RunAction::SetEnlow(G4double Elow) -{ - Enlow = Elow ; - if(nbinEn>0) - G4cout << " Elow in the Edep plot = " << Enlow << G4endl ; -} -void Em6RunAction::SetEnhigh(G4double Ehigh) -{ - Enhigh = Ehigh ; - if(nbinEn>0) - G4cout << " Ehigh in the Edep plot = " << Enhigh << G4endl ; -} - -void Em6RunAction::SetnbinGamma(G4int nbin) -{ - nbinGamma = nbin ; - if(nbinGamma>0) - G4cout << " Nb of bins in gamma spectrum plot = " << nbinGamma << G4endl ; -} -void Em6RunAction::SetElowGamma(G4double Elow) -{ - ElowGamma = Elow ; - if(nbinGamma>0) - G4cout << " Elow in the gamma spectrum plot = " << ElowGamma << G4endl ; -} -void Em6RunAction::SetEhighGamma(G4double Ehigh) -{ - EhighGamma = Ehigh ; - if(nbinGamma>0) - G4cout << " Ehigh in the gamma spectrum plot = " << EhighGamma << G4endl ; -} - -void Em6RunAction::SetnbinTt(G4int nbin) -{ - nbinTt = nbin ; - if(nbinTt>0) - G4cout << " Nb of bins in Etransmisssion plot = " << nbinTt << G4endl ; -} -void Em6RunAction::SetTtlow(G4double Elow) -{ - Ttlow = Elow ; - if(nbinTt>0) - G4cout << " Elow in the Etransmission plot = " << Ttlow << G4endl ; -} -void Em6RunAction::SetTthigh(G4double Ehigh) -{ - Tthigh = Ehigh ; - if(nbinTt>0) - G4cout << " Ehigh in the Etransmission plot = " << Tthigh << G4endl ; -} -void Em6RunAction::SetnbinTb(G4int nbin) -{ - nbinTb = nbin ; - if(nbinTb>0) - G4cout << " Nb of bins in Ebackscattered plot = " << nbinTb << G4endl ; -} -void Em6RunAction::SetTblow(G4double Elow) -{ - Tblow = Elow ; - if(nbinTb>0) - G4cout << " Elow in the Ebackscattered plot = " << Tblow << G4endl ; -} -void Em6RunAction::SetTbhigh(G4double Ehigh) -{ - Tbhigh = Ehigh ; - if(nbinTb>0) - G4cout << " Ehigh in the Ebackscattered plot = " << Tbhigh << G4endl ; -} - -void Em6RunAction::SetnbinTsec(G4int nbin) -{ - nbinTsec = nbin ; - if(nbinTsec>0) - G4cout << " Nb of bins in Tsecondary plot = " << nbinTsec << G4endl ; -} -void Em6RunAction::SetTseclow(G4double Elow) -{ - Tseclow = Elow ; - if(nbinTsec>0) - G4cout << " Elow in the Tsecondary plot = " << Tseclow << G4endl ; -} -void Em6RunAction::SetTsechigh(G4double Ehigh) -{ - Tsechigh = Ehigh ; - if(nbinTsec>0) - G4cout << " Ehigh in the Tsecondary plot = " << Tsechigh << G4endl ; -} - -void Em6RunAction::SetnbinR(G4int nbin) -{ - nbinR = nbin ; - if(nbinR>0) - G4cout << " Nb of bins in R plot = " << nbinR << G4endl ; -} -void Em6RunAction::SetRlow(G4double rlow) -{ - Rlow = rlow ; - if(nbinR>0) - G4cout << " Rlow in the R plot = " << Rlow << G4endl ; -} -void Em6RunAction::SetRhigh(G4double rhigh) -{ - Rhigh = rhigh ; - if(nbinR>0) - G4cout << " Rhigh in the R plot = " << Rhigh << G4endl ; -} - -void Em6RunAction::Setnbinzvertex(G4int nbin) -{ - nbinvertexz = nbin ; - if(nbinvertexz>0) - G4cout << " Nb of bins in Z plot = " << nbinvertexz << G4endl ; -} -void Em6RunAction::Setzlow(G4double z) -{ - zlow = z ; - if(nbinvertexz>0) - G4cout << " zlow in the Z plot = " << zlow << G4endl ; -} -void Em6RunAction::Setzhigh(G4double z) -{ - zhigh = z ; - if(nbinvertexz>0) - G4cout << " zhigh in the Z plot = " << zhigh << G4endl ; -} - -void Em6RunAction::SetnbinTh(G4int nbin) -{ - nbinTh = nbin ; - if(nbinTh>0) - G4cout << " Nb of bins in Theta plot = " << nbinTh << G4endl ; -} -void Em6RunAction::SetThlow(G4double Tlow) -{ - Thlow = Tlow ; - if(nbinTh>0) - G4cout << " Tlow in the Theta plot = " << Thlow << G4endl ; -} -void Em6RunAction::SetThhigh(G4double Thigh) -{ - Thhigh = Thigh ; - if(nbinTh>0) - G4cout << " Thigh in the Theta plot = " << Thhigh << G4endl ; -} - -void Em6RunAction::SetnbinThBack(G4int nbin) -{ - nbinThback = nbin ; - if(nbinThback>0) - G4cout << " Nb of bins in Theta plot = " << nbinThback << G4endl ; -} -void Em6RunAction::SetThlowBack(G4double Tlow) -{ - Thlowback = Tlow ; - if(nbinThback>0) - G4cout << " Tlow in the Theta plot = " << Thlowback << G4endl ; -} -void Em6RunAction::SetThhighBack(G4double Thigh) -{ - Thhighback = Thigh ; - if(nbinThback>0) - G4cout << " Thigh in the Theta plot = " << Thhighback << G4endl ; -} -void Em6RunAction::CountParticles(G4double nch,G4double nne) -{ - SumCharged += nch ; - SumNeutral += nne ; - Sum2Charged += nch*nch ; - Sum2Neutral += nne*nne ; -} -void Em6RunAction::AddEP(G4double nele,G4double npos) -{ - Selectron += nele; - Spositron += npos; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#ifndef G4NOHIST -void Em6RunAction::FillLowEnergyTest( ) -{ - G4int J ; - G4double* DeltaCutInKineticEnergy = theElectron->GetCutsInEnergy() ; - G4hLowEnergyIonisation* hLEIon = new G4hLowEnergyIonisation() ; - G4ParticleDefinition* theH = G4Proton::Proton() ; - - //G4double fac = 4.026/1.0073 ; - //G4double cac = 1.0 ; - // theProton = G4Proton::Proton() ; - G4double fac = 1.0 ; - G4double cac = 2.0 ; - theProton = G4Alpha::Alpha() ; - - G4ionLowEnergyIonisation* ionLEIon = new G4ionLowEnergyIonisation() ; - ionLEIon->SetIonDefinition(theProton) ; - - // G4ionLowEnergyIonisation* ionLEIonC = new G4ionLowEnergyIonisation() ; - // G4ParticleDefinition* theC12 = G4IonC12::IonC12() ; - // ionLEIonC->SetIonDefinition(theC12) ; - G4double chc = 6.0 ; - - // G4ionLowEnergyIonisation* ionLEIonAr = new G4ionLowEnergyIonisation() ; - // G4ParticleDefinition* theAr40 = G4IonAr40::IonAr40() ; - // ionLEIonAr->SetIonDefinition(theAr40) ; - G4double cha = 18.0 ; - - - // G4ionLowEnergyIonisation* ionLEIonFe = new G4ionLowEnergyIonisation() ; - // G4ParticleDefinition* theFe56 = G4IonFe56::IonFe56() ; - // ionLEIonFe->SetIonDefinition(theFe56) ; - // G4double chf = 26.0 ; - - // G4double mrC12 = (theC12->GetPDGMass()) / (theH->GetPDGMass()) ; - // G4double mrAr40 = (theAr40->GetPDGMass()) / (theH->GetPDGMass()) ; - - G4double de ; - - // Ziegler1977p - G4double tau = 40*keV ; - for ( J=1; J<93; J++) - { - de = hLEIon->GetStoppingPower1977H(J, tau) ; - histo21->accumulate(double(J),de) ; - } - tau = 100*keV ; - for ( J=1; J<93; J++) - { - de = hLEIon->GetStoppingPower1977H(J, tau) ; - histo22->accumulate(double(J),de) ; - } - tau = 400*keV ; - for ( J=1; J<93; J++) - { - de = hLEIon->GetStoppingPower1977H(J, tau) ; - histo23->accumulate(double(J),de) ; - } - tau = 1000*keV ; - for ( J=1; J<93; J++) - { - de = hLEIon->GetStoppingPower1977H(J, tau) ; - histo24->accumulate(double(J),de) ; - } - tau = 4000*keV ; - for ( J=1; J<93; J++) - { - de = hLEIon->GetStoppingPower1977H(J, tau) ; - histo25->accumulate(double(J),de) ; - } - - // Ziegler1977He - tau = 40*keV*4.026/1.0073 ; - for ( J=1; J<93; J++) - { - de = (hLEIon->GetStoppingPower1977He(J, tau)) / - (hLEIon->GetHeEffChargeSquare(J, tau)) ; - histo61->accumulate(double(J),de) ; - } - tau = 100*keV*4.026/1.0073 ; - for ( J=1; J<93; J++) - { - de = (hLEIon->GetStoppingPower1977He(J, tau)) / - (hLEIon->GetHeEffChargeSquare(J, tau)) ; - histo62->accumulate(double(J),de) ; - } - tau = 400*keV*4.026/1.0073 ; - for ( J=1; J<93; J++) - { - de = (hLEIon->GetStoppingPower1977He(J, tau)) / - (hLEIon->GetHeEffChargeSquare(J, tau)) ; - histo63->accumulate(double(J),de) ; - } - tau = 1000*keV*4.026/1.0073 ; - for ( J=1; J<93; J++) - { - de = (hLEIon->GetStoppingPower1977He(J, tau)) / - (hLEIon->GetHeEffChargeSquare(J, tau)) ; - histo64->accumulate(double(J),de) ; - } - tau = 4000*keV*4.026/1.0073 ; - for ( J=1; J<93; J++) - { - de = (hLEIon->GetStoppingPower1977He(J, tau)) / - (hLEIon->GetHeEffChargeSquare(J, tau)) ; - histo65->accumulate(double(J),de) ; - } - - // ICRU_49p - tau = 40*keV ; - - for ( J=1; J<93; J++) - { - de = hLEIon->GetStoppingPowerICRU_R49p(J, tau, "Ele") ; - histo41->accumulate(double(J),de) ; - } - tau = 100*keV ; - for ( J=1; J<93; J++) - { - de = hLEIon->GetStoppingPowerICRU_R49p(J, tau, "Ele") ; - histo42->accumulate(double(J),de) ; - } - tau = 400*keV ; - for ( J=1; J<93; J++) - { - de = hLEIon->GetStoppingPowerICRU_R49p(J, tau, "Ele") ; - histo43->accumulate(double(J),de) ; - } - tau = 1000*keV ; - for ( J=1; J<93; J++) - { - de = hLEIon->GetStoppingPowerICRU_R49p(J, tau, "Ele") ; - histo44->accumulate(double(J),de) ; - } - tau = 4000*keV ; - for ( J=1; J<93; J++) - { - de = hLEIon->GetStoppingPowerICRU_R49p(J, tau, "Ele") ; - histo45->accumulate(double(J),de) ; - } - - for ( J=1; J<93; J++) - { - static G4double S40[92] = { - 6.22, 6.55, 7.61, 10.4, 12.9, 13.9, 15.9, 14.6, 11.7, 11.1, - 14.2, 20.6, 20.7, 22.3, 18.1, 19.3, 27.5, 30.5, 27.9, 29.8, - 28.3, 26.7, 25.1, 22.5, 19.8, 20.1, 18.0, 20.1, 20.4, 23.4, - 27.5, 29.0, 29.3, 31.0, 31.1, 34.8, 31.5, 35.0, 35.5, 37.3, - 38.3, 35.9, 38.0, 34.4, 33.4, 29.8, 30.9, 32.7, 34.9, 36.0, - 40.9, 39.1, 43.1, 45.8, 40.8, 44.1, 44.9, 42.0, 41.0, 40.0, - 39.0, 38.0, 37.1, 38.2, 35.3, 31.5, 29.9, 29.1, 28.3, 27.5, - 28.1, 28.9, 27.3, 26.3, 29.9, 29.1, 28.4, 25.8, 28.0, 24.9, - 27.3, 30.7, 34.3, 35.4, 35.6, 35.5, 39.8, 42.9, 43.7, 44.1, - 42.4, 41.8} ; - histo11->accumulate(double(J),S40[J-1]) ; - } - - //============================ He ions =========== - // Ziegler1977He - tau = 40*keV ; - for ( J=1; J<93; J++) - { - de = (hLEIon->GetStoppingPower1977He(J, tau)) ; - histo71->accumulate(double(J),de) ; - de = hLEIon->GetStoppingPowerICRU_R49He(J, tau ) ; - histo81->accumulate(double(J),de) ; - } - tau = 100*keV ; - for ( J=1; J<93; J++) - { - de = (hLEIon->GetStoppingPower1977He(J, tau)) ; - histo72->accumulate(double(J),de) ; - de = hLEIon->GetStoppingPowerICRU_R49He(J, tau ) ; - histo82->accumulate(double(J),de) ; - } - tau = 400*keV ; - for ( J=1; J<93; J++) - { - de = (hLEIon->GetStoppingPower1977He(J, tau)) ; - histo73->accumulate(double(J),de) ; - de = hLEIon->GetStoppingPowerICRU_R49He(J, tau ) ; - histo83->accumulate(double(J),de) ; - } - tau = 1000*keV ; - for ( J=1; J<93; J++) - { - de = (hLEIon->GetStoppingPower1977He(J, tau)) ; - histo74->accumulate(double(J),de) ; - de = hLEIon->GetStoppingPowerICRU_R49He(J, tau ) ; - histo84->accumulate(double(J),de) ; - } - tau = 4*MeV ; - for ( J=1; J<93; J++) - { - de = (hLEIon->GetStoppingPower1977He(J, tau)) ; - histo75->accumulate(double(J),de) ; - de = hLEIon->GetStoppingPowerICRU_R49He(J, tau ) ; - histo85->accumulate(double(J),de) ; - } - tau = 10*keV ; - for ( J=1; J<93; J++) - { - de = (hLEIon->GetStoppingPower1977He(J, tau)) ; - histo76->accumulate(double(J),de) ; - de = hLEIon->GetStoppingPowerICRU_R49He(J, tau ) ; - histo86->accumulate(double(J),de) ; - } - - for ( J=1; J<93; J++) - { - static G4double Q40[92] = { - 11.8, 16.7, 21.9, 24.1, 34.7, 36.1, 45.5, 46.1, 45.8, 44.9, - 46.9, 51.7, 54.9, 63.2, 63.8, 67.4, 79.8, 80.8, 78.0, 83.2, - 85.4, 84.2, 90.6, 85.7, 84.1, 86.4, 82.0, 77.7, 74.4, 75.1, - 75.6, 80.7, 84.9, 87.0, 88.6, 103.0, 103.0, 113.0, 116.0, 123.0, - 120.0, 115.0, 118.0, 115.0, 113.0, 112.0, 111.0, 110.0, 116.0, 117.0, - 119.0, 123.0, 122.0, 139.0, 138.0, 143.0, 152.0, 141.0, 139.0, 137.0, - 135.0, 134.0, 130.0, 137.0, 129.0, 128.0, 124.0, 125.0, 120.0, 118.0, - 119.0, 120.0, 121.0, 122.0, 125.0, 127.0, 128.0, 120.0, 125.0, 128.0, - 136.0, 138.0, 144.0, 148.0, 151.0, 162.0, 166.0, 177.0, 179.0, 183.0, - 177.0, 176.0 } ; - histo12->accumulate(double(J),Q40[J-1]) ; - } - //============================ He ions =========== - - - // find out materials table - static const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - - G4int numOfMaterials = theMaterialTable->length(); - G4double dedx ; - // create physics vector and fill it - - G4PhysicsLogVector* aVector = new G4PhysicsLogVector( - LowestEnergy, HighestEnergy, TotBin); - - - // loop for materials - the parametrisation is defined in the G4PhysicsList - - for ( J=0; JGetName()) { - for (G4int i = 0 ; i < TotBin-1 ; i++) - { - tau = 0.5*(aVector->GetLowEdgeEnergy(i) + aVector->GetLowEdgeEnergy(i+1)) ; - dedx = G4EnergyLossTables::GetPreciseDEDX(theProton,tau/fac,material) ; - // G4double cf = ionLEIon->GetIonEffChargeSquare(material, tau, cac) / (cac*cac); - G4double cf = ionLEIon->GetHeEffChargeSquare(6, tau) / (cac*cac); - histo31->accumulate(log10(tau),dedx*cf) ; - histo13->accumulate(log10(tau),cf*cac*cac) ; - } - } else if ("Silicon" == material->GetName()) { - for (G4int i = 0 ; i < TotBin-1 ; i++) - { - tau = 0.5 * (aVector->GetLowEdgeEnergy(i) + aVector->GetLowEdgeEnergy(i+1)) ; - dedx = G4EnergyLossTables::GetPreciseDEDX(theProton,tau/fac,material) ; - G4double cf = ionLEIon->GetIonEffChargeSquare(material, tau, cac) / (cac*cac); - histo32->accumulate(log10(tau),dedx*cf) ; - } - } else if ("Copper" == material->GetName()) { - for (G4int i = 0 ; i < TotBin-1 ; i++) - { - tau = 0.5 * (aVector->GetLowEdgeEnergy(i) + aVector->GetLowEdgeEnergy(i+1)) ; - dedx = G4EnergyLossTables::GetPreciseDEDX(theProton,tau/fac,material) ; - G4double cf = ionLEIon->GetIonEffChargeSquare(material, tau, cac) / (cac*cac); - histo33->accumulate(log10(tau),dedx*cf) ; - } - } else if ("CH_4" == material->GetChemicalFormula()) { - for (G4int i = 0 ; i < TotBin-1 ; i++) - { - tau = 0.5 * (aVector->GetLowEdgeEnergy(i) + aVector->GetLowEdgeEnergy(i+1)) ; - dedx = G4EnergyLossTables::GetPreciseDEDX(theProton,tau/fac,material) ; - G4double cf = ionLEIon->GetIonEffChargeSquare(material, tau, cac) / (cac*cac); - histo34->accumulate(log10(tau),dedx*cf) ; - cf = hLEIon->GetHeEffChargeSquare(79, tau*4.026/1.0073) ; - histo35->accumulate(log10(tau),cf) ; - } - } else if ("Aluminum" == material->GetName()) { - for (G4int i = 0 ; i < TotBin-1 ; i++) - { - tau = 0.5 * (aVector->GetLowEdgeEnergy(i) + aVector->GetLowEdgeEnergy(i+1)) ; - dedx = G4EnergyLossTables::GetPreciseDEDX(theProton,tau/fac,material) ; - G4double cf = ionLEIon->GetIonEffChargeSquare(material, tau, cac) / (cac*cac); - histo51->accumulate(log10(tau),dedx*cf) ; - /* - dedx = G4EnergyLossTables::GetPreciseDEDX(theC12,tau*mrC12,material) ; - cf = ionLEIonC->GetIonEffChargeSquare(material, tau*mrC12, chc) / (chc*chc); - histo14->accumulate(log10(tau), dedx*cf / 270.0 ) ; - dedx = G4EnergyLossTables::GetPreciseDEDX(theAr40,tau*mrAr40,material) ; - cf = ionLEIonAr->GetIonEffChargeSquare(material, tau*mrAr40, cha) / (cha*cha); - histo15->accumulate(log10(tau), dedx*cf / 270.0 ) ; - */ - } - } else if ("Iron" == material->GetName()) { - for (G4int i = 0 ; i < TotBin-1 ; i++) - { - tau = 0.5 * (aVector->GetLowEdgeEnergy(i) + aVector->GetLowEdgeEnergy(i+1)) ; - dedx = G4EnergyLossTables::GetPreciseDEDX(theProton,tau/fac,material) ; - G4double cf = ionLEIon->GetIonEffChargeSquare(material, tau, cac) / (cac*cac); - histo52->accumulate(log10(tau),dedx*cf) ; - } - } else if ("Lead" == material->GetName()) { - for (G4int i = 0 ; i < TotBin-1 ; i++) - { - tau = 0.5 * (aVector->GetLowEdgeEnergy(i) + aVector->GetLowEdgeEnergy(i+1)) ; - dedx = G4EnergyLossTables::GetPreciseDEDX(theProton,tau/fac,material) ; - // G4double cf = ionLEIon->GetIonEffChargeSquare(material, tau, cac) / (cac*cac); - G4double cf = hLEIon->GetIonEffChargeSquare(material, tau, cac) / (cac*cac); - histo53->accumulate(log10(tau),dedx*cf) ; - } - } else if ("Water" == material->GetName()) { - for (G4int i = 0 ; i < TotBin-1 ; i++) - { - tau = 0.5 * (aVector->GetLowEdgeEnergy(i) + aVector->GetLowEdgeEnergy(i+1)) ; - dedx = G4EnergyLossTables::GetPreciseDEDX(theProton,tau/fac,material) ; - G4double cf = ionLEIon->GetIonEffChargeSquare(material, tau, cac) / (cac*cac) ; - // G4cout << "Energy = " << tau << " MeV; dedx = " << dedx << G4endl; - histo54->accumulate(log10(tau),dedx*cf) ; - } - } else if ("Graphite" == material->GetName()) { - for (G4int i = 0 ; i < TotBin-1 ; i++) - { - tau = 0.5 * (aVector->GetLowEdgeEnergy(i) + aVector->GetLowEdgeEnergy(i+1)) ; - dedx = G4EnergyLossTables::GetPreciseDEDX(theProton,tau/fac,material) ; - G4double cf = ionLEIon->GetIonEffChargeSquare(material, tau, cac) / (cac*cac) ; - histo55->accumulate(log10(tau),dedx*cf) ; - } - } - } - delete hLEIon ; - delete ionLEIon ; - // delete ionLEIonC ; - // delete ionLEIonAr ; - // delete ionLEIonFe ; -} -#endif - - - - - - - - - - - - diff --git a/examples/extended/electromagnetic/TestEm6/src/Em6RunMessenger.cc b/examples/extended/electromagnetic/TestEm6/src/Em6RunMessenger.cc deleted file mode 100644 index 48c1bf3acd..0000000000 --- a/examples/extended/electromagnetic/TestEm6/src/Em6RunMessenger.cc +++ /dev/null @@ -1,349 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#include "Em6RunMessenger.hh" - -#include "Em6RunAction.hh" -#include "G4UIdirectory.hh" -#include "G4UIcmdWithAnInteger.hh" -#include "G4UIcmdWithADoubleAndUnit.hh" -#include "G4UIcmdWithADouble.hh" -#include "G4UIcmdWithAString.hh" -#include "globals.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6RunMessenger::Em6RunMessenger(Em6RunAction* RA) -:runAction (RA) -{ - plotDir = new G4UIdirectory("/plots/"); - plotDir->SetGuidance("plot control"); - -#ifndef G4NOHIST - sethistNameCmd = new G4UIcmdWithAString("/plots/sethistName",this); - sethistNameCmd->SetGuidance("set name for the histogram file"); -#endif - - 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); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6RunMessenger::~Em6RunMessenger() -{ -#ifndef G4NOHIST - delete sethistNameCmd; -#endif - - 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; - -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6RunMessenger:: - SetNewValue(G4UIcommand* command,G4String newValues) -{ -#ifndef G4NOHIST - if( command == sethistNameCmd) - runAction - ->SethistName(newValues) ; -#endif - - 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)); - - -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - - diff --git a/examples/extended/electromagnetic/TestEm6/src/Em6StepCut.cc b/examples/extended/electromagnetic/TestEm6/src/Em6StepCut.cc deleted file mode 100644 index 8fee956b74..0000000000 --- a/examples/extended/electromagnetic/TestEm6/src/Em6StepCut.cc +++ /dev/null @@ -1,48 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#include "Em6StepCut.hh" - -#include "G4Step.hh" -#include "G4UserLimits.hh" -#include "G4VParticleChange.hh" -#include "G4EnergyLossTables.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6StepCut::Em6StepCut(const G4String& aName) - : G4VDiscreteProcess(aName),MaxChargedStep(DBL_MAX) -{ - if (verboseLevel>0) { - G4cout << GetProcessName() << " is created "<< G4endl; - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6StepCut::~Em6StepCut() -{} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6StepCut::Em6StepCut(Em6StepCut& right) - :G4VDiscreteProcess(right) -{} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6StepCut::SetMaxStep(G4double step) -{ - MaxChargedStep = step ; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/electromagnetic/TestEm6/src/Em6SteppingAction.cc b/examples/extended/electromagnetic/TestEm6/src/Em6SteppingAction.cc deleted file mode 100644 index 548cd5ea52..0000000000 --- a/examples/extended/electromagnetic/TestEm6/src/Em6SteppingAction.cc +++ /dev/null @@ -1,199 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#include "Em6DetectorConstruction.hh" -#include "G4EnergyLossTables.hh" -#include "G4SteppingManager.hh" -#include "G4TrackVector.hh" -#include "Em6SteppingAction.hh" -#include "Em6PrimaryGeneratorAction.hh" -#include "Em6EventAction.hh" -#include "Em6RunAction.hh" -#include "G4Event.hh" -#include "G4EventManager.hh" -#include "Em6SteppingMessenger.hh" -#include "G4ios.hh" -#include "g4std/iomanip" -#include "G4UImanager.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6SteppingAction::Em6SteppingAction(Em6DetectorConstruction* DET, - Em6EventAction* EA, - Em6RunAction* RA) -:detector (DET),eventaction (EA),runaction (RA),steppingMessenger(NULL), - IDold(-1) ,evnoold(-1) -{ - steppingMessenger = new Em6SteppingMessenger(this); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6SteppingAction::~Em6SteppingAction() -{ - delete steppingMessenger ; - } - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6SteppingAction::UserSteppingAction(const G4Step* aStep) -{ - - G4double Edep,Theta,Thetaback,Ttrans,Tback,Tsec,Egamma,xend,yend,zend,rend ; - G4double Tkin ; - 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() == - Em6PrimaryGeneratorAction::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() == - Em6PrimaryGeneratorAction::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/TestEm6/src/Em6SteppingMessenger.cc b/examples/extended/electromagnetic/TestEm6/src/Em6SteppingMessenger.cc deleted file mode 100644 index dc18fd5fa2..0000000000 --- a/examples/extended/electromagnetic/TestEm6/src/Em6SteppingMessenger.cc +++ /dev/null @@ -1,42 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#include "Em6SteppingMessenger.hh" - -#include "Em6SteppingAction.hh" -#include "G4UIdirectory.hh" -#include "globals.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6SteppingMessenger::Em6SteppingMessenger(Em6SteppingAction* SA) -:steppingAction (SA) -{ - steppingDir = new G4UIdirectory("/stepping/"); - steppingDir->SetGuidance("stepping control"); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -Em6SteppingMessenger::~Em6SteppingMessenger() -{ - delete steppingDir; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6SteppingMessenger::SetNewValue(G4UIcommand* command,G4String newValues) -{} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - - diff --git a/examples/extended/electromagnetic/TestEm6/src/Em6SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm6/src/Em6SteppingVerbose.cc deleted file mode 100644 index 8b8a42f96e..0000000000 --- a/examples/extended/electromagnetic/TestEm6/src/Em6SteppingVerbose.cc +++ /dev/null @@ -1,170 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: Em6SteppingVerbose.cc,v 1.2 1999/12/15 14:49:15 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// -//--------------------------------------------------------------- -// -// Em6SteppingVerbose.cc -// -// Description: -// Implementation of the Em6SteppingVerbose 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 "Em6SteppingVerbose.hh" -#include "G4SteppingManager.hh" - -#include "G4UnitsTable.hh" - -//////////////////////////////////////////////// -Em6SteppingVerbose::Em6SteppingVerbose() -//////////////////////////////////////////////// -{ -} - -////////////////////////////////////////////////// -Em6SteppingVerbose::~Em6SteppingVerbose() -////////////////////////////////////////////////// -{ -} - -///////////////////////////////////////// -void Em6SteppingVerbose::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).entries() - << " ---------------" - << G4endl; - - for(G4int lp1=(*fSecondary).entries()-tN2ndariesTot; - lp1<(*fSecondary).entries(); 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 Em6SteppingVerbose::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/TestEm6/src/Em6VisManager.cc b/examples/extended/electromagnetic/TestEm6/src/Em6VisManager.cc deleted file mode 100644 index 6118c1e543..0000000000 --- a/examples/extended/electromagnetic/TestEm6/src/Em6VisManager.cc +++ /dev/null @@ -1,138 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// -// John Allison 24th January 1998. - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#ifdef G4VIS_USE - -#include "Em6VisManager.hh" - -// Supported drivers... - -#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" -#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_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.... - -Em6VisManager::Em6VisManager () {} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void Em6VisManager::RegisterGraphicsSystems () { - -#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); -#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_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." - << G4endl; - PrintAvailableGraphicsSystems (); - } -} - -#endif - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/electromagnetic/TestEm6/src/G4IonAr40.cc b/examples/extended/electromagnetic/TestEm6/src/G4IonAr40.cc deleted file mode 100644 index a926811a66..0000000000 --- a/examples/extended/electromagnetic/TestEm6/src/G4IonAr40.cc +++ /dev/null @@ -1,79 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4IonAr40.cc,v 1.3 2000/01/19 20:55:13 vnivanch Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// -// ---------------------------------------------------------------------- -// GEANT 4 class implementation file -// -// For information related to this code contact: -// CERN, CN Division, ASD Group -// History: first implementation, based on object model of -// 4th April 1996, G.Cosmo -// ********************************************************************** -// Added by J.L.Chuma, TRIUMF, 27 June 1996 -// Added G4IonAr40::IonAr40Definition() by H.Kurashige 27 June 1996 -// Fixed parameters by H.Kurashige, 25 Apr 1998 -// ---------------------------------------------------------------------- - -#include "g4std/fstream" -#include "g4std/iomanip" - -#include "G4IonAr40.hh" - -// ###################################################################### -// ### IonAr40 ### -// ###################################################################### - -G4IonAr40::G4IonAr40( - const G4String& aName, G4double mass, - G4double width, G4double charge, - G4int iSpin, G4int iParity, - G4int iConjugation, G4int iIsospin, - G4int iIsospin3, G4int gParity, - const G4String& pType, G4int lepton, - G4int baryon, G4int encoding, - G4bool stable, G4double lifetime, - G4DecayTable *decaytable ) - : G4VIon( aName,mass,width,charge,iSpin,iParity, - iConjugation,iIsospin,iIsospin3,gParity,pType, - lepton,baryon,encoding,stable,lifetime,decaytable ) -{ -} - -G4IonAr40::~G4IonAr40() -{ -} - -// ...................................................................... -// ... static member definitions ... -// ...................................................................... -// -// Arguments for constructor are as follows -// name mass width charge -// 2*spin parity C-conjugation -// 2*Isospin 2*Isospin3 G-parity -// type lepton number baryon number PDG encoding -// stable lifetime decay table - -G4IonAr40 G4IonAr40::theIonAr40( - "IonAr40", 37.291*GeV, 0.0*MeV, +18.0*eplus, - 0, +1, 0, - 0, 0, 0, - "nucleus", 0, +40, 0, - true, -1.0, NULL -); - -G4IonAr40* G4IonAr40::IonAr40Definition(){return &theIonAr40;} -// initialization for static cut values -G4double G4IonAr40::theIonAr40LengthCut; -G4double* G4IonAr40::theIonAr40KineticEnergyCuts; - - - diff --git a/examples/extended/electromagnetic/TestEm6/src/G4IonC12.cc b/examples/extended/electromagnetic/TestEm6/src/G4IonC12.cc deleted file mode 100644 index 0537197594..0000000000 --- a/examples/extended/electromagnetic/TestEm6/src/G4IonC12.cc +++ /dev/null @@ -1,76 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4IonC12.cc,v 1.3 2000/01/19 20:55:13 vnivanch Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// -// ---------------------------------------------------------------------- -// GEANT 4 class implementation file -// -// For information related to this code contact: -// CERN, CN Division, ASD Group -// History: first implementation, based on object model of -// 4th April 1996, G.Cosmo -// ********************************************************************** -// Added by J.L.Chuma, TRIUMF, 27 June 1996 -// Added G4IonC12::IonC12Definition() by H.Kurashige 27 June 1996 -// Fixed parameters by H.Kurashige, 25 Apr 1998 -// ---------------------------------------------------------------------- - -#include "g4std/fstream" -#include "g4std/iomanip" - -#include "G4IonC12.hh" - -// ###################################################################### -// ### IonC12 ### -// ###################################################################### - -G4IonC12::G4IonC12( - const G4String& aName, G4double mass, - G4double width, G4double charge, - G4int iSpin, G4int iParity, - G4int iConjugation, G4int iIsospin, - G4int iIsospin3, G4int gParity, - const G4String& pType, G4int lepton, - G4int baryon, G4int encoding, - G4bool stable, G4double lifetime, - G4DecayTable *decaytable ) - : G4VIon( aName,mass,width,charge,iSpin,iParity, - iConjugation,iIsospin,iIsospin3,gParity,pType, - lepton,baryon,encoding,stable,lifetime,decaytable ) -{ -} - -G4IonC12::~G4IonC12() -{ -} - -// ...................................................................... -// ... static member definitions ... -// ...................................................................... -// -// Arguments for constructor are as follows -// name mass width charge -// 2*spin parity C-conjugation -// 2*Isospin 2*Isospin3 G-parity -// type lepton number baryon number PDG encoding -// stable lifetime decay table - -G4IonC12 G4IonC12::theIonC12( - "IonC12", 11.14945*GeV, 0.0*MeV, +6.0*eplus, - 0, +1, 0, - 0, 0, 0, - "nucleus", 0, +12, 0, - true, -1.0, NULL -); - -G4IonC12* G4IonC12::IonC12Definition(){return &theIonC12;} -// initialization for static cut values -G4double G4IonC12::theIonC12LengthCut; -G4double* G4IonC12::theIonC12KineticEnergyCuts; diff --git a/examples/extended/electromagnetic/TestEm6/src/G4IonFe56.cc b/examples/extended/electromagnetic/TestEm6/src/G4IonFe56.cc deleted file mode 100644 index a64c5c859d..0000000000 --- a/examples/extended/electromagnetic/TestEm6/src/G4IonFe56.cc +++ /dev/null @@ -1,76 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4IonFe56.cc,v 1.3 2000/01/19 20:55:13 vnivanch Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// -// ---------------------------------------------------------------------- -// GEANT 4 class implementation file -// -// For information related to this code contact: -// CERN, CN Division, ASD Group -// History: first implementation, based on object model of -// 4th April 1996, G.Cosmo -// ********************************************************************** -// Added by J.L.Chuma, TRIUMF, 27 June 1996 -// Added G4IonFe56::IonFe56Definition() by H.Kurashige 27 June 1996 -// Fixed parameters by H.Kurashige, 25 Apr 1998 -// ---------------------------------------------------------------------- - -#include "g4std/fstream" -#include "g4std/iomanip" - -#include "G4IonFe56.hh" - -// ###################################################################### -// ### IonFe56 ### -// ###################################################################### - -G4IonFe56::G4IonFe56( - const G4String& aName, G4double mass, - G4double width, G4double charge, - G4int iSpin, G4int iParity, - G4int iConjugation, G4int iIsospin, - G4int iIsospin3, G4int gParity, - const G4String& pType, G4int lepton, - G4int baryon, G4int encoding, - G4bool stable, G4double lifetime, - G4DecayTable *decaytable ) - : G4VIon( aName,mass,width,charge,iSpin,iParity, - iConjugation,iIsospin,iIsospin3,gParity,pType, - lepton,baryon,encoding,stable,lifetime,decaytable ) -{ -} - -G4IonFe56::~G4IonFe56() -{ -} - -// ...................................................................... -// ... static member definitions ... -// ...................................................................... -// -// Arguments for constructor are as follows -// name mass width charge -// 2*spin parity C-conjugation -// 2*Isospin 2*Isospin3 G-parity -// type lepton number baryon number PDG encoding -// stable lifetime decay table - -G4IonFe56 G4IonFe56::theIonFe56( - "IonFe56", 52.0308*GeV, 0.0*MeV, +26.0*eplus, - 0, +1, 0, - 0, 0, 0, - "nucleus", 0, +56, 0, - true, -1.0, NULL -); - -G4IonFe56* G4IonFe56::IonFe56Definition(){return &theIonFe56;} -// initialization for static cut values -G4double G4IonFe56::theIonFe56LengthCut; -G4double* G4IonFe56::theIonFe56KineticEnergyCuts; diff --git a/examples/extended/electromagnetic/TestEm8/GNUmakefile b/examples/extended/electromagnetic/TestEm8/GNUmakefile index dc2fedfe8c..93d2708e9e 100644 --- a/examples/extended/electromagnetic/TestEm8/GNUmakefile +++ b/examples/extended/electromagnetic/TestEm8/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.1 2000/01/07 14:48:45 grichine Exp $ +# $Id: GNUmakefile,v 1.2 2000/06/28 09:55:54 gcosmo Exp $ # -------------------------------------------------------------- # GNUmakefile for examples module. Gabriele Cosmo, 06/04/98. # -------------------------------------------------------------- @@ -16,7 +16,11 @@ all: lib bin include $(G4INSTALL)/config/architecture.gmk -LDFLAGS += -L/cern/pro/lib -LOADLIBS += -lpacklib $(FCLIBS) +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/TestEm8/TestEm8.cc b/examples/extended/electromagnetic/TestEm8/TestEm8.cc index d043d41afb..e7bd47562f 100644 --- a/examples/extended/electromagnetic/TestEm8/TestEm8.cc +++ b/examples/extended/electromagnetic/TestEm8/TestEm8.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: TestEm8.cc,v 1.1 2000/01/07 14:49:19 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/electromagnetic/TestEm8/TestEm8.in b/examples/extended/electromagnetic/TestEm8/TestEm8.in new file mode 100644 index 0000000000..17bada7310 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm8/TestEm8.in @@ -0,0 +1,57 @@ +# +# Macro file 'run11.mac' for the initialization phase of "TestEm8.cc" +# +# It creates the default geometry (simple absorber cylinder ) +# +/control/verbose 2 +# +#control/saveHistory +# +/run/verbose 2 +# +/run/initialize +# +#/calor/setAbsMat Xenon +# +#/calor/setAbsThick 20.0 mm +# +#/calor/setAbsRad 100.0 mm +# +#/calor/update +# +# hist file name +# +#/plots/sethistName g4.p11 +# +# PLOT: energy deposit distribution in absorber +# +#/plots/setnbinEn 95 +#/plots/setEnlow 0.0 MeV +#/plots/setEnhigh 0.1 MeV +# +#/calor/cutG 3.0 mm +# +#/calor/cutE 3.0 mm +# +/run/initialize +/run/particle/dumpCutValues +# +/gun/particle e- +# +#/gun/energy 200.00 GeV +# +/gun/energy 9000.0 MeV +# +#/tracking/verbose 2 +# +/run/beamOn 1000 +# +# + + + + + + + + diff --git a/examples/extended/electromagnetic/TestEm8/TestEm8.large_N.in b/examples/extended/electromagnetic/TestEm8/TestEm8.large_N.in new file mode 100644 index 0000000000..619eb04e74 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm8/TestEm8.large_N.in @@ -0,0 +1,57 @@ +# +# Macro file 'run11.mac' for the initialization phase of "TestEm8.cc" +# +# It creates the default geometry (simple absorber cylinder ) +# +/control/verbose 2 +# +#control/saveHistory +# +/run/verbose 2 +# +/run/initialize +# +#/calor/setAbsMat Xenon +# +#/calor/setAbsThick 20.0 mm +# +#/calor/setAbsRad 100.0 mm +# +#/calor/update +# +# hist file name +# +#/plots/sethistName g4.p11 +# +# PLOT: energy deposit distribution in absorber +# +#/plots/setnbinEn 95 +#/plots/setEnlow 0.0 MeV +#/plots/setEnhigh 0.1 MeV +# +#/calor/cutG 3.0 mm +# +#/calor/cutE 3.0 mm +# +/run/initialize +/run/particle/dumpCutValues +# +/gun/particle e- +# +#/gun/energy 200.00 GeV +# +/gun/energy 9000.0 MeV +# +#/tracking/verbose 2 +# +/run/beamOn 10000 +# +# + + + + + + + + diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8CalorHit.hh b/examples/extended/electromagnetic/TestEm8/include/Em8CalorHit.hh index 56694624a5..983d2f33c8 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8CalorHit.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8CalorHit.hh @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8CalorHit.hh,v 1.1 2000/01/07 14:50:20 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8CalorHit.hh,v 1.2 2000/06/27 13:29:45 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8CalorimeterSD.hh b/examples/extended/electromagnetic/TestEm8/include/Em8CalorimeterSD.hh index a391edbf1e..dd26b26a37 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8CalorimeterSD.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8CalorimeterSD.hh @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8CalorimeterSD.hh,v 1.1 2000/01/07 14:50:20 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8CalorimeterSD.hh,v 1.2 2000/06/27 13:29:46 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm8/include/Em8DetectorConstruction.hh index 71781b1211..222dd36278 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8DetectorConstruction.hh @@ -1,18 +1,15 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8DetectorConstruction.hh,v 1.1 2000/01/07 14:50:20 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8DetectorConstruction.hh,v 1.3 2000/06/27 13:29:46 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - #ifndef Em8DetectorConstruction_h #define Em8DetectorConstruction_h 1 @@ -29,7 +26,7 @@ class G4UniformMagField; class Em8DetectorMessenger; class Em8CalorimeterSD; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + class Em8DetectorConstruction : public G4VUserDetectorConstruction { @@ -74,7 +71,7 @@ class Em8DetectorConstruction : public G4VUserDetectorConstruction const G4VPhysicalVolume* GetphysiWorld() {return physiWorld;}; const G4VPhysicalVolume* GetAbsorber() {return physiAbsorber;}; - G4LogicalVolume* GetLogicalAbsorber() {return logicAbsorber;}; + G4LogicalVolume* GetLogicalAbsorber() {return logicAbsorber;}; private: @@ -82,6 +79,16 @@ class Em8DetectorConstruction : public G4VUserDetectorConstruction G4Material* AbsorberMaterial; G4double AbsorberThickness; G4double AbsorberRadius; + + G4Material* fWindowMat ; + G4double fWindowThick ; + + G4Material* fElectrodeMat ; + G4double fElectrodeThick ; + + G4Material* fGapMat ; + G4double fGapThick ; + G4double zAbsorber ; G4double zstartAbs , zendAbs ; diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm8/include/Em8DetectorMessenger.hh index b58d009336..83f05e2f47 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8DetectorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8DetectorMessenger.hh @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8DetectorMessenger.hh,v 1.1 2000/01/07 14:50:21 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8DetectorMessenger.hh,v 1.2 2000/06/27 13:29:46 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8EventAction.hh b/examples/extended/electromagnetic/TestEm8/include/Em8EventAction.hh index c35bd1e2d9..d49096e7ca 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8EventAction.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8EventAction.hh @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8EventAction.hh,v 1.1 2000/01/07 14:50:21 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8EventAction.hh,v 1.2 2000/06/27 13:29:46 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm8/include/Em8EventActionMessenger.hh index 4edf6fcc67..97f54b7003 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8EventActionMessenger.hh @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8EventActionMessenger.hh,v 1.1 2000/01/07 14:50:21 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8EventActionMessenger.hh,v 1.2 2000/06/27 13:29:46 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8PhysicsList.hh b/examples/extended/electromagnetic/TestEm8/include/Em8PhysicsList.hh index 5c85579f47..d0d74a9cff 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8PhysicsList.hh @@ -1,17 +1,14 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8PhysicsList.hh,v 1.1 2000/01/07 14:50:21 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8PhysicsList.hh,v 1.3 2000/06/27 13:29:46 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - #ifndef Em8PhysicsList_h #define Em8PhysicsList_h 1 @@ -42,7 +39,6 @@ class Em8StepCut; class Em8DetectorConstruction; class Em8PhysicsListMessenger; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... class Em8PhysicsList: public G4VUserPhysicsList { @@ -65,7 +61,10 @@ class Em8PhysicsList: public G4VUserPhysicsList void ConstructBarions(); protected: - // these methods Construct physics processes and register them + + // these methods Construct physics processes and register them + + void AddParameterisation(); void ConstructGeneral(); void ConstructEM(); diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8PhysicsListMessenger.hh b/examples/extended/electromagnetic/TestEm8/include/Em8PhysicsListMessenger.hh index af6b5c107c..8a094f3f82 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8PhysicsListMessenger.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8PhysicsListMessenger.hh @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8PhysicsListMessenger.hh,v 1.1 2000/01/07 14:50:22 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8PhysicsListMessenger.hh,v 1.2 2000/06/27 13:29:47 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm8/include/Em8PrimaryGeneratorAction.hh index 8498501a30..4b905271fd 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8PrimaryGeneratorAction.hh @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8PrimaryGeneratorAction.hh,v 1.1 2000/01/07 14:50:22 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8PrimaryGeneratorAction.hh,v 1.2 2000/06/27 13:29:47 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8PrimaryGeneratorMessenger.hh b/examples/extended/electromagnetic/TestEm8/include/Em8PrimaryGeneratorMessenger.hh index 9231551eef..6e0e791808 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8PrimaryGeneratorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8PrimaryGeneratorMessenger.hh @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8PrimaryGeneratorMessenger.hh,v 1.1 2000/01/07 14:50:22 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8PrimaryGeneratorMessenger.hh,v 1.2 2000/06/27 13:29:47 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8RunAction.hh b/examples/extended/electromagnetic/TestEm8/include/Em8RunAction.hh index 325686bdb3..8cee60037f 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8RunAction.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8RunAction.hh @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8RunAction.hh,v 1.1 2000/01/07 14:50:22 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8RunAction.hh,v 1.3 2000/06/28 09:55:54 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // @@ -18,17 +18,18 @@ #include "G4UserRunAction.hh" #include "globals.hh" -#include +#include "g4std/iostream" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... class Em8RunMessenger; - -class HepTupleManager; -class HepHistogram; - class G4Run; +#ifndef G4NOHIST + class HepTupleManager; + class HepHistogram; +#endif + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... class Em8RunAction : public G4UserRunAction @@ -114,9 +115,12 @@ class Em8RunAction : public G4UserRunAction 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; diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8RunMessenger.hh b/examples/extended/electromagnetic/TestEm8/include/Em8RunMessenger.hh index 2bfe049919..a567d193ec 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8RunMessenger.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8RunMessenger.hh @@ -1,13 +1,13 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8RunMessenger.hh,v 1.1 2000/01/07 14:50:22 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8RunMessenger.hh,v 1.2 2000/06/27 13:29:47 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8StepCut.hh b/examples/extended/electromagnetic/TestEm8/include/Em8StepCut.hh index 4463ee8a1b..30fed12cd2 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8StepCut.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8StepCut.hh @@ -1,22 +1,14 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8StepCut.hh,v 1.1 2000/01/07 14:50:23 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8StepCut.hh,v 1.2 2000/06/27 13:29:47 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// For information related to this code contact: -// CERN, CN Division, ASD group -// ------------------------------------------------------------ -// 05 March 1999 L.Urban -// ------------------------------------------------------------ #ifndef Em8StepCut_h #define Em8StepCut_h 1 diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8SteppingAction.hh b/examples/extended/electromagnetic/TestEm8/include/Em8SteppingAction.hh index e93c89d933..d6fc371672 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8SteppingAction.hh @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8SteppingAction.hh,v 1.1 2000/01/07 14:50:23 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8SteppingAction.hh,v 1.2 2000/06/27 13:29:47 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8SteppingMessenger.hh b/examples/extended/electromagnetic/TestEm8/include/Em8SteppingMessenger.hh index bcbf41ee97..54a39882c4 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8SteppingMessenger.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8SteppingMessenger.hh @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8SteppingMessenger.hh,v 1.1 2000/01/07 14:50:23 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8SteppingMessenger.hh,v 1.2 2000/06/27 13:29:48 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm8/include/Em8SteppingVerbose.hh index d206ddb3be..9153d8df20 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8SteppingVerbose.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8SteppingVerbose.hh @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8SteppingVerbose.hh,v 1.1 2000/01/07 14:50:23 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8SteppingVerbose.hh,v 1.2 2000/06/27 13:29:48 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8VisManager.hh b/examples/extended/electromagnetic/TestEm8/include/Em8VisManager.hh index 5d1afb4283..4d78fb7392 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8VisManager.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8VisManager.hh @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8VisManager.hh,v 1.1 2000/01/07 14:50:24 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8VisManager.hh,v 1.2 2000/06/27 13:29:48 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/TRTDetectorConstruction.hh b/examples/extended/electromagnetic/TestEm8/include/TRTDetectorConstruction.hh index d41fc7502c..43af39490d 100644 --- a/examples/extended/electromagnetic/TestEm8/include/TRTDetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm8/include/TRTDetectorConstruction.hh @@ -1,3 +1,14 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, 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 2000/06/27 13:29:48 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// #ifndef TRTDetectorConstruction_h #define TRTDetectorConstruction_h 1 diff --git a/examples/extended/electromagnetic/TestEm8/include/TRTMaterials.hh b/examples/extended/electromagnetic/TestEm8/include/TRTMaterials.hh index 1477c31f52..0bc14b52de 100644 --- a/examples/extended/electromagnetic/TestEm8/include/TRTMaterials.hh +++ b/examples/extended/electromagnetic/TestEm8/include/TRTMaterials.hh @@ -1,3 +1,15 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, 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 2000/06/27 13:29:48 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// + #ifndef TRT_MATERIALS_HH #define TRT_MATERIALS_HH diff --git a/examples/extended/electromagnetic/TestEm8/run11.mac b/examples/extended/electromagnetic/TestEm8/run11.mac index 130d828be0..97fdb19a5e 100644 --- a/examples/extended/electromagnetic/TestEm8/run11.mac +++ b/examples/extended/electromagnetic/TestEm8/run11.mac @@ -25,9 +25,9 @@ # # PLOT: energy deposit distribution in absorber # -/plots/setnbinEn 50 +/plots/setnbinEn 95 /plots/setEnlow 0.0 MeV -/plots/setEnhigh 0.020 MeV +/plots/setEnhigh 0.1 MeV # #/calor/cutG 3.0 mm # @@ -40,7 +40,7 @@ # #/gun/energy 200.00 GeV # -/gun/energy 2.00 MeV +/gun/energy 9000.0 MeV # #/tracking/verbose 2 # @@ -49,3 +49,9 @@ # + + + + + + diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8CalorHit.cc b/examples/extended/electromagnetic/TestEm8/src/Em8CalorHit.cc index d149acf2ab..e32f3a3d5d 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8CalorHit.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8CalorHit.cc @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8CalorHit.cc,v 1.1 2000/01/07 14:50:43 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8CalorHit.cc,v 1.2 2000/06/27 13:29:51 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8CalorimeterSD.cc b/examples/extended/electromagnetic/TestEm8/src/Em8CalorimeterSD.cc index bd2fee5cae..e33726f6e4 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8CalorimeterSD.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8CalorimeterSD.cc @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8CalorimeterSD.cc,v 1.1 2000/01/07 14:50:44 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8CalorimeterSD.cc,v 1.3 2000/06/27 13:29:51 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // @@ -77,14 +77,14 @@ G4bool Em8CalorimeterSD::ProcessHits(G4Step* aStep,G4TouchableHistory* ROhist) if (physVol == Detector->GetAbsorber()) calHit->AddAbs(edep,stepl); HitID[Em8Number] = CalCollection->insert(calHit) - 1; if (verboseLevel>0) - G4cout << " New Calorimeter Hit on Em8: " << Em8Number << endl; + G4cout << " New Calorimeter Hit on Em8: " << Em8Number << G4endl; } else { if (physVol == Detector->GetAbsorber()) (*CalCollection)[HitID[Em8Number]]->AddAbs(edep,stepl); if (verboseLevel>0) - G4cout << " Energy added to Em8: " << Em8Number << endl; + G4cout << " Energy added to Em8: " << Em8Number << G4endl; } return true; diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm8/src/Em8DetectorConstruction.cc index 0c508c9fc0..62eb58f7ad 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8DetectorConstruction.cc @@ -1,22 +1,25 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8DetectorConstruction.cc,v 1.1 2000/01/07 14:50:44 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8DetectorConstruction.cc,v 1.5 2000/06/27 13:29:51 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - #include "Em8DetectorConstruction.hh" #include "Em8DetectorMessenger.hh" #include "Em8CalorimeterSD.hh" +#include "G4VXrayTRmodel.hh" +#include "G4IrregularXrayTRmodel.hh" +#include "G4FoamXrayTRmodel.hh" +#include "G4RegularXrayTRmodel.hh" +#include "G4GamDistrXrayTRmodel.hh" +#include "G4PlateIrrGasXrayTRmodel.hh" #include "G4Material.hh" #include "G4Tubs.hh" @@ -30,7 +33,9 @@ #include "G4ios.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +///////////////////////////////////////////////////////////////////////////// +// +// Em8DetectorConstruction::Em8DetectorConstruction() :solidWorld(NULL),logicWorld(NULL),physiWorld(NULL), @@ -39,22 +44,33 @@ Em8DetectorConstruction::Em8DetectorConstruction() magField(NULL),calorimeterSD(NULL),worldchanged(false) { // default parameter values of the calorimeter - WorldSizeZ = 8.*cm; - WorldSizeR = 2.*cm; - AbsorberThickness = 10.0*mm; - AbsorberRadius = 1.*cm; - zAbsorber = 2.*cm ; + G4double inch = 2.54*cm ; + G4double mil = inch/1000.0 ; - fRadThickness = 20*micrometer ; - fGasGap = 500*micrometer ; - fFoilNumber = 200 ; + WorldSizeZ = 80.*cm; + WorldSizeR = 20.*cm; - fDetThickness = 20.0*mm ; + AbsorberThickness = 40.0*mm; + + AbsorberRadius = 10.*cm; + zAbsorber = 36.*cm ; + + fWindowThick = 51.0*micrometer ; + fElectrodeThick = 10.0*micrometer ; + fGapThick = 1.0*mm ; + + fRadThickness = 25*micrometer ; // 0.5*mil ; + fGasGap = 1500*micrometer ; // 30*mil ; + fFoilNumber = 188 ; + + fDetThickness = 40.0*mm ; fDetLength = 200.0*cm ; fDetGap = 1.0*mm ; + fStartR = 40*cm ; - fStartZ = 2.0*cm ; + fStartZ = 10.0*mm ; + fModuleNumber = 1 ; // create commands for interactive definition of the calorimeter @@ -134,9 +150,6 @@ density = 1.848*g/cm3; a = 9.01*g/mole; G4Material* Be = new G4Material(name="Beryllium", z=4., a, density); -density = 2.700*g/cm3; -a = 26.98*g/mole; -G4Material* Al = new G4Material(name="Aluminium", z=13., a, density); density = 1.390*g/cm3; a = 39.95*g/mole; @@ -167,13 +180,7 @@ G4Material* H2O = new G4Material(name="Water", density, ncomponents=2); H2O->AddElement(elH, natoms=2); H2O->AddElement(elO, natoms=1); - // Polypropelene - - G4Material* CH2 = new G4Material ("Polypropelene" , 0.91*g/cm3, 2); - C2H2->AddElement(elH,2); - C2H2->AddElement(elC,1); - - // Kapton (polyimide) + // Kapton (polyimide) ??? since = Mylar C5H4O2 density = 1.39*g/cm3; G4Material* Kapton = new G4Material(name="Kapton", density, nel=3); @@ -195,32 +202,6 @@ H2O->AddElement(elO, natoms=1); 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); - - // 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); // TRT_CH2 @@ -260,14 +241,48 @@ H2O->AddElement(elO, natoms=1); ************************ */ + // Al for electrodes + + density = 2.700*g/cm3; + a = 26.98*g/mole; + G4Material* Al = new G4Material(name="Aluminium", z=13., a, density); + + // 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 ); + + // Metane, STP + + // density = 0.7174*mg/cm3 ; + // G4Material* metane = new G4Material(name="CH4",density,nel=2) ; + // metane->AddElement(elC,1) ; + // metane->AddElement(elH,4) ; + + // 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); @@ -283,7 +298,52 @@ H2O->AddElement(elO, natoms=1); Air->AddMaterial( Oxygen, fractionmass = 0.2315 ) ; Air->AddMaterial( Argon, fractionmass = 0.0128 ) ; - *********************************** */ + // 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 ) ; + + /* ************** + + 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); + + *********** */ // Xenon as detector gas, STP @@ -291,7 +351,7 @@ H2O->AddElement(elO, natoms=1); 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); @@ -300,28 +360,41 @@ H2O->AddElement(elO, natoms=1); // 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 ) ; +// 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* Xe_80CO2_20 = new G4Material(name="XeCO2" , density, ncomponents=2); - Xe_80CO2_20->AddMaterial( Xe, fractionmass = 0.922 ) ; - Xe_80CO2_20->AddMaterial( CarbonDioxide, fractionmass = 0.078 ) ; + 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 - G4cout << *(G4Material::GetMaterialTable()) << endl; + 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 ) ; - //default materials of the calorimeter - // fRadiatorMat = CH2 ; + G4cout << *(G4Material::GetMaterialTable()) << G4endl; - AbsorberMaterial = Xe ; // Xe_80CO2_20 ; // Argon ; // Ar_80CO2_20 ; - WorldMaterial = Argon ; + //default materials of the calorimeter and TR radiator + + fRadiatorMat = Mylar ; // CH2 ; // Mylar ; + + fWindowMat = Mylar ; + fElectrodeMat = Al ; + + AbsorberMaterial = Kr20CO2 ; // XeCO2CF4 ; + fGapMat = Kr20CO2 ; + + WorldMaterial = Air ; } ///////////////////////////////////////////////////////////////////////// @@ -359,39 +432,63 @@ G4VPhysicalVolume* Em8DetectorConstruction::ConstructCalorimeter() false, //no boolean operation 0); //copy number - /* ******************************************************************* + // TR radiator envelope - fSolidRadSlice = new G4Tubs("RadSlice",0.0, // fStartR,fWorldRadius + G4double radThick = fFoilNumber*(fRadThickness + fGasGap) + fDetGap ; + + G4double zRad = fStartZ + 0.5*radThick ; + G4cout<<"zRad = "< 0.) @@ -425,20 +559,20 @@ G4VPhysicalVolume* Em8DetectorConstruction::ConstructCalorimeter() if(logicAbsorber) delete logicAbsorber ; if(physiAbsorber) delete physiAbsorber ; - solidAbsorber = new G4Tubs("Absorber", //its name + solidAbsorber = new G4Tubs("Absorber", 0.,AbsorberRadius,AbsorberThickness/2.,0.,twopi); - logicAbsorber = new G4LogicalVolume(solidAbsorber, // its solid - AbsorberMaterial, // its material - "Absorber"); // its name + logicAbsorber = new G4LogicalVolume(solidAbsorber, + AbsorberMaterial, + "Absorber"); - physiAbsorber = new G4PVPlacement(0, // no rotation - G4ThreeVector(0.,0.,zAbsorber), // its position - "Absorber", // its name - logicAbsorber, // its logical volume - physiWorld, // its mother - false, // no boulean operat - 0); // copy number + physiAbsorber = new G4PVPlacement(0, + G4ThreeVector(0.,0.,zAbsorber), + "Absorber", + logicAbsorber, + physiWorld, + false, + 0); } @@ -453,8 +587,34 @@ G4VPhysicalVolume* Em8DetectorConstruction::ConstructCalorimeter() } if (logicAbsorber) logicAbsorber->SetSensitiveDetector(calorimeterSD); - //always return the physical World + // Parameterisation + + G4VXrayTRmodel* pTRModel = new G4IrregularXrayTRmodel(logicRadiator, + fRadThickness,fGasGap); + + // G4VXrayTRmodel* pTRModel = new G4FoamXrayTRmodel(logicRadiator, + // fRadThickness,fGasGap); + + // G4VXrayTRmodel* pTRModel = new G4RegularXrayTRmodel(logicRadiator, + // fRadThickness,fGasGap); + + G4double alphaPlate = 160.0 ; + G4double alphaGas = 160.0 ; + + // G4VXrayTRmodel* pTRModel = new G4GamDistrXrayTRmodel(logicRadiator, + // fRadThickness,alphaPlate, + // fGasGap,alphaGas); + + // G4VXrayTRmodel* pTRModel = new G4PlateIrrGasXrayTRmodel(logicRadiator, + // fRadThickness,fGasGap); + + // pTRModel->GetPlateZmuProduct() ; + // pTRModel->GetGasZmuProduct() ; + + // pTRModel->GetNumberOfPhotons() ; + // always return physics world + return physiWorld; } @@ -466,12 +626,12 @@ void Em8DetectorConstruction::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. " << endl; + 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. " << endl; - G4cout << " Z position of the (middle of the) absorber " << zAbsorber/mm << " mm." << endl; - G4cout << endl; + 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; } /////////////////////////////////////////////////////////////////////////// @@ -614,3 +774,19 @@ void Em8DetectorConstruction::UpdateGeometry() // //////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm8/src/Em8DetectorMessenger.cc index fee8b5327f..7b30c019f8 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8DetectorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8DetectorMessenger.cc @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8DetectorMessenger.cc,v 1.1 2000/01/07 14:50:44 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8DetectorMessenger.cc,v 1.2 2000/06/27 13:29:51 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8EventAction.cc b/examples/extended/electromagnetic/TestEm8/src/Em8EventAction.cc index 132c8dd6d4..dc8d8c5b74 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8EventAction.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8EventAction.cc @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8EventAction.cc,v 1.1 2000/01/07 14:50:45 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8EventAction.cc,v 1.3 2000/06/27 13:29:52 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // @@ -57,10 +57,10 @@ void Em8EventAction::BeginOfEventAction(const G4Event* evt) { G4int evtNb = evt->GetEventID(); if (evtNb%printModulo == 0) - G4cout << "\n---> Begin of Event: " << evtNb << endl; + G4cout << "\n---> Begin of Event: " << evtNb << G4endl; if(verboselevel>1) - G4cout << "<<< Event " << evtNb << " started." << endl; + G4cout << "<<< Event " << evtNb << " started." << G4endl; if (calorimeterCollID==-1) { @@ -93,7 +93,7 @@ void Em8EventAction::EndOfEventAction(const G4Event* evt) int n_hit = CHC->entries(); // if(verboselevel==2) // G4cout << " " << n_hit - // << " hits are stored in Em8CalorHitsCollection." << endl; + // << " hits are stored in Em8CalorHitsCollection." << G4endl; G4double totEAbs=0, totLAbs=0; for (int i=0;iCountEvent() ; @@ -114,7 +114,7 @@ void Em8EventAction::EndOfEventAction(const G4Event* evt) runaction->AddnStepsCharged(nstepCharged) ; runaction->AddnStepsNeutral(nstepNeutral) ; if(verboselevel==2) - G4cout << " Ncharged=" << Nch << " , Nneutral=" << Nne << endl; + G4cout << " Ncharged=" << Nch << " , Nneutral=" << Nne << G4endl; runaction->CountParticles(Nch,Nne); runaction->AddEP(NE,NP); runaction->AddTrRef(Transmitted,Reflected) ; @@ -141,7 +141,7 @@ void Em8EventAction::EndOfEventAction(const G4Event* evt) } if(verboselevel>0) - G4cout << "<<< Event " << evt->GetEventID() << " ended." << endl; + G4cout << "<<< Event " << evt->GetEventID() << " ended." << G4endl; //save rndm status @@ -151,7 +151,7 @@ void Em8EventAction::EndOfEventAction(const G4Event* evt) G4int evtNb = evt->GetEventID(); if (evtNb%printModulo == 0) { - G4cout << "\n---> End of Event: " << evtNb << endl; + G4cout << "\n---> End of Event: " << evtNb << G4endl; HepRandom::showEngineStatus(); } } diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm8/src/Em8EventActionMessenger.cc index 7cb3b3f3ff..e60a3d927b 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8EventActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8EventActionMessenger.cc @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8EventActionMessenger.cc,v 1.1 2000/01/07 14:50:45 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8EventActionMessenger.cc,v 1.2 2000/06/27 13:29:52 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8PhysicsList.cc b/examples/extended/electromagnetic/TestEm8/src/Em8PhysicsList.cc index c066c7687c..3e38483341 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8PhysicsList.cc @@ -1,14 +1,15 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8PhysicsList.cc,v 1.1 2000/01/07 14:50:45 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8PhysicsList.cc,v 1.4 2000/06/27 13:29:52 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // +#include "G4Timer.hh" #include "Em8PhysicsList.hh" #include "Em8DetectorConstruction.hh" @@ -23,9 +24,11 @@ #include "G4Material.hh" #include "G4EnergyLossTables.hh" #include "G4UnitsTable.hh" -#include "G4Timer.hh" #include "G4ios.hh" -#include +#include "g4std/iomanip" + +#include "G4FastSimulationManagerProcess.hh" + ///////////////////////////////////////////////////////////// // @@ -134,6 +137,8 @@ void Em8PhysicsList::ConstructBarions() void Em8PhysicsList::ConstructProcess() { AddTransportation(); + AddParameterisation(); + ConstructEM(); ConstructGeneral(); } @@ -167,6 +172,7 @@ void Em8PhysicsList::ConstructProcess() void Em8PhysicsList::ConstructEM() { theParticleIterator->reset(); + while( (*theParticleIterator)() ) { G4ParticleDefinition* particle = theParticleIterator->value(); @@ -178,8 +184,8 @@ void Em8PhysicsList::ConstructEM() // Construct processes for gamma thePhotoElectricEffect = new G4PhotoElectricEffect(); - theComptonScattering = new G4ComptonScattering(); - theGammaConversion = new G4GammaConversion(); + theComptonScattering = new G4ComptonScattering(); + theGammaConversion = new G4GammaConversion(); pmanager->AddDiscreteProcess(thePhotoElectricEffect); pmanager->AddDiscreteProcess(theComptonScattering); @@ -273,20 +279,24 @@ void Em8PhysicsList::ConstructEM() || particleName == "kaon-" ) { - // Em8StepCut* thehadronStepCut = new Em8StepCut(); + Em8StepCut* thehadronStepCut = new Em8StepCut(); // 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) ; + pmanager->AddProcess( thehadronStepCut,-1,-1,3); + thehadronStepCut->SetMaxStep(MaxChargedStep) ; // thehadronStepCut->SetMaxStep(10*mm) ; } @@ -320,6 +330,28 @@ void Em8PhysicsList::ConstructGeneral() } } +///////////////////////////////////////////////////////////////////////////// + +void Em8PhysicsList::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 Em8PhysicsList::SetCuts() @@ -329,7 +361,7 @@ void Em8PhysicsList::SetCuts() if (verboseLevel >0) { G4cout << "Em8PhysicsList::SetCuts:"; - G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << endl; + 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 @@ -354,8 +386,8 @@ void Em8PhysicsList::SetCuts() theTimer.Stop(); G4cout.precision(6); - G4cout << endl ; - G4cout << "total time(SetCuts)=" << theTimer.GetUserElapsed() << " s " <FindParticle("e-"); cut = G4EnergyLossTables::GetRange(part,val,currMat); - G4cout << "material : " << currMat->GetName() << endl; - G4cout << "particle : " << part->GetParticleName() << endl; - G4cout << "energy : " << val / keV << " (keV)" << endl; - G4cout << "range : " << cut / mm << " (mm)" << endl; + G4cout << "material : " << currMat->GetName() << G4endl; + G4cout << "particle : " << part->GetParticleName() << G4endl; + G4cout << "energy : " << val / keV << " (keV)" << G4endl; + G4cout << "range : " << cut / mm << " (mm)" << G4endl; } //////////////////////////////////////////////////////////////////////////// @@ -440,7 +472,7 @@ void Em8PhysicsList::GetRange(G4double val) void Em8PhysicsList::SetMaxStep(G4double step) { MaxChargedStep = step ; - G4cout << " MaxChargedStep=" << MaxChargedStep << endl; - G4cout << endl; + G4cout << " MaxChargedStep=" << MaxChargedStep << G4endl; + G4cout << G4endl; } diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8PhysicsListMessenger.cc b/examples/extended/electromagnetic/TestEm8/src/Em8PhysicsListMessenger.cc index 0ec723ed6f..c565fd9dcd 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8PhysicsListMessenger.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8PhysicsListMessenger.cc @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8PhysicsListMessenger.cc,v 1.1 2000/01/07 14:50:46 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8PhysicsListMessenger.cc,v 1.2 2000/06/27 13:29:52 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm8/src/Em8PrimaryGeneratorAction.cc index 552075cb3c..1df678da60 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8PrimaryGeneratorAction.cc @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8PrimaryGeneratorAction.cc,v 1.1 2000/01/07 14:50:46 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8PrimaryGeneratorAction.cc,v 1.3 2000/06/27 13:29:52 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // @@ -117,14 +117,14 @@ void Em8PrimaryGeneratorAction::Setzvertex(G4double z) vertexdefined = true ; zvertex = z ; G4cout << " Z coordinate of the primary vertex = " << zvertex/mm << - " mm." << endl; + " mm." << G4endl; } void Em8PrimaryGeneratorAction::Setxvertex(G4double x) { vertexdefined = true ; xvertex = x ; G4cout << " X coordinate of the primary vertex = " << xvertex/mm << - " mm." << endl; + " mm." << G4endl; } void Em8PrimaryGeneratorAction::Setyvertex(G4double y) @@ -132,5 +132,5 @@ void Em8PrimaryGeneratorAction::Setyvertex(G4double y) vertexdefined = true ; yvertex = y ; G4cout << " Y coordinate of the primary vertex = " << yvertex/mm << - " mm." << endl; + " mm." << G4endl; } diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8PrimaryGeneratorMessenger.cc b/examples/extended/electromagnetic/TestEm8/src/Em8PrimaryGeneratorMessenger.cc index a55f870998..f81d14651f 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8PrimaryGeneratorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8PrimaryGeneratorMessenger.cc @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8PrimaryGeneratorMessenger.cc,v 1.1 2000/01/07 14:50:46 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8PrimaryGeneratorMessenger.cc,v 1.2 2000/06/27 13:29:52 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8RunAction.cc b/examples/extended/electromagnetic/TestEm8/src/Em8RunAction.cc index e7f779aaae..9b647eda90 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8RunAction.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8RunAction.cc @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8RunAction.cc,v 1.1 2000/01/07 14:50:46 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8RunAction.cc,v 1.5 2000/06/28 09:55:55 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // @@ -18,10 +18,12 @@ #include "G4UImanager.hh" #include "G4VVisManager.hh" #include "G4ios.hh" -#include +#include "g4std/iomanip" #include "Randomize.hh" -#include "CLHEP/Hist/HBookFile.h" +#ifndef G4NOHIST + #include "CLHEP/Hist/HBookFile.h" +#endif #include ////////////////////////////////////////////////////////////////////////////// @@ -29,11 +31,14 @@ Em8RunAction::Em8RunAction() :histName("histfile"),nbinStep(0),nbinEn(0),nbinTt(0),nbinTb(0), nbinTsec(0),nbinTh(0),nbinThback(0),nbinR(0),nbinGamma(0), - nbinvertexz(0),histo1(0),histo2(0),histo3(0),histo4(0),histo5(0), - histo6(0),histo7(0),histo8(0),histo9(0),histo10(0) + nbinvertexz(0) { runMessenger = new Em8RunMessenger(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 } //////////////////////////////////////////////////////////////////////////// @@ -41,6 +46,7 @@ Em8RunAction::Em8RunAction() Em8RunAction::~Em8RunAction() { delete runMessenger; +#ifndef G4NOHIST if(histo1) delete histo1 ; if(histo2) delete histo2 ; if(histo3) delete histo3 ; @@ -52,13 +58,14 @@ Em8RunAction::~Em8RunAction() if(histo9) delete histo9 ; if(histo10) delete histo10 ; delete hbookManager; - +#endif } //////////////////////////////////////////////////////////////////////////////// void Em8RunAction::bookHisto() { +#ifndef G4NOHIST // init hbook hbookManager = new HBookFile(histName, 68); @@ -127,13 +134,14 @@ void Em8RunAction::bookHisto() ,nbinGamma,log10(ElowGamma),log10(EhighGamma)) ; assert (histo10 != 0); } +#endif } ///////////////////////////////////////////////////////////////////////////// void Em8RunAction::BeginOfRunAction(const G4Run* aRun) { - G4cout << "### Run " << aRun->GetRunID() << " start." << endl; + G4cout << "### Run " << aRun->GetRunID() << " start." << G4endl; // save Rndm status if (saveRndm > 0) @@ -345,76 +353,79 @@ void Em8RunAction::EndOfRunAction(const G4Run* aRun) Transmitted /=TotNbofEvents ; Reflected /=TotNbofEvents ; - G4cout << " ================== run summary =====================" << endl; + G4cout << " ================== run summary =====================" << G4endl; G4int prec = G4cout.precision(6); G4cout << " end of Run TotNbofEvents = " << - TotNbofEvents << endl ; + TotNbofEvents << G4endl ; G4cout << " mean charged track length in absorber=" << tlSumAbs/mm << " +- " << sAbs/mm << - " mm " << endl; - G4cout << endl; + " mm " << G4endl; + G4cout << G4endl; G4cout << " mean energy deposit in absorber=" << EnergySumAbs/MeV << " +- " << sigAbs/MeV << - " MeV " << endl ; - G4cout << endl ; + " MeV " << G4endl ; + G4cout << G4endl ; G4cout << " mean number of steps in absorber (charged) =" << nStepSumCharged << " +- " << sigch << - " " << endl ; + " " << G4endl ; G4cout << " mean number of steps in absorber (neutral) =" << nStepSumNeutral << " +- " << signe << - " " << endl ; - G4cout << endl ; + " " << G4endl ; + G4cout << G4endl ; G4cout << " mean number of charged secondaries = " << - SumCharged << " +- " << sigcharged << endl; - G4cout << endl ; + SumCharged << " +- " << sigcharged << G4endl; + G4cout << G4endl ; G4cout << " mean number of neutral secondaries = " << - SumNeutral << " +- " << signeutral << endl; - G4cout << endl ; + SumNeutral << " +- " << signeutral << G4endl; + G4cout << G4endl ; G4cout << " mean number of e-s =" << Selectron << - " and e+s =" << Spositron << endl; - G4cout << endl; + " and e+s =" << Spositron << G4endl; + G4cout << G4endl; G4cout << "(number) transmission coeff=" << Transmitted << - " reflection coeff=" << Reflected << endl; - G4cout << endl; + " reflection coeff=" << Reflected << G4endl; + G4cout << G4endl; if(nbinStep>0) {G4double E , dnorm, norm ; - G4cout << " step number/event distribution " << endl ; + G4cout << " step number/event distribution " << G4endl ; G4cout << "#entries=" << entryStep << " #underflows=" << underStep << - " #overflows=" << overStep << endl ; + " #overflows=" << overStep << G4endl ; if( entryStep>0.) { E = Steplow - dStep ; norm = TotNbofEvents ; - G4cout << " bin nb nsteplow entries normalized " << endl ; + G4cout << " bin nb nsteplow entries normalized " << G4endl ; for(G4int iss=0; iss 0) { - ofstream fileOut("PAIdistribution.out", ios::out ) ; - fileOut.setf( ios::scientific, ios::floatfield ); + 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,width ; Emp=-999.999 ; - G4cout << " energy deposit distribution " << endl ; + G4cout << " energy deposit distribution " << G4endl ; G4cout << "#entries=" << entryEn << " #underflows=" << underEn << - " #overflows=" << overEn << endl ; + " #overflows=" << overEn << G4endl ; if( entryEn>0.) { E = Enlow - dEn ; - norm = TotNbofEvents*dEn ; - G4cout << " bin nb Elow entries normalized " << endl ; + norm = TotNbofEvents*1.0 ; // *dEn ; + G4cout << " bin nb Elow entries normalized " << G4endl ; fmax = 0. ; for(G4int ien=0; ien= 0.5*fmax) E2=E ; } - G4cout << " Emp = " << setw(15) << Emp/MeV << " width=" - << setw(15) << (E2-E1)/MeV << " MeV " << endl; - G4cout << endl ; + 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 " << endl ; + G4cout << " transmitted energy distribution " << G4endl ; G4cout << "#entries=" << entryTt << " #underflows=" << underTt << - " #overflows=" << overTt << endl ; + " #overflows=" << overTt << G4endl ; if( entryTt>0.) { Ttmean /= entryTt; @@ -482,27 +494,27 @@ void Em8RunAction::EndOfRunAction(const G4Run* aRun) else sig=sqrt(sig/entryTt) ; G4cout << " mean energy of transmitted particles=" << Ttmean/keV << - " +- " << sig/keV << " keV." << endl; + " +- " << sig/keV << " keV." << G4endl; E = Ttlow - dTt ; norm = TotNbofEvents*dTt ; - G4cout << " bin nb Elow entries normalized " << endl ; + G4cout << " bin nb Elow entries normalized " << G4endl ; for(G4int itt=0; itt0) { G4double E , dnorm, norm ,sig; - G4cout << " backscattered energy distribution " << endl ; + G4cout << " backscattered energy distribution " << G4endl ; G4cout << "#entries=" << entryTb << " #underflows=" << underTb << - " #overflows=" << overTb << endl ; + " #overflows=" << overTb << G4endl ; if( entryTb>0.) { Tbmean /= entryTb; @@ -512,48 +524,48 @@ void Em8RunAction::EndOfRunAction(const G4Run* aRun) else sig=sqrt(sig/entryTb) ; G4cout << " mean energy of backscattered particles=" << Tbmean/keV << - " +- " << sig/keV << " keV." << endl; + " +- " << sig/keV << " keV." << G4endl; E = Tblow - dTb ; norm = TotNbofEvents*dTb ; - G4cout << " bin nb Elow entries normalized " << endl ; + G4cout << " bin nb Elow entries normalized " << G4endl ; for(G4int itt=0; itt0) {G4double E , dnorm, norm ; - G4cout << " energy distribution of charged secondaries " << endl ; + G4cout << " energy distribution of charged secondaries " << G4endl ; G4cout << "#entries=" << entryTsec << " #underflows=" << underTsec << - " #overflows=" << overTsec << endl ; + " #overflows=" << overTsec << G4endl ; if( entryTsec>0.) { E = Tseclow - dTsec ; norm = TotNbofEvents*dTsec ; - G4cout << " bin nb Elow entries normalized " << endl ; + G4cout << " bin nb Elow entries normalized " << G4endl ; for(G4int itt=0; itt0) {G4double R , dnorm, norm,sig ; - G4cout << " R distribution " << endl ; + G4cout << " R distribution " << G4endl ; G4cout << "#entries=" << entryR << " #underflows=" << underR << - " #overflows=" << overR << endl ; + " #overflows=" << overR << G4endl ; if( entryR >0.) { Rmean /= entryR; @@ -561,27 +573,27 @@ void Em8RunAction::EndOfRunAction(const G4Run* aRun) if(sig<=0.) sig=0. ; else sig = sqrt(sig/entryR) ; G4cout << " mean lateral displacement at exit=" << Rmean/mm << " +- " - << sig/mm << " mm." << endl ; + << sig/mm << " mm." << G4endl ; R = Rlow - dR ; norm = TotNbofEvents*dR ; - G4cout << " bin nb Rlow entries normalized " << endl ; + 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 " << endl ; + G4cout << " angle distribution " << G4endl ; G4cout << "#entries=" << entryTh << " #underflows=" << underTh << - " #overflows=" << overTh << endl ; + " #overflows=" << overTh << G4endl ; if( entryTh>0.) { Th= Thlow - dTh ; @@ -593,7 +605,7 @@ void Em8RunAction::EndOfRunAction(const G4Run* aRun) pere = 1./exp(1.) ; G4cout << " bin nb Thlowdeg Thlowrad " << - " entries normalized " << endl ; + " entries normalized " << G4endl ; Thpere = 0. ; sum = 0. ; Thmean = 0. ; @@ -607,27 +619,27 @@ void Em8RunAction::EndOfRunAction(const G4Run* aRun) fnorm = fac0*distTh[ien] ; if( fnorm > pere) Thpere = Th ; - G4cout << setw(5) << ien << setw(10) << Thdeg << " " << - setw(10) << Th << " " << - setw(12) << distTh[ien] << " " << - setw(12) << dnorm << " " << setw(12) << fnorm <0) {G4double Thb,Thdegb, dnormb, normb,fac0b,fnormb,pereb,Thpereb,Thmeanb,sumb; - G4cout << " backscattering angle distribution " << endl ; + G4cout << " backscattering angle distribution " << G4endl ; G4cout << "#entries=" << entryThback << " #underflows=" << underThback << - " #overflows=" << overThback << endl ; + " #overflows=" << overThback << G4endl ; if( entryThback>0.) { Thb= Thlowback - dThback ; @@ -639,7 +651,7 @@ void Em8RunAction::EndOfRunAction(const G4Run* aRun) pereb = 1./exp(1.) ; G4cout << " bin nb Thlowdeg Thlowrad " << - " entries normalized " << endl ; + " entries normalized " << G4endl ; Thpereb = 0. ; sumb = 0. ; Thmeanb = 0. ; @@ -653,65 +665,65 @@ void Em8RunAction::EndOfRunAction(const G4Run* aRun) fnormb = fac0b*distThback[ien] ; if( fnormb > pereb) Thpereb = Thb ; - G4cout << setw(5) << ien << setw(10) << Thdegb << " " << - setw(10) << Thb << " " << - setw(12) << distThback[ien] << " " << - setw(12) << dnormb << " " << setw(12) << fnormb <0) {G4double E , fact,dnorm, norm ; - G4cout << " gamma energy distribution " << endl ; + G4cout << " gamma energy distribution " << G4endl ; G4cout << "#entries=" << entryGamma << " #underflows=" << underGamma << - " #overflows=" << overGamma << endl ; + " #overflows=" << overGamma << G4endl ; if( entryGamma>0.) { fact=exp(dEGamma) ; E = ElowGamma/fact ; norm = TotNbofEvents*dEGamma; - G4cout << " bin nb Elow entries normalized " << endl ; + G4cout << " bin nb Elow entries normalized " << G4endl ; for(G4int itt=0; itt0) {G4double z , dnorm, norm ; - G4cout << " vertex Z distribution " << endl ; + G4cout << " vertex Z distribution " << G4endl ; G4cout << "#entries=" << entryvertexz << " #underflows=" << undervertexz << - " #overflows=" << oververtexz << endl ; + " #overflows=" << oververtexz << G4endl ; if( entryvertexz >0.) { z =zlow - dz ; norm = TotNbofEvents*dz ; - G4cout << " bin nb zlow entries normalized " << endl ; + G4cout << " bin nb zlow entries normalized " << G4endl ; for(G4int iez=0; iezwrite(); - +#endif + // save Rndm status if (saveRndm == 1) @@ -785,10 +799,11 @@ void Em8RunAction::AddTrRef(G4double tr,G4double ref) void Em8RunAction::FillNbOfSteps(G4double ns) { +#ifndef G4NOHIST const G4double eps = 1.e-10 ; G4double n,bin ; G4int ibin; - + if(histo1) { entryStep += 1. ; @@ -806,12 +821,14 @@ void Em8RunAction::FillNbOfSteps(G4double ns) } histo1->accumulate(ns) ; } +#endif } ////////////////////////////////////////////////////////////////////////////// void Em8RunAction::FillEn(G4double En) { +#ifndef G4NOHIST G4double bin ; G4int ibin; @@ -829,12 +846,14 @@ void Em8RunAction::FillEn(G4double En) } histo2->accumulate(En/keV) ; // was /MeV } +#endif } //////////////////////////////////////////////////////////////////////////// void Em8RunAction::FillTt(G4double En) { +#ifndef G4NOHIST G4double bin ; G4int ibin; @@ -856,12 +875,14 @@ void Em8RunAction::FillTt(G4double En) } histo5->accumulate(En/MeV) ; } +#endif } ////////////////////////////////////////////////////////////////////////////// void Em8RunAction::FillTb(G4double En) { +#ifndef G4NOHIST G4double bin ; G4int ibin; @@ -883,12 +904,14 @@ void Em8RunAction::FillTb(G4double En) } histo7->accumulate(En/MeV) ; } +#endif } /////////////////////////////////////////////////////////////////////////////// void Em8RunAction::FillTsec(G4double En) { +#ifndef G4NOHIST G4double bin ; G4int ibin; @@ -908,12 +931,14 @@ void Em8RunAction::FillTsec(G4double En) } histo8->accumulate(En/MeV) ; } +#endif } ///////////////////////////////////////////////////////////////////////////// void Em8RunAction::FillGammaSpectrum(G4double En) { +#ifndef G4NOHIST G4double bin ; G4int ibin; @@ -933,12 +958,14 @@ void Em8RunAction::FillGammaSpectrum(G4double En) } histo10->accumulate(log10(En/MeV)) ; } +#endif } //////////////////////////////////////////////////////////////////////////////// void Em8RunAction::FillTh(G4double Th) { +#ifndef G4NOHIST static const G4double cn=pi/(64800.*dTh) ; static const G4double cs=pi/ (64800.*(cos(Thlow)-cos(Thlow+dTh))); @@ -966,7 +993,7 @@ void Em8RunAction::FillTh(G4double Th) { G4double thdeg=Th*180./pi; G4cout << "theta < 0.001*dth (from plot excluded) theta=" - << setw(12) << setprecision(4) << thdeg << endl; + << G4std::setw(12) << G4std::setprecision(4) << thdeg << G4endl; wg=0. ; } distTh[ibin] += wg ; @@ -974,12 +1001,14 @@ void Em8RunAction::FillTh(G4double Th) histo3->accumulate(Th/deg, wg) ; } +#endif } ////////////////////////////////////////////////////////////////////////// void Em8RunAction::FillThBack(G4double Th) { +#ifndef G4NOHIST static const G4double cn=pi/(64800.*dThback) ; static const G4double cs=pi/ (64800.*(cos(Thlowback)-cos(Thlowback+dThback))); @@ -1005,20 +1034,21 @@ void Em8RunAction::FillThBack(G4double Th) { G4double thdeg=Th*180./pi; G4cout << "theta < 0.001*dth (from plot excluded) theta=" - << setw(12) << setprecision(4) << thdeg << endl; + << G4std::setw(12) << G4std::setprecision(4) << thdeg << G4endl; wg=0. ; } distThback[ibin] += wg ; } histo6->accumulate(Th/deg, wg) ; } - +#endif } ////////////////////////////////////////////////////////////////////////// void Em8RunAction::FillR(G4double R ) { +#ifndef G4NOHIST G4double bin ; G4int ibin; @@ -1040,12 +1070,14 @@ void Em8RunAction::FillR(G4double R ) } histo4->accumulate(R/mm) ; } +#endif } ///////////////////////////////////////////////////////////////////////////// void Em8RunAction::Fillvertexz(G4double z ) { +#ifndef G4NOHIST G4double bin ; G4int ibin; @@ -1065,6 +1097,7 @@ void Em8RunAction::Fillvertexz(G4double z ) } histo9->accumulate(z/mm) ; } +#endif } ////////////////////////////////////////////////////////////////////////////// @@ -1072,26 +1105,27 @@ void Em8RunAction::Fillvertexz(G4double z ) void Em8RunAction::SethistName(G4String name) { histName = name ; - G4cout << " hist file = " << histName << endl; + G4cout << " hist file = " << histName << G4endl; } void Em8RunAction::SetnbinStep(G4int nbin) { nbinStep = nbin ; if(nbinStep>0) - G4cout << " Nb of bins in #step plot = " << nbinStep << endl ; + G4cout << " Nb of bins in #step plot = " << nbinStep << G4endl ; } + void Em8RunAction::SetSteplow(G4double low) { Steplow = low ; if(nbinStep>0) - G4cout << " low in the #step plot = " << Steplow << endl ; + G4cout << " low in the #step plot = " << Steplow << G4endl ; } void Em8RunAction::SetStephigh(G4double high) { Stephigh = high ; if(nbinStep>0) - G4cout << " high in the #step plot = " << Stephigh << endl ; + G4cout << " high in the #step plot = " << Stephigh << G4endl ; } //////////////////////////////////////////////////////////////////////// @@ -1100,18 +1134,20 @@ void Em8RunAction::SetnbinEn(G4int nbin) { nbinEn = nbin ; - if(nbinEn > 0) G4cout << " Nb of bins in Edep plot = " << nbinEn << endl ; + if(nbinEn > 0) G4cout << " Nb of bins in Edep plot = " << nbinEn << G4endl ; } + void Em8RunAction::SetEnlow(G4double Elow) { Enlow = Elow ; - if(nbinEn>0) G4cout << " Elow in the Edep plot = " << Enlow << endl ; + if(nbinEn>0) G4cout << " Elow in the Edep plot = " << Enlow << G4endl ; } + void Em8RunAction::SetEnhigh(G4double Ehigh) { Enhigh = Ehigh ; - if(nbinEn>0) G4cout << " Ehigh in the Edep plot = " << Enhigh << endl ; + if(nbinEn>0) G4cout << " Ehigh in the Edep plot = " << Enhigh << G4endl ; } ///////////////////////////////////////////////////////////////////////// @@ -1120,152 +1156,170 @@ void Em8RunAction::SetnbinGamma(G4int nbin) { nbinGamma = nbin ; if(nbinGamma>0) - G4cout << " Nb of bins in gamma spectrum plot = " << nbinGamma << endl ; + G4cout << " Nb of bins in gamma spectrum plot = " << nbinGamma << G4endl ; } + void Em8RunAction::SetElowGamma(G4double Elow) { ElowGamma = Elow ; if(nbinGamma>0) - G4cout << " Elow in the gamma spectrum plot = " << ElowGamma << endl ; + G4cout << " Elow in the gamma spectrum plot = " << ElowGamma << G4endl ; } + void Em8RunAction::SetEhighGamma(G4double Ehigh) { EhighGamma = Ehigh ; if(nbinGamma>0) - G4cout << " Ehigh in the gamma spectrum plot = " << EhighGamma << endl ; + G4cout << " Ehigh in the gamma spectrum plot = " << EhighGamma << G4endl ; } void Em8RunAction::SetnbinTt(G4int nbin) { nbinTt = nbin ; if(nbinTt>0) - G4cout << " Nb of bins in Etransmisssion plot = " << nbinTt << endl ; + G4cout << " Nb of bins in Etransmisssion plot = " << nbinTt << G4endl ; } + void Em8RunAction::SetTtlow(G4double Elow) { Ttlow = Elow ; if(nbinTt>0) - G4cout << " Elow in the Etransmission plot = " << Ttlow << endl ; + G4cout << " Elow in the Etransmission plot = " << Ttlow << G4endl ; } + void Em8RunAction::SetTthigh(G4double Ehigh) { Tthigh = Ehigh ; if(nbinTt>0) - G4cout << " Ehigh in the Etransmission plot = " << Tthigh << endl ; + G4cout << " Ehigh in the Etransmission plot = " << Tthigh << G4endl ; } + void Em8RunAction::SetnbinTb(G4int nbin) { nbinTb = nbin ; if(nbinTb>0) - G4cout << " Nb of bins in Ebackscattered plot = " << nbinTb << endl ; + G4cout << " Nb of bins in Ebackscattered plot = " << nbinTb << G4endl ; } + void Em8RunAction::SetTblow(G4double Elow) { Tblow = Elow ; if(nbinTb>0) - G4cout << " Elow in the Ebackscattered plot = " << Tblow << endl ; + G4cout << " Elow in the Ebackscattered plot = " << Tblow << G4endl ; } + void Em8RunAction::SetTbhigh(G4double Ehigh) { Tbhigh = Ehigh ; if(nbinTb>0) - G4cout << " Ehigh in the Ebackscattered plot = " << Tbhigh << endl ; + G4cout << " Ehigh in the Ebackscattered plot = " << Tbhigh << G4endl ; } void Em8RunAction::SetnbinTsec(G4int nbin) { nbinTsec = nbin ; if(nbinTsec>0) - G4cout << " Nb of bins in Tsecondary plot = " << nbinTsec << endl ; + G4cout << " Nb of bins in Tsecondary plot = " << nbinTsec << G4endl ; } + void Em8RunAction::SetTseclow(G4double Elow) { Tseclow = Elow ; if(nbinTsec>0) - G4cout << " Elow in the Tsecondary plot = " << Tseclow << endl ; + G4cout << " Elow in the Tsecondary plot = " << Tseclow << G4endl ; } + void Em8RunAction::SetTsechigh(G4double Ehigh) { Tsechigh = Ehigh ; if(nbinTsec>0) - G4cout << " Ehigh in the Tsecondary plot = " << Tsechigh << endl ; + G4cout << " Ehigh in the Tsecondary plot = " << Tsechigh << G4endl ; } void Em8RunAction::SetnbinR(G4int nbin) { nbinR = nbin ; if(nbinR>0) - G4cout << " Nb of bins in R plot = " << nbinR << endl ; + G4cout << " Nb of bins in R plot = " << nbinR << G4endl ; } + void Em8RunAction::SetRlow(G4double rlow) { Rlow = rlow ; if(nbinR>0) - G4cout << " Rlow in the R plot = " << Rlow << endl ; + G4cout << " Rlow in the R plot = " << Rlow << G4endl ; } + void Em8RunAction::SetRhigh(G4double rhigh) { Rhigh = rhigh ; if(nbinR>0) - G4cout << " Rhigh in the R plot = " << Rhigh << endl ; + G4cout << " Rhigh in the R plot = " << Rhigh << G4endl ; } void Em8RunAction::Setnbinzvertex(G4int nbin) { nbinvertexz = nbin ; if(nbinvertexz>0) - G4cout << " Nb of bins in Z plot = " << nbinvertexz << endl ; + G4cout << " Nb of bins in Z plot = " << nbinvertexz << G4endl ; } + void Em8RunAction::Setzlow(G4double z) { zlow = z ; if(nbinvertexz>0) - G4cout << " zlow in the Z plot = " << zlow << endl ; + G4cout << " zlow in the Z plot = " << zlow << G4endl ; } + void Em8RunAction::Setzhigh(G4double z) { zhigh = z ; if(nbinvertexz>0) - G4cout << " zhigh in the Z plot = " << zhigh << endl ; + G4cout << " zhigh in the Z plot = " << zhigh << G4endl ; } void Em8RunAction::SetnbinTh(G4int nbin) { nbinTh = nbin ; if(nbinTh>0) - G4cout << " Nb of bins in Theta plot = " << nbinTh << endl ; + G4cout << " Nb of bins in Theta plot = " << nbinTh << G4endl ; } + void Em8RunAction::SetThlow(G4double Tlow) { Thlow = Tlow ; if(nbinTh>0) - G4cout << " Tlow in the Theta plot = " << Thlow << endl ; + G4cout << " Tlow in the Theta plot = " << Thlow << G4endl ; } + void Em8RunAction::SetThhigh(G4double Thigh) { Thhigh = Thigh ; if(nbinTh>0) - G4cout << " Thigh in the Theta plot = " << Thhigh << endl ; + G4cout << " Thigh in the Theta plot = " << Thhigh << G4endl ; } void Em8RunAction::SetnbinThBack(G4int nbin) { nbinThback = nbin ; if(nbinThback>0) - G4cout << " Nb of bins in Theta plot = " << nbinThback << endl ; + G4cout << " Nb of bins in Theta plot = " << nbinThback << G4endl ; } + void Em8RunAction::SetThlowBack(G4double Tlow) { Thlowback = Tlow ; if(nbinThback>0) - G4cout << " Tlow in the Theta plot = " << Thlowback << endl ; + G4cout << " Tlow in the Theta plot = " << Thlowback << G4endl ; } + void Em8RunAction::SetThhighBack(G4double Thigh) { Thhighback = Thigh ; if(nbinThback>0) - G4cout << " Thigh in the Theta plot = " << Thhighback << endl ; + G4cout << " Thigh in the Theta plot = " << Thhighback << G4endl ; } + void Em8RunAction::CountParticles(G4double nch,G4double nne) { SumCharged += nch ; @@ -1273,6 +1327,7 @@ void Em8RunAction::CountParticles(G4double nch,G4double nne) Sum2Charged += nch*nch ; Sum2Neutral += nne*nne ; } + void Em8RunAction::AddEP(G4double nele,G4double npos) { Selectron += nele; diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8RunMessenger.cc b/examples/extended/electromagnetic/TestEm8/src/Em8RunMessenger.cc index b970f463ee..f11540816d 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8RunMessenger.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8RunMessenger.cc @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8RunMessenger.cc,v 1.1 2000/01/07 14:50:47 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8RunMessenger.cc,v 1.3 2000/06/27 13:29:52 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // @@ -363,7 +363,7 @@ void Em8RunMessenger::SetNewValue(G4UIcommand* command,G4String newValues) runAction->SetRndmFreq(RndmSaveCmd->GetNewIntValue(newValues)); if (command == RndmReadCmd) - { G4cout << "\n---> rndm status restored from file: " << newValues << endl; + { G4cout << "\n---> rndm status restored from file: " << newValues << G4endl; HepRandom::restoreEngineStatus(newValues); HepRandom::showEngineStatus(); } diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8StepCut.cc b/examples/extended/electromagnetic/TestEm8/src/Em8StepCut.cc index e430b08576..e4c9c7076f 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8StepCut.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8StepCut.cc @@ -1,22 +1,13 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8StepCut.cc,v 1.1 2000/01/07 14:50:47 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8StepCut.cc,v 1.3 2000/06/27 13:29:53 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -// -// -------------------------------------------------------------- -// GEANT 4 class implementation file -// -// For information related to this code contact: -// CERN, CN Division, ASD Group -// 05 March 1999 L. Urban -// -------------------------------------------------------------- -// -------------------------------------------------------------- #include "Em8StepCut.hh" @@ -29,7 +20,7 @@ Em8StepCut::Em8StepCut(const G4String& aName) : G4VDiscreteProcess(aName),MaxChargedStep(DBL_MAX) { if (verboseLevel>0) { - G4cout << GetProcessName() << " is created "<< endl; + G4cout << GetProcessName() << " is created "<< G4endl; } } @@ -46,3 +37,4 @@ void Em8StepCut::SetMaxStep(G4double step) MaxChargedStep = step ; } + diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8SteppingAction.cc b/examples/extended/electromagnetic/TestEm8/src/Em8SteppingAction.cc index e6d04ac214..d2f4421f8f 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8SteppingAction.cc @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8SteppingAction.cc,v 1.1 2000/01/07 14:50:47 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8SteppingAction.cc,v 1.3 2000/06/27 13:29:53 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // @@ -25,7 +25,7 @@ #include "G4EventManager.hh" #include "Em8SteppingMessenger.hh" #include "G4ios.hh" -#include +#include "g4std/iomanip" #include "G4UImanager.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8SteppingMessenger.cc b/examples/extended/electromagnetic/TestEm8/src/Em8SteppingMessenger.cc index 0598a8c303..d0f86fa96c 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8SteppingMessenger.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8SteppingMessenger.cc @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8SteppingMessenger.cc,v 1.1 2000/01/07 14:50:48 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8SteppingMessenger.cc,v 1.2 2000/06/27 13:29:53 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm8/src/Em8SteppingVerbose.cc index 072db204de..6f47946ea1 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8SteppingVerbose.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8SteppingVerbose.cc @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8SteppingVerbose.cc,v 1.1 2000/01/07 14:50:48 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8SteppingVerbose.cc,v 1.3 2000/06/27 13:29:53 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -50,43 +50,43 @@ void Em8SteppingVerbose::StepInfo() if( verboseLevel >= 1 ){ if( verboseLevel >= 4 ) VerboseTrack(); if( verboseLevel >= 3 ){ - G4cout << endl; - G4cout << setw( 5) << "#Step#" << " " - << setw( 6) << "X" << " " - << setw( 6) << "Y" << " " - << setw( 6) << "Z" << " " - << setw( 9) << "KineE" << " " - << setw( 9) << "dEStep" << " " - << setw(10) << "StepLeng" - << setw(10) << "TrakLeng" - << setw(10) << "NextVolu" - << setw(10) << "Process" << endl; + 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 << setw( 5) << fTrack->GetCurrentStepNumber() << " " - << setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length") - << setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length") - << setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length") - << setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") - << setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") - << setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length") - << 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 ) { - G4cout << setw(10) << fTrack->GetNextVolume()->GetName(); + G4cout << G4std::setw(10) << fTrack->GetNextVolume()->GetName(); } else { - G4cout << setw(10) << "OutOfWorld"; + G4cout << G4std::setw(10) << "OutOfWorld"; } if(fStep->GetPostStepPoint()->GetProcessDefinedStep() != NULL){ - G4cout << setw(10) << fStep->GetPostStepPoint()->GetProcessDefinedStep() + G4cout << G4std::setw(10) << fStep->GetPostStepPoint()->GetProcessDefinedStep() ->GetProcessName(); } else { G4cout << "User Limit"; } - G4cout << endl; + G4cout << G4endl; if( verboseLevel == 2 ){ G4int tN2ndariesTot = fN2ndariesAtRestDoIt + @@ -94,35 +94,35 @@ void Em8SteppingVerbose::StepInfo() fN2ndariesPostStepDoIt; if(tN2ndariesTot>0){ G4cout << " :----- List of 2ndaries - " - << "#SpawnInStep=" << setw(3) << tN2ndariesTot - << "(Rest=" << setw(2) << fN2ndariesAtRestDoIt - << ",Along=" << setw(2) << fN2ndariesAlongStepDoIt - << ",Post=" << setw(2) << fN2ndariesPostStepDoIt + << "#SpawnInStep=" << G4std::setw(3) << tN2ndariesTot + << "(Rest=" << G4std::setw(2) << fN2ndariesAtRestDoIt + << ",Along=" << G4std::setw(2) << fN2ndariesAlongStepDoIt + << ",Post=" << G4std::setw(2) << fN2ndariesPostStepDoIt << "), " - << "#SpawnTotal=" << setw(3) << (*fSecondary).entries() + << "#SpawnTotal=" << G4std::setw(3) << (*fSecondary).entries() << " ---------------" - << endl; + << G4endl; for(G4int lp1=(*fSecondary).entries()-tN2ndariesTot; lp1<(*fSecondary).entries(); lp1++){ G4cout << " : " - << setw(6) + << G4std::setw(6) << G4BestUnit((*fSecondary)[lp1]->GetPosition().x(),"Length") - << setw(6) + << G4std::setw(6) << G4BestUnit((*fSecondary)[lp1]->GetPosition().y(),"Length") - << setw(6) + << G4std::setw(6) << G4BestUnit((*fSecondary)[lp1]->GetPosition().z(),"Length") - << setw(6) + << G4std::setw(6) << G4BestUnit((*fSecondary)[lp1]->GetKineticEnergy(),"Energy") - << setw(10) + << G4std::setw(10) << (*fSecondary)[lp1]->GetDefinition()->GetParticleName(); - G4cout << endl; + G4cout << G4endl; } G4cout << " :-----------------------------" << "----------------------------------" << "-- EndOf2ndaries Info ---------------" - << endl; + << G4endl; } } @@ -139,32 +139,32 @@ void Em8SteppingVerbose::TrackingStarted() G4int prec = G4cout.precision(3); if( verboseLevel > 0 ){ - G4cout << setw( 5) << "Step#" << " " - << setw( 6) << "X" << " " - << setw( 6) << "Y" << " " - << setw( 6) << "Z" << " " - << setw( 9) << "KineE" << " " - << setw( 9) << "dEStep" << " " - << setw(10) << "StepLeng" - << setw(10) << "TrakLeng" - << setw(10) << "NextVolu" - << setw(10) << "Process" << endl; + 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 << setw( 5) << fTrack->GetCurrentStepNumber() << " " - << setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length") - << setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length") - << setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length") - << setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") - << setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") - << setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length") - << 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 << setw(10) << fTrack->GetNextVolume()->GetName() << " "; + G4cout << G4std::setw(10) << fTrack->GetNextVolume()->GetName() << " "; } else { - G4cout << setw(10) << "OutOfWorld" << " "; + G4cout << G4std::setw(10) << "OutOfWorld" << " "; } - G4cout << setw(10) << "initStep" << endl; + G4cout << G4std::setw(10) << "initStep" << G4endl; } G4cout.precision(prec); } diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8VisManager.cc b/examples/extended/electromagnetic/TestEm8/src/Em8VisManager.cc index edf225882c..33f44e4651 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8VisManager.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8VisManager.cc @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the RD44 GEANT4 collaboration. +// the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: Em8VisManager.cc,v 1.1 2000/01/07 14:50:48 grichine Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: Em8VisManager.cc,v 1.2 2000/06/27 13:29:53 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 24th January 1998. @@ -131,7 +131,7 @@ void Em8VisManager::RegisterGraphicsSystems () { if (fVerbose > 0) { G4cout << "\nYou have successfully chosen to use the following graphics systems." - << endl; + << G4endl; PrintAvailableGraphicsSystems (); } } diff --git a/examples/extended/persistency/PersistentEx01/History b/examples/extended/persistency/PersistentEx01/History index 4911b9360e..cba0c0ecdd 100644 --- a/examples/extended/persistency/PersistentEx01/History +++ b/examples/extended/persistency/PersistentEx01/History @@ -1,4 +1,4 @@ -$Id: History,v 1.8 1999/12/05 22:26:02 morita Exp $ +$Id: History,v 1.10 2000/06/17 12:37:42 stesting Exp $ ------------------------------------------------------------------- ========================================================= @@ -15,6 +15,12 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +June 17, 2000 John Allison (PersistentEx01-V01-00-01) +- Updated PersistentEx01.out for geant4-01-01-ref-06. + +8th June 2000 Y.Morita (PersistentEx01-V01-00-00) +- tagged for release 2.0 + 5th December 1999 Y.Morita (PersistentEx01-V00-01-05) - LD_LIBRARY_PATH change for Linux - readDB: added access to G4PPrimaryParticle. diff --git a/examples/extended/persistency/PersistentEx01/PersistentEx01.cc b/examples/extended/persistency/PersistentEx01/PersistentEx01.cc index b760480c39..d4d4bf2fe3 100644 --- a/examples/extended/persistency/PersistentEx01/PersistentEx01.cc +++ b/examples/extended/persistency/PersistentEx01/PersistentEx01.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: PersistentEx01.cc,v 1.4.2.1 1999/12/07 20:47:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: PersistentEx01.cc,v 1.5 1999/12/15 14:49:16 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/persistency/PersistentEx01/PersistentEx01.out b/examples/extended/persistency/PersistentEx01/PersistentEx01.out index 132bc9c420..85e7391f40 100644 --- a/examples/extended/persistency/PersistentEx01/PersistentEx01.out +++ b/examples/extended/persistency/PersistentEx01/PersistentEx01.out @@ -1,7 +1,7 @@ LD_LIBRARY_PATH = /usr/local/libexec/jdk/1.1.6/lib:/opt/SUNWspro/lib:/usr/openwin/lib:/usr/dt/lib:/usr/local/lib:/afs/cern.ch/sw/lhcxx/specific/sun/Objectivity/5.1/lib:/afs/cern.ch/sw/lhcxx/specific/@sys/HepODBMS/0.3.0.1/lib Copying G4EXAMPLE_BOOT into runtime federated database... -Creating new runtime federated database /afs/cern.ch/sw/geant4/stt/dev/SUN-CC/debug/exampleSchema/SUN-CC/PersistentEx01 for FDID 207 +Creating new runtime federated database /afs/cern.ch/sw/geant4/stt/dev2/SUN-CC/debug_NONISO/exampleSchema/SUN-CC/PersistentEx01 for FDID 207 Run with active lockserver Schema import from PersistentEx01 to PersistentEx01 @@ -10,12 +10,12 @@ Now updating System Name Space (catalog) values... Now updating Database File locations... Federated Database Installation complete. -OO_FD_BOOT is set to /afs/cern.ch/sw/geant4/stt/dev/SUN-CC/debug/exampleFD/SUN-CC/PersistentEx01 +OO_FD_BOOT is set to /afs/cern.ch/sw/geant4/stt/dev2/SUN-CC/debug_NONISO/exampleFD/SUN-CC/PersistentEx01 Opening federated database OO_FD_BOOT. ********************************************** - Geant4 version $Name: geant4-01-01 $ - (07-Dec-99) + Geant4 version $Name: geant4-02-00 $ + (10-Mar-2000) Copyright : Geant4 Collaboration ********************************************** # @@ -50,7 +50,15 @@ eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to delta ray energy sampled from differential Xsection. PhysicsTables from 1 keV to 100 TeV in 100 bins. -eBrem: Total cross sections from a parametrisation. Good description from 1 KeV to 100 GeV. + eIoni Minimum Delta cut in range=0.1 mm. + + material min.delta energy(keV) + + Aluminium 125.07 + Lead 229.66 + Air 0.99 + +eBrem: Total cross sections from a parametrisation. Good description from 10 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. @@ -64,10 +72,18 @@ msc: Tables of transport mean free paths. displacement of the particle , too. PhysicsTables from 100 eV to 100 TeV in 100 bins. + hIoni Minimum Delta cut in range=0.1 mm. + + material min.delta energy(keV) + + Aluminium 125.07 + Lead 229.66 + Air 0.99 + 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 150 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 @@ -77,15 +93,15 @@ msc: Tables of transport mean free paths. 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 100 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. MuBrems: theoretical cross section - Good description up to 1000 TeV. - PhysicsTables from 1 GeV to 1000 PeV in 100 bins. + 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 TeV. - PhysicsTables from 1 GeV to 1000 PeV in 50 bins. + Good description up to 1000 PeV. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. # # 10 events # @@ -95,91 +111,91 @@ Transaction started for /Geometry/GeomContainer/ with non-sustained mode. Transaction is committed on /Geometry/GeomContainer/ >>> Event 0 Event : 0 -mySD/EvenCollection Number of hits 9 - Edep of the first Hit 34.3763 -mySD/OddCollection Number of hits 39 - Edep of the first Hit 18.4413 +mySD/EvenCollection Number of hits 10 + Edep of the first Hit 31.596 +mySD/OddCollection Number of hits 36 + Edep of the first Hit 59.343 Transaction started for /Events/EventContainer/ with non-sustained mode. -- G4PEvent 0 stored in /Events/EventContainer/ Transaction is committed on /Events/EventContainer/ >>> Event 1 Event : 1 -mySD/EvenCollection Number of hits 22 - Edep of the first Hit 99.9458 -mySD/OddCollection Number of hits 20 - Edep of the first Hit 25.4437 +mySD/EvenCollection Number of hits 13 + Edep of the first Hit 1.7624 +mySD/OddCollection Number of hits 40 + Edep of the first Hit 21.652 Transaction started for /Events/EventContainer/ with non-sustained mode. -- G4PEvent 1 stored in /Events/EventContainer/ Transaction is committed on /Events/EventContainer/ >>> Event 2 Event : 2 -mySD/EvenCollection Number of hits 22 - Edep of the first Hit 6.24018 -mySD/OddCollection Number of hits 19 - Edep of the first Hit 64.64 +mySD/EvenCollection Number of hits 9 + Edep of the first Hit 10.362 +mySD/OddCollection Number of hits 38 + Edep of the first Hit 46.736 Transaction started for /Events/EventContainer/ with non-sustained mode. -- G4PEvent 2 stored in /Events/EventContainer/ Transaction is committed on /Events/EventContainer/ >>> Event 3 Event : 3 -mySD/EvenCollection Number of hits 13 - Edep of the first Hit 48.4619 -mySD/OddCollection Number of hits 39 - Edep of the first Hit 14.5986 +mySD/EvenCollection Number of hits 9 + Edep of the first Hit 38.603 +mySD/OddCollection Number of hits 35 + Edep of the first Hit 15.55 Transaction started for /Events/EventContainer/ with non-sustained mode. -- G4PEvent 3 stored in /Events/EventContainer/ Transaction is committed on /Events/EventContainer/ >>> Event 4 Event : 4 -mySD/EvenCollection Number of hits 32 - Edep of the first Hit 50.5145 -mySD/OddCollection Number of hits 16 - Edep of the first Hit 57.8223 +mySD/EvenCollection Number of hits 9 + Edep of the first Hit 46.253 +mySD/OddCollection Number of hits 38 + Edep of the first Hit 19.721 Transaction started for /Events/EventContainer/ with non-sustained mode. -- G4PEvent 4 stored in /Events/EventContainer/ Transaction is committed on /Events/EventContainer/ >>> Event 5 Event : 5 mySD/EvenCollection Number of hits 6 - Edep of the first Hit 139.808 -mySD/OddCollection Number of hits 35 - Edep of the first Hit 109.911 + Edep of the first Hit 11.805 +mySD/OddCollection Number of hits 39 + Edep of the first Hit 30.611 Transaction started for /Events/EventContainer/ with non-sustained mode. -- G4PEvent 5 stored in /Events/EventContainer/ Transaction is committed on /Events/EventContainer/ >>> Event 6 Event : 6 -mySD/EvenCollection Number of hits 10 - Edep of the first Hit 21.8663 -mySD/OddCollection Number of hits 28 - Edep of the first Hit 14.2581 +mySD/EvenCollection Number of hits 13 + Edep of the first Hit 4.4673 +mySD/OddCollection Number of hits 42 + Edep of the first Hit 38.656 Transaction started for /Events/EventContainer/ with non-sustained mode. -- G4PEvent 6 stored in /Events/EventContainer/ Transaction is committed on /Events/EventContainer/ >>> Event 7 Event : 7 -mySD/EvenCollection Number of hits 12 - Edep of the first Hit 2.93176 +mySD/EvenCollection Number of hits 7 + Edep of the first Hit 36.725 mySD/OddCollection Number of hits 43 - Edep of the first Hit 3.1392 + Edep of the first Hit 35.941 Transaction started for /Events/EventContainer/ with non-sustained mode. -- G4PEvent 7 stored in /Events/EventContainer/ Transaction is committed on /Events/EventContainer/ >>> Event 8 Event : 8 -mySD/EvenCollection Number of hits 18 - Edep of the first Hit 13.794 -mySD/OddCollection Number of hits 34 - Edep of the first Hit 13.6248 +mySD/EvenCollection Number of hits 6 + Edep of the first Hit 58.073 +mySD/OddCollection Number of hits 47 + Edep of the first Hit 38.947 Transaction started for /Events/EventContainer/ with non-sustained mode. -- G4PEvent 8 stored in /Events/EventContainer/ Transaction is committed on /Events/EventContainer/ >>> Event 9 Event : 9 -mySD/EvenCollection Number of hits 14 - Edep of the first Hit 4.16745 -mySD/OddCollection Number of hits 35 - Edep of the first Hit 43.0885 +mySD/EvenCollection Number of hits 10 + Edep of the first Hit 36.099 +mySD/OddCollection Number of hits 34 + Edep of the first Hit 51.997 Transaction started for /Events/EventContainer/ with non-sustained mode. -- G4PEvent 9 stored in /Events/EventContainer/ Transaction is committed on /Events/EventContainer/ diff --git a/examples/extended/persistency/PersistentEx01/src/PersEx01PhysicsList.cc b/examples/extended/persistency/PersistentEx01/src/PersEx01PhysicsList.cc index 6f4112050e..40e2ff5982 100644 --- a/examples/extended/persistency/PersistentEx01/src/PersEx01PhysicsList.cc +++ b/examples/extended/persistency/PersistentEx01/src/PersEx01PhysicsList.cc @@ -1,4 +1,4 @@ -// $Id: PersEx01PhysicsList.cc,v 1.2.6.3 1999/12/14 07:07:43 gunter Exp $ +// $Id: PersEx01PhysicsList.cc,v 1.3 1999/12/15 14:49:17 gunter Exp $ // ------------------------------------------------------------ // GEANT 4 class header file // diff --git a/examples/extended/persistency/PersistentEx02/History b/examples/extended/persistency/PersistentEx02/History index d6948542ce..3c2c6215ff 100644 --- a/examples/extended/persistency/PersistentEx02/History +++ b/examples/extended/persistency/PersistentEx02/History @@ -1,4 +1,4 @@ -$Id: History,v 1.7 1999/12/05 22:28:52 morita Exp $ +$Id: History,v 1.9 2000/06/17 12:39:54 stesting Exp $ ------------------------------------------------------------------- ========================================================= @@ -15,6 +15,12 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +June 17, 2000 John Allison (PersistentEx02-V01-00-01) +- Updated PersistentEx02.out for geant4-01-01-ref-06. + +8th June 2000 Y.Morita (PersistentEx02-V01-00-00) +- tagged for release 2.0 + 5th December 1999 Y.Morita (PersistentEx02-V00-01-03) - LD_LIBRARY_PATH change for Linux - readDB: added access to G4PPrimaryParticle. diff --git a/examples/extended/persistency/PersistentEx02/PersistentEx02.cc b/examples/extended/persistency/PersistentEx02/PersistentEx02.cc index 197c3a43cd..9ce24872fe 100644 --- a/examples/extended/persistency/PersistentEx02/PersistentEx02.cc +++ b/examples/extended/persistency/PersistentEx02/PersistentEx02.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: PersistentEx02.cc,v 1.2.2.1 1999/12/07 20:47:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: PersistentEx02.cc,v 1.3 1999/12/15 14:49:17 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/persistency/PersistentEx02/PersistentEx02.out b/examples/extended/persistency/PersistentEx02/PersistentEx02.out index 0259c1fd50..45151a27e8 100644 --- a/examples/extended/persistency/PersistentEx02/PersistentEx02.out +++ b/examples/extended/persistency/PersistentEx02/PersistentEx02.out @@ -1,7 +1,7 @@ LD_LIBRARY_PATH = /usr/local/libexec/jdk/1.1.6/lib:/opt/SUNWspro/lib:/usr/openwin/lib:/usr/dt/lib:/usr/local/lib:/afs/cern.ch/sw/lhcxx/specific/sun/Objectivity/5.1/lib:/afs/cern.ch/sw/lhcxx/specific/@sys/HepODBMS/0.3.0.1/lib Copying G4EXAMPLE_BOOT into runtime federated database... -Creating new runtime federated database /afs/cern.ch/sw/geant4/stt/dev/SUN-CC/debug/exampleSchema/SUN-CC/PersistentEx02 for FDID 207 +Creating new runtime federated database /afs/cern.ch/sw/geant4/stt/dev2/SUN-CC/debug_NONISO/exampleSchema/SUN-CC/PersistentEx02 for FDID 207 Run with active lockserver Schema import from PersistentEx02 to PersistentEx02 @@ -10,12 +10,12 @@ Now updating System Name Space (catalog) values... Now updating Database File locations... Federated Database Installation complete. -OO_FD_BOOT is set to /afs/cern.ch/sw/geant4/stt/dev/SUN-CC/debug/exampleFD/SUN-CC/PersistentEx02 +OO_FD_BOOT is set to /afs/cern.ch/sw/geant4/stt/dev2/SUN-CC/debug_NONISO/exampleFD/SUN-CC/PersistentEx02 Opening federated database OO_FD_BOOT. ********************************************** - Geant4 version $Name: geant4-01-01 $ - (07-Dec-99) + Geant4 version $Name: geant4-02-00 $ + (10-Mar-2000) Copyright : Geant4 Collaboration ********************************************** # @@ -50,7 +50,15 @@ eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to delta ray energy sampled from differential Xsection. PhysicsTables from 1 keV to 100 TeV in 100 bins. -eBrem: Total cross sections from a parametrisation. Good description from 1 KeV to 100 GeV. + eIoni Minimum Delta cut in range=0.1 mm. + + material min.delta energy(keV) + + Aluminium 125.07 + Lead 229.66 + Air 0.99 + +eBrem: Total cross sections from a parametrisation. Good description from 10 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. @@ -64,10 +72,18 @@ msc: Tables of transport mean free paths. displacement of the particle , too. PhysicsTables from 100 eV to 100 TeV in 100 bins. + hIoni Minimum Delta cut in range=0.1 mm. + + material min.delta energy(keV) + + Aluminium 125.07 + Lead 229.66 + Air 0.99 + 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 150 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 @@ -77,15 +93,15 @@ msc: Tables of transport mean free paths. 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 100 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. MuBrems: theoretical cross section - Good description up to 1000 TeV. - PhysicsTables from 1 GeV to 1000 PeV in 100 bins. + 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 TeV. - PhysicsTables from 1 GeV to 1000 PeV in 50 bins. + Good description up to 1000 PeV. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. # # 100 events # @@ -96,723 +112,723 @@ Transaction is committed on /Geometry/GeomContainer/ Transaction started for /Events/EventContainer/ with sustained mode. >>> Event 0 Event : 0 -mySD/EvenCollection Number of hits 9 - Edep of the first Hit 34.3763 -mySD/OddCollection Number of hits 38 - Edep of the first Hit 18.4413 +mySD/EvenCollection Number of hits 10 + Edep of the first Hit 31.596 +mySD/OddCollection Number of hits 35 + Edep of the first Hit 59.343 Transaction is committed on /Events/EventContainer/ Transaction started for /Events/EventContainer/ with sustained mode. -- G4PEvent 0 stored in /Events/EventContainer/ (sustained) >>> Event 1 Event : 1 -mySD/EvenCollection Number of hits 21 - Edep of the first Hit 99.9458 -mySD/OddCollection Number of hits 20 - Edep of the first Hit 25.4437 +mySD/EvenCollection Number of hits 13 + Edep of the first Hit 1.7624 +mySD/OddCollection Number of hits 39 + Edep of the first Hit 21.652 -- G4PEvent 1 stored in /Events/EventContainer/ (sustained) >>> Event 2 Event : 2 -mySD/EvenCollection Number of hits 21 - Edep of the first Hit 6.24018 -mySD/OddCollection Number of hits 19 - Edep of the first Hit 64.64 +mySD/EvenCollection Number of hits 9 + Edep of the first Hit 10.362 +mySD/OddCollection Number of hits 37 + Edep of the first Hit 46.736 -- G4PEvent 2 stored in /Events/EventContainer/ (sustained) >>> Event 3 Event : 3 -mySD/EvenCollection Number of hits 13 - Edep of the first Hit 48.4619 -mySD/OddCollection Number of hits 38 - Edep of the first Hit 14.5986 +mySD/EvenCollection Number of hits 9 + Edep of the first Hit 38.603 +mySD/OddCollection Number of hits 34 + Edep of the first Hit 15.55 -- G4PEvent 3 stored in /Events/EventContainer/ (sustained) >>> Event 4 Event : 4 -mySD/EvenCollection Number of hits 31 - Edep of the first Hit 50.5145 -mySD/OddCollection Number of hits 16 - Edep of the first Hit 57.8223 +mySD/EvenCollection Number of hits 9 + Edep of the first Hit 46.253 +mySD/OddCollection Number of hits 37 + Edep of the first Hit 19.721 -- G4PEvent 4 stored in /Events/EventContainer/ (sustained) >>> Event 5 Event : 5 mySD/EvenCollection Number of hits 6 - Edep of the first Hit 139.808 -mySD/OddCollection Number of hits 34 - Edep of the first Hit 109.911 + Edep of the first Hit 11.805 +mySD/OddCollection Number of hits 38 + Edep of the first Hit 30.611 -- G4PEvent 5 stored in /Events/EventContainer/ (sustained) >>> Event 6 Event : 6 -mySD/EvenCollection Number of hits 10 - Edep of the first Hit 21.8663 -mySD/OddCollection Number of hits 27 - Edep of the first Hit 14.2581 +mySD/EvenCollection Number of hits 13 + Edep of the first Hit 4.4673 +mySD/OddCollection Number of hits 41 + Edep of the first Hit 38.656 -- G4PEvent 6 stored in /Events/EventContainer/ (sustained) >>> Event 7 Event : 7 -mySD/EvenCollection Number of hits 12 - Edep of the first Hit 2.93176 +mySD/EvenCollection Number of hits 7 + Edep of the first Hit 36.725 mySD/OddCollection Number of hits 42 - Edep of the first Hit 3.1392 + Edep of the first Hit 35.941 -- G4PEvent 7 stored in /Events/EventContainer/ (sustained) >>> Event 8 Event : 8 -mySD/EvenCollection Number of hits 18 - Edep of the first Hit 13.794 -mySD/OddCollection Number of hits 33 - Edep of the first Hit 13.6248 +mySD/EvenCollection Number of hits 6 + Edep of the first Hit 58.073 +mySD/OddCollection Number of hits 46 + Edep of the first Hit 38.947 -- G4PEvent 8 stored in /Events/EventContainer/ (sustained) >>> Event 9 Event : 9 -mySD/EvenCollection Number of hits 14 - Edep of the first Hit 4.16745 -mySD/OddCollection Number of hits 34 - Edep of the first Hit 43.0885 +mySD/EvenCollection Number of hits 10 + Edep of the first Hit 36.099 +mySD/OddCollection Number of hits 33 + Edep of the first Hit 51.997 -- G4PEvent 9 stored in /Events/EventContainer/ (sustained) >>> Event 10 Event : 10 -mySD/EvenCollection Number of hits 9 - Edep of the first Hit 10.9691 -mySD/OddCollection Number of hits 35 - Edep of the first Hit 2.07861 +mySD/EvenCollection Number of hits 11 + Edep of the first Hit 26.828 +mySD/OddCollection Number of hits 33 + Edep of the first Hit 78.805 Transaction is committed on /Events/EventContainer/ Transaction started for /Events/EventContainer/ with sustained mode. -- G4PEvent 10 stored in /Events/EventContainer/ (sustained) >>> Event 11 Event : 11 -mySD/EvenCollection Number of hits 8 - Edep of the first Hit 46.1201 -mySD/OddCollection Number of hits 43 - Edep of the first Hit 34.4406 +mySD/EvenCollection Number of hits 9 + Edep of the first Hit 19.479 +mySD/OddCollection Number of hits 42 + Edep of the first Hit 20.307 -- G4PEvent 11 stored in /Events/EventContainer/ (sustained) >>> Event 12 Event : 12 -mySD/EvenCollection Number of hits 6 - Edep of the first Hit 59.0553 -mySD/OddCollection Number of hits 41 - Edep of the first Hit 10.701 +mySD/EvenCollection Number of hits 7 + Edep of the first Hit 47.623 +mySD/OddCollection Number of hits 39 + Edep of the first Hit 65.917 -- G4PEvent 12 stored in /Events/EventContainer/ (sustained) >>> Event 13 Event : 13 -mySD/EvenCollection Number of hits 8 - Edep of the first Hit 6.28666 -mySD/OddCollection Number of hits 35 - Edep of the first Hit 17.2852 +mySD/EvenCollection Number of hits 4 + Edep of the first Hit 71.288 +mySD/OddCollection Number of hits 42 + Edep of the first Hit 19.405 -- G4PEvent 13 stored in /Events/EventContainer/ (sustained) >>> Event 14 Event : 14 -mySD/EvenCollection Number of hits 9 - Edep of the first Hit 2.65337 -mySD/OddCollection Number of hits 38 - Edep of the first Hit 3.45365 +mySD/EvenCollection Number of hits 11 + Edep of the first Hit 36.023 +mySD/OddCollection Number of hits 37 + Edep of the first Hit 7.7591 -- G4PEvent 14 stored in /Events/EventContainer/ (sustained) >>> Event 15 Event : 15 -mySD/EvenCollection Number of hits 14 - Edep of the first Hit 72.2601 -mySD/OddCollection Number of hits 31 - Edep of the first Hit 29.4838 +mySD/EvenCollection Number of hits 9 + Edep of the first Hit 3.7691 +mySD/OddCollection Number of hits 39 + Edep of the first Hit 28.344 -- G4PEvent 15 stored in /Events/EventContainer/ (sustained) >>> Event 16 Event : 16 -mySD/EvenCollection Number of hits 17 - Edep of the first Hit 11.7023 -mySD/OddCollection Number of hits 42 - Edep of the first Hit 7.77693 +mySD/EvenCollection Number of hits 12 + Edep of the first Hit 45.291 +mySD/OddCollection Number of hits 27 + Edep of the first Hit 7.7138 -- G4PEvent 16 stored in /Events/EventContainer/ (sustained) >>> Event 17 Event : 17 -mySD/EvenCollection Number of hits 14 - Edep of the first Hit 41.7843 -mySD/OddCollection Number of hits 41 - Edep of the first Hit 24.7506 +mySD/EvenCollection Number of hits 22 + Edep of the first Hit 82.453 +mySD/OddCollection Number of hits 27 + Edep of the first Hit 24.774 -- G4PEvent 17 stored in /Events/EventContainer/ (sustained) >>> Event 18 Event : 18 -mySD/EvenCollection Number of hits 32 - Edep of the first Hit 31.8213 -mySD/OddCollection Number of hits 11 - Edep of the first Hit 36.5199 +mySD/EvenCollection Number of hits 20 + Edep of the first Hit 54.948 +mySD/OddCollection Number of hits 28 + Edep of the first Hit 40.001 -- G4PEvent 18 stored in /Events/EventContainer/ (sustained) >>> Event 19 Event : 19 -mySD/EvenCollection Number of hits 16 - Edep of the first Hit 27.5887 -mySD/OddCollection Number of hits 36 - Edep of the first Hit 17.0291 +mySD/EvenCollection Number of hits 8 + Edep of the first Hit 25.839 +mySD/OddCollection Number of hits 44 + Edep of the first Hit 8.8688 -- G4PEvent 19 stored in /Events/EventContainer/ (sustained) >>> Event 20 Event : 20 -mySD/EvenCollection Number of hits 3 - Edep of the first Hit 26.5363 -mySD/OddCollection Number of hits 39 - Edep of the first Hit 5.17838 +mySD/EvenCollection Number of hits 7 + Edep of the first Hit 55.874 +mySD/OddCollection Number of hits 42 + Edep of the first Hit 94.691 Transaction is committed on /Events/EventContainer/ Transaction started for /Events/EventContainer/ with sustained mode. -- G4PEvent 20 stored in /Events/EventContainer/ (sustained) >>> Event 21 Event : 21 -mySD/EvenCollection Number of hits 6 - Edep of the first Hit 40.566 -mySD/OddCollection Number of hits 42 - Edep of the first Hit 36.1621 +mySD/EvenCollection Number of hits 8 + Edep of the first Hit 0.88524 +mySD/OddCollection Number of hits 35 + Edep of the first Hit 8.342 -- G4PEvent 21 stored in /Events/EventContainer/ (sustained) >>> Event 22 Event : 22 mySD/EvenCollection Number of hits 9 - Edep of the first Hit 36.2405 + Edep of the first Hit 11.475 mySD/OddCollection Number of hits 37 - Edep of the first Hit 8.50286 + Edep of the first Hit 3.2154 -- G4PEvent 22 stored in /Events/EventContainer/ (sustained) >>> Event 23 Event : 23 -mySD/EvenCollection Number of hits 10 - Edep of the first Hit 1.91415 -mySD/OddCollection Number of hits 40 - Edep of the first Hit 62.8982 +mySD/EvenCollection Number of hits 25 + Edep of the first Hit 46.642 +mySD/OddCollection Number of hits 21 + Edep of the first Hit 52.072 -- G4PEvent 23 stored in /Events/EventContainer/ (sustained) >>> Event 24 Event : 24 -mySD/EvenCollection Number of hits 7 - Edep of the first Hit 17.6721 -mySD/OddCollection Number of hits 43 - Edep of the first Hit 14.5465 +mySD/EvenCollection Number of hits 11 + Edep of the first Hit 30.528 +mySD/OddCollection Number of hits 39 + Edep of the first Hit 10.185 -- G4PEvent 24 stored in /Events/EventContainer/ (sustained) >>> Event 25 Event : 25 -mySD/EvenCollection Number of hits 19 - Edep of the first Hit 5.90905 -mySD/OddCollection Number of hits 25 - Edep of the first Hit 46.9022 +mySD/EvenCollection Number of hits 10 + Edep of the first Hit 10.507 +mySD/OddCollection Number of hits 47 + Edep of the first Hit 7.4188 -- G4PEvent 25 stored in /Events/EventContainer/ (sustained) >>> Event 26 Event : 26 -mySD/EvenCollection Number of hits 6 - Edep of the first Hit 32.8575 -mySD/OddCollection Number of hits 35 - Edep of the first Hit 47.573 +mySD/EvenCollection Number of hits 11 + Edep of the first Hit 23.399 +mySD/OddCollection Number of hits 41 + Edep of the first Hit 2.1485 -- G4PEvent 26 stored in /Events/EventContainer/ (sustained) >>> Event 27 Event : 27 -mySD/EvenCollection Number of hits 5 - Edep of the first Hit 12.3464 -mySD/OddCollection Number of hits 38 - Edep of the first Hit 7.98715 +mySD/EvenCollection Number of hits 9 + Edep of the first Hit 38.743 +mySD/OddCollection Number of hits 47 + Edep of the first Hit 1.9081 -- G4PEvent 27 stored in /Events/EventContainer/ (sustained) >>> Event 28 Event : 28 -mySD/EvenCollection Number of hits 8 - Edep of the first Hit 8.80629 -mySD/OddCollection Number of hits 45 - Edep of the first Hit 30.2517 +mySD/EvenCollection Number of hits 9 + Edep of the first Hit 1.8656 +mySD/OddCollection Number of hits 39 + Edep of the first Hit 1.692 -- G4PEvent 28 stored in /Events/EventContainer/ (sustained) >>> Event 29 Event : 29 -mySD/EvenCollection Number of hits 14 - Edep of the first Hit 7.47895 +mySD/EvenCollection Number of hits 10 + Edep of the first Hit 18.987 mySD/OddCollection Number of hits 38 - Edep of the first Hit 5.32617 + Edep of the first Hit 0.64866 -- G4PEvent 29 stored in /Events/EventContainer/ (sustained) >>> Event 30 Event : 30 -mySD/EvenCollection Number of hits 24 - Edep of the first Hit 61.5145 -mySD/OddCollection Number of hits 16 - Edep of the first Hit 48.5887 +mySD/EvenCollection Number of hits 7 + Edep of the first Hit 13.689 +mySD/OddCollection Number of hits 36 + Edep of the first Hit 34.422 Transaction is committed on /Events/EventContainer/ Transaction started for /Events/EventContainer/ with sustained mode. -- G4PEvent 30 stored in /Events/EventContainer/ (sustained) >>> Event 31 Event : 31 mySD/EvenCollection Number of hits 25 - Edep of the first Hit 49.5969 -mySD/OddCollection Number of hits 19 - Edep of the first Hit 146.397 + Edep of the first Hit 31.962 +mySD/OddCollection Number of hits 17 + Edep of the first Hit 13.155 -- G4PEvent 31 stored in /Events/EventContainer/ (sustained) >>> Event 32 Event : 32 -mySD/EvenCollection Number of hits 8 - Edep of the first Hit 19.0419 -mySD/OddCollection Number of hits 46 - Edep of the first Hit 40.6396 +mySD/EvenCollection Number of hits 5 + Edep of the first Hit 32.817 +mySD/OddCollection Number of hits 42 + Edep of the first Hit 0.26188 -- G4PEvent 32 stored in /Events/EventContainer/ (sustained) >>> Event 33 Event : 33 -mySD/EvenCollection Number of hits 6 - Edep of the first Hit 58.1887 -mySD/OddCollection Number of hits 37 - Edep of the first Hit 47.4048 +mySD/EvenCollection Number of hits 31 + Edep of the first Hit 4.6301 +mySD/OddCollection Number of hits 13 + Edep of the first Hit 13.441 -- G4PEvent 33 stored in /Events/EventContainer/ (sustained) >>> Event 34 Event : 34 -mySD/EvenCollection Number of hits 14 - Edep of the first Hit 8.3811 -mySD/OddCollection Number of hits 36 - Edep of the first Hit 22.9995 +mySD/EvenCollection Number of hits 8 + Edep of the first Hit 32.915 +mySD/OddCollection Number of hits 34 + Edep of the first Hit 24.714 -- G4PEvent 34 stored in /Events/EventContainer/ (sustained) >>> Event 35 Event : 35 -mySD/EvenCollection Number of hits 15 - Edep of the first Hit 30.7278 -mySD/OddCollection Number of hits 35 - Edep of the first Hit 2.51942 +mySD/EvenCollection Number of hits 9 + Edep of the first Hit 9.6296 +mySD/OddCollection Number of hits 37 + Edep of the first Hit 46.939 -- G4PEvent 35 stored in /Events/EventContainer/ (sustained) >>> Event 36 Event : 36 -mySD/EvenCollection Number of hits 8 - Edep of the first Hit 40.4002 -mySD/OddCollection Number of hits 44 - Edep of the first Hit 6.39711 +mySD/EvenCollection Number of hits 27 + Edep of the first Hit 10.242 +mySD/OddCollection Number of hits 10 + Edep of the first Hit 119.94 -- G4PEvent 36 stored in /Events/EventContainer/ (sustained) >>> Event 37 Event : 37 -mySD/EvenCollection Number of hits 31 - Edep of the first Hit 14.6393 -mySD/OddCollection Number of hits 18 - Edep of the first Hit 1.04518 +mySD/EvenCollection Number of hits 7 + Edep of the first Hit 20.405 +mySD/OddCollection Number of hits 39 + Edep of the first Hit 49.456 -- G4PEvent 37 stored in /Events/EventContainer/ (sustained) >>> Event 38 Event : 38 mySD/EvenCollection Number of hits 8 - Edep of the first Hit 10.8059 -mySD/OddCollection Number of hits 35 - Edep of the first Hit 118.845 + Edep of the first Hit 62.763 +mySD/OddCollection Number of hits 44 + Edep of the first Hit 31.906 -- G4PEvent 38 stored in /Events/EventContainer/ (sustained) >>> Event 39 Event : 39 -mySD/EvenCollection Number of hits 20 - Edep of the first Hit 38.2447 -mySD/OddCollection Number of hits 18 - Edep of the first Hit 13.7807 +mySD/EvenCollection Number of hits 10 + Edep of the first Hit 7.1267 +mySD/OddCollection Number of hits 44 + Edep of the first Hit 0.48857 -- G4PEvent 39 stored in /Events/EventContainer/ (sustained) >>> Event 40 Event : 40 -mySD/EvenCollection Number of hits 8 - Edep of the first Hit 10.573 -mySD/OddCollection Number of hits 42 - Edep of the first Hit 36.3471 +mySD/EvenCollection Number of hits 2 + Edep of the first Hit 61.942 +mySD/OddCollection Number of hits 39 + Edep of the first Hit 50.265 Transaction is committed on /Events/EventContainer/ Transaction started for /Events/EventContainer/ with sustained mode. -- G4PEvent 40 stored in /Events/EventContainer/ (sustained) >>> Event 41 Event : 41 -mySD/EvenCollection Number of hits 12 - Edep of the first Hit 35.2729 -mySD/OddCollection Number of hits 39 - Edep of the first Hit 77.8238 +mySD/EvenCollection Number of hits 7 + Edep of the first Hit 29.357 +mySD/OddCollection Number of hits 38 + Edep of the first Hit 10.217 -- G4PEvent 41 stored in /Events/EventContainer/ (sustained) >>> Event 42 Event : 42 -mySD/EvenCollection Number of hits 31 - Edep of the first Hit 37.8813 -mySD/OddCollection Number of hits 17 - Edep of the first Hit 2.36626 +mySD/EvenCollection Number of hits 7 + Edep of the first Hit 11.502 +mySD/OddCollection Number of hits 37 + Edep of the first Hit 21.138 -- G4PEvent 42 stored in /Events/EventContainer/ (sustained) >>> Event 43 Event : 43 -mySD/EvenCollection Number of hits 4 - Edep of the first Hit 84.6687 +mySD/EvenCollection Number of hits 10 + Edep of the first Hit 9.3481 mySD/OddCollection Number of hits 37 - Edep of the first Hit 65.9001 + Edep of the first Hit 55.22 -- G4PEvent 43 stored in /Events/EventContainer/ (sustained) >>> Event 44 Event : 44 -mySD/EvenCollection Number of hits 10 - Edep of the first Hit 22.4192 -mySD/OddCollection Number of hits 37 - Edep of the first Hit 29.7573 +mySD/EvenCollection Number of hits 6 + Edep of the first Hit 13.537 +mySD/OddCollection Number of hits 42 + Edep of the first Hit 36.372 -- G4PEvent 44 stored in /Events/EventContainer/ (sustained) >>> Event 45 Event : 45 -mySD/EvenCollection Number of hits 4 - Edep of the first Hit 20.3101 -mySD/OddCollection Number of hits 42 - Edep of the first Hit 46.6885 +mySD/EvenCollection Number of hits 11 + Edep of the first Hit 5.5157 +mySD/OddCollection Number of hits 38 + Edep of the first Hit 72.938 -- G4PEvent 45 stored in /Events/EventContainer/ (sustained) >>> Event 46 Event : 46 -mySD/EvenCollection Number of hits 9 - Edep of the first Hit 29.7857 -mySD/OddCollection Number of hits 39 - Edep of the first Hit 1.97487 +mySD/EvenCollection Number of hits 7 + Edep of the first Hit 2.7937 +mySD/OddCollection Number of hits 36 + Edep of the first Hit 0.82487 -- G4PEvent 46 stored in /Events/EventContainer/ (sustained) >>> Event 47 Event : 47 -mySD/EvenCollection Number of hits 8 - Edep of the first Hit 49.2956 -mySD/OddCollection Number of hits 37 - Edep of the first Hit 14.1064 +mySD/EvenCollection Number of hits 7 + Edep of the first Hit 49.743 +mySD/OddCollection Number of hits 38 + Edep of the first Hit 51.551 -- G4PEvent 47 stored in /Events/EventContainer/ (sustained) >>> Event 48 Event : 48 -mySD/EvenCollection Number of hits 7 - Edep of the first Hit 17.334 -mySD/OddCollection Number of hits 39 - Edep of the first Hit 14.9876 +mySD/EvenCollection Number of hits 12 + Edep of the first Hit 4.8359 +mySD/OddCollection Number of hits 36 + Edep of the first Hit 62.47 -- G4PEvent 48 stored in /Events/EventContainer/ (sustained) >>> Event 49 Event : 49 -mySD/EvenCollection Number of hits 5 - Edep of the first Hit 86.6238 -mySD/OddCollection Number of hits 46 - Edep of the first Hit 1.6177 +mySD/EvenCollection Number of hits 9 + Edep of the first Hit 5.4029 +mySD/OddCollection Number of hits 36 + Edep of the first Hit 45.328 -- G4PEvent 49 stored in /Events/EventContainer/ (sustained) >>> Event 50 Event : 50 -mySD/EvenCollection Number of hits 16 - Edep of the first Hit 9.98038 -mySD/OddCollection Number of hits 40 - Edep of the first Hit 102.52 +mySD/EvenCollection Number of hits 7 + Edep of the first Hit 55.147 +mySD/OddCollection Number of hits 37 + Edep of the first Hit 45.348 Transaction is committed on /Events/EventContainer/ Transaction started for /Events/EventContainer/ with sustained mode. -- G4PEvent 50 stored in /Events/EventContainer/ (sustained) >>> Event 51 Event : 51 mySD/EvenCollection Number of hits 12 - Edep of the first Hit 6.34435 -mySD/OddCollection Number of hits 37 - Edep of the first Hit 1.4159 + Edep of the first Hit 10.148 +mySD/OddCollection Number of hits 26 + Edep of the first Hit 7.2761 -- G4PEvent 51 stored in /Events/EventContainer/ (sustained) >>> Event 52 Event : 52 -mySD/EvenCollection Number of hits 32 - Edep of the first Hit 26.7945 -mySD/OddCollection Number of hits 12 - Edep of the first Hit 3.60454 +mySD/EvenCollection Number of hits 5 + Edep of the first Hit 144.05 +mySD/OddCollection Number of hits 44 + Edep of the first Hit 22.162 -- G4PEvent 52 stored in /Events/EventContainer/ (sustained) >>> Event 53 Event : 53 -mySD/EvenCollection Number of hits 7 - Edep of the first Hit 86.5918 -mySD/OddCollection Number of hits 45 - Edep of the first Hit 20.595 +mySD/EvenCollection Number of hits 10 + Edep of the first Hit 3.129 +mySD/OddCollection Number of hits 38 + Edep of the first Hit 14.101 -- G4PEvent 53 stored in /Events/EventContainer/ (sustained) >>> Event 54 Event : 54 -mySD/EvenCollection Number of hits 23 - Edep of the first Hit 2.5324 -mySD/OddCollection Number of hits 21 - Edep of the first Hit 58.4734 +mySD/EvenCollection Number of hits 8 + Edep of the first Hit 12.51 +mySD/OddCollection Number of hits 35 + Edep of the first Hit 13.398 -- G4PEvent 54 stored in /Events/EventContainer/ (sustained) >>> Event 55 Event : 55 -mySD/EvenCollection Number of hits 9 - Edep of the first Hit 37.4059 -mySD/OddCollection Number of hits 43 - Edep of the first Hit 1.93167 +mySD/EvenCollection Number of hits 27 + Edep of the first Hit 5.7096 +mySD/OddCollection Number of hits 17 + Edep of the first Hit 39.771 -- G4PEvent 55 stored in /Events/EventContainer/ (sustained) >>> Event 56 Event : 56 -mySD/EvenCollection Number of hits 8 - Edep of the first Hit 19.5034 -mySD/OddCollection Number of hits 39 - Edep of the first Hit 31.571 +mySD/EvenCollection Number of hits 11 + Edep of the first Hit 1.0675 +mySD/OddCollection Number of hits 40 + Edep of the first Hit 30.906 -- G4PEvent 56 stored in /Events/EventContainer/ (sustained) >>> Event 57 Event : 57 -mySD/EvenCollection Number of hits 10 - Edep of the first Hit 31.5705 -mySD/OddCollection Number of hits 37 - Edep of the first Hit 30.8361 +mySD/EvenCollection Number of hits 8 + Edep of the first Hit 46.183 +mySD/OddCollection Number of hits 39 + Edep of the first Hit 12.39 -- G4PEvent 57 stored in /Events/EventContainer/ (sustained) >>> Event 58 Event : 58 mySD/EvenCollection Number of hits 10 - Edep of the first Hit 26.7245 -mySD/OddCollection Number of hits 41 - Edep of the first Hit 39.5028 + Edep of the first Hit 23.31 +mySD/OddCollection Number of hits 39 + Edep of the first Hit 34.364 -- G4PEvent 58 stored in /Events/EventContainer/ (sustained) >>> Event 59 Event : 59 -mySD/EvenCollection Number of hits 8 - Edep of the first Hit 15.1671 +mySD/EvenCollection Number of hits 11 + Edep of the first Hit 21.041 mySD/OddCollection Number of hits 39 - Edep of the first Hit 2.78718 + Edep of the first Hit 15.584 -- G4PEvent 59 stored in /Events/EventContainer/ (sustained) >>> Event 60 Event : 60 -mySD/EvenCollection Number of hits 8 - Edep of the first Hit 27.9909 +mySD/EvenCollection Number of hits 5 + Edep of the first Hit 75.885 mySD/OddCollection Number of hits 42 - Edep of the first Hit 0.712295 + Edep of the first Hit 9.8005 Transaction is committed on /Events/EventContainer/ Transaction started for /Events/EventContainer/ with sustained mode. -- G4PEvent 60 stored in /Events/EventContainer/ (sustained) >>> Event 61 Event : 61 -mySD/EvenCollection Number of hits 33 - Edep of the first Hit 27.6162 -mySD/OddCollection Number of hits 9 - Edep of the first Hit 113.325 +mySD/EvenCollection Number of hits 4 + Edep of the first Hit 42.536 +mySD/OddCollection Number of hits 39 + Edep of the first Hit 11.997 -- G4PEvent 61 stored in /Events/EventContainer/ (sustained) >>> Event 62 Event : 62 -mySD/EvenCollection Number of hits 22 - Edep of the first Hit 21.6302 -mySD/OddCollection Number of hits 23 - Edep of the first Hit 0.862425 +mySD/EvenCollection Number of hits 5 + Edep of the first Hit 41.146 +mySD/OddCollection Number of hits 43 + Edep of the first Hit 1.5365 -- G4PEvent 62 stored in /Events/EventContainer/ (sustained) >>> Event 63 Event : 63 -mySD/EvenCollection Number of hits 6 - Edep of the first Hit 14.2129 -mySD/OddCollection Number of hits 38 - Edep of the first Hit 25.7919 +mySD/EvenCollection Number of hits 11 + Edep of the first Hit 44.318 +mySD/OddCollection Number of hits 45 + Edep of the first Hit 41.325 -- G4PEvent 63 stored in /Events/EventContainer/ (sustained) >>> Event 64 Event : 64 -mySD/EvenCollection Number of hits 11 - Edep of the first Hit 12.5999 +mySD/EvenCollection Number of hits 9 + Edep of the first Hit 46.349 mySD/OddCollection Number of hits 34 - Edep of the first Hit 15.5595 + Edep of the first Hit 53.085 -- G4PEvent 64 stored in /Events/EventContainer/ (sustained) >>> Event 65 Event : 65 -mySD/EvenCollection Number of hits 15 - Edep of the first Hit 104.139 -mySD/OddCollection Number of hits 33 - Edep of the first Hit 31.4386 +mySD/EvenCollection Number of hits 31 + Edep of the first Hit 7.7237 +mySD/OddCollection Number of hits 13 + Edep of the first Hit 78.961 -- G4PEvent 65 stored in /Events/EventContainer/ (sustained) >>> Event 66 Event : 66 -mySD/EvenCollection Number of hits 11 - Edep of the first Hit 42.3875 -mySD/OddCollection Number of hits 42 - Edep of the first Hit 9.47815 +mySD/EvenCollection Number of hits 5 + Edep of the first Hit 118.04 +mySD/OddCollection Number of hits 41 + Edep of the first Hit 20.92 -- G4PEvent 66 stored in /Events/EventContainer/ (sustained) >>> Event 67 Event : 67 -mySD/EvenCollection Number of hits 13 - Edep of the first Hit 10.7206 -mySD/OddCollection Number of hits 37 - Edep of the first Hit 4.13397 +mySD/EvenCollection Number of hits 32 + Edep of the first Hit 32.194 +mySD/OddCollection Number of hits 12 + Edep of the first Hit 101.02 -- G4PEvent 67 stored in /Events/EventContainer/ (sustained) >>> Event 68 Event : 68 -mySD/EvenCollection Number of hits 9 - Edep of the first Hit 5.34416 -mySD/OddCollection Number of hits 47 - Edep of the first Hit 3.01975 +mySD/EvenCollection Number of hits 7 + Edep of the first Hit 47.043 +mySD/OddCollection Number of hits 40 + Edep of the first Hit 51.099 -- G4PEvent 68 stored in /Events/EventContainer/ (sustained) >>> Event 69 Event : 69 -mySD/EvenCollection Number of hits 27 - Edep of the first Hit 14.5703 -mySD/OddCollection Number of hits 11 - Edep of the first Hit 7.50074 +mySD/EvenCollection Number of hits 8 + Edep of the first Hit 8.0564 +mySD/OddCollection Number of hits 44 + Edep of the first Hit 10.846 -- G4PEvent 69 stored in /Events/EventContainer/ (sustained) >>> Event 70 Event : 70 -mySD/EvenCollection Number of hits 27 - Edep of the first Hit 58.2356 -mySD/OddCollection Number of hits 21 - Edep of the first Hit 0.596397 +mySD/EvenCollection Number of hits 8 + Edep of the first Hit 26.715 +mySD/OddCollection Number of hits 35 + Edep of the first Hit 47.373 Transaction is committed on /Events/EventContainer/ Transaction started for /Events/EventContainer/ with sustained mode. -- G4PEvent 70 stored in /Events/EventContainer/ (sustained) >>> Event 71 Event : 71 -mySD/EvenCollection Number of hits 9 - Edep of the first Hit 13.1214 -mySD/OddCollection Number of hits 45 - Edep of the first Hit 4.05248 +mySD/EvenCollection Number of hits 12 + Edep of the first Hit 1.194 +mySD/OddCollection Number of hits 36 + Edep of the first Hit 2.7116 -- G4PEvent 71 stored in /Events/EventContainer/ (sustained) >>> Event 72 Event : 72 -mySD/EvenCollection Number of hits 13 - Edep of the first Hit 14.054 -mySD/OddCollection Number of hits 38 - Edep of the first Hit 15.1399 +mySD/EvenCollection Number of hits 10 + Edep of the first Hit 14.348 +mySD/OddCollection Number of hits 37 + Edep of the first Hit 4.0695 -- G4PEvent 72 stored in /Events/EventContainer/ (sustained) >>> Event 73 Event : 73 -mySD/EvenCollection Number of hits 4 - Edep of the first Hit 95.5824 -mySD/OddCollection Number of hits 37 - Edep of the first Hit 7.54214 +mySD/EvenCollection Number of hits 10 + Edep of the first Hit 0.012368 +mySD/OddCollection Number of hits 42 + Edep of the first Hit 1.3043 -- G4PEvent 73 stored in /Events/EventContainer/ (sustained) >>> Event 74 Event : 74 -mySD/EvenCollection Number of hits 9 - Edep of the first Hit 18.4512 -mySD/OddCollection Number of hits 41 - Edep of the first Hit 12.2678 +mySD/EvenCollection Number of hits 6 + Edep of the first Hit 3.7031 +mySD/OddCollection Number of hits 39 + Edep of the first Hit 0.97583 -- G4PEvent 74 stored in /Events/EventContainer/ (sustained) >>> Event 75 Event : 75 -mySD/EvenCollection Number of hits 27 - Edep of the first Hit 52.9679 -mySD/OddCollection Number of hits 18 - Edep of the first Hit 25.0818 +mySD/EvenCollection Number of hits 8 + Edep of the first Hit 4.9474 +mySD/OddCollection Number of hits 40 + Edep of the first Hit 18.935 -- G4PEvent 75 stored in /Events/EventContainer/ (sustained) >>> Event 76 Event : 76 -mySD/EvenCollection Number of hits 8 - Edep of the first Hit 31.5265 -mySD/OddCollection Number of hits 37 - Edep of the first Hit 18.8405 +mySD/EvenCollection Number of hits 17 + Edep of the first Hit 27.699 +mySD/OddCollection Number of hits 38 + Edep of the first Hit 6.3992 -- G4PEvent 76 stored in /Events/EventContainer/ (sustained) >>> Event 77 Event : 77 -mySD/EvenCollection Number of hits 11 - Edep of the first Hit 41.568 -mySD/OddCollection Number of hits 37 - Edep of the first Hit 47.8405 +mySD/EvenCollection Number of hits 14 + Edep of the first Hit 21.682 +mySD/OddCollection Number of hits 45 + Edep of the first Hit 40.105 -- G4PEvent 77 stored in /Events/EventContainer/ (sustained) >>> Event 78 Event : 78 mySD/EvenCollection Number of hits 28 - Edep of the first Hit 49.3923 -mySD/OddCollection Number of hits 18 - Edep of the first Hit 48.5154 + Edep of the first Hit 2.5014 +mySD/OddCollection Number of hits 23 + Edep of the first Hit 1.4234 -- G4PEvent 78 stored in /Events/EventContainer/ (sustained) >>> Event 79 Event : 79 -mySD/EvenCollection Number of hits 9 - Edep of the first Hit 42.3972 -mySD/OddCollection Number of hits 38 - Edep of the first Hit 50.0399 +mySD/EvenCollection Number of hits 27 + Edep of the first Hit 49.871 +mySD/OddCollection Number of hits 14 + Edep of the first Hit 89.423 -- G4PEvent 79 stored in /Events/EventContainer/ (sustained) >>> Event 80 Event : 80 -mySD/EvenCollection Number of hits 5 - Edep of the first Hit 17.0608 -mySD/OddCollection Number of hits 41 - Edep of the first Hit 10.1892 +mySD/EvenCollection Number of hits 7 + Edep of the first Hit 13.95 +mySD/OddCollection Number of hits 33 + Edep of the first Hit 76.748 Transaction is committed on /Events/EventContainer/ Transaction started for /Events/EventContainer/ with sustained mode. -- G4PEvent 80 stored in /Events/EventContainer/ (sustained) >>> Event 81 Event : 81 -mySD/EvenCollection Number of hits 30 - Edep of the first Hit 38.5882 -mySD/OddCollection Number of hits 10 - Edep of the first Hit 15.3692 +mySD/EvenCollection Number of hits 13 + Edep of the first Hit 13.728 +mySD/OddCollection Number of hits 40 + Edep of the first Hit 38.381 -- G4PEvent 81 stored in /Events/EventContainer/ (sustained) >>> Event 82 Event : 82 -mySD/EvenCollection Number of hits 24 - Edep of the first Hit 44.1097 -mySD/OddCollection Number of hits 17 - Edep of the first Hit 0.387436 +mySD/EvenCollection Number of hits 10 + Edep of the first Hit 3.7342 +mySD/OddCollection Number of hits 36 + Edep of the first Hit 46.326 -- G4PEvent 82 stored in /Events/EventContainer/ (sustained) >>> Event 83 Event : 83 -mySD/EvenCollection Number of hits 25 - Edep of the first Hit 32.1517 -mySD/OddCollection Number of hits 17 - Edep of the first Hit 28.1264 +mySD/EvenCollection Number of hits 30 + Edep of the first Hit 2.3343 +mySD/OddCollection Number of hits 15 + Edep of the first Hit 18.89 -- G4PEvent 83 stored in /Events/EventContainer/ (sustained) >>> Event 84 Event : 84 -mySD/EvenCollection Number of hits 12 - Edep of the first Hit 1.70742 -mySD/OddCollection Number of hits 36 - Edep of the first Hit 24.3727 +mySD/EvenCollection Number of hits 11 + Edep of the first Hit 5.0323 +mySD/OddCollection Number of hits 38 + Edep of the first Hit 38.485 -- G4PEvent 84 stored in /Events/EventContainer/ (sustained) >>> Event 85 Event : 85 -mySD/EvenCollection Number of hits 9 - Edep of the first Hit 7.27166 -mySD/OddCollection Number of hits 36 - Edep of the first Hit 49.4002 +mySD/EvenCollection Number of hits 6 + Edep of the first Hit 14.154 +mySD/OddCollection Number of hits 37 + Edep of the first Hit 18.839 -- G4PEvent 85 stored in /Events/EventContainer/ (sustained) >>> Event 86 Event : 86 -mySD/EvenCollection Number of hits 7 - Edep of the first Hit 51.317 -mySD/OddCollection Number of hits 36 - Edep of the first Hit 1.80263 +mySD/EvenCollection Number of hits 24 + Edep of the first Hit 33.43 +mySD/OddCollection Number of hits 17 + Edep of the first Hit 62.048 -- G4PEvent 86 stored in /Events/EventContainer/ (sustained) >>> Event 87 Event : 87 -mySD/EvenCollection Number of hits 6 - Edep of the first Hit 9.87022 -mySD/OddCollection Number of hits 39 - Edep of the first Hit 51.1685 +mySD/EvenCollection Number of hits 13 + Edep of the first Hit 5.8008 +mySD/OddCollection Number of hits 42 + Edep of the first Hit 19.054 -- G4PEvent 87 stored in /Events/EventContainer/ (sustained) >>> Event 88 Event : 88 -mySD/EvenCollection Number of hits 9 - Edep of the first Hit 63.5459 -mySD/OddCollection Number of hits 37 - Edep of the first Hit 33.551 +mySD/EvenCollection Number of hits 4 + Edep of the first Hit 48.204 +mySD/OddCollection Number of hits 39 + Edep of the first Hit 29.403 -- G4PEvent 88 stored in /Events/EventContainer/ (sustained) >>> Event 89 Event : 89 -mySD/EvenCollection Number of hits 10 - Edep of the first Hit 25.64 -mySD/OddCollection Number of hits 48 - Edep of the first Hit 9.03626 +mySD/EvenCollection Number of hits 16 + Edep of the first Hit 19.016 +mySD/OddCollection Number of hits 33 + Edep of the first Hit 119.43 -- G4PEvent 89 stored in /Events/EventContainer/ (sustained) >>> Event 90 Event : 90 -mySD/EvenCollection Number of hits 6 - Edep of the first Hit 5.46992 -mySD/OddCollection Number of hits 42 - Edep of the first Hit 58.2079 +mySD/EvenCollection Number of hits 31 + Edep of the first Hit 2.1797 +mySD/OddCollection Number of hits 18 + Edep of the first Hit 2.9777 Transaction is committed on /Events/EventContainer/ Transaction started for /Events/EventContainer/ with sustained mode. -- G4PEvent 90 stored in /Events/EventContainer/ (sustained) >>> Event 91 Event : 91 -mySD/EvenCollection Number of hits 5 - Edep of the first Hit 8.33175 -mySD/OddCollection Number of hits 41 - Edep of the first Hit 22.6429 +mySD/EvenCollection Number of hits 29 + Edep of the first Hit 9.1319 +mySD/OddCollection Number of hits 25 + Edep of the first Hit 15.253 -- G4PEvent 91 stored in /Events/EventContainer/ (sustained) >>> Event 92 Event : 92 -mySD/EvenCollection Number of hits 33 - Edep of the first Hit 5.97125 -mySD/OddCollection Number of hits 17 - Edep of the first Hit 14.186 +mySD/EvenCollection Number of hits 18 + Edep of the first Hit 32.535 +mySD/OddCollection Number of hits 30 + Edep of the first Hit 5.4963 -- G4PEvent 92 stored in /Events/EventContainer/ (sustained) >>> Event 93 Event : 93 -mySD/EvenCollection Number of hits 27 - Edep of the first Hit 39.596 -mySD/OddCollection Number of hits 18 - Edep of the first Hit 33.7135 +mySD/EvenCollection Number of hits 10 + Edep of the first Hit 6.0468 +mySD/OddCollection Number of hits 44 + Edep of the first Hit 48.192 -- G4PEvent 93 stored in /Events/EventContainer/ (sustained) >>> Event 94 Event : 94 -mySD/EvenCollection Number of hits 8 - Edep of the first Hit 4.32385 -mySD/OddCollection Number of hits 39 - Edep of the first Hit 2.13595 +mySD/EvenCollection Number of hits 29 + Edep of the first Hit 49.3 +mySD/OddCollection Number of hits 17 + Edep of the first Hit 13.076 -- G4PEvent 94 stored in /Events/EventContainer/ (sustained) >>> Event 95 Event : 95 -mySD/EvenCollection Number of hits 24 - Edep of the first Hit 6.90108 -mySD/OddCollection Number of hits 22 - Edep of the first Hit 5.42919 +mySD/EvenCollection Number of hits 8 + Edep of the first Hit 64.326 +mySD/OddCollection Number of hits 40 + Edep of the first Hit 12.064 -- G4PEvent 95 stored in /Events/EventContainer/ (sustained) >>> Event 96 Event : 96 -mySD/EvenCollection Number of hits 13 - Edep of the first Hit 17.5102 +mySD/EvenCollection Number of hits 10 + Edep of the first Hit 21.076 mySD/OddCollection Number of hits 38 - Edep of the first Hit 12.6036 + Edep of the first Hit 32.453 -- G4PEvent 96 stored in /Events/EventContainer/ (sustained) >>> Event 97 Event : 97 -mySD/EvenCollection Number of hits 24 - Edep of the first Hit 11.7109 -mySD/OddCollection Number of hits 16 - Edep of the first Hit 119.389 +mySD/EvenCollection Number of hits 6 + Edep of the first Hit 46.786 +mySD/OddCollection Number of hits 35 + Edep of the first Hit 133.84 -- G4PEvent 97 stored in /Events/EventContainer/ (sustained) >>> Event 98 Event : 98 -mySD/EvenCollection Number of hits 11 - Edep of the first Hit 18.9865 -mySD/OddCollection Number of hits 32 - Edep of the first Hit 85.2291 +mySD/EvenCollection Number of hits 25 + Edep of the first Hit 115.75 +mySD/OddCollection Number of hits 18 + Edep of the first Hit 46.607 -- G4PEvent 98 stored in /Events/EventContainer/ (sustained) >>> Event 99 Event : 99 -mySD/EvenCollection Number of hits 8 - Edep of the first Hit 2.75959 -mySD/OddCollection Number of hits 34 - Edep of the first Hit 42.2406 +mySD/EvenCollection Number of hits 11 + Edep of the first Hit 0.77024 +mySD/OddCollection Number of hits 31 + Edep of the first Hit 5.2199 -- G4PEvent 99 stored in /Events/EventContainer/ (sustained) Transaction is committed on /Events/EventContainer/ Transaction started for /Runs/RunContainer/ with non-sustained mode. diff --git a/examples/extended/persistency/PersistentEx02/include/PersEx02DetectorConstruction.hh b/examples/extended/persistency/PersistentEx02/include/PersEx02DetectorConstruction.hh index acde5f8f9b..4d0a9d88ca 100644 --- a/examples/extended/persistency/PersistentEx02/include/PersEx02DetectorConstruction.hh +++ b/examples/extended/persistency/PersistentEx02/include/PersEx02DetectorConstruction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: PersEx02DetectorConstruction.hh,v 1.3 1999/11/29 18:15:28 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef PersEx02DetectorConstruction_h diff --git a/examples/extended/persistency/PersistentEx02/include/PersEx02EventAction.hh b/examples/extended/persistency/PersistentEx02/include/PersEx02EventAction.hh index 69f0668b8a..4a0f8892c2 100644 --- a/examples/extended/persistency/PersistentEx02/include/PersEx02EventAction.hh +++ b/examples/extended/persistency/PersistentEx02/include/PersEx02EventAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: PersEx02EventAction.hh,v 1.3 1999/11/29 18:23:31 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // diff --git a/examples/extended/persistency/PersistentEx02/include/PersEx02PhysicsList.hh b/examples/extended/persistency/PersistentEx02/include/PersEx02PhysicsList.hh index 8f413f1192..3211b2d84b 100644 --- a/examples/extended/persistency/PersistentEx02/include/PersEx02PhysicsList.hh +++ b/examples/extended/persistency/PersistentEx02/include/PersEx02PhysicsList.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: PersEx02PhysicsList.hh,v 1.3 1999/11/29 18:23:32 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef PersEx02PhysicsList_h diff --git a/examples/extended/persistency/PersistentEx02/include/PersEx02PrimaryGeneratorAction.hh b/examples/extended/persistency/PersistentEx02/include/PersEx02PrimaryGeneratorAction.hh index ad3df3237a..e1ca62e0b6 100644 --- a/examples/extended/persistency/PersistentEx02/include/PersEx02PrimaryGeneratorAction.hh +++ b/examples/extended/persistency/PersistentEx02/include/PersEx02PrimaryGeneratorAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: PersEx02PrimaryGeneratorAction.hh,v 1.3 1999/11/29 18:23:32 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef PersEx02PrimaryGeneratorAction_h diff --git a/examples/extended/persistency/PersistentEx02/include/PersEx02RunAction.hh b/examples/extended/persistency/PersistentEx02/include/PersEx02RunAction.hh index d5fdd13313..ef7f34ad83 100644 --- a/examples/extended/persistency/PersistentEx02/include/PersEx02RunAction.hh +++ b/examples/extended/persistency/PersistentEx02/include/PersEx02RunAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: PersEx02RunAction.hh,v 1.3 1999/11/29 18:23:32 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef PersEx02RunAction_h diff --git a/examples/extended/persistency/PersistentEx02/include/PersEx02StackingAction.hh b/examples/extended/persistency/PersistentEx02/include/PersEx02StackingAction.hh index c2667275ad..cf2323fd9b 100644 --- a/examples/extended/persistency/PersistentEx02/include/PersEx02StackingAction.hh +++ b/examples/extended/persistency/PersistentEx02/include/PersEx02StackingAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: PersEx02StackingAction.hh,v 1.2 1999/11/29 18:23:33 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef PersEx02StackingAction_H diff --git a/examples/extended/persistency/PersistentEx02/include/PersEx02TrackerHit.ddl b/examples/extended/persistency/PersistentEx02/include/PersEx02TrackerHit.ddl index 13960a70f5..3adc88608d 100644 --- a/examples/extended/persistency/PersistentEx02/include/PersEx02TrackerHit.ddl +++ b/examples/extended/persistency/PersistentEx02/include/PersEx02TrackerHit.ddl @@ -6,7 +6,7 @@ // and all its terms. // // $Id: PersEx02TrackerHit.ddl,v 1.4 1999/11/29 19:27:52 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef PersEx02TrackerHit_h diff --git a/examples/extended/persistency/PersistentEx02/include/PersEx02TrackerHitsCollection.ddl b/examples/extended/persistency/PersistentEx02/include/PersEx02TrackerHitsCollection.ddl index a64b026c98..94956b5a31 100644 --- a/examples/extended/persistency/PersistentEx02/include/PersEx02TrackerHitsCollection.ddl +++ b/examples/extended/persistency/PersistentEx02/include/PersEx02TrackerHitsCollection.ddl @@ -6,7 +6,7 @@ // and all its terms. // // $Id: PersEx02TrackerHitsCollection.ddl,v 1.3 1999/11/29 18:23:33 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef PersEx02TrackerHitsCollection_h diff --git a/examples/extended/persistency/PersistentEx02/include/PersEx02TrackerSD.hh b/examples/extended/persistency/PersistentEx02/include/PersEx02TrackerSD.hh index 6812b50858..7102cdac75 100644 --- a/examples/extended/persistency/PersistentEx02/include/PersEx02TrackerSD.hh +++ b/examples/extended/persistency/PersistentEx02/include/PersEx02TrackerSD.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: PersEx02TrackerSD.hh,v 1.3 1999/11/29 18:23:33 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef PersEx02TrackerSD_h diff --git a/examples/extended/persistency/PersistentEx02/readDB/GNUmakefile b/examples/extended/persistency/PersistentEx02/readDB/GNUmakefile index 64c5230342..da95606d3a 100644 --- a/examples/extended/persistency/PersistentEx02/readDB/GNUmakefile +++ b/examples/extended/persistency/PersistentEx02/readDB/GNUmakefile @@ -45,8 +45,8 @@ LIBS := -L$(G4TMP)/$(G4SYSTEM)/PersistentEx02 \ -lPersistentEx02 \ -L$(G4LIB)/$(G4SYSTEM) \ -lG4pmanagement -lG4pgeomn -lG4pgeomBoolean -lG4pcsg \ - -lG4pgeomGlobal -lG4prun -lG4pevents -lG4phits -lG4pglobal \ - -lG4event -lG4partman -lG4hits -lG4digits \ + -lG4pgeomGlobal -lG4prun -lG4pevents -lG4phits -lG4pdigits \ + -lG4pglobal -lG4event -lG4partman -lG4hits -lG4digits \ -lG4materials \ -lG4intercoms -lG4globman -lG4hepnumerics \ $(LIBS) \ diff --git a/examples/extended/persistency/PersistentEx02/src/PersEx02DetectorConstruction.cc b/examples/extended/persistency/PersistentEx02/src/PersEx02DetectorConstruction.cc index 5a9d747359..b4b82938d9 100644 --- a/examples/extended/persistency/PersistentEx02/src/PersEx02DetectorConstruction.cc +++ b/examples/extended/persistency/PersistentEx02/src/PersEx02DetectorConstruction.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: PersEx02DetectorConstruction.cc,v 1.3.4.1 1999/12/08 17:33:09 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: PersEx02DetectorConstruction.cc,v 1.4 1999/12/15 14:49:17 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "PersEx02DetectorConstruction.hh" diff --git a/examples/extended/persistency/PersistentEx02/src/PersEx02EventAction.cc b/examples/extended/persistency/PersistentEx02/src/PersEx02EventAction.cc index 3910f158bd..97748ca9d7 100644 --- a/examples/extended/persistency/PersistentEx02/src/PersEx02EventAction.cc +++ b/examples/extended/persistency/PersistentEx02/src/PersEx02EventAction.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: PersEx02EventAction.cc,v 1.3.4.1 1999/12/08 17:33:09 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: PersEx02EventAction.cc,v 1.4 1999/12/15 14:49:17 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "PersEx02EventAction.hh" diff --git a/examples/extended/persistency/PersistentEx02/src/PersEx02PhysicsList.cc b/examples/extended/persistency/PersistentEx02/src/PersEx02PhysicsList.cc index 431f4906aa..daa9900309 100644 --- a/examples/extended/persistency/PersistentEx02/src/PersEx02PhysicsList.cc +++ b/examples/extended/persistency/PersistentEx02/src/PersEx02PhysicsList.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: PersEx02PhysicsList.cc,v 1.3.4.3 1999/12/14 07:07:43 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: PersEx02PhysicsList.cc,v 1.4 1999/12/15 14:49:18 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "globals.hh" diff --git a/examples/extended/persistency/PersistentEx02/src/PersEx02PrimaryGeneratorAction.cc b/examples/extended/persistency/PersistentEx02/src/PersEx02PrimaryGeneratorAction.cc index 07774fe2c4..d18b5eb7b5 100644 --- a/examples/extended/persistency/PersistentEx02/src/PersEx02PrimaryGeneratorAction.cc +++ b/examples/extended/persistency/PersistentEx02/src/PersEx02PrimaryGeneratorAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: PersEx02PrimaryGeneratorAction.cc,v 1.3 1999/11/29 18:33:28 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "PersEx02PrimaryGeneratorAction.hh" diff --git a/examples/extended/persistency/PersistentEx02/src/PersEx02RunAction.cc b/examples/extended/persistency/PersistentEx02/src/PersEx02RunAction.cc index 4c26471ea3..84212d7045 100644 --- a/examples/extended/persistency/PersistentEx02/src/PersEx02RunAction.cc +++ b/examples/extended/persistency/PersistentEx02/src/PersEx02RunAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: PersEx02RunAction.cc,v 1.3 1999/11/29 18:33:28 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "PersEx02RunAction.hh" diff --git a/examples/extended/persistency/PersistentEx02/src/PersEx02StackingAction.cc b/examples/extended/persistency/PersistentEx02/src/PersEx02StackingAction.cc index 0ad4d68df4..669f3c1a8e 100644 --- a/examples/extended/persistency/PersistentEx02/src/PersEx02StackingAction.cc +++ b/examples/extended/persistency/PersistentEx02/src/PersEx02StackingAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: PersEx02StackingAction.cc,v 1.2 1999/11/29 18:33:29 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "PersEx02StackingAction.hh" diff --git a/examples/extended/persistency/PersistentEx02/src/PersEx02TrackerHit.cc b/examples/extended/persistency/PersistentEx02/src/PersEx02TrackerHit.cc index a8cf8cb923..3a65234a13 100644 --- a/examples/extended/persistency/PersistentEx02/src/PersEx02TrackerHit.cc +++ b/examples/extended/persistency/PersistentEx02/src/PersEx02TrackerHit.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: PersEx02TrackerHit.cc,v 1.3 1999/11/29 18:33:29 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "PersEx02TrackerHit.hh" diff --git a/examples/extended/persistency/PersistentEx02/src/PersEx02TrackerHitsCollection.cc b/examples/extended/persistency/PersistentEx02/src/PersEx02TrackerHitsCollection.cc index 454693a4ca..cb6c6765db 100644 --- a/examples/extended/persistency/PersistentEx02/src/PersEx02TrackerHitsCollection.cc +++ b/examples/extended/persistency/PersistentEx02/src/PersEx02TrackerHitsCollection.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: PersEx02TrackerHitsCollection.cc,v 1.3 1999/11/29 18:33:29 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "PersEx02TrackerHitsCollection.hh" diff --git a/examples/extended/persistency/PersistentEx02/src/PersEx02TrackerSD.cc b/examples/extended/persistency/PersistentEx02/src/PersEx02TrackerSD.cc index 051d8fccd1..4ea0338f49 100644 --- a/examples/extended/persistency/PersistentEx02/src/PersEx02TrackerSD.cc +++ b/examples/extended/persistency/PersistentEx02/src/PersEx02TrackerSD.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: PersEx02TrackerSD.cc,v 1.4 1999/12/02 17:05:17 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include diff --git a/examples/novice/N01/History b/examples/novice/N01/History index eb8ec6a5e5..6f41e16e70 100644 --- a/examples/novice/N01/History +++ b/examples/novice/N01/History @@ -1,4 +1,4 @@ -$Id: History,v 1.2 1999/04/16 10:48:47 kurasige Exp $ +$Id: History,v 1.3 2000/06/17 12:21:24 stesting Exp $ ------------------------------------------------------------------- ========================================================= @@ -14,6 +14,10 @@ track of all tags. ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- + +June 17, 2000 John Allison (exampleN01-V01-01-00) +- Updated exampleN01.out for geant4-01-01-ref-06. + 16th April 1999 H.Kurashige - modify ExN01PhysicsList::SetCuts diff --git a/examples/novice/N01/README b/examples/novice/N01/README index f8042d9886..25f605b5e7 100644 --- a/examples/novice/N01/README +++ b/examples/novice/N01/README @@ -1,4 +1,4 @@ -$Id: README,v 1.1 1999/01/07 16:05:40 gunter Exp $ +$Id: README,v 1.2 2000/03/14 10:15:17 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -13,23 +13,23 @@ a tracker tube and a sandwitch calorimeter made of boxes. It shoots a geantino (pseudo-particle which has no "real" physics interaction) per one event. This example demonstrates how the basic GEANT4 framework works. -1. Detector descreption +1. Detector description The detector is defined in ExN01DetectorConstruction.cc. Argon gas, -alminum and lead are defined first, where all of them are single element -material. Though materials are assigned for each volume, they will not -affect to the trajectory of a geantino. +aluminum and lead are defined first, where all of them are single element +materials. Though materials are assigned for each volume, they will not +affect the trajectory of a geantino. - The experimental hall, which is the world volume, is made of alminum + The experimental hall, which is the world volume, is made of aluminum and it is a box. The tracker tube made of argon gas is placed at (-1m,0m,0m) respect to the origin of the world volume. The calorimeter -block made of lead and it has 19 layers of alminum plates inside. +block made of lead and it has 19 layers of aluminum plates inside. 2. Physics processes - ExN01PhysicsList.cc defines only a geantino and a transprotation + ExN01PhysicsList.cc defines only a geantino and a transportation process. Though cutoff will not be applied onto geantino, a dummy -valume must be set. +value must be set. 3. Event generation @@ -40,18 +40,18 @@ G4ParticleGun is accessed to generate a primary particle (geantino). Please note that the direction of the primary particle is set just before shooting, i.e. GeneratePrimaryVertex() method invokation. G4ParticleGun class itself does not have any capability of randomizing -the energy nor momentum of the primary particle. Thus the user should -implement randomizing code in GeneratePrimaries() method. +the energy nor the momentum of the primary particle. Therefore the user +should implement randomizing code in the GeneratePrimaries() method. 4. main() - exampleN01.cc has the main() method. In this main() method, three + exampleN01.cc has the main() method. In the main() method, three mandatory user classes described above are constructed and set to -the G4RunManager object. Then, "Initialize()" method of G4RunManager +the G4RunManager object. Then, the "Initialize()" method of G4RunManager is invoked. Some UI commands for setting verbosity are applied via hardly coded "ApplyCommand()" method of G4UImanager class. - "BeamOn()" method triggers the event loop. The argument of this -method is the number of event in this run. + The "BeamOn()" method triggers the event loop. The argument of this +method is the number of event in the run. diff --git a/examples/novice/N01/exampleN01.cc b/examples/novice/N01/exampleN01.cc index 6b607236ba..e068da5053 100644 --- a/examples/novice/N01/exampleN01.cc +++ b/examples/novice/N01/exampleN01.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: exampleN01.cc,v 1.2 1999/12/15 14:49:18 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/examples/novice/N01/exampleN01.out b/examples/novice/N01/exampleN01.out index 4c7e8f4fbc..32765bdc82 100644 --- a/examples/novice/N01/exampleN01.out +++ b/examples/novice/N01/exampleN01.out @@ -1,6 +1,6 @@ ********************************************** - Geant4 version $Name: geant4-01-01 $ - (07-Dec-99) + Geant4 version $Name: geant4-02-00 $ + (10-Mar-2000) 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.09s Real=0.35s Sys=0.02s + User=0.1s Real=0.13s Sys=0s G4 kernel has come to Quit state. diff --git a/examples/novice/N01/include/ExN01DetectorConstruction.hh b/examples/novice/N01/include/ExN01DetectorConstruction.hh index d17ce44d0b..0d9a8d2de0 100644 --- a/examples/novice/N01/include/ExN01DetectorConstruction.hh +++ b/examples/novice/N01/include/ExN01DetectorConstruction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN01DetectorConstruction.hh,v 1.2 1999/12/15 14:49:18 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef ExN01DetectorConstruction_H diff --git a/examples/novice/N01/include/ExN01PhysicsList.hh b/examples/novice/N01/include/ExN01PhysicsList.hh index a8736816b7..1e7a567cbd 100644 --- a/examples/novice/N01/include/ExN01PhysicsList.hh +++ b/examples/novice/N01/include/ExN01PhysicsList.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN01PhysicsList.hh,v 1.3 1999/12/15 14:49:19 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // diff --git a/examples/novice/N01/include/ExN01PrimaryGeneratorAction.hh b/examples/novice/N01/include/ExN01PrimaryGeneratorAction.hh index eb6cab7f8f..cd47d598f6 100644 --- a/examples/novice/N01/include/ExN01PrimaryGeneratorAction.hh +++ b/examples/novice/N01/include/ExN01PrimaryGeneratorAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN01PrimaryGeneratorAction.hh,v 1.2 1999/12/15 14:49:19 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef ExN01PrimaryGeneratorAction_h diff --git a/examples/novice/N01/src/ExN01DetectorConstruction.cc b/examples/novice/N01/src/ExN01DetectorConstruction.cc index 40a07a71c5..f65bc36098 100644 --- a/examples/novice/N01/src/ExN01DetectorConstruction.cc +++ b/examples/novice/N01/src/ExN01DetectorConstruction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN01DetectorConstruction.cc,v 1.2 1999/12/15 14:49:19 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "ExN01DetectorConstruction.hh" diff --git a/examples/novice/N01/src/ExN01PhysicsList.cc b/examples/novice/N01/src/ExN01PhysicsList.cc index fd25326f72..278a966d41 100644 --- a/examples/novice/N01/src/ExN01PhysicsList.cc +++ b/examples/novice/N01/src/ExN01PhysicsList.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN01PhysicsList.cc,v 1.3 1999/12/15 14:49:19 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N01/src/ExN01PrimaryGeneratorAction.cc b/examples/novice/N01/src/ExN01PrimaryGeneratorAction.cc index b823b2e111..625e893b69 100644 --- a/examples/novice/N01/src/ExN01PrimaryGeneratorAction.cc +++ b/examples/novice/N01/src/ExN01PrimaryGeneratorAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN01PrimaryGeneratorAction.cc,v 1.2 1999/12/15 14:49:19 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "ExN01PrimaryGeneratorAction.hh" diff --git a/examples/novice/N02/History b/examples/novice/N02/History index 76133504aa..b57f26f3a0 100644 --- a/examples/novice/N02/History +++ b/examples/novice/N02/History @@ -1,4 +1,4 @@ -$Id: History,v 1.3 1999/11/15 12:20:53 maire Exp $ +$Id: History,v 1.8 2000/06/19 16:32:05 stesting Exp $ ------------------------------------------------------------------- ========================================================= @@ -15,6 +15,19 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +June 17, 2000 John Allison (exampleN02-V01-01-02) +- Updated exampleN02.out for exampleN02-V01-01-01. + +June 19, 2000 G.Cosmo (exampleN02-V01-01-01) +- Fixed length of detector box to include tracker in ExN02DetectorConstruction. +- Cosmetic changes to comments. + +June 17, 2000 John Allison (exampleN02-V01-01-00) +- Updated exampleN02.out for geant4-01-01-ref-06. + +25-02-00 H.Kurashige +- removed RhoZeroDefinition from PhysicsList + 15-11-99 M.Maire - example of user SteppingVerbose class: verbose with units diff --git a/examples/novice/N02/README b/examples/novice/N02/README index caaccc6ba4..17b3d281ab 100644 --- a/examples/novice/N02/README +++ b/examples/novice/N02/README @@ -1,11 +1,11 @@ -$Id: README,v 1.1 1999/01/07 16:05:43 gunter Exp $ +$Id: README,v 1.2 2000/03/14 10:19:09 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= Geant4 - an Object-Oriented Toolkit for Simulation in HEP ========================================================= - ExampleN03 + ExampleN02 ---------- May 4, 1998 John Apostolakis. diff --git a/examples/novice/N02/exampleN02.cc b/examples/novice/N02/exampleN02.cc index c77eb8438e..ca7d9315d0 100644 --- a/examples/novice/N02/exampleN02.cc +++ b/examples/novice/N02/exampleN02.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: exampleN02.cc,v 1.3 1999/12/15 14:49:19 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/examples/novice/N02/exampleN02.out b/examples/novice/N02/exampleN02.out index f49137964f..76d8804ae6 100644 --- a/examples/novice/N02/exampleN02.out +++ b/examples/novice/N02/exampleN02.out @@ -1,6 +1,6 @@ ********************************************** - Geant4 version $Name: geant4-01-01 $ - (07-Dec-99) + Geant4 version $Name: geant4-02-00 $ + (10-Mar-2000) Copyright : Geant4 Collaboration ********************************************** @@ -46,42 +46,60 @@ eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to delta ray energy sampled from differential Xsection. PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. -eBrem: Total cross sections from a parametrisation. Good description from 1 KeV to 100 GeV. + eIoni Minimum Delta cut in range=0.2 mm. + + material min.delta energy(keV) + + Air 0.99 + Al 191.94 + Pb 370.43 + Vacuum 0.99 + +eBrem: Total cross sections from a parametrisation. Good description from 10 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). gamma energies sampled according Heitler PhysicsTables from 10 keV to 10 TeV in 100 bins. + hIoni Minimum Delta cut in range=0.2 mm. + + material min.delta energy(keV) + + Air 0.99 + Al 191.94 + Pb 370.43 + Vacuum 0.99 + 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 150 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 100 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 TeV. - PhysicsTables from 1 GeV to 1e+03 PeV in 100 bins. + 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 TeV. - PhysicsTables from 1 GeV to 1e+03 PeV in 50 bins. + Good description up to 1000 PeV. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. ### Run 0 start. ********************************************************************************************************* @@ -92,1177 +110,1249 @@ Step# X Y Z KineE dEStep StepLeng TrakLeng Ne 0 -2.5 cm 0 fm 0 fm 200 MeV 0 eV 0 fm 0 fm TargetPV initStep 1 -2.5 cm 0 fm 3.16 mm 195 MeV 1.4 MeV 3.16 mm 3.16 mm TargetPV eIoni 2 -2.5 cm 0 fm 3.16 mm 195 MeV 0 eV 0 fm 3.16 mm WorldPVTransportation - 3 -2.53 cm -133 mum 2.5 cm 195 MeV 3.98 keV 2.18 cm 2.5 cm TrackerTransportation - 4 -2.62 cm -405 mum 7.41 cm 195 MeV 9.52 keV 4.91 cm 7.41 cm Tracker eIoni - 5 -2.72 cm -786 mum 14 cm 195 MeV 15.1 keV 6.55 cm 14 cm Tracker eIoni - 6 -2.82 cm -1.2 mm 20.7 cm 195 MeV 15.8 keV 6.7 cm 20.7 cm Tracker eIoni - 7 -3.05 cm -1.99 mm 35.7 cm 195 MeV 35.3 keV 15.1 cm 35.7 cm Tracker eIoni - 8 -3.35 cm -3.06 mm 55.8 cm 195 MeV 35.7 keV 20.1 cm 55.8 cm Tracker eIoni - 9 -3.37 cm -3.18 mm 57.4 cm 195 MeV 2.46 keV 1.58 cm 57.4 cm Tracker eIoni - 10 -3.44 cm -3.54 mm 61.8 cm 195 MeV 10.9 keV 4.41 cm 61.8 cm Tracker eIoni - 11 -3.52 cm -4.02 mm 67.2 cm 195 MeV 10.2 keV 5.43 cm 67.2 cm Tracker eIoni - 12 -3.52 cm -4.04 mm 67.4 cm 195 MeV 72.1 eV 1.77 mm 67.4 cm Tracker eIoni - 13 -3.52 cm -4.05 mm 67.5 cm 195 MeV 169 eV 1.46 mm 67.6 cm Tracker eIoni - 14 -3.58 cm -4.4 mm 71.1 cm 195 MeV 9.12 keV 3.55 cm 71.1 cm Tracker eIoni - 15 -3.73 cm -5.28 mm 80.3 cm 195 MeV 19.4 keV 9.22 cm 80.3 cm Tracker eIoni - 16 -3.74 cm -5.3 mm 80.6 cm 190 MeV 901 eV 2.44 mm 80.6 cm Tracker eBrem - 17 -3.77 cm -5.47 mm 82.5 cm 190 MeV 2.44 keV 1.95 cm 82.5 cm trkChamberTransportation - 18 -3.8 cm -5.78 mm 83.7 cm 185 MeV 4.91 MeV 1.18 cm 83.7 cm trkChamber eBrem - 19 -3.79 cm -6.01 mm 84.3 cm 159 MeV 2.37 MeV 6.19 mm 84.3 cm trkChamber eBrem - 20 -3.78 cm -7.39 mm 86.2 cm 37 MeV 8.27 MeV 1.92 cm 86.2 cm trkChamber eBrem - 21 -3.79 cm -7.48 mm 86.5 cm 36.1 MeV 976 keV 2.86 mm 86.5 cm trkChamber eBrem - 22 -3.7 cm -9.28 mm 87.8 cm 31.1 MeV 4.82 MeV 1.28 cm 87.8 cm trkChamber eBrem - 23 -3.72 cm -9.64 mm 88.1 cm 29.3 MeV 1.63 MeV 3.21 mm 88.1 cm trkChamber eBrem - 24 -3.75 cm -1.02 cm 88.4 cm 27.2 MeV 1.58 MeV 3.66 mm 88.5 cm trkChamber eBrem - 25 -3.74 cm -1.07 cm 88.7 cm 25.4 MeV 1.37 MeV 2.33 mm 88.7 cm trkChamber eBrem - 26 -3.7 cm -1.12 cm 89.2 cm 23.2 MeV 2 MeV 5.68 mm 89.3 cm trkChamber eBrem - 27 -3.85 cm -1.28 cm 90 cm 19.8 MeV 3.39 MeV 7.77 mm 90.1 cm trkChamber eBrem - 28 -4.01 cm -1.78 cm 90.7 cm 15.8 MeV 3.92 MeV 9.32 mm 91 cm trkChamber eBrem - 29 -4.01 cm -1.8 cm 90.8 cm 15.5 MeV 102 keV 317 mum 91 cm trkChamber eBrem - 30 -4.03 cm -2.09 cm 91 cm 9.41 MeV 2.11 MeV 3.66 mm 91.4 cm trkChamber eBrem - 31 -3.97 cm -2.41 cm 91.4 cm 7.54 MeV 1.87 MeV 4.95 mm 91.9 cm trkChamber eIoni - 32 -4.12 cm -2.55 cm 91.7 cm 5.96 MeV 1.52 MeV 3.73 mm 92.3 cm trkChamber eBrem - 33 -4.19 cm -2.7 cm 91.9 cm 4.78 MeV 1.19 MeV 3.24 mm 92.6 cm trkChamber eIoni - 34 -4.27 cm -2.94 cm 92 cm 3.81 MeV 965 keV 2.65 mm 92.9 cm trkChamber eIoni - 35 -4.41 cm -2.8 cm 91.9 cm 2.91 MeV 900 keV 2.16 mm 93.1 cm trkChamber eIoni - 36 -4.5 cm -2.83 cm 91.8 cm 2.18 MeV 727 keV 1.7 mm 93.2 cm trkChamber eIoni - 37 -4.6 cm -2.8 cm 91.7 cm 1.75 MeV 430 keV 1.33 mm 93.4 cm trkChamber eIoni - 38 -4.57 cm -2.87 cm 91.6 cm 1.38 MeV 371 keV 1.11 mm 93.5 cm trkChamber eIoni - 39 -4.59 cm -2.95 cm 91.6 cm 993 keV 390 keV 915 mum 93.6 cm trkChamber eIoni - 40 -4.65 cm -2.94 cm 91.6 cm 711 keV 282 keV 711 mum 93.6 cm trkChamber eIoni - 41 -4.66 cm -2.99 cm 91.6 cm 308 keV 403 keV 561 mum 93.7 cm trkChamber eIoni - 42 -4.67 cm -3 cm 91.6 cm 138 keV 170 keV 323 mum 93.7 cm trkChamber eIoni - 43 -4.67 cm -3 cm 91.6 cm 0 eV 138 keV 114 mum 93.7 cm trkChamber eIoni - 44 -4.67 cm -3 cm 91.6 cm 0 eV 0 eV 0 fm 93.7 cm trkChamber annihil + 3 -2.53 cm -133 mum 2.5 cm 195 MeV 4.12 keV 2.18 cm 2.5 cm TrackerTransportation + 4 -2.61 cm -438 mum 7.41 cm 195 MeV 11.9 keV 4.91 cm 7.41 cm Tracker eIoni + 5 -2.93 cm -1.52 mm 25 cm 195 MeV 34.8 keV 17.6 cm 25.1 cm Tracker eIoni + 6 -3.04 cm -2.01 mm 32.9 cm 195 MeV 16.5 keV 7.9 cm 32.9 cm Tracker eIoni + 7 -3.08 cm -2.16 mm 35.7 cm 195 MeV 9.96 keV 2.72 cm 35.7 cm Tracker eIoni + 8 -3.15 cm -2.42 mm 40.3 cm 195 MeV 9.96 keV 4.66 cm 40.3 cm Tracker eIoni + 9 -3.65 cm -4.47 mm 71.7 cm 195 MeV 62.5 keV 31.4 cm 71.7 cm Tracker eIoni + 10 -3.67 cm -4.54 mm 73.1 cm 195 MeV 2.3 keV 1.37 cm 73.1 cm Tracker eIoni + 11 -3.81 cm -4.92 mm 82.5 cm 195 MeV 17.4 keV 9.43 cm 82.5 cm trkChamberTransportation + 12 -3.81 cm -4.92 mm 82.5 cm 194 MeV 35.1 keV 109 mum 82.5 cm trkChamber eBrem + 13 -3.82 cm -4.91 mm 82.8 cm 173 MeV 1.1 MeV 2.82 mm 82.8 cm trkChamber eBrem + 14 -3.83 cm -4.92 mm 83.2 cm 171 MeV 1.55 MeV 3.74 mm 83.2 cm trkChamber eBrem + 15 -3.82 cm -5.06 mm 83.6 cm 170 MeV 1.45 MeV 4.03 mm 83.6 cm trkChamber eBrem + 16 -3.82 cm -5.08 mm 83.7 cm 169 MeV 827 keV 1.28 mm 83.7 cm trkChamber eBrem + 17 -3.82 cm -5.14 mm 83.9 cm 156 MeV 693 keV 1.96 mm 83.9 cm trkChamber eBrem + 18 -3.81 cm -5.41 mm 85 cm 126 MeV 4.21 MeV 1.07 cm 85 cm trkChamber eBrem + 19 -3.79 cm -5.68 mm 85.7 cm 123 MeV 2.84 MeV 7.39 mm 85.7 cm trkChamber eBrem + 20 -3.76 cm -6.63 mm 86.5 cm 118 MeV 3.66 MeV 8.2 mm 86.5 cm trkChamber eBrem + 21 -3.76 cm -7.58 mm 88.4 cm 110 MeV 7.6 MeV 1.91 cm 88.4 cm trkChamber eBrem + 22 -3.79 cm -8.52 mm 89.5 cm 106 MeV 4.46 MeV 1.1 cm 89.5 cm trkChamber eBrem + 23 -3.83 cm -9.22 mm 90.1 cm 103 MeV 2.78 MeV 5.83 mm 90.1 cm trkChamber eBrem + 24 -3.9 cm -1.06 cm 91.3 cm 93 MeV 5.27 MeV 1.26 cm 91.4 cm trkChamber eBrem + 25 -3.96 cm -1.17 cm 92 cm 89.3 MeV 3.37 MeV 6.39 mm 92 cm trkChamber eBrem + 26 -4.24 cm -1.59 cm 93.9 cm 80 MeV 8.6 MeV 2.04 cm 94.1 cm trkChamber eBrem + 27 -4.26 cm -1.61 cm 94.1 cm 48.7 MeV 947 keV 1.51 mm 94.2 cm trkChamber eBrem + 28 -4.5 cm -1.75 cm 95.2 cm 43.2 MeV 5.31 MeV 1.19 cm 95.4 cm trkChamber eBrem + 29 -4.57 cm -1.76 cm 95.5 cm 41.3 MeV 1.18 MeV 3.05 mm 95.7 cm trkChamber eBrem + 30 -4.61 cm -1.77 cm 95.7 cm 40.2 MeV 521 keV 1.61 mm 95.9 cm trkChamber eBrem + 31 -4.69 cm -1.72 cm 96.1 cm 27.7 MeV 1.96 MeV 4.64 mm 96.3 cm trkChamber eBrem + 32 -4.79 cm -1.72 cm 96.4 cm 24.2 MeV 1.3 MeV 3.14 mm 96.6 cm trkChamber eBrem + 33 -5.01 cm -1.89 cm 97.1 cm 20.6 MeV 3.17 MeV 6.87 mm 97.3 cm trkChamber eBrem + 34 -5.08 cm -1.92 cm 97.4 cm 19.2 MeV 1.39 MeV 3.37 mm 97.7 cm trkChamber eBrem + 35 -5.2 cm -1.98 cm 97.7 cm 15.7 MeV 1.12 MeV 3.15 mm 98 cm trkChamber eBrem + 36 -5.48 cm -2.32 cm 98.4 cm 12.4 MeV 3.37 MeV 8.05 mm 98.8 cm trkChamber eIoni + 37 -5.6 cm -1.96 cm 98.9 cm 9.74 MeV 2.62 MeV 6.4 mm 99.4 cm trkChamber eIoni + 38 -5.68 cm -1.7 cm 99.2 cm 2.66 MeV 1.47 MeV 4.31 mm 99.9 cm trkChamber eBrem + 39 -5.69 cm -1.69 cm 99.3 cm 1.97 MeV 287 keV 536 mum 99.9 cm trkChamber eBrem + 40 -5.69 cm -1.66 cm 99.4 cm 1.33 MeV 643 keV 1.22 mm 1 m trkChamber eIoni + 41 -5.61 cm -1.63 cm 99.4 cm 1.02 MeV 316 keV 889 mum 1 m trkChamber eIoni + 42 -5.59 cm -1.58 cm 99.4 cm 663 keV 354 keV 723 mum 1 m trkChamber eIoni + 43 -5.56 cm -1.61 cm 99.3 cm 384 keV 279 keV 536 mum 1 m trkChamber eIoni + 44 -5.55 cm -1.62 cm 99.3 cm 210 keV 174 keV 376 mum 1 m trkChamber eIoni + 45 -5.55 cm -1.63 cm 99.3 cm 0 eV 210 keV 221 mum 1 m trkChamber eIoni + 46 -5.55 cm -1.63 cm 99.3 cm 0 eV 0 eV 0 fm 1 m trkChamber annihil + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 37, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -5.55 cm -1.63 cm 99.3 cm 511 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -6.32 cm 1.91 cm 97.8 cm 189 keV 322 keV 3.9 cm 3.9 cm trkChamber compt + 2 -6.99 cm -4.17 mm 1.02 m 189 keV 0 eV 5.25 cm 9.15 cm TrackerTransportation + 3 -15.7 cm -30.5 cm 1.62 m 189 keV 0 eV 67.7 cm 76.8 cm trkChamberTransportation + 4 -15.7 cm -30.5 cm 1.63 m 125 keV 64 keV 149 mum 76.8 cm trkChamber compt + 5 -15.6 cm -30.5 cm 1.62 m 125 keV 0 eV 899 mum 76.9 cm TrackerTransportation + 6 2.5 m 57.7 cm 1.21 m 125 keV 0 eV 2.83 m 3.6 m WorldPVTransportation + 7 4 m 1.07 m 97.6 cm 120 keV 0 eV 1.6 m 5.19 m WorldPV compt + 8 7.5 m 92.6 cm -1.58 m 120 keV 0 eV 4.34 m 9.53 m OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 38, Parent ID = 37 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 4 m 1.07 m 97.6 cm 4.86 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 4 m 1.07 m 97.6 cm 2.69 keV 707 eV 168 mum 168 mum WorldPV eIoni + 2 4 m 1.07 m 97.6 cm 0 eV 2.69 keV 249 mum 417 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 39, Parent ID = 38 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 4 m 1.07 m 97.6 cm 1.46 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 4 m 1.07 m 97.6 cm 0 eV 1.46 keV 102 mum 102 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 36, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -5.55 cm -1.63 cm 99.3 cm 511 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -5.36 cm -2.49 cm 99.7 cm 467 keV 43.7 keV 9.54 mm 9.54 mm trkChamber compt + 2 -3.63 cm -6.28 cm 99.7 cm 294 keV 173 keV 4.17 cm 5.12 cm trkChamber compt + 3 -3.58 cm -6.29 cm 99.7 cm 189 keV 105 keV 796 mum 5.2 cm trkChamber compt + 4 -2.97 cm -4.2 cm 99.7 cm 145 keV 44.4 keV 2.18 cm 7.38 cm trkChamber compt + 5 -3.6 cm -3.89 cm 99.6 cm 119 keV 25.6 keV 7.09 mm 8.09 cm trkChamber compt + 6 -4.06 cm -4.1 cm 1 m 102 keV 17.1 keV 7.94 mm 8.88 cm trkChamber compt + 7 -2.56 cm -3.72 cm 1.02 m 102 keV 0 eV 2.79 cm 11.7 cm TrackerTransportation + 8 36.3 cm 6.18 cm 1.62 m 102 keV 0 eV 72.1 cm 83.8 cm trkChamberTransportation + 9 37 cm 6.38 cm 1.64 m 77.2 keV 24.6 keV 1.42 cm 85.2 cm trkChamber compt + 10 36.9 cm 5.63 cm 1.63 m 77.2 keV 77.2 keV 8.68 mm 86.1 cm trkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 35, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -5.69 cm -1.69 cm 99.3 cm 396 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -7.62 cm -1.89 cm 1.02 m 396 keV 0 eV 3.78 cm 3.78 cm TrackerTransportation + 2 -43.2 cm -5.59 cm 1.62 m 396 keV 0 eV 69.9 cm 73.6 cm trkChamberTransportation + 3 -43.7 cm -5.64 cm 1.63 m 164 keV 232 keV 9.8 mm 74.6 cm trkChamber compt + 4 -43.4 cm -6.15 cm 1.62 m 164 keV 0 eV 1.03 cm 75.7 cm TrackerTransportation + 5 17.5 cm -1.03 m 2.5 cm 164 keV 0 eV 1.97 m 2.72 m WorldPVTransportation + 6 3.04 m -5.58 m -7.5 m 164 keV 0 eV 9.25 m 12 m OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 34, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -5.68 cm -1.7 cm 99.2 cm 5.6 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -6.11 cm -1.23 cm 1.01 m 0 eV 980 keV 2.15 cm 2.15 cm trkChamber conv + +********************************************************************************************************* +* G4Track Information: Particle = e+, Track ID = 40, Parent ID = 34 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -6.11 cm -1.23 cm 1.01 m 3.6 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -6.08 cm -1.2 cm 1.01 m 2.88 MeV 717 keV 2.06 mm 2.06 mm trkChamber eIoni + 2 -5.97 cm -1.07 cm 1.01 m 2.18 MeV 706 keV 1.69 mm 3.75 mm trkChamber eIoni + 3 -5.85 cm -1.04 cm 1.01 m 0 eV 451 keV 1.31 mm 5.06 mm trkChamber annihil + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 42, Parent ID = 40 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -5.85 cm -1.04 cm 1.01 m 612 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -10.8 cm 3.24 cm 97.3 cm 372 keV 240 keV 7.73 cm 7.73 cm trkChamber compt + 2 -10.5 cm 6.48 cm 97.4 cm 227 keV 145 keV 3.26 cm 11 cm trkChamber compt + 3 -10.5 cm 6.48 cm 97.5 cm 121 keV 106 keV 400 mum 11 cm trkChamber compt + 4 -14.9 cm 7.08 cm 93.9 cm 96.5 keV 24.6 keV 5.73 cm 16.8 cm trkChamber compt + 5 -16.5 cm 7.44 cm 96.2 cm 72 keV 24.5 keV 2.85 cm 19.6 cm trkChamber compt + 6 -16.5 cm 7.29 cm 95.7 cm 62.5 keV 9.51 keV 5.78 mm 20.2 cm trkChamber compt + 7 -15.9 cm 7.49 cm 95.7 cm 57.9 keV 4.59 keV 6.07 mm 20.8 cm trkChamber compt + 8 -15.3 cm 6.74 cm 95.3 cm 57.9 keV 57.9 keV 1.05 cm 21.8 cm trkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 41, Parent ID = 40 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -5.85 cm -1.04 cm 1.01 m 2.14 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -4.93 cm -6.1 mm 1.01 m 1.27 MeV 869 keV 1.14 cm 1.14 cm trkChamber compt + 2 -3.08 cm 3 cm 98.3 cm 269 keV 998 keV 4.82 cm 5.96 cm trkChamber compt + 3 -4.43 cm -2.57 cm 95.4 cm 166 keV 104 keV 6.4 cm 12.4 cm trkChamber compt + 4 -3.57 cm -1.97 cm 94.5 cm 126 keV 40.1 keV 1.44 cm 13.8 cm trkChamber compt + 5 -5.01 cm -2.35 cm 92.9 cm 89.3 keV 36.3 keV 2.14 cm 15.9 cm trkChamber compt + 6 -1.83 cm -3.05 cm 93.1 cm 89.1 keV 257 eV 3.27 cm 19.2 cm trkChamber compt + 7 3.22 cm -4.58 cm 94.2 cm 87.9 keV 1.18 keV 5.4 cm 24.6 cm trkChamber compt + 8 4.69 cm -5.35 cm 94 cm 87.9 keV 87.9 keV 1.68 cm 26.3 cm trkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 33, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -5.2 cm -1.98 cm 97.7 cm 2.39 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -7.19 cm -3.11 cm 1.02 m 801 keV 0 eV 5.25 cm 5.25 cm trkChamber compt + 2 -7.24 cm -3.02 cm 1.02 m 801 keV 0 eV 1.34 mm 5.38 cm TrackerTransportation + 3 -41.7 cm 59.4 cm 1.62 m 801 keV 0 eV 93.2 cm 98.6 cm trkChamberTransportation + 4 -42.2 cm 60.2 cm 1.63 m 288 keV 513 keV 1.14 cm 99.7 cm trkChamber compt + 5 -42.7 cm 59.7 cm 1.63 m 181 keV 107 keV 7.47 mm 1 m trkChamber compt + 6 -45.9 cm 64 cm 1.64 m 173 keV 8.75 keV 5.41 cm 1.06 m trkChamber compt + 7 -46.1 cm 64.1 cm 1.64 m 116 keV 56.4 keV 2.59 mm 1.06 m trkChamber compt + 8 -46.4 cm 63.3 cm 1.62 m 116 keV 0 eV 1.79 cm 1.08 m TrackerTransportation + 9 -67.9 cm -15.7 cm 2.5 cm 116 keV 0 eV 1.8 m 2.88 m WorldPVTransportation + 10 -1.69 m -3.87 m -7.5 m 116 keV 0 eV 8.45 m 11.3 m OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 43, Parent ID = 33 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -7.19 cm -3.11 cm 1.02 m 1.59 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -7.22 cm -3.17 cm 1.02 m 1.26 MeV 334 keV 1.01 mm 1.01 mm trkChamber eIoni + 2 -7.19 cm -3.2 cm 1.02 m 968 keV 288 keV 605 mum 1.62 mm TrackerTransportation + 3 8.9 mm -7.49 cm 1.2 m 939 keV 25.9 keV 19.6 cm 19.7 cm Tracker eIoni + 4 5.39 cm -10.8 cm 1.27 m 923 keV 11.9 keV 8.89 cm 28.6 cm Tracker eIoni + 5 17.3 cm -15.7 cm 1.37 m 890 keV 18.2 keV 16.8 cm 45.4 cm Tracker eIoni + 6 19.6 cm -16.8 cm 1.39 m 884 keV 2.96 keV 3.09 cm 48.5 cm Tracker eIoni + 7 20 cm -17.1 cm 1.39 m 882 keV 1.2 keV 5.8 mm 49.1 cm Tracker eIoni + 8 23.2 cm -19.5 cm 1.42 m 869 keV 5.97 keV 4.86 cm 53.9 cm Tracker eIoni + 9 25.9 cm -23 cm 1.45 m 854 keV 8.11 keV 5.59 cm 59.5 cm Tracker eIoni + 10 29.9 cm -26 cm 1.5 m 841 keV 11.4 keV 7.18 cm 66.7 cm Tracker eIoni + 11 31.1 cm -27 cm 1.52 m 834 keV 2.26 keV 2.29 cm 69 cm Tracker eIoni + 12 38.4 cm -30 cm 1.61 m 815 keV 15 keV 11.8 cm 80.8 cm Tracker eIoni + 13 40.5 cm -31.9 cm 1.62 m 811 keV 3.71 keV 3.37 cm 84.2 cm trkChamberTransportation + 14 40.5 cm -32 cm 1.63 m 455 keV 356 keV 615 mum 84.2 cm trkChamber eIoni + 15 40.5 cm -31.9 cm 1.63 m 301 keV 154 keV 422 mum 84.3 cm trkChamber eIoni + 16 40.5 cm -31.9 cm 1.63 m 128 keV 173 keV 320 mum 84.3 cm trkChamber eIoni + 17 40.5 cm -31.9 cm 1.63 m 0 eV 128 keV 104 mum 84.3 cm trkChamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 53, Parent ID = 43 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 38.4 cm -30 cm 1.61 m 3.88 keV 0 eV 0 fm 0 fm Tracker initStep + 1 38.4 cm -30 cm 1.61 m 2.16 keV 1.71 keV 349 mum 349 mum Tracker eIoni + 2 38.4 cm -30 cm 1.61 m 0 eV 2.16 keV 184 mum 533 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 52, Parent ID = 43 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 31.1 cm -27 cm 1.52 m 4.41 keV 0 eV 0 fm 0 fm Tracker initStep + 1 31.1 cm -27 cm 1.52 m 2.13 keV 2.28 keV 386 mum 386 mum Tracker eIoni + 2 31.1 cm -27 cm 1.52 m 0 eV 2.13 keV 180 mum 566 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 51, Parent ID = 43 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 29.9 cm -26 cm 1.5 m 1.98 keV 0 eV 0 fm 0 fm Tracker initStep + 1 29.9 cm -26.1 cm 1.5 m 0 eV 1.98 keV 161 mum 161 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 50, Parent ID = 43 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 25.9 cm -23 cm 1.45 m 7.24 keV 0 eV 0 fm 0 fm Tracker initStep + 1 26 cm -23 cm 1.45 m 6.25 keV 994 eV 585 mum 585 mum Tracker eIoni + 2 26 cm -22.9 cm 1.45 m 4.66 keV 1.59 keV 512 mum 1.1 mm Tracker eIoni + 3 26 cm -22.9 cm 1.45 m 2.7 keV 1.96 keV 403 mum 1.5 mm Tracker eIoni + 4 26 cm -22.9 cm 1.45 m 0 eV 2.7 keV 250 mum 1.75 mm Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 49, Parent ID = 43 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 23.2 cm -19.5 cm 1.42 m 6.41 keV 0 eV 0 fm 0 fm Tracker initStep + 1 23.2 cm -19.5 cm 1.42 m 4.02 keV 727 eV 32.2 mum 32.2 mum Tracker eIoni + 2 23.2 cm -19.5 cm 1.42 m 2.39 keV 1.64 keV 359 mum 391 mum Tracker eIoni + 3 23.2 cm -19.5 cm 1.42 m 0 eV 2.39 keV 214 mum 605 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 54, Parent ID = 49 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 23.2 cm -19.5 cm 1.42 m 1.66 keV 0 eV 0 fm 0 fm Tracker initStep + 1 23.2 cm -19.5 cm 1.42 m 0 eV 1.66 keV 123 mum 123 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 48, Parent ID = 43 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 20 cm -17.1 cm 1.39 m 1.17 keV 0 eV 0 fm 0 fm Tracker initStep + 1 20 cm -17.1 cm 1.39 m 0 eV 1.17 keV 75.6 mum 75.6 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 47, Parent ID = 43 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 19.6 cm -16.8 cm 1.39 m 2.79 keV 0 eV 0 fm 0 fm Tracker initStep + 1 19.6 cm -16.8 cm 1.39 m 1.79 keV 1 keV 119 mum 119 mum Tracker eIoni + 2 19.6 cm -16.8 cm 1.39 m 0 eV 1.79 keV 137 mum 256 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 46, Parent ID = 43 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 17.3 cm -15.7 cm 1.37 m 14.5 keV 0 eV 0 fm 0 fm Tracker initStep + 1 17.2 cm -15.6 cm 1.37 m 13.3 keV 1.26 keV 1.32 mm 1.32 mm Tracker eIoni + 2 17.3 cm -15.7 cm 1.37 m 11 keV 2.25 keV 1.17 mm 2.5 mm Tracker eIoni + 3 17.4 cm -15.6 cm 1.37 m 9.07 keV 1.95 keV 923 mum 3.42 mm Tracker eIoni + 4 17.4 cm -15.6 cm 1.37 m 7.15 keV 475 eV 149 mum 3.57 mm Tracker eIoni + 5 17.4 cm -15.6 cm 1.37 m 4.65 keV 2.51 keV 578 mum 4.15 mm Tracker eIoni + 6 17.4 cm -15.6 cm 1.37 m 2.88 keV 606 eV 109 mum 4.26 mm Tracker eIoni + 7 17.4 cm -15.6 cm 1.37 m 935 eV 1.94 keV 268 mum 4.52 mm Tracker eIoni + 8 17.4 cm -15.6 cm 1.37 m 0 eV 935 eV 56.2 mum 4.58 mm Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 56, Parent ID = 46 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 17.4 cm -15.6 cm 1.37 m 1.16 keV 0 eV 0 fm 0 fm Tracker initStep + 1 17.4 cm -15.6 cm 1.37 m 0 eV 1.16 keV 74.6 mum 74.6 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 55, Parent ID = 46 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 17.4 cm -15.6 cm 1.37 m 1.44 keV 0 eV 0 fm 0 fm Tracker initStep + 1 17.4 cm -15.6 cm 1.37 m 0 eV 1.44 keV 100 mum 100 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 45, Parent ID = 43 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 5.39 cm -10.8 cm 1.27 m 4.68 keV 0 eV 0 fm 0 fm Tracker initStep + 1 5.36 cm -10.8 cm 1.27 m 1.95 keV 2.73 keV 404 mum 404 mum Tracker eIoni + 2 5.36 cm -10.8 cm 1.27 m 0 eV 1.95 keV 157 mum 560 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 44, Parent ID = 43 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 8.9 mm -7.49 cm 1.2 m 2.36 keV 0 eV 0 fm 0 fm Tracker initStep + 1 8.84 mm -7.5 cm 1.2 m 0 eV 2.36 keV 210 mum 210 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 32, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -5.08 cm -1.92 cm 97.4 cm 11.3 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -5.09 cm -1.92 cm 97.4 cm 11.3 keV 11.3 keV 148 mum 148 mumtrkChamber phot ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 31, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -4.67 cm -3 cm 91.6 cm 511 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -9.81 cm -4.64 cm 94 cm 245 keV 266 keV 5.91 cm 5.91 cm trkChamber compt - 2 -13 cm 9.06 mm 89.3 cm 215 keV 30.9 keV 7.98 cm 13.9 cm trkChamber compt - 3 -13.6 cm 8.83 mm 88.2 cm 117 keV 97.2 keV 1.25 cm 15.1 cm trkChamber compt - 4 -12.9 cm 9.28 mm 91.2 cm 90.5 keV 26.8 keV 3.09 cm 18.2 cm trkChamber compt - 5 -16 cm 1.4 cm 91 cm 90.5 keV 90.5 keV 3.16 cm 21.4 cm trkChamber phot + 0 -5.01 cm -1.89 cm 97.1 cm 345 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -5.83 cm -2.1 cm 1 m 240 keV 105 keV 3.11 cm 3.11 cm trkChamber compt + 2 -2.85 cm -5.46 mm 1.02 m 240 keV 0 eV 4.15 cm 7.26 cm TrackerTransportation + 3 2.5 m 1.31 m 3.09 m 240 keV 0 eV 3.52 m 3.59 m WorldPVTransportation + 4 7.5 m 3.91 m 7.16 m 240 keV 0 eV 6.95 m 10.5 m OutOfWorldTransportation ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 30, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -4.67 cm -3 cm 91.6 cm 511 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.08 cm -2.5 cm 90.9 cm 214 keV 297 keV 1.83 cm 1.83 cm trkChamber compt - 2 -3.26 cm -3.66 cm 90.8 cm 122 keV 91.9 keV 1.18 cm 3.01 cm trkChamber compt - 3 -2.79 cm -2.28 cm 89.8 cm 121 keV 990 eV 1.75 cm 4.76 cm trkChamber compt - 4 -2.75 cm -2.22 cm 89.8 cm 82.4 keV 38.8 keV 842 mum 4.84 cm trkChamber compt - 5 -2.76 cm -2.24 cm 89.8 cm 67.1 keV 15.3 keV 201 mum 4.86 cm trkChamber compt - 6 -3.49 cm -5.21 mm 89.5 cm 55.2 keV 11.9 keV 1.88 cm 6.74 cm trkChamber compt - 7 -3.33 cm -6.7 mm 89.4 cm 54.9 keV 262 eV 2.75 mm 7.02 cm trkChamber compt - 8 -3.19 cm -8.07 mm 89.1 cm 49.3 keV 5.64 keV 3.19 mm 7.34 cm trkChamber compt - 9 -7.78 cm -511 mum 86.7 cm 46.8 keV 2.45 keV 5.24 cm 12.6 cm trkChamber compt - 10 -8.12 cm -1.25 cm 84.1 cm 46.8 keV 46.8 keV 2.86 cm 15.4 cm trkChamber phot + 0 -4.79 cm -1.72 cm 96.4 cm 2.23 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -6.34 cm -2.98 cm 1.02 m 527 keV 0 eV 6.14 cm 6.14 cm trkChamber compt + 2 -6.37 cm -2.5 cm 1.02 m 527 keV 0 eV 5.45 mm 6.68 cm TrackerTransportation + 3 -20.7 cm 2.5 m 2.32 m 527 keV 0 eV 2.84 m 2.91 m WorldPVTransportation + 4 -49.2 cm 7.5 m 4.87 m 527 keV 0 eV 5.62 m 8.53 m OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 57, Parent ID = 30 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -6.34 cm -2.98 cm 1.02 m 1.71 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -6.33 cm -3.03 cm 1.02 m 1.32 MeV 389 keV 1.07 mm 1.07 mm trkChamber eIoni + 2 -6.27 cm -3.07 cm 1.02 m 956 keV 361 keV 873 mum 1.94 mm trkChamber eIoni + 3 -6.23 cm -3.09 cm 1.02 m 751 keV 205 keV 689 mum 2.63 mm trkChamber eIoni + 4 -6.24 cm -3.14 cm 1.02 m 376 keV 375 keV 583 mum 3.21 mm trkChamber eIoni + 5 -6.23 cm -3.12 cm 1.02 m 167 keV 209 keV 374 mum 3.59 mm trkChamber eIoni + 6 -6.22 cm -3.13 cm 1.02 m 0 eV 167 keV 161 mum 3.75 mm trkChamber eIoni ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 29, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -4.12 cm -2.55 cm 91.7 cm 64.8 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -5.12 cm -2.73 cm 93.3 cm 64.8 keV 64.8 keV 1.94 cm 1.94 cm trkChamber phot + 0 -4.69 cm -1.72 cm 96.1 cm 10.6 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -6.75 cm -1.41 cm 1.02 m 10.6 MeV 0 eV 6.68 cm 6.68 cm TrackerTransportation + 2 -26.2 cm 1.5 cm 1.62 m 10.6 MeV 0 eV 63.1 cm 69.8 cm trkChamberTransportation + 3 -29.3 cm 1.96 cm 1.72 m 0 eV 0 eV 10 cm 79.8 cm trkChamber conv + +********************************************************************************************************* +* G4Track Information: Particle = e+, Track ID = 59, Parent ID = 29 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -29.3 cm 1.96 cm 1.72 m 5.07 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -29.3 cm 2.03 cm 1.72 m 4.05 MeV 1.01 MeV 2.8 mm 2.8 mm trkChamber eIoni + 2 -29.4 cm 1.96 cm 1.72 m 3.03 MeV 1.02 MeV 2.29 mm 5.08 mm trkChamber eIoni + 3 -29.5 cm 1.89 cm 1.73 m 2.47 MeV 565 keV 1.77 mm 6.85 mm trkChamber eIoni + 4 -29.5 cm 1.83 cm 1.73 m 1.93 MeV 540 keV 1.48 mm 8.33 mm trkChamber eIoni + 5 -29.5 cm 1.94 cm 1.73 m 1.53 MeV 394 keV 1.2 mm 9.53 mm trkChamber eIoni + 6 -29.5 cm 2.03 cm 1.73 m 1.2 MeV 334 keV 994 mum 1.05 cm trkChamber eIoni + 7 -29.5 cm 2.1 cm 1.73 m 863 keV 336 keV 819 mum 1.13 cm trkChamber eIoni + 8 -29.5 cm 2.11 cm 1.73 m 651 keV 212 keV 643 mum 1.2 cm trkChamber eIoni + 9 -29.5 cm 2.1 cm 1.73 m 463 keV 188 keV 530 mum 1.25 cm trkChamber eIoni + 10 -29.5 cm 2.1 cm 1.73 m 249 keV 215 keV 425 mum 1.29 cm trkChamber eIoni + 11 -29.5 cm 2.09 cm 1.73 m 60.1 keV 189 keV 269 mum 1.32 cm trkChamber eIoni + 12 -29.5 cm 2.09 cm 1.73 m 0 eV 60.1 keV 26.9 mum 1.32 cm trkChamber eIoni + 13 -29.5 cm 2.09 cm 1.73 m 0 eV 0 eV 0 fm 1.32 cm trkChamber annihil + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 61, Parent ID = 59 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -29.5 cm 2.09 cm 1.73 m 511 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -29.9 cm 2.31 cm 1.72 m 423 keV 87.6 keV 5.49 mm 5.49 mm trkChamber compt + 2 -31 cm 2.5 cm 1.72 m 415 keV 8.08 keV 1.23 cm 1.78 cm trkChamber compt + 3 -40.7 cm 3.01 cm 1.72 m 388 keV 27.7 keV 9.62 cm 11.4 cm trkChamber compt + 4 -40.9 cm 3.04 cm 1.72 m 186 keV 202 keV 2.97 mm 11.7 cm trkChamber compt + 5 -40.4 cm 1.53 cm 1.72 m 153 keV 32.7 keV 1.61 cm 13.3 cm trkChamber compt + 6 -41.1 cm 3.11 mm 1.73 m 146 keV 6.63 keV 1.98 cm 15.3 cm trkChamber compt + 7 -40.7 cm -3.06 cm 1.76 m 142 keV 3.81 keV 4 cm 19.3 cm trkChamber compt + 8 -39.9 cm -4.5 cm 1.76 m 94.1 keV 48.3 keV 1.71 cm 21 cm trkChamber compt + 9 -39.9 cm -3.91 cm 1.76 m 75.9 keV 18.2 keV 5.86 mm 21.6 cm trkChamber compt + 10 -40.4 cm -4.42 cm 1.78 m 75.9 keV 75.9 keV 1.73 cm 23.3 cm trkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 60, Parent ID = 59 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -29.5 cm 2.09 cm 1.73 m 511 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -21 cm -3.5 cm 1.82 m 511 keV 0 eV 14.1 cm 14.1 cm TrackerTransportation + 2 32.4 cm -38.3 cm 2.42 m 511 keV 0 eV 87.5 cm 1.02 m trkChamberTransportation + 3 32.5 cm -38.5 cm 2.43 m 307 keV 204 keV 3.03 mm 1.02 m trkChamber compt + 4 38.2 cm -34.8 cm 2.43 m 145 keV 162 keV 6.74 cm 1.09 m trkChamber compt + 5 36.7 cm -37.2 cm 2.44 m 134 keV 10.9 keV 2.94 cm 1.12 m trkChamber compt + 6 36.3 cm -37.3 cm 2.44 m 91.4 keV 42.7 keV 4.31 mm 1.12 m trkChamber compt + 7 36.9 cm -37.2 cm 2.42 m 91.4 keV 0 eV 1.71 cm 1.14 m TrackerTransportation + 8 59 cm -35.2 cm 1.82 m 91.4 keV 0 eV 64 cm 1.78 m trkChamberTransportation + 9 59.8 cm -35.1 cm 1.8 m 91.4 keV 91.4 keV 2.36 cm 1.8 m trkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 58, Parent ID = 29 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -29.3 cm 1.96 cm 1.72 m 4.49 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -29.3 cm 2.02 cm 1.72 m 3.23 MeV 1.2 MeV 2.24 mm 2.24 mm trkChamber eBrem + 2 -29.4 cm 1.99 cm 1.72 m 2.55 MeV 686 keV 1.83 mm 4.07 mm trkChamber eIoni + 3 -29.4 cm 1.9 cm 1.72 m 2.08 MeV 469 keV 1.49 mm 5.55 mm trkChamber eIoni + 4 -29.4 cm 1.87 cm 1.73 m 1.66 MeV 419 keV 1.25 mm 6.81 mm trkChamber eIoni + 5 -29.4 cm 1.87 cm 1.73 m 1.61 MeV 30.4 keV 99.8 mum 6.91 mm trkChamber eBrem + 6 -29.4 cm 1.8 cm 1.73 m 1.26 MeV 349 keV 1.02 mm 7.93 mm trkChamber eIoni + 7 -29.4 cm 1.75 cm 1.73 m 903 keV 360 keV 846 mum 8.77 mm trkChamber eIoni + 8 -29.5 cm 1.79 cm 1.73 m 647 keV 255 keV 662 mum 9.44 mm trkChamber eIoni + 9 -29.5 cm 1.75 cm 1.73 m 461 keV 186 keV 528 mum 9.96 mm trkChamber eIoni + 10 -29.4 cm 1.76 cm 1.73 m 252 keV 210 keV 426 mum 1.04 cm trkChamber eIoni + 11 -29.4 cm 1.75 cm 1.73 m 93.2 keV 159 keV 277 mum 1.07 cm trkChamber eIoni + 12 -29.4 cm 1.75 cm 1.73 m 0 eV 93.2 keV 61.2 mum 1.07 cm trkChamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 63, Parent ID = 58 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -29.4 cm 1.87 cm 1.73 m 15.4 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -29.5 cm 1.81 cm 1.73 m 15.4 keV 15.4 keV 940 mum 940 mumtrkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 62, Parent ID = 58 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -29.3 cm 2.02 cm 1.72 m 56.3 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -29.4 cm 2.01 cm 1.73 m 56.3 keV 56.3 keV 4.39 mm 4.39 mm trkChamber phot ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 28, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -4.03 cm -2.09 cm 91 cm 4.01 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -5.08 cm -4.98 cm 95.4 cm 283 keV 0 eV 5.38 cm 5.38 cm trkChamber compt - 2 -6.9 cm -1.77 cm 93.7 cm 270 keV 12.3 keV 4.06 cm 9.43 cm trkChamber compt - 3 -7 cm -8.33 mm 93 cm 150 keV 121 keV 1.17 cm 10.6 cm trkChamber compt - 4 -3.75 cm -1.18 cm 95.9 cm 135 keV 15.1 keV 4.35 cm 15 cm trkChamber compt - 5 4.19 cm -3.29 cm 94.5 cm 101 keV 33.8 keV 8.34 cm 23.3 cm trkChamber compt - 6 3.86 cm -3.31 cm 97.6 cm 72.8 keV 28.2 keV 3.14 cm 26.4 cm trkChamber compt - 7 3.85 cm -3.36 cm 97.4 cm 57.9 keV 14.8 keV 2.25 mm 26.7 cm trkChamber compt - 8 2.47 cm -3.28 cm 99.5 cm 57.9 keV 57.9 keV 2.55 cm 29.2 cm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 32, Parent ID = 28 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -5.08 cm -4.98 cm 95.4 cm 3.73 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -5.17 cm -5.05 cm 95.6 cm 3.05 MeV 676 keV 2.07 mm 2.07 mm trkChamber eIoni - 2 -5.2 cm -5.13 cm 95.6 cm 2.72 MeV 319 keV 887 mum 2.96 mm trkChamber eBrem - 3 -5.26 cm -5.22 cm 95.7 cm 1.97 MeV 747 keV 1.57 mm 4.53 mm trkChamber eIoni - 4 -5.29 cm -5.31 cm 95.8 cm 1.49 MeV 480 keV 1.2 mm 5.73 mm trkChamber eIoni - 5 -5.3 cm -5.39 cm 95.7 cm 1.14 MeV 350 keV 960 mum 6.69 mm trkChamber eIoni - 6 -5.31 cm -5.45 cm 95.8 cm 850 keV 289 keV 783 mum 7.47 mm trkChamber eIoni - 7 -5.26 cm -5.47 cm 95.8 cm 640 keV 211 keV 635 mum 8.1 mm trkChamber eIoni - 8 -5.26 cm -5.45 cm 95.8 cm 462 keV 178 keV 524 mum 8.63 mm trkChamber eIoni - 9 -5.25 cm -5.43 cm 95.8 cm 322 keV 83 keV 192 mum 8.82 mm trkChamber eBrem - 10 -5.27 cm -5.43 cm 95.8 cm 144 keV 177 keV 337 mum 9.16 mm trkChamber eIoni - 11 -5.27 cm -5.43 cm 95.8 cm 0 eV 144 keV 129 mum 9.28 mm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 34, Parent ID = 32 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -5.25 cm -5.43 cm 95.8 cm 57.2 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -6.65 cm -7.76 cm 96 cm 51.6 keV 5.63 keV 2.73 cm 2.73 cm trkChamber compt - 2 -6.45 cm -7.89 cm 96 cm 45.1 keV 6.49 keV 2.36 mm 2.96 cm trkChamber compt - 3 -6.39 cm -6.96 cm 95.8 cm 45.1 keV 45.1 keV 9.54 mm 3.92 cm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 33, Parent ID = 32 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -5.2 cm -5.13 cm 95.6 cm 14.4 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -5.24 cm -5.17 cm 95.6 cm 14.4 keV 14.4 keV 583 mum 583 mumtrkChamber phot + 0 -4.61 cm -1.77 cm 95.7 cm 554 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -4.68 cm -1.76 cm 96 cm 184 keV 370 keV 3.24 mm 3.24 mm trkChamber compt + 2 -4.89 cm -2.93 cm 93.8 cm 114 keV 69.5 keV 2.49 cm 2.81 cm trkChamber compt + 3 -5.13 cm -638 mum 94.7 cm 113 keV 1.68 keV 3 cm 5.81 cm trkChamber compt + 4 -5.15 cm 173 mum 94.7 cm 108 keV 4.93 keV 834 mum 5.89 cm trkChamber compt + 5 -5.13 cm 550 mum 94.6 cm 87.9 keV 19.9 keV 427 mum 5.94 cm trkChamber compt + 6 -7.28 cm 1.13 cm 95.9 cm 65.8 keV 22.1 keV 2.69 cm 8.62 cm trkChamber compt + 7 -5.79 cm 8.97 mm 95.4 cm 65.8 keV 65.8 keV 1.58 cm 10.2 cm trkChamber phot ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 27, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -4.01 cm -1.8 cm 90.8 cm 171 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -4.49 cm -5.8 cm 94.6 cm 108 keV 63 keV 5.57 cm 5.57 cm trkChamber compt - 2 2.03 cm -2.92 cm 87.5 cm 95 keV 12.8 keV 10.1 cm 15.6 cm trkChamber compt - 3 4.11 cm -1.41 cm 88.6 cm 79 keV 16 keV 2.79 cm 18.4 cm trkChamber compt - 4 3.97 cm -1.28 cm 88.6 cm 77.5 keV 1.5 keV 1.9 mm 18.6 cm trkChamber compt - 5 1.37 cm 1.46 cm 87.3 cm 77.5 keV 77.5 keV 3.99 cm 22.6 cm trkChamber phot + 0 -4.57 cm -1.76 cm 95.5 cm 691 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -5.07 cm -1.87 cm 98 cm 620 keV 70.9 keV 2.49 cm 2.49 cm trkChamber compt + 2 -5.59 cm -4.06 cm 1.02 m 620 keV 0 eV 5.05 cm 7.54 cm TrackerTransportation + 3 -12.4 cm -33.1 cm 1.62 m 620 keV 0 eV 67 cm 74.6 cm trkChamberTransportation + 4 -12.4 cm -33.3 cm 1.63 m 391 keV 230 keV 2.93 mm 74.9 cm trkChamber compt + 5 -15.7 cm -32.6 cm 1.65 m 220 keV 171 keV 4.06 cm 78.9 cm trkChamber compt + 6 -16 cm -30.1 cm 1.64 m 165 keV 54.3 keV 2.73 cm 81.6 cm trkChamber compt + 7 -16.2 cm -30.5 cm 1.62 m 165 keV 0 eV 1.43 cm 83.1 cm TrackerTransportation + 8 -43.1 cm -66.5 cm 2.5 cm 165 keV 0 eV 1.66 m 2.49 m WorldPVTransportation + 9 -1.7 m -2.36 m -7.5 m 165 keV 0 eV 7.82 m 10.3 m OutOfWorldTransportation ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 26, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -4.01 cm -1.78 cm 90.7 cm 60.6 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -4.17 cm -3.04 cm 92.2 cm 60.6 keV 60.6 keV 1.92 cm 1.92 cm trkChamber phot + 0 -4.5 cm -1.75 cm 95.2 cm 261 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -6 cm -2.14 cm 1.02 m 261 keV 0 eV 7.42 cm 7.42 cm TrackerTransportation + 2 -18.4 cm -5.35 cm 1.62 m 261 keV 0 eV 61.4 cm 68.8 cm trkChamberTransportation + 3 -18.5 cm -5.36 cm 1.63 m 185 keV 76.3 keV 1.92 mm 69 cm trkChamber compt + 4 -20 cm -5.43 cm 1.63 m 109 keV 75.7 keV 1.55 cm 70.5 cm trkChamber compt + 5 -19.3 cm -5.37 cm 1.63 m 109 keV 109 keV 8.18 mm 71.3 cm trkChamber phot ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 25, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.85 cm -1.28 cm 90 cm 9.85 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.85 cm -1.28 cm 90 cm 9.85 keV 9.85 keV 11.6 mum 11.6 mumtrkChamber phot + 0 -4.26 cm -1.61 cm 94.1 cm 30.3 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -4.97 cm -2.17 cm 99.5 cm 10.3 MeV 0 eV 5.45 cm 5.45 cm trkChamber compt + 2 -5.09 cm -2.29 cm 99.8 cm 0 eV 0 eV 4.14 mm 5.86 cm trkChamber conv + +********************************************************************************************************* +* G4Track Information: Particle = e+, Track ID = 66, Parent ID = 25 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -5.09 cm -2.29 cm 99.8 cm 7.34 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -5.22 cm -2.31 cm 1 m 6.09 MeV 1.26 MeV 3.93 mm 3.93 mm trkChamber eIoni + 2 -5.01 cm -2.42 cm 1 m 4.93 MeV 1.16 MeV 3.31 mm 7.24 mm trkChamber eIoni + 3 -4.95 cm -2.46 cm 1.01 m 3.83 MeV 1.1 MeV 2.73 mm 9.97 mm trkChamber eIoni + 4 -4.76 cm -2.38 cm 1.01 m 2.92 MeV 909 keV 2.17 mm 1.21 cm trkChamber eIoni + 5 -4.68 cm -2.45 cm 1.01 m 1.83 MeV 1.09 MeV 1.71 mm 1.38 cm trkChamber eIoni + 6 -4.6 cm -2.52 cm 1.01 m 1.4 MeV 433 keV 1.15 mm 1.5 cm trkChamber eIoni + 7 -4.58 cm -2.52 cm 1.01 m 932 keV 468 keV 924 mum 1.59 cm trkChamber eIoni + 8 -4.56 cm -2.49 cm 1.01 m 129 keV 803 keV 679 mum 1.66 cm trkChamber eIoni + 9 -4.55 cm -2.5 cm 1.01 m 0 eV 129 keV 99.6 mum 1.67 cm trkChamber eIoni + 10 -4.55 cm -2.5 cm 1.01 m 0 eV 0 eV 0 fm 1.67 cm trkChamber annihil + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 68, Parent ID = 66 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -4.55 cm -2.5 cm 1.01 m 511 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -4.3 cm -2.46 cm 1.01 m 181 keV 330 keV 2.67 mm 2.67 mm trkChamber compt + 2 -4.48 cm -2.63 cm 1.01 m 176 keV 4.84 keV 2.78 mm 5.45 mm trkChamber compt + 3 -5.22 cm -4.07 cm 99.2 cm 146 keV 30.6 keV 2.38 cm 2.93 cm trkChamber compt + 4 -8.12 cm -4.27 cm 99.1 cm 102 keV 43.6 keV 2.91 cm 5.84 cm trkChamber compt + 5 -8.05 cm -4.27 cm 99 cm 79.5 keV 22.7 keV 1.16 mm 5.95 cm trkChamber compt + 6 -8.36 cm -4.89 cm 99.2 cm 79.5 keV 79.5 keV 7.16 mm 6.67 cm trkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 67, Parent ID = 66 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -4.55 cm -2.5 cm 1.01 m 511 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -5.6 cm -2.65 cm 1.01 m 260 keV 251 keV 1.11 cm 1.11 cm trkChamber compt + 2 -5.46 cm -3.61 cm 1.01 m 204 keV 55.8 keV 9.76 mm 2.09 cm trkChamber compt + 3 -5.39 cm -3.67 cm 1 m 143 keV 61.2 keV 1.9 mm 2.28 cm trkChamber compt + 4 -7.89 cm -4.62 cm 99.8 cm 97.5 keV 45.8 keV 2.74 cm 5.02 cm trkChamber compt + 5 -5.47 cm -5.32 cm 99 cm 77.5 keV 20 keV 2.65 cm 7.67 cm trkChamber compt + 6 -5.79 cm -5.51 cm 98.7 cm 60.1 keV 17.5 keV 4.55 mm 8.12 cm trkChamber compt + 7 -4.83 cm -4.84 cm 1.01 m 58.1 keV 1.97 keV 2.21 cm 10.3 cm trkChamber compt + 8 -4.33 cm -4.23 cm 1.01 m 58.1 keV 58.1 keV 8.18 mm 11.1 cm trkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 65, Parent ID = 25 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -5.09 cm -2.29 cm 99.8 cm 1.91 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -5.1 cm -2.28 cm 100 cm 1.46 MeV 444 keV 1.17 mm 1.17 mm trkChamber eIoni + 2 -5.09 cm -2.31 cm 1 m 1.16 MeV 298 keV 946 mum 2.11 mm trkChamber eIoni + 3 -5.13 cm -2.33 cm 100 cm 928 keV 235 keV 795 mum 2.91 mm trkChamber eIoni + 4 -5.18 cm -2.29 cm 100 cm 714 keV 214 keV 675 mum 3.59 mm trkChamber eIoni + 5 -5.15 cm -2.25 cm 99.9 cm 524 keV 190 keV 563 mum 4.15 mm trkChamber eIoni + 6 -5.14 cm -2.22 cm 99.9 cm 352 keV 172 keV 461 mum 4.61 mm trkChamber eIoni + 7 -5.14 cm -2.23 cm 100 cm 194 keV 158 keV 358 mum 4.97 mm trkChamber eIoni + 8 -5.13 cm -2.22 cm 100 cm 0 eV 194 keV 203 mum 5.17 mm trkChamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 64, Parent ID = 25 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -4.97 cm -2.17 cm 99.5 cm 20 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -5.14 cm -2.33 cm 1 m 15 MeV 5 MeV 1 cm 1 cm trkChamber eIoni + 2 -4.95 cm -2.34 cm 1.01 m 12.9 MeV 2.06 MeV 5.98 mm 1.6 cm trkChamber eBrem + 3 -5.04 cm -2.45 cm 1.02 m 10.6 MeV 2.28 MeV 6.56 mm 2.26 cm trkChamber eIoni + 4 -5.02 cm -2.4 cm 1.02 m 8.67 MeV 1.97 MeV 5.45 mm 2.8 cm trkChamber eIoni + 5 -4.9 cm -2.31 cm 1.02 m 7.34 MeV 1.33 MeV 3.7 mm 3.17 cm TrackerTransportation + 6 -2.2 cm -4.69 cm 1.08 m 7.33 MeV 7.39 keV 6.89 cm 10.1 cm Tracker eIoni + 7 -1.78 cm -5.07 cm 1.09 m 7.32 MeV 3.82 keV 1.17 cm 11.2 cm Tracker eIoni + 8 3.92 cm -8.96 cm 1.22 m 7.29 MeV 25.1 keV 14.6 cm 25.8 cm Tracker eIoni + 9 4.05 cm -9.04 cm 1.23 m 7.28 MeV 923 eV 3.51 mm 26.1 cm Tracker eIoni + 10 20.8 cm -20.4 cm 1.62 m 7.21 MeV 73.3 keV 44.9 cm 71 cm trkChamberTransportation + 11 20.9 cm -20.4 cm 1.63 m 5.68 MeV 1.53 MeV 3.78 mm 71.4 cm trkChamber eIoni + 12 21 cm -20.5 cm 1.63 m 4.69 MeV 986 keV 3.03 mm 71.7 cm trkChamber eIoni + 13 21.1 cm -20.6 cm 1.63 m 3.58 MeV 1.11 MeV 2.55 mm 72 cm trkChamber eIoni + 14 21.1 cm -20.6 cm 1.64 m 2.71 MeV 876 keV 2 mm 72.2 cm trkChamber eIoni + 15 21.1 cm -20.7 cm 1.64 m 1.96 MeV 750 keV 1.57 mm 72.3 cm trkChamber eIoni + 16 21.2 cm -20.8 cm 1.64 m 1.38 MeV 578 keV 1.19 mm 72.4 cm trkChamber eIoni + 17 21.2 cm -20.9 cm 1.64 m 1.03 MeV 346 keV 904 mum 72.5 cm trkChamber eIoni + 18 21.2 cm -20.9 cm 1.64 m 784 keV 248 keV 728 mum 72.6 cm trkChamber eIoni + 19 21.2 cm -20.9 cm 1.64 m 589 keV 195 keV 600 mum 72.7 cm trkChamber eIoni + 20 21.3 cm -20.8 cm 1.64 m 426 keV 163 keV 497 mum 72.7 cm trkChamber eIoni + 21 21.3 cm -20.9 cm 1.64 m 241 keV 185 keV 405 mum 72.7 cm trkChamber eIoni + 22 21.3 cm -20.9 cm 1.64 m 14.7 keV 226 keV 265 mum 72.8 cm trkChamber eIoni + 23 21.3 cm -20.9 cm 1.64 m 0 eV 14.7 keV 2.54 mum 72.8 cm trkChamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 73, Parent ID = 64 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 4.05 cm -9.04 cm 1.23 m 6.1 keV 0 eV 0 fm 0 fm Tracker initStep + 1 4.06 cm -9 cm 1.23 m 4.12 keV 1.97 keV 501 mum 501 mum Tracker eIoni + 2 4.04 cm -8.97 cm 1.23 m 2.16 keV 1.96 keV 366 mum 868 mum Tracker eIoni + 3 4.03 cm -8.97 cm 1.23 m 0 eV 2.16 keV 183 mum 1.05 mm Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 72, Parent ID = 64 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 3.92 cm -8.96 cm 1.22 m 1.95 keV 0 eV 0 fm 0 fm Tracker initStep + 1 3.91 cm -8.96 cm 1.22 m 0 eV 1.95 keV 157 mum 157 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 71, Parent ID = 64 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.78 cm -5.07 cm 1.09 m 3.96 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -1.79 cm -5.09 cm 1.09 m 2.29 keV 1.66 keV 354 mum 354 mum Tracker eIoni + 2 -1.79 cm -5.1 cm 1.09 m 0 eV 2.29 keV 201 mum 555 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 70, Parent ID = 64 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.2 cm -4.69 cm 1.08 m 5.11 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.17 cm -4.72 cm 1.08 m 3.56 keV 1.55 keV 433 mum 433 mum Tracker eIoni + 2 -2.2 cm -4.72 cm 1.08 m 836 eV 2.72 keV 326 mum 759 mum Tracker eIoni + 3 -2.19 cm -4.72 cm 1.08 m 0 eV 836 eV 49 mum 808 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 69, Parent ID = 64 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -4.95 cm -2.34 cm 1.01 m 67 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -4.87 cm -2.45 cm 1.02 m 67 keV 0 eV 1.5 cm 1.5 cm TrackerTransportation + 2 -1.49 cm -6.78 cm 1.62 m 67 keV 0 eV 60.3 cm 61.8 cm trkChamberTransportation + 3 -1.24 cm -7.09 cm 1.67 m 61.8 keV 5.24 keV 4.31 cm 66.1 cm trkChamber compt + 4 -1.71 cm -7.82 cm 1.67 m 61.8 keV 61.8 keV 9.16 mm 67 cm trkChamber phot ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 24, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.7 cm -1.12 cm 89.2 cm 220 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.71 cm -1.14 cm 89.3 cm 180 keV 39.7 keV 566 mum 566 mumtrkChamber compt - 2 -2.97 cm -7.74 mm 90.1 cm 130 keV 50.4 keV 1.14 cm 1.19 cm trkChamber compt - 3 -1.58 cm -5.52 cm 90.2 cm 125 keV 4.84 keV 4.95 cm 6.14 cm trkChamber compt - 4 -1.42 cm -5.68 cm 90.3 cm 91.3 keV 33.7 keV 2.38 mm 6.38 cm trkChamber compt - 5 -6.95 mm -3.3 cm 85.9 cm 70.3 keV 21 keV 5.07 cm 11.5 cm trkChamber compt - 6 -7.8 mm -3.81 cm 86 cm 70.3 keV 70.3 keV 5.39 mm 12 cm trkChamber phot + 0 -4.24 cm -1.59 cm 93.9 cm 675 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -5.29 cm -1.95 cm 1 m 491 keV 184 keV 6.41 cm 6.41 cm trkChamber compt + 2 -5.26 cm -1.97 cm 1 m 360 keV 131 keV 622 mum 6.47 cm trkChamber compt + 3 -4.54 cm -1.18 cm 1.01 m 350 keV 10.2 keV 1.33 cm 7.8 cm trkChamber compt + 4 -4.48 cm -1.15 cm 1.01 m 261 keV 88.7 keV 855 mum 7.89 cm trkChamber compt + 5 -4.92 cm 1.42 cm 1.02 m 261 keV 0 eV 2.93 cm 10.8 cm TrackerTransportation + 6 -46.7 cm 2.5 m 2.33 m 261 keV 0 eV 2.84 m 2.95 m WorldPVTransportation + 7 -1.31 m 7.5 m 4.95 m 261 keV 0 eV 5.71 m 8.65 m OutOfWorldTransportation ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 23, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.74 cm -1.07 cm 88.7 cm 447 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.59 cm -5.27 cm 1.02 m 367 keV 80 keV 13.7 cm 13.7 cm trkChamber compt - 2 -3.16 cm -6.22 cm 1.02 m 367 keV 0 eV 1.39 cm 15.1 cm TrackerTransportation - 3 -1.51 m -2.5 m 3.21 m 367 keV 0 eV 3.59 m 3.74 m WorldPVTransportation - 4 -2.39 m -3.94 m 4.5 m 367 keV 0 eV 2.12 m 5.86 m OutOfWorldTransportation + 0 -3.96 cm -1.17 cm 92 cm 319 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -4.83 cm -2.02 cm 97.5 cm 171 keV 149 keV 5.63 cm 5.63 cm trkChamber compt + 2 -4.32 cm -1.94 cm 97.3 cm 121 keV 50.1 keV 5.27 mm 6.16 cm trkChamber compt + 3 -5.03 cm -1.65 cm 96.1 cm 96.6 keV 23.9 keV 1.46 cm 7.61 cm trkChamber compt + 4 -4.68 cm -1.6 cm 95.9 cm 95.7 keV 967 eV 3.93 mm 8.01 cm trkChamber compt + 5 -4 cm -1.74 cm 95.7 cm 95 keV 606 eV 7.37 mm 8.74 cm trkChamber compt + 6 -2.17 cm -2.54 cm 94.6 cm 80.9 keV 14.1 keV 2.29 cm 11 cm trkChamber compt + 7 -4.43 cm -5.13 cm 92.2 cm 80.9 keV 80.9 keV 4.16 cm 15.2 cm trkChamber phot ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 22, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.75 cm -1.02 cm 88.4 cm 514 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.54 cm -2.39 cm 95.7 cm 450 keV 63.7 keV 7.36 cm 7.36 cm trkChamber compt - 2 -4.17 cm -1.59 cm 98.3 cm 248 keV 203 keV 2.83 cm 10.2 cm trkChamber compt - 3 -9.24 cm -3.47 mm 97.2 cm 127 keV 121 keV 5.36 cm 15.5 cm trkChamber compt - 4 -7.31 cm -8.37 mm 97.1 cm 110 keV 16.8 keV 2 cm 17.5 cm trkChamber compt - 5 -6.52 cm -3.55 cm 94.4 cm 77.3 keV 32.6 keV 3.88 cm 21.4 cm trkChamber compt - 6 -7.19 cm -2.41 cm 95.3 cm 75.2 keV 2.03 keV 1.58 cm 23 cm trkChamber compt - 7 -7.38 cm -1.49 cm 95.3 cm 66.3 keV 8.9 keV 9.34 mm 23.9 cm trkChamber compt - 8 -12.7 cm -2.11 cm 95.8 cm 65.7 keV 610 eV 5.4 cm 29.3 cm trkChamber compt - 9 -13.2 cm -2.1 cm 96 cm 59.7 keV 6.02 keV 5.11 mm 29.9 cm trkChamber compt - 10 -13.2 cm -2.1 cm 96 cm 56.8 keV 2.94 keV 38.6 mum 29.9 cm trkChamber compt - 11 -20.3 cm -4.59 cm 97.3 cm 47.1 keV 9.7 keV 7.64 cm 37.5 cm trkChamber compt - 12 -19.8 cm -4.45 cm 97.5 cm 47.1 keV 47.1 keV 5.79 mm 38.1 cm trkChamber phot + 0 -3.9 cm -1.06 cm 91.3 cm 4.75 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -5.07 cm -2.64 cm 1.02 m 4.75 MeV 0 eV 11.3 cm 11.3 cm TrackerTransportation + 2 -11.4 cm -11.2 cm 1.62 m 4.75 MeV 0 eV 60.9 cm 72.3 cm trkChamberTransportation + 3 -13.1 cm -13.5 cm 1.79 m 2.95 MeV 0 eV 16.4 cm 88.6 cm trkChamber compt + 4 -13.1 cm -15 cm 1.82 m 1.82 MeV 0 eV 3.31 cm 92 cm trkChamber compt + 5 -13.3 cm -15.1 cm 1.82 m 1.82 MeV 0 eV 9.81 mm 92.9 cm TrackerTransportation + 6 -27.6 cm -19.6 cm 2.42 m 1.82 MeV 0 eV 61.8 cm 1.55 m trkChamberTransportation + 7 -29.1 cm -20.1 cm 2.49 m 1.44 MeV 375 keV 6.35 cm 1.61 m trkChamber compt + 8 -33 cm -19.2 cm 2.55 m 1.4 MeV 43.8 keV 7.26 cm 1.68 m trkChamber compt + 9 -37.8 cm -19.4 cm 2.62 m 1.4 MeV 0 eV 9.17 cm 1.78 m TrackerTransportation + 10 -75.6 cm -21.4 cm 3.23 m 1.4 MeV 0 eV 70.9 cm 2.48 m trkChamberTransportation + 11 -77 cm -21.5 cm 3.25 m 479 keV 921 keV 2.71 cm 2.51 m trkChamber compt + 12 -76.4 cm -19.7 cm 3.26 m 396 keV 83.1 keV 2.22 cm 2.53 m trkChamber compt + 13 -75.8 cm -13 cm 3.26 m 366 keV 30.1 keV 6.78 cm 2.6 m trkChamber compt + 14 -75.7 cm -12.7 cm 3.26 m 291 keV 75.1 keV 3.36 mm 2.61 m trkChamber compt + 15 -76 cm -11.7 cm 3.25 m 138 keV 153 keV 1.12 cm 2.62 m trkChamber compt + 16 -74.8 cm -13.3 cm 3.26 m 101 keV 37.2 keV 2.08 cm 2.64 m trkChamber compt + 17 -75.2 cm -13.3 cm 3.26 m 72.3 keV 28.2 keV 4.79 mm 2.64 m trkChamber compt + 18 -75.1 cm -13.3 cm 3.26 m 72.3 keV 72.3 keV 589 mum 2.64 m trkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 75, Parent ID = 22 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -13.1 cm -15 cm 1.82 m 1.14 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -13.1 cm -15.1 cm 1.82 m 864 keV 272 keV 781 mum 781 mumtrkChamber eIoni + 2 -13 cm -15.1 cm 1.82 m 635 keV 229 keV 642 mum 1.42 mm trkChamber eIoni + 3 -13 cm -15.1 cm 1.82 m 452 keV 183 keV 522 mum 1.94 mm trkChamber eIoni + 4 -13.1 cm -15.1 cm 1.82 m 259 keV 193 keV 421 mum 2.37 mm trkChamber eIoni + 5 -13.1 cm -15.1 cm 1.82 m 96.7 keV 162 keV 284 mum 2.65 mm trkChamber eIoni + 6 -13.1 cm -15.1 cm 1.82 m 0 eV 96.7 keV 65.3 mum 2.71 mm trkChamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 74, Parent ID = 22 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -13.1 cm -13.5 cm 1.79 m 1.79 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -13.1 cm -13.4 cm 1.79 m 1.46 MeV 338 keV 1.11 mm 1.11 mm trkChamber eIoni + 2 -13.1 cm -13.4 cm 1.79 m 1.11 MeV 347 keV 944 mum 2.06 mm trkChamber eIoni + 3 -13.1 cm -13.3 cm 1.79 m 833 keV 277 keV 768 mum 2.82 mm trkChamber eIoni + 4 -13.1 cm -13.2 cm 1.79 m 615 keV 217 keV 625 mum 3.45 mm trkChamber eIoni + 5 -13.1 cm -13.2 cm 1.79 m 300 keV 315 keV 511 mum 3.96 mm trkChamber eIoni + 6 -13.1 cm -13.2 cm 1.79 m 146 keV 154 keV 320 mum 4.28 mm trkChamber eIoni + 7 -13.1 cm -13.2 cm 1.79 m 0 eV 146 keV 129 mum 4.41 mm trkChamber eIoni ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 21, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.72 cm -9.64 mm 88.1 cm 208 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.85 cm -1.45 cm 91.7 cm 142 keV 66.6 keV 3.62 cm 3.62 cm trkChamber compt - 2 -3.93 cm -1.27 cm 91.7 cm 136 keV 5.91 keV 1.94 mm 3.82 cm trkChamber compt - 3 -4.02 cm -84.1 mum 92.2 cm 92 keV 43.6 keV 1.37 cm 5.19 cm trkChamber compt - 4 -2.79 cm -1.64 cm 92.1 cm 72 keV 20 keV 2.04 cm 7.23 cm trkChamber compt - 5 -2.32 cm -3.22 mm 92.3 cm 61.4 keV 10.6 keV 1.41 cm 8.64 cm trkChamber compt - 6 -3.18 cm -7.52 mm 94.1 cm 54.1 keV 7.25 keV 2 cm 10.6 cm trkChamber compt - 7 -1.52 cm -4.46 mm 94.7 cm 52.6 keV 1.49 keV 1.81 cm 12.5 cm trkChamber compt - 8 -5.48 mm 6.61 mm 94.7 cm 43.8 keV 8.82 keV 1.47 cm 13.9 cm trkChamber compt - 9 -1.75 cm -7.9 mm 94.1 cm 43.8 keV 43.8 keV 1.97 cm 15.9 cm trkChamber phot + 0 -3.83 cm -9.22 mm 90.1 cm 153 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -3.84 cm -1.05 cm 91.1 cm 131 keV 22 keV 9.92 mm 9.92 mm trkChamber compt + 2 -3.78 cm -1.35 mm 91.7 cm 88.3 keV 42.5 keV 1.09 cm 2.08 cm trkChamber compt + 3 -3.76 cm -3.24 mm 91.7 cm 74.6 keV 13.7 keV 1.91 mm 2.27 cm trkChamber compt + 4 -4.38 cm -3.82 mm 92.3 cm 58.5 keV 16.1 keV 9.07 mm 3.18 cm trkChamber compt + 5 -4.18 cm -1.64 mm 91.8 cm 57 keV 1.52 keV 5.98 mm 3.78 cm trkChamber compt + 6 -4.44 cm -1.32 mm 90.8 cm 48.1 keV 8.9 keV 1.06 cm 4.84 cm trkChamber compt + 7 -4.14 cm -1.55 mm 90.9 cm 43.8 keV 4.31 keV 3.34 mm 5.17 cm trkChamber compt + 8 -3.9 cm 1.56 cm 90.5 cm 43.2 keV 572 eV 1.77 cm 6.95 cm trkChamber compt + 9 -3.84 cm 1.69 cm 90.6 cm 41.1 keV 2.13 keV 1.54 mm 7.1 cm trkChamber compt + 10 -4.07 cm 2.01 cm 90.5 cm 41.1 keV 41.1 keV 3.99 mm 7.5 cm trkChamber phot ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 20, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.7 cm -9.28 mm 87.8 cm 92.9 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.71 cm -9.33 mm 87.8 cm 84.9 keV 7.98 keV 410 mum 410 mumtrkChamber compt - 2 -1.71 cm -5.64 mm 89.4 cm 84.9 keV 84.9 keV 2.6 cm 2.65 cm trkChamber phot + 0 -3.79 cm -8.52 mm 89.5 cm 53.7 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -3.86 cm -1.03 cm 91 cm 53.7 keV 53.7 keV 1.51 cm 1.51 cm trkChamber phot ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 19, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.79 cm -7.48 mm 86.5 cm 18.2 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.79 cm -7.48 mm 86.5 cm 18.2 keV 18.2 keV 130 mum 130 mumtrkChamber phot + 0 -3.76 cm -7.58 mm 88.4 cm 20.7 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -3.76 cm -7.65 mm 88.5 cm 20.1 keV 687 eV 986 mum 986 mumtrkChamber compt + 2 -3.76 cm -7.7 mm 88.5 cm 20.1 keV 20.1 keV 47.9 mum 1.03 mm trkChamber phot ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 18, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.78 cm -7.39 mm 86.2 cm 114 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.52 cm -1.5 cm 98.7 cm 0 eV 0 eV 12.5 cm 12.5 cm trkChamber conv - -********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 36, Parent ID = 18 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.52 cm -1.5 cm 98.7 cm 64.7 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.56 cm -1.69 cm 1 m 57.9 MeV 6.35 MeV 1.73 cm 1.73 cm trkChamber eBrem - 2 -3.64 cm -1.73 cm 1.01 m 51.3 MeV 5.17 MeV 1.07 cm 2.79 cm trkChamber eBrem - 3 -3.65 cm -1.76 cm 1.02 m 49 MeV 2.31 MeV 6.08 mm 3.4 cm trkChamber eBrem - 4 -3.65 cm -1.77 cm 1.02 m 43.8 MeV 990 keV 2.63 mm 3.66 cm trkChamber eBrem - 5 -3.64 cm -1.78 cm 1.02 m 43.3 MeV 561 keV 1.7 mm 3.83 cm TrackerTransportation - 6 -3.62 cm -2.45 cm 1.08 m 43.3 MeV 12.3 keV 5.47 cm 9.3 cm Tracker eIoni - 7 -3.59 cm -3.38 cm 1.15 m 43.2 MeV 10.9 keV 7.51 cm 16.8 cm Tracker eIoni - 8 -3.59 cm -3.69 cm 1.18 m 43.2 MeV 4.62 keV 2.47 cm 19.3 cm Tracker eIoni - 9 -3.56 cm -4.22 cm 1.22 m 43.2 MeV 7.85 keV 4.38 cm 23.7 cm Tracker eIoni - 10 -3.44 cm -5.84 cm 1.35 m 43.2 MeV 22.3 keV 13.2 cm 36.9 cm Tracker eIoni - 11 -3.44 cm -5.94 cm 1.36 m 43.2 MeV 1.36 keV 7.86 mm 37.7 cm Tracker eIoni - 12 -3.37 cm -6.77 cm 1.43 m 43.2 MeV 10.5 keV 6.86 cm 44.6 cm Tracker eIoni - 13 -3.27 cm -7.53 cm 1.5 m 43.2 MeV 12.9 keV 6.66 cm 51.2 cm Tracker eIoni - 14 -3.26 cm -7.62 cm 1.5 m 43.1 MeV 1.6 keV 8.19 mm 52 cm Tracker eIoni - 15 -3.16 cm -8.6 cm 1.59 m 43.1 MeV 14.5 keV 8.49 cm 60.5 cm Tracker eIoni - 16 -3.12 cm -9.03 cm 1.62 m 43.1 MeV 6.68 keV 3.76 cm 64.3 cm trkChamberTransportation - 17 -3.12 cm -9.04 cm 1.63 m 42.7 MeV 359 keV 953 mum 64.4 cm trkChamber eBrem - 18 -3.09 cm -9.23 cm 1.63 m 38.1 MeV 3.41 MeV 9.22 mm 65.3 cm trkChamber eBrem - 19 -3.03 cm -9.26 cm 1.64 m 33.1 MeV 3.02 MeV 7.34 mm 66 cm trkChamber eIoni - 20 -3.04 cm -9.29 cm 1.64 m 30 MeV 543 keV 1.58 mm 66.2 cm trkChamber eIoni - 21 -3.04 cm -9.31 cm 1.64 m 29.5 MeV 456 keV 1.19 mm 66.3 cm trkChamber eBrem - 22 -2.9 cm -9.8 cm 1.66 m 22.7 MeV 6.78 MeV 1.48 cm 67.8 cm trkChamber eIoni - 23 -2.81 cm -9.89 cm 1.67 m 18.5 MeV 4.13 MeV 1.03 cm 68.8 cm trkChamber eBrem - 24 -2.8 cm -9.89 cm 1.67 m 18.3 MeV 55.1 keV 173 mum 68.8 cm trkChamber eBrem - 25 -2.79 cm -9.89 cm 1.67 m 14.7 MeV 197 keV 557 mum 68.9 cm trkChamber eIoni - 26 -2.52 cm -9.82 cm 1.68 m 12 MeV 2.72 MeV 7.57 mm 69.6 cm trkChamber eIoni - 27 -2.52 cm -9.8 cm 1.68 m 11.3 MeV 676 keV 2.02 mm 69.8 cm trkChamber eBrem - 28 -2.55 cm -9.88 cm 1.68 m 8.73 MeV 2.6 MeV 5.9 mm 70.4 cm trkChamber eIoni - 29 -2.57 cm -9.88 cm 1.68 m 7.36 MeV 101 keV 252 mum 70.5 cm trkChamber eIoni - 30 -2.8 cm -9.82 cm 1.69 m 6.03 MeV 1.34 MeV 3.94 mm 70.9 cm trkChamber eIoni - 31 -2.95 cm -9.83 cm 1.69 m 4.8 MeV 1.22 MeV 3.28 mm 71.2 cm trkChamber eIoni - 32 -3.17 cm -9.85 cm 1.69 m 3.94 MeV 862 keV 2.66 mm 71.4 cm trkChamber eIoni - 33 -3.35 cm -9.87 cm 1.69 m 2.9 MeV 1.04 MeV 2.23 mm 71.7 cm trkChamber eIoni - 34 -3.5 cm -9.81 cm 1.69 m 1.83 MeV 1.07 MeV 1.7 mm 71.8 cm trkChamber eIoni - 35 -3.58 cm -9.88 cm 1.69 m 1.46 MeV 369 keV 1.15 mm 72 cm trkChamber eIoni - 36 -3.6 cm -9.93 cm 1.69 m 1.16 MeV 304 keV 956 mum 72 cm trkChamber eIoni - 37 -3.6 cm -9.99 cm 1.69 m 721 keV 436 keV 797 mum 72.1 cm trkChamber eIoni - 38 -3.61 cm -10 cm 1.69 m 505 keV 216 keV 567 mum 72.2 cm trkChamber eIoni - 39 -3.59 cm -10 cm 1.7 m 321 keV 184 keV 449 mum 72.2 cm trkChamber eIoni - 40 -3.58 cm -10.1 cm 1.7 m 151 keV 170 keV 332 mum 72.3 cm trkChamber eIoni - 41 -3.59 cm -10.1 cm 1.7 m 0 eV 151 keV 132 mum 72.3 cm trkChamber eIoni - 42 -3.59 cm -10.1 cm 1.7 m 0 eV 0 eV 0 fm 72.3 cm trkChamber annihil - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 62, Parent ID = 36 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.59 cm -10.1 cm 1.7 m 511 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -4.08 cm -10 cm 1.7 m 405 keV 105 keV 4.89 mm 4.89 mm trkChamber compt - 2 -4.75 cm -10.5 cm 1.69 m 181 keV 224 keV 8.75 mm 1.36 cm trkChamber compt - 3 -4.99 cm -8.18 cm 1.7 m 160 keV 21.5 keV 2.59 cm 3.95 cm trkChamber compt - 4 -4.96 cm -7.1 cm 1.75 m 115 keV 45 keV 4.94 cm 8.9 cm trkChamber compt - 5 -4.76 cm -5.88 cm 1.75 m 115 keV 115 keV 1.4 cm 10.3 cm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 61, Parent ID = 36 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.59 cm -10.1 cm 1.7 m 511 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 2.9 cm -10.6 cm 1.7 m 469 keV 42.1 keV 6.52 cm 6.52 cm trkChamber compt - 2 12.5 cm -15.4 cm 1.72 m 290 keV 179 keV 11.1 cm 17.6 cm trkChamber compt - 3 12.6 cm -16.5 cm 1.72 m 156 keV 134 keV 1.35 cm 18.9 cm trkChamber compt - 4 16.9 cm -13.4 cm 1.73 m 122 keV 33.8 keV 5.36 cm 24.3 cm trkChamber compt - 5 16.8 cm -13.4 cm 1.73 m 83 keV 39.1 keV 3.17 mm 24.6 cm trkChamber compt - 6 16.8 cm -13.4 cm 1.72 m 80 keV 3.05 keV 1.27 cm 25.9 cm trkChamber compt - 7 16.8 cm -13.4 cm 1.72 m 77.8 keV 2.14 keV 170 mum 25.9 cm trkChamber compt - 8 16.8 cm -13.3 cm 1.72 m 64.2 keV 13.7 keV 746 mum 26 cm trkChamber compt - 9 16.8 cm -13.3 cm 1.72 m 57.6 keV 6.54 keV 1.03 mm 26.1 cm trkChamber compt - 10 15.8 cm -13 cm 1.72 m 55.8 keV 1.78 keV 1.11 cm 27.2 cm trkChamber compt - 11 15.2 cm -13.3 cm 1.72 m 46.5 keV 9.29 keV 6.8 mm 27.9 cm trkChamber compt - 12 16.4 cm -13.2 cm 1.72 m 41.6 keV 4.98 keV 1.33 cm 29.2 cm trkChamber compt - 13 16.4 cm -13 cm 1.72 m 41.6 keV 41.6 keV 2.63 mm 29.5 cm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 60, Parent ID = 36 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.57 cm -9.88 cm 1.68 m 1.27 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.6 cm -9.81 cm 1.69 m 864 keV 402 keV 847 mum 847 mumtrkChamber eIoni - 2 -2.63 cm -9.81 cm 1.69 m 614 keV 250 keV 642 mum 1.49 mm trkChamber eIoni - 3 -2.62 cm -9.8 cm 1.69 m 378 keV 236 keV 510 mum 2 mm trkChamber eIoni - 4 -2.64 cm -9.78 cm 1.69 m 228 keV 149 keV 375 mum 2.37 mm trkChamber eIoni - 5 -2.65 cm -9.79 cm 1.69 m 57.3 keV 171 keV 252 mum 2.63 mm trkChamber eIoni - 6 -2.65 cm -9.79 cm 1.69 m 0 eV 57.3 keV 29.6 mum 2.66 mm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 59, Parent ID = 36 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.52 cm -9.8 cm 1.68 m 13 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.51 cm -9.8 cm 1.68 m 13 keV 13 keV 528 mum 528 mumtrkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 58, Parent ID = 36 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.79 cm -9.89 cm 1.67 m 3.4 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.68 cm -9.94 cm 1.67 m 2.75 MeV 649 keV 1.91 mm 1.91 mm trkChamber eIoni - 2 -2.66 cm -10 cm 1.67 m 2.1 MeV 657 keV 1.59 mm 3.5 mm trkChamber eIoni - 3 -2.73 cm -10 cm 1.67 m 1.62 MeV 481 keV 1.26 mm 4.76 mm trkChamber eIoni - 4 -2.72 cm -9.94 cm 1.67 m 817 keV 799 keV 1.02 mm 5.78 mm trkChamber eIoni - 5 -2.76 cm -9.91 cm 1.67 m 613 keV 204 keV 617 mum 6.4 mm trkChamber eIoni - 6 -2.73 cm -9.9 cm 1.67 m 344 keV 269 keV 509 mum 6.91 mm trkChamber eIoni - 7 -2.71 cm -9.91 cm 1.67 m 114 keV 230 keV 352 mum 7.26 mm trkChamber eIoni - 8 -2.71 cm -9.91 cm 1.67 m 0 eV 114 keV 88.2 mum 7.35 mm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 57, Parent ID = 36 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.8 cm -9.89 cm 1.67 m 80.3 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.63 cm -9.93 cm 1.68 m 65.5 keV 14.7 keV 6.67 mm 6.67 mm trkChamber compt - 2 -2.34 cm -8.76 cm 1.67 m 62.1 keV 3.38 keV 1.35 cm 2.02 cm trkChamber compt - 3 -1.92 cm -8.63 cm 1.67 m 56.4 keV 5.71 keV 4.52 mm 2.47 cm trkChamber compt - 4 -1.53 cm -9.57 cm 1.66 m 52.6 keV 3.78 keV 1.11 cm 3.57 cm trkChamber compt - 5 -1.54 cm -9.68 cm 1.67 m 50.8 keV 1.86 keV 1.47 mm 3.72 cm trkChamber compt - 6 -2.75 cm -10.2 cm 1.67 m 50.8 keV 50.8 keV 1.49 cm 5.21 cm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 56, Parent ID = 36 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.81 cm -9.89 cm 1.67 m 92.9 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.47 cm -9.97 cm 1.68 m 74.2 keV 18.7 keV 1.5 cm 1.5 cm trkChamber compt - 2 -3.25 cm -9.83 cm 1.68 m 74.2 keV 74.2 keV 8.03 mm 2.3 cm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 55, Parent ID = 36 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.04 cm -9.31 cm 1.64 m 55.3 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.04 cm -9.42 cm 1.65 m 55.3 keV 55.3 keV 4.35 mm 4.35 mm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 54, Parent ID = 36 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.04 cm -9.29 cm 1.64 m 2.6 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.06 cm -9.31 cm 1.65 m 1.76 MeV 834 keV 1.51 mm 1.51 mm trkChamber eIoni - 2 -3.06 cm -9.31 cm 1.65 m 1.71 MeV 5.88 keV 26.3 mum 1.54 mm trkChamber eBrem - 3 -3.09 cm -9.26 cm 1.65 m 1.32 MeV 385 keV 1.07 mm 2.61 mm trkChamber eIoni - 4 -3.03 cm -9.24 cm 1.65 m 484 keV 838 keV 876 mum 3.48 mm trkChamber eIoni - 5 -3 cm -9.24 cm 1.65 m 336 keV 149 keV 439 mum 3.92 mm trkChamber eIoni - 6 -2.98 cm -9.25 cm 1.65 m 184 keV 152 keV 347 mum 4.27 mm trkChamber eIoni - 7 -2.98 cm -9.25 cm 1.65 m 0 eV 184 keV 189 mum 4.46 mm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 63, Parent ID = 54 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.06 cm -9.31 cm 1.65 m 47.5 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.44 cm -8.68 cm 1.68 m 47.5 keV 47.5 keV 3.72 cm 3.72 cm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 53, Parent ID = 36 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.03 cm -9.26 cm 1.64 m 1.9 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.01 cm -9.27 cm 1.64 m 1.54 MeV 362 keV 1.17 mm 1.17 mm trkChamber eIoni - 2 -3.08 cm -9.31 cm 1.64 m 1.2 MeV 344 keV 986 mum 2.15 mm trkChamber eIoni - 3 -3.01 cm -9.35 cm 1.64 m 854 keV 343 keV 812 mum 2.97 mm trkChamber eIoni - 4 -2.98 cm -9.39 cm 1.64 m 636 keV 218 keV 636 mum 3.6 mm trkChamber eIoni - 5 -2.97 cm -9.37 cm 1.64 m 346 keV 290 keV 522 mum 4.12 mm trkChamber eIoni - 6 -2.99 cm -9.36 cm 1.64 m 189 keV 157 keV 354 mum 4.48 mm trkChamber eIoni - 7 -2.99 cm -9.36 cm 1.64 m 0 eV 189 keV 198 mum 4.68 mm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 52, Parent ID = 36 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.09 cm -9.23 cm 1.63 m 1.2 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.04 cm -9.38 cm 1.66 m 1.19 MeV 17.5 keV 2.03 cm 2.03 cm trkChamber compt - 2 -1.35 cm -9.55 cm 1.8 m 252 keV 933 keV 14.3 cm 16.3 cm trkChamber compt - 3 -5.53 mm -8.51 cm 1.79 m 164 keV 88 keV 1.72 cm 18 cm trkChamber compt - 4 -1.14 cm -8.44 cm 1.78 m 127 keV 37.8 keV 6.5 mm 18.7 cm trkChamber compt - 5 -1.17 cm -7.76 cm 1.78 m 89.2 keV 37.4 keV 6.86 mm 19.4 cm trkChamber compt - 6 -1 cm -8.29 cm 1.78 m 78.4 keV 10.8 keV 9.09 mm 20.3 cm trkChamber compt - 7 1.2 mm -8.58 cm 1.78 m 63.5 keV 14.8 keV 1.17 cm 21.5 cm trkChamber compt - 8 -1.13 cm -7.7 cm 1.8 m 58.8 keV 4.75 keV 2.3 cm 23.8 cm trkChamber compt - 9 -9.37 mm -8.35 cm 1.81 m 58.8 keV 58.8 keV 1.26 cm 25 cm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 51, Parent ID = 36 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.12 cm -9.04 cm 1.63 m 101 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.11 cm -9.57 cm 1.66 m 96.1 keV 4.8 keV 3.87 cm 3.87 cm trkChamber compt - 2 -1.96 cm -9.59 cm 1.68 m 71.7 keV 24.4 keV 1.73 cm 5.6 cm trkChamber compt - 3 -3.61 cm -8.39 cm 1.67 m 60.2 keV 11.5 keV 2.25 cm 7.85 cm trkChamber compt - 4 -3.4 cm -9.2 cm 1.66 m 58.1 keV 2.05 keV 9.94 mm 8.84 cm trkChamber compt - 5 -3.37 cm -9.26 cm 1.66 m 57.9 keV 221 eV 2.9 mm 9.13 cm trkChamber compt - 6 -3.64 cm -9.44 cm 1.64 m 57.5 keV 391 eV 2.17 cm 11.3 cm trkChamber compt - 7 -3.95 cm -9.29 cm 1.63 m 55.1 keV 2.45 keV 8.84 mm 12.2 cm trkChamber compt - 8 -3.7 cm -8.79 cm 1.62 m 55.1 keV 0 eV 7.5 mm 12.9 cm TrackerTransportation - 9 78.4 cm 1.49 m 2.5 cm 55.1 keV 0 eV 2.39 m 2.52 m WorldPVTransportation - 10 2.34 m 4.5 m -3.02 m 55.1 keV 0 eV 4.55 m 7.08 m OutOfWorldTransportation - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 50, Parent ID = 36 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.16 cm -8.6 cm 1.59 m 991 eV 0 eV 0 fm 0 fm Tracker initStep - 1 -3.15 cm -8.6 cm 1.59 m 0 eV 991 eV 884 mum 884 mum Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 49, Parent ID = 36 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.26 cm -7.62 cm 1.5 m 2.68 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -3.25 cm -7.61 cm 1.5 m 528 eV 2.15 keV 1.26 mm 1.26 mm Tracker eIoni - 2 -3.25 cm -7.61 cm 1.5 m 0 eV 528 eV 605 mum 1.87 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 48, Parent ID = 36 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.27 cm -7.53 cm 1.5 m 1.21 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -3.27 cm -7.53 cm 1.5 m 1.1 keV 116 eV 948 mum 948 mum Tracker eIoni - 2 -3.27 cm -7.53 cm 1.49 m 730 eV 367 eV 916 mum 1.86 mm Tracker eIoni - 3 -3.27 cm -7.53 cm 1.49 m 0 eV 730 eV 728 mum 2.59 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 47, Parent ID = 36 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.37 cm -6.77 cm 1.43 m 1.12 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -3.38 cm -6.77 cm 1.43 m 869 eV 250 eV 922 mum 922 mum Tracker eIoni - 2 -3.38 cm -6.77 cm 1.43 m 0 eV 869 eV 811 mum 1.73 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 46, Parent ID = 36 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.44 cm -5.94 cm 1.36 m 1.59 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -3.43 cm -5.95 cm 1.36 m 1.14 keV 449 eV 1.04 mm 1.04 mm Tracker eIoni - 2 -3.43 cm -5.94 cm 1.36 m 1.07 keV 65.2 eV 928 mum 1.97 mm Tracker eIoni - 3 -3.44 cm -5.95 cm 1.36 m 944 eV 130 eV 909 mum 2.88 mm Tracker eIoni - 4 -3.44 cm -5.95 cm 1.36 m 0 eV 944 eV 855 mum 3.73 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 45, Parent ID = 36 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.44 cm -5.84 cm 1.35 m 4.73 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -3.46 cm -5.89 cm 1.35 m 2.97 keV 1.76 keV 1.57 mm 1.57 mm Tracker eIoni - 2 -3.47 cm -5.87 cm 1.35 m 1.69 keV 1.28 keV 795 mum 2.37 mm Tracker eIoni - 3 -3.47 cm -5.87 cm 1.35 m 412 eV 1.28 keV 1.06 mm 3.43 mm Tracker eIoni - 4 -3.47 cm -5.87 cm 1.35 m 0 eV 412 eV 532 mum 3.97 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 44, Parent ID = 36 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.56 cm -4.22 cm 1.22 m 1.33 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -3.57 cm -4.23 cm 1.22 m 1.11 keV 218 eV 977 mum 977 mum Tracker eIoni - 2 -3.56 cm -4.23 cm 1.22 m 583 eV 523 eV 919 mum 1.9 mm Tracker eIoni - 3 -3.56 cm -4.23 cm 1.22 m 0 eV 583 eV 639 mum 2.54 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 43, Parent ID = 36 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.59 cm -3.69 cm 1.18 m 1.41 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -3.61 cm -3.69 cm 1.18 m 1.33 keV 74 eV 998 mum 998 mum Tracker eIoni - 2 -3.6 cm -3.7 cm 1.18 m 546 eV 785 eV 979 mum 1.98 mm Tracker eIoni - 3 -3.6 cm -3.7 cm 1.18 m 0 eV 546 eV 616 mum 2.59 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 42, Parent ID = 36 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.59 cm -3.38 cm 1.15 m 18.6 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -3.54 cm -3.6 cm 1.15 m 14.3 keV 4.31 keV 3.22 mm 3.22 mm Tracker eIoni - 2 -3.45 cm -3.42 cm 1.15 m 9.62 keV 4.64 keV 2.62 mm 5.83 mm Tracker eIoni - 3 -3.43 cm -3.37 cm 1.15 m 5.31 keV 2.99 keV 723 mum 6.56 mm Tracker eIoni - 4 -3.42 cm -3.4 cm 1.15 m 2.86 keV 1.11 keV 663 mum 7.22 mm Tracker eIoni - 5 -3.4 cm -3.42 cm 1.15 m 1.81 keV 1.05 keV 759 mum 7.98 mm Tracker eIoni - 6 -3.39 cm -3.43 cm 1.15 m 1.22 keV 589 eV 1.09 mm 9.07 mm Tracker eIoni - 7 -3.38 cm -3.44 cm 1.15 m 745 eV 476 eV 950 mum 1 cm Tracker eIoni - 8 -3.38 cm -3.44 cm 1.15 m 0 eV 745 eV 737 mum 1.08 cm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 65, Parent ID = 42 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.42 cm -3.4 cm 1.15 m 1.34 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -3.43 cm -3.4 cm 1.15 m 1.17 keV 177 eV 982 mum 982 mum Tracker eIoni - 2 -3.42 cm -3.4 cm 1.15 m 1.03 keV 136 eV 935 mum 1.92 mm Tracker eIoni - 3 -3.43 cm -3.4 cm 1.15 m 282 eV 747 eV 897 mum 2.81 mm Tracker eIoni - 4 -3.43 cm -3.4 cm 1.15 m 0 eV 282 eV 445 mum 3.26 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 64, Parent ID = 42 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.43 cm -3.37 cm 1.15 m 1.32 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -3.44 cm -3.37 cm 1.15 m 481 eV 837 eV 975 mum 975 mum Tracker eIoni - 2 -3.44 cm -3.37 cm 1.15 m 0 eV 481 eV 576 mum 1.55 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 41, Parent ID = 36 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.62 cm -2.45 cm 1.08 m 2.64 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -3.64 cm -2.44 cm 1.08 m 1.76 keV 882 eV 1.25 mm 1.25 mm Tracker eIoni - 2 -3.64 cm -2.44 cm 1.08 m 378 eV 1.38 keV 1.08 mm 2.33 mm Tracker eIoni - 3 -3.64 cm -2.44 cm 1.08 m 0 eV 378 eV 510 mum 2.84 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 40, Parent ID = 36 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.65 cm -1.77 cm 1.02 m 4.19 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.64 cm -1.78 cm 1.02 m 4.19 MeV 0 eV 1.7 mm 1.7 mm TrackerTransportation - 2 -878 mum -7.46 cm 1.62 m 4.19 MeV 0 eV 60.4 cm 60.5 cm trkChamberTransportation - 3 3.95 mm -8.23 cm 1.71 m 4.1 MeV 93.1 keV 8.21 cm 68.7 cm trkChamber compt - 4 7.92 mm -9.75 cm 1.8 m 3.42 MeV 680 keV 9.13 cm 77.9 cm trkChamber compt - 5 1.06 cm -9.83 cm 1.81 m 557 keV 0 eV 1.06 cm 78.9 cm trkChamber compt - 6 3.35 cm -2.83 cm 1.82 m 557 keV 0 eV 7.59 cm 86.5 cm TrackerTransportation - 7 86.3 cm 2.5 m 2.49 m 557 keV 0 eV 2.74 m 3.61 m WorldPVTransportation - 8 1.52 m 4.5 m 3.01 m 557 keV 0 eV 2.17 m 5.78 m OutOfWorldTransportation - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 66, Parent ID = 40 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 1.06 cm -9.83 cm 1.81 m 2.86 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 1.06 cm -9.84 cm 1.81 m 1.31 MeV 256 keV 811 mum 811 mumtrkChamber eIoni - 2 1.1 cm -9.85 cm 1.81 m 1.05 MeV 253 keV 868 mum 1.68 mm trkChamber eIoni - 3 1.16 cm -9.83 cm 1.81 m 783 keV 270 keV 739 mum 2.42 mm trkChamber eIoni - 4 1.18 cm -9.85 cm 1.81 m 574 keV 209 keV 600 mum 3.02 mm trkChamber eIoni - 5 1.22 cm -9.85 cm 1.81 m 308 keV 266 keV 489 mum 3.51 mm trkChamber eIoni - 6 1.22 cm -9.83 cm 1.81 m 153 keV 156 keV 326 mum 3.83 mm trkChamber eIoni - 7 1.22 cm -9.84 cm 1.81 m 0 eV 153 keV 141 mum 3.97 mm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 67, Parent ID = 66 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 1.06 cm -9.84 cm 1.81 m 1.3 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 1.06 cm -9.81 cm 1.81 m 946 keV 353 keV 864 mum 864 mumtrkChamber eIoni - 2 1.11 cm -9.79 cm 1.81 m 691 keV 255 keV 684 mum 1.55 mm trkChamber eIoni - 3 1.14 cm -9.83 cm 1.81 m 519 keV 172 keV 551 mum 2.1 mm trkChamber eIoni - 4 1.15 cm -9.8 cm 1.81 m 283 keV 236 keV 458 mum 2.56 mm trkChamber eIoni - 5 1.15 cm -9.81 cm 1.81 m 119 keV 164 keV 307 mum 2.86 mm trkChamber eIoni - 6 1.15 cm -9.8 cm 1.81 m 0 eV 119 keV 95.1 mum 2.96 mm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 39, Parent ID = 36 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.65 cm -1.76 cm 1.02 m 10.3 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.65 cm -1.76 cm 1.02 m 10.3 keV 10.3 keV 45.2 mum 45.2 mumtrkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 38, Parent ID = 36 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.64 cm -1.73 cm 1.01 m 1.38 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.61 cm -1.76 cm 1.02 m 1.38 MeV 0 eV 1.04 cm 1.04 cm TrackerTransportation - 2 -1.7 cm -3.88 cm 1.62 m 1.38 MeV 0 eV 60.1 cm 61.1 cm trkChamberTransportation - 3 -1.55 cm -4.05 cm 1.67 m 273 keV 0 eV 4.86 cm 66 cm trkChamber compt - 4 -8.22 cm -9.19 cm 1.62 m 273 keV 0 eV 9.72 cm 75.7 cm TrackerTransportation - 5 -2.28 m -1.78 m 2.5 cm 273 keV 0 eV 3.2 m 3.96 m WorldPVTransportation - 6 -4.5 m -3.5 m -1.59 m 273 keV 0 eV 3.24 m 7.19 m OutOfWorldTransportation - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 68, Parent ID = 38 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -1.55 cm -4.05 cm 1.67 m 1.11 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -1.57 cm -4.07 cm 1.67 m 495 keV 611 keV 766 mum 766 mumtrkChamber eIoni - 2 -1.57 cm -4.04 cm 1.67 m 344 keV 150 keV 445 mum 1.21 mm trkChamber eIoni - 3 -1.55 cm -4.04 cm 1.67 m 155 keV 189 keV 353 mum 1.56 mm trkChamber eIoni - 4 -1.54 cm -4.04 cm 1.67 m 0 eV 155 keV 144 mum 1.71 mm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 37, Parent ID = 36 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.56 cm -1.69 cm 1 m 471 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.56 cm -1.69 cm 1 m 466 keV 5.68 keV 141 mum 141 mumtrkChamber compt - 2 -3.28 cm -1.46 cm 1.02 m 466 keV 0 eV 2.12 cm 2.13 cm TrackerTransportation - 3 4.77 cm 5.38 cm 1.62 m 466 keV 0 eV 60.9 cm 63.1 cm trkChamberTransportation - 4 5.61 cm 6.09 cm 1.69 m 182 keV 284 keV 6.36 cm 69.4 cm trkChamber compt - 5 3.16 cm 6.18 cm 1.67 m 110 keV 71.9 keV 3.13 cm 72.5 cm trkChamber compt - 6 4.5 cm 6.52 cm 1.67 m 106 keV 3.59 keV 1.39 cm 73.9 cm trkChamber compt - 7 9.75 cm 4.75 cm 1.68 m 101 keV 5.73 keV 5.66 cm 79.6 cm trkChamber compt - 8 9.8 cm 4.77 cm 1.68 m 101 keV 101 keV 624 mum 79.7 cm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 35, Parent ID = 18 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.52 cm -1.5 cm 98.7 cm 48.4 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.52 cm -1.51 cm 98.8 cm 5.55 MeV 452 keV 1.24 mm 1.24 mm trkChamber eBrem - 2 -3.48 cm -1.49 cm 99 cm 4.2 MeV 1.33 MeV 2.38 mm 3.61 mm trkChamber eBrem - 3 -3.4 cm -1.57 cm 99.2 cm 3.28 MeV 920 keV 2.3 mm 5.91 mm trkChamber eIoni - 4 -3.5 cm -1.72 cm 99.2 cm 2.54 MeV 741 keV 1.85 mm 7.76 mm trkChamber eIoni - 5 -3.54 cm -1.85 cm 99.2 cm 2.03 MeV 503 keV 1.48 mm 9.24 mm trkChamber eIoni - 6 -3.54 cm -1.75 cm 99.1 cm 1.57 MeV 460 keV 1.23 mm 1.05 cm trkChamber eIoni - 7 -3.55 cm -1.68 cm 99.1 cm 1.07 MeV 498 keV 1 mm 1.15 cm trkChamber eIoni - 8 -3.56 cm -1.72 cm 99 cm 783 keV 291 keV 749 mum 1.22 cm trkChamber eIoni - 9 -3.55 cm -1.76 cm 99 cm 585 keV 198 keV 600 mum 1.28 cm trkChamber eIoni - 10 -3.54 cm -1.8 cm 99 cm 401 keV 184 keV 495 mum 1.33 cm trkChamber eIoni - 11 -3.53 cm -1.83 cm 99 cm 245 keV 156 keV 390 mum 1.37 cm trkChamber eIoni - 12 -3.52 cm -1.84 cm 99 cm 3.95 keV 242 keV 271 mum 1.4 cm trkChamber eIoni - 13 -3.52 cm -1.84 cm 99 cm 0 eV 3.95 keV 2.76 mum 1.4 cm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 70, Parent ID = 35 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.48 cm -1.49 cm 99 cm 28.9 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.44 cm -1.48 cm 99.2 cm 28.9 keV 28.9 keV 1.87 mm 1.87 mm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 69, Parent ID = 35 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.52 cm -1.51 cm 98.8 cm 42.4 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.74 cm -2.23 cm 1.02 m 42.4 MeV 0 eV 3.76 cm 3.76 cm TrackerTransportation - 2 -7.36 cm -13.9 cm 1.62 m 42.4 MeV 0 eV 61.2 cm 65 cm trkChamberTransportation - 3 -8.56 cm -17.7 cm 1.82 m 42.4 MeV 0 eV 20.4 cm 85.4 cm TrackerTransportation - 4 -12.2 cm -29.4 cm 2.42 m 42.4 MeV 0 eV 61.2 cm 1.47 m trkChamberTransportation - 5 -13.4 cm -33.2 cm 2.62 m 42.4 MeV 0 eV 20.4 cm 1.67 m TrackerTransportation - 6 -17 cm -44.9 cm 3.23 m 42.4 MeV 0 eV 61.2 cm 2.28 m trkChamberTransportation - 7 -17.3 cm -45.9 cm 3.28 m 0 eV 0 eV 5.49 cm 2.34 m trkChamber conv - -********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 72, Parent ID = 69 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -17.3 cm -45.9 cm 3.28 m 23.8 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -17.3 cm -45.9 cm 3.28 m 23.4 MeV 294 keV 693 mum 693 mumtrkChamber eBrem - 2 -17.3 cm -46 cm 3.29 m 21.3 MeV 2.09 MeV 5.91 mm 6.6 mm trkChamber eBrem - 3 -17.3 cm -46 cm 3.29 m 20.9 MeV 405 keV 1.18 mm 7.78 mm trkChamber eBrem - 4 -17.3 cm -46 cm 3.29 m 20.5 MeV 338 keV 730 mum 8.51 mm trkChamber eBrem - 5 -17.2 cm -46.4 cm 3.3 m 16.8 MeV 3.74 MeV 1.04 cm 1.89 cm trkChamber eIoni - 6 -17.1 cm -46.5 cm 3.3 m 13.4 MeV 3.32 MeV 8.55 mm 2.74 cm trkChamber eIoni - 7 -16.9 cm -46.6 cm 3.31 m 10.9 MeV 2.56 MeV 6.93 mm 3.44 cm trkChamber eIoni - 8 -16.9 cm -46.5 cm 3.32 m 7.84 MeV 3.03 MeV 5.67 mm 4 cm trkChamber eIoni - 9 -16.8 cm -46.6 cm 3.32 m 6.21 MeV 1.62 MeV 4.18 mm 4.42 cm trkChamber eIoni - 10 -16.7 cm -46.8 cm 3.32 m 4.69 MeV 1.52 MeV 3.37 mm 4.76 cm trkChamber eIoni - 11 -16.6 cm -46.8 cm 3.33 m 3.62 MeV 1.07 MeV 2.61 mm 5.02 cm trkChamber eIoni - 12 -16.6 cm -46.8 cm 3.33 m 2.94 MeV 678 keV 2.07 mm 5.23 cm trkChamber eIoni - 13 -16.6 cm -46.6 cm 3.33 m 2.33 MeV 616 keV 1.72 mm 5.4 cm trkChamber eIoni - 14 -16.6 cm -46.5 cm 3.33 m 1.83 MeV 499 keV 1.4 mm 5.54 cm trkChamber eIoni - 15 -16.5 cm -46.5 cm 3.33 m 1.45 MeV 381 keV 1.15 mm 5.65 cm trkChamber eIoni - 16 -16.5 cm -46.4 cm 3.33 m 962 keV 484 keV 948 mum 5.75 cm trkChamber eIoni - 17 -16.5 cm -46.4 cm 3.33 m 149 keV 167 keV 592 mum 5.81 cm trkChamber eBrem - 18 -16.5 cm -46.4 cm 3.33 m 0 eV 149 keV 129 mum 5.82 cm trkChamber eIoni - 19 -16.5 cm -46.4 cm 3.33 m 0 eV 0 eV 0 fm 5.82 cm trkChamber annihil - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 79, Parent ID = 72 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -16.5 cm -46.4 cm 3.33 m 511 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -18.1 cm -43.6 cm 3.27 m 485 keV 26.2 keV 6.61 cm 6.61 cm trkChamber compt - 2 -19 cm -42.8 cm 3.26 m 482 keV 2.59 keV 1.71 cm 8.33 cm trkChamber compt - 3 -20.7 cm -40.7 cm 3.23 m 232 keV 250 keV 3.67 cm 12 cm trkChamber compt - 4 -20.9 cm -40.3 cm 3.24 m 134 keV 98.2 keV 7.88 mm 12.8 cm trkChamber compt - 5 -20 cm -39.8 cm 3.23 m 134 keV 0 eV 1.67 cm 14.5 cm TrackerTransportation - 6 20.8 cm -17.4 cm 2.62 m 134 keV 0 eV 75.9 cm 90.4 cm trkChamberTransportation - 7 22.6 cm -16.4 cm 2.6 m 88.2 keV 46.1 keV 3.34 cm 93.7 cm trkChamber compt - 8 20.3 cm -17.1 cm 2.62 m 88.2 keV 0 eV 3.54 cm 97.2 cm TrackerTransportation - 9 -30.8 cm -33.6 cm 3.23 m 88.2 keV 0 eV 80.5 cm 1.78 m trkChamberTransportation - 10 -31.4 cm -33.8 cm 3.23 m 68.6 keV 19.6 keV 8.91 mm 1.79 m trkChamber compt - 11 -31.5 cm -33.7 cm 3.23 m 68.6 keV 0 eV 6.87 mm 1.79 m TrackerTransportation - 12 -41.6 cm -21.4 cm 2.62 m 68.6 keV 0 eV 62.1 cm 2.41 m trkChamberTransportation - 13 -41.6 cm -21.4 cm 2.62 m 57.4 keV 11.2 keV 1.81 mm 2.42 m trkChamber compt - 14 -41.8 cm -21.3 cm 2.62 m 57.4 keV 0 eV 2.81 mm 2.42 m TrackerTransportation - 15 -1.17 m -11.1 cm 3.23 m 57.4 keV 0 eV 96.4 cm 3.38 m trkChamberTransportation - 16 -1.17 m -10.9 cm 3.23 m 57.4 keV 57.4 keV 1.2 cm 3.39 m trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 78, Parent ID = 72 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -16.5 cm -46.4 cm 3.33 m 511 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -16.1 cm -47 cm 3.34 m 490 keV 21.4 keV 1.4 cm 1.4 cm trkChamber compt - 2 -16.1 cm -47 cm 3.34 m 378 keV 111 keV 18.1 mum 1.4 cm trkChamber compt - 3 -15.1 cm -46 cm 3.35 m 365 keV 13.3 keV 1.81 cm 3.21 cm trkChamber compt - 4 -15.1 cm -46 cm 3.35 m 286 keV 78.5 keV 34.1 mum 3.21 cm trkChamber compt - 5 -15.3 cm -45.6 cm 3.35 m 286 keV 286 keV 4.49 mm 3.66 cm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 77, Parent ID = 72 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -16.5 cm -46.4 cm 3.33 m 646 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -12.9 cm -45.5 cm 3.32 m 404 keV 241 keV 3.86 cm 3.86 cm trkChamber compt - 2 -1.52 cm -39.8 cm 3.42 m 404 keV 0 eV 16.8 cm 20.6 cm TrackerTransportation - 3 61 cm -8.19 cm 4.03 m 404 keV 0 eV 92.2 cm 1.13 m trkChamberTransportation - 4 64.3 cm -6.51 cm 4.06 m 211 keV 193 keV 4.93 cm 1.18 m trkChamber compt - 5 64.3 cm -6.86 cm 4.06 m 135 keV 76.3 keV 3.7 mm 1.18 m trkChamber compt - 6 63.6 cm -6.59 cm 4.06 m 88.6 keV 46.3 keV 7.55 mm 1.19 m trkChamber compt - 7 63.9 cm -6.73 cm 4.06 m 86.3 keV 2.3 keV 2.65 mm 1.19 m trkChamber compt - 8 64.1 cm -7.18 cm 4.06 m 85.2 keV 1.11 keV 5.17 mm 1.2 m trkChamber compt - 9 64.4 cm -12.4 cm 4.07 m 84 keV 1.13 keV 5.39 cm 1.25 m trkChamber compt - 10 65.1 cm -13.9 cm 4.08 m 76.9 keV 7.11 keV 1.88 cm 1.27 m trkChamber compt - 11 65.1 cm -13.9 cm 4.08 m 74.1 keV 2.78 keV 560 mum 1.27 m trkChamber compt - 12 66.3 cm -14.4 cm 4.09 m 74.1 keV 74.1 keV 1.52 cm 1.29 m trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 76, Parent ID = 72 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -17.3 cm -46 cm 3.29 m 16.3 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -17.3 cm -46 cm 3.29 m 16.3 keV 16.3 keV 222 mum 222 mumtrkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 75, Parent ID = 72 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -17.3 cm -46 cm 3.29 m 10.7 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -17.3 cm -46 cm 3.29 m 10.7 keV 10.7 keV 132 mum 132 mumtrkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 74, Parent ID = 72 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -17.3 cm -46 cm 3.29 m 36.7 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -17.3 cm -46 cm 3.29 m 36.7 keV 36.7 keV 4.91 mum 4.91 mumtrkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 73, Parent ID = 72 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -17.3 cm -45.9 cm 3.28 m 115 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -17.9 cm -47 cm 3.34 m 102 keV 13 keV 6.12 cm 6.12 cm trkChamber compt - 2 -14.3 cm -45 cm 3.37 m 100 keV 1.73 keV 5.02 cm 11.1 cm trkChamber compt - 3 -13.9 cm -44.4 cm 3.38 m 88.4 keV 11.8 keV 1.1 cm 12.2 cm trkChamber compt - 4 -13.9 cm -44.4 cm 3.38 m 77.6 keV 10.8 keV 71.7 mum 12.2 cm trkChamber compt - 5 -14.5 cm -44.5 cm 3.35 m 76.7 keV 903 eV 2.37 cm 14.6 cm trkChamber compt - 6 -14.7 cm -43.6 cm 3.32 m 76.7 keV 76.7 keV 3.02 cm 17.6 cm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 71, Parent ID = 69 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -17.3 cm -45.9 cm 3.28 m 17.5 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -17.2 cm -45.9 cm 3.29 m 13.2 MeV 4.35 MeV 8.81 mm 8.81 mm trkChamber eIoni - 2 -17.4 cm -46 cm 3.29 m 10.1 MeV 1.69 MeV 4.3 mm 1.31 cm trkChamber eBrem - 3 -17.4 cm -46 cm 3.3 m 8.2 MeV 1.86 MeV 5.17 mm 1.83 cm trkChamber eIoni - 4 -17.4 cm -46.1 cm 3.3 m 5.38 MeV 2.83 MeV 4.27 mm 2.25 cm trkChamber eIoni - 5 -17.5 cm -46.1 cm 3.3 m 4.36 MeV 1.02 MeV 2.88 mm 2.54 cm trkChamber eIoni - 6 -17.7 cm -46.2 cm 3.3 m 3.49 MeV 873 keV 2.38 mm 2.78 cm trkChamber eIoni - 7 -17.8 cm -46.4 cm 3.31 m 2.66 MeV 830 keV 1.95 mm 2.98 cm trkChamber eIoni - 8 -17.8 cm -46.5 cm 3.31 m 1.95 MeV 711 keV 1.54 mm 3.13 cm trkChamber eIoni - 9 -17.7 cm -46.5 cm 3.31 m 1.49 MeV 454 keV 1.19 mm 3.25 cm trkChamber eIoni - 10 -17.7 cm -46.4 cm 3.31 m 1.15 MeV 346 keV 961 mum 3.35 cm trkChamber eIoni - 11 -17.7 cm -46.4 cm 3.31 m 876 keV 270 keV 786 mum 3.42 cm trkChamber eIoni - 12 -17.7 cm -46.4 cm 3.31 m 628 keV 248 keV 648 mum 3.49 cm trkChamber eIoni - 13 -17.7 cm -46.4 cm 3.31 m 406 keV 223 keV 518 mum 3.54 cm trkChamber eIoni - 14 -17.7 cm -46.4 cm 3.31 m 222 keV 183 keV 393 mum 3.58 cm trkChamber eIoni - 15 -17.7 cm -46.4 cm 3.31 m 52.5 keV 170 keV 245 mum 3.6 cm trkChamber eIoni - 16 -17.7 cm -46.4 cm 3.31 m 0 eV 52.5 keV 26 mum 3.61 cm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 80, Parent ID = 71 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -17.4 cm -46 cm 3.29 m 1.44 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -19.2 cm -49.4 cm 3.42 m 1.44 MeV 0 eV 13.9 cm 13.9 cm TrackerTransportation - 2 -27.5 cm -64.5 cm 4.03 m 1.44 MeV 0 eV 62.4 cm 76.3 cm trkChamberTransportation - 3 -27.8 cm -65 cm 4.05 m 1.24 MeV 199 keV 2.23 cm 78.5 cm trkChamber compt - 4 -27.6 cm -68.6 cm 4.11 m 535 keV 704 keV 6.96 cm 85.5 cm trkChamber compt - 5 -28.3 cm -69 cm 4.11 m 505 keV 30.5 keV 8.07 mm 86.3 cm trkChamber compt - 6 -30.5 cm -70.3 cm 4.13 m 261 keV 243 keV 3.27 cm 89.6 cm trkChamber compt - 7 -29.8 cm -73.5 cm 4.12 m 150 keV 112 keV 3.52 cm 93.1 cm trkChamber compt - 8 -29.9 cm -73.5 cm 4.12 m 96.2 keV 53.4 keV 1.84 mm 93.3 cm trkChamber compt - 9 -29.8 cm -73.7 cm 4.11 m 84.7 keV 11.6 keV 9.33 mm 94.2 cm trkChamber compt - 10 -30.4 cm -74.4 cm 4.11 m 81.6 keV 3.05 keV 9 mm 95.1 cm trkChamber compt - 11 -31 cm -74.7 cm 4.1 m 78.8 keV 2.81 keV 9.54 mm 96.1 cm trkChamber compt - 12 -30.9 cm -80.2 cm 4.04 m 61.9 keV 16.9 keV 7.95 cm 1.04 m trkChamber compt - 13 -30.7 cm -80 cm 4.07 m 61.9 keV 61.9 keV 2.15 cm 1.06 m trkChamber phot + 0 -3.76 cm -6.63 mm 86.5 cm 1.17 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -3.57 cm -1.1 cm 90.6 cm 1.11 MeV 59.1 keV 4.08 cm 4.08 cm trkChamber compt + 2 -3.38 cm -1.43 cm 91.6 cm 300 keV 808 keV 1.15 cm 5.22 cm trkChamber compt + 3 -2.27 cm 7.13 mm 91.5 cm 192 keV 107 keV 2.42 cm 7.64 cm trkChamber compt + 4 1.49 cm -9.11 mm 92.7 cm 160 keV 32.7 keV 4.27 cm 11.9 cm trkChamber compt + 5 3.03 cm -6.39 mm 91.4 cm 160 keV 160 keV 2 cm 13.9 cm trkChamber phot ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 17, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.79 cm -6.01 mm 84.3 cm 22.8 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.91 cm -8.86 mm 92.6 cm 5.64 MeV 0 eV 8.27 cm 8.27 cm trkChamber compt - 2 -6.61 cm 3.88 mm 1 m 5.09 MeV 549 keV 8.3 cm 16.6 cm trkChamber compt - 3 -7.09 cm 5.72 mm 1.02 m 5.09 MeV 0 eV 2.24 cm 18.8 cm TrackerTransportation - 4 -20.2 cm 5.63 cm 1.62 m 5.09 MeV 0 eV 61.6 cm 80.4 cm trkChamberTransportation - 5 -20.4 cm 5.73 cm 1.64 m 508 keV 0 eV 1.27 cm 81.7 cm trkChamber compt - 6 -21.2 cm 7.71 cm 1.64 m 461 keV 46.9 keV 2.11 cm 83.8 cm trkChamber compt - 7 -24.6 cm 11.1 cm 1.63 m 446 keV 15.2 keV 4.84 cm 88.7 cm trkChamber compt - 8 -25.4 cm 12.6 cm 1.62 m 446 keV 0 eV 1.82 cm 90.5 cm TrackerTransportation - 9 -1.59 m 2.5 m 1.15 m 446 keV 0 eV 2.76 m 3.67 m WorldPVTransportation - 10 -2.71 m 4.5 m 74.4 cm 446 keV 0 eV 2.33 m 6 m OutOfWorldTransportation - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 82, Parent ID = 17 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -20.4 cm 5.73 cm 1.64 m 4.58 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -20.4 cm 5.79 cm 1.64 m 3.67 MeV 908 keV 2.49 mm 2.49 mm trkChamber eIoni - 2 -20.5 cm 5.83 cm 1.64 m 2.97 MeV 701 keV 2.04 mm 4.53 mm trkChamber eIoni - 3 -20.6 cm 5.93 cm 1.64 m 2.43 MeV 543 keV 1.7 mm 6.23 mm trkChamber eIoni - 4 -20.7 cm 5.96 cm 1.64 m 1.79 MeV 644 keV 1.43 mm 7.66 mm trkChamber eIoni - 5 -20.8 cm 6.02 cm 1.64 m 1.3 MeV 425 keV 963 mum 8.62 mm trkChamber eBrem - 6 -20.8 cm 6.02 cm 1.64 m 1.28 MeV 3.9 keV 13.4 mum 8.63 mm trkChamber eBrem - 7 -20.8 cm 6.06 cm 1.64 m 956 keV 320 keV 852 mum 9.49 mm trkChamber eIoni - 8 -20.8 cm 6.09 cm 1.64 m 667 keV 289 keV 689 mum 1.02 cm trkChamber eIoni - 9 -20.9 cm 6.07 cm 1.64 m 460 keV 207 keV 539 mum 1.07 cm trkChamber eIoni - 10 -20.9 cm 6.05 cm 1.64 m 284 keV 176 keV 425 mum 1.11 cm trkChamber eIoni - 11 -20.9 cm 6.06 cm 1.64 m 66.6 keV 217 keV 307 mum 1.14 cm trkChamber eIoni - 12 -20.9 cm 6.06 cm 1.64 m 0 eV 66.6 keV 37.5 mum 1.15 cm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 84, Parent ID = 82 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -20.8 cm 6.02 cm 1.64 m 21.3 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -20.6 cm 6.16 cm 1.64 m 21.3 keV 21.3 keV 2.16 mm 2.16 mm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 83, Parent ID = 82 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -20.8 cm 6.02 cm 1.64 m 59.3 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -20.3 cm 6.66 cm 1.66 m 51.6 keV 7.74 keV 1.79 cm 1.79 cm trkChamber compt - 2 -19.7 cm 3.93 cm 1.66 m 51.6 keV 51.6 keV 2.8 cm 4.6 cm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 81, Parent ID = 17 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.91 cm -8.86 mm 92.6 cm 17.1 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.97 cm -1.03 cm 93.4 cm 11.6 MeV 3.03 MeV 8.05 mm 8.05 mm trkChamber eBrem - 2 -4.01 cm -9.11 mm 93.9 cm 9.18 MeV 2.39 MeV 5.91 mm 1.4 cm trkChamber eIoni - 3 -4.09 cm -8.99 mm 94.2 cm 5.66 MeV 1.26 MeV 2.67 mm 1.66 cm trkChamber eIoni - 4 -3.96 cm -8.2 mm 94.4 cm 4.45 MeV 1.22 MeV 3.02 mm 1.96 cm trkChamber eIoni - 5 -3.84 cm -8.77 mm 94.6 cm 3.63 MeV 813 keV 2.43 mm 2.21 cm trkChamber eIoni - 6 -3.79 cm -8.6 mm 94.8 cm 2.98 MeV 656 keV 2.02 mm 2.41 cm trkChamber eIoni - 7 -3.66 cm -7.98 mm 94.9 cm 2.35 MeV 624 keV 1.7 mm 2.58 cm trkChamber eIoni - 8 -3.54 cm -7.65 mm 94.9 cm 1.83 MeV 522 keV 1.39 mm 2.72 cm trkChamber eIoni - 9 -3.46 cm -7.59 mm 95 cm 1.46 MeV 369 keV 1.13 mm 2.83 cm trkChamber eIoni - 10 -3.45 cm -7.82 mm 95.1 cm 934 keV 531 keV 948 mum 2.93 cm trkChamber eIoni - 11 -3.5 cm -7.96 mm 95.1 cm 700 keV 234 keV 678 mum 2.99 cm trkChamber eIoni - 12 -3.47 cm -7.82 mm 95.1 cm 459 keV 241 keV 556 mum 3.05 cm trkChamber eIoni - 13 -3.44 cm -7.96 mm 95.1 cm 285 keV 174 keV 425 mum 3.09 cm trkChamber eIoni - 14 -3.43 cm -8.06 mm 95.1 cm 112 keV 173 keV 308 mum 3.12 cm trkChamber eIoni - 15 -3.43 cm -8.05 mm 95.1 cm 0 eV 112 keV 85.6 mum 3.13 cm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 86, Parent ID = 81 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -4.09 cm -8.99 mm 94.2 cm 2.26 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -4.18 cm -8.66 mm 94.3 cm 1.8 MeV 463 keV 1.34 mm 1.34 mm trkChamber eIoni - 2 -4.25 cm -8.69 mm 94.3 cm 1.39 MeV 405 keV 1.11 mm 2.46 mm trkChamber eIoni - 3 -4.24 cm -7.89 mm 94.4 cm 1.09 MeV 302 keV 910 mum 3.37 mm trkChamber eIoni - 4 -4.21 cm -7.27 mm 94.4 cm 842 keV 247 keV 757 mum 4.12 mm trkChamber eIoni - 5 -4.18 cm -7.71 mm 94.4 cm 560 keV 282 keV 630 mum 4.75 mm trkChamber eIoni - 6 -4.21 cm -7.61 mm 94.4 cm 376 keV 183 keV 481 mum 5.24 mm trkChamber eIoni - 7 -4.22 cm -7.39 mm 94.4 cm 144 keV 232 keV 374 mum 5.61 mm trkChamber eIoni - 8 -4.22 cm -7.39 mm 94.4 cm 0 eV 144 keV 129 mum 5.74 mm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 85, Parent ID = 81 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.97 cm -1.03 cm 93.4 cm 2.55 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -4.26 cm -1.21 cm 1.02 m 2.55 MeV 0 eV 9.15 cm 9.15 cm TrackerTransportation - 2 -6.11 cm -2.41 cm 1.62 m 2.55 MeV 0 eV 60 cm 69.2 cm trkChamberTransportation - 3 -6.13 cm -2.43 cm 1.63 m 1.19 MeV 0 eV 8.38 mm 70 cm trkChamber compt - 4 -5.89 cm -2.57 cm 1.64 m 220 keV 973 keV 4.51 mm 70.5 cm trkChamber compt - 5 -6.95 cm -2.76 cm 1.62 m 220 keV 0 eV 1.61 cm 72.1 cm TrackerTransportation - 6 -1.5 m -27.4 cm 2.5 cm 220 keV 0 eV 2.16 m 2.88 m WorldPVTransportation - 7 -4.5 m -79.1 cm -3.34 m 220 keV 0 eV 4.54 m 7.42 m OutOfWorldTransportation - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 87, Parent ID = 85 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -6.13 cm -2.43 cm 1.63 m 1.36 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -6.14 cm -2.44 cm 1.63 m 1.06 MeV 305 keV 896 mum 896 mumtrkChamber eIoni - 2 -6.16 cm -2.43 cm 1.63 m 794 keV 264 keV 741 mum 1.64 mm trkChamber eIoni - 3 -6.2 cm -2.46 cm 1.63 m 584 keV 210 keV 605 mum 2.24 mm trkChamber eIoni - 4 -6.19 cm -2.44 cm 1.63 m 398 keV 186 keV 494 mum 2.74 mm trkChamber eIoni - 5 -6.2 cm -2.44 cm 1.64 m 215 keV 183 keV 388 mum 3.12 mm trkChamber eIoni - 6 -6.19 cm -2.45 cm 1.64 m 14.8 keV 200 keV 236 mum 3.36 mm trkChamber eIoni - 7 -6.19 cm -2.45 cm 1.64 m 0 eV 14.8 keV 5.65 mum 3.37 mm trkChamber eIoni + 0 -3.79 cm -5.68 mm 85.7 cm 237 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -3.73 cm -8.22 mm 87.9 cm 225 keV 11.8 keV 2.26 cm 2.26 cm trkChamber compt + 2 -3.23 cm -3.76 mm 89.5 cm 213 keV 12.2 keV 1.67 cm 3.93 cm trkChamber compt + 3 -6.08 mm 2.74 cm 92.6 cm 198 keV 14.4 keV 5.11 cm 9.04 cm trkChamber compt + 4 -7.88 mm 4.81 cm 94.7 cm 176 keV 21.9 keV 3.01 cm 12.1 cm trkChamber compt + 5 5.2 mm 9.29 cm 95 cm 107 keV 69.5 keV 4.68 cm 16.7 cm trkChamber compt + 6 -6.9 cm 1.27 cm 92.6 cm 96.8 keV 10 keV 11.2 cm 27.9 cm trkChamber compt + 7 -8.98 cm 6.06 mm 87 cm 89.2 keV 7.6 keV 6.03 cm 33.9 cm trkChamber compt + 8 -9.03 cm 5.42 mm 87 cm 73.2 keV 16.1 keV 834 mum 34 cm trkChamber compt + 9 -5.95 cm 1.04 cm 83.7 cm 73.2 keV 73.2 keV 4.51 cm 38.5 cm trkChamber phot ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 16, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.8 cm -5.78 mm 83.7 cm 136 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.8 cm -5.88 mm 83.9 cm 115 keV 20.9 keV 2.58 mm 2.58 mm trkChamber compt - 2 -1.23 cm 3.46 cm 85.7 cm 90.6 keV 24.6 keV 5.12 cm 5.38 cm trkChamber compt - 3 -9.63 mm 1.94 cm 87.4 cm 90.3 keV 338 eV 2.31 cm 7.69 cm trkChamber compt - 4 -6.33 mm 1.15 cm 88.2 cm 71.3 keV 19 keV 1.13 cm 8.81 cm trkChamber compt - 5 -3.22 cm 1.23 cm 87.3 cm 64.2 keV 7.08 keV 2.73 cm 11.5 cm trkChamber compt - 6 -3.72 cm 2.26 cm 88 cm 64.2 keV 64.2 keV 1.34 cm 12.9 cm trkChamber phot + 0 -3.81 cm -5.41 mm 85 cm 26.3 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -3.71 cm -1.12 cm 1.02 m 26.3 MeV 0 eV 17.5 cm 17.5 cm TrackerTransportation + 2 -3.39 cm -3.11 cm 1.62 m 26.3 MeV 0 eV 60 cm 77.6 cm trkChamberTransportation + 3 -3.28 cm -3.78 cm 1.82 m 26.3 MeV 0 eV 20 cm 97.6 cm TrackerTransportation + 4 -2.95 cm -5.77 cm 2.42 m 26.3 MeV 0 eV 60 cm 1.58 m trkChamberTransportation + 5 -2.84 cm -6.43 cm 2.62 m 26.3 MeV 0 eV 20 cm 1.78 m TrackerTransportation + 6 -2.52 cm -8.42 cm 3.23 m 26.3 MeV 0 eV 60 cm 2.38 m trkChamberTransportation + 7 -2.51 cm -8.45 cm 3.24 m 0 eV 0 eV 1.02 cm 2.39 m trkChamber conv + +********************************************************************************************************* +* G4Track Information: Particle = e+, Track ID = 77, Parent ID = 16 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.51 cm -8.45 cm 3.24 m 7.39 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.49 cm -8.4 cm 3.24 m 6.35 MeV 1.03 MeV 3.24 mm 3.24 mm trkChamber eBrem + 2 -2.55 cm -8.58 cm 3.24 m 5.04 MeV 1.3 MeV 3.44 mm 6.68 mm trkChamber eIoni + 3 -2.52 cm -8.59 cm 3.24 m 4.08 MeV 970 keV 2.79 mm 9.46 mm trkChamber eIoni + 4 -2.55 cm -8.79 cm 3.25 m 2.76 MeV 1.31 MeV 2.3 mm 1.18 cm trkChamber eIoni + 5 -2.49 cm -8.83 cm 3.24 m 0 eV 330 keV 713 mum 1.25 cm trkChamber annihil + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 80, Parent ID = 77 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.49 cm -8.83 cm 3.24 m 1.18 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -8.53 mm -11.7 cm 3.23 m 1.18 MeV 0 eV 3.85 cm 3.85 cm TrackerTransportation + 2 48.7 cm -98 cm 2.62 m 1.18 MeV 0 eV 1.16 m 1.2 m trkChamberTransportation + 3 51.5 cm -1.03 m 2.59 m 374 keV 803 keV 6.58 cm 1.27 m trkChamber compt + 4 49.9 cm -1.07 m 2.62 m 374 keV 0 eV 5.33 cm 1.32 m TrackerTransportation + 5 -11.9 cm -2.5 m 3.91 m 374 keV 0 eV 2.02 m 3.34 m WorldPVTransportation + 6 -1.84 m -6.49 m 7.5 m 374 keV 0 eV 5.63 m 8.98 m OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 79, Parent ID = 77 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.49 cm -8.83 cm 3.24 m 2.28 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 5.9 cm -20.3 cm 3.36 m 1.63 MeV 646 keV 18.3 cm 18.3 cm trkChamber compt + 2 6.23 cm -23.3 cm 3.4 m 460 keV 0 eV 4.73 cm 23 cm trkChamber compt + 3 5.72 cm -22.2 cm 3.41 m 187 keV 273 keV 1.81 cm 24.8 cm trkChamber compt + 4 5.45 cm -22.4 cm 3.41 m 176 keV 10.4 keV 5.17 mm 25.3 cm trkChamber compt + 5 3.38 cm -21.7 cm 3.39 m 119 keV 57.2 keV 2.87 cm 28.2 cm trkChamber compt + 6 4.77 cm -20.4 cm 3.39 m 101 keV 18 keV 1.86 cm 30 cm trkChamber compt + 7 4.41 cm -19.3 cm 3.37 m 74.3 keV 26.7 keV 1.96 cm 32 cm trkChamber compt + 8 8.41 cm -24.6 cm 3.4 m 65.9 keV 8.45 keV 7.05 cm 39 cm trkChamber compt + 9 12.5 cm -22.7 cm 3.39 m 65.7 keV 152 eV 4.59 cm 43.6 cm trkChamber compt + 10 14.7 cm -21.7 cm 3.39 m 55.2 keV 10.5 keV 2.45 cm 46.1 cm trkChamber compt + 11 14.5 cm -23.3 cm 3.38 m 51.3 keV 3.9 keV 1.72 cm 47.8 cm trkChamber compt + 12 13.1 cm -23.4 cm 3.37 m 51.3 keV 51.3 keV 1.72 cm 49.5 cm trkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 81, Parent ID = 79 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 6.23 cm -23.3 cm 3.4 m 1.17 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 6.25 cm -23.4 cm 3.4 m 622 keV 552 keV 801 mum 801 mumtrkChamber eIoni + 2 6.22 cm -23.4 cm 3.4 m 432 keV 190 keV 515 mum 1.32 mm trkChamber eIoni + 3 6.25 cm -23.4 cm 3.4 m 239 keV 193 keV 409 mum 1.72 mm trkChamber eIoni + 4 6.26 cm -23.3 cm 3.4 m 54.1 keV 185 keV 264 mum 1.99 mm trkChamber eIoni + 5 6.26 cm -23.3 cm 3.4 m 0 eV 54.1 keV 24.2 mum 2.01 mm trkChamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 78, Parent ID = 77 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.49 cm -8.4 cm 3.24 m 11.7 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.49 cm -8.41 cm 3.24 m 11.7 keV 11.7 keV 74.1 mum 74.1 mumtrkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 76, Parent ID = 16 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.51 cm -8.45 cm 3.24 m 17.9 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.52 cm -8.39 cm 3.24 m 15.7 MeV 2.2 MeV 5.24 mm 5.24 mm trkChamber eBrem + 2 -2.65 cm -8.53 cm 3.25 m 12.6 MeV 3.1 MeV 7.89 mm 1.31 cm trkChamber eIoni + 3 -2.7 cm -8.53 cm 3.25 m 11.8 MeV 711 keV 1.98 mm 1.51 cm trkChamber eBrem + 4 -2.77 cm -8.52 cm 3.25 m 10.2 MeV 1.58 MeV 3.31 mm 1.84 cm trkChamber eBrem + 5 -2.85 cm -8.49 cm 3.25 m 7.76 MeV 675 keV 1.62 mm 2.01 cm trkChamber eBrem + 6 -2.98 cm -8.31 cm 3.26 m 5.99 MeV 1.77 MeV 4.05 mm 2.41 cm trkChamber eIoni + 7 -3.09 cm -8.25 cm 3.26 m 3.94 MeV 2.05 MeV 3.19 mm 2.73 cm trkChamber eIoni + 8 -3.24 cm -8.26 cm 3.26 m 1.6 MeV 2.34 MeV 2.17 mm 2.95 cm trkChamber eIoni + 9 -3.28 cm -8.29 cm 3.26 m 1.28 MeV 323 keV 1.02 mm 3.05 cm trkChamber eIoni + 10 -3.32 cm -8.33 cm 3.26 m 989 keV 290 keV 854 mum 3.13 cm trkChamber eIoni + 11 -3.31 cm -8.34 cm 3.26 m 724 keV 264 keV 706 mum 3.2 cm trkChamber eIoni + 12 -3.27 cm -8.33 cm 3.26 m 527 keV 198 keV 569 mum 3.26 cm trkChamber eIoni + 13 -3.23 cm -8.32 cm 3.26 m 357 keV 169 keV 463 mum 3.31 cm trkChamber eIoni + 14 -3.23 cm -8.29 cm 3.26 m 138 keV 219 keV 361 mum 3.34 cm trkChamber eIoni + 15 -3.24 cm -8.28 cm 3.26 m 0 eV 138 keV 117 mum 3.36 cm trkChamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 85, Parent ID = 76 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.85 cm -8.49 cm 3.25 m 1.8 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.95 cm -8.42 cm 3.26 m 756 keV 0 eV 2.69 mm 2.69 mm trkChamber compt + 2 -6.38 cm -1.63 cm 3.27 m 694 keV 62.4 keV 7.8 cm 8.07 cm trkChamber compt + 3 -6.57 cm -1.93 mm 3.28 m 213 keV 481 keV 1.56 cm 9.63 cm trkChamber compt + 4 -7.93 cm -2.7 cm 3.29 m 118 keV 94.2 keV 2.9 cm 12.5 cm trkChamber compt + 5 -6.59 cm 3.49 mm 3.29 m 94.1 keV 24.2 keV 3.41 cm 15.9 cm trkChamber compt + 6 -4.66 cm -5.64 mm 3.28 m 94.1 keV 94.1 keV 2.36 cm 18.3 cm trkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 86, Parent ID = 85 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.95 cm -8.42 cm 3.26 m 1.04 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.97 cm -8.39 cm 3.26 m 807 keV 237 keV 735 mum 735 mumtrkChamber eIoni + 2 -3.01 cm -8.39 cm 3.26 m 579 keV 228 keV 612 mum 1.35 mm trkChamber eIoni + 3 -3.02 cm -8.43 cm 3.26 m 406 keV 173 keV 491 mum 1.84 mm trkChamber eIoni + 4 -3.02 cm -8.43 cm 3.26 m 247 keV 160 keV 393 mum 2.23 mm trkChamber eIoni + 5 -3.04 cm -8.44 cm 3.26 m 49.9 keV 197 keV 272 mum 2.5 mm trkChamber eIoni + 6 -3.04 cm -8.44 cm 3.26 m 0 eV 49.9 keV 21.1 mum 2.52 mm trkChamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 84, Parent ID = 76 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.77 cm -8.52 cm 3.25 m 19 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.78 cm -8.52 cm 3.25 m 19 keV 19 keV 278 mum 278 mumtrkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 83, Parent ID = 76 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.7 cm -8.53 cm 3.25 m 12.1 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.7 cm -8.53 cm 3.25 m 12.1 keV 12.1 keV 3.62 mum 3.62 mumtrkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 82, Parent ID = 76 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.52 cm -8.39 cm 3.24 m 82.4 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -3.91 cm -8.27 cm 3.27 m 82.4 keV 82.4 keV 3.04 cm 3.04 cm trkChamber phot ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 15, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.74 cm -5.3 mm 80.6 cm 4.95 MeV 0 eV 0 fm 0 fm Tracker initStep - 1 -3.77 cm -5.66 mm 82.5 cm 4.95 MeV 0 eV 1.95 cm 1.95 cm trkChamberTransportation - 2 -3.78 cm -5.75 mm 83 cm 586 keV 0 eV 4.88 mm 2.44 cm trkChamber compt - 3 -4.43 cm 10.1 cm 85.7 cm 216 keV 370 keV 11 cm 13.5 cm trkChamber compt - 4 -5.2 cm 9.52 cm 84.2 cm 193 keV 22.8 keV 1.83 cm 15.3 cm trkChamber compt - 5 -6.69 cm 9.91 cm 83.2 cm 141 keV 52 keV 1.81 cm 17.1 cm trkChamber compt - 6 -6.51 cm 9 cm 82.5 cm 141 keV 0 eV 1.17 cm 18.3 cm TrackerTransportation - 7 13.9 cm -90.6 cm 2.5 cm 141 keV 0 eV 1.29 m 1.48 m WorldPVTransportation - 8 87.4 cm -4.5 m -2.86 m 141 keV 0 eV 4.67 m 6.14 m OutOfWorldTransportation + 0 -3.82 cm -5.14 mm 83.9 cm 11.8 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -3.93 cm -1.2 cm 1.02 m 11.8 MeV 0 eV 18.6 cm 18.6 cm TrackerTransportation + 2 -4.29 cm -3.41 cm 1.62 m 11.8 MeV 0 eV 60 cm 78.7 cm trkChamberTransportation + 3 -4.35 cm -3.84 cm 1.74 m 0 eV 0 eV 11.6 cm 90.3 cm trkChamber conv ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 88, Parent ID = 15 +* G4Track Information: Particle = e+, Track ID = 88, Parent ID = 15 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.78 cm -5.75 mm 83 cm 4.37 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.71 cm -5.79 mm 83.2 cm 3.49 MeV 881 keV 2.39 mm 2.39 mm trkChamber eIoni - 2 -3.8 cm -6.63 mm 83.4 cm 2.78 MeV 708 keV 1.95 mm 4.34 mm trkChamber eIoni - 3 -3.74 cm -7.41 mm 83.5 cm 2.18 MeV 595 keV 1.6 mm 5.94 mm trkChamber eIoni - 4 -3.73 cm -7.28 mm 83.6 cm 1.23 MeV 956 keV 1.31 mm 7.24 mm trkChamber eIoni - 5 -3.76 cm -7.86 mm 83.7 cm 941 keV 286 keV 827 mum 8.07 mm trkChamber eIoni - 6 -3.73 cm -8.31 mm 83.7 cm 630 keV 311 keV 681 mum 8.75 mm trkChamber eIoni - 7 -3.77 cm -8.18 mm 83.7 cm 435 keV 195 keV 519 mum 9.27 mm trkChamber eIoni - 8 -3.74 cm -8.32 mm 83.7 cm 239 keV 195 keV 410 mum 9.68 mm trkChamber eIoni - 9 -3.75 cm -8.33 mm 83.7 cm 28.2 keV 211 keV 265 mum 9.95 mm trkChamber eIoni - 10 -3.75 cm -8.32 mm 83.7 cm 0 eV 28.2 keV 10.9 mum 9.96 mm trkChamber eIoni + 0 -4.35 cm -3.84 cm 1.74 m 3.45 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -4.28 cm -3.82 cm 1.74 m 2.78 MeV 673 keV 1.98 mm 1.98 mm trkChamber eIoni + 2 -4.3 cm -3.91 cm 1.74 m 1.83 MeV 950 keV 1.64 mm 3.62 mm trkChamber eIoni + 3 -4.3 cm -3.94 cm 1.75 m 1.46 MeV 370 keV 1.15 mm 4.77 mm trkChamber eIoni + 4 -4.31 cm -3.92 cm 1.75 m 1.18 MeV 284 keV 956 mum 5.73 mm trkChamber eIoni + 5 -4.32 cm -3.95 cm 1.75 m 875 keV 302 keV 808 mum 6.53 mm trkChamber eIoni + 6 -4.36 cm -3.94 cm 1.75 m 472 keV 403 keV 649 mum 7.18 mm trkChamber eIoni + 7 -4.34 cm -3.93 cm 1.75 m 306 keV 166 keV 430 mum 7.61 mm trkChamber eIoni + 8 -4.35 cm -3.94 cm 1.75 m 156 keV 150 keV 321 mum 7.93 mm trkChamber eIoni + 9 -4.35 cm -3.93 cm 1.75 m 0 eV 156 keV 137 mum 8.07 mm trkChamber eIoni + 10 -4.35 cm -3.93 cm 1.75 m 0 eV 0 eV 0 fm 8.07 mm trkChamber annihil ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 14, Parent ID = 1 +* G4Track Information: Particle = gamma, Track ID = 90, Parent ID = 88 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.73 cm -5.28 mm 80.3 cm 14.5 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -3.6 cm -6.38 mm 80.2 cm 7.99 keV 6.56 keV 2.65 mm 2.65 mm Tracker eIoni - 2 -3.63 cm -5.64 mm 80.3 cm 3.56 keV 2.58 keV 1.52 mm 4.17 mm Tracker eIoni - 3 -3.61 cm -5.51 mm 80.2 cm 2.7 keV 863 eV 1.41 mm 5.58 mm Tracker eIoni - 4 -3.6 cm -5.55 mm 80.2 cm 1.03 keV 1.67 keV 1.26 mm 6.84 mm Tracker eIoni - 5 -3.61 cm -5.63 mm 80.2 cm 873 eV 157 eV 897 mum 7.74 mm Tracker eIoni - 6 -3.61 cm -5.64 mm 80.2 cm 0 eV 873 eV 814 mum 8.55 mm Tracker eIoni + 0 -4.35 cm -3.93 cm 1.75 m 511 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -7.3 mm -2.48 cm 1.69 m 455 keV 55.5 keV 6.85 cm 6.85 cm trkChamber compt + 2 9.62 mm 1.88 cm 1.64 m 171 keV 284 keV 7.24 cm 14.1 cm trkChamber compt + 3 4.1 mm 1.05 cm 1.64 m 139 keV 31.7 keV 1.07 cm 15.2 cm trkChamber compt + 4 -3.45 mm 1.4 cm 1.65 m 132 keV 7.56 keV 1 cm 16.2 cm trkChamber compt + 5 -1.21 cm 2 cm 1.65 m 125 keV 6.75 keV 1.06 cm 17.2 cm trkChamber compt + 6 -8.79 cm 1.84 cm 1.62 m 125 keV 0 eV 7.86 cm 25.1 cm TrackerTransportation + 7 -2.5 m -3.4 cm 96.8 cm 125 keV 0 eV 2.5 m 2.75 m WorldPVTransportation + 8 -7.5 m -14.3 cm -39.4 cm 125 keV 0 eV 5.18 m 7.93 m OutOfWorldTransportation ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 89, Parent ID = 14 +* G4Track Information: Particle = gamma, Track ID = 89, Parent ID = 88 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.63 cm -5.64 mm 80.3 cm 1.85 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -3.62 cm -5.67 mm 80.3 cm 700 eV 1.15 keV 1.1 mm 1.1 mm Tracker eIoni - 2 -3.62 cm -5.66 mm 80.3 cm 0 eV 700 eV 710 mum 1.81 mm Tracker eIoni + 0 -4.35 cm -3.93 cm 1.75 m 511 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -4.61 cm -4.04 cm 1.75 m 346 keV 165 keV 4.76 mm 4.76 mm trkChamber compt + 2 -5.19 cm -3.76 cm 1.75 m 187 keV 159 keV 6.56 mm 1.13 cm trkChamber compt + 3 -3.9 cm -2.08 cm 1.75 m 167 keV 20.3 keV 2.23 cm 3.36 cm trkChamber compt + 4 -4.29 cm 1.95 cm 1.75 m 114 keV 53 keV 4.06 cm 7.42 cm trkChamber compt + 5 -3.35 cm 4.18 mm 1.78 m 82.7 keV 31.5 keV 3.43 cm 10.8 cm trkChamber compt + 6 -3.95 cm 4.12 mm 1.77 m 70.2 keV 12.4 keV 7.32 mm 11.6 cm trkChamber compt + 7 -3.99 cm 8.43 mm 1.77 m 57.8 keV 12.4 keV 4.51 mm 12 cm trkChamber compt + 8 -3.56 cm -1.8 mm 1.78 m 54.6 keV 3.22 keV 1.38 cm 13.4 cm trkChamber compt + 9 -3.13 cm -1.4 mm 1.78 m 54.6 keV 54.6 keV 4.86 mm 13.9 cm trkChamber phot ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 13, Parent ID = 1 +* G4Track Information: Particle = e-, Track ID = 87, Parent ID = 15 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.58 cm -4.4 mm 71.1 cm 5.86 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -3.62 cm -4.69 mm 71.1 cm 4.25 keV 1.6 keV 1.72 mm 1.72 mm Tracker eIoni - 2 -3.63 cm -4.26 mm 71.2 cm 3.69 keV 560 eV 1.51 mm 3.23 mm Tracker eIoni - 3 -3.63 cm -4.4 mm 71.2 cm 1.29 keV 2.4 keV 1.43 mm 4.65 mm Tracker eIoni - 4 -3.63 cm -4.27 mm 71.2 cm 1.24 keV 50.7 eV 969 mum 5.62 mm Tracker eIoni - 5 -3.62 cm -4.31 mm 71.2 cm 891 eV 352 eV 956 mum 6.58 mm Tracker eIoni - 6 -3.62 cm -4.3 mm 71.2 cm 0 eV 891 eV 824 mum 7.4 mm Tracker eIoni + 0 -4.35 cm -3.84 cm 1.74 m 7.28 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -4.33 cm -3.98 cm 1.74 m 5.88 MeV 1.39 MeV 3.81 mm 3.81 mm trkChamber eIoni + 2 -4.51 cm -4.01 cm 1.75 m 4.84 MeV 1.04 MeV 3.13 mm 6.94 mm trkChamber eIoni + 3 -4.56 cm -4.08 cm 1.75 m 3.71 MeV 1.13 MeV 2.62 mm 9.57 mm trkChamber eIoni + 4 -4.62 cm -3.91 cm 1.75 m 2.81 MeV 902 keV 2.06 mm 1.16 cm trkChamber eIoni + 5 -4.76 cm -3.84 cm 1.75 m 2.23 MeV 579 keV 1.61 mm 1.32 cm trkChamber eIoni + 6 -4.8 cm -3.82 cm 1.75 m 1.72 MeV 510 keV 1.33 mm 1.46 cm trkChamber eIoni + 7 -4.86 cm -3.8 cm 1.75 m 1.27 MeV 445 keV 1.07 mm 1.56 cm trkChamber eIoni + 8 -4.86 cm -3.88 cm 1.75 m 964 keV 308 keV 851 mum 1.65 cm trkChamber eIoni + 9 -4.84 cm -3.92 cm 1.75 m 748 keV 216 keV 693 mum 1.72 cm trkChamber eIoni + 10 -4.84 cm -3.97 cm 1.75 m 572 keV 176 keV 581 mum 1.78 cm trkChamber eIoni + 11 -4.84 cm -4 cm 1.75 m 397 keV 175 keV 487 mum 1.83 cm trkChamber eIoni + 12 -4.82 cm -4 cm 1.75 m 206 keV 191 keV 387 mum 1.86 cm trkChamber eIoni + 13 -4.82 cm -4.01 cm 1.75 m 0 eV 206 keV 222 mum 1.89 cm trkChamber eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 12, Parent ID = 1 +* G4Track Information: Particle = gamma, Track ID = 14, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.52 cm -4.05 mm 67.5 cm 1.22 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -3.52 cm -4.06 mm 67.6 cm 1.04 keV 181 eV 950 mum 950 mum Tracker eIoni - 2 -3.52 cm -4.09 mm 67.5 cm 794 eV 247 eV 900 mum 1.85 mm Tracker eIoni - 3 -3.51 cm -4.1 mm 67.5 cm 0 eV 794 eV 766 mum 2.62 mm Tracker eIoni + 0 -3.82 cm -5.08 mm 83.7 cm 19.4 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -3.82 cm -5.13 mm 83.8 cm 19.4 keV 19.4 keV 1.09 mm 1.09 mm trkChamber phot ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 11, Parent ID = 1 +* G4Track Information: Particle = gamma, Track ID = 13, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.52 cm -4.04 mm 67.4 cm 1.85 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -3.53 cm -4.07 mm 67.4 cm 1.14 keV 708 eV 1.1 mm 1.1 mm Tracker eIoni - 2 -3.52 cm -3.92 mm 67.4 cm 1.02 keV 128 eV 929 mum 2.03 mm Tracker eIoni - 3 -3.51 cm -3.82 mm 67.4 cm 920 eV 95.5 eV 893 mum 2.92 mm Tracker eIoni - 4 -3.51 cm -3.82 mm 67.4 cm 0 eV 920 eV 841 mum 3.76 mm Tracker eIoni + 0 -3.82 cm -5.06 mm 83.6 cm 165 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -3.89 cm -6.45 mm 89.7 cm 102 keV 62.7 keV 6.15 cm 6.15 cm trkChamber compt + 2 -3.61 cm -2.8 cm 85.2 cm 102 keV 231 eV 5.03 cm 11.2 cm trkChamber compt + 3 -3.61 cm -3.5 cm 84.1 cm 79.8 keV 22.5 keV 1.28 cm 12.5 cm trkChamber compt + 4 -2.25 cm -2.76 cm 84.4 cm 79.4 keV 347 eV 1.57 cm 14 cm trkChamber compt + 5 -2.02 cm -2.6 cm 84.5 cm 71.7 keV 7.74 keV 2.96 mm 14.3 cm trkChamber compt + 6 -1.1 cm -3.79 cm 85.9 cm 58.6 keV 13.1 keV 2.05 cm 16.4 cm trkChamber compt + 7 -1.22 cm -3.61 cm 85.9 cm 54 keV 4.6 keV 2.21 mm 16.6 cm trkChamber compt + 8 -3.74 mm -2.68 cm 86.5 cm 45.6 keV 8.34 keV 1.39 cm 18 cm trkChamber compt + 9 -3.77 mm -2.89 cm 86.2 cm 45.6 keV 45.6 keV 3.62 mm 18.4 cm trkChamber phot ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 10, Parent ID = 1 +* G4Track Information: Particle = gamma, Track ID = 12, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.52 cm -4.02 mm 67.2 cm 5.93 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -3.48 cm -3.66 mm 67.2 cm 3.06 keV 2.87 keV 1.73 mm 1.73 mm Tracker eIoni - 2 -3.49 cm -3.41 mm 67.2 cm 1.73 keV 1.33 keV 917 mum 2.64 mm Tracker eIoni - 3 -3.5 cm -3.28 mm 67.2 cm 1.3 keV 433 eV 1.07 mm 3.72 mm Tracker eIoni - 4 -3.51 cm -3.29 mm 67.2 cm 988 eV 314 eV 971 mum 4.69 mm Tracker eIoni - 5 -3.51 cm -3.3 mm 67.2 cm 0 eV 988 eV 882 mum 5.57 mm Tracker eIoni + 0 -3.83 cm -4.92 mm 83.2 cm 90 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -3.81 cm -6.92 mm 90.8 cm 84.7 keV 5.24 keV 7.66 cm 7.66 cm trkChamber compt + 2 -3.22 cm 605 mum 91.7 cm 84.7 keV 84.7 keV 1.28 cm 8.94 cm trkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 11, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.82 cm -4.91 mm 82.8 cm 20.3 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -3.97 cm -4.84 mm 88.6 cm 0 eV 0 eV 5.83 cm 5.83 cm trkChamber conv + +********************************************************************************************************* +* G4Track Information: Particle = e+, Track ID = 92, Parent ID = 11 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.97 cm -4.84 mm 88.6 cm 17.9 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -4.03 cm -4.7 mm 88.9 cm 15.6 MeV 1.17 MeV 3.31 mm 3.31 mm trkChamber eIoni + 2 -4.02 cm -4.79 mm 89 cm 14.1 MeV 302 keV 1.02 mm 4.33 mm trkChamber eIoni + 3 -4.12 cm -4.5 mm 89.8 cm 11.3 MeV 2.74 MeV 7.24 mm 1.16 cm trkChamber eIoni + 4 -4.13 cm -3.45 mm 90 cm 10.1 MeV 810 keV 2.35 mm 1.39 cm trkChamber eBrem + 5 -4 cm -1.3 mm 90.4 cm 7.91 MeV 2.24 MeV 5.31 mm 1.92 cm trkChamber eIoni + 6 -3.96 cm 961 mum 90.8 cm 6.41 MeV 1.5 MeV 4.21 mm 2.34 cm trkChamber eIoni + 7 -4.04 cm 1.76 mm 91.1 cm 4.95 MeV 1.45 MeV 3.47 mm 2.69 cm trkChamber eIoni + 8 -3.93 cm 2.71 mm 91.3 cm 3.91 MeV 1.04 MeV 2.74 mm 2.96 cm trkChamber eIoni + 9 -3.98 cm 3.12 mm 91.5 cm 3.17 MeV 745 keV 2.22 mm 3.19 cm trkChamber eIoni + 10 -3.88 cm 4.47 mm 91.6 cm 2.62 MeV 552 keV 1.84 mm 3.37 cm trkChamber eIoni + 11 -3.87 cm 4.12 mm 91.7 cm 2.11 MeV 506 keV 1.56 mm 3.53 cm trkChamber eIoni + 12 -3.89 cm 3.48 mm 91.9 cm 1.65 MeV 458 keV 1.29 mm 3.66 cm trkChamber eIoni + 13 -3.94 cm 3.13 mm 91.9 cm 1.23 MeV 421 keV 1.06 mm 3.76 cm trkChamber eIoni + 14 -3.92 cm 3.52 mm 92 cm 839 keV 394 keV 837 mum 3.84 cm trkChamber eIoni + 15 -3.98 cm 3.67 mm 92 cm 633 keV 206 keV 630 mum 3.91 cm trkChamber eIoni + 16 -4.01 cm 3.99 mm 92 cm 211 keV 422 keV 520 mum 3.96 cm trkChamber eIoni + 17 -4.01 cm 3.89 mm 92 cm 39.9 keV 171 keV 223 mum 3.98 cm trkChamber eIoni + 18 -4.01 cm 3.88 mm 92 cm 0 eV 39.9 keV 13.1 mum 3.98 cm trkChamber eIoni + 19 -4.01 cm 3.88 mm 92 cm 0 eV 0 eV 0 fm 3.98 cm trkChamber annihil + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 97, Parent ID = 92 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -4.01 cm 3.88 mm 92 cm 511 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -3.68 cm 1.15 cm 91 cm 192 keV 319 keV 1.27 cm 1.27 cm trkChamber compt + 2 -6.36 cm 6.32 mm 92.4 cm 192 keV 192 keV 3.04 cm 4.32 cm trkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 96, Parent ID = 92 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -4.01 cm 3.88 mm 92 cm 511 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -4.56 cm -8.7 mm 93.6 cm 491 keV 19.7 keV 2.1 cm 2.1 cm trkChamber compt + 2 -9.29 cm -8.23 cm 99.6 cm 259 keV 233 keV 10.6 cm 12.7 cm trkChamber compt + 3 -9.36 cm -8.58 cm 99.1 cm 195 keV 63.4 keV 5.56 mm 13.2 cm trkChamber compt + 4 -9.19 cm -8.82 cm 99.2 cm 182 keV 13.7 keV 2.86 mm 13.5 cm trkChamber compt + 5 -8.79 cm -17.2 cm 97.7 cm 138 keV 44 keV 8.48 cm 22 cm trkChamber compt + 6 -7.95 cm -17.6 cm 99.2 cm 114 keV 23.5 keV 1.79 cm 23.8 cm trkChamber compt + 7 -11.2 cm -17.2 cm 1.02 m 89.7 keV 24.6 keV 4.5 cm 28.3 cm trkChamber compt + 8 -11.2 cm -17.4 cm 1.02 m 74.9 keV 14.8 keV 1.29 mm 28.4 cm trkChamber compt + 9 -11.6 cm -17.3 cm 1.02 m 74.9 keV 74.9 keV 9.37 mm 29.4 cm trkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 95, Parent ID = 92 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -4.13 cm -3.45 mm 90 cm 381 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -4.16 cm -1.72 mm 90.2 cm 193 keV 188 keV 3 mm 3 mm trkChamber compt + 2 -1.67 cm 4.02 mm 89 cm 185 keV 8.6 keV 2.81 cm 3.11 cm trkChamber compt + 3 2.33 cm -9.54 mm 86.4 cm 116 keV 68.4 keV 4.96 cm 8.07 cm trkChamber compt + 4 -2.57 cm -4.9 cm 89.2 cm 109 keV 6.88 keV 6.85 cm 14.9 cm trkChamber compt + 5 -3.75 cm -4.7 cm 89.8 cm 88.6 keV 20.9 keV 1.37 cm 16.3 cm trkChamber compt + 6 -3.84 cm -4.66 cm 89.6 cm 65.8 keV 22.8 keV 2.35 mm 16.5 cm trkChamber compt + 7 -2.81 cm -5.18 cm 91.6 cm 57.7 keV 8.14 keV 2.32 cm 18.8 cm trkChamber compt + 8 -4.32 cm 2.02 cm 93.4 cm 57.7 keV 57.7 keV 7.58 cm 26.4 cm trkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 94, Parent ID = 92 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -4.02 cm -4.79 mm 89 cm 1.21 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -4.05 cm -5.31 mm 89.1 cm 903 keV 306 keV 819 mum 819 mumtrkChamber eIoni + 2 -4.08 cm -5.84 mm 89.1 cm 692 keV 211 keV 662 mum 1.48 mm trkChamber eIoni + 3 -4.1 cm -6.27 mm 89.1 cm 479 keV 212 keV 552 mum 2.03 mm trkChamber eIoni + 4 -4.1 cm -6.4 mm 89.2 cm 323 keV 156 keV 436 mum 2.47 mm trkChamber eIoni + 5 -4.11 cm -6.33 mm 89.1 cm 165 keV 157 keV 337 mum 2.8 mm trkChamber eIoni + 6 -4.11 cm -6.37 mm 89.1 cm 0 eV 165 keV 158 mum 2.96 mm trkChamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 93, Parent ID = 92 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -4.03 cm -4.7 mm 88.9 cm 1.16 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -4.04 cm -5.28 mm 89 cm 518 keV 639 keV 792 mum 792 mumtrkChamber eIoni + 2 -4.05 cm -5.67 mm 89 cm 349 keV 169 keV 458 mum 1.25 mm trkChamber eIoni + 3 -4.02 cm -5.71 mm 89 cm 104 keV 245 keV 356 mum 1.61 mm trkChamber eIoni + 4 -4.02 cm -5.75 mm 89 cm 0 eV 104 keV 73.5 mum 1.68 mm trkChamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 91, Parent ID = 11 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.97 cm -4.84 mm 88.6 cm 1.4 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -3.98 cm -5.24 mm 88.7 cm 212 keV 1.19 MeV 914 mum 914 mumtrkChamber eIoni + 2 -3.98 cm -5.34 mm 88.7 cm 18.5 keV 193 keV 230 mum 1.14 mm trkChamber eIoni + 3 -3.98 cm -5.34 mm 88.7 cm 0 eV 18.5 keV 3.79 mum 1.15 mm trkChamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 10, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.81 cm -4.92 mm 82.5 cm 83.8 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -3.83 cm -4.95 mm 83.4 cm 74.9 keV 8.89 keV 9.19 mm 9.19 mm trkChamber compt + 2 -3.47 cm 9.39 mm 83.9 cm 58 keV 16.9 keV 1.54 cm 2.46 cm trkChamber compt + 3 -3.61 cm 4.18 mm 83.6 cm 57.7 keV 347 eV 6.07 mm 3.07 cm trkChamber compt + 4 -4.07 cm -6.48 mm 83.4 cm 57.7 keV 57.7 keV 1.18 cm 4.24 cm trkChamber phot ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 9, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.44 cm -3.54 mm 61.8 cm 2.01 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -3.44 cm -3.37 mm 61.8 cm 1.64 keV 375 eV 1.13 mm 1.13 mm Tracker eIoni - 2 -3.44 cm -3.38 mm 61.8 cm 1.28 keV 351 eV 1.05 mm 2.19 mm Tracker eIoni - 3 -3.43 cm -3.55 mm 61.8 cm 1.22 keV 67.1 eV 966 mum 3.15 mm Tracker eIoni - 4 -3.42 cm -3.51 mm 61.8 cm 809 eV 407 eV 949 mum 4.1 mm Tracker eIoni - 5 -3.42 cm -3.5 mm 61.8 cm 0 eV 809 eV 776 mum 4.88 mm Tracker eIoni + 0 -3.67 cm -4.54 mm 73.1 cm 1.3 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -3.68 cm -4.59 mm 73.1 cm 0 eV 1.3 keV 86.7 mum 86.7 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 8, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.37 cm -3.18 mm 57.4 cm 1.16 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -3.37 cm -3.17 mm 57.4 cm 104 eV 1.06 keV 934 mum 934 mum Tracker eIoni - 2 -3.37 cm -3.17 mm 57.4 cm 0 eV 104 eV 273 mum 1.21 mm Tracker eIoni + 0 -3.65 cm -4.47 mm 71.7 cm 1.74 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -3.64 cm -4.47 mm 71.7 cm 0 eV 1.74 keV 133 mum 133 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 7, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.35 cm -3.06 mm 55.8 cm 1.04 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -3.35 cm -3.1 mm 55.8 cm 889 eV 151 eV 900 mum 900 mum Tracker eIoni - 2 -3.35 cm -3.11 mm 55.8 cm 0 eV 889 eV 823 mum 1.72 mm Tracker eIoni + 0 -3.15 cm -2.42 mm 40.3 cm 19.7 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.95 cm -2.51 mm 40.3 cm 17.8 keV 1.9 keV 2.08 mm 2.08 mm Tracker eIoni + 2 -2.82 cm -3.33 mm 40.4 cm 16.2 keV 1.56 keV 1.78 mm 3.86 mm Tracker eIoni + 3 -2.67 cm -3.33 mm 40.4 cm 14.1 keV 2.16 keV 1.56 mm 5.42 mm Tracker eIoni + 4 -2.63 cm -4.43 mm 40.5 cm 10.9 keV 3.2 keV 1.27 mm 6.69 mm Tracker eIoni + 5 -2.6 cm -5.05 mm 40.4 cm 8.52 keV 2.34 keV 907 mum 7.59 mm Tracker eIoni + 6 -2.59 cm -5.12 mm 40.4 cm 7.38 keV 142 eV 121 mum 7.71 mm Tracker eIoni + 7 -2.55 cm -5.45 mm 40.4 cm 6.5 keV 876 eV 596 mum 8.31 mm Tracker eIoni + 8 -2.51 cm -5.71 mm 40.4 cm 5.73 keV 775 eV 530 mum 8.84 mm Tracker eIoni + 9 -2.48 cm -6.04 mm 40.4 cm 2.68 keV 3.05 keV 474 mum 9.31 mm Tracker eIoni + 10 -2.46 cm -5.98 mm 40.4 cm 716 eV 1.97 keV 248 mum 9.56 mm Tracker eIoni + 11 -2.46 cm -5.98 mm 40.4 cm 0 eV 716 eV 40.7 mum 9.6 mm Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 98, Parent ID = 7 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.59 cm -5.12 mm 40.4 cm 996 eV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.59 cm -5.1 mm 40.4 cm 0 eV 996 eV 61 mum 61 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 6, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.05 cm -1.99 mm 35.7 cm 2.21 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -3.04 cm -1.87 mm 35.7 cm 531 eV 1.68 keV 1.17 mm 1.17 mm Tracker eIoni - 2 -3.04 cm -1.88 mm 35.7 cm 0 eV 531 eV 607 mum 1.78 mm Tracker eIoni + 0 -3.08 cm -2.16 mm 35.7 cm 2.46 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -3.08 cm -2.32 mm 35.7 cm 425 eV 2.03 keV 223 mum 223 mum Tracker eIoni + 2 -3.08 cm -2.31 mm 35.7 cm 0 eV 425 eV 23.9 mum 247 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.82 cm -1.2 mm 20.7 cm 1.03 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.82 cm -1.07 mm 20.7 cm 854 eV 181 eV 898 mum 898 mum Tracker eIoni - 2 -2.82 cm -1.08 mm 20.7 cm 0 eV 854 eV 802 mum 1.7 mm Tracker eIoni + 0 -3.04 cm -2.01 mm 32.9 cm 3.11 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -3.03 cm -1.8 mm 33 cm 1.65 keV 1.46 keV 289 mum 289 mum Tracker eIoni + 2 -3.02 cm -1.77 mm 33 cm 0 eV 1.65 keV 122 mum 411 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.72 cm -786 mum 14 cm 1.06 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.73 cm -805 mum 14 cm 715 eV 342 eV 905 mum 905 mum Tracker eIoni - 2 -2.73 cm -802 mum 14 cm 0 eV 715 eV 719 mum 1.62 mm Tracker eIoni + 0 -2.93 cm -1.52 mm 25 cm 1.43 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.92 cm -1.45 mm 25 cm 0 eV 1.43 keV 99.9 mum 99.9 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.62 cm -405 mum 7.41 cm 3.04 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.63 cm -200 mum 7.4 cm 1.52 keV 1.52 keV 1.32 mm 1.32 mm Tracker eIoni - 2 -2.62 cm -228 mum 7.41 cm 1.16 keV 355 eV 1.02 mm 2.35 mm Tracker eIoni - 3 -2.61 cm -242 mum 7.41 cm 706 eV 454 eV 934 mum 3.28 mm Tracker eIoni - 4 -2.61 cm -235 mum 7.41 cm 0 eV 706 eV 714 mum 3.99 mm Tracker eIoni + 0 -2.61 cm -438 mum 7.41 cm 1.76 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.62 cm -395 mum 7.41 cm 0 eV 1.76 keV 135 mum 135 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 @@ -1270,26 +1360,42 @@ Step# X Y Z KineE dEStep StepLeng TrakLeng Ne Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process 0 -2.5 cm 0 fm 3.16 mm 3.81 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -2.4 cm 186 mum 4.94 mm 3.13 MeV 679 keV 2.11 mm 2.11 mm TargetPV eIoni - 2 -2.3 cm 1.53 mm 4.38 mm 2.1 MeV 1.02 MeV 1.77 mm 3.88 mm TargetPV eIoni - 3 -2.22 cm 1.59 mm 3.54 mm 1.65 MeV 453 keV 1.27 mm 5.15 mm TargetPV eIoni - 4 -2.21 cm 1.61 mm 3.56 mm 1.61 MeV 25.1 keV 72.2 mum 5.22 mm TargetPV eBrem - 5 -2.14 cm 1.44 mm 4.23 mm 1.3 MeV 312 keV 1.02 mm 6.24 mm TargetPV eIoni - 6 -2.08 cm 1.19 mm 4.71 mm 1.03 MeV 274 keV 864 mum 7.11 mm TargetPV eIoni - 7 -2.07 cm 679 mum 4.26 mm 364 keV 662 keV 725 mum 7.83 mm TargetPV eIoni - 8 -2.05 cm 526 mum 4.32 mm 209 keV 155 keV 366 mum 8.2 mm TargetPV eIoni - 9 -2.06 cm 541 mum 4.34 mm 5.67 keV 203 keV 228 mum 8.43 mm TargetPV eIoni - 10 -2.06 cm 541 mum 4.34 mm 0 eV 5.67 keV 3.31 mum 8.43 mm TargetPV eIoni + 1 -2.44 cm 1.2 mm 4.69 mm 2.99 MeV 820 keV 2.11 mm 2.11 mm TargetPV eIoni + 2 -2.41 cm 1.47 mm 5.23 mm 1.69 MeV 222 keV 701 mum 2.81 mm TargetPV eIoni + 3 -2.32 cm 1.49 mm 5.63 mm 1.29 MeV 404 keV 1.06 mm 3.87 mm TargetPV eIoni + 4 -2.28 cm 966 mum 6.09 mm 1 MeV 286 keV 860 mum 4.73 mm TargetPV eIoni + 5 -2.22 cm 1.3 mm 6.02 mm 738 keV 266 keV 714 mum 5.45 mm TargetPV eIoni + 6 -2.18 cm 1.09 mm 5.98 mm 538 keV 200 keV 576 mum 6.02 mm TargetPV eIoni + 7 -2.14 cm 1.32 mm 6.07 mm 362 keV 175 keV 469 mum 6.49 mm TargetPV eIoni + 8 -2.11 cm 1.41 mm 6.14 mm 213 keV 150 keV 365 mum 6.86 mm TargetPV eIoni + 9 -2.12 cm 1.52 mm 6.09 mm 45.6 keV 167 keV 232 mum 7.09 mm TargetPV eIoni + 10 -2.12 cm 1.52 mm 6.09 mm 0 eV 45.6 keV 18.1 mum 7.11 mm TargetPV eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 90, Parent ID = 2 +* G4Track Information: Particle = e-, Track ID = 99, Parent ID = 2 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.21 cm 1.61 mm 3.56 mm 13.9 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -2.17 cm 1.76 mm 4.09 mm 13.9 keV 13.9 keV 713 mum 713 mum TargetPV phot + 0 -2.41 cm 1.47 mm 5.23 mm 1.07 MeV 0 eV 0 fm 0 fm TargetPV initStep + 1 -2.37 cm 1.89 mm 5.5 mm 792 keV 279 keV 748 mum 748 mum TargetPV eIoni + 2 -2.36 cm 1.88 mm 5.56 mm 644 keV 52.9 keV 93.2 mum 841 mum TargetPV eBrem + 3 -2.33 cm 1.66 mm 5.9 mm 479 keV 164 keV 526 mum 1.37 mm TargetPV eIoni + 4 -2.31 cm 1.65 mm 6.11 mm 0 eV 479 keV 436 mum 1.8 mm TargetPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 100, Parent ID = 99 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.36 cm 1.88 mm 5.56 mm 95.1 keV 0 eV 0 fm 0 fm TargetPV initStep + 1 1.75 cm -1.42 cm -7.19 mm 90.4 keV 4.74 keV 4.59 cm 4.59 cm TargetPV compt + 2 2.43 cm -1.27 cm -5.58 mm 87.3 keV 3.02 keV 7.15 mm 5.3 cm TargetPV compt + 3 2.5 cm -1.27 cm -4.75 mm 87.3 keV 0 eV 1.11 mm 5.41 cm WorldPVTransportation + 4 5.13 cm -1.17 cm 2.5 cm 87.3 keV 0 eV 3.97 cm 9.39 cm TrackerTransportation + 5 2.5 m 8.29 cm 2.79 m 87.3 keV 0 eV 3.7 m 3.79 m WorldPVTransportation + 6 6.67 m 24.4 cm 7.5 m 87.3 keV 0 eV 6.29 m 10.1 m OutOfWorldTransportation >>> Event 0 - 90 trajectories stored in this event. + 100 trajectories stored in this event. ### Run 1 start. ********************************************************************************************************* @@ -1298,3854 +1404,5518 @@ Step# X Y Z KineE dEStep StepLeng TrakLeng Ne Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process 0 -2.5 cm 0 fm 0 fm 1 TeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -2.5 cm 0 fm 2.39 mm 1e+03 GeV 880 keV 2.39 mm 2.39 mm TargetPV MuIoni - 2 -2.5 cm 0 fm 2.39 mm 1e+03 GeV 0 eV 0 fm 2.39 mm WorldPVTransportation - 3 -2.5 cm 4.95 nm 2.5 cm 1e+03 GeV 5.34 keV 2.26 cm 2.5 cm TrackerTransportation - 4 -2.5 cm 7.27 nm 4.87 cm 1e+03 GeV 6.34 keV 2.37 cm 4.87 cm Tracker MuIoni - 5 -2.5 cm 9.61 Ang 8.54 cm 1e+03 GeV 9.99 keV 3.67 cm 8.54 cm Tracker MuIoni - 6 -2.5 cm -3.19e+03 fm 9.14 cm 1e+03 GeV 999 eV 6 mm 9.14 cm Tracker MuIoni - 7 -2.5 cm -7.11 nm 15.9 cm 1e+03 GeV 18.1 keV 6.75 cm 15.9 cm Tracker MuIoni - 8 -2.5 cm -39.7 nm 22.1 cm 1e+03 GeV 10.9 keV 6.25 cm 22.1 cm Tracker MuIoni - 9 -2.5 cm -40.7 nm 43.7 cm 1e+03 GeV 55.8 keV 21.5 cm 43.7 cm Tracker MuIoni - 10 -2.5 cm -68.4 nm 60 cm 1e+03 GeV 38.9 keV 16.4 cm 60 cm Tracker MuIoni - 11 -2.5 cm -43.1 nm 65.4 cm 1e+03 GeV 13.4 keV 5.39 cm 65.4 cm Tracker MuIoni - 12 -2.5 cm -4.06 nm 70.7 cm 1e+03 GeV 11.1 keV 5.23 cm 70.7 cm Tracker MuIoni - 13 -2.5 cm 23 nm 75.4 cm 1e+03 GeV 10.1 keV 4.73 cm 75.4 cm Tracker MuIoni - 14 -2.5 cm 34.1 nm 77 cm 1e+03 GeV 3.86 keV 1.62 cm 77 cm Tracker MuIoni - 15 -2.5 cm 53.7 nm 79.9 cm 1e+03 GeV 6.23 keV 2.9 cm 79.9 cm Tracker MuIoni - 16 -2.5 cm 63 nm 81.6 cm 1e+03 GeV 5.18 keV 1.68 cm 81.6 cm Tracker MuIoni - 17 -2.5 cm 70.4 nm 82.5 cm 1e+03 GeV 1.88 keV 9.11 mm 82.5 cm trkChamberTransportation - 18 -2.5 cm 139 nm 84.6 cm 1e+03 GeV 9.08 MeV 2.1 cm 84.6 cm trkChamber MuIoni - 19 -2.5 cm 48.5 nm 88.8 cm 1e+03 GeV 18.6 MeV 4.24 cm 88.8 cm trkChamber MuIoni - 20 -2.5 cm -114 nm 94.3 cm 1e+03 GeV 22.5 MeV 5.46 cm 94.3 cm trkChamber MuIoni - 21 -2.5 cm -127 nm 95.6 cm 1e+03 GeV 5.08 MeV 1.26 cm 95.6 cm trkChamber MuIoni - 22 -2.5 cm 50.2 nm 1.02 m 1e+03 GeV 32.4 MeV 6.94 cm 1.03 m TrackerTransportation - 23 -2.5 cm -14.3 nm 1.03 m 1e+03 GeV 972 eV 8.93 mm 1.03 m Tracker MuIoni - 24 -2.5 cm -719 nm 1.13 m 1e+03 GeV 22.7 keV 10 cm 1.13 m Tracker MuIoni - 25 -2.5 cm -731 nm 1.14 m 1e+03 GeV 278 eV 1.73 mm 1.14 m Tracker MuIoni - 26 -2.5 cm -1.86 mum 1.29 m 1e+03 GeV 36.9 keV 15 cm 1.29 m Tracker MuIoni - 27 -2.5 cm -2.16 mum 1.33 m 1e+03 GeV 10.9 keV 4.42 cm 1.33 m Tracker MuIoni - 28 -2.5 cm -2.47 mum 1.38 m 1e+03 GeV 10.8 keV 4.67 cm 1.38 m Tracker MuIoni - 29 -2.5 cm -2.54 mum 1.39 m 1e+03 GeV 2.07 keV 1.07 cm 1.39 m Tracker MuIoni - 30 -2.5 cm -3.94 mum 1.59 m 1e+03 GeV 47.5 keV 20 cm 1.59 m Tracker MuIoni - 31 -2.5 cm -4.2 mum 1.62 m 1e+03 GeV 8.31 keV 3.75 cm 1.63 m trkChamberTransportation - 32 -2.5 cm -4.22 mum 1.63 m 1e+03 GeV 1.48 MeV 2.62 mm 1.63 m trkChamber MuIoni - 33 -2.5 cm -4.25 mum 1.63 m 1e+03 GeV 2.48 MeV 5.9 mm 1.63 m trkChamber MuIoni - 34 -2.5 cm -4.54 mum 1.65 m 1e+03 GeV 8.78 MeV 2.12 cm 1.65 m trkChamber MuIoni - 35 -2.5 cm -4.47 mum 1.68 m 1e+03 GeV 8.38 MeV 2.06 cm 1.68 m trkChamber MuIoni - 36 -2.5 cm -4.62 mum 1.72 m 1e+03 GeV 17.6 MeV 4.06 cm 1.72 m trkChamber MuIoni - 37 -2.5 cm -4.85 mum 1.74 m 1e+03 GeV 11.9 MeV 2.63 cm 1.74 m trkChamber MuIoni - 38 -2.5 cm -4.87 mum 1.79 m 1e+03 GeV 24 MeV 5.2 cm 1.79 m trkChamber MuIoni - 39 -2.5 cm -5.26 mum 1.82 m 1e+03 GeV 12.9 MeV 3.08 cm 1.83 m TrackerTransportation - 40 -2.5 cm -6.62 mum 1.99 m 1e+03 GeV 35.5 keV 16.4 cm 1.99 m Tracker MuIoni - 41 -2.5 cm -6.98 mum 2.03 m 1e+03 GeV 9.55 keV 4.3 cm 2.03 m Tracker MuIoni - 42 -2.5 cm -7.22 mum 2.06 m 1e+03 GeV 4.14 keV 2.8 cm 2.06 m Tracker MuIoni - 43 -2.5 cm -7.91 mum 2.14 m 1e+03 GeV 17.3 keV 8.08 cm 2.14 m Tracker MuIoni - 44 -2.5 cm -9.6 mum 2.34 m 1e+03 GeV 41.1 keV 20.2 cm 2.34 m Tracker MuIoni - 45 -2.5 cm -10.3 mum 2.42 m 1e+03 GeV 14 keV 7.51 cm 2.42 m Tracker MuIoni - 46 -2.5 cm -10.4 mum 2.42 m 1e+03 GeV 2.2 keV 7.02 mm 2.43 m trkChamberTransportation - 47 -2.5 cm -10.8 mum 2.51 m 1e+03 GeV 34.3 MeV 8.12 cm 2.51 m trkChamber MuIoni - 48 -2.5 cm -10.8 mum 2.52 m 1e+03 GeV 3.65 MeV 8.93 mm 2.52 m trkChamber MuIoni - 49 -2.5 cm -10.9 mum 2.52 m 1e+03 GeV 3.75 MeV 9.8 mm 2.52 m trkChamber MuIoni - 50 -2.5 cm -10.8 mum 2.55 m 1e+03 GeV 8 MeV 2.01 cm 2.55 m trkChamber MuIoni - 51 -2.5 cm -10.5 mum 2.59 m 1e+03 GeV 18.7 MeV 4.46 cm 2.59 m trkChamber MuIoni - 52 -2.5 cm -10.3 mum 2.6 m 1e+03 GeV 7.07 MeV 1.34 cm 2.6 m trkChamber MuIoni - 53 -2.5 cm -10.1 mum 2.61 m 1e+03 GeV 4.13 MeV 1.04 cm 2.61 m trkChamber MuIoni - 54 -2.5 cm -9.98 mum 2.62 m 1e+03 GeV 5.12 MeV 1.16 cm 2.63 m TrackerTransportation - 55 -2.5 cm -8.92 mum 2.71 m 1e+03 GeV 19.7 keV 8.23 cm 2.71 m Tracker MuIoni - 56 -2.5 cm -7.02 mum 2.86 m 1e+03 GeV 35.3 keV 15 cm 2.86 m Tracker MuIoni - 57 -2.5 cm -6.33 mum 2.91 m 1e+03 GeV 11.9 keV 5.22 cm 2.91 m Tracker MuIoni - 58 -2.5 cm -4.17 mum 3.08 m 1e+03 GeV 31.5 keV 16.8 cm 3.08 m Tracker MuIoni - 59 -2.5 cm -3.54 mum 3.12 m 1e+03 GeV 8.34 keV 4.73 cm 3.12 m Tracker MuIoni - 60 -2.5 cm -2.8 mum 3.18 m 1e+03 GeV 11.2 keV 5.47 cm 3.18 m Tracker MuIoni - 61 -2.5 cm -2.59 mum 3.19 m 1e+03 GeV 3.42 keV 1.52 cm 3.19 m Tracker MuIoni - 62 -2.5 cm -2.17 mum 3.23 m 1e+03 GeV 8.54 keV 3.1 cm 3.23 m trkChamberTransportation - 63 -2.5 cm -1.86 mum 3.24 m 1e+03 GeV 7.18 MeV 1.77 cm 3.24 m trkChamber MuIoni - 64 -2.5 cm -676 nm 3.3 m 1e+03 GeV 25.2 MeV 6.05 cm 3.3 m trkChamber MuIoni - 65 -2.5 cm -1.69 mum 3.32 m 1e+03 GeV 8.83 MeV 2.01 cm 3.32 m trkChamber MuIoni - 66 -2.5 cm -2.67 mum 3.34 m 1e+03 GeV 7.93 MeV 1.92 cm 3.34 m trkChamber MuIoni - 67 -2.5 cm -4.64 mum 3.38 m 1e+03 GeV 18 MeV 4.11 cm 3.38 m trkChamber MuIoni - 68 -2.5 cm -5.58 mum 3.4 m 1e+03 GeV 7.6 MeV 1.74 cm 3.4 m trkChamber MuIoni - 69 -2.5 cm -7.12 mum 3.42 m 1e+03 GeV 10.8 MeV 2.39 cm 3.43 m TrackerTransportation - 70 -2.5 cm -14.4 mum 3.56 m 1e+03 GeV 34 keV 13.7 cm 3.56 m Tracker MuIoni - 71 -2.5 cm -27.5 mum 3.81 m 1e+03 GeV 53.4 keV 24.7 cm 3.81 m Tracker MuIoni - 72 -2.5 cm -31.4 mum 3.88 m 1e+03 GeV 18.5 keV 7.4 cm 3.88 m Tracker MuIoni - 73 -2.5 cm -32 mum 3.89 m 1e+03 GeV 1.78 keV 1.09 cm 3.89 m Tracker MuIoni - 74 -2.49 cm -39 mum 4.03 m 1e+03 GeV 30.4 keV 13.1 cm 4.03 m trkChamberTransportation - 75 -2.49 cm -44.4 mum 4.13 m 999 GeV 44.8 MeV 10.2 cm 4.13 m trkChamber MuIoni - 76 -2.5 cm -47.4 mum 4.22 m 999 GeV 44 MeV 9.77 cm 4.23 m TrackerTransportation - 77 -2.5 cm -48.4 mum 4.25 m 999 GeV 4.43 keV 2.43 cm 4.25 m Tracker MuIoni - 78 -2.5 cm -51.6 mum 4.33 m 999 GeV 19.8 keV 7.78 cm 4.33 m Tracker MuIoni - 79 -2.5 cm -52.3 mum 4.34 m 999 GeV 4.68 keV 1.63 cm 4.34 m Tracker MuIoni - 80 -2.5 cm -60.4 mum 4.54 m 999 GeV 44.6 keV 19.8 cm 4.54 m Tracker MuIoni - 81 -2.5 cm -61.2 mum 4.56 m 999 GeV 4.24 keV 2.03 cm 4.56 m Tracker MuIoni - 82 -2.5 cm -65.1 mum 4.66 m 999 GeV 24.7 keV 9.74 cm 4.66 m Tracker MuIoni - 83 -2.5 cm -68 mum 4.73 m 999 GeV 12.6 keV 7.09 cm 4.73 m Tracker MuIoni - 84 -2.5 cm -70.4 mum 4.79 m 999 GeV 12.9 keV 5.73 cm 4.79 m Tracker MuIoni - 85 -2.5 cm -71.6 mum 4.82 m 999 GeV 7.22 keV 2.78 cm 4.82 m Tracker MuIoni - 86 -2.5 cm -75.7 mum 4.92 m 999 GeV 24 keV 10.1 cm 4.92 m Tracker MuIoni - 87 -2.5 cm -76.3 mum 4.93 m 999 GeV 3.13 keV 1.5 cm 4.93 m Tracker MuIoni - 88 -2.5 cm -80.2 mum 5.03 m 999 GeV 18.9 keV 9.4 cm 5.03 m OutOfWorldTransportation + 1 -2.5 cm 0 fm 2.5 cm 1e+03 GeV 9.99 MeV 2.5 cm 2.5 cm TrackerTransportation + 2 -2.5 cm -17 nm 3.09 cm 1e+03 GeV 1.26 keV 5.89 mm 3.09 cm Tracker MuIoni + 3 -2.5 cm -48.1 nm 4.14 cm 1e+03 GeV 1.21 keV 1.05 cm 4.14 cm Tracker MuIoni + 4 -2.5 cm -952 nm 34.2 cm 1e+03 GeV 72.7 keV 30.1 cm 34.2 cm Tracker MuIoni + 5 -2.5 cm -978 nm 35.1 cm 1e+03 GeV 1.88 keV 8.77 mm 35.1 cm Tracker MuIoni + 6 -2.5 cm -1.29 mum 44.7 cm 1e+03 GeV 24.5 keV 9.62 cm 44.7 cm Tracker MuIoni + 7 -2.5 cm -1.31 mum 45.4 cm 1e+03 GeV 4.4 keV 6.79 mm 45.4 cm Tracker MuIoni + 8 -2.5 cm -1.33 mum 45.9 cm 1e+03 GeV 904 eV 4.89 mm 45.9 cm Tracker MuIoni + 9 -2.5 cm -1.69 mum 56.7 cm 1e+03 GeV 23.6 keV 10.8 cm 56.7 cm Tracker MuIoni + 10 -2.5 cm -1.7 mum 57 cm 1e+03 GeV 574 eV 3.29 mm 57 cm Tracker MuIoni + 11 -2.5 cm -1.75 mum 58.5 cm 1e+03 GeV 3.27 keV 1.49 cm 58.5 cm Tracker MuIoni + 12 -2.5 cm -2.08 mum 69.1 cm 1e+03 GeV 22 keV 10.6 cm 69.1 cm Tracker MuIoni + 13 -2.5 cm -2.5 mum 82.5 cm 1e+03 GeV 38.3 keV 13.4 cm 82.5 cm trkChamberTransportation + 14 -2.5 cm -2.52 mum 83.3 cm 1e+03 GeV 3.45 MeV 7.92 mm 83.3 cm trkChamber MuIoni + 15 -2.5 cm -2.73 mum 85.8 cm 1e+03 GeV 10.2 MeV 2.53 cm 85.8 cm trkChamber MuIoni + 16 -2.5 cm -3.55 mum 95.2 cm 1e+03 GeV 39.8 MeV 9.35 cm 95.2 cm trkChamber MuIoni + 17 -2.5 cm -3.8 mum 1.02 m 1e+03 GeV 28.4 MeV 7.33 cm 1.03 m TrackerTransportation + 18 -2.5 cm -3.15 mum 1.08 m 1e+03 GeV 11.9 keV 5.39 cm 1.08 m Tracker MuIoni + 19 -2.5 cm -1.67 mum 1.2 m 1e+03 GeV 25.4 keV 12.1 cm 1.2 m Tracker MuIoni + 20 -2.5 cm -578 nm 1.29 m 1e+03 GeV 19.8 keV 9.28 cm 1.29 m Tracker MuIoni + 21 -2.5 cm 847 nm 1.42 m 1e+03 GeV 27.5 keV 12.5 cm 1.42 m Tracker MuIoni + 22 -2.5 cm 1.14 mum 1.44 m 1e+03 GeV 5.62 keV 2.63 cm 1.44 m Tracker MuIoni + 23 -2.5 cm 2.22 mum 1.54 m 1e+03 GeV 25.1 keV 9.68 cm 1.54 m Tracker MuIoni + 24 -2.5 cm 3.19 mum 1.62 m 1e+03 GeV 17.6 keV 8.51 cm 1.63 m trkChamberTransportation + 25 -2.5 cm 3.37 mum 1.64 m 1e+03 GeV 5.72 MeV 1.21 cm 1.64 m trkChamber MuIoni + 26 -2.5 cm 5.1 mum 1.73 m 1e+03 GeV 44.5 MeV 9.33 cm 1.73 m trkChamberMuPairProd + 27 -2.5 cm 5.21 mum 1.74 m 1e+03 GeV 2.85 MeV 5.04 mm 1.74 m trkChamber MuIoni + 28 -2.5 cm 5.47 mum 1.75 m 1e+03 GeV 5.37 MeV 1.05 cm 1.75 m trkChamber MuIoni + 29 -2.5 cm 6.23 mum 1.79 m 1e+03 GeV 16.2 MeV 4.28 cm 1.79 m trkChamber MuIoni + 30 -2.5 cm 6.28 mum 1.79 m 1e+03 GeV 1.11 MeV 2.51 mm 1.79 m trkChamber MuIoni + 31 -2.5 cm 7.08 mum 1.82 m 1e+03 GeV 17.1 MeV 3.37 cm 1.83 m TrackerTransportation + 32 -2.5 cm 9.98 mum 1.94 m 1e+03 GeV 20.4 keV 12 cm 1.94 m Tracker MuIoni + 33 -2.5 cm 12.7 mum 2.06 m 1e+03 GeV 29.5 keV 11.4 cm 2.06 m Tracker MuIoni + 34 -2.5 cm 12.7 mum 2.06 m 1e+03 GeV 727 eV 2.36 mm 2.06 m Tracker MuIoni + 35 -2.5 cm 16.7 mum 2.23 m 1e+03 GeV 39.6 keV 17.1 cm 2.23 m Tracker MuIoni + 36 -2.5 cm 19.1 mum 2.33 m 1e+03 GeV 26.8 keV 9.98 cm 2.33 m Tracker MuIoni + 37 -2.5 cm 21.3 mum 2.42 m 1e+03 GeV 14.8 keV 9.3 cm 2.43 m trkChamberTransportation + 38 -2.5 cm 21.6 mum 2.44 m 1e+03 GeV 7.97 MeV 1.64 cm 2.44 m trkChamber MuIoni + 39 -2.5 cm 24 mum 2.58 m 1e+03 GeV 64.7 MeV 13.7 cm 2.58 m trkChamber MuIoni + 40 -2.5 cm 24.3 mum 2.58 m 1e+03 GeV 2.72 MeV 6.93 mm 2.58 m trkChamber MuIoni + 41 -2.5 cm 25.6 mum 2.62 m 1e+03 GeV 20.2 MeV 3.79 cm 2.62 m trkChamber MuIoni + 42 -2.5 cm 25.6 mum 2.62 m 1e+03 GeV 784 keV 2.08 mm 2.63 m TrackerTransportation + 43 -2.5 cm 25.7 mum 2.63 m 1e+03 GeV 40.5 eV 566 mum 2.63 m Tracker MuIoni + 44 -2.5 cm 26.5 mum 2.65 m 1e+03 GeV 3.8 keV 2.58 cm 2.65 m Tracker MuIoni + 45 -2.5 cm 28.1 mum 2.7 m 1e+03 GeV 14.5 keV 5.02 cm 2.7 m Tracker MuIoni + 46 -2.5 cm 29.6 mum 2.75 m 1e+03 GeV 10.2 keV 4.79 cm 2.75 m Tracker MuIoni + 47 -2.5 cm 34.4 mum 2.9 m 1e+03 GeV 28.1 keV 15.4 cm 2.9 m Tracker MuIoni + 48 -2.5 cm 35.9 mum 2.95 m 1e+03 GeV 5.93 keV 5.04 cm 2.95 m Tracker MuIoni + 49 -2.5 cm 37.5 mum 3 m 1e+03 GeV 12.6 keV 4.84 cm 3 m Tracker MuIoni + 50 -2.5 cm 40 mum 3.08 m 1e+03 GeV 22.3 keV 8.15 cm 3.08 m Tracker MuIoni + 51 -2.5 cm 41.5 mum 3.13 m 1e+03 GeV 13.3 keV 4.77 cm 3.13 m Tracker MuIoni + 52 -2.5 cm 44.4 mum 3.23 m 1e+03 GeV 26.1 keV 9.36 cm 3.23 m trkChamberTransportation + 53 -2.5 cm 44.7 mum 3.23 m 1e+03 GeV 4.4 MeV 8.5 mm 3.23 m trkChamber MuIoni + 54 -2.5 cm 45 mum 3.24 m 1e+03 GeV 3.51 MeV 8.83 mm 3.24 m trkChamber MuIoni + 55 -2.5 cm 47.7 mum 3.3 m 1e+03 GeV 35.7 MeV 6.24 cm 3.3 m trkChamber MuIoni + 56 -2.5 cm 48.2 mum 3.32 m 1e+03 GeV 6.98 MeV 1.53 cm 3.32 m trkChamber MuIoni + 57 -2.5 cm 49.5 mum 3.37 m 1e+03 GeV 13.4 MeV 5.08 cm 3.37 m trkChamber MuIoni + 58 -2.5 cm 49.9 mum 3.38 m 1e+03 GeV 4.57 MeV 1.01 cm 3.38 m trkChamber MuIoni + 59 -2.5 cm 50 mum 3.38 m 1e+03 GeV 1 MeV 2.56 mm 3.38 m trkChamber MuIoni + 60 -2.5 cm 50.1 mum 3.39 m 999 GeV 1.6 MeV 4.08 mm 3.39 m trkChamber MuIoni + 61 -2.5 cm 50.4 mum 3.4 m 999 GeV 4.1 MeV 1.08 cm 3.4 m trkChamber MuIoni + 62 -2.5 cm 51.5 mum 3.42 m 999 GeV 11.5 MeV 2.66 cm 3.43 m TrackerTransportation + 63 -2.5 cm 54.8 mum 3.53 m 999 GeV 24.6 keV 10.1 cm 3.53 m Tracker MuIoni + 64 -2.5 cm 54.9 mum 3.53 m 999 GeV 213 eV 1.83 mm 3.53 m Tracker MuIoni + 65 -2.5 cm 59 mum 3.65 m 999 GeV 29.7 keV 12.6 cm 3.65 m Tracker MuIoni + 66 -2.5 cm 59.1 mum 3.66 m 999 GeV 239 eV 2.84 mm 3.66 m Tracker MuIoni + 67 -2.5 cm 66.6 mum 3.89 m 999 GeV 55.8 keV 23.1 cm 3.89 m Tracker MuIoni + 68 -2.5 cm 67.9 mum 3.93 m 999 GeV 9.73 keV 4.03 cm 3.93 m Tracker MuIoni + 69 -2.5 cm 69 mum 3.96 m 999 GeV 7.44 keV 3.3 cm 3.96 m Tracker MuIoni + 70 -2.5 cm 69.1 mum 3.96 m 999 GeV 237 eV 2.82 mm 3.96 m Tracker MuIoni + 71 -2.5 cm 71.1 mum 4.03 m 999 GeV 12.1 keV 6.15 cm 4.03 m trkChamberTransportation + 72 -2.5 cm 72.2 mum 4.06 m 999 GeV 17.6 MeV 3.02 cm 4.06 m trkChamber MuIoni + 73 -2.5 cm 72.9 mum 4.08 m 999 GeV 8.48 MeV 2.08 cm 4.08 m trkChamber MuIoni + 74 -2.5 cm 77.3 mum 4.17 m 999 GeV 42.3 MeV 9.6 cm 4.17 m trkChamber MuIoni + 75 -2.5 cm 77.8 mum 4.19 m 999 GeV 8.13 MeV 1.67 cm 4.19 m trkChamber MuIoni + 76 -2.5 cm 78.9 mum 4.22 m 999 GeV 17.2 MeV 3.07 cm 4.22 m trkChamber MuIoni + 77 -2.5 cm 79.1 mum 4.22 m 999 GeV 2.14 MeV 5.57 mm 4.23 m TrackerTransportation + 78 -2.5 cm 79.5 mum 4.24 m 999 GeV 4.41 keV 1.63 cm 4.24 m Tracker MuIoni + 79 -2.5 cm 79.7 mum 4.25 m 999 GeV 1.89 keV 9.14 mm 4.25 m Tracker MuIoni + 80 -2.5 cm 82.4 mum 4.35 m 999 GeV 16.7 keV 10 cm 4.35 m Tracker MuIoni + 81 -2.5 cm 84.1 mum 4.41 m 999 GeV 12.1 keV 6.22 cm 4.41 m Tracker MuIoni + 82 -2.5 cm 84.7 mum 4.44 m 999 GeV 5.6 keV 2.29 cm 4.44 m Tracker MuIoni + 83 -2.5 cm 88.1 mum 4.56 m 999 GeV 33.1 keV 12.8 cm 4.56 m Tracker MuIoni + 84 -2.5 cm 90.4 mum 4.65 m 999 GeV 16.5 keV 8.55 cm 4.65 m Tracker MuIoni + 85 -2.5 cm 92.1 mum 4.71 m 999 GeV 16.1 keV 6.39 cm 4.71 m Tracker MuIoni + 86 -2.5 cm 94.2 mum 4.8 m 999 GeV 15.9 keV 8.23 cm 4.8 m Tracker MuIoni + 87 -2.5 cm 96.9 mum 4.9 m 999 GeV 18.8 keV 10.2 cm 4.9 m Tracker MuIoni + 88 -2.5 cm 98.6 mum 4.96 m 999 GeV 14.7 keV 6.11 cm 4.96 m Tracker MuIoni + 89 -2.5 cm 100 mum 5.03 m 999 GeV 16.5 keV 6.66 cm 5.03 m WorldPVTransportation + 90 -2.5 cm 102 mum 5.09 m 999 GeV 13.4 keV 6.6 cm 5.09 m WorldPV MuIoni + 91 -2.5 cm 103 mum 5.13 m 999 GeV 10.7 keV 3.86 cm 5.13 m WorldPV MuIoni + 92 -2.5 cm 107 mum 5.26 m 999 GeV 24.8 keV 13.1 cm 5.26 m WorldPV MuIoni + 93 -2.5 cm 109 mum 5.34 m 999 GeV 16.7 keV 8.08 cm 5.34 m WorldPV MuIoni + 94 -2.5 cm 109 mum 5.37 m 999 GeV 4.77 keV 2.45 cm 5.37 m WorldPV MuIoni + 95 -2.5 cm 112 mum 5.46 m 999 GeV 19.3 keV 9.1 cm 5.46 m WorldPV MuIoni + 96 -2.5 cm 112 mum 5.47 m 999 GeV 3.35 keV 1.62 cm 5.47 m WorldPV MuIoni + 97 -2.5 cm 114 mum 5.54 m 999 GeV 12.3 keV 6.49 cm 5.54 m WorldPV MuIoni + 98 -2.5 cm 115 mum 5.57 m 999 GeV 7.91 keV 2.75 cm 5.57 m WorldPV MuIoni + 99 -2.5 cm 116 mum 5.6 m 999 GeV 8.18 keV 3.78 cm 5.6 m WorldPV MuIoni + 100 -2.5 cm 118 mum 5.68 m 999 GeV 20.9 keV 7.75 cm 5.68 m WorldPV MuIoni + 101 -2.5 cm 120 mum 5.75 m 999 GeV 14.1 keV 6.91 cm 5.75 m WorldPV MuIoni + 102 -2.5 cm 120 mum 5.77 m 999 GeV 4.33 keV 1.57 cm 5.77 m WorldPV MuIoni + 103 -2.5 cm 124 mum 5.92 m 999 GeV 38 keV 15.3 cm 5.92 m WorldPV MuIoni + 104 -2.5 cm 125 mum 5.95 m 999 GeV 6.07 keV 3.58 cm 5.95 m WorldPV MuIoni + 105 -2.5 cm 126 mum 6.01 m 999 GeV 13.7 keV 5.44 cm 6.01 m WorldPV MuIoni + 106 -2.5 cm 128 mum 6.08 m 999 GeV 16.2 keV 7.08 cm 6.08 m WorldPV MuIoni + 107 -2.5 cm 129 mum 6.1 m 999 GeV 6.52 keV 2.11 cm 6.1 m WorldPV MuIoni + 108 -2.5 cm 130 mum 6.14 m 999 GeV 9.36 keV 3.9 cm 6.14 m WorldPV MuIoni + 109 -2.5 cm 131 mum 6.18 m 999 GeV 10.3 keV 4.02 cm 6.18 m WorldPV MuIoni + 110 -2.5 cm 132 mum 6.22 m 999 GeV 7.39 keV 3.8 cm 6.22 m WorldPV MuIoni + 111 -2.5 cm 133 mum 6.24 m 999 GeV 4.15 keV 2.39 cm 6.24 m WorldPV MuIoni + 112 -2.5 cm 133 mum 6.27 m 999 GeV 4.32 keV 2.44 cm 6.27 m WorldPV MuIoni + 113 -2.5 cm 135 mum 6.32 m 999 GeV 8.09 keV 4.95 cm 6.32 m WorldPV MuIoni + 114 -2.5 cm 135 mum 6.32 m 999 GeV 2.16 keV 8.23 mm 6.32 m WorldPV MuIoni + 115 -2.5 cm 136 mum 6.39 m 999 GeV 16.9 keV 6.61 cm 6.39 m WorldPV MuIoni + 116 -2.5 cm 138 mum 6.43 m 999 GeV 9.8 keV 4.27 cm 6.43 m WorldPV MuIoni + 117 -2.5 cm 139 mum 6.48 m 999 GeV 7.23 keV 5.09 cm 6.48 m WorldPV MuIoni + 118 -2.5 cm 143 mum 6.64 m 999 GeV 37.6 keV 15.8 cm 6.64 m WorldPV MuIoni + 119 -2.5 cm 147 mum 6.79 m 999 GeV 35.5 keV 14.9 cm 6.79 m WorldPV MuIoni + 120 -2.5 cm 147 mum 6.79 m 999 GeV 0 eV 259 mum 6.79 m WorldPV MuIoni + 121 -2.5 cm 148 mum 6.84 m 999 GeV 11.1 keV 4.88 cm 6.84 m WorldPV MuIoni + 122 -2.5 cm 149 mum 6.88 m 999 GeV 7.39 keV 3.99 cm 6.88 m WorldPV MuIoni + 123 -2.5 cm 151 mum 6.97 m 999 GeV 20 keV 8.63 cm 6.97 m WorldPV MuIoni + 124 -2.5 cm 155 mum 7.14 m 999 GeV 36.5 keV 17 cm 7.14 m WorldPV MuIoni + 125 -2.5 cm 155 mum 7.16 m 999 GeV 4.02 keV 2.08 cm 7.16 m WorldPV MuIoni + 126 -2.5 cm 158 mum 7.26 m 999 GeV 22 keV 10.7 cm 7.26 m WorldPV MuIoni + 127 -2.5 cm 159 mum 7.3 m 999 GeV 7.18 keV 3.46 cm 7.3 m WorldPV MuIoni + 128 -2.5 cm 162 mum 7.45 m 999 GeV 23.2 keV 14.7 cm 7.45 m WorldPV MuIoni + 129 -2.5 cm 164 mum 7.5 m 999 GeV 8.45 keV 5.4 cm 7.5 m OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 118, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 162 mum 7.45 m 7.27 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.54 cm 472 mum 7.45 m 4.26 keV 3.01 keV 587 mum 587 mum WorldPV eIoni + 2 -2.56 cm 658 mum 7.45 m 1.64 keV 1.56 keV 254 mum 841 mum WorldPV eIoni + 3 -2.56 cm 629 mum 7.45 m 0 eV 1.64 keV 122 mum 963 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 119, Parent ID = 118 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.56 cm 658 mum 7.45 m 1.06 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.56 cm 668 mum 7.45 m 0 eV 1.06 keV 65.7 mum 65.7 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 117, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 159 mum 7.3 m 2.36 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.5 cm 168 mum 7.3 m 1.23 keV 118 eV 12.6 mum 12.6 mum WorldPV eIoni + 2 -2.49 cm 160 mum 7.3 m 0 eV 1.23 keV 80.4 mum 93.1 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 120, Parent ID = 117 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 168 mum 7.3 m 1.02 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.5 cm 211 mum 7.3 m 0 eV 1.02 keV 62.8 mum 62.8 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 116, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 158 mum 7.26 m 1.34 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.49 cm 180 mum 7.26 m 0 eV 1.34 keV 90.6 mum 90.6 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 115, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 155 mum 7.16 m 1.09 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.5 cm 174 mum 7.16 m 0 eV 1.09 keV 68.4 mum 68.4 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 114, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 155 mum 7.14 m 1.1 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.5 cm 181 mum 7.14 m 0 eV 1.1 keV 69.3 mum 69.3 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 113, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 151 mum 6.97 m 67.3 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.92 cm 7.18 mm 6.97 m 61.9 keV 3.26 keV 9.55 mm 9.55 mm WorldPV eIoni + 2 -1.83 cm 9.12 mm 6.97 m 59.5 keV 1.01 keV 2.25 mm 1.18 cm WorldPV eIoni + 3 -1.84 cm 2.23 cm 6.97 m 53.4 keV 6.1 keV 1.36 cm 2.54 cm WorldPV eIoni + 4 -1.64 cm 2.4 cm 6.97 m 49.1 keV 1.08 keV 3.32 mm 2.87 cm WorldPV eIoni + 5 -1.27 cm 3.26 cm 6.97 m 42.4 keV 6.7 keV 9.67 mm 3.84 cm WorldPV eIoni + 6 -7.8 mm 3.43 cm 6.97 m 25.6 keV 4.32 keV 5.33 mm 4.37 cm WorldPV eIoni + 7 -6.37 mm 3.58 cm 6.96 m 23.4 keV 2.2 keV 3.18 mm 4.69 cm WorldPV eIoni + 8 -7.56 mm 3.41 cm 6.96 m 21 keV 2.42 keV 2.76 mm 4.96 cm WorldPV eIoni + 9 -7.95 mm 3.25 cm 6.96 m 18.5 keV 2.53 keV 2.3 mm 5.19 cm WorldPV eIoni + 10 -9.42 mm 3.15 cm 6.96 m 17.2 keV 1.29 keV 1.9 mm 5.38 cm WorldPV eIoni + 11 -9.5 mm 2.99 cm 6.96 m 15.5 keV 1.75 keV 1.69 mm 5.55 cm WorldPV eIoni + 12 -1.01 cm 2.87 cm 6.96 m 12.3 keV 3.16 keV 1.45 mm 5.7 cm WorldPV eIoni + 13 -1.04 cm 2.79 cm 6.96 m 9.92 keV 2.39 keV 1.06 mm 5.8 cm WorldPV eIoni + 14 -1.05 cm 2.72 cm 6.96 m 8.69 keV 1.23 keV 811 mum 5.88 cm WorldPV eIoni + 15 -1.09 cm 2.68 cm 6.96 m 7.81 keV 877 eV 702 mum 5.95 cm WorldPV eIoni + 16 -1.09 cm 2.62 cm 6.96 m 5.16 keV 2.65 keV 630 mum 6.02 cm WorldPV eIoni + 17 -1.12 cm 2.59 cm 6.96 m 2.24 keV 2.92 keV 437 mum 6.06 cm WorldPV eIoni + 18 -1.12 cm 2.59 cm 6.96 m 0 eV 2.24 keV 193 mum 6.08 cm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 124, Parent ID = 113 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -7.8 mm 3.43 cm 6.97 m 12.4 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -7.24 mm 3.43 cm 6.97 m 9.58 keV 1.24 keV 604 mum 604 mum WorldPV eIoni + 2 -6.83 mm 3.44 cm 6.97 m 7.55 keV 904 eV 540 mum 1.14 mm WorldPV eIoni + 3 -6.28 mm 3.42 cm 6.97 m 5.7 keV 1.85 keV 610 mum 1.75 mm WorldPV eIoni + 4 -6.27 mm 3.42 cm 6.97 m 4.31 keV 58.4 eV 13.2 mum 1.77 mm WorldPV eIoni + 5 -6.25 mm 3.44 cm 6.97 m 2.41 keV 1.9 keV 380 mum 2.15 mm WorldPV eIoni + 6 -6.08 mm 3.44 cm 6.97 m 387 eV 2.02 keV 217 mum 2.36 mm WorldPV eIoni + 7 -6.06 mm 3.44 cm 6.97 m 0 eV 387 eV 22 mum 2.39 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 127, Parent ID = 124 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -6.27 mm 3.42 cm 6.97 m 1.33 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -6.26 mm 3.41 cm 6.97 m 0 eV 1.33 keV 90.1 mum 90.1 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 126, Parent ID = 124 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -6.83 mm 3.44 cm 6.97 m 1.12 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -6.82 mm 3.43 cm 6.97 m 0 eV 1.12 keV 70.8 mum 70.8 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 125, Parent ID = 124 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -7.24 mm 3.43 cm 6.97 m 1.56 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -7.22 mm 3.44 cm 6.97 m 0 eV 1.56 keV 113 mum 113 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 123, Parent ID = 113 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.64 cm 2.4 cm 6.97 m 3.27 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.62 cm 2.4 cm 6.97 m 1.41 keV 1.85 keV 302 mum 302 mum WorldPV eIoni + 2 -1.61 cm 2.4 cm 6.97 m 0 eV 1.41 keV 97.7 mum 400 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 122, Parent ID = 113 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.83 cm 9.12 mm 6.97 m 1.35 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.83 cm 9.11 mm 6.97 m 0 eV 1.35 keV 91.5 mum 91.5 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 121, Parent ID = 113 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.92 cm 7.18 mm 6.97 m 2.19 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.91 cm 7.2 mm 6.97 m 0 eV 2.19 keV 188 mum 188 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 112, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 149 mum 6.88 m 4.94 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.47 cm -72.8 mum 6.88 m 3.59 keV 1.35 keV 422 mum 422 mum WorldPV eIoni + 2 -2.44 cm -161 mum 6.88 m 1.83 keV 1.75 keV 328 mum 749 mum WorldPV eIoni + 3 -2.44 cm -106 mum 6.88 m 0 eV 1.83 keV 142 mum 892 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 111, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 148 mum 6.84 m 11.8 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.53 cm 242 mum 6.84 m 6.83 keV 160 eV 319 mum 319 mum WorldPV eIoni + 2 -2.55 cm -125 mum 6.84 m 6.21 keV 625 eV 553 mum 872 mum WorldPV eIoni + 3 -2.55 cm -265 mum 6.84 m 5.1 keV 1.11 keV 509 mum 1.38 mm WorldPV eIoni + 4 -2.53 cm -627 mum 6.84 m 3.7 keV 1.39 keV 433 mum 1.81 mm WorldPV eIoni + 5 -2.52 cm -921 mum 6.84 m 1.66 keV 2.05 keV 337 mum 2.15 mm WorldPV eIoni + 6 -2.51 cm -946 mum 6.84 m 0 eV 1.66 keV 123 mum 2.27 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 128, Parent ID = 111 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.53 cm 242 mum 6.84 m 4.83 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.54 cm 290 mum 6.84 m 2.62 keV 288 eV 151 mum 151 mum WorldPV eIoni + 2 -2.54 cm 286 mum 6.84 m 0 eV 2.62 keV 241 mum 392 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 129, Parent ID = 128 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.54 cm 290 mum 6.84 m 1.92 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.54 cm 395 mum 6.84 m 0 eV 1.92 keV 153 mum 153 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 110, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 147 mum 6.79 m 2.93 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.49 cm -71.7 mum 6.79 m 562 eV 2.37 keV 273 mum 273 mum WorldPV eIoni + 2 -2.49 cm -53.3 mum 6.79 m 0 eV 562 eV 31.3 mum 305 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 109, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 147 mum 6.79 m 1.95 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.5 cm 33.4 mum 6.79 m 0 eV 1.95 keV 156 mum 156 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 108, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 143 mum 6.64 m 2.55 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.49 cm -9.64 mum 6.64 m 469 eV 2.08 keV 234 mum 234 mum WorldPV eIoni + 2 -2.49 cm -18.1 mum 6.64 m 0 eV 469 eV 26.2 mum 260 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 107, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 139 mum 6.48 m 1.11 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.5 cm 97 mum 6.48 m 0 eV 1.11 keV 70.2 mum 70.2 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 106, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 138 mum 6.43 m 1.89 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.5 cm 231 mum 6.43 m 0 eV 1.89 keV 149 mum 149 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 105, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 136 mum 6.39 m 1.72 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.51 cm 186 mum 6.39 m 0 eV 1.72 keV 131 mum 131 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 104, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 135 mum 6.32 m 1.86 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.51 cm 101 mum 6.32 m 0 eV 1.86 keV 146 mum 146 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 103, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 135 mum 6.32 m 2.02 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.5 cm 19.3 mum 6.32 m 0 eV 2.02 keV 166 mum 166 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 102, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 133 mum 6.27 m 3.17 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.52 cm 270 mum 6.27 m 163 eV 3.01 keV 294 mum 294 mum WorldPV eIoni + 2 -2.52 cm 276 mum 6.27 m 0 eV 163 eV 12.8 mum 307 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 101, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 133 mum 6.24 m 1.14 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.5 cm 183 mum 6.24 m 0 eV 1.14 keV 72.5 mum 72.5 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 100, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 132 mum 6.22 m 1.8 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.5 cm 228 mum 6.22 m 0 eV 1.8 keV 139 mum 139 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 99, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 131 mum 6.18 m 1.07 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.5 cm 100 mum 6.18 m 0 eV 1.07 keV 67 mum 67 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 98, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 130 mum 6.14 m 2.54 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.52 cm 140 mum 6.14 m 734 eV 1.8 keV 232 mum 232 mum WorldPV eIoni + 2 -2.52 cm 125 mum 6.14 m 0 eV 734 eV 41.9 mum 274 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 97, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 129 mum 6.1 m 1.28 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.5 cm 68.3 mum 6.1 m 0 eV 1.28 keV 85.2 mum 85.2 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 96, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 128 mum 6.08 m 1.21 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.51 cm 114 mum 6.08 m 0 eV 1.21 keV 79.1 mum 79.1 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 95, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 126 mum 6.01 m 1.28 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.49 cm 153 mum 6.01 m 0 eV 1.28 keV 84.7 mum 84.7 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 94, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 125 mum 5.95 m 2.43 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.5 cm -42.5 mum 5.95 m 898 eV 1.53 keV 219 mum 219 mum WorldPV eIoni + 2 -2.5 cm -73.8 mum 5.95 m 0 eV 898 eV 53.4 mum 272 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 93, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 124 mum 5.92 m 1.75 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.5 cm 27.3 mum 5.92 m 0 eV 1.75 keV 134 mum 134 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 92, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 120 mum 5.77 m 9.19 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.55 cm 609 mum 5.77 m 8.01 keV 1.18 keV 747 mum 747 mum WorldPV eIoni + 2 -2.6 cm 917 mum 5.77 m 5.43 keV 2.58 keV 645 mum 1.39 mm WorldPV eIoni + 3 -2.61 cm 1.06 mm 5.77 m 1.67 keV 2.27 keV 283 mum 1.68 mm WorldPV eIoni + 4 -2.62 cm 1.08 mm 5.77 m 0 eV 1.67 keV 125 mum 1.8 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 130, Parent ID = 92 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.61 cm 1.06 mm 5.77 m 1.49 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.61 cm 996 mum 5.77 m 0 eV 1.49 keV 106 mum 106 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 91, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 120 mum 5.75 m 4.36 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.47 cm 39.8 mum 5.75 m 2.29 keV 2.06 keV 383 mum 383 mum WorldPV eIoni + 2 -2.47 cm -105 mum 5.75 m 0 eV 2.29 keV 201 mum 583 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 90, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 118 mum 5.68 m 1.37 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.51 cm 148 mum 5.68 m 0 eV 1.37 keV 93.3 mum 93.3 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 89, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 116 mum 5.6 m 1.13 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.51 cm 145 mum 5.6 m 0 eV 1.13 keV 72 mum 72 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 88, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 115 mum 5.57 m 1.3 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.49 cm 100 mum 5.57 m 0 eV 1.3 keV 87.3 mum 87.3 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 87, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 114 mum 5.54 m 6.95 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.49 cm -381 mum 5.54 m 5.68 keV 1.27 keV 562 mum 562 mum WorldPV eIoni + 2 -2.46 cm -54.2 mum 5.54 m 4.27 keV 1.41 keV 471 mum 1.03 mm WorldPV eIoni + 3 -2.43 cm -228 mum 5.54 m 2.31 keV 1.96 keV 377 mum 1.41 mm WorldPV eIoni + 4 -2.44 cm -344 mum 5.54 m 0 eV 2.31 keV 203 mum 1.61 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 86, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 112 mum 5.47 m 1.24 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.5 cm 82.5 mum 5.47 m 0 eV 1.24 keV 81.3 mum 81.3 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 85, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 112 mum 5.46 m 1.45 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.5 cm 39.2 mum 5.46 m 0 eV 1.45 keV 102 mum 102 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 84, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 109 mum 5.37 m 1.17 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.5 cm 102 mum 5.37 m 0 eV 1.17 keV 75.1 mum 75.1 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 83, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 109 mum 5.34 m 1.05 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.51 cm 108 mum 5.34 m 0 eV 1.05 keV 65.4 mum 65.4 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 82, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 107 mum 5.26 m 1.19 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.5 cm 56.3 mum 5.26 m 0 eV 1.19 keV 77.5 mum 77.5 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 81, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 103 mum 5.13 m 1 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.51 cm 90.1 mum 5.13 m 0 eV 1 keV 61.6 mum 61.6 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 80, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 102 mum 5.09 m 9.38 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.43 cm 76.1 mum 5.09 m 7.23 keV 2.15 keV 764 mum 764 mum WorldPV eIoni + 2 -2.4 cm 556 mum 5.09 m 6.19 keV 1.05 keV 584 mum 1.35 mm WorldPV eIoni + 3 -2.36 cm 780 mum 5.09 m 4.29 keV 1.9 keV 508 mum 1.86 mm WorldPV eIoni + 4 -2.33 cm 815 mum 5.09 m 2.18 keV 2.11 keV 378 mum 2.23 mm WorldPV eIoni + 5 -2.33 cm 722 mum 5.09 m 0 eV 2.18 keV 186 mum 2.42 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 79, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 98.6 mum 4.96 m 13.1 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.59 cm -565 mum 4.96 m 11.1 keV 1.99 keV 1.16 mm 1.16 mm Tracker eIoni + 2 -2.63 cm -1.29 mm 4.96 m 9.95 keV 1.18 keV 934 mum 2.09 mm Tracker eIoni + 3 -2.69 cm -1.78 mm 4.96 m 9.01 keV 943 eV 815 mum 2.9 mm Tracker eIoni + 4 -2.74 cm -2.28 mm 4.96 m 6.44 keV 2.57 keV 731 mum 3.64 mm Tracker eIoni + 5 -2.77 cm -2.69 mm 4.96 m 4.06 keV 2.38 keV 526 mum 4.16 mm Tracker eIoni + 6 -2.75 cm -2.94 mm 4.96 m 2.26 keV 1.8 keV 362 mum 4.52 mm Tracker eIoni + 7 -2.76 cm -2.85 mm 4.96 m 0 eV 2.26 keV 197 mum 4.72 mm Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 78, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 96.9 mum 4.9 m 1.78 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.49 cm 85.4 mum 4.9 m 0 eV 1.78 keV 137 mum 137 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 77, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 94.2 mum 4.8 m 3.08 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.51 cm -90.8 mum 4.8 m 34.5 eV 3.05 keV 287 mum 287 mum Tracker eIoni + 2 -2.51 cm -89 mum 4.8 m 0 eV 34.5 eV 5.91 mum 293 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 76, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -76.3 mum 4.93 m 9.41 keV 0 eV 0 fm 0 fm OutOfWorld initStep + 0 -2.5 cm 92.1 mum 4.71 m 2.12 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.51 cm 192 mum 4.71 m 0 eV 2.12 keV 179 mum 179 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 75, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -75.7 mum 4.92 m 1.51 keV 0 eV 0 fm 0 fm OutOfWorld initStep + 0 -2.5 cm 90.4 mum 4.65 m 1.01 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.5 cm 52.9 mum 4.65 m 0 eV 1.01 keV 62.1 mum 62.1 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 74, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -71.6 mum 4.82 m 1.03 keV 0 eV 0 fm 0 fm OutOfWorld initStep + 0 -2.5 cm 88.1 mum 4.56 m 3.87 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.52 cm 385 mum 4.56 m 2.38 keV 1.49 keV 348 mum 348 mum Tracker eIoni + 2 -2.5 cm 366 mum 4.56 m 0 eV 2.38 keV 212 mum 561 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 73, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -70.4 mum 4.79 m 3.89 keV 0 eV 0 fm 0 fm OutOfWorld initStep + 0 -2.5 cm 84.7 mum 4.44 m 1.98 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.49 cm 116 mum 4.44 m 0 eV 1.98 keV 161 mum 161 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 72, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -68 mum 4.73 m 30.2 keV 0 eV 0 fm 0 fm OutOfWorld initStep + 0 -2.5 cm 84.1 mum 4.41 m 11.7 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.55 cm 451 mum 4.41 m 10.1 keV 433 eV 643 mum 643 mum Tracker eIoni + 2 -2.63 cm 637 mum 4.41 m 7.85 keV 2.22 keV 826 mum 1.47 mm Tracker eIoni + 3 -2.66 cm 388 mum 4.41 m 6.32 keV 1.53 keV 633 mum 2.1 mm Tracker eIoni + 4 -2.7 cm 105 mum 4.41 m 5.34 keV 980 eV 517 mum 2.62 mm Tracker eIoni + 5 -2.74 cm 57 mum 4.41 m 3.52 keV 1.82 keV 449 mum 3.07 mm Tracker eIoni + 6 -2.76 cm -71.1 mum 4.41 m 1.12 keV 2.41 keV 323 mum 3.39 mm Tracker eIoni + 7 -2.76 cm -71.3 mum 4.41 m 0 eV 1.12 keV 70.8 mum 3.46 mm Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 131, Parent ID = 72 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.55 cm 451 mum 4.41 m 1.2 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.55 cm 475 mum 4.41 m 0 eV 1.2 keV 78 mum 78 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 71, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -65.1 mum 4.66 m 1.26 keV 0 eV 0 fm 0 fm OutOfWorld initStep + 0 -2.5 cm 82.4 mum 4.35 m 2.78 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.51 cm 265 mum 4.35 m 1.38 keV 1.4 keV 258 mum 258 mum Tracker eIoni + 2 -2.51 cm 296 mum 4.35 m 0 eV 1.38 keV 95.1 mum 353 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 70, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -61.2 mum 4.56 m 4.72 keV 0 eV 0 fm 0 fm OutOfWorld initStep + 0 -2.5 cm 79.7 mum 4.25 m 1.2 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.5 cm 108 mum 4.25 m 0 eV 1.2 keV 78.2 mum 78.2 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 69, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -60.4 mum 4.54 m 2.16 keV 0 eV 0 fm 0 fm OutOfWorld initStep + 0 -2.5 cm 79.5 mum 4.24 m 1.03 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.51 cm 50.3 mum 4.24 m 0 eV 1.03 keV 63.9 mum 63.9 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 68, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -52.3 mum 4.34 m 5.05 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.55 cm 152 mum 4.34 m 3.35 keV 1.71 keV 1.62 mm 1.62 mm Tracker eIoni - 2 -2.55 cm -139 mum 4.34 m 1.6 keV 1.75 keV 1.37 mm 2.99 mm Tracker eIoni - 3 -2.55 cm 49.5 mum 4.34 m 1.2 keV 395 eV 1.04 mm 4.03 mm Tracker eIoni - 4 -2.55 cm -82 mum 4.34 m 914 eV 286 eV 945 mum 4.98 mm Tracker eIoni - 5 -2.55 cm -69 mum 4.34 m 0 eV 914 eV 838 mum 5.82 mm Tracker eIoni + 0 -2.5 cm 78.9 mum 4.22 m 9.55 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.67 cm -126 mum 4.22 m 7.96 MeV 1.57 MeV 3.62 mm 3.62 mm trkChamber eBrem + 2 -2.72 cm -659 mum 4.22 m 7.03 MeV 931 keV 2.57 mm 6.18 mm TrackerTransportation + 3 -3.64 cm 1.07 cm 4.25 m 7.02 MeV 6.44 keV 2.98 cm 3.6 cm Tracker eIoni + 4 -5.84 cm 3.37 cm 4.31 m 7.01 MeV 10.5 keV 6.31 cm 9.91 cm Tracker eIoni + 5 -9.6 cm 7.65 cm 4.41 m 6.99 MeV 13.8 keV 11.9 cm 21.8 cm Tracker eIoni + 6 -11.6 cm 10.1 cm 4.48 m 6.97 MeV 14.3 keV 7.51 cm 29.3 cm Tracker eIoni + 7 -20.7 cm 22.2 cm 4.77 m 6.9 MeV 59.8 keV 33.3 cm 62.6 cm Tracker eIoni + 8 -20.8 cm 22.4 cm 4.78 m 6.9 MeV 2.21 keV 5.54 mm 63.2 cm Tracker eIoni + 9 -21.2 cm 23.1 cm 4.79 m 6.89 MeV 2.22 keV 1.63 cm 64.8 cm Tracker eIoni + 10 -21.7 cm 24.1 cm 4.82 m 6.89 MeV 3.65 keV 2.52 cm 67.3 cm Tracker eIoni + 11 -22.4 cm 25.4 cm 4.85 m 6.88 MeV 6.04 keV 3.3 cm 70.6 cm Tracker eIoni + 12 -23 cm 26.3 cm 4.87 m 6.88 MeV 2.58 keV 2.41 cm 73 cm Tracker eIoni + 13 -26.6 cm 33.2 cm 5.03 m 6.85 MeV 25.5 keV 17.6 cm 90.6 cm WorldPVTransportation + 14 -27.1 cm 34.2 cm 5.05 m 6.84 MeV 3.24 keV 2.48 cm 93.1 cm WorldPV eIoni + 15 -27.2 cm 34.6 cm 5.06 m 6.84 MeV 573 eV 9.36 mm 94.1 cm WorldPV eIoni + 16 -28.5 cm 37.4 cm 5.13 m 6.82 MeV 14.7 keV 7.77 cm 1.02 m WorldPV eIoni + 17 -30.1 cm 40.3 cm 5.2 m 6.8 MeV 15.5 keV 8.11 cm 1.1 m WorldPV eIoni + 18 -34.6 cm 50 cm 5.42 m 6.76 MeV 39.2 keV 24.4 cm 1.34 m WorldPV eIoni + 19 -34.8 cm 50.1 cm 5.42 m 6.76 MeV 903 eV 4.72 mm 1.35 m WorldPV eIoni + 20 -36.2 cm 51.4 cm 5.47 m 6.75 MeV 7.24 keV 4.88 cm 1.4 m WorldPV eIoni + 21 -42.1 cm 56.5 cm 5.65 m 6.71 MeV 38.9 keV 19.9 cm 1.6 m WorldPV eIoni + 22 -45.7 cm 62.6 cm 5.84 m 6.66 MeV 27.4 keV 20 cm 1.8 m WorldPV eIoni + 23 -52.9 cm 74.1 cm 6.15 m 6.6 MeV 45.8 keV 34.3 cm 2.14 m WorldPV eIoni + 24 -55.6 cm 77.2 cm 6.23 m 6.58 MeV 14.9 keV 8.5 cm 2.22 m WorldPV eIoni + 25 -58.2 cm 80 cm 6.3 m 5.89 MeV 14 keV 7.68 cm 2.3 m WorldPV eIoni + 26 -60.9 cm 81.6 cm 6.36 m 5.87 MeV 15.9 keV 7.38 cm 2.37 m WorldPV eIoni + 27 -64.8 cm 83.8 cm 6.46 m 5.85 MeV 18.2 keV 11.2 cm 2.49 m WorldPV eIoni + 28 -74.2 cm 89.3 cm 6.77 m 5.79 MeV 51.3 keV 32.2 cm 2.81 m WorldPV eIoni + 29 -76.2 cm 90 cm 6.83 m 5.78 MeV 15.9 keV 6.62 cm 2.87 m WorldPV eIoni + 30 -83.7 cm 92.7 cm 7.04 m 5.74 MeV 27.2 keV 22.1 cm 3.1 m WorldPV eIoni + 31 -83.8 cm 92.7 cm 7.04 m 5.73 MeV 31.8 eV 1.33 mm 3.1 m WorldPV eIoni + 32 -84.6 cm 93 cm 7.06 m 5.72 MeV 4.62 keV 2.86 cm 3.13 m WorldPV eIoni + 33 -85.9 cm 93.4 cm 7.11 m 5.71 MeV 9.23 keV 4.46 cm 3.17 m WorldPV eIoni + 34 -95 cm 98.1 cm 7.45 m 5.65 MeV 59 keV 36.3 cm 3.53 m WorldPV eIoni + 35 -95.4 cm 97.8 cm 7.48 m 5.64 MeV 4.41 keV 2.15 cm 3.55 m WorldPV eIoni + 36 -96 cm 97.4 cm 7.5 m 5.64 MeV 5.82 keV 2.57 cm 3.58 m OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 164, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -95.4 cm 97.8 cm 7.48 m 5.49 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -95.5 cm 97.8 cm 7.48 m 3.44 keV 2.06 keV 459 mum 459 mum WorldPV eIoni + 2 -95.5 cm 97.8 cm 7.48 m 1.61 keV 1.83 keV 316 mum 775 mum WorldPV eIoni + 3 -95.5 cm 97.8 cm 7.48 m 0 eV 1.61 keV 117 mum 892 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 163, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -95 cm 98.1 cm 7.45 m 1.77 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -95 cm 98.1 cm 7.45 m 0 eV 1.77 keV 136 mum 136 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 162, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -85.9 cm 93.4 cm 7.11 m 1.06 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -85.9 cm 93.3 cm 7.11 m 0 eV 1.06 keV 66.2 mum 66.2 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 161, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -84.6 cm 93 cm 7.06 m 1.3 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -84.6 cm 93 cm 7.06 m 0 eV 1.3 keV 87.1 mum 87.1 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 160, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -83.8 cm 92.7 cm 7.04 m 13.6 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -83.8 cm 92.8 cm 7.04 m 11.5 keV 2.05 keV 1.21 mm 1.21 mm WorldPV eIoni + 2 -83.9 cm 92.9 cm 7.04 m 9.02 keV 1.36 keV 643 mum 1.85 mm WorldPV eIoni + 3 -83.8 cm 92.9 cm 7.04 m 6.79 keV 2.23 keV 732 mum 2.58 mm WorldPV eIoni + 4 -83.8 cm 92.9 cm 7.04 m 4.99 keV 1.8 keV 550 mum 3.13 mm WorldPV eIoni + 5 -83.8 cm 92.9 cm 7.04 m 2.69 keV 2.29 keV 425 mum 3.56 mm WorldPV eIoni + 6 -83.8 cm 92.9 cm 7.04 m 533 eV 2.16 keV 249 mum 3.81 mm WorldPV eIoni + 7 -83.8 cm 92.9 cm 7.04 m 0 eV 533 eV 29.6 mum 3.84 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 165, Parent ID = 160 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -83.9 cm 92.9 cm 7.04 m 1.12 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -83.9 cm 92.9 cm 7.04 m 0 eV 1.12 keV 70.7 mum 70.7 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 159, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -83.7 cm 92.7 cm 7.04 m 3.97 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -83.7 cm 92.8 cm 7.04 m 2.33 keV 1.64 keV 355 mum 355 mum WorldPV eIoni + 2 -83.7 cm 92.8 cm 7.04 m 0 eV 2.33 keV 206 mum 561 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 158, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -76.2 cm 90 cm 6.83 m 1.47 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -76.2 cm 90 cm 6.83 m 0 eV 1.47 keV 104 mum 104 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 157, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -74.2 cm 89.3 cm 6.77 m 1.49 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -74.2 cm 89.2 cm 6.77 m 0 eV 1.49 keV 106 mum 106 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 156, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -64.8 cm 83.8 cm 6.46 m 5.02 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -64.8 cm 83.9 cm 6.46 m 3.52 keV 1.5 keV 427 mum 427 mum WorldPV eIoni + 2 -64.8 cm 83.9 cm 6.46 m 2.08 keV 1.43 keV 322 mum 749 mum WorldPV eIoni + 3 -64.8 cm 83.9 cm 6.46 m 0 eV 2.08 keV 174 mum 923 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 155, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -60.9 cm 81.6 cm 6.36 m 2.19 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -60.9 cm 81.6 cm 6.36 m 0 eV 2.19 keV 187 mum 187 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 154, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -58.2 cm 80 cm 6.3 m 681 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -66.7 cm 94.3 cm 6.35 m 645 keV 22.6 keV 17.8 cm 17.8 cm WorldPV eIoni + 2 -70.2 cm 100 cm 6.38 m 635 keV 7.99 keV 7.16 cm 25 cm WorldPV eIoni + 3 -71.7 cm 1.04 m 6.39 m 629 keV 4.69 keV 4.22 cm 29.2 cm WorldPV eIoni + 4 -72 cm 1.05 m 6.4 m 625 keV 2.88 keV 1.76 cm 31 cm WorldPV eIoni + 5 -72.2 cm 1.07 m 6.41 m 619 keV 2.27 keV 1.66 cm 32.7 cm WorldPV eIoni + 6 -73.9 cm 1.14 m 6.43 m 603 keV 14.3 keV 7.43 cm 40.1 cm WorldPV eIoni + 7 -74.2 cm 1.15 m 6.43 m 593 keV 3.34 keV 1.19 cm 41.3 cm WorldPV eIoni + 8 -74.3 cm 1.15 m 6.43 m 590 keV 383 eV 5.88 mm 41.9 cm WorldPV eIoni + 9 -74.7 cm 1.18 m 6.45 m 584 keV 5.19 keV 2.71 cm 44.6 cm WorldPV eIoni + 10 -77.3 cm 1.25 m 6.49 m 548 keV 11.8 keV 8.45 cm 53 cm WorldPV eIoni + 11 -81.6 cm 1.37 m 6.56 m 513 keV 31.5 keV 15.5 cm 68.5 cm WorldPV eIoni + 12 -81.6 cm 1.38 m 6.56 m 509 keV 1.34 keV 1.53 cm 70.1 cm WorldPV eIoni + 13 -81.7 cm 1.39 m 6.56 m 506 keV 680 eV 5.95 mm 70.7 cm WorldPV eIoni + 14 -84.8 cm 1.54 m 6.54 m 481 keV 23 keV 15.9 cm 86.6 cm WorldPV eIoni + 15 -84.6 cm 1.55 m 6.54 m 478 keV 189 eV 3.25 mm 86.9 cm WorldPV eIoni + 16 -79.6 cm 1.75 m 6.62 m 438 keV 38.4 keV 23 cm 1.1 m WorldPV eIoni + 17 -76.6 cm 1.8 m 6.66 m 428 keV 8.8 keV 6.87 cm 1.17 m WorldPV eIoni + 18 -76.5 cm 1.83 m 6.68 m 420 keV 6.77 keV 3.34 cm 1.2 m WorldPV eIoni + 19 -76.5 cm 1.83 m 6.68 m 418 keV 375 eV 877 mum 1.2 m WorldPV eIoni + 20 -75.3 cm 1.95 m 6.73 m 403 keV 13.6 keV 13.1 cm 1.33 m WorldPV eIoni + 21 -75.2 cm 1.95 m 6.73 m 402 keV 468 eV 5.16 mm 1.34 m WorldPV eIoni + 22 -63.3 cm 2.18 m 6.81 m 352 keV 48.2 keV 27.6 cm 1.61 m WorldPV eIoni + 23 -65.1 cm 2.22 m 6.82 m 332 keV 10.2 keV 4.94 cm 1.66 m WorldPV eIoni + 24 -66.3 cm 2.26 m 6.82 m 322 keV 7.87 keV 3.83 cm 1.7 m WorldPV eIoni + 25 -66.7 cm 2.27 m 6.82 m 296 keV 3.12 keV 1.59 cm 1.72 m WorldPV eIoni + 26 -64.4 cm 2.41 m 6.83 m 256 keV 32.3 keV 14.4 cm 1.86 m WorldPV eIoni + 27 -66.6 cm 2.48 m 6.82 m 244 keV 11 keV 7.6 cm 1.94 m WorldPV eIoni + 28 -66.5 cm 2.52 m 6.82 m 235 keV 8.4 keV 3.6 cm 1.97 m WorldPV eIoni + 29 -66.6 cm 2.53 m 6.82 m 231 keV 1.96 keV 1.18 cm 1.99 m WorldPV eIoni + 30 -68 cm 2.65 m 6.78 m 213 keV 18 keV 13.6 cm 2.12 m WorldPV eIoni + 31 -67.7 cm 2.68 m 6.78 m 207 keV 3.54 keV 3.1 cm 2.15 m WorldPV eIoni + 32 -67.6 cm 2.69 m 6.78 m 205 keV 302 eV 2.71 mm 2.16 m WorldPV eIoni + 33 -67.4 cm 2.69 m 6.79 m 202 keV 991 eV 5.66 mm 2.16 m WorldPV eIoni + 34 -67.6 cm 2.74 m 6.8 m 178 keV 14.8 keV 5.1 cm 2.21 m WorldPV eIoni + 35 -67.6 cm 2.75 m 6.79 m 172 keV 4.63 keV 1.63 cm 2.23 m WorldPV eIoni + 36 -65.7 cm 2.78 m 6.8 m 141 keV 10.5 keV 3.61 cm 2.26 m WorldPV eIoni + 37 -63.9 cm 2.8 m 6.83 m 131 keV 8.09 keV 3.34 cm 2.3 m WorldPV eIoni + 38 -63 cm 2.8 m 6.84 m 125 keV 3.92 keV 1.37 cm 2.31 m WorldPV eIoni + 39 -61.8 cm 2.81 m 6.85 m 117 keV 6.47 keV 2.34 cm 2.34 m WorldPV eIoni + 40 -59.3 cm 2.83 m 6.88 m 103 keV 14.2 keV 4.41 cm 2.38 m WorldPV eIoni + 41 -56.2 cm 2.83 m 6.9 m 94 keV 9.02 keV 3.53 cm 2.41 m WorldPV eIoni + 42 -55.3 cm 2.83 m 6.91 m 86.5 keV 3.48 keV 1.27 cm 2.43 m WorldPV eIoni + 43 -54 cm 2.83 m 6.92 m 77 keV 5.96 keV 2.04 cm 2.45 m WorldPV eIoni + 44 -52.8 cm 2.84 m 6.93 m 69.3 keV 7.69 keV 2.12 cm 2.47 m WorldPV eIoni + 45 -52.4 cm 2.84 m 6.94 m 48.5 keV 4.49 keV 8.6 mm 2.48 m WorldPV eIoni + 46 -51.6 cm 2.85 m 6.94 m 41.5 keV 7.03 keV 9.5 mm 2.49 m WorldPV eIoni + 47 -51 cm 2.85 m 6.95 m 37.2 keV 4.28 keV 7.22 mm 2.49 m WorldPV eIoni + 48 -50.6 cm 2.85 m 6.95 m 33.2 keV 4.06 keV 5.97 mm 2.5 m WorldPV eIoni + 49 -50.2 cm 2.85 m 6.95 m 30 keV 3.2 keV 4.92 mm 2.51 m WorldPV eIoni + 50 -50.1 cm 2.85 m 6.95 m 28.5 keV 367 eV 1.05 mm 2.51 m WorldPV eIoni + 51 -50.1 cm 2.86 m 6.95 m 24 keV 2.14 keV 3.04 mm 2.51 m WorldPV eIoni + 52 -50.1 cm 2.86 m 6.95 m 19.2 keV 4.77 keV 2.85 mm 2.51 m WorldPV eIoni + 53 -50 cm 2.86 m 6.95 m 17.3 keV 1.95 keV 2.01 mm 2.51 m WorldPV eIoni + 54 -50 cm 2.86 m 6.95 m 15.8 keV 432 eV 408 mum 2.51 m WorldPV eIoni + 55 -50 cm 2.86 m 6.95 m 14 keV 1.78 keV 1.49 mm 2.52 m WorldPV eIoni + 56 -50 cm 2.86 m 6.95 m 11 keV 3.01 keV 1.26 mm 2.52 m WorldPV eIoni + 57 -49.9 cm 2.86 m 6.95 m 9.77 keV 1.19 keV 917 mum 2.52 m WorldPV eIoni + 58 -49.8 cm 2.86 m 6.96 m 7.13 keV 2.64 keV 799 mum 2.52 m WorldPV eIoni + 59 -49.8 cm 2.86 m 6.96 m 3.45 keV 355 eV 351 mum 2.52 m WorldPV eIoni + 60 -49.8 cm 2.86 m 6.96 m 922 eV 2.52 keV 317 mum 2.52 m WorldPV eIoni + 61 -49.8 cm 2.86 m 6.96 m 0 eV 922 eV 55.2 mum 2.52 m WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 210, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -49.8 cm 2.86 m 6.96 m 3.33 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -49.8 cm 2.86 m 6.96 m 811 eV 2.52 keV 307 mum 307 mum WorldPV eIoni + 2 -49.8 cm 2.86 m 6.96 m 0 eV 811 eV 47.2 mum 354 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 209, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -50 cm 2.86 m 6.95 m 1.08 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -50 cm 2.86 m 6.95 m 0 eV 1.08 keV 67.8 mum 67.8 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 208, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -50.1 cm 2.86 m 6.95 m 2.42 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -50.1 cm 2.86 m 6.95 m 539 eV 1.88 keV 218 mum 218 mum WorldPV eIoni + 2 -50.1 cm 2.86 m 6.95 m 0 eV 539 eV 30 mum 248 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 207, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -50.1 cm 2.85 m 6.95 m 1.06 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -50.1 cm 2.85 m 6.95 m 0 eV 1.06 keV 66 mum 66 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 206, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -52.4 cm 2.84 m 6.94 m 16.2 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -52.4 cm 2.84 m 6.94 m 14.8 keV 1.47 keV 1.56 mm 1.56 mm WorldPV eIoni + 2 -52.5 cm 2.85 m 6.94 m 11.4 keV 3.41 keV 1.36 mm 2.92 mm WorldPV eIoni + 3 -52.4 cm 2.84 m 6.94 m 9.57 keV 1.79 keV 958 mum 3.88 mm WorldPV eIoni + 4 -52.3 cm 2.85 m 6.94 m 7.3 keV 2.27 keV 780 mum 4.66 mm WorldPV eIoni + 5 -52.3 cm 2.85 m 6.94 m 5.8 keV 1.49 keV 589 mum 5.24 mm WorldPV eIoni + 6 -52.3 cm 2.85 m 6.94 m 2.92 keV 2.89 keV 480 mum 5.72 mm WorldPV eIoni + 7 -52.3 cm 2.84 m 6.94 m 1.05 keV 1.87 keV 272 mum 6 mm WorldPV eIoni + 8 -52.3 cm 2.85 m 6.94 m 0 eV 1.05 keV 64.9 mum 6.06 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 205, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -54 cm 2.83 m 6.92 m 3.58 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -54 cm 2.83 m 6.92 m 614 eV 2.96 keV 327 mum 327 mum WorldPV eIoni + 2 -54 cm 2.83 m 6.92 m 0 eV 614 eV 34.3 mum 361 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 204, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -55.3 cm 2.83 m 6.91 m 4.03 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -55.3 cm 2.83 m 6.91 m 1.24 keV 2.79 keV 359 mum 359 mum WorldPV eIoni + 2 -55.3 cm 2.83 m 6.91 m 0 eV 1.24 keV 81.7 mum 441 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 203, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -61.8 cm 2.81 m 6.85 m 1.72 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -61.8 cm 2.81 m 6.85 m 0 eV 1.72 keV 131 mum 131 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 202, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -63 cm 2.8 m 6.84 m 2.12 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -63 cm 2.8 m 6.84 m 0 eV 2.12 keV 178 mum 178 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 201, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -63.9 cm 2.8 m 6.83 m 1 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -63.9 cm 2.8 m 6.83 m 0 eV 1 keV 61.4 mum 61.4 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 200, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -65.7 cm 2.78 m 6.8 m 20.5 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -65.7 cm 2.78 m 6.8 m 16.9 keV 1.96 keV 2.15 mm 2.15 mm WorldPV eIoni + 2 -65.7 cm 2.79 m 6.8 m 13.4 keV 3.44 keV 1.65 mm 3.79 mm WorldPV eIoni + 3 -65.7 cm 2.79 m 6.8 m 12.1 keV 1.38 keV 1.19 mm 4.99 mm WorldPV eIoni + 4 -65.6 cm 2.79 m 6.8 m 9.94 keV 2.11 keV 1.03 mm 6.02 mm WorldPV eIoni + 5 -65.6 cm 2.79 m 6.8 m 8.96 keV 983 eV 814 mum 6.83 mm WorldPV eIoni + 6 -65.5 cm 2.79 m 6.8 m 5.8 keV 3.16 keV 727 mum 7.56 mm WorldPV eIoni + 7 -65.5 cm 2.79 m 6.8 m 2.63 keV 3.17 keV 479 mum 8.04 mm WorldPV eIoni + 8 -65.5 cm 2.79 m 6.8 m 938 eV 1.69 keV 243 mum 8.28 mm WorldPV eIoni + 9 -65.5 cm 2.79 m 6.8 m 0 eV 938 eV 56.4 mum 8.34 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 211, Parent ID = 200 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -65.7 cm 2.78 m 6.8 m 1.66 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -65.7 cm 2.78 m 6.8 m 0 eV 1.66 keV 124 mum 124 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 199, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -67.6 cm 2.75 m 6.79 m 1.69 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -67.6 cm 2.75 m 6.79 m 0 eV 1.69 keV 127 mum 127 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 198, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -67.6 cm 2.74 m 6.8 m 9.09 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -67.6 cm 2.74 m 6.8 m 8.05 keV 1.04 keV 738 mum 738 mum WorldPV eIoni + 2 -67.6 cm 2.74 m 6.8 m 6.42 keV 38.6 eV 52.2 mum 790 mum WorldPV eIoni + 3 -67.7 cm 2.74 m 6.8 m 4.21 keV 2.21 keV 524 mum 1.31 mm WorldPV eIoni + 4 -67.7 cm 2.74 m 6.8 m 2.44 keV 1.77 keV 372 mum 1.69 mm WorldPV eIoni + 5 -67.7 cm 2.74 m 6.8 m 0 eV 2.44 keV 221 mum 1.91 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 212, Parent ID = 198 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -67.6 cm 2.74 m 6.8 m 1.59 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -67.6 cm 2.74 m 6.8 m 0 eV 1.59 keV 116 mum 116 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 197, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -67.4 cm 2.69 m 6.79 m 2.65 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -67.4 cm 2.69 m 6.79 m 207 eV 2.44 keV 245 mum 245 mum WorldPV eIoni + 2 -67.4 cm 2.69 m 6.79 m 0 eV 207 eV 14.5 mum 259 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 196, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -67.6 cm 2.69 m 6.78 m 1.19 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -67.6 cm 2.69 m 6.78 m 0 eV 1.19 keV 77.1 mum 77.1 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 195, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -67.7 cm 2.68 m 6.78 m 2.09 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -67.7 cm 2.68 m 6.78 m 0 eV 2.09 keV 175 mum 175 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 194, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -66.6 cm 2.53 m 6.82 m 2.12 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -66.6 cm 2.53 m 6.82 m 0 eV 2.12 keV 178 mum 178 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 193, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -66.5 cm 2.52 m 6.82 m 1.22 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -66.5 cm 2.52 m 6.82 m 0 eV 1.22 keV 79.7 mum 79.7 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 192, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -66.6 cm 2.48 m 6.82 m 1.05 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -66.6 cm 2.48 m 6.82 m 0 eV 1.05 keV 65.6 mum 65.6 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 191, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -64.4 cm 2.41 m 6.83 m 7.64 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -64.4 cm 2.41 m 6.83 m 6.74 keV 901 eV 616 mum 616 mum WorldPV eIoni + 2 -64.4 cm 2.41 m 6.83 m 3.69 keV 3.05 keV 547 mum 1.16 mm WorldPV eIoni + 3 -64.4 cm 2.41 m 6.83 m 2.27 keV 107 eV 72.6 mum 1.24 mm WorldPV eIoni + 4 -64.4 cm 2.41 m 6.83 m 0 eV 2.27 keV 198 mum 1.43 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 213, Parent ID = 191 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -64.4 cm 2.41 m 6.83 m 1.31 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -64.4 cm 2.41 m 6.83 m 0 eV 1.31 keV 87.7 mum 87.7 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 190, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -66.7 cm 2.27 m 6.82 m 22.9 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -66.7 cm 2.27 m 6.82 m 18.8 keV 166 eV 569 mum 569 mum WorldPV eIoni + 2 -66.8 cm 2.27 m 6.82 m 16.5 keV 2.25 keV 1.94 mm 2.51 mm WorldPV eIoni + 3 -66.9 cm 2.27 m 6.82 m 14.3 keV 298 eV 151 mum 2.66 mm WorldPV eIoni + 4 -66.9 cm 2.27 m 6.82 m 11.8 keV 2.48 keV 1.29 mm 3.95 mm WorldPV eIoni + 5 -67 cm 2.27 m 6.82 m 8.7 keV 3.1 keV 1 mm 4.95 mm WorldPV eIoni + 6 -67 cm 2.27 m 6.82 m 7.8 keV 900 eV 703 mum 5.66 mm WorldPV eIoni + 7 -67.1 cm 2.27 m 6.82 m 5.94 keV 1.86 keV 629 mum 6.28 mm WorldPV eIoni + 8 -67.1 cm 2.28 m 6.82 m 4.19 keV 1.74 keV 489 mum 6.77 mm WorldPV eIoni + 9 -67.1 cm 2.28 m 6.82 m 3.07 keV 3.67 eV 176 mum 6.95 mm WorldPV eIoni + 10 -67.1 cm 2.28 m 6.82 m 0 eV 3.07 keV 286 mum 7.24 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 216, Parent ID = 190 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -67.1 cm 2.28 m 6.82 m 1.12 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -67.1 cm 2.28 m 6.82 m 0 eV 1.12 keV 70.9 mum 70.9 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 215, Parent ID = 190 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -66.9 cm 2.27 m 6.82 m 1.94 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -66.9 cm 2.27 m 6.82 m 0 eV 1.94 keV 155 mum 155 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 214, Parent ID = 190 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -66.7 cm 2.27 m 6.82 m 3.99 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -66.7 cm 2.27 m 6.82 m 2.39 keV 1.59 keV 356 mum 356 mum WorldPV eIoni + 2 -66.8 cm 2.27 m 6.82 m 0 eV 2.39 keV 215 mum 571 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 189, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -66.3 cm 2.26 m 6.82 m 2.22 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -66.3 cm 2.26 m 6.82 m 0 eV 2.22 keV 191 mum 191 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 188, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -65.1 cm 2.22 m 6.82 m 9 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -65.2 cm 2.22 m 6.82 m 7.2 keV 1.8 keV 730 mum 730 mum WorldPV eIoni + 2 -65.2 cm 2.22 m 6.82 m 5.57 keV 1.63 keV 582 mum 1.31 mm WorldPV eIoni + 3 -65.2 cm 2.22 m 6.82 m 3.35 keV 2.22 keV 464 mum 1.78 mm WorldPV eIoni + 4 -65.2 cm 2.22 m 6.82 m 1.76 keV 1.6 keV 309 mum 2.09 mm WorldPV eIoni + 5 -65.3 cm 2.22 m 6.82 m 0 eV 1.76 keV 134 mum 2.22 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 187, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -63.3 cm 2.18 m 6.81 m 1.93 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -63.3 cm 2.18 m 6.81 m 0 eV 1.93 keV 154 mum 154 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 186, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -75.2 cm 1.95 m 6.73 m 1.18 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -75.2 cm 1.95 m 6.73 m 0 eV 1.18 keV 76.7 mum 76.7 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 185, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -75.3 cm 1.95 m 6.73 m 1.5 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -75.3 cm 1.95 m 6.73 m 0 eV 1.5 keV 107 mum 107 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 184, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -76.5 cm 1.83 m 6.68 m 1.17 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -76.5 cm 1.83 m 6.68 m 0 eV 1.17 keV 75.1 mum 75.1 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 183, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -76.5 cm 1.83 m 6.68 m 1.25 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -76.5 cm 1.83 m 6.68 m 0 eV 1.25 keV 82.6 mum 82.6 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 182, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -76.6 cm 1.8 m 6.66 m 1.13 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -76.6 cm 1.8 m 6.66 m 0 eV 1.13 keV 71.7 mum 71.7 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 181, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -79.6 cm 1.75 m 6.62 m 1.34 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -79.6 cm 1.75 m 6.62 m 0 eV 1.34 keV 90.9 mum 90.9 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 180, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -84.6 cm 1.55 m 6.54 m 3.09 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -84.7 cm 1.55 m 6.54 m 570 eV 2.52 keV 287 mum 287 mum WorldPV eIoni + 2 -84.7 cm 1.55 m 6.54 m 0 eV 570 eV 31.8 mum 319 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 179, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -84.8 cm 1.54 m 6.54 m 1.78 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -84.8 cm 1.54 m 6.54 m 0 eV 1.78 keV 137 mum 137 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 178, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -81.7 cm 1.39 m 6.56 m 2.98 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -81.7 cm 1.39 m 6.56 m 214 eV 2.77 keV 278 mum 278 mum WorldPV eIoni + 2 -81.7 cm 1.39 m 6.56 m 0 eV 214 eV 14.7 mum 293 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 177, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -81.6 cm 1.38 m 6.56 m 1.75 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -81.6 cm 1.38 m 6.56 m 0 eV 1.75 keV 134 mum 134 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 176, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -81.6 cm 1.37 m 6.56 m 3.56 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -81.6 cm 1.37 m 6.56 m 2.49 keV 1.07 keV 326 mum 326 mum WorldPV eIoni + 2 -81.6 cm 1.37 m 6.56 m 0 eV 2.49 keV 227 mum 552 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 175, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -77.3 cm 1.25 m 6.49 m 24.5 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -77.5 cm 1.24 m 6.49 m 21 keV 2.15 keV 2.43 mm 2.43 mm WorldPV eIoni + 2 -77.5 cm 1.24 m 6.49 m 17.1 keV 1.4 keV 767 mum 3.2 mm WorldPV eIoni + 3 -77.6 cm 1.25 m 6.49 m 15.1 keV 2 keV 1.68 mm 4.87 mm WorldPV eIoni + 4 -77.6 cm 1.25 m 6.49 m 13.4 keV 158 eV 178 mum 5.05 mm WorldPV eIoni + 5 -77.7 cm 1.25 m 6.49 m 10.9 keV 2.53 keV 1.19 mm 6.24 mm WorldPV eIoni + 6 -77.7 cm 1.25 m 6.49 m 9 keV 166 eV 129 mum 6.37 mm WorldPV eIoni + 7 -77.8 cm 1.25 m 6.49 m 6.79 keV 2.21 keV 730 mum 7.1 mm WorldPV eIoni + 8 -77.8 cm 1.25 m 6.49 m 4.4 keV 2.39 keV 550 mum 7.65 mm WorldPV eIoni + 9 -77.8 cm 1.25 m 6.49 m 1.97 keV 2.43 keV 385 mum 8.04 mm WorldPV eIoni + 10 -77.8 cm 1.25 m 6.49 m 0 eV 1.97 keV 159 mum 8.2 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 220, Parent ID = 175 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -77.7 cm 1.25 m 6.49 m 1.75 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -77.7 cm 1.25 m 6.49 m 0 eV 1.75 keV 133 mum 133 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 219, Parent ID = 175 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -77.6 cm 1.25 m 6.49 m 1.5 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -77.6 cm 1.25 m 6.49 m 0 eV 1.5 keV 106 mum 106 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 218, Parent ID = 175 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -77.5 cm 1.24 m 6.49 m 2.46 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -77.5 cm 1.24 m 6.49 m 1.11 keV 1.35 keV 223 mum 223 mum WorldPV eIoni + 2 -77.5 cm 1.24 m 6.49 m 0 eV 1.11 keV 69.7 mum 293 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 217, Parent ID = 175 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -77.5 cm 1.24 m 6.49 m 1.36 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -77.5 cm 1.24 m 6.49 m 0 eV 1.36 keV 92.7 mum 92.7 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 174, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -74.7 cm 1.18 m 6.45 m 1.04 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -74.7 cm 1.18 m 6.45 m 0 eV 1.04 keV 64.6 mum 64.6 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 173, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -74.3 cm 1.15 m 6.43 m 2.6 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -74.3 cm 1.15 m 6.43 m 0 eV 2.6 keV 240 mum 240 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 172, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -74.2 cm 1.15 m 6.43 m 6.62 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -74.1 cm 1.15 m 6.43 m 4.4 keV 2.22 keV 538 mum 538 mum WorldPV eIoni + 2 -74.2 cm 1.15 m 6.43 m 2.56 keV 1.84 keV 385 mum 924 mum WorldPV eIoni + 3 -74.2 cm 1.15 m 6.43 m 0 eV 2.56 keV 234 mum 1.16 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 171, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -73.9 cm 1.14 m 6.43 m 1.34 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -73.9 cm 1.14 m 6.43 m 0 eV 1.34 keV 91.1 mum 91.1 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 170, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -72.2 cm 1.07 m 6.41 m 3.89 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -72.2 cm 1.07 m 6.41 m 2.57 keV 1.32 keV 350 mum 350 mum WorldPV eIoni + 2 -72.2 cm 1.07 m 6.41 m 173 eV 2.39 keV 236 mum 585 mum WorldPV eIoni + 3 -72.2 cm 1.07 m 6.41 m 0 eV 173 eV 13.2 mum 599 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 169, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -72 cm 1.05 m 6.4 m 1.79 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -72.1 cm 1.05 m 6.4 m 0 eV 1.79 keV 138 mum 138 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 168, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -71.7 cm 1.04 m 6.39 m 1.06 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -71.7 cm 1.04 m 6.39 m 0 eV 1.06 keV 66.1 mum 66.1 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 167, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -70.2 cm 100 cm 6.38 m 1.39 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -70.2 cm 100 cm 6.38 m 0 eV 1.39 keV 96.1 mum 96.1 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 166, Parent ID = 154 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -66.7 cm 94.3 cm 6.35 m 13.4 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -66.7 cm 94.4 cm 6.35 m 12.1 keV 1.28 keV 1.19 mm 1.19 mm WorldPV eIoni + 2 -66.6 cm 94.4 cm 6.35 m 10.9 keV 1.25 keV 1.04 mm 2.23 mm WorldPV eIoni + 3 -66.6 cm 94.4 cm 6.35 m 8.72 keV 2.17 keV 910 mum 3.14 mm WorldPV eIoni + 4 -66.5 cm 94.3 cm 6.35 m 7.64 keV 1.08 keV 705 mum 3.85 mm WorldPV eIoni + 5 -66.5 cm 94.3 cm 6.35 m 6.19 keV 1.45 keV 616 mum 4.46 mm WorldPV eIoni + 6 -66.6 cm 94.3 cm 6.35 m 5.25 keV 937 eV 508 mum 4.97 mm WorldPV eIoni + 7 -66.6 cm 94.4 cm 6.35 m 3.66 keV 1.58 keV 443 mum 5.41 mm WorldPV eIoni + 8 -66.6 cm 94.4 cm 6.35 m 85.2 eV 3.58 keV 334 mum 5.75 mm WorldPV eIoni + 9 -66.6 cm 94.4 cm 6.35 m 0 eV 85.2 eV 9.29 mum 5.76 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 153, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -55.6 cm 77.2 cm 6.23 m 5.73 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -55.6 cm 77.2 cm 6.23 m 3.31 keV 2.42 keV 474 mum 474 mum WorldPV eIoni + 2 -55.6 cm 77.2 cm 6.23 m 1.14 keV 2.17 keV 305 mum 780 mum WorldPV eIoni + 3 -55.6 cm 77.2 cm 6.23 m 0 eV 1.14 keV 72.9 mum 852 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 152, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -52.9 cm 74.1 cm 6.15 m 8.26 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -52.9 cm 74.1 cm 6.15 m 4.97 keV 3.29 keV 665 mum 665 mum WorldPV eIoni + 2 -52.9 cm 74 cm 6.15 m 2.97 keV 2 keV 424 mum 1.09 mm WorldPV eIoni + 3 -52.9 cm 74 cm 6.15 m 202 eV 2.77 keV 277 mum 1.37 mm WorldPV eIoni + 4 -52.9 cm 74 cm 6.15 m 0 eV 202 eV 14.3 mum 1.38 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 151, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -45.7 cm 62.6 cm 5.84 m 21.8 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -45.6 cm 62.4 cm 5.84 m 18.6 keV 3.23 keV 2.45 mm 2.45 mm WorldPV eIoni + 2 -45.5 cm 62.3 cm 5.84 m 15.6 keV 3 keV 1.91 mm 4.36 mm WorldPV eIoni + 3 -45.5 cm 62.5 cm 5.84 m 13.4 keV 2.14 keV 1.47 mm 5.82 mm WorldPV eIoni + 4 -45.6 cm 62.6 cm 5.84 m 10.6 keV 2.8 keV 1.19 mm 7.02 mm WorldPV eIoni + 5 -45.6 cm 62.6 cm 5.84 m 8.81 keV 1.82 keV 884 mum 7.9 mm WorldPV eIoni + 6 -45.6 cm 62.7 cm 5.84 m 5.82 keV 3 keV 713 mum 8.62 mm WorldPV eIoni + 7 -45.6 cm 62.7 cm 5.84 m 4.47 keV 288 eV 90.4 mum 8.71 mm WorldPV eIoni + 8 -45.6 cm 62.7 cm 5.84 m 3.46 keV 1.01 keV 390 mum 9.1 mm WorldPV eIoni + 9 -45.6 cm 62.7 cm 5.84 m 105 eV 3.36 keV 318 mum 9.41 mm WorldPV eIoni + 10 -45.6 cm 62.7 cm 5.84 m 0 eV 105 eV 10.3 mum 9.42 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 221, Parent ID = 151 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -45.6 cm 62.7 cm 5.84 m 1.06 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -45.6 cm 62.7 cm 5.84 m 0 eV 1.06 keV 66 mum 66 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 150, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -42.1 cm 56.5 cm 5.65 m 2.29 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -42.1 cm 56.5 cm 5.65 m 0 eV 2.29 keV 200 mum 200 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 149, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -36.2 cm 51.4 cm 5.47 m 4.52 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -36.2 cm 51.4 cm 5.47 m 2.9 keV 1.62 keV 394 mum 394 mum WorldPV eIoni + 2 -36.2 cm 51.4 cm 5.47 m 517 eV 2.38 keV 270 mum 663 mum WorldPV eIoni + 3 -36.2 cm 51.4 cm 5.47 m 0 eV 517 eV 28.7 mum 692 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 148, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -34.8 cm 50.1 cm 5.42 m 1.67 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -34.8 cm 50.1 cm 5.42 m 0 eV 1.67 keV 124 mum 124 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 147, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -34.6 cm 50 cm 5.42 m 4.22 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -34.7 cm 50 cm 5.42 m 2.17 keV 418 eV 71.2 mum 71.2 mum WorldPV eIoni + 2 -34.7 cm 50 cm 5.42 m 0 eV 2.17 keV 185 mum 256 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 222, Parent ID = 147 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -34.7 cm 50 cm 5.42 m 1.63 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -34.7 cm 50 cm 5.42 m 0 eV 1.63 keV 120 mum 120 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 146, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -30.1 cm 40.3 cm 5.2 m 1.36 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -30.1 cm 40.3 cm 5.2 m 0 eV 1.36 keV 92.9 mum 92.9 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 145, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -28.5 cm 37.4 cm 5.13 m 2.15 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -28.6 cm 37.4 cm 5.13 m 0 eV 2.15 keV 182 mum 182 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 144, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -27.2 cm 34.6 cm 5.06 m 4.33 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -27.2 cm 34.6 cm 5.06 m 2.61 keV 1.72 keV 381 mum 381 mum WorldPV eIoni + 2 -27.2 cm 34.6 cm 5.06 m 429 eV 2.19 keV 241 mum 622 mum WorldPV eIoni + 3 -27.2 cm 34.6 cm 5.06 m 0 eV 429 eV 24.1 mum 646 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 143, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -27.1 cm 34.2 cm 5.05 m 4.66 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -27 cm 34.2 cm 5.05 m 2.13 keV 2.54 keV 403 mum 403 mum WorldPV eIoni + 2 -27 cm 34.2 cm 5.05 m 0 eV 2.13 keV 179 mum 582 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 142, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -23 cm 26.3 cm 4.87 m 1.19 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -23 cm 26.3 cm 4.87 m 0 eV 1.19 keV 77.1 mum 77.1 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 141, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -22.4 cm 25.4 cm 4.85 m 1.35 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -22.4 cm 25.4 cm 4.85 m 0 eV 1.35 keV 91.7 mum 91.7 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 140, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -21.7 cm 24.1 cm 4.82 m 1.28 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -21.7 cm 24.1 cm 4.82 m 0 eV 1.28 keV 84.8 mum 84.8 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 139, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -21.2 cm 23.1 cm 4.79 m 3.49 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -21.1 cm 23.1 cm 4.79 m 1.6 keV 1.89 keV 320 mum 320 mum Tracker eIoni + 2 -21.1 cm 23.1 cm 4.79 m 0 eV 1.6 keV 116 mum 436 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 138, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -20.8 cm 22.4 cm 4.78 m 1.01 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -20.8 cm 22.4 cm 4.78 m 0 eV 1.01 keV 61.9 mum 61.9 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 137, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -20.7 cm 22.2 cm 4.77 m 5.77 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -20.6 cm 22.2 cm 4.77 m 3.55 keV 2.22 keV 477 mum 477 mum Tracker eIoni + 2 -20.6 cm 22.2 cm 4.77 m 1.39 keV 2.16 keV 325 mum 802 mum Tracker eIoni + 3 -20.6 cm 22.2 cm 4.77 m 0 eV 1.39 keV 95.4 mum 897 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 136, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -11.6 cm 10.1 cm 4.48 m 4.63 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -11.6 cm 10.1 cm 4.48 m 3.4 keV 1.23 keV 401 mum 401 mum Tracker eIoni + 2 -11.6 cm 10.1 cm 4.48 m 1.48 keV 1.92 keV 313 mum 714 mum Tracker eIoni + 3 -11.6 cm 10.1 cm 4.48 m 0 eV 1.48 keV 105 mum 819 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 135, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -9.6 cm 7.65 cm 4.41 m 8.39 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -9.56 cm 7.7 cm 4.41 m 5.91 keV 2.49 keV 676 mum 676 mum Tracker eIoni + 2 -9.53 cm 7.67 cm 4.41 m 4.95 keV 954 eV 487 mum 1.16 mm Tracker eIoni + 3 -9.51 cm 7.69 cm 4.41 m 2.77 keV 2.18 keV 423 mum 1.59 mm Tracker eIoni + 4 -9.5 cm 7.69 cm 4.41 m 0 eV 2.77 keV 257 mum 1.84 mm Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 134, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -5.84 cm 3.37 cm 4.31 m 5.43 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -5.85 cm 3.41 cm 4.31 m 4.44 keV 993 eV 455 mum 455 mum Tracker eIoni + 2 -5.86 cm 3.43 cm 4.31 m 1.94 keV 1.06 keV 240 mum 695 mum Tracker eIoni + 3 -5.87 cm 3.43 cm 4.31 m 0 eV 1.94 keV 155 mum 851 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 223, Parent ID = 134 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -5.86 cm 3.43 cm 4.31 m 1.43 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -5.87 cm 3.43 cm 4.31 m 0 eV 1.43 keV 99.9 mum 99.9 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 133, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.64 cm 1.07 cm 4.25 m 1.52 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -3.64 cm 1.08 cm 4.25 m 0 eV 1.52 keV 109 mum 109 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 132, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.67 cm -126 mum 4.22 m 19.1 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.67 cm -158 mum 4.22 m 19.1 keV 19.1 keV 174 mum 174 mumtrkChamber phot ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 67, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -51.6 mum 4.33 m 5.56 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.47 cm 268 mum 4.33 m 2.68 keV 2.89 keV 1.68 mm 1.68 mm Tracker eIoni - 2 -2.45 cm 298 mum 4.33 m 1.44 keV 1.24 keV 1.26 mm 2.94 mm Tracker eIoni - 3 -2.46 cm 162 mum 4.33 m 1.04 keV 398 eV 1.01 mm 3.95 mm Tracker eIoni - 4 -2.45 cm 272 mum 4.33 m 932 eV 109 eV 900 mum 4.85 mm Tracker eIoni - 5 -2.45 cm 277 mum 4.33 m 0 eV 932 eV 849 mum 5.7 mm Tracker eIoni + 0 -2.5 cm 77.8 mum 4.19 m 2.41 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.47 cm -491 mum 4.19 m 1.89 MeV 523 keV 1.42 mm 1.42 mm trkChamber eIoni + 2 -2.49 cm -1.07 mm 4.19 m 1.48 MeV 411 keV 1.16 mm 2.58 mm trkChamber eIoni + 3 -2.52 cm -1.56 mm 4.19 m 1.11 MeV 365 keV 954 mum 3.53 mm trkChamber eIoni + 4 -2.46 cm -1.35 mm 4.19 m 831 keV 280 keV 769 mum 4.3 mm trkChamber eIoni + 5 -2.44 cm -869 mum 4.19 m 592 keV 239 keV 625 mum 4.92 mm trkChamber eIoni + 6 -2.45 cm -763 mum 4.19 m 432 keV 160 keV 499 mum 5.42 mm trkChamber eIoni + 7 -2.48 cm -584 mum 4.19 m 227 keV 205 keV 409 mum 5.83 mm trkChamber eIoni + 8 -2.5 cm -594 mum 4.19 m 53.5 keV 174 keV 250 mum 6.08 mm trkChamber eIoni + 9 -2.5 cm -585 mum 4.19 m 0 eV 53.5 keV 23.7 mum 6.11 mm trkChamber eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 66, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -48.4 mum 4.25 m 6.62 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.46 cm 418 mum 4.25 m 2.93 keV 2.67 keV 1.15 mm 1.15 mm Tracker eIoni - 2 -2.44 cm 343 mum 4.25 m 1.71 keV 1.21 keV 1.3 mm 2.46 mm Tracker eIoni - 3 -2.44 cm 170 mum 4.25 m 1.2 keV 515 eV 1.07 mm 3.53 mm Tracker eIoni - 4 -2.44 cm 127 mum 4.25 m 353 eV 846 eV 944 mum 4.47 mm Tracker eIoni - 5 -2.44 cm 125 mum 4.25 m 0 eV 353 eV 493 mum 4.96 mm Tracker eIoni + 0 -2.5 cm 77.3 mum 4.17 m 20.2 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.34 cm 801 mum 4.18 m 15.8 MeV 4.41 MeV 10 mm 10 mm trkChamber eBrem + 2 -1.95 cm -372 mum 4.19 m 12.7 MeV 3.03 MeV 7.94 mm 1.79 cm trkChamber eIoni + 3 -2 cm 2.88 mm 4.19 m 10.4 MeV 2.3 MeV 6.47 mm 2.44 cm trkChamber eIoni + 4 -1.98 cm 3.17 mm 4.2 m 8.62 MeV 1.72 MeV 3.14 mm 2.75 cm trkChamber eBrem + 5 -1.97 cm 3.22 mm 4.2 m 7.11 MeV 1.51 MeV 4.47 mm 3.2 cm trkChamber eIoni + 6 -2.1 cm 4.96 mm 4.2 m 5.58 MeV 1.54 MeV 3.74 mm 3.58 cm trkChamber eIoni + 7 -2.01 cm 6.53 mm 4.21 m 4.55 MeV 1.03 MeV 2.98 mm 3.87 cm trkChamber eIoni + 8 -2.01 cm 6.68 mm 4.21 m 3.04 MeV 94 keV 290 mum 3.9 cm trkChamber eIoni + 9 -2.01 cm 7.71 mm 4.21 m 2.52 MeV 518 keV 1.73 mm 4.08 cm trkChamber eIoni + 10 -2.06 cm 8.39 mm 4.21 m 1.89 MeV 636 keV 1.47 mm 4.22 cm trkChamber eIoni + 11 -2.09 cm 9.44 mm 4.21 m 1.08 MeV 804 keV 1.16 mm 4.34 cm trkChamber eIoni + 12 -2.14 cm 9.74 mm 4.21 m 817 keV 266 keV 754 mum 4.41 cm trkChamber eIoni + 13 -2.15 cm 9.87 mm 4.21 m 597 keV 220 keV 617 mum 4.48 cm trkChamber eIoni + 14 -2.11 cm 1.01 cm 4.21 m 400 keV 197 keV 501 mum 4.53 cm trkChamber eIoni + 15 -2.12 cm 1.02 cm 4.21 m 196 keV 204 keV 389 mum 4.57 cm trkChamber eIoni + 16 -2.11 cm 1.02 cm 4.21 m 16.2 keV 180 keV 207 mum 4.59 cm trkChamber eIoni + 17 -2.11 cm 1.02 cm 4.21 m 0 eV 16.2 keV 3 mum 4.59 cm trkChamber eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 77, Parent ID = 66 +* G4Track Information: Particle = e-, Track ID = 226, Parent ID = 66 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.46 cm 418 mum 4.25 m 1.03 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.46 cm 360 mum 4.25 m 387 eV 638 eV 896 mum 896 mum Tracker eIoni - 2 -2.46 cm 364 mum 4.25 m 0 eV 387 eV 516 mum 1.41 mm Tracker eIoni + 0 -2.01 cm 6.68 mm 4.21 m 1.42 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.06 cm 7.25 mm 4.21 m 1.06 MeV 359 keV 924 mum 924 mumtrkChamber eIoni + 2 -2.06 cm 7.64 mm 4.21 m 739 keV 318 keV 741 mum 1.66 mm trkChamber eIoni + 3 -2.07 cm 7.13 mm 4.21 m 456 keV 283 keV 576 mum 2.24 mm trkChamber eIoni + 4 -2.08 cm 7.39 mm 4.21 m 302 keV 154 keV 423 mum 2.66 mm trkChamber eIoni + 5 -2.07 cm 7.31 mm 4.21 m 158 keV 143 keV 321 mum 2.98 mm trkChamber eIoni + 6 -2.08 cm 7.29 mm 4.21 m 0 eV 158 keV 147 mum 3.13 mm trkChamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 225, Parent ID = 66 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.98 cm 3.17 mm 4.2 m 79.2 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.14 cm 3.96 mm 4.21 m 77.6 keV 1.64 keV 8.43 mm 8.43 mm trkChamber compt + 2 -2.13 cm 3.54 mm 4.21 m 69 keV 8.64 keV 1.16 mm 9.59 mm trkChamber compt + 3 -2.51 cm -7.69 mm 4.2 m 69 keV 69 keV 1.2 cm 2.16 cm trkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 224, Parent ID = 66 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.34 cm 801 mum 4.18 m 36.3 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.1 cm 376 mum 4.19 m 36.3 keV 36.3 keV 6.86 mm 6.86 mm trkChamber phot ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 65, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.49 cm -44.4 mum 4.13 m 1.45 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.46 cm 667 mum 4.13 m 1.15 MeV 295 keV 938 mum 938 mumtrkChamber eIoni - 2 -2.4 cm 863 mum 4.13 m 888 keV 263 keV 788 mum 1.73 mm trkChamber eIoni - 3 -2.35 cm 600 mum 4.13 m 696 keV 191 keV 654 mum 2.38 mm trkChamber eIoni - 4 -2.32 cm 993 mum 4.13 m 424 keV 272 keV 554 mum 2.93 mm trkChamber eIoni - 5 -2.32 cm 890 mum 4.13 m 347 keV 64.1 keV 144 mum 3.08 mm trkChamber eBrem - 6 -2.33 cm 653 mum 4.13 m 190 keV 157 keV 355 mum 3.43 mm trkChamber eIoni - 7 -2.33 cm 604 mum 4.13 m 0 eV 190 keV 198 mum 3.63 mm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 78, Parent ID = 65 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.32 cm 890 mum 4.13 m 13.2 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.36 cm 776 mum 4.13 m 13.2 keV 13.2 keV 404 mum 404 mumtrkChamber phot + 0 -2.5 cm 72.9 mum 4.08 m 3.55 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.42 cm -1.05 mm 4.08 m 2.7 MeV 859 keV 1.99 mm 1.99 mm trkChamber eIoni + 2 -2.3 cm -1.87 mm 4.08 m 2.16 MeV 538 keV 1.56 mm 3.55 mm trkChamber eIoni + 3 -2.2 cm -1.84 mm 4.08 m 1.75 MeV 407 keV 1.29 mm 4.84 mm trkChamber eIoni + 4 -2.2 cm -2.88 mm 4.08 m 1.4 MeV 354 keV 1.09 mm 5.93 mm trkChamber eIoni + 5 -2.16 cm -3.52 mm 4.08 m 1.1 MeV 301 keV 914 mum 6.84 mm trkChamber eIoni + 6 -2.11 cm -3.87 mm 4.08 m 840 keV 257 keV 761 mum 7.61 mm trkChamber eIoni + 7 -2.06 cm -4.12 mm 4.08 m 560 keV 280 keV 629 mum 8.24 mm trkChamber eIoni + 8 -2.03 cm -3.99 mm 4.08 m 384 keV 175 keV 481 mum 8.72 mm trkChamber eIoni + 9 -2 cm -3.91 mm 4.08 m 214 keV 170 keV 379 mum 9.1 mm trkChamber eIoni + 10 -2.01 cm -3.75 mm 4.08 m 68.9 keV 145 keV 233 mum 9.33 mm trkChamber eIoni + 11 -2.01 cm -3.76 mm 4.08 m 0 eV 68.9 keV 36.8 mum 9.37 mm trkChamber eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 64, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -32 mum 3.89 m 1.43 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.5 cm -22 mum 3.89 m 565 eV 862 eV 1 mm 1 mm Tracker eIoni - 2 -2.5 cm -17.1 mum 3.89 m 0 eV 565 eV 628 mum 1.63 mm Tracker eIoni + 0 -2.5 cm 72.2 mum 4.06 m 2.12 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.61 cm -33.6 mum 4.06 m 1.68 MeV 441 keV 1.28 mm 1.28 mm trkChamber eIoni + 2 -2.63 cm -372 mum 4.06 m 1.33 MeV 349 keV 1.06 mm 2.33 mm trkChamber eIoni + 3 -2.6 cm -998 mum 4.06 m 986 keV 346 keV 881 mum 3.21 mm trkChamber eIoni + 4 -2.61 cm -999 mum 4.06 m 647 keV 28.3 keV 73.6 mum 3.29 mm trkChamber eBrem + 5 -2.65 cm -787 mum 4.06 m 251 keV 396 keV 528 mum 3.82 mm trkChamber eIoni + 6 -2.66 cm -780 mum 4.06 m 35.6 keV 216 keV 276 mum 4.09 mm trkChamber eIoni + 7 -2.66 cm -784 mum 4.06 m 0 eV 35.6 keV 11.7 mum 4.1 mm trkChamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 227, Parent ID = 64 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.61 cm -999 mum 4.06 m 311 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.58 cm 1.12 cm 4.07 m 197 keV 114 keV 1.54 cm 1.54 cm trkChamber compt + 2 1.82 cm 1.66 mm 4.08 m 133 keV 63.8 keV 4.74 cm 6.28 cm trkChamber compt + 3 1.09 cm -9.6 mm 4.09 m 91.6 keV 41.8 keV 1.39 cm 7.68 cm trkChamber compt + 4 9.85 mm 3.07 mm 4.09 m 90.2 keV 1.32 keV 1.27 cm 8.95 cm trkChamber compt + 5 1.39 cm 1.85 cm 4.09 m 81.7 keV 8.52 keV 1.65 cm 10.6 cm trkChamber compt + 6 9.35 mm 2.21 cm 4.09 m 81.7 keV 81.7 keV 5.82 mm 11.2 cm trkChamber phot ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 63, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -31.4 mum 3.88 m 3.3 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.46 cm 153 mum 3.88 m 2.66 keV 636 eV 1.37 mm 1.37 mm Tracker eIoni - 2 -2.43 cm 7.98 mum 3.88 m 1.94 keV 717 eV 1.26 mm 2.62 mm Tracker eIoni - 3 -2.42 cm 176 mum 3.88 m 1.71 keV 231 eV 1.12 mm 3.74 mm Tracker eIoni - 4 -2.42 cm 142 mum 3.88 m 37.3 eV 1.68 keV 1.07 mm 4.81 mm Tracker eIoni - 5 -2.42 cm 143 mum 3.88 m 0 eV 37.3 eV 108 mum 4.92 mm Tracker eIoni + 0 -2.5 cm 69.1 mum 3.96 m 2.38 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.49 cm 107 mum 3.96 m 0 eV 2.38 keV 213 mum 213 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 62, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -27.5 mum 3.81 m 1.32 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.51 cm -14.5 mum 3.81 m 785 eV 535 eV 976 mum 976 mum Tracker eIoni - 2 -2.51 cm -3.12 mum 3.81 m 0 eV 785 eV 761 mum 1.74 mm Tracker eIoni + 0 -2.5 cm 69 mum 3.96 m 1.39 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.51 cm 5.49 mum 3.96 m 0 eV 1.39 keV 96.1 mum 96.1 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 61, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -14.4 mum 3.56 m 4.1 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.51 cm 444 mum 3.56 m 2.69 keV 1.41 keV 1.49 mm 1.49 mm Tracker eIoni - 2 -2.49 cm 350 mum 3.56 m 1.05 keV 1.63 keV 1.26 mm 2.75 mm Tracker eIoni - 3 -2.5 cm 274 mum 3.56 m 944 eV 108 eV 903 mum 3.65 mm Tracker eIoni - 4 -2.5 cm 293 mum 3.56 m 0 eV 944 eV 856 mum 4.51 mm Tracker eIoni + 0 -2.5 cm 67.9 mum 3.93 m 2.11 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.52 cm 74.2 mum 3.93 m 0 eV 2.11 keV 177 mum 177 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 60, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -5.58 mum 3.4 m 26.5 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.21 cm 3.01 mm 3.41 m 21.4 MeV 5.08 MeV 1.31 cm 1.31 cm trkChamber eIoni - 2 -2.08 cm 4.53 mm 3.42 m 1.13 MeV 2.25 MeV 5.44 mm 1.86 cm trkChamber eBrem - 3 -2.06 cm 5.04 mm 3.42 m 877 keV 252 keV 777 mum 1.93 cm trkChamber eIoni - 4 -2.04 cm 4.87 mm 3.42 m 639 keV 237 keV 648 mum 2 cm trkChamber eIoni - 5 -2.06 cm 5.1 mm 3.42 m 444 keV 195 keV 524 mum 2.05 cm trkChamber eIoni - 6 -2.08 cm 5.05 mm 3.42 m 275 keV 169 keV 416 mum 2.09 cm trkChamber eIoni - 7 -2.07 cm 5.16 mm 3.42 m 108 keV 167 keV 299 mum 2.12 cm trkChamber eIoni - 8 -2.07 cm 5.16 mm 3.42 m 0 eV 108 keV 80.9 mum 2.13 cm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 79, Parent ID = 60 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.08 cm 4.53 mm 3.42 m 18 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -1.9 cm 6.62 mm 3.42 m 18 MeV 0 eV 7.03 mm 7.03 mm TrackerTransportation - 2 14.8 cm 20.1 cm 4.03 m 18 MeV 0 eV 65.2 cm 65.9 cm trkChamberTransportation - 3 19.5 cm 25.7 cm 4.2 m 6.65 MeV 0 eV 18.7 cm 84.7 cm trkChamber compt - 4 21.4 cm 26.9 cm 4.22 m 6.65 MeV 0 eV 3.55 cm 88.2 cm TrackerTransportation - 5 75.9 cm 61.1 cm 5.03 m 6.65 MeV 0 eV 1.03 m 1.91 m OutOfWorldTransportation - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 80, Parent ID = 79 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 19.5 cm 25.7 cm 4.2 m 11.4 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 19.5 cm 25.8 cm 4.2 m 9.65 MeV 969 keV 2.82 mm 2.82 mm trkChamber eBrem - 2 19.6 cm 25.8 cm 4.2 m 7.9 MeV 533 keV 1.48 mm 4.3 mm trkChamber eBrem - 3 19.5 cm 25.9 cm 4.2 m 6.71 MeV 1.15 MeV 3.05 mm 7.35 mm trkChamber eBrem - 4 19.5 cm 26 cm 4.21 m 5.53 MeV 1.17 MeV 3.54 mm 1.09 cm trkChamber eIoni - 5 19.6 cm 26 cm 4.21 m 4.61 MeV 844 keV 1.47 mm 1.24 cm trkChamber eBrem - 6 19.7 cm 26 cm 4.21 m 2.46 MeV 186 keV 600 mum 1.3 cm trkChamber eBrem - 7 19.8 cm 26 cm 4.21 m 1.94 MeV 524 keV 1.44 mm 1.44 cm trkChamber eIoni - 8 19.9 cm 26 cm 4.21 m 1.54 MeV 393 keV 1.18 mm 1.56 cm trkChamber eIoni - 9 20 cm 26 cm 4.21 m 1.24 MeV 302 keV 988 mum 1.66 cm trkChamber eIoni - 10 20.1 cm 25.9 cm 4.21 m 940 keV 302 keV 835 mum 1.74 cm trkChamber eIoni - 11 20.1 cm 26 cm 4.21 m 695 keV 246 keV 681 mum 1.81 cm trkChamber eIoni - 12 20.2 cm 26 cm 4.21 m 414 keV 280 keV 553 mum 1.86 cm trkChamber eIoni - 13 20.2 cm 26 cm 4.21 m 156 keV 259 keV 398 mum 1.9 cm trkChamber eIoni - 14 20.2 cm 26 cm 4.21 m 0 eV 156 keV 146 mum 1.92 cm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 85, Parent ID = 80 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 19.7 cm 26 cm 4.21 m 1.97 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 20.1 cm 25.7 cm 4.21 m 1.71 MeV 260 keV 6.51 mm 6.51 mm trkChamber compt - 2 21.6 cm 25.4 cm 4.22 m 1.71 MeV 0 eV 1.89 cm 2.54 cm TrackerTransportation - 3 1.24 m 4.68 cm 5.03 m 1.71 MeV 0 eV 1.32 m 1.34 m OutOfWorldTransportation - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 84, Parent ID = 80 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 19.6 cm 26 cm 4.21 m 75.7 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 20.1 cm 25.9 cm 4.21 m 64.7 keV 11.1 keV 6.23 mm 6.23 mm trkChamber compt - 2 19.6 cm 25.3 cm 4.22 m 64.7 keV 64.7 keV 8.36 mm 1.46 cm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 83, Parent ID = 80 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 19.5 cm 25.9 cm 4.2 m 39.1 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 19.6 cm 26 cm 4.21 m 39.1 keV 39.1 keV 1.62 mm 1.62 mm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 82, Parent ID = 80 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 19.6 cm 25.8 cm 4.2 m 1.22 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 19.6 cm 25.9 cm 4.2 m 498 keV 722 keV 2.13 mm 2.13 mm trkChamber compt - 2 15.8 cm 29.5 cm 4.22 m 427 keV 71 keV 5.62 cm 5.83 cm trkChamber compt - 3 15.6 cm 30.4 cm 4.22 m 427 keV 0 eV 9.1 mm 6.74 cm TrackerTransportation - 4 -30.9 cm 2.5 m 4.74 m 427 keV 0 eV 2.3 m 2.37 m OutOfWorldTransportation - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 81, Parent ID = 80 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 19.5 cm 25.8 cm 4.2 m 745 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 20.2 cm 26.7 cm 4.22 m 745 keV 0 eV 2.74 cm 2.74 cm TrackerTransportation - 2 41.1 cm 56.9 cm 5.03 m 745 keV 0 eV 88 cm 90.7 cm OutOfWorldTransportation + 0 -2.5 cm 66.6 mum 3.89 m 2.7 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.5 cm -112 mum 3.89 m 0 eV 2.7 keV 250 mum 250 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 59, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -4.64 mum 3.38 m 1.08 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.45 cm -472 mum 3.38 m 858 keV 223 keV 753 mum 753 mumtrkChamber eIoni - 2 -2.45 cm -839 mum 3.38 m 368 keV 490 keV 638 mum 1.39 mm trkChamber eIoni - 3 -2.43 cm -880 mum 3.38 m 210 keV 158 keV 368 mum 1.76 mm trkChamber eIoni - 4 -2.44 cm -911 mum 3.38 m 42.5 keV 168 keV 229 mum 1.99 mm trkChamber eIoni - 5 -2.44 cm -913 mum 3.38 m 0 eV 42.5 keV 19 mum 2.01 mm trkChamber eIoni + 0 -2.5 cm 59.1 mum 3.66 m 10.6 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.43 cm -399 mum 3.66 m 6.9 keV 3.67 keV 877 mum 877 mum Tracker eIoni + 2 -2.4 cm -810 mum 3.66 m 5.6 keV 1.29 keV 558 mum 1.43 mm Tracker eIoni + 3 -2.36 cm -996 mum 3.66 m 5.05 keV 551 eV 466 mum 1.9 mm Tracker eIoni + 4 -2.33 cm -1.11 mm 3.66 m 4.07 keV 977 eV 429 mum 2.33 mm Tracker eIoni + 5 -2.31 cm -1.38 mm 3.66 m 809 eV 3.27 keV 363 mum 2.69 mm Tracker eIoni + 6 -2.32 cm -1.37 mm 3.66 m 0 eV 809 eV 47 mum 2.74 mm Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 58, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -2.67 mum 3.34 m 4.28 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.45 cm -40.7 mum 3.34 m 3.24 MeV 1.04 MeV 2.34 mm 2.34 mm trkChamber eIoni - 2 -2.35 cm -74.7 mum 3.35 m 2.63 MeV 608 keV 1.83 mm 4.17 mm trkChamber eIoni - 3 -2.23 cm 88 mum 3.35 m 2.13 MeV 504 keV 1.53 mm 5.7 mm trkChamber eIoni - 4 -2.2 cm 1.2 mm 3.35 m 1.7 MeV 427 keV 1.28 mm 6.98 mm trkChamber eIoni - 5 -2.23 cm 2.09 mm 3.35 m 1.34 MeV 361 keV 1.07 mm 8.05 mm trkChamber eIoni - 6 -2.26 cm 2.87 mm 3.35 m 1.04 MeV 306 keV 886 mum 8.93 mm trkChamber eIoni - 7 -2.25 cm 3.53 mm 3.35 m 757 keV 278 keV 730 mum 9.66 mm trkChamber eIoni - 8 -2.27 cm 3.96 mm 3.35 m 537 keV 220 keV 586 mum 1.02 cm trkChamber eIoni - 9 -2.28 cm 3.91 mm 3.35 m 357 keV 180 keV 469 mum 1.07 cm trkChamber eIoni - 10 -2.26 cm 4.02 mm 3.35 m 162 keV 195 keV 361 mum 1.11 cm trkChamber eIoni - 11 -2.25 cm 4.01 mm 3.35 m 0 eV 162 keV 155 mum 1.12 cm trkChamber eIoni + 0 -2.5 cm 59 mum 3.65 m 1.71 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.5 cm -28.8 mum 3.65 m 0 eV 1.71 keV 129 mum 129 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 57, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -1.69 mum 3.32 m 2.01 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.46 cm -15.8 mum 3.32 m 1.55 MeV 463 keV 1.22 mm 1.22 mm trkChamber eIoni - 2 -2.39 cm -611 mum 3.32 m 1.22 MeV 331 keV 991 mum 2.21 mm trkChamber eIoni - 3 -2.4 cm -1.03 mm 3.32 m 968 keV 252 keV 824 mum 3.04 mm trkChamber eIoni - 4 -2.35 cm -987 mum 3.32 m 725 keV 243 keV 695 mum 3.73 mm trkChamber eIoni - 5 -2.33 cm -625 mum 3.32 m 533 keV 193 keV 569 mum 4.3 mm trkChamber eIoni - 6 -2.32 cm -493 mum 3.32 m 222 keV 310 keV 466 mum 4.77 mm trkChamber eIoni - 7 -2.32 cm -435 mum 3.32 m 28.9 keV 193 keV 245 mum 5.01 mm trkChamber eIoni - 8 -2.32 cm -433 mum 3.32 m 0 eV 28.9 keV 11.2 mum 5.02 mm trkChamber eIoni + 0 -2.5 cm 54.9 mum 3.53 m 4.93 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.52 cm 381 mum 3.53 m 3.55 keV 1.38 keV 421 mum 421 mum Tracker eIoni + 2 -2.51 cm 518 mum 3.53 m 852 eV 2.7 keV 325 mum 746 mum Tracker eIoni + 3 -2.51 cm 511 mum 3.53 m 0 eV 852 eV 50.1 mum 796 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 56, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -676 nm 3.3 m 1.2 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.53 cm 97.2 mum 3.3 m 939 keV 258 keV 813 mum 813 mumtrkChamber eIoni - 2 -2.5 cm 591 mum 3.3 m 707 keV 232 keV 681 mum 1.49 mm trkChamber eIoni - 3 -2.47 cm 345 mum 3.3 m 513 keV 195 keV 560 mum 2.05 mm trkChamber eIoni - 4 -2.45 cm 299 mum 3.3 m 256 keV 257 keV 455 mum 2.51 mm trkChamber eIoni - 5 -2.46 cm 403 mum 3.3 m 89.5 keV 166 keV 281 mum 2.79 mm trkChamber eIoni - 6 -2.45 cm 400 mum 3.3 m 0 eV 89.5 keV 60 mum 2.85 mm trkChamber eIoni + 0 -2.5 cm 54.8 mum 3.53 m 2.94 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.49 cm -20.2 mum 3.53 m 1.26 keV 1.68 keV 274 mum 274 mum Tracker eIoni + 2 -2.49 cm 1.47 mum 3.53 m 0 eV 1.26 keV 83.3 mum 357 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 55, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -1.86 mum 3.24 m 1.25 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.5 cm -169 mum 3.24 m 1.02 MeV 138 keV 389 mum 389 mumtrkChamber eBrem - 2 -2.52 cm -770 mum 3.24 m 666 keV 352 keV 721 mum 1.11 mm trkChamber eIoni - 3 -2.49 cm -694 mum 3.24 m 474 keV 191 keV 538 mum 1.65 mm trkChamber eIoni - 4 -2.47 cm -755 mum 3.24 m 47.8 keV 427 keV 433 mum 2.08 mm trkChamber eIoni - 5 -2.47 cm -752 mum 3.24 m 0 eV 47.8 keV 22.5 mum 2.1 mm trkChamber eIoni + 0 -2.5 cm 50.4 mum 3.4 m 1.75 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.47 cm 255 mum 3.4 m 1.56 MeV 161 keV 524 mum 524 mumtrkChamber eBrem + 2 -2.41 cm 814 mum 3.4 m 1.21 MeV 350 keV 994 mum 1.52 mm trkChamber eIoni + 3 -2.34 cm 499 mum 3.4 m 744 keV 462 keV 817 mum 2.34 mm trkChamber eIoni + 4 -2.29 cm 534 mum 3.4 m 542 keV 202 keV 579 mum 2.91 mm trkChamber eIoni + 5 -2.28 cm 115 mum 3.4 m 382 keV 160 keV 471 mum 3.39 mm trkChamber eIoni + 6 -2.26 cm 223 mum 3.4 m 156 keV 226 keV 378 mum 3.76 mm trkChamber eIoni + 7 -2.25 cm 142 mum 3.4 m 0 eV 156 keV 144 mum 3.91 mm trkChamber eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 86, Parent ID = 55 +* G4Track Information: Particle = gamma, Track ID = 228, Parent ID = 55 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -169 mum 3.24 m 95.6 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.12 cm -1.22 cm 3.26 m 79.4 keV 16.2 keV 1.8 cm 1.8 cm trkChamber compt - 2 -1.8 cm 2.57 mm 3.27 m 77.9 keV 1.49 keV 1.85 cm 3.65 cm trkChamber compt - 3 -1.43 cm 6.54 mm 3.27 m 72.9 keV 5.03 keV 9.32 mm 4.58 cm trkChamber compt - 4 -1.57 cm 2.57 cm 3.28 m 72.9 keV 72.9 keV 1.96 cm 6.54 cm trkChamber phot + 0 -2.47 cm 255 mum 3.4 m 36.5 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.05 cm 1.17 cm 3.41 m 36.5 keV 36.5 keV 1.42 cm 1.42 cm trkChamber phot ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 54, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -2.59 mum 3.19 m 2.03 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.49 cm 144 mum 3.19 m 1.01 keV 1.02 keV 1.14 mm 1.14 mm Tracker eIoni - 2 -2.48 cm 264 mum 3.19 m 741 eV 268 eV 891 mum 2.03 mm Tracker eIoni - 3 -2.48 cm 271 mum 3.19 m 0 eV 741 eV 735 mum 2.76 mm Tracker eIoni + 0 -2.5 cm 50.1 mum 3.39 m 2.92 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.49 cm -354 mum 3.39 m 1.9 MeV 1.02 MeV 1.67 mm 1.67 mm trkChamber eIoni + 2 -2.46 cm -76.4 mum 3.39 m 1.46 MeV 447 keV 1.17 mm 2.84 mm trkChamber eIoni + 3 -2.46 cm 533 mum 3.39 m 1.13 MeV 327 keV 943 mum 3.78 mm trkChamber eIoni + 4 -2.5 cm -54.9 mum 3.39 m 842 keV 286 keV 778 mum 4.56 mm trkChamber eIoni + 5 -2.48 cm -353 mum 3.39 m 542 keV 300 keV 631 mum 5.19 mm trkChamber eIoni + 6 -2.47 cm -68.9 mum 3.39 m 0 eV 542 keV 472 mum 5.66 mm trkChamber eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 53, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -2.8 mum 3.18 m 1.23 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.49 cm 13.8 mum 3.18 m 833 eV 393 eV 952 mum 952 mum Tracker eIoni - 2 -2.49 cm 12 mum 3.18 m 0 eV 833 eV 790 mum 1.74 mm Tracker eIoni + 0 -2.5 cm 50 mum 3.38 m 1.22 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.49 cm 645 mum 3.38 m 931 keV 294 keV 827 mum 827 mumtrkChamber eIoni + 2 -2.55 cm 526 mum 3.38 m 713 keV 218 keV 677 mum 1.5 mm trkChamber eIoni + 3 -2.58 cm 242 mum 3.38 m 522 keV 191 keV 563 mum 2.07 mm trkChamber eIoni + 4 -2.57 cm 524 mum 3.38 m 373 keV 148 keV 460 mum 2.53 mm trkChamber eIoni + 5 -2.59 cm 358 mum 3.38 m 214 keV 160 keV 372 mum 2.9 mm trkChamber eIoni + 6 -2.6 cm 315 mum 3.38 m 51.2 keV 162 keV 233 mum 3.13 mm trkChamber eIoni + 7 -2.6 cm 326 mum 3.38 m 0 eV 51.2 keV 22 mum 3.15 mm trkChamber eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 52, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -3.54 mum 3.12 m 1.19 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.5 cm -126 mum 3.12 m 802 eV 392 eV 943 mum 943 mum Tracker eIoni - 2 -2.5 cm -119 mum 3.12 m 0 eV 802 eV 771 mum 1.71 mm Tracker eIoni + 0 -2.5 cm 49.9 mum 3.38 m 1.12 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.49 cm 720 mum 3.38 m 756 keV 362 keV 772 mum 772 mumtrkChamber eIoni + 2 -2.5 cm 642 mum 3.38 m 510 keV 246 keV 585 mum 1.36 mm trkChamber eIoni + 3 -2.48 cm 352 mum 3.38 m 279 keV 231 keV 453 mum 1.81 mm trkChamber eIoni + 4 -2.49 cm 506 mum 3.38 m 105 keV 174 keV 302 mum 2.11 mm trkChamber eIoni + 5 -2.49 cm 503 mum 3.38 m 0 eV 105 keV 75 mum 2.19 mm trkChamber eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 51, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -4.17 mum 3.08 m 1.01 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.5 cm 104 mum 3.08 m 857 eV 149 eV 890 mum 890 mum Tracker eIoni - 2 -2.5 cm 112 mum 3.08 m 0 eV 857 eV 804 mum 1.69 mm Tracker eIoni + 0 -2.5 cm 49.5 mum 3.37 m 2.4 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.51 cm 32.8 mum 3.37 m 2.35 MeV 9.67 keV 39.9 mum 39.9 mumtrkChamber eBrem + 2 -2.51 cm -170 mum 3.37 m 1.67 MeV 683 keV 1.39 mm 1.43 mm trkChamber eIoni + 3 -2.52 cm -812 mum 3.37 m 1.28 MeV 385 keV 1.05 mm 2.48 mm trkChamber eIoni + 4 -2.59 cm -981 mum 3.37 m 937 keV 348 keV 857 mum 3.34 mm trkChamber eIoni + 5 -2.62 cm -943 mum 3.37 m 615 keV 323 keV 680 mum 4.02 mm trkChamber eIoni + 6 -2.64 cm -1.21 mm 3.37 m 440 keV 175 keV 511 mum 4.53 mm trkChamber eIoni + 7 -2.67 cm -1.46 mm 3.37 m 259 keV 180 keV 413 mum 4.94 mm trkChamber eIoni + 8 -2.67 cm -1.49 mm 3.37 m 108 keV 152 keV 284 mum 5.23 mm trkChamber eIoni + 9 -2.67 cm -1.51 mm 3.37 m 0 eV 108 keV 77.9 mum 5.3 mm trkChamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 229, Parent ID = 51 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.51 cm 32.8 mum 3.37 m 39.4 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -3.04 cm 1.98 mm 3.38 m 39.4 keV 39.4 keV 9.93 mm 9.93 mm trkChamber phot ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 50, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -6.33 mum 2.91 m 1.63 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.5 cm 41.5 mum 2.91 m 1.28 keV 353 eV 1.05 mm 1.05 mm Tracker eIoni - 2 -2.5 cm -7.81 mum 2.91 m 920 eV 359 eV 965 mum 2.02 mm Tracker eIoni - 3 -2.5 cm 475 nm 2.91 m 0 eV 920 eV 841 mum 2.86 mm Tracker eIoni + 0 -2.5 cm 48.2 mum 3.32 m 68.7 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.55 cm 452 mum 3.32 m 67.1 MeV 1.58 MeV 4.29 mm 4.29 mm trkChamber eBrem + 2 -2.56 cm 506 mum 3.33 m 66.5 MeV 354 keV 825 mum 5.11 mm trkChamber eBrem + 3 -2.59 cm 727 mum 3.33 m 65.7 MeV 847 keV 2.26 mm 7.37 mm trkChamber eBrem + 4 -2.62 cm 976 mum 3.33 m 63.6 MeV 1.06 MeV 2.86 mm 1.02 cm trkChamber eIoni + 5 -2.79 cm 455 mum 3.35 m 39.3 MeV 8.46 MeV 2.02 cm 3.04 cm trkChamber eBrem + 6 -2.8 cm 628 mum 3.35 m 30.7 MeV 382 keV 1.05 mm 3.15 cm trkChamber eIoni + 7 -2.85 cm 1.33 mm 3.36 m 21.5 MeV 2.3 MeV 5.51 mm 3.7 cm trkChamber eBrem + 8 -2.97 cm 1.58 mm 3.36 m 10.1 MeV 1.83 MeV 4.91 mm 4.19 cm trkChamber eBrem + 9 -2.94 cm 1.42 mm 3.37 m 8.23 MeV 1.83 MeV 5.17 mm 4.71 cm trkChamber eIoni + 10 -3.06 cm 3.02 mm 3.37 m 6.42 MeV 1.81 MeV 4.28 mm 5.14 cm trkChamber eIoni + 11 -3.33 cm 3.79 mm 3.37 m 5.1 MeV 1.32 MeV 3.39 mm 5.47 cm trkChamber eIoni + 12 -3.34 cm 4.94 mm 3.37 m 3.91 MeV 613 keV 1.71 mm 5.64 cm trkChamber eBrem + 13 -3.32 cm 6.77 mm 3.37 m 3 MeV 914 keV 2.16 mm 5.86 cm trkChamber eIoni + 14 -3.38 cm 5.88 mm 3.37 m 2.42 MeV 579 keV 1.71 mm 6.03 cm trkChamber eIoni + 15 -3.43 cm 6.21 mm 3.37 m 1.53 MeV 885 keV 1.42 mm 6.17 cm trkChamber eIoni + 16 -3.47 cm 5.58 mm 3.37 m 1.18 MeV 357 keV 982 mum 6.27 cm trkChamber eIoni + 17 -3.52 cm 5.38 mm 3.37 m 866 keV 310 keV 802 mum 6.35 cm trkChamber eIoni + 18 -3.58 cm 5.14 mm 3.37 m 609 keV 257 keV 643 mum 6.42 cm trkChamber eIoni + 19 -3.54 cm 5.24 mm 3.37 m 367 keV 242 keV 508 mum 6.47 cm trkChamber eIoni + 20 -3.54 cm 5.12 mm 3.37 m 94.4 keV 272 keV 368 mum 6.5 cm trkChamber eIoni + 21 -3.55 cm 5.09 mm 3.37 m 0 eV 94.4 keV 62.6 mum 6.51 cm trkChamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 238, Parent ID = 50 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.34 cm 4.94 mm 3.37 m 573 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -3.85 cm 5.9 cm 3.42 m 353 keV 220 keV 7.37 cm 7.37 cm trkChamber compt + 2 4.62 cm 15.1 cm 3.41 m 271 keV 82.5 keV 12.5 cm 19.9 cm trkChamber compt + 3 5.79 cm 15.3 cm 3.42 m 271 keV 0 eV 1.56 cm 21.4 cm TrackerTransportation + 4 74.9 cm 27.2 cm 4.03 m 271 keV 0 eV 92.3 cm 1.14 m trkChamberTransportation + 5 76.9 cm 27.5 cm 4.04 m 176 keV 95 keV 2.68 cm 1.16 m trkChamber compt + 6 77.1 cm 27.6 cm 4.04 m 105 keV 70.9 keV 2.87 mm 1.17 m trkChamber compt + 7 76.9 cm 27.4 cm 4.04 m 82.4 keV 22.3 keV 4.43 mm 1.17 m trkChamber compt + 8 77.8 cm 26.2 cm 4.04 m 74.1 keV 8.29 keV 1.69 cm 1.19 m trkChamber compt + 9 77.3 cm 26 cm 4.03 m 74.1 keV 0 eV 1.24 cm 1.2 m TrackerTransportation + 10 49.5 cm 15.2 cm 3.42 m 74.1 keV 0 eV 67 cm 1.87 m trkChamberTransportation + 11 48 cm 14.6 cm 3.39 m 59.8 keV 14.3 keV 3.63 cm 1.91 m trkChamber compt + 12 48 cm 14.6 cm 3.39 m 59.8 keV 59.8 keV 94.3 mum 1.91 m trkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 237, Parent ID = 50 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.97 cm 1.58 mm 3.36 m 9.58 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -3.66 cm 9.08 mm 3.42 m 9.58 MeV 0 eV 6.43 cm 6.43 cm TrackerTransportation + 2 -10.1 cm 7.98 cm 4.03 m 9.58 MeV 0 eV 60.8 cm 67.2 cm trkChamberTransportation + 3 -10.2 cm 8.05 cm 4.03 m 2.89 MeV 0 eV 5.21 mm 67.7 cm trkChamber compt + 4 -9.67 cm 8.68 cm 4.05 m 2.14 MeV 748 keV 1.73 cm 69.5 cm trkChamber compt + 5 -5.32 cm 9.41 cm 4.12 m 637 keV 0 eV 8.27 cm 77.7 cm trkChamber compt + 6 -6.65 cm 8.79 cm 4.14 m 229 keV 409 keV 2.73 cm 80.4 cm trkChamber compt + 7 -6.56 cm 6.51 cm 4.12 m 221 keV 7.71 keV 3.15 cm 83.6 cm trkChamber compt + 8 -6.67 cm 6.12 cm 4.11 m 195 keV 25.7 keV 9.31 mm 84.5 cm trkChamber compt + 9 -4.6 cm 1.66 cm 4.08 m 159 keV 36.3 keV 5.47 cm 90 cm trkChamber compt + 10 -5.15 cm 1.16 cm 4.08 m 105 keV 54.4 keV 7.89 mm 90.8 cm trkChamber compt + 11 -5.34 cm 4.06 cm 4.09 m 91.1 keV 13.5 keV 3.19 cm 94 cm trkChamber compt + 12 -4.11 cm 4.83 cm 4.09 m 91.1 keV 91.1 keV 1.53 cm 95.5 cm trkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 240, Parent ID = 237 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -5.32 cm 9.41 cm 4.12 m 1.5 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -5.28 cm 9.43 cm 4.12 m 1.21 MeV 291 keV 968 mum 968 mumtrkChamber eIoni + 2 -5.23 cm 9.45 cm 4.12 m 951 keV 262 keV 821 mum 1.79 mm trkChamber eIoni + 3 -5.18 cm 9.49 cm 4.12 m 710 keV 241 keV 687 mum 2.47 mm trkChamber eIoni + 4 -5.15 cm 9.52 cm 4.12 m 513 keV 197 keV 561 mum 3.04 mm trkChamber eIoni + 5 -5.14 cm 9.53 cm 4.12 m 337 keV 176 keV 455 mum 3.49 mm trkChamber eIoni + 6 -5.14 cm 9.54 cm 4.12 m 133 keV 204 keV 347 mum 3.84 mm trkChamber eIoni + 7 -5.14 cm 9.53 cm 4.12 m 0 eV 133 keV 111 mum 3.95 mm trkChamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 239, Parent ID = 237 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -10.2 cm 8.05 cm 4.03 m 6.69 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -10.2 cm 8.08 cm 4.03 m 5.12 MeV 1.57 MeV 3.53 mm 3.53 mm trkChamber eIoni + 2 -10.3 cm 8.19 cm 4.04 m 4.1 MeV 1.01 MeV 2.76 mm 6.28 mm trkChamber eIoni + 3 -10.2 cm 8.29 cm 4.04 m 3.21 MeV 894 keV 2.26 mm 8.54 mm trkChamber eIoni + 4 -10.2 cm 8.22 cm 4.04 m 2.51 MeV 701 keV 1.81 mm 1.04 cm trkChamber eIoni + 5 -10.1 cm 8.21 cm 4.04 m 2.36 MeV 137 keV 404 mum 1.08 cm trkChamber eBrem + 6 -10 cm 8.21 cm 4.04 m 1.88 MeV 484 keV 1.39 mm 1.21 cm trkChamber eIoni + 7 -9.97 cm 8.27 cm 4.04 m 1.44 MeV 435 keV 1.15 mm 1.33 cm trkChamber eIoni + 8 -9.94 cm 8.24 cm 4.04 m 1.16 MeV 278 keV 936 mum 1.42 cm trkChamber eIoni + 9 -9.97 cm 8.29 cm 4.04 m 880 keV 282 keV 795 mum 1.5 cm trkChamber eIoni + 10 -9.92 cm 8.3 cm 4.04 m 642 keV 239 keV 650 mum 1.57 cm trkChamber eIoni + 11 -9.93 cm 8.35 cm 4.04 m 411 keV 230 keV 525 mum 1.62 cm trkChamber eIoni + 12 -9.92 cm 8.32 cm 4.04 m 254 keV 157 keV 396 mum 1.66 cm trkChamber eIoni + 13 -9.94 cm 8.32 cm 4.04 m 109 keV 145 keV 279 mum 1.69 cm trkChamber eIoni + 14 -9.94 cm 8.32 cm 4.04 m 0 eV 109 keV 79.8 mum 1.7 cm trkChamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 241, Parent ID = 239 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -10.1 cm 8.21 cm 4.04 m 11.4 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -10.1 cm 8.2 cm 4.04 m 11.4 keV 11.4 keV 247 mum 247 mumtrkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 236, Parent ID = 50 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.85 cm 1.33 mm 3.36 m 6.95 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -3.84 cm 7.98 mm 3.42 m 6.95 MeV 0 eV 6.93 cm 6.93 cm TrackerTransportation + 2 -12.5 cm 6.64 cm 4.03 m 6.95 MeV 0 eV 60.9 cm 67.8 cm trkChamberTransportation + 3 -13.1 cm 7.02 cm 4.06 m 3.97 MeV 0 eV 3.91 cm 71.7 cm trkChamber compt + 4 -11.4 cm 11 cm 4.19 m 3.9 MeV 66.5 keV 13.6 cm 85.4 cm trkChamber compt + 5 -10.9 cm 12.3 cm 4.22 m 3.9 MeV 0 eV 3.5 cm 88.9 cm TrackerTransportation + 6 7.54 mm 43 cm 5.03 m 3.9 MeV 0 eV 86.5 cm 1.75 m WorldPVTransportation + 7 36.9 cm 1.38 m 7.5 m 3.9 MeV 0 eV 2.68 m 4.43 m OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 242, Parent ID = 236 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -13.1 cm 7.02 cm 4.06 m 2.98 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -13.1 cm 7.04 cm 4.07 m 2.33 MeV 657 keV 1.7 mm 1.7 mm trkChamber eIoni + 2 -13.1 cm 7.05 cm 4.07 m 1.83 MeV 496 keV 1.38 mm 3.08 mm trkChamber eIoni + 3 -13.1 cm 7.14 cm 4.07 m 1.41 MeV 424 keV 1.13 mm 4.21 mm trkChamber eIoni + 4 -13.2 cm 7.21 cm 4.07 m 1.13 MeV 271 keV 918 mum 5.13 mm trkChamber eIoni + 5 -13.3 cm 7.24 cm 4.07 m 882 keV 252 keV 781 mum 5.91 mm trkChamber eIoni + 6 -13.3 cm 7.26 cm 4.07 m 589 keV 293 keV 651 mum 6.56 mm trkChamber eIoni + 7 -13.3 cm 7.26 cm 4.07 m 370 keV 220 keV 497 mum 7.06 mm trkChamber eIoni + 8 -13.3 cm 7.26 cm 4.07 m 148 keV 222 keV 370 mum 7.43 mm trkChamber eIoni + 9 -13.3 cm 7.26 cm 4.07 m 0 eV 148 keV 132 mum 7.56 mm trkChamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 235, Parent ID = 50 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.8 cm 628 mum 3.35 m 8.2 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.62 cm 1.09 mm 3.36 m 5.5 MeV 2.7 MeV 4.27 mm 4.27 mm trkChamber eIoni + 2 -2.6 cm 1.67 mm 3.36 m 4.8 MeV 322 keV 1.02 mm 5.29 mm trkChamber eBrem + 3 -2.61 cm 3.43 mm 3.36 m 3.73 MeV 1.07 MeV 2.6 mm 7.89 mm trkChamber eIoni + 4 -2.61 cm 2.98 mm 3.36 m 3.54 MeV 173 keV 457 mum 8.35 mm trkChamber eBrem + 5 -2.59 cm 1.26 mm 3.36 m 2.92 MeV 627 keV 1.98 mm 1.03 cm trkChamber eIoni + 6 -2.55 cm -187 mum 3.36 m 2.34 MeV 573 keV 1.67 mm 1.2 cm trkChamber eIoni + 7 -2.64 cm -789 mum 3.36 m 1.85 MeV 489 keV 1.39 mm 1.34 cm trkChamber eIoni + 8 -2.64 cm -1.75 mm 3.36 m 1.3 MeV 556 keV 1.14 mm 1.45 cm trkChamber eIoni + 9 -2.68 cm -2.32 mm 3.36 m 967 keV 331 keV 864 mum 1.54 cm trkChamber eIoni + 10 -2.74 cm -2.37 mm 3.36 m 734 keV 233 keV 695 mum 1.61 cm trkChamber eIoni + 11 -2.71 cm -2.8 mm 3.36 m 499 keV 235 keV 574 mum 1.67 cm trkChamber eIoni + 12 -2.69 cm -2.88 mm 3.36 m 312 keV 187 keV 447 mum 1.71 cm trkChamber eIoni + 13 -2.68 cm -2.83 mm 3.36 m 134 keV 178 keV 329 mum 1.74 cm trkChamber eIoni + 14 -2.68 cm -2.84 mm 3.36 m 0 eV 134 keV 112 mum 1.75 cm trkChamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 244, Parent ID = 235 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.61 cm 2.98 mm 3.36 m 16.5 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.61 cm 2.68 mm 3.36 m 15.5 keV 987 eV 314 mum 314 mumtrkChamber compt + 2 -2.62 cm 3.14 mm 3.36 m 15.5 keV 15.5 keV 487 mum 801 mumtrkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 243, Parent ID = 235 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.6 cm 1.67 mm 3.36 m 381 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.4 cm 1.08 cm 3.37 m 204 keV 177 keV 1.98 cm 1.98 cm trkChamber compt + 2 -7.43 cm -9.72 mm 3.38 m 158 keV 46 keV 5.47 cm 7.45 cm trkChamber compt + 3 -10.9 cm 1.38 cm 3.33 m 104 keV 53.7 keV 6.44 cm 13.9 cm trkChamber compt + 4 -10.3 cm 9.16 mm 3.33 m 98.3 keV 6.15 keV 7.66 mm 14.7 cm trkChamber compt + 5 -9.69 cm 3.02 mm 3.34 m 97.3 keV 1.02 keV 1.27 cm 15.9 cm trkChamber compt + 6 -8.72 cm -1.63 cm 3.36 m 97.3 keV 97.3 keV 2.61 cm 18.5 cm trkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 234, Parent ID = 50 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.79 cm 455 mum 3.35 m 15.8 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -3.82 cm 1.31 cm 3.42 m 15.8 MeV 0 eV 7.65 cm 7.65 cm TrackerTransportation + 2 -12.1 cm 11.5 cm 4.03 m 15.8 MeV 0 eV 61.4 cm 69.1 cm trkChamberTransportation + 3 -14.8 cm 14.7 cm 4.22 m 0 eV 0 eV 19.9 cm 89 cm trkChamber conv + +********************************************************************************************************* +* G4Track Information: Particle = e+, Track ID = 246, Parent ID = 234 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -14.8 cm 14.7 cm 4.22 m 9.52 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -14.8 cm 14.8 cm 4.22 m 7.32 MeV 2.2 MeV 5.01 mm 5.01 mm trkChamber eIoni + 2 -14.8 cm 14.8 cm 4.22 m 7.13 MeV 194 keV 476 mum 5.49 mm TrackerTransportation + 3 -14.5 cm 15.2 cm 4.24 m 7.12 MeV 3.41 keV 1.2 cm 1.75 cm Tracker eIoni + 4 -11.5 cm 19 cm 4.35 m 7.1 MeV 16 keV 12.1 cm 13.8 cm Tracker eIoni + 5 -10.3 cm 20.6 cm 4.39 m 7.08 MeV 7.34 keV 4.73 cm 18.6 cm Tracker eIoni + 6 -8.51 cm 23.3 cm 4.45 m 7.07 MeV 9.66 keV 7.17 cm 25.7 cm Tracker eIoni + 7 -5.93 cm 27.7 cm 4.55 m 7.05 MeV 17.9 keV 11.3 cm 37.1 cm Tracker eIoni + 8 -5.31 cm 28.7 cm 4.58 m 7.04 MeV 5 keV 2.7 cm 39.8 cm Tracker eIoni + 9 -4.82 cm 29.5 cm 4.6 m 7.04 MeV 3.8 keV 1.99 cm 41.8 cm Tracker eIoni + 10 -4.79 cm 29.6 cm 4.6 m 7.03 MeV 249 eV 1.3 mm 41.9 cm Tracker eIoni + 11 -3.05 cm 32.4 cm 4.66 m 7.02 MeV 7.31 keV 6.89 cm 48.8 cm Tracker eIoni + 12 -2.25 cm 33.8 cm 4.69 m 7.01 MeV 5.54 keV 3.35 cm 52.2 cm Tracker eIoni + 13 -7.84 mm 36.4 cm 4.74 m 7 MeV 8.16 keV 5.82 cm 58 cm Tracker eIoni + 14 -3.23 mm 37.2 cm 4.75 m 7 MeV 3.41 keV 1.81 cm 59.8 cm Tracker eIoni + 15 2.25 cm 41.2 cm 4.83 m 6.98 MeV 15.1 keV 8.9 cm 68.7 cm Tracker eIoni + 16 2.26 cm 41.3 cm 4.83 m 6.95 MeV 117 eV 390 mum 68.7 cm Tracker eIoni + 17 5.34 cm 46.2 cm 4.92 m 6.93 MeV 16.1 keV 10.8 cm 79.5 cm Tracker eIoni + 18 5.71 cm 46.8 cm 4.93 m 6.93 MeV 1.72 keV 1.27 cm 80.7 cm Tracker eIoni + 19 7.81 cm 50.1 cm 4.99 m 6.91 MeV 9.28 keV 6.93 cm 87.7 cm Tracker eIoni + 20 9.07 cm 52.3 cm 5.03 m 6.91 MeV 8.14 keV 4.58 cm 92.3 cm WorldPVTransportation + 21 9.27 cm 52.6 cm 5.03 m 6.85 MeV 2.02 keV 8.22 mm 93.1 cm WorldPV eIoni + 22 18.5 cm 69.3 cm 5.33 m 6.76 MeV 46.9 keV 35.7 cm 1.29 m WorldPV eIoni + 23 28.1 cm 87.6 cm 5.67 m 6.7 MeV 57.7 keV 39.2 cm 1.68 m WorldPV eIoni + 24 28.4 cm 88.2 cm 5.68 m 6.7 MeV 1.16 keV 1.28 cm 1.69 m WorldPV eIoni + 25 29.1 cm 89.5 cm 5.7 m 6.69 MeV 2.1 keV 2.79 cm 1.72 m WorldPV eIoni + 26 29.4 cm 90.1 cm 5.71 m 6.69 MeV 2.17 keV 1.26 cm 1.73 m WorldPV eIoni + 27 30.5 cm 92.2 cm 5.75 m 6.68 MeV 7.56 keV 4.65 cm 1.78 m WorldPV eIoni + 28 31.5 cm 94.3 cm 5.79 m 6.68 MeV 4.81 keV 4.38 cm 1.82 m WorldPV eIoni + 29 33 cm 97.4 cm 5.84 m 6.64 MeV 13.2 keV 6.34 cm 1.89 m WorldPV eIoni + 30 33.9 cm 99.4 cm 5.88 m 6.64 MeV 5.51 keV 4.18 cm 1.93 m WorldPV eIoni + 31 35.4 cm 1.02 m 5.93 m 6.62 MeV 8.97 keV 6.12 cm 1.99 m WorldPV eIoni + 32 36.6 cm 1.05 m 5.97 m 6.6 MeV 7.41 keV 4.69 cm 2.04 m WorldPV eIoni + 33 43.8 cm 1.19 m 6.2 m 6.55 MeV 50.8 keV 28.7 cm 2.32 m WorldPV eIoni + 34 44.5 cm 1.21 m 6.23 m 6.54 MeV 5.86 keV 2.95 cm 2.35 m WorldPV eIoni + 35 49.7 cm 1.31 m 6.4 m 6.5 MeV 32.9 keV 21.2 cm 2.57 m WorldPV eIoni + 36 50.8 cm 1.34 m 6.45 m 6.49 MeV 8.72 keV 5.53 cm 2.62 m WorldPV eIoni + 37 51.2 cm 1.35 m 6.47 m 6.48 MeV 3.15 keV 2.15 cm 2.64 m WorldPV eIoni + 38 51.4 cm 1.35 m 6.48 m 6.48 MeV 1.77 keV 1.09 cm 2.65 m WorldPV eIoni + 39 52.7 cm 1.38 m 6.54 m 6.41 MeV 11.9 keV 6.27 cm 2.72 m WorldPV eIoni + 40 53.8 cm 1.4 m 6.58 m 6.4 MeV 7.53 keV 5.39 cm 2.77 m WorldPV eIoni + 41 57 cm 1.46 m 6.71 m 6.37 MeV 21 keV 14.4 cm 2.91 m WorldPV eIoni + 42 62.5 cm 1.6 m 6.95 m 6.33 MeV 40 keV 28.6 cm 3.2 m WorldPV eIoni + 43 62.7 cm 1.61 m 6.97 m 6.32 MeV 3.18 keV 1.44 cm 3.21 m WorldPV eIoni + 44 63.9 cm 1.71 m 7.12 m 6.29 MeV 27 keV 17.7 cm 3.39 m WorldPV eIoni + 45 65.7 cm 1.75 m 7.19 m 6.28 MeV 8.66 keV 8.69 cm 3.48 m WorldPV eIoni + 46 66.9 cm 1.79 m 7.25 m 6.27 MeV 13.8 keV 6.97 cm 3.55 m WorldPV eIoni + 47 67.1 cm 1.79 m 7.25 m 6.26 MeV 453 eV 9.5 mm 3.56 m WorldPV eIoni + 48 69.8 cm 1.88 m 7.42 m 6.24 MeV 27.3 keV 18.9 cm 3.75 m WorldPV eIoni + 49 71.4 cm 1.93 m 7.49 m 6.22 MeV 14 keV 8.5 cm 3.83 m WorldPV eIoni + 50 71.7 cm 1.93 m 7.5 m 6.22 MeV 1.77 keV 1.37 cm 3.85 m OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 292, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 71.4 cm 1.93 m 7.49 m 2.43 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 71.4 cm 1.93 m 7.49 m 0 eV 2.43 keV 219 mum 219 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 291, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 69.8 cm 1.88 m 7.42 m 1.12 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 69.8 cm 1.88 m 7.42 m 0 eV 1.12 keV 71.4 mum 71.4 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 290, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 67.1 cm 1.79 m 7.25 m 1.97 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 67.1 cm 1.79 m 7.25 m 0 eV 1.97 keV 160 mum 160 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 289, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 66.9 cm 1.79 m 7.25 m 1.78 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 66.9 cm 1.79 m 7.25 m 0 eV 1.78 keV 136 mum 136 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 288, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 65.7 cm 1.75 m 7.19 m 3.02 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 65.7 cm 1.75 m 7.19 m 459 eV 2.56 keV 281 mum 281 mum WorldPV eIoni + 2 65.7 cm 1.75 m 7.19 m 0 eV 459 eV 25.6 mum 307 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 287, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 63.9 cm 1.71 m 7.12 m 1.16 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 63.9 cm 1.71 m 7.12 m 0 eV 1.16 keV 74.7 mum 74.7 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 286, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 62.7 cm 1.61 m 6.97 m 6.55 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 62.7 cm 1.61 m 6.97 m 5.25 keV 293 eV 215 mum 215 mum WorldPV eIoni + 2 62.7 cm 1.61 m 6.97 m 3.64 keV 1.62 keV 443 mum 658 mum WorldPV eIoni + 3 62.7 cm 1.61 m 6.97 m 2.25 keV 1.38 keV 332 mum 990 mum WorldPV eIoni + 4 62.7 cm 1.61 m 6.97 m 0 eV 2.25 keV 195 mum 1.18 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 293, Parent ID = 286 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 62.7 cm 1.61 m 6.97 m 1.01 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 62.7 cm 1.61 m 6.97 m 0 eV 1.01 keV 61.8 mum 61.8 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 285, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 62.5 cm 1.6 m 6.95 m 1.67 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 62.5 cm 1.6 m 6.95 m 0 eV 1.67 keV 125 mum 125 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 284, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 57 cm 1.46 m 6.71 m 1.02 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 57 cm 1.46 m 6.71 m 0 eV 1.02 keV 62.6 mum 62.6 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 283, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 53.8 cm 1.4 m 6.58 m 3.67 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 53.8 cm 1.4 m 6.58 m 955 eV 2.71 keV 334 mum 334 mum WorldPV eIoni + 2 53.8 cm 1.4 m 6.58 m 0 eV 955 eV 57.7 mum 392 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 282, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 52.7 cm 1.38 m 6.54 m 61.3 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 52.9 cm 1.38 m 6.53 m 46.4 keV 1.12 keV 3.22 mm 3.22 mm WorldPV eIoni + 2 53.3 cm 1.39 m 6.53 m 39.3 keV 4.34 keV 7.12 mm 1.03 cm WorldPV eIoni + 3 53.8 cm 1.39 m 6.53 m 34.6 keV 4.69 keV 6.58 mm 1.69 cm WorldPV eIoni + 4 53.9 cm 1.4 m 6.53 m 31.5 keV 3.13 keV 5.28 mm 2.22 cm WorldPV eIoni + 5 54.2 cm 1.4 m 6.53 m 27.2 keV 4.23 keV 4.49 mm 2.67 cm WorldPV eIoni + 6 54.3 cm 1.4 m 6.53 m 23.9 keV 3.31 keV 3.53 mm 3.02 cm WorldPV eIoni + 7 54.4 cm 1.41 m 6.53 m 21.4 keV 2.56 keV 2.85 mm 3.31 cm WorldPV eIoni + 8 54.4 cm 1.41 m 6.53 m 19.2 keV 2.16 keV 2.37 mm 3.54 cm WorldPV eIoni + 9 54.3 cm 1.41 m 6.53 m 15.8 keV 3.42 keV 2.01 mm 3.74 cm WorldPV eIoni + 10 54.3 cm 1.41 m 6.53 m 13.3 keV 2.44 keV 1.5 mm 3.89 cm WorldPV eIoni + 11 54.3 cm 1.41 m 6.53 m 10.6 keV 2.76 keV 1.18 mm 4.01 cm WorldPV eIoni + 12 54.3 cm 1.41 m 6.53 m 8.2 keV 1.2 keV 699 mum 4.08 cm WorldPV eIoni + 13 54.2 cm 1.41 m 6.53 m 6.44 keV 1.77 keV 660 mum 4.15 cm WorldPV eIoni + 14 54.2 cm 1.41 m 6.53 m 4.63 keV 1.81 keV 525 mum 4.2 cm WorldPV eIoni + 15 54.2 cm 1.41 m 6.53 m 3.09 keV 1.53 keV 401 mum 4.24 cm WorldPV eIoni + 16 54.2 cm 1.41 m 6.53 m 14.4 eV 3.08 keV 288 mum 4.27 cm WorldPV eIoni + 17 54.2 cm 1.41 m 6.53 m 0 eV 14.4 eV 3.82 mum 4.27 cm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 296, Parent ID = 282 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 54.3 cm 1.41 m 6.53 m 1.19 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 54.3 cm 1.41 m 6.53 m 0 eV 1.19 keV 76.9 mum 76.9 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 295, Parent ID = 282 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 53.3 cm 1.39 m 6.53 m 2.75 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 53.3 cm 1.39 m 6.53 m 105 eV 2.64 keV 254 mum 254 mum WorldPV eIoni + 2 53.3 cm 1.39 m 6.53 m 0 eV 105 eV 10.3 mum 265 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 294, Parent ID = 282 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 52.9 cm 1.38 m 6.53 m 13.8 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 53 cm 1.38 m 6.53 m 10.9 keV 2.93 keV 1.24 mm 1.24 mm WorldPV eIoni + 2 53.1 cm 1.38 m 6.54 m 9.3 keV 1.58 keV 909 mum 2.15 mm WorldPV eIoni + 3 53.1 cm 1.38 m 6.54 m 5.65 keV 3.65 keV 757 mum 2.9 mm WorldPV eIoni + 4 53.2 cm 1.38 m 6.54 m 4.18 keV 1.47 keV 470 mum 3.37 mm WorldPV eIoni + 5 53.2 cm 1.38 m 6.54 m 3.34 keV 840 eV 370 mum 3.74 mm WorldPV eIoni + 6 53.2 cm 1.38 m 6.54 m 909 eV 2.43 keV 308 mum 4.05 mm WorldPV eIoni + 7 53.2 cm 1.38 m 6.54 m 0 eV 909 eV 54.2 mum 4.11 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 281, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 51.4 cm 1.35 m 6.48 m 2.44 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 51.3 cm 1.35 m 6.48 m 0 eV 2.44 keV 220 mum 220 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 280, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 51.2 cm 1.35 m 6.47 m 2.02 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 51.2 cm 1.35 m 6.47 m 0 eV 2.02 keV 165 mum 165 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 279, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 50.8 cm 1.34 m 6.45 m 1.6 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 50.8 cm 1.34 m 6.45 m 0 eV 1.6 keV 116 mum 116 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 278, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 49.7 cm 1.31 m 6.4 m 6.36 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 49.7 cm 1.31 m 6.4 m 4.69 keV 1.67 keV 520 mum 520 mum WorldPV eIoni + 2 49.7 cm 1.31 m 6.4 m 3.21 keV 1.48 keV 404 mum 924 mum WorldPV eIoni + 3 49.7 cm 1.31 m 6.4 m 1.58 keV 460 eV 125 mum 1.05 mm WorldPV eIoni + 4 49.7 cm 1.31 m 6.4 m 0 eV 1.58 keV 114 mum 1.16 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 297, Parent ID = 278 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 49.7 cm 1.31 m 6.4 m 1.17 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 49.7 cm 1.31 m 6.4 m 0 eV 1.17 keV 75.6 mum 75.6 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 277, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 44.5 cm 1.21 m 6.23 m 1.15 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 44.5 cm 1.21 m 6.23 m 0 eV 1.15 keV 73.4 mum 73.4 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 276, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 43.8 cm 1.19 m 6.2 m 1.89 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 43.8 cm 1.19 m 6.2 m 0 eV 1.89 keV 150 mum 150 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 275, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 36.6 cm 1.05 m 5.97 m 19 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 36.5 cm 1.05 m 5.97 m 16.7 keV 2.21 keV 1.97 mm 1.97 mm WorldPV eIoni + 2 36.5 cm 1.05 m 5.97 m 14.4 keV 2.3 keV 1.63 mm 3.6 mm WorldPV eIoni + 3 36.5 cm 1.05 m 5.96 m 12.5 keV 1.93 keV 1.31 mm 4.91 mm WorldPV eIoni + 4 36.6 cm 1.05 m 5.97 m 11.2 keV 1.32 keV 1.08 mm 5.99 mm WorldPV eIoni + 5 36.5 cm 1.05 m 5.97 m 9.81 keV 1.39 keV 941 mum 6.94 mm WorldPV eIoni + 6 36.6 cm 1.05 m 5.97 m 7.92 keV 1.89 keV 802 mum 7.74 mm WorldPV eIoni + 7 36.6 cm 1.05 m 5.97 m 6.85 keV 1.07 keV 638 mum 8.38 mm WorldPV eIoni + 8 36.5 cm 1.05 m 5.97 m 4.98 keV 1.87 keV 554 mum 8.93 mm WorldPV eIoni + 9 36.5 cm 1.05 m 5.97 m 3.02 keV 1.96 keV 424 mum 9.35 mm WorldPV eIoni + 10 36.5 cm 1.05 m 5.97 m 954 eV 2.07 keV 281 mum 9.64 mm WorldPV eIoni + 11 36.5 cm 1.05 m 5.97 m 0 eV 954 eV 57.7 mum 9.69 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 274, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 35.4 cm 1.02 m 5.93 m 3.56 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 35.4 cm 1.02 m 5.93 m 872 eV 2.69 keV 326 mum 326 mum WorldPV eIoni + 2 35.4 cm 1.02 m 5.93 m 0 eV 872 eV 51.5 mum 378 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 273, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 33.9 cm 99.4 cm 5.88 m 1.01 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 33.9 cm 99.4 cm 5.88 m 0 eV 1.01 keV 62 mum 62 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 272, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 33 cm 97.4 cm 5.84 m 18.6 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 33.2 cm 97.4 cm 5.84 m 16.8 keV 1.79 keV 1.91 mm 1.91 mm WorldPV eIoni + 2 33.4 cm 97.4 cm 5.84 m 13.1 keV 3.67 keV 1.63 mm 3.54 mm WorldPV eIoni + 3 33.4 cm 97.5 cm 5.84 m 12.3 keV 765 eV 1.16 mm 4.7 mm WorldPV eIoni + 4 33.5 cm 97.5 cm 5.84 m 11.1 keV 1.2 keV 1.06 mm 5.76 mm WorldPV eIoni + 5 33.5 cm 97.6 cm 5.84 m 9.31 keV 1.84 keV 936 mum 6.7 mm WorldPV eIoni + 6 33.5 cm 97.5 cm 5.84 m 4.91 keV 1.12 keV 595 mum 7.29 mm WorldPV eIoni + 7 33.5 cm 97.6 cm 5.84 m 2.68 keV 523 eV 340 mum 7.63 mm WorldPV eIoni + 8 33.5 cm 97.5 cm 5.84 m 626 eV 2.05 keV 247 mum 7.88 mm WorldPV eIoni + 9 33.5 cm 97.5 cm 5.84 m 0 eV 626 eV 35 mum 7.91 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 299, Parent ID = 272 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 33.5 cm 97.6 cm 5.84 m 1.71 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 33.5 cm 97.6 cm 5.84 m 0 eV 1.71 keV 129 mum 129 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 298, Parent ID = 272 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 33.5 cm 97.5 cm 5.84 m 3.28 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 33.6 cm 97.5 cm 5.84 m 627 eV 2.65 keV 303 mum 303 mum WorldPV eIoni + 2 33.6 cm 97.5 cm 5.84 m 0 eV 627 eV 35.1 mum 338 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 271, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 31.5 cm 94.3 cm 5.79 m 1.48 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 31.5 cm 94.3 cm 5.79 m 0 eV 1.48 keV 105 mum 105 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 270, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 30.5 cm 92.2 cm 5.75 m 1.87 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 30.5 cm 92.2 cm 5.75 m 0 eV 1.87 keV 147 mum 147 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 269, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 29.4 cm 90.1 cm 5.71 m 1.17 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 29.4 cm 90.1 cm 5.71 m 0 eV 1.17 keV 75.7 mum 75.7 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 268, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 29.1 cm 89.5 cm 5.7 m 2.54 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 29.1 cm 89.5 cm 5.7 m 0 eV 2.54 keV 233 mum 233 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 267, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 28.4 cm 88.2 cm 5.68 m 2.12 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 28.4 cm 88.2 cm 5.68 m 0 eV 2.12 keV 179 mum 179 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 266, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 28.1 cm 87.6 cm 5.67 m 3.32 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 28.1 cm 87.7 cm 5.67 m 275 eV 3.04 keV 306 mum 306 mum WorldPV eIoni + 2 28.1 cm 87.7 cm 5.67 m 0 eV 275 eV 17.1 mum 323 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 265, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 18.5 cm 69.3 cm 5.33 m 35.1 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 18.8 cm 69.7 cm 5.33 m 31 keV 4.17 keV 5.41 mm 5.41 mm WorldPV eIoni + 2 19.1 cm 69.8 cm 5.33 m 26.1 keV 4.84 keV 4.36 mm 9.77 mm WorldPV eIoni + 3 19.2 cm 69.9 cm 5.33 m 21.4 keV 3.65 keV 3.06 mm 1.28 cm WorldPV eIoni + 4 19.3 cm 70 cm 5.33 m 18.9 keV 2.51 keV 2.38 mm 1.52 cm WorldPV eIoni + 5 19.4 cm 69.9 cm 5.32 m 17.5 keV 1.47 keV 1.97 mm 1.72 cm WorldPV eIoni + 6 19.4 cm 69.7 cm 5.32 m 13.6 keV 3.91 keV 1.73 mm 1.89 cm WorldPV eIoni + 7 19.5 cm 69.7 cm 5.32 m 11.4 keV 2.2 keV 1.21 mm 2.01 cm WorldPV eIoni + 8 19.6 cm 69.7 cm 5.32 m 8.92 keV 2.43 keV 958 mum 2.11 cm WorldPV eIoni + 9 19.6 cm 69.7 cm 5.32 m 7.52 keV 1.4 keV 723 mum 2.18 cm WorldPV eIoni + 10 19.7 cm 69.7 cm 5.32 m 5.64 keV 1.88 keV 607 mum 2.24 cm WorldPV eIoni + 11 19.7 cm 69.7 cm 5.32 m 3.89 keV 1.75 keV 469 mum 2.29 cm WorldPV eIoni + 12 19.7 cm 69.7 cm 5.32 m 1.92 keV 1.97 keV 349 mum 2.32 cm WorldPV eIoni + 13 19.7 cm 69.7 cm 5.32 m 0 eV 1.92 keV 153 mum 2.34 cm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 300, Parent ID = 265 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 19.2 cm 69.9 cm 5.33 m 1.02 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 19.2 cm 69.9 cm 5.33 m 0 eV 1.02 keV 62.8 mum 62.8 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 264, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 9.27 cm 52.6 cm 5.03 m 57.8 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 8.46 cm 52 cm 5.04 m 49.7 keV 8.03 keV 1.29 cm 1.29 cm WorldPV eIoni + 2 8.45 cm 52 cm 5.04 m 44.7 keV 202 eV 378 mum 1.33 cm WorldPV eIoni + 3 8.08 cm 52.3 cm 5.04 m 37.6 keV 4.32 keV 7.55 mm 2.08 cm WorldPV eIoni + 4 7.83 cm 52.4 cm 5.05 m 32 keV 5.59 keV 6.09 mm 2.69 cm WorldPV eIoni + 5 7.84 cm 52.4 cm 5.05 m 30.1 keV 370 eV 717 mum 2.76 cm WorldPV eIoni + 6 8.07 cm 52.2 cm 5.05 m 26.5 keV 3.61 keV 4.14 mm 3.17 cm WorldPV eIoni + 7 8.28 cm 52.1 cm 5.06 m 19.6 keV 4.53 keV 3.14 mm 3.49 cm WorldPV eIoni + 8 8.44 cm 52 cm 5.06 m 16.1 keV 3.45 keV 2.07 mm 3.7 cm WorldPV eIoni + 9 8.56 cm 52 cm 5.06 m 13.1 keV 3 keV 1.54 mm 3.85 cm WorldPV eIoni + 10 8.65 cm 52 cm 5.06 m 10.4 keV 2.71 keV 1.15 mm 3.97 cm WorldPV eIoni + 11 8.71 cm 52 cm 5.06 m 7.43 keV 2.98 keV 861 mum 4.05 cm WorldPV eIoni + 12 8.7 cm 51.9 cm 5.06 m 6.09 keV 1.34 keV 600 mum 4.11 cm WorldPV eIoni + 13 8.72 cm 51.9 cm 5.06 m 3.01 keV 416 eV 291 mum 4.14 cm WorldPV eIoni + 14 8.71 cm 51.9 cm 5.06 m 105 eV 2.91 keV 280 mum 4.17 cm WorldPV eIoni + 15 8.71 cm 51.9 cm 5.06 m 0 eV 105 eV 10.3 mum 4.17 cm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 305, Parent ID = 264 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 8.72 cm 51.9 cm 5.06 m 2.66 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 8.74 cm 51.9 cm 5.06 m 916 eV 1.74 keV 246 mum 246 mum WorldPV eIoni + 2 8.74 cm 51.9 cm 5.06 m 0 eV 916 eV 54.7 mum 300 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 304, Parent ID = 264 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 8.28 cm 52.1 cm 5.06 m 2.37 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 8.29 cm 52.1 cm 5.06 m 0 eV 2.37 keV 212 mum 212 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 303, Parent ID = 264 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 7.84 cm 52.4 cm 5.05 m 1.59 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 7.83 cm 52.4 cm 5.05 m 0 eV 1.59 keV 115 mum 115 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 302, Parent ID = 264 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 8.08 cm 52.3 cm 5.04 m 2.78 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 8.07 cm 52.3 cm 5.04 m 0 eV 2.78 keV 258 mum 258 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 301, Parent ID = 264 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 8.45 cm 52 cm 5.04 m 4.81 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 8.47 cm 52 cm 5.04 m 3.26 keV 1.54 keV 412 mum 412 mum WorldPV eIoni + 2 8.49 cm 52 cm 5.04 m 175 eV 3.09 keV 302 mum 714 mum WorldPV eIoni + 3 8.49 cm 52 cm 5.04 m 0 eV 175 eV 13.3 mum 727 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 263, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 7.81 cm 50.1 cm 4.99 m 2.73 keV 0 eV 0 fm 0 fm Tracker initStep + 1 7.83 cm 50.1 cm 4.99 m 173 eV 2.56 keV 253 mum 253 mum Tracker eIoni + 2 7.83 cm 50.1 cm 4.99 m 0 eV 173 eV 13.2 mum 266 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 262, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 5.71 cm 46.8 cm 4.93 m 6.88 keV 0 eV 0 fm 0 fm Tracker initStep + 1 5.75 cm 46.8 cm 4.93 m 4.88 keV 1.99 keV 556 mum 556 mum Tracker eIoni + 2 5.78 cm 46.8 cm 4.93 m 3.4 keV 1.49 keV 418 mum 974 mum Tracker eIoni + 3 5.8 cm 46.8 cm 4.93 m 442 eV 2.96 keV 313 mum 1.29 mm Tracker eIoni + 4 5.8 cm 46.8 cm 4.93 m 0 eV 442 eV 24.7 mum 1.31 mm Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 261, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 5.34 cm 46.2 cm 4.92 m 1.19 keV 0 eV 0 fm 0 fm Tracker initStep + 1 5.34 cm 46.2 cm 4.92 m 0 eV 1.19 keV 77.1 mum 77.1 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 260, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 2.26 cm 41.3 cm 4.83 m 25.9 keV 0 eV 0 fm 0 fm Tracker initStep + 1 2.04 cm 41.1 cm 4.83 m 22.2 keV 3.7 keV 3.24 mm 3.24 mm Tracker eIoni + 2 2.03 cm 41.1 cm 4.83 m 19.9 keV 57.6 eV 262 mum 3.51 mm Tracker eIoni + 3 2.04 cm 41.1 cm 4.83 m 16.4 keV 3.54 keV 2.12 mm 5.63 mm Tracker eIoni + 4 1.95 cm 41.1 cm 4.83 m 13 keV 3.38 keV 1.58 mm 7.21 mm Tracker eIoni + 5 1.98 cm 41.1 cm 4.83 m 10.4 keV 2.56 keV 1.14 mm 8.35 mm Tracker eIoni + 6 2.03 cm 41.2 cm 4.84 m 8.16 keV 2.28 keV 864 mum 9.21 mm Tracker eIoni + 7 2.03 cm 41.2 cm 4.84 m 6.9 keV 122 eV 25.5 mum 9.24 mm Tracker eIoni + 8 2.07 cm 41.2 cm 4.84 m 5.31 keV 1.59 keV 558 mum 9.8 mm Tracker eIoni + 9 2.11 cm 41.2 cm 4.84 m 4.23 keV 1.08 keV 447 mum 1.02 cm Tracker eIoni + 10 2.15 cm 41.2 cm 4.84 m 2.43 keV 1.8 keV 374 mum 1.06 cm Tracker eIoni + 11 2.14 cm 41.2 cm 4.84 m 1.24 keV 1.19 keV 219 mum 1.08 cm Tracker eIoni + 12 2.15 cm 41.2 cm 4.84 m 0 eV 1.24 keV 81.4 mum 1.09 cm Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 307, Parent ID = 260 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 2.03 cm 41.2 cm 4.84 m 1.13 keV 0 eV 0 fm 0 fm Tracker initStep + 1 2.03 cm 41.2 cm 4.84 m 0 eV 1.13 keV 72.2 mum 72.2 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 306, Parent ID = 260 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 2.03 cm 41.1 cm 4.83 m 2.26 keV 0 eV 0 fm 0 fm Tracker initStep + 1 2.03 cm 41.1 cm 4.83 m 0 eV 2.26 keV 196 mum 196 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 259, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 2.25 cm 41.2 cm 4.83 m 4.86 keV 0 eV 0 fm 0 fm Tracker initStep + 1 2.23 cm 41.2 cm 4.83 m 3.26 keV 1.6 keV 416 mum 416 mum Tracker eIoni + 2 2.23 cm 41.2 cm 4.83 m 1.11 keV 2.15 keV 301 mum 718 mum Tracker eIoni + 3 2.24 cm 41.2 cm 4.83 m 0 eV 1.11 keV 70.3 mum 788 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 258, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.23 mm 37.2 cm 4.75 m 1.35 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -3.24 mm 37.2 cm 4.75 m 0 eV 1.35 keV 91.3 mum 91.3 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 257, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -7.84 mm 36.4 cm 4.74 m 1.81 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -7.83 mm 36.4 cm 4.74 m 0 eV 1.81 keV 140 mum 140 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 256, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.25 cm 33.8 cm 4.69 m 2.5 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.26 cm 33.8 cm 4.69 m 731 eV 1.77 keV 228 mum 228 mum Tracker eIoni + 2 -2.26 cm 33.8 cm 4.69 m 0 eV 731 eV 41.7 mum 270 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 255, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.05 cm 32.4 cm 4.66 m 6.32 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -3.08 cm 32.4 cm 4.66 m 4.1 keV 903 eV 409 mum 409 mum Tracker eIoni + 2 -3.08 cm 32.4 cm 4.66 m 1.07 keV 3.03 keV 365 mum 774 mum Tracker eIoni + 3 -3.08 cm 32.4 cm 4.66 m 0 eV 1.07 keV 66.8 mum 840 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 308, Parent ID = 255 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.08 cm 32.4 cm 4.66 m 1.32 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -3.09 cm 32.4 cm 4.66 m 0 eV 1.32 keV 88.4 mum 88.4 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 254, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -4.79 cm 29.6 cm 4.6 m 1.76 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -4.79 cm 29.6 cm 4.6 m 0 eV 1.76 keV 135 mum 135 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 253, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -4.82 cm 29.5 cm 4.6 m 1.68 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -4.82 cm 29.5 cm 4.6 m 0 eV 1.68 keV 126 mum 126 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 252, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -5.31 cm 28.7 cm 4.58 m 1.38 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -5.31 cm 28.7 cm 4.58 m 0 eV 1.38 keV 94.2 mum 94.2 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 251, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -5.93 cm 27.7 cm 4.55 m 1.43 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -5.93 cm 27.7 cm 4.55 m 0 eV 1.43 keV 99.5 mum 99.5 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 250, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -8.51 cm 23.3 cm 4.45 m 4.23 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -8.53 cm 23.3 cm 4.45 m 2.41 keV 1.82 keV 374 mum 374 mum Tracker eIoni + 2 -8.53 cm 23.3 cm 4.45 m 0 eV 2.41 keV 217 mum 591 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 249, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -10.3 cm 20.6 cm 4.39 m 8.1 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -10.3 cm 20.5 cm 4.39 m 5.81 keV 2.29 keV 652 mum 652 mum Tracker eIoni + 2 -10.3 cm 20.5 cm 4.39 m 4.61 keV 1.21 keV 481 mum 1.13 mm Tracker eIoni + 3 -10.3 cm 20.5 cm 4.39 m 2.59 keV 2.02 keV 399 mum 1.53 mm Tracker eIoni + 4 -10.3 cm 20.5 cm 4.39 m 0 eV 2.59 keV 238 mum 1.77 mm Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 248, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -11.5 cm 19 cm 4.35 m 5.23 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -11.5 cm 18.9 cm 4.35 m 4.2 keV 1.02 keV 441 mum 441 mum Tracker eIoni + 2 -11.5 cm 18.9 cm 4.35 m 2.24 keV 1.96 keV 372 mum 813 mum Tracker eIoni + 3 -11.5 cm 18.9 cm 4.35 m 0 eV 2.24 keV 194 mum 1.01 mm Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 247, Parent ID = 246 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -14.5 cm 15.2 cm 4.24 m 9.36 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -14.6 cm 15.2 cm 4.24 m 8.35 keV 1.01 keV 762 mum 762 mum Tracker eIoni + 2 -14.6 cm 15.2 cm 4.24 m 7.3 keV 1.05 keV 672 mum 1.43 mm Tracker eIoni + 3 -14.6 cm 15.3 cm 4.24 m 4.74 keV 820 eV 237 mum 1.67 mm Tracker eIoni + 4 -14.6 cm 15.2 cm 4.24 m 2.5 keV 2.25 keV 408 mum 2.08 mm Tracker eIoni + 5 -14.6 cm 15.3 cm 4.24 m 1.09 keV 1.4 keV 227 mum 2.31 mm Tracker eIoni + 6 -14.6 cm 15.3 cm 4.24 m 0 eV 1.09 keV 68.7 mum 2.37 mm Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 309, Parent ID = 247 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -14.6 cm 15.3 cm 4.24 m 1.74 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -14.6 cm 15.2 cm 4.24 m 0 eV 1.74 keV 132 mum 132 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 245, Parent ID = 234 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -14.8 cm 14.7 cm 4.22 m 5.27 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -14.8 cm 14.9 cm 4.22 m 4.17 MeV 1.1 MeV 2.83 mm 2.83 mm trkChamber eIoni + 2 -14.9 cm 14.7 cm 4.22 m 3.15 MeV 1.01 MeV 2.29 mm 5.12 mm trkChamber eIoni + 3 -15 cm 14.6 cm 4.22 m 2.51 MeV 639 keV 1.79 mm 6.9 mm trkChamber eIoni + 4 -15.1 cm 14.6 cm 4.22 m 2.19 MeV 325 keV 1.01 mm 7.91 mm TrackerTransportation + 5 -16 cm 13.1 cm 4.24 m 2.18 MeV 2.98 keV 2.08 cm 2.87 cm Tracker eIoni + 6 -19.9 cm 6.5 cm 4.28 m 2.17 MeV 11.4 keV 8.99 cm 11.9 cm Tracker eIoni + 7 -30.9 cm -12.1 cm 4.41 m 2.14 MeV 28.3 keV 25 cm 36.8 cm Tracker eIoni + 8 -33.2 cm -15.6 cm 4.44 m 2.13 MeV 8.61 keV 5.03 cm 41.9 cm Tracker eIoni + 9 -48.3 cm -36.8 cm 4.61 m 2.09 MeV 43.7 keV 31.6 cm 73.5 cm Tracker eIoni + 10 -61.6 cm -47.5 cm 4.67 m 2.05 MeV 26.6 keV 18.3 cm 91.8 cm Tracker eIoni + 11 -76.2 cm -58.5 cm 4.75 m 2.02 MeV 28.2 keV 20 cm 1.12 m Tracker eIoni + 12 -76.3 cm -58.6 cm 4.75 m 2.02 MeV 396 eV 1.25 mm 1.12 m Tracker eIoni + 13 -79.4 cm -61 cm 4.77 m 2.01 MeV 5.94 keV 4.48 cm 1.16 m Tracker eIoni + 14 -86.6 cm -65.8 cm 4.81 m 1.99 MeV 14.5 keV 9.38 cm 1.26 m Tracker eIoni + 15 -91.3 cm -69.2 cm 4.84 m 1.98 MeV 9.55 keV 6.62 cm 1.32 m Tracker eIoni + 16 -95.7 cm -72.7 cm 4.88 m 1.97 MeV 9.53 keV 6.61 cm 1.39 m Tracker eIoni + 17 -1.03 m -77.3 cm 4.92 m 1.94 MeV 16.3 keV 9.56 cm 1.49 m Tracker eIoni + 18 -1.08 m -80.3 cm 4.95 m 1.93 MeV 9.02 keV 6.55 cm 1.55 m Tracker eIoni + 19 -1.14 m -84.7 cm 4.99 m 1.92 MeV 14.4 keV 8.58 cm 1.64 m Tracker eIoni + 20 -1.14 m -84.8 cm 4.99 m 1.92 MeV 305 eV 2.57 mm 1.64 m Tracker eIoni + 21 -1.17 m -86.3 cm 5 m 1.91 MeV 4.68 keV 3.02 cm 1.67 m Tracker eIoni + 22 -1.2 m -88.9 cm 5.03 m 1.9 MeV 8.06 keV 5.04 cm 1.72 m WorldPVTransportation + 23 -1.27 m -93.2 cm 5.07 m 1.89 MeV 9.68 keV 9.43 cm 1.81 m WorldPV eIoni + 24 -1.43 m -1.08 m 5.13 m 1.86 MeV 28.2 keV 22.5 cm 2.04 m WorldPV eIoni + 25 -1.53 m -1.13 m 5.17 m 1.83 MeV 17 keV 11.7 cm 2.16 m WorldPV eIoni + 26 -1.53 m -1.14 m 5.18 m 1.82 MeV 1.73 keV 1.16 cm 2.17 m WorldPV eIoni + 27 -1.54 m -1.14 m 5.18 m 1.82 MeV 448 eV 1.36 mm 2.17 m WorldPV eIoni + 28 -1.55 m -1.15 m 5.18 m 1.82 MeV 1.11 keV 1.25 cm 2.18 m WorldPV eIoni + 29 -1.56 m -1.16 m 5.19 m 1.81 MeV 3.34 keV 1.87 cm 2.2 m WorldPV eIoni + 30 -1.59 m -1.18 m 5.2 m 1.8 MeV 3.37 keV 3.86 cm 2.24 m WorldPV eIoni + 31 -1.63 m -1.21 m 5.21 m 1.79 MeV 7.45 keV 4.73 cm 2.29 m WorldPV eIoni + 32 -1.69 m -1.24 m 5.23 m 1.78 MeV 12.9 keV 7.65 cm 2.36 m WorldPV eIoni + 33 -1.7 m -1.24 m 5.23 m 1.78 MeV 531 eV 4.62 mm 2.37 m WorldPV eIoni + 34 -1.85 m -1.31 m 5.28 m 1.65 MeV 25.6 keV 17.5 cm 2.54 m WorldPV eIoni + 35 -1.89 m -1.34 m 5.29 m 1.64 MeV 7.98 keV 4.96 cm 2.59 m WorldPV eIoni + 36 -1.9 m -1.35 m 5.3 m 1.63 MeV 1.52 keV 1.4 cm 2.61 m WorldPV eIoni + 37 -2.05 m -1.52 m 5.41 m 1.59 MeV 38.4 keV 25.6 cm 2.86 m WorldPV eIoni + 38 -2.28 m -1.78 m 5.53 m 1.54 MeV 54.9 keV 37.5 cm 3.24 m WorldPV eIoni + 39 -2.3 m -1.81 m 5.54 m 1.53 MeV 5.1 keV 3.38 cm 3.27 m WorldPV eIoni + 40 -2.32 m -1.83 m 5.55 m 1.52 MeV 4.29 keV 3.21 cm 3.3 m WorldPV eIoni + 41 -2.37 m -1.89 m 5.58 m 1.52 MeV 8.01 keV 8.51 cm 3.39 m WorldPV eIoni + 42 -2.54 m -2.09 m 5.72 m 1.48 MeV 35.7 keV 29.6 cm 3.68 m WorldPV eIoni + 43 -2.55 m -2.11 m 5.73 m 1.47 MeV 2.65 keV 2.27 cm 3.71 m WorldPV eIoni + 44 -2.58 m -2.16 m 5.76 m 1.46 MeV 7.85 keV 7.3 cm 3.78 m WorldPV eIoni + 45 -2.61 m -2.19 m 5.79 m 1.46 MeV 5.69 keV 4.51 cm 3.83 m WorldPV eIoni + 46 -2.64 m -2.26 m 5.83 m 1.44 MeV 9.52 keV 8.57 cm 3.91 m WorldPV eIoni + 47 -2.69 m -2.33 m 5.86 m 1.43 MeV 10.4 keV 8.93 cm 4 m WorldPV eIoni + 48 -2.73 m -2.39 m 5.89 m 1.42 MeV 11.2 keV 7.94 cm 4.08 m WorldPV eIoni + 49 -2.74 m -2.43 m 5.9 m 1.41 MeV 6.8 keV 4.39 cm 4.12 m WorldPV eIoni + 50 -2.78 m -2.61 m 5.93 m 1.35 MeV 27.8 keV 18.5 cm 4.31 m WorldPV eIoni + 51 -2.78 m -2.62 m 5.93 m 1.35 MeV 1.9 keV 1.35 cm 4.32 m WorldPV eIoni + 52 -2.82 m -2.89 m 5.99 m 1.31 MeV 43.5 keV 28.1 cm 4.6 m WorldPV eIoni + 53 -2.84 m -3.04 m 5.84 m 1.27 MeV 35.6 keV 21.4 cm 4.82 m WorldPV eIoni + 54 -2.85 m -3.12 m 5.79 m 1.25 MeV 15.9 keV 9.3 cm 4.91 m WorldPV eIoni + 55 -2.85 m -3.17 m 5.73 m 1.23 MeV 11.7 keV 8.14 cm 4.99 m WorldPV eIoni + 56 -2.85 m -3.19 m 5.71 m 1.23 MeV 2.68 keV 2.53 cm 5.02 m WorldPV eIoni + 57 -2.85 m -3.22 m 5.68 m 1.21 MeV 2.72 keV 4.08 cm 5.06 m WorldPV eIoni + 58 -2.82 m -3.38 m 5.55 m 1.18 MeV 28.9 keV 21 cm 5.27 m WorldPV eIoni + 59 -2.8 m -3.46 m 5.55 m 1.15 MeV 13.7 keV 8.86 cm 5.36 m WorldPV eIoni + 60 -2.8 m -3.63 m 5.56 m 1.12 MeV 27.8 keV 17 cm 5.53 m WorldPV eIoni + 61 -2.79 m -3.71 m 5.59 m 1.11 MeV 13.5 keV 8.6 cm 5.61 m WorldPV eIoni + 62 -2.79 m -3.72 m 5.59 m 1.07 MeV 819 eV 1.05 cm 5.62 m WorldPV eIoni + 63 -2.79 m -3.75 m 5.6 m 1.07 MeV 3.94 keV 3.01 cm 5.65 m WorldPV eIoni + 64 -2.8 m -3.89 m 5.67 m 1.04 MeV 24.8 keV 15.3 cm 5.81 m WorldPV eIoni + 65 -2.81 m -3.92 m 5.69 m 1.03 MeV 6.65 keV 3.84 cm 5.84 m WorldPV eIoni + 66 -2.82 m -3.93 m 5.69 m 1.03 MeV 1.88 keV 1.13 cm 5.86 m WorldPV eIoni + 67 -2.83 m -3.96 m 5.73 m 1.01 MeV 5.76 keV 5.08 cm 5.91 m WorldPV eIoni + 68 -2.85 m -4.03 m 5.78 m 995 keV 16.2 keV 8.97 cm 6 m WorldPV eIoni + 69 -2.86 m -4.06 m 5.8 m 988 keV 6.21 keV 3.67 cm 6.03 m WorldPV eIoni + 70 -2.87 m -4.1 m 5.84 m 977 keV 9.48 keV 5.67 cm 6.09 m WorldPV eIoni + 71 -2.89 m -4.17 m 5.91 m 962 keV 13.4 keV 10.5 cm 6.19 m WorldPV eIoni + 72 -2.91 m -4.19 m 5.94 m 956 keV 4.32 keV 3.45 cm 6.23 m WorldPV eIoni + 73 -2.96 m -4.25 m 6 m 944 keV 10.9 keV 10.2 cm 6.33 m WorldPV eIoni + 74 -3.01 m -4.36 m 6.06 m 917 keV 25.2 keV 13.8 cm 6.47 m WorldPV eIoni + 75 -3.08 m -4.42 m 6.12 m 899 keV 16 keV 10.6 cm 6.57 m WorldPV eIoni + 76 -3.09 m -4.44 m 6.13 m 818 keV 2.55 keV 2.34 cm 6.6 m WorldPV eIoni + 77 -3.13 m -4.51 m 6.18 m 801 keV 13.6 keV 9.81 cm 6.7 m WorldPV eIoni + 78 -3.23 m -4.68 m 6.33 m 769 keV 30.5 keV 25.1 cm 6.95 m WorldPV eIoni + 79 -3.26 m -4.72 m 6.34 m 760 keV 7.85 keV 5.27 cm 7 m WorldPV eIoni + 80 -3.28 m -4.77 m 6.37 m 751 keV 6.57 keV 5.85 cm 7.06 m WorldPV eIoni + 81 -3.37 m -4.92 m 6.44 m 721 keV 28.7 keV 18.9 cm 7.25 m WorldPV eIoni + 82 -3.39 m -4.95 m 6.47 m 711 keV 9.4 keV 5.46 cm 7.3 m WorldPV eIoni + 83 -3.45 m -5.04 m 6.57 m 688 keV 20.6 keV 14.5 cm 7.45 m WorldPV eIoni + 84 -3.47 m -5.08 m 6.63 m 675 keV 11.6 keV 7.55 cm 7.52 m WorldPV eIoni + 85 -3.48 m -5.09 m 6.64 m 667 keV 1.34 keV 8.53 mm 7.53 m WorldPV eIoni + 86 -3.53 m -5.17 m 6.75 m 648 keV 17.6 keV 14.7 cm 7.68 m WorldPV eIoni + 87 -3.53 m -5.17 m 6.76 m 599 keV 1.01 keV 9.06 mm 7.69 m WorldPV eIoni + 88 -3.54 m -5.2 m 6.78 m 587 keV 6.64 keV 3.82 cm 7.72 m WorldPV eIoni + 89 -3.54 m -5.23 m 6.8 m 576 keV 4.06 keV 3.19 cm 7.76 m WorldPV eIoni + 90 -3.52 m -5.29 m 6.83 m 558 keV 14.8 keV 7.6 cm 7.83 m WorldPV eIoni + 91 -3.58 m -5.39 m 6.91 m 535 keV 21.7 keV 13.8 cm 7.97 m WorldPV eIoni + 92 -3.61 m -5.47 m 6.94 m 512 keV 17.3 keV 9.08 cm 8.06 m WorldPV eIoni + 93 -3.64 m -5.53 m 6.98 m 481 keV 12.7 keV 8.73 cm 8.15 m WorldPV eIoni + 94 -3.64 m -5.55 m 7 m 476 keV 3.27 keV 2.41 cm 8.17 m WorldPV eIoni + 95 -3.63 m -5.57 m 7.01 m 471 keV 3.75 keV 2.19 cm 8.19 m WorldPV eIoni + 96 -3.64 m -5.65 m 7.07 m 460 keV 8.95 keV 9.66 cm 8.29 m WorldPV eIoni + 97 -3.64 m -5.66 m 7.07 m 456 keV 2.77 keV 1.59 cm 8.31 m WorldPV eIoni + 98 -3.64 m -5.72 m 7.1 m 443 keV 11.1 keV 6.77 cm 8.37 m WorldPV eIoni + 99 -3.64 m -5.73 m 7.11 m 438 keV 2.68 keV 8.23 mm 8.38 m WorldPV eIoni + 100 -3.65 m -5.82 m 7.14 m 425 keV 11.6 keV 9.89 cm 8.48 m WorldPV eIoni + 101 -3.64 m -5.85 m 7.15 m 417 keV 6.94 keV 3.6 cm 8.52 m WorldPV eIoni + 102 -3.71 m -6.04 m 7.26 m 371 keV 45 keV 23.8 cm 8.76 m WorldPV eIoni + 103 -3.71 m -6.05 m 7.28 m 364 keV 5.18 keV 2.24 cm 8.78 m WorldPV eIoni + 104 -3.7 m -6.14 m 7.34 m 346 keV 17.2 keV 11 cm 8.89 m WorldPV eIoni + 105 -3.7 m -6.14 m 7.35 m 344 keV 341 eV 4.1 mm 8.89 m WorldPV eIoni + 106 -3.67 m -6.22 m 7.44 m 314 keV 28.9 keV 13.4 cm 9.03 m WorldPV eIoni + 107 -3.67 m -6.23 m 7.46 m 303 keV 5.5 keV 2.29 cm 9.05 m WorldPV eIoni + 108 -3.65 m -6.25 m 7.48 m 299 keV 3.28 keV 2.36 cm 9.07 m WorldPV eIoni + 109 -3.65 m -6.25 m 7.48 m 297 keV 214 eV 2.63 mm 9.08 m WorldPV eIoni + 110 -3.64 m -6.26 m 7.48 m 292 keV 2 keV 1.55 cm 9.09 m WorldPV eIoni + 111 -3.64 m -6.26 m 7.48 m 290 keV 429 eV 3.86 mm 9.09 m WorldPV eIoni + 112 -3.61 m -6.29 m 7.5 m 282 keV 8.28 keV 4.16 cm 9.14 m OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 415, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.64 m -6.26 m 7.48 m 1.3 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.64 m -6.26 m 7.48 m 0 eV 1.3 keV 86.6 mum 86.6 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 414, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.64 m -6.26 m 7.48 m 3.36 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.64 m -6.26 m 7.48 m 0 eV 3.36 keV 310 mum 310 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 413, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.65 m -6.25 m 7.48 m 1.22 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.65 m -6.25 m 7.48 m 0 eV 1.22 keV 79.4 mum 79.4 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 412, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.65 m -6.25 m 7.48 m 1.06 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.65 m -6.25 m 7.48 m 0 eV 1.06 keV 66.4 mum 66.4 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 411, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.67 m -6.23 m 7.46 m 4.97 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.67 m -6.23 m 7.46 m 2.95 keV 2.02 keV 424 mum 424 mum WorldPV eIoni + 2 -3.67 m -6.23 m 7.46 m 1.14 keV 1.81 keV 275 mum 699 mum WorldPV eIoni + 3 -3.67 m -6.23 m 7.46 m 0 eV 1.14 keV 73 mum 772 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 410, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.67 m -6.22 m 7.44 m 1.75 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.67 m -6.22 m 7.44 m 0 eV 1.75 keV 133 mum 133 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 409, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.7 m -6.14 m 7.35 m 1.09 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.7 m -6.14 m 7.35 m 0 eV 1.09 keV 68.4 mum 68.4 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 408, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.7 m -6.14 m 7.34 m 1.21 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.7 m -6.14 m 7.34 m 0 eV 1.21 keV 78.5 mum 78.5 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 407, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.71 m -6.05 m 7.28 m 1.47 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.71 m -6.05 m 7.28 m 0 eV 1.47 keV 104 mum 104 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 406, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.71 m -6.04 m 7.26 m 1.58 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.71 m -6.04 m 7.26 m 0 eV 1.58 keV 115 mum 115 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 405, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.64 m -5.85 m 7.15 m 1.33 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.64 m -5.85 m 7.15 m 0 eV 1.33 keV 90 mum 90 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 404, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.65 m -5.82 m 7.14 m 1.17 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.65 m -5.82 m 7.14 m 0 eV 1.17 keV 75.6 mum 75.6 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 403, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.64 m -5.73 m 7.11 m 1.86 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.64 m -5.73 m 7.11 m 0 eV 1.86 keV 146 mum 146 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 402, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.64 m -5.72 m 7.1 m 1.67 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.64 m -5.72 m 7.1 m 0 eV 1.67 keV 124 mum 124 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 401, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.64 m -5.66 m 7.07 m 1.32 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.64 m -5.66 m 7.07 m 0 eV 1.32 keV 88.7 mum 88.7 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 400, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.64 m -5.65 m 7.07 m 2.02 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.64 m -5.65 m 7.07 m 0 eV 2.02 keV 166 mum 166 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 399, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.63 m -5.57 m 7.01 m 1.27 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.63 m -5.57 m 7.01 m 0 eV 1.27 keV 83.9 mum 83.9 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 398, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.64 m -5.55 m 7 m 2.17 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.64 m -5.55 m 7 m 0 eV 2.17 keV 185 mum 185 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 397, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.64 m -5.53 m 6.98 m 18.6 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.64 m -5.53 m 6.98 m 14.3 keV 4.31 keV 1.92 mm 1.92 mm WorldPV eIoni + 2 -3.64 m -5.53 m 6.98 m 11.3 keV 1.54 keV 623 mum 2.54 mm WorldPV eIoni + 3 -3.64 m -5.53 m 6.98 m 10.3 keV 1.02 keV 955 mum 3.49 mm WorldPV eIoni + 4 -3.64 m -5.53 m 6.98 m 7.22 keV 3.08 keV 850 mum 4.34 mm WorldPV eIoni + 5 -3.64 m -5.53 m 6.98 m 3.9 keV 3.32 keV 583 mum 4.93 mm WorldPV eIoni + 6 -3.65 m -5.53 m 6.98 m 1.45 keV 2.45 keV 351 mum 5.28 mm WorldPV eIoni + 7 -3.65 m -5.53 m 6.98 m 0 eV 1.45 keV 102 mum 5.38 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 416, Parent ID = 397 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.64 m -5.53 m 6.98 m 1.44 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.64 m -5.53 m 6.98 m 0 eV 1.44 keV 101 mum 101 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 396, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.61 m -5.47 m 6.94 m 5.53 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.61 m -5.47 m 6.94 m 3.76 keV 1.77 keV 462 mum 462 mum WorldPV eIoni + 2 -3.61 m -5.47 m 6.94 m 1.98 keV 1.78 keV 340 mum 802 mum WorldPV eIoni + 3 -3.61 m -5.47 m 6.94 m 0 eV 1.98 keV 161 mum 963 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 395, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.58 m -5.39 m 6.91 m 1.18 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.58 m -5.39 m 6.91 m 0 eV 1.18 keV 75.9 mum 75.9 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 394, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.52 m -5.29 m 6.83 m 3.46 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.52 m -5.3 m 6.83 m 1.87 keV 1.6 keV 318 mum 318 mum WorldPV eIoni + 2 -3.52 m -5.3 m 6.83 m 0 eV 1.87 keV 147 mum 465 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 393, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.54 m -5.23 m 6.8 m 6.73 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.54 m -5.23 m 6.8 m 4.7 keV 2.04 keV 546 mum 546 mum WorldPV eIoni + 2 -3.54 m -5.23 m 6.8 m 3.72 keV 976 eV 405 mum 951 mum WorldPV eIoni + 3 -3.54 m -5.23 m 6.8 m 341 eV 3.38 keV 338 mum 1.29 mm WorldPV eIoni + 4 -3.54 m -5.23 m 6.8 m 0 eV 341 eV 19.9 mum 1.31 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 392, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.54 m -5.2 m 6.78 m 4.89 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.54 m -5.2 m 6.78 m 2.73 keV 2.16 keV 418 mum 418 mum WorldPV eIoni + 2 -3.54 m -5.2 m 6.78 m 0 eV 2.73 keV 253 mum 671 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 391, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.53 m -5.17 m 6.76 m 48.7 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.53 m -5.17 m 6.76 m 46.7 keV 901 eV 2.39 mm 2.39 mm WorldPV eIoni + 2 -3.53 m -5.17 m 6.76 m 42.5 keV 4.19 keV 8.88 mm 1.13 cm WorldPV eIoni + 3 -3.53 m -5.17 m 6.76 m 40.2 keV 1.03 keV 2.91 mm 1.42 cm WorldPV eIoni + 4 -3.53 m -5.16 m 6.77 m 35.4 keV 4.8 keV 6.84 mm 2.1 cm WorldPV eIoni + 5 -3.53 m -5.17 m 6.77 m 29.8 keV 5.56 keV 5.48 mm 2.65 cm WorldPV eIoni + 6 -3.53 m -5.17 m 6.77 m 28.2 keV 408 eV 590 mum 2.71 cm WorldPV eIoni + 7 -3.54 m -5.17 m 6.77 m 25.3 keV 2.87 keV 3.73 mm 3.08 cm WorldPV eIoni + 8 -3.54 m -5.17 m 6.77 m 21.9 keV 3.39 keV 3.11 mm 3.39 cm WorldPV eIoni + 9 -3.54 m -5.17 m 6.77 m 19.2 keV 2.71 keV 2.47 mm 3.64 cm WorldPV eIoni + 10 -3.54 m -5.17 m 6.77 m 17.9 keV 1.35 keV 2.01 mm 3.84 cm WorldPV eIoni + 11 -3.54 m -5.17 m 6.77 m 16.2 keV 1.64 keV 1.8 mm 4.02 cm WorldPV eIoni + 12 -3.54 m -5.17 m 6.77 m 14.2 keV 1.99 keV 1.56 mm 4.18 cm WorldPV eIoni + 13 -3.55 m -5.17 m 6.77 m 12.4 keV 1.86 keV 1.29 mm 4.31 cm WorldPV eIoni + 14 -3.55 m -5.17 m 6.77 m 9.64 keV 2.74 keV 1.07 mm 4.41 cm WorldPV eIoni + 15 -3.55 m -5.17 m 6.77 m 6.74 keV 2.9 keV 787 mum 4.49 cm WorldPV eIoni + 16 -3.55 m -5.17 m 6.77 m 3.47 keV 1.35 keV 416 mum 4.53 cm WorldPV eIoni + 17 -3.55 m -5.17 m 6.77 m 1.19 keV 2.29 keV 319 mum 4.57 cm WorldPV eIoni + 18 -3.55 m -5.17 m 6.77 m 0 eV 1.19 keV 76.8 mum 4.57 cm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 420, Parent ID = 391 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.55 m -5.17 m 6.77 m 1.91 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.55 m -5.17 m 6.77 m 0 eV 1.91 keV 152 mum 152 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 419, Parent ID = 391 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.53 m -5.17 m 6.77 m 1.23 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.53 m -5.17 m 6.77 m 0 eV 1.23 keV 80.5 mum 80.5 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 418, Parent ID = 391 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.53 m -5.17 m 6.76 m 1.3 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.53 m -5.17 m 6.76 m 0 eV 1.3 keV 87.1 mum 87.1 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 417, Parent ID = 391 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.53 m -5.17 m 6.76 m 1.13 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.53 m -5.17 m 6.76 m 0 eV 1.13 keV 72 mum 72 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 390, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.53 m -5.17 m 6.75 m 1.46 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.53 m -5.17 m 6.75 m 0 eV 1.46 keV 102 mum 102 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 389, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.48 m -5.09 m 6.64 m 6.62 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.48 m -5.09 m 6.64 m 4.5 keV 2.12 keV 538 mum 538 mum WorldPV eIoni + 2 -3.48 m -5.09 m 6.64 m 2.45 keV 2.05 keV 392 mum 931 mum WorldPV eIoni + 3 -3.48 m -5.09 m 6.64 m 0 eV 2.45 keV 222 mum 1.15 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 388, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.47 m -5.08 m 6.63 m 1.14 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.47 m -5.08 m 6.63 m 0 eV 1.14 keV 72.9 mum 72.9 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 387, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.45 m -5.04 m 6.57 m 2.14 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.45 m -5.04 m 6.57 m 0 eV 2.14 keV 181 mum 181 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 386, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.39 m -4.95 m 6.47 m 1.12 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.39 m -4.95 m 6.47 m 0 eV 1.12 keV 71.4 mum 71.4 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 385, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.37 m -4.92 m 6.44 m 1.36 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.37 m -4.92 m 6.44 m 0 eV 1.36 keV 92.2 mum 92.2 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 384, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.28 m -4.77 m 6.37 m 1.66 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.28 m -4.77 m 6.37 m 0 eV 1.66 keV 123 mum 123 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 383, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.26 m -4.72 m 6.34 m 1.3 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.26 m -4.72 m 6.34 m 0 eV 1.3 keV 87.3 mum 87.3 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 382, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.23 m -4.68 m 6.33 m 1.81 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.23 m -4.68 m 6.33 m 0 eV 1.81 keV 140 mum 140 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 381, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.13 m -4.51 m 6.18 m 3.27 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.13 m -4.51 m 6.18 m 1.17 keV 2.1 keV 302 mum 302 mum WorldPV eIoni + 2 -3.13 m -4.51 m 6.18 m 0 eV 1.17 keV 75.5 mum 378 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 380, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.09 m -4.44 m 6.13 m 78.7 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.09 m -4.44 m 6.13 m 68.1 keV 1.05 keV 3.53 mm 3.53 mm WorldPV eIoni + 2 -3.08 m -4.45 m 6.13 m 65.2 keV 1.29 keV 2.94 mm 6.47 mm WorldPV eIoni + 3 -3.08 m -4.45 m 6.13 m 63.1 keV 311 eV 1.31 mm 7.78 mm WorldPV eIoni + 4 -3.08 m -4.45 m 6.13 m 58.8 keV 3.13 keV 6.38 mm 1.42 cm WorldPV eIoni + 5 -3.08 m -4.46 m 6.13 m 56.4 keV 1.16 keV 4.7 mm 1.89 cm WorldPV eIoni + 6 -3.08 m -4.47 m 6.12 m 48.5 keV 7.82 keV 1.23 cm 3.12 cm WorldPV eIoni + 7 -3.08 m -4.47 m 6.12 m 46.7 keV 255 eV 881 mum 3.21 cm WorldPV eIoni + 8 -3.08 m -4.47 m 6.13 m 38.1 keV 4.67 keV 6.32 mm 3.84 cm WorldPV eIoni + 9 -3.07 m -4.48 m 6.12 m 33.5 keV 4.57 keV 6.22 mm 4.46 cm WorldPV eIoni + 10 -3.08 m -4.48 m 6.13 m 27.7 keV 5.84 keV 5 mm 4.96 cm WorldPV eIoni + 11 -3.08 m -4.48 m 6.13 m 24.9 keV 2.76 keV 3.62 mm 5.32 cm WorldPV eIoni + 12 -3.08 m -4.48 m 6.13 m 22.4 keV 2.55 keV 3.03 mm 5.63 cm WorldPV eIoni + 13 -3.08 m -4.48 m 6.13 m 19.2 keV 3.17 keV 2.55 mm 5.88 cm WorldPV eIoni + 14 -3.08 m -4.48 m 6.13 m 17.1 keV 2.05 keV 2.01 mm 6.08 cm WorldPV eIoni + 15 -3.08 m -4.48 m 6.13 m 14.5 keV 2.61 keV 1.68 mm 6.25 cm WorldPV eIoni + 16 -3.08 m -4.47 m 6.13 m 13.3 keV 1.18 keV 1.32 mm 6.38 cm WorldPV eIoni + 17 -3.08 m -4.47 m 6.13 m 10.8 keV 922 eV 585 mum 6.44 cm WorldPV eIoni + 18 -3.08 m -4.47 m 6.13 m 9.65 keV 1.15 keV 901 mum 6.53 cm WorldPV eIoni + 19 -3.08 m -4.47 m 6.13 m 8 keV 1.65 keV 788 mum 6.61 cm WorldPV eIoni + 20 -3.08 m -4.47 m 6.13 m 4.99 keV 3.01 keV 644 mum 6.68 cm WorldPV eIoni + 21 -3.08 m -4.47 m 6.13 m 2.91 keV 2.08 keV 425 mum 6.72 cm WorldPV eIoni + 22 -3.08 m -4.47 m 6.13 m 1.05 keV 1.86 keV 271 mum 6.74 cm WorldPV eIoni + 23 -3.08 m -4.47 m 6.13 m 0 eV 1.05 keV 65.3 mum 6.75 cm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 428, Parent ID = 380 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.08 m -4.47 m 6.13 m 1.62 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.08 m -4.47 m 6.13 m 0 eV 1.62 keV 119 mum 119 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 427, Parent ID = 380 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.08 m -4.47 m 6.13 m 3.93 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.07 m -4.47 m 6.13 m 2.4 keV 1.53 keV 352 mum 352 mum WorldPV eIoni + 2 -3.07 m -4.47 m 6.13 m 0 eV 2.4 keV 215 mum 568 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 426, Parent ID = 380 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.08 m -4.47 m 6.12 m 1.6 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.08 m -4.47 m 6.12 m 0 eV 1.6 keV 117 mum 117 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 425, Parent ID = 380 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.08 m -4.46 m 6.13 m 1.32 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.08 m -4.46 m 6.13 m 0 eV 1.32 keV 88.9 mum 88.9 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 424, Parent ID = 380 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.08 m -4.45 m 6.13 m 1.14 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.08 m -4.45 m 6.13 m 0 eV 1.14 keV 72.9 mum 72.9 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 423, Parent ID = 380 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.08 m -4.45 m 6.13 m 1.77 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.08 m -4.45 m 6.13 m 0 eV 1.77 keV 136 mum 136 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 422, Parent ID = 380 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.08 m -4.45 m 6.13 m 1.64 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.08 m -4.45 m 6.13 m 0 eV 1.64 keV 121 mum 121 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 421, Parent ID = 380 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.09 m -4.44 m 6.13 m 9.49 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.08 m -4.44 m 6.13 m 8.19 keV 1.29 keV 773 mum 773 mum WorldPV eIoni + 2 -3.08 m -4.44 m 6.13 m 5.82 keV 2.37 keV 660 mum 1.43 mm WorldPV eIoni + 3 -3.08 m -4.44 m 6.13 m 3.79 keV 2.04 keV 481 mum 1.91 mm WorldPV eIoni + 4 -3.08 m -4.44 m 6.13 m 1.36 keV 2.42 keV 343 mum 2.26 mm WorldPV eIoni + 5 -3.08 m -4.44 m 6.13 m 0 eV 1.36 keV 93.1 mum 2.35 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 379, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.08 m -4.42 m 6.12 m 1.47 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.08 m -4.42 m 6.12 m 0 eV 1.47 keV 103 mum 103 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 378, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.01 m -4.36 m 6.06 m 1.88 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -3.01 m -4.36 m 6.06 m 0 eV 1.88 keV 148 mum 148 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 377, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.96 m -4.25 m 6 m 1.02 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.96 m -4.25 m 6 m 0 eV 1.02 keV 62.5 mum 62.5 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 376, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.91 m -4.19 m 5.94 m 2.44 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.91 m -4.19 m 5.94 m 0 eV 2.44 keV 221 mum 221 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 375, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.89 m -4.17 m 5.91 m 1.64 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.89 m -4.17 m 5.91 m 0 eV 1.64 keV 121 mum 121 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 374, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.87 m -4.1 m 5.84 m 1.06 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.87 m -4.1 m 5.84 m 0 eV 1.06 keV 65.7 mum 65.7 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 373, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.86 m -4.06 m 5.8 m 1.26 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.86 m -4.06 m 5.8 m 0 eV 1.26 keV 82.9 mum 82.9 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 372, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.85 m -4.03 m 5.78 m 1.08 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.85 m -4.03 m 5.78 m 0 eV 1.08 keV 67.5 mum 67.5 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 371, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.83 m -3.96 m 5.73 m 7.41 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.83 m -3.96 m 5.73 m 5.78 keV 1.63 keV 598 mum 598 mum WorldPV eIoni + 2 -2.83 m -3.96 m 5.73 m 4.67 keV 1.11 keV 478 mum 1.08 mm WorldPV eIoni + 3 -2.83 m -3.96 m 5.73 m 3.44 keV 95 eV 109 mum 1.19 mm WorldPV eIoni + 4 -2.83 m -3.96 m 5.73 m 328 eV 3.11 keV 316 mum 1.5 mm WorldPV eIoni + 5 -2.83 m -3.96 m 5.73 m 0 eV 328 eV 19.3 mum 1.52 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 429, Parent ID = 371 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.83 m -3.96 m 5.73 m 1.14 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.83 m -3.96 m 5.73 m 0 eV 1.14 keV 73 mum 73 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 370, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.82 m -3.93 m 5.69 m 1.37 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.82 m -3.93 m 5.69 m 0 eV 1.37 keV 94 mum 94 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 369, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.81 m -3.92 m 5.69 m 1.18 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.81 m -3.92 m 5.69 m 0 eV 1.18 keV 76.6 mum 76.6 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 368, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.8 m -3.89 m 5.67 m 3.33 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.8 m -3.89 m 5.67 m 2.21 keV 1.12 keV 307 mum 307 mum WorldPV eIoni + 2 -2.8 m -3.89 m 5.67 m 0 eV 2.21 keV 189 mum 496 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 367, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.79 m -3.75 m 5.6 m 4.04 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.79 m -3.75 m 5.61 m 1.6 keV 2.44 keV 360 mum 360 mum WorldPV eIoni + 2 -2.79 m -3.75 m 5.6 m 0 eV 1.6 keV 117 mum 477 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 366, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.79 m -3.72 m 5.59 m 32 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.79 m -3.73 m 5.59 m 28.5 keV 3.57 keV 4.63 mm 4.63 mm WorldPV eIoni + 2 -2.79 m -3.73 m 5.59 m 23.3 keV 5.19 keV 3.79 mm 8.42 mm WorldPV eIoni + 3 -2.79 m -3.73 m 5.59 m 19.7 keV 970 eV 986 mum 9.41 mm WorldPV eIoni + 4 -2.79 m -3.73 m 5.59 m 17.2 keV 2.57 keV 2.09 mm 1.15 cm WorldPV eIoni + 5 -2.79 m -3.73 m 5.59 m 15 keV 2.19 keV 1.69 mm 1.32 cm WorldPV eIoni + 6 -2.79 m -3.73 m 5.59 m 13.5 keV 1.51 keV 1.39 mm 1.46 cm WorldPV eIoni + 7 -2.79 m -3.73 m 5.59 m 11.6 keV 1.87 keV 1.2 mm 1.58 cm WorldPV eIoni + 8 -2.79 m -3.73 m 5.59 m 9.53 keV 2.08 keV 984 mum 1.68 cm WorldPV eIoni + 9 -2.79 m -3.73 m 5.59 m 7.72 keV 690 eV 411 mum 1.72 cm WorldPV eIoni + 10 -2.79 m -3.72 m 5.59 m 5.86 keV 1.85 keV 622 mum 1.78 cm WorldPV eIoni + 11 -2.79 m -3.72 m 5.59 m 3.63 keV 2.23 keV 484 mum 1.83 cm WorldPV eIoni + 12 -2.79 m -3.72 m 5.59 m 948 eV 2.68 keV 331 mum 1.86 cm WorldPV eIoni + 13 -2.79 m -3.72 m 5.59 m 0 eV 948 eV 57.2 mum 1.87 cm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 431, Parent ID = 366 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.79 m -3.73 m 5.59 m 1.12 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.79 m -3.73 m 5.59 m 0 eV 1.12 keV 71.2 mum 71.2 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 430, Parent ID = 366 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.79 m -3.73 m 5.59 m 2.57 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.79 m -3.73 m 5.59 m 611 eV 1.95 keV 235 mum 235 mum WorldPV eIoni + 2 -2.79 m -3.73 m 5.59 m 0 eV 611 eV 34.1 mum 270 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 365, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.79 m -3.71 m 5.59 m 3.08 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.79 m -3.71 m 5.59 m 1.7 keV 1.38 keV 287 mum 287 mum WorldPV eIoni + 2 -2.79 m -3.71 m 5.59 m 0 eV 1.7 keV 127 mum 414 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 364, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.8 m -3.63 m 5.56 m 3.93 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.8 m -3.63 m 5.56 m 756 eV 3.18 keV 352 mum 352 mum WorldPV eIoni + 2 -2.8 m -3.63 m 5.56 m 0 eV 756 eV 43.3 mum 396 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 363, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.8 m -3.46 m 5.55 m 15 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.8 m -3.46 m 5.55 m 12.2 keV 2.86 keV 1.39 mm 1.39 mm WorldPV eIoni + 2 -2.8 m -3.46 m 5.55 m 10.7 keV 1.51 keV 1.04 mm 2.44 mm WorldPV eIoni + 3 -2.8 m -3.46 m 5.55 m 9.05 keV 1.61 keV 887 mum 3.32 mm WorldPV eIoni + 4 -2.8 m -3.46 m 5.55 m 7.84 keV 1.21 keV 735 mum 4.06 mm WorldPV eIoni + 5 -2.8 m -3.46 m 5.55 m 6.09 keV 1.75 keV 632 mum 4.69 mm WorldPV eIoni + 6 -2.8 m -3.46 m 5.55 m 5.03 keV 1.06 keV 500 mum 5.19 mm WorldPV eIoni + 7 -2.8 m -3.46 m 5.54 m 2.56 keV 2.47 keV 428 mum 5.62 mm WorldPV eIoni + 8 -2.8 m -3.46 m 5.54 m 0 eV 2.56 keV 235 mum 5.85 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 362, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.82 m -3.38 m 5.55 m 1.08 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.82 m -3.38 m 5.55 m 0 eV 1.08 keV 67.3 mum 67.3 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 361, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.85 m -3.22 m 5.68 m 14.8 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.85 m -3.22 m 5.68 m 12.6 keV 2.22 keV 1.36 mm 1.36 mm WorldPV eIoni + 2 -2.85 m -3.21 m 5.68 m 8.92 keV 3.65 keV 1.09 mm 2.45 mm WorldPV eIoni + 3 -2.85 m -3.21 m 5.68 m 6.89 keV 2.04 keV 723 mum 3.18 mm WorldPV eIoni + 4 -2.85 m -3.21 m 5.68 m 5.58 keV 1.3 keV 557 mum 3.73 mm WorldPV eIoni + 5 -2.85 m -3.21 m 5.68 m 3.81 keV 1.78 keV 465 mum 4.2 mm WorldPV eIoni + 6 -2.85 m -3.21 m 5.68 m 820 eV 2.99 keV 344 mum 4.54 mm WorldPV eIoni + 7 -2.85 m -3.21 m 5.68 m 0 eV 820 eV 47.8 mum 4.59 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 360, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.85 m -3.19 m 5.71 m 1.03 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.85 m -3.19 m 5.71 m 0 eV 1.03 keV 63.9 mum 63.9 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 359, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.85 m -3.17 m 5.73 m 3.19 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.85 m -3.17 m 5.73 m 0 eV 3.19 keV 296 mum 296 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 358, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.85 m -3.12 m 5.79 m 2 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.85 m -3.12 m 5.79 m 0 eV 2 keV 163 mum 163 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 357, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.84 m -3.04 m 5.84 m 4.64 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.84 m -3.04 m 5.84 m 2.06 keV 927 eV 284 mum 284 mum WorldPV eIoni + 2 -2.84 m -3.04 m 5.84 m 0 eV 2.06 keV 171 mum 455 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 432, Parent ID = 357 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.84 m -3.04 m 5.84 m 1.65 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.84 m -3.04 m 5.84 m 0 eV 1.65 keV 122 mum 122 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 356, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.82 m -2.89 m 5.99 m 1.03 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.82 m -2.89 m 5.99 m 0 eV 1.03 keV 63.9 mum 63.9 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 355, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.78 m -2.62 m 5.93 m 1.1 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.78 m -2.62 m 5.93 m 0 eV 1.1 keV 68.8 mum 68.8 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 354, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.78 m -2.61 m 5.93 m 27.5 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.78 m -2.61 m 5.92 m 22.7 keV 4.82 keV 3.59 mm 3.59 mm WorldPV eIoni + 2 -2.78 m -2.61 m 5.92 m 20.2 keV 2.55 keV 2.62 mm 6.2 mm WorldPV eIoni + 3 -2.78 m -2.61 m 5.92 m 18 keV 2.19 keV 2.16 mm 8.36 mm WorldPV eIoni + 4 -2.79 m -2.61 m 5.92 m 14.6 keV 3.37 keV 1.81 mm 1.02 cm WorldPV eIoni + 5 -2.79 m -2.61 m 5.92 m 12.8 keV 1.78 keV 1.33 mm 1.15 cm WorldPV eIoni + 6 -2.79 m -2.61 m 5.92 m 10.6 keV 2.22 keV 1.12 mm 1.26 cm WorldPV eIoni + 7 -2.79 m -2.61 m 5.92 m 7.96 keV 2.63 keV 879 mum 1.35 cm WorldPV eIoni + 8 -2.79 m -2.61 m 5.92 m 5.82 keV 2.13 keV 641 mum 1.41 cm WorldPV eIoni + 9 -2.79 m -2.61 m 5.92 m 4.59 keV 1.24 keV 481 mum 1.46 cm WorldPV eIoni + 10 -2.79 m -2.61 m 5.92 m 1.88 keV 1.04 keV 296 mum 1.49 cm WorldPV eIoni + 11 -2.79 m -2.61 m 5.92 m 0 eV 1.88 keV 148 mum 1.51 cm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 433, Parent ID = 354 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.79 m -2.61 m 5.92 m 1.67 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.79 m -2.61 m 5.92 m 0 eV 1.67 keV 124 mum 124 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 353, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.74 m -2.43 m 5.9 m 1.23 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.74 m -2.43 m 5.9 m 0 eV 1.23 keV 80.9 mum 80.9 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 352, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.73 m -2.39 m 5.89 m 1.13 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.73 m -2.39 m 5.89 m 0 eV 1.13 keV 72.3 mum 72.3 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 351, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.69 m -2.33 m 5.86 m 1.24 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.69 m -2.33 m 5.86 m 0 eV 1.24 keV 81.9 mum 81.9 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 350, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.64 m -2.26 m 5.83 m 4.81 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.64 m -2.26 m 5.83 m 4.17 keV 637 eV 412 mum 412 mum WorldPV eIoni + 2 -2.64 m -2.26 m 5.83 m 2.68 keV 1.49 keV 370 mum 782 mum WorldPV eIoni + 3 -2.64 m -2.26 m 5.83 m 458 eV 2.22 keV 248 mum 1.03 mm WorldPV eIoni + 4 -2.64 m -2.26 m 5.83 m 0 eV 458 eV 25.6 mum 1.06 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 349, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.61 m -2.19 m 5.79 m 2.13 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.61 m -2.19 m 5.79 m 0 eV 2.13 keV 180 mum 180 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 348, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.58 m -2.16 m 5.76 m 1.34 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.58 m -2.16 m 5.76 m 0 eV 1.34 keV 90.2 mum 90.2 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 347, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.55 m -2.11 m 5.73 m 2.62 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.55 m -2.11 m 5.73 m 0 eV 2.62 keV 241 mum 241 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 346, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.54 m -2.09 m 5.72 m 1.02 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.54 m -2.09 m 5.72 m 0 eV 1.02 keV 63.1 mum 63.1 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 345, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.37 m -1.89 m 5.58 m 1.22 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.37 m -1.89 m 5.58 m 0 eV 1.22 keV 79.9 mum 79.9 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 344, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.32 m -1.83 m 5.55 m 1.22 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.32 m -1.83 m 5.55 m 0 eV 1.22 keV 80.1 mum 80.1 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 343, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.3 m -1.81 m 5.54 m 1.6 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.3 m -1.81 m 5.54 m 0 eV 1.6 keV 117 mum 117 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 342, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.28 m -1.78 m 5.53 m 1.1 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.28 m -1.78 m 5.53 m 0 eV 1.1 keV 69.4 mum 69.4 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 341, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.05 m -1.52 m 5.41 m 2.71 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -2.05 m -1.52 m 5.41 m 341 eV 2.37 keV 250 mum 250 mum WorldPV eIoni + 2 -2.05 m -1.52 m 5.41 m 0 eV 341 eV 19.9 mum 270 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 340, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.9 m -1.35 m 5.3 m 1.84 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.9 m -1.35 m 5.3 m 0 eV 1.84 keV 143 mum 143 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 339, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.89 m -1.34 m 5.29 m 4.2 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.89 m -1.34 m 5.29 m 2.4 keV 1.8 keV 372 mum 372 mum WorldPV eIoni + 2 -1.89 m -1.34 m 5.29 m 0 eV 2.4 keV 216 mum 588 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 338, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.85 m -1.31 m 5.28 m 102 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.87 m -1.31 m 5.3 m 96.6 keV 5.49 keV 3.48 cm 3.48 cm WorldPV eIoni + 2 -1.87 m -1.3 m 5.31 m 93.4 keV 2.11 keV 8.24 mm 4.3 cm WorldPV eIoni + 3 -1.88 m -1.29 m 5.34 m 83.8 keV 9.54 keV 2.97 cm 7.27 cm WorldPV eIoni + 4 -1.88 m -1.29 m 5.34 m 78 keV 1.44 keV 4.3 mm 7.7 cm WorldPV eIoni + 5 -1.87 m -1.27 m 5.34 m 63.9 keV 14.1 keV 2.17 cm 9.88 cm WorldPV eIoni + 6 -1.87 m -1.26 m 5.34 m 59.3 keV 3.51 keV 7.04 mm 10.6 cm WorldPV eIoni + 7 -1.88 m -1.25 m 5.35 m 51.6 keV 5.97 keV 8.18 mm 11.4 cm WorldPV eIoni + 8 -1.88 m -1.25 m 5.35 m 45 keV 6.62 keV 1.05 cm 12.5 cm WorldPV eIoni + 9 -1.88 m -1.25 m 5.36 m 35.1 keV 8.19 keV 8.29 mm 13.3 cm WorldPV eIoni + 10 -1.89 m -1.25 m 5.36 m 32.4 keV 611 eV 1.01 mm 13.4 cm WorldPV eIoni + 11 -1.89 m -1.25 m 5.36 m 30.4 keV 903 eV 330 mum 13.4 cm WorldPV eIoni + 12 -1.89 m -1.25 m 5.36 m 27.3 keV 3.13 keV 4.23 mm 13.8 cm WorldPV eIoni + 13 -1.89 m -1.25 m 5.36 m 25.1 keV 2.25 keV 3.54 mm 14.2 cm WorldPV eIoni + 14 -1.89 m -1.25 m 5.37 m 23.5 keV 565 eV 174 mum 14.2 cm WorldPV eIoni + 15 -1.89 m -1.25 m 5.37 m 22.1 keV 61.3 eV 247 mum 14.2 cm WorldPV eIoni + 16 -1.89 m -1.25 m 5.37 m 19.2 keV 2.88 keV 2.5 mm 14.5 cm WorldPV eIoni + 17 -1.89 m -1.25 m 5.37 m 16.5 keV 1.41 keV 1.31 mm 14.6 cm WorldPV eIoni + 18 -1.89 m -1.25 m 5.36 m 14.2 keV 2.36 keV 1.6 mm 14.8 cm WorldPV eIoni + 19 -1.89 m -1.25 m 5.37 m 12.1 keV 2.02 keV 1.28 mm 14.9 cm WorldPV eIoni + 20 -1.89 m -1.25 m 5.36 m 10.3 keV 1.84 keV 1.04 mm 15 cm WorldPV eIoni + 21 -1.89 m -1.25 m 5.36 m 8.79 keV 1.51 keV 850 mum 15.1 cm WorldPV eIoni + 22 -1.89 m -1.25 m 5.36 m 6.83 keV 1.96 keV 712 mum 15.2 cm WorldPV eIoni + 23 -1.89 m -1.25 m 5.36 m 5.2 keV 555 eV 248 mum 15.2 cm WorldPV eIoni + 24 -1.89 m -1.25 m 5.36 m 3.46 keV 1.74 keV 440 mum 15.2 cm WorldPV eIoni + 25 -1.89 m -1.25 m 5.36 m 542 eV 2.92 keV 318 mum 15.3 cm WorldPV eIoni + 26 -1.89 m -1.25 m 5.36 m 0 eV 542 eV 30.1 mum 15.3 cm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 444, Parent ID = 338 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.89 m -1.25 m 5.36 m 1.07 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.89 m -1.25 m 5.36 m 0 eV 1.07 keV 67.1 mum 67.1 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 443, Parent ID = 338 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.89 m -1.25 m 5.37 m 1.25 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.89 m -1.25 m 5.37 m 0 eV 1.25 keV 82.2 mum 82.2 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 442, Parent ID = 338 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.89 m -1.25 m 5.37 m 1.36 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.89 m -1.25 m 5.37 m 0 eV 1.36 keV 92.7 mum 92.7 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 441, Parent ID = 338 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.89 m -1.25 m 5.37 m 1.03 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.89 m -1.25 m 5.36 m 0 eV 1.03 keV 63.5 mum 63.5 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 440, Parent ID = 338 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.89 m -1.25 m 5.36 m 1.09 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.89 m -1.25 m 5.36 m 0 eV 1.09 keV 68 mum 68 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 439, Parent ID = 338 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.89 m -1.25 m 5.36 m 2.03 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.89 m -1.25 m 5.36 m 0 eV 2.03 keV 167 mum 167 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 438, Parent ID = 338 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.88 m -1.25 m 5.36 m 1.72 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.88 m -1.25 m 5.36 m 0 eV 1.72 keV 130 mum 130 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 437, Parent ID = 338 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.88 m -1.25 m 5.35 m 1.69 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.88 m -1.25 m 5.35 m 0 eV 1.69 keV 126 mum 126 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 436, Parent ID = 338 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.87 m -1.26 m 5.34 m 1.09 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.87 m -1.26 m 5.34 m 0 eV 1.09 keV 68.7 mum 68.7 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 435, Parent ID = 338 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.88 m -1.29 m 5.34 m 4.44 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.88 m -1.29 m 5.34 m 1.29 keV 3.15 keV 388 mum 388 mum WorldPV eIoni + 2 -1.88 m -1.29 m 5.34 m 0 eV 1.29 keV 85.7 mum 474 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 434, Parent ID = 338 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.87 m -1.3 m 5.31 m 1.06 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.87 m -1.3 m 5.31 m 0 eV 1.06 keV 66.4 mum 66.4 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 337, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.7 m -1.24 m 5.23 m 1.47 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.7 m -1.24 m 5.23 m 0 eV 1.47 keV 103 mum 103 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 336, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.69 m -1.24 m 5.23 m 1.29 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.69 m -1.24 m 5.23 m 0 eV 1.29 keV 86 mum 86 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 335, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.63 m -1.21 m 5.21 m 2.15 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.63 m -1.21 m 5.21 m 0 eV 2.15 keV 182 mum 182 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 334, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.59 m -1.18 m 5.2 m 2.66 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.59 m -1.18 m 5.2 m 63.8 eV 2.6 keV 246 mum 246 mum WorldPV eIoni + 2 -1.59 m -1.18 m 5.2 m 0 eV 63.8 eV 8.04 mum 254 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 333, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.56 m -1.16 m 5.19 m 3.3 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.56 m -1.16 m 5.19 m 1.72 keV 1.58 keV 305 mum 305 mum WorldPV eIoni + 2 -1.56 m -1.16 m 5.19 m 0 eV 1.72 keV 130 mum 435 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 332, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.55 m -1.15 m 5.18 m 3.12 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.55 m -1.15 m 5.18 m 0 eV 3.12 keV 290 mum 290 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 331, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.54 m -1.14 m 5.18 m 1.04 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.54 m -1.14 m 5.18 m 0 eV 1.04 keV 64.8 mum 64.8 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 330, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.53 m -1.14 m 5.18 m 4.09 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.53 m -1.14 m 5.18 m 1.43 keV 2.66 keV 364 mum 364 mum WorldPV eIoni + 2 -1.53 m -1.14 m 5.18 m 0 eV 1.43 keV 99.6 mum 463 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 329, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.53 m -1.13 m 5.17 m 11.9 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.53 m -1.14 m 5.17 m 8.41 keV 3.51 keV 1.02 mm 1.02 mm WorldPV eIoni + 2 -1.53 m -1.14 m 5.17 m 6.09 keV 989 eV 306 mum 1.32 mm WorldPV eIoni + 3 -1.53 m -1.14 m 5.18 m 3.19 keV 2.9 keV 501 mum 1.82 mm WorldPV eIoni + 4 -1.53 m -1.14 m 5.18 m 1.73 keV 1.47 keV 296 mum 2.12 mm WorldPV eIoni + 5 -1.53 m -1.14 m 5.18 m 0 eV 1.73 keV 131 mum 2.25 mm WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 445, Parent ID = 329 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.53 m -1.14 m 5.17 m 1.33 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.52 m -1.14 m 5.17 m 0 eV 1.33 keV 89.7 mum 89.7 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 328, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.43 m -1.08 m 5.13 m 2.08 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.43 m -1.08 m 5.13 m 0 eV 2.08 keV 173 mum 173 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 327, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.27 m -93.2 cm 5.07 m 4.9 keV 0 eV 0 fm 0 fm WorldPV initStep + 1 -1.27 m -93.2 cm 5.07 m 2.6 keV 2.3 keV 419 mum 419 mum WorldPV eIoni + 2 -1.27 m -93.2 cm 5.07 m 394 eV 2.21 keV 239 mum 658 mum WorldPV eIoni + 3 -1.27 m -93.2 cm 5.07 m 0 eV 394 eV 22.4 mum 681 mum WorldPV eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 326, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.17 m -86.3 cm 5 m 1.5 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -1.17 m -86.3 cm 5 m 0 eV 1.5 keV 106 mum 106 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 325, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.14 m -84.8 cm 4.99 m 2.14 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -1.14 m -84.9 cm 4.99 m 0 eV 2.14 keV 180 mum 180 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 324, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.14 m -84.7 cm 4.99 m 1.78 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -1.14 m -84.7 cm 4.99 m 0 eV 1.78 keV 137 mum 137 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 323, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.08 m -80.3 cm 4.95 m 2.22 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -1.08 m -80.3 cm 4.95 m 0 eV 2.22 keV 191 mum 191 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 322, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.03 m -77.3 cm 4.92 m 6.32 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -1.03 m -77.3 cm 4.92 m 4.44 keV 1.88 keV 517 mum 517 mum Tracker eIoni + 2 -1.03 m -77.3 cm 4.92 m 1.41 keV 3.03 keV 389 mum 906 mum Tracker eIoni + 3 -1.03 m -77.3 cm 4.92 m 0 eV 1.41 keV 98 mum 1 mm Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 321, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -95.7 cm -72.7 cm 4.88 m 2.85 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -95.7 cm -72.7 cm 4.88 m 534 eV 2.32 keV 265 mum 265 mum Tracker eIoni + 2 -95.7 cm -72.7 cm 4.88 m 0 eV 534 eV 29.6 mum 295 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 320, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -91.3 cm -69.2 cm 4.84 m 2.59 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -91.3 cm -69.2 cm 4.84 m 363 eV 2.22 keV 238 mum 238 mum Tracker eIoni + 2 -91.3 cm -69.2 cm 4.84 m 0 eV 363 eV 20.9 mum 259 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 319, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -86.6 cm -65.8 cm 4.81 m 1.47 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -86.6 cm -65.8 cm 4.81 m 0 eV 1.47 keV 103 mum 103 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 318, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -79.4 cm -61 cm 4.77 m 1.31 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -79.4 cm -61 cm 4.77 m 0 eV 1.31 keV 88.1 mum 88.1 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 317, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -76.3 cm -58.6 cm 4.75 m 5.8 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -76.3 cm -58.5 cm 4.75 m 4.38 keV 1.43 keV 480 mum 480 mum Tracker eIoni + 2 -76.3 cm -58.5 cm 4.75 m 1.56 keV 2.81 keV 384 mum 864 mum Tracker eIoni + 3 -76.3 cm -58.5 cm 4.75 m 0 eV 1.56 keV 113 mum 976 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 316, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -76.2 cm -58.5 cm 4.75 m 2.55 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -76.2 cm -58.5 cm 4.75 m 0 eV 2.55 keV 233 mum 233 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 315, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -61.6 cm -47.5 cm 4.67 m 9.13 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -61.6 cm -47.4 cm 4.67 m 7.76 keV 1.37 keV 742 mum 742 mum Tracker eIoni + 2 -61.5 cm -47.4 cm 4.67 m 4.27 keV 840 eV 276 mum 1.02 mm Tracker eIoni + 3 -61.5 cm -47.4 cm 4.67 m 1.3 keV 2.96 keV 377 mum 1.39 mm Tracker eIoni + 4 -61.5 cm -47.4 cm 4.67 m 0 eV 1.3 keV 87.3 mum 1.48 mm Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 446, Parent ID = 315 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -61.5 cm -47.4 cm 4.67 m 2.65 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -61.5 cm -47.4 cm 4.68 m 0 eV 2.65 keV 245 mum 245 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 314, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -48.3 cm -36.8 cm 4.61 m 1.35 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -48.3 cm -36.8 cm 4.61 m 0 eV 1.35 keV 91.6 mum 91.6 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 313, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -33.2 cm -15.6 cm 4.44 m 1.29 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -33.2 cm -15.6 cm 4.44 m 0 eV 1.29 keV 85.7 mum 85.7 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 312, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -30.9 cm -12.1 cm 4.41 m 1.11 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -30.9 cm -12.1 cm 4.41 m 0 eV 1.11 keV 69.9 mum 69.9 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 311, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -19.9 cm 6.5 cm 4.28 m 1.02 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -19.9 cm 6.5 cm 4.28 m 0 eV 1.02 keV 63.1 mum 63.1 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 310, Parent ID = 245 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -16 cm 13.1 cm 4.24 m 1.09 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -16 cm 13.1 cm 4.24 m 0 eV 1.09 keV 68.5 mum 68.5 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 233, Parent ID = 50 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.62 cm 976 mum 3.33 m 1.06 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.56 cm 890 mum 3.33 m 803 keV 256 keV 742 mum 742 mumtrkChamber eIoni + 2 -2.58 cm 790 mum 3.33 m 583 keV 220 keV 610 mum 1.35 mm trkChamber eIoni + 3 -2.56 cm 424 mum 3.33 m 397 keV 186 keV 494 mum 1.85 mm trkChamber eIoni + 4 -2.56 cm 720 mum 3.33 m 235 keV 162 keV 387 mum 2.23 mm trkChamber eIoni + 5 -2.56 cm 878 mum 3.33 m 62 keV 173 keV 259 mum 2.49 mm trkChamber eIoni + 6 -2.56 cm 889 mum 3.33 m 0 eV 62 keV 30.6 mum 2.52 mm trkChamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 232, Parent ID = 50 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.59 cm 727 mum 3.33 m 14.8 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.59 cm 728 mum 3.33 m 14.8 keV 14.8 keV 9.46 mum 9.46 mumtrkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 231, Parent ID = 50 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.56 cm 506 mum 3.33 m 240 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.71 cm 1.52 mm 3.34 m 167 keV 73 keV 1.42 cm 1.42 cm trkChamber compt + 2 -1.94 cm 2.28 cm 3.34 m 106 keV 60.3 keV 2.27 cm 3.69 cm trkChamber compt + 3 -2.12 cm 2.19 cm 3.34 m 87 keV 19.4 keV 2.03 mm 3.89 cm trkChamber compt + 4 -1.96 cm 2 cm 3.34 m 76.6 keV 10.3 keV 3.48 mm 4.24 cm trkChamber compt + 5 -2.3 cm 5.85 mm 3.34 m 64 keV 12.6 keV 1.51 cm 5.75 cm trkChamber compt + 6 -6.11 cm 2.7 cm 3.33 m 64 keV 64 keV 4.49 cm 10.2 cm trkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 230, Parent ID = 50 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.55 cm 452 mum 3.32 m 11.2 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.55 cm 461 mum 3.32 m 11.2 keV 11.2 keV 217 mum 217 mumtrkChamber phot ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 49, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -7.02 mum 2.86 m 4.53 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.48 cm 303 mum 2.86 m 1.62 keV 2.91 keV 1.55 mm 1.55 mm Tracker eIoni - 2 -2.48 cm 245 mum 2.86 m 973 eV 649 eV 1.05 mm 2.6 mm Tracker eIoni - 3 -2.48 cm 227 mum 2.86 m 0 eV 973 eV 873 mum 3.47 mm Tracker eIoni + 0 -2.5 cm 47.7 mum 3.3 m 2.71 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.42 cm -823 mum 3.31 m 2.19 MeV 525 keV 1.57 mm 1.57 mm trkChamber eIoni + 2 -2.41 cm -1.82 mm 3.31 m 1.76 MeV 430 keV 1.31 mm 2.88 mm trkChamber eIoni + 3 -2.31 cm -2.17 mm 3.31 m 1.39 MeV 369 keV 1.09 mm 3.97 mm trkChamber eIoni + 4 -2.29 cm -2.78 mm 3.31 m 1.1 MeV 285 keV 910 mum 4.88 mm trkChamber eIoni + 5 -2.23 cm -2.92 mm 3.31 m 862 keV 243 keV 765 mum 5.65 mm trkChamber eIoni + 6 -2.17 cm -3.04 mm 3.31 m 654 keV 208 keV 641 mum 6.29 mm trkChamber eIoni + 7 -2.18 cm -3.1 mm 3.31 m 486 keV 169 keV 532 mum 6.82 mm trkChamber eIoni + 8 -2.18 cm -3.35 mm 3.31 m 318 keV 168 keV 440 mum 7.26 mm trkChamber eIoni + 9 -2.2 cm -3.34 mm 3.31 m 173 keV 145 keV 334 mum 7.59 mm trkChamber eIoni + 10 -2.2 cm -3.3 mm 3.31 m 0 eV 173 keV 169 mum 7.76 mm trkChamber eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 48, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -8.92 mum 2.71 m 30.2 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.47 cm 1.29 mm 2.71 m 25.6 keV 2.37 keV 1.38 mm 1.38 mm Tracker eIoni - 2 -2.47 cm 1.34 mm 2.71 m 23.9 keV 146 eV 145 mum 1.52 mm Tracker eIoni - 3 -2.51 cm 2.3 mm 2.71 m 19.5 keV 2.44 keV 1.58 mm 3.1 mm Tracker eIoni - 4 -2.55 cm 246 mum 2.71 m 15 keV 4.41 keV 3.36 mm 6.46 mm Tracker eIoni - 5 -2.45 cm -343 mum 2.71 m 10.3 keV 4.78 keV 2.71 mm 9.18 mm Tracker eIoni - 6 -2.35 cm -825 mum 2.71 m 5.47 keV 4.79 keV 2.17 mm 1.14 cm Tracker eIoni - 7 -2.33 cm -432 mum 2.71 m 3.02 keV 507 eV 859 mum 1.22 cm Tracker eIoni - 8 -2.33 cm -507 mum 2.71 m 843 eV 2.18 keV 1.32 mm 1.35 cm Tracker eIoni - 9 -2.34 cm -508 mum 2.71 m 0 eV 843 eV 796 mum 1.43 cm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 90, Parent ID = 48 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.33 cm -432 mum 2.71 m 1.94 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.35 cm -593 mum 2.71 m 1.35 keV 588 eV 1.12 mm 1.12 mm Tracker eIoni - 2 -2.34 cm -466 mum 2.71 m 1.14 keV 209 eV 984 mum 2.1 mm Tracker eIoni - 3 -2.34 cm -528 mum 2.71 m 987 eV 156 eV 929 mum 3.03 mm Tracker eIoni - 4 -2.34 cm -512 mum 2.71 m 0 eV 987 eV 881 mum 3.91 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 89, Parent ID = 48 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.51 cm 2.3 mm 2.71 m 1.96 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.52 cm 2.43 mm 2.71 m 1.44 keV 529 eV 1.12 mm 1.12 mm Tracker eIoni - 2 -2.52 cm 2.28 mm 2.71 m 851 eV 585 eV 1.01 mm 2.13 mm Tracker eIoni - 3 -2.52 cm 2.26 mm 2.71 m 0 eV 851 eV 800 mum 2.93 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 88, Parent ID = 48 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.47 cm 1.34 mm 2.71 m 1.58 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.46 cm 1.23 mm 2.71 m 950 eV 630 eV 1.04 mm 1.04 mm Tracker eIoni - 2 -2.46 cm 1.21 mm 2.71 m 0 eV 950 eV 859 mum 1.9 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 87, Parent ID = 48 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.47 cm 1.29 mm 2.71 m 2.29 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.45 cm 1.21 mm 2.71 m 1.43 keV 860 eV 1.19 mm 1.19 mm Tracker eIoni - 2 -2.45 cm 1.21 mm 2.71 m 892 eV 540 eV 1 mm 2.19 mm Tracker eIoni - 3 -2.45 cm 1.2 mm 2.71 m 0 eV 892 eV 824 mum 3.02 mm Tracker eIoni + 0 -2.5 cm 45 mum 3.24 m 1.03 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.56 cm -233 mum 3.24 m 768 keV 261 keV 727 mum 727 mumtrkChamber eIoni + 2 -2.57 cm -354 mum 3.24 m 506 keV 262 keV 592 mum 1.32 mm trkChamber eIoni + 3 -2.59 cm -212 mum 3.24 m 314 keV 193 keV 451 mum 1.77 mm trkChamber eIoni + 4 -2.57 cm -30.3 mum 3.24 m 135 keV 179 keV 330 mum 2.1 mm trkChamber eIoni + 5 -2.57 cm 22.9 mum 3.24 m 0 eV 135 keV 113 mum 2.21 mm trkChamber eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 47, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -10.1 mum 2.61 m 1.22 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.54 cm -9.61 mum 2.61 m 927 keV 297 keV 826 mum 826 mumtrkChamber eIoni - 2 -2.58 cm 124 mum 2.61 m 668 keV 259 keV 674 mum 1.5 mm trkChamber eIoni - 3 -2.56 cm 384 mum 2.61 m 474 keV 194 keV 539 mum 2.04 mm trkChamber eIoni - 4 -2.57 cm 531 mum 2.61 m 313 keV 161 keV 433 mum 2.47 mm trkChamber eIoni - 5 -2.59 cm 536 mum 2.61 m 35.7 keV 277 keV 330 mum 2.8 mm trkChamber eIoni - 6 -2.59 cm 539 mum 2.61 m 0 eV 35.7 keV 14.8 mum 2.82 mm trkChamber eIoni + 0 -2.5 cm 44.7 mum 3.23 m 3.33 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.51 cm -700 mum 3.24 m 2.7 MeV 634 keV 1.87 mm 1.87 mm trkChamber eIoni + 2 -2.47 cm -2.14 mm 3.24 m 2.05 MeV 648 keV 1.56 mm 3.44 mm trkChamber eIoni + 3 -2.55 cm -1.35 mm 3.24 m 1.37 MeV 676 keV 1.24 mm 4.68 mm trkChamber eIoni + 4 -2.62 cm -1.8 mm 3.24 m 1.05 MeV 327 keV 902 mum 5.58 mm trkChamber eIoni + 5 -2.62 cm -2.45 mm 3.24 m 769 keV 277 keV 736 mum 6.31 mm trkChamber eIoni + 6 -2.65 cm -2.5 mm 3.24 m 599 keV 170 keV 592 mum 6.91 mm trkChamber eIoni + 7 -2.68 cm -2.39 mm 3.24 m 433 keV 166 keV 502 mum 7.41 mm trkChamber eIoni + 8 -2.71 cm -2.27 mm 3.24 m 224 keV 209 keV 409 mum 7.82 mm trkChamber eIoni + 9 -2.71 cm -2.31 mm 3.24 m 0 eV 224 keV 246 mum 8.06 mm trkChamber eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 46, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -10.3 mum 2.6 m 1.41 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.48 cm 431 mum 2.6 m 1.06 MeV 342 keV 918 mum 918 mumtrkChamber eIoni - 2 -2.46 cm 853 mum 2.6 m 784 keV 280 keV 744 mum 1.66 mm trkChamber eIoni - 3 -2.44 cm 1.22 mm 2.6 m 589 keV 195 keV 600 mum 2.26 mm trkChamber eIoni - 4 -2.4 cm 1.37 mm 2.6 m 371 keV 218 keV 497 mum 2.76 mm trkChamber eIoni - 5 -2.4 cm 1.6 mm 2.6 m 121 keV 251 keV 371 mum 3.13 mm trkChamber eIoni - 6 -2.4 cm 1.57 mm 2.6 m 0 eV 121 keV 96.9 mum 3.23 mm trkChamber eIoni + 0 -2.5 cm 41.5 mum 3.13 m 38.3 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.49 cm -535 mum 3.13 m 32.7 keV 138 eV 615 mum 615 mum Tracker eIoni + 2 -2.48 cm -638 mum 3.13 m 30.6 keV 27.4 eV 166 mum 781 mum Tracker eIoni + 3 -2.22 cm -3.62 mm 3.13 m 28.2 keV 2.41 keV 4.27 mm 5.05 mm Tracker eIoni + 4 -1.94 cm -5.96 mm 3.13 m 23 keV 5.15 keV 3.73 mm 8.78 mm Tracker eIoni + 5 -1.7 cm -4.91 mm 3.13 m 19.1 keV 3.96 keV 2.68 mm 1.15 cm Tracker eIoni + 6 -1.52 cm -4.63 mm 3.13 m 17.3 keV 1.78 keV 1.99 mm 1.34 cm Tracker eIoni + 7 -1.55 cm -5.53 mm 3.13 m 14.7 keV 2.62 keV 1.7 mm 1.51 cm Tracker eIoni + 8 -1.64 cm -6 mm 3.13 m 11.9 keV 2.71 keV 1.34 mm 1.65 cm Tracker eIoni + 9 -1.69 cm -6.39 mm 3.13 m 10.2 keV 1.74 keV 1.02 mm 1.75 cm Tracker eIoni + 10 -1.71 cm -6.48 mm 3.13 m 7.28 keV 631 eV 298 mum 1.78 cm Tracker eIoni + 11 -1.76 cm -6.55 mm 3.13 m 5.59 keV 1.69 keV 588 mum 1.84 cm Tracker eIoni + 12 -1.8 cm -6.44 mm 3.13 m 3.84 keV 1.75 keV 466 mum 1.89 cm Tracker eIoni + 13 -1.79 cm -6.75 mm 3.13 m 1.05 keV 2.79 keV 346 mum 1.92 cm Tracker eIoni + 14 -1.8 cm -6.75 mm 3.13 m 0 eV 1.05 keV 65.5 mum 1.93 cm Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 449, Parent ID = 46 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.71 cm -6.48 mm 3.13 m 2.29 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -1.72 cm -6.41 mm 3.13 m 0 eV 2.29 keV 200 mum 200 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 448, Parent ID = 46 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.48 cm -638 mum 3.13 m 2.04 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.47 cm -629 mum 3.13 m 0 eV 2.04 keV 168 mum 168 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 447, Parent ID = 46 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.49 cm -535 mum 3.13 m 5.53 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.48 cm -809 mum 3.13 m 2.97 keV 2.56 keV 462 mum 462 mum Tracker eIoni + 2 -2.49 cm -788 mum 3.13 m 910 eV 2.06 keV 276 mum 737 mum Tracker eIoni + 3 -2.49 cm -794 mum 3.13 m 0 eV 910 eV 54.3 mum 792 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 45, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -10.5 mum 2.59 m 1.42 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.45 cm 187 mum 2.59 m 861 keV 563 keV 927 mum 927 mumtrkChamber eIoni - 2 -2.44 cm 86.7 mum 2.59 m 615 keV 246 keV 640 mum 1.57 mm trkChamber eIoni - 3 -2.44 cm 90.8 mum 2.59 m 583 keV 3.84 keV 10.4 mum 1.58 mm trkChamber eBrem - 4 -2.41 cm 115 mum 2.59 m 403 keV 180 keV 494 mum 2.07 mm trkChamber eIoni - 5 -2.41 cm 255 mum 2.59 m 223 keV 180 keV 391 mum 2.46 mm trkChamber eIoni - 6 -2.42 cm 190 mum 2.59 m 58.6 keV 165 keV 246 mum 2.71 mm trkChamber eIoni - 7 -2.42 cm 187 mum 2.59 m 0 eV 58.6 keV 30.7 mum 2.74 mm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 91, Parent ID = 45 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.44 cm 90.8 mum 2.59 m 28.4 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.93 cm 7.32 mm 2.6 m 27.8 keV 638 eV 1.07 cm 1.07 cm trkChamber compt - 2 -3.02 cm 6.91 mm 2.6 m 27.8 keV 27.8 keV 6.1 mm 1.68 cm trkChamber phot + 0 -2.5 cm 40 mum 3.08 m 1.48 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.5 cm -1.3 mum 3.08 m 0 eV 1.48 keV 105 mum 105 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 44, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -10.8 mum 2.55 m 1.21 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.43 cm -17.3 mum 2.55 m 947 keV 261 keV 818 mum 818 mumtrkChamber eIoni - 2 -2.39 cm 102 mum 2.55 m 727 keV 221 keV 685 mum 1.5 mm trkChamber eIoni - 3 -2.35 cm 452 mum 2.55 m 531 keV 196 keV 570 mum 2.07 mm trkChamber eIoni - 4 -2.34 cm 222 mum 2.55 m 321 keV 210 keV 465 mum 2.54 mm trkChamber eIoni - 5 -2.34 cm 273 mum 2.55 m 135 keV 187 keV 336 mum 2.87 mm trkChamber eIoni - 6 -2.34 cm 311 mum 2.55 m 0 eV 135 keV 115 mum 2.99 mm trkChamber eIoni + 0 -2.5 cm 37.5 mum 3 m 3.5 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.51 cm -227 mum 3 m 1.5 keV 2 keV 321 mum 321 mum Tracker eIoni + 2 -2.5 cm -197 mum 3 m 0 eV 1.5 keV 106 mum 427 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 43, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -10.9 mum 2.52 m 6.97 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.52 cm -1.87 mm 2.53 m 5.68 MeV 1.28 MeV 3.66 mm 3.66 mm trkChamber eIoni - 2 -2.54 cm -2.09 mm 2.53 m 5.45 MeV 223 keV 572 mum 4.23 mm trkChamber eBrem - 3 -2.65 cm -2.52 mm 2.53 m 4.4 MeV 1.04 MeV 2.92 mm 7.15 mm trkChamber eIoni - 4 -2.59 cm -3.32 mm 2.53 m 3.45 MeV 950 keV 2.4 mm 9.56 mm trkChamber eIoni - 5 -2.59 cm -3.92 mm 2.54 m 2.77 MeV 681 keV 1.94 mm 1.15 cm trkChamber eIoni - 6 -2.61 cm -4.7 mm 2.54 m 2.23 MeV 547 keV 1.6 mm 1.31 cm trkChamber eIoni - 7 -2.69 cm -5.08 mm 2.54 m 1.73 MeV 499 keV 1.33 mm 1.44 cm trkChamber eIoni - 8 -2.72 cm -4.85 mm 2.54 m 1.35 MeV 381 keV 1.08 mm 1.55 cm trkChamber eIoni - 9 -2.73 cm -5.45 mm 2.54 m 1.05 MeV 293 keV 888 mum 1.64 cm trkChamber eIoni - 10 -2.73 cm -5.53 mm 2.54 m 914 keV 125 keV 309 mum 1.67 cm trkChamber eBrem - 11 -2.72 cm -5.46 mm 2.54 m 679 keV 235 keV 667 mum 1.74 cm trkChamber eIoni - 12 -2.71 cm -5.24 mm 2.54 m 473 keV 206 keV 545 mum 1.79 cm trkChamber eIoni - 13 -2.69 cm -5.28 mm 2.54 m 132 keV 342 keV 433 mum 1.83 cm trkChamber eIoni - 14 -2.68 cm -5.29 mm 2.54 m 0 eV 132 keV 111 mum 1.84 cm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 93, Parent ID = 43 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.73 cm -5.53 mm 2.54 m 14.3 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.75 cm -5.66 mm 2.54 m 14.3 keV 14.3 keV 334 mum 334 mumtrkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 92, Parent ID = 43 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.54 cm -2.09 mm 2.53 m 13.5 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.54 cm -2.1 mm 2.53 m 13.5 keV 13.5 keV 26.1 mum 26.1 mumtrkChamber phot + 0 -2.5 cm 35.9 mum 2.95 m 1.07 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.51 cm 79.2 mum 2.95 m 0 eV 1.07 keV 66.7 mum 66.7 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 42, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -10.8 mum 2.52 m 1.07 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.47 cm -102 mum 2.52 m 812 keV 258 keV 748 mum 748 mumtrkChamber eIoni - 2 -2.47 cm -553 mum 2.52 m 578 keV 198 keV 510 mum 1.26 mm trkChamber eBrem - 3 -2.44 cm -805 mum 2.52 m 391 keV 187 keV 491 mum 1.75 mm trkChamber eIoni - 4 -2.42 cm -873 mum 2.52 m 240 keV 151 keV 383 mum 2.13 mm trkChamber eIoni - 5 -2.43 cm -856 mum 2.52 m 48.5 keV 192 keV 265 mum 2.4 mm trkChamber eIoni - 6 -2.42 cm -856 mum 2.52 m 0 eV 48.5 keV 23 mum 2.42 mm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 94, Parent ID = 42 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.47 cm -553 mum 2.52 m 36.1 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.47 cm -516 mum 2.52 m 32.8 keV 3.29 keV 38.6 mum 38.6 mumtrkChamber compt - 2 -2.58 cm -4.58 mm 2.52 m 32.8 keV 32.8 keV 7.84 mm 7.88 mm trkChamber phot + 0 -2.5 cm 34.4 mum 2.9 m 2.76 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.52 cm 73 mum 2.9 m 1.3 keV 1.45 keV 255 mum 255 mum Tracker eIoni + 2 -2.53 cm 47.3 mum 2.9 m 0 eV 1.3 keV 87.2 mum 342 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 41, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -10.8 mum 2.51 m 1.61 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.48 cm -157 mum 2.51 m 1.06 MeV 545 keV 1.02 mm 1.02 mm trkChamber eIoni - 2 -2.49 cm -75.2 mum 2.51 m 700 keV 362 keV 743 mum 1.76 mm trkChamber eIoni - 3 -2.5 cm -298 mum 2.51 m 388 keV 312 keV 556 mum 2.32 mm trkChamber eIoni - 4 -2.48 cm -423 mum 2.51 m 228 keV 160 keV 382 mum 2.7 mm trkChamber eIoni - 5 -2.49 cm -517 mum 2.51 m 39.6 keV 188 keV 251 mum 2.95 mm trkChamber eIoni - 6 -2.49 cm -515 mum 2.51 m 0 eV 39.6 keV 17.2 mum 2.97 mm trkChamber eIoni + 0 -2.5 cm 29.6 mum 2.75 m 57.8 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.23 cm 1.19 cm 2.75 m 49.2 keV 8.54 keV 1.29 cm 1.29 cm Tracker eIoni + 2 -2.33 cm 1.17 cm 2.76 m 43.2 keV 6.03 keV 9.73 mm 2.26 cm Tracker eIoni + 3 -2.41 cm 1.09 cm 2.77 m 36.1 keV 7.09 keV 7.72 mm 3.03 cm Tracker eIoni + 4 -2.01 cm 1.28 cm 2.77 m 31.4 keV 4.74 keV 5.66 mm 3.6 cm Tracker eIoni + 5 -2.02 cm 1.08 cm 2.78 m 25.9 keV 3.87 keV 3.87 mm 3.99 cm Tracker eIoni + 6 -1.93 cm 1.1 cm 2.78 m 22.9 keV 1.47 keV 2.16 mm 4.2 cm Tracker eIoni + 7 -1.85 cm 8.95 mm 2.78 m 20.4 keV 2.49 keV 2.66 mm 4.47 cm Tracker eIoni + 8 -1.73 cm 8.61 mm 2.78 m 18.7 keV 1.69 keV 2.21 mm 4.69 cm Tracker eIoni + 9 -1.61 cm 7.51 mm 2.78 m 16.5 keV 2.25 keV 1.94 mm 4.88 cm Tracker eIoni + 10 -1.55 cm 7.46 mm 2.78 m 13.2 keV 3.33 keV 1.6 mm 5.04 cm Tracker eIoni + 11 -1.55 cm 7.38 mm 2.78 m 10.5 keV 549 eV 145 mum 5.06 cm Tracker eIoni + 12 -1.57 cm 7.04 mm 2.78 m 7.65 keV 2.81 keV 866 mum 5.14 cm Tracker eIoni + 13 -1.63 cm 6.77 mm 2.78 m 6.06 keV 1.59 keV 617 mum 5.2 cm Tracker eIoni + 14 -1.63 cm 6.29 mm 2.78 m 3.8 keV 2.26 keV 498 mum 5.25 cm Tracker eIoni + 15 -1.64 cm 6.32 mm 2.78 m 2.07 keV 1.73 keV 343 mum 5.29 cm Tracker eIoni + 16 -1.64 cm 6.34 mm 2.78 m 0 eV 2.07 keV 172 mum 5.31 cm Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 452, Parent ID = 41 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.55 cm 7.38 mm 2.78 m 2.17 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -1.54 cm 7.38 mm 2.78 m 0 eV 2.17 keV 184 mum 184 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 451, Parent ID = 41 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.93 cm 1.1 cm 2.78 m 1.49 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -1.93 cm 1.1 cm 2.78 m 0 eV 1.49 keV 105 mum 105 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 450, Parent ID = 41 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.02 cm 1.08 cm 2.78 m 1.61 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.01 cm 1.08 cm 2.78 m 0 eV 1.61 keV 118 mum 118 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 40, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -10.3 mum 2.42 m 3.4 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.49 cm 96.4 mum 2.42 m 1.97 keV 1.42 keV 430 mum 430 mum Tracker eIoni - 2 -2.51 cm 44.6 mum 2.42 m 1.21 keV 767 eV 1.13 mm 1.56 mm Tracker eIoni - 3 -2.5 cm 37.4 mum 2.42 m 1.03 keV 181 eV 946 mum 2.5 mm Tracker eIoni - 4 -2.52 cm -8.34 mum 2.42 m 813 eV 213 eV 896 mum 3.4 mm Tracker eIoni - 5 -2.52 cm -3.8 mum 2.42 m 0 eV 813 eV 778 mum 4.18 mm Tracker eIoni + 0 -2.5 cm 28.1 mum 2.7 m 1.75 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.51 cm -44.9 mum 2.7 m 0 eV 1.75 keV 134 mum 134 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 39, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -9.6 mum 2.34 m 2.78 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.51 cm -2.86 mum 2.34 m 474 eV 2.3 keV 1.28 mm 1.28 mm Tracker eIoni - 2 -2.51 cm 1.73 mum 2.34 m 0 eV 474 eV 571 mum 1.85 mm Tracker eIoni + 0 -2.5 cm 26.5 mum 2.65 m 1.54 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.51 cm -23.9 mum 2.65 m 0 eV 1.54 keV 110 mum 110 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 38, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -7.91 mum 2.14 m 2.4 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.5 cm 107 mum 2.14 m 1.5 keV 896 eV 1.21 mm 1.21 mm Tracker eIoni - 2 -2.51 cm 36.5 mum 2.14 m 866 eV 639 eV 1.02 mm 2.23 mm Tracker eIoni - 3 -2.51 cm 25.3 mum 2.14 m 0 eV 866 eV 809 mum 3.04 mm Tracker eIoni + 0 -2.5 cm 25.7 mum 2.63 m 1.35 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.51 cm -14 mum 2.63 m 0 eV 1.35 keV 91.8 mum 91.8 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 37, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -7.22 mum 2.06 m 1.87 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.51 cm 45.6 mum 2.06 m 530 eV 1.34 keV 1.11 mm 1.11 mm Tracker eIoni - 2 -2.51 cm 52.8 mum 2.06 m 0 eV 530 eV 606 mum 1.71 mm Tracker eIoni + 0 -2.5 cm 25.6 mum 2.62 m 2.71 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.5 cm 108 mum 2.62 m 2.44 MeV 102 keV 167 mum 167 mumtrkChamber eBrem + 2 -2.49 cm 1.09 mm 2.62 m 1.92 MeV 523 keV 1.43 mm 1.6 mm trkChamber eIoni + 3 -2.47 cm 1.78 mm 2.62 m 1.53 MeV 395 keV 1.18 mm 2.78 mm trkChamber eIoni + 4 -2.48 cm 2 mm 2.62 m 1.3 MeV 230 keV 308 mum 3.09 mm TrackerTransportation + 5 -2.57 cm 1.66 cm 2.64 m 1.29 MeV 3.61 keV 1.94 cm 2.25 cm Tracker eIoni + 6 -667 mum 17.1 cm 2.78 m 1.25 MeV 31.6 keV 21.1 cm 23.4 cm Tracker eIoni + 7 1.05 cm 19.7 cm 2.82 m 1.24 MeV 5.08 keV 4.69 cm 28 cm Tracker eIoni + 8 2.84 cm 24.8 cm 2.9 m 1.22 MeV 16 keV 10 cm 38.1 cm Tracker eIoni + 9 12.7 cm 38.6 cm 3.06 m 1.19 MeV 31.9 keV 23.3 cm 61.4 cm Tracker eIoni + 10 14.8 cm 47.6 cm 3.18 m 1.17 MeV 20.6 keV 15.6 cm 77 cm Tracker eIoni + 11 14.8 cm 48.2 cm 3.19 m 1.17 MeV 1.62 keV 1.15 cm 78.2 cm Tracker eIoni + 12 14.6 cm 50 cm 3.23 m 1.16 MeV 5.52 keV 3.71 cm 81.9 cm trkChamberTransportation + 13 14.6 cm 50 cm 3.23 m 1.09 MeV 28.1 keV 74.7 mum 81.9 cm trkChamber eBrem + 14 14.6 cm 50 cm 3.23 m 787 keV 306 keV 759 mum 82 cm trkChamber eIoni + 15 14.6 cm 50 cm 3.23 m 578 keV 209 keV 602 mum 82.1 cm trkChamber eIoni + 16 14.6 cm 50 cm 3.23 m 397 keV 181 keV 491 mum 82.1 cm trkChamber eIoni + 17 14.6 cm 50 cm 3.23 m 214 keV 182 keV 387 mum 82.1 cm trkChamber eIoni + 18 14.6 cm 49.9 cm 3.23 m 15.5 keV 199 keV 234 mum 82.2 cm trkChamber eIoni + 19 14.6 cm 49.9 cm 3.23 m 0 eV 15.5 keV 2.77 mum 82.2 cm trkChamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 461, Parent ID = 37 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 14.6 cm 50 cm 3.23 m 40.5 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 13.8 cm 51.4 cm 3.23 m 38.4 keV 2.16 keV 1.61 cm 1.61 cm trkChamber compt + 2 13.8 cm 51.4 cm 3.23 m 38.4 keV 38.4 keV 626 mum 1.67 cm trkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 460, Parent ID = 37 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 14.8 cm 48.2 cm 3.19 m 1.16 keV 0 eV 0 fm 0 fm Tracker initStep + 1 14.8 cm 48.2 cm 3.19 m 0 eV 1.16 keV 74.3 mum 74.3 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 459, Parent ID = 37 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 14.8 cm 47.6 cm 3.18 m 1.13 keV 0 eV 0 fm 0 fm Tracker initStep + 1 14.8 cm 47.6 cm 3.18 m 0 eV 1.13 keV 72 mum 72 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 458, Parent ID = 37 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 12.7 cm 38.6 cm 3.06 m 1.34 keV 0 eV 0 fm 0 fm Tracker initStep + 1 12.7 cm 38.6 cm 3.06 m 0 eV 1.34 keV 90.3 mum 90.3 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 457, Parent ID = 37 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 2.84 cm 24.8 cm 2.9 m 1.78 keV 0 eV 0 fm 0 fm Tracker initStep + 1 2.84 cm 24.9 cm 2.9 m 0 eV 1.78 keV 136 mum 136 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 456, Parent ID = 37 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 1.05 cm 19.7 cm 2.82 m 7.53 keV 0 eV 0 fm 0 fm Tracker initStep + 1 1.06 cm 19.6 cm 2.82 m 6.14 keV 1.4 keV 608 mum 608 mum Tracker eIoni + 2 1.1 cm 19.6 cm 2.82 m 4.62 keV 1.51 keV 504 mum 1.11 mm Tracker eIoni + 3 1.1 cm 19.6 cm 2.82 m 3.28 keV 1.34 keV 400 mum 1.51 mm Tracker eIoni + 4 1.09 cm 19.5 cm 2.82 m 74.1 eV 3.21 keV 303 mum 1.82 mm Tracker eIoni + 5 1.09 cm 19.5 cm 2.82 m 0 eV 74.1 eV 8.67 mum 1.82 mm Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 455, Parent ID = 37 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -667 mum 17.1 cm 2.78 m 1.17 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -671 mum 17.1 cm 2.78 m 0 eV 1.17 keV 75.8 mum 75.8 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 454, Parent ID = 37 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.57 cm 1.66 cm 2.64 m 4.09 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.6 cm 1.68 cm 2.64 m 1.17 keV 2.92 keV 364 mum 364 mum Tracker eIoni + 2 -2.6 cm 1.69 cm 2.64 m 0 eV 1.17 keV 75.1 mum 439 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 453, Parent ID = 37 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 108 mum 2.62 m 167 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.55 cm 1.52 mm 2.62 m 167 keV 0 eV 2.44 mm 2.44 mm TrackerTransportation + 2 -15.2 cm 43.8 cm 3.23 m 167 keV 0 eV 75.3 cm 75.5 cm trkChamberTransportation + 3 -15.5 cm 45 cm 3.24 m 167 keV 167 keV 1.94 cm 77.5 cm trkChamber phot ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 36, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -6.98 mum 2.03 m 4.1 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.54 cm 24.4 mum 2.03 m 2.63 keV 1.47 keV 1.49 mm 1.49 mm Tracker eIoni - 2 -2.55 cm 221 mum 2.03 m 1.78 keV 850 eV 1.25 mm 2.74 mm Tracker eIoni - 3 -2.54 cm 122 mum 2.03 m 1.64 keV 142 eV 1.08 mm 3.82 mm Tracker eIoni - 4 -2.55 cm 161 mum 2.03 m 644 eV 994 eV 1.05 mm 4.88 mm Tracker eIoni - 5 -2.55 cm 163 mum 2.03 m 0 eV 644 eV 676 mum 5.55 mm Tracker eIoni + 0 -2.5 cm 24.3 mum 2.58 m 1.66 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.5 cm 500 mum 2.59 m 1.28 MeV 387 keV 1.05 mm 1.05 mm trkChamber eIoni + 2 -2.48 cm 952 mum 2.59 m 972 keV 289 keV 788 mum 1.84 mm trkChamber eBrem + 3 -2.41 cm 929 mum 2.59 m 677 keV 295 keV 697 mum 2.53 mm trkChamber eIoni + 4 -2.37 cm 1.18 mm 2.59 m 367 keV 310 keV 544 mum 3.08 mm trkChamber eIoni + 5 -2.37 cm 1.48 mm 2.59 m 174 keV 192 keV 368 mum 3.45 mm trkChamber eIoni + 6 -2.37 cm 1.39 mm 2.59 m 0 eV 174 keV 172 mum 3.62 mm trkChamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 462, Parent ID = 36 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.48 cm 952 mum 2.59 m 16.9 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.45 cm 1.05 mm 2.59 m 16.9 keV 16.9 keV 345 mum 345 mumtrkChamber phot ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 35, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -6.62 mum 1.99 m 1.54 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.5 cm 9.97 mum 1.99 m 921 eV 615 eV 1.03 mm 1.03 mm Tracker eIoni - 2 -2.5 cm 19.4 mum 1.99 m 0 eV 921 eV 842 mum 1.87 mm Tracker eIoni + 0 -2.5 cm 24 mum 2.58 m 2.21 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.58 cm -331 mum 2.58 m 1.79 MeV 424 keV 1.32 mm 1.32 mm trkChamber eIoni + 2 -2.63 cm 349 mum 2.58 m 1.4 MeV 388 keV 1.11 mm 2.43 mm trkChamber eIoni + 3 -2.69 cm 868 mum 2.58 m 1.08 MeV 318 keV 916 mum 3.35 mm trkChamber eIoni + 4 -2.74 cm 456 mum 2.58 m 786 keV 296 keV 754 mum 4.1 mm trkChamber eIoni + 5 -2.76 cm 814 mum 2.58 m 585 keV 200 keV 601 mum 4.7 mm trkChamber eIoni + 6 -2.8 cm 1.04 mm 2.58 m 419 keV 166 keV 495 mum 5.2 mm trkChamber eIoni + 7 -2.77 cm 1.31 mm 2.58 m 266 keV 154 keV 401 mum 5.6 mm trkChamber eIoni + 8 -2.76 cm 1.22 mm 2.58 m 59.7 keV 206 keV 290 mum 5.89 mm trkChamber eIoni + 9 -2.76 cm 1.21 mm 2.58 m 0 eV 59.7 keV 28.7 mum 5.92 mm trkChamber eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 34, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -4.87 mum 1.79 m 2.96 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.44 cm -1.25 mm 1.8 m 1.86 MeV 1.11 MeV 1.69 mm 1.69 mm trkChamber eIoni - 2 -2.44 cm -1.24 mm 1.8 m 1.45 MeV 402 keV 1.14 mm 2.83 mm trkChamber eIoni - 3 -2.42 cm -530 mum 1.8 m 1.11 MeV 341 keV 942 mum 3.78 mm trkChamber eIoni - 4 -2.49 cm -437 mum 1.8 m 844 keV 269 keV 770 mum 4.55 mm trkChamber eIoni - 5 -2.45 cm 44.6 mum 1.8 m 616 keV 228 keV 631 mum 5.18 mm trkChamber eIoni - 6 -2.46 cm 18.6 mum 1.8 m 539 keV 14.7 keV 40.4 mum 5.22 mm trkChamber eBrem - 7 -2.48 cm 4.43 mum 1.8 m 379 keV 160 keV 470 mum 5.69 mm trkChamber eIoni - 8 -2.48 cm 68.5 mum 1.8 m 237 keV 142 keV 376 mum 6.06 mm trkChamber eIoni - 9 -2.48 cm 162 mum 1.8 m 35.3 keV 201 keV 262 mum 6.33 mm trkChamber eIoni - 10 -2.48 cm 161 mum 1.8 m 0 eV 35.3 keV 14.6 mum 6.34 mm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 95, Parent ID = 34 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.46 cm 18.6 mum 1.8 m 62 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.48 cm -2.28 cm 1.81 m 53.2 keV 8.81 keV 2.67 cm 2.67 cm trkChamber compt - 2 -2.79 cm -2.35 cm 1.8 m 53.2 keV 53.2 keV 7.06 mm 3.38 cm trkChamber phot + 0 -2.5 cm 21.6 mum 2.44 m 1.53 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.45 cm -250 mum 2.44 m 1.19 MeV 341 keV 979 mum 979 mumtrkChamber eIoni + 2 -2.42 cm 109 mum 2.44 m 921 keV 264 keV 807 mum 1.79 mm trkChamber eIoni + 3 -2.41 cm 204 mum 2.44 m 715 keV 206 keV 672 mum 2.46 mm trkChamber eIoni + 4 -2.42 cm 697 mum 2.44 m 501 keV 215 keV 564 mum 3.02 mm trkChamber eIoni + 5 -2.4 cm 692 mum 2.44 m 333 keV 168 keV 448 mum 3.47 mm trkChamber eIoni + 6 -2.4 cm 949 mum 2.44 m 95.9 keV 237 keV 344 mum 3.81 mm trkChamber eIoni + 7 -2.4 cm 943 mum 2.44 m 0 eV 95.9 keV 64.4 mum 3.88 mm trkChamber eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 33, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -4.85 mum 1.74 m 76.7 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.54 cm -328 mum 1.75 m 71.8 MeV 2.53 MeV 5.67 mm 5.67 mm trkChamber eBrem - 2 -2.59 cm -355 mum 1.75 m 69.5 MeV 1.64 MeV 4.17 mm 9.85 mm trkChamber eBrem - 3 -2.61 cm -403 mum 1.75 m 68.9 MeV 591 keV 1.81 mm 1.17 cm trkChamber eBrem - 4 -2.62 cm -418 mum 1.76 m 27.9 MeV 492 keV 1.31 mm 1.3 cm trkChamber eBrem - 5 -2.64 cm -861 mum 1.76 m 26.2 MeV 1.65 MeV 4.64 mm 1.76 cm trkChamber eBrem - 6 -2.79 cm -1.44 mm 1.77 m 21.3 MeV 4.49 MeV 1.01 cm 2.77 cm trkChamber eBrem - 7 -2.84 cm -2.01 mm 1.77 m 18.9 MeV 902 keV 2.39 mm 3.01 cm trkChamber eIoni - 8 -2.85 cm -2.1 mm 1.77 m 18.3 MeV 564 keV 799 mum 3.09 cm trkChamber eBrem - 9 -2.88 cm -2.22 mm 1.77 m 13.2 MeV 392 keV 1.21 mm 3.21 cm trkChamber eBrem - 10 -2.9 cm -2.29 mm 1.78 m 10.6 MeV 624 keV 1.74 mm 3.38 cm trkChamber eIoni - 11 -2.91 cm -2.26 mm 1.78 m 9.52 MeV 1.09 MeV 2.96 mm 3.68 cm trkChamber eBrem - 12 -2.91 cm -2.3 mm 1.78 m 6.5 MeV 79.2 keV 150 mum 3.7 cm trkChamber eIoni - 13 -2.92 cm -2.22 mm 1.78 m 5.76 MeV 629 keV 1.96 mm 3.89 cm trkChamber eBrem - 14 -2.75 cm 124 mum 1.78 m 4.49 MeV 1.27 MeV 3.07 mm 4.2 cm trkChamber eIoni - 15 -2.83 cm 2.02 mm 1.78 m 2.97 MeV 1.52 MeV 2.45 mm 4.44 cm trkChamber eIoni - 16 -2.72 cm 3.3 mm 1.78 m 2.23 MeV 741 keV 1.69 mm 4.61 cm trkChamber eIoni - 17 -2.63 cm 3.85 mm 1.78 m 1.47 MeV 757 keV 1.33 mm 4.75 cm trkChamber eIoni - 18 -2.59 cm 4.21 mm 1.78 m 1.16 MeV 229 keV 551 mum 4.8 cm trkChamber eBrem - 19 -2.54 cm 4.24 mm 1.78 m 811 keV 352 keV 795 mum 4.88 cm trkChamber eIoni - 20 -2.58 cm 3.8 mm 1.78 m 545 keV 266 keV 614 mum 4.94 cm trkChamber eIoni - 21 -2.6 cm 3.53 mm 1.78 m 358 keV 187 keV 473 mum 4.99 cm trkChamber eIoni - 22 -2.62 cm 3.32 mm 1.78 m 197 keV 161 keV 362 mum 5.03 cm trkChamber eIoni - 23 -2.62 cm 3.26 mm 1.78 m 326 eV 197 keV 210 mum 5.05 cm trkChamber eIoni - 24 -2.62 cm 3.26 mm 1.78 m 0 eV 326 eV 454 nm 5.05 cm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 109, Parent ID = 33 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.59 cm 4.21 mm 1.78 m 77.6 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -1.45 cm 1.72 cm 1.82 m 77.6 keV 77.6 keV 3.86 cm 3.86 cm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 108, Parent ID = 33 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.92 cm -2.22 mm 1.78 m 112 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.26 cm 9.77 mm 1.79 m 88.2 keV 23.7 keV 1.67 cm 1.67 cm trkChamber compt - 2 -1.07 cm 7.61 mm 1.78 m 65.7 keV 22.5 keV 1.73 cm 3.4 cm trkChamber compt - 3 -1.55 cm 9.12 mm 1.79 m 62.4 keV 3.38 keV 9.1 mm 4.31 cm trkChamber compt - 4 -2.37 mm 2.43 mm 1.82 m 60.5 keV 1.9 keV 4.12 cm 8.43 cm trkChamber compt - 5 -614 mum 1.4 mm 1.82 m 60.5 keV 0 eV 2.28 mm 8.66 cm TrackerTransportation - 6 1.02 m -59.5 cm 2.42 m 60.5 keV 0 eV 1.32 m 1.41 m trkChamberTransportation - 7 1.02 m -59.5 cm 2.43 m 51.1 keV 0 eV 2.8 mum 1.41 m trkChamber compt - 8 1.02 m -59.5 cm 2.42 m 51.1 keV 0 eV 4.24 mum 1.41 m TrackerTransportation - 9 1.06 m 2.5 m 1.45 m 51.1 keV 0 eV 3.24 m 4.65 m WorldPVTransportation - 10 1.09 m 4.5 m 82.3 cm 51.1 keV 0 eV 2.1 m 6.75 m OutOfWorldTransportation - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 110, Parent ID = 108 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 1.02 m -59.5 cm 2.43 m 9.39 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 1.02 m -59.5 cm 2.43 m 0 eV 9.39 keV 4.26 mum 4.26 mumtrkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 107, Parent ID = 33 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.91 cm -2.3 mm 1.78 m 2.94 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.03 cm -2.45 mm 1.78 m 2.36 MeV 578 keV 1.68 mm 1.68 mm trkChamber eIoni - 2 -3.05 cm -2.81 mm 1.78 m 2.06 MeV 210 keV 536 mum 2.21 mm trkChamber eBrem - 3 -3.06 cm -2.83 mm 1.78 m 1.53 MeV 82 keV 223 mum 2.44 mm trkChamber eBrem - 4 -3.06 cm -2.56 mm 1.78 m 1.19 MeV 341 keV 982 mum 3.42 mm trkChamber eIoni - 5 -3.05 cm -2.99 mm 1.78 m 948 keV 243 keV 810 mum 4.23 mm trkChamber eIoni - 6 -2.99 cm -2.77 mm 1.78 m 721 keV 227 keV 685 mum 4.91 mm trkChamber eIoni - 7 -2.99 cm -2.48 mm 1.78 m 528 keV 194 keV 567 mum 5.48 mm trkChamber eIoni - 8 -3 cm -2.19 mm 1.78 m 342 keV 186 keV 463 mum 5.94 mm trkChamber eIoni - 9 -2.99 cm -2.22 mm 1.78 m 165 keV 177 keV 351 mum 6.3 mm trkChamber eIoni - 10 -2.98 cm -2.25 mm 1.78 m 0 eV 165 keV 159 mum 6.45 mm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 112, Parent ID = 107 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.06 cm -2.83 mm 1.78 m 443 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.83 cm -8.95 mm 1.79 m 291 keV 152 keV 1.14 cm 1.14 cm trkChamber compt - 2 3.56 mm -2.13 cm 1.79 m 247 keV 43.7 keV 3.42 cm 4.56 cm trkChamber compt - 3 2.24 cm -5.39 cm 1.77 m 190 keV 56.7 keV 4.2 cm 8.76 cm trkChamber compt - 4 2.08 cm -5.46 cm 1.77 m 122 keV 68.2 keV 5.44 mm 9.31 cm trkChamber compt - 5 9.1 mm -5.7 cm 1.78 m 111 keV 11 keV 1.8 cm 11.1 cm trkChamber compt - 6 6.68 mm -5.07 cm 1.79 m 110 keV 1.59 keV 9.18 mm 12 cm trkChamber compt - 7 -3.52 cm 3.5 cm 1.82 m 110 keV 0 eV 10.3 cm 22.3 cm TrackerTransportation - 8 -1.24 m 2.5 m 2.93 m 110 keV 0 eV 2.96 m 3.18 m WorldPVTransportation - 9 -2.22 m 4.5 m 3.84 m 110 keV 0 eV 2.4 m 5.59 m OutOfWorldTransportation - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 111, Parent ID = 107 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -3.05 cm -2.81 mm 1.78 m 89.5 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.28 cm -5.69 mm 1.8 m 76.2 keV 13.3 keV 1.89 cm 1.89 cm trkChamber compt - 2 -2.18 cm -2.14 cm 1.8 m 61.5 keV 14.7 keV 1.92 cm 3.81 cm trkChamber compt - 3 -1.87 cm -9.86 mm 1.79 m 54.8 keV 6.69 keV 1.24 cm 5.05 cm trkChamber compt - 4 -6.18 mm -9.52 mm 1.81 m 54.8 keV 54.8 keV 1.85 cm 6.9 cm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 106, Parent ID = 33 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.91 cm -2.26 mm 1.78 m 25.8 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.91 cm -2.4 mm 1.78 m 25.8 keV 25.8 keV 520 mum 520 mumtrkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 105, Parent ID = 33 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.9 cm -2.29 mm 1.78 m 1.96 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.98 cm -2.86 mm 1.78 m 1.48 MeV 475 keV 1.19 mm 1.19 mm trkChamber eIoni - 2 -2.93 cm -3.62 mm 1.78 m 1.08 MeV 406 keV 956 mum 2.15 mm trkChamber eIoni - 3 -2.96 cm -4.25 mm 1.78 m 839 keV 237 keV 750 mum 2.9 mm trkChamber eIoni - 4 -2.94 cm -4.78 mm 1.78 m 638 keV 201 keV 628 mum 3.53 mm trkChamber eIoni - 5 -2.92 cm -5.08 mm 1.78 m 308 keV 330 keV 523 mum 4.05 mm trkChamber eIoni - 6 -2.9 cm -5.05 mm 1.78 m 156 keV 152 keV 326 mum 4.38 mm trkChamber eIoni - 7 -2.9 cm -5.1 mm 1.78 m 0 eV 156 keV 146 mum 4.52 mm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 104, Parent ID = 33 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.88 cm -2.22 mm 1.77 m 4.71 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.87 cm -1.04 cm 1.82 m 4.71 MeV 0 eV 5.27 cm 5.27 cm TrackerTransportation - 2 -15.6 cm -10.7 cm 2.42 m 4.71 MeV 0 eV 61.9 cm 67.2 cm trkChamberTransportation - 3 -16.4 cm -11.4 cm 2.47 m 335 keV 0 eV 4.3 cm 71.5 cm trkChamber compt - 4 -15 cm -11.3 cm 2.46 m 174 keV 161 keV 1.41 cm 72.9 cm trkChamber compt - 5 -16.2 cm -13 cm 2.45 m 116 keV 58.2 keV 2.35 cm 75.2 cm trkChamber compt - 6 -15.2 cm -13.3 cm 2.46 m 107 keV 8.3 keV 1.18 cm 76.4 cm trkChamber compt - 7 -15.1 cm -13.5 cm 2.46 m 81.5 keV 25.8 keV 2.71 mm 76.7 cm trkChamber compt - 8 -14.7 cm -13 cm 2.45 m 77.7 keV 3.74 keV 9.08 mm 77.6 cm trkChamber compt - 9 -14.8 cm -12.9 cm 2.45 m 70.8 keV 6.95 keV 2.88 mm 77.9 cm trkChamber compt - 10 -14.1 cm -11.9 cm 2.45 m 70.8 keV 70.8 keV 1.23 cm 79.1 cm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 113, Parent ID = 104 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -16.4 cm -11.4 cm 2.47 m 4.38 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -16.4 cm -11.4 cm 2.47 m 2.86 MeV 1.52 MeV 2.39 mm 2.39 mm trkChamber eIoni - 2 -16.4 cm -11.4 cm 2.47 m 2.1 MeV 502 keV 1.09 mm 3.48 mm trkChamber eBrem - 3 -16.5 cm -11.4 cm 2.47 m 1.57 MeV 536 keV 1.27 mm 4.75 mm trkChamber eIoni - 4 -16.5 cm -11.4 cm 2.47 m 1.21 MeV 359 keV 999 mum 5.75 mm trkChamber eIoni - 5 -16.4 cm -11.4 cm 2.47 m 930 keV 278 keV 818 mum 6.56 mm trkChamber eIoni - 6 -16.5 cm -11.4 cm 2.47 m 708 keV 222 keV 676 mum 7.24 mm trkChamber eIoni - 7 -16.5 cm -11.4 cm 2.47 m 517 keV 191 keV 560 mum 7.8 mm trkChamber eIoni - 8 -16.5 cm -11.4 cm 2.47 m 308 keV 208 keV 457 mum 8.26 mm trkChamber eIoni - 9 -16.5 cm -11.3 cm 2.47 m 144 keV 165 keV 327 mum 8.58 mm trkChamber eIoni - 10 -16.5 cm -11.3 cm 2.47 m 0 eV 144 keV 128 mum 8.71 mm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 114, Parent ID = 113 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -16.4 cm -11.4 cm 2.47 m 255 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -18 cm -10.5 cm 2.49 m 134 keV 121 keV 2.98 cm 2.98 cm trkChamber compt - 2 -17.2 cm -9.81 cm 2.47 m 134 keV 134 keV 2.36 cm 5.34 cm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 103, Parent ID = 33 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.85 cm -2.1 mm 1.77 m 21.2 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.88 cm -2.36 mm 1.78 m 21.2 keV 21.2 keV 2.67 mm 2.67 mm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 102, Parent ID = 33 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.84 cm -2.01 mm 1.77 m 1.51 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.79 cm -1.49 mm 1.77 m 1.17 MeV 340 keV 972 mum 972 mumtrkChamber eIoni - 2 -2.72 cm -1.64 mm 1.77 m 924 keV 248 keV 800 mum 1.77 mm trkChamber eIoni - 3 -2.68 cm -1.34 mm 1.77 m 715 keV 209 keV 672 mum 2.44 mm trkChamber eIoni - 4 -2.67 cm -1.42 mm 1.77 m 541 keV 174 keV 564 mum 3.01 mm trkChamber eIoni - 5 -2.66 cm -1.23 mm 1.77 m 360 keV 181 keV 471 mum 3.48 mm trkChamber eIoni - 6 -2.68 cm -1.02 mm 1.77 m 190 keV 170 keV 363 mum 3.84 mm trkChamber eIoni - 7 -2.67 cm -1.04 mm 1.77 m 0 eV 190 keV 200 mum 4.04 mm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 101, Parent ID = 33 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.79 cm -1.44 mm 1.77 m 351 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.4 cm -3.26 mm 1.8 m 153 keV 198 keV 3.57 cm 3.57 cm trkChamber compt - 2 -3.48 cm -2.48 mm 1.8 m 96.2 keV 56.7 keV 3.1 mm 3.88 cm trkChamber compt - 3 -3.42 cm -3.12 mm 1.8 m 91.5 keV 4.72 keV 1.57 mm 4.04 cm trkChamber compt - 4 -3.37 cm -3.03 mm 1.8 m 83.3 keV 8.23 keV 590 mum 4.1 cm trkChamber compt - 5 -3.35 cm -3.43 mm 1.8 m 64.5 keV 18.8 keV 520 mum 4.15 cm trkChamber compt - 6 -3.33 cm 1.41 cm 1.8 m 53.8 keV 10.7 keV 1.76 cm 5.9 cm trkChamber compt - 7 -4.43 cm -1.82 mm 1.82 m 53.8 keV 0 eV 2.92 cm 8.83 cm TrackerTransportation - 8 -12.7 cm -12.2 cm 1.99 m 46.1 keV 0 eV 22 cm 30.8 cm Tracker compt - 9 -27.7 cm 6.88 cm 1.82 m 46.1 keV 0 eV 29.3 cm 60.2 cm trkChamberTransportation - 10 -27.8 cm 6.95 cm 1.82 m 46.1 keV 46.1 keV 1.06 mm 60.3 cm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 115, Parent ID = 101 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -12.7 cm -12.2 cm 1.99 m 7.69 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -12.7 cm -12.2 cm 1.99 m 3.55 keV 4.14 keV 1.92 mm 1.92 mm Tracker eIoni - 2 -12.7 cm -12.2 cm 1.99 m 2.79 keV 760 eV 1.41 mm 3.33 mm Tracker eIoni - 3 -12.7 cm -12.2 cm 1.99 m 1.72 keV 1.06 keV 1.28 mm 4.61 mm Tracker eIoni - 4 -12.7 cm -12.2 cm 1.99 m 769 eV 956 eV 1.07 mm 5.68 mm Tracker eIoni - 5 -12.7 cm -12.2 cm 1.99 m 0 eV 769 eV 751 mum 6.43 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 100, Parent ID = 33 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.64 cm -861 mum 1.76 m 136 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.67 cm -2.57 mm 1.79 m 128 keV 8.82 keV 3.04 cm 3.04 cm trkChamber compt - 2 -2.9 cm 2.57 cm 1.82 m 128 keV 0 eV 4.5 cm 7.54 cm TrackerTransportation - 3 -6.88 cm 51 cm 2.42 m 128 keV 0 eV 77.2 cm 84.8 cm trkChamberTransportation - 4 -6.98 cm 52.2 cm 2.44 m 106 keV 21.8 keV 1.96 cm 86.7 cm trkChamber compt - 5 -7.12 cm 52.9 cm 2.44 m 97.2 keV 8.56 keV 8.07 mm 87.5 cm trkChamber compt - 6 -6.66 cm 53.4 cm 2.44 m 83.4 keV 13.9 keV 6.91 mm 88.2 cm trkChamber compt - 7 -6.92 cm 53.7 cm 2.42 m 83.4 keV 0 eV 1.11 cm 89.3 cm TrackerTransportation - 8 -21.6 cm 68.4 cm 1.82 m 83.4 keV 0 eV 63.5 cm 1.53 m trkChamberTransportation - 9 -21.7 cm 68.6 cm 1.82 m 76.4 keV 6.99 keV 7.64 mm 1.54 m trkChamber compt - 10 -21.6 cm 70 cm 1.81 m 76.4 keV 0 eV 1.44 cm 1.55 m TrackerTransportation - 11 1.1 cm 2.5 m 1.33 m 76.4 keV 0 eV 1.88 m 3.43 m WorldPVTransportation - 12 26.3 cm 4.5 m 78.8 cm 76.4 keV 0 eV 2.09 m 5.52 m OutOfWorldTransportation - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 99, Parent ID = 33 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.62 cm -418 mum 1.76 m 40.4 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.64 cm -461 mum 1.76 m 36.4 MeV 0 eV 2.31 mm 2.31 mm trkChamber compt - 2 -3.31 cm -5.3 mm 1.82 m 36.4 MeV 0 eV 6.81 cm 7.04 cm TrackerTransportation - 3 -9.29 cm -4.83 cm 2.42 m 36.4 MeV 0 eV 60.4 cm 67.5 cm trkChamberTransportation - 4 -9.94 cm -5.3 cm 2.49 m 0 eV 0 eV 6.6 cm 74.1 cm trkChamber conv - -********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 118, Parent ID = 99 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -9.94 cm -5.3 cm 2.49 m 16.4 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -10 cm -5.46 cm 2.5 m 13.5 MeV 2.98 MeV 8.41 mm 8.41 mm trkChamber eIoni - 2 -10.1 cm -5.27 cm 2.51 m 10.9 MeV 2.53 MeV 6.95 mm 1.54 cm trkChamber eIoni - 3 -10.3 cm -5.11 cm 2.51 m 4.54 MeV 1.25 MeV 3.51 mm 1.89 cm trkChamber eBrem - 4 -10.5 cm -5.07 cm 2.51 m 3.78 MeV 711 keV 1.99 mm 2.09 cm trkChamber eBrem - 5 -10.6 cm -4.93 cm 2.51 m 3.02 MeV 762 keV 2.15 mm 2.3 cm trkChamber eIoni - 6 -10.5 cm -4.97 cm 2.51 m 2.43 MeV 587 keV 1.76 mm 2.48 cm trkChamber eIoni - 7 -10.6 cm -4.99 cm 2.51 m 1.76 MeV 670 keV 1.46 mm 2.62 cm trkChamber eIoni - 8 -10.6 cm -4.94 cm 2.51 m 1.44 MeV 323 keV 1.11 mm 2.73 cm trkChamber eIoni - 9 -10.6 cm -4.93 cm 2.51 m 1.33 MeV 46.8 keV 144 mum 2.75 cm trkChamber eBrem - 10 -10.6 cm -4.96 cm 2.51 m 909 keV 421 keV 887 mum 2.84 cm trkChamber eIoni - 11 -10.6 cm -5.02 cm 2.51 m 658 keV 250 keV 666 mum 2.9 cm trkChamber eIoni - 12 -10.5 cm -5.02 cm 2.51 m 477 keV 181 keV 533 mum 2.96 cm trkChamber eIoni - 13 -10.5 cm -5.01 cm 2.51 m 306 keV 171 keV 433 mum 3 cm trkChamber eIoni - 14 -10.5 cm -5 cm 2.51 m 90.2 keV 216 keV 321 mum 3.03 cm trkChamber eIoni - 15 -10.5 cm -5 cm 2.51 m 0 eV 90.2 keV 56.9 mum 3.04 cm trkChamber eIoni - 16 -10.5 cm -5 cm 2.51 m 0 eV 0 eV 0 fm 3.04 cm trkChamber annihil - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 123, Parent ID = 118 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -10.5 cm -5 cm 2.51 m 511 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -11.6 cm -6.96 cm 2.45 m 240 keV 271 keV 6.99 cm 6.99 cm trkChamber compt - 2 -11.3 cm -6.73 cm 2.45 m 229 keV 10.5 keV 3.3 mm 7.32 cm trkChamber compt - 3 -8.43 cm -4.87 cm 2.42 m 229 keV 0 eV 4.12 cm 11.4 cm TrackerTransportation - 4 69.3 cm 44.7 cm 1.82 m 229 keV 0 eV 1.1 m 1.21 m trkChamberTransportation - 5 70 cm 45.2 cm 1.82 m 229 keV 0 eV 9.71 mm 1.22 m TrackerTransportation - 6 2.5 m 1.6 m 43.1 cm 229 keV 0 eV 2.55 m 3.77 m WorldPVTransportation - 7 4.5 m 2.88 m -1.11 m 229 keV 0 eV 2.83 m 6.6 m OutOfWorldTransportation - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 122, Parent ID = 118 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -10.5 cm -5 cm 2.51 m 511 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -9.91 cm -3.79 cm 2.56 m 434 keV 77.5 keV 4.31 cm 4.31 cm trkChamber compt - 2 -9.4 cm -3.84 cm 2.56 m 408 keV 25.8 keV 8.21 mm 5.14 cm trkChamber compt - 3 -8.8 cm -3.45 cm 2.57 m 249 keV 159 keV 1.5 cm 6.63 cm trkChamber compt - 4 -9.42 cm -3 cm 2.58 m 137 keV 112 keV 8.45 mm 7.48 cm trkChamber compt - 5 -2.59 cm -3.71 cm 2.59 m 89.5 keV 47.4 keV 7.05 cm 14.5 cm trkChamber compt - 6 -5.27 cm -3.61 cm 2.58 m 88.8 keV 748 eV 2.96 cm 17.5 cm trkChamber compt - 7 -12.3 cm -1.09 cm 2.56 m 67.8 keV 20.9 keV 7.81 cm 25.3 cm trkChamber compt - 8 -10.8 cm -1.06 cm 2.55 m 67.8 keV 67.8 keV 1.54 cm 26.8 cm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 121, Parent ID = 118 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -10.6 cm -4.93 cm 2.51 m 61.9 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -10.9 cm -4.02 cm 2.52 m 50.4 keV 11.5 keV 1.01 cm 1.01 cm trkChamber compt - 2 -11 cm -4.57 cm 2.51 m 44.6 keV 5.79 keV 6.23 mm 1.63 cm trkChamber compt - 3 -12.6 cm -4 cm 2.52 m 38.2 keV 6.41 keV 1.99 cm 3.62 cm trkChamber compt - 4 -11.7 cm -4.1 cm 2.52 m 34.2 keV 4.03 keV 9.93 mm 4.62 cm trkChamber compt - 5 -11.9 cm -4.14 cm 2.52 m 34.2 keV 34.2 keV 2.73 mm 4.89 cm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 120, Parent ID = 118 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -10.5 cm -5.07 cm 2.51 m 50.5 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -10.9 cm -4.83 cm 2.51 m 44.2 keV 6.31 keV 6.19 mm 6.19 mm trkChamber compt - 2 -10.8 cm -5.09 cm 2.51 m 43.6 keV 610 eV 2.65 mm 8.84 mm trkChamber compt - 3 -10.8 cm -5.1 cm 2.51 m 43.6 keV 43.6 keV 262 mum 9.1 mm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 119, Parent ID = 118 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -10.3 cm -5.11 cm 2.51 m 5.16 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -20.5 cm -2.04 mm 2.58 m 1.33 MeV 0 eV 13.5 cm 13.5 cm trkChamber compt - 2 -21.6 cm -8.3 mm 2.6 m 427 keV 900 keV 2.26 cm 15.7 cm trkChamber compt - 3 -21 cm -7.06 mm 2.6 m 270 keV 158 keV 8.74 mm 16.6 cm trkChamber compt - 4 -21.3 cm -2.08 mm 2.61 m 224 keV 45.7 keV 8.39 mm 17.4 cm trkChamber compt - 5 -21.5 cm -2.28 mm 2.61 m 171 keV 53.4 keV 2.26 mm 17.7 cm trkChamber compt - 6 -22.2 cm -2.09 cm 2.61 m 132 keV 38.1 keV 2 cm 19.7 cm trkChamber compt - 7 -21.5 cm -2.92 cm 2.62 m 132 keV 0 eV 1.99 cm 21.6 cm TrackerTransportation - 8 3.13 cm -32.7 cm 3.23 m 132 keV 0 eV 71.4 cm 93 cm trkChamberTransportation - 9 3.5 cm -33.2 cm 3.23 m 95.8 keV 36.6 keV 1.1 cm 94.1 cm trkChamber compt - 10 3.45 cm -33.3 cm 3.23 m 76.2 keV 19.6 keV 2.16 mm 94.3 cm trkChamber compt - 11 3.68 cm -32.5 cm 3.23 m 76.2 keV 76.2 keV 8.82 mm 95.2 cm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 124, Parent ID = 119 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -20.5 cm -2.04 mm 2.58 m 3.83 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -20.6 cm -918 mum 2.58 m 3.05 MeV 782 keV 2.12 mm 2.12 mm trkChamber eIoni - 2 -20.7 cm 307 mum 2.58 m 2.48 MeV 569 keV 1.73 mm 3.85 mm trkChamber eIoni - 3 -20.7 cm 999 mum 2.58 m 1.94 MeV 539 keV 1.45 mm 5.3 mm trkChamber eIoni - 4 -20.8 cm 1.72 mm 2.58 m 1.55 MeV 388 keV 1.18 mm 6.49 mm trkChamber eIoni - 5 -20.9 cm 1.82 mm 2.58 m 1.2 MeV 349 keV 991 mum 7.48 mm trkChamber eIoni - 6 -20.9 cm 1.75 mm 2.58 m 934 keV 267 keV 814 mum 8.29 mm trkChamber eIoni - 7 -21 cm 1.71 mm 2.58 m 727 keV 207 keV 678 mum 8.97 mm trkChamber eIoni - 8 -20.9 cm 1.83 mm 2.58 m 487 keV 239 keV 570 mum 9.54 mm trkChamber eIoni - 9 -20.9 cm 2 mm 2.58 m 268 keV 220 keV 441 mum 9.98 mm trkChamber eIoni - 10 -20.9 cm 2.02 mm 2.58 m 88.1 keV 180 keV 293 mum 1.03 cm trkChamber eIoni - 11 -20.9 cm 2.02 mm 2.58 m 0 eV 88.1 keV 58.5 mum 1.03 cm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 117, Parent ID = 99 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -9.94 cm -5.3 cm 2.49 m 19 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -9.94 cm -5.3 cm 2.49 m 18.8 MeV 7.72 keV 27.6 mum 27.6 mumtrkChamber eBrem - 2 -9.94 cm -5.32 cm 2.49 m 18 MeV 727 keV 1.73 mm 1.76 mm trkChamber eBrem - 3 -9.81 cm -5.41 cm 2.5 m 14.2 MeV 3.8 MeV 9.03 mm 1.08 cm trkChamber eIoni - 4 -9.61 cm -5.44 cm 2.51 m 11.1 MeV 2.32 MeV 5.29 mm 1.61 cm trkChamber eBrem - 5 -9.49 cm -5.43 cm 2.51 m 10.1 MeV 878 keV 2.5 mm 1.86 cm trkChamber eBrem - 6 -9.3 cm -5.27 cm 2.51 m 8.39 MeV 1.76 MeV 5.21 mm 2.38 cm trkChamber eIoni - 7 -9.06 cm -5.29 cm 2.52 m 6.86 MeV 1.53 MeV 4.36 mm 2.82 cm trkChamber eIoni - 8 -8.96 cm -5.43 cm 2.52 m 5.39 MeV 1.47 MeV 3.61 mm 3.18 cm trkChamber eIoni - 9 -8.98 cm -5.62 cm 2.52 m 4.36 MeV 1.03 MeV 2.89 mm 3.47 cm trkChamber eIoni - 10 -8.98 cm -5.64 cm 2.52 m 2.93 MeV 82.7 keV 278 mum 3.49 cm trkChamber eBrem - 11 -8.95 cm -5.8 cm 2.52 m 2.39 MeV 543 keV 1.68 mm 3.66 cm trkChamber eIoni - 12 -8.99 cm -5.89 cm 2.52 m 1.92 MeV 475 keV 1.41 mm 3.8 cm trkChamber eIoni - 13 -9.09 cm -5.94 cm 2.52 m 1.52 MeV 396 keV 1.17 mm 3.92 cm trkChamber eIoni - 14 -9.12 cm -5.95 cm 2.52 m 1.14 MeV 377 keV 976 mum 4.02 cm trkChamber eIoni - 15 -9.13 cm -5.99 cm 2.52 m 888 keV 256 keV 785 mum 4.1 cm trkChamber eIoni - 16 -9.14 cm -5.95 cm 2.52 m 675 keV 213 keV 654 mum 4.16 cm trkChamber eIoni - 17 -9.11 cm -5.98 cm 2.52 m 484 keV 167 keV 450 mum 4.21 cm trkChamber eBrem - 18 -9.11 cm -5.98 cm 2.53 m 313 keV 171 keV 439 mum 4.25 cm trkChamber eIoni - 19 -9.12 cm -5.97 cm 2.53 m 144 keV 169 keV 330 mum 4.28 cm trkChamber eIoni - 20 -9.13 cm -5.97 cm 2.53 m 0 eV 144 keV 129 mum 4.3 cm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 130, Parent ID = 117 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -9.11 cm -5.98 cm 2.52 m 24.5 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -9.17 cm -6.04 cm 2.53 m 24.5 keV 24.5 keV 950 mum 950 mumtrkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 129, Parent ID = 117 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -8.98 cm -5.64 cm 2.52 m 1.34 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -8.38 cm -9.89 cm 2.54 m 1.17 MeV 166 keV 4.86 cm 4.86 cm trkChamber compt - 2 -7.88 cm -10.9 cm 2.55 m 603 keV 571 keV 1.22 cm 6.07 cm trkChamber compt - 3 -7.28 cm -15 cm 2.52 m 476 keV 128 keV 4.95 cm 11 cm trkChamber compt - 4 -7.39 cm -15.2 cm 2.52 m 346 keV 129 keV 2.08 mm 11.2 cm trkChamber compt - 5 -11.3 cm -13.7 cm 2.45 m 259 keV 87.7 keV 8.34 cm 19.6 cm trkChamber compt - 6 -9.87 cm -13.4 cm 2.42 m 259 keV 0 eV 2.68 cm 22.2 cm TrackerTransportation - 7 12.8 cm -7.86 cm 2.07 m 199 keV 0 eV 42.6 cm 64.8 cm Tracker compt - 8 1.87 m 2.5 m 2.05 m 199 keV 0 eV 3.11 m 3.76 m WorldPVTransportation - 9 3.22 m 4.5 m 2.04 m 199 keV 0 eV 2.41 m 6.17 m OutOfWorldTransportation - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 131, Parent ID = 129 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 12.8 cm -7.86 cm 2.07 m 59.5 keV 0 eV 0 fm 0 fm Tracker initStep - 1 12.7 cm -8.2 cm 2.07 m 55.4 keV 2.48 keV 5 mm 5 mm Tracker eIoni - 2 12.8 cm -8.39 cm 2.06 m 48.9 keV 3.13 keV 6.12 mm 1.11 cm Tracker eIoni - 3 13.6 cm -8.01 cm 2.06 m 41.8 keV 7.11 keV 1.09 cm 2.2 cm Tracker eIoni - 4 13.7 cm -7.73 cm 2.05 m 35.9 keV 5.95 keV 8.59 mm 3.06 cm Tracker eIoni - 5 13.9 cm -7.61 cm 2.04 m 31.7 keV 4.19 keV 6.9 mm 3.75 cm Tracker eIoni - 6 13.9 cm -7.36 cm 2.04 m 27 keV 4.71 keV 5.84 mm 4.33 cm Tracker eIoni - 7 14 cm -7.24 cm 2.04 m 24 keV 1.09 keV 2.31 mm 4.56 cm Tracker eIoni - 8 14 cm -7.1 cm 2.04 m 21.8 keV 1.02 keV 1.88 mm 4.75 cm Tracker eIoni - 9 13.9 cm -6.9 cm 2.04 m 18.6 keV 3.19 keV 3.76 mm 5.13 cm Tracker eIoni - 10 13.9 cm -6.91 cm 2.04 m 17.1 keV 130 eV 209 mum 5.15 cm Tracker eIoni - 11 13.7 cm -7.06 cm 2.04 m 13.7 keV 3.46 keV 3 mm 5.45 cm Tracker eIoni - 12 13.7 cm -6.89 cm 2.04 m 10 keV 3.64 keV 2.54 mm 5.7 cm Tracker eIoni - 13 13.7 cm -6.9 cm 2.04 m 7.1 keV 1.86 keV 452 mum 5.75 cm Tracker eIoni - 14 13.6 cm -6.88 cm 2.04 m 4.06 keV 1.72 keV 1.05 mm 5.85 cm Tracker eIoni - 15 13.7 cm -6.87 cm 2.04 m 2.56 keV 1.5 keV 1.48 mm 6 cm Tracker eIoni - 16 13.7 cm -6.87 cm 2.04 m 731 eV 1.82 keV 1.24 mm 6.12 cm Tracker eIoni - 17 13.7 cm -6.87 cm 2.04 m 0 eV 731 eV 728 mum 6.2 cm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 138, Parent ID = 131 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 13.6 cm -6.88 cm 2.04 m 1.32 keV 0 eV 0 fm 0 fm Tracker initStep - 1 13.6 cm -6.87 cm 2.04 m 703 eV 620 eV 977 mum 977 mum Tracker eIoni - 2 13.6 cm -6.87 cm 2.04 m 0 eV 703 eV 712 mum 1.69 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 137, Parent ID = 131 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 13.7 cm -6.9 cm 2.04 m 1.06 keV 0 eV 0 fm 0 fm Tracker initStep - 1 13.6 cm -6.9 cm 2.04 m 476 eV 587 eV 906 mum 906 mum Tracker eIoni - 2 13.6 cm -6.9 cm 2.04 m 0 eV 476 eV 573 mum 1.48 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 136, Parent ID = 131 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 13.9 cm -6.91 cm 2.04 m 1.37 keV 0 eV 0 fm 0 fm Tracker initStep - 1 13.9 cm -6.9 cm 2.04 m 733 eV 633 eV 988 mum 988 mum Tracker eIoni - 2 13.9 cm -6.9 cm 2.04 m 0 eV 733 eV 730 mum 1.72 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 135, Parent ID = 131 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 14 cm -7.1 cm 2.04 m 1.13 keV 0 eV 0 fm 0 fm Tracker initStep - 1 14 cm -7.11 cm 2.04 m 593 eV 540 eV 926 mum 926 mum Tracker eIoni - 2 14 cm -7.11 cm 2.04 m 0 eV 593 eV 645 mum 1.57 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 134, Parent ID = 131 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 14 cm -7.24 cm 2.04 m 1.93 keV 0 eV 0 fm 0 fm Tracker initStep - 1 14 cm -7.22 cm 2.04 m 1.26 keV 668 eV 1.12 mm 1.12 mm Tracker eIoni - 2 14 cm -7.21 cm 2.04 m 810 eV 448 eV 960 mum 2.08 mm Tracker eIoni - 3 14 cm -7.21 cm 2.04 m 0 eV 810 eV 776 mum 2.85 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 133, Parent ID = 131 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 12.8 cm -8.39 cm 2.06 m 3.35 keV 0 eV 0 fm 0 fm Tracker initStep - 1 12.8 cm -8.38 cm 2.06 m 1.57 keV 545 eV 953 mum 953 mum Tracker eIoni - 2 12.8 cm -8.37 cm 2.06 m 907 eV 667 eV 1.04 mm 1.99 mm Tracker eIoni - 3 12.8 cm -8.37 cm 2.06 m 0 eV 907 eV 834 mum 2.83 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 139, Parent ID = 133 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 12.8 cm -8.38 cm 2.06 m 1.23 keV 0 eV 0 fm 0 fm Tracker initStep - 1 12.8 cm -8.39 cm 2.06 m 1.07 keV 160 eV 953 mum 953 mum Tracker eIoni - 2 12.8 cm -8.39 cm 2.06 m 880 eV 191 eV 909 mum 1.86 mm Tracker eIoni - 3 12.8 cm -8.38 cm 2.06 m 0 eV 880 eV 818 mum 2.68 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 132, Parent ID = 131 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 12.7 cm -8.2 cm 2.07 m 1.65 keV 0 eV 0 fm 0 fm Tracker initStep - 1 12.7 cm -8.2 cm 2.07 m 435 eV 1.22 keV 1.06 mm 1.06 mm Tracker eIoni - 2 12.7 cm -8.2 cm 2.07 m 0 eV 435 eV 546 mum 1.6 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 128, Parent ID = 117 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -9.49 cm -5.43 cm 2.51 m 110 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -9.33 cm -5.4 cm 2.51 m 81.7 keV 28.4 keV 2.95 mm 2.95 mm trkChamber compt - 2 -9.5 cm -4.82 cm 2.5 m 80 keV 1.69 keV 8.35 mm 1.13 cm trkChamber compt - 3 -10.1 cm -3.8 cm 2.5 m 73.8 keV 6.18 keV 1.23 cm 2.37 cm trkChamber compt - 4 -10.3 cm -3.45 cm 2.48 m 61.4 keV 12.5 keV 2.02 cm 4.39 cm trkChamber compt - 5 -6.27 cm -9.38 mm 2.5 m 61.3 keV 24.1 eV 5.23 cm 9.62 cm trkChamber compt - 6 -6.1 cm -8.21 mm 2.5 m 61.3 keV 61.3 keV 2.39 mm 9.86 cm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 127, Parent ID = 117 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -9.61 cm -5.44 cm 2.51 m 757 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -8.02 cm -4.66 cm 2.56 m 532 keV 225 keV 5.99 cm 5.99 cm trkChamber compt - 2 -7.18 cm -4.95 cm 2.57 m 227 keV 305 keV 1.08 cm 7.08 cm trkChamber compt - 3 -6.79 cm -4.94 cm 2.56 m 208 keV 19.1 keV 1.23 cm 8.3 cm trkChamber compt - 4 -5.63 cm -5.93 cm 2.54 m 139 keV 69 keV 2 cm 10.3 cm trkChamber compt - 5 -5.38 cm -5.69 cm 2.55 m 105 keV 33.3 keV 3.85 mm 10.7 cm trkChamber compt - 6 -4.99 cm -7.01 cm 2.55 m 92.6 keV 12.8 keV 1.55 cm 12.2 cm trkChamber compt - 7 -5.01 cm -7.19 cm 2.55 m 80 keV 12.6 keV 2.27 mm 12.5 cm trkChamber compt - 8 -8.08 cm -8.31 cm 2.56 m 76.9 keV 3.11 keV 3.43 cm 15.9 cm trkChamber compt - 9 -8.15 cm -8.45 cm 2.56 m 64.3 keV 12.6 keV 1.72 mm 16.1 cm trkChamber compt - 10 -9.65 cm -7.13 cm 2.56 m 64.3 keV 64.3 keV 2.02 cm 18.1 cm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 126, Parent ID = 117 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -9.94 cm -5.32 cm 2.49 m 26.9 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -9.92 cm -5.3 cm 2.49 m 26.9 keV 26.9 keV 2.31 mm 2.31 mm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 125, Parent ID = 117 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -9.94 cm -5.3 cm 2.49 m 185 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -10.2 cm -5.65 cm 2.52 m 149 keV 35.9 keV 3.35 cm 3.35 cm trkChamber compt - 2 -4.24 cm -10.3 cm 2.55 m 101 keV 48.6 keV 8.05 cm 11.4 cm trkChamber compt - 3 -6.38 cm -5.35 cm 2.57 m 94.5 keV 6.25 keV 5.78 cm 17.2 cm trkChamber compt - 4 -5.94 cm -3.8 cm 2.57 m 70.9 keV 23.6 keV 1.63 cm 18.8 cm trkChamber compt - 5 -6.38 cm -4.21 cm 2.57 m 70.9 keV 70.9 keV 6.95 mm 19.5 cm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 116, Parent ID = 99 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.64 cm -461 mum 1.76 m 3.99 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.72 cm 214 mum 1.76 m 3.19 MeV 791 keV 2.2 mm 2.2 mm trkChamber eIoni - 2 -2.74 cm 1.13 mm 1.76 m 1.33 MeV 619 keV 1.75 mm 3.95 mm trkChamber eIoni - 3 -2.82 cm 994 mum 1.76 m 1 MeV 328 keV 881 mum 4.83 mm trkChamber eIoni - 4 -2.77 cm 544 mum 1.76 m 710 keV 295 keV 714 mum 5.55 mm trkChamber eIoni - 5 -2.73 cm 589 mum 1.76 m 520 keV 190 keV 561 mum 6.11 mm trkChamber eIoni - 6 -2.7 cm 881 mum 1.76 m 311 keV 208 keV 459 mum 6.57 mm trkChamber eIoni - 7 -2.7 cm 1.04 mm 1.76 m 98.6 keV 213 keV 329 mum 6.9 mm trkChamber eIoni - 8 -2.7 cm 1.03 mm 1.76 m 0 eV 98.6 keV 70.1 mum 6.97 mm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 140, Parent ID = 116 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.74 cm 1.13 mm 1.76 m 1.24 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.81 cm 1.37 mm 1.76 m 786 keV 455 keV 835 mum 835 mumtrkChamber eIoni - 2 -2.85 cm 1.81 mm 1.76 m 577 keV 209 keV 601 mum 1.44 mm trkChamber eIoni - 3 -2.81 cm 1.85 mm 1.76 m 368 keV 209 keV 490 mum 1.93 mm trkChamber eIoni - 4 -2.78 cm 1.95 mm 1.76 m 219 keV 149 keV 369 mum 2.3 mm trkChamber eIoni - 5 -2.77 cm 1.87 mm 1.76 m 63.2 keV 156 keV 241 mum 2.54 mm trkChamber eIoni - 6 -2.77 cm 1.88 mm 1.76 m 0 eV 63.2 keV 34.6 mum 2.57 mm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 98, Parent ID = 33 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.61 cm -403 mum 1.75 m 12.5 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.61 cm -409 mum 1.75 m 12.5 keV 12.5 keV 195 mum 195 mumtrkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 97, Parent ID = 33 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.59 cm -355 mum 1.75 m 683 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.17 cm -3.68 mm 1.82 m 683 keV 0 eV 7.33 cm 7.33 cm TrackerTransportation - 2 -7.88 cm -3.1 cm 2.42 m 683 keV 0 eV 60.2 cm 67.6 cm trkChamberTransportation - 3 -8.18 cm -3.27 cm 2.46 m 609 keV 74.4 keV 3.8 cm 71.4 cm trkChamber compt - 4 -7.39 cm -2.14 cm 2.5 m 450 keV 158 keV 4.06 cm 75.4 cm trkChamber compt - 5 2.73 mm -7.99 mm 2.55 m 405 keV 45.9 keV 9.21 cm 84.6 cm trkChamber compt - 6 4.26 cm -2.58 mm 2.62 m 405 keV 0 eV 8.49 cm 93.1 cm TrackerTransportation - 7 36.3 cm 4.08 cm 3.23 m 405 keV 0 eV 68.2 cm 1.61 m trkChamberTransportation - 8 44.1 cm 5.13 cm 3.37 m 285 keV 120 keV 16.5 cm 1.78 m trkChamber compt - 9 43.5 cm 8.15 cm 3.39 m 226 keV 58.6 keV 3.69 cm 1.82 m trkChamber compt - 10 41.1 cm 8.37 cm 3.41 m 135 keV 90.9 keV 3.14 cm 1.85 m trkChamber compt - 11 42.1 cm 9.25 cm 3.41 m 94.1 keV 41.1 keV 1.36 cm 1.86 m trkChamber compt - 12 42.1 cm 3.29 cm 3.41 m 85.8 keV 8.28 keV 5.98 cm 1.92 m trkChamber compt - 13 42.4 cm 2.59 cm 3.42 m 70.4 keV 15.4 keV 1.27 cm 1.93 m trkChamber compt - 14 41.6 cm 6.08 mm 3.39 m 70.4 keV 70.4 keV 3.16 cm 1.96 m trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 96, Parent ID = 33 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.54 cm -328 mum 1.75 m 2.43 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.71 cm -1.1 mm 1.76 m 772 keV 0 eV 1.27 cm 1.27 cm trkChamber compt - 2 -8.82 mm 7.63 cm 1.82 m 266 keV 0 eV 10.2 cm 11.5 cm trkChamber compt - 3 -4.47 cm 8.39 cm 1.81 m 191 keV 74.3 keV 3.98 cm 15.4 cm trkChamber compt - 4 -5.47 cm 10.6 cm 1.82 m 161 keV 30.2 keV 2.9 cm 18.3 cm trkChamber compt - 5 -5.48 cm 10.6 cm 1.82 m 161 keV 0 eV 810 mum 18.4 cm TrackerTransportation - 6 -12.2 cm 5.47 cm 2.42 m 161 keV 0 eV 60.6 cm 79 cm trkChamberTransportation - 7 -12.3 cm 5.41 cm 2.43 m 153 keV 8.05 keV 7.03 mm 79.7 cm trkChamber compt - 8 -11.7 cm 2.15 cm 2.48 m 142 keV 10.9 keV 5.55 cm 85.3 cm trkChamber compt - 9 -11.1 cm 6.84 mm 2.48 m 119 keV 23 keV 1.6 cm 86.9 cm trkChamber compt - 10 -12.8 cm -9.07 mm 2.47 m 114 keV 5.28 keV 2.42 cm 89.3 cm trkChamber compt - 11 -13.8 cm -1.58 cm 2.48 m 106 keV 7.68 keV 1.28 cm 90.6 cm trkChamber compt - 12 -13.9 cm -1.79 cm 2.48 m 81.3 keV 24.9 keV 3.7 mm 90.9 cm trkChamber compt - 13 -13.6 cm 3.51 mm 2.48 m 81.3 keV 81.3 keV 2.19 cm 93.1 cm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 142, Parent ID = 96 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -8.82 mm 7.63 cm 1.82 m 506 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -8.63 mm 7.64 cm 1.82 m 386 keV 93.5 keV 283 mum 283 mumtrkChamber eBrem - 2 -8.6 mm 7.65 cm 1.82 m 227 keV 160 keV 381 mum 663 mumtrkChamber eIoni - 3 -8.57 mm 7.65 cm 1.82 m 38.2 keV 189 keV 250 mum 914 mumtrkChamber eIoni - 4 -8.58 mm 7.65 cm 1.82 m 0 eV 38.2 keV 16.3 mum 930 mumtrkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 143, Parent ID = 142 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -8.63 mm 7.64 cm 1.82 m 26.1 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -8.24 mm 7.63 cm 1.82 m 26.1 keV 26.1 keV 653 mum 653 mumtrkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 141, Parent ID = 96 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.71 cm -1.1 mm 1.76 m 1.66 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.76 cm -1.82 mm 1.76 m 740 keV 918 keV 1.04 mm 1.04 mm trkChamber eIoni - 2 -2.72 cm -2.16 mm 1.76 m 433 keV 306 keV 577 mum 1.62 mm trkChamber eIoni - 3 -2.75 cm -2.06 mm 1.76 m 272 keV 161 keV 409 mum 2.03 mm trkChamber eIoni - 4 -2.76 cm -1.96 mm 1.76 m 79.3 keV 193 keV 297 mum 2.33 mm trkChamber eIoni - 5 -2.76 cm -1.97 mm 1.76 m 0 eV 79.3 keV 49.3 mum 2.38 mm trkChamber eIoni + 0 -2.5 cm 19.1 mum 2.33 m 1.71 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.51 cm 16.7 mum 2.33 m 0 eV 1.71 keV 129 mum 129 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 32, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -4.62 mum 1.72 m 1.54 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.54 cm 497 mum 1.72 m 1.2 MeV 333 keV 984 mum 984 mumtrkChamber eIoni - 2 -2.59 cm 481 mum 1.72 m 950 keV 254 keV 816 mum 1.8 mm trkChamber eIoni - 3 -2.62 cm 641 mum 1.72 m 740 keV 210 keV 686 mum 2.49 mm trkChamber eIoni - 4 -2.6 cm 248 mum 1.72 m 543 keV 197 keV 577 mum 3.06 mm trkChamber eIoni - 5 -2.62 cm 342 mum 1.72 m 347 keV 196 keV 472 mum 3.53 mm trkChamber eIoni - 6 -2.61 cm 376 mum 1.72 m 203 keV 144 keV 354 mum 3.89 mm trkChamber eIoni - 7 -2.61 cm 334 mum 1.72 m 1.36 keV 202 keV 220 mum 4.11 mm trkChamber eIoni - 8 -2.61 cm 334 mum 1.72 m 0 eV 1.36 keV 1.62 mum 4.11 mm trkChamber eIoni + 0 -2.5 cm 16.7 mum 2.23 m 1.61 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.5 cm -66.4 mum 2.23 m 0 eV 1.61 keV 118 mum 118 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 31, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -4.47 mum 1.68 m 1.84 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.5 cm -272 mum 1.68 m 1.45 MeV 387 keV 1.13 mm 1.13 mm trkChamber eIoni - 2 -2.44 cm -780 mum 1.68 m 1.12 MeV 327 keV 939 mum 2.07 mm trkChamber eIoni - 3 -2.4 cm -1.05 mm 1.68 m 807 keV 315 keV 774 mum 2.85 mm trkChamber eIoni - 4 -2.44 cm -854 mum 1.68 m 569 keV 238 keV 612 mum 3.46 mm trkChamber eIoni - 5 -2.44 cm -908 mum 1.68 m 403 keV 166 keV 486 mum 3.94 mm trkChamber eIoni - 6 -2.45 cm -1.08 mm 1.68 m 184 keV 219 keV 391 mum 4.33 mm trkChamber eIoni - 7 -2.45 cm -1.02 mm 1.68 m 0 eV 184 keV 189 mum 4.52 mm trkChamber eIoni + 0 -2.5 cm 12.7 mum 2.06 m 3.51 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.49 cm 267 mum 2.06 m 1.63 keV 1.88 keV 322 mum 322 mum Tracker eIoni + 2 -2.49 cm 303 mum 2.06 m 0 eV 1.63 keV 120 mum 443 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 30, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -4.54 mum 1.65 m 1.3 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.48 cm 559 mum 1.66 m 896 keV 405 keV 865 mum 865 mumtrkChamber eIoni - 2 -2.43 cm 216 mum 1.65 m 647 keV 249 keV 658 mum 1.52 mm trkChamber eIoni - 3 -2.39 cm 223 mum 1.65 m 468 keV 179 keV 528 mum 2.05 mm trkChamber eIoni - 4 -2.36 cm 123 mum 1.66 m 306 keV 161 keV 430 mum 2.48 mm trkChamber eIoni - 5 -2.36 cm 231 mum 1.65 m 162 keV 144 keV 325 mum 2.81 mm trkChamber eIoni - 6 -2.36 cm 278 mum 1.65 m 0 eV 162 keV 155 mum 2.96 mm trkChamber eIoni + 0 -2.5 cm 12.7 mum 2.06 m 24.6 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.74 cm -1 mm 2.06 m 21.2 keV 3.37 keV 2.97 mm 2.97 mm Tracker eIoni + 2 -2.84 cm 904 mum 2.06 m 17.5 keV 3.7 keV 2.34 mm 5.31 mm Tracker eIoni + 3 -2.98 cm 1.56 mm 2.06 m 14.5 keV 3.05 keV 1.74 mm 7.06 mm Tracker eIoni + 4 -3.05 cm 2.39 mm 2.06 m 12.9 keV 1.58 keV 1.32 mm 8.38 mm Tracker eIoni + 5 -3.12 cm 2.41 mm 2.06 m 11.4 keV 1.56 keV 1.13 mm 9.51 mm Tracker eIoni + 6 -3.15 cm 2.2 mm 2.06 m 8.43 keV 1.27 keV 410 mum 9.92 mm Tracker eIoni + 7 -3.16 cm 2.22 mm 2.06 m 6.83 keV 580 eV 152 mum 1.01 cm Tracker eIoni + 8 -3.18 cm 2.23 mm 2.06 m 4.51 keV 2.33 keV 553 mum 1.06 cm Tracker eIoni + 9 -3.2 cm 2.19 mm 2.06 m 1.65 keV 2.86 keV 393 mum 1.1 cm Tracker eIoni + 10 -3.19 cm 2.15 mm 2.06 m 0 eV 1.65 keV 122 mum 1.11 cm Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 464, Parent ID = 30 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.16 cm 2.22 mm 2.06 m 1.01 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -3.16 cm 2.26 mm 2.06 m 0 eV 1.01 keV 62.4 mum 62.4 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 463, Parent ID = 30 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.15 cm 2.2 mm 2.06 m 1.66 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -3.15 cm 2.12 mm 2.06 m 0 eV 1.66 keV 123 mum 123 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 29, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -4.25 mum 1.63 m 1.12 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.52 cm -297 mum 1.63 m 843 keV 273 keV 771 mum 771 mumtrkChamber eIoni - 2 -2.57 cm -30.5 mum 1.63 m 666 keV 177 keV 631 mum 1.4 mm trkChamber eIoni - 3 -2.58 cm 219 mum 1.63 m 18.8 keV 647 keV 538 mum 1.94 mm trkChamber eIoni - 4 -2.58 cm 220 mum 1.63 m 0 eV 18.8 keV 6.94 mum 1.95 mm trkChamber eIoni + 0 -2.5 cm 9.98 mum 1.94 m 1.21 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.5 cm 9.65 mum 1.94 m 0 eV 1.21 keV 79.4 mum 79.4 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 28, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -4.22 mum 1.63 m 1.15 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.46 cm 333 mum 1.63 m 877 keV 269 keV 786 mum 786 mumtrkChamber eIoni - 2 -2.48 cm 868 mum 1.63 m 650 keV 227 keV 648 mum 1.43 mm trkChamber eIoni - 3 -2.44 cm 935 mum 1.63 m 457 keV 192 keV 529 mum 1.96 mm trkChamber eIoni - 4 -2.42 cm 941 mum 1.63 m 268 keV 189 keV 423 mum 2.39 mm trkChamber eIoni - 5 -2.41 cm 931 mum 1.63 m 27.7 keV 240 keV 293 mum 2.68 mm trkChamber eIoni - 6 -2.41 cm 931 mum 1.63 m 0 eV 27.7 keV 10.6 mum 2.69 mm trkChamber eIoni + 0 -2.5 cm 6.28 mum 1.79 m 1.29 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.44 cm 317 mum 1.79 m 979 keV 306 keV 857 mum 857 mumtrkChamber eIoni + 2 -2.37 cm 356 mum 1.79 m 769 keV 210 keV 701 mum 1.56 mm trkChamber eIoni + 3 -2.35 cm 855 mum 1.79 m 601 keV 168 keV 592 mum 2.15 mm trkChamber eIoni + 4 -2.31 cm 1.11 mm 1.79 m 407 keV 194 keV 503 mum 2.65 mm trkChamber eIoni + 5 -2.34 cm 877 mum 1.79 m 229 keV 177 keV 393 mum 3.05 mm trkChamber eIoni + 6 -2.33 cm 797 mum 1.79 m 92.9 keV 136 keV 252 mum 3.3 mm trkChamber eIoni + 7 -2.32 cm 810 mum 1.79 m 0 eV 92.9 keV 60.9 mum 3.36 mm trkChamber eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 27, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -3.94 mum 1.59 m 3.53 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.5 cm 80.5 mum 1.59 m 1.64 keV 780 eV 109 mum 109 mum Tracker eIoni - 2 -2.49 cm 209 mum 1.59 m 742 eV 902 eV 1.05 mm 1.16 mm Tracker eIoni - 3 -2.49 cm 205 mum 1.59 m 0 eV 742 eV 735 mum 1.9 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 144, Parent ID = 27 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm 80.5 mum 1.59 m 1.11 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.49 cm 157 mum 1.59 m 814 eV 292 eV 918 mum 918 mum Tracker eIoni - 2 -2.49 cm 163 mum 1.59 m 0 eV 814 eV 778 mum 1.7 mm Tracker eIoni + 0 -2.5 cm 6.23 mum 1.79 m 1.21 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.57 cm -91.1 mum 1.79 m 957 keV 255 keV 820 mum 820 mumtrkChamber eIoni + 2 -2.62 cm -260 mum 1.79 m 715 keV 242 keV 690 mum 1.51 mm trkChamber eIoni + 3 -2.65 cm -572 mum 1.79 m 536 keV 179 keV 564 mum 2.07 mm trkChamber eIoni + 4 -2.66 cm -946 mum 1.79 m 331 keV 205 keV 468 mum 2.54 mm trkChamber eIoni + 5 -2.65 cm -1.07 mm 1.79 m 182 keV 149 keV 343 mum 2.89 mm trkChamber eIoni + 6 -2.65 cm -1.15 mm 1.79 m 0 eV 182 keV 184 mum 3.07 mm trkChamber eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 26, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -2.54 mum 1.39 m 5.09 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.46 cm 423 mum 1.39 m 2.75 keV 1.09 keV 1.31 mm 1.31 mm Tracker eIoni - 2 -2.43 cm 507 mum 1.39 m 1.44 keV 305 eV 597 mum 1.91 mm Tracker eIoni - 3 -2.43 cm 418 mum 1.39 m 803 eV 636 eV 1.01 mm 2.91 mm Tracker eIoni - 4 -2.43 cm 409 mum 1.39 m 0 eV 803 eV 772 mum 3.68 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 146, Parent ID = 26 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.43 cm 507 mum 1.39 m 1 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.42 cm 423 mum 1.39 m 692 eV 310 eV 889 mum 889 mum Tracker eIoni - 2 -2.42 cm 432 mum 1.39 m 0 eV 692 eV 705 mum 1.59 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 145, Parent ID = 26 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.46 cm 423 mum 1.39 m 1.25 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.45 cm 399 mum 1.39 m 927 eV 326 eV 959 mum 959 mum Tracker eIoni - 2 -2.44 cm 391 mum 1.39 m 0 eV 927 eV 846 mum 1.8 mm Tracker eIoni + 0 -2.5 cm 5.47 mum 1.75 m 1.44 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.49 cm -471 mum 1.75 m 1.09 MeV 350 keV 934 mum 934 mumtrkChamber eIoni + 2 -2.53 cm -1.01 mm 1.75 m 677 keV 409 keV 756 mum 1.69 mm trkChamber eIoni + 3 -2.51 cm -1.41 mm 1.75 m 443 keV 234 keV 544 mum 2.23 mm trkChamber eIoni + 4 -2.48 cm -1.51 mm 1.75 m 292 keV 151 keV 415 mum 2.65 mm trkChamber eIoni + 5 -2.48 cm -1.29 mm 1.75 m 111 keV 180 keV 313 mum 2.96 mm trkChamber eIoni + 6 -2.48 cm -1.3 mm 1.75 m 0 eV 111 keV 82.3 mum 3.04 mm trkChamber eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 25, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -2.47 mum 1.38 m 4.77 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.5 cm -358 mum 1.38 m 2.25 keV 1.2 keV 1.4 mm 1.4 mm Tracker eIoni - 2 -2.48 cm -524 mum 1.38 m 1.39 keV 861 eV 1.18 mm 2.58 mm Tracker eIoni - 3 -2.49 cm -346 mum 1.38 m 1.27 keV 118 eV 993 mum 3.57 mm Tracker eIoni - 4 -2.5 cm -340 mum 1.38 m 1.05 keV 220 eV 962 mum 4.53 mm Tracker eIoni - 5 -2.5 cm -391 mum 1.38 m 546 eV 502 eV 902 mum 5.44 mm Tracker eIoni - 6 -2.5 cm -383 mum 1.38 m 0 eV 546 eV 617 mum 6.05 mm Tracker eIoni + 0 -2.5 cm 5.21 mum 1.74 m 9.78 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.63 cm -636 mum 1.74 m 8.67 MeV 1.09 MeV 3.14 mm 3.14 mm trkChamber eBrem + 2 -2.64 cm -229 mum 1.74 m 7 MeV 1.67 MeV 4.5 mm 7.64 mm trkChamber eIoni + 3 -2.79 cm -834 mum 1.75 m 5.61 MeV 1.39 MeV 3.68 mm 1.13 cm trkChamber eIoni + 4 -2.79 cm 103 mum 1.75 m 4.42 MeV 1.19 MeV 3 mm 1.43 cm trkChamber eIoni + 5 -2.81 cm 1.58 mm 1.75 m 3.6 MeV 827 keV 2.41 mm 1.67 cm trkChamber eIoni + 6 -2.91 cm 1.97 mm 1.75 m 2.9 MeV 700 keV 2.01 mm 1.87 cm trkChamber eIoni + 7 -2.91 cm 1.7 mm 1.75 m 1.99 MeV 912 keV 1.66 mm 2.04 cm trkChamber eIoni + 8 -2.91 cm 700 mum 1.75 m 1.5 MeV 487 keV 1.21 mm 2.16 cm trkChamber eIoni + 9 -2.92 cm 478 mum 1.75 m 1.35 MeV 86.2 keV 297 mum 2.19 cm trkChamber eBrem + 10 -2.94 cm -274 mum 1.75 m 1.03 MeV 320 keV 891 mum 2.28 cm trkChamber eIoni + 11 -2.96 cm -851 mum 1.76 m 802 keV 228 keV 728 mum 2.35 cm trkChamber eIoni + 12 -2.97 cm -1.38 mm 1.76 m 563 keV 239 keV 610 mum 2.41 cm trkChamber eIoni + 13 -2.99 cm -1.69 mm 1.76 m 386 keV 177 keV 483 mum 2.46 cm trkChamber eIoni + 14 -3 cm -1.71 mm 1.76 m 187 keV 199 keV 380 mum 2.5 cm trkChamber eIoni + 15 -3.01 cm -1.61 mm 1.76 m 0 eV 187 keV 193 mum 2.52 cm trkChamber eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 147, Parent ID = 25 +* G4Track Information: Particle = gamma, Track ID = 466, Parent ID = 25 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -358 mum 1.38 m 1.32 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.51 cm -421 mum 1.38 m 1.06 keV 266 eV 977 mum 977 mum Tracker eIoni - 2 -2.5 cm -496 mum 1.38 m 909 eV 149 eV 905 mum 1.88 mm Tracker eIoni - 3 -2.5 cm -502 mum 1.38 m 0 eV 909 eV 835 mum 2.72 mm Tracker eIoni + 0 -2.92 cm 478 mum 1.75 m 61 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.01 cm 6.42 mm 1.74 m 54.9 keV 6.15 keV 1.55 cm 1.55 cm trkChamber compt + 2 -2.05 cm 6.84 mm 1.74 m 54.9 keV 54.9 keV 624 mum 1.61 cm trkChamber phot ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 24, Parent ID = 1 +* G4Track Information: Particle = gamma, Track ID = 465, Parent ID = 25 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -2.16 mum 1.33 m 3.19 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.51 cm 6.24 mum 1.33 m 1.56 keV 1.63 keV 623 mum 623 mum Tracker eIoni - 2 -2.51 cm -73.4 mum 1.33 m 1.39 keV 169 eV 1.03 mm 1.66 mm Tracker eIoni - 3 -2.51 cm -30.6 mum 1.33 m 1.02 keV 369 eV 993 mum 2.65 mm Tracker eIoni - 4 -2.51 cm 83.6 mum 1.33 m 888 eV 130 eV 894 mum 3.54 mm Tracker eIoni - 5 -2.51 cm 94.4 mum 1.33 m 0 eV 888 eV 822 mum 4.37 mm Tracker eIoni + 0 -2.63 cm -636 mum 1.74 m 13.1 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.63 cm -677 mum 1.74 m 13.1 keV 13.1 keV 318 mum 318 mumtrkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = e+, Track ID = 24, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 5.1 mum 1.73 m 19.1 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.51 cm 94 mum 1.73 m 18.4 MeV 600 keV 1.61 mm 1.61 mm trkChamber eBrem + 2 -2.64 cm 431 mum 1.74 m 15.1 MeV 3.38 MeV 9.38 mm 1.1 cm trkChamber eIoni + 3 -2.52 cm 590 mum 1.75 m 13 MeV 1.91 MeV 4.41 mm 1.54 cm trkChamber eBrem + 4 -2.42 cm 580 mum 1.75 m 11.8 MeV 1.2 MeV 2.87 mm 1.83 cm trkChamber eBrem + 5 -2.34 cm 1.22 mm 1.75 m 9.31 MeV 1.04 MeV 3.12 mm 2.14 cm trkChamber eBrem + 6 -2.32 cm 3.79 mm 1.76 m 7.33 MeV 1.99 MeV 4.91 mm 2.63 cm trkChamber eIoni + 7 -2.37 cm 6.21 mm 1.76 m 6.29 MeV 1.01 MeV 2.82 mm 2.91 cm trkChamber eBrem + 8 -2.34 cm 8.87 mm 1.76 m 4.44 MeV 1.86 MeV 3.41 mm 3.25 cm trkChamber eIoni + 9 -2.16 cm 7.29 mm 1.76 m 3.56 MeV 878 keV 2.48 mm 3.5 cm trkChamber eIoni + 10 -2.01 cm 8.53 mm 1.76 m 2.92 MeV 636 keV 2.04 mm 3.7 cm trkChamber eIoni + 11 -1.93 cm 1 cm 1.76 m 2.36 MeV 561 keV 1.71 mm 3.88 cm trkChamber eIoni + 12 -1.81 cm 1.04 cm 1.76 m 1.6 MeV 759 keV 1.42 mm 4.02 cm trkChamber eIoni + 13 -1.78 cm 1.13 cm 1.76 m 1.2 MeV 406 keV 1.03 mm 4.12 cm trkChamber eIoni + 14 -1.78 cm 1.16 cm 1.76 m 0 eV 104 keV 319 mum 4.15 cm trkChamber annihil + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 473, Parent ID = 24 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.78 cm 1.16 cm 1.76 m 601 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 7.09 mm 5.58 cm 1.68 m 190 keV 411 keV 9.86 cm 9.86 cm trkChamber compt + 2 1.06 cm 5.14 cm 1.68 m 141 keV 48.6 keV 1.14 cm 11 cm trkChamber compt + 3 -451 mum 12.7 cm 1.73 m 95.9 keV 45.4 keV 8.85 cm 19.9 cm trkChamber compt + 4 -704 mum 12.7 cm 1.73 m 94.3 keV 1.56 keV 441 mum 19.9 cm trkChamber compt + 5 -4.62 mm 11.9 cm 1.73 m 76.8 keV 17.6 keV 9.32 mm 20.8 cm trkChamber compt + 6 -3.02 mm 11.8 cm 1.73 m 61.5 keV 15.3 keV 1.76 mm 21 cm trkChamber compt + 7 -5.22 mm 12.3 cm 1.72 m 60.2 keV 1.24 keV 7.86 mm 21.8 cm trkChamber compt + 8 -5.99 mm 12.3 cm 1.72 m 60.2 keV 60.2 keV 2.4 mm 22 cm trkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 472, Parent ID = 24 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.78 cm 1.16 cm 1.76 m 1.52 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -1.99 cm 2.35 cm 1.77 m 1.03 MeV 488 keV 1.5 cm 1.5 cm trkChamber compt + 2 1.78 cm 8.55 cm 1.82 m 1.03 MeV 0 eV 9.2 cm 10.7 cm TrackerTransportation + 3 41.7 cm 74.4 cm 2.42 m 1.03 MeV 0 eV 97.6 cm 1.08 m trkChamberTransportation + 4 43.8 cm 77.7 cm 2.46 m 210 keV 817 keV 5.01 cm 1.13 m trkChamber compt + 5 42.9 cm 76.5 cm 2.45 m 151 keV 59.6 keV 1.65 cm 1.15 m trkChamber compt + 6 42.9 cm 76.4 cm 2.45 m 95.5 keV 55.3 keV 1.11 mm 1.15 m trkChamber compt + 7 41.9 cm 77.9 cm 2.43 m 72.6 keV 22.9 keV 3.13 cm 1.18 m trkChamber compt + 8 43.1 cm 78.6 cm 2.45 m 72.6 keV 72.6 keV 2.41 cm 1.21 m trkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 471, Parent ID = 24 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.37 cm 6.21 mm 1.76 m 22.2 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.37 cm 6.22 mm 1.76 m 22.2 keV 22.2 keV 9.79 mum 9.79 mumtrkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 470, Parent ID = 24 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.34 cm 1.22 mm 1.75 m 1.42 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.56 mm 3.06 cm 1.82 m 458 keV 0 eV 7.4 cm 7.4 cm trkChamber compt + 2 -2.89 cm 5.51 cm 1.82 m 365 keV 93.4 keV 3.68 cm 11.1 cm trkChamber compt + 3 -4.2 cm 6.91 cm 1.81 m 329 keV 35.6 keV 2.26 cm 13.3 cm trkChamber compt + 4 -5.05 cm 7.72 cm 1.81 m 228 keV 101 keV 1.18 cm 14.5 cm trkChamber compt + 5 -5.73 cm 7.73 cm 1.82 m 228 keV 0 eV 1.54 cm 16.1 cm TrackerTransportation + 6 -34.9 cm 8.12 cm 2.42 m 228 keV 0 eV 66.7 cm 82.8 cm trkChamberTransportation + 7 -35.4 cm 8.13 cm 2.44 m 210 keV 17.8 keV 1.17 cm 83.9 cm trkChamber compt + 8 -35.1 cm 9.96 cm 2.48 m 190 keV 20.4 keV 4.87 cm 88.8 cm trkChamber compt + 9 -34.8 cm 10.1 cm 2.48 m 117 keV 73.3 keV 4.07 mm 89.2 cm trkChamber compt + 10 -35.5 cm 6.49 cm 2.46 m 83.9 keV 32.8 keV 4.48 cm 93.7 cm trkChamber compt + 11 -33.9 cm 7.1 cm 2.47 m 64 keV 19.9 keV 2.34 cm 96 cm trkChamber compt + 12 -35.8 cm 6.46 cm 2.47 m 57.5 keV 6.49 keV 2.11 cm 98.1 cm trkChamber compt + 13 -36.1 cm 7.41 cm 2.46 m 56.1 keV 1.39 keV 1.2 cm 99.3 cm trkChamber compt + 14 -36.9 cm 8.03 cm 2.46 m 56.1 keV 56.1 keV 1.06 cm 1 m trkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 474, Parent ID = 470 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.56 mm 3.06 cm 1.82 m 960 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.31 mm 3.04 cm 1.82 m 749 keV 211 keV 691 mum 691 mumtrkChamber eIoni + 2 -1.95 mm 3.02 cm 1.82 m 441 keV 308 keV 582 mum 1.27 mm trkChamber eIoni + 3 -2.27 mm 3.01 cm 1.82 m 254 keV 187 keV 414 mum 1.69 mm trkChamber eIoni + 4 -2.18 mm 3 cm 1.82 m 50 keV 204 keV 279 mum 1.97 mm trkChamber eIoni + 5 -2.17 mm 3 cm 1.82 m 0 eV 50 keV 21.1 mum 1.99 mm trkChamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 469, Parent ID = 24 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.42 cm 580 mum 1.75 m 16.9 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.39 cm 628 mum 1.75 m 16.9 keV 16.9 keV 832 mum 832 mumtrkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 468, Parent ID = 24 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.52 cm 590 mum 1.75 m 151 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -1.33 cm 4.36 mm 1.79 m 120 keV 31.2 keV 5.1 cm 5.1 cm trkChamber compt + 2 -1.53 cm 3.39 mm 1.8 m 120 keV 120 keV 2.37 mm 5.34 cm trkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 467, Parent ID = 24 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.51 cm 94 mum 1.73 m 83.1 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.43 cm 2.63 mm 1.75 m 74.9 keV 8.2 keV 2.29 cm 2.29 cm trkChamber compt + 2 -5.43 cm -1.67 cm 1.77 m 74.9 keV 74.9 keV 3.91 cm 6.21 cm trkChamber phot ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 23, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -1.86 mum 1.29 m 3.45 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.48 cm -131 mum 1.29 m 1.01 keV 1.45 keV 610 mum 610 mum Tracker eIoni - 2 -2.49 cm -158 mum 1.29 m 823 eV 189 eV 892 mum 1.5 mm Tracker eIoni - 3 -2.49 cm -169 mum 1.29 m 0 eV 823 eV 784 mum 2.29 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 148, Parent ID = 23 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.48 cm -131 mum 1.29 m 994 eV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.48 cm -137 mum 1.29 m 0 eV 994 eV 885 mum 885 mum Tracker eIoni + 0 -2.5 cm 5.1 mum 1.73 m 6.11 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.41 cm -23.2 mum 1.73 m 4.73 MeV 1.38 MeV 3.24 mm 3.24 mm trkChamber eIoni + 2 -2.5 cm 526 mum 1.74 m 3.78 MeV 947 keV 2.56 mm 5.81 mm trkChamber eIoni + 3 -2.47 cm 401 mum 1.74 m 3.01 MeV 772 keV 2.1 mm 7.91 mm trkChamber eIoni + 4 -2.37 cm 1.5 mm 1.74 m 2.36 MeV 647 keV 1.72 mm 9.62 mm trkChamber eIoni + 5 -2.3 cm 2.5 mm 1.74 m 1.57 MeV 790 keV 1.4 mm 1.1 cm trkChamber eIoni + 6 -2.37 cm 2.93 mm 1.74 m 1.22 MeV 354 keV 1 mm 1.2 cm trkChamber eIoni + 7 -2.36 cm 2.49 mm 1.74 m 939 keV 280 keV 824 mum 1.28 cm trkChamber eIoni + 8 -2.41 cm 2.31 mm 1.74 m 733 keV 207 keV 681 mum 1.35 cm trkChamber eIoni + 9 -2.45 cm 2.53 mm 1.74 m 458 keV 275 keV 573 mum 1.41 cm trkChamber eIoni + 10 -2.49 cm 2.44 mm 1.74 m 212 keV 245 keV 424 mum 1.45 cm trkChamber eIoni + 11 -2.48 cm 2.44 mm 1.74 m 0 eV 212 keV 231 mum 1.48 cm trkChamber eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 22, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -731 nm 1.14 m 1.15 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.5 cm -26.3 mum 1.14 m 153 eV 995 eV 930 mum 930 mum Tracker eIoni - 2 -2.5 cm -26.8 mum 1.14 m 0 eV 153 eV 337 mum 1.27 mm Tracker eIoni + 0 -2.5 cm 3.37 mum 1.64 m 2.43 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.5 cm 27.2 mum 1.64 m 2.4 MeV 17.2 keV 59.3 mum 59.3 mumtrkChamber eBrem + 2 -2.5 cm 612 mum 1.64 m 1.91 MeV 492 keV 1.41 mm 1.47 mm trkChamber eIoni + 3 -2.53 cm 506 mum 1.64 m 1.5 MeV 409 keV 1.17 mm 2.64 mm trkChamber eIoni + 4 -2.55 cm 504 mum 1.64 m 1.17 MeV 333 keV 967 mum 3.61 mm trkChamber eIoni + 5 -2.51 cm 487 mum 1.64 m 781 keV 388 keV 798 mum 4.41 mm trkChamber eIoni + 6 -2.51 cm 804 mum 1.64 m 574 keV 207 keV 599 mum 5.01 mm trkChamber eIoni + 7 -2.46 cm 891 mum 1.64 m 402 keV 173 keV 489 mum 5.5 mm trkChamber eIoni + 8 -2.43 cm 940 mum 1.64 m 217 keV 184 keV 390 mum 5.89 mm trkChamber eIoni + 9 -2.45 cm 974 mum 1.64 m 0 eV 217 keV 237 mum 6.12 mm trkChamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 475, Parent ID = 22 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.5 cm 27.2 mum 1.64 m 15.6 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.56 cm 632 mum 1.64 m 15.6 keV 15.6 keV 1.32 mm 1.32 mm trkChamber phot ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 21, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -719 nm 1.13 m 1.27 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.49 cm -36.6 mum 1.13 m 986 eV 284 eV 963 mum 963 mum Tracker eIoni - 2 -2.49 cm -16.4 mum 1.13 m 0 eV 986 eV 880 mum 1.84 mm Tracker eIoni + 0 -2.5 cm 2.22 mum 1.54 m 5.48 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.46 cm 120 mum 1.54 m 3.39 keV 2.09 keV 458 mum 458 mum Tracker eIoni + 2 -2.45 cm -88.2 mum 1.54 m 273 eV 3.12 keV 312 mum 771 mum Tracker eIoni + 3 -2.45 cm -91.5 mum 1.54 m 0 eV 273 eV 17 mum 788 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 20, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -14.3 nm 1.03 m 1.63 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.51 cm -33.5 mum 1.03 m 472 eV 1.15 keV 1.05 mm 1.05 mm Tracker eIoni - 2 -2.51 cm -34 mum 1.03 m 0 eV 472 eV 570 mum 1.62 mm Tracker eIoni + 0 -2.5 cm 1.14 mum 1.44 m 2.48 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.49 cm 82.5 mum 1.44 m 0 eV 2.48 keV 226 mum 226 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 19, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -127 nm 95.6 cm 2.91 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.54 cm -1.16 mm 95.7 cm 2.4 MeV 516 keV 1.67 mm 1.67 mm trkChamber eIoni - 2 -2.46 cm -1.4 mm 95.8 cm 1.9 MeV 494 keV 1.41 mm 3.08 mm trkChamber eIoni - 3 -2.44 cm -2.13 mm 95.9 cm 1.53 MeV 374 keV 1.17 mm 4.24 mm trkChamber eIoni - 4 -2.39 cm -1.83 mm 95.9 cm 1.12 MeV 406 keV 979 mum 5.22 mm trkChamber eIoni - 5 -2.43 cm -2.45 mm 95.9 cm 872 keV 248 keV 773 mum 5.99 mm trkChamber eIoni - 6 -2.47 cm -2.28 mm 96 cm 652 keV 220 keV 646 mum 6.64 mm trkChamber eIoni - 7 -2.51 cm -2.07 mm 96 cm 476 keV 176 keV 531 mum 7.17 mm trkChamber eIoni - 8 -2.55 cm -1.95 mm 96 cm 324 keV 152 keV 434 mum 7.61 mm trkChamber eIoni - 9 -2.53 cm -1.87 mm 96 cm 150 keV 174 keV 338 mum 7.94 mm trkChamber eIoni - 10 -2.52 cm -1.84 mm 96 cm 0 eV 150 keV 138 mum 8.08 mm trkChamber eIoni + 0 -2.5 cm 847 nm 1.42 m 1.44 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.5 cm 70.1 mum 1.42 m 0 eV 1.44 keV 100 mum 100 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 18, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -114 nm 94.3 cm 1.55 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.49 cm 202 mum 94.4 cm 1.18 MeV 365 keV 989 mum 989 mumtrkChamber eIoni - 2 -2.41 cm 21.4 mum 94.4 cm 894 keV 288 keV 805 mum 1.79 mm trkChamber eIoni - 3 -2.39 cm 178 mum 94.3 cm 619 keV 276 keV 657 mum 2.45 mm trkChamber eIoni - 4 -2.36 cm 349 mum 94.3 cm 370 keV 249 keV 513 mum 2.96 mm trkChamber eIoni - 5 -2.36 cm 275 mum 94.3 cm 79.9 keV 290 keV 370 mum 3.33 mm trkChamber eIoni - 6 -2.35 cm 280 mum 94.3 cm 0 eV 79.9 keV 49.9 mum 3.38 mm trkChamber eIoni + 0 -2.5 cm -578 nm 1.29 m 11.9 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.58 cm 519 mum 1.29 m 10.2 keV 1.71 keV 1.01 mm 1.01 mm Tracker eIoni + 2 -2.61 cm 1.07 mm 1.29 m 8.45 keV 1.71 keV 836 mum 1.85 mm Tracker eIoni + 3 -2.54 cm 937 mum 1.29 m 6.08 keV 2.38 keV 681 mum 2.53 mm Tracker eIoni + 4 -2.5 cm 1.08 mm 1.29 m 4.07 keV 2 keV 500 mum 3.03 mm Tracker eIoni + 5 -2.48 cm 1.24 mm 1.29 m 1.89 keV 2.18 keV 363 mum 3.39 mm Tracker eIoni + 6 -2.47 cm 1.32 mm 1.29 m 0 eV 1.89 keV 150 mum 3.54 mm Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 17, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm 48.5 nm 88.8 cm 2.96 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.58 cm 1.02 mm 89 cm 2.3 MeV 664 keV 1.69 mm 1.69 mm trkChamber eIoni - 2 -2.64 cm 625 mum 89.1 cm 1.88 MeV 415 keV 1.36 mm 3.05 mm trkChamber eIoni - 3 -2.65 cm 472 mum 89.1 cm 1.81 MeV 63.9 keV 194 mum 3.25 mm trkChamber eBrem - 4 -2.66 cm -288 mum 89 cm 1.44 MeV 371 keV 1.12 mm 4.37 mm trkChamber eIoni - 5 -2.72 cm -880 mum 89 cm 1.11 MeV 325 keV 934 mum 5.3 mm trkChamber eIoni - 6 -2.76 cm -1.45 mm 88.9 cm 836 keV 276 keV 769 mum 6.07 mm trkChamber eIoni - 7 -2.77 cm -1.98 mm 88.9 cm 638 keV 198 keV 627 mum 6.7 mm trkChamber eIoni - 8 -2.79 cm -1.94 mm 88.9 cm 302 keV 93.7 keV 236 mum 6.93 mm trkChamber eBrem - 9 -2.8 cm -1.82 mm 88.9 cm 135 keV 167 keV 321 mum 7.25 mm trkChamber eIoni - 10 -2.8 cm -1.82 mm 88.9 cm 0 eV 135 keV 116 mum 7.37 mm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 150, Parent ID = 17 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.79 cm -1.94 mm 88.9 cm 242 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -13.2 cm 1.83 cm 1.02 m 129 keV 113 keV 17.1 cm 17.1 cm trkChamber compt - 2 -13 cm 1.7 cm 1.02 m 115 keV 13.7 keV 2.7 mm 17.4 cm trkChamber compt - 3 -13.2 cm 7.73 mm 99.8 cm 110 keV 5.37 keV 2.58 cm 20 cm trkChamber compt - 4 -13.5 cm 8.15 mm 99.3 cm 77 keV 33.1 keV 5.79 mm 20.5 cm trkChamber compt - 5 -13.5 cm 8.15 mm 99.3 cm 77 keV 77 keV 62.9 mum 20.5 cm trkChamber phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 149, Parent ID = 17 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.65 cm 472 mum 89.1 cm 10.4 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.66 cm 339 mum 89.1 cm 10.4 keV 10.4 keV 149 mum 149 mumtrkChamber phot + 0 -2.5 cm -1.67 mum 1.2 m 2.13 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.51 cm -96.7 mum 1.2 m 0 eV 2.13 keV 179 mum 179 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 16, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm 139 nm 84.6 cm 3.81 MeV 0 eV 0 fm 0 fm trkChamber initStep - 1 -2.52 cm 239 mum 84.8 cm 2.98 MeV 772 keV 2.02 mm 2.02 mm trkChamber eBrem - 2 -2.6 cm 1.22 mm 84.9 cm 2.32 MeV 653 keV 1.7 mm 3.72 mm trkChamber eIoni - 3 -2.7 cm 1.2 mm 85 cm 1.69 MeV 635 keV 1.37 mm 5.09 mm trkChamber eIoni - 4 -2.61 cm 1.36 mm 85 cm 1.18 MeV 504 keV 1.06 mm 6.15 mm trkChamber eIoni - 5 -2.6 cm 985 mum 85.1 cm 917 keV 267 keV 805 mum 6.96 mm trkChamber eIoni - 6 -2.61 cm 557 mum 85.1 cm 666 keV 250 keV 669 mum 7.62 mm trkChamber eIoni - 7 -2.6 cm 164 mum 85.1 cm 456 keV 211 keV 538 mum 8.16 mm trkChamber eIoni - 8 -2.59 cm -113 mum 85.1 cm 263 keV 193 keV 423 mum 8.59 mm trkChamber eIoni - 9 -2.58 cm -181 mum 85.1 cm 69.6 keV 194 keV 288 mum 8.87 mm trkChamber eIoni - 10 -2.58 cm -190 mum 85.1 cm 0 eV 69.6 keV 40.2 mum 8.91 mm trkChamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 151, Parent ID = 16 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.52 cm 239 mum 84.8 cm 58.9 keV 0 eV 0 fm 0 fm trkChamber initStep - 1 -3.24 cm 9.43 mm 86.9 cm 58.9 keV 58.9 keV 2.42 cm 2.42 cm trkChamber phot + 0 -2.5 cm -3.15 mum 1.08 m 1.67 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.51 cm -24.4 mum 1.08 m 0 eV 1.67 keV 124 mum 124 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 15, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm 63 nm 81.6 cm 1.23 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.5 cm -19.3 mum 81.6 cm 376 eV 850 eV 951 mum 951 mum Tracker eIoni - 2 -2.5 cm -14.9 mum 81.6 cm 0 eV 376 eV 509 mum 1.46 mm Tracker eIoni + 0 -2.5 cm -3.55 mum 95.2 cm 4.44 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.48 cm 1.25 mm 95.4 cm 3.59 MeV 848 keV 2.42 mm 2.42 mm trkChamber eIoni + 2 -2.46 cm 942 mum 95.5 cm 2.65 MeV 462 keV 1.15 mm 3.57 mm trkChamber eBrem + 3 -2.41 cm -469 mum 95.5 cm 2.02 MeV 629 keV 1.54 mm 5.11 mm trkChamber eIoni + 4 -2.41 cm -1.55 mm 95.4 cm 1.66 MeV 367 keV 1.23 mm 6.34 mm trkChamber eIoni + 5 -2.45 cm -2.15 mm 95.4 cm 1.17 MeV 378 keV 1 mm 7.34 mm trkChamber eBrem + 6 -2.46 cm -2.69 mm 95.3 cm 930 keV 243 keV 800 mum 8.14 mm trkChamber eIoni + 7 -2.48 cm -3.15 mm 95.3 cm 624 keV 305 keV 676 mum 8.81 mm trkChamber eIoni + 8 -2.48 cm -3.56 mm 95.2 cm 437 keV 188 keV 516 mum 9.33 mm trkChamber eIoni + 9 -2.48 cm -3.3 mm 95.2 cm 287 keV 150 keV 411 mum 9.74 mm trkChamber eIoni + 10 -2.48 cm -3.36 mm 95.2 cm 0 eV 287 keV 309 mum 1 cm trkChamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 477, Parent ID = 15 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.45 cm -2.15 mm 95.4 cm 104 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -3.14 cm -1.67 cm 95 cm 104 keV 104 keV 1.66 cm 1.66 cm trkChamber phot + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 476, Parent ID = 15 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.46 cm 942 mum 95.5 cm 481 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.5 cm -1.04 cm 95.5 cm 284 keV 198 keV 1.14 cm 1.14 cm trkChamber compt + 2 -2.85 cm -1.18 cm 95.9 cm 175 keV 109 keV 5.67 mm 1.7 cm trkChamber compt + 3 -8.94 cm -5.56 cm 87.6 cm 107 keV 68.5 keV 11.1 cm 12.8 cm trkChamber compt + 4 -6.37 cm -5.61 cm 89.6 cm 79.4 keV 27.2 keV 3.21 cm 16.1 cm trkChamber compt + 5 -7.67 cm -3.05 cm 87.7 cm 64.7 keV 14.7 keV 3.4 cm 19.5 cm trkChamber compt + 6 -8.78 cm -4.42 cm 88.2 cm 55.6 keV 9.12 keV 1.81 cm 21.3 cm trkChamber compt + 7 -10.7 cm -2.05 cm 86.7 cm 55.6 keV 55.6 keV 3.36 cm 24.6 cm trkChamber phot ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 14, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm 53.7 nm 79.9 cm 1.04 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.51 cm 27.5 mum 79.9 cm 246 eV 799 eV 901 mum 901 mum Tracker eIoni - 2 -2.51 cm 26.5 mum 79.9 cm 0 eV 246 eV 417 mum 1.32 mm Tracker eIoni + 0 -2.5 cm -2.73 mum 85.8 cm 6.23 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.47 cm -386 mum 86.1 cm 5.12 MeV 1.12 MeV 3.3 mm 3.3 mm trkChamber eIoni + 2 -2.31 cm 37.1 mum 86.4 cm 4.18 MeV 935 keV 2.76 mm 6.06 mm trkChamber eIoni + 3 -2.19 cm -1.27 mm 86.5 cm 3.36 MeV 824 keV 2.3 mm 8.36 mm trkChamber eIoni + 4 -2.12 cm -644 mum 86.7 cm 2.51 MeV 852 keV 1.89 mm 1.02 cm trkChamber eIoni + 5 -1.99 cm -58.1 mum 86.7 cm 1.97 MeV 536 keV 1.47 mm 1.17 cm trkChamber eIoni + 6 -1.97 cm 778 mum 86.8 cm 1.6 MeV 374 keV 1.2 mm 1.29 cm trkChamber eIoni + 7 -1.87 cm 834 mum 86.8 cm 1.23 MeV 369 keV 1.02 mm 1.39 cm trkChamber eIoni + 8 -1.83 cm 1.08 mm 86.8 cm 859 keV 370 keV 829 mum 1.48 cm trkChamber eIoni + 9 -1.81 cm 1.21 mm 86.8 cm 771 keV 73.9 keV 245 mum 1.5 cm trkChamber eBrem + 10 -1.83 cm 1.69 mm 86.8 cm 391 keV 380 keV 593 mum 1.56 cm trkChamber eIoni + 11 -1.82 cm 1.38 mm 86.8 cm 228 keV 163 keV 383 mum 1.6 cm trkChamber eIoni + 12 -1.83 cm 1.28 mm 86.8 cm 4.53 keV 224 keV 251 mum 1.62 cm trkChamber eIoni + 13 -1.83 cm 1.28 mm 86.8 cm 0 eV 4.53 keV 354 nm 1.62 cm trkChamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 478, Parent ID = 14 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.81 cm 1.21 mm 86.8 cm 14.5 keV 0 eV 0 fm 0 fm trkChamber initStep + 1 -1.75 cm 3.12 mm 86.9 cm 14.5 keV 14.5 keV 2.27 mm 2.27 mm trkChamber phot ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 13, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm 34.1 nm 77 cm 1.51 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.49 cm -153 mum 77 cm 1.04 keV 466 eV 1.02 mm 1.02 mm Tracker eIoni - 2 -2.48 cm -103 mum 77 cm 752 eV 293 eV 901 mum 1.92 mm Tracker eIoni - 3 -2.48 cm -112 mum 77 cm 0 eV 752 eV 741 mum 2.67 mm Tracker eIoni + 0 -2.5 cm -2.52 mum 83.3 cm 5.56 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.52 cm -866 mum 83.6 cm 4.53 MeV 1.03 MeV 2.98 mm 2.98 mm trkChamber eIoni + 2 -2.51 cm -258 mum 83.8 cm 3.69 MeV 842 keV 2.47 mm 5.44 mm trkChamber eIoni + 3 -2.57 cm -1.04 mm 84 cm 2.84 MeV 849 keV 2.05 mm 7.5 mm trkChamber eIoni + 4 -2.54 cm -975 mum 84.1 cm 1.37 MeV 413 keV 746 mum 8.24 mm trkChamber eIoni + 5 -2.53 cm -1.39 mm 84 cm 1.11 MeV 264 keV 901 mum 9.14 mm trkChamber eIoni + 6 -2.51 cm -1.47 mm 83.9 cm 879 keV 229 keV 767 mum 9.91 mm trkChamber eIoni + 7 -2.46 cm -1.54 mm 83.9 cm 676 keV 203 keV 650 mum 1.06 cm trkChamber eIoni + 8 -2.41 cm -1.44 mm 83.9 cm 460 keV 216 keV 544 mum 1.11 cm trkChamber eIoni + 9 -2.44 cm -1.41 mm 83.9 cm 298 keV 162 keV 425 mum 1.15 cm trkChamber eIoni + 10 -2.41 cm -1.42 mm 83.9 cm 151 keV 147 keV 318 mum 1.18 cm trkChamber eIoni + 11 -2.41 cm -1.47 mm 83.9 cm 0 eV 151 keV 136 mum 1.2 cm trkChamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 479, Parent ID = 13 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.54 cm -975 mum 84.1 cm 1.06 MeV 0 eV 0 fm 0 fm trkChamber initStep + 1 -2.48 cm -1.02 mm 84 cm 800 keV 258 keV 742 mum 742 mumtrkChamber eIoni + 2 -2.5 cm -738 mum 84 cm 584 keV 216 keV 609 mum 1.35 mm trkChamber eIoni + 3 -2.51 cm -313 mum 84 cm 363 keV 221 keV 494 mum 1.84 mm trkChamber eIoni + 4 -2.51 cm -369 mum 84 cm 199 keV 163 keV 365 mum 2.21 mm trkChamber eIoni + 5 -2.51 cm -404 mum 84 cm 53.2 keV 146 keV 212 mum 2.42 mm trkChamber eIoni + 6 -2.51 cm -417 mum 84 cm 0 eV 53.2 keV 23.5 mum 2.45 mm trkChamber eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 12, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm 23 nm 75.4 cm 12.1 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.51 cm 576 mum 75.4 cm 9.36 keV 1.27 keV 657 mum 657 mum Tracker eIoni - 2 -2.61 cm 325 mum 75.3 cm 5.05 keV 3.2 keV 1.66 mm 2.32 mm Tracker eIoni - 3 -2.55 cm 537 mum 75.3 cm 3.59 keV 1.46 keV 1.62 mm 3.94 mm Tracker eIoni - 4 -2.6 cm 363 mum 75.3 cm 2.82 keV 763 eV 1.41 mm 5.35 mm Tracker eIoni - 5 -2.59 cm 216 mum 75.3 cm 1.24 keV 1.58 keV 1.29 mm 6.63 mm Tracker eIoni - 6 -2.59 cm 90.6 mum 75.3 cm 1.15 keV 94.2 eV 956 mum 7.59 mm Tracker eIoni - 7 -2.59 cm 75.1 mum 75.3 cm 119 eV 1.03 keV 931 mum 8.52 mm Tracker eIoni - 8 -2.59 cm 75.5 mum 75.3 cm 0 eV 119 eV 296 mum 8.82 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 153, Parent ID = 12 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.61 cm 325 mum 75.3 cm 1.11 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.61 cm 383 mum 75.3 cm 496 eV 609 eV 918 mum 918 mum Tracker eIoni - 2 -2.61 cm 379 mum 75.3 cm 0 eV 496 eV 585 mum 1.5 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 152, Parent ID = 12 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.51 cm 576 mum 75.4 cm 1.5 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.49 cm 632 mum 75.4 cm 1.15 keV 359 eV 1.02 mm 1.02 mm Tracker eIoni - 2 -2.48 cm 685 mum 75.4 cm 710 eV 435 eV 930 mum 1.95 mm Tracker eIoni - 3 -2.48 cm 676 mum 75.4 cm 0 eV 710 eV 716 mum 2.67 mm Tracker eIoni + 0 -2.5 cm -2.08 mum 69.1 cm 1.02 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.5 cm -45.9 mum 69.1 cm 0 eV 1.02 keV 62.7 mum 62.7 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 11, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -4.06 nm 70.7 cm 6.54 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.48 cm -623 mum 70.7 cm 3.26 keV 3.28 keV 1.8 mm 1.8 mm Tracker eIoni - 2 -2.48 cm -455 mum 70.7 cm 734 eV 2.53 keV 1.36 mm 3.16 mm Tracker eIoni - 3 -2.48 cm -446 mum 70.7 cm 0 eV 734 eV 730 mum 3.89 mm Tracker eIoni + 0 -2.5 cm -1.75 mum 58.5 cm 8.36 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.53 cm -564 mum 58.5 cm 6.28 keV 2.08 keV 672 mum 672 mum Tracker eIoni + 2 -2.56 cm -844 mum 58.5 cm 3.52 keV 1.55 keV 481 mum 1.15 mm Tracker eIoni + 3 -2.58 cm -989 mum 58.5 cm 752 eV 2.77 keV 323 mum 1.48 mm Tracker eIoni + 4 -2.58 cm -1 mm 58.5 cm 0 eV 752 eV 43.1 mum 1.52 mm Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 480, Parent ID = 11 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.56 cm -844 mum 58.5 cm 1.21 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.56 cm -897 mum 58.5 cm 0 eV 1.21 keV 78.6 mum 78.6 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 10, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -43.1 nm 65.4 cm 5.05 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.54 cm -3.54 mum 65.5 cm 2.92 keV 2.13 keV 1.62 mm 1.62 mm Tracker eIoni - 2 -2.56 cm 23.3 mum 65.5 cm 1.06 keV 830 eV 800 mum 2.42 mm Tracker eIoni - 3 -2.56 cm -69.5 mum 65.5 cm 824 eV 234 eV 905 mum 3.32 mm Tracker eIoni - 4 -2.56 cm -71.3 mum 65.5 cm 0 eV 824 eV 784 mum 4.11 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 154, Parent ID = 10 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.56 cm 23.3 mum 65.5 cm 1.03 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.57 cm 20.7 mum 65.4 cm 927 eV 106 eV 898 mum 898 mum Tracker eIoni - 2 -2.57 cm 17.3 mum 65.4 cm 0 eV 927 eV 846 mum 1.74 mm Tracker eIoni + 0 -2.5 cm -1.7 mum 57 cm 1.53 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.49 cm 33.5 mum 57 cm 0 eV 1.53 keV 109 mum 109 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 9, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -68.4 nm 60 cm 1.02 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.5 cm 124 mum 60 cm 762 eV 256 eV 894 mum 894 mum Tracker eIoni - 2 -2.5 cm 115 mum 60 cm 0 eV 762 eV 747 mum 1.64 mm Tracker eIoni + 0 -2.5 cm -1.69 mum 56.7 cm 991 eV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.5 cm 30.7 mum 56.7 cm 0 eV 991 eV 60.6 mum 60.6 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 8, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -40.7 nm 43.7 cm 5.77 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.54 cm 323 mum 43.7 cm 2.37 keV 3.4 keV 1.71 mm 1.71 mm Tracker eIoni - 2 -2.55 cm 75.8 mum 43.7 cm 1.7 keV 674 eV 1.21 mm 2.91 mm Tracker eIoni - 3 -2.55 cm 42.3 mum 43.7 cm 607 eV 1.09 keV 1.07 mm 3.98 mm Tracker eIoni - 4 -2.55 cm 40.5 mum 43.7 cm 0 eV 607 eV 654 mum 4.63 mm Tracker eIoni + 0 -2.5 cm -1.33 mum 45.9 cm 5.84 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.55 cm -59 mum 45.9 cm 3.05 keV 2.79 keV 482 mum 482 mum Tracker eIoni + 2 -2.56 cm -120 mum 45.9 cm 0 eV 3.05 keV 284 mum 766 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 7, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -39.7 nm 22.1 cm 1.38 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.49 cm -29.7 mum 22.1 cm 367 eV 1.01 keV 991 mum 991 mum Tracker eIoni - 2 -2.49 cm -27.1 mum 22.1 cm 0 eV 367 eV 503 mum 1.49 mm Tracker eIoni + 0 -2.5 cm -1.31 mum 45.4 cm 1.55 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.51 cm -7.32 mum 45.4 cm 0 eV 1.55 keV 112 mum 112 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 6, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -7.11 nm 15.9 cm 1.23 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.5 cm 86.5 mum 15.9 cm 810 eV 425 eV 954 mum 954 mum Tracker eIoni - 2 -2.5 cm 75.5 mum 15.9 cm 0 eV 810 eV 776 mum 1.73 mm Tracker eIoni + 0 -2.5 cm -1.29 mum 44.7 cm 1.75 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.5 cm -95.6 mum 44.7 cm 0 eV 1.75 keV 133 mum 133 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm -3.19e+03 fm 9.14 cm 1.75 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.49 cm 210 mum 9.13 cm 1.61 keV 138 eV 1.08 mm 1.08 mm Tracker eIoni - 2 -2.5 cm 178 mum 9.12 cm 1.02 keV 594 eV 1.05 mm 2.12 mm Tracker eIoni - 3 -2.5 cm 263 mum 9.13 cm 836 eV 181 eV 893 mum 3.02 mm Tracker eIoni - 4 -2.51 cm 254 mum 9.13 cm 0 eV 836 eV 791 mum 3.81 mm Tracker eIoni + 0 -2.5 cm -978 nm 35.1 cm 2.12 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.5 cm 123 mum 35.1 cm 0 eV 2.12 keV 178 mum 178 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm 9.61 Ang 8.54 cm 3.81 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.47 cm 205 mum 8.57 cm 2.74 keV 1.06 keV 1.44 mm 1.44 mm Tracker eIoni - 2 -2.48 cm 23.8 mum 8.55 cm 1.84 keV 909 eV 1.27 mm 2.72 mm Tracker eIoni - 3 -2.48 cm -2.42 mum 8.56 cm 275 eV 1.56 keV 1.1 mm 3.81 mm Tracker eIoni - 4 -2.48 cm -4.37 mum 8.56 cm 0 eV 275 eV 440 mum 4.25 mm Tracker eIoni + 0 -2.5 cm -952 nm 34.2 cm 1.52 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.49 cm 10.1 mum 34.2 cm 0 eV 1.52 keV 109 mum 109 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm 7.27 nm 4.87 cm 1.27 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -2.49 cm -109 mum 4.88 cm 1.05 keV 221 eV 964 mum 964 mum Tracker eIoni - 2 -2.5 cm -156 mum 4.87 cm 581 eV 472 eV 903 mum 1.87 mm Tracker eIoni - 3 -2.49 cm -155 mum 4.87 cm 0 eV 581 eV 637 mum 2.5 mm Tracker eIoni + 0 -2.5 cm -48.1 nm 4.14 cm 1.24 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.5 cm -40.8 mum 4.14 cm 0 eV 1.24 keV 81.8 mum 81.8 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.5 cm 0 fm 2.39 mm 1.23 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -2.49 cm 27.5 mum 2.59 mm 1.02 MeV 93.6 keV 244 mum 244 mum TargetPV eBrem - 2 -2.48 cm -63.9 mum 3.25 mm 790 keV 230 keV 721 mum 965 mum TargetPV eIoni - 3 -2.45 cm -153 mum 2.83 mm 554 keV 235 keV 603 mum 1.57 mm TargetPV eIoni - 4 -2.45 cm -498 mum 2.68 mm 380 keV 174 keV 478 mum 2.05 mm TargetPV eIoni - 5 -2.46 cm -483 mum 2.41 mm 193 keV 187 keV 377 mum 2.42 mm TargetPV eIoni - 6 -2.45 cm -416 mum 2.44 mm 22.8 keV 170 keV 204 mum 2.63 mm TargetPV eIoni - 7 -2.45 cm -415 mum 2.44 mm 0 eV 22.8 keV 8.49 mum 2.64 mm TargetPV eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 155, Parent ID = 2 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process - 0 -2.49 cm 27.5 mum 2.59 mm 114 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.8 cm -3.34 mm 1.23 cm 113 keV 163 eV 1.24 cm 1.24 cm TargetPV compt - 2 -7.8 mm -9.68 mm 2.5 cm 113 keV 0 eV 1.74 cm 2.98 cm TrackerTransportation - 3 2.5 m -1.57 m 3.15 m 113 keV 0 eV 4.3 m 4.33 m WorldPVTransportation - 4 3.59 m -2.25 m 4.5 m 113 keV 0 eV 1.86 m 6.19 m OutOfWorldTransportation + 0 -2.5 cm -17 nm 3.09 cm 6.34 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -2.54 cm 262 mum 3.09 cm 4.72 keV 1.63 keV 519 mum 519 mum Tracker eIoni + 2 -2.57 cm 543 mum 3.08 cm 3.15 keV 1.57 keV 406 mum 925 mum Tracker eIoni + 3 -2.58 cm 674 mum 3.09 cm 193 eV 2.95 keV 292 mum 1.22 mm Tracker eIoni + 4 -2.58 cm 676 mum 3.09 cm 0 eV 193 eV 14 mum 1.23 mm Tracker eIoni >>> Event 0 - 155 trajectories stored in this event. + 480 trajectories stored in this event. ### Run 2 start. >>> Event 0 - 95 trajectories stored in this event. + 93 trajectories stored in this event. >>> Event 1 - 116 trajectories stored in this event. + 174 trajectories stored in this event. >>> Event 2 - 85 trajectories stored in this event. + 144 trajectories stored in this event. >>> Event 3 - 80 trajectories stored in this event. + 329 trajectories stored in this event. >>> Event 4 - 106 trajectories stored in this event. ->>> Event 5 - 71 trajectories stored in this event. ->>> Event 6 - 90 trajectories stored in this event. ->>> Event 7 - 200 trajectories stored in this event. ->>> Event 8 - 225 trajectories stored in this event. ->>> Event 9 - 129 trajectories stored in this event. ->>> Event 10 - 114 trajectories stored in this event. ->>> Event 11 - 119 trajectories stored in this event. ->>> Event 12 - 197 trajectories stored in this event. ->>> Event 13 - 120 trajectories stored in this event. ->>> Event 14 - 109 trajectories stored in this event. ->>> Event 15 - 427 trajectories stored in this event. ->>> Event 16 - 99 trajectories stored in this event. ->>> Event 17 - 178 trajectories stored in this event. ->>> Event 18 - 91 trajectories stored in this event. ->>> Event 19 - 128 trajectories stored in this event. ->>> Event 20 - 76 trajectories stored in this event. ->>> Event 21 - 80 trajectories stored in this event. ->>> Event 22 - 116 trajectories stored in this event. ->>> Event 23 - 253 trajectories stored in this event. ->>> Event 24 - 98 trajectories stored in this event. ->>> Event 25 - 75 trajectories stored in this event. ->>> Event 26 - 91 trajectories stored in this event. ->>> Event 27 - 90 trajectories stored in this event. ->>> Event 28 - 70 trajectories stored in this event. ->>> Event 29 - 88 trajectories stored in this event. ->>> Event 30 - 94 trajectories stored in this event. ->>> Event 31 - 88 trajectories stored in this event. ->>> Event 32 - 163 trajectories stored in this event. ->>> Event 33 - 254 trajectories stored in this event. ->>> Event 34 - 101 trajectories stored in this event. ->>> Event 35 - 79 trajectories stored in this event. ->>> Event 36 - 127 trajectories stored in this event. ->>> Event 37 - 120 trajectories stored in this event. ->>> Event 38 - 87 trajectories stored in this event. ->>> Event 39 - 90 trajectories stored in this event. ->>> Event 40 - 124 trajectories stored in this event. ->>> Event 41 - 136 trajectories stored in this event. ->>> Event 42 - 235 trajectories stored in this event. ->>> Event 43 - 94 trajectories stored in this event. ->>> Event 44 - 156 trajectories stored in this event. ->>> Event 45 - 99 trajectories stored in this event. ->>> Event 46 - 315 trajectories stored in this event. ->>> Event 47 - 116 trajectories stored in this event. ->>> Event 48 - 85 trajectories stored in this event. ->>> Event 49 - 69 trajectories stored in this event. ->>> Event 50 - 70 trajectories stored in this event. ->>> Event 51 - 81 trajectories stored in this event. ->>> Event 52 - 156 trajectories stored in this event. ->>> Event 53 - 117 trajectories stored in this event. ->>> Event 54 - 85 trajectories stored in this event. ->>> Event 55 - 235 trajectories stored in this event. ->>> Event 56 - 87 trajectories stored in this event. ->>> Event 57 - 96 trajectories stored in this event. ->>> Event 58 - 82 trajectories stored in this event. ->>> Event 59 - 129 trajectories stored in this event. ->>> Event 60 - 116 trajectories stored in this event. ->>> Event 61 - 177 trajectories stored in this event. ->>> Event 62 - 191 trajectories stored in this event. ->>> Event 63 - 184 trajectories stored in this event. ->>> Event 64 - 146 trajectories stored in this event. ->>> Event 65 - 56 trajectories stored in this event. ->>> Event 66 - 108 trajectories stored in this event. ->>> Event 67 - 100 trajectories stored in this event. ->>> Event 68 - 101 trajectories stored in this event. ->>> Event 69 - 79 trajectories stored in this event. ->>> Event 70 - 91 trajectories stored in this event. ->>> Event 71 - 94 trajectories stored in this event. ->>> Event 72 - 90 trajectories stored in this event. ->>> Event 73 - 161 trajectories stored in this event. ->>> Event 74 - 200 trajectories stored in this event. ->>> Event 75 - 98 trajectories stored in this event. ->>> Event 76 - 97 trajectories stored in this event. ->>> Event 77 - 101 trajectories stored in this event. ->>> Event 78 - 92 trajectories stored in this event. ->>> Event 79 - 160 trajectories stored in this event. ->>> Event 80 - 167 trajectories stored in this event. ->>> Event 81 - 87 trajectories stored in this event. ->>> Event 82 - 122 trajectories stored in this event. ->>> Event 83 - 141 trajectories stored in this event. ->>> Event 84 - 106 trajectories stored in this event. ->>> Event 85 - 239 trajectories stored in this event. ->>> Event 86 - 75 trajectories stored in this event. ->>> Event 87 - 82 trajectories stored in this event. ->>> Event 88 - 80 trajectories stored in this event. ->>> Event 89 - 130 trajectories stored in this event. ->>> Event 90 - 109 trajectories stored in this event. ->>> Event 91 - 101 trajectories stored in this event. ->>> Event 92 - 181 trajectories stored in this event. ->>> Event 93 - 94 trajectories stored in this event. ->>> Event 94 - 82 trajectories stored in this event. ->>> Event 95 - 205 trajectories stored in this event. ->>> Event 96 - 88 trajectories stored in this event. ->>> Event 97 84 trajectories stored in this event. ->>> Event 98 - 71 trajectories stored in this event. ->>> Event 99 +>>> Event 5 + 158 trajectories stored in this event. +>>> Event 6 + 89 trajectories stored in this event. +>>> Event 7 + 96 trajectories stored in this event. +>>> Event 8 + 114 trajectories stored in this event. +>>> Event 9 + 98 trajectories stored in this event. +>>> Event 10 + 106 trajectories stored in this event. +>>> Event 11 + 110 trajectories stored in this event. +>>> Event 12 + 191 trajectories stored in this event. +>>> Event 13 + 119 trajectories stored in this event. +>>> Event 14 + 102 trajectories stored in this event. +>>> Event 15 + 75 trajectories stored in this event. +>>> Event 16 + 393 trajectories stored in this event. +>>> Event 17 + 209 trajectories stored in this event. +>>> Event 18 + 169 trajectories stored in this event. +>>> Event 19 + 204 trajectories stored in this event. +>>> Event 20 + 109 trajectories stored in this event. +>>> Event 21 + 103 trajectories stored in this event. +>>> Event 22 + 107 trajectories stored in this event. +>>> Event 23 + 215 trajectories stored in this event. +>>> Event 24 + 92 trajectories stored in this event. +>>> Event 25 + 85 trajectories stored in this event. +>>> Event 26 + 100 trajectories stored in this event. +>>> Event 27 + 103 trajectories stored in this event. +>>> Event 28 + 76 trajectories stored in this event. +>>> Event 29 + 168 trajectories stored in this event. +>>> Event 30 + 133 trajectories stored in this event. +>>> Event 31 + 204 trajectories stored in this event. +>>> Event 32 + 84 trajectories stored in this event. +>>> Event 33 + 83 trajectories stored in this event. +>>> Event 34 + 132 trajectories stored in this event. +>>> Event 35 + 105 trajectories stored in this event. +>>> Event 36 + 213 trajectories stored in this event. +>>> Event 37 247 trajectories stored in this event. +>>> Event 38 + 96 trajectories stored in this event. +>>> Event 39 + 94 trajectories stored in this event. +>>> Event 40 + 122 trajectories stored in this event. +>>> Event 41 + 135 trajectories stored in this event. +>>> Event 42 + 92 trajectories stored in this event. +>>> Event 43 + 240 trajectories stored in this event. +>>> Event 44 + 240 trajectories stored in this event. +>>> Event 45 + 90 trajectories stored in this event. +>>> Event 46 + 105 trajectories stored in this event. +>>> Event 47 + 111 trajectories stored in this event. +>>> Event 48 + 79 trajectories stored in this event. +>>> Event 49 + 93 trajectories stored in this event. +>>> Event 50 + 224 trajectories stored in this event. +>>> Event 51 + 114 trajectories stored in this event. +>>> Event 52 + 89 trajectories stored in this event. +>>> Event 53 + 140 trajectories stored in this event. +>>> Event 54 + 99 trajectories stored in this event. +>>> Event 55 + 388 trajectories stored in this event. +>>> Event 56 + 110 trajectories stored in this event. +>>> Event 57 + 89 trajectories stored in this event. +>>> Event 58 + 93 trajectories stored in this event. +>>> Event 59 + 171 trajectories stored in this event. +>>> Event 60 + 112 trajectories stored in this event. +>>> Event 61 + 97 trajectories stored in this event. +>>> Event 62 + 133 trajectories stored in this event. +>>> Event 63 + 179 trajectories stored in this event. +>>> Event 64 + 69 trajectories stored in this event. +>>> Event 65 + 96 trajectories stored in this event. +>>> Event 66 + 79 trajectories stored in this event. +>>> Event 67 + 94 trajectories stored in this event. +>>> Event 68 + 232 trajectories stored in this event. +>>> Event 69 + 153 trajectories stored in this event. +>>> Event 70 + 119 trajectories stored in this event. +>>> Event 71 + 253 trajectories stored in this event. +>>> Event 72 + 285 trajectories stored in this event. +>>> Event 73 + 262 trajectories stored in this event. +>>> Event 74 + 252 trajectories stored in this event. +>>> Event 75 + 100 trajectories stored in this event. +>>> Event 76 + 116 trajectories stored in this event. +>>> Event 77 + 103 trajectories stored in this event. +>>> Event 78 + 106 trajectories stored in this event. +>>> Event 79 + 155 trajectories stored in this event. +>>> Event 80 + 89 trajectories stored in this event. +>>> Event 81 + 82 trajectories stored in this event. +>>> Event 82 + 148 trajectories stored in this event. +>>> Event 83 + 125 trajectories stored in this event. +>>> Event 84 + 118 trajectories stored in this event. +>>> Event 85 + 119 trajectories stored in this event. +>>> Event 86 + 76 trajectories stored in this event. +>>> Event 87 + 79 trajectories stored in this event. +>>> Event 88 + 95 trajectories stored in this event. +>>> Event 89 + 194 trajectories stored in this event. +>>> Event 90 + 104 trajectories stored in this event. +>>> Event 91 + 157 trajectories stored in this event. +>>> Event 92 + 120 trajectories stored in this event. +>>> Event 93 + 88 trajectories stored in this event. +>>> Event 94 + 99 trajectories stored in this event. +>>> Event 95 + 247 trajectories stored in this event. +>>> Event 96 + 236 trajectories stored in this event. +>>> Event 97 + 107 trajectories stored in this event. +>>> Event 98 + 123 trajectories stored in this event. +>>> Event 99 + 108 trajectories stored in this event. ### Run 3 start. >>> Event 0 136 trajectories stored in this event. >>> Event 1 - 201 trajectories stored in this event. ->>> Event 2 - 76 trajectories stored in this event. ->>> Event 3 - 246 trajectories stored in this event. ->>> Event 4 - 125 trajectories stored in this event. ->>> Event 5 - 388 trajectories stored in this event. ->>> Event 6 - 130 trajectories stored in this event. ->>> Event 7 - 331 trajectories stored in this event. ->>> Event 8 - 335 trajectories stored in this event. ->>> Event 9 - 107 trajectories stored in this event. ->>> Event 10 - 423 trajectories stored in this event. ->>> Event 11 - 72 trajectories stored in this event. ->>> Event 12 - 140 trajectories stored in this event. ->>> Event 13 - 838 trajectories stored in this event. ->>> Event 14 - 88 trajectories stored in this event. ->>> Event 15 - 228 trajectories stored in this event. ->>> Event 16 - 90 trajectories stored in this event. ->>> Event 17 - 85 trajectories stored in this event. ->>> Event 18 - 119 trajectories stored in this event. ->>> Event 19 - 185 trajectories stored in this event. ->>> Event 20 - 222 trajectories stored in this event. ->>> Event 21 - 150 trajectories stored in this event. ->>> Event 22 - 204 trajectories stored in this event. ->>> Event 23 - 170 trajectories stored in this event. ->>> Event 24 - 166 trajectories stored in this event. ->>> Event 25 - 118 trajectories stored in this event. ->>> Event 26 - 210 trajectories stored in this event. ->>> Event 27 - 275 trajectories stored in this event. ->>> Event 28 - 102 trajectories stored in this event. ->>> Event 29 - 119 trajectories stored in this event. ->>> Event 30 - 292 trajectories stored in this event. ->>> Event 31 - 1187 trajectories stored in this event. ->>> Event 32 - 137 trajectories stored in this event. ->>> Event 33 - 175 trajectories stored in this event. ->>> Event 34 - 195 trajectories stored in this event. ->>> Event 35 - 79 trajectories stored in this event. ->>> Event 36 - 76 trajectories stored in this event. ->>> Event 37 - 105 trajectories stored in this event. ->>> Event 38 - 569 trajectories stored in this event. ->>> Event 39 - 76 trajectories stored in this event. ->>> Event 40 - 295 trajectories stored in this event. - G4ParticleChangeForMSC::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.2e-09 - G4ParticleChangeForMSC::CheckIt - pointer : 0xbe3348 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0.953 - Stepping Control : 0 - Event Biasing : not used - Position - x (mm) : -27.4 - Position - y (mm) : -1.42 - Position - z (mm) : 1.76e+03 - Momentum Direction - x : -0.602 - Momentum Direction - y : 0.338 - Momentum Direction - z : 0.724 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.23e-09 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -27.8 - Position - y (mm) : -1.21 - Position - z (mm) : 1.76e+03 - Time (ns) : 5.86 - Proper Time (ns) : 0.00289 - Momentum Direct - x : -0.602 - Momentum Direct - y : 0.338 - Momentum Direct - z : 0.724 - Kinetic Energy (MeV): 1.11 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xb154e0 ->>> Event 41 - 213 trajectories stored in this event. ->>> Event 42 - 121 trajectories stored in this event. ->>> Event 43 - 104 trajectories stored in this event. ->>> Event 44 - 165 trajectories stored in this event. ->>> Event 45 - 460 trajectories stored in this event. ->>> Event 46 - 334 trajectories stored in this event. ->>> Event 47 - 350 trajectories stored in this event. ->>> Event 48 - 2415 trajectories stored in this event. ->>> Event 49 - 291 trajectories stored in this event. ->>> Event 50 - 676 trajectories stored in this event. ->>> Event 51 - 64 trajectories stored in this event. ->>> Event 52 - 2226 trajectories stored in this event. ->>> Event 53 - 159 trajectories stored in this event. ->>> Event 54 - 102 trajectories stored in this event. ->>> Event 55 - 124 trajectories stored in this event. ->>> Event 56 - 1035 trajectories stored in this event. ->>> Event 57 - 168 trajectories stored in this event. ->>> Event 58 - 163 trajectories stored in this event. ->>> Event 59 - 78 trajectories stored in this event. ->>> Event 60 - 91 trajectories stored in this event. ->>> Event 61 - 101 trajectories stored in this event. ->>> Event 62 - 1052 trajectories stored in this event. ->>> Event 63 - 121 trajectories stored in this event. ->>> Event 64 - 438 trajectories stored in this event. ->>> Event 65 183 trajectories stored in this event. ->>> Event 66 - 563 trajectories stored in this event. ->>> Event 67 - 117 trajectories stored in this event. ->>> Event 68 - 221 trajectories stored in this event. ->>> Event 69 - 788 trajectories stored in this event. ->>> Event 70 - 133 trajectories stored in this event. ->>> Event 71 - 234 trajectories stored in this event. ->>> Event 72 - 141 trajectories stored in this event. ->>> Event 73 - 192 trajectories stored in this event. ->>> Event 74 - 121 trajectories stored in this event. ->>> Event 75 - 876 trajectories stored in this event. - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.83e-09 - G4ParticleChange::CheckIt - pointer : 0xbe7e48 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0.293 - Track Status : Alive - True Path Length (mm) : 1.29 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 1 - Position - x (mm) : -105 - Position - y (mm) : -232 - Position - z (mm) : 4.08e+03 - Time (ns) : 13.8 - Proper Time (ns) : 0 - Momentum Direct - x : 0.429 - Momentum Direct - y : 0.366 - Momentum Direct - z : 0.826 - Kinetic Energy (MeV): 0.95 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.83e-09 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -49.2 - Position - y (mm) : -184 - Position - z (mm) : 4.19e+03 - Time (ns) : 14.2 - Proper Time (ns) : 0 - Momentum Direct - x : 0.429 - Momentum Direct - y : 0.366 - Momentum Direct - z : 0.826 - Kinetic Energy (MeV): 0.95 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xbd4fd0 ->>> Event 76 - 3500 trajectories stored in this event. ->>> Event 77 +>>> Event 2 + 157 trajectories stored in this event. +>>> Event 3 + 136 trajectories stored in this event. +>>> Event 4 + 1187 trajectories stored in this event. +>>> Event 5 + 1141 trajectories stored in this event. +>>> Event 6 + 1495 trajectories stored in this event. +>>> Event 7 + 128 trajectories stored in this event. +>>> Event 8 + 138 trajectories stored in this event. +>>> Event 9 + 626 trajectories stored in this event. +>>> Event 10 + 693 trajectories stored in this event. +>>> Event 11 + 388 trajectories stored in this event. +>>> Event 12 + 206 trajectories stored in this event. +>>> Event 13 + 366 trajectories stored in this event. +>>> Event 14 142 trajectories stored in this event. ->>> Event 78 - 662 trajectories stored in this event. ->>> Event 79 - 381 trajectories stored in this event. ->>> Event 80 - 91 trajectories stored in this event. ->>> Event 81 - 624 trajectories stored in this event. ->>> Event 82 - 1735 trajectories stored in this event. ->>> Event 83 - 473 trajectories stored in this event. ->>> Event 84 - 348 trajectories stored in this event. ->>> Event 85 - 193 trajectories stored in this event. ->>> Event 86 - 93 trajectories stored in this event. ->>> Event 87 - 416 trajectories stored in this event. ->>> Event 88 - 88 trajectories stored in this event. ->>> Event 89 - 697 trajectories stored in this event. ->>> Event 90 +>>> Event 15 104 trajectories stored in this event. ->>> Event 91 - 209 trajectories stored in this event. ->>> Event 92 - 96 trajectories stored in this event. ->>> Event 93 - 100 trajectories stored in this event. ->>> Event 94 - 124 trajectories stored in this event. ->>> Event 95 - 90 trajectories stored in this event. ->>> Event 96 +>>> Event 16 + 278 trajectories stored in this event. +>>> Event 17 + 106 trajectories stored in this event. +>>> Event 18 + 226 trajectories stored in this event. +>>> Event 19 + 263 trajectories stored in this event. +>>> Event 20 + 181 trajectories stored in this event. +>>> Event 21 + 168 trajectories stored in this event. +>>> Event 22 + 176 trajectories stored in this event. +>>> Event 23 + 97 trajectories stored in this event. +>>> Event 24 + 254 trajectories stored in this event. +>>> Event 25 + 383 trajectories stored in this event. +>>> Event 26 + 224 trajectories stored in this event. +>>> Event 27 + 302 trajectories stored in this event. +>>> Event 28 + 227 trajectories stored in this event. +>>> Event 29 + 135 trajectories stored in this event. +>>> Event 30 + 105 trajectories stored in this event. +>>> Event 31 + 230 trajectories stored in this event. +>>> Event 32 + 134 trajectories stored in this event. +>>> Event 33 108 trajectories stored in this event. +>>> Event 34 + 560 trajectories stored in this event. +>>> Event 35 + 150 trajectories stored in this event. +>>> Event 36 + 96 trajectories stored in this event. +>>> Event 37 + 801 trajectories stored in this event. +>>> Event 38 + 299 trajectories stored in this event. +>>> Event 39 + 172 trajectories stored in this event. +>>> Event 40 + 121 trajectories stored in this event. +>>> Event 41 + 822 trajectories stored in this event. +>>> Event 42 + 115 trajectories stored in this event. +>>> Event 43 + 156 trajectories stored in this event. +>>> Event 44 + 488 trajectories stored in this event. +>>> Event 45 + 119 trajectories stored in this event. +>>> Event 46 + 1464 trajectories stored in this event. +>>> Event 47 + 115 trajectories stored in this event. +>>> Event 48 + 142 trajectories stored in this event. +>>> Event 49 + 4512 trajectories stored in this event. +>>> Event 50 + 258 trajectories stored in this event. +>>> Event 51 + 476 trajectories stored in this event. +>>> Event 52 + 135 trajectories stored in this event. +>>> Event 53 + 326 trajectories stored in this event. +>>> Event 54 + 598 trajectories stored in this event. +>>> Event 55 + 263 trajectories stored in this event. +>>> Event 56 + 177 trajectories stored in this event. +>>> Event 57 + 1385 trajectories stored in this event. +>>> Event 58 + 111 trajectories stored in this event. +>>> Event 59 + 193 trajectories stored in this event. +>>> Event 60 + 1933 trajectories stored in this event. +>>> Event 61 + 492 trajectories stored in this event. +>>> Event 62 + 157 trajectories stored in this event. +>>> Event 63 + 229 trajectories stored in this event. +>>> Event 64 + 264 trajectories stored in this event. +>>> Event 65 + 107 trajectories stored in this event. +>>> Event 66 + 121 trajectories stored in this event. +>>> Event 67 + 2637 trajectories stored in this event. +>>> Event 68 + 344 trajectories stored in this event. +>>> Event 69 + 156 trajectories stored in this event. +>>> Event 70 + 554 trajectories stored in this event. +>>> Event 71 + 211 trajectories stored in this event. +>>> Event 72 + 291 trajectories stored in this event. +>>> Event 73 + 354 trajectories stored in this event. +>>> Event 74 + 110 trajectories stored in this event. +>>> Event 75 + 87 trajectories stored in this event. +>>> Event 76 + 138 trajectories stored in this event. +>>> Event 77 + 1020 trajectories stored in this event. +>>> Event 78 + 470 trajectories stored in this event. +>>> Event 79 + 836 trajectories stored in this event. +>>> Event 80 + 137 trajectories stored in this event. +>>> Event 81 + 253 trajectories stored in this event. +>>> Event 82 + 133 trajectories stored in this event. +>>> Event 83 + 143 trajectories stored in this event. +>>> Event 84 + 242 trajectories stored in this event. +>>> Event 85 + 626 trajectories stored in this event. +>>> Event 86 + 124 trajectories stored in this event. +>>> Event 87 + 278 trajectories stored in this event. +>>> Event 88 + 238 trajectories stored in this event. +>>> Event 89 + 250 trajectories stored in this event. +>>> Event 90 + 115 trajectories stored in this event. +>>> Event 91 + 316 trajectories stored in this event. +>>> Event 92 + 146 trajectories stored in this event. +>>> Event 93 + 177 trajectories stored in this event. +>>> Event 94 + 739 trajectories stored in this event. +>>> Event 95 + 251 trajectories stored in this event. +>>> Event 96 + 167 trajectories stored in this event. >>> Event 97 - 160 trajectories stored in this event. - G4ParticleChangeForMSC::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.97e-09 - G4ParticleChangeForMSC::CheckIt - pointer : 0xbd7e68 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0.708 - Stepping Control : 0 - Event Biasing : not used - Position - x (mm) : -23.3 - Position - y (mm) : 3.09 - Position - z (mm) : 952 - Momentum Direction - x : -0.67 - Momentum Direction - y : -0.34 - Momentum Direction - z : -0.66 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.97e-09 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -23.6 - Position - y (mm) : 2.96 - Position - z (mm) : 952 - Time (ns) : 3.19 - Proper Time (ns) : 0.00355 - Momentum Direct - x : -0.67 - Momentum Direct - y : -0.34 - Momentum Direct - z : -0.66 - Kinetic Energy (MeV): 0.643 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xb154e0 - G4ParticleChangeForMSC::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.77e-09 - G4ParticleChangeForMSC::CheckIt - pointer : 0xbd7e68 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0.525 - Stepping Control : 0 - Event Biasing : not used - Position - x (mm) : -23.6 - Position - y (mm) : 3.21 - Position - z (mm) : 952 - Momentum Direction - x : -0.365 - Momentum Direction - y : 0.401 - Momentum Direction - z : 0.84 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.77e-09 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -23.7 - Position - y (mm) : 3.32 - Position - z (mm) : 952 - Time (ns) : 3.19 - Proper Time (ns) : 0.00412 - Momentum Direct - x : -0.365 - Momentum Direct - y : 0.401 - Momentum Direct - z : 0.84 - Kinetic Energy (MeV): 0.475 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xb154e0 - G4ParticleChangeForMSC::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.81e-09 - G4ParticleChangeForMSC::CheckIt - pointer : 0xbd7e68 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0.431 - Stepping Control : 0 - Event Biasing : not used - Position - x (mm) : -23.9 - Position - y (mm) : 3.36 - Position - z (mm) : 952 - Momentum Direction - x : 0.136 - Momentum Direction - y : 0.792 - Momentum Direction - z : -0.596 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.81e-09 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -23.9 - Position - y (mm) : 3.46 - Position - z (mm) : 952 - Time (ns) : 3.19 - Proper Time (ns) : 0.0045 - Momentum Direct - x : 0.136 - Momentum Direct - y : 0.792 - Momentum Direct - z : -0.596 - Kinetic Energy (MeV): 0.251 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xb154e0 - G4ParticleChangeForMSC::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.41e-09 - G4ParticleChangeForMSC::CheckIt - pointer : 0xbd7e68 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0.272 - Stepping Control : 0 - Event Biasing : not used - Position - x (mm) : -24 - Position - y (mm) : 3.45 - Position - z (mm) : 952 - Momentum Direction - x : 0.394 - Momentum Direction - y : -0.916 - Momentum Direction - z : 0.0695 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.41e-09 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -24 - Position - y (mm) : 3.43 - Position - z (mm) : 952 - Time (ns) : 3.19 - Proper Time (ns) : 0.0046 - Momentum Direct - x : 0.394 - Momentum Direct - y : -0.916 - Momentum Direct - z : 0.0695 - Kinetic Energy (MeV): 0.0856 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xb154e0 - G4ParticleChangeForMSC::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.19e-09 - G4ParticleChangeForMSC::CheckIt - pointer : 0xbd7e68 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : StopButAlive - True Path Length (mm) : 0.0522 - Stepping Control : 0 - Event Biasing : not used - Position - x (mm) : -24 - Position - y (mm) : 3.43 - Position - z (mm) : 952 - Momentum Direction - x : -0.299 - Momentum Direction - y : -0.263 - Momentum Direction - z : -0.917 - G4ParticleChangeForMSC::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.26e-09 - G4ParticleChangeForMSC::CheckIt - pointer : 0xbe3348 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 2.07 - Stepping Control : 0 - Event Biasing : not used - Position - x (mm) : -22.9 - Position - y (mm) : 0.252 - Position - z (mm) : 946 - Momentum Direction - x : -0.047 - Momentum Direction - y : -0.715 - Momentum Direction - z : 0.698 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.26e-09 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -23 - Position - y (mm) : -0.827 - Position - z (mm) : 947 - Time (ns) : 3.16 - Proper Time (ns) : 0.00153 - Momentum Direct - x : -0.047 - Momentum Direct - y : -0.715 - Momentum Direct - z : 0.698 - Kinetic Energy (MeV): 2.91 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xb154e0 - G4ParticleChangeForMSC::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.28e-09 - G4ParticleChangeForMSC::CheckIt - pointer : 0xbe3348 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 1.67 - Stepping Control : 0 - Event Biasing : not used - Position - x (mm) : -22.4 - Position - y (mm) : -0.95 - Position - z (mm) : 947 - Momentum Direction - x : -0.125 - Momentum Direction - y : -0.992 - Momentum Direction - z : 0.0102 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.28e-09 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -22.6 - Position - y (mm) : -2.18 - Position - z (mm) : 947 - Time (ns) : 3.17 - Proper Time (ns) : 0.00228 - Momentum Direct - x : -0.125 - Momentum Direct - y : -0.992 - Momentum Direct - z : 0.0102 - Kinetic Energy (MeV): 2.37 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xb154e0 - G4ParticleChangeForMSC::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.07e-09 - G4ParticleChangeForMSC::CheckIt - pointer : 0xbe3348 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 1.4 - Stepping Control : 0 - Event Biasing : not used - Position - x (mm) : -23.1 - Position - y (mm) : -2.12 - Position - z (mm) : 947 - Momentum Direction - x : 0.181 - Momentum Direction - y : -0.963 - Momentum Direction - z : 0.199 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.07e-09 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -22.9 - Position - y (mm) : -3.07 - Position - z (mm) : 947 - Time (ns) : 3.17 - Proper Time (ns) : 0.00302 - Momentum Direct - x : 0.181 - Momentum Direct - y : -0.963 - Momentum Direct - z : 0.199 - Kinetic Energy (MeV): 1.85 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xb154e0 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.37e-09 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -26.7 - Position - y (mm) : 4.4 - Position - z (mm) : 998 - Time (ns) : 3.33 - Proper Time (ns) : 0.000719 - Momentum Direct - x : -0.221 - Momentum Direct - y : -0.401 - Momentum Direct - z : 0.889 - Kinetic Energy (MeV): 1.52 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xb154e0 - G4ParticleChangeForMSC::CheckIt : the Momentum Change is not unit vector !! - Difference: 2.78e-09 - G4ParticleChangeForMSC::CheckIt - pointer : 0xbe3348 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0.977 - Stepping Control : 0 - Event Biasing : not used - Position - x (mm) : -26.3 - Position - y (mm) : 4.42 - Position - z (mm) : 998 - Momentum Direction - x : -0.612 - Momentum Direction - y : -0.58 - Momentum Direction - z : 0.538 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 2.78e-09 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -26.7 - Position - y (mm) : 4.05 - Position - z (mm) : 998 - Time (ns) : 3.33 - Proper Time (ns) : 0.00141 - Momentum Direct - x : -0.612 - Momentum Direct - y : -0.58 - Momentum Direct - z : 0.538 - Kinetic Energy (MeV): 1.15 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xb154e0 - G4ParticleChangeForMSC::CheckIt : the Momentum Change is not unit vector !! - Difference: 6.2e-09 - G4ParticleChangeForMSC::CheckIt - pointer : 0xbe3348 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 2.09 - Stepping Control : 0 - Event Biasing : not used - Position - x (mm) : -115 - Position - y (mm) : 302 - Position - z (mm) : 2.52e+03 - Momentum Direction - x : 0.59 - Momentum Direction - y : 0.185 - Momentum Direction - z : 0.786 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 6.2e-09 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -115 - Position - y (mm) : 302 - Position - z (mm) : 2.52e+03 - Time (ns) : 8.53 - Proper Time (ns) : 0.00231 - Momentum Direct - x : 0.59 - Momentum Direct - y : 0.185 - Momentum Direct - z : 0.786 - Kinetic Energy (MeV): 2.64 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xb154e0 - G4ParticleChangeForMSC::CheckIt : the Momentum Change is not unit vector !! - Difference: 5.6e-09 - G4ParticleChangeForMSC::CheckIt - pointer : 0xbe3348 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 1.53 - Stepping Control : 0 - Event Biasing : not used - Position - x (mm) : -115 - Position - y (mm) : 303 - Position - z (mm) : 2.52e+03 - Momentum Direction - x : 0.578 - Momentum Direction - y : 0.802 - Momentum Direction - z : 0.147 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 5.6e-09 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -114 - Position - y (mm) : 303 - Position - z (mm) : 2.52e+03 - Time (ns) : 8.53 - Proper Time (ns) : 0.00305 - Momentum Direct - x : 0.578 - Momentum Direct - y : 0.802 - Momentum Direct - z : 0.147 - Kinetic Energy (MeV): 2.09 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xb154e0 - G4ParticleChangeForMSC::CheckIt : the Momentum Change is not unit vector !! - Difference: 2.19e-09 - G4ParticleChangeForMSC::CheckIt - pointer : 0xbe3348 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 1.26 - Stepping Control : 0 - Event Biasing : not used - Position - x (mm) : -114 - Position - y (mm) : 303 - Position - z (mm) : 2.52e+03 - Momentum Direction - x : 0.74 - Momentum Direction - y : 0.395 - Momentum Direction - z : 0.545 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 2.19e-09 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -113 - Position - y (mm) : 304 - Position - z (mm) : 2.53e+03 - Time (ns) : 8.53 - Proper Time (ns) : 0.00377 - Momentum Direct - x : 0.74 - Momentum Direct - y : 0.395 - Momentum Direct - z : 0.545 - Kinetic Energy (MeV): 1.5 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xb154e0 - G4ParticleChangeForMSC::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.08e-09 - G4ParticleChangeForMSC::CheckIt - pointer : 0xbe3348 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0.769 - Stepping Control : 0 - Event Biasing : not used - Position - x (mm) : -112 - Position - y (mm) : 304 - Position - z (mm) : 2.53e+03 - Momentum Direction - x : -0.653 - Momentum Direction - y : -0.349 - Momentum Direction - z : 0.672 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.08e-09 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -113 - Position - y (mm) : 304 - Position - z (mm) : 2.53e+03 - Time (ns) : 8.54 - Proper Time (ns) : 0.00506 - Momentum Direct - x : -0.653 - Momentum Direct - y : -0.349 - Momentum Direct - z : 0.672 - Kinetic Energy (MeV): 0.571 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xb154e0 - G4ParticleChangeForMSC::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.39e-09 - G4ParticleChangeForMSC::CheckIt - pointer : 0xbe3348 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0.487 - Stepping Control : 0 - Event Biasing : not used - Position - x (mm) : -112 - Position - y (mm) : 304 - Position - z (mm) : 2.53e+03 - Momentum Direction - x : -0.208 - Momentum Direction - y : -0.0524 - Momentum Direction - z : -0.977 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.39e-09 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -113 - Position - y (mm) : 304 - Position - z (mm) : 2.53e+03 - Time (ns) : 8.54 - Proper Time (ns) : 0.00557 - Momentum Direct - x : -0.208 - Momentum Direct - y : -0.0524 - Momentum Direct - z : -0.977 - Kinetic Energy (MeV): 0.404 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xb154e0 - G4ParticleChangeForMSC::CheckIt : the Momentum Change is not unit vector !! - Difference: 3.98e-09 - G4ParticleChangeForMSC::CheckIt - pointer : 0xbe3348 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0.392 - Stepping Control : 0 - Event Biasing : not used - Position - x (mm) : -113 - Position - y (mm) : 304 - Position - z (mm) : 2.53e+03 - Momentum Direction - x : 0.579 - Momentum Direction - y : -0.352 - Momentum Direction - z : 0.736 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 3.98e-09 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -113 - Position - y (mm) : 304 - Position - z (mm) : 2.53e+03 - Time (ns) : 8.54 - Proper Time (ns) : 0.00579 - Momentum Direct - x : 0.579 - Momentum Direct - y : -0.352 - Momentum Direct - z : 0.736 - Kinetic Energy (MeV): 0.158 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xb154e0 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.58e-09 - G4ParticleChange::CheckIt - pointer : 0xbe7e48 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0.0286 - Track Status : Alive - True Path Length (mm) : 11.2 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 1 - Position - x (mm) : -26.8 - Position - y (mm) : 4.68 - Position - z (mm) : 997 - Time (ns) : 3.33 - Proper Time (ns) : 0 - Momentum Direct - x : 0.258 - Momentum Direct - y : 0.792 - Momentum Direct - z : 0.554 - Kinetic Energy (MeV): 0.208 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.58e-09 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -25.4 - Position - y (mm) : 9.05 - Position - z (mm) : 1e+03 - Time (ns) : 3.35 - Proper Time (ns) : 0 - Momentum Direct - x : 0.258 - Momentum Direct - y : 0.792 - Momentum Direct - z : 0.554 - Kinetic Energy (MeV): 0.208 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xb154e0 - G4ParticleChangeForMSC::CheckIt : the Momentum Change is not unit vector !! - Difference: 5.42e-09 - G4ParticleChangeForMSC::CheckIt - pointer : 0xbd7e68 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 5.64 - Stepping Control : 0 - Event Biasing : not used - Position - x (mm) : -108 - Position - y (mm) : 65.8 - Position - z (mm) : 1.81e+03 - Momentum Direction - x : 0.481 - Momentum Direction - y : -0.202 - Momentum Direction - z : 0.853 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 5.42e-09 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -106 - Position - y (mm) : 64.9 - Position - z (mm) : 1.82e+03 - Time (ns) : 6.08 - Proper Time (ns) : 0.00481 - Momentum Direct - x : 0.481 - Momentum Direct - y : -0.202 - Momentum Direct - z : 0.853 - Kinetic Energy (MeV): 8.32 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xb154e0 - G4ParticleChangeForMSC::CheckIt : the Momentum Change is not unit vector !! - Difference: 9.7e-09 - G4ParticleChangeForMSC::CheckIt - pointer : 0xbd7e68 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 4.42 - Stepping Control : 0 - Event Biasing : not used - Position - x (mm) : -106 - Position - y (mm) : 63.9 - Position - z (mm) : 1.82e+03 - Momentum Direction - x : 0.906 - Momentum Direction - y : -0.132 - Momentum Direction - z : 0.403 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 9.7e-09 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -103 - Position - y (mm) : 63.4 - Position - z (mm) : 1.82e+03 - Time (ns) : 6.1 - Proper Time (ns) : 0.00562 - Momentum Direct - x : 0.906 - Momentum Direct - y : -0.132 - Momentum Direct - z : 0.403 - Kinetic Energy (MeV): 6.66 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xb154e0 - G4ParticleChangeForMSC::CheckIt : the Momentum Change is not unit vector !! - Difference: 1e-08 - G4ParticleChangeForMSC::CheckIt - pointer : 0xbd7e68 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 3.59 - Stepping Control : 0 - Event Biasing : not used - Position - x (mm) : -103 - Position - y (mm) : 64.2 - Position - z (mm) : 1.82e+03 - Momentum Direction - x : 0.934 - Momentum Direction - y : -0.0628 - Momentum Direction - z : 0.352 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1e-08 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -100 - Position - y (mm) : 64 - Position - z (mm) : 1.82e+03 - Time (ns) : 6.11 - Proper Time (ns) : 0.00643 - Momentum Direct - x : 0.934 - Momentum Direct - y : -0.0628 - Momentum Direct - z : 0.352 - Kinetic Energy (MeV): 5.42 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xb154e0 - G4ParticleChangeForMSC::CheckIt : the Momentum Change is not unit vector !! - Difference: 9.85e-09 - G4ParticleChangeForMSC::CheckIt - pointer : 0xbd7e68 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 2.97 - Stepping Control : 0 - Event Biasing : not used - Position - x (mm) : -100 - Position - y (mm) : 64.3 - Position - z (mm) : 1.82e+03 - Momentum Direction - x : 0.932 - Momentum Direction - y : 0.0444 - Momentum Direction - z : 0.359 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 9.85e-09 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -99.4 - Position - y (mm) : 64.3 - Position - z (mm) : 1.82e+03 - Time (ns) : 6.11 - Proper Time (ns) : 0.00672 - Momentum Direct - x : 0.932 - Momentum Direct - y : 0.0444 - Momentum Direct - z : 0.359 - Kinetic Energy (MeV): 4.3 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xb154e0 - G4ParticleChangeForMSC::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.05e-08 - G4ParticleChangeForMSC::CheckIt - pointer : 0xbd7e68 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0.839 - Stepping Control : 0 - Event Biasing : not used - Position - x (mm) : -99.3 - Position - y (mm) : 64.3 - Position - z (mm) : 1.82e+03 - Momentum Direction - x : 0.982 - Momentum Direction - y : 0.114 - Momentum Direction - z : 0.149 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.05e-08 - G4ParticleChange::CheckIt - pointer : 0xbe07e0 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 1 - Pointer to 2ndaries : 0xd576f0 - (Showed only 1st one) - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0.839 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0.000511 - Charge (eplus) : 1 - Position - x (mm) : -99.3 - Position - y (mm) : 64.3 - Position - z (mm) : 1.82e+03 - Time (ns) : 6.11 - Proper Time (ns) : 0.00672 - Momentum Direct - x : 0.982 - Momentum Direct - y : 0.114 - Momentum Direct - z : 0.149 - Kinetic Energy (MeV): 3.7 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.05e-08 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -97.4 - Position - y (mm) : 64.5 - Position - z (mm) : 1.82e+03 - Time (ns) : 6.11 - Proper Time (ns) : 0.00751 - Momentum Direct - x : 0.982 - Momentum Direct - y : 0.114 - Momentum Direct - z : 0.149 - Kinetic Energy (MeV): 3.7 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xb154e0 - G4ParticleChangeForMSC::CheckIt : the Momentum Change is not unit vector !! - Difference: 6.5e-09 - G4ParticleChangeForMSC::CheckIt - pointer : 0xbd7e68 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 2.11 - Stepping Control : 0 - Event Biasing : not used - Position - x (mm) : -97.3 - Position - y (mm) : 63.9 - Position - z (mm) : 1.82e+03 - Momentum Direction - x : 0.866 - Momentum Direction - y : 0.00496 - Momentum Direction - z : 0.5 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 6.5e-09 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -95.9 - Position - y (mm) : 63.9 - Position - z (mm) : 1.82e+03 - Time (ns) : 6.12 - Proper Time (ns) : 0.0083 - Momentum Direct - x : 0.866 - Momentum Direct - y : 0.00496 - Momentum Direct - z : 0.5 - Kinetic Energy (MeV): 2.98 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xb154e0 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1e-08 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -98 - Position - y (mm) : 64.1 - Position - z (mm) : 1.82e+03 - Time (ns) : 6.11 - Proper Time (ns) : 0 - Momentum Direct - x : 0.987 - Momentum Direct - y : -0.109 - Momentum Direct - z : 0.119 - Kinetic Energy (MeV): 0.0353 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xb154e0 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.6e-09 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -110 - Position - y (mm) : 63.8 - Position - z (mm) : 1.8e+03 - Time (ns) : 6.03 - Proper Time (ns) : 0 - Momentum Direct - x : 0.124 - Momentum Direct - y : 0.612 - Momentum Direct - z : 0.781 - Kinetic Energy (MeV): 0.0729 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xb154e0 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.3e-09 - G4ParticleChange::CheckIt - pointer : 0xbe7e48 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0.015 - Track Status : Alive - True Path Length (mm) : 8.23 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 1 - Position - x (mm) : -110 - Position - y (mm) : 63.8 - Position - z (mm) : 1.8e+03 - Time (ns) : 6.03 - Proper Time (ns) : 0 - Momentum Direct - x : 0.0508 - Momentum Direct - y : -0.0816 - Momentum Direct - z : -0.995 - Kinetic Energy (MeV): 0.0579 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.3e-09 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -109 - Position - y (mm) : 63.2 - Position - z (mm) : 1.79e+03 - Time (ns) : 6.05 - Proper Time (ns) : 0 - Momentum Direct - x : 0.0508 - Momentum Direct - y : -0.0816 - Momentum Direct - z : -0.995 - Kinetic Energy (MeV): 0.0579 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xb154e0 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.3e-09 - G4ParticleChange::CheckIt - pointer : 0xbe7e48 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0.0071 - Track Status : Alive - True Path Length (mm) : 8.97 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 1 - Position - x (mm) : -25.3 - Position - y (mm) : 0.237 - Position - z (mm) : 958 - Time (ns) : 3.2 - Proper Time (ns) : 0 - Momentum Direct - x : -0.637 - Momentum Direct - y : 0.144 - Momentum Direct - z : -0.758 - Kinetic Energy (MeV): 0.0425 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.3e-09 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -26.7 - Position - y (mm) : 0.562 - Position - z (mm) : 956 - Time (ns) : 3.2 - Proper Time (ns) : 0 - Momentum Direct - x : -0.637 - Momentum Direct - y : 0.144 - Momentum Direct - z : -0.758 - Kinetic Energy (MeV): 0.0425 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xb154e0 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.75e-09 - G4ParticleChange::CheckIt - pointer : 0xbe7e48 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 1 - Pointer to 2ndaries : 0xb0edf8 - (Showed only 1st one) - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 212 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 1 - Position - x (mm) : 28.7 - Position - y (mm) : -60.2 - Position - z (mm) : 1.23e+03 - Time (ns) : 4.14 - Proper Time (ns) : 0 - Momentum Direct - x : -0.325 - Momentum Direct - y : 0.788 - Momentum Direct - z : -0.522 - Kinetic Energy (MeV): 0.228 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.75e-09 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -99 - Position - y (mm) : 250 - Position - z (mm) : 1.02e+03 - Time (ns) : 5.45 - Proper Time (ns) : 0 - Momentum Direct - x : -0.325 - Momentum Direct - y : 0.788 - Momentum Direct - z : -0.522 - Kinetic Energy (MeV): 0.228 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xbd4fd0 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.75e-09 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -99.2 - Position - y (mm) : 250 - Position - z (mm) : 1.02e+03 - Time (ns) : 5.45 - Proper Time (ns) : 0 - Momentum Direct - x : -0.325 - Momentum Direct - y : 0.788 - Momentum Direct - z : -0.522 - Kinetic Energy (MeV): 0.228 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xbd50a8 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.75e-09 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -721 - Position - y (mm) : 1.76e+03 - Position - z (mm) : 25 - Time (ns) : 11.8 - Proper Time (ns) : 0 - Momentum Direct - x : -0.325 - Momentum Direct - y : 0.788 - Momentum Direct - z : -0.522 - Kinetic Energy (MeV): 0.228 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xbd4fd0 - G4ParticleChange::CheckIt : the Momentum Change is not unit vector !! - Difference: 1.75e-09 - G4ParticleChange::CheckIt - pointer : 0xbd3b88 - ----------------------------------------------- - G4ParticleChange Information - ----------------------------------------------- - # of 2ndaries : 0 - ----------------------------------------------- - Energy Deposit (MeV): 0 - Track Status : Alive - True Path Length (mm) : 0 - Stepping Control : 0 - Event Biasing : not used - Mass (GeV) : 0 - Charge (eplus) : 0 - Position - x (mm) : -1.85e+03 - Position - y (mm) : 4.5e+03 - Position - z (mm) : -1.79e+03 - Time (ns) : 23.4 - Proper Time (ns) : 0 - Momentum Direct - x : -0.325 - Momentum Direct - y : 0.788 - Momentum Direct - z : -0.522 - Kinetic Energy (MeV): 0.228 - Polarization - x : 0 - Polarization - y : 0 - Polarization - z : 0 - Touchable (pointer) : 0xbd50a8 + 164 trajectories stored in this event. >>> Event 98 - 1151 trajectories stored in this event. + 353 trajectories stored in this event. >>> Event 99 - 269 trajectories stored in this event. + 221 trajectories stored in this event. diff --git a/examples/novice/N02/include/ExN02ChamberParameterisation.hh b/examples/novice/N02/include/ExN02ChamberParameterisation.hh index 2e2847d1e8..16aa3928a2 100644 --- a/examples/novice/N02/include/ExN02ChamberParameterisation.hh +++ b/examples/novice/N02/include/ExN02ChamberParameterisation.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN02ChamberParameterisation.hh,v 1.2 1999/12/15 14:49:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // A parameterisation that describes a series of boxes along Z diff --git a/examples/novice/N02/include/ExN02DetectorConstruction.hh b/examples/novice/N02/include/ExN02DetectorConstruction.hh index c04fdae547..e2cedbd642 100644 --- a/examples/novice/N02/include/ExN02DetectorConstruction.hh +++ b/examples/novice/N02/include/ExN02DetectorConstruction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN02DetectorConstruction.hh,v 1.2 1999/12/15 14:49:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N02/include/ExN02DetectorMessenger.hh b/examples/novice/N02/include/ExN02DetectorMessenger.hh index 3a8d7c63a9..57b6bd6136 100644 --- a/examples/novice/N02/include/ExN02DetectorMessenger.hh +++ b/examples/novice/N02/include/ExN02DetectorMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN02DetectorMessenger.hh,v 1.2 1999/12/15 14:49:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N02/include/ExN02EventAction.hh b/examples/novice/N02/include/ExN02EventAction.hh index b4c58a1670..aa1f7b1bf6 100644 --- a/examples/novice/N02/include/ExN02EventAction.hh +++ b/examples/novice/N02/include/ExN02EventAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN02EventAction.hh,v 1.3 1999/12/15 14:49:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N02/include/ExN02MagneticField.hh b/examples/novice/N02/include/ExN02MagneticField.hh index 6e407122b4..1f1158529d 100644 --- a/examples/novice/N02/include/ExN02MagneticField.hh +++ b/examples/novice/N02/include/ExN02MagneticField.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN02MagneticField.hh,v 1.2 1999/12/15 14:49:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // A class for control of the Magnetic Field of the detector. diff --git a/examples/novice/N02/include/ExN02PhysicsList.hh b/examples/novice/N02/include/ExN02PhysicsList.hh index fec92f774f..8fd4fc69b4 100644 --- a/examples/novice/N02/include/ExN02PhysicsList.hh +++ b/examples/novice/N02/include/ExN02PhysicsList.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: ExN02PhysicsList.hh,v 1.4 1999/12/15 14:49:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: ExN02PhysicsList.hh,v 1.6 2000/02/29 12:01:52 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/examples/novice/N02/include/ExN02PrimaryGeneratorAction.hh b/examples/novice/N02/include/ExN02PrimaryGeneratorAction.hh index 36153a3250..e376962069 100644 --- a/examples/novice/N02/include/ExN02PrimaryGeneratorAction.hh +++ b/examples/novice/N02/include/ExN02PrimaryGeneratorAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN02PrimaryGeneratorAction.hh,v 1.2 1999/12/15 14:49:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N02/include/ExN02PrimaryGeneratorMessenger.hh b/examples/novice/N02/include/ExN02PrimaryGeneratorMessenger.hh index a1f5e5004f..9d55fa6eac 100644 --- a/examples/novice/N02/include/ExN02PrimaryGeneratorMessenger.hh +++ b/examples/novice/N02/include/ExN02PrimaryGeneratorMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN02PrimaryGeneratorMessenger.hh,v 1.2 1999/12/15 14:49:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N02/include/ExN02RunAction.hh b/examples/novice/N02/include/ExN02RunAction.hh index 77cc6a6c02..94374df1e0 100644 --- a/examples/novice/N02/include/ExN02RunAction.hh +++ b/examples/novice/N02/include/ExN02RunAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN02RunAction.hh,v 1.3 1999/12/15 14:49:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N02/include/ExN02SteppingAction.hh b/examples/novice/N02/include/ExN02SteppingAction.hh index 995affe692..b78ee40e20 100644 --- a/examples/novice/N02/include/ExN02SteppingAction.hh +++ b/examples/novice/N02/include/ExN02SteppingAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN02SteppingAction.hh,v 1.3 1999/12/15 14:49:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N02/include/ExN02SteppingVerbose.hh b/examples/novice/N02/include/ExN02SteppingVerbose.hh index 154ab547e2..edd68dda08 100644 --- a/examples/novice/N02/include/ExN02SteppingVerbose.hh +++ b/examples/novice/N02/include/ExN02SteppingVerbose.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: ExN02SteppingVerbose.hh,v 1.2 1999/12/15 14:49:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: ExN02SteppingVerbose.hh,v 1.3 2000/02/28 17:58:49 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -15,12 +15,7 @@ // // 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) +// It inherits from G4SteppingVerbose // //--------------------------------------------------------------- diff --git a/examples/novice/N02/include/ExN02TrackerHit.hh b/examples/novice/N02/include/ExN02TrackerHit.hh index 07674a28d0..77df4b1b73 100644 --- a/examples/novice/N02/include/ExN02TrackerHit.hh +++ b/examples/novice/N02/include/ExN02TrackerHit.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN02TrackerHit.hh,v 1.2 1999/12/15 14:49:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef ExN02TrackerHit_h diff --git a/examples/novice/N02/include/ExN02TrackerSD.hh b/examples/novice/N02/include/ExN02TrackerSD.hh index 5b9ca4557f..d60a32adb1 100644 --- a/examples/novice/N02/include/ExN02TrackerSD.hh +++ b/examples/novice/N02/include/ExN02TrackerSD.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN02TrackerSD.hh,v 1.2 1999/12/15 14:49:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef ExN02TrackerSD_h diff --git a/examples/novice/N02/include/ExN02VisManager.hh b/examples/novice/N02/include/ExN02VisManager.hh index 7570dc6994..f443ee751d 100644 --- a/examples/novice/N02/include/ExN02VisManager.hh +++ b/examples/novice/N02/include/ExN02VisManager.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN02VisManager.hh,v 1.3 1999/12/15 14:49:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N02/src/ExN02ChamberParameterisation.cc b/examples/novice/N02/src/ExN02ChamberParameterisation.cc index 71d1620367..36e7d53a8e 100644 --- a/examples/novice/N02/src/ExN02ChamberParameterisation.cc +++ b/examples/novice/N02/src/ExN02ChamberParameterisation.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN02ChamberParameterisation.cc,v 1.2 1999/12/15 14:49:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "ExN02ChamberParameterisation.hh" diff --git a/examples/novice/N02/src/ExN02DetectorConstruction.cc b/examples/novice/N02/src/ExN02DetectorConstruction.cc index ec13bc68b9..ccffb2fc72 100644 --- a/examples/novice/N02/src/ExN02DetectorConstruction.cc +++ b/examples/novice/N02/src/ExN02DetectorConstruction.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: ExN02DetectorConstruction.cc,v 1.3 1999/12/15 14:49:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: ExN02DetectorConstruction.cc,v 1.4 2000/05/15 14:02:10 japost Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // @@ -96,7 +96,7 @@ G4VPhysicalVolume* ExN02DetectorConstruction::Construct() //--------- Sizes of the principal geometrical components (solids) --------- - fDetectorLength = 750.*cm ; // Full length of the detector + fDetectorLength = 1250.*cm ; // Full length of the detector fTrackerLength = 500. * cm; // Full length of the Tracker fTargetLength = 5.0 * cm; // Full length of the Target diff --git a/examples/novice/N02/src/ExN02DetectorMessenger.cc b/examples/novice/N02/src/ExN02DetectorMessenger.cc index b3789837a0..28a4d15b35 100644 --- a/examples/novice/N02/src/ExN02DetectorMessenger.cc +++ b/examples/novice/N02/src/ExN02DetectorMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN02DetectorMessenger.cc,v 1.2 1999/12/15 14:49:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N02/src/ExN02EventAction.cc b/examples/novice/N02/src/ExN02EventAction.cc index a56967931d..312a2b8487 100644 --- a/examples/novice/N02/src/ExN02EventAction.cc +++ b/examples/novice/N02/src/ExN02EventAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN02EventAction.cc,v 1.4 2000/01/24 14:45:51 stesting Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N02/src/ExN02MagneticField.cc b/examples/novice/N02/src/ExN02MagneticField.cc index e2ebd104af..31a7ab2d8d 100644 --- a/examples/novice/N02/src/ExN02MagneticField.cc +++ b/examples/novice/N02/src/ExN02MagneticField.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN02MagneticField.cc,v 1.2 1999/12/15 14:49:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // User Field class implementation. diff --git a/examples/novice/N02/src/ExN02PhysicsList.cc b/examples/novice/N02/src/ExN02PhysicsList.cc index 4f662449b4..c47d9ab460 100644 --- a/examples/novice/N02/src/ExN02PhysicsList.cc +++ b/examples/novice/N02/src/ExN02PhysicsList.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: ExN02PhysicsList.cc,v 1.4 1999/12/15 14:49:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: ExN02PhysicsList.cc,v 1.7 2000/02/29 12:03:30 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -97,7 +97,6 @@ void ExN02PhysicsList::ConstructMesons() G4PionZero::PionZeroDefinition(); G4Eta::EtaDefinition(); G4EtaPrime::EtaPrimeDefinition(); - G4RhoZero::RhoZeroDefinition(); G4KaonPlus::KaonPlusDefinition(); G4KaonMinus::KaonMinusDefinition(); G4KaonZero::KaonZeroDefinition(); diff --git a/examples/novice/N02/src/ExN02PrimaryGeneratorAction.cc b/examples/novice/N02/src/ExN02PrimaryGeneratorAction.cc index a8fc948b39..9f48a5deca 100644 --- a/examples/novice/N02/src/ExN02PrimaryGeneratorAction.cc +++ b/examples/novice/N02/src/ExN02PrimaryGeneratorAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN02PrimaryGeneratorAction.cc,v 1.2 1999/12/15 14:49:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // $ Id: $ diff --git a/examples/novice/N02/src/ExN02PrimaryGeneratorMessenger.cc b/examples/novice/N02/src/ExN02PrimaryGeneratorMessenger.cc index 71840362f0..5adbae6ef9 100644 --- a/examples/novice/N02/src/ExN02PrimaryGeneratorMessenger.cc +++ b/examples/novice/N02/src/ExN02PrimaryGeneratorMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN02PrimaryGeneratorMessenger.cc,v 1.2 1999/12/15 14:49:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N02/src/ExN02RunAction.cc b/examples/novice/N02/src/ExN02RunAction.cc index 5003e07df7..e47dddbe82 100644 --- a/examples/novice/N02/src/ExN02RunAction.cc +++ b/examples/novice/N02/src/ExN02RunAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN02RunAction.cc,v 1.3 1999/12/15 14:49:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N02/src/ExN02SteppingAction.cc b/examples/novice/N02/src/ExN02SteppingAction.cc index 53a45ec1b8..e6d371adcf 100644 --- a/examples/novice/N02/src/ExN02SteppingAction.cc +++ b/examples/novice/N02/src/ExN02SteppingAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN02SteppingAction.cc,v 1.3 1999/12/15 14:49:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N02/src/ExN02SteppingVerbose.cc b/examples/novice/N02/src/ExN02SteppingVerbose.cc index ad3940db0a..1897df6607 100644 --- a/examples/novice/N02/src/ExN02SteppingVerbose.cc +++ b/examples/novice/N02/src/ExN02SteppingVerbose.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: ExN02SteppingVerbose.cc,v 1.2 1999/12/15 14:49:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: ExN02SteppingVerbose.cc,v 1.3 2000/02/28 17:58:50 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -15,10 +15,6 @@ // // Description: // Implementation of the ExN02SteppingVerbose 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) // //--------------------------------------------------------------- diff --git a/examples/novice/N02/src/ExN02TrackerHit.cc b/examples/novice/N02/src/ExN02TrackerHit.cc index e3dd24fddb..faebcfcb34 100644 --- a/examples/novice/N02/src/ExN02TrackerHit.cc +++ b/examples/novice/N02/src/ExN02TrackerHit.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN02TrackerHit.cc,v 1.2 1999/12/15 14:49:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "ExN02TrackerHit.hh" diff --git a/examples/novice/N02/src/ExN02TrackerSD.cc b/examples/novice/N02/src/ExN02TrackerSD.cc index 821e5d1c40..f2ce27063e 100644 --- a/examples/novice/N02/src/ExN02TrackerSD.cc +++ b/examples/novice/N02/src/ExN02TrackerSD.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN02TrackerSD.cc,v 1.2 1999/12/15 14:49:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "ExN02TrackerSD.hh" diff --git a/examples/novice/N02/src/ExN02VisManager.cc b/examples/novice/N02/src/ExN02VisManager.cc index 672fe1881e..9657e04019 100644 --- a/examples/novice/N02/src/ExN02VisManager.cc +++ b/examples/novice/N02/src/ExN02VisManager.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN02VisManager.cc,v 1.3 1999/12/15 14:49:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 24th January 1998. diff --git a/examples/novice/N03/History b/examples/novice/N03/History index dee9a55c0a..7cd82e2107 100644 --- a/examples/novice/N03/History +++ b/examples/novice/N03/History @@ -1,4 +1,4 @@ -$Id: History,v 1.9 1999/11/09 21:40:43 stanaka Exp $ +$Id: History,v 1.23 2000/06/17 12:28:17 stesting Exp $ -------------------------------------------------- ========================================================= @@ -15,6 +15,71 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +June 17, 2000 John Allison (exampleN03-V01-01-08) +- Updated exampleN03.out for geant4-01-01-ref-06. + +14 June 2000 John Allison (exampleN03-V01-01-07) +- Added #ifdef G4UI_USE_XM to protect #include "G4UIXm.hh" in exampleN03.cc. +- Limit output in gui.mac (Guy Barrand). + +13 June 2000 Guy Barrand (exampleN03-V01-01-06) +- exampleN03.cc, prerunN03.mac : + put execution of the gui.mac in exampleN03.cc + with an #ifdef G4UI_USE_XM protection and + remove it from preunN03.mac. This will gurantee + no effect of the gui.mac on other G4UI sessions. +- g4Xt.xrm : add a resource to limit contant + of XmText widgets (in particular the one used + to dump G4cout things). +- exaN03Vis5.6.mac : remove commands that are + in fact not supported by Xo and Invnetor + drivers. + +09 June 2000 Satoshi Tanaka (exampleN03-V01-01-05) : +- In prerunN03, + < /vis/scene/include/trajectories + --- + > /vis/scene/add/trajectories +09 June 2000 Guy Barrand (exampleN03-V01-01-04) : +- correct some comments in exN03Vis5,6.mac. +- add gui.mac. +- trigger execution of gui.mac at end of prerunN03.mac. + +09 June 2000 Guy Barrand (exampleN03-V01-01-02) : +- add exN03Vis4,5.mac for a simple example + of OPACS/Xo and Inventor driver. + +09th June 2000 Satoshi Tanaka (exampleN03-V01-01-01) +- exNO3VisX.mac's are updated corresponding to recent + development of the new vis commands: + (1) Compound commands are used wherever possible. + (2) Ordering of commands and comments are rewritten + to improve readability. + (3) exN03Vis4.mac is created to demonstrate + the compound command "/vis/specify". + +05-06-00 M.Maire +- cleanup of ExN03EventAction to limit the amount of output with + exampleN03.large_N.in + +20th May 2000 Satoshi Tanaka +- exNO3VisX.mac's are updated corresponding to development + of the new vis commands. +- The command /vis/add/trajectories is added to exNO3VisX.mac's. + Instead the C++ method "DrawTrajectory()" is removed from + ExN03EventAction::EndOfEventAction(). + +19th May 2000 Satoshi Tanaka +- g4.xrm (Xt resource file for UI) is renamed to g4Xt.xrm + +11th May 2000 Satoshi Tanaka (examples-V01-01-03) +- Comments in examples/novice/N03/exN03VisX.mac 's are + updated for DAWN Version 3.85a +- Small changes to comments in SteppingVerbose. + +25-02-00 H.Kurashige +- removed RhoZeroDefinition from PhysicsList + 10th November 1999 Satoshi Tanaka (examples-V00-01-12) - novice/N03 is updated - Vis macros for N03 are updated for the latest updation of vis commands diff --git a/examples/novice/N03/exN03Vis0.mac b/examples/novice/N03/exN03Vis0.mac index dee277bf87..8790479258 100644 --- a/examples/novice/N03/exN03Vis0.mac +++ b/examples/novice/N03/exN03Vis0.mac @@ -4,15 +4,18 @@ # AUTHOR(S): Satoshi Tanaka # # # # DATE: November 10, 1999 # +# May 20, 2000 # +# June 06, 2000 # # # # CONTENTS: A simplest macro to demonstrate visualization of # # detector geometry and events # # # -# USAGE: % $G4BINDIR/exampleN03 exN03Vis0.mac # +# USAGE: % $G4BINDIR/exampleN03 # +# Idle> /control/execute exN03Vis0.mac # # # # REQUIRED PLATFORMS & SOFTWARES: Unix, X-window, OpenGL, # -# DAWN (version 3.80 of after) # -# Ghostview, Tcl/Tk # +# DAWN (version 3.80 or after) # +# gv (Ghostview), Tcl/Tk # # # # ENVIRONMENTAL VARIABLES (C-MACROS) FOR INSTALLATION: # # (See geant4/source/visualization/README for details.) # @@ -28,68 +31,83 @@ # % setenv G4VIS_USE_DAWNFILE 1 # # # # Addional Notes: # +# The compound command "/vis/open " # +# is equivalent to the following set of commands: # +# # +# /vis/sceneHandler/create $1 # +# /vis/viewer/create # +# # +# The compound command "/vis/drawVolume " # +# is equivalent to the following set of commands: # +# # +# /vis/scene/create # +# /vis/scene/add/volume $1 # +# /vis/sceneHandler/attach # +# /vis/viewer/refresh # +# /vis/viewer/update # # # ####################################################################### -##################################### +############################################## # Visualization of detector geometry -# with the OGLSX driver -##################################### - -# Create "scene-0" -/vis/scene/create +# with the OGLIX (OpenGL Immediate X) driver +############################################## # Invoke the OGLIX driver -/vis/sceneHandler/create OGLIX -/vis/viewer/create +/vis/open OGLIX -# Add volume to scene-0 -/vis/scene/add/volume - -# Set camera parameters +# Set camera +# Note: Camera setting should be done +# for each scene handler. /vis/camera/reset /vis/camera/viewpoint 70 20 -# Visualize detector geometry -# * Command /vis/viewer/update is omittable in the OpenGL drivers, -# but it is harmless to execute it. -/vis/scene/notifyHandlers -/vis/viewer/update +# Visualize of the whole detector geometry +/vis/drawVolume ######################################################### # Visualization of events with the DAWNFILE driver # -# * The visualized view is saved to a file "g4.eps" +# * Each visualized view is saved to a file "g4_XX.eps" # with the "vectorized" PostScript format. # -# * In order to make the file "g4.eps" printable, +# * 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 file by hand. # -# * Set as follows to skip DAWN GUI. +# * Set as follows to skip DAWN GUI: # % setenv G4DAWNFILE_VIEWER "dawn -d" ########################################################## -# Create "scene-1" -/vis/scene/create +# Store particle trajactories for visualization +/tracking/storeTrajectory 1 # Invoke the DAWNFILE driver -/vis/sceneHandler/create DAWNFILE -/vis/viewer/create +/vis/open DAWNFILE -# Add volume to scene-1 +# Create a new scene +/vis/scene/create + +# Add the world volume to the current scene /vis/scene/add/volume -# Set camera parameters +# Attach the current scene handler +# to the current scene +/vis/sceneHandler/attach + +# Set camera +# Note: Camera setting should be done +# for each scene handler. /vis/camera/reset /vis/camera/zoom 1.2 /vis/camera/viewpoint 20 70 -# Visualize one event +# Visualize one event added to the current scene # * Command "/vis/scene/notifyHandlers" is written in # ExN03RunAction::BeginOfRunAction() # * Command "/vis/viewer/update" is written in # ExN03RunAction::EndOfRunAction() -/tracking/storeTrajectory 1 +/vis/scene/add/trajectories /run/beamOn 10 + diff --git a/examples/novice/N03/exN03Vis1.mac b/examples/novice/N03/exN03Vis1.mac index 9a9321805e..41dcad9a37 100644 --- a/examples/novice/N03/exN03Vis1.mac +++ b/examples/novice/N03/exN03Vis1.mac @@ -4,14 +4,17 @@ # AUTHOR(S): Satoshi Tanaka # # # # DATE: November 10, 1999 # +# May 20, 2000 # +# June 06, 2000 # # # # CONTENTS: A basic macro for visualization of detector geometry # # # -# USAGE: % $G4BINDIR/exampleN03 exN03Vis1.mac # +# USAGE: % $G4BINDIR/exampleN03 # +# Idle> /control/execute exN03Vis1.mac # # # # REQUIRED PLATFORMS & SOFTWARES: Unix, X-window, OpenGL, # -# DAWN (version 3.80 of after) # -# Ghostview, Tcl/Tk # +# DAWN (version 3.80 or after) # +# gv (Ghostview), Tcl/Tk # # # # ENVIRONMENTAL VARIABLES (C-MACROS) FOR INSTALLATION: # # (See geant4/source/visualization/README for details.) # @@ -20,35 +23,42 @@ # % setenv G4VIS_BUILD_OPENGLX_DRIVER 1 # # % setenv G4VIS_BUILD_DAWNFILE_DRIVER 1 # # # -# ENVIRONMENTAL VARIABLES (C-MACROS) FOR COMPILATION: # +# ENVIRONMENTAL VARIABLES (C-MACROS) FOR COMPILATION: # # (See geant4/source/visualization/README for details.) # # # # % setenv G4VIS_USE_OPENGLX 1 # # % setenv G4VIS_USE_DAWNFILE 1 # # # # Addional Notes: # +# The compound command "/vis/open " # +# is equivalent to the following set of commands: # +# # +# /vis/sceneHandler/create $1 # +# /vis/viewer/create # +# # +# The compound command "/vis/drawVolume " # +# is equivalent to the following set of commands: # +# # +# /vis/scene/create # +# /vis/scene/add/volume $1 # +# /vis/sceneHandler/attach # +# /vis/viewer/refresh # +# /vis/viewer/update # # # ####################################################################### -##################################### +########################################### # Visualization of detector geometry -# with the OGLSX driver -##################################### - -# Create "scene-0" -/vis/scene/create +# with the OGLSX (OpenGL Stored X) driver +########################################### # Invoke the OGLSX driver -/vis/sceneHandler/create OGLSX -/vis/viewer/create - -# Add the detector geometry to the current scene -/vis/scene/add/volume +/vis/open OGLSX # Visualize the detector geometry # with the defalut camera parameters -/vis/scene/notifyHandlers -/vis/viewer/update +/vis/camera/reset +/vis/drawVolume # Slide show (spinning) of the view visualized above. # Draw 60 frames with steps of 3 degrees. @@ -68,7 +78,7 @@ # Note: The visualization commands are under reconstruction. # In future, the lines below should be rewritten, # replacing /vis/draw/... with /vis/add/... . -# In using /vis/draw/..., use /vis/show/view +# For the commands /vis/draw/..., use /vis/show/view # instead of /vis/viewer/update # in order to flush visualization. # @@ -83,29 +93,29 @@ ########################################################## # Visualization with DAWNFILE driver # -# * The visualized view is saved to a file "g4.eps" +# * Each visualized view is saved to a file "g4_XX.eps" # with the "vectorized" PostScript format. # -# * In order to make the file "g4.eps" printable, +# * 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 file by hand. # -# * Set as follows to skip DAWN GUI. +# * Set as follows to skip DAWN GUI: # % setenv G4DAWNFILE_VIEWER "dawn -d" ########################################################## #----- -# Create "scene-1" (Absorber.0) +# Invoke the DAWNFILE driver +/vis/open DAWNFILE + +#----- +# Create a new scene /vis/scene/create -# Invoke the DAWNFILE driver -/vis/sceneHandler/create DAWNFILE -/vis/viewer/create - -# Attach the current visualization driver to "scene-1". -# This line is omittable. -/vis/sceneHandler/attach scene-1 +# Attach the current visualization driver +# to the current scene +/vis/sceneHandler/attach # Bird's-eye view of a detector component (Absorber.0) # viewpoint : (theta,phi) = (35*deg, 35*deg), @@ -120,20 +130,16 @@ /vis/camera/viewpoint 35 35 /vis/draw/current /vis/draw/axes 0 0 0 500 -/vis/draw/text 0 0 0 mm 50 -300 -200 Absorber.0 +/vis/draw/text 0 0 0 mm 50 -100 -200 Absorber.0 /vis/show/view #----- -# Create "scene-2" (Gap.0) +# Create a new scene /vis/scene/create -# Invoke the DAWNFILE driver -/vis/sceneHandler/create DAWNFILE -/vis/viewer/create - -# Attach the current visualization driver to "scene-2". -# This line is omittable. -/vis/sceneHandler/attach scene-2 +# Attach the current visualization driver +# to the current scene. +/vis/sceneHandler/attach # Bird's-eye view of a detector component (Gap.0) # @@ -143,27 +149,24 @@ /vis/camera/viewpoint 35 35 /vis/draw/current /vis/draw/axes 0 0 0 500 -/vis/draw/text 0 0 0 mm 50 -200 -200 Gap.0 +/vis/draw/text 0 0 0 mm 50 -100 -200 Gap.0 /vis/show/view #----- -# Create "scene-3" (world) +# Create a new scene /vis/scene/create -# Invoke the DAWNFILE driver -/vis/sceneHandler/create DAWNFILE -/vis/viewer/create - -# Attach the current visualization driver to "scene-3". -# This line is omittable. -/vis/sceneHandler/attach scene-3 +# Attach the current visualization driver +# to the current scene. +/vis/sceneHandler/attach # Bird's-eye view of the whole detector components -# * The argument of /vis/scene/add/volume, "world", -# is omittable. -# * "/vis/set/culling off" makes invisible volume -# "world" visible. -# +# * The argument "world" of the command +# "/vis/scene/add/volume" is omittable. +# * "/vis/set/culling off" makes the invisible +# world volume visible. +# (The invisibility of the world volume is set +# in ExN03DetectorConstruction.cc.) /vis/scene/add/volume world /vis/camera/reset /vis/camera/zoom 0.9 diff --git a/examples/novice/N03/exN03Vis2.mac b/examples/novice/N03/exN03Vis2.mac index c791dce277..7c9f92cb75 100644 --- a/examples/novice/N03/exN03Vis2.mac +++ b/examples/novice/N03/exN03Vis2.mac @@ -4,14 +4,17 @@ # AUTHOR(S): Satoshi Tanaka # # # # DATE: November 10, 1999 # +# May 20, 2000 # +# June 06, 2000 # # # # CONTENTS: A basic macro for visualization of events # # # -# USAGE: % $G4BINDIR/exampleN03 exN03Vis2.mac # +# USAGE: % $G4BINDIR/exampleN03 # +# Idle> /control/execute exN03Vis2.mac # # # # REQUIRED PLATFORMS & SOFTWARES: Unix, X-window, OpenGL, # -# DAWN (version 3.80 of after) # -# Ghostview, Tcl/Tk # +# DAWN (version 3.80 or after) # +# gv (Ghostview), Tcl/Tk # # # # ENVIRONMENTAL VARIABLES (C-MACROS) FOR INSTALLATION: # # (See geant4/source/visualization/README for details.) # @@ -27,39 +30,49 @@ # % setenv G4VIS_USE_DAWNFILE 1 # # # # Addional Notes: # +# The compound command "/vis/open " # +# is equivalent to the following set of commands: # +# # +# /vis/sceneHandler/create $1 # +# /vis/viewer/create # # # ####################################################################### -######################################################### -Setting to store particle trajactories for visualization -######################################################### +################################################# +# Store particle trajactories for visualization +################################################# /tracking/storeTrajectory 1 -#/vis/scene/include/trajectories + ##################################################### # Visualization with OGLSX (OpenGL Stored X) driver ##################################################### -# Create "scene-0" +# Invoke the OGLSX driver +/vis/open OGLSX + +# Create a new scene /vis/scene/create -# Invoke the OGLSX driver -/vis/sceneHandler/create OGLSX -/vis/viewer/create +# Attach the current visualization driver +# to the current scene +/vis/sceneHandler/attach # Add detector geometry to the current scene /vis/scene/add/volume -# Set drawing style. -# The drawing style is "hidden-surface removal", -# with which the low-density culling set above works. -# Commonly-used drawing styles are as follows: +# Add trajectories to the current scene +/vis/scene/add/trajectories + +# Set drawing style +# The drawing style is "hidden-surface removal". +# The commonly-used drawing styles are: # 0: wireframe # 1: hidden-line removal # 2: hidden-surface removal /vis/set/drawing_style 2 -# Set camera parameters. +# Set camera # viewpoint : (theta,phi) = (10*deg, 10*deg). # zoom factor: 0.9 x (full screen size) /vis/camera/reset @@ -74,11 +87,10 @@ Setting to store particle trajactories for visualization /run/beamOn 1 # Slide show (spinning). -# Draw 18 frames with steps of 10 degrees. -# The stored mode of the OpenGL driver keeps the -# previously visualized event in the display list. -# So the particle trajectories are also rotated -# together with the detector geometry. +# 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 @@ -86,24 +98,33 @@ Setting to store particle trajactories for visualization ########################################################## # Visualization with DAWNFILE driver # -# * The visualized view is saved to a file "g4.eps" +# * Each visualized view is saved to a file "g4_XX.eps" # with the "vectorized" PostScript format. # -# * In order to make the file "g4.eps" printable, +# * 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 hand. +# You can do it with the 4th page of the DAWN GUI panel +# or by editing the file by hand. # -# * Set as follows to skip DAWN GUI. +# * Set as follows to skip DAWN GUI: # % setenv G4DAWNFILE_VIEWER "dawn -d" ########################################################## -# Create "scene-1" +# Invoke the DAWNFILE driver +/vis/open DAWNFILE + +# Create a new scene /vis/scene/create -# Invoke the DAWNFILE driver -/vis/sceneHandler/create DAWNFILE -/vis/viewer/create +# Attach the current visualization driver +# to the current scene +/vis/sceneHandler/attach + +# Add detector geometry to the current scene +/vis/scene/add/volume + +# Add trajectories to the current scene +/vis/scene/add/trajectories # Set the drawing style to "wireframe". # 0: wireframe @@ -127,5 +148,3 @@ Setting to store particle trajactories for visualization /vis/camera/zoom 5 /run/beamOn 50 - - diff --git a/examples/novice/N03/exN03Vis3.mac b/examples/novice/N03/exN03Vis3.mac index 1343628058..15ec80ef2f 100644 --- a/examples/novice/N03/exN03Vis3.mac +++ b/examples/novice/N03/exN03Vis3.mac @@ -4,14 +4,17 @@ # AUTHOR(S): Satoshi Tanaka # # # # DATE: November 10, 1999 # +# May 20, 2000 # +# June 06, 2000 # # # # CONTENTS: A basic macro for demonstrating various drawing styles # # # -# USAGE: % $G4BINDIR/exampleN03 exN03Vis3.mac # +# USAGE: % $G4BINDIR/exampleN03 # +# Idle> /control/execute exN03Vis3.mac # # # # REQUIRED PLATFORMS & SOFTWARES: Unix, X-window, OpenGL, # -# DAWN (version 3.80 of after) # -# Ghostview, Tcl/Tk # +# DAWN (version 3.80 or after) # +# gv (Ghostview), Tcl/Tk # # # # ENVIRONMENTAL VARIABLES (C-MACROS) FOR INSTALLATION: # # (See geant4/source/visualization/README for details.) # @@ -27,29 +30,39 @@ # % setenv G4VIS_USE_DAWNFILE 1 # # # # Addional Notes: # +# The compound command "/vis/open " # +# is equivalent to the following set of commands: # +# # +# /vis/sceneHandler/create $1 # +# /vis/viewer/create # # # ####################################################################### -######################################################### -Setting to store particle trajactories for visualization -######################################################### +############################################## +Store particle trajactories for visualization +############################################## /tracking/storeTrajectory 1 -#/vis/scene/include/trajectories ###################################################### # Visualization with OGLIX (OpenGL Immediate X) driver ###################################################### -# Create "scene-0" +# Invoke the OGLIX driver +/vis/open OGLIX + +# Create a new scene /vis/scene/create -# Invoke the OGLSX driver -/vis/sceneHandler/create OGLIX -/vis/viewer/create +# Attach the current visualization driver +# to the current scene +/vis/sceneHandler/attach # Add detector geometry to the current scene /vis/scene/add/volume +# Add trajectories to the current scene +/vis/scene/add/trajectories + # Bird-eye view of events with the hidden-surface # drawing style. /vis/camera/reset @@ -60,78 +73,53 @@ Setting to store particle trajactories for visualization ########################################################## # Visualization with DAWNFILE driver # -# * The visualized view is saved to a file "g4.eps" +# * Each visualized view is saved to a file "g4_XX.eps" # with the "vectorized" PostScript format. # -# * In order to make the file "g4.eps" printable, +# * 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 hand. +# or by editing the file by hand. # -# * Set as follows to skip DAWN GUI. +# * Set as follows to skip DAWN GUI: # % setenv G4DAWNFILE_VIEWER "dawn -d" # -# * In order to save all views with a "multi-page" -# EPS file "g4.eps", set the followings -# in the 4th page of the DAWN GUI panel at -# "every" visualization. -# -# Add showpage: Yes -# Append mode : Yes -# -# More automatically, you can also generate the -# multi-page EPS file "g4.eps", using the -# batch-append mode of DAWN: -# -# % setenv DAWN_BATCH a -# % rm -f g4.eps -# % $G4BINDIR/exampleN03 exN03Vis3.mac -# % ghostview g4.eps -# (See each page using the menu of ghostview.) -# ########################################################## -# Create "scene-1" +# Invoke the DAWNFILE driver +/vis/open DAWNFILE + +# Create a new scene /vis/scene/create -# Invoke the DAWNFILE driver -/vis/sceneHandler/create DAWNFILE -/vis/viewer/create +# Attach the current visualization driver +# to the current scene +/vis/sceneHandler/attach # Add detector geometry to the current scene /vis/scene/add/volume -# Set camera parameters -# Camera is zoomed up by 1.5 times of the standard setting +# Add trajectories to the current scene +/vis/scene/add/trajectories + +# Set camera +# Camera is zoomed up by 1.5 times of the standard setting. /vis/camera/reset /vis/camera/zoom 1.5 +/vis/camera/viewpoint 45 45 # Bird-eye view of events with the wireframe drawing style -/vis/camera/viewpoint 45 45 /vis/set/drawing_style 0 /run/beamOn 5 # Bird-eye view of events with the hidden-surface # drawing style. -/vis/camera/viewpoint 45 45 /vis/set/drawing_style 2 /run/beamOn 50 # Cull detector geometry and show only trajectories. -# * The command "/vis/camera/reset" resets the zoom -# factor to one. But it does not reset view point. /vis/camera/reset -/vis/camera/viewpoint 0 0 /vis/set/culling on /vis/set/cull_by_density on 999 /vis/set/drawing_style 0 /run/beamOn 10 - - - - - - - - - diff --git a/examples/novice/N03/exN03Vis4.mac b/examples/novice/N03/exN03Vis4.mac new file mode 100644 index 0000000000..9e8fe2715d --- /dev/null +++ b/examples/novice/N03/exN03Vis4.mac @@ -0,0 +1,95 @@ +####################################################################### +# MACRO FILE NAME: exN03Vis4.mac # +# # +# AUTHOR(S): Satoshi Tanaka # +# # +# DATE: June 06, 2000 # +# # +# CONTENTS: An example for the compound command, # +# "/vis/specify " # +# # +# USAGE: % $G4BINDIR/exampleN03 # +# Idle> /control/execute exN03Vis4.mac # +# # +# REQUIRED PLATFORMS & SOFTWARES: Unix, X-window, OpenGL, # +# DAWN (version 3.80 or after) # +# gv (Ghostview), Tcl/Tk # +# # +# ENVIRONMENTAL VARIABLES (C-MACROS) FOR INSTALLATION: # +# (See geant4/source/visualization/README for details.) # +# # +# % 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 # +# # +# Addional Notes: # +# The compound command "/vis/open " # +# is equivalent to the following set of commands: # +# # +# /vis/sceneHandler/create $1 # +# /vis/viewer/create # +# # +# The compound command "/vis/specify " # +# is equivalent to the following set of commands: # +# # +# /vis/scene/create # +# /vis/scene/add/logicalVolume $1 # +# /vis/sceneHandler/attach # +# /vis/viewer/refresh # +# /vis/viewer/update # +# /geometry/print $1 # +# # +####################################################################### + + +###################################################### +# Visualization with OGLIX (OpenGL Immediate X) driver +###################################################### + +# Invoke the OGLIX driver +/vis/open OGLIX + +# Set camera +# Note: Camera setting should be done +# for each scene handler. +/vis/camera/reset +/vis/camera/zoom 0.9 +/vis/camera/viewpoint 35 35 + +# Visualize a selected logical volume +/vis/specify Absorber + +########################################################## +# Visualization with DAWNFILE driver +# +# * 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 file by hand. +# +# * Set as follows to skip DAWN GUI: +# % setenv G4DAWNFILE_VIEWER "dawn -d" +########################################################## + + +# Invoke the DAWNFILE driver +/vis/open DAWNFILE + +# Set camera +# Note: Camera setting should be done +# for each scene handler. +/vis/camera/reset +/vis/camera/zoom 0.9 +/vis/camera/viewpoint 35 35 + +# Visualize a selected logical volume +/vis/specify Gap diff --git a/examples/novice/N03/exN03Vis5.mac b/examples/novice/N03/exN03Vis5.mac new file mode 100644 index 0000000000..7f44c06f2e --- /dev/null +++ b/examples/novice/N03/exN03Vis5.mac @@ -0,0 +1,68 @@ +####################################################################### +# MACRO FILE NAME: exN03Vis5.mac # +# # +# AUTHOR(S): Guy Barrand # +# # +# DATE: June 09, 2000 # +# # +# CONTENTS: A basic macro for demonstrating OPACS/Xo driver # +# # +# USAGE: % $G4BINDIR/exampleN03 exN03Vis5.mac # +# # +# REQUIRED PLATFORMS & SOFTWARES: Unix, Motif, X-window, OpenGL, # +# OPACS (version 3.0) # +# # +# ENVIRONMENTAL VARIABLES (C-MACROS) FOR INSTALLATION: # +# (See geant4/source/visualization/README for details.) # +# # +# % setenv G4VIS_BUILD_OPACS_DRIVER 1 # +# # +# ENVIRONMENTAL VARIABLES (C-MACROS) FOR COMPILATION: # +# (See geant4/source/visualization/README for details.) # +# # +# % setenv G4VIS_USE_OPACS 1 # +# # +# Addional Notes: # +# Controls on a Xo window are : # +# - Ctrl + left-button1 + move pointer : # +# move things (default is scale). # +# - right-button : popup menu to change, for example, the # +# upper behaviour. # +# - left-button : pick an object. After your can center on it # +# through the popup-menu. # +# - left-button + move pointer : collect objects. # +# - Ctrl + Shift + left-button + move pointer : # +# rubber band zoom. # +# # +####################################################################### + +# Create "scene-0" +/vis/scene/create + +# Invoke the Xo driver +/vis/sceneHandler/create Xo +/vis/viewer/create + +# Add detector geometry to the current scene +/vis/scene/add/volume +/tracking/storeTrajectory 1 +/vis/scene/include/trajectories + +# Bird-eye view of events +/vis/camera/reset +/vis/camera/viewpoint 45 45 + +/run/beamOn 1 + +####################################################################### +# Controls on a Xo window are : # +# - Ctrl + left-button1 + move pointer : # +# move things (default is scale). # +# - right-button : popup menu to change, for example, the # +# upper behaviour. # +# - left-button : pick an object. After your can center on it # +# through the popup-menu. # +# - left-button + move pointer : collect objects. # +# - Ctrl + Shift + left-button + move pointer : # +# rubber band zoom. # +####################################################################### diff --git a/examples/novice/N03/exN03Vis6.mac b/examples/novice/N03/exN03Vis6.mac new file mode 100644 index 0000000000..c1649f5043 --- /dev/null +++ b/examples/novice/N03/exN03Vis6.mac @@ -0,0 +1,64 @@ +####################################################################### +# MACRO FILE NAME: exN03Vis6.mac # +# # +# AUTHOR(S): Guy Barrand # +# # +# DATE: June 09, 2000 # +# # +# CONTENTS: A basic macro for demonstrating Inventor driver # +# # +# USAGE: % $G4BINDIR/exampleN03 exN03Vis6.mac # +# # +# REQUIRED PLATFORMS & SOFTWARES: Unix, Motif, X-window, OpenGL, # +# HEPVis # +# Inventor (TGS or SoFree) # +# # +# ENVIRONMENTAL VARIABLES (C-MACROS) FOR INSTALLATION: # +# (See geant4/source/visualization/README for details.) # +# # +# % setenv G4VIS_BUILD_OIX_DRIVER 1 # +# # +# ENVIRONMENTAL VARIABLES (C-MACROS) FOR COMPILATION: # +# (See geant4/source/visualization/README for details.) # +# # +# % setenv G4VIS_USE_OIX 1 # +# # +# Addional Notes: # +####################################################################### + +# Create "scene-0" +/vis/scene/create + +# Invoke the Xo driver +/vis/sceneHandler/create OIX +/vis/viewer/create + +# Add detector geometry to the current scene +/vis/scene/add/volume +/vis/scene/include/trajectories +/tracking/storeTrajectory 1 + +# Bird-eye view of events +/vis/camera/reset +/vis/camera/viewpoint 45 45 + +# Attach the just created Go scene graph to the viewer. +/vis/viewer/update +# Attach the just created Go scene graph to the viewer. +/vis/viewer/update +/vis/scene/notifyHandlers + +/run/beamOn 1 + +####################################################################### +# Controls on an Inventor examiner viewer are : # +# - in picking mode (cursor is the upper left arrow) # +# Ctrl + pick an volume : see daughters. # +# Shift + pick an volume : see mother. # +# - in viewing mode (cursor is the hand) # +# Left-button + pointer move : rotate. # +# Ctrl+Left-button + pointer move : pane. # +# Ctrl+Shift+Left-button + pointer move : scale. # +# Middle-button + pointer move : pane. # +# # +####################################################################### diff --git a/examples/novice/N03/exampleN03.cc b/examples/novice/N03/exampleN03.cc index 2919c1bb7c..9e0bf17348 100644 --- a/examples/novice/N03/exampleN03.cc +++ b/examples/novice/N03/exampleN03.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: exampleN03.cc,v 1.10 1999/12/15 14:49:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: exampleN03.cc,v 1.12 2000/06/14 09:10:57 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- @@ -17,14 +17,16 @@ // -------------------------------------------------------------- // Comments // -//#define G4UI_USE_XM -// // -------------------------------------------------------------- #include "G4RunManager.hh" #include "G4UImanager.hh" #include "G4UIterminal.hh" + +#ifdef G4UI_USE_XM #include "G4UIXm.hh" +#endif + #include "Randomize.hh" #ifdef G4VIS_USE @@ -89,6 +91,10 @@ int main(int argc,char** argv) { { // G4UIterminal is a (dumb) terminal. UI->ApplyCommand("/control/execute prerunN03.mac"); +#ifdef G4UI_USE_XM + // Customize the G4UIXm menubar with a macro file : + UI->ApplyCommand("/control/execute gui.mac"); +#endif session->SessionStart(); delete session; } diff --git a/examples/novice/N03/exampleN03.large_N.in b/examples/novice/N03/exampleN03.large_N.in index 540205c95a..ac0fa475ea 100644 --- a/examples/novice/N03/exampleN03.large_N.in +++ b/examples/novice/N03/exampleN03.large_N.in @@ -24,5 +24,6 @@ /calor/update /gun/particle gamma /gun/energy 500 MeV +/event/printModulo 500 /run/beamOn 5000 exit diff --git a/examples/novice/N03/exampleN03.out b/examples/novice/N03/exampleN03.out index 8eb62032b1..7b7dbe2fc7 100644 --- a/examples/novice/N03/exampleN03.out +++ b/examples/novice/N03/exampleN03.out @@ -1,6 +1,6 @@ ********************************************** - Geant4 version $Name: geant4-01-01 $ - (07-Dec-99) + Geant4 version $Name: geant4-02-00 $ + (10-Mar-2000) Copyright : Geant4 Collaboration ********************************************** @@ -62,17 +62,17 @@ ------------------------------------------------------------ ExN03PhysicsList::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. +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. 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. +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. msc: Tables of transport mean free paths. New model of MSC , computes the lateral @@ -83,42 +83,78 @@ eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to delta ray energy sampled from differential Xsection. PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. -eBrem: Total cross sections from a parametrisation. Good description from 1 KeV to 100 GeV. + eIoni Minimum Delta cut in range=0.1 mm. + + material min.delta energy(keV) + + Aluminium 125.07 + liquidArgon 78.381 + Copper 238.3 + Lead 229.66 + Water 81.518 + Scintillator 82.869 + quartz 115.31 + Air 0.99 + Aerogel 30.103 + CarbonicGas 9.4284 + WaterSteam 0.99 + Galactic 0.99 + Beam 0.99 + +eBrem: Total cross sections from a parametrisation. Good description from 10 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). 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 Minimum Delta cut in range=0.1 mm. + + material min.delta energy(keV) + + Aluminium 125.07 + liquidArgon 78.381 + Copper 238.3 + Lead 229.66 + Water 81.518 + Scintillator 82.869 + quartz 115.31 + Air 0.99 + Aerogel 30.103 + CarbonicGas 9.4284 + WaterSteam 0.99 + Galactic 0.99 + Beam 0.99 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 150 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 100 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 100 eV to 100 TeV in 100 bins. MuBrems: theoretical cross section - Good description up to 1000 TeV. - PhysicsTables from 1 GeV to 1e+03 PeV in 100 bins. + 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 TeV. - PhysicsTables from 1 GeV to 1e+03 PeV in 50 bins. + Good description up to 1000 PeV. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. ============= The cut Energy ============================== gamma e- mu- proton neutron Cut in range 1 mm 1 mm 1 mm 1 mm 1 mm @@ -140,38 +176,38 @@ Cut in energy # e+ 300MeV ### Run 0 start. ----> Event: 0 +---> Begin of event: 0 --------- Ranecu engine status --------- Initial seed (index) = 0 Current couple of seeds = 9876, 54321 ---------------------------------------- ->>> Event 0 - 0 trajectories stored in this event. - 10 hits are stored in ExN03CalorHitsCollection. - Absorber: total energy: 2.8e+02 MeV total track length: 16 cm - Gap: total energy: 3.7 MeV total track length: 1.5 cm +---> End of event: 0 + Absorber: total energy: 278.67 MeV total track length: 17.078 cm + Gap: total energy: 12.938 MeV total track length: 6.3775 cm + + 9 hits are stored in ExN03CalorHitsCollection. # # list the existing physics processes - Transportation, msc, hIoni, eIoni - eBrem, annihil, phot, compt - conv, MuIoni, MuBrems, MuPairProd + Transportation, hIoni, msc, eIoni + eBrem, annihil, conv, compt + phot, MuIoni, MuBrems, MuPairProd Decay # # switch off MultipleScattering ### Run 1 start. ----> Event: 0 +---> Begin of event: 0 --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 1081085135, 235076861 + Current couple of seeds = 1105568778, 682814057 ---------------------------------------- ->>> Event 0 - 0 trajectories stored in this event. - 9 hits are stored in ExN03CalorHitsCollection. - Absorber: total energy: 2.8e+02 MeV total track length: 17 cm - Gap: total energy: 20 MeV total track length: 9.8 cm +---> End of event: 0 + Absorber: total energy: 276.15 MeV total track length: 15.41 cm + Gap: total energy: 21.932 MeV total track length: 11.454 cm + + 10 hits are stored in ExN03CalorHitsCollection. # # switch on MultipleScattering # @@ -190,14 +226,14 @@ Cut in energy ------------------------------------------------------------ ### Run 2 start. ----> Event: 0 +---> Begin of event: 0 --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 1062777741, 543200454 + Current couple of seeds = 656008347, 35818481 ---------------------------------------- ->>> Event 0 - 0 trajectories stored in this event. - 30 hits are stored in ExN03CalorHitsCollection. - Absorber: total energy: 3.9e+02 MeV total track length: 91 cm - Gap: total energy: 81 MeV total track length: 2.2 m +---> End of event: 0 + Absorber: total energy: 347.62 MeV total track length: 78.847 cm + Gap: total energy: 79.849 MeV total track length: 2.2713 m + + 28 hits are stored in ExN03CalorHitsCollection. diff --git a/examples/novice/N03/g4.xrm b/examples/novice/N03/g4Xt.xrm similarity index 99% rename from examples/novice/N03/g4.xrm rename to examples/novice/N03/g4Xt.xrm index e5a4c28c83..be0d65964c 100644 --- a/examples/novice/N03/g4.xrm +++ b/examples/novice/N03/g4Xt.xrm @@ -7,8 +7,8 @@ !!!! visualization viewers based over Xt. You use it by !!!! setting the XENVIRONMENT environment variable to point !!!! to this file, for example : -!!!! csh> setenv XENVIRONMENT g4.xrm -!!!! sh> XENVIRONMENT=g4.xrm;export XENVIRONMENT +!!!! csh> setenv XENVIRONMENT g4Xt.xrm +!!!! sh> XENVIRONMENT=g4Xt.xrm;export XENVIRONMENT !!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -24,6 +24,7 @@ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *text.background :white *text.fontList :*courier*-r-*--14-* +*text.maxLength :8000 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!! OPACS/Xo/XoCamera widget !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! diff --git a/examples/novice/N03/gui.mac b/examples/novice/N03/gui.mac new file mode 100644 index 0000000000..1d8cc47647 --- /dev/null +++ b/examples/novice/N03/gui.mac @@ -0,0 +1,27 @@ +# +# This file permits to customize, with commands, +# the menu bar of the G4UIXm, G4UIWin32 sessions. +# It has no effect with G4UIterminal. +# +# File : +/gui/addMenu file File +/gui/addButton file Continue continue +/gui/addButton file Exit "exit" +# +# Run menu : +/gui/addMenu run Run +/gui/addButton run run1 "/control/execute run1.mac" +/gui/addButton run run2 "/control/execute run2.mac" +# +# Vis menu : +/gui/addMenu vis Vis +/gui/addButton vis Vis0 "/control/execute exN03Vis0.mac" +/gui/addButton vis Vis1 "/control/execute exN03Vis1.mac" +/gui/addButton vis Vis2 "/control/execute exN03Vis2.mac" +/gui/addButton vis Vis3 "/control/execute exN03Vis3.mac" +/gui/addButton vis Vis4 "/control/execute exN03Vis4.mac" +/gui/addButton vis Vis5 "/control/execute exN03Vis5.mac" +/gui/addButton vis Vis6 "/control/execute exN03Vis6.mac" +# +# To limit the output flow in the "dump" widget : +/event/printModulo 100 diff --git a/examples/novice/N03/include/ExN03CalorHit.hh b/examples/novice/N03/include/ExN03CalorHit.hh index ab49dd0c11..7f53e8acba 100644 --- a/examples/novice/N03/include/ExN03CalorHit.hh +++ b/examples/novice/N03/include/ExN03CalorHit.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN03CalorHit.hh,v 1.2 1999/12/15 14:49:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N03/include/ExN03CalorimeterSD.hh b/examples/novice/N03/include/ExN03CalorimeterSD.hh index 3f7ee5df1f..dbed4bfbe5 100644 --- a/examples/novice/N03/include/ExN03CalorimeterSD.hh +++ b/examples/novice/N03/include/ExN03CalorimeterSD.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN03CalorimeterSD.hh,v 1.2 1999/12/15 14:49:23 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N03/include/ExN03DetectorConstruction.hh b/examples/novice/N03/include/ExN03DetectorConstruction.hh index 2084360c4f..a23f0e8cb2 100644 --- a/examples/novice/N03/include/ExN03DetectorConstruction.hh +++ b/examples/novice/N03/include/ExN03DetectorConstruction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN03DetectorConstruction.hh,v 1.2 1999/12/15 14:49:23 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N03/include/ExN03DetectorMessenger.hh b/examples/novice/N03/include/ExN03DetectorMessenger.hh index e404f62d55..84ef9814a6 100644 --- a/examples/novice/N03/include/ExN03DetectorMessenger.hh +++ b/examples/novice/N03/include/ExN03DetectorMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN03DetectorMessenger.hh,v 1.2 1999/12/15 14:49:23 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N03/include/ExN03EventAction.hh b/examples/novice/N03/include/ExN03EventAction.hh index 1a449973f0..0cf43957de 100644 --- a/examples/novice/N03/include/ExN03EventAction.hh +++ b/examples/novice/N03/include/ExN03EventAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN03EventAction.hh,v 1.4 1999/12/15 14:49:24 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N03/include/ExN03EventActionMessenger.hh b/examples/novice/N03/include/ExN03EventActionMessenger.hh index 5bbd899d65..fc51aa9094 100644 --- a/examples/novice/N03/include/ExN03EventActionMessenger.hh +++ b/examples/novice/N03/include/ExN03EventActionMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN03EventActionMessenger.hh,v 1.3 1999/12/15 14:49:24 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N03/include/ExN03PhysicsList.hh b/examples/novice/N03/include/ExN03PhysicsList.hh index a20e985959..87fedb00ca 100644 --- a/examples/novice/N03/include/ExN03PhysicsList.hh +++ b/examples/novice/N03/include/ExN03PhysicsList.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: ExN03PhysicsList.hh,v 1.5 1999/12/15 14:49:24 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: ExN03PhysicsList.hh,v 1.6 2000/06/05 09:54:37 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // @@ -29,10 +29,10 @@ class ExN03PhysicsList: public G4VUserPhysicsList protected: // Construct particle and physics - virtual void ConstructParticle(); - virtual void ConstructProcess(); + void ConstructParticle(); + void ConstructProcess(); - virtual void SetCuts(); + void SetCuts(); public: // Set/Get cut values diff --git a/examples/novice/N03/include/ExN03PrimaryGeneratorAction.hh b/examples/novice/N03/include/ExN03PrimaryGeneratorAction.hh index f7245b9124..dc5d7bbafb 100644 --- a/examples/novice/N03/include/ExN03PrimaryGeneratorAction.hh +++ b/examples/novice/N03/include/ExN03PrimaryGeneratorAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN03PrimaryGeneratorAction.hh,v 1.2 1999/12/15 14:49:24 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N03/include/ExN03PrimaryGeneratorMessenger.hh b/examples/novice/N03/include/ExN03PrimaryGeneratorMessenger.hh index 8a25375386..9bdce9b2d1 100644 --- a/examples/novice/N03/include/ExN03PrimaryGeneratorMessenger.hh +++ b/examples/novice/N03/include/ExN03PrimaryGeneratorMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN03PrimaryGeneratorMessenger.hh,v 1.2 1999/12/15 14:49:24 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N03/include/ExN03RunAction.hh b/examples/novice/N03/include/ExN03RunAction.hh index da343bd964..4a3fc0769f 100644 --- a/examples/novice/N03/include/ExN03RunAction.hh +++ b/examples/novice/N03/include/ExN03RunAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN03RunAction.hh,v 1.4 1999/12/15 14:49:24 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N03/include/ExN03SteppingAction.hh b/examples/novice/N03/include/ExN03SteppingAction.hh index 97812eaea1..b088803afb 100644 --- a/examples/novice/N03/include/ExN03SteppingAction.hh +++ b/examples/novice/N03/include/ExN03SteppingAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN03SteppingAction.hh,v 1.3 1999/12/15 14:49:24 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N03/include/ExN03SteppingVerbose.hh b/examples/novice/N03/include/ExN03SteppingVerbose.hh index f4a34db281..24e6c7db40 100644 --- a/examples/novice/N03/include/ExN03SteppingVerbose.hh +++ b/examples/novice/N03/include/ExN03SteppingVerbose.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: ExN03SteppingVerbose.hh,v 1.2 1999/12/15 14:49:24 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: ExN03SteppingVerbose.hh,v 1.3 2000/02/28 18:09:58 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -14,13 +14,8 @@ // ExN03SteppingVerbose.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) +// This class manages the verbose outputs in G4SteppingManager. +// It inherits from G4SteppingVerbose // //--------------------------------------------------------------- diff --git a/examples/novice/N03/include/ExN03VisManager.hh b/examples/novice/N03/include/ExN03VisManager.hh index 8aabf00a7e..ad155c39c7 100644 --- a/examples/novice/N03/include/ExN03VisManager.hh +++ b/examples/novice/N03/include/ExN03VisManager.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN03VisManager.hh,v 1.3 1999/12/15 14:49:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N03/newgeom.mac b/examples/novice/N03/newgeom.mac index 0a85d871b7..9ab312d69b 100644 --- a/examples/novice/N03/newgeom.mac +++ b/examples/novice/N03/newgeom.mac @@ -14,7 +14,7 @@ /calor/setAbsThick 10. cm # /calor/setGapMat Air -/calor/setGapThick 0. cm +/calor/setGapThick 0.1 cm # /calor/setSizeYZ 10. cm # @@ -22,6 +22,5 @@ # /calor/setField 5 tesla # -/vis/scene/notifyHandlers -/vis/viewer/update - +/vis/drawVolume +/vis/scene/add/trajectories diff --git a/examples/novice/N03/prerunN03.mac b/examples/novice/N03/prerunN03.mac index f25b27d7a9..e03b33b53d 100644 --- a/examples/novice/N03/prerunN03.mac +++ b/examples/novice/N03/prerunN03.mac @@ -29,8 +29,7 @@ # for drawing the tracks # if too many tracks cause core dump => storeTrajectory 0 /tracking/storeTrajectory 1 -#/vis/scene/include/trajectories +/vis/scene/add/trajectories # # Flush visualization /vis/viewer/update - diff --git a/examples/novice/N03/run2.mac b/examples/novice/N03/run2.mac index 3e3c246ab1..c1d3c6c037 100644 --- a/examples/novice/N03/run2.mac +++ b/examples/novice/N03/run2.mac @@ -1,4 +1,4 @@ -# $Id: run2.mac,v 1.3 1999/11/15 11:10:26 maire Exp $ +# $Id: run2.mac,v 1.4 2000/06/05 09:54:36 maire Exp $ # # Macro file of "exampleN03.cc" # @@ -6,6 +6,7 @@ # (otherwise type: /control/execute prerunN03.mac) # (graphic needed: OpenGL or Mesa) # +/control/verbose 2 # # electron 30 MeV to the direction (1.,0.,0.) # 1 event diff --git a/examples/novice/N03/src/ExN03CalorHit.cc b/examples/novice/N03/src/ExN03CalorHit.cc index 4e83cc1a14..c0ccaeb9c3 100644 --- a/examples/novice/N03/src/ExN03CalorHit.cc +++ b/examples/novice/N03/src/ExN03CalorHit.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN03CalorHit.cc,v 1.2 1999/12/15 14:49:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N03/src/ExN03CalorimeterSD.cc b/examples/novice/N03/src/ExN03CalorimeterSD.cc index f95a6a2748..1836f0feed 100644 --- a/examples/novice/N03/src/ExN03CalorimeterSD.cc +++ b/examples/novice/N03/src/ExN03CalorimeterSD.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN03CalorimeterSD.cc,v 1.3 1999/12/15 14:49:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N03/src/ExN03DetectorConstruction.cc b/examples/novice/N03/src/ExN03DetectorConstruction.cc index e420d39e53..4386b63d01 100644 --- a/examples/novice/N03/src/ExN03DetectorConstruction.cc +++ b/examples/novice/N03/src/ExN03DetectorConstruction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN03DetectorConstruction.cc,v 1.4 1999/12/15 14:49:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N03/src/ExN03DetectorMessenger.cc b/examples/novice/N03/src/ExN03DetectorMessenger.cc index 5feaf91d66..c26c12f05b 100644 --- a/examples/novice/N03/src/ExN03DetectorMessenger.cc +++ b/examples/novice/N03/src/ExN03DetectorMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN03DetectorMessenger.cc,v 1.3 1999/12/15 14:49:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N03/src/ExN03EventAction.cc b/examples/novice/N03/src/ExN03EventAction.cc index 4850268b73..856e24f6a6 100644 --- a/examples/novice/N03/src/ExN03EventAction.cc +++ b/examples/novice/N03/src/ExN03EventAction.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: ExN03EventAction.cc,v 1.8 2000/01/24 14:46:01 stesting Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: ExN03EventAction.cc,v 1.10 2000/06/05 09:54:37 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // @@ -37,7 +37,7 @@ ExN03EventAction::ExN03EventAction() :calorimeterCollID(-1),drawFlag("all"),eventMessenger(NULL), - printModulo(10000) + printModulo(1) { eventMessenger = new ExN03EventActionMessenger(this); } @@ -57,7 +57,7 @@ void ExN03EventAction::BeginOfEventAction(const G4Event* evt) G4int evtNb = evt->GetEventID(); if (evtNb%printModulo == 0) { - G4cout << "\n---> Event: " << evtNb << G4endl; + G4cout << "\n---> Begin of event: " << evtNb << G4endl; HepRandom::showEngineStatus(); } @@ -72,56 +72,41 @@ void ExN03EventAction::BeginOfEventAction(const G4Event* evt) void ExN03EventAction::EndOfEventAction(const G4Event* evt) { - G4int event_id = evt->GetEventID(); + G4int evtNb = evt->GetEventID(); - G4TrajectoryContainer * trajectoryContainer = evt->GetTrajectoryContainer(); - G4int n_trajectories = 0; - if (trajectoryContainer) n_trajectories = trajectoryContainer->entries(); + G4HCofThisEvent* HCE = evt->GetHCofThisEvent(); + ExN03CalorHitsCollection* CHC = NULL; + G4int n_hit = 0; + G4double totEAbs=0, totLAbs=0, totEGap=0, totLGap=0; + + if (HCE) CHC = (ExN03CalorHitsCollection*)(HCE->GetHC(calorimeterCollID)); - if (event_id < 100 || event_id%100 == 0) { + if (CHC) + { + n_hit = CHC->entries(); + for (G4int i=0;iGetEdepAbs(); + totLAbs += (*CHC)[i]->GetTrakAbs(); + totEGap += (*CHC)[i]->GetEdepGap(); + totLGap += (*CHC)[i]->GetTrakGap(); + } + } + + if (evtNb%printModulo == 0) { + G4cout << "---> End of event: " << evtNb << G4endl; - G4cout << ">>> Event " << evt->GetEventID() << G4endl; - - G4cout << " " << n_trajectories - << " trajectories stored in this event." << G4endl; - - G4HCofThisEvent* HCE = evt->GetHCofThisEvent(); - ExN03CalorHitsCollection* CHC = NULL; - if (HCE) - CHC = (ExN03CalorHitsCollection*)(HCE->GetHC(calorimeterCollID)); - - if (CHC) - { - int n_hit = CHC->entries(); - G4cout << " " << n_hit - << " hits are stored in ExN03CalorHitsCollection." << G4endl; - G4double totEAbs=0, totLAbs=0, totEGap=0, totLGap=0; - for (int i=0;iGetEdepAbs(); - totLAbs += (*CHC)[i]->GetTrakAbs(); - totEGap += (*CHC)[i]->GetEdepGap(); - totLGap += (*CHC)[i]->GetTrakGap(); - } - G4cout - << " 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") - << 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); - } - } + G4cout + << " 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") + << G4endl; + + G4cout << "\n " << n_hit + << " hits are stored in ExN03CalorHitsCollection." << G4endl; + } } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/novice/N03/src/ExN03EventActionMessenger.cc b/examples/novice/N03/src/ExN03EventActionMessenger.cc index 9da2e138cb..fce76a3188 100644 --- a/examples/novice/N03/src/ExN03EventActionMessenger.cc +++ b/examples/novice/N03/src/ExN03EventActionMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN03EventActionMessenger.cc,v 1.3 1999/12/15 14:49:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N03/src/ExN03PhysicsList.cc b/examples/novice/N03/src/ExN03PhysicsList.cc index 536e329ffc..558e567977 100644 --- a/examples/novice/N03/src/ExN03PhysicsList.cc +++ b/examples/novice/N03/src/ExN03PhysicsList.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: ExN03PhysicsList.cc,v 1.6 1999/12/15 14:49:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: ExN03PhysicsList.cc,v 1.8 2000/05/24 09:53:05 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // @@ -96,7 +96,6 @@ void ExN03PhysicsList::ConstructMesons() G4PionZero::PionZeroDefinition(); G4Eta::EtaDefinition(); G4EtaPrime::EtaPrimeDefinition(); - G4RhoZero::RhoZeroDefinition(); G4KaonPlus::KaonPlusDefinition(); G4KaonMinus::KaonMinusDefinition(); G4KaonZero::KaonZeroDefinition(); @@ -155,42 +154,104 @@ void ExN03PhysicsList::ConstructEM() G4String particleName = particle->GetParticleName(); if (particleName == "gamma") { - //gamma - pmanager->AddDiscreteProcess(new G4PhotoElectricEffect()); - pmanager->AddDiscreteProcess(new G4ComptonScattering()); + // gamma pmanager->AddDiscreteProcess(new G4GammaConversion()); - + pmanager->AddDiscreteProcess(new G4ComptonScattering()); + pmanager->AddDiscreteProcess(new G4PhotoElectricEffect()); + } else if (particleName == "e-") { - //electron - pmanager->AddProcess(new G4MultipleScattering(),-1, 1,1); - pmanager->AddProcess(new G4eIonisation(), -1, 2,2); - pmanager->AddProcess(new G4eBremsstrahlung(), -1,-1,3); + //electron + G4VProcess* theeminusMultipleScattering = new G4MultipleScattering(); + G4VProcess* theeminusIonisation = new G4eIonisation(); + G4VProcess* theeminusBremsstrahlung = new G4eBremsstrahlung(); + // + // add processes + pmanager->AddProcess(theeminusMultipleScattering); + pmanager->AddProcess(theeminusIonisation); + pmanager->AddProcess(theeminusBremsstrahlung); + // + // set ordering for AlongStepDoIt + pmanager->SetProcessOrdering(theeminusMultipleScattering, idxAlongStep,1); + pmanager->SetProcessOrdering(theeminusIonisation, idxAlongStep,2); + // + // set ordering for PostStepDoIt + pmanager->SetProcessOrdering(theeminusMultipleScattering, idxPostStep,1); + pmanager->SetProcessOrdering(theeminusIonisation, idxPostStep,2); + pmanager->SetProcessOrdering(theeminusBremsstrahlung, idxPostStep,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); + //positron + G4VProcess* theeplusMultipleScattering = new G4MultipleScattering(); + G4VProcess* theeplusIonisation = new G4eIonisation(); + G4VProcess* theeplusBremsstrahlung = new G4eBremsstrahlung(); + G4VProcess* theeplusAnnihilation = new G4eplusAnnihilation(); + // + // add processes + pmanager->AddProcess(theeplusMultipleScattering); + pmanager->AddProcess(theeplusIonisation); + pmanager->AddProcess(theeplusBremsstrahlung); + pmanager->AddProcess(theeplusAnnihilation); + // + // set ordering for AtRestDoIt + pmanager->SetProcessOrderingToFirst(theeplusAnnihilation, idxAtRest); + // + // set ordering for AlongStepDoIt + pmanager->SetProcessOrdering(theeplusMultipleScattering, idxAlongStep,1); + pmanager->SetProcessOrdering(theeplusIonisation, idxAlongStep,2); + // + // set ordering for PostStepDoIt + pmanager->SetProcessOrdering(theeplusMultipleScattering, idxPostStep,1); + pmanager->SetProcessOrdering(theeplusIonisation, idxPostStep,2); + pmanager->SetProcessOrdering(theeplusBremsstrahlung, idxPostStep,3); + pmanager->SetProcessOrdering(theeplusAnnihilation, idxPostStep,4); } else if( particleName == "mu+" || particleName == "mu-" ) { - //muon - pmanager->AddProcess(new G4MultipleScattering(),-1, 1,1); - pmanager->AddProcess(new G4MuIonisation(), -1, 2,2); - pmanager->AddProcess(new G4MuBremsstrahlung(), -1,-1,3); - pmanager->AddProcess(new G4MuPairProduction(), -1,-1,4); - - } else if ((!particle->IsShortLived()) && + //muon + G4VProcess* aMultipleScattering = new G4MultipleScattering(); + G4VProcess* aBremsstrahlung = new G4MuBremsstrahlung(); + G4VProcess* aPairProduction = new G4MuPairProduction(); + G4VProcess* anIonisation = new G4MuIonisation(); + // + // add processes + pmanager->AddProcess(anIonisation); + pmanager->AddProcess(aMultipleScattering); + pmanager->AddProcess(aBremsstrahlung); + pmanager->AddProcess(aPairProduction); + // + // set ordering for AlongStepDoIt + pmanager->SetProcessOrdering(aMultipleScattering, idxAlongStep,1); + pmanager->SetProcessOrdering(anIonisation, idxAlongStep,2); + // + // set ordering for PostStepDoIt + pmanager->SetProcessOrdering(aMultipleScattering, idxPostStep,1); + pmanager->SetProcessOrdering(anIonisation, idxPostStep,2); + pmanager->SetProcessOrdering(aBremsstrahlung, idxPostStep,3); + pmanager->SetProcessOrdering(aPairProduction, idxPostStep,4); + + } else if ((!particle->IsShortLived()) && (particle->GetPDGCharge() != 0.0) && (particle->GetParticleName() != "chargedgeantino")) { - //all others charged particles except geantino - pmanager->AddProcess(new G4MultipleScattering(),-1,1,1); - pmanager->AddProcess(new G4hIonisation(), -1,2,2); + // all others charged particles except geantino + G4VProcess* aMultipleScattering = new G4MultipleScattering(); + G4VProcess* anIonisation = new G4hIonisation(); + // + // add processes + pmanager->AddProcess(anIonisation); + pmanager->AddProcess(aMultipleScattering); + // + // set ordering for AlongStepDoIt + pmanager->SetProcessOrdering(aMultipleScattering, idxAlongStep,1); + pmanager->SetProcessOrdering(anIonisation, idxAlongStep,2); + // + // set ordering for PostStepDoIt + pmanager->SetProcessOrdering(aMultipleScattering, idxPostStep,1); + pmanager->SetProcessOrdering(anIonisation, idxPostStep,2); } } } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... #include "G4Decay.hh" @@ -248,39 +309,40 @@ void ExN03PhysicsList::SetCuts() //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -void ExN03PhysicsList::SetCutForGamma(G4double cut) +void ExN03PhysicsList::SetCutForGamma(G4double cut) { ResetCuts(); cutForGamma = cut; } -void ExN03PhysicsList::SetCutForElectron(G4double cut) +void ExN03PhysicsList::SetCutForElectron(G4double cut) { ResetCuts(); cutForElectron = cut; } -void ExN03PhysicsList::SetCutForProton(G4double cut) +void ExN03PhysicsList::SetCutForProton(G4double cut) { ResetCuts(); cutForProton = cut; } -G4double ExN03PhysicsList::GetCutForGamma() const +G4double ExN03PhysicsList::GetCutForGamma() const { return cutForGamma; } -G4double ExN03PhysicsList::GetCutForElectron() const +G4double ExN03PhysicsList::GetCutForElectron() const { return cutForElectron; } -G4double ExN03PhysicsList::GetCutForProton() const +G4double ExN03PhysicsList::GetCutForProton() const { return cutForGamma; } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/novice/N03/src/ExN03PrimaryGeneratorAction.cc b/examples/novice/N03/src/ExN03PrimaryGeneratorAction.cc index be438ff59f..0aeb04a47e 100644 --- a/examples/novice/N03/src/ExN03PrimaryGeneratorAction.cc +++ b/examples/novice/N03/src/ExN03PrimaryGeneratorAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN03PrimaryGeneratorAction.cc,v 1.2 1999/12/15 14:49:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N03/src/ExN03PrimaryGeneratorMessenger.cc b/examples/novice/N03/src/ExN03PrimaryGeneratorMessenger.cc index d8b1dc1811..054946569c 100644 --- a/examples/novice/N03/src/ExN03PrimaryGeneratorMessenger.cc +++ b/examples/novice/N03/src/ExN03PrimaryGeneratorMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN03PrimaryGeneratorMessenger.cc,v 1.3 1999/12/15 14:49:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N03/src/ExN03RunAction.cc b/examples/novice/N03/src/ExN03RunAction.cc index cfb6c2e3aa..ea933b22c1 100644 --- a/examples/novice/N03/src/ExN03RunAction.cc +++ b/examples/novice/N03/src/ExN03RunAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN03RunAction.cc,v 1.7 1999/12/15 14:49:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N03/src/ExN03SteppingAction.cc b/examples/novice/N03/src/ExN03SteppingAction.cc index 10825f027f..61b784c01d 100644 --- a/examples/novice/N03/src/ExN03SteppingAction.cc +++ b/examples/novice/N03/src/ExN03SteppingAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN03SteppingAction.cc,v 1.3 1999/12/15 14:49:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N03/src/ExN03SteppingVerbose.cc b/examples/novice/N03/src/ExN03SteppingVerbose.cc index 6be5a494c9..530861ed48 100644 --- a/examples/novice/N03/src/ExN03SteppingVerbose.cc +++ b/examples/novice/N03/src/ExN03SteppingVerbose.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: ExN03SteppingVerbose.cc,v 1.2 1999/12/15 14:49:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: ExN03SteppingVerbose.cc,v 1.3 2000/02/28 18:10:15 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -15,10 +15,6 @@ // // Description: // Implementation of the ExN03SteppingVerbose 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) // //--------------------------------------------------------------- diff --git a/examples/novice/N03/src/ExN03VisManager.cc b/examples/novice/N03/src/ExN03VisManager.cc index 8363e24a11..13b04026e6 100644 --- a/examples/novice/N03/src/ExN03VisManager.cc +++ b/examples/novice/N03/src/ExN03VisManager.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: ExN03VisManager.cc,v 1.3 1999/12/15 14:49:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: ExN03VisManager.cc,v 1.4 2000/06/29 07:16:21 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 24th January 1998. @@ -66,6 +66,10 @@ #include "G4VRML2File.hh" #endif +#ifdef G4VIS_USE_RAYTRACER +#include "G4RayTracer.hh" +#endif + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ExN03VisManager::ExN03VisManager () {} @@ -120,6 +124,10 @@ void ExN03VisManager::RegisterGraphicsSystems () { 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/N04/History b/examples/novice/N04/History index 8fd1695ee0..706e54cd7d 100644 --- a/examples/novice/N04/History +++ b/examples/novice/N04/History @@ -1,4 +1,4 @@ -$Id: History,v 1.4 1999/06/05 12:41:28 stesting Exp $ +$Id: History,v 1.7 2000/06/22 09:39:28 stesting Exp $ ------------------------------------------------------------------- ========================================================= @@ -15,6 +15,15 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +June 19, 2000 John Allison (exampleN04-V01-01-02) +- Updated exampleN04.out for geant4-01-01-cand-07. + +June 17, 2000 John Allison (exampleN04-V01-01-01) +- Updated exampleN04*.out for geant4-01-01-ref-06. + +9th June 2000 Makoto Asai (exampleN04-V01-01-00) +- ExN04StackingAction.cc: protection against illegal value of an argument. + 5th June 1999 John Allison - GNUmakefile: Force non-optimised compliation of some files on HP with aCC: HP ANSI C++ B3910B A.01.15. diff --git a/examples/novice/N04/exampleN04.EMtest.out b/examples/novice/N04/exampleN04.EMtest.out index 6fdc50ef25..281d866cac 100644 --- a/examples/novice/N04/exampleN04.EMtest.out +++ b/examples/novice/N04/exampleN04.EMtest.out @@ -1,6 +1,6 @@ ********************************************** - Geant4 version $Name: geant4-01-01 $ - (07-Dec-99) + Geant4 version $Name: geant4-02-00 $ + (10-Mar-2000) Copyright : Geant4 Collaboration ********************************************** @@ -29,7 +29,18 @@ eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to delta ray energy sampled from differential Xsection. PhysicsTables from 1 keV to 100 TeV in 100 bins. -eBrem: Total cross sections from a parametrisation. Good description from 1 KeV to 100 GeV. + eIoni Minimum Delta cut in range=0.1 mm. + + material min.delta energy(keV) + + Air 0.99 + Lead 229.66 + ArgonGas 0.99 + Silicon 116.08 + Scintillator 82.869 + dummyMat 129.45 + +eBrem: Total cross sections from a parametrisation. Good description from 10 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. @@ -38,10 +49,21 @@ 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 Minimum Delta cut in range=0.1 mm. + + material min.delta energy(keV) + + Air 0.99 + Lead 229.66 + ArgonGas 0.99 + Silicon 116.08 + Scintillator 82.869 + dummyMat 129.45 + 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 150 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 @@ -51,7 +73,7 @@ msc: Tables of transport mean free paths. 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 100 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 @@ -59,30 +81,30 @@ msc: Tables of transport mean free paths. PhysicsTables from 100 eV to 100 TeV in 100 bins. MuBrems: theoretical cross section - Good description up to 1000 TeV. - PhysicsTables from 1 GeV to 1000 PeV in 100 bins. + 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 TeV. - PhysicsTables from 1 GeV to 1000 PeV in 50 bins. -Stage 0->1 : 1 hits found in the muon chamber. -Stage 1->2 : 1 isolated muon found. ->>> Event 0 - 25 hits are stored in ExN04TrackerHitsCollection. - 9 hits are stored in ExN04CalorimeterHitsCollection. - Total energy deposition in calorimeter : 2.53644 (GeV) - 1 hits are stored in ExN04MuonHitsCollection. + Good description up to 1000 PeV. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. Stage 0->1 : 1 hits found in the muon chamber. Stage 1->2 : 1 isolated muon found. >>> Event 0 5 hits are stored in ExN04TrackerHitsCollection. - 13 hits are stored in ExN04CalorimeterHitsCollection. - Total energy deposition in calorimeter : 3.83715 (GeV) + 4 hits are stored in ExN04CalorimeterHitsCollection. + Total energy deposition in calorimeter : 0.29547 (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 + 25 hits are stored in ExN04TrackerHitsCollection. + 35 hits are stored in ExN04CalorimeterHitsCollection. + Total energy deposition in calorimeter : 5.1923 (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 - 27 hits are stored in ExN04TrackerHitsCollection. - 23 hits are stored in ExN04CalorimeterHitsCollection. - Total energy deposition in calorimeter : 27.0965 (GeV) + 5 hits are stored in ExN04TrackerHitsCollection. + 22 hits are stored in ExN04CalorimeterHitsCollection. + Total energy deposition in calorimeter : 16.225 (GeV) 1 hits are stored in ExN04MuonHitsCollection. diff --git a/examples/novice/N04/exampleN04.cc b/examples/novice/N04/exampleN04.cc index a8e6cf9a86..3a5b139704 100644 --- a/examples/novice/N04/exampleN04.cc +++ b/examples/novice/N04/exampleN04.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: exampleN04.cc,v 1.2 1999/12/15 14:49:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/examples/novice/N04/exampleN04.out b/examples/novice/N04/exampleN04.out index fa4324e788..81292df328 100644 --- a/examples/novice/N04/exampleN04.out +++ b/examples/novice/N04/exampleN04.out @@ -1,6 +1,6 @@ ********************************************** - Geant4 version $Name: geant4-01-01 $ - (07-Dec-99) + Geant4 version $Name: geant4-02-00 $ + (10-Mar-2000) Copyright : Geant4 Collaboration ********************************************** @@ -29,7 +29,18 @@ eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to delta ray energy sampled from differential Xsection. PhysicsTables from 1 keV to 100 TeV in 100 bins. -eBrem: Total cross sections from a parametrisation. Good description from 1 KeV to 100 GeV. + eIoni Minimum Delta cut in range=0.1 mm. + + material min.delta energy(keV) + + Air 0.99 + Lead 229.66 + ArgonGas 0.99 + Silicon 116.08 + Scintillator 82.869 + dummyMat 129.45 + +eBrem: Total cross sections from a parametrisation. Good description from 10 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. @@ -38,10 +49,21 @@ 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 Minimum Delta cut in range=0.1 mm. + + material min.delta energy(keV) + + Air 0.99 + Lead 229.66 + ArgonGas 0.99 + Silicon 116.08 + Scintillator 82.869 + dummyMat 129.45 + 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 150 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 @@ -51,7 +73,7 @@ msc: Tables of transport mean free paths. 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 100 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 @@ -59,19 +81,19 @@ msc: Tables of transport mean free paths. PhysicsTables from 100 eV to 100 TeV in 100 bins. MuBrems: theoretical cross section - Good description up to 1000 TeV. - PhysicsTables from 1 GeV to 1000 PeV in 100 bins. + 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 TeV. - PhysicsTables from 1 GeV to 1000 PeV in 50 bins. + Good description up to 1000 PeV. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. # Stage 0->1 : 1 hits found in the muon chamber. Stage 1->2 : 1 isolated muon found. >>> Event 0 - 121 hits are stored in ExN04TrackerHitsCollection. - 59 hits are stored in ExN04CalorimeterHitsCollection. - Total energy deposition in calorimeter : 0.706765 (GeV) + 138 hits are stored in ExN04TrackerHitsCollection. + 65 hits are stored in ExN04CalorimeterHitsCollection. + Total energy deposition in calorimeter : 0.96905 (GeV) 1 hits are stored in ExN04MuonHitsCollection. Stage 0->1 : 0 hits found in the muon chamber. ++++++++ event aborted @@ -84,8 +106,8 @@ Stage 0->1 : 1 hits found in the muon chamber. Stage 1->2 : 0 isolated muon found. ++++++++ event aborted >>> Event 2 - 82 hits are stored in ExN04TrackerHitsCollection. + 88 hits are stored in ExN04TrackerHitsCollection. 13 hits are stored in ExN04CalorimeterHitsCollection. - Total energy deposition in calorimeter : 0.3424 (GeV) + Total energy deposition in calorimeter : 0.34298 (GeV) 1 hits are stored in ExN04MuonHitsCollection. # diff --git a/examples/novice/N04/src/ExN04PhysicsList.cc b/examples/novice/N04/src/ExN04PhysicsList.cc index 9b673044f1..cf12517ec7 100644 --- a/examples/novice/N04/src/ExN04PhysicsList.cc +++ b/examples/novice/N04/src/ExN04PhysicsList.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN04PhysicsList.cc,v 1.7 1999/12/15 14:49:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N04/src/ExN04StackingAction.cc b/examples/novice/N04/src/ExN04StackingAction.cc index 87406d05a6..a0cb8ce4a2 100644 --- a/examples/novice/N04/src/ExN04StackingAction.cc +++ b/examples/novice/N04/src/ExN04StackingAction.cc @@ -55,7 +55,7 @@ ExN04StackingAction::ClassifyNewTrack(const G4Track * aTrack) classification = fUrgent; break; } - if(InsideRoI(aTrack,angRoI)) + if((angRoI<0.)||InsideRoI(aTrack,angRoI)) { classification = fUrgent; break; diff --git a/examples/novice/N05/History b/examples/novice/N05/History index 5f4833b1b1..86fc2074e9 100644 --- a/examples/novice/N05/History +++ b/examples/novice/N05/History @@ -1,4 +1,4 @@ -$Id: History,v 1.3 1999/04/23 04:42:43 kurasige Exp $ +$Id: History,v 1.4 2000/06/17 12:32:21 stesting Exp $ ------------------------------------------------------------------- ========================================================= @@ -14,6 +14,10 @@ track of all tags. ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- + +June 17, 2000 John Allison (exampleN05-V01-01-00) +- Updated exampleN05.out for geant4-01-01-ref-06. + 23th April 1999 H.Kurashige - Remove ConstructHad and ConstructLeptHad in ExN05PhysicsList diff --git a/examples/novice/N05/exampleN05.cc b/examples/novice/N05/exampleN05.cc index 66bd14e9bd..7cbb54c20a 100644 --- a/examples/novice/N05/exampleN05.cc +++ b/examples/novice/N05/exampleN05.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: exampleN05.cc,v 1.5 1999/12/15 14:49:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: exampleN05.cc,v 1.6 2000/06/29 07:42:05 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- @@ -56,7 +56,7 @@ #include "G4RunManager.hh" #ifdef G4VIS_USE -#include "MyVisManager.cc" +#include "ExN05VisManager.hh" #endif #include "G4ios.hh" @@ -96,8 +96,8 @@ int main(int argc, char** argv) { // Visualization: //---------------- #ifdef G4VIS_USE - G4cout << "Instantiating MyVisManager......." << G4endl; - G4VisManager* visManager = new MyVisManager; + G4cout << "Instantiating Visualization Manager......." << G4endl; + G4VisManager* visManager = new ExN05VisManager; visManager -> Initialize (); #endif diff --git a/examples/novice/N05/exampleN05.out b/examples/novice/N05/exampleN05.out index d858bdef8f..5ba5563937 100644 --- a/examples/novice/N05/exampleN05.out +++ b/examples/novice/N05/exampleN05.out @@ -1,7 +1,7 @@ RunManager construction starting.... ********************************************** - Geant4 version $Name: geant4-01-01 $ - (07-Dec-99) + Geant4 version $Name: geant4-02-00 $ + (10-Mar-2000) Copyright : Geant4 Collaboration ********************************************** @@ -29,7 +29,18 @@ eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to delta ray energy sampled from differential Xsection. PhysicsTables from 1 keV to 100 TeV in 100 bins. -eBrem: Total cross sections from a parametrisation. Good description from 1 KeV to 100 GeV. + eIoni Minimum Delta cut in range=0.1 mm. + + material min.delta energy(keV) + + CsI 136.11 + He 0.99 + Aluminium 125.07 + Lead 229.66 + Fer 224.12 + Air 0.99 + +eBrem: Total cross sections from a parametrisation. Good description from 10 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. @@ -38,10 +49,21 @@ 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 Minimum Delta cut in range=0.1 mm. + + material min.delta energy(keV) + + CsI 136.11 + He 0.99 + Aluminium 125.07 + Lead 229.66 + Fer 224.12 + Air 0.99 + 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 150 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 @@ -51,7 +73,7 @@ msc: Tables of transport mean free paths. 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 100 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 @@ -59,12 +81,12 @@ msc: Tables of transport mean free paths. PhysicsTables from 100 eV to 100 TeV in 100 bins. MuBrems: theoretical cross section - Good description up to 1000 TeV. - PhysicsTables from 1 GeV to 1000 PeV in 100 bins. + 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 TeV. - PhysicsTables from 1 GeV to 1000 PeV in 50 bins. + Good description up to 1000 PeV. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. Closing FastSimulation # exampleN05.in # @@ -73,28 +95,28 @@ Closing FastSimulation # ### Run 0 start. >>> Event 0 - 11 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.989921 (GeV) + 9 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.9899 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) >>> Event 1 10 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999905 (GeV) + Total energy deposition in EM calorimeter crytals : 0.99993 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) >>> Event 2 - 13 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999918 (GeV) + 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 3 8 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999917 (GeV) + 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 4 - 11 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999917 (GeV) + 8 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) number of event = 5 @@ -102,83 +124,83 @@ number of event = 5 ### Run 1 start. >>> Event 0 10 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999915 (GeV) + 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 1 - 7 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999883 (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.99992 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) +>>> Event 2 + 7 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 3 - 9 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999911 (GeV) + 7 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.99993 (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.999915 (GeV) + Total energy deposition in EM calorimeter crytals : 0.99989 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) number of event = 5 # ### Run 2 start. >>> Event 0 - 9 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.99993 (GeV) + 8 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 1 - 13 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999908 (GeV) + 10 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.99991 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) >>> Event 2 - 6 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999896 (GeV) + 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 3 8 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999931 (GeV) + Total energy deposition in EM calorimeter crytals : 0.99991 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) >>> Event 4 - 10 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999911 (GeV) + 9 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.99991 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) number of event = 5 # ### Run 3 start. >>> Event 0 - 11 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.989922 (GeV) + 10 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 1 10 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999773 (GeV) + Total energy deposition in EM calorimeter crytals : 0.99991 (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.989917 (GeV) + 10 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.99958 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) >>> Event 3 10 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.99991 (GeV) + Total energy deposition in EM calorimeter crytals : 0.99989 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) >>> Event 4 - 11 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999918 (GeV) + 8 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.99993 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) number of event = 5 @@ -189,113 +211,113 @@ number of event = 5 ### Run 4 start. >>> Event 0 8 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.239988 (GeV) - 9 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.479976 (GeV) + Total energy deposition in EM calorimeter crytals : 0.19999 (GeV) + 10 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.57997 (GeV) >>> Event 1 - 18 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.499974 (GeV) - 12 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.93995 (GeV) ->>> Event 2 - 20 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.619964 (GeV) + 10 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.31998 (GeV) 14 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 1.43991 (GeV) + Total energy deposition in HAD calorimeter towers : 1.2599 (GeV) +>>> Event 2 + 16 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.49997 (GeV) + 14 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 1.7199 (GeV) >>> Event 3 - 22 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.779955 (GeV) - 16 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 1.99988 (GeV) + 23 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.78047 (GeV) + 15 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 1.9997 (GeV) >>> Event 4 - 27 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.919948 (GeV) + 25 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.99973 (GeV) 16 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 2.55985 (GeV) + Total energy deposition in HAD calorimeter towers : 2.5196 (GeV) number of event = 5 # ### Run 5 start. >>> Event 0 - 29 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.959946 (GeV) - 26 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 3.37982 (GeV) + 27 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 1.0397 (GeV) + 27 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 3.3596 (GeV) >>> Event 1 - 31 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999943 (GeV) + 32 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 1.1397 (GeV) 29 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 4.17977 (GeV) + Total energy deposition in HAD calorimeter towers : 4.1195 (GeV) >>> Event 2 - 33 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 1.03994 (GeV) - 34 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 5.01972 (GeV) ->>> Event 3 34 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 1.05994 (GeV) - 37 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 5.87968 (GeV) + Total energy deposition in EM calorimeter crytals : 1.1997 (GeV) + 30 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 4.9795 (GeV) +>>> Event 3 + 35 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 1.2397 (GeV) + 31 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 5.8595 (GeV) >>> Event 4 - 38 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 1.13994 (GeV) - 39 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 6.75964 (GeV) + 36 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 1.2997 (GeV) + 32 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 6.6994 (GeV) number of event = 5 # ### Run 6 start. >>> Event 0 - 41 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 1.19993 (GeV) - 51 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 7.53959 (GeV) + 37 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 1.3197 (GeV) + 47 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 7.4994 (GeV) >>> Event 1 - 43 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 1.23993 (GeV) - 55 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 8.35956 (GeV) + 39 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 1.3597 (GeV) + 50 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 8.2993 (GeV) >>> Event 2 - 43 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 1.23993 (GeV) - 57 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 9.17952 (GeV) + 40 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 1.3797 (GeV) + 51 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 9.0392 (GeV) >>> Event 3 - 45 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 1.27993 (GeV) - 60 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 9.93948 (GeV) + 43 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 1.4397 (GeV) + 51 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 9.8192 (GeV) >>> Event 4 - 47 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 1.31993 (GeV) - 60 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 10.7994 (GeV) + 45 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 1.4997 (GeV) + 53 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 10.639 (GeV) number of event = 5 # ### Run 7 start. >>> Event 0 - 54 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 1.47991 (GeV) - 67 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 11.2994 (GeV) + 55 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 1.7597 (GeV) + 62 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 11.139 (GeV) >>> Event 1 - 58 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 1.61991 (GeV) - 71 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 11.7394 (GeV) + 59 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 1.9197 (GeV) + 64 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 11.799 (GeV) >>> Event 2 - 65 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 1.7999 (GeV) - 76 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 12.2194 (GeV) + 64 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 2.1197 (GeV) + 65 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 12.279 (GeV) >>> Event 3 - 73 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 2.07988 (GeV) - 76 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 12.4593 (GeV) + 69 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 2.2997 (GeV) + 66 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 12.699 (GeV) >>> Event 4 - 74 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 2.19987 (GeV) - 77 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 12.9793 (GeV) + 73 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 2.5396 (GeV) + 67 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 12.959 (GeV) number of event = 5 # # @@ -307,59 +329,59 @@ number of event = 5 # ### Run 8 start. >>> Event 0 - 28 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.994988 (GeV) - 2 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.0030218 (GeV) + 36 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.99046 (GeV) + 0 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0 (GeV) >>> Event 1 - 38 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.998376 (GeV) - 0 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0 (GeV) ->>> Event 2 - 41 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.987257 (GeV) - 7 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.00617982 (GeV) ->>> Event 3 - 37 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.988903 (GeV) - 0 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0 (GeV) ->>> Event 4 - 31 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.982488 (GeV) + 34 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.99536 (GeV) 2 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.00470852 (GeV) + Total energy deposition in HAD calorimeter towers : 0.0011673 (GeV) +>>> Event 2 + 44 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.99157 (GeV) + 1 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.0045047 (GeV) +>>> Event 3 + 39 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.963 (GeV) + 1 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.0016588 (GeV) +>>> Event 4 + 38 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.99325 (GeV) + 0 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0 (GeV) number of event = 5 # # switch on UserLimits # ### Run 9 start. >>> Event 0 - 20 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.984933 (GeV) + 22 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.9939 (GeV) 1 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.00313199 (GeV) + Total energy deposition in HAD calorimeter towers : 0.0056358 (GeV) >>> Event 1 - 23 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999915 (GeV) + 19 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.99466 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) >>> Event 2 23 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) ->>> Event 3 - 14 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.997678 (GeV) + Total energy deposition in EM calorimeter crytals : 0.99342 (GeV) 2 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.00224095 (GeV) + Total energy deposition in HAD calorimeter towers : 0.0048977 (GeV) +>>> Event 3 + 25 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.99585 (GeV) + 1 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.0024477 (GeV) >>> Event 4 - 23 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.994089 (GeV) - 0 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0 (GeV) + 22 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.99564 (GeV) + 2 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.0018529 (GeV) number of event = 5 # diff --git a/examples/novice/N05/include/ExN05CalorimeterHit.hh b/examples/novice/N05/include/ExN05CalorimeterHit.hh index f5c4e08467..fcc1ebdc55 100644 --- a/examples/novice/N05/include/ExN05CalorimeterHit.hh +++ b/examples/novice/N05/include/ExN05CalorimeterHit.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05CalorimeterHit.hh,v 1.3 1999/12/15 14:49:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef ExN05CalorimeterHit_h diff --git a/examples/novice/N05/include/ExN05CalorimeterSD.hh b/examples/novice/N05/include/ExN05CalorimeterSD.hh index 48691fbacf..ae01a6112a 100644 --- a/examples/novice/N05/include/ExN05CalorimeterSD.hh +++ b/examples/novice/N05/include/ExN05CalorimeterSD.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05CalorimeterSD.hh,v 1.2 1999/12/15 14:49:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef ExN05CalorimeterSD_h diff --git a/examples/novice/N05/include/ExN05DetectorConstruction.hh b/examples/novice/N05/include/ExN05DetectorConstruction.hh index 040f34d033..9ee0b36df6 100644 --- a/examples/novice/N05/include/ExN05DetectorConstruction.hh +++ b/examples/novice/N05/include/ExN05DetectorConstruction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05DetectorConstruction.hh,v 1.2 1999/12/15 14:49:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 5f08fa4e88..5904a91905 100644 --- a/examples/novice/N05/include/ExN05DetectorMessenger.hh +++ b/examples/novice/N05/include/ExN05DetectorMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05DetectorMessenger.hh,v 1.2 1999/12/15 14:49:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N05/include/ExN05EMShowerModel.hh b/examples/novice/N05/include/ExN05EMShowerModel.hh index 6047a653f0..01c4754706 100644 --- a/examples/novice/N05/include/ExN05EMShowerModel.hh +++ b/examples/novice/N05/include/ExN05EMShowerModel.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05EMShowerModel.hh,v 1.3 1999/12/15 14:49:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //---------------------------------------------- diff --git a/examples/novice/N05/include/ExN05EnergySpot.hh b/examples/novice/N05/include/ExN05EnergySpot.hh index 36c86228a7..2e0b3c05b1 100644 --- a/examples/novice/N05/include/ExN05EnergySpot.hh +++ b/examples/novice/N05/include/ExN05EnergySpot.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05EnergySpot.hh,v 1.3 1999/12/15 14:49:28 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef ExN05EnergySpot_h #define ExN05EnergySpot_h diff --git a/examples/novice/N05/include/ExN05EventAction.hh b/examples/novice/N05/include/ExN05EventAction.hh index f7f49cbae7..9237fc9089 100644 --- a/examples/novice/N05/include/ExN05EventAction.hh +++ b/examples/novice/N05/include/ExN05EventAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05EventAction.hh,v 1.3 1999/12/15 14:49:28 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef ExN05EventAction_h diff --git a/examples/novice/N05/include/ExN05EventActionMessenger.hh b/examples/novice/N05/include/ExN05EventActionMessenger.hh index f4ab3e23e0..fcc618fd8b 100644 --- a/examples/novice/N05/include/ExN05EventActionMessenger.hh +++ b/examples/novice/N05/include/ExN05EventActionMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05EventActionMessenger.hh,v 1.2 1999/12/15 14:49:28 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef ExN05EventActionMessenger_h diff --git a/examples/novice/N05/include/ExN05MaxTimeCuts.hh b/examples/novice/N05/include/ExN05MaxTimeCuts.hh index d38507a11e..ac6f4901df 100644 --- a/examples/novice/N05/include/ExN05MaxTimeCuts.hh +++ b/examples/novice/N05/include/ExN05MaxTimeCuts.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05MaxTimeCuts.hh,v 1.3 1999/12/15 14:49:28 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/examples/novice/N05/include/ExN05MinEkineCuts.hh b/examples/novice/N05/include/ExN05MinEkineCuts.hh index 2bf3c6ed32..50a440beb6 100644 --- a/examples/novice/N05/include/ExN05MinEkineCuts.hh +++ b/examples/novice/N05/include/ExN05MinEkineCuts.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05MinEkineCuts.hh,v 1.3 1999/12/15 14:49:28 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/examples/novice/N05/include/ExN05MinRangeCuts.hh b/examples/novice/N05/include/ExN05MinRangeCuts.hh index b4a8144fc8..69cc07118b 100644 --- a/examples/novice/N05/include/ExN05MinRangeCuts.hh +++ b/examples/novice/N05/include/ExN05MinRangeCuts.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05MinRangeCuts.hh,v 1.3 1999/12/15 14:49:29 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/examples/novice/N05/include/ExN05PhysicsList.hh b/examples/novice/N05/include/ExN05PhysicsList.hh index e2a76d4023..41f91bf047 100644 --- a/examples/novice/N05/include/ExN05PhysicsList.hh +++ b/examples/novice/N05/include/ExN05PhysicsList.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05PhysicsList.hh,v 1.5 1999/12/15 14:49:29 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // #ifndef ExN05PhysicsList_h diff --git a/examples/novice/N05/include/ExN05PiModel.hh b/examples/novice/N05/include/ExN05PiModel.hh index 20c95c5c8c..02f97e99de 100644 --- a/examples/novice/N05/include/ExN05PiModel.hh +++ b/examples/novice/N05/include/ExN05PiModel.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05PiModel.hh,v 1.2 1999/12/15 14:49:29 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //---------------------------------------- diff --git a/examples/novice/N05/include/ExN05PionShowerModel.hh b/examples/novice/N05/include/ExN05PionShowerModel.hh index 59ece02fcd..7a89de2dfc 100644 --- a/examples/novice/N05/include/ExN05PionShowerModel.hh +++ b/examples/novice/N05/include/ExN05PionShowerModel.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05PionShowerModel.hh,v 1.3 1999/12/15 14:49:29 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //---------------------------------------------- diff --git a/examples/novice/N05/include/ExN05PrimaryGeneratorAction.hh b/examples/novice/N05/include/ExN05PrimaryGeneratorAction.hh index 5d32ab7ddc..7f5729036a 100644 --- a/examples/novice/N05/include/ExN05PrimaryGeneratorAction.hh +++ b/examples/novice/N05/include/ExN05PrimaryGeneratorAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05PrimaryGeneratorAction.hh,v 1.2 1999/12/15 14:49:29 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef ExN05PrimaryGeneratorAction_h diff --git a/examples/novice/N05/include/ExN05RunAction.hh b/examples/novice/N05/include/ExN05RunAction.hh index befe27949c..21e5852a03 100644 --- a/examples/novice/N05/include/ExN05RunAction.hh +++ b/examples/novice/N05/include/ExN05RunAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05RunAction.hh,v 1.6 2000/01/06 15:06:51 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef ExN05RunAction_h diff --git a/examples/novice/N05/include/ExN05SpecialCuts.hh b/examples/novice/N05/include/ExN05SpecialCuts.hh index af8bc4d691..77ca4bbef7 100644 --- a/examples/novice/N05/include/ExN05SpecialCuts.hh +++ b/examples/novice/N05/include/ExN05SpecialCuts.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05SpecialCuts.hh,v 1.3 1999/12/15 14:49:29 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/examples/novice/N05/include/ExN05SteppingAction.hh b/examples/novice/N05/include/ExN05SteppingAction.hh index a72745de37..73438cdd49 100644 --- a/examples/novice/N05/include/ExN05SteppingAction.hh +++ b/examples/novice/N05/include/ExN05SteppingAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05SteppingAction.hh,v 1.3 1999/12/15 14:49:29 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef ExN05SteppingAction_h diff --git a/examples/novice/N05/include/ExN05SteppingActionMessenger.hh b/examples/novice/N05/include/ExN05SteppingActionMessenger.hh index 833aefee8c..77ec52bbe3 100644 --- a/examples/novice/N05/include/ExN05SteppingActionMessenger.hh +++ b/examples/novice/N05/include/ExN05SteppingActionMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05SteppingActionMessenger.hh,v 1.2 1999/12/15 14:49:29 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef ExN05SteppingActionMessenger_h diff --git a/source/g3tog4/test/include/G3toG4VisManager.hh b/examples/novice/N05/include/ExN05VisManager.hh similarity index 80% rename from source/g3tog4/test/include/G3toG4VisManager.hh rename to examples/novice/N05/include/ExN05VisManager.hh index ecced57e04..cf792afdf1 100644 --- a/source/g3tog4/test/include/G3toG4VisManager.hh +++ b/examples/novice/N05/include/ExN05VisManager.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G3toG4VisManager.hh,v 1.2 1999/12/05 17:50:26 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: ExN05VisManager.hh,v 1.1 2000/06/29 07:42:05 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // @@ -23,23 +23,25 @@ // Alternatively, you can implement an empty function here and just // register the systems you want in your main(), e.g.: -// G4VisManager* myVisManager = new MyVisManager; +// G4VisManager* myVisManager = new ExN05VisManager; // myVisManager -> RegisterGraphicsSystem (new MyGraphicsSystem); //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -#ifndef G3toG4VisManager_h -#define G3toG4VisManager_h 1 +#ifndef ExN05VisManager_h +#define ExN05VisManager_h 1 + +#ifdef G4VIS_USE #include "G4VisManager.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -class G3toG4VisManager: public G4VisManager { +class ExN05VisManager: public G4VisManager { public: - G3toG4VisManager (); + ExN05VisManager (); private: @@ -48,3 +50,5 @@ private: }; #endif + +#endif diff --git a/examples/novice/N05/src/ExN05CalorimeterHit.cc b/examples/novice/N05/src/ExN05CalorimeterHit.cc index f411ae7d31..8cfd894165 100644 --- a/examples/novice/N05/src/ExN05CalorimeterHit.cc +++ b/examples/novice/N05/src/ExN05CalorimeterHit.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05CalorimeterHit.cc,v 1.2 1999/12/15 14:49:29 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "ExN05CalorimeterHit.hh" diff --git a/examples/novice/N05/src/ExN05CalorimeterSD.cc b/examples/novice/N05/src/ExN05CalorimeterSD.cc index a8c53606f3..415ce0c54d 100644 --- a/examples/novice/N05/src/ExN05CalorimeterSD.cc +++ b/examples/novice/N05/src/ExN05CalorimeterSD.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05CalorimeterSD.cc,v 1.2 1999/12/15 14:49:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "ExN05CalorimeterSD.hh" diff --git a/examples/novice/N05/src/ExN05DetectorConstruction.cc b/examples/novice/N05/src/ExN05DetectorConstruction.cc index 4781682b1b..1db8e87beb 100644 --- a/examples/novice/N05/src/ExN05DetectorConstruction.cc +++ b/examples/novice/N05/src/ExN05DetectorConstruction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05DetectorConstruction.cc,v 1.2 1999/12/15 14:49:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "ExN05DetectorConstruction.hh" #include "ExN05CalorimeterSD.hh" diff --git a/examples/novice/N05/src/ExN05DetectorMessenger.cc b/examples/novice/N05/src/ExN05DetectorMessenger.cc index 843f905895..72250bd173 100644 --- a/examples/novice/N05/src/ExN05DetectorMessenger.cc +++ b/examples/novice/N05/src/ExN05DetectorMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05DetectorMessenger.cc,v 1.2 1999/12/15 14:49:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N05/src/ExN05EMShowerModel.cc b/examples/novice/N05/src/ExN05EMShowerModel.cc index 60573677af..c905f265e0 100644 --- a/examples/novice/N05/src/ExN05EMShowerModel.cc +++ b/examples/novice/N05/src/ExN05EMShowerModel.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05EMShowerModel.cc,v 1.2 1999/12/15 14:49:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "ExN05EMShowerModel.hh" #include "ExN05EnergySpot.hh" diff --git a/examples/novice/N05/src/ExN05EnergySpot.cc b/examples/novice/N05/src/ExN05EnergySpot.cc index 4a940aca9c..06f16ba338 100644 --- a/examples/novice/N05/src/ExN05EnergySpot.cc +++ b/examples/novice/N05/src/ExN05EnergySpot.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05EnergySpot.cc,v 1.2 1999/12/15 14:49:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "ExN05EnergySpot.hh" diff --git a/examples/novice/N05/src/ExN05EventAction.cc b/examples/novice/N05/src/ExN05EventAction.cc index d11240e74b..93e7959cff 100644 --- a/examples/novice/N05/src/ExN05EventAction.cc +++ b/examples/novice/N05/src/ExN05EventAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05EventAction.cc,v 1.4 1999/12/15 14:49:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "ExN05EventAction.hh" diff --git a/examples/novice/N05/src/ExN05EventActionMessenger.cc b/examples/novice/N05/src/ExN05EventActionMessenger.cc index d0beff9d88..c1b2848486 100644 --- a/examples/novice/N05/src/ExN05EventActionMessenger.cc +++ b/examples/novice/N05/src/ExN05EventActionMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05EventActionMessenger.cc,v 1.2 1999/12/15 14:49:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "ExN05EventActionMessenger.hh" diff --git a/examples/novice/N05/src/ExN05MaxTimeCuts.cc b/examples/novice/N05/src/ExN05MaxTimeCuts.cc index e22a842fe1..6bdccce13b 100644 --- a/examples/novice/N05/src/ExN05MaxTimeCuts.cc +++ b/examples/novice/N05/src/ExN05MaxTimeCuts.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05MaxTimeCuts.cc,v 1.2 1999/12/15 14:49:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/examples/novice/N05/src/ExN05MinEkineCuts.cc b/examples/novice/N05/src/ExN05MinEkineCuts.cc index c6cee50df1..3f51b149a3 100644 --- a/examples/novice/N05/src/ExN05MinEkineCuts.cc +++ b/examples/novice/N05/src/ExN05MinEkineCuts.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05MinEkineCuts.cc,v 1.2 1999/12/15 14:49:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/examples/novice/N05/src/ExN05MinRangeCuts.cc b/examples/novice/N05/src/ExN05MinRangeCuts.cc index 9e8534cd6c..4fb69ff65a 100644 --- a/examples/novice/N05/src/ExN05MinRangeCuts.cc +++ b/examples/novice/N05/src/ExN05MinRangeCuts.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05MinRangeCuts.cc,v 1.2 1999/12/15 14:49:31 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/examples/novice/N05/src/ExN05PhysicsList.cc b/examples/novice/N05/src/ExN05PhysicsList.cc index 74edf2acbe..b59cc8ee07 100644 --- a/examples/novice/N05/src/ExN05PhysicsList.cc +++ b/examples/novice/N05/src/ExN05PhysicsList.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05PhysicsList.cc,v 1.5 1999/12/15 14:49:31 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/examples/novice/N05/src/ExN05PiModel.cc b/examples/novice/N05/src/ExN05PiModel.cc index a169e77d58..d2c8052b1e 100644 --- a/examples/novice/N05/src/ExN05PiModel.cc +++ b/examples/novice/N05/src/ExN05PiModel.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05PiModel.cc,v 1.2 1999/12/15 14:49:31 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "ExN05PiModel.hh" diff --git a/examples/novice/N05/src/ExN05PionShowerModel.cc b/examples/novice/N05/src/ExN05PionShowerModel.cc index a87dad200f..5c3152886b 100644 --- a/examples/novice/N05/src/ExN05PionShowerModel.cc +++ b/examples/novice/N05/src/ExN05PionShowerModel.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05PionShowerModel.cc,v 1.2 1999/12/15 14:49:31 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "ExN05PionShowerModel.hh" #include "ExN05EnergySpot.hh" diff --git a/examples/novice/N05/src/ExN05PrimaryGeneratorAction.cc b/examples/novice/N05/src/ExN05PrimaryGeneratorAction.cc index 8e8bfd77ea..44c5cb7ef1 100644 --- a/examples/novice/N05/src/ExN05PrimaryGeneratorAction.cc +++ b/examples/novice/N05/src/ExN05PrimaryGeneratorAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05PrimaryGeneratorAction.cc,v 1.2 1999/12/15 14:49:31 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "ExN05PrimaryGeneratorAction.hh" diff --git a/examples/novice/N05/src/ExN05RunAction.cc b/examples/novice/N05/src/ExN05RunAction.cc index 35fa3989e8..219ef39b16 100644 --- a/examples/novice/N05/src/ExN05RunAction.cc +++ b/examples/novice/N05/src/ExN05RunAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05RunAction.cc,v 1.5 2000/01/06 15:06:51 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // Make this appear first! diff --git a/examples/novice/N05/src/ExN05SpecialCuts.cc b/examples/novice/N05/src/ExN05SpecialCuts.cc index c6c697a905..fbfe3ea765 100644 --- a/examples/novice/N05/src/ExN05SpecialCuts.cc +++ b/examples/novice/N05/src/ExN05SpecialCuts.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05SpecialCuts.cc,v 1.3 1999/12/15 14:49:31 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/examples/novice/N05/src/ExN05SteppingAction.cc b/examples/novice/N05/src/ExN05SteppingAction.cc index f0a9bcc6a8..88ae563942 100644 --- a/examples/novice/N05/src/ExN05SteppingAction.cc +++ b/examples/novice/N05/src/ExN05SteppingAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05SteppingAction.cc,v 1.3 1999/12/15 14:49:31 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "ExN05SteppingAction.hh" diff --git a/examples/novice/N05/src/ExN05SteppingActionMessenger.cc b/examples/novice/N05/src/ExN05SteppingActionMessenger.cc index fa9ea95422..474af2f4b8 100644 --- a/examples/novice/N05/src/ExN05SteppingActionMessenger.cc +++ b/examples/novice/N05/src/ExN05SteppingActionMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: ExN05SteppingActionMessenger.cc,v 1.2 1999/12/15 14:49:31 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "ExN05SteppingActionMessenger.hh" diff --git a/source/g3tog4/test/src/G3toG4VisManager.cc b/examples/novice/N05/src/ExN05VisManager.cc similarity index 87% rename from source/g3tog4/test/src/G3toG4VisManager.cc rename to examples/novice/N05/src/ExN05VisManager.cc index 4c39ea7a0c..7a5c974839 100644 --- a/source/g3tog4/test/src/G3toG4VisManager.cc +++ b/examples/novice/N05/src/ExN05VisManager.cc @@ -5,19 +5,16 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G3toG4VisManager.cc,v 1.4 1999/12/15 14:49:45 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: ExN05VisManager.cc,v 1.1 2000/06/29 07:42:05 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -// -// John Allison 24th January 1998. //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -#include "G4ios.hh" #ifdef G4VIS_USE -#include "G3toG4VisManager.hh" +#include "ExN05VisManager.hh" // Supported drivers... @@ -57,10 +54,6 @@ #include "G4OpenInventorWin32.hh" #endif -#ifdef G4VIS_USE_RAYX -#include "G4RayX.hh" -#endif - #ifdef G4VIS_USE_VRML #include "G4VRML1.hh" #include "G4VRML2.hh" @@ -71,13 +64,17 @@ #include "G4VRML2File.hh" #endif -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G3toG4VisManager::G3toG4VisManager () {} +#ifdef G4VIS_USE_RAYTRACER +#include "G4RayTracer.hh" +#endif //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -void G3toG4VisManager::RegisterGraphicsSystems () { +ExN05VisManager::ExN05VisManager () {} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void ExN05VisManager::RegisterGraphicsSystems () { #ifdef G4VIS_USE_DAWN RegisterGraphicsSystem (new G4FukuiRenderer); @@ -115,10 +112,6 @@ 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); @@ -129,6 +122,10 @@ void G3toG4VisManager::RegisterGraphicsSystems () { 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/N06/History b/examples/novice/N06/History index fd7b554627..88fd19b68c 100644 --- a/examples/novice/N06/History +++ b/examples/novice/N06/History @@ -1,4 +1,4 @@ -$Id: History,v 1.2 1999/04/16 12:08:12 kurasige Exp $ +$Id: History,v 1.3 2000/06/17 12:34:01 stesting Exp $ ------------------------------------------------------------------- ========================================================= @@ -14,6 +14,10 @@ track of all tags. ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- + +June 17, 2000 John Allison (exampleN06-V01-01-00) +- Updated exampleN06.out for geant4-01-01-ref-06. + 16th April 1999 H.Kurashige - modify ExN06RunAction - modify ExN06PhysicsList::SetCuts diff --git a/examples/novice/N06/exampleN06.out b/examples/novice/N06/exampleN06.out index a36e59ebab..446b389b5d 100644 --- a/examples/novice/N06/exampleN06.out +++ b/examples/novice/N06/exampleN06.out @@ -1,6 +1,6 @@ ********************************************** - Geant4 version $Name: geant4-01-01 $ - (07-Dec-99) + Geant4 version $Name: geant4-02-00 $ + (10-Mar-2000) Copyright : Geant4 Collaboration ********************************************** /run/initialize @@ -26,7 +26,14 @@ eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to delta ray energy sampled from differential Xsection. PhysicsTables from 1 keV to 100 TeV in 100 bins. -eBrem: Total cross sections from a parametrisation. Good description from 1 KeV to 100 GeV. + eIoni Minimum Delta cut in range=0.1 mm. + + material min.delta energy(keV) + + Air 0.99 + Water 81.518 + +eBrem: Total cross sections from a parametrisation. Good description from 10 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. @@ -40,10 +47,17 @@ msc: Tables of transport mean free paths. displacement of the particle , too. PhysicsTables from 100 eV to 100 TeV in 100 bins. + hIoni Minimum Delta cut in range=0.1 mm. + + material min.delta energy(keV) + + Air 0.99 + Water 81.518 + 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 150 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 @@ -53,15 +67,15 @@ msc: Tables of transport mean free paths. 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 100 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. MuBrems: theoretical cross section - Good description up to 1000 TeV. - PhysicsTables from 1 GeV to 1000 PeV in 100 bins. + 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 TeV. - PhysicsTables from 1 GeV to 1000 PeV in 50 bins. + Good description up to 1000 PeV. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. /run/beamOn 1 /event/verbose 1 ### Run 0 start. @@ -76,39 +90,39 @@ MuPairProd: theoretical cross sections Track (trackID 1, parentID 0) is processed with stopping code 4 ### pop requested out of 281 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.735975,0.397463,-0.548055) - Old Polarization: (-0.677009,0.432082,-0.595789) - New Momentum Direction: (0.389635,0.540689,-0.745546) - New Polarization: (-0.920969,0.22875,-0.315419) + Old Momentum Direction: (0.73597,0.39746,-0.54805) + Old Polarization: (-0.67701,0.43208,-0.59579) + New Momentum Direction: (0.38964,0.54069,-0.74555) + New Polarization: (-0.92097,0.22875,-0.31542) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 281, parentID 1) is processed with stopping code 2 ### pop requested out of 280 stacked tracks. Photon at Boundary! - 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) + Old Momentum Direction: (0.74469,-0.63501,0.20541) + Old Polarization: (-0.66741,-0.70854,0.2292) + New Momentum Direction: (0.44146,-0.85373,0.27616) + New Polarization: (-0.89728,-0.42003,0.13587) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 280, parentID 1) is processed with stopping code 2 ### pop requested out of 279 stacked tracks. Scattering Photon! -Old Momentum Direction: (0.736984,0.65407,-0.170432) -Old Polarization: (-0.67591,0.713171,-0.185832) -New Polarization: (-0.45604,0.652081,0.341807) -Polarization Change: (-0.526584,0.752951,0.394681) -New Momentum Direction: (0.840923,0.516647,0.190155) -Momentum Change: (0.836653,0.514023,0.189189) +Old Momentum Direction: (0.73698,0.65407,-0.17043) +Old Polarization: (-0.67591,0.71317,-0.18583) +New Polarization: (-0.45604,0.65208,0.34181) +Polarization Change: (-0.52658,0.75295,0.39468) +New Momentum Direction: (0.84092,0.51665,0.13633) +Momentum Change: (0.84403,0.51855,0.13683) ** Photon Absorbed! ** 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.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) + Old Momentum Direction: (0.74373,0.43384,0.50857) + Old Polarization: (-0.66848,0.48268,0.56583) + New Momentum Direction: (0.43614,0.58402,0.68462) + New Polarization: (-0.89988,0.28306,0.33181) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 278, parentID 1) is processed with stopping code 2 @@ -122,28 +136,28 @@ Track (trackID 277, parentID 1) is processed with stopping code 2 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.736299,0.675843,0.0331686) - Old Polarization: (-0.676657,0.735413,0.0360921) - New Momentum Direction: (0.391717,0.91898,0.045101) - New Polarization: (-0.920086,0.391246,0.0192013) + Old Momentum Direction: (0.7363,0.67584,0.033169) + Old Polarization: (-0.67666,0.73541,0.036092) + New Momentum Direction: (0.39172,0.91898,0.045101) + New Polarization: (-0.92009,0.39125,0.019201) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 275, parentID 1) is processed with stopping code 2 ### pop requested out of 274 stacked tracks. Photon at Boundary! - 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) + Old Momentum Direction: (0.74157,0.57791,-0.34074) + Old Polarization: (-0.67088,0.6388,-0.37664) + New Momentum Direction: (0.4238,0.78023,-0.46003) + New Polarization: (-0.90575,0.36507,-0.21525) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73922,-0.15843,-0.65456) + Old Polarization: (-0.67346,-0.17391,-0.71848) + New Momentum Direction: (0.40994,-0.21458,-0.88651) + New Polarization: (-0.91211,-0.096439,-0.39843) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 273, parentID 1) is processed with stopping code 2 @@ -153,19 +167,19 @@ Track (trackID 273, parentID 1) is processed with stopping code 2 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.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) + Old Momentum Direction: (0.74091,0.44627,-0.50189) + Old Polarization: (-0.67161,0.49232,-0.55368) + New Momentum Direction: (0.41998,0.60304,-0.6782) + New Polarization: (-0.90753,0.27907,-0.31385) *** FresnelRefraction *** No Absorbtion length specified 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.736835,-0.65536,-0.166064) - Old Polarization: (-0.676073,-0.714261,-0.180989) - New Momentum Direction: (0.395135,-0.89048,-0.225642) - New Polarization: (-0.918623,-0.383029,-0.0970573) + Old Momentum Direction: (0.73683,-0.65536,-0.16606) + Old Polarization: (-0.67607,-0.71426,-0.18099) + New Momentum Direction: (0.39513,-0.89048,-0.22564) + New Polarization: (-0.91862,-0.38303,-0.097057) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 270, parentID 1) is processed with stopping code 2 @@ -175,46 +189,46 @@ Track (trackID 270, parentID 1) is processed with stopping code 2 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.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) + Old Momentum Direction: (0.73742,0.62425,0.25794) + Old Polarization: (-0.67544,0.68153,0.28161) + New Momentum Direction: (0.3988,0.84754,0.3502) + New Polarization: (-0.91704,0.36857,0.15229) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73987,-0.35574,-0.571) + Old Polarization: (-0.67275,-0.39123,-0.62797) + New Momentum Direction: (0.4138,-0.48139,-0.77268) + New Polarization: (-0.91037,-0.21881,-0.35121) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 267, parentID 1) is processed with stopping code 2 ### pop requested out of 266 stacked tracks. Photon at Boundary! - 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) + Old Momentum Direction: (0.73964,-0.64716,0.18469) + Old Polarization: (-0.673,-0.71125,0.20298) + New Momentum Direction: (0.41246,-0.876,0.25) + New Polarization: (-0.91097,-0.39663,0.11319) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 266, parentID 1) is processed with stopping code 2 ### pop requested out of 265 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.738509,0.583812,-0.337297) - Old Polarization: (-0.674244,0.639457,-0.369446) - New Momentum Direction: (0.405575,0.791464,-0.457268) - New Polarization: (-0.914062,0.351178,-0.202893) + Old Momentum Direction: (0.73851,0.58381,-0.3373) + Old Polarization: (-0.67424,0.63946,-0.36945) + New Momentum Direction: (0.40558,0.79146,-0.45727) + New Polarization: (-0.91406,0.35118,-0.20289) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73944,-0.63033,0.23647) + Old Polarization: (-0.67323,-0.69232,0.25973) + New Momentum Direction: (0.41123,-0.85345,0.32018) + New Polarization: (-0.91153,-0.38502,0.14444) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 264, parentID 1) is processed with stopping code 2 @@ -228,58 +242,58 @@ Track (trackID 263, parentID 1) is processed with stopping code 2 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.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) + Old Momentum Direction: (0.74127,-0.21901,-0.63447) + Old Polarization: (-0.67121,-0.24188,-0.7007) + New Momentum Direction: (0.42209,-0.29581,-0.85694) + New Polarization: (-0.90656,-0.13773,-0.39898) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 261, parentID 1) is processed with stopping code 2 ### pop requested out of 260 stacked tracks. 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) + Old Momentum Direction: (0.73836,-0.39509,-0.54656) + Old Polarization: (-0.67441,-0.43255,-0.59839) + New Momentum Direction: (0.40465,-0.53572,-0.74112) + New Polarization: (-0.91447,-0.23706,-0.32795) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 260, parentID 1) is processed with stopping code 2 ### pop requested out of 259 stacked tracks. Photon at Boundary! - 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) + Old Momentum Direction: (0.73709,-0.67577,0.005142) + Old Polarization: (-0.67579,-0.73707,0.0056084) + New Momentum Direction: (0.39676,-0.9179,0.0069843) + New Polarization: (-0.91792,-0.39675,0.0030188) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 259, parentID 1) is processed with stopping code 2 ### pop requested out of 258 stacked tracks. Scattering Photon! -Old Momentum Direction: (0.738618,0.216358,0.638462) -Old Polarization: (-0.674125,0.237057,0.699543) -New Polarization: (-0.666156,0.58826,-0.28736) -Polarization Change: (-0.713215,0.629817,-0.30766) -New Momentum Direction: (-0.651935,-0.467762,0.643216) -Momentum Change: (-0.633949,-0.454857,0.625471) +Old Momentum Direction: (0.73862,0.21636,0.63846) +Old Polarization: (-0.67412,0.23706,0.69954) +New Polarization: (-0.66616,0.58826,-0.28736) +Polarization Change: (-0.71322,0.62982,-0.30766) +New Momentum Direction: (-0.65194,-0.46776,0.55375) +Momentum Change: (-0.66871,-0.4798,0.568) Photon at Boundary! - Old Momentum Direction: (-0.633949,-0.454857,0.625471) - Old Polarization: (-0.713215,0.629817,-0.30766) - New Momentum Direction: (-0.633949,-0.454857,-0.625471) - New Polarization: (0.713215,-0.629817,-0.30766) + Old Momentum Direction: (-0.66871,-0.4798,0.568) + Old Polarization: (-0.71322,0.62982,-0.30766) + New Momentum Direction: (-0.66871,-0.4798,-0.568) + New Polarization: (0.71322,-0.62982,-0.30766) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (-0.633949,-0.454857,-0.625471) - Old Polarization: (0.713215,-0.629817,-0.30766) - New Momentum Direction: (0.633949,-0.454857,-0.625471) - New Polarization: (0.713215,0.629817,0.30766) + Old Momentum Direction: (-0.66871,-0.4798,-0.568) + Old Polarization: (0.71322,-0.62982,-0.30766) + New Momentum Direction: (0.66871,-0.4798,-0.568) + New Polarization: (0.71322,0.62982,0.30766) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (0.633949,-0.454857,-0.625471) - Old Polarization: (0.713215,0.629817,0.30766) - New Momentum Direction: (0.633949,0.454857,-0.625471) - New Polarization: (-0.713215,0.629817,-0.30766) + Old Momentum Direction: (0.66871,-0.4798,-0.568) + Old Polarization: (0.71322,0.62982,0.30766) + New Momentum Direction: (0.66871,0.4798,-0.568) + New Polarization: (-0.71322,0.62982,-0.30766) *** TotalInternalReflection *** No Absorbtion length specified @@ -287,10 +301,10 @@ No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73883,0.23991,0.62974) + Old Polarization: (-0.6739,0.26303,0.69042) + New Momentum Direction: (0.40752,0.32511,0.85337) + New Polarization: (-0.9132,0.14508,0.38082) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 257, parentID 1) is processed with stopping code 2 @@ -300,37 +314,37 @@ Track (trackID 257, parentID 1) is processed with stopping code 2 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.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) + Old Momentum Direction: (0.74052,0.036074,0.67106) + Old Polarization: (-0.67203,0.039751,0.73946) + New Momentum Direction: (0.41772,0.048771,0.90727) + New Polarization: (-0.90858,0.022422,0.41711) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.74235,0.24998,-0.62163) + Old Polarization: (-0.67001,0.27697,-0.68875) + New Momentum Direction: (0.42834,0.33714,-0.83837) + New Polarization: (-0.90362,0.15981,-0.39741) *** FresnelRefraction *** No Absorbtion length specified 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.736886,-0.390388,-0.551902) - Old Polarization: (-0.676017,-0.425539,-0.601596) - New Momentum Direction: (0.395461,-0.530407,-0.749852) - New Polarization: (-0.918483,-0.228372,-0.322856) + Old Momentum Direction: (0.73689,-0.39039,-0.5519) + Old Polarization: (-0.67602,-0.42554,-0.6016) + New Momentum Direction: (0.39546,-0.53041,-0.74985) + New Polarization: (-0.91848,-0.22837,-0.32286) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 253, parentID 1) is processed with stopping code 2 ### pop requested out of 252 stacked tracks. 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) + Old Momentum Direction: (0.7436,0.48102,-0.46441) + Old Polarization: (-0.66862,0.53496,-0.51649) + New Momentum Direction: (0.43541,0.64764,-0.62528) + New Polarization: (-0.90023,0.31324,-0.30243) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 252, parentID 1) is processed with stopping code 2 @@ -352,46 +366,46 @@ Track (trackID 249, parentID 1) is processed with stopping code 2 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.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) + Old Momentum Direction: (0.73738,-0.063004,-0.67253) + Old Polarization: (-0.67548,-0.068778,-0.73417) + New Momentum Direction: (0.39857,-0.085545,-0.91314) + New Polarization: (-0.91714,-0.037176,-0.39683) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73744,-0.24738,-0.62847) + Old Polarization: (-0.67541,-0.2701,-0.6862) + New Momentum Direction: (0.39898,-0.33585,-0.85324) + New Polarization: (-0.91696,-0.14613,-0.37125) *** FresnelRefraction *** No Absorbtion length specified 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.745055,0.400941,-0.533047) - Old Polarization: (-0.667003,0.447859,-0.595424) - New Momentum Direction: (0.44345,0.538773,-0.716293) - New Polarization: (-0.896299,0.266561,-0.354391) + Old Momentum Direction: (0.74506,0.40094,-0.53305) + Old Polarization: (-0.667,0.44786,-0.59542) + New Momentum Direction: (0.44345,0.53877,-0.71629) + New Polarization: (-0.8963,0.26656,-0.35439) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.74,-0.1113,0.66333) + Old Polarization: (-0.6726,-0.12245,0.7298) + New Momentum Direction: (0.41462,-0.15058,0.89745) + New Polarization: (-0.91,-0.068607,0.4089) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 244, parentID 1) is processed with stopping code 2 ### pop requested out of 243 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.736824,-0.057729,0.673615) - Old Polarization: (-0.676084,-0.0629154,0.734133) - New Momentum Direction: (0.395068,-0.0784411,0.915297) - New Polarization: (-0.918652,-0.0337338,0.393625) + Old Momentum Direction: (0.73682,-0.057729,0.67362) + Old Polarization: (-0.67608,-0.062915,0.73413) + New Momentum Direction: (0.39507,-0.078441,0.9153) + New Polarization: (-0.91865,-0.033734,0.39363) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 243, parentID 1) is processed with stopping code 2 @@ -405,10 +419,10 @@ 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.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) + Old Momentum Direction: (0.74154,-0.63255,0.2236) + Old Polarization: (-0.6709,-0.69915,0.24715) + New Momentum Direction: (0.42369,-0.85402,0.30189) + New Polarization: (-0.90581,-0.39946,0.14121) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 240, parentID 1) is processed with stopping code 2 @@ -422,30 +436,30 @@ Track (trackID 239, parentID 1) is processed with stopping code 2 Track (trackID 238, parentID 1) is processed with stopping code 2 ### pop requested out of 237 stacked tracks. Scattering Photon! -Old Momentum Direction: (0.736245,-0.672187,0.0781553) -Old Polarization: (-0.676715,-0.731318,0.0850304) -New Polarization: (-0.284326,-0.813486,0.16632) -Polarization Change: (-0.323964,-0.926895,0.189507) -New Momentum Direction: (-0.940525,0.336747,0.051355) -Momentum Change: (-0.940232,0.336642,0.051339) +Old Momentum Direction: (0.73624,-0.67219,0.078155) +Old Polarization: (-0.67672,-0.73132,0.08503) +New Polarization: (-0.28433,-0.81349,0.16632) +Polarization Change: (-0.32396,-0.9269,0.18951) +New Momentum Direction: (-0.94053,0.33675,0.039221) +Momentum Change: (-0.94075,0.33683,0.039231) ** Photon Absorbed! ** Track (trackID 237, parentID 1) is processed with stopping code 2 ### pop requested out of 236 stacked tracks. Photon at Boundary! - 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) + Old Momentum Direction: (0.73786,0.67409,-0.034248) + Old Polarization: (-0.67496,0.7369,-0.037439) + New Momentum Direction: (0.40154,0.91466,-0.04647) + New Polarization: (-0.91584,0.40103,-0.020375) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 236, parentID 1) is processed with stopping code 2 ### pop requested out of 235 stacked tracks. 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) + Old Momentum Direction: (0.73929,-0.39716,0.54379) + Old Polarization: (-0.67338,-0.43603,0.59702) + New Momentum Direction: (0.41035,-0.53785,0.73643) + New Polarization: (-0.91193,-0.24202,0.33138) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 235, parentID 1) is processed with stopping code 2 @@ -467,17 +481,17 @@ Track (trackID 232, parentID 1) is processed with stopping code 2 Track (trackID 231, parentID 1) is processed with stopping code 2 ### pop requested out of 230 stacked tracks. Scattering Photon! -Old Momentum Direction: (0.735984,-0.404922,-0.542555) -Old Polarization: (-0.676999,-0.440201,-0.589826) -New Polarization: (-0.712808,-0.237148,-0.530962) -Polarization Change: (-0.774858,-0.257791,-0.577182) -New Momentum Direction: (-0.593186,0.300651,0.84243) -Momentum Change: (-0.552681,0.280122,0.784905) +Old Momentum Direction: (0.73598,-0.40492,-0.54256) +Old Polarization: (-0.677,-0.4402,-0.58983) +New Polarization: (-0.71281,-0.23715,-0.53096) +Polarization Change: (-0.77486,-0.25779,-0.57718) +New Momentum Direction: (-0.59319,0.30065,0.66206) +Momentum Change: (-0.63213,0.32039,0.70552) Photon at Boundary! - Old Momentum Direction: (-0.552681,0.280122,0.784905) - Old Polarization: (-0.774858,-0.257791,-0.577182) - New Momentum Direction: (-0.75183,0.381059,0.538094) - New Polarization: (-0.630667,-0.177483,-0.755486) + Old Momentum Direction: (-0.63213,0.32039,0.70552) + Old Polarization: (-0.77486,-0.25779,-0.57718) + New Momentum Direction: (-0.85991,0.43584,0.26572) + New Polarization: (-0.40323,-0.26078,-0.87716) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 230, parentID 1) is processed with stopping code 2 @@ -487,42 +501,42 @@ Track (trackID 230, parentID 1) is processed with stopping code 2 Track (trackID 229, parentID 1) is processed with stopping code 2 ### pop requested out of 228 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.741997,0.297764,-0.600648) - Old Polarization: (-0.670403,0.329562,-0.664792) - New Momentum Direction: (0.426299,0.401776,-0.81046) - New Polarization: (-0.904582,0.189343,-0.381943) + Old Momentum Direction: (0.742,0.29776,-0.60065) + Old Polarization: (-0.6704,0.32956,-0.66479) + New Momentum Direction: (0.4263,0.40178,-0.81046) + New Polarization: (-0.90458,0.18934,-0.38194) *** FresnelRefraction *** No Absorbtion length specified 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.737973,0.385994,-0.553539) - Old Polarization: (-0.674831,0.42211,-0.605332) - New Momentum Direction: (0.40227,0.523665,-0.750968) - New Polarization: (-0.915521,0.230093,-0.329968) + Old Momentum Direction: (0.73797,0.38599,-0.55354) + Old Polarization: (-0.67483,0.42211,-0.60533) + New Momentum Direction: (0.40227,0.52367,-0.75097) + New Polarization: (-0.91552,0.23009,-0.32997) *** FresnelRefraction *** No Absorbtion length specified 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.735928,0.203423,0.645778) - Old Polarization: (-0.67706,0.22111,0.701926) - New Momentum Direction: (-0.735928,0.203423,0.645778) - New Polarization: (-0.67706,-0.22111,-0.701926) + Old Momentum Direction: (0.73593,0.20342,0.64578) + Old Polarization: (-0.67706,0.22111,0.70193) + New Momentum Direction: (-0.73593,0.20342,0.64578) + New Polarization: (-0.67706,-0.22111,-0.70193) *** FresnelReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (-0.735928,0.203423,0.645778) - Old Polarization: (-0.67706,-0.22111,-0.701926) - New Momentum Direction: (-0.735928,0.203423,-0.645778) - New Polarization: (0.67706,0.22111,-0.701926) + Old Momentum Direction: (-0.73593,0.20342,0.64578) + Old Polarization: (-0.67706,-0.22111,-0.70193) + New Momentum Direction: (-0.73593,0.20342,-0.64578) + New Polarization: (0.67706,0.22111,-0.70193) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (-0.735928,0.203423,-0.645778) - Old Polarization: (0.67706,0.22111,-0.701926) - New Momentum Direction: (-0.389332,0.276744,-0.878541) - New Polarization: (0.921097,0.116975,-0.371344) + Old Momentum Direction: (-0.73593,0.20342,-0.64578) + Old Polarization: (0.67706,0.22111,-0.70193) + New Momentum Direction: (-0.38933,0.27674,-0.87854) + New Polarization: (0.9211,0.11697,-0.37134) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 226, parentID 1) is processed with stopping code 2 @@ -532,161 +546,180 @@ Track (trackID 226, parentID 1) is processed with stopping code 2 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.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) + Old Momentum Direction: (0.73758,0.20305,-0.64401) + Old Polarization: (-0.67526,0.22179,-0.70344) + New Momentum Direction: (0.39982,0.27562,-0.87417) + New Polarization: (-0.91659,0.12023,-0.38132) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 224, parentID 1) is processed with stopping code 2 ### pop requested out of 223 stacked tracks. Photon at Boundary! - 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) + Old Momentum Direction: (0.74277,0.46697,0.47983) + Old Polarization: (-0.66955,0.51804,0.5323) + New Momentum Direction: (0.43072,0.62943,0.64676) + New Polarization: (-0.90249,0.3004,0.30867) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 223, parentID 1) is processed with stopping code 2 ### pop requested out of 222 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.73713,-0.0325807,-0.674965) - Old Polarization: (-0.675751,-0.03554,-0.736273) - New Momentum Direction: (0.397004,-0.0442517,-0.916749) - New Polarization: (-0.917817,-0.0191412,-0.396542) + Old Momentum Direction: (0.73713,-0.032581,-0.67496) + Old Polarization: (-0.67575,-0.03554,-0.73627) + New Momentum Direction: (0.397,-0.044252,-0.91675) + New Polarization: (-0.91782,-0.019141,-0.39654) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73618,-0.38499,-0.55661) + Old Polarization: (-0.67678,-0.41878,-0.60547) + New Momentum Direction: (0.39098,-0.52357,-0.75697) + New Polarization: (-0.9204,-0.22241,-0.32156) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 221, parentID 1) is processed with stopping code 2 ### pop requested out of 220 stacked tracks. Scattering Photon! -Old Momentum Direction: (0.736584,-0.673996,-0.0563321) -Old Polarization: (-0.676346,-0.734025,-0.0613493) -New Polarization: (-0.761845,-0.324003,-0.270473) -Polarization Change: (-0.874736,-0.372014,-0.310552) -New Momentum Direction: (0.0350424,-0.635868,0.896584) -Momentum Change: (0.0318644,-0.5782,0.815272) +Old Momentum Direction: (0.73658,-0.674,-0.056332) +Old Polarization: (-0.67635,-0.73403,-0.061349) +New Polarization: (-0.76185,-0.324,-0.27047) +Polarization Change: (-0.87474,-0.37201,-0.31055) +New Momentum Direction: (0.035042,-0.63587,0.66301) +Momentum Change: (0.038118,-0.69168,0.7212) Photon at Boundary! - Old Momentum Direction: (0.0318644,-0.5782,0.815272) - Old Polarization: (-0.874736,-0.372014,-0.310552) - New Momentum Direction: (0.0433108,-0.785904,0.616829) - New Polarization: (-0.794067,-0.401757,-0.456124) - *** FresnelRefraction *** + Old Momentum Direction: (0.038118,-0.69168,0.7212) + Old Polarization: (-0.87474,-0.37201,-0.31055) + New Momentum Direction: (0.038118,0.69168,0.7212) + New Polarization: (0.90927,0.27534,-0.31213) + *** FresnelReflection *** No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.038118,0.69168,0.7212) + Old Polarization: (0.90927,0.27534,-0.31213) + New Momentum Direction: (0.038118,0.69168,-0.7212) + New Polarization: (-0.98183,-0.10832,-0.15578) + *** FresnelReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** 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.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 *** -No Absorbtion length specified + +** Photon Absorbed! ** Track (trackID 219, parentID 1) is processed with stopping code 2 ### pop requested out of 218 stacked tracks. - -** Photon Absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.73832,0.045599,0.67291) + Old Polarization: (-0.67445,0.049917,0.73663) + New Momentum Direction: (0.40441,0.061834,0.91248) + New Polarization: (-0.91458,0.027342,0.40349) + *** FresnelRefraction *** +No Absorbtion length specified Track (trackID 218, parentID 1) is processed with stopping code 2 ### pop requested out of 217 stacked tracks. - -** Photon Absorbed! ** +Scattering Photon! +Old Momentum Direction: (0.73644,0.67636,0.0138) +Old Polarization: (-0.6765,0.73629,0.015022) +New Polarization: (-0.74503,0.50417,0.11458) +Polarization Change: (-0.82155,0.55596,0.12634) +New Momentum Direction: (0.061566,-0.1131,0.89801) +Momentum Change: (0.067864,-0.12467,0.98987) + Photon at Boundary! + Old Momentum Direction: (0.067864,-0.12467,0.98987) + Old Polarization: (-0.82155,0.55596,0.12634) + New Momentum Direction: (0.09226,-0.16949,0.9812) + New Polarization: (0.12986,-0.97494,-0.18062) + *** FresnelRefraction *** +No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73894,-0.48039,-0.47243) + Old Polarization: (-0.67377,-0.52686,-0.51812) + New Momentum Direction: (0.40821,-0.65088,-0.64009) + New Polarization: (-0.91289,-0.29105,-0.28622) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 216, parentID 1) is processed with stopping code 2 ### pop requested out of 215 stacked tracks. - Photon at Boundary! - 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 *** -No Absorbtion length specified -Track (trackID 215, parentID 1) is processed with stopping code 2 -### pop requested out of 214 stacked tracks. Scattering Photon! -Old Momentum Direction: (0.742628,-0.0945272,0.662999) -Old Polarization: (-0.669704,-0.10482,0.735193) -New Polarization: (-0.50674,-0.153193,0.767969) -Polarization Change: (-0.543273,-0.164237,0.823335) -New Momentum Direction: (0.573407,0.564296,0.718593) -Momentum Change: (0.531571,0.523124,0.666163) +Old Momentum Direction: (0.74254,-0.10177,-0.66203) +Old Polarization: (-0.6698,-0.11282,-0.73392) +New Polarization: (-0.84439,0.30998,0.035855) +Polarization Change: (-0.938,0.34435,0.039829) +New Momentum Direction: (-0.31995,-0.8226,-0.42309) +Momentum Change: (-0.32688,-0.84042,-0.43225) Photon at Boundary! - Old Momentum Direction: (0.531571,0.523124,0.666163) - Old Polarization: (-0.543273,-0.164237,0.823335) - New Momentum Direction: (0.531571,0.523124,-0.666163) - New Polarization: (0.543273,0.164237,0.823335) + Old Momentum Direction: (-0.32688,-0.84042,-0.43225) + Old Polarization: (-0.938,0.34435,0.039829) + New Momentum Direction: (-0.32688,0.84042,-0.43225) + New Polarization: (0.71309,-0.080827,-0.6964) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.32688,0.84042,-0.43225) + Old Polarization: (0.71309,-0.080827,-0.6964) + New Momentum Direction: (-0.32688,0.84042,0.43225) + New Polarization: (-0.71309,0.080827,-0.6964) *** TotalInternalReflection *** No Absorbtion length specified +** Photon Absorbed! ** +Track (trackID 215, parentID 1) is processed with stopping code 2 +### pop requested out of 214 stacked tracks. + ** Photon Absorbed! ** 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.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) + Old Momentum Direction: (0.73807,0.51123,-0.44033) + Old Polarization: (-0.67472,0.55923,-0.48168) + New Momentum Direction: (0.40288,0.69348,-0.59731) + New Polarization: (-0.91525,0.30526,-0.26293) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 213, parentID 1) is processed with stopping code 2 ### pop requested out of 212 stacked tracks. - -** Photon Absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.74026,-0.62658,0.24373) + Old Polarization: (-0.67232,-0.6899,0.26837) + New Momentum Direction: (0.41616,-0.84743,0.32964) + New Polarization: (-0.90929,-0.38785,0.15087) + *** FresnelRefraction *** +No Absorbtion length specified Track (trackID 212, parentID 1) is processed with stopping code 2 ### pop requested out of 211 stacked tracks. - -** Photon Absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.74376,-0.64772,-0.16514) + Old Polarization: (-0.66844,-0.72071,-0.18375) + New Momentum Direction: (0.43632,-0.8719,-0.2223) + New Polarization: (-0.89979,-0.42279,-0.10779) + *** FresnelRefraction *** +No Absorbtion length specified 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.737018,0.168835,0.654446) - Old Polarization: (-0.675873,0.18411,0.713652) - New Momentum Direction: (-0.737018,0.168835,0.654446) - New Polarization: (-0.675873,-0.18411,-0.713652) - *** FresnelReflection *** + Old Momentum Direction: (0.73702,0.16884,0.65445) + Old Polarization: (-0.67587,0.18411,0.71365) + New Momentum Direction: (0.39629,0.22935,0.88902) + New Polarization: (-0.91812,0.098996,0.38373) + *** FresnelRefraction *** No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.737018,0.168835,0.654446) - Old Polarization: (-0.675873,-0.18411,-0.713652) - New Momentum Direction: (-0.737018,0.168835,-0.654446) - New Polarization: (0.675873,0.18411,-0.713652) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** 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.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) + Old Momentum Direction: (0.73879,0.21443,-0.63891) + Old Polarization: (-0.67393,0.23507,-0.7004) + New Momentum Direction: (0.40732,0.29059,-0.86583) + New Polarization: (-0.91329,0.1296,-0.38615) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 209, parentID 1) is processed with stopping code 2 ### pop requested out of 208 stacked tracks. - Photon at Boundary! - 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 *** -No Absorbtion length specified + +** Photon Absorbed! ** Track (trackID 208, parentID 1) is processed with stopping code 2 ### pop requested out of 207 stacked tracks. @@ -698,81 +731,86 @@ Track (trackID 207, parentID 1) is processed with stopping code 2 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.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) + Old Momentum Direction: (0.73991,0.55854,-0.37493) + Old Polarization: (-0.67271,0.61433,-0.41238) + New Momentum Direction: (0.41403,0.75578,-0.50732) + New Polarization: (-0.91026,0.34376,-0.23076) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 205, parentID 1) is processed with stopping code 2 ### pop requested out of 204 stacked tracks. - -** Photon Absorbed! ** -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.737686,-0.542505,-0.40188) - Old Polarization: (-0.675144,-0.59276,-0.439108) - New Momentum Direction: (0.400487,-0.736286,-0.545429) - New Polarization: (-0.916302,-0.321808,-0.23839) + Old Momentum Direction: (0.73843,0.61221,-0.28271) + Old Polarization: (-0.67433,0.6704,-0.30959) + New Momentum Direction: (0.40507,0.83005,-0.38331) + New Polarization: (-0.91428,0.36775,-0.16983) *** FresnelRefraction *** No Absorbtion length specified +Track (trackID 204, parentID 1) is processed with stopping code 2 +### pop requested out of 203 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.739378,-0.664852,0.106262) - Old Polarization: (-0.67329,-0.730112,0.116692) - New Momentum Direction: (0.410869,-0.900268,0.143888) - New Polarization: (-0.911695,-0.405719,0.0648453) + Old Momentum Direction: (0.73938,-0.66485,0.10626) + Old Polarization: (-0.67329,-0.73011,0.11669) + New Momentum Direction: (0.41087,-0.90027,0.14389) + New Polarization: (-0.91169,-0.40572,0.064845) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.74042,-0.67161,0.026691) + Old Polarization: (-0.67214,-0.73984,0.029402) + New Momentum Direction: (0.41709,-0.90815,0.036091) + New Polarization: (-0.90886,-0.41676,0.016563) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 201, parentID 1) is processed with stopping code 2 ### pop requested out of 200 stacked tracks. - -** Photon Absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.7361,0.67047,0.092864) + Old Polarization: (-0.67687,0.72914,0.10099) + New Momentum Direction: (0.39044,0.91192,0.12631) + New Polarization: (-0.92063,0.38675,0.053567) + *** FresnelRefraction *** +No Absorbtion length specified 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.743503,0.668728,-0.00241929) - Old Polarization: (-0.668733,0.743498,-0.00268979) - New Momentum Direction: (0.434856,0.900494,-0.00325777) - New Polarization: (-0.9005,0.434853,-0.00157319) + Old Momentum Direction: (0.7435,0.66873,-0.0024193) + Old Polarization: (-0.66873,0.7435,-0.0026898) + New Momentum Direction: (0.43486,0.90049,-0.0032578) + New Polarization: (-0.9005,0.43485,-0.0015732) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73744,0.17722,-0.65174) + Old Polarization: (-0.67541,0.19349,-0.71161) + New Momentum Direction: (0.39898,0.2406,-0.88483) + New Polarization: (-0.91696,0.10469,-0.385) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.74341,0.32222,0.58611) + Old Polarization: (-0.66884,0.35815,0.65145) + New Momentum Direction: (0.43431,0.43395,0.78934) + New Polarization: (-0.90076,0.20924,0.38059) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73667,0.62363,-0.26155) + Old Polarization: (-0.67626,0.67934,-0.28492) + New Momentum Direction: (0.39407,0.84756,-0.35547) + New Polarization: (-0.91908,0.3634,-0.15241) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 196, parentID 1) is processed with stopping code 2 @@ -782,610 +820,616 @@ Track (trackID 196, parentID 1) is processed with stopping code 2 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.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) + Old Momentum Direction: (0.73752,-0.034505,0.67445) + Old Polarization: (-0.67533,-0.037682,0.73655) + New Momentum Direction: (0.39943,-0.046841,0.91557) + New Polarization: (-0.91676,-0.020408,0.39891) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 194, parentID 1) is processed with stopping code 2 ### pop requested out of 193 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.737056,0.328698,-0.590514) - Old Polarization: (-0.675832,0.358475,-0.644008) - New Momentum Direction: (0.396533,0.446489,-0.802128) - New Polarization: (-0.91802,0.192858,-0.346474) - *** FresnelRefraction *** -No Absorbtion length specified + +** Photon Absorbed! ** 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.735897,0.674612,0.0579188) - Old Polarization: (-0.677094,0.733199,0.0629488) - New Momentum Direction: (0.38913,0.917807,0.0787982) - New Polarization: (-0.921183,0.387703,0.0332862) - *** FresnelRefraction *** -No Absorbtion length specified + +** Photon Absorbed! ** Track (trackID 192, parentID 1) is processed with stopping code 2 ### pop requested out of 191 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.73672,0.61893,-0.27234) +Old Polarization: (-0.6762,0.67432,-0.29672) +New Polarization: (-0.33005,0.4236,-0.67945) +Polarization Change: (-0.38111,0.48912,-0.78455) +New Momentum Direction: (0.20313,-0.67472,-0.51932) +Momentum Change: (0.23206,-0.77082,-0.59329) Photon at Boundary! - 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) + Old Momentum Direction: (0.23206,-0.77082,-0.59329) + Old Polarization: (-0.38111,0.48912,-0.78455) + New Momentum Direction: (0.31536,-0.50049,-0.80626) + New Polarization: (-0.30656,0.75033,-0.58568) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 191, parentID 1) is processed with stopping code 2 ### pop requested out of 190 stacked tracks. - -** Photon Absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.73733,0.44648,-0.50695) + Old Polarization: (-0.67553,0.48733,-0.55333) + New Momentum Direction: (0.39828,0.60625,-0.68836) + New Polarization: (-0.91727,0.26323,-0.29888) + *** FresnelRefraction *** +No Absorbtion length specified Track (trackID 190, parentID 1) is processed with stopping code 2 ### pop requested out of 189 stacked tracks. - -** Photon Absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.74344,0.41569,0.52392) + Old Polarization: (-0.6688,0.46209,0.5824) + New Momentum Direction: (0.43453,0.5598,0.70556) + New Polarization: (-0.90066,0.27008,0.3404) + *** FresnelRefraction *** +No Absorbtion length specified 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.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) + Old Momentum Direction: (0.74297,-0.50264,-0.44199) + Old Polarization: (-0.66933,-0.55793,-0.49062) + New Momentum Direction: (0.43183,-0.67733,-0.59561) + New Polarization: (-0.90195,-0.32429,-0.28516) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 188, parentID 1) is processed with stopping code 2 ### pop requested out of 187 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 187, parentID 1) is processed with stopping code 2 -### pop requested out of 186 stacked tracks. - -** Photon Absorbed! ** -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.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) + Old Momentum Direction: (0.7415,0.6635,-0.099777) + Old Polarization: (-0.67096,0.73325,-0.11027) + New Momentum Direction: (0.4234,0.89587,-0.13472) + New Polarization: (-0.90594,0.4187,-0.062963) *** FresnelRefraction *** No Absorbtion length specified +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.74445,-0.44725,0.49575) + Old Polarization: (-0.66768,-0.49867,0.55275) + New Momentum Direction: (0.44011,-0.60149,0.66672) + New Polarization: (-0.89794,-0.29481,0.32678) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 186, parentID 1) is processed with stopping code 2 +### pop requested out of 185 stacked tracks. + +** Photon Absorbed! ** 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.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) + Old Momentum Direction: (0.73994,-0.6716,0.038059) + Old Polarization: (-0.67268,-0.73875,0.041864) + New Momentum Direction: (0.41421,-0.90872,0.051496) + New Polarization: (-0.91018,-0.41355,0.023435) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 184, parentID 1) is processed with stopping code 2 ### pop requested out of 183 stacked tracks. - 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 *** -No Absorbtion length specified + +** Photon Absorbed! ** Track (trackID 183, parentID 1) is processed with stopping code 2 ### pop requested out of 182 stacked tracks. Photon at Boundary! - 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) + Old Momentum Direction: (0.74292,-0.068256,0.6659) + Old Polarization: (-0.66939,-0.075753,0.73904) + New Momentum Direction: (0.43155,-0.091984,0.89739) + New Polarization: (-0.90209,-0.044004,0.4293) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73912,0.063326,-0.67059) + Old Polarization: (-0.67357,0.069489,-0.73585) + New Momentum Direction: (0.4093,0.085779,-0.90836) + New Polarization: (-0.9124,0.038481,-0.40749) *** FresnelRefraction *** No Absorbtion length specified 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.743089,0.157945,0.650287) - Old Polarization: (-0.669193,0.175386,0.722094) - New Momentum Direction: (0.432524,0.212804,0.876149) - New Polarization: (-0.901622,0.102086,0.420304) + Old Momentum Direction: (0.74309,0.15795,0.65029) + Old Polarization: (-0.66919,0.17539,0.72209) + New Momentum Direction: (0.43252,0.2128,0.87615) + New Polarization: (-0.90162,0.10209,0.4203) *** FresnelRefraction *** No Absorbtion length specified 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.73581,0.15468,-0.65928) + Old Polarization: (-0.67718,0.16807,-0.71636) + New Momentum Direction: (0.3886,0.21047,-0.89705) + New Polarization: (-0.92141,0.088764,-0.37833) + *** FresnelRefraction *** +No Absorbtion length specified Track (trackID 179, parentID 1) is processed with stopping code 2 ### pop requested out of 178 stacked tracks. - -** Photon Absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.73653,0.51034,0.44394) + Old Polarization: (-0.67641,0.55569,0.4834) + New Momentum Direction: (0.39317,0.69372,0.60347) + New Polarization: (-0.91947,0.29664,0.25805) + *** FresnelRefraction *** +No Absorbtion length specified 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.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) + Old Momentum Direction: (0.74116,0.30676,-0.59715) + Old Polarization: (-0.67133,0.33867,-0.65926) + New Momentum Direction: (0.42143,0.41438,-0.80665) + New Polarization: (-0.90686,0.19257,-0.37486) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 177, parentID 1) is processed with stopping code 2 ### pop requested out of 176 stacked tracks. Photon at Boundary! - 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) + Old Momentum Direction: (0.74021,0.51819,0.42845) + Old Polarization: (-0.67238,0.57047,0.47167) + New Momentum Direction: (0.41583,0.7009,0.57951) + New Polarization: (-0.90944,0.32048,0.26497) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 176, parentID 1) is processed with stopping code 2 ### pop requested out of 175 stacked tracks. - -** 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.73746,0.337846,0.584818) -Old Polarization: (-0.67539,0.368895,0.638564) -New Polarization: (-0.0237974,0.785207,0.406682) -Polarization Change: (-0.0269021,0.887647,0.459738) -New Momentum Direction: (0.958943,0.139125,-0.287398) -Momentum Change: (0.948786,0.137651,-0.284354) Photon at Boundary! - Old Momentum Direction: (0.948786,0.137651,-0.284354) - Old Polarization: (-0.0269021,0.887647,0.459738) - New Momentum Direction: (0.903354,0.186877,-0.386042) - New Polarization: (-0.0223615,0.919381,0.392732) + Old Momentum Direction: (0.73898,-0.31389,-0.59614) + Old Polarization: (-0.67372,-0.34429,-0.65388) + New Momentum Direction: (0.40848,-0.42526,-0.80765) + New Polarization: (-0.91277,-0.19031,-0.36144) *** FresnelRefraction *** No Absorbtion length specified +Track (trackID 175, parentID 1) is processed with stopping code 2 +### pop requested out of 174 stacked tracks. + +** Photon Absorbed! ** 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.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) + Old Momentum Direction: (0.74269,0.063056,-0.66666) + Old Polarization: (-0.66963,0.069936,-0.73939) + New Momentum Direction: (0.43029,0.085002,-0.89868) + New Polarization: (-0.90269,0.040519,-0.42838) *** FresnelRefraction *** No Absorbtion length specified 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.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 *** -No Absorbtion length specified + +** Photon Absorbed! ** Track (trackID 172, parentID 1) is processed with stopping code 2 ### pop requested out of 171 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.736435,0.450365,0.504811) -Old Polarization: (-0.676508,0.49026,0.549529) -New Polarization: (-0.101484,-0.0540117,0.886114) -Polarization Change: (-0.113575,-0.0604469,0.991689) -New Momentum Direction: (0.874408,0.184012,1.80991) -Momentum Change: (0.433202,0.0911639,0.896674) - -** Photon Absorbed! ** -Track (trackID 171, parentID 1) is processed with stopping code 2 -### pop requested out of 170 stacked tracks. Photon at Boundary! - 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) + Old Momentum Direction: (0.73644,0.45036,0.50481) + Old Polarization: (-0.67651,0.49026,0.54953) + New Momentum Direction: (0.39259,0.61227,0.68629) + New Polarization: (-0.91971,0.26136,0.29295) *** FresnelRefraction *** No Absorbtion length specified +Track (trackID 171, parentID 1) is processed with stopping code 2 +### pop requested out of 170 stacked tracks. + +** Photon Absorbed! ** Track (trackID 170, parentID 1) is processed with stopping code 2 ### pop requested out of 169 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.7386,0.1422,-0.658976) -Old Polarization: (-0.674144,0.155796,-0.721982) -New Polarization: (-0.683144,0.161952,-0.692907) -Polarization Change: (-0.692546,0.16418,-0.702443) -New Momentum Direction: (-0.266301,-0.963123,0.0394882) -Momentum Change: (-0.26629,-0.963084,0.0394866) - -** Photon Absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.7386,0.1422,-0.65898) + Old Polarization: (-0.67414,0.1558,-0.72198) + New Momentum Direction: (0.40614,0.19275,-0.89325) + New Polarization: (-0.91381,0.085668,-0.397) + *** FresnelRefraction *** +No Absorbtion length specified Track (trackID 169, parentID 1) is processed with stopping code 2 ### pop requested out of 168 stacked tracks. - -** Photon Absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.74223,-0.62557,0.2403) + Old Polarization: (-0.67014,-0.69287,0.26615) + New Momentum Direction: (0.42767,-0.84382,0.32414) + New Polarization: (-0.90394,-0.39923,0.15336) + *** FresnelRefraction *** +No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73625,-0.21064,-0.6431) + Old Polarization: (-0.67671,-0.22917,-0.69967) + New Momentum Direction: (0.39139,-0.28643,-0.87451) + New Polarization: (-0.92022,-0.12183,-0.37195) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 167, parentID 1) is processed with stopping code 2 ### pop requested out of 166 stacked tracks. Photon at Boundary! - 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) + Old Momentum Direction: (0.74093,0.29532,0.60317) + Old Polarization: (-0.67158,0.32581,0.66545) + New Momentum Direction: (0.4201,0.39905,0.81503) + New Polarization: (-0.90748,0.18473,0.3773) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 166, parentID 1) is processed with stopping code 2 ### pop requested out of 165 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 165, parentID 1) is processed with stopping code 2 -### pop requested out of 164 stacked tracks. - -** Photon Absorbed! ** -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.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) + Old Momentum Direction: (0.73596,-0.50808,-0.44746) + Old Polarization: (-0.67703,-0.55231,-0.4864) + New Momentum Direction: (0.38953,-0.69119,-0.60871) + New Polarization: (-0.92102,-0.29232,-0.25744) *** FresnelRefraction *** No Absorbtion length specified +Track (trackID 165, parentID 1) is processed with stopping code 2 +### pop requested out of 164 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73602,0.67679,0.015232) + Old Polarization: (-0.67696,0.73584,0.016561) + New Momentum Direction: (0.38994,0.92061,0.02072) + New Polarization: (-0.92084,0.38984,0.008774) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 164, parentID 1) is processed with stopping code 2 +### pop requested out of 163 stacked tracks. + +** Photon Absorbed! ** 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.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) + Old Momentum Direction: (0.73604,-0.50694,-0.4486) + Old Polarization: (-0.67693,-0.55121,-0.48778) + New Momentum Direction: (0.39009,-0.68956,-0.6102) + New Polarization: (-0.92078,-0.29213,-0.25851) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.74295,0.64943,-0.16206) + Old Polarization: (-0.66935,0.72084,-0.17988) + New Momentum Direction: (0.43173,0.87517,-0.2184) + New Polarization: (-0.902,0.41888,-0.10453) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 161, parentID 1) is processed with stopping code 2 ### pop requested out of 160 stacked tracks. - -** Photon Absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.74393,0.60706,-0.27936) + Old Polarization: (-0.66826,0.67581,-0.311) + New Momentum Direction: (0.43725,0.81698,-0.37597) + New Polarization: (-0.89934,0.39721,-0.18279) + *** FresnelRefraction *** +No Absorbtion length specified 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.736991,-0.442605,-0.510828) - Old Polarization: (-0.675902,-0.482608,-0.556997) - New Momentum Direction: (0.396127,-0.601267,-0.693946) - New Polarization: (-0.918196,-0.259398,-0.299381) + Old Momentum Direction: (0.73699,-0.4426,-0.51083) + Old Polarization: (-0.6759,-0.48261,-0.557) + New Momentum Direction: (0.39613,-0.60127,-0.69395) + New Polarization: (-0.9182,-0.2594,-0.29938) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 159, parentID 1) is processed with stopping code 2 ### pop requested out of 158 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.736282,-0.471045,0.485805) -Old Polarization: (-0.676675,-0.512538,0.528598) -New Polarization: (-0.0979191,0.299761,0.881857) -Polarization Change: (-0.104554,0.320071,0.941607) -New Momentum Direction: (0.579887,-0.683344,0.663266) -Momentum Change: (0.520094,-0.612883,0.594875) ** Photon Absorbed! ** 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.735909,0.55095,0.393562) - Old Polarization: (-0.67708,0.59882,0.427758) - New Momentum Direction: (0.389212,0.749552,0.53543) - New Polarization: (-0.921148,0.316707,0.226235) - *** FresnelRefraction *** -No Absorbtion length specified + +** Photon Absorbed! ** Track (trackID 157, parentID 1) is processed with stopping code 2 ### pop requested out of 156 stacked tracks. ** 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.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 *** -No Absorbtion length specified + +** 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.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) + Old Momentum Direction: (0.73705,-0.31193,-0.59955) + Old Polarization: (-0.67584,-0.34018,-0.65385) + New Momentum Direction: (0.3965,-0.42371,-0.8144) + New Polarization: (-0.91803,-0.183,-0.35174) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.74139,0.65409,0.14999) + Old Polarization: (-0.67107,0.72264,0.16571) + New Momentum Direction: (0.42281,0.88329,0.20255) + New Polarization: (-0.90622,0.41211,0.094501) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 153, parentID 1) is processed with stopping code 2 ### pop requested out of 152 stacked tracks. - -** Photon Absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.74495,-0.64675,-0.16357) + Old Polarization: (-0.66712,-0.72221,-0.18266) + New Momentum Direction: (0.44289,-0.86921,-0.21984) + New Polarization: (-0.89658,-0.42937,-0.10859) + *** FresnelRefraction *** +No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73695,-0.57054,-0.36246) + Old Polarization: (-0.67594,-0.62204,-0.39518) + New Momentum Direction: (0.39589,-0.77511,-0.49242) + New Polarization: (-0.9183,-0.33416,-0.21229) *** FresnelRefraction *** No Absorbtion length specified 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.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 *** -No Absorbtion length specified + +** Photon Absorbed! ** 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.744091,-0.623542,0.239842) - Old Polarization: (-0.668078,-0.694487,0.267131) - New Momentum Direction: (-0.744091,-0.623542,0.239842) - New Polarization: (-0.668078,0.694487,-0.267131) - *** FresnelReflection *** + Old Momentum Direction: (0.74409,-0.62354,0.23984) + Old Polarization: (-0.66808,-0.69449,0.26713) + New Momentum Direction: (0.43814,-0.83898,0.32271) + New Polarization: (-0.89891,-0.40893,0.15729) + *** FresnelRefraction *** No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.744091,-0.623542,0.239842) - Old Polarization: (-0.668078,0.694487,-0.267131) - New Momentum Direction: (-0.744091,0.623542,0.239842) - New Polarization: (0.668078,0.694487,0.267131) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** Track (trackID 149, parentID 1) is processed with stopping code 2 ### pop requested out of 148 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.73587,0.67419,0.062855) +Old Polarization: (-0.67712,0.7327,0.068309) +New Polarization: (-0.057581,0.8481,0.17243) +Polarization Change: (-0.066386,0.97779,0.19879) +New Momentum Direction: (-0.82163,0.043931,-0.49046) +Momentum Change: (-0.85775,0.045862,-0.51202) Photon at Boundary! - Old Momentum Direction: (0.735875,0.674194,0.0628548) - Old Polarization: (-0.677118,0.732698,0.0683091) - New Momentum Direction: (0.388989,0.917265,0.0855162) - New Polarization: (-0.921242,0.387309,0.0361087) + Old Momentum Direction: (-0.85775,0.045862,-0.51202) + Old Polarization: (-0.066386,0.97779,0.19879) + New Momentum Direction: (-0.85775,0.045862,0.51202) + New Polarization: (0.066386,-0.97779,0.19879) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.85775,0.045862,0.51202) + Old Polarization: (0.066386,-0.97779,0.19879) + New Momentum Direction: (-0.71472,0.062398,0.69662) + New Polarization: (0.12535,-0.96846,0.21535) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73705,-0.57467,-0.35567) + Old Polarization: (-0.67583,-0.62673,-0.38789) + New Momentum Direction: (0.39653,-0.78061,-0.48313) + New Polarization: (-0.91802,-0.33717,-0.20868) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.74185,0.4819,-0.46629) + Old Polarization: (-0.67057,0.53313,-0.51586) + New Momentum Direction: (0.42545,0.65037,-0.6293) + New Polarization: (-0.90498,0.30575,-0.29585) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73828,-0.44678,0.50531) + Old Polarization: (-0.6745,-0.48903,0.55309) + New Momentum Direction: (0.40414,-0.60589,0.68525) + New Polarization: (-0.9147,-0.2677,0.30277) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 145, parentID 1) is processed with stopping code 2 ### pop requested out of 144 stacked tracks. Photon at Boundary! - 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) + Old Momentum Direction: (0.73992,0.56929,-0.35838) + Old Polarization: (-0.6727,0.62617,-0.39419) + New Momentum Direction: (0.4141,0.77031,-0.48492) + New Polarization: (-0.91023,0.35044,-0.22061) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.74014,0.22494,-0.63371) + Old Polarization: (-0.67245,0.24759,-0.6975) + New Momentum Direction: (0.41545,0.30428,-0.85721) + New Polarization: (-0.90962,0.13897,-0.39152) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.74217,-0.63833,0.20427) + Old Polarization: (-0.67022,-0.70685,0.2262) + New Momentum Direction: (0.42727,-0.86111,0.27557) + New Polarization: (-0.90412,-0.40694,0.13023) *** FresnelRefraction *** No Absorbtion length specified 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.735986,0.671244,0.0880671) - Old Polarization: (-0.676997,0.729732,0.0957407) - New Momentum Direction: (0.389705,0.913114,0.1198) - New Polarization: (-0.92094,0.386394,0.0506948) - *** FresnelRefraction *** -No Absorbtion length specified + +** Photon Absorbed! ** 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.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 *** -No Absorbtion length specified + +** Photon Absorbed! ** Track (trackID 140, parentID 1) is processed with stopping code 2 ### pop requested out of 139 stacked tracks. Photon at Boundary! - 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) + Old Momentum Direction: (0.73581,0.61266,-0.28849) + Old Polarization: (-0.67719,0.6657,-0.31346) + New Momentum Direction: (0.38858,0.83362,-0.39253) + New Polarization: (-0.92141,0.35156,-0.16554) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73985,-0.36531,0.56495) + Old Polarization: (-0.67277,-0.40173,0.62128) + New Momentum Direction: (0.41369,-0.49435,0.76451) + New Polarization: (-0.91042,-0.22463,0.34739) *** FresnelRefraction *** No Absorbtion length specified 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.741326,-0.669343,-0.0491489) - Old Polarization: (-0.671145,-0.739335,-0.0542883) - New Momentum Direction: (0.422413,-0.90397,-0.0663772) - New Polarization: (-0.906403,-0.421279,-0.0309339) + Old Momentum Direction: (0.74133,-0.66934,-0.049149) + Old Polarization: (-0.67115,-0.73934,-0.054288) + New Momentum Direction: (0.42241,-0.90397,-0.066377) + New Polarization: (-0.9064,-0.42128,-0.030934) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 137, parentID 1) is processed with stopping code 2 ### pop requested out of 136 stacked tracks. - -** Photon Absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.73906,0.51296,0.43664) + Old Polarization: (-0.67364,0.56278,0.47905) + New Momentum Direction: (0.40896,0.69489,0.59151) + New Polarization: (-0.91255,0.31141,0.26508) + *** FresnelRefraction *** +No Absorbtion length specified Track (trackID 136, parentID 1) is processed with stopping code 2 ### pop requested out of 135 stacked tracks. ** Photon Absorbed! ** Track (trackID 135, parentID 1) is processed with stopping code 2 ### pop requested out of 134 stacked tracks. - -** Photon Absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.73905,-0.45195,-0.49955) + Old Polarization: (-0.67365,-0.49582,-0.54805) + New Momentum Direction: (0.40887,-0.61225,-0.67674) + New Polarization: (-0.91259,-0.2743,-0.3032) + *** FresnelRefraction *** +No Absorbtion length specified 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.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) + Old Momentum Direction: (0.7384,0.54142,-0.40203) + Old Polarization: (-0.67436,0.59283,-0.44021) + New Momentum Direction: (0.40493,0.73409,-0.5451) + New Polarization: (-0.91435,0.3251,-0.2414) *** FresnelRefraction *** No Absorbtion length specified 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.737625,0.230332,-0.63471) - Old Polarization: (-0.67521,0.251623,-0.693381) - New Momentum Direction: (0.400109,0.312631,-0.861496) - New Polarization: (-0.916468,0.136487,-0.376109) + Old Momentum Direction: (0.73763,0.23033,-0.63471) + Old Polarization: (-0.67521,0.25162,-0.69338) + New Momentum Direction: (0.40011,0.31263,-0.8615) + New Polarization: (-0.91647,0.13649,-0.37611) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 132, parentID 1) is processed with stopping code 2 ### pop requested out of 131 stacked tracks. - -** Photon Absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.7425,-0.44308,-0.50236) + Old Polarization: (-0.66984,-0.49114,-0.55686) + New Momentum Direction: (0.42921,-0.59744,-0.67738) + New Polarization: (-0.90321,-0.28391,-0.32189) + *** FresnelRefraction *** +No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73722,0.59099,0.32746) + Old Polarization: (-0.67565,0.64485,0.3573) + New Momentum Direction: (0.39759,0.8026,0.4447) + New Polarization: (-0.91756,0.34777,0.19269) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 130, parentID 1) is processed with stopping code 2 ### pop requested out of 129 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.736819,-0.559996,0.378817) - Old Polarization: (-0.67609,-0.610297,0.412844) - New Momentum Direction: (0.395037,-0.760917,0.514734) - New Polarization: (-0.918665,-0.327203,0.221341) + Old Momentum Direction: (0.73682,-0.56,0.37882) + Old Polarization: (-0.67609,-0.6103,0.41284) + New Momentum Direction: (0.39504,-0.76092,0.51473) + New Polarization: (-0.91867,-0.3272,0.22134) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73853,0.094457,-0.66757) + Old Polarization: (-0.67422,0.10347,-0.73125) + New Momentum Direction: (0.40572,0.12805,-0.90498) + New Polarization: (-0.914,0.056842,-0.40172) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.74189,0.032541,-0.66973) + Old Polarization: (-0.67052,0.036004,-0.74102) + New Momentum Direction: (0.4257,0.043914,-0.9038) + New Polarization: (-0.90487,0.020659,-0.4252) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.74387,-0.10827,0.6595) + Old Polarization: (-0.66833,-0.12051,0.73404) + New Momentum Direction: (0.43689,-0.14572,0.88763) + New Polarization: (-0.89951,-0.070777,0.43112) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 126, parentID 1) is processed with stopping code 2 ### pop requested out of 125 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.73603,-0.14269,-0.66174) +Old Polarization: (-0.67695,-0.15515,-0.71949) +New Polarization: (-0.17875,0.71531,-0.56088) +Polarization Change: (-0.19295,0.77214,-0.60544) +New Momentum Direction: (0.016955,0.5753,0.72829) +Momentum Change: (0.018265,0.61976,0.78458) ** 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.736344,0.674834,-0.0489474) - Old Polarization: (-0.676607,0.734415,-0.0532689) - New Momentum Direction: (0.392009,0.917551,-0.0665523) - New Polarization: (-0.919962,0.390981,-0.0283589) + Old Momentum Direction: (0.73634,0.67483,-0.048947) + Old Polarization: (-0.67661,0.73441,-0.053269) + New Momentum Direction: (0.39201,0.91755,-0.066552) + New Polarization: (-0.91996,0.39098,-0.028359) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73973,0.27971,0.61201) + Old Polarization: (-0.6729,0.30749,0.6728) + New Momentum Direction: (0.41299,0.37857,0.82833) + New Polarization: (-0.91074,0.17167,0.37562) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 123, parentID 1) is processed with stopping code 2 ### pop requested out of 122 stacked tracks. Photon at Boundary! - 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) + Old Momentum Direction: (0.74041,-0.62201,0.25474) + Old Polarization: (-0.67215,-0.68518,0.28061) + New Momentum Direction: (0.41706,-0.84108,0.34446) + New Polarization: (-0.90888,-0.38595,0.15806) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73825,-0.45873,0.49452) + Old Polarization: (-0.67452,-0.50207,0.54124) + New Momentum Direction: (0.40401,-0.62211,0.67064) + New Polarization: (-0.91476,-0.27476,0.29619) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 121, parentID 1) is processed with stopping code 2 ### pop requested out of 120 stacked tracks. - Photon at Boundary! - 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 *** -No Absorbtion length specified + +** Photon Absorbed! ** Track (trackID 120, parentID 1) is processed with stopping code 2 ### pop requested out of 119 stacked tracks. @@ -1393,168 +1437,175 @@ Track (trackID 120, parentID 1) is processed with stopping code 2 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.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) + Old Momentum Direction: (0.74066,-0.50158,0.44704) + Old Polarization: (-0.67188,-0.55293,0.4928) + New Momentum Direction: (0.41852,-0.67801,0.60428) + New Polarization: (-0.90821,-0.31244,0.27846) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 118, parentID 1) is processed with stopping code 2 ### pop requested out of 117 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.738668,-0.320881,0.592794) -Old Polarization: (-0.674069,-0.351633,0.649604) -New Polarization: (-0.780418,-0.263069,0.331623) -Polarization Change: (-0.879023,-0.296308,0.373523) -New Momentum Direction: (-0.127386,-0.538622,-0.954064) -Momentum Change: (-0.115492,-0.48833,-0.864983) ** Photon Absorbed! ** 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.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 *** -No Absorbtion length specified -Track (trackID 116, parentID 1) is processed with stopping code 2 -### pop requested out of 115 stacked tracks. ** Photon Absorbed! ** +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.73627,0.66117,-0.14407) + Old Polarization: (-0.67669,0.71939,-0.15675) + New Momentum Direction: (0.39153,0.89907,-0.1959) + New Polarization: (-0.92016,0.38256,-0.083357) + *** FresnelRefraction *** +No Absorbtion length specified 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.74291,0.343899,-0.574298) - Old Polarization: (-0.669391,0.381669,-0.637373) - New Momentum Direction: (0.431515,0.463456,-0.773953) - New Polarization: (-0.902106,0.221691,-0.370214) + Old Momentum Direction: (0.74291,0.3439,-0.5743) + Old Polarization: (-0.66939,0.38167,-0.63737) + New Momentum Direction: (0.43152,0.46346,-0.77395) + New Polarization: (-0.90211,0.22169,-0.37021) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 114, parentID 1) is processed with stopping code 2 ### pop requested out of 113 stacked tracks. - Photon at Boundary! - 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 *** -No Absorbtion length specified + +** Photon Absorbed! ** 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.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) + Old Momentum Direction: (0.7379,-0.58008,-0.34499) + Old Polarization: (-0.67491,-0.63421,-0.37719) + New Momentum Direction: (0.40179,-0.78705,-0.46809) + New Polarization: (-0.91573,-0.34533,-0.20538) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 112, parentID 1) is processed with stopping code 2 ### pop requested out of 111 stacked tracks. Photon at Boundary! - 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) + Old Momentum Direction: (0.73889,-0.58416,0.33585) + Old Polarization: (-0.67382,-0.64057,0.36828) + New Momentum Direction: (0.40792,-0.79153,0.45507) + New Polarization: (-0.91302,-0.35364,0.20332) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 111, parentID 1) is processed with stopping code 2 ### pop requested out of 110 stacked tracks. Photon at Boundary! - 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) + Old Momentum Direction: (0.73609,-0.28185,0.61541) + Old Polarization: (-0.67688,-0.30651,0.66924) + New Momentum Direction: (0.39037,-0.38336,0.83704) + New Polarization: (-0.92066,-0.16255,0.35492) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73904,-0.54847,-0.39116) + Old Polarization: (-0.67367,-0.60169,-0.42912) + New Momentum Direction: (0.40879,-0.74302,-0.52991) + New Polarization: (-0.91263,-0.33282,-0.23736) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.74061,-0.56571,-0.36258) + Old Polarization: (-0.67194,-0.62353,-0.39964) + New Momentum Direction: (0.41822,-0.76475,-0.49016) + New Polarization: (-0.90835,-0.3521,-0.22567) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.74367,-0.50523,0.43783) + Old Polarization: (-0.66855,-0.562,0.48703) + New Momentum Direction: (0.43579,-0.68018,0.58944) + New Polarization: (-0.90005,-0.32933,0.2854) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 107, parentID 1) is processed with stopping code 2 ### pop requested out of 106 stacked tracks. - -** Photon Absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.73639,0.50765,-0.44723) + Old Polarization: (-0.67656,0.55255,-0.48679) + New Momentum Direction: (0.39231,0.69019,-0.60805) + New Polarization: (-0.91983,0.29437,-0.25934) + *** FresnelRefraction *** +No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73744,-0.63184,-0.23865) + Old Polarization: (-0.67541,-0.68987,-0.26057) + New Momentum Direction: (0.39896,-0.85782,-0.324) + New Polarization: (-0.91697,-0.37323,-0.14097) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.7431,-0.57495,0.3424) + Old Polarization: (-0.66918,-0.63846,0.38022) + New Momentum Direction: (0.43259,-0.77463,0.46131) + New Polarization: (-0.90159,-0.37168,0.22134) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.74194,-0.58826,-0.32167) + Old Polarization: (-0.67047,-0.65097,-0.35596) + New Momentum Direction: (0.42597,-0.79381,-0.43407) + New Polarization: (-0.90474,-0.37374,-0.20437) *** FresnelRefraction *** No Absorbtion length specified 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.745101,0.645093,-0.16935) - Old Polarization: (-0.666952,0.720681,-0.189193) - New Momentum Direction: (0.4437,0.866805,-0.227553) - New Polarization: (-0.896176,0.429158,-0.112662) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 102, parentID 1) is processed with stopping code 2 -### pop requested out of 101 stacked tracks. ** Photon Absorbed! ** +Track (trackID 102, parentID 1) is processed with stopping code 2 +### pop requested out of 101 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.73587,-0.6745,0.059497) +Old Polarization: (-0.67712,-0.73303,0.06466) +New Polarization: (0.17184,-0.75304,0.48266) +Polarization Change: (0.18867,-0.82679,0.52993) +New Momentum Direction: (0.92537,0.32316,0.17473) +Momentum Change: (0.92944,0.32457,0.17549) + Photon at Boundary! + Old Momentum Direction: (0.92944,0.32457,0.17549) + Old Polarization: (0.18867,-0.82679,0.52993) + New Momentum Direction: (0.86486,0.4416,0.23877) + New Polarization: (-0.31795,0.11378,0.94125) + *** FresnelRefraction *** +No Absorbtion length specified 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.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) + Old Momentum Direction: (0.74104,0.55991,0.37063) + Old Polarization: (-0.67146,0.61792,0.40903) + New Momentum Direction: (0.42073,0.75647,0.50074) + New Polarization: (-0.90718,0.35083,0.23223) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 100, parentID 1) is processed with stopping code 2 ### pop requested out of 99 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.73625,0.21478,-0.64172) +Old Polarization: (-0.67671,0.23367,-0.69818) +New Polarization: (-0.65012,0.21438,-0.70827) +Polarization Change: (-0.66001,0.21764,-0.71904) +New Momentum Direction: (0.15973,0.9752,0.14856) +Momentum Change: (0.15984,0.97588,0.14866) Photon at Boundary! - 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) + Old Momentum Direction: (0.15984,0.97588,0.14866) + Old Polarization: (-0.66001,0.21764,-0.71904) + New Momentum Direction: (0.21736,0.95493,0.20216) + New Polarization: (0.73664,-0.29637,0.60789) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 99, parentID 1) is processed with stopping code 2 @@ -1564,57 +1615,50 @@ Track (trackID 99, parentID 1) is processed with stopping code 2 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.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) + Old Momentum Direction: (0.74337,-0.014838,-0.66871) + Old Polarization: (-0.66888,-0.016491,-0.74319) + New Momentum Direction: (0.43412,-0.019985,-0.90063) + New Polarization: (-0.90085,-0.0096305,-0.43401) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 97, parentID 1) is processed with stopping code 2 ### pop requested out of 96 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.736949,0.674732,-0.0405362) -Old Polarization: (-0.675949,0.735622,-0.0441944) -New Polarization: (-0.671659,0.716833,-0.0726465) -Polarization Change: (-0.681878,0.727739,-0.0737518) -New Momentum Direction: (0.701556,0.678949,0.219753) -Momentum Change: (0.70105,0.67846,0.219594) Photon at Boundary! - Old Momentum Direction: (0.70105,0.67846,0.219594) - Old Polarization: (-0.681878,0.727739,-0.0737518) - New Momentum Direction: (0.247841,0.921723,0.29833) - New Polarization: (-0.95072,0.290612,-0.108057) + Old Momentum Direction: (0.73695,0.67473,-0.040536) + Old Polarization: (-0.67595,0.73562,-0.044194) + New Momentum Direction: (0.39586,0.91666,-0.055071) + New Polarization: (-0.91831,0.39515,-0.023739) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 96, parentID 1) is processed with stopping code 2 ### pop requested out of 95 stacked tracks. - -** Photon Absorbed! ** -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.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) + Old Momentum Direction: (0.73835,-0.13513,0.66074) + Old Polarization: (-0.67442,-0.14794,0.72338) + New Momentum Direction: (0.4046,-0.18323,0.89595) + New Polarization: (-0.91449,-0.081065,0.39639) *** FresnelRefraction *** No Absorbtion length specified +Track (trackID 95, parentID 1) is processed with stopping code 2 +### pop requested out of 94 stacked tracks. + +** Photon Absorbed! ** 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.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) + Old Momentum Direction: (0.73763,0.35258,0.57584) + Old Polarization: (-0.6752,0.38518,0.62908) + New Momentum Direction: (0.40014,0.47856,0.78158) + New Polarization: (-0.91645,0.20895,0.34125) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 93, parentID 1) is processed with stopping code 2 ### pop requested out of 92 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.737724,-0.649241,0.185067) - Old Polarization: (-0.675103,-0.709463,0.202234) - New Momentum Direction: (0.400722,-0.881102,0.251159) - New Polarization: (-0.9162,-0.385372,0.109851) + Old Momentum Direction: (0.73772,-0.64924,0.18507) + Old Polarization: (-0.6751,-0.70946,0.20223) + New Momentum Direction: (0.40072,-0.8811,0.25116) + New Polarization: (-0.9162,-0.38537,0.10985) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 92, parentID 1) is processed with stopping code 2 @@ -1623,184 +1667,188 @@ Track (trackID 92, parentID 1) is processed with stopping code 2 ** Photon Absorbed! ** Track (trackID 91, parentID 1) is processed with stopping code 2 ### pop requested out of 90 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.73641,-0.086168,0.67103) +Old Polarization: (-0.67654,-0.093793,0.73041) +New Polarization: (-0.67778,-0.41003,0.35799) +Polarization Change: (-0.77969,-0.47168,0.41182) +New Momentum Direction: (-0.29705,0.83462,0.39353) +Momentum Change: (-0.30643,0.86098,0.40596) +Scattering Photon! +Old Momentum Direction: (-0.30643,0.86098,0.40596) +Old Polarization: (-0.77969,-0.47168,0.41182) +New Polarization: (-0.56422,-0.42088,0.56801) +Polarization Change: (-0.62379,-0.46532,0.62798) +New Momentum Direction: (-0.23441,-0.58337,-0.6651) +Momentum Change: (-0.25612,-0.63741,-0.72671) Photon at Boundary! - Old Momentum Direction: (0.736407,-0.0861675,0.671029) - Old Polarization: (-0.676539,-0.0937927,0.73041) - New Momentum Direction: (0.392411,-0.117149,0.912299) - New Polarization: (-0.91979,-0.0499796,0.389215) + Old Momentum Direction: (-0.25612,-0.63741,-0.72671) + Old Polarization: (-0.62379,-0.46532,0.62798) + New Momentum Direction: (-0.34821,-0.86659,-0.35744) + New Polarization: (-0.38954,-0.21306,0.89603) *** FresnelRefraction *** No Absorbtion length specified 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.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 *** -No Absorbtion length specified + +** Photon Absorbed! ** 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.739819,-0.0369113,0.671793) - Old Polarization: (-0.672806,-0.0405877,0.738705) - New Momentum Direction: (0.413518,-0.0499513,0.909125) - New Polarization: (-0.910496,-0.0226863,0.412895) + Old Momentum Direction: (0.73982,-0.036911,0.67179) + Old Polarization: (-0.67281,-0.040588,0.7387) + New Momentum Direction: (0.41352,-0.049951,0.90912) + New Polarization: (-0.9105,-0.022686,0.4129) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 88, parentID 1) is processed with stopping code 2 ### pop requested out of 87 stacked tracks. - Photon at Boundary! - 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 *** -No Absorbtion length specified + +** 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.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 *** -No Absorbtion length specified + +** 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.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) + Old Momentum Direction: (0.73854,0.19278,0.64606) + Old Polarization: (-0.67421,0.21117,0.7077) + New Momentum Direction: (0.40575,0.26133,0.87582) + New Polarization: (-0.91398,0.11602,0.38881) *** FresnelRefraction *** No Absorbtion length specified 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.739717,-0.551573,-0.385468) - Old Polarization: (-0.672918,-0.606327,-0.423733) - New Momentum Direction: (0.412906,-0.746537,-0.521719) - New Polarization: (-0.910773,-0.338448,-0.236525) + Old Momentum Direction: (0.73972,-0.55157,-0.38547) + Old Polarization: (-0.67292,-0.60633,-0.42373) + New Momentum Direction: (0.41291,-0.74654,-0.52172) + New Polarization: (-0.91077,-0.33845,-0.23653) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 84, parentID 1) is processed with stopping code 2 ### pop requested out of 83 stacked tracks. - -** Photon Absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.73937,0.65251,0.16599) + Old Polarization: (-0.6733,0.71655,0.18228) + New Momentum Direction: (0.41084,0.88357,0.22477) + New Polarization: (-0.91171,0.39816,0.10129) + *** FresnelRefraction *** +No Absorbtion length specified Track (trackID 83, parentID 1) is processed with stopping code 2 ### pop requested out of 82 stacked tracks. - -** Photon Absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.73834,-0.17107,0.65237) + Old Polarization: (-0.67442,-0.18729,0.7142) + New Momentum Direction: (0.40456,-0.23197,0.8846) + New Polarization: (-0.91451,-0.10262,0.39133) + *** FresnelRefraction *** +No Absorbtion length specified 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.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 *** -No Absorbtion length specified + +** Photon Absorbed! ** Track (trackID 81, parentID 1) is processed with stopping code 2 ### pop requested out of 80 stacked tracks. - -** Photon Absorbed! ** -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.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) + Old Momentum Direction: (0.74432,-0.52536,0.41229) + Old Polarization: (-0.66782,-0.58554,0.45952) + New Momentum Direction: (0.43941,-0.70666,0.55458) + New Polarization: (-0.89829,-0.34567,0.27128) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 79, parentID 1) is processed with stopping code 2 -### pop requested out of 78 stacked tracks. +Track (trackID 80, parentID 1) is processed with stopping code 2 +### pop requested out of 79 stacked tracks. ** Photon Absorbed! ** +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.73902,-0.67368,0.0010559) + Old Polarization: (-0.67368,-0.73902,0.0011583) + New Momentum Direction: (0.40869,-0.91267,0.0014304) + New Polarization: (-0.91267,-0.40869,0.00064055) + *** FresnelRefraction *** +No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73957,-0.66981,0.06622) + Old Polarization: (-0.67308,-0.73598,0.072762) + New Momentum Direction: (0.41203,-0.90675,0.089644) + New Polarization: (-0.91117,-0.41003,0.040537) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 77, parentID 1) is processed with stopping code 2 ### pop requested out of 76 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.737745,0.11138,-0.665827) - Old Polarization: (-0.675079,0.121719,-0.727635) - New Momentum Direction: (0.400858,0.151152,-0.903585) - New Polarization: (-0.91614,0.0661368,-0.395364) + Old Momentum Direction: (0.73775,0.11138,-0.66583) + Old Polarization: (-0.67508,0.12172,-0.72763) + New Momentum Direction: (0.40086,0.15115,-0.90359) + New Polarization: (-0.91614,0.066137,-0.39536) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73827,0.033528,-0.67367) + Old Polarization: (-0.6745,0.036698,-0.73736) + New Momentum Direction: (0.40411,0.045468,-0.91358) + New Polarization: (-0.91471,0.020088,-0.40361) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73789,0.18408,0.64933) + Old Polarization: (-0.67492,0.20125,0.70992) + New Momentum Direction: (0.40177,0.24976,0.88102) + New Polarization: (-0.91574,0.10958,0.38654) *** FresnelRefraction *** No Absorbtion length specified 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.74071,-0.59179,-0.318) + Old Polarization: (-0.67182,-0.65248,-0.35061) + New Momentum Direction: (0.41882,-0.7999,-0.42982) + New Polarization: (-0.90807,-0.36893,-0.19824) + *** FresnelRefraction *** +No Absorbtion length specified Track (trackID 73, parentID 1) is processed with stopping code 2 ### pop requested out of 72 stacked tracks. Photon at Boundary! - 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) + Old Momentum Direction: (0.74453,-0.66731,0.01899) + Old Polarization: (-0.66758,-0.74423,0.021179) + New Momentum Direction: (0.44059,-0.89734,0.025536) + New Polarization: (-0.89771,-0.44041,0.012533) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73701,0.58087,-0.34554) + Old Polarization: (-0.67588,0.63341,-0.37679) + New Momentum Direction: (0.39626,0.78908,-0.46939) + New Polarization: (-0.91814,0.34056,-0.20259) *** FresnelRefraction *** No Absorbtion length specified 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.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 *** -No Absorbtion length specified + +** Photon Absorbed! ** Track (trackID 70, parentID 1) is processed with stopping code 2 ### pop requested out of 69 stacked tracks. - 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 *** -No Absorbtion length specified + +** Photon Absorbed! ** 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.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) + Old Momentum Direction: (0.73661,-0.054423,-0.67413) + Old Polarization: (-0.67632,-0.059274,-0.73422) + New Momentum Direction: (0.39369,-0.073971,-0.91626) + New Polarization: (-0.91924,-0.03168,-0.39242) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 68, parentID 1) is processed with stopping code 2 @@ -1809,37 +1857,42 @@ Track (trackID 68, parentID 1) is processed with stopping code 2 ** Photon Absorbed! ** 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.736114,-0.647469,-0.197281) - Old Polarization: (-0.676858,-0.704153,-0.214552) - New Momentum Direction: (0.390531,-0.880619,-0.268321) - New Polarization: (-0.92059,-0.373575,-0.113827) - *** FresnelRefraction *** -No Absorbtion length specified + +** Photon Absorbed! ** 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.74311,-0.56382,0.3604) + Old Polarization: (-0.66916,-0.62613,0.40023) + New Momentum Direction: (0.43267,-0.75962,0.48556) + New Polarization: (-0.90155,-0.36455,0.23303) + *** FresnelRefraction *** +No Absorbtion length specified Track (trackID 65, parentID 1) is processed with stopping code 2 ### pop requested out of 64 stacked tracks. - -** Photon Absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.7391,-0.22069,0.63642) + Old Polarization: (-0.6736,-0.24215,0.6983) + New Momentum Direction: (0.40917,-0.29895,0.8621) + New Polarization: (-0.91246,-0.13406,0.38658) + *** FresnelRefraction *** +No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73949,0.66379,0.11192) + Old Polarization: (-0.67316,0.7292,0.12295) + New Momentum Direction: (0.41156,0.8987,0.15153) + New Polarization: (-0.91138,0.40583,0.068427) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73946,0.28337,0.61066) + Old Polarization: (-0.6732,0.31126,0.67076) + New Momentum Direction: (0.41135,0.38367,0.82679) + New Polarization: (-0.91148,0.17315,0.37313) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 62, parentID 1) is processed with stopping code 2 @@ -1853,339 +1906,305 @@ Track (trackID 61, parentID 1) is processed with stopping code 2 Track (trackID 60, parentID 1) is processed with stopping code 2 ### pop requested out of 59 stacked tracks. 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) + Old Momentum Direction: (0.74153,0.53095,-0.41017) + Old Polarization: (-0.67093,0.58682,-0.45333) + New Momentum Direction: (0.42357,0.71687,-0.55379) + New Polarization: (-0.90586,0.3352,-0.25895) *** FresnelRefraction *** No Absorbtion length specified 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.736963,-0.577996,-0.350437) - Old Polarization: (-0.675933,-0.630183,-0.382078) - New Momentum Direction: (0.395946,-0.785224,-0.476078) - New Polarization: (-0.918274,-0.338576,-0.205278) + Old Momentum Direction: (0.73696,-0.578,-0.35044) + Old Polarization: (-0.67593,-0.63018,-0.38208) + New Momentum Direction: (0.39595,-0.78522,-0.47608) + New Polarization: (-0.91827,-0.33858,-0.20528) *** FresnelRefraction *** No Absorbtion length specified 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.741343,-0.235267,0.628538) - Old Polarization: (-0.671126,-0.259881,0.694299) - New Momentum Direction: (0.422514,-0.317728,0.848841) - New Polarization: (-0.906356,-0.148114,0.395702) + Old Momentum Direction: (0.74134,-0.23527,0.62854) + Old Polarization: (-0.67113,-0.25988,0.6943) + New Momentum Direction: (0.42251,-0.31773,0.84884) + New Polarization: (-0.90636,-0.14811,0.3957) *** FresnelRefraction *** No Absorbtion length specified 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.74133,-0.6035,0.29363) + Old Polarization: (-0.67114,-0.66661,0.32433) + New Momentum Direction: (0.42243,-0.81505,0.39655) + New Polarization: (-0.9064,-0.37985,0.18481) + *** FresnelRefraction *** +No Absorbtion length specified 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.73896,-0.064606,-0.67065) + Old Polarization: (-0.67375,-0.070859,-0.73555) + New Momentum Direction: (0.40833,-0.087532,-0.90863) + New Polarization: (-0.91284,-0.039154,-0.40644) + *** FresnelRefraction *** +No Absorbtion length specified 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.735869,-0.643192,0.211662) - Old Polarization: (-0.677124,-0.698993,0.230025) - New Momentum Direction: (0.388948,-0.875094,0.287976) - New Polarization: (-0.92126,-0.369458,0.121581) + Old Momentum Direction: (0.73587,-0.64319,0.21166) + Old Polarization: (-0.67712,-0.69899,0.23003) + New Momentum Direction: (0.38895,-0.87509,0.28798) + New Polarization: (-0.92126,-0.36946,0.12158) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.74015,-0.17861,0.64829) + Old Polarization: (-0.67244,-0.19659,0.71357) + New Momentum Direction: (0.4155,-0.2416,0.87692) + New Polarization: (-0.9096,-0.11036,0.40057) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 53, parentID 1) is processed with stopping code 2 ### pop requested out of 52 stacked tracks. - -** Photon Absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.73665,0.38425,0.55651) + Old Polarization: (-0.67628,0.41855,0.60619) + New Momentum Direction: (0.39396,0.52224,0.75635) + New Polarization: (-0.91913,0.22384,0.32419) + *** FresnelRefraction *** +No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73753,0.45032,-0.50324) + Old Polarization: (-0.67531,0.49181,-0.54961) + New Momentum Direction: (0.39953,0.6113,-0.68314) + New Polarization: (-0.91672,0.26642,-0.29773) *** FresnelRefraction *** No Absorbtion length specified 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.7435,-0.327883,-0.582839) - Old Polarization: (-0.668736,-0.364539,-0.647999) - New Momentum Direction: (0.434839,-0.441521,-0.78484) - New Polarization: (-0.900508,-0.213202,-0.378985) + Old Momentum Direction: (0.7435,-0.32788,-0.58284) + Old Polarization: (-0.66874,-0.36454,-0.648) + New Momentum Direction: (0.43484,-0.44152,-0.78484) + New Polarization: (-0.90051,-0.2132,-0.37898) *** FresnelRefraction *** No Absorbtion length specified 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.736403,-0.392788,0.550843) - Old Polarization: (-0.676543,-0.427542,0.599581) - New Momentum Direction: (0.392386,-0.534019,0.748904) - New Polarization: (-0.919801,-0.227812,0.319481) + Old Momentum Direction: (0.7364,-0.39279,0.55084) + Old Polarization: (-0.67654,-0.42754,0.59958) + New Momentum Direction: (0.39239,-0.53402,0.7489) + New Polarization: (-0.9198,-0.22781,0.31948) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73776,0.60643,-0.29656) + Old Polarization: (-0.67506,0.66276,-0.3241) + New Momentum Direction: (0.40097,0.82296,-0.40244) + New Polarization: (-0.91609,0.3602,-0.17615) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 48, parentID 1) is processed with stopping code 2 ### pop requested out of 47 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.743334,-0.663179,-0.0874581) - Old Polarization: (-0.668921,-0.736953,-0.0971873) - New Momentum Direction: (0.433905,-0.893225,-0.117796) - New Polarization: (-0.900958,-0.430181,-0.056731) - *** FresnelRefraction *** -No Absorbtion length specified + +** Photon Absorbed! ** 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.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 *** -No Absorbtion length specified + +** Photon Absorbed! ** Track (trackID 46, parentID 1) is processed with stopping code 2 ### pop requested out of 45 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.738433,0.582009,-0.340563) -Old Polarization: (-0.674327,0.637338,-0.372939) -New Polarization: (-0.729269,0.439491,0.158367) -Polarization Change: (-0.84205,0.507458,0.182858) -New Momentum Direction: (-0.302967,-0.70275,0.746458) -Momentum Change: (-0.283401,-0.657366,0.698251) Photon at Boundary! - Old Momentum Direction: (-0.283401,-0.657366,0.698251) - Old Polarization: (-0.84205,0.507458,0.182858) - New Momentum Direction: (-0.283401,-0.657366,-0.698251) - New Polarization: (0.947972,-0.302139,-0.100307) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.283401,-0.657366,-0.698251) - Old Polarization: (0.947972,-0.302139,-0.100307) - New Momentum Direction: (-0.283401,0.657366,-0.698251) - New Polarization: (-0.947972,-0.302139,0.100307) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.283401,0.657366,-0.698251) - Old Polarization: (-0.947972,-0.302139,0.100307) - New Momentum Direction: (0.283401,0.657366,-0.698251) - New Polarization: (-0.947972,0.302139,-0.100307) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.283401,0.657366,-0.698251) - Old Polarization: (-0.947972,0.302139,-0.100307) - New Momentum Direction: (0.283401,0.657366,0.698251) - New Polarization: (0.891105,-0.449597,0.0615966) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.283401,0.657366,0.698251) - Old Polarization: (0.891105,-0.449597,0.0615966) - New Momentum Direction: (0.283401,-0.657366,0.698251) - New Polarization: (-0.891105,-0.449597,-0.0615966) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.283401,-0.657366,0.698251) - Old Polarization: (-0.891105,-0.449597,-0.0615966) - New Momentum Direction: (0.384241,-0.891272,0.240817) - New Polarization: (-0.897138,-0.422033,-0.130507) + Old Momentum Direction: (0.73843,0.58201,-0.34056) + Old Polarization: (-0.67433,0.63734,-0.37294) + New Momentum Direction: (0.40511,0.7891,-0.46174) + New Polarization: (-0.91427,0.34965,-0.2046) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.7441,-0.43699,0.50533) + Old Polarization: (-0.66807,-0.48671,0.56284) + New Momentum Direction: (0.43817,-0.58797,0.67993) + New Polarization: (-0.89889,-0.2866,0.33143) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.74153,-0.5843,0.32975) + Old Polarization: (-0.67092,-0.64579,0.36445) + New Momentum Direction: (0.4236,-0.78889,0.44521) + New Polarization: (-0.90585,-0.36891,0.20819) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 43, parentID 1) is processed with stopping code 2 ### pop requested out of 42 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.736363,-0.668493,-0.104344) -Old Polarization: (-0.676587,-0.727553,-0.113562) -New Polarization: (0.0233825,-0.845694,-0.215651) -Polarization Change: (0.0267819,-0.968645,-0.247003) -New Momentum Direction: (-0.875111,0.081202,-0.550622) -Momentum Change: (-0.843797,0.0782963,-0.53092) - -** Photon Absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.73636,-0.66849,-0.10434) + Old Polarization: (-0.67659,-0.72755,-0.11356) + New Momentum Direction: (0.39213,-0.90891,-0.14187) + New Polarization: (-0.91991,-0.38744,-0.060474) + *** FresnelRefraction *** +No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73775,-0.16941,0.65347) + Old Polarization: (-0.67507,-0.18514,0.71414) + New Momentum Direction: (0.40091,-0.22991,0.8868) + New Polarization: (-0.91612,-0.10061,0.38808) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 41, parentID 1) is processed with stopping code 2 ### pop requested out of 40 stacked tracks. Photon at Boundary! - 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) + Old Momentum Direction: (0.74355,0.24037,-0.62398) + Old Polarization: (-0.66868,0.26728,-0.69385) + New Momentum Direction: (0.43514,0.32365,-0.84018) + New Polarization: (-0.90036,0.15642,-0.40605) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 40, parentID 1) is processed with stopping code 2 ### pop requested out of 39 stacked tracks. Photon at Boundary! - 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) + Old Momentum Direction: (0.73914,0.6599,-0.13491) + Old Polarization: (-0.67355,0.72416,-0.14805) + New Momentum Direction: (0.40945,0.89384,-0.18274) + New Polarization: (-0.91233,0.40115,-0.082014) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.74117,0.38856,0.54743) + Old Polarization: (-0.67131,0.42899,0.60441) + New Momentum Direction: (0.42153,0.52486,0.73948) + New Polarization: (-0.90681,0.24398,0.34375) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 38, parentID 1) is processed with stopping code 2 ### pop requested out of 37 stacked tracks. Scattering Photon! -Old Momentum Direction: (0.736502,-0.675619,0.0332189) -Old Polarization: (-0.676435,-0.735613,0.0361687) -New Polarization: (-0.766541,-0.0770756,0.423507) -Polarization Change: (-0.871923,-0.0876718,0.48173) -New Momentum Direction: (-0.267632,0.885366,-0.446983) -Momentum Change: (-0.260526,0.861859,-0.435115) +Old Momentum Direction: (0.7365,-0.67562,0.033219) +Old Polarization: (-0.67644,-0.73561,0.036169) +New Polarization: (-0.69798,-0.16703,0.50033) +Polarization Change: (-0.7978,-0.19092,0.57189) +New Momentum Direction: (-0.045457,-0.89778,-0.36312) +Momentum Change: (-0.046887,-0.92602,-0.37455) Photon at Boundary! - Old Momentum Direction: (-0.260526,0.861859,-0.435115) - Old Polarization: (-0.871923,-0.0876718,0.48173) - New Momentum Direction: (-0.354153,0.724376,-0.591485) - New Polarization: (-0.89932,-0.0903158,0.427863) + Old Momentum Direction: (-0.046887,-0.92602,-0.37455) + Old Polarization: (-0.7978,-0.19092,0.57189) + New Momentum Direction: (-0.063737,-0.85831,-0.50915) + New Polarization: (-0.83937,0.32207,-0.43787) *** FresnelRefraction *** No Absorbtion length specified 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.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 *** -No Absorbtion length specified + +** Photon Absorbed! ** 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.736436,0.167667,0.6554) - Old Polarization: (-0.676507,0.18252,0.71346) - New Momentum Direction: (0.392599,0.227943,0.891015) - New Polarization: (-0.91971,0.0973027,0.38035) + Old Momentum Direction: (0.73644,0.16767,0.6554) + Old Polarization: (-0.67651,0.18252,0.71346) + New Momentum Direction: (0.3926,0.22794,0.89102) + New Polarization: (-0.91971,0.097303,0.38035) *** FresnelRefraction *** No Absorbtion length specified 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.73645,-0.49481,0.4613) + Old Polarization: (-0.67649,-0.53867,0.50219) + New Momentum Direction: (0.39269,-0.67269,0.62713) + New Polarization: (-0.91967,-0.28723,0.26777) + *** FresnelRefraction *** +No Absorbtion length specified Track (trackID 34, parentID 1) is processed with stopping code 2 ### pop requested out of 33 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.735872,0.375442,-0.563504) -Old Polarization: (-0.677121,0.408017,-0.612396) -New Polarization: (-0.362392,-0.0818476,-0.782601) -Polarization Change: (-0.418317,-0.0944785,-0.903374) -New Momentum Direction: (0.150128,-0.987052,0.094651) -Momentum Change: (0.149697,-0.984217,0.0943792) - -** Photon Absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.73587,0.37544,-0.5635) + Old Polarization: (-0.67712,0.40802,-0.6124) + New Momentum Direction: (0.38897,0.5108,-0.76667) + New Polarization: (-0.92125,0.21567,-0.3237) + *** FresnelRefraction *** +No Absorbtion length specified Track (trackID 33, parentID 1) is processed with stopping code 2 ### pop requested out of 32 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.74251,-0.58694,0.32277) +Old Polarization: (-0.66984,-0.65062,0.35779) +New Polarization: (-0.68266,-0.62453,0.33377) +Polarization Change: (-0.69404,-0.63495,0.33933) +New Momentum Direction: (0.70993,-0.53699,0.44725) +Momentum Change: (0.71265,-0.53904,0.44896) Photon at Boundary! - 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) + Old Momentum Direction: (0.71265,-0.53904,0.44896) + Old Polarization: (-0.69404,-0.63495,0.33933) + New Momentum Direction: (0.32441,-0.72683,0.60537) + New Polarization: (-0.94144,-0.3103,0.13194) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.74056,-0.24801,-0.62454) + Old Polarization: (-0.67199,-0.27332,-0.68828) + New Momentum Direction: (0.41794,-0.3353,-0.84434) + New Polarization: (-0.90847,-0.15425,-0.38843) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 31, parentID 1) is processed with stopping code 2 ### pop requested out of 30 stacked tracks. - -** Photon Absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.73575,-0.026329,0.67674) + Old Polarization: (-0.67725,-0.028603,0.7352) + New Momentum Direction: (0.3882,-0.035827,0.92088) + New Polarization: (-0.92157,-0.015092,0.38791) + *** FresnelRefraction *** +No Absorbtion length specified 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.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 *** -No Absorbtion length specified -Track (trackID 29, parentID 1) is processed with stopping code 2 -### pop requested out of 28 stacked tracks. ** Photon Absorbed! ** -Track (trackID 28, parentID 1) is processed with stopping code 2 -### pop requested out of 27 stacked tracks. +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.743832,-0.662475,-0.0885496) - Old Polarization: (-0.668366,-0.737275,-0.0985478) - New Momentum Direction: (0.436698,-0.891678,-0.119186) - New Polarization: (-0.899608,-0.432848,-0.0578566) + Old Momentum Direction: (0.74414,0.64757,-0.16403) + Old Polarization: (-0.66802,0.72136,-0.18272) + New Momentum Direction: (0.43842,0.87125,-0.22069) + New Polarization: (-0.89877,0.425,-0.10765) *** FresnelRefraction *** No Absorbtion length specified +Track (trackID 28, parentID 1) is processed with stopping code 2 +### pop requested out of 27 stacked tracks. + +** Photon Absorbed! ** 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.743229,0.207864,-0.635927) - Old Polarization: (-0.669037,0.230915,-0.706447) - New Momentum Direction: (0.433316,0.280008,-0.85664) - New Polarization: (-0.901242,0.134627,-0.411872) + Old Momentum Direction: (0.74323,0.20786,-0.63593) + Old Polarization: (-0.66904,0.23091,-0.70645) + New Momentum Direction: (0.43332,0.28001,-0.85664) + New Polarization: (-0.90124,0.13463,-0.41187) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.74011,-0.66343,0.11001) + Old Polarization: (-0.67248,-0.73014,0.12107) + New Momentum Direction: (0.41526,-0.89745,0.14881) + New Polarization: (-0.9097,-0.40967,0.067931) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 25, parentID 1) is processed with stopping code 2 @@ -2195,321 +2214,2711 @@ Track (trackID 25, parentID 1) is processed with stopping code 2 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.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) + Old Momentum Direction: (0.7371,-0.6564,0.16072) + Old Polarization: (-0.67579,-0.71595,0.1753) + New Momentum Direction: (0.3968,-0.89157,0.2183) + New Polarization: (-0.9179,-0.38542,0.094371) *** FresnelRefraction *** No Absorbtion length specified 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. -Scattering Photon! -Old Momentum Direction: (0.736301,0.656111,0.165464) -Old Polarization: (-0.676654,0.713948,0.18005) -New Polarization: (-0.139965,0.660848,0.545051) -Polarization Change: (-0.161253,0.761362,0.627953) -New Momentum Direction: (0.896006,0.361305,-0.320377) -Momentum Change: (0.880297,0.354971,-0.31476) Photon at Boundary! - Old Momentum Direction: (0.880297,0.354971,-0.31476) - Old Polarization: (-0.161253,0.761362,0.627953) - New Momentum Direction: (0.764101,0.48267,-0.427994) - New Polarization: (-0.194827,0.80514,0.560171) + Old Momentum Direction: (0.73594,-0.35703,-0.57526) + Old Polarization: (-0.67705,-0.38809,-0.6253) + New Momentum Direction: (0.38942,-0.48571,-0.78259) + New Polarization: (-0.92106,-0.20535,-0.33087) *** FresnelRefraction *** No Absorbtion length specified +Track (trackID 22, parentID 1) is processed with stopping code 2 +### pop requested out of 21 stacked tracks. + +** Photon Absorbed! ** Track (trackID 21, parentID 1) is processed with stopping code 2 ### pop requested out of 20 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.73622,-0.26433,-0.62298) +Old Polarization: (-0.67674,-0.28757,-0.67774) +New Polarization: (-0.8576,0.019133,-0.13248) +Polarization Change: (-0.98804,0.022043,-0.15263) +New Momentum Direction: (0.062,0.95028,-0.26411) +Momentum Change: (0.062737,0.96158,-0.26725) Photon at Boundary! - Old Momentum Direction: (0.736225,-0.264334,-0.622977) - Old Polarization: (-0.676737,-0.28757,-0.677739) - New Momentum Direction: (0.391244,-0.359464,-0.84718) - New Polarization: (-0.920287,-0.15282,-0.360163) + Old Momentum Direction: (0.062737,0.96158,-0.26725) + Old Polarization: (-0.98804,0.022043,-0.15263) + New Momentum Direction: (0.085316,0.92771,-0.36343) + New Polarization: (-0.94447,-0.040872,-0.32605) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 20, parentID 1) is processed with stopping code 2 ### pop requested out of 19 stacked tracks. - -** Photon Absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.73577,0.58461,-0.34187) + Old Polarization: (-0.67723,0.63514,-0.37142) + New Momentum Direction: (0.3883,0.7955,-0.46519) + New Polarization: (-0.92153,0.3352,-0.19602) + *** FresnelRefraction *** +No Absorbtion length specified Track (trackID 19, parentID 1) is processed with stopping code 2 ### pop requested out of 18 stacked tracks. ** Photon Absorbed! ** 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.736727,-0.646197,0.199155) - Old Polarization: (-0.67619,-0.704049,0.216984) - New Momentum Direction: (0.394452,-0.878157,0.270644) - New Polarization: (-0.918917,-0.376956,0.116176) - *** FresnelRefraction *** -No Absorbtion length specified + +** Photon Absorbed! ** Track (trackID 17, parentID 1) is processed with stopping code 2 ### pop requested out of 16 stacked tracks. Photon at Boundary! - 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) + Old Momentum Direction: (0.74264,0.64356,0.18526) + Old Polarization: (-0.66969,0.71365,0.20544) + New Momentum Direction: (0.42996,0.86761,0.24976) + New Polarization: (-0.90285,0.41318,0.11894) *** FresnelRefraction *** No Absorbtion length specified 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.738674,0.367241,0.565238) - Old Polarization: (-0.674062,0.402443,0.619419) - New Momentum Direction: (0.406592,0.497751,0.766112) - New Polarization: (-0.91361,0.221518,0.340949) + Old Momentum Direction: (0.73867,0.36724,0.56524) + Old Polarization: (-0.67406,0.40244,0.61942) + New Momentum Direction: (0.40659,0.49775,0.76611) + New Polarization: (-0.91361,0.22152,0.34095) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73671,0.53255,-0.41672) + Old Polarization: (-0.67621,0.58019,-0.454) + New Momentum Direction: (0.39433,0.72373,-0.56632) + New Polarization: (-0.91897,0.31055,-0.24301) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 14, parentID 1) is processed with stopping code 2 ### pop requested out of 13 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.742024,0.586623,-0.324458) -Old Polarization: (-0.670373,0.649324,-0.359137) -New Polarization: (-0.522484,0.678948,-0.385464) -Polarization Change: (-0.556167,0.722717,-0.410314) -New Momentum Direction: (-0.803062,-0.373057,0.500474) -Momentum Change: (-0.789537,-0.366774,0.492045) -Scattering Photon! -Old Momentum Direction: (-0.789537,-0.366774,0.492045) -Old Polarization: (-0.556167,0.722717,-0.410314) -New Polarization: (-0.328692,0.806545,-0.0107871) -Polarization Change: (-0.377366,0.925981,-0.0123845) -New Momentum Direction: (-0.617851,-0.243083,0.858527) -Momentum Change: (-0.569285,-0.223975,0.791043) Photon at Boundary! - Old Momentum Direction: (-0.569285,-0.223975,0.791043) - Old Polarization: (-0.377366,0.925981,-0.0123845) - New Momentum Direction: (-0.768114,-0.302201,0.564514) - New Polarization: (-0.378926,0.925204,-0.0203026) + Old Momentum Direction: (0.74202,0.58662,-0.32446) + Old Polarization: (-0.67037,0.64932,-0.35914) + New Momentum Direction: (0.42646,0.79151,-0.43778) + New Polarization: (-0.90451,0.37318,-0.2064) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 13, parentID 1) is processed with stopping code 2 ### pop requested out of 12 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.7368,-0.39824,-0.54637) +Old Polarization: (-0.67611,-0.434,-0.59542) +New Polarization: (-0.66783,-0.28113,-0.59792) +Polarization Change: (-0.71089,-0.29926,-0.63646) +New Momentum Direction: (0.057683,-0.91309,0.3649) +Momentum Change: (0.058562,-0.927,0.37046) +Scattering Photon! +Old Momentum Direction: (0.058562,-0.927,0.37046) +Old Polarization: (-0.71089,-0.29926,-0.63646) +New Polarization: (-0.83359,-0.099845,-0.23202) +Polarization Change: (-0.95703,-0.11463,-0.26638) +New Momentum Direction: (-0.093325,-0.67982,0.62783) +Momentum Change: (-0.10034,-0.73093,0.67503) Photon at Boundary! - Old Momentum Direction: (0.736804,-0.398245,-0.546371) - Old Polarization: (-0.676107,-0.433997,-0.595421) - New Momentum Direction: (0.394939,-0.541143,-0.74242) - New Polarization: (-0.918707,-0.232629,-0.319156) + Old Momentum Direction: (-0.10034,-0.73093,0.67503) + Old Polarization: (-0.95703,-0.11463,-0.26638) + New Momentum Direction: (-0.13635,-0.37426,0.91725) + New Polarization: (-0.97198,0.2295,-0.050838) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.74356,0.39258,-0.54129) + Old Polarization: (-0.66866,0.43656,-0.60192) + New Momentum Direction: (0.4352,0.5286,-0.72882) + New Polarization: (-0.90033,0.25551,-0.35229) *** FresnelRefraction *** No Absorbtion length specified 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.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 *** -No Absorbtion length specified + +** Photon Absorbed! ** 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.740708,0.214851,0.636546) - Old Polarization: (-0.671827,0.236879,0.701809) - New Momentum Direction: (0.418795,0.290405,0.860393) - New Polarization: (-0.908081,0.133931,0.396802) + Old Momentum Direction: (0.74071,0.21485,0.63655) + Old Polarization: (-0.67183,0.23688,0.70181) + New Momentum Direction: (0.41879,0.29041,0.86039) + New Polarization: (-0.90808,0.13393,0.3968) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 9, parentID 1) is processed with stopping code 2 ### pop requested out of 8 stacked tracks. - -** Photon Absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.74391,0.35273,-0.5676) + Old Polarization: (-0.66827,0.39265,-0.63185) + New Momentum Direction: (0.43716,0.47471,-0.7639) + New Polarization: (-0.89939,0.23074,-0.3713) + *** FresnelRefraction *** +No Absorbtion length specified Track (trackID 8, parentID 1) is processed with stopping code 2 ### pop requested out of 7 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) + Old Momentum Direction: (0.74047,-0.4323,-0.51461) + Old Polarization: (-0.67209,-0.47628,-0.56697) + New Momentum Direction: (0.4174,-0.58451,-0.69579) + New Polarization: (-0.90872,-0.26848,-0.31959) *** FresnelRefraction *** No Absorbtion length specified 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.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) + Old Momentum Direction: (0.73882,0.57724,-0.34776) + Old Polarization: (-0.6739,0.63285,-0.38126) + New Momentum Direction: (0.40748,0.78222,-0.47126) + New Polarization: (-0.91321,0.34903,-0.21028) *** FresnelRefraction *** No Absorbtion length specified 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.739138,-0.443192,-0.507205) - Old Polarization: (-0.673554,-0.486345,-0.556591) - New Momentum Direction: (0.409413,-0.600316,-0.687024) - New Polarization: (-0.912349,-0.269389,-0.308299) + Old Momentum Direction: (0.73914,-0.44319,-0.5072) + Old Polarization: (-0.67355,-0.48635,-0.55659) + New Momentum Direction: (0.40941,-0.60032,-0.68702) + New Polarization: (-0.91235,-0.26939,-0.3083) *** FresnelRefraction *** No Absorbtion length specified 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.735893,0.676718,0.0226758) - Old Polarization: (-0.677098,0.73548,0.0246448) - New Momentum Direction: (0.389105,0.920677,0.0308504) - New Polarization: (-0.921194,0.388886,0.013031) + Old Momentum Direction: (0.73589,0.67672,0.022676) + Old Polarization: (-0.6771,0.73548,0.024645) + New Momentum Direction: (0.3891,0.92068,0.03085) + New Polarization: (-0.92119,0.38889,0.013031) *** FresnelRefraction *** No Absorbtion length specified 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.736515,0.312577,0.599867) - Old Polarization: (-0.676421,0.340347,0.653161) - New Momentum Direction: (0.393104,0.424902,0.815431) - New Polarization: (-0.919494,0.181655,0.348614) + Old Momentum Direction: (0.73652,0.31258,0.59987) + Old Polarization: (-0.67642,0.34035,0.65316) + New Momentum Direction: (0.3931,0.4249,0.81543) + New Polarization: (-0.91949,0.18165,0.34861) *** FresnelRefraction *** No Absorbtion length specified 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.736383,0.100386,-0.669076) - Old Polarization: (-0.676565,0.109261,-0.728232) - New Momentum Direction: (0.39226,0.136484,-0.909673) - New Polarization: (-0.919854,0.0582017,-0.387918) + Old Momentum Direction: (0.73638,0.10039,-0.66908) + Old Polarization: (-0.67656,0.10926,-0.72823) + New Momentum Direction: (0.39226,0.13648,-0.90967) + New Polarization: (-0.91985,0.058202,-0.38792) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 2, parentID 1) is processed with stopping code 2 ### pop requested out of 1 stacked tracks. - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 60 + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 293 Track (trackID 1, parentID 0) is processed with stopping code 4 -### pop requested out of 62 stacked tracks. +### pop requested out of 294 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.67401,0.60221,-0.42784) + Old Polarization: (-0.735,0.48864,-0.47012) + New Momentum Direction: (-0.67401,0.60221,-0.42784) + New Polarization: (-0.735,-0.48864,0.47012) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.67401,0.60221,-0.42784) + Old Polarization: (-0.735,-0.48864,0.47012) + New Momentum Direction: (-0.67401,-0.60221,-0.42784) + New Polarization: (0.735,-0.48864,-0.47012) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.67401,-0.60221,-0.42784) + Old Polarization: (0.735,-0.48864,-0.47012) + New Momentum Direction: (-0.67401,-0.60221,0.42784) + New Polarization: (-0.735,0.48864,-0.47012) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.67401,-0.60221,0.42784) + Old Polarization: (-0.735,0.48864,-0.47012) + New Momentum Direction: (0.67401,-0.60221,0.42784) + New Polarization: (-0.735,-0.48864,0.47012) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.67401,-0.60221,0.42784) + Old Polarization: (-0.735,-0.48864,0.47012) + New Momentum Direction: (0.67401,0.60221,0.42784) + New Polarization: (0.735,-0.48864,-0.47012) + *** TotalInternalReflection *** +No Absorbtion length specified +Scattering Photon! +Old Momentum Direction: (0.67401,0.60221,0.42784) +Old Polarization: (0.735,-0.48864,-0.47012) +New Polarization: (0.80051,0.16423,-0.29768) +Polarization Change: (0.92043,0.18883,-0.34228) +New Momentum Direction: (-0.21387,-0.364,-0.77596) +Momentum Change: (-0.24211,-0.41206,-0.8784) - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 5 -Track (trackID 342, parentID 1) is processed with stopping code 4 -### pop requested out of 67 stacked tracks. +** Photon Absorbed! ** +Track (trackID 574, parentID 1) is processed with stopping code 2 +### pop requested out of 293 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.544408,-0.511963,0.664465) - Old Polarization: (-0.257451,0.651928,0.713238) - New Momentum Direction: (0.544408,-0.511963,-0.664465) - New Polarization: (0.257451,-0.651928,0.713238) + Old Momentum Direction: (0.7212,0.2494,-0.64627) + Old Polarization: (-0.68364,0.1056,-0.72214) + New Momentum Direction: (0.36187,0.33563,-0.86972) + New Polarization: (-0.92661,0.027267,-0.37502) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 573, parentID 1) is processed with stopping code 2 +### pop requested out of 292 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.79423,-0.3921,0.46417) + Old Polarization: (-0.60223,-0.60942,0.51567) + New Momentum Direction: (0.57556,-0.52771,0.62471) + New Polarization: (-0.8141,-0.44197,0.3767) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 572, parentID 1) is processed with stopping code 2 +### pop requested out of 291 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.7375,0.062641,-0.67244) + Old Polarization: (-0.66548,-0.10219,-0.73938) + New Momentum Direction: (0.4025,0.084909,-0.91147) + New Polarization: (-0.90925,-0.078325,-0.40881) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 571, parentID 1) is processed with stopping code 2 +### pop requested out of 290 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.66948,0.69213,-0.26971) + Old Polarization: (-0.7413,0.59921,-0.30237) + New Momentum Direction: (0.66948,-0.69213,-0.26971) + New Polarization: (-0.1607,-0.48944,0.8571) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66948,-0.69213,-0.26971) + Old Polarization: (-0.1607,-0.48944,0.8571) + New Momentum Direction: (-0.66948,-0.69213,-0.26971) + New Polarization: (-0.15326,0.48397,-0.86156) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66948,-0.69213,-0.26971) + Old Polarization: (-0.15326,0.48397,-0.86156) + New Momentum Direction: (-0.66948,-0.69213,0.26971) + New Polarization: (0.15326,-0.48397,-0.86156) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (0.544408,-0.511963,-0.664465) - Old Polarization: (0.257451,-0.651928,0.713238) - New Momentum Direction: (-0.544408,-0.511963,-0.664465) - New Polarization: (0.257451,0.651928,-0.713238) + Old Momentum Direction: (-0.66948,-0.69213,0.26971) + Old Polarization: (0.15326,-0.48397,-0.86156) + New Momentum Direction: (-0.90092,-0.23793,0.36295) + New Polarization: (-0.39649,0.79131,-0.46544) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 570, parentID 1) is processed with stopping code 2 +### pop requested out of 289 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.75409,-0.096936,-0.64958) + Old Polarization: (-0.6474,-0.27615,-0.71036) + New Momentum Direction: (0.45109,-0.13173,-0.88271) + New Polarization: (-0.8865,-0.18046,-0.4261) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 569, parentID 1) is processed with stopping code 2 +### pop requested out of 288 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.71858,0.22469,0.65815) + Old Polarization: (-0.68631,0.076211,0.72331) + New Momentum Direction: (0.33863,0.304,0.89046) + New Polarization: (-0.93542,0.0065675,0.35348) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 568, parentID 1) is processed with stopping code 2 +### pop requested out of 287 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.80619,-0.55962,-0.19204) + Old Polarization: (-0.5908,-0.77886,-0.21055) + New Momentum Direction: (0.59316,-0.7615,-0.26131) + New Polarization: (-0.80452,-0.57287,-0.15677) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 567, parentID 1) is processed with stopping code 2 +### pop requested out of 286 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 566, parentID 1) is processed with stopping code 2 +### pop requested out of 285 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73614,0.063429,-0.67385) + Old Polarization: (-0.66698,-0.10123,-0.73817) + New Momentum Direction: (0.39429,0.086123,-0.91494) + New Polarization: (-0.91288,-0.077899,-0.40074) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 565, parentID 1) is processed with stopping code 2 +### pop requested out of 284 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 564, parentID 1) is processed with stopping code 2 +### pop requested out of 283 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.6791,0.58919,-0.43781) + Old Polarization: (-0.73008,0.48026,-0.48614) + New Momentum Direction: (0.133,0.79553,-0.59114) + New Polarization: (-0.98914,0.068924,-0.12979) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 563, parentID 1) is processed with stopping code 2 +### pop requested out of 282 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.69597,0.39134,0.60206) +Old Polarization: (-0.7108,0.25645,0.65498) +New Polarization: (0.22813,0.4712,0.75107) +Polarization Change: (0.24918,0.51468,0.82037) +New Momentum Direction: (0.82535,0.24397,-0.40375) +Momentum Change: (0.86819,0.25663,-0.42471) + Photon at Boundary! + Old Momentum Direction: (0.86819,0.25663,-0.42471) + Old Polarization: (0.24918,0.51468,0.82037) + New Momentum Direction: (0.73835,0.34879,-0.57722) + New Polarization: (-0.42413,0.90559,0.004691) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 562, parentID 1) is processed with stopping code 2 +### pop requested out of 281 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.70173,0.35187,0.61949) + Old Polarization: (-0.70464,0.21444,0.67638) + New Momentum Direction: (-0.70173,0.35187,0.61949) + New Polarization: (-0.69044,-0.12144,-0.71312) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.70173,0.35187,0.61949) + Old Polarization: (-0.69044,-0.12144,-0.71312) + New Momentum Direction: (-0.70173,0.35187,-0.61949) + New Polarization: (0.69044,0.12144,-0.71312) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (-0.544408,-0.511963,-0.664465) - Old Polarization: (0.257451,0.651928,-0.713238) - New Momentum Direction: (-0.544408,0.511963,-0.664465) - New Polarization: (-0.257451,0.651928,0.713238) + Old Momentum Direction: (-0.70173,0.35187,-0.61949) + Old Polarization: (0.69044,0.12144,-0.71312) + New Momentum Direction: (-0.70173,-0.35187,-0.61949) + New Polarization: (-0.69044,0.12144,0.71312) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.70173,-0.35187,-0.61949) + Old Polarization: (-0.69044,0.12144,0.71312) + New Momentum Direction: (-0.25585,-0.47745,-0.84058) + New Polarization: (0.95415,-0.26447,-0.1402) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 561, parentID 1) is processed with stopping code 2 +### pop requested out of 280 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.75134,-0.057852,-0.65737) + Old Polarization: (-0.6503,-0.23433,-0.72263) + New Momentum Direction: (0.44684,-0.078427,-0.89117) + New Polarization: (-0.88846,-0.15554,-0.43179) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 560, parentID 1) is processed with stopping code 2 +### pop requested out of 279 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.81094,-0.54942,-0.20127) + Old Polarization: (-0.58416,-0.77998,-0.22449) + New Momentum Direction: (0.61324,-0.7417,-0.27171) + New Polarization: (-0.78924,-0.58941,-0.17235) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 559, parentID 1) is processed with stopping code 2 +### pop requested out of 278 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.71115,0.30119,-0.63526) + Old Polarization: (-0.69449,0.16046,-0.70138) + New Momentum Direction: (0.30844,0.40751,-0.85953) + New Polarization: (-0.94621,0.038579,-0.32126) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 558, parentID 1) is processed with stopping code 2 +### pop requested out of 277 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 557, parentID 1) is processed with stopping code 2 +### pop requested out of 276 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.72936,0.14923,-0.66766) + Old Polarization: (-0.67445,-0.0067912,-0.73829) + New Momentum Direction: (0.38008,0.20177,-0.90268) + New Polarization: (-0.91895,-0.028626,-0.39333) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 556, parentID 1) is processed with stopping code 2 +### pop requested out of 275 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.80289,-0.48745,-0.34316) + Old Polarization: (-0.59329,-0.70944,-0.3804) + New Momentum Direction: (0.59213,-0.65894,-0.46388) + New Polarization: (-0.80392,-0.52274,-0.28364) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 555, parentID 1) is processed with stopping code 2 +### pop requested out of 274 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 554, parentID 1) is processed with stopping code 2 +### pop requested out of 273 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 553, parentID 1) is processed with stopping code 2 +### pop requested out of 272 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 552, parentID 1) is processed with stopping code 2 +### pop requested out of 271 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.69981,0.39509,-0.59512) + Old Polarization: (-0.70693,0.26348,-0.65637) + New Momentum Direction: (-0.69981,0.39509,-0.59512) + New Polarization: (-0.69367,-0.17695,0.69822) + *** FresnelReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 551, parentID 1) is processed with stopping code 2 +### pop requested out of 270 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 550, parentID 1) is processed with stopping code 2 +### pop requested out of 269 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.78574,-0.33203,-0.52188) + Old Polarization: (-0.61211,-0.53882,-0.57878) + New Momentum Direction: (0.54961,-0.44844,-0.70486) + New Polarization: (-0.8311,-0.37924,-0.40676) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 549, parentID 1) is processed with stopping code 2 +### pop requested out of 268 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.78023,-0.30674,-0.54512) + Old Polarization: (-0.6186,-0.50751,-0.59981) + New Momentum Direction: (0.53036,-0.41575,-0.73883) + New Polarization: (-0.8432,-0.34913,-0.40882) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 548, parentID 1) is processed with stopping code 2 +### pop requested out of 267 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.71072,0.30071,-0.63596) + Old Polarization: (-0.69492,0.15959,-0.70115) + New Momentum Direction: (0.30475,0.40713,-0.86103) + New Polarization: (-0.94742,0.036923,-0.31787) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 547, parentID 1) is processed with stopping code 2 +### pop requested out of 266 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.65441,0.75584,-0.021262) + Old Polarization: (-0.75612,0.65396,-0.02485) + New Momentum Direction: (0.88943,0.45616,-0.028898) + New Polarization: (0.45456,-0.88939,-0.048513) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 546, parentID 1) is processed with stopping code 2 +### pop requested out of 265 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 545, parentID 1) is processed with stopping code 2 +### pop requested out of 264 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 544, parentID 1) is processed with stopping code 2 +### pop requested out of 263 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.66247,0.71707,-0.21666) + Old Polarization: (-0.74811,0.61854,-0.24031) + New Momentum Direction: (0.89634,0.33262,-0.29314) + New Polarization: (0.19787,-0.8918,-0.40687) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 543, parentID 1) is processed with stopping code 2 +### pop requested out of 262 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.81129,-0.56473,0.15129) + Old Polarization: (-0.58403,-0.79473,0.16529) + New Momentum Direction: (0.61267,-0.76342,0.20451) + New Polarization: (-0.78991,-0.59994,0.12692) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 542, parentID 1) is processed with stopping code 2 +### pop requested out of 261 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 541, parentID 1) is processed with stopping code 2 +### pop requested out of 260 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.80855,-0.51739,0.28028) + Old Polarization: (-0.58638,-0.74824,0.31033) + New Momentum Direction: (0.61002,-0.69672,0.37743) + New Polarization: (-0.79098,-0.56382,0.23762) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 540, parentID 1) is processed with stopping code 2 +### pop requested out of 259 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.68434,0.53519,-0.49522) + Old Polarization: (-0.7241,0.41891,-0.54791) + New Momentum Direction: (0.16709,0.72367,-0.66962) + New Polarization: (-0.98332,0.072865,-0.16662) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 539, parentID 1) is processed with stopping code 2 +### pop requested out of 258 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.8057,-0.51834,0.28664) + Old Polarization: (-0.59021,-0.74342,0.31462) + New Momentum Direction: (0.59897,-0.70076,0.38751) + New Polarization: (-0.79933,-0.5522,0.23694) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 538, parentID 1) is processed with stopping code 2 +### pop requested out of 257 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.7959,-0.40925,0.44617) + Old Polarization: (-0.60044,-0.62797,0.49509) + New Momentum Direction: (0.57918,-0.55105,0.60075) + New Polarization: (-0.8118,-0.45707,0.36339) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 537, parentID 1) is processed with stopping code 2 +### pop requested out of 256 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.74725,-0.0041525,-0.66453) + Old Polarization: (-0.6547,-0.17606,-0.7351) + New Momentum Direction: (0.43934,-0.0056133,-0.8983) + New Polarization: (-0.89201,-0.12101,-0.43551) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 536, parentID 1) is processed with stopping code 2 +### pop requested out of 255 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 535, parentID 1) is processed with stopping code 2 +### pop requested out of 254 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.80836,-0.57903,0.10621) + Old Polarization: (-0.58838,-0.80051,0.11396) + New Momentum Direction: (0.59896,-0.78764,0.14447) + New Polarization: (-0.80057,-0.59308,0.085683) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 534, parentID 1) is processed with stopping code 2 +### pop requested out of 253 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73245,0.076448,0.67651) + Old Polarization: (-0.67101,-0.086988,0.73633) + New Momentum Direction: (0.37945,0.10389,0.91936) + New Polarization: (-0.91919,-0.07083,0.38739) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 533, parentID 1) is processed with stopping code 2 +### pop requested out of 252 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.76483,-0.12256,-0.63247) + Old Polarization: (-0.63496,-0.30942,-0.70787) + New Momentum Direction: (0.49941,-0.16482,-0.85054) + New Polarization: (-0.8602,-0.21125,-0.46415) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 532, parentID 1) is processed with stopping code 2 +### pop requested out of 251 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.79885,-0.43197,-0.41861) + Old Polarization: (-0.59728,-0.65215,-0.46686) + New Momentum Direction: (0.58553,-0.58215,-0.56414) + New Polarization: (-0.80776,-0.47769,-0.34545) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 531, parentID 1) is processed with stopping code 2 +### pop requested out of 250 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73649,0.099562,0.66908) + Old Polarization: (-0.66659,-0.061459,0.74289) + New Momentum Direction: (0.41231,0.13409,0.90112) + New Polarization: (-0.90478,-0.055573,0.42225) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 530, parentID 1) is processed with stopping code 2 +### pop requested out of 249 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.68848,0.47802,0.54543) + Old Polarization: (-0.71933,0.35416,0.5976) + New Momentum Direction: (0.18679,0.6475,0.73882) + New Polarization: (-0.97928,0.062864,0.19249) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 529, parentID 1) is processed with stopping code 2 +### pop requested out of 248 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.72172,0.2095,0.65972) + Old Polarization: (-0.68291,0.060047,0.72803) + New Momentum Direction: (0.35524,0.28292,0.89093) + New Polarization: (-0.92911,0.0020919,0.3698) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 528, parentID 1) is processed with stopping code 2 +### pop requested out of 247 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 527, parentID 1) is processed with stopping code 2 +### pop requested out of 246 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 526, parentID 1) is processed with stopping code 2 +### pop requested out of 245 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.67631,0.56861,-0.46828) + Old Polarization: (-0.73218,0.44929,-0.5119) + New Momentum Direction: (-0.67631,0.56861,-0.46828) + New Polarization: (-0.73218,-0.44929,0.5119) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.67631,0.56861,-0.46828) + Old Polarization: (-0.73218,-0.44929,0.5119) + New Momentum Direction: (-0.67631,-0.56861,-0.46828) + New Polarization: (0.73218,-0.44929,-0.5119) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.67631,-0.56861,-0.46828) + Old Polarization: (0.73218,-0.44929,-0.5119) + New Momentum Direction: (-0.67631,-0.56861,0.46828) + New Polarization: (-0.73218,0.44929,-0.5119) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.67631,-0.56861,0.46828) + Old Polarization: (-0.73218,0.44929,-0.5119) + New Momentum Direction: (0.67631,-0.56861,0.46828) + New Polarization: (-0.73218,-0.44929,0.5119) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.67631,-0.56861,0.46828) + Old Polarization: (-0.73218,-0.44929,0.5119) + New Momentum Direction: (0.67631,0.56861,0.46828) + New Polarization: (0.73218,-0.44929,-0.5119) *** TotalInternalReflection *** No Absorbtion length specified ** Photon Absorbed! ** -Track (trackID 347, parentID 342) is processed with stopping code 2 -### pop requested out of 66 stacked tracks. +Track (trackID 525, parentID 1) is processed with stopping code 2 +### pop requested out of 244 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.249185,-0.931322,0.265606) - Old Polarization: (-0.940645,-0.298002,-0.162427) - New Momentum Direction: (0.335416,-0.871594,0.357519) - New Polarization: (0.194903,0.435495,0.878838) + Old Momentum Direction: (0.66381,0.70709,0.24369) + Old Polarization: (-0.7468,0.60896,0.2673) + New Momentum Direction: (0.89731,0.29381,0.32942) + New Polarization: (0.13326,-0.89179,0.43239) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 346, parentID 342) is processed with stopping code 2 +Track (trackID 524, parentID 1) is processed with stopping code 2 +### pop requested out of 243 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 523, parentID 1) is processed with stopping code 2 +### pop requested out of 242 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.80901,-0.55114,-0.20432) + Old Polarization: (-0.5868,-0.77743,-0.22642) + New Momentum Direction: (0.60561,-0.74614,-0.27661) + New Polarization: (-0.7951,-0.58162,-0.17188) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 522, parentID 1) is processed with stopping code 2 +### pop requested out of 241 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.66955,0.64988,-0.35968) + Old Polarization: (-0.74013,0.54291,-0.39681) + New Momentum Direction: (-0.66955,0.64988,-0.35968) + New Polarization: (-0.74013,-0.54291,0.39681) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66955,0.64988,-0.35968) + Old Polarization: (-0.74013,-0.54291,0.39681) + New Momentum Direction: (-0.66955,-0.64988,-0.35968) + New Polarization: (0.74013,-0.54291,-0.39681) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66955,-0.64988,-0.35968) + Old Polarization: (0.74013,-0.54291,-0.39681) + New Momentum Direction: (-0.66955,-0.64988,0.35968) + New Polarization: (-0.74013,0.54291,-0.39681) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66955,-0.64988,0.35968) + Old Polarization: (-0.74013,0.54291,-0.39681) + New Momentum Direction: (0.66955,-0.64988,0.35968) + New Polarization: (-0.74013,-0.54291,0.39681) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66955,-0.64988,0.35968) + Old Polarization: (-0.74013,-0.54291,0.39681) + New Momentum Direction: (0.66955,0.64988,0.35968) + New Polarization: (0.74013,-0.54291,-0.39681) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66955,0.64988,0.35968) + Old Polarization: (0.74013,-0.54291,-0.39681) + New Momentum Direction: (-0.66955,0.64988,0.35968) + New Polarization: (0.74013,0.54291,0.39681) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66955,0.64988,0.35968) + Old Polarization: (0.74013,0.54291,0.39681) + New Momentum Direction: (-0.66955,-0.64988,0.35968) + New Polarization: (-0.74013,0.54291,-0.39681) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66955,-0.64988,0.35968) + Old Polarization: (-0.74013,0.54291,-0.39681) + New Momentum Direction: (-0.66955,-0.64988,-0.35968) + New Polarization: (0.74013,-0.54291,-0.39681) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66955,-0.64988,-0.35968) + Old Polarization: (0.74013,-0.54291,-0.39681) + New Momentum Direction: (0.66955,-0.64988,-0.35968) + New Polarization: (0.74013,0.54291,0.39681) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66955,-0.64988,-0.35968) + Old Polarization: (0.74013,0.54291,0.39681) + New Momentum Direction: (0.66955,0.64988,-0.35968) + New Polarization: (-0.74013,0.54291,-0.39681) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 521, parentID 1) is processed with stopping code 2 +### pop requested out of 240 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.80881,-0.52804,0.25885) + Old Polarization: (-0.58632,-0.75806,0.28561) + New Momentum Direction: (0.60928,-0.71201,0.34903) + New Polarization: (-0.79176,-0.57046,0.21839) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 520, parentID 1) is processed with stopping code 2 +### pop requested out of 239 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 519, parentID 1) is processed with stopping code 2 +### pop requested out of 238 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.67899,0.5787,0.45175) + Old Polarization: (-0.73014,0.46813,0.49774) + New Momentum Direction: (0.12882,0.78169,0.61022) + New Polarization: (-0.98969,0.062462,0.12891) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 518, parentID 1) is processed with stopping code 2 +### pop requested out of 237 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.76893,-0.23066,-0.59627) + Old Polarization: (-0.63128,-0.42144,-0.65106) + New Momentum Direction: (0.49397,-0.31369,-0.81092) + New Polarization: (-0.86425,-0.27931,-0.4184) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 517, parentID 1) is processed with stopping code 2 +### pop requested out of 236 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.66249,0.7039,-0.25621) + Old Polarization: (-0.74772,0.60089,-0.28256) + New Momentum Direction: (0.89824,0.26925,-0.34738) + New Polarization: (0.096941,-0.89229,-0.44094) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 516, parentID 1) is processed with stopping code 2 +### pop requested out of 235 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.71307,0.29981,-0.63376) + Old Polarization: (-0.69251,0.16018,-0.7034) + New Momentum Direction: (0.32311,0.40469,-0.85547) + New Polarization: (-0.94123,0.043394,-0.33497) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 515, parentID 1) is processed with stopping code 2 +### pop requested out of 234 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.67579,0.5742,-0.46217) + Old Polarization: (-0.73278,0.45559,-0.50545) + New Momentum Direction: (-0.67579,0.5742,-0.46217) + New Polarization: (-0.73278,-0.45559,0.50545) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.67579,0.5742,-0.46217) + Old Polarization: (-0.73278,-0.45559,0.50545) + New Momentum Direction: (-0.67579,-0.5742,-0.46217) + New Polarization: (0.73278,-0.45559,-0.50545) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.67579,-0.5742,-0.46217) + Old Polarization: (0.73278,-0.45559,-0.50545) + New Momentum Direction: (-0.67579,-0.5742,0.46217) + New Polarization: (-0.73278,0.45559,-0.50545) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 514, parentID 1) is processed with stopping code 2 +### pop requested out of 233 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.69839,0.41598,-0.58242) + Old Polarization: (-0.70862,0.28756,-0.64434) + New Momentum Direction: (-0.69839,0.41598,-0.58242) + New Polarization: (-0.69614,-0.20575,0.68779) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.69839,0.41598,-0.58242) + Old Polarization: (-0.69614,-0.20575,0.68779) + New Momentum Direction: (-0.69839,0.41598,0.58242) + New Polarization: (0.69614,0.20575,0.68779) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.69839,0.41598,0.58242) + Old Polarization: (0.69614,0.20575,0.68779) + New Momentum Direction: (-0.69839,-0.41598,0.58242) + New Polarization: (-0.69614,0.20575,-0.68779) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.69839,-0.41598,0.58242) + Old Polarization: (-0.69614,0.20575,-0.68779) + New Momentum Direction: (-0.25249,-0.56237,0.78739) + New Polarization: (0.9564,-0.26852,0.1149) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 513, parentID 1) is processed with stopping code 2 +### pop requested out of 232 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 512, parentID 1) is processed with stopping code 2 +### pop requested out of 231 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 511, parentID 1) is processed with stopping code 2 +### pop requested out of 230 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 510, parentID 1) is processed with stopping code 2 +### pop requested out of 229 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.7998,-0.45934,0.38643) + Old Polarization: (-0.5965,-0.68019,0.42606) + New Momentum Direction: (0.58592,-0.62011,0.52168) + New Polarization: (-0.80781,-0.49805,0.31527) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 509, parentID 1) is processed with stopping code 2 +### pop requested out of 228 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.79805,-0.46922,0.37808) + Old Polarization: (-0.59903,-0.68586,0.41323) + New Momentum Direction: (0.57709,-0.63593,0.5124) + New Polarization: (-0.81429,-0.49607,0.30142) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 508, parentID 1) is processed with stopping code 2 +### pop requested out of 227 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73711,0.074755,0.67163) + Old Polarization: (-0.66589,-0.088985,0.74072) + New Momentum Direction: (0.40823,0.10098,0.90728) + New Polarization: (-0.90665,-0.071108,0.41586) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 507, parentID 1) is processed with stopping code 2 +### pop requested out of 226 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.74841,-0.047933,-0.6615) + Old Polarization: (-0.6536,-0.22268,-0.72334) + New Momentum Direction: (0.43324,-0.065137,-0.89892) + New Polarization: (-0.89518,-0.14693,-0.42079) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 506, parentID 1) is processed with stopping code 2 +### pop requested out of 225 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.68785,0.4711,-0.55221) + Old Polarization: (-0.71963,0.34321,-0.6036) + New Momentum Direction: (-0.68785,0.4711,-0.55221) + New Polarization: (-0.71432,-0.30427,0.63021) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.68785,0.4711,-0.55221) + Old Polarization: (-0.71432,-0.30427,0.63021) + New Momentum Direction: (-0.68785,0.4711,0.55221) + New Polarization: (0.71432,0.30427,0.63021) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.68785,0.4711,0.55221) + Old Polarization: (0.71432,0.30427,0.63021) + New Momentum Direction: (-0.68785,-0.4711,0.55221) + New Polarization: (-0.71432,0.30427,-0.63021) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 505, parentID 1) is processed with stopping code 2 +### pop requested out of 224 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.8108,-0.58216,0.060815) + Old Polarization: (-0.58522,-0.80827,0.064935) + New Momentum Direction: (0.60787,-0.78974,0.082501) + New Polarization: (-0.79396,-0.60595,0.049532) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 504, parentID 1) is processed with stopping code 2 +### pop requested out of 223 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 503, parentID 1) is processed with stopping code 2 +### pop requested out of 222 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.71719,0.23076,0.65757) + Old Polarization: (-0.6878,0.082574,0.72119) + New Momentum Direction: (0.33069,0.3125,0.8905) + New Polarization: (-0.93831,0.0078173,0.3457) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 502, parentID 1) is processed with stopping code 2 +### pop requested out of 221 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.66258,0.68796,0.29615) + Old Polarization: (-0.74736,0.58121,0.32194) + New Momentum Direction: (0.89973,0.16959,0.40214) + New Polarization: (-0.029198,-0.89596,0.44318) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 501, parentID 1) is processed with stopping code 2 +### pop requested out of 220 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.6791,0.55116,0.48481) + Old Polarization: (-0.72946,0.43306,0.52948) + New Momentum Direction: (-0.6791,0.55116,0.48481) + New Polarization: (-0.72757,-0.41791,-0.54405) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.6791,0.55116,0.48481) + Old Polarization: (-0.72757,-0.41791,-0.54405) + New Momentum Direction: (-0.6791,-0.55116,0.48481) + New Polarization: (0.72757,-0.41791,0.54405) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.6791,-0.55116,0.48481) + Old Polarization: (0.72757,-0.41791,0.54405) + New Momentum Direction: (-0.6791,-0.55116,-0.48481) + New Polarization: (-0.72757,0.41791,0.54405) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 500, parentID 1) is processed with stopping code 2 +### pop requested out of 219 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.65683,0.7354,0.16659) + Old Polarization: (-0.75355,0.63222,0.18017) + New Momentum Direction: (0.8924,0.39037,0.22634) + New Polarization: (0.30478,-0.89133,0.33562) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 499, parentID 1) is processed with stopping code 2 +### pop requested out of 218 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.75131,-0.027732,0.65936) + Old Polarization: (-0.65009,-0.20314,0.7322) + New Momentum Direction: (0.45839,-0.037347,0.88796) + New Polarization: (-0.88233,-0.13898,0.44964) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 498, parentID 1) is processed with stopping code 2 +### pop requested out of 217 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.81027,-0.58497,-0.035815) + Old Polarization: (-0.58604,-0.80926,-0.040772) + New Momentum Direction: (0.6052,-0.79458,-0.048649) + New Polarization: (-0.79606,-0.60444,-0.030825) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 497, parentID 1) is processed with stopping code 2 +### pop requested out of 216 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.79069,-0.35148,-0.50128) + Old Polarization: (-0.60617,-0.56425,-0.56051) + New Momentum Direction: (0.56676,-0.47299,-0.67458) + New Polarization: (-0.81977,-0.40542,-0.40448) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 496, parentID 1) is processed with stopping code 2 +### pop requested out of 215 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 495, parentID 1) is processed with stopping code 2 +### pop requested out of 214 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.66339,0.74496,-0.070319) + Old Polarization: (-0.74815,0.65867,-0.080139) + New Momentum Direction: (0.89242,0.44118,-0.094596) + New Polarization: (0.42446,-0.89197,-0.15564) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 494, parentID 1) is processed with stopping code 2 +### pop requested out of 213 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.76191,-0.11455,-0.63748) + Old Polarization: (-0.63837,-0.29915,-0.70922) + New Momentum Direction: (0.48714,-0.15446,-0.85956) + New Polarization: (-0.86719,-0.20198,-0.45517) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 493, parentID 1) is processed with stopping code 2 +### pop requested out of 212 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 492, parentID 1) is processed with stopping code 2 +### pop requested out of 211 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 491, parentID 1) is processed with stopping code 2 +### pop requested out of 210 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.6908,0.44118,0.57285) + Old Polarization: (-0.71652,0.31147,0.62417) + New Momentum Direction: (-0.6908,0.44118,0.57285) + New Polarization: (-0.70949,-0.26094,-0.65462) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.6908,0.44118,0.57285) + Old Polarization: (-0.70949,-0.26094,-0.65462) + New Momentum Direction: (-0.6908,0.44118,-0.57285) + New Polarization: (0.70949,0.26094,-0.65462) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.6908,0.44118,-0.57285) + Old Polarization: (0.70949,0.26094,-0.65462) + New Momentum Direction: (-0.6908,-0.44118,-0.57285) + New Polarization: (-0.70949,0.26094,0.65462) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.6908,-0.44118,-0.57285) + Old Polarization: (-0.70949,0.26094,0.65462) + New Momentum Direction: (-0.18925,-0.59915,-0.77795) + New Polarization: (0.97475,-0.21024,-0.075203) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 490, parentID 1) is processed with stopping code 2 +### pop requested out of 209 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.68273,0.5323,-0.50053) + Old Polarization: (-0.72554,0.41288,-0.55057) + New Momentum Direction: (0.13698,0.72165,-0.67857) + New Polarization: (-0.98803,0.050474,-0.14577) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 489, parentID 1) is processed with stopping code 2 +### pop requested out of 208 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.71976,0.20415,0.66352) + Old Polarization: (-0.68495,0.053125,0.72665) + New Momentum Direction: (0.33905,0.27665,0.89917) + New Polarization: (-0.9352,-0.0047454,0.35409) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 488, parentID 1) is processed with stopping code 2 +### pop requested out of 207 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.7128,0.29944,-0.63423) + Old Polarization: (-0.69278,0.15955,-0.70327) + New Momentum Direction: (0.32087,0.40436,-0.85647) + New Polarization: (-0.942,0.042336,-0.33293) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 487, parentID 1) is processed with stopping code 2 +### pop requested out of 206 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.77334,-0.25604,0.58) + Old Polarization: (-0.62612,-0.45216,0.63524) + New Momentum Direction: (0.51199,-0.3469,0.78583) + New Polarization: (-0.8538,-0.30593,0.42122) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 486, parentID 1) is processed with stopping code 2 +### pop requested out of 205 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 485, parentID 1) is processed with stopping code 2 +### pop requested out of 204 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.65847,0.74899,0.073675) + Old Polarization: (-0.75252,0.65375,0.079486) + New Momentum Direction: (0.8909,0.44313,0.099681) + New Polarization: (0.42514,-0.8908,0.16038) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 484, parentID 1) is processed with stopping code 2 +### pop requested out of 203 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.65541,0.74688,0.11226) + Old Polarization: (-0.75506,0.64443,0.12081) + New Momentum Direction: (0.89065,0.42833,0.15256) + New Polarization: (0.38736,-0.89049,0.2387) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 483, parentID 1) is processed with stopping code 2 +### pop requested out of 202 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.78473,-0.33654,0.52052) + Old Polarization: (-0.61329,-0.54331,0.57331) + New Momentum Direction: (0.54633,-0.45475,0.70337) + New Polarization: (-0.83318,-0.38093,0.40087) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 482, parentID 1) is processed with stopping code 2 +### pop requested out of 201 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.77476,-0.27778,-0.56796) + Old Polarization: (-0.62488,-0.47323,-0.62096) + New Momentum Direction: (0.51132,-0.37757,-0.772) + New Polarization: (-0.85456,-0.31852,-0.41022) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 481, parentID 1) is processed with stopping code 2 +### pop requested out of 200 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.66549,0.72661,-0.17078) + Old Polarization: (-0.74578,0.63789,-0.19214) + New Momentum Direction: (0.66549,-0.72661,-0.17078) + New Polarization: (-0.31539,-0.48111,0.81796) + *** FresnelReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 480, parentID 1) is processed with stopping code 2 +### pop requested out of 199 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.75346,-0.097592,-0.65022) + Old Polarization: (-0.64815,-0.27645,-0.70956) + New Momentum Direction: (0.44741,-0.13274,-0.88442) + New Polarization: (-0.88838,-0.17988,-0.42241) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 479, parentID 1) is processed with stopping code 2 +### pop requested out of 198 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 478, parentID 1) is processed with stopping code 2 +### pop requested out of 197 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.70837,0.28415,0.64612) + Old Polarization: (-0.69728,0.13956,0.70308) + New Momentum Direction: (-0.70837,0.28415,0.64612) + New Polarization: (-0.67809,-0.019769,-0.73472) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.70837,0.28415,0.64612) + Old Polarization: (-0.67809,-0.019769,-0.73472) + New Momentum Direction: (-0.70837,0.28415,-0.64612) + New Polarization: (0.67809,0.019769,-0.73472) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.70837,0.28415,-0.64612) + Old Polarization: (0.67809,0.019769,-0.73472) + New Momentum Direction: (-0.70837,-0.28415,-0.64612) + New Polarization: (-0.67809,0.019769,0.73472) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.70837,-0.28415,-0.64612) + Old Polarization: (-0.67809,0.019769,0.73472) + New Momentum Direction: (-0.28244,-0.38618,-0.87812) + New Polarization: (0.94302,-0.27965,-0.18033) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 477, parentID 1) is processed with stopping code 2 +### pop requested out of 196 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.80606,-0.52434,-0.27447) + Old Polarization: (-0.59003,-0.7481,-0.30366) + New Momentum Direction: (0.59847,-0.70978,-0.37154) + New Polarization: (-0.79993,-0.55498,-0.22828) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 476, parentID 1) is processed with stopping code 2 +### pop requested out of 195 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.66391,0.69255,-0.28212) + Old Polarization: (-0.74618,0.58861,-0.31105) + New Momentum Direction: (0.66391,-0.69255,-0.28212) + New Polarization: (-0.14821,-0.49163,0.8581) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66391,-0.69255,-0.28212) + Old Polarization: (-0.14821,-0.49163,0.8581) + New Momentum Direction: (-0.66391,-0.69255,-0.28212) + New Polarization: (-0.14821,0.49163,-0.8581) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66391,-0.69255,-0.28212) + Old Polarization: (-0.14821,0.49163,-0.8581) + New Momentum Direction: (-0.66391,-0.69255,0.28212) + New Polarization: (0.14821,-0.49163,-0.8581) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66391,-0.69255,0.28212) + Old Polarization: (0.14821,-0.49163,-0.8581) + New Momentum Direction: (-0.66391,0.69255,0.28212) + New Polarization: (0.66691,0.37767,0.64233) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66391,0.69255,0.28212) + Old Polarization: (0.66691,0.37767,0.64233) + New Momentum Direction: (0.66391,0.69255,0.28212) + New Polarization: (0.66691,-0.37767,-0.64233) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66391,0.69255,0.28212) + Old Polarization: (0.66691,-0.37767,-0.64233) + New Momentum Direction: (0.90007,0.20877,0.38247) + New Polarization: (0.4138,-0.68452,-0.60017) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 475, parentID 1) is processed with stopping code 2 +### pop requested out of 194 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.75098,-0.049603,-0.65846) + Old Polarization: (-0.65067,-0.22554,-0.7251) + New Momentum Direction: (0.44713,-0.067192,-0.89194) + New Polarization: (-0.88827,-0.1505,-0.43396) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 474, parentID 1) is processed with stopping code 2 +### pop requested out of 193 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.74435,0.012029,0.66768) + Old Polarization: (-0.65789,-0.15831,0.73629) + New Momentum Direction: (0.43148,0.01625,0.90198) + New Polarization: (-0.8958,-0.11048,0.43051) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 473, parentID 1) is processed with stopping code 2 +### pop requested out of 192 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.71644,0.21539,0.66356) + Old Polarization: (-0.68848,0.064612,0.72237) + New Momentum Direction: (0.31832,0.29268,0.90167) + New Polarization: (-0.94259,-0.0036269,0.33394) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 472, parentID 1) is processed with stopping code 2 +### pop requested out of 191 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.77585,-0.24505,0.58138) + Old Polarization: (-0.62287,-0.44421,0.64398) + New Momentum Direction: (0.52598,-0.33034,0.78372) + New Polarization: (-0.84512,-0.30648,0.43801) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 471, parentID 1) is processed with stopping code 2 +### pop requested out of 190 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73161,0.13744,-0.66772) + Old Polarization: (-0.67197,-0.019652,-0.74032) + New Momentum Direction: (0.39053,0.1856,-0.90169) + New Polarization: (-0.9145,-0.034279,-0.40313) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 470, parentID 1) is processed with stopping code 2 +### pop requested out of 189 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.80693,-0.52689,0.26693) + Old Polarization: (-0.5888,-0.75328,0.29306) + New Momentum Direction: (0.6023,-0.7121,0.36076) + New Polarization: (-0.79702,-0.56177,0.22176) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 469, parentID 1) is processed with stopping code 2 +### pop requested out of 188 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.66802,0.6753,-0.3126) + Old Polarization: (-0.74213,0.57369,-0.3466) + New Momentum Direction: (0.66802,-0.6753,-0.3126) + New Polarization: (-0.15961,-0.54033,0.82618) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66802,-0.6753,-0.3126) + Old Polarization: (-0.15961,-0.54033,0.82618) + New Momentum Direction: (-0.66802,-0.6753,-0.3126) + New Polarization: (-0.15961,0.54033,-0.82618) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 468, parentID 1) is processed with stopping code 2 +### pop requested out of 187 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.81045,-0.58512,0.028294) + Old Polarization: (-0.58578,-0.80994,0.029255) + New Momentum Direction: (0.606,-0.79453,0.03842) + New Polarization: (-0.79544,-0.60562,0.0223) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 467, parentID 1) is processed with stopping code 2 +### pop requested out of 186 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.79992,-0.46185,0.38318) + Old Polarization: (-0.59641,-0.68265,0.42225) + New Momentum Direction: (0.58593,-0.62366,0.51743) + New Polarization: (-0.80785,-0.49978,0.31241) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 466, parentID 1) is processed with stopping code 2 +### pop requested out of 185 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.72685,0.14431,0.67146) + Old Polarization: (-0.67717,-0.012522,0.73572) + New Momentum Direction: (0.36629,0.19552,0.90973) + New Polarization: (-0.92461,-0.033359,0.37946) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 465, parentID 1) is processed with stopping code 2 +### pop requested out of 184 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.65668,0.7522,-0.054545) + Old Polarization: (-0.7541,0.65388,-0.061472) + New Momentum Direction: (0.89034,0.44924,-0.073954) + New Polarization: (0.43906,-0.89018,-0.12164) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 464, parentID 1) is processed with stopping code 2 +### pop requested out of 183 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.66607,0.66037,-0.34678) + Old Polarization: (-0.74346,0.55026,-0.38011) + New Momentum Direction: (-0.66607,0.66037,-0.34678) + New Polarization: (-0.74346,-0.55026,0.38011) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66607,0.66037,-0.34678) + Old Polarization: (-0.74346,-0.55026,0.38011) + New Momentum Direction: (-0.66607,-0.66037,-0.34678) + New Polarization: (0.74346,-0.55026,-0.38011) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66607,-0.66037,-0.34678) + Old Polarization: (0.74346,-0.55026,-0.38011) + New Momentum Direction: (-0.66607,-0.66037,0.34678) + New Polarization: (-0.74346,0.55026,-0.38011) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 463, parentID 1) is processed with stopping code 2 +### pop requested out of 182 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 462, parentID 1) is processed with stopping code 2 +### pop requested out of 181 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.74217,0.0026985,-0.67021) + Old Polarization: (-0.66042,-0.16735,-0.73201) + New Momentum Direction: (0.41188,0.003669,-0.91123) + New Polarization: (-0.90512,-0.11405,-0.40958) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 461, parentID 1) is processed with stopping code 2 +### pop requested out of 180 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 460, parentID 1) is processed with stopping code 2 +### pop requested out of 179 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.67775,0.58374,0.4471) + Old Polarization: (-0.73138,0.47262,0.49164) + New Momentum Direction: (0.10852,0.7892,0.60448) + New Polarization: (-0.99222,0.048619,0.11465) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 459, parentID 1) is processed with stopping code 2 +### pop requested out of 178 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 458, parentID 1) is processed with stopping code 2 +### pop requested out of 177 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.78929,-0.35063,-0.50406) + Old Polarization: (-0.60795,-0.56142,-0.56143) + New Momentum Direction: (0.5611,-0.47268,-0.67951) + New Polarization: (-0.82364,-0.40048,-0.40154) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 457, parentID 1) is processed with stopping code 2 +### pop requested out of 176 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.66133,0.69888,0.27242) + Old Polarization: (-0.74873,0.59312,0.29601) + New Momentum Direction: (0.89805,0.23803,0.36993) + New Polarization: (0.052715,-0.89313,0.44671) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 456, parentID 1) is processed with stopping code 2 +### pop requested out of 175 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.75461,-0.05574,0.65381) + Old Polarization: (-0.64642,-0.23433,0.72611) + New Momentum Direction: (0.4682,-0.075061,0.88043) + New Polarization: (-0.87724,-0.15902,0.45295) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 455, parentID 1) is processed with stopping code 2 +### pop requested out of 174 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 454, parentID 1) is processed with stopping code 2 +### pop requested out of 173 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.75516,-0.086693,0.64978) + Old Polarization: (-0.64598,-0.26706,0.71512) + New Momentum Direction: (0.46301,-0.11722,0.87857) + New Polarization: (-0.88016,-0.17778,0.44013) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 453, parentID 1) is processed with stopping code 2 +### pop requested out of 172 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.69876,0.37846,-0.60705) + Old Polarization: (-0.70775,0.24233,-0.6636) + New Momentum Direction: (0.23357,0.51441,-0.82512) + New Polarization: (-0.96817,0.044566,-0.24628) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 452, parentID 1) is processed with stopping code 2 +### pop requested out of 171 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.77102,-0.24813,-0.58648) + Old Polarization: (-0.629,-0.44055,-0.64053) + New Momentum Direction: (0.50009,-0.33743,-0.79753) + New Polarization: (-0.86088,-0.29345,-0.41566) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 451, parentID 1) is processed with stopping code 2 +### pop requested out of 170 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.69225,0.43863,0.57306) +Old Polarization: (-0.71508,0.31,0.62654) +New Polarization: (-0.13652,-0.27078,0.8379) +Polarization Change: (-0.15321,-0.30388,0.94031) +New Momentum Direction: (-0.64435,0.72791,0.13025) +Momentum Change: (-0.65695,0.74215,0.1328) + +** Photon Absorbed! ** +Track (trackID 450, parentID 1) is processed with stopping code 2 +### pop requested out of 169 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.76737,-0.19736,-0.61007) + Old Polarization: (-0.63272,-0.38726,-0.67059) + New Momentum Direction: (0.49421,-0.26758,-0.82714) + New Polarization: (-0.8638,-0.2584,-0.43252) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 449, parentID 1) is processed with stopping code 2 +### pop requested out of 168 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.77854,-0.29756,0.55256) + Old Polarization: (-0.62035,-0.49821,0.60576) + New Momentum Direction: (0.52694,-0.40297,0.7483) + New Polarization: (-0.8451,-0.34189,0.411) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 448, parentID 1) is processed with stopping code 2 +### pop requested out of 167 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.79652,-0.44971,-0.40411) + Old Polarization: (-0.60073,-0.66419,-0.44494) + New Momentum Direction: (0.57296,-0.60962,-0.5478) + New Polarization: (-0.81698,-0.47803,-0.32254) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 447, parentID 1) is processed with stopping code 2 +### pop requested out of 166 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.6837,0.497,0.53436) + Old Polarization: (-0.72417,0.37156,0.58097) + New Momentum Direction: (0.12657,0.67557,0.72635) + New Polarization: (-0.98923,0.031735,0.14286) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 446, parentID 1) is processed with stopping code 2 +### pop requested out of 165 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 445, parentID 1) is processed with stopping code 2 +### pop requested out of 164 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.65871,0.75123,0.0419) + Old Polarization: (-0.75238,0.65723,0.044545) + New Momentum Direction: (0.89067,0.45111,0.056654) + New Polarization: (0.44527,-0.89067,0.091881) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 444, parentID 1) is processed with stopping code 2 +### pop requested out of 163 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.78767,-0.3852,-0.48082) + Old Polarization: (-0.6107,-0.5912,-0.5268) + New Momentum Direction: (0.54751,-0.5232,-0.65307) + New Polarization: (-0.83322,-0.413,-0.36767) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 443, parentID 1) is processed with stopping code 2 +### pop requested out of 162 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.76022,-0.12244,0.63802) + Old Polarization: (-0.64033,-0.30711,0.70403) + New Momentum Direction: (0.47985,-0.16535,0.86163) + New Polarization: (-0.87124,-0.2055,0.44577) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 442, parentID 1) is processed with stopping code 2 +### pop requested out of 161 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.66717,0.66637,0.33291) + Old Polarization: (-0.74281,0.56164,0.36441) + New Momentum Direction: (-0.66717,0.66637,0.33291) + New Polarization: (-0.74281,-0.56164,-0.36441) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66717,0.66637,0.33291) + Old Polarization: (-0.74281,-0.56164,-0.36441) + New Momentum Direction: (-0.66717,-0.66637,0.33291) + New Polarization: (0.74281,-0.56164,0.36441) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66717,-0.66637,0.33291) + Old Polarization: (0.74281,-0.56164,0.36441) + New Momentum Direction: (-0.66717,-0.66637,-0.33291) + New Polarization: (-0.74281,0.56164,0.36441) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66717,-0.66637,-0.33291) + Old Polarization: (-0.74281,0.56164,0.36441) + New Momentum Direction: (0.66717,-0.66637,-0.33291) + New Polarization: (-0.74281,-0.56164,-0.36441) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66717,-0.66637,-0.33291) + Old Polarization: (-0.74281,-0.56164,-0.36441) + New Momentum Direction: (0.66717,0.66637,-0.33291) + New Polarization: (0.74281,-0.56164,0.36441) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 441, parentID 1) is processed with stopping code 2 +### pop requested out of 160 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.78208,-0.29018,-0.5515) + Old Polarization: (-0.61599,-0.49397,-0.61363) + New Momentum Direction: (0.54201,-0.39131,-0.74371) + New Polarization: (-0.83555,-0.34564,-0.42707) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 440, parentID 1) is processed with stopping code 2 +### pop requested out of 159 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 439, parentID 1) is processed with stopping code 2 +### pop requested out of 158 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 438, parentID 1) is processed with stopping code 2 +### pop requested out of 157 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.75719,-0.12826,0.64047) + Old Polarization: (-0.64395,-0.31097,0.69902) + New Momentum Direction: (0.46271,-0.17408,0.86925) + New Polarization: (-0.88056,-0.20368,0.42794) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 437, parentID 1) is processed with stopping code 2 +### pop requested out of 156 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.70044,0.42333,0.57461) + Old Polarization: (-0.70688,0.30039,0.64038) + New Momentum Direction: (-0.70044,0.42333,0.57461) + New Polarization: (-0.69204,-0.20597,-0.69185) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.70044,0.42333,0.57461) + Old Polarization: (-0.69204,-0.20597,-0.69185) + New Momentum Direction: (-0.70044,0.42333,-0.57461) + New Polarization: (0.69204,0.20597,-0.69185) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 436, parentID 1) is processed with stopping code 2 +### pop requested out of 155 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.81073,-0.58047,-0.075911) + Old Polarization: (-0.58529,-0.80638,-0.08479) + New Momentum Direction: (0.60768,-0.78748,-0.10298) + New Polarization: (-0.7941,-0.60436,-0.064448) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 435, parentID 1) is processed with stopping code 2 +### pop requested out of 154 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.76006,-0.15099,0.63206) + Old Polarization: (-0.64078,-0.33601,0.69029) + New Momentum Direction: (0.47181,-0.20486,0.85757) + New Polarization: (-0.87584,-0.22086,0.4291) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 434, parentID 1) is processed with stopping code 2 +### pop requested out of 153 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.6953,0.41195,0.58895) +Old Polarization: (-0.71174,0.28073,0.64391) +New Polarization: (-0.27553,0.51806,0.64063) +Polarization Change: (-0.31716,0.59633,0.73742) +New Momentum Direction: (-0.89611,-0.44235,-0.027699) +Momentum Change: (-0.89636,-0.44247,-0.027706) + +** Photon Absorbed! ** +Track (trackID 433, parentID 1) is processed with stopping code 2 +### pop requested out of 152 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.66088,0.74764,-0.065386) + Old Polarization: (-0.75039,0.65682,-0.074152) + New Momentum Direction: (0.89165,0.44405,-0.088218) + New Polarization: (0.42953,-0.89132,-0.14505) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 432, parentID 1) is processed with stopping code 2 +### pop requested out of 151 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.81006,-0.57038,-0.13589) + Old Polarization: (-0.58592,-0.79624,-0.15066) + New Momentum Direction: (0.60664,-0.77333,-0.18424) + New Polarization: (-0.79469,-0.59613,-0.11444) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 431, parentID 1) is processed with stopping code 2 +### pop requested out of 150 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.66435,0.70771,-0.24038) + Old Polarization: (-0.74621,0.6098,-0.26705) + New Momentum Direction: (0.89796,0.29682,-0.32491) + New Polarization: (0.13896,-0.89177,-0.43062) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 430, parentID 1) is processed with stopping code 2 +### pop requested out of 149 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.71778,0.19902,0.66722) +Old Polarization: (-0.687,0.04655,0.72517) +New Polarization: (-0.55402,0.18347,0.72031) +Polarization Change: (-0.59761,0.1979,0.77698) +New Momentum Direction: (-0.75044,-0.11786,-0.54717) +Momentum Change: (-0.80159,-0.1259,-0.58447) + +** Photon Absorbed! ** +Track (trackID 429, parentID 1) is processed with stopping code 2 +### pop requested out of 148 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.71993,0.20315,-0.66365) + Old Polarization: (-0.6847,0.051474,-0.727) + New Momentum Direction: (0.33455,0.27584,-0.90111) + New Polarization: (-0.9368,-0.0065356,-0.3498) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 428, parentID 1) is processed with stopping code 2 +### pop requested out of 147 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.67422,0.62998,-0.38541) + Old Polarization: (-0.73546,0.52524,-0.42805) + New Momentum Direction: (0.073634,0.85071,-0.52045) + New Polarization: (-0.99588,0.03499,-0.083705) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 427, parentID 1) is processed with stopping code 2 +### pop requested out of 146 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.80365,-0.53342,0.26384) + Old Polarization: (-0.59333,-0.75237,0.28619) + New Momentum Direction: (0.58826,-0.72485,0.35852) + New Polarization: (-0.80748,-0.55053,0.21187) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 426, parentID 1) is processed with stopping code 2 +### pop requested out of 145 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.81019,-0.53647,0.23619) + Old Polarization: (-0.58469,-0.76821,0.26076) + New Momentum Direction: (0.61314,-0.723,0.31831) + New Polarization: (-0.78896,-0.58081,0.20048) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 425, parentID 1) is processed with stopping code 2 +### pop requested out of 144 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.69885,0.38717,0.60142) + Old Polarization: (-0.70793,0.25425,0.65894) + New Momentum Direction: (0.24708,0.52451,0.81476) + New Polarization: (-0.9649,0.055921,0.25661) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 424, parentID 1) is processed with stopping code 2 +### pop requested out of 143 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 423, parentID 1) is processed with stopping code 2 +### pop requested out of 142 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 422, parentID 1) is processed with stopping code 2 +### pop requested out of 141 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.71052,0.26943,0.65005) + Old Polarization: (-0.69496,0.12377,0.70831) + New Momentum Direction: (0.29417,0.36595,0.88292) + New Polarization: (-0.95072,0.017309,0.30958) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 421, parentID 1) is processed with stopping code 2 +### pop requested out of 140 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.74988,-0.038002,-0.66048) + Old Polarization: (-0.65186,-0.2129,-0.72784) + New Momentum Direction: (-0.74988,-0.038002,-0.66048) + New Polarization: (-0.56269,0.56169,0.60654) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.74988,-0.038002,-0.66048) + Old Polarization: (-0.56269,0.56169,0.60654) + New Momentum Direction: (-0.74988,-0.038002,0.66048) + New Polarization: (0.56269,-0.56169,0.60654) + *** TotalInternalReflection *** +No Absorbtion length specified +Scattering Photon! +Old Momentum Direction: (-0.74988,-0.038002,0.66048) +Old Polarization: (0.56269,-0.56169,0.60654) +New Polarization: (0.71063,-0.34272,0.41618) +Polarization Change: (0.79667,-0.38421,0.46657) +New Momentum Direction: (0.51095,0.83208,-0.18725) +Momentum Change: (0.51392,0.83691,-0.18833) + +** Photon Absorbed! ** +Track (trackID 420, parentID 1) is processed with stopping code 2 +### pop requested out of 139 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.7192,0.18948,0.66847) +Old Polarization: (-0.68546,0.036262,0.7272) +New Polarization: (-0.85244,-0.029657,0.15117) +Polarization Change: (-0.98406,-0.034236,0.17452) +New Momentum Direction: (0.069705,0.77252,0.5446) +Momentum Change: (0.073547,0.81511,0.57462) + Photon at Boundary! + Old Momentum Direction: (0.073547,0.81511,0.57462) + Old Polarization: (-0.98406,-0.034236,0.17452) + New Momentum Direction: (0.09997,0.61639,0.78107) + New Polarization: (-0.98189,-0.06587,0.17766) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 419, parentID 1) is processed with stopping code 2 +### pop requested out of 138 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.69768,0.38127,0.60653) + Old Polarization: (-0.709,0.24598,0.66092) + New Momentum Direction: (0.23098,0.5178,0.82373) + New Polarization: (-0.9689,0.045177,0.24329) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 418, parentID 1) is processed with stopping code 2 +### pop requested out of 137 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.81011,-0.51735,-0.27581) + Old Polarization: (-0.58441,-0.75008,-0.30958) + New Momentum Direction: (0.61504,-0.69579,-0.37094) + New Polarization: (-0.78721,-0.56867,-0.23857) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 417, parentID 1) is processed with stopping code 2 +### pop requested out of 136 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.67147,0.60787,-0.42381) + Old Polarization: (-0.73741,0.49168,-0.46312) + New Momentum Direction: (-0.67147,0.60787,-0.42381) + New Polarization: (-0.73741,-0.49168,0.46312) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.67147,0.60787,-0.42381) + Old Polarization: (-0.73741,-0.49168,0.46312) + New Momentum Direction: (-0.67147,-0.60787,-0.42381) + New Polarization: (0.73741,-0.49168,-0.46312) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.67147,-0.60787,-0.42381) + Old Polarization: (0.73741,-0.49168,-0.46312) + New Momentum Direction: (-0.67147,-0.60787,0.42381) + New Polarization: (-0.73741,0.49168,-0.46312) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 416, parentID 1) is processed with stopping code 2 +### pop requested out of 135 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.78681,-0.32871,-0.52237) + Old Polarization: (-0.61069,-0.53714,-0.58184) + New Momentum Direction: (0.55483,-0.4431,-0.70415) + New Polarization: (-0.82758,-0.38074,-0.4125) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 415, parentID 1) is processed with stopping code 2 +### pop requested out of 134 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.80593,-0.49225,0.32889) + Old Polarization: (-0.58921,-0.72093,0.36482) + New Momentum Direction: (0.6042,-0.66256,0.44267) + New Polarization: (-0.79491,-0.53971,0.27717) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 414, parentID 1) is processed with stopping code 2 +### pop requested out of 133 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.69339,0.41759,0.58722) + Old Polarization: (-0.71367,0.28556,0.63963) + New Momentum Direction: (0.2052,0.5672,0.7976) + New Polarization: (-0.97504,0.047903,0.21678) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 413, parentID 1) is processed with stopping code 2 +### pop requested out of 132 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.69832,0.43215,0.57061) + Old Polarization: (-0.7091,0.30895,0.63382) + New Momentum Direction: (0.26707,0.58181,0.76823) + New Polarization: (-0.95983,0.089459,0.26593) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 412, parentID 1) is processed with stopping code 2 +### pop requested out of 131 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.76529,-0.14829,-0.62637) + Old Polarization: (-0.63466,-0.3362,-0.69583) + New Momentum Direction: (0.49565,-0.20009,-0.84516) + New Polarization: (-0.86257,-0.22714,-0.45208) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 411, parentID 1) is processed with stopping code 2 +### pop requested out of 130 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.69472,0.43472,-0.57304) + Old Polarization: (-0.71247,0.30654,-0.63121) + New Momentum Direction: (0.22505,0.58888,-0.77625) + New Polarization: (-0.97062,0.0659,-0.23141) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 410, parentID 1) is processed with stopping code 2 +### pop requested out of 129 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73558,0.10329,0.66952) + Old Polarization: (-0.66759,-0.057339,0.74231) + New Momentum Direction: (0.40806,0.1392,0.90228) + New Polarization: (-0.90672,-0.053526,0.41833) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 409, parentID 1) is processed with stopping code 2 +### pop requested out of 128 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.72187,0.22979,0.65276) + Old Polarization: (-0.68288,0.083685,0.72572) + New Momentum Direction: (0.36386,0.3093,0.8786) + New Polarization: (-0.9258,0.016315,0.37766) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 408, parentID 1) is processed with stopping code 2 +### pop requested out of 127 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.69279,0.42887,-0.57975) + Old Polarization: (-0.71425,0.2972,-0.63366) + New Momentum Direction: (-0.69279,0.42887,-0.57975) + New Polarization: (-0.7063,-0.24129,0.66552) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.69279,0.42887,-0.57975) + Old Polarization: (-0.7063,-0.24129,0.66552) + New Momentum Direction: (-0.69279,0.42887,0.57975) + New Polarization: (0.7063,0.24129,0.66552) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.69279,0.42887,0.57975) + Old Polarization: (0.7063,0.24129,0.66552) + New Momentum Direction: (-0.69279,-0.42887,0.57975) + New Polarization: (-0.7063,0.24129,-0.66552) + *** TotalInternalReflection *** +No Absorbtion length specified +Scattering Photon! +Old Momentum Direction: (-0.69279,-0.42887,0.57975) +Old Polarization: (-0.7063,0.24129,-0.66552) +New Polarization: (-0.73589,0.16914,-0.58171) +Polarization Change: (-0.77204,0.17745,-0.61029) +New Momentum Direction: (0.27805,0.95731,-0.073395) +Momentum Change: (0.27817,0.95772,-0.073426) + Photon at Boundary! + Old Momentum Direction: (0.27817,0.95772,-0.073426) + Old Polarization: (-0.77204,0.17745,-0.61029) + New Momentum Direction: (0.37815,0.92035,-0.099816) + New Polarization: (0.47651,-0.28595,-0.83136) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 407, parentID 1) is processed with stopping code 2 +### pop requested out of 126 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.76358,-0.19351,0.61603) + Old Polarization: (-0.63707,-0.38127,0.6699) + New Momentum Direction: (0.47909,-0.26305,0.83743) + New Polarization: (-0.87218,-0.2501,0.42041) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 406, parentID 1) is processed with stopping code 2 +### pop requested out of 125 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 405, parentID 1) is processed with stopping code 2 +### pop requested out of 124 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.81005,-0.57724,-0.10304) + Old Polarization: (-0.58613,-0.80211,-0.11438) + New Momentum Direction: (0.60552,-0.78345,-0.13985) + New Polarization: (-0.79567,-0.59949,-0.0867) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 404, parentID 1) is processed with stopping code 2 +### pop requested out of 123 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.79855,-0.41461,-0.43637) + Old Polarization: (-0.59728,-0.63567,-0.48906) + New Momentum Direction: (0.58732,-0.55748,-0.58674) + New Polarization: (-0.80618,-0.46711,-0.36315) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 403, parentID 1) is processed with stopping code 2 +### pop requested out of 122 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.67084,0.62105,-0.40531) + Old Polarization: (-0.73828,0.5076,-0.44417) + New Momentum Direction: (-0.67084,0.62105,-0.40531) + New Polarization: (-0.73828,-0.5076,0.44417) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.67084,0.62105,-0.40531) + Old Polarization: (-0.73828,-0.5076,0.44417) + New Momentum Direction: (-0.67084,-0.62105,-0.40531) + New Polarization: (0.73828,-0.5076,-0.44417) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.67084,-0.62105,-0.40531) + Old Polarization: (0.73828,-0.5076,-0.44417) + New Momentum Direction: (-0.67084,-0.62105,0.40531) + New Polarization: (-0.73828,0.5076,-0.44417) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.67084,-0.62105,0.40531) + Old Polarization: (-0.73828,0.5076,-0.44417) + New Momentum Direction: (0.67084,-0.62105,0.40531) + New Polarization: (-0.73828,-0.5076,0.44417) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.67084,-0.62105,0.40531) + Old Polarization: (-0.73828,-0.5076,0.44417) + New Momentum Direction: (0.67084,0.62105,0.40531) + New Polarization: (0.73828,-0.5076,-0.44417) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 402, parentID 1) is processed with stopping code 2 +### pop requested out of 121 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.69562,0.43601,0.57097) + Old Polarization: (-0.71179,0.31065,0.62996) + New Momentum Direction: (0.24263,0.58878,0.77102) + New Polarization: (-0.96642,0.077306,0.24508) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 401, parentID 1) is processed with stopping code 2 +### pop requested out of 120 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 400, parentID 1) is processed with stopping code 2 +### pop requested out of 119 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 399, parentID 1) is processed with stopping code 2 +### pop requested out of 118 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.65933,0.74216,0.12037) + Old Polarization: (-0.75161,0.64648,0.13097) + New Momentum Direction: (0.89192,0.42187,0.16283) + New Polarization: (0.37513,-0.89134,0.25453) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 398, parentID 1) is processed with stopping code 2 +### pop requested out of 117 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.75385,-0.11217,0.64741) + Old Polarization: (-0.64771,-0.29242,0.70354) + New Momentum Direction: (-0.75385,-0.11217,0.64741) + New Polarization: (-0.55476,0.63664,-0.53566) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.75385,-0.11217,0.64741) + Old Polarization: (-0.55476,0.63664,-0.53566) + New Momentum Direction: (-0.75385,-0.11217,-0.64741) + New Polarization: (0.55476,-0.63664,-0.53566) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.75385,-0.11217,-0.64741) + Old Polarization: (0.55476,-0.63664,-0.53566) + New Momentum Direction: (-0.44903,-0.15253,-0.8804) + New Polarization: (0.82026,-0.4611,-0.33847) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 397, parentID 1) is processed with stopping code 2 +### pop requested out of 116 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.71196,0.30992,0.63013) + Old Polarization: (-0.69387,0.17249,0.69914) + New Momentum Direction: (0.32418,0.41751,0.84888) + New Polarization: (-0.94098,0.050016,0.33475) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 396, parentID 1) is processed with stopping code 2 +### pop requested out of 115 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.80911,-0.50809,-0.29528) + Old Polarization: (-0.58552,-0.73985,-0.33136) + New Momentum Direction: (0.61273,-0.68328,-0.3971) + New Polarization: (-0.78882,-0.55942,-0.25458) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 395, parentID 1) is processed with stopping code 2 +### pop requested out of 114 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.70007,0.39779,-0.59302) + Old Polarization: (-0.70671,0.26703,-0.65517) + New Momentum Direction: (0.25873,0.5381,-0.80219) + New Polarization: (-0.96178,0.066476,-0.26561) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 394, parentID 1) is processed with stopping code 2 +### pop requested out of 113 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 393, parentID 1) is processed with stopping code 2 +### pop requested out of 112 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.69069,0.46968,-0.54986) + Old Polarization: (-0.7169,0.345,-0.60582) + New Momentum Direction: (0.20129,0.63619,-0.74481) + New Polarization: (-0.97619,0.067579,-0.2061) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 392, parentID 1) is processed with stopping code 2 +### pop requested out of 111 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 391, parentID 1) is processed with stopping code 2 +### pop requested out of 110 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.79846,-0.45784,-0.39095) + Old Polarization: (-0.59841,-0.67488,-0.43179) + New Momentum Direction: (0.57943,-0.6198,-0.52925) + New Polarization: (-0.81256,-0.48972,-0.3161) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 390, parentID 1) is processed with stopping code 2 +### pop requested out of 109 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.81154,-0.58429,-5.8634e-05) + Old Polarization: (-0.58429,-0.81154,-0.0017307) + New Momentum Direction: (0.61029,-0.79218,-7.9496e-05) + New Polarization: (-0.79218,-0.61029,-0.0012268) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 389, parentID 1) is processed with stopping code 2 +### pop requested out of 108 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 388, parentID 1) is processed with stopping code 2 +### pop requested out of 107 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.80152,-0.49428,-0.33654) + Old Polarization: (-0.59528,-0.71289,-0.37071) + New Momentum Direction: (0.58546,-0.67012,-0.45627) + New Polarization: (-0.80889,-0.52048,-0.2735) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 387, parentID 1) is processed with stopping code 2 +### pop requested out of 106 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 386, parentID 1) is processed with stopping code 2 +### pop requested out of 105 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.69428,0.45832,-0.55491) + Old Polarization: (-0.71327,0.33529,-0.61549) + New Momentum Direction: (0.23535,0.61893,-0.74936) + New Polarization: (-0.96833,0.083231,-0.23537) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 385, parentID 1) is processed with stopping code 2 +### pop requested out of 104 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.65861,0.72493,-0.20179) + Old Polarization: (-0.75165,0.62108,-0.222) + New Momentum Direction: (0.89464,0.35282,-0.27411) + New Polarization: (0.23275,-0.89172,-0.38815) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 384, parentID 1) is processed with stopping code 2 +### pop requested out of 103 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.74655,-0.036237,-0.66435) + Old Polarization: (-0.65566,-0.20972,-0.72534) + New Momentum Direction: (0.42592,-0.049278,-0.90342) + New Polarization: (-0.89867,-0.13872,-0.41611) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 383, parentID 1) is processed with stopping code 2 +### pop requested out of 102 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 382, parentID 1) is processed with stopping code 2 +### pop requested out of 101 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.81418,-0.5806,0.0030199) + Old Polarization: (-0.58061,-0.81418,0.001667) + New Momentum Direction: (0.62082,-0.78394,0.0040776) + New Polarization: (-0.78395,-0.62082,0.0014022) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 381, parentID 1) is processed with stopping code 2 +### pop requested out of 100 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.74159,0.017433,-0.67063) + Old Polarization: (-0.66102,-0.15153,-0.73491) + New Momentum Direction: (0.41303,0.023666,-0.91041) + New Polarization: (-0.90455,-0.10548,-0.41311) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 380, parentID 1) is processed with stopping code 2 +### pop requested out of 99 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.80559,-0.51363,-0.29532) + Old Polarization: (-0.59038,-0.73777,-0.32732) + New Momentum Direction: (0.59836,-0.6946,-0.39937) + New Polarization: (-0.7998,-0.54748,-0.24613) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 379, parentID 1) is processed with stopping code 2 +### pop requested out of 98 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.76712,-0.15996,0.62124) + Old Polarization: (-0.63245,-0.35067,0.69068) + New Momentum Direction: (0.50453,-0.21529,0.83612) + New Polarization: (-0.85738,-0.23906,0.4558) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 378, parentID 1) is processed with stopping code 2 +### pop requested out of 97 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.67818,0.58853,0.44012) + Old Polarization: (-0.7311,0.47952,0.48534) + New Momentum Direction: (0.12405,0.79465,0.59426) + New Polarization: (-0.99041,0.062422,0.12328) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 377, parentID 1) is processed with stopping code 2 +### pop requested out of 96 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.81555,-0.57154,-0.090684) + Old Polarization: (-0.5785,-0.80919,-0.10272) + New Momentum Direction: (0.6271,-0.76932,-0.12207) + New Polarization: (-0.77881,-0.62209,-0.080354) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 376, parentID 1) is processed with stopping code 2 +### pop requested out of 95 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.65552,0.75451,-0.031587) + Old Polarization: (-0.75515,0.65456,-0.036209) + New Momentum Direction: (0.88981,0.45432,-0.042876) + New Polarization: (0.45085,-0.88974,-0.071396) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 375, parentID 1) is processed with stopping code 2 +### pop requested out of 94 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.80692,-0.54739,0.22189) + Old Polarization: (-0.58938,-0.77089,0.24157) + New Momentum Direction: (0.59879,-0.74224,0.30088) + New Polarization: (-0.80004,-0.57176,0.18171) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 374, parentID 1) is processed with stopping code 2 +### pop requested out of 93 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.80942,-0.56544,-0.1585) + Old Polarization: (-0.58665,-0.79062,-0.1754) + New Momentum Direction: (0.60492,-0.76673,-0.21492) + New Polarization: (-0.79589,-0.59067,-0.13293) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 373, parentID 1) is processed with stopping code 2 +### pop requested out of 92 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 372, parentID 1) is processed with stopping code 2 +### pop requested out of 91 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.65714,0.75211,0.050062) + Old Polarization: (-0.75373,0.65501,0.053315) + New Momentum Direction: (0.89029,0.45032,0.067824) + New Polarization: (0.44197,-0.8903,0.1097) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 371, parentID 1) is processed with stopping code 2 +### pop requested out of 90 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.81376,-0.57294,-0.097595) + Old Polarization: (-0.58098,-0.80648,-0.10978) + New Momentum Direction: (0.62029,-0.77323,-0.13171) + New Polarization: (-0.78422,-0.61462,-0.085051) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 370, parentID 1) is processed with stopping code 2 +### pop requested out of 89 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.66613,0.66766,-0.33242) + Old Polarization: (-0.74359,0.55994,-0.36543) + New Momentum Direction: (-0.66613,0.66766,-0.33242) + New Polarization: (-0.74359,-0.55994,0.36543) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66613,0.66766,-0.33242) + Old Polarization: (-0.74359,-0.55994,0.36543) + New Momentum Direction: (-0.66613,-0.66766,-0.33242) + New Polarization: (0.74359,-0.55994,-0.36543) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66613,-0.66766,-0.33242) + Old Polarization: (0.74359,-0.55994,-0.36543) + New Momentum Direction: (-0.66613,-0.66766,0.33242) + New Polarization: (-0.74359,0.55994,-0.36543) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66613,-0.66766,0.33242) + Old Polarization: (-0.74359,0.55994,-0.36543) + New Momentum Direction: (-0.66613,0.66766,0.33242) + New Polarization: (0.74359,0.55994,0.36543) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66613,0.66766,0.33242) + Old Polarization: (0.74359,0.55994,0.36543) + New Momentum Direction: (0.66613,0.66766,0.33242) + New Polarization: (0.74359,-0.55994,-0.36543) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66613,0.66766,0.33242) + Old Polarization: (0.74359,-0.55994,-0.36543) + New Momentum Direction: (0.66613,-0.66766,0.33242) + New Polarization: (-0.74359,-0.55994,0.36543) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66613,-0.66766,0.33242) + Old Polarization: (-0.74359,-0.55994,0.36543) + New Momentum Direction: (-0.66613,-0.66766,0.33242) + New Polarization: (-0.74359,0.55994,-0.36543) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 369, parentID 1) is processed with stopping code 2 +### pop requested out of 88 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.65776,0.72522,-0.20348) + Old Polarization: (-0.75237,0.61973,-0.22332) + New Momentum Direction: (0.65776,-0.72522,-0.20348) + New Polarization: (-0.24212,-0.45939,0.8546) + *** FresnelReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 368, parentID 1) is processed with stopping code 2 +### pop requested out of 87 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.69857,0.36948,0.61277) + Old Polarization: (-0.70797,0.23268,0.66681) + New Momentum Direction: (0.23337,0.5021,0.83273) + New Polarization: (-0.96824,0.040986,0.24664) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 367, parentID 1) is processed with stopping code 2 +### pop requested out of 86 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.80326,-0.52077,-0.28908) +Old Polarization: (-0.59365,-0.73945,-0.31748) +New Polarization: (-0.55191,-0.68037,-0.38808) +Polarization Change: (-0.576,-0.71006,-0.40502) +New Momentum Direction: (0.2694,-0.61869,0.70153) +Momentum Change: (0.27676,-0.6356,0.72071) + +** Photon Absorbed! ** +Track (trackID 366, parentID 1) is processed with stopping code 2 +### pop requested out of 85 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.7335,0.078691,-0.67512) +Old Polarization: (-0.66987,-0.084537,-0.73765) +New Polarization: (-0.59029,0.029991,-0.73627) +Polarization Change: (-0.62521,0.031764,-0.77981) +New Momentum Direction: (-0.1243,0.9793,0.13955) +Momentum Change: (-0.12468,0.98227,0.13997) +Scattering Photon! +Old Momentum Direction: (-0.12468,0.98227,0.13997) +Old Polarization: (-0.62521,0.031764,-0.77981) +New Polarization: (-0.37938,-0.15477,-0.79632) +Polarization Change: (-0.42363,-0.17282,-0.8892) +New Momentum Direction: (-0.82496,0.24185,0.34603) +Momentum Change: (-0.89021,0.26098,0.37339) + +** Photon Absorbed! ** +Track (trackID 365, parentID 1) is processed with stopping code 2 +### pop requested out of 84 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.70992,0.31301,-0.6309) + Old Polarization: (-0.69586,0.17359,-0.69689) + New Momentum Direction: (0.30384,0.42343,-0.85346) + New Polarization: (-0.94777,0.043167,-0.31601) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 364, parentID 1) is processed with stopping code 2 +### pop requested out of 83 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 363, parentID 1) is processed with stopping code 2 +### pop requested out of 82 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.80948,-0.54135,0.22733) + Old Polarization: (-0.58578,-0.77096,0.24995) + New Momentum Direction: (0.60967,-0.73083,0.3069) + New Polarization: (-0.79173,-0.58019,0.19116) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 362, parentID 1) is processed with stopping code 2 +### pop requested out of 81 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.74522,-0.019739,-0.66653) + Old Polarization: (-0.65708,-0.19195,-0.72897) + New Momentum Direction: (0.42314,-0.026821,-0.90567) + New Polarization: (-0.89993,-0.12854,-0.41665) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 361, parentID 1) is processed with stopping code 2 +### pop requested out of 80 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.80865,-0.52465,0.26613) + Old Polarization: (-0.58644,-0.75479,0.29391) + New Momentum Direction: (0.60923,-0.70721,0.35874) + New Polarization: (-0.79173,-0.56803,0.22474) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 360, parentID 1) is processed with stopping code 2 +### pop requested out of 79 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.70002,0.41385,0.58198) + Old Polarization: (-0.70716,0.28813,0.64568) + New Momentum Direction: (0.27315,0.55748,0.78397) + New Polarization: (-0.95795,0.083169,0.27462) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 359, parentID 1) is processed with stopping code 2 +### pop requested out of 78 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.67003,0.61932,-0.40927) +Old Polarization: (-0.73896,0.50396,-0.44717) +New Polarization: (-0.6422,0.58917,-0.33361) +Polarization Change: (-0.68818,0.63135,-0.3575) +New Momentum Direction: (0.7191,0.60328,-0.31884) +Momentum Change: (0.7254,0.60857,-0.32163) + Photon at Boundary! + Old Momentum Direction: (0.7254,0.60857,-0.32163) + Old Polarization: (-0.68818,0.63135,-0.3575) + New Momentum Direction: (0.35109,0.82784,-0.43752) + New Polarization: (-0.93625,0.30387,-0.17635) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 358, parentID 1) is processed with stopping code 2 +### pop requested out of 77 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.65442,0.75612,0.0046241) + Old Polarization: (-0.75613,0.65441,0.0033823) + New Momentum Direction: (0.88936,0.45717,0.0062841) + New Polarization: (0.45711,-0.88936,0.0091862) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 357, parentID 1) is processed with stopping code 2 +### pop requested out of 76 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.77367,-0.23569,-0.58811) + Old Polarization: (-0.62558,-0.43126,-0.65013) + New Momentum Direction: (0.51556,-0.31875,-0.79536) + New Polarization: (-0.85155,-0.2937,-0.43428) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 356, parentID 1) is processed with stopping code 2 +### pop requested out of 75 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.76939,-0.21581,0.60123) + Old Polarization: (-0.63038,-0.4087,0.65999) + New Momentum Direction: (0.50242,-0.2921,0.81379) + New Polarization: (-0.8591,-0.27494,0.4317) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 355, parentID 1) is processed with stopping code 2 +### pop requested out of 74 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73277,0.096656,-0.67357) + Old Polarization: (-0.67066,-0.064901,-0.73892) + New Momentum Direction: (0.38401,0.13115,-0.91397) + New Polarization: (-0.91727,-0.058993,-0.39386) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 354, parentID 1) is processed with stopping code 2 +### pop requested out of 73 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.79556,-0.41401,-0.44235) + Old Polarization: (-0.60117,-0.63015,-0.49143) + New Momentum Direction: (0.57543,-0.55887,-0.59712) + New Polarization: (-0.81467,-0.456,-0.35829) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 353, parentID 1) is processed with stopping code 2 +### pop requested out of 72 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.67525,0.60565,-0.42097) + Old Polarization: (-0.73396,0.4952,-0.46485) + New Momentum Direction: (-0.67525,0.60565,-0.42097) + New Polarization: (-0.73315,-0.4886,0.47303) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.67525,0.60565,-0.42097) + Old Polarization: (-0.73315,-0.4886,0.47303) + New Momentum Direction: (-0.67525,-0.60565,-0.42097) + New Polarization: (0.73315,-0.4886,-0.47303) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.67525,-0.60565,-0.42097) + Old Polarization: (0.73315,-0.4886,-0.47303) + New Momentum Direction: (-0.67525,-0.60565,0.42097) + New Polarization: (-0.73315,0.4886,-0.47303) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.67525,-0.60565,0.42097) + Old Polarization: (-0.73315,0.4886,-0.47303) + New Momentum Direction: (0.67525,-0.60565,0.42097) + New Polarization: (0.73216,0.61951,-0.28311) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.67525,-0.60565,0.42097) + Old Polarization: (0.73216,0.61951,-0.28311) + New Momentum Direction: (0.67525,0.60565,0.42097) + New Polarization: (-0.73216,0.61951,0.28311) + *** TotalInternalReflection *** +No Absorbtion length specified +Scattering Photon! +Old Momentum Direction: (0.67525,0.60565,0.42097) +Old Polarization: (-0.73216,0.61951,0.28311) +New Polarization: (-0.46887,0.712,-0.15933) +Polarization Change: (-0.54062,0.82096,-0.18371) +New Momentum Direction: (-0.25954,0.015681,0.83384) +Momentum Change: (-0.29715,0.017954,0.95466) + Photon at Boundary! + Old Momentum Direction: (-0.29715,0.017954,0.95466) + Old Polarization: (-0.54062,0.82096,-0.18371) + New Momentum Direction: (-0.40224,0.024304,0.91521) + New Polarization: (-0.62577,0.72239,-0.29422) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 352, parentID 1) is processed with stopping code 2 +### pop requested out of 71 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.74763,-0.058012,0.66157) + Old Polarization: (-0.65447,-0.23347,0.71914) + New Momentum Direction: (0.4296,-0.078882,0.89957) + New Polarization: (-0.89694,-0.15271,0.41495) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 351, parentID 1) is processed with stopping code 2 +### pop requested out of 70 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.81212,-0.56799,0.1336) + Old Polarization: (-0.58301,-0.79925,0.14596) + New Momentum Direction: (0.61526,-0.76738,0.1805) + New Polarization: (-0.78799,-0.60532,0.11251) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 350, parentID 1) is processed with stopping code 2 +### pop requested out of 69 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 349, parentID 1) is processed with stopping code 2 +### pop requested out of 68 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.7191,0.23245,-0.65488) + Old Polarization: (-0.68573,0.084734,-0.7229) + New Momentum Direction: (0.3404,0.31453,-0.88611) + New Polarization: (-0.93475,0.011127,-0.35514) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 348, parentID 1) is processed with stopping code 2 +### pop requested out of 67 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.66444,0.69595,-0.27234) + Old Polarization: (-0.74581,0.5942,-0.30116) + New Momentum Direction: (0.89966,0.23373,-0.36875) + New Polarization: (0.048333,-0.89275,-0.44794) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 347, parentID 1) is processed with stopping code 2 +### pop requested out of 66 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 346, parentID 1) is processed with stopping code 2 ### pop requested out of 65 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.259206,-0.949617,0.176183) - Old Polarization: (-0.882438,-0.307001,-0.356446) - New Momentum Direction: (0.351996,-0.904907,0.239253) - New Polarization: (0.656597,0.420888,0.625887) + Old Momentum Direction: (0.6956,0.44128,0.56693) + Old Polarization: (-0.71189,0.31716,0.6266) + New Momentum Direction: (0.24557,0.59542,0.76497) + New Polarization: (-0.96571,0.081633,0.24647) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 345, parentID 342) is processed with stopping code 2 +Track (trackID 345, parentID 1) is processed with stopping code 2 ### pop requested out of 64 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.862551,-0.501269,0.0688125) - Old Polarization: (0.439801,0.675542,-0.591793) - New Momentum Direction: (0.726581,-0.680697,0.0934436) - New Polarization: (-0.636139,-0.717851,-0.282871) + Old Momentum Direction: (0.65661,0.75423,0.0010042) + Old Polarization: (-0.75423,0.65661,-0.00056512) + New Momentum Direction: (0.88998,0.45601,0.0013611) + New Polarization: (0.45601,-0.88998,0.0011004) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 344, parentID 342) is processed with stopping code 2 +Track (trackID 344, parentID 1) is processed with stopping code 2 ### pop requested out of 63 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.864856,-0.493168,0.0938629) - Old Polarization: (0.459099,0.701321,-0.545323) - New Momentum Direction: (0.733796,-0.66739,0.127022) - New Polarization: (-0.647242,-0.743583,-0.167814) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 343, parentID 342) is processed with stopping code 2 + +** Photon Absorbed! ** +Track (trackID 343, parentID 1) is processed with stopping code 2 ### pop requested out of 62 stacked tracks. + +** Photon Absorbed! ** Track (trackID 342, parentID 1) is processed with stopping code 2 ### pop requested out of 61 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.793116,-0.378516,-0.477171) - Old Polarization: (-0.603576,-0.593441,-0.532469) - New Momentum Direction: (0.571726,-0.509877,-0.64277) - New Polarization: (-0.816714,-0.42832,-0.386679) + Old Momentum Direction: (0.78307,-0.32789,-0.52848) + Old Polarization: (-0.61541,-0.53126,-0.58226) + New Momentum Direction: (0.53872,-0.44416,-0.71589) + New Polarization: (-0.83814,-0.36872,-0.40195) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 341, parentID 1) is processed with stopping code 2 ### pop requested out of 60 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.680101,0.559536,-0.47369) - Old Polarization: (-0.728514,0.443506,-0.522083) - New Momentum Direction: (-0.680101,0.559536,-0.47369) - New Polarization: (-0.726,-0.424211,0.541266) - *** FresnelReflection *** + Old Momentum Direction: (0.79307,-0.37861,-0.47717) + Old Polarization: (-0.60365,-0.59337,-0.53247) + New Momentum Direction: (0.57162,-0.51,-0.64277) + New Polarization: (-0.8168,-0.42822,-0.38662) + *** FresnelRefraction *** No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.680101,0.559536,-0.47369) - Old Polarization: (-0.726,-0.424211,0.541266) - New Momentum Direction: (-0.680101,-0.559536,-0.47369) - New Polarization: (0.726,-0.424211,-0.541266) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.680101,-0.559536,-0.47369) - Old Polarization: (0.726,-0.424211,-0.541266) - New Momentum Direction: (-0.680101,-0.559536,0.47369) - New Polarization: (-0.726,0.424211,-0.541266) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** Track (trackID 340, parentID 1) is processed with stopping code 2 ### pop requested out of 59 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.717506,0.218419,-0.661421) -Old Polarization: (-0.687296,0.067712,-0.723215) -New Polarization: (-0.507978,0.0252308,-0.774916) -Polarization Change: (-0.54803,0.0272201,-0.836015) -New Momentum Direction: (0.184868,-0.964296,-0.235651) -Momentum Change: (0.183085,-0.954995,-0.233378) Photon at Boundary! - Old Momentum Direction: (0.183085,-0.954995,-0.233378) - Old Polarization: (-0.54803,0.0272201,-0.836015) - New Momentum Direction: (0.248803,-0.915158,-0.317147) - New Polarization: (-0.476611,0.169373,-0.862644) + Old Momentum Direction: (0.68017,0.55945,-0.47369) + Old Polarization: (-0.72846,0.4436,-0.52208) + New Momentum Direction: (0.11822,0.75783,-0.64165) + New Polarization: (-0.99076,0.046737,-0.12734) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 339, parentID 1) is processed with stopping code 2 @@ -2518,18271 +4927,13616 @@ Track (trackID 339, parentID 1) is processed with stopping code 2 ** Photon Absorbed! ** Track (trackID 338, parentID 1) is processed with stopping code 2 ### pop requested out of 57 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.654835,0.749064,-0.100474) - Old Polarization: (-0.755549,0.645599,-0.11112) - New Momentum Direction: (0.890446,0.434096,-0.136625) - New Polarization: (0.40054,-0.890081,-0.21754) - *** FresnelRefraction *** -No Absorbtion length specified + +** Photon Absorbed! ** Track (trackID 337, parentID 1) is processed with stopping code 2 ### pop requested out of 56 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 336, parentID 1) is processed with stopping code 2 -### pop requested out of 55 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.700607,0.369607,-0.610361) - Old Polarization: (-0.705803,0.233288,-0.668893) - New Momentum Direction: (0.248011,0.501802,-0.828665) - New Polarization: (-0.964448,0.0473025,-0.260005) + Old Momentum Direction: (0.65493,0.74898,-0.10047) + Old Polarization: (-0.75547,0.64569,-0.11112) + New Momentum Direction: (0.89057,0.43383,-0.13663) + New Polarization: (0.4003,-0.89021,-0.21746) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 335, parentID 1) is processed with stopping code 2 -### pop requested out of 54 stacked tracks. +Track (trackID 336, parentID 1) is processed with stopping code 2 +### pop requested out of 55 stacked tracks. ** Photon Absorbed! ** +Track (trackID 335, parentID 1) is processed with stopping code 2 +### pop requested out of 54 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.70065,0.36952,-0.61036) + Old Polarization: (-0.70577,0.23337,-0.6689) + New Momentum Direction: (0.24826,0.50169,-0.82866) + New Polarization: (-0.96439,0.047474,-0.26018) + *** FresnelRefraction *** +No Absorbtion length specified Track (trackID 334, parentID 1) is processed with stopping code 2 ### pop requested out of 53 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.708704,0.302363,0.637429) - Old Polarization: (-0.697091,0.160981,0.698677) - New Momentum Direction: (0.294522,0.409567,0.86343) - New Polarization: (-0.950752,0.0342647,0.308054) + Old Momentum Direction: (0.77796,-0.28462,0.56015) + Old Polarization: (-0.62086,-0.4851,0.6158) + New Momentum Direction: (0.52707,-0.38496,0.75763) + New Polarization: (-0.84487,-0.33348,0.41832) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 333, parentID 1) is processed with stopping code 2 ### pop requested out of 52 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.751317,-0.06668,0.656564) - Old Polarization: (-0.650282,-0.244397,0.719308) - New Momentum Direction: (0.447775,-0.0903439,0.88957) - New Polarization: (-0.887954,-0.161811,0.430528) + Old Momentum Direction: (0.70874,0.30228,0.63742) + Old Polarization: (-0.69707,0.16107,0.69868) + New Momentum Direction: (0.2947,0.40945,0.86343) + New Polarization: (-0.95071,0.034393,0.30818) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 332, parentID 1) is processed with stopping code 2 ### pop requested out of 51 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.75131,-0.06677,0.65656) +Old Polarization: (-0.65031,-0.24432,0.71931) +New Polarization: (-0.51962,0.031373,0.72973) +Polarization Change: (-0.57969,0.035,0.81409) +New Momentum Direction: (-0.3303,0.87326,-0.27274) +Momentum Change: (-0.33958,0.89781,-0.2804) Photon at Boundary! - Old Momentum Direction: (0.740941,0.0625471,0.668651) - Old Polarization: (-0.661612,-0.102842,0.742761) - New Momentum Direction: (0.42695,0.0842202,0.900345) - New Polarization: (-0.897891,-0.078618,0.43314) + Old Momentum Direction: (-0.33958,0.89781,-0.2804) + Old Polarization: (-0.57969,0.035,0.81409) + New Momentum Direction: (0.33958,0.89781,-0.2804) + New Polarization: (-0.57969,-0.035,-0.81409) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.33958,0.89781,-0.2804) + Old Polarization: (-0.57969,-0.035,-0.81409) + New Momentum Direction: (0.46009,0.80248,-0.37992) + New Polarization: (-0.56534,-0.065161,-0.82228) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 331, parentID 1) is processed with stopping code 2 ### pop requested out of 50 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.773753,-0.263517,0.576077) - Old Polarization: (-0.625708,-0.459986,0.630002) - New Momentum Direction: (0.51219,-0.357273,0.781037) - New Polarization: (-0.85375,-0.310964,0.417628) + Old Momentum Direction: (0.74095,0.062458,0.66865) + Old Polarization: (-0.66162,-0.10276,0.74276) + New Momentum Direction: (0.42698,0.084101,0.90034) + New Polarization: (-0.89789,-0.078549,0.43316) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 330, parentID 1) is processed with stopping code 2 ### pop requested out of 49 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.761054,-0.107088,0.639788) - Old Polarization: (-0.63919,-0.291961,0.711474) - New Momentum Direction: (0.487718,-0.144118,0.861023) - New Polarization: (-0.866727,-0.197965,0.457814) - *** FresnelRefraction *** -No Absorbtion length specified + +** Photon Absorbed! ** Track (trackID 329, parentID 1) is processed with stopping code 2 ### pop requested out of 48 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.665865,0.662727,0.342661) - Old Polarization: (-0.743857,0.554365,0.373304) - New Momentum Direction: (-0.665865,0.662727,0.342661) - New Polarization: (-0.743857,-0.554365,-0.373304) - *** TotalInternalReflection *** + Old Momentum Direction: (0.76104,-0.10718,0.63978) + Old Polarization: (-0.63922,-0.29188,0.71148) + New Momentum Direction: (0.48769,-0.14424,0.86102) + New Polarization: (-0.86676,-0.1979,0.45779) + *** FresnelRefraction *** No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.665865,0.662727,0.342661) - Old Polarization: (-0.743857,-0.554365,-0.373304) - New Momentum Direction: (-0.665865,-0.662727,0.342661) - New Polarization: (0.743857,-0.554365,0.373304) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** Track (trackID 328, parentID 1) is processed with stopping code 2 ### pop requested out of 47 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.71915,0.202692,-0.664635) - Old Polarization: (-0.685495,0.0504852,-0.726325) - New Momentum Direction: (0.328495,0.275516,-0.903428) - New Polarization: (-0.938957,-0.0082704,-0.343936) + Old Momentum Direction: (0.66595,0.66264,0.34266) + Old Polarization: (-0.74379,0.55446,0.37331) + New Momentum Direction: (-0.66595,0.66264,0.34266) + New Polarization: (-0.74379,-0.55446,-0.37331) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66595,0.66264,0.34266) + Old Polarization: (-0.74379,-0.55446,-0.37331) + New Momentum Direction: (-0.66595,-0.66264,0.34266) + New Polarization: (0.74379,-0.55446,0.37331) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66595,-0.66264,0.34266) + Old Polarization: (0.74379,-0.55446,0.37331) + New Momentum Direction: (-0.66595,-0.66264,-0.34266) + New Polarization: (-0.74379,0.55446,0.37331) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66595,-0.66264,-0.34266) + Old Polarization: (-0.74379,0.55446,0.37331) + New Momentum Direction: (0.66595,-0.66264,-0.34266) + New Polarization: (-0.74379,-0.55446,-0.37331) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66595,-0.66264,-0.34266) + Old Polarization: (-0.74379,-0.55446,-0.37331) + New Momentum Direction: (0.66595,0.66264,-0.34266) + New Polarization: (0.74379,-0.55446,0.37331) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66595,0.66264,-0.34266) + Old Polarization: (0.74379,-0.55446,0.37331) + New Momentum Direction: (-0.66595,0.66264,-0.34266) + New Polarization: (0.74379,0.55446,-0.37331) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66595,0.66264,-0.34266) + Old Polarization: (0.74379,0.55446,-0.37331) + New Momentum Direction: (-0.66595,-0.66264,-0.34266) + New Polarization: (-0.74379,0.55446,0.37331) + *** TotalInternalReflection *** +No Absorbtion length specified +Scattering Photon! +Old Momentum Direction: (-0.66595,-0.66264,-0.34266) +Old Polarization: (-0.74379,0.55446,0.37331) +New Polarization: (-0.78417,0.43918,0.23988) +Polarization Change: (-0.84297,0.47212,0.25787) +New Momentum Direction: (0.22536,-0.088265,0.89829) +Momentum Change: (0.24224,-0.094876,0.96557) + Photon at Boundary! + Old Momentum Direction: (0.24224,-0.094876,0.96557) + Old Polarization: (-0.84297,0.47212,0.25787) + New Momentum Direction: (-0.24224,-0.094876,0.96557) + New Polarization: (-0.84297,-0.47212,-0.25787) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.24224,-0.094876,0.96557) + Old Polarization: (-0.84297,-0.47212,-0.25787) + New Momentum Direction: (-0.32873,-0.12875,0.93561) + New Polarization: (-0.83154,-0.43022,-0.35136) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 327, parentID 1) is processed with stopping code 2 ### pop requested out of 46 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.71918,0.2026,-0.66463) +Old Polarization: (-0.68549,0.050569,-0.72633) +New Polarization: (-0.67656,0.11157,-0.68373) +Polarization Change: (-0.69868,0.11522,-0.70609) +New Momentum Direction: (-0.050004,-0.99157,-0.11233) +Momentum Change: (-0.050046,-0.9924,-0.11242) +Scattering Photon! +Old Momentum Direction: (-0.050046,-0.9924,-0.11242) +Old Polarization: (-0.69868,0.11522,-0.70609) +New Polarization: (-0.55539,-0.44834,-0.49154) +Polarization Change: (-0.64085,-0.51733,-0.56717) +New Momentum Direction: (-0.13848,-0.56152,0.66864) +Momentum Change: (-0.15664,-0.63516,0.75633) ** Photon Absorbed! ** Track (trackID 326, parentID 1) is processed with stopping code 2 ### pop requested out of 45 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.658569,0.726467,-0.196296) - Old Polarization: (-0.751719,0.623057,-0.216146) - New Momentum Direction: (0.894313,0.359371,-0.266563) - New Polarization: (0.244653,-0.891552,-0.381156) + Old Momentum Direction: (0.69632,0.40149,-0.59493) + Old Polarization: (-0.71044,0.2677,-0.65086) + New Momentum Direction: (0.22118,0.54553,-0.80838) + New Polarization: (-0.97128,0.048697,-0.23289) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 325, parentID 1) is processed with stopping code 2 ### pop requested out of 44 stacked tracks. - -** Photon Absorbed! ** +Scattering Photon! +Old Momentum Direction: (0.65866,0.72638,-0.1963) +Old Polarization: (-0.75164,0.62315,-0.21615) +New Polarization: (-0.59663,0.69691,-0.119) +Polarization Change: (-0.64494,0.75333,-0.12864) +New Momentum Direction: (-0.76345,-0.63497,0.10911) +Momentum Change: (-0.76423,-0.63562,0.10922) + Photon at Boundary! + Old Momentum Direction: (-0.76423,-0.63562,0.10922) + Old Polarization: (-0.64494,0.75333,-0.12864) + New Momentum Direction: (-0.48267,-0.86315,0.14832) + New Polarization: (0.8758,-0.4756,0.082288) + *** FresnelRefraction *** +No Absorbtion length specified Track (trackID 324, parentID 1) is processed with stopping code 2 ### pop requested out of 43 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.66997,0.65158,0.3558) + Old Polarization: (-0.73997,0.54742,0.39086) + New Momentum Direction: (-0.66997,0.65158,0.3558) + New Polarization: (-0.73997,-0.54742,-0.39086) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66997,0.65158,0.3558) + Old Polarization: (-0.73997,-0.54742,-0.39086) + New Momentum Direction: (-0.66997,-0.65158,0.3558) + New Polarization: (0.73997,-0.54742,0.39086) + *** TotalInternalReflection *** +No Absorbtion length specified ** Photon Absorbed! ** Track (trackID 323, parentID 1) is processed with stopping code 2 ### pop requested out of 42 stacked tracks. - -** Photon Absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.74567,0.034021,-0.66545) + Old Polarization: (-0.65637,-0.13441,-0.74237) + New Momentum Direction: (0.44141,0.045815,-0.89614) + New Polarization: (-0.89088,-0.0969,-0.44378) + *** FresnelRefraction *** +No Absorbtion length specified Track (trackID 322, parentID 1) is processed with stopping code 2 ### pop requested out of 41 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.711796,0.279592,-0.644341) - Old Polarization: (-0.693621,0.13533,-0.707514) - New Momentum Direction: (0.303917,0.379231,-0.873967) - New Polarization: (-0.947577,0.0253321,-0.318522) + Old Momentum Direction: (0.80032,-0.5076,0.3191) + Old Polarization: (-0.59702,-0.72368,0.3462) + New Momentum Direction: (0.5794,-0.69003,0.43378) + New Polarization: (-0.81334,-0.5239,0.253) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 321, parentID 1) is processed with stopping code 2 ### pop requested out of 40 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.734732,0.0747181,0.67423) - Old Polarization: (-0.668495,-0.0891219,0.738358) - New Momentum Direction: (0.393569,0.101256,0.913702) - New Polarization: (-0.913158,-0.0715913,0.401269) + Old Momentum Direction: (0.71183,0.2795,-0.64434) + Old Polarization: (-0.6936,0.13541,-0.70752) + New Momentum Direction: (0.30407,0.37911,-0.87396) + New Polarization: (-0.94754,0.025449,-0.31863) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 320, parentID 1) is processed with stopping code 2 ### pop requested out of 39 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.748829,-0.036997,-0.66173) - Old Polarization: (-0.65304,-0.21159,-0.727165) - New Momentum Direction: (0.438735,-0.0501629,-0.897215) - New Polarization: (-0.892419,-0.141378,-0.428485) - *** FresnelRefraction *** + Old Momentum Direction: (0.73474,0.07463,0.67423) + Old Polarization: (-0.6685,-0.089041,0.73836) + New Momentum Direction: (-0.73474,0.07463,0.67423) + New Polarization: (-0.61388,0.34974,-0.70769) + *** FresnelReflection *** No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.73474,0.07463,0.67423) + Old Polarization: (-0.61388,0.34974,-0.70769) + New Momentum Direction: (-0.73474,0.07463,-0.67423) + New Polarization: (0.61388,-0.34974,-0.70769) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** Track (trackID 319, parentID 1) is processed with stopping code 2 ### pop requested out of 38 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.811824,-0.541102,0.219433) - Old Polarization: (-0.582613,-0.775614,0.242867) - New Momentum Direction: (0.618382,-0.728272,0.295336) - New Polarization: (-0.784992,-0.590246,0.188141) + Old Momentum Direction: (0.74883,-0.037087,-0.66173) + Old Polarization: (-0.65306,-0.21151,-0.72717) + New Momentum Direction: (0.43873,-0.050284,-0.89721) + New Polarization: (-0.89244,-0.14131,-0.42847) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 318, parentID 1) is processed with stopping code 2 ### pop requested out of 37 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.684128,0.500414,-0.530618) - Old Polarization: (-0.72363,0.37466,-0.579646) - New Momentum Direction: (-0.684128,0.500414,-0.530618) - New Polarization: (-0.720125,-0.34802,0.600251) - *** FresnelReflection *** + Old Momentum Direction: (0.81176,-0.5412,0.21943) + Old Polarization: (-0.5827,-0.77555,0.24287) + New Momentum Direction: (0.61823,-0.7284,0.29533) + New Polarization: (-0.78511,-0.5901,0.1881) + *** FresnelRefraction *** No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.684128,0.500414,-0.530618) - Old Polarization: (-0.720125,-0.34802,0.600251) - New Momentum Direction: (-0.684128,0.500414,0.530618) - New Polarization: (0.720125,0.34802,0.600251) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.684128,0.500414,0.530618) - Old Polarization: (0.720125,0.34802,0.600251) - New Momentum Direction: (-0.684128,-0.500414,0.530618) - New Polarization: (-0.720125,0.34802,-0.600251) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** Track (trackID 317, parentID 1) is processed with stopping code 2 ### pop requested out of 36 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.718662,0.24158,0.652046) - Old Polarization: (-0.686317,0.0956955,0.72098) - New Momentum Direction: (0.346046,0.325953,0.879776) - New Polarization: (-0.932717,0.0181233,0.360155) + Old Momentum Direction: (0.68419,0.50033,-0.53062) + Old Polarization: (-0.72358,0.37475,-0.57965) + New Momentum Direction: (-0.68419,0.50033,-0.53062) + New Polarization: (-0.72006,-0.34798,0.60035) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.68419,0.50033,-0.53062) + Old Polarization: (-0.72006,-0.34798,0.60035) + New Momentum Direction: (-0.68419,0.50033,0.53062) + New Polarization: (0.72006,0.34798,0.60035) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.68419,0.50033,0.53062) + Old Polarization: (0.72006,0.34798,0.60035) + New Momentum Direction: (-0.68419,-0.50033,0.53062) + New Polarization: (-0.72006,0.34798,-0.60035) + *** TotalInternalReflection *** +No Absorbtion length specified +Scattering Photon! +Old Momentum Direction: (-0.68419,-0.50033,0.53062) +Old Polarization: (-0.72006,0.34798,-0.60035) +New Polarization: (-0.43453,0.46429,-0.63034) +Polarization Change: (-0.4853,0.51853,-0.70399) +New Momentum Direction: (0.44834,0.81867,0.29393) +Momentum Change: (0.45815,0.83659,0.30036) + Photon at Boundary! + Old Momentum Direction: (0.45815,0.83659,0.30036) + Old Polarization: (-0.4853,0.51853,-0.70399) + New Momentum Direction: (0.62303,0.66707,0.40846) + New Polarization: (0.67126,-0.72406,0.15859) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 316, parentID 1) is processed with stopping code 2 ### pop requested out of 35 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.796377,-0.472273,0.377811) - Old Polarization: (-0.601273,-0.685606,0.410383) - New Momentum Direction: (0.569499,-0.641873,0.513488) - New Polarization: (-0.819637,-0.490691,0.295665) + Old Momentum Direction: (0.7187,0.24149,0.65204) + Old Polarization: (-0.6863,0.09578,0.72098) + New Momentum Direction: (0.34617,0.32584,0.87977) + New Polarization: (-0.93268,0.018224,0.36024) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 315, parentID 1) is processed with stopping code 2 ### pop requested out of 34 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.802617,-0.491725,0.337657) - Old Polarization: (-0.593591,-0.714201,0.370899) - New Momentum Direction: (0.591338,-0.664782,0.456492) - New Polarization: (-0.804456,-0.525807,0.276364) + Old Momentum Direction: (0.79632,-0.47237,0.37781) + Old Polarization: (-0.60135,-0.68554,0.41039) + New Momentum Direction: (0.56936,-0.642,0.51348) + New Polarization: (-0.81974,-0.49056,0.2956) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 314, parentID 1) is processed with stopping code 2 ### pop requested out of 33 stacked tracks. - -** Photon Absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.79347,-0.43057,-0.43014) + Old Polarization: (-0.60426,-0.64174,-0.47228) + New Momentum Direction: (0.56369,-0.58435,-0.58377) + New Polarization: (-0.82307,-0.45669,-0.33763) + *** FresnelRefraction *** +No Absorbtion length specified Track (trackID 313, parentID 1) is processed with stopping code 2 ### pop requested out of 32 stacked tracks. - -** Photon Absorbed! ** +Scattering Photon! +Old Momentum Direction: (0.66223,0.68249,0.30929) +Old Polarization: (-0.74753,0.57336,0.33535) +New Polarization: (-0.71624,0.40318,0.42589) +Polarization Change: (-0.77372,0.43554,0.46007) +New Momentum Direction: (0.3022,-0.32355,0.81454) +Momentum Change: (0.32597,-0.349,0.8786) + Photon at Boundary! + Old Momentum Direction: (0.32597,-0.349,0.8786) + Old Polarization: (-0.77372,0.43554,0.46007) + New Momentum Direction: (0.44322,-0.47454,0.76051) + New Polarization: (0.3655,-0.679,-0.63669) + *** FresnelRefraction *** +No Absorbtion length specified Track (trackID 312, parentID 1) is processed with stopping code 2 ### pop requested out of 31 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.706709,0.338679,-0.621175) - Old Polarization: (-0.699356,0.201539,-0.685772) - New Momentum Direction: (0.289,0.458269,-0.840516) - New Polarization: (-0.952602,0.0505231,-0.299993) - *** FresnelRefraction *** + Old Momentum Direction: (0.66817,0.66126,-0.341) + Old Polarization: (-0.74163,0.55535,-0.37625) + New Momentum Direction: (-0.66817,0.66126,-0.341) + New Polarization: (-0.74163,-0.55535,0.37625) + *** TotalInternalReflection *** No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66817,0.66126,-0.341) + Old Polarization: (-0.74163,-0.55535,0.37625) + New Momentum Direction: (-0.66817,-0.66126,-0.341) + New Polarization: (0.74163,-0.55535,-0.37625) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66817,-0.66126,-0.341) + Old Polarization: (0.74163,-0.55535,-0.37625) + New Momentum Direction: (-0.66817,-0.66126,0.341) + New Polarization: (-0.74163,0.55535,-0.37625) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66817,-0.66126,0.341) + Old Polarization: (-0.74163,0.55535,-0.37625) + New Momentum Direction: (0.66817,-0.66126,0.341) + New Polarization: (-0.74163,-0.55535,0.37625) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66817,-0.66126,0.341) + Old Polarization: (-0.74163,-0.55535,0.37625) + New Momentum Direction: (0.66817,0.66126,0.341) + New Polarization: (0.74163,-0.55535,-0.37625) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66817,0.66126,0.341) + Old Polarization: (0.74163,-0.55535,-0.37625) + New Momentum Direction: (-0.66817,0.66126,0.341) + New Polarization: (0.74163,0.55535,0.37625) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66817,0.66126,0.341) + Old Polarization: (0.74163,0.55535,0.37625) + New Momentum Direction: (-0.66817,-0.66126,0.341) + New Polarization: (-0.74163,0.55535,-0.37625) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** Track (trackID 311, parentID 1) is processed with stopping code 2 ### pop requested out of 30 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.705014,0.346231,0.618934) - Old Polarization: (-0.701282,0.210355,0.681142) - New Momentum Direction: (0.283866,0.468121,0.836829) - New Polarization: (-0.954287,0.0527527,0.294199) + Old Momentum Direction: (0.80541,-0.47807,-0.35038) + Old Polarization: (-0.58971,-0.7058,-0.39254) + New Momentum Direction: (0.60345,-0.64316,-0.47137) + New Polarization: (-0.79534,-0.52795,-0.29783) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 310, parentID 1) is processed with stopping code 2 ### pop requested out of 29 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.679672,0.547945,-0.48765) - Old Polarization: (-0.728671,0.428085,-0.534585) - New Momentum Direction: (0.0892526,0.74403,-0.662158) - New Polarization: (-0.99376,0.0218755,-0.109369) - *** FresnelRefraction *** + Old Momentum Direction: (0.68158,0.5408,0.49293) + Old Polarization: (-0.72697,0.42361,0.54043) + New Momentum Direction: (-0.68158,0.5408,0.49293) + New Polarization: (-0.72382,-0.39943,-0.56262) + *** FresnelReflection *** No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.68158,0.5408,0.49293) + Old Polarization: (-0.72382,-0.39943,-0.56262) + New Momentum Direction: (-0.68158,-0.5408,0.49293) + New Polarization: (0.72382,-0.39943,0.56262) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.68158,-0.5408,0.49293) + Old Polarization: (0.72382,-0.39943,0.56262) + New Momentum Direction: (-0.68158,-0.5408,-0.49293) + New Polarization: (-0.72382,0.39943,0.56262) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** Track (trackID 309, parentID 1) is processed with stopping code 2 ### pop requested out of 28 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.720375,0.172933,0.67168) - Old Polarization: (-0.684133,0.0178365,0.729139) - New Momentum Direction: (0.330833,0.235292,0.913886) - New Polarization: (-0.938087,-0.0233724,0.345611) - *** FresnelRefraction *** -No Absorbtion length specified + +** Photon Absorbed! ** Track (trackID 308, parentID 1) is processed with stopping code 2 ### pop requested out of 27 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.753442,-0.0954043,-0.650556) - Old Polarization: (-0.648125,-0.274372,-0.71039) - New Momentum Direction: (0.447896,-0.12973,-0.884624) - New Polarization: (-0.888105,-0.178805,-0.423436) + Old Momentum Direction: (0.80952,-0.56286,0.16693) + Old Polarization: (-0.58635,-0.78941,0.18172) + New Momentum Direction: (0.60626,-0.76244,0.22612) + New Polarization: (-0.79477,-0.59097,0.1382) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 307, parentID 1) is processed with stopping code 2 ### pop requested out of 26 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.696969,0.422028,-0.579765) - Old Polarization: (-0.710081,0.293306,-0.640123) - New Momentum Direction: (0.241721,0.571067,-0.784508) - New Polarization: (-0.966436,0.0691782,-0.247419) - *** FresnelRefraction *** -No Absorbtion length specified + +** Photon Absorbed! ** Track (trackID 306, parentID 1) is processed with stopping code 2 ### pop requested out of 25 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.792519,-0.414666,0.447175) - Old Polarization: (-0.604926,-0.627483,0.490234) - New Momentum Direction: (0.564227,-0.56138,0.605392) - New Polarization: (-0.822315,-0.447653,0.35129) + Old Momentum Direction: (0.78033,-0.2625,-0.5676) + Old Polarization: (-0.61773,-0.46493,-0.63423) + New Momentum Direction: (0.53995,-0.35331,-0.76395) + New Polarization: (-0.83655,-0.32543,-0.44077) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 305, parentID 1) is processed with stopping code 2 ### pop requested out of 24 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.729399,0.121222,-0.673262) - Old Polarization: (-0.674328,-0.0382507,-0.737441) - New Momentum Direction: (0.370368,0.164601,-0.914185) - New Polarization: (-0.92292,-0.0461528,-0.382216) + Old Momentum Direction: (0.6808,0.53372,0.50164) + Old Polarization: (-0.72755,0.41351,0.54743) + New Momentum Direction: (0.11068,0.72419,0.68066) + New Polarization: (-0.9915,0.033341,0.12575) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 304, parentID 1) is processed with stopping code 2 ### pop requested out of 23 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.726338,0.14106,-0.672708) - Old Polarization: (-0.677659,-0.0167086,-0.735187) - New Momentum Direction: (0.356609,0.191733,-0.914368) - New Polarization: (-0.928401,-0.0366478,-0.369767) - *** FresnelRefraction *** -No Absorbtion length specified + +** Photon Absorbed! ** Track (trackID 303, parentID 1) is processed with stopping code 2 ### pop requested out of 22 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.657294,0.753572,0.00968968) - Old Polarization: (-0.753634,0.657233,0.00898286) - New Momentum Direction: (0.890061,0.455652,0.0131211) - New Polarization: (0.455356,-0.890074,0.0204918) + Old Momentum Direction: (0.81456,-0.55523,0.16796) + Old Polarization: (-0.57931,-0.79357,0.18613) + New Momentum Direction: (0.62631,-0.74618,0.22573) + New Polarization: (-0.77904,-0.60978,0.14582) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 302, parentID 1) is processed with stopping code 2 ### pop requested out of 21 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.784488,-0.30897,-0.537694) - Old Polarization: (-0.613269,-0.51526,-0.598672) - New Momentum Direction: (0.548638,-0.416545,-0.724904) - New Polarization: (-0.83143,-0.362951,-0.420702) + Old Momentum Direction: (0.80062,-0.46022,-0.38367) + Old Polarization: (-0.59562,-0.68089,-0.42616) + New Momentum Direction: (0.58772,-0.62144,-0.51807) + New Polarization: (-0.80666,-0.49946,-0.31599) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 301, parentID 1) is processed with stopping code 2 ### pop requested out of 20 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.701615,0.363674,0.612763) - Old Polarization: (-0.70488,0.22834,0.671569) - New Momentum Direction: (0.261515,0.492617,0.830023) - New Polarization: (-0.960857,0.0513855,0.272239) + Old Momentum Direction: (0.7055,0.306,0.63925) + Old Polarization: (-0.70038,0.16314,0.69488) + New Momentum Direction: (0.26727,0.41606,0.86917) + New Polarization: (-0.95892,0.025841,0.2825) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 300, parentID 1) is processed with stopping code 2 ### pop requested out of 19 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.662428,0.734841,-0.145595) - Old Polarization: (-0.748664,0.642577,-0.163085) - New Momentum Direction: (0.893672,0.403448,-0.196419) - New Polarization: (0.336014,-0.891799,-0.302966) - *** FresnelRefraction *** + Old Momentum Direction: (0.66628,0.6809,-0.30405) + Old Polarization: (-0.7438,0.57775,-0.33609) + New Momentum Direction: (0.66628,-0.6809,-0.30405) + New Polarization: (-0.14648,-0.5193,0.84195) + *** FresnelReflection *** No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66628,-0.6809,-0.30405) + Old Polarization: (-0.14648,-0.5193,0.84195) + New Momentum Direction: (-0.66628,-0.6809,-0.30405) + New Polarization: (-0.14648,0.5193,-0.84195) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** Track (trackID 299, parentID 1) is processed with stopping code 2 ### pop requested out of 18 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.677574,0.60798,-0.413828) - Old Polarization: (-0.731898,0.50215,-0.46062) - New Momentum Direction: (0.126021,0.820082,-0.558198) - New Polarization: (-0.990268,0.0704954,-0.119998) + Old Momentum Direction: (0.72525,0.18472,0.66324) + Old Polarization: (-0.67903,0.032856,0.73337) + New Momentum Direction: (0.3702,0.24924,0.89489) + New Polarization: (-0.92311,-0.0091535,0.38442) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 298, parentID 1) is processed with stopping code 2 ### pop requested out of 17 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.814034,-0.577337,-0.0634978) - Old Polarization: (-0.580733,-0.810908,-0.0719555) - New Momentum Direction: (0.620572,-0.779449,-0.085727) - New Polarization: (-0.784091,-0.618139,-0.0557239) + Old Momentum Direction: (0.66425,0.72791,-0.17005) + Old Polarization: (-0.74689,0.63702,-0.19072) + New Momentum Direction: (0.89504,0.38262,-0.22914) + New Polarization: (0.29334,-0.89207,-0.34376) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 297, parentID 1) is processed with stopping code 2 ### pop requested out of 16 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.681447,0.52671,-0.50814) - Old Polarization: (-0.726614,0.403866,-0.55581) - New Momentum Direction: (-0.681447,0.52671,-0.50814) - New Polarization: (-0.724184,-0.38493,0.572177) + Old Momentum Direction: (0.65853,0.72516,-0.2012) + Old Polarization: (-0.75172,0.62124,-0.22132) + New Momentum Direction: (0.65853,-0.72516,-0.2012) + New Polarization: (-0.24702,-0.46083,0.85242) *** FresnelReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (-0.681447,0.52671,-0.50814) - Old Polarization: (-0.724184,-0.38493,0.572177) - New Momentum Direction: (-0.681447,-0.52671,-0.50814) - New Polarization: (0.724184,-0.38493,-0.572177) + Old Momentum Direction: (0.65853,-0.72516,-0.2012) + Old Polarization: (-0.24702,-0.46083,0.85242) + New Momentum Direction: (-0.65853,-0.72516,-0.2012) + New Polarization: (-0.24702,0.46083,-0.85242) + *** TotalInternalReflection *** +No Absorbtion length specified +Scattering Photon! +Old Momentum Direction: (-0.65853,-0.72516,-0.2012) +Old Polarization: (-0.24702,0.46083,-0.85242) +New Polarization: (-0.38301,0.68177,-0.37322) +Polarization Change: (-0.44202,0.78682,-0.43073) +New Momentum Direction: (-0.028552,0.40554,0.7701) +Momentum Change: (-0.032788,0.46569,0.88434) + Photon at Boundary! + Old Momentum Direction: (-0.032788,0.46569,0.88434) + Old Polarization: (-0.44202,0.78682,-0.43073) + New Momentum Direction: (-0.032788,-0.46569,0.88434) + New Polarization: (0.44202,0.78682,0.43073) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (-0.681447,-0.52671,-0.50814) - Old Polarization: (0.724184,-0.38493,-0.572177) - New Momentum Direction: (-0.681447,-0.52671,0.50814) - New Polarization: (-0.724184,0.38493,-0.572177) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.681447,-0.52671,0.50814) - Old Polarization: (-0.724184,0.38493,-0.572177) - New Momentum Direction: (-0.102597,-0.715882,0.690642) - New Polarization: (0.991086,-0.132884,0.00948899) + Old Momentum Direction: (-0.032788,-0.46569,0.88434) + Old Polarization: (0.44202,0.78682,0.43073) + New Momentum Direction: (-0.044541,-0.63263,0.77317) + New Polarization: (0.23596,-0.7587,-0.6072) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 296, parentID 1) is processed with stopping code 2 ### pop requested out of 15 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.691211,0.496528,0.525059) - Old Polarization: (-0.717053,0.380962,0.583698) - New Momentum Direction: (0.233067,0.668169,0.706562) - New Polarization: (-0.969334,0.101403,0.223852) - *** FresnelRefraction *** -No Absorbtion length specified + +** Photon Absorbed! ** Track (trackID 295, parentID 1) is processed with stopping code 2 ### pop requested out of 14 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.66199,0.74775,-0.051375) - Old Polarization: (-0.749445,0.659448,-0.0588346) - New Momentum Direction: (0.891689,0.447327,-0.0692012) - New Polarization: (0.438289,-0.891455,-0.114937) + Old Momentum Direction: (0.8014,-0.48162,-0.35468) + Old Polarization: (-0.59512,-0.70147,-0.39214) + New Momentum Direction: (0.58718,-0.65179,-0.47999) + New Polarization: (-0.80742,-0.51364,-0.29025) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 294, parentID 1) is processed with stopping code 2 ### pop requested out of 13 stacked tracks. - -** Photon Absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.70284,0.38686,-0.59695) + Old Polarization: (-0.70383,0.25648,-0.66246) + New Momentum Direction: (0.27887,0.52227,-0.8059) + New Polarization: (-0.95598,0.071227,-0.28464) + *** FresnelRefraction *** +No Absorbtion length specified Track (trackID 293, parentID 1) is processed with stopping code 2 ### pop requested out of 12 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.804138,-0.50041,0.320863) - Old Polarization: (-0.591804,-0.724733,0.352887) - New Momentum Direction: (0.595817,-0.676077,0.4335) - New Polarization: (-0.801327,-0.536496,0.264664) - *** FresnelRefraction *** + Old Momentum Direction: (0.68021,0.55792,-0.47543) + Old Polarization: (-0.72839,0.4417,-0.52379) + New Momentum Direction: (-0.68021,0.55792,-0.47543) + New Polarization: (-0.72587,-0.42235,0.54289) + *** FresnelReflection *** No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.68021,0.55792,-0.47543) + Old Polarization: (-0.72587,-0.42235,0.54289) + New Momentum Direction: (-0.68021,-0.55792,-0.47543) + New Polarization: (0.72587,-0.42235,-0.54289) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.68021,-0.55792,-0.47543) + Old Polarization: (0.72587,-0.42235,-0.54289) + New Momentum Direction: (-0.68021,-0.55792,0.47543) + New Polarization: (-0.72587,0.42235,-0.54289) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** Track (trackID 292, parentID 1) is processed with stopping code 2 ### pop requested out of 11 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.768861,-0.226022,0.598136) - Old Polarization: (-0.631131,-0.418351,0.653189) - New Momentum Direction: (0.497412,-0.306651,0.811509) - New Polarization: (-0.862097,-0.279109,0.422951) + Old Momentum Direction: (0.65747,0.73975,-0.14318) + Old Polarization: (-0.75304,0.63865,-0.1583) + New Momentum Direction: (0.89232,0.40744,-0.19432) + New Polarization: (0.342,-0.89116,-0.2981) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 291, parentID 1) is processed with stopping code 2 ### pop requested out of 10 stacked tracks. - -** Photon Absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.65855,0.73357,0.16789) + Old Polarization: (-0.75203,0.63339,0.18239) + New Momentum Direction: (0.89292,0.38842,0.22764) + New Polarization: (0.30167,-0.89153,0.3379) + *** FresnelRefraction *** +No Absorbtion length specified Track (trackID 290, parentID 1) is processed with stopping code 2 ### pop requested out of 9 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.657855,0.739665,0.141852) - Old Polarization: (-0.752792,0.64002,0.153876) - New Momentum Direction: (0.891903,0.409296,0.192319) - New Polarization: (0.345531,-0.891135,0.294086) + Old Momentum Direction: (0.78903,-0.38351,0.47995) + Old Polarization: (-0.60874,-0.59337,0.52663) + New Momentum Direction: (0.55556,-0.51905,0.64957) + New Polarization: (-0.82772,-0.41944,0.37276) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 289, parentID 1) is processed with stopping code 2 ### pop requested out of 8 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.808624,-0.518722,-0.277588) - Old Polarization: (-0.586451,-0.748329,-0.309966) - New Momentum Direction: (0.609135,-0.69924,-0.374191) - New Polarization: (-0.791784,-0.563028,-0.236808) + Old Momentum Direction: (0.69998,0.40717,-0.58672) + Old Polarization: (-0.70693,0.27843,-0.65017) + New Momentum Direction: (0.26309,0.55005,-0.79261) + New Polarization: (-0.96066,0.073539,-0.26783) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 288, parentID 1) is processed with stopping code 2 ### pop requested out of 7 stacked tracks. - -** Photon Absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.76359,-0.19158,0.61663) + Old Polarization: (-0.63705,-0.37937,0.671) + New Momentum Direction: (0.47958,-0.26035,0.83799) + New Polarization: (-0.8719,-0.24912,0.42159) + *** FresnelRefraction *** +No Absorbtion length specified Track (trackID 287, parentID 1) is processed with stopping code 2 ### pop requested out of 6 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.784562,-0.365579,-0.500814) - Old Polarization: (-0.614233,-0.568621,-0.547164) - New Momentum Direction: (0.537585,-0.497153,-0.681059) - New Polarization: (-0.839364,-0.392562,-0.375983) - *** FresnelRefraction *** + Old Momentum Direction: (0.66693,0.66689,-0.33236) + Old Polarization: (-0.74287,0.56044,-0.36613) + New Momentum Direction: (-0.66693,0.66689,-0.33236) + New Polarization: (-0.74287,-0.56044,0.36613) + *** TotalInternalReflection *** No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66693,0.66689,-0.33236) + Old Polarization: (-0.74287,-0.56044,0.36613) + New Momentum Direction: (-0.66693,-0.66689,-0.33236) + New Polarization: (0.74287,-0.56044,-0.36613) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66693,-0.66689,-0.33236) + Old Polarization: (0.74287,-0.56044,-0.36613) + New Momentum Direction: (-0.66693,-0.66689,0.33236) + New Polarization: (-0.74287,0.56044,-0.36613) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66693,-0.66689,0.33236) + Old Polarization: (-0.74287,0.56044,-0.36613) + New Momentum Direction: (0.66693,-0.66689,0.33236) + New Polarization: (-0.74287,-0.56044,0.36613) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66693,-0.66689,0.33236) + Old Polarization: (-0.74287,-0.56044,0.36613) + New Momentum Direction: (0.66693,0.66689,0.33236) + New Polarization: (0.74287,-0.56044,-0.36613) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66693,0.66689,0.33236) + Old Polarization: (0.74287,-0.56044,-0.36613) + New Momentum Direction: (-0.66693,0.66689,0.33236) + New Polarization: (0.74287,0.56044,0.36613) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66693,0.66689,0.33236) + Old Polarization: (0.74287,0.56044,0.36613) + New Momentum Direction: (-0.66693,-0.66689,0.33236) + New Polarization: (-0.74287,0.56044,-0.36613) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66693,-0.66689,0.33236) + Old Polarization: (-0.74287,0.56044,-0.36613) + New Momentum Direction: (-0.66693,-0.66689,-0.33236) + New Polarization: (0.74287,-0.56044,-0.36613) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66693,-0.66689,-0.33236) + Old Polarization: (0.74287,-0.56044,-0.36613) + New Momentum Direction: (0.66693,-0.66689,-0.33236) + New Polarization: (0.74287,0.56044,0.36613) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66693,-0.66689,-0.33236) + Old Polarization: (0.74287,0.56044,0.36613) + New Momentum Direction: (0.66693,0.66689,-0.33236) + New Polarization: (-0.74287,0.56044,-0.36613) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66693,0.66689,-0.33236) + Old Polarization: (-0.74287,0.56044,-0.36613) + New Momentum Direction: (-0.66693,0.66689,-0.33236) + New Polarization: (-0.74287,-0.56044,0.36613) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66693,0.66689,-0.33236) + Old Polarization: (-0.74287,-0.56044,0.36613) + New Momentum Direction: (-0.66693,-0.66689,-0.33236) + New Polarization: (0.74287,-0.56044,-0.36613) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66693,-0.66689,-0.33236) + Old Polarization: (0.74287,-0.56044,-0.36613) + New Momentum Direction: (-0.66693,-0.66689,0.33236) + New Polarization: (-0.74287,0.56044,-0.36613) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** Track (trackID 286, parentID 1) is processed with stopping code 2 ### pop requested out of 5 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.724346,0.152657,-0.672323) - Old Polarization: (-0.679815,-0.00420306,-0.733372) - New Momentum Direction: (0.346847,0.207677,-0.914641) - New Polarization: (-0.932152,-0.0316726,-0.360679) + Old Momentum Direction: (0.79519,-0.46473,0.3895) + Old Polarization: (-0.60264,-0.67678,0.42283) + New Momentum Direction: (0.56603,-0.63182,0.52954) + New Polarization: (-0.8219,-0.48233,0.30304) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 285, parentID 1) is processed with stopping code 2 ### pop requested out of 4 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.811042,-0.552167,0.19319) - Old Polarization: (-0.58399,-0.783512,0.212283) - New Momentum Direction: (0.613691,-0.745249,0.260745) - New Polarization: (-0.788865,-0.592479,0.163283) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 284, parentID 1) is processed with stopping code 2 -### pop requested out of 3 stacked tracks. ** Photon Absorbed! ** +Track (trackID 284, parentID 1) is processed with stopping code 2 +### pop requested out of 3 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.74843,-0.042536,-0.66185) +Old Polarization: (-0.65355,-0.21706,-0.72509) +New Polarization: (-0.093318,0.29605,-0.82203) +Polarization Change: (-0.1062,0.33692,-0.93552) +New Momentum Direction: (-0.96978,-0.2401,0.023621) +Momentum Change: (-0.97042,-0.24026,0.023637) + Photon at Boundary! + Old Momentum Direction: (-0.97042,-0.24026,0.023637) + Old Polarization: (-0.1062,0.33692,-0.93552) + New Momentum Direction: (0.97042,-0.24026,0.023637) + New Polarization: (-0.091967,-0.27738,0.95635) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.97042,-0.24026,0.023637) + Old Polarization: (-0.091967,-0.27738,0.95635) + New Momentum Direction: (0.94475,-0.32621,0.032093) + New Polarization: (-0.16052,-0.37508,0.91299) + *** FresnelRefraction *** +No Absorbtion length specified Track (trackID 283, parentID 1) is processed with stopping code 2 ### pop requested out of 2 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.677648,0.554852,0.482631) - Old Polarization: (-0.730861,0.435444,0.525576) - New Momentum Direction: (0.0506504,0.753535,0.655454) - New Polarization: (-0.996735,-0.00318401,0.0806835) + Old Momentum Direction: (0.65831,0.74672,-0.095075) + Old Polarization: (-0.75255,0.64992,-0.10621) + New Momentum Direction: (0.89141,0.43452,-0.12874) + New Polarization: (0.40441,-0.8909,-0.20677) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 282, parentID 1) is processed with stopping code 2 ### pop requested out of 1 stacked tracks. - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 325 + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 7 Track (trackID 1, parentID 0) is processed with stopping code 4 -### pop requested out of 326 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.741681,-0.49923,-0.447971) - Old Polarization: (-0.650068,-0.699574,-0.296661) - New Momentum Direction: (0.418222,-0.676066,-0.606651) - New Polarization: (-0.895105,-0.420354,-0.148629) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 672, parentID 1) is processed with stopping code 2 -### pop requested out of 325 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 671, parentID 1) is processed with stopping code 2 -### pop requested out of 324 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.84079,-0.289063,0.457728) - Old Polarization: (-0.541225,-0.467843,0.698712) - New Momentum Direction: (0.679598,-0.391702,0.620255) - New Polarization: (-0.73349,-0.376419,0.565951) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 670, parentID 1) is processed with stopping code 2 -### pop requested out of 323 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.839527,-0.293254,0.457379) - Old Polarization: (-0.543201,-0.470497,0.695389) - New Momentum Direction: (0.67496,-0.398254,0.621146) - New Polarization: (-0.737774,-0.37671,0.560161) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 669, parentID 1) is processed with stopping code 2 -### pop requested out of 322 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.779126,-0.57748,-0.243885) - Old Polarization: (-0.608548,-0.790135,-0.0731823) - New Momentum Direction: (0.53234,-0.779837,-0.329346) - New Polarization: (-0.83413,-0.549564,-0.0469726) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 668, parentID 1) is processed with stopping code 2 -### pop requested out of 321 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.843404,-0.21305,0.493234) - Old Polarization: (-0.536284,-0.3897,0.748688) - New Momentum Direction: (0.691273,-0.286534,0.663355) - New Polarization: (-0.721894,-0.31424,0.616541) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 667, parentID 1) is processed with stopping code 2 -### pop requested out of 320 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.780139,0.365438,0.507777) - Old Polarization: (-0.607873,0.25091,0.753349) - New Momentum Direction: (0.530098,0.495309,0.688234) - New Polarization: (-0.836018,0.169687,0.521805) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 666, parentID 1) is processed with stopping code 2 -### pop requested out of 319 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.739802,-0.494282,-0.456485) - Old Polarization: (-0.652144,-0.693702,-0.305755) - New Momentum Direction: (0.411445,-0.669574,-0.618372) - New Polarization: (-0.898253,-0.412862,-0.150622) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 665, parentID 1) is processed with stopping code 2 -### pop requested out of 318 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 664, parentID 1) is processed with stopping code 2 -### pop requested out of 317 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.652884,-0.0146476,-0.757316) - Old Polarization: (-0.748328,-0.167234,-0.641902) - New Momentum Direction: (0.881427,-0.019775,-0.471906) - New Polarization: (0.465011,-0.138767,0.874362) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 663, parentID 1) is processed with stopping code 2 -### pop requested out of 316 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.800318,0.218079,0.558509) - Old Polarization: (-0.586121,0.0883324,0.805394) - New Momentum Direction: (0.580112,0.296265,0.758747) - New Polarization: (-0.805393,0.0694488,0.588658) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 662, parentID 1) is processed with stopping code 2 -### pop requested out of 315 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.841788,-0.228167,0.489216) - Old Polarization: (-0.539029,-0.403951,0.739102) - New Momentum Direction: (0.685015,-0.307936,0.66025) - New Polarization: (-0.727986,-0.324318,0.604032) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 661, parentID 1) is processed with stopping code 2 -### pop requested out of 314 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.727976,0.618759,0.295277) - Old Polarization: (-0.665157,0.533012,0.522938) - New Momentum Direction: (0.376387,0.836136,0.399012) - New Polarization: (-0.913644,0.263594,0.309472) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 660, parentID 1) is processed with stopping code 2 -### pop requested out of 313 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.838385,-0.245751,0.486535) - Old Polarization: (-0.544508,-0.418399,0.726948) - New Momentum Direction: (0.672156,-0.333817,0.660888) - New Polarization: (-0.740017,-0.33195,0.584965) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 659, parentID 1) is processed with stopping code 2 -### pop requested out of 312 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 658, parentID 1) is processed with stopping code 2 -### pop requested out of 311 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.674266,0.738479,0.00365177) - Old Polarization: (-0.72408,0.660131,0.19984) - New Momentum Direction: (0.914076,0.405512,0.00495056) - New Polarization: (0.400803,-0.905187,0.141402) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 657, parentID 1) is processed with stopping code 2 -### pop requested out of 310 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.729818,-0.461876,-0.50402) - Old Polarization: (-0.663118,-0.657562,-0.357611) - New Momentum Direction: (0.376402,-0.625925,-0.683037) - New Polarization: (-0.913654,-0.372932,-0.161738) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 656, parentID 1) is processed with stopping code 2 -### pop requested out of 309 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.836909,-0.445465,0.318033) - Old Polarization: (-0.545923,-0.637548,0.5436) - New Momentum Direction: (0.669376,-0.604642,0.431676) - New Polarization: (-0.741945,-0.514239,0.430205) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 655, parentID 1) is processed with stopping code 2 -### pop requested out of 308 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.619758,0.628925,-0.469418) - Old Polarization: (-0.78304,0.535515,-0.316342) - New Momentum Direction: (0.619758,-0.628925,-0.469418) - New Polarization: (0.78304,0.535515,0.316342) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.619758,-0.628925,-0.469418) - Old Polarization: (0.78304,0.535515,0.316342) - New Momentum Direction: (-0.619758,-0.628925,-0.469418) - New Polarization: (0.78304,-0.535515,-0.316342) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.619758,-0.628925,-0.469418) - Old Polarization: (0.78304,-0.535515,-0.316342) - New Momentum Direction: (-0.619758,-0.628925,0.469418) - New Polarization: (-0.78304,0.535515,-0.316342) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 654, parentID 1) is processed with stopping code 2 -### pop requested out of 307 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.722834,-0.408741,-0.557173) - Old Polarization: (-0.670953,-0.60805,-0.424379) - New Momentum Direction: (0.368716,-0.549826,-0.749493) - New Polarization: (-0.916922,-0.347549,-0.196122) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 653, parentID 1) is processed with stopping code 2 -### pop requested out of 306 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.76903,0.447435,0.456502) - Old Polarization: (-0.619553,0.345991,0.704588) - New Momentum Direction: (0.507601,0.603096,0.615318) - New Polarization: (-0.848364,0.225191,0.479132) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 652, parentID 1) is processed with stopping code 2 -### pop requested out of 305 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 651, parentID 1) is processed with stopping code 2 -### pop requested out of 304 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.787261,0.311926,0.531905) - Old Polarization: (-0.600358,0.190942,0.776602) - New Momentum Direction: (0.546371,0.423683,0.722476) - New Polarization: (-0.826594,0.133752,0.546674) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 650, parentID 1) is processed with stopping code 2 -### pop requested out of 303 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.785382,-0.579256,-0.21826) - Old Polarization: (-0.601166,-0.797807,-0.0458682) - New Momentum Direction: (0.553285,-0.779494,-0.293709) - New Polarization: (-0.820756,-0.570358,-0.0324191) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 649, parentID 1) is processed with stopping code 2 -### pop requested out of 302 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 648, parentID 1) is processed with stopping code 2 -### pop requested out of 301 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.627453,0.678558,-0.381917) - Old Polarization: (-0.775001,0.591682,-0.222002) - New Momentum Direction: (0.627453,-0.678558,-0.381917) - New Polarization: (-0.111427,-0.563683,0.818441) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.627453,-0.678558,-0.381917) - Old Polarization: (-0.111427,-0.563683,0.818441) - New Momentum Direction: (-0.627453,-0.678558,-0.381917) - New Polarization: (-0.111427,0.563683,-0.818441) - *** TotalInternalReflection *** -No Absorbtion length specified -Scattering Photon! -Old Momentum Direction: (-0.627453,-0.678558,-0.381917) -Old Polarization: (-0.111427,0.563683,-0.818441) -New Polarization: (-0.0900309,0.559332,-0.811835) -Polarization Change: (-0.0909434,0.565001,-0.820063) -New Momentum Direction: (-0.359866,-0.779652,-0.528185) -Momentum Change: (-0.356961,-0.773359,-0.523922) - Photon at Boundary! - Old Momentum Direction: (-0.356961,-0.773359,-0.523922) - Old Polarization: (-0.0909434,0.565001,-0.820063) - New Momentum Direction: (-0.356961,-0.773359,0.523922) - New Polarization: (0.0909434,-0.565001,-0.820063) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 647, parentID 1) is processed with stopping code 2 -### pop requested out of 300 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 646, parentID 1) is processed with stopping code 2 -### pop requested out of 299 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.8049,0.191585,0.561633) - Old Polarization: (-0.58076,0.0599365,0.811866) - New Momentum Direction: (0.593807,0.259771,0.76152) - New Polarization: (-0.795952,0.0511993,0.603191) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 645, parentID 1) is processed with stopping code 2 -### pop requested out of 298 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 644, parentID 1) is processed with stopping code 2 -### pop requested out of 297 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.779917,0.36271,0.510069) - Old Polarization: (-0.60825,0.247164,0.754282) - New Momentum Direction: (0.528026,0.492142,0.692087) - New Polarization: (-0.837408,0.166242,0.520684) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 643, parentID 1) is processed with stopping code 2 -### pop requested out of 296 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.622434,0.497254,-0.604413) - Old Polarization: (-0.782644,0.401962,-0.475283) - New Momentum Direction: (-0.622434,0.497254,-0.604413) - New Polarization: (-0.782644,-0.401962,0.475283) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.622434,0.497254,-0.604413) - Old Polarization: (-0.782644,-0.401962,0.475283) - New Momentum Direction: (-0.622434,0.497254,0.604413) - New Polarization: (0.782644,0.401962,0.475283) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.622434,0.497254,0.604413) - Old Polarization: (0.782644,0.401962,0.475283) - New Momentum Direction: (-0.622434,-0.497254,0.604413) - New Polarization: (-0.782644,0.401962,-0.475283) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.622434,-0.497254,0.604413) - Old Polarization: (-0.782644,0.401962,-0.475283) - New Momentum Direction: (-0.622434,-0.497254,-0.604413) - New Polarization: (0.782644,-0.401962,-0.475283) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.622434,-0.497254,-0.604413) - Old Polarization: (0.782644,-0.401962,-0.475283) - New Momentum Direction: (-0.622434,-0.497254,0.604413) - New Polarization: (-0.782644,0.401962,-0.475283) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.622434,-0.497254,0.604413) - Old Polarization: (-0.782644,0.401962,-0.475283) - New Momentum Direction: (0.622434,-0.497254,0.604413) - New Polarization: (-0.782644,-0.401962,0.475283) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 642, parentID 1) is processed with stopping code 2 -### pop requested out of 295 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.757636,0.495022,0.425372) - Old Polarization: (-0.632414,0.395654,0.665966) - New Momentum Direction: (0.470336,0.669321,0.575147) - New Polarization: (-0.869137,0.238396,0.433321) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 641, parentID 1) is processed with stopping code 2 -### pop requested out of 294 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.705905,-0.35888,-0.610659) - Old Polarization: (-0.689451,-0.545743,-0.476257) - New Momentum Direction: (0.284405,-0.485749,-0.826536) - New Polarization: (-0.947668,-0.272882,-0.165715) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 640, parentID 1) is processed with stopping code 2 -### pop requested out of 293 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.791375,0.3076,0.528306) - Old Polarization: (-0.59503,0.189343,0.781082) - New Momentum Direction: (0.563999,0.415501,0.713627) - New Polarization: (-0.814635,0.138481,0.563199) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 639, parentID 1) is processed with stopping code 2 -### pop requested out of 292 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 638, parentID 1) is processed with stopping code 2 -### pop requested out of 291 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.814185,0.120613,0.56794) - Old Polarization: (-0.570257,-0.0177442,0.821275) - New Momentum Direction: (0.618187,0.163288,0.768884) - New Polarization: (-0.778896,-0.0042453,0.627138) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 637, parentID 1) is processed with stopping code 2 -### pop requested out of 290 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.63796,0.719759,-0.273777) - Old Polarization: (-0.763596,0.637269,-0.103967) - New Momentum Direction: (0.63796,-0.719759,-0.273777) - New Polarization: (-0.214071,-0.507269,0.834777) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.63796,-0.719759,-0.273777) - Old Polarization: (-0.214071,-0.507269,0.834777) - New Momentum Direction: (-0.63796,-0.719759,-0.273777) - New Polarization: (-0.214071,0.507269,-0.834777) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.63796,-0.719759,-0.273777) - Old Polarization: (-0.214071,0.507269,-0.834777) - New Momentum Direction: (-0.63796,-0.719759,0.273777) - New Polarization: (0.214071,-0.507269,-0.834777) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.63796,-0.719759,0.273777) - Old Polarization: (0.214071,-0.507269,-0.834777) - New Momentum Direction: (-0.866148,-0.334103,0.371703) - New Polarization: (-0.468215,0.80258,-0.369648) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 636, parentID 1) is processed with stopping code 2 -### pop requested out of 289 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.74051,-0.486513,-0.463627) - Old Polarization: (-0.651286,-0.68966,-0.316537) - New Momentum Direction: (0.420265,-0.656894,-0.625994) - New Polarization: (-0.89403,-0.417754,-0.161838) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 635, parentID 1) is processed with stopping code 2 -### pop requested out of 288 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.814457,-0.57861,0.0432403) - Old Polarization: (-0.570316,-0.784611,0.243157) - New Momentum Direction: (0.617107,-0.784691,0.0586411) - New Polarization: (-0.780072,-0.600284,0.176485) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 634, parentID 1) is processed with stopping code 2 -### pop requested out of 287 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.76212,0.478501,0.43613) - Old Polarization: (-0.62733,0.379198,0.680196) - New Momentum Direction: (0.486229,0.645823,0.588637) - New Polarization: (-0.860451,0.236422,0.451363) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 633, parentID 1) is processed with stopping code 2 -### pop requested out of 286 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 632, parentID 1) is processed with stopping code 2 -### pop requested out of 285 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.822211,-0.556447,0.119735) - Old Polarization: (-0.561876,-0.759894,0.326888) - New Momentum Direction: (0.635479,-0.754841,0.162426) - New Polarization: (-0.767086,-0.593231,0.244248) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 631, parentID 1) is processed with stopping code 2 -### pop requested out of 284 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.824108,0.0438605,0.564732) - Old Polarization: (-0.558583,-0.102476,0.823094) - New Momentum Direction: (0.644834,0.0591837,0.762028) - New Polarization: (-0.758858,-0.0694397,0.647544) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 630, parentID 1) is processed with stopping code 2 -### pop requested out of 283 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.745897,0.54417,0.384079) -Old Polarization: (-0.645432,0.448116,0.618555) -New Polarization: (-0.00879722,0.456571,0.737932) -Polarization Change: (-0.0101374,0.526124,0.850347) -New Momentum Direction: (0.984878,-0.118867,0.186272) -Momentum Change: (0.975743,-0.117765,0.184545) - Photon at Boundary! - Old Momentum Direction: (0.975743,-0.117765,0.184545) - Old Polarization: (-0.0101374,0.526124,0.850347) - New Momentum Direction: (0.955044,-0.159479,0.249913) - New Polarization: (-0.162325,0.424091,0.890953) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 629, parentID 1) is processed with stopping code 2 -### pop requested out of 282 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.793046,-0.586275,-0.165409) - Old Polarization: (-0.592642,-0.805359,0.0131183) - New Momentum Direction: (0.572542,-0.789071,-0.222625) - New Polarization: (-0.808487,-0.588478,0.00654946) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 628, parentID 1) is processed with stopping code 2 -### pop requested out of 281 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.625342,0.243501,-0.741387) - Old Polarization: (-0.777746,0.116923,-0.617608) - New Momentum Direction: (0.847824,0.330134,-0.414978) - New Polarization: (0.271233,0.402471,0.874328) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 627, parentID 1) is processed with stopping code 2 -### pop requested out of 280 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.766857,-0.565096,-0.304298) - Old Polarization: (-0.622475,-0.770361,-0.138091) - New Momentum Direction: (0.492887,-0.766083,-0.412528) - New Polarization: (-0.857281,-0.508642,-0.0797049) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 626, parentID 1) is processed with stopping code 2 -### pop requested out of 279 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.841735,-0.310048,0.441988) - Old Polarization: (-0.539861,-0.492011,0.682989) - New Momentum Direction: (0.682679,-0.419636,0.59821) - New Polarization: (-0.730698,-0.398229,0.554522) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 625, parentID 1) is processed with stopping code 2 -### pop requested out of 278 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.698231,0.700612,0.147024) - Old Polarization: (-0.697872,0.620398,0.357884) - New Momentum Direction: (0.945429,0.25794,0.199076) - New Polarization: (0.166429,-0.907562,0.385529) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 624, parentID 1) is processed with stopping code 2 -### pop requested out of 277 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.681725,-0.238667,-0.691584) - Old Polarization: (-0.715921,-0.412332,-0.563418) - New Momentum Direction: (0.681725,-0.238667,0.691584) - New Polarization: (-0.163401,0.871744,0.461911) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.681725,-0.238667,0.691584) - Old Polarization: (-0.163401,0.871744,0.461911) - New Momentum Direction: (-0.681725,-0.238667,0.691584) - New Polarization: (-0.12921,-0.891157,-0.434907) - *** FresnelReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 623, parentID 1) is processed with stopping code 2 -### pop requested out of 276 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.839019,-0.386384,0.383085) - Old Polarization: (-0.543802,-0.57211,0.613979) - New Momentum Direction: (0.673655,-0.524821,0.520339) - New Polarization: (-0.738839,-0.461598,0.490962) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 622, parentID 1) is processed with stopping code 2 -### pop requested out of 275 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.819954,0.0912414,0.565111) - Old Polarization: (-0.563,-0.0499075,0.824949) - New Momentum Direction: (0.635937,0.12301,0.761875) - New Polarization: (-0.765173,-0.0280235,0.643214) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 621, parentID 1) is processed with stopping code 2 -### pop requested out of 274 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.779368,0.366006,0.508551) - Old Polarization: (-0.608853,0.250768,0.752605) - New Momentum Direction: (0.526518,0.49662,0.690034) - New Polarization: (-0.838296,0.168126,0.518646) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 620, parentID 1) is processed with stopping code 2 -### pop requested out of 273 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.768843,-0.572425,-0.284975) -Old Polarization: (-0.620472,-0.775591,-0.116071) -New Polarization: (-0.766941,-0.0252617,-0.448608) -Polarization Change: (-0.862829,-0.0284202,-0.504696) -New Momentum Direction: (-0.440565,-0.141449,1.0325) -Momentum Change: (-0.389383,-0.125016,0.912552) - Photon at Boundary! - Old Momentum Direction: (-0.389383,-0.125016,0.912552) - Old Polarization: (-0.862829,-0.0284202,-0.504696) - New Momentum Direction: (-0.528828,-0.169786,0.831573) - New Polarization: (-0.832906,-0.0844894,-0.546926) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 619, parentID 1) is processed with stopping code 2 -### pop requested out of 272 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.753185,0.525782,0.395305) - Old Polarization: (-0.637139,0.433638,0.637191) - New Momentum Direction: (0.463284,0.708341,0.53256) - New Polarization: (-0.872552,0.259499,0.413899) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 618, parentID 1) is processed with stopping code 2 -### pop requested out of 271 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.810397,-0.585763,-0.0117828) - Old Polarization: (-0.574098,-0.79795,0.18354) - New Momentum Direction: (0.610726,-0.791682,-0.0159249) - New Polarization: (-0.783705,-0.607204,0.130808) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 617, parentID 1) is processed with stopping code 2 -### pop requested out of 270 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.841687,-0.319824,0.435057) - Old Polarization: (-0.539958,-0.50262,0.675143) - New Momentum Direction: (0.682444,-0.432939,0.588927) - New Polarization: (-0.730933,-0.407141,0.547698) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 616, parentID 1) is processed with stopping code 2 -### pop requested out of 269 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.663038,-0.0898327,-0.743176) - Old Polarization: (-0.737207,-0.250797,-0.627397) - New Momentum Direction: (0.894486,-0.121191,-0.430357) - New Polarization: (0.380333,-0.299754,0.874925) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 615, parentID 1) is processed with stopping code 2 -### pop requested out of 268 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.71428,0.659025,0.235564) - Old Polarization: (-0.68021,0.574521,0.455235) - New Momentum Direction: (0.319122,0.892417,0.318989) - New Polarization: (-0.935909,0.243798,0.254239) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 614, parentID 1) is processed with stopping code 2 -### pop requested out of 267 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.829649,-0.0287509,0.557544) - Old Polarization: (-0.552743,-0.182661,0.813087) - New Momentum Direction: (0.656554,-0.0388444,0.753279) - New Polarization: (-0.750426,-0.134463,0.647133) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 613, parentID 1) is processed with stopping code 2 -### pop requested out of 266 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.689677,0.716029,0.107927) - Old Polarization: (-0.707063,0.633756,0.313712) - New Momentum Direction: (0.936019,0.32002,0.146476) - New Polarization: (0.257752,-0.906701,0.333852) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 612, parentID 1) is processed with stopping code 2 -### pop requested out of 265 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 611, parentID 1) is processed with stopping code 2 -### pop requested out of 264 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.634395,0.695182,-0.338031) - Old Polarization: (-0.768262,0.61541,-0.176194) - New Momentum Direction: (0.858432,0.232107,-0.457407) - New Polarization: (0.0227061,-0.908079,-0.418182) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 610, parentID 1) is processed with stopping code 2 -### pop requested out of 263 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.682809,0.728709,0.0524823) - Old Polarization: (-0.714857,0.651542,0.253915) - New Momentum Direction: (0.924414,0.374714,0.0710526) - New Polarization: (0.34885,-0.906037,0.239583) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 609, parentID 1) is processed with stopping code 2 -### pop requested out of 262 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.70497,-0.371612,-0.604087) - Old Polarization: (-0.690244,-0.555278,-0.463928) - New Momentum Direction: (0.266012,-0.505082,-0.821054) - New Polarization: (-0.953108,-0.265312,-0.145586) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 608, parentID 1) is processed with stopping code 2 -### pop requested out of 261 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.722678,0.626667,0.291591) - Old Polarization: (-0.670927,0.534627,0.51384) - New Momentum Direction: (0.343939,0.851342,0.396134) - New Polarization: (-0.926676,0.239639,0.289561) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 607, parentID 1) is processed with stopping code 2 -### pop requested out of 260 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.733975,-0.48352,-0.476958) - Old Polarization: (-0.658583,-0.678306,-0.325835) - New Momentum Direction: (0.386053,-0.65673,-0.647818) - New Polarization: (-0.909605,-0.387911,-0.148811) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 606, parentID 1) is processed with stopping code 2 -### pop requested out of 259 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 605, parentID 1) is processed with stopping code 2 -### pop requested out of 258 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.839497,-0.340071,0.423788) - Old Polarization: (-0.543356,-0.521219,0.658099) - New Momentum Direction: (0.674522,-0.462045,0.57579) - New Polarization: (-0.73825,-0.419176,0.528468) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 604, parentID 1) is processed with stopping code 2 -### pop requested out of 257 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.839252,-0.41807,0.347668) - Old Polarization: (-0.542933,-0.609459,0.57774) - New Momentum Direction: (0.67604,-0.566558,0.47115) - New Polarization: (-0.736305,-0.494475,0.461898) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 603, parentID 1) is processed with stopping code 2 -### pop requested out of 256 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 602, parentID 1) is processed with stopping code 2 -### pop requested out of 255 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.629768,0.675592,-0.383363) - Old Polarization: (-0.773173,0.592707,-0.225613) - New Momentum Direction: (0.852822,0.056419,-0.519145) - New Polarization: (-0.158172,-0.919537,-0.359768) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 601, parentID 1) is processed with stopping code 2 -### pop requested out of 254 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.670117,0.741488,-0.0337337) - Old Polarization: (-0.728855,0.665937,0.159054) - New Momentum Direction: (0.907047,0.418546,-0.0456608) - New Polarization: (0.420753,-0.905034,0.0622989) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 600, parentID 1) is processed with stopping code 2 -### pop requested out of 253 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 599, parentID 1) is processed with stopping code 2 -### pop requested out of 252 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 598, parentID 1) is processed with stopping code 2 -### pop requested out of 251 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.739352,0.581333,0.339721) - Old Polarization: (-0.652545,0.494288,0.574338) - New Momentum Direction: (0.419094,0.783904,0.4581) - New Polarization: (-0.894542,0.27013,0.356125) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 597, parentID 1) is processed with stopping code 2 -### pop requested out of 250 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.693074,-0.296051,-0.657268) - Old Polarization: (-0.703562,-0.476379,-0.527317) - New Momentum Direction: (0.218243,-0.400789,-0.889797) - New Polarization: (-0.966351,-0.215956,-0.139748) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 596, parentID 1) is processed with stopping code 2 -### pop requested out of 249 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.814461,0.125216,0.566545) - Old Polarization: (-0.569696,-0.0125251,0.82176) - New Momentum Direction: (0.620093,0.169308,0.766041) - New Polarization: (-0.777256,-6.20181e-05,0.629185) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 595, parentID 1) is processed with stopping code 2 -### pop requested out of 248 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.735467,0.58865,0.335528) - Old Polarization: (-0.656892,0.498092,0.566037) - New Momentum Direction: (0.399365,0.796489,0.453996) - New Polarization: (-0.903683,0.258556,0.341328) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 594, parentID 1) is processed with stopping code 2 -### pop requested out of 247 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.617238,0.373848,-0.692282) -Old Polarization: (-0.786176,0.258689,-0.561256) -New Polarization: (-0.700671,0.235227,-0.60979) -Polarization Change: (-0.731249,0.245493,-0.636402) -New Momentum Direction: (-0.65354,-0.412426,0.680563) -Momentum Change: (-0.634662,-0.400513,0.660904) - -** Photon Absorbed! ** -Track (trackID 593, parentID 1) is processed with stopping code 2 -### pop requested out of 246 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.839183,-0.305523,0.44992) - Old Polarization: (-0.543794,-0.483171,0.686173) - New Momentum Direction: (0.673513,-0.415253,0.61151) - New Polarization: (-0.739137,-0.386732,0.551466) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 592, parentID 1) is processed with stopping code 2 -### pop requested out of 245 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 591, parentID 1) is processed with stopping code 2 -### pop requested out of 244 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.772101,-0.571516,-0.277901) - Old Polarization: (-0.616574,-0.779612,-0.109739) - New Momentum Direction: (0.50976,-0.773698,-0.376212) - New Polarization: (-0.847665,-0.526414,-0.0659747) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 590, parentID 1) is processed with stopping code 2 -### pop requested out of 243 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 589, parentID 1) is processed with stopping code 2 -### pop requested out of 242 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.628561,0.622339,-0.466482) - Old Polarization: (-0.776004,0.542096,-0.322411) - New Momentum Direction: (-0.628561,0.622339,-0.466482) - New Polarization: (-0.776004,-0.542096,0.322411) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.628561,0.622339,-0.466482) - Old Polarization: (-0.776004,-0.542096,0.322411) - New Momentum Direction: (-0.628561,-0.622339,-0.466482) - New Polarization: (0.776004,-0.542096,-0.322411) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 588, parentID 1) is processed with stopping code 2 -### pop requested out of 241 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.647325,0.0197178,-0.761959) - Old Polarization: (-0.754098,-0.12892,-0.643984) - New Momentum Direction: (0.875563,0.02667,-0.482367) - New Polarization: (0.483077,-0.0587281,0.873606) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 587, parentID 1) is processed with stopping code 2 -### pop requested out of 240 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.758491,0.476222,0.444864) - Old Polarization: (-0.631821,0.370131,0.681032) - New Momentum Direction: (0.464675,0.647072,0.604463) - New Polarization: (-0.87254,0.218318,0.437049) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 586, parentID 1) is processed with stopping code 2 -### pop requested out of 239 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.806458,0.180158,0.563177) - Old Polarization: (-0.579005,0.0474627,0.813941) - New Momentum Direction: (0.59794,0.244219,0.76343) - New Polarization: (-0.793124,0.0426037,0.607568) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 585, parentID 1) is processed with stopping code 2 -### pop requested out of 238 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.681603,-0.24386,-0.689891) - Old Polarization: (-0.715921,-0.417128,-0.559876) - New Momentum Direction: (0.924899,-0.330905,-0.187256) - New Polarization: (0.00475343,-0.482401,0.875938) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 584, parentID 1) is processed with stopping code 2 -### pop requested out of 237 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 583, parentID 1) is processed with stopping code 2 -### pop requested out of 236 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.627501,0.255387,-0.735541) - Old Polarization: (-0.776242,0.131485,-0.616571) - New Momentum Direction: (0.847814,0.345052,-0.40268) - New Polarization: (0.245139,0.418333,0.874588) - *** FresnelRefraction *** -No Absorbtion length specified +### pop requested out of 9 stacked tracks. Track (trackID 582, parentID 1) is processed with stopping code 2 -### pop requested out of 235 stacked tracks. +### pop requested out of 8 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.658046,0.745467,-0.106083) - Old Polarization: (-0.741692,0.666019,0.0794443) - New Momentum Direction: (0.893069,0.426263,-0.14397) - New Polarization: (0.416399,-0.904272,-0.0943584) + Old Momentum Direction: (0.75699,0.12942,0.64048) + Old Polarization: (-0.65249,0.097269,0.75153) + New Momentum Direction: (0.46428,0.17542,0.86814) + New Polarization: (-0.88509,0.055874,0.46205) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 581, parentID 1) is processed with stopping code 2 -### pop requested out of 234 stacked tracks. +### pop requested out of 7 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.834842,-0.130224,0.534865) - Old Polarization: (-0.547746,-0.293395,0.783514) - New Momentum Direction: (0.666038,-0.176454,0.724747) - New Polarization: (-0.744019,-0.226446,0.628616) + Old Momentum Direction: (0.73282,-0.39525,-0.55385) + Old Polarization: (-0.67902,-0.47704,-0.558) + New Momentum Direction: (0.38167,-0.53692,-0.75236) + New Polarization: (-0.92344,-0.25648,-0.28543) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 580, parentID 1) is processed with stopping code 2 -### pop requested out of 233 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.628844,0.207922,-0.749215) - Old Polarization: (-0.774195,0.0782724,-0.628089) - New Momentum Direction: (0.851552,0.281558,-0.442249) - New Polarization: (0.33934,0.347004,0.874321) - *** FresnelRefraction *** -No Absorbtion length specified +### pop requested out of 6 stacked tracks. + +** Photon Absorbed! ** Track (trackID 579, parentID 1) is processed with stopping code 2 -### pop requested out of 232 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.781338,0.355859,0.512714) -Old Polarization: (-0.606633,0.23999,0.757893) -New Polarization: (-0.50503,0.336196,0.72105) -Polarization Change: (-0.535935,0.356769,0.765173) -New Momentum Direction: (-0.654139,0.311634,-0.787096) -Momentum Change: (-0.611443,0.291293,-0.735722) - Photon at Boundary! - Old Momentum Direction: (-0.611443,0.291293,-0.735722) - Old Polarization: (-0.535935,0.356769,0.765173) - New Momentum Direction: (-0.611443,-0.291293,-0.735722) - New Polarization: (0.535935,0.356769,-0.765173) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.611443,-0.291293,-0.735722) - Old Polarization: (0.535935,0.356769,-0.765173) - New Momentum Direction: (-0.829232,-0.395049,-0.39536) - New Polarization: (-0.382822,-0.113926,0.916771) - *** FresnelRefraction *** -No Absorbtion length specified +### pop requested out of 5 stacked tracks. + +** Photon Absorbed! ** Track (trackID 578, parentID 1) is processed with stopping code 2 -### pop requested out of 231 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.812786,-0.581493,0.0352868) - Old Polarization: (-0.572394,-0.785866,0.23405) - New Momentum Direction: (0.611809,-0.789553,0.0479125) - New Polarization: (-0.78404,-0.597288,0.168901) - *** FresnelRefraction *** -No Absorbtion length specified +### pop requested out of 4 stacked tracks. + +** Photon Absorbed! ** Track (trackID 577, parentID 1) is processed with stopping code 2 -### pop requested out of 230 stacked tracks. +### pop requested out of 3 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.622628,0.295725,-0.724486) - Old Polarization: (-0.780856,0.174496,-0.599846) - New Momentum Direction: (0.843711,0.400731,-0.357164) - New Polarization: (0.150511,0.462071,0.873978) + Old Momentum Direction: (0.70884,0.41902,-0.56743) + Old Polarization: (-0.70535,0.41481,-0.57481) + New Momentum Direction: (0.29087,0.56835,-0.76966) + New Polarization: (-0.95675,0.16873,-0.23698) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 576, parentID 1) is processed with stopping code 2 -### pop requested out of 229 stacked tracks. +### pop requested out of 2 stacked tracks. ** Photon Absorbed! ** Track (trackID 575, parentID 1) is processed with stopping code 2 -### pop requested out of 228 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 574, parentID 1) is processed with stopping code 2 -### pop requested out of 227 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 573, parentID 1) is processed with stopping code 2 -### pop requested out of 226 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.627086,0.644083,-0.438086) - Old Polarization: (-0.776595,0.560646,-0.287362) - New Momentum Direction: (0.627086,-0.644083,-0.438086) - New Polarization: (0.776595,0.560646,0.287362) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.627086,-0.644083,-0.438086) - Old Polarization: (0.776595,0.560646,0.287362) - New Momentum Direction: (-0.627086,-0.644083,-0.438086) - New Polarization: (0.776595,-0.560646,-0.287362) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.627086,-0.644083,-0.438086) - Old Polarization: (0.776595,-0.560646,-0.287362) - New Momentum Direction: (-0.627086,-0.644083,0.438086) - New Polarization: (-0.776595,0.560646,-0.287362) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.627086,-0.644083,0.438086) - Old Polarization: (-0.776595,0.560646,-0.287362) - New Momentum Direction: (-0.627086,0.644083,0.438086) - New Polarization: (0.776595,0.560646,0.287362) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.627086,0.644083,0.438086) - Old Polarization: (0.776595,0.560646,0.287362) - New Momentum Direction: (0.627086,0.644083,0.438086) - New Polarization: (0.776595,-0.560646,-0.287362) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.627086,0.644083,0.438086) - Old Polarization: (0.776595,-0.560646,-0.287362) - New Momentum Direction: (0.627086,0.644083,-0.438086) - New Polarization: (-0.776595,0.560646,-0.287362) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.627086,0.644083,-0.438086) - Old Polarization: (-0.776595,0.560646,-0.287362) - New Momentum Direction: (0.627086,-0.644083,-0.438086) - New Polarization: (0.776595,0.560646,0.287362) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.627086,-0.644083,-0.438086) - Old Polarization: (0.776595,0.560646,0.287362) - New Momentum Direction: (-0.627086,-0.644083,-0.438086) - New Polarization: (0.776595,-0.560646,-0.287362) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.627086,-0.644083,-0.438086) - Old Polarization: (0.776595,-0.560646,-0.287362) - New Momentum Direction: (-0.627086,0.644083,-0.438086) - New Polarization: (-0.776595,-0.560646,0.287362) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.627086,0.644083,-0.438086) - Old Polarization: (-0.776595,-0.560646,0.287362) - New Momentum Direction: (0.627086,0.644083,-0.438086) - New Polarization: (-0.776595,0.560646,-0.287362) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.627086,0.644083,-0.438086) - Old Polarization: (-0.776595,0.560646,-0.287362) - New Momentum Direction: (0.627086,0.644083,0.438086) - New Polarization: (0.776595,-0.560646,-0.287362) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.627086,0.644083,0.438086) - Old Polarization: (0.776595,-0.560646,-0.287362) - New Momentum Direction: (0.627086,-0.644083,0.438086) - New Polarization: (-0.776595,-0.560646,0.287362) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.627086,-0.644083,0.438086) - Old Polarization: (-0.776595,-0.560646,0.287362) - New Momentum Direction: (-0.627086,-0.644083,0.438086) - New Polarization: (-0.776595,0.560646,-0.287362) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.627086,-0.644083,0.438086) - Old Polarization: (-0.776595,0.560646,-0.287362) - New Momentum Direction: (-0.627086,-0.644083,-0.438086) - New Polarization: (0.776595,-0.560646,-0.287362) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.627086,-0.644083,-0.438086) - Old Polarization: (0.776595,-0.560646,-0.287362) - New Momentum Direction: (-0.627086,0.644083,-0.438086) - New Polarization: (-0.776595,-0.560646,0.287362) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.627086,0.644083,-0.438086) - Old Polarization: (-0.776595,-0.560646,0.287362) - New Momentum Direction: (0.627086,0.644083,-0.438086) - New Polarization: (-0.776595,0.560646,-0.287362) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.627086,0.644083,-0.438086) - Old Polarization: (-0.776595,0.560646,-0.287362) - New Momentum Direction: (0.627086,-0.644083,-0.438086) - New Polarization: (0.776595,0.560646,0.287362) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.627086,-0.644083,-0.438086) - Old Polarization: (0.776595,0.560646,0.287362) - New Momentum Direction: (0.627086,-0.644083,0.438086) - New Polarization: (-0.776595,-0.560646,0.287362) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.627086,-0.644083,0.438086) - Old Polarization: (-0.776595,-0.560646,0.287362) - New Momentum Direction: (-0.627086,-0.644083,0.438086) - New Polarization: (-0.776595,0.560646,-0.287362) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.627086,-0.644083,0.438086) - Old Polarization: (-0.776595,0.560646,-0.287362) - New Momentum Direction: (-0.627086,0.644083,0.438086) - New Polarization: (0.776595,0.560646,0.287362) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 572, parentID 1) is processed with stopping code 2 -### pop requested out of 225 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 571, parentID 1) is processed with stopping code 2 -### pop requested out of 224 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.800771,0.238145,0.549593) - Old Polarization: (-0.584769,0.112206,0.803402) - New Momentum Direction: (0.586839,0.321931,0.742954) - New Polarization: (-0.799951,0.0885295,0.593499) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 570, parentID 1) is processed with stopping code 2 -### pop requested out of 223 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.685452,-0.270253,-0.676105) - Old Polarization: (-0.71161,-0.445251,-0.543472) - New Momentum Direction: (-0.685452,-0.270253,-0.676105) - New Polarization: (-0.699707,0.501345,0.508983) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.685452,-0.270253,-0.676105) - Old Polarization: (-0.699707,0.501345,0.508983) - New Momentum Direction: (-0.685452,-0.270253,0.676105) - New Polarization: (0.699707,-0.501345,0.508983) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 569, parentID 1) is processed with stopping code 2 -### pop requested out of 222 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.832187,-0.118319,0.541724) - Old Polarization: (-0.551449,-0.278859,0.78622) - New Momentum Direction: (0.65721,-0.160827,0.736349) - New Polarization: (-0.751613,-0.212633,0.624392) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 568, parentID 1) is processed with stopping code 2 -### pop requested out of 221 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.690829,0.716673,0.09558) - Old Polarization: (-0.706161,0.640421,0.30199) - New Momentum Direction: (0.934003,0.333076,0.129224) - New Polarization: (0.279565,-0.906594,0.316118) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 567, parentID 1) is processed with stopping code 2 -### pop requested out of 220 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.837035,-0.204128,0.507646) -Old Polarization: (-0.54595,-0.373009,0.750202) -New Polarization: (-0.508219,-0.328619,0.763694) -Polarization Change: (-0.521558,-0.337244,0.783738) -New Momentum Direction: (-0.126368,-0.864488,-0.518962) -Momentum Change: (-0.124356,-0.85072,-0.510697) - Photon at Boundary! - Old Momentum Direction: (-0.124356,-0.85072,-0.510697) - Old Polarization: (-0.521558,-0.337244,0.783738) - New Momentum Direction: (-0.168898,-0.700262,-0.693618) - New Polarization: (-0.686064,0.588788,-0.427369) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 566, parentID 1) is processed with stopping code 2 -### pop requested out of 219 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.754517,-0.539543,-0.373627) - Old Polarization: (-0.636052,-0.741443,-0.213775) - New Momentum Direction: (0.455522,-0.731874,-0.506814) - New Polarization: (-0.877063,-0.466493,-0.114653) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 565, parentID 1) is processed with stopping code 2 -### pop requested out of 218 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.772921,-0.581343,-0.254231) - Old Polarization: (-0.616154,-0.783346,-0.0819917) - New Momentum Direction: (0.505504,-0.790536,-0.345715) - New Polarization: (-0.850673,-0.523637,-0.0464707) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 564, parentID 1) is processed with stopping code 2 -### pop requested out of 217 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.788016,0.335459,0.516234) - Old Polarization: (-0.598541,0.22111,0.769973) - New Momentum Direction: (0.55719,0.452461,0.696289) - New Polarization: (-0.818683,0.159047,0.551781) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 563, parentID 1) is processed with stopping code 2 -### pop requested out of 216 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.616673,0.577844,-0.534613) - Old Polarization: (-0.786539,0.480497,-0.387916) - New Momentum Direction: (-0.616673,0.577844,-0.534613) - New Polarization: (-0.786539,-0.480497,0.387916) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.616673,0.577844,-0.534613) - Old Polarization: (-0.786539,-0.480497,0.387916) - New Momentum Direction: (-0.616673,-0.577844,-0.534613) - New Polarization: (0.786539,-0.480497,-0.387916) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.616673,-0.577844,-0.534613) - Old Polarization: (0.786539,-0.480497,-0.387916) - New Momentum Direction: (-0.616673,-0.577844,0.534613) - New Polarization: (-0.786539,0.480497,-0.387916) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.616673,-0.577844,0.534613) - Old Polarization: (-0.786539,0.480497,-0.387916) - New Momentum Direction: (0.616673,-0.577844,0.534613) - New Polarization: (-0.786539,-0.480497,0.387916) - *** TotalInternalReflection *** -No Absorbtion length specified -Scattering Photon! -Old Momentum Direction: (0.616673,-0.577844,0.534613) -Old Polarization: (-0.786539,-0.480497,0.387916) -New Polarization: (-0.066492,-0.871237,0.174747) -Polarization Change: (-0.0746201,-0.977739,0.196109) -New Momentum Direction: (0.894471,-0.143633,-0.477142) -Momentum Change: (0.873591,-0.14028,-0.466004) - Photon at Boundary! - Old Momentum Direction: (0.873591,-0.14028,-0.466004) - Old Polarization: (-0.0746201,-0.977739,0.196109) - New Momentum Direction: (0.873591,0.14028,-0.466004) - New Polarization: (0.0746201,-0.977739,-0.196109) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 562, parentID 1) is processed with stopping code 2 -### pop requested out of 215 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.675338,0.737497,0.004115) - Old Polarization: (-0.723063,0.661,0.200647) - New Momentum Direction: (0.91442,0.404728,0.00557178) - New Polarization: (0.39986,-0.905388,0.142773) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 561, parentID 1) is processed with stopping code 2 -### pop requested out of 214 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.675774,0.736625,-0.0266904) - Old Polarization: (-0.723404,0.669725,0.167795) - New Momentum Direction: (0.909596,0.413937,-0.0359254) - New Polarization: (0.415493,-0.906133,0.079301) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 560, parentID 1) is processed with stopping code 2 -### pop requested out of 213 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.632066,0.144685,-0.761288) - Old Polarization: (-0.770135,0.00833482,-0.637827) - New Momentum Direction: (0.857805,0.196358,-0.474989) - New Polarization: (0.431577,0.226706,0.873124) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 559, parentID 1) is processed with stopping code 2 -### pop requested out of 212 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 558, parentID 1) is processed with stopping code 2 -### pop requested out of 211 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.818568,0.0504792,0.572187) - Old Polarization: (-0.566415,-0.0946752,0.818664) - New Momentum Direction: (0.624327,0.0686488,0.778141) - New Polarization: (-0.775691,-0.0632148,0.627939) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 557, parentID 1) is processed with stopping code 2 -### pop requested out of 210 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.63105,0.692346,-0.349904) - Old Polarization: (-0.771297,0.608198,-0.187607) - New Momentum Direction: (0.85624,0.203587,-0.474768) - New Polarization: (-0.0142041,-0.909438,-0.415597) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 556, parentID 1) is processed with stopping code 2 -### pop requested out of 209 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.792102,0.298178,0.532601) - Old Polarization: (-0.594388,0.178328,0.784157) - New Momentum Direction: (0.564555,0.403211,0.720208) - New Polarization: (-0.814479,0.130697,0.565281) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 555, parentID 1) is processed with stopping code 2 -### pop requested out of 208 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 554, parentID 1) is processed with stopping code 2 -### pop requested out of 207 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.775153,0.413689,0.477492) - Old Polarization: (-0.612768,0.30832,0.727636) - New Momentum Direction: (0.523978,0.557719,0.643736) - New Polarization: (-0.838869,0.207066,0.503411) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 553, parentID 1) is processed with stopping code 2 -### pop requested out of 206 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 552, parentID 1) is processed with stopping code 2 -### pop requested out of 205 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.676247,-0.181495,-0.713968) -Old Polarization: (-0.722535,-0.352387,-0.594783) -New Polarization: (-0.708776,-0.303087,-0.601524) -Polarization Change: (-0.724882,-0.309975,-0.615193) -New Momentum Direction: (0.639,-0.618496,-0.473929) -Momentum Change: (0.634115,-0.613768,-0.470306) - Photon at Boundary! - Old Momentum Direction: (0.634115,-0.613768,-0.470306) - Old Polarization: (-0.724882,-0.309975,-0.615193) - New Momentum Direction: (-0.634115,-0.613768,-0.470306) - New Polarization: (-0.724882,0.309975,0.615193) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 551, parentID 1) is processed with stopping code 2 -### pop requested out of 204 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.634036,0.697539,-0.333824) - Old Polarization: (-0.768446,0.616633,-0.171037) - New Momentum Direction: (0.634036,-0.697539,-0.333824) - New Polarization: (-0.118783,-0.514411,0.849277) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.634036,-0.697539,-0.333824) - Old Polarization: (-0.118783,-0.514411,0.849277) - New Momentum Direction: (-0.634036,-0.697539,-0.333824) - New Polarization: (-0.118783,0.514411,-0.849277) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.634036,-0.697539,-0.333824) - Old Polarization: (-0.118783,0.514411,-0.849277) - New Momentum Direction: (-0.634036,-0.697539,0.333824) - New Polarization: (0.118783,-0.514411,-0.849277) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.634036,-0.697539,0.333824) - Old Polarization: (0.118783,-0.514411,-0.849277) - New Momentum Direction: (-0.858723,-0.241202,0.452124) - New Polarization: (-0.426541,0.825423,-0.369782) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 550, parentID 1) is processed with stopping code 2 -### pop requested out of 203 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.673469,-0.203448,-0.710667) - Old Polarization: (-0.724619,-0.371797,-0.580253) - New Momentum Direction: (0.915337,-0.276514,-0.292743) - New Polarization: (0.138686,-0.466029,0.873833) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 549, parentID 1) is processed with stopping code 2 -### pop requested out of 202 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.671705,-0.184579,-0.717456) - Old Polarization: (-0.726737,-0.352105,-0.58981) - New Momentum Direction: (0.671705,-0.184579,0.717456) - New Polarization: (-0.206501,0.883428,0.420611) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.671705,-0.184579,0.717456) - Old Polarization: (-0.206501,0.883428,0.420611) - New Momentum Direction: (-0.671705,-0.184579,0.717456) - New Polarization: (-0.206501,-0.883428,-0.420611) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.671705,-0.184579,0.717456) - Old Polarization: (-0.206501,-0.883428,-0.420611) - New Momentum Direction: (-0.671705,-0.184579,-0.717456) - New Polarization: (-0.0146089,0.971576,-0.236278) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.671705,-0.184579,-0.717456) - Old Polarization: (-0.0146089,0.971576,-0.236278) - New Momentum Direction: (0.671705,-0.184579,-0.717456) - New Polarization: (-0.0146089,-0.971576,0.236278) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.671705,-0.184579,-0.717456) - Old Polarization: (-0.0146089,-0.971576,0.236278) - New Momentum Direction: (0.671705,0.184579,-0.717456) - New Polarization: (0.0146089,-0.971576,-0.236278) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.671705,0.184579,-0.717456) - Old Polarization: (0.0146089,-0.971576,-0.236278) - New Momentum Direction: (0.911622,0.250505,-0.325873) - New Polarization: (0.383414,-0.803966,0.454567) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 548, parentID 1) is processed with stopping code 2 -### pop requested out of 201 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 547, parentID 1) is processed with stopping code 2 -### pop requested out of 200 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.730993,-0.44329,-0.518789) - Old Polarization: (-0.661837,-0.645728,-0.380797) - New Momentum Direction: (0.39529,-0.596712,-0.698341) - New Polarization: (-0.905439,-0.381143,-0.186841) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 546, parentID 1) is processed with stopping code 2 -### pop requested out of 199 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.75388,0.514526,0.408568) - Old Polarization: (-0.636524,0.417889,0.648233) - New Momentum Direction: (0.460295,0.695236,0.552065) - New Polarization: (-0.874315,0.247169,0.417709) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 545, parentID 1) is processed with stopping code 2 -### pop requested out of 198 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.747194,0.531245,0.399351) - Old Polarization: (-0.644129,0.430849,0.632034) - New Momentum Direction: (0.430662,0.721412,0.542305) - New Polarization: (-0.889381,0.237102,0.390877) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 544, parentID 1) is processed with stopping code 2 -### pop requested out of 197 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.617902,0.484968,-0.618872) - Old Polarization: (-0.786252,0.383116,-0.484798) - New Momentum Direction: (-0.617902,0.484968,-0.618872) - New Polarization: (-0.786252,-0.383116,0.484798) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.617902,0.484968,-0.618872) - Old Polarization: (-0.786252,-0.383116,0.484798) - New Momentum Direction: (-0.617902,0.484968,0.618872) - New Polarization: (0.786252,0.383116,0.484798) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.617902,0.484968,0.618872) - Old Polarization: (0.786252,0.383116,0.484798) - New Momentum Direction: (-0.617902,-0.484968,0.618872) - New Polarization: (-0.786252,0.383116,-0.484798) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.617902,-0.484968,0.618872) - Old Polarization: (-0.786252,0.383116,-0.484798) - New Momentum Direction: (-0.617902,-0.484968,-0.618872) - New Polarization: (0.786252,-0.383116,-0.484798) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.617902,-0.484968,-0.618872) - Old Polarization: (0.786252,-0.383116,-0.484798) - New Momentum Direction: (-0.617902,-0.484968,0.618872) - New Polarization: (-0.786252,0.383116,-0.484798) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.617902,-0.484968,0.618872) - Old Polarization: (-0.786252,0.383116,-0.484798) - New Momentum Direction: (0.617902,-0.484968,0.618872) - New Polarization: (-0.786252,-0.383116,0.484798) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.617902,-0.484968,0.618872) - Old Polarization: (-0.786252,-0.383116,0.484798) - New Momentum Direction: (0.617902,0.484968,0.618872) - New Polarization: (0.786252,-0.383116,-0.484798) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.617902,0.484968,0.618872) - Old Polarization: (0.786252,-0.383116,-0.484798) - New Momentum Direction: (0.617902,0.484968,-0.618872) - New Polarization: (-0.786252,0.383116,-0.484798) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.617902,0.484968,-0.618872) - Old Polarization: (-0.786252,0.383116,-0.484798) - New Momentum Direction: (-0.617902,0.484968,-0.618872) - New Polarization: (-0.786252,-0.383116,0.484798) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.617902,0.484968,-0.618872) - Old Polarization: (-0.786252,-0.383116,0.484798) - New Momentum Direction: (-0.617902,-0.484968,-0.618872) - New Polarization: (0.786252,-0.383116,-0.484798) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.617902,-0.484968,-0.618872) - Old Polarization: (0.786252,-0.383116,-0.484798) - New Momentum Direction: (-0.617902,-0.484968,0.618872) - New Polarization: (-0.786252,0.383116,-0.484798) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.617902,-0.484968,0.618872) - Old Polarization: (-0.786252,0.383116,-0.484798) - New Momentum Direction: (0.617902,-0.484968,0.618872) - New Polarization: (-0.786252,-0.383116,0.484798) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 543, parentID 1) is processed with stopping code 2 -### pop requested out of 196 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.656141,-0.08287,-0.750074) - Old Polarization: (-0.7436,-0.240382,-0.62392) - New Momentum Direction: (0.891406,-0.112584,-0.438999) - New Polarization: (0.394485,-0.284104,0.87388) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 542, parentID 1) is processed with stopping code 2 -### pop requested out of 195 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.801231,0.250059,0.543599) - Old Polarization: (-0.583698,0.126787,0.802011) - New Momentum Direction: (0.591632,0.336922,0.732431) - New Polarization: (-0.796073,0.100541,0.596791) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 541, parentID 1) is processed with stopping code 2 -### pop requested out of 194 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.617094,0.546077,-0.566564) - Old Polarization: (-0.786588,0.448017,-0.424924) - New Momentum Direction: (-0.617094,0.546077,-0.566564) - New Polarization: (-0.786588,-0.448017,0.424924) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.617094,0.546077,-0.566564) - Old Polarization: (-0.786588,-0.448017,0.424924) - New Momentum Direction: (-0.617094,0.546077,0.566564) - New Polarization: (0.786588,0.448017,0.424924) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.617094,0.546077,0.566564) - Old Polarization: (0.786588,0.448017,0.424924) - New Momentum Direction: (-0.617094,-0.546077,0.566564) - New Polarization: (-0.786588,0.448017,-0.424924) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.617094,-0.546077,0.566564) - Old Polarization: (-0.786588,0.448017,-0.424924) - New Momentum Direction: (0.617094,-0.546077,0.566564) - New Polarization: (-0.786588,-0.448017,0.424924) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.617094,-0.546077,0.566564) - Old Polarization: (-0.786588,-0.448017,0.424924) - New Momentum Direction: (0.617094,-0.546077,-0.566564) - New Polarization: (0.786588,0.448017,0.424924) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.617094,-0.546077,-0.566564) - Old Polarization: (0.786588,0.448017,0.424924) - New Momentum Direction: (0.617094,0.546077,-0.566564) - New Polarization: (-0.786588,0.448017,-0.424924) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.617094,0.546077,-0.566564) - Old Polarization: (-0.786588,0.448017,-0.424924) - New Momentum Direction: (-0.617094,0.546077,-0.566564) - New Polarization: (-0.786588,-0.448017,0.424924) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.617094,0.546077,-0.566564) - Old Polarization: (-0.786588,-0.448017,0.424924) - New Momentum Direction: (-0.617094,0.546077,0.566564) - New Polarization: (0.786588,0.448017,0.424924) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.617094,0.546077,0.566564) - Old Polarization: (0.786588,0.448017,0.424924) - New Momentum Direction: (-0.617094,-0.546077,0.566564) - New Polarization: (-0.786588,0.448017,-0.424924) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 540, parentID 1) is processed with stopping code 2 -### pop requested out of 193 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 539, parentID 1) is processed with stopping code 2 -### pop requested out of 192 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 538, parentID 1) is processed with stopping code 2 -### pop requested out of 191 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.775165,-0.564796,-0.283063) - Old Polarization: (-0.612572,-0.781539,-0.118119) - New Momentum Direction: (0.526431,-0.760099,-0.380945) - New Polarization: (-0.837182,-0.541575,-0.0763062) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 537, parentID 1) is processed with stopping code 2 -### pop requested out of 190 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.643055,0.705642,-0.297574) - Old Polarization: (-0.759986,0.635881,-0.134448) - New Momentum Direction: (0.643055,-0.705642,-0.297574) - New Polarization: (-0.177109,-0.515067,0.838653) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.643055,-0.705642,-0.297574) - Old Polarization: (-0.177109,-0.515067,0.838653) - New Momentum Direction: (-0.643055,-0.705642,-0.297574) - New Polarization: (-0.177109,0.515067,-0.838653) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.643055,-0.705642,-0.297574) - Old Polarization: (-0.177109,0.515067,-0.838653) - New Momentum Direction: (-0.643055,-0.705642,0.297574) - New Polarization: (0.177109,-0.515067,-0.838653) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.643055,-0.705642,0.297574) - Old Polarization: (0.177109,-0.515067,-0.838653) - New Momentum Direction: (-0.865171,-0.30198,0.400359) - New Polarization: (-0.454823,0.808791,-0.372817) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 536, parentID 1) is processed with stopping code 2 -### pop requested out of 189 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.6666,-0.114866,-0.736512) - Old Polarization: (-0.733277,-0.278629,-0.620218) - New Momentum Direction: (0.89917,-0.154941,-0.40925) - New Polarization: (0.338415,-0.346702,0.874799) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 535, parentID 1) is processed with stopping code 2 -### pop requested out of 188 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 534, parentID 1) is processed with stopping code 2 -### pop requested out of 187 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.81122,-0.584543,0.015218) - Old Polarization: (-0.573892,-0.790909,0.212395) - New Momentum Direction: (0.609078,-0.792842,0.0206408) - New Polarization: (-0.785668,-0.599601,0.15233) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 533, parentID 1) is processed with stopping code 2 -### pop requested out of 186 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.664723,-0.088297,-0.741854) - Old Polarization: (-0.735714,-0.249992,-0.629467) - New Momentum Direction: (0.89478,-0.118856,-0.430396) - New Polarization: (0.381493,-0.297372,0.875233) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 532, parentID 1) is processed with stopping code 2 -### pop requested out of 185 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.777737,0.369395,0.508599) - Old Polarization: (-0.610847,0.25326,0.75015) - New Momentum Direction: (0.519646,0.502083,0.691289) - New Polarization: (-0.842559,0.167011,0.512056) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 531, parentID 1) is processed with stopping code 2 -### pop requested out of 184 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.707509,-0.37096,-0.601515) -Old Polarization: (-0.687623,-0.557806,-0.464786) -New Polarization: (-0.843838,-0.158344,0.205867) -Polarization Change: (-0.955755,-0.179345,0.23317) -New Momentum Direction: (0.242222,-0.911422,0.37912) -Momentum Change: (0.238311,-0.896705,0.372998) - Photon at Boundary! - Old Momentum Direction: (0.238311,-0.896705,0.372998) - Old Polarization: (-0.955755,-0.179345,0.23317) - New Momentum Direction: (0.322927,-0.800157,0.505437) - New Polarization: (-0.536354,0.285285,0.794315) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 530, parentID 1) is processed with stopping code 2 -### pop requested out of 183 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.782195,-0.586165,-0.211143) - Old Polarization: (-0.605521,-0.795009,-0.0361295) - New Momentum Direction: (0.536621,-0.793889,-0.285968) - New Polarization: (-0.832011,-0.554306,-0.0224406) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 529, parentID 1) is processed with stopping code 2 -### pop requested out of 182 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.815123,-0.575973,0.0618892) -Old Polarization: (-0.570023,-0.778464,0.262808) -New Polarization: (0.07008,-0.81144,0.298719) -Polarization Change: (0.0807827,-0.935363,0.34434) -New Momentum Direction: (-0.927681,0.0366206,0.435391) -Momentum Change: (-0.904679,0.0357126,0.424595) - Photon at Boundary! - Old Momentum Direction: (-0.904679,0.0357126,0.424595) - Old Polarization: (0.0807827,-0.935363,0.34434) - New Momentum Direction: (-0.815285,0.0485332,0.577022) - New Polarization: (0.213981,-0.900698,0.378095) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 528, parentID 1) is processed with stopping code 2 -### pop requested out of 181 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.62854,0.232032,-0.74236) - Old Polarization: (-0.774944,0.105435,-0.623173) - New Momentum Direction: (0.849721,0.313684,-0.423765) - New Polarization: (0.293871,0.385535,0.874644) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 527, parentID 1) is processed with stopping code 2 -### pop requested out of 180 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.665043,0.743555,-0.0695921) - Old Polarization: (-0.734429,0.668071,0.119564) - New Momentum Direction: (0.900257,0.425044,-0.0942056) - New Polarization: (0.425569,-0.904794,-0.0154497) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 526, parentID 1) is processed with stopping code 2 -### pop requested out of 179 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.714631,-0.400915,-0.573209) - Old Polarization: (-0.679812,-0.591113,-0.434097) - New Momentum Direction: (0.31964,-0.543077,-0.776465) - New Polarization: (-0.935713,-0.309978,-0.16839) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 525, parentID 1) is processed with stopping code 2 -### pop requested out of 178 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.724324,0.625997,0.288933) - Old Polarization: (-0.669154,0.537324,0.513338) - New Momentum Direction: (0.35666,0.848241,0.391511) - New Polarization: (-0.921724,0.251142,0.295554) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 524, parentID 1) is processed with stopping code 2 -### pop requested out of 177 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.78947,-0.592567,-0.160005) - Old Polarization: (-0.597564,-0.801568,0.0201498) - New Momentum Direction: (0.55545,-0.802798,-0.216772) - New Polarization: (-0.820545,-0.571418,0.0136631) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 523, parentID 1) is processed with stopping code 2 -### pop requested out of 176 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.837281,-0.454954,0.303278) - Old Polarization: (-0.545035,-0.650276,0.529224) - New Momentum Direction: (0.671733,-0.616393,0.410895) - New Polarization: (-0.73959,-0.526419,0.419392) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 522, parentID 1) is processed with stopping code 2 -### pop requested out of 175 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.790602,-0.584799,-0.181543) - Old Polarization: (-0.595392,-0.803421,-0.00483659) - New Momentum Direction: (0.566175,-0.787225,-0.244384) - New Polarization: (-0.812633,-0.58275,-0.00547137) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 521, parentID 1) is processed with stopping code 2 -### pop requested out of 174 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.616394,0.469762,-0.631967) - Old Polarization: (-0.787432,0.364705,-0.496931) - New Momentum Direction: (0.616394,0.469762,0.631967) - New Polarization: (0.787432,-0.364705,-0.496931) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.616394,0.469762,0.631967) - Old Polarization: (0.787432,-0.364705,-0.496931) - New Momentum Direction: (-0.616394,0.469762,0.631967) - New Polarization: (0.787432,0.364705,0.496931) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.616394,0.469762,0.631967) - Old Polarization: (0.787432,0.364705,0.496931) - New Momentum Direction: (-0.616394,-0.469762,0.631967) - New Polarization: (-0.787432,0.364705,-0.496931) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.616394,-0.469762,0.631967) - Old Polarization: (-0.787432,0.364705,-0.496931) - New Momentum Direction: (0.616394,-0.469762,0.631967) - New Polarization: (-0.787432,-0.364705,0.496931) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.616394,-0.469762,0.631967) - Old Polarization: (-0.787432,-0.364705,0.496931) - New Momentum Direction: (-0.616394,-0.469762,0.631967) - New Polarization: (-0.787432,0.364705,-0.496931) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.616394,-0.469762,0.631967) - Old Polarization: (-0.787432,0.364705,-0.496931) - New Momentum Direction: (-0.616394,-0.469762,-0.631967) - New Polarization: (0.787432,-0.364705,-0.496931) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 520, parentID 1) is processed with stopping code 2 -### pop requested out of 173 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.79723,-0.592864,-0.113742) - Old Polarization: (-0.5887,-0.805235,0.0709096) - New Momentum Direction: (0.57781,-0.801553,-0.15378) - New Polarization: (-0.805913,-0.590108,0.0477168) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 519, parentID 1) is processed with stopping code 2 -### pop requested out of 172 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.664139,0.740798,-0.100684) - Old Polarization: (-0.736077,0.671501,0.0853063) - New Momentum Direction: (0.895488,0.423877,-0.135757) - New Polarization: (0.416357,-0.905577,-0.0811046) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 518, parentID 1) is processed with stopping code 2 -### pop requested out of 171 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.74696,-0.521397,-0.412547) - Old Polarization: (-0.644364,-0.72062,-0.255933) - New Momentum Direction: (0.430767,-0.707722,-0.559974) - New Polarization: (-0.889302,-0.43847,-0.129947) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 517, parentID 1) is processed with stopping code 2 -### pop requested out of 170 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.639483,0.0697609,-0.765633) - Old Polarization: (-0.762103,-0.0736911,-0.643249) - New Momentum Direction: (0.867513,0.0946365,-0.488328) - New Polarization: (0.484736,0.0593921,0.872642) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 516, parentID 1) is processed with stopping code 2 -### pop requested out of 169 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 515, parentID 1) is processed with stopping code 2 -### pop requested out of 168 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.632032,0.645054,-0.429465) - Old Polarization: (-0.772424,0.569023,-0.282088) - New Momentum Direction: (0.632032,-0.645054,-0.429465) - New Polarization: (0.772424,0.569023,0.282088) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.632032,-0.645054,-0.429465) - Old Polarization: (0.772424,0.569023,0.282088) - New Momentum Direction: (-0.632032,-0.645054,-0.429465) - New Polarization: (0.772424,-0.569023,-0.282088) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 514, parentID 1) is processed with stopping code 2 -### pop requested out of 167 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 513, parentID 1) is processed with stopping code 2 -### pop requested out of 166 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.628239,0.68564,-0.367713) - Old Polarization: (-0.77402,0.598664,-0.206143) - New Momentum Direction: (0.8537,0.146696,-0.499677) - New Polarization: (-0.077898,-0.912737,-0.401052) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 512, parentID 1) is processed with stopping code 2 -### pop requested out of 165 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.839594,-0.272868,0.469707) - Old Polarization: (-0.542945,-0.448781,0.709793) - New Momentum Direction: (0.675661,-0.370317,0.637454) - New Polarization: (-0.737026,-0.358746,0.572795) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 511, parentID 1) is processed with stopping code 2 -### pop requested out of 164 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 510, parentID 1) is processed with stopping code 2 -### pop requested out of 163 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.663865,-0.116911,-0.738658) - Old Polarization: (-0.735728,-0.279232,-0.617036) - New Momentum Direction: (0.898652,-0.158258,-0.409121) - New Polarization: (0.336598,-0.349294,0.874469) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 509, parentID 1) is processed with stopping code 2 -### pop requested out of 162 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.819247,0.0678354,0.569415) - Old Polarization: (-0.564846,-0.0758231,0.821706) - New Momentum Direction: (0.62962,0.0919039,0.771448) - New Polarization: (-0.770974,-0.0485316,0.635015) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 508, parentID 1) is processed with stopping code 2 -### pop requested out of 161 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.732628,-0.454237,-0.506878) - Old Polarization: (-0.660012,-0.656038,-0.366058) - New Momentum Direction: (0.397715,-0.612325,-0.683287) - New Polarization: (-0.904361,-0.387247,-0.179363) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 507, parentID 1) is processed with stopping code 2 -### pop requested out of 160 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.649914,0.737703,-0.182774) - Old Polarization: (-0.750933,0.660361,-0.00487705) - New Momentum Direction: (0.880469,0.404305,-0.247613) - New Polarization: (0.34673,-0.90532,-0.245303) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 506, parentID 1) is processed with stopping code 2 -### pop requested out of 159 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.838921,-0.353178,0.414099) - Old Polarization: (-0.54421,-0.534677,0.646496) - New Momentum Direction: (0.672516,-0.480255,0.563096) - New Polarization: (-0.740052,-0.429513,0.517533) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 505, parentID 1) is processed with stopping code 2 -### pop requested out of 158 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.809185,0.159349,0.565534) - Old Polarization: (-0.575942,0.0246989,0.817118) - New Momentum Direction: (0.605055,0.21593,0.766344) - New Polarization: (-0.788211,0.0265764,0.614831) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 504, parentID 1) is processed with stopping code 2 -### pop requested out of 157 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.788472,-0.591208,-0.169664) - Old Polarization: (-0.598578,-0.801009,0.00943457) - New Momentum Direction: (0.553567,-0.800494,-0.229724) - New Polarization: (-0.821614,-0.570009,0.00639982) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 503, parentID 1) is processed with stopping code 2 -### pop requested out of 156 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.810899,0.132648,0.569954) - Old Polarization: (-0.574488,-0.00493094,0.818498) - New Momentum Direction: (0.607017,0.180137,0.774003) - New Polarization: (-0.78737,0.00444447,0.616465) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 502, parentID 1) is processed with stopping code 2 -### pop requested out of 155 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.629133,0.667175,-0.398835) - Old Polarization: (-0.774059,0.584544,-0.243189) - New Momentum Direction: (0.629133,-0.667175,-0.398835) - New Polarization: (0.774059,0.584544,0.243189) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.629133,-0.667175,-0.398835) - Old Polarization: (0.774059,0.584544,0.243189) - New Momentum Direction: (-0.629133,-0.667175,-0.398835) - New Polarization: (0.774059,-0.584544,-0.243189) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 501, parentID 1) is processed with stopping code 2 -### pop requested out of 154 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.807308,0.170676,0.56491) - Old Polarization: (-0.578163,0.0369452,0.815085) - New Momentum Direction: (0.599536,0.231474,0.766144) - New Polarization: (-0.792153,0.0349846,0.609319) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 500, parentID 1) is processed with stopping code 2 -### pop requested out of 153 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 499, parentID 1) is processed with stopping code 2 -### pop requested out of 152 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.806416,-0.590757,-0.0264345) - Old Polarization: (-0.579125,-0.797999,0.166768) - New Momentum Direction: (0.597414,-0.801131,-0.0358481) - New Polarization: (-0.793565,-0.59703,0.117512) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 498, parentID 1) is processed with stopping code 2 -### pop requested out of 151 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.647987,0.730522,-0.215525) - Old Polarization: (-0.753509,0.656125,-0.0415274) - New Momentum Direction: (0.875853,0.384729,-0.291315) - New Polarization: (0.298077,-0.906043,-0.300393) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 497, parentID 1) is processed with stopping code 2 -### pop requested out of 150 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.726453,-0.463401,-0.50747) - Old Polarization: (-0.666803,-0.653955,-0.357375) - New Momentum Direction: (0.354336,-0.630565,-0.690531) - New Polarization: (-0.922655,-0.355908,-0.148446) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 496, parentID 1) is processed with stopping code 2 -### pop requested out of 149 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.838541,-0.251266,0.483439) -Old Polarization: (-0.544336,-0.424429,0.723573) -New Polarization: (-0.769643,-0.372804,0.14179) -Polarization Change: (-0.887857,-0.430065,0.163568) -New Momentum Direction: (-0.0701306,0.439087,1.0368) -Momentum Change: (-0.0621654,0.389217,0.919046) - Photon at Boundary! - Old Momentum Direction: (-0.0621654,0.389217,0.919046) - Old Polarization: (-0.887857,-0.430065,0.163568) - New Momentum Direction: (-0.0844422,0.528692,0.844603) - New Polarization: (-0.948331,0.217526,-0.230977) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 495, parentID 1) is processed with stopping code 2 -### pop requested out of 148 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.719013,-0.400538,-0.567969) - Old Polarization: (-0.675144,-0.596475,-0.434049) - New Momentum Direction: (0.349889,-0.539888,-0.765571) - New Polarization: (-0.924502,-0.330936,-0.189146) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 494, parentID 1) is processed with stopping code 2 -### pop requested out of 147 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 493, parentID 1) is processed with stopping code 2 -### pop requested out of 146 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.637649,0.0791434,-0.766251) - Old Polarization: (-0.763884,-0.0634217,-0.64223) - New Momentum Direction: (0.865937,0.107478,-0.488469) - New Polarization: (0.481996,0.0814407,0.87238) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 492, parentID 1) is processed with stopping code 2 -### pop requested out of 145 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 491, parentID 1) is processed with stopping code 2 -### pop requested out of 144 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.833552,-0.504945,0.224103) - Old Polarization: (-0.548552,-0.708467,0.444033) - New Momentum Direction: (0.665105,-0.682548,0.302926) - New Polarization: (-0.744045,-0.571227,0.346549) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 490, parentID 1) is processed with stopping code 2 -### pop requested out of 143 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.628703,0.628634,-0.457769) - Old Polarization: (-0.775715,0.548421,-0.31225) - New Momentum Direction: (-0.628703,0.628634,-0.457769) - New Polarization: (-0.775715,-0.548421,0.31225) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.628703,0.628634,-0.457769) - Old Polarization: (-0.775715,-0.548421,0.31225) - New Momentum Direction: (-0.628703,-0.628634,-0.457769) - New Polarization: (0.775715,-0.548421,-0.31225) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.628703,-0.628634,-0.457769) - Old Polarization: (0.775715,-0.548421,-0.31225) - New Momentum Direction: (-0.628703,-0.628634,0.457769) - New Polarization: (-0.775715,0.548421,-0.31225) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.628703,-0.628634,0.457769) - Old Polarization: (-0.775715,0.548421,-0.31225) - New Momentum Direction: (0.628703,-0.628634,0.457769) - New Polarization: (-0.775715,-0.548421,0.31225) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.628703,-0.628634,0.457769) - Old Polarization: (-0.775715,-0.548421,0.31225) - New Momentum Direction: (0.628703,0.628634,0.457769) - New Polarization: (0.775715,-0.548421,-0.31225) - *** TotalInternalReflection *** -No Absorbtion length specified -Scattering Photon! -Old Momentum Direction: (0.628703,0.628634,0.457769) -Old Polarization: (0.775715,-0.548421,-0.31225) -New Polarization: (0.0887166,-0.362774,-0.813842) -Polarization Change: (0.0990759,-0.405135,-0.908873) -New Momentum Direction: (0.542948,-0.64411,0.838374) -Momentum Change: (0.456833,-0.54195,0.705403) - -** Photon Absorbed! ** -Track (trackID 489, parentID 1) is processed with stopping code 2 -### pop requested out of 142 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.793154,0.314839,0.521328) - Old Polarization: (-0.592379,0.200079,0.78042) - New Momentum Direction: (0.573944,0.423334,0.700982) - New Polarization: (-0.807399,0.149612,0.570722) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 488, parentID 1) is processed with stopping code 2 -### pop requested out of 141 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.625265,0.66498,-0.408467) - Old Polarization: (-0.777383,0.576785,-0.250988) - New Momentum Direction: (0.625265,-0.66498,-0.408467) - New Polarization: (0.777383,0.576785,0.250988) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.625265,-0.66498,-0.408467) - Old Polarization: (0.777383,0.576785,0.250988) - New Momentum Direction: (-0.625265,-0.66498,-0.408467) - New Polarization: (0.777383,-0.576785,-0.250988) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 487, parentID 1) is processed with stopping code 2 -### pop requested out of 140 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.618488,0.399065,-0.67692) - Old Polarization: (-0.785441,0.288112,-0.54779) - New Momentum Direction: (0.837985,0.540691,-0.0737164) - New Polarization: (-0.194891,0.422717,0.885058) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 486, parentID 1) is processed with stopping code 2 -### pop requested out of 139 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.636731,0.716172,-0.285782) - Old Polarization: (-0.764943,0.633364,-0.117103) - New Momentum Direction: (0.864469,0.319611,-0.387996) - New Polarization: (0.160099,-0.906708,-0.390192) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 485, parentID 1) is processed with stopping code 2 -### pop requested out of 138 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.737675,0.584631,0.337701) - Old Polarization: (-0.654427,0.496163,0.570568) - New Momentum Direction: (0.410826,0.789471,0.456023) - New Polarization: (-0.898434,0.265502,0.34975) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 484, parentID 1) is processed with stopping code 2 -### pop requested out of 137 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.83723,-0.243158,0.489817) - Old Polarization: (-0.54624,-0.414218,0.728043) - New Momentum Direction: (0.668023,-0.330883,0.66653) - New Polarization: (-0.743721,-0.326963,0.583073) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 483, parentID 1) is processed with stopping code 2 -### pop requested out of 136 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.841657,-0.295989,0.451669) - Old Polarization: (-0.539922,-0.476612,0.693776) - New Momentum Direction: (0.682575,-0.400571,0.611256) - New Polarization: (-0.730752,-0.385102,0.563647) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 482, parentID 1) is processed with stopping code 2 -### pop requested out of 135 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 481, parentID 1) is processed with stopping code 2 -### pop requested out of 134 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.614684,0.432597,-0.659563) - Old Polarization: (-0.788643,0.321869,-0.523872) - New Momentum Direction: (0.614684,0.432597,0.659563) - New Polarization: (0.788643,-0.321869,-0.523872) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.614684,0.432597,0.659563) - Old Polarization: (0.788643,-0.321869,-0.523872) - New Momentum Direction: (-0.614684,0.432597,0.659563) - New Polarization: (0.788643,0.321869,0.523872) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.614684,0.432597,0.659563) - Old Polarization: (0.788643,0.321869,0.523872) - New Momentum Direction: (-0.614684,-0.432597,0.659563) - New Polarization: (-0.788643,0.321869,-0.523872) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.614684,-0.432597,0.659563) - Old Polarization: (-0.788643,0.321869,-0.523872) - New Momentum Direction: (-0.614684,-0.432597,-0.659563) - New Polarization: (0.788643,-0.321869,-0.523872) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.614684,-0.432597,-0.659563) - Old Polarization: (0.788643,-0.321869,-0.523872) - New Momentum Direction: (0.614684,-0.432597,-0.659563) - New Polarization: (0.788643,0.321869,0.523872) - *** TotalInternalReflection *** -No Absorbtion length specified -Scattering Photon! -Old Momentum Direction: (0.614684,-0.432597,-0.659563) -Old Polarization: (0.788643,0.321869,0.523872) -New Polarization: (0.516944,0.704284,-0.159119) -Polarization Change: (0.582136,0.793102,-0.179186) -New Momentum Direction: (0.397197,-0.451306,-0.903022) -Momentum Change: (0.366132,-0.416009,-0.832396) - Photon at Boundary! - Old Momentum Direction: (0.366132,-0.416009,-0.832396) - Old Polarization: (0.582136,0.793102,-0.179186) - New Momentum Direction: (0.366132,0.416009,-0.832396) - New Polarization: (-0.582136,0.793102,0.179186) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.366132,0.416009,-0.832396) - Old Polarization: (-0.582136,0.793102,0.179186) - New Momentum Direction: (0.497852,0.565672,-0.657388) - New Polarization: (-0.532325,0.797731,0.283295) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 480, parentID 1) is processed with stopping code 2 -### pop requested out of 133 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.814333,-0.580144,0.0171529) - Old Polarization: (-0.569575,-0.793119,0.215749) - New Momentum Direction: (0.621064,-0.783417,0.0231629) - New Polarization: (-0.77626,-0.610775,0.156123) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 479, parentID 1) is processed with stopping code 2 -### pop requested out of 132 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.628196,0.663154,-0.406936) - Old Polarization: (-0.775003,0.579605,-0.251848) - New Momentum Direction: (0.628196,-0.663154,-0.406936) - New Polarization: (0.775003,0.579605,0.251848) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.628196,-0.663154,-0.406936) - Old Polarization: (0.775003,0.579605,0.251848) - New Momentum Direction: (-0.628196,-0.663154,-0.406936) - New Polarization: (0.775003,-0.579605,-0.251848) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 478, parentID 1) is processed with stopping code 2 -### pop requested out of 131 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.624301,0.627267,-0.465601) - Old Polarization: (-0.779384,0.540578,-0.31676) - New Momentum Direction: (0.624301,-0.627267,-0.465601) - New Polarization: (0.779384,0.540578,0.31676) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.624301,-0.627267,-0.465601) - Old Polarization: (0.779384,0.540578,0.31676) - New Momentum Direction: (-0.624301,-0.627267,-0.465601) - New Polarization: (0.779384,-0.540578,-0.31676) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.624301,-0.627267,-0.465601) - Old Polarization: (0.779384,-0.540578,-0.31676) - New Momentum Direction: (-0.624301,-0.627267,0.465601) - New Polarization: (-0.779384,0.540578,-0.31676) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.624301,-0.627267,0.465601) - Old Polarization: (-0.779384,0.540578,-0.31676) - New Momentum Direction: (-0.624301,0.627267,0.465601) - New Polarization: (0.779384,0.540578,0.31676) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.624301,0.627267,0.465601) - Old Polarization: (0.779384,0.540578,0.31676) - New Momentum Direction: (0.624301,0.627267,0.465601) - New Polarization: (0.779384,-0.540578,-0.31676) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.624301,0.627267,0.465601) - Old Polarization: (0.779384,-0.540578,-0.31676) - New Momentum Direction: (0.624301,0.627267,-0.465601) - New Polarization: (-0.779384,0.540578,-0.31676) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.624301,0.627267,-0.465601) - Old Polarization: (-0.779384,0.540578,-0.31676) - New Momentum Direction: (0.624301,-0.627267,-0.465601) - New Polarization: (0.779384,0.540578,0.31676) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.624301,-0.627267,-0.465601) - Old Polarization: (0.779384,0.540578,0.31676) - New Momentum Direction: (-0.624301,-0.627267,-0.465601) - New Polarization: (0.779384,-0.540578,-0.31676) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.624301,-0.627267,-0.465601) - Old Polarization: (0.779384,-0.540578,-0.31676) - New Momentum Direction: (-0.624301,-0.627267,0.465601) - New Polarization: (-0.779384,0.540578,-0.31676) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.624301,-0.627267,0.465601) - Old Polarization: (-0.779384,0.540578,-0.31676) - New Momentum Direction: (-0.624301,0.627267,0.465601) - New Polarization: (0.779384,0.540578,0.31676) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.624301,0.627267,0.465601) - Old Polarization: (0.779384,0.540578,0.31676) - New Momentum Direction: (0.624301,0.627267,0.465601) - New Polarization: (0.779384,-0.540578,-0.31676) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.624301,0.627267,0.465601) - Old Polarization: (0.779384,-0.540578,-0.31676) - New Momentum Direction: (0.624301,-0.627267,0.465601) - New Polarization: (-0.779384,-0.540578,0.31676) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.624301,-0.627267,0.465601) - Old Polarization: (-0.779384,-0.540578,0.31676) - New Momentum Direction: (-0.624301,-0.627267,0.465601) - New Polarization: (-0.779384,0.540578,-0.31676) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.624301,-0.627267,0.465601) - Old Polarization: (-0.779384,0.540578,-0.31676) - New Momentum Direction: (-0.624301,-0.627267,-0.465601) - New Polarization: (0.779384,-0.540578,-0.31676) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.624301,-0.627267,-0.465601) - Old Polarization: (0.779384,-0.540578,-0.31676) - New Momentum Direction: (-0.624301,0.627267,-0.465601) - New Polarization: (-0.779384,-0.540578,0.31676) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.624301,0.627267,-0.465601) - Old Polarization: (-0.779384,-0.540578,0.31676) - New Momentum Direction: (0.624301,0.627267,-0.465601) - New Polarization: (-0.779384,0.540578,-0.31676) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.624301,0.627267,-0.465601) - Old Polarization: (-0.779384,0.540578,-0.31676) - New Momentum Direction: (0.624301,0.627267,0.465601) - New Polarization: (0.779384,-0.540578,-0.31676) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 477, parentID 1) is processed with stopping code 2 -### pop requested out of 130 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.617171,0.428573,-0.659868) - Old Polarization: (-0.786682,0.319883,-0.528021) - New Momentum Direction: (0.617171,0.428573,0.659868) - New Polarization: (0.786682,-0.319883,-0.528021) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.617171,0.428573,0.659868) - Old Polarization: (0.786682,-0.319883,-0.528021) - New Momentum Direction: (-0.617171,0.428573,0.659868) - New Polarization: (0.786682,0.319883,0.528021) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.617171,0.428573,0.659868) - Old Polarization: (0.786682,0.319883,0.528021) - New Momentum Direction: (-0.617171,-0.428573,0.659868) - New Polarization: (-0.786682,0.319883,-0.528021) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.617171,-0.428573,0.659868) - Old Polarization: (-0.786682,0.319883,-0.528021) - New Momentum Direction: (-0.617171,-0.428573,-0.659868) - New Polarization: (0.786682,-0.319883,-0.528021) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.617171,-0.428573,-0.659868) - Old Polarization: (0.786682,-0.319883,-0.528021) - New Momentum Direction: (0.617171,-0.428573,-0.659868) - New Polarization: (0.786682,0.319883,0.528021) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.617171,-0.428573,-0.659868) - Old Polarization: (0.786682,0.319883,0.528021) - New Momentum Direction: (0.617171,0.428573,-0.659868) - New Polarization: (-0.786682,0.319883,-0.528021) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.617171,0.428573,-0.659868) - Old Polarization: (-0.786682,0.319883,-0.528021) - New Momentum Direction: (0.617171,0.428573,0.659868) - New Polarization: (0.786682,-0.319883,-0.528021) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.617171,0.428573,0.659868) - Old Polarization: (0.786682,-0.319883,-0.528021) - New Momentum Direction: (-0.617171,0.428573,0.659868) - New Polarization: (0.786682,0.319883,0.528021) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.617171,0.428573,0.659868) - Old Polarization: (0.786682,0.319883,0.528021) - New Momentum Direction: (-0.617171,0.428573,-0.659868) - New Polarization: (-0.786682,-0.319883,0.528021) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.617171,0.428573,-0.659868) - Old Polarization: (-0.786682,-0.319883,0.528021) - New Momentum Direction: (0.617171,0.428573,-0.659868) - New Polarization: (-0.786682,0.319883,-0.528021) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.617171,0.428573,-0.659868) - Old Polarization: (-0.786682,0.319883,-0.528021) - New Momentum Direction: (0.617171,-0.428573,-0.659868) - New Polarization: (0.786682,0.319883,0.528021) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.617171,-0.428573,-0.659868) - Old Polarization: (0.786682,0.319883,0.528021) - New Momentum Direction: (0.617171,-0.428573,0.659868) - New Polarization: (-0.786682,-0.319883,0.528021) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 476, parentID 1) is processed with stopping code 2 -### pop requested out of 129 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.834535,-0.472328,0.283649) - Old Polarization: (-0.548702,-0.666015,0.505321) - New Momentum Direction: (0.663296,-0.641559,0.385279) - New Polarization: (-0.746805,-0.534327,0.39595) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 475, parentID 1) is processed with stopping code 2 -### pop requested out of 128 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.61588,0.387364,-0.686033) - Old Polarization: (-0.787373,0.272654,-0.552905) - New Momentum Direction: (0.837344,0.526655,-0.146596) - New Polarization: (-0.133881,0.457548,0.879048) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 474, parentID 1) is processed with stopping code 2 -### pop requested out of 127 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.638629,0.704752,-0.308993) -Old Polarization: (-0.763996,0.62869,-0.145115) -New Polarization: (-0.857876,0.0834782,-0.0862583) -Polarization Change: (-0.990352,0.0963692,-0.0995786) -New Momentum Direction: (-0.114457,-0.964885,0.273273) -Momentum Change: (-0.113397,-0.95595,0.270742) - Photon at Boundary! - Old Momentum Direction: (-0.113397,-0.95595,0.270742) - Old Polarization: (-0.990352,0.0963692,-0.0995786) - New Momentum Direction: (-0.153172,-0.91804,0.365706) - New Polarization: (-0.987193,0.158847,-0.0147181) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 473, parentID 1) is processed with stopping code 2 -### pop requested out of 126 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.818392,-0.572302,0.0520179) - Old Polarization: (-0.565026,-0.784861,0.254438) - New Momentum Direction: (0.630969,-0.772623,0.0702256) - New Polarization: (-0.769118,-0.611098,0.187126) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 472, parentID 1) is processed with stopping code 2 -### pop requested out of 125 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 471, parentID 1) is processed with stopping code 2 -### pop requested out of 124 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.838624,-0.289175,0.461614) - Old Polarization: (-0.544563,-0.464815,0.698139) - New Momentum Direction: (0.67174,-0.393268,0.627779) - New Polarization: (-0.740686,-0.37059,0.560399) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 470, parentID 1) is processed with stopping code 2 -### pop requested out of 123 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 469, parentID 1) is processed with stopping code 2 -### pop requested out of 122 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.66138,0.744034,-0.0948159) - Old Polarization: (-0.738408,0.668077,0.0917925) - New Momentum Direction: (0.895585,0.425962,-0.128392) - New Polarization: (0.420287,-0.9047,-0.0698247) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 468, parentID 1) is processed with stopping code 2 -### pop requested out of 121 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.719111,0.636696,0.278383) - Old Polarization: (-0.674804,0.544198,0.498487) - New Momentum Direction: (0.327053,0.86586,0.37858) - New Polarization: (-0.932959,0.232077,0.275188) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 467, parentID 1) is processed with stopping code 2 -### pop requested out of 120 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.675872,-0.215917,-0.704682) - Old Polarization: (-0.72205,-0.385703,-0.574349) - New Momentum Direction: (0.918207,-0.293334,-0.26618) - New Polarization: (0.101512,-0.475292,0.873952) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 466, parentID 1) is processed with stopping code 2 -### pop requested out of 119 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.712625,0.669042,0.211065) - Old Polarization: (-0.68219,0.590674,0.430953) - New Momentum Direction: (0.322254,0.902794,0.284808) - New Polarization: (-0.934924,0.256303,0.245408) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 465, parentID 1) is processed with stopping code 2 -### pop requested out of 118 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.642816,0.0660917,-0.763164) - Old Polarization: (-0.759189,-0.0777864,-0.646205) - New Momentum Direction: (0.868988,0.0893457,-0.4867) - New Polarization: (0.484129,0.0499632,0.873569) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 464, parentID 1) is processed with stopping code 2 -### pop requested out of 117 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.660757,0.745387,-0.0883114) - Old Polarization: (-0.738796,0.666632,0.0989081) - New Momentum Direction: (0.896359,0.426836,-0.1198) - New Polarization: (0.423089,-0.904329,-0.0564336) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 463, parentID 1) is processed with stopping code 2 -### pop requested out of 116 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.81134,0.123336,0.571416) - Old Polarization: (-0.574198,-0.0152218,0.818575) - New Momentum Direction: (0.607116,0.16765,0.776726) - New Polarization: (-0.787525,-0.00331798,0.616274) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 462, parentID 1) is processed with stopping code 2 -### pop requested out of 115 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.780258,-0.584862,-0.221662) - Old Polarization: (-0.607716,-0.79273,-0.0475373) - New Momentum Direction: (-0.780258,-0.584862,-0.221662) - New Polarization: (-0.281873,0.645182,-0.710132) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.780258,-0.584862,-0.221662) - Old Polarization: (-0.281873,0.645182,-0.710132) - New Momentum Direction: (-0.780258,0.584862,-0.221662) - New Polarization: (0.281873,0.645182,0.710132) - *** TotalInternalReflection *** -No Absorbtion length specified -Scattering Photon! -Old Momentum Direction: (-0.780258,0.584862,-0.221662) -Old Polarization: (0.281873,0.645182,0.710132) -New Polarization: (-0.76519,0.365048,0.431433) -Polarization Change: (-0.80439,0.383749,0.453535) -New Momentum Direction: (-0.383654,0.197704,-0.959882) -Momentum Change: (-0.364534,0.187852,-0.912045) - Photon at Boundary! - Old Momentum Direction: (-0.364534,0.187852,-0.912045) - Old Polarization: (-0.80439,0.383749,0.453535) - New Momentum Direction: (-0.493977,0.254556,-0.831377) - New Polarization: (-0.747995,0.363061,0.555599) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 461, parentID 1) is processed with stopping code 2 -### pop requested out of 114 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.816526,0.0985063,0.568842) - Old Polarization: (-0.567693,-0.0420805,0.822164) - New Momentum Direction: (0.623759,0.133368,0.770154) - New Polarization: (-0.774982,-0.0225811,0.63158) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 460, parentID 1) is processed with stopping code 2 -### pop requested out of 113 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.621803,0.30188,-0.722654) - Old Polarization: (-0.78161,0.180935,-0.596949) - New Momentum Direction: (0.843086,0.409311,-0.348813) - New Polarization: (0.134824,0.46703,0.873902) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 459, parentID 1) is processed with stopping code 2 -### pop requested out of 112 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.839651,-0.181888,0.511764) - Old Polarization: (-0.54154,-0.35232,0.763286) - New Momentum Direction: (0.679797,-0.245609,0.691051) - New Polarization: (-0.732295,-0.279025,0.6212) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 458, parentID 1) is processed with stopping code 2 -### pop requested out of 111 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 457, parentID 1) is processed with stopping code 2 -### pop requested out of 110 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.818522,0.108427,0.56415) - Old Polarization: (-0.564461,-0.030765,0.824887) - New Momentum Direction: (0.633155,0.146091,0.760113) - New Polarization: (-0.767045,-0.0131619,0.641459) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 456, parentID 1) is processed with stopping code 2 -### pop requested out of 109 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.845078,-0.377108,0.378989) - Old Polarization: (-0.53437,-0.573129,0.621266) - New Momentum Direction: (0.695078,-0.507097,0.509626) - New Polarization: (-0.718742,-0.473775,0.508868) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 455, parentID 1) is processed with stopping code 2 -### pop requested out of 108 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.617918,0.378136,-0.68934) - Old Polarization: (-0.785689,0.264084,-0.559422) - New Momentum Direction: (0.838394,0.513057,-0.184031) - New Polarization: (-0.0967692,0.472375,0.87607) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 454, parentID 1) is processed with stopping code 2 -### pop requested out of 107 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.614929,0.39532,-0.682337) -Old Polarization: (-0.788186,0.280687,-0.547702) -New Polarization: (-0.734402,0.211356,-0.58228) -Polarization Change: (-0.764394,0.219987,-0.606059) -New Momentum Direction: (-0.481915,0.375581,0.84217) -Momentum Change: (-0.463176,0.360976,0.809422) - -** Photon Absorbed! ** -Track (trackID 453, parentID 1) is processed with stopping code 2 -### pop requested out of 106 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.83577,-0.095662,0.540682) - Old Polarization: (-0.545463,-0.257486,0.797603) - New Momentum Direction: (0.672213,-0.128987,0.729035) - New Polarization: (-0.737831,-0.198007,0.64529) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 452, parentID 1) is processed with stopping code 2 -### pop requested out of 105 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.615933,0.373136,-0.693827) - Old Polarization: (-0.787186,0.256793,-0.56071) - New Momentum Direction: (0.615933,0.373136,0.693827) - New Polarization: (0.019213,-0.887569,0.460274) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.615933,0.373136,0.693827) - Old Polarization: (0.019213,-0.887569,0.460274) - New Momentum Direction: (-0.615933,0.373136,0.693827) - New Polarization: (0.019213,0.887569,-0.460274) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.615933,0.373136,0.693827) - Old Polarization: (0.019213,0.887569,-0.460274) - New Momentum Direction: (-0.615933,-0.373136,0.693827) - New Polarization: (-0.019213,0.887569,0.460274) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.615933,-0.373136,0.693827) - Old Polarization: (-0.019213,0.887569,0.460274) - New Momentum Direction: (-0.615933,-0.373136,-0.693827) - New Polarization: (0.741345,-0.572489,-0.350235) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.615933,-0.373136,-0.693827) - Old Polarization: (0.741345,-0.572489,-0.350235) - New Momentum Direction: (0.615933,-0.373136,-0.693827) - New Polarization: (0.741345,0.572489,0.350235) - *** TotalInternalReflection *** -No Absorbtion length specified -Scattering Photon! -Old Momentum Direction: (0.615933,-0.373136,-0.693827) -Old Polarization: (0.741345,0.572489,0.350235) -New Polarization: (0.387528,0.661391,0.437832) -Polarization Change: (0.438982,0.749208,0.495966) -New Momentum Direction: (-0.744662,0.0611808,0.77951) -Momentum Change: (-0.68965,0.0566611,0.721923) - Photon at Boundary! - Old Momentum Direction: (-0.68965,0.0566611,0.721923) - Old Polarization: (0.438982,0.749208,0.495966) - New Momentum Direction: (-0.172457,0.0770734,0.981997) - New Polarization: (0.839585,0.53286,0.105624) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 451, parentID 1) is processed with stopping code 2 -### pop requested out of 104 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.760982,-0.550971,-0.342545) - Old Polarization: (-0.62885,-0.756259,-0.180609) - New Momentum Direction: (0.477353,-0.746247,-0.46395) - New Polarization: (-0.865583,-0.490264,-0.102015) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 450, parentID 1) is processed with stopping code 2 -### pop requested out of 103 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.739773,0.561668,0.370493) - Old Polarization: (-0.65226,0.463426,0.599828) - New Momentum Direction: (0.405145,0.763173,0.503412) - New Polarization: (-0.90124,0.240814,0.360242) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 449, parentID 1) is processed with stopping code 2 -### pop requested out of 102 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.64097,0.0460688,-0.766183) - Old Polarization: (-0.760231,-0.0995708,-0.641977) - New Momentum Direction: (0.870543,0.0625691,-0.488099) - New Polarization: (0.488824,0.00419097,0.872373) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 448, parentID 1) is processed with stopping code 2 -### pop requested out of 101 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 447, parentID 1) is processed with stopping code 2 -### pop requested out of 100 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.818667,-0.567857,0.0855759) - Old Polarization: (-0.565802,-0.772097,0.28937) - New Momentum Direction: (0.626816,-0.770468,0.116109) - New Polarization: (-0.773345,-0.597003,0.213366) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 446, parentID 1) is processed with stopping code 2 -### pop requested out of 99 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.623691,0.38638,-0.6795) - Old Polarization: (-0.781218,0.278494,-0.558695) - New Momentum Direction: (0.623691,0.38638,0.6795) - New Polarization: (0.0125339,-0.874123,0.485543) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.623691,0.38638,0.6795) - Old Polarization: (0.0125339,-0.874123,0.485543) - New Momentum Direction: (-0.623691,0.38638,0.6795) - New Polarization: (0.0125339,0.874123,-0.485543) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.623691,0.38638,0.6795) - Old Polarization: (0.0125339,0.874123,-0.485543) - New Momentum Direction: (-0.623691,-0.38638,0.6795) - New Polarization: (-0.0125339,0.874123,0.485543) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 445, parentID 1) is processed with stopping code 2 -### pop requested out of 98 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.659813,0.743604,-0.10817) - Old Polarization: (-0.740172,0.667983,0.0770955) - New Momentum Direction: (0.893254,0.425032,-0.14644) - New Polarization: (0.414438,-0.904778,-0.0980701) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 444, parentID 1) is processed with stopping code 2 -### pop requested out of 97 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.745738,-0.510867,-0.427655) - Old Polarization: (-0.645598,-0.712649,-0.27447) - New Momentum Direction: (0.431615,-0.691691,-0.579026) - New Polarization: (-0.888746,-0.435944,-0.141716) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 443, parentID 1) is processed with stopping code 2 -### pop requested out of 96 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.836316,-0.434151,0.334795) -Old Polarization: (-0.547156,-0.622442,0.55963) -New Polarization: (-0.457967,-0.245715,0.70638) -Polarization Change: (-0.522213,-0.280185,0.805475) -New Momentum Direction: (-0.691826,0.656957,-0.408096) -Momentum Change: (-0.666712,0.633108,-0.393281) - Photon at Boundary! - Old Momentum Direction: (-0.666712,0.633108,-0.393281) - Old Polarization: (-0.522213,-0.280185,0.805475) - New Momentum Direction: (-0.666712,-0.633108,-0.393281) - New Polarization: (0.522213,-0.280185,-0.805475) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.666712,-0.633108,-0.393281) - Old Polarization: (0.522213,-0.280185,-0.805475) - New Momentum Direction: (0.666712,-0.633108,-0.393281) - New Polarization: (0.522213,0.280185,0.805475) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 442, parentID 1) is processed with stopping code 2 -### pop requested out of 95 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.834595,-0.157109,0.527985) -Old Polarization: (-0.548731,-0.321374,0.771759) -New Polarization: (-0.561843,-0.30529,0.752741) -Polarization Change: (-0.568858,-0.309102,0.762139) -New Momentum Direction: (0.685809,0.312257,0.676808) -Momentum Change: (0.677094,0.308289,0.668208) - Photon at Boundary! - Old Momentum Direction: (0.677094,0.308289,0.668208) - Old Polarization: (-0.568858,-0.309102,0.762139) - New Momentum Direction: (0.0120561,0.4189,0.907953) - New Polarization: (-0.924985,-0.340229,0.169253) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 441, parentID 1) is processed with stopping code 2 -### pop requested out of 94 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 440, parentID 1) is processed with stopping code 2 -### pop requested out of 93 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 439, parentID 1) is processed with stopping code 2 -### pop requested out of 92 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.844009,-0.416903,0.337403) - Old Polarization: (-0.535416,-0.618266,0.575393) - New Momentum Direction: (0.693132,-0.560306,0.45346) - New Polarization: (-0.720169,-0.511765,0.468458) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 438, parentID 1) is processed with stopping code 2 -### pop requested out of 91 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.709532,0.667155,0.226868) - Old Polarization: (-0.685268,0.57822,0.442798) - New Momentum Direction: (0.287625,0.90675,0.308343) - New Polarization: (-0.946442,0.219786,0.23652) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 437, parentID 1) is processed with stopping code 2 -### pop requested out of 90 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.700989,0.691915,0.172824) - Old Polarization: (-0.694694,0.607669,0.384888) - New Momentum Direction: (0.252091,0.93886,0.234505) - New Polarization: (-0.957231,0.206376,0.202773) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 436, parentID 1) is processed with stopping code 2 -### pop requested out of 89 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 435, parentID 1) is processed with stopping code 2 -### pop requested out of 88 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.665065,-0.111384,-0.738433) - Old Polarization: (-0.734779,-0.274202,-0.620414) - New Momentum Direction: (0.898198,-0.150429,-0.413052) - New Polarization: (0.345297,-0.340071,0.874712) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 434, parentID 1) is processed with stopping code 2 -### pop requested out of 87 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 433, parentID 1) is processed with stopping code 2 -### pop requested out of 86 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.772632,0.397855,0.494724) - Old Polarization: (-0.616465,0.283974,0.734391) - New Momentum Direction: (0.504734,0.541003,0.672725) - New Polarization: (-0.851101,0.181438,0.492654) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 432, parentID 1) is processed with stopping code 2 -### pop requested out of 85 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 431, parentID 1) is processed with stopping code 2 -### pop requested out of 84 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.668176,0.7437,-0.0212271) - Old Polarization: (-0.730337,0.661079,0.171995) - New Momentum Direction: (0.908519,0.416847,-0.0288624) - New Polarization: (0.417713,-0.904331,0.0877618) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 430, parentID 1) is processed with stopping code 2 -### pop requested out of 83 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.8349,-0.0609235,0.547019) - Old Polarization: (-0.545811,-0.219738,0.808582) - New Momentum Direction: (0.672249,-0.081946,0.735776) - New Polarization: (-0.737103,-0.166714,0.654894) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 429, parentID 1) is processed with stopping code 2 -### pop requested out of 82 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.783012,0.36261,0.505377) - Old Polarization: (-0.604222,0.250521,0.756409) - New Momentum Direction: (0.542886,0.48958,0.682338) - New Polarization: (-0.827721,0.174589,0.533289) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 428, parentID 1) is processed with stopping code 2 -### pop requested out of 81 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.742838,-0.504495,-0.440087) - Old Polarization: (-0.648815,-0.704543,-0.287502) - New Momentum Direction: (0.420828,-0.683596,-0.596322) - New Polarization: (-0.893913,-0.424351,-0.144384) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 427, parentID 1) is processed with stopping code 2 -### pop requested out of 80 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 426, parentID 1) is processed with stopping code 2 -### pop requested out of 79 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 425, parentID 1) is processed with stopping code 2 -### pop requested out of 78 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.742129,0.553332,0.378243) - Old Polarization: (-0.649665,0.455037,0.608997) - New Momentum Direction: (0.414271,0.751379,0.513623) - New Polarization: (-0.897063,0.241717,0.369933) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 424, parentID 1) is processed with stopping code 2 -### pop requested out of 77 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.705272,0.68752,0.17294) - Old Polarization: (-0.690311,0.610445,0.388367) - New Momentum Direction: (0.289823,0.928167,0.233473) - New Polarization: (-0.946079,0.240954,0.216509) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 423, parentID 1) is processed with stopping code 2 -### pop requested out of 76 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.790244,-0.595244,-0.145601) - Old Polarization: (-0.596997,-0.801426,0.036201) - New Momentum Direction: (0.555102,-0.807962,-0.197633) - New Polarization: (-0.821106,-0.570231,0.0249334) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 422, parentID 1) is processed with stopping code 2 -### pop requested out of 75 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.6226,0.491285,-0.609105) - Old Polarization: (-0.782526,0.395568,-0.48081) - New Momentum Direction: (-0.6226,0.491285,-0.609105) - New Polarization: (-0.782526,-0.395568,0.48081) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.6226,0.491285,-0.609105) - Old Polarization: (-0.782526,-0.395568,0.48081) - New Momentum Direction: (-0.6226,0.491285,0.609105) - New Polarization: (0.782526,0.395568,0.48081) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.6226,0.491285,0.609105) - Old Polarization: (0.782526,0.395568,0.48081) - New Momentum Direction: (-0.6226,-0.491285,0.609105) - New Polarization: (-0.782526,0.395568,-0.48081) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.6226,-0.491285,0.609105) - Old Polarization: (-0.782526,0.395568,-0.48081) - New Momentum Direction: (-0.6226,-0.491285,-0.609105) - New Polarization: (0.782526,-0.395568,-0.48081) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 421, parentID 1) is processed with stopping code 2 -### pop requested out of 74 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.718126,0.643299,0.265446) - Old Polarization: (-0.675919,0.553984,0.48604) - New Momentum Direction: (0.328249,0.873176,0.3603) - New Polarization: (-0.93255,0.238854,0.270738) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 420, parentID 1) is processed with stopping code 2 -### pop requested out of 73 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.706473,0.67801,0.202974) - Old Polarization: (-0.68869,0.592488,0.417929) - New Momentum Direction: (0.278962,0.919963,0.275406) - New Polarization: (-0.949252,0.220788,0.223993) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 419, parentID 1) is processed with stopping code 2 -### pop requested out of 72 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.613779,0.478681,-0.627806) - Old Polarization: (-0.789478,0.37156,-0.488537) - New Momentum Direction: (0.613779,0.478681,0.627806) - New Polarization: (0.789478,-0.37156,-0.488537) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.613779,0.478681,0.627806) - Old Polarization: (0.789478,-0.37156,-0.488537) - New Momentum Direction: (-0.613779,0.478681,0.627806) - New Polarization: (0.789478,0.37156,0.488537) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.613779,0.478681,0.627806) - Old Polarization: (0.789478,0.37156,0.488537) - New Momentum Direction: (-0.613779,-0.478681,0.627806) - New Polarization: (-0.789478,0.37156,-0.488537) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.613779,-0.478681,0.627806) - Old Polarization: (-0.789478,0.37156,-0.488537) - New Momentum Direction: (0.613779,-0.478681,0.627806) - New Polarization: (-0.789478,-0.37156,0.488537) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 418, parentID 1) is processed with stopping code 2 -### pop requested out of 71 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.701423,0.692657,0.168024) - Old Polarization: (-0.694321,0.610778,0.380617) - New Momentum Direction: (-0.701423,0.692657,0.168024) - New Polarization: (-0.661997,-0.545757,-0.51372) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.701423,0.692657,0.168024) - Old Polarization: (-0.661997,-0.545757,-0.51372) - New Momentum Direction: (-0.9503,0.21239,0.227641) - New Polarization: (-0.292704,-0.858632,-0.420803) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 417, parentID 1) is processed with stopping code 2 -### pop requested out of 70 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 416, parentID 1) is processed with stopping code 2 -### pop requested out of 69 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 415, parentID 1) is processed with stopping code 2 -### pop requested out of 68 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.752391,-0.541162,-0.375569) - Old Polarization: (-0.638545,-0.739206,-0.21409) - New Momentum Direction: (0.444134,-0.736067,-0.510834) - New Polarization: (-0.882971,-0.456319,-0.110165) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 414, parentID 1) is processed with stopping code 2 -### pop requested out of 67 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.62309,0.244165,-0.743063) -Old Polarization: (-0.779558,0.116585,-0.615384) -New Polarization: (-0.835536,-0.278063,0.189426) -Polarization Change: (-0.927617,-0.308707,0.210302) -New Momentum Direction: (-0.1811,0.848239,0.554942) -Momentum Change: (-0.175878,0.823779,0.538939) - Photon at Boundary! - Old Momentum Direction: (-0.175878,0.823779,0.538939) - Old Polarization: (-0.927617,-0.308707,0.210302) - New Momentum Direction: (-0.175878,-0.823779,0.538939) - New Polarization: (0.932158,0.0366329,0.360195) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.175878,-0.823779,0.538939) - Old Polarization: (0.932158,0.0366329,0.360195) - New Momentum Direction: (-0.239076,-0.637296,0.732596) - New Polarization: (0.928685,0.0702272,0.364159) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 413, parentID 1) is processed with stopping code 2 -### pop requested out of 66 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 412, parentID 1) is processed with stopping code 2 -### pop requested out of 65 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.618639,0.518848,-0.589985) - Old Polarization: (-0.785568,0.420896,-0.453573) - New Momentum Direction: (-0.618639,0.518848,-0.589985) - New Polarization: (-0.785568,-0.420896,0.453573) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.618639,0.518848,-0.589985) - Old Polarization: (-0.785568,-0.420896,0.453573) - New Momentum Direction: (-0.618639,0.518848,0.589985) - New Polarization: (0.785568,0.420896,0.453573) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.618639,0.518848,0.589985) - Old Polarization: (0.785568,0.420896,0.453573) - New Momentum Direction: (-0.618639,-0.518848,0.589985) - New Polarization: (-0.785568,0.420896,-0.453573) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.618639,-0.518848,0.589985) - Old Polarization: (-0.785568,0.420896,-0.453573) - New Momentum Direction: (0.618639,-0.518848,0.589985) - New Polarization: (-0.785568,-0.420896,0.453573) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.618639,-0.518848,0.589985) - Old Polarization: (-0.785568,-0.420896,0.453573) - New Momentum Direction: (0.618639,-0.518848,-0.589985) - New Polarization: (0.785568,0.420896,0.453573) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.618639,-0.518848,-0.589985) - Old Polarization: (0.785568,0.420896,0.453573) - New Momentum Direction: (0.618639,0.518848,-0.589985) - New Polarization: (-0.785568,0.420896,-0.453573) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.618639,0.518848,-0.589985) - Old Polarization: (-0.785568,0.420896,-0.453573) - New Momentum Direction: (-0.618639,0.518848,-0.589985) - New Polarization: (-0.785568,-0.420896,0.453573) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.618639,0.518848,-0.589985) - Old Polarization: (-0.785568,-0.420896,0.453573) - New Momentum Direction: (-0.618639,0.518848,0.589985) - New Polarization: (0.785568,0.420896,0.453573) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.618639,0.518848,0.589985) - Old Polarization: (0.785568,0.420896,0.453573) - New Momentum Direction: (-0.618639,-0.518848,0.589985) - New Polarization: (-0.785568,0.420896,-0.453573) - *** TotalInternalReflection *** -No Absorbtion length specified -Scattering Photon! -Old Momentum Direction: (-0.618639,-0.518848,0.589985) -Old Polarization: (-0.785568,0.420896,-0.453573) -New Polarization: (-0.425246,0.589764,0.624421) -Polarization Change: (-0.443698,0.615354,0.651515) -New Momentum Direction: (-0.76583,0.0770028,-0.685831) -Momentum Change: (-0.742863,0.0746935,-0.665263) - -** Photon Absorbed! ** -Track (trackID 411, parentID 1) is processed with stopping code 2 -### pop requested out of 64 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.806374,0.185034,0.561715) - Old Polarization: (-0.578945,0.0530314,0.81364) - New Momentum Direction: (0.598605,0.250624,0.760829) - New Polarization: (-0.792494,0.046882,0.608075) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 410, parentID 1) is processed with stopping code 2 -### pop requested out of 63 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.664476,0.745483,-0.0522124) - Old Polarization: (-0.734496,0.66437,0.138305) - New Momentum Direction: (0.902729,0.424321,-0.0709335) - New Polarization: (0.426657,-0.904166,0.0211375) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 409, parentID 1) is processed with stopping code 2 -### pop requested out of 62 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.840939,-0.451312,0.298562) - Old Polarization: (-0.539347,-0.654302,0.530088) - New Momentum Direction: (0.684921,-0.60768,0.402006) - New Polarization: (-0.727368,-0.537963,0.426065) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 408, parentID 1) is processed with stopping code 2 -### pop requested out of 61 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.836844,-0.102942,0.537676) - Old Polarization: (-0.544021,-0.266,0.795792) - New Momentum Direction: (0.675417,-0.138669,0.724281) - New Polarization: (-0.735041,-0.205681,0.646073) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 407, parentID 1) is processed with stopping code 2 -### pop requested out of 60 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.700439,-0.326547,-0.634628) - Old Polarization: (-0.695573,-0.511522,-0.504503) - New Momentum Direction: (0.263502,-0.441363,-0.857768) - New Polarization: (-0.954199,-0.249844,-0.164569) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 406, parentID 1) is processed with stopping code 2 -### pop requested out of 59 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.704327,0.691061,0.162353) - Old Polarization: (-0.691434,0.616054,0.377354) - New Momentum Direction: (0.289141,0.931914,0.218937) - New Polarization: (-0.946378,0.243841,0.211921) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 405, parentID 1) is processed with stopping code 2 -### pop requested out of 58 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.646407,-0.00608953,-0.762969) - Old Polarization: (-0.754199,-0.156486,-0.637728) - New Momentum Direction: (0.878333,-0.00827442,-0.477977) - New Polarization: (0.473826,-0.117534,0.87274) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 404, parentID 1) is processed with stopping code 2 -### pop requested out of 57 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.780889,0.381737,0.494459) - Old Polarization: (-0.606366,0.273011,0.74685) - New Momentum Direction: (0.539561,0.514515,0.666445) - New Polarization: (-0.829486,0.189167,0.525518) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 403, parentID 1) is processed with stopping code 2 -### pop requested out of 56 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.80733,0.165693,0.56636) - Old Polarization: (-0.578312,0.0312826,0.815216) - New Momentum Direction: (0.598615,0.224922,0.768811) - New Polarization: (-0.79298,0.03061,0.608478) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 402, parentID 1) is processed with stopping code 2 -### pop requested out of 55 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.633533,0.684467,-0.360751) -Old Polarization: (-0.769553,0.605742,-0.202152) -New Polarization: (-0.728647,0.585876,-0.0455858) -Polarization Change: (-0.778398,0.625879,-0.0486983) -New Momentum Direction: (0.199708,0.315921,0.991006) -Momentum Change: (0.188557,0.29828,0.935668) - Photon at Boundary! - Old Momentum Direction: (0.188557,0.29828,0.935668) - Old Polarization: (-0.778398,0.625879,-0.0486983) - New Momentum Direction: (0.188557,-0.29828,0.935668) - New Polarization: (0.778398,0.625879,0.0486983) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 401, parentID 1) is processed with stopping code 2 -### pop requested out of 54 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.715769,-0.400745,-0.571908) - Old Polarization: (-0.678607,-0.592439,-0.434175) - New Momentum Direction: (0.327857,-0.542138,-0.77369) - New Polarization: (-0.932777,-0.315611,-0.174117) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 400, parentID 1) is processed with stopping code 2 -### pop requested out of 53 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.673448,0.739074,0.0153855) - Old Polarization: (-0.724572,0.655823,0.211875) - New Momentum Direction: (0.673448,-0.739074,0.0153855) - New Polarization: (-0.601649,-0.560081,-0.569498) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.673448,-0.739074,0.0153855) - Old Polarization: (-0.601649,-0.560081,-0.569498) - New Momentum Direction: (-0.673448,-0.739074,0.0153855) - New Polarization: (-0.601649,0.560081,0.569498) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.673448,-0.739074,0.0153855) - Old Polarization: (-0.601649,0.560081,0.569498) - New Momentum Direction: (-0.91581,-0.401067,0.0209224) - New Polarization: (-0.356445,0.835712,0.417771) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 399, parentID 1) is processed with stopping code 2 -### pop requested out of 52 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.679453,-0.198439,-0.706375) - Old Polarization: (-0.719058,-0.371583,-0.587266) - New Momentum Direction: (0.679453,-0.198439,0.706375) - New Polarization: (-0.195796,0.878783,0.435206) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.679453,-0.198439,0.706375) - Old Polarization: (-0.195796,0.878783,0.435206) - New Momentum Direction: (0.145314,-0.267586,0.952513) - New Polarization: (-0.408081,0.860816,0.304082) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 398, parentID 1) is processed with stopping code 2 -### pop requested out of 51 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 397, parentID 1) is processed with stopping code 2 -### pop requested out of 50 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.655745,0.734853,-0.173173) - Old Polarization: (-0.745576,0.666404,0.00462741) - New Momentum Direction: (0.883358,0.406518,-0.233282) - New Polarization: (0.357152,-0.906136,-0.226627) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 396, parentID 1) is processed with stopping code 2 -### pop requested out of 49 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 395, parentID 1) is processed with stopping code 2 -### pop requested out of 48 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.710852,0.673804,0.201686) - Old Polarization: (-0.684153,0.595896,0.420526) - New Momentum Direction: (-0.710852,0.673804,0.201686) - New Polarization: (-0.634281,-0.490218,-0.597807) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.710852,0.673804,0.201686) - Old Polarization: (-0.634281,-0.490218,-0.597807) - New Momentum Direction: (-0.959249,0.0759515,0.272163) - New Polarization: (-0.211146,-0.832754,-0.5118) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 394, parentID 1) is processed with stopping code 2 -### pop requested out of 47 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.83676,-0.460427,0.296377) - Old Polarization: (-0.545663,-0.656014,0.521438) - New Momentum Direction: (0.670367,-0.62394,0.40163) - New Polarization: (-0.74071,-0.530412,0.412325) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 393, parentID 1) is processed with stopping code 2 -### pop requested out of 46 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 392, parentID 1) is processed with stopping code 2 -### pop requested out of 45 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.625834,0.663137,-0.410587) - Old Polarization: (-0.776979,0.576023,-0.253971) - New Momentum Direction: (0.625834,-0.663137,-0.410587) - New Polarization: (0.776979,0.576023,0.253971) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.625834,-0.663137,-0.410587) - Old Polarization: (0.776979,0.576023,0.253971) - New Momentum Direction: (-0.625834,-0.663137,-0.410587) - New Polarization: (0.776979,-0.576023,-0.253971) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.625834,-0.663137,-0.410587) - Old Polarization: (0.776979,-0.576023,-0.253971) - New Momentum Direction: (-0.625834,-0.663137,0.410587) - New Polarization: (-0.776979,0.576023,-0.253971) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.625834,-0.663137,0.410587) - Old Polarization: (-0.776979,0.576023,-0.253971) - New Momentum Direction: (-0.625834,0.663137,0.410587) - New Polarization: (0.776979,0.576023,0.253971) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.625834,0.663137,0.410587) - Old Polarization: (0.776979,0.576023,0.253971) - New Momentum Direction: (0.625834,0.663137,0.410587) - New Polarization: (0.776979,-0.576023,-0.253971) - *** TotalInternalReflection *** -No Absorbtion length specified -Scattering Photon! -Old Momentum Direction: (0.625834,0.663137,0.410587) -Old Polarization: (0.776979,-0.576023,-0.253971) -New Polarization: (0.650248,-0.638665,-0.0650687) -Polarization Change: (0.711621,-0.698945,-0.0712102) -New Momentum Direction: (-0.400637,-0.328303,-0.93653) -Momentum Change: (-0.374348,-0.30676,-0.875078) - Photon at Boundary! - Old Momentum Direction: (-0.374348,-0.30676,-0.875078) - Old Polarization: (0.711621,-0.698945,-0.0712102) - New Momentum Direction: (-0.508,-0.416282,-0.754086) - New Polarization: (0.520229,-0.846032,0.11658) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 391, parentID 1) is processed with stopping code 2 -### pop requested out of 44 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.652725,0.742957,-0.148206) - Old Polarization: (-0.747531,0.66339,0.0333224) - New Momentum Direction: (0.885781,0.418259,-0.201123) - New Polarization: (0.386167,-0.904601,-0.180478) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 390, parentID 1) is processed with stopping code 2 -### pop requested out of 43 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.828847,-0.0412629,0.557952) - Old Polarization: (-0.554316,-0.195686,0.808975) - New Momentum Direction: (0.652201,-0.055908,0.755981) - New Polarization: (-0.754478,-0.144517,0.640217) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 389, parentID 1) is processed with stopping code 2 -### pop requested out of 42 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 388, parentID 1) is processed with stopping code 2 -### pop requested out of 41 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 387, parentID 1) is processed with stopping code 2 -### pop requested out of 40 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.71733,-0.421977,-0.554412) - Old Polarization: (-0.676774,-0.611103,-0.410524) - New Momentum Direction: (0.323338,-0.573117,-0.752986) - New Polarization: (-0.93432,-0.319486,-0.158035) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 386, parentID 1) is processed with stopping code 2 -### pop requested out of 39 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.842331,-0.361417,0.39982) - Old Polarization: (-0.538853,-0.549955,0.638112) - New Momentum Direction: (0.685022,-0.488533,0.540444) - New Polarization: (-0.728448,-0.448709,0.51771) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 385, parentID 1) is processed with stopping code 2 -### pop requested out of 38 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.624063,0.633484,-0.457432) - Old Polarization: (-0.779408,0.546172,-0.30695) - New Momentum Direction: (0.624063,-0.633484,-0.457432) - New Polarization: (0.779408,0.546172,0.30695) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.624063,-0.633484,-0.457432) - Old Polarization: (0.779408,0.546172,0.30695) - New Momentum Direction: (-0.624063,-0.633484,-0.457432) - New Polarization: (0.779408,-0.546172,-0.30695) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.624063,-0.633484,-0.457432) - Old Polarization: (0.779408,-0.546172,-0.30695) - New Momentum Direction: (-0.624063,-0.633484,0.457432) - New Polarization: (-0.779408,0.546172,-0.30695) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.624063,-0.633484,0.457432) - Old Polarization: (-0.779408,0.546172,-0.30695) - New Momentum Direction: (-0.624063,0.633484,0.457432) - New Polarization: (0.779408,0.546172,0.30695) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.624063,0.633484,0.457432) - Old Polarization: (0.779408,0.546172,0.30695) - New Momentum Direction: (0.624063,0.633484,0.457432) - New Polarization: (0.779408,-0.546172,-0.30695) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.624063,0.633484,0.457432) - Old Polarization: (0.779408,-0.546172,-0.30695) - New Momentum Direction: (0.624063,0.633484,-0.457432) - New Polarization: (-0.779408,0.546172,-0.30695) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 384, parentID 1) is processed with stopping code 2 -### pop requested out of 37 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.795531,0.275736,0.539537) - Old Polarization: (-0.590563,0.153692,0.792221) - New Momentum Direction: (0.573608,0.372766,0.729397) - New Polarization: (-0.808626,0.115541,0.576866) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 383, parentID 1) is processed with stopping code 2 -### pop requested out of 36 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 382, parentID 1) is processed with stopping code 2 -### pop requested out of 35 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.842843,-0.316841,0.435003) - Old Polarization: (-0.53815,-0.501209,0.677631) - New Momentum Direction: (0.68656,-0.428064,0.587704) - New Polarization: (-0.727066,-0.407795,0.55234) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 381, parentID 1) is processed with stopping code 2 -### pop requested out of 34 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.777552,-0.581711,-0.238798) - Old Polarization: (-0.610702,-0.789079,-0.0663181) - New Momentum Direction: (0.523201,-0.788367,-0.323632) - New Polarization: (-0.840061,-0.541,-0.0402121) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 380, parentID 1) is processed with stopping code 2 -### pop requested out of 33 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.615277,0.507166,-0.603504) - Old Polarization: (-0.788264,0.404191,-0.463971) - New Momentum Direction: (-0.615277,0.507166,-0.603504) - New Polarization: (-0.788264,-0.404191,0.463971) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.615277,0.507166,-0.603504) - Old Polarization: (-0.788264,-0.404191,0.463971) - New Momentum Direction: (-0.615277,0.507166,0.603504) - New Polarization: (0.788264,0.404191,0.463971) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.615277,0.507166,0.603504) - Old Polarization: (0.788264,0.404191,0.463971) - New Momentum Direction: (-0.615277,-0.507166,0.603504) - New Polarization: (-0.788264,0.404191,-0.463971) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.615277,-0.507166,0.603504) - Old Polarization: (-0.788264,0.404191,-0.463971) - New Momentum Direction: (-0.615277,-0.507166,-0.603504) - New Polarization: (0.788264,-0.404191,-0.463971) - *** TotalInternalReflection *** -No Absorbtion length specified -Scattering Photon! -Old Momentum Direction: (-0.615277,-0.507166,-0.603504) -Old Polarization: (0.788264,-0.404191,-0.463971) -New Polarization: (0.707484,-0.38905,-0.517919) -Polarization Change: (0.737549,-0.405583,-0.539929) -New Momentum Direction: (-0.648438,-0.30012,-0.74123) -Momentum Change: (-0.629829,-0.291507,-0.719958) - Photon at Boundary! - Old Momentum Direction: (-0.629829,-0.291507,-0.719958) - Old Polarization: (0.737549,-0.405583,-0.539929) - New Momentum Direction: (-0.855561,-0.395984,-0.333485) - New Polarization: (-0.0407359,-0.590674,0.805881) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 379, parentID 1) is processed with stopping code 2 -### pop requested out of 32 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.794466,-0.597823,-0.106917) - Old Polarization: (-0.592638,-0.801628,0.078572) - New Momentum Direction: (0.564139,-0.812784,-0.145361) - New Polarization: (-0.815766,-0.575859,0.0539601) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 378, parentID 1) is processed with stopping code 2 -### pop requested out of 31 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.618263,0.376517,-0.689917) - Old Polarization: (-0.785402,0.262559,-0.560541) - New Momentum Direction: (0.838576,0.510686,-0.189712) - New Polarization: (-0.0907101,0.47426,0.875699) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 377, parentID 1) is processed with stopping code 2 -### pop requested out of 30 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.800831,-0.59138,-0.0945477) - Old Polarization: (-0.584455,-0.806181,0.0921124) - New Momentum Direction: (0.5886,-0.798286,-0.127627) - New Polarization: (-0.798482,-0.598754,0.0626051) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 376, parentID 1) is processed with stopping code 2 -### pop requested out of 29 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 375, parentID 1) is processed with stopping code 2 -### pop requested out of 28 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 374, parentID 1) is processed with stopping code 2 -### pop requested out of 27 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.845166,-0.377767,0.378135) - Old Polarization: (-0.534223,-0.574068,0.620526) - New Momentum Direction: (0.695404,-0.507893,0.508388) - New Polarization: (-0.718422,-0.474757,0.508405) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 373, parentID 1) is processed with stopping code 2 -### pop requested out of 26 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.815227,-0.577831,0.038937) - Old Polarization: (-0.569075,-0.786765,0.239067) - New Momentum Direction: (0.620861,-0.782147,0.0527048) - New Polarization: (-0.776976,-0.605039,0.173887) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 372, parentID 1) is processed with stopping code 2 -### pop requested out of 25 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.815454,-0.578707,0.0115381) - Old Polarization: (-0.567784,-0.795871,0.210262) - New Momentum Direction: (0.626352,-0.779386,0.0155392) - New Polarization: (-0.771849,-0.617255,0.152461) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 371, parentID 1) is processed with stopping code 2 -### pop requested out of 24 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.837335,-0.172901,0.518629) - Old Polarization: (-0.544908,-0.340505,0.766245) - New Momentum Direction: (0.672069,-0.234193,0.702479) - New Polarization: (-0.739254,-0.266967,0.61825) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 370, parentID 1) is processed with stopping code 2 -### pop requested out of 23 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 369, parentID 1) is processed with stopping code 2 -### pop requested out of 22 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.663829,0.744771,-0.0681683) - Old Polarization: (-0.735495,0.666636,0.12101) - New Momentum Direction: (0.900148,0.425663,-0.0924358) - New Polarization: (0.426376,-0.904454,-0.01288) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 368, parentID 1) is processed with stopping code 2 -### pop requested out of 21 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.816038,0.0841047,0.571847) - Old Polarization: (-0.568898,-0.058001,0.82036) - New Momentum Direction: (0.619458,0.11423,0.776674) - New Polarization: (-0.778791,-0.0350653,0.626303) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 367, parentID 1) is processed with stopping code 2 -### pop requested out of 20 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.660723,-0.0797477,-0.746382) - Old Polarization: (-0.739576,-0.239177,-0.629143) - New Momentum Direction: (0.892371,-0.107707,-0.438261) - New Polarization: (0.395882,-0.279431,0.874755) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 366, parentID 1) is processed with stopping code 2 -### pop requested out of 19 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.744005,0.558568,0.366686) - Old Polarization: (-0.647429,0.466963,0.602314) - New Momentum Direction: (0.430584,0.754498,0.495309) - New Polarization: (-0.889124,0.260291,0.37644) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 365, parentID 1) is processed with stopping code 2 -### pop requested out of 18 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.757709,-0.547138,-0.355693) - Old Polarization: (-0.632553,-0.749793,-0.194131) - New Momentum Direction: (0.465196,-0.742164,-0.482479) - New Polarization: (-0.872109,-0.477671,-0.1061) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 364, parentID 1) is processed with stopping code 2 -### pop requested out of 17 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.686684,0.720135,0.0993536) -Old Polarization: (-0.710154,0.635304,0.303429) -New Polarization: (-0.777426,0.447495,0.144908) -Polarization Change: (-0.855585,0.492484,0.159476) -New Momentum Direction: (0.477968,0.660315,0.638935) -Momentum Change: (0.461486,0.637545,0.616902) - Photon at Boundary! - Old Momentum Direction: (0.461486,0.637545,0.616902) - Old Polarization: (-0.855585,0.492484,0.159476) - New Momentum Direction: (0.461486,-0.637545,0.616902) - New Polarization: (0.855585,0.492484,-0.159476) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.461486,-0.637545,0.616902) - Old Polarization: (0.855585,0.492484,-0.159476) - New Momentum Direction: (-0.461486,-0.637545,0.616902) - New Polarization: (0.855585,-0.492484,0.159476) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.461486,-0.637545,0.616902) - Old Polarization: (0.855585,-0.492484,0.159476) - New Momentum Direction: (-0.461486,-0.637545,-0.616902) - New Polarization: (-0.855585,0.492484,0.159476) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 363, parentID 1) is processed with stopping code 2 -### pop requested out of 16 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.736552,-0.470654,-0.485775) - Old Polarization: (-0.655659,-0.673232,-0.341862) - New Momentum Direction: (0.409098,-0.634948,-0.655347) - New Polarization: (-0.899206,-0.402624,-0.171235) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 362, parentID 1) is processed with stopping code 2 -### pop requested out of 15 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.617072,0.343779,-0.70784) - Old Polarization: (-0.785946,0.224816,-0.575975) - New Momentum Direction: (0.617072,0.343779,0.70784) - New Polarization: (0.00493062,-0.901194,0.433387) - *** FresnelReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 361, parentID 1) is processed with stopping code 2 -### pop requested out of 14 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.663015,-0.132775,-0.736738) - Old Polarization: (-0.736086,-0.294868,-0.609287) - New Momentum Direction: (0.900783,-0.180391,-0.395031) - New Polarization: (0.308195,-0.375313,0.87416) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 360, parentID 1) is processed with stopping code 2 -### pop requested out of 13 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.77202,-0.572033,-0.277064) - Old Polarization: (-0.616697,-0.779663,-0.108674) - New Momentum Direction: (0.509056,-0.774652,-0.375203) - New Polarization: (-0.848109,-0.525811,-0.0650696) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 359, parentID 1) is processed with stopping code 2 -### pop requested out of 12 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 358, parentID 1) is processed with stopping code 2 -### pop requested out of 11 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.77467,0.416013,0.476256) - Old Polarization: (-0.613316,0.310812,0.726113) - New Momentum Direction: (0.52253,0.560912,0.642138) - New Polarization: (-0.839737,0.208127,0.501523) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 357, parentID 1) is processed with stopping code 2 -### pop requested out of 10 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 356, parentID 1) is processed with stopping code 2 -### pop requested out of 9 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.807049,0.17703,0.563322) - Old Polarization: (-0.578293,0.0441122,0.814636) - New Momentum Direction: (0.59976,0.239898,0.763372) - New Polarization: (-0.79182,0.04039,0.609418) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 355, parentID 1) is processed with stopping code 2 -### pop requested out of 8 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.681101,0.730871,0.0439218) - Old Polarization: (-0.716683,0.653196,0.244336) - New Momentum Direction: (0.922521,0.381335,0.0594901) - New Polarization: (0.360073,-0.905875,0.22302) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 354, parentID 1) is processed with stopping code 2 -### pop requested out of 7 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.764755,-0.561496,-0.316026) -Old Polarization: (-0.6248,-0.766075,-0.150845) -New Polarization: (-0.766491,-0.114927,-0.400748) -Polarization Change: (-0.878465,-0.131717,-0.459292) -New Momentum Direction: (-0.0275677,-0.926097,0.444793) -Momentum Change: (-0.0268235,-0.901098,0.432786) - Photon at Boundary! - Old Momentum Direction: (-0.0268235,-0.901098,0.432786) - Old Polarization: (-0.878465,-0.131717,-0.459292) - New Momentum Direction: (-0.0363717,-0.808884,0.586843) - New Polarization: (-0.865132,0.319428,0.386669) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 353, parentID 1) is processed with stopping code 2 -### pop requested out of 6 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 352, parentID 1) is processed with stopping code 2 -### pop requested out of 5 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 351, parentID 1) is processed with stopping code 2 -### pop requested out of 4 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.699227,0.70271,0.131456) - Old Polarization: (-0.697121,0.62946,0.343222) - New Momentum Direction: (0.94264,0.282884,0.177217) - New Polarization: (0.202702,-0.906885,0.369422) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 350, parentID 1) is processed with stopping code 2 -### pop requested out of 3 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.706456,0.676645,0.207536) - Old Polarization: (-0.688656,0.58951,0.422175) - New Momentum Direction: (0.275469,0.919052,0.281885) - New Polarization: (-0.950284,0.216055,0.224233) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 349, parentID 1) is processed with stopping code 2 -### pop requested out of 2 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.81559,-0.575769,0.0574719) -Old Polarization: (-0.569208,-0.780492,0.258522) -New Polarization: (-0.550257,-0.780375,0.210568) -Polarization Change: (-0.562746,-0.798087,0.215347) -New Momentum Direction: (0.813886,-0.492739,0.315216) -Momentum Change: (0.812036,-0.491618,0.314499) - Photon at Boundary! - Old Momentum Direction: (0.812036,-0.491618,0.314499) - Old Polarization: (-0.562746,-0.798087,0.215347) - New Momentum Direction: (0.610552,-0.667143,0.426786) - New Polarization: (-0.77928,-0.602175,0.173515) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 348, parentID 1) is processed with stopping code 2 ### pop requested out of 1 stacked tracks. - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 235 + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 54 Track (trackID 1, parentID 0) is processed with stopping code 4 -### pop requested out of 236 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.62938,-0.269539,-0.728855) - Old Polarization: (-0.774089,-0.299907,-0.557532) - New Momentum Direction: (0.855059,-0.366188,-0.367123) - New Polarization: (0.136121,-0.52466,0.840359) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 907, parentID 1) is processed with stopping code 2 -### pop requested out of 235 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.619719,-0.0623503,-0.782343) - Old Polarization: (-0.7846,-0.0730108,-0.615689) - New Momentum Direction: (0.84215,-0.0847292,-0.532545) - New Polarization: (0.516331,-0.158112,0.841667) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 906, parentID 1) is processed with stopping code 2 -### pop requested out of 234 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.635282,-0.271759,-0.722886) - Old Polarization: (-0.769158,-0.306724,-0.560639) - New Momentum Direction: (0.635282,-0.271759,0.722886) - New Polarization: (0.00211792,0.93665,0.35026) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.635282,-0.271759,0.722886) - Old Polarization: (0.00211792,0.93665,0.35026) - New Momentum Direction: (-0.635282,-0.271759,0.722886) - New Polarization: (0.00211792,-0.93665,-0.35026) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.635282,-0.271759,0.722886) - Old Polarization: (0.00211792,-0.93665,-0.35026) - New Momentum Direction: (-0.635282,0.271759,0.722886) - New Polarization: (-0.00211792,-0.93665,0.35026) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.635282,0.271759,0.722886) - Old Polarization: (-0.00211792,-0.93665,0.35026) - New Momentum Direction: (-0.857447,0.366796,0.360894) - New Polarization: (-0.514478,-0.597748,-0.614825) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 905, parentID 1) is processed with stopping code 2 -### pop requested out of 233 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.622271,-0.145932,-0.769079) - Old Polarization: (-0.781841,-0.164522,-0.601379) - New Momentum Direction: (0.845507,-0.198283,-0.495784) - New Polarization: (0.413518,-0.344274,0.842899) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 904, parentID 1) is processed with stopping code 2 -### pop requested out of 232 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.764766,-0.640992,0.0652853) - Old Polarization: (-0.625445,-0.714218,0.314183) - New Momentum Direction: (0.491096,-0.866622,0.0882659) - New Polarization: (-0.858577,-0.464418,0.217167) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 903, parentID 1) is processed with stopping code 2 -### pop requested out of 231 stacked tracks. +### pop requested out of 56 stacked tracks. -** Photon Absorbed! ** -Track (trackID 902, parentID 1) is processed with stopping code 2 -### pop requested out of 230 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 901, parentID 1) is processed with stopping code 2 -### pop requested out of 229 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.788907,-0.584037,0.19112) - Old Polarization: (-0.598066,-0.658243,0.457201) - New Momentum Direction: (0.562471,-0.785812,0.257148) - New Polarization: (-0.815517,-0.476029,0.329131) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 900, parentID 1) is processed with stopping code 2 -### pop requested out of 228 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.841676,0.0145583,0.539786) - Old Polarization: (-0.539948,0.0113447,0.841622) - New Momentum Direction: (0.68448,0.0196552,0.728767) - New Polarization: (-0.729007,0.0103034,0.684428) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 899, parentID 1) is processed with stopping code 2 -### pop requested out of 227 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.670969,-0.567585,-0.477126) - Old Polarization: (-0.728412,-0.62485,-0.281031) - New Momentum Direction: (-0.670969,-0.567585,-0.477126) - New Polarization: (-0.728412,0.62485,0.281031) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.670969,-0.567585,-0.477126) - Old Polarization: (-0.728412,0.62485,0.281031) - New Momentum Direction: (-0.670969,0.567585,-0.477126) - New Polarization: (0.728412,0.62485,-0.281031) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.670969,0.567585,-0.477126) - Old Polarization: (0.728412,0.62485,-0.281031) - New Momentum Direction: (-0.670969,0.567585,0.477126) - New Polarization: (-0.728412,-0.62485,-0.281031) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 898, parentID 1) is processed with stopping code 2 -### pop requested out of 226 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.673173,0.573288,-0.467096) - Old Polarization: (-0.726792,0.629451,-0.27489) - New Momentum Direction: (-0.673173,0.573288,-0.467096) - New Polarization: (-0.72629,-0.63136,0.271823) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.673173,0.573288,-0.467096) - Old Polarization: (-0.72629,-0.63136,0.271823) - New Momentum Direction: (-0.673173,-0.573288,-0.467096) - New Polarization: (0.72629,-0.63136,-0.271823) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.673173,-0.573288,-0.467096) - Old Polarization: (0.72629,-0.63136,-0.271823) - New Momentum Direction: (-0.673173,-0.573288,0.467096) - New Polarization: (-0.72629,0.63136,-0.271823) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.673173,-0.573288,0.467096) - Old Polarization: (-0.72629,0.63136,-0.271823) - New Momentum Direction: (0.673173,-0.573288,0.467096) - New Polarization: (0.725768,0.391102,-0.56595) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.673173,-0.573288,0.467096) - Old Polarization: (0.725768,0.391102,-0.56595) - New Momentum Direction: (0.673173,0.573288,0.467096) - New Polarization: (-0.725768,0.391102,0.56595) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.673173,0.573288,0.467096) - Old Polarization: (-0.725768,0.391102,0.56595) - New Momentum Direction: (0.673173,0.573288,-0.467096) - New Polarization: (0.725768,-0.391102,0.56595) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.673173,0.573288,-0.467096) - Old Polarization: (0.725768,-0.391102,0.56595) - New Momentum Direction: (-0.673173,0.573288,-0.467096) - New Polarization: (-0.725226,-0.635259,0.265505) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.673173,0.573288,-0.467096) - Old Polarization: (-0.725226,-0.635259,0.265505) - New Momentum Direction: (-0.673173,-0.573288,-0.467096) - New Polarization: (0.725226,-0.635259,-0.265505) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 897, parentID 1) is processed with stopping code 2 -### pop requested out of 225 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.675888,0.587722,-0.444701) - Old Polarization: (-0.723622,0.643663,-0.249139) - New Momentum Direction: (0.0662123,0.795697,-0.602065) - New Polarization: (-0.991678,0.119242,0.0485321) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 896, parentID 1) is processed with stopping code 2 -### pop requested out of 224 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.68213,-0.585126,-0.43855) - Old Polarization: (-0.716962,-0.653088,-0.243808) - New Momentum Direction: (0.153497,-0.79071,-0.592635) - New Polarization: (-0.980788,-0.194979,0.00611475) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 895, parentID 1) is processed with stopping code 2 -### pop requested out of 223 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 894, parentID 1) is processed with stopping code 2 -### pop requested out of 222 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.837552,0.0576736,0.543305) - Old Polarization: (-0.546109,0.0583907,0.835677) - New Momentum Direction: (0.670252,0.0783398,0.737988) - New Polarization: (-0.741963,0.0493905,0.668619) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 893, parentID 1) is processed with stopping code 2 -### pop requested out of 221 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.721178,0.66925,-0.178905) - Old Polarization: (-0.673717,0.737692,0.0437693) - New Momentum Direction: (0.353158,0.903827,-0.241613) - New Polarization: (-0.923811,0.377698,0.0625895) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 892, parentID 1) is processed with stopping code 2 -### pop requested out of 220 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 891, parentID 1) is processed with stopping code 2 -### pop requested out of 219 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.661064,-0.495421,-0.563518) - Old Polarization: (-0.740247,-0.553323,-0.381926) - New Momentum Direction: (-0.661064,-0.495421,-0.563518) - New Polarization: (-0.740247,0.553323,0.381926) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.661064,-0.495421,-0.563518) - Old Polarization: (-0.740247,0.553323,0.381926) - New Momentum Direction: (-0.661064,-0.495421,0.563518) - New Polarization: (0.740247,-0.553323,0.381926) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.661064,-0.495421,0.563518) - Old Polarization: (0.740247,-0.553323,0.381926) - New Momentum Direction: (-0.661064,0.495421,0.563518) - New Polarization: (-0.740247,-0.553323,-0.381926) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.661064,0.495421,0.563518) - Old Polarization: (-0.740247,-0.553323,-0.381926) - New Momentum Direction: (0.661064,0.495421,0.563518) - New Polarization: (-0.740247,0.553323,0.381926) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.661064,0.495421,0.563518) - Old Polarization: (-0.740247,0.553323,0.381926) - New Momentum Direction: (0.661064,0.495421,-0.563518) - New Polarization: (0.740247,-0.553323,0.381926) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.661064,0.495421,-0.563518) - Old Polarization: (0.740247,-0.553323,0.381926) - New Momentum Direction: (0.661064,-0.495421,-0.563518) - New Polarization: (-0.740247,-0.553323,-0.381926) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.661064,-0.495421,-0.563518) - Old Polarization: (-0.740247,-0.553323,-0.381926) - New Momentum Direction: (-0.661064,-0.495421,-0.563518) - New Polarization: (-0.740247,0.553323,0.381926) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.661064,-0.495421,-0.563518) - Old Polarization: (-0.740247,0.553323,0.381926) - New Momentum Direction: (-0.661064,-0.495421,0.563518) - New Polarization: (0.740247,-0.553323,0.381926) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.661064,-0.495421,0.563518) - Old Polarization: (0.740247,-0.553323,0.381926) - New Momentum Direction: (-0.661064,0.495421,0.563518) - New Polarization: (-0.740247,-0.553323,-0.381926) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.661064,0.495421,0.563518) - Old Polarization: (-0.740247,-0.553323,-0.381926) - New Momentum Direction: (0.661064,0.495421,0.563518) - New Polarization: (-0.740247,0.553323,0.381926) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.661064,0.495421,0.563518) - Old Polarization: (-0.740247,0.553323,0.381926) - New Momentum Direction: (0.661064,0.495421,-0.563518) - New Polarization: (0.740247,-0.553323,0.381926) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 890, parentID 1) is processed with stopping code 2 -### pop requested out of 218 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.631538,0.333906,-0.699762) - Old Polarization: (-0.771524,0.360127,-0.524462) - New Momentum Direction: (0.85874,0.454031,-0.237533) - New Polarization: (-0.0547768,0.542242,0.838435) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 889, parentID 1) is processed with stopping code 2 -### pop requested out of 217 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.733531,0.672767,-0.0965195) - Old Polarization: (-0.660016,0.739008,0.135081) - New Momentum Direction: (0.393516,0.91,-0.130554) - New Polarization: (-0.906912,0.407523,0.106943) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 888, parentID 1) is processed with stopping code 2 -### pop requested out of 216 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.772295,-0.625189,0.112694) - Old Polarization: (-0.617141,-0.696292,0.366489) - New Momentum Direction: (0.511771,-0.845496,0.152405) - New Polarization: (-0.846989,-0.466834,0.254313) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 887, parentID 1) is processed with stopping code 2 -### pop requested out of 215 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 886, parentID 1) is processed with stopping code 2 -### pop requested out of 214 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.797279,0.523105,0.301176) - Old Polarization: (-0.589993,0.569965,0.571882) - New Momentum Direction: (0.574139,0.709558,0.408525) - New Polarization: (-0.809502,0.417123,0.413177) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 885, parentID 1) is processed with stopping code 2 -### pop requested out of 213 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.625395,-0.194639,-0.755643) - Old Polarization: (-0.778674,-0.218319,-0.588221) - New Momentum Direction: (0.625395,-0.194639,0.755643) - New Polarization: (-0.0691857,0.950745,0.302154) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.625395,-0.194639,0.755643) - Old Polarization: (-0.0691857,0.950745,0.302154) - New Momentum Direction: (-0.625395,-0.194639,0.755643) - New Polarization: (-0.0691857,-0.950745,-0.302154) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.625395,-0.194639,0.755643) - Old Polarization: (-0.0691857,-0.950745,-0.302154) - New Momentum Direction: (-0.848893,-0.264198,0.457799) - New Polarization: (-0.0280048,-0.84242,-0.538094) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 884, parentID 1) is processed with stopping code 2 -### pop requested out of 212 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 883, parentID 1) is processed with stopping code 2 -### pop requested out of 211 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.782373,0.592256,0.192681) - Old Polarization: (-0.605845,0.652008,0.455891) - New Momentum Direction: (0.540628,0.79999,0.260263) - New Polarization: (-0.829763,0.456102,0.32166) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 882, parentID 1) is processed with stopping code 2 -### pop requested out of 210 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 881, parentID 1) is processed with stopping code 2 -### pop requested out of 209 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 880, parentID 1) is processed with stopping code 2 -### pop requested out of 208 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.734992,-0.664667,-0.134184) - Old Polarization: (-0.658384,-0.746878,0.0932915) - New Momentum Direction: (0.407522,-0.895137,-0.180712) - New Polarization: (-0.900561,-0.42674,0.0829614) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 879, parentID 1) is processed with stopping code 2 -### pop requested out of 207 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.815508,-0.417653,0.40064) - Old Polarization: (-0.570297,-0.462063,0.679161) - New Momentum Direction: (0.617866,-0.567423,0.54431) - New Polarization: (-0.780501,-0.358806,0.511933) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 878, parentID 1) is processed with stopping code 2 -### pop requested out of 206 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 877, parentID 1) is processed with stopping code 2 -### pop requested out of 205 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.689435,0.617888,-0.378012) - Old Polarization: (-0.709053,0.682365,-0.177826) - New Momentum Direction: (0.212428,0.833559,-0.509955) - New Polarization: (-0.968744,0.248057,0.00192409) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 876, parentID 1) is processed with stopping code 2 -### pop requested out of 204 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.719204,-0.662555,-0.209203) - Old Polarization: (-0.675849,-0.736965,0.0105468) - New Momentum Direction: (0.341142,-0.896389,-0.283036) - New Polarization: (-0.928442,-0.368401,0.0476991) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 875, parentID 1) is processed with stopping code 2 -### pop requested out of 203 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.833337,-0.219777,0.507196) - Old Polarization: (-0.550453,-0.2461,0.79777) - New Momentum Direction: (0.661411,-0.298206,0.688192) - New Polarization: (-0.748429,-0.202614,0.631508) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 874, parentID 1) is processed with stopping code 2 -### pop requested out of 202 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 873, parentID 1) is processed with stopping code 2 -### pop requested out of 201 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.742046,-0.664508,-0.0883025) - Old Polarization: (-0.650521,-0.745623,0.144462) - New Momentum Direction: (0.428857,-0.895501,-0.118998) - New Polarization: (-0.890515,-0.441214,0.110962) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 872, parentID 1) is processed with stopping code 2 -### pop requested out of 200 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 871, parentID 1) is processed with stopping code 2 -### pop requested out of 199 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.676743,0.570416,-0.465452) - Old Polarization: (-0.723461,0.632439,-0.276814) - New Momentum Direction: (-0.676743,0.570416,-0.465452) - New Polarization: (-0.715651,-0.658084,0.23403) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.676743,0.570416,-0.465452) - Old Polarization: (-0.715651,-0.658084,0.23403) - New Momentum Direction: (-0.676743,-0.570416,-0.465452) - New Polarization: (0.715651,-0.658084,-0.23403) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.676743,-0.570416,-0.465452) - Old Polarization: (0.715651,-0.658084,-0.23403) - New Momentum Direction: (-0.676743,-0.570416,0.465452) - New Polarization: (-0.715651,0.658084,-0.23403) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.676743,-0.570416,0.465452) - Old Polarization: (-0.715651,0.658084,-0.23403) - New Momentum Direction: (0.676743,-0.570416,0.465452) - New Polarization: (0.703381,0.314235,-0.637582) - *** FresnelReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 870, parentID 1) is processed with stopping code 2 -### pop requested out of 198 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.740018,0.67099,-0.0463111) - Old Polarization: (-0.652896,0.733188,0.190166) - New Momentum Direction: (0.4104,0.909741,-0.0627895) - New Polarization: (-0.899396,0.415176,0.136805) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 869, parentID 1) is processed with stopping code 2 -### pop requested out of 197 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 868, parentID 1) is processed with stopping code 2 -### pop requested out of 196 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.627469,-0.24702,-0.73842) - Old Polarization: (-0.776096,-0.275038,-0.567476) - New Momentum Direction: (0.852765,-0.335714,-0.400109) - New Polarization: (0.196716,-0.503202,0.841481) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 867, parentID 1) is processed with stopping code 2 -### pop requested out of 195 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 866, parentID 1) is processed with stopping code 2 -### pop requested out of 194 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 865, parentID 1) is processed with stopping code 2 -### pop requested out of 193 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.628423,-0.109686,-0.7701) - Old Polarization: (-0.777278,-0.127203,-0.616164) - New Momentum Direction: (0.846581,-0.147763,-0.511338) - New Polarization: (0.463415,-0.267931,0.844665) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 864, parentID 1) is processed with stopping code 2 -### pop requested out of 192 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.829353,0.304153,0.468685) - Old Polarization: (-0.553532,0.333163,0.763286) - New Momentum Direction: (0.656844,0.410469,0.632512) - New Polarization: (-0.75041,0.273793,0.601599) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 863, parentID 1) is processed with stopping code 2 -### pop requested out of 191 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 862, parentID 1) is processed with stopping code 2 -### pop requested out of 190 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.729917,-0.671632,-0.127008) - Old Polarization: (-0.664007,-0.740813,0.101441) - New Momentum Direction: (0.371918,-0.912101,-0.172481) - New Polarization: (-0.916177,-0.390571,0.0898504) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 861, parentID 1) is processed with stopping code 2 -### pop requested out of 189 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.825209,0.319209,0.465979) - Old Polarization: (-0.559251,0.346115,0.753288) - New Momentum Direction: (0.642873,0.432885,0.631922) - New Polarization: (-0.76213,0.278958,0.584243) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 860, parentID 1) is processed with stopping code 2 -### pop requested out of 188 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.624319,-0.0611476,-0.778772) - Old Polarization: (-0.780949,-0.072523,-0.62037) - New Momentum Direction: (0.84387,-0.082651,-0.530143) - New Polarization: (0.514583,-0.155143,0.843288) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 859, parentID 1) is processed with stopping code 2 -### pop requested out of 187 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 858, parentID 1) is processed with stopping code 2 -### pop requested out of 186 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.709491,-0.659612,-0.248062) - Old Polarization: (-0.686362,-0.726599,-0.031019) - New Momentum Direction: (0.287924,-0.896362,-0.337098) - New Polarization: (-0.946974,-0.318914,0.0391745) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 857, parentID 1) is processed with stopping code 2 -### pop requested out of 185 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.637823,0.370881,-0.675003) - Old Polarization: (-0.765343,0.403311,-0.501588) - New Momentum Direction: (0.637823,0.370881,0.675003) - New Polarization: (0.765343,-0.403311,-0.501588) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 856, parentID 1) is processed with stopping code 2 -### pop requested out of 184 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.786416,0.571066,0.235444) - Old Polarization: (-0.601911,0.622841,0.499772) - New Momentum Direction: (0.546044,0.774512,0.319323) - New Polarization: (-0.827112,0.437839,0.352396) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 855, parentID 1) is processed with stopping code 2 -### pop requested out of 183 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.838317,-0.0387773,0.543802) - Old Polarization: (-0.545141,-0.0473064,0.837008) - New Momentum Direction: (0.672414,-0.0526465,0.7383) - New Polarization: (-0.740146,-0.0390504,0.671311) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 854, parentID 1) is processed with stopping code 2 -### pop requested out of 182 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.833854,0.238127,0.497978) - Old Polarization: (-0.548705,0.259382,0.79476) - New Momentum Direction: (0.666558,0.32159,0.672518) - New Polarization: (-0.743171,0.21613,0.633234) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 853, parentID 1) is processed with stopping code 2 + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 125 +Track (trackID 637, parentID 1) is processed with stopping code 4 ### pop requested out of 181 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.8298,0.295852,0.473184) - Old Polarization: (-0.553135,0.32363,0.767662) - New Momentum Direction: (0.657507,0.399435,0.638855) - New Polarization: (-0.750022,0.266213,0.605474) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 852, parentID 1) is processed with stopping code 2 -### pop requested out of 180 stacked tracks. ** Photon Absorbed! ** -Track (trackID 851, parentID 1) is processed with stopping code 2 -### pop requested out of 179 stacked tracks. +Track (trackID 762, parentID 637) is processed with stopping code 2 +### pop requested out of 180 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.699252,0.650641,-0.296163) - Old Polarization: (-0.697756,0.711303,-0.0847656) - New Momentum Direction: (0.24731,0.881874,-0.401417) - New Polarization: (-0.959268,0.281221,0.0268165) + Old Momentum Direction: (0.78599,-0.60837,-0.11003) + Old Polarization: (-0.51914,-0.55282,-0.65183) + New Momentum Direction: (0.54884,-0.82258,-0.14877) + New Polarization: (-0.7613,-0.41836,-0.49539) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 850, parentID 1) is processed with stopping code 2 +Track (trackID 761, parentID 637) is processed with stopping code 2 +### pop requested out of 179 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 760, parentID 637) is processed with stopping code 2 ### pop requested out of 178 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.71042,0.66489,-0.230706) - Old Polarization: (-0.685494,0.727964,-0.0128865) - New Momentum Direction: (0.301972,0.90064,-0.312507) - New Polarization: (-0.942494,0.331302,0.044086) + Old Momentum Direction: (0.46427,-0.088994,0.88121) + Old Polarization: (-0.88279,0.034051,0.46854) + New Momentum Direction: (0.62762,-0.12031,0.76917) + New Polarization: (0.73369,-0.23903,-0.63606) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 849, parentID 1) is processed with stopping code 2 +Track (trackID 759, parentID 637) is processed with stopping code 2 ### pop requested out of 177 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 848, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.58388,-0.71177,0.39047) + Old Polarization: (-0.74587,-0.66023,-0.088178) + New Momentum Direction: (0.79403,-0.29588,0.53101) + New Polarization: (0.11203,0.92981,0.35058) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 758, parentID 637) is processed with stopping code 2 ### pop requested out of 176 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.93317,0.0035894,-0.35941) +Old Polarization: (-0.35646,0.1376,-0.92412) +New Polarization: (-0.7542,0.48249,-0.15225) +Polarization Change: (-0.83045,0.53127,-0.16764) +New Momentum Direction: (0.18773,0.012692,-0.88971) +Momentum Change: (0.20643,0.013956,-0.97836) Photon at Boundary! - Old Momentum Direction: (0.669069,-0.540323,-0.510292) - Old Polarization: (-0.731201,-0.601457,-0.321861) - New Momentum Direction: (-0.669069,-0.540323,-0.510292) - New Polarization: (-0.731201,0.601457,0.321861) + Old Momentum Direction: (0.20643,0.013956,-0.97836) + Old Polarization: (-0.83045,0.53127,-0.16764) + New Momentum Direction: (-0.20643,0.013956,-0.97836) + New Polarization: (-0.83045,-0.53127,0.16764) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (-0.669069,-0.540323,-0.510292) - Old Polarization: (-0.731201,0.601457,0.321861) - New Momentum Direction: (-0.669069,0.540323,-0.510292) - New Polarization: (0.731201,0.601457,-0.321861) - *** TotalInternalReflection *** + Old Momentum Direction: (-0.20643,0.013956,-0.97836) + Old Polarization: (-0.83045,-0.53127,0.16764) + New Momentum Direction: (-0.28081,0.018985,-0.95958) + New Polarization: (-0.87746,-0.41015,0.24866) + *** FresnelRefraction *** No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.669069,0.540323,-0.510292) - Old Polarization: (0.731201,0.601457,-0.321861) - New Momentum Direction: (-0.669069,0.540323,0.510292) - New Polarization: (-0.731201,-0.601457,-0.321861) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.669069,0.540323,0.510292) - Old Polarization: (-0.731201,-0.601457,-0.321861) - New Momentum Direction: (0.669069,0.540323,0.510292) - New Polarization: (-0.731201,0.601457,0.321861) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.669069,0.540323,0.510292) - Old Polarization: (-0.731201,0.601457,0.321861) - New Momentum Direction: (0.669069,-0.540323,0.510292) - New Polarization: (0.731201,0.601457,-0.321861) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.669069,-0.540323,0.510292) - Old Polarization: (0.731201,0.601457,-0.321861) - New Momentum Direction: (0.669069,-0.540323,-0.510292) - New Polarization: (-0.731201,-0.601457,-0.321861) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.669069,-0.540323,-0.510292) - Old Polarization: (-0.731201,-0.601457,-0.321861) - New Momentum Direction: (-0.669069,-0.540323,-0.510292) - New Polarization: (-0.731201,0.601457,0.321861) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.669069,-0.540323,-0.510292) - Old Polarization: (-0.731201,0.601457,0.321861) - New Momentum Direction: (-0.669069,0.540323,-0.510292) - New Polarization: (0.731201,0.601457,-0.321861) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.669069,0.540323,-0.510292) - Old Polarization: (0.731201,0.601457,-0.321861) - New Momentum Direction: (-0.669069,0.540323,0.510292) - New Polarization: (-0.731201,-0.601457,-0.321861) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.669069,0.540323,0.510292) - Old Polarization: (-0.731201,-0.601457,-0.321861) - New Momentum Direction: (0.669069,0.540323,0.510292) - New Polarization: (-0.731201,0.601457,0.321861) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.669069,0.540323,0.510292) - Old Polarization: (-0.731201,0.601457,0.321861) - New Momentum Direction: (0.669069,-0.540323,0.510292) - New Polarization: (0.731201,0.601457,-0.321861) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.669069,-0.540323,0.510292) - Old Polarization: (0.731201,0.601457,-0.321861) - New Momentum Direction: (-0.669069,-0.540323,0.510292) - New Polarization: (0.731201,-0.601457,0.321861) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.669069,-0.540323,0.510292) - Old Polarization: (0.731201,-0.601457,0.321861) - New Momentum Direction: (-0.669069,-0.540323,-0.510292) - New Polarization: (-0.731201,0.601457,0.321861) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 847, parentID 1) is processed with stopping code 2 +Track (trackID 757, parentID 637) is processed with stopping code 2 ### pop requested out of 175 stacked tracks. ** Photon Absorbed! ** -Track (trackID 846, parentID 1) is processed with stopping code 2 +Track (trackID 756, parentID 637) is processed with stopping code 2 ### pop requested out of 174 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.619071,0.0850446,-0.780717) - Old Polarization: (-0.785157,0.0881699,-0.612988) - New Momentum Direction: (0.841758,0.115636,-0.527326) - New Polarization: (0.499062,0.20581,0.841772) + Old Momentum Direction: (0.4669,-0.38984,0.79374) + Old Polarization: (-0.8788,-0.30462,0.36732) + New Momentum Direction: (0.63226,-0.52791,0.56705) + New Polarization: (-0.11651,-0.78838,-0.60405) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 845, parentID 1) is processed with stopping code 2 +Track (trackID 755, parentID 637) is processed with stopping code 2 ### pop requested out of 173 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.696991,0.653687,-0.294783) - Old Polarization: (-0.699988,0.709449,-0.0818491) - New Momentum Direction: (0.221563,0.888939,-0.400872) - New Polarization: (-0.965784,0.256863,0.0358042) + Old Momentum Direction: (0.7533,-0.65618,-0.044437) + Old Polarization: (-0.55671,-0.60022,-0.57429) + New Momentum Direction: (0.44969,-0.89114,-0.060349) + New Polarization: (-0.82085,-0.38569,-0.42124) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 844, parentID 1) is processed with stopping code 2 +Track (trackID 754, parentID 637) is processed with stopping code 2 ### pop requested out of 172 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.633577,0.341885,-0.694042) - Old Polarization: (-0.769639,0.370075,-0.520289) - New Momentum Direction: (0.860218,0.464183,-0.211091) - New Polarization: (-0.0846232,0.538172,0.838576) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 843, parentID 1) is processed with stopping code 2 + +** Photon Absorbed! ** +Track (trackID 753, parentID 637) is processed with stopping code 2 ### pop requested out of 171 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.812258,0.439928,0.383015) - Old Polarization: (-0.573201,0.480357,0.66385) - New Momentum Direction: (0.613258,0.595736,0.518665) - New Polarization: (-0.782938,0.371573,0.498941) + Old Momentum Direction: (0.68542,0.56501,0.45931) + Old Polarization: (-0.6328,0.77427,-0.0081271) + New Momentum Direction: (0.17922,0.76339,0.62058) + New Polarization: (-0.92754,0.34138,-0.15208) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 842, parentID 1) is processed with stopping code 2 +Track (trackID 752, parentID 637) is processed with stopping code 2 ### pop requested out of 170 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.756373,-0.654139,-0.00179648) - Old Polarization: (-0.634539,-0.734371,0.240955) - New Momentum Direction: (0.472438,-0.881361,-0.0024205) - New Polarization: (-0.868375,-0.465943,0.169771) + Old Momentum Direction: (0.47039,0.013046,0.88236) + Old Polarization: (-0.87355,0.14859,0.4635) + New Momentum Direction: (0.63845,0.017707,0.76946) + New Polarization: (0.7596,0.14668,-0.63364) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 841, parentID 1) is processed with stopping code 2 +Track (trackID 751, parentID 637) is processed with stopping code 2 ### pop requested out of 169 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.835741,0.217129,0.504374) - Old Polarization: (-0.546353,0.236627,0.803434) - New Momentum Direction: (0.671686,0.292934,0.680462) - New Polarization: (-0.738904,0.198596,0.64388) + Old Momentum Direction: (0.48307,-0.47566,0.73511) + Old Polarization: (-0.86225,-0.40441,0.30493) + New Momentum Direction: (0.6522,-0.64221,0.40274) + New Polarization: (-0.39254,-0.74063,-0.54533) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 840, parentID 1) is processed with stopping code 2 +Track (trackID 750, parentID 637) is processed with stopping code 2 ### pop requested out of 168 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 839, parentID 1) is processed with stopping code 2 +Scattering Photon! +Old Momentum Direction: (0.51272,0.23176,0.82668) +Old Polarization: (-0.82644,0.39411,0.40208) +New Polarization: (-0.62072,0.43537,0.51) +Polarization Change: (-0.67931,0.47647,0.55814) +New Momentum Direction: (-0.062213,0.67263,-0.64993) +Momentum Change: (-0.066368,0.71755,-0.69333) + Photon at Boundary! + Old Momentum Direction: (-0.066368,0.71755,-0.69333) + Old Polarization: (-0.67931,0.47647,0.55814) + New Momentum Direction: (-0.090019,0.3279,-0.94041) + New Polarization: (-0.59763,-0.77313,-0.21237) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 749, parentID 637) is processed with stopping code 2 ### pop requested out of 167 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.624969,-0.18203,-0.75913) - Old Polarization: (-0.779205,-0.204598,-0.592436) - New Momentum Direction: (0.848102,-0.247021,-0.468726) - New Polarization: (0.346215,-0.4113,0.843189) + Old Momentum Direction: (0.91611,0.33067,-0.22671) + Old Polarization: (-0.3745,0.50392,-0.77834) + New Momentum Direction: (0.83881,0.44903,-0.30785) + New Polarization: (-0.52458,0.51529,-0.67771) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 838, parentID 1) is processed with stopping code 2 +Track (trackID 748, parentID 637) is processed with stopping code 2 ### pop requested out of 166 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.817514,0.383823,0.429362) - Old Polarization: (-0.568128,0.415342,0.710438) - New Momentum Direction: (0.622613,0.521528,0.583405) - New Polarization: (-0.777202,0.325274,0.538659) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 837, parentID 1) is processed with stopping code 2 -### pop requested out of 165 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.840835,-0.130118,0.52542) - Old Polarization: (-0.540512,-0.149734,0.827905) - New Momentum Direction: (0.683677,-0.175429,0.708386) - New Polarization: (-0.72924,-0.126718,0.672422) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 836, parentID 1) is processed with stopping code 2 -### pop requested out of 164 stacked tracks. Scattering Photon! -Old Momentum Direction: (0.631501,0.257878,-0.731236) -Old Polarization: (-0.773133,0.281094,-0.568552) -New Polarization: (-0.377356,0.561169,-0.546603) -Polarization Change: (-0.433977,0.64537,-0.628619) -New Momentum Direction: (0.599716,-0.205137,-0.957787) -Momentum Change: (0.522164,-0.17861,-0.833932) - Photon at Boundary! - Old Momentum Direction: (0.522164,-0.17861,-0.833932) - Old Polarization: (-0.433977,0.64537,-0.628619) - New Momentum Direction: (0.705406,-0.241289,-0.66647) - New Polarization: (0.704536,0.135662,0.696581) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 835, parentID 1) is processed with stopping code 2 -### pop requested out of 163 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 834, parentID 1) is processed with stopping code 2 -### pop requested out of 162 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.66072,0.54627,-0.514819) - Old Polarization: (-0.739521,0.591292,-0.321687) - New Momentum Direction: (-0.66072,0.54627,-0.514819) - New Polarization: (-0.739521,-0.591292,0.321687) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.66072,0.54627,-0.514819) - Old Polarization: (-0.739521,-0.591292,0.321687) - New Momentum Direction: (-0.66072,-0.54627,-0.514819) - New Polarization: (0.739521,-0.591292,-0.321687) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.66072,-0.54627,-0.514819) - Old Polarization: (0.739521,-0.591292,-0.321687) - New Momentum Direction: (-0.66072,-0.54627,0.514819) - New Polarization: (-0.739521,0.591292,-0.321687) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 833, parentID 1) is processed with stopping code 2 -### pop requested out of 161 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.685863,0.630291,-0.363766) - Old Polarization: (-0.712165,0.684156,-0.157326) - New Momentum Direction: (-0.685863,0.630291,-0.363766) - New Polarization: (-0.701229,-0.706064,0.0987476) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.685863,0.630291,-0.363766) - Old Polarization: (-0.701229,-0.706064,0.0987476) - New Momentum Direction: (-0.685863,-0.630291,-0.363766) - New Polarization: (0.701229,-0.706064,-0.0987476) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.685863,-0.630291,-0.363766) - Old Polarization: (0.701229,-0.706064,-0.0987476) - New Momentum Direction: (-0.685863,-0.630291,0.363766) - New Polarization: (-0.701229,0.706064,-0.0987476) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.685863,-0.630291,0.363766) - Old Polarization: (-0.701229,0.706064,-0.0987476) - New Momentum Direction: (-0.144853,-0.856969,0.494592) - New Polarization: (0.975898,-0.0412825,0.214285) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 832, parentID 1) is processed with stopping code 2 -### pop requested out of 160 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 831, parentID 1) is processed with stopping code 2 -### pop requested out of 159 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.628545,-0.105698,-0.770558) - Old Polarization: (-0.777217,-0.12283,-0.617128) - New Momentum Direction: (0.846509,-0.142352,-0.512989) - New Polarization: (0.468337,-0.259063,0.844717) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 830, parentID 1) is processed with stopping code 2 -### pop requested out of 158 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 829, parentID 1) is processed with stopping code 2 -### pop requested out of 157 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.642841,-0.371321,-0.669982) - Old Polarization: (-0.76033,-0.415536,-0.499228) - New Momentum Direction: (0.642841,-0.371321,0.669982) - New Polarization: (0.76033,0.415536,-0.499228) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.642841,-0.371321,0.669982) - Old Polarization: (0.76033,0.415536,-0.499228) - New Momentum Direction: (-0.642841,-0.371321,0.669982) - New Polarization: (0.76033,-0.415536,0.499228) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.642841,-0.371321,0.669982) - Old Polarization: (0.76033,-0.415536,0.499228) - New Momentum Direction: (-0.642841,0.371321,0.669982) - New Polarization: (-0.76033,-0.415536,-0.499228) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.642841,0.371321,0.669982) - Old Polarization: (-0.76033,-0.415536,-0.499228) - New Momentum Direction: (-0.642841,0.371321,-0.669982) - New Polarization: (0.76033,0.415536,-0.499228) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.642841,0.371321,-0.669982) - Old Polarization: (0.76033,0.415536,-0.499228) - New Momentum Direction: (0.642841,0.371321,-0.669982) - New Polarization: (0.76033,-0.415536,0.499228) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 828, parentID 1) is processed with stopping code 2 -### pop requested out of 156 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.702461,0.657038,-0.273587) - Old Polarization: (-0.694181,0.717322,-0.0596785) - New Momentum Direction: (-0.702461,0.657038,-0.273587) - New Polarization: (-0.662832,-0.743954,-0.0847708) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.702461,0.657038,-0.273587) - Old Polarization: (-0.662832,-0.743954,-0.0847708) - New Momentum Direction: (-0.702461,-0.657038,-0.273587) - New Polarization: (0.662832,-0.743954,0.0847708) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 827, parentID 1) is processed with stopping code 2 -### pop requested out of 155 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 826, parentID 1) is processed with stopping code 2 -### pop requested out of 154 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 825, parentID 1) is processed with stopping code 2 -### pop requested out of 153 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.663848,-0.534668,-0.52291) - Old Polarization: (-0.736297,-0.589773,-0.331714) - New Momentum Direction: (-0.663848,-0.534668,-0.52291) - New Polarization: (-0.736297,0.589773,0.331714) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.663848,-0.534668,-0.52291) - Old Polarization: (-0.736297,0.589773,0.331714) - New Momentum Direction: (-0.663848,0.534668,-0.52291) - New Polarization: (0.736297,0.589773,-0.331714) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.663848,0.534668,-0.52291) - Old Polarization: (0.736297,0.589773,-0.331714) - New Momentum Direction: (-0.663848,0.534668,0.52291) - New Polarization: (-0.736297,-0.589773,-0.331714) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 824, parentID 1) is processed with stopping code 2 -### pop requested out of 152 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.8229,-0.345439,0.451119) - Old Polarization: (-0.562407,-0.382249,0.733201) - New Momentum Direction: (0.634858,-0.469733,0.613438) - New Polarization: (-0.76867,-0.303724,0.562937) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 823, parentID 1) is processed with stopping code 2 -### pop requested out of 151 stacked tracks. +Old Momentum Direction: (0.75689,0.5985,0.2625) +Old Polarization: (-0.55296,0.80057,-0.23091) +New Polarization: (-0.362,0.47993,-0.62416) +Polarization Change: (-0.41774,0.55382,-0.72026) +New Momentum Direction: (-0.85776,-0.4893,0.12126) +Momentum Change: (-0.86214,-0.49179,0.12188) Scattering Photon! -Old Momentum Direction: (0.665322,0.554627,-0.499735) -Old Polarization: (-0.734936,0.60423,-0.307856) -New Polarization: (-0.67414,0.612256,-0.337234) -Polarization Change: (-0.694197,0.630472,-0.347267) -New Momentum Direction: (0.604736,0.265854,-0.776093) -Momentum Change: (0.593362,0.260854,-0.761496) - Photon at Boundary! - Old Momentum Direction: (0.593362,0.260854,-0.761496) - Old Polarization: (-0.694197,0.630472,-0.347267) - New Momentum Direction: (0.805078,0.353928,-0.476008) - New Polarization: (-0.0153607,0.814655,0.579743) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 822, parentID 1) is processed with stopping code 2 -### pop requested out of 150 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.721269,0.669675,-0.176936) - Old Polarization: (-0.673607,0.737657,0.0459964) - New Momentum Direction: (0.352737,0.904678,-0.239027) - New Polarization: (-0.92397,0.37711,0.0637771) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 821, parentID 1) is processed with stopping code 2 -### pop requested out of 149 stacked tracks. +Old Momentum Direction: (-0.86214,-0.49179,0.12188) +Old Polarization: (-0.41774,0.55382,-0.72026) +New Polarization: (0.035035,0.80859,-0.31483) +Polarization Change: (0.040344,0.9311,-0.36254) +New Momentum Direction: (0.99426,-0.0076367,0.09103) +Momentum Change: (0.99581,-0.0076486,0.091172) ** Photon Absorbed! ** -Track (trackID 820, parentID 1) is processed with stopping code 2 -### pop requested out of 148 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.628035,0.283247,-0.724805) - Old Polarization: (-0.775496,0.305169,-0.552701) - New Momentum Direction: (0.853465,0.384916,-0.351336) - New Polarization: (0.105594,0.532449,0.83985) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 819, parentID 1) is processed with stopping code 2 -### pop requested out of 147 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.834759,0.144086,0.531429) - Old Polarization: (-0.549359,0.152788,0.821499) - New Momentum Direction: (0.663162,0.195862,0.722395) - New Polarization: (-0.747613,0.126998,0.651879) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 818, parentID 1) is processed with stopping code 2 -### pop requested out of 146 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 817, parentID 1) is processed with stopping code 2 -### pop requested out of 145 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.70827,0.655629,-0.261735) - Old Polarization: (-0.688093,0.724004,-0.0484355) - New Momentum Direction: (-0.70827,0.655629,-0.261735) - New Polarization: (-0.644815,-0.751747,-0.138169) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.70827,0.655629,-0.261735) - Old Polarization: (-0.644815,-0.751747,-0.138169) - New Momentum Direction: (-0.70827,-0.655629,-0.261735) - New Polarization: (0.644815,-0.751747,0.138169) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.70827,-0.655629,-0.261735) - Old Polarization: (0.644815,-0.751747,0.138169) - New Momentum Direction: (-0.70827,-0.655629,0.261735) - New Polarization: (-0.644815,0.751747,0.138169) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.70827,-0.655629,0.261735) - Old Polarization: (-0.644815,0.751747,0.138169) - New Momentum Direction: (-0.304406,-0.884653,0.353165) - New Polarization: (0.914042,-0.166941,0.369672) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 816, parentID 1) is processed with stopping code 2 -### pop requested out of 144 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 815, parentID 1) is processed with stopping code 2 -### pop requested out of 143 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 814, parentID 1) is processed with stopping code 2 -### pop requested out of 142 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.81732,-0.431979,0.381291) - Old Polarization: (-0.566923,-0.484742,0.66605) - New Momentum Direction: (0.62868,-0.583033,0.514621) - New Polarization: (-0.771239,-0.382552,0.508767) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 813, parentID 1) is processed with stopping code 2 -### pop requested out of 141 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.840302,-0.0928024,0.534116) - Old Polarization: (-0.541753,-0.1076,0.833622) - New Momentum Direction: (0.680566,-0.125425,0.721872) - New Polarization: (-0.732433,-0.090533,0.674793) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 812, parentID 1) is processed with stopping code 2 -### pop requested out of 140 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.627436,-0.188087,-0.755611) - Old Polarization: (-0.777121,-0.212401,-0.592427) - New Momentum Direction: (0.849331,-0.254604,-0.4624) - New Polarization: (0.332812,-0.421651,0.843473) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 811, parentID 1) is processed with stopping code 2 -### pop requested out of 139 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.817519,0.378583,0.433979) -Old Polarization: (-0.568344,0.408675,0.714122) -New Polarization: (-0.73272,0.422064,0.188512) -Polarization Change: (-0.84576,0.487178,0.217595) -New Momentum Direction: (-0.140557,0.133275,-1.13941) -Momentum Change: (-0.121614,0.115314,-0.985856) - -** Photon Absorbed! ** -Track (trackID 810, parentID 1) is processed with stopping code 2 -### pop requested out of 138 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.82027,0.359099,0.445203) - Old Polarization: (-0.56509,0.388362,0.727907) - New Momentum Direction: (0.629361,0.487888,0.604872) - New Polarization: (-0.772392,0.307059,0.555991) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 809, parentID 1) is processed with stopping code 2 -### pop requested out of 137 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.828459,-0.276499,0.487036) - Old Polarization: (-0.55637,-0.30681,0.772217) - New Momentum Direction: (0.647947,-0.376048,0.662384) - New Polarization: (-0.759163,-0.248111,0.601758) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 808, parentID 1) is processed with stopping code 2 -### pop requested out of 136 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.75739,-0.652319,0.0289915) - Old Polarization: (-0.633732,-0.723661,0.27331) - New Momentum Direction: (0.46652,-0.883638,0.0392721) - New Polarization: (-0.871917,-0.451958,0.188402) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 807, parentID 1) is processed with stopping code 2 -### pop requested out of 135 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.643441,0.377671,-0.665844) - Old Polarization: (-0.760364,0.415867,-0.498899) - New Momentum Direction: (0.643441,0.377671,0.665844) - New Polarization: (0.760364,-0.415867,-0.498899) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.643441,0.377671,0.665844) - Old Polarization: (0.760364,-0.415867,-0.498899) - New Momentum Direction: (-0.643441,0.377671,0.665844) - New Polarization: (0.760364,0.415867,0.498899) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.643441,0.377671,0.665844) - Old Polarization: (0.760364,0.415867,0.498899) - New Momentum Direction: (-0.643441,-0.377671,0.665844) - New Polarization: (-0.760364,0.415867,-0.498899) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 806, parentID 1) is processed with stopping code 2 -### pop requested out of 134 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.745655,-0.662553,-0.0708683) - Old Polarization: (-0.64647,-0.745099,0.164022) - New Momentum Direction: (0.441895,-0.891979,-0.0954082) - New Polarization: (-0.884079,-0.451059,0.122268) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 805, parentID 1) is processed with stopping code 2 -### pop requested out of 133 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 804, parentID 1) is processed with stopping code 2 -### pop requested out of 132 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.627468,-0.255106,-0.735666) - Old Polarization: (-0.775941,-0.283488,-0.563515) - New Momentum Direction: (0.853312,-0.346925,-0.389233) - New Polarization: (0.175726,-0.511486,0.841132) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 803, parentID 1) is processed with stopping code 2 -### pop requested out of 131 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.822664,-0.407961,0.395969) - Old Polarization: (-0.560108,-0.462161,0.687522) - New Momentum Direction: (0.644891,-0.548425,0.532303) - New Polarization: (-0.758379,-0.372842,0.53465) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 802, parentID 1) is processed with stopping code 2 -### pop requested out of 130 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.674057,0.573381,-0.465705) - Old Polarization: (-0.725939,0.630781,-0.274094) - New Momentum Direction: (0.06354,0.774656,-0.629183) - New Polarization: (-0.992142,0.117124,0.0440092) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 801, parentID 1) is processed with stopping code 2 -### pop requested out of 129 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.68929,-0.61845,-0.377356) -Old Polarization: (-0.708619,-0.683929,-0.173491) -New Polarization: (-0.754944,-0.512321,-0.0111643) -Polarization Change: (-0.827395,-0.561488,-0.0122357) -New Momentum Direction: (-0.546856,0.810042,-0.231926) -Momentum Change: (-0.544409,0.806417,-0.230888) - -** Photon Absorbed! ** -Track (trackID 800, parentID 1) is processed with stopping code 2 -### pop requested out of 128 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.662052,0.519395,-0.540292) - Old Polarization: (-0.739266,0.571071,-0.356882) - New Momentum Direction: (-0.662052,0.519395,-0.540292) - New Polarization: (-0.739266,-0.571071,0.356882) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.662052,0.519395,-0.540292) - Old Polarization: (-0.739266,-0.571071,0.356882) - New Momentum Direction: (-0.662052,0.519395,0.540292) - New Polarization: (0.739266,0.571071,0.356882) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.662052,0.519395,0.540292) - Old Polarization: (0.739266,0.571071,0.356882) - New Momentum Direction: (-0.662052,-0.519395,0.540292) - New Polarization: (-0.739266,0.571071,-0.356882) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.662052,-0.519395,0.540292) - Old Polarization: (-0.739266,0.571071,-0.356882) - New Momentum Direction: (0.662052,-0.519395,0.540292) - New Polarization: (-0.739266,-0.571071,0.356882) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.662052,-0.519395,0.540292) - Old Polarization: (-0.739266,-0.571071,0.356882) - New Momentum Direction: (0.662052,-0.519395,-0.540292) - New Polarization: (0.739266,0.571071,0.356882) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.662052,-0.519395,-0.540292) - Old Polarization: (0.739266,0.571071,0.356882) - New Momentum Direction: (0.662052,0.519395,-0.540292) - New Polarization: (-0.739266,0.571071,-0.356882) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.662052,0.519395,-0.540292) - Old Polarization: (-0.739266,0.571071,-0.356882) - New Momentum Direction: (-0.662052,0.519395,-0.540292) - New Polarization: (-0.739266,-0.571071,0.356882) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.662052,0.519395,-0.540292) - Old Polarization: (-0.739266,-0.571071,0.356882) - New Momentum Direction: (-0.662052,0.519395,0.540292) - New Polarization: (0.739266,0.571071,0.356882) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.662052,0.519395,0.540292) - Old Polarization: (0.739266,0.571071,0.356882) - New Momentum Direction: (-0.662052,-0.519395,0.540292) - New Polarization: (-0.739266,0.571071,-0.356882) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.662052,-0.519395,0.540292) - Old Polarization: (-0.739266,0.571071,-0.356882) - New Momentum Direction: (0.662052,-0.519395,0.540292) - New Polarization: (-0.739266,-0.571071,0.356882) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 799, parentID 1) is processed with stopping code 2 -### pop requested out of 127 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 798, parentID 1) is processed with stopping code 2 -### pop requested out of 126 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.82691,-0.298916,0.476308) - Old Polarization: (-0.558018,-0.331433,0.760769) - New Momentum Direction: (0.644448,-0.406458,0.647672) - New Polarization: (-0.761688,-0.266779,0.590474) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 797, parentID 1) is processed with stopping code 2 -### pop requested out of 125 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.828482,0.265395,0.493136) - Old Polarization: (-0.55609,0.285798,0.780438) - New Momentum Direction: (0.648947,0.360564,0.669971) - New Polarization: (-0.758136,0.232368,0.60929) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 796, parentID 1) is processed with stopping code 2 -### pop requested out of 124 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.675544,-0.569027,-0.46888) - Old Polarization: (-0.723974,-0.632361,-0.275648) - New Momentum Direction: (0.0559962,-0.77054,-0.634927) - New Polarization: (-0.992417,-0.112646,0.049181) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 795, parentID 1) is processed with stopping code 2 -### pop requested out of 123 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.725913,0.669134,-0.15909) - Old Polarization: (-0.668501,0.740815,0.0655657) - New Momentum Direction: (0.374961,0.9019,-0.214431) - New Polarization: (-0.914922,0.397302,0.0711959) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 794, parentID 1) is processed with stopping code 2 -### pop requested out of 122 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 793, parentID 1) is processed with stopping code 2 -### pop requested out of 121 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 792, parentID 1) is processed with stopping code 2 -### pop requested out of 120 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.828032,-0.289449,0.48019) - Old Polarization: (-0.556627,-0.32157,0.766002) - New Momentum Direction: (0.647723,-0.393315,0.652501) - New Polarization: (-0.759091,-0.260003,0.596808) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 791, parentID 1) is processed with stopping code 2 -### pop requested out of 119 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.7617,0.640357,0.0987696) - Old Polarization: (-0.629288,0.694837,0.348135) - New Momentum Direction: (0.47286,0.87084,0.13432) - New Polarization: (-0.868977,0.435646,0.234715) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 790, parentID 1) is processed with stopping code 2 -### pop requested out of 118 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.629823,0.256286,-0.73324) - Old Polarization: (-0.77454,0.278204,-0.568059) - New Momentum Direction: (0.852378,0.346847,-0.391341) - New Polarization: (0.178479,0.510467,0.841171) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 789, parentID 1) is processed with stopping code 2 -### pop requested out of 117 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 788, parentID 1) is processed with stopping code 2 -### pop requested out of 116 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.693862,-0.633725,-0.341976) - Old Polarization: (-0.703452,-0.698051,-0.133713) - New Momentum Direction: (0.205239,-0.861308,-0.464786) - New Polarization: (-0.969727,-0.243162,0.0224006) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 787, parentID 1) is processed with stopping code 2 -### pop requested out of 115 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.782348,-0.594686,0.18515) - Old Polarization: (-0.606315,-0.659138,0.444882) - New Momentum Direction: (0.535881,-0.806127,0.25098) - New Polarization: (-0.833178,-0.456841,0.311625) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 786, parentID 1) is processed with stopping code 2 -### pop requested out of 114 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.702714,-0.632724,-0.325349) - Old Polarization: (-0.694339,-0.709636,-0.119619) - New Momentum Direction: (0.282985,-0.852966,-0.438598) - New Polarization: (-0.949048,-0.315132,0.000527204) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 785, parentID 1) is processed with stopping code 2 -### pop requested out of 113 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 784, parentID 1) is processed with stopping code 2 -### pop requested out of 112 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.7543,-0.656202,0.0207346) - Old Polarization: (-0.637274,-0.724219,0.263416) - New Momentum Direction: (0.453191,-0.890969,0.0281528) - New Polarization: (-0.878934,-0.441357,0.180775) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 783, parentID 1) is processed with stopping code 2 -### pop requested out of 111 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 782, parentID 1) is processed with stopping code 2 -### pop requested out of 110 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.825154,0.324858,0.462157) - Old Polarization: (-0.55913,0.352943,0.750203) - New Momentum Direction: (0.643462,0.440198,0.626245) - New Polarization: (-0.76149,0.284701,0.582304) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 781, parentID 1) is processed with stopping code 2 -### pop requested out of 109 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.620472,-0.0376719,-0.783323) - Old Polarization: (-0.784124,-0.0461332,-0.618888) - New Momentum Direction: (0.842054,-0.0511252,-0.536965) - New Polarization: (0.530876,-0.0976555,0.841804) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 780, parentID 1) is processed with stopping code 2 -### pop requested out of 108 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 779, parentID 1) is processed with stopping code 2 -### pop requested out of 107 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.633944,-0.328703,-0.70005) - Old Polarization: (-0.768981,-0.3643,-0.525313) - New Momentum Direction: (0.861679,-0.446784,-0.240609) - New Polarization: (-0.0475507,-0.543155,0.838285) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 778, parentID 1) is processed with stopping code 2 -### pop requested out of 106 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.838974,0.0462191,0.542206) - Old Polarization: (-0.543998,0.0460655,0.837821) - New Momentum Direction: (0.675212,0.0626498,0.734958) - New Polarization: (-0.737504,0.0393646,0.674195) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 777, parentID 1) is processed with stopping code 2 -### pop requested out of 105 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 776, parentID 1) is processed with stopping code 2 -### pop requested out of 104 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.625399,-0.117868,-0.771351) - Old Polarization: (-0.779639,-0.135204,-0.611459) - New Momentum Direction: (0.845696,-0.159387,-0.509308) - New Polarization: (0.454263,-0.285868,0.843756) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 775, parentID 1) is processed with stopping code 2 -### pop requested out of 103 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.626439,-0.127412,-0.768987) - Old Polarization: (-0.778705,-0.146027,-0.61016) - New Momentum Direction: (0.846404,-0.172152,-0.503949) - New Polarization: (0.440237,-0.306288,0.844026) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 774, parentID 1) is processed with stopping code 2 -### pop requested out of 102 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.812383,0.452964,0.367228) - Old Polarization: (-0.572338,0.498814,0.650856) - New Momentum Direction: (0.61727,0.61114,0.495465) - New Polarization: (-0.779278,0.388342,0.49185) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 773, parentID 1) is processed with stopping code 2 -### pop requested out of 101 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.667679,-0.537399,-0.515177) - Old Polarization: (-0.732617,-0.597212,-0.326512) - New Momentum Direction: (-0.667679,-0.537399,-0.515177) - New Polarization: (-0.732617,0.597212,0.326512) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.667679,-0.537399,-0.515177) - Old Polarization: (-0.732617,0.597212,0.326512) - New Momentum Direction: (-0.667679,0.537399,-0.515177) - New Polarization: (0.732617,0.597212,-0.326512) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.667679,0.537399,-0.515177) - Old Polarization: (0.732617,0.597212,-0.326512) - New Momentum Direction: (-0.667679,0.537399,0.515177) - New Polarization: (-0.732617,-0.597212,-0.326512) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.667679,0.537399,0.515177) - Old Polarization: (-0.732617,-0.597212,-0.326512) - New Momentum Direction: (0.667679,0.537399,0.515177) - New Polarization: (-0.732617,0.597212,0.326512) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 772, parentID 1) is processed with stopping code 2 -### pop requested out of 100 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.800231,-0.516664,0.304447) - Old Polarization: (-0.586974,-0.570822,0.574129) - New Momentum Direction: (0.58015,-0.701741,0.413505) - New Polarization: (-0.805872,-0.420789,0.41654) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 771, parentID 1) is processed with stopping code 2 -### pop requested out of 99 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.819409,0.394759,0.415614) -Old Polarization: (-0.564844,0.432654,0.702682) -New Polarization: (-0.138769,0.607002,0.608745) -Polarization Change: (-0.15936,0.697069,0.69907) -New Momentum Direction: (0.972843,0.231195,-0.014228) -Momentum Change: (0.972806,0.231186,-0.0142274) - Photon at Boundary! - Old Momentum Direction: (0.972806,0.231186,-0.0142274) - Old Polarization: (-0.15936,0.697069,0.69907) - New Momentum Direction: (0.949763,0.312379,-0.0192242) - New Polarization: (-0.242877,0.7744,0.584223) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 770, parentID 1) is processed with stopping code 2 -### pop requested out of 98 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.621608,-0.142472,-0.770263) - Old Polarization: (-0.78241,-0.160522,-0.60172) - New Momentum Direction: (0.845122,-0.193701,-0.498245) - New Polarization: (0.419515,-0.337355,0.842733) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 769, parentID 1) is processed with stopping code 2 -### pop requested out of 97 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.618973,0.0619089,-0.782968) - Old Polarization: (-0.785333,0.0629221,-0.615867) - New Momentum Direction: (0.841403,0.0841561,-0.533815) - New Polarization: (0.518815,0.15064,0.841509) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 768, parentID 1) is processed with stopping code 2 -### pop requested out of 96 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.679441,-0.59735,-0.426067) - Old Polarization: (-0.719154,-0.657333,-0.225233) - New Momentum Direction: (-0.679441,-0.59735,-0.426067) - New Polarization: (-0.715303,0.668583,0.203319) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.679441,-0.59735,-0.426067) - Old Polarization: (-0.715303,0.668583,0.203319) - New Momentum Direction: (-0.679441,0.59735,-0.426067) - New Polarization: (0.715303,0.668583,-0.203319) - *** TotalInternalReflection *** -No Absorbtion length specified -Scattering Photon! -Old Momentum Direction: (-0.679441,0.59735,-0.426067) -Old Polarization: (0.715303,0.668583,-0.203319) -New Polarization: (0.563396,0.722694,-0.0510716) -Polarization Change: (0.613872,0.787442,-0.0556472) -New Momentum Direction: (0.444319,-0.39841,-0.874506) -Momentum Change: (0.419672,-0.376309,-0.825995) - Photon at Boundary! - Old Momentum Direction: (0.419672,-0.376309,-0.825995) - Old Polarization: (0.613872,0.787442,-0.0556472) - New Momentum Direction: (0.419672,0.376309,-0.825995) - New Polarization: (-0.613872,0.787442,0.0556472) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.419672,0.376309,-0.825995) - Old Polarization: (-0.613872,0.787442,0.0556472) - New Momentum Direction: (0.57075,0.511778,-0.642127) - New Polarization: (-0.602946,0.792063,0.0953524) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 767, parentID 1) is processed with stopping code 2 -### pop requested out of 95 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 766, parentID 1) is processed with stopping code 2 -### pop requested out of 94 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 765, parentID 1) is processed with stopping code 2 -### pop requested out of 93 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.829909,-0.264566,0.491178) - Old Polarization: (-0.554523,-0.294467,0.778327) - New Momentum Direction: (0.652322,-0.35943,0.667298) - New Polarization: (-0.755621,-0.239551,0.609633) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 764, parentID 1) is processed with stopping code 2 -### pop requested out of 92 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 763, parentID 1) is processed with stopping code 2 -### pop requested out of 91 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.836077,0.19461,0.512935) - Old Polarization: (-0.546367,0.210862,0.810568) - New Momentum Direction: (0.671205,0.262953,0.693065) - New Polarization: (-0.73971,0.176943,0.649246) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 762, parentID 1) is processed with stopping code 2 -### pop requested out of 90 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.681763,-0.603651,-0.413284) - Old Polarization: (-0.716647,-0.664607,-0.211458) - New Momentum Direction: (-0.681763,-0.603651,-0.413284) - New Polarization: (-0.709888,0.682401,0.174319) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.681763,-0.603651,-0.413284) - Old Polarization: (-0.709888,0.682401,0.174319) - New Momentum Direction: (-0.681763,0.603651,-0.413284) - New Polarization: (0.709888,0.682401,-0.174319) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 761, parentID 1) is processed with stopping code 2 -### pop requested out of 89 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.832034,0.254632,0.49283) - Old Polarization: (-0.551024,0.276933,0.787198) - New Momentum Direction: (0.661359,0.344301,0.666379) - New Polarization: (-0.747501,0.229087,0.623507) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 760, parentID 1) is processed with stopping code 2 -### pop requested out of 88 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.713768,0.667352,-0.212545) - Old Polarization: (-0.681825,0.731482,0.00701572) - New Momentum Direction: (0.317533,0.903529,-0.287765) - New Polarization: (-0.937122,0.345358,0.0502966) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 759, parentID 1) is processed with stopping code 2 -### pop requested out of 87 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.665111,-0.522586,-0.533415) - Old Polarization: (-0.735551,-0.5817,-0.347261) - New Momentum Direction: (-0.665111,-0.522586,-0.533415) - New Polarization: (-0.735551,0.5817,0.347261) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.665111,-0.522586,-0.533415) - Old Polarization: (-0.735551,0.5817,0.347261) - New Momentum Direction: (-0.665111,-0.522586,0.533415) - New Polarization: (0.735551,-0.5817,0.347261) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.665111,-0.522586,0.533415) - Old Polarization: (0.735551,-0.5817,0.347261) - New Momentum Direction: (-0.665111,0.522586,0.533415) - New Polarization: (-0.735551,-0.5817,-0.347261) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.665111,0.522586,0.533415) - Old Polarization: (-0.735551,-0.5817,-0.347261) - New Momentum Direction: (0.665111,0.522586,0.533415) - New Polarization: (-0.735551,0.5817,0.347261) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.665111,0.522586,0.533415) - Old Polarization: (-0.735551,0.5817,0.347261) - New Momentum Direction: (0.665111,0.522586,-0.533415) - New Polarization: (0.735551,-0.5817,0.347261) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.665111,0.522586,-0.533415) - Old Polarization: (0.735551,-0.5817,0.347261) - New Momentum Direction: (0.665111,-0.522586,-0.533415) - New Polarization: (-0.735551,-0.5817,-0.347261) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 758, parentID 1) is processed with stopping code 2 -### pop requested out of 86 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.833741,0.241905,0.496344) - Old Polarization: (-0.548774,0.263706,0.793288) - New Momentum Direction: (0.666486,0.326619,0.670161) - New Polarization: (-0.743164,0.219699,0.632012) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 757, parentID 1) is processed with stopping code 2 -### pop requested out of 85 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.63473,-0.247195,-0.732129) - Old Polarization: (-0.770115,-0.280298,-0.573023) - New Momentum Direction: (0.855512,-0.333178,-0.396347) - New Polarization: (0.193279,-0.504649,0.841411) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 756, parentID 1) is processed with stopping code 2 -### pop requested out of 84 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 755, parentID 1) is processed with stopping code 2 -### pop requested out of 83 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.639012,0.38682,-0.664856) - Old Polarization: (-0.763909,0.420318,-0.489669) - New Momentum Direction: (0.639012,0.38682,0.664856) - New Polarization: (0.763909,-0.420318,-0.489669) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.639012,0.38682,0.664856) - Old Polarization: (0.763909,-0.420318,-0.489669) - New Momentum Direction: (-0.639012,0.38682,0.664856) - New Polarization: (0.763909,0.420318,0.489669) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.639012,0.38682,0.664856) - Old Polarization: (0.763909,0.420318,0.489669) - New Momentum Direction: (-0.639012,-0.38682,0.664856) - New Polarization: (-0.763909,0.420318,-0.489669) - *** TotalInternalReflection *** -No Absorbtion length specified -Scattering Photon! -Old Momentum Direction: (-0.639012,-0.38682,0.664856) -Old Polarization: (-0.763909,0.420318,-0.489669) -New Polarization: (-0.747219,0.43216,0.0715325) -Polarization Change: (-0.86269,0.498944,0.0825867) -New Momentum Direction: (-0.14153,-0.103687,-1.1376) -Momentum Change: (-0.122957,-0.0900805,-0.988315) - Photon at Boundary! - Old Momentum Direction: (-0.122957,-0.0900805,-0.988315) - Old Polarization: (-0.86269,0.498944,0.0825867) - New Momentum Direction: (0.122957,-0.0900805,-0.988315) - New Polarization: (-0.86269,-0.498944,-0.0825867) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.122957,-0.0900805,-0.988315) - Old Polarization: (-0.86269,-0.498944,-0.0825867) - New Momentum Direction: (0.166767,-0.122176,-0.978398) - New Polarization: (-0.0937679,-0.989761,0.107612) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 754, parentID 1) is processed with stopping code 2 -### pop requested out of 82 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.622164,0.105056,-0.775806) - Old Polarization: (-0.782589,0.110819,-0.612596) - New Momentum Direction: (0.843311,0.142398,-0.518217) - New Polarization: (0.475504,0.25165,0.842952) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 753, parentID 1) is processed with stopping code 2 -### pop requested out of 81 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.768196,0.626705,0.13083) - Old Polarization: (-0.622041,0.682292,0.384113) - New Momentum Direction: (0.494333,0.850928,0.177638) - New Polarization: (-0.857273,0.443385,0.261713) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 752, parentID 1) is processed with stopping code 2 -### pop requested out of 80 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.631625,0.323021,-0.704774) -Old Polarization: (-0.771701,0.349133,-0.531586) -New Polarization: (-0.683529,-0.0923189,-0.534631) -Polarization Change: (-0.783256,-0.105788,-0.612633) -New Momentum Direction: (0.515591,0.160639,-1.03121) -Momentum Change: (0.442926,0.138,-0.885874) - Photon at Boundary! - Old Momentum Direction: (0.442926,0.138,-0.885874) - Old Polarization: (-0.783256,-0.105788,-0.612633) - New Momentum Direction: (0.601569,0.187427,-0.776522) - New Polarization: (0.709518,0.321253,0.627201) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 751, parentID 1) is processed with stopping code 2 -### pop requested out of 79 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.786412,-0.576581,0.221608) - Old Polarization: (-0.602188,-0.635722,0.482936) - New Momentum Direction: (0.543484,-0.783538,0.301152) - New Polarization: (-0.829003,-0.444668,0.339152) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 750, parentID 1) is processed with stopping code 2 -### pop requested out of 78 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.627855,-0.181522,-0.756867) - Old Polarization: (-0.776878,-0.205544,-0.595158) - New Momentum Direction: (0.849167,-0.245507,-0.467592) - New Polarization: (0.345878,-0.410557,0.843689) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 749, parentID 1) is processed with stopping code 2 -### pop requested out of 77 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.627805,0.169865,-0.75961) - Old Polarization: (-0.777466,0.183889,-0.601441) - New Momentum Direction: (0.847353,0.229268,-0.478988) - New Polarization: (0.373067,0.384892,0.844203) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 748, parentID 1) is processed with stopping code 2 -### pop requested out of 76 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.717111,0.673659,-0.178707) - Old Polarization: (-0.678045,0.733656,0.0447674) - New Momentum Direction: (0.323041,0.914746,-0.242663) - New Polarization: (-0.93506,0.348053,0.0672442) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 747, parentID 1) is processed with stopping code 2 -### pop requested out of 75 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.632947,0.317149,-0.706254) - Old Polarization: (-0.770736,0.344272,-0.536137) - New Momentum Direction: (0.857877,0.429854,-0.281555) - New Polarization: (0.00124059,0.546192,0.837659) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 746, parentID 1) is processed with stopping code 2 -### pop requested out of 74 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 745, parentID 1) is processed with stopping code 2 -### pop requested out of 73 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.655182,0.456283,-0.602115) - Old Polarization: (-0.74769,0.50573,-0.430345) - New Momentum Direction: (-0.655182,0.456283,-0.602115) - New Polarization: (-0.74769,-0.50573,0.430345) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.655182,0.456283,-0.602115) - Old Polarization: (-0.74769,-0.50573,0.430345) - New Momentum Direction: (-0.655182,0.456283,0.602115) - New Polarization: (0.74769,0.50573,0.430345) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 744, parentID 1) is processed with stopping code 2 -### pop requested out of 72 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.764605,-0.642819,0.0465143) - Old Polarization: (-0.625325,-0.72245,0.295017) - New Momentum Direction: (0.496571,-0.865733,0.0626444) - New Polarization: (-0.855148,-0.475573,0.206282) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 743, parentID 1) is processed with stopping code 2 -### pop requested out of 71 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 742, parentID 1) is processed with stopping code 2 -### pop requested out of 70 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.697915,0.628768,-0.342878) - Old Polarization: (-0.69996,0.700171,-0.140774) - New Momentum Direction: (0.270723,0.845161,-0.460881) - New Polarization: (-0.953163,0.30241,-0.00533345) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 741, parentID 1) is processed with stopping code 2 -### pop requested out of 69 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 740, parentID 1) is processed with stopping code 2 -### pop requested out of 68 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.635249,0.367789,-0.67911) - Old Polarization: (-0.767596,0.397656,-0.50266) - New Momentum Direction: (0.863292,0.499818,-0.0700565) - New Polarization: (-0.209385,0.480982,0.85136) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 739, parentID 1) is processed with stopping code 2 -### pop requested out of 67 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.656323,-0.493395,-0.570791) - Old Polarization: (-0.744643,-0.54538,-0.384796) - New Momentum Direction: (-0.656323,-0.493395,-0.570791) - New Polarization: (-0.744643,0.54538,0.384796) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.656323,-0.493395,-0.570791) - Old Polarization: (-0.744643,0.54538,0.384796) - New Momentum Direction: (-0.656323,-0.493395,0.570791) - New Polarization: (0.744643,-0.54538,0.384796) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.656323,-0.493395,0.570791) - Old Polarization: (0.744643,-0.54538,0.384796) - New Momentum Direction: (-0.656323,0.493395,0.570791) - New Polarization: (-0.744643,-0.54538,-0.384796) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 738, parentID 1) is processed with stopping code 2 -### pop requested out of 66 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.764158,-0.638686,0.0902359) - Old Polarization: (-0.62664,-0.701908,0.338597) - New Momentum Direction: (0.479454,-0.868938,0.122767) - New Polarization: (-0.865545,-0.445159,0.229489) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 737, parentID 1) is processed with stopping code 2 -### pop requested out of 65 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 736, parentID 1) is processed with stopping code 2 -### pop requested out of 64 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 735, parentID 1) is processed with stopping code 2 -### pop requested out of 63 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.626782,0.210235,-0.750297) - Old Polarization: (-0.777766,0.227089,-0.586099) - New Momentum Direction: (0.848701,0.28467,-0.445724) - New Polarization: (0.291083,0.452221,0.84307) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 734, parentID 1) is processed with stopping code 2 -### pop requested out of 62 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.797292,-0.530291,0.288299) - Old Polarization: (-0.590267,-0.585187,0.556005) - New Momentum Direction: (0.572119,-0.720567,0.391744) - New Polarization: (-0.811145,-0.426445,0.400235) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 733, parentID 1) is processed with stopping code 2 -### pop requested out of 61 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 732, parentID 1) is processed with stopping code 2 -### pop requested out of 60 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 731, parentID 1) is processed with stopping code 2 -### pop requested out of 59 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 730, parentID 1) is processed with stopping code 2 -### pop requested out of 58 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.737251,0.66956,-0.0902808) - Old Polarization: (-0.655867,0.741353,0.142245) - New Momentum Direction: (0.413273,0.902441,-0.121681) - New Polarization: (-0.89791,0.426092,0.110463) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 729, parentID 1) is processed with stopping code 2 -### pop requested out of 57 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 728, parentID 1) is processed with stopping code 2 -### pop requested out of 56 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.837246,0.232821,0.494787) - Old Polarization: (-0.543617,0.256478,0.799187) - New Momentum Direction: (0.678411,0.312804,0.664765) - New Polarization: (-0.732426,0.217096,0.645307) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 727, parentID 1) is processed with stopping code 2 -### pop requested out of 55 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.81319,-0.42967,0.392562) - Old Polarization: (-0.573115,-0.473794,0.668624) - New Momentum Direction: (0.610793,-0.584553,0.534068) - New Polarization: (-0.785734,-0.364217,0.499968) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 726, parentID 1) is processed with stopping code 2 -### pop requested out of 54 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.704628,0.643838,-0.298281) - Old Polarization: (-0.692373,0.71585,-0.0904323) - New Momentum Direction: (0.298216,0.866069,-0.401238) - New Polarization: (-0.944217,0.329207,0.00881003) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 725, parentID 1) is processed with stopping code 2 -### pop requested out of 53 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.636929,0.369154,-0.676792) -Old Polarization: (-0.766145,0.400691,-0.502463) -New Polarization: (0.123643,0.955545,0.0205695) -Polarization Change: (0.128296,0.991506,0.0213437) -New Momentum Direction: (0.956249,-0.118182,-0.277696) -Momentum Change: (0.953633,-0.117859,-0.276936) - Photon at Boundary! - Old Momentum Direction: (0.953633,-0.117859,-0.276936) - Old Polarization: (0.128296,0.991506,0.0213437) - New Momentum Direction: (0.912846,-0.15989,-0.375697) - New Polarization: (-0.221553,0.578932,-0.784699) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 724, parentID 1) is processed with stopping code 2 -### pop requested out of 52 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.764435,-0.643239,0.043378) - Old Polarization: (-0.625481,-0.723659,0.291704) - New Momentum Direction: (0.496791,-0.865903,0.0583938) - New Polarization: (-0.854981,-0.47675,0.204248) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 723, parentID 1) is processed with stopping code 2 -### pop requested out of 51 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.684896,-0.606249,-0.404203) - Old Polarization: (-0.713454,-0.670645,-0.203026) - New Momentum Direction: (0.151066,-0.822478,-0.54837) - New Polarization: (-0.980775,-0.194026,0.0208262) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 722, parentID 1) is processed with stopping code 2 -### pop requested out of 50 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.63132,-0.269997,-0.727005) - Old Polarization: (-0.772483,-0.301847,-0.558711) - New Momentum Direction: (0.855826,-0.366012,-0.36551) - New Polarization: (0.1341,-0.525468,0.840179) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 721, parentID 1) is processed with stopping code 2 -### pop requested out of 49 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.622335,0.0266639,-0.782297) - Old Polarization: (-0.782747,0.0246263,-0.621853) - New Momentum Direction: (0.84244,0.0360943,-0.53758) - New Polarization: (0.534904,0.0635905,0.842517) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 720, parentID 1) is processed with stopping code 2 -### pop requested out of 48 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.79142,-0.559179,0.246928) - Old Polarization: (-0.596526,-0.618312,0.511709) - New Momentum Direction: (0.558236,-0.758975,0.335156) - New Polarization: (-0.819715,-0.4421,0.364164) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 719, parentID 1) is processed with stopping code 2 -### pop requested out of 47 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.648558,0.432173,-0.626578) - Old Polarization: (-0.754339,0.474932,-0.453224) - New Momentum Direction: (-0.648558,0.432173,-0.626578) - New Polarization: (-0.754339,-0.474932,0.453224) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.648558,0.432173,-0.626578) - Old Polarization: (-0.754339,-0.474932,0.453224) - New Momentum Direction: (-0.648558,0.432173,0.626578) - New Polarization: (0.754339,0.474932,0.453224) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.648558,0.432173,0.626578) - Old Polarization: (0.754339,0.474932,0.453224) - New Momentum Direction: (-0.648558,-0.432173,0.626578) - New Polarization: (-0.754339,0.474932,-0.453224) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.648558,-0.432173,0.626578) - Old Polarization: (-0.754339,0.474932,-0.453224) - New Momentum Direction: (0.648558,-0.432173,0.626578) - New Polarization: (-0.754339,-0.474932,0.453224) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.648558,-0.432173,0.626578) - Old Polarization: (-0.754339,-0.474932,0.453224) - New Momentum Direction: (0.648558,-0.432173,-0.626578) - New Polarization: (0.754339,0.474932,0.453224) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.648558,-0.432173,-0.626578) - Old Polarization: (0.754339,0.474932,0.453224) - New Momentum Direction: (0.648558,0.432173,-0.626578) - New Polarization: (-0.754339,0.474932,-0.453224) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.648558,0.432173,-0.626578) - Old Polarization: (-0.754339,0.474932,-0.453224) - New Momentum Direction: (-0.648558,0.432173,-0.626578) - New Polarization: (-0.754339,-0.474932,0.453224) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.648558,0.432173,-0.626578) - Old Polarization: (-0.754339,-0.474932,0.453224) - New Momentum Direction: (-0.648558,0.432173,0.626578) - New Polarization: (0.754339,0.474932,0.453224) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.648558,0.432173,0.626578) - Old Polarization: (0.754339,0.474932,0.453224) - New Momentum Direction: (0.648558,0.432173,0.626578) - New Polarization: (0.754339,-0.474932,-0.453224) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.648558,0.432173,0.626578) - Old Polarization: (0.754339,-0.474932,-0.453224) - New Momentum Direction: (0.648558,0.432173,-0.626578) - New Polarization: (-0.754339,0.474932,-0.453224) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.648558,0.432173,-0.626578) - Old Polarization: (-0.754339,0.474932,-0.453224) - New Momentum Direction: (0.648558,-0.432173,-0.626578) - New Polarization: (0.754339,0.474932,0.453224) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.648558,-0.432173,-0.626578) - Old Polarization: (0.754339,0.474932,0.453224) - New Momentum Direction: (-0.648558,-0.432173,-0.626578) - New Polarization: (0.754339,-0.474932,-0.453224) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.648558,-0.432173,-0.626578) - Old Polarization: (0.754339,-0.474932,-0.453224) - New Momentum Direction: (-0.648558,-0.432173,0.626578) - New Polarization: (-0.754339,0.474932,-0.453224) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.648558,-0.432173,0.626578) - Old Polarization: (-0.754339,0.474932,-0.453224) - New Momentum Direction: (-0.648558,0.432173,0.626578) - New Polarization: (0.754339,0.474932,0.453224) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.648558,0.432173,0.626578) - Old Polarization: (0.754339,0.474932,0.453224) - New Momentum Direction: (0.648558,0.432173,0.626578) - New Polarization: (0.754339,-0.474932,-0.453224) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.648558,0.432173,0.626578) - Old Polarization: (0.754339,-0.474932,-0.453224) - New Momentum Direction: (0.648558,0.432173,-0.626578) - New Polarization: (-0.754339,0.474932,-0.453224) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.648558,0.432173,-0.626578) - Old Polarization: (-0.754339,0.474932,-0.453224) - New Momentum Direction: (-0.648558,0.432173,-0.626578) - New Polarization: (-0.754339,-0.474932,0.453224) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 718, parentID 1) is processed with stopping code 2 -### pop requested out of 46 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.833137,-0.198455,0.516235) - Old Polarization: (-0.551216,-0.221644,0.804385) - New Momentum Direction: (0.6591,-0.269858,0.701971) - New Polarization: (-0.750784,-0.181857,0.635021) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 717, parentID 1) is processed with stopping code 2 -### pop requested out of 45 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.817248,0.420865,0.393673) - Old Polarization: (-0.566816,0.463694,0.680961) - New Momentum Direction: (0.629377,0.567521,0.530853) - New Polarization: (-0.770519,0.367025,0.521147) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 716, parentID 1) is processed with stopping code 2 -### pop requested out of 44 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.631551,-0.313213,-0.709254) - Old Polarization: (-0.771343,-0.346518,-0.533812) - New Momentum Direction: (0.859379,-0.426203,-0.282522) - New Polarization: (0.00543719,-0.544866,0.838505) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 715, parentID 1) is processed with stopping code 2 -### pop requested out of 43 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.677414,0.604241,-0.419527) - Old Polarization: (-0.721503,0.656905,-0.218883) - New Momentum Direction: (-0.677414,0.604241,-0.419527) - New Polarization: (-0.719503,-0.662932,0.206971) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.677414,0.604241,-0.419527) - Old Polarization: (-0.719503,-0.662932,0.206971) - New Momentum Direction: (-0.677414,-0.604241,-0.419527) - New Polarization: (0.719503,-0.662932,-0.206971) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.677414,-0.604241,-0.419527) - Old Polarization: (0.719503,-0.662932,-0.206971) - New Momentum Direction: (-0.677414,-0.604241,0.419527) - New Polarization: (-0.719503,0.662932,-0.206971) - *** TotalInternalReflection *** -No Absorbtion length specified -Scattering Photon! -Old Momentum Direction: (-0.677414,-0.604241,0.419527) -Old Polarization: (-0.719503,0.662932,-0.206971) -New Polarization: (-0.437224,0.703586,0.254425) -Polarization Change: (-0.50455,0.811928,0.293603) -New Momentum Direction: (0.848819,0.43393,0.352589) -Momentum Change: (0.835107,0.42692,0.346893) - -** Photon Absorbed! ** -Track (trackID 714, parentID 1) is processed with stopping code 2 -### pop requested out of 42 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.645084,-0.429471,-0.631998) - Old Polarization: (-0.756697,-0.473996,-0.450264) - New Momentum Direction: (-0.645084,-0.429471,-0.631998) - New Polarization: (-0.756697,0.473996,0.450264) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.645084,-0.429471,-0.631998) - Old Polarization: (-0.756697,0.473996,0.450264) - New Momentum Direction: (-0.645084,-0.429471,0.631998) - New Polarization: (0.756697,-0.473996,0.450264) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.645084,-0.429471,0.631998) - Old Polarization: (0.756697,-0.473996,0.450264) - New Momentum Direction: (-0.645084,0.429471,0.631998) - New Polarization: (-0.756697,-0.473996,-0.450264) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.645084,0.429471,0.631998) - Old Polarization: (-0.756697,-0.473996,-0.450264) - New Momentum Direction: (0.645084,0.429471,0.631998) - New Polarization: (-0.756697,0.473996,0.450264) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.645084,0.429471,0.631998) - Old Polarization: (-0.756697,0.473996,0.450264) - New Momentum Direction: (0.645084,0.429471,-0.631998) - New Polarization: (0.756697,-0.473996,0.450264) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 713, parentID 1) is processed with stopping code 2 -### pop requested out of 41 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.662346,0.497254,-0.560388) - Old Polarization: (-0.739781,0.552302,-0.384299) - New Momentum Direction: (-0.662346,0.497254,-0.560388) - New Polarization: (-0.739781,-0.552302,0.384299) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.662346,0.497254,-0.560388) - Old Polarization: (-0.739781,-0.552302,0.384299) - New Momentum Direction: (-0.662346,0.497254,0.560388) - New Polarization: (0.739781,0.552302,0.384299) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.662346,0.497254,0.560388) - Old Polarization: (0.739781,0.552302,0.384299) - New Momentum Direction: (-0.662346,-0.497254,0.560388) - New Polarization: (-0.739781,0.552302,-0.384299) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 712, parentID 1) is processed with stopping code 2 -### pop requested out of 40 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 711, parentID 1) is processed with stopping code 2 -### pop requested out of 39 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.804908,0.47604,0.354273) - Old Polarization: (-0.581917,0.516338,0.628306) - New Momentum Direction: (0.591568,0.646797,0.481353) - New Polarization: (-0.798439,0.387042,0.461186) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 710, parentID 1) is processed with stopping code 2 -### pop requested out of 38 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 709, parentID 1) is processed with stopping code 2 -### pop requested out of 37 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 708, parentID 1) is processed with stopping code 2 -### pop requested out of 36 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.802548,-0.526626,0.280325) - Old Polarization: (-0.582992,-0.592544,0.555888) - New Momentum Direction: (0.595188,-0.70935,0.37759) - New Polarization: (-0.794182,-0.447566,0.411047) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 707, parentID 1) is processed with stopping code 2 -### pop requested out of 35 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.670449,0.555442,-0.491917) - Old Polarization: (-0.730071,0.612063,-0.303934) - New Momentum Direction: (-0.670449,0.555442,-0.491917) - New Polarization: (-0.730071,-0.612063,0.303934) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.670449,0.555442,-0.491917) - Old Polarization: (-0.730071,-0.612063,0.303934) - New Momentum Direction: (-0.670449,-0.555442,-0.491917) - New Polarization: (0.730071,-0.612063,-0.303934) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.670449,-0.555442,-0.491917) - Old Polarization: (0.730071,-0.612063,-0.303934) - New Momentum Direction: (-0.670449,-0.555442,0.491917) - New Polarization: (-0.730071,0.612063,-0.303934) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.670449,-0.555442,0.491917) - Old Polarization: (-0.730071,0.612063,-0.303934) - New Momentum Direction: (0.670449,-0.555442,0.491917) - New Polarization: (-0.730071,-0.612063,0.303934) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.670449,-0.555442,0.491917) - Old Polarization: (-0.730071,-0.612063,0.303934) - New Momentum Direction: (0.670449,0.555442,0.491917) - New Polarization: (0.730071,-0.612063,-0.303934) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.670449,0.555442,0.491917) - Old Polarization: (0.730071,-0.612063,-0.303934) - New Momentum Direction: (0.670449,0.555442,-0.491917) - New Polarization: (-0.730071,0.612063,-0.303934) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.670449,0.555442,-0.491917) - Old Polarization: (-0.730071,0.612063,-0.303934) - New Momentum Direction: (-0.670449,0.555442,-0.491917) - New Polarization: (-0.730071,-0.612063,0.303934) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.670449,0.555442,-0.491917) - Old Polarization: (-0.730071,-0.612063,0.303934) - New Momentum Direction: (-0.670449,-0.555442,-0.491917) - New Polarization: (0.730071,-0.612063,-0.303934) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.670449,-0.555442,-0.491917) - Old Polarization: (0.730071,-0.612063,-0.303934) - New Momentum Direction: (-0.670449,-0.555442,0.491917) - New Polarization: (-0.730071,0.612063,-0.303934) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.670449,-0.555442,0.491917) - Old Polarization: (-0.730071,0.612063,-0.303934) - New Momentum Direction: (0.670449,-0.555442,0.491917) - New Polarization: (-0.730071,-0.612063,0.303934) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.670449,-0.555442,0.491917) - Old Polarization: (-0.730071,-0.612063,0.303934) - New Momentum Direction: (0.670449,0.555442,0.491917) - New Polarization: (0.730071,-0.612063,-0.303934) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.670449,0.555442,0.491917) - Old Polarization: (0.730071,-0.612063,-0.303934) - New Momentum Direction: (-0.670449,0.555442,0.491917) - New Polarization: (0.730071,0.612063,0.303934) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.670449,0.555442,0.491917) - Old Polarization: (0.730071,0.612063,0.303934) - New Momentum Direction: (-0.670449,0.555442,-0.491917) - New Polarization: (-0.730071,-0.612063,0.303934) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 706, parentID 1) is processed with stopping code 2 -### pop requested out of 34 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.840705,-0.136481,0.524012) - Old Polarization: (-0.540628,-0.156857,0.826509) - New Momentum Direction: (0.68347,-0.183988,0.706412) - New Polarization: (-0.729374,-0.132739,0.671114) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 705, parentID 1) is processed with stopping code 2 -### pop requested out of 33 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 704, parentID 1) is processed with stopping code 2 -### pop requested out of 32 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.825046,-0.324481,0.462613) - Old Polarization: (-0.55996,-0.359689,0.74637) - New Momentum Direction: (0.640389,-0.441042,0.628795) - New Polarization: (-0.764548,-0.287965,0.576664) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 703, parentID 1) is processed with stopping code 2 -### pop requested out of 31 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 702, parentID 1) is processed with stopping code 2 -### pop requested out of 30 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.79472,-0.548682,0.259553) - Old Polarization: (-0.592641,-0.609042,0.52711) - New Momentum Direction: (0.568814,-0.743477,0.351701) - New Polarization: (-0.812719,-0.442451,0.37911) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 701, parentID 1) is processed with stopping code 2 -### pop requested out of 29 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.816691,0.390972,0.424448) - Old Polarization: (-0.569026,0.423178,0.705074) - New Momentum Direction: (0.620628,0.531237,0.576722) - New Polarization: (-0.778596,0.330485,0.533449) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 700, parentID 1) is processed with stopping code 2 -### pop requested out of 28 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.743914,-0.665318,-0.0628005) - Old Polarization: (-0.648519,-0.741407,0.172449) - New Momentum Direction: (0.428876,-0.899365,-0.0848926) - New Polarization: (-0.890619,-0.436684,0.126903) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 699, parentID 1) is processed with stopping code 2 -### pop requested out of 27 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.650514,0.465253,-0.600309) - Old Polarization: (-0.751566,0.508241,-0.420523) - New Momentum Direction: (-0.650514,0.465253,-0.600309) - New Polarization: (-0.751566,-0.508241,0.420523) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.650514,0.465253,-0.600309) - Old Polarization: (-0.751566,-0.508241,0.420523) - New Momentum Direction: (-0.650514,0.465253,0.600309) - New Polarization: (0.751566,0.508241,0.420523) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.650514,0.465253,0.600309) - Old Polarization: (0.751566,0.508241,0.420523) - New Momentum Direction: (-0.650514,-0.465253,0.600309) - New Polarization: (-0.751566,0.508241,-0.420523) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.650514,-0.465253,0.600309) - Old Polarization: (-0.751566,0.508241,-0.420523) - New Momentum Direction: (-0.650514,-0.465253,-0.600309) - New Polarization: (0.751566,-0.508241,-0.420523) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.650514,-0.465253,-0.600309) - Old Polarization: (0.751566,-0.508241,-0.420523) - New Momentum Direction: (0.650514,-0.465253,-0.600309) - New Polarization: (0.751566,0.508241,0.420523) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.650514,-0.465253,-0.600309) - Old Polarization: (0.751566,0.508241,0.420523) - New Momentum Direction: (0.650514,-0.465253,0.600309) - New Polarization: (-0.751566,-0.508241,0.420523) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.650514,-0.465253,0.600309) - Old Polarization: (-0.751566,-0.508241,0.420523) - New Momentum Direction: (0.650514,0.465253,0.600309) - New Polarization: (0.751566,-0.508241,-0.420523) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.650514,0.465253,0.600309) - Old Polarization: (0.751566,-0.508241,-0.420523) - New Momentum Direction: (-0.650514,0.465253,0.600309) - New Polarization: (0.751566,0.508241,0.420523) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.650514,0.465253,0.600309) - Old Polarization: (0.751566,0.508241,0.420523) - New Momentum Direction: (-0.650514,0.465253,-0.600309) - New Polarization: (-0.751566,-0.508241,0.420523) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 698, parentID 1) is processed with stopping code 2 -### pop requested out of 26 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.766644,0.628782,0.12996) - Old Polarization: (-0.623914,0.681748,0.382035) - New Momentum Direction: (0.486952,0.85535,0.176789) - New Polarization: (-0.861516,0.437053,0.258407) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 697, parentID 1) is processed with stopping code 2 -### pop requested out of 25 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.817563,0.401532,0.412749) - Old Polarization: (-0.567268,0.438394,0.69715) - New Momentum Direction: (0.62643,0.54353,0.558713) - New Polarization: (-0.773565,0.345379,0.53133) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 696, parentID 1) is processed with stopping code 2 -### pop requested out of 24 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.623331,0.190517,-0.758395) - Old Polarization: (-0.780818,0.204008,-0.590512) - New Momentum Direction: (0.846491,0.258724,-0.465312) - New Polarization: (0.334761,0.42095,0.843052) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 695, parentID 1) is processed with stopping code 2 -### pop requested out of 23 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.822874,0.340836,0.454652) - Old Polarization: (-0.561939,0.369449,0.740089) - New Momentum Direction: (0.636845,0.462462,0.616893) - New Polarization: (-0.766668,0.295239,0.570135) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 694, parentID 1) is processed with stopping code 2 -### pop requested out of 22 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.63418,-0.291573,-0.716101) - Old Polarization: (-0.769649,-0.326538,-0.548647) - New Momentum Direction: (0.63418,-0.291573,0.716101) - New Polarization: (0.0206569,0.932229,0.361279) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.63418,-0.291573,0.716101) - Old Polarization: (0.0206569,0.932229,0.361279) - New Momentum Direction: (-0.63418,-0.291573,0.716101) - New Polarization: (0.0206569,-0.932229,-0.361279) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.63418,-0.291573,0.716101) - Old Polarization: (0.0206569,-0.932229,-0.361279) - New Momentum Direction: (-0.63418,0.291573,0.716101) - New Polarization: (-0.0206569,-0.932229,0.361279) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.63418,0.291573,0.716101) - Old Polarization: (-0.0206569,-0.932229,0.361279) - New Momentum Direction: (-0.858561,0.394735,0.327196) - New Polarization: (-0.508826,-0.577587,-0.638349) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 693, parentID 1) is processed with stopping code 2 -### pop requested out of 21 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.709935,0.653295,-0.263054) - Old Polarization: (-0.686394,0.725454,-0.0507858) - New Momentum Direction: (0.318497,0.879317,-0.354063) - New Polarization: (-0.937089,0.348381,0.0222499) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 692, parentID 1) is processed with stopping code 2 -### pop requested out of 20 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 691, parentID 1) is processed with stopping code 2 -### pop requested out of 19 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.705871,-0.65471,-0.270374) - Old Polarization: (-0.690328,-0.721367,-0.0554651) - New Momentum Direction: (0.271282,-0.889625,-0.367386) - New Polarization: (-0.952161,-0.303846,0.0326765) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 690, parentID 1) is processed with stopping code 2 -### pop requested out of 18 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 689, parentID 1) is processed with stopping code 2 -### pop requested out of 17 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.686903,0.626157,-0.368905) - Old Polarization: (-0.711281,0.683401,-0.164445) - New Momentum Direction: (0.168803,0.849223,-0.500326) - New Polarization: (-0.97759,0.20903,0.0249703) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 688, parentID 1) is processed with stopping code 2 -### pop requested out of 16 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.619269,-0.0684388,-0.782191) - Old Polarization: (-0.78492,-0.0795608,-0.614468) - New Momentum Direction: (0.842096,-0.0930646,-0.531238) - New Polarization: (0.511802,-0.172764,0.841553) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 687, parentID 1) is processed with stopping code 2 -### pop requested out of 15 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.641475,-0.33952,-0.687922) - Old Polarization: (-0.762347,-0.382254,-0.522215) - New Momentum Direction: (0.641475,-0.33952,0.687922) - New Polarization: (0.0362761,0.909152,0.414881) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.641475,-0.33952,0.687922) - Old Polarization: (0.0362761,0.909152,0.414881) - New Momentum Direction: (-0.641475,-0.33952,0.687922) - New Polarization: (0.0362761,-0.909152,-0.414881) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 686, parentID 1) is processed with stopping code 2 -### pop requested out of 14 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.624603,0.067949,-0.77798) - Old Polarization: (-0.780839,0.070556,-0.620736) - New Momentum Direction: (0.843608,0.091774,-0.529058) - New Polarization: (0.511066,0.165039,0.843548) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 685, parentID 1) is processed with stopping code 2 -### pop requested out of 13 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.698037,0.647517,-0.305722) - Old Polarization: (-0.69913,0.708589,-0.0954942) - New Momentum Direction: (0.242716,0.877236,-0.414182) - New Polarization: (-0.960567,0.277026,0.0238365) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 684, parentID 1) is processed with stopping code 2 -### pop requested out of 12 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.71985,-0.654648,-0.230764) - Old Polarization: (-0.675328,-0.737368,-0.0148124) - New Momentum Direction: (0.357618,-0.88075,-0.310465) - New Polarization: (-0.922147,-0.385551,0.0315571) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 683, parentID 1) is processed with stopping code 2 -### pop requested out of 11 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.820368,0.360089,0.444221) - Old Polarization: (-0.564904,0.389748,0.72731) - New Momentum Direction: (0.629936,0.48906,0.603325) - New Polarization: (-0.771892,0.308417,0.555933) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 682, parentID 1) is processed with stopping code 2 -### pop requested out of 10 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.748792,-0.662681,-0.0128433) - Old Polarization: (-0.643314,-0.7313,0.226599) - New Momentum Direction: (0.436,-0.899778,-0.0174385) - New Polarization: (-0.887423,-0.433073,0.157885) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 681, parentID 1) is processed with stopping code 2 -### pop requested out of 9 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.835003,-0.228174,0.500706) - Old Polarization: (-0.547707,-0.257349,0.796108) - New Momentum Direction: (0.66827,-0.308486,0.676943) - New Polarization: (-0.742156,-0.213848,0.635196) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 680, parentID 1) is processed with stopping code 2 -### pop requested out of 8 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.776964,0.604028,0.177419) - Old Polarization: (-0.612269,0.659445,0.436186) - New Momentum Direction: (0.520921,0.819006,0.240563) - New Polarization: (-0.842052,0.446832,0.302144) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 679, parentID 1) is processed with stopping code 2 -### pop requested out of 7 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 678, parentID 1) is processed with stopping code 2 -### pop requested out of 6 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.713589,-0.660449,-0.233662) - Old Polarization: (-0.681965,-0.731212,-0.0158952) - New Momentum Direction: (0.312797,-0.895432,-0.316797) - New Polarization: (-0.938737,-0.342248,0.0404863) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 677, parentID 1) is processed with stopping code 2 -### pop requested out of 5 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 676, parentID 1) is processed with stopping code 2 -### pop requested out of 4 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 675, parentID 1) is processed with stopping code 2 -### pop requested out of 3 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.733544,-0.671051,-0.107722) - Old Polarization: (-0.660026,-0.741172,0.122593) - New Momentum Direction: (0.386202,-0.910754,-0.146201) - New Polarization: (-0.91015,-0.402011,0.100073) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 674, parentID 1) is processed with stopping code 2 -### pop requested out of 2 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.706114,-0.644486,-0.293327) - Old Polarization: (-0.690382,-0.718683,-0.0828658) - New Momentum Direction: (0.290118,-0.871019,-0.39643) - New Polarization: (-0.946559,-0.322176,0.0151545) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 673, parentID 1) is processed with stopping code 2 -### pop requested out of 1 stacked tracks. - - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 197 -Track (trackID 1, parentID 0) is processed with stopping code 4 -### pop requested out of 198 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.671134,-0.234115,-0.703398) - Old Polarization: (-0.699343,0.114866,-0.705496) - New Momentum Direction: (0.907939,-0.316721,-0.274471) - New Polarization: (0.232214,-0.16501,0.958566) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1104, parentID 1) is processed with stopping code 2 -### pop requested out of 197 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.88108,0.459573,-0.111762) - Old Polarization: (-0.466815,0.882981,-0.0492842) - New Momentum Direction: (0.768121,0.622172,-0.151303) - New Polarization: (-0.635904,0.768896,-0.0665247) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1103, parentID 1) is processed with stopping code 2 -### pop requested out of 196 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.699098,-0.130354,-0.703043) - Old Polarization: (-0.668397,0.230115,-0.707314) - New Momentum Direction: (0.944505,-0.176112,-0.277298) - New Polarization: (0.28437,0.0157593,0.958585) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1102, parentID 1) is processed with stopping code 2 -### pop requested out of 195 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1101, parentID 1) is processed with stopping code 2 -### pop requested out of 194 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1100, parentID 1) is processed with stopping code 2 -### pop requested out of 193 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.864686,0.423298,-0.270437) - Old Polarization: (-0.484396,0.845188,-0.225872) - New Momentum Direction: (0.73417,0.572164,-0.365544) - New Polarization: (-0.666013,0.71154,-0.223913) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1099, parentID 1) is processed with stopping code 2 -### pop requested out of 192 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.877449,0.365094,0.311111) - Old Polarization: (-0.471325,0.776696,0.417847) - New Momentum Direction: (0.759775,0.494879,0.421707) - New Polarization: (-0.644217,0.660669,0.385359) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1098, parentID 1) is processed with stopping code 2 -### pop requested out of 191 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1097, parentID 1) is processed with stopping code 2 -### pop requested out of 190 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1096, parentID 1) is processed with stopping code 2 -### pop requested out of 189 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1095, parentID 1) is processed with stopping code 2 -### pop requested out of 188 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.832925,0.350041,-0.428611) - Old Polarization: (-0.521394,0.755935,-0.395868) - New Momentum Direction: (0.658597,0.475986,-0.582826) - New Polarization: (-0.729617,0.59346,-0.3398) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1094, parentID 1) is processed with stopping code 2 -### pop requested out of 187 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.753344,-0.177626,0.633184) - Old Polarization: (-0.608345,0.177469,0.773577) - New Momentum Direction: (0.453342,-0.240751,0.858207) - New Polarization: (-0.858096,0.142607,0.493289) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1093, parentID 1) is processed with stopping code 2 -### pop requested out of 186 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.866818,0.296231,0.40109) - Old Polarization: (-0.481822,0.704679,0.520841) - New Momentum Direction: (0.739092,0.400187,0.541843) - New Polarization: (-0.661453,0.583271,0.47146) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1092, parentID 1) is processed with stopping code 2 -### pop requested out of 185 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.546487,-0.799461,-0.249429) - Old Polarization: (-0.836787,-0.509258,-0.201107) - New Momentum Direction: (0.740685,-0.580602,-0.338065) - New Polarization: (0.31621,0.745226,-0.587069) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1091, parentID 1) is processed with stopping code 2 -### pop requested out of 184 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.545717,-0.802106,-0.242526) - Old Polarization: (-0.837397,-0.511313,-0.193196) - New Momentum Direction: (0.740066,-0.586625,-0.328898) - New Polarization: (0.334739,0.745461,-0.5764) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1090, parentID 1) is processed with stopping code 2 -### pop requested out of 183 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.886102,0.463491,0.000701665) - Old Polarization: (-0.462232,0.883581,0.0750149) - New Momentum Direction: (0.777444,0.628952,0.000952152) - New Polarization: (-0.628058,0.776257,0.0544753) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1089, parentID 1) is processed with stopping code 2 -### pop requested out of 182 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.687042,-0.417276,0.594856) - Old Polarization: (-0.681367,-0.0855899,0.72692) - New Momentum Direction: (0.156841,-0.567165,0.808533) - New Polarization: (-0.963544,0.0918008,0.251307) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1088, parentID 1) is processed with stopping code 2 -### pop requested out of 181 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.72339,-0.049364,-0.688672) - Old Polarization: (-0.641351,0.321332,-0.696717) - New Momentum Direction: (0.368228,-0.0664728,-0.927356) - New Polarization: (-0.89784,0.233595,-0.373252) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1087, parentID 1) is processed with stopping code 2 -### pop requested out of 180 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1086, parentID 1) is processed with stopping code 2 -### pop requested out of 179 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.54605,-0.820353,-0.169856) - Old Polarization: (-0.837749,-0.534107,-0.113603) - New Momentum Direction: (0.739249,-0.632956,-0.229954) - New Polarization: (0.50531,0.747077,-0.431899) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1085, parentID 1) is processed with stopping code 2 -### pop requested out of 178 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1084, parentID 1) is processed with stopping code 2 -### pop requested out of 177 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.73454,0.0123729,-0.678452) - Old Polarization: (-0.629132,0.387043,-0.674085) - New Momentum Direction: (0.391504,0.0167784,-0.920023) - New Polarization: (-0.887965,0.269114,-0.372954) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1083, parentID 1) is processed with stopping code 2 -### pop requested out of 176 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.767031,-0.117656,0.63073) - Old Polarization: (-0.593514,0.243317,0.767162) - New Momentum Direction: (0.490201,-0.159832,0.856829) - New Polarization: (-0.838735,0.180935,0.513601) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1082, parentID 1) is processed with stopping code 2 -### pop requested out of 175 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.628972,-0.615599,0.474798) - Old Polarization: (-0.744981,-0.30266,0.594474) - New Momentum Direction: (-0.628972,-0.615599,0.474798) - New Polarization: (-0.744981,0.30266,-0.594474) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.628972,-0.615599,0.474798) - Old Polarization: (-0.744981,0.30266,-0.594474) - New Momentum Direction: (-0.628972,0.615599,0.474798) - New Polarization: (0.744981,0.30266,0.594474) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.628972,0.615599,0.474798) - Old Polarization: (0.744981,0.30266,0.594474) - New Momentum Direction: (-0.628972,0.615599,-0.474798) - New Polarization: (-0.744981,-0.30266,0.594474) - *** TotalInternalReflection *** -No Absorbtion length specified -Scattering Photon! -Old Momentum Direction: (-0.628972,0.615599,-0.474798) -Old Polarization: (-0.744981,-0.30266,0.594474) -New Polarization: (-0.0390963,-0.671843,0.571696) -Polarization Change: (-0.0442753,-0.76084,0.647427) -New Momentum Direction: (0.47346,-0.522492,-0.864516) -Momentum Change: (0.424401,-0.468353,-0.774938) - Photon at Boundary! - Old Momentum Direction: (0.424401,-0.468353,-0.774938) - Old Polarization: (-0.0442753,-0.76084,0.647427) - New Momentum Direction: (0.424401,0.468353,-0.774938) - New Polarization: (0.0442753,-0.76084,-0.647427) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.424401,0.468353,-0.774938) - Old Polarization: (0.0442753,-0.76084,-0.647427) - New Momentum Direction: (-0.424401,0.468353,-0.774938) - New Polarization: (0.0442753,0.76084,0.647427) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.424401,0.468353,-0.774938) - Old Polarization: (0.0442753,0.76084,0.647427) - New Momentum Direction: (-0.57717,0.636943,-0.511056) - New Polarization: (-0.0105935,0.619923,0.784591) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1081, parentID 1) is processed with stopping code 2 -### pop requested out of 174 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.799691,-0.0121771,0.600288) - Old Polarization: (-0.555825,0.363067,0.747824) - New Momentum Direction: (0.588655,-0.016395,0.808218) - New Polarization: (-0.776379,0.267075,0.570883) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1080, parentID 1) is processed with stopping code 2 -### pop requested out of 173 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.565131,-0.813201,0.139039) - Old Polarization: (-0.817254,-0.528773,0.229119) - New Momentum Direction: (0.763807,-0.617483,0.187919) - New Polarization: (0.495825,0.747729,0.441654) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1079, parentID 1) is processed with stopping code 2 -### pop requested out of 172 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.787861,0.187418,-0.586643) -Old Polarization: (-0.5696,0.583943,-0.578417) -New Polarization: (-0.785184,0.374762,0.0738915) -Polarization Change: (-0.899237,0.429199,0.0846247) -New Momentum Direction: (-0.401438,-0.882946,0.279018) -Momentum Change: (-0.397756,-0.874849,0.276459) - Photon at Boundary! - Old Momentum Direction: (-0.397756,-0.874849,0.276459) - Old Polarization: (-0.899237,0.429199,0.0846247) - New Momentum Direction: (-0.537159,-0.756353,0.37335) - New Polarization: (-0.777325,0.615731,0.129004) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1078, parentID 1) is processed with stopping code 2 -### pop requested out of 171 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1077, parentID 1) is processed with stopping code 2 -### pop requested out of 170 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.750132,-0.18367,0.635269) - Old Polarization: (-0.612084,0.170783,0.772131) - New Momentum Direction: (0.439276,-0.249514,0.863006) - New Polarization: (-0.865522,0.13978,0.480971) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1076, parentID 1) is processed with stopping code 2 -### pop requested out of 169 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.600653,-0.519721,-0.60754) - Old Polarization: (-0.777,-0.200416,-0.596745) - New Momentum Direction: (0.600653,-0.519721,0.60754) - New Polarization: (0.777,0.200416,-0.596745) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.600653,-0.519721,0.60754) - Old Polarization: (0.777,0.200416,-0.596745) - New Momentum Direction: (-0.600653,-0.519721,0.60754) - New Polarization: (0.777,-0.200416,0.596745) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.600653,-0.519721,0.60754) - Old Polarization: (0.777,-0.200416,0.596745) - New Momentum Direction: (-0.600653,0.519721,0.60754) - New Polarization: (-0.777,-0.200416,-0.596745) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.600653,0.519721,0.60754) - Old Polarization: (-0.777,-0.200416,-0.596745) - New Momentum Direction: (-0.600653,0.519721,-0.60754) - New Polarization: (0.777,0.200416,-0.596745) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.600653,0.519721,-0.60754) - Old Polarization: (0.777,0.200416,-0.596745) - New Momentum Direction: (0.600653,0.519721,-0.60754) - New Polarization: (0.777,-0.200416,0.596745) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.600653,0.519721,-0.60754) - Old Polarization: (0.777,-0.200416,0.596745) - New Momentum Direction: (0.600653,-0.519721,-0.60754) - New Polarization: (-0.777,-0.200416,-0.596745) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.600653,-0.519721,-0.60754) - Old Polarization: (-0.777,-0.200416,-0.596745) - New Momentum Direction: (0.600653,0.519721,-0.60754) - New Polarization: (0.777,-0.200416,0.596745) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1075, parentID 1) is processed with stopping code 2 -### pop requested out of 168 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.547549,-0.811209,-0.205257) - Old Polarization: (-0.836613,-0.525903,-0.153314) - New Momentum Direction: (0.740357,-0.612246,-0.277535) - New Polarization: (0.427556,0.747481,-0.508398) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1074, parentID 1) is processed with stopping code 2 -### pop requested out of 167 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1073, parentID 1) is processed with stopping code 2 -### pop requested out of 166 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1072, parentID 1) is processed with stopping code 2 +Track (trackID 747, parentID 637) is processed with stopping code 2 ### pop requested out of 165 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1071, parentID 1) is processed with stopping code 2 +Track (trackID 746, parentID 637) is processed with stopping code 2 ### pop requested out of 164 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1070, parentID 1) is processed with stopping code 2 -### pop requested out of 163 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1069, parentID 1) is processed with stopping code 2 -### pop requested out of 162 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1068, parentID 1) is processed with stopping code 2 -### pop requested out of 161 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.772329,0.152495,-0.616646) - Old Polarization: (-0.587765,0.539729,-0.602682) - New Momentum Direction: (0.504564,0.207267,-0.838126) - New Polarization: (-0.830767,0.380819,-0.405959) + Old Momentum Direction: (0.92104,-0.14291,-0.36229) + Old Polarization: (-0.3694,-0.025888,-0.92891) + New Momentum Direction: (0.84847,-0.19421,-0.49233) + New Polarization: (-0.51432,-0.083143,-0.85356) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1067, parentID 1) is processed with stopping code 2 -### pop requested out of 160 stacked tracks. +Track (trackID 745, parentID 637) is processed with stopping code 2 +### pop requested out of 163 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.81343,0.57167,0.10736) + Old Polarization: (-0.48959,0.77257,-0.40427) + New Momentum Direction: (0.61264,0.77678,0.14588) + New Polarization: (-0.72013,0.62468,-0.30197) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 744, parentID 637) is processed with stopping code 2 +### pop requested out of 162 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.47801,0.020713,0.87811) + Old Polarization: (-0.86874,0.15866,0.46917) + New Momentum Direction: (0.64453,0.027928,0.76407) + New Polarization: (0.74919,0.17639,-0.63843) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 743, parentID 637) is processed with stopping code 2 +### pop requested out of 161 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.47764,-0.48367,0.73344) +Old Polarization: (-0.86471,-0.40646,0.29508) +New Polarization: (-0.79748,-0.34714,0.38111) +Polarization Change: (-0.83981,-0.36557,0.40135) +New Momentum Direction: (-0.5302,0.61277,-0.55129) +Momentum Change: (-0.54099,0.62523,-0.56251) ** Photon Absorbed! ** -Track (trackID 1066, parentID 1) is processed with stopping code 2 +Track (trackID 742, parentID 637) is processed with stopping code 2 +### pop requested out of 160 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.54675,0.33812,0.76599) + Old Polarization: (-0.78879,0.51486,0.33576) + New Momentum Direction: (0.74057,0.45798,0.49174) + New Polarization: (-0.11637,0.80812,-0.5774) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 741, parentID 637) is processed with stopping code 2 ### pop requested out of 159 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1065, parentID 1) is processed with stopping code 2 +Track (trackID 740, parentID 637) is processed with stopping code 2 ### pop requested out of 158 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.877241,0.376405,0.297939) - Old Polarization: (-0.47282,0.784789,0.400683) - New Momentum Direction: (0.757532,0.511855,0.405153) - New Polarization: (-0.647657,0.667032,0.36825) + Old Momentum Direction: (0.93632,0.045303,-0.34822) + Old Polarization: (-0.35041,0.18528,-0.91809) + New Momentum Direction: (0.87961,0.061369,-0.47171) + New Polarization: (-0.47514,0.16074,-0.8651) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1064, parentID 1) is processed with stopping code 2 +Track (trackID 739, parentID 637) is processed with stopping code 2 ### pop requested out of 157 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1063, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.50551,0.1908,0.84146) + Old Polarization: (-0.8359,0.35,0.42281) + New Momentum Direction: (0.50551,0.1908,-0.84146) + New Polarization: (0.52238,-0.84387,0.12247) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.50551,0.1908,-0.84146) + Old Polarization: (0.52238,-0.84387,0.12247) + New Momentum Direction: (-0.50551,0.1908,-0.84146) + New Polarization: (0.52238,0.84387,-0.12247) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.50551,0.1908,-0.84146) + Old Polarization: (0.52238,0.84387,-0.12247) + New Momentum Direction: (-0.68374,0.25807,-0.68257) + New Polarization: (0.1386,0.96428,0.22574) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 738, parentID 637) is processed with stopping code 2 ### pop requested out of 156 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.578926,-0.779938,0.237785) - Old Polarization: (-0.801954,-0.491942,0.338914) - New Momentum Direction: (0.782382,-0.53349,0.321351) - New Polarization: (0.249213,0.741045,0.623494) + Old Momentum Direction: (0.46144,-0.051151,0.88569) + Old Polarization: (-0.88243,0.076597,0.46417) + New Momentum Direction: (0.62753,-0.069561,0.77548) + New Polarization: (0.769,-0.10054,-0.6313) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1062, parentID 1) is processed with stopping code 2 +Track (trackID 737, parentID 637) is processed with stopping code 2 ### pop requested out of 155 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.559362,-0.750576,-0.351781) - Old Polarization: (-0.825405,-0.465279,-0.319724) - New Momentum Direction: (0.752757,-0.45743,-0.473407) - New Polarization: (0.0129921,0.729321,-0.684049) - *** FresnelRefraction *** + Old Momentum Direction: (0.46759,-0.42502,0.77506) + Old Polarization: (-0.87589,-0.34089,0.34148) + New Momentum Direction: (0.46759,-0.42502,-0.77506) + New Polarization: (0.61249,0.788,-0.06261) + *** FresnelReflection *** No Absorbtion length specified -Track (trackID 1061, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.46759,-0.42502,-0.77506) + Old Polarization: (0.61249,0.788,-0.06261) + New Momentum Direction: (-0.46759,-0.42502,-0.77506) + New Polarization: (0.61249,-0.788,0.06261) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.46759,-0.42502,-0.77506) + Old Polarization: (0.61249,-0.788,0.06261) + New Momentum Direction: (-0.46759,0.42502,-0.77506) + New Polarization: (-0.61249,-0.788,-0.06261) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 736, parentID 637) is processed with stopping code 2 ### pop requested out of 154 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.548101,-0.83628,0.0148645) - Old Polarization: (-0.833687,-0.544795,0.0903586) - New Momentum Direction: (0.745281,-0.666445,0.020212) - New Polarization: (0.661856,0.743136,0.0984697) + Old Momentum Direction: (0.92615,-0.11739,-0.35841) + Old Polarization: (-0.36069,0.0019549,-0.93268) + New Momentum Direction: (0.86024,-0.15871,-0.48455) + New Polarization: (-0.49761,-0.054046,-0.86572) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1060, parentID 1) is processed with stopping code 2 +Track (trackID 735, parentID 637) is processed with stopping code 2 ### pop requested out of 153 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.812214,0.0630731,0.57994) - Old Polarization: (-0.543587,0.442622,0.713162) - New Momentum Direction: (0.611136,0.0855801,0.786885) - New Polarization: (-0.763189,0.327333,0.557132) + Old Momentum Direction: (0.59303,0.45343,0.66537) + Old Polarization: (-0.7359,0.64057,0.21935) + New Momentum Direction: (0.59303,0.45343,-0.66537) + New Polarization: (0.7359,-0.64057,0.21935) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.59303,0.45343,-0.66537) + Old Polarization: (0.7359,-0.64057,0.21935) + New Momentum Direction: (-0.59303,0.45343,-0.66537) + New Polarization: (0.7359,0.64057,-0.21935) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.59303,0.45343,-0.66537) + Old Polarization: (0.7359,0.64057,-0.21935) + New Momentum Direction: (-0.59303,-0.45343,-0.66537) + New Polarization: (-0.7359,0.64057,0.21935) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.59303,-0.45343,-0.66537) + Old Polarization: (-0.7359,0.64057,0.21935) + New Momentum Direction: (-0.59303,-0.45343,0.66537) + New Polarization: (0.7359,-0.64057,0.21935) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.59303,-0.45343,0.66537) + Old Polarization: (0.7359,-0.64057,0.21935) + New Momentum Direction: (0.59303,-0.45343,0.66537) + New Polarization: (0.7359,0.64057,-0.21935) + *** TotalInternalReflection *** +No Absorbtion length specified +Scattering Photon! +Old Momentum Direction: (0.59303,-0.45343,0.66537) +Old Polarization: (0.7359,0.64057,-0.21935) +New Polarization: (0.108,0.78674,0.4333) +Polarization Change: (0.11939,0.86967,0.47898) +New Momentum Direction: (-0.61136,-0.27599,0.6535) +Momentum Change: (-0.65283,-0.29471,0.69782) + Photon at Boundary! + Old Momentum Direction: (-0.65283,-0.29471,0.69782) + Old Polarization: (0.11939,0.86967,0.47898) + New Momentum Direction: (-0.65283,0.29471,0.69782) + New Polarization: (-0.11939,0.86967,-0.47898) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.65283,0.29471,0.69782) + Old Polarization: (-0.11939,0.86967,-0.47898) + New Momentum Direction: (0.65283,0.29471,0.69782) + New Polarization: (-0.11939,-0.86967,0.47898) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.65283,0.29471,0.69782) + Old Polarization: (-0.11939,-0.86967,0.47898) + New Momentum Direction: (0.88699,0.40042,0.23003) + New Polarization: (0.40797,-0.4461,-0.79659) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1059, parentID 1) is processed with stopping code 2 +Track (trackID 734, parentID 637) is processed with stopping code 2 ### pop requested out of 152 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.53058,-0.62188,0.57598) + Old Polarization: (-0.80939,-0.5735,0.1264) + New Momentum Direction: (0.53058,0.62188,0.57598) + New Polarization: (0.80939,-0.5735,-0.1264) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.53058,0.62188,0.57598) + Old Polarization: (0.80939,-0.5735,-0.1264) + New Momentum Direction: (0.53058,0.62188,-0.57598) + New Polarization: (-0.80939,0.5735,-0.1264) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.53058,0.62188,-0.57598) + Old Polarization: (-0.80939,0.5735,-0.1264) + New Momentum Direction: (-0.53058,0.62188,-0.57598) + New Polarization: (-0.80939,-0.5735,0.1264) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.53058,0.62188,-0.57598) + Old Polarization: (-0.80939,-0.5735,0.1264) + New Momentum Direction: (-0.53058,-0.62188,-0.57598) + New Polarization: (0.80939,-0.5735,-0.1264) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.53058,-0.62188,-0.57598) + Old Polarization: (0.80939,-0.5735,-0.1264) + New Momentum Direction: (-0.53058,-0.62188,0.57598) + New Polarization: (-0.80939,0.5735,-0.1264) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.53058,-0.62188,0.57598) + Old Polarization: (-0.80939,0.5735,-0.1264) + New Momentum Direction: (0.53058,-0.62188,0.57598) + New Polarization: (-0.80939,-0.5735,0.1264) + *** TotalInternalReflection *** +No Absorbtion length specified ** Photon Absorbed! ** -Track (trackID 1058, parentID 1) is processed with stopping code 2 +Track (trackID 733, parentID 637) is processed with stopping code 2 ### pop requested out of 151 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.674015,-0.48957,0.553195) - Old Polarization: (-0.696788,-0.172632,0.696193) - New Momentum Direction: (0.110922,-0.65864,0.744237) - New Polarization: (-0.972279,0.0831833,0.218526) + Old Momentum Direction: (0.85028,-0.47079,-0.23532) + Old Polarization: (-0.44447,-0.40281,-0.80012) + New Momentum Direction: (0.70624,-0.63328,-0.31653) + New Polarization: (-0.64347,-0.3877,-0.66002) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1057, parentID 1) is processed with stopping code 2 +Track (trackID 732, parentID 637) is processed with stopping code 2 ### pop requested out of 150 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.548034,-0.834758,-0.0532664) - Old Polarization: (-0.835391,-0.549438,0.0154957) - New Momentum Direction: (0.742222,-0.666259,-0.0721406) - New Polarization: (0.65789,0.744905,-0.110892) + Old Momentum Direction: (0.47404,-0.40411,0.78229) + Old Polarization: (-0.87381,-0.32526,0.36148) + New Momentum Direction: (0.63858,-0.54437,0.54395) + New Polarization: (-0.16143,-0.78586,-0.59696) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1056, parentID 1) is processed with stopping code 2 +Track (trackID 731, parentID 637) is processed with stopping code 2 ### pop requested out of 149 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.649024,-0.305898,-0.696559) -Old Polarization: (-0.723039,0.0367362,-0.68983) -New Polarization: (-0.722942,0.040139,-0.686789) -Polarization Change: (-0.724416,0.0402209,-0.688189) -New Momentum Direction: (-0.562418,0.540186,0.62843) -Momentum Change: (-0.561565,0.539367,0.627478) Photon at Boundary! - Old Momentum Direction: (-0.561565,0.539367,0.627478) - Old Polarization: (-0.724416,0.0402209,-0.688189) - New Momentum Direction: (-0.561565,-0.539367,0.627478) - New Polarization: (0.724416,0.0402209,0.688189) - *** TotalInternalReflection *** + Old Momentum Direction: (0.54383,0.33952,0.76745) + Old Polarization: (-0.79087,0.51321,0.33338) + New Momentum Direction: (0.73893,0.46132,0.49109) + New Polarization: (-0.12073,0.80772,-0.57708) + *** FresnelRefraction *** No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.561565,-0.539367,0.627478) - Old Polarization: (0.724416,0.0402209,0.688189) - New Momentum Direction: (-0.561565,-0.539367,-0.627478) - New Polarization: (-0.724416,-0.0402209,0.688189) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.561565,-0.539367,-0.627478) - Old Polarization: (-0.724416,-0.0402209,0.688189) - New Momentum Direction: (0.561565,-0.539367,-0.627478) - New Polarization: (-0.724416,0.0402209,-0.688189) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.561565,-0.539367,-0.627478) - Old Polarization: (-0.724416,0.0402209,-0.688189) - New Momentum Direction: (0.561565,-0.539367,0.627478) - New Polarization: (0.724416,-0.0402209,-0.688189) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1055, parentID 1) is processed with stopping code 2 +Track (trackID 730, parentID 637) is processed with stopping code 2 ### pop requested out of 148 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.880329,0.369241,0.297796) - Old Polarization: (-0.466843,0.785724,0.405827) - New Momentum Direction: (0.767615,0.498879,0.402351) - New Polarization: (-0.635506,0.673823,0.376955) + Old Momentum Direction: (0.5242,-0.62409,0.57942) + Old Polarization: (-0.81393,-0.56729,0.12534) + New Momentum Direction: (0.5242,0.62409,0.57942) + New Polarization: (0.81393,-0.56729,-0.12534) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.5242,0.62409,0.57942) + Old Polarization: (0.81393,-0.56729,-0.12534) + New Momentum Direction: (0.5242,0.62409,-0.57942) + New Polarization: (-0.81393,0.56729,-0.12534) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.5242,0.62409,-0.57942) + Old Polarization: (-0.81393,0.56729,-0.12534) + New Momentum Direction: (-0.5242,0.62409,-0.57942) + New Polarization: (-0.81393,-0.56729,0.12534) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 729, parentID 637) is processed with stopping code 2 +### pop requested out of 147 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 728, parentID 637) is processed with stopping code 2 +### pop requested out of 146 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.81483,-0.55194,-0.17726) + Old Polarization: (-0.48721,-0.48632,-0.72534) + New Momentum Direction: (0.6188,-0.74792,-0.24021) + New Polarization: (-0.71458,-0.40894,-0.56757) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1054, parentID 1) is processed with stopping code 2 -### pop requested out of 147 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.671375,-0.473866,0.56983) - Old Polarization: (-0.698602,-0.147973,0.700042) - New Momentum Direction: (-0.671375,-0.473866,0.56983) - New Polarization: (-0.698602,0.147973,-0.700042) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.671375,-0.473866,0.56983) - Old Polarization: (-0.698602,0.147973,-0.700042) - New Momentum Direction: (-0.671375,-0.473866,-0.56983) - New Polarization: (0.698602,-0.147973,-0.700042) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.671375,-0.473866,-0.56983) - Old Polarization: (0.698602,-0.147973,-0.700042) - New Momentum Direction: (-0.671375,0.473866,-0.56983) - New Polarization: (-0.698602,-0.147973,0.700042) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1053, parentID 1) is processed with stopping code 2 -### pop requested out of 146 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1052, parentID 1) is processed with stopping code 2 +Track (trackID 727, parentID 637) is processed with stopping code 2 ### pop requested out of 145 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1051, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.46391,-0.089958,0.8813) + Old Polarization: (-0.88302,0.032979,0.46818) + New Momentum Direction: (0.62732,-0.12164,0.7692) + New Polarization: (0.73264,-0.24269,-0.63588) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 726, parentID 637) is processed with stopping code 2 ### pop requested out of 144 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.570685,-0.797469,0.195861) - Old Polarization: (-0.810389,-0.508419,0.29117) - New Momentum Direction: (0.772781,-0.576599,0.265221) - New Polarization: (0.36429,0.74517,0.558583) + Old Momentum Direction: (0.80413,-0.57207,-0.16157) + Old Polarization: (-0.50022,-0.50435,-0.70385) + New Momentum Direction: (0.58857,-0.77801,-0.21974) + New Polarization: (-0.73715,-0.40486,-0.54101) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1050, parentID 1) is processed with stopping code 2 +Track (trackID 725, parentID 637) is processed with stopping code 2 ### pop requested out of 143 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.889109,0.431224,0.153395) -Old Polarization: (-0.456992,0.854969,0.24533) -New Polarization: (0.236592,0.657441,0.535329) -Polarization Change: (0.268788,0.746908,0.608179) -New Momentum Direction: (-0.94605,0.14541,0.350035) -Momentum Change: (-0.928268,0.142677,0.343456) - Photon at Boundary! - Old Momentum Direction: (-0.928268,0.142677,0.343456) - Old Polarization: (0.268788,0.746908,0.608179) - New Momentum Direction: (-0.864643,0.192731,0.463947) - New Polarization: (0.470281,0.635345,0.612514) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1049, parentID 1) is processed with stopping code 2 -### pop requested out of 142 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1048, parentID 1) is processed with stopping code 2 +Track (trackID 724, parentID 637) is processed with stopping code 2 +### pop requested out of 142 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.8277,-0.52285,-0.20382) + Old Polarization: (-0.47268,-0.45381,-0.7554) + New Momentum Direction: (0.64957,-0.70838,-0.27615) + New Polarization: (-0.69192,-0.40024,-0.60088) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 723, parentID 637) is processed with stopping code 2 ### pop requested out of 141 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.781368,-0.0867992,0.618004) - Old Polarization: (-0.576339,0.279463,0.767941) - New Momentum Direction: (0.542421,-0.116847,0.831941) - New Polarization: (-0.806319,0.205611,0.554594) + Old Momentum Direction: (0.84793,-0.47235,-0.24061) + Old Polarization: (-0.44915,-0.3991,-0.79936) + New Momentum Direction: (0.69731,-0.63868,-0.32533) + New Polarization: (-0.65357,-0.38021,-0.65444) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1047, parentID 1) is processed with stopping code 2 +Track (trackID 722, parentID 637) is processed with stopping code 2 ### pop requested out of 140 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.816371,0.283063,-0.503402) - Old Polarization: (-0.538049,0.689514,-0.484844) - New Momentum Direction: (0.625103,0.382566,-0.68036) - New Polarization: (-0.752146,0.528207,-0.394048) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1046, parentID 1) is processed with stopping code 2 + +** Photon Absorbed! ** +Track (trackID 721, parentID 637) is processed with stopping code 2 ### pop requested out of 139 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.867487,0.440338,-0.231449) -Old Polarization: (-0.483035,0.856838,-0.180293) -New Polarization: (-0.712595,0.3822,0.334777) -Polarization Change: (-0.814224,0.436709,0.382523) -New Momentum Direction: (0.168547,-0.3719,1.06375) -Momentum Change: (0.147924,-0.326394,0.933587) Photon at Boundary! - Old Momentum Direction: (0.147924,-0.326394,0.933587) - Old Polarization: (-0.814224,0.436709,0.382523) - New Momentum Direction: (-0.147924,-0.326394,0.933587) - New Polarization: (-0.814224,-0.436709,-0.382523) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.147924,-0.326394,0.933587) - Old Polarization: (-0.814224,-0.436709,-0.382523) - New Momentum Direction: (-0.200895,-0.443275,0.873584) - New Polarization: (-0.726949,-0.530303,-0.43626) + Old Momentum Direction: (0.8166,0.569,0.096945) + Old Polarization: (-0.48624,0.76864,-0.41565) + New Momentum Direction: (0.61978,0.77363,0.13181) + New Polarization: (-0.71533,0.62598,-0.31056) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1045, parentID 1) is processed with stopping code 2 +Track (trackID 720, parentID 637) is processed with stopping code 2 ### pop requested out of 138 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.748406,0.0693965,-0.6596) - Old Polarization: (-0.614036,0.448406,-0.649531) - New Momentum Direction: (0.432507,0.0943398,-0.896681) - New Polarization: (-0.868955,0.308924,-0.386631) + Old Momentum Direction: (0.93272,-0.075281,-0.35265) + Old Polarization: (-0.34973,0.049429,-0.93555) + New Momentum Direction: (0.8747,-0.10118,-0.47399) + New Polarization: (-0.47657,-0.0015068,-0.87913) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1044, parentID 1) is processed with stopping code 2 +Track (trackID 719, parentID 637) is processed with stopping code 2 ### pop requested out of 137 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.627164,-0.623087,0.467363) -Old Polarization: (-0.747106,-0.311586,0.587152) -New Polarization: (-0.0424331,0.246048,0.875274) -Polarization Change: (-0.04662,0.270326,0.961639) -New Momentum Direction: (0.578902,-0.692059,0.835212) -Momentum Change: (0.470846,-0.562882,0.679314) ** Photon Absorbed! ** -Track (trackID 1043, parentID 1) is processed with stopping code 2 +Track (trackID 718, parentID 637) is processed with stopping code 2 ### pop requested out of 136 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.66975,0.55574,0.49252) + Old Polarization: (-0.65033,0.75915,0.027751) + New Momentum Direction: (-0.66975,0.55574,0.49252) + New Polarization: (-0.65033,-0.75915,-0.027751) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66975,0.55574,0.49252) + Old Polarization: (-0.65033,-0.75915,-0.027751) + New Momentum Direction: (-0.66975,-0.55574,0.49252) + New Polarization: (0.65033,-0.75915,0.027751) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66975,-0.55574,0.49252) + Old Polarization: (0.65033,-0.75915,0.027751) + New Momentum Direction: (-0.66975,-0.55574,-0.49252) + New Polarization: (-0.65033,0.75915,0.027751) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66975,-0.55574,-0.49252) + Old Polarization: (-0.65033,0.75915,0.027751) + New Momentum Direction: (0.66975,-0.55574,-0.49252) + New Polarization: (-0.65033,-0.75915,-0.027751) + *** TotalInternalReflection *** +No Absorbtion length specified ** Photon Absorbed! ** -Track (trackID 1042, parentID 1) is processed with stopping code 2 +Track (trackID 717, parentID 637) is processed with stopping code 2 ### pop requested out of 135 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1041, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.80328,-0.57578,-0.15235) + Old Polarization: (-0.50017,-0.51326,-0.69742) + New Momentum Direction: (0.59054,-0.78016,-0.20642) + New Polarization: (-0.73435,-0.41343,-0.53833) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 716, parentID 637) is processed with stopping code 2 ### pop requested out of 134 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.792965,-0.0115485,0.609157) - Old Polarization: (-0.565138,0.35964,0.742481) - New Momentum Direction: (0.560447,-0.0156981,0.828041) - New Polarization: (-0.797262,0.260453,0.544553) + Old Momentum Direction: (0.49643,0.15426,0.85426) + Old Polarization: (-0.84565,0.30818,0.43577) + New Momentum Direction: (0.67211,0.20885,0.71038) + New Polarization: (0.48896,0.59528,-0.63763) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1040, parentID 1) is processed with stopping code 2 +Track (trackID 715, parentID 637) is processed with stopping code 2 ### pop requested out of 133 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.62054,0.49015,0.61211) + Old Polarization: (-0.70613,0.68875,0.16433) + New Momentum Direction: (-0.62054,0.49015,0.61211) + New Polarization: (-0.70613,-0.68875,-0.16433) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.62054,0.49015,0.61211) + Old Polarization: (-0.70613,-0.68875,-0.16433) + New Momentum Direction: (-0.62054,0.49015,-0.61211) + New Polarization: (0.70613,0.68875,-0.16433) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.62054,0.49015,-0.61211) + Old Polarization: (0.70613,0.68875,-0.16433) + New Momentum Direction: (-0.62054,-0.49015,-0.61211) + New Polarization: (-0.70613,0.68875,0.16433) + *** TotalInternalReflection *** +No Absorbtion length specified ** Photon Absorbed! ** -Track (trackID 1039, parentID 1) is processed with stopping code 2 +Track (trackID 714, parentID 637) is processed with stopping code 2 ### pop requested out of 132 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.749163,-0.185871,0.635773) - Old Polarization: (-0.613195,0.168365,0.77178) - New Momentum Direction: (0.43518,-0.252644,0.86417) - New Polarization: (-0.867622,0.138731,0.477478) + Old Momentum Direction: (0.93845,0.084359,-0.33494) + Old Polarization: (-0.3454,0.23087,-0.90961) + New Momentum Direction: (0.88482,0.1138,-0.45182) + New Polarization: (-0.46593,0.21733,-0.85772) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1038, parentID 1) is processed with stopping code 2 +Track (trackID 713, parentID 637) is processed with stopping code 2 ### pop requested out of 131 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.779966,0.15358,-0.606684) - Old Polarization: (-0.578015,0.548397,-0.604284) - New Momentum Direction: (0.537831,0.20689,-0.817273) - New Polarization: (-0.809303,0.398249,-0.431771) + Old Momentum Direction: (0.93634,0.052254,-0.34719) + Old Polarization: (-0.35058,0.193,-0.91643) + New Momentum Direction: (0.87957,0.070808,-0.47046) + New Polarization: (-0.47538,0.1702,-0.86316) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1037, parentID 1) is processed with stopping code 2 +Track (trackID 712, parentID 637) is processed with stopping code 2 ### pop requested out of 130 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1036, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.91213,-0.21814,-0.34705) + Old Polarization: (-0.37664,-0.11185,-0.91958) + New Momentum Direction: (0.83234,-0.29496,-0.46927) + New Polarization: (-0.52891,-0.16952,-0.83157) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 711, parentID 637) is processed with stopping code 2 ### pop requested out of 129 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.553819,-0.82851,-0.082803) - Old Polarization: (-0.832061,-0.554391,-0.0180217) - New Momentum Direction: (0.744537,-0.658234,-0.111318) - New Polarization: (0.632564,0.748902,-0.197507) + Old Momentum Direction: (0.8315,-0.51369,-0.21151) + Old Polarization: (-0.4684,-0.44356,-0.76411) + New Momentum Direction: (0.65845,-0.69594,-0.28656) + New Polarization: (-0.68518,-0.39675,-0.61084) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1035, parentID 1) is processed with stopping code 2 +Track (trackID 710, parentID 637) is processed with stopping code 2 ### pop requested out of 128 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.822971,0.319608,-0.469648) - Old Polarization: (-0.532286,0.722663,-0.440941) - New Momentum Direction: (0.635111,0.434571,-0.638578) - New Polarization: (-0.746896,0.556282,-0.364275) + Old Momentum Direction: (0.46537,-0.035642,0.8844) + Old Polarization: (-0.87947,0.094084,0.46656) + New Momentum Direction: (0.63132,-0.048353,0.77402) + New Polarization: (0.77308,-0.0399,-0.63305) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1034, parentID 1) is processed with stopping code 2 +Track (trackID 709, parentID 637) is processed with stopping code 2 ### pop requested out of 127 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.740262,-0.226487,0.633021) - Old Polarization: (-0.622822,0.123563,0.772544) - New Momentum Direction: (0.410803,-0.307137,0.858434) - New Polarization: (-0.879109,0.116147,0.462253) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1033, parentID 1) is processed with stopping code 2 + +** Photon Absorbed! ** +Track (trackID 708, parentID 637) is processed with stopping code 2 ### pop requested out of 126 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.844882,0.191905,0.499347) - Old Polarization: (-0.506203,0.588688,0.630242) - New Momentum Direction: (0.691235,0.25923,0.674533) - New Polarization: (-0.701779,0.46343,0.541054) + Old Momentum Direction: (0.47252,-0.40159,0.78451) + Old Polarization: (-0.87485,-0.32138,0.36242) + New Momentum Direction: (0.63726,-0.54161,0.54823) + New Polarization: (-0.15364,-0.7864,-0.59831) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1032, parentID 1) is processed with stopping code 2 +Track (trackID 707, parentID 637) is processed with stopping code 2 ### pop requested out of 125 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.888588,0.435277,0.144725) - Old Polarization: (-0.458189,0.85722,0.235024) - New Momentum Direction: (0.784177,0.588842,0.195784) - New Polarization: (-0.620169,0.754547,0.21459) + Old Momentum Direction: (0.52042,-0.62547,0.58133) + Old Polarization: (-0.81656,-0.56367,0.12452) + New Momentum Direction: (0.52042,0.62547,0.58133) + New Polarization: (0.81656,-0.56367,-0.12452) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.52042,0.62547,0.58133) + Old Polarization: (0.81656,-0.56367,-0.12452) + New Momentum Direction: (0.52042,0.62547,-0.58133) + New Polarization: (-0.81656,0.56367,-0.12452) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.52042,0.62547,-0.58133) + Old Polarization: (-0.81656,0.56367,-0.12452) + New Momentum Direction: (-0.52042,0.62547,-0.58133) + New Polarization: (-0.81656,-0.56367,0.12452) + *** TotalInternalReflection *** +No Absorbtion length specified +Scattering Photon! +Old Momentum Direction: (-0.52042,0.62547,-0.58133) +Old Polarization: (-0.81656,-0.56367,0.12452) +New Polarization: (-0.50476,-0.68412,0.24929) +Polarization Change: (-0.56973,-0.77217,0.28137) +New Momentum Direction: (0.81564,-0.52197,0.21909) +Momentum Change: (0.82153,-0.52573,0.22067) + Photon at Boundary! + Old Momentum Direction: (0.82153,-0.52573,0.22067) + Old Polarization: (-0.56973,-0.77217,0.28137) + New Momentum Direction: (0.63128,-0.71511,0.30016) + New Polarization: (-0.77525,-0.59264,0.21855) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1031, parentID 1) is processed with stopping code 2 +Track (trackID 706, parentID 637) is processed with stopping code 2 ### pop requested out of 124 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.658893,-0.280673,-0.697913) - Old Polarization: (-0.712833,0.0633718,-0.698465) - New Momentum Direction: (0.891897,-0.379928,-0.245304) - New Polarization: (0.167138,-0.227098,0.959423) + Old Momentum Direction: (0.93267,0.18209,-0.31141) + Old Polarization: (-0.35671,0.33688,-0.87136) + New Momentum Direction: (0.87146,0.24757,-0.4234) + New Polarization: (-0.48754,0.34313,-0.80285) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1030, parentID 1) is processed with stopping code 2 +Track (trackID 705, parentID 637) is processed with stopping code 2 ### pop requested out of 123 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.549158,-0.832152,-0.0771264) - Old Polarization: (-0.83506,-0.550047,-0.011115) - New Momentum Direction: (0.74212,-0.662113,-0.104227) - New Polarization: (0.640242,0.746274,-0.182116) + Old Momentum Direction: (0.93171,-0.075347,-0.35531) + Old Polarization: (-0.3524,0.049406,-0.93455) + New Momentum Direction: (0.87206,-0.10153,-0.47876) + New Polarization: (-0.48137,-0.0014127,-0.87652) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1029, parentID 1) is processed with stopping code 2 +Track (trackID 704, parentID 637) is processed with stopping code 2 ### pop requested out of 122 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1028, parentID 1) is processed with stopping code 2 -### pop requested out of 121 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.820213,0.29936,-0.487477) - Old Polarization: (-0.534176,0.705737,-0.465394) - New Momentum Direction: (0.632739,0.405228,-0.659873) - New Polarization: (-0.747154,0.543395,-0.382732) + Old Momentum Direction: (0.50735,0.22048,0.83306) + Old Polarization: (-0.83134,0.37974,0.4058) + New Momentum Direction: (0.68979,0.29977,0.65903) + New Polarization: (0.28602,0.72339,-0.62841) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1027, parentID 1) is processed with stopping code 2 -### pop requested out of 120 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.815591,0.0752486,0.573716) -Old Polarization: (-0.539695,0.456484,0.707355) -New Polarization: (-0.689865,0.30289,0.483638) -Polarization Change: (-0.770541,0.338312,0.540196) -New Momentum Direction: (0.593892,0.563885,0.666671) -Momentum Change: (0.562401,0.533985,0.63132) - Photon at Boundary! - Old Momentum Direction: (0.562401,0.533985,0.63132) - Old Polarization: (-0.770541,0.338312,0.540196) - New Momentum Direction: (0.562401,0.533985,-0.63132) - New Polarization: (0.770541,-0.338312,0.540196) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.562401,0.533985,-0.63132) - Old Polarization: (0.770541,-0.338312,0.540196) - New Momentum Direction: (-0.562401,0.533985,-0.63132) - New Polarization: (0.770541,0.338312,-0.540196) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.562401,0.533985,-0.63132) - Old Polarization: (0.770541,0.338312,-0.540196) - New Momentum Direction: (-0.562401,-0.533985,-0.63132) - New Polarization: (-0.770541,0.338312,0.540196) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.562401,-0.533985,-0.63132) - Old Polarization: (-0.770541,0.338312,0.540196) - New Momentum Direction: (-0.562401,-0.533985,0.63132) - New Polarization: (0.770541,-0.338312,0.540196) - *** TotalInternalReflection *** -No Absorbtion length specified +Track (trackID 703, parentID 637) is processed with stopping code 2 +### pop requested out of 121 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1026, parentID 1) is processed with stopping code 2 +Track (trackID 702, parentID 637) is processed with stopping code 2 +### pop requested out of 120 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 701, parentID 637) is processed with stopping code 2 ### pop requested out of 119 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.645736,-0.561486,0.517454) - Old Polarization: (-0.72672,-0.243971,0.642149) - New Momentum Direction: (-0.645736,-0.561486,0.517454) - New Polarization: (-0.72672,0.243971,-0.642149) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1025, parentID 1) is processed with stopping code 2 -### pop requested out of 118 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1024, parentID 1) is processed with stopping code 2 -### pop requested out of 117 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.709688,-0.0712346,-0.700906) - Old Polarization: (-0.656511,0.29409,-0.694626) - New Momentum Direction: (0.287192,-0.0968518,-0.952964) - New Polarization: (-0.928919,0.214599,-0.301756) + Old Momentum Direction: (0.92056,-0.17127,-0.35105) + Old Polarization: (-0.36535,-0.059716,-0.92895) + New Momentum Direction: (0.85015,-0.23088,-0.47323) + New Polarization: (-0.50741,-0.11916,-0.85342) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1023, parentID 1) is processed with stopping code 2 +Track (trackID 700, parentID 637) is processed with stopping code 2 +### pop requested out of 118 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.87707,0.47203,-0.089047) + Old Polarization: (-0.41874,0.66048,-0.62324) + New Momentum Direction: (0.75729,0.64176,-0.12107) + New Polarization: (-0.60546,0.62043,-0.49848) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 699, parentID 637) is processed with stopping code 2 +### pop requested out of 117 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 698, parentID 637) is processed with stopping code 2 ### pop requested out of 116 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.692867,-0.39733,0.601717) - Old Polarization: (-0.674995,-0.0638997,0.73505) - New Momentum Direction: (-0.692867,-0.39733,0.601717) - New Polarization: (-0.629227,-0.0743732,-0.773655) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.692867,-0.39733,0.601717) - Old Polarization: (-0.629227,-0.0743732,-0.773655) - New Momentum Direction: (-0.692867,-0.39733,-0.601717) - New Polarization: (0.629227,0.0743732,-0.773655) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.692867,-0.39733,-0.601717) - Old Polarization: (0.629227,0.0743732,-0.773655) - New Momentum Direction: (-0.692867,0.39733,-0.601717) - New Polarization: (-0.629227,0.0743732,0.773655) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.692867,0.39733,-0.601717) - Old Polarization: (-0.629227,0.0743732,0.773655) - New Momentum Direction: (-0.20049,0.539844,-0.81754) - New Polarization: (0.925212,0.378742,0.0231993) + Old Momentum Direction: (0.50697,0.21415,0.83494) + Old Polarization: (-0.83231,0.37349,0.40959) + New Momentum Direction: (0.68847,0.29081,0.6644) + New Polarization: (0.30649,0.71361,-0.62994) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1022, parentID 1) is processed with stopping code 2 +Track (trackID 697, parentID 637) is processed with stopping code 2 ### pop requested out of 115 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.869903,0.437826,-0.227105) - Old Polarization: (-0.478985,0.859743,-0.177244) - New Momentum Direction: (0.744732,0.592409,-0.307288) - New Polarization: (-0.657109,0.731338,-0.182627) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1021, parentID 1) is processed with stopping code 2 + +** Photon Absorbed! ** +Track (trackID 696, parentID 637) is processed with stopping code 2 ### pop requested out of 114 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.719152,-0.0416969,-0.6936) - Old Polarization: (-0.646112,0.327134,-0.689581) - New Momentum Direction: (0.332861,-0.0565864,-0.941277) - New Polarization: (-0.912447,0.232609,-0.33665) + Old Momentum Direction: (0.9047,-0.25745,-0.33947) + Old Polarization: (-0.38557,-0.15576,-0.90944) + New Momentum Direction: (0.81697,-0.34847,-0.45949) + New Polarization: (-0.54565,-0.20924,-0.81147) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1020, parentID 1) is processed with stopping code 2 +Track (trackID 695, parentID 637) is processed with stopping code 2 ### pop requested out of 113 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.49359,-0.53714,0.684) + Old Polarization: (-0.84851,-0.46996,0.24326) + New Momentum Direction: (0.49359,-0.53714,-0.684) + New Polarization: (0.59365,0.78285,-0.18636) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.49359,-0.53714,-0.684) + Old Polarization: (0.59365,0.78285,-0.18636) + New Momentum Direction: (0.49359,0.53714,-0.684) + New Polarization: (-0.59365,0.78285,0.18636) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.49359,0.53714,-0.684) + Old Polarization: (-0.59365,0.78285,0.18636) + New Momentum Direction: (-0.49359,0.53714,-0.684) + New Polarization: (-0.59365,-0.78285,-0.18636) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.49359,0.53714,-0.684) + Old Polarization: (-0.59365,-0.78285,-0.18636) + New Momentum Direction: (-0.49359,0.53714,0.684) + New Polarization: (0.81201,0.56629,0.14127) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.49359,0.53714,0.684) + Old Polarization: (0.81201,0.56629,0.14127) + New Momentum Direction: (-0.49359,-0.53714,0.684) + New Polarization: (-0.81201,0.56629,-0.14127) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.49359,-0.53714,0.684) + Old Polarization: (-0.81201,0.56629,-0.14127) + New Momentum Direction: (0.49359,-0.53714,0.684) + New Polarization: (-0.81201,-0.56629,0.14127) + *** TotalInternalReflection *** +No Absorbtion length specified ** Photon Absorbed! ** -Track (trackID 1019, parentID 1) is processed with stopping code 2 +Track (trackID 694, parentID 637) is processed with stopping code 2 ### pop requested out of 112 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.825164,0.12487,0.550919) - Old Polarization: (-0.529872,0.509144,0.678239) - New Momentum Direction: (0.640382,0.16978,0.749056) - New Polarization: (-0.743063,0.383718,0.548286) + Old Momentum Direction: (0.90545,-0.24309,-0.34795) + Old Polarization: (-0.38724,-0.13745,-0.91167) + New Momentum Direction: (0.81656,-0.33061,-0.47322) + New Polarization: (-0.54902,-0.19152,-0.81357) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1018, parentID 1) is processed with stopping code 2 +Track (trackID 693, parentID 637) is processed with stopping code 2 ### pop requested out of 111 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.562162,-0.823445,0.0768939) - Old Polarization: (-0.82204,-0.546156,0.161133) - New Momentum Direction: (0.756943,-0.645227,0.103537) - New Polarization: (0.599842,0.748899,0.281672) + Old Momentum Direction: (0.8261,-0.52433,-0.20652) + Old Polarization: (-0.4755,-0.45189,-0.75478) + New Momentum Direction: (0.643,-0.71259,-0.28067) + New Polarization: (-0.69826,-0.39492,-0.59705) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1017, parentID 1) is processed with stopping code 2 +Track (trackID 692, parentID 637) is processed with stopping code 2 ### pop requested out of 110 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.855075,0.25749,0.45005) -Old Polarization: (-0.496752,0.655586,0.568722) -New Polarization: (-0.469073,0.66176,0.562897) -Polarization Change: (-0.475095,0.670256,0.570124) -New Momentum Direction: (-0.00803019,0.637456,-0.785056) -Momentum Change: (-0.00794047,0.630333,-0.776284) - -** Photon Absorbed! ** -Track (trackID 1016, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.69515,-0.71057,0.10887) + Old Polarization: (-0.62179,-0.67035,-0.40498) + New Momentum Direction: (0.93876,-0.31162,0.14702) + New Polarization: (0.33311,0.92988,-0.15607) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 691, parentID 637) is processed with stopping code 2 ### pop requested out of 109 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1015, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.48486,-0.51618,0.70602) + Old Polarization: (-0.85668,-0.44285,0.26454) + New Momentum Direction: (0.65891,-0.70148,0.27158) + New Polarization: (-0.5189,-0.68526,-0.51105) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 690, parentID 637) is processed with stopping code 2 ### pop requested out of 108 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.553842,-0.754569,-0.351971) - Old Polarization: (-0.829189,-0.46151,-0.315364) - New Momentum Direction: (0.553842,0.754569,-0.351971) - New Polarization: (0.36486,0.160032,0.917206) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.553842,0.754569,-0.351971) - Old Polarization: (0.36486,0.160032,0.917206) - New Momentum Direction: (-0.553842,0.754569,-0.351971) - New Polarization: (0.36486,-0.160032,-0.917206) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.553842,0.754569,-0.351971) - Old Polarization: (0.36486,-0.160032,-0.917206) - New Momentum Direction: (-0.553842,0.754569,0.351971) - New Polarization: (-0.36486,0.160032,-0.917206) - *** TotalInternalReflection *** -No Absorbtion length specified -Scattering Photon! -Old Momentum Direction: (-0.553842,0.754569,0.351971) -Old Polarization: (-0.36486,0.160032,-0.917206) -New Polarization: (-0.56874,-0.0882803,-0.66239) -Polarization Change: (-0.648131,-0.100604,-0.754854) -New Momentum Direction: (-0.275394,-0.84699,0.591876) -Momentum Change: (-0.25753,-0.792046,0.553481) - -** Photon Absorbed! ** -Track (trackID 1014, parentID 1) is processed with stopping code 2 -### pop requested out of 107 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.548924,-0.8358,0.0110367) -Old Polarization: (-0.833255,-0.546113,0.0862975) -New Polarization: (-0.865059,-0.0791575,0.0622144) -Polarization Change: (-0.993295,-0.0908918,0.071437) -New Momentum Direction: (-0.110007,0.851617,-0.588826) -Momentum Change: (-0.105656,0.817929,-0.565534) - Photon at Boundary! - Old Momentum Direction: (-0.105656,0.817929,-0.565534) - Old Polarization: (-0.993295,-0.0908918,0.071437) - New Momentum Direction: (-0.143497,0.624063,-0.768085) - New Polarization: (-0.985863,-0.157979,0.0558263) + Old Momentum Direction: (0.45866,-0.084992,0.88454) + Old Polarization: (-0.88555,0.038852,0.46291) + New Momentum Direction: (0.62372,-0.11558,0.77305) + New Polarization: (0.74087,-0.22785,-0.63182) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1013, parentID 1) is processed with stopping code 2 +Track (trackID 689, parentID 637) is processed with stopping code 2 +### pop requested out of 107 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.90244,0.39349,-0.1754) + Old Polarization: (-0.39009,0.57357,-0.72031) + New Momentum Direction: (0.81079,0.53463,-0.23832) + New Polarization: (-0.55429,0.57041,-0.60613) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 688, parentID 637) is processed with stopping code 2 ### pop requested out of 106 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1012, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.46628,-0.060441,0.88257) + Old Polarization: (-0.88036,0.066324,0.46966) + New Momentum Direction: (0.63051,-0.081729,0.77187) + New Polarization: (0.76059,-0.13325,-0.63541) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 687, parentID 637) is processed with stopping code 2 ### pop requested out of 105 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.88441,0.381465,0.268892) - Old Polarization: (-0.461018,0.80376,0.376074) - New Momentum Direction: (0.777724,0.51379,0.362167) - New Polarization: (-0.624503,0.697246,0.351916) + Old Momentum Direction: (0.48269,0.09279,0.87086) + Old Polarization: (-0.86002,0.2381,0.45131) + New Momentum Direction: (0.65485,0.12589,0.7452) + New Polarization: (0.64286,0.42567,-0.63682) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1011, parentID 1) is processed with stopping code 2 +Track (trackID 686, parentID 637) is processed with stopping code 2 ### pop requested out of 104 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.560383,-0.826725,0.0499613) - Old Polarization: (-0.824278,-0.550802,0.131082) - New Momentum Direction: (0.754096,-0.653314,0.0672319) - New Polarization: (0.630466,0.748775,0.204569) + Old Momentum Direction: (0.93773,0.083273,-0.33722) + Old Polarization: (-0.34735,0.22892,-0.90936) + New Momentum Direction: (0.88298,0.11254,-0.45572) + New Polarization: (-0.46941,0.2147,-0.85648) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1010, parentID 1) is processed with stopping code 2 +Track (trackID 685, parentID 637) is processed with stopping code 2 ### pop requested out of 103 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.610059,-0.49792,-0.616363) - Old Polarization: (-0.768086,-0.180567,-0.614362) - New Momentum Direction: (0.610059,-0.49792,0.616363) - New Polarization: (0.768086,0.180567,-0.614362) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.610059,-0.49792,0.616363) - Old Polarization: (0.768086,0.180567,-0.614362) - New Momentum Direction: (-0.610059,-0.49792,0.616363) - New Polarization: (0.768086,-0.180567,0.614362) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.610059,-0.49792,0.616363) - Old Polarization: (0.768086,-0.180567,0.614362) - New Momentum Direction: (-0.610059,0.49792,0.616363) - New Polarization: (-0.768086,-0.180567,-0.614362) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.610059,0.49792,0.616363) - Old Polarization: (-0.768086,-0.180567,-0.614362) - New Momentum Direction: (-0.610059,0.49792,-0.616363) - New Polarization: (0.768086,0.180567,-0.614362) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.610059,0.49792,-0.616363) - Old Polarization: (0.768086,0.180567,-0.614362) - New Momentum Direction: (0.610059,0.49792,-0.616363) - New Polarization: (0.768086,-0.180567,0.614362) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1009, parentID 1) is processed with stopping code 2 -### pop requested out of 102 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.785785,0.191416,-0.588135) - Old Polarization: (-0.572576,0.584706,-0.574696) - New Momentum Direction: (0.544785,0.259526,-0.797406) - New Polarization: (-0.806415,0.422957,-0.413283) + Old Momentum Direction: (0.67947,-0.72035,0.13931) + Old Polarization: (-0.63936,-0.67448,-0.36918) + New Momentum Direction: (0.92141,-0.33958,0.18891) + New Polarization: (0.36002,0.92896,-0.086154) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1008, parentID 1) is processed with stopping code 2 +Track (trackID 684, parentID 637) is processed with stopping code 2 +### pop requested out of 102 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.93297,0.17087,-0.31681) +Old Polarization: (-0.35686,0.32388,-0.87622) +New Polarization: (-0.30645,-0.10063,-0.81304) +Polarization Change: (-0.35035,-0.11505,-0.92953) +New Momentum Direction: (0.82255,-0.27379,-0.27614) +Momentum Change: (0.90406,-0.30092,-0.30351) + Photon at Boundary! + Old Momentum Direction: (0.90406,-0.30092,-0.30351) + Old Polarization: (-0.35035,-0.11505,-0.92953) + New Momentum Direction: (0.8135,-0.40947,-0.41298) + New Polarization: (-0.51906,-0.19096,-0.83313) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 683, parentID 637) is processed with stopping code 2 ### pop requested out of 101 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.561742,-0.816825,0.131314) - Old Polarization: (-0.819992,-0.528645,0.219425) - New Momentum Direction: (0.761256,-0.623555,0.177953) - New Polarization: (0.512715,0.746813,0.423549) + Old Momentum Direction: (0.73654,-0.6762,0.016028) + Old Polarization: (-0.57451,-0.63793,-0.51282) + New Momentum Direction: (0.41529,-0.90943,0.021557) + New Polarization: (-0.83703,-0.39129,-0.38246) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1007, parentID 1) is processed with stopping code 2 +Track (trackID 682, parentID 637) is processed with stopping code 2 ### pop requested out of 100 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.63966,-0.73136,0.23654) +Old Polarization: (-0.68365,-0.68198,-0.25986) +New Polarization: (-0.7965,0.098466,-0.36792) +Polarization Change: (-0.90216,0.11153,-0.41673) +New Momentum Direction: (-0.36158,-0.58586,0.62599) +Momentum Change: (-0.38859,-0.62961,0.67275) Photon at Boundary! - Old Momentum Direction: (0.846517,0.219807,0.484864) - Old Polarization: (-0.506398,0.613431,0.606023) - New Momentum Direction: (0.690119,0.298807,0.659128) - New Polarization: (-0.705085,0.482837,0.519349) + Old Momentum Direction: (-0.38859,-0.62961,0.67275) + Old Polarization: (-0.90216,0.11153,-0.41673) + New Momentum Direction: (-0.38859,0.62961,0.67275) + New Polarization: (0.90216,0.11153,0.41673) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.38859,0.62961,0.67275) + Old Polarization: (0.90216,0.11153,0.41673) + New Momentum Direction: (-0.38859,0.62961,-0.67275) + New Polarization: (-0.90216,-0.11153,0.41673) + *** TotalInternalReflection *** +No Absorbtion length specified +Scattering Photon! +Old Momentum Direction: (-0.38859,0.62961,-0.67275) +Old Polarization: (-0.90216,-0.11153,0.41673) +New Polarization: (-0.4369,0.50621,0.57503) +Polarization Change: (-0.49539,0.57399,0.65201) +New Momentum Direction: (0.74141,0.017066,0.54829) +Momentum Change: (0.80389,0.018505,0.59449) + Photon at Boundary! + Old Momentum Direction: (0.80389,0.018505,0.59449) + Old Polarization: (-0.49539,0.57399,0.65201) + New Momentum Direction: (0.80389,0.018505,-0.59449) + New Polarization: (0.49539,-0.57399,0.65201) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.80389,0.018505,-0.59449) + Old Polarization: (0.49539,-0.57399,0.65201) + New Momentum Direction: (0.58795,0.025166,-0.80851) + New Polarization: (-0.7332,-0.40559,-0.54581) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1006, parentID 1) is processed with stopping code 2 +Track (trackID 681, parentID 637) is processed with stopping code 2 ### pop requested out of 99 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.877661,0.376622,0.296424) - Old Polarization: (-0.472132,0.785812,0.399488) - New Momentum Direction: (0.758756,0.511854,0.402859) - New Polarization: (-0.646288,0.668727,0.367582) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1005, parentID 1) is processed with stopping code 2 + +** Photon Absorbed! ** +Track (trackID 680, parentID 637) is processed with stopping code 2 ### pop requested out of 98 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.578597,-0.769287,0.270966) - Old Polarization: (-0.800204,-0.471148,0.371069) - New Momentum Direction: (0.786854,-0.495047,0.368496) - New Polarization: (0.153098,0.735021,0.660534) + Old Momentum Direction: (0.88406,0.45797,-0.093246) + Old Polarization: (-0.40691,0.6561,-0.63557) + New Momentum Direction: (0.77653,0.61741,-0.12571) + New Polarization: (-0.58276,0.62791,-0.51587) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1004, parentID 1) is processed with stopping code 2 +Track (trackID 679, parentID 637) is processed with stopping code 2 ### pop requested out of 97 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.565135,-0.680933,-0.465782) - Old Polarization: (-0.815745,-0.37689,-0.438765) - New Momentum Direction: (0.565135,0.680933,-0.465782) - New Polarization: (0.341693,0.320694,0.883403) - *** FresnelReflection *** + Old Momentum Direction: (0.4882,-0.52337,0.69839) + Old Polarization: (-0.85371,-0.45256,0.25762) + New Momentum Direction: (0.66249,-0.71022,0.23813) + New Polarization: (-0.54053,-0.67334,-0.50442) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 678, parentID 637) is processed with stopping code 2 +### pop requested out of 96 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.63353,0.5155,0.57698) + Old Polarization: (-0.69092,0.71257,0.12199) + New Momentum Direction: (-0.63353,0.5155,0.57698) + New Polarization: (-0.69092,-0.71257,-0.12199) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.63353,0.5155,0.57698) + Old Polarization: (-0.69092,-0.71257,-0.12199) + New Momentum Direction: (-0.63353,0.5155,-0.57698) + New Polarization: (0.69092,0.71257,-0.12199) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.63353,0.5155,-0.57698) + Old Polarization: (0.69092,0.71257,-0.12199) + New Momentum Direction: (-0.63353,-0.5155,-0.57698) + New Polarization: (-0.69092,0.71257,0.12199) + *** TotalInternalReflection *** No Absorbtion length specified ** Photon Absorbed! ** -Track (trackID 1003, parentID 1) is processed with stopping code 2 -### pop requested out of 96 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.565715,-0.676509,-0.47149) - Old Polarization: (-0.814976,-0.371591,-0.444674) - New Momentum Direction: (0.565715,0.676509,-0.47149) - New Polarization: (0.305403,0.359226,0.881865) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.565715,0.676509,-0.47149) - Old Polarization: (0.305403,0.359226,0.881865) - New Momentum Direction: (-0.565715,0.676509,-0.47149) - New Polarization: (0.305403,-0.359226,-0.881865) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.565715,0.676509,-0.47149) - Old Polarization: (0.305403,-0.359226,-0.881865) - New Momentum Direction: (-0.565715,0.676509,0.47149) - New Polarization: (-0.305403,0.359226,-0.881865) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.565715,0.676509,0.47149) - Old Polarization: (-0.305403,0.359226,-0.881865) - New Momentum Direction: (-0.565715,-0.676509,0.47149) - New Polarization: (0.809579,-0.34702,0.473455) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.565715,-0.676509,0.47149) - Old Polarization: (0.809579,-0.34702,0.473455) - New Momentum Direction: (0.565715,-0.676509,0.47149) - New Polarization: (0.809579,0.34702,-0.473455) - *** TotalInternalReflection *** -No Absorbtion length specified -Scattering Photon! -Old Momentum Direction: (0.565715,-0.676509,0.47149) -Old Polarization: (0.809579,0.34702,-0.473455) -New Polarization: (0.593206,0.6038,-0.228574) -Polarization Change: (0.676586,0.688669,-0.260702) -New Momentum Direction: (0.726774,-0.678199,0.125178) -Momentum Change: (0.725388,-0.676906,0.12494) - Photon at Boundary! - Old Momentum Direction: (0.725388,-0.676906,0.12494) - Old Polarization: (0.676586,0.688669,-0.260702) - New Momentum Direction: (0.725388,0.676906,0.12494) - New Polarization: (-0.679793,0.675968,0.284515) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.725388,0.676906,0.12494) - Old Polarization: (-0.679793,0.675968,0.284515) - New Momentum Direction: (0.725388,0.676906,-0.12494) - New Polarization: (0.679793,-0.675968,0.284515) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.725388,0.676906,-0.12494) - Old Polarization: (0.679793,-0.675968,0.284515) - New Momentum Direction: (0.35619,0.918892,-0.169604) - New Polarization: (-0.929242,0.367404,0.0390223) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1002, parentID 1) is processed with stopping code 2 +Track (trackID 677, parentID 637) is processed with stopping code 2 ### pop requested out of 95 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.838359,0.182231,0.513757) - Old Polarization: (-0.515311,0.572321,0.63789) - New Momentum Direction: (-0.838359,0.182231,0.513757) - New Polarization: (0.234669,-0.730017,0.641877) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.838359,0.182231,0.513757) - Old Polarization: (0.234669,-0.730017,0.641877) - New Momentum Direction: (-0.838359,0.182231,-0.513757) - New Polarization: (-0.234669,0.730017,0.641877) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.838359,0.182231,-0.513757) - Old Polarization: (-0.234669,0.730017,0.641877) - New Momentum Direction: (-0.671566,0.247695,-0.698316) - New Polarization: (0.41262,0.907827,-0.0748052) + Old Momentum Direction: (0.50078,0.14749,0.85292) + Old Polarization: (-0.84363,0.30366,0.44281) + New Momentum Direction: (0.67422,0.19858,0.71133) + New Polarization: (0.50561,0.57794,-0.64058) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1001, parentID 1) is processed with stopping code 2 +Track (trackID 676, parentID 637) is processed with stopping code 2 ### pop requested out of 94 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.771208,-0.123294,0.624529) - Old Polarization: (-0.587901,0.238327,0.773028) - New Momentum Direction: (0.51349,-0.166197,0.841847) - New Polarization: (-0.824074,0.178,0.53779) + Old Momentum Direction: (0.65144,-0.72643,0.21892) + Old Polarization: (-0.67118,-0.68632,-0.28014) + New Momentum Direction: (0.88077,-0.36965,0.29599) + New Polarization: (0.36125,0.92861,0.084753) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1000, parentID 1) is processed with stopping code 2 +Track (trackID 675, parentID 637) is processed with stopping code 2 ### pop requested out of 93 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.76174,0.114663,-0.637655) -Old Polarization: (-0.59934,0.498501,-0.626329) -New Polarization: (-0.523453,0.553842,-0.578002) -Polarization Change: (-0.547277,0.57905,-0.604309) -New Momentum Direction: (-0.725556,-0.0152237,0.736719) -Momentum Change: (-0.701612,-0.0147213,0.712407) Photon at Boundary! - Old Momentum Direction: (-0.701612,-0.0147213,0.712407) - Old Polarization: (-0.547277,0.57905,-0.604309) - New Momentum Direction: (-0.953223,-0.0200006,0.301606) - New Polarization: (-0.28129,0.423939,-0.860902) + Old Momentum Direction: (0.91063,0.36152,-0.20015) + Old Polarization: (-0.3796,0.5405,-0.75084) + New Momentum Direction: (0.82845,0.48998,-0.27127) + New Polarization: (-0.53452,0.54712,-0.64417) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 999, parentID 1) is processed with stopping code 2 +Track (trackID 674, parentID 637) is processed with stopping code 2 ### pop requested out of 92 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.886001,0.461966,0.0398769) - Old Polarization: (-0.463279,0.878356,0.117743) - New Momentum Direction: (0.776079,0.628299,0.0542348) - New Polarization: (-0.63035,0.770264,0.0967104) + Old Momentum Direction: (0.87859,0.46805,-0.094933) + Old Polarization: (-0.41723,0.65552,-0.62946) + New Momentum Direction: (0.76032,0.63659,-0.12912) + New Polarization: (-0.60297,0.61779,-0.50475) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 998, parentID 1) is processed with stopping code 2 +Track (trackID 673, parentID 637) is processed with stopping code 2 ### pop requested out of 91 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.874961,0.353359,0.33103) - Old Polarization: (-0.474311,0.762927,0.439285) - New Momentum Direction: (0.754133,0.479268,0.448983) - New Polarization: (-0.649652,0.644481,0.403233) + Old Momentum Direction: (0.90938,-0.23769,-0.34137) + Old Polarization: (-0.37889,-0.13462,-0.9156) + New Momentum Direction: (0.82742,-0.3209,-0.46088) + New Polarization: (-0.53316,-0.19103,-0.82417) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 997, parentID 1) is processed with stopping code 2 +Track (trackID 672, parentID 637) is processed with stopping code 2 ### pop requested out of 90 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.563455,-0.694845,-0.446888) - Old Polarization: (-0.81806,-0.393761,-0.419202) - New Momentum Direction: (0.76366,-0.223566,-0.605675) - New Polarization: (-0.305632,0.701168,-0.644168) + Old Momentum Direction: (0.91758,-0.18839,-0.35007) + Old Polarization: (-0.36943,-0.078822,-0.92591) + New Momentum Direction: (0.84386,-0.25427,-0.47248) + New Polarization: (-0.51521,-0.13806,-0.84587) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 996, parentID 1) is processed with stopping code 2 +Track (trackID 671, parentID 637) is processed with stopping code 2 ### pop requested out of 89 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.869803,0.313987,0.380599) - Old Polarization: (-0.478777,0.723519,0.497285) - New Momentum Direction: (0.745026,0.424484,0.514539) - New Polarization: (-0.656486,0.603265,0.452877) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 995, parentID 1) is processed with stopping code 2 + +** Photon Absorbed! ** +Track (trackID 670, parentID 637) is processed with stopping code 2 ### pop requested out of 88 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.602341,-0.704915,0.37454) - Old Polarization: (-0.774784,-0.403384,0.486818) - New Momentum Direction: (0.817327,-0.271456,0.50822) - New Polarization: (-0.191264,0.704217,0.683737) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 994, parentID 1) is processed with stopping code 2 + +** Photon Absorbed! ** +Track (trackID 669, parentID 637) is processed with stopping code 2 ### pop requested out of 87 stacked tracks. ** Photon Absorbed! ** -Track (trackID 993, parentID 1) is processed with stopping code 2 +Track (trackID 668, parentID 637) is processed with stopping code 2 ### pop requested out of 86 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.60398,-0.522387,-0.60193) - Old Polarization: (-0.774702,-0.207404,-0.597344) - New Momentum Direction: (-0.60398,-0.522387,-0.60193) - New Polarization: (-0.774702,0.207404,0.597344) - *** TotalInternalReflection *** + Old Momentum Direction: (0.70751,0.5794,0.40463) + Old Polarization: (-0.6078,0.79101,-0.069916) + New Momentum Direction: (0.29795,0.78263,0.54655) + New Polarization: (-0.88968,0.43519,-0.13815) + *** FresnelRefraction *** No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.60398,-0.522387,-0.60193) - Old Polarization: (-0.774702,0.207404,0.597344) - New Momentum Direction: (-0.60398,-0.522387,0.60193) - New Polarization: (0.774702,-0.207404,0.597344) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.60398,-0.522387,0.60193) - Old Polarization: (0.774702,-0.207404,0.597344) - New Momentum Direction: (-0.60398,0.522387,0.60193) - New Polarization: (-0.774702,-0.207404,-0.597344) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 992, parentID 1) is processed with stopping code 2 +Track (trackID 667, parentID 637) is processed with stopping code 2 ### pop requested out of 85 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 991, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.45403,-0.19604,0.86915) + Old Polarization: (-0.89088,-0.085102,0.44619) + New Momentum Direction: (0.61726,-0.26651,0.74025) + New Polarization: (0.51416,-0.57551,-0.63594) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 666, parentID 637) is processed with stopping code 2 ### pop requested out of 84 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 990, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.79027,-0.59986,-0.12506) + Old Polarization: (-0.51494,-0.53952,-0.66615) + New Momentum Direction: (0.55663,-0.81327,-0.16956) + New Polarization: (-0.75718,-0.41268,-0.50634) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 665, parentID 637) is processed with stopping code 2 ### pop requested out of 83 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.881338,0.453493,-0.132618) - Old Polarization: (-0.465,0.882273,-0.0732747) - New Momentum Direction: (0.770667,0.611622,-0.178861) - New Polarization: (-0.631844,0.76987,-0.089856) + Old Momentum Direction: (0.50297,0.1513,0.85096) + Old Polarization: (-0.84184,0.30879,0.44268) + New Momentum Direction: (0.67626,0.20343,0.70802) + New Polarization: (0.49454,0.58698,-0.64101) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 989, parentID 1) is processed with stopping code 2 +Track (trackID 664, parentID 637) is processed with stopping code 2 ### pop requested out of 82 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.860411,0.419683,-0.289064) - Old Polarization: (-0.490236,0.836551,-0.244645) - New Momentum Direction: (0.722902,0.569036,-0.391933) - New Polarization: (-0.677019,0.696679,-0.237242) + Old Momentum Direction: (0.91021,-0.21567,-0.35356) + Old Polarization: (-0.38191,-0.10689,-0.918) + New Momentum Direction: (0.8263,-0.29331,-0.48083) + New Polarization: (-0.53889,-0.16347,-0.82636) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 988, parentID 1) is processed with stopping code 2 +Track (trackID 663, parentID 637) is processed with stopping code 2 ### pop requested out of 81 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.876926,0.449132,-0.17112) - Old Polarization: (-0.470588,0.874734,-0.115703) - New Momentum Direction: (0.760527,0.606759,-0.231176) - New Polarization: (-0.642077,0.755759,-0.128706) + Old Momentum Direction: (0.84582,-0.47584,-0.24116) + Old Polarization: (-0.45247,-0.40046,-0.79681) + New Momentum Direction: (0.69075,-0.64499,-0.32688) + New Polarization: (-0.66017,-0.37807,-0.64903) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 987, parentID 1) is processed with stopping code 2 +Track (trackID 662, parentID 637) is processed with stopping code 2 ### pop requested out of 80 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.551677,-0.831682,0.062911) - Old Polarization: (-0.829716,-0.539555,0.14301) - New Momentum Direction: (0.750238,-0.655609,0.0855542) - New Polarization: (0.622685,0.744133,0.241931) + Old Momentum Direction: (0.90594,-0.25026,-0.34152) + Old Polarization: (-0.38431,-0.14754,-0.91134) + New Momentum Direction: (0.81938,-0.33884,-0.46239) + New Polarization: (-0.54333,-0.20188,-0.81488) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 986, parentID 1) is processed with stopping code 2 +Track (trackID 661, parentID 637) is processed with stopping code 2 ### pop requested out of 79 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 985, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.79822,0.58169,0.15647) + Old Polarization: (-0.50587,0.78836,-0.35013) + New Momentum Direction: (0.57775,0.7882,0.21201) + New Polarization: (-0.74305,0.6154,-0.263) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 660, parentID 637) is processed with stopping code 2 ### pop requested out of 78 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.873769,0.456106,-0.168803) - Old Polarization: (-0.476653,0.872058,-0.110983) - New Momentum Direction: (0.750035,0.62028,-0.229563) - New Polarization: (-0.654499,0.746072,-0.12251) - *** FresnelRefraction *** + Old Momentum Direction: (0.7323,0.59029,0.33955) + Old Polarization: (-0.57978,0.80198,-0.14378) + New Momentum Direction: (-0.7323,0.59029,0.33955) + New Polarization: (-0.35294,-0.75542,0.55206) + *** FresnelReflection *** No Absorbtion length specified -Track (trackID 984, parentID 1) is processed with stopping code 2 -### pop requested out of 77 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.544977,-0.811126,-0.212311) - Old Polarization: (-0.838236,-0.52134,-0.159891) - New Momentum Direction: (0.739023,-0.60906,-0.287907) - New Polarization: (0.41139,0.746431,-0.523067) + Old Momentum Direction: (-0.7323,0.59029,0.33955) + Old Polarization: (-0.35294,-0.75542,0.55206) + New Momentum Direction: (-0.7323,-0.59029,0.33955) + New Polarization: (0.35294,-0.75542,-0.55206) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.7323,-0.59029,0.33955) + Old Polarization: (0.35294,-0.75542,-0.55206) + New Momentum Direction: (-0.7323,-0.59029,-0.33955) + New Polarization: (-0.35294,0.75542,-0.55206) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.7323,-0.59029,-0.33955) + Old Polarization: (-0.35294,0.75542,-0.55206) + New Momentum Direction: (-0.3906,-0.79796,-0.45901) + New Polarization: (0.61484,0.14497,-0.77522) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 983, parentID 1) is processed with stopping code 2 +Track (trackID 659, parentID 637) is processed with stopping code 2 +### pop requested out of 77 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 658, parentID 637) is processed with stopping code 2 ### pop requested out of 76 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 982, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.73171,-0.68096,0.029828) + Old Polarization: (-0.57996,-0.64498,-0.49764) + New Momentum Direction: (0.4016,-0.91494,0.040077) + New Polarization: (-0.84378,-0.38667,-0.37218) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 657, parentID 637) is processed with stopping code 2 ### pop requested out of 75 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 981, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.46222,-0.34634,0.81633) + Old Polarization: (-0.88379,-0.25531,0.3921) + New Momentum Direction: (0.62622,-0.46922,0.62264) + New Polarization: (0.030623,-0.7832,-0.62102) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 656, parentID 637) is processed with stopping code 2 ### pop requested out of 74 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.705282,-0.105878,-0.700975) - Old Polarization: (-0.661507,0.257267,-0.70443) - New Momentum Direction: (0.28636,-0.143095,-0.947376) - New Polarization: (-0.929238,0.199477,-0.311007) + Old Momentum Direction: (0.68721,0.56309,0.45899) + Old Polarization: (-0.63085,0.77587,-0.0073111) + New Momentum Direction: (0.20256,0.75905,0.61872) + New Polarization: (-0.92129,0.36189,-0.14235) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 980, parentID 1) is processed with stopping code 2 +Track (trackID 655, parentID 637) is processed with stopping code 2 ### pop requested out of 73 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 979, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.74477,-0.66712,-0.016209) + Old Polarization: (-0.56578,-0.61838,-0.54544) + New Momentum Direction: (0.43011,-0.90251,-0.021928) + New Polarization: (-0.83037,-0.38597,-0.40188) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 654, parentID 637) is processed with stopping code 2 ### pop requested out of 72 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.651013,-0.307843,-0.693841) - Old Polarization: (-0.72134,0.0336888,-0.691761) - New Momentum Direction: (0.882428,-0.417272,-0.217265) - New Polarization: (0.116605,-0.25342,0.960303) + Old Momentum Direction: (0.46721,-0.43078,0.77211) + Old Polarization: (-0.87565,-0.34625,0.33668) + New Momentum Direction: (0.63576,-0.58619,0.50218) + New Polarization: (-0.25411,-0.77327,-0.58093) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 978, parentID 1) is processed with stopping code 2 +Track (trackID 653, parentID 637) is processed with stopping code 2 ### pop requested out of 71 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.542486,-0.821392,-0.176137) - Old Polarization: (-0.840051,-0.529241,-0.119239) - New Momentum Direction: (0.737277,-0.631759,-0.239382) - New Polarization: (0.4936,0.745651,-0.44762) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 977, parentID 1) is processed with stopping code 2 + +** Photon Absorbed! ** +Track (trackID 652, parentID 637) is processed with stopping code 2 ### pop requested out of 70 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.862842,0.424003,-0.275181) - Old Polarization: (-0.487276,0.842475,-0.229778) - New Momentum Direction: (0.728708,0.574448,-0.37282) - New Polarization: (-0.671721,0.70555,-0.22581) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 976, parentID 1) is processed with stopping code 2 + +** Photon Absorbed! ** +Track (trackID 651, parentID 637) is processed with stopping code 2 ### pop requested out of 69 stacked tracks. ** Photon Absorbed! ** -Track (trackID 975, parentID 1) is processed with stopping code 2 +Track (trackID 650, parentID 637) is processed with stopping code 2 ### pop requested out of 68 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.565763,-0.67264,-0.476935) - Old Polarization: (-0.814603,-0.366292,-0.449725) - New Momentum Direction: (0.565763,0.67264,-0.476935) - New Polarization: (0.814603,-0.366292,0.449725) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.565763,0.67264,-0.476935) - Old Polarization: (0.814603,-0.366292,0.449725) - New Momentum Direction: (-0.565763,0.67264,-0.476935) - New Polarization: (0.814603,0.366292,-0.449725) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.565763,0.67264,-0.476935) - Old Polarization: (0.814603,0.366292,-0.449725) - New Momentum Direction: (-0.565763,0.67264,0.476935) - New Polarization: (-0.814603,-0.366292,-0.449725) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.565763,0.67264,0.476935) - Old Polarization: (-0.814603,-0.366292,-0.449725) - New Momentum Direction: (-0.565763,-0.67264,0.476935) - New Polarization: (0.814603,-0.366292,0.449725) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.565763,-0.67264,0.476935) - Old Polarization: (0.814603,-0.366292,0.449725) - New Momentum Direction: (0.565763,-0.67264,0.476935) - New Polarization: (0.814603,0.366292,-0.449725) - *** TotalInternalReflection *** -No Absorbtion length specified -Scattering Photon! -Old Momentum Direction: (0.565763,-0.67264,0.476935) -Old Polarization: (0.814603,0.366292,-0.449725) -New Polarization: (0.814257,0.31523,-0.0071939) -Polarization Change: (0.932523,0.361016,-0.00823877) -New Momentum Direction: (-0.359967,0.927876,-0.111449) -Momentum Change: (-0.359437,0.92651,-0.111285) - Photon at Boundary! - Old Momentum Direction: (-0.359437,0.92651,-0.111285) - Old Polarization: (0.932523,0.361016,-0.00823877) - New Momentum Direction: (0.359437,0.92651,-0.111285) - New Polarization: (0.932523,-0.361016,0.00823877) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.359437,0.92651,-0.111285) - Old Polarization: (0.932523,-0.361016,0.00823877) - New Momentum Direction: (0.488362,0.859442,-0.151201) - New Polarization: (0.864847,-0.499785,-0.0474743) + Old Momentum Direction: (0.60596,-0.71542,0.34784) + Old Polarization: (-0.72312,-0.67761,-0.13395) + New Momentum Direction: (0.81745,-0.33404,0.46924) + New Polarization: (0.2036,0.92964,0.3071) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 974, parentID 1) is processed with stopping code 2 +Track (trackID 649, parentID 637) is processed with stopping code 2 ### pop requested out of 67 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.710135,-0.0714398,-0.700432) - Old Polarization: (-0.656028,0.294036,-0.695105) - New Momentum Direction: (0.291187,-0.0970705,-0.951729) - New Polarization: (-0.927567,0.214851,-0.305709) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 973, parentID 1) is processed with stopping code 2 + +** Photon Absorbed! ** +Track (trackID 648, parentID 637) is processed with stopping code 2 ### pop requested out of 66 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 972, parentID 1) is processed with stopping code 2 -### pop requested out of 65 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 971, parentID 1) is processed with stopping code 2 -### pop requested out of 64 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.780273,0.164092,-0.60353) - Old Polarization: (-0.57818,0.55722,-0.595998) - New Momentum Direction: (0.534183,0.221793,-0.815755) - New Polarization: (-0.812228,0.402195,-0.422522) + Old Momentum Direction: (0.91195,0.35081,-0.21281) + Old Polarization: (-0.37977,0.5253,-0.76147) + New Momentum Direction: (0.82998,0.4769,-0.2893) + New Polarization: (-0.53476,0.53284,-0.65583) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 970, parentID 1) is processed with stopping code 2 +Track (trackID 647, parentID 637) is processed with stopping code 2 +### pop requested out of 65 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.59095,-0.70368,0.39447) + Old Polarization: (-0.74065,-0.66707,-0.080404) + New Momentum Direction: (0.79587,-0.29043,0.53126) + New Polarization: (0.10486,0.9303,0.35148) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 646, parentID 637) is processed with stopping code 2 +### pop requested out of 64 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 645, parentID 637) is processed with stopping code 2 ### pop requested out of 63 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.594415,-0.737013,0.321686) - Old Polarization: (-0.784747,-0.444271,0.432198) - New Momentum Direction: (0.803291,-0.407109,0.434725) - New Polarization: (-0.00976964,0.720806,0.693068) + Old Momentum Direction: (0.58564,-0.708,0.39467) + Old Polarization: (-0.74494,-0.66204,-0.082243) + New Momentum Direction: (0.79347,-0.29065,0.53472) + New Polarization: (0.10305,0.93007,0.35263) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 969, parentID 1) is processed with stopping code 2 +Track (trackID 644, parentID 637) is processed with stopping code 2 ### pop requested out of 62 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.879966,0.455809,-0.13378) - Old Polarization: (-0.467527,0.880878,-0.0739736) - New Momentum Direction: (0.766478,0.616275,-0.180877) - New Polarization: (-0.636881,0.765691,-0.0900035) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 968, parentID 1) is processed with stopping code 2 + +** Photon Absorbed! ** +Track (trackID 643, parentID 637) is processed with stopping code 2 ### pop requested out of 61 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.581558,-0.624072,-0.521846) - Old Polarization: (-0.79966,-0.320699,-0.507638) - New Momentum Direction: (0.581558,0.624072,-0.521846) - New Polarization: (0.79966,-0.320699,0.507638) + Old Momentum Direction: (0.51786,-0.6107,0.59905) + Old Polarization: (-0.8209,-0.55179,0.14713) + New Momentum Direction: (0.51786,0.6107,0.59905) + New Polarization: (0.8209,-0.55179,-0.14713) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (0.581558,0.624072,-0.521846) - Old Polarization: (0.79966,-0.320699,0.507638) - New Momentum Direction: (-0.581558,0.624072,-0.521846) - New Polarization: (0.79966,0.320699,-0.507638) + Old Momentum Direction: (0.51786,0.6107,0.59905) + Old Polarization: (0.8209,-0.55179,-0.14713) + New Momentum Direction: (0.51786,0.6107,-0.59905) + New Polarization: (-0.8209,0.55179,-0.14713) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (-0.581558,0.624072,-0.521846) - Old Polarization: (0.79966,0.320699,-0.507638) - New Momentum Direction: (-0.581558,0.624072,0.521846) - New Polarization: (-0.79966,-0.320699,-0.507638) + Old Momentum Direction: (0.51786,0.6107,-0.59905) + Old Polarization: (-0.8209,0.55179,-0.14713) + New Momentum Direction: (-0.51786,0.6107,-0.59905) + New Polarization: (-0.8209,-0.55179,0.14713) *** TotalInternalReflection *** No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 967, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (-0.51786,0.6107,-0.59905) + Old Polarization: (-0.8209,-0.55179,0.14713) + New Momentum Direction: (-0.51786,-0.6107,-0.59905) + New Polarization: (0.8209,-0.55179,-0.14713) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.51786,-0.6107,-0.59905) + Old Polarization: (0.8209,-0.55179,-0.14713) + New Momentum Direction: (-0.51786,-0.6107,0.59905) + New Polarization: (-0.8209,0.55179,-0.14713) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.51786,-0.6107,0.59905) + Old Polarization: (-0.8209,0.55179,-0.14713) + New Momentum Direction: (0.51786,-0.6107,0.59905) + New Polarization: (-0.8209,-0.55179,0.14713) + *** TotalInternalReflection *** +No Absorbtion length specified +Scattering Photon! +Old Momentum Direction: (0.51786,-0.6107,0.59905) +Old Polarization: (-0.8209,-0.55179,0.14713) +New Polarization: (-0.7806,-0.48404,0.24216) +Polarization Change: (-0.82178,-0.50959,0.25493) +New Momentum Direction: (0.048951,0.36194,0.88127) +Momentum Change: (0.051314,0.37941,0.92381) + Photon at Boundary! + Old Momentum Direction: (0.051314,0.37941,0.92381) + Old Polarization: (-0.82178,-0.50959,0.25493) + New Momentum Direction: (0.069565,0.51435,0.85475) + New Polarization: (-0.53819,0.74079,-0.40197) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 642, parentID 637) is processed with stopping code 2 ### pop requested out of 60 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.545489,-0.809981,-0.215343) - Old Polarization: (-0.837874,-0.520819,-0.163449) - New Momentum Direction: (0.739359,-0.606758,-0.291878) - New Polarization: (0.403919,0.746529,-0.528719) + Old Momentum Direction: (0.45497,-0.24573,0.85593) + Old Polarization: (-0.89039,-0.14098,0.43281) + New Momentum Direction: (0.61796,-0.33376,0.71185) + New Polarization: (0.36583,-0.67937,-0.63611) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 966, parentID 1) is processed with stopping code 2 +Track (trackID 641, parentID 637) is processed with stopping code 2 ### pop requested out of 59 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.774889,0.151152,-0.613759) - Old Polarization: (-0.584437,0.541216,-0.604582) - New Momentum Direction: (0.516915,0.204703,-0.831201) - New Polarization: (-0.822934,0.386236,-0.416655) + Old Momentum Direction: (0.83485,0.54877,0.043384) + Old Polarization: (-0.46583,0.74626,-0.47549) + New Momentum Direction: (0.6633,0.74602,0.058978) + New Polarization: (-0.68313,0.63579,-0.35932) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 965, parentID 1) is processed with stopping code 2 +Track (trackID 640, parentID 637) is processed with stopping code 2 ### pop requested out of 58 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.64918,0.53244,0.54321) + Old Polarization: (-0.67356,0.73419,0.085334) + New Momentum Direction: (-0.64918,0.53244,0.54321) + New Polarization: (-0.67356,-0.73419,-0.085334) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.64918,0.53244,0.54321) + Old Polarization: (-0.67356,-0.73419,-0.085334) + New Momentum Direction: (-0.64918,0.53244,-0.54321) + New Polarization: (0.67356,0.73419,-0.085334) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.64918,0.53244,-0.54321) + Old Polarization: (0.67356,0.73419,-0.085334) + New Momentum Direction: (-0.64918,-0.53244,-0.54321) + New Polarization: (-0.67356,0.73419,0.085334) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.64918,-0.53244,-0.54321) + Old Polarization: (-0.67356,0.73419,0.085334) + New Momentum Direction: (0.64918,-0.53244,-0.54321) + New Polarization: (-0.67356,-0.73419,-0.085334) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.64918,-0.53244,-0.54321) + Old Polarization: (-0.67356,-0.73419,-0.085334) + New Momentum Direction: (0.64918,-0.53244,0.54321) + New Polarization: (0.67356,0.73419,-0.085334) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.64918,-0.53244,0.54321) + Old Polarization: (0.67356,0.73419,-0.085334) + New Momentum Direction: (0.64918,0.53244,0.54321) + New Polarization: (-0.67356,0.73419,0.085334) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.64918,0.53244,0.54321) + Old Polarization: (-0.67356,0.73419,0.085334) + New Momentum Direction: (-0.64918,0.53244,0.54321) + New Polarization: (-0.67356,-0.73419,-0.085334) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.64918,0.53244,0.54321) + Old Polarization: (-0.67356,-0.73419,-0.085334) + New Momentum Direction: (-0.64918,0.53244,-0.54321) + New Polarization: (0.67356,0.73419,-0.085334) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.64918,0.53244,-0.54321) + Old Polarization: (0.67356,0.73419,-0.085334) + New Momentum Direction: (-0.64918,-0.53244,-0.54321) + New Polarization: (-0.67356,0.73419,0.085334) + *** TotalInternalReflection *** +No Absorbtion length specified ** Photon Absorbed! ** -Track (trackID 964, parentID 1) is processed with stopping code 2 +Track (trackID 639, parentID 637) is processed with stopping code 2 ### pop requested out of 57 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.545888,-0.834615,-0.0736551) - Old Polarization: (-0.837148,-0.546933,-0.00692585) - New Momentum Direction: (0.740407,-0.664693,-0.0999011) - New Polarization: (0.644987,0.744417,-0.172731) + Old Momentum Direction: (0.69887,-0.70827,0.099627) + Old Polarization: (-0.61758,-0.66782,-0.41547) + New Momentum Direction: (0.69887,0.70827,0.099627) + New Polarization: (-0.66256,0.58862,0.46318) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.69887,0.70827,0.099627) + Old Polarization: (-0.66256,0.58862,0.46318) + New Momentum Direction: (0.25909,0.95644,0.13453) + New Polarization: (-0.93419,0.21278,0.28637) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 963, parentID 1) is processed with stopping code 2 +Track (trackID 638, parentID 637) is processed with stopping code 2 ### pop requested out of 56 stacked tracks. -** Photon Absorbed! ** -Track (trackID 962, parentID 1) is processed with stopping code 2 -### pop requested out of 55 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.583089,-0.764502,0.274854) - Old Polarization: (-0.796566,-0.471518,0.378355) - New Momentum Direction: (0.78981,-0.487436,0.372298) - New Polarization: (0.139903,0.734157,0.66441) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 961, parentID 1) is processed with stopping code 2 -### pop requested out of 54 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.600585,-0.706891,0.373635) - Old Polarization: (-0.776283,-0.403579,0.484261) - New Momentum Direction: (0.81622,-0.275568,0.507786) - New Polarization: (-0.187345,0.705179,0.683831) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 960, parentID 1) is processed with stopping code 2 -### pop requested out of 53 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.589064,-0.75593,0.285612) - Old Polarization: (-0.791295,-0.467916,0.393582) - New Momentum Direction: (0.794594,-0.469247,0.385264) - New Polarization: (0.105201,0.731367,0.673822) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 959, parentID 1) is processed with stopping code 2 -### pop requested out of 52 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.615085,-0.48683,-0.620215) - Old Polarization: (-0.763287,-0.170474,-0.623162) - New Momentum Direction: (0.615085,-0.48683,0.620215) - New Polarization: (0.763287,0.170474,-0.623162) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.615085,-0.48683,0.620215) - Old Polarization: (0.763287,0.170474,-0.623162) - New Momentum Direction: (-0.615085,-0.48683,0.620215) - New Polarization: (0.763287,-0.170474,0.623162) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 958, parentID 1) is processed with stopping code 2 -### pop requested out of 51 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 957, parentID 1) is processed with stopping code 2 -### pop requested out of 50 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.859642,0.27696,0.429313) - Old Polarization: (-0.491465,0.677843,0.546801) - New Momentum Direction: (0.720495,0.375927,0.582722) - New Polarization: (-0.679505,0.550454,0.48505) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 956, parentID 1) is processed with stopping code 2 -### pop requested out of 49 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.602968,-0.507227,-0.615753) - Old Polarization: (-0.774261,-0.186098,-0.604887) - New Momentum Direction: (0.602968,-0.507227,0.615753) - New Polarization: (0.774261,0.186098,-0.604887) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.602968,-0.507227,0.615753) - Old Polarization: (0.774261,0.186098,-0.604887) - New Momentum Direction: (-0.602968,-0.507227,0.615753) - New Polarization: (0.774261,-0.186098,0.604887) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 955, parentID 1) is processed with stopping code 2 -### pop requested out of 48 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.547465,-0.77826,-0.307559) -Old Polarization: (-0.834891,-0.482975,-0.263993) -New Polarization: (-0.729507,-0.405018,0.237356) -Polarization Change: (-0.840929,-0.466879,0.273609) -New Momentum Direction: (-0.507455,0.60532,-0.713959) -Momentum Change: (-0.476603,0.568517,-0.670551) - Photon at Boundary! - Old Momentum Direction: (-0.476603,0.568517,-0.670551) - Old Polarization: (-0.840929,-0.466879,0.273609) - New Momentum Direction: (-0.476603,0.568517,0.670551) - New Polarization: (0.840929,0.466879,0.273609) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.476603,0.568517,0.670551) - Old Polarization: (0.840929,0.466879,0.273609) - New Momentum Direction: (-0.476603,-0.568517,0.670551) - New Polarization: (-0.840929,0.466879,-0.273609) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.476603,-0.568517,0.670551) - Old Polarization: (-0.840929,0.466879,-0.273609) - New Momentum Direction: (0.476603,-0.568517,0.670551) - New Polarization: (-0.840929,-0.466879,0.273609) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.476603,-0.568517,0.670551) - Old Polarization: (-0.840929,-0.466879,0.273609) - New Momentum Direction: (0.476603,-0.568517,-0.670551) - New Polarization: (0.840929,0.466879,0.273609) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 954, parentID 1) is processed with stopping code 2 -### pop requested out of 47 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.707457,-0.0849038,-0.701638) - Old Polarization: (-0.65899,0.27953,-0.69828) - New Momentum Direction: (0.282656,-0.115233,-0.952275) - New Polarization: (-0.930426,0.208483,-0.301399) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 953, parentID 1) is processed with stopping code 2 -### pop requested out of 46 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 952, parentID 1) is processed with stopping code 2 -### pop requested out of 45 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.824436,0.111315,0.554901) - Old Polarization: (-0.529777,0.496717,0.687466) - New Momentum Direction: (0.641756,0.150839,0.751929) - New Polarization: (-0.740931,0.374978,0.557147) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 951, parentID 1) is processed with stopping code 2 -### pop requested out of 44 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.554235,-0.788584,-0.26638) - Old Polarization: (-0.831336,-0.508569,-0.224139) - New Momentum Direction: (0.745545,-0.561929,-0.358328) - New Polarization: (0.268679,0.745457,-0.610005) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 950, parentID 1) is processed with stopping code 2 -### pop requested out of 43 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.581309,-0.775517,0.246279) - Old Polarization: (-0.799661,-0.488548,0.349087) - New Momentum Direction: (0.784788,-0.52303,0.332485) - New Polarization: (0.224289,0.73979,0.634354) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 949, parentID 1) is processed with stopping code 2 -### pop requested out of 42 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.628217,-0.420958,-0.654322) - Old Polarization: (-0.747827,-0.094623,-0.657116) - New Momentum Direction: (0.628217,-0.420958,0.654322) - New Polarization: (0.747827,0.094623,-0.657116) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.628217,-0.420958,0.654322) - Old Polarization: (0.747827,0.094623,-0.657116) - New Momentum Direction: (-0.628217,-0.420958,0.654322) - New Polarization: (0.747827,-0.094623,0.657116) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 948, parentID 1) is processed with stopping code 2 -### pop requested out of 41 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 947, parentID 1) is processed with stopping code 2 -### pop requested out of 40 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.651402,-0.329626,-0.68339) - Old Polarization: (-0.722116,0.00708816,-0.691735) - New Momentum Direction: (0.651402,-0.329626,0.68339) - New Polarization: (-0.352732,0.665883,0.657404) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.651402,-0.329626,0.68339) - Old Polarization: (-0.352732,0.665883,0.657404) - New Momentum Direction: (-0.651402,-0.329626,0.68339) - New Polarization: (-0.352732,-0.665883,-0.657404) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 946, parentID 1) is processed with stopping code 2 -### pop requested out of 39 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.886606,0.43258,0.16372) - Old Polarization: (-0.461617,0.849748,0.254635) - New Momentum Direction: (0.778574,0.586923,0.222135) - New Polarization: (-0.626908,0.743457,0.232933) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 945, parentID 1) is processed with stopping code 2 -### pop requested out of 38 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.596944,-0.735146,0.321276) - Old Polarization: (-0.78276,-0.445874,0.434146) - New Momentum Direction: (0.596944,0.735146,0.321276) - New Polarization: (0.264554,0.197684,-0.943892) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.596944,0.735146,0.321276) - Old Polarization: (0.264554,0.197684,-0.943892) - New Momentum Direction: (-0.596944,0.735146,0.321276) - New Polarization: (0.264554,-0.197684,0.943892) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.596944,0.735146,0.321276) - Old Polarization: (0.264554,-0.197684,0.943892) - New Momentum Direction: (-0.596944,0.735146,-0.321276) - New Polarization: (-0.264554,0.197684,0.943892) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.596944,0.735146,-0.321276) - Old Polarization: (-0.264554,0.197684,0.943892) - New Momentum Direction: (-0.804547,0.406458,-0.433009) - New Polarization: (-0.578778,-0.373196,0.72508) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 944, parentID 1) is processed with stopping code 2 -### pop requested out of 37 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.814744,0.055278,0.57718) - Old Polarization: (-0.539337,0.437686,0.719407) - New Momentum Direction: (0.623366,0.0745464,0.778369) - New Polarization: (-0.752713,0.326779,0.571523) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 943, parentID 1) is processed with stopping code 2 -### pop requested out of 36 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 942, parentID 1) is processed with stopping code 2 -### pop requested out of 35 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.850195,0.374154,-0.370374) - Old Polarization: (-0.49905,0.796826,-0.340614) - New Momentum Direction: (0.705744,0.503499,-0.498412) - New Polarization: (-0.688442,0.653469,-0.314685) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 941, parentID 1) is processed with stopping code 2 -### pop requested out of 34 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 940, parentID 1) is processed with stopping code 2 -### pop requested out of 33 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.708482,-0.101587,-0.69838) - Old Polarization: (-0.658022,0.262575,-0.705735) - New Momentum Direction: (0.308001,-0.136949,-0.941478) - New Polarization: (-0.921707,0.202294,-0.330959) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 939, parentID 1) is processed with stopping code 2 -### pop requested out of 32 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.579484,-0.625948,-0.521907) - Old Polarization: (-0.801257,-0.320537,-0.505217) - New Momentum Direction: (0.579484,0.625948,-0.521907) - New Polarization: (0.801257,-0.320537,0.505217) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.579484,0.625948,-0.521907) - Old Polarization: (0.801257,-0.320537,0.505217) - New Momentum Direction: (-0.579484,0.625948,-0.521907) - New Polarization: (0.801257,0.320537,-0.505217) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.579484,0.625948,-0.521907) - Old Polarization: (0.801257,0.320537,-0.505217) - New Momentum Direction: (-0.579484,0.625948,0.521907) - New Polarization: (-0.801257,-0.320537,-0.505217) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.579484,0.625948,0.521907) - Old Polarization: (-0.801257,-0.320537,-0.505217) - New Momentum Direction: (-0.579484,-0.625948,0.521907) - New Polarization: (0.801257,-0.320537,0.505217) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.579484,-0.625948,0.521907) - Old Polarization: (0.801257,-0.320537,0.505217) - New Momentum Direction: (0.579484,-0.625948,0.521907) - New Polarization: (0.801257,0.320537,-0.505217) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.579484,-0.625948,0.521907) - Old Polarization: (0.801257,0.320537,-0.505217) - New Momentum Direction: (0.579484,-0.625948,-0.521907) - New Polarization: (-0.801257,-0.320537,-0.505217) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 938, parentID 1) is processed with stopping code 2 -### pop requested out of 31 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.602661,-0.523306,-0.602454) - Old Polarization: (-0.775775,-0.207279,-0.595994) - New Momentum Direction: (-0.602661,-0.523306,-0.602454) - New Polarization: (-0.775775,0.207279,0.595994) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.602661,-0.523306,-0.602454) - Old Polarization: (-0.775775,0.207279,0.595994) - New Momentum Direction: (-0.602661,-0.523306,0.602454) - New Polarization: (0.775775,-0.207279,0.595994) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.602661,-0.523306,0.602454) - Old Polarization: (0.775775,-0.207279,0.595994) - New Momentum Direction: (-0.602661,0.523306,0.602454) - New Polarization: (-0.775775,-0.207279,-0.595994) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.602661,0.523306,0.602454) - Old Polarization: (-0.775775,-0.207279,-0.595994) - New Momentum Direction: (0.602661,0.523306,0.602454) - New Polarization: (-0.775775,0.207279,0.595994) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.602661,0.523306,0.602454) - Old Polarization: (-0.775775,0.207279,0.595994) - New Momentum Direction: (0.602661,0.523306,-0.602454) - New Polarization: (0.775775,-0.207279,0.595994) - *** TotalInternalReflection *** -No Absorbtion length specified -Scattering Photon! -Old Momentum Direction: (0.602661,0.523306,-0.602454) -Old Polarization: (0.775775,-0.207279,0.595994) -New Polarization: (0.750645,0.0184938,0.51877) -Polarization Change: (0.822488,0.0202638,0.568421) -New Momentum Direction: (-0.31369,-0.775249,0.624226) -Momentum Change: (-0.300588,-0.742871,0.598155) - Photon at Boundary! - Old Momentum Direction: (-0.300588,-0.742871,0.598155) - Old Polarization: (0.822488,0.0202638,0.568421) - New Momentum Direction: (-0.300588,-0.742871,-0.598155) - New Polarization: (-0.822488,-0.0202638,0.568421) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.300588,-0.742871,-0.598155) - Old Polarization: (-0.822488,-0.0202638,0.568421) - New Momentum Direction: (0.300588,-0.742871,-0.598155) - New Polarization: (-0.822488,0.0202638,-0.568421) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.300588,-0.742871,-0.598155) - Old Polarization: (-0.822488,0.0202638,-0.568421) - New Momentum Direction: (0.405943,-0.427388,-0.807806) - New Polarization: (-0.836062,0.183285,-0.517114) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 937, parentID 1) is processed with stopping code 2 -### pop requested out of 30 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.588033,-0.761229,0.273401) - Old Polarization: (-0.792867,-0.475655,0.380939) - New Momentum Direction: (0.792201,-0.486572,0.368327) - New Polarization: (0.142483,0.73435,0.663648) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 936, parentID 1) is processed with stopping code 2 -### pop requested out of 29 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.563981,-0.808167,0.16968) - Old Polarization: (-0.816558,-0.515143,0.2605) - New Momentum Direction: (0.766277,-0.599725,0.230543) - New Polarization: (0.430405,0.745541,0.508842) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 935, parentID 1) is processed with stopping code 2 -### pop requested out of 28 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.555495,-0.831482,0.00788009) - Old Polarization: (-0.828961,-0.553018,0.0836387) - New Momentum Direction: (0.748955,-0.662535,0.0106245) - New Polarization: (0.659937,0.747268,0.0779353) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 934, parentID 1) is processed with stopping code 2 -### pop requested out of 27 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.622579,-0.637142,0.454363) - Old Polarization: (-0.752061,-0.326632,0.572464) - New Momentum Direction: (0.622579,0.637142,0.454363) - New Polarization: (0.752061,-0.326632,-0.572464) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.622579,0.637142,0.454363) - Old Polarization: (0.752061,-0.326632,-0.572464) - New Momentum Direction: (-0.622579,0.637142,0.454363) - New Polarization: (0.752061,0.326632,0.572464) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.622579,0.637142,0.454363) - Old Polarization: (0.752061,0.326632,0.572464) - New Momentum Direction: (-0.622579,0.637142,-0.454363) - New Polarization: (-0.752061,-0.326632,0.572464) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.622579,0.637142,-0.454363) - Old Polarization: (-0.752061,-0.326632,0.572464) - New Momentum Direction: (-0.622579,-0.637142,-0.454363) - New Polarization: (0.752061,-0.326632,-0.572464) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.622579,-0.637142,-0.454363) - Old Polarization: (0.752061,-0.326632,-0.572464) - New Momentum Direction: (0.622579,-0.637142,-0.454363) - New Polarization: (0.752061,0.326632,0.572464) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 933, parentID 1) is processed with stopping code 2 -### pop requested out of 26 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.674432,-0.465291,0.573276) - Old Polarization: (-0.695329,-0.139135,0.705095) - New Momentum Direction: (-0.674432,-0.465291,0.573276) - New Polarization: (-0.695329,0.139135,-0.705095) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.674432,-0.465291,0.573276) - Old Polarization: (-0.695329,0.139135,-0.705095) - New Momentum Direction: (-0.674432,-0.465291,-0.573276) - New Polarization: (0.695329,-0.139135,-0.705095) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 932, parentID 1) is processed with stopping code 2 -### pop requested out of 25 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 931, parentID 1) is processed with stopping code 2 -### pop requested out of 24 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 930, parentID 1) is processed with stopping code 2 -### pop requested out of 23 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 929, parentID 1) is processed with stopping code 2 -### pop requested out of 22 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 928, parentID 1) is processed with stopping code 2 -### pop requested out of 21 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 927, parentID 1) is processed with stopping code 2 -### pop requested out of 20 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.843889,0.185802,0.503317) - Old Polarization: (-0.507151,0.582364,0.635335) - New Momentum Direction: (0.689402,0.25086,0.679555) - New Polarization: (-0.703063,0.45763,0.544314) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 926, parentID 1) is processed with stopping code 2 -### pop requested out of 19 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.561122,-0.723797,-0.401572) - Old Polarization: (-0.822069,-0.430648,-0.372485) - New Momentum Direction: (0.757693,-0.363132,-0.542251) - New Polarization: (-0.148111,0.71353,-0.684791) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 925, parentID 1) is processed with stopping code 2 -### pop requested out of 18 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.677412,-0.22177,-0.701378) - Old Polarization: (-0.692786,0.128217,-0.709654) - New Momentum Direction: (0.912901,-0.298864,-0.278014) - New Polarization: (0.244641,-0.144606,0.95877) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 924, parentID 1) is processed with stopping code 2 -### pop requested out of 17 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.866985,0.282981,0.410194) - Old Polarization: (-0.480139,0.69474,0.53554) - New Momentum Direction: (0.741927,0.380735,0.551893) - New Polarization: (-0.657223,0.575856,0.486259) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 923, parentID 1) is processed with stopping code 2 -### pop requested out of 16 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 922, parentID 1) is processed with stopping code 2 -### pop requested out of 15 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.605415,-0.707596,0.364391) - Old Polarization: (-0.77295,-0.413536,0.481182) - New Momentum Direction: (0.816919,-0.301465,0.491693) - New Polarization: (-0.156302,0.7049,0.691871) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 921, parentID 1) is processed with stopping code 2 -### pop requested out of 14 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.613763,-0.4548,-0.645331) - Old Polarization: (-0.761939,-0.127177,-0.635039) - New Momentum Direction: (0.613763,-0.4548,0.645331) - New Polarization: (0.761939,0.127177,-0.635039) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.613763,-0.4548,0.645331) - Old Polarization: (0.761939,0.127177,-0.635039) - New Momentum Direction: (-0.613763,-0.4548,0.645331) - New Polarization: (0.761939,-0.127177,0.635039) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.613763,-0.4548,0.645331) - Old Polarization: (0.761939,-0.127177,0.635039) - New Momentum Direction: (-0.613763,0.4548,0.645331) - New Polarization: (-0.761939,-0.127177,-0.635039) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.613763,0.4548,0.645331) - Old Polarization: (-0.761939,-0.127177,-0.635039) - New Momentum Direction: (-0.613763,0.4548,-0.645331) - New Polarization: (0.761939,0.127177,-0.635039) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.613763,0.4548,-0.645331) - Old Polarization: (0.761939,0.127177,-0.635039) - New Momentum Direction: (0.613763,0.4548,-0.645331) - New Polarization: (0.761939,-0.127177,0.635039) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.613763,0.4548,-0.645331) - Old Polarization: (0.761939,-0.127177,0.635039) - New Momentum Direction: (0.613763,-0.4548,-0.645331) - New Polarization: (-0.761939,-0.127177,-0.635039) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.613763,-0.4548,-0.645331) - Old Polarization: (-0.761939,-0.127177,-0.635039) - New Momentum Direction: (0.613763,-0.4548,0.645331) - New Polarization: (0.761939,0.127177,-0.635039) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.613763,-0.4548,0.645331) - Old Polarization: (0.761939,0.127177,-0.635039) - New Momentum Direction: (-0.613763,-0.4548,0.645331) - New Polarization: (0.761939,-0.127177,0.635039) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 920, parentID 1) is processed with stopping code 2 -### pop requested out of 13 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.886998,0.461521,-0.0152635) - Old Polarization: (-0.460029,0.886035,0.0575859) - New Momentum Direction: (0.780785,0.624459,-0.0206522) - New Polarization: (-0.623556,0.780889,0.037289) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 919, parentID 1) is processed with stopping code 2 -### pop requested out of 12 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.719509,-0.308706,0.622099) - Old Polarization: (-0.645703,0.0324253,0.7629) - New Momentum Direction: (0.340119,-0.418011,0.842369) - New Polarization: (-0.909556,0.0812413,0.407562) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 918, parentID 1) is processed with stopping code 2 -### pop requested out of 11 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.87888,0.453964,-0.146584) - Old Polarization: (-0.468706,0.878939,-0.0882091) - New Momentum Direction: (0.764234,0.613737,-0.198174) - New Polarization: (-0.63895,0.762285,-0.10327) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 917, parentID 1) is processed with stopping code 2 -### pop requested out of 10 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.551436,-0.76828,-0.325059) - Old Polarization: (-0.831727,-0.47625,-0.285336) - New Momentum Direction: (0.746648,-0.4988,-0.440132) - New Polarization: (0.0965908,0.735914,-0.67015) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 916, parentID 1) is processed with stopping code 2 -### pop requested out of 9 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.562545,-0.697988,-0.443121) - Old Polarization: (-0.818922,-0.396759,-0.414666) - New Momentum Direction: (0.562545,0.697988,-0.443121) - New Polarization: (0.366043,0.270309,0.890475) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.562545,0.697988,-0.443121) - Old Polarization: (0.366043,0.270309,0.890475) - New Momentum Direction: (-0.562545,0.697988,-0.443121) - New Polarization: (0.366043,-0.270309,-0.890475) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.562545,0.697988,-0.443121) - Old Polarization: (0.366043,-0.270309,-0.890475) - New Momentum Direction: (-0.562545,0.697988,0.443121) - New Polarization: (-0.366043,0.270309,-0.890475) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.562545,0.697988,0.443121) - Old Polarization: (-0.366043,0.270309,-0.890475) - New Momentum Direction: (-0.762714,0.2394,0.600795) - New Polarization: (-0.622457,-0.523877,-0.581463) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 915, parentID 1) is processed with stopping code 2 -### pop requested out of 8 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.728193,-0.0212521,-0.685043) - Old Polarization: (-0.636041,0.35139,-0.687006) - New Momentum Direction: (0.377214,-0.0287174,-0.925681) - New Polarization: (-0.894073,0.249391,-0.372071) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 914, parentID 1) is processed with stopping code 2 -### pop requested out of 7 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 913, parentID 1) is processed with stopping code 2 -### pop requested out of 6 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 912, parentID 1) is processed with stopping code 2 -### pop requested out of 5 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.712958,-0.0791061,-0.69673) - Old Polarization: (-0.652986,0.287199,-0.700804) - New Momentum Direction: (0.32106,-0.106842,-0.941013) - New Polarization: (-0.916865,0.213827,-0.337099) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 911, parentID 1) is processed with stopping code 2 -### pop requested out of 4 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.57706,-0.77945,0.243843) - Old Polarization: (-0.802987,-0.487004,0.343567) - New Momentum Direction: (0.782205,-0.528116,0.330529) - New Polarization: (0.232822,0.73987,0.631178) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 910, parentID 1) is processed with stopping code 2 -### pop requested out of 3 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.872068,0.452592,-0.186168) - Old Polarization: (-0.478465,0.86842,-0.130068) - New Momentum Direction: (0.746447,0.615415,-0.253143) - New Polarization: (-0.65766,0.740269,-0.139587) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 909, parentID 1) is processed with stopping code 2 -### pop requested out of 2 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.556037,-0.773875,-0.303216) - Old Polarization: (-0.829251,-0.491831,-0.265414) - New Momentum Direction: (0.748077,-0.523418,-0.407939) - New Polarization: (0.1623,0.740364,-0.652319) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 908, parentID 1) is processed with stopping code 2 -### pop requested out of 1 stacked tracks. - - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 163 -Track (trackID 1, parentID 0) is processed with stopping code 4 -### pop requested out of 164 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.786725,-0.600312,-0.143841) - Old Polarization: (-0.537471,-0.780737,0.318709) - New Momentum Direction: (0.552425,-0.810617,-0.194233) - New Polarization: (-0.774718,-0.585291,0.239263) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1267, parentID 1) is processed with stopping code 2 -### pop requested out of 163 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.797729,0.578046,0.17173) - Old Polarization: (-0.526596,0.529028,0.665452) - New Momentum Direction: (0.573524,0.785267,0.233293) - New Polarization: (-0.762996,0.408406,0.501041) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1266, parentID 1) is processed with stopping code 2 -### pop requested out of 162 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.765226,-0.613708,-0.194399) -Old Polarization: (-0.562594,-0.784307,0.261441) -New Polarization: (-0.400791,-0.393436,0.659224) -Polarization Change: (-0.462793,-0.454301,0.761205) -New Momentum Direction: (-0.00195755,-0.780447,-0.837088) -Momentum Change: (-0.00171044,-0.681927,-0.731418) - Photon at Boundary! - Old Momentum Direction: (-0.00171044,-0.681927,-0.731418) - Old Polarization: (-0.462793,-0.454301,0.761205) - New Momentum Direction: (-0.00171044,0.681927,-0.731418) - New Polarization: (0.539755,0.616354,0.573386) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.00171044,0.681927,-0.731418) - Old Polarization: (0.539755,0.616354,0.573386) - New Momentum Direction: (-0.00232564,0.9272,-0.37456) - New Polarization: (0.393451,0.345199,0.852076) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1265, parentID 1) is processed with stopping code 2 -### pop requested out of 161 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.491153,0.366774,-0.790092) - Old Polarization: (-0.866507,0.298469,-0.400102) - New Momentum Direction: (0.665046,0.49663,-0.557738) - New Polarization: (-0.0310988,0.764605,0.643749) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1264, parentID 1) is processed with stopping code 2 -### pop requested out of 160 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.881652,-0.43226,0.189319) - Old Polarization: (-0.43406,-0.585425,0.68474) - New Momentum Direction: (0.767423,-0.587284,0.257216) - New Polarization: (-0.612837,-0.554037,0.563448) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1263, parentID 1) is processed with stopping code 2 -### pop requested out of 159 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.546298,0.604866,-0.579393) - Old Polarization: (-0.806343,0.566972,-0.168386) - New Momentum Direction: (0.546298,-0.604866,-0.579393) - New Polarization: (0.806343,0.566972,0.168386) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.546298,-0.604866,-0.579393) - Old Polarization: (0.806343,0.566972,0.168386) - New Momentum Direction: (0.546298,-0.604866,0.579393) - New Polarization: (-0.806343,-0.566972,0.168386) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.546298,-0.604866,0.579393) - Old Polarization: (-0.806343,-0.566972,0.168386) - New Momentum Direction: (-0.546298,-0.604866,0.579393) - New Polarization: (-0.806343,0.566972,-0.168386) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1262, parentID 1) is processed with stopping code 2 -### pop requested out of 158 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.566657,0.652858,-0.502669) - Old Polarization: (-0.782751,0.617043,-0.0809861) - New Momentum Direction: (0.566657,-0.652858,-0.502669) - New Polarization: (0.782751,0.617043,0.0809861) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.566657,-0.652858,-0.502669) - Old Polarization: (0.782751,0.617043,0.0809861) - New Momentum Direction: (-0.566657,-0.652858,-0.502669) - New Polarization: (0.782751,-0.617043,-0.0809861) - *** TotalInternalReflection *** -No Absorbtion length specified -Scattering Photon! -Old Momentum Direction: (-0.566657,-0.652858,-0.502669) -Old Polarization: (0.782751,-0.617043,-0.0809861) -New Polarization: (0.42303,-0.588607,0.479091) -Polarization Change: (0.486872,-0.677437,0.551394) -New Momentum Direction: (-0.193797,-0.639395,-0.901016) -Momentum Change: (-0.17277,-0.570023,-0.803259) - Photon at Boundary! - Old Momentum Direction: (-0.17277,-0.570023,-0.803259) - Old Polarization: (0.486872,-0.677437,0.551394) - New Momentum Direction: (-0.233837,-0.7715,-0.5917) - New Polarization: (0.361191,-0.63395,0.683848) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1261, parentID 1) is processed with stopping code 2 -### pop requested out of 157 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.911942,-0.292523,0.287735) - Old Polarization: (-0.395496,-0.439878,0.806282) - New Momentum Direction: (0.833848,-0.393526,0.387084) - New Polarization: (-0.54099,-0.443291,0.714719) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1260, parentID 1) is processed with stopping code 2 -### pop requested out of 156 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.819779,-0.571711,-0.0333073) - Old Polarization: (-0.501302,-0.744507,0.440914) - New Momentum Direction: (0.631461,-0.774095,-0.045098) - New Polarization: (-0.72185,-0.608091,0.33039) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1259, parentID 1) is processed with stopping code 2 -### pop requested out of 155 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.568292,0.657801,-0.49431) - Old Polarization: (-0.780589,0.620995,-0.0710304) - New Momentum Direction: (0.568292,-0.657801,-0.49431) - New Polarization: (0.780589,0.620995,0.0710304) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.568292,-0.657801,-0.49431) - Old Polarization: (0.780589,0.620995,0.0710304) - New Momentum Direction: (-0.568292,-0.657801,-0.49431) - New Polarization: (0.780589,-0.620995,-0.0710304) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.568292,-0.657801,-0.49431) - Old Polarization: (0.780589,-0.620995,-0.0710304) - New Momentum Direction: (-0.568292,-0.657801,0.49431) - New Polarization: (-0.780589,0.620995,-0.0710304) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1258, parentID 1) is processed with stopping code 2 -### pop requested out of 154 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1257, parentID 1) is processed with stopping code 2 -### pop requested out of 153 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1256, parentID 1) is processed with stopping code 2 -### pop requested out of 152 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1255, parentID 1) is processed with stopping code 2 -### pop requested out of 151 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.762362,0.643416,0.069433) - Old Polarization: (-0.564795,0.609125,0.556753) - New Momentum Direction: (0.485291,0.869306,0.0938095) - New Polarization: (-0.815299,0.411141,0.407738) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1254, parentID 1) is processed with stopping code 2 -### pop requested out of 150 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1253, parentID 1) is processed with stopping code 2 -### pop requested out of 149 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1252, parentID 1) is processed with stopping code 2 -### pop requested out of 148 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.69934,0.708081,-0.0976939) - Old Polarization: (-0.635157,0.67829,0.369458) - New Momentum Direction: (0.69934,-0.708081,-0.0976939) - New Polarization: (-0.681545,-0.619361,-0.389728) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.69934,-0.708081,-0.0976939) - Old Polarization: (-0.681545,-0.619361,-0.389728) - New Momentum Direction: (0.25271,-0.958462,-0.132239) - New Polarization: (-0.948241,-0.218182,-0.230728) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1251, parentID 1) is processed with stopping code 2 -### pop requested out of 147 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.780893,-0.606609,-0.149106) - Old Polarization: (-0.545119,-0.778318,0.311555) - New Momentum Direction: (0.529386,-0.823858,-0.202506) - New Polarization: (-0.790749,-0.565637,0.234031) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1250, parentID 1) is processed with stopping code 2 -### pop requested out of 146 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.717077,0.695688,-0.0426413) - Old Polarization: (-0.615521,0.660774,0.429548) - New Momentum Direction: (0.325109,0.943905,-0.0578554) - New Polarization: (-0.892759,0.32652,0.31043) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1249, parentID 1) is processed with stopping code 2 -### pop requested out of 145 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1248, parentID 1) is processed with stopping code 2 -### pop requested out of 144 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1247, parentID 1) is processed with stopping code 2 -### pop requested out of 143 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.749645,-0.612675,-0.250325) - Old Polarization: (-0.579227,-0.790321,0.199721) - New Momentum Direction: (0.444104,-0.829416,-0.338881) - New Polarization: (-0.838072,-0.518308,0.170272) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1246, parentID 1) is processed with stopping code 2 -### pop requested out of 142 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.742844,0.669344,0.012716) - Old Polarization: (-0.586385,0.641377,0.49476) - New Momentum Direction: (0.430525,0.902416,0.0171438) - New Polarization: (-0.844401,0.395993,0.360799) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1245, parentID 1) is processed with stopping code 2 -### pop requested out of 141 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.649496,0.720915,-0.241736) - Old Polarization: (-0.690569,0.692329,0.209271) - New Momentum Direction: (0.879285,0.346062,-0.327261) - New Polarization: (0.313803,-0.937796,-0.148546) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1244, parentID 1) is processed with stopping code 2 -### pop requested out of 140 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.481729,0.1339,-0.86603) - Old Polarization: (-0.875792,0.0392504,-0.48109) - New Momentum Direction: (0.653714,0.181705,-0.734603) - New Polarization: (0.640165,0.384876,0.664875) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1243, parentID 1) is processed with stopping code 2 -### pop requested out of 139 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.483956,0.322225,-0.813608) - Old Polarization: (-0.872679,0.246708,-0.421386) - New Momentum Direction: (0.657542,0.437801,-0.613163) - New Polarization: (0.115312,0.745774,0.656144) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1242, parentID 1) is processed with stopping code 2 -### pop requested out of 138 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1241, parentID 1) is processed with stopping code 2 -### pop requested out of 137 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.868668,-0.481236,0.11759) - Old Polarization: (-0.444441,-0.652197,0.614094) - New Momentum Direction: (0.745344,-0.647627,0.158247) - New Polarization: (-0.627725,-0.601785,0.493777) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1240, parentID 1) is processed with stopping code 2 + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 80 +Track (trackID 637, parentID 1) is processed with stopping code 4 ### pop requested out of 136 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.921505,-0.156175,0.35558) - Old Polarization: (-0.386697,-0.284187,0.877328) - New Momentum Direction: (0.8515,-0.210861,0.48009) - New Polarization: (-0.523144,-0.279437,0.80513) + Old Momentum Direction: (0.76609,-0.014351,-0.64257) + Old Polarization: (-0.6328,0.15819,-0.75798) + New Momentum Direction: (0.49334,-0.019422,-0.86962) + New Polarization: (-0.86332,0.11123,-0.49225) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1239, parentID 1) is processed with stopping code 2 +Track (trackID 842, parentID 637) is processed with stopping code 2 ### pop requested out of 135 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.531284,0.563036,-0.633031) - Old Polarization: (-0.823082,0.520034,-0.228255) - New Momentum Direction: (0.531284,0.563036,0.633031) - New Polarization: (0.823082,-0.520034,-0.228255) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.531284,0.563036,0.633031) - Old Polarization: (0.823082,-0.520034,-0.228255) - New Momentum Direction: (0.531284,-0.563036,0.633031) - New Polarization: (-0.823082,-0.520034,0.228255) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.531284,-0.563036,0.633031) - Old Polarization: (-0.823082,-0.520034,0.228255) - New Momentum Direction: (-0.531284,-0.563036,0.633031) - New Polarization: (-0.823082,0.520034,-0.228255) - *** TotalInternalReflection *** -No Absorbtion length specified ** Photon Absorbed! ** -Track (trackID 1238, parentID 1) is processed with stopping code 2 +Track (trackID 841, parentID 637) is processed with stopping code 2 ### pop requested out of 134 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.695813,0.711835,-0.0955727) - Old Polarization: (-0.639018,0.674321,0.370064) - New Momentum Direction: (0.946612,0.294991,-0.130021) - New Polarization: (0.312407,-0.938938,0.144211) + Old Momentum Direction: (0.79875,0.30719,-0.51733) + Old Polarization: (-0.59585,0.52307,-0.60939) + New Momentum Direction: (0.57636,0.41724,-0.70266) + New Polarization: (-0.81329,0.37682,-0.44335) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1237, parentID 1) is processed with stopping code 2 +Track (trackID 840, parentID 637) is processed with stopping code 2 ### pop requested out of 133 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.787823,0.59828,0.146277) - Old Polarization: (-0.537451,0.551808,0.637694) - New Momentum Direction: (0.54811,0.812474,0.198647) - New Polarization: (-0.77917,0.409645,0.474432) + Old Momentum Direction: (0.79169,0.24078,-0.56148) + Old Polarization: (-0.60389,0.44756,-0.65956) + New Momentum Direction: (0.55805,0.32705,-0.76264) + New Polarization: (-0.8251,0.31645,-0.46805) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1236, parentID 1) is processed with stopping code 2 +Track (trackID 839, parentID 637) is processed with stopping code 2 ### pop requested out of 132 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.482217,0.2006,-0.852776) - Old Polarization: (-0.876047,0.113543,-0.468667) - New Momentum Direction: (0.653414,0.271817,-0.706517) - New Polarization: (0.487367,0.563101,0.667376) + Old Momentum Direction: (0.80166,0.44847,0.39523) + Old Polarization: (-0.59264,0.68272,0.4274) + New Momentum Direction: (0.58296,0.60956,0.5372) + New Polarization: (-0.80905,0.49638,0.31473) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1235, parentID 1) is processed with stopping code 2 +Track (trackID 838, parentID 637) is processed with stopping code 2 ### pop requested out of 131 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.638617,0.722777,-0.264122) - Old Polarization: (-0.702046,0.687776,0.18465) - New Momentum Direction: (0.868042,0.342951,-0.359009) - New Polarization: (0.291549,-0.937389,-0.190529) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1234, parentID 1) is processed with stopping code 2 -### pop requested out of 130 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1233, parentID 1) is processed with stopping code 2 -### pop requested out of 129 stacked tracks. +Track (trackID 837, parentID 637) is processed with stopping code 2 +### pop requested out of 130 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.894647,-0.381589,0.232371) - Old Polarization: (-0.418304,-0.532738,0.735671) - New Momentum Direction: (0.796078,-0.516896,0.314767) - New Polarization: (-0.583957,-0.519498,0.623791) + Old Momentum Direction: (0.82256,0.54575,-0.15984) + Old Polarization: (-0.56844,0.7971,-0.20372) + New Momentum Direction: (0.63674,0.73999,-0.21673) + New Polarization: (-0.77092,0.61664,-0.15949) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1232, parentID 1) is processed with stopping code 2 +Track (trackID 836, parentID 637) is processed with stopping code 2 +### pop requested out of 129 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 835, parentID 637) is processed with stopping code 2 ### pop requested out of 128 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.75997,-0.614924,-0.210511) - Old Polarization: (-0.568363,-0.785856,0.24371) - New Momentum Direction: (0.468207,-0.835989,-0.286189) - New Polarization: (-0.826118,-0.529071,0.193939) + Old Momentum Direction: (0.68206,-0.68377,-0.25933) + Old Polarization: (-0.72885,-0.60663,-0.31746) + New Momentum Direction: (0.13144,-0.9269,-0.35154) + New Polarization: (-0.99012,-0.1053,-0.092563) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1231, parentID 1) is processed with stopping code 2 +Track (trackID 834, parentID 637) is processed with stopping code 2 ### pop requested out of 127 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.815209,0.537284,0.216239) - Old Polarization: (-0.507574,0.482961,0.713525) - New Momentum Direction: (0.616286,0.730573,0.294031) - New Polarization: (-0.734349,0.398251,0.549662) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1230, parentID 1) is processed with stopping code 2 + +** Photon Absorbed! ** +Track (trackID 833, parentID 637) is processed with stopping code 2 ### pop requested out of 126 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.875614,-0.454398,0.163774) - Old Polarization: (-0.440228,-0.611267,0.657687) - New Momentum Direction: (0.755207,-0.616657,0.222255) - New Polarization: (-0.623334,-0.57073,0.534529) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1229, parentID 1) is processed with stopping code 2 + +** Photon Absorbed! ** +Track (trackID 832, parentID 637) is processed with stopping code 2 ### pop requested out of 125 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.816859,0.540224,0.202235) - Old Polarization: (-0.503364,0.496347,0.707294) - New Momentum Direction: (0.628527,0.72842,0.272686) - New Polarization: (-0.722324,0.416639,0.55196) + Old Momentum Direction: (0.8074,0.34714,-0.47708) + Old Polarization: (-0.58507,0.57544,-0.57145) + New Momentum Direction: (0.60459,0.46865,-0.64408) + New Polarization: (-0.79316,0.42859,-0.43267) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1228, parentID 1) is processed with stopping code 2 +Track (trackID 831, parentID 637) is processed with stopping code 2 ### pop requested out of 124 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1227, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.82132,0.56913,-0.039022) + Old Polarization: (-0.57044,0.81873,-0.06544) + New Momentum Direction: (0.63096,0.774,-0.053068) + New Polarization: (-0.7758,0.62902,-0.049702) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 830, parentID 637) is processed with stopping code 2 ### pop requested out of 123 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.714214,-0.599819,-0.360717) - Old Polarization: (-0.618522,-0.782098,0.0758502) - New Momentum Direction: (0.32984,-0.809014,-0.486521) - New Polarization: (-0.890481,-0.437742,0.124195) + Old Momentum Direction: (0.71015,-0.34285,0.61493) + Old Polarization: (-0.6969,-0.2182,0.68316) + New Momentum Direction: (0.30267,-0.46412,0.83245) + New Polarization: (-0.94892,-0.065047,0.30875) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1226, parentID 1) is processed with stopping code 2 +Track (trackID 829, parentID 637) is processed with stopping code 2 ### pop requested out of 122 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1225, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.67946,-0.70794,-0.19277) + Old Polarization: (-0.73209,-0.63668,-0.24225) + New Momentum Direction: (0.91969,-0.2934,-0.26093) + New Polarization: (0.18778,0.91229,-0.36397) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 828, parentID 637) is processed with stopping code 2 ### pop requested out of 121 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.482724,0.31828,-0.815889) - Old Polarization: (-0.873522,0.241728,-0.422524) - New Momentum Direction: (0.656508,0.432863,-0.617759) - New Polarization: (0.127991,0.743164,0.656754) + Old Momentum Direction: (0.80049,0.31468,-0.51009) + Old Polarization: (-0.59369,0.53294,-0.60291) + New Momentum Direction: (0.58225,0.42687,-0.69193) + New Polarization: (-0.80919,0.38662,-0.44241) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1224, parentID 1) is processed with stopping code 2 +Track (trackID 827, parentID 637) is processed with stopping code 2 ### pop requested out of 120 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1223, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.79755,0.24735,-0.55021) + Old Polarization: (-0.59632,0.46116,-0.65707) + New Momentum Direction: (0.58127,0.33364,-0.74217) + New Polarization: (-0.80899,0.33509,-0.48296) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 826, parentID 637) is processed with stopping code 2 ### pop requested out of 119 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1222, parentID 1) is processed with stopping code 2 +Track (trackID 825, parentID 637) is processed with stopping code 2 ### pop requested out of 118 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.523392,0.554642,-0.646864) - Old Polarization: (-0.829722,0.504547,-0.238732) - New Momentum Direction: (0.523392,0.554642,0.646864) - New Polarization: (0.829722,-0.504547,-0.238732) + Old Momentum Direction: (0.76971,0.18734,0.61029) + Old Polarization: (-0.62881,0.38751,0.67412) + New Momentum Direction: (0.49958,0.25421,0.82812) + New Polarization: (-0.85998,0.26046,0.43885) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 824, parentID 637) is processed with stopping code 2 +### pop requested out of 117 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.8251,0.56365,-0.038859) + Old Polarization: (-0.56496,0.82247,-0.066012) + New Momentum Direction: (0.64535,0.76208,-0.052539) + New Polarization: (-0.76387,0.64335,-0.050992) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 823, parentID 637) is processed with stopping code 2 +### pop requested out of 116 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.75303,-0.11038,-0.64866) +Old Polarization: (-0.64781,0.04828,-0.76027) +New Polarization: (-0.2647,0.63786,-0.53768) +Polarization Change: (-0.30243,0.72879,-0.61433) +New Momentum Direction: (0.56607,-0.29623,-0.63011) +Momentum Change: (0.63083,-0.33012,-0.70219) + Photon at Boundary! + Old Momentum Direction: (0.63083,-0.33012,-0.70219) + Old Polarization: (-0.30243,0.72879,-0.61433) + New Momentum Direction: (-0.63083,-0.33012,-0.70219) + New Polarization: (-0.30243,-0.72879,0.61433) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (0.523392,0.554642,0.646864) - Old Polarization: (0.829722,-0.504547,-0.238732) - New Momentum Direction: (0.523392,-0.554642,0.646864) - New Polarization: (-0.829722,-0.504547,0.238732) + Old Momentum Direction: (-0.63083,-0.33012,-0.70219) + Old Polarization: (-0.30243,-0.72879,0.61433) + New Momentum Direction: (-0.85605,-0.44798,-0.25788) + New Polarization: (-0.051061,-0.42317,0.90461) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 822, parentID 637) is processed with stopping code 2 +### pop requested out of 115 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.70569,-0.36064,0.60986) +Old Polarization: (-0.70166,-0.23624,0.67221) +New Polarization: (-0.65276,-0.40187,0.48962) +Polarization Change: (-0.71766,-0.44182,0.5383) +New Momentum Direction: (-0.54443,-0.013987,-0.73732) +Momentum Change: (-0.59394,-0.015259,-0.80436) + Photon at Boundary! + Old Momentum Direction: (-0.59394,-0.015259,-0.80436) + Old Polarization: (-0.71766,-0.44182,0.5383) + New Momentum Direction: (-0.80667,-0.020724,-0.59064) + New Polarization: (-0.55297,-0.32624,0.76667) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 821, parentID 637) is processed with stopping code 2 +### pop requested out of 114 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.74192,-0.04193,0.66918) + Old Polarization: (-0.66047,0.12619,0.74017) + New Momentum Direction: (0.41381,-0.056931,0.90858) + New Polarization: (-0.90408,0.091395,0.41748) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 820, parentID 637) is processed with stopping code 2 +### pop requested out of 113 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.7544,-0.097375,-0.64915) + Old Polarization: (-0.64626,0.063097,-0.76051) + New Momentum Direction: (0.45416,-0.13216,-0.88107) + New Polarization: (-0.88441,0.052504,-0.46375) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 819, parentID 637) is processed with stopping code 2 +### pop requested out of 112 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.7985,0.42611,0.42524) + Old Polarization: (-0.59627,0.65706,0.46124) + New Momentum Direction: (0.57464,0.5793,0.57811) + New Polarization: (-0.81456,0.47323,0.33548) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 818, parentID 637) is processed with stopping code 2 +### pop requested out of 111 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.69225,-0.59519,-0.4081) + Old Polarization: (-0.71682,-0.50168,-0.48425) + New Momentum Direction: (0.1937,-0.80913,-0.55479) + New Polarization: (-0.97852,-0.11865,-0.1686) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 817, parentID 637) is processed with stopping code 2 +### pop requested out of 110 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.81776,0.50246,-0.28072) + Old Polarization: (-0.5743,0.74462,-0.34017) + New Momentum Direction: (0.62329,0.68267,-0.38141) + New Polarization: (-0.78113,0.56637,-0.26279) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 816, parentID 637) is processed with stopping code 2 +### pop requested out of 109 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 815, parentID 637) is processed with stopping code 2 +### pop requested out of 108 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.68253,-0.60371,0.41194) + Old Polarization: (-0.72847,-0.51644,0.45012) + New Momentum Direction: (0.14222,-0.81763,0.5579) + New Polarization: (-0.98865,-0.089714,0.12055) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 814, parentID 637) is processed with stopping code 2 +### pop requested out of 107 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 813, parentID 637) is processed with stopping code 2 +### pop requested out of 106 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 812, parentID 637) is processed with stopping code 2 +### pop requested out of 105 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.72831,-0.16042,0.6662) + Old Polarization: (-0.67595,-0.0086404,0.73689) + New Momentum Direction: (0.36671,-0.2178,0.90448) + New Polarization: (-0.92467,0.021783,0.38014) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 811, parentID 637) is processed with stopping code 2 +### pop requested out of 104 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.78238,0.12561,-0.61) + Old Polarization: (-0.61407,0.31907,-0.72188) + New Momentum Direction: (0.5391,0.16987,-0.82493) + New Polarization: (-0.83639,0.2232,-0.50063) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 810, parentID 637) is processed with stopping code 2 +### pop requested out of 103 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.79049,0.23696,-0.56478) + Old Polarization: (-0.60537,0.44232,-0.66172) + New Momentum Direction: (0.55358,0.3222,-0.76794) + New Polarization: (-0.82806,0.31114,-0.46637) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 809, parentID 637) is processed with stopping code 2 +### pop requested out of 102 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 808, parentID 637) is processed with stopping code 2 +### pop requested out of 101 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.75723,-0.068079,-0.6496) + Old Polarization: (-0.64307,0.096423,-0.75972) + New Momentum Direction: (0.46144,-0.09247,-0.88234) + New Polarization: (-0.88068,0.072319,-0.46815) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 807, parentID 637) is processed with stopping code 2 +### pop requested out of 100 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 806, parentID 637) is processed with stopping code 2 +### pop requested out of 99 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 805, parentID 637) is processed with stopping code 2 +### pop requested out of 98 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.79937,0.40559,0.44329) + Old Polarization: (-0.59464,0.63974,0.48696) + New Momentum Direction: (0.58218,0.54885,0.59986) + New Polarization: (-0.80886,0.46586,0.35877) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 804, parentID 637) is processed with stopping code 2 +### pop requested out of 97 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 803, parentID 637) is processed with stopping code 2 +### pop requested out of 96 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.78985,0.20362,-0.57851) + Old Polarization: (-0.60565,0.40754,-0.68345) + New Momentum Direction: (0.55688,0.27577,-0.78348) + New Polarization: (-0.82545,0.28854,-0.48515) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 802, parentID 637) is processed with stopping code 2 +### pop requested out of 95 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73045,-0.13946,0.66858) + Old Polarization: (-0.67351,0.015259,0.73902) + New Momentum Direction: (0.37369,-0.1894,0.90801) + New Polarization: (-0.92177,0.033363,0.38631) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 801, parentID 637) is processed with stopping code 2 +### pop requested out of 94 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.67387,-0.73859,0.019872) + Old Polarization: (-0.73875,-0.67398,0.0014702) + New Momentum Direction: (0.91098,-0.41158,0.026864) + New Polarization: (0.41089,0.91126,0.027918) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 800, parentID 637) is processed with stopping code 2 +### pop requested out of 93 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.72938,-0.30045,-0.6146) + Old Polarization: (-0.67469,-0.16737,-0.71887) + New Momentum Direction: (0.36799,-0.40836,-0.83536) + New Polarization: (-0.9241,-0.061003,-0.37726) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 799, parentID 637) is processed with stopping code 2 +### pop requested out of 92 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.79636,0.40673,0.44764) + Old Polarization: (-0.59862,0.63577,0.48728) + New Momentum Direction: (0.56979,0.55263,0.60823) + New Polarization: (-0.81763,0.45561,0.35199) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 798, parentID 637) is processed with stopping code 2 +### pop requested out of 91 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.67542,-0.65039,0.34756) + Old Polarization: (-0.73596,-0.56475,0.37339) + New Momentum Direction: (-0.67542,-0.65039,0.34756) + New Polarization: (-0.73596,0.56475,-0.37339) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (0.523392,-0.554642,0.646864) - Old Polarization: (-0.829722,-0.504547,0.238732) - New Momentum Direction: (-0.523392,-0.554642,0.646864) - New Polarization: (-0.829722,0.504547,-0.238732) + Old Momentum Direction: (-0.67542,-0.65039,0.34756) + Old Polarization: (-0.73596,0.56475,-0.37339) + New Momentum Direction: (-0.67542,0.65039,0.34756) + New Polarization: (0.73596,0.56475,0.37339) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (-0.523392,-0.554642,0.646864) - Old Polarization: (-0.829722,0.504547,-0.238732) - New Momentum Direction: (-0.523392,-0.554642,-0.646864) - New Polarization: (0.829722,-0.504547,-0.238732) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.523392,-0.554642,-0.646864) - Old Polarization: (0.829722,-0.504547,-0.238732) - New Momentum Direction: (-0.523392,0.554642,-0.646864) - New Polarization: (-0.829722,-0.504547,0.238732) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.523392,0.554642,-0.646864) - Old Polarization: (-0.829722,-0.504547,0.238732) - New Momentum Direction: (0.523392,0.554642,-0.646864) - New Polarization: (-0.829722,0.504547,-0.238732) + Old Momentum Direction: (-0.67542,0.65039,0.34756) + Old Polarization: (0.73596,0.56475,0.37339) + New Momentum Direction: (-0.67542,0.65039,-0.34756) + New Polarization: (-0.73596,-0.56475,0.37339) *** TotalInternalReflection *** No Absorbtion length specified Scattering Photon! -Old Momentum Direction: (0.523392,0.554642,-0.646864) -Old Polarization: (-0.829722,0.504547,-0.238732) -New Polarization: (-0.695159,0.516825,-0.346304) -Polarization Change: (-0.745168,0.554005,-0.371218) -New Momentum Direction: (-0.247319,-0.728159,-0.692285) -Momentum Change: (-0.239021,-0.703727,-0.669057) +Old Momentum Direction: (-0.67542,0.65039,-0.34756) +Old Polarization: (-0.73596,-0.56475,0.37339) +New Polarization: (-0.5234,-0.46921,0.55891) +Polarization Change: (-0.58282,-0.52248,0.62236) +New Momentum Direction: (-0.75395,0.21381,-0.52655) +Momentum Change: (-0.79855,0.22646,-0.5577) Photon at Boundary! - Old Momentum Direction: (-0.239021,-0.703727,-0.669057) - Old Polarization: (-0.745168,0.554005,-0.371218) - New Momentum Direction: (-0.239021,-0.703727,0.669057) - New Polarization: (0.745168,-0.554005,-0.371218) + Old Momentum Direction: (-0.79855,0.22646,-0.5577) + Old Polarization: (-0.58282,-0.52248,0.62236) + New Momentum Direction: (-0.57515,0.30776,-0.75795) + New Polarization: (0.805,0.048113,-0.59132) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 797, parentID 637) is processed with stopping code 2 +### pop requested out of 90 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 796, parentID 637) is processed with stopping code 2 +### pop requested out of 89 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.71578,-0.411,-0.56458) + Old Polarization: (-0.69012,-0.29273,-0.66185) + New Momentum Direction: (0.31436,-0.5587,-0.76748) + New Polarization: (-0.94449,-0.10281,-0.31203) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 795, parentID 637) is processed with stopping code 2 +### pop requested out of 88 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.67885,-0.6182,0.39622) + Old Polarization: (-0.73216,-0.52893,0.42917) + New Momentum Direction: (0.072255,-0.83972,0.5382) + New Polarization: (-0.99643,-0.037165,0.075788) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 794, parentID 637) is processed with stopping code 2 +### pop requested out of 87 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.81906,0.56079,0.12102) + Old Polarization: (-0.57276,0.81143,0.11635) + New Momentum Direction: (0.62676,0.76168,0.16437) + New Polarization: (-0.77857,0.62072,0.092372) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 793, parentID 637) is processed with stopping code 2 +### pop requested out of 86 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.77198,0.19485,0.60504) + Old Polarization: (-0.6261,0.39737,0.67089) + New Momentum Direction: (0.50859,0.26394,0.81955) + New Polarization: (-0.85471,0.26964,0.44357) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 792, parentID 637) is processed with stopping code 2 +### pop requested out of 85 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.70058,-0.55192,-0.45229) + Old Polarization: (-0.70779,-0.45695,-0.53873) + New Momentum Direction: (-0.70058,-0.55192,-0.45229) + New Polarization: (-0.69716,0.39425,0.59879) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.70058,-0.55192,-0.45229) + Old Polarization: (-0.69716,0.39425,0.59879) + New Momentum Direction: (-0.70058,0.55192,-0.45229) + New Polarization: (0.69716,0.39425,-0.59879) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (-0.239021,-0.703727,0.669057) - Old Polarization: (0.745168,-0.554005,-0.371218) - New Momentum Direction: (-0.324353,-0.265499,0.907913) - New Polarization: (0.307731,0.877978,0.366682) - *** FresnelRefraction *** + Old Momentum Direction: (-0.70058,0.55192,-0.45229) + Old Polarization: (0.69716,0.39425,-0.59879) + New Momentum Direction: (-0.70058,0.55192,0.45229) + New Polarization: (-0.69716,-0.39425,-0.59879) + *** TotalInternalReflection *** No Absorbtion length specified -Track (trackID 1221, parentID 1) is processed with stopping code 2 -### pop requested out of 117 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 791, parentID 637) is processed with stopping code 2 +### pop requested out of 84 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.912589,0.0835097,0.400258) - Old Polarization: (-0.40033,-0.0166148,0.91622) - New Momentum Direction: (0.831226,0.113545,0.544216) - New Polarization: (-0.549734,0.022069,0.835049) + Old Momentum Direction: (0.81627,0.42775,-0.38826) + Old Polarization: (-0.57466,0.66985,-0.47018) + New Momentum Direction: (0.62695,0.57686,-0.5236) + New Polarization: (-0.77698,0.51204,-0.36622) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1220, parentID 1) is processed with stopping code 2 +Track (trackID 790, parentID 637) is processed with stopping code 2 +### pop requested out of 83 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.72614,-0.18339,0.66264) + Old Polarization: (-0.67846,-0.034921,0.73381) + New Momentum Direction: (0.36006,-0.24884,0.89913) + New Polarization: (-0.92741,0.0092359,0.37394) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 789, parentID 637) is processed with stopping code 2 +### pop requested out of 82 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 788, parentID 637) is processed with stopping code 2 +### pop requested out of 81 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.80421,0.33801,-0.48887) + Old Polarization: (-0.58919,0.56149,-0.58101) + New Momentum Direction: (0.59352,0.45772,-0.66199) + New Polarization: (-0.80132,0.41269,-0.43309) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 787, parentID 637) is processed with stopping code 2 +### pop requested out of 80 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.80404,0.45254,0.38566) + Old Polarization: (-0.5896,0.69062,0.41882) + New Momentum Direction: (0.59155,0.61366,0.52296) + New Polarization: (-0.8029,0.50761,0.31255) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 786, parentID 637) is processed with stopping code 2 +### pop requested out of 79 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.8222,0.55364,-0.13215) + Old Polarization: (-0.56909,0.80416,-0.17168) + New Momentum Direction: (0.63478,0.75158,-0.1794) + New Polarization: (-0.77262,0.62061,-0.13378) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 785, parentID 637) is processed with stopping code 2 +### pop requested out of 78 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.82017,0.48978,-0.29569) + Old Polarization: (-0.57063,0.73757,-0.36108) + New Momentum Direction: (0.63374,0.66222,-0.3998) + New Polarization: (-0.77253,0.56837,-0.28313) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 784, parentID 637) is processed with stopping code 2 +### pop requested out of 77 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.81309,0.4274,-0.39524) + Old Polarization: (-0.57906,0.6636,-0.47364) + New Momentum Direction: (0.61512,0.57886,-0.5353) + New Polarization: (-0.78633,0.49997,-0.36292) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 783, parentID 637) is processed with stopping code 2 +### pop requested out of 76 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 782, parentID 637) is processed with stopping code 2 +### pop requested out of 75 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 781, parentID 637) is processed with stopping code 2 +### pop requested out of 74 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 780, parentID 637) is processed with stopping code 2 +### pop requested out of 73 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.81628,0.48664,-0.31123) + Old Polarization: (-0.576,0.7265,-0.37474) + New Momentum Direction: (0.61961,0.66125,-0.42289) + New Polarization: (-0.78379,0.55008,-0.28826) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 779, parentID 637) is processed with stopping code 2 +### pop requested out of 72 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73746,-0.11425,0.66566) + Old Polarization: (-0.66569,0.043535,0.74496) + New Momentum Direction: (0.40936,-0.15434,0.89923) + New Polarization: (-0.90625,0.045248,0.42032) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 778, parentID 637) is processed with stopping code 2 +### pop requested out of 71 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.68534,-0.64839,-0.33153) +Old Polarization: (-0.72472,-0.56265,-0.39774) +New Polarization: (-0.7244,-0.56291,-0.39681) +Polarization Change: (-0.72473,-0.56317,-0.39699) +New Momentum Direction: (0.68583,-0.53491,-0.4932) +Momentum Change: (0.68592,-0.53498,-0.49327) + Photon at Boundary! + Old Momentum Direction: (0.68592,-0.53498,-0.49327) + Old Polarization: (-0.72473,-0.56317,-0.39699) + New Momentum Direction: (0.14908,-0.72697,-0.67029) + New Polarization: (-0.98735,-0.14639,-0.060837) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 777, parentID 637) is processed with stopping code 2 +### pop requested out of 70 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.76997,0.13954,0.62263) + Old Polarization: (-0.62808,0.33778,0.70101) + New Momentum Direction: (0.51189,0.18786,0.83826) + New Polarization: (-0.85238,0.23244,0.46842) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 776, parentID 637) is processed with stopping code 2 +### pop requested out of 69 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.82128,0.46297,-0.3334) + Old Polarization: (-0.56844,0.71393,-0.40888) + New Momentum Direction: (0.64084,0.62296,-0.44861) + New Polarization: (-0.76623,0.55488,-0.32403) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 775, parentID 637) is processed with stopping code 2 +### pop requested out of 68 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.78766,0.34825,0.50825) + Old Polarization: (-0.60866,0.56773,0.55427) + New Momentum Direction: (0.54515,0.47387,0.69157) + New Polarization: (-0.83339,0.39579,0.38575) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 774, parentID 637) is processed with stopping code 2 +### pop requested out of 67 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.80686,0.35697,-0.47068) + Old Polarization: (-0.586,0.58432,-0.5614) + New Momentum Direction: (0.6011,0.48293,-0.63676) + New Polarization: (-0.79595,0.43326,-0.42278) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 773, parentID 637) is processed with stopping code 2 +### pop requested out of 66 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.72018,-0.43197,-0.54291) + Old Polarization: (-0.68584,-0.32515,-0.65107) + New Momentum Direction: (0.35645,-0.58173,-0.73112) + New Polarization: (-0.92944,-0.1409,-0.34102) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 772, parentID 637) is processed with stopping code 2 +### pop requested out of 65 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 771, parentID 637) is processed with stopping code 2 +### pop requested out of 64 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.71893,-0.26501,0.64258) + Old Polarization: (-0.68687,-0.12913,0.71522) + New Momentum Direction: (0.33909,-0.35867,0.8697) + New Polarization: (-0.93581,-0.033976,0.35085) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 770, parentID 637) is processed with stopping code 2 +### pop requested out of 63 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 769, parentID 637) is processed with stopping code 2 +### pop requested out of 62 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 768, parentID 637) is processed with stopping code 2 +### pop requested out of 61 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.69419,-0.57933,-0.42717) +Old Polarization: (-0.71458,-0.48341,-0.50565) +New Polarization: (-0.7544,-0.30926,-0.44209) +Polarization Change: (-0.8134,-0.33344,-0.47666) +New Momentum Direction: (0.19529,-0.91954,0.31) +Momentum Change: (0.19729,-0.92897,0.31319) + +** Photon Absorbed! ** +Track (trackID 767, parentID 637) is processed with stopping code 2 +### pop requested out of 60 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.81482,0.49723,0.29804) + Old Polarization: (-0.57628,0.75061,0.32326) + New Momentum Direction: (0.62381,0.67037,0.40182) + New Polarization: (-0.77921,0.57338,0.25311) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 766, parentID 637) is processed with stopping code 2 +### pop requested out of 59 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.82211,0.51883,-0.23441) + Old Polarization: (-0.56854,0.76977,-0.2902) + New Momentum Direction: (0.63763,0.70202,-0.31718) + New Polarization: (-0.7698,0.59605,-0.2283) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 765, parentID 637) is processed with stopping code 2 +### pop requested out of 58 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.74781,0.022385,0.66354) + Old Polarization: (-0.65379,0.19877,0.73011) + New Momentum Direction: (0.42883,0.030459,0.90287) + New Polarization: (-0.897,0.133,0.42156) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 764, parentID 637) is processed with stopping code 2 +### pop requested out of 57 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 763, parentID 637) is processed with stopping code 2 +### pop requested out of 56 stacked tracks. + + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 60 +Track (trackID 637, parentID 1) is processed with stopping code 4 ### pop requested out of 116 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1219, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.8701,-0.48638,-0.079804) + Old Polarization: (-0.37162,-0.75373,0.54203) + New Momentum Direction: (0.74563,-0.65757,-0.10789) + New Polarization: (-0.56386,-0.7089,0.42371) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 902, parentID 637) is processed with stopping code 2 ### pop requested out of 115 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.558148,0.644657,-0.522387) - Old Polarization: (-0.791103,0.603336,-0.100707) - New Momentum Direction: (0.558148,-0.644657,-0.522387) - New Polarization: (0.791103,0.603336,0.100707) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.558148,-0.644657,-0.522387) - Old Polarization: (0.791103,0.603336,0.100707) - New Momentum Direction: (-0.558148,-0.644657,-0.522387) - New Polarization: (0.791103,-0.603336,-0.100707) - *** TotalInternalReflection *** -No Absorbtion length specified ** Photon Absorbed! ** -Track (trackID 1218, parentID 1) is processed with stopping code 2 +Track (trackID 901, parentID 637) is processed with stopping code 2 ### pop requested out of 114 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1217, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.93447,-0.33692,0.11515) + Old Polarization: (-0.30021,-0.57172,0.76355) + New Momentum Direction: (0.87495,-0.45818,0.15659) + New Polarization: (-0.4392,-0.61482,0.65506) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 900, parentID 637) is processed with stopping code 2 ### pop requested out of 113 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 899, parentID 637) is processed with stopping code 2 +### pop requested out of 112 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 898, parentID 637) is processed with stopping code 2 +### pop requested out of 111 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 897, parentID 637) is processed with stopping code 2 +### pop requested out of 110 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.604464,-0.4553,-0.653701) - Old Polarization: (-0.741741,-0.620994,-0.253353) - New Momentum Direction: (0.604464,-0.4553,0.653701) - New Polarization: (0.741741,0.620994,-0.253353) - *** TotalInternalReflection *** + Old Momentum Direction: (0.72565,-0.55357,-0.40865) + Old Polarization: (-0.54127,-0.82593,0.15769) + New Momentum Direction: (-0.72565,-0.55357,-0.40865) + New Polarization: (-0.32704,0.80002,-0.50301) + *** FresnelReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (0.604464,-0.4553,0.653701) - Old Polarization: (0.741741,0.620994,-0.253353) - New Momentum Direction: (-0.604464,-0.4553,0.653701) - New Polarization: (0.741741,-0.620994,0.253353) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.604464,-0.4553,0.653701) - Old Polarization: (0.741741,-0.620994,0.253353) - New Momentum Direction: (-0.604464,0.4553,0.653701) - New Polarization: (-0.741741,-0.620994,-0.253353) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.604464,0.4553,0.653701) - Old Polarization: (-0.741741,-0.620994,-0.253353) - New Momentum Direction: (-0.604464,0.4553,-0.653701) - New Polarization: (0.741741,0.620994,-0.253353) + Old Momentum Direction: (-0.72565,-0.55357,-0.40865) + Old Polarization: (-0.32704,0.80002,-0.50301) + New Momentum Direction: (-0.72565,0.55357,-0.40865) + New Polarization: (0.32704,0.80002,0.50301) *** TotalInternalReflection *** No Absorbtion length specified ** Photon Absorbed! ** +Track (trackID 896, parentID 637) is processed with stopping code 2 +### pop requested out of 109 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.75345,0.65751,0.00050121) + Old Polarization: (-0.50877,0.58252,0.63389) + New Momentum Direction: (0.4536,0.89121,0.00067936) + New Polarization: (-0.77748,0.39534,0.48912) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 895, parentID 637) is processed with stopping code 2 +### pop requested out of 108 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.86052,0.47404,0.18652) + Old Polarization: (-0.38532,0.36617,0.84703) + New Momentum Direction: (0.72164,0.6442,0.25347) + New Polarization: (-0.58846,0.37798,0.71473) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 894, parentID 637) is processed with stopping code 2 +### pop requested out of 107 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 893, parentID 637) is processed with stopping code 2 +### pop requested out of 106 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.70667,0.7015,-0.092267) + Old Polarization: (-0.56314,0.6366,0.52689) + New Momentum Direction: (0.28874,0.94923,-0.12485) + New Polarization: (-0.85788,0.31441,0.40644) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 892, parentID 637) is processed with stopping code 2 +### pop requested out of 105 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.96493,-0.073373,0.25203) + Old Polarization: (-0.26249,-0.26864,0.92678) + New Momentum Direction: (0.93456,-0.099455,0.34161) + New Polarization: (-0.3558,-0.26044,0.89754) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 891, parentID 637) is processed with stopping code 2 +### pop requested out of 104 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 890, parentID 637) is processed with stopping code 2 +### pop requested out of 103 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.9595,-0.18871,0.20915) + Old Polarization: (-0.26979,-0.40196,0.87501) + New Momentum Direction: (0.92402,-0.25612,0.28387) + New Polarization: (-0.3734,-0.44494,0.81401) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 889, parentID 637) is processed with stopping code 2 +### pop requested out of 102 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.5368,0.71265,-0.45165) + Old Polarization: (-0.75974,0.64109,0.10859) + New Momentum Direction: (0.73002,0.29965,-0.61423) + New Polarization: (0.041884,-0.91668,-0.39742) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 888, parentID 637) is processed with stopping code 2 +### pop requested out of 101 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 887, parentID 637) is processed with stopping code 2 +### pop requested out of 100 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.88414,0.41209,0.22017) + Old Polarization: (-0.35793,0.29452,0.88608) + New Momentum Direction: (0.77261,0.55997,0.29917) + New Polarization: (-0.54322,0.33916,0.76804) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 886, parentID 637) is processed with stopping code 2 +### pop requested out of 99 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.82284,-0.5344,-0.19329) + Old Polarization: (-0.42778,-0.80638,0.40836) + New Momentum Direction: (0.63817,-0.72399,-0.26187) + New Polarization: (-0.65394,-0.68925,0.31194) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 885, parentID 637) is processed with stopping code 2 +### pop requested out of 98 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.79012,-0.55263,-0.26516) + Old Polarization: (-0.46671,-0.82284,0.32422) + New Momentum Direction: (0.55375,-0.75074,-0.36021) + New Polarization: (-0.71588,-0.65017,0.25454) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 884, parentID 637) is processed with stopping code 2 +### pop requested out of 97 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 883, parentID 637) is processed with stopping code 2 +### pop requested out of 96 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 882, parentID 637) is processed with stopping code 2 +### pop requested out of 95 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 881, parentID 637) is processed with stopping code 2 +### pop requested out of 94 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.52897,0.68996,-0.49412) + Old Polarization: (-0.77323,0.63179,0.054419) + New Momentum Direction: (0.71209,0.22469,-0.66517) + New Polarization: (-0.075106,-0.91759,-0.39036) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 880, parentID 637) is processed with stopping code 2 +### pop requested out of 93 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.55233,0.7185,-0.42271) + Old Polarization: (-0.74312,0.65416,0.14091) + New Momentum Direction: (0.74839,0.33445,-0.57277) + New Polarization: (0.11716,-0.91664,-0.38216) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 879, parentID 637) is processed with stopping code 2 +### pop requested out of 92 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.89777,-0.44037,-0.0093488) + Old Polarization: (-0.33811,-0.70258,0.62616) + New Momentum Direction: (0.80417,-0.59426,-0.012616) + New Polarization: (-0.50773,-0.6978,0.50526) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 878, parentID 637) is processed with stopping code 2 +### pop requested out of 91 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.51396,0.68369,-0.51808) + Old Polarization: (-0.78818,0.61475,0.029355) + New Momentum Direction: (0.6959,0.15375,-0.70149) + New Polarization: (-0.15728,-0.92047,-0.35777) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 877, parentID 637) is processed with stopping code 2 +### pop requested out of 90 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 876, parentID 637) is processed with stopping code 2 +### pop requested out of 89 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.94983,0.13261,0.28325) + Old Polarization: (-0.28192,-0.029059,0.959) + New Momentum Direction: (0.90519,0.18021,0.38491) + New Polarization: (-0.40104,0.062334,0.91394) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 875, parentID 637) is processed with stopping code 2 +### pop requested out of 88 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.41604,0.36948,-0.8309) + Old Polarization: (-0.90561,0.2511,-0.34179) + New Momentum Direction: (0.56101,0.49822,-0.66109) + New Polarization: (-0.086271,0.82944,0.55189) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 874, parentID 637) is processed with stopping code 2 +### pop requested out of 87 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.58632,0.72825,-0.35479) + Old Polarization: (-0.70491,0.67447,0.2195) + New Momentum Direction: (0.79045,0.38263,-0.47832) + New Polarization: (0.2624,-0.91713,-0.30003) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 873, parentID 637) is processed with stopping code 2 +### pop requested out of 86 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.92328,-0.37563,0.080399) + Old Polarization: (-0.31348,-0.6158,0.72285) + New Momentum Direction: (0.85254,-0.51109,0.10939) + New Polarization: (-0.46481,-0.64567,0.60585) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 872, parentID 637) is processed with stopping code 2 +### pop requested out of 85 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.82582,0.55098,0.12021) + Old Polarization: (-0.42284,0.46392,0.77845) + New Momentum Direction: (0.6486,0.74363,0.16224) + New Polarization: (-0.64373,0.42222,0.63823) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 871, parentID 637) is processed with stopping code 2 +### pop requested out of 84 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.93012,-0.3578,0.082797) + Old Polarization: (-0.29909,-0.60715,0.73615) + New Momentum Direction: (0.86894,-0.48217,0.11158) + New Polarization: (-0.43847,-0.64546,0.6254) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 870, parentID 637) is processed with stopping code 2 +### pop requested out of 83 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.44275,0.55221,-0.70642) + Old Polarization: (-0.86931,0.45742,-0.18727) + New Momentum Direction: (0.6013,0.74997,-0.27566) + New Polarization: (-0.65028,0.65979,0.37658) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 869, parentID 637) is processed with stopping code 2 +### pop requested out of 82 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.45544,-0.13442,-0.88006) + Old Polarization: (-0.85554,-0.33947,-0.3909) + New Momentum Direction: (0.6176,-0.18228,-0.76508) + New Polarization: (0.53065,-0.62141,0.57642) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 868, parentID 637) is processed with stopping code 2 +### pop requested out of 81 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.57566,-0.41825,-0.70262) + Old Polarization: (-0.71627,-0.67241,-0.18658) + New Momentum Direction: (0.7791,-0.56605,-0.26944) + New Polarization: (-0.45734,-0.80715,0.37329) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 867, parentID 637) is processed with stopping code 2 +### pop requested out of 80 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 866, parentID 637) is processed with stopping code 2 +### pop requested out of 79 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.9532,0.12187,0.27671) + Old Polarization: (-0.27371,-0.040992,0.96094) + New Momentum Direction: (0.91277,0.16464,0.37383) + New Polarization: (-0.38613,0.049204,0.92113) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 865, parentID 637) is processed with stopping code 2 +### pop requested out of 78 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 864, parentID 637) is processed with stopping code 2 +### pop requested out of 77 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.41976,0.041296,-0.9067) + Old Polarization: (-0.8968,-0.135,-0.42133) + New Momentum Direction: (0.56941,0.056019,-0.82014) + New Polarization: (0.81905,0.046601,0.57183) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 863, parentID 637) is processed with stopping code 2 +### pop requested out of 76 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.94043,-0.3156,0.12641) + Old Polarization: (-0.29029,-0.55189,0.78176) + New Momentum Direction: (0.88774,-0.42734,0.17117) + New Polarization: (-0.42038,-0.601,0.67976) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 862, parentID 637) is processed with stopping code 2 +### pop requested out of 75 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.6326,-0.49314,-0.59718) + Old Polarization: (-0.64953,-0.75778,-0.062291) + New Momentum Direction: (-0.6326,-0.49314,-0.59718) + New Polarization: (-0.64953,0.75778,0.062291) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.6326,-0.49314,-0.59718) + Old Polarization: (-0.64953,0.75778,0.062291) + New Momentum Direction: (-0.6326,-0.49314,0.59718) + New Polarization: (0.64953,-0.75778,0.062291) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.6326,-0.49314,0.59718) + Old Polarization: (0.64953,-0.75778,0.062291) + New Momentum Direction: (-0.6326,0.49314,0.59718) + New Polarization: (-0.64953,-0.75778,-0.062291) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.6326,0.49314,0.59718) + Old Polarization: (-0.64953,-0.75778,-0.062291) + New Momentum Direction: (0.6326,0.49314,0.59718) + New Polarization: (-0.64953,0.75778,0.062291) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.6326,0.49314,0.59718) + Old Polarization: (-0.64953,0.75778,0.062291) + New Momentum Direction: (0.6326,0.49314,-0.59718) + New Polarization: (0.64953,-0.75778,0.062291) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.6326,0.49314,-0.59718) + Old Polarization: (0.64953,-0.75778,0.062291) + New Momentum Direction: (0.6326,-0.49314,-0.59718) + New Polarization: (-0.64953,-0.75778,-0.062291) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 861, parentID 637) is processed with stopping code 2 +### pop requested out of 74 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.50316,0.6647,-0.55227) + Old Polarization: (-0.80218,0.59695,-0.012379) + New Momentum Direction: (0.50316,-0.6647,-0.55227) + New Polarization: (0.80218,0.59695,0.012379) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.50316,-0.6647,-0.55227) + Old Polarization: (0.80218,0.59695,0.012379) + New Momentum Direction: (0.50316,-0.6647,0.55227) + New Polarization: (-0.80218,-0.59695,0.012379) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.50316,-0.6647,0.55227) + Old Polarization: (-0.80218,-0.59695,0.012379) + New Momentum Direction: (-0.50316,-0.6647,0.55227) + New Polarization: (-0.80218,0.59695,-0.012379) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 860, parentID 637) is processed with stopping code 2 +### pop requested out of 73 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 859, parentID 637) is processed with stopping code 2 +### pop requested out of 72 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.96505,-0.097432,0.24326) + Old Polarization: (-0.26149,-0.29724,0.9183) + New Momentum Direction: (0.93494,-0.13192,0.32937) + New Polarization: (-0.35439,-0.30247,0.88483) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 858, parentID 637) is processed with stopping code 2 +### pop requested out of 71 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 857, parentID 637) is processed with stopping code 2 +### pop requested out of 70 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.40727,0.34653,-0.84501) + Old Polarization: (-0.91102,0.21953,-0.34906) + New Momentum Direction: (0.55268,0.47026,-0.68804) + New Polarization: (-0.010214,0.82935,0.55864) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 856, parentID 637) is processed with stopping code 2 +### pop requested out of 69 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.79504,-0.55006,-0.25563) + Old Polarization: (-0.46069,-0.82174,0.33543) + New Momentum Direction: (0.56786,-0.74646,-0.34689) + New Polarization: (-0.70581,-0.65841,0.26139) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 855, parentID 637) is processed with stopping code 2 +### pop requested out of 68 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 854, parentID 637) is processed with stopping code 2 +### pop requested out of 67 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.93981,-0.32013,0.11947) + Old Polarization: (-0.2894,-0.55982,0.77644) + New Momentum Direction: (0.88708,-0.43248,0.1614) + New Polarization: (-0.41925,-0.60853,0.67374) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 853, parentID 637) is processed with stopping code 2 +### pop requested out of 66 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.49968,-0.26871,-0.82348) + Old Polarization: (-0.80447,-0.49645,-0.32614) + New Momentum Direction: (0.67707,-0.36411,-0.63953) + New Polarization: (0.059211,-0.83925,0.54051) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 852, parentID 637) is processed with stopping code 2 +### pop requested out of 65 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.41422,0.33616,-0.84582) + Old Polarization: (-0.9083,0.2123,-0.36044) + New Momentum Direction: (0.55816,0.45297,-0.69518) + New Polarization: (0.034663,0.82437,0.56499) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 851, parentID 637) is processed with stopping code 2 +### pop requested out of 64 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 850, parentID 637) is processed with stopping code 2 +### pop requested out of 63 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.61141,-0.47147,-0.63553) + Old Polarization: (-0.67403,-0.73104,-0.10612) + New Momentum Direction: (0.61141,-0.47147,0.63553) + New Polarization: (0.67403,0.73104,-0.10612) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.61141,-0.47147,0.63553) + Old Polarization: (0.67403,0.73104,-0.10612) + New Momentum Direction: (-0.61141,-0.47147,0.63553) + New Polarization: (0.67403,-0.73104,0.10612) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.61141,-0.47147,0.63553) + Old Polarization: (0.67403,-0.73104,0.10612) + New Momentum Direction: (-0.61141,0.47147,0.63553) + New Polarization: (-0.67403,-0.73104,-0.10612) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.61141,0.47147,0.63553) + Old Polarization: (-0.67403,-0.73104,-0.10612) + New Momentum Direction: (-0.61141,0.47147,-0.63553) + New Polarization: (0.67403,0.73104,-0.10612) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.61141,0.47147,-0.63553) + Old Polarization: (0.67403,0.73104,-0.10612) + New Momentum Direction: (0.61141,0.47147,-0.63553) + New Polarization: (0.67403,-0.73104,0.10612) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.61141,0.47147,-0.63553) + Old Polarization: (0.67403,-0.73104,0.10612) + New Momentum Direction: (0.61141,-0.47147,-0.63553) + New Polarization: (-0.67403,-0.73104,-0.10612) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 849, parentID 637) is processed with stopping code 2 +### pop requested out of 62 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.94031,-0.32052,0.1144) + Old Polarization: (-0.28649,-0.56406,0.77444) + New Momentum Direction: (0.88882,-0.43158,0.15404) + New Polarization: (-0.41437,-0.6134,0.67234) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 848, parentID 637) is processed with stopping code 2 +### pop requested out of 61 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.89946,-0.43698,0.0052844) + Old Polarization: (-0.3393,-0.69069,0.63861) + New Momentum Direction: (0.80526,-0.59288,0.0071697) + New Polarization: (-0.51104,-0.68787,0.51543) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 847, parentID 637) is processed with stopping code 2 +### pop requested out of 60 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 846, parentID 637) is processed with stopping code 2 +### pop requested out of 59 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.51574,-0.31232,-0.79779) + Old Polarization: (-0.78496,-0.54538,-0.29394) + New Momentum Direction: (0.70003,-0.42392,-0.57468) + New Polarization: (-0.09906,-0.8546,0.50975) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 845, parentID 637) is processed with stopping code 2 +### pop requested out of 58 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.59731,-0.45809,-0.65831) + Old Polarization: (-0.68988,-0.71208,-0.13045) + New Momentum Direction: (0.59731,-0.45809,0.65831) + New Polarization: (0.68988,0.71208,-0.13045) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.59731,-0.45809,0.65831) + Old Polarization: (0.68988,0.71208,-0.13045) + New Momentum Direction: (-0.59731,-0.45809,0.65831) + New Polarization: (0.68988,-0.71208,0.13045) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.59731,-0.45809,0.65831) + Old Polarization: (0.68988,-0.71208,0.13045) + New Momentum Direction: (-0.59731,0.45809,0.65831) + New Polarization: (-0.68988,-0.71208,-0.13045) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.59731,0.45809,0.65831) + Old Polarization: (-0.68988,-0.71208,-0.13045) + New Momentum Direction: (-0.59731,0.45809,-0.65831) + New Polarization: (0.68988,0.71208,-0.13045) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 844, parentID 637) is processed with stopping code 2 +### pop requested out of 57 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.93836,-0.32487,0.11808) + Old Polarization: (-0.29229,-0.5634,0.77275) + New Momentum Direction: (0.88385,-0.43963,0.15979) + New Polarization: (-0.42458,-0.61066,0.66845) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 843, parentID 637) is processed with stopping code 2 +### pop requested out of 56 stacked tracks. + + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 47 +Track (trackID 637, parentID 1) is processed with stopping code 4 +### pop requested out of 103 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.88952,-0.45689,0.00048713) + Old Polarization: (-0.43523,-0.84702,0.30518) + New Momentum Direction: (0.78456,-0.62006,0.00066109) + New Polarization: (-0.60415,-0.7642,0.22583) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 949, parentID 637) is processed with stopping code 2 +### pop requested out of 102 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 948, parentID 637) is processed with stopping code 2 +### pop requested out of 101 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 947, parentID 637) is processed with stopping code 2 +### pop requested out of 100 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.57915,0.34542,-0.73842) + Old Polarization: (-0.80637,0.10964,-0.58116) + New Momentum Direction: (0.78247,0.46669,-0.41225) + New Polarization: (0.13837,0.51518,0.84584) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 946, parentID 637) is processed with stopping code 2 +### pop requested out of 99 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.55576,0.60221,-0.57313) + Old Polarization: (-0.83129,0.41032,-0.37495) + New Momentum Direction: (0.55576,-0.60221,-0.57313) + New Polarization: (0.83129,0.41032,0.37495) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.55576,-0.60221,-0.57313) + Old Polarization: (0.83129,0.41032,0.37495) + New Momentum Direction: (0.55576,-0.60221,0.57313) + New Polarization: (-0.83129,-0.41032,0.37495) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.55576,-0.60221,0.57313) + Old Polarization: (-0.83129,-0.41032,0.37495) + New Momentum Direction: (-0.55576,-0.60221,0.57313) + New Polarization: (-0.83129,0.41032,-0.37495) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.55576,-0.60221,0.57313) + Old Polarization: (-0.83129,0.41032,-0.37495) + New Momentum Direction: (-0.55576,0.60221,0.57313) + New Polarization: (0.83129,0.41032,0.37495) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.55576,0.60221,0.57313) + Old Polarization: (0.83129,0.41032,0.37495) + New Momentum Direction: (-0.55576,0.60221,-0.57313) + New Polarization: (-0.83129,-0.41032,0.37495) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.55576,0.60221,-0.57313) + Old Polarization: (-0.83129,-0.41032,0.37495) + New Momentum Direction: (0.55576,0.60221,-0.57313) + New Polarization: (-0.83129,0.41032,-0.37495) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 945, parentID 637) is processed with stopping code 2 +### pop requested out of 98 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.79748,0.43433,0.41878) + Old Polarization: (-0.54382,0.21687,0.81069) + New Momentum Direction: (0.57973,0.58656,0.56556) + New Polarization: (-0.77158,0.17213,0.6124) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 944, parentID 637) is processed with stopping code 2 +### pop requested out of 97 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 943, parentID 637) is processed with stopping code 2 +### pop requested out of 96 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.56188,0.68652,-0.46149) + Old Polarization: (-0.82435,0.51114,-0.24328) + New Momentum Direction: (0.56188,-0.68652,-0.46149) + New Polarization: (0.19871,-0.42953,0.88092) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.56188,-0.68652,-0.46149) + Old Polarization: (0.19871,-0.42953,0.88092) + New Momentum Direction: (-0.56188,-0.68652,-0.46149) + New Polarization: (0.19871,0.42953,-0.88092) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.56188,-0.68652,-0.46149) + Old Polarization: (0.19871,0.42953,-0.88092) + New Momentum Direction: (-0.56188,-0.68652,0.46149) + New Polarization: (-0.19871,-0.42953,-0.88092) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 942, parentID 637) is processed with stopping code 2 +### pop requested out of 95 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.66171,0.74417,0.091353) +Old Polarization: (-0.70561,0.57691,0.41146) +New Polarization: (-0.74859,0.35779,0.39063) +Polarization Change: (-0.8163,0.39015,0.42596) +New Momentum Direction: (-0.54854,-0.46175,-0.62827) +Momentum Change: (-0.5754,-0.48436,-0.65903) + +** Photon Absorbed! ** +Track (trackID 941, parentID 637) is processed with stopping code 2 +### pop requested out of 94 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.83478,0.27879,0.47478) + Old Polarization: (-0.501,0.026995,0.86502) + New Momentum Direction: (0.66261,0.37924,0.64585) + New Polarization: (-0.71261,0.053811,0.6995) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 940, parentID 637) is processed with stopping code 2 +### pop requested out of 93 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.91286,-0.20561,0.35272) + Old Polarization: (-0.40582,-0.55153,0.72878) + New Momentum Direction: (0.83366,-0.27814,0.47713) + New Polarization: (-0.55051,-0.48765,0.67759) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 939, parentID 637) is processed with stopping code 2 +### pop requested out of 92 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 938, parentID 637) is processed with stopping code 2 +### pop requested out of 91 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.8209,0.34496,0.45512) + Old Polarization: (-0.51631,0.10776,0.84959) + New Momentum Direction: (0.63399,0.46714,0.61631) + New Polarization: (-0.73311,0.10935,0.67126) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 937, parentID 637) is processed with stopping code 2 +### pop requested out of 90 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.57664,0.39535,-0.71497) + Old Polarization: (-0.81112,0.17225,-0.55894) + New Momentum Direction: (0.7763,0.53224,-0.33776) + New Polarization: (-0.0047838,0.54077,0.84116) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 936, parentID 637) is processed with stopping code 2 +### pop requested out of 89 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 935, parentID 637) is processed with stopping code 2 +### pop requested out of 88 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.72424,0.62953,0.28136) + Old Polarization: (-0.63172,0.4422,0.63671) + New Momentum Direction: (0.34751,0.85607,0.3826) + New Polarization: (-0.90081,0.19149,0.38972) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 934, parentID 637) is processed with stopping code 2 +### pop requested out of 87 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.91099,-0.1751,0.37342) + Old Polarization: (-0.40799,-0.51509,0.7538) + New Momentum Direction: (0.82996,-0.23683,0.50505) + New Polarization: (-0.5546,-0.44742,0.70159) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 933, parentID 637) is processed with stopping code 2 +### pop requested out of 86 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 932, parentID 637) is processed with stopping code 2 +### pop requested out of 85 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.75194,-0.33511,-0.5677) + Old Polarization: (-0.59867,-0.70767,-0.37522) + New Momentum Direction: (0.45366,-0.45302,-0.76744) + New Polarization: (-0.84959,-0.47985,-0.21896) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 931, parentID 637) is processed with stopping code 2 +### pop requested out of 84 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.65435,-0.054413,-0.75423) + Old Polarization: (-0.71509,-0.36888,-0.59378) + New Momentum Direction: (0.65435,-0.054413,0.75423) + New Polarization: (-0.28996,0.90311,0.31672) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.65435,-0.054413,0.75423) + Old Polarization: (-0.28996,0.90311,0.31672) + New Momentum Direction: (-0.65435,-0.054413,0.75423) + New Polarization: (-0.28996,-0.90311,-0.31672) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.65435,-0.054413,0.75423) + Old Polarization: (-0.28996,-0.90311,-0.31672) + New Momentum Direction: (-0.88728,-0.073783,0.45529) + New Polarization: (-0.21986,-0.80009,-0.55813) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 930, parentID 637) is processed with stopping code 2 +### pop requested out of 83 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 929, parentID 637) is processed with stopping code 2 +### pop requested out of 82 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 928, parentID 637) is processed with stopping code 2 +### pop requested out of 81 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.71887,-0.26401,-0.64306) + Old Polarization: (-0.63816,-0.61745,-0.4599) + New Momentum Direction: (0.33128,-0.35834,-0.87284) + New Polarization: (-0.90752,-0.37415,-0.19083) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 927, parentID 637) is processed with stopping code 2 +### pop requested out of 80 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.78039,-0.40588,-0.47566) + Old Polarization: (-0.56527,-0.78313,-0.25917) + New Momentum Direction: (0.52629,-0.55193,-0.64683) + New Polarization: (-0.80802,-0.56153,-0.17829) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 926, parentID 637) is processed with stopping code 2 +### pop requested out of 79 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.56675,0.53988,-0.62235) + Old Polarization: (-0.82351,0.34843,-0.44769) + New Momentum Direction: (0.56675,0.53988,0.62235) + New Polarization: (0.82351,-0.34843,-0.44769) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.56675,0.53988,0.62235) + Old Polarization: (0.82351,-0.34843,-0.44769) + New Momentum Direction: (-0.56675,0.53988,0.62235) + New Polarization: (0.82351,0.34843,0.44769) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.56675,0.53988,0.62235) + Old Polarization: (0.82351,0.34843,0.44769) + New Momentum Direction: (-0.56675,-0.53988,0.62235) + New Polarization: (-0.82351,0.34843,-0.44769) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 925, parentID 637) is processed with stopping code 2 +### pop requested out of 78 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.68782,-0.16786,-0.70621) + Old Polarization: (-0.67532,-0.50475,-0.53775) + New Momentum Direction: (0.93197,-0.22745,-0.28232) + New Polarization: (0.12468,-0.53015,0.83869) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 924, parentID 637) is processed with stopping code 2 +### pop requested out of 77 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.57369,0.70627,-0.4148) + Old Polarization: (-0.81411,0.54736,-0.19397) + New Momentum Direction: (0.77324,0.29921,-0.55908) + New Polarization: (-0.064902,-0.83971,-0.53915) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 923, parentID 637) is processed with stopping code 2 +### pop requested out of 76 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 922, parentID 637) is processed with stopping code 2 +### pop requested out of 75 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 921, parentID 637) is processed with stopping code 2 +### pop requested out of 74 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.90978,-0.37843,0.17056) + Old Polarization: (-0.41018,-0.75661,0.5092) + New Momentum Direction: (0.82697,-0.51259,0.23103) + New Polarization: (-0.5587,-0.70306,0.43996) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 920, parentID 637) is processed with stopping code 2 +### pop requested out of 73 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.56099,0.45408,-0.69218) + Old Polarization: (-0.82472,0.2342,-0.51477) + New Momentum Direction: (0.76317,0.61773,-0.18968) + New Polarization: (-0.2003,0.50522,0.83943) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 919, parentID 637) is processed with stopping code 2 +### pop requested out of 72 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.88921,-0.0033382,0.4575) + Old Polarization: (-0.43633,-0.30694,0.84582) + New Momentum Direction: (0.7831,-0.0045378,0.62188) + New Polarization: (-0.6064,-0.22745,0.76194) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 918, parentID 637) is processed with stopping code 2 +### pop requested out of 71 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 917, parentID 637) is processed with stopping code 2 +### pop requested out of 70 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 916, parentID 637) is processed with stopping code 2 +### pop requested out of 69 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 915, parentID 637) is processed with stopping code 2 +### pop requested out of 68 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.88918,-0.45755,-0.0042698) + Old Polarization: (-0.43537,-0.84887,0.29978) + New Momentum Direction: (0.78414,-0.62056,-0.005791) + New Polarization: (-0.60427,-0.76562,0.22066) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 914, parentID 637) is processed with stopping code 2 +### pop requested out of 67 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.56656,0.43445,-0.70019) + Old Polarization: (-0.82008,0.21429,-0.53061) + New Momentum Direction: (0.76765,0.58865,-0.2534) + New Polarization: (-0.12984,0.53006,0.83796) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 913, parentID 637) is processed with stopping code 2 +### pop requested out of 66 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.55692,0.57647,-0.59793) + Old Polarization: (-0.83055,0.38135,-0.40592) + New Momentum Direction: (0.55692,0.57647,0.59793) + New Polarization: (0.83055,-0.38135,-0.40592) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.55692,0.57647,0.59793) + Old Polarization: (0.83055,-0.38135,-0.40592) + New Momentum Direction: (0.55692,-0.57647,0.59793) + New Polarization: (-0.83055,-0.38135,0.40592) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.55692,-0.57647,0.59793) + Old Polarization: (-0.83055,-0.38135,0.40592) + New Momentum Direction: (-0.55692,-0.57647,0.59793) + New Polarization: (-0.83055,0.38135,-0.40592) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 912, parentID 637) is processed with stopping code 2 +### pop requested out of 65 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.68065,-0.12455,-0.72195) + Old Polarization: (-0.68491,-0.45795,-0.56672) + New Momentum Direction: (0.91668,-0.16775,-0.36271) + New Polarization: (0.24592,-0.47864,0.84287) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 911, parentID 637) is processed with stopping code 2 +### pop requested out of 64 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.87119,-0.47678,-0.11706) + Old Polarization: (-0.45624,-0.87432,0.16559) + New Momentum Direction: (0.74692,-0.64573,-0.15854) + New Polarization: (-0.63916,-0.763,0.096442) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 910, parentID 637) is processed with stopping code 2 +### pop requested out of 63 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.62438,0.10234,-0.77438) + Old Polarization: (-0.75334,-0.18315,-0.63162) + New Momentum Direction: (0.84029,0.13773,-0.52434) + New Polarization: (0.52369,0.04391,0.85078) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 909, parentID 637) is processed with stopping code 2 +### pop requested out of 62 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.72909,0.62533,0.2782) + Old Polarization: (-0.6261,0.44519,0.64015) + New Momentum Direction: (0.3792,0.84542,0.37612) + New Polarization: (-0.88699,0.21634,0.40798) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 908, parentID 637) is processed with stopping code 2 +### pop requested out of 61 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.87227,0.10653,0.47728) + Old Polarization: (-0.45571,-0.177,0.87235) + New Momentum Direction: (0.74808,0.14456,0.64767) + New Polarization: (-0.63898,-0.10651,0.76182) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 907, parentID 637) is processed with stopping code 2 +### pop requested out of 60 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.69862,-0.20314,-0.68605) + Old Polarization: (-0.66235,-0.54624,-0.51274) + New Momentum Direction: (0.24288,-0.27542,-0.93014) + New Polarization: (-0.93878,-0.30824,-0.15386) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 906, parentID 637) is processed with stopping code 2 +### pop requested out of 59 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 905, parentID 637) is processed with stopping code 2 +### pop requested out of 58 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.85672,0.21192,0.47023) + Old Polarization: (-0.47103,-0.049983,0.8807) + New Momentum Direction: (0.72043,0.28496,0.63229) + New Polarization: (-0.65987,0.0010483,0.75138) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 904, parentID 637) is processed with stopping code 2 +### pop requested out of 57 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.75044,0.57711,0.32216) + Old Polarization: (-0.60038,0.39137,0.69741) + New Momentum Direction: (0.45458,0.77773,0.43416) + New Polarization: (-0.84891,0.23073,0.47552) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 903, parentID 637) is processed with stopping code 2 +### pop requested out of 56 stacked tracks. + + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 29 +Track (trackID 637, parentID 1) is processed with stopping code 4 +### pop requested out of 85 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.68653,-0.66953,-0.28356) + Old Polarization: (-0.63944,-0.74159,0.20287) + New Momentum Direction: (-0.68653,-0.66953,-0.28356) + New Polarization: (-0.58538,0.74027,-0.33065) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.68653,-0.66953,-0.28356) + Old Polarization: (-0.58538,0.74027,-0.33065) + New Momentum Direction: (-0.68653,0.66953,-0.28356) + New Polarization: (0.58538,0.74027,0.33065) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 978, parentID 637) is processed with stopping code 2 +### pop requested out of 84 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.63633,0.43336,-0.63819) + Old Polarization: (-0.70479,0.66293,-0.25258) + New Momentum Direction: (-0.63633,0.43336,-0.63819) + New Polarization: (-0.70479,-0.66293,0.25258) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.63633,0.43336,-0.63819) + Old Polarization: (-0.70479,-0.66293,0.25258) + New Momentum Direction: (-0.63633,0.43336,0.63819) + New Polarization: (0.70479,0.66293,0.25258) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.63633,0.43336,0.63819) + Old Polarization: (0.70479,0.66293,0.25258) + New Momentum Direction: (-0.63633,-0.43336,0.63819) + New Polarization: (-0.70479,0.66293,-0.25258) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.63633,-0.43336,0.63819) + Old Polarization: (-0.70479,0.66293,-0.25258) + New Momentum Direction: (-0.63633,0.43336,0.63819) + New Polarization: (0.70479,0.66293,0.25258) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.63633,0.43336,0.63819) + Old Polarization: (0.70479,0.66293,0.25258) + New Momentum Direction: (-0.63633,-0.43336,0.63819) + New Polarization: (-0.70479,0.66293,-0.25258) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.63633,-0.43336,0.63819) + Old Polarization: (-0.70479,0.66293,-0.25258) + New Momentum Direction: (-0.63633,-0.43336,-0.63819) + New Polarization: (0.70479,-0.66293,-0.25258) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.63633,-0.43336,-0.63819) + Old Polarization: (0.70479,-0.66293,-0.25258) + New Momentum Direction: (0.63633,-0.43336,-0.63819) + New Polarization: (0.70479,0.66293,0.25258) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.63633,-0.43336,-0.63819) + Old Polarization: (0.70479,0.66293,0.25258) + New Momentum Direction: (0.63633,-0.43336,0.63819) + New Polarization: (-0.70479,-0.66293,0.25258) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.63633,-0.43336,0.63819) + Old Polarization: (-0.70479,-0.66293,0.25258) + New Momentum Direction: (-0.63633,-0.43336,0.63819) + New Polarization: (-0.70479,0.66293,-0.25258) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.63633,-0.43336,0.63819) + Old Polarization: (-0.70479,0.66293,-0.25258) + New Momentum Direction: (-0.63633,0.43336,0.63819) + New Polarization: (0.70479,0.66293,0.25258) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.63633,0.43336,0.63819) + Old Polarization: (0.70479,0.66293,0.25258) + New Momentum Direction: (-0.63633,0.43336,-0.63819) + New Polarization: (-0.70479,-0.66293,0.25258) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.63633,0.43336,-0.63819) + Old Polarization: (-0.70479,-0.66293,0.25258) + New Momentum Direction: (0.63633,0.43336,-0.63819) + New Polarization: (-0.70479,0.66293,-0.25258) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.63633,0.43336,-0.63819) + Old Polarization: (-0.70479,0.66293,-0.25258) + New Momentum Direction: (-0.63633,0.43336,-0.63819) + New Polarization: (-0.70479,-0.66293,0.25258) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.63633,0.43336,-0.63819) + Old Polarization: (-0.70479,-0.66293,0.25258) + New Momentum Direction: (-0.63633,-0.43336,-0.63819) + New Polarization: (0.70479,-0.66293,-0.25258) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.63633,-0.43336,-0.63819) + Old Polarization: (0.70479,-0.66293,-0.25258) + New Momentum Direction: (0.63633,-0.43336,-0.63819) + New Polarization: (0.70479,0.66293,0.25258) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.63633,-0.43336,-0.63819) + Old Polarization: (0.70479,0.66293,0.25258) + New Momentum Direction: (0.63633,-0.43336,0.63819) + New Polarization: (-0.70479,-0.66293,0.25258) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.63633,-0.43336,0.63819) + Old Polarization: (-0.70479,-0.66293,0.25258) + New Momentum Direction: (-0.63633,-0.43336,0.63819) + New Polarization: (-0.70479,0.66293,-0.25258) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.63633,-0.43336,0.63819) + Old Polarization: (-0.70479,0.66293,-0.25258) + New Momentum Direction: (-0.63633,-0.43336,-0.63819) + New Polarization: (0.70479,-0.66293,-0.25258) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.63633,-0.43336,-0.63819) + Old Polarization: (0.70479,-0.66293,-0.25258) + New Momentum Direction: (-0.63633,0.43336,-0.63819) + New Polarization: (-0.70479,-0.66293,0.25258) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 977, parentID 637) is processed with stopping code 2 +### pop requested out of 83 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 976, parentID 637) is processed with stopping code 2 +### pop requested out of 82 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 975, parentID 637) is processed with stopping code 2 +### pop requested out of 81 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.71566,-0.66015,-0.22809) + Old Polarization: (-0.60324,-0.74882,0.27452) + New Momentum Direction: (0.34265,-0.88796,-0.3068) + New Polarization: (-0.87494,-0.42056,0.24002) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 974, parentID 637) is processed with stopping code 2 +### pop requested out of 80 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 973, parentID 637) is processed with stopping code 2 +### pop requested out of 79 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 972, parentID 637) is processed with stopping code 2 +### pop requested out of 78 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 971, parentID 637) is processed with stopping code 2 +### pop requested out of 77 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 970, parentID 637) is processed with stopping code 2 +### pop requested out of 76 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.65676,0.47142,-0.58858) + Old Polarization: (-0.67833,0.7103,-0.18799) + New Momentum Direction: (-0.65676,0.47142,-0.58858) + New Polarization: (-0.67833,-0.7103,0.18799) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.65676,0.47142,-0.58858) + Old Polarization: (-0.67833,-0.7103,0.18799) + New Momentum Direction: (-0.65676,0.47142,0.58858) + New Polarization: (0.67833,0.7103,0.18799) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.65676,0.47142,0.58858) + Old Polarization: (0.67833,0.7103,0.18799) + New Momentum Direction: (-0.65676,-0.47142,0.58858) + New Polarization: (-0.67833,0.7103,-0.18799) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 969, parentID 637) is processed with stopping code 2 +### pop requested out of 75 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 968, parentID 637) is processed with stopping code 2 +### pop requested out of 74 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 967, parentID 637) is processed with stopping code 2 +### pop requested out of 73 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.94085,0.24902,0.22975) + Old Polarization: (-0.31858,0.41935,0.85009) + New Momentum Direction: (0.88759,0.33856,0.31236) + New Polarization: (-0.44539,0.45769,0.76951) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 966, parentID 637) is processed with stopping code 2 +### pop requested out of 72 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 965, parentID 637) is processed with stopping code 2 +### pop requested out of 71 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.95364,-0.002067,0.30094) + Old Polarization: (-0.29912,0.10354,0.94858) + New Momentum Direction: (0.91331,-0.0027973,0.40726) + New Polarization: (-0.40593,0.074769,0.91084) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 964, parentID 637) is processed with stopping code 2 +### pop requested out of 70 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 963, parentID 637) is processed with stopping code 2 +### pop requested out of 69 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.56071,-0.49543,-0.66345) + Old Polarization: (-0.80105,-0.52737,-0.28319) + New Momentum Direction: (0.56071,-0.49543,0.66345) + New Polarization: (0.80105,0.52737,-0.28319) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.56071,-0.49543,0.66345) + Old Polarization: (0.80105,0.52737,-0.28319) + New Momentum Direction: (-0.56071,-0.49543,0.66345) + New Polarization: (0.80105,-0.52737,0.28319) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.56071,-0.49543,0.66345) + Old Polarization: (0.80105,-0.52737,0.28319) + New Momentum Direction: (-0.56071,0.49543,0.66345) + New Polarization: (-0.80105,-0.52737,-0.28319) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.56071,0.49543,0.66345) + Old Polarization: (-0.80105,-0.52737,-0.28319) + New Momentum Direction: (-0.56071,0.49543,-0.66345) + New Polarization: (0.80105,0.52737,-0.28319) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.56071,0.49543,-0.66345) + Old Polarization: (0.80105,0.52737,-0.28319) + New Momentum Direction: (0.56071,0.49543,-0.66345) + New Polarization: (0.80105,-0.52737,0.28319) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.56071,0.49543,-0.66345) + Old Polarization: (0.80105,-0.52737,0.28319) + New Momentum Direction: (0.56071,-0.49543,-0.66345) + New Polarization: (-0.80105,-0.52737,-0.28319) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 962, parentID 637) is processed with stopping code 2 +### pop requested out of 68 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.74754,-0.65296,-0.12178) +Old Polarization: (-0.56226,-0.71967,0.40735) +New Polarization: (-0.44577,-0.72269,0.42968) +Polarization Change: (-0.46842,-0.75942,0.45152) +New Momentum Direction: (-0.86874,0.48774,-0.080934) +Momentum Change: (-0.86911,0.48795,-0.080969) + +** Photon Absorbed! ** +Track (trackID 961, parentID 637) is processed with stopping code 2 +### pop requested out of 67 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.81875,0.5501,-0.16444) + Old Polarization: (-0.47132,0.80751,0.35466) + New Momentum Direction: (0.62922,0.74467,-0.2226) + New Polarization: (-0.69682,0.66735,0.26284) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 960, parentID 637) is processed with stopping code 2 +### pop requested out of 66 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.95674,0.063019,0.28402) + Old Polarization: (-0.29088,0.18883,0.93794) + New Momentum Direction: (0.92019,0.084795,0.38217) + New Polarization: (-0.39143,0.18573,0.90127) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 959, parentID 637) is processed with stopping code 2 +### pop requested out of 65 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.55985,0.19749,-0.80472) + Old Polarization: (-0.80447,0.3622,-0.47079) + New Momentum Direction: (0.75405,0.26599,-0.60055) + New Polarization: (0.3375,0.62747,0.70169) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 958, parentID 637) is processed with stopping code 2 +### pop requested out of 64 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.81093,0.55342,-0.19005) + Old Polarization: (-0.48085,0.81534,0.3225) + New Momentum Direction: (0.61219,0.74784,-0.25682) + New Polarization: (-0.70943,0.66292,0.23925) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 957, parentID 637) is processed with stopping code 2 +### pop requested out of 63 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.93195,-0.22061,0.28774) + Old Polarization: (-0.32793,-0.17434,0.92848) + New Momentum Direction: (0.87086,-0.29907,0.39007) + New Polarization: (-0.46475,-0.24261,0.85156) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 956, parentID 637) is processed with stopping code 2 +### pop requested out of 62 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.51577,-0.091951,-0.85178) +Old Polarization: (-0.85587,-0.010787,-0.51709) +New Polarization: (-0.75847,0.42917,0.023318) +Polarization Change: (-0.87002,0.49229,0.026748) +New Momentum Direction: (0.40146,0.73535,-0.47593) +Momentum Change: (0.41665,0.76317,-0.49394) + Photon at Boundary! + Old Momentum Direction: (0.41665,0.76317,-0.49394) + Old Polarization: (-0.87002,0.49229,0.026748) + New Momentum Direction: (0.56537,0.48075,-0.67025) + New Polarization: (-0.1184,-0.75688,-0.64275) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 955, parentID 637) is processed with stopping code 2 +### pop requested out of 61 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.85902,-0.49009,0.14798) + Old Polarization: (-0.42156,-0.51316,0.74763) + New Momentum Direction: (0.71835,-0.66599,0.20109) + New Polarization: (-0.62386,-0.48877,0.60984) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 954, parentID 637) is processed with stopping code 2 +### pop requested out of 60 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.52972,-0.31759,-0.78646) + Old Polarization: (-0.84267,-0.30245,-0.44545) + New Momentum Direction: (0.71419,-0.42819,-0.5537) + New Polarization: (0.10515,-0.71644,0.68967) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 953, parentID 637) is processed with stopping code 2 +### pop requested out of 59 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.53251,-0.37173,-0.76043) + Old Polarization: (-0.83651,-0.3682,-0.4058) + New Momentum Direction: (0.72061,-0.50303,-0.47716) + New Polarization: (-0.077363,-0.74224,0.66565) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 952, parentID 637) is processed with stopping code 2 +### pop requested out of 58 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.58419,-0.56243,-0.58515) + Old Polarization: (-0.77042,-0.61106,-0.18181) + New Momentum Direction: (-0.58419,-0.56243,-0.58515) + New Polarization: (-0.77042,0.61106,0.18181) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.58419,-0.56243,-0.58515) + Old Polarization: (-0.77042,0.61106,0.18181) + New Momentum Direction: (-0.58419,-0.56243,0.58515) + New Polarization: (0.77042,-0.61106,0.18181) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.58419,-0.56243,0.58515) + Old Polarization: (0.77042,-0.61106,0.18181) + New Momentum Direction: (-0.58419,0.56243,0.58515) + New Polarization: (-0.77042,-0.61106,-0.18181) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.58419,0.56243,0.58515) + Old Polarization: (-0.77042,-0.61106,-0.18181) + New Momentum Direction: (0.58419,0.56243,0.58515) + New Polarization: (-0.77042,0.61106,0.18181) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.58419,0.56243,0.58515) + Old Polarization: (-0.77042,0.61106,0.18181) + New Momentum Direction: (0.58419,0.56243,-0.58515) + New Polarization: (0.77042,-0.61106,0.18181) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.58419,0.56243,-0.58515) + Old Polarization: (0.77042,-0.61106,0.18181) + New Momentum Direction: (0.58419,-0.56243,-0.58515) + New Polarization: (-0.77042,-0.61106,-0.18181) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.58419,-0.56243,-0.58515) + Old Polarization: (-0.77042,-0.61106,-0.18181) + New Momentum Direction: (0.58419,-0.56243,0.58515) + New Polarization: (0.77042,0.61106,-0.18181) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.58419,-0.56243,0.58515) + Old Polarization: (0.77042,0.61106,-0.18181) + New Momentum Direction: (-0.58419,-0.56243,0.58515) + New Polarization: (0.77042,-0.61106,0.18181) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.58419,-0.56243,0.58515) + Old Polarization: (0.77042,-0.61106,0.18181) + New Momentum Direction: (-0.58419,0.56243,0.58515) + New Polarization: (-0.77042,-0.61106,-0.18181) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.58419,0.56243,0.58515) + Old Polarization: (-0.77042,-0.61106,-0.18181) + New Momentum Direction: (-0.58419,0.56243,-0.58515) + New Polarization: (0.77042,0.61106,-0.18181) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.58419,0.56243,-0.58515) + Old Polarization: (0.77042,0.61106,-0.18181) + New Momentum Direction: (0.58419,0.56243,-0.58515) + New Polarization: (0.77042,-0.61106,0.18181) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.58419,0.56243,-0.58515) + Old Polarization: (0.77042,-0.61106,0.18181) + New Momentum Direction: (0.58419,-0.56243,-0.58515) + New Polarization: (-0.77042,-0.61106,-0.18181) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.58419,-0.56243,-0.58515) + Old Polarization: (-0.77042,-0.61106,-0.18181) + New Momentum Direction: (0.58419,-0.56243,0.58515) + New Polarization: (0.77042,0.61106,-0.18181) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.58419,-0.56243,0.58515) + Old Polarization: (0.77042,0.61106,-0.18181) + New Momentum Direction: (-0.58419,-0.56243,0.58515) + New Polarization: (0.77042,-0.61106,0.18181) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.58419,-0.56243,0.58515) + Old Polarization: (0.77042,-0.61106,0.18181) + New Momentum Direction: (-0.58419,0.56243,0.58515) + New Polarization: (-0.77042,-0.61106,-0.18181) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.58419,0.56243,0.58515) + Old Polarization: (-0.77042,-0.61106,-0.18181) + New Momentum Direction: (-0.58419,0.56243,-0.58515) + New Polarization: (0.77042,0.61106,-0.18181) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.58419,0.56243,-0.58515) + Old Polarization: (0.77042,0.61106,-0.18181) + New Momentum Direction: (0.58419,0.56243,-0.58515) + New Polarization: (0.77042,-0.61106,0.18181) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.58419,0.56243,-0.58515) + Old Polarization: (0.77042,-0.61106,0.18181) + New Momentum Direction: (0.58419,-0.56243,-0.58515) + New Polarization: (-0.77042,-0.61106,-0.18181) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 951, parentID 637) is processed with stopping code 2 +### pop requested out of 57 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.52011,0.013367,-0.85399) + Old Polarization: (-0.84853,0.12209,-0.51487) + New Momentum Direction: (0.70763,0.018186,-0.70635) + New Polarization: (0.69969,0.12126,0.70408) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 950, parentID 637) is processed with stopping code 2 +### pop requested out of 56 stacked tracks. + + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 40 +Track (trackID 637, parentID 1) is processed with stopping code 4 +### pop requested out of 96 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.48071,-0.64456,-0.59453) + Old Polarization: (-0.87561,-0.38925,-0.28597) + New Momentum Direction: (0.48071,0.64456,-0.59453) + New Polarization: (0.87561,-0.38925,0.28597) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.48071,0.64456,-0.59453) + Old Polarization: (0.87561,-0.38925,0.28597) + New Momentum Direction: (0.48071,0.64456,0.59453) + New Polarization: (-0.87561,0.38925,0.28597) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.48071,0.64456,0.59453) + Old Polarization: (-0.87561,0.38925,0.28597) + New Momentum Direction: (-0.48071,0.64456,0.59453) + New Polarization: (-0.87561,-0.38925,-0.28597) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.48071,0.64456,0.59453) + Old Polarization: (-0.87561,-0.38925,-0.28597) + New Momentum Direction: (-0.48071,-0.64456,0.59453) + New Polarization: (0.87561,-0.38925,0.28597) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.48071,-0.64456,0.59453) + Old Polarization: (0.87561,-0.38925,0.28597) + New Momentum Direction: (-0.48071,-0.64456,-0.59453) + New Polarization: (-0.87561,0.38925,0.28597) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1018, parentID 637) is processed with stopping code 2 +### pop requested out of 95 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.98249,0.16137,0.093141) + Old Polarization: (-0.18203,0.7247,0.66459) + New Momentum Direction: (0.96776,0.21816,0.12592) + New Polarization: (-0.24868,0.74796,0.6154) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1017, parentID 637) is processed with stopping code 2 +### pop requested out of 94 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.69422,-0.71414,0.089789) + Old Polarization: (-0.5814,-0.48284,0.65486) + New Momentum Direction: (0.69422,0.71414,0.089789) + New Polarization: (-0.18723,0.29963,-0.9355) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.69422,0.71414,0.089789) + Old Polarization: (-0.18723,0.29963,-0.9355) + New Momentum Direction: (0.21479,0.96903,0.12184) + New Polarization: (-0.38506,0.19866,-0.90125) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1016, parentID 637) is processed with stopping code 2 +### pop requested out of 93 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.67927,-0.73088,0.066429) + Old Polarization: (-0.6016,-0.5027,0.62078) + New Momentum Direction: (0.92319,-0.37359,0.090283) + New Polarization: (0.26628,0.79109,0.5507) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1015, parentID 637) is processed with stopping code 2 +### pop requested out of 92 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.49254,-0.4843,-0.72309) + Old Polarization: (-0.86413,-0.17349,-0.47242) + New Momentum Direction: (0.49254,-0.4843,0.72309) + New Polarization: (0.46351,0.84919,0.25304) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.49254,-0.4843,0.72309) + Old Polarization: (0.46351,0.84919,0.25304) + New Momentum Direction: (-0.49254,-0.4843,0.72309) + New Polarization: (0.46351,-0.84919,-0.25304) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.49254,-0.4843,0.72309) + Old Polarization: (0.46351,-0.84919,-0.25304) + New Momentum Direction: (-0.49254,0.4843,0.72309) + New Polarization: (-0.46351,-0.84919,0.25304) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.49254,0.4843,0.72309) + Old Polarization: (-0.46351,-0.84919,0.25304) + New Momentum Direction: (-0.66426,0.65316,0.36352) + New Polarization: (-0.73598,-0.48642,-0.47088) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1014, parentID 637) is processed with stopping code 2 +### pop requested out of 91 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1013, parentID 637) is processed with stopping code 2 +### pop requested out of 90 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.86147,-0.41724,0.28947) + Old Polarization: (-0.3508,-0.076793,0.9333) + New Momentum Direction: (-0.86147,-0.41724,0.28947) + New Polarization: (0.13272,-0.7352,-0.66472) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.86147,-0.41724,0.28947) + Old Polarization: (0.13272,-0.7352,-0.66472) + New Momentum Direction: (-0.86147,0.41724,0.28947) + New Polarization: (-0.13272,-0.7352,0.66472) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.86147,0.41724,0.28947) + Old Polarization: (-0.13272,-0.7352,0.66472) + New Momentum Direction: (-0.86147,0.41724,-0.28947) + New Polarization: (0.13272,0.7352,0.66472) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.86147,0.41724,-0.28947) + Old Polarization: (0.13272,0.7352,0.66472) + New Momentum Direction: (-0.72602,0.56501,-0.39199) + New Polarization: (0.24214,0.74356,0.62328) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1012, parentID 637) is processed with stopping code 2 +### pop requested out of 89 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.88745,0.31788,-0.33374) + Old Polarization: (-0.31238,0.94726,0.07159) + New Momentum Direction: (0.78332,0.42872,-0.45012) + New Polarization: (-0.48785,0.87275,-0.017732) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1011, parentID 637) is processed with stopping code 2 +### pop requested out of 88 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.83297,0.3028,-0.46312) + Old Polarization: (-0.39065,0.91457,-0.10466) + New Momentum Direction: (0.66118,0.41055,-0.62792) + New Polarization: (-0.61041,0.781,-0.13209) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1010, parentID 637) is processed with stopping code 2 +### pop requested out of 87 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.87492,0.31776,-0.36544) + Old Polarization: (-0.33086,0.94326,0.028072) + New Momentum Direction: (0.7563,0.42928,-0.49369) + New Polarization: (-0.51732,0.85435,-0.04961) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1009, parentID 637) is processed with stopping code 2 +### pop requested out of 86 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1008, parentID 637) is processed with stopping code 2 +### pop requested out of 85 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.85235,0.30727,-0.42318) + Old Polarization: (-0.36178,0.93077,-0.052851) + New Momentum Direction: (0.70836,0.41472,-0.57117) + New Polarization: (-0.56401,0.81909,-0.10476) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1007, parentID 637) is processed with stopping code 2 +### pop requested out of 84 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.87286,0.32663,-0.36253) + Old Polarization: (-0.33747,0.94069,0.035003) + New Momentum Direction: (0.74808,0.44419,-0.49303) + New Polarization: (-0.53085,0.84638,-0.042914) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1006, parentID 637) is processed with stopping code 2 +### pop requested out of 83 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.50981,-0.76206,-0.39919) + Old Polarization: (-0.83505,-0.54993,-0.016634) + New Momentum Direction: (0.69134,-0.47856,-0.54133) + New Polarization: (0.10396,0.8073,-0.58092) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1005, parentID 637) is processed with stopping code 2 +### pop requested out of 82 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.54031,-0.78006,-0.31554) + Old Polarization: (-0.79957,-0.59279,0.09634) + New Momentum Direction: (0.72673,-0.54013,-0.4244) + New Polarization: (0.33695,0.8187,-0.46496) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1004, parentID 637) is processed with stopping code 2 +### pop requested out of 81 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.47772,-0.58697,-0.65364) + Old Polarization: (-0.87841,-0.30813,-0.3653) + New Momentum Direction: (0.47772,-0.58697,0.65364) + New Polarization: (0.87841,0.30813,-0.3653) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.47772,-0.58697,0.65364) + Old Polarization: (0.87841,0.30813,-0.3653) + New Momentum Direction: (0.47772,0.58697,0.65364) + New Polarization: (-0.87841,0.30813,0.3653) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1003, parentID 637) is processed with stopping code 2 +### pop requested out of 80 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.58027,-0.11957,-0.8056) + Old Polarization: (-0.74022,0.3351,-0.58291) + New Momentum Direction: (0.78424,-0.1616,-0.59904) + New Polarization: (0.60767,0.0051009,0.79417) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1002, parentID 637) is processed with stopping code 2 +### pop requested out of 79 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.84912,-0.44382,0.28639) + Old Polarization: (-0.36924,-0.11105,0.92268) + New Momentum Direction: (0.69666,-0.6028,0.38897) + New Polarization: (-0.57918,-0.15265,0.80078) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1001, parentID 637) is processed with stopping code 2 +### pop requested out of 78 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1000, parentID 637) is processed with stopping code 2 +### pop requested out of 77 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.51445,-0.77419,-0.36875) +Old Polarization: (-0.82679,-0.5619,0.026237) +New Polarization: (-0.6951,-0.52673,-0.22539) +Polarization Change: (-0.77166,-0.58475,-0.25022) +New Momentum Direction: (0.058482,0.28886,-0.8554) +Momentum Change: (0.064639,0.31927,-0.94546) + Photon at Boundary! + Old Momentum Direction: (0.064639,0.31927,-0.94546) + Old Polarization: (-0.77166,-0.58475,-0.25022) + New Momentum Direction: (0.087848,0.43391,-0.89666) + New Polarization: (-0.35742,0.85394,0.37821) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 999, parentID 637) is processed with stopping code 2 +### pop requested out of 76 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.8384,0.30514,-0.45162) + Old Polarization: (-0.38284,0.91947,-0.08946) + New Momentum Direction: (0.67432,0.41342,-0.61187) + New Polarization: (-0.59816,0.79168,-0.1243) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 998, parentID 637) is processed with stopping code 2 +### pop requested out of 75 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.83818,-0.47408,0.26963) + Old Polarization: (-0.38198,-0.15742,0.91066) + New Momentum Direction: (0.67601,-0.64054,0.3643) + New Polarization: (-0.59503,-0.18287,0.78262) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 997, parentID 637) is processed with stopping code 2 +### pop requested out of 74 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 996, parentID 637) is processed with stopping code 2 +### pop requested out of 73 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 995, parentID 637) is processed with stopping code 2 +### pop requested out of 72 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 994, parentID 637) is processed with stopping code 2 +### pop requested out of 71 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.57229,-0.79791,-0.18929) + Old Polarization: (-0.75011,-0.60262,0.27237) + New Momentum Direction: (0.77488,-0.57782,-0.2563) + New Polarization: (0.55361,0.81606,-0.16603) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 993, parentID 637) is processed with stopping code 2 +### pop requested out of 70 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.68106,0.10509,-0.72465) + Old Polarization: (-0.60025,0.64691,-0.47033) + New Momentum Direction: (0.92055,0.14204,-0.36389) + New Polarization: (0.20331,0.62122,0.75681) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 992, parentID 637) is processed with stopping code 2 +### pop requested out of 69 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.67467,-0.73681,0.044019) + Old Polarization: (-0.60917,-0.52213,0.59691) + New Momentum Direction: (0.91174,-0.40643,0.059487) + New Polarization: (0.32237,0.79776,0.50957) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 991, parentID 637) is processed with stopping code 2 +### pop requested out of 68 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.88608,0.32112,-0.33429) + Old Polarization: (-0.31584,0.9461,0.071637) + New Momentum Direction: (0.77924,0.43416,-0.45198) + New Polarization: (-0.49432,0.86911,-0.017391) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 990, parentID 637) is processed with stopping code 2 +### pop requested out of 67 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.48517,-0.57741,-0.65666) + Old Polarization: (-0.8742,-0.30326,-0.37923) + New Momentum Direction: (0.48517,-0.57741,0.65666) + New Polarization: (0.8742,0.30326,-0.37923) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.48517,-0.57741,0.65666) + Old Polarization: (0.8742,0.30326,-0.37923) + New Momentum Direction: (0.48517,0.57741,0.65666) + New Polarization: (-0.8742,0.30326,0.37923) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.48517,0.57741,0.65666) + Old Polarization: (-0.8742,0.30326,0.37923) + New Momentum Direction: (-0.48517,0.57741,0.65666) + New Polarization: (-0.8742,-0.30326,-0.37923) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.48517,0.57741,0.65666) + Old Polarization: (-0.8742,-0.30326,-0.37923) + New Momentum Direction: (-0.48517,0.57741,-0.65666) + New Polarization: (0.8742,0.30326,-0.37923) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.48517,0.57741,-0.65666) + Old Polarization: (0.8742,0.30326,-0.37923) + New Momentum Direction: (-0.48517,-0.57741,-0.65666) + New Polarization: (-0.8742,0.30326,0.37923) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 989, parentID 637) is processed with stopping code 2 +### pop requested out of 66 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.50979,-0.76072,-0.40177) + Old Polarization: (-0.83551,-0.54909,-0.020476) + New Momentum Direction: (0.69097,-0.4754,-0.54457) + New Polarization: (0.096225,0.80711,-0.58251) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 988, parentID 637) is processed with stopping code 2 +### pop requested out of 65 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.67313,0.095334,-0.73335) + Old Polarization: (-0.61079,0.63074,-0.47864) + New Momentum Direction: (0.91161,0.12911,-0.39026) + New Polarization: (0.24082,0.60168,0.76157) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 987, parentID 637) is processed with stopping code 2 +### pop requested out of 64 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 986, parentID 637) is processed with stopping code 2 +### pop requested out of 63 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.53977,-0.79257,-0.28368) +Old Polarization: (-0.79371,-0.59144,0.14221) +New Polarization: (-0.42154,-0.75873,-0.077138) +Polarization Change: (-0.48375,-0.87072,-0.088523) +New Momentum Direction: (-0.87298,0.48715,-0.021053) +Momentum Change: (-0.87304,0.48719,-0.021055) + Photon at Boundary! + Old Momentum Direction: (-0.87304,0.48719,-0.021055) + Old Polarization: (-0.48375,-0.87072,-0.088523) + New Momentum Direction: (-0.75003,0.66079,-0.028557) + New Polarization: (0.65865,0.74227,-0.12333) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 985, parentID 637) is processed with stopping code 2 +### pop requested out of 62 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 984, parentID 637) is processed with stopping code 2 +### pop requested out of 61 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.65269,-0.7576,0.0060402) + Old Polarization: (-0.63895,-0.54615,0.54173) + New Momentum Direction: (0.88409,-0.46725,0.0081817) + New Polarization: (0.4223,0.80629,0.41419) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 983, parentID 637) is processed with stopping code 2 +### pop requested out of 60 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 982, parentID 637) is processed with stopping code 2 +### pop requested out of 59 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.66144,-0.74988,0.013292) + Old Polarization: (-0.62809,-0.54415,0.55625) + New Momentum Direction: (0.89222,-0.45124,0.01793) + New Polarization: (0.3987,0.80574,0.43798) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 981, parentID 637) is processed with stopping code 2 +### pop requested out of 58 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.50114,-0.45221,-0.73781) + Old Polarization: (-0.85571,-0.13191,-0.50037) + New Momentum Direction: (0.67339,-0.60764,-0.42108) + New Polarization: (-0.088327,-0.63163,0.77022) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 980, parentID 637) is processed with stopping code 2 +### pop requested out of 57 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.5128,-0.3234,-0.79527) + Old Polarization: (-0.82906,0.053994,-0.55654) + New Momentum Direction: (0.69691,-0.43951,-0.56669) + New Polarization: (0.30462,-0.53394,0.78874) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 979, parentID 637) is processed with stopping code 2 +### pop requested out of 56 stacked tracks. + + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 19 +Track (trackID 637, parentID 1) is processed with stopping code 4 +### pop requested out of 75 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.87089,-0.41097,0.26955) + Old Polarization: (-0.49028,-0.68819,0.53481) + New Momentum Direction: (0.74572,-0.55712,0.3654) + New Polarization: (-0.66541,-0.59517,0.45056) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1037, parentID 637) is processed with stopping code 2 +### pop requested out of 74 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1036, parentID 637) is processed with stopping code 2 +### pop requested out of 73 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.78346,0.38289,-0.48947) + Old Polarization: (-0.62125,0.50203,-0.60168) + New Momentum Direction: (0.5345,0.52074,-0.66569) + New Polarization: (-0.84505,0.34278,-0.41037) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1035, parentID 637) is processed with stopping code 2 +### pop requested out of 72 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1034, parentID 637) is processed with stopping code 2 +### pop requested out of 71 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1033, parentID 637) is processed with stopping code 2 +### pop requested out of 70 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.79357,0.35615,-0.49337) +Old Polarization: (-0.60837,0.48033,-0.6318) +New Polarization: (-0.28389,-0.50646,-0.73038) +Polarization Change: (-0.30427,-0.54281,-0.7828) +New Momentum Direction: (-0.73116,0.65279,-0.16846) +Momentum Change: (-0.73518,0.65637,-0.16939) + Photon at Boundary! + Old Momentum Direction: (-0.73518,0.65637,-0.16939) + Old Polarization: (-0.30427,-0.54281,-0.7828) + New Momentum Direction: (-0.73518,-0.65637,-0.16939) + New Polarization: (0.30427,-0.54281,0.7828) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1032, parentID 637) is processed with stopping code 2 +### pop requested out of 69 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.87556,-0.2592,0.4077) + Old Polarization: (-0.48309,-0.46066,0.74459) + New Momentum Direction: (0.75611,-0.35113,0.55228) + New Polarization: (-0.65443,-0.39911,0.64222) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1031, parentID 637) is processed with stopping code 2 +### pop requested out of 68 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1030, parentID 637) is processed with stopping code 2 +### pop requested out of 67 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1029, parentID 637) is processed with stopping code 2 +### pop requested out of 66 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.78461,0.36002,-0.50475) + Old Polarization: (-0.61989,0.47053,-0.62797) + New Momentum Direction: (0.53974,0.48884,-0.68536) + New Polarization: (-0.84176,0.32383,-0.43193) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1028, parentID 637) is processed with stopping code 2 +### pop requested out of 65 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.83026,0.54171,0.13125) + Old Polarization: (-0.55159,0.76468,0.3332) + New Momentum Direction: (0.66102,0.72927,0.17669) + New Polarization: (-0.74632,0.61452,0.25569) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1027, parentID 637) is processed with stopping code 2 +### pop requested out of 64 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.81807,0.57464,-0.023349) + Old Polarization: (-0.57039,0.81587,0.094942) + New Momentum Direction: (0.63302,0.77349,-0.031429) + New Polarization: (-0.77085,0.63356,0.066274) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1026, parentID 637) is processed with stopping code 2 +### pop requested out of 63 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.87508,-0.15714,0.45776) + Old Polarization: (-0.48385,-0.3064,0.81976) + New Momentum Direction: (0.755,-0.2129,0.6202) + New Polarization: (-0.65563,-0.26124,0.70845) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1025, parentID 637) is processed with stopping code 2 +### pop requested out of 62 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.84481,-0.52168,-0.11894) + Old Polarization: (-0.5298,-0.84668,-0.049444) + New Momentum Direction: (0.68602,-0.70938,-0.16173) + New Polarization: (-0.72392,-0.68777,-0.053998) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1024, parentID 637) is processed with stopping code 2 +### pop requested out of 61 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.87079,-0.048688,0.48924) + Old Polarization: (-0.49089,-0.14162,0.85964) + New Momentum Direction: (0.74415,-0.066153,0.66473) + New Polarization: (-0.66748,-0.11356,0.73592) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1023, parentID 637) is processed with stopping code 2 +### pop requested out of 60 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1022, parentID 637) is processed with stopping code 2 +### pop requested out of 59 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.80599,-0.23339,-0.54398) + Old Polarization: (-0.58805,-0.42082,-0.69073) + New Momentum Direction: (0.59682,-0.31637,-0.73737) + New Polarization: (-0.79975,-0.30892,-0.51476) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1021, parentID 637) is processed with stopping code 2 +### pop requested out of 58 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1020, parentID 637) is processed with stopping code 2 +### pop requested out of 57 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.79472,0.55118,-0.25422) + Old Polarization: (-0.60465,0.75556,-0.25205) + New Momentum Direction: (0.56568,0.74881,-0.34537) + New Polarization: (-0.82307,0.53841,-0.18076) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1019, parentID 637) is processed with stopping code 2 +### pop requested out of 56 stacked tracks. + + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 18 +Track (trackID 637, parentID 1) is processed with stopping code 4 +### pop requested out of 74 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1055, parentID 637) is processed with stopping code 2 +### pop requested out of 73 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.93603,-0.25851,-0.23877) + Old Polarization: (-0.26705,-0.07993,-0.96036) + New Momentum Direction: (0.87843,-0.35105,-0.32424) + New Polarization: (-0.40507,-0.187,-0.89496) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1054, parentID 637) is processed with stopping code 2 +### pop requested out of 72 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.96664,0.2561,0.0049995) + Old Polarization: (-0.21411,0.81854,-0.53305) + New Momentum Direction: (0.93748,0.34797,0.006793) + New Polarization: (-0.31363,0.8531,-0.41696) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1053, parentID 637) is processed with stopping code 2 +### pop requested out of 71 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.75268,-0.64042,0.15276) + Old Polarization: (-0.58933,-0.75879,-0.27736) + New Momentum Direction: (0.45347,-0.86695,0.20679) + New Polarization: (-0.84344,-0.49241,-0.21478) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1052, parentID 637) is processed with stopping code 2 +### pop requested out of 70 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73126,-0.64241,0.22926) + Old Polarization: (-0.62784,-0.7653,-0.14186) + New Momentum Direction: (0.3858,-0.86891,0.31008) + New Polarization: (-0.88699,-0.44179,-0.1344) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1051, parentID 637) is processed with stopping code 2 +### pop requested out of 69 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.95085,-0.20501,-0.23207) + Old Polarization: (-0.23476,0.011443,-0.97199) + New Momentum Direction: (0.90861,-0.27651,-0.313) + New Polarization: (-0.35282,-0.10715,-0.92954) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1050, parentID 637) is processed with stopping code 2 +### pop requested out of 68 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.85426,0.28257,0.43634) + Old Polarization: (-0.40887,0.88358,0.22828) + New Momentum Direction: (0.71197,0.3817,0.58941) + New Polarization: (-0.61119,0.75013,0.25249) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1049, parentID 637) is processed with stopping code 2 +### pop requested out of 67 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.7108,-0.61963,0.3329) + Old Polarization: (-0.6686,-0.74219,0.046125) + New Momentum Direction: (0.32227,-0.83391,0.44803) + New Polarization: (-0.92506,-0.37792,-0.038022) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1048, parentID 637) is processed with stopping code 2 +### pop requested out of 66 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.82341,-0.56644,-0.033873) + Old Polarization: (-0.46404,-0.6378,-0.61472) + New Momentum Direction: (0.64331,-0.76424,-0.045702) + New Polarization: (-0.68397,-0.54687,-0.48282) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1047, parentID 637) is processed with stopping code 2 +### pop requested out of 65 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.97556,0.21577,-0.041506) + Old Polarization: (-0.19425,0.75863,-0.62189) + New Momentum Direction: (0.95476,0.29204,-0.056178) + New Polarization: (-0.27713,0.80514,-0.52435) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1046, parentID 637) is processed with stopping code 2 +### pop requested out of 64 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.80025,0.1873,0.56966) + Old Polarization: (-0.50597,0.72076,0.4738) + New Momentum Direction: (0.58953,0.25229,0.76734) + New Polarization: (-0.73618,0.55875,0.38188) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1045, parentID 637) is processed with stopping code 2 +### pop requested out of 63 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1044, parentID 637) is processed with stopping code 2 +### pop requested out of 62 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1043, parentID 637) is processed with stopping code 2 +### pop requested out of 61 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1042, parentID 637) is processed with stopping code 2 +### pop requested out of 60 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.75129,-0.6349,0.1802) + Old Polarization: (-0.59504,-0.76973,-0.23116) + New Momentum Direction: (0.45935,-0.8545,0.24252) + New Polarization: (-0.84302,-0.50542,-0.18406) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1041, parentID 637) is processed with stopping code 2 +### pop requested out of 59 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1040, parentID 637) is processed with stopping code 2 +### pop requested out of 58 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.97883,0.18666,-0.083939) + Old Polarization: (-0.19231,0.69849,-0.6893) + New Momentum Direction: (0.96059,0.25351,-0.114) + New Polarization: (-0.26853,0.74042,-0.61618) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1039, parentID 637) is processed with stopping code 2 +### pop requested out of 57 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.97913,0.0018523,-0.20324) + Old Polarization: (-0.18882,0.37844,-0.90616) + New Momentum Direction: (0.96135,0.0025091,-0.2753) + New Polarization: (-0.26418,0.2899,-0.91987) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1038, parentID 637) is processed with stopping code 2 +### pop requested out of 56 stacked tracks. + + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 4 +Track (trackID 637, parentID 1) is processed with stopping code 4 +### pop requested out of 60 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.85566,0.1148,-0.50465) + Old Polarization: (-0.20036,0.97253,-0.11847) + New Momentum Direction: (0.71184,0.1558,-0.68484) + New Polarization: (-0.35503,0.92115,-0.15947) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1059, parentID 637) is processed with stopping code 2 +### pop requested out of 59 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.97026,0.042925,-0.23823) + Old Polarization: (0.10101,0.82258,0.5596) + New Momentum Direction: (0.94512,0.057938,-0.32155) + New Polarization: (-0.1726,0.92415,-0.3408) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1058, parentID 637) is processed with stopping code 2 +### pop requested out of 58 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.98111,0.010619,-0.19315) + Old Polarization: (0.12404,0.73165,0.6703) + New Momentum Direction: (0.96521,0.014354,-0.2611) + New Polarization: (-0.196,0.70065,-0.68605) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1057, parentID 637) is processed with stopping code 2 +### pop requested out of 57 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.72333,-0.59453,-0.35118) + Old Polarization: (-0.53243,-0.80406,0.26458) + New Momentum Direction: (0.35439,-0.80513,-0.47558) + New Polarization: (-0.81933,-0.51247,0.25703) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1056, parentID 637) is processed with stopping code 2 +### pop requested out of 56 stacked tracks. +Track (trackID 637, parentID 1) is processed with stopping code 2 +### pop requested out of 55 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.75199,-0.565,-0.33953) + Old Polarization: (-0.65913,-0.63886,-0.39674) + New Momentum Direction: (0.4619,-0.76023,-0.45684) + New Polarization: (-0.88691,-0.39197,-0.24444) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 636, parentID 1) is processed with stopping code 2 +### pop requested out of 54 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73422,0.41935,0.53391) + Old Polarization: (-0.6789,0.4572,0.57451) + New Momentum Direction: (0.39984,0.56616,0.72083) + New Polarization: (-0.91658,0.24948,0.31248) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 635, parentID 1) is processed with stopping code 2 +### pop requested out of 53 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.74402,-0.65463,0.13376) + Old Polarization: (-0.66804,-0.73255,0.13072) + New Momentum Direction: (0.43057,-0.88429,0.18068) + New Polarization: (-0.90248,-0.42437,0.073746) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 634, parentID 1) is processed with stopping code 2 +### pop requested out of 52 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 633, parentID 1) is processed with stopping code 2 +### pop requested out of 51 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 632, parentID 1) is processed with stopping code 2 +### pop requested out of 50 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73776,-0.63212,0.23693) + Old Polarization: (-0.67495,-0.69731,0.24125) + New Momentum Direction: (0.39657,-0.85961,0.32219) + New Polarization: (-0.91793,-0.37575,0.12734) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 631, parentID 1) is processed with stopping code 2 +### pop requested out of 49 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.75051,-0.30605,-0.58572) + Old Polarization: (-0.66086,-0.34647,-0.66575) + New Momentum Direction: (0.45041,-0.41348,-0.79131) + New Polarization: (-0.89282,-0.20784,-0.39959) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 630, parentID 1) is processed with stopping code 2 +### pop requested out of 48 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.7393,-0.49155,0.46023) + Old Polarization: (-0.67326,-0.55186,0.49211) + New Momentum Direction: (0.4153,-0.66405,0.62174) + New Polarization: (-0.90962,-0.31149,0.2749) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 629, parentID 1) is processed with stopping code 2 +### pop requested out of 47 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73701,0.65686,0.1592) + Old Polarization: (-0.6758,0.71975,0.15892) + New Momentum Direction: (-0.73701,0.65686,0.1592) + New Polarization: (-0.67523,-0.7259,-0.1309) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.73701,0.65686,0.1592) + Old Polarization: (-0.67523,-0.7259,-0.1309) + New Momentum Direction: (-0.73701,-0.65686,0.1592) + New Polarization: (0.67523,-0.7259,0.1309) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 628, parentID 1) is processed with stopping code 2 +### pop requested out of 46 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73358,0.58583,0.34447) + Old Polarization: (-0.67956,0.63793,0.36227) + New Momentum Direction: (0.39195,0.79305,0.46631) + New Polarization: (-0.91996,0.34164,0.19223) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 627, parentID 1) is processed with stopping code 2 +### pop requested out of 45 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73727,0.64267,0.20838) + Old Polarization: (-0.67553,0.70563,0.21387) + New Momentum Direction: (0.41102,0.86718,0.28117) + New Polarization: (-0.91158,0.39395,0.11757) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 626, parentID 1) is processed with stopping code 2 +### pop requested out of 44 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 625, parentID 1) is processed with stopping code 2 +### pop requested out of 43 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.72845,0.11081,0.67608) + Old Polarization: (-0.6851,0.11315,0.71961) + New Momentum Direction: (0.36218,0.15077,0.91984) + New Polarization: (-0.9321,0.05548,0.35791) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 624, parentID 1) is processed with stopping code 2 +### pop requested out of 42 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.72936,0.082352,0.67916) + Old Polarization: (-0.68412,0.082332,0.72471) + New Momentum Direction: (0.36812,0.11192,0.92302) + New Polarization: (-0.92977,0.040676,0.36589) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 623, parentID 1) is processed with stopping code 2 +### pop requested out of 41 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73081,0.5506,0.40342) + Old Polarization: (-0.68255,0.59506,0.42431) + New Momentum Direction: (0.37546,0.74764,0.54778) + New Polarization: (-0.92682,0.30658,0.21682) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 622, parentID 1) is processed with stopping code 2 +### pop requested out of 40 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73174,0.10115,0.67404) + Old Polarization: (-0.68158,0.10363,0.72437) + New Momentum Direction: (0.38409,0.13701,0.91307) + New Polarization: (-0.92329,0.053668,0.38033) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 621, parentID 1) is processed with stopping code 2 +### pop requested out of 39 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73236,0.03061,0.68023) + Old Polarization: (-0.6809,0.026046,0.73191) + New Momentum Direction: (0.38724,0.041447,0.92105) + New Polarization: (-0.92197,0.01278,0.38706) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 620, parentID 1) is processed with stopping code 2 +### pop requested out of 38 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 619, parentID 1) is processed with stopping code 2 +### pop requested out of 37 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73719,-0.58056,0.34569) + Old Polarization: (-0.67556,-0.64289,0.36098) + New Momentum Direction: (0.39743,-0.78844,0.46947) + New Polarization: (-0.91756,-0.3479,0.19248) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 618, parentID 1) is processed with stopping code 2 +### pop requested out of 36 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73949,-0.55527,0.38056) + Old Polarization: (-0.67305,-0.62042,0.40259) + New Momentum Direction: (0.41301,-0.75123,0.51486) + New Polarization: (-0.91065,-0.34781,0.22302) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 617, parentID 1) is processed with stopping code 2 +### pop requested out of 35 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.7459,-0.35107,-0.56602) + Old Polarization: (-0.66605,-0.39094,-0.63525) + New Momentum Direction: (0.42444,-0.47726,-0.76947) + New Polarization: (-0.90545,-0.22222,-0.36162) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 616, parentID 1) is processed with stopping code 2 +### pop requested out of 34 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.73302,0.096293,0.67336) +Old Polarization: (-0.6802,0.098673,0.72636) +New Polarization: (-0.73229,-0.11026,0.50314) +Polarization Change: (-0.81793,-0.12316,0.56198) +New Momentum Direction: (0.21378,0.79577,0.48554) +Momentum Change: (0.22353,0.83205,0.50767) + Photon at Boundary! + Old Momentum Direction: (0.22353,0.83205,0.50767) + Old Polarization: (-0.81793,-0.12316,0.56198) + New Momentum Direction: (0.30229,0.66126,0.68655) + New Polarization: (-0.7911,-0.22776,0.5677) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 615, parentID 1) is processed with stopping code 2 +### pop requested out of 33 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.7303,0.17506,0.66032) + Old Polarization: (-0.68312,0.18428,0.70667) + New Momentum Direction: (-0.7303,0.17506,0.66032) + New Polarization: (-0.68311,-0.17991,-0.70781) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.7303,0.17506,0.66032) + Old Polarization: (-0.68311,-0.17991,-0.70781) + New Momentum Direction: (-0.7303,0.17506,-0.66032) + New Polarization: (0.68311,0.17991,-0.70781) + *** TotalInternalReflection *** +No Absorbtion length specified +Scattering Photon! +Old Momentum Direction: (-0.7303,0.17506,-0.66032) +Old Polarization: (0.68311,0.17991,-0.70781) +New Polarization: (0.075429,-0.016523,-0.8649) +Polarization Change: (0.086865,-0.019028,-0.99604) +New Momentum Direction: (-0.779,-0.49902,-0.058404) +Momentum Change: (-0.84037,-0.53833,-0.063005) + +** Photon Absorbed! ** +Track (trackID 614, parentID 1) is processed with stopping code 2 +### pop requested out of 32 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73174,0.63852,0.23842) + Old Polarization: (-0.68152,0.69018,0.24329) + New Momentum Direction: (-0.73174,0.63852,0.23842) + New Polarization: (-0.68117,-0.69716,-0.22353) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.73174,0.63852,0.23842) + Old Polarization: (-0.68117,-0.69716,-0.22353) + New Momentum Direction: (-0.73174,-0.63852,0.23842) + New Polarization: (0.68117,-0.69716,0.22353) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.73174,-0.63852,0.23842) + Old Polarization: (0.68117,-0.69716,0.22353) + New Momentum Direction: (-0.37712,-0.86765,0.32398) + New Polarization: (0.92592,-0.36125,0.11032) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 613, parentID 1) is processed with stopping code 2 +### pop requested out of 31 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73414,0.51075,0.44741) + Old Polarization: (-0.67898,0.55749,0.4777) + New Momentum Direction: (0.39779,0.69014,0.60454) + New Polarization: (-0.91746,0.30279,0.25803) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 612, parentID 1) is processed with stopping code 2 +### pop requested out of 30 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 611, parentID 1) is processed with stopping code 2 +### pop requested out of 29 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.74353,-0.63586,-0.207) + Old Polarization: (-0.66864,-0.70259,-0.24351) + New Momentum Direction: (-0.74353,-0.63586,-0.207) + New Polarization: (-0.66807,0.69291,0.27121) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.74353,-0.63586,-0.207) + Old Polarization: (-0.66807,0.69291,0.27121) + New Momentum Direction: (-0.74353,0.63586,-0.207) + New Polarization: (0.66807,0.69291,-0.27121) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.74353,0.63586,-0.207) + Old Polarization: (0.66807,0.69291,-0.27121) + New Momentum Direction: (-0.41758,0.86401,-0.28128) + New Polarization: (0.90825,0.38781,-0.1571) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 610, parentID 1) is processed with stopping code 2 +### pop requested out of 28 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.7363,0.67533,0.042366) + Old Polarization: (-0.67656,0.7358,0.029305) + New Momentum Direction: (0.4002,0.91463,0.057378) + New Polarization: (-0.91637,0.4001,0.013715) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 609, parentID 1) is processed with stopping code 2 +### pop requested out of 27 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 608, parentID 1) is processed with stopping code 2 +### pop requested out of 26 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73545,-0.057166,0.67516) + Old Polarization: (-0.67755,-0.071157,0.73202) + New Momentum Direction: (0.40509,-0.077135,0.91102) + New Polarization: (-0.91426,-0.040372,0.40312) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 607, parentID 1) is processed with stopping code 2 +### pop requested out of 25 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73577,0.012232,0.67712) + Old Polarization: (-0.67721,0.005894,0.73576) + New Momentum Direction: (0.40808,0.016489,0.9128) + New Polarization: (-0.91293,0.0023319,0.4081) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 606, parentID 1) is processed with stopping code 2 +### pop requested out of 24 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 605, parentID 1) is processed with stopping code 2 +### pop requested out of 23 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.74106,0.57015,-0.35463) + Old Polarization: (-0.67132,0.61924,-0.40726) + New Momentum Direction: (0.41492,0.7726,-0.48056) + New Polarization: (-0.90978,0.34558,-0.22993) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 604, parentID 1) is processed with stopping code 2 +### pop requested out of 22 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 603, parentID 1) is processed with stopping code 2 +### pop requested out of 21 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 602, parentID 1) is processed with stopping code 2 +### pop requested out of 20 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 601, parentID 1) is processed with stopping code 2 +### pop requested out of 19 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73939,0.64836,-0.18147) + Old Polarization: (-0.67316,0.70684,-0.21733) + New Momentum Direction: (0.41145,0.8777,-0.24566) + New Polarization: (-0.91136,0.39276,-0.12315) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 600, parentID 1) is processed with stopping code 2 +### pop requested out of 18 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 599, parentID 1) is processed with stopping code 2 +### pop requested out of 17 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.74777,0.13067,-0.65097) + Old Polarization: (-0.66392,0.13643,-0.73525) + New Momentum Direction: (0.43893,0.17683,-0.88095) + New Polarization: (-0.89849,0.079052,-0.43181) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 598, parentID 1) is processed with stopping code 2 +### pop requested out of 16 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 597, parentID 1) is processed with stopping code 2 +### pop requested out of 15 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.74796,-0.46002,-0.47848) + Old Polarization: (-0.66373,-0.5137,-0.54366) + New Momentum Direction: (0.43741,-0.62325,-0.64825) + New Polarization: (-0.89925,-0.29997,-0.31838) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 596, parentID 1) is processed with stopping code 2 +### pop requested out of 14 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.74067,-0.578,0.34252) + Old Polarization: (-0.67175,-0.6467,0.3613) + New Momentum Direction: (0.41853,-0.78132,0.46301) + New Polarization: (-0.90813,-0.36658,0.2023) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 595, parentID 1) is processed with stopping code 2 +### pop requested out of 13 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 594, parentID 1) is processed with stopping code 2 +### pop requested out of 12 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.74741,0.096134,-0.65737) + Old Polarization: (-0.66432,0.098158,-0.74097) + New Momentum Direction: (0.43631,0.1302,-0.89033) + New Polarization: (-0.89978,0.056319,-0.4327) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 593, parentID 1) is processed with stopping code 2 +### pop requested out of 11 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73218,0.43868,0.52102) + Old Polarization: (-0.6811,0.47563,0.55667) + New Momentum Direction: (0.38685,0.59393,0.70541) + New Polarization: (-0.92214,0.25189,0.29363) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 592, parentID 1) is processed with stopping code 2 +### pop requested out of 10 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 591, parentID 1) is processed with stopping code 2 +### pop requested out of 9 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.7299,-0.11991,0.67295) + Old Polarization: (-0.68351,-0.13841,0.7167) + New Momentum Direction: (0.3683,-0.1631,0.91529) + New Polarization: (-0.92968,-0.071505,0.36135) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 590, parentID 1) is processed with stopping code 2 +### pop requested out of 8 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73953,-0.61885,0.26481) + Old Polarization: (-0.67301,-0.68722,0.27348) + New Momentum Direction: (0.40865,-0.8391,0.35906) + New Polarization: (-0.91262,-0.3807,0.14899) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 589, parentID 1) is processed with stopping code 2 +### pop requested out of 7 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.74148,0.42896,-0.51595) + Old Polarization: (-0.67088,0.46096,-0.58089) + New Momentum Direction: (0.41037,0.58299,-0.70122) + New Polarization: (-0.91186,0.25357,-0.32282) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 588, parentID 1) is processed with stopping code 2 +### pop requested out of 6 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73372,0.53581,0.41781) + Old Polarization: (-0.67943,0.58409,0.44409) + New Momentum Direction: (0.39455,0.72461,0.56504) + New Polarization: (-0.91886,0.31486,0.23783) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 587, parentID 1) is processed with stopping code 2 +### pop requested out of 5 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.74454,0.54097,-0.39117) + Old Polarization: (-0.66747,0.59232,-0.45127) + New Momentum Direction: (0.43362,0.7302,-0.528) + New Polarization: (-0.90102,0.34388,-0.26439) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 586, parentID 1) is processed with stopping code 2 +### pop requested out of 4 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.74475,-0.58474,-0.3216) + Old Polarization: (-0.66729,-0.64701,-0.36892) + New Momentum Direction: (0.422,-0.79438,-0.4369) + New Polarization: (-0.90657,-0.36602,-0.21015) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 585, parentID 1) is processed with stopping code 2 +### pop requested out of 3 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73814,0.59174,0.32404) + Old Polarization: (-0.67461,0.65295,0.34432) + New Momentum Direction: (0.41907,0.79637,0.4361) + New Polarization: (-0.90793,0.37137,0.1943) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 584, parentID 1) is processed with stopping code 2 +### pop requested out of 2 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.74421,-0.55667,-0.36914) + Old Polarization: (-0.66791,-0.61459,-0.41973) + New Momentum Direction: (0.41768,-0.75724,-0.50214) + New Polarization: (-0.90857,-0.3443,-0.23653) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 583, parentID 1) is processed with stopping code 2 +### pop requested out of 1 stacked tracks. + + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 157 +Track (trackID 1, parentID 0) is processed with stopping code 4 +### pop requested out of 158 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.91967,-0.031955,0.3914) + Old Polarization: (-0.3832,-0.29095,0.87664) + New Momentum Direction: (0.84559,-0.043439,0.53206) + New Polarization: (-0.5269,-0.22801,0.81877) + *** FresnelRefraction *** +No Absorbtion length specified Track (trackID 1216, parentID 1) is processed with stopping code 2 -### pop requested out of 112 stacked tracks. +### pop requested out of 157 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.85712,-0.50875,-0.080725) +Old Polarization: (-0.45203,-0.818,0.35572) +New Polarization: (-0.21333,-0.78217,0.41408) +Polarization Change: (-0.23433,-0.85918,0.45485) +New Momentum Direction: (0.97077,-0.22352,0.077914) +Momentum Change: (0.97154,-0.2237,0.077975) Photon at Boundary! - Old Momentum Direction: (0.772271,0.627073,0.101867) - Old Polarization: (-0.55424,0.586653,0.590471) - New Momentum Direction: (0.50882,0.849734,0.138038) - New Polarization: (-0.802424,0.410062,0.43355) + Old Momentum Direction: (0.97154,-0.2237,0.077975) + Old Polarization: (-0.23433,-0.85918,0.45485) + New Momentum Direction: (0.94678,-0.30393,0.10594) + New Polarization: (-0.31998,-0.85321,0.41188) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 1215, parentID 1) is processed with stopping code 2 -### pop requested out of 111 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.55405,-0.326127,-0.765944) - Old Polarization: (-0.797172,-0.472969,-0.375256) - New Momentum Direction: (0.749078,-0.440926,-0.494435) - New Polarization: (-0.0455173,-0.778829,0.625582) - *** FresnelRefraction *** -No Absorbtion length specified +### pop requested out of 156 stacked tracks. + +** Photon Absorbed! ** Track (trackID 1214, parentID 1) is processed with stopping code 2 -### pop requested out of 110 stacked tracks. +### pop requested out of 155 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.88309,-0.436866,0.171171) - Old Polarization: (-0.428351,-0.601757,0.674095) - New Momentum Direction: (0.775248,-0.588124,0.230437) - New Polarization: (-0.600596,-0.57333,0.557294) - *** FresnelRefraction *** + Old Momentum Direction: (0.67231,-0.41276,-0.61451) + Old Polarization: (-0.65644,-0.71613,-0.23716) + New Momentum Direction: (-0.67231,-0.41276,-0.61451) + New Polarization: (-0.65644,0.71613,0.23716) + *** TotalInternalReflection *** No Absorbtion length specified -Track (trackID 1213, parentID 1) is processed with stopping code 2 -### pop requested out of 109 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.536284,-0.274165,-0.798269) - Old Polarization: (-0.815511,-0.412116,-0.406327) - New Momentum Direction: (0.727656,-0.372,-0.57631) - New Polarization: (0.129744,-0.750364,0.648167) + Old Momentum Direction: (-0.67231,-0.41276,-0.61451) + Old Polarization: (-0.65644,0.71613,0.23716) + New Momentum Direction: (-0.67231,-0.41276,0.61451) + New Polarization: (0.65644,-0.71613,0.23716) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.67231,-0.41276,0.61451) + Old Polarization: (0.65644,-0.71613,0.23716) + New Momentum Direction: (-0.67231,0.41276,0.61451) + New Polarization: (-0.65644,-0.71613,-0.23716) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1213, parentID 1) is processed with stopping code 2 +### pop requested out of 154 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.71338,0.68379,0.15333) + Old Polarization: (-0.61086,0.49957,0.61423) + New Momentum Direction: (0.3053,0.92918,0.20835) + New Polarization: (-0.89419,0.2045,0.39824) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 1212, parentID 1) is processed with stopping code 2 -### pop requested out of 108 stacked tracks. +### pop requested out of 153 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.901023,0.206977,0.381206) - Old Polarization: (-0.410294,0.121456,0.903829) - New Momentum Direction: (0.809967,0.27984,0.515405) - New Polarization: (-0.568997,0.162016,0.806222) + Old Momentum Direction: (0.81071,-0.53325,-0.24164) + Old Polarization: (-0.50321,-0.84565,0.1779) + New Momentum Direction: (0.6064,-0.72427,-0.32819) + New Polarization: (-0.73338,-0.66894,0.12116) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 1211, parentID 1) is processed with stopping code 2 -### pop requested out of 107 stacked tracks. +### pop requested out of 152 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.847282,-0.529098,0.0465706) - Old Polarization: (-0.469017,-0.704147,0.533104) - New Momentum Direction: (0.698365,-0.712985,0.0627561) - New Polarization: (-0.668326,-0.618208,0.413715) + Old Momentum Direction: (0.74813,-0.50738,-0.42763) + Old Polarization: (-0.57222,-0.8196,-0.028619) + New Momentum Direction: (0.43635,-0.68801,-0.57987) + New Polarization: (-0.83546,-0.54908,0.022793) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 1210, parentID 1) is processed with stopping code 2 -### pop requested out of 106 stacked tracks. +### pop requested out of 151 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.499896,-0.0970871,-0.860627) - Old Polarization: (-0.85476,-0.21548,-0.47218) - New Momentum Direction: (0.679673,-0.132002,-0.72154) - New Polarization: (0.627458,-0.404865,0.665117) + Old Momentum Direction: (0.89795,-0.43242,0.081891) + Old Polarization: (-0.40499,-0.73904,0.53833) + New Momentum Direction: (0.80324,-0.58525,0.11083) + New Polarization: (-0.56909,-0.69908,0.43292) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 1209, parentID 1) is processed with stopping code 2 -### pop requested out of 105 stacked tracks. +### pop requested out of 150 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.920033,-0.153082,0.360701) - Old Polarization: (-0.390384,-0.278779,0.87743) - New Momentum Direction: (0.847344,-0.207466,0.488841) - New Polarization: (-0.529992,-0.272475,0.803035) + Old Momentum Direction: (0.70538,-0.45534,-0.54324) + Old Polarization: (-0.61959,-0.76834,-0.16051) + New Momentum Direction: (0.29041,-0.61469,-0.73336) + New Polarization: (-0.89932,-0.43717,0.010297) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 1208, parentID 1) is processed with stopping code 2 -### pop requested out of 104 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1207, parentID 1) is processed with stopping code 2 -### pop requested out of 103 stacked tracks. +### pop requested out of 149 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.50459,0.436961,-0.744617) - Old Polarization: (-0.853776,0.380692,-0.355161) - New Momentum Direction: (0.680239,0.589068,-0.436204) - New Polarization: (-0.260205,0.750407,0.607604) + Old Momentum Direction: (0.80334,-0.52987,-0.27181) + Old Polarization: (-0.51042,-0.84777,0.14408) + New Momentum Direction: (0.59201,-0.71709,-0.36785) + New Polarization: (-0.7419,-0.66319,0.098839) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1207, parentID 1) is processed with stopping code 2 +### pop requested out of 148 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.4735,0.26885,-0.83876) + Old Polarization: (-0.87566,0.041062,-0.48117) + New Momentum Direction: (0.64365,0.36545,-0.67243) + New Polarization: (0.3731,0.61731,0.69263) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 1206, parentID 1) is processed with stopping code 2 -### pop requested out of 102 stacked tracks. +### pop requested out of 147 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.482967,0.27552,-0.831163) - Old Polarization: (-0.874683,0.196128,-0.443241) - New Momentum Direction: (0.655076,0.373704,-0.656674) - New Polarization: (0.267017,0.698533,0.663893) + Old Momentum Direction: (0.5071,0.72112,-0.47205) + Old Polarization: (-0.8384,0.53971,-0.076154) + New Momentum Direction: (0.68959,0.33523,-0.64194) + New Polarization: (-0.10193,-0.83266,-0.54433) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 1205, parentID 1) is processed with stopping code 2 -### pop requested out of 101 stacked tracks. +### pop requested out of 146 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.589553,0.677064,-0.440467) - Old Polarization: (-0.758642,0.651354,-0.0141923) - New Momentum Direction: (0.794181,0.131196,-0.593349) - New Polarization: (-0.0820273,-0.944335,-0.318594) + Old Momentum Direction: (0.48711,0.19061,-0.85229) + Old Polarization: (-0.86301,-0.044584,-0.50321) + New Momentum Direction: (0.65914,0.25793,-0.7064) + New Polarization: (0.57178,0.43826,0.69354) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 1204, parentID 1) is processed with stopping code 2 -### pop requested out of 100 stacked tracks. +### pop requested out of 145 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.64424,-0.36542,-0.67188) + Old Polarization: (-0.68747,-0.66165,-0.29934) + New Momentum Direction: (0.64424,-0.36542,0.67188) + New Polarization: (0.68747,0.66165,-0.29934) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.64424,-0.36542,0.67188) + Old Polarization: (0.68747,0.66165,-0.29934) + New Momentum Direction: (-0.64424,-0.36542,0.67188) + New Polarization: (0.68747,-0.66165,0.29934) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.64424,-0.36542,0.67188) + Old Polarization: (0.68747,-0.66165,0.29934) + New Momentum Direction: (-0.64424,0.36542,0.67188) + New Polarization: (-0.68747,-0.66165,-0.29934) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.64424,0.36542,0.67188) + Old Polarization: (-0.68747,-0.66165,-0.29934) + New Momentum Direction: (-0.64424,0.36542,-0.67188) + New Polarization: (0.68747,0.66165,-0.29934) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.64424,0.36542,-0.67188) + Old Polarization: (0.68747,0.66165,-0.29934) + New Momentum Direction: (0.64424,0.36542,-0.67188) + New Polarization: (0.68747,-0.66165,0.29934) + *** TotalInternalReflection *** +No Absorbtion length specified ** Photon Absorbed! ** Track (trackID 1203, parentID 1) is processed with stopping code 2 -### pop requested out of 99 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.741958,0.669964,0.0254127) - Old Polarization: (-0.588013,0.632056,0.504723) - New Momentum Direction: (0.415018,0.909159,0.0344858) - New Polarization: (-0.853139,0.375718,0.361926) - *** FresnelRefraction *** -No Absorbtion length specified +### pop requested out of 144 stacked tracks. + +** Photon Absorbed! ** Track (trackID 1202, parentID 1) is processed with stopping code 2 -### pop requested out of 98 stacked tracks. +### pop requested out of 143 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.87254,-0.462996,0.155912) - Old Polarization: (-0.444208,-0.619032,0.647671) - New Momentum Direction: (0.747816,-0.629189,0.211877) - New Polarization: (-0.630638,-0.573443,0.522933) + Old Momentum Direction: (0.89634,-0.43722,0.073533) + Old Polarization: (-0.40667,-0.74471,0.52917) + New Momentum Direction: (0.80005,-0.59162,0.099499) + New Polarization: (-0.57212,-0.70251,0.42327) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 1201, parentID 1) is processed with stopping code 2 -### pop requested out of 97 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.889064,0.267844,0.371247) - Old Polarization: (-0.425919,0.186711,0.885286) - New Momentum Direction: (0.783013,0.363929,0.504427) - New Polarization: (-0.598278,0.218801,0.770837) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1200, parentID 1) is processed with stopping code 2 -### pop requested out of 96 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.625279,-0.495754,-0.602706) - Old Polarization: (-0.71848,-0.667184,-0.196599) - New Momentum Direction: (-0.625279,-0.495754,-0.602706) - New Polarization: (-0.71848,0.667184,0.196599) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.625279,-0.495754,-0.602706) - Old Polarization: (-0.71848,0.667184,0.196599) - New Momentum Direction: (-0.625279,-0.495754,0.602706) - New Polarization: (0.71848,-0.667184,0.196599) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.625279,-0.495754,0.602706) - Old Polarization: (0.71848,-0.667184,0.196599) - New Momentum Direction: (-0.625279,0.495754,0.602706) - New Polarization: (-0.71848,-0.667184,-0.196599) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1199, parentID 1) is processed with stopping code 2 -### pop requested out of 95 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.659128,-0.551605,-0.511157) - Old Polarization: (-0.680211,-0.727168,-0.0924109) - New Momentum Direction: (-0.659128,-0.551605,-0.511157) - New Polarization: (-0.680211,0.727168,0.0924109) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.659128,-0.551605,-0.511157) - Old Polarization: (-0.680211,0.727168,0.0924109) - New Momentum Direction: (-0.659128,0.551605,-0.511157) - New Polarization: (0.680211,0.727168,-0.0924109) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.659128,0.551605,-0.511157) - Old Polarization: (0.680211,0.727168,-0.0924109) - New Momentum Direction: (-0.659128,0.551605,0.511157) - New Polarization: (-0.680211,-0.727168,-0.0924109) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1198, parentID 1) is processed with stopping code 2 -### pop requested out of 94 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1197, parentID 1) is processed with stopping code 2 -### pop requested out of 93 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1196, parentID 1) is processed with stopping code 2 -### pop requested out of 92 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.831204,0.493955,0.255162) - Old Polarization: (-0.49018,0.434542,0.755577) - New Momentum Direction: (0.654013,0.672106,0.347189) - New Polarization: (-0.707323,0.380557,0.59571) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1195, parentID 1) is processed with stopping code 2 -### pop requested out of 91 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.51148,-0.150536,-0.846007) -Old Polarization: (-0.843486,-0.27594,-0.460856) -New Polarization: (-0.0531035,0.128669,-0.911224) -Polarization Change: (-0.0576089,0.139585,-0.988533) -New Momentum Direction: (0.366058,0.87942,0.900603) -Momentum Change: (0.279241,0.670851,0.68701) - Photon at Boundary! - Old Momentum Direction: (0.279241,0.670851,0.68701) - Old Polarization: (-0.0576089,0.139585,-0.988533) - New Momentum Direction: (0.279241,-0.670851,0.68701) - New Polarization: (0.0576089,0.139585,0.988533) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.279241,-0.670851,0.68701) - Old Polarization: (0.0576089,0.139585,0.988533) - New Momentum Direction: (-0.279241,-0.670851,0.68701) - New Polarization: (0.0576089,-0.139585,-0.988533) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.279241,-0.670851,0.68701) - Old Polarization: (0.0576089,-0.139585,-0.988533) - New Momentum Direction: (-0.378454,-0.9092,0.173577) - New Polarization: (-0.00558897,-0.185277,-0.982671) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1194, parentID 1) is processed with stopping code 2 -### pop requested out of 90 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.796457,0.580082,0.170767) - Old Polarization: (-0.528237,0.529983,0.663389) - New Momentum Direction: (0.569061,0.788825,0.232217) - New Polarization: (-0.766242,0.406206,0.497865) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1193, parentID 1) is processed with stopping code 2 -### pop requested out of 89 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.537035,-0.269429,-0.799376) - Old Polarization: (-0.815452,-0.408394,-0.410186) - New Momentum Direction: (0.727293,-0.364881,-0.581297) - New Polarization: (0.14505,-0.746119,0.649821) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1192, parentID 1) is processed with stopping code 2 -### pop requested out of 88 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.683779,-0.572573,-0.452334) - Old Polarization: (-0.652835,-0.756956,-0.0286992) - New Momentum Direction: (0.194715,-0.769662,-0.608035) - New Polarization: (-0.93546,-0.332131,0.120848) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1191, parentID 1) is processed with stopping code 2 -### pop requested out of 87 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.716386,0.69656,-0.0399433) - Old Polarization: (-0.616364,0.658656,0.431587) - New Momentum Direction: (0.316784,0.946942,-0.0543011) - New Polarization: (-0.896151,0.317566,0.309944) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1190, parentID 1) is processed with stopping code 2 -### pop requested out of 86 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.83872,0.478011,0.260872) - Old Polarization: (-0.480037,0.422792,0.768642) - New Momentum Direction: (0.676034,0.646817,0.352997) - New Polarization: (-0.68806,0.382656,0.616561) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1189, parentID 1) is processed with stopping code 2 -### pop requested out of 85 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.486868,0.0200648,-0.873245) - Old Polarization: (-0.8693,-0.0865073,-0.486656) - New Momentum Direction: (0.661712,0.0272704,-0.749262) - New Polarization: (0.74963,-0.00556137,0.661834) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1188, parentID 1) is processed with stopping code 2 -### pop requested out of 84 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.771115,0.62795,0.105168) - Old Polarization: (-0.556008,0.583664,0.59177) - New Momentum Direction: (0.501428,0.853315,0.142912) - New Polarization: (-0.807444,0.40219,0.431599) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1187, parentID 1) is processed with stopping code 2 -### pop requested out of 83 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.585463,0.688304,-0.428334) -Old Polarization: (-0.760525,0.649297,0.0038643) -New Polarization: (-0.848925,0.0784758,-0.153005) -Polarization Change: (-0.980096,0.0906013,-0.176646) -New Momentum Direction: (0.141604,-0.120797,-1.13889) -Momentum Change: (0.122707,-0.104677,-0.986907) - Photon at Boundary! - Old Momentum Direction: (0.122707,-0.104677,-0.986907) - Old Polarization: (-0.980096,0.0906013,-0.176646) - New Momentum Direction: (0.166844,-0.142328,-0.975657) - New Polarization: (0.369605,-0.908344,0.195713) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1186, parentID 1) is processed with stopping code 2 -### pop requested out of 82 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1185, parentID 1) is processed with stopping code 2 -### pop requested out of 81 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.483048,0.0725784,-0.872581) - Old Polarization: (-0.873518,-0.0286326,-0.485948) - New Momentum Direction: (0.656509,0.0986412,-0.74784) - New Polarization: (0.726696,0.183124,0.662102) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1184, parentID 1) is processed with stopping code 2 -### pop requested out of 80 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1183, parentID 1) is processed with stopping code 2 -### pop requested out of 79 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.685056,-0.591289,-0.42553) - Old Polarization: (-0.650857,-0.759167,0.00708154) - New Momentum Direction: (-0.685056,-0.591289,-0.42553) - New Polarization: (-0.61052,0.784676,-0.107465) - *** FresnelReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1182, parentID 1) is processed with stopping code 2 -### pop requested out of 78 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1181, parentID 1) is processed with stopping code 2 -### pop requested out of 77 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.50149,0.406295,-0.763827) - Old Polarization: (-0.857933,0.347443,-0.378464) - New Momentum Direction: (0.675179,0.547013,-0.494883) - New Polarization: (-0.159796,0.76342,0.625824) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1180, parentID 1) is processed with stopping code 2 -### pop requested out of 76 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1179, parentID 1) is processed with stopping code 2 -### pop requested out of 75 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.633594,-0.523063,-0.570055) - Old Polarization: (-0.708051,-0.688991,-0.154777) - New Momentum Direction: (-0.633594,-0.523063,-0.570055) - New Polarization: (-0.708051,0.688991,0.154777) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.633594,-0.523063,-0.570055) - Old Polarization: (-0.708051,0.688991,0.154777) - New Momentum Direction: (-0.633594,-0.523063,0.570055) - New Polarization: (0.708051,-0.688991,0.154777) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.633594,-0.523063,0.570055) - Old Polarization: (0.708051,-0.688991,0.154777) - New Momentum Direction: (-0.633594,0.523063,0.570055) - New Polarization: (-0.708051,-0.688991,-0.154777) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1178, parentID 1) is processed with stopping code 2 -### pop requested out of 74 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.882316,0.306791,0.356927) - Old Polarization: (-0.432731,0.230534,0.871549) - New Momentum Direction: (0.769541,0.41626,0.484287) - New Polarization: (-0.610166,0.255522,0.749937) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1177, parentID 1) is processed with stopping code 2 -### pop requested out of 73 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.743028,-0.61243,-0.269885) - Old Polarization: (-0.58658,-0.790095,0.177972) - New Momentum Direction: (0.423289,-0.829063,-0.36535) - New Polarization: (-0.848676,-0.503998,0.160422) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1176, parentID 1) is processed with stopping code 2 -### pop requested out of 72 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.523957,0.54857,-0.651568) - Old Polarization: (-0.830039,0.500455,-0.24613) - New Momentum Direction: (0.523957,0.54857,0.651568) - New Polarization: (0.830039,-0.500455,-0.24613) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.523957,0.54857,0.651568) - Old Polarization: (0.830039,-0.500455,-0.24613) - New Momentum Direction: (0.523957,-0.54857,0.651568) - New Polarization: (-0.830039,-0.500455,0.24613) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.523957,-0.54857,0.651568) - Old Polarization: (-0.830039,-0.500455,0.24613) - New Momentum Direction: (-0.523957,-0.54857,0.651568) - New Polarization: (-0.830039,0.500455,-0.24613) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.523957,-0.54857,0.651568) - Old Polarization: (-0.830039,0.500455,-0.24613) - New Momentum Direction: (-0.523957,-0.54857,-0.651568) - New Polarization: (0.830039,-0.500455,-0.24613) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1175, parentID 1) is processed with stopping code 2 -### pop requested out of 71 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.839096,-0.542608,0.0386559) - Old Polarization: (-0.48104,-0.706949,0.518482) - New Momentum Direction: (0.67352,-0.737301,0.052526) - New Polarization: (-0.691908,-0.60386,0.395749) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1174, parentID 1) is processed with stopping code 2 -### pop requested out of 70 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1173, parentID 1) is processed with stopping code 2 -### pop requested out of 69 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.923007,-0.00446181,0.384757) - Old Polarization: (-0.382676,-0.115136,0.91668) - New Momentum Direction: (0.855791,-0.00599868,0.517286) - New Polarization: (-0.515783,-0.0869495,0.852296) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1172, parentID 1) is processed with stopping code 2 -### pop requested out of 68 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.916959,-0.189716,0.350989) - Old Polarization: (-0.395565,-0.317412,0.861846) - New Momentum Direction: (0.840039,-0.257972,0.477269) - New Polarization: (-0.540065,-0.313932,0.780881) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1171, parentID 1) is processed with stopping code 2 -### pop requested out of 67 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.675584,0.715269,-0.178822) - Old Polarization: (-0.661967,0.695252,0.280044) - New Momentum Direction: (0.675584,-0.715269,-0.178822) - New Polarization: (-0.730356,-0.682424,-0.0296397) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.675584,-0.715269,-0.178822) - Old Polarization: (-0.730356,-0.682424,-0.0296397) - New Momentum Direction: (-0.675584,-0.715269,-0.178822) - New Polarization: (-0.726511,0.687145,-0.00376883) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.675584,-0.715269,-0.178822) - Old Polarization: (-0.726511,0.687145,-0.00376883) - New Momentum Direction: (-0.909561,-0.338728,-0.240753) - New Polarization: (-0.356427,0.933746,0.0328363) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1170, parentID 1) is processed with stopping code 2 -### pop requested out of 66 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1169, parentID 1) is processed with stopping code 2 -### pop requested out of 65 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.619001,-0.487736,-0.61559) - Old Polarization: (-0.725178,-0.655912,-0.209514) - New Momentum Direction: (-0.619001,-0.487736,-0.61559) - New Polarization: (-0.725178,0.655912,0.209514) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.619001,-0.487736,-0.61559) - Old Polarization: (-0.725178,0.655912,0.209514) - New Momentum Direction: (-0.619001,-0.487736,0.61559) - New Polarization: (0.725178,-0.655912,0.209514) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.619001,-0.487736,0.61559) - Old Polarization: (0.725178,-0.655912,0.209514) - New Momentum Direction: (-0.619001,0.487736,0.61559) - New Polarization: (-0.725178,-0.655912,-0.209514) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1168, parentID 1) is processed with stopping code 2 -### pop requested out of 64 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1167, parentID 1) is processed with stopping code 2 -### pop requested out of 63 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.894737,0.23688,0.378594) - Old Polarization: (-0.419181,0.153019,0.894915) - New Momentum Direction: (0.795321,0.321532,0.513889) - New Polarization: (-0.585822,0.189779,0.787906) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1166, parentID 1) is processed with stopping code 2 -### pop requested out of 62 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.722491,-0.604421,-0.335681) - Old Polarization: (-0.609273,-0.786099,0.104088) - New Momentum Direction: (-0.722491,-0.604421,-0.335681) - New Polarization: (-0.429981,0.773019,-0.466431) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.722491,-0.604421,-0.335681) - Old Polarization: (-0.429981,0.773019,-0.466431) - New Momentum Direction: (-0.722491,0.604421,-0.335681) - New Polarization: (0.429981,0.773019,0.466431) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1165, parentID 1) is processed with stopping code 2 -### pop requested out of 61 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.823714,0.522024,0.221326) - Old Polarization: (-0.496059,0.474417,0.727224) - New Momentum Direction: (0.643424,0.704782,0.298811) - New Polarization: (-0.711902,0.407395,0.572036) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1164, parentID 1) is processed with stopping code 2 -### pop requested out of 60 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1163, parentID 1) is processed with stopping code 2 -### pop requested out of 59 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1162, parentID 1) is processed with stopping code 2 -### pop requested out of 58 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.601358,0.700009,-0.385171) - Old Polarization: (-0.743702,0.666611,0.0503738) - New Momentum Direction: (0.815376,0.249832,-0.522251) - New Polarization: (0.0756977,-0.940358,-0.331659) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1161, parentID 1) is processed with stopping code 2 -### pop requested out of 57 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.920627,-0.128989,0.36852) - Old Polarization: (-0.389855,-0.251948,0.88574) - New Momentum Direction: (0.84845,-0.174855,0.499559) - New Polarization: (-0.528853,-0.242348,0.813377) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1160, parentID 1) is processed with stopping code 2 -### pop requested out of 56 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.779907,0.616521,0.10792) - Old Polarization: (-0.544613,0.583487,0.602445) - New Momentum Direction: (0.53788,0.830395,0.145359) - New Polarization: (-0.783193,0.428426,0.450622) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1159, parentID 1) is processed with stopping code 2 -### pop requested out of 55 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.751889,-0.616421,-0.233855) - Old Polarization: (-0.577311,-0.786886,0.217996) - New Momentum Direction: (0.44275,-0.838343,-0.318046) - New Polarization: (-0.839632,-0.512104,0.181016) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1158, parentID 1) is processed with stopping code 2 -### pop requested out of 54 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.84826,-0.526266,0.0591491) - Old Polarization: (-0.469324,-0.695298,0.544331) - New Momentum Direction: (0.697682,-0.711925,0.0800159) - New Polarization: (-0.670727,-0.609865,0.422125) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1157, parentID 1) is processed with stopping code 2 -### pop requested out of 53 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.729111,-0.611375,-0.3076) - Old Polarization: (-0.602146,-0.78667,0.136276) - New Momentum Direction: (0.373207,-0.828764,-0.416974) - New Polarization: (-0.872494,-0.466323,0.145935) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1156, parentID 1) is processed with stopping code 2 -### pop requested out of 52 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.89576,0.247014,0.369592) - Old Polarization: (-0.415086,0.167178,0.89429) - New Momentum Direction: (0.800231,0.333228,0.498588) - New Polarization: (-0.577566,0.204501,0.790315) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1155, parentID 1) is processed with stopping code 2 -### pop requested out of 51 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.782907,-0.606117,-0.14028) - Old Polarization: (-0.543138,-0.775854,0.321017) - New Momentum Direction: (0.533251,-0.824172,-0.190747) - New Polarization: (-0.788743,-0.565896,0.240096) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1154, parentID 1) is processed with stopping code 2 -### pop requested out of 50 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.634924,-0.518713,-0.572545) - Old Polarization: (-0.707114,-0.688714,-0.160194) - New Momentum Direction: (-0.634924,-0.518713,-0.572545) - New Polarization: (-0.707114,0.688714,0.160194) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.634924,-0.518713,-0.572545) - Old Polarization: (-0.707114,0.688714,0.160194) - New Momentum Direction: (-0.634924,-0.518713,0.572545) - New Polarization: (0.707114,-0.688714,0.160194) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.634924,-0.518713,0.572545) - Old Polarization: (0.707114,-0.688714,0.160194) - New Momentum Direction: (-0.634924,0.518713,0.572545) - New Polarization: (-0.707114,-0.688714,-0.160194) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.634924,0.518713,0.572545) - Old Polarization: (-0.707114,-0.688714,-0.160194) - New Momentum Direction: (0.634924,0.518713,0.572545) - New Polarization: (-0.707114,0.688714,0.160194) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.634924,0.518713,0.572545) - Old Polarization: (-0.707114,0.688714,0.160194) - New Momentum Direction: (0.634924,0.518713,-0.572545) - New Polarization: (0.707114,-0.688714,0.160194) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1153, parentID 1) is processed with stopping code 2 -### pop requested out of 49 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.682602,0.717104,-0.140775) - Old Polarization: (-0.653683,0.685268,0.321102) - New Momentum Direction: (0.925694,0.326565,-0.190909) - New Polarization: (0.34197,-0.938198,0.0533102) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1152, parentID 1) is processed with stopping code 2 -### pop requested out of 48 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.625219,0.708242,-0.327864) - Old Polarization: (-0.718538,0.686344,0.112408) - New Momentum Direction: (0.842257,0.309068,-0.441679) - New Polarization: (0.19731,-0.939217,-0.280964) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1151, parentID 1) is processed with stopping code 2 -### pop requested out of 47 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.594558,0.69317,-0.407451) - Old Polarization: (-0.751306,0.659458,0.0255775) - New Momentum Direction: (0.80594,0.213104,-0.552311) - New Polarization: (0.0183654,-0.941513,-0.336475) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1150, parentID 1) is processed with stopping code 2 -### pop requested out of 46 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.751175,0.65938,0.030889) - Old Polarization: (-0.576832,0.632945,0.516378) - New Momentum Direction: (0.459126,0.887398,0.0415706) - New Polarization: (-0.829046,0.411183,0.378962) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1149, parentID 1) is processed with stopping code 2 -### pop requested out of 45 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.890206,0.259238,0.374605) -Old Polarization: (-0.425051,0.1768,0.887735) -New Polarization: (-0.154513,0.25533,0.850413) -Polarization Change: (-0.171441,0.283303,0.943582) -New Momentum Direction: (0.85897,0.512009,0.00727682) -Momentum Change: (0.858955,0.511999,0.00727669) - Photon at Boundary! - Old Momentum Direction: (0.858955,0.511999,0.00727669) - Old Polarization: (-0.171441,0.283303,0.943582) - New Momentum Direction: (0.717723,0.696258,0.00989543) - New Polarization: (-0.31623,0.313253,0.895472) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1148, parentID 1) is processed with stopping code 2 -### pop requested out of 44 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1147, parentID 1) is processed with stopping code 2 -### pop requested out of 43 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1146, parentID 1) is processed with stopping code 2 -### pop requested out of 42 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.918537,0.0190357,0.394876) - Old Polarization: (-0.39188,-0.0879134,0.915806) - New Momentum Direction: (0.844462,0.0257904,0.534995) - New Polarization: (-0.533115,-0.0559464,0.844191) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1145, parentID 1) is processed with stopping code 2 -### pop requested out of 41 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.556609,0.622364,-0.550318) - Old Polarization: (-0.795679,0.58986,-0.137692) - New Momentum Direction: (0.556609,-0.622364,-0.550318) - New Polarization: (0.795679,0.58986,0.137692) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.556609,-0.622364,-0.550318) - Old Polarization: (0.795679,0.58986,0.137692) - New Momentum Direction: (-0.556609,-0.622364,-0.550318) - New Polarization: (0.795679,-0.58986,-0.137692) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.556609,-0.622364,-0.550318) - Old Polarization: (0.795679,-0.58986,-0.137692) - New Momentum Direction: (-0.556609,-0.622364,0.550318) - New Polarization: (-0.795679,0.58986,-0.137692) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1144, parentID 1) is processed with stopping code 2 -### pop requested out of 40 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.902741,-0.345482,0.256323) - Old Polarization: (-0.40756,-0.496172,0.766621) - New Momentum Direction: (0.814137,-0.466339,0.345991) - New Polarization: (-0.563805,-0.492267,0.663172) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1143, parentID 1) is processed with stopping code 2 -### pop requested out of 39 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1142, parentID 1) is processed with stopping code 2 -### pop requested out of 38 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1141, parentID 1) is processed with stopping code 2 -### pop requested out of 37 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.608177,-0.475927,-0.635306) -Old Polarization: (-0.736324,-0.637232,-0.227512) -New Polarization: (-0.762573,-0.546736,-0.147691) -Polarization Change: (-0.802819,-0.575591,-0.155486) -New Momentum Direction: (-0.485303,0.778761,-0.418992) -Momentum Change: (-0.481102,0.772019,-0.415365) - Photon at Boundary! - Old Momentum Direction: (-0.481102,0.772019,-0.415365) - Old Polarization: (-0.802819,-0.575591,-0.155486) - New Momentum Direction: (-0.481102,0.772019,0.415365) - New Polarization: (0.802819,0.575591,-0.155486) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.481102,0.772019,0.415365) - Old Polarization: (0.802819,0.575591,-0.155486) - New Momentum Direction: (-0.481102,-0.772019,0.415365) - New Polarization: (-0.410193,-0.220499,-0.884942) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.481102,-0.772019,0.415365) - Old Polarization: (-0.410193,-0.220499,-0.884942) - New Momentum Direction: (0.481102,-0.772019,0.415365) - New Polarization: (-0.410193,0.220499,0.884942) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1140, parentID 1) is processed with stopping code 2 -### pop requested out of 36 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.767233,0.635998,0.0828248) - Old Polarization: (-0.559401,0.60041,0.571471) - New Momentum Direction: (0.498665,0.859537,0.111936) - New Polarization: (-0.8077,0.413912,0.419877) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1139, parentID 1) is processed with stopping code 2 -### pop requested out of 35 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.505139,-0.113015,-0.855607) - Old Polarization: (-0.850399,-0.234228,-0.471125) - New Momentum Direction: (0.684779,-0.153207,-0.712464) - New Polarization: (0.593131,-0.450847,0.667032) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1138, parentID 1) is processed with stopping code 2 -### pop requested out of 34 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1137, parentID 1) is processed with stopping code 2 -### pop requested out of 33 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1136, parentID 1) is processed with stopping code 2 -### pop requested out of 32 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1135, parentID 1) is processed with stopping code 2 -### pop requested out of 31 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.915418,-0.256515,0.310177) - Old Polarization: (-0.392478,-0.397932,0.829223) - New Momentum Direction: (0.840122,-0.345669,0.417981) - New Polarization: (-0.535017,-0.401427,0.743379) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1134, parentID 1) is processed with stopping code 2 -### pop requested out of 30 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.547722,-0.320918,-0.772666) - Old Polarization: (-0.802459,-0.46285,-0.376602) - New Momentum Direction: (0.743969,-0.435903,-0.506457) - New Polarization: (-0.0270638,-0.776961,0.628967) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1133, parentID 1) is processed with stopping code 2 -### pop requested out of 29 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.832967,0.496707,0.243818) - Old Polarization: (-0.485838,0.445654,0.7519) - New Momentum Direction: (0.664448,0.670869,0.329309) - New Polarization: (-0.696201,0.39546,0.599096) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1132, parentID 1) is processed with stopping code 2 -### pop requested out of 28 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.67932,-0.580261,-0.449245) - Old Polarization: (-0.657377,-0.753266,-0.0210991) - New Momentum Direction: (-0.67932,-0.580261,-0.449245) - New Polarization: (-0.627112,0.776965,-0.0552771) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.67932,-0.580261,-0.449245) - Old Polarization: (-0.627112,0.776965,-0.0552771) - New Momentum Direction: (-0.67932,0.580261,-0.449245) - New Polarization: (0.627112,0.776965,0.0552771) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.67932,0.580261,-0.449245) - Old Polarization: (0.627112,0.776965,0.0552771) - New Momentum Direction: (-0.67932,0.580261,0.449245) - New Polarization: (-0.627112,-0.776965,0.0552771) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.67932,0.580261,0.449245) - Old Polarization: (-0.627112,-0.776965,0.0552771) - New Momentum Direction: (-0.108558,0.786044,0.608564) - New Polarization: (0.935217,-0.126791,0.330596) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1131, parentID 1) is processed with stopping code 2 -### pop requested out of 27 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.592503,-0.442068,-0.673436) - Old Polarization: (-0.753667,-0.599411,-0.269616) - New Momentum Direction: (0.592503,-0.442068,0.673436) - New Polarization: (0.753667,0.599411,-0.269616) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.592503,-0.442068,0.673436) - Old Polarization: (0.753667,0.599411,-0.269616) - New Momentum Direction: (-0.592503,-0.442068,0.673436) - New Polarization: (0.753667,-0.599411,0.269616) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.592503,-0.442068,0.673436) - Old Polarization: (0.753667,-0.599411,0.269616) - New Momentum Direction: (-0.592503,0.442068,0.673436) - New Polarization: (-0.753667,-0.599411,-0.269616) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.592503,0.442068,0.673436) - Old Polarization: (-0.753667,-0.599411,-0.269616) - New Momentum Direction: (-0.592503,0.442068,-0.673436) - New Polarization: (0.753667,0.599411,-0.269616) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.592503,0.442068,-0.673436) - Old Polarization: (0.753667,0.599411,-0.269616) - New Momentum Direction: (0.592503,0.442068,-0.673436) - New Polarization: (0.753667,-0.599411,0.269616) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.592503,0.442068,-0.673436) - Old Polarization: (0.753667,-0.599411,0.269616) - New Momentum Direction: (0.592503,-0.442068,-0.673436) - New Polarization: (-0.753667,-0.599411,-0.269616) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.592503,-0.442068,-0.673436) - Old Polarization: (-0.753667,-0.599411,-0.269616) - New Momentum Direction: (0.592503,-0.442068,0.673436) - New Polarization: (0.753667,0.599411,-0.269616) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.592503,-0.442068,0.673436) - Old Polarization: (0.753667,0.599411,-0.269616) - New Momentum Direction: (-0.592503,-0.442068,0.673436) - New Polarization: (0.753667,-0.599411,0.269616) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.592503,-0.442068,0.673436) - Old Polarization: (0.753667,-0.599411,0.269616) - New Momentum Direction: (-0.592503,-0.442068,-0.673436) - New Polarization: (-0.753667,0.599411,0.269616) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.592503,-0.442068,-0.673436) - Old Polarization: (-0.753667,0.599411,0.269616) - New Momentum Direction: (-0.592503,0.442068,-0.673436) - New Polarization: (0.753667,0.599411,-0.269616) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.592503,0.442068,-0.673436) - Old Polarization: (0.753667,0.599411,-0.269616) - New Momentum Direction: (0.592503,0.442068,-0.673436) - New Polarization: (0.753667,-0.599411,0.269616) - *** TotalInternalReflection *** -No Absorbtion length specified -Scattering Photon! -Old Momentum Direction: (0.592503,0.442068,-0.673436) -Old Polarization: (0.753667,-0.599411,0.269616) -New Polarization: (0.689069,-0.301227,0.4663) -Polarization Change: (0.778726,-0.340421,0.526972) -New Momentum Direction: (-0.310757,-0.935093,-0.200428) -Momentum Change: (-0.30904,-0.929928,-0.199321) - Photon at Boundary! - Old Momentum Direction: (-0.30904,-0.929928,-0.199321) - Old Polarization: (0.778726,-0.340421,0.526972) - New Momentum Direction: (-0.418785,-0.866985,-0.270103) - New Polarization: (-0.736728,0.498277,-0.457113) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1130, parentID 1) is processed with stopping code 2 -### pop requested out of 26 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1129, parentID 1) is processed with stopping code 2 -### pop requested out of 25 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.539459,0.603839,-0.586824) - Old Polarization: (-0.811728,0.558182,-0.171842) - New Momentum Direction: (0.539459,-0.603839,-0.586824) - New Polarization: (0.811728,0.558182,0.171842) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.539459,-0.603839,-0.586824) - Old Polarization: (0.811728,0.558182,0.171842) - New Momentum Direction: (0.539459,-0.603839,0.586824) - New Polarization: (-0.811728,-0.558182,0.171842) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.539459,-0.603839,0.586824) - Old Polarization: (-0.811728,-0.558182,0.171842) - New Momentum Direction: (-0.539459,-0.603839,0.586824) - New Polarization: (-0.811728,0.558182,-0.171842) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.539459,-0.603839,0.586824) - Old Polarization: (-0.811728,0.558182,-0.171842) - New Momentum Direction: (-0.539459,0.603839,0.586824) - New Polarization: (0.811728,0.558182,0.171842) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.539459,0.603839,0.586824) - Old Polarization: (0.811728,0.558182,0.171842) - New Momentum Direction: (-0.539459,0.603839,-0.586824) - New Polarization: (-0.811728,-0.558182,0.171842) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.539459,0.603839,-0.586824) - Old Polarization: (-0.811728,-0.558182,0.171842) - New Momentum Direction: (0.539459,0.603839,-0.586824) - New Polarization: (-0.811728,0.558182,-0.171842) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.539459,0.603839,-0.586824) - Old Polarization: (-0.811728,0.558182,-0.171842) - New Momentum Direction: (0.539459,-0.603839,-0.586824) - New Polarization: (0.811728,0.558182,0.171842) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.539459,-0.603839,-0.586824) - Old Polarization: (0.811728,0.558182,0.171842) - New Momentum Direction: (0.539459,-0.603839,0.586824) - New Polarization: (-0.811728,-0.558182,0.171842) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.539459,-0.603839,0.586824) - Old Polarization: (-0.811728,-0.558182,0.171842) - New Momentum Direction: (-0.539459,-0.603839,0.586824) - New Polarization: (-0.811728,0.558182,-0.171842) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.539459,-0.603839,0.586824) - Old Polarization: (-0.811728,0.558182,-0.171842) - New Momentum Direction: (-0.539459,0.603839,0.586824) - New Polarization: (0.811728,0.558182,0.171842) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.539459,0.603839,0.586824) - Old Polarization: (0.811728,0.558182,0.171842) - New Momentum Direction: (-0.539459,0.603839,-0.586824) - New Polarization: (-0.811728,-0.558182,0.171842) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.539459,0.603839,-0.586824) - Old Polarization: (-0.811728,-0.558182,0.171842) - New Momentum Direction: (0.539459,0.603839,-0.586824) - New Polarization: (-0.811728,0.558182,-0.171842) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1128, parentID 1) is processed with stopping code 2 -### pop requested out of 24 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.491987,0.398872,-0.773854) - Old Polarization: (-0.864148,0.331777,-0.378382) - New Momentum Direction: (0.668026,0.541594,-0.51031) - New Polarization: (-0.138166,0.764124,0.630099) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1127, parentID 1) is processed with stopping code 2 -### pop requested out of 23 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.867579,0.36861,0.333816) - Old Polarization: (-0.450153,0.296821,0.842176) - New Momentum Direction: (0.736359,0.501505,0.454167) - New Polarization: (-0.641244,0.303167,0.704908) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1126, parentID 1) is processed with stopping code 2 -### pop requested out of 22 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1125, parentID 1) is processed with stopping code 2 -### pop requested out of 21 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1124, parentID 1) is processed with stopping code 2 -### pop requested out of 20 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.582706,0.681647,-0.442506) - Old Polarization: (-0.764118,0.644951,-0.0127168) - New Momentum Direction: (0.582706,-0.681647,-0.442506) - New Polarization: (-0.114313,-0.607835,0.785792) - *** FresnelReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1123, parentID 1) is processed with stopping code 2 -### pop requested out of 19 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.593003,0.680418,-0.430556) - Old Polarization: (-0.754892,0.655841,-0.00326932) - New Momentum Direction: (0.593003,-0.680418,-0.430556) - New Polarization: (-0.125858,-0.606473,0.78508) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.593003,-0.680418,-0.430556) - Old Polarization: (-0.125858,-0.606473,0.78508) - New Momentum Direction: (-0.593003,-0.680418,-0.430556) - New Polarization: (-0.125858,0.606473,-0.78508) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.593003,-0.680418,-0.430556) - Old Polarization: (-0.125858,0.606473,-0.78508) - New Momentum Direction: (-0.593003,-0.680418,0.430556) - New Polarization: (0.125858,-0.606473,-0.78508) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1122, parentID 1) is processed with stopping code 2 -### pop requested out of 18 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.689441,0.714976,-0.116102) - Old Polarization: (-0.646051,0.679454,0.347794) - New Momentum Direction: (0.936965,0.311768,-0.157786) - New Polarization: (0.329625,-0.93847,0.103063) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1121, parentID 1) is processed with stopping code 2 -### pop requested out of 17 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.669188,-0.568281,-0.478795) - Old Polarization: (-0.668709,-0.741524,-0.0545087) - New Momentum Direction: (-0.669188,-0.568281,-0.478795) - New Polarization: (-0.668709,0.741524,0.0545087) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.669188,-0.568281,-0.478795) - Old Polarization: (-0.668709,0.741524,0.0545087) - New Momentum Direction: (-0.669188,0.568281,-0.478795) - New Polarization: (0.668709,0.741524,-0.0545087) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.669188,0.568281,-0.478795) - Old Polarization: (0.668709,0.741524,-0.0545087) - New Momentum Direction: (-0.669188,0.568281,0.478795) - New Polarization: (-0.668709,-0.741524,-0.0545087) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1120, parentID 1) is processed with stopping code 2 -### pop requested out of 16 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.732346,0.680926,-0.00298469) -Old Polarization: (-0.59856,0.645838,0.47394) -New Polarization: (-0.732914,0.438814,0.252639) -Polarization Change: (-0.822748,0.4926,0.283605) -New Momentum Direction: (-0.223001,0.119315,-1.09584) -Momentum Change: (-0.198286,0.106092,-0.974386) - Photon at Boundary! - Old Momentum Direction: (-0.198286,0.106092,-0.974386) - Old Polarization: (-0.822748,0.4926,0.283605) - New Momentum Direction: (-0.26879,0.143814,-0.952402) - New Polarization: (-0.823243,0.479007,0.30467) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1119, parentID 1) is processed with stopping code 2 -### pop requested out of 15 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.633196,-0.524666,-0.569024) - Old Polarization: (-0.708307,-0.689185,-0.152726) - New Momentum Direction: (-0.633196,-0.524666,-0.569024) - New Polarization: (-0.708307,0.689185,0.152726) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.633196,-0.524666,-0.569024) - Old Polarization: (-0.708307,0.689185,0.152726) - New Momentum Direction: (-0.633196,-0.524666,0.569024) - New Polarization: (0.708307,-0.689185,0.152726) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.633196,-0.524666,0.569024) - Old Polarization: (0.708307,-0.689185,0.152726) - New Momentum Direction: (-0.633196,0.524666,0.569024) - New Polarization: (-0.708307,-0.689185,-0.152726) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.633196,0.524666,0.569024) - Old Polarization: (-0.708307,-0.689185,-0.152726) - New Momentum Direction: (0.633196,0.524666,0.569024) - New Polarization: (-0.708307,0.689185,0.152726) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.633196,0.524666,0.569024) - Old Polarization: (-0.708307,0.689185,0.152726) - New Momentum Direction: (0.633196,0.524666,-0.569024) - New Polarization: (0.708307,-0.689185,0.152726) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.633196,0.524666,-0.569024) - Old Polarization: (0.708307,-0.689185,0.152726) - New Momentum Direction: (0.633196,-0.524666,-0.569024) - New Polarization: (-0.708307,-0.689185,-0.152726) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.633196,-0.524666,-0.569024) - Old Polarization: (-0.708307,-0.689185,-0.152726) - New Momentum Direction: (-0.633196,-0.524666,-0.569024) - New Polarization: (-0.708307,0.689185,0.152726) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.633196,-0.524666,-0.569024) - Old Polarization: (-0.708307,0.689185,0.152726) - New Momentum Direction: (-0.633196,-0.524666,0.569024) - New Polarization: (0.708307,-0.689185,0.152726) - *** TotalInternalReflection *** -No Absorbtion length specified -Scattering Photon! -Old Momentum Direction: (-0.633196,-0.524666,0.569024) -Old Polarization: (0.708307,-0.689185,0.152726) -New Polarization: (0.811497,-0.334793,-0.017313) -Polarization Change: (0.924239,-0.381306,-0.0197183) -New Momentum Direction: (0.230644,0.594043,-0.877766) -Momentum Change: (0.212636,0.547661,-0.80923) - -** Photon Absorbed! ** -Track (trackID 1118, parentID 1) is processed with stopping code 2 -### pop requested out of 14 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.750955,-0.615374,-0.239546) - Old Polarization: (-0.578168,-0.787969,0.211724) - New Momentum Direction: (0.442308,-0.835773,-0.32534) - New Polarization: (-0.839598,-0.513408,0.177449) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1117, parentID 1) is processed with stopping code 2 -### pop requested out of 13 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.856575,0.415518,0.305981) - Old Polarization: (-0.461256,0.350696,0.815019) - New Momentum Direction: (0.713906,0.563857,0.415215) - New Polarization: (-0.658937,0.340312,0.670813) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1116, parentID 1) is processed with stopping code 2 -### pop requested out of 12 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1115, parentID 1) is processed with stopping code 2 -### pop requested out of 11 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1114, parentID 1) is processed with stopping code 2 -### pop requested out of 10 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.4884,0.32714,-0.808978) -Old Polarization: (-0.869956,0.254921,-0.422127) -New Polarization: (-0.685668,0.517513,-0.187742) -Polarization Change: (-0.779769,0.588536,-0.213507) -New Momentum Direction: (0.616672,0.777074,-0.144045) -Momentum Change: (0.615173,0.775186,-0.143695) - Photon at Boundary! - Old Momentum Direction: (0.615173,0.775186,-0.143695) - Old Polarization: (-0.779769,0.588536,-0.213507) - New Momentum Direction: (0.832367,0.519001,-0.194429) - New Polarization: (0.42179,-0.820781,-0.385243) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1113, parentID 1) is processed with stopping code 2 -### pop requested out of 9 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.586482,-0.436551,-0.682248) - Old Polarization: (-0.759413,-0.589281,-0.275753) - New Momentum Direction: (0.7974,-0.593549,-0.108869) - New Polarization: (-0.441524,-0.696837,0.565221) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1112, parentID 1) is processed with stopping code 2 -### pop requested out of 8 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.499664,0.432148,-0.750722) - Old Polarization: (-0.857203,0.371403,-0.35674) - New Momentum Direction: (0.676365,0.584972,-0.447593) - New Polarization: (-0.245829,0.752108,0.611475) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1111, parentID 1) is processed with stopping code 2 -### pop requested out of 7 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.829794,0.503352,0.240997) - Old Polarization: (-0.490069,0.45065,0.746155) - New Momentum Direction: (0.655286,0.681316,0.326204) - New Polarization: (-0.70411,0.394533,0.590401) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1110, parentID 1) is processed with stopping code 2 -### pop requested out of 6 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.919267,-0.0182413,0.393212) - Old Polarization: (-0.392157,-0.128924,0.910819) - New Momentum Direction: (0.845236,-0.0247641,0.533818) - New Polarization: (-0.533328,-0.102101,0.839724) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1109, parentID 1) is processed with stopping code 2 -### pop requested out of 5 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1108, parentID 1) is processed with stopping code 2 -### pop requested out of 4 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.573235,-0.396904,-0.716846) - Old Polarization: (-0.774603,-0.547768,-0.316133) - New Momentum Direction: (0.573235,-0.396904,0.716846) - New Polarization: (0.413381,0.895442,0.165224) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.573235,-0.396904,0.716846) - Old Polarization: (0.413381,0.895442,0.165224) - New Momentum Direction: (-0.573235,-0.396904,0.716846) - New Polarization: (0.413381,-0.895442,-0.165224) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.573235,-0.396904,0.716846) - Old Polarization: (0.413381,-0.895442,-0.165224) - New Momentum Direction: (-0.573235,0.396904,0.716846) - New Polarization: (-0.413381,-0.895442,0.165224) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.573235,0.396904,0.716846) - Old Polarization: (-0.413381,-0.895442,0.165224) - New Momentum Direction: (-0.777877,0.538596,0.323762) - New Polarization: (-0.626306,-0.706645,-0.329231) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1107, parentID 1) is processed with stopping code 2 -### pop requested out of 3 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.762531,-0.610994,-0.212681) - Old Polarization: (-0.564848,-0.789036,0.241596) - New Momentum Direction: (0.483198,-0.82685,-0.287818) - New Polarization: (-0.816838,-0.54408,0.19171) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1106, parentID 1) is processed with stopping code 2 -### pop requested out of 2 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.52761,-0.231596,-0.817307) - Old Polarization: (-0.825683,-0.365976,-0.429313) - New Momentum Direction: (0.714924,-0.313818,-0.624822) - New Polarization: (0.267713,-0.702666,0.659234) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1105, parentID 1) is processed with stopping code 2 -### pop requested out of 1 stacked tracks. - - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 152 -Track (trackID 1, parentID 0) is processed with stopping code 4 -### pop requested out of 153 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.889046,-0.435977,0.139719) - Old Polarization: (-0.457241,-0.830239,0.318801) - New Momentum Direction: (0.783808,-0.591378,0.18952) - New Polarization: (-0.620593,-0.73483,0.273658) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1419, parentID 1) is processed with stopping code 2 -### pop requested out of 152 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.871797,-0.472888,-0.127853) - Old Polarization: (-0.474414,-0.88007,0.0201942) - New Momentum Direction: (0.750452,-0.638018,-0.172498) - New Polarization: (-0.64972,-0.760014,-0.015545) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1418, parentID 1) is processed with stopping code 2 -### pop requested out of 151 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.892218,-0.439986,0.10178) - Old Polarization: (-0.450077,-0.847801,0.280472) - New Momentum Direction: (0.79436,-0.591819,0.136902) - New Polarization: (-0.606347,-0.758963,0.237315) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1417, parentID 1) is processed with stopping code 2 -### pop requested out of 150 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.889953,-0.403011,0.213462) - Old Polarization: (-0.455986,-0.794353,0.401348) - New Momentum Direction: (0.78598,-0.546346,0.289382) - New Polarization: (-0.618205,-0.700321,0.356895) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1416, parentID 1) is processed with stopping code 2 -### pop requested out of 149 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.56308,0.611333,-0.556068) - Old Polarization: (-0.821242,0.338864,-0.459056) - New Momentum Direction: (0.56308,-0.611333,-0.556068) - New Polarization: (0.821242,0.338864,0.459056) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.56308,-0.611333,-0.556068) - Old Polarization: (0.821242,0.338864,0.459056) - New Momentum Direction: (-0.56308,-0.611333,-0.556068) - New Polarization: (0.821242,-0.338864,-0.459056) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.56308,-0.611333,-0.556068) - Old Polarization: (0.821242,-0.338864,-0.459056) - New Momentum Direction: (-0.56308,-0.611333,0.556068) - New Polarization: (-0.821242,0.338864,-0.459056) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.56308,-0.611333,0.556068) - Old Polarization: (-0.821242,0.338864,-0.459056) - New Momentum Direction: (-0.56308,0.611333,0.556068) - New Polarization: (0.821242,0.338864,0.459056) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.56308,0.611333,0.556068) - Old Polarization: (0.821242,0.338864,0.459056) - New Momentum Direction: (0.56308,0.611333,0.556068) - New Polarization: (0.821242,-0.338864,-0.459056) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.56308,0.611333,0.556068) - Old Polarization: (0.821242,-0.338864,-0.459056) - New Momentum Direction: (0.56308,0.611333,-0.556068) - New Polarization: (-0.821242,0.338864,-0.459056) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.56308,0.611333,-0.556068) - Old Polarization: (-0.821242,0.338864,-0.459056) - New Momentum Direction: (0.56308,-0.611333,-0.556068) - New Polarization: (0.821242,0.338864,0.459056) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.56308,-0.611333,-0.556068) - Old Polarization: (0.821242,0.338864,0.459056) - New Momentum Direction: (-0.56308,-0.611333,-0.556068) - New Polarization: (0.821242,-0.338864,-0.459056) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.56308,-0.611333,-0.556068) - Old Polarization: (0.821242,-0.338864,-0.459056) - New Momentum Direction: (-0.56308,-0.611333,0.556068) - New Polarization: (-0.821242,0.338864,-0.459056) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.56308,-0.611333,0.556068) - Old Polarization: (-0.821242,0.338864,-0.459056) - New Momentum Direction: (-0.56308,0.611333,0.556068) - New Polarization: (0.821242,0.338864,0.459056) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.56308,0.611333,0.556068) - Old Polarization: (0.821242,0.338864,0.459056) - New Momentum Direction: (0.56308,0.611333,0.556068) - New Polarization: (0.821242,-0.338864,-0.459056) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.56308,0.611333,0.556068) - Old Polarization: (0.821242,-0.338864,-0.459056) - New Momentum Direction: (0.56308,0.611333,-0.556068) - New Polarization: (-0.821242,0.338864,-0.459056) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.56308,0.611333,-0.556068) - Old Polarization: (-0.821242,0.338864,-0.459056) - New Momentum Direction: (0.56308,-0.611333,-0.556068) - New Polarization: (0.821242,0.338864,0.459056) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.56308,-0.611333,-0.556068) - Old Polarization: (0.821242,0.338864,0.459056) - New Momentum Direction: (-0.56308,-0.611333,-0.556068) - New Polarization: (0.821242,-0.338864,-0.459056) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.56308,-0.611333,-0.556068) - Old Polarization: (0.821242,-0.338864,-0.459056) - New Momentum Direction: (-0.56308,0.611333,-0.556068) - New Polarization: (-0.821242,-0.338864,0.459056) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.56308,0.611333,-0.556068) - Old Polarization: (-0.821242,-0.338864,0.459056) - New Momentum Direction: (-0.56308,0.611333,0.556068) - New Polarization: (0.821242,0.338864,0.459056) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.56308,0.611333,0.556068) - Old Polarization: (0.821242,0.338864,0.459056) - New Momentum Direction: (-0.56308,-0.611333,0.556068) - New Polarization: (-0.821242,0.338864,-0.459056) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.56308,-0.611333,0.556068) - Old Polarization: (-0.821242,0.338864,-0.459056) - New Momentum Direction: (0.56308,-0.611333,0.556068) - New Polarization: (-0.821242,-0.338864,0.459056) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.56308,-0.611333,0.556068) - Old Polarization: (-0.821242,-0.338864,0.459056) - New Momentum Direction: (0.56308,-0.611333,-0.556068) - New Polarization: (0.821242,0.338864,0.459056) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.56308,-0.611333,-0.556068) - Old Polarization: (0.821242,0.338864,0.459056) - New Momentum Direction: (0.56308,0.611333,-0.556068) - New Polarization: (-0.821242,0.338864,-0.459056) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.56308,0.611333,-0.556068) - Old Polarization: (-0.821242,0.338864,-0.459056) - New Momentum Direction: (-0.56308,0.611333,-0.556068) - New Polarization: (-0.821242,-0.338864,0.459056) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.56308,0.611333,-0.556068) - Old Polarization: (-0.821242,-0.338864,0.459056) - New Momentum Direction: (-0.56308,0.611333,0.556068) - New Polarization: (0.821242,0.338864,0.459056) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.56308,0.611333,0.556068) - Old Polarization: (0.821242,0.338864,0.459056) - New Momentum Direction: (-0.56308,0.611333,-0.556068) - New Polarization: (-0.821242,-0.338864,0.459056) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.56308,0.611333,-0.556068) - Old Polarization: (-0.821242,-0.338864,0.459056) - New Momentum Direction: (-0.56308,-0.611333,-0.556068) - New Polarization: (0.821242,-0.338864,-0.459056) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.56308,-0.611333,-0.556068) - Old Polarization: (0.821242,-0.338864,-0.459056) - New Momentum Direction: (-0.56308,-0.611333,0.556068) - New Polarization: (-0.821242,0.338864,-0.459056) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.56308,-0.611333,0.556068) - Old Polarization: (-0.821242,0.338864,-0.459056) - New Momentum Direction: (0.56308,-0.611333,0.556068) - New Polarization: (-0.821242,-0.338864,0.459056) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.56308,-0.611333,0.556068) - Old Polarization: (-0.821242,-0.338864,0.459056) - New Momentum Direction: (0.56308,0.611333,0.556068) - New Polarization: (0.821242,-0.338864,-0.459056) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1415, parentID 1) is processed with stopping code 2 -### pop requested out of 148 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1414, parentID 1) is processed with stopping code 2 -### pop requested out of 147 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.788016,0.199458,0.58245) - Old Polarization: (-0.569664,-0.122561,0.812688) - New Momentum Direction: (0.550746,0.270414,0.789655) - New Polarization: (-0.80238,-0.0890833,0.590127) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1413, parentID 1) is processed with stopping code 2 -### pop requested out of 146 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.872458,-0.481251,-0.0849411) - Old Polarization: (-0.476726,-0.876368,0.0686375) - New Momentum Direction: (0.747164,-0.654523,-0.115524) - New Polarization: (-0.656097,-0.754112,0.0291786) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1412, parentID 1) is processed with stopping code 2 -### pop requested out of 145 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.554456,0.73528,-0.389797) - Old Polarization: (-0.832087,0.48166,-0.275017) - New Momentum Direction: (0.74811,0.40462,-0.525941) - New Polarization: (-0.04652,-0.758658,-0.649826) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1411, parentID 1) is processed with stopping code 2 -### pop requested out of 144 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.558122,0.688517,-0.46308) - Old Polarization: (-0.82839,0.430312,-0.358611) - New Momentum Direction: (0.558122,-0.688517,-0.46308) - New Polarization: (0.342362,-0.317285,0.884375) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.558122,-0.688517,-0.46308) - Old Polarization: (0.342362,-0.317285,0.884375) - New Momentum Direction: (-0.558122,-0.688517,-0.46308) - New Polarization: (0.342362,0.317285,-0.884375) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.558122,-0.688517,-0.46308) - Old Polarization: (0.342362,0.317285,-0.884375) - New Momentum Direction: (-0.558122,-0.688517,0.46308) - New Polarization: (-0.342362,-0.317285,-0.884375) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.558122,-0.688517,0.46308) - Old Polarization: (-0.342362,-0.317285,-0.884375) - New Momentum Direction: (-0.752287,-0.210862,0.624181) - New Polarization: (-0.605293,0.595317,-0.528411) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1410, parentID 1) is processed with stopping code 2 -### pop requested out of 143 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1409, parentID 1) is processed with stopping code 2 ### pop requested out of 142 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1408, parentID 1) is processed with stopping code 2 +Track (trackID 1200, parentID 1) is processed with stopping code 2 ### pop requested out of 141 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.687616,0.557005,0.465757) - Old Polarization: (-0.681391,0.273478,0.678908) - New Momentum Direction: (0.160463,0.757205,0.63316) - New Polarization: (-0.963194,-0.0200305,0.268059) + Old Momentum Direction: (0.47276,0.27361,-0.83764) + Old Polarization: (-0.87632,0.046212,-0.4795) + New Momentum Direction: (0.64283,0.37203,-0.6696) + New Polarization: (0.3592,0.62567,0.69247) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1407, parentID 1) is processed with stopping code 2 +Track (trackID 1199, parentID 1) is processed with stopping code 2 ### pop requested out of 140 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.887124,-0.44676,0.11583) - Old Polarization: (-0.460358,-0.838664,0.291056) - New Momentum Direction: (0.778613,-0.607422,0.157484) - New Polarization: (-0.626674,-0.739784,0.244948) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1406, parentID 1) is processed with stopping code 2 -### pop requested out of 139 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.626194,0.731858,0.268821) - Old Polarization: (-0.750188,0.471658,0.463419) - New Momentum Direction: (0.848574,0.383688,0.364287) - New Polarization: (0.0624928,-0.756402,0.651115) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1405, parentID 1) is processed with stopping code 2 -### pop requested out of 138 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.677656,0.591281,0.437229) - Old Polarization: (-0.692616,0.313388,0.649671) - New Momentum Direction: (-0.677656,0.591281,0.437229) - New Polarization: (-0.682117,-0.283249,-0.674156) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.677656,0.591281,0.437229) - Old Polarization: (-0.682117,-0.283249,-0.674156) - New Momentum Direction: (-0.677656,-0.591281,0.437229) - New Polarization: (0.682117,-0.283249,0.674156) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.677656,-0.591281,0.437229) - Old Polarization: (0.682117,-0.283249,0.674156) - New Momentum Direction: (-0.677656,-0.591281,-0.437229) - New Polarization: (-0.682117,0.283249,0.674156) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.677656,-0.591281,-0.437229) - Old Polarization: (-0.682117,0.283249,0.674156) - New Momentum Direction: (0.677656,-0.591281,-0.437229) - New Polarization: (0.669401,0.742127,0.0338916) - *** FresnelReflection *** -No Absorbtion length specified ** Photon Absorbed! ** -Track (trackID 1404, parentID 1) is processed with stopping code 2 +Track (trackID 1198, parentID 1) is processed with stopping code 2 +### pop requested out of 139 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1197, parentID 1) is processed with stopping code 2 +### pop requested out of 138 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1196, parentID 1) is processed with stopping code 2 ### pop requested out of 137 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.582223,0.812652,0.0247362) - Old Polarization: (-0.800537,0.5677,0.19198) - New Momentum Direction: (0.786134,0.617153,0.0333994) - New Polarization: (0.601489,-0.776371,0.188308) + Old Momentum Direction: (0.52256,0.74156,-0.42073) + Old Polarization: (-0.82291,0.56777,-0.021345) + New Momentum Direction: (0.70804,0.41679,-0.57006) + New Polarization: (0.052359,-0.83602,-0.5462) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1403, parentID 1) is processed with stopping code 2 +Track (trackID 1195, parentID 1) is processed with stopping code 2 ### pop requested out of 136 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.703507,-0.0569329,-0.708404) - Old Polarization: (-0.663883,-0.408403,-0.626471) - New Momentum Direction: (0.953795,-0.0771881,-0.290374) - New Polarization: (0.248472,-0.34073,0.906733) + Old Momentum Direction: (0.55735,-0.14249,-0.81796) + Old Polarization: (-0.78398,-0.41468,-0.46197) + New Momentum Direction: (0.7557,-0.1932,-0.62577) + New Polarization: (0.42135,-0.58806,0.6904) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1402, parentID 1) is processed with stopping code 2 +Track (trackID 1194, parentID 1) is processed with stopping code 2 ### pop requested out of 135 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.890387,-0.450537,0.0650127) - Old Polarization: (-0.452264,-0.859364,0.238643) - New Momentum Direction: (0.790514,-0.606166,0.08747) - New Polarization: (-0.610325,-0.767832,0.194777) + Old Momentum Direction: (0.72821,0.66059,0.18258) + Old Polarization: (-0.59436,0.47606,0.64815) + New Momentum Direction: (0.36807,0.8962,0.2477) + New Polarization: (-0.86826,0.23598,0.43639) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1401, parentID 1) is processed with stopping code 2 +Track (trackID 1193, parentID 1) is processed with stopping code 2 ### pop requested out of 134 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1400, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.84743,-0.51389,-0.13336) + Old Polarization: (-0.45988,-0.83603,0.29926) + New Momentum Direction: (0.6983,-0.69286,-0.17981) + New Polarization: (-0.66095,-0.72055,0.20964) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1192, parentID 1) is processed with stopping code 2 ### pop requested out of 133 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1399, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.5226,-0.0038009,-0.85257) + Old Polarization: (-0.82345,-0.26138,-0.50359) + New Momentum Direction: (0.70714,-0.005143,-0.70705) + New Polarization: (0.69196,-0.20058,0.69351) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1191, parentID 1) is processed with stopping code 2 ### pop requested out of 132 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.778066,0.233337,0.583238) - Old Polarization: (-0.581133,-0.0851835,0.809338) - New Momentum Direction: (0.520534,0.317158,0.792752) - New Polarization: (-0.8213,-0.0678962,0.566443) + Old Momentum Direction: (0.48251,0.19357,-0.85423) + Old Polarization: (-0.86583,-0.04199,-0.49858) + New Momentum Direction: (0.65576,0.26308,-0.70765) + New Polarization: (0.56559,0.44968,0.6913) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1398, parentID 1) is processed with stopping code 2 +Track (trackID 1190, parentID 1) is processed with stopping code 2 ### pop requested out of 131 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.704825,0.500748,0.502467) - Old Polarization: (-0.662306,0.210785,0.718972) - New Momentum Direction: (0.263121,0.681021,0.683358) - New Polarization: (-0.936964,0.0115758,0.349233) + Old Momentum Direction: (0.70776,0.69275,0.13847) + Old Polarization: (-0.61705,0.51076,0.59864) + New Momentum Direction: (0.28316,0.94047,0.18798) + New Polarization: (-0.90223,0.19473,0.38478) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1397, parentID 1) is processed with stopping code 2 +Track (trackID 1189, parentID 1) is processed with stopping code 2 ### pop requested out of 130 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.703018,0.515666,0.489748) - Old Polarization: (-0.664472,0.230846,0.710765) - New Momentum Direction: (0.268764,0.698415,0.663312) - New Polarization: (-0.935291,0.0246415,0.353021) + Old Momentum Direction: (0.84156,0.38354,0.38036) + Old Polarization: (-0.46878,0.16874,0.86705) + New Momentum Direction: (0.68022,0.52047,0.51615) + New Polarization: (-0.67857,0.18082,0.71194) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1396, parentID 1) is processed with stopping code 2 +Track (trackID 1188, parentID 1) is processed with stopping code 2 ### pop requested out of 129 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1395, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.73574,0.64958,0.19166) + Old Polarization: (-0.58571,0.46817,0.66164) + New Momentum Direction: (0.40167,0.87835,0.25916) + New Polarization: (-0.85226,0.25498,0.45676) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1187, parentID 1) is processed with stopping code 2 ### pop requested out of 128 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.685184,0.582075,0.437848) - Old Polarization: (-0.684869,0.310229,0.659327) - New Momentum Direction: (0.190882,0.784454,0.590081) - New Polarization: (-0.957218,0.015568,0.288949) - *** FresnelRefraction *** + Old Momentum Direction: (0.50937,0.70481,-0.49374) + Old Polarization: (-0.83956,0.53295,-0.10536) + New Momentum Direction: (0.50937,-0.70481,-0.49374) + New Polarization: (0.3293,-0.37044,0.86852) + *** FresnelReflection *** No Absorbtion length specified -Track (trackID 1394, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.50937,-0.70481,-0.49374) + Old Polarization: (0.3293,-0.37044,0.86852) + New Momentum Direction: (-0.50937,-0.70481,-0.49374) + New Polarization: (0.3293,0.37044,-0.86852) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.50937,-0.70481,-0.49374) + Old Polarization: (0.3293,0.37044,-0.86852) + New Momentum Direction: (-0.50937,-0.70481,0.49374) + New Polarization: (-0.3293,-0.37044,-0.86852) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1186, parentID 1) is processed with stopping code 2 ### pop requested out of 127 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.764494,-0.247381,-0.595274) - Old Polarization: (-0.595484,-0.624662,-0.50517) - New Momentum Direction: (0.491766,-0.334147,-0.80406) - New Polarization: (-0.836792,-0.436653,-0.330323) + Old Momentum Direction: (0.92255,-0.068907,0.37967) + Old Polarization: (-0.38011,-0.33165,0.86344) + New Momentum Direction: (0.85133,-0.093687,0.5162) + New Polarization: (-0.52046,-0.27474,0.80848) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1393, parentID 1) is processed with stopping code 2 +Track (trackID 1185, parentID 1) is processed with stopping code 2 ### pop requested out of 126 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1392, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.60944,-0.27499,-0.74362) + Old Polarization: (-0.72736,-0.56714,-0.38639) + New Momentum Direction: (0.60944,-0.27499,0.74362) + New Polarization: (0.25918,0.95549,0.14093) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.60944,-0.27499,0.74362) + Old Polarization: (0.25918,0.95549,0.14093) + New Momentum Direction: (-0.60944,-0.27499,0.74362) + New Polarization: (0.25918,-0.95549,-0.14093) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.60944,-0.27499,0.74362) + Old Polarization: (0.25918,-0.95549,-0.14093) + New Momentum Direction: (-0.60944,0.27499,0.74362) + New Polarization: (-0.25918,-0.95549,0.14093) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.60944,0.27499,0.74362) + Old Polarization: (-0.25918,-0.95549,0.14093) + New Momentum Direction: (-0.82194,0.37087,0.43228) + New Polarization: (-0.51057,-0.81614,-0.27061) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1184, parentID 1) is processed with stopping code 2 ### pop requested out of 125 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1391, parentID 1) is processed with stopping code 2 +Scattering Photon! +Old Momentum Direction: (0.48428,0.62167,-0.61563) +Old Polarization: (-0.86667,0.43723,-0.24024) +New Polarization: (-0.56078,0.56084,-0.39228) +Polarization Change: (-0.63378,0.63385,-0.44335) +New Momentum Direction: (-0.28033,-0.68552,-0.57934) +Momentum Change: (-0.29813,-0.72905,-0.61612) +Scattering Photon! +Old Momentum Direction: (-0.29813,-0.72905,-0.61612) +Old Polarization: (-0.63378,0.63385,-0.44335) +New Polarization: (-0.17093,0.77145,-0.3622) +Polarization Change: (-0.19664,0.88752,-0.4167) +New Momentum Direction: (0.020688,-0.36576,-0.78878) +Momentum Change: (0.023787,-0.42055,-0.90696) + Photon at Boundary! + Old Momentum Direction: (0.023787,-0.42055,-0.90696) + Old Polarization: (-0.19664,0.88752,-0.4167) + New Momentum Direction: (0.032158,-0.56855,-0.82202) + New Polarization: (-0.060787,-0.82204,0.56618) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1183, parentID 1) is processed with stopping code 2 ### pop requested out of 124 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1390, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.49998,0.70288,-0.50595) + Old Polarization: (-0.84645,0.52017,-0.11382) + New Momentum Direction: (0.67963,0.25515,-0.68775) + New Polarization: (-0.20956,-0.83095,-0.51537) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1182, parentID 1) is processed with stopping code 2 ### pop requested out of 123 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.888517,-0.433685,0.149849) - Old Polarization: (-0.458446,-0.825486,0.329242) - New Momentum Direction: (0.781979,-0.589129,0.203558) - New Polarization: (-0.623023,-0.728955,0.283665) - *** FresnelRefraction *** + Old Momentum Direction: (0.48602,0.62257,-0.61335) + Old Polarization: (-0.86552,0.44009,-0.23915) + New Momentum Direction: (0.48602,-0.62257,-0.61335) + New Polarization: (0.86552,0.44009,0.23915) + *** TotalInternalReflection *** No Absorbtion length specified -Track (trackID 1389, parentID 1) is processed with stopping code 2 -### pop requested out of 122 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.553352,0.717901,-0.422398) - Old Polarization: (-0.832458,0.459255,-0.309999) - New Momentum Direction: (0.748137,0.337865,-0.571086) - New Polarization: (-0.151861,-0.750633,-0.643031) - *** FresnelRefraction *** + Old Momentum Direction: (0.48602,-0.62257,-0.61335) + Old Polarization: (0.86552,0.44009,0.23915) + New Momentum Direction: (0.48602,-0.62257,0.61335) + New Polarization: (-0.86552,-0.44009,0.23915) + *** TotalInternalReflection *** No Absorbtion length specified -Track (trackID 1388, parentID 1) is processed with stopping code 2 + +** Photon Absorbed! ** +Track (trackID 1181, parentID 1) is processed with stopping code 2 +### pop requested out of 122 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1180, parentID 1) is processed with stopping code 2 ### pop requested out of 121 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.878183,-0.283816,0.385023) - Old Polarization: (-0.470513,-0.657439,0.58855) - New Momentum Direction: (0.759293,-0.386125,0.523815) - New Polarization: (-0.645191,-0.551659,0.528583) + Old Momentum Direction: (0.92357,-0.079367,0.37513) + Old Polarization: (-0.3786,-0.34355,0.85944) + New Momentum Direction: (0.85358,-0.10783,0.50968) + New Polarization: (-0.51746,-0.28873,0.80552) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1387, parentID 1) is processed with stopping code 2 +Track (trackID 1179, parentID 1) is processed with stopping code 2 ### pop requested out of 120 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.66332,0.628179,0.406691) -Old Polarization: (-0.708196,0.351349,0.612383) -New Polarization: (-0.661262,0.0989228,0.614537) -Polarization Change: (-0.728154,0.10893,0.676702) -New Momentum Direction: (-0.59987,-0.418068,-0.804891) -Momentum Change: (-0.551647,-0.38446,-0.740187) Photon at Boundary! - Old Momentum Direction: (-0.551647,-0.38446,-0.740187) - Old Polarization: (-0.728154,0.10893,0.676702) - New Momentum Direction: (-0.551647,-0.38446,0.740187) - New Polarization: (0.80111,-0.491258,0.341888) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.551647,-0.38446,0.740187) - Old Polarization: (0.80111,-0.491258,0.341888) - New Momentum Direction: (0.551647,-0.38446,0.740187) - New Polarization: (0.80111,0.491258,-0.341888) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.551647,-0.38446,0.740187) - Old Polarization: (0.80111,0.491258,-0.341888) - New Momentum Direction: (0.551647,0.38446,0.740187) - New Polarization: (-0.80111,0.491258,0.341888) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.551647,0.38446,0.740187) - Old Polarization: (-0.80111,0.491258,0.341888) - New Momentum Direction: (0.750589,0.523109,0.4037) - New Polarization: (-0.210775,0.768583,-0.604031) + Old Momentum Direction: (0.77371,0.5691,0.2784) + Old Polarization: (-0.54433,0.37229,0.75174) + New Momentum Direction: (0.508,0.77374,0.3785) + New Polarization: (-0.79664,0.25492,0.54807) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1386, parentID 1) is processed with stopping code 2 +Track (trackID 1178, parentID 1) is processed with stopping code 2 ### pop requested out of 119 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.581442,0.813277,0.0224803) - Old Polarization: (-0.80124,0.567604,0.189313) - New Momentum Direction: (0.785463,0.618163,0.0303684) - New Polarization: (0.603788,-0.776131,0.181824) + Old Momentum Direction: (0.78519,0.54168,0.30011) + Old Polarization: (-0.53178,0.34147,0.77499) + New Momentum Direction: (0.53885,0.73687,0.40825) + New Polarization: (-0.77822,0.2499,0.57612) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1385, parentID 1) is processed with stopping code 2 +Track (trackID 1177, parentID 1) is processed with stopping code 2 ### pop requested out of 118 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.855771,-0.469208,-0.217945) - Old Polarization: (-0.494676,-0.865468,-0.079126) - New Momentum Direction: (0.71164,-0.637163,-0.29596) - New Polarization: (-0.686235,-0.720675,-0.0985414) + Old Momentum Direction: (0.55553,0.77218,-0.30844) + Old Polarization: (-0.78755,0.60762,0.10273) + New Momentum Direction: (0.75,0.51391,-0.41642) + New Polarization: (0.3381,-0.83896,-0.42642) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1384, parentID 1) is processed with stopping code 2 +Track (trackID 1176, parentID 1) is processed with stopping code 2 ### pop requested out of 117 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.566028,0.579344,-0.586492) - Old Polarization: (-0.817315,0.301387,-0.491083) - New Momentum Direction: (0.566028,0.579344,0.586492) - New Polarization: (0.817315,-0.301387,-0.491083) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.566028,0.579344,0.586492) - Old Polarization: (0.817315,-0.301387,-0.491083) - New Momentum Direction: (0.566028,-0.579344,0.586492) - New Polarization: (-0.817315,-0.301387,0.491083) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.566028,-0.579344,0.586492) - Old Polarization: (-0.817315,-0.301387,0.491083) - New Momentum Direction: (-0.566028,-0.579344,0.586492) - New Polarization: (-0.817315,0.301387,-0.491083) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.566028,-0.579344,0.586492) - Old Polarization: (-0.817315,0.301387,-0.491083) - New Momentum Direction: (-0.566028,-0.579344,-0.586492) - New Polarization: (0.817315,-0.301387,-0.491083) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.566028,-0.579344,-0.586492) - Old Polarization: (0.817315,-0.301387,-0.491083) - New Momentum Direction: (-0.566028,0.579344,-0.586492) - New Polarization: (-0.817315,-0.301387,0.491083) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.566028,0.579344,-0.586492) - Old Polarization: (-0.817315,-0.301387,0.491083) - New Momentum Direction: (0.566028,0.579344,-0.586492) - New Polarization: (-0.817315,0.301387,-0.491083) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.566028,0.579344,-0.586492) - Old Polarization: (-0.817315,0.301387,-0.491083) - New Momentum Direction: (0.566028,0.579344,0.586492) - New Polarization: (0.817315,-0.301387,-0.491083) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.566028,0.579344,0.586492) - Old Polarization: (0.817315,-0.301387,-0.491083) - New Momentum Direction: (0.566028,-0.579344,0.586492) - New Polarization: (-0.817315,-0.301387,0.491083) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.566028,-0.579344,0.586492) - Old Polarization: (-0.817315,-0.301387,0.491083) - New Momentum Direction: (-0.566028,-0.579344,0.586492) - New Polarization: (-0.817315,0.301387,-0.491083) - *** TotalInternalReflection *** -No Absorbtion length specified ** Photon Absorbed! ** -Track (trackID 1383, parentID 1) is processed with stopping code 2 +Track (trackID 1175, parentID 1) is processed with stopping code 2 ### pop requested out of 116 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.835296,-0.0252763,0.549219) - Old Polarization: (-0.517892,-0.371534,0.770552) - New Momentum Direction: (0.663903,-0.03438,0.747028) - New Polarization: (-0.724969,-0.27464,0.631659) + Old Momentum Direction: (0.85506,-0.51075,-0.089463) + Old Polarization: (-0.45413,-0.82092,0.34621) + New Momentum Direction: (0.71,-0.69364,-0.1215) + New Polarization: (-0.65506,-0.71387,0.24754) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1382, parentID 1) is processed with stopping code 2 +Track (trackID 1174, parentID 1) is processed with stopping code 2 ### pop requested out of 115 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.884482,-0.312085,0.346834) - Old Polarization: (-0.461473,-0.694771,0.551667) - New Momentum Direction: (0.775315,-0.422452,0.46949) - New Polarization: (-0.627924,-0.595411,0.501196) + Old Momentum Direction: (0.86024,0.3119,0.40338) + Old Polarization: (-0.44898,0.08836,0.88916) + New Momentum Direction: (0.72049,0.42418,0.5486) + New Polarization: (-0.6471,0.12684,0.75178) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1381, parentID 1) is processed with stopping code 2 +Track (trackID 1173, parentID 1) is processed with stopping code 2 ### pop requested out of 114 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.888123,-0.397769,0.230255) - Old Polarization: (-0.459379,-0.78396,0.417585) - New Momentum Direction: (0.780563,-0.540978,0.313153) - New Polarization: (-0.624918,-0.686697,0.371384) + Old Momentum Direction: (0.79019,0.53195,0.30434) + Old Polarization: (-0.52572,0.33312,0.78272) + New Momentum Direction: (0.55521,0.72191,0.41302) + New Polarization: (-0.76717,0.25271,0.58957) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1380, parentID 1) is processed with stopping code 2 +Track (trackID 1172, parentID 1) is processed with stopping code 2 ### pop requested out of 113 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.589396,0.445636,-0.673811) - Old Polarization: (-0.791825,0.153404,-0.591169) - New Momentum Direction: (0.589396,0.445636,0.673811) - New Polarization: (-0.0478909,-0.813343,0.57981) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.589396,0.445636,0.673811) - Old Polarization: (-0.0478909,-0.813343,0.57981) - New Momentum Direction: (-0.589396,0.445636,0.673811) - New Polarization: (-0.0478909,0.813343,-0.57981) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.589396,0.445636,0.673811) - Old Polarization: (-0.0478909,0.813343,-0.57981) - New Momentum Direction: (-0.589396,-0.445636,0.673811) - New Polarization: (0.0478909,0.813343,0.57981) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.589396,-0.445636,0.673811) - Old Polarization: (0.0478909,0.813343,0.57981) - New Momentum Direction: (-0.589396,-0.445636,-0.673811) - New Polarization: (0.798922,-0.197918,-0.567937) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.589396,-0.445636,-0.673811) - Old Polarization: (0.798922,-0.197918,-0.567937) - New Momentum Direction: (0.589396,-0.445636,-0.673811) - New Polarization: (0.798922,0.197918,0.567937) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.589396,-0.445636,-0.673811) - Old Polarization: (0.798922,0.197918,0.567937) - New Momentum Direction: (0.589396,0.445636,-0.673811) - New Polarization: (-0.798922,0.197918,-0.567937) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.589396,0.445636,-0.673811) - Old Polarization: (-0.798922,0.197918,-0.567937) - New Momentum Direction: (0.589396,0.445636,0.673811) - New Polarization: (-0.00650438,-0.83144,0.555576) - *** FresnelReflection *** -No Absorbtion length specified -Scattering Photon! -Old Momentum Direction: (0.589396,0.445636,0.673811) -Old Polarization: (-0.00650438,-0.83144,0.555576) -New Polarization: (-0.0373808,-0.833798,0.499563) -Polarization Change: (-0.0384292,-0.857184,0.513575) -New Momentum Direction: (-0.327262,0.483372,0.842724) -Momentum Change: (-0.319234,0.471513,0.822049) - Photon at Boundary! - Old Momentum Direction: (-0.319234,0.471513,0.822049) - Old Polarization: (-0.0384292,-0.857184,0.513575) - New Momentum Direction: (-0.43186,0.637865,0.637672) - New Polarization: (-0.652729,0.266887,-0.709025) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1379, parentID 1) is processed with stopping code 2 -### pop requested out of 112 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1378, parentID 1) is processed with stopping code 2 +Track (trackID 1171, parentID 1) is processed with stopping code 2 +### pop requested out of 112 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.48262,0.61394,-0.62463) + Old Polarization: (-0.86838,0.42826,-0.25002) + New Momentum Direction: (0.48262,0.61394,0.62463) + New Polarization: (0.86838,-0.42826,-0.25002) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.48262,0.61394,0.62463) + Old Polarization: (0.86838,-0.42826,-0.25002) + New Momentum Direction: (0.48262,-0.61394,0.62463) + New Polarization: (-0.86838,-0.42826,0.25002) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1170, parentID 1) is processed with stopping code 2 ### pop requested out of 111 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.703059,0.528018,0.476347) - Old Polarization: (-0.664717,0.249919,0.704053) - New Momentum Direction: (-0.703059,0.528018,0.476347) - New Polarization: (-0.581966,-0.0422478,-0.812115) - *** FresnelReflection *** + Old Momentum Direction: (0.66174,0.74939,0.02263) + Old Polarization: (-0.66812,0.57575,0.47131) + New Momentum Direction: (0.89704,0.44088,0.030677) + New Polarization: (0.39852,-0.83695,0.37511) + *** FresnelRefraction *** No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1377, parentID 1) is processed with stopping code 2 +Track (trackID 1169, parentID 1) is processed with stopping code 2 ### pop requested out of 110 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.818876,0.0821463,0.568061) - Old Polarization: (-0.533812,-0.254693,0.806335) - New Momentum Direction: (0.633681,0.110717,0.765631) - New Polarization: (-0.744499,-0.181595,0.642452) + Old Momentum Direction: (0.85149,0.36337,0.37806) + Old Polarization: (-0.45443,0.1516,0.87779) + New Momentum Direction: (0.70885,0.48878,0.50855) + New Polarization: (-0.6511,0.17612,0.73827) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1376, parentID 1) is processed with stopping code 2 +Track (trackID 1168, parentID 1) is processed with stopping code 2 ### pop requested out of 109 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.652484,0.667523,0.358717) - Old Polarization: (-0.721031,0.401197,0.564938) - New Momentum Direction: (0.652484,-0.667523,0.358717) - New Polarization: (0.721031,0.401197,-0.564938) + Old Momentum Direction: (0.67299,-0.41383,-0.61305) + Old Polarization: (-0.65568,-0.71736,-0.23555) + New Momentum Direction: (-0.67299,-0.41383,-0.61305) + New Polarization: (-0.65568,0.71736,0.23555) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (0.652484,-0.667523,0.358717) - Old Polarization: (0.721031,0.401197,-0.564938) - New Momentum Direction: (-0.652484,-0.667523,0.358717) - New Polarization: (0.721031,-0.401197,0.564938) + Old Momentum Direction: (-0.67299,-0.41383,-0.61305) + Old Polarization: (-0.65568,0.71736,0.23555) + New Momentum Direction: (-0.67299,-0.41383,0.61305) + New Polarization: (0.65568,-0.71736,0.23555) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (-0.652484,-0.667523,0.358717) - Old Polarization: (0.721031,-0.401197,0.564938) - New Momentum Direction: (-0.652484,-0.667523,-0.358717) - New Polarization: (-0.721031,0.401197,0.564938) + Old Momentum Direction: (-0.67299,-0.41383,0.61305) + Old Polarization: (0.65568,-0.71736,0.23555) + New Momentum Direction: (-0.67299,0.41383,0.61305) + New Polarization: (-0.65568,-0.71736,-0.23555) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (-0.652484,-0.667523,-0.358717) - Old Polarization: (-0.721031,0.401197,0.564938) - New Momentum Direction: (-0.652484,0.667523,-0.358717) - New Polarization: (0.721031,0.401197,-0.564938) + Old Momentum Direction: (-0.67299,0.41383,0.61305) + Old Polarization: (-0.65568,-0.71736,-0.23555) + New Momentum Direction: (0.67299,0.41383,0.61305) + New Polarization: (-0.65568,0.71736,0.23555) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (-0.652484,0.667523,-0.358717) - Old Polarization: (0.721031,0.401197,-0.564938) - New Momentum Direction: (0.652484,0.667523,-0.358717) - New Polarization: (0.721031,-0.401197,0.564938) + Old Momentum Direction: (0.67299,0.41383,0.61305) + Old Polarization: (-0.65568,0.71736,0.23555) + New Momentum Direction: (0.67299,0.41383,-0.61305) + New Polarization: (0.65568,-0.71736,0.23555) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.67299,0.41383,-0.61305) + Old Polarization: (0.65568,-0.71736,0.23555) + New Momentum Direction: (0.67299,-0.41383,-0.61305) + New Polarization: (-0.65568,-0.71736,-0.23555) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.67299,-0.41383,-0.61305) + Old Polarization: (-0.65568,-0.71736,-0.23555) + New Momentum Direction: (-0.67299,-0.41383,-0.61305) + New Polarization: (-0.65568,0.71736,0.23555) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.67299,-0.41383,-0.61305) + Old Polarization: (-0.65568,0.71736,0.23555) + New Momentum Direction: (-0.67299,-0.41383,0.61305) + New Polarization: (0.65568,-0.71736,0.23555) *** TotalInternalReflection *** No Absorbtion length specified ** Photon Absorbed! ** -Track (trackID 1375, parentID 1) is processed with stopping code 2 +Track (trackID 1167, parentID 1) is processed with stopping code 2 ### pop requested out of 108 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1374, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.58718,0.78798,-0.18522) + Old Polarization: (-0.75045,0.6157,0.24029) + New Momentum Direction: (0.79739,0.54855,-0.25153) + New Polarization: (0.52385,-0.83612,-0.16276) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1166, parentID 1) is processed with stopping code 2 ### pop requested out of 107 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.590506,0.80166,0.0929754) - Old Polarization: (-0.790342,0.551134,0.267602) - New Momentum Direction: (0.799417,0.587443,0.125868) - New Polarization: (0.512222,-0.775938,0.368169) + Old Momentum Direction: (0.75053,0.61901,0.23135) + Old Polarization: (-0.56975,0.42876,0.70111) + New Momentum Direction: (0.44116,0.84063,0.31418) + New Polarization: (-0.83327,0.25371,0.49122) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1373, parentID 1) is processed with stopping code 2 +Track (trackID 1165, parentID 1) is processed with stopping code 2 ### pop requested out of 106 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.853503,-0.102623,0.510883) - Old Polarization: (-0.495955,-0.460792,0.736002) - New Momentum Direction: (0.709216,-0.138841,0.691185) - New Polarization: (-0.686787,-0.357426,0.632906) + Old Momentum Direction: (0.63463,0.77167,-0.042098) + Old Polarization: (-0.69776,0.59556,0.39805) + New Momentum Direction: (0.86297,0.50201,-0.057244) + New Polarization: (0.50154,-0.83736,0.21748) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1372, parentID 1) is processed with stopping code 2 +Track (trackID 1164, parentID 1) is processed with stopping code 2 ### pop requested out of 105 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.59927,0.783327,0.165149) - Old Polarization: (-0.779088,0.523216,0.34535) - New Momentum Direction: (0.815238,0.533772,0.224666) - New Polarization: (0.362119,-0.772581,0.521525) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1371, parentID 1) is processed with stopping code 2 -### pop requested out of 104 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.86806,-0.480103,-0.126379) - Old Polarization: (-0.481329,-0.876247,0.0226826) - New Momentum Direction: (0.738072,-0.652495,-0.171759) - New Polarization: (-0.663887,-0.747732,-0.0122538) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1370, parentID 1) is processed with stopping code 2 -### pop requested out of 103 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.591402,0.436657,-0.67792) - Old Polarization: (-0.789719,0.14363,-0.596418) - New Momentum Direction: (0.591402,0.436657,0.67792) - New Polarization: (-0.015968,-0.834191,0.551244) + Old Momentum Direction: (0.81946,0.45338,0.35063) + Old Polarization: (-0.49323,0.24625,0.83432) + New Momentum Direction: (-0.81946,0.45338,0.35063) + New Polarization: (0.069535,0.68589,-0.72437) *** FresnelReflection *** No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1369, parentID 1) is processed with stopping code 2 -### pop requested out of 102 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.69471,-0.0188942,-0.719042) - Old Polarization: (-0.673813,-0.366904,-0.641371) - New Momentum Direction: (0.940082,-0.0255677,-0.339987) - New Polarization: (0.32028,-0.27568,0.906323) + Old Momentum Direction: (-0.81946,0.45338,0.35063) + Old Polarization: (0.069535,0.68589,-0.72437) + New Momentum Direction: (-0.81946,-0.45338,0.35063) + New Polarization: (-0.069535,0.68589,0.72437) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.81946,-0.45338,0.35063) + Old Polarization: (-0.069535,0.68589,0.72437) + New Momentum Direction: (-0.81946,-0.45338,-0.35063) + New Polarization: (0.069535,-0.68589,0.72437) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.81946,-0.45338,-0.35063) + Old Polarization: (0.069535,-0.68589,0.72437) + New Momentum Direction: (-0.62872,-0.61514,-0.47573) + New Polarization: (0.13225,-0.68744,0.7141) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1368, parentID 1) is processed with stopping code 2 -### pop requested out of 101 stacked tracks. +Track (trackID 1163, parentID 1) is processed with stopping code 2 +### pop requested out of 104 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.91137,0.053506,0.40809) + Old Polarization: (-0.391,-0.19709,0.89904) + New Momentum Direction: (0.8298,0.072549,0.55333) + New Polarization: (-0.54277,-0.1256,0.83043) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1162, parentID 1) is processed with stopping code 2 +### pop requested out of 103 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.72452,-0.48069,-0.49397) + Old Polarization: (-0.59822,-0.79452,-0.10428) + New Momentum Direction: (0.3629,-0.64986,-0.66782) + New Polarization: (-0.87014,-0.49276,0.0066634) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1161, parentID 1) is processed with stopping code 2 +### pop requested out of 102 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.46392,0.46856,-0.75182) +Old Polarization: (-0.88573,0.26076,-0.38404) +New Polarization: (-0.8328,-0.16135,0.21381) +Polarization Change: (-0.95197,-0.18443,0.2444) +New Momentum Direction: (0.079966,0.54651,0.72389) +Momentum Change: (0.087822,0.60021,0.79501) ** Photon Absorbed! ** -Track (trackID 1367, parentID 1) is processed with stopping code 2 +Track (trackID 1160, parentID 1) is processed with stopping code 2 +### pop requested out of 101 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.82694,-0.52505,-0.20124) + Old Polarization: (-0.4833,-0.84661,0.22289) + New Momentum Direction: (0.65106,-0.70875,-0.27165) + New Polarization: (-0.6985,-0.69951,0.15094) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1159, parentID 1) is processed with stopping code 2 ### pop requested out of 100 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.865073,-0.166161,0.473327) - Old Polarization: (-0.482678,-0.532709,0.695157) - New Momentum Direction: (0.734973,-0.224607,0.639818) - New Polarization: (-0.664362,-0.427459,0.613108) + Old Momentum Direction: (0.91852,-0.3377,0.20563) + Old Polarization: (-0.38307,-0.63134,0.67429) + New Momentum Direction: (0.84415,-0.45789,0.27882) + New Polarization: (-0.52706,-0.6137,0.58786) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1366, parentID 1) is processed with stopping code 2 +Track (trackID 1158, parentID 1) is processed with stopping code 2 ### pop requested out of 99 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1365, parentID 1) is processed with stopping code 2 +Track (trackID 1157, parentID 1) is processed with stopping code 2 ### pop requested out of 98 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.566819,0.57819,-0.586867) - Old Polarization: (-0.816711,0.300838,-0.492421) - New Momentum Direction: (0.566819,0.57819,0.586867) - New Polarization: (0.816711,-0.300838,-0.492421) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.566819,0.57819,0.586867) - Old Polarization: (0.816711,-0.300838,-0.492421) - New Momentum Direction: (0.566819,-0.57819,0.586867) - New Polarization: (-0.816711,-0.300838,0.492421) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.566819,-0.57819,0.586867) - Old Polarization: (-0.816711,-0.300838,0.492421) - New Momentum Direction: (-0.566819,-0.57819,0.586867) - New Polarization: (-0.816711,0.300838,-0.492421) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1364, parentID 1) is processed with stopping code 2 -### pop requested out of 97 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.573449,0.818057,-0.0440204) - Old Polarization: (-0.810542,0.57435,0.114647) - New Momentum Direction: (0.77402,0.630367,-0.0594171) - New Polarization: (0.630935,-0.775757,-0.0110367) + Old Momentum Direction: (0.53735,0.76584,-0.3532) + Old Polarization: (-0.80535,0.59028,0.054667) + New Momentum Direction: (0.73015,0.48638,-0.47992) + New Polarization: (0.23316,-0.83756,-0.4941) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1363, parentID 1) is processed with stopping code 2 +Track (trackID 1156, parentID 1) is processed with stopping code 2 +### pop requested out of 97 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.54771,0.76867,-0.33039) + Old Polarization: (-0.7956,0.6007,0.078634) + New Momentum Direction: (0.74083,0.50148,-0.44687) + New Polarization: (0.28905,-0.83855,-0.46183) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1155, parentID 1) is processed with stopping code 2 ### pop requested out of 96 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1362, parentID 1) is processed with stopping code 2 +Track (trackID 1154, parentID 1) is processed with stopping code 2 ### pop requested out of 95 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.888975,-0.347445,0.298338) - Old Polarization: (-0.455602,-0.736954,0.499326) - New Momentum Direction: (0.785647,-0.46938,0.403039) - New Polarization: (-0.616989,-0.642492,0.454455) + Old Momentum Direction: (0.47213,0.28658,-0.83364) + Old Polarization: (-0.87734,0.060758,-0.476) + New Momentum Direction: (0.64159,0.38944,-0.66083) + New Polarization: (0.32105,0.64609,0.69245) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1361, parentID 1) is processed with stopping code 2 +Track (trackID 1153, parentID 1) is processed with stopping code 2 ### pop requested out of 94 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.46878,0.54115,-0.69814) + Old Polarization: (-0.88113,0.34209,-0.32648) + New Momentum Direction: (0.46878,0.54115,0.69814) + New Polarization: (0.58101,-0.78423,0.21776) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.46878,0.54115,0.69814) + Old Polarization: (0.58101,-0.78423,0.21776) + New Momentum Direction: (0.46878,-0.54115,0.69814) + New Polarization: (-0.58101,-0.78423,-0.21776) + *** TotalInternalReflection *** +No Absorbtion length specified ** Photon Absorbed! ** -Track (trackID 1360, parentID 1) is processed with stopping code 2 +Track (trackID 1152, parentID 1) is processed with stopping code 2 ### pop requested out of 93 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.92676,-0.10318,0.36121) +Old Polarization: (-0.37273,-0.37221,0.85001) +New Polarization: (-0.021593,0.035458,0.86569) +Polarization Change: (-0.024914,0.040912,0.99885) +New Momentum Direction: (-0.049694,0.88949,-0.037673) +Momentum Change: (-0.055731,0.99755,-0.042249) Photon at Boundary! - Old Momentum Direction: (0.864247,-0.155133,0.478551) - Old Polarization: (-0.48304,-0.521638,0.703254) - New Momentum Direction: (0.73418,-0.209372,0.645866) - New Polarization: (-0.664407,-0.417416,0.619942) + Old Momentum Direction: (-0.055731,0.99755,-0.042249) + Old Polarization: (-0.024914,0.040912,0.99885) + New Momentum Direction: (-0.075408,0.99551,-0.057167) + New Polarization: (-0.98646,-0.066105,0.15007) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1359, parentID 1) is processed with stopping code 2 +Track (trackID 1151, parentID 1) is processed with stopping code 2 ### pop requested out of 92 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.883656,-0.468134,0.00166865) - Old Polarization: (-0.461905,-0.871305,0.165745) - New Momentum Direction: (0.774209,-0.632925,0.00225604) - New Polarization: (-0.628456,-0.768309,0.121425) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1358, parentID 1) is processed with stopping code 2 -### pop requested out of 91 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.663852,0.640531,0.386031) - Old Polarization: (-0.708666,0.37386,0.598348) - New Momentum Direction: (-0.663852,0.640531,0.386031) - New Polarization: (-0.708666,-0.37386,-0.598348) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.663852,0.640531,0.386031) - Old Polarization: (-0.708666,-0.37386,-0.598348) - New Momentum Direction: (-0.663852,-0.640531,0.386031) - New Polarization: (0.708666,-0.37386,0.598348) - *** TotalInternalReflection *** -No Absorbtion length specified ** Photon Absorbed! ** -Track (trackID 1357, parentID 1) is processed with stopping code 2 +Track (trackID 1150, parentID 1) is processed with stopping code 2 +### pop requested out of 91 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1149, parentID 1) is processed with stopping code 2 ### pop requested out of 90 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.712784,0.49169,0.500181) - Old Polarization: (-0.653646,0.207076,0.727919) - New Momentum Direction: (0.322953,0.663463,0.674921) - New Polarization: (-0.916452,0.0412098,0.398017) + Old Momentum Direction: (0.51431,0.71104,-0.47948) + Old Polarization: (-0.83494,0.54283,-0.090617) + New Momentum Direction: (0.69262,0.32148,-0.6457) + New Polarization: (-0.12086,-0.83081,-0.54328) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1356, parentID 1) is processed with stopping code 2 +Track (trackID 1148, parentID 1) is processed with stopping code 2 ### pop requested out of 89 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1355, parentID 1) is processed with stopping code 2 -### pop requested out of 88 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.882134,-0.470461,0.0224885) -Old Polarization: (-0.465943,-0.864696,0.187612) -New Polarization: (0.458442,-0.510664,0.649362) -Polarization Change: (0.485234,-0.540509,0.687312) -New Momentum Direction: (0.421792,-0.493874,-0.842623) -Momentum Change: (0.396467,-0.464221,-0.792031) Photon at Boundary! - Old Momentum Direction: (0.396467,-0.464221,-0.792031) - Old Polarization: (0.485234,-0.540509,0.687312) - New Momentum Direction: (-0.396467,-0.464221,-0.792031) - New Polarization: (0.485234,0.540509,-0.687312) + Old Momentum Direction: (0.82311,-0.5245,-0.21769) + Old Polarization: (-0.487,-0.84913,0.20447) + New Momentum Direction: (0.64388,-0.70667,-0.2933) + New Polarization: (-0.70306,-0.6977,0.13758) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1147, parentID 1) is processed with stopping code 2 +### pop requested out of 88 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.78517,0.55032,0.28399) + Old Polarization: (-0.52998,0.35988,0.76786) + New Momentum Direction: (0.54971,0.74234,0.38308) + New Polarization: (-0.76873,0.27008,0.57975) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1146, parentID 1) is processed with stopping code 2 +### pop requested out of 87 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.85136,-0.51476,-0.10103) +Old Polarization: (-0.45859,-0.82384,0.33313) +New Polarization: (-0.94179,0.10325,-0.022659) +Polarization Change: (-0.99376,0.10894,-0.023909) +New Momentum Direction: (0.041963,0.17832,-0.93164) +Momentum Change: (0.044196,0.18781,-0.98121) +Scattering Photon! +Old Momentum Direction: (0.044196,0.18781,-0.98121) +Old Polarization: (-0.99376,0.10894,-0.023909) +New Polarization: (-0.52973,0.5998,0.36779) +Polarization Change: (-0.60149,0.68104,0.41761) +New Momentum Direction: (0.65009,0.1853,0.63416) +Momentum Change: (0.70138,0.19991,0.68418) + Photon at Boundary! + Old Momentum Direction: (0.70138,0.19991,0.68418) + Old Polarization: (-0.60149,0.68104,0.41761) + New Momentum Direction: (0.24722,0.27176,0.93007) + New Polarization: (-0.89836,0.42397,0.1149) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1145, parentID 1) is processed with stopping code 2 +### pop requested out of 86 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.66622,0.74556,0.017052) + Old Polarization: (-0.66375,0.58238,0.46934) + New Momentum Direction: (0.89682,0.4418,0.022954) + New Polarization: (0.40325,-0.83771,0.36828) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1144, parentID 1) is processed with stopping code 2 +### pop requested out of 85 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.81303,0.46888,0.34516) + Old Polarization: (-0.50103,0.26146,0.82499) + New Momentum Direction: (0.61076,0.63767,0.46941) + New Polarization: (-0.73088,0.22594,0.64403) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1143, parentID 1) is processed with stopping code 2 +### pop requested out of 84 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.65723,0.75353,0.0158) + Old Polarization: (-0.67294,0.57724,0.46255) + New Momentum Direction: (0.65723,-0.75353,0.0158) + New Polarization: (-0.31043,-0.28974,-0.90536) + *** FresnelReflection *** +No Absorbtion length specified +Scattering Photon! +Old Momentum Direction: (0.65723,-0.75353,0.0158) +Old Polarization: (-0.31043,-0.28974,-0.90536) +New Polarization: (-0.55373,-0.11444,-0.67764) +Polarization Change: (-0.62742,-0.12967,-0.76781) +New Momentum Direction: (0.53205,0.50837,-0.52062) +Momentum Change: (0.59023,0.56396,-0.57755) + Photon at Boundary! + Old Momentum Direction: (0.59023,0.56396,-0.57755) + Old Polarization: (-0.62742,-0.12967,-0.76781) + New Momentum Direction: (0.59023,-0.56396,-0.57755) + New Polarization: (0.62742,-0.12967,0.76781) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (-0.396467,-0.464221,-0.792031) - Old Polarization: (0.485234,0.540509,-0.687312) - New Momentum Direction: (-0.539119,-0.631252,-0.557559) - New Polarization: (-0.352545,-0.432079,0.830072) - *** FresnelRefraction *** + Old Momentum Direction: (0.59023,-0.56396,-0.57755) + Old Polarization: (0.62742,-0.12967,0.76781) + New Momentum Direction: (-0.59023,-0.56396,-0.57755) + New Polarization: (0.62742,0.12967,-0.76781) + *** TotalInternalReflection *** No Absorbtion length specified -Track (trackID 1354, parentID 1) is processed with stopping code 2 -### pop requested out of 87 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.549748,0.71361,-0.434209) -Old Polarization: (-0.834672,0.448627,-0.319464) -New Polarization: (-0.863665,0.139739,-0.0256666) -Polarization Change: (-0.986738,0.159652,-0.0293241) -New Momentum Direction: (0.137237,0.910796,0.444911) -Momentum Change: (0.134164,0.890404,0.43495) Photon at Boundary! - Old Momentum Direction: (0.134164,0.890404,0.43495) - Old Polarization: (-0.986738,0.159652,-0.0293241) - New Momentum Direction: (0.182169,0.786152,0.590576) - New Polarization: (-0.73675,-0.288628,0.611468) - *** FresnelRefraction *** + Old Momentum Direction: (-0.59023,-0.56396,-0.57755) + Old Polarization: (0.62742,0.12967,-0.76781) + New Momentum Direction: (-0.59023,-0.56396,0.57755) + New Polarization: (-0.62742,-0.12967,-0.76781) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.59023,-0.56396,0.57755) + Old Polarization: (-0.62742,-0.12967,-0.76781) + New Momentum Direction: (-0.59023,0.56396,0.57755) + New Polarization: (0.62742,-0.12967,0.76781) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.59023,0.56396,0.57755) + Old Polarization: (0.62742,-0.12967,0.76781) + New Momentum Direction: (0.59023,0.56396,0.57755) + New Polarization: (0.62742,0.12967,-0.76781) + *** TotalInternalReflection *** No Absorbtion length specified -Track (trackID 1353, parentID 1) is processed with stopping code 2 -### pop requested out of 86 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1352, parentID 1) is processed with stopping code 2 -### pop requested out of 85 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1351, parentID 1) is processed with stopping code 2 -### pop requested out of 84 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.868137,-0.204924,0.452044) - Old Polarization: (-0.481054,-0.571598,0.664728) - New Momentum Direction: (0.738554,-0.278364,0.614045) - New Polarization: (-0.663248,-0.463444,0.587641) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1350, parentID 1) is processed with stopping code 2 +Track (trackID 1142, parentID 1) is processed with stopping code 2 ### pop requested out of 83 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1349, parentID 1) is processed with stopping code 2 +Track (trackID 1141, parentID 1) is processed with stopping code 2 ### pop requested out of 82 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.764095,0.287132,0.57768) - Old Polarization: (-0.596701,-0.0257484,0.802051) - New Momentum Direction: (0.479669,0.390548,0.785742) - New Polarization: (-0.844578,-0.0373112,0.534131) + Old Momentum Direction: (0.81345,-0.52888,-0.24205) + Old Polarization: (-0.49886,-0.84837,0.1772) + New Momentum Direction: (0.61779,-0.71502,-0.32724) + New Polarization: (-0.72352,-0.67987,0.11957) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1348, parentID 1) is processed with stopping code 2 +Track (trackID 1140, parentID 1) is processed with stopping code 2 ### pop requested out of 81 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.872517,-0.478019,-0.101055) - Old Polarization: (-0.475346,-0.878341,0.0506277) - New Momentum Direction: (0.749317,-0.647892,-0.136966) - New Polarization: (-0.652697,-0.757516,0.0124892) + Old Momentum Direction: (0.82035,0.46131,0.33795) + Old Polarization: (-0.4898,0.26179,0.83161) + New Momentum Direction: (0.63842,0.6209,0.45486) + New Polarization: (-0.70669,0.23869,0.66605) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1347, parentID 1) is processed with stopping code 2 +Track (trackID 1139, parentID 1) is processed with stopping code 2 ### pop requested out of 80 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.847924,-0.450494,-0.279429) - Old Polarization: (-0.501921,-0.851858,-0.149713) - New Momentum Direction: (0.697512,-0.608943,-0.37771) - New Polarization: (-0.696114,-0.700877,-0.155553) - *** FresnelRefraction *** + Old Momentum Direction: (0.66644,-0.40219,-0.62778) + Old Polarization: (-0.663,-0.70483,-0.25227) + New Momentum Direction: (-0.66644,-0.40219,-0.62778) + New Polarization: (-0.663,0.70483,0.25227) + *** TotalInternalReflection *** No Absorbtion length specified -Track (trackID 1346, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (-0.66644,-0.40219,-0.62778) + Old Polarization: (-0.663,0.70483,0.25227) + New Momentum Direction: (-0.66644,-0.40219,0.62778) + New Polarization: (0.663,-0.70483,0.25227) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66644,-0.40219,0.62778) + Old Polarization: (0.663,-0.70483,0.25227) + New Momentum Direction: (-0.66644,0.40219,0.62778) + New Polarization: (-0.663,-0.70483,-0.25227) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66644,0.40219,0.62778) + Old Polarization: (-0.663,-0.70483,-0.25227) + New Momentum Direction: (0.66644,0.40219,0.62778) + New Polarization: (-0.663,0.70483,0.25227) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66644,0.40219,0.62778) + Old Polarization: (-0.663,0.70483,0.25227) + New Momentum Direction: (0.66644,0.40219,-0.62778) + New Polarization: (0.663,-0.70483,0.25227) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1138, parentID 1) is processed with stopping code 2 ### pop requested out of 79 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1345, parentID 1) is processed with stopping code 2 +Track (trackID 1137, parentID 1) is processed with stopping code 2 ### pop requested out of 78 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.741623,-0.173067,-0.648108) - Old Polarization: (-0.621149,-0.54201,-0.566039) - New Momentum Direction: (0.425035,-0.23353,-0.874533) - New Polarization: (-0.871927,-0.365083,-0.326279) + Old Momentum Direction: (0.49739,0.10605,-0.86102) + Old Polarization: (-0.85004,-0.13871,-0.50813) + New Momentum Direction: (0.6751,0.14394,-0.72355) + New Polarization: (0.7011,0.18002,0.68996) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1344, parentID 1) is processed with stopping code 2 +Track (trackID 1136, parentID 1) is processed with stopping code 2 ### pop requested out of 77 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.799438,-0.358214,-0.482267) - Old Polarization: (-0.557278,-0.742015,-0.372634) - New Momentum Direction: (0.578213,-0.486496,-0.654974) - New Polarization: (-0.785191,-0.549931,-0.284697) + Old Momentum Direction: (0.92127,-0.31805,0.22384) + Old Polarization: (-0.37962,-0.61031,0.69528) + New Momentum Direction: (0.84989,-0.43094,0.30329) + New Polarization: (-0.52016,-0.59381,0.61386) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1343, parentID 1) is processed with stopping code 2 +Track (trackID 1135, parentID 1) is processed with stopping code 2 ### pop requested out of 76 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1342, parentID 1) is processed with stopping code 2 +Track (trackID 1134, parentID 1) is processed with stopping code 2 ### pop requested out of 75 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.797877,-0.355528,-0.486818) - Old Polarization: (-0.559116,-0.738339,-0.377154) - New Momentum Direction: (0.573602,-0.483105,-0.661507) - New Polarization: (-0.788343,-0.544916,-0.285626) + Old Momentum Direction: (0.55177,-0.13411,-0.82314) + Old Polarization: (-0.7891,-0.40342,-0.46323) + New Momentum Direction: (0.75041,-0.18239,-0.63531) + New Polarization: (0.44607,-0.56955,0.69039) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1341, parentID 1) is processed with stopping code 2 +Track (trackID 1133, parentID 1) is processed with stopping code 2 ### pop requested out of 74 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.603491,0.395611,-0.692308) - Old Polarization: (-0.777726,0.100509,-0.620516) - New Momentum Direction: (0.603491,0.395611,0.692308) - New Polarization: (-0.0370302,-0.853398,0.519943) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.603491,0.395611,0.692308) - Old Polarization: (-0.0370302,-0.853398,0.519943) - New Momentum Direction: (-0.603491,0.395611,0.692308) - New Polarization: (-0.0370302,0.853398,-0.519943) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.603491,0.395611,0.692308) - Old Polarization: (-0.0370302,0.853398,-0.519943) - New Momentum Direction: (-0.603491,-0.395611,0.692308) - New Polarization: (0.0370302,0.853398,0.519943) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.603491,-0.395611,0.692308) - Old Polarization: (0.0370302,0.853398,0.519943) - New Momentum Direction: (-0.811915,-0.532241,0.23982) - New Polarization: (-0.459317,0.328872,-0.825149) + Old Momentum Direction: (0.54918,0.7737,-0.3159) + Old Polarization: (-0.79292,0.6018,0.095452) + New Momentum Direction: (0.74489,0.51141,-0.42849) + New Polarization: (0.3213,-0.83782,-0.4414) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1340, parentID 1) is processed with stopping code 2 +Track (trackID 1132, parentID 1) is processed with stopping code 2 ### pop requested out of 73 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.574242,0.532501,-0.621843) - Old Polarization: (-0.808647,0.250342,-0.532371) - New Momentum Direction: (0.574242,0.532501,0.621843) - New Polarization: (0.808647,-0.250342,-0.532371) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.574242,0.532501,0.621843) - Old Polarization: (0.808647,-0.250342,-0.532371) - New Momentum Direction: (-0.574242,0.532501,0.621843) - New Polarization: (0.808647,0.250342,0.532371) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.574242,0.532501,0.621843) - Old Polarization: (0.808647,0.250342,0.532371) - New Momentum Direction: (-0.574242,-0.532501,0.621843) - New Polarization: (-0.808647,0.250342,-0.532371) - *** TotalInternalReflection *** -No Absorbtion length specified -Scattering Photon! -Old Momentum Direction: (-0.574242,-0.532501,0.621843) -Old Polarization: (-0.808647,0.250342,-0.532371) -New Polarization: (-0.284119,-0.288104,-0.78417) -Polarization Change: (-0.32198,-0.326497,-0.888667) -New Momentum Direction: (-0.254246,-0.775325,0.886617) -Momentum Change: (-0.211005,-0.64346,0.735824) - Photon at Boundary! - Old Momentum Direction: (-0.211005,-0.64346,0.735824) - Old Polarization: (-0.32198,-0.326497,-0.888667) - New Momentum Direction: (-0.285568,-0.870841,0.400109) - New Polarization: (-0.256157,-0.332946,-0.907486) + Old Momentum Direction: (0.92863,-0.14272,0.34246) + Old Polarization: (-0.37022,-0.41683,0.83018) + New Momentum Direction: (0.86508,-0.19297,0.46303) + New Polarization: (-0.50105,-0.37662,0.77917) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1339, parentID 1) is processed with stopping code 2 +Track (trackID 1131, parentID 1) is processed with stopping code 2 ### pop requested out of 72 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.85638,-0.461821,-0.230943) - Old Polarization: (-0.492301,-0.865177,-0.0954361) - New Momentum Direction: (0.716396,-0.624019,-0.312054) - New Polarization: (-0.680242,-0.72413,-0.113608) + Old Momentum Direction: (0.80142,0.50381,0.32233) + Old Polarization: (-0.51316,0.30237,0.80327) + New Momentum Direction: (0.58461,0.68341,0.43724) + New Polarization: (-0.74776,0.24477,0.6172) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1338, parentID 1) is processed with stopping code 2 +Track (trackID 1130, parentID 1) is processed with stopping code 2 ### pop requested out of 71 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.757465,0.317465,0.570494) -Old Polarization: (-0.603861,0.00848737,0.797045) -New Polarization: (0.482399,0.342159,0.750611) -Polarization Change: (0.504805,0.358051,0.785475) -New Momentum Direction: (0.562964,0.499398,-0.735725) -Momentum Change: (0.534916,0.474517,-0.69907) -Scattering Photon! -Old Momentum Direction: (0.534916,0.474517,-0.69907) -Old Polarization: (0.504805,0.358051,0.785475) -New Polarization: (0.673081,-0.363258,0.446672) -Polarization Change: (0.75992,-0.410124,0.504301) -New Momentum Direction: (-0.506595,-0.858833,0.0888448) -Momentum Change: (-0.506057,-0.857922,0.0887506) Photon at Boundary! - Old Momentum Direction: (-0.506057,-0.857922,0.0887506) - Old Polarization: (0.75992,-0.410124,0.504301) - New Momentum Direction: (-0.687064,-0.716536,0.120495) - New Polarization: (-0.524451,0.603825,0.600289) + Old Momentum Direction: (0.72304,-0.48124,-0.4956) + Old Polarization: (-0.59995,-0.79309,-0.10517) + New Momentum Direction: (0.35418,-0.65148,-0.67091) + New Polarization: (-0.87409,-0.48566,0.010161) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1337, parentID 1) is processed with stopping code 2 +Track (trackID 1129, parentID 1) is processed with stopping code 2 ### pop requested out of 70 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.892036,-0.389009,0.230096) - Old Polarization: (-0.451683,-0.785251,0.423512) - New Momentum Direction: (0.792476,-0.524948,0.310503) - New Polarization: (-0.609702,-0.694936,0.381218) + Old Momentum Direction: (0.6122,0.7794,-0.13323) + Old Polarization: (-0.72468,0.62047,0.29977) + New Momentum Direction: (0.82415,0.53722,-0.17936) + New Polarization: (0.54327,-0.83937,-0.017793) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1336, parentID 1) is processed with stopping code 2 +Track (trackID 1128, parentID 1) is processed with stopping code 2 ### pop requested out of 69 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1335, parentID 1) is processed with stopping code 2 +Track (trackID 1127, parentID 1) is processed with stopping code 2 ### pop requested out of 68 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.681989,0.0422426,-0.730142) - Old Polarization: (-0.688471,-0.299777,-0.66041) - New Momentum Direction: (0.919183,0.0569345,-0.389693) - New Polarization: (0.393748,-0.153135,0.906373) - *** FresnelRefraction *** + Old Momentum Direction: (0.47364,0.57122,-0.67035) + Old Polarization: (-0.87681,0.37742,-0.29791) + New Momentum Direction: (0.47364,0.57122,0.67035) + New Polarization: (0.87681,-0.37742,-0.29791) + *** TotalInternalReflection *** No Absorbtion length specified -Track (trackID 1334, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.47364,0.57122,0.67035) + Old Polarization: (0.87681,-0.37742,-0.29791) + New Momentum Direction: (0.47364,-0.57122,0.67035) + New Polarization: (-0.87681,-0.37742,0.29791) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1126, parentID 1) is processed with stopping code 2 ### pop requested out of 67 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.565145,0.819451,-0.0954538) - Old Polarization: (-0.818773,0.571297,0.0568286) - New Momentum Direction: (0.76496,0.630985,-0.129203) - New Polarization: (0.611636,-0.774526,-0.161279) + Old Momentum Direction: (0.61917,-0.30873,-0.72202) + Old Polarization: (-0.71558,-0.60047,-0.3569) + New Momentum Direction: (0.83855,-0.41811,-0.3493) + New Polarization: (-0.12091,-0.76797,0.62897) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1333, parentID 1) is processed with stopping code 2 +Track (trackID 1125, parentID 1) is processed with stopping code 2 ### pop requested out of 66 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.814945,-0.389996,-0.428681) -Old Polarization: (-0.53947,-0.780759,-0.315257) -New Polarization: (-0.432531,-0.576713,0.534168) -Polarization Change: (-0.482075,-0.642773,0.595354) -New Momentum Direction: (0.535064,0.238763,0.950311) -Momentum Change: (0.479268,0.213865,0.851213) Photon at Boundary! - Old Momentum Direction: (0.479268,0.213865,0.851213) - Old Polarization: (-0.482075,-0.642773,0.595354) - New Momentum Direction: (-0.479268,0.213865,0.851213) - New Polarization: (-0.482075,0.642773,-0.595354) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.479268,0.213865,0.851213) - Old Polarization: (-0.482075,0.642773,-0.595354) - New Momentum Direction: (-0.6493,0.289739,0.703179) - New Polarization: (-0.495714,0.539969,-0.680222) + Old Momentum Direction: (0.78215,0.55503,0.28318) + Old Polarization: (-0.53386,0.36259,0.76389) + New Momentum Direction: (0.53869,0.75047,0.38289) + New Polarization: (-0.77644,0.26581,0.57139) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1332, parentID 1) is processed with stopping code 2 +Track (trackID 1124, parentID 1) is processed with stopping code 2 ### pop requested out of 65 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.796497,0.182612,0.576407) - Old Polarization: (-0.55895,-0.141163,0.817097) - New Momentum Direction: (0.580453,0.24593,0.776269) - New Polarization: (-0.781561,-0.0993101,0.615873) + Old Momentum Direction: (0.6522,0.75801,-0.0073316) + Old Polarization: (-0.67894,0.58842,0.43909) + New Momentum Direction: (0.88237,0.47046,-0.0099189) + New Polarization: (0.45032,-0.8381,0.30791) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1331, parentID 1) is processed with stopping code 2 +Track (trackID 1123, parentID 1) is processed with stopping code 2 ### pop requested out of 64 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.656274,0.132194,-0.742852) - Old Polarization: (-0.716898,-0.19777,-0.668539) - New Momentum Direction: (0.8878,0.178831,-0.424064) - New Polarization: (0.42249,0.0487334,0.905056) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1330, parentID 1) is processed with stopping code 2 + +** Photon Absorbed! ** +Track (trackID 1122, parentID 1) is processed with stopping code 2 ### pop requested out of 63 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.746394,-0.191861,-0.637248) - Old Polarization: (-0.615844,-0.562072,-0.552097) - New Momentum Direction: (0.43777,-0.259202,-0.860914) - New Polarization: (-0.865681,-0.380109,-0.325751) + Old Momentum Direction: (0.5283,0.75755,-0.38342) + Old Polarization: (-0.81485,0.57926,0.02175) + New Momentum Direction: (0.71872,0.45973,-0.52162) + New Polarization: (0.1545,-0.83705,-0.52486) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1329, parentID 1) is processed with stopping code 2 +Track (trackID 1121, parentID 1) is processed with stopping code 2 ### pop requested out of 62 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.869414,-0.478887,-0.121603) - Old Polarization: (-0.479291,-0.877215,0.0278342) - New Momentum Direction: (0.741881,-0.649906,-0.16503) - New Polarization: (-0.659913,-0.751301,-0.00788713) + Old Momentum Direction: (0.85215,0.35968,0.3801) + Old Polarization: (-0.45401,0.14693,0.8788) + New Momentum Direction: (0.7097,0.48422,0.51172) + New Polarization: (-0.65082,0.17252,0.73937) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1328, parentID 1) is processed with stopping code 2 +Track (trackID 1120, parentID 1) is processed with stopping code 2 ### pop requested out of 61 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.849551,-0.460748,-0.256857) - Old Polarization: (-0.501509,-0.856442,-0.122455) - New Momentum Direction: (0.697935,-0.625527,-0.348717) - New Polarization: (-0.697449,-0.704259,-0.132605) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1327, parentID 1) is processed with stopping code 2 + +** Photon Absorbed! ** +Track (trackID 1119, parentID 1) is processed with stopping code 2 ### pop requested out of 60 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.619429,0.747642,0.239455) - Old Polarization: (-0.757838,0.489847,0.430965) - New Momentum Direction: (0.839074,0.436741,0.324364) - New Polarization: (0.154567,-0.763054,0.62758) + Old Momentum Direction: (0.89976,0.13752,0.41414) + Old Polarization: (-0.40272,-0.10378,0.90942) + New Momentum Direction: (0.80717,0.18604,0.56024) + New Polarization: (-0.56488,-0.032185,0.82455) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1326, parentID 1) is processed with stopping code 2 +Track (trackID 1118, parentID 1) is processed with stopping code 2 ### pop requested out of 59 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.584405,0.809718,0.0531631) - Old Polarization: (-0.797304,0.56079,0.223205) - New Momentum Direction: (0.790842,0.607777,0.0719426) - New Polarization: (0.572049,-0.775852,0.266108) + Old Momentum Direction: (0.61614,0.77937,-0.11383) + Old Polarization: (-0.71962,0.61578,0.32087) + New Momentum Direction: (0.83179,0.5334,-0.15367) + New Polarization: (0.54376,-0.83862,0.032344) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1325, parentID 1) is processed with stopping code 2 +Track (trackID 1117, parentID 1) is processed with stopping code 2 ### pop requested out of 58 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1324, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.75794,0.61215,0.22539) + Old Polarization: (-0.56007,0.43353,0.70596) + New Momentum Direction: (0.4806,0.82293,0.303) + New Polarization: (-0.8097,0.28374,0.51369) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1116, parentID 1) is processed with stopping code 2 ### pop requested out of 57 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.767127,0.282472,0.575956) - Old Polarization: (-0.593012,-0.0301456,0.804629) - New Momentum Direction: (0.492806,0.383152,0.781241) - New Polarization: (-0.836872,-0.0371828,0.546134) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1323, parentID 1) is processed with stopping code 2 -### pop requested out of 56 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.560078,0.614389,-0.555733) - Old Polarization: (-0.8234,0.338953,-0.455109) - New Momentum Direction: (0.560078,-0.614389,-0.555733) - New Polarization: (0.8234,0.338953,0.455109) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.560078,-0.614389,-0.555733) - Old Polarization: (0.8234,0.338953,0.455109) - New Momentum Direction: (-0.560078,-0.614389,-0.555733) - New Polarization: (0.8234,-0.338953,-0.455109) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.560078,-0.614389,-0.555733) - Old Polarization: (0.8234,-0.338953,-0.455109) - New Momentum Direction: (-0.560078,-0.614389,0.555733) - New Polarization: (-0.8234,0.338953,-0.455109) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1322, parentID 1) is processed with stopping code 2 -### pop requested out of 55 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.878165,-0.477304,-0.0317159) - Old Polarization: (-0.470074,-0.873346,0.127663) - New Momentum Direction: (0.759901,-0.648608,-0.0430987) - New Polarization: (-0.644132,-0.760257,0.0842836) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1321, parentID 1) is processed with stopping code 2 -### pop requested out of 54 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.591216,0.436507,-0.678178) - Old Polarization: (-0.789845,0.143296,-0.596332) - New Momentum Direction: (0.799655,0.590403,-0.109433) - New Polarization: (-0.153019,0.3766,0.913651) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1320, parentID 1) is processed with stopping code 2 -### pop requested out of 53 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.859724,-0.471027,-0.197505) - Old Polarization: (-0.489732,-0.870016,-0.0568782) - New Momentum Direction: (0.721425,-0.638623,-0.26778) - New Polarization: (-0.677334,-0.731207,-0.0809604) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1319, parentID 1) is processed with stopping code 2 -### pop requested out of 52 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.677966,0.0345381,-0.734282) - Old Polarization: (-0.692246,-0.306054,-0.653549) - New Momentum Direction: (0.920167,0.0468767,-0.388709) - New Polarization: (0.390912,-0.165585,0.905411) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1318, parentID 1) is processed with stopping code 2 -### pop requested out of 51 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.582071,0.8128,0.0234296) - Old Polarization: (-0.800723,0.56793,0.190521) - New Momentum Direction: (0.785897,0.617547,0.0316341) - New Polarization: (0.602628,-0.776369,0.184635) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1317, parentID 1) is processed with stopping code 2 -### pop requested out of 50 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.659616,0.650461,0.376574) - Old Polarization: (-0.713266,0.383761,0.586497) - New Momentum Direction: (-0.659616,0.650461,0.376574) - New Polarization: (-0.713266,-0.383761,-0.586497) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.659616,0.650461,0.376574) - Old Polarization: (-0.713266,-0.383761,-0.586497) - New Momentum Direction: (-0.659616,-0.650461,0.376574) - New Polarization: (0.713266,-0.383761,0.586497) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.659616,-0.650461,0.376574) - Old Polarization: (0.713266,-0.383761,0.586497) - New Momentum Direction: (-0.659616,-0.650461,-0.376574) - New Polarization: (-0.713266,0.383761,0.586497) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.659616,-0.650461,-0.376574) - Old Polarization: (-0.713266,0.383761,0.586497) - New Momentum Direction: (0.659616,-0.650461,-0.376574) - New Polarization: (-0.713266,-0.383761,-0.586497) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.659616,-0.650461,-0.376574) - Old Polarization: (-0.713266,-0.383761,-0.586497) - New Momentum Direction: (0.659616,0.650461,-0.376574) - New Polarization: (0.713266,-0.383761,0.586497) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.659616,0.650461,-0.376574) - Old Polarization: (0.713266,-0.383761,0.586497) - New Momentum Direction: (-0.659616,0.650461,-0.376574) - New Polarization: (0.713266,0.383761,-0.586497) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.659616,0.650461,-0.376574) - Old Polarization: (0.713266,0.383761,-0.586497) - New Momentum Direction: (-0.659616,-0.650461,-0.376574) - New Polarization: (-0.713266,0.383761,0.586497) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.659616,-0.650461,-0.376574) - Old Polarization: (-0.713266,0.383761,0.586497) - New Momentum Direction: (-0.659616,-0.650461,0.376574) - New Polarization: (0.713266,-0.383761,0.586497) - *** TotalInternalReflection *** -No Absorbtion length specified -Scattering Photon! -Old Momentum Direction: (-0.659616,-0.650461,0.376574) -Old Polarization: (0.713266,-0.383761,0.586497) -New Polarization: (0.672736,-0.260186,0.612936) -Polarization Change: (0.710723,-0.274877,0.647546) -New Momentum Direction: (0.201067,-0.773292,-0.658711) -Momentum Change: (0.194169,-0.746764,-0.636115) - Photon at Boundary! - Old Momentum Direction: (0.194169,-0.746764,-0.636115) - Old Polarization: (0.710723,-0.274877,0.647546) - New Momentum Direction: (0.262483,-0.437778,-0.859915) - New Polarization: (0.816675,0.575443,-0.0436705) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1316, parentID 1) is processed with stopping code 2 -### pop requested out of 49 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.853485,-0.469111,-0.226931) - Old Polarization: (-0.49776,-0.862786,-0.0885209) - New Momentum Direction: (0.705404,-0.638069,-0.308663) - New Polarization: (-0.692055,-0.714112,-0.105377) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1315, parentID 1) is processed with stopping code 2 -### pop requested out of 48 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1314, parentID 1) is processed with stopping code 2 -### pop requested out of 47 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.700402,-0.0540529,-0.711699) - Old Polarization: (-0.667222,-0.403702,-0.625971) - New Momentum Direction: (0.700402,-0.0540529,0.711699) - New Polarization: (-0.45367,0.736074,0.502373) + Old Momentum Direction: (0.75529,0.61107,0.23694) + Old Polarization: (-0.56421,0.42227,0.70948) + New Momentum Direction: (-0.75529,0.61107,0.23694) + New Polarization: (-0.25819,0.05487,-0.96453) *** FresnelReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (0.700402,-0.0540529,0.711699) - Old Polarization: (-0.45367,0.736074,0.502373) - New Momentum Direction: (0.242063,-0.0734788,0.967474) - New Polarization: (-0.76868,0.593933,0.237433) - *** FresnelRefraction *** + Old Momentum Direction: (-0.75529,0.61107,0.23694) + Old Polarization: (-0.25819,0.05487,-0.96453) + New Momentum Direction: (-0.75529,-0.61107,0.23694) + New Polarization: (0.25819,0.05487,0.96453) + *** TotalInternalReflection *** No Absorbtion length specified -Track (trackID 1313, parentID 1) is processed with stopping code 2 -### pop requested out of 46 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.73851,0.392182,0.548449) - Old Polarization: (-0.624844,0.0924749,0.775254) - New Momentum Direction: (0.406102,0.53154,0.743335) - New Polarization: (-0.88134,0.0128491,0.472309) + Old Momentum Direction: (-0.75529,-0.61107,0.23694) + Old Polarization: (0.25819,0.05487,0.96453) + New Momentum Direction: (-0.45922,-0.82824,0.32115) + New Polarization: (0.47097,0.079526,0.87856) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1312, parentID 1) is processed with stopping code 2 -### pop requested out of 45 stacked tracks. +Track (trackID 1115, parentID 1) is processed with stopping code 2 +### pop requested out of 56 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1311, parentID 1) is processed with stopping code 2 +Track (trackID 1114, parentID 1) is processed with stopping code 2 +### pop requested out of 55 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.51334,0.028486,-0.85772) + Old Polarization: (-0.83279,-0.22484,-0.50588) + New Momentum Direction: (0.69612,0.038629,-0.71689) + New Polarization: (0.71696,-0.089425,0.69136) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1113, parentID 1) is processed with stopping code 2 +### pop requested out of 54 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1112, parentID 1) is processed with stopping code 2 +### pop requested out of 53 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.77251,-0.52585,-0.35597) + Old Polarization: (-0.54558,-0.83647,0.051668) + New Momentum Direction: (0.5052,-0.71466,-0.48378) + New Polarization: (-0.79817,-0.6001,0.052987) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1111, parentID 1) is processed with stopping code 2 +### pop requested out of 52 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.57489,0.78492,-0.2311) + Old Polarization: (-0.76471,0.61588,0.1895) + New Momentum Direction: (0.77899,0.54326,-0.31314) + New Polarization: (0.47398,-0.8371,-0.27315) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1110, parentID 1) is processed with stopping code 2 +### pop requested out of 51 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.92902,-0.26377,0.25953) + Old Polarization: (-0.36642,-0.55785,0.74467) + New Momentum Direction: (0.86751,-0.35457,0.34887) + New Polarization: (-0.49476,-0.54266,0.67877) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1109, parentID 1) is processed with stopping code 2 +### pop requested out of 50 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.65189,0.7583,0.0045228) + Old Polarization: (-0.67872,0.5808,0.44946) + New Momentum Direction: (0.88645,0.46279,0.0061501) + New Polarization: (0.43476,-0.83717,0.33186) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1108, parentID 1) is processed with stopping code 2 +### pop requested out of 49 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.6721,0.73966,0.034412) + Old Polarization: (-0.65704,0.57431,0.48833) + New Momentum Direction: (0.90556,0.42168,0.046365) + New Polarization: (0.36882,-0.83658,0.40511) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1107, parentID 1) is processed with stopping code 2 +### pop requested out of 48 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.58546,-0.21432,-0.78186) + Old Polarization: (-0.75404,-0.49818,-0.42806) + New Momentum Direction: (0.79032,-0.28931,-0.54009) + New Polarization: (0.20216,-0.709,0.67561) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1106, parentID 1) is processed with stopping code 2 +### pop requested out of 47 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1105, parentID 1) is processed with stopping code 2 +### pop requested out of 46 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1104, parentID 1) is processed with stopping code 2 +### pop requested out of 45 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.54679,0.76019,-0.3509) + Old Polarization: (-0.79862,0.5994,0.054083) + New Momentum Direction: (0.73582,0.48537,-0.47221) + New Polarization: (0.24121,-0.83944,-0.48698) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1103, parentID 1) is processed with stopping code 2 ### pop requested out of 44 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.858908,-0.473989,-0.19394) - Old Polarization: (-0.491513,-0.869304,-0.0522015) - New Momentum Direction: (0.717952,-0.644249,-0.263605) - New Polarization: (-0.681296,-0.728021,-0.0762925) + Old Momentum Direction: (0.80932,0.48087,0.3373) + Old Polarization: (-0.50477,0.27576,0.81802) + New Momentum Direction: (0.60289,0.65316,0.45815) + New Polarization: (-0.73584,0.23329,0.6357) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1310, parentID 1) is processed with stopping code 2 +Track (trackID 1102, parentID 1) is processed with stopping code 2 ### pop requested out of 43 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.589652,0.449865,-0.67077) - Old Polarization: (-0.791937,0.158981,-0.589543) - New Momentum Direction: (0.589652,0.449865,0.67077) - New Polarization: (0.791937,-0.158981,-0.589543) - *** TotalInternalReflection *** + Old Momentum Direction: (0.864,0.30115,0.40351) + Old Polarization: (-0.44391,0.077456,0.89272) + New Momentum Direction: (0.7302,0.40865,0.54755) + New Polarization: (-0.63772,0.12003,0.76086) + *** FresnelRefraction *** No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.589652,0.449865,0.67077) - Old Polarization: (0.791937,-0.158981,-0.589543) - New Momentum Direction: (-0.589652,0.449865,0.67077) - New Polarization: (0.791937,0.158981,0.589543) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.589652,0.449865,0.67077) - Old Polarization: (0.791937,0.158981,0.589543) - New Momentum Direction: (-0.589652,-0.449865,0.67077) - New Polarization: (-0.791937,0.158981,-0.589543) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.589652,-0.449865,0.67077) - Old Polarization: (-0.791937,0.158981,-0.589543) - New Momentum Direction: (-0.589652,-0.449865,-0.67077) - New Polarization: (0.791937,-0.158981,-0.589543) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.589652,-0.449865,-0.67077) - Old Polarization: (0.791937,-0.158981,-0.589543) - New Momentum Direction: (0.589652,-0.449865,-0.67077) - New Polarization: (0.791937,0.158981,0.589543) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.589652,-0.449865,-0.67077) - Old Polarization: (0.791937,0.158981,0.589543) - New Momentum Direction: (0.589652,0.449865,-0.67077) - New Polarization: (-0.791937,0.158981,-0.589543) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1309, parentID 1) is processed with stopping code 2 +Track (trackID 1101, parentID 1) is processed with stopping code 2 ### pop requested out of 42 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.879119,-0.254213,0.403145) - Old Polarization: (-0.466405,-0.632921,0.617962) - New Momentum Direction: (0.765511,-0.343193,0.544253) - New Polarization: (-0.636062,-0.531221,0.559668) + Old Momentum Direction: (0.80201,0.49909,0.32817) + Old Polarization: (-0.51321,0.29466,0.8061) + New Momentum Direction: (0.58305,0.67883,0.44636) + New Polarization: (-0.7498,0.23807,0.61735) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1308, parentID 1) is processed with stopping code 2 +Track (trackID 1100, parentID 1) is processed with stopping code 2 ### pop requested out of 41 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.869914,-0.481779,-0.105537) - Old Polarization: (-0.479711,-0.876227,0.0458644) - New Momentum Direction: (0.741385,-0.655536,-0.143599) - New Polarization: (-0.661445,-0.749945,0.00856485) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1307, parentID 1) is processed with stopping code 2 + +** Photon Absorbed! ** +Track (trackID 1099, parentID 1) is processed with stopping code 2 ### pop requested out of 40 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.796278,-0.331976,-0.505701) - Old Polarization: (-0.55938,-0.722326,-0.406619) - New Momentum Direction: (0.57878,-0.447524,-0.681715) - New Polarization: (-0.782919,-0.538817,-0.310987) + Old Momentum Direction: (0.66187,-0.4035,-0.63176) + Old Polarization: (-0.6677,-0.70042,-0.25218) + New Momentum Direction: (-0.66187,-0.4035,-0.63176) + New Polarization: (-0.6677,0.70042,0.25218) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66187,-0.4035,-0.63176) + Old Polarization: (-0.6677,0.70042,0.25218) + New Momentum Direction: (-0.66187,-0.4035,0.63176) + New Polarization: (0.6677,-0.70042,0.25218) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66187,-0.4035,0.63176) + Old Polarization: (0.6677,-0.70042,0.25218) + New Momentum Direction: (-0.66187,0.4035,0.63176) + New Polarization: (-0.6677,-0.70042,-0.25218) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66187,0.4035,0.63176) + Old Polarization: (-0.6677,-0.70042,-0.25218) + New Momentum Direction: (0.66187,0.4035,0.63176) + New Polarization: (-0.6677,0.70042,0.25218) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66187,0.4035,0.63176) + Old Polarization: (-0.6677,0.70042,0.25218) + New Momentum Direction: (0.66187,0.4035,-0.63176) + New Polarization: (0.6677,-0.70042,0.25218) + *** TotalInternalReflection *** +No Absorbtion length specified +Scattering Photon! +Old Momentum Direction: (0.66187,0.4035,-0.63176) +Old Polarization: (0.6677,-0.70042,0.25218) +New Polarization: (0.70239,-0.61961,0.19983) +Polarization Change: (0.73341,-0.64697,0.20866) +New Momentum Direction: (-0.67686,-0.71984,0.14714) +Momentum Change: (-0.67755,-0.72057,0.14729) + Photon at Boundary! + Old Momentum Direction: (-0.67755,-0.72057,0.14729) + Old Polarization: (0.73341,-0.64697,0.20866) + New Momentum Direction: (0.67755,-0.72057,0.14729) + New Polarization: (0.73341,0.64697,-0.20866) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.67755,-0.72057,0.14729) + Old Polarization: (0.73341,0.64697,-0.20866) + New Momentum Direction: (0.67755,0.72057,0.14729) + New Polarization: (-0.67716,0.53305,0.50726) + *** FresnelReflection *** +No Absorbtion length specified +Scattering Photon! +Old Momentum Direction: (0.67755,0.72057,0.14729) +Old Polarization: (-0.67716,0.53305,0.50726) +New Polarization: (-0.71515,0.40213,0.46489) +Polarization Change: (-0.75837,0.42643,0.49298) +New Momentum Direction: (0.44988,0.88921,-0.077103) +Momentum Change: (0.4501,0.88964,-0.077141) + Photon at Boundary! + Old Momentum Direction: (0.4501,0.88964,-0.077141) + Old Polarization: (-0.75837,0.42643,0.49298) + New Momentum Direction: (-0.4501,0.88964,-0.077141) + New Polarization: (-0.75837,-0.42643,-0.49298) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.4501,0.88964,-0.077141) + Old Polarization: (-0.75837,-0.42643,-0.49298) + New Momentum Direction: (-0.61215,0.78375,-0.10491) + New Polarization: (-0.69959,-0.59864,-0.39014) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1306, parentID 1) is processed with stopping code 2 +Track (trackID 1098, parentID 1) is processed with stopping code 2 ### pop requested out of 39 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.569838,0.819414,-0.0620086) - Old Polarization: (-0.813975,0.573192,0.0943102) - New Momentum Direction: (0.7704,0.632025,-0.0838335) - New Polarization: (0.628749,-0.774942,-0.0643381) + Old Momentum Direction: (0.83197,-0.52562,-0.17763) + Old Polarization: (-0.47874,-0.84191,0.249) + New Momentum Direction: (0.65986,-0.71184,-0.24055) + New Polarization: (-0.69332,-0.70023,0.17026) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1305, parentID 1) is processed with stopping code 2 +Track (trackID 1097, parentID 1) is processed with stopping code 2 ### pop requested out of 38 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1304, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.92446,-0.042136,0.37895) + Old Polarization: (-0.37301,-0.30588,0.87596) + New Momentum Direction: (0.8579,-0.056783,0.51068) + New Polarization: (-0.50773,-0.24633,0.82555) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1096, parentID 1) is processed with stopping code 2 ### pop requested out of 37 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.629816,0.240269,-0.738649) - Old Polarization: (-0.746187,-0.07695,-0.661274) - New Momentum Direction: (0.853325,0.325535,-0.407263) - New Polarization: (0.329876,0.267805,0.905242) + Old Momentum Direction: (0.56041,-0.15777,-0.81305) + Old Polarization: (-0.78004,-0.43048,-0.45412) + New Momentum Direction: (0.76109,-0.21427,-0.61223) + New Polarization: (0.37941,-0.6185,0.68812) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1303, parentID 1) is processed with stopping code 2 +Track (trackID 1095, parentID 1) is processed with stopping code 2 ### pop requested out of 36 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.887914,-0.356362,0.290884) - Old Polarization: (-0.458072,-0.742923,0.488093) - New Momentum Direction: (0.781952,-0.482892,0.394165) - New Polarization: (-0.621959,-0.646477,0.441855) + Old Momentum Direction: (0.85008,0.34982,0.39369) + Old Polarization: (-0.46025,0.13008,0.87821) + New Momentum Direction: (0.69771,0.47585,0.53552) + New Polarization: (-0.66587,0.15505,0.72977) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1302, parentID 1) is processed with stopping code 2 +Track (trackID 1094, parentID 1) is processed with stopping code 2 ### pop requested out of 35 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1301, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.53663,-0.080881,-0.83993) + Old Polarization: (-0.80576,-0.34468,-0.4816) + New Momentum Direction: (0.72988,-0.11001,-0.67467) + New Polarization: (0.57417,-0.43693,0.6924) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1093, parentID 1) is processed with stopping code 2 ### pop requested out of 34 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1300, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.65597,0.75472,0.0096721) + Old Polarization: (-0.67444,0.58035,0.45643) + New Momentum Direction: (0.88998,0.45582,0.013122) + New Polarization: (0.42375,-0.83731,0.34546) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1092, parentID 1) is processed with stopping code 2 ### pop requested out of 33 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.593581,0.79463,0.127376) - Old Polarization: (-0.785887,0.538256,0.304403) - New Momentum Direction: (0.806172,0.565826,0.172996) - New Polarization: (0.447766,-0.774551,0.44674) + Old Momentum Direction: (0.48369,0.21834,-0.84757) + Old Polarization: (-0.86693,-0.013621,-0.49824) + New Momentum Direction: (0.65439,0.2954,-0.69607) + New Polarization: (0.50883,0.50892,0.69433) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1299, parentID 1) is processed with stopping code 2 +Track (trackID 1091, parentID 1) is processed with stopping code 2 ### pop requested out of 32 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.600607,0.78597,0.146706) - Old Polarization: (-0.779164,0.534197,0.32793) - New Momentum Direction: (0.81277,0.547714,0.198529) - New Polarization: (0.402974,-0.774645,0.487377) + Old Momentum Direction: (0.78201,-0.53078,-0.32671) + Old Polarization: (-0.53528,-0.84047,0.084208) + New Momentum Direction: (0.53029,-0.722,-0.44442) + New Polarization: (-0.78346,-0.61764,0.068583) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1298, parentID 1) is processed with stopping code 2 +Track (trackID 1090, parentID 1) is processed with stopping code 2 ### pop requested out of 31 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1297, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.72669,0.66687,0.16495) + Old Polarization: (-0.5956,0.49195,0.63502) + New Momentum Direction: (0.37786,0.89878,0.22231) + New Polarization: (-0.86307,0.255,0.43599) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1089, parentID 1) is processed with stopping code 2 ### pop requested out of 30 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1296, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.92792,-0.21916,0.30156) + Old Polarization: (-0.37223,-0.50038,0.78171) + New Momentum Direction: (0.86306,-0.29695,0.40859) + New Polarization: (-0.5047,-0.47461,0.72113) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1088, parentID 1) is processed with stopping code 2 ### pop requested out of 29 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.884369,-0.331132,0.329004) - Old Polarization: (-0.463011,-0.711774,0.528203) - New Momentum Direction: (0.773303,-0.449775,0.446884) - New Polarization: (-0.631351,-0.611055,0.477502) + Old Momentum Direction: (0.87245,-0.48831,-0.019534) + Old Polarization: (-0.4353,-0.79467,0.42309) + New Momentum Direction: (0.74745,-0.66378,-0.026553) + New Polarization: (-0.62371,-0.71497,0.31592) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1295, parentID 1) is processed with stopping code 2 +Track (trackID 1087, parentID 1) is processed with stopping code 2 ### pop requested out of 28 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1294, parentID 1) is processed with stopping code 2 +Track (trackID 1086, parentID 1) is processed with stopping code 2 ### pop requested out of 27 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.599728,0.403814,-0.690841) - Old Polarization: (-0.781175,0.108296,-0.614847) - New Momentum Direction: (0.808912,0.544663,-0.221368) - New Polarization: (-0.0336739,0.418825,0.907443) + Old Momentum Direction: (0.51149,0.074581,-0.85605) + Old Polarization: (-0.83846,-0.17471,-0.5162) + New Momentum Direction: (0.68835,0.10037,-0.7184) + New Polarization: (0.71581,0.066362,0.69514) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1293, parentID 1) is processed with stopping code 2 +Track (trackID 1085, parentID 1) is processed with stopping code 2 ### pop requested out of 26 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.608446,0.770776,0.188937) - Old Polarization: (-0.770189,0.516126,0.374731) - New Momentum Direction: (0.823957,0.5056,0.255858) - New Polarization: (0.29848,-0.771061,0.562473) + Old Momentum Direction: (0.85824,0.3256,0.39676) + Old Polarization: (-0.44987,0.10508,0.88689) + New Momentum Direction: (0.7183,0.44136,0.53781) + New Polarization: (-0.6472,0.14024,0.74931) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1292, parentID 1) is processed with stopping code 2 +Track (trackID 1084, parentID 1) is processed with stopping code 2 ### pop requested out of 25 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.671967,0.0746739,-0.736807) - Old Polarization: (-0.699531,-0.262635,-0.664589) - New Momentum Direction: (0.907487,0.100847,-0.407795) - New Polarization: (0.415989,-0.0805872,0.905792) + Old Momentum Direction: (0.62753,-0.32712,-0.70654) + Old Polarization: (-0.7063,-0.62104,-0.33978) + New Momentum Direction: (0.84979,-0.44299,-0.28569) + New Polarization: (-0.19035,-0.7633,0.61736) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1291, parentID 1) is processed with stopping code 2 +Track (trackID 1083, parentID 1) is processed with stopping code 2 ### pop requested out of 24 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1290, parentID 1) is processed with stopping code 2 +Track (trackID 1082, parentID 1) is processed with stopping code 2 ### pop requested out of 23 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.86625,-0.192812,0.460905) - Old Polarization: (-0.483149,-0.558151,0.674563) - New Momentum Direction: (0.734454,-0.261911,0.626083) - New Polarization: (-0.666852,-0.449847,0.594093) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1289, parentID 1) is processed with stopping code 2 + +** Photon Absorbed! ** +Track (trackID 1081, parentID 1) is processed with stopping code 2 ### pop requested out of 22 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.886536,-0.362535,0.28744) - Old Polarization: (-0.460943,-0.745565,0.481316) - New Momentum Direction: (0.777455,-0.49283,0.390746) - New Polarization: (-0.627723,-0.646645,0.433375) + Old Momentum Direction: (0.78645,-0.52616,-0.32349) + Old Polarization: (-0.52919,-0.8441,0.086395) + New Momentum Direction: (0.54926,-0.71187,-0.43767) + New Polarization: (-0.76996,-0.63467,0.066008) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1288, parentID 1) is processed with stopping code 2 +Track (trackID 1080, parentID 1) is processed with stopping code 2 ### pop requested out of 21 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1287, parentID 1) is processed with stopping code 2 -### pop requested out of 20 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.561355,0.641174,-0.523236) - Old Polarization: (-0.824062,0.374875,-0.424724) - New Momentum Direction: (0.561355,-0.641174,-0.523236) - New Polarization: (0.824062,0.374875,0.424724) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.561355,-0.641174,-0.523236) - Old Polarization: (0.824062,0.374875,0.424724) - New Momentum Direction: (-0.561355,-0.641174,-0.523236) - New Polarization: (0.824062,-0.374875,-0.424724) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.561355,-0.641174,-0.523236) - Old Polarization: (0.824062,-0.374875,-0.424724) - New Momentum Direction: (-0.561355,-0.641174,0.523236) - New Polarization: (-0.824062,0.374875,-0.424724) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.561355,-0.641174,0.523236) - Old Polarization: (-0.824062,0.374875,-0.424724) - New Momentum Direction: (-0.561355,0.641174,0.523236) - New Polarization: (0.824062,0.374875,0.424724) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.561355,0.641174,0.523236) - Old Polarization: (0.824062,0.374875,0.424724) - New Momentum Direction: (0.561355,0.641174,0.523236) - New Polarization: (0.824062,-0.374875,-0.424724) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.561355,0.641174,0.523236) - Old Polarization: (0.824062,-0.374875,-0.424724) - New Momentum Direction: (0.561355,0.641174,-0.523236) - New Polarization: (-0.824062,0.374875,-0.424724) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.561355,0.641174,-0.523236) - Old Polarization: (-0.824062,0.374875,-0.424724) - New Momentum Direction: (0.561355,-0.641174,-0.523236) - New Polarization: (0.824062,0.374875,0.424724) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.561355,-0.641174,-0.523236) - Old Polarization: (0.824062,0.374875,0.424724) - New Momentum Direction: (-0.561355,-0.641174,-0.523236) - New Polarization: (0.824062,-0.374875,-0.424724) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1286, parentID 1) is processed with stopping code 2 -### pop requested out of 19 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.568564,0.542184,-0.618685) - Old Polarization: (-0.81318,0.2567,-0.522344) - New Momentum Direction: (0.568564,0.542184,0.618685) - New Polarization: (0.81318,-0.2567,-0.522344) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.568564,0.542184,0.618685) - Old Polarization: (0.81318,-0.2567,-0.522344) - New Momentum Direction: (-0.568564,0.542184,0.618685) - New Polarization: (0.81318,0.2567,0.522344) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.568564,0.542184,0.618685) - Old Polarization: (0.81318,0.2567,0.522344) - New Momentum Direction: (-0.568564,-0.542184,0.618685) - New Polarization: (-0.81318,0.2567,-0.522344) - *** TotalInternalReflection *** -No Absorbtion length specified -Scattering Photon! -Old Momentum Direction: (-0.568564,-0.542184,0.618685) -Old Polarization: (-0.81318,0.2567,-0.522344) -New Polarization: (-0.749296,-0.513579,0.275513) -Polarization Change: (-0.789338,-0.541025,0.290237) -New Momentum Direction: (-0.118684,0.581256,0.851888) -Momentum Change: (-0.114328,0.559921,0.82062) - Photon at Boundary! - Old Momentum Direction: (-0.114328,0.559921,0.82062) - Old Polarization: (-0.789338,-0.541025,0.290237) - New Momentum Direction: (-0.15548,0.761462,0.629286) - New Polarization: (-0.856886,0.212994,-0.469446) + Old Momentum Direction: (0.58694,0.78832,-0.18453) + Old Polarization: (-0.75058,0.61526,0.24101) + New Momentum Direction: (0.79746,0.54881,-0.25072) + New Polarization: (0.52455,-0.83594,-0.16141) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1285, parentID 1) is processed with stopping code 2 +Track (trackID 1079, parentID 1) is processed with stopping code 2 +### pop requested out of 20 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1078, parentID 1) is processed with stopping code 2 +### pop requested out of 19 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.46697,0.35606,-0.80942) +Old Polarization: (-0.88294,0.13738,-0.44894) +New Polarization: (-0.22283,0.88676,-0.17591) +Polarization Change: (-0.23932,0.95238,-0.18893) +New Momentum Direction: (-0.463,0.046747,0.82211) +Momentum Change: (-0.49011,0.049484,0.87025) +Scattering Photon! +Old Momentum Direction: (-0.49011,0.049484,0.87025) +Old Polarization: (-0.23932,0.95238,-0.18893) +New Polarization: (-0.37402,0.76346,-0.31416) +Polarization Change: (-0.41267,0.84235,-0.34663) +New Momentum Direction: (-0.88532,-0.45964,-0.062981) +Momentum Change: (-0.88575,-0.45986,-0.063012) + Photon at Boundary! + Old Momentum Direction: (-0.88575,-0.45986,-0.063012) + Old Polarization: (-0.41267,0.84235,-0.34663) + New Momentum Direction: (-0.77588,-0.62504,-0.085646) + New Polarization: (0.59144,-0.67338,-0.44358) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1077, parentID 1) is processed with stopping code 2 ### pop requested out of 18 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.734773,-0.142007,-0.663282) - Old Polarization: (-0.628788,-0.509373,-0.587507) - New Momentum Direction: (0.408798,-0.19106,-0.892402) - New Polarization: (-0.879618,-0.343091,-0.329487) + Old Momentum Direction: (0.92566,-0.25585,0.27874) + Old Polarization: (-0.37596,-0.53912,0.75366) + New Momentum Direction: (0.85793,-0.34742,0.37849) + New Polarization: (-0.51203,-0.51769,0.68543) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1284, parentID 1) is processed with stopping code 2 +Track (trackID 1076, parentID 1) is processed with stopping code 2 ### pop requested out of 17 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.853269,-0.460789,-0.244143) - Old Polarization: (-0.49639,-0.861162,-0.10953) - New Momentum Direction: (0.708334,-0.623736,-0.330479) - New Polarization: (-0.687728,-0.715297,-0.124018) + Old Momentum Direction: (0.89108,-0.45107,0.050089) + Old Polarization: (-0.41274,-0.75954,0.50274) + New Momentum Direction: (0.78902,-0.61061,0.067806) + New Polarization: (-0.58313,-0.70959,0.39554) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1283, parentID 1) is processed with stopping code 2 +Track (trackID 1075, parentID 1) is processed with stopping code 2 ### pop requested out of 16 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.888413,-0.446948,0.104688) - Old Polarization: (-0.45756,-0.843871,0.280215) - New Momentum Direction: (0.782939,-0.605705,0.141874) - New Polarization: (-0.621041,-0.747719,0.234999) + Old Momentum Direction: (0.91673,0.00088221,0.39951) + Old Polarization: (-0.38611,-0.2549,0.88654) + New Momentum Direction: (0.83989,0.0011985,0.54275) + New Polarization: (-0.53291,-0.18773,0.82508) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1282, parentID 1) is processed with stopping code 2 +Track (trackID 1074, parentID 1) is processed with stopping code 2 ### pop requested out of 15 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.63909,0.210692,-0.739712) - Old Polarization: (-0.736467,-0.109674,-0.667524) - New Momentum Direction: (0.863258,0.284595,-0.416884) - New Polarization: (0.367361,0.212173,0.905554) + Old Momentum Direction: (0.83279,-0.52754,-0.1678) + Old Polarization: (-0.47894,-0.83862,0.25949) + New Momentum Direction: (0.65891,-0.71683,-0.22802) + New Polarization: (-0.69558,-0.69603,0.1781) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1281, parentID 1) is processed with stopping code 2 +Track (trackID 1073, parentID 1) is processed with stopping code 2 ### pop requested out of 14 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.874531,-0.207699,0.438243) - Old Polarization: (-0.470303,-0.583763,0.661842) - New Momentum Direction: (0.75772,-0.279482,0.589704) - New Polarization: (-0.641905,-0.481984,0.596364) - *** FresnelRefraction *** + Old Momentum Direction: (0.47618,0.56485,-0.67395) + Old Polarization: (-0.87576,0.37381,-0.30547) + New Momentum Direction: (0.47618,0.56485,0.67395) + New Polarization: (0.54043,-0.79257,0.28242) + *** FresnelReflection *** No Absorbtion length specified -Track (trackID 1280, parentID 1) is processed with stopping code 2 -### pop requested out of 13 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.702012,0.519665,0.486957) - Old Polarization: (-0.665612,0.23561,0.708131) - New Momentum Direction: (0.265089,0.703592,0.659308) - New Polarization: (-0.936467,0.0249832,0.349865) - *** FresnelRefraction *** + Old Momentum Direction: (0.47618,0.56485,0.67395) + Old Polarization: (0.54043,-0.79257,0.28242) + New Momentum Direction: (0.47618,-0.56485,0.67395) + New Polarization: (-0.54043,-0.79257,-0.28242) + *** TotalInternalReflection *** No Absorbtion length specified -Track (trackID 1279, parentID 1) is processed with stopping code 2 -### pop requested out of 12 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.563288,0.821722,-0.0864864) -Old Polarization: (-0.819666,0.568921,0.0669029) -New Polarization: (-0.84013,0.415489,0.0465543) -Polarization Change: (-0.895268,0.442758,0.0496097) -New Momentum Direction: (-0.385209,-0.822827,0.445304) -Momentum Change: (-0.380719,-0.813236,0.440113) Photon at Boundary! - Old Momentum Direction: (-0.380719,-0.813236,0.440113) - Old Polarization: (-0.895268,0.442758,0.0496097) - New Momentum Direction: (-0.516887,-0.613018,0.597525) - New Polarization: (-0.731436,0.678919,0.0637964) - *** FresnelRefraction *** + Old Momentum Direction: (0.47618,-0.56485,0.67395) + Old Polarization: (-0.54043,-0.79257,-0.28242) + New Momentum Direction: (-0.47618,-0.56485,0.67395) + New Polarization: (-0.54043,0.79257,0.28242) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.47618,-0.56485,0.67395) + Old Polarization: (-0.54043,0.79257,0.28242) + New Momentum Direction: (-0.47618,-0.56485,-0.67395) + New Polarization: (0.86864,-0.42141,-0.26055) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.47618,-0.56485,-0.67395) + Old Polarization: (0.86864,-0.42141,-0.26055) + New Momentum Direction: (-0.47618,0.56485,-0.67395) + New Polarization: (-0.86864,-0.42141,0.26055) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.47618,0.56485,-0.67395) + Old Polarization: (-0.86864,-0.42141,0.26055) + New Momentum Direction: (0.47618,0.56485,-0.67395) + New Polarization: (-0.86864,0.42141,-0.26055) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.47618,0.56485,-0.67395) + Old Polarization: (-0.86864,0.42141,-0.26055) + New Momentum Direction: (0.47618,0.56485,0.67395) + New Polarization: (0.58207,-0.77694,0.23991) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.47618,0.56485,0.67395) + Old Polarization: (0.58207,-0.77694,0.23991) + New Momentum Direction: (0.47618,-0.56485,0.67395) + New Polarization: (-0.58207,-0.77694,-0.23991) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.47618,-0.56485,0.67395) + Old Polarization: (-0.58207,-0.77694,-0.23991) + New Momentum Direction: (0.47618,-0.56485,-0.67395) + New Polarization: (0.60002,0.76898,-0.22055) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.47618,-0.56485,-0.67395) + Old Polarization: (0.60002,0.76898,-0.22055) + New Momentum Direction: (-0.47618,-0.56485,-0.67395) + New Polarization: (0.60002,-0.76898,0.22055) + *** TotalInternalReflection *** No Absorbtion length specified -Track (trackID 1278, parentID 1) is processed with stopping code 2 -### pop requested out of 11 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1277, parentID 1) is processed with stopping code 2 -### pop requested out of 10 stacked tracks. +Track (trackID 1072, parentID 1) is processed with stopping code 2 +### pop requested out of 13 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.888078,-0.367763,0.275802) - Old Polarization: (-0.458354,-0.754159,0.470272) - New Momentum Direction: (0.781745,-0.498892,0.374142) - New Polarization: (-0.622648,-0.657583,0.42414) + Old Momentum Direction: (0.48731,0.18704,-0.85296) + Old Polarization: (-0.86263,-0.048608,-0.50349) + New Momentum Direction: (0.65961,0.25318,-0.70769) + New Polarization: (0.57924,0.42878,0.69328) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1276, parentID 1) is processed with stopping code 2 +Track (trackID 1071, parentID 1) is processed with stopping code 2 +### pop requested out of 12 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.65917,-0.39936,-0.63719) + Old Polarization: (-0.67065,-0.6955,-0.25788) + New Momentum Direction: (-0.65917,-0.39936,-0.63719) + New Polarization: (-0.67065,0.6955,0.25788) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.65917,-0.39936,-0.63719) + Old Polarization: (-0.67065,0.6955,0.25788) + New Momentum Direction: (-0.65917,-0.39936,0.63719) + New Polarization: (0.67065,-0.6955,0.25788) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.65917,-0.39936,0.63719) + Old Polarization: (0.67065,-0.6955,0.25788) + New Momentum Direction: (-0.65917,0.39936,0.63719) + New Polarization: (-0.67065,-0.6955,-0.25788) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.65917,0.39936,0.63719) + Old Polarization: (-0.67065,-0.6955,-0.25788) + New Momentum Direction: (0.65917,0.39936,0.63719) + New Polarization: (-0.67065,0.6955,0.25788) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.65917,0.39936,0.63719) + Old Polarization: (-0.67065,0.6955,0.25788) + New Momentum Direction: (0.65917,0.39936,-0.63719) + New Polarization: (0.67065,-0.6955,0.25788) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.65917,0.39936,-0.63719) + Old Polarization: (0.67065,-0.6955,0.25788) + New Momentum Direction: (0.65917,0.39936,0.63719) + New Polarization: (-0.67065,0.6955,0.25788) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.65917,0.39936,0.63719) + Old Polarization: (-0.67065,0.6955,0.25788) + New Momentum Direction: (0.65917,-0.39936,0.63719) + New Polarization: (0.67065,0.6955,-0.25788) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.65917,-0.39936,0.63719) + Old Polarization: (0.67065,0.6955,-0.25788) + New Momentum Direction: (0.65917,-0.39936,-0.63719) + New Polarization: (-0.67065,-0.6955,-0.25788) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.65917,-0.39936,-0.63719) + Old Polarization: (-0.67065,-0.6955,-0.25788) + New Momentum Direction: (-0.65917,-0.39936,-0.63719) + New Polarization: (-0.67065,0.6955,0.25788) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.65917,-0.39936,-0.63719) + Old Polarization: (-0.67065,0.6955,0.25788) + New Momentum Direction: (-0.65917,-0.39936,0.63719) + New Polarization: (0.67065,-0.6955,0.25788) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.65917,-0.39936,0.63719) + Old Polarization: (0.67065,-0.6955,0.25788) + New Momentum Direction: (-0.65917,-0.39936,-0.63719) + New Polarization: (-0.67065,0.6955,0.25788) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.65917,-0.39936,-0.63719) + Old Polarization: (-0.67065,0.6955,0.25788) + New Momentum Direction: (0.65917,-0.39936,-0.63719) + New Polarization: (-0.67065,-0.6955,-0.25788) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1070, parentID 1) is processed with stopping code 2 +### pop requested out of 11 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.58951,-0.23181,-0.77379) + Old Polarization: (-0.7489,-0.51584,-0.41601) + New Momentum Direction: (0.58951,-0.23181,0.77379) + New Polarization: (0.26767,0.95987,0.083638) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.58951,-0.23181,0.77379) + Old Polarization: (0.26767,0.95987,0.083638) + New Momentum Direction: (-0.58951,-0.23181,0.77379) + New Polarization: (0.26767,-0.95987,-0.083638) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.58951,-0.23181,0.77379) + Old Polarization: (0.26767,-0.95987,-0.083638) + New Momentum Direction: (-0.79751,-0.3136,0.5154) + New Polarization: (0.26927,-0.9495,-0.16107) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1069, parentID 1) is processed with stopping code 2 +### pop requested out of 10 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.48842,0.66865,-0.56068) +Old Polarization: (-0.85894,0.48169,-0.1738) +New Polarization: (-0.59924,0.65222,-0.12376) +Polarization Change: (-0.67005,0.7293,-0.13838) +New Momentum Direction: (-0.33748,-0.15275,0.82907) +Momentum Change: (-0.37165,-0.16822,0.91301) +Scattering Photon! +Old Momentum Direction: (-0.37165,-0.16822,0.91301) +Old Polarization: (-0.67005,0.7293,-0.13838) +New Polarization: (-0.46744,0.45889,0.59443) +Polarization Change: (-0.52845,0.51878,0.67201) +New Momentum Direction: (0.21811,0.80474,-0.44973) +Momentum Change: (0.23024,0.84948,-0.47473) + Photon at Boundary! + Old Momentum Direction: (0.23024,0.84948,-0.47473) + Old Polarization: (-0.52845,0.51878,0.67201) + New Momentum Direction: (0.31313,0.69647,-0.64566) + New Polarization: (0.18335,-0.71139,-0.67846) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1068, parentID 1) is processed with stopping code 2 ### pop requested out of 9 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1275, parentID 1) is processed with stopping code 2 +Track (trackID 1067, parentID 1) is processed with stopping code 2 ### pop requested out of 8 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.595491,0.388894,-0.70296) -Old Polarization: (-0.783335,0.0869162,-0.615494) -New Polarization: (-0.802052,0.253563,-0.256917) -Polarization Change: (-0.911901,0.288291,-0.292105) -New Momentum Direction: (-0.354162,-0.901772,0.284635) -Momentum Change: (-0.350734,-0.893045,0.281881) Photon at Boundary! - Old Momentum Direction: (-0.350734,-0.893045,0.281881) - Old Polarization: (-0.911901,0.288291,-0.292105) - New Momentum Direction: (-0.350734,0.893045,0.281881) - New Polarization: (0.376425,-0.141172,0.915628) - *** FresnelReflection *** + Old Momentum Direction: (0.69961,-0.45374,-0.55197) + Old Polarization: (-0.62606,-0.76158,-0.16747) + New Momentum Direction: (0.25142,-0.61463,-0.74768) + New Polarization: (-0.91289,-0.40725,0.027803) + *** FresnelRefraction *** No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1274, parentID 1) is processed with stopping code 2 +Track (trackID 1066, parentID 1) is processed with stopping code 2 ### pop requested out of 7 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1273, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.91734,-0.34614,0.19668) + Old Polarization: (-0.3843,-0.64089,0.66451) + New Momentum Direction: (0.84184,-0.46927,0.26663) + New Polarization: (-0.52955,-0.62266,0.57608) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1065, parentID 1) is processed with stopping code 2 ### pop requested out of 6 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.636147,0.717012,0.284976) - Old Polarization: (-0.740383,0.463329,0.48699) - New Momentum Direction: (0.856949,0.3439,0.383889) - New Polarization: (0.00515693,-0.75052,0.660827) + Old Momentum Direction: (0.4666,0.36102,-0.80743) + Old Polarization: (-0.88327,0.1428,-0.44658) + New Momentum Direction: (0.63428,0.49076,-0.59737) + New Polarization: (0.086472,0.7228,0.68563) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1272, parentID 1) is processed with stopping code 2 +Track (trackID 1064, parentID 1) is processed with stopping code 2 ### pop requested out of 5 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.48774,0.62961,-0.60473) + Old Polarization: (-0.86378,0.44841,-0.22981) + New Momentum Direction: (0.48774,-0.62961,-0.60473) + New Polarization: (0.86378,0.44841,0.22981) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.48774,-0.62961,-0.60473) + Old Polarization: (0.86378,0.44841,0.22981) + New Momentum Direction: (0.48774,-0.62961,0.60473) + New Polarization: (-0.86378,-0.44841,0.22981) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.48774,-0.62961,0.60473) + Old Polarization: (-0.86378,-0.44841,0.22981) + New Momentum Direction: (-0.48774,-0.62961,0.60473) + New Polarization: (-0.86378,0.44841,-0.22981) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.48774,-0.62961,0.60473) + Old Polarization: (-0.86378,0.44841,-0.22981) + New Momentum Direction: (-0.48774,0.62961,0.60473) + New Polarization: (0.86378,0.44841,0.22981) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.48774,0.62961,0.60473) + Old Polarization: (0.86378,0.44841,0.22981) + New Momentum Direction: (-0.48774,0.62961,-0.60473) + New Polarization: (-0.86378,-0.44841,0.22981) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.48774,0.62961,-0.60473) + Old Polarization: (-0.86378,-0.44841,0.22981) + New Momentum Direction: (0.48774,0.62961,-0.60473) + New Polarization: (-0.86378,0.44841,-0.22981) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.48774,0.62961,-0.60473) + Old Polarization: (-0.86378,0.44841,-0.22981) + New Momentum Direction: (0.48774,-0.62961,-0.60473) + New Polarization: (0.86378,0.44841,0.22981) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.48774,-0.62961,-0.60473) + Old Polarization: (0.86378,0.44841,0.22981) + New Momentum Direction: (0.48774,-0.62961,0.60473) + New Polarization: (-0.86378,-0.44841,0.22981) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.48774,-0.62961,0.60473) + Old Polarization: (-0.86378,-0.44841,0.22981) + New Momentum Direction: (-0.48774,-0.62961,0.60473) + New Polarization: (-0.86378,0.44841,-0.22981) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.48774,-0.62961,0.60473) + Old Polarization: (-0.86378,0.44841,-0.22981) + New Momentum Direction: (-0.48774,0.62961,0.60473) + New Polarization: (0.86378,0.44841,0.22981) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.48774,0.62961,0.60473) + Old Polarization: (0.86378,0.44841,0.22981) + New Momentum Direction: (-0.48774,0.62961,-0.60473) + New Polarization: (-0.86378,-0.44841,0.22981) + *** TotalInternalReflection *** +No Absorbtion length specified ** Photon Absorbed! ** -Track (trackID 1271, parentID 1) is processed with stopping code 2 +Track (trackID 1063, parentID 1) is processed with stopping code 2 ### pop requested out of 4 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.679431,0.602867,0.41824) - Old Polarization: (-0.691584,0.335747,0.63952) - New Momentum Direction: (-0.679431,0.602867,0.41824) - New Polarization: (-0.661483,-0.256611,-0.704692) - *** FresnelReflection *** + Old Momentum Direction: (0.92194,-0.30424,0.23971) + Old Polarization: (-0.38018,-0.59246,0.71025) + New Momentum Direction: (0.85046,-0.4132,0.32555) + New Polarization: (-0.52083,-0.57458,0.63134) + *** FresnelRefraction *** No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.679431,0.602867,0.41824) - Old Polarization: (-0.661483,-0.256611,-0.704692) - New Momentum Direction: (-0.679431,-0.602867,0.41824) - New Polarization: (0.661483,-0.256611,0.704692) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.679431,-0.602867,0.41824) - Old Polarization: (0.661483,-0.256611,0.704692) - New Momentum Direction: (-0.679431,-0.602867,-0.41824) - New Polarization: (-0.661483,0.256611,0.704692) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.679431,-0.602867,-0.41824) - Old Polarization: (-0.661483,0.256611,0.704692) - New Momentum Direction: (0.679431,-0.602867,-0.41824) - New Polarization: (0.615187,0.778712,-0.123094) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.679431,-0.602867,-0.41824) - Old Polarization: (0.615187,0.778712,-0.123094) - New Momentum Direction: (0.679431,0.602867,-0.41824) - New Polarization: (-0.615187,0.778712,0.123094) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1270, parentID 1) is processed with stopping code 2 +Track (trackID 1062, parentID 1) is processed with stopping code 2 ### pop requested out of 3 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.553764,0.799378,-0.23311) - Old Polarization: (-0.83116,0.547528,-0.0968857) - New Momentum Direction: (0.750177,0.580956,-0.315791) - New Polarization: (0.392684,-0.775656,-0.494122) + Old Momentum Direction: (0.89849,0.12926,0.41952) + Old Polarization: (-0.40697,-0.11301,0.90642) + New Momentum Direction: (0.80207,0.17586,0.57075) + New Polarization: (-0.57327,-0.041293,0.81833) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1269, parentID 1) is processed with stopping code 2 +Track (trackID 1061, parentID 1) is processed with stopping code 2 ### pop requested out of 2 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.623332,0.742644,0.244819) -Old Polarization: (-0.754156,0.488206,0.439209) -New Polarization: (-0.0472535,0.871807,0.177495) -Polarization Change: (-0.0530375,0.978518,0.199221) -New Momentum Direction: (-0.611337,0.108456,-0.883596) -Momentum Change: (-0.566092,0.100429,-0.818201) Photon at Boundary! - Old Momentum Direction: (-0.566092,0.100429,-0.818201) - Old Polarization: (-0.0530375,0.978518,0.199221) - New Momentum Direction: (-0.566092,-0.100429,-0.818201) - New Polarization: (0.0530375,0.978518,-0.199221) + Old Momentum Direction: (0.77028,0.58325,0.25786) + Old Polarization: (-0.54682,0.39605,0.73766) + New Momentum Direction: (0.50894,0.7873,0.34807) + New Polarization: (-0.79413,0.27339,0.54278) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1060, parentID 1) is processed with stopping code 2 +### pop requested out of 1 stacked tracks. + + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 105 +Track (trackID 1, parentID 0) is processed with stopping code 4 +### pop requested out of 106 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.58471,0.66922,-0.45854) + Old Polarization: (-0.80686,0.42111,-0.41429) + New Momentum Direction: (0.58471,-0.66922,-0.45854) + New Polarization: (0.80686,0.42111,0.41429) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (-0.566092,-0.100429,-0.818201) - Old Polarization: (0.0530375,0.978518,-0.199221) - New Momentum Direction: (-0.764732,-0.135669,-0.629904) - New Polarization: (-0.409783,0.856819,0.312953) - *** FresnelRefraction *** + Old Momentum Direction: (0.58471,-0.66922,-0.45854) + Old Polarization: (0.80686,0.42111,0.41429) + New Momentum Direction: (-0.58471,-0.66922,-0.45854) + New Polarization: (0.80686,-0.42111,-0.41429) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.58471,-0.66922,-0.45854) + Old Polarization: (0.80686,-0.42111,-0.41429) + New Momentum Direction: (-0.58471,-0.66922,0.45854) + New Polarization: (-0.80686,0.42111,-0.41429) + *** TotalInternalReflection *** No Absorbtion length specified -Track (trackID 1268, parentID 1) is processed with stopping code 2 -### pop requested out of 1 stacked tracks. - - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 104 -Track (trackID 1, parentID 0) is processed with stopping code 4 -### pop requested out of 105 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1523, parentID 1) is processed with stopping code 2 +Track (trackID 1321, parentID 1) is processed with stopping code 2 +### pop requested out of 105 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.82981,-0.38499,-0.40398) + Old Polarization: (-0.53137,-0.76627,-0.36121) + New Momentum Direction: (0.65988,-0.51836,-0.54393) + New Polarization: (-0.73218,-0.60617,-0.3106) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1320, parentID 1) is processed with stopping code 2 ### pop requested out of 104 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.976275,0.184218,0.113803) - Old Polarization: (0.151663,-0.956855,0.247843) - New Momentum Direction: (0.956748,0.247499,0.152896) - New Polarization: (-0.232037,0.332204,0.914221) + Old Momentum Direction: (0.86769,-0.48715,-0.098994) + Old Polarization: (-0.49069,-0.87123,-0.013629) + New Momentum Direction: (0.73889,-0.66033,-0.13419) + New Polarization: (-0.66927,-0.74231,-0.032437) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1522, parentID 1) is processed with stopping code 2 +Track (trackID 1319, parentID 1) is processed with stopping code 2 ### pop requested out of 103 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.0387395,0.996396,-0.0754625) - Old Polarization: (-0.998852,-0.0364834,0.0310507) - New Momentum Direction: (-0.0526289,0.993338,-0.102518) - New Polarization: (-0.993315,-0.0626354,-0.0969678) + Old Momentum Direction: (0.70656,0.071971,-0.70398) + Old Polarization: (-0.67136,-0.24635,-0.699) + New Momentum Direction: (0.29782,0.097089,-0.94967) + New Polarization: (-0.93255,-0.18311,-0.31117) *** FresnelRefraction *** No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.0526289,0.993338,-0.102518) - Old Polarization: (-0.993315,-0.0626354,-0.0969678) - New Momentum Direction: (-0.0387395,0.996396,-0.0754625) - New Polarization: (-0.998862,-0.0365112,0.030689) - *** FresnelRefraction *** - Photon at Boundary! - Old Momentum Direction: (-0.0387395,0.996396,-0.0754625) - Old Polarization: (-0.998862,-0.0365112,0.030689) - New Momentum Direction: (-0.0526289,0.993338,-0.102518) - New Polarization: (-0.993271,-0.0626766,-0.09739) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1521, parentID 1) is processed with stopping code 2 +Track (trackID 1318, parentID 1) is processed with stopping code 2 ### pop requested out of 102 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.384368,0.715689,0.583138) - Old Polarization: (-0.526263,-0.349114,0.77535) - New Momentum Direction: (0.519911,0.327914,0.788774) - New Polarization: (-0.510395,-0.621186,0.594664) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1520, parentID 1) is processed with stopping code 2 + +** Photon Absorbed! ** +Track (trackID 1317, parentID 1) is processed with stopping code 2 ### pop requested out of 101 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.0375784,0.996485,-0.0748676) - Old Polarization: (-0.998875,-0.035289,0.0316716) - New Momentum Direction: (-0.0509994,0.993517,-0.101606) - New Polarization: (-0.993702,-0.0606454,-0.094227) - *** FresnelRefraction *** + Old Momentum Direction: (0.60602,0.52627,-0.59647) + Old Polarization: (-0.78258,0.26008,-0.56562) + New Momentum Direction: (-0.60602,0.52627,-0.59647) + New Polarization: (-0.78258,-0.26008,0.56562) + *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (-0.0509994,0.993517,-0.101606) - Old Polarization: (-0.993702,-0.0606454,-0.094227) - New Momentum Direction: (-0.0375784,0.996485,-0.0748676) - New Polarization: (-0.998885,-0.0353152,0.0313272) - *** FresnelRefraction *** - Photon at Boundary! - Old Momentum Direction: (-0.0375784,0.996485,-0.0748676) - Old Polarization: (-0.998885,-0.0353152,0.0313272) - New Momentum Direction: (-0.0375784,-0.996485,-0.0748676) - New Polarization: (0.627681,0.034759,-0.777694) - *** FresnelReflection *** + Old Momentum Direction: (-0.60602,0.52627,-0.59647) + Old Polarization: (-0.78258,-0.26008,0.56562) + New Momentum Direction: (-0.60602,0.52627,0.59647) + New Polarization: (0.78258,0.26008,0.56562) + *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (-0.0375784,-0.996485,-0.0748676) - Old Polarization: (0.627681,0.034759,-0.777694) - New Momentum Direction: (-0.0509994,-0.993517,-0.101606) - New Polarization: (0.525225,0.059851,-0.848856) - *** FresnelRefraction *** + Old Momentum Direction: (-0.60602,0.52627,0.59647) + Old Polarization: (0.78258,0.26008,0.56562) + New Momentum Direction: (-0.60602,-0.52627,0.59647) + New Polarization: (-0.78258,0.26008,-0.56562) + *** TotalInternalReflection *** No Absorbtion length specified -Track (trackID 1519, parentID 1) is processed with stopping code 2 + +** Photon Absorbed! ** +Track (trackID 1316, parentID 1) is processed with stopping code 2 ### pop requested out of 100 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.105253,0.921575,0.373659) - Old Polarization: (-0.837279,-0.120608,0.533308) - New Momentum Direction: (0.14305,0.849488,0.507845) - New Polarization: (-0.783358,-0.216424,0.582676) + Old Momentum Direction: (0.6216,0.72505,0.2965) + Old Polarization: (-0.76545,0.48176,0.42661) + New Momentum Direction: (0.84506,0.35126,0.4031) + New Polarization: (0.021584,-0.77572,0.63071) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1518, parentID 1) is processed with stopping code 2 +Track (trackID 1315, parentID 1) is processed with stopping code 2 ### pop requested out of 99 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1517, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.73272,-0.044842,-0.67905) + Old Polarization: (-0.64176,-0.3775,-0.66756) + New Momentum Direction: (0.39228,-0.060612,-0.91785) + New Polarization: (-0.89477,-0.25655,-0.36548) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1314, parentID 1) is processed with stopping code 2 ### pop requested out of 98 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1516, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.65107,0.3112,-0.69229) + Old Polarization: (-0.7334,0.022957,-0.67941) + New Momentum Direction: (0.88168,0.42143,-0.21222) + New Polarization: (0.09204,0.28752,0.95334) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1313, parentID 1) is processed with stopping code 2 ### pop requested out of 97 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1515, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.69908,0.10635,-0.70709) + Old Polarization: (-0.67986,-0.20751,-0.70337) + New Momentum Direction: (0.94258,0.14339,-0.30163) + New Polarization: (0.30772,-0.021899,0.95122) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1312, parentID 1) is processed with stopping code 2 ### pop requested out of 96 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.983124,0.149295,-0.105728) - Old Polarization: (0.14979,-0.988712,-0.00328583) - New Momentum Direction: (-0.983124,0.149295,-0.105728) - New Polarization: (0.144868,0.988265,0.0484253) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.983124,0.149295,-0.105728) - Old Polarization: (0.144868,0.988265,0.0484253) - New Momentum Direction: (-0.968861,0.202065,-0.143099) - New Polarization: (0.215249,0.972988,-0.0834367) + Old Momentum Direction: (0.60864,0.77815,0.15502) + Old Polarization: (-0.78315,0.55779,0.27486) + New Momentum Direction: (0.81857,0.53524,0.20849) + New Polarization: (0.4028,-0.79364,0.45595) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1514, parentID 1) is processed with stopping code 2 +Track (trackID 1311, parentID 1) is processed with stopping code 2 ### pop requested out of 95 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1513, parentID 1) is processed with stopping code 2 +Track (trackID 1310, parentID 1) is processed with stopping code 2 ### pop requested out of 94 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1512, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.57214,0.78592,-0.23449) + Old Polarization: (-0.82016,0.54826,-0.16358) + New Momentum Direction: (0.77843,0.54062,-0.31903) + New Polarization: (0.34117,-0.79098,-0.5079) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1309, parentID 1) is processed with stopping code 2 ### pop requested out of 93 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.718305,0.324186,-0.615582) - Old Polarization: (-0.145091,-0.795547,-0.588264) - New Momentum Direction: (0.353168,0.435939,-0.827786) - New Polarization: (-0.282699,-0.793715,-0.538607) + Old Momentum Direction: (0.58454,0.68586,-0.43348) + Old Polarization: (-0.80792,0.44289,-0.38872) + New Momentum Direction: (0.79184,0.16787,-0.5872) + New Polarization: (-0.26724,-0.7693,-0.5803) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1511, parentID 1) is processed with stopping code 2 +Track (trackID 1308, parentID 1) is processed with stopping code 2 ### pop requested out of 92 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.491104,0.500195,-0.713177) - Old Polarization: (-0.405497,-0.593327,-0.695367) - New Momentum Direction: (0.662206,0.674465,-0.326466) - New Polarization: (0.288036,0.173087,0.941847) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1510, parentID 1) is processed with stopping code 2 + +** Photon Absorbed! ** +Track (trackID 1307, parentID 1) is processed with stopping code 2 ### pop requested out of 91 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.984427,0.164401,0.0622613) -Old Polarization: (0.150377,-0.970947,0.186141) -New Polarization: (-0.730756,-0.440726,0.378907) -Polarization Change: (-0.782637,-0.472016,0.405808) -New Momentum Direction: (0.484907,-0.116886,0.93991) -Momentum Change: (0.455713,-0.109849,0.883323) Photon at Boundary! - Old Momentum Direction: (0.455713,-0.109849,0.883323) - Old Polarization: (-0.782637,-0.472016,0.405808) - New Momentum Direction: (-0.455713,-0.109849,0.883323) - New Polarization: (-0.782637,0.472016,-0.405808) + Old Momentum Direction: (0.62594,0.46572,-0.62555) + Old Polarization: (-0.76328,0.20126,-0.61392) + New Momentum Direction: (-0.62594,0.46572,-0.62555) + New Polarization: (-0.76328,-0.20126,0.61392) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (-0.455713,-0.109849,0.883323) - Old Polarization: (-0.782637,0.472016,-0.405808) - New Momentum Direction: (-0.617209,-0.148778,0.772605) - New Polarization: (-0.763746,0.349247,-0.542879) - *** FresnelRefraction *** + Old Momentum Direction: (-0.62594,0.46572,-0.62555) + Old Polarization: (-0.76328,-0.20126,0.61392) + New Momentum Direction: (-0.62594,0.46572,0.62555) + New Polarization: (0.76328,0.20126,0.61392) + *** TotalInternalReflection *** No Absorbtion length specified -Track (trackID 1509, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (-0.62594,0.46572,0.62555) + Old Polarization: (0.76328,0.20126,0.61392) + New Momentum Direction: (-0.62594,-0.46572,0.62555) + New Polarization: (-0.76328,0.20126,-0.61392) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.62594,-0.46572,0.62555) + Old Polarization: (-0.76328,0.20126,-0.61392) + New Momentum Direction: (-0.62594,-0.46572,-0.62555) + New Polarization: (0.76328,-0.20126,-0.61392) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1306, parentID 1) is processed with stopping code 2 ### pop requested out of 90 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.95852,0.204738,0.198298) - Old Polarization: (0.127814,-0.930598,0.343002) - New Momentum Direction: (0.92334,0.275822,0.267145) - New Polarization: (-0.21584,-0.202589,0.955181) + Old Momentum Direction: (0.8479,-0.4585,-0.26615) + Old Polarization: (-0.51376,-0.8345,-0.19914) + New Momentum Direction: (0.69318,-0.62336,-0.36185) + New Polarization: (-0.70917,-0.67955,-0.18785) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1508, parentID 1) is processed with stopping code 2 +Track (trackID 1305, parentID 1) is processed with stopping code 2 ### pop requested out of 89 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.350148,0.619492,-0.702585) - Old Polarization: (-0.56643,-0.457352,-0.685555) - New Momentum Direction: (0.471514,0.834216,-0.285934) - New Polarization: (-0.0178106,0.333182,0.942694) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1507, parentID 1) is processed with stopping code 2 + +** Photon Absorbed! ** +Track (trackID 1304, parentID 1) is processed with stopping code 2 ### pop requested out of 88 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.295511,0.788339,0.539625) - Old Polarization: (-0.628305,-0.265126,0.731397) - New Momentum Direction: (0.398372,0.558663,0.727458) - New Polarization: (-0.575796,-0.465041,0.672455) + Old Momentum Direction: (0.75404,0.24943,0.60762) + Old Polarization: (-0.61762,-0.045538,0.78515) + New Momentum Direction: (0.46322,0.33656,0.81985) + New Polarization: (-0.85982,-0.053539,0.50778) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1506, parentID 1) is processed with stopping code 2 +Track (trackID 1303, parentID 1) is processed with stopping code 2 ### pop requested out of 87 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.575428,0.427438,-0.697265) - Old Polarization: (-0.310632,-0.674443,-0.669802) - New Momentum Direction: (0.575428,0.427438,0.697265) - New Polarization: (-0.790205,0.070773,0.608743) - *** FresnelReflection *** + Old Momentum Direction: (0.78353,-0.25532,-0.56648) + Old Polarization: (-0.58519,-0.60972,-0.53459) + New Momentum Direction: (0.53664,-0.34673,-0.76928) + New Polarization: (-0.81893,-0.43375,-0.37577) + *** FresnelRefraction *** No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.575428,0.427438,0.697265) - Old Polarization: (-0.790205,0.070773,0.608743) - New Momentum Direction: (-0.575428,0.427438,0.697265) - New Polarization: (-0.790205,-0.070773,-0.608743) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.575428,0.427438,0.697265) - Old Polarization: (-0.790205,-0.070773,-0.608743) - New Momentum Direction: (-0.575428,-0.427438,0.697265) - New Polarization: (0.790205,-0.070773,0.608743) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1505, parentID 1) is processed with stopping code 2 +Track (trackID 1302, parentID 1) is processed with stopping code 2 ### pop requested out of 86 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.0222508,0.920909,-0.389142) - Old Polarization: (-0.938424,-0.114992,-0.325788) - New Momentum Direction: (0.0300254,0.850503,-0.525113) - New Polarization: (-0.90109,-0.204333,-0.382473) + Old Momentum Direction: (0.82317,-0.091808,0.56032) + Old Polarization: (-0.54061,-0.4284,0.72403) + New Momentum Direction: (0.63818,-0.12449,0.75975) + New Polarization: (-0.75064,-0.31988,0.57811) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1504, parentID 1) is processed with stopping code 2 +Track (trackID 1301, parentID 1) is processed with stopping code 2 ### pop requested out of 85 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.979888,0.156393,-0.123939) - Old Polarization: (0.154482,-0.987681,-0.0249431) - New Momentum Direction: (0.963317,0.210327,-0.166681) - New Polarization: (-0.229464,0.323473,-0.917993) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1503, parentID 1) is processed with stopping code 2 -### pop requested out of 84 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1502, parentID 1) is processed with stopping code 2 +Track (trackID 1300, parentID 1) is processed with stopping code 2 +### pop requested out of 84 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.87104,-0.48932,-0.043017) + Old Polarization: (-0.48734,-0.87183,0.049028) + New Momentum Direction: (0.74545,-0.66401,-0.058373) + New Polarization: (-0.66383,-0.74746,0.02509) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1299, parentID 1) is processed with stopping code 2 ### pop requested out of 83 stacked tracks. Scattering Photon! -Old Momentum Direction: (0.679284,0.470363,0.563322) -Old Polarization: (-0.19218,-0.626801,0.755108) -New Polarization: (-0.189942,-0.621508,0.756557) -Polarization Change: (-0.190445,-0.623153,0.758559) -New Momentum Direction: (0.507058,-0.722862,-0.472347) -Momentum Change: (0.506362,-0.72187,-0.471699) +Old Momentum Direction: (0.74721,-0.11744,-0.65413) +Old Polarization: (-0.62566,-0.45621,-0.63279) +New Polarization: (-0.58789,-0.38387,-0.66043) +Polarization Change: (-0.6099,-0.39824,-0.68515) +New Momentum Direction: (-0.33161,0.90974,-0.2336) +Momentum Change: (-0.33292,0.91333,-0.23452) Photon at Boundary! - Old Momentum Direction: (0.506362,-0.72187,-0.471699) - Old Polarization: (-0.190445,-0.623153,0.758559) - New Momentum Direction: (-0.506362,-0.72187,-0.471699) - New Polarization: (-0.190445,0.623153,-0.758559) - *** TotalInternalReflection *** + Old Momentum Direction: (-0.33292,0.91333,-0.23452) + Old Polarization: (-0.6099,-0.39824,-0.68515) + New Momentum Direction: (-0.45197,0.83328,-0.31838) + New Polarization: (-0.58487,-0.54631,-0.59956) + *** FresnelRefraction *** No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.506362,-0.72187,-0.471699) - Old Polarization: (-0.190445,0.623153,-0.758559) - New Momentum Direction: (-0.506362,0.72187,-0.471699) - New Polarization: (-0.143908,0.4686,0.87161) - *** FresnelReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1501, parentID 1) is processed with stopping code 2 +Track (trackID 1298, parentID 1) is processed with stopping code 2 ### pop requested out of 82 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.403758,0.571212,-0.71463) - Old Polarization: (-0.504688,-0.512453,-0.694753) - New Momentum Direction: (0.545151,0.771246,-0.328619) - New Polarization: (0.125864,0.312249,0.941626) + Old Momentum Direction: (0.58036,0.78663,-0.21069) + Old Polarization: (-0.81432,0.56308,-0.14081) + New Momentum Direction: (0.78264,0.55385,-0.28412) + New Polarization: (0.39324,-0.79374,-0.46405) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1500, parentID 1) is processed with stopping code 2 +Track (trackID 1297, parentID 1) is processed with stopping code 2 ### pop requested out of 81 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.131037,0.903105,0.408938) - Old Polarization: (-0.807896,-0.141793,0.572013) - New Momentum Direction: (0.178207,0.811753,0.556147) - New Polarization: (-0.749507,-0.254226,0.611235) + Old Momentum Direction: (0.86888,-0.48961,-0.072981) + Old Polarization: (-0.48987,-0.87166,0.015583) + New Momentum Direction: (0.7406,-0.6646,-0.099065) + New Polarization: (-0.6683,-0.74387,-0.0057148) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1499, parentID 1) is processed with stopping code 2 +Track (trackID 1296, parentID 1) is processed with stopping code 2 ### pop requested out of 80 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1498, parentID 1) is processed with stopping code 2 -### pop requested out of 79 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.159817,0.777571,-0.608146) -Old Polarization: (-0.776042,-0.281787,-0.564229) -New Polarization: (-0.810096,0.413687,0.181343) -Polarization Change: (-0.873408,0.446018,0.195516) -New Momentum Direction: (-0.145176,-0.602496,0.848489) -Momentum Change: (-0.138168,-0.573413,0.807531) Photon at Boundary! - Old Momentum Direction: (-0.138168,-0.573413,0.807531) - Old Polarization: (-0.873408,0.446018,0.195516) - New Momentum Direction: (-0.187838,-0.779549,0.597512) - New Polarization: (-0.944144,-0.0243903,-0.328629) + Old Momentum Direction: (0.60363,0.77927,0.1684) + Old Polarization: (-0.78648,0.5474,0.28601) + New Momentum Direction: (0.81782,0.52832,0.22816) + New Polarization: (0.37713,-0.79149,0.48096) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1497, parentID 1) is processed with stopping code 2 -### pop requested out of 78 stacked tracks. +Track (trackID 1295, parentID 1) is processed with stopping code 2 +### pop requested out of 79 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1496, parentID 1) is processed with stopping code 2 +Track (trackID 1294, parentID 1) is processed with stopping code 2 +### pop requested out of 78 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.82106,-0.38639,-0.4202) + Old Polarization: (-0.54379,-0.75335,-0.36981) + New Momentum Direction: (0.62995,-0.52568,-0.57168) + New Polarization: (-0.75761,-0.57787,-0.30346) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1293, parentID 1) is processed with stopping code 2 ### pop requested out of 77 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.549506,0.577604,0.603669) - Old Polarization: (-0.340194,-0.50524,0.793096) - New Momentum Direction: (0.549506,0.577604,-0.603669) - New Polarization: (0.340194,0.50524,0.793096) + Old Momentum Direction: (0.7826,0.09974,0.61449) + Old Polarization: (-0.58629,-0.2138,0.78138) + New Momentum Direction: (0.53357,0.13551,0.83483) + New Polarization: (-0.82087,-0.1547,0.54976) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1292, parentID 1) is processed with stopping code 2 +### pop requested out of 76 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.66897,0.57978,0.46512) + Old Polarization: (-0.71347,0.3254,0.62054) + New Momentum Direction: (-0.66897,0.57978,0.46512) + New Polarization: (-0.71347,-0.3254,-0.62054) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (0.549506,0.577604,-0.603669) - Old Polarization: (0.340194,0.50524,0.793096) - New Momentum Direction: (0.549506,-0.577604,-0.603669) - New Polarization: (-0.340194,0.50524,-0.793096) + Old Momentum Direction: (-0.66897,0.57978,0.46512) + Old Polarization: (-0.71347,-0.3254,-0.62054) + New Momentum Direction: (-0.66897,-0.57978,0.46512) + New Polarization: (0.71347,-0.3254,0.62054) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (0.549506,-0.577604,-0.603669) - Old Polarization: (-0.340194,0.50524,-0.793096) - New Momentum Direction: (-0.549506,-0.577604,-0.603669) - New Polarization: (-0.340194,-0.50524,0.793096) + Old Momentum Direction: (-0.66897,-0.57978,0.46512) + Old Polarization: (0.71347,-0.3254,0.62054) + New Momentum Direction: (-0.66897,-0.57978,-0.46512) + New Polarization: (-0.71347,0.3254,0.62054) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (-0.549506,-0.577604,-0.603669) - Old Polarization: (-0.340194,-0.50524,0.793096) - New Momentum Direction: (-0.549506,-0.577604,0.603669) - New Polarization: (0.340194,0.50524,0.793096) + Old Momentum Direction: (-0.66897,-0.57978,-0.46512) + Old Polarization: (-0.71347,0.3254,0.62054) + New Momentum Direction: (0.66897,-0.57978,-0.46512) + New Polarization: (-0.71347,-0.3254,-0.62054) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (-0.549506,-0.577604,0.603669) - Old Polarization: (0.340194,0.50524,0.793096) - New Momentum Direction: (-0.549506,0.577604,0.603669) - New Polarization: (-0.340194,0.50524,-0.793096) + Old Momentum Direction: (0.66897,-0.57978,-0.46512) + Old Polarization: (-0.71347,-0.3254,-0.62054) + New Momentum Direction: (0.66897,0.57978,-0.46512) + New Polarization: (0.71347,-0.3254,0.62054) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (-0.549506,0.577604,0.603669) - Old Polarization: (-0.340194,0.50524,-0.793096) - New Momentum Direction: (0.549506,0.577604,0.603669) - New Polarization: (-0.340194,-0.50524,0.793096) + Old Momentum Direction: (0.66897,0.57978,-0.46512) + Old Polarization: (0.71347,-0.3254,0.62054) + New Momentum Direction: (0.66897,0.57978,0.46512) + New Polarization: (-0.71347,0.3254,0.62054) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (0.549506,0.577604,0.603669) - Old Polarization: (-0.340194,-0.50524,0.793096) - New Momentum Direction: (0.549506,0.577604,-0.603669) - New Polarization: (0.340194,0.50524,0.793096) + Old Momentum Direction: (0.66897,0.57978,0.46512) + Old Polarization: (-0.71347,0.3254,0.62054) + New Momentum Direction: (-0.66897,0.57978,0.46512) + New Polarization: (-0.71347,-0.3254,-0.62054) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (0.549506,0.577604,-0.603669) - Old Polarization: (0.340194,0.50524,0.793096) - New Momentum Direction: (0.549506,-0.577604,-0.603669) - New Polarization: (-0.340194,0.50524,-0.793096) + Old Momentum Direction: (-0.66897,0.57978,0.46512) + Old Polarization: (-0.71347,-0.3254,-0.62054) + New Momentum Direction: (-0.66897,-0.57978,0.46512) + New Polarization: (0.71347,-0.3254,0.62054) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (0.549506,-0.577604,-0.603669) - Old Polarization: (-0.340194,0.50524,-0.793096) - New Momentum Direction: (-0.549506,-0.577604,-0.603669) - New Polarization: (-0.340194,-0.50524,0.793096) + Old Momentum Direction: (-0.66897,-0.57978,0.46512) + Old Polarization: (0.71347,-0.3254,0.62054) + New Momentum Direction: (0.66897,-0.57978,0.46512) + New Polarization: (0.71347,0.3254,-0.62054) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66897,-0.57978,0.46512) + Old Polarization: (0.71347,0.3254,-0.62054) + New Momentum Direction: (0.66897,-0.57978,-0.46512) + New Polarization: (-0.71347,-0.3254,-0.62054) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66897,-0.57978,-0.46512) + Old Polarization: (-0.71347,-0.3254,-0.62054) + New Momentum Direction: (0.66897,0.57978,-0.46512) + New Polarization: (0.71347,-0.3254,0.62054) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66897,0.57978,-0.46512) + Old Polarization: (0.71347,-0.3254,0.62054) + New Momentum Direction: (-0.66897,0.57978,-0.46512) + New Polarization: (0.71347,0.3254,-0.62054) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66897,0.57978,-0.46512) + Old Polarization: (0.71347,0.3254,-0.62054) + New Momentum Direction: (-0.66897,0.57978,0.46512) + New Polarization: (-0.71347,-0.3254,-0.62054) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66897,0.57978,0.46512) + Old Polarization: (-0.71347,-0.3254,-0.62054) + New Momentum Direction: (-0.66897,-0.57978,0.46512) + New Polarization: (0.71347,-0.3254,0.62054) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66897,-0.57978,0.46512) + Old Polarization: (0.71347,-0.3254,0.62054) + New Momentum Direction: (0.66897,-0.57978,0.46512) + New Polarization: (0.71347,0.3254,-0.62054) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66897,-0.57978,0.46512) + Old Polarization: (0.71347,0.3254,-0.62054) + New Momentum Direction: (0.66897,0.57978,0.46512) + New Polarization: (-0.71347,0.3254,0.62054) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66897,0.57978,0.46512) + Old Polarization: (-0.71347,0.3254,0.62054) + New Momentum Direction: (0.66897,0.57978,-0.46512) + New Polarization: (0.71347,-0.3254,0.62054) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66897,0.57978,-0.46512) + Old Polarization: (0.71347,-0.3254,0.62054) + New Momentum Direction: (-0.66897,0.57978,-0.46512) + New Polarization: (0.71347,0.3254,-0.62054) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66897,0.57978,-0.46512) + Old Polarization: (0.71347,0.3254,-0.62054) + New Momentum Direction: (0.66897,0.57978,-0.46512) + New Polarization: (0.71347,-0.3254,0.62054) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66897,0.57978,-0.46512) + Old Polarization: (0.71347,-0.3254,0.62054) + New Momentum Direction: (0.66897,-0.57978,-0.46512) + New Polarization: (-0.71347,-0.3254,-0.62054) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66897,-0.57978,-0.46512) + Old Polarization: (-0.71347,-0.3254,-0.62054) + New Momentum Direction: (0.66897,-0.57978,0.46512) + New Polarization: (0.71347,0.3254,-0.62054) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66897,-0.57978,0.46512) + Old Polarization: (0.71347,0.3254,-0.62054) + New Momentum Direction: (-0.66897,-0.57978,0.46512) + New Polarization: (0.71347,-0.3254,0.62054) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66897,-0.57978,0.46512) + Old Polarization: (0.71347,-0.3254,0.62054) + New Momentum Direction: (-0.66897,0.57978,0.46512) + New Polarization: (-0.71347,-0.3254,-0.62054) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66897,0.57978,0.46512) + Old Polarization: (-0.71347,-0.3254,-0.62054) + New Momentum Direction: (-0.66897,0.57978,-0.46512) + New Polarization: (0.71347,0.3254,-0.62054) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66897,0.57978,-0.46512) + Old Polarization: (0.71347,0.3254,-0.62054) + New Momentum Direction: (0.66897,0.57978,-0.46512) + New Polarization: (0.71347,-0.3254,0.62054) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66897,0.57978,-0.46512) + Old Polarization: (0.71347,-0.3254,0.62054) + New Momentum Direction: (0.66897,-0.57978,-0.46512) + New Polarization: (-0.71347,-0.3254,-0.62054) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66897,-0.57978,-0.46512) + Old Polarization: (-0.71347,-0.3254,-0.62054) + New Momentum Direction: (0.66897,0.57978,-0.46512) + New Polarization: (0.71347,-0.3254,0.62054) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66897,0.57978,-0.46512) + Old Polarization: (0.71347,-0.3254,0.62054) + New Momentum Direction: (0.66897,-0.57978,-0.46512) + New Polarization: (-0.71347,-0.3254,-0.62054) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66897,-0.57978,-0.46512) + Old Polarization: (-0.71347,-0.3254,-0.62054) + New Momentum Direction: (-0.66897,-0.57978,-0.46512) + New Polarization: (-0.71347,0.3254,0.62054) + *** TotalInternalReflection *** +No Absorbtion length specified +Scattering Photon! +Old Momentum Direction: (-0.66897,-0.57978,-0.46512) +Old Polarization: (-0.71347,0.3254,0.62054) +New Polarization: (-0.47625,-0.048972,0.72889) +Polarization Change: (-0.54612,-0.056156,0.83582) +New Momentum Direction: (0.40324,-0.86675,0.20524) +Momentum Change: (0.41242,-0.88648,0.20992) + Photon at Boundary! + Old Momentum Direction: (0.41242,-0.88648,0.20992) + Old Polarization: (-0.54612,-0.056156,0.83582) + New Momentum Direction: (-0.41242,-0.88648,0.20992) + New Polarization: (-0.54612,0.056156,-0.83582) *** TotalInternalReflection *** No Absorbtion length specified ** Photon Absorbed! ** -Track (trackID 1495, parentID 1) is processed with stopping code 2 -### pop requested out of 76 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.984843,0.16117,0.0641048) - Old Polarization: (0.146764,-0.971288,0.187245) - New Momentum Direction: (0.971835,0.218975,0.0870968) - New Polarization: (-0.213879,0.664372,0.716146) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1494, parentID 1) is processed with stopping code 2 +Track (trackID 1291, parentID 1) is processed with stopping code 2 ### pop requested out of 75 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.0193229,0.997619,0.0661985) - Old Polarization: (-0.981152,-0.0316533,0.190626) - New Momentum Direction: (-0.0261667,0.99563,0.0896449) - New Polarization: (-0.946432,-0.0535448,0.318431) + Old Momentum Direction: (0.69298,0.10512,-0.71325) + Old Polarization: (-0.68609,-0.20777,-0.69721) + New Momentum Direction: (0.94165,0.14285,-0.30478) + New Polarization: (0.3107,-0.020602,0.95029) *** FresnelRefraction *** No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.0261667,0.99563,0.0896449) - Old Polarization: (-0.946432,-0.0535448,0.318431) - New Momentum Direction: (0.0103579,-0.909191,-0.41625) - New Polarization: (0.944672,0.145381,-0.294041) - *** LambertianReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.0103579,-0.909191,-0.41625) - Old Polarization: (0.944672,0.145381,-0.294041) - New Momentum Direction: (0.00764884,-0.951556,-0.307381) - New Polarization: (0.969722,0.0820923,-0.230001) - *** FresnelRefraction *** - Photon at Boundary! - Old Momentum Direction: (0.00764884,-0.951556,-0.307381) - Old Polarization: (0.969722,0.0820923,-0.230001) - New Momentum Direction: (0.0103579,-0.909191,-0.41625) - New Polarization: (0.943185,0.147138,-0.297915) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1493, parentID 1) is processed with stopping code 2 +Track (trackID 1290, parentID 1) is processed with stopping code 2 ### pop requested out of 74 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.406061,0.570345,-0.714017) - Old Polarization: (-0.502262,-0.513452,-0.695773) - New Momentum Direction: (0.54771,0.769303,-0.328918) - New Polarization: (0.129764,0.310263,0.941753) + Old Momentum Direction: (0.85934,-0.48075,-0.17438) + Old Polarization: (-0.50087,-0.86004,-0.09724) + New Momentum Direction: (0.71908,-0.65328,-0.23696) + New Polarization: (-0.68748,-0.71853,-0.10528) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1492, parentID 1) is processed with stopping code 2 +Track (trackID 1289, parentID 1) is processed with stopping code 2 ### pop requested out of 73 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1491, parentID 1) is processed with stopping code 2 +Track (trackID 1288, parentID 1) is processed with stopping code 2 ### pop requested out of 72 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1490, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.87541,-0.44792,0.18175) + Old Polarization: (-0.48313,-0.8229,0.29903) + New Momentum Direction: (0.75379,-0.60889,0.24708) + New Polarization: (-0.65694,-0.70703,0.26181) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1287, parentID 1) is processed with stopping code 2 ### pop requested out of 71 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.00111041,0.989359,0.145492) - Old Polarization: (-0.959236,-0.0421705,0.279441) - New Momentum Direction: (-0.00150541,0.980353,0.197247) - New Polarization: (-0.927703,-0.0750047,0.365707) + Old Momentum Direction: (0.74988,0.25985,0.6084) + Old Polarization: (-0.62246,-0.03437,0.78189) + New Momentum Direction: (0.44637,0.35147,0.82293) + New Polarization: (-0.86881,-0.050004,0.49262) *** FresnelRefraction *** No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.00150541,0.980353,0.197247) - Old Polarization: (-0.927703,-0.0750047,0.365707) - New Momentum Direction: (-0.00111041,0.989359,0.145492) - New Polarization: (-0.959019,-0.0422773,0.280169) - *** FresnelRefraction *** - Photon at Boundary! - Old Momentum Direction: (-0.00111041,0.989359,0.145492) - Old Polarization: (-0.959019,-0.0422773,0.280169) - New Momentum Direction: (-0.00150541,0.980353,0.197247) - New Polarization: (-0.927339,-0.0751821,0.366591) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1489, parentID 1) is processed with stopping code 2 +Track (trackID 1286, parentID 1) is processed with stopping code 2 ### pop requested out of 70 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.496692,0.620047,0.607321) - Old Polarization: (-0.399559,-0.457827,0.794196) - New Momentum Direction: (0.496692,-0.620047,0.607321) - New Polarization: (0.399559,-0.457827,-0.794196) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.496692,-0.620047,0.607321) - Old Polarization: (0.399559,-0.457827,-0.794196) - New Momentum Direction: (0.496692,-0.620047,-0.607321) - New Polarization: (-0.399559,0.457827,-0.794196) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.496692,-0.620047,-0.607321) - Old Polarization: (-0.399559,0.457827,-0.794196) - New Momentum Direction: (-0.496692,-0.620047,-0.607321) - New Polarization: (-0.399559,-0.457827,0.794196) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.496692,-0.620047,-0.607321) - Old Polarization: (-0.399559,-0.457827,0.794196) - New Momentum Direction: (-0.496692,0.620047,-0.607321) - New Polarization: (0.399559,-0.457827,-0.794196) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.496692,0.620047,-0.607321) - Old Polarization: (0.399559,-0.457827,-0.794196) - New Momentum Direction: (-0.496692,0.620047,0.607321) - New Polarization: (-0.399559,0.457827,-0.794196) - *** TotalInternalReflection *** -No Absorbtion length specified ** Photon Absorbed! ** -Track (trackID 1488, parentID 1) is processed with stopping code 2 +Track (trackID 1285, parentID 1) is processed with stopping code 2 ### pop requested out of 69 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.0875262,0.844837,-0.527815) - Old Polarization: (-0.856072,-0.207149,-0.473529) - New Momentum Direction: (0.119084,0.685653,-0.718122) - New Polarization: (-0.792764,-0.369795,-0.484537) + Old Momentum Direction: (0.60548,0.55194,-0.57337) + Old Polarization: (-0.78461,0.29326,-0.54625) + New Momentum Direction: (-0.60548,0.55194,-0.57337) + New Polarization: (-0.78461,-0.29326,0.54625) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.60548,0.55194,-0.57337) + Old Polarization: (-0.78461,-0.29326,0.54625) + New Momentum Direction: (-0.60548,0.55194,0.57337) + New Polarization: (0.78461,0.29326,0.54625) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.60548,0.55194,0.57337) + Old Polarization: (0.78461,0.29326,0.54625) + New Momentum Direction: (-0.60548,-0.55194,0.57337) + New Polarization: (-0.78461,0.29326,-0.54625) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.60548,-0.55194,0.57337) + Old Polarization: (-0.78461,0.29326,-0.54625) + New Momentum Direction: (0.60548,-0.55194,0.57337) + New Polarization: (-0.78461,-0.29326,0.54625) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.60548,-0.55194,0.57337) + Old Polarization: (-0.78461,-0.29326,0.54625) + New Momentum Direction: (0.60548,-0.55194,-0.57337) + New Polarization: (0.78461,0.29326,0.54625) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.60548,-0.55194,-0.57337) + Old Polarization: (0.78461,0.29326,0.54625) + New Momentum Direction: (0.60548,0.55194,-0.57337) + New Polarization: (-0.78461,0.29326,-0.54625) + *** TotalInternalReflection *** +No Absorbtion length specified +Scattering Photon! +Old Momentum Direction: (0.60548,0.55194,-0.57337) +Old Polarization: (-0.78461,0.29326,-0.54625) +New Polarization: (-0.47037,0.05229,-0.7347) +Polarization Change: (-0.53822,0.059832,-0.84068) +New Momentum Direction: (0.044581,-0.98889,-0.098923) +Momentum Change: (0.044813,-0.99403,-0.099437) + Photon at Boundary! + Old Momentum Direction: (0.044813,-0.99403,-0.099437) + Old Polarization: (-0.53822,0.059832,-0.84068) + New Momentum Direction: (0.060673,-0.98904,-0.13463) + New Polarization: (-0.41138,0.098115,-0.90617) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1487, parentID 1) is processed with stopping code 2 +Track (trackID 1284, parentID 1) is processed with stopping code 2 ### pop requested out of 68 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.186687,0.870946,0.454534) - Old Polarization: (-0.752952,-0.17034,0.635648) - New Momentum Direction: (0.251447,0.749651,0.612207) - New Polarization: (-0.695223,-0.300179,0.653114) + Old Momentum Direction: (0.84486,-0.43455,-0.31205) + Old Polarization: (-0.51506,-0.81839,-0.25484) + New Momentum Direction: (0.6916,-0.58669,-0.4213) + New Polarization: (-0.708,-0.66609,-0.23466) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1486, parentID 1) is processed with stopping code 2 +Track (trackID 1283, parentID 1) is processed with stopping code 2 ### pop requested out of 67 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.922105,0.240512,0.303113) - Old Polarization: (0.0804302,-0.885384,0.45785) - New Momentum Direction: (0.851762,0.32566,0.410424) - New Polarization: (-0.146478,-0.604103,0.783329) + Old Momentum Direction: (0.68853,0.49457,0.5304) + Old Polarization: (-0.691,0.22546,0.68679) + New Momentum Direction: (0.16744,0.67235,0.72105) + New Polarization: (-0.96774,-0.027558,0.25042) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1485, parentID 1) is processed with stopping code 2 +Track (trackID 1282, parentID 1) is processed with stopping code 2 ### pop requested out of 66 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.978766,0.148422,-0.14138) - Old Polarization: (0.143666,-0.988677,-0.0433307) - New Momentum Direction: (0.960669,0.201072,-0.191532) - New Polarization: (-0.22225,0.143191,-0.964418) + Old Momentum Direction: (0.6498,0.30955,-0.69422) + Old Polarization: (-0.73444,0.020363,-0.67836) + New Momentum Direction: (0.8817,0.42002,-0.21493) + New Polarization: (0.095904,0.28649,0.95327) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1484, parentID 1) is processed with stopping code 2 +Track (trackID 1281, parentID 1) is processed with stopping code 2 ### pop requested out of 65 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.87349,0.202312,-0.442816) -Old Polarization: (0.0217435,-0.924871,-0.37966) -New Polarization: (0.0177039,-0.920613,-0.325727) -Polarization Change: (0.0181263,-0.942576,-0.333498) -New Momentum Direction: (-0.587426,0.253527,-0.789141) -Momentum Change: (-0.578222,0.249554,-0.776776) -Scattering Photon! -Old Momentum Direction: (-0.578222,0.249554,-0.776776) -Old Polarization: (0.0181263,-0.942576,-0.333498) -New Polarization: (-0.758956,-0.502444,-0.0239625) -Polarization Change: (-0.833545,-0.551824,-0.0263175) -New Momentum Direction: (0.546975,-0.818614,-0.19241) -Momentum Change: (0.545251,-0.816035,-0.191804) Photon at Boundary! - Old Momentum Direction: (0.545251,-0.816035,-0.191804) - Old Polarization: (-0.833545,-0.551824,-0.0263175) - New Momentum Direction: (0.74111,-0.6187,-0.260702) - New Polarization: (0.497405,0.766785,-0.405744) - *** FresnelRefraction *** + Old Momentum Direction: (0.607,0.52801,-0.59393) + Old Polarization: (-0.78194,0.26345,-0.56494) + New Momentum Direction: (-0.607,0.52801,-0.59393) + New Polarization: (-0.78194,-0.26345,0.56494) + *** TotalInternalReflection *** No Absorbtion length specified -Track (trackID 1483, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (-0.607,0.52801,-0.59393) + Old Polarization: (-0.78194,-0.26345,0.56494) + New Momentum Direction: (-0.607,0.52801,0.59393) + New Polarization: (0.78194,0.26345,0.56494) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.607,0.52801,0.59393) + Old Polarization: (0.78194,0.26345,0.56494) + New Momentum Direction: (-0.607,-0.52801,0.59393) + New Polarization: (-0.78194,0.26345,-0.56494) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.607,-0.52801,0.59393) + Old Polarization: (-0.78194,0.26345,-0.56494) + New Momentum Direction: (0.607,-0.52801,0.59393) + New Polarization: (-0.78194,-0.26345,0.56494) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.607,-0.52801,0.59393) + Old Polarization: (-0.78194,-0.26345,0.56494) + New Momentum Direction: (0.607,-0.52801,-0.59393) + New Polarization: (0.78194,0.26345,0.56494) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.607,-0.52801,-0.59393) + Old Polarization: (0.78194,0.26345,0.56494) + New Momentum Direction: (0.607,0.52801,-0.59393) + New Polarization: (-0.78194,0.26345,-0.56494) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.607,0.52801,-0.59393) + Old Polarization: (-0.78194,0.26345,-0.56494) + New Momentum Direction: (-0.607,0.52801,-0.59393) + New Polarization: (-0.78194,-0.26345,0.56494) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.607,0.52801,-0.59393) + Old Polarization: (-0.78194,-0.26345,0.56494) + New Momentum Direction: (-0.607,0.52801,0.59393) + New Polarization: (0.78194,0.26345,0.56494) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.607,0.52801,0.59393) + Old Polarization: (0.78194,0.26345,0.56494) + New Momentum Direction: (-0.607,-0.52801,0.59393) + New Polarization: (-0.78194,0.26345,-0.56494) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.607,-0.52801,0.59393) + Old Polarization: (-0.78194,0.26345,-0.56494) + New Momentum Direction: (0.607,-0.52801,0.59393) + New Polarization: (-0.78194,-0.26345,0.56494) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.607,-0.52801,0.59393) + Old Polarization: (-0.78194,-0.26345,0.56494) + New Momentum Direction: (0.607,-0.52801,-0.59393) + New Polarization: (0.78194,0.26345,0.56494) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.607,-0.52801,-0.59393) + Old Polarization: (0.78194,0.26345,0.56494) + New Momentum Direction: (0.607,0.52801,-0.59393) + New Polarization: (-0.78194,0.26345,-0.56494) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.607,0.52801,-0.59393) + Old Polarization: (-0.78194,0.26345,-0.56494) + New Momentum Direction: (-0.607,0.52801,-0.59393) + New Polarization: (-0.78194,-0.26345,0.56494) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.607,0.52801,-0.59393) + Old Polarization: (-0.78194,-0.26345,0.56494) + New Momentum Direction: (-0.607,0.52801,0.59393) + New Polarization: (0.78194,0.26345,0.56494) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.607,0.52801,0.59393) + Old Polarization: (0.78194,0.26345,0.56494) + New Momentum Direction: (-0.607,-0.52801,0.59393) + New Polarization: (-0.78194,0.26345,-0.56494) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.607,-0.52801,0.59393) + Old Polarization: (-0.78194,0.26345,-0.56494) + New Momentum Direction: (0.607,-0.52801,0.59393) + New Polarization: (-0.78194,-0.26345,0.56494) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.607,-0.52801,0.59393) + Old Polarization: (-0.78194,-0.26345,0.56494) + New Momentum Direction: (0.607,-0.52801,-0.59393) + New Polarization: (0.78194,0.26345,0.56494) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1280, parentID 1) is processed with stopping code 2 ### pop requested out of 64 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.82785,-0.10694,0.55066) +Old Polarization: (-0.53473,-0.44706,0.71708) +New Polarization: (-0.41285,0.36125,0.69605) +Polarization Change: (-0.46584,0.40762,0.78539) +New Momentum Direction: (-0.27828,0.68025,-0.5181) +Momentum Change: (-0.30946,0.75648,-0.57617) Photon at Boundary! - Old Momentum Direction: (0.987388,0.156972,0.020607) - Old Polarization: (0.15265,-0.978452,0.13903) - New Momentum Direction: (0.976702,0.212774,0.0279325) - New Polarization: (-0.210327,0.923269,0.32146) + Old Momentum Direction: (-0.30946,0.75648,-0.57617) + Old Polarization: (-0.46584,0.40762,0.78539) + New Momentum Direction: (-0.41855,0.46645,-0.77926) + New Polarization: (-0.74298,-0.66931,-0.0015732) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1482, parentID 1) is processed with stopping code 2 +Track (trackID 1279, parentID 1) is processed with stopping code 2 ### pop requested out of 63 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1481, parentID 1) is processed with stopping code 2 -### pop requested out of 62 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.952261,0.157624,-0.261444) - Old Polarization: (0.112883,-0.977501,-0.178181) - New Momentum Direction: (0.910326,0.213701,-0.354456) - New Polarization: (-0.197571,-0.528165,-0.825837) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1480, parentID 1) is processed with stopping code 2 -### pop requested out of 61 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.525727,0.595354,0.607589) - Old Polarization: (-0.367192,-0.485464,0.793407) - New Momentum Direction: (0.525727,0.595354,-0.607589) - New Polarization: (0.367192,0.485464,0.793407) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.525727,0.595354,-0.607589) - Old Polarization: (0.367192,0.485464,0.793407) - New Momentum Direction: (0.525727,-0.595354,-0.607589) - New Polarization: (-0.367192,0.485464,-0.793407) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.525727,-0.595354,-0.607589) - Old Polarization: (-0.367192,0.485464,-0.793407) - New Momentum Direction: (-0.525727,-0.595354,-0.607589) - New Polarization: (-0.367192,-0.485464,0.793407) - *** TotalInternalReflection *** -No Absorbtion length specified -Scattering Photon! -Old Momentum Direction: (-0.525727,-0.595354,-0.607589) -Old Polarization: (-0.367192,-0.485464,0.793407) -New Polarization: (-0.614713,-0.0391102,0.609528) -Polarization Change: (-0.709371,-0.0451327,0.703389) -New Momentum Direction: (0.421679,0.676968,0.776402) -Momentum Change: (0.378847,0.608205,0.697539) - Photon at Boundary! - Old Momentum Direction: (0.378847,0.608205,0.697539) - Old Polarization: (-0.709371,-0.0451327,0.703389) - New Momentum Direction: (0.515357,0.827361,0.223341) - New Polarization: (-0.237261,0.388179,-0.890519) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1479, parentID 1) is processed with stopping code 2 -### pop requested out of 60 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.983124,0.143647,-0.113283) - Old Polarization: (0.143316,-0.989615,-0.0111026) - New Momentum Direction: (0.968542,0.195401,-0.154097) - New Polarization: (-0.215087,0.345878,-0.913294) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1478, parentID 1) is processed with stopping code 2 -### pop requested out of 59 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.843822,0.319178,0.431382) - Old Polarization: (-0.00702411,-0.797244,0.603617) - New Momentum Direction: (0.687733,0.431795,0.583589) - New Polarization: (-0.0132532,-0.79628,0.604783) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1477, parentID 1) is processed with stopping code 2 -### pop requested out of 58 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.987345,0.154499,-0.0357641) - Old Polarization: (0.156833,-0.984713,0.0757912) - New Momentum Direction: (0.976775,0.208748,-0.0483217) - New Polarization: (-0.212965,0.921001,-0.326194) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1476, parentID 1) is processed with stopping code 2 -### pop requested out of 57 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1475, parentID 1) is processed with stopping code 2 -### pop requested out of 56 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.329374,0.764015,0.554791) - Old Polarization: (-0.590631,-0.291709,0.75237) - New Momentum Direction: (0.443005,0.496936,0.746191) - New Polarization: (-0.546973,-0.509647,0.664139) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1474, parentID 1) is processed with stopping code 2 -### pop requested out of 55 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1473, parentID 1) is processed with stopping code 2 -### pop requested out of 54 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.72696,0.311021,-0.612205) - Old Polarization: (-0.139369,-0.806159,-0.575051) - New Momentum Direction: (0.36913,0.420948,-0.828581) - New Polarization: (-0.274751,-0.802267,-0.52998) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1472, parentID 1) is processed with stopping code 2 -### pop requested out of 53 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.968596,0.185206,0.165894) -Old Polarization: (0.12903,-0.94474,0.30136) -New Polarization: (-0.145556,-0.856065,-0.0672143) -Polarization Change: (-0.167124,-0.982911,-0.0771737) -New Momentum Direction: (0.96821,-0.176722,0.203408) -Momentum Change: (0.963388,-0.175841,0.202395) -Scattering Photon! -Old Momentum Direction: (0.963388,-0.175841,0.202395) -Old Polarization: (-0.167124,-0.982911,-0.0771737) -New Polarization: (0.148395,-0.547635,-0.678536) -Polarization Change: (0.167773,-0.619148,-0.767142) -New Momentum Direction: (0.709865,0.577816,-0.521443) -Momentum Change: (0.673871,0.548517,-0.495003) - Photon at Boundary! - Old Momentum Direction: (0.673871,0.548517,-0.495003) - Old Polarization: (0.167773,-0.619148,-0.767142) - New Momentum Direction: (-0.673871,0.548517,-0.495003) - New Polarization: (0.167773,0.619148,0.767142) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1471, parentID 1) is processed with stopping code 2 -### pop requested out of 52 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.360129,0.607703,-0.707816) - Old Polarization: (-0.554091,-0.471065,-0.686353) - New Momentum Direction: (0.486435,0.82084,-0.299338) - New Polarization: (0.0150657,0.334672,0.942214) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1470, parentID 1) is processed with stopping code 2 -### pop requested out of 51 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.801479,0.252306,-0.542193) - Old Polarization: (-0.0585814,-0.869158,-0.491053) - New Momentum Direction: (0.58275,0.342858,-0.736784) - New Polarization: (-0.112948,-0.863671,-0.491238) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1469, parentID 1) is processed with stopping code 2 -### pop requested out of 50 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.811455,0.351605,0.466814) - Old Polarization: (-0.0418105,-0.761797,0.646465) - New Momentum Direction: (0.614416,0.47468,0.630216) - New Polarization: (-0.0792085,-0.757625,0.647867) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1468, parentID 1) is processed with stopping code 2 -### pop requested out of 49 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1467, parentID 1) is processed with stopping code 2 -### pop requested out of 48 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.565825,0.433775,-0.7012) - Old Polarization: (-0.321745,-0.666851,-0.672154) - New Momentum Direction: (0.767378,0.588289,-0.255045) - New Polarization: (0.331782,-0.0239369,0.943052) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1466, parentID 1) is processed with stopping code 2 -### pop requested out of 47 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.0194797,0.961092,-0.27554) - Old Polarization: (-0.978245,-0.0752521,-0.193324) - New Momentum Direction: (-0.0264437,0.927034,-0.374045) - New Polarization: (-0.95401,-0.135173,-0.267569) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1465, parentID 1) is processed with stopping code 2 -### pop requested out of 46 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1464, parentID 1) is processed with stopping code 2 -### pop requested out of 45 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0859268,0.855365,-0.510849) - Old Polarization: (-0.865514,-0.189871,-0.463503) - New Momentum Direction: (0.0859268,-0.855365,-0.510849) - New Polarization: (0.995403,0.0519369,0.0804677) + Old Momentum Direction: (0.65365,0.29682,-0.69616) + Old Polarization: (-0.73041,0.0066617,-0.68297) + New Momentum Direction: (0.65365,0.29682,0.69616) + New Polarization: (-0.37209,-0.67496,0.63716) *** FresnelReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (0.0859268,-0.855365,-0.510849) - Old Polarization: (0.995403,0.0519369,0.0804677) - New Momentum Direction: (0.0859268,-0.855365,0.510849) - New Polarization: (-0.995403,-0.0519369,0.0804677) + Old Momentum Direction: (0.65365,0.29682,0.69616) + Old Polarization: (-0.37209,-0.67496,0.63716) + New Momentum Direction: (-0.65365,0.29682,0.69616) + New Polarization: (-0.37209,0.67496,-0.63716) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (0.0859268,-0.855365,0.510849) - Old Polarization: (-0.995403,-0.0519369,0.0804677) - New Momentum Direction: (0.116012,-0.714734,0.689708) - New Polarization: (-0.960253,0.0967847,0.261815) + Old Momentum Direction: (-0.65365,0.29682,0.69616) + Old Polarization: (-0.37209,0.67496,-0.63716) + New Momentum Direction: (-0.65365,-0.29682,0.69616) + New Polarization: (0.37209,0.67496,0.63716) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.65365,-0.29682,0.69616) + Old Polarization: (0.37209,0.67496,0.63716) + New Momentum Direction: (-0.8856,-0.40215,0.23236) + New Polarization: (-0.33033,0.1937,-0.92378) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1463, parentID 1) is processed with stopping code 2 -### pop requested out of 44 stacked tracks. +Track (trackID 1278, parentID 1) is processed with stopping code 2 +### pop requested out of 62 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.70563,0.42855,0.56429) + Old Polarization: (-0.67199,0.15215,0.72476) + New Momentum Direction: (0.26913,0.58249,0.76699) + New Polarization: (-0.94166,-0.0079857,0.33648) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1277, parentID 1) is processed with stopping code 2 +### pop requested out of 61 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1462, parentID 1) is processed with stopping code 2 +Track (trackID 1276, parentID 1) is processed with stopping code 2 +### pop requested out of 60 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.79224,0.055788,0.60766) +Old Polarization: (-0.57548,-0.26286,0.77442) +New Polarization: (0.19508,-0.57812,0.64834) +Polarization Change: (0.21912,-0.64936,0.72823) +New Momentum Direction: (-0.95517,-0.062178,0.23196) +Momentum Change: (-0.96982,-0.063131,0.23552) + Photon at Boundary! + Old Momentum Direction: (-0.96982,-0.063131,0.23552) + Old Polarization: (0.21912,-0.64936,0.72823) + New Momentum Direction: (-0.96982,-0.063131,-0.23552) + New Polarization: (-0.21912,0.64936,0.72823) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.96982,-0.063131,-0.23552) + Old Polarization: (-0.21912,0.64936,0.72823) + New Momentum Direction: (-0.94358,-0.085736,-0.31984) + New Polarization: (0.31176,0.0955,-0.94535) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1275, parentID 1) is processed with stopping code 2 +### pop requested out of 59 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.71004,0.052809,-0.70218) + Old Polarization: (-0.66736,-0.2677,-0.69496) + New Momentum Direction: (-0.71004,0.052809,-0.70218) + New Polarization: (-0.5864,0.50772,0.63115) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.71004,0.052809,-0.70218) + Old Polarization: (-0.5864,0.50772,0.63115) + New Momentum Direction: (-0.95897,0.071324,-0.27438) + New Polarization: (-0.2353,0.33958,0.91067) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1274, parentID 1) is processed with stopping code 2 +### pop requested out of 58 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1273, parentID 1) is processed with stopping code 2 +### pop requested out of 57 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.75389,-0.11779,-0.64635) + Old Polarization: (-0.61769,-0.46227,-0.63622) + New Momentum Direction: (0.4658,-0.15864,-0.87055) + New Polarization: (-0.85828,-0.32043,-0.40084) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1272, parentID 1) is processed with stopping code 2 +### pop requested out of 56 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1271, parentID 1) is processed with stopping code 2 +### pop requested out of 55 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1270, parentID 1) is processed with stopping code 2 +### pop requested out of 54 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1269, parentID 1) is processed with stopping code 2 +### pop requested out of 53 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.57677,0.77667,-0.25321) + Old Polarization: (-0.81687,0.54568,-0.18694) + New Momentum Direction: (0.78083,0.5223,-0.3428) + New Polarization: (0.29399,-0.79133,-0.53607) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1268, parentID 1) is processed with stopping code 2 +### pop requested out of 52 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1267, parentID 1) is processed with stopping code 2 +### pop requested out of 51 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.64855,0.32307,-0.68921) + Old Polarization: (-0.73621,0.036228,-0.67579) + New Momentum Direction: (0.87836,0.43755,-0.19245) + New Polarization: (0.063045,0.29305,0.95402) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1266, parentID 1) is processed with stopping code 2 +### pop requested out of 50 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.75941,-0.15712,-0.63136) + Old Polarization: (-0.61185,-0.50241,-0.61092) + New Momentum Direction: (0.47285,-0.21279,-0.85506) + New Polarization: (-0.85505,-0.3452,-0.38694) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1265, parentID 1) is processed with stopping code 2 +### pop requested out of 49 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.58483,0.8109,0.020381) +Old Polarization: (-0.80666,0.57877,0.11967) +New Polarization: (-0.50464,0.67117,0.28318) +Polarization Change: (-0.56946,0.75737,0.31955) +New Momentum Direction: (0.75708,0.63133,-0.14717) +Momentum Change: (0.75958,0.63343,-0.14766) + Photon at Boundary! + Old Momentum Direction: (0.75958,0.63343,-0.14766) + Old Polarization: (-0.56946,0.75737,0.31955) + New Momentum Direction: (0.46863,0.86033,-0.20056) + New Polarization: (-0.82631,0.50719,0.24489) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1264, parentID 1) is processed with stopping code 2 +### pop requested out of 48 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.84844,-0.45908,-0.26344) + Old Polarization: (-0.51308,-0.8356,-0.19628) + New Momentum Direction: (0.69461,-0.62396,-0.35805) + New Polarization: (-0.7079,-0.68143,-0.18582) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1263, parentID 1) is processed with stopping code 2 +### pop requested out of 47 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.72285,0.014249,-0.69085) + Old Polarization: (-0.65299,-0.31296,-0.68968) + New Momentum Direction: (0.36991,0.019158,-0.92887) + New Polarization: (-0.90461,-0.22049,-0.36479) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1262, parentID 1) is processed with stopping code 2 +### pop requested out of 46 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.72011,0.39525,0.57028) + Old Polarization: (-0.65605,0.12024,0.74508) + New Momentum Direction: (0.35479,0.53258,0.76843) + New Polarization: (-0.91094,0.011858,0.41237) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1261, parentID 1) is processed with stopping code 2 +### pop requested out of 45 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.77449,0.1569,0.61283) + Old Polarization: (-0.59458,-0.15021,0.78988) + New Momentum Direction: (0.52006,0.21184,0.82744) + New Polarization: (-0.8279,-0.11323,0.54933) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1260, parentID 1) is processed with stopping code 2 +### pop requested out of 44 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.60048,0.57332,-0.55743) + Old Polarization: (-0.78968,0.31549,-0.52618) + New Momentum Direction: (-0.60048,0.57332,-0.55743) + New Polarization: (-0.78968,-0.31549,0.52618) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.60048,0.57332,-0.55743) + Old Polarization: (-0.78968,-0.31549,0.52618) + New Momentum Direction: (-0.60048,-0.57332,-0.55743) + New Polarization: (0.78968,-0.31549,-0.52618) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.60048,-0.57332,-0.55743) + Old Polarization: (0.78968,-0.31549,-0.52618) + New Momentum Direction: (-0.60048,-0.57332,0.55743) + New Polarization: (-0.78968,0.31549,-0.52618) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.60048,-0.57332,0.55743) + Old Polarization: (-0.78968,0.31549,-0.52618) + New Momentum Direction: (0.60048,-0.57332,0.55743) + New Polarization: (-0.78968,-0.31549,0.52618) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.60048,-0.57332,0.55743) + Old Polarization: (-0.78968,-0.31549,0.52618) + New Momentum Direction: (0.60048,0.57332,0.55743) + New Polarization: (0.78968,-0.31549,-0.52618) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.60048,0.57332,0.55743) + Old Polarization: (0.78968,-0.31549,-0.52618) + New Momentum Direction: (0.60048,0.57332,-0.55743) + New Polarization: (-0.78968,0.31549,-0.52618) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.60048,0.57332,-0.55743) + Old Polarization: (-0.78968,0.31549,-0.52618) + New Momentum Direction: (-0.60048,0.57332,-0.55743) + New Polarization: (-0.78968,-0.31549,0.52618) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.60048,0.57332,-0.55743) + Old Polarization: (-0.78968,-0.31549,0.52618) + New Momentum Direction: (-0.60048,-0.57332,-0.55743) + New Polarization: (0.78968,-0.31549,-0.52618) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.60048,-0.57332,-0.55743) + Old Polarization: (0.78968,-0.31549,-0.52618) + New Momentum Direction: (-0.60048,-0.57332,0.55743) + New Polarization: (-0.78968,0.31549,-0.52618) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.60048,-0.57332,0.55743) + Old Polarization: (-0.78968,0.31549,-0.52618) + New Momentum Direction: (0.60048,-0.57332,0.55743) + New Polarization: (-0.78968,-0.31549,0.52618) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.60048,-0.57332,0.55743) + Old Polarization: (-0.78968,-0.31549,0.52618) + New Momentum Direction: (0.60048,0.57332,0.55743) + New Polarization: (0.78968,-0.31549,-0.52618) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.60048,0.57332,0.55743) + Old Polarization: (0.78968,-0.31549,-0.52618) + New Momentum Direction: (0.60048,0.57332,-0.55743) + New Polarization: (-0.78968,0.31549,-0.52618) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.60048,0.57332,-0.55743) + Old Polarization: (-0.78968,0.31549,-0.52618) + New Momentum Direction: (-0.60048,0.57332,-0.55743) + New Polarization: (-0.78968,-0.31549,0.52618) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.60048,0.57332,-0.55743) + Old Polarization: (-0.78968,-0.31549,0.52618) + New Momentum Direction: (-0.60048,-0.57332,-0.55743) + New Polarization: (0.78968,-0.31549,-0.52618) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.60048,-0.57332,-0.55743) + Old Polarization: (0.78968,-0.31549,-0.52618) + New Momentum Direction: (-0.60048,-0.57332,0.55743) + New Polarization: (-0.78968,0.31549,-0.52618) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.60048,-0.57332,0.55743) + Old Polarization: (-0.78968,0.31549,-0.52618) + New Momentum Direction: (0.60048,-0.57332,0.55743) + New Polarization: (-0.78968,-0.31549,0.52618) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1259, parentID 1) is processed with stopping code 2 ### pop requested out of 43 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.647709,0.368045,-0.667095) - Old Polarization: (-0.230283,-0.740058,-0.63189) - New Momentum Direction: (0.647709,0.368045,0.667095) - New Polarization: (0.230283,0.740058,-0.63189) - *** TotalInternalReflection *** + Old Momentum Direction: (0.72686,0.35152,0.59001) + Old Polarization: (-0.64836,0.067897,0.7583) + New Momentum Direction: (0.36597,0.47633,0.79949) + New Polarization: (-0.90628,-0.01281,0.42249) + *** FresnelRefraction *** No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.647709,0.368045,0.667095) - Old Polarization: (0.230283,0.740058,-0.63189) - New Momentum Direction: (-0.647709,0.368045,0.667095) - New Polarization: (0.230283,-0.740058,0.63189) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1461, parentID 1) is processed with stopping code 2 +Track (trackID 1258, parentID 1) is processed with stopping code 2 ### pop requested out of 42 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1460, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.80923,0.0050645,0.58747) + Old Polarization: (-0.55465,-0.32309,0.7668) + New Momentum Direction: (0.61237,0.0068152,0.79054) + New Polarization: (-0.76713,-0.23661,0.59627) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1257, parentID 1) is processed with stopping code 2 ### pop requested out of 41 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.0110338,0.98539,0.169954) - Old Polarization: (-0.950058,-0.0426803,0.30914) - New Momentum Direction: (0.0149029,0.973183,0.229548) - New Polarization: (-0.920949,-0.0760456,0.38219) + Old Momentum Direction: (0.76553,-0.18188,-0.61716) + Old Polarization: (-0.60503,-0.5298,-0.59435) + New Momentum Direction: (0.48992,-0.24643,-0.83621) + New Polarization: (-0.84576,-0.36691,-0.38739) *** FresnelRefraction *** No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.0149029,0.973183,0.229548) - Old Polarization: (-0.920949,-0.0760456,0.38219) - New Momentum Direction: (0.228778,0.344309,-0.910556) - New Polarization: (0.777253,0.498566,0.383809) - *** LambertianReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.228778,0.344309,-0.910556) - Old Polarization: (0.777253,0.498566,0.383809) - New Momentum Direction: (0.169384,0.7189,-0.67416) - New Polarization: (0.942328,-0.318491,-0.102866) - *** FresnelRefraction *** -Scattering Photon! -Old Momentum Direction: (0.169384,0.7189,-0.67416) -Old Polarization: (0.942328,-0.318491,-0.102866) -New Polarization: (0.920841,-0.340078,-0.0980804) -Polarization Change: (0.933424,-0.344725,-0.0994207) -New Momentum Direction: (-0.21485,-0.757227,0.625316) -Momentum Change: (-0.213724,-0.753255,0.622036) - Photon at Boundary! - Old Momentum Direction: (-0.213724,-0.753255,0.622036) - Old Polarization: (0.933424,-0.344725,-0.0994207) - New Momentum Direction: (-0.288666,-0.459143,0.840154) - New Polarization: (0.603916,0.593604,0.531902) - *** FresnelRefraction *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.288666,-0.459143,0.840154) - Old Polarization: (0.603916,0.593604,0.531902) - New Momentum Direction: (-0.213724,-0.339942,0.915839) - New Polarization: (-0.253848,-0.885971,-0.388094) - *** FresnelRefraction *** - Photon at Boundary! - Old Momentum Direction: (-0.213724,-0.339942,0.915839) - Old Polarization: (-0.253848,-0.885971,-0.388094) - New Momentum Direction: (-0.288666,-0.459143,0.840154) - New Polarization: (-0.277672,-0.799648,-0.532411) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1459, parentID 1) is processed with stopping code 2 +Track (trackID 1256, parentID 1) is processed with stopping code 2 ### pop requested out of 40 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.107115,0.92095,0.374671) -Old Polarization: (-0.835977,-0.120568,0.535357) -New Polarization: (-0.55757,0.0867004,0.678822) -Polarization Change: (-0.631647,0.0982192,0.769009) -New Momentum Direction: (-0.682268,0.010588,-0.951307) -Momentum Change: (-0.582776,0.00904404,-0.812582) ** Photon Absorbed! ** -Track (trackID 1458, parentID 1) is processed with stopping code 2 +Track (trackID 1255, parentID 1) is processed with stopping code 2 ### pop requested out of 39 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.756132,0.402277,0.516176) - Old Polarization: (-0.104752,-0.704184,0.702248) - New Momentum Direction: (0.468156,0.543185,0.69698) - New Polarization: (-0.202043,-0.70206,0.682855) + Old Momentum Direction: (0.80948,-0.021952,0.58673) + Old Polarization: (-0.55589,-0.35032,0.75383) + New Momentum Direction: (0.6053,-0.02976,0.79544) + New Polarization: (-0.774,-0.25529,0.57944) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1457, parentID 1) is processed with stopping code 2 +Track (trackID 1254, parentID 1) is processed with stopping code 2 ### pop requested out of 38 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.63267,0.6958,0.33997) + Old Polarization: (-0.75363,0.45215,0.47707) + New Momentum Direction: (0.85824,0.22522,0.46119) + New Polarization: (-0.13446,-0.76852,0.62553) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1253, parentID 1) is processed with stopping code 2 +### pop requested out of 37 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1456, parentID 1) is processed with stopping code 2 -### pop requested out of 37 stacked tracks. +Track (trackID 1252, parentID 1) is processed with stopping code 2 +### pop requested out of 36 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1251, parentID 1) is processed with stopping code 2 +### pop requested out of 35 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.0390231,0.988907,-0.143319) - Old Polarization: (-0.997947,-0.0458578,-0.0446989) - New Momentum Direction: (-0.0530643,0.979389,-0.194887) - New Polarization: (-0.986526,-0.0816605,-0.141765) + Old Momentum Direction: (0.87678,-0.46638,0.11725) + Old Polarization: (-0.48084,-0.84661,0.22812) + New Momentum Direction: (0.75787,-0.63272,0.15907) + New Polarization: (-0.65237,-0.73235,0.19513) *** FresnelRefraction *** No Absorbtion length specified +Track (trackID 1250, parentID 1) is processed with stopping code 2 +### pop requested out of 34 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.0530643,0.979389,-0.194887) - Old Polarization: (-0.986526,-0.0816605,-0.141765) - New Momentum Direction: (-0.0390231,0.988907,-0.143319) - New Polarization: (-0.997903,-0.0459803,-0.0455561) + Old Momentum Direction: (0.87313,-0.39188,0.28997) + Old Polarization: (-0.48421,-0.76604,0.42275) + New Momentum Direction: (0.75119,-0.53062,0.39263) + New Polarization: (-0.65776,-0.65162,0.3778) *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1249, parentID 1) is processed with stopping code 2 +### pop requested out of 33 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1248, parentID 1) is processed with stopping code 2 +### pop requested out of 32 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.0390231,0.988907,-0.143319) - Old Polarization: (-0.997903,-0.0459803,-0.0455561) - New Momentum Direction: (-0.0530643,0.979389,-0.194887) - New Polarization: (-0.986357,-0.0818621,-0.142824) + Old Momentum Direction: (0.62207,0.46065,-0.63311) + Old Polarization: (-0.76606,0.191,-0.61373) + New Momentum Direction: (0.62207,0.46065,0.63311) + New Polarization: (0.76606,-0.191,-0.61373) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.62207,0.46065,0.63311) + Old Polarization: (0.76606,-0.191,-0.61373) + New Momentum Direction: (-0.62207,0.46065,0.63311) + New Polarization: (0.76606,0.191,0.61373) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.62207,0.46065,0.63311) + Old Polarization: (0.76606,0.191,0.61373) + New Momentum Direction: (-0.62207,-0.46065,0.63311) + New Polarization: (-0.76606,0.191,-0.61373) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1247, parentID 1) is processed with stopping code 2 +### pop requested out of 31 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.66771,0.22162,-0.71066) + Old Polarization: (-0.71432,-0.077963,-0.69546) + New Momentum Direction: (0.9067,0.30094,-0.29552) + New Polarization: (0.24799,0.18637,0.95067) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1246, parentID 1) is processed with stopping code 2 +### pop requested out of 30 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.65209,0.63927,0.40757) + Old Polarization: (-0.7325,0.39263,0.55613) + New Momentum Direction: (-0.65209,0.63927,0.40757) + New Polarization: (-0.7325,-0.39263,-0.55613) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.65209,0.63927,0.40757) + Old Polarization: (-0.7325,-0.39263,-0.55613) + New Momentum Direction: (-0.65209,-0.63927,0.40757) + New Polarization: (0.7325,-0.39263,0.55613) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.65209,-0.63927,0.40757) + Old Polarization: (0.7325,-0.39263,0.55613) + New Momentum Direction: (-0.65209,-0.63927,-0.40757) + New Polarization: (-0.7325,0.39263,0.55613) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1245, parentID 1) is processed with stopping code 2 +### pop requested out of 29 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.86061,-0.31887,0.39708) + Old Polarization: (-0.49975,-0.6788,0.53804) + New Momentum Direction: (0.72131,-0.43367,0.54004) + New Polarization: (-0.6859,-0.55561,0.46995) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1244, parentID 1) is processed with stopping code 2 +### pop requested out of 28 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.59512,0.79562,0.1132) + Old Polarization: (-0.7955,0.56323,0.2235) + New Momentum Direction: (0.80755,0.56945,0.1536) + New Polarization: (0.48906,-0.79208,0.36528) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1243, parentID 1) is processed with stopping code 2 +### pop requested out of 27 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.65915,0.60238,0.45019) + Old Polarization: (-0.72368,0.34532,0.59753) + New Momentum Direction: (-0.65915,0.60238,0.45019) + New Polarization: (-0.72368,-0.34532,-0.59753) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.65915,0.60238,0.45019) + Old Polarization: (-0.72368,-0.34532,-0.59753) + New Momentum Direction: (-0.65915,-0.60238,0.45019) + New Polarization: (0.72368,-0.34532,0.59753) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.65915,-0.60238,0.45019) + Old Polarization: (0.72368,-0.34532,0.59753) + New Momentum Direction: (-0.65915,-0.60238,-0.45019) + New Polarization: (-0.72368,0.34532,0.59753) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.65915,-0.60238,-0.45019) + Old Polarization: (-0.72368,0.34532,0.59753) + New Momentum Direction: (0.65915,-0.60238,-0.45019) + New Polarization: (-0.72368,-0.34532,-0.59753) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.65915,-0.60238,-0.45019) + Old Polarization: (-0.72368,-0.34532,-0.59753) + New Momentum Direction: (0.65915,0.60238,-0.45019) + New Polarization: (0.72368,-0.34532,0.59753) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1242, parentID 1) is processed with stopping code 2 +### pop requested out of 26 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.80608,-0.00035994,0.59181) + Old Polarization: (-0.55942,-0.32673,0.76177) + New Momentum Direction: (0.5984,-0.00048729,0.8012) + New Polarization: (-0.77839,-0.23727,0.58122) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1241, parentID 1) is processed with stopping code 2 +### pop requested out of 25 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.77592,-0.22869,-0.58792) + Old Polarization: (-0.59371,-0.57971,-0.55807) + New Momentum Direction: (0.51539,-0.31066,-0.79867) + New Polarization: (-0.83164,-0.40618,-0.37867) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1240, parentID 1) is processed with stopping code 2 +### pop requested out of 24 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.84832,-0.23703,0.47347) + Old Polarization: (-0.51306,-0.58898,0.6244) + New Momentum Direction: (0.6947,-0.322,0.6432) + New Polarization: (-0.70766,-0.4662,0.53092) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1239, parentID 1) is processed with stopping code 2 +### pop requested out of 23 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.85362,-0.23961,0.46251) + Old Polarization: (-0.50487,-0.59912,0.62142) + New Momentum Direction: (0.71158,-0.3232,0.62385) + New Polarization: (-0.69109,-0.48201,0.53857) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1238, parentID 1) is processed with stopping code 2 +### pop requested out of 22 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.58305,0.67133,-0.45758) + Old Polarization: (-0.80814,0.42136,-0.41154) + New Momentum Direction: (0.58305,-0.67133,-0.45758) + New Polarization: (0.80814,0.42136,0.41154) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.58305,-0.67133,-0.45758) + Old Polarization: (0.80814,0.42136,0.41154) + New Momentum Direction: (-0.58305,-0.67133,-0.45758) + New Polarization: (0.80814,-0.42136,-0.41154) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1237, parentID 1) is processed with stopping code 2 +### pop requested out of 21 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.58061,0.72384,-0.37275) + Old Polarization: (-0.81257,0.4864,-0.32117) + New Momentum Direction: (0.78601,0.35715,-0.50461) + New Polarization: (-0.051481,-0.77559,-0.62913) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1236, parentID 1) is processed with stopping code 2 +### pop requested out of 20 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1235, parentID 1) is processed with stopping code 2 +### pop requested out of 19 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.86283,-0.47044,-0.18496) + Old Polarization: (-0.49408,-0.86218,-0.11195) + New Momentum Direction: (0.73218,-0.63388,-0.24921) + New Polarization: (-0.67291,-0.72981,-0.12071) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1234, parentID 1) is processed with stopping code 2 +### pop requested out of 18 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.74461,-0.096637,-0.66047) + Old Polarization: (-0.62842,-0.43509,-0.64481) + New Momentum Direction: (0.42901,-0.13077,-0.89378) + New Polarization: (-0.87753,-0.29498,-0.37805) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1233, parentID 1) is processed with stopping code 2 +### pop requested out of 17 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.58001,0.72237,-0.37653) + Old Polarization: (-0.81292,0.48348,-0.32467) + New Momentum Direction: (0.78589,0.34942,-0.51018) + New Polarization: (-0.063602,-0.77499,-0.62876) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1232, parentID 1) is processed with stopping code 2 +### pop requested out of 16 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.7054,0.4348,0.55978) + Old Polarization: (-0.67235,0.1604,0.72265) + New Momentum Direction: (0.27451,0.58986,0.75941) + New Polarization: (-0.94004,-0.0016357,0.34107) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1231, parentID 1) is processed with stopping code 2 +### pop requested out of 15 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.85293,-0.45782,-0.25083) + Old Polarization: (-0.50644,-0.84222,-0.18488) + New Momentum Direction: (0.70833,-0.61906,-0.33917) + New Polarization: (-0.69474,-0.69644,-0.17975) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1230, parentID 1) is processed with stopping code 2 +### pop requested out of 14 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.8543,-0.27582,0.44056) + Old Polarization: (-0.50659,-0.63152,0.58698) + New Momentum Direction: (0.70767,-0.37493,0.59886) + New Polarization: (-0.69721,-0.50786,0.50593) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1229, parentID 1) is processed with stopping code 2 +### pop requested out of 13 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.70699,0.45068,0.54503) + Old Polarization: (-0.67101,0.18402,0.71825) + New Momentum Direction: (0.30661,0.60656,0.73354) + New Polarization: (-0.92958,0.025128,0.36777) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1228, parentID 1) is processed with stopping code 2 +### pop requested out of 12 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1227, parentID 1) is processed with stopping code 2 +### pop requested out of 11 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.7716,0.14711,0.61887) +Old Polarization: (-0.59865,-0.161,0.78466) +New Polarization: (-0.60812,-0.10704,0.75161) +Polarization Change: (-0.62517,-0.11004,0.77269) +New Momentum Direction: (0.66692,-0.56033,0.4598) +Momentum Change: (0.6771,-0.56888,0.46682) + Photon at Boundary! + Old Momentum Direction: (0.6771,-0.56888,0.46682) + Old Polarization: (-0.62517,-0.11004,0.77269) + New Momentum Direction: (-0.6771,-0.56888,0.46682) + New Polarization: (-0.62517,0.11004,-0.77269) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.6771,-0.56888,0.46682) + Old Polarization: (-0.62517,0.11004,-0.77269) + New Momentum Direction: (-0.6771,-0.56888,-0.46682) + New Polarization: (0.62517,-0.11004,-0.77269) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1226, parentID 1) is processed with stopping code 2 +### pop requested out of 10 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.87555,-0.43015,0.21994) + Old Polarization: (-0.4822,-0.80617,0.34289) + New Momentum Direction: (0.75527,-0.58355,0.29838) + New Polarization: (-0.65476,-0.69207,0.30385) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1225, parentID 1) is processed with stopping code 2 +### pop requested out of 9 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.61724,0.46435,-0.63513) + Old Polarization: (-0.77011,0.19131,-0.60855) + New Momentum Direction: (0.61724,0.46435,0.63513) + New Polarization: (0.77011,-0.19131,-0.60855) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.61724,0.46435,0.63513) + Old Polarization: (0.77011,-0.19131,-0.60855) + New Momentum Direction: (-0.61724,0.46435,0.63513) + New Polarization: (0.77011,0.19131,0.60855) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1224, parentID 1) is processed with stopping code 2 +### pop requested out of 8 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.64938,0.32636,-0.68687) + Old Polarization: (-0.73564,0.040692,-0.67615) + New Momentum Direction: (0.64938,0.32636,0.68687) + New Polarization: (-0.3128,-0.70864,0.63244) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.64938,0.32636,0.68687) + Old Polarization: (-0.3128,-0.70864,0.63244) + New Momentum Direction: (-0.64938,0.32636,0.68687) + New Polarization: (-0.3128,0.70864,-0.63244) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.64938,0.32636,0.68687) + Old Polarization: (-0.3128,0.70864,-0.63244) + New Momentum Direction: (-0.64938,-0.32636,0.68687) + New Polarization: (0.3128,0.70864,0.63244) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.64938,-0.32636,0.68687) + Old Polarization: (0.3128,0.70864,0.63244) + New Momentum Direction: (-0.87787,-0.44119,0.18625) + New Polarization: (-0.30629,0.21829,-0.92657) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1223, parentID 1) is processed with stopping code 2 +### pop requested out of 7 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1222, parentID 1) is processed with stopping code 2 +### pop requested out of 6 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1221, parentID 1) is processed with stopping code 2 +### pop requested out of 5 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73823,-0.068384,-0.67107) + Old Polarization: (-0.63556,-0.40382,-0.65802) + New Momentum Direction: (0.41001,-0.092465,-0.90738) + New Polarization: (-0.88662,-0.27385,-0.37272) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1220, parentID 1) is processed with stopping code 2 +### pop requested out of 4 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73391,0.32243,0.59784) + Old Polarization: (-0.64046,0.03533,0.76718) + New Momentum Direction: (0.39111,0.43688,0.81004) + New Polarization: (-0.89537,-0.023013,0.44472) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1219, parentID 1) is processed with stopping code 2 +### pop requested out of 3 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1218, parentID 1) is processed with stopping code 2 +### pop requested out of 2 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.60123,0.55459,-0.57528) +Old Polarization: (-0.78794,0.29168,-0.54229) +New Polarization: (-0.49526,0.64833,-0.29408) +Polarization Change: (-0.57108,0.74758,-0.3391) +New Momentum Direction: (0.59398,0.14754,-0.67506) +Momentum Change: (0.65187,0.16192,-0.74084) + Photon at Boundary! + Old Momentum Direction: (0.65187,0.16192,-0.74084) + Old Polarization: (-0.57108,0.74758,-0.3391) + New Momentum Direction: (-0.65187,0.16192,-0.74084) + New Polarization: (-0.57108,-0.74758,0.3391) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.65187,0.16192,-0.74084) + Old Polarization: (-0.57108,-0.74758,0.3391) + New Momentum Direction: (-0.65187,0.16192,0.74084) + New Polarization: (0.37723,0.91673,0.13156) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.65187,0.16192,0.74084) + Old Polarization: (0.37723,0.91673,0.13156) + New Momentum Direction: (-0.65187,-0.16192,0.74084) + New Polarization: (-0.37723,0.91673,-0.13156) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.65187,-0.16192,0.74084) + Old Polarization: (-0.37723,0.91673,-0.13156) + New Momentum Direction: (-0.65187,-0.16192,-0.74084) + New Polarization: (0.28944,-0.95611,-0.045713) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.65187,-0.16192,-0.74084) + Old Polarization: (0.28944,-0.95611,-0.045713) + New Momentum Direction: (0.65187,-0.16192,-0.74084) + New Polarization: (0.28944,0.95611,0.045713) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1217, parentID 1) is processed with stopping code 2 +### pop requested out of 1 stacked tracks. + + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 83 +Track (trackID 1, parentID 0) is processed with stopping code 4 +### pop requested out of 84 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.82648,0.050249,-0.56072) + Old Polarization: (-0.52533,-0.28921,-0.80024) + New Momentum Direction: (0.64918,0.067893,-0.7576) + New Polarization: (-0.73339,-0.2083,-0.64711) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1404, parentID 1) is processed with stopping code 2 +### pop requested out of 83 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.57696,0.55793,0.59652) + Old Polarization: (-0.80847,0.2862,0.51426) + New Momentum Direction: (0.57696,0.55793,-0.59652) + New Polarization: (0.80847,-0.2862,0.51426) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.57696,0.55793,-0.59652) + Old Polarization: (0.80847,-0.2862,0.51426) + New Momentum Direction: (-0.57696,0.55793,-0.59652) + New Polarization: (0.80847,0.2862,-0.51426) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.57696,0.55793,-0.59652) + Old Polarization: (0.80847,0.2862,-0.51426) + New Momentum Direction: (-0.57696,-0.55793,-0.59652) + New Polarization: (-0.80847,0.2862,0.51426) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.57696,-0.55793,-0.59652) + Old Polarization: (-0.80847,0.2862,0.51426) + New Momentum Direction: (-0.57696,-0.55793,0.59652) + New Polarization: (0.80847,-0.2862,0.51426) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.57696,-0.55793,0.59652) + Old Polarization: (0.80847,-0.2862,0.51426) + New Momentum Direction: (0.57696,-0.55793,0.59652) + New Polarization: (0.80847,0.2862,-0.51426) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.57696,-0.55793,0.59652) + Old Polarization: (0.80847,0.2862,-0.51426) + New Momentum Direction: (0.57696,0.55793,0.59652) + New Polarization: (-0.80847,0.2862,0.51426) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.57696,0.55793,0.59652) + Old Polarization: (-0.80847,0.2862,0.51426) + New Momentum Direction: (0.57696,0.55793,-0.59652) + New Polarization: (0.80847,-0.2862,0.51426) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.57696,0.55793,-0.59652) + Old Polarization: (0.80847,-0.2862,0.51426) + New Momentum Direction: (-0.57696,0.55793,-0.59652) + New Polarization: (0.80847,0.2862,-0.51426) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.57696,0.55793,-0.59652) + Old Polarization: (0.80847,0.2862,-0.51426) + New Momentum Direction: (-0.57696,-0.55793,-0.59652) + New Polarization: (-0.80847,0.2862,0.51426) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.57696,-0.55793,-0.59652) + Old Polarization: (-0.80847,0.2862,0.51426) + New Momentum Direction: (-0.57696,-0.55793,0.59652) + New Polarization: (0.80847,-0.2862,0.51426) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.57696,-0.55793,0.59652) + Old Polarization: (0.80847,-0.2862,0.51426) + New Momentum Direction: (0.57696,-0.55793,0.59652) + New Polarization: (0.80847,0.2862,-0.51426) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.57696,-0.55793,0.59652) + Old Polarization: (0.80847,0.2862,-0.51426) + New Momentum Direction: (0.57696,0.55793,0.59652) + New Polarization: (-0.80847,0.2862,0.51426) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.57696,0.55793,0.59652) + Old Polarization: (-0.80847,0.2862,0.51426) + New Momentum Direction: (0.57696,0.55793,-0.59652) + New Polarization: (0.80847,-0.2862,0.51426) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.57696,0.55793,-0.59652) + Old Polarization: (0.80847,-0.2862,0.51426) + New Momentum Direction: (-0.57696,0.55793,-0.59652) + New Polarization: (0.80847,0.2862,-0.51426) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.57696,0.55793,-0.59652) + Old Polarization: (0.80847,0.2862,-0.51426) + New Momentum Direction: (-0.57696,-0.55793,-0.59652) + New Polarization: (-0.80847,0.2862,0.51426) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1403, parentID 1) is processed with stopping code 2 +### pop requested out of 82 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.75484,0.35316,-0.55272) + Old Polarization: (-0.60689,0.056392,-0.79278) + New Momentum Direction: (0.46497,0.47668,-0.74604) + New Polarization: (-0.85187,0.011439,-0.52362) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1402, parentID 1) is processed with stopping code 2 +### pop requested out of 81 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.57319,0.57671,0.58212) + Old Polarization: (-0.81227,0.30622,0.49644) + New Momentum Direction: (0.57319,0.57671,-0.58212) + New Polarization: (0.81227,-0.30622,0.49644) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.57319,0.57671,-0.58212) + Old Polarization: (0.81227,-0.30622,0.49644) + New Momentum Direction: (0.57319,-0.57671,-0.58212) + New Polarization: (-0.81227,-0.30622,-0.49644) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.57319,-0.57671,-0.58212) + Old Polarization: (-0.81227,-0.30622,-0.49644) + New Momentum Direction: (-0.57319,-0.57671,-0.58212) + New Polarization: (-0.81227,0.30622,0.49644) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.57319,-0.57671,-0.58212) + Old Polarization: (-0.81227,0.30622,0.49644) + New Momentum Direction: (-0.57319,-0.57671,0.58212) + New Polarization: (0.81227,-0.30622,0.49644) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.57319,-0.57671,0.58212) + Old Polarization: (0.81227,-0.30622,0.49644) + New Momentum Direction: (-0.57319,0.57671,0.58212) + New Polarization: (-0.81227,-0.30622,-0.49644) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.57319,0.57671,0.58212) + Old Polarization: (-0.81227,-0.30622,-0.49644) + New Momentum Direction: (0.57319,0.57671,0.58212) + New Polarization: (-0.81227,0.30622,0.49644) + *** TotalInternalReflection *** +No Absorbtion length specified +Scattering Photon! +Old Momentum Direction: (0.57319,0.57671,0.58212) +Old Polarization: (-0.81227,0.30622,0.49644) +New Polarization: (-0.51772,-0.073054,0.69221) +Polarization Change: (-0.5968,-0.084214,0.79796) +New Momentum Direction: (-0.69837,0.046193,-0.51745) +Momentum Change: (-0.80235,0.053071,-0.59449) + Photon at Boundary! + Old Momentum Direction: (-0.80235,0.053071,-0.59449) + Old Polarization: (-0.5968,-0.084214,0.79796) + New Momentum Direction: (-0.58669,0.072006,-0.8066) + New Polarization: (0.80977,0.04311,-0.58515) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1401, parentID 1) is processed with stopping code 2 +### pop requested out of 80 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1400, parentID 1) is processed with stopping code 2 +### pop requested out of 79 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1399, parentID 1) is processed with stopping code 2 +### pop requested out of 78 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1398, parentID 1) is processed with stopping code 2 +### pop requested out of 77 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.58023,0.81313,0.046323) + Old Polarization: (-0.80625,0.58151,-0.10866) + New Momentum Direction: (0.78326,0.61854,0.062532) + New Polarization: (0.61878,-0.78536,0.017878) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1397, parentID 1) is processed with stopping code 2 +### pop requested out of 76 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.56412,0.80933,0.16356) + Old Polarization: (-0.82241,0.56838,0.024044) + New Momentum Direction: (0.76556,0.60386,0.22197) + New Polarization: (0.52011,-0.78397,0.33892) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1396, parentID 1) is processed with stopping code 2 +### pop requested out of 75 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.76086,-0.22078,0.61021) + Old Polarization: (-0.60019,-0.59691,0.53241) + New Momentum Direction: (0.4792,-0.29862,0.82535) + New Polarization: (-0.84434,-0.41363,0.34057) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1395, parentID 1) is processed with stopping code 2 +### pop requested out of 74 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.87283,-0.47176,0.12498) + Old Polarization: (-0.47327,-0.88071,-0.019186) + New Momentum Direction: (0.75067,-0.63864,0.1692) + New Polarization: (-0.65002,-0.75974,0.016266) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1394, parentID 1) is processed with stopping code 2 +### pop requested out of 73 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.77913,0.26992,-0.56578) + Old Polarization: (-0.57861,-0.037607,-0.81474) + New Momentum Direction: (0.53845,0.36283,-0.76054) + New Polarization: (-0.80847,-0.032052,-0.58767) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1393, parentID 1) is processed with stopping code 2 +### pop requested out of 72 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.77696,0.24878,-0.57831) + Old Polarization: (-0.58254,-0.064191,-0.81026) + New Momentum Direction: (0.51761,0.33812,-0.78598) + New Polarization: (-0.82314,-0.053889,-0.56527) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1392, parentID 1) is processed with stopping code 2 +### pop requested out of 71 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.62187,0.31273,0.71797) + Old Polarization: (-0.75777,0.0089208,0.65246) + New Momentum Direction: (0.84236,0.42361,0.33314) + New Polarization: (0.18182,0.35855,-0.91563) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1391, parentID 1) is processed with stopping code 2 +### pop requested out of 70 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1390, parentID 1) is processed with stopping code 2 +### pop requested out of 69 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1389, parentID 1) is processed with stopping code 2 +### pop requested out of 68 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.57165,0.81706,0.075049) + Old Polarization: (-0.81373,0.57628,-0.075789) + New Momentum Direction: (0.77616,0.62225,0.1019) + New Polarization: (0.61397,-0.78264,0.10256) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1388, parentID 1) is processed with stopping code 2 +### pop requested out of 67 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1387, parentID 1) is processed with stopping code 2 +### pop requested out of 66 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.55923,0.75467,0.34313) + Old Polarization: (-0.82901,0.51051,0.2283) + New Momentum Direction: (0.75702,0.45954,0.46449) + New Polarization: (0.089011,-0.77679,0.62344) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1386, parentID 1) is processed with stopping code 2 +### pop requested out of 65 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1385, parentID 1) is processed with stopping code 2 +### pop requested out of 64 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.84533,-0.44602,0.29408) + Old Polarization: (-0.50559,-0.84574,0.17062) + New Momentum Direction: (0.68783,-0.606,0.39957) + New Polarization: (-0.70526,-0.68819,0.17031) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1384, parentID 1) is processed with stopping code 2 +### pop requested out of 63 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.88979,-0.33252,-0.31257) + Old Polarization: (-0.45308,-0.72569,-0.51777) + New Momentum Direction: (0.78741,-0.44915,-0.4222) + New Polarization: (-0.61408,-0.63137,-0.47358) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1383, parentID 1) is processed with stopping code 2 +### pop requested out of 62 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.67619,0.60425,-0.42147) + Old Polarization: (-0.69589,0.33605,-0.63468) + New Momentum Direction: (-0.67619,0.60425,-0.42147) + New Polarization: (-0.69589,-0.33605,0.63468) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.67619,0.60425,-0.42147) + Old Polarization: (-0.69589,-0.33605,0.63468) + New Momentum Direction: (-0.67619,-0.60425,-0.42147) + New Polarization: (0.69589,-0.33605,-0.63468) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.67619,-0.60425,-0.42147) + Old Polarization: (0.69589,-0.33605,-0.63468) + New Momentum Direction: (-0.67619,-0.60425,0.42147) + New Polarization: (-0.69589,0.33605,-0.63468) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1382, parentID 1) is processed with stopping code 2 +### pop requested out of 61 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1381, parentID 1) is processed with stopping code 2 +### pop requested out of 60 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.83902,-0.41356,0.35357) + Old Polarization: (-0.50971,-0.82478,0.24481) + New Momentum Direction: (0.68153,-0.55622,0.47554) + New Polarization: (-0.7066,-0.66921,0.22994) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1380, parentID 1) is processed with stopping code 2 +### pop requested out of 59 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.77799,-0.27253,0.56609) + Old Polarization: (-0.58072,-0.65582,0.48236) + New Momentum Direction: (0.52721,-0.3686,0.76563) + New Polarization: (-0.81649,-0.46929,0.33631) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1379, parentID 1) is processed with stopping code 2 +### pop requested out of 58 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.64521,0.70177,-0.30203) + Old Polarization: (-0.73216,0.45501,-0.50686) + New Momentum Direction: (0.64521,-0.70177,-0.30203) + New Polarization: (0.11687,-0.30002,0.94675) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.64521,-0.70177,-0.30203) + Old Polarization: (0.11687,-0.30002,0.94675) + New Momentum Direction: (-0.64521,-0.70177,-0.30203) + New Polarization: (0.11687,0.30002,-0.94675) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.64521,-0.70177,-0.30203) + Old Polarization: (0.11687,0.30002,-0.94675) + New Momentum Direction: (-0.64521,-0.70177,0.30203) + New Polarization: (-0.11687,-0.30002,-0.94675) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.64521,-0.70177,0.30203) + Old Polarization: (-0.11687,-0.30002,-0.94675) + New Momentum Direction: (-0.64521,0.70177,0.30203) + New Polarization: (0.57012,0.17909,0.8018) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.64521,0.70177,0.30203) + Old Polarization: (0.57012,0.17909,0.8018) + New Momentum Direction: (0.64521,0.70177,0.30203) + New Polarization: (0.57012,-0.17909,-0.8018) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.64521,0.70177,0.30203) + Old Polarization: (0.57012,-0.17909,-0.8018) + New Momentum Direction: (0.64521,0.70177,-0.30203) + New Polarization: (-0.57012,0.17909,-0.8018) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.64521,0.70177,-0.30203) + Old Polarization: (-0.57012,0.17909,-0.8018) + New Momentum Direction: (0.64521,-0.70177,-0.30203) + New Polarization: (0.32817,-0.10243,0.93905) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.64521,-0.70177,-0.30203) + Old Polarization: (0.32817,-0.10243,0.93905) + New Momentum Direction: (-0.64521,-0.70177,-0.30203) + New Polarization: (0.32817,0.10243,-0.93905) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.64521,-0.70177,-0.30203) + Old Polarization: (0.32817,0.10243,-0.93905) + New Momentum Direction: (-0.64521,-0.70177,0.30203) + New Polarization: (-0.32817,-0.10243,-0.93905) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.64521,-0.70177,0.30203) + Old Polarization: (-0.32817,-0.10243,-0.93905) + New Momentum Direction: (-0.64521,0.70177,0.30203) + New Polarization: (0.47405,0.057707,0.8786) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.64521,0.70177,0.30203) + Old Polarization: (0.47405,0.057707,0.8786) + New Momentum Direction: (0.64521,0.70177,0.30203) + New Polarization: (0.47405,-0.057707,-0.8786) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1378, parentID 1) is processed with stopping code 2 +### pop requested out of 57 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.55727,0.78889,0.25905) + Old Polarization: (-0.82949,0.54292,0.13105) + New Momentum Direction: (0.75742,0.54987,0.35208) + New Polarization: (0.32161,-0.78348,0.53173) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1377, parentID 1) is processed with stopping code 2 +### pop requested out of 56 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1376, parentID 1) is processed with stopping code 2 +### pop requested out of 55 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.58698,0.80821,-0.047497) + Old Polarization: (-0.79635,0.56581,-0.21376) + New Momentum Direction: (0.79722,0.60023,-0.06451) + New Polarization: (0.57023,-0.78382,-0.2459) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1375, parentID 1) is processed with stopping code 2 +### pop requested out of 54 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.84609,-0.43931,0.3019) + Old Polarization: (-0.50345,-0.84469,0.18178) + New Momentum Direction: (0.69267,-0.59443,0.4085) + New Polarization: (-0.6998,-0.69101,0.18109) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1374, parentID 1) is processed with stopping code 2 +### pop requested out of 53 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1373, parentID 1) is processed with stopping code 2 +### pop requested out of 52 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.60672,0.77954,-0.15557) + Old Polarization: (-0.77454,0.53572,-0.33629) + New Momentum Direction: (0.82288,0.52758,-0.211) + New Polarization: (0.37451,-0.78285,-0.49689) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1372, parentID 1) is processed with stopping code 2 +### pop requested out of 51 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.59522,0.80185,-0.052453) + Old Polarization: (-0.78979,0.57175,-0.22209) + New Momentum Direction: (0.80199,0.59314,-0.070673) + New Polarization: (0.55908,-0.78701,-0.26085) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1371, parentID 1) is processed with stopping code 2 +### pop requested out of 50 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1370, parentID 1) is processed with stopping code 2 +### pop requested out of 49 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.5844,0.51231,0.6293) + Old Polarization: (-0.80017,0.2349,0.55186) + New Momentum Direction: (0.5844,0.51231,-0.6293) + New Polarization: (0.80017,-0.2349,0.55186) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.5844,0.51231,-0.6293) + Old Polarization: (0.80017,-0.2349,0.55186) + New Momentum Direction: (-0.5844,0.51231,-0.6293) + New Polarization: (0.80017,0.2349,-0.55186) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.5844,0.51231,-0.6293) + Old Polarization: (0.80017,0.2349,-0.55186) + New Momentum Direction: (-0.5844,-0.51231,-0.6293) + New Polarization: (-0.80017,0.2349,0.55186) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.5844,-0.51231,-0.6293) + Old Polarization: (-0.80017,0.2349,0.55186) + New Momentum Direction: (-0.5844,-0.51231,0.6293) + New Polarization: (0.80017,-0.2349,0.55186) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.5844,-0.51231,0.6293) + Old Polarization: (0.80017,-0.2349,0.55186) + New Momentum Direction: (0.5844,-0.51231,0.6293) + New Polarization: (0.80017,0.2349,-0.55186) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.5844,-0.51231,0.6293) + Old Polarization: (0.80017,0.2349,-0.55186) + New Momentum Direction: (0.5844,0.51231,0.6293) + New Polarization: (-0.80017,0.2349,0.55186) + *** TotalInternalReflection *** +No Absorbtion length specified +Scattering Photon! +Old Momentum Direction: (0.5844,0.51231,0.6293) +Old Polarization: (-0.80017,0.2349,0.55186) +New Polarization: (0.29191,0.27794,0.86645) +Polarization Change: (0.30547,0.29085,0.9067) +New Momentum Direction: (0.56911,0.65461,-0.40172) +Momentum Change: (0.59536,0.6848,-0.42024) +Scattering Photon! +Old Momentum Direction: (0.59536,0.6848,-0.42024) +Old Polarization: (0.30547,0.29085,0.9067) +New Polarization: (0.63731,-0.33999,0.5126) +Polarization Change: (0.71953,-0.38386,0.57873) +New Momentum Direction: (-0.50739,-0.85863,0.061318) +Momentum Change: (-0.50778,-0.8593,0.061366) + Photon at Boundary! + Old Momentum Direction: (-0.50778,-0.8593,0.061366) + Old Polarization: (0.71953,-0.38386,0.57873) + New Momentum Direction: (-0.68789,-0.72104,0.083133) + New Polarization: (-0.54063,0.58543,0.60415) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1369, parentID 1) is processed with stopping code 2 +### pop requested out of 48 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.63144,0.25103,0.73367) + Old Polarization: (-0.74593,-0.061845,0.66315) + New Momentum Direction: (0.85895,0.34148,0.38157) + New Polarization: (0.29619,0.27652,-0.91422) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1368, parentID 1) is processed with stopping code 2 +### pop requested out of 47 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1367, parentID 1) is processed with stopping code 2 +### pop requested out of 46 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.75223,-0.19944,0.62799) + Old Polarization: (-0.61015,-0.57064,0.54963) + New Momentum Direction: (0.44988,-0.27033,0.8512) + New Polarization: (-0.86029,-0.38711,0.33174) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1366, parentID 1) is processed with stopping code 2 +### pop requested out of 45 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.66001,0.65511,-0.36771) + Old Polarization: (-0.71447,0.39609,-0.57675) + New Momentum Direction: (-0.66001,0.65511,-0.36771) + New Polarization: (-0.71447,-0.39609,0.57675) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66001,0.65511,-0.36771) + Old Polarization: (-0.71447,-0.39609,0.57675) + New Momentum Direction: (-0.66001,-0.65511,-0.36771) + New Polarization: (0.71447,-0.39609,-0.57675) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66001,-0.65511,-0.36771) + Old Polarization: (0.71447,-0.39609,-0.57675) + New Momentum Direction: (-0.66001,-0.65511,0.36771) + New Polarization: (-0.71447,0.39609,-0.57675) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66001,-0.65511,0.36771) + Old Polarization: (-0.71447,0.39609,-0.57675) + New Momentum Direction: (0.66001,-0.65511,0.36771) + New Polarization: (-0.71447,-0.39609,0.57675) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66001,-0.65511,0.36771) + Old Polarization: (-0.71447,-0.39609,0.57675) + New Momentum Direction: (0.66001,0.65511,0.36771) + New Polarization: (0.71447,-0.39609,-0.57675) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66001,0.65511,0.36771) + Old Polarization: (0.71447,-0.39609,-0.57675) + New Momentum Direction: (-0.66001,0.65511,0.36771) + New Polarization: (0.71447,0.39609,0.57675) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66001,0.65511,0.36771) + Old Polarization: (0.71447,0.39609,0.57675) + New Momentum Direction: (-0.66001,-0.65511,0.36771) + New Polarization: (-0.71447,0.39609,-0.57675) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66001,-0.65511,0.36771) + Old Polarization: (-0.71447,0.39609,-0.57675) + New Momentum Direction: (-0.66001,-0.65511,-0.36771) + New Polarization: (0.71447,-0.39609,-0.57675) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66001,-0.65511,-0.36771) + Old Polarization: (0.71447,-0.39609,-0.57675) + New Momentum Direction: (0.66001,-0.65511,-0.36771) + New Polarization: (0.71447,0.39609,0.57675) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.66001,-0.65511,-0.36771) + Old Polarization: (0.71447,0.39609,0.57675) + New Momentum Direction: (0.66001,0.65511,-0.36771) + New Polarization: (-0.71447,0.39609,-0.57675) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1365, parentID 1) is processed with stopping code 2 +### pop requested out of 44 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.63221,0.73242,-0.25272) + Old Polarization: (-0.74691,0.48941,-0.45012) + New Momentum Direction: (0.8534,0.39412,-0.34114) + New Polarization: (0.1027,-0.76876,-0.63123) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1364, parentID 1) is processed with stopping code 2 +### pop requested out of 43 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.67646,0.07453,0.7327) + Old Polarization: (-0.69593,-0.26089,0.66904) + New Momentum Direction: (0.91636,0.10096,0.38742) + New Polarization: (0.39572,-0.081475,-0.91475) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1363, parentID 1) is processed with stopping code 2 +### pop requested out of 42 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.85064,-0.43714,0.29209) + Old Polarization: (-0.49662,-0.85045,0.1735) + New Momentum Direction: (0.70647,-0.58847,0.39321) + New Polarization: (-0.68643,-0.70505,0.17813) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1362, parentID 1) is processed with stopping code 2 +### pop requested out of 41 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.66308,0.14453,0.73447) + Old Polarization: (-0.7118,-0.18192,0.67841) + New Momentum Direction: (0.89437,0.19494,0.40262) + New Polarization: (0.39711,0.068355,-0.91522) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1361, parentID 1) is processed with stopping code 2 +### pop requested out of 40 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.56934,0.663,0.48608) + Old Polarization: (-0.81978,0.41348,0.39622) + New Momentum Direction: (0.56934,-0.663,0.48608) + New Polarization: (0.81978,0.41348,-0.39622) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.56934,-0.663,0.48608) + Old Polarization: (0.81978,0.41348,-0.39622) + New Momentum Direction: (-0.56934,-0.663,0.48608) + New Polarization: (0.81978,-0.41348,0.39622) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.56934,-0.663,0.48608) + Old Polarization: (0.81978,-0.41348,0.39622) + New Momentum Direction: (-0.56934,-0.663,-0.48608) + New Polarization: (-0.81978,0.41348,0.39622) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1360, parentID 1) is processed with stopping code 2 +### pop requested out of 39 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.55969,0.73175,0.38897) + Old Polarization: (-0.82854,0.48467,0.28039) + New Momentum Direction: (0.75755,0.38592,0.52648) + New Polarization: (-0.052402,-0.76797,0.63834) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1359, parentID 1) is processed with stopping code 2 +### pop requested out of 38 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.81982,0.059904,-0.56948) + Old Polarization: (-0.53461,-0.27623,-0.79868) + New Momentum Direction: (0.62697,0.081498,-0.77477) + New Polarization: (-0.75196,-0.19665,-0.62919) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1358, parentID 1) is processed with stopping code 2 +### pop requested out of 37 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.85464,-0.10351,-0.50881) + Old Polarization: (-0.49431,-0.46215,-0.73626) + New Momentum Direction: (0.71044,-0.14029,-0.68963) + New Polarization: (-0.68574,-0.3583,-0.63354) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1357, parentID 1) is processed with stopping code 2 +### pop requested out of 36 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.60021,0.79562,-0.08209) + Old Polarization: (-0.78419,0.56516,-0.25622) + New Momentum Direction: (0.80844,0.57809,-0.11057) + New Polarization: (0.51673,-0.78707,-0.33692) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1356, parentID 1) is processed with stopping code 2 +### pop requested out of 35 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.88379,-0.25712,-0.39091) + Old Polarization: (-0.45825,-0.64438,-0.6122) + New Momentum Direction: (0.77707,-0.34588,-0.52586) + New Polarization: (-0.62242,-0.54653,-0.56027) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1355, parentID 1) is processed with stopping code 2 +### pop requested out of 34 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.56365,0.77674,0.28103) + Old Polarization: (-0.82554,0.54126,0.15975) + New Momentum Direction: (0.76025,0.52758,0.37905) + New Polarization: (0.26415,-0.78413,0.56158) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1354, parentID 1) is processed with stopping code 2 +### pop requested out of 33 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.88072,-0.26533,-0.39233) + Old Polarization: (-0.46444,-0.64619,-0.60558) + New Momentum Direction: (0.76721,-0.35931,-0.5313) + New Polarization: (-0.63479,-0.54391,-0.54881) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1353, parentID 1) is processed with stopping code 2 +### pop requested out of 32 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1352, parentID 1) is processed with stopping code 2 +### pop requested out of 31 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.87102,-0.20193,-0.44784) + Old Polarization: (-0.47585,-0.57328,-0.66702) + New Momentum Direction: (0.74597,-0.27374,-0.60711) + New Polarization: (-0.65488,-0.46721,-0.59401) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1351, parentID 1) is processed with stopping code 2 +### pop requested out of 30 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.56153,0.74386,0.36244) + Old Polarization: (-0.82744,0.50184,0.25198) + New Momentum Direction: (0.7583,0.43061,0.48945) + New Polarization: (0.0305,-0.77341,0.63317) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1350, parentID 1) is processed with stopping code 2 +### pop requested out of 29 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.65316,0.68379,-0.32529) + Old Polarization: (-0.72337,0.43646,-0.53501) + New Momentum Direction: (0.88,0.18312,-0.43826) + New Polarization: (-0.16065,-0.75356,-0.63745) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1349, parentID 1) is processed with stopping code 2 +### pop requested out of 28 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1348, parentID 1) is processed with stopping code 2 +### pop requested out of 27 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.57308,0.81272,0.10517) + Old Polarization: (-0.81401,0.57936,-0.041532) + New Momentum Direction: (0.77438,0.61656,0.14212) + New Polarization: (0.59105,-0.78506,0.1853) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1347, parentID 1) is processed with stopping code 2 +### pop requested out of 26 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.75907,-0.22369,0.61138) + Old Polarization: (-0.60249,-0.59712,0.52957) + New Momentum Direction: (0.46897,-0.30347,0.82944) + New Polarization: (-0.85031,-0.40908,0.3311) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1346, parentID 1) is processed with stopping code 2 +### pop requested out of 25 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.83313,0.016639,-0.55283) + Old Polarization: (-0.51791,-0.32729,-0.79035) + New Momentum Direction: (0.66406,0.022494,-0.74734) + New Polarization: (-0.72219,-0.23945,-0.64892) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1345, parentID 1) is processed with stopping code 2 +### pop requested out of 24 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.83866,-0.0028273,-0.54465) + Old Polarization: (-0.51092,-0.35053,-0.78491) + New Momentum Direction: (0.67855,-0.0038131,-0.73454) + New Polarization: (-0.70998,-0.25991,-0.65451) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1344, parentID 1) is processed with stopping code 2 +### pop requested out of 23 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.87214,-0.47671,0.11011) + Old Polarization: (-0.47577,-0.87882,-0.036413) + New Momentum Direction: (0.74653,-0.64828,0.14973) + New Polarization: (-0.65569,-0.75503,0.00015762) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1343, parentID 1) is processed with stopping code 2 +### pop requested out of 22 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.77548,0.25421,-0.57794) + Old Polarization: (-0.58424,-0.058136,-0.8095) + New Momentum Direction: (0.51317,0.34556,-0.78565) + New Polarization: (-0.82579,-0.050693,-0.56169) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1342, parentID 1) is processed with stopping code 2 +### pop requested out of 21 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1341, parentID 1) is processed with stopping code 2 +### pop requested out of 20 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.86017,-0.1431,-0.48953) + Old Polarization: (-0.48881,-0.50516,-0.71125) + New Momentum Direction: (0.72114,-0.19438,-0.66496) + New Polarization: (-0.67753,-0.39817,-0.61839) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1340, parentID 1) is processed with stopping code 2 +### pop requested out of 19 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.7806,0.26059,-0.56812) + Old Polarization: (-0.57709,-0.048653,-0.81523) + New Momentum Direction: (0.54062,0.35075,-0.76466) + New Polarization: (-0.80733,-0.039245,-0.58879) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1339, parentID 1) is processed with stopping code 2 +### pop requested out of 18 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.83319,0.0059599,-0.55295) + Old Polarization: (-0.51873,-0.33807,-0.78526) + New Momentum Direction: (0.6615,0.0080827,-0.7499) + New Polarization: (-0.72526,-0.24752,-0.64244) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1338, parentID 1) is processed with stopping code 2 +### pop requested out of 17 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.61612,0.76875,-0.17154) + Old Polarization: (-0.76583,0.53375,-0.35863) + New Momentum Direction: (0.83016,0.50735,-0.23114) + New Polarization: (0.33154,-0.78256,-0.52695) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1337, parentID 1) is processed with stopping code 2 +### pop requested out of 16 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.83425,-0.42281,0.35391) + Old Polarization: (-0.51769,-0.82156,0.23881) + New Momentum Direction: (0.66347,-0.57374,0.48024) + New Polarization: (-0.72395,-0.65436,0.2184) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1336, parentID 1) is processed with stopping code 2 +### pop requested out of 15 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1335, parentID 1) is processed with stopping code 2 +### pop requested out of 14 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.58447,0.81054,-0.037554) + Old Polarization: (-0.79878,0.56662,-0.20223) + New Momentum Direction: (0.79471,0.60484,-0.051062) + New Polarization: (0.58203,-0.7832,-0.21875) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1334, parentID 1) is processed with stopping code 2 +### pop requested out of 13 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.78908,-0.31274,0.52871) + Old Polarization: (-0.56864,-0.69747,0.43611) + New Momentum Direction: (0.55251,-0.42435,0.7174) + New Polarization: (-0.80148,-0.50678,0.3175) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1333, parentID 1) is processed with stopping code 2 +### pop requested out of 12 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.607,0.3728,0.70183) + Old Polarization: (-0.77366,0.075322,0.62911) + New Momentum Direction: (0.82483,0.50659,0.25104) + New Polarization: (0.034879,0.39757,-0.91691) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1332, parentID 1) is processed with stopping code 2 +### pop requested out of 11 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1331, parentID 1) is processed with stopping code 2 +### pop requested out of 10 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73774,0.40898,-0.5371) + Old Polarization: (-0.62649,0.11838,-0.77038) + New Momentum Direction: (0.4062,0.55358,-0.72701) + New Polarization: (-0.88179,0.028783,-0.47076) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1330, parentID 1) is processed with stopping code 2 +### pop requested out of 9 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.80635,-0.35912,0.46993) +Old Polarization: (-0.5492,-0.74953,0.36957) +New Polarization: (-0.56611,-0.72633,0.30596) +Polarization Change: (-0.58339,-0.7485,0.3153) +New Momentum Direction: (-0.39229,-0.068015,-0.88731) +Momentum Change: (-0.40337,-0.069936,-0.91236) + Photon at Boundary! + Old Momentum Direction: (-0.40337,-0.069936,-0.91236) + Old Polarization: (-0.58339,-0.7485,0.3153) + New Momentum Direction: (-0.54743,-0.094913,-0.83145) + New Polarization: (-0.61388,-0.6297,0.47606) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1329, parentID 1) is processed with stopping code 2 +### pop requested out of 8 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.58146,0.81352,0.0095914) + Old Polarization: (-0.80352,0.57608,-0.14995) + New Momentum Direction: (0.78768,0.61595,0.012993) + New Polarization: (0.61455,-0.78405,-0.087113) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1328, parentID 1) is processed with stopping code 2 +### pop requested out of 7 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1327, parentID 1) is processed with stopping code 2 +### pop requested out of 6 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1326, parentID 1) is processed with stopping code 2 +### pop requested out of 5 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.78619,0.21539,-0.57923) + Old Polarization: (-0.57191,-0.10155,-0.81401) + New Momentum Direction: (0.54482,0.29226,-0.78597) + New Polarization: (-0.80631,-0.074808,-0.58674) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1325, parentID 1) is processed with stopping code 2 +### pop requested out of 4 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.87078,-0.2042,-0.44726) + Old Polarization: (-0.47646,-0.57497,-0.66512) + New Momentum Direction: (0.74492,-0.27709,-0.60689) + New Polarization: (-0.65622,-0.46833,-0.59164) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1324, parentID 1) is processed with stopping code 2 +### pop requested out of 3 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1323, parentID 1) is processed with stopping code 2 +### pop requested out of 2 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1322, parentID 1) is processed with stopping code 2 +### pop requested out of 1 stacked tracks. + + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 57 +Track (trackID 1, parentID 0) is processed with stopping code 4 +### pop requested out of 58 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.62617,0.31771,-0.71202) + Old Polarization: (-0.47367,-0.57036,-0.67106) + New Momentum Direction: (0.84558,0.42904,-0.31768) + New Polarization: (0.36781,-0.036888,0.92917) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1461, parentID 1) is processed with stopping code 2 +### pop requested out of 57 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.41054,0.78055,0.47138) + Old Polarization: (-0.72096,-0.038638,0.6919) + New Momentum Direction: (0.55709,0.52963,0.63964) + New Polarization: (-0.72026,-0.075245,0.68961) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1460, parentID 1) is processed with stopping code 2 +### pop requested out of 56 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1459, parentID 1) is processed with stopping code 2 +### pop requested out of 55 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.93891,-0.024755,-0.34326) + Old Polarization: (-0.11398,-0.96348,-0.24229) + New Momentum Direction: (0.88482,-0.033515,-0.46473) + New Polarization: (-0.20145,-0.92689,-0.3167) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1458, parentID 1) is processed with stopping code 2 +### pop requested out of 54 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1457, parentID 1) is processed with stopping code 2 +### pop requested out of 53 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.52303,0.4513,-0.72303) + Old Polarization: (-0.59364,-0.41582,-0.68897) + New Momentum Direction: (0.70424,0.60765,-0.36716) + New Polarization: (0.24544,0.27689,0.92903) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1456, parentID 1) is processed with stopping code 2 +### pop requested out of 52 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.32214,0.87687,0.35682) + Old Polarization: (-0.82337,0.073505,0.56272) + New Momentum Direction: (0.43639,0.75889,0.48337) + New Polarization: (-0.61927,-0.1364,0.77324) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 1455, parentID 1) is processed with stopping code 2 -### pop requested out of 36 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.0267811,0.998396,0.0498814) - Old Polarization: (-0.984621,-0.0349636,0.171172) - New Momentum Direction: (-0.0364074,0.997034,0.0678109) - New Polarization: (-0.946511,-0.0561732,0.317744) - *** FresnelRefraction *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.0364074,0.997034,0.0678109) - Old Polarization: (-0.946511,-0.0561732,0.317744) - New Momentum Direction: (-0.0267811,0.998396,0.0498814) - New Polarization: (-0.984586,-0.0349726,0.171371) - *** FresnelRefraction *** - Photon at Boundary! - Old Momentum Direction: (-0.0267811,0.998396,0.0498814) - Old Polarization: (-0.984586,-0.0349726,0.171371) - New Momentum Direction: (-0.0364074,0.997034,0.0678109) - New Polarization: (-0.946445,-0.0561841,0.31794) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1454, parentID 1) is processed with stopping code 2 -### pop requested out of 35 stacked tracks. +### pop requested out of 51 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1453, parentID 1) is processed with stopping code 2 -### pop requested out of 34 stacked tracks. +Track (trackID 1454, parentID 1) is processed with stopping code 2 +### pop requested out of 50 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.651158,0.373564,-0.660639) - Old Polarization: (-0.222861,-0.73798,-0.63696) - New Momentum Direction: (0.651158,0.373564,0.660639) - New Polarization: (0.222861,0.73798,-0.63696) + Old Momentum Direction: (0.93449,-0.022244,-0.3553) + Old Polarization: (-0.11995,-0.95936,-0.25543) + New Momentum Direction: (0.87594,-0.030145,-0.48148) + New Polarization: (-0.21218,-0.9204,-0.32839) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1453, parentID 1) is processed with stopping code 2 +### pop requested out of 49 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.57843,0.59081,0.56246) + Old Polarization: (-0.52907,-0.2531,0.80995) + New Momentum Direction: (0.57843,-0.59081,0.56246) + New Polarization: (0.52907,-0.2531,-0.80995) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (0.651158,0.373564,0.660639) - Old Polarization: (0.222861,0.73798,-0.63696) - New Momentum Direction: (-0.651158,0.373564,0.660639) - New Polarization: (0.222861,-0.73798,0.63696) + Old Momentum Direction: (0.57843,-0.59081,0.56246) + Old Polarization: (0.52907,-0.2531,-0.80995) + New Momentum Direction: (-0.57843,-0.59081,0.56246) + New Polarization: (0.52907,0.2531,0.80995) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.57843,-0.59081,0.56246) + Old Polarization: (0.52907,0.2531,0.80995) + New Momentum Direction: (-0.57843,-0.59081,-0.56246) + New Polarization: (-0.52907,-0.2531,0.80995) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.57843,-0.59081,-0.56246) + Old Polarization: (-0.52907,-0.2531,0.80995) + New Momentum Direction: (-0.57843,0.59081,-0.56246) + New Polarization: (0.52907,-0.2531,-0.80995) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.57843,0.59081,-0.56246) + Old Polarization: (0.52907,-0.2531,-0.80995) + New Momentum Direction: (0.57843,0.59081,-0.56246) + New Polarization: (0.52907,0.2531,0.80995) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.57843,0.59081,-0.56246) + Old Polarization: (0.52907,0.2531,0.80995) + New Momentum Direction: (0.57843,0.59081,0.56246) + New Polarization: (-0.52907,-0.2531,0.80995) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.57843,0.59081,0.56246) + Old Polarization: (-0.52907,-0.2531,0.80995) + New Momentum Direction: (0.57843,-0.59081,0.56246) + New Polarization: (0.52907,-0.2531,-0.80995) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.57843,-0.59081,0.56246) + Old Polarization: (0.52907,-0.2531,-0.80995) + New Momentum Direction: (-0.57843,-0.59081,0.56246) + New Polarization: (0.52907,0.2531,0.80995) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.57843,-0.59081,0.56246) + Old Polarization: (0.52907,0.2531,0.80995) + New Momentum Direction: (-0.57843,-0.59081,-0.56246) + New Polarization: (-0.52907,-0.2531,0.80995) *** TotalInternalReflection *** No Absorbtion length specified ** Photon Absorbed! ** Track (trackID 1452, parentID 1) is processed with stopping code 2 -### pop requested out of 33 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.945462,0.211347,0.24786) -Old Polarization: (0.101568,-0.914274,0.392158) -New Polarization: (-0.352291,-0.464341,0.646476) -Polarization Change: (-0.404731,-0.53346,0.742707) -New Momentum Direction: (0.885199,-0.365581,0.376592) -Momentum Change: (0.860167,-0.355243,0.365943) - Photon at Boundary! - Old Momentum Direction: (0.860167,-0.355243,0.365943) - Old Polarization: (-0.404731,-0.53346,0.742707) - New Momentum Direction: (0.720369,-0.483114,0.497664) - New Polarization: (-0.690338,-0.430002,0.581834) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1451, parentID 1) is processed with stopping code 2 -### pop requested out of 32 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.460372,0.522045,-0.718002) - Old Polarization: (-0.440342,-0.568,-0.695323) - New Momentum Direction: (0.460372,0.522045,0.718002) - New Polarization: (-0.546221,-0.470996,0.69268) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.460372,0.522045,0.718002) - Old Polarization: (-0.546221,-0.470996,0.69268) - New Momentum Direction: (0.460372,-0.522045,0.718002) - New Polarization: (0.546221,-0.470996,-0.69268) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.460372,-0.522045,0.718002) - Old Polarization: (0.546221,-0.470996,-0.69268) - New Momentum Direction: (-0.460372,-0.522045,0.718002) - New Polarization: (0.546221,0.470996,0.69268) - *** TotalInternalReflection *** -No Absorbtion length specified +### pop requested out of 48 stacked tracks. ** Photon Absorbed! ** +Track (trackID 1451, parentID 1) is processed with stopping code 2 +### pop requested out of 47 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.23138,0.85432,-0.46541) + Old Polarization: (-0.92445,0.044048,-0.37874) + New Momentum Direction: (0.31451,0.70773,-0.63262) + New Polarization: (-0.85195,-0.083459,-0.51692) + *** FresnelRefraction *** +No Absorbtion length specified Track (trackID 1450, parentID 1) is processed with stopping code 2 -### pop requested out of 31 stacked tracks. +### pop requested out of 46 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.5866,0.57041,0.57492) + Old Polarization: (-0.51941,-0.27969,0.80746) + New Momentum Direction: (-0.5866,0.57041,0.57492) + New Polarization: (-0.51941,0.27969,-0.80746) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.5866,0.57041,0.57492) + Old Polarization: (-0.51941,0.27969,-0.80746) + New Momentum Direction: (-0.5866,0.57041,-0.57492) + New Polarization: (0.51941,-0.27969,-0.80746) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.5866,0.57041,-0.57492) + Old Polarization: (0.51941,-0.27969,-0.80746) + New Momentum Direction: (-0.5866,-0.57041,-0.57492) + New Polarization: (-0.51941,-0.27969,0.80746) + *** TotalInternalReflection *** +No Absorbtion length specified ** Photon Absorbed! ** Track (trackID 1449, parentID 1) is processed with stopping code 2 -### pop requested out of 30 stacked tracks. +### pop requested out of 45 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.583221,0.549785,0.597988) - Old Polarization: (-0.302159,-0.536501,0.787951) - New Momentum Direction: (0.583221,0.549785,-0.597988) - New Polarization: (0.302159,0.536501,0.787951) - *** TotalInternalReflection *** + Old Momentum Direction: (0.86823,0.036147,-0.49484) + Old Polarization: (-0.19811,-0.88913,-0.41254) + New Momentum Direction: (0.73848,0.049124,-0.67248) + New Polarization: (-0.3497,-0.82483,-0.44427) + *** FresnelRefraction *** No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.583221,0.549785,-0.597988) - Old Polarization: (0.302159,0.536501,0.787951) - New Momentum Direction: (-0.583221,0.549785,-0.597988) - New Polarization: (0.302159,-0.536501,-0.787951) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.583221,0.549785,-0.597988) - Old Polarization: (0.302159,-0.536501,-0.787951) - New Momentum Direction: (-0.583221,-0.549785,-0.597988) - New Polarization: (-0.302159,-0.536501,0.787951) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.583221,-0.549785,-0.597988) - Old Polarization: (-0.302159,-0.536501,0.787951) - New Momentum Direction: (-0.583221,-0.549785,0.597988) - New Polarization: (0.302159,0.536501,0.787951) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.583221,-0.549785,0.597988) - Old Polarization: (0.302159,0.536501,0.787951) - New Momentum Direction: (0.583221,-0.549785,0.597988) - New Polarization: (0.302159,-0.536501,-0.787951) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.583221,-0.549785,0.597988) - Old Polarization: (0.302159,-0.536501,-0.787951) - New Momentum Direction: (0.583221,0.549785,0.597988) - New Polarization: (-0.302159,-0.536501,0.787951) - *** TotalInternalReflection *** -No Absorbtion length specified -Scattering Photon! -Old Momentum Direction: (0.583221,0.549785,0.597988) -Old Polarization: (-0.302159,-0.536501,0.787951) -New Polarization: (0.0850948,0.260216,0.856129) -Polarization Change: (0.0946721,0.289502,0.952484) -New Momentum Direction: (0.241641,-0.860563,0.846327) -Momentum Change: (0.196305,-0.699107,0.687542) - -** Photon Absorbed! ** Track (trackID 1448, parentID 1) is processed with stopping code 2 -### pop requested out of 29 stacked tracks. +### pop requested out of 44 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.00200221,0.991704,0.128528) - Old Polarization: (-0.964404,-0.0359009,0.261983) - New Momentum Direction: (-0.00270525,0.984802,0.173658) - New Polarization: (-0.93608,-0.0635829,0.345992) - *** FresnelRefraction *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.00270525,0.984802,0.173658) - Old Polarization: (-0.93608,-0.0635829,0.345992) - New Momentum Direction: (-0.00200221,0.991704,0.128528) - New Polarization: (-0.964256,-0.03597,0.262519) - *** FresnelRefraction *** - Photon at Boundary! - Old Momentum Direction: (-0.00200221,0.991704,0.128528) - Old Polarization: (-0.964256,-0.03597,0.262519) - New Momentum Direction: (-0.00270525,0.984802,0.173658) - New Polarization: (-0.93583,-0.0636978,0.346648) + Old Momentum Direction: (0.93702,-0.023052,-0.34852) + Old Polarization: (-0.11606,-0.96167,-0.24843) + New Momentum Direction: (0.88115,-0.031205,-0.4718) + New Polarization: (-0.20507,-0.92431,-0.32187) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 1447, parentID 1) is processed with stopping code 2 -### pop requested out of 28 stacked tracks. +### pop requested out of 43 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.963591,0.190772,0.187346) - Old Polarization: (0.122489,-0.937776,0.324918) - New Momentum Direction: (0.931623,0.259298,0.254642) - New Polarization: (-0.209226,-0.190237,0.959184) + Old Momentum Direction: (0.83199,0.08515,-0.54822) + Old Polarization: (-0.23347,-0.84265,-0.48521) + New Momentum Direction: (0.66483,0.11465,-0.73814) + New Polarization: (-0.40514,-0.77484,-0.48526) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 1446, parentID 1) is processed with stopping code 2 -### pop requested out of 27 stacked tracks. +### pop requested out of 42 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.343233,0.622569,-0.703278) - Old Polarization: (-0.573394,-0.454157,-0.681881) - New Momentum Direction: (0.463426,0.84058,-0.280466) - New Polarization: (-0.0322556,0.332296,0.942623) + Old Momentum Direction: (0.22067,0.8713,-0.43835) + Old Polarization: (-0.93578,0.062416,-0.34701) + New Momentum Direction: (0.30022,0.74444,-0.59639) + New Polarization: (-0.8204,-0.11745,-0.5596) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 1445, parentID 1) is processed with stopping code 2 -### pop requested out of 26 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.900555,0.260701,0.347902) - Old Polarization: (0.0537042,-0.860831,0.50605) - New Momentum Direction: (0.807424,0.353787,0.472125) - New Polarization: (-0.0998641,-0.706744,0.700386) - *** FresnelRefraction *** -No Absorbtion length specified +### pop requested out of 41 stacked tracks. + +** Photon Absorbed! ** Track (trackID 1444, parentID 1) is processed with stopping code 2 -### pop requested out of 25 stacked tracks. +### pop requested out of 40 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.350805,0.616701,-0.704709) - Old Polarization: (-0.564986,-0.460757,-0.684466) - New Momentum Direction: (0.473381,0.832183,-0.28876) - New Polarization: (-0.0122095,0.333984,0.9425) - *** FresnelRefraction *** + Old Momentum Direction: (0.53933,0.63416,0.55405) + Old Polarization: (-0.57405,-0.2045,0.79287) + New Momentum Direction: (0.53933,-0.63416,0.55405) + New Polarization: (0.57405,-0.2045,-0.79287) + *** TotalInternalReflection *** No Absorbtion length specified + +** Photon Absorbed! ** Track (trackID 1443, parentID 1) is processed with stopping code 2 -### pop requested out of 24 stacked tracks. +### pop requested out of 39 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.812739,0.245604,-0.528331) - Old Polarization: (-0.0448889,-0.877716,-0.477075) - New Momentum Direction: (0.612184,0.333322,-0.717026) - New Polarization: (-0.086026,-0.873349,-0.479439) + Old Momentum Direction: (0.36932,0.8249,0.42795) + Old Polarization: (-0.76757,0.011175,0.64087) + New Momentum Direction: (0.50165,0.64065,0.5813) + New Polarization: (-0.74509,-0.021417,0.66661) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 1442, parentID 1) is processed with stopping code 2 -### pop requested out of 23 stacked tracks. +### pop requested out of 38 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.0585821,0.886264,-0.459461) - Old Polarization: (-0.899991,-0.152262,-0.408451) - New Momentum Direction: (0.0788462,0.781904,-0.618393) - New Polarization: (-0.852667,-0.268484,-0.448191) + Old Momentum Direction: (0.18793,0.98058,-0.056077) + Old Polarization: (-0.97736,0.19235,0.08817) + New Momentum Direction: (0.25464,0.96405,-0.075984) + New Polarization: (0.87266,-0.26294,-0.41149) + *** FresnelRefraction *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.25464,0.96405,-0.075984) + Old Polarization: (0.87266,-0.26294,-0.41149) + New Momentum Direction: (0.70047,0.71148,-0.056077) + New Polarization: (-0.62218,0.57028,-0.53634) + *** FresnelRefraction *** + Photon at Boundary! + Old Momentum Direction: (0.70047,0.71148,-0.056077) + Old Polarization: (-0.62218,0.57028,-0.53634) + New Momentum Direction: (0.94913,0.30559,-0.075984) + New Polarization: (0.24157,-0.86138,-0.44684) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 1441, parentID 1) is processed with stopping code 2 -### pop requested out of 22 stacked tracks. +### pop requested out of 37 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.51763,0.65552,0.54986) +Old Polarization: (-0.59821,-0.1822,0.78035) +New Polarization: (-0.40084,0.40394,0.65417) +Polarization Change: (-0.4623,0.46588,0.75448) +New Momentum Direction: (0.72101,-0.11675,0.51389) +Momentum Change: (0.80734,-0.13073,0.57542) Photon at Boundary! - Old Momentum Direction: (-0.0203572,0.958807,-0.283328) - Old Polarization: (-0.976366,-0.0800517,-0.20075) - New Momentum Direction: (-0.0276984,0.922291,-0.385502) - New Polarization: (-0.950098,-0.144164,-0.27664) + Old Momentum Direction: (0.80734,-0.13073,0.57542) + Old Polarization: (-0.4623,0.46588,0.75448) + New Momentum Direction: (0.59813,-0.17754,0.78148) + New Polarization: (-0.69975,0.35961,0.61727) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 1440, parentID 1) is processed with stopping code 2 -### pop requested out of 21 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.744342,0.416029,0.522375) - Old Polarization: (-0.115752,-0.690016,0.714479) - New Momentum Direction: (0.438699,0.559836,0.702941) - New Polarization: (-0.222521,-0.690196,0.688559) - *** FresnelRefraction *** -No Absorbtion length specified +### pop requested out of 36 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.40806,0.78139,0.47213) +Old Polarization: (-0.72284,-0.039358,0.68989) +New Polarization: (-0.74954,-0.38447,0.20155) +Polarization Change: (-0.86535,-0.44388,0.23269) +New Momentum Direction: (-0.10721,-0.22736,-0.83242) +Momentum Change: (-0.12329,-0.26147,-0.9573) + +** Photon Absorbed! ** Track (trackID 1439, parentID 1) is processed with stopping code 2 -### pop requested out of 20 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.0250835,0.998881,0.0400835) - Old Polarization: (-0.986468,-0.0312305,0.160952) - New Momentum Direction: (-0.0339989,0.997944,0.0543303) - New Polarization: (-0.950334,-0.0491088,0.307334) - *** FresnelRefraction *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.0339989,0.997944,0.0543303) - Old Polarization: (-0.950334,-0.0491088,0.307334) - New Momentum Direction: (-0.0250835,0.998881,0.0400835) - New Polarization: (-0.986445,-0.0312355,0.16109) - *** FresnelRefraction *** - Photon at Boundary! - Old Momentum Direction: (-0.0250835,0.998881,0.0400835) - Old Polarization: (-0.986445,-0.0312355,0.16109) - New Momentum Direction: (-0.0339989,0.997944,0.0543303) - New Polarization: (-0.950291,-0.0491145,0.307466) - *** FresnelRefraction *** -No Absorbtion length specified +### pop requested out of 35 stacked tracks. + +** Photon Absorbed! ** Track (trackID 1438, parentID 1) is processed with stopping code 2 -### pop requested out of 19 stacked tracks. +### pop requested out of 34 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.302973,0.654239,-0.692949) - Old Polarization: (-0.617822,-0.418786,-0.665518) - New Momentum Direction: (0.302973,0.654239,0.692949) - New Polarization: (0.245734,-0.756168,0.606486) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.302973,0.654239,0.692949) - Old Polarization: (0.245734,-0.756168,0.606486) - New Momentum Direction: (0.302973,-0.654239,0.692949) - New Polarization: (-0.245734,-0.756168,-0.606486) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.302973,-0.654239,0.692949) - Old Polarization: (-0.245734,-0.756168,-0.606486) - New Momentum Direction: (-0.302973,-0.654239,0.692949) - New Polarization: (-0.245734,0.756168,0.606486) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.302973,-0.654239,0.692949) - Old Polarization: (-0.245734,0.756168,0.606486) - New Momentum Direction: (-0.410228,-0.885844,0.216778) - New Polarization: (-0.425391,-0.0243918,-0.904681) + Old Momentum Direction: (0.84161,0.063012,-0.5364) + Old Polarization: (-0.22868,-0.85818,-0.4596) + New Momentum Direction: (0.67895,0.085657,-0.72917) + New Polarization: (-0.40287,-0.78683,-0.46755) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 1437, parentID 1) is processed with stopping code 2 -### pop requested out of 18 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0994066,0.844896,-0.525613) - Old Polarization: (-0.852429,-0.200185,-0.483002) - New Momentum Direction: (0.13391,0.693347,-0.708052) - New Polarization: (-0.794492,-0.351943,-0.494892) - *** FresnelRefraction *** -No Absorbtion length specified +### pop requested out of 33 stacked tracks. + +** Photon Absorbed! ** Track (trackID 1436, parentID 1) is processed with stopping code 2 -### pop requested out of 17 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.56061,0.444719,-0.698528) - Old Polarization: (-0.326202,-0.656743,-0.679913) - New Momentum Direction: (0.755377,0.599223,-0.265211) - New Polarization: (0.332764,-0.00211414,0.943008) - *** FresnelRefraction *** -No Absorbtion length specified +### pop requested out of 32 stacked tracks. + +** Photon Absorbed! ** Track (trackID 1435, parentID 1) is processed with stopping code 2 -### pop requested out of 16 stacked tracks. +### pop requested out of 31 stacked tracks. ** Photon Absorbed! ** Track (trackID 1434, parentID 1) is processed with stopping code 2 -### pop requested out of 15 stacked tracks. +### pop requested out of 30 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.968876,0.18737,0.161776) - Old Polarization: (0.132964,-0.945148,0.298357) - New Momentum Direction: (0.942132,0.253748,0.219087) - New Polarization: (-0.219465,-0.0271834,0.975242) + Old Momentum Direction: (0.26068,0.81608,-0.5158) + Old Polarization: (-0.89636,0.0061386,-0.44329) + New Momentum Direction: (0.3522,0.62473,-0.6969) + New Polarization: (-0.88819,-0.011658,-0.45933) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 1433, parentID 1) is processed with stopping code 2 -### pop requested out of 14 stacked tracks. +### pop requested out of 29 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.71218,0.40882,0.57068) +Old Polarization: (-0.37635,-0.46389,0.80198) +New Polarization: (-0.5591,-0.71097,-0.079033) +Polarization Change: (-0.61581,-0.78307,-0.087048) +New Momentum Direction: (0.75727,-0.56195,-0.30196) +Momentum Change: (0.76479,-0.56753,-0.30496) Photon at Boundary! - Old Momentum Direction: (0.0120119,0.983091,0.182723) - Old Polarization: (-0.945554,-0.0482707,0.321867) - New Momentum Direction: (0.01627,0.968752,0.247496) - New Polarization: (-0.913447,-0.0862654,0.39771) - *** FresnelRefraction *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.01627,0.968752,0.247496) - Old Polarization: (-0.913447,-0.0862654,0.39771) - New Momentum Direction: (0.0120119,0.715217,0.6988) - New Polarization: (-0.929277,0.266011,-0.256287) - *** FresnelRefraction *** - Photon at Boundary! - Old Momentum Direction: (0.0120119,0.715217,0.6988) - Old Polarization: (-0.929277,0.266011,-0.256287) - New Momentum Direction: (0.01627,0.322247,0.946516) - New Polarization: (-0.844966,-0.501684,0.185326) + Old Momentum Direction: (0.76479,-0.56753,-0.30496) + Old Polarization: (-0.61581,-0.78307,-0.087048) + New Momentum Direction: (0.4821,-0.77176,-0.41469) + New Polarization: (-0.85723,-0.51327,-0.041362) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 1432, parentID 1) is processed with stopping code 2 -### pop requested out of 13 stacked tracks. +### pop requested out of 28 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.727414,0.427328,0.536899) - Old Polarization: (-0.13791,-0.675418,0.724425) - New Momentum Direction: (0.374157,0.577513,0.725593) - New Polarization: (-0.270692,-0.680337,0.681078) - *** FresnelRefraction *** + Old Momentum Direction: (0.65599,0.48228,0.58059) + Old Polarization: (-0.44034,-0.3802,0.81336) + New Momentum Direction: (-0.65599,0.48228,0.58059) + New Polarization: (-0.44034,0.3802,-0.81336) + *** TotalInternalReflection *** No Absorbtion length specified + +** Photon Absorbed! ** Track (trackID 1431, parentID 1) is processed with stopping code 2 -### pop requested out of 12 stacked tracks. +### pop requested out of 27 stacked tracks. ** Photon Absorbed! ** Track (trackID 1430, parentID 1) is processed with stopping code 2 -### pop requested out of 11 stacked tracks. +### pop requested out of 26 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.019182,0.997364,0.0699775) - Old Polarization: (-0.980321,-0.0325158,0.194714) - New Momentum Direction: (-0.0259896,0.995156,0.0948125) - New Polarization: (-0.945572,-0.0552481,0.320689) - *** FresnelRefraction *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.0259896,0.995156,0.0948125) - Old Polarization: (-0.945572,-0.0552481,0.320689) - New Momentum Direction: (-0.019182,0.997364,0.0699775) - New Polarization: (-0.980268,-0.0325331,0.194976) - *** FresnelRefraction *** - Photon at Boundary! - Old Momentum Direction: (-0.019182,0.997364,0.0699775) - Old Polarization: (-0.980268,-0.0325331,0.194976) - New Momentum Direction: (-0.0259896,0.995156,0.0948125) - New Polarization: (-0.945471,-0.0552733,0.320982) + Old Momentum Direction: (0.75944,0.1592,-0.6308) + Old Polarization: (-0.31993,-0.75287,-0.57518) + New Momentum Direction: (0.47568,0.21525,-0.85287) + New Polarization: (-0.55693,-0.6768,-0.48143) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 1429, parentID 1) is processed with stopping code 2 -### pop requested out of 10 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.113477,0.826184,-0.551854) -Old Polarization: (-0.832108,-0.224469,-0.507159) -New Polarization: (-0.592589,-0.210495,-0.647671) -Polarization Change: (-0.65643,-0.233172,-0.717447) -New Momentum Direction: (0.564438,0.331201,-0.9161) -Momentum Change: (0.501346,0.29418,-0.813701) +### pop requested out of 25 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1428, parentID 1) is processed with stopping code 2 +### pop requested out of 24 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.501346,0.29418,-0.813701) - Old Polarization: (-0.65643,-0.233172,-0.717447) - New Momentum Direction: (0.678414,0.39808,-0.617484) - New Polarization: (0.482984,0.391673,0.783146) + Old Momentum Direction: (0.18449,0.97148,-0.14895) + Old Polarization: (-0.98279,0.18376,-0.018778) + New Momentum Direction: (0.24964,0.94713,-0.20156) + New Polarization: (0.30845,-0.27508,-0.9106) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1428, parentID 1) is processed with stopping code 2 -### pop requested out of 9 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.779519,0.273063,-0.563726) - Old Polarization: (-0.0794133,-0.849631,-0.521365) - New Momentum Direction: (0.531454,0.369278,-0.762359) - New Polarization: (-0.15243,-0.843595,-0.51489) + Old Momentum Direction: (0.24964,0.94713,-0.20156) + Old Polarization: (0.30845,-0.27508,-0.9106) + New Momentum Direction: (-0.96164,-0.16136,0.22186) + New Polarization: (0.074286,0.62534,0.77681) + *** LambertianReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.96164,-0.16136,0.22186) + Old Polarization: (0.074286,0.62534,0.77681) + New Momentum Direction: (-0.97923,-0.11925,0.16396) + New Polarization: (0.041372,0.67416,0.73742) + *** FresnelRefraction *** + Photon at Boundary! + Old Momentum Direction: (-0.97923,-0.11925,0.16396) + Old Polarization: (0.041372,0.67416,0.73742) + New Momentum Direction: (-0.96164,-0.16136,0.22186) + New Polarization: (0.074661,0.62425,0.77765) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 1427, parentID 1) is processed with stopping code 2 -### pop requested out of 8 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.25997,0.68954,-0.675981) -Old Polarization: (-0.66515,-0.379603,-0.643022) -New Polarization: (-0.399741,0.00357347,-0.772329) -Polarization Change: (-0.459656,0.00410907,-0.888088) -New Momentum Direction: (0.637693,0.568018,-0.826754) -Momentum Change: (0.536499,0.47788,-0.695557) +### pop requested out of 23 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.536499,0.47788,-0.695557) - Old Polarization: (-0.459656,0.00410907,-0.888088) - New Momentum Direction: (0.727972,0.648433,-0.222692) - New Polarization: (0.0295527,0.294831,0.955092) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1426, parentID 1) is processed with stopping code 2 -### pop requested out of 7 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.0364387,0.997876,-0.0539953) - Old Polarization: (-0.997921,-0.0334594,0.0550908) - New Momentum Direction: (-0.0494404,0.996087,-0.0732613) - New Polarization: (-0.994692,-0.0557332,-0.0865006) - *** FresnelRefraction *** + Old Momentum Direction: (0.5236,0.64731,0.55393) + Old Polarization: (-0.59122,-0.19209,0.7833) + New Momentum Direction: (0.5236,-0.64731,0.55393) + New Polarization: (0.59122,-0.19209,-0.7833) + *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (-0.0494404,0.996087,-0.0732613) - Old Polarization: (-0.994692,-0.0557332,-0.0865006) - New Momentum Direction: (-0.0364387,0.997876,-0.0539953) - New Polarization: (-0.997933,-0.0334728,0.054852) - *** FresnelRefraction *** - Photon at Boundary! - Old Momentum Direction: (-0.0364387,0.997876,-0.0539953) - Old Polarization: (-0.997933,-0.0334728,0.054852) - New Momentum Direction: (-0.0494404,0.996087,-0.0732613) - New Polarization: (-0.994668,-0.0557514,-0.0867648) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1425, parentID 1) is processed with stopping code 2 -### pop requested out of 6 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.693773,0.340004,-0.634882) - Old Polarization: (-0.174696,-0.775767,-0.606355) - New Momentum Direction: (-0.693773,0.340004,-0.634882) - New Polarization: (-0.109758,0.82133,0.559794) - *** FresnelReflection *** + Old Momentum Direction: (0.5236,-0.64731,0.55393) + Old Polarization: (0.59122,-0.19209,-0.7833) + New Momentum Direction: (0.5236,-0.64731,-0.55393) + New Polarization: (-0.59122,0.19209,-0.7833) + *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (-0.693773,0.340004,-0.634882) - Old Polarization: (-0.109758,0.82133,0.559794) - New Momentum Direction: (-0.693773,0.340004,0.634882) - New Polarization: (0.109758,-0.82133,0.559794) + Old Momentum Direction: (0.5236,-0.64731,-0.55393) + Old Polarization: (-0.59122,0.19209,-0.7833) + New Momentum Direction: (-0.5236,-0.64731,-0.55393) + New Polarization: (-0.59122,-0.19209,0.7833) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.5236,-0.64731,-0.55393) + Old Polarization: (-0.59122,-0.19209,0.7833) + New Momentum Direction: (-0.5236,0.64731,-0.55393) + New Polarization: (0.59122,-0.19209,-0.7833) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.5236,0.64731,-0.55393) + Old Polarization: (0.59122,-0.19209,-0.7833) + New Momentum Direction: (-0.5236,0.64731,0.55393) + New Polarization: (-0.59122,0.19209,-0.7833) *** TotalInternalReflection *** No Absorbtion length specified ** Photon Absorbed! ** -Track (trackID 1424, parentID 1) is processed with stopping code 2 -### pop requested out of 5 stacked tracks. +Track (trackID 1426, parentID 1) is processed with stopping code 2 +### pop requested out of 22 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.40539,0.693757,0.595281) - Old Polarization: (-0.501456,-0.375704,0.779351) - New Momentum Direction: (0.551573,0.199416,0.809938) - New Polarization: (-0.509881,-0.687862,0.516592) + Old Momentum Direction: (0.28141,0.77891,-0.56045) + Old Polarization: (-0.87009,-0.039179,-0.49133) + New Momentum Direction: (0.38126,0.52735,-0.75931) + New Polarization: (-0.8689,-0.076056,-0.48911) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1425, parentID 1) is processed with stopping code 2 +### pop requested out of 21 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1424, parentID 1) is processed with stopping code 2 +### pop requested out of 20 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.77958,0.13368,-0.61186) + Old Polarization: (-0.29785,-0.78026,-0.54997) + New Momentum Direction: (0.52875,0.18117,-0.82921) + New Polarization: (-0.52048,-0.7025,-0.48538) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 1423, parentID 1) is processed with stopping code 2 -### pop requested out of 4 stacked tracks. +### pop requested out of 19 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.527478,0.471875,-0.706471) - Old Polarization: (-0.363928,-0.625904,-0.689784) - New Momentum Direction: (0.527478,0.471875,0.706471) - New Polarization: (-0.75132,-0.129092,0.647189) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.527478,0.471875,0.706471) - Old Polarization: (-0.75132,-0.129092,0.647189) - New Momentum Direction: (-0.527478,0.471875,0.706471) - New Polarization: (-0.75132,0.129092,-0.647189) + Old Momentum Direction: (0.62517,0.5239,0.57853) + Old Polarization: (-0.47527,-0.33243,0.81462) + New Momentum Direction: (-0.62517,0.5239,0.57853) + New Polarization: (-0.47527,0.33243,-0.81462) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (-0.527478,0.471875,0.706471) - Old Polarization: (-0.75132,0.129092,-0.647189) - New Momentum Direction: (-0.527478,-0.471875,0.706471) - New Polarization: (0.75132,0.129092,0.647189) + Old Momentum Direction: (-0.62517,0.5239,0.57853) + Old Polarization: (-0.47527,0.33243,-0.81462) + New Momentum Direction: (-0.62517,0.5239,-0.57853) + New Polarization: (0.47527,-0.33243,-0.81462) *** TotalInternalReflection *** No Absorbtion length specified ** Photon Absorbed! ** Track (trackID 1422, parentID 1) is processed with stopping code 2 -### pop requested out of 3 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.666743,0.479408,0.570632) - Old Polarization: (-0.207448,-0.616017,0.759927) - New Momentum Direction: (-0.666743,0.479408,0.570632) - New Polarization: (-0.207448,0.616017,-0.759927) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.666743,0.479408,0.570632) - Old Polarization: (-0.207448,0.616017,-0.759927) - New Momentum Direction: (-0.666743,0.479408,-0.570632) - New Polarization: (0.207448,-0.616017,-0.759927) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.666743,0.479408,-0.570632) - Old Polarization: (0.207448,-0.616017,-0.759927) - New Momentum Direction: (-0.666743,-0.479408,-0.570632) - New Polarization: (-0.207448,-0.616017,0.759927) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.666743,-0.479408,-0.570632) - Old Polarization: (-0.207448,-0.616017,0.759927) - New Momentum Direction: (0.666743,-0.479408,-0.570632) - New Polarization: (-0.207448,0.616017,-0.759927) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.666743,-0.479408,-0.570632) - Old Polarization: (-0.207448,0.616017,-0.759927) - New Momentum Direction: (0.666743,-0.479408,0.570632) - New Polarization: (0.207448,-0.616017,-0.759927) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1421, parentID 1) is processed with stopping code 2 -### pop requested out of 2 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.987487,0.156632,-0.018344) - Old Polarization: (0.157673,-0.982854,0.0955862) - New Momentum Direction: (0.97706,0.21152,-0.0247723) - New Polarization: (-0.212944,0.96866,-0.127879) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1420, parentID 1) is processed with stopping code 2 -### pop requested out of 1 stacked tracks. - - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 88 -Track (trackID 1, parentID 0) is processed with stopping code 4 -### pop requested out of 89 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1611, parentID 1) is processed with stopping code 2 -### pop requested out of 88 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1610, parentID 1) is processed with stopping code 2 -### pop requested out of 87 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1609, parentID 1) is processed with stopping code 2 -### pop requested out of 86 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1608, parentID 1) is processed with stopping code 2 -### pop requested out of 85 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1607, parentID 1) is processed with stopping code 2 -### pop requested out of 84 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.538871,0.748901,0.3857) - Old Polarization: (-0.0562689,0.424842,-0.903517) - New Momentum Direction: (-0.72995,0.440684,0.522465) - New Polarization: (-0.645802,-0.695029,-0.316029) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1606, parentID 1) is processed with stopping code 2 -### pop requested out of 83 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.880244,0.240551,0.409031) - Old Polarization: (-0.450768,-0.154581,-0.879155) - New Momentum Direction: (-0.767813,0.324779,0.552252) - New Polarization: (0.623168,0.578722,0.526063) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1605, parentID 1) is processed with stopping code 2 -### pop requested out of 82 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1604, parentID 1) is processed with stopping code 2 -### pop requested out of 81 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.0121583,-0.32347,0.94616) - Old Polarization: (0.543542,-0.796362,-0.265273) - New Momentum Direction: (-0.0164882,-0.438669,0.898497) - New Polarization: (0.425115,-0.816427,-0.390799) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1603, parentID 1) is processed with stopping code 2 -### pop requested out of 80 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.192183,0.674067,0.713231) - Old Polarization: (0.777118,0.339295,-0.530062) - New Momentum Direction: (0.192183,0.674067,-0.713231) - New Polarization: (-0.931222,-0.104071,-0.349278) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.192183,0.674067,-0.713231) - Old Polarization: (-0.931222,-0.104071,-0.349278) - New Momentum Direction: (0.192183,-0.674067,-0.713231) - New Polarization: (0.931222,-0.104071,0.349278) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.192183,-0.674067,-0.713231) - Old Polarization: (0.931222,-0.104071,0.349278) - New Momentum Direction: (0.260376,-0.913248,-0.313341) - New Polarization: (0.780052,0.00773041,0.625667) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1602, parentID 1) is processed with stopping code 2 -### pop requested out of 79 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.304758,0.493937,0.81434) - Old Polarization: (0.899714,0.131208,-0.416292) - New Momentum Direction: (0.414464,0.671743,0.613988) - New Polarization: (0.746718,0.134643,-0.65137) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1601, parentID 1) is processed with stopping code 2 -### pop requested out of 78 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.707121,-0.290628,0.644605) - Old Polarization: (-0.243823,-0.755495,-0.608093) - New Momentum Direction: (-0.27479,-0.395195,0.876533) - New Polarization: (0.477037,-0.847551,-0.232579) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1600, parentID 1) is processed with stopping code 2 -### pop requested out of 77 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.425648,0.805851,0.411616) - Old Polarization: (0.0741852,0.484426,-0.871681) - New Momentum Direction: (-0.578583,0.593458,0.559509) - New Polarization: (-0.690279,-0.721695,0.0516737) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1599, parentID 1) is processed with stopping code 2 -### pop requested out of 76 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1598, parentID 1) is processed with stopping code 2 -### pop requested out of 75 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.550205,-0.382554,0.742244) - Old Polarization: (-0.0690394,-0.865,-0.497) - New Momentum Direction: (-0.745462,-0.518316,0.419088) - New Polarization: (0.00538715,-0.633409,-0.773798) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1597, parentID 1) is processed with stopping code 2 -### pop requested out of 74 stacked tracks. -Scattering Photon! -Old Momentum Direction: (-0.774567,-0.215805,0.594537) -Old Polarization: (-0.322893,-0.673356,-0.665081) -New Polarization: (-0.676129,-0.387236,-0.379652) -Polarization Change: (-0.780083,-0.446773,-0.438023) -New Momentum Direction: (0.427121,0.000851401,-1.07358) -Momentum Change: (0.369667,0.000736874,-0.929164) - Photon at Boundary! - Old Momentum Direction: (0.369667,0.000736874,-0.929164) - Old Polarization: (-0.780083,-0.446773,-0.438023) - New Momentum Direction: (0.501569,0.000999802,-0.865117) - New Polarization: (0.814001,-0.339192,0.471542) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1596, parentID 1) is processed with stopping code 2 -### pop requested out of 73 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.112684,0.838782,0.53268) - Old Polarization: (0.428996,0.524623,-0.735346) - New Momentum Direction: (-0.152893,0.673977,0.722758) - New Polarization: (0.0531757,-0.724686,0.687024) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1595, parentID 1) is processed with stopping code 2 -### pop requested out of 72 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1594, parentID 1) is processed with stopping code 2 -### pop requested out of 71 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.808023,-0.163664,0.565961) - Old Polarization: (-0.364148,-0.616425,-0.698152) - New Momentum Direction: (-0.603315,-0.221544,0.766113) - New Polarization: (0.592933,-0.767036,0.245125) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1593, parentID 1) is processed with stopping code 2 -### pop requested out of 70 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.33594,0.338952,0.878781) - Old Polarization: (0.938643,-0.0431548,-0.342179) - New Momentum Direction: (0.455807,0.459893,0.762062) - New Polarization: (0.847008,0.0389955,-0.530148) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1592, parentID 1) is processed with stopping code 2 -### pop requested out of 69 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0568823,0.782677,0.619823) - Old Polarization: (0.620352,0.458727,-0.636186) - New Momentum Direction: (0.0772929,0.533551,0.842228) - New Polarization: (0.576217,-0.71329,0.398988) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1591, parentID 1) is processed with stopping code 2 -### pop requested out of 68 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1590, parentID 1) is processed with stopping code 2 -### pop requested out of 67 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.320024,0.12587,0.939011) - Old Polarization: (0.918329,-0.284894,-0.274786) - New Momentum Direction: (0.434838,0.171028,0.884118) - New Polarization: (0.897387,-0.163976,-0.409644) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1589, parentID 1) is processed with stopping code 2 -### pop requested out of 66 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.334591,-0.423591,0.841795) - Old Polarization: (0.177265,-0.905626,-0.385253) - New Momentum Direction: (-0.455021,-0.576055,0.679055) - New Polarization: (0.104298,-0.7918,-0.60181) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1588, parentID 1) is processed with stopping code 2 -### pop requested out of 65 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.108644,0.837271,0.535886) - Old Polarization: (0.434124,0.524917,-0.732119) - New Momentum Direction: (-0.14723,0.671519,0.726213) - New Polarization: (0.0691496,-0.72543,0.684814) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1587, parentID 1) is processed with stopping code 2 -### pop requested out of 64 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0359211,-0.295978,0.954519) - Old Polarization: (0.595518,-0.760688,-0.258285) - New Momentum Direction: (0.0488775,-0.402734,0.914011) - New Polarization: (0.486667,-0.789524,-0.373907) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1586, parentID 1) is processed with stopping code 2 -### pop requested out of 63 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.555991,-0.372087,0.743253) - Old Polarization: (-0.0815293,-0.86548,-0.494264) - New Momentum Direction: (-0.747351,-0.500152,0.437396) - New Polarization: (-0.0116235,-0.648361,-0.761244) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1585, parentID 1) is processed with stopping code 2 -### pop requested out of 62 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.177546,0.845034,0.504375) - Old Polarization: (0.355511,0.532981,-0.767817) - New Momentum Direction: (-0.240718,0.688787,0.683833) - New Polarization: (-0.174003,-0.72376,0.667753) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1584, parentID 1) is processed with stopping code 2 -### pop requested out of 61 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0911137,-0.249941,0.963965) - Old Polarization: (0.659169,-0.710442,-0.246511) - New Momentum Direction: (0.123799,-0.339603,0.932386) - New Polarization: (0.573696,-0.742169,-0.346494) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1583, parentID 1) is processed with stopping code 2 -### pop requested out of 60 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1582, parentID 1) is processed with stopping code 2 -### pop requested out of 59 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1581, parentID 1) is processed with stopping code 2 -### pop requested out of 58 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1580, parentID 1) is processed with stopping code 2 -### pop requested out of 57 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0628013,0.776784,0.626628) - Old Polarization: (0.629617,0.456323,-0.628771) - New Momentum Direction: (0.085088,0.52149,0.849004) - New Polarization: (0.59239,-0.711614,0.37773) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1579, parentID 1) is processed with stopping code 2 -### pop requested out of 56 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.404826,-0.416416,0.814072) - Old Polarization: (0.0964136,-0.904762,-0.414861) - New Momentum Direction: (-0.548103,-0.563794,0.617834) - New Polarization: (0.0551924,-0.761443,-0.645879) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1578, parentID 1) is processed with stopping code 2 -### pop requested out of 55 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0462102,0.785434,0.617218) - Old Polarization: (0.610954,0.466619,-0.639532) - New Momentum Direction: (0.062591,0.545131,0.836011) - New Polarization: (0.553648,-0.715915,0.42537) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1577, parentID 1) is processed with stopping code 2 -### pop requested out of 54 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.812253,0.457142,0.362306) - Old Polarization: (-0.363074,0.0899052,-0.927413) - New Momentum Direction: (-0.609303,0.621433,0.492514) - New Polarization: (0.593614,0.769284,-0.236271) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1576, parentID 1) is processed with stopping code 2 -### pop requested out of 53 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.133065,-0.204202,0.969843) - Old Polarization: (0.710521,-0.662567,-0.23699) - New Momentum Direction: (0.180149,-0.276457,0.94399) - New Polarization: (0.653296,-0.683826,-0.324939) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1575, parentID 1) is processed with stopping code 2 -### pop requested out of 52 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.652969,-0.329196,0.682101) - Old Polarization: (-0.185701,-0.803524,-0.565566) - New Momentum Direction: (-0.885108,-0.446229,0.132152) - New Polarization: (0.09314,-0.448066,-0.889135) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1574, parentID 1) is processed with stopping code 2 -### pop requested out of 51 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.314607,0.10244,0.943678) - Old Polarization: (0.911176,-0.311233,-0.269986) - New Momentum Direction: (0.427765,0.139286,0.893094) - New Polarization: (0.89658,-0.190788,-0.39968) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1573, parentID 1) is processed with stopping code 2 -### pop requested out of 50 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.562525,-0.371461,0.738636) - Old Polarization: (-0.0875808,-0.861589,-0.499994) - New Momentum Direction: (-0.757641,-0.500305,0.419135) - New Polarization: (-0.00747183,-0.635494,-0.77207) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1572, parentID 1) is processed with stopping code 2 -### pop requested out of 49 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.237149,0.615812,0.751356) - Old Polarization: (0.829692,0.273931,-0.486388) - New Momentum Direction: (0.320983,0.833506,0.449708) - New Polarization: (0.633247,0.164205,-0.75633) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1571, parentID 1) is processed with stopping code 2 -### pop requested out of 48 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.372116,0.823368,0.428479) - Old Polarization: (0.134681,0.504642,-0.852759) - New Momentum Direction: (-0.505689,0.636573,0.582283) - New Polarization: (-0.650532,-0.724674,0.227279) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1570, parentID 1) is processed with stopping code 2 -### pop requested out of 47 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.366187,0.824645,0.431124) - Old Polarization: (0.14123,0.507189,-0.850184) - New Momentum Direction: (-0.497285,0.64026,0.58547) - New Polarization: (-0.642985,-0.72504,0.246755) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1569, parentID 1) is processed with stopping code 2 -### pop requested out of 46 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.452326,-0.41299,0.790468) - Old Polarization: (0.0436887,-0.895518,-0.442875) - New Momentum Direction: (-0.61442,-0.560987,0.554781) - New Polarization: (0.0332265,-0.720937,-0.692204) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1568, parentID 1) is processed with stopping code 2 -### pop requested out of 45 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1567, parentID 1) is processed with stopping code 2 -### pop requested out of 44 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1566, parentID 1) is processed with stopping code 2 -### pop requested out of 43 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1565, parentID 1) is processed with stopping code 2 -### pop requested out of 42 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.80802,-0.166712,0.565076) - Old Polarization: (-0.361094,-0.617729,-0.698586) - New Momentum Direction: (-0.600986,-0.226165,0.766593) - New Polarization: (0.59144,-0.770974,0.236214) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1564, parentID 1) is processed with stopping code 2 -### pop requested out of 41 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1563, parentID 1) is processed with stopping code 2 -### pop requested out of 40 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.142476,-0.197353,0.969924) - Old Polarization: (0.719143,-0.652672,-0.238439) - New Momentum Direction: (0.193263,-0.267703,0.94392) - New Polarization: (0.667148,-0.669565,-0.326489) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1562, parentID 1) is processed with stopping code 2 -### pop requested out of 39 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.192871,-0.401278,0.89542) - Old Polarization: (0.337889,-0.883903,-0.323336) - New Momentum Direction: (-0.261715,-0.54451,0.796877) - New Polarization: (0.224802,-0.837338,-0.498327) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1561, parentID 1) is processed with stopping code 2 -### pop requested out of 38 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1560, parentID 1) is processed with stopping code 2 -### pop requested out of 37 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.372984,0.818833,0.436343) - Old Polarization: (0.131681,0.512235,-0.848691) - New Momentum Direction: (-0.502841,0.633326,0.588259) - New Polarization: (-0.645287,-0.727852,0.232026) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1559, parentID 1) is processed with stopping code 2 -### pop requested out of 36 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1558, parentID 1) is processed with stopping code 2 -### pop requested out of 35 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.0393101,0.822526,0.567367) - Old Polarization: (0.511624,0.504299,-0.695646) - New Momentum Direction: (-0.0533999,0.634923,0.770728) - New Polarization: (0.304255,-0.724785,0.618156) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1557, parentID 1) is processed with stopping code 2 -### pop requested out of 34 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1556, parentID 1) is processed with stopping code 2 -### pop requested out of 33 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1555, parentID 1) is processed with stopping code 2 -### pop requested out of 32 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.86662,-0.030139,0.498058) - Old Polarization: (-0.429428,-0.463249,-0.775236) - New Momentum Direction: (-0.736767,-0.0408409,0.674912) - New Polarization: (0.622029,-0.432231,0.652882) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1554, parentID 1) is processed with stopping code 2 -### pop requested out of 31 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1553, parentID 1) is processed with stopping code 2 -### pop requested out of 30 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1552, parentID 1) is processed with stopping code 2 -### pop requested out of 29 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1551, parentID 1) is processed with stopping code 2 -### pop requested out of 28 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.344965,0.828015,0.44203) - Old Polarization: (0.164621,0.517012,-0.839999) - New Momentum Direction: (-0.466721,0.651546,0.598046) - New Polarization: (-0.610079,-0.726751,0.315652) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1550, parentID 1) is processed with stopping code 2 -### pop requested out of 27 stacked tracks. -Scattering Photon! -Old Momentum Direction: (-0.417263,-0.418204,0.806844) -Old Polarization: (0.0833561,-0.901696,-0.424259) -New Polarization: (-0.135318,-0.706836,-0.531877) -Polarization Change: (-0.151212,-0.789861,-0.594352) -New Momentum Direction: (0.273531,-0.554825,0.924534) -Momentum Change: (0.245895,-0.498768,0.831123) - Photon at Boundary! - Old Momentum Direction: (0.245895,-0.498768,0.831123) - Old Polarization: (-0.151212,-0.789861,-0.594352) - New Momentum Direction: (0.333957,-0.677391,0.655449) - New Polarization: (-0.0590002,-0.70903,-0.702705) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1549, parentID 1) is processed with stopping code 2 -### pop requested out of 26 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.834872,-0.113631,0.538587) - Old Polarization: (-0.394406,-0.559045,-0.729323) - New Momentum Direction: (-0.666714,-0.15386,0.72926) - New Polarization: (0.611968,-0.671516,0.417805) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1548, parentID 1) is processed with stopping code 2 -### pop requested out of 25 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.158224,-0.388175,0.907902) - Old Polarization: (0.378069,-0.87323,-0.307463) - New Momentum Direction: (-0.214127,-0.525323,0.82352) - New Polarization: (0.260319,-0.843274,-0.470237) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1547, parentID 1) is processed with stopping code 2 -### pop requested out of 24 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1546, parentID 1) is processed with stopping code 2 -### pop requested out of 23 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.108956,0.837739,0.53509) - Old Polarization: (0.433502,0.524455,-0.732818) - New Momentum Direction: (-0.147744,0.672095,0.725576) - New Polarization: (0.0672387,-0.725104,0.685349) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1545, parentID 1) is processed with stopping code 2 -### pop requested out of 22 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.28007,0.545407,0.789995) - Old Polarization: (0.875825,0.191769,-0.442895) - New Momentum Direction: (0.379831,0.739681,0.555518) - New Polarization: (0.705807,0.156455,-0.690911) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1544, parentID 1) is processed with stopping code 2 -### pop requested out of 21 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1543, parentID 1) is processed with stopping code 2 -### pop requested out of 20 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.138952,0.722969,0.676763) - Old Polarization: (0.718083,0.397044,-0.571588) - New Momentum Direction: (0.187974,0.355634,0.915527) - New Polarization: (0.726653,-0.677485,0.113973) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1542, parentID 1) is processed with stopping code 2 -### pop requested out of 19 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.397065,0.810475,0.430662) - Old Polarization: (0.103297,0.50572,-0.856491) - New Momentum Direction: (-0.534269,0.615439,0.579475) - New Polarization: (-0.668106,-0.727407,0.156566) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1541, parentID 1) is processed with stopping code 2 ### pop requested out of 18 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1540, parentID 1) is processed with stopping code 2 -### pop requested out of 17 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.881307,0.0661315,0.467894) - Old Polarization: (-0.45882,-0.356656,-0.813806) - New Momentum Direction: (-0.772242,0.0889127,0.629076) - New Polarization: (0.625306,-0.0688129,0.77734) + Old Momentum Direction: (0.25365,0.82827,-0.49964) + Old Polarization: (-0.9049,0.020676,-0.42512) + New Momentum Direction: (0.34255,0.65374,-0.67474) + New Polarization: (-0.87522,-0.03903,-0.48214) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1539, parentID 1) is processed with stopping code 2 +Track (trackID 1421, parentID 1) is processed with stopping code 2 +### pop requested out of 17 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1420, parentID 1) is processed with stopping code 2 ### pop requested out of 16 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1538, parentID 1) is processed with stopping code 2 +Track (trackID 1419, parentID 1) is processed with stopping code 2 ### pop requested out of 15 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.0365758,-0.294158,0.955057) - Old Polarization: (0.597061,-0.759938,-0.256927) - New Momentum Direction: (0.0497186,-0.399857,0.915228) - New Polarization: (0.488806,-0.789374,-0.371426) + Old Momentum Direction: (0.86217,0.20631,0.46271) + Old Polarization: (-0.20152,-0.69832,0.68683) + New Momentum Direction: (0.7284,0.27901,0.62577) + New Polarization: (-0.35306,-0.62989,0.6918) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1537, parentID 1) is processed with stopping code 2 +Track (trackID 1418, parentID 1) is processed with stopping code 2 ### pop requested out of 14 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1536, parentID 1) is processed with stopping code 2 -### pop requested out of 13 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.557418,0.736857,0.382527) - Old Polarization: (-0.0780139,0.412221,-0.907738) - New Momentum Direction: (-0.754464,0.403387,0.517749) - New Polarization: (-0.623439,-0.687077,-0.373161) + Old Momentum Direction: (0.4239,0.76377,0.48679) + Old Polarization: (-0.70488,-0.059296,0.70685) + New Momentum Direction: (0.57627,0.47958,0.66176) + New Polarization: (-0.70544,-0.11694,0.69905) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1535, parentID 1) is processed with stopping code 2 -### pop requested out of 12 stacked tracks. +Track (trackID 1417, parentID 1) is processed with stopping code 2 +### pop requested out of 13 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1534, parentID 1) is processed with stopping code 2 +Track (trackID 1416, parentID 1) is processed with stopping code 2 +### pop requested out of 12 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.66551,0.47636,0.57462) + Old Polarization: (-0.42833,-0.38673,0.81668) + New Momentum Direction: (-0.66551,0.47636,0.57462) + New Polarization: (-0.42833,0.38673,-0.81668) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66551,0.47636,0.57462) + Old Polarization: (-0.42833,0.38673,-0.81668) + New Momentum Direction: (-0.66551,0.47636,-0.57462) + New Polarization: (0.42833,-0.38673,-0.81668) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66551,0.47636,-0.57462) + Old Polarization: (0.42833,-0.38673,-0.81668) + New Momentum Direction: (-0.66551,-0.47636,-0.57462) + New Polarization: (-0.42833,-0.38673,0.81668) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.66551,-0.47636,-0.57462) + Old Polarization: (-0.42833,-0.38673,0.81668) + New Momentum Direction: (0.66551,-0.47636,-0.57462) + New Polarization: (-0.42833,0.38673,-0.81668) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1415, parentID 1) is processed with stopping code 2 ### pop requested out of 11 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.290623,0.0357031,0.956171) - Old Polarization: (0.886034,-0.387296,-0.254843) - New Momentum Direction: (0.394621,0.0484793,0.917564) - New Polarization: (0.888079,-0.276364,-0.367339) + Old Momentum Direction: (0.1912,0.95387,-0.23146) + Old Polarization: (-0.97897,0.16824,-0.11536) + New Momentum Direction: (0.25779,0.91442,-0.31207) + New Polarization: (-0.17414,-0.27373,-0.94591) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1533, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.25779,0.91442,-0.31207) + Old Polarization: (-0.17414,-0.27373,-0.94591) + New Momentum Direction: (0.1912,0.67821,-0.70956) + New Polarization: (0.083634,0.70901,0.70022) + *** FresnelRefraction *** + Photon at Boundary! + Old Momentum Direction: (0.1912,0.67821,-0.70956) + Old Polarization: (0.083634,0.70901,0.70022) + New Momentum Direction: (0.25779,0.13525,-0.95669) + New Polarization: (0.19257,-0.97748,-0.086301) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1414, parentID 1) is processed with stopping code 2 ### pop requested out of 10 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.40454,0.78749,0.46497) +Old Polarization: (-0.72796,-0.030464,0.68494) +New Polarization: (-0.62803,0.30775,0.53673) +Polarization Change: (-0.71238,0.34908,0.60882) +New Momentum Direction: (-0.47715,0.24594,-0.69933) +Momentum Change: (-0.54123,0.27897,-0.79325) +Scattering Photon! +Old Momentum Direction: (-0.54123,0.27897,-0.79325) +Old Polarization: (-0.71238,0.34908,0.60882) +New Polarization: (-0.70266,0.37183,0.57778) +Polarization Change: (-0.71498,0.37836,0.58792) +New Momentum Direction: (0.66781,0.16265,0.70747) +Momentum Change: (0.67703,0.16489,0.71724) ** Photon Absorbed! ** -Track (trackID 1532, parentID 1) is processed with stopping code 2 +Track (trackID 1413, parentID 1) is processed with stopping code 2 ### pop requested out of 9 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.200573,0.841372,0.50186) - Old Polarization: (0.330719,0.540349,-0.773724) - New Momentum Direction: (-0.270064,0.685892,0.675735) - New Polarization: (-0.241164,-0.727628,0.642182) + Old Momentum Direction: (0.8692,0.18984,0.45656) + Old Polarization: (-0.1973,-0.71351,0.67229) + New Momentum Direction: (0.74035,0.25809,0.62071) + New Polarization: (-0.34849,-0.64224,0.6827) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1531, parentID 1) is processed with stopping code 2 +Track (trackID 1412, parentID 1) is processed with stopping code 2 ### pop requested out of 8 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.664473,-0.321494,0.674624) - Old Polarization: (-0.198516,-0.794366,-0.574086) - New Momentum Direction: (-0.664473,-0.321494,-0.674624) - New Polarization: (0.198516,0.794366,-0.574086) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.664473,-0.321494,-0.674624) - Old Polarization: (0.198516,0.794366,-0.574086) - New Momentum Direction: (0.664473,-0.321494,-0.674624) - New Polarization: (0.198516,-0.794366,0.574086) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.664473,-0.321494,-0.674624) - Old Polarization: (0.198516,-0.794366,0.574086) - New Momentum Direction: (0.664473,0.321494,-0.674624) - New Polarization: (-0.198516,-0.794366,-0.574086) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1530, parentID 1) is processed with stopping code 2 -### pop requested out of 7 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.274131,0.0218039,0.961445) - Old Polarization: (0.880541,-0.407642,-0.241819) - New Momentum Direction: (0.36888,0.0293401,0.929014) - New Polarization: (0.889208,-0.302149,-0.343532) + Old Momentum Direction: (0.84771,0.22969,0.47815) + Old Polarization: (-0.21685,-0.67257,0.70755) + New Momentum Direction: (0.69811,0.31003,0.64538) + New Polarization: (-0.37829,-0.60559,0.70011) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1529, parentID 1) is processed with stopping code 2 +Track (trackID 1411, parentID 1) is processed with stopping code 2 +### pop requested out of 7 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1410, parentID 1) is processed with stopping code 2 ### pop requested out of 6 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.337723,0.283939,0.897397) - Old Polarization: (0.941239,-0.105584,-0.320815) - New Momentum Direction: (0.458062,0.385113,0.801166) - New Polarization: (0.869507,-0.00678441,-0.493874) + Old Momentum Direction: (0.65286,0.27716,-0.70496) + Old Polarization: (-0.44379,-0.61425,-0.65249) + New Momentum Direction: (0.88709,0.3766,-0.26691) + New Polarization: (0.34003,-0.14209,0.92962) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1528, parentID 1) is processed with stopping code 2 +Track (trackID 1409, parentID 1) is processed with stopping code 2 ### pop requested out of 5 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.60789,0.701821,0.371372) - Old Polarization: (-0.134266,0.370119,-0.919231) - New Momentum Direction: (-0.60789,-0.701821,0.371372) - New Polarization: (0.691125,-0.237409,0.68263) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.60789,-0.701821,0.371372) - Old Polarization: (0.691125,-0.237409,0.68263) - New Momentum Direction: (0.60789,-0.701821,0.371372) - New Polarization: (0.691125,0.237409,-0.68263) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.60789,-0.701821,0.371372) - Old Polarization: (0.691125,0.237409,-0.68263) - New Momentum Direction: (0.60789,-0.701821,-0.371372) - New Polarization: (-0.691125,-0.237409,-0.68263) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.60789,-0.701821,-0.371372) - Old Polarization: (-0.691125,-0.237409,-0.68263) - New Momentum Direction: (0.82411,-0.259548,-0.503465) - New Polarization: (-0.3498,0.465896,-0.812761) + Old Momentum Direction: (0.95236,-0.036186,-0.30281) + Old Polarization: (-0.099173,-0.97571,-0.19531) + New Momentum Direction: (0.91066,-0.049025,-0.41024) + New Polarization: (-0.17546,-0.94484,-0.27656) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1527, parentID 1) is processed with stopping code 2 +Track (trackID 1408, parentID 1) is processed with stopping code 2 ### pop requested out of 4 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1526, parentID 1) is processed with stopping code 2 -### pop requested out of 3 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1525, parentID 1) is processed with stopping code 2 -### pop requested out of 2 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.327699,0.368851,0.869806) - Old Polarization: (0.936777,-0.00725606,-0.349853) - New Momentum Direction: (0.442535,0.498108,0.745688) - New Polarization: (0.838678,0.064485,-0.540796) + Old Momentum Direction: (0.9796,0.0070054,0.20085) + Old Polarization: (-0.071488,-0.92188,0.38082) + New Momentum Direction: (0.96195,0.0095243,0.27306) + New Polarization: (-0.12584,-0.87163,0.47373) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1524, parentID 1) is processed with stopping code 2 +Track (trackID 1407, parentID 1) is processed with stopping code 2 +### pop requested out of 3 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.64021,0.50448,0.57933) + Old Polarization: (-0.45807,-0.3547,0.81508) + New Momentum Direction: (-0.64021,0.50448,0.57933) + New Polarization: (-0.45807,0.3547,-0.81508) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.64021,0.50448,0.57933) + Old Polarization: (-0.45807,0.3547,-0.81508) + New Momentum Direction: (-0.64021,0.50448,-0.57933) + New Polarization: (0.45807,-0.3547,-0.81508) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.64021,0.50448,-0.57933) + Old Polarization: (0.45807,-0.3547,-0.81508) + New Momentum Direction: (-0.64021,-0.50448,-0.57933) + New Polarization: (-0.45807,-0.3547,0.81508) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.64021,-0.50448,-0.57933) + Old Polarization: (-0.45807,-0.3547,0.81508) + New Momentum Direction: (0.64021,-0.50448,-0.57933) + New Polarization: (-0.45807,0.3547,-0.81508) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.64021,-0.50448,-0.57933) + Old Polarization: (-0.45807,0.3547,-0.81508) + New Momentum Direction: (0.64021,-0.50448,0.57933) + New Polarization: (0.45807,-0.3547,-0.81508) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1406, parentID 1) is processed with stopping code 2 +### pop requested out of 2 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1405, parentID 1) is processed with stopping code 2 ### pop requested out of 1 stacked tracks. - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 82 + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 60 Track (trackID 1, parentID 0) is processed with stopping code 4 -### pop requested out of 83 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.101827,0.684424,0.721938) - Old Polarization: (0.813191,0.475287,-0.335891) - New Momentum Direction: (-0.137873,0.926701,0.349594) - New Polarization: (0.726395,0.334553,-0.600354) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1693, parentID 1) is processed with stopping code 2 -### pop requested out of 82 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.588871,-0.477658,0.651977) - Old Polarization: (0.246545,-0.874389,-0.417923) - New Momentum Direction: (-0.588871,-0.477658,-0.651977) - New Polarization: (-0.246545,0.874389,-0.417923) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.588871,-0.477658,-0.651977) - Old Polarization: (-0.246545,0.874389,-0.417923) - New Momentum Direction: (0.588871,-0.477658,-0.651977) - New Polarization: (-0.246545,-0.874389,0.417923) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.588871,-0.477658,-0.651977) - Old Polarization: (-0.246545,-0.874389,0.417923) - New Momentum Direction: (0.588871,0.477658,-0.651977) - New Polarization: (0.246545,-0.874389,-0.417923) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.588871,0.477658,-0.651977) - Old Polarization: (0.246545,-0.874389,-0.417923) - New Momentum Direction: (0.588871,0.477658,0.651977) - New Polarization: (-0.246545,0.874389,-0.417923) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.588871,0.477658,0.651977) - Old Polarization: (-0.246545,0.874389,-0.417923) - New Momentum Direction: (-0.588871,0.477658,0.651977) - New Polarization: (-0.246545,-0.874389,0.417923) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.588871,0.477658,0.651977) - Old Polarization: (-0.246545,-0.874389,0.417923) - New Momentum Direction: (-0.588871,-0.477658,0.651977) - New Polarization: (0.246545,-0.874389,-0.417923) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.588871,-0.477658,0.651977) - Old Polarization: (0.246545,-0.874389,-0.417923) - New Momentum Direction: (-0.588871,-0.477658,-0.651977) - New Polarization: (-0.246545,0.874389,-0.417923) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.588871,-0.477658,-0.651977) - Old Polarization: (-0.246545,0.874389,-0.417923) - New Momentum Direction: (0.588871,-0.477658,-0.651977) - New Polarization: (-0.246545,-0.874389,0.417923) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.588871,-0.477658,-0.651977) - Old Polarization: (-0.246545,-0.874389,0.417923) - New Momentum Direction: (0.588871,0.477658,-0.651977) - New Polarization: (0.246545,-0.874389,-0.417923) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.588871,0.477658,-0.651977) - Old Polarization: (0.246545,-0.874389,-0.417923) - New Momentum Direction: (0.588871,0.477658,0.651977) - New Polarization: (-0.246545,0.874389,-0.417923) - *** TotalInternalReflection *** -No Absorbtion length specified +### pop requested out of 61 stacked tracks. ** Photon Absorbed! ** -Track (trackID 1692, parentID 1) is processed with stopping code 2 -### pop requested out of 81 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1691, parentID 1) is processed with stopping code 2 -### pop requested out of 80 stacked tracks. +Track (trackID 1521, parentID 1) is processed with stopping code 2 +### pop requested out of 60 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.228722,0.770587,0.59488) - Old Polarization: (0.663393,0.5706,-0.484071) - New Momentum Direction: (-0.310634,0.500765,0.807924) - New Polarization: (0.13326,-0.818634,0.558641) + Old Momentum Direction: (0.4158,-0.48453,-0.76964) + Old Polarization: (-0.90908,-0.19711,-0.36703) + New Momentum Direction: (0.55911,-0.65154,-0.51273) + New Polarization: (-0.29973,-0.73544,0.6077) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1690, parentID 1) is processed with stopping code 2 -### pop requested out of 79 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1689, parentID 1) is processed with stopping code 2 -### pop requested out of 78 stacked tracks. +Track (trackID 1520, parentID 1) is processed with stopping code 2 +### pop requested out of 59 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.2953,-0.406689,0.864524) - Old Polarization: (0.586379,-0.791551,-0.172068) - New Momentum Direction: (-0.401041,-0.552316,0.73083) - New Polarization: (0.527179,-0.7916,-0.308954) + Old Momentum Direction: (0.79295,0.43054,-0.43113) + Old Polarization: (-0.46043,0.88685,0.038804) + New Momentum Direction: (0.56822,0.58147,-0.58226) + New Polarization: (-0.70222,0.71151,0.025266) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1688, parentID 1) is processed with stopping code 2 -### pop requested out of 77 stacked tracks. +Track (trackID 1519, parentID 1) is processed with stopping code 2 +### pop requested out of 58 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.338715,-0.427709,0.838056) - Old Polarization: (0.536858,-0.819337,-0.201176) - New Momentum Direction: (-0.459005,-0.579605,0.673329) - New Polarization: (0.482298,-0.799047,-0.359044) + Old Momentum Direction: (0.4078,-0.50601,-0.76004) + Old Polarization: (-0.91301,-0.21637,-0.34582) + New Momentum Direction: (0.55222,-0.68521,-0.47491) + New Polarization: (-0.37435,-0.71278,0.59313) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1687, parentID 1) is processed with stopping code 2 -### pop requested out of 76 stacked tracks. +Track (trackID 1518, parentID 1) is processed with stopping code 2 +### pop requested out of 57 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.960108,0.224672,0.166478) - Old Polarization: (-0.18433,-0.0608197,-0.980981) - New Momentum Direction: (-0.925254,0.304793,0.225847) - New Polarization: (0.291015,0.952205,-0.0928192) + Old Momentum Direction: (0.83931,0.4424,-0.31597) + Old Polarization: (-0.40671,0.89663,0.17505) + New Momentum Direction: (0.67699,0.59892,-0.42776) + New Polarization: (-0.62147,0.77654,0.10371) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1686, parentID 1) is processed with stopping code 2 -### pop requested out of 75 stacked tracks. +Track (trackID 1517, parentID 1) is processed with stopping code 2 +### pop requested out of 56 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.925359,0.340487,0.166672) - Old Polarization: (-0.149695,0.0757397,-0.985827) - New Momentum Direction: (-0.858983,0.459864,0.225108) - New Polarization: (0.259183,0.769714,-0.583407) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1685, parentID 1) is processed with stopping code 2 -### pop requested out of 74 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1684, parentID 1) is processed with stopping code 2 -### pop requested out of 73 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.843459,0.50481,0.183696) - Old Polarization: (-0.0506825,0.26565,-0.962736) - New Momentum Direction: (-0.685995,0.683743,0.248809) - New Polarization: (0.0955036,0.423611,-0.900796) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1683, parentID 1) is processed with stopping code 2 -### pop requested out of 72 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.486107,0.781959,0.39018) - Old Polarization: (0.365443,0.587461,-0.72204) - New Momentum Direction: (-0.658755,0.535216,0.528758) - New Polarization: (-0.555501,-0.819995,0.137937) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1682, parentID 1) is processed with stopping code 2 -### pop requested out of 71 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.873691,0.453889,0.175069) - Old Polarization: (-0.0874487,0.207475,-0.974324) - New Momentum Direction: (-0.753007,0.613927,0.236797) - New Polarization: (0.161226,0.521039,-0.838168) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1681, parentID 1) is processed with stopping code 2 -### pop requested out of 70 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.977561,0.00796069,0.210502) - Old Polarization: (-0.202453,-0.31159,-0.928399) - New Momentum Direction: (-0.958168,0.0108159,0.286002) - New Polarization: (0.280043,-0.170821,0.944667) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1680, parentID 1) is processed with stopping code 2 -### pop requested out of 69 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1679, parentID 1) is processed with stopping code 2 -### pop requested out of 68 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.722264,-0.439218,0.534249) - Old Polarization: (0.093207,-0.827232,-0.554076) - New Momentum Direction: (0.722264,-0.439218,0.534249) - New Polarization: (0.0424186,0.799141,0.599645) + Old Momentum Direction: (0.69824,0.35749,-0.62021) + Old Polarization: (-0.57225,0.79927,-0.18355) + New Momentum Direction: (-0.69824,0.35749,-0.62021) + New Polarization: (-0.44411,-0.89582,-0.016361) *** FresnelReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (0.722264,-0.439218,0.534249) - Old Polarization: (0.0424186,0.799141,0.599645) - New Momentum Direction: (0.722264,-0.439218,-0.534249) - New Polarization: (-0.0424186,-0.799141,0.599645) + Old Momentum Direction: (-0.69824,0.35749,-0.62021) + Old Polarization: (-0.44411,-0.89582,-0.016361) + New Momentum Direction: (-0.69824,0.35749,0.62021) + New Polarization: (0.44411,0.89582,-0.016361) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (0.722264,-0.439218,-0.534249) - Old Polarization: (-0.0424186,-0.799141,0.599645) - New Momentum Direction: (0.722264,0.439218,-0.534249) - New Polarization: (0.0424186,-0.799141,-0.599645) + Old Momentum Direction: (-0.69824,0.35749,0.62021) + Old Polarization: (0.44411,0.89582,-0.016361) + New Momentum Direction: (-0.69824,-0.35749,0.62021) + New Polarization: (-0.44411,0.89582,0.016361) *** TotalInternalReflection *** No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1678, parentID 1) is processed with stopping code 2 -### pop requested out of 67 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.461124,-0.467491,0.754199) - Old Polarization: (0.394494,-0.869349,-0.29767) - New Momentum Direction: (-0.623531,-0.632141,0.460007) - New Polarization: (0.380363,-0.759353,-0.527927) + Old Momentum Direction: (-0.69824,-0.35749,0.62021) + Old Polarization: (-0.44411,0.89582,0.016361) + New Momentum Direction: (-0.25228,-0.48323,0.83836) + New Polarization: (0.75098,0.4486,0.48455) *** FresnelRefraction *** No Absorbtion length specified -Track (trackID 1677, parentID 1) is processed with stopping code 2 -### pop requested out of 66 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1676, parentID 1) is processed with stopping code 2 -### pop requested out of 65 stacked tracks. +Track (trackID 1516, parentID 1) is processed with stopping code 2 +### pop requested out of 55 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.405403,-0.453783,0.793555) - Old Polarization: (0.459475,-0.851617,-0.252253) - New Momentum Direction: (-0.548738,-0.614223,0.567112) - New Polarization: (0.420257,-0.789096,-0.448008) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1675, parentID 1) is processed with stopping code 2 -### pop requested out of 64 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.614026,-0.476262,0.629401) - Old Polarization: (0.218377,-0.868814,-0.444381) - New Momentum Direction: (-0.614026,-0.476262,-0.629401) - New Polarization: (-0.218377,0.868814,-0.444381) + Old Momentum Direction: (0.41126,-0.62174,-0.66656) + Old Polarization: (-0.9073,-0.34952,-0.23378) + New Momentum Direction: (0.41126,-0.62174,0.66656) + New Polarization: (0.9073,0.34952,-0.23378) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (-0.614026,-0.476262,-0.629401) - Old Polarization: (-0.218377,0.868814,-0.444381) - New Momentum Direction: (0.614026,-0.476262,-0.629401) - New Polarization: (-0.218377,-0.868814,0.444381) + Old Momentum Direction: (0.41126,-0.62174,0.66656) + Old Polarization: (0.9073,0.34952,-0.23378) + New Momentum Direction: (0.41126,0.62174,0.66656) + New Polarization: (-0.9073,0.34952,0.23378) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (0.614026,-0.476262,-0.629401) - Old Polarization: (-0.218377,-0.868814,0.444381) - New Momentum Direction: (0.614026,0.476262,-0.629401) - New Polarization: (0.218377,-0.868814,-0.444381) + Old Momentum Direction: (0.41126,0.62174,0.66656) + Old Polarization: (-0.9073,0.34952,0.23378) + New Momentum Direction: (-0.41126,0.62174,0.66656) + New Polarization: (-0.9073,-0.34952,-0.23378) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (0.614026,0.476262,-0.629401) - Old Polarization: (0.218377,-0.868814,-0.444381) - New Momentum Direction: (0.614026,0.476262,0.629401) - New Polarization: (-0.218377,0.868814,-0.444381) + Old Momentum Direction: (-0.41126,0.62174,0.66656) + Old Polarization: (-0.9073,-0.34952,-0.23378) + New Momentum Direction: (-0.41126,0.62174,-0.66656) + New Polarization: (0.9073,0.34952,-0.23378) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.41126,0.62174,-0.66656) + Old Polarization: (0.9073,0.34952,-0.23378) + New Momentum Direction: (-0.41126,-0.62174,-0.66656) + New Polarization: (-0.9073,0.34952,0.23378) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.41126,-0.62174,-0.66656) + Old Polarization: (-0.9073,0.34952,0.23378) + New Momentum Direction: (0.41126,-0.62174,-0.66656) + New Polarization: (-0.9073,-0.34952,-0.23378) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.41126,-0.62174,-0.66656) + Old Polarization: (-0.9073,-0.34952,-0.23378) + New Momentum Direction: (0.41126,-0.62174,0.66656) + New Polarization: (0.9073,0.34952,-0.23378) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.41126,-0.62174,0.66656) + Old Polarization: (0.9073,0.34952,-0.23378) + New Momentum Direction: (0.41126,0.62174,0.66656) + New Polarization: (-0.9073,0.34952,0.23378) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.41126,0.62174,0.66656) + Old Polarization: (-0.9073,0.34952,0.23378) + New Momentum Direction: (0.41126,0.62174,-0.66656) + New Polarization: (0.9073,-0.34952,0.23378) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.41126,0.62174,-0.66656) + Old Polarization: (0.9073,-0.34952,0.23378) + New Momentum Direction: (0.41126,-0.62174,-0.66656) + New Polarization: (-0.9073,-0.34952,-0.23378) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.41126,-0.62174,-0.66656) + Old Polarization: (-0.9073,-0.34952,-0.23378) + New Momentum Direction: (-0.41126,-0.62174,-0.66656) + New Polarization: (-0.9073,0.34952,0.23378) *** TotalInternalReflection *** No Absorbtion length specified Scattering Photon! -Old Momentum Direction: (0.614026,0.476262,0.629401) -Old Polarization: (-0.218377,0.868814,-0.444381) -New Polarization: (-0.240287,0.813281,-0.474206) -Polarization Change: (-0.247307,0.837041,-0.48806) -New Momentum Direction: (-0.943109,-0.322978,-0.0819494) -Momentum Change: (-0.94288,-0.3229,-0.0819295) +Old Momentum Direction: (-0.41126,-0.62174,-0.66656) +Old Polarization: (-0.9073,0.34952,0.23378) +New Polarization: (-0.41733,0.11211,0.76424) +Polarization Change: (-0.47535,0.12769,0.87048) +New Momentum Direction: (0.0055949,-0.97588,0.14621) +Momentum Change: (0.0056697,-0.98895,0.14817) + +** Photon Absorbed! ** +Track (trackID 1515, parentID 1) is processed with stopping code 2 +### pop requested out of 54 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.94288,-0.3229,-0.0819295) - Old Polarization: (-0.247307,0.837041,-0.48806) - New Momentum Direction: (-0.94288,-0.3229,0.0819295) - New Polarization: (0.247307,-0.837041,-0.48806) + Old Momentum Direction: (0.91756,0.39018,-0.076413) + Old Polarization: (-0.31605,0.83238,0.45526) + New Momentum Direction: (0.84214,0.5292,-0.10364) + New Polarization: (-0.4714,0.81578,0.33509) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1514, parentID 1) is processed with stopping code 2 +### pop requested out of 53 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1513, parentID 1) is processed with stopping code 2 +### pop requested out of 52 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.4675,-0.11272,-0.87678) + Old Polarization: (-0.84216,0.24471,-0.4805) + New Momentum Direction: (0.63391,-0.15284,-0.75815) + New Polarization: (0.74357,-0.14921,0.6518) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1512, parentID 1) is processed with stopping code 2 +### pop requested out of 51 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.52593,-0.81271,-0.25081) + Old Polarization: (-0.77527,-0.57935,0.25162) + New Momentum Direction: (0.71089,-0.61621,-0.33902) + New Polarization: (0.52192,0.78531,-0.33299) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1511, parentID 1) is processed with stopping code 2 +### pop requested out of 50 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1510, parentID 1) is processed with stopping code 2 +### pop requested out of 49 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.60108,-0.79651,-0.065418) + Old Polarization: (-0.68617,-0.5563,0.46872) + New Momentum Direction: (0.81435,-0.57357,-0.08863) + New Polarization: (0.57729,0.78478,0.22552) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1509, parentID 1) is processed with stopping code 2 +### pop requested out of 48 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1508, parentID 1) is processed with stopping code 2 +### pop requested out of 47 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.47742,-0.78237,-0.39996) + Old Polarization: (-0.83367,-0.54713,0.075126) + New Momentum Direction: (0.64397,-0.54245,-0.53949) + New Polarization: (0.15921,0.78476,-0.59901) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1507, parentID 1) is processed with stopping code 2 +### pop requested out of 46 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.40266,-0.50959,-0.76039) + Old Polarization: (-0.91531,-0.2163,-0.33975) + New Momentum Direction: (0.54788,-0.69337,-0.46804) + New Polarization: (-0.38983,-0.70664,0.5905) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1506, parentID 1) is processed with stopping code 2 +### pop requested out of 45 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.47676,-0.085287,-0.87489) + Old Polarization: (-0.83208,0.27714,-0.48045) + New Momentum Direction: (0.64564,-0.1155,-0.75486) + New Polarization: (0.75606,-0.042241,0.65314) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1505, parentID 1) is processed with stopping code 2 +### pop requested out of 44 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.58608,0.19521,-0.78639) + Old Polarization: (-0.70339,0.60433,-0.37421) + New Momentum Direction: (0.79503,0.2648,-0.54571) + New Polarization: (0.16812,0.76822,0.61771) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1504, parentID 1) is processed with stopping code 2 +### pop requested out of 43 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.96498,0.12346,0.23144) + Old Polarization: (-0.26156,0.51963,0.81337) + New Momentum Direction: (0.93441,0.16764,0.31428) + New Polarization: (-0.35565,0.48809,0.79704) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1503, parentID 1) is processed with stopping code 2 +### pop requested out of 42 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1502, parentID 1) is processed with stopping code 2 +### pop requested out of 41 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1501, parentID 1) is processed with stopping code 2 +### pop requested out of 40 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.53912,-0.81113,-0.22677) + Old Polarization: (-0.76141,-0.58447,0.28044) + New Momentum Direction: (0.72585,-0.61638,-0.30531) + New Polarization: (0.55781,0.78718,-0.26305) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1500, parentID 1) is processed with stopping code 2 +### pop requested out of 39 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.86591,0.43234,-0.25154) + Old Polarization: (-0.37308,0.89322,0.25094) + New Momentum Direction: (0.73881,0.5825,-0.3389) + New Polarization: (-0.56569,0.80936,0.1579) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1499, parentID 1) is processed with stopping code 2 +### pop requested out of 38 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.91217,-0.24015,0.33208) + Old Polarization: (-0.31842,0.094796,0.9432) + New Momentum Direction: (0.83359,-0.32368,0.4476) + New Polarization: (-0.47509,-0.0067469,0.87991) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1498, parentID 1) is processed with stopping code 2 +### pop requested out of 37 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.81533,-0.51083,0.27256) + Old Polarization: (-0.43334,-0.22617,0.87239) + New Momentum Direction: (0.62515,-0.68862,0.36742) + New Polarization: (-0.65974,-0.21468,0.72017) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1497, parentID 1) is processed with stopping code 2 +### pop requested out of 36 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.58152,0.19158,-0.79066) + Old Polarization: (-0.70807,0.59774,-0.37595) + New Momentum Direction: (0.79064,0.26047,-0.55412) + New Polarization: (0.18315,0.76296,0.61996) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1496, parentID 1) is processed with stopping code 2 +### pop requested out of 35 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.84694,0.44265,-0.29453) + Old Polarization: (-0.3982,0.89516,0.20029) + New Momentum Direction: (0.69344,0.59986,-0.39914) + New Polarization: (-0.60864,0.78415,0.12107) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1495, parentID 1) is processed with stopping code 2 +### pop requested out of 34 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.40915,-0.51559,-0.75284) + Old Polarization: (-0.91246,-0.22884,-0.33918) + New Momentum Direction: (0.55331,-0.69725,-0.45573) + New Polarization: (-0.40283,-0.70286,0.58627) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1494, parentID 1) is processed with stopping code 2 +### pop requested out of 33 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.92198,-0.18661,0.3393) + Old Polarization: (-0.31264,0.15831,0.93659) + New Momentum Direction: (0.8501,-0.25377,0.46144) + New Polarization: (-0.46515,0.048966,0.88388) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1493, parentID 1) is processed with stopping code 2 +### pop requested out of 32 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.88098,-0.33561,0.33354) + Old Polarization: (-0.3592,-0.015526,0.93313) + New Momentum Direction: (0.76652,-0.45552,0.45271) + New Polarization: (-0.54617,-0.091557,0.83265) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1492, parentID 1) is processed with stopping code 2 +### pop requested out of 31 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.46745,-0.11004,-0.87714) + Old Polarization: (-0.84176,0.24768,-0.47967) + New Momentum Direction: (0.63433,-0.14932,-0.75851) + New Polarization: (0.74585,-0.13984,0.65127) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1491, parentID 1) is processed with stopping code 2 +### pop requested out of 30 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1490, parentID 1) is processed with stopping code 2 +### pop requested out of 29 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1489, parentID 1) is processed with stopping code 2 +### pop requested out of 28 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.62329,-0.78183,-0.015737) + Old Polarization: (-0.65988,-0.53666,0.52589) + New Momentum Direction: (0.8457,-0.53322,-0.021353) + New Polarization: (0.50253,0.78229,0.36808) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1488, parentID 1) is processed with stopping code 2 +### pop requested out of 27 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.89722,-0.28721,0.33541) + Old Polarization: (-0.33858,0.040136,0.94008) + New Momentum Direction: (0.80176,-0.38873,0.45395) + New Polarization: (-0.51061,-0.050828,0.85831) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1487, parentID 1) is processed with stopping code 2 +### pop requested out of 26 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1486, parentID 1) is processed with stopping code 2 +### pop requested out of 25 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.43638,-0.23193,-0.86935) + Old Polarization: (-0.87716,0.10556,-0.46846) + New Momentum Direction: (0.59292,-0.31514,-0.74103) + New Polarization: (0.52599,-0.54523,0.65273) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1485, parentID 1) is processed with stopping code 2 +### pop requested out of 24 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1484, parentID 1) is processed with stopping code 2 +### pop requested out of 23 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.92502,-0.17591,0.33673) + Old Polarization: (-0.3082,0.17077,0.93587) + New Momentum Direction: (0.85662,-0.2389,0.4573) + New Polarization: (-0.4569,0.060467,0.88746) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1483, parentID 1) is processed with stopping code 2 +### pop requested out of 22 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.42866,-0.26974,-0.86226) + Old Polarization: (-0.88593,0.061636,-0.4597) + New Momentum Direction: (0.58261,-0.36662,-0.72537) + New Polarization: (0.41524,-0.63295,0.65342) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1482, parentID 1) is processed with stopping code 2 +### pop requested out of 21 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1481, parentID 1) is processed with stopping code 2 +### pop requested out of 20 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.80827,-0.51851,0.27903) + Old Polarization: (-0.44473,-0.22701,0.86642) + New Momentum Direction: (0.59885,-0.70523,0.37951) + New Polarization: (-0.6838,-0.20359,0.70069) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1480, parentID 1) is processed with stopping code 2 +### pop requested out of 19 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.9649,0.14041,0.22195) + Old Polarization: (-0.26254,0.53837,0.80077) + New Momentum Direction: (0.93409,0.19088,0.30174) + New Polarization: (-0.35698,0.5159,0.77873) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1479, parentID 1) is processed with stopping code 2 +### pop requested out of 18 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.91963,-0.215,0.32872) + Old Polarization: (-0.30805,0.12444,0.9432) + New Momentum Direction: (0.84912,-0.28912,0.44204) + New Polarization: (-0.45663,0.018848,0.88946) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1478, parentID 1) is processed with stopping code 2 +### pop requested out of 17 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.46493,-0.11658,-0.87764) + Old Polarization: (-0.84431,0.23992,-0.47915) + New Momentum Direction: (0.63132,-0.1583,-0.75919) + New Polarization: (0.74105,-0.16548,0.65074) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1477, parentID 1) is processed with stopping code 2 +### pop requested out of 16 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.49842,-0.80948,-0.31036) + Old Polarization: (-0.80457,-0.56524,0.18214) + New Momentum Direction: (0.67774,-0.60214,-0.42202) + New Polarization: (0.39891,0.78323,-0.47689) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1476, parentID 1) is processed with stopping code 2 +### pop requested out of 15 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.75746,0.42011,-0.49977) + Old Polarization: (-0.50367,0.86307,-0.037872) + New Momentum Direction: (0.46026,0.57125,-0.67958) + New Polarization: (-0.77359,0.63362,0.0086949) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1475, parentID 1) is processed with stopping code 2 +### pop requested out of 14 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1474, parentID 1) is processed with stopping code 2 +### pop requested out of 13 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.87174,0.43323,-0.22888) + Old Polarization: (-0.36819,0.88741,0.27739) + New Momentum Direction: (0.74886,0.58598,-0.30957) + New Polarization: (-0.55957,0.80935,0.17838) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1473, parentID 1) is processed with stopping code 2 +### pop requested out of 12 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1472, parentID 1) is processed with stopping code 2 +### pop requested out of 11 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1471, parentID 1) is processed with stopping code 2 +### pop requested out of 10 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.95093,-0.04418,0.30624) +Old Polarization: (-0.27615,0.32524,0.90441) +New Polarization: (0.37973,0.17296,0.7639) +Polarization Change: (0.43625,0.1987,0.87761) +New Momentum Direction: (-0.64606,0.72345,0.15735) +Momentum Change: (-0.65749,0.73625,0.16013) + Photon at Boundary! + Old Momentum Direction: (-0.65749,0.73625,0.16013) + Old Polarization: (0.43625,0.1987,0.87761) + New Momentum Direction: (-0.89066,0.3996,0.21692) + New Polarization: (0.054601,-0.37964,0.92352) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1470, parentID 1) is processed with stopping code 2 +### pop requested out of 9 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.61373,-0.78801,-0.048781) + Old Polarization: (-0.67229,-0.554,0.49103) + New Momentum Direction: (0.82774,-0.55724,-0.065791) + New Polarization: (0.55128,0.78577,0.28045) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1469, parentID 1) is processed with stopping code 2 +### pop requested out of 8 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.49737,-0.012166,-0.86745) + Old Polarization: (-0.80659,0.36169,-0.46755) + New Momentum Direction: (0.67526,-0.016517,-0.7374) + New Polarization: (0.71939,0.23541,0.6535) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1468, parentID 1) is processed with stopping code 2 +### pop requested out of 7 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.49132,-0.80213,-0.3394) + Old Polarization: (-0.81427,-0.56133,0.14788) + New Momentum Direction: (0.66626,-0.58675,-0.46025) + New Polarization: (0.32713,0.78459,-0.52669) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1467, parentID 1) is processed with stopping code 2 +### pop requested out of 6 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.82181,0.44598,-0.35458) +Old Polarization: (-0.42874,0.89393,0.13067) +New Polarization: (-0.46287,0.8287,0.030991) +Polarization Change: (-0.48738,0.87258,0.032632) +New Momentum Direction: (-0.80269,-0.46175,0.35846) +Momentum Change: (-0.80836,-0.46501,0.36099) + +** Photon Absorbed! ** +Track (trackID 1466, parentID 1) is processed with stopping code 2 +### pop requested out of 5 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.47487,-0.78627,-0.39532) + Old Polarization: (-0.83433,-0.54513,0.082015) + New Momentum Direction: (0.64305,-0.54765,-0.53532) + New Polarization: (0.17051,0.78385,-0.59708) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1465, parentID 1) is processed with stopping code 2 +### pop requested out of 4 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.55854,0.12049,-0.82068) + Old Polarization: (-0.73822,0.52336,-0.42558) + New Momentum Direction: (0.75217,0.16227,-0.63868) + New Polarization: (0.41174,0.641,0.64776) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1464, parentID 1) is processed with stopping code 2 +### pop requested out of 3 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.41767,-0.61799,-0.66606) + Old Polarization: (-0.90447,-0.35258,-0.24004) + New Momentum Direction: (0.41767,-0.61799,0.66606) + New Polarization: (0.90447,0.35258,-0.24004) *** TotalInternalReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (-0.94288,-0.3229,0.0819295) - Old Polarization: (0.247307,-0.837041,-0.48806) - New Momentum Direction: (-0.891369,-0.439355,0.111478) - New Polarization: (0.375907,-0.853944,-0.359825) - *** FresnelRefraction *** + Old Momentum Direction: (0.41767,-0.61799,0.66606) + Old Polarization: (0.90447,0.35258,-0.24004) + New Momentum Direction: (0.41767,0.61799,0.66606) + New Polarization: (-0.90447,0.35258,0.24004) + *** TotalInternalReflection *** No Absorbtion length specified -Track (trackID 1674, parentID 1) is processed with stopping code 2 -### pop requested out of 63 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.0328575,0.595211,0.802897) - Old Polarization: (0.895875,0.373679,-0.240357) - New Momentum Direction: (-0.0444016,0.804333,0.592517) - New Polarization: (0.830259,0.359567,-0.425889) - *** FresnelRefraction *** + Old Momentum Direction: (0.41767,0.61799,0.66606) + Old Polarization: (-0.90447,0.35258,0.24004) + New Momentum Direction: (-0.41767,0.61799,0.66606) + New Polarization: (-0.90447,-0.35258,-0.24004) + *** TotalInternalReflection *** No Absorbtion length specified -Track (trackID 1673, parentID 1) is processed with stopping code 2 -### pop requested out of 62 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.0204876,0.0225006,0.999537) - Old Polarization: (0.955132,-0.295897,-0.0129165) - New Momentum Direction: (0.0277524,0.0304792,0.99915) - New Polarization: (0.984798,-0.172292,-0.022098) + Old Momentum Direction: (-0.41767,0.61799,0.66606) + Old Polarization: (-0.90447,-0.35258,-0.24004) + New Momentum Direction: (-0.41767,0.61799,-0.66606) + New Polarization: (0.90447,0.35258,-0.24004) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.41767,0.61799,-0.66606) + Old Polarization: (0.90447,0.35258,-0.24004) + New Momentum Direction: (-0.41767,-0.61799,-0.66606) + New Polarization: (-0.90447,0.35258,0.24004) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.41767,-0.61799,-0.66606) + Old Polarization: (-0.90447,0.35258,0.24004) + New Momentum Direction: (0.41767,-0.61799,-0.66606) + New Polarization: (-0.90447,-0.35258,-0.24004) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.41767,-0.61799,-0.66606) + Old Polarization: (-0.90447,-0.35258,-0.24004) + New Momentum Direction: (0.41767,-0.61799,0.66606) + New Polarization: (0.90447,0.35258,-0.24004) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.41767,-0.61799,0.66606) + Old Polarization: (0.90447,0.35258,-0.24004) + New Momentum Direction: (0.41767,0.61799,0.66606) + New Polarization: (-0.90447,0.35258,0.24004) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.41767,0.61799,0.66606) + Old Polarization: (-0.90447,0.35258,0.24004) + New Momentum Direction: (0.41767,0.61799,-0.66606) + New Polarization: (0.90447,-0.35258,0.24004) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.41767,0.61799,-0.66606) + Old Polarization: (0.90447,-0.35258,0.24004) + New Momentum Direction: (0.41767,-0.61799,-0.66606) + New Polarization: (-0.90447,-0.35258,-0.24004) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.41767,-0.61799,-0.66606) + Old Polarization: (-0.90447,-0.35258,-0.24004) + New Momentum Direction: (-0.41767,-0.61799,-0.66606) + New Polarization: (-0.90447,0.35258,0.24004) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.41767,-0.61799,-0.66606) + Old Polarization: (-0.90447,0.35258,0.24004) + New Momentum Direction: (-0.41767,-0.61799,0.66606) + New Polarization: (0.90447,-0.35258,0.24004) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.41767,-0.61799,0.66606) + Old Polarization: (0.90447,-0.35258,0.24004) + New Momentum Direction: (-0.41767,0.61799,0.66606) + New Polarization: (-0.90447,-0.35258,-0.24004) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.41767,0.61799,0.66606) + Old Polarization: (-0.90447,-0.35258,-0.24004) + New Momentum Direction: (-0.41767,0.61799,-0.66606) + New Polarization: (0.90447,0.35258,-0.24004) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.41767,0.61799,-0.66606) + Old Polarization: (0.90447,0.35258,-0.24004) + New Momentum Direction: (0.41767,0.61799,-0.66606) + New Polarization: (0.90447,-0.35258,0.24004) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.41767,0.61799,-0.66606) + Old Polarization: (0.90447,-0.35258,0.24004) + New Momentum Direction: (0.41767,-0.61799,-0.66606) + New Polarization: (-0.90447,-0.35258,-0.24004) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.41767,-0.61799,-0.66606) + Old Polarization: (-0.90447,-0.35258,-0.24004) + New Momentum Direction: (0.41767,-0.61799,0.66606) + New Polarization: (0.90447,0.35258,-0.24004) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.41767,-0.61799,0.66606) + Old Polarization: (0.90447,0.35258,-0.24004) + New Momentum Direction: (0.41767,0.61799,0.66606) + New Polarization: (-0.90447,0.35258,0.24004) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.41767,0.61799,0.66606) + Old Polarization: (-0.90447,0.35258,0.24004) + New Momentum Direction: (-0.41767,0.61799,0.66606) + New Polarization: (-0.90447,-0.35258,-0.24004) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.41767,0.61799,0.66606) + Old Polarization: (-0.90447,-0.35258,-0.24004) + New Momentum Direction: (-0.41767,0.61799,-0.66606) + New Polarization: (0.90447,0.35258,-0.24004) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.41767,0.61799,-0.66606) + Old Polarization: (0.90447,0.35258,-0.24004) + New Momentum Direction: (-0.41767,-0.61799,-0.66606) + New Polarization: (-0.90447,0.35258,0.24004) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.41767,-0.61799,-0.66606) + Old Polarization: (-0.90447,0.35258,0.24004) + New Momentum Direction: (-0.41767,-0.61799,0.66606) + New Polarization: (0.90447,-0.35258,0.24004) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.41767,-0.61799,0.66606) + Old Polarization: (0.90447,-0.35258,0.24004) + New Momentum Direction: (0.41767,-0.61799,0.66606) + New Polarization: (0.90447,0.35258,-0.24004) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.41767,-0.61799,0.66606) + Old Polarization: (0.90447,0.35258,-0.24004) + New Momentum Direction: (0.41767,0.61799,0.66606) + New Polarization: (-0.90447,0.35258,0.24004) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.41767,0.61799,0.66606) + Old Polarization: (-0.90447,0.35258,0.24004) + New Momentum Direction: (0.41767,0.61799,-0.66606) + New Polarization: (0.90447,-0.35258,0.24004) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1463, parentID 1) is processed with stopping code 2 +### pop requested out of 2 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.50109,-0.80937,-0.30631) + Old Polarization: (-0.8021,-0.56725,0.18672) + New Momentum Direction: (0.68051,-0.6032,-0.41599) + New Polarization: (0.4089,0.78373,-0.46752) *** FresnelRefraction *** No Absorbtion length specified +Track (trackID 1462, parentID 1) is processed with stopping code 2 +### pop requested out of 1 stacked tracks. + + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 45 +Track (trackID 1, parentID 0) is processed with stopping code 4 +### pop requested out of 46 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.98931,0.14577,-0.0025459) + Old Polarization: (-0.029581,0.2178,0.97555) + New Momentum Direction: (0.98017,0.19813,-0.0034604) + New Polarization: (-0.053791,0.28283,0.95766) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1566, parentID 1) is processed with stopping code 2 +### pop requested out of 45 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.30243,0.37511,-0.87626) + Old Polarization: (-0.86132,0.50128,-0.082682) + New Momentum Direction: (0.40838,0.50653,-0.75938) + New Polarization: (-0.6456,0.74839,0.15201) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1565, parentID 1) is processed with stopping code 2 +### pop requested out of 44 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.94328,-0.32925,-0.042609) + Old Polarization: (-0.082162,-0.35586,0.93092) + New Momentum Direction: (0.89302,-0.4463,-0.057757) + New Polarization: (-0.14832,-0.41306,0.89854) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1564, parentID 1) is processed with stopping code 2 +### pop requested out of 43 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.25284,0.27366,-0.928) + Old Polarization: (-0.91713,0.37328,-0.1398) + New Momentum Direction: (0.34298,0.37122,-0.86288) + New Polarization: (-0.35792,0.90095,0.24533) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1563, parentID 1) is processed with stopping code 2 +### pop requested out of 42 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.90545,-0.41653,-0.081659) + Old Polarization: (-0.1311,-0.45742,0.87953) + New Momentum Direction: (0.81649,-0.56657,-0.11107) + New Polarization: (-0.23638,-0.50356,0.83099) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1562, parentID 1) is processed with stopping code 2 +### pop requested out of 41 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.96255,-0.26976,-0.026792) + Old Polarization: (-0.053888,-0.28726,0.95634) + New Momentum Direction: (0.93069,-0.36401,-0.036151) + New Polarization: (-0.097013,-0.34091,0.93508) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1561, parentID 1) is processed with stopping code 2 +### pop requested out of 40 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1560, parentID 1) is processed with stopping code 2 +### pop requested out of 39 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1559, parentID 1) is processed with stopping code 2 +### pop requested out of 38 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1558, parentID 1) is processed with stopping code 2 +### pop requested out of 37 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.98151,0.19072,-0.016258) + Old Polarization: (-0.037101,0.27288,0.96133) + New Momentum Direction: (0.96568,0.2588,-0.022062) + New Polarization: (-0.067414,0.33176,0.94095) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1557, parentID 1) is processed with stopping code 2 +### pop requested out of 36 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.23328,-0.25656,-0.93795) + Old Polarization: (-0.94857,-0.27231,-0.16144) + New Momentum Direction: (0.31425,-0.3456,-0.8842) + New Polarization: (-0.25596,-0.92773,0.27165) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1556, parentID 1) is processed with stopping code 2 +### pop requested out of 35 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.24864,-0.33382,-0.90926) + Old Polarization: (-0.92427,-0.3625,-0.11966) + New Momentum Direction: (0.33662,-0.45194,-0.8261) + New Polarization: (-0.55337,-0.80477,0.21478) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1555, parentID 1) is processed with stopping code 2 +### pop requested out of 34 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.90437,-0.41758,-0.087962) + Old Polarization: (-0.12872,-0.46346,0.87672) + New Momentum Direction: (0.81596,-0.56569,-0.11916) + New Polarization: (-0.23073,-0.50766,0.83008) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1554, parentID 1) is processed with stopping code 2 +### pop requested out of 33 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.22067,0.16868,-0.96065) + Old Polarization: (-0.95339,0.24514,-0.17596) + New Momentum Direction: (0.30004,0.22935,-0.92594) + New Polarization: (0.14407,0.94864,0.28166) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1553, parentID 1) is processed with stopping code 2 +### pop requested out of 32 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.22886,0.18573,-0.95558) + Old Polarization: (-0.94747,0.26781,-0.17487) + New Momentum Direction: (0.31007,0.25163,-0.91681) + New Polarization: (0.060063,0.95722,0.28304) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1552, parentID 1) is processed with stopping code 2 +### pop requested out of 31 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.82321,-0.539,-0.17835) + Old Polarization: (-0.23005,-0.60386,0.76317) + New Momentum Direction: (0.63496,-0.73344,-0.24268) + New Polarization: (-0.41055,-0.58646,0.69822) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1551, parentID 1) is processed with stopping code 2 +### pop requested out of 30 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.4141,0.52669,-0.74237) + Old Polarization: (-0.72424,0.68469,0.081778) + New Momentum Direction: (0.5598,0.712,-0.42389) + New Polarization: (-0.72712,0.66742,0.1608) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1550, parentID 1) is processed with stopping code 2 +### pop requested out of 29 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.93428,0.3453,-0.088816) + Old Polarization: (-0.088436,0.46576,0.88048) + New Momentum Direction: (0.87668,0.4659,-0.11984) + New Polarization: (-0.15842,0.51481,0.84254) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1549, parentID 1) is processed with stopping code 2 +### pop requested out of 28 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.3923,-0.57992,-0.714) + Old Polarization: (-0.74705,-0.65375,0.12052) + New Momentum Direction: (0.53354,-0.7887,-0.30542) + New Polarization: (-0.75553,-0.60676,0.24703) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1548, parentID 1) is processed with stopping code 2 +### pop requested out of 27 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1547, parentID 1) is processed with stopping code 2 +### pop requested out of 26 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.77314,0.5627,-0.29263) + Old Polarization: (-0.2884,0.72283,0.62797) + New Momentum Direction: (0.50997,0.76316,-0.39688) + New Polarization: (-0.51023,0.63983,0.5747) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1546, parentID 1) is processed with stopping code 2 +### pop requested out of 25 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.67038,-0.64267,-0.37089) +Old Polarization: (-0.41217,-0.73816,0.53408) +New Polarization: (0.21136,0.11337,0.92183) +Polarization Change: (0.2219,0.11902,0.96778) +New Momentum Direction: (-0.04951,0.98296,-0.10953) +Momentum Change: (-0.049996,0.99261,-0.11061) + Photon at Boundary! + Old Momentum Direction: (-0.049996,0.99261,-0.11061) + Old Polarization: (0.2219,0.11902,0.96778) + New Momentum Direction: (-0.067663,0.98641,-0.14969) + New Polarization: (-0.53523,-0.16251,-0.82893) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1545, parentID 1) is processed with stopping code 2 +### pop requested out of 24 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.84116,-0.51705,-0.15845) + Old Polarization: (-0.20764,-0.57934,0.7882) + New Momentum Direction: (0.67812,-0.7027,-0.21534) + New Polarization: (-0.37059,-0.57995,0.72548) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1544, parentID 1) is processed with stopping code 2 +### pop requested out of 23 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.21423,0.13213,-0.9678) + Old Polarization: (-0.96178,0.2015,-0.18539) + New Momentum Direction: (0.29112,0.17955,-0.93969) + New Polarization: (0.37056,0.88439,0.28379) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1543, parentID 1) is processed with stopping code 2 +### pop requested out of 22 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.64164,0.6157,-0.45739) + Old Polarization: (-0.44749,0.78482,0.42873) + New Momentum Direction: (-0.64164,0.6157,-0.45739) + New Polarization: (-0.44749,-0.78482,-0.42873) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.64164,0.6157,-0.45739) + Old Polarization: (-0.44749,-0.78482,-0.42873) + New Momentum Direction: (-0.64164,-0.6157,-0.45739) + New Polarization: (0.44749,-0.78482,0.42873) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.64164,-0.6157,-0.45739) + Old Polarization: (0.44749,-0.78482,0.42873) + New Momentum Direction: (-0.64164,-0.6157,0.45739) + New Polarization: (-0.44749,0.78482,0.42873) + *** TotalInternalReflection *** +No Absorbtion length specified +Scattering Photon! +Old Momentum Direction: (-0.64164,-0.6157,0.45739) +Old Polarization: (-0.44749,0.78482,0.42873) +New Polarization: (0.0037255,0.18811,0.87559) +Polarization Change: (0.0041598,0.21005,0.97768) +New Momentum Direction: (0.29618,-0.83771,0.17872) +Momentum Change: (0.32679,-0.9243,0.19719) + Photon at Boundary! + Old Momentum Direction: (0.32679,-0.9243,0.19719) + Old Polarization: (0.0041598,0.21005,0.97768) + New Momentum Direction: (0.32679,0.9243,0.19719) + New Polarization: (0.77139,-0.14031,-0.6207) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.32679,0.9243,0.19719) + Old Polarization: (0.77139,-0.14031,-0.6207) + New Momentum Direction: (-0.32679,0.9243,0.19719) + New Polarization: (0.77139,0.14031,0.6207) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.32679,0.9243,0.19719) + Old Polarization: (0.77139,0.14031,0.6207) + New Momentum Direction: (-0.4437,0.85525,0.26773) + New Polarization: (0.10454,-0.24732,0.96328) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1542, parentID 1) is processed with stopping code 2 +### pop requested out of 21 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.23513,-0.30465,-0.92299) + Old Polarization: (-0.93682,-0.3241,-0.13168) + New Momentum Direction: (0.31946,-0.41392,-0.85242) + New Polarization: (-0.47464,-0.84847,0.23412) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1541, parentID 1) is processed with stopping code 2 +### pop requested out of 20 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1540, parentID 1) is processed with stopping code 2 +### pop requested out of 19 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.93436,-0.35208,-0.054955) + Old Polarization: (-0.091166,-0.38527,0.91829) + New Momentum Direction: (0.87609,-0.47638,-0.074357) + New Polarization: (-0.16394,-0.43935,0.88323) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1539, parentID 1) is processed with stopping code 2 +### pop requested out of 18 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1538, parentID 1) is processed with stopping code 2 +### pop requested out of 17 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.40196,0.52107,-0.75294) + Old Polarization: (-0.73693,0.67215,0.07174) + New Momentum Direction: (0.54529,0.70687,-0.45055) + New Polarization: (-0.73816,0.65962,0.1415) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1537, parentID 1) is processed with stopping code 2 +### pop requested out of 16 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.43789,-0.61359,-0.65708) + Old Polarization: (-0.69283,-0.69608,0.1883) + New Momentum Direction: (0.43789,-0.61359,0.65708) + New Polarization: (0.69283,0.69608,0.1883) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.43789,-0.61359,0.65708) + Old Polarization: (0.69283,0.69608,0.1883) + New Momentum Direction: (0.43789,0.61359,0.65708) + New Polarization: (-0.69283,0.69608,-0.1883) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.43789,0.61359,0.65708) + Old Polarization: (-0.69283,0.69608,-0.1883) + New Momentum Direction: (-0.43789,0.61359,0.65708) + New Polarization: (-0.69283,-0.69608,0.1883) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.43789,0.61359,0.65708) + Old Polarization: (-0.69283,-0.69608,0.1883) + New Momentum Direction: (-0.43789,0.61359,-0.65708) + New Polarization: (0.69283,0.69608,0.1883) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.43789,0.61359,-0.65708) + Old Polarization: (0.69283,0.69608,0.1883) + New Momentum Direction: (-0.43789,-0.61359,-0.65708) + New Polarization: (-0.69283,0.69608,-0.1883) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.43789,-0.61359,-0.65708) + Old Polarization: (-0.69283,0.69608,-0.1883) + New Momentum Direction: (0.43789,-0.61359,-0.65708) + New Polarization: (-0.69283,-0.69608,0.1883) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.43789,-0.61359,-0.65708) + Old Polarization: (-0.69283,-0.69608,0.1883) + New Momentum Direction: (0.43789,-0.61359,0.65708) + New Polarization: (0.69283,0.69608,0.1883) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.43789,-0.61359,0.65708) + Old Polarization: (0.69283,0.69608,0.1883) + New Momentum Direction: (0.43789,0.61359,0.65708) + New Polarization: (-0.69283,0.69608,-0.1883) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.43789,0.61359,0.65708) + Old Polarization: (-0.69283,0.69608,-0.1883) + New Momentum Direction: (0.43789,0.61359,-0.65708) + New Polarization: (0.69283,-0.69608,-0.1883) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.43789,0.61359,-0.65708) + Old Polarization: (0.69283,-0.69608,-0.1883) + New Momentum Direction: (-0.43789,0.61359,-0.65708) + New Polarization: (0.69283,0.69608,0.1883) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.43789,0.61359,-0.65708) + Old Polarization: (0.69283,0.69608,0.1883) + New Momentum Direction: (-0.43789,-0.61359,-0.65708) + New Polarization: (-0.69283,0.69608,-0.1883) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.43789,-0.61359,-0.65708) + Old Polarization: (-0.69283,0.69608,-0.1883) + New Momentum Direction: (-0.43789,-0.61359,0.65708) + New Polarization: (0.69283,-0.69608,-0.1883) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.43789,-0.61359,0.65708) + Old Polarization: (0.69283,-0.69608,-0.1883) + New Momentum Direction: (-0.43789,0.61359,0.65708) + New Polarization: (-0.69283,-0.69608,0.1883) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.43789,0.61359,0.65708) + Old Polarization: (-0.69283,-0.69608,0.1883) + New Momentum Direction: (0.43789,0.61359,0.65708) + New Polarization: (-0.69283,0.69608,-0.1883) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.43789,0.61359,0.65708) + Old Polarization: (-0.69283,0.69608,-0.1883) + New Momentum Direction: (0.43789,0.61359,-0.65708) + New Polarization: (0.69283,-0.69608,-0.1883) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.43789,0.61359,-0.65708) + Old Polarization: (0.69283,-0.69608,-0.1883) + New Momentum Direction: (0.43789,-0.61359,-0.65708) + New Polarization: (-0.69283,-0.69608,0.1883) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.43789,-0.61359,-0.65708) + Old Polarization: (-0.69283,-0.69608,0.1883) + New Momentum Direction: (0.43789,-0.61359,0.65708) + New Polarization: (0.69283,0.69608,0.1883) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1536, parentID 1) is processed with stopping code 2 +### pop requested out of 15 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.50937,-0.63925,-0.57611) + Old Polarization: (-0.60886,-0.74082,0.28368) + New Momentum Direction: (0.50937,0.63925,-0.57611) + New Polarization: (0.60886,-0.74082,-0.28368) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.50937,0.63925,-0.57611) + Old Polarization: (0.60886,-0.74082,-0.28368) + New Momentum Direction: (0.50937,0.63925,0.57611) + New Polarization: (-0.60886,0.74082,-0.28368) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.50937,0.63925,0.57611) + Old Polarization: (-0.60886,0.74082,-0.28368) + New Momentum Direction: (-0.50937,0.63925,0.57611) + New Polarization: (-0.60886,-0.74082,0.28368) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.50937,0.63925,0.57611) + Old Polarization: (-0.60886,-0.74082,0.28368) + New Momentum Direction: (-0.50937,-0.63925,0.57611) + New Polarization: (0.60886,-0.74082,-0.28368) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.50937,-0.63925,0.57611) + Old Polarization: (0.60886,-0.74082,-0.28368) + New Momentum Direction: (-0.50937,-0.63925,-0.57611) + New Polarization: (-0.60886,0.74082,-0.28368) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.50937,-0.63925,-0.57611) + Old Polarization: (-0.60886,0.74082,-0.28368) + New Momentum Direction: (0.50937,-0.63925,-0.57611) + New Polarization: (-0.60886,-0.74082,0.28368) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1535, parentID 1) is processed with stopping code 2 +### pop requested out of 14 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.58643,-0.66008,-0.46946) + Old Polarization: (-0.514,-0.7512,0.41413) + New Momentum Direction: (0.58643,0.66008,-0.46946) + New Polarization: (0.514,-0.7512,-0.41413) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.58643,0.66008,-0.46946) + Old Polarization: (0.514,-0.7512,-0.41413) + New Momentum Direction: (-0.58643,0.66008,-0.46946) + New Polarization: (0.514,0.7512,0.41413) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.58643,0.66008,-0.46946) + Old Polarization: (0.514,0.7512,0.41413) + New Momentum Direction: (-0.58643,0.66008,0.46946) + New Polarization: (-0.514,-0.7512,0.41413) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.58643,0.66008,0.46946) + Old Polarization: (-0.514,-0.7512,0.41413) + New Momentum Direction: (-0.58643,-0.66008,0.46946) + New Polarization: (0.514,-0.7512,-0.41413) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.58643,-0.66008,0.46946) + Old Polarization: (0.514,-0.7512,-0.41413) + New Momentum Direction: (0.58643,-0.66008,0.46946) + New Polarization: (0.514,0.7512,0.41413) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.58643,-0.66008,0.46946) + Old Polarization: (0.514,0.7512,0.41413) + New Momentum Direction: (0.58643,-0.66008,-0.46946) + New Polarization: (-0.514,-0.7512,0.41413) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1534, parentID 1) is processed with stopping code 2 +### pop requested out of 13 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.8992,-0.4285,-0.088403) + Old Polarization: (-0.13896,-0.4713,0.87096) + New Momentum Direction: (0.80344,-0.58311,-0.1203) + New Polarization: (-0.25047,-0.51432,0.82021) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1533, parentID 1) is processed with stopping code 2 +### pop requested out of 12 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.99123,-0.13185,0.0085351) + Old Polarization: (-0.024101,-0.11691,0.99285) + New Momentum Direction: (0.98383,-0.17872,0.011569) + New Polarization: (-0.043724,-0.17704,0.98323) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1532, parentID 1) is processed with stopping code 2 +### pop requested out of 11 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.58219,-0.65275,-0.48475) + Old Polarization: (-0.51956,-0.75727,0.39572) + New Momentum Direction: (0.58219,0.65275,-0.48475) + New Polarization: (0.51956,-0.75727,-0.39572) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.58219,0.65275,-0.48475) + Old Polarization: (0.51956,-0.75727,-0.39572) + New Momentum Direction: (-0.58219,0.65275,-0.48475) + New Polarization: (0.51956,0.75727,0.39572) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.58219,0.65275,-0.48475) + Old Polarization: (0.51956,0.75727,0.39572) + New Momentum Direction: (-0.58219,0.65275,0.48475) + New Polarization: (-0.51956,-0.75727,0.39572) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1531, parentID 1) is processed with stopping code 2 +### pop requested out of 10 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.70395,-0.63148,-0.32509) + Old Polarization: (-0.37249,-0.71796,0.58803) + New Momentum Direction: (-0.70395,-0.63148,-0.32509) + New Polarization: (-0.23681,0.64021,-0.73079) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.70395,-0.63148,-0.32509) + Old Polarization: (-0.23681,0.64021,-0.73079) + New Momentum Direction: (-0.70395,0.63148,-0.32509) + New Polarization: (0.23681,0.64021,0.73079) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.70395,0.63148,-0.32509) + Old Polarization: (0.23681,0.64021,0.73079) + New Momentum Direction: (-0.70395,0.63148,0.32509) + New Polarization: (-0.23681,-0.64021,0.73079) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.70395,0.63148,0.32509) + Old Polarization: (-0.23681,-0.64021,0.73079) + New Momentum Direction: (-0.26329,0.85773,0.44157) + New Polarization: (0.4661,-0.28765,0.83667) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1530, parentID 1) is processed with stopping code 2 +### pop requested out of 9 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.24554,-0.31149,-0.91798) + Old Polarization: (-0.93144,-0.33818,-0.13439) + New Momentum Direction: (0.33138,-0.42039,-0.84466) + New Polarization: (-0.47378,-0.84834,0.23635) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1529, parentID 1) is processed with stopping code 2 +### pop requested out of 8 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.2956,-0.44345,-0.84615) + Old Polarization: (-0.86737,-0.49578,-0.043189) + New Momentum Direction: (0.40015,-0.60029,-0.69248) + New Polarization: (-0.78349,-0.61606,0.081302) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1528, parentID 1) is processed with stopping code 2 +### pop requested out of 7 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.97562,0.21836,-0.02183) + Old Polarization: (-0.046878,0.30455,0.95134) + New Momentum Direction: (0.95441,0.29703,-0.029694) + New Polarization: (-0.085362,0.36689,0.92634) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1527, parentID 1) is processed with stopping code 2 +### pop requested out of 6 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1526, parentID 1) is processed with stopping code 2 +### pop requested out of 5 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.1983,-0.032938,-0.97959) + Old Polarization: (-0.9801,0.0029381,-0.1985) + New Momentum Direction: (0.26966,-0.044791,-0.96191) + New Polarization: (0.92341,-0.27129,0.2715) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1525, parentID 1) is processed with stopping code 2 +### pop requested out of 4 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.70949,-0.62692,-0.32185) + Old Polarization: (-0.36491,-0.71754,0.59327) + New Momentum Direction: (0.29815,-0.84915,-0.43594) + New Polarization: (-0.64899,-0.51525,0.55977) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1524, parentID 1) is processed with stopping code 2 +### pop requested out of 3 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.32268,-0.48799,-0.81101) + Old Polarization: (-0.83485,-0.55048,-0.000938) + New Momentum Direction: (0.43663,-0.6603,-0.61103) + New Polarization: (-0.83337,-0.55272,0.0017914) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1523, parentID 1) is processed with stopping code 2 +### pop requested out of 2 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73426,-0.61409,-0.28942) + Old Polarization: (-0.33556,-0.69891,0.63161) + New Momentum Direction: (0.38931,-0.83321,-0.39269) + New Polarization: (-0.59522,-0.55292,0.58309) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1522, parentID 1) is processed with stopping code 2 +### pop requested out of 1 stacked tracks. + + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 31 +Track (trackID 1, parentID 0) is processed with stopping code 4 +### pop requested out of 32 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.40714,0.33501,-0.84971) + Old Polarization: (-0.75993,0.64035,-0.11166) + New Momentum Direction: (0.54702,0.45011,-0.70581) + New Polarization: (-0.45253,0.86833,0.20302) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1597, parentID 1) is processed with stopping code 2 +### pop requested out of 31 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1596, parentID 1) is processed with stopping code 2 +### pop requested out of 30 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.45837,0.41526,-0.78578) + Old Polarization: (-0.68841,0.72509,-0.018385) + New Momentum Direction: (0.62253,0.56397,-0.54258) + New Polarization: (-0.65363,0.75597,0.035834) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1595, parentID 1) is processed with stopping code 2 +### pop requested out of 29 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.51814,0.46208,-0.71974) + Old Polarization: (-0.61427,0.78659,0.062792) + New Momentum Direction: (0.70252,0.62652,-0.33755) + New Polarization: (-0.62511,0.76996,0.1281) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1594, parentID 1) is processed with stopping code 2 +### pop requested out of 28 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.99964,-0.025234,0.0093036) + Old Polarization: (-0.0047112,0.17628,0.98433) + New Momentum Direction: (0.99934,-0.034065,0.012559) + New Polarization: (-0.0084798,0.11737,0.99305) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1593, parentID 1) is processed with stopping code 2 +### pop requested out of 27 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1592, parentID 1) is processed with stopping code 2 +### pop requested out of 26 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1591, parentID 1) is processed with stopping code 2 +### pop requested out of 25 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.5586,0.48893,-0.67001) + Old Polarization: (-0.56315,0.81663,0.12641) + New Momentum Direction: (0.5586,0.48893,0.67001) + New Polarization: (0.56315,-0.81663,0.12641) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.5586,0.48893,0.67001) + Old Polarization: (0.56315,-0.81663,0.12641) + New Momentum Direction: (-0.5586,0.48893,0.67001) + New Polarization: (0.56315,0.81663,-0.12641) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.5586,0.48893,0.67001) + Old Polarization: (0.56315,0.81663,-0.12641) + New Momentum Direction: (-0.5586,-0.48893,0.67001) + New Polarization: (-0.56315,0.81663,0.12641) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.5586,-0.48893,0.67001) + Old Polarization: (-0.56315,0.81663,0.12641) + New Momentum Direction: (-0.5586,-0.48893,-0.67001) + New Polarization: (0.56315,-0.81663,0.12641) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.5586,-0.48893,-0.67001) + Old Polarization: (0.56315,-0.81663,0.12641) + New Momentum Direction: (0.5586,-0.48893,-0.67001) + New Polarization: (0.56315,0.81663,-0.12641) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.5586,-0.48893,-0.67001) + Old Polarization: (0.56315,0.81663,-0.12641) + New Momentum Direction: (0.5586,0.48893,-0.67001) + New Polarization: (-0.56315,0.81663,0.12641) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.5586,0.48893,-0.67001) + Old Polarization: (-0.56315,0.81663,0.12641) + New Momentum Direction: (0.5586,0.48893,0.67001) + New Polarization: (0.56315,-0.81663,0.12641) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1590, parentID 1) is processed with stopping code 2 +### pop requested out of 24 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1589, parentID 1) is processed with stopping code 2 +### pop requested out of 23 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1588, parentID 1) is processed with stopping code 2 +### pop requested out of 22 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.6995,0.51988,-0.49034) + Old Polarization: (-0.38763,0.85245,0.35082) + New Momentum Direction: (0.2341,0.70726,-0.66707) + New Polarization: (-0.69527,0.60139,0.39363) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1587, parentID 1) is processed with stopping code 2 +### pop requested out of 21 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.34298,0.25833,-0.90312) + Old Polarization: (-0.83249,0.52895,-0.16486) + New Momentum Direction: (0.46585,0.35088,-0.81232) + New Polarization: (-0.19882,0.93605,0.2903) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1586, parentID 1) is processed with stopping code 2 +### pop requested out of 20 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.76277,-0.62527,-0.16497) + Old Polarization: (-0.30792,-0.57553,0.7576) + New Momentum Direction: (0.47888,-0.84883,-0.22396) + New Polarization: (-0.54331,-0.48696,0.68387) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1585, parentID 1) is processed with stopping code 2 +### pop requested out of 19 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.50959,-0.71062,-0.48512) + Old Polarization: (-0.62645,-0.69292,0.35697) + New Momentum Direction: (0.68809,-0.31216,-0.65505) + New Polarization: (0.14508,0.94369,-0.29731) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1584, parentID 1) is processed with stopping code 2 +### pop requested out of 18 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.275,-0.48087,-0.83255) + Old Polarization: (-0.91636,-0.39315,-0.075604) + New Momentum Direction: (0.37387,-0.65376,-0.65789) + New Polarization: (-0.78993,-0.59617,0.14351) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1583, parentID 1) is processed with stopping code 2 +### pop requested out of 17 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1582, parentID 1) is processed with stopping code 2 +### pop requested out of 16 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.72785,0.51515,-0.4526) + Old Polarization: (-0.35225,0.84717,0.39778) + New Momentum Direction: (0.36089,0.70062,-0.61554) + New Polarization: (-0.62485,0.67162,0.3981) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1581, parentID 1) is processed with stopping code 2 +### pop requested out of 15 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.5605,-0.72107,-0.40731) + Old Polarization: (-0.56063,-0.69237,0.45422) + New Momentum Direction: (0.76205,-0.33558,-0.55377) + New Polarization: (0.28605,0.94172,-0.17705) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1580, parentID 1) is processed with stopping code 2 +### pop requested out of 14 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.42601,-0.67935,-0.5975) + Old Polarization: (-0.73063,-0.64783,0.21564) + New Momentum Direction: (0.57689,-0.112,-0.80911) + New Polarization: (-0.18364,0.94742,-0.26207) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1579, parentID 1) is processed with stopping code 2 +### pop requested out of 13 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.49937,-0.70445,-0.50436) + Old Polarization: (-0.6408,-0.6921,0.33221) + New Momentum Direction: (0.67195,-0.29646,-0.67867) + New Polarization: (0.10103,0.94451,-0.31256) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1578, parentID 1) is processed with stopping code 2 +### pop requested out of 12 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.92673,-0.37567,-0.0061002) + Old Polarization: (-0.10109,-0.26495,0.95895) + New Momentum Direction: (0.86067,-0.50909,-0.0082666) + New Polarization: (-0.18203,-0.32283,0.92879) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1577, parentID 1) is processed with stopping code 2 +### pop requested out of 11 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1576, parentID 1) is processed with stopping code 2 +### pop requested out of 10 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.51115,0.46174,-0.72493) + Old Polarization: (-0.62204,0.78078,0.058722) + New Momentum Direction: (0.51115,0.46174,0.72493) + New Polarization: (0.64984,-0.75964,0.025652) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.51115,0.46174,0.72493) + Old Polarization: (0.64984,-0.75964,0.025652) + New Momentum Direction: (-0.51115,0.46174,0.72493) + New Polarization: (0.64984,0.75964,-0.025652) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.51115,0.46174,0.72493) + Old Polarization: (0.64984,0.75964,-0.025652) + New Momentum Direction: (-0.51115,-0.46174,0.72493) + New Polarization: (-0.64984,0.75964,0.025652) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.51115,-0.46174,0.72493) + Old Polarization: (-0.64984,0.75964,0.025652) + New Momentum Direction: (-0.69513,-0.62794,0.34999) + New Polarization: (-0.68389,0.72768,-0.052725) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1575, parentID 1) is processed with stopping code 2 +### pop requested out of 9 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.61238,-0.71242,-0.3427) + Old Polarization: (-0.496,-0.68379,0.53517) + New Momentum Direction: (0.61238,0.71242,-0.3427) + New Polarization: (-0.76742,0.63982,-0.041239) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.61238,0.71242,-0.3427) + Old Polarization: (-0.76742,0.63982,-0.041239) + New Momentum Direction: (-0.61238,0.71242,-0.3427) + New Polarization: (-0.76742,-0.63982,0.041239) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1574, parentID 1) is processed with stopping code 2 +### pop requested out of 8 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.23445,-0.26099,-0.93644) + Old Polarization: (-0.97037,-0.12067,-0.20932) + New Momentum Direction: (0.31784,-0.35382,-0.87965) + New Polarization: (-0.10222,-0.93514,0.3392) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1573, parentID 1) is processed with stopping code 2 +### pop requested out of 7 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.50859,0.45781,-0.72921) + Old Polarization: (-0.62568,0.77832,0.05226) + New Momentum Direction: (0.6907,0.62174,-0.36928) + New Polarization: (-0.63332,0.76658,0.10609) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1572, parentID 1) is processed with stopping code 2 +### pop requested out of 6 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.78267,0.49483,-0.37758) + Old Polarization: (-0.28356,0.82347,0.49141) + New Momentum Direction: (0.53349,0.67241,-0.51308) + New Polarization: (-0.50164,0.73995,0.44813) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1571, parentID 1) is processed with stopping code 2 +### pop requested out of 5 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.94787,0.29601,-0.11798) + Old Polarization: (-0.078079,0.5747,0.81463) + New Momentum Direction: (0.90127,0.40247,-0.16041) + New Polarization: (-0.14177,0.62381,0.76861) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1570, parentID 1) is processed with stopping code 2 +### pop requested out of 4 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.25011,0.0027121,-0.96821) + Old Polarization: (-0.94693,0.20924,-0.24402) + New Momentum Direction: (0.34016,0.0036887,-0.94036) + New Polarization: (0.92605,0.17255,0.33566) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1569, parentID 1) is processed with stopping code 2 +### pop requested out of 3 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.63792,-0.69974,-0.32158) + Old Polarization: (-0.4636,-0.68238,0.56518) + New Momentum Direction: (0.85997,-0.26929,-0.43352) + New Polarization: (0.32462,0.94409,0.057522) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1568, parentID 1) is processed with stopping code 2 +### pop requested out of 2 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.53138,-0.72113,-0.44453) + Old Polarization: (-0.59673,-0.6911,0.40779) + New Momentum Direction: (0.53138,0.72113,-0.44453) + New Polarization: (-0.4501,0.68489,0.57301) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.53138,0.72113,-0.44453) + Old Polarization: (-0.4501,0.68489,0.57301) + New Momentum Direction: (-0.53138,0.72113,-0.44453) + New Polarization: (-0.4501,-0.68489,-0.57301) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.53138,0.72113,-0.44453) + Old Polarization: (-0.4501,-0.68489,-0.57301) + New Momentum Direction: (-0.53138,0.72113,0.44453) + New Polarization: (0.4501,0.68489,-0.57301) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1567, parentID 1) is processed with stopping code 2 +### pop requested out of 1 stacked tracks. + + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 30 +Track (trackID 1, parentID 0) is processed with stopping code 4 +### pop requested out of 31 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.082509,-0.86679,-0.4918) + Old Polarization: (-0.99495,-0.043305,-0.090596) + New Momentum Direction: (0.11174,-0.73751,-0.66603) + New Polarization: (-0.96443,0.081091,-0.25159) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1627, parentID 1) is processed with stopping code 2 +### pop requested out of 30 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1626, parentID 1) is processed with stopping code 2 +### pop requested out of 29 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.80652,-0.52909,0.26378) + Old Polarization: (-0.034013,0.40391,0.91417) + New Momentum Direction: (0.60142,-0.715,0.35646) + New Polarization: (-0.064773,0.40106,0.91376) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1625, parentID 1) is processed with stopping code 2 +### pop requested out of 28 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1624, parentID 1) is processed with stopping code 2 +### pop requested out of 27 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.96254,-0.26524,0.056286) + Old Polarization: (0.17043,0.7533,0.63521) + New Momentum Direction: (0.93014,-0.3592,0.076226) + New Polarization: (-0.27172,-0.53367,0.80085) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1623, parentID 1) is processed with stopping code 2 +### pop requested out of 26 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.97906,-0.19014,-0.072721) + Old Polarization: (0.20184,0.86005,0.46859) + New Momentum Direction: (0.9617,-0.25603,-0.097919) + New Polarization: (-0.27282,-0.92866,-0.25132) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1622, parentID 1) is processed with stopping code 2 +### pop requested out of 25 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.4507,-0.3298,-0.82952) + Old Polarization: (-0.508,0.66935,-0.54213) + New Momentum Direction: (0.60908,-0.4457,-0.65603) + New Polarization: (0.62415,-0.24099,0.74321) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1621, parentID 1) is processed with stopping code 2 +### pop requested out of 24 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.097951,-0.78689,-0.60928) +Old Polarization: (-0.96821,0.066242,-0.24121) +New Polarization: (-0.72288,0.21587,0.4452) +Polarization Change: (-0.82521,0.24643,0.50823) +New Momentum Direction: (-0.49324,-0.16898,-0.71895) +Momentum Change: (-0.55539,-0.19027,-0.80953) + +** Photon Absorbed! ** +Track (trackID 1620, parentID 1) is processed with stopping code 2 +### pop requested out of 23 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.25329,-0.53425,-0.80649) + Old Polarization: (-0.76705,0.39708,-0.50395) + New Momentum Direction: (0.34362,-0.72477,-0.59719) + New Polarization: (-0.12376,-0.66531,0.73623) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1619, parentID 1) is processed with stopping code 2 +### pop requested out of 22 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1618, parentID 1) is processed with stopping code 2 +### pop requested out of 21 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1617, parentID 1) is processed with stopping code 2 +### pop requested out of 20 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.12564,-0.97476,-0.18455) + Old Polarization: (-0.9319,-0.17976,0.31504) + New Momentum Direction: (0.17084,-0.9528,-0.25096) + New Polarization: (0.079161,0.26715,-0.9604) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1616, parentID 1) is processed with stopping code 2 +### pop requested out of 19 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.25579,-0.96623,0.031137) + Old Polarization: (-0.77166,-0.18467,0.60864) + New Momentum Direction: (0.34434,-0.93791,0.041915) + New Polarization: (0.68507,0.28154,0.67188) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1615, parentID 1) is processed with stopping code 2 +### pop requested out of 18 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.26005,-0.52557,-0.81003) + Old Polarization: (-0.75804,0.40852,-0.50841) + New Momentum Direction: (0.35282,-0.71307,-0.60585) + New Polarization: (-0.087796,-0.66986,0.73728) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1614, parentID 1) is processed with stopping code 2 +### pop requested out of 17 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.88999,-0.40746,0.20466) + Old Polarization: (0.068284,0.56289,0.82371) + New Momentum Direction: (0.78427,-0.55441,0.27847) + New Polarization: (-0.12756,0.29516,0.94689) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1613, parentID 1) is processed with stopping code 2 +### pop requested out of 16 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.98176,-0.16882,-0.087443) + Old Polarization: (0.19011,0.87636,0.44255) + New Momentum Direction: (0.96604,-0.22944,-0.11884) + New Polarization: (-0.25838,-0.85437,-0.45088) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1612, parentID 1) is processed with stopping code 2 +### pop requested out of 15 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.26809,-0.96107,0.066829) + Old Polarization: (-0.74622,-0.16328,0.64537) + New Momentum Direction: (0.36421,-0.92688,0.090788) + New Polarization: (0.46521,0.26551,0.84444) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1611, parentID 1) is processed with stopping code 2 +### pop requested out of 14 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1610, parentID 1) is processed with stopping code 2 +### pop requested out of 13 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.75192,-0.11249,-0.64959) + Old Polarization: (-0.11182,0.9493,-0.29382) + New Momentum Direction: (0.44297,-0.15298,-0.88339) + New Polarization: (-0.22011,0.93662,-0.27257) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1609, parentID 1) is processed with stopping code 2 +### pop requested out of 12 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.98069,-0.16418,-0.10624) + Old Polarization: (0.19392,0.88667,0.41978) + New Momentum Direction: (0.96427,-0.22242,-0.14393) + New Polarization: (-0.26372,-0.75394,-0.60169) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1608, parentID 1) is processed with stopping code 2 +### pop requested out of 11 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1607, parentID 1) is processed with stopping code 2 +### pop requested out of 10 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.091138,-0.94483,-0.31463) + Old Polarization: (-0.97919,-0.14256,0.14447) + New Momentum Direction: (0.12376,-0.89562,-0.42726) + New Polarization: (-0.66348,0.24549,-0.70678) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1606, parentID 1) is processed with stopping code 2 +### pop requested out of 9 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1605, parentID 1) is processed with stopping code 2 +### pop requested out of 8 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.79705,-0.10038,-0.59551) + Old Polarization: (-0.048254,0.97235,-0.22849) + New Momentum Direction: (0.57598,-0.13588,-0.80609) + New Polarization: (-0.0925,0.96892,-0.22942) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1604, parentID 1) is processed with stopping code 2 +### pop requested out of 7 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.72899,-0.12713,-0.67261) +Old Polarization: (-0.1398,0.93424,-0.3281) +New Polarization: (-0.10685,0.85271,-0.40838) +Polarization Change: (-0.11229,0.8962,-0.42921) +New Momentum Direction: (0.41473,-0.33033,-0.79824) +Momentum Change: (0.43279,-0.34471,-0.83299) + Photon at Boundary! + Old Momentum Direction: (0.43279,-0.34471,-0.83299) + Old Polarization: (-0.11229,0.8962,-0.42921) + New Momentum Direction: (0.58688,-0.46745,-0.66111) + New Polarization: (0.75978,0.035745,0.6492) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1603, parentID 1) is processed with stopping code 2 +### pop requested out of 6 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.29506,-0.49315,-0.81838) + Old Polarization: (-0.71685,0.45203,-0.53085) + New Momentum Direction: (0.39805,-0.66529,-0.63162) + New Polarization: (0.067517,-0.6654,0.74343) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1602, parentID 1) is processed with stopping code 2 +### pop requested out of 5 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.69237,-0.14314,-0.7072) + Old Polarization: (-0.18961,0.90959,-0.36973) + New Momentum Direction: (0.94128,-0.1946,-0.2759) + New Polarization: (0.33298,0.67015,0.66334) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1601, parentID 1) is processed with stopping code 2 +### pop requested out of 4 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.29727,-0.94965,0.098947) + Old Polarization: (-0.70892,-0.15011,0.68913) + New Momentum Direction: (0.40336,-0.90514,0.13426) + New Polarization: (0.26042,0.25421,0.93143) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1600, parentID 1) is processed with stopping code 2 +### pop requested out of 3 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.57913,-0.23177,-0.7816) + Old Polarization: (-0.33608,0.8056,-0.48791) + New Momentum Direction: (0.77873,-0.31166,-0.54447) + New Polarization: (0.62271,0.27853,0.7312) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1599, parentID 1) is processed with stopping code 2 +### pop requested out of 2 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.97573,-0.12957,-0.17656) + Old Polarization: (0.18213,0.92778,0.32567) + New Momentum Direction: (0.95468,-0.1761,-0.23997) + New Polarization: (-0.26732,-0.15271,-0.95143) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1598, parentID 1) is processed with stopping code 2 +### pop requested out of 1 stacked tracks. + + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 19 +Track (trackID 1, parentID 0) is processed with stopping code 4 +### pop requested out of 20 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.9408,-0.30631,0.14518) + Old Polarization: (0.065437,0.58435,0.80886) + New Momentum Direction: (0.88813,-0.4153,0.19684) + New Polarization: (-0.11942,0.20504,0.97144) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1646, parentID 1) is processed with stopping code 2 +### pop requested out of 19 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.89624,-0.017867,-0.4432) + Old Polarization: (0.003248,0.99943,-0.033723) + New Momentum Direction: (0.7995,-0.024196,-0.60018) + New Polarization: (-0.0060592,0.99881,-0.048337) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1645, parentID 1) is processed with stopping code 2 +### pop requested out of 18 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.99087,-0.11927,-0.062917) + Old Polarization: (0.13465,0.84969,0.5098) + New Momentum Direction: (0.9831,-0.16194,-0.085425) + New Polarization: (-0.18294,-0.88754,-0.42285) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1644, parentID 1) is processed with stopping code 2 +### pop requested out of 17 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1643, parentID 1) is processed with stopping code 2 +### pop requested out of 16 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.38229,-0.924,0.0085943) + Old Polarization: (-0.73262,-0.29741,0.61222) + New Momentum Direction: (0.51882,-0.8548,0.011664) + New Polarization: (0.72513,0.44726,0.52359) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1642, parentID 1) is processed with stopping code 2 +### pop requested out of 15 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.70621,-0.66591,0.24049) + Old Polarization: (-0.26695,0.064168,0.96157) + New Momentum Direction: (0.30221,-0.89656,0.3238) + New Polarization: (-0.50055,0.13983,0.85434) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1641, parentID 1) is processed with stopping code 2 +### pop requested out of 14 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.57091,-0.79858,0.19063) + Old Polarization: (-0.46395,-0.12224,0.87738) + New Momentum Direction: (0.77273,-0.57992,0.25802) + New Polarization: (-0.14844,0.23012,0.96177) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1640, parentID 1) is processed with stopping code 2 +### pop requested out of 13 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.78685,-0.051992,-0.61496) + Old Polarization: (-0.15492,0.9479,-0.27837) + New Momentum Direction: (0.54741,-0.070502,-0.83389) + New Polarization: (-0.29128,0.91809,-0.26883) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1639, parentID 1) is processed with stopping code 2 +### pop requested out of 12 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.67992,-0.13491,-0.72077) + Old Polarization: (-0.30508,0.84177,-0.44536) + New Momentum Direction: (0.91464,-0.18149,-0.36125) + New Polarization: (0.39811,0.55979,0.72674) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1638, parentID 1) is processed with stopping code 2 +### pop requested out of 11 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.31772,-0.94259,-0.10288) + Old Polarization: (-0.8276,-0.32863,0.45506) + New Momentum Direction: (0.43019,-0.89192,-0.13929) + New Polarization: (0.88166,0.44827,-0.14742) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1637, parentID 1) is processed with stopping code 2 +### pop requested out of 10 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.98009,-0.058438,-0.18977) + Old Polarization: (0.11959,0.93667,0.32918) + New Momentum Direction: (0.96298,-0.07933,-0.25762) + New Polarization: (-0.19311,0.46375,-0.86466) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1636, parentID 1) is processed with stopping code 2 +### pop requested out of 9 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.23628,-0.73414,-0.63656) + Old Polarization: (-0.94845,-0.031854,-0.31531) + New Momentum Direction: (0.23628,0.73414,-0.63656) + New Polarization: (0.93304,0.011504,0.35959) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.23628,0.73414,-0.63656) + Old Polarization: (0.93304,0.011504,0.35959) + New Momentum Direction: (0.23628,0.73414,0.63656) + New Polarization: (-0.93304,-0.011504,0.35959) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.23628,0.73414,0.63656) + Old Polarization: (-0.93304,-0.011504,0.35959) + New Momentum Direction: (0.31916,0.39847,0.85986) + New Polarization: (-0.93374,-0.022929,0.35721) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1635, parentID 1) is processed with stopping code 2 +### pop requested out of 8 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1634, parentID 1) is processed with stopping code 2 +### pop requested out of 7 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1633, parentID 1) is processed with stopping code 2 +### pop requested out of 6 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.96892,-0.23273,0.08389) + Old Polarization: (0.103,0.68782,0.71853) + New Momentum Direction: (0.94187,-0.31607,0.11393) + New Polarization: (-0.17798,-0.18178,0.9671) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1632, parentID 1) is processed with stopping code 2 +### pop requested out of 5 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.97812,-0.20263,0.04714) + Old Polarization: (0.11965,0.73327,0.66932) + New Momentum Direction: (0.95943,-0.2746,0.063881) + New Polarization: (-0.19477,-0.48175,0.85439) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1631, parentID 1) is processed with stopping code 2 +### pop requested out of 4 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.50405,-0.28842,-0.81409) +Old Polarization: (-0.55912,0.60945,-0.5621) +New Polarization: (-0.79226,0.11127,-0.33187) +Polarization Change: (-0.9147,0.12847,-0.38316) +New Momentum Direction: (-0.34818,-0.13116,0.78721) +Momentum Change: (-0.39988,-0.15064,0.9041) +Scattering Photon! +Old Momentum Direction: (-0.39988,-0.15064,0.9041) +Old Polarization: (-0.9147,0.12847,-0.38316) +New Polarization: (-0.45419,0.41347,-0.61057) +Polarization Change: (-0.52444,0.47742,-0.705) +New Momentum Direction: (-0.21587,-0.82864,-0.40056) +Momentum Change: (-0.22835,-0.87654,-0.42372) + Photon at Boundary! + Old Momentum Direction: (-0.22835,-0.87654,-0.42372) + Old Polarization: (-0.52444,0.47742,-0.705) + New Momentum Direction: (-0.30979,-0.75737,-0.57482) + New Polarization: (-0.43884,0.65021,-0.6202) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1630, parentID 1) is processed with stopping code 2 +### pop requested out of 3 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.44013,-0.37313,-0.81674) + Old Polarization: (-0.65358,0.49059,-0.57633) + New Momentum Direction: (0.59444,-0.50396,-0.62664) + New Polarization: (0.45538,-0.4313,0.77885) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1629, parentID 1) is processed with stopping code 2 +### pop requested out of 2 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.4656,-0.87862,0.10605) + Old Polarization: (-0.61448,-0.23472,0.7532) + New Momentum Direction: (0.63115,-0.76222,0.14375) + New Polarization: (0.28273,0.39865,0.87243) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1628, parentID 1) is processed with stopping code 2 +### pop requested out of 1 stacked tracks. + + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 16 +Track (trackID 1, parentID 0) is processed with stopping code 4 +### pop requested out of 17 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.95192,0.024172,-0.30539) +Old Polarization: (-0.14916,0.90731,-0.39312) +New Polarization: (0.06626,0.36848,-0.78707) +Polarization Change: (0.076023,0.42277,-0.90304) +New Momentum Direction: (0.40211,0.69715,0.36023) +Momentum Change: (0.45604,0.79065,0.40854) + Photon at Boundary! + Old Momentum Direction: (0.45604,0.79065,0.40854) + Old Polarization: (0.076023,0.42277,-0.90304) + New Momentum Direction: (-0.45604,0.79065,0.40854) + New Polarization: (0.076023,-0.42277,0.90304) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.45604,0.79065,0.40854) + Old Polarization: (0.076023,-0.42277,0.90304) + New Momentum Direction: (-0.62011,0.55394,0.55553) + New Polarization: (0.060237,-0.6724,0.73773) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1662, parentID 1) is processed with stopping code 2 +### pop requested out of 16 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.72263,-0.51319,0.46308) + Old Polarization: (-0.51469,0.047716,0.85605) + New Momentum Direction: (0.36656,-0.69074,0.6233) + New Polarization: (-0.79613,0.11381,0.59433) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1661, parentID 1) is processed with stopping code 2 +### pop requested out of 15 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.83736,-0.28343,0.46744) + Old Polarization: (-0.32886,0.42189,0.84491) + New Momentum Direction: (0.67232,-0.38381,0.63299) + New Polarization: (-0.537,0.3357,0.77391) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1660, parentID 1) is processed with stopping code 2 +### pop requested out of 14 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.59248,-0.64743,-0.47937) + Old Polarization: (-0.72109,-0.16093,-0.67389) + New Momentum Direction: (0.59248,0.64743,-0.47937) + New Polarization: (0.72109,-0.16093,0.67389) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.59248,0.64743,-0.47937) + Old Polarization: (0.72109,-0.16093,0.67389) + New Momentum Direction: (-0.59248,0.64743,-0.47937) + New Polarization: (0.72109,0.16093,-0.67389) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.59248,0.64743,-0.47937) + Old Polarization: (0.72109,0.16093,-0.67389) + New Momentum Direction: (-0.59248,0.64743,0.47937) + New Polarization: (-0.72109,-0.16093,-0.67389) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1659, parentID 1) is processed with stopping code 2 +### pop requested out of 13 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.99097,0.070674,-0.11395) + Old Polarization: (-0.081272,0.99251,-0.091208) + New Momentum Direction: (0.98338,0.095686,-0.15428) + New Polarization: (-0.13043,0.9635,-0.2338) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1658, parentID 1) is processed with stopping code 2 +### pop requested out of 12 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.59998,-0.71966,0.34947) + Old Polarization: (-0.70884,-0.27567,0.64927) + New Momentum Direction: (0.59998,0.71966,0.34947) + New Polarization: (0.37138,0.13636,-0.91841) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.59998,0.71966,0.34947) + Old Polarization: (0.37138,0.13636,-0.91841) + New Momentum Direction: (-0.59998,0.71966,0.34947) + New Polarization: (0.37138,-0.13636,0.91841) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.59998,0.71966,0.34947) + Old Polarization: (0.37138,-0.13636,0.91841) + New Momentum Direction: (-0.59998,0.71966,-0.34947) + New Polarization: (-0.37138,0.13636,0.91841) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.59998,0.71966,-0.34947) + Old Polarization: (-0.37138,0.13636,0.91841) + New Momentum Direction: (-0.81454,0.33382,-0.47444) + New Polarization: (-0.56544,-0.2741,0.77791) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1657, parentID 1) is processed with stopping code 2 +### pop requested out of 11 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.99414,0.071765,-0.080798) + Old Polarization: (-0.075019,0.99646,-0.037977) + New Momentum Direction: (0.98926,0.097084,-0.1093) + New Polarization: (-0.11606,0.97616,-0.18339) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1656, parentID 1) is processed with stopping code 2 +### pop requested out of 10 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.90286,-0.070359,-0.42414) + Old Polarization: (-0.22065,0.77087,-0.59756) + New Momentum Direction: (0.81434,-0.094979,-0.57256) + New Polarization: (-0.36792,0.67848,-0.63584) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1655, parentID 1) is processed with stopping code 2 +### pop requested out of 9 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.61582,-0.70253,0.35667) + Old Polarization: (-0.68893,-0.26048,0.67641) + New Momentum Direction: (0.83043,-0.28117,0.48097) + New Polarization: (-0.30377,0.49518,0.81395) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1654, parentID 1) is processed with stopping code 2 +### pop requested out of 8 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.50174,-0.85947,-0.09784) + Old Polarization: (-0.86499,-0.49766,-0.064231) + New Momentum Direction: (0.68145,-0.7197,-0.13288) + New Polarization: (0.66483,0.68466,-0.29874) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1653, parentID 1) is processed with stopping code 2 +### pop requested out of 7 stacked tracks. + +** Photon Absorbed! ** +Track (trackID 1652, parentID 1) is processed with stopping code 2 +### pop requested out of 6 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.67344,-0.58672,0.4497) + Old Polarization: (-0.59089,-0.061692,0.80439) + New Momentum Direction: (-0.67344,-0.58672,0.4497) + New Polarization: (-0.59089,0.061692,-0.80439) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.67344,-0.58672,0.4497) + Old Polarization: (-0.59089,0.061692,-0.80439) + New Momentum Direction: (-0.67344,0.58672,0.4497) + New Polarization: (0.59089,0.061692,0.80439) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.67344,0.58672,0.4497) + Old Polarization: (0.59089,0.061692,0.80439) + New Momentum Direction: (-0.67344,0.58672,-0.4497) + New Polarization: (-0.59089,-0.061692,0.80439) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.67344,0.58672,-0.4497) + Old Polarization: (-0.59089,-0.061692,0.80439) + New Momentum Direction: (0.67344,0.58672,-0.4497) + New Polarization: (-0.59089,0.061692,-0.80439) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.67344,0.58672,-0.4497) + Old Polarization: (-0.59089,0.061692,-0.80439) + New Momentum Direction: (0.67344,-0.58672,-0.4497) + New Polarization: (0.59089,0.061692,0.80439) + *** TotalInternalReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1651, parentID 1) is processed with stopping code 2 +### pop requested out of 5 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.69256,-0.46692,-0.54986) + Old Polarization: (-0.56479,0.1232,-0.81598) + New Momentum Direction: (-0.69256,-0.46692,-0.54986) + New Polarization: (-0.43893,-0.33214,0.83488) + *** FresnelReflection *** +No Absorbtion length specified + +** Photon Absorbed! ** +Track (trackID 1650, parentID 1) is processed with stopping code 2 +### pop requested out of 4 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.73767,-0.36079,-0.57067) + Old Polarization: (-0.48918,0.29695,-0.82007) + New Momentum Direction: (0.40074,-0.48959,-0.77441) + New Polarization: (-0.77139,0.27575,-0.57351) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1649, parentID 1) is processed with stopping code 2 +### pop requested out of 3 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.94359,0.0078744,-0.33103) + Old Polarization: (-0.16054,0.88524,-0.43654) + New Momentum Direction: (0.89328,0.010689,-0.44937) + New Polarization: (-0.2717,0.80925,-0.52086) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1648, parentID 1) is processed with stopping code 2 +### pop requested out of 2 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.94704,0.010109,-0.32095) + Old Polarization: (-0.153,0.89296,-0.42334) + New Momentum Direction: (0.90037,0.013698,-0.4349) + New Polarization: (-0.25882,0.82031,-0.51) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1647, parentID 1) is processed with stopping code 2 +### pop requested out of 1 stacked tracks. + + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 5 +Track (trackID 1, parentID 0) is processed with stopping code 4 +### pop requested out of 6 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.58503,-0.78492,-0.20407) + Old Polarization: (-0.79625,-0.50812,-0.32831) + New Momentum Direction: (0.58503,0.78492,-0.20407) + New Polarization: (0.22182,0.087174,0.97118) + *** FresnelReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (0.58503,0.78492,-0.20407) + Old Polarization: (0.22182,0.087174,0.97118) + New Momentum Direction: (-0.58503,0.78492,-0.20407) + New Polarization: (0.22182,-0.087174,-0.97118) + *** TotalInternalReflection *** +No Absorbtion length specified + Photon at Boundary! + Old Momentum Direction: (-0.58503,0.78492,-0.20407) + Old Polarization: (0.22182,-0.087174,-0.97118) + New Momentum Direction: (-0.79276,0.54319,-0.27654) + New Polarization: (0.22051,-0.16738,-0.96092) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1667, parentID 1) is processed with stopping code 2 +### pop requested out of 5 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.62759,-0.72356,0.28739) + Old Polarization: (-0.71087,-0.38203,0.59053) + New Momentum Direction: (0.85362,-0.3443,0.39089) + New Polarization: (-0.071138,0.66633,0.74226) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1666, parentID 1) is processed with stopping code 2 +### pop requested out of 4 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.77243,-0.4524,0.44574) +Old Polarization: (-0.44186,0.12134,0.88884) +New Polarization: (-0.12622,-0.48674,0.71257) +Polarization Change: (-0.14473,-0.55811,0.81705) +New Momentum Direction: (0.98419,-0.10763,0.10081) +Momentum Change: (0.98896,-0.10815,0.1013) + Photon at Boundary! + Old Momentum Direction: (0.98896,-0.10815,0.1013) + Old Polarization: (-0.14473,-0.55811,0.81705) + New Momentum Direction: (0.97952,-0.14695,0.13764) + New Polarization: (-0.19876,-0.59667,0.77748) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1665, parentID 1) is processed with stopping code 2 +### pop requested out of 3 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.57399,-0.81778,0.042122) + Old Polarization: (-0.81418,-0.56446,0.13599) + New Momentum Direction: (0.77906,-0.62434,0.057171) + New Polarization: (0.60637,0.77353,0.1843) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1664, parentID 1) is processed with stopping code 2 +### pop requested out of 2 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.58214,-0.80656,0.10285) + Old Polarization: (-0.79988,-0.54537,0.25051) + New Momentum Direction: (0.78967,-0.59746,0.13952) + New Polarization: (0.51516,0.76919,0.37811) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1663, parentID 1) is processed with stopping code 2 +### pop requested out of 1 stacked tracks. + + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 5 +Track (trackID 1, parentID 0) is processed with stopping code 4 +### pop requested out of 6 stacked tracks. + +** Photon Absorbed! ** Track (trackID 1672, parentID 1) is processed with stopping code 2 -### pop requested out of 61 stacked tracks. +### pop requested out of 5 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.601333,-0.476652,0.641249) - Old Polarization: (0.232339,-0.872201,-0.430446) - New Momentum Direction: (-0.601333,-0.476652,-0.641249) - New Polarization: (-0.232339,0.872201,-0.430446) - *** TotalInternalReflection *** + Old Momentum Direction: (0.15443,-0.75656,-0.63543) + Old Polarization: (-0.97416,-0.22389,0.029827) + New Momentum Direction: (0.15443,0.75656,-0.63543) + New Polarization: (0.95214,0.057755,0.30016) + *** FresnelReflection *** No Absorbtion length specified Photon at Boundary! - Old Momentum Direction: (-0.601333,-0.476652,-0.641249) - Old Polarization: (-0.232339,0.872201,-0.430446) - New Momentum Direction: (0.601333,-0.476652,-0.641249) - New Polarization: (-0.232339,-0.872201,0.430446) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.601333,-0.476652,-0.641249) - Old Polarization: (-0.232339,-0.872201,0.430446) - New Momentum Direction: (0.601333,0.476652,-0.641249) - New Polarization: (0.232339,-0.872201,-0.430446) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.601333,0.476652,-0.641249) - Old Polarization: (0.232339,-0.872201,-0.430446) - New Momentum Direction: (0.601333,0.476652,0.641249) - New Polarization: (-0.232339,0.872201,-0.430446) + Old Momentum Direction: (0.15443,0.75656,-0.63543) + Old Polarization: (0.95214,0.057755,0.30016) + New Momentum Direction: (0.15443,0.75656,0.63543) + New Polarization: (-0.95214,-0.057755,0.30016) *** TotalInternalReflection *** No Absorbtion length specified ** Photon Absorbed! ** Track (trackID 1671, parentID 1) is processed with stopping code 2 -### pop requested out of 60 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.0410356,0.43902,0.897539) -Old Polarization: (0.97324,0.185713,-0.135336) -New Polarization: (0.791501,0.0113626,-0.395746) -Polarization Change: (0.894356,0.0128392,-0.447172) -New Momentum Direction: (-0.382847,0.284684,-1.01961) -Momentum Change: (-0.340095,0.252894,-0.905749) -Scattering Photon! -Old Momentum Direction: (-0.340095,0.252894,-0.905749) -Old Polarization: (0.894356,0.0128392,-0.447172) -New Polarization: (0.770079,-0.276531,-0.353749) -Polarization Change: (0.863879,-0.310214,-0.396838) -New Momentum Direction: (-0.322341,0.148556,-1.06871) -Momentum Change: (-0.286244,0.13192,-0.949032) - -** Photon Absorbed! ** -Track (trackID 1670, parentID 1) is processed with stopping code 2 -### pop requested out of 59 stacked tracks. +### pop requested out of 4 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.0280875,0.586231,0.809657) - Old Polarization: (0.902097,0.363793,-0.23211) - New Momentum Direction: (-0.0379357,0.791779,0.609628) - New Polarization: (0.838907,0.35671,-0.411088) + Old Momentum Direction: (0.26169,-0.5309,-0.80602) + Old Polarization: (-0.61505,0.55186,-0.56317) + New Momentum Direction: (0.35376,-0.7177,-0.5998) + New Polarization: (0.058338,-0.62309,0.77997) + *** FresnelRefraction *** +No Absorbtion length specified +Track (trackID 1670, parentID 1) is processed with stopping code 2 +### pop requested out of 3 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.49984,-0.42377,-0.75537) + Old Polarization: (0.20197,0.90511,-0.37414) + New Momentum Direction: (0.67701,-0.57399,-0.46064) + New Polarization: (0.70433,0.32376,0.63174) *** FresnelRefraction *** No Absorbtion length specified Track (trackID 1669, parentID 1) is processed with stopping code 2 -### pop requested out of 58 stacked tracks. - -** Photon Absorbed! ** +### pop requested out of 2 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.488,-0.79507,-0.36017) +Old Polarization: (0.15119,-0.3294,0.93201) +New Polarization: (0.15872,-0.85973,0.21296) +Polarization Change: (0.17639,-0.95544,0.23667) +New Momentum Direction: (0.96387,0.21331,0.14277) +Momentum Change: (0.96632,0.21386,0.14314) + Photon at Boundary! + Old Momentum Direction: (0.96632,0.21386,0.14314) + Old Polarization: (0.17639,-0.95544,0.23667) + New Momentum Direction: (0.93687,0.2906,0.1945) + New Polarization: (-0.27599,0.27292,0.9216) + *** FresnelRefraction *** +No Absorbtion length specified Track (trackID 1668, parentID 1) is processed with stopping code 2 -### pop requested out of 57 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0217436,0.498906,0.866384) - Old Polarization: (0.951675,0.255202,-0.170842) - New Momentum Direction: (0.0295649,0.678365,0.73413) - New Polarization: (0.9053,0.293182,-0.30737) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1667, parentID 1) is processed with stopping code 2 -### pop requested out of 56 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.35363,-0.435069,0.828046) - Old Polarization: (0.519447,-0.827539,-0.212964) - New Momentum Direction: (-0.479323,-0.589708,0.649995) - New Polarization: (0.467136,-0.798418,-0.379886) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1666, parentID 1) is processed with stopping code 2 -### pop requested out of 55 stacked tracks. -Scattering Photon! -Old Momentum Direction: (-0.701921,0.665372,0.254137) -Old Polarization: (0.112535,0.455928,-0.882873) -New Polarization: (0.145216,0.343699,-0.87606) -Polarization Change: (0.152505,0.36095,-0.920031) -New Momentum Direction: (0.73036,0.533274,0.551631) -Momentum Change: (0.689479,0.503424,0.520753) - Photon at Boundary! - Old Momentum Direction: (0.689479,0.503424,0.520753) - Old Polarization: (0.152505,0.36095,-0.920031) - New Momentum Direction: (0.689479,-0.503424,0.520753) - New Polarization: (-0.152505,0.36095,0.920031) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1665, parentID 1) is processed with stopping code 2 -### pop requested out of 54 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.971196,0.156481,0.179697) - Old Polarization: (-0.201905,-0.139947,-0.969355) - New Momentum Direction: (-0.946682,0.211573,0.242961) - New Polarization: (0.292492,0.880583,0.372856) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1664, parentID 1) is processed with stopping code 2 -### pop requested out of 53 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.582952,-0.476476,0.658132) - Old Polarization: (0.252791,-0.876162,-0.410411) - New Momentum Direction: (-0.582952,-0.476476,-0.658132) - New Polarization: (-0.252791,0.876162,-0.410411) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.582952,-0.476476,-0.658132) - Old Polarization: (-0.252791,0.876162,-0.410411) - New Momentum Direction: (0.582952,-0.476476,-0.658132) - New Polarization: (-0.252791,-0.876162,0.410411) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.582952,-0.476476,-0.658132) - Old Polarization: (-0.252791,-0.876162,0.410411) - New Momentum Direction: (0.582952,0.476476,-0.658132) - New Polarization: (0.252791,-0.876162,-0.410411) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.582952,0.476476,-0.658132) - Old Polarization: (0.252791,-0.876162,-0.410411) - New Momentum Direction: (0.582952,0.476476,0.658132) - New Polarization: (-0.252791,0.876162,-0.410411) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.582952,0.476476,0.658132) - Old Polarization: (-0.252791,0.876162,-0.410411) - New Momentum Direction: (-0.582952,0.476476,0.658132) - New Polarization: (-0.252791,-0.876162,0.410411) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.582952,0.476476,0.658132) - Old Polarization: (-0.252791,-0.876162,0.410411) - New Momentum Direction: (-0.582952,-0.476476,0.658132) - New Polarization: (0.252791,-0.876162,-0.410411) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.582952,-0.476476,0.658132) - Old Polarization: (0.252791,-0.876162,-0.410411) - New Momentum Direction: (-0.582952,-0.476476,-0.658132) - New Polarization: (-0.252791,0.876162,-0.410411) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1663, parentID 1) is processed with stopping code 2 -### pop requested out of 52 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.346719,-0.43497,0.831016) - Old Polarization: (0.526713,-0.823383,-0.211218) - New Momentum Direction: (-0.471134,-0.591053,0.654743) - New Polarization: (0.472646,-0.795891,-0.378369) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1662, parentID 1) is processed with stopping code 2 -### pop requested out of 51 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1661, parentID 1) is processed with stopping code 2 -### pop requested out of 50 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.968431,0.178831,0.173669) - Old Polarization: (-0.19571,-0.113929,-0.974021) - New Momentum Direction: (-0.941232,0.242304,0.23531) - New Polarization: (0.292202,0.93358,0.207474) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1660, parentID 1) is processed with stopping code 2 -### pop requested out of 49 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.972509,-0.0403458,0.229344) - Old Polarization: (-0.198893,-0.368314,-0.908178) - New Momentum Direction: (-0.948803,-0.0547267,0.311091) - New Polarization: (0.288344,-0.55216,0.78229) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1659, parentID 1) is processed with stopping code 2 -### pop requested out of 48 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1658, parentID 1) is processed with stopping code 2 -### pop requested out of 47 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1657, parentID 1) is processed with stopping code 2 -### pop requested out of 46 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.0966593,-0.211394,0.97261) - Old Polarization: (0.820556,-0.569996,-0.0423389) - New Momentum Direction: (-0.1307,-0.285842,0.949322) - New Polarization: (0.785748,-0.613782,-0.0766304) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1656, parentID 1) is processed with stopping code 2 -### pop requested out of 45 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.250006,0.77898,0.575055) - Old Polarization: (0.638379,0.579157,-0.507001) - New Momentum Direction: (-0.339774,0.523216,0.781536) - New Polarization: (0.0530219,-0.818995,0.571345) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1655, parentID 1) is processed with stopping code 2 -### pop requested out of 44 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.217589,-0.353614,0.909732) - Old Polarization: (0.675125,-0.727652,-0.121363) - New Momentum Direction: (-0.296037,-0.481104,0.825168) - New Polarization: (0.616485,-0.756104,-0.219666) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1654, parentID 1) is processed with stopping code 2 -### pop requested out of 43 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.97843,0.0546971,0.199206) - Old Polarization: (-0.206579,-0.258194,-0.943749) - New Momentum Direction: (-0.959985,0.0741507,0.270056) - New Polarization: (0.280051,0.254821,0.925547) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1653, parentID 1) is processed with stopping code 2 -### pop requested out of 42 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.176529,0.739884,0.649161) - Old Polarization: (0.727359,0.542404,-0.420413) - New Momentum Direction: (-0.238647,0.415793,0.87759) - New Polarization: (0.333232,-0.813767,0.476172) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1652, parentID 1) is processed with stopping code 2 -### pop requested out of 41 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.532974,0.767196,0.356861) - Old Polarization: (0.310993,0.569853,-0.760625) - New Momentum Direction: (-0.722458,0.494021,0.483733) - New Polarization: (-0.573666,-0.818832,-0.0205265) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1651, parentID 1) is processed with stopping code 2 -### pop requested out of 40 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1650, parentID 1) is processed with stopping code 2 -### pop requested out of 39 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.875409,0.449091,0.178817) - Old Polarization: (-0.0938651,0.204955,-0.97426) - New Momentum Direction: (-0.758799,0.60512,0.240943) - New Polarization: (0.171196,0.542217,-0.822613) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1649, parentID 1) is processed with stopping code 2 -### pop requested out of 38 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1648, parentID 1) is processed with stopping code 2 -### pop requested out of 37 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.364311,-0.436042,0.822888) - Old Polarization: (0.507844,-0.833688,-0.21693) - New Momentum Direction: (-0.492292,-0.589221,0.640677) - New Polarization: (0.458099,-0.801249,-0.384897) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1647, parentID 1) is processed with stopping code 2 -### pop requested out of 36 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1646, parentID 1) is processed with stopping code 2 -### pop requested out of 35 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.522026,0.76998,0.366905) - Old Polarization: (0.323351,0.576716,-0.750228) - New Momentum Direction: (-0.70609,0.505123,0.496274) - New Polarization: (-0.572206,-0.819857,0.0203512) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1645, parentID 1) is processed with stopping code 2 -### pop requested out of 34 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.729063,-0.429721,0.532736) - Old Polarization: (0.0805521,-0.826806,-0.55669) - New Momentum Direction: (-0.380947,-0.580496,0.719655) - New Polarization: (0.160105,-0.808002,-0.567009) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1644, parentID 1) is processed with stopping code 2 -### pop requested out of 33 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.870606,0.45658,0.183246) - Old Polarization: (-0.0913083,0.216043,-0.972105) - New Momentum Direction: (-0.750271,0.61356,0.246249) - New Polarization: (0.166005,0.535365,-0.828147) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1643, parentID 1) is processed with stopping code 2 -### pop requested out of 32 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.931646,-0.189685,0.309928) - Old Polarization: (-0.161148,-0.548785,-0.820284) - New Momentum Direction: (-0.872145,-0.255396,0.417295) - New Polarization: (0.27309,-0.961822,-0.0179056) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1642, parentID 1) is processed with stopping code 2 -### pop requested out of 31 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.609242,0.733035,0.302463) - Old Polarization: (0.223743,0.52483,-0.821275) - New Momentum Direction: (-0.609242,-0.733035,0.302463) - New Polarization: (0.68147,-0.288945,0.672391) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.609242,-0.733035,0.302463) - Old Polarization: (0.68147,-0.288945,0.672391) - New Momentum Direction: (0.609242,-0.733035,0.302463) - New Polarization: (0.68147,0.288945,-0.672391) - *** TotalInternalReflection *** -No Absorbtion length specified -Scattering Photon! -Old Momentum Direction: (0.609242,-0.733035,0.302463) -Old Polarization: (0.68147,0.288945,-0.672391) -New Polarization: (0.622694,-0.380999,-0.476045) -Polarization Change: (0.714501,-0.437172,-0.546231) -New Momentum Direction: (-0.242237,0.479121,-1.01634) -Momentum Change: (-0.210746,0.416835,-0.884214) - Photon at Boundary! - Old Momentum Direction: (-0.210746,0.416835,-0.884214) - Old Polarization: (0.714501,-0.437172,-0.546231) - New Momentum Direction: (-0.210746,-0.416835,-0.884214) - New Polarization: (-0.714501,-0.437172,0.546231) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.210746,-0.416835,-0.884214) - Old Polarization: (-0.714501,-0.437172,0.546231) - New Momentum Direction: (-0.28665,-0.566965,-0.772258) - New Polarization: (-0.625802,-0.499536,0.59903) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1641, parentID 1) is processed with stopping code 2 -### pop requested out of 30 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.65226,-0.462248,0.600736) - Old Polarization: (0.17145,-0.861963,-0.4771) - New Momentum Direction: (0.65226,-0.462248,0.600736) - New Polarization: (0.17145,0.861963,0.4771) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.65226,-0.462248,0.600736) - Old Polarization: (0.17145,0.861963,0.4771) - New Momentum Direction: (0.65226,-0.462248,-0.600736) - New Polarization: (-0.17145,-0.861963,0.4771) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.65226,-0.462248,-0.600736) - Old Polarization: (-0.17145,-0.861963,0.4771) - New Momentum Direction: (0.65226,0.462248,-0.600736) - New Polarization: (0.17145,-0.861963,-0.4771) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.65226,0.462248,-0.600736) - Old Polarization: (0.17145,-0.861963,-0.4771) - New Momentum Direction: (-0.65226,0.462248,-0.600736) - New Polarization: (0.17145,0.861963,0.4771) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.65226,0.462248,-0.600736) - Old Polarization: (0.17145,0.861963,0.4771) - New Momentum Direction: (-0.65226,0.462248,0.600736) - New Polarization: (-0.17145,-0.861963,0.4771) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.65226,0.462248,0.600736) - Old Polarization: (-0.17145,-0.861963,0.4771) - New Momentum Direction: (-0.65226,-0.462248,0.600736) - New Polarization: (0.17145,-0.861963,-0.4771) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.65226,-0.462248,0.600736) - Old Polarization: (0.17145,-0.861963,-0.4771) - New Momentum Direction: (0.65226,-0.462248,0.600736) - New Polarization: (0.17145,0.861963,0.4771) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.65226,-0.462248,0.600736) - Old Polarization: (0.17145,0.861963,0.4771) - New Momentum Direction: (0.65226,-0.462248,-0.600736) - New Polarization: (-0.17145,-0.861963,0.4771) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.65226,-0.462248,-0.600736) - Old Polarization: (-0.17145,-0.861963,0.4771) - New Momentum Direction: (-0.65226,-0.462248,-0.600736) - New Polarization: (-0.17145,0.861963,-0.4771) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.65226,-0.462248,-0.600736) - Old Polarization: (-0.17145,0.861963,-0.4771) - New Momentum Direction: (-0.65226,0.462248,-0.600736) - New Polarization: (0.17145,0.861963,0.4771) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.65226,0.462248,-0.600736) - Old Polarization: (0.17145,0.861963,0.4771) - New Momentum Direction: (-0.65226,0.462248,0.600736) - New Polarization: (-0.17145,-0.861963,0.4771) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.65226,0.462248,0.600736) - Old Polarization: (-0.17145,-0.861963,0.4771) - New Momentum Direction: (0.65226,0.462248,0.600736) - New Polarization: (-0.17145,0.861963,-0.4771) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.65226,0.462248,0.600736) - Old Polarization: (-0.17145,0.861963,-0.4771) - New Momentum Direction: (0.65226,0.462248,-0.600736) - New Polarization: (0.17145,-0.861963,-0.4771) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.65226,0.462248,-0.600736) - Old Polarization: (0.17145,-0.861963,-0.4771) - New Momentum Direction: (0.65226,-0.462248,-0.600736) - New Polarization: (-0.17145,-0.861963,0.4771) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.65226,-0.462248,-0.600736) - Old Polarization: (-0.17145,-0.861963,0.4771) - New Momentum Direction: (-0.65226,-0.462248,-0.600736) - New Polarization: (-0.17145,0.861963,-0.4771) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.65226,-0.462248,-0.600736) - Old Polarization: (-0.17145,0.861963,-0.4771) - New Momentum Direction: (-0.65226,-0.462248,0.600736) - New Polarization: (0.17145,-0.861963,-0.4771) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.65226,-0.462248,0.600736) - Old Polarization: (0.17145,-0.861963,-0.4771) - New Momentum Direction: (-0.65226,0.462248,0.600736) - New Polarization: (-0.17145,-0.861963,0.4771) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.65226,0.462248,0.600736) - Old Polarization: (-0.17145,-0.861963,0.4771) - New Momentum Direction: (0.65226,0.462248,0.600736) - New Polarization: (-0.17145,0.861963,-0.4771) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.65226,0.462248,0.600736) - Old Polarization: (-0.17145,0.861963,-0.4771) - New Momentum Direction: (0.65226,0.462248,-0.600736) - New Polarization: (0.17145,-0.861963,-0.4771) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.65226,0.462248,-0.600736) - Old Polarization: (0.17145,-0.861963,-0.4771) - New Momentum Direction: (-0.65226,0.462248,-0.600736) - New Polarization: (0.17145,0.861963,0.4771) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.65226,0.462248,-0.600736) - Old Polarization: (0.17145,0.861963,0.4771) - New Momentum Direction: (-0.65226,-0.462248,-0.600736) - New Polarization: (-0.17145,0.861963,-0.4771) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.65226,-0.462248,-0.600736) - Old Polarization: (-0.17145,0.861963,-0.4771) - New Momentum Direction: (-0.65226,-0.462248,0.600736) - New Polarization: (0.17145,-0.861963,-0.4771) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1640, parentID 1) is processed with stopping code 2 -### pop requested out of 29 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1639, parentID 1) is processed with stopping code 2 -### pop requested out of 28 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.697742,-0.447186,0.559625) - Old Polarization: (0.119022,-0.84273,-0.525014) - New Momentum Direction: (0.697742,-0.447186,0.559625) - New Polarization: (0.0731607,0.821619,0.565323) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.697742,-0.447186,0.559625) - Old Polarization: (0.0731607,0.821619,0.565323) - New Momentum Direction: (0.697742,-0.447186,-0.559625) - New Polarization: (-0.0731607,-0.821619,0.565323) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.697742,-0.447186,-0.559625) - Old Polarization: (-0.0731607,-0.821619,0.565323) - New Momentum Direction: (0.697742,0.447186,-0.559625) - New Polarization: (0.0731607,-0.821619,-0.565323) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.697742,0.447186,-0.559625) - Old Polarization: (0.0731607,-0.821619,-0.565323) - New Momentum Direction: (0.241833,0.605728,-0.758031) - New Polarization: (-0.154224,-0.747293,-0.64635) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1638, parentID 1) is processed with stopping code 2 -### pop requested out of 27 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1637, parentID 1) is processed with stopping code 2 -### pop requested out of 26 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.040346,-0.125771,0.991239) - Old Polarization: (0.883462,-0.467917,-0.0234112) - New Momentum Direction: (-0.0546932,-0.170495,0.983839) - New Polarization: (0.853625,-0.51915,-0.042512) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1636, parentID 1) is processed with stopping code 2 -### pop requested out of 25 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0191969,0.470008,0.882454) - Old Polarization: (0.962351,0.230664,-0.14379) - New Momentum Direction: (0.0258354,0.632543,0.774094) - New Polarization: (0.927126,0.274434,-0.255194) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1635, parentID 1) is processed with stopping code 2 -### pop requested out of 24 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.976029,0.117172,0.183404) - Old Polarization: (-0.202939,-0.185533,-0.961454) - New Momentum Direction: (-0.955429,0.158941,0.248784) - New Polarization: (0.283938,0.725476,0.626948) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1634, parentID 1) is processed with stopping code 2 -### pop requested out of 23 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.728799,-0.432944,0.530482) - Old Polarization: (0.0833555,-0.825069,-0.55885) - New Momentum Direction: (0.728799,-0.432944,0.530482) - New Polarization: (0.0336823,0.796464,0.603747) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.728799,-0.432944,0.530482) - Old Polarization: (0.0336823,0.796464,0.603747) - New Momentum Direction: (0.728799,-0.432944,-0.530482) - New Polarization: (-0.0336823,-0.796464,0.603747) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.728799,-0.432944,-0.530482) - Old Polarization: (-0.0336823,-0.796464,0.603747) - New Momentum Direction: (0.728799,0.432944,-0.530482) - New Polarization: (0.0336823,-0.796464,-0.603747) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.728799,0.432944,-0.530482) - Old Polarization: (0.0336823,-0.796464,-0.603747) - New Momentum Direction: (0.372319,0.586829,-0.719035) - New Polarization: (-0.0681365,-0.755361,-0.651757) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1633, parentID 1) is processed with stopping code 2 -### pop requested out of 22 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0236825,0.481261,0.876257) - Old Polarization: (0.95857,0.237952,-0.156596) - New Momentum Direction: (0.0320871,0.652053,0.757494) - New Polarization: (0.917864,0.280746,-0.280547) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1632, parentID 1) is processed with stopping code 2 -### pop requested out of 21 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0313481,0.0956058,0.994926) - Old Polarization: (0.977209,-0.212024,-0.0104158) - New Momentum Direction: (0.0421739,0.128623,0.990796) - New Polarization: (0.983866,-0.177918,-0.018782) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1631, parentID 1) is processed with stopping code 2 -### pop requested out of 20 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.151048,0.729555,0.667033) - Old Polarization: (0.752783,0.522241,-0.400726) - New Momentum Direction: (-0.20526,0.369106,0.906438) - New Polarization: (0.407503,-0.809828,0.422044) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1630, parentID 1) is processed with stopping code 2 -### pop requested out of 19 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.237577,-0.358803,0.902672) - Old Polarization: (0.656609,-0.744139,-0.122973) - New Momentum Direction: (-0.32084,-0.484552,0.813801) - New Polarization: (0.601669,-0.767854,-0.219988) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1629, parentID 1) is processed with stopping code 2 -### pop requested out of 18 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0596464,0.261662,0.963315) - Old Polarization: (0.998217,-0.0179869,-0.0569218) - New Momentum Direction: (0.0809394,0.355072,0.931328) - New Polarization: (0.993641,0.044636,-0.103372) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1628, parentID 1) is processed with stopping code 2 -### pop requested out of 17 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.886666,0.428866,0.172911) - Old Polarization: (-0.104106,0.179193,-0.97829) - New Momentum Direction: (-0.780898,0.579343,0.233581) - New Polarization: (0.189361,0.575889,-0.795295) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1627, parentID 1) is processed with stopping code 2 -### pop requested out of 16 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.079777,0.666535,0.741193) - Old Polarization: (0.835639,0.450104,-0.314824) - New Momentum Direction: (-0.108356,0.905313,0.410692) - New Polarization: (0.750091,0.345573,-0.563864) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1626, parentID 1) is processed with stopping code 2 -### pop requested out of 15 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.93995,-0.179747,0.290146) - Old Polarization: (-0.156983,-0.527163,-0.835138) - New Momentum Direction: (-0.885603,-0.244592,0.394819) - New Polarization: (0.2692,-0.963057,0.00721387) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1625, parentID 1) is processed with stopping code 2 -### pop requested out of 14 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.0327641,-0.119634,0.992277) - Old Polarization: (0.888431,-0.458278,-0.0259168) - New Momentum Direction: (-0.0445631,-0.162716,0.985666) - New Polarization: (0.853373,-0.519166,-0.0471231) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1624, parentID 1) is processed with stopping code 2 -### pop requested out of 13 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.945204,0.277618,0.171808) - Old Polarization: (-0.177912,0.00325129,-0.984041) - New Momentum Direction: (-0.898321,0.373586,0.231199) - New Polarization: (0.290455,0.89984,-0.325458) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1623, parentID 1) is processed with stopping code 2 -### pop requested out of 12 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0495829,0.342232,0.938306) - Old Polarization: (0.993665,0.0779654,-0.0809448) - New Momentum Direction: (0.0669433,0.462057,0.88432) - New Polarization: (0.979902,0.136477,-0.145488) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1622, parentID 1) is processed with stopping code 2 -### pop requested out of 11 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.174003,-0.31235,0.933895) - Old Polarization: (0.72609,-0.681336,-0.0925941) - New Momentum Direction: (-0.236507,-0.424548,0.87397) - New Polarization: (0.672875,-0.720454,-0.167887) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1621, parentID 1) is processed with stopping code 2 -### pop requested out of 10 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.648898,0.706827,0.28165) - Old Polarization: (0.17625,0.499732,-0.848059) - New Momentum Direction: (-0.879572,0.283905,0.381773) - New Polarization: (-0.4353,-0.804073,-0.404945) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1620, parentID 1) is processed with stopping code 2 -### pop requested out of 9 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.079298,-0.187265,0.979104) - Old Polarization: (0.840167,-0.541167,-0.0354589) - New Momentum Direction: (-0.107294,-0.253379,0.961398) - New Polarization: (0.807791,-0.585953,-0.0642782) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1619, parentID 1) is processed with stopping code 2 -### pop requested out of 8 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0268824,0.0327027,0.999104) - Old Polarization: (0.958953,-0.283081,-0.0165363) - New Momentum Direction: (0.0365145,0.0444202,0.998345) - New Polarization: (0.985875,-0.165002,-0.0287168) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1618, parentID 1) is processed with stopping code 2 -### pop requested out of 7 stacked tracks. -Scattering Photon! -Old Momentum Direction: (-0.741529,0.630887,0.228292) -Old Polarization: (0.0692264,0.410397,-0.909276) -New Polarization: (-0.163306,0.762733,-0.383941) -Polarization Change: (-0.18784,0.877319,-0.44162) -New Momentum Direction: (0.933306,0.28992,0.2508) -Momentum Change: (0.925012,0.287343,0.248571) - Photon at Boundary! - Old Momentum Direction: (0.925012,0.287343,0.248571) - Old Polarization: (-0.18784,0.877319,-0.44162) - New Momentum Direction: (0.925012,-0.287343,0.248571) - New Polarization: (0.18784,0.877319,0.44162) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.925012,-0.287343,0.248571) - Old Polarization: (0.18784,0.877319,0.44162) - New Momentum Direction: (0.856931,-0.389814,0.337215) - New Polarization: (-0.275796,0.205926,0.938899) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1617, parentID 1) is processed with stopping code 2 -### pop requested out of 6 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.529883,0.770278,0.354818) - Old Polarization: (0.315292,0.567322,-0.760748) - New Momentum Direction: (-0.720926,0.497216,0.482744) - New Polarization: (-0.574887,-0.818078,-0.0159291) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1616, parentID 1) is processed with stopping code 2 -### pop requested out of 5 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0575047,0.228205,0.971913) - Old Polarization: (0.997352,-0.0565559,-0.0457305) - New Momentum Direction: (0.0779437,0.309316,0.94776) - New Polarization: (0.996543,0.00323614,-0.0830118) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1615, parentID 1) is processed with stopping code 2 -### pop requested out of 4 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.563396,-0.47843,0.673564) - Old Polarization: (0.275704,-0.877408,-0.39261) - New Momentum Direction: (-0.563396,-0.47843,-0.673564) - New Polarization: (-0.275704,0.877408,-0.39261) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.563396,-0.47843,-0.673564) - Old Polarization: (-0.275704,0.877408,-0.39261) - New Momentum Direction: (0.563396,-0.47843,-0.673564) - New Polarization: (-0.275704,-0.877408,0.39261) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.563396,-0.47843,-0.673564) - Old Polarization: (-0.275704,-0.877408,0.39261) - New Momentum Direction: (0.563396,0.47843,-0.673564) - New Polarization: (0.275704,-0.877408,-0.39261) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1614, parentID 1) is processed with stopping code 2 -### pop requested out of 3 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.765201,0.605488,0.21875) - Old Polarization: (0.039873,0.383704,-0.922595) - New Momentum Direction: (-0.490575,0.819554,0.296087) - New Polarization: (0.0778504,0.379645,-0.921851) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1613, parentID 1) is processed with stopping code 2 -### pop requested out of 2 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.0619493,0.235222,0.969965) -Old Polarization: (0.997448,-0.0491426,-0.0517872) -New Polarization: (0.761606,0.240658,-0.345684) -Polarization Change: (0.875087,0.276516,-0.397192) -New Momentum Direction: (0.432933,-0.359261,0.971266) -Momentum Change: (0.385709,-0.320074,0.865322) - Photon at Boundary! - Old Momentum Direction: (0.385709,-0.320074,0.865322) - Old Polarization: (0.875087,0.276516,-0.397192) - New Momentum Direction: (0.524683,-0.435398,0.73153) - New Polarization: (0.843811,0.152278,-0.514581) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1612, parentID 1) is processed with stopping code 2 -### pop requested out of 1 stacked tracks. - - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 48 -Track (trackID 1, parentID 0) is processed with stopping code 4 -### pop requested out of 49 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.513945,-0.272315,0.813453) - Old Polarization: (0.846127,-0.316987,0.428472) - New Momentum Direction: (-0.695581,-0.368556,0.616712) - New Polarization: (-0.201353,-0.72399,-0.65977) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1741, parentID 1) is processed with stopping code 2 -### pop requested out of 48 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.589961,-0.527311,0.611465) - Old Polarization: (0.756393,-0.625908,0.190025) - New Momentum Direction: (-0.589961,-0.527311,-0.611465) - New Polarization: (-0.756393,0.625908,0.190025) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.589961,-0.527311,-0.611465) - Old Polarization: (-0.756393,0.625908,0.190025) - New Momentum Direction: (0.589961,-0.527311,-0.611465) - New Polarization: (-0.756393,-0.625908,-0.190025) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.589961,-0.527311,-0.611465) - Old Polarization: (-0.756393,-0.625908,-0.190025) - New Momentum Direction: (0.589961,0.527311,-0.611465) - New Polarization: (0.756393,-0.625908,0.190025) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1740, parentID 1) is processed with stopping code 2 -### pop requested out of 47 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.508147,-0.271326,0.817416) - Old Polarization: (0.849888,-0.311752,0.424853) - New Momentum Direction: (-0.691393,-0.36917,0.621039) - New Polarization: (-0.204846,-0.724151,-0.658516) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1739, parentID 1) is processed with stopping code 2 -### pop requested out of 46 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1738, parentID 1) is processed with stopping code 2 -### pop requested out of 45 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.902011,-0.358874,-0.239971) - Old Polarization: (0.38476,-0.416172,-0.823869) - New Momentum Direction: (-0.809795,-0.487722,-0.326128) - New Polarization: (0.55055,-0.439543,-0.709716) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1737, parentID 1) is processed with stopping code 2 -### pop requested out of 44 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.93962,0.0569507,-0.337447) - Old Polarization: (0.341078,0.0753939,-0.937007) - New Momentum Direction: (-0.884958,0.0774952,-0.459178) - New Polarization: (0.464846,0.0883331,-0.880974) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1736, parentID 1) is processed with stopping code 2 -### pop requested out of 43 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.497467,0.0165635,0.867325) - Old Polarization: (0.867331,0.0282327,0.496931) - New Momentum Direction: (-0.671701,0.0223648,0.740485) - New Polarization: (-0.738067,0.0659206,-0.671499) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1735, parentID 1) is processed with stopping code 2 -### pop requested out of 42 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.940303,-0.0479381,-0.336944) - Old Polarization: (0.339126,-0.0485058,-0.93949) - New Momentum Direction: (-0.886735,-0.065114,-0.457669) - New Polarization: (0.461399,-0.0636558,-0.884906) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1734, parentID 1) is processed with stopping code 2 -### pop requested out of 41 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.716887,-0.642144,0.27152) - Old Polarization: (0.603743,-0.766551,-0.218847) - New Momentum Direction: (-0.342093,-0.865478,0.365952) - New Polarization: (0.876687,-0.434142,-0.207219) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1733, parentID 1) is processed with stopping code 2 -### pop requested out of 40 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.566809,-0.489536,0.662633) - Old Polarization: (0.781906,-0.573019,0.245503) - New Momentum Direction: (-0.566809,-0.489536,-0.662633) - New Polarization: (-0.781906,0.573019,0.245503) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.566809,-0.489536,-0.662633) - Old Polarization: (-0.781906,0.573019,0.245503) - New Momentum Direction: (0.566809,-0.489536,-0.662633) - New Polarization: (-0.781906,-0.573019,-0.245503) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.566809,-0.489536,-0.662633) - Old Polarization: (-0.781906,-0.573019,-0.245503) - New Momentum Direction: (0.566809,0.489536,-0.662633) - New Polarization: (0.781906,-0.573019,0.245503) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1732, parentID 1) is processed with stopping code 2 -### pop requested out of 39 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.497441,0.0164125,0.867343) - Old Polarization: (0.867347,0.0280498,0.496913) - New Momentum Direction: (-0.671681,0.0221613,0.740509) - New Polarization: (-0.738132,0.0653769,-0.671481) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1731, parentID 1) is processed with stopping code 2 -### pop requested out of 38 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.738684,-0.644302,0.198043) - Old Polarization: (0.577822,-0.756568,-0.306147) - New Momentum Direction: (-0.404273,-0.87427,0.26873) - New Polarization: (0.847718,-0.468474,-0.24881) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1730, parentID 1) is processed with stopping code 2 -### pop requested out of 37 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.789219,0.606654,0.0954222) - Old Polarization: (0.516528,0.739791,-0.43117) - New Momentum Direction: (-0.560742,0.817934,0.128655) - New Polarization: (0.754043,0.568647,-0.328724) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1729, parentID 1) is processed with stopping code 2 -### pop requested out of 36 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.497968,0.00676888,0.867169) - Old Polarization: (0.867127,0.0164849,0.497815) - New Momentum Direction: (-0.671969,0.00913408,0.740523) - New Polarization: (-0.740021,0.0305288,-0.67189) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1728, parentID 1) is processed with stopping code 2 -### pop requested out of 35 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.684613,-0.634392,0.358958) - Old Polarization: (0.642718,-0.757684,-0.11326) - New Momentum Direction: (-0.188052,-0.854807,0.483675) - New Polarization: (0.931196,-0.311748,-0.188911) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1727, parentID 1) is processed with stopping code 2 -### pop requested out of 34 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.760664,0.624375,0.177611) - Old Polarization: (0.550688,0.765537,-0.33271) - New Momentum Direction: (-0.487401,0.839859,0.238908) - New Polarization: (0.800693,0.539032,-0.261409) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1726, parentID 1) is processed with stopping code 2 -### pop requested out of 33 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.650273,0.597112,0.469683) - Old Polarization: (0.684146,0.729062,0.020334) - New Momentum Direction: (0.650273,0.597112,0.469683) - New Polarization: (0.684146,-0.729062,-0.020334) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.650273,0.597112,0.469683) - Old Polarization: (0.684146,-0.729062,-0.020334) - New Momentum Direction: (0.650273,-0.597112,0.469683) - New Polarization: (-0.684146,-0.729062,0.020334) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.650273,-0.597112,0.469683) - Old Polarization: (-0.684146,-0.729062,0.020334) - New Momentum Direction: (0.650273,-0.597112,-0.469683) - New Polarization: (0.684146,0.729062,0.020334) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1725, parentID 1) is processed with stopping code 2 -### pop requested out of 32 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.558844,-0.453319,0.694403) - Old Polarization: (0.793427,-0.535817,0.288745) - New Momentum Direction: (-0.558844,-0.453319,-0.694403) - New Polarization: (-0.466189,0.864256,-0.18902) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.558844,-0.453319,-0.694403) - Old Polarization: (-0.466189,0.864256,-0.18902) - New Momentum Direction: (0.558844,-0.453319,-0.694403) - New Polarization: (-0.466189,-0.864256,0.18902) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.558844,-0.453319,-0.694403) - Old Polarization: (-0.466189,-0.864256,0.18902) - New Momentum Direction: (0.558844,0.453319,-0.694403) - New Polarization: (0.466189,-0.864256,-0.18902) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1724, parentID 1) is processed with stopping code 2 -### pop requested out of 31 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.651383,-0.622752,0.433452) - Old Polarization: (0.681493,-0.731341,-0.0266009) - New Momentum Direction: (0.651383,-0.622752,0.433452) - New Polarization: (0.681493,0.731341,0.0266009) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.651383,-0.622752,0.433452) - Old Polarization: (0.681493,0.731341,0.0266009) - New Momentum Direction: (0.651383,0.622752,0.433452) - New Polarization: (-0.681493,0.731341,-0.0266009) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.651383,0.622752,0.433452) - Old Polarization: (-0.681493,0.731341,-0.0266009) - New Momentum Direction: (0.651383,0.622752,-0.433452) - New Polarization: (0.681493,-0.731341,-0.0266009) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.651383,0.622752,-0.433452) - Old Polarization: (0.681493,-0.731341,-0.0266009) - New Momentum Direction: (-0.651383,0.622752,-0.433452) - New Polarization: (0.681493,0.731341,0.0266009) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.651383,0.622752,-0.433452) - Old Polarization: (0.681493,0.731341,0.0266009) - New Momentum Direction: (-0.651383,-0.622752,-0.433452) - New Polarization: (-0.681493,0.731341,-0.0266009) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1723, parentID 1) is processed with stopping code 2 -### pop requested out of 30 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1722, parentID 1) is processed with stopping code 2 -### pop requested out of 29 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.658327,0.602335,0.451439) - Old Polarization: (0.674711,0.738082,-0.000867346) - New Momentum Direction: (0.658327,0.602335,0.451439) - New Polarization: (0.674711,-0.738082,0.000867346) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.658327,0.602335,0.451439) - Old Polarization: (0.674711,-0.738082,0.000867346) - New Momentum Direction: (0.658327,-0.602335,0.451439) - New Polarization: (-0.674711,-0.738082,-0.000867346) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.658327,-0.602335,0.451439) - Old Polarization: (-0.674711,-0.738082,-0.000867346) - New Momentum Direction: (0.658327,-0.602335,-0.451439) - New Polarization: (0.674711,0.738082,-0.000867346) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1721, parentID 1) is processed with stopping code 2 -### pop requested out of 28 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1720, parentID 1) is processed with stopping code 2 -### pop requested out of 27 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.794286,0.602301,0.0796391) - Old Polarization: (0.510624,0.732844,-0.449671) - New Momentum Direction: (-0.572488,0.812838,0.107477) - New Polarization: (0.746239,0.570858,-0.342415) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1719, parentID 1) is processed with stopping code 2 -### pop requested out of 26 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1718, parentID 1) is processed with stopping code 2 -### pop requested out of 25 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.875385,0.45701,-0.157617) - Old Polarization: (0.416598,0.547744,-0.72555) - New Momentum Direction: (-0.753457,0.621569,-0.214372) - New Polarization: (0.605536,0.528957,-0.594584) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1717, parentID 1) is processed with stopping code 2 -### pop requested out of 24 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.634979,0.590909,0.497622) - Old Polarization: (0.70114,0.711264,0.0500717) - New Momentum Direction: (0.634979,0.590909,0.497622) - New Polarization: (0.70114,-0.711264,-0.0500717) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.634979,0.590909,0.497622) - Old Polarization: (0.70114,-0.711264,-0.0500717) - New Momentum Direction: (0.634979,-0.590909,0.497622) - New Polarization: (-0.70114,-0.711264,0.0500717) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.634979,-0.590909,0.497622) - Old Polarization: (-0.70114,-0.711264,0.0500717) - New Momentum Direction: (0.634979,-0.590909,-0.497622) - New Polarization: (0.70114,0.711264,0.0500717) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.634979,-0.590909,-0.497622) - Old Polarization: (0.70114,0.711264,0.0500717) - New Momentum Direction: (-0.634979,-0.590909,-0.497622) - New Polarization: (0.70114,-0.711264,-0.0500717) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1716, parentID 1) is processed with stopping code 2 -### pop requested out of 23 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.820854,0.571137,-0.000908367) - Old Polarization: (0.47983,0.68876,-0.543482) - New Momentum Direction: (-0.633404,0.77382,-0.00123073) - New Polarization: (0.703452,0.575141,-0.417575) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1715, parentID 1) is processed with stopping code 2 -### pop requested out of 22 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.607132,0.539518,0.583362) - Old Polarization: (0.736004,0.658532,0.156955) - New Momentum Direction: (0.607132,0.539518,0.583362) - New Polarization: (0.736004,-0.658532,-0.156955) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.607132,0.539518,0.583362) - Old Polarization: (0.736004,-0.658532,-0.156955) - New Momentum Direction: (0.607132,0.539518,-0.583362) - New Polarization: (-0.736004,0.658532,-0.156955) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.607132,0.539518,-0.583362) - Old Polarization: (-0.736004,0.658532,-0.156955) - New Momentum Direction: (0.607132,-0.539518,-0.583362) - New Polarization: (0.736004,0.658532,0.156955) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.607132,-0.539518,-0.583362) - Old Polarization: (0.736004,0.658532,0.156955) - New Momentum Direction: (-0.607132,-0.539518,-0.583362) - New Polarization: (0.736004,-0.658532,-0.156955) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.607132,-0.539518,-0.583362) - Old Polarization: (0.736004,-0.658532,-0.156955) - New Momentum Direction: (-0.607132,-0.539518,0.583362) - New Polarization: (-0.736004,0.658532,-0.156955) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.607132,-0.539518,0.583362) - Old Polarization: (-0.736004,0.658532,-0.156955) - New Momentum Direction: (-0.607132,0.539518,0.583362) - New Polarization: (0.736004,0.658532,0.156955) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1714, parentID 1) is processed with stopping code 2 -### pop requested out of 21 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.921325,-0.255966,-0.292646) - Old Polarization: (0.36254,-0.293705,-0.884479) - New Momentum Direction: (-0.848655,-0.348237,-0.39814) - New Polarization: (0.509198,-0.334105,-0.793153) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1713, parentID 1) is processed with stopping code 2 -### pop requested out of 20 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.530974,-0.333742,0.778899) - Old Polarization: (0.828861,-0.39571,0.395479) - New Momentum Direction: (-0.714678,-0.449209,0.53614) - New Polarization: (0.00520729,-0.769909,-0.638133) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1712, parentID 1) is processed with stopping code 2 -### pop requested out of 19 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.494429,0.0415872,0.868222) - Old Polarization: (0.868708,0.0578341,0.491936) - New Momentum Direction: (-0.669925,0.0563484,0.740288) - New Polarization: (-0.72648,0.155816,-0.669289) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1711, parentID 1) is processed with stopping code 2 -### pop requested out of 18 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1710, parentID 1) is processed with stopping code 2 -### pop requested out of 17 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.938887,-0.102869,-0.328494) - Old Polarization: (0.339214,-0.114263,-0.933744) - New Momentum Direction: (-0.884579,-0.139377,-0.445078) - New Polarization: (0.462721,-0.142797,-0.874927) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1709, parentID 1) is processed with stopping code 2 -### pop requested out of 16 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1708, parentID 1) is processed with stopping code 2 -### pop requested out of 15 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.929106,-0.203674,-0.308672) - Old Polarization: (0.35223,-0.233075,-0.906427) - New Momentum Direction: (-0.86476,-0.276578,-0.419159) - New Polarization: (0.489083,-0.274427,-0.827941) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1707, parentID 1) is processed with stopping code 2 -### pop requested out of 14 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.896665,0.387713,-0.213708) - Old Polarization: (0.390971,0.467036,-0.793108) - New Momentum Direction: (-0.798853,0.526799,-0.290373) - New Polarization: (0.561517,0.479969,-0.674039) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1706, parentID 1) is processed with stopping code 2 -### pop requested out of 13 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.661915,0.622454,0.417636) - Old Polarization: (0.668527,0.742222,-0.0466691) - New Momentum Direction: (0.661915,0.622454,0.417636) - New Polarization: (0.668527,-0.742222,0.0466691) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.661915,0.622454,0.417636) - Old Polarization: (0.668527,-0.742222,0.0466691) - New Momentum Direction: (0.661915,-0.622454,0.417636) - New Polarization: (-0.668527,-0.742222,-0.0466691) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1705, parentID 1) is processed with stopping code 2 -### pop requested out of 12 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1704, parentID 1) is processed with stopping code 2 -### pop requested out of 11 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1703, parentID 1) is processed with stopping code 2 -### pop requested out of 10 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.544762,0.403524,0.735121) - Old Polarization: (0.807991,0.487214,0.33132) - New Momentum Direction: (-0.739252,0.547589,0.391986) - New Polarization: (0.255495,0.766614,-0.589089) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1702, parentID 1) is processed with stopping code 2 -### pop requested out of 9 stacked tracks. -Scattering Photon! -Old Momentum Direction: (-0.496395,-0.16272,0.85271) -Old Polarization: (0.864327,-0.184084,0.468029) -New Polarization: (0.856554,0.0400381,0.261429) -Polarization Change: (0.955489,0.0446627,0.291625) -New Momentum Direction: (-0.145611,0.913654,0.4272) -Momentum Change: (-0.142889,0.896573,0.419213) - -** Photon Absorbed! ** -Track (trackID 1701, parentID 1) is processed with stopping code 2 -### pop requested out of 8 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.861542,0.498129,-0.0980504) - Old Polarization: (0.428846,0.610678,-0.665705) - New Momentum Direction: (-0.729759,0.670832,-0.132045) - New Polarization: (0.621344,0.570127,-0.537482) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1700, parentID 1) is processed with stopping code 2 -### pop requested out of 7 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1699, parentID 1) is processed with stopping code 2 -### pop requested out of 6 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1698, parentID 1) is processed with stopping code 2 -### pop requested out of 5 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1697, parentID 1) is processed with stopping code 2 -### pop requested out of 4 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.705362,0.638785,0.307275) - Old Polarization: (0.617379,0.766615,-0.176476) - New Momentum Direction: (-0.273652,0.866762,0.416939) - New Polarization: (0.903897,0.37992,-0.196545) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1696, parentID 1) is processed with stopping code 2 -### pop requested out of 3 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1695, parentID 1) is processed with stopping code 2 -### pop requested out of 2 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.710802,0.638696,0.294666) - Old Polarization: (0.610938,0.7682,-0.191371) - New Momentum Direction: (-0.301228,0.865847,0.399464) - New Polarization: (0.893594,0.402528,-0.198647) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1694, parentID 1) is processed with stopping code 2 -### pop requested out of 1 stacked tracks. - - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 38 -Track (trackID 1, parentID 0) is processed with stopping code 4 -### pop requested out of 39 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.589956,-0.723082,0.359311) - Old Polarization: (0.807234,-0.538118,0.242491) - New Momentum Direction: (-0.801644,-0.344949,0.488239) - New Polarization: (-0.0158889,0.828729,0.559424) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1779, parentID 1) is processed with stopping code 2 -### pop requested out of 38 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1778, parentID 1) is processed with stopping code 2 -### pop requested out of 37 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.899438,0.436759,0.0158853) - Old Polarization: (0.42735,0.886512,-0.177394) - New Momentum Direction: (-0.807331,0.589709,0.0214481) - New Polarization: (0.583033,0.802746,-0.125188) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1777, parentID 1) is processed with stopping code 2 -### pop requested out of 36 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.620476,-0.784191,0.00739447) - Old Polarization: (0.769688,-0.610753,-0.185907) - New Momentum Direction: (-0.84393,-0.536358,0.0100575) - New Polarization: (-0.533675,0.837508,-0.117348) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1776, parentID 1) is processed with stopping code 2 -### pop requested out of 35 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.852181,-0.0749939,-0.517844) - Old Polarization: (0.486073,0.252905,-0.836524) - New Momentum Direction: (-0.707196,-0.101333,-0.699718) - New Polarization: (0.679612,0.175445,-0.712283) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1775, parentID 1) is processed with stopping code 2 -### pop requested out of 34 stacked tracks. -Scattering Photon! -Old Momentum Direction: (-0.619103,-0.462669,0.634547) -Old Polarization: (0.774719,-0.227573,0.589933) -New Polarization: (0.743211,-0.283471,0.55277) -Polarization Change: (0.767269,-0.292647,0.570663) -New Momentum Direction: (0.459267,-0.330554,-0.863787) -Momentum Change: (0.444756,-0.320109,-0.836494) - Photon at Boundary! - Old Momentum Direction: (0.444756,-0.320109,-0.836494) - Old Polarization: (0.767269,-0.292647,0.570663) - New Momentum Direction: (0.444756,0.320109,-0.836494) - New Polarization: (-0.767269,-0.292647,-0.570663) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.444756,0.320109,-0.836494) - Old Polarization: (-0.767269,-0.292647,-0.570663) - New Momentum Direction: (0.599928,0.431793,-0.673529) - New Polarization: (0.450899,0.51294,0.730468) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1774, parentID 1) is processed with stopping code 2 -### pop requested out of 33 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.812658,-0.244211,-0.529101) - Old Polarization: (0.5356,0.0447334,-0.843286) - New Momentum Direction: (-0.612688,-0.331204,-0.717578) - New Polarization: (0.756374,0.0175293,-0.653904) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1773, parentID 1) is processed with stopping code 2 -### pop requested out of 32 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.75334,-0.472519,-0.457389) - Old Polarization: (0.608184,-0.235998,-0.757903) - New Momentum Direction: (-0.454707,-0.63994,-0.61945) - New Polarization: (0.857221,-0.125716,-0.499368) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1772, parentID 1) is processed with stopping code 2 -### pop requested out of 31 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1771, parentID 1) is processed with stopping code 2 -### pop requested out of 30 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.909265,0.33953,-0.24074) - Old Polarization: (0.415896,0.763872,-0.493487) - New Momentum Direction: (-0.826601,0.459096,-0.325517) - New Polarization: (0.562558,0.690588,-0.454552) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1770, parentID 1) is processed with stopping code 2 -### pop requested out of 29 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1769, parentID 1) is processed with stopping code 2 -### pop requested out of 28 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.758257,-0.45065,-0.471128) - Old Polarization: (0.602201,-0.207247,-0.770975) - New Momentum Direction: (-0.465798,-0.611661,-0.639455) - New Polarization: (0.851171,-0.112116,-0.512775) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1768, parentID 1) is processed with stopping code 2 -### pop requested out of 27 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.738183,-0.53564,-0.410093) - Old Polarization: (0.627097,-0.320769,-0.709828) - New Momentum Direction: (-0.419227,-0.720867,-0.551906) - New Polarization: (0.876133,-0.161872,-0.454081) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1767, parentID 1) is processed with stopping code 2 -### pop requested out of 26 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.605379,-0.57627,0.549025) - Old Polarization: (0.792241,-0.369872,0.485333) - New Momentum Direction: (0.605379,-0.57627,0.549025) - New Polarization: (0.792241,0.369872,-0.485333) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.605379,-0.57627,0.549025) - Old Polarization: (0.792241,0.369872,-0.485333) - New Momentum Direction: (0.605379,0.57627,0.549025) - New Polarization: (-0.792241,0.369872,0.485333) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.605379,0.57627,0.549025) - Old Polarization: (-0.792241,0.369872,0.485333) - New Momentum Direction: (0.605379,0.57627,-0.549025) - New Polarization: (0.792241,-0.369872,0.485333) - *** TotalInternalReflection *** -No Absorbtion length specified -Scattering Photon! -Old Momentum Direction: (0.605379,0.57627,-0.549025) -Old Polarization: (0.792241,-0.369872,0.485333) -New Polarization: (0.66928,-0.466774,0.461984) -Polarization Change: (0.713762,-0.497797,0.492689) -New Momentum Direction: (-0.444263,-0.861353,-0.267789) -Momentum Change: (-0.441837,-0.85665,-0.266327) - Photon at Boundary! - Old Momentum Direction: (-0.441837,-0.85665,-0.266327) - Old Polarization: (0.713762,-0.497797,0.492689) - New Momentum Direction: (-0.595364,-0.718857,-0.358869) - New Polarization: (-0.635181,0.694637,-0.337675) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1766, parentID 1) is processed with stopping code 2 -### pop requested out of 25 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.708254,-0.0199228,0.705676) - Old Polarization: (0.663903,0.321056,0.675393) - New Momentum Direction: (-0.956755,-0.0269129,0.289648) - New Polarization: (-0.289218,0.194804,-0.937232) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1765, parentID 1) is processed with stopping code 2 -### pop requested out of 24 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.647436,-0.753721,-0.112834) - Old Polarization: (0.738782,-0.584337,-0.335785) - New Momentum Direction: (-0.875398,-0.458697,-0.152563) - New Polarization: (-0.368713,0.837679,-0.40292) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1764, parentID 1) is processed with stopping code 2 -### pop requested out of 23 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.644525,-0.75828,-0.0979742) - Old Polarization: (0.742378,-0.58999,-0.317468) - New Momentum Direction: (-0.871447,-0.472263,-0.132469) - New Polarization: (-0.397768,0.838468,-0.372494) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1763, parentID 1) is processed with stopping code 2 -### pop requested out of 22 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.747871,0.143588,0.648129) - Old Polarization: (0.614885,0.517822,0.594792) - New Momentum Direction: (-0.43221,0.195051,0.880426) - New Polarization: (0.869237,0.350003,0.349178) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1762, parentID 1) is processed with stopping code 2 -### pop requested out of 21 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1761, parentID 1) is processed with stopping code 2 -### pop requested out of 20 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.853348,0.407486,0.325196) - Old Polarization: (0.484376,0.850388,0.205475) - New Momentum Direction: (-0.71033,0.550151,0.439051) - New Polarization: (0.676572,0.705697,0.210339) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1760, parentID 1) is processed with stopping code 2 -### pop requested out of 19 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.607589,-0.56552,0.557694) - Old Polarization: (0.790019,-0.357913,0.497764) - New Momentum Direction: (0.607589,-0.56552,0.557694) - New Polarization: (0.790019,0.357913,-0.497764) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.607589,-0.56552,0.557694) - Old Polarization: (0.790019,0.357913,-0.497764) - New Momentum Direction: (0.607589,0.56552,0.557694) - New Polarization: (-0.790019,0.357913,0.497764) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.607589,0.56552,0.557694) - Old Polarization: (-0.790019,0.357913,0.497764) - New Momentum Direction: (0.607589,0.56552,-0.557694) - New Polarization: (0.790019,-0.357913,0.497764) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.607589,0.56552,-0.557694) - Old Polarization: (0.790019,-0.357913,0.497764) - New Momentum Direction: (-0.607589,0.56552,-0.557694) - New Polarization: (0.790019,0.357913,-0.497764) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.607589,0.56552,-0.557694) - Old Polarization: (0.790019,0.357913,-0.497764) - New Momentum Direction: (-0.607589,-0.56552,-0.557694) - New Polarization: (-0.790019,0.357913,0.497764) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.607589,-0.56552,-0.557694) - Old Polarization: (-0.790019,0.357913,0.497764) - New Momentum Direction: (-0.607589,-0.56552,0.557694) - New Polarization: (0.790019,-0.357913,0.497764) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1759, parentID 1) is processed with stopping code 2 -### pop requested out of 18 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.895937,0.442515,0.0384389) - Old Polarization: (0.432747,0.889108,-0.149052) - New Momentum Direction: (-0.799131,0.598902,0.0520235) - New Polarization: (0.592843,0.799465,-0.0969169) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1758, parentID 1) is processed with stopping code 2 -### pop requested out of 17 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.821362,0.351879,0.448938) - Old Polarization: (0.52496,0.774176,0.35365) - New Momentum Direction: (-0.633618,0.477255,0.608898) - New Polarization: (0.74074,0.601348,0.299474) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1757, parentID 1) is processed with stopping code 2 -### pop requested out of 16 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.595235,-0.660055,0.458282) - Old Polarization: (0.803049,-0.468475,0.368297) - New Momentum Direction: (-0.595235,0.660055,0.458282) - New Polarization: (-0.803049,-0.468475,-0.368297) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.595235,0.660055,0.458282) - Old Polarization: (-0.803049,-0.468475,-0.368297) - New Momentum Direction: (0.595235,0.660055,0.458282) - New Polarization: (-0.803049,0.468475,0.368297) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.595235,0.660055,0.458282) - Old Polarization: (-0.803049,0.468475,0.368297) - New Momentum Direction: (0.595235,0.660055,-0.458282) - New Polarization: (0.803049,-0.468475,0.368297) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.595235,0.660055,-0.458282) - Old Polarization: (0.803049,-0.468475,0.368297) - New Momentum Direction: (0.595235,-0.660055,-0.458282) - New Polarization: (-0.803049,-0.468475,-0.368297) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.595235,-0.660055,-0.458282) - Old Polarization: (-0.803049,-0.468475,-0.368297) - New Momentum Direction: (-0.595235,-0.660055,-0.458282) - New Polarization: (-0.803049,0.468475,0.368297) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.595235,-0.660055,-0.458282) - Old Polarization: (-0.803049,0.468475,0.368297) - New Momentum Direction: (-0.595235,-0.660055,0.458282) - New Polarization: (0.803049,-0.468475,0.368297) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.595235,-0.660055,0.458282) - Old Polarization: (0.803049,-0.468475,0.368297) - New Momentum Direction: (-0.595235,0.660055,0.458282) - New Polarization: (-0.803049,-0.468475,-0.368297) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.595235,0.660055,0.458282) - Old Polarization: (-0.803049,-0.468475,-0.368297) - New Momentum Direction: (0.595235,0.660055,0.458282) - New Polarization: (-0.803049,0.468475,0.368297) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.595235,0.660055,0.458282) - Old Polarization: (-0.803049,0.468475,0.368297) - New Momentum Direction: (0.595235,-0.660055,0.458282) - New Polarization: (0.803049,0.468475,-0.368297) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.595235,-0.660055,0.458282) - Old Polarization: (0.803049,0.468475,-0.368297) - New Momentum Direction: (0.595235,-0.660055,-0.458282) - New Polarization: (-0.803049,-0.468475,-0.368297) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.595235,-0.660055,-0.458282) - Old Polarization: (-0.803049,-0.468475,-0.368297) - New Momentum Direction: (-0.595235,-0.660055,-0.458282) - New Polarization: (-0.803049,0.468475,0.368297) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.595235,-0.660055,-0.458282) - Old Polarization: (-0.803049,0.468475,0.368297) - New Momentum Direction: (-0.595235,0.660055,-0.458282) - New Polarization: (0.803049,0.468475,-0.368297) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.595235,0.660055,-0.458282) - Old Polarization: (0.803049,0.468475,-0.368297) - New Momentum Direction: (0.595235,0.660055,-0.458282) - New Polarization: (0.803049,-0.468475,0.368297) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.595235,0.660055,-0.458282) - Old Polarization: (0.803049,-0.468475,0.368297) - New Momentum Direction: (0.595235,0.660055,0.458282) - New Polarization: (-0.803049,0.468475,0.368297) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.595235,0.660055,0.458282) - Old Polarization: (-0.803049,0.468475,0.368297) - New Momentum Direction: (0.595235,-0.660055,0.458282) - New Polarization: (0.803049,0.468475,-0.368297) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.595235,-0.660055,0.458282) - Old Polarization: (0.803049,0.468475,-0.368297) - New Momentum Direction: (-0.595235,-0.660055,0.458282) - New Polarization: (0.803049,-0.468475,0.368297) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.595235,-0.660055,0.458282) - Old Polarization: (0.803049,-0.468475,0.368297) - New Momentum Direction: (-0.595235,-0.660055,-0.458282) - New Polarization: (-0.803049,0.468475,0.368297) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.595235,-0.660055,-0.458282) - Old Polarization: (-0.803049,0.468475,0.368297) - New Momentum Direction: (-0.595235,0.660055,-0.458282) - New Polarization: (0.803049,0.468475,-0.368297) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.595235,0.660055,-0.458282) - Old Polarization: (0.803049,0.468475,-0.368297) - New Momentum Direction: (0.595235,0.660055,-0.458282) - New Polarization: (0.803049,-0.468475,0.368297) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.595235,0.660055,-0.458282) - Old Polarization: (0.803049,-0.468475,0.368297) - New Momentum Direction: (0.595235,-0.660055,-0.458282) - New Polarization: (-0.803049,-0.468475,-0.368297) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.595235,-0.660055,-0.458282) - Old Polarization: (-0.803049,-0.468475,-0.368297) - New Momentum Direction: (0.595235,-0.660055,0.458282) - New Polarization: (0.803049,0.468475,-0.368297) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.595235,-0.660055,0.458282) - Old Polarization: (0.803049,0.468475,-0.368297) - New Momentum Direction: (-0.595235,-0.660055,0.458282) - New Polarization: (0.803049,-0.468475,0.368297) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.595235,-0.660055,0.458282) - Old Polarization: (0.803049,-0.468475,0.368297) - New Momentum Direction: (-0.595235,0.660055,0.458282) - New Polarization: (-0.803049,-0.468475,-0.368297) - *** TotalInternalReflection *** -No Absorbtion length specified - -** Photon Absorbed! ** -Track (trackID 1756, parentID 1) is processed with stopping code 2 -### pop requested out of 15 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1755, parentID 1) is processed with stopping code 2 -### pop requested out of 14 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1754, parentID 1) is processed with stopping code 2 -### pop requested out of 13 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.739755,-0.50937,-0.439665) - Old Polarization: (0.624758,-0.2773,-0.729919) - New Momentum Direction: (-0.403988,-0.69248,-0.597717) - New Polarization: (0.88336,-0.125581,-0.451559) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1753, parentID 1) is processed with stopping code 2 -### pop requested out of 12 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.901332,0.43281,-0.0166001) - Old Polarization: (0.4258,0.878411,-0.216998) - New Momentum Direction: (-0.81045,0.585378,-0.0224516) - New Polarization: (0.580497,0.797362,-0.16504) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1752, parentID 1) is processed with stopping code 2 -### pop requested out of 11 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1751, parentID 1) is processed with stopping code 2 -### pop requested out of 10 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.629817,-0.776594,-0.0152561) - Old Polarization: (0.760511,-0.612541,-0.215444) - New Momentum Direction: (-0.851577,-0.523824,-0.0206277) - New Polarization: (-0.512444,0.840083,-0.177935) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1750, parentID 1) is processed with stopping code 2 -### pop requested out of 9 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.636336,-0.766826,-0.0839857) - Old Polarization: (0.75053,-0.59027,-0.297131) - New Momentum Direction: (-0.865207,-0.488238,-0.114193) - New Polarization: (-0.427584,0.837373,-0.340556) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1749, parentID 1) is processed with stopping code 2 -### pop requested out of 8 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.648582,-0.272219,0.710802) - Old Polarization: (0.736725,0.0101329,0.676116) - New Momentum Direction: (-0.87873,-0.368815,0.303001) - New Polarization: (-0.20326,-0.28523,-0.936658) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1748, parentID 1) is processed with stopping code 2 -### pop requested out of 7 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.752612,0.129496,0.645605) - Old Polarization: (0.609091,0.509417,0.607867) - New Momentum Direction: (-0.463587,0.174254,0.868747) - New Polarization: (0.852216,0.356049,0.383349) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1747, parentID 1) is processed with stopping code 2 -### pop requested out of 6 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.900628,0.238512,-0.363292) - Old Polarization: (0.427485,0.636745,-0.641727) - New Momentum Direction: (-0.80826,0.323159,-0.492224) - New Polarization: (0.583691,0.549883,-0.59744) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1746, parentID 1) is processed with stopping code 2 -### pop requested out of 5 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.778594,-0.381805,-0.498012) - Old Polarization: (0.577201,-0.124329,-0.807082) - New Momentum Direction: (-0.526453,-0.517288,-0.67473) - New Polarization: (0.815007,-0.0810655,-0.573753) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1745, parentID 1) is processed with stopping code 2 -### pop requested out of 4 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.603898,-0.775782,0.182946) - Old Polarization: (0.792048,-0.609782,0.0287388) - New Momentum Direction: (-0.817294,-0.520315,0.247593) - New Polarization: (-0.436802,0.839679,0.322712) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1744, parentID 1) is processed with stopping code 2 -### pop requested out of 3 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1743, parentID 1) is processed with stopping code 2 -### pop requested out of 2 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.879303,0.444111,0.172023) - Old Polarization: (0.453165,0.891295,0.0153206) - New Momentum Direction: (-0.764603,0.600992,0.23279) - New Polarization: (0.627554,0.776523,0.056468) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1742, parentID 1) is processed with stopping code 2 -### pop requested out of 1 stacked tracks. - - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 29 -Track (trackID 1, parentID 0) is processed with stopping code 4 -### pop requested out of 30 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.431768,0.3307,0.839175) - Old Polarization: (0.901496,0.127597,0.41355) - New Momentum Direction: (-0.583543,0.446948,0.678023) - New Polarization: (-0.141591,0.766133,-0.62689) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1808, parentID 1) is processed with stopping code 2 -### pop requested out of 29 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.97532,-0.194171,-0.105115) - Old Polarization: (0.197332,-0.552975,-0.809493) - New Momentum Direction: (-0.95464,-0.261854,-0.141755) - New Polarization: (0.279165,-0.621477,-0.732006) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1807, parentID 1) is processed with stopping code 2 -### pop requested out of 28 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.974093,0.0518039,-0.220133) - Old Polarization: (0.202652,-0.232076,-0.951353) - New Momentum Direction: (-0.951965,0.0701439,-0.298066) - New Polarization: (0.28769,-0.128495,-0.949065) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1806, parentID 1) is processed with stopping code 2 -### pop requested out of 27 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.96176,0.134227,-0.238747) - Old Polarization: (0.222412,-0.125975,-0.96678) - New Momentum Direction: (-0.92802,0.182566,-0.324727) - New Polarization: (0.329766,-0.00291524,-0.944058) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1805, parentID 1) is processed with stopping code 2 -### pop requested out of 26 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.444065,0.544008,0.711942) - Old Polarization: (0.883217,0.399482,0.245644) - New Momentum Direction: (-0.444065,0.544008,-0.711942) - New Polarization: (-0.677458,-0.723879,-0.130573) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.444065,0.544008,-0.711942) - Old Polarization: (-0.677458,-0.723879,-0.130573) - New Momentum Direction: (-0.444065,-0.544008,-0.711942) - New Polarization: (0.677458,-0.723879,0.130573) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (-0.444065,-0.544008,-0.711942) - Old Polarization: (0.677458,-0.723879,0.130573) - New Momentum Direction: (0.444065,-0.544008,-0.711942) - New Polarization: (0.677458,0.723879,-0.130573) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.444065,-0.544008,-0.711942) - Old Polarization: (0.677458,0.723879,-0.130573) - New Momentum Direction: (0.601773,-0.73721,-0.307232) - New Polarization: (0.798158,0.541374,0.264306) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1804, parentID 1) is processed with stopping code 2 -### pop requested out of 25 stacked tracks. -Scattering Photon! -Old Momentum Direction: (-0.603437,-0.30064,0.738565) -Old Polarization: (0.678116,-0.680787,0.276927) -New Polarization: (0.684968,-0.587187,0.320176) -Polarization Change: (0.715498,-0.613358,0.334447) -New Momentum Direction: (-0.378824,-0.734367,-0.591391) -Momentum Change: (-0.372806,-0.722701,-0.581996) - Photon at Boundary! - Old Momentum Direction: (-0.372806,-0.722701,-0.581996) - Old Polarization: (0.715498,-0.613358,0.334447) - New Momentum Direction: (-0.50624,-0.345167,-0.790304) - New Polarization: (0.0698929,0.896973,-0.436526) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1803, parentID 1) is processed with stopping code 2 -### pop requested out of 24 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1802, parentID 1) is processed with stopping code 2 -### pop requested out of 23 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.562117,0.741063,0.36722) - Old Polarization: (0.731872,0.652504,-0.196473) - New Momentum Direction: (-0.761644,0.415121,0.497567) - New Polarization: (-0.254167,-0.897705,0.359895) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1801, parentID 1) is processed with stopping code 2 -### pop requested out of 22 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.743674,0.668542,-0.000312649) - Old Polarization: (0.499258,0.555055,-0.665323) - New Momentum Direction: (-0.418743,0.908105,-0.000424682) - New Polarization: (0.777935,0.358478,-0.516053) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1800, parentID 1) is processed with stopping code 2 -### pop requested out of 21 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.836412,-0.456759,0.302962) - Old Polarization: (0.380514,-0.881739,-0.27883) - New Momentum Direction: (-0.668606,-0.619691,0.411033) - New Polarization: (0.598098,-0.776596,-0.197935) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1799, parentID 1) is processed with stopping code 2 -### pop requested out of 20 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.940217,0.247162,-0.234315) - Old Polarization: (0.246455,0.0189245,-0.968969) - New Momentum Direction: (-0.887245,0.334772,-0.317371) - New Polarization: (0.378259,0.134184,-0.915923) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1798, parentID 1) is processed with stopping code 2 -### pop requested out of 19 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.454833,0.0937191,0.885632) - Old Polarization: (0.867623,-0.177692,0.464388) - New Momentum Direction: (-0.617676,0.127273,0.776065) - New Polarization: (-0.759942,0.157369,-0.630652) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1797, parentID 1) is processed with stopping code 2 -### pop requested out of 18 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1796, parentID 1) is processed with stopping code 2 -### pop requested out of 17 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1795, parentID 1) is processed with stopping code 2 -### pop requested out of 16 stacked tracks. -Scattering Photon! -Old Momentum Direction: (-0.431976,0.231808,0.871586) -Old Polarization: (0.89579,-0.00188862,0.444474) -New Polarization: (0.633592,0.600386,-0.28766) -Polarization Change: (0.6894,0.653269,-0.312998) -New Momentum Direction: (-0.598596,0.752103,0.302528) -Momentum Change: (-0.59401,0.746341,0.300211) - -** Photon Absorbed! ** -Track (trackID 1794, parentID 1) is processed with stopping code 2 -### pop requested out of 15 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.910667,-0.396638,0.115605) - Old Polarization: (0.28516,-0.80593,-0.518807) - New Momentum Direction: (-0.828364,-0.537812,0.156752) - New Polarization: (0.445532,-0.802122,-0.39762) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1793, parentID 1) is processed with stopping code 2 -### pop requested out of 14 stacked tracks. -Scattering Photon! -Old Momentum Direction: (-0.437376,0.200178,0.876716) -Old Polarization: (0.890194,-0.0418467,0.453655) -New Polarization: (0.542813,-0.172897,0.664548) -Polarization Change: (0.62014,-0.197528,0.759217) -New Momentum Direction: (0.282813,0.958869,0.0317709) -Momentum Change: (0.282753,0.958667,0.0317641) - Photon at Boundary! - Old Momentum Direction: (0.282753,0.958667,0.0317641) - Old Polarization: (0.62014,-0.197528,0.759217) - New Momentum Direction: (0.383855,0.922386,0.0431218) - New Polarization: (0.691464,-0.318078,0.648617) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1792, parentID 1) is processed with stopping code 2 -### pop requested out of 13 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1791, parentID 1) is processed with stopping code 2 -### pop requested out of 12 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.715367,0.697234,0.0459801) - Old Polarization: (0.535397,0.589226,-0.605114) - New Momentum Direction: (0.715367,0.697234,0.0459801) - New Polarization: (0.356753,-0.421027,0.833944) - *** FresnelReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.715367,0.697234,0.0459801) - Old Polarization: (0.356753,-0.421027,0.833944) - New Momentum Direction: (0.972976,0.222276,0.0625379) - New Polarization: (0.125788,-0.737349,0.663697) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1790, parentID 1) is processed with stopping code 2 -### pop requested out of 11 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.53419,0.727173,0.431115) - Old Polarization: (0.76678,0.631511,-0.115077) - New Momentum Direction: (-0.724971,0.363447,0.585084) - New Polarization: (-0.100635,-0.896227,0.432029) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1789, parentID 1) is processed with stopping code 2 -### pop requested out of 10 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1788, parentID 1) is processed with stopping code 2 -### pop requested out of 9 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1787, parentID 1) is processed with stopping code 2 -### pop requested out of 8 stacked tracks. -Scattering Photon! -Old Momentum Direction: (-0.537102,0.731018,0.420873) -Old Polarization: (0.762426,0.634181,-0.128537) -New Polarization: (0.656034,0.324444,0.470432) -Polarization Change: (0.754037,0.372911,0.540708) -New Momentum Direction: (0.105968,-0.844869,0.632245) -Momentum Change: (0.0999178,-0.796633,0.596148) - Photon at Boundary! - Old Momentum Direction: (0.0999178,-0.796633,0.596148) - Old Polarization: (0.754037,0.372911,0.540708) - New Momentum Direction: (0.0999178,-0.796633,-0.596148) - New Polarization: (-0.754037,-0.372911,0.540708) - *** TotalInternalReflection *** -No Absorbtion length specified - Photon at Boundary! - Old Momentum Direction: (0.0999178,-0.796633,-0.596148) - Old Polarization: (-0.754037,-0.372911,0.540708) - New Momentum Direction: (0.135757,-0.570528,-0.80998) - New Polarization: (-0.43017,0.702522,-0.566936) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1786, parentID 1) is processed with stopping code 2 -### pop requested out of 7 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.908388,-0.399746,0.122614) - Old Polarization: (0.28784,-0.810544,-0.510065) - New Momentum Direction: (-0.823887,-0.541838,0.166199) - New Polarization: (0.44993,-0.803625,-0.389551) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1785, parentID 1) is processed with stopping code 2 -### pop requested out of 6 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1784, parentID 1) is processed with stopping code 2 -### pop requested out of 5 stacked tracks. - -** Photon Absorbed! ** -Track (trackID 1783, parentID 1) is processed with stopping code 2 -### pop requested out of 4 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.438872,0.195721,0.876975) - Old Polarization: (0.888991,-0.0473995,0.455464) - New Momentum Direction: (-0.595323,0.265493,0.758356) - New Polarization: (-0.577071,0.515465,-0.63347) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1782, parentID 1) is processed with stopping code 2 -### pop requested out of 3 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.954478,-0.297467,-0.0220334) - Old Polarization: (0.228158,-0.68051,-0.696311) - New Momentum Direction: (-0.91475,-0.402918,-0.0298442) - New Polarization: (0.343724,-0.737281,-0.58161) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1781, parentID 1) is processed with stopping code 2 -### pop requested out of 2 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.433481,0.462214,0.773597) - Old Polarization: (0.897787,0.295736,0.326371) - New Momentum Direction: (-0.586797,0.625692,0.513983) - New Polarization: (0.321977,0.762713,-0.560892) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1780, parentID 1) is processed with stopping code 2 -### pop requested out of 1 stacked tracks. - - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 10 -Track (trackID 1, parentID 0) is processed with stopping code 4 -### pop requested out of 11 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.19726,0.527572,-0.826291) - Old Polarization: (0.885918,-0.456856,-0.0801999) - New Momentum Direction: (0.266168,0.711867,-0.649923) - New Polarization: (0.963159,-0.223309,0.149857) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1818, parentID 1) is processed with stopping code 2 -### pop requested out of 10 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.235821,0.716731,-0.656266) - Old Polarization: (0.961141,-0.0722868,0.266427) - New Momentum Direction: (0.318439,0.336565,-0.886183) - New Polarization: (0.947359,-0.145813,0.285043) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1817, parentID 1) is processed with stopping code 2 -### pop requested out of 9 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.10417,0.422024,-0.90058) - Old Polarization: (0.700055,-0.674308,-0.235015) - New Momentum Direction: (0.140388,0.568753,-0.810439) - New Polarization: (0.857216,0.339785,0.386946) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1816, parentID 1) is processed with stopping code 2 -### pop requested out of 8 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.288863,0.275476,-0.916881) - Old Polarization: (-0.101841,-0.961116,-0.256681) - New Momentum Direction: (-0.390854,0.37274,-0.841605) - New Polarization: (-0.912402,-0.0362269,0.407689) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1815, parentID 1) is processed with stopping code 2 -### pop requested out of 7 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.406868,0.284085,-0.86819) - Old Polarization: (-0.33073,-0.931746,-0.149888) - New Momentum Direction: (-0.552639,0.385865,-0.738714) - New Polarization: (-0.768217,-0.579537,0.271991) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1814, parentID 1) is processed with stopping code 2 -### pop requested out of 6 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.503661,0.337092,-0.795421) - Old Polarization: (-0.539018,-0.84215,-0.0155884) - New Momentum Direction: (-0.680293,0.455309,-0.574365) - New Polarization: (-0.57323,-0.818851,0.0298324) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1813, parentID 1) is processed with stopping code 2 -### pop requested out of 5 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.0868032,0.306469,-0.947914) - Old Polarization: (0.303824,-0.898033,-0.318164) - New Momentum Direction: (-0.117483,0.414789,-0.902301) - New Polarization: (-0.212138,0.877138,0.430843) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1812, parentID 1) is processed with stopping code 2 -### pop requested out of 4 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.171731,0.473221,-0.864043) - Old Polarization: (0.81512,-0.560815,-0.145141) - New Momentum Direction: (0.232907,0.641795,-0.730653) - New Polarization: (0.963329,-0.0493261,0.263748) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1811, parentID 1) is processed with stopping code 2 -### pop requested out of 3 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.235803,0.574923,-0.783493) - Old Polarization: (0.933441,-0.358279,0.0180286) - New Momentum Direction: (0.320494,0.781413,-0.535423) - New Polarization: (0.932878,-0.358462,0.0352523) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1810, parentID 1) is processed with stopping code 2 -### pop requested out of 2 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0701175,0.901118,-0.427866) - Old Polarization: (0.620062,0.296621,0.726319) - New Momentum Direction: (0.0948496,0.809946,-0.578785) - New Polarization: (0.708316,-0.463441,-0.532457) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1809, parentID 1) is processed with stopping code 2 -### pop requested out of 1 stacked tracks. - - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 3 -Track (trackID 1, parentID 0) is processed with stopping code 4 -### pop requested out of 4 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.935963,-0.0810235,-0.34265) - Old Polarization: (0.151242,-0.786297,0.599052) - New Momentum Direction: (0.878241,-0.110045,-0.465384) - New Polarization: (-0.261274,-0.925496,-0.274214) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1821, parentID 1) is processed with stopping code 2 -### pop requested out of 3 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.961645,0.0391392,-0.271491) - Old Polarization: (0.272226,-0.2576,0.927111) - New Momentum Direction: (0.928124,0.0531189,-0.368462) - New Polarization: (-0.370753,0.042596,-0.927754) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1820, parentID 1) is processed with stopping code 2 -### pop requested out of 2 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.897787,0.246599,-0.364922) - Old Polarization: (0.0158559,0.809923,0.586322) - New Momentum Direction: (0.804797,0.332332,-0.49179) - New Polarization: (-0.0292504,0.849756,0.526364) - *** FresnelRefraction *** -No Absorbtion length specified -Track (trackID 1819, 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 1823, parentID 1) is processed with stopping code 2 +Track (trackID 1674, parentID 1) is processed with stopping code 2 ### pop requested out of 1 stacked tracks. -Track (trackID 1822, parentID 1) is processed with stopping code 2 +Track (trackID 1673, 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=5.53s Real=6.35s Sys=0.7s +number of event = 1 User=4.81s Real=5.63s Sys=0.64s exit diff --git a/source/GNUmakefile b/source/GNUmakefile index 9030225c46..3874512fd3 100644 --- a/source/GNUmakefile +++ b/source/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.16 1999/12/15 16:36:30 stesting Exp $ +# $Id: GNUmakefile,v 1.20 2000/06/21 11:02:54 johna Exp $ # ----------------------------------------------------------------- # "gmake" makes default libraries for each subdomain. # "gmake glob" makes global libraries for each subdomain. @@ -30,32 +30,32 @@ unique := $(shell echo $$$$) all: ifdef G4USE_HEPODBMS @$(ECHO) Making granular libraries with HepODBMS option ... - @for dir in $(SUBDIR4); do (cd $$dir; $(MAKE) cleandb); done;: + @for dir in $(SUBDIR4); do (cd $$dir && $(MAKE) cleandb); done;: @if [ ! -f $(G4TMPDIR)/schema/G4SCHEMA ] ; then \ $(ECHO) "Temporary boot file does not exist. Stop." ; exit 1 ; \ fi endif - @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;: + @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;: + @for dir in $(SUBDIR4); do (cd $$dir && $(MAKE)); done;: endif $(MAKE) libmap glob global: ifdef G4USE_HEPODBMS @$(ECHO) Making global libraries with HepODBMS option ... - @for dir in $(SUBDIR4); do (cd $$dir; $(MAKE) cleandb); done;: + @for dir in $(SUBDIR4); do (cd $$dir && $(MAKE) cleandb); done;: @if [ ! -f $(G4TMPDIR)/schema/G4SCHEMA ] ; then \ $(ECHO) "Temporary boot file does not exist. Stop." ; exit 1 ; \ fi endif - @for dir in $(SUBDIR1); do (cd $$dir; $(MAKE) global); done;: - @for dir in $(SUBDIR2); do (cd $$dir; $(MAKE)); done;: - @for dir in $(SUBDIR3); do (cd $$dir; $(MAKE)); done;: + @for dir in $(SUBDIR1); do (cd $$dir && $(MAKE) global); 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) global); done;: + @for dir in $(SUBDIR4); do (cd $$dir && $(MAKE) global); done;: endif @@ -68,12 +68,13 @@ libmap: $(G4LIBDIR)/liblist @echo "Searching $(G4INSTALL)/source" @echo ' for GNUmakefiles containing "name" and sorting...' @find $(G4INSTALL)/source \ - -name GNUmakefile -exec $(GREP) -l 'name :=' {} \; \ + -name GNUmakefile -exec $(GREP) -l '^ *name *:=' {} \; \ | sort \ > /tmp/G4_all_lib_makefiles.$(unique); - @echo "Weeding out global level GNUmakefiles and non-libraries..." + @echo "Weeding out /test[s]/, global level GNUmakefiles, etc..." @for i in `cat /tmp/G4_all_lib_makefiles.$(unique)`; \ do \ + echo $$i | $(GREP) -q '/tests\?/' || \ $(GREP) -q SUBDIR $$i || \ $(GREP) -q G4hepgeometry $$i || \ echo $$i >> /tmp/G4_granlib_makefiles.$(unique); \ @@ -82,7 +83,7 @@ libmap: $(G4LIBDIR)/liblist @touch /tmp/G4libname.map.starter.$(unique); @for i in `cat /tmp/G4_granlib_makefiles.$(unique)`; \ do \ - $(GREP) 'name :=' $$i | cut -d \ -f 3 \ + $(GREP) '^ *name *:=' $$i | cut -d \ -f 3 \ >> /tmp/G4libname.map.starter.$(unique); \ echo $$i >> /tmp/G4libname.map.starter.$(unique); \ done @@ -103,9 +104,9 @@ $(G4LIBDIR)/liblist: $(G4INSTALL)/config/liblist.c 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 + @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 @rm -rf $(G4LIBDIR)/libname.map clean: diff --git a/source/digits+hits/detector/include/G4HCtable.hh b/source/digits+hits/detector/include/G4HCtable.hh index db76d39fed..4af2b0bb7e 100644 --- a/source/digits+hits/detector/include/G4HCtable.hh +++ b/source/digits+hits/detector/include/G4HCtable.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4HCtable.hh,v 1.2.2.1.2.1 1999/12/07 20:47:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4HCtable_H diff --git a/source/digits+hits/detector/include/G4SDManager.hh b/source/digits+hits/detector/include/G4SDManager.hh index f0f257b9eb..e94ffd7b06 100644 --- a/source/digits+hits/detector/include/G4SDManager.hh +++ b/source/digits+hits/detector/include/G4SDManager.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4SDManager.hh,v 1.2.4.1 1999/12/07 20:47:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4SDManager_h diff --git a/source/digits+hits/detector/include/G4SDStructure.hh b/source/digits+hits/detector/include/G4SDStructure.hh index 48c5723528..fa1d7e756b 100644 --- a/source/digits+hits/detector/include/G4SDStructure.hh +++ b/source/digits+hits/detector/include/G4SDStructure.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4SDStructure.hh,v 1.2.2.1.2.1 1999/12/07 20:47:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4SDStructure_h diff --git a/source/digits+hits/detector/include/G4SDmessenger.hh b/source/digits+hits/detector/include/G4SDmessenger.hh index 961589793f..6e94dd028f 100644 --- a/source/digits+hits/detector/include/G4SDmessenger.hh +++ b/source/digits+hits/detector/include/G4SDmessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4SDmessenger.hh,v 1.2.4.1 1999/12/07 20:47:42 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4SDmessenger_h diff --git a/source/digits+hits/detector/include/G4SensitiveVolumeList.hh b/source/digits+hits/detector/include/G4SensitiveVolumeList.hh index e835f50658..e1276cc8ac 100644 --- a/source/digits+hits/detector/include/G4SensitiveVolumeList.hh +++ b/source/digits+hits/detector/include/G4SensitiveVolumeList.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4SensitiveVolumeList.hh,v 1.2.2.1.2.1 1999/12/07 20:47:42 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 03e6baa89a..d5805f358c 100644 --- a/source/digits+hits/detector/include/G4SensitiveVolumeList.icc +++ b/source/digits+hits/detector/include/G4SensitiveVolumeList.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4SensitiveVolumeList.icc,v 1.1.8.1.2.1 1999/12/07 20:47:42 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 7737c901bb..182eeb04d0 100644 --- a/source/digits+hits/detector/include/G4VReadOutGeometry.hh +++ b/source/digits+hits/detector/include/G4VReadOutGeometry.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VReadOutGeometry.hh,v 1.1.10.1 1999/12/07 20:47:42 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------ diff --git a/source/digits+hits/detector/include/G4VSensitiveDetector.hh b/source/digits+hits/detector/include/G4VSensitiveDetector.hh index b1797fa647..f3bbef5195 100644 --- a/source/digits+hits/detector/include/G4VSensitiveDetector.hh +++ b/source/digits+hits/detector/include/G4VSensitiveDetector.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VSensitiveDetector.hh,v 1.2.2.1.2.1 1999/12/07 20:47:43 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4VSensitiveDetector_h diff --git a/source/digits+hits/detector/src/G4HCtable.cc b/source/digits+hits/detector/src/G4HCtable.cc index 525fe66f6f..e5b790fc0d 100644 --- a/source/digits+hits/detector/src/G4HCtable.cc +++ b/source/digits+hits/detector/src/G4HCtable.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4HCtable.cc,v 1.1.8.1.2.1 1999/12/07 20:47:44 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4HCtable.hh" diff --git a/source/digits+hits/detector/src/G4SDManager.cc b/source/digits+hits/detector/src/G4SDManager.cc index 07b794acfe..0a65e9acb9 100644 --- a/source/digits+hits/detector/src/G4SDManager.cc +++ b/source/digits+hits/detector/src/G4SDManager.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4SDManager.cc,v 1.1.10.1.2.1 1999/12/08 17:33:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4SDManager.hh" diff --git a/source/digits+hits/detector/src/G4SDStructure.cc b/source/digits+hits/detector/src/G4SDStructure.cc index fc222c5390..4c205211d5 100644 --- a/source/digits+hits/detector/src/G4SDStructure.cc +++ b/source/digits+hits/detector/src/G4SDStructure.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4SDStructure.cc,v 1.1.8.1.2.1.2.1 1999/12/08 17:33:17 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4SDStructure diff --git a/source/digits+hits/detector/src/G4SDmessenger.cc b/source/digits+hits/detector/src/G4SDmessenger.cc index 836d2e3204..b8503c40b8 100644 --- a/source/digits+hits/detector/src/G4SDmessenger.cc +++ b/source/digits+hits/detector/src/G4SDmessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4SDmessenger.cc,v 1.1.10.1 1999/12/07 20:47:45 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // --------------------------------------------------------------------- diff --git a/source/digits+hits/detector/src/G4SensitiveVolumeList.cc b/source/digits+hits/detector/src/G4SensitiveVolumeList.cc index 5bf7f7c158..1d06b09c42 100644 --- a/source/digits+hits/detector/src/G4SensitiveVolumeList.cc +++ b/source/digits+hits/detector/src/G4SensitiveVolumeList.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4SensitiveVolumeList.cc,v 1.1.10.1 1999/12/07 20:47:45 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // -------------------------------------------------------------- // GEANT 4 class implementation file diff --git a/source/digits+hits/detector/src/G4VReadOutGeometry.cc b/source/digits+hits/detector/src/G4VReadOutGeometry.cc index 2129f13e2b..8cc4d03702 100644 --- a/source/digits+hits/detector/src/G4VReadOutGeometry.cc +++ b/source/digits+hits/detector/src/G4VReadOutGeometry.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VReadOutGeometry.cc,v 1.2.6.1 1999/12/07 20:47:45 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4VReadOutGeometry.hh" diff --git a/source/digits+hits/detector/src/G4VSensitiveDetector.cc b/source/digits+hits/detector/src/G4VSensitiveDetector.cc index 6f0b3223c3..9f6308e6de 100644 --- a/source/digits+hits/detector/src/G4VSensitiveDetector.cc +++ b/source/digits+hits/detector/src/G4VSensitiveDetector.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VSensitiveDetector.cc,v 1.1.8.1.2.1 1999/12/07 20:47:45 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VSensitiveDetector #include "G4VSensitiveDetector.hh" diff --git a/source/digits+hits/digits/include/G4DCofThisEvent.hh b/source/digits+hits/digits/include/G4DCofThisEvent.hh index 041aba35f5..a3f8c31af3 100644 --- a/source/digits+hits/digits/include/G4DCofThisEvent.hh +++ b/source/digits+hits/digits/include/G4DCofThisEvent.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4DCofThisEvent.hh,v 1.2.2.1.2.1 1999/12/07 20:47:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4DCofThisEvent_h diff --git a/source/digits+hits/digits/include/G4TDigiCollection.hh b/source/digits+hits/digits/include/G4TDigiCollection.hh index 4dd494cf70..884a6c0f60 100644 --- a/source/digits+hits/digits/include/G4TDigiCollection.hh +++ b/source/digits+hits/digits/include/G4TDigiCollection.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4TDigiCollection.hh,v 1.5.2.1.2.1 1999/12/07 20:47:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4TDigiCollection_h diff --git a/source/digits+hits/digits/include/G4VDigi.hh b/source/digits+hits/digits/include/G4VDigi.hh index 001e3c6229..0cc6f92823 100644 --- a/source/digits+hits/digits/include/G4VDigi.hh +++ b/source/digits+hits/digits/include/G4VDigi.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VDigi.hh,v 1.4.4.1 1999/12/07 20:47:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4VDigi_h diff --git a/source/digits+hits/digits/include/G4VDigiCollection.hh b/source/digits+hits/digits/include/G4VDigiCollection.hh index 53d1f6e42f..a1b5313bd1 100644 --- a/source/digits+hits/digits/include/G4VDigiCollection.hh +++ b/source/digits+hits/digits/include/G4VDigiCollection.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VDigiCollection.hh,v 1.4.4.1 1999/12/07 20:47:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4VDigiCollection_h diff --git a/source/digits+hits/digits/src/G4DCofThisEvent.cc b/source/digits+hits/digits/src/G4DCofThisEvent.cc index 6532849bf8..de19c916fa 100644 --- a/source/digits+hits/digits/src/G4DCofThisEvent.cc +++ b/source/digits+hits/digits/src/G4DCofThisEvent.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4DCofThisEvent.cc,v 1.1.8.1.2.1 1999/12/07 20:47:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4DCofThisEvent.hh" diff --git a/source/digits+hits/digits/src/G4TDigiCollection.cc b/source/digits+hits/digits/src/G4TDigiCollection.cc index e359ca2a62..eab02ba37a 100644 --- a/source/digits+hits/digits/src/G4TDigiCollection.cc +++ b/source/digits+hits/digits/src/G4TDigiCollection.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4TDigiCollection.cc,v 1.1.10.1 1999/12/07 20:47:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4TDigiCollection.hh" diff --git a/source/digits+hits/digits/src/G4VDigi.cc b/source/digits+hits/digits/src/G4VDigi.cc index fd5ed66c45..37b5f46a4d 100644 --- a/source/digits+hits/digits/src/G4VDigi.cc +++ b/source/digits+hits/digits/src/G4VDigi.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VDigi.cc,v 1.3.4.1 1999/12/07 20:47:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VDigi diff --git a/source/digits+hits/digits/src/G4VDigiCollection.cc b/source/digits+hits/digits/src/G4VDigiCollection.cc index 3389b64e20..3e69f5ebfc 100644 --- a/source/digits+hits/digits/src/G4VDigiCollection.cc +++ b/source/digits+hits/digits/src/G4VDigiCollection.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VDigiCollection.cc,v 1.3.4.1 1999/12/07 20:47:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VDigiCollection diff --git a/source/digits+hits/hits/include/G4HCofThisEvent.hh b/source/digits+hits/hits/include/G4HCofThisEvent.hh index cfd5688476..144a9a5282 100644 --- a/source/digits+hits/hits/include/G4HCofThisEvent.hh +++ b/source/digits+hits/hits/include/G4HCofThisEvent.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4HCofThisEvent.hh,v 1.2.2.1.2.1 1999/12/07 20:47:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4HCofThisEvent_h diff --git a/source/digits+hits/hits/include/G4THitsCollection.hh b/source/digits+hits/hits/include/G4THitsCollection.hh index 50cc060730..943ace1d36 100644 --- a/source/digits+hits/hits/include/G4THitsCollection.hh +++ b/source/digits+hits/hits/include/G4THitsCollection.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4THitsCollection.hh,v 1.4.2.1.2.1 1999/12/07 20:47:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4THitsCollection_h diff --git a/source/digits+hits/hits/include/G4VHit.hh b/source/digits+hits/hits/include/G4VHit.hh index a606eb4a42..3fc0017a40 100644 --- a/source/digits+hits/hits/include/G4VHit.hh +++ b/source/digits+hits/hits/include/G4VHit.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VHit.hh,v 1.3.4.1 1999/12/07 20:47:48 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4VHit_h diff --git a/source/digits+hits/hits/include/G4VHitsCollection.hh b/source/digits+hits/hits/include/G4VHitsCollection.hh index b17e34d5ac..537aa5b62f 100644 --- a/source/digits+hits/hits/include/G4VHitsCollection.hh +++ b/source/digits+hits/hits/include/G4VHitsCollection.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VHitsCollection.hh,v 1.3.4.1 1999/12/07 20:47:48 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4VHitsCollection_h diff --git a/source/digits+hits/hits/src/G4HCofThisEvent.cc b/source/digits+hits/hits/src/G4HCofThisEvent.cc index 595fe816cc..aba4bdc2d5 100644 --- a/source/digits+hits/hits/src/G4HCofThisEvent.cc +++ b/source/digits+hits/hits/src/G4HCofThisEvent.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4HCofThisEvent.cc,v 1.1.8.1.2.1 1999/12/07 20:47:48 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4HCofThisEvent.hh" diff --git a/source/digits+hits/hits/src/G4THitsCollection.cc b/source/digits+hits/hits/src/G4THitsCollection.cc index b493491fe5..16d792ec2d 100644 --- a/source/digits+hits/hits/src/G4THitsCollection.cc +++ b/source/digits+hits/hits/src/G4THitsCollection.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4THitsCollection.cc,v 1.1.10.1 1999/12/07 20:47:48 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4THitsCollection.hh" diff --git a/source/digits+hits/hits/src/G4VHit.cc b/source/digits+hits/hits/src/G4VHit.cc index eb6d90c08e..c6954dd827 100644 --- a/source/digits+hits/hits/src/G4VHit.cc +++ b/source/digits+hits/hits/src/G4VHit.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VHit.cc,v 1.1.10.1 1999/12/07 20:47:48 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VHit diff --git a/source/digits+hits/hits/src/G4VHitsCollection.cc b/source/digits+hits/hits/src/G4VHitsCollection.cc index dde56f98cd..a21324fdd1 100644 --- a/source/digits+hits/hits/src/G4VHitsCollection.cc +++ b/source/digits+hits/hits/src/G4VHitsCollection.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VHitsCollection.cc,v 1.1.10.1 1999/12/07 20:47:49 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VHitsCollection diff --git a/source/event/include/G4ClassificationOfNewTrack.hh b/source/event/include/G4ClassificationOfNewTrack.hh index e35dd3e418..662e447b49 100644 --- a/source/event/include/G4ClassificationOfNewTrack.hh +++ b/source/event/include/G4ClassificationOfNewTrack.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ClassificationOfNewTrack.hh,v 1.3 1999/12/15 14:49:38 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/event/include/G4EvManMessenger.hh b/source/event/include/G4EvManMessenger.hh index e85f8a369a..5e5a72fb9c 100644 --- a/source/event/include/G4EvManMessenger.hh +++ b/source/event/include/G4EvManMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4EvManMessenger.hh,v 1.3 1999/12/15 14:49:38 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4EvManMessenger_h diff --git a/source/event/include/G4Event.hh b/source/event/include/G4Event.hh index a0917d91ac..31cb8eba59 100644 --- a/source/event/include/G4Event.hh +++ b/source/event/include/G4Event.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Event.hh,v 1.3 1999/12/15 14:49:38 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4Event_h diff --git a/source/event/include/G4EventManager.hh b/source/event/include/G4EventManager.hh index 08c4d798cc..3995597a4c 100644 --- a/source/event/include/G4EventManager.hh +++ b/source/event/include/G4EventManager.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4EventManager.hh,v 1.5 2000/01/12 01:29:50 asaim Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/event/include/G4HEPEvtInterface.hh b/source/event/include/G4HEPEvtInterface.hh index c792570bea..4f8450388a 100644 --- a/source/event/include/G4HEPEvtInterface.hh +++ b/source/event/include/G4HEPEvtInterface.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4HEPEvtInterface.hh,v 1.4 1999/12/15 14:49:38 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4HEPEvtInterface_h diff --git a/source/event/include/G4HEPEvtParticle.hh b/source/event/include/G4HEPEvtParticle.hh index a99fb9a802..101c9e71a0 100644 --- a/source/event/include/G4HEPEvtParticle.hh +++ b/source/event/include/G4HEPEvtParticle.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4HEPEvtParticle.hh,v 1.3 1999/12/15 14:49:38 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/event/include/G4ParticleGun.hh b/source/event/include/G4ParticleGun.hh index 7754f889f6..9d967e9b82 100644 --- a/source/event/include/G4ParticleGun.hh +++ b/source/event/include/G4ParticleGun.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ParticleGun.hh,v 1.3 1999/12/15 14:49:38 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4ParticleGun_h diff --git a/source/event/include/G4ParticleGunMessenger.hh b/source/event/include/G4ParticleGunMessenger.hh index 0eaac8784f..2cbb107cca 100644 --- a/source/event/include/G4ParticleGunMessenger.hh +++ b/source/event/include/G4ParticleGunMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ParticleGunMessenger.hh,v 1.3 1999/12/15 14:49:39 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/event/include/G4PrimaryParticle.hh b/source/event/include/G4PrimaryParticle.hh index 8d23d4838f..e78a269d9d 100644 --- a/source/event/include/G4PrimaryParticle.hh +++ b/source/event/include/G4PrimaryParticle.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PrimaryParticle.hh,v 1.3 1999/12/15 14:49:39 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/event/include/G4PrimaryTransformer.hh b/source/event/include/G4PrimaryTransformer.hh index 09b37f4ff4..808678b380 100644 --- a/source/event/include/G4PrimaryTransformer.hh +++ b/source/event/include/G4PrimaryTransformer.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PrimaryTransformer.hh,v 1.3 1999/12/15 14:49:39 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4PromaryTransformer_h diff --git a/source/event/include/G4PrimaryVertex.hh b/source/event/include/G4PrimaryVertex.hh index 9d07102ee7..8e655aec2b 100644 --- a/source/event/include/G4PrimaryVertex.hh +++ b/source/event/include/G4PrimaryVertex.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PrimaryVertex.hh,v 1.3 1999/12/15 14:49:39 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/event/include/G4StackManager.hh b/source/event/include/G4StackManager.hh index 319eb3e96e..3b2ad237f8 100644 --- a/source/event/include/G4StackManager.hh +++ b/source/event/include/G4StackManager.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4StackManager.hh,v 1.5 2000/01/26 06:42:14 asaim Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/event/include/G4StackedTrack.hh b/source/event/include/G4StackedTrack.hh index ce7e809772..76b0e77559 100644 --- a/source/event/include/G4StackedTrack.hh +++ b/source/event/include/G4StackedTrack.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4StackedTrack.hh,v 1.4 2000/01/26 06:42:15 asaim Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Last Modification : 02/Feb/96 M.Asai diff --git a/source/event/include/G4StackingMessenger.hh b/source/event/include/G4StackingMessenger.hh index 3f76585d9e..8bda5937ab 100644 --- a/source/event/include/G4StackingMessenger.hh +++ b/source/event/include/G4StackingMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4StackingMessenger.hh,v 1.3 1999/12/15 14:49:39 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4StackingMessenger_h diff --git a/source/event/include/G4TrackStack.hh b/source/event/include/G4TrackStack.hh index b35eb8fd7c..25e7e0c717 100644 --- a/source/event/include/G4TrackStack.hh +++ b/source/event/include/G4TrackStack.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4TrackStack.hh,v 1.3 1999/12/15 14:49:39 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Last Modification : 09/Dec/96 M.Asai diff --git a/source/event/include/G4TrajectoryContainer.hh b/source/event/include/G4TrajectoryContainer.hh index 1227f92b17..c57315d1f4 100644 --- a/source/event/include/G4TrajectoryContainer.hh +++ b/source/event/include/G4TrajectoryContainer.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4TrajectoryContainer.hh,v 1.5 1999/12/15 14:49:39 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // G4TrajectoryContainer diff --git a/source/event/include/G4UserEventAction.hh b/source/event/include/G4UserEventAction.hh index 3d04d8d7f3..17ca01a87b 100644 --- a/source/event/include/G4UserEventAction.hh +++ b/source/event/include/G4UserEventAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UserEventAction.hh,v 1.4 1999/12/15 14:49:39 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // diff --git a/source/event/include/G4UserStackingAction.hh b/source/event/include/G4UserStackingAction.hh index a60afa763a..3c98468a76 100644 --- a/source/event/include/G4UserStackingAction.hh +++ b/source/event/include/G4UserStackingAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UserStackingAction.hh,v 1.4 1999/12/15 14:49:39 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4UserStackingAction_h diff --git a/source/event/include/G4VPrimaryGenerator.hh b/source/event/include/G4VPrimaryGenerator.hh index 94b7dc3187..bb30a4b66d 100644 --- a/source/event/include/G4VPrimaryGenerator.hh +++ b/source/event/include/G4VPrimaryGenerator.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VPrimaryGenerator.hh,v 1.3 1999/12/15 14:49:39 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4VPrimaryGenerator_h diff --git a/source/event/include/eventgendefs.hh b/source/event/include/eventgendefs.hh index fa313f63cc..e423623862 100644 --- a/source/event/include/eventgendefs.hh +++ b/source/event/include/eventgendefs.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: eventgendefs.hh,v 1.2 1999/12/15 14:49:40 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef EventGenerator_DEBUG #define EventGenerator_DEBUG diff --git a/source/event/include/evmandefs.hh b/source/event/include/evmandefs.hh index e39fd886f7..349ff965d5 100644 --- a/source/event/include/evmandefs.hh +++ b/source/event/include/evmandefs.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: evmandefs.hh,v 1.2 1999/12/15 14:49:40 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // ///#define G4EVENTMANAGER_DEBUG 1 diff --git a/source/event/include/trajectoryControl.hh b/source/event/include/trajectoryControl.hh index 9a3d51e7a0..3641645d55 100644 --- a/source/event/include/trajectoryControl.hh +++ b/source/event/include/trajectoryControl.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: trajectoryControl.hh,v 1.2 1999/12/15 14:49:40 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // ////#define G4_STORE_TRAJECTORY 1 diff --git a/source/event/src/G4EvManMessenger.cc b/source/event/src/G4EvManMessenger.cc index df0e3fecee..6bdf355fec 100644 --- a/source/event/src/G4EvManMessenger.cc +++ b/source/event/src/G4EvManMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4EvManMessenger.cc,v 1.2 1999/12/15 14:49:40 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // -------------------------------------------------------------------- diff --git a/source/event/src/G4Event.cc b/source/event/src/G4Event.cc index 4556595909..11258a2441 100644 --- a/source/event/src/G4Event.cc +++ b/source/event/src/G4Event.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Event.cc,v 1.2 1999/12/15 14:49:40 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4Event diff --git a/source/event/src/G4EventManager.cc b/source/event/src/G4EventManager.cc index b8f44f62ab..a54859d015 100644 --- a/source/event/src/G4EventManager.cc +++ b/source/event/src/G4EventManager.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4EventManager.cc,v 1.5 2000/01/26 06:42:15 asaim Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // diff --git a/source/event/src/G4HEPEvtInterface.cc b/source/event/src/G4HEPEvtInterface.cc index 7597eba142..b4b069039b 100644 --- a/source/event/src/G4HEPEvtInterface.cc +++ b/source/event/src/G4HEPEvtInterface.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4HEPEvtInterface.cc,v 1.3 1999/12/15 14:49:40 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------------- diff --git a/source/event/src/G4HEPEvtParticle.cc b/source/event/src/G4HEPEvtParticle.cc index 66b378c21f..53089c3f44 100644 --- a/source/event/src/G4HEPEvtParticle.cc +++ b/source/event/src/G4HEPEvtParticle.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4HEPEvtParticle.cc,v 1.2 1999/12/15 14:49:40 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/event/src/G4ParticleGun.cc b/source/event/src/G4ParticleGun.cc index 377da15030..20d4bae780 100644 --- a/source/event/src/G4ParticleGun.cc +++ b/source/event/src/G4ParticleGun.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ParticleGun.cc,v 1.2 1999/12/15 14:49:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4ParticleGun diff --git a/source/event/src/G4ParticleGunMessenger.cc b/source/event/src/G4ParticleGunMessenger.cc index c0acbc054c..d5c4a60fb8 100644 --- a/source/event/src/G4ParticleGunMessenger.cc +++ b/source/event/src/G4ParticleGunMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ParticleGunMessenger.cc,v 1.2 1999/12/15 14:49:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4ParticleGunMessenger.hh" diff --git a/source/event/src/G4PrimaryParticle.cc b/source/event/src/G4PrimaryParticle.cc index 6f30e2c8ad..c6b768b5ed 100644 --- a/source/event/src/G4PrimaryParticle.cc +++ b/source/event/src/G4PrimaryParticle.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PrimaryParticle.cc,v 1.2 1999/12/15 14:49:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4PrimaryParticle.hh" diff --git a/source/event/src/G4PrimaryTransformer.cc b/source/event/src/G4PrimaryTransformer.cc index ee59c2020c..9070863d11 100644 --- a/source/event/src/G4PrimaryTransformer.cc +++ b/source/event/src/G4PrimaryTransformer.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PrimaryTransformer.cc,v 1.2 1999/12/15 14:49:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4PrimaryTransformer.hh" diff --git a/source/event/src/G4PrimaryVertex.cc b/source/event/src/G4PrimaryVertex.cc index 4be1fe84d0..e088a312e9 100644 --- a/source/event/src/G4PrimaryVertex.cc +++ b/source/event/src/G4PrimaryVertex.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PrimaryVertex.cc,v 1.2 1999/12/15 14:49:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4PrimaryVertex.hh" diff --git a/source/event/src/G4StackManager.cc b/source/event/src/G4StackManager.cc index d34926bcc2..05f20fedf0 100644 --- a/source/event/src/G4StackManager.cc +++ b/source/event/src/G4StackManager.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4StackManager.cc,v 1.3 2000/01/26 06:42:16 asaim Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Last Modification : 09/Dec/96 M.Asai diff --git a/source/event/src/G4StackedTrack.cc b/source/event/src/G4StackedTrack.cc index db60a4b3c6..a322407c54 100644 --- a/source/event/src/G4StackedTrack.cc +++ b/source/event/src/G4StackedTrack.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4StackedTrack.cc,v 1.3 2000/01/26 06:42:16 asaim Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Last Modification : 02/Feb/96 M.Asai diff --git a/source/event/src/G4StackingMessenger.cc b/source/event/src/G4StackingMessenger.cc index 06a145c139..d4424b74ba 100644 --- a/source/event/src/G4StackingMessenger.cc +++ b/source/event/src/G4StackingMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4StackingMessenger.cc,v 1.2 1999/12/15 14:49:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // -------------------------------------------------------------------- diff --git a/source/event/src/G4TrackStack.cc b/source/event/src/G4TrackStack.cc index 110651c64b..ef92d29163 100644 --- a/source/event/src/G4TrackStack.cc +++ b/source/event/src/G4TrackStack.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4TrackStack.cc,v 1.2 1999/12/15 14:49:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Last Modification : 09/Dec/96 M.Asai diff --git a/source/event/src/G4UserEventAction.cc b/source/event/src/G4UserEventAction.cc index 1fbb6adbac..774fa3399d 100644 --- a/source/event/src/G4UserEventAction.cc +++ b/source/event/src/G4UserEventAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UserEventAction.cc,v 1.3 1999/12/15 14:49:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4UserEventAction.hh" diff --git a/source/event/src/G4UserStackingAction.cc b/source/event/src/G4UserStackingAction.cc index fe89481046..b031930712 100644 --- a/source/event/src/G4UserStackingAction.cc +++ b/source/event/src/G4UserStackingAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UserStackingAction.cc,v 1.3 1999/12/15 14:49:42 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4UserStackingAction.hh" diff --git a/source/event/src/G4VPrimaryGenerator.cc b/source/event/src/G4VPrimaryGenerator.cc index fe9a6d0032..2fdc6d5cc2 100644 --- a/source/event/src/G4VPrimaryGenerator.cc +++ b/source/event/src/G4VPrimaryGenerator.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VPrimaryGenerator.cc,v 1.2 1999/12/15 14:49:42 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VPrimaryGenerator diff --git a/source/g3tog4/GNUmakefile b/source/g3tog4/GNUmakefile index 793a0c0932..f8dd38906d 100644 --- a/source/g3tog4/GNUmakefile +++ b/source/g3tog4/GNUmakefile @@ -34,6 +34,7 @@ CPPFLAGS += \ -I$(G4BASE)/geometry/volumes/include \ -I$(G4BASE)/geometry/management/include \ -I$(G4BASE)/geometry/solids/CSG/include \ + -I$(G4BASE)/geometry/solids/specific/include \ -I$(G4BASE)/geometry/solids/BREPS/include \ -I$(G4BASE)/geometry/solids/STEP/include \ -I$(G4BASE)/graphics_reps/include \ diff --git a/source/g3tog4/History b/source/g3tog4/History index 8aac053f14..328e4caa08 100644 --- a/source/g3tog4/History +++ b/source/g3tog4/History @@ -1,8 +1,12 @@ -$Id: History,v 1.31 2000/03/07 10:51:40 stesting Exp $ +$Id: History,v 1.32 2000/04/07 13:28:46 gcosmo Exp $ G3toG4 Modification History (reverse chronological order, please !) -------------------------------------------------------------------- +g3tog4-V01-01-00 05-Apr-2000 G.Cosmo +- Added include path to directory geometry/solids/specific. + Modified files: g3tog4/GNUmakefile, g3tog4/test/GNUmakefile. + g3tog4-V01-00-00a 07-Mar-2000 J.Allison - Changed char* to const char* where ISO compiler warned. diff --git a/source/g3tog4/include/G3CalcParams.hh b/source/g3tog4/include/G3CalcParams.hh index d3f7ce285a..32d57a1c27 100644 --- a/source/g3tog4/include/G3CalcParams.hh +++ b/source/g3tog4/include/G3CalcParams.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3CalcParams.hh,v 1.3 1999/12/09 01:27:41 lockman Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G3CalcParams // diff --git a/source/g3tog4/include/G3DetTable.hh b/source/g3tog4/include/G3DetTable.hh index 17a30caf5e..4d75fcc7bc 100644 --- a/source/g3tog4/include/G3DetTable.hh +++ b/source/g3tog4/include/G3DetTable.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3DetTable.hh,v 1.6 1999/12/15 14:49:42 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G3DetTable class diff --git a/source/g3tog4/include/G3DetTableEntry.hh b/source/g3tog4/include/G3DetTableEntry.hh index c93615ba99..a55c633c71 100644 --- a/source/g3tog4/include/G3DetTableEntry.hh +++ b/source/g3tog4/include/G3DetTableEntry.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3DetTableEntry.hh,v 1.3 1999/12/09 01:27:42 lockman Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G3DetTableEntry class diff --git a/source/g3tog4/include/G3Division.hh b/source/g3tog4/include/G3Division.hh index 4aa1d2a838..ad96759f57 100644 --- a/source/g3tog4/include/G3Division.hh +++ b/source/g3tog4/include/G3Division.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3Division.hh,v 1.3 1999/12/09 01:27:42 lockman Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // by I.Hrivnacova, V.Berejnoi, 27 Sep 99 diff --git a/source/g3tog4/include/G3EleTable.hh b/source/g3tog4/include/G3EleTable.hh index 6280a3eedf..dacae50dc0 100644 --- a/source/g3tog4/include/G3EleTable.hh +++ b/source/g3tog4/include/G3EleTable.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3EleTable.hh,v 1.4 1999/12/09 01:27:42 lockman Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4ELETABLE_HH diff --git a/source/g3tog4/include/G3G4Interface.hh b/source/g3tog4/include/G3G4Interface.hh index f6c6cc9560..cee01f0089 100644 --- a/source/g3tog4/include/G3G4Interface.hh +++ b/source/g3tog4/include/G3G4Interface.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3G4Interface.hh,v 1.7 1999/12/09 01:27:42 lockman Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // Interfaces for G3 equivalent routines // diff --git a/source/g3tog4/include/G3MatTable.hh b/source/g3tog4/include/G3MatTable.hh index a4e18a7185..4cbbd369c6 100644 --- a/source/g3tog4/include/G3MatTable.hh +++ b/source/g3tog4/include/G3MatTable.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3MatTable.hh,v 1.8 1999/12/09 01:27:42 lockman Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/include/G3MatTableEntry.hh b/source/g3tog4/include/G3MatTableEntry.hh index bd4049572f..27ef566534 100644 --- a/source/g3tog4/include/G3MatTableEntry.hh +++ b/source/g3tog4/include/G3MatTableEntry.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3MatTableEntry.hh,v 1.3 1999/12/09 01:27:43 lockman Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/include/G3MedTable.hh b/source/g3tog4/include/G3MedTable.hh index c2f44c9b7a..a89600f9b0 100644 --- a/source/g3tog4/include/G3MedTable.hh +++ b/source/g3tog4/include/G3MedTable.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3MedTable.hh,v 1.7 1999/12/09 01:27:43 lockman Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/include/G3MedTableEntry.hh b/source/g3tog4/include/G3MedTableEntry.hh index 422ba56d3b..0d651d27ef 100644 --- a/source/g3tog4/include/G3MedTableEntry.hh +++ b/source/g3tog4/include/G3MedTableEntry.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3MedTableEntry.hh,v 1.3 1999/12/09 01:27:43 lockman Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/include/G3PartTable.hh b/source/g3tog4/include/G3PartTable.hh index 34a66297f4..98d5caeb2c 100644 --- a/source/g3tog4/include/G3PartTable.hh +++ b/source/g3tog4/include/G3PartTable.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3PartTable.hh,v 1.6 1999/12/15 14:49:42 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // G3 materials table. diff --git a/source/g3tog4/include/G3Pos.hh b/source/g3tog4/include/G3Pos.hh index d215c8fc66..d6eedec599 100644 --- a/source/g3tog4/include/G3Pos.hh +++ b/source/g3tog4/include/G3Pos.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3Pos.hh,v 1.8 2000/03/02 17:54:03 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // modified by I.Hrivnacova, 13.10.99 diff --git a/source/g3tog4/include/G3RotTable.hh b/source/g3tog4/include/G3RotTable.hh index bf0eb8104f..5ea6b2016e 100644 --- a/source/g3tog4/include/G3RotTable.hh +++ b/source/g3tog4/include/G3RotTable.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3RotTable.hh,v 1.10 1999/12/09 01:27:46 lockman Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/include/G3RotTableEntry.hh b/source/g3tog4/include/G3RotTableEntry.hh index d054c7ca28..e76601082b 100644 --- a/source/g3tog4/include/G3RotTableEntry.hh +++ b/source/g3tog4/include/G3RotTableEntry.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3RotTableEntry.hh,v 1.3 1999/12/09 01:27:46 lockman Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/include/G3SensVolVector.hh b/source/g3tog4/include/G3SensVolVector.hh index 242c2bc6ac..3b7a8e705e 100644 --- a/source/g3tog4/include/G3SensVolVector.hh +++ b/source/g3tog4/include/G3SensVolVector.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3SensVolVector.hh,v 1.3 1999/12/09 01:27:46 lockman Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // vector of logical volumes that were defined with // tracking medium with ISVOL=1 diff --git a/source/g3tog4/include/G3VolTable.hh b/source/g3tog4/include/G3VolTable.hh index aa480c858c..f17dca4a5b 100644 --- a/source/g3tog4/include/G3VolTable.hh +++ b/source/g3tog4/include/G3VolTable.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3VolTable.hh,v 1.14 2000/03/02 17:54:03 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // modified by I.Hrivnacova, 13.10.99 diff --git a/source/g3tog4/include/G3VolTableEntry.hh b/source/g3tog4/include/G3VolTableEntry.hh index 617b32a25a..5d262df35b 100644 --- a/source/g3tog4/include/G3VolTableEntry.hh +++ b/source/g3tog4/include/G3VolTableEntry.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3VolTableEntry.hh,v 1.3 1999/12/09 01:27:46 lockman Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // by I.Hrivnacova, 13.10.99 diff --git a/source/g3tog4/include/G3toG4.hh b/source/g3tog4/include/G3toG4.hh index f0db11e18e..a8c936a4dd 100644 --- a/source/g3tog4/include/G3toG4.hh +++ b/source/g3tog4/include/G3toG4.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3toG4.hh,v 1.6 2000/03/07 10:51:40 stesting Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // modified by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/include/G3toG4.inc b/source/g3tog4/include/G3toG4.inc index edea864be5..f011652006 100644 --- a/source/g3tog4/include/G3toG4.inc +++ b/source/g3tog4/include/G3toG4.inc @@ -6,7 +6,7 @@ * and all its terms. * * $Id: G3toG4.inc,v 1.2 1999/12/05 17:50:04 gcosmo Exp $ -* GEANT4 tag $Name: geant4-01-01 $ +* GEANT4 tag $Name: geant4-02-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 e5c43f3b54..e75576e649 100644 --- a/source/g3tog4/include/G3toG4BuildTree.hh +++ b/source/g3tog4/include/G3toG4BuildTree.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3toG4BuildTree.hh,v 1.4 1999/12/09 01:27:47 lockman Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // modified by I.Hrivnacova, 13.10.99 diff --git a/source/g3tog4/include/G3toG4MakeSolid.hh b/source/g3tog4/include/G3toG4MakeSolid.hh index afbce3378b..eced136b77 100644 --- a/source/g3tog4/include/G3toG4MakeSolid.hh +++ b/source/g3tog4/include/G3toG4MakeSolid.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3toG4MakeSolid.hh,v 1.4 1999/12/09 01:27:47 lockman Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G3TOG4MAKESOLID_HH #define G3TOG4MAKESOLID_HH 1 diff --git a/source/g3tog4/include/G3toG4RotationMatrix.hh b/source/g3tog4/include/G3toG4RotationMatrix.hh index dfb07d5c7f..adcb76b89a 100644 --- a/source/g3tog4/include/G3toG4RotationMatrix.hh +++ b/source/g3tog4/include/G3toG4RotationMatrix.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3toG4RotationMatrix.hh,v 1.3 1999/12/09 01:27:47 lockman Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G3TOG4ROTATION_HH #define G3TOG4ROTATION_HH 1 diff --git a/source/g3tog4/include/gcbank.inc b/source/g3tog4/include/gcbank.inc index 628220c640..27fb2752a5 100644 --- a/source/g3tog4/include/gcbank.inc +++ b/source/g3tog4/include/gcbank.inc @@ -6,7 +6,7 @@ * and all its terms. * * $Id: gcbank.inc,v 1.2 1999/12/05 17:50:05 gcosmo Exp $ -* GEANT4 tag $Name: geant4-01-01 $ +* GEANT4 tag $Name: geant4-02-00 $ * INTEGER IQ,LQ,NZEBRA,IXSTOR,IXDIV,IXCONS,LMAIN,LR1,JCG INTEGER KWBANK,KWWORK,IWS diff --git a/source/g3tog4/src/G3CalcParams.cc b/source/g3tog4/src/G3CalcParams.cc index 55a150f00c..929015676d 100644 --- a/source/g3tog4/src/G3CalcParams.cc +++ b/source/g3tog4/src/G3CalcParams.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3CalcParams.cc,v 1.3 1999/12/15 14:49:42 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // Change: G3CalcParamsFn returns true only in case // the parameters *after* processing this method diff --git a/source/g3tog4/src/G3DetTable.cc b/source/g3tog4/src/G3DetTable.cc index caa3397a6e..1eac4bd402 100644 --- a/source/g3tog4/src/G3DetTable.cc +++ b/source/g3tog4/src/G3DetTable.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3DetTable.cc,v 1.9 2000/03/02 17:54:05 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "globals.hh" #include "G3DetTable.hh" diff --git a/source/g3tog4/src/G3DetTableEntry.cc b/source/g3tog4/src/G3DetTableEntry.cc index 5b0a80aca9..23a1fe0b0f 100644 --- a/source/g3tog4/src/G3DetTableEntry.cc +++ b/source/g3tog4/src/G3DetTableEntry.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3DetTableEntry.cc,v 1.3 2000/03/02 17:54:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "globals.hh" #include "G3DetTableEntry.hh" diff --git a/source/g3tog4/src/G3Division.cc b/source/g3tog4/src/G3Division.cc index e6d6981f57..36912ebd46 100644 --- a/source/g3tog4/src/G3Division.cc +++ b/source/g3tog4/src/G3Division.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3Division.cc,v 1.6 2000/03/02 17:54:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // by I.Hrivnacova, V.Berejnoi 13.10.99 diff --git a/source/g3tog4/src/G3EleTable.cc b/source/g3tog4/src/G3EleTable.cc index e32920ebf7..58691c5d9e 100644 --- a/source/g3tog4/src/G3EleTable.cc +++ b/source/g3tog4/src/G3EleTable.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3EleTable.cc,v 1.9 2000/03/02 17:54:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4strstreambuf.hh" diff --git a/source/g3tog4/src/G3MatTable.cc b/source/g3tog4/src/G3MatTable.cc index 134c14d56f..59305e336b 100644 --- a/source/g3tog4/src/G3MatTable.cc +++ b/source/g3tog4/src/G3MatTable.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3MatTable.cc,v 1.12 1999/12/05 17:50:09 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/src/G3MatTableEntry.cc b/source/g3tog4/src/G3MatTableEntry.cc index c328273997..5c8f6b7a06 100644 --- a/source/g3tog4/src/G3MatTableEntry.cc +++ b/source/g3tog4/src/G3MatTableEntry.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3MatTableEntry.cc,v 1.2 1999/12/05 17:50:09 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/src/G3MedTable.cc b/source/g3tog4/src/G3MedTable.cc index b95919e7a9..bdde489f43 100644 --- a/source/g3tog4/src/G3MedTable.cc +++ b/source/g3tog4/src/G3MedTable.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3MedTable.cc,v 1.10 1999/12/05 17:50:09 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/src/G3MedTableEntry.cc b/source/g3tog4/src/G3MedTableEntry.cc index a1fc05a07d..89111c4cbe 100644 --- a/source/g3tog4/src/G3MedTableEntry.cc +++ b/source/g3tog4/src/G3MedTableEntry.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3MedTableEntry.cc,v 1.2 1999/12/05 17:50:09 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/src/G3NegVolPars.cc b/source/g3tog4/src/G3NegVolPars.cc index 2c9fbc3c07..590f0364cd 100644 --- a/source/g3tog4/src/G3NegVolPars.cc +++ b/source/g3tog4/src/G3NegVolPars.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3NegVolPars.cc,v 1.6 2000/03/07 10:51:40 stesting Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // modified by I. Hrivnacova, 13.10.99 diff --git a/source/g3tog4/src/G3PartTable.cc b/source/g3tog4/src/G3PartTable.cc index 68c288d065..30a4bcceca 100644 --- a/source/g3tog4/src/G3PartTable.cc +++ b/source/g3tog4/src/G3PartTable.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3PartTable.cc,v 1.9 2000/03/02 17:54:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "g4std/strstream" diff --git a/source/g3tog4/src/G3Pos.cc b/source/g3tog4/src/G3Pos.cc index 9ce8a97742..2a1374a542 100644 --- a/source/g3tog4/src/G3Pos.cc +++ b/source/g3tog4/src/G3Pos.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3Pos.cc,v 1.7 2000/03/02 17:54:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // modified by I.Hrivnacova, 13.10.99 diff --git a/source/g3tog4/src/G3RotTable.cc b/source/g3tog4/src/G3RotTable.cc index 03a0b9e180..bb1bcbb36b 100644 --- a/source/g3tog4/src/G3RotTable.cc +++ b/source/g3tog4/src/G3RotTable.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3RotTable.cc,v 1.11 1999/12/05 17:50:10 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/src/G3RotTableEntry.cc b/source/g3tog4/src/G3RotTableEntry.cc index 50c66aadaf..eb3e775749 100644 --- a/source/g3tog4/src/G3RotTableEntry.cc +++ b/source/g3tog4/src/G3RotTableEntry.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3RotTableEntry.cc,v 1.2 1999/12/05 17:50:10 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/src/G3VolTable.cc b/source/g3tog4/src/G3VolTable.cc index 1cdb6d1f0b..43579eaf64 100644 --- a/source/g3tog4/src/G3VolTable.cc +++ b/source/g3tog4/src/G3VolTable.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3VolTable.cc,v 1.19 2000/03/02 17:54:07 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // modified by I.Hrivnacova, 13.10.99 diff --git a/source/g3tog4/src/G3VolTableEntry.cc b/source/g3tog4/src/G3VolTableEntry.cc index b302130b6e..7356d5c96c 100644 --- a/source/g3tog4/src/G3VolTableEntry.cc +++ b/source/g3tog4/src/G3VolTableEntry.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3VolTableEntry.cc,v 1.4 2000/03/02 17:54:07 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // modified by I.Hrivnacova, 13.10.99 diff --git a/source/g3tog4/src/G3fillParams.cc.archive b/source/g3tog4/src/G3fillParams.cc.archive index 365c0f1ad2..11c911cf11 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-01 $ +// GEANT4 tag $Name: geant4-02-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 9f8d71faf3..5aac0bb718 100644 --- a/source/g3tog4/src/G3toG4BuildTree.cc +++ b/source/g3tog4/src/G3toG4BuildTree.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3toG4BuildTree.cc,v 1.11 1999/12/15 14:49:43 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // modified by I. Hrivnacova, 2.8.99 diff --git a/source/g3tog4/src/G3toG4Debug.cc b/source/g3tog4/src/G3toG4Debug.cc index 336df23259..da994bff11 100644 --- a/source/g3tog4/src/G3toG4Debug.cc +++ b/source/g3tog4/src/G3toG4Debug.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3toG4Debug.cc,v 1.1 1999/12/09 01:27:49 lockman Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G3toG4Debug.hh" diff --git a/source/g3tog4/src/G3toG4MakeSolid.cc b/source/g3tog4/src/G3toG4MakeSolid.cc index cb38b397eb..801c81e672 100644 --- a/source/g3tog4/src/G3toG4MakeSolid.cc +++ b/source/g3tog4/src/G3toG4MakeSolid.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3toG4MakeSolid.cc,v 1.4 1999/12/15 14:49:43 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // modified by I.Hrivnacova, V.Berejnoi 27 Sep 99 diff --git a/source/g3tog4/src/G3toG4RotationMatrix.cc b/source/g3tog4/src/G3toG4RotationMatrix.cc index ca7b6d2a46..cb013c04e5 100644 --- a/source/g3tog4/src/G3toG4RotationMatrix.cc +++ b/source/g3tog4/src/G3toG4RotationMatrix.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3toG4RotationMatrix.cc,v 1.2 1999/12/05 17:50:11 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ #include "G3toG4RotationMatrix.hh" diff --git a/source/g3tog4/src/G4BuildGeom.cc b/source/g3tog4/src/G4BuildGeom.cc index 1ca5ea96f5..08952c19b0 100644 --- a/source/g3tog4/src/G4BuildGeom.cc +++ b/source/g3tog4/src/G4BuildGeom.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4BuildGeom.cc,v 1.12 1999/12/15 14:49:43 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // modified by I. Hrivnacova, 13.10.99 diff --git a/source/g3tog4/src/G4ggclos.cc b/source/g3tog4/src/G4ggclos.cc index 03fceda0e8..428f13cfce 100644 --- a/source/g3tog4/src/G4ggclos.cc +++ b/source/g3tog4/src/G4ggclos.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ggclos.cc,v 1.6 1999/12/15 14:49:43 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ #include "G3toG4.hh" #include "G3VolTable.hh" diff --git a/source/g3tog4/src/G4gsatt.cc b/source/g3tog4/src/G4gsatt.cc index 56356c9cb5..861c9cf015 100644 --- a/source/g3tog4/src/G4gsatt.cc +++ b/source/g3tog4/src/G4gsatt.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4gsatt.cc,v 1.8 2000/03/02 17:54:07 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ #include "g4rw/cstring.h" #include "G3toG4.hh" diff --git a/source/g3tog4/src/G4gsdet.cc b/source/g3tog4/src/G4gsdet.cc index 9e617b6a78..59049e43b6 100644 --- a/source/g3tog4/src/G4gsdet.cc +++ b/source/g3tog4/src/G4gsdet.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4gsdet.cc,v 1.3 1999/12/05 17:50:12 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ #include "globals.hh" #include "G3toG4.hh" diff --git a/source/g3tog4/src/G4gsdeta.cc b/source/g3tog4/src/G4gsdeta.cc index f3f9a61902..a32c5c92bf 100644 --- a/source/g3tog4/src/G4gsdeta.cc +++ b/source/g3tog4/src/G4gsdeta.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4gsdeta.cc,v 1.4 1999/12/05 17:50:12 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // modified by I.Hrivnacova, 6 Oct 99 diff --git a/source/g3tog4/src/G4gsdetd.cc b/source/g3tog4/src/G4gsdetd.cc index 0ac6275163..709064fd97 100644 --- a/source/g3tog4/src/G4gsdetd.cc +++ b/source/g3tog4/src/G4gsdetd.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4gsdetd.cc,v 1.4 1999/12/05 17:50:12 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ #include "G3toG4.hh" #include "G3DetTable.hh" diff --git a/source/g3tog4/src/G4gsdeth.cc b/source/g3tog4/src/G4gsdeth.cc index 5a19d00845..35e905644e 100644 --- a/source/g3tog4/src/G4gsdeth.cc +++ b/source/g3tog4/src/G4gsdeth.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4gsdeth.cc,v 1.4 1999/12/05 17:50:12 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ #include "G3toG4.hh" #include "G3DetTable.hh" diff --git a/source/g3tog4/src/G4gsdetu.cc b/source/g3tog4/src/G4gsdetu.cc index c551e63e1e..c414cf9289 100644 --- a/source/g3tog4/src/G4gsdetu.cc +++ b/source/g3tog4/src/G4gsdetu.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4gsdetu.cc,v 1.3 1999/12/05 17:50:12 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ #include "G3toG4.hh" diff --git a/source/g3tog4/src/G4gsdetv.cc b/source/g3tog4/src/G4gsdetv.cc index 5b74ba8fdd..144de3b102 100644 --- a/source/g3tog4/src/G4gsdetv.cc +++ b/source/g3tog4/src/G4gsdetv.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4gsdetv.cc,v 1.6 1999/12/15 14:49:43 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ #include "G4ios.hh" #include "G3toG4.hh" diff --git a/source/g3tog4/src/G4gsdk.cc b/source/g3tog4/src/G4gsdk.cc index f272b44aea..594a6967d6 100644 --- a/source/g3tog4/src/G4gsdk.cc +++ b/source/g3tog4/src/G4gsdk.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4gsdk.cc,v 1.3 1999/12/05 17:50:13 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ #include "G4Decay.hh" #include "G3toG4.hh" diff --git a/source/g3tog4/src/G4gsdvn.cc b/source/g3tog4/src/G4gsdvn.cc index 03bb292524..f44dfccb93 100644 --- a/source/g3tog4/src/G4gsdvn.cc +++ b/source/g3tog4/src/G4gsdvn.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4gsdvn.cc,v 1.5 1999/12/05 17:50:13 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // by I.Hrivnacova, V.Berejnoi, 29 Oct 99 diff --git a/source/g3tog4/src/G4gsdvn2.cc b/source/g3tog4/src/G4gsdvn2.cc index 5dcf3f5492..7f28824d1e 100644 --- a/source/g3tog4/src/G4gsdvn2.cc +++ b/source/g3tog4/src/G4gsdvn2.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4gsdvn2.cc,v 1.6 1999/12/05 17:50:13 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // by I.Hrivnacova, V.Berejnoi, 29 Oct 99 diff --git a/source/g3tog4/src/G4gsdvt.cc b/source/g3tog4/src/G4gsdvt.cc index 33f9578f1b..6890985dd1 100644 --- a/source/g3tog4/src/G4gsdvt.cc +++ b/source/g3tog4/src/G4gsdvt.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4gsdvt.cc,v 1.5 1999/12/05 17:50:13 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // by I.Hrivnacova, V.Berejnoi, 29 Oct 99 diff --git a/source/g3tog4/src/G4gsdvt2.cc b/source/g3tog4/src/G4gsdvt2.cc index 378d4a2d1d..99d5537d41 100644 --- a/source/g3tog4/src/G4gsdvt2.cc +++ b/source/g3tog4/src/G4gsdvt2.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4gsdvt2.cc,v 1.5 1999/12/05 17:50:13 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // by I.Hrivnacova, V.Berejnoi, 29 Oct 99 diff --git a/source/g3tog4/src/G4gsdvx.cc b/source/g3tog4/src/G4gsdvx.cc index 2dabf36b16..ccc28c6491 100644 --- a/source/g3tog4/src/G4gsdvx.cc +++ b/source/g3tog4/src/G4gsdvx.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4gsdvx.cc,v 1.3 1999/12/05 17:50:13 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // by I.Hrivnacova, V.Berejnoi, 27 Sep 99 diff --git a/source/g3tog4/src/G4gsmate.cc b/source/g3tog4/src/G4gsmate.cc index 322f66e58d..4ecaa6296c 100644 --- a/source/g3tog4/src/G4gsmate.cc +++ b/source/g3tog4/src/G4gsmate.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4gsmate.cc,v 1.6 1999/12/15 14:49:43 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/src/G4gsmixt.cc b/source/g3tog4/src/G4gsmixt.cc index d073c6a1eb..ca3780cc41 100644 --- a/source/g3tog4/src/G4gsmixt.cc +++ b/source/g3tog4/src/G4gsmixt.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4gsmixt.cc,v 1.7 1999/12/15 14:49:43 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/src/G4gspart.cc b/source/g3tog4/src/G4gspart.cc index 1d2250ee89..a3e69b048c 100644 --- a/source/g3tog4/src/G4gspart.cc +++ b/source/g3tog4/src/G4gspart.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4gspart.cc,v 1.3 1999/12/05 17:50:14 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4ProcessManager.hh" #include "G3toG4.hh" diff --git a/source/g3tog4/src/G4gspos.cc b/source/g3tog4/src/G4gspos.cc index 16dbbc137e..fa4fc614dd 100644 --- a/source/g3tog4/src/G4gspos.cc +++ b/source/g3tog4/src/G4gspos.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4gspos.cc,v 1.11 1999/12/05 17:50:14 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // by I.Hrivnacova, 13.10.99 diff --git a/source/g3tog4/src/G4gsposp.cc b/source/g3tog4/src/G4gsposp.cc index eb72a64de0..8b76a93353 100644 --- a/source/g3tog4/src/G4gsposp.cc +++ b/source/g3tog4/src/G4gsposp.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4gsposp.cc,v 1.13 2000/03/07 10:51:40 stesting Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // by I.Hrivnacova, 13.10.99 diff --git a/source/g3tog4/src/G4gsrotm.cc b/source/g3tog4/src/G4gsrotm.cc index 936df60482..3ca62e40a8 100644 --- a/source/g3tog4/src/G4gsrotm.cc +++ b/source/g3tog4/src/G4gsrotm.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4gsrotm.cc,v 1.8 1999/12/15 14:49:44 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G3toG4.hh" #include "G3RotTable.hh" diff --git a/source/g3tog4/src/G4gstmed.cc b/source/g3tog4/src/G4gstmed.cc index b240358a08..8690fcf40b 100644 --- a/source/g3tog4/src/G4gstmed.cc +++ b/source/g3tog4/src/G4gstmed.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4gstmed.cc,v 1.4 1999/12/05 17:50:14 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 7441b4b402..099975dde1 100644 --- a/source/g3tog4/src/G4gstpar.cc +++ b/source/g3tog4/src/G4gstpar.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4gstpar.cc,v 1.5 1999/12/15 14:49:44 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G3toG4.hh" #include "G3VolTable.hh" diff --git a/source/g3tog4/src/G4gsvolu.cc b/source/g3tog4/src/G4gsvolu.cc index c66b45dc17..f3f90756fc 100644 --- a/source/g3tog4/src/G4gsvolu.cc +++ b/source/g3tog4/src/G4gsvolu.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4gsvolu.cc,v 1.7 1999/12/15 14:49:44 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // by I.Hrivnacova, 13.10.99 diff --git a/source/g3tog4/src/clparse.cc b/source/g3tog4/src/clparse.cc index 348c241363..ab42f460f5 100644 --- a/source/g3tog4/src/clparse.cc +++ b/source/g3tog4/src/clparse.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: clparse.cc,v 1.11 2000/03/07 10:51:41 stesting Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // modified by I.Hrivnacova // added G3SensVol diff --git a/source/g3tog4/src/g3routines.F b/source/g3tog4/src/g3routines.F index 28147d260b..9638e6fcbb 100644 --- a/source/g3tog4/src/g3routines.F +++ b/source/g3tog4/src/g3routines.F @@ -6,7 +6,7 @@ * and all its terms. * * $Id: g3routines.F,v 1.3 1999/12/05 17:50:15 gcosmo Exp $ -* GEANT4 tag $Name: geant4-01-01 $ +* GEANT4 tag $Name: geant4-02-00 $ * #define CALL_GEANT diff --git a/source/g3tog4/src/g3test.F.main b/source/g3tog4/src/g3test.F.main index ddc5106ded..21924b0b4b 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-01-01 $ +* GEANT4 tag $Name: geant4-02-00 $ * * * g3test diff --git a/source/g3tog4/src/g3tog4.F b/source/g3tog4/src/g3tog4.F index 4242ec1ace..609ca2170b 100644 --- a/source/g3tog4/src/g3tog4.F +++ b/source/g3tog4/src/g3tog4.F @@ -6,7 +6,7 @@ * and all its terms. * * $Id: g3tog4.F,v 1.3 1999/12/05 17:50:16 gcosmo Exp $ -* GEANT4 tag $Name: geant4-01-01 $ +* GEANT4 tag $Name: geant4-02-00 $ * * * G3toG4 diff --git a/source/g3tog4/src/g4geom.cc.main b/source/g3tog4/src/g4geom.cc.main index ccfc304386..df0f88d55d 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-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // g4geom // diff --git a/source/g3tog4/src/jshape.F b/source/g3tog4/src/jshape.F index a1ba54ac61..38c564b4e5 100644 --- a/source/g3tog4/src/jshape.F +++ b/source/g3tog4/src/jshape.F @@ -6,7 +6,7 @@ * and all its terms. * * $Id: jshape.F,v 1.2 1999/12/05 17:50:17 gcosmo Exp $ -* GEANT4 tag $Name: geant4-01-01 $ +* GEANT4 tag $Name: geant4-02-00 $ * * *-- Author : Jouko Vuoskoski, CERN, Jouko.Vuoskoski@cern.ch diff --git a/source/g3tog4/src/mztog4.F b/source/g3tog4/src/mztog4.F index 1977d7dd6b..3e36f0009d 100644 --- a/source/g3tog4/src/mztog4.F +++ b/source/g3tog4/src/mztog4.F @@ -6,7 +6,7 @@ * and all its terms. * * $Id: mztog4.F,v 1.2 1999/12/05 17:50:17 gcosmo Exp $ -* GEANT4 tag $Name: geant4-01-01 $ +* GEANT4 tag $Name: geant4-02-00 $ * subroutine mztog4 ************************************************************************ diff --git a/source/g3tog4/src/rztog4.F b/source/g3tog4/src/rztog4.F index 608cb4be64..f36e9bf2b2 100644 --- a/source/g3tog4/src/rztog4.F +++ b/source/g3tog4/src/rztog4.F @@ -6,7 +6,7 @@ * and all its terms. * * $Id: rztog4.F,v 1.2 1999/12/05 17:50:17 gcosmo Exp $ -* GEANT4 tag $Name: geant4-01-01 $ +* GEANT4 tag $Name: geant4-02-00 $ * program rztog4 ************************************************************************ diff --git a/source/g3tog4/src/tog4.F b/source/g3tog4/src/tog4.F index 35457051c4..88ea314bc6 100644 --- a/source/g3tog4/src/tog4.F +++ b/source/g3tog4/src/tog4.F @@ -6,7 +6,7 @@ * and all its terms. * * $Id: tog4.F,v 1.3 1999/12/05 17:50:17 gcosmo Exp $ -* GEANT4 tag $Name: geant4-01-01 $ +* GEANT4 tag $Name: geant4-02-00 $ * subroutine tog4 ************************************************************************ diff --git a/source/g3tog4/test/GNUmakefile b/source/g3tog4/test/GNUmakefile deleted file mode 100644 index ee0da04a1a..0000000000 --- a/source/g3tog4/test/GNUmakefile +++ /dev/null @@ -1,105 +0,0 @@ -# $Id: GNUmakefile,v 1.3 1999/05/01 21:42:04 lockman Exp $ -# ---------------------------------------------------------------- - -ifndef G4TARGET -G4TARGET = clGeometry -endif - -name = g3tog4_example - -## following flag indicates that we will build a temporary library named -## lib$(name).a containing .o files from source files in src/ - -G4EXLIB := true - -## build a separate CFRONT template repository for the code in this example - -G4EXEC_BUILD = true - -ifndef G4INSTALL - G4INSTALL = ../../.. -endif - -include $(G4INSTALL)/config/architecture.gmk -include $(G4INSTALL)/config/G4UI_USE.gmk -include $(G4INSTALL)/config/G4VIS_USE.gmk -include $(G4INSTALL)/config/interactivity.gmk - -## Override some variables for binmake.gmk. - -INCFLAGS := \ - -I$(G4BASE)/global/management/include \ - -I$(G4BASE)/global/HEPRandom/include \ - -I$(G4BASE)/global/HEPGeometry/include \ - -I$(G4BASE)/intercoms/include \ - -I$(G4BASE)/geometry/management/include \ - -I$(G4BASE)/geometry/volumes/include \ - -I$(G4BASE)/geometry/magneticfield/include \ - -I$(G4BASE)/geometry/solids/CSG/include \ - -I$(G4BASE)/geometry/solids/BREPS/include \ - -I$(G4BASE)/geometry/solids/STEP/include \ - -I$(G4BASE)/tracking/include \ - -I$(G4BASE)/track/include \ - -I$(G4BASE)/event/include \ - -I$(G4BASE)/materials/include \ - -I$(G4BASE)/particles/management/include \ - -I$(G4BASE)/particles/bosons/include \ - -I$(G4BASE)/particles/leptons/include \ - -I$(G4BASE)/particles/hadrons/mesons/include \ - -I$(G4BASE)/particles/hadrons/barions/include \ - -I$(G4BASE)/particles/hadrons/ions/include \ - -I$(G4BASE)/processes/management/include \ - -I$(G4BASE)/processes/decay/include \ - -I$(G4BASE)/processes/electromagnetic/standard/include \ - -I$(G4BASE)/processes/electromagnetic/muons/include \ - -I$(G4BASE)/processes/electromagnetic/utils/include \ - -I$(G4BASE)/processes/electromagnetic/xrays/include \ - -I$(G4BASE)/graphics_reps/include \ - -I$(G4BASE)/digits+hits/detector/include \ - -I$(G4BASE)/digits+hits/digits/include \ - -I$(G4BASE)/digits+hits/hits/include \ - -I$(G4BASE)/run/include \ - -I$(G4BASE)/g3tog4/include \ - -I$(G4BASE)/g3tog4/test/include - -### LDLIBS must be specified since -lG3toG4 is not part of the standard -### libraries - -LDLIBS := -l$(name) $(VISLIBS) $(UILIBS) \ - -lG4run \ - -lG4event \ - -lG3toG4 \ - -lG4tracking \ - -lG4processes \ - -lG4particles \ - -lG4track \ - -lG4materials \ - -lG4digits+hits \ - -lG4geometry \ - -lG4graphics_reps \ - -lG4intercoms \ - -lG4global \ - $(INTYLIBS) - -.PHONY: first lib bin test1 - -first: $(G4INSTALL)/lib/$(G4SYSTEM)/libG3toG4.a lib bin - -$(G4INSTALL)/lib/$(G4SYSTEM)/libG3toG4.a : $(G4BASE)/g3tog4/src/*.cc - cd $(G4BASE)/g3tog4; $(MAKE) lib - -############################################################################## -include $(G4INSTALL)/config/binmake.gmk - -test1: - echo LDLIBS: $(LDLIBS) - - - - - - - - - - diff --git a/source/g3tog4/test/README b/source/g3tog4/test/README deleted file mode 100644 index 56de6d636d..0000000000 --- a/source/g3tog4/test/README +++ /dev/null @@ -1,12 +0,0 @@ -Directory contains the code to build a detector geometry using call list -mechanism and also provides visualization. The name of the executable is -clGeometry. - -To build this, - -cd $G4BASE/g3tog4; gmake examples - -or from this directory, - -gmake - diff --git a/source/g3tog4/test/clGeometry.cc b/source/g3tog4/test/clGeometry.cc deleted file mode 100644 index f39e9f6e41..0000000000 --- a/source/g3tog4/test/clGeometry.cc +++ /dev/null @@ -1,163 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: clGeometry.cc,v 1.10 1999/12/15 14:49:44 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// - -// controls whether drawing is to be Done or not - -#include "g4std/fstream" -#include -#include "G4ios.hh" - -// package includes - -#include "G3toG4DetectorConstruction.hh" -#include "G3toG4RunAction.hh" -#include "G3toG4PrimaryGeneratorAction.hh" -#include "G3toG4PhysicsList.hh" -#include "G3toG4EventAction.hh" -#include "G4LogicalVolume.hh" -#include "G3VolTable.hh" - -// geant4 includes - -#include "G4RunManager.hh" -#include "G4UImanager.hh" -#include "G4UIterminal.hh" - -// visualization -#ifdef G4VIS_USE -#include "G3toG4VisManager.hh" -#endif - -G4int main(int argc, char** argv) -{ - G4String inFile; - G4String macroFile = ""; - - if (argc < 2) { - G4cerr << "clGeometry: Correct syntax: clGeometry [ ]" - << G4endl; - G4cerr << "If only one argument is specified, interactive mode will be " - << "entered." << G4endl << "The second argument, if specified, is " - << "the name of the macro file (batch mode)." << G4endl; - - return EXIT_FAILURE; - } - if (argc >= 2) { - // Process the command line - inFile = argv[1]; - G4std::ifstream in(inFile); - if (!in) { - G4cerr << "Cannot open input file \"" << inFile << "\"" << G4endl; - return EXIT_FAILURE; - } - } - if (argc >= 3) { - macroFile = argv[2]; - G4std::ifstream mac(macroFile); - if (!mac) { - G4cout << "Cannot open macro file """ << macroFile << """" << G4endl; - return 2; - } - } - if (argc >= 4) { - G4cerr << "Too many command line arguments (" << argc <<")" << G4endl; - return EXIT_FAILURE; - } - - // Construct the default run manager - G4RunManager* RunManager = new G4RunManager; - - // set mandatory initialization classes - RunManager->SetUserInitialization(new G3toG4DetectorConstruction(inFile)); - - G3toG4PhysicsList* thePhysicsList = new G3toG4PhysicsList; - - // set verbosity of PhysicsList - thePhysicsList->SetVerboseLevel(2); - RunManager->SetUserInitialization(thePhysicsList); - - //---------------- - // Visualization: - //---------------- - -#ifdef G4VIS_USE - G4VisManager* VisManager = new G3toG4VisManager; - VisManager -> Initialize(); -#endif - - // set user action classes - - RunManager->SetUserAction(new G3toG4RunAction); - - G3toG4EventAction* theEventAction = new G3toG4EventAction; - theEventAction->SetDrawFlag("all"); - RunManager->SetUserAction(theEventAction); - - RunManager->SetUserAction(new G3toG4PrimaryGeneratorAction); - - // the pointer to the User Interface manager - G4UImanager* UI = G4UImanager::GetUIpointer(); - - // set some additional defaults and initial actions - - UI->ApplyCommand("/control/verbose 1"); - UI->ApplyCommand("/run/verbose 1"); - UI->ApplyCommand("/tracking/verbose 1"); - UI->ApplyCommand("/tracking/storeTrajectory 1"); - UI->ApplyCommand("/run/initialize"); - - G4bool batch_mode = macroFile != ""; - - if(!batch_mode) { - G4UIsession * session = new G4UIterminal; - if (session != 0) { - session->SessionStart(); - delete session; - // G4cout << "deleted G4UITerminal..." << G4endl; - } - } - else { - // Batch mode - G4String command = "/control/execute "; - UI->ApplyCommand(command+macroFile); - } -#ifdef G4VIS_USE - if (VisManager !=0) delete VisManager; -#endif - delete RunManager; - return EXIT_SUCCESS; -} - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/source/g3tog4/test/clGeometry.x b/source/g3tog4/test/clGeometry.x deleted file mode 100644 index ba750576d9..0000000000 --- a/source/g3tog4/test/clGeometry.x +++ /dev/null @@ -1,29 +0,0 @@ -# -# Initialize GEANT4 -# -/gun/position 0. -1.5 0. mm -/gun/direction 0. 1. 0. -/gun/energy 1 GeV -/gun/particle mu- -/run/beamOn 1 -/gun/particle mu+ -/run/beamOn 1 -/gun/particle e- -/run/beamOn 1 -/gun/particle e+ -/run/beamOn 1 -# -/gun/position 0. 1.5 0. mm -/gun/direction 1. 0. 0. -/gun/energy 1 GeV -/gun/particle mu- -/run/beamOn 1 -/gun/particle mu+ -/run/beamOn 1 -/gun/particle e- -/run/beamOn 1 -/gun/particle e+ -/run/beamOn 1 -# -# Termination -# diff --git a/source/g3tog4/test/cltog4.cc b/source/g3tog4/test/cltog4.cc deleted file mode 100644 index 18081bd63a..0000000000 --- a/source/g3tog4/test/cltog4.cc +++ /dev/null @@ -1,111 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: cltog4.cc,v 1.7 1999/12/15 14:49:45 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// -#include "G4ios.hh" -#include "g4std/fstream" -#include - -// example header file includes - -#include "G3toG4DetectorConstruction.hh" -#include "G3toG4RunAction.hh" -#include "G3toG4PrimaryGeneratorAction.hh" -#include "G3toG4PhysicsList.hh" -#include "G4LogicalVolume.hh" -#include "G3VolTable.hh" - -// geant4 includes - -#include "G4RunManager.hh" -#include "G4UImanager.hh" -#include "G4UIterminal.hh" - -G4int main(int argc, char** argv) -{ - G4String inFile; - G4String macroFile = ""; - - if (argc < 2) { - G4cout << "Correct syntax:" << argv[0] << " [ ]" - << G4endl; - G4cout << "If only one argument is specified, macro file " << macroFile - << "will be used." << G4endl - << "The second argument is used to override the default macro file" - << " name." << G4endl; - - return 1; - } - if (argc >= 2) { - // Process the command line - inFile = argv[1]; - G4std::ifstream in(inFile); - if (!in) { - G4cout << "Cannot open input file """ << inFile << """" << G4endl; - return 1; - } - } - if (argc >= 3) { - macroFile = argv[2]; - G4std::ifstream mac(macroFile); - if (!mac) { - G4cout << "Cannot open macro file """ << macroFile << """" << G4endl; - return 2; - } - } - if (argc >= 4) { - G4cout << "Too many command line arguments (" << argc <<")" << G4endl; - return 1; - } - // run manager - G4RunManager * RunManager = new G4RunManager; - // user initialization classes - RunManager->SetUserInitialization(new G3toG4DetectorConstruction(inFile)); - RunManager->SetUserInitialization(new G3toG4PhysicsList); - - // user action classes - RunManager->SetUserAction(new G3toG4RunAction); - RunManager->SetUserAction(new G3toG4PrimaryGeneratorAction); - - G4UImanager * UI = G4UImanager::GetUIpointer(); - // set some additional defaults and initial actions - - UI->ApplyCommand("/control/verbose 1"); - UI->ApplyCommand("/run/verbose 1"); - UI->ApplyCommand("/tracking/verbose 1"); - UI->ApplyCommand("/tracking/storeTrajectory 1"); - UI->ApplyCommand("/run/initialize"); - - G4bool batch_mode = macroFile != ""; - - if(!batch_mode) { - G4UIsession * session = new G4UIterminal; - if (session != 0) { - session->SessionStart(); - delete session; - // G4cout << "deleted G4UITerminal..." << G4endl; - } - } - else { - // Batch mode - G4String command = "/control/execute "; - UI->ApplyCommand(command+macroFile); - } - delete RunManager; - return EXIT_SUCCESS; -} - - - - - - - - diff --git a/source/g3tog4/test/cltog4.x b/source/g3tog4/test/cltog4.x deleted file mode 100644 index b63ff1aa60..0000000000 --- a/source/g3tog4/test/cltog4.x +++ /dev/null @@ -1,15 +0,0 @@ -/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 -/gun/particle chargedgeantino -/run/beamOn 10 -# -# Termination -# diff --git a/source/g3tog4/test/include/G3toG4DetectorConstruction.hh b/source/g3tog4/test/include/G3toG4DetectorConstruction.hh deleted file mode 100644 index b4d88a383e..0000000000 --- a/source/g3tog4/test/include/G3toG4DetectorConstruction.hh +++ /dev/null @@ -1,45 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G3toG4DetectorConstruction.hh,v 1.3 1999/12/05 17:50:25 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -#ifndef G3toG4DetectorConstruction_h -#define G3toG4DetectorConstruction_h 1 - -//-------------------------------------------------------------------------- -// G3toG4DetectorConstruction. Most the work is Done in -// G4BuildGeom, which returns a G4LogicalVolume*, a pointer to the -// top-level logiical volume in the detector defined by the call List file -// inFile -//-------------------------------------------------------------------------- - -#include "G4VUserDetectorConstruction.hh" -#include "G4PVPlacement.hh" -#include "G4LogicalVolume.hh" -#include "G3G4Interface.hh" -#include "globals.hh" - -class G3toG4DetectorConstruction : public G4VUserDetectorConstruction -{ -public: - G3toG4DetectorConstruction(G4String inFile="svt.dat"); - - ~G3toG4DetectorConstruction(); - - G4VPhysicalVolume* Construct(); - G4LogicalVolume* SimpleConstruct(); - -private: - G4String _inFile; - G4VPhysicalVolume* _pv; - G4LogicalVolume* _lv; -}; - -#endif - - diff --git a/source/g3tog4/test/include/G3toG4EventAction.hh b/source/g3tog4/test/include/G3toG4EventAction.hh deleted file mode 100644 index 27989a1570..0000000000 --- a/source/g3tog4/test/include/G3toG4EventAction.hh +++ /dev/null @@ -1,45 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G3toG4EventAction.hh,v 1.3 1999/12/05 17:50:25 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#ifndef G3toG4EventAction_h -#define G3toG4EventAction_h 1 - -#include "G4UserEventAction.hh" -#include "globals.hh" - -class G3toG4EventActionMessenger; - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -class G3toG4EventAction : public G4UserEventAction -{ - public: - G3toG4EventAction(); - ~G3toG4EventAction(); - - public: - void BeginOfEventAction(const G4Event* anEvent); - void EndOfEventAction(const G4Event* anEvent); - - void SetDrawFlag(G4String val) {drawFlag = val;}; - - private: - G4String drawFlag; // control the drawing of event - G3toG4EventActionMessenger* eventMessenger; -}; - -#endif - - diff --git a/source/g3tog4/test/include/G3toG4PhysicsList.hh b/source/g3tog4/test/include/G3toG4PhysicsList.hh deleted file mode 100644 index 1482812c37..0000000000 --- a/source/g3tog4/test/include/G3toG4PhysicsList.hh +++ /dev/null @@ -1,68 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G3toG4PhysicsList.hh,v 1.4 1999/12/05 17:50:25 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#ifndef G3toG4PhysicsList_h -#define G3toG4PhysicsList_h 1 - -#include "G4VUserPhysicsList.hh" -#include "globals.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -class G3toG4PhysicsList: public G4VUserPhysicsList -{ - public: - G3toG4PhysicsList(); - ~G3toG4PhysicsList(); - - protected: - // Construct particle and physics - virtual void ConstructParticle(); - virtual void ConstructProcess(); - - virtual void SetCuts(); - - public: - // Set/Get cut values - void SetCutForGamma(G4double); - void SetCutForElectron(G4double); - void SetCutForProton(G4double); - G4double GetCutForGamma() const; - G4double GetCutForElectron() const; - G4double GetCutForProton() const; - - protected: - // these methods Construct particles - void ConstructBosons(); - void ConstructLeptons(); - void ConstructMesons(); - void ConstructBaryons(); - - protected: - // these methods Construct physics processes and register them - void ConstructGeneral(); - void ConstructEM(); - - private: - G4double cutForGamma; - G4double cutForElectron; - G4double cutForProton; - G4double currentDefaultCut; -}; - -#endif - - - diff --git a/source/g3tog4/test/include/G3toG4PrimaryGeneratorAction.hh b/source/g3tog4/test/include/G3toG4PrimaryGeneratorAction.hh deleted file mode 100644 index f57385da99..0000000000 --- a/source/g3tog4/test/include/G3toG4PrimaryGeneratorAction.hh +++ /dev/null @@ -1,36 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G3toG4PrimaryGeneratorAction.hh,v 1.3 1999/12/05 17:50:25 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - -#ifndef G3toG4PrimaryGeneratorAction_h -#define G3toG4PrimaryGeneratorAction_h 1 - -#include "G4Event.hh" -#include "G4ParticleGun.hh" -#include "G4VUserPrimaryGeneratorAction.hh" -#include "G4ThreeVector.hh" - -class G3toG4PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction -{ - public: - G3toG4PrimaryGeneratorAction(); - ~G3toG4PrimaryGeneratorAction(); - - public: - void GeneratePrimaries(G4Event* anEvent); - - private: - G4ParticleGun* particleGun; - G4ThreeVector GetRandomDirection(); -}; - -#endif - - diff --git a/source/g3tog4/test/include/G3toG4RunAction.hh b/source/g3tog4/test/include/G3toG4RunAction.hh deleted file mode 100644 index c4a744798a..0000000000 --- a/source/g3tog4/test/include/G3toG4RunAction.hh +++ /dev/null @@ -1,35 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G3toG4RunAction.hh,v 1.3 1999/12/05 17:50:26 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - -#ifndef G3toG4RunAction_h -#define G3toG4RunAction_h 1 - -#include "G4UserRunAction.hh" -#include "globals.hh" - -class G4Run; - -class G3toG4RunAction : public G4UserRunAction -{ - public: - G3toG4RunAction(); - ~G3toG4RunAction(); - - public: - void BeginOfRunAction(const G4Run* aRun); - void EndOfRunAction(const G4Run* aRun); - - private: - G4int runIDcounter; -}; - -#endif - diff --git a/source/g3tog4/test/parity.dat b/source/g3tog4/test/parity.dat deleted file mode 100644 index d2977a6e97..0000000000 --- a/source/g3tog4/test/parity.dat +++ /dev/null @@ -1,14 +0,0 @@ ----- GSMATE 1 "AIR " 0.14610000E+02 0.70000002E+01 0.12050000E-02 0.30423240E+05 0 ----- GSMATE 2 "SILICON " 0.28090000E+02 0.14000000E+02 0.23299999E+01 0.93648071E+01 0 ----- GSTMED 1 "Mother " 1 0 2 0.15000000E+02 0.10000000E+02 -0.10000000E+01 -0.10000000E+01 0.99999998E-02 -0.10000000E+01 0 ----- GSTMED 2 "Detector " 2 0 2 0.15000000E+02 0.10000000E+02 -0.10000000E+01 -0.10000000E+01 0.99999998E-02 -0.10000000E+01 0 ----- GSROTM 1 90.00000 0.00000 90.00000 90.0000 0.0 0.0 ----- GSROTM 2 90.00000 90.00000 90.00000 180.0000 0.0 0.0 ----- GSROTM 3 90.00000 90.00000 90.00000 180.0000 180.0 0.0 ----- GSVOLU MOTH TUBE 1 3 0.0 50.0 50. ----- GSVOLU MBOX BOX 1 3 5.0 5.0 5.0 ----- GSVOLU WAFR TRD1 2 4 1.0 2.0 3.0 0.015 ----- GSPOS WAFR 1 MBOX 0.00000000 0.00000000 0.0 1 ONLY ----- GSPOS MBOX 1 MOTH 0.00000000 0.00000000 20.0 2 ONLY ----- GSPOS MBOX 2 MOTH 0.00000000 0.00000000 -20.0 3 ONLY ----- GGCLOS diff --git a/source/g3tog4/test/src/G3toG4DetectorConstruction.cc b/source/g3tog4/test/src/G3toG4DetectorConstruction.cc deleted file mode 100644 index d368e0528b..0000000000 --- a/source/g3tog4/test/src/G3toG4DetectorConstruction.cc +++ /dev/null @@ -1,110 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G3toG4DetectorConstruction.cc,v 1.7 1999/12/15 14:49:45 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -//-------------------------------------------------------------------------- -// G3toG4DetectorConstruction. Most the work is Done in -// G4BuildGeom, which returns a G4LogicalVolume*, a pointer to the -// top-level logiical volume in the detector defined by the call List file -// inFile -//-------------------------------------------------------------------------- - -#include "G4ios.hh" -#include "G3toG4DetectorConstruction.hh" -#include "G4VisAttributes.hh" -#include "G4Colour.hh" -#include "G4Material.hh" -#include "G4Box.hh" - -G3toG4DetectorConstruction::G3toG4DetectorConstruction(G4String inFile){ - _inFile = inFile; - G4cout << "Instantiated G3toG4DetectorConstruction using call list file \"" - << _inFile << "\"" << G4endl; -} - -G3toG4DetectorConstruction::~G3toG4DetectorConstruction(){ - // G4cout << "Deleted G3toG4DetectorConstruction..." << G4endl; -} - -G4VPhysicalVolume* -G3toG4DetectorConstruction::Construct(){ - _lv = G4BuildGeom(_inFile); - //_lv = SimpleConstruct(); - if (_lv != 0) { - _pv = new G4PVPlacement(0, G4ThreeVector(), _lv, _lv->GetName(), 0, - false, 0); - G4cout << "Top-level G3toG4 logical volume " << _lv->GetName() << " " - << *(_lv -> GetVisAttributes()) << G4endl; - } else - G4cerr << "creation of logical mother failed !!!" << G4endl; - return _pv; -} -G4LogicalVolume* -G3toG4DetectorConstruction::SimpleConstruct(){ - G4String name, symbol; //a=mass of a mole; - G4double a, z, density, fractionmass; //z=mean number of protons; - G4int ncomponents, iz, n; //iz=number of protons in an isotope; - // n=number of nucleons in an isotope; - - 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); - - // - // define a material from elements. case 2: mixture by fractional mass - // - - 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); - G4VSolid* Mother = new G4Box("TestMother", //its name - 100*cm, 100*cm, 100*cm); //its size - - G4VSolid* Daughter = new G4Box("TestDaughter", 50*cm, 20*cm, 10*cm); - - G4LogicalVolume* logicMother = new G4LogicalVolume(Mother, //its solid - Air, //its material - "LTestMother");//its name - - G4LogicalVolume* logicDaughter = new G4LogicalVolume(Daughter, //its solid - Air, //its material - "LTestDaughter"); - - G4VPhysicalVolume* physiDaughter = new G4PVPlacement(0, - G4ThreeVector(), - logicDaughter, - "PTestDaughter", - logicMother, - false,0); - // - // Visualization attributes - // - - logicMother->SetVisAttributes (G4VisAttributes::Invisible); - G4VisAttributes* DaughterVisAtt= new G4VisAttributes(G4Colour(1.0,1.0,1.0)); - DaughterVisAtt->SetVisibility(true); - logicDaughter->SetVisAttributes(DaughterVisAtt); - return logicMother; -} - - - - - - - - - - - - - diff --git a/source/g3tog4/test/src/G3toG4EventAction.cc b/source/g3tog4/test/src/G3toG4EventAction.cc deleted file mode 100644 index 8f8a07a605..0000000000 --- a/source/g3tog4/test/src/G3toG4EventAction.cc +++ /dev/null @@ -1,77 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G3toG4EventAction.cc,v 1.7 1999/12/15 14:49:45 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#include "g4rw/tvordvec.h" -#include "G4ios.hh" -#include "G3toG4EventAction.hh" -#include "G3toG4EventActionMessenger.hh" -#include "G4Event.hh" -#include "G4EventManager.hh" -#include "G4HCofThisEvent.hh" -#include "G4TrajectoryContainer.hh" -#include "G4Trajectory.hh" -#include "G4VVisManager.hh" -#include "G4UImanager.hh" -#include "G4UnitsTable.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G3toG4EventAction::G3toG4EventAction() - : drawFlag("all"),eventMessenger(NULL) -{ - eventMessenger = new G3toG4EventActionMessenger(this); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G3toG4EventAction::~G3toG4EventAction() -{ - delete eventMessenger; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G3toG4EventAction::BeginOfEventAction(const G4Event* Ev) -{;} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G3toG4EventAction::EndOfEventAction(const G4Event* Ev) -{ - const G4Event* evt = fpEventManager->GetConstCurrentEvent(); - - G4cout << ">>> Event " << evt->GetEventID() << G4endl; - - G4TrajectoryContainer * trajectoryContainer = evt->GetTrajectoryContainer(); - G4int n_trajectories = 0; - if(trajectoryContainer){ - n_trajectories = trajectoryContainer->entries(); - } - G4cout << " " << n_trajectories - << " trajectories stored in this event." << 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); - } - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - - diff --git a/source/g3tog4/test/src/G3toG4EventActionMessenger.cc b/source/g3tog4/test/src/G3toG4EventActionMessenger.cc deleted file mode 100644 index 7825dbc2f9..0000000000 --- a/source/g3tog4/test/src/G3toG4EventActionMessenger.cc +++ /dev/null @@ -1,52 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G3toG4EventActionMessenger.cc,v 1.2 1999/12/05 17:50:29 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#include "G3toG4EventActionMessenger.hh" - -#include "G3toG4EventAction.hh" -#include "G4UIcmdWithAString.hh" -#include "globals.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G3toG4EventActionMessenger::G3toG4EventActionMessenger(G3toG4EventAction* EvAct) -:eventAction(EvAct) -{ - DrawCmd = new G4UIcmdWithAString("/event/draw",this); - DrawCmd->SetGuidance("Draw the tracks in the event"); - DrawCmd->SetGuidance(" Choice : none, charged, all (default)"); - DrawCmd->SetParameterName("choice",true); - DrawCmd->SetDefaultValue("all"); - DrawCmd->SetCandidates("none charged all"); - DrawCmd->AvailableForStates(Idle); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G3toG4EventActionMessenger::~G3toG4EventActionMessenger() -{ - delete DrawCmd; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G3toG4EventActionMessenger::SetNewValue(G4UIcommand * command,G4String newValue) -{ - if(command == DrawCmd) - {eventAction->SetDrawFlag(newValue);} - -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/source/g3tog4/test/src/G3toG4PhysicsList.cc b/source/g3tog4/test/src/G3toG4PhysicsList.cc deleted file mode 100644 index 2c8ad14915..0000000000 --- a/source/g3tog4/test/src/G3toG4PhysicsList.cc +++ /dev/null @@ -1,294 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G3toG4PhysicsList.cc,v 1.7 1999/12/15 14:49:45 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#include "G3toG4PhysicsList.hh" - -#include "G4ParticleDefinition.hh" -#include "G4ParticleWithCuts.hh" -#include "G4ProcessManager.hh" -#include "G4ProcessVector.hh" -#include "G4ParticleTypes.hh" -#include "G4ParticleTable.hh" -#include "G4Material.hh" -#include "G4ios.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G3toG4PhysicsList::G3toG4PhysicsList(): G4VUserPhysicsList() -{ - currentDefaultCut = defaultCutValue = 2.0*mm; - cutForGamma = defaultCutValue; - cutForElectron = defaultCutValue; - cutForProton = defaultCutValue; - - SetVerboseLevel(1); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G3toG4PhysicsList::~G3toG4PhysicsList() -{} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G3toG4PhysicsList::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(); - ConstructBaryons(); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G3toG4PhysicsList::ConstructBosons() -{ - // pseudo-particles - G4Geantino::GeantinoDefinition(); - G4ChargedGeantino::ChargedGeantinoDefinition(); - - // gamma - G4Gamma::GammaDefinition(); - - // optical photon - G4OpticalPhoton::OpticalPhotonDefinition(); -} - //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G3toG4PhysicsList::ConstructLeptons() -{ - // leptons - G4Electron::ElectronDefinition(); - G4Positron::PositronDefinition(); - G4MuonPlus::MuonPlusDefinition(); - G4MuonMinus::MuonMinusDefinition(); - - G4NeutrinoE::NeutrinoEDefinition(); - G4AntiNeutrinoE::AntiNeutrinoEDefinition(); - G4NeutrinoMu::NeutrinoMuDefinition(); - G4AntiNeutrinoMu::AntiNeutrinoMuDefinition(); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G3toG4PhysicsList::ConstructMesons() -{ - // mesons - G4PionPlus::PionPlusDefinition(); - G4PionMinus::PionMinusDefinition(); - G4PionZero::PionZeroDefinition(); - G4Eta::EtaDefinition(); - G4EtaPrime::EtaPrimeDefinition(); - G4RhoZero::RhoZeroDefinition(); - G4KaonPlus::KaonPlusDefinition(); - G4KaonMinus::KaonMinusDefinition(); - G4KaonZero::KaonZeroDefinition(); - G4AntiKaonZero::AntiKaonZeroDefinition(); - G4KaonZeroLong::KaonZeroLongDefinition(); - G4KaonZeroShort::KaonZeroShortDefinition(); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G3toG4PhysicsList::ConstructBaryons() -{ -// barions - G4Proton::ProtonDefinition(); - G4AntiProton::AntiProtonDefinition(); - G4Neutron::NeutronDefinition(); - G4AntiNeutron::AntiNeutronDefinition(); -} - - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G3toG4PhysicsList::ConstructProcess() -{ - AddTransportation(); - ConstructEM(); - ConstructGeneral(); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#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" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G3toG4PhysicsList::ConstructEM() -{ - theParticleIterator->reset(); - while( (*theParticleIterator)() ){ - G4ParticleDefinition* particle = theParticleIterator->value(); - G4ProcessManager* pmanager = particle->GetProcessManager(); - G4String particleName = particle->GetParticleName(); - - if (particleName == "gamma") { - //gamma - pmanager->AddDiscreteProcess(new G4PhotoElectricEffect()); - pmanager->AddDiscreteProcess(new G4ComptonScattering()); - pmanager->AddDiscreteProcess(new G4GammaConversion()); - - } else if (particleName == "e-") { - //electron - 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 G4eBremsstrahlung(), -1,-1,3); - pmanager->AddProcess(new G4eplusAnnihilation(), 0,-1,4); - - } else if( particleName == "mu+" || - particleName == "mu-" ) { - //muon - pmanager->AddProcess(new G4MultipleScattering(),-1, 1,1); - pmanager->AddProcess(new G4MuIonisation(), -1, 2,2); - pmanager->AddProcess(new G4MuBremsstrahlung(), -1,-1,3); - pmanager->AddProcess(new G4MuPairProduction(), -1,-1,4); - - } else if ((!particle->IsShortLived()) && - (particle->GetPDGCharge() != 0.0) && - (particle->GetParticleName() != "chargedgeantino")) { - //all others charged particles except geantino - pmanager->AddProcess(new G4MultipleScattering(),-1,1,1); - pmanager->AddProcess(new G4hIonisation(), -1,2,2); - } - } -} - - -#include "G4Decay.hh" - -void G3toG4PhysicsList::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); - } - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G3toG4PhysicsList::SetCuts() -{ - // reactualise cutValues - if (currentDefaultCut != defaultCutValue) - { - if(cutForGamma == currentDefaultCut) cutForGamma = defaultCutValue; - if(cutForElectron == currentDefaultCut) cutForElectron = defaultCutValue; - if(cutForProton == currentDefaultCut) cutForProton = defaultCutValue; - currentDefaultCut = defaultCutValue; - } - - if (verboseLevel >0){ - G4cout << "G3toG4PhysicsList::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+"); - - // 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(cutForProton, "proton"); - SetCutValue(cutForProton, "anti_proton"); - - SetCutValueForOthers(defaultCutValue); - - if (verboseLevel>0) DumpCutValuesTable(); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - - -void G3toG4PhysicsList::SetCutForGamma(G4double cut) -{ - ResetCuts(); - cutForGamma = cut; -} - -void G3toG4PhysicsList::SetCutForElectron(G4double cut) -{ - ResetCuts(); - cutForElectron = cut; -} - -void G3toG4PhysicsList::SetCutForProton(G4double cut) -{ - ResetCuts(); - cutForProton = cut; -} - -G4double G3toG4PhysicsList::GetCutForGamma() const -{ - return cutForGamma; -} - -G4double G3toG4PhysicsList::GetCutForElectron() const -{ - return cutForElectron; -} - -G4double G3toG4PhysicsList::GetCutForProton() const -{ - return cutForGamma; -} - - - - - - - - - - - - diff --git a/source/g3tog4/test/src/G3toG4PrimaryGeneratorAction.cc b/source/g3tog4/test/src/G3toG4PrimaryGeneratorAction.cc deleted file mode 100644 index d8bbe43b06..0000000000 --- a/source/g3tog4/test/src/G3toG4PrimaryGeneratorAction.cc +++ /dev/null @@ -1,76 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G3toG4PrimaryGeneratorAction.cc,v 1.4 1999/12/15 14:49:45 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - -#include "globals.hh" -#include "Randomize.hh" -#include "G3toG4PrimaryGeneratorAction.hh" -#include "G4Event.hh" -#include "G4ParticleGun.hh" -#include "G4ParticleTable.hh" -#include "G4ParticleDefinition.hh" - -G3toG4PrimaryGeneratorAction::G3toG4PrimaryGeneratorAction(){ - G4int n_particle = 1; - particleGun = new G4ParticleGun(n_particle); - - G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable(); - G4String particleName; - G4ParticleDefinition* particle - = particleTable->FindParticle(particleName="chargedgeantino"); - particleGun->SetParticleDefinition(particle); - G4ThreeVector direction(0, 0, 1); - particleGun->SetParticleMomentumDirection(direction.unit()); - particleGun->SetParticleEnergy(1.*GeV); - particleGun->SetParticlePosition(G4ThreeVector(0.*cm, 0.*cm,0.*cm)); -} - -G3toG4PrimaryGeneratorAction::~G3toG4PrimaryGeneratorAction(){ - delete particleGun; -} - -void -G3toG4PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent){ - G4ThreeVector direction = GetRandomDirection(); - G4cout << ">>>>>>>> Primary direction: " << direction << G4endl; - particleGun->SetParticleMomentumDirection( direction.unit() ) ; - particleGun->GeneratePrimaryVertex(anEvent); - particleGun->GeneratePrimaryVertex(anEvent); -} - -G4ThreeVector -G3toG4PrimaryGeneratorAction::GetRandomDirection() { - - G4ThreeVector retval; - - G4double CosTheta; - G4double SinTheta; - - G4double Phi; - G4double SinPhi; - G4double CosPhi; - - G4double rand; - - rand = G4UniformRand(); - - CosTheta = 2.0*rand -1.0; - SinTheta = sqrt (1.-CosTheta*CosTheta); - rand = G4UniformRand(); - Phi = twopi*rand; - SinPhi = sin (Phi); - CosPhi = cos (Phi); - retval.setX(SinTheta*CosPhi); - retval.setY(SinTheta*SinPhi); - retval.setZ(CosTheta); - - return retval; -} - diff --git a/source/g3tog4/test/src/G3toG4RunAction.cc b/source/g3tog4/test/src/G3toG4RunAction.cc deleted file mode 100644 index 7cccd093b6..0000000000 --- a/source/g3tog4/test/src/G3toG4RunAction.cc +++ /dev/null @@ -1,38 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G3toG4RunAction.cc,v 1.6 1999/12/15 14:49:45 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - -#include "G4ios.hh" -#include "G3toG4RunAction.hh" -#include "G4Run.hh" -#include "G4VVisManager.hh" -#include "G4UImanager.hh" -#include "G4ios.hh" - -G3toG4RunAction::G3toG4RunAction(){ - runIDcounter = 0; -} - -G3toG4RunAction::~G3toG4RunAction(){;} - -void G3toG4RunAction::BeginOfRunAction(const G4Run* aRun){ - ((G4Run *)(aRun))->SetRunID(runIDcounter++); - G4cout << "### Run " << aRun->GetRunID() << " start." << G4endl; - - G4UImanager* UI = G4UImanager::GetUIpointer(); - - if (G4VVisManager::GetConcreteInstance()) { - UI->ApplyCommand("/vis~/clear/view"); - UI->ApplyCommand("/vis~/draw/current"); - } -} - -void G3toG4RunAction::EndOfRunAction(const G4Run* aRun){;} - diff --git a/source/g3tog4/test/svtwaf.dat b/source/g3tog4/test/svtwaf.dat deleted file mode 100644 index e76f0ea5f8..0000000000 --- a/source/g3tog4/test/svtwaf.dat +++ /dev/null @@ -1,598 +0,0 @@ ----- GSMATE 1 "HYDROGEN " 0.10100000E+01 0.10000000E+01 0.70799999E-01 0.86500000E+03 0 ----- GSMATE 2 "DEUTERIUM " 0.20100000E+01 0.10000000E+01 0.16200000E+00 0.75700000E+03 0 ----- GSMATE 3 "HELIUM " 0.40000000E+01 0.20000000E+01 0.12500000E+00 0.75500000E+03 0 ----- GSMATE 4 "LITHIUM " 0.69400001E+01 0.30000000E+01 0.53399998E+00 0.15500000E+03 0 ----- GSMATE 5 "BERILLIUM " 0.90100002E+01 0.40000000E+01 0.18480000E+01 0.35299999E+02 0 ----- GSMATE 6 "CARBON " 0.12010000E+02 0.60000000E+01 0.22650001E+01 0.18799999E+02 0 ----- GSMATE 7 "NITROGEN " 0.14010000E+02 0.70000000E+01 0.80800003E+00 0.44500000E+02 0 ----- GSMATE 8 "NEON " 0.20180000E+02 0.10000000E+02 0.12070000E+01 0.24000000E+02 0 ----- GSMATE 9 "ALUMINIUM " 0.26980000E+02 0.13000000E+02 0.27000000E+01 0.88999996E+01 0 ----- GSMATE 10 "IRON " 0.55849998E+02 0.26000000E+02 0.78699999E+01 0.17600000E+01 0 ----- GSMATE 11 "COPPER " 0.63540001E+02 0.29000000E+02 0.89600000E+01 0.14299999E+01 0 ----- GSMATE 12 "TUNGSTEN " 0.18385001E+03 0.74000000E+02 0.19299999E+02 0.34999999E+00 0 ----- GSMATE 13 "LEAD " 0.20719000E+03 0.82000000E+02 0.11350000E+02 0.56000000E+00 0 ----- GSMATE 14 "URANIUM " 0.23803000E+03 0.92000000E+02 0.18950001E+02 0.31999999E+00 0 ----- GSMATE 15 "AIR " 0.14610000E+02 0.73000002E+01 0.12050000E-02 0.30423240E+05 0 ----- GSMATE 16 "VACUUM " 0.10000000E-15 0.10000000E-15 0.10000000E-15 0.10000000E+17 0 ----- GSMIXT 17 "svt-Shield " 0.16785001E+01 2 0.12011000E+02 0.26981539E+02 0.60000000E+01 0.13000000E+02 0.87180001E+00 0.12819999E+00 ----- GSMATE 18 "svt-Aluminum " 0.26981539E+02 0.13000000E+02 0.27000000E+01 0.88756104E+01 0 ----- GSMATE 19 "svt-Resin " 0.13060000E+02 0.60000000E+01 0.11600000E+01 0.31594828E+02 0 ----- GSMATE 20 "svt-Silicon " 0.28085501E+02 0.14000000E+02 0.23299999E+01 0.93496084E+01 0 ----- GSMIXT 21 "svt-Berg " 0.22000000E+01 4 0.63546001E+02 0.65389999E+02 0.20720000E+03 0.55847000E+02 0.29000000E+02 0.30000000E+02 0.82000000E+02 0.26000000E+02 0.61500001E+00 0.36000001E+00 0.20000000E-01 0.49999999E-02 ----- GSMIXT 22 "svt-Water " 0.10000000E+01 2 0.10079401E+01 0.15999400E+02 0.10000000E+01 0.80000000E+01 0.11189836E+00 0.88810170E+00 ----- GSMIXT 23 "svt-Brass " 0.82299995E+01 4 0.63546001E+02 0.65389999E+02 0.20720000E+03 0.55847000E+02 0.29000000E+02 0.30000000E+02 0.82000000E+02 0.26000000E+02 0.61500001E+00 0.36000001E+00 0.20000000E-01 0.49999999E-02 ----- GSMIXT 24 "svt-Air " 0.12900000E-02 2 0.14006740E+02 0.15999400E+02 0.70000000E+01 0.80000000E+01 0.73699999E+00 0.26300001E+00 ----- GSMIXT 25 "svt-AlN " 0.32800000E+01 2 0.26981539E+02 0.14006740E+02 0.13000000E+02 0.70000000E+01 0.66000003E+00 0.34000000E+00 ----- GSMATE 26 "svt-Kapton " 0.12011000E+02 0.60000000E+01 0.14200000E+01 0.29927940E+02 0 ----- GSMIXT 27 "svt-KaptCu " 0.33862000E+01 2 0.12011000E+02 0.63546001E+02 0.60000000E+01 0.29000000E+02 0.31000000E+00 0.69000000E+00 ----- GSMATE 28 "svt-Hardner " 0.13060000E+02 0.60000000E+01 0.10100000E+01 0.41940594E+02 0 ----- GSMIXT 29 "svt-Kevlar " 0.16000000E+01 3 0.12011000E+02 0.13060000E+02 0.13060000E+02 0.60000000E+01 0.60000000E+01 0.60000000E+01 0.60000002E+00 0.28000000E+00 0.12000000E+00 ----- GSMATE 30 "svt-CFiber " 0.12011000E+02 0.60000000E+01 0.15900000E+01 0.26728094E+02 0 ----- GSMIXT 31 "svt-Epoxy " 0.11100000E+01 2 0.13060000E+02 0.13060000E+02 0.60000000E+01 0.60000000E+01 0.69999999E+00 0.30000001E+00 ----- GSTMED 1 "BB Detector " 15 0 2 0.15000000E+02 0.10000000E+02 -0.10000000E+01 -0.10000000E+01 0.99999998E-02 -0.10000000E+01 0 ----- GSTMED 2 "silicon-mother " 24 0 2 0.15000000E+02 0.10000000E+01 -0.10000000E+01 -0.10000000E+01 0.99999998E-02 -0.10000000E+01 0 ----- GSTMED 3 "silicon-detectors " 20 1 2 0.15000000E+02 0.10000000E+01 -0.10000000E+01 -0.10000000E+01 0.99999997E-04 -0.10000000E+01 0 ----- GSTMED 4 "inert-silicon " 20 0 2 0.15000000E+02 0.10000000E+01 -0.10000000E+01 -0.10000000E+01 0.99999997E-04 -0.10000000E+01 0 ----- GSTMED 5 "kapton " 27 0 2 0.15000000E+02 0.10000000E+01 -0.10000000E+01 -0.10000000E+01 0.99999997E-04 -0.10000000E+01 0 ----- GSTMED 6 "support-material " 29 0 2 0.15000000E+02 0.10000000E+01 -0.10000000E+01 -0.10000000E+01 0.99999998E-02 -0.10000000E+01 0 ----- GSTMED 7 "rohacell " 30 0 2 0.15000000E+02 0.10000000E+01 -0.10000000E+01 -0.10000000E+01 0.99999998E-02 -0.10000000E+01 0 ----- GSTMED 8 "electronics " 20 0 2 0.15000000E+02 0.10000000E+01 -0.10000000E+01 -0.10000000E+01 0.10000000E-02 -0.10000000E+01 0 ----- GSTMED 9 "AlN-sub " 25 0 2 0.15000000E+02 0.10000000E+01 -0.10000000E+01 -0.10000000E+01 0.10000000E-02 -0.10000000E+01 0 ----- GSTMED 10 "bushing " 23 0 2 0.15000000E+02 0.10000000E+01 -0.10000000E+01 -0.10000000E+01 0.10000000E-02 -0.10000000E+01 0 ----- GSTMED 11 "water " 22 0 2 0.15000000E+02 0.10000000E+01 -0.10000000E+01 -0.10000000E+01 0.10000000E-02 -0.10000000E+01 0 ----- GSROTM 1 90.00000 95.40000 90.00000 5.40000 180.00000 -129.60001 ----- GSROTM 2 90.00000 -84.60000 90.00000 5.40000 0.00000 -39.60000 ----- GSROTM 3 90.00000 155.39999 90.00000 65.40000 179.99998 -69.60001 ----- GSROTM 4 90.00000 -24.60000 90.00000 65.40000 0.00000 20.40000 ----- GSROTM 5 90.00000 215.39999 90.00000 125.40000 179.99998 -9.60000 ----- GSROTM 6 90.00000 35.40000 90.00000 125.40000 0.00001 80.40000 ----- GSROTM 7 90.00000 275.39999 90.00000 185.39999 179.99998 50.40000 ----- GSROTM 8 90.00000 95.39999 90.00000 185.39999 0.00000 140.39999 ----- GSROTM 9 90.00000 335.39999 90.00000 245.39999 179.99998 110.39999 ----- GSROTM 10 90.00000 155.39999 90.00000 245.39999 0.00001 -159.60002 ----- GSROTM 11 90.00000 395.39999 90.00000 305.39999 179.99998 170.39999 ----- GSROTM 12 90.00000 215.39999 90.00000 305.39999 0.00001 -99.60001 ----- GSROTM 13 90.00000 95.40000 90.00000 5.40000 180.00000 -129.60001 ----- GSROTM 14 90.00000 -84.60000 90.00000 5.40000 0.00000 -39.60000 ----- GSROTM 15 90.00000 155.39999 90.00000 65.40000 179.99998 -69.60001 ----- GSROTM 16 90.00000 -24.60000 90.00000 65.40000 0.00000 20.40000 ----- GSROTM 17 90.00000 215.39999 90.00000 125.40000 179.99998 -9.60000 ----- GSROTM 18 90.00000 35.40000 90.00000 125.40000 0.00001 80.40000 ----- GSROTM 19 90.00000 275.39999 90.00000 185.39999 179.99998 50.40000 ----- GSROTM 20 90.00000 95.39999 90.00000 185.39999 0.00000 140.39999 ----- GSROTM 21 90.00000 335.39999 90.00000 245.39999 179.99998 110.39999 ----- GSROTM 22 90.00000 155.39999 90.00000 245.39999 0.00001 -159.60002 ----- GSROTM 23 90.00000 395.39999 90.00000 305.39999 179.99998 170.39999 ----- GSROTM 24 90.00000 215.39999 90.00000 305.39999 0.00001 -99.60001 ----- GSROTM 25 90.00000 95.40000 90.00000 5.40000 180.00000 -129.60001 ----- GSROTM 26 90.00000 -84.60000 90.00000 5.40000 0.00000 -39.60000 ----- GSROTM 27 90.00000 155.39999 90.00000 65.40000 179.99998 -69.60001 ----- GSROTM 28 90.00000 -24.60000 90.00000 65.40000 0.00000 20.40000 ----- GSROTM 29 90.00000 215.39999 90.00000 125.40000 179.99998 -9.60000 ----- GSROTM 30 90.00000 35.40000 90.00000 125.40000 0.00001 80.40000 ----- GSROTM 31 90.00000 275.39999 90.00000 185.39999 179.99998 50.40000 ----- GSROTM 32 90.00000 95.39999 90.00000 185.39999 0.00000 140.39999 ----- GSROTM 33 90.00000 335.39999 90.00000 245.39999 179.99998 110.39999 ----- GSROTM 34 90.00000 155.39999 90.00000 245.39999 0.00001 -159.60002 ----- GSROTM 35 90.00000 395.39999 90.00000 305.39999 179.99998 170.39999 ----- GSROTM 36 90.00000 215.39999 90.00000 305.39999 0.00001 -99.60001 ----- GSROTM 37 90.00000 101.25000 62.00000 11.25000 152.00000 11.25000 ----- GSROTM 38 90.00000 101.25000 90.00000 11.25000 180.00000 -123.75000 ----- GSROTM 39 90.00000 -78.75000 90.00000 11.25000 0.00000 -33.75000 ----- GSROTM 40 90.00000 -78.75000 117.00000 11.25000 26.99999 11.25000 ----- GSROTM 41 90.00000 123.75000 62.00000 33.75000 152.00000 33.74999 ----- GSROTM 42 90.00000 123.75000 90.00000 33.75000 180.00000 -101.25000 ----- GSROTM 43 90.00000 -56.25000 90.00000 33.75000 0.00000 -11.25000 ----- GSROTM 44 90.00000 -56.25000 117.00000 33.75000 26.99999 33.75000 ----- GSROTM 45 90.00000 146.25000 62.00000 56.25000 152.00000 56.25000 ----- GSROTM 46 90.00000 146.25000 90.00000 56.25000 180.00000 -78.75000 ----- GSROTM 47 90.00000 -33.75000 90.00000 56.25000 0.00000 11.25000 ----- GSROTM 48 90.00000 -33.75000 117.00000 56.25000 26.99999 56.25000 ----- GSROTM 49 90.00000 168.75000 62.00000 78.75000 152.00000 78.75000 ----- GSROTM 50 90.00000 168.75000 90.00000 78.75000 180.00000 -56.25000 ----- GSROTM 51 90.00000 -11.25000 90.00000 78.75000 0.00000 33.75000 ----- GSROTM 52 90.00000 -11.25000 117.00000 78.75000 26.99999 78.74999 ----- GSROTM 53 90.00000 191.25000 62.00000 101.25000 152.00000 101.24999 ----- GSROTM 54 90.00000 191.25000 90.00000 101.25000 180.00000 -33.75000 ----- GSROTM 55 90.00000 11.25000 90.00000 101.25000 0.00000 56.25000 ----- GSROTM 56 90.00000 11.25000 117.00000 101.25000 26.99999 101.25000 ----- GSROTM 57 90.00000 213.75000 62.00000 123.75000 152.00000 123.75000 ----- GSROTM 58 90.00000 213.75000 90.00000 123.75000 179.99998 -11.25000 ----- GSROTM 59 90.00000 33.75000 90.00000 123.75000 0.00001 78.75000 ----- GSROTM 60 90.00000 33.75000 117.00000 123.75000 26.99999 123.75000 ----- GSROTM 61 90.00000 236.25000 62.00000 146.25000 152.00000 146.24998 ----- GSROTM 62 90.00000 236.25000 90.00000 146.25000 179.99998 11.25000 ----- GSROTM 63 90.00000 56.25000 90.00000 146.25000 0.00001 101.25000 ----- GSROTM 64 90.00000 56.25000 117.00000 146.25000 26.99999 146.25000 ----- GSROTM 65 90.00000 258.75000 62.00000 168.75000 152.00000 168.75000 ----- GSROTM 66 90.00000 258.75000 90.00000 168.75000 180.00000 33.75000 ----- GSROTM 67 90.00000 78.75000 90.00000 168.75000 0.00000 123.75000 ----- GSROTM 68 90.00000 78.75000 117.00000 168.75000 26.99999 168.75000 ----- GSROTM 69 90.00000 281.25000 62.00000 191.25000 152.00000 -168.75000 ----- GSROTM 70 90.00000 281.25000 90.00000 191.25000 179.99998 56.25000 ----- GSROTM 71 90.00000 101.25000 90.00000 191.25000 0.00001 146.25000 ----- GSROTM 72 90.00000 101.25000 117.00000 191.25000 26.99999 -168.75000 ----- GSROTM 73 90.00000 303.75000 62.00000 213.75000 152.00000 -146.25002 ----- GSROTM 74 90.00000 303.75000 90.00000 213.75000 179.99998 78.75000 ----- GSROTM 75 90.00000 123.75000 90.00000 213.75000 0.00001 168.75000 ----- GSROTM 76 90.00000 123.75000 117.00000 213.75000 26.99999 -146.25002 ----- GSROTM 77 90.00000 326.25000 62.00000 236.25000 152.00000 -123.75001 ----- GSROTM 78 90.00000 326.25000 90.00000 236.25000 179.99998 101.24999 ----- GSROTM 79 90.00000 146.25000 90.00000 236.25000 0.00002 -168.75000 ----- GSROTM 80 90.00000 146.25000 117.00000 236.25000 26.99999 -123.75000 ----- GSROTM 81 90.00000 348.75000 62.00000 258.75000 152.00000 -101.25000 ----- GSROTM 82 90.00000 348.75000 90.00000 258.75000 179.99998 123.75000 ----- GSROTM 83 90.00000 168.75000 90.00000 258.75000 0.00001 -146.25000 ----- GSROTM 84 90.00000 168.75000 117.00000 258.75000 26.99999 -101.25001 ----- GSROTM 85 90.00000 371.25000 62.00000 281.25000 152.00000 -78.75002 ----- GSROTM 86 90.00000 371.25000 90.00000 281.25000 179.99998 146.25000 ----- GSROTM 87 90.00000 191.25000 90.00000 281.25000 0.00001 -123.75000 ----- GSROTM 88 90.00000 191.25000 117.00000 281.25000 26.99999 -78.75001 ----- GSROTM 89 90.00000 393.75000 62.00000 303.75000 152.00000 -56.25001 ----- GSROTM 90 90.00000 393.75000 90.00000 303.75000 179.99998 168.75000 ----- GSROTM 91 90.00000 213.75000 90.00000 303.75000 0.00002 -101.25001 ----- GSROTM 92 90.00000 213.75000 117.00000 303.75000 26.99999 -56.25000 ----- GSROTM 93 90.00000 416.25000 62.00000 326.25000 152.00000 -33.75000 ----- GSROTM 94 90.00000 416.25000 90.00000 326.25000 179.99998 -168.75000 ----- GSROTM 95 90.00000 236.25000 90.00000 326.25000 0.00001 -78.75001 ----- GSROTM 96 90.00000 236.25000 117.00000 326.25000 26.99999 -33.75002 ----- GSROTM 97 90.00000 438.75000 62.00000 348.75000 152.00000 -11.25002 ----- GSROTM 98 90.00000 438.75000 90.00000 348.75000 179.99998 -146.25000 ----- GSROTM 99 90.00000 258.75000 90.00000 348.75000 0.00001 -56.25000 ----- GSROTM 100 90.00000 258.75000 117.00000 348.75000 26.99999 -11.25001 ----- GSROTM 101 90.00000 90.00000 66.00000 0.00000 156.00000 0.00000 ----- GSROTM 102 90.00000 90.00000 90.00000 0.00000 180.00000 -135.00000 ----- GSROTM 103 90.00000 -90.00000 90.00000 0.00000 0.00000 -45.00000 ----- GSROTM 104 90.00000 -90.00000 111.00000 0.00000 21.00000 -0.00001 ----- GSROTM 105 90.00000 110.00000 66.00000 20.00000 156.00000 19.99999 ----- GSROTM 106 90.00000 110.00000 90.00000 20.00000 180.00000 -115.00000 ----- GSROTM 107 90.00000 -70.00000 90.00000 20.00000 0.00000 -25.00000 ----- GSROTM 108 90.00000 -70.00000 111.00000 20.00000 21.00000 19.99999 ----- GSROTM 109 90.00000 130.00000 66.00000 40.00000 156.00000 40.00000 ----- GSROTM 110 90.00000 130.00000 90.00000 40.00000 180.00000 -95.00000 ----- GSROTM 111 90.00000 -50.00000 90.00000 40.00000 0.00000 -5.00000 ----- GSROTM 112 90.00000 -50.00000 111.00000 40.00000 21.00000 39.99999 ----- GSROTM 113 90.00000 150.00000 66.00000 60.00000 156.00000 59.99999 ----- GSROTM 114 90.00000 150.00000 90.00000 60.00000 180.00000 -75.00000 ----- GSROTM 115 90.00000 -30.00000 90.00000 60.00000 0.00000 15.00000 ----- GSROTM 116 90.00000 -30.00000 111.00000 60.00000 21.00000 59.99999 ----- GSROTM 117 90.00000 170.00000 66.00000 80.00000 156.00000 79.99999 ----- GSROTM 118 90.00000 170.00000 90.00000 80.00000 180.00000 -55.00000 ----- GSROTM 119 90.00000 -10.00000 90.00000 80.00000 0.00000 35.00000 ----- GSROTM 120 90.00000 -10.00000 111.00000 80.00000 21.00000 79.99999 ----- GSROTM 121 90.00000 190.00000 66.00000 100.00000 156.00000 100.00000 ----- GSROTM 122 90.00000 190.00000 90.00000 100.00000 180.00000 -35.00000 ----- GSROTM 123 90.00000 10.00000 90.00000 100.00000 0.00000 55.00000 ----- GSROTM 124 90.00000 10.00000 111.00000 100.00000 21.00000 99.99999 ----- GSROTM 125 90.00000 210.00000 66.00000 120.00000 156.00000 119.99999 ----- GSROTM 126 90.00000 210.00000 90.00000 120.00000 180.00000 -15.00000 ----- GSROTM 127 90.00000 30.00000 90.00000 120.00000 0.00000 75.00000 ----- GSROTM 128 90.00000 30.00000 111.00000 120.00000 21.00000 119.99999 ----- GSROTM 129 90.00000 230.00000 66.00000 140.00000 156.00000 140.00000 ----- GSROTM 130 90.00000 230.00000 90.00000 140.00000 179.99998 5.00000 ----- GSROTM 131 90.00000 50.00000 90.00000 140.00000 0.00000 95.00000 ----- GSROTM 132 90.00000 50.00000 111.00000 140.00000 21.00000 140.00000 ----- GSROTM 133 90.00000 250.00000 66.00000 160.00000 156.00000 160.00000 ----- GSROTM 134 90.00000 250.00000 90.00000 160.00000 179.99998 25.00000 ----- GSROTM 135 90.00000 70.00000 90.00000 160.00000 0.00001 115.00000 ----- GSROTM 136 90.00000 70.00000 111.00000 160.00000 21.00000 160.00000 ----- GSROTM 137 90.00000 270.00000 66.00000 180.00000 156.00000 180.00000 ----- GSROTM 138 90.00000 270.00000 90.00000 180.00000 180.00000 45.00000 ----- GSROTM 139 90.00000 90.00000 90.00000 180.00000 0.00000 135.00000 ----- GSROTM 140 90.00000 90.00000 111.00000 180.00000 21.00000 180.00000 ----- GSROTM 141 90.00000 290.00000 66.00000 200.00000 156.00000 -160.00002 ----- GSROTM 142 90.00000 290.00000 90.00000 200.00000 180.00000 65.00000 ----- GSROTM 143 90.00000 110.00000 90.00000 200.00000 0.00000 155.00000 ----- GSROTM 144 90.00000 110.00000 111.00000 200.00000 21.00000 -160.00002 ----- GSROTM 145 90.00000 310.00000 66.00000 220.00000 156.00000 -140.00002 ----- GSROTM 146 90.00000 310.00000 90.00000 220.00000 180.00000 84.99999 ----- GSROTM 147 90.00000 130.00000 90.00000 220.00000 0.00001 175.00000 ----- GSROTM 148 90.00000 130.00000 111.00000 220.00000 21.00000 -140.00000 ----- GSROTM 149 90.00000 330.00000 66.00000 240.00000 156.00000 -120.00002 ----- GSROTM 150 90.00000 330.00000 90.00000 240.00000 179.99998 105.00000 ----- GSROTM 151 90.00000 150.00000 90.00000 240.00000 0.00001 -165.00000 ----- GSROTM 152 90.00000 150.00000 111.00000 240.00000 21.00000 -120.00001 ----- GSROTM 153 90.00000 350.00000 66.00000 260.00000 156.00000 -100.00002 ----- GSROTM 154 90.00000 350.00000 90.00000 260.00000 179.99998 124.99999 ----- GSROTM 155 90.00000 170.00000 90.00000 260.00000 0.00001 -145.00000 ----- GSROTM 156 90.00000 170.00000 111.00000 260.00000 21.00000 -100.00002 ----- GSROTM 157 90.00000 370.00000 66.00000 280.00000 156.00000 -80.00000 ----- GSROTM 158 90.00000 370.00000 90.00000 280.00000 179.99998 145.00000 ----- GSROTM 159 90.00000 190.00000 90.00000 280.00000 0.00001 -125.00000 ----- GSROTM 160 90.00000 190.00000 111.00000 280.00000 21.00000 -80.00001 ----- GSROTM 161 90.00000 390.00000 66.00000 300.00000 156.00000 -60.00000 ----- GSROTM 162 90.00000 390.00000 90.00000 300.00000 179.99998 165.00000 ----- GSROTM 163 90.00000 210.00000 90.00000 300.00000 0.00001 -105.00001 ----- GSROTM 164 90.00000 210.00000 111.00000 300.00000 21.00000 -60.00001 ----- GSROTM 165 90.00000 410.00000 66.00000 320.00000 156.00000 -40.00001 ----- GSROTM 166 90.00000 410.00000 90.00000 320.00000 179.99998 -175.00000 ----- GSROTM 167 90.00000 230.00000 90.00000 320.00000 0.00002 -85.00000 ----- GSROTM 168 90.00000 230.00000 111.00000 320.00000 21.00000 -40.00000 ----- GSROTM 169 90.00000 430.00000 66.00000 340.00000 156.00000 -20.00001 ----- GSROTM 170 90.00000 430.00000 90.00000 340.00000 179.99998 -155.00002 ----- GSROTM 171 90.00000 250.00000 90.00000 340.00000 0.00002 -65.00001 ----- GSROTM 172 90.00000 250.00000 111.00000 340.00000 21.00000 -20.00000 ----- GSVOLU SSA1 TRD1 3 4 0.20650001E+01 0.20650001E+01 0.15000000E-01 0.21199999E+01 ----- GSVOLU SSA2 TRD1 3 4 0.24707501E+01 0.24707501E+01 0.15000000E-01 0.22700000E+01 ----- GSVOLU SSA3 TRD1 3 4 0.35734999E+01 0.35734999E+01 0.15000000E-01 0.21949999E+01 ----- GSVOLU SSA6 TRD1 3 4 0.21650000E+01 0.26400001E+01 0.15000000E-01 0.33985000E+01 ----- GSVOLU SSA4 TRD1 3 4 0.26250000E+01 0.26250000E+01 0.15000000E-01 0.33775001E+01 ----- GSVOLU SSA5 TRD1 3 4 0.26250000E+01 0.26250000E+01 0.15000000E-01 0.26949999E+01 ----- GSVOLU SSI1 TRD1 4 4 0.20650001E+01 0.20650001E+01 0.16700000E-01 0.21199999E+01 ----- GSVOLU SSI2 TRD1 4 4 0.24707501E+01 0.24707501E+01 0.16700000E-01 0.22700000E+01 ----- GSVOLU SSI3 TRD1 4 4 0.35734999E+01 0.35734999E+01 0.16700000E-01 0.21949999E+01 ----- GSVOLU SSI6 TRD1 4 4 0.21650000E+01 0.26400001E+01 0.16700000E-01 0.33985000E+01 ----- GSVOLU SSI4 TRD1 4 4 0.26250000E+01 0.26250000E+01 0.16700000E-01 0.33775001E+01 ----- GSVOLU SSI5 TRD1 4 4 0.26250000E+01 0.26250000E+01 0.16700000E-01 0.26949999E+01 ----- GSVOLU SSK1 TRD1 5 4 0.20650001E+01 0.20650001E+01 0.17000000E-02 0.21199999E+01 ----- GSVOLU SSK2 TRD1 5 4 0.24707501E+01 0.24707501E+01 0.17000000E-02 0.22700000E+01 ----- GSVOLU SSK3 TRD1 5 4 0.35734999E+01 0.35734999E+01 0.17000000E-02 0.21949999E+01 ----- GSVOLU SSK6 TRD1 5 4 0.21650000E+01 0.26400001E+01 0.17000000E-02 0.33985000E+01 ----- GSVOLU SSK4 TRD1 5 4 0.26250000E+01 0.26250000E+01 0.17000000E-02 0.33775001E+01 ----- GSVOLU SSK5 TRD1 5 4 0.26250000E+01 0.26250000E+01 0.17000000E-02 0.26949999E+01 ----- GSVOLU SSVD TUBE 1 3 0.00000000E+00 0.31000000E+04 0.18000000E+05 ----- GSPOS SSI1 1 SSVD 0.33182940E+01 -0.55969357E-01 0.90451250E+01 1 ONLY ----- GSPOS SSI1 2 SSVD 0.33182940E+01 -0.55969357E-01 0.47993755E+01 1 ONLY ----- GSPOS SSI1 3 SSVD 0.33182940E+01 -0.55969357E-01 0.55362511E+00 2 ONLY ----- GSPOS SSI1 4 SSVD 0.33182940E+01 -0.55969357E-01 -0.36921253E+01 2 ONLY ----- GSPOS SSI1 5 SSVD 0.17076176E+01 0.28457422E+01 0.90451250E+01 3 ONLY ----- GSPOS SSI1 6 SSVD 0.17076176E+01 0.28457422E+01 0.47993755E+01 3 ONLY ----- GSPOS SSI1 7 SSVD 0.17076176E+01 0.28457422E+01 0.55362511E+00 4 ONLY ----- GSPOS SSI1 8 SSVD 0.17076176E+01 0.28457422E+01 -0.36921253E+01 4 ONLY ----- GSPOS SSI1 9 SSVD -0.16106765E+01 0.29017115E+01 0.90451250E+01 5 ONLY ----- GSPOS SSI1 10 SSVD -0.16106765E+01 0.29017115E+01 0.47993755E+01 5 ONLY ----- GSPOS SSI1 11 SSVD -0.16106765E+01 0.29017115E+01 0.55362511E+00 6 ONLY ----- GSPOS SSI1 12 SSVD -0.16106765E+01 0.29017115E+01 -0.36921253E+01 6 ONLY ----- GSPOS SSI1 13 SSVD -0.33182938E+01 0.55969715E-01 0.90451250E+01 7 ONLY ----- GSPOS SSI1 14 SSVD -0.33182938E+01 0.55969715E-01 0.47993755E+01 7 ONLY ----- GSPOS SSI1 15 SSVD -0.33182938E+01 0.55969715E-01 0.55362511E+00 8 ONLY ----- GSPOS SSI1 16 SSVD -0.33182938E+01 0.55969715E-01 -0.36921253E+01 8 ONLY ----- GSPOS SSI1 17 SSVD -0.17076187E+01 -0.28457417E+01 0.90451250E+01 9 ONLY ----- GSPOS SSI1 18 SSVD -0.17076187E+01 -0.28457417E+01 0.47993755E+01 9 ONLY ----- GSPOS SSI1 19 SSVD -0.17076187E+01 -0.28457417E+01 0.55362511E+00 10 ONLY ----- GSPOS SSI1 20 SSVD -0.17076187E+01 -0.28457417E+01 -0.36921253E+01 10 ONLY ----- GSPOS SSI1 21 SSVD 0.16106759E+01 -0.29017117E+01 0.90451250E+01 11 ONLY ----- GSPOS SSI1 22 SSVD 0.16106759E+01 -0.29017117E+01 0.47993755E+01 11 ONLY ----- GSPOS SSI1 23 SSVD 0.16106759E+01 -0.29017117E+01 0.55362511E+00 12 ONLY ----- GSPOS SSI1 24 SSVD 0.16106759E+01 -0.29017117E+01 -0.36921253E+01 12 ONLY ----- GSPOS SSI2 1 SSVD 0.40317507E+01 -0.16531247E+00 0.88951254E+01 13 ONLY ----- GSPOS SSI2 2 SSVD 0.40317507E+01 -0.16531247E+00 0.43493752E+01 13 ONLY ----- GSPOS SSI2 3 SSVD 0.40317507E+01 -0.16531247E+00 -0.19637394E+00 14 ONLY ----- GSPOS SSI2 4 SSVD 0.40317507E+01 -0.16531247E+00 -0.47421236E+01 14 ONLY ----- GSPOS SSI2 5 SSVD 0.21590397E+01 0.34089422E+01 0.88951254E+01 15 ONLY ----- GSPOS SSI2 6 SSVD 0.21590397E+01 0.34089422E+01 0.43493752E+01 15 ONLY ----- GSPOS SSI2 7 SSVD 0.21590397E+01 0.34089422E+01 -0.19637394E+00 16 ONLY ----- GSPOS SSI2 8 SSVD 0.21590397E+01 0.34089422E+01 -0.47421236E+01 16 ONLY ----- GSPOS SSI2 9 SSVD -0.18727109E+01 0.35742543E+01 0.88951254E+01 17 ONLY ----- GSPOS SSI2 10 SSVD -0.18727109E+01 0.35742543E+01 0.43493752E+01 17 ONLY ----- GSPOS SSI2 11 SSVD -0.18727109E+01 0.35742543E+01 -0.19637394E+00 18 ONLY ----- GSPOS SSI2 12 SSVD -0.18727109E+01 0.35742543E+01 -0.47421236E+01 18 ONLY ----- GSPOS SSI2 13 SSVD -0.40317502E+01 0.16531292E+00 0.88951254E+01 19 ONLY ----- GSPOS SSI2 14 SSVD -0.40317502E+01 0.16531292E+00 0.43493752E+01 19 ONLY ----- GSPOS SSI2 15 SSVD -0.40317502E+01 0.16531292E+00 -0.19637394E+00 20 ONLY ----- GSPOS SSI2 16 SSVD -0.40317502E+01 0.16531292E+00 -0.47421236E+01 20 ONLY ----- GSPOS SSI2 17 SSVD -0.21590409E+01 -0.34089413E+01 0.88951254E+01 21 ONLY ----- GSPOS SSI2 18 SSVD -0.21590409E+01 -0.34089413E+01 0.43493752E+01 21 ONLY ----- GSPOS SSI2 19 SSVD -0.21590409E+01 -0.34089413E+01 -0.19637394E+00 22 ONLY ----- GSPOS SSI2 20 SSVD -0.21590409E+01 -0.34089413E+01 -0.47421236E+01 22 ONLY ----- GSPOS SSI2 21 SSVD 0.18727103E+01 -0.35742548E+01 0.88951254E+01 23 ONLY ----- GSPOS SSI2 22 SSVD 0.18727103E+01 -0.35742548E+01 0.43493752E+01 23 ONLY ----- GSPOS SSI2 23 SSVD 0.18727103E+01 -0.35742548E+01 -0.19637394E+00 24 ONLY ----- GSPOS SSI2 24 SSVD 0.18727103E+01 -0.35742548E+01 -0.47421236E+01 24 ONLY ----- GSPOS SSI3 1 SSVD 0.59426103E+01 -0.19059682E+00 0.14064917E+02 25 ONLY ----- GSPOS SSI3 2 SSVD 0.59426103E+01 -0.19059682E+00 0.96687498E+01 25 ONLY ----- GSPOS SSI3 3 SSVD 0.59426103E+01 -0.19059682E+00 0.52725830E+01 25 ONLY ----- GSPOS SSI3 4 SSVD 0.59426103E+01 -0.19059682E+00 0.87641716E+00 26 ONLY ----- GSPOS SSI3 5 SSVD 0.59426103E+01 -0.19059682E+00 -0.35197506E+01 26 ONLY ----- GSPOS SSI3 6 SSVD 0.59426103E+01 -0.19059682E+00 -0.79159184E+01 26 ONLY ----- GSPOS SSI3 7 SSVD 0.31363666E+01 0.50511532E+01 0.14064917E+02 27 ONLY ----- GSPOS SSI3 8 SSVD 0.31363666E+01 0.50511532E+01 0.96687498E+01 27 ONLY ----- GSPOS SSI3 9 SSVD 0.31363666E+01 0.50511532E+01 0.52725830E+01 27 ONLY ----- GSPOS SSI3 10 SSVD 0.31363666E+01 0.50511532E+01 0.87641716E+00 28 ONLY ----- GSPOS SSI3 11 SSVD 0.31363666E+01 0.50511532E+01 -0.35197506E+01 28 ONLY ----- GSPOS SSI3 12 SSVD 0.31363666E+01 0.50511532E+01 -0.79159184E+01 28 ONLY ----- GSPOS SSI3 13 SSVD -0.28062441E+01 0.52417498E+01 0.14064917E+02 29 ONLY ----- GSPOS SSI3 14 SSVD -0.28062441E+01 0.52417498E+01 0.96687498E+01 29 ONLY ----- GSPOS SSI3 15 SSVD -0.28062441E+01 0.52417498E+01 0.52725830E+01 29 ONLY ----- GSPOS SSI3 16 SSVD -0.28062441E+01 0.52417498E+01 0.87641716E+00 30 ONLY ----- GSPOS SSI3 17 SSVD -0.28062441E+01 0.52417498E+01 -0.35197506E+01 30 ONLY ----- GSPOS SSI3 18 SSVD -0.28062441E+01 0.52417498E+01 -0.79159184E+01 30 ONLY ----- GSPOS SSI3 19 SSVD -0.59426103E+01 0.19059747E+00 0.14064917E+02 31 ONLY ----- GSPOS SSI3 20 SSVD -0.59426103E+01 0.19059747E+00 0.96687498E+01 31 ONLY ----- GSPOS SSI3 21 SSVD -0.59426103E+01 0.19059747E+00 0.52725830E+01 31 ONLY ----- GSPOS SSI3 22 SSVD -0.59426103E+01 0.19059747E+00 0.87641716E+00 32 ONLY ----- GSPOS SSI3 23 SSVD -0.59426103E+01 0.19059747E+00 -0.35197506E+01 32 ONLY ----- GSPOS SSI3 24 SSVD -0.59426103E+01 0.19059747E+00 -0.79159184E+01 32 ONLY ----- GSPOS SSI3 25 SSVD -0.31363683E+01 -0.50511522E+01 0.14064917E+02 33 ONLY ----- GSPOS SSI3 26 SSVD -0.31363683E+01 -0.50511522E+01 0.96687498E+01 33 ONLY ----- GSPOS SSI3 27 SSVD -0.31363683E+01 -0.50511522E+01 0.52725830E+01 33 ONLY ----- GSPOS SSI3 28 SSVD -0.31363683E+01 -0.50511522E+01 0.87641716E+00 34 ONLY ----- GSPOS SSI3 29 SSVD -0.31363683E+01 -0.50511522E+01 -0.35197506E+01 34 ONLY ----- GSPOS SSI3 30 SSVD -0.31363683E+01 -0.50511522E+01 -0.79159184E+01 34 ONLY ----- GSPOS SSI3 31 SSVD 0.28062432E+01 -0.52417507E+01 0.14064917E+02 35 ONLY ----- GSPOS SSI3 32 SSVD 0.28062432E+01 -0.52417507E+01 0.96687498E+01 35 ONLY ----- GSPOS SSI3 33 SSVD 0.28062432E+01 -0.52417507E+01 0.52725830E+01 35 ONLY ----- GSPOS SSI3 34 SSVD 0.28062432E+01 -0.52417507E+01 0.87641716E+00 36 ONLY ----- GSPOS SSI3 35 SSVD 0.28062432E+01 -0.52417507E+01 -0.35197506E+01 36 ONLY ----- GSPOS SSI3 36 SSVD 0.28062432E+01 -0.52417507E+01 -0.79159184E+01 36 ONLY ----- GSPOS SSI6 1 SSVD 0.10200806E+02 0.20290666E+01 0.21509911E+02 37 ONLY ----- GSPOS SSI4 1 SSVD 0.11767756E+02 0.23407521E+01 0.15121400E+02 38 ONLY ----- GSPOS SSI5 1 SSVD 0.11767756E+02 0.23407521E+01 0.90386992E+01 38 ONLY ----- GSPOS SSI5 2 SSVD 0.11767756E+02 0.23407521E+01 0.36384993E+01 39 ONLY ----- GSPOS SSI5 3 SSVD 0.11767756E+02 0.23407521E+01 -0.17617016E+01 39 ONLY ----- GSPOS SSI5 4 SSVD 0.11767756E+02 0.23407521E+01 -0.71619015E+01 39 ONLY ----- GSPOS SSI6 2 SSVD 0.10252471E+02 0.20393434E+01 -0.12895312E+02 40 ONLY ----- GSPOS SSI6 3 SSVD 0.89804134E+01 0.60005207E+01 0.22413912E+02 41 ONLY ----- GSPOS SSI4 2 SSVD 0.10308809E+02 0.68881259E+01 0.16025400E+02 42 ONLY ----- GSPOS SSI4 3 SSVD 0.10308809E+02 0.68881259E+01 0.92602005E+01 42 ONLY ----- GSPOS SSI5 5 SSVD 0.10308809E+02 0.68881259E+01 0.31774998E+01 43 ONLY ----- GSPOS SSI5 6 SSVD 0.10308809E+02 0.68881259E+01 -0.22227001E+01 43 ONLY ----- GSPOS SSI5 7 SSVD 0.10308809E+02 0.68881259E+01 -0.76229000E+01 43 ONLY ----- GSPOS SSI6 4 SSVD 0.90242128E+01 0.60297866E+01 -0.13356313E+02 44 ONLY ----- GSPOS SSI6 5 SSVD 0.57782927E+01 0.86478262E+01 0.21509911E+02 45 ONLY ----- GSPOS SSI4 4 SSVD 0.66658983E+01 0.99762211E+01 0.15121400E+02 46 ONLY ----- GSPOS SSI5 8 SSVD 0.66658983E+01 0.99762211E+01 0.90386992E+01 46 ONLY ----- GSPOS SSI5 9 SSVD 0.66658983E+01 0.99762211E+01 0.36384993E+01 47 ONLY ----- GSPOS SSI5 10 SSVD 0.66658983E+01 0.99762211E+01 -0.17617016E+01 47 ONLY ----- GSPOS SSI5 11 SSVD 0.66658983E+01 0.99762211E+01 -0.71619015E+01 47 ONLY ----- GSPOS SSI6 6 SSVD 0.58075585E+01 0.86916256E+01 -0.12895312E+02 48 ONLY ----- GSPOS SSI6 7 SSVD 0.21071029E+01 0.10593120E+02 0.22413912E+02 49 ONLY ----- GSPOS SSI4 5 SSVD 0.24187887E+01 0.12160069E+02 0.16025400E+02 50 ONLY ----- GSPOS SSI4 6 SSVD 0.24187887E+01 0.12160069E+02 0.92602005E+01 50 ONLY ----- GSPOS SSI5 12 SSVD 0.24187887E+01 0.12160069E+02 0.31774998E+01 51 ONLY ----- GSPOS SSI5 13 SSVD 0.24187887E+01 0.12160069E+02 -0.22227001E+01 51 ONLY ----- GSPOS SSI5 14 SSVD 0.24187887E+01 0.12160069E+02 -0.76229000E+01 51 ONLY ----- GSPOS SSI6 8 SSVD 0.21173797E+01 0.10644785E+02 -0.13356313E+02 52 ONLY ----- GSPOS SSI6 9 SSVD -0.20290666E+01 0.10200806E+02 0.21509911E+02 53 ONLY ----- GSPOS SSI4 7 SSVD -0.23407521E+01 0.11767756E+02 0.15121400E+02 54 ONLY ----- GSPOS SSI5 15 SSVD -0.23407521E+01 0.11767756E+02 0.90386992E+01 54 ONLY ----- GSPOS SSI5 16 SSVD -0.23407521E+01 0.11767756E+02 0.36384993E+01 55 ONLY ----- GSPOS SSI5 17 SSVD -0.23407521E+01 0.11767756E+02 -0.17617016E+01 55 ONLY ----- GSPOS SSI5 18 SSVD -0.23407521E+01 0.11767756E+02 -0.71619015E+01 55 ONLY ----- GSPOS SSI6 10 SSVD -0.20393434E+01 0.10252471E+02 -0.12895312E+02 56 ONLY ----- GSPOS SSI6 11 SSVD -0.60005198E+01 0.89804144E+01 0.22413912E+02 57 ONLY ----- GSPOS SSI4 8 SSVD -0.68881254E+01 0.10308809E+02 0.16025400E+02 58 ONLY ----- GSPOS SSI4 9 SSVD -0.68881254E+01 0.10308809E+02 0.92602005E+01 58 ONLY ----- GSPOS SSI5 19 SSVD -0.68881254E+01 0.10308809E+02 0.31774998E+01 59 ONLY ----- GSPOS SSI5 20 SSVD -0.68881254E+01 0.10308809E+02 -0.22227001E+01 59 ONLY ----- GSPOS SSI5 21 SSVD -0.68881254E+01 0.10308809E+02 -0.76229000E+01 59 ONLY ----- GSPOS SSI6 12 SSVD -0.60297856E+01 0.90242138E+01 -0.13356313E+02 60 ONLY ----- GSPOS SSI6 13 SSVD -0.86478262E+01 0.57782922E+01 0.21509911E+02 61 ONLY ----- GSPOS SSI4 10 SSVD -0.99762220E+01 0.66658974E+01 0.15121400E+02 62 ONLY ----- GSPOS SSI5 22 SSVD -0.99762220E+01 0.66658974E+01 0.90386992E+01 62 ONLY ----- GSPOS SSI5 23 SSVD -0.99762220E+01 0.66658974E+01 0.36384993E+01 63 ONLY ----- GSPOS SSI5 24 SSVD -0.99762220E+01 0.66658974E+01 -0.17617016E+01 63 ONLY ----- GSPOS SSI5 25 SSVD -0.99762220E+01 0.66658974E+01 -0.71619015E+01 63 ONLY ----- GSPOS SSI6 14 SSVD -0.86916256E+01 0.58075581E+01 -0.12895312E+02 64 ONLY ----- GSPOS SSI6 15 SSVD -0.10593121E+02 0.21071024E+01 0.22413912E+02 65 ONLY ----- GSPOS SSI4 11 SSVD -0.12160069E+02 0.24187880E+01 0.16025400E+02 66 ONLY ----- GSPOS SSI4 12 SSVD -0.12160069E+02 0.24187880E+01 0.92602005E+01 66 ONLY ----- GSPOS SSI5 26 SSVD -0.12160069E+02 0.24187880E+01 0.31774998E+01 67 ONLY ----- GSPOS SSI5 27 SSVD -0.12160069E+02 0.24187880E+01 -0.22227001E+01 67 ONLY ----- GSPOS SSI5 28 SSVD -0.12160069E+02 0.24187880E+01 -0.76229000E+01 67 ONLY ----- GSPOS SSI6 16 SSVD -0.10644785E+02 0.21173792E+01 -0.13356313E+02 68 ONLY ----- GSPOS SSI6 17 SSVD -0.10200807E+02 -0.20290658E+01 0.21509911E+02 69 ONLY ----- GSPOS SSI4 13 SSVD -0.11767756E+02 -0.23407512E+01 0.15121400E+02 70 ONLY ----- GSPOS SSI5 29 SSVD -0.11767756E+02 -0.23407512E+01 0.90386992E+01 70 ONLY ----- GSPOS SSI5 30 SSVD -0.11767756E+02 -0.23407512E+01 0.36384993E+01 71 ONLY ----- GSPOS SSI5 31 SSVD -0.11767756E+02 -0.23407512E+01 -0.17617016E+01 71 ONLY ----- GSPOS SSI5 32 SSVD -0.11767756E+02 -0.23407512E+01 -0.71619015E+01 71 ONLY ----- GSPOS SSI6 18 SSVD -0.10252472E+02 -0.20393426E+01 -0.12895312E+02 72 ONLY ----- GSPOS SSI6 19 SSVD -0.89804125E+01 -0.60005212E+01 0.22413912E+02 73 ONLY ----- GSPOS SSI4 14 SSVD -0.10308808E+02 -0.68881269E+01 0.16025400E+02 74 ONLY ----- GSPOS SSI4 15 SSVD -0.10308808E+02 -0.68881269E+01 0.92602005E+01 74 ONLY ----- GSPOS SSI5 33 SSVD -0.10308808E+02 -0.68881269E+01 0.31774998E+01 75 ONLY ----- GSPOS SSI5 34 SSVD -0.10308808E+02 -0.68881269E+01 -0.22227001E+01 75 ONLY ----- GSPOS SSI5 35 SSVD -0.10308808E+02 -0.68881269E+01 -0.76229000E+01 75 ONLY ----- GSPOS SSI6 20 SSVD -0.90242119E+01 -0.60297871E+01 -0.13356313E+02 76 ONLY ----- GSPOS SSI6 21 SSVD -0.57782946E+01 -0.86478243E+01 0.21509911E+02 77 ONLY ----- GSPOS SSI4 16 SSVD -0.66659002E+01 -0.99762201E+01 0.15121400E+02 78 ONLY ----- GSPOS SSI5 36 SSVD -0.66659002E+01 -0.99762201E+01 0.90386992E+01 78 ONLY ----- GSPOS SSI5 37 SSVD -0.66659002E+01 -0.99762201E+01 0.36384993E+01 79 ONLY ----- GSPOS SSI5 38 SSVD -0.66659002E+01 -0.99762201E+01 -0.17617016E+01 79 ONLY ----- GSPOS SSI5 39 SSVD -0.66659002E+01 -0.99762201E+01 -0.71619015E+01 79 ONLY ----- GSPOS SSI6 22 SSVD -0.58075604E+01 -0.86916237E+01 -0.12895312E+02 80 ONLY ----- GSPOS SSI6 23 SSVD -0.21071033E+01 -0.10593120E+02 0.22413912E+02 81 ONLY ----- GSPOS SSI4 17 SSVD -0.24187889E+01 -0.12160069E+02 0.16025400E+02 82 ONLY ----- GSPOS SSI4 18 SSVD -0.24187889E+01 -0.12160069E+02 0.92602005E+01 82 ONLY ----- GSPOS SSI5 40 SSVD -0.24187889E+01 -0.12160069E+02 0.31774998E+01 83 ONLY ----- GSPOS SSI5 41 SSVD -0.24187889E+01 -0.12160069E+02 -0.22227001E+01 83 ONLY ----- GSPOS SSI5 42 SSVD -0.24187889E+01 -0.12160069E+02 -0.76229000E+01 83 ONLY ----- GSPOS SSI6 24 SSVD -0.21173801E+01 -0.10644785E+02 -0.13356313E+02 84 ONLY ----- GSPOS SSI6 25 SSVD 0.20290675E+01 -0.10200806E+02 0.21509911E+02 85 ONLY ----- GSPOS SSI4 19 SSVD 0.23407533E+01 -0.11767756E+02 0.15121400E+02 86 ONLY ----- GSPOS SSI5 43 SSVD 0.23407533E+01 -0.11767756E+02 0.90386992E+01 86 ONLY ----- GSPOS SSI5 44 SSVD 0.23407533E+01 -0.11767756E+02 0.36384993E+01 87 ONLY ----- GSPOS SSI5 45 SSVD 0.23407533E+01 -0.11767756E+02 -0.17617016E+01 87 ONLY ----- GSPOS SSI5 46 SSVD 0.23407533E+01 -0.11767756E+02 -0.71619015E+01 87 ONLY ----- GSPOS SSI6 26 SSVD 0.20393443E+01 -0.10252471E+02 -0.12895312E+02 88 ONLY ----- GSPOS SSI6 27 SSVD 0.60005188E+01 -0.89804144E+01 0.22413912E+02 89 ONLY ----- GSPOS SSI4 20 SSVD 0.68881240E+01 -0.10308810E+02 0.16025400E+02 90 ONLY ----- GSPOS SSI4 21 SSVD 0.68881240E+01 -0.10308810E+02 0.92602005E+01 90 ONLY ----- GSPOS SSI5 47 SSVD 0.68881240E+01 -0.10308810E+02 0.31774998E+01 91 ONLY ----- GSPOS SSI5 48 SSVD 0.68881240E+01 -0.10308810E+02 -0.22227001E+01 91 ONLY ----- GSPOS SSI5 49 SSVD 0.68881240E+01 -0.10308810E+02 -0.76229000E+01 91 ONLY ----- GSPOS SSI6 28 SSVD 0.60297847E+01 -0.90242138E+01 -0.13356313E+02 92 ONLY ----- GSPOS SSI6 29 SSVD 0.86478262E+01 -0.57782931E+01 0.21509911E+02 93 ONLY ----- GSPOS SSI4 22 SSVD 0.99762211E+01 -0.66658988E+01 0.15121400E+02 94 ONLY ----- GSPOS SSI5 50 SSVD 0.99762211E+01 -0.66658988E+01 0.90386992E+01 94 ONLY ----- GSPOS SSI5 51 SSVD 0.99762211E+01 -0.66658988E+01 0.36384993E+01 95 ONLY ----- GSPOS SSI5 52 SSVD 0.99762211E+01 -0.66658988E+01 -0.17617016E+01 95 ONLY ----- GSPOS SSI5 53 SSVD 0.99762211E+01 -0.66658988E+01 -0.71619015E+01 95 ONLY ----- GSPOS SSI6 30 SSVD 0.86916256E+01 -0.58075590E+01 -0.12895312E+02 96 ONLY ----- GSPOS SSI6 31 SSVD 0.10593121E+02 -0.21071017E+01 0.22413912E+02 97 ONLY ----- GSPOS SSI4 23 SSVD 0.12160069E+02 -0.24187870E+01 0.16025400E+02 98 ONLY ----- GSPOS SSI4 24 SSVD 0.12160069E+02 -0.24187870E+01 0.92602005E+01 98 ONLY ----- GSPOS SSI5 54 SSVD 0.12160069E+02 -0.24187870E+01 0.31774998E+01 99 ONLY ----- GSPOS SSI5 55 SSVD 0.12160069E+02 -0.24187870E+01 -0.22227001E+01 99 ONLY ----- GSPOS SSI5 56 SSVD 0.12160069E+02 -0.24187870E+01 -0.76229000E+01 99 ONLY ----- GSPOS SSI6 32 SSVD 0.10644785E+02 -0.21173785E+01 -0.13356313E+02 100 ONLY ----- GSPOS SSI6 33 SSVD 0.13014118E+02 0.00000000E+00 0.29117945E+02 101 ONLY ----- GSPOS SSI4 25 SSVD 0.14398299E+02 0.00000000E+00 0.22625916E+02 102 ONLY ----- GSPOS SSI4 26 SSVD 0.14398299E+02 0.00000000E+00 0.15861750E+02 102 ONLY ----- GSPOS SSI4 27 SSVD 0.14398299E+02 0.00000000E+00 0.90975819E+01 102 ONLY ----- GSPOS SSI4 28 SSVD 0.14398299E+02 0.00000000E+00 0.23334141E+01 103 ONLY ----- GSPOS SSI4 29 SSVD 0.14398299E+02 0.00000000E+00 -0.44307537E+01 103 ONLY ----- GSPOS SSI4 30 SSVD 0.14398299E+02 0.00000000E+00 -0.11194916E+02 103 ONLY ----- GSPOS SSI6 34 SSVD 0.13178707E+02 0.00000000E+00 -0.17755049E+02 104 ONLY ----- GSPOS SSI6 35 SSVD 0.11853395E+02 0.43142824E+01 0.28153944E+02 105 ONLY ----- GSPOS SSI4 31 SSVD 0.13154099E+02 0.47877002E+01 0.21661917E+02 106 ONLY ----- GSPOS SSI4 32 SSVD 0.13154099E+02 0.47877002E+01 0.14897751E+02 106 ONLY ----- GSPOS SSI5 57 SSVD 0.13154099E+02 0.47877002E+01 0.88160839E+01 106 ONLY ----- GSPOS SSI4 33 SSVD 0.13154099E+02 0.47877002E+01 0.27344170E+01 107 ONLY ----- GSPOS SSI4 34 SSVD 0.13154099E+02 0.47877002E+01 -0.40297508E+01 107 ONLY ----- GSPOS SSI4 35 SSVD 0.13154099E+02 0.47877002E+01 -0.10793917E+02 107 ONLY ----- GSPOS SSI6 36 SSVD 0.12008057E+02 0.43705750E+01 -0.17354050E+02 108 ONLY ----- GSPOS SSI6 37 SSVD 0.99693928E+01 0.83653135E+01 0.29117945E+02 109 ONLY ----- GSPOS SSI4 36 SSVD 0.11029737E+02 0.92550478E+01 0.22625916E+02 110 ONLY ----- GSPOS SSI4 37 SSVD 0.11029737E+02 0.92550478E+01 0.15861750E+02 110 ONLY ----- GSPOS SSI4 38 SSVD 0.11029737E+02 0.92550478E+01 0.90975819E+01 110 ONLY ----- GSPOS SSI4 39 SSVD 0.11029737E+02 0.92550478E+01 0.23334141E+01 111 ONLY ----- GSPOS SSI4 40 SSVD 0.11029737E+02 0.92550478E+01 -0.44307537E+01 111 ONLY ----- GSPOS SSI4 41 SSVD 0.11029737E+02 0.92550478E+01 -0.11194916E+02 111 ONLY ----- GSPOS SSI6 38 SSVD 0.10095475E+02 0.84711094E+01 -0.17755049E+02 112 ONLY ----- GSPOS SSI6 39 SSVD 0.63070588E+01 0.10924148E+02 0.28153944E+02 113 ONLY ----- GSPOS SSI4 42 SSVD 0.69991493E+01 0.12122884E+02 0.21661917E+02 114 ONLY ----- GSPOS SSI4 43 SSVD 0.69991493E+01 0.12122884E+02 0.14897751E+02 114 ONLY ----- GSPOS SSI5 58 SSVD 0.69991493E+01 0.12122884E+02 0.88160839E+01 114 ONLY ----- GSPOS SSI4 44 SSVD 0.69991493E+01 0.12122884E+02 0.27344170E+01 115 ONLY ----- GSPOS SSI4 45 SSVD 0.69991493E+01 0.12122884E+02 -0.40297508E+01 115 ONLY ----- GSPOS SSI4 46 SSVD 0.69991493E+01 0.12122884E+02 -0.10793917E+02 115 ONLY ----- GSPOS SSI6 40 SSVD 0.63893533E+01 0.11066686E+02 -0.17354050E+02 116 ONLY ----- GSPOS SSI6 41 SSVD 0.22598784E+01 0.12816404E+02 0.29117945E+02 117 ONLY ----- GSPOS SSI4 47 SSVD 0.25002391E+01 0.14179556E+02 0.22625916E+02 118 ONLY ----- GSPOS SSI4 48 SSVD 0.25002391E+01 0.14179556E+02 0.15861750E+02 118 ONLY ----- GSPOS SSI4 49 SSVD 0.25002391E+01 0.14179556E+02 0.90975819E+01 118 ONLY ----- GSPOS SSI4 50 SSVD 0.25002391E+01 0.14179556E+02 0.23334141E+01 119 ONLY ----- GSPOS SSI4 51 SSVD 0.25002391E+01 0.14179556E+02 -0.44307537E+01 119 ONLY ----- GSPOS SSI4 52 SSVD 0.25002391E+01 0.14179556E+02 -0.11194916E+02 119 ONLY ----- GSPOS SSI6 42 SSVD 0.22884591E+01 0.12978493E+02 -0.17755049E+02 120 ONLY ----- GSPOS SSI6 43 SSVD -0.21904190E+01 0.12422482E+02 0.28153944E+02 121 ONLY ----- GSPOS SSI4 53 SSVD -0.24307795E+01 0.13785634E+02 0.21661917E+02 122 ONLY ----- GSPOS SSI4 54 SSVD -0.24307795E+01 0.13785634E+02 0.14897751E+02 122 ONLY ----- GSPOS SSI5 59 SSVD -0.24307795E+01 0.13785634E+02 0.88160839E+01 122 ONLY ----- GSPOS SSI4 55 SSVD -0.24307795E+01 0.13785634E+02 0.27344170E+01 123 ONLY ----- GSPOS SSI4 56 SSVD -0.24307795E+01 0.13785634E+02 -0.40297508E+01 123 ONLY ----- GSPOS SSI4 57 SSVD -0.24307795E+01 0.13785634E+02 -0.10793917E+02 123 ONLY ----- GSPOS SSI6 44 SSVD -0.22189994E+01 0.12584570E+02 -0.17354050E+02 124 ONLY ----- GSPOS SSI6 45 SSVD -0.65070601E+01 0.11270556E+02 0.29117945E+02 125 ONLY ----- GSPOS SSI4 58 SSVD -0.71991506E+01 0.12469293E+02 0.22625916E+02 126 ONLY ----- GSPOS SSI4 59 SSVD -0.71991506E+01 0.12469293E+02 0.15861750E+02 126 ONLY ----- GSPOS SSI4 60 SSVD -0.71991506E+01 0.12469293E+02 0.90975819E+01 126 ONLY ----- GSPOS SSI4 61 SSVD -0.71991506E+01 0.12469293E+02 0.23334141E+01 127 ONLY ----- GSPOS SSI4 62 SSVD -0.71991506E+01 0.12469293E+02 -0.44307537E+01 127 ONLY ----- GSPOS SSI4 63 SSVD -0.71991506E+01 0.12469293E+02 -0.11194916E+02 127 ONLY ----- GSPOS SSI6 46 SSVD -0.65893545E+01 0.11413095E+02 -0.17755049E+02 128 ONLY ----- GSPOS SSI6 47 SSVD -0.96629753E+01 0.81081991E+01 0.28153944E+02 129 ONLY ----- GSPOS SSI4 64 SSVD -0.10723320E+02 0.89979343E+01 0.21661917E+02 130 ONLY ----- GSPOS SSI4 65 SSVD -0.10723320E+02 0.89979343E+01 0.14897751E+02 130 ONLY ----- GSPOS SSI5 60 SSVD -0.10723320E+02 0.89979343E+01 0.88160839E+01 130 ONLY ----- GSPOS SSI4 66 SSVD -0.10723320E+02 0.89979343E+01 0.27344170E+01 131 ONLY ----- GSPOS SSI4 67 SSVD -0.10723320E+02 0.89979343E+01 -0.40297508E+01 131 ONLY ----- GSPOS SSI4 68 SSVD -0.10723320E+02 0.89979343E+01 -0.10793917E+02 131 ONLY ----- GSPOS SSI6 48 SSVD -0.97890577E+01 0.82139950E+01 -0.17354050E+02 132 ONLY ----- GSPOS SSI6 49 SSVD -0.12229271E+02 0.44510913E+01 0.29117945E+02 133 ONLY ----- GSPOS SSI4 69 SSVD -0.13529976E+02 0.49245095E+01 0.22625916E+02 134 ONLY ----- GSPOS SSI4 70 SSVD -0.13529976E+02 0.49245095E+01 0.15861750E+02 134 ONLY ----- GSPOS SSI4 71 SSVD -0.13529976E+02 0.49245095E+01 0.90975819E+01 134 ONLY ----- GSPOS SSI4 72 SSVD -0.13529976E+02 0.49245095E+01 0.23334141E+01 135 ONLY ----- GSPOS SSI4 73 SSVD -0.13529976E+02 0.49245095E+01 -0.44307537E+01 135 ONLY ----- GSPOS SSI4 74 SSVD -0.13529976E+02 0.49245095E+01 -0.11194916E+02 135 ONLY ----- GSPOS SSI6 50 SSVD -0.12383934E+02 0.45073843E+01 -0.17755049E+02 136 ONLY ----- GSPOS SSI6 51 SSVD -0.12614119E+02 -0.11027613E-05 0.28153944E+02 137 ONLY ----- GSPOS SSI4 75 SSVD -0.13998300E+02 -0.12237703E-05 0.21661917E+02 138 ONLY ----- GSPOS SSI4 76 SSVD -0.13998300E+02 -0.12237703E-05 0.14897751E+02 138 ONLY ----- GSPOS SSI5 61 SSVD -0.13998300E+02 -0.12237703E-05 0.88160839E+01 138 ONLY ----- GSPOS SSI4 77 SSVD -0.13998300E+02 -0.12237703E-05 0.27344170E+01 139 ONLY ----- GSPOS SSI4 78 SSVD -0.13998300E+02 -0.12237703E-05 -0.40297508E+01 139 ONLY ----- GSPOS SSI4 79 SSVD -0.13998300E+02 -0.12237703E-05 -0.10793917E+02 139 ONLY ----- GSPOS SSI6 52 SSVD -0.12778708E+02 -0.11171501E-05 -0.17354050E+02 140 ONLY ----- GSPOS SSI6 53 SSVD -0.12229271E+02 -0.44510908E+01 0.29117945E+02 141 ONLY ----- GSPOS SSI4 80 SSVD -0.13529976E+02 -0.49245086E+01 0.22625916E+02 142 ONLY ----- GSPOS SSI4 81 SSVD -0.13529976E+02 -0.49245086E+01 0.15861750E+02 142 ONLY ----- GSPOS SSI4 82 SSVD -0.13529976E+02 -0.49245086E+01 0.90975819E+01 142 ONLY ----- GSPOS SSI4 83 SSVD -0.13529976E+02 -0.49245086E+01 0.23334141E+01 143 ONLY ----- GSPOS SSI4 84 SSVD -0.13529976E+02 -0.49245086E+01 -0.44307537E+01 143 ONLY ----- GSPOS SSI4 85 SSVD -0.13529976E+02 -0.49245086E+01 -0.11194916E+02 143 ONLY ----- GSPOS SSI6 54 SSVD -0.12383934E+02 -0.45073833E+01 -0.17755049E+02 144 ONLY ----- GSPOS SSI6 55 SSVD -0.96629763E+01 -0.81081991E+01 0.28153944E+02 145 ONLY ----- GSPOS SSI4 86 SSVD -0.10723320E+02 -0.89979334E+01 0.21661917E+02 146 ONLY ----- GSPOS SSI4 87 SSVD -0.10723320E+02 -0.89979334E+01 0.14897751E+02 146 ONLY ----- GSPOS SSI5 62 SSVD -0.10723320E+02 -0.89979334E+01 0.88160839E+01 146 ONLY ----- GSPOS SSI4 88 SSVD -0.10723320E+02 -0.89979334E+01 0.27344170E+01 147 ONLY ----- GSPOS SSI4 89 SSVD -0.10723320E+02 -0.89979334E+01 -0.40297508E+01 147 ONLY ----- GSPOS SSI4 90 SSVD -0.10723320E+02 -0.89979334E+01 -0.10793917E+02 147 ONLY ----- GSPOS SSI6 56 SSVD -0.97890587E+01 -0.82139940E+01 -0.17354050E+02 148 ONLY ----- GSPOS SSI6 57 SSVD -0.65070581E+01 -0.11270557E+02 0.29117945E+02 149 ONLY ----- GSPOS SSI4 91 SSVD -0.71991482E+01 -0.12469294E+02 0.22625916E+02 150 ONLY ----- GSPOS SSI4 92 SSVD -0.71991482E+01 -0.12469294E+02 0.15861750E+02 150 ONLY ----- GSPOS SSI4 93 SSVD -0.71991482E+01 -0.12469294E+02 0.90975819E+01 150 ONLY ----- GSPOS SSI4 94 SSVD -0.71991482E+01 -0.12469294E+02 0.23334141E+01 151 ONLY ----- GSPOS SSI4 95 SSVD -0.71991482E+01 -0.12469294E+02 -0.44307537E+01 151 ONLY ----- GSPOS SSI4 96 SSVD -0.71991482E+01 -0.12469294E+02 -0.11194916E+02 151 ONLY ----- GSPOS SSI6 58 SSVD -0.65893526E+01 -0.11413095E+02 -0.17755049E+02 152 ONLY ----- GSPOS SSI6 59 SSVD -0.21904182E+01 -0.12422482E+02 0.28153944E+02 153 ONLY ----- GSPOS SSI4 97 SSVD -0.24307785E+01 -0.13785634E+02 0.21661917E+02 154 ONLY ----- GSPOS SSI4 98 SSVD -0.24307785E+01 -0.13785634E+02 0.14897751E+02 154 ONLY ----- GSPOS SSI5 63 SSVD -0.24307785E+01 -0.13785634E+02 0.88160839E+01 154 ONLY ----- GSPOS SSI4 99 SSVD -0.24307785E+01 -0.13785634E+02 0.27344170E+01 155 ONLY ----- GSPOS SSI4 100 SSVD -0.24307785E+01 -0.13785634E+02 -0.40297508E+01 155 ONLY ----- GSPOS SSI4 101 SSVD -0.24307785E+01 -0.13785634E+02 -0.10793917E+02 155 ONLY ----- GSPOS SSI6 60 SSVD -0.22189987E+01 -0.12584571E+02 -0.17354050E+02 156 ONLY ----- GSPOS SSI6 61 SSVD 0.22598774E+01 -0.12816404E+02 0.29117945E+02 157 ONLY ----- GSPOS SSI4 102 SSVD 0.25002379E+01 -0.14179556E+02 0.22625916E+02 158 ONLY ----- GSPOS SSI4 103 SSVD 0.25002379E+01 -0.14179556E+02 0.15861750E+02 158 ONLY ----- GSPOS SSI4 104 SSVD 0.25002379E+01 -0.14179556E+02 0.90975819E+01 158 ONLY ----- GSPOS SSI4 105 SSVD 0.25002379E+01 -0.14179556E+02 0.23334141E+01 159 ONLY ----- GSPOS SSI4 106 SSVD 0.25002379E+01 -0.14179556E+02 -0.44307537E+01 159 ONLY ----- GSPOS SSI4 107 SSVD 0.25002379E+01 -0.14179556E+02 -0.11194916E+02 159 ONLY ----- GSPOS SSI6 62 SSVD 0.22884581E+01 -0.12978493E+02 -0.17755049E+02 160 ONLY ----- GSPOS SSI6 63 SSVD 0.63070583E+01 -0.10924148E+02 0.28153944E+02 161 ONLY ----- GSPOS SSI4 108 SSVD 0.69991484E+01 -0.12122884E+02 0.21661917E+02 162 ONLY ----- GSPOS SSI4 109 SSVD 0.69991484E+01 -0.12122884E+02 0.14897751E+02 162 ONLY ----- GSPOS SSI5 64 SSVD 0.69991484E+01 -0.12122884E+02 0.88160839E+01 162 ONLY ----- GSPOS SSI4 110 SSVD 0.69991484E+01 -0.12122884E+02 0.27344170E+01 163 ONLY ----- GSPOS SSI4 111 SSVD 0.69991484E+01 -0.12122884E+02 -0.40297508E+01 163 ONLY ----- GSPOS SSI4 112 SSVD 0.69991484E+01 -0.12122884E+02 -0.10793917E+02 163 ONLY ----- GSPOS SSI6 64 SSVD 0.63893528E+01 -0.11066686E+02 -0.17354050E+02 164 ONLY ----- GSPOS SSI6 65 SSVD 0.99693909E+01 -0.83653154E+01 0.29117945E+02 165 ONLY ----- GSPOS SSI4 113 SSVD 0.11029736E+02 -0.92550507E+01 0.22625916E+02 166 ONLY ----- GSPOS SSI4 114 SSVD 0.11029736E+02 -0.92550507E+01 0.15861750E+02 166 ONLY ----- GSPOS SSI4 115 SSVD 0.11029736E+02 -0.92550507E+01 0.90975819E+01 166 ONLY ----- GSPOS SSI4 116 SSVD 0.11029736E+02 -0.92550507E+01 0.23334141E+01 167 ONLY ----- GSPOS SSI4 117 SSVD 0.11029736E+02 -0.92550507E+01 -0.44307537E+01 167 ONLY ----- GSPOS SSI4 118 SSVD 0.11029736E+02 -0.92550507E+01 -0.11194916E+02 167 ONLY ----- GSPOS SSI6 66 SSVD 0.10095473E+02 -0.84711113E+01 -0.17755049E+02 168 ONLY ----- GSPOS SSI6 67 SSVD 0.11853394E+02 -0.43142853E+01 0.28153944E+02 169 ONLY ----- GSPOS SSI4 119 SSVD 0.13154098E+02 -0.47877035E+01 0.21661917E+02 170 ONLY ----- GSPOS SSI4 120 SSVD 0.13154098E+02 -0.47877035E+01 0.14897751E+02 170 ONLY ----- GSPOS SSI5 65 SSVD 0.13154098E+02 -0.47877035E+01 0.88160839E+01 170 ONLY ----- GSPOS SSI4 121 SSVD 0.13154098E+02 -0.47877035E+01 0.27344170E+01 171 ONLY ----- GSPOS SSI4 122 SSVD 0.13154098E+02 -0.47877035E+01 -0.40297508E+01 171 ONLY ----- GSPOS SSI4 123 SSVD 0.13154098E+02 -0.47877035E+01 -0.10793917E+02 171 ONLY ----- GSPOS SSI6 68 SSVD 0.12008057E+02 -0.43705783E+01 -0.17354050E+02 172 ONLY ----- GSPOS SSA1 1 SSI1 0.00000000E+00 0.17000000E-02 0.00000000E+00 0 ONLY ----- GSPOS SSK1 1 SSI1 0.00000000E+00 -0.15000000E-01 0.00000000E+00 0 ONLY ----- GSPOS SSA2 1 SSI2 0.00000000E+00 0.17000000E-02 0.00000000E+00 0 ONLY ----- GSPOS SSK2 1 SSI2 0.00000000E+00 -0.15000000E-01 0.00000000E+00 0 ONLY ----- GSPOS SSA3 1 SSI3 0.00000000E+00 0.17000000E-02 0.00000000E+00 0 ONLY ----- GSPOS SSK3 1 SSI3 0.00000000E+00 -0.15000000E-01 0.00000000E+00 0 ONLY ----- GSPOS SSA6 1 SSI6 0.00000000E+00 0.17000000E-02 0.00000000E+00 0 ONLY ----- GSPOS SSK6 1 SSI6 0.00000000E+00 -0.15000000E-01 0.00000000E+00 0 ONLY ----- GSPOS SSA4 1 SSI4 0.00000000E+00 0.17000000E-02 0.00000000E+00 0 ONLY ----- GSPOS SSK4 1 SSI4 0.00000000E+00 -0.15000000E-01 0.00000000E+00 0 ONLY ----- GSPOS SSA5 1 SSI5 0.00000000E+00 0.17000000E-02 0.00000000E+00 0 ONLY ----- GSPOS SSK5 1 SSI5 0.00000000E+00 -0.15000000E-01 0.00000000E+00 0 ONLY ----- GSDET SSVD SSA1 3 SSVD SSI1 SSA1 2 12 2 2 5000 100 ----- GSDETH SSVD SSA1 11 x1 y1 z1 dedx x0 y0 z0 time igtr wadr beta 0 0 0 16 0 0 0 0 0 0 0 0.10000000E+03 0.10000000E+03 0.10000000E+03 0.00000000E+00 0.10000000E+03 0.10000000E+03 0.10000000E+03 0.50000000E+04 0.00000000E+00 0.10000000E+01 0.00000000E+00 0.10000000E+05 0.10000000E+05 0.10000000E+05 0.10000000E+02 0.10000000E+05 0.10000000E+05 0.10000000E+05 0.10000000E+05 0.10000000E+01 0.10000000E+01 0.20000000E+10 ----- GSDET SSVD SSA2 3 SSVD SSI2 SSA2 2 12 2 2 5000 100 ----- GSDETH SSVD SSA2 11 x1 y1 z1 dedx x0 y0 z0 time igtr wadr beta 0 0 0 16 0 0 0 0 0 0 0 0.10000000E+03 0.10000000E+03 0.10000000E+03 0.00000000E+00 0.10000000E+03 0.10000000E+03 0.10000000E+03 0.50000000E+04 0.00000000E+00 0.10000000E+01 0.00000000E+00 0.10000000E+05 0.10000000E+05 0.10000000E+05 0.10000000E+02 0.10000000E+05 0.10000000E+05 0.10000000E+05 0.10000000E+05 0.10000000E+01 0.10000000E+01 0.20000000E+10 ----- GSDET SSVD SSA3 3 SSVD SSI3 SSA3 2 12 2 2 5000 100 ----- GSDETH SSVD SSA3 11 x1 y1 z1 dedx x0 y0 z0 time igtr wadr beta 0 0 0 16 0 0 0 0 0 0 0 0.10000000E+03 0.10000000E+03 0.10000000E+03 0.00000000E+00 0.10000000E+03 0.10000000E+03 0.10000000E+03 0.50000000E+04 0.00000000E+00 0.10000000E+01 0.00000000E+00 0.10000000E+05 0.10000000E+05 0.10000000E+05 0.10000000E+02 0.10000000E+05 0.10000000E+05 0.10000000E+05 0.10000000E+05 0.10000000E+01 0.10000000E+01 0.20000000E+10 ----- GSDET SSVD SSA6 3 SSVD SSI6 SSA6 2 12 2 2 5000 100 ----- GSDETH SSVD SSA6 11 x1 y1 z1 dedx x0 y0 z0 time igtr wadr beta 0 0 0 16 0 0 0 0 0 0 0 0.10000000E+03 0.10000000E+03 0.10000000E+03 0.00000000E+00 0.10000000E+03 0.10000000E+03 0.10000000E+03 0.50000000E+04 0.00000000E+00 0.10000000E+01 0.00000000E+00 0.10000000E+05 0.10000000E+05 0.10000000E+05 0.10000000E+02 0.10000000E+05 0.10000000E+05 0.10000000E+05 0.10000000E+05 0.10000000E+01 0.10000000E+01 0.20000000E+10 ----- GSDET SSVD SSA4 3 SSVD SSI4 SSA4 2 12 2 2 5000 100 ----- GSDETH SSVD SSA4 11 x1 y1 z1 dedx x0 y0 z0 time igtr wadr beta 0 0 0 16 0 0 0 0 0 0 0 0.10000000E+03 0.10000000E+03 0.10000000E+03 0.00000000E+00 0.10000000E+03 0.10000000E+03 0.10000000E+03 0.50000000E+04 0.00000000E+00 0.10000000E+01 0.00000000E+00 0.10000000E+05 0.10000000E+05 0.10000000E+05 0.10000000E+02 0.10000000E+05 0.10000000E+05 0.10000000E+05 0.10000000E+05 0.10000000E+01 0.10000000E+01 0.20000000E+10 ----- GSDET SSVD SSA5 3 SSVD SSI5 SSA5 2 12 2 2 5000 100 ----- GSDETH SSVD SSA5 11 x1 y1 z1 dedx x0 y0 z0 time igtr wadr beta 0 0 0 16 0 0 0 0 0 0 0 0.10000000E+03 0.10000000E+03 0.10000000E+03 0.00000000E+00 0.10000000E+03 0.10000000E+03 0.10000000E+03 0.50000000E+04 0.00000000E+00 0.10000000E+01 0.00000000E+00 0.10000000E+05 0.10000000E+05 0.10000000E+05 0.10000000E+02 0.10000000E+05 0.10000000E+05 0.10000000E+05 0.10000000E+05 0.10000000E+01 0.10000000E+01 0.20000000E+10 ----- GGCLOS diff --git a/source/g3tog4/test/testmodel.dat b/source/g3tog4/test/testmodel.dat deleted file mode 100644 index 7786c221ea..0000000000 --- a/source/g3tog4/test/testmodel.dat +++ /dev/null @@ -1,33 +0,0 @@ ----- GSMATE 1 "HYDROGEN " 0.10100000E+01 0.10000000E+01 0.70799999E-01 0.86500000E+03 0 ----- GSMATE 2 "DEUTERIUM " 0.20100000E+01 0.10000000E+01 0.16200000E+00 0.75700000E+03 0 ----- GSMATE 3 "HELIUM " 0.40000000E+01 0.20000000E+01 0.12500000E+00 0.75500000E+03 0 ----- GSMATE 4 "LITHIUM " 0.69400001E+01 0.30000000E+01 0.53399998E+00 0.15500000E+03 0 ----- GSMATE 5 "BERILLIUM " 0.90100002E+01 0.40000000E+01 0.18480000E+01 0.35299999E+02 0 ----- GSMATE 6 "CARBON " 0.12010000E+02 0.60000000E+01 0.22650001E+01 0.18799999E+02 0 ----- GSMATE 7 "NITROGEN " 0.14010000E+02 0.70000000E+01 0.80800003E+00 0.44500000E+02 0 ----- GSMATE 8 "NEON " 0.20180000E+02 0.10000000E+02 0.12070000E+01 0.24000000E+02 0 ----- GSMATE 9 "ALUMINIUM " 0.26980000E+02 0.13000000E+02 0.27000000E+01 0.88999996E+01 0 ----- GSMATE 10 "IRON " 0.55849998E+02 0.26000000E+02 0.78699999E+01 0.17600000E+01 0 ----- GSMATE 11 "COPPER " 0.63540001E+02 0.29000000E+02 0.89600000E+01 0.14299999E+01 0 ----- GSMATE 12 "TUNGSTEN " 0.18385001E+03 0.74000000E+02 0.19299999E+02 0.34999999E+00 0 ----- GSMATE 13 "LEAD " 0.20719000E+03 0.82000000E+02 0.11350000E+02 0.56000000E+00 0 ----- GSMATE 14 "URANIUM " 0.23803000E+03 0.92000000E+02 0.18950001E+02 0.31999999E+00 0 ----- GSMATE 15 "AIR " 0.14610000E+02 0.73000002E+01 0.12050000E-02 0.30423240E+05 0 ----- GSMATE 16 "VACUUM " 0.10000000E-15 0.10000000E-15 0.10000000E-15 0.10000000E+17 0 ----- GSTMED 1 "Ether " 16 0 0 0.10000000E+04 0.99999998E-02 0.10000000E+11 0.00000000E+00 0.10000000E-02 0.00000000E+00 0 ----- GSVOLU HALL BOX 1 3 0.40000000E+03 0.40000000E+03 0.40000000E+03 ----- GSVOLU TUB1 TUBS 1 5 0.00000000E+00 0.20000000E+02 0.10000000E+03 0.00000000E+00 0.36000000E+03 ----- GSVOLU TUB2 TUBS 1 5 0.20000000E+02 0.10000000E+03 0.10000000E+03 0.00000000E+00 0.36000000E+03 ----- GSVOLU BOX1 BOX 1 0 ----- GSVOLU BOX2 BOX 1 3 -0.10000000E+01 -0.10000000E+01 0.10000000E+01 ----- GSPOS TUB1 1 HALL 0.00000000E+00 0.00000000E+00 0.10000000E+03 0 ONLY ----- GSPOS TUB2 1 HALL 0.00000000E+00 0.00000000E+00 0.10000000E+03 0 ONLY ----- GSPOSP BOX1 1 HALL 0.00000000E+00 0.00000000E+00 -0.40000000E+02 0 ONLY 3 0.50000000E+02 0.25000000E+02 0.50000000E+01 ----- GSPOSP BOX1 2 HALL 0.00000000E+00 0.00000000E+00 -0.80000000E+02 0 ONLY 3 0.10000000E+03 0.50000000E+02 0.50000000E+01 ----- GSPOSP BOX1 3 HALL 0.00000000E+00 0.00000000E+00 -0.12000000E+03 0 ONLY 3 0.15000000E+03 0.75000000E+02 0.50000000E+01 ----- GSPOSP BOX1 4 HALL 0.00000000E+00 0.00000000E+00 -0.16000000E+03 0 ONLY 3 0.20000000E+03 0.10000000E+03 0.50000000E+01 ----- GSDVN2 TBD1 TUB1 60 2 0.00000000E+00 1 ----- GSDVN2 TBD2 TUB2 5 1 0.20000000E+02 1 ----- GSPOS BOX2 1 BOX1 0.00000000E+00 0.00000000E+00 0.10000000E+01 0 ONLY ----- GSDVN2 BXD1 BOX2 4 1 0.00000000E+00 1 ----- GGCLOS diff --git a/source/geometry/GNUmakefile b/source/geometry/GNUmakefile index 1d6949b6fb..b1f1798e3f 100644 --- a/source/geometry/GNUmakefile +++ b/source/geometry/GNUmakefile @@ -1,12 +1,14 @@ -# $Id: GNUmakefile,v 1.1 1999/01/07 16:06:59 gunter Exp $ +# $Id: GNUmakefile,v 1.2 2000/04/07 13:07:00 gcosmo Exp $ # -------------------------------------------------------------- # GNUmakefile for geometry. Gabriele Cosmo, 16/11/96. # -------------------------------------------------------------- name := G4geometry -SUBDIRS = management volumes solids/CSG solids/Boolean solids/BREPS solids/STEP solids/STEPinterface magneticfield -SUBLIBS = G4geometrymng G4volumes G4csg G4geomBoolean G4brep G4step G4stepinterface G4magneticfield +SUBDIRS = management volumes magneticfield +SUBDIRS += solids/CSG solids/specific solids/Boolean solids/BREPS solids/STEP solids/STEPinterface +SUBLIBS = G4geometrymng G4volumes G4magneticfield +SUBLIBS += G4csg G4specsolids G4geomBoolean G4brep G4step G4stepinterface ifndef G4INSTALL G4INSTALL = ../.. diff --git a/source/geometry/History b/source/geometry/History index e30c69015c..8559de609f 100644 --- a/source/geometry/History +++ b/source/geometry/History @@ -1,4 +1,4 @@ -$Id: History,v 1.9 2000/02/29 15:16:40 gcosmo Exp $ +$Id: History,v 1.14 2000/05/12 15:12:36 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,13 +17,83 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- -Feb 29, 2000 Gabriele Cosmo geometry-V01-00-00a +May 12, 2000 Gabriele Cosmo geometry-V01-01-03 +----------------------------- +- magneticfield (field-V01-01-03): + o fixes to G4MagErrorStepper (check on chord endpoint), + G4RKG3_Stepper (deleted error message from StepNoErr), + G4MagIntegratorDriver (modified debug information). + o minor fix to dummy implementation of assignment operator + in G4MagneticField.hh. + o modified method for finding new trial step in G4ChordFinder. +- volumes (geomvol-V01-01-00): + o introduced kCarTolerance for check over taken step length and + TruePathLength in G4PropagatorInField::ComputeStep(). +- solids/CSG (geom-solids-csg-V01-01-02): + o fixes in DistanceToIn(p,v) for G4Box and G4Trd to return 0 distance + in case computed value is less than 0.5*kCarTolerance. +Apr 27, 2000 Gabriele Cosmo geometry-V01-01-02 +----------------------------- +- management, solids/Boolean, magneticfield, volumes: + o reorganised comments for the Software Reference Manual +- solids/specific: + o minor fixes and removed dependency over solids/CSG module. +- solids/test + o updated SBT test suite. + +Apr 11, 2000 John Allison geometry-V01-01-01 +--------------------------- +- management: + o made virtual G4VisExtent G4VSolid::GetExtent() non-pure and + implemented a default in terms of CalculateExtent. +- solids: + o removed implementations of GetExtent in most sub-classes of G4VSolid. + o all implementations of DescribeYourselfTo (G4VGraphicsScene& scene) const + now correctly written: scene.AddThis(*this). +- solids/Boolean: + o CreatePolyhedron implemented for BooleanSolids. + o G4DisplacedSolid: reversed implementation of GetFrameRotation and + GetObjectRotation, removing inappropriate invertion. + o G4DisplacedSolid::GetConstituentMovedSolid() made const. + +Apr 05, 2000 Gabriele Cosmo geometry-V01-01-00 +---------------------------- +- This tag includes the following sub-category tags since geometry-V01-00-00a + (all of them collected by geomsolids-V01-01-00): + o geom-solids-csg-V01-01-01 + + fixes to G4PolyhedraSide.cc, G4Tubs.cc (see related History file) + + added diagnostics to G4Cons, G4Sphere and G4Torus in function + DistanceToOut() + + general directory restructuring: moved non 'CSG' shapes to new directory + 'specific' + o breps-V01-00-02 + + implemented decoupling from NIST STEP Reader + + several fixes for porting and memory leaks (see related History file) + o STEP-V01-00-01 + + upgrade to NIST SCL 3.2 + + porting and ISO-ANSI C++ fixes + o stepinterface-V01-00-01 + + upgrade to support the new NIST STEP Reader + + improved overall diagnostics + + several fixes for memory leaks and check of NULL pointers (see History) + o geom-solids-specific-V01-01-00 + + new directory containing the implementation of specific solids, + several classes moved from solids/CSG + + new specific solid G4EllipticalTube, implementing a tube with + elliptical cross section (geant3 solid 'ELTU') +- Generic tests "SBT" and "Fred" have been moved from solids/CSG/test to + solids/test (new directory). +- Organised class description comments for the Software Reference Manual in + CSG and specific headers. Added CVS headers to files in specific. + +Feb 29, 2000 Gabriele Cosmo geometry-V01-00-00a +---------------------------- - Minor fixes to unit tests (CSG) to make them up-to-date with recent development versions. -Jan 19, 2000 Gabriele Cosmo geometry-V01-00-00 - +Jan 19, 2000 Gabriele Cosmo geometry-V01-00-00 +---------------------------- - Sycronized file versions with HEAD after ISO-C++ migration. Collecting subtags: field-V01-00-00, geomsolids-V01-00-00, geommng-V01-00-00 and geomvol-V01-00-00. diff --git a/source/geometry/benchmarks/BuildBoxWorld.hh b/source/geometry/benchmarks/BuildBoxWorld.hh index dfd43d361b..43b13be5c4 100644 --- a/source/geometry/benchmarks/BuildBoxWorld.hh +++ b/source/geometry/benchmarks/BuildBoxWorld.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: BuildBoxWorld.hh,v 1.2 1999/12/15 14:49:45 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef BUILDBOXWORLD_HH #define BUILDBOXWORLD_HH diff --git a/source/geometry/benchmarks/BuildCalorimeter.hh b/source/geometry/benchmarks/BuildCalorimeter.hh index d366d8cb5e..e2d1342ced 100644 --- a/source/geometry/benchmarks/BuildCalorimeter.hh +++ b/source/geometry/benchmarks/BuildCalorimeter.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: BuildCalorimeter.hh,v 1.2 1999/12/15 14:49:45 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef BUILDCALORIMETER_HH #define BUILDCALORIMETER_HH diff --git a/source/geometry/benchmarks/Shoot.hh b/source/geometry/benchmarks/Shoot.hh index 48ee96df90..bdc7893cda 100644 --- a/source/geometry/benchmarks/Shoot.hh +++ b/source/geometry/benchmarks/Shoot.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Shoot.hh,v 1.3 2000/02/29 09:45:59 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef SHOOT_HH #define SHOOT_HH diff --git a/source/geometry/benchmarks/calorimeter.cc b/source/geometry/benchmarks/calorimeter.cc index a396c96725..b615cccc7f 100644 --- a/source/geometry/benchmarks/calorimeter.cc +++ b/source/geometry/benchmarks/calorimeter.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: calorimeter.cc,v 1.2 1999/12/15 14:49:45 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // calorimeter // diff --git a/source/geometry/benchmarks/f77cppcomparison/G4Box.cc b/source/geometry/benchmarks/f77cppcomparison/G4Box.cc index 505260dbed..c8e4d0185e 100644 --- a/source/geometry/benchmarks/f77cppcomparison/G4Box.cc +++ b/source/geometry/benchmarks/f77cppcomparison/G4Box.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Box.cc,v 1.2 1999/12/15 14:49:45 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Implementation for G4Box class diff --git a/source/geometry/benchmarks/f77cppcomparison/G4Box.hh b/source/geometry/benchmarks/f77cppcomparison/G4Box.hh index 9523138508..0ca4840266 100644 --- a/source/geometry/benchmarks/f77cppcomparison/G4Box.hh +++ b/source/geometry/benchmarks/f77cppcomparison/G4Box.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Box.hh,v 1.2 1999/12/15 14:49:45 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4Box // diff --git a/source/geometry/benchmarks/f77cppcomparison/G4Box_fastfabs.cc b/source/geometry/benchmarks/f77cppcomparison/G4Box_fastfabs.cc index 0b58a3d0b6..3e0f1c9704 100644 --- a/source/geometry/benchmarks/f77cppcomparison/G4Box_fastfabs.cc +++ b/source/geometry/benchmarks/f77cppcomparison/G4Box_fastfabs.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Box_fastfabs.cc,v 1.2 1999/12/15 14:49:45 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Implementation for G4Box class diff --git a/source/geometry/benchmarks/f77cppcomparison/G4RotationMatrix.hh b/source/geometry/benchmarks/f77cppcomparison/G4RotationMatrix.hh index c7da3d849c..81a447f423 100644 --- a/source/geometry/benchmarks/f77cppcomparison/G4RotationMatrix.hh +++ b/source/geometry/benchmarks/f77cppcomparison/G4RotationMatrix.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4RotationMatrix.hh,v 1.2 1999/12/15 14:49:45 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Rotation Matrix class, converted from CLHEP: diff --git a/source/geometry/benchmarks/f77cppcomparison/G4RotationMatrix.icc b/source/geometry/benchmarks/f77cppcomparison/G4RotationMatrix.icc index 64896db4b0..71d5dbf6bf 100644 --- a/source/geometry/benchmarks/f77cppcomparison/G4RotationMatrix.icc +++ b/source/geometry/benchmarks/f77cppcomparison/G4RotationMatrix.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4RotationMatrix.icc,v 1.2 1999/12/15 14:49:45 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // Inline functions for class G4RotationMatrix // Converted from CLHEP: diff --git a/source/geometry/benchmarks/f77cppcomparison/G4ThreeVector.hh b/source/geometry/benchmarks/f77cppcomparison/G4ThreeVector.hh index 4dc54e4e44..fff431173f 100644 --- a/source/geometry/benchmarks/f77cppcomparison/G4ThreeVector.hh +++ b/source/geometry/benchmarks/f77cppcomparison/G4ThreeVector.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ThreeVector.hh,v 1.3 1999/12/15 17:17:14 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ThreeVector class, converted from CLHEP: diff --git a/source/geometry/benchmarks/f77cppcomparison/G4ThreeVector.icc b/source/geometry/benchmarks/f77cppcomparison/G4ThreeVector.icc index 92e6fbbdd0..98ec7981e0 100644 --- a/source/geometry/benchmarks/f77cppcomparison/G4ThreeVector.icc +++ b/source/geometry/benchmarks/f77cppcomparison/G4ThreeVector.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ThreeVector.icc,v 1.2 1999/12/15 14:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Inline functions for class G4ThreeVector diff --git a/source/geometry/benchmarks/f77cppcomparison/boxtoincpp.cc b/source/geometry/benchmarks/f77cppcomparison/boxtoincpp.cc index 49a8467ccf..dbd43bdd20 100644 --- a/source/geometry/benchmarks/f77cppcomparison/boxtoincpp.cc +++ b/source/geometry/benchmarks/f77cppcomparison/boxtoincpp.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: boxtoincpp.cc,v 1.2 1999/12/15 14:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4ios.hh" diff --git a/source/geometry/benchmarks/f77cppcomparison/geomdefs.hh b/source/geometry/benchmarks/f77cppcomparison/geomdefs.hh index 733e2e6a51..2c22559514 100644 --- a/source/geometry/benchmarks/f77cppcomparison/geomdefs.hh +++ b/source/geometry/benchmarks/f77cppcomparison/geomdefs.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: geomdefs.hh,v 1.2 1999/12/15 14:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // Constants, typedefs, enums for Geometry Section diff --git a/source/geometry/benchmarks/f77cppcomparison/globals.hh b/source/geometry/benchmarks/f77cppcomparison/globals.hh index bc7001950f..d9cca0454e 100644 --- a/source/geometry/benchmarks/f77cppcomparison/globals.hh +++ b/source/geometry/benchmarks/f77cppcomparison/globals.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: globals.hh,v 1.3 1999/12/15 14:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // Global Constants and typedefs diff --git a/source/geometry/benchmarks/replicaCal.cc b/source/geometry/benchmarks/replicaCal.cc index 22c5844a0b..3502ae8983 100644 --- a/source/geometry/benchmarks/replicaCal.cc +++ b/source/geometry/benchmarks/replicaCal.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: replicaCal.cc,v 1.2 1999/12/15 14:49:45 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // diff --git a/source/geometry/benchmarks/shooter.cc b/source/geometry/benchmarks/shooter.cc index 54678320e5..c50d7c8256 100644 --- a/source/geometry/benchmarks/shooter.cc +++ b/source/geometry/benchmarks/shooter.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: shooter.cc,v 1.2 1999/12/15 14:49:45 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // shooter - perform test shots through simple box world. // diff --git a/source/geometry/magneticfield/History b/source/geometry/magneticfield/History index a96def55a7..99d51343df 100644 --- a/source/geometry/magneticfield/History +++ b/source/geometry/magneticfield/History @@ -1,4 +1,4 @@ -$Id: History,v 1.16 2000/01/20 10:51:11 gcosmo Exp $ +$Id: History,v 1.21 2000/05/12 13:57:53 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,55 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +May 11th, 2000 J. Apostolakis - field-V01-01-02 + +- G4ChordFinder[.hh.cc] + o Modified method for finding new trial step. + New method assumes a quadratic relationship between step-length and d_chord: + d_chord proportional to step-lenght ^ 2 + o Added two small refinement in order to avoid unneccesary extra step due to + small numerical inaccuracies in estimation: + FindNextChord + to first step use (1-0.001) * last-step-estimate + New Step: + to subsequent step use trial_step = 0.98 * estimate + +May 10th, 2000 G. Cosmo + +- G4MagneticField.hh: minor fix to dummy implementation of assignment + operator. + +May 9th, 2000 J. Apostolakis - field-V01-01-01 + +- G4MagErrorStepper: + Modified DistChord to check whether the chord endpoint are the same point. + +- G4RKG3_Stepper: + Deleted error message from StepNoErr, as it is used in Stepper. + +- G4MagIntegratorDriver: + Changed the condition for the debug output (~cosmetic) + + +April 27th, 2000 G. Cosmo + +- Reorganised comments for the Software Reference Manual. +- Moved inlined definition to .icc files, where needed. + Created: G4ChordFinder.icc and G4FieldManager.icc. + +April 13th, 2000 J. Apostolakis - field-V01-01-00 + +- Modified signature to function DumbStepper() in classes: + G4HelixExplicitEuler, G4HelixHeum, G4HelixImplicitEuler, + G4HelixSimpleRunge and G4MagHelicalStepper. +- Modified signature and implementation of function MagFieldEvaluate() + in G4MagHelicalStepper, to use Field (as ThreeVector) in place of dydx. +- Made Richardson extrapolation optional (it is unclear if + it offers benefit) in G4MagHelicalStepper. +- Updated unit test testPropagateMagField and reference output. +- G4LineSection: fixes to prevent divisions by 0. and sqrt(<0) + (V.Grichine). + January 19th, 2000 G. Cosmo - field-V01-00-00 Syncronized versioning of files with HEAD after ISO-C++ migration diff --git a/source/geometry/magneticfield/include/G4CashKarpRKF45.hh b/source/geometry/magneticfield/include/G4CashKarpRKF45.hh index b8fc21ab4e..e50c48c47d 100644 --- a/source/geometry/magneticfield/include/G4CashKarpRKF45.hh +++ b/source/geometry/magneticfield/include/G4CashKarpRKF45.hh @@ -5,46 +5,61 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4CashKarpRKF45.hh,v 1.2 1999/12/15 14:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4CashKarpRKF45.hh,v 1.3 2000/04/27 09:14:04 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// J.Apostolakis, V.Grichine 30.1.97 +// class G4CashKarpRKF45 +// +// Class description: +// +// The Cash-Karp Runge-Kutta-Fehlberg 4/5 method is an embedded fourth +// order method (giving fifth-order accuracy) for the solution of an ODE. +// Two different fourth order estimates are calculated; their difference +// gives an error estimate. [ref. Numerical Recipes in C, 2nd Edition] +// It is used to integrate the equations of the motion of a particle +// in a magnetic field. + +// History: +// - Created. J.Apostolakis, V.Grichine - 30.1.97 #ifndef G4CashKARP_RKF45 #define G4CashKARP_RKF45 + #include "G4MagIntegratorStepper.hh" class G4CashKarpRKF45: public G4MagIntegratorStepper { - public: + public: // with description + G4CashKarpRKF45(G4Mag_EqRhs *EqRhs, G4int numberOfVariables = 6) ; ~G4CashKarpRKF45() ; - void Stepper( const G4double y[], - const G4double dydx[], - const G4double h, - G4double yout[], - G4double yerr[] ) ; + void Stepper( const G4double y[], + const G4double dydx[], + const G4double h, + G4double yout[], + G4double yerr[] ) ; - void StepWithEst(const G4double yIn[], - const G4double dydx[], - const G4double Step, - G4double yOut[], - G4double& alpha2, - G4double& beta2, - const G4double B1[], - G4double B2[] ) ; + void StepWithEst( const G4double yIn[], + const G4double dydx[], + const G4double Step, + G4double yOut[], + G4double& alpha2, + G4double& beta2, + const G4double B1[], + G4double B2[] ) ; + + public: // without description G4double DistChord() const = 0 ; // This is not IMPLEMENTED yet. // It must be done before it can work. - G4int IntegratorOrder() { return 4 ; }; -private: - G4int fNumberOfVariables ; + private: + G4int fNumberOfVariables ; G4double *ak2, *ak3, *ak4, *ak5, *ak6, *ak7, *yTemp, *yIn; // scratch space }; diff --git a/source/geometry/magneticfield/include/G4ChordFinder.hh b/source/geometry/magneticfield/include/G4ChordFinder.hh index e13d91e46d..14034c4db3 100644 --- a/source/geometry/magneticfield/include/G4ChordFinder.hh +++ b/source/geometry/magneticfield/include/G4ChordFinder.hh @@ -5,28 +5,25 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ChordFinder.hh,v 1.2 1999/12/15 14:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ChordFinder.hh,v 1.4 2000/05/11 14:47:00 japost Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// ------------------------------------------------------------------------ -// GEANT 4 include file implementation +// class G4ChordFinder // -// For information related to this code contact: -// CERN, IT Division (formely CN), ASD group -// ------------------------------------------------------------------------ +// Class description: // -// A class that provides RK integration of motion ODE (as does g4magtr) -// and also has a method that returns an Approximate point on the curve -// near to a (chord) point. -// -// 25.02.97 John Apostolakis, design and implementation -// 05.03.97 V. Grichine , makeup to G4 'standard' +// A class that provides RK integration of motion ODE (as does g4magtr) +// and also has a method that returns an Approximate point on the curve +// near to a (chord) point. + +// History: +// - 25.02.97 John Apostolakis, design and implementation +// - 05.03.97 V. Grichine , makeup to G4 'standard' #ifndef G4CHORDFINDER_HH #define G4CHORDFINDER_HH - // #include "globals.hh" #include "G4MagIntegratorDriver.hh" #include "G4FieldTrack.hh" #include "G4MagneticField.hh" @@ -35,25 +32,24 @@ class G4ChordFinder { - public: // Constructors + public: // with description G4ChordFinder( G4MagInt_Driver* pIntegrationDriver ); - // A constructor that creates defaults for all "children" classes - // G4ChordFinder( G4MagneticField* itsMagField, G4double stepMinimum = 1.0e-2 * mm, G4MagIntegratorStepper* pItsStepper = 0 ); + // A constructor that creates defaults for all "children" classes. ~G4ChordFinder(); - // Uses ODE solver's driver to find the endpoint that satisfies - // the chord criterion: that d_chord < delta_chord - // -> Returns Length of Step taken G4double AdvanceChordLimited( G4FieldTrack& yCurrent, const G4double stepInitial, - const G4double epsStep ); + const G4double epsStep_Relative ); + // Uses ODE solver's driver to find the endpoint that satisfies + // the chord criterion: that d_chord < delta_chord + // -> Returns Length of Step taken. G4FieldTrack ApproxCurvePointV(const G4FieldTrack& curveAPointVelocity, const G4FieldTrack& curveBPointVelocity, @@ -63,28 +59,22 @@ class G4ChordFinder G4double GetDeltaChord(); void SetDeltaChord( G4double newval); - // Routine to inform integration driver of charge, speed - // void SetChargeMomentumMass( const G4double pCharge, // in e+ units const G4double pMomentum, const G4double pMass ); + // Function to inform integration driver of charge, speed. + + void SetIntegrationDriver(G4MagInt_Driver* IntegrationDriver); + G4MagInt_Driver* GetIntegrationDriver(); + // Access and set Driver. - // Access and set Driver - // - void SetIntegrationDriver( G4MagInt_Driver* IntegrationDriver) - { fIntgrDriver=IntegrationDriver;} - G4MagInt_Driver* GetIntegrationDriver() - { return fIntgrDriver;} - protected: // ......................................................... - G4bool AcceptableMissDist(G4double dChordStep) - { - return (dChordStep <= fDeltaChord) ; - } + G4bool AcceptableMissDist(G4double dChordStep); G4double NewStep( const G4double stepTrialOld, - const G4double dChordStep ) ; // Current dchord + const G4double dChordStep, // Current dchord estimate + G4double& stepEstimate_Unconstrained ) ; G4double FindNextChord( const G4FieldTrack yStart, const G4double stepMax, @@ -96,7 +86,9 @@ class G4ChordFinder // G4int nOK, nBAD; G4MagInt_Driver* fIntgrDriver; - G4double fDeltaChord; + G4double fDeltaChord; // Maximum miss distance + + G4double fLastStepEstimate_Unconstrained; // State information for efficiency static const G4double fDefaultDeltaChord; // SET in G4ChordFinder.cc = 3 mm @@ -106,30 +98,8 @@ class G4ChordFinder G4MagIntegratorStepper* fDriversStepper; }; - - // Inline function implementation: -inline -G4ChordFinder:: G4ChordFinder( G4MagInt_Driver* pIntegrationDriver ) -: fDeltaChord( fDefaultDeltaChord ) -{ - fIntgrDriver= pIntegrationDriver ; - fAllocatedStepper= false ; -} - -inline void -G4ChordFinder::SetChargeMomentumMass( const G4double pCharge, // in e+ units - const G4double pMomentum, - const G4double pMass ) -{ - fIntgrDriver-> SetChargeMomentumMass(pCharge, pMomentum, pMass); -} - -inline G4double G4ChordFinder::GetDeltaChord() -{ return fDeltaChord; } - -inline void G4ChordFinder::SetDeltaChord( G4double newval) -{ fDeltaChord=newval; } +#include "G4ChordFinder.icc" #endif // G4CHORDFINDER_HH diff --git a/source/geometry/magneticfield/include/G4ChordFinder.icc b/source/geometry/magneticfield/include/G4ChordFinder.icc new file mode 100644 index 0000000000..2758ec24ce --- /dev/null +++ b/source/geometry/magneticfield/include/G4ChordFinder.icc @@ -0,0 +1,59 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ChordFinder.icc,v 1.1 2000/04/27 09:14:04 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// G4ChordFinder inline implementations +// +// -------------------------------------------------------------------- + +inline +G4ChordFinder::G4ChordFinder(G4MagInt_Driver* pIntegrationDriver) + : fDeltaChord( fDefaultDeltaChord ) +{ + fIntgrDriver= pIntegrationDriver; + fAllocatedStepper= false; +} + +inline +void G4ChordFinder::SetIntegrationDriver(G4MagInt_Driver* IntegrationDriver) +{ + fIntgrDriver=IntegrationDriver; +} + +inline +G4MagInt_Driver* G4ChordFinder::GetIntegrationDriver() +{ + return fIntgrDriver; +} + +inline +G4bool G4ChordFinder::AcceptableMissDist(G4double dChordStep) +{ + return (dChordStep <= fDeltaChord) ; +} + +inline +void G4ChordFinder::SetChargeMomentumMass(const G4double pCharge, // in e+ units + const G4double pMomentum, + const G4double pMass) +{ + fIntgrDriver-> SetChargeMomentumMass(pCharge, pMomentum, pMass); +} + +inline +G4double G4ChordFinder::GetDeltaChord() +{ + return fDeltaChord; +} + +inline +void G4ChordFinder::SetDeltaChord(G4double newval) +{ + fDeltaChord=newval; +} diff --git a/source/geometry/magneticfield/include/G4ClassicalRK4.hh b/source/geometry/magneticfield/include/G4ClassicalRK4.hh index ffd3ca2586..2b2ec2cd82 100644 --- a/source/geometry/magneticfield/include/G4ClassicalRK4.hh +++ b/source/geometry/magneticfield/include/G4ClassicalRK4.hh @@ -5,50 +5,65 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ClassicalRK4.hh,v 1.2 1999/12/15 14:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ClassicalRK4.hh,v 1.3 2000/04/27 09:14:04 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// J.Apostolakis, V.Grichine 30.1.97 -// changed: W.Wander 12/09/97: Moved into MagErrorStepper +// class G4ClassicalRK4 +// +// Class description: +// +// Integrate the equations of the motion of a particle in a magnetic field +// using the classical 4th Runge-Kutta method. + +// History: +// - Created: J.Apostolakis, V.Grichine - 30.1.97 +// - Moved into G4MagErrorStepper: W.Wander - 12/09/97 #include "G4MagErrorStepper.hh" #include "G4ThreeVector.hh" class G4ClassicalRK4 : public G4MagErrorStepper { - public: + public: // with description G4ClassicalRK4(G4Mag_EqRhs *EqRhs, G4int numberOfVariables = 6) ; - ~G4ClassicalRK4() ; + ~G4ClassicalRK4() ; + + // A stepper that does not know about errors. + // It is used by the MagErrorStepper stepper. - void StepWithEst( const G4double yIn[], - const G4double dydx[], - const G4double h, - G4double yOut[], - G4double& alpha2, - G4double& beta2, - const G4double B1[], - G4double B2[] ) ; + void DumbStepper( const G4double yIn[], + const G4double dydx[], + const G4double h, + G4double yOut[]) ; + // Given values for the variables y[0,..,n-1] and their derivatives + // dydx[0,...,n-1] known at x, use the classical 4th Runge-Kutta + // method to advance the solution over an interval h and return the + // incremented variables as yout[0,...,n-1], which not be a distinct + // array from y. The user supplies the routine RightHandSide(x,y,dydx), + // which returns derivatives dydx at x. The source is routine rk4 from + // NRC p. 712-713 . - - G4int IntegratorOrder() { return 4; }; - + public: // without description - // A stepper that does not know about errors. - // It is used by the MagErrorStepper stepper. - - void DumbStepper( const G4double yIn[], - const G4double dydx[], - const G4double h, - G4double yOut[]) ; + void StepWithEst( const G4double yIn[], + const G4double dydx[], + const G4double h, + G4double yOut[], + G4double& alpha2, + G4double& beta2, + const G4double B1[], + G4double B2[] ); - // Could make above G4SixPoint to keep tangents too ...? + // Could make above G4SixPoint to keep tangents too ...? -private: + G4int IntegratorOrder() { return 4; }; - G4int fNumberOfVariables ; // is set default to 6 in constructor + private: - G4double *dydxm, *dydxt, *yt; // scratch space - not state + G4int fNumberOfVariables ; // is set default to 6 in constructor + + G4double *dydxm, *dydxt, *yt; // scratch space - not state }; diff --git a/source/geometry/magneticfield/include/G4ElectroMagneticField.hh b/source/geometry/magneticfield/include/G4ElectroMagneticField.hh index c78b0086cb..fc09a25f8e 100644 --- a/source/geometry/magneticfield/include/G4ElectroMagneticField.hh +++ b/source/geometry/magneticfield/include/G4ElectroMagneticField.hh @@ -5,17 +5,20 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ElectroMagneticField.hh,v 1.2 1999/12/15 14:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ElectroMagneticField.hh,v 1.3 2000/04/27 09:14:04 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// A full Electromagnetic field, containing both electric and magnetic fields. +// class G4ElectroMagneticField // -// It is an abstract class, and a derived type of this field must be -// created by the user to describe his/her field configuration. +// Class description: // -// Created: JA, November 12th, 1998 -// +// A full Electromagnetic field, containing both electric and magnetic fields. +// It is an abstract class, and a derived type of this field must be +// created by the user to describe his/her field configuration. + +// History: +// - Created: J.Apostolakis, November 12th, 1998 #ifndef G4ELECTROMAGNETIC_FIELD_DEF #define G4ELECTROMAGNETIC_FIELD_DEF @@ -24,28 +27,25 @@ class G4ElectroMagneticField : public G4MagneticField { - public: + public: // with description - G4ElectroMagneticField(); - virtual ~G4ElectroMagneticField(); + G4ElectroMagneticField() {;} + virtual ~G4ElectroMagneticField() {;} - // Copy constructor & assignment operator - G4ElectroMagneticField(const G4ElectroMagneticField &p); + G4ElectroMagneticField(const G4ElectroMagneticField &p) {;} G4ElectroMagneticField& operator = (const G4ElectroMagneticField &p); + // Copy constructor & assignment operators. virtual void GetFieldValue( const double Point[3], double *Bfield ) const = 0; }; -// Implementation - -inline G4ElectroMagneticField::G4ElectroMagneticField() {} -inline G4ElectroMagneticField::~G4ElectroMagneticField() {} -inline G4ElectroMagneticField::G4ElectroMagneticField(const G4ElectroMagneticField &p) {} - // Not needed: { *this = p; } +// Inline implementations inline G4ElectroMagneticField& G4ElectroMagneticField::operator = (const G4ElectroMagneticField &p) - { *this = p; return *this; } +{ + *this = p; return *this; +} #endif /* G4ELECTROMAGNETIC_FIELD_DEF */ diff --git a/source/geometry/magneticfield/include/G4EqMagElectricField.hh b/source/geometry/magneticfield/include/G4EqMagElectricField.hh index b3faa09d88..8fb2fbeee1 100644 --- a/source/geometry/magneticfield/include/G4EqMagElectricField.hh +++ b/source/geometry/magneticfield/include/G4EqMagElectricField.hh @@ -5,14 +5,20 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4EqMagElectricField.hh,v 1.2 1999/12/15 14:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4EqMagElectricField.hh,v 1.3 2000/04/27 09:14:04 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -// This is the right-hand side of equation of motion in a combined -// electric and magnetic field. -//// -// 10.11.98 V.Grichine // +// class G4EqMagElectricField +// +// Class description: +// +// This is the right-hand side of equation of motion in a combined +// electric and magnetic field. + +// History: +// - Created. V.Grichine, 10.11.98 + #ifndef G4EQMAGELECTRICFIELD_hh #define G4EQMAGELECTRICFIELD_hh @@ -21,26 +27,26 @@ class G4EqMagElectricField : public G4Mag_EqRhs { - public: - G4EqMagElectricField( G4ElectroMagneticField *emField ) : - G4Mag_EqRhs( emField ) {}; + public: // with description - ~G4EqMagElectricField() {} ; + G4EqMagElectricField(G4ElectroMagneticField *emField ) + : G4Mag_EqRhs( emField ) {;} - // Given the value of the electromagnetic field, this function - // calculates the value of the derivative dydx. + ~G4EqMagElectricField() {;} + + void SetChargeMomentumMass( const G4double particleCharge, // in e+ units + const G4double MomentumXc, + const G4double mass); - void SetChargeMomentumMass( const G4double particleCharge, // in e+ units - const G4double MomentumXc, - const G4double mass); - void EvaluateRhsGivenB( const G4double y[], const G4double Field[], G4double dydx[] ) const; + // Given the value of the electromagnetic field, this function + // calculates the value of the derivative dydx. -private: + private: - G4double fElectroMagCof ; + G4double fElectroMagCof; }; #endif diff --git a/source/geometry/magneticfield/include/G4EquationOfMotion.hh b/source/geometry/magneticfield/include/G4EquationOfMotion.hh index bc5fab4ffd..8dc653be23 100644 --- a/source/geometry/magneticfield/include/G4EquationOfMotion.hh +++ b/source/geometry/magneticfield/include/G4EquationOfMotion.hh @@ -5,73 +5,71 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4EquationOfMotion.hh,v 1.2 1999/12/15 14:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4EquationOfMotion.hh,v 1.3 2000/04/27 09:14:04 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -// Abstract Base Class for: // -// The right hand size of the equation of motion of a particle in a field. +// class G4EquationOfMotion // +// Class description: +// +// Abstract Base Class for the right hand size of the equation of +// motion of a particle in a field. + +// History: +// - Created. J.Apostolakis + #ifndef G4_EquationOfMotion_DEF #define G4_EquationOfMotion_DEF -#include "globals.hh" -#include "G4Field.hh" // class G4Field; // should be enough +#include "globals.hh" +#include "G4Field.hh" class G4EquationOfMotion { - public: + public: // with description + G4EquationOfMotion( G4Field *Field ); virtual ~G4EquationOfMotion(); + // Constructor and virtual destructor. No operations. - // Given the value of the field "B", this function - // calculates the value of the derivative dydx. - // -------------------------------------------------------- - // This is the _only_ function a subclass must define. - // The other two functions use Rhs_givenB. - // virtual void EvaluateRhsGivenB( const G4double y[], - const G4double B[3], + const G4double B[3], G4double dydx[] ) const = 0; + // Given the value of the field "B", this function + // calculates the value of the derivative dydx. + // -------------------------------------------------------- + // This is the _only_ function a subclass must define. + // The other two functions use Rhs_givenB. - // Set the charge, momentum and mass of the current particle - // --> used to set the equation's coefficients ... - virtual void SetChargeMomentumMass( + virtual void SetChargeMomentumMass( const G4double particleCharge, // in e+ units const G4double MomentumXc, const G4double MassXc2) = 0; - + // Set the charge, momentum and mass of the current particle + // --> used to set the equation's coefficients ... - // This calculates the value of the derivative dydx at y. - // It is the usual enquiry function. - // --------------------------- - // (It is not virtual, but calls the virtual function above.) - // void RightHandSide( const G4double y[], - G4double dydx[] ) const; + G4double dydx[] ) const; + // This calculates the value of the derivative dydx at y. + // It is the usual enquiry function. + // --------------------------- + // (It is not virtual, but calls the virtual function above.) - // Same as RHS above, but also returns the value of B. - // - // Should be made the new default ? after putting dydx & B in a class - // void EvaluateRhsReturnB( const G4double y[], G4double dydx[], G4double Field[] ) const; + // Same as RHS above, but also returns the value of B. + // Should be made the new default ? after putting dydx & B in a class. - // Obtain only the field - the stepper assumes it is pure Magnetic - // Not protected, because G4RKG3_Stepper uses it directly - void GetFieldValue( const G4double Point[3], - G4double Field[] ) const - { itsField-> GetFieldValue( Point, Field ); } + G4double Field[] ) const; + // Obtain only the field - the stepper assumes it is pure Magnetic. + // Not protected, because G4RKG3_Stepper uses it directly. G4Field* GetFieldObj(); void SetFieldObj(G4Field* pField); - //------------------------------------------------------------------------ - //public: - // virtual void doNothing(); // To help compiler with their virtual tables. - private: G4Field *itsField; diff --git a/source/geometry/magneticfield/include/G4EquationOfMotion.icc b/source/geometry/magneticfield/include/G4EquationOfMotion.icc index b50c99bc89..6ae538e7c9 100644 --- a/source/geometry/magneticfield/include/G4EquationOfMotion.icc +++ b/source/geometry/magneticfield/include/G4EquationOfMotion.icc @@ -5,24 +5,37 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4EquationOfMotion.icc,v 1.2 1999/12/15 14:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4EquationOfMotion.icc,v 1.3 2000/04/27 09:14:04 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Inline implementation // -inline G4Field* G4EquationOfMotion::GetFieldObj() -{ - return itsField; -} -inline void G4EquationOfMotion::SetFieldObj(G4Field* pField) -{ - itsField= pField; -} - -inline G4EquationOfMotion::G4EquationOfMotion(G4Field* pField) +inline +G4EquationOfMotion::G4EquationOfMotion(G4Field* pField) :itsField(pField) {} -inline G4EquationOfMotion::~G4EquationOfMotion() {} +inline +G4EquationOfMotion::~G4EquationOfMotion() +{} + +inline +G4Field* G4EquationOfMotion::GetFieldObj() +{ + return itsField; +} + +inline +void G4EquationOfMotion::SetFieldObj(G4Field* pField) +{ + itsField= pField; +} + +inline +void G4EquationOfMotion::GetFieldValue( const G4double Point[3], + G4double Field[] ) const +{ + itsField-> GetFieldValue( Point, Field ); +} diff --git a/source/geometry/magneticfield/include/G4ExplicitEuler.hh b/source/geometry/magneticfield/include/G4ExplicitEuler.hh index ca2cf59bff..0b15f71144 100644 --- a/source/geometry/magneticfield/include/G4ExplicitEuler.hh +++ b/source/geometry/magneticfield/include/G4ExplicitEuler.hh @@ -5,20 +5,31 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ExplicitEuler.hh,v 1.2 1999/12/15 14:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ExplicitEuler.hh,v 1.3 2000/04/27 09:14:04 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// W. Wander 12/09/97 +// class G4ExplicitEuler +// +// Class description: +// +// Explicit Euler: x_1 = x_0 + h * dx_0. +// The most simple approach for solving linear differential equations. +// Take the current derivative and add it to the current position. + +// History: +// - Created. W.Wander , 12/09/97 #ifndef G4EXPLICITEULER_HH #define G4EXPLICITEULER_HH + #include "G4MagErrorStepper.hh" -class G4ExplicitEuler: public G4MagErrorStepper +class G4ExplicitEuler : public G4MagErrorStepper { - public: + public: // with description + G4ExplicitEuler(G4Mag_EqRhs *EqRhs, G4int numberOfVariables = 6) ; ~G4ExplicitEuler(); @@ -27,9 +38,11 @@ class G4ExplicitEuler: public G4MagErrorStepper const G4double h, G4double yout[]); + public: // without description + G4int IntegratorOrder() { return 1; }; -private: + private: G4int fNumberOfVariables ; }; diff --git a/source/geometry/magneticfield/include/G4Field.hh b/source/geometry/magneticfield/include/G4Field.hh index b83a729f47..d5b6033883 100644 --- a/source/geometry/magneticfield/include/G4Field.hh +++ b/source/geometry/magneticfield/include/G4Field.hh @@ -5,32 +5,36 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Field.hh,v 1.2 1999/12/15 14:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Field.hh,v 1.3 2000/04/27 09:14:05 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// G4Field: -// abstract class for any kind of Field, -// It allows any kind of field (vector, scalar, tensor and any set of them) -// to be defiend by implementing the inquiry function interface. +// class G4Field // -// Created: John Apostolakis, 10.03.1997 -// Modified: +// Class description: +// +// Abstract class for any kind of Field. +// It allows any kind of field (vector, scalar, tensor and any set of them) +// to be defined by implementing the inquiry function interface. + +// History: +// - Created: John Apostolakis, 10.03.1997 #ifndef G4FIELD_HH #define G4FIELD_HH class G4Field { - public: + public: // with description + virtual void GetFieldValue( const double Point[3], double *Bfield ) const = 0; G4Field(){}; virtual ~G4Field(){}; - // A field signature function that can be used to insure + // A field signature function that can be used to insure // that the Equation of motion object and the G4Field object - // have the same "field signature"? + // have the same "field signature"? }; diff --git a/source/geometry/magneticfield/include/G4FieldManager.hh b/source/geometry/magneticfield/include/G4FieldManager.hh index 7b435b4acb..bfc9f0acff 100644 --- a/source/geometry/magneticfield/include/G4FieldManager.hh +++ b/source/geometry/magneticfield/include/G4FieldManager.hh @@ -5,37 +5,40 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4FieldManager.hh,v 1.2 1999/12/15 14:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4FieldManager.hh,v 1.3 2000/04/27 09:14:05 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// -// The G4FieldManager class exists to allow the user program to specify -// the electric, magnetic and/or other field(s) of the detector. -// (OR, in the future, of a part of it - planned to be a logical volume). -// It also stores a pointer to the ChordFinder object that can do the -// propagation in this field. All geometrical track "advancement" -// in the field is handled by this ChordFinder object. +// class G4FieldManager // -// G4FieldManager allows the other classes/object (of the MagneticField -// & other class categories) to find out whether a detector field object -// exists and what that object is. +// Class description: // -// The Chord Finder must be created either by calling -// CreateChordFinder for a Magnetic Field or by the user creating a -// a Chord Finder object "manually" and setting this pointer. +// A class to manage (Store) a pointer to the Field subclass that +// describes the field of a detector (magnetic, electric or other). +// Also stores a reference to the chord finder. // -// A default FieldManager is created by the singleton -// class G4NavigatorForTracking and exists before main is called. -// However a new one can be created and given to G4NavigatorForTracking. +// The G4FieldManager class exists to allow the user program to specify +// the electric, magnetic and/or other field(s) of the detector. +// (OR, in the future, of a part of it - planned to be a logical volume). +// It also stores a pointer to the ChordFinder object that can do the +// propagation in this field. All geometrical track "advancement" +// in the field is handled by this ChordFinder object. // -// Synopsis: -// A class to manage (Store) a pointer to the Field subclass that -// describes the field of a detector (magnetic, electric or other). -// Also stores a reference to the chord finder. +// G4FieldManager allows the other classes/object (of the MagneticField +// & other class categories) to find out whether a detector field object +// exists and what that object is. // -// 10.03.97 John Apostolakis, design and implementation +// The Chord Finder must be created either by calling CreateChordFinder +// for a Magnetic Field or by the user creating a a Chord Finder object +// "manually" and setting this pointer. // +// A default FieldManager is created by the singleton class +// G4NavigatorForTracking and exists before main is called. +// However a new one can be created and given to G4NavigatorForTracking. + +// History: +// - 10.03.97 John Apostolakis, design and implementation. + #ifndef G4FIELDMANAGER_HH #define G4FIELDMANAGER_HH 1 @@ -45,7 +48,8 @@ class G4FieldManager { - public: + public: // with description + G4FieldManager(); G4FieldManager(G4MagneticField *detectorField); ~G4FieldManager(); @@ -59,6 +63,7 @@ class G4FieldManager G4ChordFinder* GetChordFinder(); private: + G4Field* fDetectorField; G4ChordFinder* fChordFinder; @@ -66,43 +71,17 @@ class G4FieldManager // create fChordFinder ? }; -// Our current design envisions that one Field manager is -// valid for a detector. -// (eg a detector with electric E and magnetic B field will now treat -// them as one field - and could treat any other field of importance -// as additional components of a single field.) -// Does it make sense to have several instead ? -// Is the lack of elegance of the design (of G4Field) made up -// for by the simplification it allows ? +// Our current design envisions that one Field manager is +// valid for a detector. +// (eg a detector with electric E and magnetic B field will now treat +// them as one field - and could treat any other field of importance +// as additional components of a single field.) +// Does it make sense to have several instead ? +// Is the lack of elegance of the design (of G4Field) made up +// for by the simplification it allows ? // Implementation of inline functions -inline G4bool G4FieldManager::SetDetectorField(G4Field *detectorField) -{ - fDetectorField= detectorField; - return 0; -} - -inline G4Field* G4FieldManager::GetDetectorField() -{ - // If pointer is null, should this raise an exception ?? - return fDetectorField; -} - -inline G4bool G4FieldManager::DoesFieldExist(){ - return (fDetectorField != 0); -} - -inline -void G4FieldManager::SetChordFinder(G4ChordFinder *aChordFinder) -{ - fChordFinder= aChordFinder; -} - -inline -G4ChordFinder* G4FieldManager::GetChordFinder() -{ - return fChordFinder; -} +#include "G4FieldManager.icc" #endif /* G4FIELDMANAGER_HH */ diff --git a/source/geometry/magneticfield/include/G4FieldManager.icc b/source/geometry/magneticfield/include/G4FieldManager.icc new file mode 100644 index 0000000000..ae13ef29a8 --- /dev/null +++ b/source/geometry/magneticfield/include/G4FieldManager.icc @@ -0,0 +1,45 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4FieldManager.icc,v 1.1 2000/04/27 16:27:50 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// G4FieldManager inline implementation +// + +inline +G4bool G4FieldManager::SetDetectorField(G4Field *detectorField) +{ + fDetectorField= detectorField; + return 0; +} + +inline +G4Field* G4FieldManager::GetDetectorField() +{ + // If pointer is null, should this raise an exception ?? + return fDetectorField; +} + +inline +G4bool G4FieldManager::DoesFieldExist() +{ + return (fDetectorField != 0); +} + +inline +void G4FieldManager::SetChordFinder(G4ChordFinder *aChordFinder) +{ + fChordFinder= aChordFinder; +} + +inline +G4ChordFinder* G4FieldManager::GetChordFinder() +{ + return fChordFinder; +} diff --git a/source/geometry/magneticfield/include/G4FieldTrack.hh b/source/geometry/magneticfield/include/G4FieldTrack.hh index 0142eca4c1..b2e15e2f3f 100644 --- a/source/geometry/magneticfield/include/G4FieldTrack.hh +++ b/source/geometry/magneticfield/include/G4FieldTrack.hh @@ -5,30 +5,34 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4FieldTrack.hh,v 1.2 1999/12/15 14:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4FieldTrack.hh,v 1.3 2000/04/27 09:14:05 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -// -// Data structure bringing together a magnetic track's state. -// (position, momentum direction & modulus, energy, spin, ... ) -// Uses/abilities: -// - does not maintain any relationship between its data (eg energy/momentum) -// - for use in Runge-Kutta solver (in passing it the values right now). // -// First version: Oct 14, 1996 John Apostolakis -// Modified: Oct 24, 1996 JA: Added dist_on_curve, deleted constructor -// Nov 5, 1998 JA: Added energy, momentum, TOF, spin -// & several constructor, access, set methods -// -// +// class G4FieldTrack +// +// Class description: +// +// Data structure bringing together a magnetic track's state. +// (position, momentum direction & modulus, energy, spin, ... ) +// Uses/abilities: +// - does not maintain any relationship between its data (eg energy/momentum). +// - for use in Runge-Kutta solver (in passing it the values right now). + +// History +// - First version: Oct 14, 1996 John Apostolakis +// - Modified: Oct 24, 1996 JA: Added dist_on_curve, deleted constructor +// Nov 5, 1998 JA: Added energy, momentum, TOF, spin & +// several constructor, access, set methods + #ifndef G4FieldTrack_HH #define G4FieldTrack_HH #include "G4ThreeVector.hh" -class G4FieldTrack{ - public: - // Constructors +class G4FieldTrack +{ + public: // with description G4FieldTrack( const G4ThreeVector& pPosition, const G4ThreeVector& pVelocity, // Or UnitVelocity @@ -40,57 +44,69 @@ class G4FieldTrack{ G4FieldTrack( const G4FieldTrack& pFieldTrack ); - // Destructor ~G4FieldTrack(); + // Destructor - // Equality operator G4FieldTrack& operator = ( const G4FieldTrack & rStVec ); + // Equality operator - // Old multi-set method - inline G4FieldTrack& SetCurvePnt( - const G4ThreeVector& pPosition, - const G4ThreeVector& pVelocity, - const G4double s_curve ); - - // Access Methods: ("Const") - G4ThreeVector Position() const; // Renamed to GetPosition G4ThreeVector GetVelocity() const; - G4double CurveS() const; // distance along curve of point - // Old methods above to be deleted. G4ThreeVector GetPosition() const; const G4ThreeVector& GetMomentumDir() const; - G4double GetCurveLength() const; // distance along curve of point - // G4double GetEnergy() const; // Wrong Energy --> FIXME + G4double GetCurveLength() const; + // Distance along curve of point. G4double GetMomentumModulus() const; G4ThreeVector GetSpin() const; G4double GetLabTimeOfFlight() const; G4double GetProperTimeOfFlight() const; + // Accessors. - // Modifiers void SetPosition(G4ThreeVector nPos); - void SetVelocity(G4ThreeVector nMomDir); // does change mom-dir too - void SetMomentumDir(G4ThreeVector nMomDir); // does NOT change velocity - void SetCurveLength(G4double nCurve_s); // distance along curve - void SetEnergy(G4double nEnergy); // does not modify momentum - void SetMomentumModulus(G4double nMomentumMod); // does not modify energy + void SetVelocity(G4ThreeVector nMomDir); + // Does change mom-dir too. + void SetMomentumDir(G4ThreeVector nMomDir); + // Does NOT change velocity. + void SetCurveLength(G4double nCurve_s); + // Distance along curve. + void SetEnergy(G4double nEnergy); + // Does not modify momentum. + void SetMomentumModulus(G4double nMomentumMod); + // Does not modify energy. void SetSpin(G4ThreeVector nSpin); void SetLabTimeOfFlight(G4double nTOF); void SetProperTimeOfFlight(G4double nTOF); - // older one: + // Modifiers + + public: // without description + + G4FieldTrack& SetCurvePnt(const G4ThreeVector& pPosition, + const G4ThreeVector& pVelocity, + const G4double s_curve ); + // Old multi-set method + + G4ThreeVector Position() const; + // Renamed to GetPosition + + G4double CurveS() const; // distance along curve of point void SetCurveS(G4double new_curve_s); + // Old methods to be deleted. + + // G4double GetEnergy() const; // Wrong Energy --> FIXME // G4double* PosVelVec(); // [6] Needed for RK integrator - // This old method completely broke encapsulation ? + // This old method completely broke encapsulation ? - // Needed and should be used only for RK integration driver // static const G4int ncompSVEC=15; + // Needed and should be used only for RK integration driver enum { ncompSVEC = 16 }; void DumpToArray( G4double valArr[ncompSVEC] ) const; void LoadFromArray( const G4double valArr[ncompSVEC] ); - friend G4std::ostream& operator<<( G4std::ostream& os, G4FieldTrack& SixVec); + friend G4std::ostream& + operator<<( G4std::ostream& os, G4FieldTrack& SixVec); private: + G4double SixVector[6]; G4double fDistanceAlongCurve; // distance along curve of point G4double fEnergy; diff --git a/source/geometry/magneticfield/include/G4FieldTrack.icc b/source/geometry/magneticfield/include/G4FieldTrack.icc index 44865ae1e6..ce918a3173 100644 --- a/source/geometry/magneticfield/include/G4FieldTrack.icc +++ b/source/geometry/magneticfield/include/G4FieldTrack.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4FieldTrack.icc,v 1.2 1999/12/15 14:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "PhysicalConstants.h" diff --git a/source/geometry/magneticfield/include/G4HelixExplicitEuler.hh b/source/geometry/magneticfield/include/G4HelixExplicitEuler.hh index 9beb0d4fdd..185373b21e 100644 --- a/source/geometry/magneticfield/include/G4HelixExplicitEuler.hh +++ b/source/geometry/magneticfield/include/G4HelixExplicitEuler.hh @@ -5,33 +5,49 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HelixExplicitEuler.hh,v 1.2 1999/12/15 14:49:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HelixExplicitEuler.hh,v 1.4 2000/04/27 09:14:05 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// W. Wander 12/09/97 +// class G4HelixExplicitEuler +// +// Class description: +// +// Helix Explicit Euler: x_1 = x_0 + helix(h) +// with helix(h) being a helix piece of length h. +// A simple approach for solving linear differential equations. +// Take the current derivative and add it to the current position. + +// History: +// - Created. W.Wander , 12/09/97 #ifndef G4HELIXEXPLICITEULER_HH #define G4HELIXEXPLICITEULER_HH + #include "G4MagHelicalStepper.hh" -class G4HelixExplicitEuler: public G4MagHelicalStepper +class G4HelixExplicitEuler : public G4MagHelicalStepper { -public: - G4HelixExplicitEuler(G4Mag_EqRhs *EqRhs): G4MagHelicalStepper(EqRhs){}; - ~G4HelixExplicitEuler(){}; - - void DumbStepper( const G4double y[], - const G4double dydx[], - const G4double h, - G4double yout[]); + public: - // DELETED RightHandSide( ) !!!! - // Replace by MagFieldEvaluate( const G4double y[], G4double B[] ) - // in G4HelicalStepper + G4HelixExplicitEuler(G4Mag_EqRhs *EqRhs) + : G4MagHelicalStepper(EqRhs) {;} + + ~G4HelixExplicitEuler() {;} - G4int IntegratorOrder() { return 1; }; + void DumbStepper( const G4double y[], + G4ThreeVector Bfld, + G4double h, + G4double yout[]); + + public: // without description + + // DELETED RightHandSide( ) !!!! + // Replaced by MagFieldEvaluate( const G4double y[], G4double B[] ) + // in G4HelicalStepper + + G4int IntegratorOrder() { return 1; } }; #endif /* G4EXPLICITEULER_HH */ diff --git a/source/geometry/magneticfield/include/G4HelixHeum.hh b/source/geometry/magneticfield/include/G4HelixHeum.hh index 93aa201505..3220710652 100644 --- a/source/geometry/magneticfield/include/G4HelixHeum.hh +++ b/source/geometry/magneticfield/include/G4HelixHeum.hh @@ -5,29 +5,45 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HelixHeum.hh,v 1.2 1999/12/15 14:49:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HelixHeum.hh,v 1.4 2000/04/27 09:14:05 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// W. Wander 03/11/98 +// class G4HelixHeum +// +// Class description: +// +// Simple Heum: +// x_1 = x_0 + +// h * 1/4 * dx(t0,x0) + +// 3/4 * dx(t0+2/3*h, x0+2/3*h*(dx(t0+h/3,x0+h/3*dx(t0,x0)))) + +// History: +// - Created. W.Wander , 03/11/98 #ifndef G4HELIXHEUM_HH #define G4HELIXHEUM_HH + #include "G4MagHelicalStepper.hh" -class G4HelixHeum: public G4MagHelicalStepper +class G4HelixHeum : public G4MagHelicalStepper { -public: - G4HelixHeum(G4Mag_EqRhs *EqRhs): G4MagHelicalStepper(EqRhs){}; - ~G4HelixHeum(){}; + public: // with description + + G4HelixHeum(G4Mag_EqRhs *EqRhs) + : G4MagHelicalStepper(EqRhs) {;} + + ~G4HelixHeum() {;} - void DumbStepper( const G4double y[], - const G4double dydx[], - const G4double h, - G4double yout[]); + void DumbStepper( const G4double y[], + G4ThreeVector Bfld, + G4double h, + G4double yout[]); + + public: // without description - G4int IntegratorOrder() { return 2; }; + G4int IntegratorOrder() { return 2; } }; #endif /* G4HELIXHEUM_HH */ diff --git a/source/geometry/magneticfield/include/G4HelixImplicitEuler.hh b/source/geometry/magneticfield/include/G4HelixImplicitEuler.hh index dc252cd9c4..9d551e0464 100644 --- a/source/geometry/magneticfield/include/G4HelixImplicitEuler.hh +++ b/source/geometry/magneticfield/include/G4HelixImplicitEuler.hh @@ -5,29 +5,44 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HelixImplicitEuler.hh,v 1.2 1999/12/15 14:49:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HelixImplicitEuler.hh,v 1.4 2000/04/27 09:14:05 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// W. Wander 03/11/98 +// class G4HelixImplicitEuler +// +// Class description: +// +// Helix Implicit Euler: +// x_1 = x_0 + 1/2 * ( helix(h,t_0,x_0) +// + helix(h,t_0+h,x_0+helix(h,t0,x0) ) ) + +// History: +// - Created. W.Wander , 03/11/98 #ifndef G4HELIXIMPLICITEULER_HH #define G4HELIXIMPLICITEULER_HH + #include "G4MagHelicalStepper.hh" -class G4HelixImplicitEuler: public G4MagHelicalStepper +class G4HelixImplicitEuler : public G4MagHelicalStepper { -public: - G4HelixImplicitEuler(G4Mag_EqRhs *EqRhs): G4MagHelicalStepper(EqRhs){}; - ~G4HelixImplicitEuler(){}; + public: // with description + + G4HelixImplicitEuler(G4Mag_EqRhs *EqRhs) + : G4MagHelicalStepper(EqRhs) {;} + + ~G4HelixImplicitEuler() {;} - void DumbStepper( const G4double y[], - const G4double dydx[], - const G4double h, - G4double yout[]); + void DumbStepper( const G4double y[], + G4ThreeVector Bfld, + G4double h, + G4double yout[]); - G4int IntegratorOrder() { return 2; }; + public: // without description + + G4int IntegratorOrder() { return 2; } }; #endif /* G4HELIXIMPLICITEULER_HH */ diff --git a/source/geometry/magneticfield/include/G4HelixSimpleRunge.hh b/source/geometry/magneticfield/include/G4HelixSimpleRunge.hh index 7ba90ef6af..cb0be18588 100644 --- a/source/geometry/magneticfield/include/G4HelixSimpleRunge.hh +++ b/source/geometry/magneticfield/include/G4HelixSimpleRunge.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HelixSimpleRunge.hh,v 1.2 1999/12/15 14:49:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HelixSimpleRunge.hh,v 1.3 2000/04/12 18:28:51 japost Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // W. Wander 03/12/98 @@ -23,9 +23,9 @@ class G4HelixSimpleRunge: public G4MagHelicalStepper ~G4HelixSimpleRunge(){}; void DumbStepper( const G4double y[], - const G4double dydx[], - const G4double h, - G4double yout[]); + G4ThreeVector Bfld, + G4double h, + G4double yout[]); G4int IntegratorOrder() { return 2; }; }; diff --git a/source/geometry/magneticfield/include/G4ImplicitEuler.hh b/source/geometry/magneticfield/include/G4ImplicitEuler.hh index a0d8fea998..262fd32e10 100644 --- a/source/geometry/magneticfield/include/G4ImplicitEuler.hh +++ b/source/geometry/magneticfield/include/G4ImplicitEuler.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ImplicitEuler.hh,v 1.2 1999/12/15 14:49:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // W. Wander 12/09/97 diff --git a/source/geometry/magneticfield/include/G4LineSection.hh b/source/geometry/magneticfield/include/G4LineSection.hh index a9a1b4c506..17246eb51f 100644 --- a/source/geometry/magneticfield/include/G4LineSection.hh +++ b/source/geometry/magneticfield/include/G4LineSection.hh @@ -5,35 +5,50 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LineSection.hh,v 1.2 1999/12/15 14:49:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LineSection.hh,v 1.4 2000/04/27 09:14:05 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// A utility class that calculates the distance of a point from a -// line section. +// class G4LineSection // -// +// Class description: +// +// A utility class that calculates the distance of a point from a +// line section. + +// History: +// - Created. J. Apostolakis. +// - Cosmetics against /0. and sqrt(<0.). V. Grichine, 25.02.00. + +#ifndef G4LineSection_hh +#define G4LineSection_hh #include "globals.hh" #include "G4ThreeVector.hh" -typedef G4ThreeVector POINT; -typedef POINT Vector; +class G4LineSection +{ + public: // with description + G4LineSection( const G4ThreeVector& PntA, const G4ThreeVector& PntB ); -class G4LineSection { - public: - G4LineSection( const POINT& PntA, const POINT& PntB ); + G4double Dist( G4ThreeVector OtherPnt ) const; + G4double InvsqDistAB() const; - G4double Dist( POINT OtherPnt ) const; - G4double InvsqDistAB() const { return inverse_square_distAB; } - - // - static G4double Distline( const POINT& OtherPnt, - const POINT& LinePntA, - const POINT& LinePntB ); + static G4double Distline( const G4ThreeVector& OtherPnt, + const G4ThreeVector& LinePntA, + const G4ThreeVector& LinePntB ); private: - POINT EndpointA; - Vector VecAtoB; + + G4ThreeVector EndpointA; + G4ThreeVector VecAtoB; G4double inverse_square_distAB; }; + +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 4cbe65b730..8cf78ccd5a 100644 --- a/source/geometry/magneticfield/include/G4MagErrorStepper.hh +++ b/source/geometry/magneticfield/include/G4MagErrorStepper.hh @@ -5,23 +5,25 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MagErrorStepper.hh,v 1.5 1999/12/15 14:49:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MagErrorStepper.hh,v 1.6 2000/04/27 09:14:05 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -// Abstract base class (ie Interface) -// ------------------- -// for integrator of particle's equation of motion, -// used in tracking in space dependent magnetic field -// ----------------------------------------------------- // +// class G4MagErrorStepper +// +// Class description: +// +// Abstract base class for integrator of particle's equation of motion, +// used in tracking in space dependent magnetic field. + // History: // 09.12.97 W.Wander Created G4MagErrorStepper // 09.03.98 W.Wander Added AdvanceHelix functionality // 09.11.98 J.Apostolakis Moved AdvanceHelix to G4MagHelicalStepper -// $ Id: $ #ifndef G4MAGERRORSTEPPER_HH #define G4MAGERRORSTEPPER_HH + #include "globals.hh" #include "G4MagIntegratorStepper.hh" #include "G4Mag_EqRhs.hh" @@ -29,43 +31,42 @@ class G4MagErrorStepper : public G4MagIntegratorStepper { - public: + public: // with description - G4MagErrorStepper(G4Mag_EqRhs *EqRhs,G4int numberOfVariables); - ~G4MagErrorStepper(); + G4MagErrorStepper(G4Mag_EqRhs *EqRhs,G4int numberOfVariables); + ~G4MagErrorStepper(); - // The stepper for the Runge Kutta integration. The stepsize - // is fixed, with the Step size given by h. - // Integrates ODE starting values y[0 to 6 ] - // Outputs yout[] and its estimated error yerr[]. - - void Stepper( const G4double y[], + void Stepper( const G4double y[], const G4double dydx[], const G4double h, G4double yout[], G4double yerr[] ); + // The stepper for the Runge Kutta integration. The stepsize + // is fixed, with the Step size given by h. + // Integrates ODE starting values y[0 to 6]. + // Outputs yout[] and its estimated error yerr[]. - // performs a 'dump' Step without error calculation. - - virtual void DumbStepper( const G4double y[], + virtual void DumbStepper( const G4double y[], const G4double dydx[], const G4double h, G4double yout[] ) = 0; - - G4double DistChord() const; + // Performs a 'dump' Step without error calculation. -private: - - // Data stored in order to find the chord - G4ThreeVector fInitialPoint, fMidPoint, fFinalPoint; - - // G4int theNumberOfVariables ; + G4double DistChord() const; - // The following arrays are used only for temporary storage - // they are allocated at the class level only for efficiency - - // so that calls to new and delete are not made in Stepper() - G4double *yInitial, *yMiddle, *dydxMid, *yOneStep; + private: + + G4ThreeVector fInitialPoint, fMidPoint, fFinalPoint; + // Data stored in order to find the chord + + // G4int theNumberOfVariables ; + + G4double *yInitial, *yMiddle, *dydxMid, *yOneStep; + // The following arrays are used only for temporary storage + // they are allocated at the class level only for efficiency - + // so that calls to new and delete are not made in Stepper(). }; + #include "G4MagErrorStepper.icc" #endif /* G4MAGERRORSTEPPER_HH */ diff --git a/source/geometry/magneticfield/include/G4MagErrorStepper.icc b/source/geometry/magneticfield/include/G4MagErrorStepper.icc index c582e9d76d..d711b0d5e4 100644 --- a/source/geometry/magneticfield/include/G4MagErrorStepper.icc +++ b/source/geometry/magneticfield/include/G4MagErrorStepper.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4MagErrorStepper.icc,v 1.6 2000/03/03 12:09:13 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // inline G4MagErrorStepper::G4MagErrorStepper(G4Mag_EqRhs *EqRhs, diff --git a/source/geometry/magneticfield/include/G4MagHelicalStepper.hh b/source/geometry/magneticfield/include/G4MagHelicalStepper.hh index 28261d505e..1c9cf59c5e 100644 --- a/source/geometry/magneticfield/include/G4MagHelicalStepper.hh +++ b/source/geometry/magneticfield/include/G4MagHelicalStepper.hh @@ -5,21 +5,23 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MagHelicalStepper.hh,v 1.2 1999/12/15 14:49:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// Started from G4MagErrorStepper.hh +// $Id: G4MagHelicalStepper.hh,v 1.4 2000/04/27 09:14:05 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -// Abstract base class (ie Interface) -// ------------------- -// for integrator of particle's equation of motion, -// used in tracking in space dependent magnetic field -// ----------------------------------------------------- // +// class G4MagHelicalStepper +// +// Class description: +// +// Abstract base class for integrator of particle's equation of motion, +// used in tracking in space dependent magnetic field + // History: -// 05.11.98 J.Apostolakis Creation of new ABC -// +// - 05.11.98 J.Apostolakis Creation of new ABC + #ifndef G4MagHelicalStepper_hh #define G4MagHelicalStepper_hh + #include "globals.hh" #include "G4MagIntegratorStepper.hh" #include "G4Mag_EqRhs.hh" @@ -27,60 +29,59 @@ class G4MagHelicalStepper : public G4MagIntegratorStepper { - public: + public: // with description - G4MagHelicalStepper(G4Mag_EqRhs *EqRhs); - ~G4MagHelicalStepper(){} ; - - // The stepper for the Runge Kutta integration. The stepsize - // is fixed, equal to h. - // Integrates ODE starting values y[0 to 6 ] - // Outputs yout[] and its estimated error yerr[]. + G4MagHelicalStepper(G4Mag_EqRhs *EqRhs); + ~G4MagHelicalStepper() {;} - void Stepper( const G4double y[], + void Stepper( const G4double y[], const G4double dydx[], const G4double h, G4double yout[], G4double yerr[] ); - - // performs a 'dump' Step without error calculation. + // The stepper for the Runge Kutta integration. + // The stepsize is fixed, equal to h. + // Integrates ODE starting values y[0 to 6] + // Outputs yout[] and its estimated error yerr[]. - virtual void DumbStepper( const G4double y[], - const G4double dydx[], - const G4double h, + virtual void DumbStepper( const G4double y[], + G4ThreeVector Bfld, + G4double h, G4double yout[] ) = 0; - - // Estimate maximum distance of curved solution and chord ... + // Performs a 'dump' Step without error calculation. - G4double DistChord() const; + G4double DistChord() const; + // Estimate maximum distance of curved solution and chord ... - // --- Methods used to implement all the derived classes ----- - protected: + protected: // with description - // a linear Step in regions without magnetic field + // --- Methods used to implement all the derived classes ----- - inline void LinearStep( const G4double yIn[], - const G4double h, - G4double yHelix[]); + void LinearStep( const G4double yIn[], + const G4double h, + G4double yHelix[]); + // A linear Step in regions without magnetic field. + + void AdvanceHelix( const G4double yIn[], + G4ThreeVector Bfld, + G4double h, + G4double yHelix[]); // output + // A first order Step along a helix inside the field. + + void MagFieldEvaluate( const G4double y[], G4ThreeVector& Bfield ); + // Evaluate the field at a certain point. + + protected: // without description + + // void MagFieldEvaluate( const G4double y[], G4double B[] ) + // { GetEquationOfMotion()-> GetFieldValue(y, B); } + + private: - // a first order Step along a helix inside the field + G4ThreeVector yInitial, yMidPoint, yFinal; + // Data stored in order to find the chord. - void AdvanceHelix( const G4double yIn[], - const G4double B[], - const G4double h, - G4double yHelix[]); - - // evaluate the field at a certain point - - void MagFieldEvaluate( const G4double y[], G4double B[] ) - { GetEquationOfMotion()-> GetFieldValue(y, B); } - - private: - - // Data stored in order to find the chord - G4ThreeVector yInitial, yMidPoint, yFinal; - - G4Mag_EqRhs* fPtrMagEqOfMot; + G4Mag_EqRhs* fPtrMagEqOfMot; }; #include "G4MagHelicalStepper.icc" diff --git a/source/geometry/magneticfield/include/G4MagHelicalStepper.icc b/source/geometry/magneticfield/include/G4MagHelicalStepper.icc index ce119af4fa..2093f05695 100644 --- a/source/geometry/magneticfield/include/G4MagHelicalStepper.icc +++ b/source/geometry/magneticfield/include/G4MagHelicalStepper.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MagHelicalStepper.icc,v 1.2 1999/12/15 14:49:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MagHelicalStepper.icc,v 1.3 2000/04/27 09:14:05 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // linear Step in regions of no field @@ -22,4 +22,11 @@ G4MagHelicalStepper::LinearStep( const G4double yIn[], } } - +inline void +G4MagHelicalStepper::MagFieldEvaluate(const G4double y[], + G4ThreeVector& Bfield ) +{ + G4double B[3]; + GetEquationOfMotion()-> GetFieldValue(y, B); + Bfield= G4ThreeVector( B[0], B[1], B[2] ); +} diff --git a/source/geometry/magneticfield/include/G4MagIntegratorDriver.hh b/source/geometry/magneticfield/include/G4MagIntegratorDriver.hh index c02f2ce186..eb12161cae 100644 --- a/source/geometry/magneticfield/include/G4MagIntegratorDriver.hh +++ b/source/geometry/magneticfield/include/G4MagIntegratorDriver.hh @@ -5,11 +5,19 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MagIntegratorDriver.hh,v 1.5 1999/12/15 18:15:25 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MagIntegratorDriver.hh,v 1.6 2000/04/27 09:14:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -// Provides Driver that talks to Integrator Stepper, and insures that -// the error is within acceptable bounds. +// +// class G4MagInt_Driver +// +// Class description: +// +// Provides a driver that talks to the Integrator Stepper, and insures that +// the error is within acceptable bounds. + +// History: +// - Created. J.Apostolakis. #ifndef G4MagInt_Driver_Def #define G4MagInt_Driver_Def @@ -20,87 +28,66 @@ class G4MagInt_Driver { - public: - G4bool AccurateAdvance( G4FieldTrack& y_current, - const G4double hstep, - const G4double eps); // Requested y_err/hstep + public: // with description - // - // Above drivers for integrator (Runge-Kutta) with stepsize control. - // Integrates ODE starting values y_current - // from current s (s=s0) to s=s0+h with accuracy eps. - // On output ystart is replaced by value at end of interval. - // The concept is similar to the odeint routine from NRC p.721-722 . + G4bool AccurateAdvance(G4FieldTrack& y_current, + const G4double hstep, + const G4double eps); // Requested y_err/hstep + // Above drivers for integrator (Runge-Kutta) with stepsize control. + // Integrates ODE starting values y_current + // from current s (s=s0) to s=s0+h with accuracy eps. + // On output ystart is replaced by value at end of interval. + // The concept is similar to the odeint routine from NRC p.721-722. - // QuickAdvance just tries one Step - it does not ensure accuracy - G4bool QuickAdvance( G4FieldTrack& y_val, // INOUT - const G4double dydx[], - G4double hstep, // IN - G4double& dchord_step, - G4double& dyerr ) ; + G4bool QuickAdvance(G4FieldTrack& y_val, // INOUT + const G4double dydx[], + G4double hstep, // IN + G4double& dchord_step, + G4double& dyerr ) ; + // QuickAdvance just tries one Step - it does not ensure accuracy. - // Constructor, destructor - // - G4MagInt_Driver( G4double hminimum, - G4MagIntegratorStepper *pItsStepper, - G4int numberOfComponents=6); + G4MagInt_Driver( G4double hminimum, + G4MagIntegratorStepper *pItsStepper, + G4int numberOfComponents=6); ~G4MagInt_Driver(){} + // Constructor, destructor. - // Access functions - // ---------------- - // - G4double GetHmin(){ return hminimum_val;} - G4double Hmin() { return hminimum_val;} // Obsolete - G4double GetSafety(){ return safety; } - G4double GetPshrnk(){ return pshrnk;} - G4double GetPgrow(){ return pgrow;} - G4double GetErrcon(){ return errcon;} - + G4double GetHmin(); + G4double Hmin(); // Obsolete + G4double GetSafety(); + G4double GetPshrnk(); + G4double GetPgrow(); + G4double GetErrcon(); void GetDerivatives( const G4FieldTrack y_curr, // const, INput G4double dydx[] ); // OUTput + // Accessors. - // Set functions - // ---------------- - // - G4double SetHmin(G4double newval){ return hminimum_val;} - // - // The following function sets a new stepper pItsStepper for - // this driver, and then calls ReSetParameters to reset its - // parameters accordingly. - // void RenewStepperAndAdjust(G4MagIntegratorStepper *pItsStepper); - // - // - // ReSetParameters does the following: - // i) sets the exponents (pgrow & pshrnk), - // using the current Stepper's order, - // ii) sets the safety - // ii) calculates "errcon" according to the above values. - // + // Sets a new stepper pItsStepper for this driver. Then it calls + // ReSetParameters to reset its parameters accordingly. + void ReSetParameters(G4double new_safety= 0.9 ); - // - // When setting safety or pgrow, errcon will be set to a - // compatible value - // + // i) sets the exponents (pgrow & pshrnk), + // using the current Stepper's order, + // ii) sets the safety + // ii) calculates "errcon" according to the above values. + void SetSafety(G4double valS); void SetPshrnk(G4double valPs); void SetPgrow( G4double valPg); void SetErrcon(G4double valEc); - // + // When setting safety or pgrow, errcon will be set to a + // compatible value. + G4double ComputeAndSetErrcon(); - - void SetChargeMomentumMass( // Change them in Equation - const G4double particleCharge, // in e+ units - const G4double MomentumXc, - const G4double Mass ); + void SetChargeMomentumMass( const G4double particleCharge, + const G4double MomentumXc, + const G4double Mass ); + // Change them in Equation. particleCharge is in e+ units. G4MagIntegratorStepper* GetStepper(); - // This takes one Step that is as large as possible while - // satisfying the accuracy criterion of - // yerr < eps * |y_end-y_start| - // void OneGoodStep( G4double ystart[], // Like old RKF45step() const G4double dydx[], G4double& x, @@ -108,26 +95,34 @@ class G4MagInt_Driver const G4double eps, // memb variables ? G4double& hdid, G4double& hnext ) ; + // This takes one Step that is as large as possible while + // satisfying the accuracy criterion of: + // yerr < eps * |y_end-y_start| - // Taking the last step's normalised error, calculate - // a step size for the next step. - // Do not limit the next step's size within a factor of the current one. G4double ComputeNewStepSize( G4double errMaxNorm, // normalised error G4double hstepCurrent); // current step size - - // Taking the last step's normalised error, calculate - // a step size for the next step. - // Limit the next step's size within a range around the current one. + // Taking the last step's normalised error, calculate + // a step size for the next step. + // Do not limit the next step's size within a factor of the + // current one. + G4double ComputeNewStepSize_WithinLimits( G4double errMaxNorm, // normalised error G4double hstepCurrent); // current step size + // Taking the last step's normalised error, calculate + // a step size for the next step. + // Limit the next step's size within a range around the current one. G4int GetMaxNoSteps(); void SetMaxNoSteps( G4int val); -protected: - // Issue warnings for undesirable situations + public: // without description + + G4double SetHmin(G4double newval); + + protected: + void WarnSmallStepSize( G4double hnext, G4double hstep, G4double h, G4double xDone, G4int noSteps); @@ -136,9 +131,12 @@ protected: G4double hStepSize , G4double epsilonRelative, G4int debugFlag); + // Issue warnings for undesirable situations -private: - G4double hminimum_val; // Minimum Step allowed in a Step + private: + + G4double hminimum_val; + // Minimum Step allowed in a Step. const G4int nvar; @@ -146,14 +144,15 @@ private: G4int fMaxNoSteps; static const G4int fMaxStepBase; - // Parameters used to grow and shrink trial stepsize G4double safety; G4double pshrnk; // exponent for shrinking G4double pgrow; // exponent for growth G4double errcon; - // maximum stepsize increase/decrease factors + // Parameters used to grow and shrink trial stepsize. + static const G4double max_stepping_increase; static const G4double max_stepping_decrease; + // Maximum stepsize increase/decrease factors. }; #include "G4MagIntegratorDriver.icc" diff --git a/source/geometry/magneticfield/include/G4MagIntegratorDriver.icc b/source/geometry/magneticfield/include/G4MagIntegratorDriver.icc index 6baa4db3d7..56ff96346d 100644 --- a/source/geometry/magneticfield/include/G4MagIntegratorDriver.icc +++ b/source/geometry/magneticfield/include/G4MagIntegratorDriver.icc @@ -5,9 +5,45 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MagIntegratorDriver.icc,v 1.3 1999/12/15 14:49:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MagIntegratorDriver.icc,v 1.4 2000/04/27 09:14:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // + +inline G4double G4MagInt_Driver::GetHmin() +{ + return hminimum_val; +} + +inline G4double G4MagInt_Driver::Hmin() +{ + return hminimum_val; +} + +inline G4double G4MagInt_Driver::GetSafety() +{ + return safety; +} + +inline G4double G4MagInt_Driver::GetPshrnk() +{ + return pshrnk; +} + +inline G4double G4MagInt_Driver::GetPgrow() +{ + return pgrow; +} + +inline G4double G4MagInt_Driver::GetErrcon() +{ + return errcon; +} + +inline G4double G4MagInt_Driver::SetHmin(G4double newval) +{ + return hminimum_val; +} + inline G4double G4MagInt_Driver::ComputeAndSetErrcon() { errcon = pow(max_stepping_increase/GetSafety(),1.0/GetPgrow()); diff --git a/source/geometry/magneticfield/include/G4MagIntegratorStepper.hh b/source/geometry/magneticfield/include/G4MagIntegratorStepper.hh index 3259e3d068..4badf95136 100644 --- a/source/geometry/magneticfield/include/G4MagIntegratorStepper.hh +++ b/source/geometry/magneticfield/include/G4MagIntegratorStepper.hh @@ -5,81 +5,78 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MagIntegratorStepper.hh,v 1.3 1999/12/15 14:49:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MagIntegratorStepper.hh,v 1.4 2000/04/27 09:14:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -// Abstract base class (ie Interface) -// ------------------- -// for integrator of particle's equation of motion, -// used in tracking in space dependent magnetic field -// ----------------------------------------------------- // +// class G4MagIntegratorStepper +// +// Class description: +// +// Abstract base class for integrator of particle's equation of motion, +// used in tracking in space dependent magnetic field + // History: -// 15.01.97 J.Apostolakis (J.Apostolakis@cern.ch) +// - 15.01.97 J.Apostolakis (J.Apostolakis@cern.ch) #ifndef G4MAGIntegratorSTEPPER #define G4MAGIntegratorSTEPPER + #include "globals.hh" #include "G4Mag_EqRhs.hh" class G4MagIntegratorStepper { - public: + public: // with description G4MagIntegratorStepper(G4Mag_EqRhs *EqRhs, G4int num_variables); - ~G4MagIntegratorStepper(){} ; - - // "Key" methods - // --------------- - // The stepper for the Runge Kutta integration. The stepsize - // is fixed, with the Step size given by h. - // Integrates ODE starting values y[0 to 6 ] - // Outputs yout[] and its estimated error yerr[]. + ~G4MagIntegratorStepper(){;} + // Constructor and destructor. No actions. virtual void Stepper( const G4double y[], const G4double dydx[], const G4double h, G4double yout[], G4double yerr[] ) = 0 ; - - // Estimate the maximum distance of chord from true path over - // segment last integrated. + // The stepper for the Runge Kutta integration. + // The stepsize is fixed, with the Step size given by h. + // Integrates ODE starting values y[0 to 6]. + // Outputs yout[] and its estimated error yerr[]. virtual G4double DistChord() const = 0; + // Estimate the maximum distance of a chord from the true path + // over the segment last integrated. - - // Utility methods - // --------------- - // Simple function to (re)normalise 'unit velocity' vector - // void NormaliseTangentVector( G4double vec[6] ); + // Simple utility function to (re)normalise 'unit velocity' vector. - // Supply the standard Evaluation of the Right Hand side - // of the associated equation. - // virtual void RightHandSide( const double y[], double dydx[] ); - // FIXME : not virtual JA 10/2/99 + // Utility method to supply the standard Evaluation of the + // Right Hand side of the associated equation. - // Get/Set the number of variables that the stepper will compile over G4int GetNumberOfVariables(); void SetNumberOfVariables(G4int newNo); + // Get/Set the number of variables that the stepper will compile over. + + virtual G4int IntegratorOrder() = 0; + // Returns the order of the integrator + // i.e. its error behaviour is of the order O(h^order). + + G4EquationOfMotion *GetEquationOfMotion() const; + // As some steppers (eg RKG3) require other methods of Eq_Rhs + // this function allows for access to them. + + public: // without description #if 0 - // Supply the standard Evaluation of the Right Hand side - // of the associated equation. void SetChargeAndMomentum( const G4double particleCharge, // in e+ units const G4double MomentumXc) - { theEquation_Rhs -> SetChargeAndMomentum(particleCharge, MomentumXc);} + // Supply the standard Evaluation of the Right Hand side + // of the associated equation. + {theEquation_Rhs -> SetChargeAndMomentum(particleCharge, MomentumXc);} #endif - // returns the order of the integrator - // i.e. its error behaviour is of the order O(h^order) - virtual G4int IntegratorOrder() = 0; - - // As some steppers (eg RKG3) require other methods of Eq_Rhs - // the next function allows for access to them. - G4EquationOfMotion *GetEquationOfMotion() const; private: diff --git a/source/geometry/magneticfield/include/G4MagIntegratorStepper.icc b/source/geometry/magneticfield/include/G4MagIntegratorStepper.icc index 59c492ded0..08ddc0cc21 100644 --- a/source/geometry/magneticfield/include/G4MagIntegratorStepper.icc +++ b/source/geometry/magneticfield/include/G4MagIntegratorStepper.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4MagIntegratorStepper.icc,v 1.3 1999/12/15 14:49:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // inline G4EquationOfMotion* G4MagIntegratorStepper::GetEquationOfMotion() const { return fEquation_Rhs; } diff --git a/source/geometry/magneticfield/include/G4Mag_EqRhs.hh b/source/geometry/magneticfield/include/G4Mag_EqRhs.hh index 8f05eef98e..ec89c53434 100644 --- a/source/geometry/magneticfield/include/G4Mag_EqRhs.hh +++ b/source/geometry/magneticfield/include/G4Mag_EqRhs.hh @@ -5,59 +5,69 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Mag_EqRhs.hh,v 1.3 1999/12/15 14:49:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Mag_EqRhs.hh,v 1.4 2000/04/27 09:14:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// The right hand size of the equation of motion of a particle -// in a magnetic field. +// class G4Mag_EqRhs // -// (Possible use of alternative to "normal" version: rotating reference -// frame) -// -// JA, January 13th, 1996 +// Class description: // +// The "standard" right-hand side for the equation of motion of a particle +// in a pure magnetic field. +// Others that might be required are: +// i) when using a moving reference frame ... or +// ii) extending for other forces, eg an electric field. + +// History: +// - Created. J.Apostolakis, January 13th 1996 + #ifndef G4_MAG_EQRHS_DEF #define G4_MAG_EQRHS_DEF -#include "globals.hh" - -#include "G4EquationOfMotion.hh" +#include "globals.hh" +#include "G4EquationOfMotion.hh" #include "G4MagneticField.hh" // class G4MagneticField; not enough ?? class G4Mag_EqRhs : public G4EquationOfMotion { - public: + public: // with description + G4Mag_EqRhs( G4MagneticField *magField ); ~G4Mag_EqRhs(); + // Constructor and destructor. No actions. - // Given the value of the field "B", this function - // calculates the value of the derivative dydx. - // -------------------------------------------------------- - // This is the _only_ function a subclass must define. - // The other two functions use Rhs_givenB. - // virtual void EvaluateRhsGivenB( const G4double y[], const G4double B[3], G4double dydx[] ) const = 0; + // Given the value of the field "B", this function + // calculates the value of the derivative dydx. + // This is the _only_ function a subclass must define. + // The other two functions use Rhs_givenB. - G4double FCof() const { return fCof_val; } + G4double FCof() const; - virtual void SetChargeMomentumMass( const G4double particleCharge, // in e+ units - const G4double MomentumXc, - const G4double mass); + virtual void + SetChargeMomentumMass( const G4double particleCharge, // in e+ units + const G4double MomentumXc, + const G4double mass); private: G4double fCof_val; - // Coefficient in the Lorentz motion equation (Lorentz force), if the - // magnetic field B is in Tesla, the particle charge in units of the - // elementary (positron?) charge, the momentum P in MeV/c, and the - // space coordinates and path along the trajectory in mm . - // static const G4double fUnitConstant; // Set in G4Mag_EqRhs.cc // to 0.299792458 + // Coefficient in the Lorentz motion equation (Lorentz force), if the + // magnetic field B is in Tesla, the particle charge in units of the + // elementary (positron?) charge, the momentum P in MeV/c, and the + // space coordinates and path along the trajectory in mm . }; +inline +G4double G4Mag_EqRhs::FCof() const +{ + return fCof_val; +} + #endif /* G4_MAG_EQRHS_DEF */ diff --git a/source/geometry/magneticfield/include/G4Mag_SpinEqRhs.hh b/source/geometry/magneticfield/include/G4Mag_SpinEqRhs.hh index e0d25dd66a..333f7dccb0 100644 --- a/source/geometry/magneticfield/include/G4Mag_SpinEqRhs.hh +++ b/source/geometry/magneticfield/include/G4Mag_SpinEqRhs.hh @@ -1,36 +1,49 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4Mag_SpinEqRhs.hh,v 1.3 2000/04/27 09:14:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// This is the standard right-hand side for equation of motion. -// This version of the right-hand side includes -// the three components of the particle's spin. +// class G4Mag_SpinEqRhs // -// J. Apostolakis, February 8th, 1999 -// P. Gumplinger, February 8th, 1999 +// Class description: // +// This is the standard right-hand side for equation of motion. +// This version of the right-hand side includes the three components +// of the particle's spin. + +// History: +// - Created: J.Apostolakis, P.Gumplinger - February 8th, 1999. + #ifndef G4MAG_SPIN_EQRHS #define G4MAG_SPIN_EQRHS #include "G4Mag_EqRhs.hh" #include "G4MagneticField.hh" -class G4Mag_SpinEqRhs: public G4Mag_EqRhs{ +class G4Mag_SpinEqRhs : public G4Mag_EqRhs{ - public: + public: // with description - G4Mag_SpinEqRhs( G4MagneticField* MagField ) : - G4Mag_EqRhs( MagField ) {}; - ~G4Mag_SpinEqRhs() {} ; + G4Mag_SpinEqRhs( G4MagneticField* MagField ) + : G4Mag_EqRhs( MagField ) {;} + ~G4Mag_SpinEqRhs() {;} + // Constructor and destructor. No actions. void SetChargeMomentumMass(const G4double particleCharge, // in e+ units const G4double MomentumXc, const G4double mass); - // Given the value of the magnetic field B, this function - // calculates the value of the derivative dydx. - // void EvaluateRhsGivenB( const G4double y[], const G4double B[3], G4double dydx[] ) const; + // Given the value of the magnetic field B, this function + // calculates the value of the derivative dydx. private: diff --git a/source/geometry/magneticfield/include/G4Mag_UsualEqRhs.hh b/source/geometry/magneticfield/include/G4Mag_UsualEqRhs.hh index f3bd876af6..8143ef7e4f 100644 --- a/source/geometry/magneticfield/include/G4Mag_UsualEqRhs.hh +++ b/source/geometry/magneticfield/include/G4Mag_UsualEqRhs.hh @@ -5,36 +5,42 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Mag_UsualEqRhs.hh,v 1.2 1999/12/15 14:49:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Mag_UsualEqRhs.hh,v 1.3 2000/04/27 09:14:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// This is the standard right-hand side for equation of motion. +// class G4Mag_UsualEqRhs // -// The only case another is required is when using a moving reference -// frame ... or extending the class to include additional Forces, -// eg an electric field -// -// J. Apostolakis, January 13th, 1997 +// Class description: // +// This is the standard right-hand side for equation of motion. +// The only case another is required is when using a moving reference +// frame ... or extending the class to include additional Forces, +// eg an electric field + +// History: +// - Created: J. Apostolakis, January 13th 1997. + #ifndef G4MAG_USUAL_EQRHS #define G4MAG_USUAL_EQRHS #include "G4Mag_EqRhs.hh" #include "G4MagneticField.hh" -class G4Mag_UsualEqRhs: public G4Mag_EqRhs{ - public: - G4Mag_UsualEqRhs( G4MagneticField* MagField ) : - G4Mag_EqRhs( MagField ) {}; - ~G4Mag_UsualEqRhs() {} ; +class G4Mag_UsualEqRhs : public G4Mag_EqRhs +{ + public: // with description - // Given the value of the magnetic field B, this function - // calculates the value of the derivative dydx. - // - void EvaluateRhsGivenB( const G4double y[], - const G4double B[3], - G4double dydx[] ) const; + G4Mag_UsualEqRhs( G4MagneticField* MagField ) + : G4Mag_EqRhs( MagField ) {;} + ~G4Mag_UsualEqRhs() {;} + // Constructor and destructor. No actions. + + void EvaluateRhsGivenB( const G4double y[], + const G4double B[3], + G4double dydx[] ) const; + // Given the value of the magnetic field B, this function + // calculates the value of the derivative dydx. }; #endif /* G4MAG_USUAL_EQRHS */ diff --git a/source/geometry/magneticfield/include/G4MagneticField.hh b/source/geometry/magneticfield/include/G4MagneticField.hh index 8e00261806..096702cfda 100644 --- a/source/geometry/magneticfield/include/G4MagneticField.hh +++ b/source/geometry/magneticfield/include/G4MagneticField.hh @@ -5,16 +5,20 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MagneticField.hh,v 1.2 1999/12/15 14:49:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MagneticField.hh,v 1.4 2000/05/10 12:36:40 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// Magnetic Field abstract class, implements inquiry function interface. +// class G4MagneticField // -// JA, January 13th, 1996 +// Class description: // -// November 5th, 1997 - G.Cosmo, added default & copy constructors, virtual -// destructor and assignment operator. +// Magnetic Field abstract class, implements inquiry function interface. + +// History: +// - Created. JA, January 13th, 1996. +// - Added default & copy constructors, virtual destructor and +// assignment operator. G.Cosmo, November 5th, 1997. #ifndef G4MAGNETIC_FIELD_DEF #define G4MAGNETIC_FIELD_DEF @@ -23,19 +27,15 @@ class G4MagneticField : public G4Field { - public: + public: // with description G4MagneticField(); virtual ~G4MagneticField(); + // Constructor and destructor. No actions. - // Copy constructor & assignment operator - G4MagneticField(const G4MagneticField &p); - G4MagneticField& operator = (const G4MagneticField &p); - - // Old version of field evaluation function: - // to be replaced by following function (GetFieldValue) - // virtual void MagneticField( const double Point[3], - // double Bfield[3] ) = 0; + G4MagneticField(const G4MagneticField &); + G4MagneticField& operator = (const G4MagneticField &); + // Copy constructor & assignment operator. virtual void GetFieldValue( const double Point[3], double *Bfield ) const = 0; @@ -45,9 +45,8 @@ class G4MagneticField : public G4Field inline G4MagneticField::G4MagneticField() {} inline G4MagneticField::~G4MagneticField() {} -inline G4MagneticField::G4MagneticField(const G4MagneticField &p) {} - // Not needed: { *this = p; } -inline G4MagneticField& G4MagneticField::operator = (const G4MagneticField &p) - { *this = p; return *this; } +inline G4MagneticField::G4MagneticField(const G4MagneticField &) {} +inline G4MagneticField& G4MagneticField::operator = (const G4MagneticField &) + { return *this; } #endif /* G4MAGNETIC_FIELD_DEF */ diff --git a/source/geometry/magneticfield/include/G4RKG3_Stepper.hh b/source/geometry/magneticfield/include/G4RKG3_Stepper.hh index 51deffe259..532ab873db 100644 --- a/source/geometry/magneticfield/include/G4RKG3_Stepper.hh +++ b/source/geometry/magneticfield/include/G4RKG3_Stepper.hh @@ -5,66 +5,81 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4RKG3_Stepper.hh,v 1.3 1999/12/15 14:49:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4RKG3_Stepper.hh,v 1.4 2000/04/27 09:14:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// J.Apostolakis, V.Grichine 30.01.97 +// class G4RKG3_Stepper +// +// Class description: +// +// Integrator Runga-Kutta Stepper from Geant3. + +// History: +// - Created. J.Apostolakis, V.Grichine - 30.01.97 + +#ifndef G4RKG3_Stepper_hh +#define G4RKG3_Stepper_hh #include "G4MagIntegratorStepper.hh" #include "G4ThreeVector.hh" class G4RKG3_Stepper : public G4MagIntegratorStepper { -public: - G4RKG3_Stepper(G4Mag_EqRhs *EqRhs): G4MagIntegratorStepper(EqRhs,6){}; - // integrate over 6 variables only: position & velocity - ~G4RKG3_Stepper(){}; + public: // with description - // The method it must provide, even if less efficiently - - void - Stepper( const G4double yIn[], - const G4double dydx[], - const G4double h, - G4double yOut[], - G4double yErr[] ); - // G4double& beta2) const + G4RKG3_Stepper(G4Mag_EqRhs *EqRhs) + : G4MagIntegratorStepper(EqRhs,6){;} + // Integrate over 6 variables only: position & velocity. - G4double DistChord() const ; + ~G4RKG3_Stepper(){;} + + void Stepper( const G4double yIn[], + const G4double dydx[], + const G4double h, + G4double yOut[], + G4double yErr[] ); + // The method which must be provided, even if less efficient. + + G4double DistChord() const ; - // Additional "optimised" methods: + void StepNoErr( const G4double tIn[7], + const G4double dydx[7], + const G4double Step, + G4double tOut[7], + G4double B[3] ); + // Integrator RK Stepper from G3 with only two field evaluation per + // Step. It is used in propagation initial Step by small substeps + // after solution error and delta geometry considerations. + // B[3] is magnetic field which is passed from substep to substep. - // Integrator RK Stepper from G3 with only two field evaluation per - // Step. It is used in propagation initial Step by small substeps - // after solution error and delta geometry considerations. - // B[3] is magnetic field which is passed from substep to substep. + void StepWithEst( const G4double tIn[7], + const G4double dydx[7], + const G4double Step, + G4double tOut[7], + G4double& alpha2, // to delete ? + G4double& beta2, + const G4double B1[3], + G4double B2[3] ); + // Integrator for RK from G3 with evaluation of error in solution and delta + // geometry based on naive similarity with the case of uniform magnetic field. + // B1[3] is input and is the first magnetic field values + // B2[3] is output and is the final magnetic field values. - void StepNoErr( const G4double tIn[7], - const G4double dydx[7], - const G4double Step, - G4double tOut[7], - G4double B[3] ); + public: // without description - void StepWithEst(const G4double tIn[7], - const G4double dydx[7], - const G4double Step, - G4double tOut[7], - // G4double tError[6], - G4double& alpha2, // to delete ? - G4double& beta2, - const G4double B1[3], - G4double B3[3] ); - - G4int IntegratorOrder() { return 4; }; + G4int IntegratorOrder() { return 4; }; -protected: - // void Field( const double Point[3], - // double Bfield[3] ) const - // { EqRhs-> GetFieldValue( Point, Bfield ) ; } -private: - G4ThreeVector fyInitial, - fyMidPoint, - fyFinal ; + protected: + // void Field( const double Point[3], + // double Bfield[3] ) const + // { EqRhs-> GetFieldValue( Point, Bfield ) ; } + + private: + + G4ThreeVector fyInitial, + fyMidPoint, + fyFinal ; }; +#endif diff --git a/source/geometry/magneticfield/include/G4SimpleHeum.hh b/source/geometry/magneticfield/include/G4SimpleHeum.hh index 9b731e12b6..f4bd612e2f 100644 --- a/source/geometry/magneticfield/include/G4SimpleHeum.hh +++ b/source/geometry/magneticfield/include/G4SimpleHeum.hh @@ -5,38 +5,56 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4SimpleHeum.hh,v 1.2 1999/12/15 14:49:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4SimpleHeum.hh,v 1.3 2000/04/27 09:14:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// W. Wander 12/09/97 +// class G4SimpleHeum +// +// Class description: +// +// Simple Heum: +// x_1 = x_0 + +// h * 1/4 * dx(t0,x0) + +// 3/4 * dx(t0+2/3*h, x0+2/3*h*(dx(t0+h/3,x0+h/3*dx(t0,x0)))) +// +// third order solver. + +// History: +// - Created. W. Wander , 12/09/97 #ifndef G4SIMPLEHEUM_HH #define G4SIMPLEHEUM_HH + #include "G4MagErrorStepper.hh" -class G4SimpleHeum: public G4MagErrorStepper +class G4SimpleHeum : public G4MagErrorStepper { - public: + public: // with description + G4SimpleHeum(G4Mag_EqRhs *EqRhs, G4int num_variables=6); ~G4SimpleHeum(); + // Constructor and destructor. - void DumbStepper( const G4double y[], - const G4double dydx[], - const G4double h, - G4double yout[]); + void DumbStepper( const G4double y[], + const G4double dydx[], + const G4double h, + G4double yout[]); - G4int IntegratorOrder() { return 3; }; + public: // without description + + G4int IntegratorOrder() { return 3; } + + private: -private: const G4int fNumberOfVariables; - // scratch space - G4double* dydxTemp ; - G4double* dydxTemp2 ; - G4double* yTemp ; - G4double* yTemp2 ; + G4double* dydxTemp ; + G4double* dydxTemp2 ; + G4double* yTemp ; + G4double* yTemp2 ; + // scratch space }; #endif /* G4SIMPLEHEUM_HH */ diff --git a/source/geometry/magneticfield/include/G4SimpleRunge.hh b/source/geometry/magneticfield/include/G4SimpleRunge.hh index 9640090ace..3464decb69 100644 --- a/source/geometry/magneticfield/include/G4SimpleRunge.hh +++ b/source/geometry/magneticfield/include/G4SimpleRunge.hh @@ -5,38 +5,56 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4SimpleRunge.hh,v 1.2 1999/12/15 14:49:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4SimpleRunge.hh,v 1.3 2000/04/27 09:14:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// W. Wander 12/09/97 +// class G4SimpleRunge +// +// Class description: +// +// Simple Runge: +// +// x_1 = x_0 + h * ( dx( t_0+h/2, x_0 + h/2 * dx( t_0, x_0) ) ) +// +// second order solver. +// Take the derivative at a position to be assumed at the middle of the +// Step and add it to the current position. + +// History: +// - Created. W.Wander , 12/09/97 #ifndef G4SIMPLERUNGE_HH #define G4SIMPLERUNGE_HH + #include "G4MagErrorStepper.hh" -class G4SimpleRunge: public G4MagErrorStepper +class G4SimpleRunge : public G4MagErrorStepper { - public: + public: // with description + G4SimpleRunge(G4Mag_EqRhs *EqRhs, G4int numberOfVariables = 6) ; ~G4SimpleRunge(); + // Constructor and destructor. - void DumbStepper( const G4double y[], - const G4double dydx[], - const G4double h, - G4double yout[]); + void DumbStepper( const G4double y[], + const G4double dydx[], + const G4double h, + G4double yout[]); - G4int IntegratorOrder() { return 2; }; + public: // without description + + G4int IntegratorOrder() { return 2; } -private: + private: G4int fNumberOfVariables ; - // scratch space G4double* dydxTemp; G4double* dydxTemp2; G4double* yTemp; + // scratch space }; #endif /* G4SIMPLERUNGE_HH */ diff --git a/source/geometry/magneticfield/include/G4UniformElectricField.hh b/source/geometry/magneticfield/include/G4UniformElectricField.hh index 3a5ccf0757..8891197b6f 100644 --- a/source/geometry/magneticfield/include/G4UniformElectricField.hh +++ b/source/geometry/magneticfield/include/G4UniformElectricField.hh @@ -5,17 +5,21 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4UniformElectricField.hh,v 1.2 1999/12/15 14:49:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4UniformElectricField.hh,v 1.3 2000/04/27 09:14:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // +// class G4UniformElectricField // -// Class for creation of Uniform Magnetic Field +// Class description: // -// 30.1.97 V.Grichine -// 1.8.97 J.Apostolakis, cleanup, new 3-vector constructor, -// and removal of helix-stepper (to separate file) -// 5.11.97 G.Cosmo, added copy constructor and assignment operator. +// Class for creation of Uniform electric Magnetic Field. + +// History: +// - 30.01.97 V.Grichine, Created. +// - 01.08.97 J.Apostolakis, cleanup, new 3-vector constructor, +// and removal of helix-stepper (to separate file). +// - 05.11.97 G.Cosmo, added copy constructor and assignment operator. #ifndef G4UNIFORMELECTRICFIELD_HH #define G4UNIFORMELECTRICFIELD_HH @@ -27,29 +31,26 @@ class G4UniformElectricField : public G4ElectroMagneticField { -public: - // A field with value equal to FieldVector - // - G4UniformElectricField(const G4ThreeVector FieldVector ); + public: // with description - G4UniformElectricField(G4double vField, + G4UniformElectricField(const G4ThreeVector FieldVector ); + // A field with value equal to FieldVector. + + G4UniformElectricField(G4double vField, G4double vTheta, G4double vPhi ) ; - ~G4UniformElectricField() ; + ~G4UniformElectricField() ; - // Copy constructor and assignment operator - // - G4UniformElectricField(const G4UniformElectricField &p); - G4UniformElectricField& operator = (const G4UniformElectricField &p); + G4UniformElectricField(const G4UniformElectricField &p); + G4UniformElectricField& operator = (const G4UniformElectricField &p); + // Copy constructor and assignment operator - void GetFieldValue(const G4double position[] , - G4double B[] ) const ; + void GetFieldValue(const G4double position[] , + G4double B[] ) const ; -protected: - -private: + private: G4double fFieldComponents[6] ; -} ; +}; #endif diff --git a/source/geometry/magneticfield/include/G4UniformMagField.hh b/source/geometry/magneticfield/include/G4UniformMagField.hh index 0857b8214f..19f0997dc2 100644 --- a/source/geometry/magneticfield/include/G4UniformMagField.hh +++ b/source/geometry/magneticfield/include/G4UniformMagField.hh @@ -5,17 +5,21 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4UniformMagField.hh,v 1.2 1999/12/15 14:49:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4UniformMagField.hh,v 1.3 2000/04/27 09:14:07 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // +// class G4UniformMagField // -// Class for creation of Uniform Magnetic Field +// Class description: // -// 30.1.97 V.Grichine -// 1.8.97 J.Apostolakis, cleanup, new 3-vector constructor, -// and removal of helix-stepper (to separate file) -// 5.11.97 G.Cosmo, added copy constructor and assignment operator. +// Class for creation of Uniform Magnetic Field. + +// History: +// - 30.01.97 V.Grichine, Created. +// - 01.08.97 J.Apostolakis, cleanup, new 3-vector constructor, +// and removal of helix-stepper (to separate file). +// - 05.11.97 G.Cosmo, added copy constructor and assignment operator. #ifndef G4UNIFORMMAGFIELD_HH #define G4UNIFORMMAGFIELD_HH @@ -27,32 +31,31 @@ class G4UniformMagField : public G4MagneticField { -public: - // A field with value equal to FieldVector - // - G4UniformMagField(const G4ThreeVector& FieldVector ); + public: // with description + + G4UniformMagField(const G4ThreeVector& FieldVector ); + // A field with value equal to FieldVector. - G4UniformMagField(G4double vField, - G4double vTheta, - G4double vPhi ) ; + G4UniformMagField(G4double vField, + G4double vTheta, + G4double vPhi ) ; - ~G4UniformMagField() ; + ~G4UniformMagField() ; - // Copy constructor and assignment operator - // - G4UniformMagField(const G4UniformMagField &p); - G4UniformMagField& operator = (const G4UniformMagField &p); + G4UniformMagField(const G4UniformMagField &p); + G4UniformMagField& operator = (const G4UniformMagField &p); + // Copy constructor and assignment operator. - void GetFieldValue(const G4double yTrack[3] , - G4double *MagField ) const ; + void GetFieldValue(const G4double yTrack[3] , + G4double *MagField ) const ; - void SetFieldValue( const G4ThreeVector& newFieldValue ); + void SetFieldValue( const G4ThreeVector& newFieldValue ); - // Return the field value - G4ThreeVector GetConstantFieldValue() const; + G4ThreeVector GetConstantFieldValue() const; + // Return the field value -private: + private: G4double fFieldComponents[3] ; -} ; +}; #endif diff --git a/source/geometry/magneticfield/src/G4CashKarpRKF45.cc b/source/geometry/magneticfield/src/G4CashKarpRKF45.cc index 0dbd3f90eb..7f50695a4e 100644 --- a/source/geometry/magneticfield/src/G4CashKarpRKF45.cc +++ b/source/geometry/magneticfield/src/G4CashKarpRKF45.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4CashKarpRKF45.cc,v 1.4 1999/12/15 14:49:48 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // The Cash-Karp Runge-Kutta-Fehlberg 4/5 method is an embedded fourth // order method (giving fifth-order accuracy) for the solution diff --git a/source/geometry/magneticfield/src/G4ChordFinder.cc b/source/geometry/magneticfield/src/G4ChordFinder.cc index ec20e07ab6..3757916da3 100644 --- a/source/geometry/magneticfield/src/G4ChordFinder.cc +++ b/source/geometry/magneticfield/src/G4ChordFinder.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ChordFinder.cc,v 1.9 1999/12/15 14:49:48 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ChordFinder.cc,v 1.14 2000/05/11 17:34:32 japost Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // 25.02.97 John Apostolakis, design and implimentation @@ -19,6 +19,7 @@ // #include "G4Field.hh" // #include "G4MagIntegratorStepper.hh" #include "G4MagIntegratorDriver.hh" +#include "g4std/iomanip" // For the moment fDeltaChord is a constant! @@ -35,6 +36,7 @@ G4ChordFinder::G4ChordFinder( G4MagneticField* theMagField, // by creating in inverse order the Driver, the Stepper and EqRhs ... // G4Mag_EqRhs * fEquation = new G4Mag_UsualEqRhs(theMagField); // Should move q, p to + fLastStepEstimate_Unconstrained = DBL_MAX; //G4FieldTrack ?? // --->> Charge Q = 0 // --->> Momentum P = 1 NOMINAL VALUES !!!!!!!!!!!!!!!!!! @@ -80,7 +82,7 @@ G4ChordFinder::AdvanceChordLimited( G4FieldTrack& yCurrent, #ifdef G4VERBOSE if( dbg ) - G4cerr << "Entered FindNextChord Limited with:\n yCurrent: " << yCurrent + G4cerr << "Entered AdvanceChordLimited with:\n yCurrent: " << yCurrent << " and initial Step=stepMax=" << stepMax << " mm. " << G4endl; #endif @@ -114,6 +116,8 @@ G4ChordFinder::AdvanceChordLimited( G4FieldTrack& yCurrent, return stepPossible; } +// #define TEST_CHORD_PRINT 1 + // .............................................................................. G4double @@ -127,7 +131,7 @@ G4ChordFinder::FindNextChord( const G4FieldTrack yStart, { // G4int stepRKnumber=0; G4FieldTrack yCurrent= yStart; - G4double stepTrial= stepMax; + G4double stepTrial; G4double dydx[G4FieldTrack::ncompSVEC]; // 1.) Try to "leap" to end of interval @@ -135,55 +139,115 @@ G4ChordFinder::FindNextChord( const G4FieldTrack yStart, // 2a.) If d_chord is not good enough, find one that is. G4bool validEndPoint= false, dbg= false; - G4double dChordStep; + G4double dChordStep, oldStepTrial, stepOfLastGoodChord; fIntgrDriver-> GetDerivatives( yCurrent, dydx ) ; + G4int noTrials=0; + + stepTrial = G4std::min( stepMax, + (1-perThousand)*fLastStepEstimate_Unconstrained ); + do { + G4double stepForChord; // , stepForAccuracy; + yCurrent = yStart; // Always start from initial point fIntgrDriver->QuickAdvance( yCurrent, dydx, stepTrial, dChordStep, dyErr); -#ifdef G4VERBOSE - if( dbg ) { - G4cerr << "Returned from QuickAdvance with: yCur=" << yCurrent << G4endl; - G4cerr << " dChordStep= "<< dChordStep <<" dyErr=" << dyErr << G4endl; - } -#endif + // First debug print // We check whether the criterion is met here. validEndPoint = AcceptableMissDist(dChordStep); // && (dyErr < eps) ; - if( ! validEndPoint ) { - // This is needed to decide new step size until QuickAdvance does it - stepTrial = NewStep(stepTrial, dChordStep ); + oldStepTrial = stepTrial; - // Get the driver to calculate the new step size, if it is needed - // stepTrial= fIntgrDriver->ComputeNewStepSize( dyErr/epsStep, stepTrial); -#ifdef G4VERBOSE - if( dbg ) - G4cerr << "Dchord too big. Trying new hstep=" << stepTrial << G4endl; + // This method estimates to step size for a good chord. + stepForChord = NewStep(stepTrial, dChordStep, fLastStepEstimate_Unconstrained ); + + if( ! validEndPoint ) { + stepTrial = stepForChord; +#if 0 + // Possible complementary approach: + // Get the driver to calculate the new step size, if it is needed + stepForAccuracy = fIntgrDriver->ComputeNewStepSize( dyErr/(epsStep*oldStepTrial), + stepTrial); + stepTrial = G4std::min(stepForChord, stepForAccuracy); #endif + + // if(dbg) G4cerr<<"Dchord too big. Try new hstep="<point ?") ; + } + else + { + inverse_square_distAB=1.0 / distABsquared ; + } } G4double G4LineSection::Dist( G4ThreeVector OtherPnt ) const @@ -36,23 +44,31 @@ G4double G4LineSection::Dist( G4ThreeVector OtherPnt ) const unit_projection= inner_prod * InvsqDistAB(); if( (0. <= unit_projection ) && (unit_projection <= 1.0 ) ) - dist_sq= sq_VecAZ - unit_projection * inner_prod; - else{ + { + 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. ) { + + if( unit_projection < 0. ) + { // A is the closest point dist_sq= sq_VecAZ; - }else{ + } + else + { // B is the closest point + G4ThreeVector EndpointB = EndpointA + VecAtoB; G4ThreeVector VecBZ = OtherPnt - EndpointB; dist_sq = VecBZ.mag2(); } } + if( dist_sq < 0.0 ) dist_sq = 0.0 ; - return sqrt(dist_sq); + return sqrt(dist_sq) ; } G4double G4LineSection::Distline( const G4ThreeVector& OtherPnt, diff --git a/source/geometry/magneticfield/src/G4MagErrorStepper.cc b/source/geometry/magneticfield/src/G4MagErrorStepper.cc index ac889a5656..8f05c22112 100644 --- a/source/geometry/magneticfield/src/G4MagErrorStepper.cc +++ b/source/geometry/magneticfield/src/G4MagErrorStepper.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MagErrorStepper.cc,v 1.6 1999/12/15 14:49:49 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MagErrorStepper.cc,v 1.7 2000/05/09 11:41:00 japost Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4MagErrorStepper.hh" #include "G4ThreeVector.hh" @@ -61,11 +61,26 @@ G4MagErrorStepper::Stepper( const G4double yInput[], G4double G4MagErrorStepper::DistChord() const { - // Soon: must check whether h/R > 2 pi !! - // Method below is good only for < 2 pi + // Estimate the maximum distance from the curve to the chord + // + // We estimate this using the distance of the midpoint to + // chord (the line between + // + // Method below is good only for angle deviations < 2 pi, + // This restriction should not a problem for the Runge cutta methods, + // which generally cannot integrate accurately for large angle deviations. + G4double distLine, distChord; - return G4LineSection::Distline( fMidPoint, fInitialPoint, fFinalPoint ); - // This is a class method that gives distance of Mid - // from the Chord between the Initial and Final points. + if (fInitialPoint != fFinalPoint) { + distLine= G4LineSection::Distline( fMidPoint, fInitialPoint, fFinalPoint ); + // This is a class method that gives distance of Mid + // from the Chord between the Initial and Final points. + + distChord = distLine; + }else{ + distChord = (fMidPoint-fInitialPoint).mag(); + } + + return distChord; } diff --git a/source/geometry/magneticfield/src/G4MagHelicalStepper.cc b/source/geometry/magneticfield/src/G4MagHelicalStepper.cc index 4822f06354..6d5470b402 100644 --- a/source/geometry/magneticfield/src/G4MagHelicalStepper.cc +++ b/source/geometry/magneticfield/src/G4MagHelicalStepper.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MagHelicalStepper.cc,v 1.3 1999/12/15 14:49:49 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MagHelicalStepper.cc,v 1.4 2000/04/12 18:29:26 japost Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4MagHelicalStepper.hh" #include "G4ThreeVector.hh" @@ -27,14 +27,14 @@ G4MagHelicalStepper::G4MagHelicalStepper(G4Mag_EqRhs *EqRhs) void G4MagHelicalStepper::AdvanceHelix( const G4double yIn[], - const G4double Barr[], - const G4double h, - G4double yHelix[]) + G4ThreeVector Bfld, + G4double h, + G4double yHelix[]) { // const G4int nvar = 6; const G4double approc_limit = 0.05; - G4ThreeVector Bfld, Bnorm, B_x_P, vperp, vpar; + G4ThreeVector Bnorm, B_x_P, vperp, vpar; // G4double norm; G4double B_d_P; // B_perp; G4double Theta; // , Theta_1; @@ -42,8 +42,7 @@ G4MagHelicalStepper::AdvanceHelix( const G4double yIn[], G4double CosT2, SinT2, CosT, SinT; G4ThreeVector positionMove, endTangent; - Bfld= G4ThreeVector( Barr[0], Barr[1], Barr[2]); - G4double Bmag = Bfld.mag(); + G4double Bmag = Bfld.mag(); const G4double *pIn = yIn+3; G4ThreeVector initTangent= G4ThreeVector( pIn[0], pIn[1], pIn[2]); @@ -137,7 +136,8 @@ G4MagHelicalStepper::Stepper( const G4double yInput[], // correction for Richardson Extrapolation. G4double correction = 1. / ( (1 << IntegratorOrder()) -1 ); - G4double yTemp[7], dydxTemp[6], yIn[7] ; + G4double yTemp[7], yIn[7] ; + G4ThreeVector Bfld_initial, Bfld_midpoint; // Saving yInput because yInput and yOut can be aliases for same array @@ -145,26 +145,35 @@ G4MagHelicalStepper::Stepper( const G4double yInput[], G4double h = hstep * 0.5; + MagFieldEvaluate(yIn, Bfld_initial) ; + // Do two half steps + DumbStepper(yIn, Bfld_initial, h, yTemp); + MagFieldEvaluate(yTemp, Bfld_midpoint) ; + DumbStepper(yTemp, Bfld_midpoint, h, yOut); - DumbStepper(yIn,dydx,h,yTemp); - MagFieldEvaluate(yTemp,dydxTemp) ; // Was : RightHandSide(,) - DumbStepper(yTemp,dydxTemp,h,yOut); - - // Store midpoint, chord calculation - + // Store midpoint, to aid distance-from-chord calculation yMidPoint = G4ThreeVector( yTemp[0], yTemp[1], yTemp[2]); // Do a full Step h = hstep ; - DumbStepper(yIn,dydx,h,yTemp); + DumbStepper(yIn, Bfld_initial, h, yTemp); + + for(i=0;i 1 ) { + // It is unclear whether it is possible to + // use the Richardson Extrapolation to increase accuracey by 1 order + for(i=0;i= h*(1.+perMillion) ){ - WarnEndPointTooFar ( endPointDist, h, eps, dbg ); + // Issue a warning only for gross differences - + // we understand how small difference occur. + if( endPointDist >= h*(1.+perThousand) ){ + WarnEndPointTooFar ( endPointDist, h, eps, dbg ); + } noBadSteps ++; } else { // ie (!dbg) noGoodSteps ++; } -#endif +// #endif // Check the proposed next stepsize if(fabs(hnext) <= Hmin()) diff --git a/source/geometry/magneticfield/src/G4MagIntegratorStepper.cc b/source/geometry/magneticfield/src/G4MagIntegratorStepper.cc index b86322b354..0ff744f272 100644 --- a/source/geometry/magneticfield/src/G4MagIntegratorStepper.cc +++ b/source/geometry/magneticfield/src/G4MagIntegratorStepper.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4MagIntegratorStepper.cc,v 1.3 1999/12/15 14:49:49 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4MagIntegratorStepper.hh" diff --git a/source/geometry/magneticfield/src/G4Mag_EqRhs.cc b/source/geometry/magneticfield/src/G4Mag_EqRhs.cc index c7f03c550c..c6eec36f42 100644 --- a/source/geometry/magneticfield/src/G4Mag_EqRhs.cc +++ b/source/geometry/magneticfield/src/G4Mag_EqRhs.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Mag_EqRhs.cc,v 1.2 1999/12/15 14:49:49 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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_UsualEqRhs.cc b/source/geometry/magneticfield/src/G4Mag_UsualEqRhs.cc index 54da2e92c8..136010652f 100644 --- a/source/geometry/magneticfield/src/G4Mag_UsualEqRhs.cc +++ b/source/geometry/magneticfield/src/G4Mag_UsualEqRhs.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Mag_UsualEqRhs.cc,v 1.2 1999/12/15 14:49:49 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // This is the standard right-hand side for equation of motion. diff --git a/source/geometry/magneticfield/src/G4RKG3_Stepper.cc b/source/geometry/magneticfield/src/G4RKG3_Stepper.cc index 42696d81ff..d57fc64141 100644 --- a/source/geometry/magneticfield/src/G4RKG3_Stepper.cc +++ b/source/geometry/magneticfield/src/G4RKG3_Stepper.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4RKG3_Stepper.cc,v 1.2 1999/12/15 14:49:49 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4RKG3_Stepper.cc,v 1.3 2000/05/09 11:54:23 japost Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4RKG3_Stepper.hh" #include "G4ThreeVector.hh" @@ -93,7 +93,7 @@ void G4RKG3_Stepper::StepWithEst( const G4double tIn[7], { - G4Exception(" G4ClassicalRK4::StepWithEst ERROR: this Method is no longer used."); + G4Exception(" G4RKG3_Stepper::StepWithEst ERROR: this Method is no longer used."); #if 0 // const G4int nvar = 6 ; @@ -180,10 +180,9 @@ void G4RKG3_Stepper::StepNoErr(const G4double tIn[7], G4double tTemp[7], yderiv[6] ; G4int i ; - G4Exception(" G4ClassicalRK4::StepNoErr ERROR: this Method should no longer be used."); - - -#if 0 +#ifdef END_CODE_G3STEPPER + G4Exception(" G4RKG3_Stepper::StepNoErr ERROR: this Method should no longer be used."); +#else // GetEquationOfMotion()->EvaluateRhsReturnB(tIn,dydx,B1) ; for(i=0;i<3;i++) diff --git a/source/geometry/magneticfield/src/G4SimpleHeum.cc b/source/geometry/magneticfield/src/G4SimpleHeum.cc index 524dff2735..39bea6dc7a 100644 --- a/source/geometry/magneticfield/src/G4SimpleHeum.cc +++ b/source/geometry/magneticfield/src/G4SimpleHeum.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4SimpleHeum.cc,v 1.3 1999/12/15 14:49:49 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 03ad6b98bc..0365cd6632 100644 --- a/source/geometry/magneticfield/src/G4SimpleRunge.cc +++ b/source/geometry/magneticfield/src/G4SimpleRunge.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4SimpleRunge.cc,v 1.2 1999/12/15 14:49:50 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // Simple Runge: // diff --git a/source/geometry/magneticfield/src/G4UniformElectricField.cc b/source/geometry/magneticfield/src/G4UniformElectricField.cc index 666ed0cb2e..0daf3d0d50 100644 --- a/source/geometry/magneticfield/src/G4UniformElectricField.cc +++ b/source/geometry/magneticfield/src/G4UniformElectricField.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UniformElectricField.cc,v 1.2 1999/12/15 14:49:50 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // diff --git a/source/geometry/magneticfield/src/G4UniformMagField.cc b/source/geometry/magneticfield/src/G4UniformMagField.cc index 27c74b6dba..3e5677b355 100644 --- a/source/geometry/magneticfield/src/G4UniformMagField.cc +++ b/source/geometry/magneticfield/src/G4UniformMagField.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UniformMagField.cc,v 1.2 1999/12/15 14:49:50 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // diff --git a/source/geometry/management/History b/source/geometry/management/History index d9e683d1f3..95fb97794d 100644 --- a/source/geometry/management/History +++ b/source/geometry/management/History @@ -1,4 +1,4 @@ -$Id: History,v 1.7 2000/01/19 19:07:04 gcosmo Exp $ +$Id: History,v 1.10 2000/06/06 13:18:51 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,23 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +June 06, 2000 G.Cosmo geommng-V01-01-00 + +- G4DrawVoxels.hh: removed line '#define G4DrawVoxelsDebug' left in place + accidentally in the code... + +April 20, 2000 G. Cosmo + +- Reorganised comments for the Software Reference Manual. +- Moved inlined definition to .icc files, where needed. + Created: G4SmartVoxelHeader.icc, G4SmartVoxelNode.icc, + G4SmartVoxelProxy.icc, G4VoxelLimits.icc. + +April 11, 2000 J. Allison + +- Made virtual G4VisExtent G4VSolid::GetExtent() non-pure and implemented + a default in terms of CalculateExtent. + January 19, 00 G. Cosmo geommng-V01-00-00 Syncronized file versioning with HEAD (several CVS headers changed diff --git a/source/geometry/management/include/G4AffineTransform.hh b/source/geometry/management/include/G4AffineTransform.hh index ca9879170e..8055f1ed02 100644 --- a/source/geometry/management/include/G4AffineTransform.hh +++ b/source/geometry/management/include/G4AffineTransform.hh @@ -5,11 +5,13 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AffineTransform.hh,v 1.2 1999/12/15 14:49:50 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AffineTransform.hh,v 1.3 2000/04/20 16:49:46 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// class G4AffineTransform Header File +// class G4AffineTransform +// +// Class description: // // A class for geometric affine transformations [see, eg. Foley & Van Dam] // Supports efficient arbitrary rotation & transformation of vectors and the @@ -17,20 +19,19 @@ // maintained internally for greater computational efficiency for transforms // that do not involve rotation. // -// Interfaces to the GEANT4 modified CLHEP classes G4ThreeVector & -// G4RotationMatrix +// Interfaces to the CLHEP classes G4ThreeVector & G4RotationMatrix // // For member function descriptions, see comments by declarations. For // additional clarification, also check the `const' declarations for // functions & their parameters. // -// Private Member data: +// Member data: // // G4double rxx,rxy,rxz; // G4double ryx,ryy,ryz; A 3x3 rotation matrix - net rotation // G4double rzx,rzy,rzz; // G4double tx,ty,tz; Net translation -// + // History: // Paul R C Kent 6 Aug 1996 - initial version // @@ -49,126 +50,103 @@ class G4AffineTransform { + public: - G4AffineTransform(); -// Translation only: Under t'form translate point at origin by tlate + G4AffineTransform(); - G4AffineTransform(const G4ThreeVector &tlate); - -// Rotation only: Under t'form rotate by rot +public: // with description - G4AffineTransform(const G4RotationMatrix &rot); - -// Under t'form: Rotate by rot then translate by tlate + G4AffineTransform(const G4ThreeVector &tlate); + // Translation only: under t'form translate point at origin by tlate - G4AffineTransform(const G4RotationMatrix &rot, - const G4ThreeVector &tlate); + G4AffineTransform(const G4RotationMatrix &rot); + // Rotation only: under t'form rotate by rot + + G4AffineTransform(const G4RotationMatrix &rot, + const G4ThreeVector &tlate); + // Under t'form: rotate by rot then translate by tlate + + G4AffineTransform(const G4RotationMatrix *rot, + const G4ThreeVector &tlate); + // Optionally rotate by *rot then translate by tlate - rot may be null -// Optionally rotate by *rot then translate by tlate - rot may be null + G4AffineTransform operator * (const G4AffineTransform &tf) const; + // Compound Transforms: + // tf2=tf2*tf1 equivalent to tf2*=tf1 + // Returns compound transformation of self*tf - G4AffineTransform(const G4RotationMatrix *rot, - const G4ThreeVector &tlate); - - -// NOTE: Compound Transforms -// -// tf2=tf2*tf1 equivalent to tf2*=tf1 -// -// Returns compound transformation of self*tf + G4AffineTransform& operator *= (const G4AffineTransform &tf); + // (Modifying) Multiplies self by tf; Returns self reference + // ie. A=AB for a*=b - G4AffineTransform operator * (const G4AffineTransform &tf) const; + + G4AffineTransform& Product(const G4AffineTransform &tf1, + const G4AffineTransform &tf2); + // 'Products' for avoiding (potential) temporaries: + // c.Product(a,b) equivalent to c=a*b + // c.InverseProduct(a*b,b ) equivalent to c=a + // (Modifying) Sets self=tf1*tf2; Returns self reference + + G4AffineTransform& InverseProduct(const G4AffineTransform &tf1, + const G4AffineTransform &tf2); + // (Modifying) Sets self=tf1*(tf2^-1); Returns self reference + + G4ThreeVector TransformPoint(const G4ThreeVector &vec) const; + // Transform the specified point: returns vec*rot+tlate + + G4ThreeVector TransformAxis(const G4ThreeVector &axis) const; + // Transform the specified axis: returns -// (Modifying) Multiplies self by tf; Returns self reference -// ie. A=AB for a*=b - - G4AffineTransform& operator *= (const G4AffineTransform &tf); + void ApplyPointTransform(G4ThreeVector &vec) const; + // Transform the specified point (in place): sets vec=vec*rot+tlate + void ApplyAxisTransform(G4ThreeVector &axis) const; + // Transform the specified axis (in place): sets axis=axis*rot; -// 'Products' for avoiding (potential) temporaries -// -// c.Product(a,b) equivalent to c=a*b -// -// c.InverseProduct(a*b,b ) equivalent to c=a -// -// (Modifying) Sets self=tf1*tf2; Returns self reference + G4AffineTransform Inverse() const; + // Return inverse of current transform - G4AffineTransform& Product(const G4AffineTransform &tf1, - const G4AffineTransform &tf2); - -// (Modifying) Sets self=tf1*(tf2^-1); Returns self reference + G4AffineTransform& Invert(); + // (Modifying) Sets self=inverse of self; Returns self reference - G4AffineTransform& InverseProduct(const G4AffineTransform &tf1, - const G4AffineTransform &tf2); - -// Transform the specified point: returns vec*rot+tlate + G4AffineTransform& operator +=(const G4ThreeVector &tlate); + G4AffineTransform& operator -=(const G4ThreeVector &tlate); + // (Modifying) Adjust net translation by given vector; + // Returns self reference - G4ThreeVector TransformPoint(const G4ThreeVector &vec) const; - -// Transform the specified axis: returns + G4bool operator == (const G4AffineTransform &tf) const; + G4bool operator != (const G4AffineTransform &tf) const; - G4ThreeVector TransformAxis(const G4ThreeVector &axis) const; - -// Transform the specified point (in place): sets vec=vec*rot+tlate + G4double operator [] (const G4int n) const; - void ApplyPointTransform(G4ThreeVector &vec) const; - -// Transform the specified axis (in place): sets axis=axis*rot; + G4bool IsRotated() const; + // True if transform includes rotation - void ApplyAxisTransform(G4ThreeVector &axis) const; + G4bool IsTranslated() const; + // True if transform includes translation -// Return inverse of current transform + G4RotationMatrix NetRotation() const; - G4AffineTransform Inverse() const; + G4ThreeVector NetTranslation() const; -// (Modifying) Sets self=inverse of self; Returns self reference + void SetNetRotation(const G4RotationMatrix &rot); - G4AffineTransform& Invert(); - -// (Modifying) Adjust net translation by given vector; Returns self reference - - G4AffineTransform& operator +=(const G4ThreeVector &tlate); - G4AffineTransform& operator -=(const G4ThreeVector &tlate); - - G4bool operator == (const G4AffineTransform &tf) const; - G4bool operator != (const G4AffineTransform &tf) const; - - G4double operator [] (const G4int n) const; - -// True if transform includes rotation - - G4bool IsRotated() const; - -// Ture if transform includes translation - - G4bool IsTranslated() const; - - G4RotationMatrix NetRotation() const; - - G4ThreeVector NetTranslation() const; - - void SetNetRotation(const G4RotationMatrix &rot); - - void SetNetTranslation(const G4ThreeVector &tlate); + void SetNetTranslation(const G4ThreeVector &tlate); private: - G4AffineTransform( const G4double prxx,const G4double prxy,const G4double prxz, - const G4double pryx,const G4double pryy,const G4double pryz, - const G4double przx,const G4double przy,const G4double przz, - - const G4double ptx,const G4double pty,const G4double ptz ) ; - G4double rxx,rxy,rxz; - G4double ryx,ryy,ryz; - G4double rzx,rzy,rzz; - - G4double tx,ty,tz; + G4AffineTransform(const G4double prxx,const G4double prxy,const G4double prxz, + const G4double pryx,const G4double pryy,const G4double pryz, + const G4double przx,const G4double przy,const G4double przz, + const G4double ptx, const G4double pty, const G4double ptz ); + + G4double rxx,rxy,rxz; + G4double ryx,ryy,ryz; + G4double rzx,rzy,rzz; + G4double tx,ty,tz; }; #include "G4AffineTransform.icc" #endif - - - - diff --git a/source/geometry/management/include/G4AffineTransform.icc b/source/geometry/management/include/G4AffineTransform.icc index e338e7bcb0..f115a9dd50 100644 --- a/source/geometry/management/include/G4AffineTransform.icc +++ b/source/geometry/management/include/G4AffineTransform.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4AffineTransform.icc,v 1.3 1999/12/15 14:49:50 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // G4AffineTransformation Inline implementation diff --git a/source/geometry/management/include/G4DrawVoxels.hh b/source/geometry/management/include/G4DrawVoxels.hh index cec8c81d5e..1f6377fd01 100644 --- a/source/geometry/management/include/G4DrawVoxels.hh +++ b/source/geometry/management/include/G4DrawVoxels.hh @@ -5,32 +5,33 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DrawVoxels.hh,v 1.7 1999/12/15 14:49:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DrawVoxels.hh,v 1.9 2000/06/06 13:18:55 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4DrawVoxels // -// Implementation +// Class description: // -// Define G4DrawVoxelsDebug for debugging information on G4cout -// -// History: -// 03/08/1999 The G4VisAttributes have been made member data for lifetime reasons / visualisation L.G (see John Allison for further explanation) -// 29.07.99 first comitted version L.G. +// Utility class for the visualization of voxels in the detector geometry. +// Define G4DrawVoxelsDebug in the environment at compilation for debugging +// information printed to G4cout. +// History: +// 03/08/1999 The G4VisAttributes have been made member data for lifetime +// reasons / visualisation - L.G (ask John Allison for further +// explanation). +// 29/07/1999 First comitted version - L.G. #ifndef G4DrawVoxels_HH #define G4DrawVoxels_HH -//***********what I need to use (include and forward declarations) FOR DRAWING VOXELS**************** +// *********** what I need to use (include and forward declarations) +// FOR DRAWING VOXELS **************** #include "G4Colour.hh" #include "G4VisAttributes.hh" #include "G4PlacedPolyhedron.hh" //#include "G4Polyhedron.hh" included -//#include -//#include - #include "G4SmartVoxelHeader.hh" #include "G4VoxelLimits.hh" #include "G4AffineTransform.hh" @@ -38,17 +39,21 @@ #include "G4LogicalVolume.hh" #include "G4VSolid.hh" -#define voxel_width 0; +#define voxel_width 0 -#define G4DrawVoxelsDebug +// *********************************************************************** + +class G4DrawVoxels +{ + public: // with description -//*************************************************************************************************** -class G4DrawVoxels{ - public: - //constructor. It initialises the members data to default colors G4DrawVoxels(); + // Constructor. It initialises the members data to default colors + // Copy constructor and assignment operator not supported (array + // fvoxelcolours ...). + ~G4DrawVoxels(){}; - //Copy constructor Assignment operator not supported (array fvoxelcolours ...) + // Destructor NOT virtual. Not a base class. void DrawVoxels(const G4LogicalVolume* lv) const; G4PlacedPolyhedronList* CreatePlacedPolyhedra(const G4LogicalVolume*) const; @@ -57,7 +62,8 @@ class G4DrawVoxels{ void SetBoundingBoxVisAttributes(G4VisAttributes&); private: - //Member data + + // Member data G4VisAttributes fVoxelsVisAttributes[3]; G4VisAttributes fBoundingBoxVisAttributes; @@ -65,7 +71,8 @@ class G4DrawVoxels{ G4AffineTransform GetAbsoluteTransformation(const G4VPhysicalVolume*) const; - //Copy constructor Assignment operator not supported (array fvoxelcolours ...) + // Copy constructor Assignment operator not supported (array + // fvoxelcolours ...) G4DrawVoxels(const G4DrawVoxels&); G4DrawVoxels operator=(const G4DrawVoxels&); }; diff --git a/source/geometry/management/include/G4GeometryManager.hh b/source/geometry/management/include/G4GeometryManager.hh index fd4886f504..5dad040513 100644 --- a/source/geometry/management/include/G4GeometryManager.hh +++ b/source/geometry/management/include/G4GeometryManager.hh @@ -5,33 +5,23 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4GeometryManager.hh,v 1.2 1999/12/15 14:49:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4GeometryManager.hh,v 1.3 2000/04/20 16:49:46 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4GeometryManager // -// A class resposible for high level geometrical functions, and for +// Class description: +// +// A class responsible for high level geometrical functions, and for // high level objects in the geometry subdomain. -// The class is `singleton', with access via G4GeometryManager::GetInstance -// -// Member functions: -// -// G4bool CloseGeometry(G4bool pOptimise=true); -// Close (`lock') the geometry: perform sanity and `completion' checks -// and optionally [default=yes] Build optimisation information. -// -// void OpenGeometry(); -// Open (`unlock') the geometry and remove optimisation information if -// present. -// -// static G4GeometryManager* GetInstance() -// Return ptr to singleton instance of the class. +// The class is a `singleton', with access via the static method +// G4GeometryManager::GetInstance(). // // Member data: // -// static G4GeometryManager* fgInstance -// Ptr to the unique instance of class -// +// static G4GeometryManager* fgInstance +// - Ptr to the unique instance of class + // History: // 26.07.95 P.Kent Initial version, incuding optimisation Build @@ -51,14 +41,25 @@ class G4GeometryManager { -public: + public: // with description + G4bool CloseGeometry(G4bool pOptimise=true); + // Close (`lock') the geometry: perform sanity and `completion' checks + // and optionally [default=yes] build optimisation information. + void OpenGeometry(); - static G4GeometryManager* GetInstance(); + // Open (`unlock') the geometry and remove optimisation information if + // present. + + static G4GeometryManager* GetInstance(); + // Return ptr to singleton instance of the class. + + protected: -protected: G4GeometryManager(); -private: + + private: + void BuildOptimisations(const G4bool allOpt); void DeleteOptimisations(); @@ -67,5 +68,3 @@ private: }; #endif - - diff --git a/source/geometry/management/include/G4LogicalSurface.hh b/source/geometry/management/include/G4LogicalSurface.hh index ba1e405c42..7e57c46d73 100644 --- a/source/geometry/management/include/G4LogicalSurface.hh +++ b/source/geometry/management/include/G4LogicalSurface.hh @@ -5,22 +5,37 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LogicalSurface.hh,v 1.2 1999/12/15 14:49:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LogicalSurface.hh,v 1.3 2000/04/20 16:49:46 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // //////////////////////////////////////////////////////////////////////// -// G4LogicalSurface Definition +// Class G4LogicalSurface //////////////////////////////////////////////////////////////////////// // -// File: G4LogicalSurface.hh -// Description: An abstraction of a geometrical surface, it is an abstract -// base class for different implementations of surfaces. -// Its primary function is to hold pointers -// to objects that describe the surface's physical properties. -// For example it holds a pointer to a surface's optical -// properties, and because of this it is used in processes like -// G4OpBoundaryProcess. +// Class description: // +// An abstraction of a geometrical surface, it is an abstract +// base class for different implementations of surfaces. +// Its primary function is to hold pointers to objects that describe the +// surface's physical properties. For example it holds a pointer to a +// surface's optical properties, and because of this it is used in processes +// like G4OpBoundaryProcess. +// +// Methods: +// G4OpticalSurface* GetOpticalSurface() const +// void SetOpticalSurface(G4OpticalSurface*) +// +// G4String GetName() const +// void SetName(const G4String&) +// +// G4TransitionRadiationSurface* GetTransitionRadiationSurface() const +// void SetTransitionRadiationSurface(G4TransitionRadiationSurface*) +// +// Data members: +// G4String theName +// G4OpticalSurface* theOpticalSurface +// G4TransitionRadiationSurface* theTransRadSurface + // Version: 1.0 // Created: 1997, June, 4th to 17th // Author: John Apostolakis, (with help of Peter Gumplinger) @@ -38,7 +53,6 @@ ///////////// #include "globals.hh" -#include "templates.hh" class G4OpticalSurface; class G4TransitionRadiationSurface; @@ -52,59 +66,54 @@ class G4LogicalSurface //////////// // Methods //////////// -public: - G4OpticalSurface* GetOpticalSurface() const - { return theOpticalSurface; } + public: + G4OpticalSurface* GetOpticalSurface() const; + void SetOpticalSurface(G4OpticalSurface* ptrOpticalSurface); - void SetOpticalSurface(G4OpticalSurface* ptrOpticalSurface) - { theOpticalSurface= ptrOpticalSurface; } + G4String GetName() const; + void SetName(const G4String& name); - G4String GetName() const { return theName; } - void SetName(const G4String& name){theName = name;} - - G4TransitionRadiationSurface* GetTransitionRadiationSurface() const - { return theTransRadSurface; } - void SetTransitionRadiationSurface( G4TransitionRadiationSurface* transRadSurf ) - { theTransRadSurface= transRadSurf; } + G4TransitionRadiationSurface* GetTransitionRadiationSurface() const; + void SetTransitionRadiationSurface(G4TransitionRadiationSurface* transRadSurf); //////////////////////////////// // Constructors and Destructor //////////////////////////////// -protected: + protected: + // There should be no instances of this class - - G4LogicalSurface(const G4String& name, - G4OpticalSurface* opticalSurface); + G4LogicalSurface(const G4String& name, + G4OpticalSurface* opticalSurface); // Is the name more meaningful for the properties or the logical - // surface ? + // surface ? -public: - virtual ~G4LogicalSurface(); + public: + virtual ~G4LogicalSurface(); -private: - G4LogicalSurface(const G4LogicalSurface &right); // Copying restricted + private: + G4LogicalSurface(const G4LogicalSurface &right); // Copying restricted ////////////// // Operators ////////////// -public: - G4int operator==(const G4LogicalSurface &right) const; - G4int operator!=(const G4LogicalSurface &right) const; + public: + G4int operator==(const G4LogicalSurface &right) const; + G4int operator!=(const G4LogicalSurface &right) const; -private: - const G4LogicalSurface& operator=(const G4LogicalSurface& right); + private: + const G4LogicalSurface& operator=(const G4LogicalSurface& right); // ------------------ // Basic data members ( To define a 'logical' surface) // ------------------ -private: - G4String theName; // Surface name + private: + G4String theName; // Surface name - G4OpticalSurface* theOpticalSurface; - G4TransitionRadiationSurface* theTransRadSurface; + G4OpticalSurface* theOpticalSurface; + G4TransitionRadiationSurface* theTransRadSurface; }; //////////////////// diff --git a/source/geometry/management/include/G4LogicalSurface.icc b/source/geometry/management/include/G4LogicalSurface.icc index 88b5d5f058..f2292d03c8 100644 --- a/source/geometry/management/include/G4LogicalSurface.icc +++ b/source/geometry/management/include/G4LogicalSurface.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LogicalSurface.icc,v 1.2 1999/12/15 14:49:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LogicalSurface.icc,v 1.3 2000/04/20 16:49:46 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // //////////////////////////////////////////////////////////////////////// // Surface Class Inline Methods @@ -20,31 +20,70 @@ // //////////////////////////////////////////////////////////////////////// -// #include "G4ios.hh" - ///////////////////////// // Class Inline Methods ///////////////////////// +inline G4OpticalSurface* +G4LogicalSurface::GetOpticalSurface() const +{ + return theOpticalSurface; +} + +inline void +G4LogicalSurface::SetOpticalSurface(G4OpticalSurface* ptrOpticalSurface) +{ + theOpticalSurface = ptrOpticalSurface; +} + +inline G4String +G4LogicalSurface::GetName() const +{ + return theName; +} + +inline void +G4LogicalSurface::SetName(const G4String& name) +{ + theName = name; +} + +inline G4TransitionRadiationSurface* +G4LogicalSurface::GetTransitionRadiationSurface() const +{ + return theTransRadSurface; +} + +inline void +G4LogicalSurface::SetTransitionRadiationSurface(G4TransitionRadiationSurface* + transRadSurf ) +{ + theTransRadSurface= transRadSurf; +} + ////////////// // Operators ////////////// -inline const G4LogicalSurface & G4LogicalSurface::operator=(const G4LogicalSurface &right) +inline const G4LogicalSurface & +G4LogicalSurface::operator=(const G4LogicalSurface &right) { return right; } -inline G4int G4LogicalSurface::operator==(const G4LogicalSurface &right) const +inline G4int +G4LogicalSurface::operator==(const G4LogicalSurface &right) const { return (this == (G4LogicalSurface *) &right); } -inline G4int G4LogicalSurface::operator!=(const G4LogicalSurface &right) const +inline G4int +G4LogicalSurface::operator!=(const G4LogicalSurface &right) const { return (this != (G4LogicalSurface *) &right); } + ///////////////// // Constructors ///////////////// diff --git a/source/geometry/management/include/G4LogicalVolume.hh b/source/geometry/management/include/G4LogicalVolume.hh index bda51856b0..8ae4dea550 100644 --- a/source/geometry/management/include/G4LogicalVolume.hh +++ b/source/geometry/management/include/G4LogicalVolume.hh @@ -5,166 +5,68 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LogicalVolume.hh,v 1.4 1999/12/15 14:49:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LogicalVolume.hh,v 1.5 2000/04/20 16:49:46 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4LogicalVolume // +// Class description: +// // Represents a leaf node or unpositioned subtree in the geometry hierarchy. // Logical volumes are named, and may have daughters ascribed to them. // They are responsible for retrieval of the physical and tracking attributes -// of the physical volume that it represents: Solid, material, magnetic field, -// and optionally: user limits, sensitive detectors. +// of the physical volume that it represents: solid, material, magnetic field, +// and optionally, user limits, sensitive detectors. // -// Get and Set functionality is provided for all atributes, but note that +// Get and Set functionality is provided for all attributes, but note that // most set functions should not be used when the geometry is `closed'. // As a further development, `Guard' checks can be added to ensure // only legal operations at tracking time. // -// On construction, solid, material and name must be specified -// +// On construction, solid, material and name must be specified. // // Daughters are ascribed and managed by means of a simple -// GetNoDaughters,Get&SetDaughter(n),AddDaughter interface +// GetNoDaughters,Get&SetDaughter(n),AddDaughter interface. // // Smart voxels as used for tracking optimisation are also an attribute. // // Logical volumes self register to the logical volume Store on construction, // and deregister on destruction. // -// NOTE: This class is currently *NOT* subclassed. If subclassed make -// destructor virtual. +// NOTE: This class is currently *NOT* subclassed, since not meant to +// act as a base class. Therefore, the destructor is NOT virtual. // -// Member functions: -// -// G4LogicalVolume(const G4VSolid *pSolid, const G4Material *pMaterial, -// const G4String& name, -// const G4MagneticField *pField=0, -// const G4VSensitiveDetector *pSDetector=0, -// const G4UserLimits *pULimits=0) -// -// Constructor. The solid and material pointer must be non null. The -// parameters for field, detector and user limits are optional. -// The volume also enters itself into the logical volume Store. -// -// ~G4LogicalVolume() -// Destructor. Removes the logical volume from the logical volume Store. -// -// G4String GetName() const -// Returns name of logical volume -// void SetName(const G4String& pName) -// Sets name of logical volume -// -// G4int GetNoDaughters() const -// Returns the number of daughters (0 to n) -// G4VPhysicalVolume* GetDaughter(const G4int i) const -// Return the ith daughter. Note numbering starts from 0, and no bounds -// checkingis performed. -// void SetDaughter(const G4int i,G4VPhysicalVolume* p) -// Set the ith daughter to be p, where 0<=i fDaughters -// Vector of daughters. Given initial size of 0. -// G4FieldManager *fFieldManager -// Pointer (possibly NULL) to (magnetic or other) field manager object -// G4Material *fMaterial -// Pointer to material at this node -// G4String fName -// Name of logical volume -// G4SensitiveDetector *fSensitiveDetector -// Pointer (possibly NULL) to `Hit' object -// G4VSolid *fSolid -// Pointer to solid -// G4UserLimits *fUserLimits -// Pointer (possibly NULL) to user Step limit object for this node -// G4VoxelHeader *fVoxel -// Pointer (possibly NULL) to optimisation info objects -// G4double smartless -// Quality for optimisation, average number of voxels to be spent per content -// G4FastSimulationManager *fFastSimulationManager -// Pointer (possibly NULL) to G4FastSimulationManager object -// G4bool fIsEnvelope -// Flags if the Logical Volume is an envelope for a FastSimulationManager. -// G4double fBiasWeight -// weight used in the event biasing technique +// Data members: // +// G4RWTPtrOrderedVector fDaughters +// - Vector of daughters. Given initial size of 0. +// G4FieldManager *fFieldManager +// - Pointer (possibly NULL) to (magnetic or other) field manager object. +// G4Material *fMaterial +// - Pointer to material at this node. +// G4String fName +// - Name of logical volume. +// G4VSensitiveDetector *fSensitiveDetector +// - Pointer (possibly NULL) to `Hit' object. +// G4VSolid *fSolid +// - Pointer to solid. +// G4UserLimits *fUserLimits +// - Pointer (possibly NULL) to user Step limit object for this node. +// G4SmartVoxelHeader *fVoxel +// - Pointer (possibly NULL) to optimisation info objects. +// G4double fSmartless +// - Quality for optimisation, average number of voxels to be spent +// per content. +// const G4VisAttributes* fVisAttributes +// - Pointer (possibly NULL) to visualization attributes. +// G4FastSimulationManager *fFastSimulationManager +// - Pointer (possibly NULL) to G4FastSimulationManager object. +// G4bool fIsEnvelope +// - Flags if the Logical Volume is an envelope for a FastSimulationManager. +// G4double fBiasWeight +// - Weight used in the event biasing technique. + // History: // 12.02.99 S.Giani: Added user defined optimisation quality // 09.11.98 J. Apostolakis: Changed G4MagneticField to G4FieldManager @@ -195,79 +97,139 @@ class G4FastSimulationManager; class G4LogicalVolume { -public: + public: // with description + G4LogicalVolume(G4VSolid *pSolid, G4Material *pMaterial, const G4String& name, G4FieldManager *pFieldMgr=0, G4VSensitiveDetector *pSDetector=0, G4UserLimits *pULimits=0); + // Constructor. The solid and material pointer must be non null. The + // parameters for field, detector and user limits are optional. + // The volume also enters itself into the logical volume Store. ~G4LogicalVolume(); + // Destructor. Removes the logical volume from the logical volume Store. + // NOT virtual, since not meant to act as base class. G4String GetName() const; void SetName(const G4String& pName); + // Returns and sets the name of the logical volume. G4int GetNoDaughters() const; + // Returns the number of daughters (0 to n). G4VPhysicalVolume* GetDaughter(const G4int i) const; + // Return the ith daughter. Note numbering starts from 0, + // and no bounds checking is performed. void AddDaughter(G4VPhysicalVolume* p); + // Add the volume p as a daughter of the current logical volume. G4bool IsDaughter(const G4VPhysicalVolume* p) const; + // Returns true is the volume p is a daughter of the current + // logical volume. void RemoveDaughter(const G4VPhysicalVolume* p); + // Remove the volume p from the List of daughter of the current + // logical volume. G4VSolid* GetSolid() const; void SetSolid(G4VSolid *pSolid); - + // Gets and sets the current solid. + G4Material* GetMaterial() const; void SetMaterial(G4Material *pMaterial); + // Gets and sets the current material. G4FieldManager* GetFieldManager() const; + // Gets current FieldManager. void SetFieldManager(G4FieldManager *pFieldMgr, G4bool forceToAllDaughters); + // Sets FieldManager and propagates it: + // i) only to daughters with G4FieldManager = 0 + // if forceToAllDaughters=false + // ii) to all daughters + // if forceToAllDaughters=true G4VSensitiveDetector* GetSensitiveDetector() const; + // Gets current SensitiveDetector. void SetSensitiveDetector(G4VSensitiveDetector *pSDetector); + // Sets SensitiveDetector (can be NULL). G4UserLimits* GetUserLimits() const; void SetUserLimits(G4UserLimits *pULimits); + // Gets and sets current UserLimits. G4SmartVoxelHeader* GetVoxelHeader() const; void SetVoxelHeader(G4SmartVoxelHeader *pVoxel); + // Gets and sets current VoxelHeader. G4double GetSmartless(); void SetSmartless(G4double s); - + // Gets and sets user defined optimisation quality. + G4bool operator == ( const G4LogicalVolume& lv) const; + // Equality defined by address only- return true if objects are at + // same address, else false. const G4VisAttributes* GetVisAttributes () const; void SetVisAttributes (const G4VisAttributes* pVA); void SetVisAttributes (const G4VisAttributes& VA); + // Gets and sets visualization attributes. void BecomeEnvelopeForFastSimulation(G4FastSimulationManager* ); + // Makes this an Envelope for given FastSimulationManager. + // Ensures that all its daughter volumes get it too - unless they + // have one already. void ClearEnvelopeForFastSimulation(G4LogicalVolume* motherLV= 0); + // Erase volume's Envelope status and propagate the FastSimulationManager + // of its mother volume to itself and its daughters. G4FastSimulationManager* GetFastSimulationManager () const; + // Gets current FastSimulationManager pointer. void SetBiasWeight (G4double w); G4double GetBiasWeight() const; + // Sets and gets bias weight. + + private: -private: void SetFastSimulationManager (G4FastSimulationManager* pPA, - G4bool IsEnvelope); - G4LogicalVolume* FindMotherLogicalVolumeForEnvelope(); -// -// Data members: + G4bool IsEnvelope); + // Sets the fast simulation manager. Private method called by the + // public SetIsEnvelope method with IsEnvelope = TRUE. It is + // then called recursivaly to the daughters to propagate the + // FastSimulationManager pointer with IsEnvelope = FALSE. + + G4LogicalVolume* FindMotherLogicalVolumeForEnvelope(); + + private: + + // Data members: -private: G4RWTPtrOrderedVector fDaughters; + // Vector of daughters. Given initial size of 0. G4FieldManager *fFieldManager; + // Pointer (possibly NULL) to (magnetic or other) field manager object. G4Material *fMaterial; + // Pointer to material at this node. G4String fName; + // Name of logical volume. G4VSensitiveDetector *fSensitiveDetector; + // Pointer (possibly NULL) to `Hit' object. G4VSolid *fSolid; + // Pointer to solid. G4UserLimits *fUserLimits; + // Pointer (possibly NULL) to user Step limit object for this node. G4SmartVoxelHeader *fVoxel; + // Pointer (possibly NULL) to optimisation info objects. G4double fSmartless; + // Quality for optimisation, average number of voxels to be spent + // per content. const G4VisAttributes* fVisAttributes; + // Pointer (possibly NULL) to visualization attributes. G4FastSimulationManager *fFastSimulationManager; + // Pointer (possibly NULL) to G4FastSimulationManager object. G4bool fIsEnvelope; + // Flags if the Logical Volume is an envelope for a + // FastSimulationManager. G4double fBiasWeight; + // Weight used in the event biasing technique. }; #include "G4LogicalVolume.icc" diff --git a/source/geometry/management/include/G4LogicalVolume.icc b/source/geometry/management/include/G4LogicalVolume.icc index b6033c4eba..b5c1fc34b6 100644 --- a/source/geometry/management/include/G4LogicalVolume.icc +++ b/source/geometry/management/include/G4LogicalVolume.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4LogicalVolume.icc,v 1.3 1999/12/15 14:49:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4LogicalVolume Inline Implementation file diff --git a/source/geometry/management/include/G4LogicalVolumeStore.hh b/source/geometry/management/include/G4LogicalVolumeStore.hh index ccc985f3c6..8d9190bbbe 100644 --- a/source/geometry/management/include/G4LogicalVolumeStore.hh +++ b/source/geometry/management/include/G4LogicalVolumeStore.hh @@ -5,43 +5,30 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LogicalVolumeStore.hh,v 1.3 1999/12/15 14:49:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LogicalVolumeStore.hh,v 1.4 2000/04/20 16:49:47 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4LogicalVolumeStore // -// Container for all LogicalVolumes, with functionality derived from -// G4RWTPtrOrderedVector. The class is `singleton', in that only -// one can exist, and access is facillitated via G4LogicalVolumeStore::GetInstance() +// Class description: // -// All LogicalVolumes should be registered with G4LogicalVolumeStore, and removed on their -// destruction. Intended principally for UI browser. The underlying -// container initially has a capacity of 100. +// Container for all LogicalVolumes, with functionality derived from +// G4RWTPtrOrderedVector. The class is a `singleton', in that only +// one can exist, and access is provided via the static function +// G4LogicalVolumeStore::GetInstance() +// +// All LogicalVolumes should be registered with G4LogicalVolumeStore, +// and removed on their destruction. Intended principally for UI browser. +// The underlying container initially has a capacity of 100. // // If much additional functionality is added, should consider containment -// instead of inheritance for G4RWTPtrOrderedVector -// -// Class member functions: -// -// static void Register(G4LogicalVolume* pVolume) -// Add the logical volume to the collection -// static void DeRegister(G4LogicalVolume* pVolume) -// REmove the logical volume from the collection -// static G4LogicalVolumeStore* GetInstance() -// Get a ptr to the unique G4LogicalVolumeStore, creting it if necessary -// -// Member functions: -// -// [as per RWTPtrOrderedvector] -// -// NOTE: Constructor is protected - creation and subsequent access is via -// GetInstance +// instead of inheritance for G4RWTPtrOrderedVector. // // Member data: // // static G4LogicalVolumeStore* fgInstance -// Ptr to the single G4LogicalVolumeStore -// +// - Ptr to the single G4LogicalVolumeStore. + // History: // 10.07.95 P.Kent Initial version @@ -54,14 +41,25 @@ class G4LogicalVolumeStore : public G4RWTPtrOrderedVector { - public: + public: // with description + static void Register(G4LogicalVolume* pVolume); + // Add the logical volume to the collection. static void DeRegister(G4LogicalVolume* pVolume); + // Remove the logical volume from the collection. static G4LogicalVolumeStore* GetInstance(); + // Get a ptr to the unique G4LogicalVolumeStore, + // creating it if necessary. + virtual ~G4LogicalVolumeStore(); + // Destructor. + protected: + G4LogicalVolumeStore(); + private: + static G4LogicalVolumeStore* fgInstance; }; diff --git a/source/geometry/management/include/G4PVParameterised.hh b/source/geometry/management/include/G4PVParameterised.hh index f5c29c5469..f2a600fe13 100644 --- a/source/geometry/management/include/G4PVParameterised.hh +++ b/source/geometry/management/include/G4PVParameterised.hh @@ -5,38 +5,19 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PVParameterised.hh,v 1.2 1999/12/15 14:49:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PVParameterised.hh,v 1.3 2000/04/20 16:49:47 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4PVParameterised // +// Class description: +// // Represents many touchable detector elements differing in their // positioning and dimensions. Both are calculated by means // of a G4VParameterisation object. The positioning is assumed to // be dominant along a cartesian axis (specified). -// -// G4PVParameterised(const G4String& pName, -// G4LogicalVolume *pLogical, -// G4VPhysicalVolume *pMother, -// const EAxis pAxis, -// const G4int nReplicas, -// G4VPVParameteriastion *pParam) -// -// Replicate the volume nReplicas Times using the paramaterisation pParam, -// withing the mother volume pMother. The positioning of the replicas -// is dominant along the specified axis -// -// G4PVParameterised(const G4String& pName, -// G4LogicalVolume *pLogical, -// G4LogicalVolume *pMotherLogical, -// const EAxis pAxis, -// const G4int nReplicas, -// G4VPVParameteriastion *pParam) -// -// Almost exactly similar to first constructor, changing only mother -// pointer's type to LogicalVolume. -// + // History: // 29.07.95 P.Kent First non-stub version @@ -47,13 +28,17 @@ class G4PVParameterised : public G4PVReplica { -public: + public: // with description + G4PVParameterised(const G4String& pName, G4LogicalVolume* pLogical, G4VPhysicalVolume* pMother, const EAxis pAxis, const G4int nReplicas, G4VPVParameterisation *pParam); + // Replicate the volume nReplicas Times using the paramaterisation pParam, + // within the mother volume pMother. The positioning of the replicas is + // dominant along the specified axis. G4PVParameterised(const G4String& pName, G4LogicalVolume* pLogical, @@ -61,19 +46,22 @@ public: const EAxis pAxis, const G4int nReplicas, G4VPVParameterisation *pParam); + // Almost exactly similar to first constructor, changing only mother + // pointer's type to LogicalVolume. virtual G4VPVParameterisation* GetParameterisation() const; + // Returns the current pointer to the parameterisation. + virtual void GetReplicationData(EAxis& axis, - G4int& nReplicas, - G4double& width, - G4double& offset, - G4bool& consuming) const; -private: + G4int& nReplicas, + G4double& width, + G4double& offset, + G4bool& consuming) const; + // Fills arguments with the attributes from the base replica. + + private: + G4VPVParameterisation *fparam; }; #endif - - - - diff --git a/source/geometry/management/include/G4PVPlacement.hh b/source/geometry/management/include/G4PVPlacement.hh index 99ecbfb0ae..ec2f91b498 100644 --- a/source/geometry/management/include/G4PVPlacement.hh +++ b/source/geometry/management/include/G4PVPlacement.hh @@ -5,80 +5,17 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PVPlacement.hh,v 1.2 1999/12/15 14:49:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PVPlacement.hh,v 1.3 2000/04/20 16:49:47 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4PVPlacement // +// Class description: +// // Class representing a single volume positioned within and relative // to a mother volume. -// -// -// G4PVPlacement(G4RotationMatrix *pRot, // 1st constructor -// const G4Threevector &tlate, -// const G4String& pName, -// G4LogicalVolume *pLogical, -// G4VPhysicalVolume *pMother, -// G4bool pMany, -// G4int pCopyNo) -// -// Initialise a single volume, positioned in a frame which is rotated by -// *pFrameRot, relative to the coordinate system of the mother volume pMother. -// The center of the object is then placed at volumeCenterCrd in -// the new coordinates. -// If pRot=0 the volume is unrotated with respect to its mother. -// The physical volume is added to the mother's logical volume. -// (The above are exactly the arguments of G4VPhysicalVolume) -// Arguments particular to G4PVPlacement: -// pMany must be true if the volume is MANY in the GEANT 3 sense, else false -// pCopyNo should be set to 0 for the first volume of a given type -// -// -// G4PVPlacement(const G4Transform3D &Transform3D, // 2nd constructor -// const G4String &pName, -// G4LogicalVolume *pLogical, -// G4VPhysicalVolume *pMother, -// G4bool pMany, -// G4int pCopyNo); -// -// Additional constructor, which expects a G4Transform3D that represents -// the direct rotation and translation of the solid (NOT of the frame). -// To repeat: the G4Transform3D argument should be constructed by -// i) First rotating it to align the solid to the system of -// reference of its mother volume *pMother, and -// ii) Then placing the solid at the location Transform3D.getTranslation(), -// with respect to the origin of the system of coordinates of the -// mother volume. -// ( This is useful for the people who prefer to think in terms -// of moving objects in a given reference frame. ) -// All other arguments are the same as for the previous constructor. -// -// -// G4PVPlacement::G4PVPlacement(G4RotationMatrix *pRot, // 3rd constructor -// const G4ThreeVector &tlate, -// G4LogicalVolume *pCurrentLogical, -// const G4String& pName, -// G4LogicalVolume *pMotherLogical, -// G4bool pMany, -// G4int pCopyNo); -// -// A simple variation of the 1st constructor, only specifying the -// mother volume as a pointer to its logical volume instead of its physical -// volume. [ This is a very natural way of defining a physical volume, and -// is especially useful when creating subdetectors: the mother volumes is -// not placed until a later stage of the assembly program. ] -// -// -// G4PVPlacement(const G4Transform3D &Transform3D, // 4th constructor -// G4LogicalVolume *pCurrentLogical, -// const G4String& pName, -// G4LogicalVolume *pMotherLogical, -// G4bool pMany, -// G4int pCopyNo); -// -// Utilises both variations above (from 2nd and 3rd constructor). -// + // History: // 24.07.95 P.Kent First non-stub version // 25.07.96 P.Kent Modified interface for new `Replica' capable geometry @@ -91,12 +28,12 @@ #define G4PVPLACEMENT_HH #include "G4VPhysicalVolume.hh" -// class G4Transform3D; #include "G4Transform3D.hh" class G4PVPlacement : public G4VPhysicalVolume { -public: + public: // with description + G4PVPlacement(G4RotationMatrix *pRot, const G4ThreeVector &tlate, const G4String &pName, @@ -104,6 +41,17 @@ public: G4VPhysicalVolume *pMother, G4bool pMany, G4int pCopyNo); + // Initialise a single volume, positioned in a frame which is rotated by + // *pFrameRot, relative to the coordinate system of the mother volume + // pMother. The center of the object is then placed at volumeCenterCrd + // in the new coordinates. + // If pRot=0 the volume is unrotated with respect to its mother. + // The physical volume is added to the mother's logical volume. + // (The above are exactly the arguments of G4VPhysicalVolume) + // Arguments particular to G4PVPlacement: + // pMany Currently NOT used. For future use to identify if the volume + // is MANY in the GEANT 3 sense, or not. + // pCopyNo should be set to 0 for the first volume of a given type. G4PVPlacement(const G4Transform3D &Transform3D, const G4String &pName, @@ -111,6 +59,17 @@ public: G4VPhysicalVolume *pMother, G4bool pMany, G4int pCopyNo); + // Additional constructor, which expects a G4Transform3D that represents + // the direct rotation and translation of the solid (NOT of the frame). + // The G4Transform3D argument should be constructed by: + // i) First rotating it to align the solid to the system of + // reference of its mother volume *pMother, and + // ii) Then placing the solid at the location Transform3D.getTranslation(), + // with respect to the origin of the system of coordinates of the + // mother volume. + // [ This is useful for the people who prefer to think in terms + // of moving objects in a given reference frame. ] + // All other arguments are the same as for the previous constructor. G4PVPlacement(G4RotationMatrix *pRot, const G4ThreeVector &tlate, @@ -119,6 +78,12 @@ public: G4LogicalVolume *pMotherLogical, G4bool pMany, G4int pCopyNo); + // A simple variation of the 1st constructor, only specifying the + // mother volume as a pointer to its logical volume instead of its + // physical volume. [ This is a very natural way of defining a physical + // volume, and is especially useful when creating subdetectors: the + // mother volumes is not placed until a later stage of the assembly + // program. ] G4PVPlacement(const G4Transform3D &Transform3D, G4LogicalVolume *pCurrentLogical, @@ -126,12 +91,22 @@ public: G4LogicalVolume *pMotherLogical, G4bool pMany, G4int pCopyNo); + // Utilises both variations above (from 2nd and 3rd constructor). ~G4PVPlacement(); + // Default destructor. - virtual G4bool IsMany() const; virtual G4int GetCopyNo() const; virtual void SetCopyNo(G4int CopyNo); + // Gets and sets the copy number of the volume. + + virtual void Setup(G4VPhysicalVolume *pMother); + // Sets the pointer to the mother volume. + // Must not be called when geometry closed. + + public: // without description + + virtual G4bool IsMany() const; virtual G4bool IsReplicated() const; virtual G4VPVParameterisation* GetParameterisation() const; virtual void GetReplicationData(EAxis& axis, @@ -139,16 +114,17 @@ public: G4double& width, G4double& offset, G4bool& consuming) const; - virtual void Setup(G4VPhysicalVolume *pMother); -private: - G4bool fmany; // flag for booleans + + private: + + G4bool fmany; // flag for booleans/MANY - not used G4bool fallocatedRotM; // flag for allocation of Rotation Matrix G4int fcopyNo; // for identification - // Auxiliary function for 2nd constructor (one with G4Transform3D) - // Creates a new RotMatrix on the heap (using "new") and copies - // its argument into it. static G4RotationMatrix* NewPtrRotMatrix(const G4RotationMatrix &RotMat); + // Auxiliary function for 2nd constructor (one with G4Transform3D). + // Creates a new RotMatrix on the heap (using "new") and copies + // its argument into it. }; #endif diff --git a/source/geometry/management/include/G4PVReplica.hh b/source/geometry/management/include/G4PVReplica.hh index 9e70045bd0..bb0f2641f7 100644 --- a/source/geometry/management/include/G4PVReplica.hh +++ b/source/geometry/management/include/G4PVReplica.hh @@ -5,12 +5,14 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PVReplica.hh,v 1.2 1999/12/15 14:49:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PVReplica.hh,v 1.3 2000/04/20 16:49:47 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4PVReplica // +// Class description: +// // Represents many touchable detector elements differing only in their // positioning. The elements' positions are calculated by means of a simple // linear formula, and the elements completely fill the containing mother @@ -51,7 +53,7 @@ // The replications are `phi sections' or wedges, and of cons/tubs form // They have phi of offset+n*width to offset+(n+1)*width where // n=0..nReplicas-1 -// + // History: // 29.07.95 P.Kent First non-stub version // 26.10.97 J.Apostolakis Added constructor that takes mother logical volume @@ -65,7 +67,8 @@ class G4PVReplica : public G4VPhysicalVolume { -public: + public: + G4PVReplica(const G4String& pName, G4LogicalVolume* pLogical, G4VPhysicalVolume* pMother, @@ -95,13 +98,16 @@ public: G4double& offset, G4bool& consuming) const; virtual void Setup(G4VPhysicalVolume *pMother); -private: + + private: + void CheckAndSetParameters( const EAxis pAxis, const G4int nReplicas, const G4double width, const G4double offset); -protected: + protected: + EAxis faxis; G4int fnReplicas; G4double fwidth,foffset; diff --git a/source/geometry/management/include/G4PhysicalVolumeStore.hh b/source/geometry/management/include/G4PhysicalVolumeStore.hh index af00654357..5f528621ac 100644 --- a/source/geometry/management/include/G4PhysicalVolumeStore.hh +++ b/source/geometry/management/include/G4PhysicalVolumeStore.hh @@ -5,14 +5,16 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PhysicalVolumeStore.hh,v 1.3 1999/12/15 14:49:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PhysicalVolumeStore.hh,v 1.4 2000/04/20 16:49:47 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4PhysicalVolume // +// Class description: +// // Container for all solids, with functionality derived from -// G4RWTPtrOrderedVector. The class is `singleton', in that only -// one can exist, and access is facillitated via +// G4RWTPtrOrderedVector. The class is a `singleton', in that only +// one can exist, and access is provided via the static method // G4PhysicalVolumeStore::GetInstance() // // All solids should be registered with G4PhysicalVolumeStore, and removed on @@ -22,27 +24,11 @@ // If much additional functionality is added, should consider containment // instead of inheritance for G4RWTPtrOrderedVector // -// Class member functions: -// -// static void Register(G4VPhysicalVolume* pVolume) -// Add the volume to the collection -// static void DeRegister(G4VPhysicalVolume* pVolume) -// Remove the volume from the collection -// static G4PhysicalVolumeStore* GetInstance() -// Get a ptr to the unique G4PhysicalVolumeStore, creating it if necessary -// -// Member functions: -// -// [as per RWTPtrOrderedvector] -// -// NOTE: Constructor is protected - creation and subsequent access is via -// GetInstance -// // Member data: // // static G4PhysicalVolumeStore* -// Ptr to the single G4PhysicalVolumeStore -// +// - Ptr to the single G4PhysicalVolumeStore. + // History: // 25.07.95 P.Kent Initial version @@ -55,14 +41,25 @@ class G4PhysicalVolumeStore : public G4RWTPtrOrderedVector { - public: + public: // with description + static void Register(G4VPhysicalVolume* pSolid); + // Add the volume to the collection. static void DeRegister(G4VPhysicalVolume* pSolid); + // Remove the volume from the collection. static G4PhysicalVolumeStore* GetInstance(); + // Get a ptr to the unique G4PhysicalVolumeStore, + // creating it if necessary. + virtual ~G4PhysicalVolumeStore(); + // Default destructor. + protected: + G4PhysicalVolumeStore(); + private: + static G4PhysicalVolumeStore* fgInstance; }; diff --git a/source/geometry/management/include/G4SmartVoxelHeader.hh b/source/geometry/management/include/G4SmartVoxelHeader.hh index e52e4cbdb3..69bd894fa2 100644 --- a/source/geometry/management/include/G4SmartVoxelHeader.hh +++ b/source/geometry/management/include/G4SmartVoxelHeader.hh @@ -5,68 +5,32 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4SmartVoxelHeader.hh,v 1.3 1999/12/15 14:49:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4SmartVoxelHeader.hh,v 1.4 2000/04/20 16:49:47 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4SmartVoxelHeader // -// Represents set of voxels, created by a single axis of virtual division. +// Class description: +// +// Represents a set of voxels, created by a single axis of virtual division. // Contains the individual voxels, which are potentially further divided -// along different axes +// along different axes. // -// Member functions: -// -// G4SmartVoxelHeader(G4LogicalVolume* pVolume,const G4int pSlice=0) -// Constructor for topmost header, to begin voxel construction at a -// given logical volume. pSlice is used to set max and min equivalent slice -// nos for the header - they apply to the level of the header, not its nodes. -// -// ~G4SmartVoxelHeader() -// Delete all referenced nodes [but *not* referenced physical volumes] -// -// EAxis GetAxis() const -// Return the current division axis -// -// G4double GetMaxExtent() const -// Return the maximum coordinate limit along the current axis -// G4double GetMinExtent() const -// Return the minimum coordinate limit along the current axis -// -// G4int GetNoSlices() const -// Return the no of slices along the current axis -// G4SmartVoxelProxy* GetSlice(const G4int n) const -// Return ptr to the proxy for the nth slice (numbering from 0, no -// bounds checking) -// -// -// Private functions: -// -// G4SmartVoxelHeader(G4LogicalVolume* pVolume,G4VoxelLimits& pLimits, -// G4RWTValOrderedVector& pCandidates, -// const G4int pSlice=0) -// Build and refine voxels between specified limits, considering only -// the physical volumes numbered `pCandidates'. pSlice is used to set max -// and min equivalent slice nos for the header - they apply to the level -// of the header, not its nodes. -// - -// extra functions... - // Member data: // // EAxis faxis -// The (cartesian) slicing/division axis +// - The (cartesian) slicing/division axis // G4double fmaxExtent // G4double fminExtent -// Minimum and maximum coordiantes along the axis +// - Minimum and maximum coordiantes along the axis // G4RWTPtrOrderedVector fslices -// The slices along the axis +// - The slices along the axis // // G4int fminEquivalent // G4int fmaxEquivalent -// Minimum and maximum equivalent slice nos. [Applies to the level of -// the header, not its nodes] -// +// - Minimum and maximum equivalent slice nos. +// [Applies to the level of the header, not its nodes] + // History: // 13.07.95 P.Kent Initial version @@ -85,12 +49,13 @@ #include "g4rw/tvvector.h" #include "g4rw/tpordvec.h" #include "g4rw/tvordvec.h" + // Forward declarations class G4LogicalVolume; class G4VoxelLimits; class G4VPhysicalVolume; - +// Typedefs typedef G4RWTPtrOrderedVector G4ProxyVector; typedef G4RWTPtrOrderedVector G4NodeVector; typedef G4RWTValOrderedVector G4VolumeNosVector; @@ -98,142 +63,126 @@ typedef G4RWTValVector G4VolumeExtentVector; class G4SmartVoxelHeader { -public: -// Constructor for topmost header, to begin voxel construction at a -// given logical volume - G4SmartVoxelHeader(G4LogicalVolume* pVolume,const G4int pSlice=0); - - ~G4SmartVoxelHeader(); - -// Access functions for min/max equivalent slices (nodes & headers) - G4int GetMaxEquivalentSliceNo() const - { - return fmaxEquivalent; - } - void SetMaxEquivalentSliceNo(const G4int pMax) - { - fmaxEquivalent=pMax; - } - G4int GetMinEquivalentSliceNo() const - { - return fminEquivalent; - } - void SetMinEquivalentSliceNo(const G4int pMin) - { - fminEquivalent=pMin; - } + public: // with description -// Axis enquiry - EAxis GetAxis() const - { - return faxis; - } + G4SmartVoxelHeader(G4LogicalVolume* pVolume,const G4int pSlice=0); + // Constructor for topmost header, to begin voxel construction at a + // given logical volume. pSlice is used to set max and min equivalent + // slice nos for the header - they apply to the level of the header, + // not its nodes. + + ~G4SmartVoxelHeader(); + // Delete all referenced nodes [but *not* referenced physical volumes]. -// Extent enquiry functions - G4double GetMaxExtent() const - { - return fmaxExtent; - } + G4int GetMaxEquivalentSliceNo() const; + void SetMaxEquivalentSliceNo(const G4int pMax); + G4int GetMinEquivalentSliceNo() const; + void SetMinEquivalentSliceNo(const G4int pMin); + // Access functions for min/max equivalent slices (nodes & headers). + + EAxis GetAxis() const; + // Return the current division axis. - G4double GetMinExtent() const - { - return fminExtent; - } + G4double GetMaxExtent() const; + // Return the maximum coordinate limit along the current axis. + G4double GetMinExtent() const; + // Return the minimum coordinate limit along the current axis. -// Slice enquiry functions - G4int GetNoSlices() const - { - return fslices.entries(); - } + G4int GetNoSlices() const; + // Return the no of slices along the current axis. -// Slice access - G4SmartVoxelProxy* GetSlice(const G4int n) const - { - return fslices(n); - } - -// True if all slices equal (after collection) + G4SmartVoxelProxy* GetSlice(const G4int n) const; + // Return ptr to the proxy for the nth slice (numbering from 0, + // no bounds checking performed). + G4bool AllSlicesEqual() const; + // True if all slices equal (after collection). + + public: // without description G4bool operator == (const G4SmartVoxelHeader& pHead) const; - friend G4std::ostream& operator << (G4std::ostream&s, const G4SmartVoxelHeader& h); + friend G4std::ostream& + operator << (G4std::ostream&s, const G4SmartVoxelHeader& h); -protected: + protected: G4SmartVoxelHeader(G4LogicalVolume* pVolume, const G4VoxelLimits& pLimits, const G4VolumeNosVector* pCandidates, const G4int pSlice=0); + // Build and refine voxels between specified limits, considering only + // the physical volumes numbered `pCandidates'. pSlice is used to set max + // and min equivalent slice nos for the header - they apply to the level + // of the header, not its nodes. -// `Worker' / operation functions: - + // `Worker' / operation functions: -// Build and refine voxels for daughters of specified volume which -// DOES NOT contain a REPLICATED daughter void BuildVoxels(G4LogicalVolume* pVolume); + // Build and refine voxels for daughters of specified volume which + // DOES NOT contain a REPLICATED daughter. -// Build voxels for specified volume containing a single -// replicated volume void BuildReplicaVoxels(G4LogicalVolume* pVolume); + // Build voxels for specified volume containing a single + // replicated volume. -// Construct nodes in simple consuming case void BuildConsumedNodes(const G4int nReplicas); + // Construct nodes in simple consuming case. -// Build and refine voxels between specified limits, considering only -// the physical volumes `pCandidates'. Main entry point for "construction" -// Hardwired to stop at third level of refinement, using the xyz cartesian -// axes in any order void BuildVoxelsWithinLimits(G4LogicalVolume* pVolume, G4VoxelLimits pLimits, const G4VolumeNosVector* pCandidates); + // Build and refine voxels between specified limits, considering only + // the physical volumes `pCandidates'. Main entry point for "construction". + // Hardwired to stop at third level of refinement, using the xyz cartesian + // axes in any order. - -// Calculate and Store the minimum and maximum equivalent neighbour -// values for all slices void BuildEquivalentSliceNos(); - -// Collect common nodes, deleting all but one to save memory, and adjusting -// stored slice ptrs appropriately. + // Calculate and Store the minimum and maximum equivalent neighbour + // values for all slices. + void CollectEquivalentNodes(); + // Collect common nodes, deleting all but one to save memory, + // and adjusting stored slice ptrs appropriately. -// Collect common headers, deleting all but one to save memory, and adjusting -// stored slice ptrs appropriately. void CollectEquivalentHeaders(); + // Collect common headers, deleting all but one to save memory, + // and adjusting stored slice ptrs appropriately. -// Build the nodes corresponding to the specified axis, within -// the specified limits, considering the daughters numbered pCandidates -// of the logical volume -G4ProxyVector* BuildNodes(G4LogicalVolume* pVolume, - G4VoxelLimits pLimits, - const G4VolumeNosVector* pCandidates, - EAxis pAxis); + G4ProxyVector* BuildNodes(G4LogicalVolume* pVolume, + G4VoxelLimits pLimits, + const G4VolumeNosVector* pCandidates, + EAxis pAxis); + // Build the nodes corresponding to the specified axis, within + // the specified limits, considering the daughters numbered pCandidates + // of the logical volume. -// Calculate a "quality value" for the specified vector of voxels -// The value returned should be >0 and such that the smaller the -// number the higher the quality of the slice. -// -// pSlice must consist of smartvoxelnodeproxies only G4double CalculateQuality(G4ProxyVector *pSlice); + // Calculate a "quality value" for the specified vector of voxels + // The value returned should be >0 and such that the smaller the + // number the higher the quality of the slice. + // pSlice must consist of smartvoxelnodeproxies only. -// Examined each contained node, refine (create a replacement additional -// dimension of voxels) when there is more than one voxel in the slice void RefineNodes(G4LogicalVolume* pVolume,G4VoxelLimits pLimits); + // Examined each contained node, refine (create a replacement additional + // dimension of voxels) when there is more than one voxel in the slice. -// Min and max equivalent slice nos for previous level G4int fminEquivalent; G4int fmaxEquivalent; + // Min and max equivalent slice nos for previous level. -// Axis for slices EAxis faxis; -// Max and min coordinate along faxis + // Axis for slices. + G4double fmaxExtent; G4double fminExtent; -// Slices along axis + // Max and min coordinate along faxis. + G4ProxyVector fslices; + // Slices along axis. }; + +#include "G4SmartVoxelHeader.icc" + #endif - - - diff --git a/source/geometry/management/include/G4SmartVoxelHeader.icc b/source/geometry/management/include/G4SmartVoxelHeader.icc new file mode 100644 index 0000000000..7707a009ed --- /dev/null +++ b/source/geometry/management/include/G4SmartVoxelHeader.icc @@ -0,0 +1,67 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4SmartVoxelHeader.icc,v 1.1 2000/04/20 16:49:47 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// G4SmartVoxelHeader Inline implementation +// + +inline +G4int G4SmartVoxelHeader::GetMaxEquivalentSliceNo() const +{ + return fmaxEquivalent; +} + +inline +void G4SmartVoxelHeader::SetMaxEquivalentSliceNo(const G4int pMax) +{ + fmaxEquivalent=pMax; +} + +inline +G4int G4SmartVoxelHeader::GetMinEquivalentSliceNo() const +{ + return fminEquivalent; +} + +inline +void G4SmartVoxelHeader::SetMinEquivalentSliceNo(const G4int pMin) +{ + fminEquivalent=pMin; +} + +inline +EAxis G4SmartVoxelHeader::GetAxis() const +{ + return faxis; +} + +inline +G4double G4SmartVoxelHeader::GetMaxExtent() const +{ + return fmaxExtent; +} + +inline +G4double G4SmartVoxelHeader::GetMinExtent() const +{ + return fminExtent; +} + +inline +G4int G4SmartVoxelHeader::GetNoSlices() const +{ + return fslices.entries(); +} + +inline +G4SmartVoxelProxy* G4SmartVoxelHeader::GetSlice(const G4int n) const +{ + return fslices(n); +} diff --git a/source/geometry/management/include/G4SmartVoxelNode.hh b/source/geometry/management/include/G4SmartVoxelNode.hh index 137404b09c..2f2f73b521 100644 --- a/source/geometry/management/include/G4SmartVoxelNode.hh +++ b/source/geometry/management/include/G4SmartVoxelNode.hh @@ -5,60 +5,27 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4SmartVoxelNode.hh,v 1.3 1999/12/15 14:49:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4SmartVoxelNode.hh,v 1.4 2000/04/20 16:49:47 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4SmartVoxelNode // +// Class description: +// // A node in the smart voxel hierarchy - a `slice' of space along a given // axis between given minima and maxima. Note that the node is not aware // of its position - this information being available/derivable by the // node's owner(s) (voxelheaders). // -// -// Member functions: -// -// G4SmartVoxelNode(const G4int pSlice=0) -// Constructor. Create an empty node with slice number pSlice. THis number -// is not stored, but used to provide defaults for the minimum and maximum -// equivalent node numbers -// ~G4SmartVoxelNode() -// Destructor. No actions. -// -// G4RWTValOrderedVector* GetContents() -// Return ptr to vector of volume no.s in the node. Use with care. -// Intended for inspection by navigator at tracking time only. -// -// G4int GetVolume(const G4int pVolumeNo) const -// Return the pVolumeNo'th contained volume. Note: Starts from 0, -// no bounds checking. -// -// void Insert(G4int pVolumeNo) -// Add the specified volume no. to the node's contents -// -// G4int GetNoContained() const -// Returns the number of volumes contained -// -// G4int GetMaxEquivalenSliceNo() const -// Return the maximum slice (node/header) no with the same contents, and -// with all intermediate slice also having the same contents -// void SetMaxEquivalentSliceNo(const G4int pMax) -// Set the maximum slice no (as above) -// G4int GetMinEquivalentSliceNo() const -// Return the minimum slice (node/header) no with the same contents, and -// with all intermediate nodes also having the same contents -// void SetMinEquivalentSliceNo(const G4int pMin) -// Set the maximum slice no (as above) -// // Member Data: // // G4int fminEquivalent // G4int fmaxEquivalent -// Min and maximum nodes with same contents. Set by constructor -// and set methods. +// - Min and maximum nodes with same contents. Set by constructor +// and set methods. // G4RWTValOrderedVector(1) fcontents -// Vector of no.s of volumes inside the node -// +// - Vector of no.s of volumes inside the node. + // History: // 12.07.95 P.Kent Initial version @@ -76,66 +43,48 @@ typedef G4RWTValOrderedVector G4SliceVector; class G4SmartVoxelNode { -public: + public: // with description -// Constructor. Set min and max equivalent nodes to default. G4SmartVoxelNode(const G4int pSlice=0) : fminEquivalent(pSlice), - fmaxEquivalent(pSlice) - { - } + fmaxEquivalent(pSlice) {} + // Constructor. Create an empty node with slice number pSlice. + // THis number is not stored, but used to provide defaults for the + // minimum and maximum equivalent node numbers. -// Destructor. No actions necessary - ~G4SmartVoxelNode() - { - } + ~G4SmartVoxelNode() {} + // Destructor. No actions. -// Access functions for contents + G4int GetVolume(const G4int pVolumeNo) const; + // Return contained volume number pVolumeNo. + // Note: starts from 0 and no bounds checking performed. -// Return contained volume no pVolumeNo. -// No bounds checking + void Insert(G4int pVolumeNo); + // Add the specified volume number to the contents. - G4int GetVolume(const G4int pVolumeNo) const - { - return fcontents(pVolumeNo); - } + G4int GetNoContained() const; + // Return the number of volumes inside the node. -// Add the speicifed volume no to the contents - void Insert(G4int pVolumeNo) - { - fcontents.insert(pVolumeNo); - } - -// Return the no of volumes inside the node - G4int GetNoContained() const - { - return fcontents.entries(); - } - -// Access functions for min/max equivalent slices (nodes & headers) - G4int GetMaxEquivalentSliceNo() const - { - return fmaxEquivalent; - } - void SetMaxEquivalentSliceNo(const G4int pMax) - { - fmaxEquivalent=pMax; - } - G4int GetMinEquivalentSliceNo() const - { - return fminEquivalent; - } - void SetMinEquivalentSliceNo(const G4int pMin) - { - fminEquivalent=pMin; - } + G4int GetMaxEquivalentSliceNo() const; + // Return the maximum slice (node/header) number with the same contents, + // and with all intermediate slice also having the same contents. + void SetMaxEquivalentSliceNo(const G4int pMax); + // Set the maximum slice number (as above). + G4int GetMinEquivalentSliceNo() const; + // Return the minimum slice (node/header) number with the same contents, + // and with all intermediate nodes also having the same contents. + void SetMinEquivalentSliceNo(const G4int pMin); + // Set the minimum slice number (as above). G4bool operator == (const G4SmartVoxelNode& v) const; -private: + // Equality operator. + + private: + G4int fminEquivalent; G4int fmaxEquivalent; G4SliceVector fcontents; }; +#include "G4SmartVoxelNode.icc" + #endif - - diff --git a/source/geometry/management/include/G4SmartVoxelNode.icc b/source/geometry/management/include/G4SmartVoxelNode.icc new file mode 100644 index 0000000000..c9b7bc42f8 --- /dev/null +++ b/source/geometry/management/include/G4SmartVoxelNode.icc @@ -0,0 +1,55 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4SmartVoxelNode.icc,v 1.1 2000/04/20 16:49:47 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// G4SmartVoxelNode Inline implementation +// + +inline +G4int G4SmartVoxelNode::GetVolume(const G4int pVolumeNo) const +{ + return fcontents(pVolumeNo); +} + +inline +void G4SmartVoxelNode::Insert(G4int pVolumeNo) +{ + fcontents.insert(pVolumeNo); +} + +inline +G4int G4SmartVoxelNode::GetNoContained() const +{ + return fcontents.entries(); +} + +inline +G4int G4SmartVoxelNode::GetMaxEquivalentSliceNo() const +{ + return fmaxEquivalent; +} + +inline +void G4SmartVoxelNode::SetMaxEquivalentSliceNo(const G4int pMax) +{ + fmaxEquivalent=pMax; +} + +inline +G4int G4SmartVoxelNode::GetMinEquivalentSliceNo() const +{ + return fminEquivalent; +} + +inline +void G4SmartVoxelNode::SetMinEquivalentSliceNo(const G4int pMin) +{ + fminEquivalent=pMin; +} diff --git a/source/geometry/management/include/G4SmartVoxelProxy.hh b/source/geometry/management/include/G4SmartVoxelProxy.hh index 072a70b7b2..e466deae45 100644 --- a/source/geometry/management/include/G4SmartVoxelProxy.hh +++ b/source/geometry/management/include/G4SmartVoxelProxy.hh @@ -5,39 +5,20 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4SmartVoxelProxy.hh,v 1.2 1999/12/15 14:49:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4SmartVoxelProxy.hh,v 1.3 2000/04/20 16:49:47 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // - // class G4SmartVoxelProxy // -// Class for proxying smart voxels. The class -// represents either a header (in turn refering to more VoxelProxies) -// or a node. If created as a node, calls to GetHeader cause an exception, -// and likewise GetNode when a header. +// Class description: +// +// Class for proxying smart voxels. The class represents either a header +// (in turn refering to more VoxelProxies) or a node. If created as a node, +// calls to GetHeader cause an exception, and likewise GetNode when a header. // // Note that the proxy does NOT gain deletion responsibility for proxied // objects. -// -// Member functions: -// -// G4SmartVoxelProxy(G4SmartVoxelHeader *pHeader); -// Proxy for the specified header -// G4SmartVoxelProxy(G4SmartVoxelNode *pNode) -// Proxy for the specified node -// G4bool IsHeader() const -// Return true if proxying for a header, else false -// G4bool IsNode() const -// Return true if proxying for a node, else false -// G4SmartVoxelNode* GetNode() const -// Return ptr to proxied node, else call G4Exception -// G4SmartVoxelHeader* GetHeader() const -// Return ptr to proxied header, else call G4Exception -// -// -// operator == (const G4SmartVoxelProxy& v) -// True when objects share same address. -// + // History: // 12.07.95 P.Kent Initial version // 03.08.95 P.Kent Updated to become non abstract class, removing @@ -55,55 +36,41 @@ class G4SmartVoxelHeader; class G4SmartVoxelProxy { -public: + public: // with description + G4SmartVoxelProxy(G4SmartVoxelHeader *pHeader) - { - fHeader=pHeader; - fNode=0; - } + : fHeader(pHeader), fNode(0) {} + // Proxy for the specified header. G4SmartVoxelProxy(G4SmartVoxelNode *pNode) - { - fHeader=0; - fNode=pNode; - } + : fHeader(0), fNode(pNode) {} + // Proxy for the specified node. -// Destructor - do nothing. Not responsible for proxied objects - ~G4SmartVoxelProxy() {;} + ~G4SmartVoxelProxy() {} + // Destructor - do nothing. Not responsible for proxied objects. - G4bool IsHeader() const - { - return (fHeader) ? true:false; - } + G4bool IsHeader() const; + // Return true if proxying for a header, else false. - G4bool IsNode() const - { - return (fNode) ? true:false; - } - - G4SmartVoxelNode* GetNode() const - { - assert(fNode != 0); - return fNode; - } + G4bool IsNode() const; + // Return true if proxying for a node, else false. - G4SmartVoxelHeader* GetHeader() const - { - assert(fHeader != 0); - return fHeader; - } + G4SmartVoxelNode* GetNode() const; + // Return ptr to proxied node, else call G4Exception. - G4bool operator == (const G4SmartVoxelProxy& v) const - { - return (this==&v) ? true : false; - } + G4SmartVoxelHeader* GetHeader() const; + // Return ptr to proxied header, else call G4Exception + + G4bool operator == (const G4SmartVoxelProxy& v) const; + // Equality operator. + // True when objects share same address. + + private: -private: G4SmartVoxelNode* fNode; G4SmartVoxelHeader* fHeader; }; +#include "G4SmartVoxelProxy.icc" + #endif - - - diff --git a/source/geometry/management/include/G4SmartVoxelProxy.icc b/source/geometry/management/include/G4SmartVoxelProxy.icc new file mode 100644 index 0000000000..ec3bb27f56 --- /dev/null +++ b/source/geometry/management/include/G4SmartVoxelProxy.icc @@ -0,0 +1,45 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4SmartVoxelProxy.icc,v 1.1 2000/04/20 16:49:48 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// G4SmartVoxelProxy Inline implementation +// + +inline +G4bool G4SmartVoxelProxy::IsHeader() const +{ + return (fHeader) ? true:false; +} + +inline +G4bool G4SmartVoxelProxy::IsNode() const +{ + return (fNode) ? true:false; +} + +inline +G4SmartVoxelNode* G4SmartVoxelProxy::GetNode() const +{ + assert(fNode != 0); + return fNode; +} + +inline +G4SmartVoxelHeader* G4SmartVoxelProxy::GetHeader() const +{ + assert(fHeader != 0); + return fHeader; +} + +inline +G4bool G4SmartVoxelProxy::operator == (const G4SmartVoxelProxy& v) const +{ + return (this==&v) ? true : false; +} diff --git a/source/geometry/management/include/G4SolidStore.hh b/source/geometry/management/include/G4SolidStore.hh index a656eb7fb9..93e510d53d 100644 --- a/source/geometry/management/include/G4SolidStore.hh +++ b/source/geometry/management/include/G4SolidStore.hh @@ -5,14 +5,17 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4SolidStore.hh,v 1.3 1999/12/15 14:49:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4SolidStore.hh,v 1.4 2000/04/20 16:49:48 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4SolidStore // +// Class description: +// // Container for all solids, with functionality derived from -// G4RWTPtrOrderedVector. The class is `singleton', in that only -// one can exist, and access is facillitated via G4SolidStore::GetInstance() +// G4RWTPtrOrderedVector. The class is a `singleton', in that only +// one can exist, and access is provided via the static method +// G4SolidStore::GetInstance(). // // All solids should be registered with G4SolidStore, and removed on their // destruction. Intended principally for UI browser. The underlying @@ -21,27 +24,11 @@ // If much additional functionality is added, should consider containment // instead of inheritance for G4RWTPtrOrderedVector // -// Class member functions: -// -// static void Register(G4G4VSolid* pSolid) -// Add the solid to the collection -// static void DeRegister(G4G4VSolid* pSolid) -// Remove the solid from the collection -// static G4SolidStore* GetInstance() -// Get a ptr to the unique G4SolidStore, creting it if necessary -// -// Member functions: -// -// [as per RWTPtrOrderedvector] -// -// NOTE: Constructor is protected - creation and subsequent access is via -// GetInstance -// // Member data: // // static G4SolidStore* -// Ptr to the single G4SolidStore -// +// - Ptr to the single G4SolidStore + // History: // 10.07.95 P.Kent Initial version @@ -54,14 +41,24 @@ class G4SolidStore : public G4RWTPtrOrderedVector { - public: + public: // with description + static void Register(G4VSolid* pSolid); + // Add the solid to the collection. static void DeRegister(G4VSolid* pSolid); + // Remove the solid from the collection. static G4SolidStore* GetInstance(); + // Get a ptr to the unique G4SolidStore, creating it if necessary. + virtual ~G4SolidStore(); + // Default destructor. + protected: + G4SolidStore(); + private: + static G4SolidStore* fgInstance; }; diff --git a/source/geometry/management/include/G4VPVParameterisation.hh b/source/geometry/management/include/G4VPVParameterisation.hh index 56564fa131..6333935cc9 100644 --- a/source/geometry/management/include/G4VPVParameterisation.hh +++ b/source/geometry/management/include/G4VPVParameterisation.hh @@ -5,15 +5,17 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VPVParameterisation.hh,v 1.2 1999/12/15 14:49:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VPVParameterisation.hh,v 1.3 2000/04/20 16:49:48 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4VPVParamterisation // +// Class description: +// // Parameterisation class, able to compute the transformation and // (indirectly) the dimensions of parameterised volumes, given a // replication number. -// + // History: // 25.07.96 P.Kent Initial stub version // 20.09.96 V.Grichine Modifications for G4Trap/Cons/Sphere @@ -43,67 +45,50 @@ class G4Material; class G4VPVParameterisation { -public: + public: virtual void ComputeTransformation(const G4int, G4VPhysicalVolume *) const = 0; - virtual G4VSolid* ComputeSolid(const G4int, - G4VPhysicalVolume *); + virtual G4VSolid* ComputeSolid(const G4int, G4VPhysicalVolume *); - virtual G4Material* ComputeMaterial(const G4int, - G4VPhysicalVolume *); + virtual G4Material* ComputeMaterial(const G4int, G4VPhysicalVolume *); virtual void ComputeDimensions(G4Box &, const G4int, - const G4VPhysicalVolume *) const - { - } + const G4VPhysicalVolume *) const {} virtual void ComputeDimensions(G4Tubs &, const G4int, - const G4VPhysicalVolume *) const - { - } + const G4VPhysicalVolume *) const {} + virtual void ComputeDimensions(G4Trd &, const G4int, - const G4VPhysicalVolume *) const - { - } + const G4VPhysicalVolume *) const {} virtual void ComputeDimensions(G4Trap &, const G4int, - const G4VPhysicalVolume *) const - { - } - + const G4VPhysicalVolume *) const {} virtual void ComputeDimensions(G4Cons &, const G4int, - const G4VPhysicalVolume *) const - { - } + const G4VPhysicalVolume *) const {} virtual void ComputeDimensions(G4Sphere &, const G4int, - const G4VPhysicalVolume *) const - { - } + const G4VPhysicalVolume *) const {} + virtual void ComputeDimensions(G4Torus &, const G4int, - const G4VPhysicalVolume *) const - { - } + const G4VPhysicalVolume *) const {} + virtual void ComputeDimensions(G4Para &, const G4int, - const G4VPhysicalVolume *) const - { - } + const G4VPhysicalVolume *) const {} + virtual void ComputeDimensions(G4Hype &, const G4int, - const G4VPhysicalVolume *) const - { - } + const G4VPhysicalVolume *) const {} }; #endif diff --git a/source/geometry/management/include/G4VPhysicalVolume.hh b/source/geometry/management/include/G4VPhysicalVolume.hh index 862004ab97..8f45d51ea8 100644 --- a/source/geometry/management/include/G4VPhysicalVolume.hh +++ b/source/geometry/management/include/G4VPhysicalVolume.hh @@ -5,114 +5,19 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VPhysicalVolume.hh,v 1.3 1999/12/15 14:49:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VPhysicalVolume.hh,v 1.4 2000/04/20 16:49:48 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // - -// class description: -// -// class G4VPhysicalVolume // -// This is an Abstract Base class for representation of positioned volume. +// class G4VPhysicalVolume +// +// Class description: +// +// This is an Abstract Base class for the representation of positioned volume. // The volume is placed within a mother volume, relative to its coordinate // system. Either a single positioned volume or many positioned volume can -// be represented by a particular G4VPhysicalVolume. -// -// Member functions: -// -// G4VPhysicalVolume(G4RotationMatrix *pFrameRot, -// const G4ThreeVector &volumeCenterCrd, // "tlate" -// const G4String &pName, -// G4LogicalVolume *pLogical, -// G4VPhysicalVolume *pMother) -// -// Initialise volume, positioned in a frame which is rotated by *pFrameRot, -// relative to the coordinate system of the mother volume pMother. The center -// of the object is then placed at volumeCenterCrd in the new coordinates. -// If pRot=0 the volume is unrotated with respect to its mother. -// The physical volume is added to the mother's logical volume. -// -// Must be called by all subclasses. pMother must point to a valid parent -// volume, except in the case of the world/top volume, when it =0. -// -// Constructor also registers volume with physical volume Store. Note -// that the Store may be removed or dynamically built in future because -// of memory constraints -// -// virtual ~G4VPhysicalVolume() -// Destructor. Remove volume from volume Store. -// -// G4bool operator == (const G4VPhysicalVolume& p) const -// Define equality by equal addresses only. -// -// G4LogicalVolume* GetLogicalVolume() const -// Return the associated logical volume -// G4VPhysicalVolume* GetMother() const -// Return the current mother pointer -// G4String GetName() const -// Return the volume's name -// -// void SetLogicalVolume(G4LogicalVolume *pLogical) -// Set the logical volume. Must not be called when geometry closed -// void SetMother(G4VPhysicalVolume *pMother) -// Set the mother volume. Must not be called when geometry closed -// void SetName(const G4String& pName) -// Set the volume name -// -// Accessor functions that make a distinction between whether -// the rotation/translation is being made for the frame or the object/volume -// that is being placed. (They are the inverse of each other). -// -// G4RotationMatrix* GetObjectRotation() const // Obsolete -// inline G4RotationMatrix GetObjectRotationValue() const; // Replacement -// G4ThreeVector GetObjectTranslation() const -// Return the rotation/translation of the Object relative to the mother -// -// const G4RotationMatrix* GetFrameRotation() const -// G4ThreeVector GetFrameTranslation() const -// Return the rotation/translation of the Frame used to position -// this volume in its mother volume (opposite of object rot/trans). -// -// -// To be provided by subclasses: -// -// virtual G4int GetCopyNo() const = 0 -// Return the volumes copy number -// virtual G4bool IsMany() const = 0 -// Return true if the volume is MANY -// virtual G4Bool IsReplicated() const = 0 -// Return true if replicated (single object instance represents -// many real volumes), else false. -// virtual G4VPVParameterisation* GetParameterisation() const = 0; -// Return replicas parameterisation object (able to compute dimensions -// and transformations of replicas), or NULL if not applicable -// -// virtual void GetRelicationData(EAxis& axis, -// G4int& nReplicas, -// G4double& width, -// G4double& offset, -// G4bool& consuming) const = 0; -// -// Return replication information. No-op for no replicated volumes. -// -// virtual void Setup(G4VPhysicalVolume * pMother) = 0 -// Perform any initialisation/setup necessary for the given volume. -// [Set the current mother pointer to refer to the specified mother, by -// calling SetMother] +// be represented by a particular G4VPhysicalVolume. -// Older access methods: -// -// const G4ThreeVector& GetTranslation() const -// const G4RotationMatrix* GetRotation() const -// Return the translation/rotation of the volume -// -// void SetTranslation(const G4ThreeVector &v) -// G4RotationMatrix* GetRotation() -// void SetRotation(G4RotationMatrix*) -// NOT INTENDED FOR GENERAL USE. -// Non constant versions of above. Used to change transformation -// for replication/parameterisation mechanism. -// // History: // 09.11.99 J.Apostolakis Added GetObjectRotationValue() method & redid comments. // 28.08.96 P.Kent Replaced transform by rotmat + vector @@ -133,59 +38,110 @@ class G4VPVParameterisation; class G4VPhysicalVolume { -public: // with description + public: // with description + G4VPhysicalVolume(G4RotationMatrix *pRot, const G4ThreeVector &tlate, const G4String &pName, G4LogicalVolume *pLogical, G4VPhysicalVolume *pMother); + // Initialise volume, positioned in a frame which is rotated by *pRot, + // relative to the coordinate system of the mother volume pMother. + // The center of the object is then placed at tlate in the new + // coordinates. If pRot=0 the volume is unrotated with respect to its + // mother. The physical volume is added to the mother's logical volume. + // + // Must be called by all subclasses. pMother must point to a valid parent + // volume, except in the case of the world/top volume, when it =0. + // + // The constructor also registers volume with physical volume Store. + // Note that the Store may be removed or dynamically built in future + // because of memory constraints. -// Destructor - will be subclassed virtual ~G4VPhysicalVolume(); + // Destructor, will be subclassed. Removes volume from volume Store. -// Define equality by equal addresses only. G4bool operator == (const G4VPhysicalVolume& p) const; + // Define equality by equal addresses only. -// Access functions - G4RotationMatrix* GetObjectRotation() const; // Obsolete - inline G4RotationMatrix GetObjectRotationValue() const; // Replacement - G4ThreeVector GetObjectTranslation() const; + // Access functions + + // The following are accessor functions that make a distinction + // between whether the rotation/translation is being made for the + // frame or the object/volume that is being placed. + // (They are the inverse of each other). + G4RotationMatrix* GetObjectRotation() const; // Obsolete + G4RotationMatrix GetObjectRotationValue() const; // Replacement + G4ThreeVector GetObjectTranslation() const; + // Return the rotation/translation of the Object relative to the mother. const G4RotationMatrix* GetFrameRotation() const; - G4ThreeVector GetFrameTranslation() const; -// Older access functions, that do not distinguish between frame/object! + G4ThreeVector GetFrameTranslation() const; + // Return the rotation/translation of the Frame used to position + // this volume in its mother volume (opposite of object rot/trans). + + // Older access functions, that do not distinguish between frame/object! + const G4ThreeVector& GetTranslation() const; const G4RotationMatrix* GetRotation() const; + // Old access functions, that do not distinguish between frame/object! + // They return the translation/rotation of the volume. + + // Set functions -// Set functions void SetTranslation(const G4ThreeVector &v); G4RotationMatrix* GetRotation(); void SetRotation(G4RotationMatrix*); + // NOT INTENDED FOR GENERAL USE. + // Non constant versions of above. Used to change transformation + // for replication/parameterisation mechanism. G4LogicalVolume* GetLogicalVolume() const; + // Return the associated logical volume. void SetLogicalVolume(G4LogicalVolume *pLogical); + // Set the logical volume. Must not be called when geometry closed. G4VPhysicalVolume* GetMother() const; + // Return the current mother pointer. void SetMother(G4VPhysicalVolume *pMother); + // Set the mother volume. Must not be called when geometry closed. G4String GetName() const; + // Return the volume's name. void SetName(const G4String& pName); + // Set the volume's name. + + // Functions required of subclasses -// Functions required of subclasses virtual G4bool IsMany() const = 0; + // Return true if the volume is MANY (not implemented yet). virtual G4int GetCopyNo() const = 0; + // Return the volumes copy number. virtual void SetCopyNo(G4int CopyNo) = 0; + // Set the volumes copy number. virtual G4bool IsReplicated() const = 0; + // Return true if replicated (single object instance represents + // many real volumes), else false. virtual G4VPVParameterisation* GetParameterisation() const = 0; + // Return replicas parameterisation object (able to compute dimensions + // and transformations of replicas), or NULL if not applicable. virtual void GetReplicationData(EAxis& axis, G4int& nReplicas, G4double& width, G4double& offset, G4bool& consuming) const = 0; + // Return replication information. No-op for no replicated volumes. virtual void Setup(G4VPhysicalVolume *pMother) = 0; -protected: + // Perform any initialisation/setup necessary for the given volume. + // [Set the current mother pointer to refer to the specified mother, + // by calling SetMother] + + protected: + G4RotationMatrix *frot; G4ThreeVector ftrans; -private: + + private: + G4LogicalVolume *flogical; // The logical volume representing the // physical and tracking attributes of // the volume @@ -196,6 +152,3 @@ private: #include "G4VPhysicalVolume.icc" #endif - - - diff --git a/source/geometry/management/include/G4VPhysicalVolume.icc b/source/geometry/management/include/G4VPhysicalVolume.icc index 98fc3da03e..182f2ba7ca 100644 --- a/source/geometry/management/include/G4VPhysicalVolume.icc +++ b/source/geometry/management/include/G4VPhysicalVolume.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VPhysicalVolume.icc,v 1.3 1999/12/15 14:49:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4VPhysicalVolume Inline Implementation diff --git a/source/geometry/management/include/G4VSolid.hh b/source/geometry/management/include/G4VSolid.hh index fdfcd54fa6..7e112e74a8 100644 --- a/source/geometry/management/include/G4VSolid.hh +++ b/source/geometry/management/include/G4VSolid.hh @@ -5,16 +5,15 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VSolid.hh,v 1.4 1999/12/15 14:49:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VSolid.hh,v 1.6 2000/04/20 16:49:48 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// Class Description -// // class G4VSolid // -// Abstract base class solids, physical shapes that can be tracked through. +// Class description: // +// Abstract base class for solids, physical shapes that can be tracked through. // Each solid has a name, and the constructors and destructors automatically // add and subtract them from the G4SolidStore, a singleton `master' List // of available solids. @@ -31,182 +30,15 @@ // // Some visualization/graphics functions are also defined. // -// -// Member Functions: -// -// G4VSolid(G4String& name) -// Creates a new shape, with the supplied name -// No provision is made for sharing a common name amoungst multiple classes. -// -// G4String GetName() const -// Returns the current shape's name -// SetName(const G4String& s) -// Sets the current shape's name -// -// (All remaining functions are pure virtual) -// -// G4bool CalculateExtent(const EAxis pAxis, -// const G4VoxelLimit& pVoxelLimit, -// const G4AffineTransform& pTransform, -// G4double& min, G4double& max) -// -// Calculate the minimum and maximum extent of the solid, when under the -// specified transform, and within the specified limits. If the solid does -// is not intersected by the region, return false, else return true. -// -// EInside Inside(const G4ThreeVector& p) -// Returns kOutside if the point at offset p is outside the shapes boundaries -// plus Tolerance/2, kSurface if the point is <=Tolerance/2 from a surface, -// otherwise kInside. -// -// G4ThreeVector SurfaceNormal(const G4ThreeVector& p) -// Returns the outwards pointing unit normal of the shape for the -// surface closest to the point at offset p. -// -// G4double DistanceToIn(const G4ThreeVector& p) -// Calculate distance to nearest surface of shape from an outside point -// The distance can be an underestimate. -// -// G4double DistanceToIn(const G4ThreeVector& p, constG4ThreeVector& v) -// Return distance along the normalised vector v to the shape, from the -// point at offset p. If there is no intersection, return kInifinity. -// The first intersection resulting from `leaving' a surface/volume is -// discarded. Hence, tolerant of points on surface of shape. -// -// G4double DistanceToOut(const G4ThreeVector& p) -// Calculate distance to nearest surface of shape from an inside point -// The distance can be an underestimate. -// -// G4double DistanceToOut(const G4ThreeVector& p,const G4ThreeVector& v, -// const G4bool calcNorm=false, -// G4bool *validNorm=0,G4ThreeVector *n=0; -// Return distance along the normalised vector v to the shape, from a point -// at an offset p inside or on the surface of the shape. Intersections with -// surfaces, when the point is pMax pMax is set to the new maximum -// -// Modifications to pPolygon are made - it is left in an undefined state -// -// -// void ClipCrossSection(G4ThreeVectorList* pVertices, -// const G4int pSectionIndex, -// const G4VoxelLimits& pVoxelLimit, -// const EAxis pAxis, -// G4double& pMin, G4double& pMax) const; -// -// Calculate the maximum and minimum extents of the polygon described -// by the vertices: pSectionIndex->pSectionIndex+1-> -// pSectionIndex+2->pSectionIndex+3->pSectionIndex -// in the List pVertices -// -// If the minimum is pMax pMax is set to the new maximum -// -// No modifications are made to pVertices -// -// -// void ClipBetweenSections(G4ThreeVectorList* pVertices, -// const G4int pSectionIndex, -// const G4VoxelLimits& pVoxelLimit, -// const EAxis pAxis, -// G4double& pMin, G4double& pMax) const; -// -// Calculate the maximum and minimum extents of the polygons -// joining the CrossSections at pSectionIndex->pSectionIndex+3 and -// pSectionIndex+4->pSectionIndex7 -// -// in the List pVertices, within the boundaries of the voxel limits. -// -// If the minimum is pMax pMax is set to the new maximum -// -// No modifications are made to pVertices -// -// -// void ClipPolygon(G4ThreeVectorList& pPolygon, -// const G4VoxelLimits& pVoxelLimit) const; -// -// Clip the specified convex polygon to the given limits, where -// the polygon is described by the vertices at (0),(1),...,(n),(0) in -// pPolygon. If the polygon is completely clipped away, the polygon is -// cleared. -// -// -// -// -// Private functions: -// -// void ClipPolygonToSimpleLimits(G4ThreeVectorList& pPolygon, -// G4ThreeVectorList& outputPolygon, -// const G4VoxelLimits& pVoxelLimit) const; -// -// Clip the specified convex polygon to the given limits, storing the -// result in outputPolygon. The voxel limits must be limited in one -// *plane* only: This is achieved by having only x or y or z limits, -// and either the minimum or maximum limit set to -+kInfinity respectively. -// -// -// -// -// Operators: -// -// G4bool operator==(const G4VSolid& s) const -// Return true only if addresses are the same -// - // Member Data: // // G4String fshapeName -// Name for this solid. -// +// - Name for this solid. + // History: +// 12.04.00 J.Allison Implemented GetExtent() in terms of CalculateExtent() // 17.06.98 J.Apostolakis Added pure virtual function GetEntityType() -// 26.07.96 P.Kent Added ComputeDimensions for replication mechanism. +// 26.07.96 P.Kent Added ComputeDimensions for replication mechanism // 27.03.96 J.Allison Methods for visualisation // 30.06.95 P.Kent Initial version, no scoping or visualisation functions @@ -230,129 +62,178 @@ class G4DisplacedSolid; #include "G4ThreeVector.hh" #include "g4rw/tvordvec.h" + typedef G4RWTValOrderedVector G4ThreeVectorList; typedef G4String G4GeometryType; -class G4VSolid { -public: // With description - G4VSolid(const G4String& name); - virtual ~G4VSolid(); +class G4VSolid +{ + public: // with description - G4bool operator==( const G4VSolid& s) const - { - return (this==&s) ? true : false; - } + G4VSolid(const G4String& name); + // Creates a new shape, with the supplied name. No provision is made + // for sharing a common name amongst multiple classes. + virtual ~G4VSolid(); + // Default destructor. + + G4bool operator==( const G4VSolid& s) const; + // Return true only if addresses are the same. G4String GetName() const; + // Returns the current shape's name. void SetName(const G4String& name); + // Sets the current shape's name. virtual G4bool CalculateExtent(const EAxis pAxis, const G4VoxelLimits& pVoxelLimit, const G4AffineTransform& pTransform, G4double& pMin, G4double& pMax) const = 0; - + // Calculate the minimum and maximum extent of the solid, when under the + // specified transform, and within the specified limits. If the solid + // is not intersected by the region, return false, else return true. + virtual EInside Inside(const G4ThreeVector& p) const = 0; + // Returns kOutside if the point at offset p is outside the shapes + // boundaries plus Tolerance/2, kSurface if the point is <=Tolerance/2 + // from a surface, otherwise kInside. virtual G4ThreeVector SurfaceNormal(const G4ThreeVector& p) const = 0; + // Returns the outwards pointing unit normal of the shape for the + // surface closest to the point at offset p. virtual G4double DistanceToIn(const G4ThreeVector& p, - const G4ThreeVector& v) const = 0; + const G4ThreeVector& v) const = 0; + // Return the distance along the normalised vector v to the shape, + // from the point at offset p. If there is no intersection, return + // kInfinity. The first intersection resulting from `leaving' a + // surface/volume is discarded. Hence, it is tolerant of points on + // the surface of the shape. + virtual G4double DistanceToIn(const G4ThreeVector& p) const = 0; + // Calculate the distance to the nearest surface of a shape from an + // outside point. The distance can be an underestimate. + virtual G4double DistanceToOut(const G4ThreeVector& p, const G4ThreeVector& v, const G4bool calcNorm=false, G4bool *validNorm=0, G4ThreeVector *n=0) const = 0; + // Return the distance along the normalised vector v to the shape, + // from a point at an offset p inside or on the surface of the shape. + // Intersections with surfaces, when the point is pMax pMax is set to the new maximum -// -// Modifications to pPolygon are made - it is left in an undefined state + protected: // with description void CalculateClippedPolygonExtent(G4ThreeVectorList& pPolygon, const G4VoxelLimits& pVoxelLimit, const EAxis pAxis, G4double& pMin, G4double& pMax) const; -// Calculate the maximum and minimum extents of the polygon described -// by the vertices: pSectionIndex->pSectionIndex+1-> -// pSectionIndex+2->pSectionIndex+3->pSectionIndex -// in the List pVertices -// -// If the minimum is pMax pMax is set to the new maximum -// -// No modifications are made to pVertices + // Calculate the maximum and minimum extents of the convex polygon + // pPolygon along the axis pAxis, within the limits pVoxelLimit. + // + // If the minimum is pMax pMax is set to the new maximum. + // + // Modifications to pPolygon are made - it is left in an undefined state. + void ClipCrossSection(G4ThreeVectorList* pVertices, const G4int pSectionIndex, const G4VoxelLimits& pVoxelLimit, const EAxis pAxis, G4double& pMin, G4double& pMax) const; - -// Calculate the maximum and minimum extents of the polygons -// joining the CrossSections at pSectionIndex->pSectionIndex+3 and -// pSectionIndex+4->pSectionIndex7 -// -// in the List pVertices, within the boundaries of the voxel limits pVoxelLimit -// -// If the minimum is pMax pMax is set to the new maximum -// -// No modifications are made to pVertices + // Calculate the maximum and minimum extents of the polygon described + // by the vertices: pSectionIndex->pSectionIndex+1-> + // pSectionIndex+2->pSectionIndex+3->pSectionIndex + // in the List pVertices. + // + // If the minimum is pMax pMax is set to the new maximum. + // + // No modifications are made to pVertices. void ClipBetweenSections(G4ThreeVectorList* pVertices, const G4int pSectionIndex, const G4VoxelLimits& pVoxelLimit, const EAxis pAxis, G4double& pMin, G4double& pMax) const; - -// Clip the specified convex polygon to the given limits, where -// the polygon is described by the vertices at (0),(1),...,(n),(0) in pPolygon. -// -// If the polygon is completely clipped away, the polygon is cleared. + // Calculate the maximum and minimum extents of the polygons + // joining the CrossSections at pSectionIndex->pSectionIndex+3 and + // pSectionIndex+4->pSectionIndex7 + // in the List pVertices, within the boundaries of the voxel limits + // pVoxelLimit. + // + // If the minimum is pMax pMax is set to the new maximum. + // + // No modifications are made to pVertices. void ClipPolygon(G4ThreeVectorList& pPolygon, const G4VoxelLimits& pVoxelLimit) const; + // Clip the specified convex polygon to the given limits, where + // the polygon is described by the vertices at (0),(1),...,(n),(0) in + // pPolygon. + // If the polygon is completely clipped away, the polygon is cleared. private: -// Clip the specified convex polygon to the given limits, storing the -// result in outputPolygon. The voxel limits must be limited in one -// *plane* only: This is achieved by having only x or y or z limits, -// and either the minimum or maximum limit set to -+kInfinity respectively. - void ClipPolygonToSimpleLimits(G4ThreeVectorList& pPolygon, G4ThreeVectorList& outputPolygon, const G4VoxelLimits& pVoxelLimit) const; + // Clip the specified convex polygon to the given limits, storing the + // result in outputPolygon. The voxel limits must be limited in one + // *plane* only: This is achieved by having only x or y or z limits, + // and either the minimum or maximum limit set to -+kInfinity + // respectively. G4String fshapeName; // Name }; diff --git a/source/geometry/management/include/G4VSolid.icc b/source/geometry/management/include/G4VSolid.icc index 6ba38e0578..69a3550f22 100644 --- a/source/geometry/management/include/G4VSolid.icc +++ b/source/geometry/management/include/G4VSolid.icc @@ -5,15 +5,27 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VSolid.icc,v 1.2 1999/12/15 14:49:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VSolid.icc,v 1.3 2000/04/20 16:49:48 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // +// G4VSolid Inline implementation +// -inline G4Polyhedron* G4VSolid::CreatePolyhedron () const { +inline +G4bool G4VSolid::operator==( const G4VSolid& s) const +{ + return (this==&s) ? true : false; +} + +inline +G4Polyhedron* G4VSolid::CreatePolyhedron () const +{ return 0; } -inline G4NURBS* G4VSolid::CreateNURBS () const { +inline +G4NURBS* G4VSolid::CreateNURBS () const +{ return 0; } diff --git a/source/geometry/management/include/G4VTouchable.hh b/source/geometry/management/include/G4VTouchable.hh index 696676551e..315b9b8038 100644 --- a/source/geometry/management/include/G4VTouchable.hh +++ b/source/geometry/management/include/G4VTouchable.hh @@ -5,35 +5,31 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VTouchable.hh,v 1.2 1999/12/15 14:49:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VTouchable.hh,v 1.3 2000/04/20 16:49:48 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// class G4VTouchable Paul Kent August 1996 +// class G4VTouchable // -// Modified: John Apostolakis, July 1997: new methods to Retrieve replica -// and history information -// (intention is to hide NavigHistory) -// Motivation: -// ---------- -// Base class for `touchable' objects capable of maintaining an +// Class description: +// +// Base class for `touchable' objects capable of maintaining an // association between parts of the geometrical hierarchy (volumes -// &/or solids) and their resultant transformation +// &/or solids) and their resultant transformation. // // Utilisation: -// ----------- -// -// A touchable is a geometrical volume (solid) which has a unique -// placement in a detector description. It an abstract base class which +// ----------- +// A touchable is a geometrical volume (solid) which has a unique +// placement in a detector description. It is an abstract base class which // can be implemented in a variety of ways. Each way must provide the -// capabilities of obtaining the transformation and solid that is described by -// the touchable. +// capabilities of obtaining the transformation and solid that is described +// by the touchable. // // All G4VTouchable implementations must respond to the two following // "requests": // // 1) GetTranslation and GetRotation that return the components of the -// volume's transformation +// volume's transformation. // // 2) GetSolid that gives the solid of this touchable. // @@ -43,38 +39,44 @@ // // Several capabilities are available from touchables with physical volumes: // -// 3) GetVolume gives the physical volume +// 3) GetVolume gives the physical volume. // // 4) GetReplicaNumber gives the replica number of the physical volume, -// if it is replicated. +// if it is replicated. // -// Touchables that Store volume hierarchy (history) have the whole stack of +// Touchables that store volume hierarchy (history) have the whole stack of // parent volumes available. Thus it is possible to add a little more state // in order to extend its functionality. We add a "pointer" to a level and a -// member function to move the level in this stack. Then -// calling the above member functions for another level the information for -// that level can be retrieved. +// member function to move the level in this stack. Then calling the above +// member functions for another level, the information for that level can be +// retrieved. // -// The top of the history tree is, by convention, the world volume. +// The top of the history tree is, by convention, the world volume. // -// 5) GetHistoryDepth gives the depth of the history tree +// 5) GetHistoryDepth gives the depth of the history tree. // -// 6) GetReplicaNumber, GetVolume, GetTranslation and GetRotation call -// each be called with a depth argument. They return the value of the -// respective level of the touchable. +// 6) GetReplicaNumber, GetVolume, GetTranslation and GetRotation each +// can be called with a depth argument. They return the value of the +// respective level of the touchable. // -// 7) MoveUpHistory( num ) moves the current pointer inside the -// touchable to point "num" levels up the history tree. Thus, eg, calling -// it with num=1 will cause the internal pointer to move to the mother -// of the current volume. -// -------> THIS method MODIFIES the touchable <-------- +// 7) MoveUpHistory(num) moves the current pointer inside the touchable +// to point "num" levels up the history tree. Thus, eg, calling +// it with num=1 will cause the internal pointer to move to the mother +// of the current volume. +// NOTE: this method MODIFIES the touchable. // -// An update method, with different arguments is available, so -// that the information in a touchable can be updated: +// An update method, with different arguments is available, so that the +// information in a touchable can be updated: // -// 8) UpdateYourself takes a physical volume pointer and can additionally -// take a NavigationHistory. +// 8) UpdateYourself takes a physical volume pointer and can additionally +// take a NavigationHistory. +// History: +// Created: Paul Kent, August 1996 +// +// Modified: John Apostolakis, July 1997: new methods to Retrieve replica +// and history information +// (intention is to hide NavigHistory) #ifndef G4VTOUCHABLE_HH #define G4VTOUCHABLE_HH @@ -90,28 +92,37 @@ class G4NavigationHistory; class G4VTouchable { -public: + + public: // with description + G4VTouchable(); virtual ~G4VTouchable(); + // Constructor and destructor. virtual const G4ThreeVector& GetTranslation(G4int depth=0) const = 0; - virtual const G4RotationMatrix* GetRotation(G4int depth=0) const = 0; + virtual const G4RotationMatrix* GetRotation(G4int depth=0) const = 0; + // Accessors for translation and rotation. virtual G4VPhysicalVolume* GetVolume(G4int depth=0) const; virtual G4VSolid* GetSolid(G4int depth=0) const; + // Accessors for physical volumes and solid. - // Methods for touchables with history virtual G4int GetReplicaNumber(G4int depth=0) const; - virtual G4int GetHistoryDepth() const; - virtual G4int MoveUpHistory( G4int num_levels = 1 ); + virtual G4int GetHistoryDepth() const; + virtual G4int MoveUpHistory(G4int num_levels=1); + // Methods for touchables with history. + + virtual void UpdateYourself(G4VPhysicalVolume* pPhysVol, + const G4NavigationHistory* history=NULL); + // Update method. + + public: // without description + // virtual void ResetLevel(); - // Update method - virtual void UpdateYourself( G4VPhysicalVolume* pPhysVol, - const G4NavigationHistory* history=NULL); - - // Should this method be depricated ? It is used in G4Navigator! virtual const G4NavigationHistory* GetHistory() const; + // Should this method be deprecated ? It is used in G4Navigator! }; #include "G4VTouchable.icc" + #endif diff --git a/source/geometry/management/include/G4VTouchable.icc b/source/geometry/management/include/G4VTouchable.icc index 3629d6bbde..1aa3f69ef0 100644 --- a/source/geometry/management/include/G4VTouchable.icc +++ b/source/geometry/management/include/G4VTouchable.icc @@ -5,57 +5,67 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VTouchable.icc,v 1.2 1999/12/15 14:49:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VTouchable.icc,v 1.3 2000/04/20 16:49:48 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4VTouchable Inline implementation +// -inline G4VTouchable::G4VTouchable() +inline +G4VTouchable::G4VTouchable() { } -inline G4VTouchable::~G4VTouchable() +inline +G4VTouchable::~G4VTouchable() { } -inline G4VPhysicalVolume* G4VTouchable::GetVolume(G4int) const +inline +G4VPhysicalVolume* G4VTouchable::GetVolume(G4int) const { G4Exception("G4VTouchable::GetVolume(G4int depth) undefined"); return NULL; } -inline G4VSolid* G4VTouchable::GetSolid(G4int) const +inline +G4VSolid* G4VTouchable::GetSolid(G4int) const { G4Exception("G4VTouchable::GetSolid(G4int depth) undefined"); return NULL; } -inline G4int G4VTouchable::GetReplicaNumber(G4int) const +inline +G4int G4VTouchable::GetReplicaNumber(G4int) const { G4Exception("G4VTouchable::GetReplicaNumber(G4int depth) undefined"); return 0; } -inline G4int G4VTouchable::MoveUpHistory( G4int ) +inline +G4int G4VTouchable::MoveUpHistory( G4int ) { G4Exception("G4VTouchable::MoveUpHistory(G4int) undefined "); return 0; // for this touchable subclass } -inline void G4VTouchable::UpdateYourself( G4VPhysicalVolume* , - const G4NavigationHistory* ) +inline +void G4VTouchable::UpdateYourself(G4VPhysicalVolume*, + const G4NavigationHistory* ) { G4Exception("G4VTouchable::UpdateYourself( G4VPhysicalVolume*, const G4NavigationHistory* ) undefined "); } -inline G4int G4VTouchable::GetHistoryDepth() const +inline +G4int G4VTouchable::GetHistoryDepth() const { G4Exception("G4VTouchable::GetHistoryDepth() undefined "); return 0; } -inline const G4NavigationHistory* G4VTouchable::GetHistory() const +inline +const G4NavigationHistory* G4VTouchable::GetHistory() const { G4Exception("G4VTouchable::GetHistory() undefined"); return NULL; @@ -67,8 +77,3 @@ inline void G4VTouchable::ResetLevel() G4Exception("G4VTouchable::ResetLevel() undefined"); } #endif - - - - - diff --git a/source/geometry/management/include/G4VoxelLimits.hh b/source/geometry/management/include/G4VoxelLimits.hh index 21c89b85c9..42ce62d2e9 100644 --- a/source/geometry/management/include/G4VoxelLimits.hh +++ b/source/geometry/management/include/G4VoxelLimits.hh @@ -5,91 +5,29 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VoxelLimits.hh,v 1.3 1999/12/15 16:40:07 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VoxelLimits.hh,v 1.4 2000/04/20 16:49:48 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4VoxelLimits // -// Represents limitation/restrictions of space , where restrictions +// Class description: +// +// Represents limitation/restrictions of space, where restrictions // are only made perpendicular to the cartesian axes. // // -// Member functions: -// -// G4VoxelLimits() -// Construct, with volume unrestricted -// ~G4VoxelLimits() -// No actions. -// AddLimit(const EAxis pAxis, const G4double pMin,const G4double pMax) -// Restict the volume to between specified min and max along the given axis. -// Cartesian axes only, pMin<=pMax. -// G4double GetMaxXExtent() const -// Return maximum x extent -// G4double GetMaxYExtent() const -// Return maximum y extent -// G4double GetMaxZExtent() const -// Return maximum z extent -// G4double GetMinXExtent() const -// Return minimum x extent -// G4double GetMinYExtent() const -// Return minimum y extent -// G4double GetMinZExtent() const -// Return minimum z extent -// G4double GetMaxExtent(const EAxis pAxis) const -// Return maximum extent of volume along specified axis. -// G4double GetMinExtent(const EAxis pAxis) const -// Return maximum extent of volume along specified axis. -// G4bool IsLimited() const -// Return true if limited along any axis -// G4bool IsLimited(const EAxis pAxis) const -// Return true if the specified axis is resticted/limited. -// G4bool IsXLimited() const -// Return true if the x axis is limited -// G4bool IsYLimited() const -// Return true if the y axis is limited -// G4bool IsZLimited() const -// Return true if the z axis is limited -// -// G4bool ClipToLimits(G4ThreeVector& pStart,G4ThreeVector& pEnd) -// Clip the line segment pStart->pEnd to the volume described by the -// current limits. Return true if the line remains after clipping, -// else false, and leave the vectors in an undefined state. -// -// G4bool Inside(const G4ThreeVector& pVec) const -// Return true if the specified vector is inside/on boundaries -// of limits -// -// G4int OutCode(const G4ThreeVector& pVec) const -// Calculate the `outcode' for the specified vector. -// Intended for use during clipping against the limits -// The bits are set given following conditions: -// 0 pVec.x()fxAxisMax && IsXLimited() -// 2 pVec.y()fyAxisMax && IsYLimited() -// 4 pVec.z()fzAxisMax && IsZLimited() -// // Member data: // // G4double fxAxisMin,fxAxisMax // G4double fyAxisMin,fyAxisMax // G4double fzAxisMin,fzAxisMax -// The min and max values along each axis. +-kInfinity if not restricted +// - The min and max values along each axis. +-kInfinity if not restricted. // // -// operators: -// -// G4std::ostream& operator << (G4std::ostream& os, const G4VoxelLimits& pLim); -// -// Print the limits to the stream in the form: -// "{(xmin,xmax) (ymin,ymax) (zmin,zmax)}" Replace (xmin,xmax) by (-,-) -// when not limited. -// // Notes: // -// Beware no break statements after returns in switch(pAxis)s -// +// Beware no break statements after returns in switch(pAxis)s. + // History: // 13.07.95 P.Kent Initial version. @@ -106,146 +44,82 @@ class G4VoxelLimits { -public: -// Constructor - initialise to be unlimited + public: // with description + G4VoxelLimits() : fxAxisMin(-kInfinity),fxAxisMax(kInfinity), fyAxisMin(-kInfinity),fyAxisMax(kInfinity), - fzAxisMin(-kInfinity),fzAxisMax(kInfinity) - {;} + fzAxisMin(-kInfinity),fzAxisMax(kInfinity) {;} + // Constructor - initialise to be unlimited. Volume unrestricted. -// G4VoxelLimits(const G4VoxelLimits& v); - -// Destructor ~G4VoxelLimits() {;} + // Destructor. No actions. -// Further restict limits void AddLimit(const EAxis pAxis, const G4double pMin,const G4double pMax); + // Restrict the volume to between specified min and max along the + // given axis. Cartesian axes only, pMin<=pMax. -// Return appropriate max limit - G4double GetMaxXExtent() const - { - return fxAxisMax; - } - G4double GetMaxYExtent() const - { - return fyAxisMax; - } - G4double GetMaxZExtent() const - { - return fzAxisMax; - } + G4double GetMaxXExtent() const; + // Return maximum x extent. + G4double GetMaxYExtent() const; + // Return maximum y extent. + G4double GetMaxZExtent() const; + // Return maximum z extent. -// Return appropriate min limit - G4double GetMinXExtent() const - { - return fxAxisMin; - } - G4double GetMinYExtent() const - { - return fyAxisMin; - } - G4double GetMinZExtent() const - { - return fzAxisMin; - } + G4double GetMinXExtent() const; + // Return minimum x extent. + G4double GetMinYExtent() const; + // Return minimum y extent. + G4double GetMinZExtent() const; + // Return minimum z extent. -// Return specified max limit - G4double GetMaxExtent(const EAxis pAxis) const - { - if (pAxis==kXAxis) - { - return GetMaxXExtent(); - } - else if (pAxis==kYAxis) - { - return GetMaxYExtent(); - } - else - { - assert(pAxis==kZAxis); - return GetMaxZExtent(); - } - } + G4double GetMaxExtent(const EAxis pAxis) const; + // Return maximum extent of volume along specified axis. + G4double GetMinExtent(const EAxis pAxis) const; + // Return minimum extent of volume along specified axis. -//Return min limit - G4double GetMinExtent(const EAxis pAxis) const - { - if (pAxis==kXAxis) - { - return GetMinXExtent(); - } - else if (pAxis==kYAxis) - { - return GetMinYExtent(); - } - else - { - assert(pAxis==kZAxis); - return GetMinZExtent(); - } - } + G4bool IsXLimited() const; + // Return true if the x axis is limited. + G4bool IsYLimited() const; + // Return true if the y axis is limited. + G4bool IsZLimited() const; + // Return true if the z axis is limited. -// Return true if x axis is limited - G4bool IsXLimited() const - { - return (fxAxisMin==-kInfinity&&fxAxisMax==kInfinity) ? false : true; - } -// Return true if y axis is limited - G4bool IsYLimited() const - { - return (fyAxisMin==-kInfinity&&fyAxisMax==kInfinity) ? false : true; - } -// Return true if z axis is limited - G4bool IsZLimited() const - { - return (fzAxisMin==-kInfinity&&fzAxisMax==kInfinity) ? false : true; - } - -// Return true if limited along any axis - G4bool IsLimited() const - { - return (IsXLimited()||IsYLimited()||IsZLimited()); - } - -// Return true if specified axis is limited - G4bool IsLimited(const EAxis pAxis) const - { - if (pAxis==kXAxis) - { - return IsXLimited(); - } - else if (pAxis==kYAxis) - { - return IsYLimited(); - } - else - { - assert(pAxis==kZAxis); - return IsZLimited(); - } - } + G4bool IsLimited() const; + // Return true if limited along any axis + G4bool IsLimited(const EAxis pAxis) const; + // Return true if the specified axis is restricted/limited. G4bool ClipToLimits(G4ThreeVector& pStart,G4ThreeVector& pEnd) const; + // Clip the line segment pStart->pEnd to the volume described by the + // current limits. Return true if the line remains after clipping, + // else false, and leave the vectors in an undefined state. -// Return true if specified vector is inside/on boundaries of limits - G4bool Inside(const G4ThreeVector& pVec) const - { - return ((GetMinXExtent()<=pVec.x()) && - (GetMaxXExtent()>=pVec.x()) && - (GetMinYExtent()<=pVec.y()) && - (GetMaxYExtent()>=pVec.y()) && - (GetMinZExtent()<=pVec.z()) && - (GetMaxZExtent()>=pVec.z()) ) ? true : false; - } + G4bool Inside(const G4ThreeVector& pVec) const; + // Return true if the specified vector is inside/on boundaries of limits. G4int OutCode(const G4ThreeVector& pVec) const; + // Calculate the `outcode' for the specified vector. + // Intended for use during clipping against the limits + // The bits are set given the following conditions: + // 0 pVec.x()fxAxisMax && IsXLimited() + // 2 pVec.y()fyAxisMax && IsYLimited() + // 4 pVec.z()fzAxisMax && IsZLimited() + + private: -private: G4double fxAxisMin,fxAxisMax; G4double fyAxisMin,fyAxisMax; G4double fzAxisMin,fzAxisMax; }; +#include "G4VoxelLimits.icc" + G4std::ostream& operator << (G4std::ostream& os, const G4VoxelLimits& pLim); + // Print the limits to the stream in the form: + // "{(xmin,xmax) (ymin,ymax) (zmin,zmax)}" + // Replace (xmin,xmax) by (-,-) when not limited. #endif diff --git a/source/geometry/management/include/G4VoxelLimits.icc b/source/geometry/management/include/G4VoxelLimits.icc new file mode 100644 index 0000000000..5bf179761b --- /dev/null +++ b/source/geometry/management/include/G4VoxelLimits.icc @@ -0,0 +1,138 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4VoxelLimits.icc,v 1.1 2000/04/20 16:49:48 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// G4VoxelLimits Inline implementation +// + +inline +G4double G4VoxelLimits::GetMaxXExtent() const +{ + return fxAxisMax; +} + +inline +G4double G4VoxelLimits::GetMaxYExtent() const +{ + return fyAxisMax; +} + +inline +G4double G4VoxelLimits::GetMaxZExtent() const +{ + return fzAxisMax; +} + +inline +G4double G4VoxelLimits::GetMinXExtent() const +{ + return fxAxisMin; +} + +inline +G4double G4VoxelLimits::GetMinYExtent() const +{ + return fyAxisMin; +} + +inline +G4double G4VoxelLimits::GetMinZExtent() const +{ + return fzAxisMin; +} + +inline +G4double G4VoxelLimits::GetMaxExtent(const EAxis pAxis) const +{ + if (pAxis==kXAxis) + { + return GetMaxXExtent(); + } + else if (pAxis==kYAxis) + { + return GetMaxYExtent(); + } + else + { + assert(pAxis==kZAxis); + return GetMaxZExtent(); + } +} + +inline +G4double G4VoxelLimits::GetMinExtent(const EAxis pAxis) const +{ + if (pAxis==kXAxis) + { + return GetMinXExtent(); + } + else if (pAxis==kYAxis) + { + return GetMinYExtent(); + } + else + { + assert(pAxis==kZAxis); + return GetMinZExtent(); + } +} + +inline +G4bool G4VoxelLimits::IsXLimited() const +{ + return (fxAxisMin==-kInfinity&&fxAxisMax==kInfinity) ? false : true; +} + +inline +G4bool G4VoxelLimits::IsYLimited() const +{ + return (fyAxisMin==-kInfinity&&fyAxisMax==kInfinity) ? false : true; +} + +inline +G4bool G4VoxelLimits::IsZLimited() const +{ + return (fzAxisMin==-kInfinity&&fzAxisMax==kInfinity) ? false : true; +} + +inline +G4bool G4VoxelLimits::IsLimited() const +{ + return (IsXLimited()||IsYLimited()||IsZLimited()); +} + +inline +G4bool G4VoxelLimits::IsLimited(const EAxis pAxis) const +{ + if (pAxis==kXAxis) + { + return IsXLimited(); + } + else if (pAxis==kYAxis) + { + return IsYLimited(); + } + else + { + assert(pAxis==kZAxis); + return IsZLimited(); + } +} + +inline +G4bool G4VoxelLimits::Inside(const G4ThreeVector& pVec) const +{ + return ((GetMinXExtent()<=pVec.x()) && + (GetMaxXExtent()>=pVec.x()) && + (GetMinYExtent()<=pVec.y()) && + (GetMaxYExtent()>=pVec.y()) && + (GetMinZExtent()<=pVec.z()) && + (GetMaxZExtent()>=pVec.z()) ) ? true : false; +} diff --git a/source/geometry/management/include/meshdefs.hh b/source/geometry/management/include/meshdefs.hh index 6a9a9a1862..2bee67de85 100644 --- a/source/geometry/management/include/meshdefs.hh +++ b/source/geometry/management/include/meshdefs.hh @@ -5,12 +5,12 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: meshdefs.hh,v 1.2 1999/12/15 14:49:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: meshdefs.hh,v 1.3 2000/04/20 16:49:49 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Tube/Cone Meshing constants for extent calculations -// + // History: // 13.08.95 P.Kent Created separate file @@ -27,8 +27,3 @@ const G4int kMaxMeshSections=37; // max wedges+1 to make // =>10 degrees/wedge for complete tube #endif - - - - - diff --git a/source/geometry/management/include/voxeldefs.hh b/source/geometry/management/include/voxeldefs.hh index dae224c3b1..a211d0b325 100644 --- a/source/geometry/management/include/voxeldefs.hh +++ b/source/geometry/management/include/voxeldefs.hh @@ -5,13 +5,13 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: voxeldefs.hh,v 1.3 1999/12/15 14:49:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: voxeldefs.hh,v 1.4 2000/04/20 16:49:49 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// // - // // Voxel Optimisation Constants -// + // History: // 12.02.99 S.Giani made numerical values consistent with Geant3.21 // 13.08.95 P.Kent Created separate file @@ -33,8 +33,3 @@ const G4int kMinVoxelVolumesLevel3=4; // Only make third level of refinement // if >= this no of volumes in // 2nd level node #endif - - - - - diff --git a/source/geometry/management/src/G4DrawVoxels.cc b/source/geometry/management/src/G4DrawVoxels.cc index a561d722c5..8be03516cf 100644 --- a/source/geometry/management/src/G4DrawVoxels.cc +++ b/source/geometry/management/src/G4DrawVoxels.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4DrawVoxels.cc,v 1.10 2000/01/19 17:26:30 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4DrawVoxels diff --git a/source/geometry/management/src/G4GeometryManager.cc b/source/geometry/management/src/G4GeometryManager.cc index 9fbc6e2faa..a57f353cf6 100644 --- a/source/geometry/management/src/G4GeometryManager.cc +++ b/source/geometry/management/src/G4GeometryManager.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4GeometryManager.cc,v 1.2 1999/12/15 14:49:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4GeometryManager // diff --git a/source/geometry/management/src/G4LogicalVolume.cc b/source/geometry/management/src/G4LogicalVolume.cc index 0d9ae203b6..24bfd0c52e 100644 --- a/source/geometry/management/src/G4LogicalVolume.cc +++ b/source/geometry/management/src/G4LogicalVolume.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4LogicalVolume.cc,v 1.3 1999/12/15 14:49:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4LogicalVolume Implementation diff --git a/source/geometry/management/src/G4LogicalVolumeStore.cc b/source/geometry/management/src/G4LogicalVolumeStore.cc index 8b2e9cf05d..0e496f8f42 100644 --- a/source/geometry/management/src/G4LogicalVolumeStore.cc +++ b/source/geometry/management/src/G4LogicalVolumeStore.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4LogicalVolumeStore.cc,v 1.4 1999/12/15 14:49:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4LogicalVolumeStore // diff --git a/source/geometry/management/src/G4PVParameterised.cc b/source/geometry/management/src/G4PVParameterised.cc index f3d640352e..8e11937c8b 100644 --- a/source/geometry/management/src/G4PVParameterised.cc +++ b/source/geometry/management/src/G4PVParameterised.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PVParameterised.cc,v 1.2 1999/12/15 14:49:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4PVParameterised diff --git a/source/geometry/management/src/G4PVPlacement.cc b/source/geometry/management/src/G4PVPlacement.cc index bb6700cb16..24404f6bc8 100644 --- a/source/geometry/management/src/G4PVPlacement.cc +++ b/source/geometry/management/src/G4PVPlacement.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PVPlacement.cc,v 1.2 1999/12/15 14:49:53 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4PVPlacement Implementation diff --git a/source/geometry/management/src/G4PVReplica.cc b/source/geometry/management/src/G4PVReplica.cc index 72b552ee82..fc288df19c 100644 --- a/source/geometry/management/src/G4PVReplica.cc +++ b/source/geometry/management/src/G4PVReplica.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PVReplica.cc,v 1.2 1999/12/15 14:49:53 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4PVReplica Implementation diff --git a/source/geometry/management/src/G4PhysicalVolumeStore.cc b/source/geometry/management/src/G4PhysicalVolumeStore.cc index 14a5ac747f..31dfa464da 100644 --- a/source/geometry/management/src/G4PhysicalVolumeStore.cc +++ b/source/geometry/management/src/G4PhysicalVolumeStore.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PhysicalVolumeStore.cc,v 1.4 1999/12/15 14:49:53 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4PhysicalVolumeStore // diff --git a/source/geometry/management/src/G4SmartVoxelHeader.cc b/source/geometry/management/src/G4SmartVoxelHeader.cc index 540533f7fe..2db9b22648 100644 --- a/source/geometry/management/src/G4SmartVoxelHeader.cc +++ b/source/geometry/management/src/G4SmartVoxelHeader.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4SmartVoxelHeader.cc,v 1.5 1999/12/15 14:49:53 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4SmartVoxelHeader diff --git a/source/geometry/management/src/G4SmartVoxelNode.cc b/source/geometry/management/src/G4SmartVoxelNode.cc index 699d8eef94..3060d1b0e8 100644 --- a/source/geometry/management/src/G4SmartVoxelNode.cc +++ b/source/geometry/management/src/G4SmartVoxelNode.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4SmartVoxelNode.cc,v 1.2 1999/12/15 14:49:53 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // Class G4SmartVoxelNode // diff --git a/source/geometry/management/src/G4SolidStore.cc b/source/geometry/management/src/G4SolidStore.cc index 10f50d9a34..aafd157492 100644 --- a/source/geometry/management/src/G4SolidStore.cc +++ b/source/geometry/management/src/G4SolidStore.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4SolidStore.cc,v 1.4 1999/12/15 14:49:53 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4SolidStore // diff --git a/source/geometry/management/src/G4VPVParameterisation.cc b/source/geometry/management/src/G4VPVParameterisation.cc index 691819c086..32b5306f1c 100644 --- a/source/geometry/management/src/G4VPVParameterisation.cc +++ b/source/geometry/management/src/G4VPVParameterisation.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VPVParameterisation.cc,v 1.2 1999/12/15 14:49:54 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 7131cc8527..3d812f4dc7 100644 --- a/source/geometry/management/src/G4VPhysicalVolume.cc +++ b/source/geometry/management/src/G4VPhysicalVolume.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VPhysicalVolume.cc,v 1.3 1999/12/15 14:49:54 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4VPhysicalVolume Implementation diff --git a/source/geometry/management/src/G4VSolid.cc b/source/geometry/management/src/G4VSolid.cc index 7a99f47810..4865180a58 100644 --- a/source/geometry/management/src/G4VSolid.cc +++ b/source/geometry/management/src/G4VSolid.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VSolid.cc,v 1.3 1999/12/15 14:49:54 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VSolid.cc,v 1.4 2000/04/11 16:18:15 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4VSolid // @@ -21,6 +21,8 @@ #include "G4SolidStore.hh" #include "G4VoxelLimits.hh" +#include "G4AffineTransform.hh" +#include "G4VisExtent.hh" // Constructor // - Copies name @@ -318,3 +320,20 @@ void G4VSolid::ClipPolygonToSimpleLimits(G4ThreeVectorList& pPolygon, G4DisplacedSolid* G4VSolid::GetDisplacedSolidPtr() { return 0; } + +G4VisExtent G4VSolid::GetExtent () const { + G4VisExtent extent; + G4VoxelLimits voxelLimits; // Defaults to "infinite" limits. + G4AffineTransform affineTransform; + G4double vmin, vmax; + CalculateExtent(kXAxis,voxelLimits,affineTransform,vmin,vmax); + extent.SetXmin (vmin); + extent.SetXmax (vmax); + CalculateExtent(kYAxis,voxelLimits,affineTransform,vmin,vmax); + extent.SetYmin (vmin); + extent.SetYmax (vmax); + CalculateExtent(kZAxis,voxelLimits,affineTransform,vmin,vmax); + extent.SetZmin (vmin); + extent.SetZmax (vmax); + return extent; +} diff --git a/source/geometry/management/src/G4VoxelLimits.cc b/source/geometry/management/src/G4VoxelLimits.cc index 57784b7790..b0cc7bbf51 100644 --- a/source/geometry/management/src/G4VoxelLimits.cc +++ b/source/geometry/management/src/G4VoxelLimits.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VoxelLimits.cc,v 1.2 1999/12/15 14:49:54 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4VoxelLimits // diff --git a/source/geometry/solids/BREPS/GNUmakefile b/source/geometry/solids/BREPS/GNUmakefile index bb8982d909..dddc358a15 100644 --- a/source/geometry/solids/BREPS/GNUmakefile +++ b/source/geometry/solids/BREPS/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.3 1999/10/28 09:13:57 japost Exp $ +# $Id: GNUmakefile,v 1.4 2000/01/21 13:47:35 gcosmo Exp $ # ------------------------------------------------------------ # GNUmakefile for BREPS library. Gabriele Cosmo, 15/11/96. # ------------------------------------------------------------ @@ -13,7 +13,6 @@ include $(G4INSTALL)/config/architecture.gmk CPPFLAGS += \ -I$(G4BASE)/geometry/management/include \ - -I$(G4BASE)/geometry/solids/STEP/include \ -I$(G4BASE)/geometry/solids/Boolean/include \ -I$(G4BASE)/geometry/solids/CSG/include \ -I$(G4BASE)/global/management/include \ diff --git a/source/geometry/solids/BREPS/History b/source/geometry/solids/BREPS/History index 50adeafdc2..83260c4f25 100644 --- a/source/geometry/solids/BREPS/History +++ b/source/geometry/solids/BREPS/History @@ -1,4 +1,4 @@ -$Id: History,v 1.7 1999/11/08 09:50:26 gcosmo Exp $ +$Id: History,v 1.15 2000/05/31 14:44:14 gcosmo Exp $ ---------------------------------------------------------------------------- ========================================================= @@ -17,6 +17,74 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +13/05/2000 : G. Cosmo breps-V01-01-00 +- Added protection to arguments fed to atan2(x,y) in G4Ellipse::Project(). + +11/04/2000 : J. Allison +- Removed implementations of G4VisExtent GetExtent() in most sub-classes + of G4VSolid (a default implementation exists in G4VSolid). + Files changed: G4BREPSolid[.hh.cc]. +- All implementations of DescribeYourselfTo (G4VGraphicsScene& scene) const + now correctly written: scene.AddThis(*this). + Files changed: G4BREPSolidOpenPCone.cc. + +25/02/2000 : G. Cosmo breps-V01-00-02 + G4BSplineSurface[.hh.cc] + - fixed dynamic memory allocation problem with creation of temporary + hits and manipulation of knots. + - rationalized dependencies over G4UVHit, G4ControlPoints and + G4BoundingBox3D classes. + - added initialization of pointers in constructor where missing. + G4BSplineSurfaceWithKnots[.hh.cc] + - created dummy classes. + G4ConicalSurface.cc + - Modified diagnostic message. + G4PointRat.hh + - Removed useless inclusion of G4UVHit.hh. + G4UVHit.hh + - Added missing initialization of data-members where needed. + - Initialized 'next' pointer to zero in costructor. + test/stepfiles + - G4msgc_barrel_solid.stp was corrupted. Fixed. + - Enhanced PERL script correct.pl to parse more complex STEP files. + +14/02/2000 : G. Cosmo breps-V01-00-01 + G4BSplineSurface.cc - fixed warnings on HP-aCC + - removed cast of G4Surface* to G4SurfaceList* (!) in function + FinalIntersection(). + - replaced wherever needed explicit cast to G4PointRat from G4Point3D + and viceversa, by using appropriate access functions instead. + G4SurfaceList.cc + - initialised 'next' and 'temp' pointers in default constructor. + Changed 'char*' to 'const char*' as return-type for methods returning the + concrete type name; removed temporary cast to char*. Updated files: + - G4ThreeMat.hh, G4Surface.hh, G4SphericalSurface.hh, + G4RectangularTrimmedSurface.hh, G4FPlane.hh, G4FCylindricalSurface.hh, + G4FConicalSurface.hh, G4CylindricalSurface.hh, G4ConicalSurface.hh, + G4Curve.hh, G4BSplineSurface[.hh.cc]. + +21/01/2000 : G. Cosmo breps-V01-00-00 + Decoupling from NIST STEP reader completed: + - G4RectangularTrimmedSurface.cc: removed inclusion of + SdaiCONFIG_CONTROL_DESIGN.h + - G4PointRat[.hh.cc]: removed unused function + CopyRationalValue(const RealNode&). + - G4Conic[.hh.cc]: removed constructor G4Conic(STEPentity&). + - G4BREPSolid[.hh.cc]: removed unused function CreateSTEPData() and + any references to STEP/instmgr.h. + - G4Parabola.hh: removed declared and NOT defined constructors + G4Parabola(STEPentity&) and G4Parabola(STEPentity&, InstMgr&). + - G4Hyperbola.hh: removed declared and NOT defined constructors + G4Hyperbola(STEPentity&) and G4Hyperbola(STEPentity&, InstMgr&). + - G4Ellipse.hh: removed declared and NOT defined constructors + G4Ellipse(STEPentity&) and G4Ellipse(STEPentity&, InstMgr&). + - G4ControlPoints.hh: removed declared and NOT defined constructor + G4ControlPoints(STEaggregate&, const int). + Temporary fixes for porting on SUN-CC 5.0 compiler. Casts to char*: + - G4ThreeMat.hh, G4Surface.hh, G4SphericalSurface.hh, + G4RectangularTrimmedSurface.hh, G4FPlane.hh, G4FCylindricalSurface.hh, + G4FConicalSurface.hh, G4CylindricalSurface.hh, G4ConicalSurface.hh. + 08/11/1999 : G. Cosmo breps-V00-01-00 First step for decoupling BREPS from NIST STEP reader: - Moved G4NISTStepReader[.hh.cc] and G4StepFileReader[.hh] to diff --git a/source/geometry/solids/BREPS/ToDo.txt b/source/geometry/solids/BREPS/ToDo.txt deleted file mode 100644 index 134ec96379..0000000000 --- a/source/geometry/solids/BREPS/ToDo.txt +++ /dev/null @@ -1,321 +0,0 @@ -Juanary 20, 1999 -Lionel Broglia Patron - -Working note - -This document describes the modifications to be done into -BREPS and STEPintervace classes - - -============================================ - BREPS - - - implement G4BSplineCurve::IntersectRay2D - -As the same as all the curve classes, IntersectRay2D(ray) is a function which -return the number of intersections of the curve by the ray included into the -curve's boundaries. (see G4Line::IntersectRay2D for exemple) - - - - problem with nbintersect when the hitpoint is on the curve boundary - -In this case, the point is considerated into the surface, so return an odd -specific value (999). (done for G4Line) - - - - implement swept surface (later) - - - Be carreful into G4BREPSolidxxx::Inside : - if we obtain the same distance with 2 intersections, - it is necessary to count one only (done for PCone & PGone) - - - Utilize the DistanceTo and Inside functions of PCone, which are - general, in G4BREPSolid. - After, utilize specific functions for each particular solid to - have a faster algorithm - - - - -============================================ - STEPinterface - - - take the name of the solids - - - write out STEP (later) - - - Problem with STEP conical surface (same for cylindrical) - for the moment the interface create a G4ConicalSurface, - but I want to create a G4FConicalSurface - -In STEP, a conical surface is defined by a semi-infinite cone and 1 or 2 plane -which delimite the length of the cone. The semi-infinite cone is defined by a -G4Axis2Placement3D (location and axis), a radius and an angle. The radius is -the radius of the cone at the location. For the moment, a STEP conical surface -is saved as a G4ConicalSurface(placement, angle). - -On the contrary a G4FConicalSurface is defined by a placement, a large_radius, -a small_radius and a length : - -// Position.axis| -// | -// -- ---|--- small_radius -// l | / | \ -// e | / | \ -// n | / | \ -// g | / | \ -// t | / | \ -// h | / | \ -// -- ---------|--------- large_radius -// Position - - -In the same way, In STEP, a cylindrical surface is defined by an infinite -cylinder and 1 or 2 plane which delimite the length of the cylinder. The -semi-infinite cylinder is defined by a G4Axis2Placement3D (location and axis) -and a radius. For the moment, a STEP cylindrical surface is saved as a -G4CylindricalSurface(placement, radius). - -On the contrary a G4FCylindricalSurface is defined by a placement, a radius and -a length : - -// Position.axis| radius -// >|---|<--------- -// | -// -- +---|---+ -// l | | | | -// e | | | | -// n | | | | -// g | | | | -// t | | | | -// h | | | | -// -- +---|---+ -// Position - -It is necessary to find a way to save a STEP conical or cylindrical surface in -a G4FConicalSurface or G4FCylindricalSurface because the algorithms of Inside -and DistanceToX are written and run correctly for PCone and PGone which utilize -these surfaces. - -One solution is to create with the STEP interface the G4FConicalSurface -or the G4FCylindricalSurface with new creators. And before execute the -Intersect or the HowNear function, recalculate the good values. - - - -==> Tests - - - verify the validity of the results of the simple tests - - new simple specific test for curve and surface - - compare with CSG test - - new more general test - - -====================================== -Function explanation - -Inside(Pt) - - // This function returns whether the point is inside, - // outside or on the surface of the solid - - -DistanceToIn(Pt) - - // Calculates the shortest distance ("safety") from a point - // outside the solid to any boundary of this solid. - // Return 0 if the point is already inside. - - -DistanceToIn(Pt, Vec) - - // Calculates the distance from a point outside the solid - // to the solid`s boundary along a specified direction vector. - // - // Note : Intersections with boundaries less than the - // tolerance must be ignored if the direction - // is away from the boundary - - -DistanceToOut(Pt) - - // Calculates the shortest distance ("safety") from a point - // inside the solid to any boundary of this solid. - // Return 0 if the point is already outside. - - -DistanceToOut(Pt, Vec) - - // Calculates the distance from a point inside the solid - // to the solid`s boundary along a specified direction vector. - // Return 0 if the point is already outside. - // - // Note : If the shortest distance to a boundary is less - // than the tolerance, it is ignored. This allows - // for a point within a tolerant boundary to leave - // immediately - - -Problem with DistanceToIn(Pt) and DistanceToOut(Pt) : - - Problem with the G4FPlane : there is no inside and no outside... - So, to test if the point is inside to return 0, utilize the Inside - function. But I don`t know if it is really needed because dToIn is - called only if the point is outside... - So for the moment, I cannot ensure to return 0 if the point is inside for - DistanceToOut and outside for DistanceToIn. - - - -G4BREPSolid is utilized for the creation of solid with STEP interface. For -the moment, the G4BREPSolid::Inside function utilize some other G4BREPSolid -functions which are redondant in some cases, and I don`t understand exactly -what they done. - -These functions are identical into PCone and Polyhedra and I think there are -general functions, so try to copy them into the G4BREPSolid class. - -After that, it's possible to optimize these functions into each specific solid -(PCone, Pgone, Box, etc...) - - - -These 5 functions utilized other functions : - - TestSurfaceBBoxes (solid function) - - SurfaceNormal (solid function) - - HowNear (surface function) - - Intersect (surface function) - - -TestSurfaceBBoxes(ray) - - // Test if the bounding box of each surface is intersected - // by the ray. If not, the surface become deactive. - -This function is placed at the begining of all the DistanceTo and Inside -functions. It is utilized to deactive the surface which bounding box is not -intersected by the ray. In this way, we do not make the complicate and long -Intersect function for the surfaces we are sure that they are not intersected. - - - -SurfaceNormal(Pt) - - // This function calculates the normal of the - // solid boundary surface on a point on this surface - // Note : the sense of the normal depends on the sense of the surface - -This solid function check on which of its surface the point is, and after call -the SurfaceNormal(Pt) function of this surface. The sense of the normal depends -on the sense of the surface : if it's an inner surface the sense is 0, and if -it's an outer surface the sense is 1. -The normal calculate at first is by default away from the boundary. But if the -sense is 0 the normal is the opposite. - - - -HowNear(Pt) - - // Shortest distance from the point x to the G4...Surface. - // The distance will be positive if the point is outside - // the G4...Surface, negative if the point is inside. - -In the case of the G4FPlane, HowNear is the closest distance from the point to -the infinite plane. - -In the case of the G4FCylindrical and G4FConical surface, the closest distance -from the point to the infinite volume is calculated at first. But if this -distance correspond to the distance from the start point to a point outside the -surface boundary, return the distance from the point to the nearest plane -which delimite the surface length. - -Be careful ! -Insure that HowNear < 0 correspond to point inside - HowNear > 0 correspond to point outside - HowNear = 0 correspond to point on the surface - -The sign is needed for DistanceToIn(pt) and DistanceToOut(pt) -Problem : for the plane, there is no inside and no outside ! - (see the comments for these 2 functions) - - - -Intersect(Ray) - - // This function count the number of intersections of a - // bounded surface by a ray. - - -Set "distance" to the closest distance from the start point to the nearest -intersection and return the number of intersections. If no intersection is -founded, set distance = kInfinity and return 0. - -If this number is par, it`s signify that the start point of the ray is outside -the volume bounded by the surface. So, for the case of the solid Inside -calculation, ignored this intersections because the point is outside this -part of the volume. - - -In the case of the intersection of the ray and a G4FPlane, we calculate at -first the intersection with the infinite plane. After, we have to determine if -the intersection is inside the finite plane. - -To do that, the intersection point and the curve boudary of the finite plane -are projected in 2D both. So we determine if the projected hit is inside or -outside the projected surface. - -To do that, the function IntersectRay2D is utilized, which return the number of -intersections of a test ray which started point is the projected hit with the -projected curve boundaries. If the number of intersections is odd, the -projected hit is inside the projected boundary, so the intersection point is -inside the G4FPlane and we find a real intersection. - -In the same way, into each curve IntersectRay2D function, all the intersections -are calculated at first, and after we determine which intersection is on the -bounded curve and in the direction of the ray. In case of the projected point -is on the curve, the projectedhit is considerated inside the projected surface. -So return immediately a specific odd value (999). - -For the moment, only the G4Line:IntersectRay2D is completed, do the same for -each curve. - - -In the case of the G4FConicalSurface and G4FCylindricalSurface, the Intersect -function is easier. At first, all the intersections of the infinite surface by -the ray are calculated. After, we determine if the intersection points are in -the direction of the ray and are inside the bounding box of the surface. - - - - -Generality : - - - there are unnecessary #include, especially in STEPinterface - - - utilize G4int, G4double, G4bool instead of int, double, bool ... - - - look inside G4Ray class : there are plane functions inside !!! - - - replace : #define toto 3.25 - by : const double toto=3.25 - - placed all this constant values in a .hh file (maybe G4Globals.hh) - - - utilize the HEP classes and the function of the HEP classes - ex : replace G4Plane by HepPlane if it is possible - replace G4ThreeMat by HepMatrix or HepTransform3D - ( see http://wwwinfo.cern.ch/asd/lhc++/clhep/manual/RefGuide/index.html ) - - - see if FLT_MAXX can replaced by kInfinity and FLT_EPSILO by kCarTolerance - - - - - - - - - - - - diff --git a/source/geometry/solids/BREPS/include/G4BREPSolid.hh b/source/geometry/solids/BREPS/include/G4BREPSolid.hh index f905f1d2d3..56f0141a31 100644 --- a/source/geometry/solids/BREPS/include/G4BREPSolid.hh +++ b/source/geometry/solids/BREPS/include/G4BREPSolid.hh @@ -1,17 +1,14 @@ #ifndef __SOLID_H #define __SOLID_H + #include "G4VSolid.hh" -#include "G4VisExtent.hh" #include "G4Surface.hh" #include "G4Axis2Placement3D.hh" #include "G4PointRat.hh" #include "G4BoundingBox3D.hh" -class STEPentity; -class InstMgr; class G4Ray; - class G4BREPSolid : public G4VSolid { @@ -23,7 +20,6 @@ public: virtual G4String GetEntityType() const {return "Closed_Shell";} virtual void Initialize(); - G4int CreateSTEPData(); // not yet implemented G4bool CalculateExtent(const EAxis pAxis , const G4VoxelLimits& pVoxelLimit, @@ -50,7 +46,6 @@ public: G4Point3D Scope(); // ??? void DescribeYourselfTo (G4VGraphicsScene& scene) const; - G4VisExtent GetExtent () const; G4Polyhedron* CreatePolyhedron () const; G4NURBS* CreateNURBS () const; @@ -87,7 +82,6 @@ public: } static G4int NumberOfSolids; - static InstMgr InstanceList; G4double GetShortestDistance() const {return ShortestDistance;} @@ -178,12 +172,3 @@ protected: }; #endif - - - - - - - - - diff --git a/source/geometry/solids/BREPS/include/G4BREPSolidBox.hh b/source/geometry/solids/BREPS/include/G4BREPSolidBox.hh index 9752acd479..43f5f55f82 100644 --- a/source/geometry/solids/BREPS/include/G4BREPSolidBox.hh +++ b/source/geometry/solids/BREPS/include/G4BREPSolidBox.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4BREPSolidBox.hh,v 1.2 1999/12/15 14:49:55 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef __G4BREPSolidBOX #define __G4BREPSolidBOX diff --git a/source/geometry/solids/BREPS/include/G4BREPSolidCone.hh b/source/geometry/solids/BREPS/include/G4BREPSolidCone.hh index f16a6ce48c..bbfecc88eb 100644 --- a/source/geometry/solids/BREPS/include/G4BREPSolidCone.hh +++ b/source/geometry/solids/BREPS/include/G4BREPSolidCone.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4BREPSolidCone.hh,v 1.2 1999/12/15 14:49:55 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef __G4BREPSolidCone #define __G4BREPSolidCone diff --git a/source/geometry/solids/BREPS/include/G4BREPSolidCylinder.hh b/source/geometry/solids/BREPS/include/G4BREPSolidCylinder.hh index 82d29afe6d..5a191d1e22 100644 --- a/source/geometry/solids/BREPS/include/G4BREPSolidCylinder.hh +++ b/source/geometry/solids/BREPS/include/G4BREPSolidCylinder.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4BREPSolidCylinder.hh,v 1.2 1999/12/15 14:49:55 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef __G4BREPSolidCylinder #define __G4BREPSolidCylinder diff --git a/source/geometry/solids/BREPS/include/G4BREPSolidPCone.hh b/source/geometry/solids/BREPS/include/G4BREPSolidPCone.hh index 9643caea56..4d35ce9b49 100644 --- a/source/geometry/solids/BREPS/include/G4BREPSolidPCone.hh +++ b/source/geometry/solids/BREPS/include/G4BREPSolidPCone.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4BREPSolidPCone.hh,v 1.3 1999/12/15 14:49:55 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // The polyconical solid G4BREPSolidPCone is a shape defined by a set of diff --git a/source/geometry/solids/BREPS/include/G4BREPSolidPolyhedra.hh b/source/geometry/solids/BREPS/include/G4BREPSolidPolyhedra.hh index 20d4f8e575..e7b8210d6b 100644 --- a/source/geometry/solids/BREPS/include/G4BREPSolidPolyhedra.hh +++ b/source/geometry/solids/BREPS/include/G4BREPSolidPolyhedra.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4BREPSolidPolyhedra.hh,v 1.3 1999/12/15 14:49:55 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // The polygonal solid G4BREPSolidPolyhedra is a shape defined by an inner diff --git a/source/geometry/solids/BREPS/include/G4BREPSolidSphere.hh b/source/geometry/solids/BREPS/include/G4BREPSolidSphere.hh index 70edcfeca5..8b3265d4b3 100644 --- a/source/geometry/solids/BREPS/include/G4BREPSolidSphere.hh +++ b/source/geometry/solids/BREPS/include/G4BREPSolidSphere.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4BREPSolidSphere.hh,v 1.2 1999/12/15 14:49:55 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef __G4BREPSolidSphere #define __G4BREPSolidSphere diff --git a/source/geometry/solids/BREPS/include/G4BREPSolidTorus.hh b/source/geometry/solids/BREPS/include/G4BREPSolidTorus.hh index 6fc693acda..217b1e8064 100644 --- a/source/geometry/solids/BREPS/include/G4BREPSolidTorus.hh +++ b/source/geometry/solids/BREPS/include/G4BREPSolidTorus.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4BREPSolidTorus.hh,v 1.2 1999/12/15 14:49:55 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef __G4BREPSolidTorus #define __G4BREPSolidTorus diff --git a/source/geometry/solids/BREPS/include/G4BSplineCurve.hh b/source/geometry/solids/BREPS/include/G4BSplineCurve.hh index 758e00036e..cef8279c17 100644 --- a/source/geometry/solids/BREPS/include/G4BSplineCurve.hh +++ b/source/geometry/solids/BREPS/include/G4BSplineCurve.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4BSplineCurve.hh,v 1.5 1999/12/15 14:49:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef __BSPLINECURVE_H #define __BSPLINECURVE_H diff --git a/source/geometry/solids/BREPS/include/G4BSplineCurveWithKnots.hh b/source/geometry/solids/BREPS/include/G4BSplineCurveWithKnots.hh index a98edf339e..aaf2ac1cf1 100644 --- a/source/geometry/solids/BREPS/include/G4BSplineCurveWithKnots.hh +++ b/source/geometry/solids/BREPS/include/G4BSplineCurveWithKnots.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4BSplineCurveWithKnots.hh,v 1.2 1999/12/15 14:49:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef __B_SPLINECURVEWITHKNOTS_H #define __B_SPLINECURVEWITHKNOTS_H diff --git a/source/geometry/solids/BREPS/include/G4BSplineSurface.hh b/source/geometry/solids/BREPS/include/G4BSplineSurface.hh index cb0b99f1ad..ba008d4c1f 100644 --- a/source/geometry/solids/BREPS/include/G4BSplineSurface.hh +++ b/source/geometry/solids/BREPS/include/G4BSplineSurface.hh @@ -5,34 +5,24 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4BSplineSurface.hh,v 1.3 1999/12/15 14:49:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4BSplineSurface.hh,v 1.6 2000/02/25 15:58:47 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef __BSPLINESURFACE_H #define __BSPLINESURFACE_H - #include "G4Point3D.hh" #include "G4PointRat.hh" #include "G4Surface.hh" #include "G4ProjectedSurface.hh" - - - -//#ifdef WIN32 -//# include "G4ios.hh" -//#else -//# include -//#endif - - +#include "G4UVHit.hh" class G4BSplineSurface : public G4Surface { public: G4BSplineSurface(); - G4BSplineSurface(char*, G4Ray&); + G4BSplineSurface(const char*, G4Ray&); G4BSplineSurface(const G4BSplineSurface &tmp); G4BSplineSurface(G4int, G4int, G4KnotVector&, G4KnotVector&, G4ControlPoints&); @@ -110,14 +100,3 @@ private: }; #endif - - - - - - - - - - - diff --git a/source/geometry/solids/BREPS/include/G4BSplineSurfaceWithKnots.hh b/source/geometry/solids/BREPS/include/G4BSplineSurfaceWithKnots.hh new file mode 100644 index 0000000000..0fc3bbb633 --- /dev/null +++ b/source/geometry/solids/BREPS/include/G4BSplineSurfaceWithKnots.hh @@ -0,0 +1,21 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4BSplineSurfaceWithKnots.hh,v 1.1 2000/02/25 15:57:42 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +#ifndef __B_SPLINESURFACEWITHKNOTS_H +#define __B_SPLINESURFACEWITHKNOTS_H + +#include "G4BSplineSurface.hh" + + +class G4BSplineSurfaceWithKnots : public G4BSplineSurface +{ + +}; +#endif diff --git a/source/geometry/solids/BREPS/include/G4BezierSurface.hh b/source/geometry/solids/BREPS/include/G4BezierSurface.hh index c27065a9ac..60dbacafaa 100644 --- a/source/geometry/solids/BREPS/include/G4BezierSurface.hh +++ b/source/geometry/solids/BREPS/include/G4BezierSurface.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4BezierSurface.hh,v 1.2 1999/12/15 14:49:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef __BEZIERSURFACE_H #define __BEZIERSURFACE_H diff --git a/source/geometry/solids/BREPS/include/G4CircularCurve.hh b/source/geometry/solids/BREPS/include/G4CircularCurve.hh index 8b096d044e..ab3dabe464 100644 --- a/source/geometry/solids/BREPS/include/G4CircularCurve.hh +++ b/source/geometry/solids/BREPS/include/G4CircularCurve.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4CircularCurve.hh,v 1.3 1999/12/15 14:49:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef __CIRCULARCURVE_H #define __CIRCULARCURVE_H diff --git a/source/geometry/solids/BREPS/include/G4Conic.hh b/source/geometry/solids/BREPS/include/G4Conic.hh index ec60824ecd..c07dd721dc 100644 --- a/source/geometry/solids/BREPS/include/G4Conic.hh +++ b/source/geometry/solids/BREPS/include/G4Conic.hh @@ -9,7 +9,6 @@ class G4Conic: public G4Curve public: G4Conic(); - G4Conic(STEPentity& Ent); ~G4Conic(); // Get/Set to geometric data diff --git a/source/geometry/solids/BREPS/include/G4ConicalSurface.hh b/source/geometry/solids/BREPS/include/G4ConicalSurface.hh index 11c9ed3bee..49ea9e6398 100644 --- a/source/geometry/solids/BREPS/include/G4ConicalSurface.hh +++ b/source/geometry/solids/BREPS/include/G4ConicalSurface.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ConicalSurface.hh,v 1.2 1999/12/15 14:49:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ConicalSurface.hh,v 1.4 2000/02/16 12:02:51 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // /* /usr/local/gismo/repo/geometry/G4ConicalSurface.h,v 1.5 1993/12/30 02:13:59 rensing Exp */ // File: G4ConicalSurface.h @@ -59,7 +59,7 @@ public: // G4ConicalSurface( const G4ConicalSurface& c ): G4Surface( c.origin ) // { axis = c.axis; angle = c.angle; } - virtual char *NameOf() const { return "G4ConicalSurface"; } + virtual const char* NameOf() const { return "G4ConicalSurface"; } virtual void PrintOn( G4std::ostream& os = G4cout ) const; @@ -125,7 +125,7 @@ private: //-----> { axis = c.axis; angle = c.angle; } // // function to return class name -//----->virtual char *NameOf() const { return "G4ConicalSurface"; } +//----->virtual const char* NameOf() const { return "G4ConicalSurface"; } // // printing function //----->virtual void PrintOn( G4std::ostream& os = G4cout ) const; diff --git a/source/geometry/solids/BREPS/include/G4ControlPoints.hh b/source/geometry/solids/BREPS/include/G4ControlPoints.hh index e07f35882a..c77bb9f059 100644 --- a/source/geometry/solids/BREPS/include/G4ControlPoints.hh +++ b/source/geometry/solids/BREPS/include/G4ControlPoints.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ControlPoints.hh,v 1.2 1999/12/15 14:49:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ControlPoints.hh,v 1.3 2000/01/21 13:47:40 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Modif 8 oct 98 : A.Floquet @@ -29,8 +29,6 @@ public: // Constructors G4ControlPoints(); - G4ControlPoints(const STEPaggregate& Aggr, const int Rational); - G4ControlPoints( int, int); G4ControlPoints( int , int , int ); @@ -93,13 +91,3 @@ private: }; #endif - - - - - - - - - - diff --git a/source/geometry/solids/BREPS/include/G4ConvexHull.hh b/source/geometry/solids/BREPS/include/G4ConvexHull.hh index 7c46e2765d..3ce4c22e21 100644 --- a/source/geometry/solids/BREPS/include/G4ConvexHull.hh +++ b/source/geometry/solids/BREPS/include/G4ConvexHull.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ConvexHull.hh,v 1.2 1999/12/15 14:49:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef __CONVEXHULL_H #define __CONVEXHULL_H diff --git a/source/geometry/solids/BREPS/include/G4Curve.hh b/source/geometry/solids/BREPS/include/G4Curve.hh index 1ccc656678..85f16eea8d 100644 --- a/source/geometry/solids/BREPS/include/G4Curve.hh +++ b/source/geometry/solids/BREPS/include/G4Curve.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Curve.hh,v 1.3 1999/12/15 14:49:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Curve.hh,v 1.4 2000/02/16 12:02:51 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef __CURVE_H #define __CURVE_H @@ -135,7 +135,7 @@ public: virtual void SetParentSrfPtr(const G4Surface* srf){} - virtual const char* Name(){return "G4Curve";} + virtual const char* Name() const {return "G4Curve";} G4bool operator==(const G4Curve& right) const { diff --git a/source/geometry/solids/BREPS/include/G4CylindricalSurface.hh b/source/geometry/solids/BREPS/include/G4CylindricalSurface.hh index e3a059a567..21a462a8ce 100644 --- a/source/geometry/solids/BREPS/include/G4CylindricalSurface.hh +++ b/source/geometry/solids/BREPS/include/G4CylindricalSurface.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4CylindricalSurface.hh,v 1.2 1999/12/15 14:49:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4CylindricalSurface.hh,v 1.4 2000/02/16 12:02:51 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // /* /usr/local/gismo/repo/geometry/G4CylindricalSurface.h,v 1.16 1993/12/30 02:14:08 rensing Exp */ // File: G4CylindricalSurface.h @@ -61,7 +61,7 @@ public: G4String GetEntityType(){return G4String("Cylindrical_Surface");} - virtual char *NameOf() const { return "G4CylindricalSurface"; } + virtual const char* NameOf() const { return "G4CylindricalSurface"; } virtual void PrintOn( G4std::ostream& os = G4cout ) const; @@ -128,7 +128,7 @@ private: //-----> { axis = c.axis; radius = c.radius; } // // function to return class name -//----->virtual char *NameOf() const { return "G4CylindricalSurface"; } +//----->virtual const char* NameOf() const { return "G4CylindricalSurface"; } // // printing function //----->virtual void PrintOn( G4std::ostream& os = G4cout ) const; diff --git a/source/geometry/solids/BREPS/include/G4Ellipse.hh b/source/geometry/solids/BREPS/include/G4Ellipse.hh index 94792f1df2..c072a703e2 100644 --- a/source/geometry/solids/BREPS/include/G4Ellipse.hh +++ b/source/geometry/solids/BREPS/include/G4Ellipse.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Ellipse.hh,v 1.3 1999/12/15 14:49:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Ellipse.hh,v 1.4 2000/01/21 13:47:41 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef __ELLIPTICCURVE_H #define __ELLIPTICCURVE_H @@ -31,10 +31,6 @@ public: virtual G4Point3D GetPoint(G4double param); virtual G4double GetPPoint(const G4Point3D& p); - // STEP - G4Ellipse(STEPentity& Ent, InstMgr&); - G4Ellipse(STEPentity& Ent); - // Get/Set for the geometric data void Init(const G4Axis2Placement3D& position0, G4double semiAxis10, G4double semiAxis20); @@ -63,6 +59,3 @@ private: #include "G4Ellipse.icc" #endif - - - diff --git a/source/geometry/solids/BREPS/include/G4FConicalSurface.hh b/source/geometry/solids/BREPS/include/G4FConicalSurface.hh index 645834f993..ba26a7a2e0 100644 --- a/source/geometry/solids/BREPS/include/G4FConicalSurface.hh +++ b/source/geometry/solids/BREPS/include/G4FConicalSurface.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4FConicalSurface.hh,v 1.4 1999/12/15 14:49:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4FConicalSurface.hh,v 1.6 2000/02/16 12:02:52 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef __FCONIC_H #define __FCONIC_H @@ -88,7 +88,7 @@ public: // STEP additions // // function to return class name - virtual char *Name() const { return "G4FConicalSurface"; } + virtual const char* Name() const { return "G4FConicalSurface"; } // printing function virtual void PrintOn( G4std::ostream& os = G4cout ) const; diff --git a/source/geometry/solids/BREPS/include/G4FCylindricalSurface.hh b/source/geometry/solids/BREPS/include/G4FCylindricalSurface.hh index 5cf652844c..0fa61de845 100644 --- a/source/geometry/solids/BREPS/include/G4FCylindricalSurface.hh +++ b/source/geometry/solids/BREPS/include/G4FCylindricalSurface.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4FCylindricalSurface.hh,v 1.5 1999/12/15 14:49:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4FCylindricalSurface.hh,v 1.7 2000/02/16 12:02:52 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef __FCYLINDER_H #define __FCYLINDER_H @@ -95,7 +95,7 @@ class G4FCylindricalSurface: public G4Surface void CalcBBox(); // function to return class name - virtual char *NameOf() const + virtual const char* NameOf() const { return "G4FCylindricalSurface"; } diff --git a/source/geometry/solids/BREPS/include/G4FPlane.hh b/source/geometry/solids/BREPS/include/G4FPlane.hh index 5aaa59574e..ebd425aaa6 100644 --- a/source/geometry/solids/BREPS/include/G4FPlane.hh +++ b/source/geometry/solids/BREPS/include/G4FPlane.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4FPlane.hh,v 1.5 1999/12/15 14:49:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4FPlane.hh,v 1.7 2000/02/16 12:02:52 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // L. Broglia // @@ -104,7 +104,7 @@ public: return NormalX->GetDir(); } - virtual char *Name() const { return "G4FPlane"; } + virtual const char* Name() const { return "G4FPlane"; } G4double ClosestDistanceToPoint(const G4Point3D& Pt); diff --git a/source/geometry/solids/BREPS/include/G4Globals.hh b/source/geometry/solids/BREPS/include/G4Globals.hh index f48cc5882c..6d047fed42 100644 --- a/source/geometry/solids/BREPS/include/G4Globals.hh +++ b/source/geometry/solids/BREPS/include/G4Globals.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Globals.hh,v 1.2 1999/12/15 14:49:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // /* /usr/local/gismo/repo/support/globals.h,v 1.8 1994/04/18 18:29:03 atwood Exp */ // File: globals.h diff --git a/source/geometry/solids/BREPS/include/G4Hyperbola.hh b/source/geometry/solids/BREPS/include/G4Hyperbola.hh index 1533837956..896d31a4af 100644 --- a/source/geometry/solids/BREPS/include/G4Hyperbola.hh +++ b/source/geometry/solids/BREPS/include/G4Hyperbola.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Hyperbola.hh,v 1.3 1999/12/15 14:49:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Hyperbola.hh,v 1.4 2000/01/21 13:47:43 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef __HYPERBOLICCURVE_H #define __HYPERBOLICCURVE_H @@ -31,10 +31,6 @@ public: virtual G4Point3D GetPoint(G4double param); virtual G4double GetPPoint(const G4Point3D& p); - // STEP - G4Hyperbola(STEPentity& Ent); - G4Hyperbola(STEPentity& Ent, InstMgr&); - //G4Hyperbola(G4Point3d, G4Point3d, G4Point3d, // G4Point3d,G4double, G4double ); //G4Point3d EvaluateByParameterValue(const G4double u); diff --git a/source/geometry/solids/BREPS/include/G4KnotVector.hh b/source/geometry/solids/BREPS/include/G4KnotVector.hh index e198b4f81f..be1fee38df 100644 --- a/source/geometry/solids/BREPS/include/G4KnotVector.hh +++ b/source/geometry/solids/BREPS/include/G4KnotVector.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4KnotVector.hh,v 1.3 1999/12/15 14:49:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef __KNOTVECTOR_H #define __KNOTVECTOR_H diff --git a/source/geometry/solids/BREPS/include/G4Line.hh b/source/geometry/solids/BREPS/include/G4Line.hh index 8a09fc9e7a..735fca50db 100644 --- a/source/geometry/solids/BREPS/include/G4Line.hh +++ b/source/geometry/solids/BREPS/include/G4Line.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Line.hh,v 1.3 1999/12/15 14:49:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef __LINE_H #define __LINE_H diff --git a/source/geometry/solids/BREPS/include/G4OsloMatrix.hh b/source/geometry/solids/BREPS/include/G4OsloMatrix.hh index abd28176b4..2ed5c68893 100644 --- a/source/geometry/solids/BREPS/include/G4OsloMatrix.hh +++ b/source/geometry/solids/BREPS/include/G4OsloMatrix.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OsloMatrix.hh,v 1.2 1999/12/15 14:49:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef __G4OsloMatrix_h diff --git a/source/geometry/solids/BREPS/include/G4Parabola.hh b/source/geometry/solids/BREPS/include/G4Parabola.hh index 567e845b69..c75be1db55 100644 --- a/source/geometry/solids/BREPS/include/G4Parabola.hh +++ b/source/geometry/solids/BREPS/include/G4Parabola.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Parabola.hh,v 1.3 1999/12/15 14:49:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Parabola.hh,v 1.4 2000/01/21 13:47:43 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef __PARABOLICCURVE_H @@ -31,10 +31,6 @@ public: virtual G4Point3D GetPoint(G4double param); virtual G4double GetPPoint(const G4Point3D& p); - // STEP - G4Parabola(STEPentity& Ent); - G4Parabola(STEPentity& Ent, InstMgr&); - //G4Parabola(G4Point3d, G4Point3d, G4double ); //G4Point3d EvaluateByParameterValue(const G4double u); //G4Point3d GetBoundMax(); @@ -62,4 +58,3 @@ private: #include "G4Parabola.icc" #endif - diff --git a/source/geometry/solids/BREPS/include/G4PlacedSolid.hh b/source/geometry/solids/BREPS/include/G4PlacedSolid.hh index e9d0f54af7..edc7882601 100644 --- a/source/geometry/solids/BREPS/include/G4PlacedSolid.hh +++ b/source/geometry/solids/BREPS/include/G4PlacedSolid.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PlacedSolid.hh,v 1.2 1999/12/15 14:49:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4PLACEDSOLID_HH diff --git a/source/geometry/solids/BREPS/include/G4Plane.hh b/source/geometry/solids/BREPS/include/G4Plane.hh index ab16f573dd..b72177d8ec 100644 --- a/source/geometry/solids/BREPS/include/G4Plane.hh +++ b/source/geometry/solids/BREPS/include/G4Plane.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Plane.hh,v 1.2 1999/12/15 14:49:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef __G4Plane #define __G4Plane diff --git a/source/geometry/solids/BREPS/include/G4Point3DVector.hh b/source/geometry/solids/BREPS/include/G4Point3DVector.hh index aa0105fd71..a6a344ba4c 100644 --- a/source/geometry/solids/BREPS/include/G4Point3DVector.hh +++ b/source/geometry/solids/BREPS/include/G4Point3DVector.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Point3DVector.hh,v 1.3 1999/12/15 14:49:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef included_G4Point3DVector #define included_G4Point3DVector diff --git a/source/geometry/solids/BREPS/include/G4PointRat.hh b/source/geometry/solids/BREPS/include/G4PointRat.hh index 02d0154652..5b7d6e03cb 100644 --- a/source/geometry/solids/BREPS/include/G4PointRat.hh +++ b/source/geometry/solids/BREPS/include/G4PointRat.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PointRat.hh,v 1.4 1999/12/15 14:49:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PointRat.hh,v 1.6 2000/02/25 15:59:16 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Modif 8 oct 98 : A.Floquet @@ -25,9 +25,7 @@ // L. Broglia // Before included in G4Point.hh -#include "STEPaggregate.h" #include "G4Plane.hh" -#include "G4UVHit.hh" #define SQRT_SMALL_FASTF 1.0e-18 #define SMALL SQRT_SMALL_FASTF #define ROW 0 @@ -46,8 +44,6 @@ public: ~G4PointRat(); - void CopyRationalValue(const RealNode& Rnode); - int GetType(void)const { return 4; } // This function should be removed // if calls to this are also removed void operator=(const G4Point3D&); diff --git a/source/geometry/solids/BREPS/include/G4ProjectedSurface.hh b/source/geometry/solids/BREPS/include/G4ProjectedSurface.hh index 28891d9c94..4b0a9ad1e7 100644 --- a/source/geometry/solids/BREPS/include/G4ProjectedSurface.hh +++ b/source/geometry/solids/BREPS/include/G4ProjectedSurface.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ProjectedSurface.hh,v 1.2 1999/12/15 14:49:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef __G4ProjectedSurface_h #define __G4ProjectedSurface_h 1 diff --git a/source/geometry/solids/BREPS/include/G4Ray.hh b/source/geometry/solids/BREPS/include/G4Ray.hh index 4032069613..a2a87909fc 100644 --- a/source/geometry/solids/BREPS/include/G4Ray.hh +++ b/source/geometry/solids/BREPS/include/G4Ray.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Ray.hh,v 1.2 1999/12/15 14:49:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef __G4Ray_h #define __G4Ray_h 1 diff --git a/source/geometry/solids/BREPS/include/G4RectangularTrimmedSurface.hh b/source/geometry/solids/BREPS/include/G4RectangularTrimmedSurface.hh index 8cd7863489..a2c366d02f 100644 --- a/source/geometry/solids/BREPS/include/G4RectangularTrimmedSurface.hh +++ b/source/geometry/solids/BREPS/include/G4RectangularTrimmedSurface.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4RectangularTrimmedSurface.hh,v 1.2 1999/12/15 14:49:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4RectangularTrimmedSurface.hh,v 1.4 2000/02/16 12:02:52 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4FCylindricalSurface.hh" @@ -19,7 +19,7 @@ public: int Intersect(const G4Ray&); void CalcBBox(); - virtual char *Name() const { return "G4RectangularTrimmedSurface"; } + virtual const char* Name() const { return "G4RectangularTrimmedSurface"; } private: diff --git a/source/geometry/solids/BREPS/include/G4Sort.hh b/source/geometry/solids/BREPS/include/G4Sort.hh index df4bb7ecb2..efce560245 100644 --- a/source/geometry/solids/BREPS/include/G4Sort.hh +++ b/source/geometry/solids/BREPS/include/G4Sort.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Sort.hh,v 1.2 1999/12/15 14:49:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // File: G4Sort.h // Author: Alan Breakstone diff --git a/source/geometry/solids/BREPS/include/G4SphericalSurface.hh b/source/geometry/solids/BREPS/include/G4SphericalSurface.hh index edd8143dfd..0bc2b2c438 100644 --- a/source/geometry/solids/BREPS/include/G4SphericalSurface.hh +++ b/source/geometry/solids/BREPS/include/G4SphericalSurface.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4SphericalSurface.hh,v 1.2 1999/12/15 14:49:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4SphericalSurface.hh,v 1.4 2000/02/16 12:02:52 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef __G4SpheShell_H #define __G4SpheShell_H @@ -83,7 +83,7 @@ public: if(v.z() < min.z()) min.setZ(v.z()); } - virtual char *NameOf() const { return "G4SphericalSurface"; } + virtual const char* NameOf() const { return "G4SphericalSurface"; } virtual void PrintOn( G4std::ostream& os = G4cout ) const; int operator==( const G4SphericalSurface& s ) @@ -177,7 +177,7 @@ private: //-----> theta_2 = s.theta_2; } // // function to return class name -//----->virtual char *NameOf() const { return "G4SphericalSurface"; } +//----->virtual const char* NameOf() const { return "G4SphericalSurface"; } // // printing function //----->virtual void PrintOn( G4std::ostream& os = G4cout ) const; diff --git a/source/geometry/solids/BREPS/include/G4Surface.hh b/source/geometry/solids/BREPS/include/G4Surface.hh index 44a3cdb5dc..1cc1226639 100644 --- a/source/geometry/solids/BREPS/include/G4Surface.hh +++ b/source/geometry/solids/BREPS/include/G4Surface.hh @@ -93,7 +93,7 @@ public: virtual inline void Reset(){Intersected=0;active = 1; distance = kInfinity;}; // one function for type info (GetEntityType) should be enough - virtual char *Name() const { return "G4Surface"; } + virtual const char* Name() const { return "G4Surface"; } virtual int MyType() const { return Type; } // To be replaced by a CLHEP vector operation diff --git a/source/geometry/solids/BREPS/include/G4SurfaceList.hh b/source/geometry/solids/BREPS/include/G4SurfaceList.hh index 00f9d3aa48..af217a1408 100644 --- a/source/geometry/solids/BREPS/include/G4SurfaceList.hh +++ b/source/geometry/solids/BREPS/include/G4SurfaceList.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4SurfaceList.hh,v 1.2 1999/12/15 14:49:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef __G4SurfaceList_h #define __G4SurfaceList_h 1 diff --git a/source/geometry/solids/BREPS/include/G4ThreeMat.hh b/source/geometry/solids/BREPS/include/G4ThreeMat.hh index 81ec4ba530..c9e1666c77 100644 --- a/source/geometry/solids/BREPS/include/G4ThreeMat.hh +++ b/source/geometry/solids/BREPS/include/G4ThreeMat.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ThreeMat.hh,v 1.2 1999/12/15 14:49:58 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ThreeMat.hh,v 1.4 2000/02/16 12:02:52 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // /* G4ThreeMat.h,v 1.7 1993/12/30 02:15:55 rensing Exp */ // File: G4ThreeMat.h @@ -53,7 +53,7 @@ public: // copy constructor G4ThreeMat( const G4ThreeMat& m ); // function to return class name - virtual char *NameOf() const { return "G4ThreeMat"; } + virtual const char* NameOf() const { return "G4ThreeMat"; } // printing functions (derived classes do not need to overwrite operator <<) friend G4std::ostream& operator<<( G4std::ostream& os, const G4ThreeMat& m ); virtual void PrintOn( G4std::ostream& os = G4cout ) const; diff --git a/source/geometry/solids/BREPS/include/G4ToroidalSurface.hh b/source/geometry/solids/BREPS/include/G4ToroidalSurface.hh index bd048e10c4..bf8fe0115a 100644 --- a/source/geometry/solids/BREPS/include/G4ToroidalSurface.hh +++ b/source/geometry/solids/BREPS/include/G4ToroidalSurface.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ToroidalSurface.hh,v 1.2 1999/12/15 14:49:58 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef __G4TOROIDALSURAFCE diff --git a/source/geometry/solids/BREPS/include/G4UVHit.hh b/source/geometry/solids/BREPS/include/G4UVHit.hh index 485a729ea6..7fab5a6cc1 100644 --- a/source/geometry/solids/BREPS/include/G4UVHit.hh +++ b/source/geometry/solids/BREPS/include/G4UVHit.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4UVHit.hh,v 1.2 1999/12/15 14:49:58 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4UVHit.hh,v 1.3 2000/02/25 15:59:45 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef __G4UV_Hit #define __G4UV_Hit @@ -15,12 +15,14 @@ class G4UVHit { +public: + G4UVHit(){u=-1;v=-1; next=0;} + G4UVHit(G4double u_hit, G4double v_hit){u = u_hit; v = v_hit; next=0;} + ~G4UVHit(){} + public: G4UVHit * next; - int sub; G4double u, v; - G4UVHit(){u=-1;next=this;} - G4UVHit(G4double u_hit, G4double v_hit){u = u_hit; v = v_hit;} }; #endif diff --git a/source/geometry/solids/BREPS/src/G4BREPSolid.cc b/source/geometry/solids/BREPS/src/G4BREPSolid.cc index 0122870e67..dca53889c9 100644 --- a/source/geometry/solids/BREPS/src/G4BREPSolid.cc +++ b/source/geometry/solids/BREPS/src/G4BREPSolid.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4BREPSolid.cc,v 1.10 1999/12/15 14:49:58 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4BREPSolid.cc,v 1.12 2000/04/11 16:15:17 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ #include "G4BREPSolid.hh" #include "G4VoxelLimits.hh" @@ -19,13 +19,10 @@ #include "G4BSplineSurface.hh" #include "G4ToroidalSurface.hh" #include "G4SphericalSurface.hh" -#include "instmgr.h" G4Ray G4BREPSolid::Track; G4double G4BREPSolid::ShortestDistance= kInfinity; int G4BREPSolid::NumberOfSolids=0; -InstMgr G4BREPSolid::InstanceList; - G4BREPSolid::G4BREPSolid(const G4String name) : G4VSolid(name) { @@ -1019,14 +1016,6 @@ void G4BREPSolid::DescribeYourselfTo (G4VGraphicsScene& scene) const } -G4VisExtent G4BREPSolid::GetExtent() const -{ - G4Point3D Min = bbox->GetBoxMin(); - G4Point3D Max = bbox->GetBoxMax(); - return G4VisExtent (Min.x(), Max.x(), Min.y(), Max.y(), Min.z(), Max.z()); -} - - G4Polyhedron* G4BREPSolid::CreatePolyhedron () const { // temporary @@ -1047,27 +1036,6 @@ G4NURBS* G4BREPSolid::CreateNURBS () const } -int G4BREPSolid::CreateSTEPData() -{ - // create the solid entity - //STEPentity* ent = new STEPentity(); - //stateEnum *sEnu = new stateEnum("newSE"); - //MgrNode *mnode = new MgrNode(ent, sEnu); - - // create the attributelist & attributes for this solid - // STEPattributeList *aList = new STEPattributeList(); - //AttrDescriptor *aDesc = new AttrDescriptor(); - // STEPattribute *name_attr = new STEPattribute(aDesc, name); - - // create the mgrnode neede by the instance List - - // append node to instance List - - // call entoity creation routines for child entities. - return 0; // to shut up compilers -} - - void G4BREPSolid::CalcBBoxes() { // First initialization @@ -1488,20 +1456,3 @@ G4Point3D G4BREPSolid::Scope() return scope; } - - - - - - - - - - - - - - - - - diff --git a/source/geometry/solids/BREPS/src/G4BREPSolidBox.cc b/source/geometry/solids/BREPS/src/G4BREPSolidBox.cc index ebc1492647..1ff313e045 100644 --- a/source/geometry/solids/BREPS/src/G4BREPSolidBox.cc +++ b/source/geometry/solids/BREPS/src/G4BREPSolidBox.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4BREPSolidBox.cc,v 1.2 1999/12/15 14:50:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4BREPSolidBox.hh" #include "G4FPlane.hh" diff --git a/source/geometry/solids/BREPS/src/G4BREPSolidCone.cc b/source/geometry/solids/BREPS/src/G4BREPSolidCone.cc index b6ab48c2eb..eb01bc0b81 100644 --- a/source/geometry/solids/BREPS/src/G4BREPSolidCone.cc +++ b/source/geometry/solids/BREPS/src/G4BREPSolidCone.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4BREPSolidCone.cc,v 1.2 1999/12/15 14:50:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4BREPSolidCone.hh" diff --git a/source/geometry/solids/BREPS/src/G4BREPSolidCylinder.cc b/source/geometry/solids/BREPS/src/G4BREPSolidCylinder.cc index 35587ac9fb..44d74d867c 100644 --- a/source/geometry/solids/BREPS/src/G4BREPSolidCylinder.cc +++ b/source/geometry/solids/BREPS/src/G4BREPSolidCylinder.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4BREPSolidCylinder.cc,v 1.2 1999/12/15 14:50:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4BREPSolidCylinder.hh" diff --git a/source/geometry/solids/BREPS/src/G4BREPSolidOpenPCone.cc b/source/geometry/solids/BREPS/src/G4BREPSolidOpenPCone.cc index d5811b3ca4..e30e82bcf4 100644 --- a/source/geometry/solids/BREPS/src/G4BREPSolidOpenPCone.cc +++ b/source/geometry/solids/BREPS/src/G4BREPSolidOpenPCone.cc @@ -51,5 +51,5 @@ G4BREPSolidOpenPCone::G4BREPSolidOpenPCone (G4String name, void G4BREPSolidOpenPCone::DescribeYourselfTo (G4VGraphicsScene& scene) const { - scene.AddThis ( *fPtrSolidA ); + scene.AddThis ( *this ); } diff --git a/source/geometry/solids/BREPS/src/G4BREPSolidPCone.cc b/source/geometry/solids/BREPS/src/G4BREPSolidPCone.cc index 0a1b792b9b..25486e6357 100644 --- a/source/geometry/solids/BREPS/src/G4BREPSolidPCone.cc +++ b/source/geometry/solids/BREPS/src/G4BREPSolidPCone.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4BREPSolidPCone.cc,v 1.14 1999/12/15 17:17:16 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // The polyconical solid G4BREPSolidPCone is a shape defined by a set of diff --git a/source/geometry/solids/BREPS/src/G4BREPSolidPolyhedra.cc b/source/geometry/solids/BREPS/src/G4BREPSolidPolyhedra.cc index 27bb153160..fb1b816047 100644 --- a/source/geometry/solids/BREPS/src/G4BREPSolidPolyhedra.cc +++ b/source/geometry/solids/BREPS/src/G4BREPSolidPolyhedra.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4BREPSolidPolyhedra.cc,v 1.11 1999/12/15 14:50:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // Corrections by S.Giani: // - Xaxis now corresponds to phi=0 diff --git a/source/geometry/solids/BREPS/src/G4BREPSolidSphere.cc b/source/geometry/solids/BREPS/src/G4BREPSolidSphere.cc index df514626ca..b0d8a334cf 100644 --- a/source/geometry/solids/BREPS/src/G4BREPSolidSphere.cc +++ b/source/geometry/solids/BREPS/src/G4BREPSolidSphere.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4BREPSolidSphere.cc,v 1.2 1999/12/15 14:50:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4BREPSolidSphere.hh" diff --git a/source/geometry/solids/BREPS/src/G4BREPSolidTorus.cc b/source/geometry/solids/BREPS/src/G4BREPSolidTorus.cc index 77e6c737c6..819ef0a4a3 100644 --- a/source/geometry/solids/BREPS/src/G4BREPSolidTorus.cc +++ b/source/geometry/solids/BREPS/src/G4BREPSolidTorus.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4BREPSolidTorus.cc,v 1.2 1999/12/15 14:50:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4BREPSolidTorus.hh" #include "G4ToroidalSurface.hh" diff --git a/source/geometry/solids/BREPS/src/G4BSplineCurve.cc b/source/geometry/solids/BREPS/src/G4BSplineCurve.cc index 4dd3cfbaf9..0dab0e0413 100644 --- a/source/geometry/solids/BREPS/src/G4BSplineCurve.cc +++ b/source/geometry/solids/BREPS/src/G4BSplineCurve.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4BSplineCurve.cc,v 1.2 1999/12/15 14:50:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4BSplineCurve.hh" #include "G4ControlPoints.hh" diff --git a/source/geometry/solids/BREPS/src/G4BSplineCurveWithKnots.cc b/source/geometry/solids/BREPS/src/G4BSplineCurveWithKnots.cc index ca35c97901..bd95c15b76 100644 --- a/source/geometry/solids/BREPS/src/G4BSplineCurveWithKnots.cc +++ b/source/geometry/solids/BREPS/src/G4BSplineCurveWithKnots.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4BSplineCurveWithKnots.cc,v 1.2 1999/12/15 14:50:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4BSplineCurveWithKnots.hh" diff --git a/source/geometry/solids/BREPS/src/G4BSplineSurface.cc b/source/geometry/solids/BREPS/src/G4BSplineSurface.cc index a1820ca5a5..006fa6402c 100644 --- a/source/geometry/solids/BREPS/src/G4BSplineSurface.cc +++ b/source/geometry/solids/BREPS/src/G4BSplineSurface.cc @@ -5,39 +5,38 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4BSplineSurface.cc,v 1.3 1999/12/15 14:50:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4BSplineSurface.cc,v 1.7 2000/02/25 15:58:47 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -#include "EntityInst.h" #include "G4BSplineSurface.hh" #include "G4BezierSurface.hh" - -class G4ControlPoints; -class G4BoundingBox; +#include "G4ControlPoints.hh" +#include "G4BoundingBox3D.hh" G4BSplineSurface::G4BSplineSurface() { distance = kInfinity; dir=ROW; - first_hit = Hit=(G4UVHit*)0; + first_hit = Hit = (G4UVHit*)0; ctl_points = (G4ControlPoints*)0; + u_knots = v_knots = tmp_knots = (G4KnotVector*)0; } -G4BSplineSurface::G4BSplineSurface(char* nurbfilename, G4Ray& rayref) +G4BSplineSurface::G4BSplineSurface(const char* nurbfilename, G4Ray& rayref) { distance = kInfinity; - Hit=(G4UVHit*)0; - first_hit = Hit; + first_hit = Hit = (G4UVHit*)0; + ctl_points = (G4ControlPoints*)0; + u_knots = v_knots = tmp_knots = (G4KnotVector*)0; } G4BSplineSurface::G4BSplineSurface(const G4BSplineSurface &tmp) { distance = tmp.distance; - Hit=(G4UVHit*)0; - first_hit=Hit; + first_hit = Hit = (G4UVHit*)0; // next=this; order[0] = tmp.order[0]; @@ -46,19 +45,23 @@ G4BSplineSurface::G4BSplineSurface(const G4BSplineSurface &tmp) u_knots = new G4KnotVector(*tmp.u_knots); v_knots = new G4KnotVector(*tmp.v_knots); + tmp_knots = (G4KnotVector*)0; ctl_points = new G4ControlPoints(*tmp.ctl_points); } G4BSplineSurface::G4BSplineSurface(G4int u, G4int v, G4KnotVector& u_kv, - G4KnotVector& v_kv,G4ControlPoints& cp) + G4KnotVector& v_kv, G4ControlPoints& cp) { + first_hit = Hit = (G4UVHit*)0; + order[0] = u+1; order[1] = v+1; - u_knots = new G4KnotVector(u_kv); - v_knots = new G4KnotVector(v_kv); + u_knots = new G4KnotVector(u_kv); + v_knots = new G4KnotVector(v_kv); + tmp_knots = (G4KnotVector*)0; ctl_points = new G4ControlPoints(cp); } @@ -70,13 +73,14 @@ G4BSplineSurface::~G4BSplineSurface() delete v_knots; delete ctl_points; G4UVHit* temphit=Hit; + Hit = first_hit; while(Hit!=(G4UVHit*)0) { Hit=Hit->next; delete temphit; temphit=Hit; } - delete temphit;// remove last + // delete temphit;// remove last } @@ -166,9 +170,18 @@ G4Point3D G4BSplineSurface::FinalIntersection() // Move to first bezier_list.MoveToFirst(); // Find the second last. +// What!? Casting a G4Surface* to a G4SurfaceList* !?!?!? - GC +// +// if(bezier_list.index != bezier_list.last) +// while ( ((G4SurfaceList*)bezier_list.index)->next != +// bezier_list.last) bezier_list.Step(); +// +// Try the following instead (if that's the wished behavior)... +// if(bezier_list.index != bezier_list.last) - while ( ((G4SurfaceList*)bezier_list.index)->next != - bezier_list.last) bezier_list.Step(); + while (bezier_list.next != bezier_list.last) + bezier_list.Step(); + G4BezierSurface* tmp = (G4BezierSurface*) bezier_list.GetSurface(); tmp->CalcBBox(); @@ -335,8 +348,9 @@ void G4BSplineSurface::FindIntersections(const G4Ray& rayref) if(bez_ptr->Distance() < distance) distance = bez_ptr->Distance(); // Remove the temporary Hit + if (first_hit == Hit) first_hit = (G4UVHit*)0; delete Hit; - first_hit = Hit = (G4UVHit*)0; + Hit = (G4UVHit*)0; // Move to next in the List bezier_list.Step(); @@ -538,7 +552,8 @@ G4Point3D G4BSplineSurface::BSEvaluate() param = Hit->v; // Evaluate the diff_curve... - G4PointRat rat_result = (G4PointRat&) InternalEvalCrv(0, diff_curve); + // G4PointRat rat_result = (G4PointRat&) InternalEvalCrv(0, diff_curve); + G4PointRat rat_result(InternalEvalCrv(0, diff_curve)); // Calc the 3D values. // L. Broglia @@ -553,7 +568,8 @@ G4Point3D G4BSplineSurface::BSEvaluate() for ( i = 0; i < row_size; i++) { ord = GetOrder(ROW); - G4Point3D rtr_pt = (G4Point3D&) InternalEvalCrv(i, curves); + // G4Point3D rtr_pt = (G4Point3D&) InternalEvalCrv(i, curves); + G4Point3D rtr_pt = (InternalEvalCrv(i, curves)).pt(); diff_curve->put(0,i,rtr_pt); } @@ -571,7 +587,7 @@ G4Point3D G4BSplineSurface::BSEvaluate() param = Hit->v; // Evaluate the diff_curve... - result = (G4Point3D&) InternalEvalCrv(0, diff_curve); + result = (InternalEvalCrv(0, diff_curve)).pt(); } delete diff_curve; @@ -592,7 +608,7 @@ G4Point3D G4BSplineSurface::Evaluation(const G4Ray& rayref) temphit=Hit; } - delete temphit; + // delete temphit; // Get the real Hit point closest_hit = FinalIntersection(); diff --git a/source/geometry/solids/BREPS/src/G4BSplineSurfaceWithKnots.cc b/source/geometry/solids/BREPS/src/G4BSplineSurfaceWithKnots.cc new file mode 100644 index 0000000000..b2615af577 --- /dev/null +++ b/source/geometry/solids/BREPS/src/G4BSplineSurfaceWithKnots.cc @@ -0,0 +1,12 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4BSplineSurfaceWithKnots.cc,v 1.1 2000/02/25 15:57:43 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +#include "G4BSplineSurfaceWithKnots.hh" + diff --git a/source/geometry/solids/BREPS/src/G4BezierSurface.cc b/source/geometry/solids/BREPS/src/G4BezierSurface.cc index a763a9ba13..cb34a1219d 100644 --- a/source/geometry/solids/BREPS/src/G4BezierSurface.cc +++ b/source/geometry/solids/BREPS/src/G4BezierSurface.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4BezierSurface.cc,v 1.2 1999/12/15 14:50:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // L. Broglia, 10/10/98 // Error in line 331 and replaced addition of coordinates by diff --git a/source/geometry/solids/BREPS/src/G4CircularCurve.cc b/source/geometry/solids/BREPS/src/G4CircularCurve.cc index 05be2b8621..04af2514ac 100644 --- a/source/geometry/solids/BREPS/src/G4CircularCurve.cc +++ b/source/geometry/solids/BREPS/src/G4CircularCurve.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4CircularCurve.cc,v 1.2 1999/12/15 14:50:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4CircularCurve.hh" diff --git a/source/geometry/solids/BREPS/src/G4Conic.cc b/source/geometry/solids/BREPS/src/G4Conic.cc index f9a076f8df..28ac3ed65b 100644 --- a/source/geometry/solids/BREPS/src/G4Conic.cc +++ b/source/geometry/solids/BREPS/src/G4Conic.cc @@ -2,7 +2,6 @@ // G4Conic G4Conic::G4Conic (): pShift(0) {} -G4Conic::G4Conic (STEPentity& Ent){}; G4Conic::~G4Conic() {} diff --git a/source/geometry/solids/BREPS/src/G4ConicalSurface.cc b/source/geometry/solids/BREPS/src/G4ConicalSurface.cc index 220143fbb5..399a1fd8b0 100644 --- a/source/geometry/solids/BREPS/src/G4ConicalSurface.cc +++ b/source/geometry/solids/BREPS/src/G4ConicalSurface.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ConicalSurface.cc,v 1.2 1999/12/15 14:50:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ConicalSurface.cc,v 1.3 2000/02/25 16:00:13 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // /* /usr/local/gismo/repo/geometry/G4ConicalSurface.cc,v 1.6 1994/08/03 17:15:01 burnett Exp */ // File: G4ConicalSurface.cc @@ -61,9 +61,9 @@ G4ConicalSurface::G4ConicalSurface( const G4Point3D& o, */ axis = a*(1/amag); else { - G4cerr << "Error in G4ConicalSurface::G4ConicalSurface" - <<"--axis has zero length\n" - << "\tDefault axis ( 1.0, 0.0, 0.0 ) is used.\n"; + G4cerr << "WARNING - G4ConicalSurface::G4ConicalSurface" << G4endl + << "\tAxis has zero length" << G4endl + << "\tDefault axis ( 1.0, 0.0, 0.0 ) is used." << G4endl; axis = G4Vector3D( 1.0, 0.0, 0.0 ); } @@ -72,10 +72,11 @@ G4ConicalSurface::G4ConicalSurface( const G4Point3D& o, if ( ( e > 0.0 ) && ( e < ( 0.5 * M_PI ) ) ) angle = e; else { - G4cerr << "Error in G4ConicalSurface::G4ConicalSurface" - << "--asked for angle out of allowed range of 0 to PI/2\n" - << "\tDefault angle of 1.0 is used.\n"; - + G4cerr << "WARNING - G4ConicalSurface::G4ConicalSurface" << G4endl + << "\tAsked for angle out of allowed range of 0 to " + << 0.5*M_PI << " (PI/2): " << e << G4endl + << "\tDefault angle of 1.0 is used." << G4endl; + angle = 1.0; } } @@ -538,15 +539,16 @@ void G4ConicalSurface::SetAngle( G4double e ) // Reset the angle of the G4ConicalSurface // Require angle to range from 0 to PI/2 // if ( ( e > 0.0 ) && ( e < ( 0.5 * M_PI ) ) ) - if ( (e > 0.0) && (e <= ( 0.5 * M_PI)) ) + if ( (e > 0.0) && (e <= ( 0.5 * M_PI )) ) angle = e; // use old value (do not change angle) if out of the range, //but Print message else { - G4cerr << "Error in G4ConicalSurface::SetAngle" - << "--asked for angle out of allowed range of 0 to PI/2\n" - << "\tDefault angle of " << angle << " is used.\n"; + G4cerr << "WARNING - G4ConicalSurface::SetAngle" << G4endl + << "\tAsked for angle out of allowed range of 0 to " + << 0.5*M_PI << " (PI/2):" << e << G4endl + << "\tDefault angle of " << angle << " is used." << G4endl; } } diff --git a/source/geometry/solids/BREPS/src/G4ControlPoints.cc b/source/geometry/solids/BREPS/src/G4ControlPoints.cc index 73c67cea6f..9238936526 100644 --- a/source/geometry/solids/BREPS/src/G4ControlPoints.cc +++ b/source/geometry/solids/BREPS/src/G4ControlPoints.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ControlPoints.cc,v 1.2 1999/12/15 14:50:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ControlPoints.cc,v 1.3 2000/01/21 13:47:51 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Modif 8 oct 98 : A.Floquet @@ -125,17 +125,3 @@ G4double G4ControlPoints::ClosestDistanceToPoint( const G4Point3D& Pt) return PointDist; } - - - - - - - - - - - - - - diff --git a/source/geometry/solids/BREPS/src/G4Curve.cc b/source/geometry/solids/BREPS/src/G4Curve.cc index 7e21c35135..00de3162ee 100644 --- a/source/geometry/solids/BREPS/src/G4Curve.cc +++ b/source/geometry/solids/BREPS/src/G4Curve.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Curve.cc,v 1.2 1999/12/15 14:50:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4Curve.hh" diff --git a/source/geometry/solids/BREPS/src/G4CylindricalSurface.cc b/source/geometry/solids/BREPS/src/G4CylindricalSurface.cc index 85b78462dc..cc154d1df4 100644 --- a/source/geometry/solids/BREPS/src/G4CylindricalSurface.cc +++ b/source/geometry/solids/BREPS/src/G4CylindricalSurface.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4CylindricalSurface.cc,v 1.2 1999/12/15 14:50:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // /* /usr/local/gismo/repo/geometry/G4CylindricalSurface.cc,v 1.24 1994/08/03 17:15:09 burnett Exp */ // File: G4CylindricalSurface.cc diff --git a/source/geometry/solids/BREPS/src/G4Ellipse.cc b/source/geometry/solids/BREPS/src/G4Ellipse.cc index abc8bb3978..3998809201 100644 --- a/source/geometry/solids/BREPS/src/G4Ellipse.cc +++ b/source/geometry/solids/BREPS/src/G4Ellipse.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Ellipse.cc,v 1.2 1999/12/15 14:50:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Ellipse.cc,v 1.3 2000/05/15 14:16:43 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4Ellipse.hh" @@ -34,7 +34,17 @@ G4Curve* G4Ellipse::Project(const G4Transform3D& tr) G4Vector3D a = semiAxis1*xPrime; G4Vector3D b = semiAxis2*yPrime; - G4double u = atan2( 2*a*b, a.mag2()-b.mag2() ) / 2; + + G4double u; + G4double abmag = a.mag2()-b.mag2(); + G4double prod = 2*a*b; + if (abmag < FLT_MAX) + if (prod > 0) + u = pi/4; + else + u = -pi/4; + else + u = atan2(prod,abmag) / 2; // get the coordinate axis directions and the semiaxis lengths G4Vector3D sAxis1 = a*cos(u)+b*sin(u); diff --git a/source/geometry/solids/BREPS/src/G4FConicalSurface.cc b/source/geometry/solids/BREPS/src/G4FConicalSurface.cc index 475c3acd48..57dd1f0e08 100644 --- a/source/geometry/solids/BREPS/src/G4FConicalSurface.cc +++ b/source/geometry/solids/BREPS/src/G4FConicalSurface.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4FConicalSurface.cc,v 1.9 1999/12/15 14:50:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // /* /usr/local/gismo/repo/geometry/G4FConicalSurface.cc,v 1.2 1993/02/05 00:38:39 alanb Exp */ // File: G4FConicalSurface.cc diff --git a/source/geometry/solids/BREPS/src/G4FCylindricalSurface.cc b/source/geometry/solids/BREPS/src/G4FCylindricalSurface.cc index 066b3c5906..c7d53d0482 100644 --- a/source/geometry/solids/BREPS/src/G4FCylindricalSurface.cc +++ b/source/geometry/solids/BREPS/src/G4FCylindricalSurface.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4FCylindricalSurface.cc,v 1.9 1999/12/15 14:50:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // /* /usr/local/gismo/repo/geometry/FG4Cylinder.cc,v 1.1 1992/10/27 22:02:29 alanb Exp */ // File: FG4Cylinder.cc diff --git a/source/geometry/solids/BREPS/src/G4FPlane.cc b/source/geometry/solids/BREPS/src/G4FPlane.cc index d9c80f596c..9dabe74a5f 100644 --- a/source/geometry/solids/BREPS/src/G4FPlane.cc +++ b/source/geometry/solids/BREPS/src/G4FPlane.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4FPlane.cc,v 1.7 1999/12/15 14:50:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // Corrections by S.Giani: // - The constructor using iVec now properly stores both the internal and diff --git a/source/geometry/solids/BREPS/src/G4Hyperbola.cc b/source/geometry/solids/BREPS/src/G4Hyperbola.cc index 61ee8dfce5..2569e2787f 100644 --- a/source/geometry/solids/BREPS/src/G4Hyperbola.cc +++ b/source/geometry/solids/BREPS/src/G4Hyperbola.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Hyperbola.cc,v 1.2 1999/12/15 14:50:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4Hyperbola.hh" diff --git a/source/geometry/solids/BREPS/src/G4KnotVector.cc b/source/geometry/solids/BREPS/src/G4KnotVector.cc index 7433a0ef2b..565ff03194 100644 --- a/source/geometry/solids/BREPS/src/G4KnotVector.cc +++ b/source/geometry/solids/BREPS/src/G4KnotVector.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4KnotVector.cc,v 1.2 1999/12/15 14:50:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4KnotVector.hh" diff --git a/source/geometry/solids/BREPS/src/G4Line.cc b/source/geometry/solids/BREPS/src/G4Line.cc index b7aaea781f..867de6b7f4 100644 --- a/source/geometry/solids/BREPS/src/G4Line.cc +++ b/source/geometry/solids/BREPS/src/G4Line.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Line.cc,v 1.4 1999/12/15 14:50:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4Line.hh" diff --git a/source/geometry/solids/BREPS/src/G4OsloMatrix.cc b/source/geometry/solids/BREPS/src/G4OsloMatrix.cc index f160431bcc..6bc1f951d7 100644 --- a/source/geometry/solids/BREPS/src/G4OsloMatrix.cc +++ b/source/geometry/solids/BREPS/src/G4OsloMatrix.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OsloMatrix.cc,v 1.2 1999/12/15 14:50:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4OsloMatrix.hh" diff --git a/source/geometry/solids/BREPS/src/G4Parabola.cc b/source/geometry/solids/BREPS/src/G4Parabola.cc index 3835a90cb3..9cda593341 100644 --- a/source/geometry/solids/BREPS/src/G4Parabola.cc +++ b/source/geometry/solids/BREPS/src/G4Parabola.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Parabola.cc,v 1.2 1999/12/15 14:50:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4Parabola.hh" diff --git a/source/geometry/solids/BREPS/src/G4PlacedSolid.cc b/source/geometry/solids/BREPS/src/G4PlacedSolid.cc index 7e2ab57d07..4651537c1e 100644 --- a/source/geometry/solids/BREPS/src/G4PlacedSolid.cc +++ b/source/geometry/solids/BREPS/src/G4PlacedSolid.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PlacedSolid.cc,v 1.2 1999/12/15 14:50:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4PlacedSolid.hh" diff --git a/source/geometry/solids/BREPS/src/G4PointRat.cc b/source/geometry/solids/BREPS/src/G4PointRat.cc index e3046cd376..dd1b26bf37 100644 --- a/source/geometry/solids/BREPS/src/G4PointRat.cc +++ b/source/geometry/solids/BREPS/src/G4PointRat.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PointRat.cc,v 1.2 1999/12/15 14:50:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PointRat.cc,v 1.3 2000/01/21 13:47:51 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Modif 8 oct 98 : A.Floquet @@ -34,11 +34,3 @@ void G4PointRat::operator=(const G4Point3D& a) { pt3d = a; s=1; } - -void G4PointRat::CopyRationalValue(const RealNode& RNode) -{ - s = RNode.value; -} - - - diff --git a/source/geometry/solids/BREPS/src/G4ProjectedSurface.cc b/source/geometry/solids/BREPS/src/G4ProjectedSurface.cc index 7086a57fa4..2e57b31305 100644 --- a/source/geometry/solids/BREPS/src/G4ProjectedSurface.cc +++ b/source/geometry/solids/BREPS/src/G4ProjectedSurface.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ProjectedSurface.cc,v 1.3 1999/12/15 14:50:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4ProjectedSurface.hh" diff --git a/source/geometry/solids/BREPS/src/G4Ray.cc b/source/geometry/solids/BREPS/src/G4Ray.cc index acabe18d59..c8b2e819a9 100644 --- a/source/geometry/solids/BREPS/src/G4Ray.cc +++ b/source/geometry/solids/BREPS/src/G4Ray.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Ray.cc,v 1.2 1999/12/15 14:50:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4Ray.hh" #include "G4PointRat.hh" diff --git a/source/geometry/solids/BREPS/src/G4RectangularTrimmedSurface.cc b/source/geometry/solids/BREPS/src/G4RectangularTrimmedSurface.cc index 04e8f81864..0a4f23e8fe 100644 --- a/source/geometry/solids/BREPS/src/G4RectangularTrimmedSurface.cc +++ b/source/geometry/solids/BREPS/src/G4RectangularTrimmedSurface.cc @@ -5,10 +5,10 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4RectangularTrimmedSurface.cc,v 1.2 1999/12/15 14:50:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4RectangularTrimmedSurface.cc,v 1.3 2000/01/21 13:47:52 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -#include "SdaiCONFIG_CONTROL_DESIGN.h" + #include "G4RectangularTrimmedSurface.hh" #include "G4FPlane.hh" #include "G4BSplineSurface.hh" @@ -45,5 +45,3 @@ int G4RectangularTrimmedSurface::Intersect(const G4Ray& Rayref) return 0; } - - diff --git a/source/geometry/solids/BREPS/src/G4Sort.cc b/source/geometry/solids/BREPS/src/G4Sort.cc index 88dc95488b..bf432b1fbd 100644 --- a/source/geometry/solids/BREPS/src/G4Sort.cc +++ b/source/geometry/solids/BREPS/src/G4Sort.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Sort.cc,v 1.2 1999/12/15 14:50:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // File: G4Sort.cc // Author: Alan Breakstone diff --git a/source/geometry/solids/BREPS/src/G4SphericalSurface.cc b/source/geometry/solids/BREPS/src/G4SphericalSurface.cc index 9fe15c1c62..63bb05f9dd 100644 --- a/source/geometry/solids/BREPS/src/G4SphericalSurface.cc +++ b/source/geometry/solids/BREPS/src/G4SphericalSurface.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4SphericalSurface.cc,v 1.2 1999/12/15 14:50:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // /* $Header: /private/Net/unixhub/u1/ea/liml/gismo/gismo-0.2/geometry/RCS/G4SphericalSurface.cc,v 1.10 1992/08 */ // File: G4SphericalSurface.cc diff --git a/source/geometry/solids/BREPS/src/G4SurfaceList.cc b/source/geometry/solids/BREPS/src/G4SurfaceList.cc index da0e4b267e..fd1ebd3dbe 100644 --- a/source/geometry/solids/BREPS/src/G4SurfaceList.cc +++ b/source/geometry/solids/BREPS/src/G4SurfaceList.cc @@ -5,14 +5,14 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4SurfaceList.cc,v 1.2 1999/12/15 14:50:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4SurfaceList.cc,v 1.3 2000/02/14 17:49:32 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4SurfaceList.hh" G4SurfaceList::G4SurfaceList() { - first = index = last = (G4Surface*)0; + first = index = last = next = temp = (G4Surface*)0; number_of_elements=0; } @@ -239,11 +239,3 @@ void G4SurfaceList::QuickG4Sort(G4Surface** Dist, int left, int right) if( i < right ) QuickG4Sort(Dist, i, right); } - - - - - - - - diff --git a/source/geometry/solids/BREPS/src/G4ThreeMat.cc b/source/geometry/solids/BREPS/src/G4ThreeMat.cc index dd1ba6529d..45528610c9 100644 --- a/source/geometry/solids/BREPS/src/G4ThreeMat.cc +++ b/source/geometry/solids/BREPS/src/G4ThreeMat.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ThreeMat.cc,v 1.2 1999/12/15 14:50:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // /* G4ThreeMat.cc,v 1.5 1993/08/02 22:21:27 atwood Exp */ // File: G4ThreeMat.cc diff --git a/source/geometry/solids/BREPS/src/G4ToroidalSurface.cc b/source/geometry/solids/BREPS/src/G4ToroidalSurface.cc index 693e32c846..1166d4d3ac 100644 --- a/source/geometry/solids/BREPS/src/G4ToroidalSurface.cc +++ b/source/geometry/solids/BREPS/src/G4ToroidalSurface.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ToroidalSurface.cc,v 1.2 1999/12/15 14:50:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4ToroidalSurface.hh" diff --git a/source/geometry/solids/Boolean/History b/source/geometry/solids/Boolean/History index f95b1d5636..8baa971c4c 100644 --- a/source/geometry/solids/Boolean/History +++ b/source/geometry/solids/Boolean/History @@ -1,5 +1,5 @@ -$Id: History,v 1.5 2000/01/19 19:24:25 gcosmo Exp $ +$Id: History,v 1.12 2000/06/26 16:16:06 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -20,7 +20,42 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- - Gen 19 2000 Gabriele Cosmo geom-solid-bool-V01-00-00 + June 26 2000 Vladimir Grichine geom-solid-bool-V01-01-03 + + - Fixed bug in G4SubtractionSolid::DistanceToOut(p,v,...). validNorm + flag was uncorrectly set to true. Fixes report #102. + + June 6 2000 John Apostolakis geom-solid-bool-V01-01-02 + + - Protecting the use of pointers validNorm and n, if calcNorm is false + + June 6 2000 John Allison geom-solid-bool-V01-01-01 + + - Re-enabled CreatePolyhedron() method from G4UnionSolid, G4IntersectionSolid + and G4SubtractionSolid. Coworks with greps-V01-01-04. + + May 26 2000 John Allison geom-solid-bool-V01-01-00 + + - Disabled CreatePolyhedron() method from G4UnionSolid, G4IntersectionSolid + and G4SubtractionSolid. It now temporarly returns a NULL pointer. + Visualisation of Boolean solids is therefore temporarly disabled, pending + a definitive fix in graphics_reps. + Files G4UnionSolid.cc, G4SubtractionSolid.cc and G4IntersectionSolid.cc + are included in the branch-tag "boolean_nopoly_branch". + + Apr 27 2000 Gabriele Cosmo + + - Reorganised comments for the Software Reference Manual. + - Added CVS headers and standard G4 header where missing. + + Apr 11 2000 John Allison + + - CreatePolyhedron implemented for BooleanSolids. + - G4DisplacedSolid: reversed implementation of GetFrameRotation and + GetObjectRotation, removing inappropriate invertion. + - G4DisplacedSolid::GetConstituentMovedSolid() made const. + + Jan 19 2000 Gabriele Cosmo geom-solid-bool-V01-00-00 - Syncronized file versions with HEAD (essentially CVS headers changes) - Fixed cases of G4std::min which were not migrated on the HEAD in files: diff --git a/source/geometry/solids/Boolean/include/G4BooleanSolid.hh b/source/geometry/solids/Boolean/include/G4BooleanSolid.hh index 2389698fbe..05e7144aaa 100644 --- a/source/geometry/solids/Boolean/include/G4BooleanSolid.hh +++ b/source/geometry/solids/Boolean/include/G4BooleanSolid.hh @@ -1,11 +1,24 @@ -// Class Description +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4BooleanSolid.hh,v 1.3 2000/04/27 09:59:36 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// class G4BooleanSolid +// +// Class description: // // Abstract base class for solids created by boolean operations -// between other solids +// between other solids. // History: // -// 10.09.98 V.Grichine, creation according J. Apostolakis's recommendations +// 10.09.98 V.Grichine, creation according J. Apostolakis's recommendations. #ifndef G4BOOLEANSOLID_HH @@ -19,41 +32,42 @@ #include "G4Transform3D.hh" #include "G4AffineTransform.hh" - -class G4BooleanSolid: public G4VSolid +class G4BooleanSolid : public G4VSolid { -public: // With Description - G4BooleanSolid( const G4String& pName, - G4VSolid* pSolidA , - G4VSolid* pSolidB ) ; + public: // with description + + G4BooleanSolid( const G4String& pName, + G4VSolid* pSolidA , + G4VSolid* pSolidB ) ; - G4BooleanSolid( const G4String& pName, - G4VSolid* pSolidA , - G4VSolid* pSolidB, - G4RotationMatrix* rotMatrix, - const G4ThreeVector& transVector ) ; + G4BooleanSolid( const G4String& pName, + G4VSolid* pSolidA , + G4VSolid* pSolidB, + G4RotationMatrix* rotMatrix, + const G4ThreeVector& transVector ) ; - G4BooleanSolid( const G4String& pName, - G4VSolid* pSolidA , - G4VSolid* pSolidB , - const G4Transform3D& transform ) ; + G4BooleanSolid( const G4String& pName, + G4VSolid* pSolidA , + G4VSolid* pSolidB , + const G4Transform3D& transform ) ; - virtual ~G4BooleanSolid() ; + virtual ~G4BooleanSolid() ; -public: // With Description - // If Solid is made up from a Boolean operation of two solids, - // return the corresponding solid (for no=0 and 1) - // If the solid is not a "Boolean", return 0 virtual const G4VSolid* GetConstituentSolid(G4int no) const; virtual G4VSolid* GetConstituentSolid(G4int no); + // If Solid is made up from a Boolean operation of two solids, + // return the corresponding solid (for no=0 and 1) + // If the solid is not a "Boolean", return 0. -protected: - G4VSolid* fPtrSolidA ; - G4VSolid* fPtrSolidB ; + protected: + + G4VSolid* fPtrSolidA ; + G4VSolid* fPtrSolidB ; -private: - G4bool createdDisplacedSolid; // If & only if this object - // created it, it must delete it + private: + + G4bool createdDisplacedSolid; + // If & only if this object created it, it must delete it } ; #endif diff --git a/source/geometry/solids/Boolean/include/G4DisplacedSolid.hh b/source/geometry/solids/Boolean/include/G4DisplacedSolid.hh index 3f96ac12bd..ca9b61837a 100644 --- a/source/geometry/solids/Boolean/include/G4DisplacedSolid.hh +++ b/source/geometry/solids/Boolean/include/G4DisplacedSolid.hh @@ -1,9 +1,22 @@ -// Class description +// This code implementation is the intellectual property of +// the GEANT4 collaboration. // -// A displaced solid is a solid that has been shifted from its original -// frame of reference to a new one. It is meant to be used only for -// simplifying the implementation of "Boolean solids". +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. // +// $Id: G4DisplacedSolid.hh,v 1.7 2000/04/27 09:59:36 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// class G4DisplacedSolid +// +// Class description: +// +// A displaced solid is a solid that has been shifted from its original +// frame of reference to a new one. It is meant to be used only for +// simplifying the implementation of "Boolean solids". + // History: // // 28.10.98 V.Grichine, creation according J. Apostolakis's recommendations @@ -17,36 +30,36 @@ #include "G4Transform3D.hh" #include "G4AffineTransform.hh" -class G4DisplacedSolid : public G4VSolid +class G4DisplacedSolid : public G4VSolid { -public: // With description - G4DisplacedSolid( const G4String& pName, - G4VSolid* pSolid , - G4RotationMatrix* rotMatrix, - const G4ThreeVector& transVector ) ; + public: // with description - G4DisplacedSolid( const G4String& pName, - G4VSolid* pSolid , - const G4Transform3D& transform ) ; + G4DisplacedSolid( const G4String& pName, + G4VSolid* pSolid , + G4RotationMatrix* rotMatrix, + const G4ThreeVector& transVector ) ; -public: - G4DisplacedSolid( const G4String& pName, - G4VSolid* pSolid , - const G4AffineTransform directTransform ); - // For use in instantiating a transient instance from a persistent one: + G4DisplacedSolid( const G4String& pName, + G4VSolid* pSolid , + const G4Transform3D& transform ) ; -public: // With description - virtual ~G4DisplacedSolid() ; - // - // It also has all the methods that a solid requires, eg. - EInside Inside( const G4ThreeVector& p ) const ; + G4DisplacedSolid( const G4String& pName, + G4VSolid* pSolid , + const G4AffineTransform directTransform ); + // For use in instantiating a transient instance from a persistent one. -public: - G4bool CalculateExtent(const EAxis pAxis, - const G4VoxelLimits& pVoxelLimit, - const G4AffineTransform& pTransform, - G4double& pMin, G4double& pMax) const ; - + virtual ~G4DisplacedSolid() ; + + public: // without description + + // It also has all the methods that a solid requires, eg. + + 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 ; @@ -68,43 +81,46 @@ public: const G4int n, const G4VPhysicalVolume* pRep ) ; -public: // With description + public: // with description - virtual G4GeometryType GetEntityType() const - { return G4String("G4DisplacedSolid"); } + virtual G4GeometryType GetEntityType() const; - // If the Solid is a "G4DisplacedSolid", return a self pointer - // else return 0 virtual const G4DisplacedSolid* GetDisplacedSolidPtr() const ; virtual G4DisplacedSolid* GetDisplacedSolidPtr(); + // If the Solid is a "G4DisplacedSolid", + // return a self pointer else return 0. - // Access methods - G4VSolid* GetConstituentMovedSolid(); + G4VSolid* GetConstituentMovedSolid() const; G4AffineTransform GetTransform() const; G4AffineTransform GetDirectTransform() const; - - // Get the rotation/translation, as applied to the frame of reference + // Access methods. + G4RotationMatrix GetFrameRotation() const; G4ThreeVector GetFrameTranslation() const; + // Get the rotation/translation, as applied to the frame of reference. - // Get the rotation/translation, as applied to the object G4RotationMatrix GetObjectRotation() const; G4ThreeVector GetObjectTranslation() const; + // Get the rotation/translation, as applied to the object. + + public: // without description -public: - // For creating graphical representations (ie for visualisation) void DescribeYourselfTo ( G4VGraphicsScene& scene ) const ; - G4VisExtent GetExtent () const ; G4Polyhedron* CreatePolyhedron () const ; G4NURBS* CreateNURBS () const ; + // For creating graphical representations (ie for visualisation). -protected: - G4VSolid* fPtrSolid ; - G4AffineTransform* fPtrTransform ; - G4AffineTransform* fDirectTransform ; + protected: + + G4VSolid* fPtrSolid ; + G4AffineTransform* fPtrTransform ; + G4AffineTransform* fDirectTransform ; -private: - } ; +inline G4GeometryType G4DisplacedSolid::GetEntityType() const +{ + return G4String("G4DisplacedSolid"); +} + #endif diff --git a/source/geometry/solids/Boolean/include/G4IntersectionSolid.hh b/source/geometry/solids/Boolean/include/G4IntersectionSolid.hh index 6c24bfb561..eb19dfbc1f 100644 --- a/source/geometry/solids/Boolean/include/G4IntersectionSolid.hh +++ b/source/geometry/solids/Boolean/include/G4IntersectionSolid.hh @@ -1,5 +1,20 @@ -// Class for description of intersection of two CSG solids +// This code implementation is the intellectual property of +// the GEANT4 collaboration. // +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4IntersectionSolid.hh,v 1.3 2000/04/27 09:59:36 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// class G4IntersectionSolid +// +// Class description: +// +// Class for description of intersection of two CSG solids. + // History: // // 12.09.98 V. Grichine, initial design according to J.Apostolakis's @@ -11,38 +26,41 @@ #include "G4BooleanSolid.hh" #include "G4VSolid.hh" -// #include "G4PlacedSolid.hh" #include "G4RotationMatrix.hh" #include "G4ThreeVector.hh" #include "G4Transform3D.hh" #include "G4AffineTransform.hh" -class G4IntersectionSolid: public G4BooleanSolid +class G4IntersectionSolid : public G4BooleanSolid { -public: - G4IntersectionSolid( const G4String& pName, - G4VSolid* pSolidA , - G4VSolid* pSolidB ) ; + public: // with description - G4IntersectionSolid( const G4String& pName, - G4VSolid* pSolidA , - G4VSolid* pSolidB, - G4RotationMatrix* rotMatrix, - const G4ThreeVector& transVector ) ; + G4IntersectionSolid( const G4String& pName, + G4VSolid* pSolidA , + G4VSolid* pSolidB ) ; - G4IntersectionSolid( const G4String& pName, - G4VSolid* pSolidA , - G4VSolid* pSolidB, - const G4Transform3D& transform ) ; + G4IntersectionSolid( const G4String& pName, + G4VSolid* pSolidA , + G4VSolid* pSolidB, + G4RotationMatrix* rotMatrix, + const G4ThreeVector& transVector ) ; - virtual ~G4IntersectionSolid() ; + G4IntersectionSolid( const G4String& pName, + G4VSolid* pSolidA , + G4VSolid* pSolidB, + const G4Transform3D& transform ) ; + virtual ~G4IntersectionSolid() ; - G4bool CalculateExtent(const EAxis pAxis, - const G4VoxelLimits& pVoxelLimit, - const G4AffineTransform& pTransform, - G4double& pMin, G4double& pMax) const ; + virtual G4GeometryType GetEntityType() const; + + public: // without description + + G4bool CalculateExtent( const EAxis pAxis, + const G4VoxelLimits& pVoxelLimit, + const G4AffineTransform& pTransform, + G4double& pMin, G4double& pMax) const ; EInside Inside( const G4ThreeVector& p ) const ; @@ -66,19 +84,16 @@ public: const G4int n, const G4VPhysicalVolume* pRep ) ; - virtual G4GeometryType GetEntityType() const - { return G4String("G4IntersectionSolid"); } - void DescribeYourselfTo ( G4VGraphicsScene& scene ) const ; - G4VisExtent GetExtent () const ; G4Polyhedron* CreatePolyhedron () const ; G4NURBS* CreateNURBS () const ; -protected: - -private: - } ; +inline G4GeometryType G4IntersectionSolid::GetEntityType() const +{ + return G4String("G4IntersectionSolid"); +} + #endif diff --git a/source/geometry/solids/Boolean/include/G4SubtractionSolid.hh b/source/geometry/solids/Boolean/include/G4SubtractionSolid.hh index 7a837de309..e281c3be7b 100644 --- a/source/geometry/solids/Boolean/include/G4SubtractionSolid.hh +++ b/source/geometry/solids/Boolean/include/G4SubtractionSolid.hh @@ -1,16 +1,30 @@ -// Class for description of subtraction of two CSG solids: A - B !!! +// This code implementation is the intellectual property of +// the GEANT4 collaboration. // +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4SubtractionSolid.hh,v 1.3 2000/04/27 09:59:37 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// class G4SubtractionSolid +// +// Class description: +// +// Class for description of subtraction of two CSG solids: A - B. + // History: // -// 14.10.98 V.Grichine - first implementation -// +// 14.10.98 V.Grichine - first implementation. + #ifndef G4SUBTRACTIONSOLID_HH #define G4SUBTRACTIONSOLID_HH #include "G4BooleanSolid.hh" #include "G4VSolid.hh" -// #include "G4PlacedSolid.hh" #include "G4RotationMatrix.hh" #include "G4ThreeVector.hh" @@ -18,29 +32,32 @@ #include "G4AffineTransform.hh" - -class G4SubtractionSolid: public G4BooleanSolid +class G4SubtractionSolid : public G4BooleanSolid { -public: - G4SubtractionSolid( const G4String& pName, - G4VSolid* pSolidA , - G4VSolid* pSolidB ) ; + public: // with description - G4SubtractionSolid( const G4String& pName, - G4VSolid* pSolidA , - G4VSolid* pSolidB , - G4RotationMatrix* rotMatrix, - const G4ThreeVector& transVector ) ; + G4SubtractionSolid( const G4String& pName, + G4VSolid* pSolidA , + G4VSolid* pSolidB ) ; - G4SubtractionSolid( const G4String& pName, - G4VSolid* pSolidA , - G4VSolid* pSolidB , - const G4Transform3D& transform ) ; + G4SubtractionSolid( const G4String& pName, + G4VSolid* pSolidA , + G4VSolid* pSolidB , + G4RotationMatrix* rotMatrix, + const G4ThreeVector& transVector ) ; - virtual ~G4SubtractionSolid() ; + G4SubtractionSolid( const G4String& pName, + G4VSolid* pSolidA , + G4VSolid* pSolidB , + const G4Transform3D& transform ) ; + virtual ~G4SubtractionSolid() ; - G4bool CalculateExtent(const EAxis pAxis, + virtual G4GeometryType GetEntityType() const ; + + public: // without description + + G4bool CalculateExtent( const EAxis pAxis, const G4VoxelLimits& pVoxelLimit, const G4AffineTransform& pTransform, G4double& pMin, G4double& pMax) const ; @@ -67,19 +84,16 @@ public: const G4int n, const G4VPhysicalVolume* pRep ) ; - virtual G4GeometryType GetEntityType() const - { return G4String("G4SubtractionSolid"); } - void DescribeYourselfTo ( G4VGraphicsScene& scene ) const ; - G4VisExtent GetExtent () const ; G4Polyhedron* CreatePolyhedron () const ; G4NURBS* CreateNURBS () const ; -protected: +}; -private: - -} ; +inline G4GeometryType G4SubtractionSolid::GetEntityType() const +{ + return G4String("G4SubtractionSolid"); +} #endif diff --git a/source/geometry/solids/Boolean/include/G4UnionSolid.hh b/source/geometry/solids/Boolean/include/G4UnionSolid.hh index 8d79e172a9..0108739067 100644 --- a/source/geometry/solids/Boolean/include/G4UnionSolid.hh +++ b/source/geometry/solids/Boolean/include/G4UnionSolid.hh @@ -1,47 +1,64 @@ -// Class for description of intersection of two CSG solids +// This code implementation is the intellectual property of +// the GEANT4 collaboration. // +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4UnionSolid.hh,v 1.4 2000/04/27 09:59:37 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// class G4UnionSolid +// +// Class description: +// +// Class for description of union of two CSG solids. + // History: // -// 12.09.98 V.Grichine -// +// 12.09.98 V.Grichine, created. #ifndef G4UNIONSOLID_HH #define G4UNIONSOLID_HH #include "G4BooleanSolid.hh" #include "G4VSolid.hh" -// #include "G4PlacedSolid.hh" #include "G4RotationMatrix.hh" #include "G4ThreeVector.hh" #include "G4Transform3D.hh" #include "G4AffineTransform.hh" -class G4UnionSolid: public G4BooleanSolid +class G4UnionSolid : public G4BooleanSolid { -public: - G4UnionSolid( const G4String& pName, - G4VSolid* pSolidA , - G4VSolid* pSolidB ) ; + public: // with description - G4UnionSolid( const G4String& pName, - G4VSolid* pSolidA , - G4VSolid* pSolidB , - G4RotationMatrix* rotMatrix, - const G4ThreeVector& transVector ) ; + G4UnionSolid( const G4String& pName, + G4VSolid* pSolidA , + G4VSolid* pSolidB ) ; - G4UnionSolid( const G4String& pName, - G4VSolid* pSolidA , - G4VSolid* pSolidB , - const G4Transform3D& transform ) ; + G4UnionSolid( const G4String& pName, + G4VSolid* pSolidA , + G4VSolid* pSolidB , + G4RotationMatrix* rotMatrix, + const G4ThreeVector& transVector ) ; - virtual ~G4UnionSolid() ; + G4UnionSolid( const G4String& pName, + G4VSolid* pSolidA , + G4VSolid* pSolidB , + const G4Transform3D& transform ) ; + virtual ~G4UnionSolid() ; - G4bool CalculateExtent(const EAxis pAxis, - const G4VoxelLimits& pVoxelLimit, - const G4AffineTransform& pTransform, - G4double& pMin, G4double& pMax) const ; + virtual G4GeometryType GetEntityType() const ; + + public: // without description + + G4bool CalculateExtent( const EAxis pAxis, + const G4VoxelLimits& pVoxelLimit, + const G4AffineTransform& pTransform, + G4double& pMin, G4double& pMax) const ; EInside Inside( const G4ThreeVector& p ) const ; @@ -65,19 +82,16 @@ public: const G4int n, const G4VPhysicalVolume* pRep ) ; - virtual G4GeometryType GetEntityType() const - { return G4String("G4UnionSolid"); } - void DescribeYourselfTo ( G4VGraphicsScene& scene ) const ; - G4VisExtent GetExtent () const ; G4Polyhedron* CreatePolyhedron () const ; G4NURBS* CreateNURBS () const ; -protected: +}; -private: - -} ; +inline G4GeometryType G4UnionSolid::GetEntityType() const +{ + return G4String("G4UnionSolid"); +} #endif diff --git a/source/geometry/solids/Boolean/src/G4BooleanSolid.cc b/source/geometry/solids/Boolean/src/G4BooleanSolid.cc index 50c39785bf..46964953c2 100644 --- a/source/geometry/solids/Boolean/src/G4BooleanSolid.cc +++ b/source/geometry/solids/Boolean/src/G4BooleanSolid.cc @@ -1,3 +1,13 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4BooleanSolid.cc,v 1.3 2000/04/27 09:59:39 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-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 da29b11da1..5663b0112a 100644 --- a/source/geometry/solids/Boolean/src/G4DisplacedSolid.cc +++ b/source/geometry/solids/Boolean/src/G4DisplacedSolid.cc @@ -1,3 +1,13 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4DisplacedSolid.cc,v 1.11 2000/04/27 09:59:39 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// // Implementation for G4DisplacedSolid class for boolean // operations between other solids // @@ -18,7 +28,6 @@ #include "G4Polyhedron.hh" #include "G4NURBS.hh" #include "G4NURBSbox.hh" -#include "G4VisExtent.hh" //////////////////////////////////////////////////////////////// // @@ -87,7 +96,7 @@ const G4DisplacedSolid* G4DisplacedSolid::GetDisplacedSolidPtr() const G4DisplacedSolid* G4DisplacedSolid::GetDisplacedSolidPtr() { return this; } -G4VSolid* G4DisplacedSolid::GetConstituentMovedSolid() +G4VSolid* G4DisplacedSolid::GetConstituentMovedSolid() const { return fPtrSolid; } G4AffineTransform G4DisplacedSolid::GetTransform() const @@ -104,8 +113,7 @@ G4AffineTransform G4DisplacedSolid::GetDirectTransform() const G4RotationMatrix G4DisplacedSolid::GetFrameRotation() const { - G4RotationMatrix InvRotation= fPtrTransform->NetRotation(); - InvRotation.invert(); + G4RotationMatrix InvRotation= fDirectTransform->NetRotation(); return InvRotation; } @@ -117,7 +125,7 @@ G4ThreeVector G4DisplacedSolid::GetFrameTranslation() const /////////////////////////////////////////////////////////////// G4RotationMatrix G4DisplacedSolid::GetObjectRotation() const { - G4RotationMatrix Rotation= fDirectTransform->NetRotation(); + G4RotationMatrix Rotation= fPtrTransform->NetRotation(); return Rotation; } @@ -245,17 +253,7 @@ G4DisplacedSolid::ComputeDimensions( G4VPVParameterisation* p, void G4DisplacedSolid::DescribeYourselfTo ( G4VGraphicsScene& scene ) const { - fPtrSolid->DescribeYourselfTo(scene) ; -} - -///////////////////////////////////////////////////////////// -// -// - -G4VisExtent -G4DisplacedSolid::GetExtent () const -{ - return fPtrSolid->GetExtent() ; + scene.AddThis (*this); } //////////////////////////////////////////////////// @@ -265,7 +263,10 @@ G4DisplacedSolid::GetExtent () const G4Polyhedron* G4DisplacedSolid::CreatePolyhedron () const { - return fPtrSolid->CreatePolyhedron() ; + G4Polyhedron* polyhedron = fPtrSolid->CreatePolyhedron(); + polyhedron->Transform + (G4Transform3D(GetObjectRotation(),GetObjectTranslation())); + return polyhedron; } ///////////////////////////////////////////////////////// @@ -275,10 +276,7 @@ G4DisplacedSolid::CreatePolyhedron () const G4NURBS* G4DisplacedSolid::CreateNURBS () const { - return fPtrSolid->CreateNURBS() ; + // Take into account local transformation - see CreatePolyhedron. + // return fPtrSolid->CreateNURBS() ; + return 0; } - - - - - diff --git a/source/geometry/solids/Boolean/src/G4IntersectionSolid.cc b/source/geometry/solids/Boolean/src/G4IntersectionSolid.cc index ca93550ce3..fd12623c40 100644 --- a/source/geometry/solids/Boolean/src/G4IntersectionSolid.cc +++ b/source/geometry/solids/Boolean/src/G4IntersectionSolid.cc @@ -1,3 +1,13 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4IntersectionSolid.cc,v 1.8 2000/06/24 14:27:41 japost Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// // Implementation of methods for the class G4IntersectionSolid // // History: @@ -20,7 +30,6 @@ #include "G4Polyhedron.hh" #include "G4NURBS.hh" #include "G4NURBSbox.hh" -#include "G4VisExtent.hh" ///////////////////////////////////////////////////////////////////// // @@ -123,7 +132,6 @@ EInside G4IntersectionSolid::Inside(const G4ThreeVector& p) const ////////////////////////////////////////////////////////////// // -// G4ThreeVector G4IntersectionSolid::SurfaceNormal( const G4ThreeVector& p ) const @@ -335,13 +343,36 @@ G4IntersectionSolid::DistanceToOut( const G4ThreeVector& p, G4bool *validNorm, G4ThreeVector *n ) const { + G4bool validNormA, validNormB; + G4ThreeVector nA, nB; + 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 G4IntersectionSolid::DistanceToOut(p,v), point p is outside") ; } - G4double distA = fPtrSolidA->DistanceToOut(p,v,calcNorm,validNorm,n) ; - G4double distB = fPtrSolidB->DistanceToOut(p,v,calcNorm,validNorm,n) ; + G4double distA = fPtrSolidA->DistanceToOut(p,v,calcNorm,&validNormA,&nA) ; + G4double distB = fPtrSolidB->DistanceToOut(p,v,calcNorm,&validNormB,&nB) ; + G4double dist = G4std::min(distA,distB) ; + + if( calcNorm ){ + if (distA < distB ) { + *validNorm = validNormA; + *n = nA; + }else{ + *validNorm = validNormB; + *n = nB; + } + } + return dist ; // return G4std::min(fPtrSolidA->DistanceToOut(p,v,calcNorm,validNorm,n), // fPtrSolidB->DistanceToOut(p,v,calcNorm,validNorm,n) ) ; @@ -384,17 +415,7 @@ G4IntersectionSolid::ComputeDimensions( G4VPVParameterisation* p, void G4IntersectionSolid::DescribeYourselfTo ( G4VGraphicsScene& scene ) const { - return ; -} - -///////////////////////////////////////////////////////////// -// -// - -G4VisExtent -G4IntersectionSolid::GetExtent () const -{ - return G4VisExtent(-1.0,1.0,-1.0,1.0,-1.0,1.0) ; + scene.AddThis (*this); } //////////////////////////////////////////////////// @@ -404,7 +425,12 @@ G4IntersectionSolid::GetExtent () const G4Polyhedron* G4IntersectionSolid::CreatePolyhedron () const { - return new G4PolyhedronBox (1.0, 1.0, 1.0); + G4Polyhedron* pA = fPtrSolidA->CreatePolyhedron(); + G4Polyhedron* pB = fPtrSolidB->CreatePolyhedron(); + G4Polyhedron* resultant = new G4Polyhedron (pA->intersect(*pB)); + delete pB; + delete pA; + return resultant; } ///////////////////////////////////////////////////////// @@ -414,10 +440,7 @@ G4IntersectionSolid::CreatePolyhedron () const G4NURBS* G4IntersectionSolid::CreateNURBS () const { - return new G4NURBSbox (1.0, 1.0, 1.0); + // Take into account boolean operation - see CreatePolyhedron. + // return new G4NURBSbox (1.0, 1.0, 1.0); + return 0; } - - - - - diff --git a/source/geometry/solids/Boolean/src/G4SubtractionSolid.cc b/source/geometry/solids/Boolean/src/G4SubtractionSolid.cc index e7fc1f6e87..fc456d7577 100644 --- a/source/geometry/solids/Boolean/src/G4SubtractionSolid.cc +++ b/source/geometry/solids/Boolean/src/G4SubtractionSolid.cc @@ -1,3 +1,13 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4SubtractionSolid.cc,v 1.8 2000/06/26 16:16:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// // Implementation of methods for the class G4IntersectionSolid // // History: @@ -24,7 +34,6 @@ #include "G4Polyhedron.hh" #include "G4NURBS.hh" #include "G4NURBSbox.hh" -#include "G4VisExtent.hh" /////////////////////////////////////////////////////////////////// // @@ -268,7 +277,15 @@ G4SubtractionSolid::DistanceToOut( const G4ThreeVector& p, { if( Inside(p) == kOutside ) { - G4Exception("Invalid call in G4IntersectionSolid::DistanceToOut(p,v), point p is outside") ; + 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 G4IntersectionSolid::DistanceToOut(p,v), point p is outside") ; } G4double distout; @@ -286,7 +303,6 @@ G4SubtractionSolid::DistanceToOut( const G4ThreeVector& p, else { distout= distA ; - *validNorm = true ; } return distout; } @@ -331,17 +347,7 @@ G4SubtractionSolid::ComputeDimensions( G4VPVParameterisation* p, void G4SubtractionSolid::DescribeYourselfTo ( G4VGraphicsScene& scene ) const { - return ; -} - -///////////////////////////////////////////////////////////// -// -// - -G4VisExtent -G4SubtractionSolid::GetExtent () const -{ - return G4VisExtent(-1.0,1.0,-1.0,1.0,-1.0,1.0) ; + scene.AddThis (*this); } //////////////////////////////////////////////////// @@ -351,7 +357,12 @@ G4SubtractionSolid::GetExtent () const G4Polyhedron* G4SubtractionSolid::CreatePolyhedron () const { - return new G4PolyhedronBox (1.0, 1.0, 1.0); + G4Polyhedron* pA = fPtrSolidA->CreatePolyhedron(); + G4Polyhedron* pB = fPtrSolidB->CreatePolyhedron(); + G4Polyhedron* resultant = new G4Polyhedron (pA->subtract(*pB)); + delete pB; + delete pA; + return resultant; } ///////////////////////////////////////////////////////// @@ -361,10 +372,7 @@ G4SubtractionSolid::CreatePolyhedron () const G4NURBS* G4SubtractionSolid::CreateNURBS () const { - return new G4NURBSbox (1.0, 1.0, 1.0); + // Take into account boolean operation - see CreatePolyhedron. + // return new G4NURBSbox (1.0, 1.0, 1.0); + return 0; } - - - - - diff --git a/source/geometry/solids/Boolean/src/G4UnionSolid.cc b/source/geometry/solids/Boolean/src/G4UnionSolid.cc index 6ab48c0167..0496c227ce 100644 --- a/source/geometry/solids/Boolean/src/G4UnionSolid.cc +++ b/source/geometry/solids/Boolean/src/G4UnionSolid.cc @@ -1,3 +1,13 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4UnionSolid.cc,v 1.9 2000/06/24 14:27:42 japost Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// // Implementation of methods for the class G4IntersectionSolid // // History: @@ -22,7 +32,6 @@ #include "G4Polyhedron.hh" #include "G4NURBS.hh" #include "G4NURBSbox.hh" -#include "G4VisExtent.hh" /////////////////////////////////////////////////////////////////// // @@ -208,6 +217,14 @@ 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 G4IntersectionSolid::DistanceToOut(p,v), point p is outside") ; } else @@ -256,7 +273,9 @@ G4UnionSolid::DistanceToOut( const G4ThreeVector& p, *n = *nTmp ; } } - *validNorm = false ; + if( calcNorm ) + *validNorm = false ; + return dist ; } @@ -321,17 +340,7 @@ G4UnionSolid::ComputeDimensions( G4VPVParameterisation* p, void G4UnionSolid::DescribeYourselfTo ( G4VGraphicsScene& scene ) const { - return ; -} - -///////////////////////////////////////////////////////////// -// -// - -G4VisExtent -G4UnionSolid::GetExtent () const -{ - return G4VisExtent(-1.0,1.0,-1.0,1.0,-1.0,1.0) ; + scene.AddThis (*this); } //////////////////////////////////////////////////// @@ -341,7 +350,12 @@ G4UnionSolid::GetExtent () const G4Polyhedron* G4UnionSolid::CreatePolyhedron () const { - return new G4PolyhedronBox (1.0, 1.0, 1.0); + G4Polyhedron* pA = fPtrSolidA->CreatePolyhedron(); + G4Polyhedron* pB = fPtrSolidB->CreatePolyhedron(); + G4Polyhedron* resultant = new G4Polyhedron (pA->add(*pB)); + delete pB; + delete pA; + return resultant; } ///////////////////////////////////////////////////////// @@ -351,10 +365,7 @@ G4UnionSolid::CreatePolyhedron () const G4NURBS* G4UnionSolid::CreateNURBS () const { - return new G4NURBSbox (1.0, 1.0, 1.0); + // Take into account boolean operation - see CreatePolyhedron. + // return new G4NURBSbox (1.0, 1.0, 1.0); + return 0; } - - - - - diff --git a/source/geometry/solids/CSG/History b/source/geometry/solids/CSG/History index 99596e1b0c..7072fbf3cc 100644 --- a/source/geometry/solids/CSG/History +++ b/source/geometry/solids/CSG/History @@ -1,4 +1,4 @@ -$Id: History,v 1.11 2000/03/03 12:24:06 gcosmo Exp $ +$Id: History,v 1.19 2000/06/22 15:24:25 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,70 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +Jun 22, 00 V. Grichine geom-solids-csg-V01-01-04 +- G4Box.cc: + o added safety against call from outside in DistanceToOut(p) + o added more diagnostics before exception in DistanceToOut(p,v,...) + o cosmetics changes +- G4Torus[.hh.cc]: + o added new alternative functions SolveBiQuadratic/CubicNew. + o fix in SolveBiQuadratic() for ambiguous expression in looping index + detected by Insure++. +- Updated unit tests testG4Torus and testG4Trd. + +May 17, 00 V. Grichine geom-solids-csg-V01-01-03 + +- G4Tubs.cc: + o introduced fix in DistanceToOut(p,v,...) in computation of xi, yi for + (sphi >= -0.5*kCarTolerance). This fixes problem reports #76 and #91. + o added more diagnostics in case of invalid enum for DistanceToOut. +- Updated unit test for G4Tubs. + +May 05, 00 V. Grichine geom-solids-csg-V01-01-02 + +- G4Box.cc, G4Trd.cc: + o modified DistanceToIn(p,v) to return 0 distance in case computed + value is less than 0.5*kCarTolerance. + o Cosmetic changes. +- Updated unit tests for G4Box and G4Trd. + +Apr 11, 00 J. Allison + +- Removed implementations of GetExtent in most sub-classes of G4VSolid (a + default implementation exists in G4VSolid). +- All implementations of DescribeYourselfTo (G4VGraphicsScene& scene) const + now correctly written: scene.AddThis(*this). + +Apr 05, 00 G. Cosmo geom-solids-csg-V01-01-01 + - G4Tubs.cc: fixed bug in function Inside(p). + Removed (commented) in the code umproper addition of 2PI + to Phi-angle particle (V.Grichine) + - G4Hype[.hh.cc]: fixed several longstanding issues and bring methods + into compliance with specifications (D.Williams) + - Moved to "specific" the following classes: + G4ClippablePolygon, G4EnclosingCylinder, G4Hype, G4PolyPhiFace, + G4Polycone, G4PolyconeSide, G4Polyhedra, G4PolyhedraSide, + G4ReduciblePolygon, G4IntersectingCone, G4SolidExtentList, + G4VCSGface, G4VCSGfaceted. + - Moved testG4Hype.cc and testG4Polycone.cc from CSG/test to + specific/test + - Moved generic tests "SBT" and "Fred" one level up to solids/test. + - Organised class description comments for the Software Reference Manual + in all headers. + +Mar 23, 00 G. Cosmo geom-solids-csg-V01-01-00 + - Tagged. + +Mar 22, 00 D. Williams + - G4PolyhedraSide.cc: fixed bug in G4PolyhedraSide::Normal(...). + The method Normal(...) (used by G4VCSGfaceted::SurfaceNormal) was not + filling in the argument bestDistance. This fixes a bug observed in + G4Polyhedra::SurfaceNormal. + +Mar 14, 00 V. Grichine + - Added diagnostics in G4Cons, G4Sphere and G4Torus in function + DistanceToOut(p,v,...). + Mar 03, 00 G. Cosmo geom-solids-csg-V01-00-05 - Minor fixes to unit tests to make them up-to-date with recent development versions (already included in tag geometry-V01-00-00a). @@ -24,7 +88,6 @@ Mar 03, 00 G. Cosmo geom-solids-csg-V01-00-05 to avoid warnings on Linux. Jan 19, 00 G. Cosmo geom-solids-csg-01-00-04 - - Fixed bug in DistanceToIn(p,v). Modified files: G4Trap.cc and testG4Trap.cc. (V.Grichine) - Syncronized file versions with HEAD (essentially CVS headers changes). @@ -32,39 +95,27 @@ Jan 19, 00 G. Cosmo geom-solids-csg-01-00-04 and test/SBT. Nov 17, 99 J. Apostolakis geom-solids-csg-01-00-03 - - Tagged Nov 17, 99 V. Grichine - - Added initialisation to Eside "side" variable in DistanceToOut(p,v) - in CSG solids. - --> Problem report from D.C. Williams, BaBaR - - A check in G4Trap Makeplane added. - - + - Added initialisation to Eside "side" variable in DistanceToOut(p,v) + in CSG solids --> Problem report from D.C. Williams, BaBar + - A check in G4Trap Makeplane added. Nov 10, 99 J. Apostolakis geom-solids-csg-01-00-02-cand - - - Included David Williams' modifications to - G4IntersectingCone.cc, G4PolyconeSide.cc and G4VCSGfaceted.cc - - and to test/SBT/SBT.cc and test/SBT/polycone.geant4 - + - Included David Williams' modifications to + G4IntersectingCone.cc, G4PolyconeSide.cc and G4VCSGfaceted.cc + and to test/SBT/SBT.cc and test/SBT/polycone.geant4 Nov 10, 99 J. Apostolakis geom-solids-csg-01-00-01 + - Tagged - - Tagged +May 18, 99 David Williams + - Replaced 1/DBL_MAX with DBL_MIN (valid correction, seen in tests for STL) + in G4PolyPhiFace.cc, G4PolyconeSide.cc and G4PolyhedraSide.cc - -May 18, 99 David Wiliams - Replaced 1/DBL_MAX with DBL_MIN (valid correction, seen in tests for STL) - in G4PolyPhiFace.cc, G4PolyconeSide.cc and G4PolyhedraSide.cc - -Apr 29, 99 David Wiliams - - G4Polyhedra and G4Polycone (and G4VCSGfaceted) modified: +Apr 29, 99 David Williams + - G4Polyhedra and G4Polycone (and G4VCSGfaceted) modified: 1. Implemented correct copy constructors and assignment operators. 2. Fix some leaks for tracks that pass exactly through an edge. Some leaks still remain: particularly if a track passes through @@ -72,41 +123,33 @@ Apr 29, 99 David Wiliams 3. G4Polyhedra argument numSide changed to G4int (from G4double) Apr 13, 99 Vladimir Grichine and Simone Giani - - Minor consistency fix to 8 basic CSG solids: - Tolerance used in calculation of extent but not in one place, and not another - - this tripped up the client code. + - Minor consistency fix to 8 basic CSG solids: + Tolerance used in calculation of extent but not in one place, + and not another - this tripped up the client code. Feb 16, 99 David Williams - - Repaired bugs in G4Polycone (G4PolyconeSide.cc) as found in - test/testG4Polycone and missed in below. - - Updated definition of DistanceToIn(p) and DistanceToOut(p) to - return zero when the point p is on the surface of the solid. + - Repaired bugs in G4Polycone (G4PolyconeSide.cc) as found in + test/testG4Polycone and missed in below. + - Updated definition of DistanceToIn(p) and DistanceToOut(p) to + return zero when the point p is on the surface of the solid. Feb 12, 99 David Williams - - src/G4PolyconeSide.cc updated (revision 1.4) to fix a bug discovered by - test/testG4Polycone. + - src/G4PolyconeSide.cc updated (revision 1.4) to fix a bug discovered by + test/testG4Polycone. Feb 9, 99 David C. Williams (davidw@scipp.ucsc.edu) - - I've committed new versions of the CSG Polycone and Polyhedra in the - geant4 repository, including a new utility class called - G4ReduciblePolygon. The new versions fix several subtle bugs which my - "test3" batch geometry testing code uncovered. In addition, the new class - G4ReduciblePolygon is used to run strict tests on the validity of input - parameters. + - I've committed new versions of the CSG Polycone and Polyhedra in the + geant4 repository, including a new utility class called + G4ReduciblePolygon. The new versions fix several subtle bugs which my + "test3" batch geometry testing code uncovered. In addition, the new class + G4ReduciblePolygon is used to run strict tests on the validity of input + parameters. To fix a bug in Polyhedra, I had to back out some fancy code that - allowed it to calculate intersections at a speed that was independent of - the number of sides. The new version now runs at a speed proportional to - the number of sides, and is thus much slower for polyhedras with many - sides. I can fix this, but I thought it would be best to get the bug fixes - in as soon as possible. + allowed it to calculate intersections at a speed that was independent of + the number of sides. The new version now runs at a speed proportional to + the number of sides, and is thus much slower for polyhedras with many + sides. I can fix this, but I thought it would be best to get the bug fixes + in as soon as possible. - -Feb 10, 99 John Apostolakis - - History file created. - +Feb 10, 99 John Apostolakis + - History file created. diff --git a/source/geometry/solids/CSG/include/G4Box.hh b/source/geometry/solids/CSG/include/G4Box.hh index 77397ddd7c..bf1af40a72 100644 --- a/source/geometry/solids/CSG/include/G4Box.hh +++ b/source/geometry/solids/CSG/include/G4Box.hh @@ -5,41 +5,47 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Box.hh,v 1.3 1999/12/15 14:50:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Box.hh,v 1.4 2000/04/07 12:55:02 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// -------------------------------------------------------------------- +// GEANT 4 class header file // // -// class G4Box +// G4Box // -// A Box is a cuboid of given half lengths dx,dy,dz. The Box is -// centred on the origin with sides parallel to the x/y/z axes. +// Class description: // -// Member functions: +// A Box is a cuboid of given half lengths dx,dy,dz. The Box is +// centred on the origin with sides parallel to the x/y/z axes. // -// As inherited from G4CSGSolid + +// Member functions: // -// G4Box(const G4String& pName, G4double pX, -// G4double pY, G4double pZ) -// Construct a box with name, and half lengths pX,pY,pZ +// As inherited from G4CSGSolid + // -// G4double GetXHalfLength() const -// G4double GetYHalfLength() const -// G4double GetZHalfLength() const +// G4Box(const G4String& pName, G4double pX, +// G4double pY, G4double pZ) // -// Return the respective parameter +// - Construct a box with name, and half lengths pX,pY,pZ // -// Protected: +// G4double GetXHalfLength() const +// G4double GetYHalfLength() const +// G4double GetZHalfLength() const +// +// - Return the respective parameter +// +// Protected: // -// G4ThreeVectorList* -// CreateRotatedVertices(const G4AffineTransform& pTransform) const +// G4ThreeVectorList* +// CreateRotatedVertices(const G4AffineTransform& pTransform) const // -// Create the List of transformed vertices in the format required -// for G4VSolid:: ClipCrossSection and ClipBetweenSections. +// - Create the List of transformed vertices in the format required +// for G4VSolid:: ClipCrossSection and ClipBetweenSections. // -// Member Data: (private) -// -// fDx,fDy,fDz - The box's half-widths +// Member Data: (private) // +// fDx,fDy,fDz - The box's half-widths + // History: // 30.06.95 P.Kent Converted from source code developed end 94 // 27.03.96 J.Allison Added virtual functions DescribeYourselfTo and @@ -48,7 +54,7 @@ // and SendPolyhedronTo to CreatePolyhedron. // 27.03.98 J.Apostolakis Inherit from G4CSGSolid (not G4VSolid). // 18.11.99 J.Apostolakis, V.Grichine: kUndefined was added to ESide - +// -------------------------------------------------------------------- #ifndef G4BOX_HH #define G4BOX_HH diff --git a/source/geometry/solids/CSG/include/G4CSGSolid.hh b/source/geometry/solids/CSG/include/G4CSGSolid.hh index bfe47edcba..e96025178e 100644 --- a/source/geometry/solids/CSG/include/G4CSGSolid.hh +++ b/source/geometry/solids/CSG/include/G4CSGSolid.hh @@ -5,28 +5,35 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4CSGSolid.hh,v 1.2 1999/12/15 14:50:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4CSGSolid.hh,v 1.3 2000/04/07 12:55:02 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// class G4CSGSolid +// -------------------------------------------------------------------- +// GEANT 4 class header file // -// An abstract class for Constructed Solids. Used primarily to -// simplify inheritance tree. +// G4CSGSolid // -// Member functions: +// Class description: // -// As inherited from G4VSolid +// An abstract class for Constructed Solids. +// Used primarily to simplify inheritance tree. // +// Member functions: +// +// As inherited from G4VSolid + // History: // 27.03.98 J.Apostolakis Created first version. +// -------------------------------------------------------------------- #ifndef G4CSGSOLID_HH #define G4CSGSOLID_HH #include "G4VSolid.hh" -class G4CSGSolid : public G4VSolid { +class G4CSGSolid : public G4VSolid +{ public: G4CSGSolid(const G4String& pName); diff --git a/source/geometry/solids/CSG/include/G4Cons.hh b/source/geometry/solids/CSG/include/G4Cons.hh index 38cd19dc63..ff7c934573 100644 --- a/source/geometry/solids/CSG/include/G4Cons.hh +++ b/source/geometry/solids/CSG/include/G4Cons.hh @@ -5,17 +5,25 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Cons.hh,v 1.2 1999/12/15 14:50:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Cons.hh,v 1.4 2000/04/11 16:04:27 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -// class G4Cons // -// A G4Cons is, in the general case, a Phi segment of a cone, with half-length -// fDz, inner and outer radii specified at -fDz and +fDz. The Phi segment is -// described by a starting fSPhi angle, and the +fDPhi delta angle for the shape. -// If the delta angle is >=2*M_PI, the shape is treated as continuous in Phi +// -------------------------------------------------------------------- +// GEANT 4 class header file // -// Member Data: +// G4Cons +// +// Class description: +// +// A G4Cons is, in the general case, a Phi segment of a cone, with +// half-length fDz, inner and outer radii specified at -fDz and +fDz. +// The Phi segment is described by a starting fSPhi angle, and the +// +fDPhi delta angle for the shape. +// If the delta angle is >=2*M_PI, the shape is treated as continuous +// in Phi +// +// Member Data: // // fRmin1 inside radius at -fDz // fRmin2 inside radius at +fDz @@ -26,14 +34,15 @@ // fSPhi starting angle of the segment in radians // fDPhi delta angle of the segment in radians // -// Note: +// Note: // Internally fSPhi & fDPhi are adjusted so that fDPhi<=2PI, // and fDPhi+fSPhi<=2PI. This enables simpler comparisons to be // made with (say) Phi of a point. -// + // History: // 19.3.94 P.Kent Old C++ code converted to tolerant geometry // 13.9.96 V.Grichine Final modifications to commit +// -------------------------------------------------------------------- #ifndef G4Cons_HH #define G4Cons_HH @@ -103,8 +112,6 @@ public: void DescribeYourselfTo(G4VGraphicsScene& scene) const; - G4VisExtent GetExtent() const; - G4Polyhedron* CreatePolyhedron() const; G4NURBS* CreateNURBS() const; diff --git a/source/geometry/solids/CSG/include/G4Hype.hh b/source/geometry/solids/CSG/include/G4Hype.hh deleted file mode 100644 index a5bf25aceb..0000000000 --- a/source/geometry/solids/CSG/include/G4Hype.hh +++ /dev/null @@ -1,214 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4Hype.hh,v 1.3 1999/12/15 14:50:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// -// -// class G4Hype: this class implements in G4 the volume equivalent -// to the HYPE volume in Geant 3, i.e. a tube with -// hyperbolic profile. -// -// Authors: -// Ernesto Lamanna (Ernesto.Lamanna@roma1.infn.it) & -// Francesco Safai Tehrani (Francesco.SafaiTehrani@roma1.infn.it) -// Rome, INFN & University of Rome "La Sapienza", 9 June 1998. -// -// $ Original: G4Hype.hh,v 1.0 1998/06/09 16:57:50 safai Exp $ -// -// For further informations, please read G4Hype.history and G4Hype.doc. -// -// An hyperbolic volume with curved sides parallel to -// the z-axis. The Hype has a specified half-length along -// the z axis, about which it is centred, and a given -// minimum and maximum radius. A minimum radius of 0 -// signifies a filled Hype (with hyperbolical inner surface). -// To have a filled Hype the user must specify -// inner radius = 0 AND inner stereo angle = 0. -// -// The inner and outer hyperbolical surfaces can have different -// stereo angles. -// A stereo angle of 0 gives a cylindrical surface. -// -// Member functions: -// -// As inherited from G4VSolid, -// -// G4Hype(const G4String &pName -// const G4double innerRadius -// const G4double outerRadius -// const G4double innerStereo -// const G4double outerStereo -// const G4double halfLenZ ) -// -// Construct an hype with the given name and dimensions. -// The provided angles are in radians. -// -// -// Protected: -// -// G4ThreeVectorList* -// CreateRotatedVertices(const G4AffineTransform& pTransform) const -// -// Create the List of transformed vertices in the format required -// for G4VSolid:: ClipCrossSection and ClipBetweenSections. -// -// History: -// 1998/06/09 F.Safai, first version -// 18.11.99 , V.Grichine, kUndefined was added in ESide - -#ifndef G4HYPE_HH -#define G4HYPE_HH - -#include "G4CSGSolid.hh" -#include "G4ThreeVector.hh" - -class G4Hype : public G4CSGSolid { -public: - - G4Hype(const G4String &pName, - const G4double newInnerRadius, - const G4double newOuterRadius, - const G4double newInnerStereo, - const G4double newOuterStereo, - const G4double newHalfLenZ); - - virtual ~G4Hype(); - - void ComputeDimensions(G4VPVParameterisation* p, - const G4int n, - const G4VPhysicalVolume* pRep); - - G4bool CalculateExtent(const EAxis pAxis, - const G4VoxelLimits& pVoxelLimit, - const G4AffineTransform& pTransform, - G4double& pmin, G4double& pmax) const; - - G4double GetInnerRadius () const { return innerRadius; } - G4double GetOuterRadius () const { return outerRadius; } - G4double GetZHalfLength () const { return halfLenZ; } - G4double GetInnerStereo () const { return innerStereo; } - G4double GetOuterStereo () const { return outerStereo; } - - void SetInnerRadius (G4double newIRad) - { - innerRadius= newIRad; - innerRadius2= newIRad*newIRad; - endInnerRadius2=HypeInnerRadius2(halfLenZ); - endInnerRadius=sqrt(endInnerRadius2); - } - - void SetOuterRadius (G4double newORad) - { - outerRadius= newORad; - outerRadius2=newORad*newORad; - endOuterRadius2=HypeOuterRadius2(halfLenZ); - endOuterRadius=sqrt(endOuterRadius2); - } - - void SetZHalfLength (G4double newHLZ) { halfLenZ = newHLZ ; } - - void SetInnerStereo (G4double newISte) - { - innerStereo= newISte; - tanInnerStereo2=tan(innerStereo)*tan(innerStereo); - endInnerRadius2=HypeInnerRadius2(halfLenZ); - endInnerRadius=sqrt(endInnerRadius2); - } - - void SetOuterStereo (G4double newOSte) - { - outerStereo= newOSte; - tanOuterStereo2=tan(outerStereo)*tan(outerStereo); - endOuterRadius2=HypeOuterRadius2(halfLenZ); - endOuterRadius=sqrt(endOuterRadius2); - } - - EInside Inside(const G4ThreeVector& p) 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=G4bool(false), - G4bool *validNorm=0,G4ThreeVector *n=0) const; - G4double DistanceToOut(const G4ThreeVector& p) const; - - virtual G4GeometryType GetEntityType() const { return G4String("G4Hype"); } - - void DescribeYourselfTo (G4VGraphicsScene& scene) const; - G4VisExtent GetExtent () const; - G4Polyhedron* CreatePolyhedron () const; - G4NURBS* CreateNURBS () const; - -protected: - - G4ThreeVectorList* - CreateRotatedVertices(const G4AffineTransform& pTransform) const; - - // values of hype radius at a given Z - double HypeInnerRadius2(double zVal) const { return (tanInnerStereo2*zVal*zVal+innerRadius2); } - double HypeOuterRadius2(double zVal) const { return (tanOuterStereo2*zVal*zVal+outerRadius2); } - - G4double innerRadius; // variable names are quite self explanative - G4double outerRadius; - G4double halfLenZ; - G4double innerStereo; - G4double outerStereo; - - // precalculated parameters, squared quantities - double tanInnerStereo2; // squared tan of Inner Stereo angle - double tanOuterStereo2; // squared tan of Outer Stereo angle - double innerRadius2; // squared Inner Radius - double outerRadius2; // squared Outer Radius - double endInnerRadius2; // squared endcap Inner Radius - double endOuterRadius2; // squared endcap Outer Radius - double endInnerRadius; // endcap Inner Radius - double endOuterRadius; // endcap Outer Radius - - // Used by distanceToOut - enum ESide {kUndefined,outerFace,innerFace,leftCap, rightCap}; -}; - -#endif - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/source/geometry/solids/CSG/include/G4Para.hh b/source/geometry/solids/CSG/include/G4Para.hh index fabeaeea44..ad0c316ee0 100644 --- a/source/geometry/solids/CSG/include/G4Para.hh +++ b/source/geometry/solids/CSG/include/G4Para.hh @@ -5,17 +5,24 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Para.hh,v 1.3 1999/12/15 14:50:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Para.hh,v 1.5 2000/04/11 16:04:27 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -// class G4Para // -// A G4Parallepiped, essentially a box with half lengths dx,dy,dz `skewed' -// so that there are angles theta & phi of the polar line joining the faces at -// +-dz in z, and alpha formed by the y axis and the plane joinng the -// centre of the faces G4Parallel to the z-x plane at -dy and +dy. +// -------------------------------------------------------------------- +// GEANT 4 class header file // -// A G4Para is defined by: +// G4Para +// +// Class description: +// +// A G4Parallepiped, essentially a box with half lengths dx,dy,dz +// `skewed' so that there are angles theta & phi of the polar line +// joining the faces at +-dz in z, and alpha formed by the y axis +// and the plane joinng the centre of the faces G4Parallel to the +// z-x plane at -dy and +dy. +// +// A G4Para is defined by: // dx,dy,dz Half-length in x,y,z // alpha Angle formed by the y axis and by the plane joining // the centre of the faces G4Parallel to the z-x plane @@ -24,10 +31,10 @@ // faces at -dz and +dz in z // phi Azimuthal angle of the line joining the centres of the // faces at -dz and +dz in z -// Member data: +// Member data: // -// Note that the angles parameters are not stored - precomputed trig is -// stored instead. +// Note that the angles parameters are not stored - precomputed trig is +// stored instead. // // fDx Half-length in x // fDy Half-length in y @@ -36,11 +43,12 @@ // fTalpha Tan of alpha // fTthetaCphi Tan theta * Cos phi // fTthetaSphi Tan theta * Sin phi -// + // History: // 21.3.94 P.Kent Old C++ code converted to tolerant geometry // 31.10.96 V.Grichine Modifications according G4Box/Tubs before to commit // 18.11.99 V.Grichine , kUndefined was added to ESide +// -------------------------------------------------------------------- #ifndef G4Para_HH #define G4Para_HH @@ -151,8 +159,6 @@ public: void DescribeYourselfTo (G4VGraphicsScene& scene) const; - G4VisExtent GetExtent () const; - G4Polyhedron* CreatePolyhedron () const; G4NURBS* CreateNURBS () const; diff --git a/source/geometry/solids/CSG/include/G4Sphere.hh b/source/geometry/solids/CSG/include/G4Sphere.hh index 7551fe8010..9bca7b52bb 100644 --- a/source/geometry/solids/CSG/include/G4Sphere.hh +++ b/source/geometry/solids/CSG/include/G4Sphere.hh @@ -5,22 +5,28 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Sphere.hh,v 1.2 1999/12/15 14:50:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Sphere.hh,v 1.4 2000/04/11 16:04:27 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -// class G4Sphere // -// A G4Sphere is, in the general case, section of a spherical shell, between -// specified phii and theta angles +// -------------------------------------------------------------------- +// GEANT 4 class header file // -// The phi and theta segments are described by a starting angle, -// and the +ve delta angle for the shape. -// If the delta angle is >=2*M_PI, or >=M_PI the shape is treated as -// continuous in phi or theta respectively. +// G4Sphere // -// Theta must lie between 0-PI (incl). +// Class description: // -// Member Data: +// A G4Sphere is, in the general case, section of a spherical shell, +// between specified phii and theta angles +// +// The phi and theta segments are described by a starting angle, +// and the +ve delta angle for the shape. +// If the delta angle is >=2*M_PI, or >=M_PI the shape is treated as +// continuous in phi or theta respectively. +// +// Theta must lie between 0-PI (incl). +// +// Member Data: // // fRmin inner radius // fRmax outer radius @@ -32,17 +38,15 @@ // fDTheta delta angle of the segment in radians // // -// -// Note: +// Note: // Internally fSPhi & fDPhi are adjusted so that fDPhi<=2PI, // and fDPhi+fSPhi<=2PI. This enables simpler comparisons to be // made with (say) Phi of a point. -// -// -// + // History: // 28.3.94 P.Kent Old C++ code converted to tolerant geometry // 17.9.96 V.Grichine Final modifications to commit +// -------------------------------------------------------------------- #ifndef G4Sphere_HH #define G4Sphere_HH @@ -108,8 +112,6 @@ public: void DescribeYourselfTo(G4VGraphicsScene& scene) const; - G4VisExtent GetExtent() const; - G4Polyhedron* CreatePolyhedron() const; G4NURBS* CreateNURBS() const; diff --git a/source/geometry/solids/CSG/include/G4Torus.hh b/source/geometry/solids/CSG/include/G4Torus.hh index 1fef296138..06ec819ce2 100644 --- a/source/geometry/solids/CSG/include/G4Torus.hh +++ b/source/geometry/solids/CSG/include/G4Torus.hh @@ -5,46 +5,49 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Torus.hh,v 1.2 1999/12/15 14:50:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Torus.hh,v 1.5 2000/05/26 13:20:40 grichine Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// class G4Torus +// -------------------------------------------------------------------- +// GEANT 4 class header file // -// A torus or torus segment with curved sides parallel to -// the z-axis. The torus has a specified swept radius -// about which it is centred, and a given -// minimum and maximum radius. A minimum radius of 0 -// signifies a filled torus . The torus segment is -// specified by starting and delta -// angles for phi, with 0 being the +x axis, PI/2 -// the +y axis. A delta angle of 2PI signifies a -// complete, unsegmented torus/cylindr. +// G4Torus // -// Member functions: +// Class description: // -// As inherited from G4CSGSolid+ +// A torus or torus segment with curved sides parallel to the z-axis. +// The torus has a specified swept radius about which it is centered, +// and a given minimum and maximum radius. A minimum radius of 0 +// signifies a filled torus. +// The torus segment is specified by starting and delta angles for phi, +// with 0 being the +x axis, PI/2 the +y axis. A delta angle of 2PI +// signifies a complete, unsegmented torus/cylindr. // -// G4Torus(const G4String &pName -// G4double pRmin -// G4double pRmax -// G4double pRtor -// G4double pSPhi -// G4double pDPhi ) +// Member functions: // -// Construct a torus with the given name and dimensions. -// The angles are provided is radians. pRtor >= pRmax +// As inherited from G4CSGSolid+ +// +// G4Torus(const G4String &pName +// G4double pRmin +// G4double pRmax +// G4double pRtor +// G4double pSPhi +// G4double pDPhi ) +// +// - Construct a torus with the given name and dimensions. +// The angles are provided is radians. pRtor >= pRmax // // -// Protected: +// Protected: // -// G4ThreeVectorList* -// CreateRotatedVertices(const G4AffineTransform& pTransform) const +// G4ThreeVectorList* +// CreateRotatedVertices(const G4AffineTransform& pTransform) const // -// Create the List of transformed vertices in the format required -// for G4VSolid:: ClipCrossSection and ClipBetweenSections. +// - Create the List of transformed vertices in the format required +// for G4VSolid:: ClipCrossSection and ClipBetweenSections. // -// Member Data: +// Member Data: // // fRmin Inside radius // fRmax Outside radius @@ -56,17 +59,19 @@ // // fDPhi Delta angle of the segment in radians // -// You could find very often in G4Torus:: functions the values like pt or -// it . These are the distances from p or i G4ThreeVector points in the -// plane (Z axis points p or i) to fRtor point in XY plane. This value is -// similar to rho for G4Tubs and is used for definiton of the point -// relative to fRmin and fRmax, i.e. for solution of inside/outside -// problems -// -// +// You could find very often in G4Torus:: functions the values like pt or +// it . These are the distances from p or i G4ThreeVector points in the +// plane (Z axis points p or i) to fRtor point in XY plane. This value is +// similar to rho for G4Tubs and is used for definiton of the point +// relative to fRmin and fRmax, i.e. for solution of inside/outside +// problems + // History: // 30.10.96 V.Grichine First version of G4Torus // 21.04.98 J.Apostolakis Added SetAllParameters function +// 26.05.00 V.Grichine, new SolveBiQuadratic/Cubic developed by O.Cremonesi were +// added +// -------------------------------------------------------------------- #ifndef G4Torus_HH #define G4Torus_HH @@ -122,14 +127,17 @@ G4Torus(const G4String &pName, // Visualisation functions void DescribeYourselfTo (G4VGraphicsScene& scene) const; - G4VisExtent GetExtent () const; G4Polyhedron* CreatePolyhedron () const; G4NURBS* CreateNURBS () const; protected: - G4int SolveBiQuadratic(double c[], double s[] ) const ; - G4int SolveCubic(double c[], double s[] ) const ; + G4int SolveBiQuadratic(G4double c[], G4double s[] ) const ; + G4int SolveCubic(G4double c[], G4double s[] ) const ; + + G4int SolveBiQuadraticNew(G4double c[], G4double s[] ) const ; + G4int SolveCubicNew(G4double c[], G4double s[], G4double& cd ) const ; + G4int SolveQuadratic(double c[], double s[] ) const ; G4ThreeVectorList* diff --git a/source/geometry/solids/CSG/include/G4Trap.hh b/source/geometry/solids/CSG/include/G4Trap.hh index fd8a50b209..383ed3a56b 100644 --- a/source/geometry/solids/CSG/include/G4Trap.hh +++ b/source/geometry/solids/CSG/include/G4Trap.hh @@ -5,19 +5,25 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Trap.hh,v 1.2 1999/12/15 14:50:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Trap.hh,v 1.4 2000/04/11 16:04:27 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -// class G4Trap +// +// -------------------------------------------------------------------- +// GEANT 4 class header file // -// A G4Trap is a general trapezoid: The faces perpendicular to the z planes -// are tapezia, and their centres are not necessarily on a line parallel to -// the z axis. +// G4Trap // -// Note that of the 11 parameters desribed below, only 9 are really -// independent - a check for planarity is made in the calculation of the -// equation for each plane. If the planes are not parallel, a call to -// G4Exception is made. +// Class description: +// +// A G4Trap is a general trapezoid: The faces perpendicular to the +// z planes are trapezia, and their centres are not necessarily on +// a line parallel to the z axis. +// +// Note that of the 11 parameters described below, only 9 are really +// independent - a check for planarity is made in the calculation of the +// equation for each plane. If the planes are not parallel, a call to +// G4Exception is made. // // pDz Half-length along the z-axis // pTheta Polar angle of the line joining the centres of the faces @@ -30,110 +36,117 @@ // pAlp1 Angle with respect to the y axis from the centre of the side // at y=-pDy1 to the centre at y=+pDy1 of the face at -pDz // -// pDy2 Half-length along y of the face at +pDz +// pDy2 Half-length along y of the face at +pDz // pDx3 Half-length along x of the side at y=-pDy2 of the face at +pDz // pDx4 Half-length along x of the side at y=+pDy2 of the face at +pDz // pAlp2 Angle with respect to the y axis from the centre of the side // at y=-pDy2 to the centre at y=+pDy2 of the face at +pDz // // -// Member Data: +// Member Data: // // fDz Half-length along the z axis // fTthetaCphi = tan(pTheta)*cos(pPhi) These combinations are suitable for // fTthetaSphi = tan(pTheta)*sin(pPhi) creation of the trapezoid corners // -// fDy1 Half-length along y of the face at -fDz +// fDy1 Half-length along y of the face at -fDz // fDx1 Half-length along x of the side at y=-fDy1 of the face at -fDz // fDx2 Half-length along x of the side at y=+fDy1 of the face at -fDz // fTalpha1 Tan of Angle with respect to the y axis from the centre of -// the side at y=-fDy1 to the centre at y=+fDy1 of the face at -fDz +// the side at y=-fDy1 to the centre at y=+fDy1 of the face +// at -fDz // -// fDy2 Half-length along y of the face at +fDz +// fDy2 Half-length along y of the face at +fDz // fDx3 Half-length along x of the side at y=-fDy2 of the face at +fDz // fDx4 Half-length along x of the side at y=+fDy2 of the face at +fDz // fTalpha2 Tan of Angle with respect to the y axis from the centre of // the side at y=-fDy1 to the centre at y=+fDy1 of the face at -fDz // // TrapSidePlane fPlanes[4] Plane equations of the faces not at +/-fDz -// *** order is important !!! : +// *** order is important !!! // // -// Member functions: +// Member functions: // -// As inherited from G4CSGSolid + Constructors +// As inherited from G4CSGSolid + Constructors // -// G4Trap( const G4String& pName, -// G4double pDz, -// G4double pTheta, G4double pPhi, -// G4double pDy1, G4double pDx1, G4double pDx2, -// G4double pAlp1, -// G4double pDy2, G4double pDx3, G4double pDx4, -// G4double pAlp2) -// which prepare plane equations and corner coordinates from parameters -// & -// G4Trap( const G4string& pName, -// const G4ThreeVector pt[8]) -// which prepare plane equations and parameters from corner coordinates -// & // G4Trap( const G4String& pName, -// G4double pZ, -// G4double pY, -// G4double pX, G4double pLTX); -// for Right Angular Wedge from STEP +// G4double pDz, +// G4double pTheta, G4double pPhi, +// G4double pDy1, G4double pDx1, G4double pDx2, +// G4double pAlp1, +// G4double pDy2, G4double pDx3, G4double pDx4, +// G4double pAlp2) // -// & Constructor for G4Trd +// - which prepare plane equations and corner coordinates from +// parameters +// +// G4Trap( const G4string& pName, +// const G4ThreeVector pt[8]) +// +// - which prepare plane equations and parameters from corner +// coordinates +// +// G4Trap( const G4String& pName, +// G4double pZ, +// G4double pY, +// G4double pX, G4double pLTX); +// +// - for Right Angular Wedge from STEP +// +// & Constructor for G4Trd // // G4Trap( const G4String& pName, -// G4double pDx1, G4double pDx2, -// G4double pDy1, G4double pDy2, -// G4double pDz); +// G4double pDx1, G4double pDx2, +// G4double pDy1, G4double pDy2, +// G4double pDz); // -// & Constructor for G4Para +// & Constructor for G4Para // // G4Trap(const G4String& pName, -// G4double pDx, G4double pDy, G4double pDz, -// G4double pAlpha, G4double pTheta, G4double pPhi); +// G4double pDx, G4double pDy, G4double pDz, +// G4double pAlpha, G4double pTheta, G4double pPhi); // -// + Access functions that return the respective parameter +// + Access functions that return the respective parameter // -// G4double GetZHalfLength() const -// G4ThreeVector GetSymAxis() const Returns coordinates of unit vector along straight -// line joining centers of -/+fDz planes -// G4double GetYHalfLength1() const -// G4double GetXHalfLength1() const -// G4double GetXHalfLength2() const -// G4double GetTanAlpha1() const +// G4double GetZHalfLength() const +// G4ThreeVector GetSymAxis() const +// - Returns coordinates of unit vector along straight +// line joining centers of -/+fDz planes +// G4double GetYHalfLength1() const +// G4double GetXHalfLength1() const +// G4double GetXHalfLength2() const +// G4double GetTanAlpha1() const // -// G4double GetYHalfLength2() const -// G4double GetXHalfLength3() const -// G4double GetXHalfLength4() const -// G4double GetTanAlpha2() const +// G4double GetYHalfLength2() const +// G4double GetXHalfLength3() const +// G4double GetXHalfLength4() const +// G4double GetTanAlpha2() const // -// TrapSidePlane GetSidePlane(G4int n ) const ; n = 0,1,2,3 +// TrapSidePlane GetSidePlane(G4int n ) const ; n = 0,1,2,3 // -// Protected: -// G4bool MakePlane( G4ThreeVector& p1, -// G4ThreeVector& p2, -// G4ThreeVector& p3, -// G4ThreeVector& p4, -// TrapSidePlane& plane ) +// Protected: +// +// G4bool MakePlane( G4ThreeVector& p1, +// G4ThreeVector& p2, +// G4ThreeVector& p3, +// G4ThreeVector& p4, +// TrapSidePlane& plane ) // // -// G4ThreeVectorList* -// CreateRotatedVertices(const G4Transform& pTransform) const +// G4ThreeVectorList* +// CreateRotatedVertices(const G4Transform& pTransform) const // -// Create the List of transformed vertices in the format required -// for G4CSGSolid:: ClipCrossSection and ClipBetweenSections. -// -// +// - Create the List of transformed vertices in the format required +// for G4CSGSolid:: ClipCrossSection and ClipBetweenSections. + // History: // // 23.3.94 P.Kent: Old C++ code converted to tolerant geometry // 9.9.96 V.Grichine: Final modifications before to commit // 1.11.96 V.Grichine Costructors for Right Angular Wedge from STEP & G4Trd/Para // 8.12.97 J.Allison Added "nominal" contructor and method SetAllParameters. - +// -------------------------------------------------------------------- #ifndef G4Trap_HH #define G4Trap_HH @@ -296,8 +309,6 @@ public: void DescribeYourselfTo (G4VGraphicsScene& scene) const; - G4VisExtent GetExtent () const; - G4Polyhedron* CreatePolyhedron () const; G4NURBS* CreateNURBS () const; diff --git a/source/geometry/solids/CSG/include/G4Trd.hh b/source/geometry/solids/CSG/include/G4Trd.hh index e2e4456189..1a45b16586 100644 --- a/source/geometry/solids/CSG/include/G4Trd.hh +++ b/source/geometry/solids/CSG/include/G4Trd.hh @@ -5,63 +5,71 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Trd.hh,v 1.3 1999/12/15 14:50:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Trd.hh,v 1.5 2000/04/11 16:04:27 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // - -// class G4Trd -// -// A Trd is a trapezoid with the x and y dimensions varying along z -// functions: -// -// As inherited from G4CSGSolid + -// -// G4Trd( const G4String& pName, -// G4double pdx1, G4double pdx2, -// G4double pdy1, G4double pdy2, -// G4double pdz ) -// Construct a trapezoid with name, and half lengths dpx1,dpx2,dpy1, -// dpy2,dpz -// -// G4double GetXHalfLength1() const -// G4double GetXHalfLength2() const -// G4double GetYHalfLength1() const -// G4double GetYHalfLength2() const -// G4double GetZHalfLength() const -// -// Return the respective parameter -// -// void SetXHalfLength1(G4double) -// void SetXHalfLength2(G4double) -// void SetYHalfLength1(G4double) -// void SetYHalfLength2(G4double) -// void SetZHalfLength(G4double) -// -// Set the respective parameter -// -// Protected: // -// G4ThreeVectorList* -// CreateRotatedVertices(const G4AffineTransform& pTransform) const -// -// Create the List of transformed vertices in the format required -// for G4CSGSolid:: ClipCrossSection and ClipBetweenSections. +// -------------------------------------------------------------------- +// GEANT 4 class header file +// +// +// G4Trd +// +// Class description: +// +// A Trd is a trapezoid with the x and y dimensions varying along z +// functions: +// +// As inherited from G4CSGSolid + +// +// G4Trd( const G4String& pName, +// G4double pdx1, G4double pdx2, +// G4double pdy1, G4double pdy2, +// G4double pdz ) +// +// - Construct a trapezoid with name, and half lengths +// dpx1,dpx2,dpy1,dpy2,dpz +// +// G4double GetXHalfLength1() const +// G4double GetXHalfLength2() const +// G4double GetYHalfLength1() const +// G4double GetYHalfLength2() const +// G4double GetZHalfLength() const +// +// - Return the respective parameter +// +// void SetXHalfLength1(G4double) +// void SetXHalfLength2(G4double) +// void SetYHalfLength1(G4double) +// void SetYHalfLength2(G4double) +// void SetZHalfLength(G4double) +// +// - Set the respective parameter +// +// Protected: +// +// G4ThreeVectorList* +// CreateRotatedVertices(const G4AffineTransform& pTransform) const +// +// - Create the List of transformed vertices in the format required +// for G4CSGSolid:: ClipCrossSection and ClipBetweenSections. +// +// +// Member Data: // - -// Member Data: - // fDx1 Half-length along x at the surface positioned at -dz // fDx2 Half-length along x at the surface positioned at +dz // fDy1 Half-length along y at the surface positioned at -dz // fDy2 Half-length along y at the surface positioned at +dz // fDz Half-length along z axis -// + // History: // 19.11.99 V.Grichine, kUndefined was added to Eside enum // 21.04.97 J. Apostolakis Added Set Methods. // 19.08.96 P. Kent, V. Grichine ->Fs in accordance with G4Box // 17.02.95 P.Kent Exiting normal return // 12.01.95 P.Kent Old prototype code converted to thick geometry +// -------------------------------------------------------------------- #ifndef G4TRD_HH #define G4TRD_HH @@ -160,7 +168,6 @@ class G4Trd : public G4CSGSolid // Visualisation functions void DescribeYourselfTo (G4VGraphicsScene& scene) const; - G4VisExtent GetExtent () const; G4Polyhedron* CreatePolyhedron () const; G4NURBS* CreateNURBS () const; diff --git a/source/geometry/solids/CSG/include/G4Tubs.hh b/source/geometry/solids/CSG/include/G4Tubs.hh index b3312b13ac..5a7d50772e 100644 --- a/source/geometry/solids/CSG/include/G4Tubs.hh +++ b/source/geometry/solids/CSG/include/G4Tubs.hh @@ -5,46 +5,52 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Tubs.hh,v 1.2 1999/12/15 14:50:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Tubs.hh,v 1.4 2000/04/11 16:04:27 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// class G4Tubs +// -------------------------------------------------------------------- +// GEANT 4 class header file // -// A tube or tube segment with curved sides parallel to -// the z-axis. The tube has a specified half-length along -// the z axis, about which it is centred, and a given -// minimum and maximum radius. A minimum radius of 0 -// signifies a filled tube /cylinder. The tube segment is -// specified by starting and delta -// angles for phi, with 0 being the +x axis, PI/2 -// the +y axis. A delta angle of 2PI signifies a -// complete, unsegmented tube/cylinder. +// +// G4Tubs // -// Member functions: +// Class description: // -// As inherited from G4VSolid+ +// A tube or tube segment with curved sides parallel to +// the z-axis. The tube has a specified half-length along +// the z axis, about which it is centred, and a given +// minimum and maximum radius. A minimum radius of 0 +// signifies a filled tube /cylinder. The tube segment is +// specified by starting and delta angles for phi, with 0 +// being the +x axis, PI/2 the +y axis. +// A delta angle of 2PI signifies a complete, unsegmented +// tube/cylinder. // -// G4Tubs(const G4String &pName -// G4double pRMin -// G4double pRMax -// G4double pDz -// G4double pSPhi -// G4double pDPhi ) +// Member functions: // -// Construct a tubs with the given name and dimensions. -// The angles are provided is radians. +// As inherited from G4VSolid+ +// +// G4Tubs(const G4String &pName +// G4double pRMin +// G4double pRMax +// G4double pDz +// G4double pSPhi +// G4double pDPhi ) +// +// - Construct a tubs with the given name and dimensions. +// The angles are provided is radians. // // -// Protected: +// Protected: // -// G4ThreeVectorList* -// CreateRotatedVertices(const G4AffineTransform& pTransform) const +// G4ThreeVectorList* +// CreateRotatedVertices(const G4AffineTransform& pTransform) const // -// Create the List of transformed vertices in the format required -// for G4VSolid:: ClipCrossSection and ClipBetweenSections. +// - Create the List of transformed vertices in the format required +// for G4VSolid:: ClipCrossSection and ClipBetweenSections. // -// Member Data: +// Member Data: // // fRMin Inner radius // fRMax Outer radius @@ -55,14 +61,14 @@ // fSPhi>-2PI // // fDPhi Delta angle of the segment in radians -// -// + // History: // 10.8.95 P.Kent General cleanup, use G4VSolid extent helper functions // to CaluclateExtent // 23.1.94 P.Kent Converted to `tolerant' geometry // 19.07.96 J.Allison G4GraphicsScene - see G4Box. // 22.07.96 J.Allison Changed SendPolyhedronTo to CreatePolyhedron. +// -------------------------------------------------------------------- #ifndef G4TUBS_HH #define G4TUBS_HH @@ -117,7 +123,6 @@ public: // Visualisation functions void DescribeYourselfTo (G4VGraphicsScene& scene) const; - G4VisExtent GetExtent () const; G4Polyhedron* CreatePolyhedron () const; G4NURBS* CreateNURBS () const; diff --git a/source/geometry/solids/CSG/include/G4VCSGface.hh b/source/geometry/solids/CSG/include/G4VCSGface.hh deleted file mode 100644 index a045066da5..0000000000 --- a/source/geometry/solids/CSG/include/G4VCSGface.hh +++ /dev/null @@ -1,271 +0,0 @@ -// -// G4VCSGface.hh -// -#ifndef G4VCSGface_hh -#define G4VCSGface_hh -// -// Definition of the virtual base class G4VCSGface, one side (or face) -// of a CSG solid. It should be possible to build a CSG entirely out of connecting -// CSG faces. -// -// Each face has an inside and outside surface, the former represents the inside -// of the volume, the latter, the outside. -// -// Virtual members: -// -// ------------------------------------------------------------------- -// Intersect( const G4ThreeVector &p, const G4ThreeVector &v, const G4bool outGoing, const G4double surfTolerance, -// const G4bool outgoing, const G4double surfTolerance, -// G4double &distance, G4double &distFromSurface, -// G4ThreeVector &normal, G4bool &allBehind ); -// -// p - (in) position -// v - (in) direction (assumed to be a unit vector) -// outgoing - (in) true, to consider only inside surfaces -// false, to consider only outside surfaces -// distance - (out) distance to intersection -// distFromSurface - (out) distance from surface (along surface normal), -// < 0 if the point is in front of the surface -// normal - (out) normal of surface at intersection point -// allBehind - (out) true, if entire surface is behind normal -// -// return value = true if there is an intersection, -// false if there is no intersection (all output arguments undefined) -// -// Determine the distance along a line to the face. -// -// ------------------------------------------------------------------- -// Distance( const G4ThreeVector &p, const G4bool outgoing ); -// -// p - (in) position -// outgoing - (in) true, to consider only inside surfaces -// false, to consider only outside surfaces -// -// return value = distance to closest surface satisifying requirements, -// or kInfinity if no such surface exists -// -// Determine the distance of a point from either the inside or outside -// surfaces of the face. -// -// ------------------------------------------------------------------- -// Inside( const G4ThreeVector &p, const G4double tolerance, -// G4double *bestDistance ); -// -// p - (in) position -// tolerance - (in) tolerance defining the bounds of the "kSurface", -// nominally equal to kCarTolerance/2 -// bestDistance - (out) distance to closest surface (in or out) -// -// return value = kInside if the point is closest to the inside surface -// kOutside if the point is closest to the outside surface -// kSurface if the point is withing tolerance of the surface -// -// Determine whether a point is inside, outside, or on the surface of -// the face. -// -// ------------------------------------------------------------------- -// Normal( const G4ThreeVector &p, G4double *bestDistance ); -// -// p - (in) position -// bestDistance - (out) distance to closest surface (in or out) -// -// return value = the normal of the surface nearest the point -// -// Return normal of surface closest to the point. -// -// ------------------------------------------------------------------- -// Extent( const G4ThreeVector axis ); -// -// axis - (in) unit vector defining direction -// -// return value = the largest point along the given axis of the -// the face's extent. -// -// ------------------------------------------------------------------- -// CalculateExtent( const EAxis pAxis, -// const G4VoxelLimit &pVoxelLimit, -// const G4AffineTransform &pTransform, -// G4double &min, G4double &max ) -// -// pAxis - (in) The x,y, or z axis in which to check -// the shapes 3D extent against -// pVoxelLimit - (in) Limits along x, y, and/or z axes -// pTransform - (in) A coordinate transformation on which -// to apply to the shape before testing -// min - (out) If the face has any point on its -// surface after tranformation and limits -// along pAxis -// that is smaller than the value of min, -// than it is used to replace min. -// Undefined if the return value is false. -// max - (out) Same as min, except for the largest -// point. Undefined if the return value is false. -// -// return value = true if anything remains of the face -// -// Calculate the extent of the face for the voxel navigator. -// In analogy with CalculateExtent for G4VCSGfaceted, this is -// done in the following steps: -// -// 1. Transform the face using pTranform, an arbitrary 3D -// rotation/offset/reflection -// 2. Clip the face to those boundaries as specified in -// pVoxelLimit. This may include limits in any number -// of x, y, or z axes. -// 3. For each part of the face that remains (there could -// be many separate pieces in general): -// 4. Check to see if the piece overlaps the currently -// existing limits along axis pAxis. For -// pVoxelLimit.IsLimited(pAxis) = false, there are -// no limits. -// 5. For a piece that does overlap, update min/max -// accordingly (within confines of pre-existing -// limits) along the direction pAxis. -// 6. If min/max were updated, return true -// -// ------------------------------------------------------------------- -// G3VCSGface *Clone() -// -// This method is invoked by G4CSGfaceted during the copy constructor -// or the assignment operator. Its purpose is to return a pointer -// (of type G4VCSGface) to a duplicate copy of the face. The implementation -// is straight forward for inherited classes. Example: -// -// G4VCSGface G4PolySideFace::Clone() { return new G4PolySideFace(*this); } -// -// Of course, this assumes the copy constructor of G4PolySideFace is -// correctly implemented. -// -// Implementation notes: -// * distance. -// The meaning of distance includes the boundaries of the face. For example. -// for a rectangular, planer face: -// -// A | B | C -// | | -// -------+--------------+----- -// D | I | E -// | | -// -------+--------------+----- -// F | G | H -// | | -// -// A, C, F, and H: closest distance is the distance to -// the adjacent corner. -// -// B, D, E, and G: closest distance is the distance to -// the adjacent line. -// -// I: normal distance to plane -// -// For non-planer faces, one can use the normal to decide when -// a point falls off the edge and then act accordingly. -// -// -// Usage: -// -// A CSG shape can be defined by putting together any number of generic faces, -// as long as the faces cover the entire surface of the shape without overlapping. -// -// G4VSolid::CalculateExtent -// -// Define unit vectors along the specified transform axis. Use the inverse of the -// specified coordinate transformation to rotate these unit vectors. Loop over -// each face, call face->Extent, and save the maximum value. -// -// G4VSolid::Inside -// -// To decide if a point is inside, outside, or on the surface of the shape, -// loop through all faces, and find the answer from face->Inside which gives -// a value of "bestDistance" smaller than any other. While looping, if any -// face->Inside returns kSurface, this value can be returned immediately. -// -// EInside answer; -// G4VCSGface *face = faces; -// G4double best = kInfinity; -// do { -// G4double distance; -// EInside result = (*face)->Inside( p, kCarTolerance/2, distance ); -// if (result == kSurface) return kSurface; -// if (distance < best) { -// best = distance; -// answer = result; -// } -// } while( ++face < faces + numFaces ); -// -// return(answer); -// -// G4VSolid::SurfaceNormal -// -// Loop over all faces, call face->Normal, and return the normal to the face -// that is closest to the point. -// -// G4VSolid::DistanceToIn(p) -// -// Loop over all faces, invoking face->Distance with outgoing = false, -// and save the answer that is smallest. -// -// G4VSolid::DistanceToIn(p,v) -// -// Loop over all faces, invoking face->Intersect with outgoing = false, -// and save the answer that is smallest. -// -// G4VSolid::DistanceToOut(p) -// -// Loop over all faces, invoking face->Distance with outgoing = true, -// and save the answer that is smallest. -// -// G4VSolid::DistanceToOut(p,v) -// -// Loop over all faces, invoking face->Intersect with outgoing = true, -// and save the answer that is smallest. If there is more than one answer, -// or if allBehind is false for the one answer, return validNorm as false. -// -// ---------------------------------------------------------- -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By 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 "G4VSolid.hh" - -#include "globals.hh" -#include "G4ThreeVector.hh" -#include "geomdefs.hh" - -class G4VoxelLimits; -class G4AffineTransform; -class G4SolidExtentList; - -class G4VCSGface { - public: - G4VCSGface() {;} - virtual ~G4VCSGface() {;} - - virtual G4bool Intersect( const G4ThreeVector &p, const G4ThreeVector &v, - const G4bool outgoing, const G4double surfTolerance, - G4double &distance, G4double &distFromSurface, - G4ThreeVector &normal, G4bool &allBehind ) = 0; - - virtual G4double Distance( const G4ThreeVector &p, const G4bool outgoing ) = 0; - - virtual EInside Inside( const G4ThreeVector &p, const G4double tolerance, - G4double *bestDistance ) = 0; - - virtual G4ThreeVector Normal( const G4ThreeVector &p, G4double *bestDistance ) = 0; - - virtual G4double Extent( const G4ThreeVector axis ) = 0; - - virtual void CalculateExtent( const EAxis axis, - const G4VoxelLimits &voxelLimit, - const G4AffineTransform &tranform, - G4SolidExtentList &extentList ) = 0; - - virtual G4VCSGface* Clone() = 0; -}; - -#endif - diff --git a/source/geometry/solids/CSG/src/G4Box.cc b/source/geometry/solids/CSG/src/G4Box.cc index 02eafb3abe..c64eb9bce8 100644 --- a/source/geometry/solids/CSG/src/G4Box.cc +++ b/source/geometry/solids/CSG/src/G4Box.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Box.cc,v 1.4 1999/12/15 14:50:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Box.cc,v 1.6 2000/06/09 14:37:30 grichine Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // @@ -14,6 +14,11 @@ // // 24.06.98 - V. Grichine: insideEdge in DistanceToIn(p,v) // 20.09.98 - V.Grichine: new algorithm of DistanceToIn(p,v) +// 07.05.00 - V.Grichine: d= DistanceToIn(p,v), if d0&&pY>0&&pZ>0) - { - fDx=pX; fDy=pY; fDz=pZ; - } - else - { - G4Exception("Error in G4Box::Box - negative parameters"); - } + if ( pX > 0 && pY > 0 && pZ > 0 ) + { + fDx = pX ; + fDy = pY ; + fDz = pZ ; + } + else + { + G4Exception("Error in G4Box::Box - negative parameters"); + } } @@ -51,7 +58,9 @@ G4Box::G4Box(const G4String& pName, G4double pX, // Destructor G4Box::~G4Box() -{} +{ + ; +} //////////////////////////////////////////////////////////////////////// // @@ -62,7 +71,7 @@ void G4Box::ComputeDimensions(G4VPVParameterisation* p, const G4int n, const G4VPhysicalVolume* pRep) { - p->ComputeDimensions(*this,n,pRep); + p->ComputeDimensions(*this,n,pRep); } ////////////////////////////////////////////////////////////////////////// @@ -74,154 +83,142 @@ G4bool G4Box::CalculateExtent(const EAxis pAxis, const G4AffineTransform& pTransform, G4double& pMin, G4double& pMax) const { - if (!pTransform.IsRotated()) - { + if (!pTransform.IsRotated()) + { // Special case handling for unrotated boxes // Compute x/y/z mins and maxs respecting limits, with early returns // if outside limits. Then switch() on pAxis - G4double xoffset,xMin,xMax; - G4double yoffset,yMin,yMax; - G4double zoffset,zMin,zMax; - xoffset=pTransform.NetTranslation().x(); - xMin=xoffset-fDx; - xMax=xoffset+fDx; - if (pVoxelLimit.IsXLimited()) - { - if (xMin>pVoxelLimit.GetMaxXExtent()+kCarTolerance - ||xMaxpVoxelLimit.GetMaxXExtent()) - { - xMax=pVoxelLimit.GetMaxXExtent(); - } - } - } + G4double xoffset,xMin,xMax; + G4double yoffset,yMin,yMax; + G4double zoffset,zMin,zMax; + xoffset = pTransform.NetTranslation().x() ; + xMin = xoffset - fDx ; + xMax = xoffset + fDx ; - yoffset=pTransform.NetTranslation().y(); - yMin=yoffset-fDy; - yMax=yoffset+fDy; - if (pVoxelLimit.IsYLimited()) - { - if (yMin>pVoxelLimit.GetMaxYExtent()+kCarTolerance - ||yMaxpVoxelLimit.GetMaxYExtent()) - { - yMax=pVoxelLimit.GetMaxYExtent(); - } - } - } - - - zoffset=pTransform.NetTranslation().z(); - zMin=zoffset-fDz; - zMax=zoffset+fDz; - if (pVoxelLimit.IsZLimited()) - { - if (zMin>pVoxelLimit.GetMaxZExtent()+kCarTolerance - ||zMaxpVoxelLimit.GetMaxZExtent()) - { - zMax=pVoxelLimit.GetMaxZExtent(); - } - } - } - - - switch (pAxis) - { - case kXAxis: - pMin=xMin; - pMax=xMax; - break; - case kYAxis: - pMin=yMin; - pMax=yMax; - break; - case kZAxis: - pMin=zMin; - pMax=zMax; - break; - } - - pMin-=kCarTolerance; - pMax+=kCarTolerance; - - return true; - } - else + if (pVoxelLimit.IsXLimited()) + { + if ( xMin > pVoxelLimit.GetMaxXExtent()+kCarTolerance || + xMax < pVoxelLimit.GetMinXExtent()-kCarTolerance ) return false ; + else + { + if (xMin < pVoxelLimit.GetMinXExtent()) { -// General rotated case - create and clip mesh to boundaries + xMin = pVoxelLimit.GetMinXExtent() ; + } + if (xMax > pVoxelLimit.GetMaxXExtent()) + { + xMax = pVoxelLimit.GetMaxXExtent() ; + } + } + } + yoffset = pTransform.NetTranslation().y() ; + yMin = yoffset - fDy ; + yMax = yoffset + fDy ; - G4bool existsAfterClip=false; - G4ThreeVectorList *vertices; + if (pVoxelLimit.IsYLimited()) + { + if ( yMin > pVoxelLimit.GetMaxYExtent()+kCarTolerance || + yMax < pVoxelLimit.GetMinYExtent()-kCarTolerance ) return false ; + else + { + if (yMin < pVoxelLimit.GetMinYExtent()) + { + yMin = pVoxelLimit.GetMinYExtent() ; + } + if (yMax > pVoxelLimit.GetMaxYExtent()) + { + yMax = pVoxelLimit.GetMaxYExtent() ; + } + } + } + zoffset = pTransform.NetTranslation().z() ; + zMin = zoffset - fDz ; + zMax = zoffset + fDz ; + + if (pVoxelLimit.IsZLimited()) + { + if ( zMin > pVoxelLimit.GetMaxZExtent()+kCarTolerance || + zMax < pVoxelLimit.GetMinZExtent()-kCarTolerance ) return false ; + else + { + if (zMin < pVoxelLimit.GetMinZExtent()) + { + zMin = pVoxelLimit.GetMinZExtent() ; + } + if (zMax > pVoxelLimit.GetMaxZExtent()) + { + zMax = pVoxelLimit.GetMaxZExtent() ; + } + } + } + switch (pAxis) + { + case kXAxis: + pMin = xMin ; + pMax = xMax ; + break ; + case kYAxis: + pMin=yMin; + pMax=yMax; + break; + case kZAxis: + pMin=zMin; + pMax=zMax; + break; + } + pMin -= kCarTolerance ; + pMax += kCarTolerance ; + + return true; + } + else // General rotated case - create and clip mesh to boundaries + { + G4bool existsAfterClip = false ; + G4ThreeVectorList* vertices ; + + pMin = +kInfinity ; + pMax = -kInfinity ; - pMin=+kInfinity; - pMax=-kInfinity; // Calculate rotated vertex coordinates - vertices=CreateRotatedVertices(pTransform); - ClipCrossSection(vertices,0,pVoxelLimit,pAxis,pMin,pMax); - ClipCrossSection(vertices,4,pVoxelLimit,pAxis,pMin,pMax); - ClipBetweenSections(vertices,0,pVoxelLimit,pAxis,pMin,pMax); + vertices = CreateRotatedVertices(pTransform) ; + ClipCrossSection(vertices,0,pVoxelLimit,pAxis,pMin,pMax) ; + ClipCrossSection(vertices,4,pVoxelLimit,pAxis,pMin,pMax) ; + ClipBetweenSections(vertices,0,pVoxelLimit,pAxis,pMin,pMax) ; - if (pMin!=kInfinity||pMax!=-kInfinity) - { - existsAfterClip=true; + if ( pMin != kInfinity || pMax != -kInfinity ) + { + existsAfterClip = true ; // Add 2*tolerance to avoid precision troubles - pMin-=kCarTolerance; - pMax+=kCarTolerance; - - } - else - { + + pMin -= kCarTolerance ; + pMax += kCarTolerance ; + } + else + { // Check for case where completely enveloping clipping volume // If point inside then we are confident that the solid completely // envelopes the clipping volume. Hence set min/max extents according // to clipping volume extents along the specified axis. - G4ThreeVector clipCentre( - (pVoxelLimit.GetMinXExtent()+pVoxelLimit.GetMaxXExtent())*0.5, - (pVoxelLimit.GetMinYExtent()+pVoxelLimit.GetMaxYExtent())*0.5, - (pVoxelLimit.GetMinZExtent()+pVoxelLimit.GetMaxZExtent())*0.5); + + G4ThreeVector clipCentre( + ( pVoxelLimit.GetMinXExtent()+pVoxelLimit.GetMaxXExtent())*0.5, + ( pVoxelLimit.GetMinYExtent()+pVoxelLimit.GetMaxYExtent())*0.5, + ( pVoxelLimit.GetMinZExtent()+pVoxelLimit.GetMaxZExtent())*0.5); - if (Inside(pTransform.Inverse().TransformPoint(clipCentre))!=kOutside) - { - existsAfterClip=true; - pMin=pVoxelLimit.GetMinExtent(pAxis); - pMax=pVoxelLimit.GetMaxExtent(pAxis); - } - } - delete vertices; - return existsAfterClip; - } + if (Inside(pTransform.Inverse().TransformPoint(clipCentre))!=kOutside) + { + existsAfterClip = true ; + pMin = pVoxelLimit.GetMinExtent(pAxis) ; + pMax = pVoxelLimit.GetMaxExtent(pAxis) ; + } + } + delete vertices; + return existsAfterClip; + } } ///////////////////////////////////////////////////////////////////////// @@ -230,41 +227,28 @@ G4bool G4Box::CalculateExtent(const EAxis pAxis, EInside G4Box::Inside(const G4ThreeVector& p) const { - EInside in=kOutside; + EInside in = kOutside ; - if (fabs(p.x())<=fDx-kCarTolerance*0.5) - { - if (fabs(p.y())<=fDy-kCarTolerance*0.5) - { - if (fabs(p.z())<=fDz-kCarTolerance*0.5) - { - in=kInside; - } - else if (fabs(p.z())<=fDz+kCarTolerance*0.5) - { - in=kSurface; - } - } - else if (fabs(p.y())<=fDy+kCarTolerance*0.5) - { - if (fabs(p.z())<=fDz+kCarTolerance*0.5) - { - in=kSurface; - } - } - } - else if (fabs(p.x())<=fDx+kCarTolerance*0.5) - { - if (fabs(p.y())<=fDy+kCarTolerance*0.5) - { - if (fabs(p.z())<=fDz+kCarTolerance*0.5) - { - in=kSurface; - } - } - } - - return in; + if ( fabs(p.x()) <= fDx - kCarTolerance*0.5 ) + { + if (fabs(p.y()) <= fDy - kCarTolerance*0.5 ) + { + if (fabs(p.z()) <= fDz - kCarTolerance*0.5 ) in = kInside ; + else if (fabs(p.z()) <= fDz + kCarTolerance*0.5 ) in = kSurface ; + } + else if (fabs(p.y()) <= fDy + kCarTolerance*0.5 ) + { + if (fabs(p.z()) <= fDz + kCarTolerance*0.5 ) in = kSurface ; + } + } + else if (fabs(p.x()) <= fDx + kCarTolerance*0.5 ) + { + if (fabs(p.y()) <= fDy + kCarTolerance*0.5 ) + { + if (fabs(p.z()) <= fDz + kCarTolerance*0.5) in = kSurface ; + } + } + return in ; } /////////////////////////////////////////////////////////////////////// @@ -275,45 +259,43 @@ EInside G4Box::Inside(const G4ThreeVector& p) const G4ThreeVector G4Box::SurfaceNormal( const G4ThreeVector& p) const { - G4double distx,disty,distz; - G4ThreeVector norm; + G4double distx, disty, distz ; + G4ThreeVector norm ; + // Calculate distances as if in 1st octant - distx=fabs(fabs(p.x())-fDx); - disty=fabs(fabs(p.y())-fDy); - distz=fabs(fabs(p.z())-fDz); - if (distx<=disty) - { - if (distx<=distz) - { -// Closest to X - if (p.x()<0) norm=G4ThreeVector(-1.0,0,0); - else norm=G4ThreeVector(1.0,0,0); - } - else - { -// Closest to Z - if (p.z()<0) norm=G4ThreeVector(0,0,-1.0); - else norm=G4ThreeVector(0,0,1.0); - } - } - else - { - if (disty<=distz) - { -// Closest to Y - if (p.y()<0) norm=G4ThreeVector(0,-1.0,0); - else norm=G4ThreeVector(0,1.0,0); - } - else - { -// Closest to Z - if (p.z()<0) norm=G4ThreeVector(0,0,-1.0); - else norm=G4ThreeVector(0,0,1.0); - } - } + distx = fabs(fabs(p.x()) - fDx) ; + disty = fabs(fabs(p.y()) - fDy) ; + distz = fabs(fabs(p.z()) - fDz) ; - return norm; + if ( distx <= disty ) + { + if ( distx <= distz ) // Closest to X + { + if ( p.x() < 0 ) norm = G4ThreeVector(-1.0,0,0) ; + else norm = G4ThreeVector( 1.0,0,0) ; + } + else // Closest to Z + { + if ( p.z() < 0 ) norm = G4ThreeVector(0,0,-1.0) ; + else norm = G4ThreeVector(0,0, 1.0) ; + } + } + else + { + if ( disty <= distz ) // Closest to Y + { + + if ( p.y() < 0 ) norm = G4ThreeVector(0,-1.0,0) ; + else norm = G4ThreeVector(0, 1.0,0) ; + } + else // Closest to Z + { + if ( p.z() < 0 ) norm = G4ThreeVector(0,0,-1.0) ; + else norm = G4ThreeVector(0,0, 1.0) ; + } + } + return norm; } /////////////////////////////////////////////////////////////////////////// @@ -375,14 +357,8 @@ G4double G4Box::DistanceToIn(const G4ThreeVector& p,const G4ThreeVector& v) cons } else { - if (v.x() > 0) - { - sOut = (fDx - p.x())*stmp ; - } - if (v.x() < 0) - { - sOut = (fDx + p.x())*stmp ; - } + if (v.x() > 0) sOut = (fDx - p.x())*stmp ; + if (v.x() < 0) sOut = (fDx + p.x())*stmp ; } } @@ -398,7 +374,6 @@ G4double G4Box::DistanceToIn(const G4ThreeVector& p,const G4ThreeVector& v) cons smaxy = (fDy+fabs(p.y()))*stmp ; if (sminy > smin) smin=sminy ; - if (smaxy < smax) smax=smaxy ; if (smin >= smax-kCarTolerance*0.5) @@ -408,14 +383,8 @@ G4double G4Box::DistanceToIn(const G4ThreeVector& p,const G4ThreeVector& v) cons } else { - if (v.y() > 0) - { - sOuty = (fDy - p.y())*stmp ; - } - if (v.y() < 0) - { - sOuty = (fDy + p.y())*stmp ; - } + if (v.y() > 0) sOuty = (fDy - p.y())*stmp ; + if (v.y() < 0) sOuty = (fDy + p.y())*stmp ; if( sOuty < sOut ) sOut = sOuty ; } } @@ -433,7 +402,6 @@ G4double G4Box::DistanceToIn(const G4ThreeVector& p,const G4ThreeVector& v) cons smaxz = (fDz+fabs(p.z()))*stmp ; if (sminz > smin) smin = sminz ; - if (smaxz < smax) smax = smaxz ; if (smin >= smax-kCarTolerance*0.5) @@ -443,14 +411,8 @@ G4double G4Box::DistanceToIn(const G4ThreeVector& p,const G4ThreeVector& v) cons } else { - if (v.z() > 0) - { - sOutz = (fDz - p.z())*stmp ; - } - if (v.z() < 0) - { - sOutz = (fDz + p.z())*stmp ; - } + if (v.z() > 0) sOutz = (fDz - p.z())*stmp ; + if (v.z() < 0) sOutz = (fDz + p.z())*stmp ; if( sOutz < sOut ) sOut = sOutz ; } } @@ -459,11 +421,8 @@ G4double G4Box::DistanceToIn(const G4ThreeVector& p,const G4ThreeVector& v) cons { return kInfinity ; } + if (smin < 0.5*kCarTolerance) smin = 0.0 ; - if (smin < 0) - { - smin= 0.0; - } return smin ; } @@ -476,15 +435,17 @@ G4double G4Box::DistanceToIn(const G4ThreeVector& p,const G4ThreeVector& v) cons G4double G4Box::DistanceToIn(const G4ThreeVector& p) const { - G4double safex,safey,safez,safe=0.0; - safex=fabs(p.x())-fDx; - safey=fabs(p.y())-fDy; - safez=fabs(p.z())-fDz; + G4double safex, safey, safez, safe = 0.0 ; - if (safex>safe) safe=safex; - if (safey>safe) safe=safey; - if (safez>safe) safe=safez; - return safe; + safex = fabs(p.x()) - fDx ; + safey = fabs(p.y()) - fDy ; + safez = fabs(p.z()) - fDz ; + + if (safex > safe) safe = safex ; + if (safey > safe) safe = safey ; + if (safez > safe) safe = safez ; + + return safe ; } ///////////////////////////////////////////////////////////////////////// @@ -504,24 +465,19 @@ G4double G4Box::DistanceToOut( const G4ThreeVector& p,const G4ThreeVector& v, if (calcNorm) *validNorm = true ; // All normals are valid - // X planes - - if (v.x() > 0) + if (v.x() > 0) // X planes { - pdist = fDx-p.x() ; + pdist = fDx - p.x() ; if (pdist > kCarTolerance*0.5) { - snxt=pdist/v.x(); - side=kPX; + snxt = pdist/v.x() ; + side = kPX ; } else { - if (calcNorm) - { - *n=G4ThreeVector(1,0,0); - } - return snxt=0; + if (calcNorm) *n = G4ThreeVector(1,0,0) ; + return snxt = 0 ; } } else if (v.x() < 0) @@ -530,26 +486,18 @@ G4double G4Box::DistanceToOut( const G4ThreeVector& p,const G4ThreeVector& v, if (pdist > kCarTolerance*0.5) { - snxt=-pdist/v.x(); - side=kMX; + snxt = -pdist/v.x() ; + side = kMX ; } else { - if (calcNorm) - { - *n=G4ThreeVector(-1,0,0); - } - return snxt=0; + if (calcNorm) *n = G4ThreeVector(-1,0,0) ; + return snxt = 0 ; } } - else - { - snxt=kInfinity; - } + else snxt = kInfinity ; - // Y planes - - if (v.y()>0) + if ( v.y() > 0 ) // Y planes { pdist=fDy-p.y(); @@ -565,18 +513,15 @@ G4double G4Box::DistanceToOut( const G4ThreeVector& p,const G4ThreeVector& v, } else { - if (calcNorm) - { - *n=G4ThreeVector(0,1,0); - } - return snxt=0; + if (calcNorm) *n = G4ThreeVector(0,1,0) ; + return snxt = 0 ; } } - else if (v.y()<0) + else if ( v.y() < 0 ) { - pdist=fDy+p.y(); + pdist = fDy + p.y() ; - if (pdist>kCarTolerance*0.5) + if (pdist > kCarTolerance*0.5) { stmp=-pdist/v.y(); @@ -588,25 +533,19 @@ G4double G4Box::DistanceToOut( const G4ThreeVector& p,const G4ThreeVector& v, } else { - if (calcNorm) - { - *n=G4ThreeVector(0,-1,0); - } - return snxt=0; + if (calcNorm) *n = G4ThreeVector(0,-1,0) ; + return snxt = 0 ; } } - - // Z planes - - if (v.z()>0) + if (v.z()>0) // Z planes { pdist=fDz-p.z(); - if (pdist>kCarTolerance*0.5) + if (pdist > kCarTolerance*0.5) { stmp=pdist/v.z(); - if (stmpkCarTolerance*0.5) + if (pdist > kCarTolerance*0.5) { stmp=-pdist/v.z(); - if (stmpinsert(pTransform.TransformPoint(vertex0)); - vertices->insert(pTransform.TransformPoint(vertex1)); - vertices->insert(pTransform.TransformPoint(vertex2)); - vertices->insert(pTransform.TransformPoint(vertex3)); - vertices->insert(pTransform.TransformPoint(vertex4)); - vertices->insert(pTransform.TransformPoint(vertex5)); - vertices->insert(pTransform.TransformPoint(vertex6)); - vertices->insert(pTransform.TransformPoint(vertex7)); - } - else - { - G4Exception("G4Box::CreateRotatedVertices Out of memory - Cannot alloc vertices"); - } - return vertices; + if (vertices) + { + G4ThreeVector vertex0(-fDx,-fDy,-fDz) ; + G4ThreeVector vertex1(fDx,-fDy,-fDz) ; + G4ThreeVector vertex2(fDx,fDy,-fDz) ; + G4ThreeVector vertex3(-fDx,fDy,-fDz) ; + G4ThreeVector vertex4(-fDx,-fDy,fDz) ; + G4ThreeVector vertex5(fDx,-fDy,fDz) ; + G4ThreeVector vertex6(fDx,fDy,fDz) ; + G4ThreeVector vertex7(-fDx,fDy,fDz) ; + + vertices->insert(pTransform.TransformPoint(vertex0)); + vertices->insert(pTransform.TransformPoint(vertex1)); + vertices->insert(pTransform.TransformPoint(vertex2)); + vertices->insert(pTransform.TransformPoint(vertex3)); + vertices->insert(pTransform.TransformPoint(vertex4)); + vertices->insert(pTransform.TransformPoint(vertex5)); + vertices->insert(pTransform.TransformPoint(vertex6)); + vertices->insert(pTransform.TransformPoint(vertex7)); + } + else + { +G4Exception("G4Box::CreateRotatedVertices Out of memory - Cannot alloc vertices"); + } + return vertices; } ////////////////////////////////////////////////////////////////////////// diff --git a/source/geometry/solids/CSG/src/G4CSGSolid.cc b/source/geometry/solids/CSG/src/G4CSGSolid.cc index 5eda84644b..8e63e7920e 100644 --- a/source/geometry/solids/CSG/src/G4CSGSolid.cc +++ b/source/geometry/solids/CSG/src/G4CSGSolid.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4CSGSolid.cc,v 1.2 1999/12/15 14:50:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4CSGSolid.hh" diff --git a/source/geometry/solids/CSG/src/G4Cons.cc b/source/geometry/solids/CSG/src/G4Cons.cc index 2c4b8b2611..da1d13fd9e 100644 --- a/source/geometry/solids/CSG/src/G4Cons.cc +++ b/source/geometry/solids/CSG/src/G4Cons.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Cons.cc,v 1.6 1999/12/15 14:50:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Cons.cc,v 1.9 2000/04/11 16:04:27 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4Cons // @@ -14,6 +14,7 @@ // // History: // +// 06.03.00 V.Grichine, modifications in DistanceToOut(p,v,...) // 18.11.99 V.Grichine side = kNull initialisation in DistanceToOut(p,v,...) // 28.04.99 V. Grichine bugs fixed in Distance ToOut(p,v,...) and // Distance ToIn(p,v) @@ -34,7 +35,6 @@ #include "G4Polyhedron.hh" #include "G4NURBS.hh" #include "G4NURBSbox.hh" -#include "G4VisExtent.hh" //////////////////////////////////////////////////////////////////////// // @@ -2059,9 +2059,9 @@ G4double G4Cons::DistanceToOut( const G4ThreeVector& p, } if (calcNorm) - { - switch(side) - { + { + switch(side) + { case kRMax: // Note: returned vector not normalised // (divide by frmax for unit vector) @@ -2104,11 +2104,33 @@ G4double G4Cons::DistanceToOut( const G4ThreeVector& p, *n=G4ThreeVector(0,0,-1); *validNorm=true; break; - default: - G4Exception("Invalid enum in G4Cons::DistanceToOut"); - break; - } - } + default: + + G4cout.precision(16); + G4cout << G4endl; + G4cout << "Cons parameters:" << G4endl << G4endl; + G4cout << "fRmin1 = " << fRmin1/mm << " mm" << G4endl; + G4cout << "fRmax1 = " << fRmax1/mm << " mm" << G4endl; + G4cout << "fRmin2 = " << fRmin2/mm << " mm" << G4endl; + G4cout << "fRmax2 = " << fRmax2/mm << " mm" << G4endl; + G4cout << "fDz = " << fDz/mm << " mm" << G4endl; + G4cout << "fSPhi = " << fSPhi/degree << " degree" << G4endl; + G4cout << "fDPhi = " << fDPhi/degree << " degree" << G4endl; + 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; + G4cout << "Proposed distance :" << G4endl<< G4endl; + G4cout << "snxt = " << snxt/mm << " mm" << G4endl << G4endl; + + G4Exception("Invalid enum in G4Cons::DistanceToOut"); + break; + } + } return snxt; } @@ -2267,15 +2289,6 @@ void G4Cons::DescribeYourselfTo (G4VGraphicsScene& scene) const scene.AddThis (*this); } - // Define the sides of the box into which the G4Cons instance would fit. - -G4VisExtent G4Cons::GetExtent() const -{ - G4double RMax = (fRmax2 >= fRmax1) ? fRmax2 : fRmax1 ; - - return G4VisExtent (-RMax, RMax, -RMax, RMax, -fDz, fDz); -} - G4Polyhedron* G4Cons::CreatePolyhedron () const { return new G4PolyhedronCons(fRmin1, fRmax1, fRmin2, fRmax2, fDz, fSPhi, diff --git a/source/geometry/solids/CSG/src/G4Hype.cc b/source/geometry/solids/CSG/src/G4Hype.cc deleted file mode 100644 index 92e71efe10..0000000000 --- a/source/geometry/solids/CSG/src/G4Hype.cc +++ /dev/null @@ -1,1669 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4Hype.cc,v 1.4 1999/12/15 14:50:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// class G4Hype: this class implements in G4 the volume equivalent -// to the HYPE volume in Geant 3, i.e. a tube with -// hyperbolic profile. -// -// Authors: -// Ernesto Lamanna (Ernesto.Lamanna@roma1.infn.it) & -// Francesco Safai Tehrani (Francesco.SafaiTehrani@roma1.infn.it) -// Rome, INFN & University of Rome "La Sapienza", 9 June 1998. -// -// $ Original: G4Hype.cc,v 1.0 1998/06/09 16:57:50 safai Exp $ -// -// class G4Hype: this class implements in G4 the volume equivalent -// to the HYPE volume in Geant 3, i.e. a tube with -// hyperbolic profile. -// -// For further informations, please read G4Hype.history and G4Hype.doc, -// and the G4Hype.hh header. - -#include "G4Hype.hh" - -#include "G4VoxelLimits.hh" -#include "G4AffineTransform.hh" - -#include "G4VPVParameterisation.hh" - -#include "meshdefs.hh" - -#include "G4VGraphicsScene.hh" -#include "G4Polyhedron.hh" -#include "G4NURBS.hh" -#include "G4NURBStube.hh" -#include "G4NURBScylinder.hh" -#include "G4NURBStubesector.hh" -#include "G4VisExtent.hh" - -#define SURFACE_PRECISION (0.5*kCarTolerance) - -// Constructor - check parameters, and fills protected data members -G4Hype::G4Hype(const G4String& pName, - const G4double newInnerRadius, - const G4double newOuterRadius, - const G4double newInnerStereo, - const G4double newOuterStereo, - const G4double newHalfLenZ) : G4CSGSolid(pName) -{ -// Check z-len - if (newHalfLenZ>0) - { - halfLenZ=newHalfLenZ; - } - else - { - G4Exception("Error in G4Hype::G4Hype - invalid z half-length"); - } - -// Check radii - if (newInnerRadius>=0 && newOuterRadius>=0) - if (newInnerRadius < newOuterRadius) { - innerRadius=newInnerRadius; - outerRadius=newOuterRadius; - } - else { // swapping radii (:-) - innerRadius=newOuterRadius; - outerRadius=newInnerRadius; - } - else - { - G4Exception("Error in G4Hype::G4Hype - invalid radii"); - } - - innerStereo=newInnerStereo; - outerStereo=newOuterStereo; - - // init of precalculated quantities - tanInnerStereo2=tan(innerStereo)*tan(innerStereo); - tanOuterStereo2=tan(outerStereo)*tan(outerStereo); - innerRadius2=innerRadius*innerRadius; - outerRadius2=outerRadius*outerRadius; - endInnerRadius2=HypeInnerRadius2(halfLenZ); - endOuterRadius2=HypeOuterRadius2(halfLenZ); - endInnerRadius=sqrt(endInnerRadius2); - endOuterRadius=sqrt(endOuterRadius2); - -} - -// Destructor -G4Hype::~G4Hype() -{;} - -// Dispatch to parameterisation for replication mechanism dimension -// computation & modification. - void G4Hype::ComputeDimensions(G4VPVParameterisation* p, - const G4int n, - const G4VPhysicalVolume* pRep) -{ - p->ComputeDimensions(*this,n,pRep); -} - -// Calculate extent under transform and specified limit -G4bool G4Hype::CalculateExtent(const EAxis pAxis, - const G4VoxelLimits& pVoxelLimit, - const G4AffineTransform& pTransform, - G4double& pMin, G4double& pMax) const -{ - - - //G4cout << "Calculate extent !"<< G4endl; - //G4cout << "Surface data: " << outerRadius << G4endl; - - if (!pTransform.IsRotated()) - { - // Special case handling for unrotated solid tubes - // Compute x/y/z mins and maxs fro bounding box respecting limits, - // with early returns if outside limits. Then switch() on pAxis, - // and compute exact x and y limit for x/y case - - G4double xoffset,xMin,xMax; - G4double yoffset,yMin,yMax; - G4double zoffset,zMin,zMax; - - G4double diff1,diff2,maxDiff,newMin,newMax; - G4double xoff1,xoff2,yoff1,yoff2; - - xoffset=pTransform.NetTranslation().x(); - xMin=xoffset-endOuterRadius; - xMax=xoffset+endOuterRadius; - //G4cout << "xMin, xMax : " << xMin << " " << xMax << G4endl; - if (pVoxelLimit.IsXLimited()) - { - if (xMin>pVoxelLimit.GetMaxXExtent()+kCarTolerance || - xMaxpVoxelLimit.GetMaxXExtent()) - { - xMax=pVoxelLimit.GetMaxXExtent(); - //G4cout << xMax << G4endl; - } - } - } - - yoffset=pTransform.NetTranslation().y(); - yMin=yoffset-endOuterRadius; - yMax=yoffset+endOuterRadius; - if (pVoxelLimit.IsYLimited()) - { - if (yMin>pVoxelLimit.GetMaxYExtent()+kCarTolerance - ||yMaxpVoxelLimit.GetMaxYExtent()) - { - yMax=pVoxelLimit.GetMaxYExtent(); - } - } - } - - - zoffset=pTransform.NetTranslation().z(); - zMin=zoffset-halfLenZ; - zMax=zoffset+halfLenZ; - if (pVoxelLimit.IsZLimited()) - { - if (zMin>pVoxelLimit.GetMaxZExtent()+kCarTolerance - ||zMaxpVoxelLimit.GetMaxZExtent()) - { - zMax=pVoxelLimit.GetMaxZExtent(); - } - } - } - -// Known to cut cylinder - switch (pAxis) - { - case kXAxis: - //G4cout << "kXAxis" << G4endl; - yoff1=yoffset-yMin; - yoff2=yMax-yoffset; - if (yoff1>=0&&yoff2>=0) - { - // Y limits cross max/min x => no change - pMin=xMin; - pMax=xMax; - } - else - { - // Y limits don't cross max/min x => compute max delta x, hence new mins/maxs - diff1=sqrt(abs(endOuterRadius2-yoff1*yoff1)); - diff2=sqrt(abs(endOuterRadius2-yoff2*yoff2)); - maxDiff=(diff1>diff2) ? diff1:diff2; - newMin=xoffset-maxDiff; - newMax=xoffset+maxDiff; - pMin=(newMinxMax) ? xMax : newMax; - } - - break; - case kYAxis: - //G4cout << "kYAxis" << G4endl; - xoff1=xoffset-xMin; - xoff2=xMax-xoffset; - if (xoff1>=0&&xoff2>=0) - { - // X limits cross max/min y => no change - //G4cout << "assegnazione diretta, xoff1,2 > 0" << yMin << " " << yMax << G4endl; - pMin=yMin; - pMax=yMax; - } - else - { - // X limits don't cross max/min y => compute max delta y, hence new mins/maxs - diff1=sqrt(abs(endOuterRadius2-xoff1*xoff1)); - diff2=sqrt(abs(endOuterRadius2-xoff2*xoff2)); - //G4cout << diff1 << " " << diff2 << G4endl; - maxDiff=(diff1>diff2) ? diff1:diff2; - //G4cout << "maxDiff " << maxDiff << G4endl; - newMin=yoffset-maxDiff; - newMax=yoffset+maxDiff; - //G4cout << "assegnazione indiretta" << yMin << " " << yMax << G4endl; - //G4cout << "newMin, newMax : " << newMin << " " << newMax << G4endl; - - pMin=(newMinyMax) ? yMax : newMax; - } - break; - case kZAxis: - //G4cout << "kZAxis" << G4endl; - pMin=zMin; - pMax=zMax; - break; - } - - pMin-=kCarTolerance; - pMax+=kCarTolerance; - - //G4cout << xoffset << " " << yoffset << " " << zoffset << G4endl; - //G4cout << "pMin, pMax: " << pMin << "," << pMax << G4endl << G4endl; - return true; - - } - else - { - G4int i,noEntries,noBetweenSections4; - G4bool existsAfterClip=false; - - // Calculate rotated vertex coordinates - G4ThreeVectorList *vertices; - - vertices=CreateRotatedVertices(pTransform); - - pMin=+kInfinity; - pMax=-kInfinity; - - noEntries=vertices->entries(); - noBetweenSections4=noEntries-4; - - for (i=0;i=iRad2 && xR2<=oRad2) - { - // on endcaps ?? - if (abs(xZ/halfLenZ-1)halfLenZ!!!! " << G4endl; - return kOutside; -} - -// return the normal unit vector to the Hyperbolical Surface at a point -// p on (or nearly on) the surface -G4ThreeVector G4Hype::SurfaceNormal( const G4ThreeVector& p) const -{ - G4ThreeVector norm(0.,0.,0.); - double pZ=p.z(); - double zRadius2=p.x()*p.x()+p.y()*p.y(); - double param=0; - - //G4cout << "Surface Normal " << p << G4endl; - //G4cout << "Surface data : " << outerRadius << G4endl; - - - // check if the point is on the endcaps - // within SURFACE_PRECISION - if (abs((pZ/halfLenZ)-1)=zero_tolerance) - { - // *left* (see docs) intersection z=-halfLenZ - double tLeft=(-halfLenZ-vz)/uz; - if (tLeft>0 || abs(tLeft)=(1-SURFACE_PRECISION)*endInnerRadius) - && radiusL<=(1+SURFACE_PRECISION)*endOuterRadius) - { - distanceLeft=abs(tLeft); - } - } - - // *right* (see docs) intersection z=halfLenZ - double tRight=(halfLenZ-vz)/uz; - if (tRight>0 || abs(tRight)=(1-SURFACE_PRECISION)*endInnerRadius - && radiusR<=(1+SURFACE_PRECISION)*endOuterRadius) - { - distanceRight=abs(tRight); - } - } - } - else - { - if (abs(abs(vz/halfLenZ)-1)=(1-SURFACE_PRECISION)*outerRadius) // outside - { - if (vz<0) // left EndCap - { - distanceLeft=abs(xR-outerRadius); - } - else // right EndCap - { - distanceRight=abs(xR-outerRadius); - } - } - } - } - - // ==============================================================================// - - // Calculate intersections with hyperbolical surfaces - - // Inner first! ==================================== - // equation parameters - - double dist1=kInfinity; - double dist2=kInfinity; - double param1, param2; - - if (innerRadius!=0. || innerStereo!=0.) // is there an inner surface ??? - { - // yes...inner & outer are both present! - // degenerations are automagically cured (i.e. hyperbolical -> cylindrical) - param1=tanInnerStereo2; - param2=innerRadius2; - - double paramA=(ux*ux+uy*uy)-param1*uz*uz; - double paramB=(ux*vx+uy*vy)-param1*uz*vz; - double paramC=(vx*vx+vy*vy)-param1*vz*vz-param2; - - // intersection equation discriminant - double delta=paramB*paramB-paramA*paramC; - - if (delta>0. || abs(delta)0. || abs(solution1)0. || abs(solution2) cylindrical) - param1=tanOuterStereo2; - param2=outerRadius2; - - // equation parameters - double paramA=(ux*ux+uy*uy)-param1*uz*uz; - double paramB=(ux*vx+uy*vy)-param1*uz*vz; - double paramC=(vx*vx+vy*vy)-param1*vz*vz-param2; - - // intersection equation discriminant - double delta=paramB*paramB-paramA*paramC; - - if (delta > 0 || abs(delta)0 || abs(solution1)0 || abs(solution2) distanceInner) - { - snxt=distanceInner; - } - if (snxt > distanceOuter) - { - snxt=distanceOuter; - } - if (snxt > distanceRight) - { - snxt=distanceRight; - } - if (snxt > distanceLeft ) - { - snxt=distanceLeft; - } - } - // Done! - //G4cout << "DistToIn(pt,dir) = " << snxt << G4endl; - return snxt; -} - - -// Calculate distance to shape from outside, along perpendicular direction -// (if one exists) - -G4double G4Hype::DistanceToIn(const G4ThreeVector& p) const -{ - double zero_tolerance=1e-6; - // I use the cylindrical simmetry of the system to optimize calculation - double pZ=abs(p.z()); - double pR2=p.x()*p.x()+p.y()*p.y(); - double pR=sqrt(pR2); - double ApointR=pR; - double ApointZ=pZ; - double BpointR=0.; - double BpointZ=pZ; - - //G4cout << "DistToIn(pt)" << p << G4endl; - //G4cout << "Surface data : " << outerRadius << G4endl; - - EInside Pp=Inside(p); - if (Pp==kSurface || Pp==kInside) - { - //G4cout << "Point on surface or inside, returning 0" << G4endl; - return 0.; - } - - // is point in zone 1 ? - if (pZ>=(1-SURFACE_PRECISION)*halfLenZ && - pR2<=(1+SURFACE_PRECISION)*(1+SURFACE_PRECISION)*endOuterRadius2 && - pR2>=(1-SURFACE_PRECISION)*(1-SURFACE_PRECISION)*endInnerRadius2) - { - //G4cout << "zone1 - returning : " << abs(pZ)-halfLenZ << G4endl; - return abs(pZ)-halfLenZ; - } - - // special degenerated case: point with z=0 - if (pZ cylindrical) - if (outerStereo==0.) - { - // cylindrical - if (pR>=(1-SURFACE_PRECISION)*outerRadius && - pZ<=(1+SURFACE_PRECISION)*halfLenZ) - { - //G4cout << "zone2 - Cyl - returning : " << pR-outerRadius << G4endl; - return abs(pR-outerRadius); - } - } - else // hyperbolical! - { - // some parameters I need for zone 2 and 3 - // zone2: normal has to be calculated in (halfLenZ, endOuterRadius) - // zone3: normal has to be calculater in (halfLenZ, endInnerRadius) - - // Parameters for Zone2 - // since I use just normR/normZ and normZ/normR I simplify the 2 factor - // maxNormR=extremeR; - // maxNormZ=-tanThetaStereo*tanThetaStereo*halfLenZ; - - // calculate parameters: - // paramNorm=maxNormR/maxNormZ - double paramNormZ2=endOuterRadius/(-tanOuterStereo2*halfLenZ); - - // maxRz2 identify the zone on the theta plane where - // I have to use the iterative method to calculate the distance - // this is an "hyperbolical" triangle with vertex: - // 1 -> (0,outerRadius) - // 2 -> (0,maxR); - // 3 -> (halfLenZ,0); - // Ok - Verified on 20.02.98 - - // maxZ_Z2=-(1/paramNorm)*extremeR+halfLenZ; - // maxRz2=-paramNormZ2*halfLenZ+endOuterRadius; - - // is point in zone 2 ? - - if (pR>=(1-SURFACE_PRECISION)*sqrt(HypeOuterRadius2(pZ)) // above the outer hype profile - && ApointR<=(paramNormZ2*(ApointZ-halfLenZ)+endOuterRadius) - // but under the normal in the extreme point - && ApointZ<=(1+SURFACE_PRECISION)*halfLenZ) - { - //Prepare the parameter for the iteration - double mydist=0.; // distance between C and A - double backupdist=kInfinity; // old distance... - // needed to check if I'm moving in the right direction - double tanThetaStereoSquared=tanOuterStereo2; - double param2=1+2*tanThetaStereoSquared; - - do { - // move along the curve - // at the first Step distance=0., so there's no problem - // then mydist is a value *with* Sign - BpointZ=BpointZ+mydist; - - // calculate the normal to the Hype in - // B=(BpointZ, BpointR) - // (this is the intersection point between the Hype and the - // line normal to the Hype axis passing in A) - BpointR=sqrt(HypeOuterRadius2(BpointZ)); - - // //G4cout << "BpointZ : " << BpointZ << " BpointR: " << BpointR << G4endl; - - // the components of the normal vector in B are - // / normR = 2*BpointR - // \ normZ =-2*tanThetaStereoSquared*BpointZ - // but, since I'm interested only in the normZ/normR value, - // I can simplify the 2 factor - // with a bit of calculation (see docs) I get: - - mydist=BpointZ*(param2-tanThetaStereoSquared*ApointR/BpointR)-ApointZ; - - // if mydist grows during the iteration, it means I'm - // moving in the wrong direction. So I have to - // 1. revert back to the place where I started from - // i.e. stepping back for the backupdist - // 2. move of backupdist in the opposite direction - // so mydist is the double of backupdist with opposite Sign - // //G4cout << " mydist : " << mydist << G4endl; - - if (abs(mydist)zero_tolerance); - - // Now I have the correct point BpointZ, BpointR stored... - //G4cout << "zone2 - hyp - returning : " << - //sqrt((ApointZ-BpointZ)*(ApointZ-BpointZ)+ - // (ApointR-BpointR)*(ApointR-BpointR)) << G4endl; - - return sqrt((ApointZ-BpointZ)*(ApointZ-BpointZ)+ - (ApointR-BpointR)*(ApointR-BpointR)); - } - } - - if (innerStereo==0.) - { - // cylindrical - if (pR<=(1+SURFACE_PRECISION)*innerRadius && - pZ<=(1+SURFACE_PRECISION)*halfLenZ) - { - //G4cout << "zone3 - Cyl - returning : " << innerRadius-pR << G4endl; - return abs(innerRadius-pR); - } - } - else // hyperbolical! - { - // Parameters for Zone 3 - // it innerRadius=0 and innerStereo=0 then NO zone 3 - if (innerRadius!=0.) - { - // calculate parameters: - // paramNorm=maxNormR/maxNormZ - double coParamNormZ3=(-tanInnerStereo2*halfLenZ)/endInnerRadius; - - // maxRz2 identify the zone on the theta plane where - // I have to use the iterative method to calculate the distance - // this is an "hyperbolical" triangle with vertex: - // 1 -> (0,innerRadius) - // 2 -> (maxZ,0); - // 3 -> (halfLenZ,endInnerRadius); - - double maxZz3=-(coParamNormZ3)*endInnerRadius+halfLenZ; - // maxRz3=-paramNormZ3*halfLenZ+endInnerRadius; - - // is point in zone 3 ? - - if (pR<=(1+SURFACE_PRECISION)*sqrt(HypeInnerRadius2(pZ)) // under the inner hype profile - && ApointZ<=(1+SURFACE_PRECISION)*((coParamNormZ3*(ApointR-endOuterRadius)+ halfLenZ))) - { - //Prepare the parameter for the iteration - double mydist=0.; // distance between C and A - double backupdist=kInfinity; // old distance... - // needed to check if I'm moving in the right direction - double tanThetaStereoSquared=tanInnerStereo2; - double param2=1+2*tanThetaStereoSquared; - - do { - // move along the curve - // at the first Step distance=0., so there's no problem - // then mydist is a value *with* Sign - BpointZ=BpointZ+mydist; - - // calculate the normal to the Hype in - // B=(BpointZ, BpointR) - // (this is the intersection point between the Hype and the - // line normal to the Hype axis passing in A) - BpointR=sqrt(HypeInnerRadius2(BpointZ)); - - // //G4cout << "BpointZ : " << BpointZ << " BpointR: " << BpointR << G4endl; - - // the components of the normal vector in B are - // / normR = 2*BpointR - // \ normZ =-2*tanThetaStereoSquared*BpointZ - // but, since I'm interested only in the normZ/normR value, - // I can simplify the 2 factor - // with a bit of calculation (see docs) I get: - - mydist=BpointZ*(param2-tanThetaStereoSquared*ApointR/BpointR)-ApointZ; - - // if mydist grows during the iteration, it means I'm - // moving in the wrong direction. So I have to - // 1. revert back to the place where I started from - // i.e. stepping back for the backupdist - // 2. move of backupdist in the opposite direction - // so mydist is the double of backupdist with opposite Sign - // //G4cout << " mydist : " << mydist << G4endl; - - if (abs(mydist) zero_tolerance); - - // Now I have the correct point BpointZ, BpointR stored... - //G4cout << " zone3 - hyp - returning: " << - //sqrt((ApointZ-BpointZ)*(ApointZ-BpointZ)+ - // (ApointR-BpointR)*(ApointR-BpointR)) << G4endl; - return sqrt((ApointZ-BpointZ)*(ApointZ-BpointZ)+ - (ApointR-BpointR)*(ApointR-BpointR)); - } - } - } - // zone 4a or 4b - if (pR<=(1+SURFACE_PRECISION)*endInnerRadius) - { // 4b - //G4cout << " zone 4b - returning: " << - // sqrt((ApointR-endInnerRadius)*(ApointR-endInnerRadius)+ - // (ApointZ-halfLenZ)*(ApointZ-halfLenZ)) << G4endl; - - return sqrt( - (ApointR-endInnerRadius)*(ApointR-endInnerRadius)+ - (ApointZ-halfLenZ)*(ApointZ-halfLenZ)); - } - else - { // 4a - //G4cout << " zone 4a - returning: " << - //sqrt((ApointR-endOuterRadius)*(ApointR-endOuterRadius)+ - // (ApointZ-halfLenZ)*(ApointZ-halfLenZ)) << G4endl; - - return sqrt( - (ApointR-endOuterRadius)*(ApointR-endOuterRadius)+ - (ApointZ-halfLenZ)*(ApointZ-halfLenZ)); - } -} - -//////////////////////////////////////////////////////////////////////// -// -// Calculate distance to surface of shape from `inside', allowing for tolerance - -G4double G4Hype::DistanceToOut(const G4ThreeVector& p,const G4ThreeVector& v, - const G4bool calcNorm, G4bool *validNorm,G4ThreeVector *n) const -{ - G4double snxt=kInfinity; // snxt = default return value - ESide side = kUndefined ; - double xi,yi,zi; // service parameters - double zero_tolerance=1E-6; - - if (calcNorm) *validNorm=true; // All normals are valid - *n=G4ThreeVector(0.,0.,0.); - //G4cout << "DistanceToOut(pt,dir): " << p << " " << v << G4endl; - //G4cout << "Surface Data " << outerRadius << G4endl; - - EInside Pp=Inside(p); - if (Pp==kOutside) - { - snxt=0.; - } - else - { - // Returns distance or kInfinity if there exists or not an intersection! - - // Calculate the distance from a point (p) - // to exit the Hype along a certain direction (v) - G4ThreeVector direction=v; - G4ThreeVector workPoint=p; - - // init various distance parameters - double distanceLeft= kInfinity; - double distanceRight=kInfinity; - double distanceInner=kInfinity; - double distanceOuter=kInfinity; - - // make direction a versor - direction=direction.unit(); - //G4cout << "direzione : " << direction << G4endl; - //G4cout << "workPoint : " << workPoint << G4endl; - - // line parameters - u vector - double ux=direction.x(); - double uy=direction.y(); - double uz=direction.z(); - - // point parameters - v point - double vx=workPoint.x(); - double vy=workPoint.y(); - double vz=workPoint.z(); - - // ==============================================================================// - // Calculate intersection point with endcaps - // First I have to check that uz is not within tolerance with zero! - - if (abs(uz)>=zero_tolerance) - { - // *left* (see docs) intersection z=-halfLenZ - double tLeft=(-halfLenZ-vz)/uz; - // //G4cout << tLeft << G4endl; - if (tLeft>0 || abs(tLeft)=(1-SURFACE_PRECISION)*endInnerRadius && - radiusL<=(1+SURFACE_PRECISION)*endOuterRadius) - { - distanceLeft=tLeft; - } - } - - // *right* (see docs) intersection z=halfLenZ - double tRight=(halfLenZ-vz)/uz; - // //G4cout << tRight << G4endl; - if (tRight>0 || abs(tRight)=(1-SURFACE_PRECISION)*endInnerRadius && - radiusR<=(1+SURFACE_PRECISION)*endOuterRadius) - { - distanceRight=abs(tRight); - } - } - - //G4cout << "tLeft, tRight : " << tLeft << " " << tRight << G4endl; - } - - // ==============================================================================// - - // Calculate intersections with hyperbolical surfaces - - double param1,param2; - - // Inner first! ==================================== - if (innerRadius!=0. || innerStereo !=0.) - { - param1=tanInnerStereo2; - param2=innerRadius2; - - double paramA=(ux*ux+uy*uy)-param1*uz*uz; - double paramB=(ux*vx+uy*vy)-param1*uz*vz; - double paramC=(vx*vx+vy*vy)-param1*vz*vz-param2; - - // intersection equation discriminant - double delta=paramB*paramB-paramA*paramC; - - if (delta>0 || abs(delta)0 || abs(solution1)0 || abs(solution2) cylindrical) - param1=tanOuterStereo2; - param2=outerRadius2; - - double paramA=(ux*ux+uy*uy)-param1*uz*uz; - double paramB=(ux*vx+uy*vy)-param1*uz*vz; - double paramC=(vx*vx+vy*vy)-param1*vz*vz-param2; - - // intersection equation discriminant - double delta=paramB*paramB-paramA*paramC; - //G4cout << "delta : " << delta << G4endl; - //G4cout << "A, B, C : " << paramA << " " << paramB << " " << paramC << G4endl; - - if (delta > 0 || abs(delta)0 || abs(solution1)0 || abs(solution2) distanceInner) - { - snxt=distanceInner; - side=innerFace; - } - if (snxt > distanceOuter) - { - snxt=distanceOuter; - side=outerFace; - } - - if (abs(distanceInner)0 && distanceOuter0 && distanceInner distanceRight) - { - snxt=distanceRight; - side=rightCap; - } - if (snxt > distanceLeft) - { - snxt=distanceLeft; - side=leftCap; - } - - // Done! - //G4cout << "distanze left, right, inner, outer :" << distanceLeft << " " - // << distanceRight << " " << distanceInner << " " << distanceOuter << G4endl; - - // normal calculation, where required. - // normal to EXIT the volume... - if (calcNorm) - { - switch(side) - { - case outerFace: - xi=vx+snxt*ux; - yi=vy+snxt*uy; - zi=vz+snxt*uz; - *n=G4ThreeVector(xi,yi,-zi*tanOuterStereo2).unit(); - //G4cout << "outerFace : " << *n << G4endl; - break; - - case innerFace: - xi=vx+snxt*ux; - yi=vy+snxt*uy; - zi=vx+snxt*uz; - *n=-G4ThreeVector(xi,yi,-zi*tanInnerStereo2).unit(); - //G4cout << "innerFace: " << *n << G4endl; - break; - - case leftCap: - *n=G4ThreeVector(0,0,-1); - //G4cout << "leftCap: " << *n << G4endl; - break; - - case rightCap: - *n=G4ThreeVector(0,0,1); - //G4cout << "rightCap: " << *n << G4endl; - break; - - default: *validNorm=false; - } - } - } - snxt+=zero_tolerance*halfLenZ; - //G4cout << "valore restituito: " << snxt << G4endl; - //G4cout << "*n = " << *n << G4endl; - return snxt; -} - -// Calculate distance (<=actual) to closest surface of shape from inside -G4double G4Hype::DistanceToOut(const G4ThreeVector& p) const -{ - - // I use the cylindrical simmetry of the system to optimize calculation - double zero_tolerance=1e-6; - double pZ=abs(p.z()); - double pR2=p.x()*p.x()+p.y()*p.y(); - double pR=sqrt(pR2); - - //G4cout << "pZ : " << pZ << " param: " << pZ/halfLenZ << " SP: " - // << SURFACE_PRECISION <=(1-SURFACE_PRECISION)*endInnerRadius) - { - distEndCap=abs(halfLenZ-pZ); - } - else - { - distEndCap=sqrt((halfLenZ-pZ)*(halfLenZ-pZ)+ - (pR-endInnerRadius)*(pR-endInnerRadius)); - } - - // special case: point with z=0 - if (pZzero_tolerance); - - // Now I have the correct point BpointZ, BpointR stored... - //distSurfac=sqrt((ApointZ-BpointZ)*(ApointZ-BpointZ)+ - // (ApointR-BpointR)*(ApointR-BpointR)); - //G4cout << "Hyperb, no inner surface, returning : " << - // (distSurfaczero_tolerance); - - // Now I have the correct point BpointZ, BpointR stored... - distSurfac=sqrt((ApointZ-BpointZ)*(ApointZ-BpointZ)+ - (ApointR-BpointR)*(ApointR-BpointR)); - //G4cout << "Hyp, with inner surface, outer is nearer, returning : " << - //(distSurfac=(1-SURFACE_PRECISION)*innerRadius && - pZ<=(1+SURFACE_PRECISION)*halfLenZ) - { - distSurfac=abs(pR-innerRadius); - //G4cout << "Cyl, with inner surface, inner is nearer, returning : " << - // (distSurfacinsert(pTransform.TransformPoint(vertex0)); - vertices->insert(pTransform.TransformPoint(vertex1)); - vertices->insert(pTransform.TransformPoint(vertex2)); - vertices->insert(pTransform.TransformPoint(vertex3)); - } - } - else - { - G4Exception("G4Hype::CreateRotatedVertices Out of memory - Cannot alloc vertices"); - } - return vertices; -} - -void G4Hype::DescribeYourselfTo (G4VGraphicsScene& scene) const -{ - scene.AddThis (*this); -} - -G4VisExtent G4Hype::GetExtent() const -{ - // Define the sides of the box into which the G4Hype instance would fit. - return G4VisExtent (-endOuterRadius, endOuterRadius, - -endOuterRadius, endOuterRadius, - -halfLenZ, halfLenZ); -} - -G4Polyhedron* G4Hype::CreatePolyhedron () const -{ - // return new G4PolyhedronHype (fRMin, fRMax, fDz, fSPhi, fDPhi); - return 0; -} - -G4NURBS* G4Hype::CreateNURBS () const -{ - return new G4NURBStube(endInnerRadius, endOuterRadius, halfLenZ); // Tube for now!!! -} diff --git a/source/geometry/solids/CSG/src/G4Para.cc b/source/geometry/solids/CSG/src/G4Para.cc index 56d8ced031..def1d5a2c3 100644 --- a/source/geometry/solids/CSG/src/G4Para.cc +++ b/source/geometry/solids/CSG/src/G4Para.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Para.cc,v 1.4 1999/12/15 14:50:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Para.cc,v 1.5 2000/04/11 16:04:28 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4Para // @@ -28,7 +28,6 @@ #include "G4Polyhedron.hh" #include "G4NURBS.hh" #include "G4NURBSbox.hh" -#include "G4VisExtent.hh" // Private enum: Not for external use @@ -1036,34 +1035,6 @@ G4ThreeVectorList* void G4Para::DescribeYourselfTo (G4VGraphicsScene& scene) const { scene.AddThis (*this); - // scene.AddThis (*this); -} - -G4VisExtent G4Para::GetExtent() const -{ - G4int i ; - G4double xMin,xMax,yMin,yMax ; - G4ThreeVector pt[8] ; - pt[0]=G4ThreeVector(-fDz*fTthetaCphi-fDy*fTalpha-fDx,-fDz*fTthetaSphi-fDy,-fDz); - pt[1]=G4ThreeVector(-fDz*fTthetaCphi-fDy*fTalpha+fDx,-fDz*fTthetaSphi-fDy,-fDz); - pt[2]=G4ThreeVector(-fDz*fTthetaCphi+fDy*fTalpha-fDx,-fDz*fTthetaSphi+fDy,-fDz); - pt[3]=G4ThreeVector(-fDz*fTthetaCphi+fDy*fTalpha+fDx,-fDz*fTthetaSphi+fDy,-fDz); - pt[4]=G4ThreeVector(+fDz*fTthetaCphi-fDy*fTalpha-fDx,+fDz*fTthetaSphi-fDy,+fDz); - pt[5]=G4ThreeVector(+fDz*fTthetaCphi-fDy*fTalpha+fDx,+fDz*fTthetaSphi-fDy,+fDz); - pt[6]=G4ThreeVector(+fDz*fTthetaCphi+fDy*fTalpha-fDx,+fDz*fTthetaSphi+fDy,+fDz); - pt[7]=G4ThreeVector(+fDz*fTthetaCphi+fDy*fTalpha+fDx,+fDz*fTthetaSphi+fDy,+fDz); - xMax = -fabs(fDz*fTthetaCphi)-fDx-fDx-fDx-fDx ; - xMin = -xMax ; - yMax = -fabs(fDz*fTthetaSphi)-fDy-fDy ; - yMin = -yMax ; - for(i=0;i<8;i++) - { - if(pt[i].x() > xMax) xMax = pt[i].x() ; - if(pt[i].x() < xMin) xMin = pt[i].x() ; - if(pt[i].y() > yMax) yMax = pt[i].y() ; - if(pt[i].y() < yMin) yMin = pt[i].y() ; - } - return G4VisExtent (xMin, xMax, yMin, yMax, -fDz, fDz); } G4Polyhedron* G4Para::CreatePolyhedron () const diff --git a/source/geometry/solids/CSG/src/G4Sphere.cc b/source/geometry/solids/CSG/src/G4Sphere.cc index 9031b61f83..1453ded1ab 100644 --- a/source/geometry/solids/CSG/src/G4Sphere.cc +++ b/source/geometry/solids/CSG/src/G4Sphere.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Sphere.cc,v 1.4 1999/12/15 14:50:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Sphere.cc,v 1.7 2000/04/11 16:04:28 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4Sphere // @@ -19,6 +19,8 @@ // 12.11.98 V.Grichine bug fixed in DistanceToIn(p,v), theta intersections // 25.11.98 V.Grichine bug fixed in DistanceToIn(p,v), phi intersections // 18.11.99 V.Grichine, side = kNull in Distance ToOut(p,v,...) +// 06.03.00 V.Grichine, modifications in Distance ToOut(p,v,...) +// // #include @@ -35,7 +37,6 @@ #include "G4Polyhedron.hh" #include "G4NURBS.hh" #include "G4NURBSbox.hh" -#include "G4VisExtent.hh" // Private enum: Not for external use - used by distanceToOut @@ -1772,82 +1773,79 @@ G4double G4Sphere::DistanceToOut(const G4ThreeVector& p, G4bool *validNorm, G4ThreeVector *n ) const { - G4double snxt = kInfinity; // snxt is default return value - G4double sphi= kInfinity,stheta= kInfinity; - ESide side=kNull,sidephi,sidetheta; + G4double snxt = kInfinity; // snxt is default return value + G4double sphi= kInfinity,stheta= kInfinity; + ESide side=kNull,sidephi,sidetheta; - G4double t1,t2; - G4double b,c,d; - // Vars for phi intersection: - G4double sinSPhi,cosSPhi,ePhi,sinEPhi,cosEPhi; - G4double cPhi,sinCPhi,cosCPhi; - G4double pDistS,compS,pDistE,compE,sphi2,vphi; + G4double t1,t2; + G4double b,c,d; + + // Variables for phi intersection: + + G4double sinSPhi,cosSPhi,ePhi,sinEPhi,cosEPhi; + G4double cPhi,sinCPhi,cosCPhi; + G4double pDistS,compS,pDistE,compE,sphi2,vphi; - G4double rho2,rad2,pDotV2d,pDotV3d,pTheta; + G4double rho2,rad2,pDotV2d,pDotV3d,pTheta; - G4double tolSTheta,tolETheta; - G4double xi,yi,zi; // Intersection point + G4double tolSTheta,tolETheta; + G4double xi,yi,zi; // Intersection point - // G4double Comp; // Phi intersection + // G4double Comp; // Phi intersection - G4bool segPhi; // Phi flag and precalcs - G4double hDPhi,hDPhiOT,hDPhiIT; - G4double cosHDPhiOT,cosHDPhiIT; + G4bool segPhi; // Phi flag and precalcs + G4double hDPhi,hDPhiOT,hDPhiIT; + G4double cosHDPhiOT,cosHDPhiIT; - G4bool segTheta; // Theta flag and precals - G4double tanSTheta,tanETheta, rhoSecTheta; - G4double tanSTheta2,tanETheta2; - G4double dist2STheta,dist2ETheta; - G4double d2,s; + G4bool segTheta; // Theta flag and precals + G4double tanSTheta,tanETheta, rhoSecTheta; + G4double tanSTheta2,tanETheta2; + G4double dist2STheta,dist2ETheta; + G4double d2,s; -// -// General Precalcs -// - rho2=p.x()*p.x()+p.y()*p.y(); - rad2=rho2+p.z()*p.z(); - pTheta=atan2(sqrt(rho2),p.z()); + // General Precalcs - pDotV2d=p.x()*v.x()+p.y()*v.y(); - pDotV3d=pDotV2d+p.z()*v.z(); + rho2=p.x()*p.x()+p.y()*p.y(); + rad2=rho2+p.z()*p.z(); + pTheta=atan2(sqrt(rho2),p.z()); + pDotV2d=p.x()*v.x()+p.y()*v.y(); + pDotV3d=pDotV2d+p.z()*v.z(); -// // Set phi divided flag and precalcs -// - if (fDPhi<2.0*M_PI) - { - segPhi=true; - hDPhi=0.5*fDPhi; // half delta phi - cPhi=fSPhi+hDPhi;; - hDPhiOT=hDPhi+0.5*kAngTolerance; // Outer Tolerant half delta phi - hDPhiIT=hDPhi-0.5*kAngTolerance; - sinCPhi=sin(cPhi); - cosCPhi=cos(cPhi); - cosHDPhiOT=cos(hDPhiOT); - cosHDPhiIT=cos(hDPhiIT); - } - else - { - segPhi=false; - } -// -// Theta precalcs -// - if (fDTheta 0) @@ -1862,13 +1860,16 @@ G4double G4Sphere::DistanceToOut(const G4ThreeVector& p, // // => s=-pDotV3d+-sqrt(pDotV3d^2-(rad2-R^2)) // + G4double Rmax_plus= fRmax+kRadTolerance*0.5; - G4double Rmin_minus= (fRmin>0) ? fRmin-kRadTolerance*0.5 : 0; - if(rad2<=Rmax_plus*Rmax_plus && rad2>=Rmin_minus*Rmin_minus) + G4double Rmin_minus= (fRmin>0) ? fRmin-kRadTolerance*0.5 : 0 ; + + if(rad2 <= Rmax_plus*Rmax_plus && rad2 >= Rmin_minus*Rmin_minus) { - c=rad2-fRmax*fRmax; - if (c rad2 < fRmax^2 + 2.*0.5*fRmax*kRadTol + 0.25*kRadTol*kRadTol // => rad2 - fRmax^2 <~ fRmax*kRadTol - d2=pDotV3d*pDotV3d-c; - if( (c>-kRadTolerance*fRmax) && // on tolerant surface - ((pDotV3d>=0) // leaving outside from Rmax - || (d2<0) )) // not re-entering - { - if(calcNorm) - { - *validNorm = true ; - *n = G4ThreeVector(p.x()/fRmax,p.y()/fRmax,p.z()/fRmax) ; - } - return snxt = 0; - } - else - { - snxt=-pDotV3d+sqrt(d2); // second root since inside Rmax - side = kRMax ; - } - } -// Inner spherical shell intersection -// - Always first >=0 root, because would have passed from outside -// of Rmin surface . + d2=pDotV3d*pDotV3d-c ; - if (fRmin) + if( (c >- kRadTolerance*fRmax) && // on tolerant surface + ( ( pDotV3d >=0 ) || (d2 < 0)) ) // leaving outside from Rmax + // not re-entering + { + if(calcNorm) { - c=rad2-fRmin*fRmin; - if (c>-kRadTolerance*fRmin) // 2.0 * (0.5*kRadTolerance) * fRmin - { - if(c=0) - { - s=-pDotV3d-sqrt(d2); - if (s>=0) // Always intersect Rmin first - { - snxt = s ; - side = kRMin ; - } - } - } - } + *validNorm = true ; + *n = G4ThreeVector(p.x()/fRmax,p.y()/fRmax,p.z()/fRmax) ; } - } -// -// Theta segment intersection -// - if (segTheta) + return snxt = 0; + } + else + { + snxt=-pDotV3d+sqrt(d2); // second root since inside Rmax + side = kRMax ; + } + } + +// Inner spherical shell intersection: +// Always first >=0 root, because would have passed from outside of Rmin surface . + + if (fRmin) + { + c=rad2-fRmin*fRmin ; + + if (c >- kRadTolerance*fRmin) // 2.0 * (0.5*kRadTolerance) * fRmin + { + if( c < kRadTolerance*fRmin && pDotV3d < 0 ) // leaving from Rmin { -// + if(calcNorm) + { + *validNorm = false ; // Rmin surface is concave + } + return snxt = 0 ; + } + else + { + d2=pDotV3d*pDotV3d-c ; + + if (d2 >= 0) + { + s = -pDotV3d-sqrt(d2) ; + + if (s>=0) // Always intersect Rmin first + { + snxt = s ; + side = kRMin ; + } + } + } + } + } + } + +// Theta segment intersection + + if (segTheta) + { + // Intersection with theta surfaces // -// // Known failure cases: // o Inside tolerance of stheta surface, skim // ~parallel to cone and Hit & enter etheta surface [& visa versa] @@ -1959,497 +1963,526 @@ G4double G4Sphere::DistanceToOut(const G4ThreeVector& p, // => s^2(1-vz^2(1+tan^2(t))+2s(pdotv2d-pzvztan^2(t))+(rho2-pz^2tan^2(t))=0 // - tanSTheta=tan(fSTheta); - tanSTheta2=tanSTheta*tanSTheta; - tanETheta=tan(fSTheta+fDTheta); - tanETheta2=tanETheta*tanETheta; + tanSTheta=tan(fSTheta); + tanSTheta2=tanSTheta*tanSTheta; + tanETheta=tan(fSTheta+fDTheta); + tanETheta2=tanETheta*tanETheta; - if (fSTheta) - { - dist2STheta=rho2-p.z()*p.z()*tanSTheta2; - } - else - { - dist2STheta=kInfinity; - } - if (fSTheta+fDTheta < M_PI) - { - dist2ETheta=rho2-p.z()*p.z()*tanETheta2; - } - else - { - dist2ETheta=kInfinity; - } - - if (pTheta>tolSTheta && pTheta tolSTheta && pTheta < tolETheta) // Inside theta + { // In tolerance of STheta and possible leaving out to small thetas N- - if(pThetakAngTolerance) - { - t2=pDotV2d-p.z()*v.z()*tanSTheta2; // =(VdotN+)*rhoSecSTheta - if(fSTheta kAngTolerance) + { + t2=pDotV2d-p.z()*v.z()*tanSTheta2 ; // =(VdotN+)*rhoSecSTheta + + if( fSTheta < M_PI*0.5 && t2 < 0) + { if(calcNorm) *validNorm = false ; return snxt = 0 ; - } - else if(fSTheta>M_PI*0.5 && t2>=0) - { - if(calcNorm) - { - rhoSecTheta = sqrt(rho2*(1+tanSTheta2)) ; - *validNorm = true ; - *n = G4ThreeVector(-p.x()/rhoSecTheta, // N- - -p.y()/rhoSecTheta, - tanSTheta/sqrt(1+tanSTheta2)) ; - } - return snxt = 0 ; - } - else if(fSTheta==M_PI*0.5 && v.z()>0) - { - if(calcNorm) - { + } + else if(fSTheta > M_PI*0.5 && t2 >= 0) + { + if(calcNorm) + { + rhoSecTheta = sqrt(rho2*(1+tanSTheta2)) ; + *validNorm = true ; + *n = G4ThreeVector(-p.x()/rhoSecTheta, // N- + -p.y()/rhoSecTheta, + tanSTheta/sqrt(1+tanSTheta2) ) ; + } + return snxt = 0 ; + } + else if( fSTheta == M_PI*0.5 && v.z() > 0) + { + if(calcNorm) + { *validNorm = true ; *n = G4ThreeVector(0,0,1) ; - } - return snxt = 0 ; - } - } -// In tolerance of ETheta and possible leaving out to larger thetas N+ - if( pTheta>tolETheta-kAngTolerance - && (fSTheta+fDTheta)M_PI*0.5 && t2<0) - { - if(calcNorm) *validNorm = false ; - return snxt = 0 ; - } - else if((fSTheta+fDTheta)=0) - { - if(calcNorm) - { - rhoSecTheta = sqrt(rho2*(1+tanETheta2)) ; - *validNorm = true ; - *n = G4ThreeVector(p.x()/rhoSecTheta, // N+ - p.y()/rhoSecTheta, - -tanETheta/sqrt(1+tanETheta2)) ; - } - return snxt = 0 ; - } - else if((fSTheta+fDTheta)==M_PI*0.5 && v.z()<0) - { - if(calcNorm) - { - *validNorm = true ; - *n = G4ThreeVector(0,0,-1) ; - } - return snxt = 0 ; - } - } - if(fSTheta>0) - { - -// First root of fSTheta cone, second if first root -ve - t1=1-v.z()*v.z()*(1+tanSTheta2); - t2=pDotV2d-p.z()*v.z()*tanSTheta2; - - b=t2/t1; - c=dist2STheta/t1; - d2=b*b-c; - if (d2>=0) - { - d=sqrt(d2); - s=-b-d; // First root - if (s<0) - { - s=-b+d; // Second root - } - if (s>kRadTolerance*0.5) // && s=0) - { - d=sqrt(d2); - s=-b-d; // First root - if (s<0) - { - s=-b+d; // Second root - } - if (s>kRadTolerance*0.5 && s tolETheta - kAngTolerance && + ( fSTheta + fDTheta) < M_PI - kAngTolerance ) + { + t2=pDotV2d-p.z()*v.z()*tanETheta2 ; -// -// Phi Intersection -// - - if (fDPhi<2.0*M_PI) + if((fSTheta+fDTheta)>M_PI*0.5 && t2<0) { - sinSPhi=sin(fSPhi); - cosSPhi=cos(fSPhi); - ePhi=fSPhi+fDPhi; - sinEPhi=sin(ePhi); - cosEPhi=cos(ePhi); - cPhi=fSPhi+fDPhi*0.5; - sinCPhi=sin(cPhi); - cosCPhi=cos(cPhi); + if(calcNorm) *validNorm = false ; + return snxt = 0 ; + } + else if( (fSTheta+fDTheta) < M_PI*0.5 && t2 >= 0 ) + { + if(calcNorm) + { + rhoSecTheta = sqrt(rho2*(1+tanETheta2)) ; + *validNorm = true ; + *n = G4ThreeVector( p.x()/rhoSecTheta, // N+ + p.y()/rhoSecTheta, + -tanETheta/sqrt(1+tanETheta2) ) ; + } + return snxt = 0 ; + } + else if( ( fSTheta+fDTheta) == M_PI*0.5 && v.z() < 0 ) + { + if(calcNorm) + { + *validNorm = true ; + *n = G4ThreeVector(0,0,-1) ; + } + return snxt = 0 ; + } + } + if( fSTheta > 0 ) + { +// First root of fSTheta cone, second if first root -ve -// Check if on z axis (rho not needed later) - if (p.x()||p.y()) - { -// pDist -ve when inside - pDistS=p.x()*sinSPhi-p.y()*cosSPhi; - pDistE=-p.x()*sinEPhi+p.y()*cosEPhi; -// Comp -ve when in direction of outwards normal - compS=-sinSPhi*v.x()+cosSPhi*v.y(); - compE=sinEPhi*v.x()-cosEPhi*v.y(); - sidephi=kNull; - - if (pDistS<=0&&pDistE<=0) - { -// Inside both phi *full* planes - if (compS<0) - { - sphi=pDistS/compS; - xi=p.x()+sphi*v.x(); - yi=p.y()+sphi*v.y(); -// Check intersecting with correct half-plane (if not -> no intersect) - if ((yi*cosCPhi-xi*sinCPhi)>=0) - { - sphi=kInfinity; - } - else - { - sidephi=kSPhi; - if (pDistS>-kCarTolerance/2) - sphi=0; - // Leave by sphi immediately - } - } - else sphi=kInfinity; - - if (compE<0) - { - sphi2=pDistE/compE; -// Only check further if < starting phi intersection - if (sphi2=0) - { -// Leaving via ending phi - sidephi=kEPhi; - if (pDistE<=-kCarTolerance/2) - { - sphi=sphi2; - } - else - { - sphi=0; - } - } - } - } - - } - else if (pDistS>=0&&pDistE>=0) - { -// Outside both *full* phi planes - if (pDistS <= pDistE) - { - sidephi = kSPhi ; - } - else - { - sidephi = kEPhi ; - } - if (fDPhi>M_PI) - { - if (compS<0&&compE<0) sphi=0; - else sphi=kInfinity; - } - else - { -// if towards both >=0 then once inside (after error) will remain inside - if (compS>=0&&compE>=0) - { - sphi=kInfinity; - } - else - { - sphi=0; - } - } - - } - else if (pDistS>0&&pDistE<0) - { -// Outside full starting plane, inside full ending plane - if (fDPhi>M_PI) - { - if (compE<0) - { - sphi=pDistE/compE; - xi=p.x()+sphi*v.x(); - yi=p.y()+sphi*v.y(); -// Check intersection in correct half-plane (if not -> not leaving phi extent) - if ((yi*cosCPhi-xi*sinCPhi)<=0) - { - sphi=kInfinity; - } - else - { -// Leaving via Ending phi - sidephi = kEPhi ; - if (pDistE>-kCarTolerance/2) - sphi=0; - } - } - else - { - sphi=kInfinity; - } - } - else - { - if (compS>=0) - { - if (compE<0) - { - - sphi=pDistE/compE; - xi=p.x()+sphi*v.x(); - yi=p.y()+sphi*v.y(); -// Check intersection in correct half-plane (if not -> remain in extent) - if ((yi*cosCPhi-xi*sinCPhi)<=0) - { - sphi=kInfinity; - } - else - { -// otherwise leaving via Ending phi - sidephi=kEPhi; - } - } - else sphi=kInfinity; - } - else - { -// leaving immediately by starting phi - sidephi=kSPhi; - sphi=0; - } - } - } - else - { -// Must be pDistS<0&&pDistE>0 -// Inside full starting plane, outside full ending plane - if (fDPhi>M_PI) - { - if (compS<0) - { - sphi=pDistS/compS; - xi=p.x()+sphi*v.x(); - yi=p.y()+sphi*v.y(); -// Check intersection in correct half-plane (if not -> not leaving phi extent) - if ((yi*cosCPhi-xi*sinCPhi)>=0) - { - sphi=kInfinity; - } - else - { -// Leaving via Starting phi - sidephi = kSPhi ; - if (pDistS>-kCarTolerance/2) - sphi=0; - } - } - else - { - sphi=kInfinity; - } - } - else - { - if (compE>=0) - { - if (compS<0) - { - - sphi=pDistS/compS; - xi=p.x()+sphi*v.x(); - yi=p.y()+sphi*v.y(); -// Check intersection in correct half-plane (if not -> remain in extent) - if ((yi*cosCPhi-xi*sinCPhi)>=0) - { - sphi=kInfinity; - } - else - { -// otherwise leaving via Starting phi - sidephi=kSPhi; - } - } - else - { - sphi=kInfinity; - } - } - else - { -// leaving immediately by ending - sidephi=kEPhi; - sphi=0; - } - } - } + t1 = 1-v.z()*v.z()*(1+tanSTheta2); + t2 = pDotV2d-p.z()*v.z()*tanSTheta2; - } + b = t2/t1; + c = dist2STheta/t1; + d2 = b*b - c ; + + if ( d2 >= 0 ) + { + d = sqrt(d2) ; + s = -b - d ; // First root + + if ( s < 0 ) + { + s = -b + d ; // Second root + } + if (s > kRadTolerance*0.5 ) // && s= 0 ) + { + d = sqrt(d2); + s = -b - d ; // First root + + if ( s < 0 ) + { + s=-b+d; // Second root + } + if (s > kRadTolerance*0.5 && s < stheta ) + { + stheta = s ; + sidetheta = kETheta ; + } + } + } + } + } + + // Phi Intersection + + if ( fDPhi < 2.0*M_PI) + { + sinSPhi=sin(fSPhi); + cosSPhi=cos(fSPhi); + ePhi=fSPhi+fDPhi; + sinEPhi=sin(ePhi); + cosEPhi=cos(ePhi); + cPhi=fSPhi+fDPhi*0.5; + sinCPhi=sin(cPhi); + cosCPhi=cos(cPhi); + + if (p.x()||p.y()) // Check if on z axis (rho not needed later) + { +// pDist -ve when inside + + pDistS=p.x()*sinSPhi-p.y()*cosSPhi; + pDistE=-p.x()*sinEPhi+p.y()*cosEPhi; + +// Comp -ve when in direction of outwards normal + + compS = -sinSPhi*v.x()+cosSPhi*v.y() ; + compE = sinEPhi*v.x()-cosEPhi*v.y() ; + sidephi = kNull ; + + if ( pDistS <= 0 && pDistE <= 0 ) + { +// Inside both phi *full* planes + + if ( compS < 0 ) + { + sphi = pDistS/compS ; + xi = p.x()+sphi*v.x() ; + yi = p.y()+sphi*v.y() ; + +// Check intersecting with correct half-plane (if not -> no intersect) + + if ( ( yi*cosCPhi - xi*sinCPhi ) >= 0 ) + { + sphi=kInfinity; + } + else + { + sidephi = kSPhi ; + + if ( pDistS > -0.5*kCarTolerance) sphi =0 ; // Leave by sphi + } + } + else sphi = kInfinity ; + + if ( compE < 0 ) + { + sphi2=pDistE/compE ; + + if (sphi2 < sphi) // Only check further if < starting phi intersection + { + xi = p.x()+sphi2*v.x() ; + yi = p.y()+sphi2*v.y() ; + +// Check intersecting with correct half-plane + + if ((yi*cosCPhi-xi*sinCPhi)>=0) // Leaving via ending phi + { + sidephi = kEPhi ; + + if ( pDistE <= -0.5*kCarTolerance ) + { + sphi=sphi2; + } + else + { + sphi = 0 ; + } + } + } + } + } + else if ( pDistS >= 0 && pDistE >= 0 ) // Outside both *full* phi planes + { + if ( pDistS <= pDistE ) + { + sidephi = kSPhi ; + } + else + { + sidephi = kEPhi ; + } + if ( fDPhi > M_PI ) + { + if ( compS < 0 && compE < 0 ) sphi = 0 ; + else sphi = kInfinity ; + } + else + { +// if towards both >=0 then once inside (after error) will remain inside + + if ( compS >= 0 && compE >= 0 ) + { + sphi=kInfinity; + } + else + { + sphi=0; + } + } + } + else if ( pDistS > 0 && pDistE < 0 ) + { +// Outside full starting plane, inside full ending plane + + if ( fDPhi > M_PI ) + { + if ( compE < 0 ) + { + sphi = pDistE/compE ; + xi = p.x() + sphi*v.x() ; + yi = p.y() + sphi*v.y() ; + +// Check intersection in correct half-plane (if not -> not leaving phi extent) + + if ( ( yi*cosCPhi - xi*sinCPhi ) <= 0 ) + { + sphi = kInfinity ; + } + else // Leaving via Ending phi + { + sidephi = kEPhi ; + + if ( pDistE > -0.5*kCarTolerance ) sphi = 0. ; + } + } + else + { + sphi = kInfinity ; + } + } + else + { + if ( compS >= 0 ) + { + if ( compE < 0 ) + { + sphi = pDistE/compE ; + xi = p.x() + sphi*v.x() ; + yi = p.y() + sphi*v.y() ; + +// Check intersection in correct half-plane (if not -> remain in extent) + + if ( ( yi*cosCPhi - xi*sinCPhi) <= 0 ) + { + sphi=kInfinity; + } + else // otherwise leaving via Ending phi + { + sidephi = kEPhi ; + } + } + else sphi=kInfinity; + } + else // leaving immediately by starting phi + { + sidephi = kSPhi ; + sphi = 0 ; + } + } + } + else + { +// Must be pDistS < 0 && pDistE > 0 +// Inside full starting plane, outside full ending plane + + if ( fDPhi > M_PI ) + { + if ( compS < 0 ) + { + sphi=pDistS/compS; + xi=p.x()+sphi*v.x(); + yi=p.y()+sphi*v.y(); + +// Check intersection in correct half-plane (if not -> not leaving phi extent) + + if ( ( yi*cosCPhi - xi*sinCPhi ) >= 0 ) + { + sphi = kInfinity ; + } + else // Leaving via Starting phi + { + sidephi = kSPhi ; + + if ( pDistS > -0.5*kCarTolerance ) sphi = 0 ; + } + } + else + { + sphi = kInfinity ; + } + } + else + { + if ( compE >= 0 ) + { + if ( compS < 0 ) + { + + sphi = pDistS/compS ; + xi = p.x()+sphi*v.x() ; + yi = p.y()+sphi*v.y() ; + +// Check intersection in correct half-plane (if not -> remain in extent) + + if ( ( yi*cosCPhi - xi*sinCPhi ) >= 0 ) + { + sphi = kInfinity ; + } + else // otherwise leaving via Starting phi + { + sidephi = kSPhi ; + } + } else - { + { + sphi = kInfinity ; + } + } + else // leaving immediately by ending + { + sidephi = kEPhi ; + sphi = 0 ; + } + } + } + } + else + { // On z axis + travel not || to z axis -> if phi of vector direction // within phi of shape, Step limited by rmax, else Step =0 - if ( v.x() || v.y() ) - { - vphi=atan2(v.y(),v.x()); + if ( v.x() || v.y() ) + { + vphi = atan2(v.y(),v.x()) ; - if ( fSPhi < vphi && vphi < fSPhi+fDPhi ) - { - sphi=kInfinity; - } - else - { - sidephi = kSPhi ; // arbitrary - sphi=0; - } - } - else // travel along z - no phi intersaction - { - sphi = kInfinity ; - } - } - -// Order intersecttions - if (sphiM_PI) - { - xi=p.x()+snxt*v.x(); - yi=p.y()+snxt*v.y(); - rhoSecTheta = sqrt((xi*xi+yi*yi)*(1+tanSTheta2)) ; - *n = G4ThreeVector(-xi/rhoSecTheta, // N- - -yi/rhoSecTheta, - tanSTheta/sqrt(1+tanSTheta2)) ; - *validNorm=true; - } - else - { - *validNorm=false; // Concave STheta cone - } - break; - case kETheta: - if((fSTheta+fDTheta)==M_PI*0.5) - { - *n=G4ThreeVector(0,0,-1); - *validNorm=true; - } - else if ((fSTheta+fDTheta) M_PI ) + { + xi=p.x()+snxt*v.x(); + yi=p.y()+snxt*v.y(); + rhoSecTheta = sqrt((xi*xi+yi*yi)*(1+tanSTheta2)) ; + *n = G4ThreeVector(-xi/rhoSecTheta, // N- + -yi/rhoSecTheta, + tanSTheta/sqrt(1+tanSTheta2)) ; + *validNorm=true; + } + else *validNorm=false; // Concave STheta cone + break; + + case kETheta: + + if( ( fSTheta + fDTheta ) == M_PI*0.5 ) + { + *n = G4ThreeVector(0,0,-1); + *validNorm = true ; + } + else if ( ( fSTheta + fDTheta ) < M_PI ) + { + xi=p.x()+snxt*v.x(); + yi=p.y()+snxt*v.y(); + rhoSecTheta = sqrt((xi*xi+yi*yi)*(1+tanETheta2)) ; + *n = G4ThreeVector( xi/rhoSecTheta, // N+ + yi/rhoSecTheta, + -tanSTheta/sqrt(1+tanSTheta2)) ; + *validNorm=true; + } + else *validNorm=false; // Concave ETheta cone + break; + + default: + + G4cout.precision(16); + G4cout << G4endl; + G4cout << "Sphere parameters:" << G4endl << G4endl; + G4cout << "fRmin = " << fRmin/mm << " mm" << G4endl; + G4cout << "fRmax = " << fRmax/mm << " mm" << G4endl; + G4cout << "fSPhi = " << fSPhi/degree << " degree" << G4endl; + G4cout << "fDPhi = " << fDPhi/degree << " degree" << G4endl; + G4cout << "fSTheta = " << fSTheta/degree << " degree" << G4endl; + G4cout << "fDTheta = " << fDTheta/degree << " degree" << G4endl << G4endl; + 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; + G4cout << "Proposed distance :" << G4endl << G4endl; + G4cout << "snxt = " << snxt/mm << " mm" << G4endl << G4endl; + + G4Exception("Invalid enum in G4Sphere::DistanceToOut"); + break; + } + } + return snxt; } ///////////////////////////////////////////////////////////////////////// @@ -2674,12 +2707,6 @@ void G4Sphere::DescribeYourselfTo (G4VGraphicsScene& scene) const scene.AddThis (*this); } -G4VisExtent G4Sphere::GetExtent() const -{ - // Define the sides of the box into which the G4Sphere instance would fit. - return G4VisExtent (-fRmax, fRmax, -fRmax, fRmax, -fRmax, fRmax); -} - G4Polyhedron* G4Sphere::CreatePolyhedron () const { return new G4PolyhedronSphere (fRmin, fRmax, diff --git a/source/geometry/solids/CSG/src/G4Torus.cc b/source/geometry/solids/CSG/src/G4Torus.cc index 192d21f97e..6d3110d67d 100644 --- a/source/geometry/solids/CSG/src/G4Torus.cc +++ b/source/geometry/solids/CSG/src/G4Torus.cc @@ -5,17 +5,21 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Torus.cc,v 1.4 1999/12/15 14:50:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Torus.cc,v 1.9 2000/06/22 09:24:00 grichine Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4Torus // // Implementation // -// 30.10.96 V. Grichine First implementation with G4Tubs elements in Fs -// 09.10.98 V. Grichine modifications in Distance ToOut(p,v,...) -// 19.11.99 V. Grichine side = kNull in Distance ToOut(p,v,...) +// 30.10.96 V.Grichine First implementation with G4Tubs elements in Fs +// 09.10.98 V.Grichine modifications in Distance ToOut(p,v,...) +// 19.11.99 V.Grichine side = kNull in Distance ToOut(p,v,...) +// 06.03.00 V.Grichine, modifications in Distance ToOut(p,v,...) +// 26.05.00 V.Grichine, new fuctions developed by O.Cremonesi were added +// + #include "G4Torus.hh" @@ -32,7 +36,6 @@ #include "G4NURBStube.hh" #include "G4NURBScylinder.hh" #include "G4NURBStubesector.hh" -#include "G4VisExtent.hh" /////////////////////////////////////////////////////////////// @@ -59,61 +62,50 @@ G4Torus::SetAllParameters( G4double pSPhi, G4double pDPhi) { -// Check swept radius - if (pRtor>=pRmax) - { - fRtor=pRtor; - } - else - { - G4Exception("Error in G4Torus::SetAllParameters - invalid swept radius"); - } + if ( pRtor >= pRmax + kCarTolerance ) // Check swept radius + { + fRtor = pRtor ; + } + else + { + G4Exception("Error in G4Torus::SetAllParameters - invalid swept radius"); + } // Check radii - if (pRmin=0) - { - fRmin=pRmin; fRmax=pRmax; - } - else - { - G4Exception("Error in G4Torus::SetAllParameters - invalid radii"); - } + if (pRmin < pRmax - 2*kCarTolerance && pRmin >= 0 ) + { + if (pRmin >= kCarTolerance) fRmin = pRmin ; + else fRmin = 0.0 ; + + fRmax = pRmax ; + } + else + { + G4Exception("Error in G4Torus::SetAllParameters - invalid radii"); + } // Check angles - if (pDPhi>=2.0*M_PI) - { - fDPhi=2*M_PI; - } + + if ( pDPhi >= 2.0*M_PI ) fDPhi = 2*M_PI ; + else + { + if (pDPhi > 0) fDPhi = pDPhi ; else { - if (pDPhi>0) - { - fDPhi = pDPhi; - } - else - { - G4Exception("Error in G4Torus::SetAllParameters - invalid dphi"); - } + G4Exception("Error in G4Torus::SetAllParameters - invalid dphi"); } + } // Ensure psphi in 0-2PI or -2PI-0 range if shape crosses 0 - fSPhi = pSPhi; + fSPhi = pSPhi; - if (fSPhi<0) - { - fSPhi=2.0*M_PI-fmod(fabs(fSPhi),2.0*M_PI); - } - else - { - fSPhi=fmod(fSPhi,2.0*M_PI); - } + if (fSPhi < 0) fSPhi = 2.0*M_PI - fmod(fabs(fSPhi), 2.0*M_PI) ; - if (fSPhi+fDPhi>2.0*M_PI) - { - fSPhi-=2.0*M_PI; - } + else fSPhi = fmod(fSPhi, 2.0*M_PI) ; + + if (fSPhi+fDPhi > 2.0*M_PI) fSPhi -= 2.0*M_PI ; } ////////////////////////////////////////////////////////////////////// @@ -184,6 +176,30 @@ G4int G4Torus::TorusRoots( G4double Ri, else G4cout<<"All real roots are negative"<=0 roots + { + if(s[i]<0) + { + for(j=i+1;j=0 && s[i]>sub) + while( i >= 0 && s[i] > sub ) { - s[i+1] = s[i--] ; + i-- ; + s[i+1] = s[i] ; // s[i--] ; } s[i+1] = sub ; } @@ -381,9 +399,9 @@ G4int G4Torus::SolveCubic(double c[], double s[] ) const p3 = p*p*p; D = q*q + p3; - if (D==0) + if (D == 0) { - if (q==0) // one triple solution + if (q == 0) // one triple solution { s[ 0 ] = 0; num = 1; @@ -426,6 +444,247 @@ G4int G4Torus::SolveCubic(double c[], double s[] ) const return num; } +// --------------------------------------------------------------------- + +G4int G4Torus::SolveBiQuadraticNew(double c[], double s[] ) const +{ +// From drte4 by McLareni; rewritten by O.Cremonesi + + G4double coeffs[ 4 ]; + G4double w1, w2, w3; + G4double z, u, v, sub; + G4double A, B, C, D; + G4double A2, p, q, r ; + G4int i,j, num; + + // normal form: x^4 + Ax^3 + Bx^2 + Cx + D = 0 + + A = c[ 3 ]; // c[ 4 ]; since always c[4]==1 ! + B = c[ 2 ]; // c[ 4 ]; + C = c[ 1 ]; // c[ 4 ]; + D = c[ 0 ]; // c[ 4 ]; + + if( B==0 && C==0 ) + { + if( D==0 ) + { + s[0] = -A; + s[1] = s[2] = s[3] = 0; + return 4; + } + } + else if( A==0 ) + { + if( D>0 ) return 0; + else + { + s[0] = sqrt( sqrt( -D ) ); + s[1] = -s[0]; + return 2; + } + } + + // substitute x = y - A/4 to eliminate cubic term: + // y^4 + py^2 + qy + r = 0 + + A2 = A*A; + p = B - 3.0*A2/8.0; + q = C - 0.5*A*( B-A2/4.0 ); + r = D - (A*C-A2/4.0*(B-A2*3.0/16.0))/4.0; + coeffs[ 0 ] = -q*q/64.; + coeffs[ 1 ] = (p*p/4.0-r)/4.0; + coeffs[ 2 ] = p/2.0; + coeffs[ 3 ] = 1; + + G4double cubic_discr; + num = SolveCubicNew(coeffs, s, cubic_discr); + + sub = A/4.0; + num = 0; + + if( cubic_discr == 0 ) s[2] = s[1]; + + if( cubic_discr <= 0 ) + { + num = 4; + G4double v[3]; + G4double vm1 = -1.0e99, vm2 ; + for( i=0; i<3; i++ ) + { + v[i] = fabs( s[i] ) ; + if( v[i] > vm1 ) vm1 = v[i] ; + } + if( vm1 == v[0] ) + { + i = 0; + if( v[1] > v[2] ) vm2 = v[1]; + else vm2 = v[2]; + } + else if( vm1 == v[1] ) + { + i = 1; + if( v[0] > v[2] ) vm2 = v[0]; + else vm2 = v[2]; + } + else + { + i = 2; + if( v[0] > v[1] ) vm2 = v[0]; + else vm2 = v[1]; + } + if( vm2 == v[0] ) j = 0 ; + else if( vm2 == v[1] ) j = 1 ; + else j = 2 ; + + w1 = sqrt( s[i] ); + w2 = sqrt( s[j] ); + } + else + { + num = 2; + w1 = w2 = sqrt( s[1] ); + } + if( w1*w2 != 0. ) w3 = -q/( 8.0*w1*w2 ) ; + else w3 = 0.0 ; + + if( num == 4 ) + { + s[0] = w1 + w2 + w3 - sub ; + s[1] = -w1 - w2 + w3 - sub ; + s[2] = -w1 + w2 - w3 - sub ; + s[3] = w1 - w2 - w3 - sub ; + } + else if( num == 2 ) + { + s[0] = w1 + w2 + w3 - sub ; + s[1] = -w1 - w2 + w3 - sub ; + } + return num ; +} + +// ------------------------------------------------------------------------- + +G4int G4Torus::SolveCubicNew(double c[], double s[], double& cubic_discr ) const +{ +// From drte3 by McLareni; rewritten by O.Cremonesi + const G4double eps = 1.e-6; + const G4double delta = 1.e-15; + G4int i, j, num; + G4double sub; + G4double y[3], z[3]; + G4double A, B, C; + G4double A2, p, q; + G4double p3, D; + G4double h1,h2,h3; + G4double u,v; + + // normal form: x^3 + Ax^2 + Bx + C = 0 + + A = c[ 2 ]; // c[ 3 ]; since always c[3]==1 ! + B = c[ 1 ]; // c[ 3 ]; + C = c[ 0 ]; // c[ 3 ]; + + if( B==0 && C==0 ) + { + s[0] = -A; + s[1] = s[2] = 0.; + cubic_discr = 0.; + return 3; + } + A2 = A*A; + p = B - A2/3.0; + q = ( A2*2.0/27.-B/3.0 )*A + C; + cubic_discr = q*q/4.0 + p*p*p/27.0; + sub = A/3.0; + h1 = q/2.0; + + if( cubic_discr > delta ) + { + h2 = sqrt( cubic_discr ); + u = -h1+h2; + v = -h1-h2; + if( u < 0 ) u = -cbrt(-u); + else u = cbrt(u); + if( v < 0 ) v = -cbrt(-v); + else v = cbrt(v); + s[0] = u+v-sub; + s[1] = -(u+v)/2.0-sub; + s[2] = fabs(u-v)*sqrt(3.0)/2.0; + if( fabs(u) <= eps || fabs(v) <= eps ) + { + y[0] = s[0] ; + + for( i=0; i<2; i++ ) + { + y[i+1] = y[i] - (((y[i]+A)*y[i]+B)*y[i]+C)/((3.*y[i]+2.*A)*y[i]+B); + } + s[0] = y[2]; + return 1; + } + } + else if( fabs(cubic_discr) <= delta ) + { + cubic_discr = 0.; + + if( h1 < 0 ) u = cbrt(-h1); + else u = -cbrt(h1); + + s[0] = u + u - sub ; + s[1] = -u - sub ; + s[2] = s[1] ; + + if( fabs(h1) <= eps ) + { + y[0] = s[0]; + for( i=0; i<2; i++ ) + { + h1 = (3.0*y[i]+2.*A)*y[i]+B; + + if( fabs(h1) > delta ) y[i+1] = y[i]-(((y[i]+A)*y[i]+B)*y[i]+C)/h1; + else + { + s[0] = s[1] = s[2] = -A/3.; + return 3; + } + } + s[0] = y[2]; + s[1] = s[2] = -(A+s[0])/2.; + return 3; + } + } + else + { + h3 =fabs(p/3.); + h3 = sqrt(h3*h3*h3); + h2 = acos(-h1/h3)/3.; + h1 = cbrt(h3); + u = h1*cos(h2); + v = sqrt(3.)*h1*sin(h2); + s[0] = u+u-sub; + s[1] = -u-v-sub; + s[2] = -u+v-sub; + + if( h3 <= eps || s[0] <=eps || s[1] <= eps || s[2] <= eps ) + { + for( i=0; i<3; i++ ) + { + y[0] = s[i] ; + + for( j=0; j<2; j++ ) + { + y[j+1] = y[j]-(((y[j]+A)*y[j]+B)*y[j]+C)/((3.*y[j]+2.*A)*y[j]+B); + } + s[i] = y[2] ; + } + } + } + return 3; +} + + + + + /////////////////////////////////////////////////////////////////////////// // // Auxiliary method for solving quadratic equations in real numbers @@ -467,205 +726,196 @@ G4bool G4Torus::CalculateExtent(const EAxis pAxis, const G4AffineTransform& pTransform, G4double& pMin, G4double& pMax) const { - if (!pTransform.IsRotated()&&fDPhi==2.0*M_PI&&fRmin==0) - { + if (!pTransform.IsRotated() && fDPhi==2.0*M_PI && fRmin==0) + { // Special case handling for unrotated solid torus // Compute x/y/z mins and maxs for bounding box respecting limits, // with early returns if outside limits. Then switch() on pAxis, // and compute exact x and y limit for x/y case - G4double xoffset,xMin,xMax; - G4double yoffset,yMin,yMax; - G4double zoffset,zMin,zMax; + G4double xoffset,xMin,xMax; + G4double yoffset,yMin,yMax; + G4double zoffset,zMin,zMax; - G4double diff1,diff2,maxDiff,newMin,newMax; - G4double xoff1,xoff2,yoff1,yoff2; + G4double diff1,diff2,maxDiff,newMin,newMax; + G4double xoff1,xoff2,yoff1,yoff2; - xoffset=pTransform.NetTranslation().x(); - xMin=xoffset-fRmax-fRtor; - xMax=xoffset+fRmax+fRtor; - if (pVoxelLimit.IsXLimited()) - { - if (xMin>pVoxelLimit.GetMaxXExtent()+kCarTolerance - ||xMaxpVoxelLimit.GetMaxXExtent()) - { - xMax=pVoxelLimit.GetMaxXExtent(); - } - } - } + xoffset = pTransform.NetTranslation().x(); + xMin = xoffset - fRmax - fRtor ; + xMax = xoffset + fRmax + fRtor ; - yoffset=pTransform.NetTranslation().y(); - yMin=yoffset-fRmax-fRtor; - yMax=yoffset+fRmax+fRtor; - if (pVoxelLimit.IsYLimited()) - { - if (yMin>pVoxelLimit.GetMaxYExtent()+kCarTolerance - ||yMaxpVoxelLimit.GetMaxYExtent()) - { - yMax=pVoxelLimit.GetMaxYExtent(); - } - } - } + if (pVoxelLimit.IsXLimited()) + { + if (xMin > pVoxelLimit.GetMaxXExtent()+kCarTolerance || + xMax < pVoxelLimit.GetMinXExtent()-kCarTolerance) return false ; + else + { + if (xMin < pVoxelLimit.GetMinXExtent()) + { + xMin = pVoxelLimit.GetMinXExtent() ; + } + if (xMax > pVoxelLimit.GetMaxXExtent()) + { + xMax = pVoxelLimit.GetMaxXExtent() ; + } + } + } + yoffset = pTransform.NetTranslation().y(); + yMin = yoffset - fRmax - fRtor ; + yMax = yoffset + fRmax + fRtor ; + if (pVoxelLimit.IsYLimited()) + { + if (yMin > pVoxelLimit.GetMaxYExtent()+kCarTolerance || + yMax < pVoxelLimit.GetMinYExtent()-kCarTolerance) return false ; + else + { + if (yMin < pVoxelLimit.GetMinYExtent() ) + { + yMin = pVoxelLimit.GetMinYExtent() ; + } + if (yMax > pVoxelLimit.GetMaxYExtent() ) + { + yMax = pVoxelLimit.GetMaxYExtent() ; + } + } + } + zoffset = pTransform.NetTranslation().z() ; + zMin = zoffset - fRmax ; + zMax = zoffset + fRmax ; - zoffset=pTransform.NetTranslation().z(); - zMin=zoffset-fRmax; - zMax=zoffset+fRmax; - if (pVoxelLimit.IsZLimited()) - { - if (zMin>pVoxelLimit.GetMaxZExtent()+kCarTolerance - ||zMaxpVoxelLimit.GetMaxZExtent()) - { - zMax=pVoxelLimit.GetMaxZExtent(); - } - } - } + if (pVoxelLimit.IsZLimited()) + { + if (zMin > pVoxelLimit.GetMaxZExtent()+kCarTolerance || + zMax < pVoxelLimit.GetMinZExtent()-kCarTolerance ) return false ; + else + { + if (zMin < pVoxelLimit.GetMinZExtent() ) + { + zMin = pVoxelLimit.GetMinZExtent() ; + } + if (zMax > pVoxelLimit.GetMaxZExtent() ) + { + zMax = pVoxelLimit.GetMaxZExtent() ; + } + } + } // Known to cut cylinder - switch (pAxis) - { - case kXAxis: - yoff1=yoffset-yMin; - yoff2=yMax-yoffset; - if (yoff1>=0&&yoff2>=0) - { -// Y limits cross max/min x => no change - pMin=xMin; - pMax=xMax; - } - else - { -// Y limits don't cross max/min x => compute max delta x, hence new mins/maxs - diff1=sqrt(fRmax*fRmax-yoff1*yoff1); - diff2=sqrt(fRmax*fRmax-yoff2*yoff2); - maxDiff=(diff1>diff2) ? diff1:diff2; - newMin=xoffset-maxDiff; - newMax=xoffset+maxDiff; - pMin=(newMinxMax) ? xMax : newMax; - } - - break; - case kYAxis: - xoff1=xoffset-xMin; - xoff2=xMax-xoffset; - if (xoff1>=0&&xoff2>=0) - { -// X limits cross max/min y => no change - pMin=yMin; - pMax=yMax; - } - else - { -// X limits don't cross max/min y => compute max delta y, hence new mins/maxs - diff1=sqrt(fRmax*fRmax-xoff1*xoff1); - diff2=sqrt(fRmax*fRmax-xoff2*xoff2); - maxDiff=(diff1>diff2) ? diff1:diff2; - newMin=yoffset-maxDiff; - newMax=yoffset+maxDiff; - pMin=(newMinyMax) ? yMax : newMax; - } - break; - case kZAxis: - pMin=zMin; - pMax=zMax; - break; - } - - pMin-=kCarTolerance; - pMax+=kCarTolerance; - - return true; - - } - else + + switch (pAxis) + { + case kXAxis: + yoff1=yoffset-yMin; + yoff2=yMax-yoffset; + if ( yoff1 >= 0 && yoff2 >= 0 ) { - G4int i,noEntries,noBetweenSections4; - G4bool existsAfterClip=false; +// Y limits cross max/min x => no change + + pMin = xMin ; + pMax = xMax ; + } + else + { +// Y limits don't cross max/min x => compute max delta x, hence new mins/maxs + + diff1 = sqrt(fRmax*fRmax - yoff1*yoff1) ; + diff2 = sqrt(fRmax*fRmax - yoff2*yoff2) ; + maxDiff = (diff1 > diff2) ? diff1:diff2 ; + newMin = xoffset - maxDiff ; + newMax = xoffset + maxDiff ; + pMin = (newMin < xMin) ? xMin : newMin ; + pMax = (newMax > xMax) ? xMax : newMax ; + } + break; + + case kYAxis: + xoff1 = xoffset - xMin ; + xoff2 = xMax - xoffset ; + if (xoff1 >= 0 && xoff2 >= 0 ) + { +// X limits cross max/min y => no change + + pMin = yMin ; + pMax = yMax ; + } + else + { +// X limits don't cross max/min y => compute max delta y, hence new mins/maxs + + diff1 = sqrt(fRmax*fRmax - xoff1*xoff1) ; + diff2 = sqrt(fRmax*fRmax - xoff2*xoff2) ; + maxDiff = (diff1 > diff2) ? diff1 : diff2 ; + newMin = yoffset - maxDiff ; + newMax = yoffset + maxDiff ; + pMin = (newMin < yMin) ? yMin : newMin ; + pMax = (newMax > yMax) ? yMax : newMax ; + } + break; + + case kZAxis: + pMin=zMin; + pMax=zMax; + break; + } + pMin -= kCarTolerance ; + pMax += kCarTolerance ; + + return true; + } + else + { + G4int i, noEntries, noBetweenSections4 ; + G4bool existsAfterClip = false ; // Calculate rotated vertex coordinates - G4ThreeVectorList *vertices; - G4int noPolygonVertices ; // will be 4 - vertices=CreateRotatedVertices(pTransform,noPolygonVertices); - pMin=+kInfinity; - pMax=-kInfinity; + G4ThreeVectorList *vertices ; + G4int noPolygonVertices ; // will be 4 + vertices = CreateRotatedVertices(pTransform,noPolygonVertices) ; - noEntries=vertices->entries(); - noBetweenSections4=noEntries-noPolygonVertices; - - for (i=0;ientries() ; + noBetweenSections4 = noEntries - noPolygonVertices ; + + for (i=0;i=tolRMin*tolRMin && pt2<=tolRMax*tolRMax) - { - if (fDPhi==2*M_PI||pt2==0) // on torus swept axis - { - in=kInside; - } - else - { + if (pt2 >= tolRMin*tolRMin && pt2 <= tolRMax*tolRMax ) + { + if ( fDPhi == 2*M_PI || pt2 == 0 ) // on torus swept axis + { + in = kInside ; + } + else + { // Try inner tolerant phi boundaries (=>inside) // if not inside, try outer tolerant phi boundaries - pPhi=atan2(p.y(),p.x()); - if (pPhi<0) pPhi+=2*M_PI; // 0<=pPhi<2*M_PI - if (fSPhi>=0) - { - if (pPhi>=fSPhi+kAngTolerance*0.5 && - pPhi<=fSPhi+fDPhi-kAngTolerance*0.5) - { - in=kInside; - } - else if (pPhi>=fSPhi-kAngTolerance*0.5 && - pPhi<=fSPhi+fDPhi+kAngTolerance*0.5) - { - in=kSurface; - } - } - else - { - if (pPhi=fSPhi+2*M_PI+kAngTolerance*0.5 && - pPhi<=fSPhi+fDPhi+2*M_PI-kAngTolerance*0.5) - { - in=kInside; - } - else if (pPhi>=fSPhi+2*M_PI-kAngTolerance*0.5 && - pPhi<=fSPhi+fDPhi+2*M_PI+kAngTolerance*0.5) - { - in=kSurface; - } - } - - - } - } - else - { -// Try generous boundaries - tolRMin=fRmin-kRadTolerance*0.5; - tolRMax=fRmax+kRadTolerance*0.5; - if (tolRMin<0) tolRMin=0; - if (pt2>=tolRMin*tolRMin && pt2 <= tolRMax*tolRMax) - { - if (fDPhi==2*M_PI||pt2==0) - { -// Continuous in phi or on z-axis - in=kSurface; - } - else - { -// Try outer tolerant phi boundaries only - pPhi=atan2(p.y(),p.x()); - if (pPhi<0) pPhi+=2*M_PI; // 0<=pPhi<2*M_PI - if (fSPhi>=0) - { - if (pPhi>=fSPhi-kAngTolerance*0.5 && - pPhi<=fSPhi+fDPhi+kAngTolerance*0.5) - { - in=kSurface; - } - } - else - { - if (pPhi=fSPhi+2*M_PI-kAngTolerance*0.5 && - pPhi<=fSPhi+fDPhi+2*M_PI+kAngTolerance*0.5) - { - in=kSurface; - } - } - - } - } - } - return in; + pPhi = atan2(p.y(),p.x()) ; + + if ( pPhi < 0 ) pPhi += 2*M_PI ; // 0<=pPhi<2*M_PI + if ( fSPhi >= 0 ) + { + if ( pPhi >= fSPhi+kAngTolerance*0.5 && + pPhi <= fSPhi+fDPhi-kAngTolerance*0.5 ) in = kInside ; + + else if ( pPhi >= fSPhi-kAngTolerance*0.5 && + pPhi <= fSPhi+fDPhi+kAngTolerance*0.5 ) in = kSurface ; + } + else + { + if (pPhi < fSPhi+2*M_PI) pPhi += 2*M_PI ; + + if ( pPhi >= fSPhi+2*M_PI+kAngTolerance*0.5 && + pPhi <= fSPhi+fDPhi+2*M_PI-kAngTolerance*0.5 ) in = kInside ; + + else if ( pPhi >= fSPhi+2*M_PI-kAngTolerance*0.5 && + pPhi <= fSPhi+fDPhi+2*M_PI+kAngTolerance*0.5) in = kSurface ; + } + } + } + else // Try generous boundaries + { + tolRMin = fRmin - kRadTolerance*0.5 ; + tolRMax = fRmax + kRadTolerance*0.5 ; + + if (tolRMin < 0 ) tolRMin = 0 ; + + if (pt2 >= tolRMin*tolRMin && pt2 <= tolRMax*tolRMax) + { + if (fDPhi == 2*M_PI || pt2 == 0 ) // Continuous in phi or on z-axis + { + in = kSurface ; + } + else // Try outer tolerant phi boundaries only + { + pPhi = atan2(p.y(),p.x()) ; + + if ( pPhi < 0 ) pPhi += 2*M_PI ; // 0<=pPhi<2*M_PI + + if (fSPhi >= 0 ) + { + if( pPhi >= fSPhi-kAngTolerance*0.5 && + pPhi <= fSPhi+fDPhi+kAngTolerance*0.5) in = kSurface ; + } + else + { + if (pPhi < fSPhi + 2*M_PI) pPhi += 2*M_PI ; + + if ( pPhi >= fSPhi+2*M_PI-kAngTolerance*0.5 && + pPhi <= fSPhi+fDPhi+2*M_PI+kAngTolerance*0.5 ) in = kSurface ; + } + } + } + } + return in ; } ///////////////////////////////////////////////////////////////////////////// @@ -777,98 +1015,82 @@ EInside G4Torus::Inside(const G4ThreeVector& p) const G4ThreeVector G4Torus::SurfaceNormal( const G4ThreeVector& p) const { - ENorm side; - G4ThreeVector norm; - G4double rho2,rho,pt2,pt,phi; - G4double distRMin,distRMax,distSPhi,distEPhi,distMin; + ENorm side ; + G4ThreeVector norm; + G4double rho2,rho,pt2,pt,phi; + G4double distRMin,distRMax,distSPhi,distEPhi,distMin; - rho2 = p.x()*p.x() + p.y()*p.y(); - rho = sqrt(rho2) ; - pt2 = fabs(rho2+p.z()*p.z() +fRtor*fRtor - 2*fRtor*rho) ; - pt = sqrt(pt2) ; + rho2 = p.x()*p.x() + p.y()*p.y(); + rho = sqrt(rho2) ; + pt2 = fabs(rho2+p.z()*p.z() +fRtor*fRtor - 2*fRtor*rho) ; + pt = sqrt(pt2) ; - distRMax=fabs(pt-fRmax); + distRMax = fabs(pt - fRmax) ; -// First minimum - if(fRmin) + + if(fRmin) // First minimum radius + { + distRMin = fabs(pt - fRmin) ; + + if (distRMin < distRMax) { - distRMin=fabs(pt-fRmin); - if (distRMinkRadTolerance) - { - tolORMin2=(fRmin-0.5*kRadTolerance)*(fRmin-0.5*kRadTolerance); - tolIRMin2=(fRmin+0.5*kRadTolerance)*(fRmin+0.5*kRadTolerance); - } - else - { - tolORMin2=0; - tolIRMin2=0; - } - tolORMax2=(fRmax+0.5*kRadTolerance)*(fRmax+0.5*kRadTolerance); - tolIRMax2=(fRmax-kRadTolerance*0.5)*(fRmax-kRadTolerance*0.5); + if ( fDPhi < 2.0*M_PI ) + { + seg = true ; + hDPhi = 0.5*fDPhi ; // half delta phi + cPhi = fSPhi + hDPhi ; + hDPhiOT = hDPhi+0.5*kAngTolerance ; // outers tol' half delta phi + hDPhiIT = hDPhi - 0.5*kAngTolerance ; + sinCPhi = sin(cPhi) ; + cosCPhi = cos(cPhi) ; + cosHDPhiOT = cos(hDPhiOT) ; + cosHDPhiIT = cos(hDPhiIT) ; + } + else seg = false ; + if (fRmin > kRadTolerance) // Calculate tolerant rmin and rmax + { + tolORMin2 = (fRmin - 0.5*kRadTolerance)*(fRmin - 0.5*kRadTolerance) ; + tolIRMin2 = (fRmin + 0.5*kRadTolerance)*(fRmin + 0.5*kRadTolerance) ; + } + else + { + tolORMin2 = 0 ; + tolIRMin2 = 0 ; + } + tolORMax2 = (fRmax + 0.5*kRadTolerance)*(fRmax + 0.5*kRadTolerance) ; + tolIRMax2 = (fRmax - kRadTolerance*0.5)*(fRmax - kRadTolerance*0.5) ; -// // Intersection with Rmax (possible return) and Rmin (must also check phi) -// - G4int i,j,num ; - G4double Rtor2=fRtor*fRtor, Rmax2=fRmax*fRmax, Rmin2=fRmin*fRmin ; - G4double rho2 = p.x()*p.x()+p.y()*p.y(); - G4double rho = sqrt(rho2) ; - G4double pt2 = fabs(rho2+p.z()*p.z() +Rtor2 - 2*fRtor*rho) ; - // G4double pt = sqrt(pt2) ; - G4double pDotV = p.x()*v.x() + p.y()*v.y() + p.z()*v.z() ; - G4double pRad2 = p.x()*p.x() + p.y()*p.y() + p.z()*p.z() ; - G4double vDotNmax = pDotV -fRtor*(v.x()*p.x() + v.y()*p.y())/rho ; + + G4int i, j, num ; + G4double Rtor2 = fRtor*fRtor, Rmax2 = fRmax*fRmax, Rmin2 = fRmin*fRmin ; + G4double rho2 = p.x()*p.x()+p.y()*p.y(); + G4double rho = sqrt(rho2) ; + G4double pt2 = fabs(rho2+p.z()*p.z() +Rtor2 - 2*fRtor*rho) ; + // G4double pt = sqrt(pt2) ; + G4double pDotV = p.x()*v.x() + p.y()*v.y() + p.z()*v.z() ; + G4double pRad2 = p.x()*p.x() + p.y()*p.y() + p.z()*p.z() ; + G4double vDotNmax = pDotV - fRtor*(v.x()*p.x() + v.y()*p.y())/rho ; // Inside outer radius : // check not inside, and heading through tubs (-> 0 to in) - if(pt2<=tolORMax2 && pt2>=tolIRMin2 && vDotNmax<0) - { - if (seg) - { - inum = p.x()*cosCPhi+p.y()*sinCPhi; - cosPsi = inum/rho; - if (cosPsi>=cosHDPhiIT) - { - return snxt = 0; - } - } - else - { - return snxt = 0; - } - } - else // intersection with Rmax torus - { - c[4] = 1.0 ; - c[3] = 4*pDotV ; - c[2] = 2*(pRad2 + 2*pDotV*pDotV - Rtor2 - Rmax2 + 2*Rtor2*v.z()*v.z()) ; - c[1] = 4*(pDotV*(pRad2-Rtor2-Rmax2) + 2*Rtor2*p.z()*v.z()) ; - c[0] = pRad2*pRad2 - 2*pRad2*(Rtor2+Rmax2) + + if( pt2 <= tolORMax2 && pt2 >= tolIRMin2 && vDotNmax < 0 ) + { + if (seg) + { + inum = p.x()*cosCPhi + p.y()*sinCPhi ; + cosPsi = inum/rho ; + + if (cosPsi>=cosHDPhiIT) return snxt = 0 ; + } + else return snxt = 0 ; + } + else // intersection with Rmax torus + { + c[4] = 1.0 ; + c[3] = 4*pDotV ; + c[2] = 2*(pRad2 + 2*pDotV*pDotV - Rtor2 - Rmax2 + 2*Rtor2*v.z()*v.z()) ; + + c[1] = 4*(pDotV*(pRad2 - Rtor2 - Rmax2) + 2*Rtor2*p.z()*v.z()) ; + + c[0] = pRad2*pRad2 - 2*pRad2*(Rtor2+Rmax2) + 4*Rtor2*p.z()*p.z() + (Rtor2-Rmax2)*(Rtor2-Rmax2) ; - num = SolveBiQuadratic(c,s) ; + num = SolveBiQuadratic(c,s) ; - if(num) - { - for(i=0;i=kRadTolerance/2 roots P?! - { - if(s[i]=kRadTolerance/2 roots P?! + { + if(s[i]= cosHDPhiIT) { - if (seg) // intersection point must have proper Phi - { - xi=p.x()+s[i]*v.x(); - yi=p.y()+s[i]*v.y(); - rhoi2=xi*xi+yi*yi; - inum = xi*cosCPhi + yi*sinCPhi; - cosPsi = inum/sqrt(rhoi2); - if (cosPsi>=cosHDPhiIT) - { - snxt = s[i] ; - break ; - } - } - else - { - snxt = s[i] ; - break ; - } + snxt = s[i] ; + break ; } } - } - } - + else + { + snxt = s[i] ; + break ; + } + } + } + } + } if (fRmin) // Possible Rmin intersection { // Inside relative to inner radius : // check not inside, and heading through tubs (-> 0 to in) - if(pt2>=tolORMin2 && pt2<=tolIRMax2 && vDotNmax>0) - { - if (seg) - { - inum = p.x()*cosCPhi+p.y()*sinCPhi; - cosPsi = inum/rho; - if (cosPsi>=cosHDPhiIT) - { - return snxt = 0; - } - } - else - { - return snxt = 0; - } - } - else // intersection with Rmin torus - { - c[4] = 1.0 ; - c[3] = 4*pDotV ; - c[2] = 2*(pRad2 + 2*pDotV*pDotV - Rtor2 - Rmin2 - + 2*Rtor2*v.z()*v.z()) ; - c[1] = 4*(pDotV*(pRad2-Rtor2-Rmin2) + 2*Rtor2*p.z()*v.z()) ; - c[0] = pRad2*pRad2 - 2*pRad2*(Rtor2+Rmin2) + + if( pt2 >= tolORMin2 && pt2 <= tolIRMax2 && vDotNmax > 0 ) + { + if (seg) + { + inum = p.x()*cosCPhi + p.y()*sinCPhi; + cosPsi = inum/rho ; + + if (cosPsi>=cosHDPhiIT) return snxt = 0 ; + } + else return snxt = 0 ; + } + else // intersection with Rmin torus + { + c[4] = 1.0 ; + c[3] = 4*pDotV ; + c[2] = 2*(pRad2 + 2*pDotV*pDotV - Rtor2 - Rmin2 + 2*Rtor2*v.z()*v.z()) ; + + c[1] = 4*(pDotV*(pRad2-Rtor2-Rmin2) + 2*Rtor2*p.z()*v.z()) ; + + c[0] = pRad2*pRad2 - 2*pRad2*(Rtor2+Rmin2) + 4*Rtor2*p.z()*p.z() + (Rtor2-Rmin2)*(Rtor2-Rmin2) ; - num = SolveBiQuadratic(c,s) ; + num = SolveBiQuadratic(c,s) ; - if(num) - { - for(i=0;i=kRadTolerance/2 roots P?! - { - if(s[i]=cosHDPhiIT && s[i]=kRadTolerance/2 roots P?! + { + if(s[i] < kRadTolerance*0.5) + { + for(j=i+1;j= cosHDPhiIT && s[i] < snxt ) + { + snxt = s[i] ; + break ; + } + } + else if(s[i] < snxt) + { + snxt = s[i] ; + break ; + } + } + } + } + } + } // if(Rmin) // // Phi segment intersection @@ -1112,80 +1324,75 @@ G4double G4Torus::DistanceToIn(const G4ThreeVector& p, // -> only diffs: sphi -> ephi, Comp -> -Comp and half-plane // intersection check <=0 -> >=0 // -> use some form of loop Construct ? -// - if (seg) - { - // First phi surface (`S'tarting phi) - sinSPhi=sin(fSPhi); - cosSPhi=cos(fSPhi); - Comp=v.x()*sinSPhi-v.y()*cosSPhi; // Compnent in outwards normal dirn + + if (seg) + { + sinSPhi = sin(fSPhi) ; // First phi surface (`S'tarting phi) + cosSPhi = cos(fSPhi) ; + Comp = v.x()*sinSPhi - v.y()*cosSPhi ; // Compnent in outwards normal dirn - if (Comp<0) - { - Dist=(p.y()*cosSPhi-p.x()*sinSPhi); - if (Dist=tolORMin2 && it2<=tolORMax2) - { + if (Comp < 0 ) + { + Dist = (p.y()*cosSPhi - p.x()*sinSPhi) ; + + if (Dist < kCarTolerance*0.5) + { + sphi = Dist/Comp ; + + if (sphi < snxt) + { + if ( sphi < 0 ) sphi = 0 ; + + xi = p.x() + sphi*v.x() ; + yi = p.y() + sphi*v.y() ; + zi = p.z() + sphi*v.z() ; + rhoi2 = xi*xi + yi*yi ; + it2 = fabs(rhoi2 + zi*zi + Rtor2 - 2*fRtor*sqrt(rhoi2)) ; + + if ( it2 >= tolORMin2 && it2 <= tolORMax2 ) + { // r intersection is good - check intersecting with correct half-plane - if ((yi*cosCPhi-xi*sinCPhi)<=0) snxt=sphi; - } - } - } - - } - -// Second phi surface (`E'nding phi) + if ((yi*cosCPhi-xi*sinCPhi)<=0) snxt=sphi; + } + } + } + } + ePhi=fSPhi+fDPhi; // Second phi surface (`E'nding phi) + sinEPhi=sin(ePhi); + cosEPhi=cos(ePhi); + Comp=-(v.x()*sinEPhi-v.y()*cosEPhi); + + if ( Comp < 0 ) // Component in outwards normal dirn + { + Dist = -(p.y()*cosEPhi - p.x()*sinEPhi) ; - ePhi=fSPhi+fDPhi; - sinEPhi=sin(ePhi); - cosEPhi=cos(ePhi); - Comp=-(v.x()*sinEPhi-v.y()*cosEPhi); - // Compnent in outwards normal dirn - if (Comp<0) - { - Dist=-(p.y()*cosEPhi-p.x()*sinEPhi); - if (Dist=tolORMin2 && it2<=tolORMax2) - { + if (sphi < snxt ) + { + if (sphi < 0 ) sphi = 0 ; + + xi = p.x() + sphi*v.x() ; + yi = p.y() + sphi*v.y() ; + zi = p.z() + sphi*v.z() ; + rhoi2 = xi*xi + yi*yi ; + it2 = fabs(rhoi2 + zi*zi + Rtor2 - 2*fRtor*sqrt(rhoi2)) ; + + if (it2 >= tolORMin2 && it2 <= tolORMax2) + { // z and r intersections good - check intersecting with correct half-plane - if ((yi*cosCPhi-xi*sinCPhi)>=0) snxt=sphi; - } - } - } - } - } // if(seg) - - - return snxt; + if ((yi*cosCPhi-xi*sinCPhi)>=0) snxt=sphi; + } + } + } + } + } + if(snxt < 0.5*kCarTolerance) snxt = 0.0 ; + return snxt ; } ///////////////////////////////////////////////////////////////////////////// @@ -1197,45 +1404,44 @@ G4double G4Torus::DistanceToIn(const G4ThreeVector& p, G4double G4Torus::DistanceToIn(const G4ThreeVector& p) const { - G4double safe,safe1,safe2; - G4double phiC,cosPhiC,sinPhiC,safePhi,ePhi,cosPsi; - G4double rho2,rho,pt2,pt ; + G4double safe, safe1, safe2 ; + G4double phiC, cosPhiC, sinPhiC, safePhi, ePhi, cosPsi ; + G4double rho2, rho, pt2, pt ; - rho2 = p.x()*p.x()+p.y()*p.y(); - rho = sqrt(rho2) ; - pt2 = fabs(rho2+p.z()*p.z() +fRtor*fRtor - 2*fRtor*rho) ; - pt = sqrt(pt2) ; + rho2 = p.x()*p.x() + p.y()*p.y() ; + rho = sqrt(rho2) ; + pt2 = fabs(rho2 + p.z()*p.z() + fRtor*fRtor - 2*fRtor*rho) ; + pt = sqrt(pt2) ; - safe1=fRmin-pt; - safe2=pt-fRmax; + safe1 = fRmin - pt ; + safe2 = pt - fRmax ; - if (safe1>safe2) safe=safe1; - else safe=safe2; + if (safe1 > safe2) safe = safe1; + else safe = safe2; - if (fDPhi<2.0*M_PI&&rho) - { - phiC=fSPhi+fDPhi*0.5; - cosPhiC=cos(phiC); - sinPhiC=sin(phiC); -// Psi=angle from central phi to point - cosPsi=(p.x()*cosPhiC+p.y()*sinPhiC)/rho; - if (cosPsisafe) safe=safePhi; - } - } - if (safe<0) safe=0; - return safe; + if ( fDPhi < 2.0*M_PI && rho ) + { + phiC = fSPhi + fDPhi*0.5 ; + cosPhiC = cos(phiC) ; + sinPhiC = sin(phiC) ; + cosPsi = (p.x()*cosPhiC + p.y()*sinPhiC)/rho ; + + if (cosPsi < cos(fDPhi*0.5) ) // Psi=angle from central phi to point + { // Point lies outside phi range + if ((p.y()*cosPhiC - p.x()*sinPhiC) <= 0 ) + { + safePhi = fabs(p.x()*sin(fSPhi) - p.y()*cos(fSPhi)) ; + } + else + { + ePhi = fSPhi + fDPhi ; + safePhi = fabs(p.x()*sin(ePhi) - p.y()*cos(ePhi)) ; + } + if (safePhi > safe) safe = safePhi ; + } + } + if (safe < 0 ) safe = 0 ; + return safe; } /////////////////////////////////////////////////////////////////////////// @@ -1249,153 +1455,147 @@ G4double G4Torus::DistanceToOut(const G4ThreeVector& p, G4bool *validNorm, G4ThreeVector *n ) const { - ESide side = kNull, sidephi ; - G4double snxt=kInfinity, sphi,c[5],s[4]; + ESide side = kNull, sidephi ; + G4double snxt = kInfinity, sphi, c[5], s[4] ; -// Vars for phi intersection - - G4double sinSPhi,cosSPhi,ePhi,sinEPhi,cosEPhi; - G4double cPhi,sinCPhi,cosCPhi; - G4double pDistS,compS,pDistE,compE,sphi2,xi,yi,zi,vphi; + G4double sinSPhi, cosSPhi, ePhi, sinEPhi, cosEPhi;// Vars for phi intersection + G4double cPhi, sinCPhi, cosCPhi ; + G4double pDistS, compS, pDistE, compE, sphi2, xi, yi, zi, vphi ; // Radial Intersections Defenitions & General Precals - // Define roots Si (generally real >=0) for intersection with - // torus (Ri = fRmax or fRmin) of ray p +S*v . General equation is : - // c[4]*S^4 + c[3]*S^3 +c[2]*S^2 + c[1]*S + c[0] = 0 . +// Define roots Si (generally real >=0) for intersection with +// torus (Ri = fRmax or fRmin) of ray p +S*v . General equation is : +// c[4]*S^4 + c[3]*S^3 +c[2]*S^2 + c[1]*S + c[0] = 0 . - G4int i,j,num ; - G4double Rtor2=fRtor*fRtor, Rmax2=fRmax*fRmax, Rmin2=fRmin*fRmin ; - G4double rho2 = p.x()*p.x()+p.y()*p.y(); - G4double rho = sqrt(rho2) ; - G4double pt2 = fabs(rho2+p.z()*p.z() + Rtor2 - 2*fRtor*rho) ; - G4double pt = sqrt(pt2) ; - G4double pDotV = p.x()*v.x() + p.y()*v.y() + p.z()*v.z() ; - G4double pRad2 = p.x()*p.x() + p.y()*p.y() + p.z()*p.z() ; + G4int i,j,num ; + G4double Rtor2 = fRtor*fRtor, Rmax2 = fRmax*fRmax, Rmin2 = fRmin*fRmin ; + G4double rho2 = p.x()*p.x()+p.y()*p.y(); + G4double rho = sqrt(rho2) ; + G4double pt2 = fabs(rho2 + p.z()*p.z() + Rtor2 - 2*fRtor*rho) ; + G4double pt = sqrt(pt2) ; + G4double pDotV = p.x()*v.x() + p.y()*v.y() + p.z()*v.z() ; + G4double pRad2 = p.x()*p.x() + p.y()*p.y() + p.z()*p.z() ; - G4double tolRMax=fRmax-kRadTolerance*0.5; + G4double tolRMax = fRmax - kRadTolerance*0.5 ; - G4double vDotNmax = pDotV -fRtor*(v.x()*p.x() + v.y()*p.y())/rho ; - G4double pDotxyNmax = (1-fRtor/rho) ; + G4double vDotNmax = pDotV - fRtor*(v.x()*p.x() + v.y()*p.y())/rho ; + G4double pDotxyNmax = (1 - fRtor/rho) ; - - if(pt2>tolRMax*tolRMax && vDotNmax>=0) - { + if( pt2 > tolRMax*tolRMax && vDotNmax >= 0 ) + { // On tolerant boundary & heading outwards (or perpendicular to) outer // radial surface -> leaving immediately with *n for really convex part only - if (calcNorm && pDotxyNmax>=-kRadTolerance) - { - *n=G4ThreeVector(p.x()*(1-fRtor/rho)/pt, - p.y()*(1-fRtor/rho)/pt, - p.z()/pt); - *validNorm=true; - } - return snxt=0; // Leaving by Rmax immediately - } - else - { // intersection with Rmax torus - c[4] = 1.0 ; - c[3] = 4*pDotV ; - c[2] = 2*(pRad2 + 2*pDotV*pDotV - Rtor2 - Rmax2 + 2*Rtor2*v.z()*v.z()) ; - c[1] = 4*(pDotV*(pRad2-Rtor2-Rmax2) + 2*Rtor2*p.z()*v.z()) ; - c[0] = pRad2*pRad2 - 2*pRad2*(Rtor2+Rmax2) + + if (calcNorm && pDotxyNmax >= -kRadTolerance) + { + *n = G4ThreeVector( p.x()*(1 - fRtor/rho)/pt, + p.y()*(1 - fRtor/rho)/pt, + p.z()/pt ) ; + *validNorm = true ; + } + return snxt = 0 ; // Leaving by Rmax immediately + } + else // intersection with Rmax torus + { + c[4] = 1.0 ; + c[3] = 4*pDotV ; + c[2] = 2*(pRad2 + 2*pDotV*pDotV - Rtor2 - Rmax2 + 2*Rtor2*v.z()*v.z()) ; + + c[1] = 4*(pDotV*(pRad2-Rtor2-Rmax2) + 2*Rtor2*p.z()*v.z()) ; + + c[0] = pRad2*pRad2 - 2*pRad2*(Rtor2+Rmax2) + 4*Rtor2*p.z()*p.z() + (Rtor2-Rmax2)*(Rtor2-Rmax2) ; - num = SolveBiQuadratic(c,s) ; + num = SolveBiQuadratic(c,s) ; - if(num) - { + if(num) + { + for(i=0;i=kRadTolerance/2 roots + { + if( s[i] < kRadTolerance*0.5 ) + { + for(j=i+1;jkRadTolerance*0.5 - avoid sqrt for efficiency + + if (pt2 < tolRMin*tolRMin && vDotNmax < 0 ) + { + if (calcNorm) *validNorm = false ; // Concave surface of the torus + return snxt = 0 ; // Leaving by Rmin immediately + } + else // intersection with Rmin torus + { + c[4] = 1.0 ; + c[3] = 4*pDotV ; + c[2] = 2*(pRad2 + 2*pDotV*pDotV - Rtor2 - Rmin2 + 2*Rtor2*v.z()*v.z()) ; + + c[1] = 4*(pDotV*(pRad2-Rtor2-Rmin2) + 2*Rtor2*p.z()*v.z()) ; + + c[0] = pRad2*pRad2 - 2*pRad2*(Rtor2+Rmin2) + + 4*Rtor2*p.z()*p.z() + (Rtor2-Rmin2)*(Rtor2-Rmin2) ; + + num = SolveBiQuadratic(c,s) ; + + if(num) + { for(i=0;i=kRadTolerance/2 roots { - if(s[i]kRadTolerance*0.5 - avoid sqrt for efficiency - if (pt2=kRadTolerance/2 roots - { - if(s[i]= -kRadTolerance) // really convex part of Rmax + { + *n = G4ThreeVector( xi*(1-fRtor/rhoi)/it, + yi*(1-fRtor/rhoi)/it, + zi/it ) ; + *validNorm = true ; + } + else *validNorm = false ; // concave-convex part of Rmax + break ; + + case kRMin: + *validNorm = false ; // Rmin is concave or concave-convex + break; + + case kSPhi: + if (fDPhi <= M_PI ) { - switch(side) - { - case kRMax: // n is unit vector - xi=p.x()+snxt*v.x(); - yi=p.y()+snxt*v.y(); - zi=p.z()+snxt*v.z(); - rhoi2 = xi*xi+yi*yi; - rhoi = sqrt(rhoi2) ; - it2 = fabs(rhoi2+zi*zi +fRtor*fRtor - 2*fRtor*rhoi) ; - it = sqrt(it2) ; - iDotxyNmax = (1-fRtor/rhoi) ; - if(iDotxyNmax>=-kRadTolerance) - { // really convex part of Rmax - *n=G4ThreeVector(xi*(1-fRtor/rhoi)/it, - yi*(1-fRtor/rhoi)/it, - zi/it); - *validNorm=true; - } - else - { - *validNorm=false; // concave-convex part of Rmax - } - break; - case kRMin: - *validNorm=false; // Rmin is concave or concave-convex - break; - case kSPhi: - if (fDPhi<=M_PI) - { *n=G4ThreeVector(sin(fSPhi),-cos(fSPhi),0); *validNorm=true; - } - else - { - *validNorm=false; - } - break; - case kEPhi: - if (fDPhi<=M_PI) - { + } + else *validNorm = false ; + break ; + + case kEPhi: + if (fDPhi <= M_PI) + { *n=G4ThreeVector(-sin(fSPhi+fDPhi),cos(fSPhi+fDPhi),0); *validNorm=true; - } - else - { - *validNorm=false; - } - break; - default: - G4Exception("Invalid enum in G4Torus::DistanceToOut"); - break; - } } + else *validNorm = false ; + break; - return snxt; + default: + + G4cout.precision(16); + G4cout << G4endl; + G4cout << "Torus parameters:" << G4endl << G4endl; + G4cout << "fRmin = " << fRmin/mm << " mm" << G4endl; + G4cout << "fRmax = " << fRmax/mm << " mm" << G4endl; + G4cout << "fRtor = " << fRtor/mm << " mm" << G4endl; + G4cout << "fSPhi = " << fSPhi/degree << " degree" << G4endl; + G4cout << "fDPhi = " << fDPhi/degree << " degree" << G4endl; + 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; + G4cout << "Proposed distance :" << G4endl << G4endl; + G4cout << "snxt = " << snxt/mm << " mm" << G4endl << G4endl; + + G4Exception("Invalid enum in G4Torus::DistanceToOut"); + break; + } + } + return snxt; } ///////////////////////////////////////////////////////////////////////// @@ -1685,53 +1900,45 @@ G4double G4Torus::DistanceToOut(const G4ThreeVector& p, G4double G4Torus::DistanceToOut(const G4ThreeVector& p) const { - G4double safe,safeR1,safeR2; - G4double rho2,rho,pt2,pt ; - G4double safePhi,phiC,cosPhiC,sinPhiC,ePhi; - rho2=p.x()*p.x()+p.y()*p.y(); - rho=sqrt(rho2); - pt2 = fabs(rho2+p.z()*p.z() +fRtor*fRtor - 2*fRtor*rho) ; - pt = sqrt(pt2) ; + G4double safe,safeR1,safeR2; + G4double rho2,rho,pt2,pt ; + G4double safePhi,phiC,cosPhiC,sinPhiC,ePhi; + rho2 = p.x()*p.x() + p.y()*p.y() ; + rho = sqrt(rho2) ; + pt2 = fabs(rho2 + p.z()*p.z() + fRtor*fRtor - 2*fRtor*rho) ; + pt = sqrt(pt2) ; - if (fRmin) - { - safeR1=pt-fRmin; - safeR2=fRmax-pt; - if (safeR1kMaxMeshSections) - { - noCrossSections=kMaxMeshSections; - } - - meshAngle=fDPhi/(noCrossSections-1); - meshRMax=(fRtor+fRmax)/cos(meshAngle*0.5); + if (noCrossSections < kMinMeshSections) + { + noCrossSections = kMinMeshSections ; + } + else if (noCrossSections>kMaxMeshSections) + { + noCrossSections=kMaxMeshSections; + } + meshAngle = fDPhi/(noCrossSections - 1) ; + meshRMax = (fRtor + fRmax)/cos(meshAngle*0.5) ; // If complete in phi, set start angle such that mesh will be at fRmax // on the x axis. Will give better extent calculations when not rotated. - if (fDPhi==M_PI*2.0&&fSPhi==0) - { - sAngle=-meshAngle*0.5; - } - else - { - sAngle=fSPhi; - } - - vertices=new G4ThreeVectorList(noCrossSections*4); - if (vertices) - { - for (crossSection=0;crossSectioninsert(pTransform.TransformPoint(vertex1)); vertices->insert(pTransform.TransformPoint(vertex2)); vertices->insert(pTransform.TransformPoint(vertex3)); - } - noPolygonVertices = 4 ; - } - else - { - G4Exception("G4Torus::CreateRotatedVertices Out of memory - Cannot alloc vertices"); - } - return vertices; + } + noPolygonVertices = 4 ; + } + else + { +G4Exception("G4Torus::CreateRotatedVertices Out of memory - Cannot alloc vertices"); + } + return vertices; } /////////////////////////////////////////////////////////////////////// // // No implementation for Visualisation Functions -void G4Torus::DescribeYourselfTo (G4VGraphicsScene& scene) const { +void G4Torus::DescribeYourselfTo (G4VGraphicsScene& scene) const +{ scene.AddThis (*this); } -G4VisExtent G4Torus::GetExtent() const { - // Define the sides of the box into which the G4Torus instance would fit. - return G4VisExtent (-fRtor-fRmax, fRtor+fRmax, - -fRtor-fRmax, fRtor+fRmax, -fRmax, fRmax); -} - -G4Polyhedron* G4Torus::CreatePolyhedron () const { +G4Polyhedron* G4Torus::CreatePolyhedron () const +{ return new G4PolyhedronTorus (fRmin, fRmax, fRtor, fSPhi, fSPhi + fDPhi); } -G4NURBS* G4Torus::CreateNURBS () const { +G4NURBS* G4Torus::CreateNURBS () const +{ G4NURBS* pNURBS; - if (fRmin != 0) { - if (fDPhi >= 2.0 * M_PI) { + if (fRmin != 0) + { + if (fDPhi >= 2.0 * M_PI) + { pNURBS = new G4NURBStube (fRmin, fRmax, fRtor); } - else { + else + { pNURBS = new G4NURBStubesector (fRmin, fRmax, fRtor, fSPhi, fSPhi + fDPhi); } } - else { - if (fDPhi >= 2.0 * M_PI) { + else + { + if (fDPhi >= 2.0 * M_PI) + { pNURBS = new G4NURBScylinder (fRmax, fRtor); } - else { + else + { const G4double epsilon = 1.e-4; // Cylinder sector not yet available! pNURBS = new G4NURBStubesector (epsilon, fRmax, fRtor, fSPhi, fSPhi + fDPhi); diff --git a/source/geometry/solids/CSG/src/G4Trap.cc b/source/geometry/solids/CSG/src/G4Trap.cc index 5b7312cd78..034d7bcc20 100644 --- a/source/geometry/solids/CSG/src/G4Trap.cc +++ b/source/geometry/solids/CSG/src/G4Trap.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Trap.cc,v 1.6 1999/12/15 14:50:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Trap.cc,v 1.7 2000/04/11 16:04:30 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4Trap // @@ -32,7 +32,6 @@ #include "G4Polyhedron.hh" #include "G4NURBS.hh" #include "G4NURBSbox.hh" -#include "G4VisExtent.hh" //////////////////////////////////////////////////////////////////////// // @@ -1417,34 +1416,6 @@ G4Trap::CreateRotatedVertices(const G4AffineTransform& pTransform) const void G4Trap::DescribeYourselfTo (G4VGraphicsScene& scene) const { scene.AddThis (*this); - // scene.AddThis (*this); -} - -G4VisExtent G4Trap::GetExtent() const -{ - G4int i ; - G4double xMin,xMax,yMin,yMax ; - G4ThreeVector pt[8] ; - pt[0]=G4ThreeVector(-fDz*fTthetaCphi-fDy1*fTalpha1-fDx1,-fDz*fTthetaSphi-fDy1,-fDz); - pt[1]=G4ThreeVector(-fDz*fTthetaCphi-fDy1*fTalpha1+fDx1,-fDz*fTthetaSphi-fDy1,-fDz); - pt[2]=G4ThreeVector(-fDz*fTthetaCphi+fDy1*fTalpha1-fDx2,-fDz*fTthetaSphi+fDy1,-fDz); - pt[3]=G4ThreeVector(-fDz*fTthetaCphi+fDy1*fTalpha1+fDx2,-fDz*fTthetaSphi+fDy1,-fDz); - pt[4]=G4ThreeVector(+fDz*fTthetaCphi-fDy2*fTalpha2-fDx3,+fDz*fTthetaSphi-fDy2,+fDz); - pt[5]=G4ThreeVector(+fDz*fTthetaCphi-fDy2*fTalpha2+fDx3,+fDz*fTthetaSphi-fDy2,+fDz); - pt[6]=G4ThreeVector(+fDz*fTthetaCphi+fDy2*fTalpha2-fDx4,+fDz*fTthetaSphi+fDy2,+fDz); - pt[7]=G4ThreeVector(+fDz*fTthetaCphi+fDy2*fTalpha2+fDx4,+fDz*fTthetaSphi+fDy2,+fDz); - xMax = -fabs(fDz*fTthetaCphi)-fDx1-fDx2-fDx3-fDx4 ; - xMin = -xMax ; - yMax = -fabs(fDz*fTthetaSphi)-fDy1-fDy2 ; - yMin = -yMax ; - for(i=0;i<8;i++) - { - if(pt[i].x() > xMax) xMax = pt[i].x() ; - if(pt[i].x() < xMin) xMin = pt[i].x() ; - if(pt[i].y() > yMax) yMax = pt[i].y() ; - if(pt[i].y() < yMin) yMin = pt[i].y() ; - } - return G4VisExtent (xMin, xMax, yMin, yMax, -fDz, fDz); } G4Polyhedron* G4Trap::CreatePolyhedron () const diff --git a/source/geometry/solids/CSG/src/G4Trd.cc b/source/geometry/solids/CSG/src/G4Trd.cc index fcc6c1c1d4..2e9bc1ab3b 100644 --- a/source/geometry/solids/CSG/src/G4Trd.cc +++ b/source/geometry/solids/CSG/src/G4Trd.cc @@ -5,13 +5,19 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Trd.cc,v 1.4 1999/12/15 14:50:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Trd.cc,v 1.6 2000/05/05 10:05:56 grichine Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Implementation for G4Trd class // // $ Id: $ +// +// History: +// ~1996, V. Grichine, 1st implementation based on old code of P. Kent +// 07.05.00, V. Grichine, in d = DistanceToIn(p,v), if d<0.5*kCarTolerance, d=0 + + #include "G4Trd.hh" @@ -23,7 +29,6 @@ #include "G4Polyhedron.hh" #include "G4NURBS.hh" #include "G4NURBSbox.hh" -#include "G4VisExtent.hh" #include @@ -438,289 +443,224 @@ G4ThreeVector G4Trd::SurfaceNormal( const G4ThreeVector& p) const G4double G4Trd::DistanceToIn(const G4ThreeVector& p, const G4ThreeVector& v) const { - G4double snxt=kInfinity; // snxt = default return value - G4double smin,smax; - G4double s1,s2,tanxz,tanyz,ds1,ds2; - G4double ss1,ss2,sn1,sn2,Dist; + G4double snxt = kInfinity ; // snxt = default return value + G4double smin,smax; + G4double s1,s2,tanxz,tanyz,ds1,ds2; + G4double ss1,ss2,sn1,sn2,Dist; -// Calculate valid z intersect range - if (v.z()) - { -// Calculate smax: must be +ve or no intersection. - if (v.z()>0) - { - Dist=fDz-p.z(); // to plane at +dz - if (Dist>=kCarTolerance/2) - { - smax=Dist/v.z(); - smin=-(fDz+p.z())/v.z(); - } - else - { - return snxt; - } - } - else - { -// v.z <0 - Dist=fDz+p.z(); // plane at -dz - if (Dist>=kCarTolerance/2) - { - smax=-Dist/v.z(); - smin=(fDz-p.z())/v.z(); - } - else - { - return snxt; - } - } - if (smin<0) smin=0; - } + if ( v.z() ) // Calculate valid z intersect range + { + if ( v.z() > 0 ) // Calculate smax: must be +ve or no intersection. + { + Dist = fDz - p.z() ; // to plane at +dz + + if (Dist >= 0.5*kCarTolerance) + { + smax = Dist/v.z() ; + smin = -(fDz + p.z())/v.z() ; + } + else return snxt ; + } + else // v.z <0 + { + Dist=fDz+p.z(); // plane at -dz + + if ( Dist >= 0.5*kCarTolerance ) + { + smax = -Dist/v.z() ; + smin = (fDz - p.z())/v.z() ; + } + else return snxt ; + } + if (smin < 0 ) smin = 0 ; + } + else // v.z=0 + { + if (fabs(p.z()) >= fDz ) return snxt ; // Outside & no intersect else - { -// v.z=0 - if (fabs(p.z())>fDz) - { - return snxt; // Outside & no intersect - } - else - { - smin=0; // Always inside z range - smax=kInfinity; - } - } + { + smin = 0 ; // Always inside z range + smax = kInfinity; + } + } -// // Calculate x intersection range // - // Calc half width at p.z, and components towards planes - tanxz=(fDx2-fDx1)*0.5/fDz; - s1=0.5*(fDx1+fDx2)+tanxz*p.z(); // x half width at p.z - ds1=v.x()-tanxz*v.z(); // Components of v towards faces at +-x - ds2=v.x()+tanxz*v.z(); - ss1=s1-p.x(); // -delta x to +ve plane - // -ve when outside - ss2=-s1-p.x(); // -delta x to -ve plane - // +ve when outside + + tanxz = (fDx2 - fDx1)*0.5/fDz ; + s1 = 0.5*(fDx1+fDx2) + tanxz*p.z() ; // x half width at p.z + ds1 = v.x() - tanxz*v.z() ; // Components of v towards faces at +-x + ds2 = v.x() + tanxz*v.z() ; + ss1 = s1 - p.x() ; // -delta x to +ve plane + // -ve when outside + ss2 = -s1 - p.x() ; // -delta x to -ve plane + // +ve when outside - if (ss1<0&&ss2<=0) - { -// In +ve coord Area - if (ds1<0) - { - sn1=ss1/ds1; - if (ds2<0) - { - sn2=ss2/ds2; - } - else - { - sn2=kInfinity; - } - } - else - { - return snxt; - } - - } - else if (ss1>=0&&ss2>0) - { -// In -ve coord Area - if (ds2>0) - { - sn1=ss2/ds2; - if (ds1>0) - { - sn2=ss1/ds1; - } - else - { - sn2=kInfinity; - } + if (ss1 < 0 && ss2 <= 0 ) + { + if (ds1 < 0) // In +ve coord Area + { + sn1 = ss1/ds1 ; + + if ( ds2 < 0 ) sn2 = ss2/ds2 ; + else sn2 = kInfinity ; + } + else return snxt ; + } + else if ( ss1 >= 0 && ss2 > 0 ) + { + if ( ds2 > 0 ) // In -ve coord Area + { + sn1 = ss2/ds2 ; + + if (ds1 > 0) sn2 = ss1/ds1 ; + else sn2 = kInfinity; - } - else - { - return snxt; - } - } - else if (ss1>=0&&ss2<=0) - { + } + else return snxt ; + } + else if (ss1 >= 0 && ss2 <= 0 ) + { + // Inside Area - calculate leaving distance // *Don't* use exact distance to side for tolerance = ss1*cos(ang xz) // = ss1/sqrt(1.0+tanxz*tanxz) - sn1=0; - if (ds1>0) - { - if (ss1>kCarTolerance/2) - { - sn2=ss1/ds1; // Leave +ve side extent - } - else - { - return snxt; // Leave immediately by +ve - } - } - else - { - sn2=kInfinity; - } - - if (ds2<0) - { - if (ss2<-kCarTolerance/2) - { - Dist=ss2/ds2; // Leave -ve side extent - if (Dist0) - { -// Within +/- plane cross-over areas (not on boundaries ss1||ss2==0)a - if (ds1>=0||ds2<=0) - { - return snxt; - } - else - { -// Will intersect & stay inside - sn1=ss1/ds1; - Dist=ss2/ds2; - if (Dist>sn1) sn1=Dist; - sn2=kInfinity; - } - } + sn1 = 0 ; + + if ( ds1 > 0 ) + { + if (ss1 > 0.5*kCarTolerance) sn2 = ss1/ds1 ; // Leave +ve side extent + else return snxt ; // Leave immediately by +ve + } + else sn2 = kInfinity ; + + if ( ds2 < 0 ) + { + if ( ss2 < -0.5*kCarTolerance ) + { + Dist = ss2/ds2 ; // Leave -ve side extent + if ( Dist < sn2 ) sn2 = Dist ; + } + else return snxt ; + } + } + else if (ss1 < 0 && ss2 > 0 ) + { + +// Within +/- plane cross-over areas (not on boundaries ss1||ss2==0) + + if ( ds1 >= 0 || ds2 <= 0 ) + { + return snxt ; + } + else // Will intersect & stay inside + { + sn1 = ss1/ds1 ; + Dist = ss2/ds2 ; + if (Dist > sn1 ) sn1 = Dist ; + sn2 = kInfinity ; + } + } - // Reduce allowed range of distances as appropriate - if (sn1>smin) smin=sn1; - if (sn2 smin ) smin = sn1 ; + if ( sn2 < smax ) smax = sn2 ; + // Check for incompatible ranges (eg z intersects between 50 ->100 and x // only 10-40 -> no intersection) - if (smax=0&&ss2>0) - { -// In -ve coord Area - if (ds2>0) - { - sn1=ss2/ds2; - if (ds1>0) - { - sn2=ss1/ds1; - } - else - { - sn2=kInfinity; - } - - } - else - { - return snxt; - } - } - else if (ss1>=0&&ss2<=0) - { + if ( ss1 < 0 && ss2 <= 0 ) + { + if (ds1 < 0 ) // In +ve coord Area + { + sn1 = ss1/ds1 ; + + if ( ds2 < 0 ) sn2 = ss2/ds2 ; + else sn2 = kInfinity ; + } + else return snxt ; + } + else if ( ss1 >= 0 && ss2 > 0 ) + { + if ( ds2 > 0 ) // In -ve coord Area + { + sn1 = ss2/ds2 ; + + if ( ds1 > 0 ) sn2 = ss1/ds1 ; + else sn2 = kInfinity ; + } + else return snxt ; + } + else if (ss1 >= 0 && ss2 <= 0 ) + { + // Inside Area - calculate leaving distance // *Don't* use exact distance to side for tolerance = ss1*cos(ang yz) // = ss1/sqrt(1.0+tanyz*tanyz) - sn1=0; - if (ds1>0) - { - if (ss1>kCarTolerance/2) - { - sn2=ss1/ds1; // Leave +ve side extent - } - else - { - return snxt; // Leave immediately by +ve - } - } - else - { - sn2=kInfinity; - } + sn1 = 0 ; + + if ( ds1 > 0 ) + { + if (ss1 > 0.5*kCarTolerance) sn2 = ss1/ds1 ; // Leave +ve side extent + else return snxt ; // Leave immediately by +ve + } + else sn2 = kInfinity ; - if (ds2<0) - { - if (ss2<-kCarTolerance/2) - { - Dist=ss2/ds2; // Leave -ve side extent - if (Dist0) - { -// Within +/- plane cross-over areas (not on boundaries ss1||ss2==0)a - if (ds1>=0||ds2<=0) - { - return snxt; - } - else - { -// Will intersect & stay inside - sn1=ss1/ds1; - Dist=ss2/ds2; - if (Dist>sn1) sn1=Dist; - sn2=kInfinity; - } - } + if ( ds2 < 0 ) + { + if ( ss2 < -0.5*kCarTolerance ) + { + Dist = ss2/ds2 ; // Leave -ve side extent + + if (Dist < sn2) sn2=Dist; + } + else return snxt ; + } + } + else if (ss1 < 0 && ss2 > 0 ) + { + +// Within +/- plane cross-over areas (not on boundaries ss1||ss2==0) + + if (ds1 >= 0 || ds2 <= 0 ) + { + return snxt ; + } + else // Will intersect & stay inside + { + sn1 = ss1/ds1 ; + Dist = ss2/ds2 ; + if (Dist > sn1 ) sn1 = Dist ; + sn2 = kInfinity ; + } + } // Reduce allowed range of distances as appropriate - if (sn1>smin) smin=sn1; - if (sn2 smin) smin = sn1 ; + if ( sn2 < smax) smax = sn2 ; // Check for incompatible ranges (eg x intersects between 50 ->100 and y // only 10-40 -> no intersection). Set snxt if ok - if (smax>smin) snxt=smin; - return snxt; + if ( smax > smin ) snxt = smin ; + if (snxt < 0.5*kCarTolerance ) snxt = 0.0 ; + + return snxt ; } ///////////////////////////////////////////////////////////////////////// @@ -1239,13 +1179,6 @@ void G4Trd::DescribeYourselfTo (G4VGraphicsScene& scene) const scene.AddThis (*this); } -G4VisExtent G4Trd::GetExtent() const -{ - G4double maxX=(fDx1>fDx2) ? fDx1 : fDx2; - G4double maxY=(fDy1>fDy2) ? fDy1 : fDy2; - return G4VisExtent (-maxX, maxX, -maxY, maxY, -fDz, fDz); -} - G4Polyhedron* G4Trd::CreatePolyhedron () const { return new G4PolyhedronTrd2 (fDx1, fDx2, fDy1, fDy2, fDz); diff --git a/source/geometry/solids/CSG/src/G4Tubs.cc b/source/geometry/solids/CSG/src/G4Tubs.cc index 60758d8acb..98c65c576d 100644 --- a/source/geometry/solids/CSG/src/G4Tubs.cc +++ b/source/geometry/solids/CSG/src/G4Tubs.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Tubs.cc,v 1.12 1999/12/15 14:50:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Tubs.cc,v 1.15 2000/05/17 16:13:01 grichine Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4Tubs @@ -22,6 +22,8 @@ // 28.05.99 V.Grichine, bugs fixed in Distance ToOut(p,v,...) // 13.10.99 V.Grichine, bugs fixed in DistanceToIn(p,v) // 19.11.99 V. Grichine, side = kNull in Distance ToOut(p,v,...) +// 31.03.00 V.Grichine, bug fixed in Inside(p) +// 17.05.00 V.Grichine, bugs (#76,#91) fixed in Distance ToOut(p,v,...) #include "G4Tubs.hh" @@ -39,77 +41,68 @@ #include "G4NURBStube.hh" #include "G4NURBScylinder.hh" #include "G4NURBStubesector.hh" -#include "G4VisExtent.hh" ///////////////////////////////////////////////////////////////////////// // // Constructor - check parameters, convert angles so 02PI then reset to 2PI -G4Tubs::G4Tubs(const G4String &pName, - G4double pRMin, - G4double pRMax, - G4double pDz, - G4double pSPhi, - G4double pDPhi) - : G4CSGSolid(pName) +G4Tubs::G4Tubs( const G4String &pName, + G4double pRMin, G4double pRMax, + G4double pDz, + G4double pSPhi, G4double pDPhi) +: G4CSGSolid(pName) { -// Check z-len - if (pDz>0) + + if (pDz>0) // Check z-len + { + fDz = pDz ; + } + else + { + G4Exception("Error in G4Tubs::G4Tubs - invalid z half-length"); + } + if ( pRMin < pRMax && pRMin >= 0 ) // Check radii + { + fRMin = pRMin ; + fRMax = pRMax ; + } + else + { + G4Exception("Error in G4Tubs::G4Tubs - invalid radii"); + } + if ( pDPhi >= 2.0*M_PI ) // Check angles + { + fDPhi=2*M_PI; + } + else + { + if ( pDPhi > 0 ) { - fDz=pDz; + fDPhi = pDPhi; } else { - G4Exception("Error in G4Tubs::G4Tubs - invalid z half-length"); + G4Exception("Error in G4Tubs::G4Tubs - invalid dphi"); } - -// Check radii - - if (pRMin=0) - { - fRMin=pRMin; fRMax=pRMax; - } - else - { - G4Exception("Error in G4Tubs::G4Tubs - invalid radii"); - } - -// Check angles - - if (pDPhi>=2.0*M_PI) - { - fDPhi=2*M_PI; - } - else - { - if (pDPhi>0) - { - fDPhi = pDPhi; - } - else - { - G4Exception("Error in G4Tubs::G4Tubs - invalid dphi"); - } - } + } -// Ensure psphi in 0-2PI or -2PI-0 range if shape crosses 0 +// Ensure fSphi in 0-2PI or -2PI-0 range if shape crosses 0 - fSPhi = pSPhi; + fSPhi = pSPhi; - if ( fSPhi < 0 ) - { - fSPhi=2.0*M_PI-fmod(fabs(fSPhi),2.0*M_PI); - } - else - { - fSPhi=fmod(fSPhi,2.0*M_PI); - } - - if (fSPhi+fDPhi>2.0*M_PI) - { - fSPhi -= 2.0*M_PI ; - } + if ( fSPhi < 0 ) + { + fSPhi = 2.0*M_PI - fmod(fabs(fSPhi),2.0*M_PI) ; + } + else + { + fSPhi = fmod(fSPhi,2.0*M_PI) ; + } + if (fSPhi + fDPhi > 2.0*M_PI ) + { + fSPhi -= 2.0*M_PI ; + } } ////////////////////////////////////////////////////////////////////////// @@ -117,227 +110,215 @@ G4Tubs::G4Tubs(const G4String &pName, // Destructor G4Tubs::~G4Tubs() -{;} +{ + ; +} ///////////////////////////////////////////////////////////////////////// // // Dispatch to parameterisation for replication mechanism dimension // computation & modification. -void G4Tubs::ComputeDimensions(G4VPVParameterisation* p, - const G4int n, - const G4VPhysicalVolume* pRep) +void G4Tubs::ComputeDimensions( G4VPVParameterisation* p, + const G4int n, + const G4VPhysicalVolume* pRep ) { - p->ComputeDimensions(*this,n,pRep); + p->ComputeDimensions(*this,n,pRep) ; } //////////////////////////////////////////////////////////////////////// // // Calculate extent under transform and specified limit -G4bool G4Tubs::CalculateExtent(const EAxis pAxis, - const G4VoxelLimits& pVoxelLimit, - const G4AffineTransform& pTransform, - G4double& pMin, G4double& pMax) const +G4bool G4Tubs::CalculateExtent( const EAxis pAxis, + const G4VoxelLimits& pVoxelLimit, + const G4AffineTransform& pTransform, + G4double& pMin, + G4double& pMax ) const { - if (!pTransform.IsRotated()&&fDPhi==2.0*M_PI&&fRMin==0) - { + if ( !pTransform.IsRotated() && fDPhi == 2.0*M_PI && fRMin == 0 ) + { // Special case handling for unrotated solid tubes // Compute x/y/z mins and maxs fro bounding box respecting limits, // with early returns if outside limits. Then switch() on pAxis, // and compute exact x and y limit for x/y case - G4double xoffset,xMin,xMax; - G4double yoffset,yMin,yMax; - G4double zoffset,zMin,zMax; + G4double xoffset, xMin, xMax ; + G4double yoffset, yMin, yMax ; + G4double zoffset, zMin, zMax ; - G4double diff1,diff2,maxDiff,newMin,newMax; - G4double xoff1,xoff2,yoff1,yoff2; + G4double diff1, diff2, maxDiff, newMin, newMax ; + G4double xoff1, xoff2, yoff1, yoff2 ; - xoffset=pTransform.NetTranslation().x(); - xMin=xoffset-fRMax; - xMax=xoffset+fRMax; - if (pVoxelLimit.IsXLimited()) - { - if (xMin>pVoxelLimit.GetMaxXExtent() - ||xMaxpVoxelLimit.GetMaxXExtent()) - { - xMax=pVoxelLimit.GetMaxXExtent(); - } - } - } + xoffset = pTransform.NetTranslation().x() ; + xMin = xoffset - fRMax ; + xMax = xoffset + fRMax ; - yoffset=pTransform.NetTranslation().y(); - yMin=yoffset-fRMax; - yMax=yoffset+fRMax; - if (pVoxelLimit.IsYLimited()) - { - if (yMin>pVoxelLimit.GetMaxYExtent() - ||yMaxpVoxelLimit.GetMaxYExtent()) - { - yMax=pVoxelLimit.GetMaxYExtent(); - } - } - } - - - zoffset=pTransform.NetTranslation().z(); - zMin=zoffset-fDz; - zMax=zoffset+fDz; - if (pVoxelLimit.IsZLimited()) - { - if (zMin>pVoxelLimit.GetMaxZExtent() - ||zMaxpVoxelLimit.GetMaxZExtent()) - { - zMax=pVoxelLimit.GetMaxZExtent(); - } - } - } - -// Known to cut cylinder - switch (pAxis) - { - case kXAxis: - yoff1=yoffset-yMin; - yoff2=yMax-yoffset; - if (yoff1>=0&&yoff2>=0) - { -// Y limits cross max/min x => no change - pMin=xMin; - pMax=xMax; - } - else - { -// Y limits don't cross max/min x => compute max delta x, hence new mins/maxs - diff1=sqrt(fRMax*fRMax-yoff1*yoff1); - diff2=sqrt(fRMax*fRMax-yoff2*yoff2); - maxDiff=(diff1>diff2) ? diff1:diff2; - newMin=xoffset-maxDiff; - newMax=xoffset+maxDiff; - pMin=(newMinxMax) ? xMax : newMax; - } - - break; - case kYAxis: - xoff1=xoffset-xMin; - xoff2=xMax-xoffset; - if (xoff1>=0&&xoff2>=0) - { -// X limits cross max/min y => no change - pMin=yMin; - pMax=yMax; - } - else - { -// X limits don't cross max/min y => compute max delta y, hence new mins/maxs - diff1=sqrt(fRMax*fRMax-xoff1*xoff1); - diff2=sqrt(fRMax*fRMax-xoff2*xoff2); - maxDiff=(diff1>diff2) ? diff1:diff2; - newMin=yoffset-maxDiff; - newMax=yoffset+maxDiff; - pMin=(newMinyMax) ? yMax : newMax; - } - break; - case kZAxis: - pMin=zMin; - pMax=zMax; - break; - } - - pMin-=kCarTolerance; - pMax+=kCarTolerance; - - return true; - - } - else + if (pVoxelLimit.IsXLimited()) + { + if ( xMin > pVoxelLimit.GetMaxXExtent() || + xMax < pVoxelLimit.GetMinXExtent() ) return false; + else + { + if ( xMin < pVoxelLimit.GetMinXExtent() ) { - G4int i,noEntries,noBetweenSections4; - G4bool existsAfterClip=false; + xMin = pVoxelLimit.GetMinXExtent() ; + } + if (xMax > pVoxelLimit.GetMaxXExtent() ) + { + xMax = pVoxelLimit.GetMaxXExtent() ; + } + } + } + yoffset = pTransform.NetTranslation().y() ; + yMin = yoffset - fRMax ; + yMax = yoffset + fRMax ; -// Calculate rotated vertex coordinates - G4ThreeVectorList *vertices; + if ( pVoxelLimit.IsYLimited() ) + { + if ( yMin > pVoxelLimit.GetMaxYExtent() || + yMax < pVoxelLimit.GetMinYExtent() ) return false ; + else + { + if ( yMin < pVoxelLimit.GetMinYExtent() ) + { + yMin = pVoxelLimit.GetMinYExtent() ; + } + if ( yMax > pVoxelLimit.GetMaxYExtent() ) + { + yMax=pVoxelLimit.GetMaxYExtent(); + } + } + } + zoffset = pTransform.NetTranslation().z() ; + zMin = zoffset - fDz ; + zMax = zoffset + fDz ; - vertices=CreateRotatedVertices(pTransform); + if ( pVoxelLimit.IsZLimited() ) + { + if ( zMin > pVoxelLimit.GetMaxZExtent() || + zMax < pVoxelLimit.GetMinZExtent() ) return false ; + else + { + if ( zMin < pVoxelLimit.GetMinZExtent() ) + { + zMin = pVoxelLimit.GetMinZExtent() ; + } + if ( zMax > pVoxelLimit.GetMaxZExtent() ) + { + zMax=pVoxelLimit.GetMaxZExtent(); + } + } + } + switch ( pAxis ) // Known to cut cylinder + { + case kXAxis : + { + yoff1 = yoffset - yMin ; + yoff2 = yMax - yoffset ; - pMin=+kInfinity; - pMax=-kInfinity; + if ( yoff1 >= 0 && yoff2 >= 0 ) // Y limits cross max/min x => no change + { + pMin = xMin ; + pMax = xMax ; + } + else + { +// Y limits don't cross max/min x => compute max delta x, hence new mins/maxs - noEntries=vertices->entries(); - noBetweenSections4=noEntries-4; + diff1=sqrt(fRMax*fRMax-yoff1*yoff1); + diff2=sqrt(fRMax*fRMax-yoff2*yoff2); + maxDiff=(diff1>diff2) ? diff1:diff2; + newMin=xoffset-maxDiff; + newMax=xoffset+maxDiff; + pMin=(newMinxMax) ? xMax : newMax; + } + break; + } + case kYAxis : + { + xoff1 = xoffset - xMin ; + xoff2 = xMax - xoffset ; + + if ( xoff1 >= 0 && xoff2 >= 0 ) // X limits cross max/min y => no change + { + pMin = yMin ; + pMax = yMax ; + } + else + { +// X limits don't cross max/min y => compute max delta y, hence new mins/maxs + + diff1 = sqrt(fRMax*fRMax - xoff1*xoff1) ; + diff2 = sqrt(fRMax*fRMax - xoff2*xoff2) ; + maxDiff = (diff1 > diff2) ? diff1 : diff2 ; + newMin = yoffset - maxDiff ; + newMax = yoffset + maxDiff ; + pMin = (newMin < yMin) ? yMin : newMin ; + pMax =(newMax > yMax) ? yMax : newMax ; + } + break ; + } + case kZAxis: + { + pMin = zMin ; + pMax = zMax ; + break ; + } + } + pMin -= kCarTolerance ; + pMax += kCarTolerance ; + return true; + } + else // Calculate rotated vertex coordinates + { + G4int i, noEntries, noBetweenSections4 ; + G4bool existsAfterClip = false ; + G4ThreeVectorList* vertices = CreateRotatedVertices(pTransform) ; + + pMin = +kInfinity ; + pMax = -kInfinity ; + + noEntries = vertices->entries() ; + noBetweenSections4 = noEntries - 4 ; - for (i=0;i=tolRMin*tolRMin && r2<=tolRMax*tolRMax) - { - if (fDPhi==2*M_PI||r2==0) - { - in=kInside; - } - else - { + if (r2 >= tolRMin*tolRMin && r2 <= tolRMax*tolRMax) + { + if ( fDPhi == 2*M_PI || r2 == 0 ) in = kInside ; + else + { // Try inner tolerant phi boundaries (=>inside) // if not inside, try outer tolerant phi boundaries - pPhi=atan2(p.y(),p.x()); - if (pPhi<0) pPhi+=2*M_PI; // 0<=pPhi<2pi - if (fSPhi>=0) - { - if (pPhi>=fSPhi+kAngTolerance*0.5 && - pPhi<=fSPhi+fDPhi-kAngTolerance*0.5) - { - in=kInside; - } - else if (pPhi>=fSPhi-kAngTolerance*0.5 && - pPhi<=fSPhi+fDPhi+kAngTolerance*0.5) - { - in=kSurface; - } - } - else - { - if (pPhi=fSPhi+2*M_PI+kAngTolerance*0.5 && - pPhi<=fSPhi+fDPhi+2*M_PI-kAngTolerance*0.5) - { - in=kInside; - } - else if (pPhi>=fSPhi+2*M_PI-kAngTolerance*0.5 && - pPhi<=fSPhi+fDPhi+2*M_PI+kAngTolerance*0.5) - { - in=kSurface; - } - } - - - } - } - else - { -// Try generous boundaries - tolRMin=fRMin-kRadTolerance*0.5; - tolRMax=fRMax+kRadTolerance*0.5; - if (tolRMin<0) tolRMin=0; - if (r2>=tolRMin*tolRMin && r2 <= tolRMax*tolRMax) - { - if (fDPhi==2*M_PI||r2==0) - { -// Continuous in phi or on z-axis - in=kSurface; - } - else - { -// Try outer tolerant phi boundaries only - pPhi=atan2(p.y(),p.x()); - if (pPhi<0) pPhi+=2*M_PI; // 0<=pPhi<2pi - if (fSPhi>=0) - { - if (pPhi>=fSPhi-kAngTolerance*0.5 && - pPhi<=fSPhi+fDPhi+kAngTolerance*0.5) - { - in=kSurface; - } - } - else - { - if (pPhi=fSPhi+2*M_PI-kAngTolerance*0.5 && - pPhi<=fSPhi+fDPhi+2*M_PI+kAngTolerance*0.5) - { - in=kSurface; - } - } - - } - } - } - } - else if (fabs(p.z())<=fDz+kCarTolerance*0.5) + pPhi = atan2(p.y(),p.x()) ; + + if ( pPhi < 0 ) pPhi += 2*M_PI ; // 0<=pPhi<2pi + + if ( fSPhi >= 0 ) { -// Check within tolerant r limits - r2=p.x()*p.x()+p.y()*p.y(); - tolRMin=fRMin-kRadTolerance*0.5; - tolRMax=fRMax+kRadTolerance*0.5; - if (tolRMin<0) tolRMin=0; - if (r2>=tolRMin*tolRMin && r2 <= tolRMax*tolRMax) - { - if (fDPhi==2*M_PI||r2==0) - { -// Continuous in phi or on z-axis - in=kSurface; - } - else - { -// Try outer tolerant phi boundaries - pPhi=atan2(p.y(),p.x()); - if (pPhi<0) pPhi+=2*M_PI; // 0<=pPhi<2pi - if (fSPhi>=0) - { - if (pPhi>=fSPhi-kAngTolerance*0.5 && - pPhi<=fSPhi+fDPhi+kAngTolerance*0.5) - { - in=kSurface; - } - } - else - { - if (pPhi=fSPhi+2*M_PI-kAngTolerance*0.5 && - pPhi<=fSPhi+fDPhi+2*M_PI+kAngTolerance*0.5) - { - in=kSurface; - } - } - - } - } + if ( pPhi >= fSPhi + kAngTolerance*0.5 && + pPhi <= fSPhi + fDPhi-kAngTolerance*0.5 ) in = kInside ; + + else if ( pPhi >= fSPhi - kAngTolerance*0.5 && + pPhi <= fSPhi + fDPhi + kAngTolerance*0.5 ) in = kSurface ; } - return in; + else + { + // if (pPhi < fSPhi + 2*M_PI) pPhi += 2*M_PI ; + + if ( pPhi >= fSPhi + 2*M_PI + kAngTolerance*0.5 && + pPhi <= fSPhi + fDPhi + 2*M_PI - kAngTolerance*0.5) in = kInside ; + + else if (pPhi >= fSPhi+2*M_PI-kAngTolerance*0.5 && + pPhi <= fSPhi+fDPhi+2*M_PI+kAngTolerance*0.5) in = kSurface ; + } + } + } + else // Try generous boundaries + { + tolRMin = fRMin - kRadTolerance*0.5 ; + tolRMax = fRMax + kRadTolerance*0.5 ; + + if ( tolRMin < 0 ) tolRMin = 0 ; + + if (r2 >= tolRMin*tolRMin && r2 <= tolRMax*tolRMax) + { + if ( fDPhi == 2*M_PI || r2 == 0 ) // Continuous in phi or on z-axis + { + in = kSurface ; + } + else // Try outer tolerant phi boundaries only + { + pPhi = atan2(p.y(),p.x()) ; + + if ( pPhi < 0 ) pPhi += 2*M_PI ; // 0<=pPhi<2pi + + if ( fSPhi >= 0 ) + { + if (pPhi >= fSPhi-kAngTolerance*0.5 && + pPhi <= fSPhi+fDPhi+kAngTolerance*0.5) in = kSurface ; + } + else + { + // if (pPhi < fSPhi + 2*M_PI ) pPhi += 2*M_PI ; + + if (pPhi >= fSPhi+2*M_PI-kAngTolerance*0.5 && + pPhi <= fSPhi+fDPhi+2*M_PI+kAngTolerance*0.5) in=kSurface; + } + } + } + } + } + else if (fabs(p.z()) <= fDz+kCarTolerance*0.5) // Check within tolerant r limits + { + r2 = p.x()*p.x() + p.y()*p.y() ; + tolRMin = fRMin - kRadTolerance*0.5 ; + tolRMax = fRMax + kRadTolerance*0.5 ; + + if ( tolRMin < 0 ) tolRMin = 0 ; + + if ( r2 >= tolRMin*tolRMin && r2 <= tolRMax*tolRMax ) + { + if (fDPhi == 2*M_PI || r2 == 0 ) // Continuous in phi or on z-axis + { + in = kSurface ; + } + else // Try outer tolerant phi boundaries + { + pPhi = atan2(p.y(),p.x()) ; + + if ( pPhi < 0 ) pPhi += 2*M_PI ; // 0<=pPhi<2pi + + if ( fSPhi >= 0 ) + { + if (pPhi >= fSPhi-kAngTolerance*0.5 && + pPhi <= fSPhi+fDPhi+kAngTolerance*0.5) in=kSurface; + } + else + { + // if ( pPhi < fSPhi + 2*M_PI ) pPhi += 2*M_PI ; + + if (pPhi>=fSPhi+2*M_PI-kAngTolerance*0.5 && + pPhi<=fSPhi+fDPhi+2*M_PI+kAngTolerance*0.5) in = kSurface ; + } + } + } + } + return in; } /////////////////////////////////////////////////////////////////////////// @@ -490,105 +452,108 @@ EInside G4Tubs::Inside(const G4ThreeVector& p) const G4ThreeVector G4Tubs::SurfaceNormal( const G4ThreeVector& p) const { - ENorm side; - G4ThreeVector norm; - G4double rho,phi; - G4double distZ,distRMin,distRMax,distSPhi,distEPhi,distMin; + ENorm side ; + G4ThreeVector norm ; + G4double rho, phi ; + G4double distZ, distRMin, distRMax, distSPhi, distEPhi, distMin ; - rho=sqrt(p.x()*p.x()+p.y()*p.y()); + rho = sqrt(p.x()*p.x() + p.y()*p.y()) ; - distRMin=fabs(rho-fRMin); - distRMax=fabs(rho-fRMax); - distZ=fabs(fabs(p.z())-fDz); + distRMin = fabs(rho - fRMin) ; + distRMax = fabs(rho - fRMax) ; + distZ = fabs(fabs(p.z()) - fDz) ; -// First minimum - - if (distRMin < distRMax) + if (distRMin < distRMax) // First minimum { - if (distZ0) - { norm=G4ThreeVector(0,0,1); } - else - { norm=G4ThreeVector(0,0,-1); } - break; - case kNSPhi: - norm=G4ThreeVector(sin(fSPhi),-cos(fSPhi),0); - break; - case kNEPhi: - norm=G4ThreeVector(-sin(fSPhi+fDPhi),cos(fSPhi+fDPhi),0); - break; - default: - G4Exception("Logic error in G4Tubs::SurfaceNormal"); - break; - - } // end case + case kNRMin : // Inner radius + { + norm = G4ThreeVector(-p.x()/rho,-p.y()/rho,0); + break ; + } + case kNRMax : // Outer radius + { + norm = G4ThreeVector(p.x()/rho,p.y()/rho,0) ; + break ; + } + case kNZ : // + or - dz + { + if ( p.z() > 0 ) norm = G4ThreeVector(0,0,1) ; + else norm = G4ThreeVector(0,0,-1) ; + break ; + } + case kNSPhi: + { + norm = G4ThreeVector(sin(fSPhi),-cos(fSPhi),0) ; + break ; + } + case kNEPhi: + { + norm = G4ThreeVector(-sin(fSPhi+fDPhi),cos(fSPhi+fDPhi),0) ; + break; + } + default: + { + G4Exception("Logic error in G4Tubs::SurfaceNormal") ; + break ; + } + } return norm; } @@ -618,36 +583,35 @@ G4ThreeVector G4Tubs::SurfaceNormal( const G4ThreeVector& p) const G4double G4Tubs::DistanceToIn(const G4ThreeVector& p, const G4ThreeVector& v ) const { - G4double snxt=kInfinity; // snxt = default return value + G4double snxt = kInfinity ; // snxt = default return value // Precalculated trig for phi intersections - used by r,z intersections to // check validity - G4bool seg; // true if segmented + G4bool seg ; // true if segmented - G4double hDPhi,hDPhiOT,hDPhiIT,cosHDPhiOT,cosHDPhiIT; + G4double hDPhi, hDPhiOT, hDPhiIT, cosHDPhiOT, cosHDPhiIT ; // half dphi + outer tolerance - G4double cPhi,sinCPhi,cosCPhi; // central phi + G4double cPhi, sinCPhi, cosCPhi ; // central phi - G4double tolORMin2,tolIRMax2; // `generous' radii squared + G4double tolORMin2, tolIRMax2 ; // `generous' radii squared - G4double tolORMax2,tolIRMin2,tolODz,tolIDz; + G4double tolORMax2, tolIRMin2, tolODz, tolIDz ; // Intersection point variables - G4double Dist,s,xi,yi,zi,rho2,inum,iden,cosPsi; + G4double Dist, s, xi, yi, zi, rho2, inum, iden, cosPsi ; + G4double t1, t2, t3, b, c, d ; // Quadratic solver variables - G4double t1,t2,t3,b,c,d; // Quadratic solver variables + G4double Comp ; + G4double cosSPhi, sinSPhi ; // Trig for phi start intersect - G4double Comp; - G4double cosSPhi,sinSPhi; // Trig for phi start intersect - - G4double ePhi,cosEPhi,sinEPhi; // for phi end intersect + G4double ePhi, cosEPhi, sinEPhi ; // for phi end intersect // Set phi divided flag and precalcs - if (fDPhi<2.0*M_PI) + if ( fDPhi < 2.0*M_PI ) { seg=true; hDPhi=0.5*fDPhi; // half delta phi @@ -659,10 +623,7 @@ G4double G4Tubs::DistanceToIn(const G4ThreeVector& p, cosHDPhiOT=cos(hDPhiOT); cosHDPhiIT=cos(hDPhiIT); } - else - { - seg=false; - } + else seg = false ; // Calculate tolerant rmin and rmax @@ -686,10 +647,12 @@ G4double G4Tubs::DistanceToIn(const G4ThreeVector& p, if (fabs(p.z()) >= tolIDz) { - if (p.z()*v.z()<0) // at +Z going in -Z or visa versa + if ( p.z()*v.z() < 0 ) // at +Z going in -Z or visa versa { - s=(fabs(p.z())-fDz)/fabs(v.z()); // Z intersect distance + s=(fabs(p.z())-fDz)/fabs(v.z()) ; // Z intersect distance + if(s < 0.0) s = 0.0 ; + xi=p.x()+s*v.x(); // Intersection coords yi=p.y()+s*v.y(); rho2=xi*xi+yi*yi; @@ -706,15 +669,9 @@ G4double G4Tubs::DistanceToIn(const G4ThreeVector& p, iden = sqrt(rho2); cosPsi = inum/iden; - if (cosPsi >= cosHDPhiIT) - { - return s; - } - } - else - { - return s; + if (cosPsi >= cosHDPhiIT) return s ; } + else return s ; } } else @@ -739,10 +696,10 @@ G4double G4Tubs::DistanceToIn(const G4ThreeVector& p, t2=p.x()*v.x()+p.y()*v.y(); t3=p.x()*p.x()+p.y()*p.y(); - if (t1>0) // Check not || to z axis + if ( t1 > 0 ) // Check not || to z axis { - b=t2/t1; - c=t3-fRMax*fRMax; + b = t2/t1 ; + c = t3 - fRMax*fRMax ; if (t3 >= tolORMax2 && t2<0) // This also handles the tangent case { @@ -765,20 +722,14 @@ G4double G4Tubs::DistanceToIn(const G4ThreeVector& p, { // Z ok. Check phi intersection if reqd - if (!seg) - { - return s; - } + if (!seg) return s ; else { xi=p.x()+s*v.x(); yi=p.y()+s*v.y(); cosPsi=(xi*cosCPhi+yi*sinCPhi)/fRMax; - if (cosPsi >= cosHDPhiIT) - { - return s; - } + if (cosPsi >= cosHDPhiIT) return s ; } } // end if fabs(zi) } // end if (s>=0) @@ -824,28 +775,22 @@ G4double G4Tubs::DistanceToIn(const G4ThreeVector& p, iden = sqrt(t3); cosPsi = inum/iden; - if (cosPsi>=cosHDPhiIT) - { - return 0; - } - } - else - { - return 0; + if (cosPsi >= cosHDPhiIT) return 0 ; } + else return 0 ; } } - if (fRMin) // Try inner cylinder intersection + if ( fRMin ) // Try inner cylinder intersection { - c=(t3-fRMin*fRMin)/t1; - d=b*b-c; + c = (t3 - fRMin*fRMin)/t1 ; + d = b*b - c ; - if (d>=0) // If real root + if ( d >= 0 ) // If real root { // Always want 2nd root - we are outside and know rmax Hit was bad // - If on surface of rmin also need farthest root - s=-b+sqrt(d); + s = -b + sqrt(d) ; if (s >= -0.5*kCarTolerance) // check forwards { @@ -856,10 +801,7 @@ G4double G4Tubs::DistanceToIn(const G4ThreeVector& p, if (fabs(zi)<=tolODz) { // Z ok. Check phi - if (!seg) - { - return s; - } + if (!seg) return s ; else { xi=p.x()+s*v.x(); @@ -888,7 +830,7 @@ G4double G4Tubs::DistanceToIn(const G4ThreeVector& p, // intersection check <=0 -> >=0 // -> use some form of loop Construct ? // - if (seg) + if ( seg ) { // First phi surface (`S'tarting phi) @@ -896,27 +838,24 @@ G4double G4Tubs::DistanceToIn(const G4ThreeVector& p, cosSPhi=cos(fSPhi); Comp=v.x()*sinSPhi-v.y()*cosSPhi; - if (Comp<0) // Component in outwards normal dirn + if ( Comp < 0 ) // Component in outwards normal dirn { Dist=(p.y()*cosSPhi-p.x()*sinSPhi); - if (Dist= tolIRMin2 && rho2 <= tolIRMax2 ) @@ -930,10 +869,7 @@ G4double G4Tubs::DistanceToIn(const G4ThreeVector& p, { // z and r intersections good - check intersecting with correct half-plane - if ((yi*cosCPhi-xi*sinCPhi) <= 0) - { - snxt=s; - } + if ((yi*cosCPhi-xi*sinCPhi) <= 0) snxt = s ; } } } @@ -942,32 +878,30 @@ G4double G4Tubs::DistanceToIn(const G4ThreeVector& p, // Second phi surface (`E'nding phi) - ePhi=fSPhi+fDPhi; - sinEPhi=sin(ePhi); - cosEPhi=cos(ePhi); - Comp=-(v.x()*sinEPhi-v.y()*cosEPhi); + ePhi = fSPhi + fDPhi ; + sinEPhi = sin(ePhi) ; + cosEPhi = cos(ePhi) ; + Comp = -(v.x()*sinEPhi - v.y()*cosEPhi) ; - if (Comp<0) // Component in outwards normal dirn + if (Comp < 0 ) // Component in outwards normal dirn { - Dist=-(p.y()*cosEPhi-p.x()*sinEPhi); + Dist = -(p.y()*cosEPhi - p.x()*sinEPhi) ; - if (Dist= tolIRMin2 && rho2 <= tolIRMax2 ) @@ -981,10 +915,7 @@ G4double G4Tubs::DistanceToIn(const G4ThreeVector& p, { // z and r intersections good - check intersecting with correct half-plane - if ((yi*cosCPhi-xi*sinCPhi)>=0) - { - snxt=s; - } + if ( (yi*cosCPhi-xi*sinCPhi) >= 0 ) snxt = s ; } } } @@ -1022,42 +953,43 @@ G4double G4Tubs::DistanceToIn(const G4ThreeVector& p, G4double G4Tubs::DistanceToIn(const G4ThreeVector& p) const { - G4double safe,rho,safe1,safe2,safe3; - G4double phiC,cosPhiC,sinPhiC,safePhi,ePhi,cosPsi; + G4double safe, rho, safe1, safe2, safe3 ; + G4double phiC, cosPhiC, sinPhiC, safePhi, ePhi, cosPsi ; - rho=sqrt(p.x()*p.x()+p.y()*p.y()); - safe1=fRMin-rho; - safe2=rho-fRMax; - safe3=fabs(p.z())-fDz; + rho = sqrt(p.x()*p.x() + p.y()*p.y()) ; + safe1 = fRMin - rho ; + safe2 = rho - fRMax ; + safe3 = fabs(p.z()) - fDz ; - if (safe1>safe2) safe=safe1; - else safe=safe2; - if (safe3>safe) safe=safe3; + if ( safe1 > safe2 ) safe = safe1 ; + else safe = safe2 ; + if ( safe3 > safe ) safe = safe3 ; - if (fDPhi < 2.0*M_PI && rho) - { - phiC=fSPhi+fDPhi*0.5; - cosPhiC=cos(phiC); - sinPhiC=sin(phiC); + if (fDPhi < 2.0*M_PI && rho) + { + phiC = fSPhi + fDPhi*0.5 ; + cosPhiC = cos(phiC) ; + sinPhiC = sin(phiC) ; // Psi=angle from central phi to point - cosPsi=(p.x()*cosPhiC+p.y()*sinPhiC)/rho; - if (cosPsisafe) safe=safePhi; - } - } - if (safe<0) safe=0; - return safe; + if ( (p.y()*cosPhiC - p.x()*sinPhiC) <= 0 ) + { + safePhi = fabs(p.x()*sin(fSPhi) - p.y()*cos(fSPhi)) ; + } + else + { + ePhi = fSPhi + fDPhi ; + safePhi = fabs(p.x()*sin(ePhi) - p.y()*cos(ePhi)) ; + } + if ( safePhi > safe ) safe = safePhi ; + } + } + if ( safe < 0 ) safe = 0 ; + return safe ; } ////////////////////////////////////////////////////////////////////////////// @@ -1071,63 +1003,63 @@ G4double G4Tubs::DistanceToOut( const G4ThreeVector& p, G4bool *validNorm, G4ThreeVector *n ) const { - ESide side = kNull ,sider,sidephi; + ESide side = kNull , sider, sidephi ; - G4double snxt,sr,sphi,pdist; + G4double snxt, sr, sphi, pdist ; - G4double deltaR,t1,t2,t3,b,c,d2; + G4double deltaR, t1, t2, t3, b, c, d2 ; // Vars for phi intersection: - G4double sinSPhi,cosSPhi,ePhi,sinEPhi,cosEPhi; - G4double cPhi,sinCPhi,cosCPhi; - G4double pDistS,compS,pDistE,compE,sphi2,xi,yi,vphi; + G4double sinSPhi, cosSPhi, ePhi, sinEPhi, cosEPhi ; + G4double cPhi, sinCPhi, cosCPhi ; + G4double pDistS, compS, pDistE, compE, sphi2, xi, yi, vphi ; // Z plane intersection - if (v.z()>0) - { - pdist=fDz-p.z(); + if (v.z() > 0 ) + { + pdist = fDz - p.z() ; - if (pdist>kCarTolerance*0.5) + if ( pdist > kCarTolerance*0.5 ) + { + snxt = pdist/v.z() ; + side = kPZ ; + } + else + { + if (calcNorm) { - snxt=pdist/v.z(); - side=kPZ; + *n = G4ThreeVector(0,0,1) ; + *validNorm = true ; } - else - { - if (calcNorm) - { - *n=G4ThreeVector(0,0,1); - *validNorm=true; - } - return snxt=0; - } - } - else if (v.z()<0) - { - pdist=fDz+p.z(); + return snxt = 0 ; + } + } + else if ( v.z() < 0 ) + { + pdist = fDz + p.z() ; - if (pdist>kCarTolerance*0.5) - { + if ( pdist > kCarTolerance*0.5 ) + { snxt=-pdist/v.z(); side=kMZ; - } - else - { + } + else + { if (calcNorm) { *n=G4ThreeVector(0,0,-1); *validNorm=true; } return snxt=0; - } - } - else - { + } + } + else + { snxt=kInfinity; // Travel perpendicular to z axis side=kNull; - } + } // Radial Intersections // @@ -1140,36 +1072,36 @@ G4double G4Tubs::DistanceToOut( const G4ThreeVector& p, // // t1 t2 t3 - t1=1.0-v.z()*v.z(); // since v normalised - t2=p.x()*v.x()+p.y()*v.y(); - t3=p.x()*p.x()+p.y()*p.y(); + t1 = 1.0 - v.z()*v.z() ; // since v normalised + t2 = p.x()*v.x() + p.y()*v.y() ; + t3 = p.x()*p.x() + p.y()*p.y() ; - if (t1>0) // Check not parallel - { + if ( t1 > 0 ) // Check not parallel + { // Calculate sr, r exit distance - if (t2>=0) - { + if (t2>=0) + { // Delta r not negative => leaving via rmax - deltaR=t3-fRMax*fRMax; + deltaR = t3 - fRMax*fRMax ; // NOTE: Should use rho-fRMax<-kRadTolerance*0.5 - avoid sqrt for efficiency - if (deltaR<-kRadTolerance*fRMax) - { - b=t2/t1; - c=deltaR/t1; - sr=-b+sqrt(b*b-c); - sider=kRMax; - } - else - { + if ( deltaR < -kRadTolerance*fRMax ) + { + b = t2/t1 ; + c = deltaR/t1 ; + sr = -b + sqrt(b*b - c); + sider = kRMax ; + } + else + { // On tolerant boundary & heading outwards (or perpendicular to) outer // radial surface -> leaving immediately - if (calcNorm) - { + if (calcNorm) + { // if ( p.x() || p.y() ) // { // *n=G4ThreeVector(p.x(),p.y(),0); @@ -1180,122 +1112,121 @@ G4double G4Tubs::DistanceToOut( const G4ThreeVector& p, // } *n=G4ThreeVector(p.x()/fRMax,p.y()/fRMax,0); *validNorm=true; - } - return snxt=0; // Leaving by rmax immediately - } - } - else // i.e. t2 < 0 - { + } + return snxt=0; // Leaving by rmax immediately + } + } + else // i.e. t2 < 0 + { // Possible rmin intersection - if ( fRMin ) - { - deltaR=t3-fRMin*fRMin; - b=t2/t1; - c=deltaR/t1; - d2=b*b-c; + if ( fRMin ) + { + deltaR=t3-fRMin*fRMin; + b=t2/t1; + c=deltaR/t1; + d2=b*b-c; - if (d2>=0) // Leaving via rmin - { + if ( d2 >= 0 ) // Leaving via rmin + { // NOTE: SHould use rho-rmin>kRadTolerance*0.5 - avoid sqrt for efficiency - if (deltaR > kRadTolerance*fRMin) - { + if (deltaR > kRadTolerance*fRMin) + { sr = -b-sqrt(d2) ; sider = kRMin ; - } - else - { - if (calcNorm) - { - *validNorm = false ; // Concave side - } - return snxt=0; - } - } - else // No rmin intersect -> must be rmax intersect - { + } + else + { + if ( calcNorm ) *validNorm = false ; // Concave side + return snxt=0; + } + } + else // No rmin intersect -> must be rmax intersect + { deltaR=t3-fRMax*fRMax; c=deltaR/t1; sr=-b+sqrt(b*b-c); sider=kRMax; - } - } - else // No rmin intersect -> must be rmax intersect - { + } + } + else // No rmin intersect -> must be rmax intersect + { deltaR=t3-fRMax*fRMax; b=t2/t1; c=deltaR/t1; sr=-b+sqrt(b*b-c); sider=kRMax; - } } + } // Phi Intersection - if (fDPhi<2.0*M_PI) + if ( fDPhi < 2.0*M_PI ) + { + sinSPhi=sin(fSPhi); + cosSPhi=cos(fSPhi); + ePhi=fSPhi+fDPhi; + sinEPhi=sin(ePhi); + cosEPhi=cos(ePhi); + cPhi=fSPhi+fDPhi*0.5; + sinCPhi=sin(cPhi); + cosCPhi=cos(cPhi); + + + if ( p.x() || p.y() ) // Check if on z axis (rho not needed later) { - sinSPhi=sin(fSPhi); - cosSPhi=cos(fSPhi); - ePhi=fSPhi+fDPhi; - sinEPhi=sin(ePhi); - cosEPhi=cos(ePhi); - cPhi=fSPhi+fDPhi*0.5; - sinCPhi=sin(cPhi); - cosCPhi=cos(cPhi); - - - if (p.x()||p.y()) // Check if on z axis (rho not needed later) - { // pDist -ve when inside - pDistS=p.x()*sinSPhi-p.y()*cosSPhi; - pDistE=-p.x()*sinEPhi+p.y()*cosEPhi; + pDistS = p.x()*sinSPhi - p.y()*cosSPhi ; + pDistE = -p.x()*sinEPhi + p.y()*cosEPhi ; // Comp -ve when in direction of outwards normal - compS=-sinSPhi*v.x()+cosSPhi*v.y(); - compE=sinEPhi*v.x()-cosEPhi*v.y(); - sidephi=kNull; + compS = -sinSPhi*v.x()+cosSPhi*v.y(); + compE = sinEPhi*v.x()-cosEPhi*v.y(); + sidephi = kNull; // if ( pDistS <= 0 && pDistE <= 0 ) - if( ( fDPhi <= pi && ( pDistS <= 0.5*kCarTolerance && + if( ( fDPhi <= pi && ( pDistS <= 0.5*kCarTolerance && pDistE <= 0.5*kCarTolerance ) ) || ( fDPhi > pi && !( pDistS > 0.5*kCarTolerance && pDistE > 0.5*kCarTolerance ) ) ) - { + { // Inside both phi *full* planes - if (compS<0) - { - sphi=pDistS/compS; - xi=p.x()+sphi*v.x(); - yi=p.y()+sphi*v.y(); + if ( compS < 0 ) + { + sphi=pDistS/compS; + if (sphi >= -0.5*kCarTolerance) + { + xi=p.x()+sphi*v.x(); + yi=p.y()+sphi*v.y(); // Check intersecting with correct half-plane (if not -> no intersect) - if ((yi*cosCPhi-xi*sinCPhi)>=0) - { - sphi=kInfinity; - } - else - { - sidephi=kSPhi; + if ((yi*cosCPhi-xi*sinCPhi)>=0) + { + sphi = kInfinity ; + } + else + { + sidephi = kSPhi ; - if (pDistS>-kCarTolerance*0.5) - { - sphi=0; // Leave by sphi immediately - } - } - } - else - { - sphi=kInfinity ; - } - if (compE<0) - { + if ( pDistS > -kCarTolerance*0.5 ) + { + sphi = 0 ; // Leave by sphi immediately + } + } + } + else sphi = kInfinity ; + } + else sphi = kInfinity ; + + if ( compE < 0 ) + { sphi2=pDistE/compE; // Only check further if < starting phi intersection @@ -1323,8 +1254,8 @@ G4double G4Tubs::DistanceToOut( const G4ThreeVector& p, } } } - } - else sphi = kInfinity ; + } + else sphi = kInfinity ; /* ******************************************* @@ -1527,12 +1458,12 @@ G4double G4Tubs::DistanceToOut( const G4ThreeVector& p, { snxt=sr; side=sider; - } } - if (calcNorm) + } + if (calcNorm) + { + switch(side) { - switch(side) - { case kRMax: // Note: returned vector not normalised // (divide by fRMax for unit vector) @@ -1581,11 +1512,30 @@ G4double G4Tubs::DistanceToOut( const G4ThreeVector& p, break; default: + G4cout.precision(16); + G4cout << G4endl; + G4cout << "Tubs parameters:" << G4endl << G4endl; + G4cout << "fRMin = " << fRMin/mm << " mm" << G4endl; + G4cout << "fRMax = " << fRMax/mm << " mm" << G4endl; + G4cout << "fDz = " << fDz/mm << " mm" << G4endl; + G4cout << "fSPhi = " << fSPhi/degree << " degree" << G4endl; + G4cout << "fDPhi = " << fDPhi/degree << " degree" << G4endl<kMaxMeshSections) - { + noCrossSections =G4int(fDPhi/kMeshAngleDefault) + 1 ; + + if ( noCrossSections < kMinMeshSections ) + { + noCrossSections = kMinMeshSections; + } + else if (noCrossSections>kMaxMeshSections) + { noCrossSections=kMaxMeshSections; - } - - meshAngle=fDPhi/(noCrossSections-1); - meshRMax=fRMax/cos(meshAngle*0.5); + } + meshAngle = fDPhi/(noCrossSections - 1) ; + meshRMax = fRMax/cos(meshAngle*0.5) ; // If complete in phi, set start angle such that mesh will be at fRMax // on the x axis. Will give better extent calculations when not rotated. - if (fDPhi==M_PI*2.0&&fSPhi==0) - { - sAngle=-meshAngle*0.5; - } - else - { - sAngle=fSPhi; - } + + if (fDPhi == M_PI*2.0 && fSPhi == 0 ) sAngle = -meshAngle*0.5 ; + else sAngle = fSPhi ; - vertices=new G4ThreeVectorList(noCrossSections*4); - if (vertices) - { - for (crossSection=0;crossSectioninsert(pTransform.TransformPoint(vertex1)); vertices->insert(pTransform.TransformPoint(vertex2)); vertices->insert(pTransform.TransformPoint(vertex3)); - } - } - else - { - G4Exception("G4Tubs::CreateRotatedVertices Out of memory - Cannot alloc vertices"); } - return vertices; + } + else + { +G4Exception("G4Tubs::CreateRotatedVertices Out of memory - Cannot alloc vertices"); + } + return vertices; } /////////////////////////////////////////////////////////////////////////// @@ -1723,34 +1665,38 @@ G4Tubs::CreateRotatedVertices(const G4AffineTransform& pTransform) const // Methods for visualisation -void G4Tubs::DescribeYourselfTo (G4VGraphicsScene& scene) const { +void G4Tubs::DescribeYourselfTo (G4VGraphicsScene& scene) const +{ scene.AddThis (*this); } -G4VisExtent G4Tubs::GetExtent() const { - // Define the sides of the box into which the G4Tubs instance would fit. - return G4VisExtent (-fRMax, fRMax, -fRMax, fRMax, -fDz, fDz); -} - -G4Polyhedron* G4Tubs::CreatePolyhedron () const { +G4Polyhedron* G4Tubs::CreatePolyhedron () const +{ return new G4PolyhedronTubs (fRMin, fRMax, fDz, fSPhi, fDPhi); } -G4NURBS* G4Tubs::CreateNURBS () const { +G4NURBS* G4Tubs::CreateNURBS () const +{ G4NURBS* pNURBS; - if (fRMin != 0) { - if (fDPhi >= 2.0 * M_PI) { + if (fRMin != 0) + { + if (fDPhi >= 2.0 * M_PI) + { pNURBS = new G4NURBStube (fRMin, fRMax, fDz); } - else { + else + { pNURBS = new G4NURBStubesector (fRMin, fRMax, fDz, fSPhi, fSPhi + fDPhi); } } - else { - if (fDPhi >= 2.0 * M_PI) { + else + { + if (fDPhi >= 2.0 * M_PI) + { pNURBS = new G4NURBScylinder (fRMax, fDz); } - else { + else + { const G4double epsilon = 1.e-4; // Cylinder sector not yet available! pNURBS = new G4NURBStubesector (epsilon, fRMax, fDz, fSPhi, fSPhi + fDPhi); diff --git a/source/geometry/solids/GNUmakefile b/source/geometry/solids/GNUmakefile index b5e42d4735..dbb791525f 100644 --- a/source/geometry/solids/GNUmakefile +++ b/source/geometry/solids/GNUmakefile @@ -1,10 +1,10 @@ -# $Id: GNUmakefile,v 1.1 1999/01/07 16:07:22 gunter Exp $ +# $Id: GNUmakefile,v 1.2 2000/04/07 13:03:54 gcosmo Exp $ # -------------------------------------------------------------- # Makes libraries for each subdomain: -# STEP, BREPS, CSG, STEPinterface. +# STEP, BREPS, CSG, STEPinterface, Boolean, specific. # GNUmakefile for solids libraries. Gabriele Cosmo, 18/9/96. -SUBDIRS = CSG Boolean BREPS STEP STEPinterface +SUBDIRS = CSG specific Boolean BREPS STEP STEPinterface all: @for dir in $(SUBDIRS); do (cd $$dir; $(MAKE)); done diff --git a/source/geometry/solids/History b/source/geometry/solids/History index 01655603e7..a02b0ca3a8 100644 --- a/source/geometry/solids/History +++ b/source/geometry/solids/History @@ -1,4 +1,4 @@ -$Id: History,v 1.2 2000/01/19 20:03:50 gcosmo Exp $ +$Id: History,v 1.6 2000/04/27 10:36:08 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,41 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +Apr 27th, 2000 G. Cosmo + +- Updated comments for the Software Reference Manual in "Boolean", added + CVS and standard G4 headers where missing. + +Apr 18th, 2000 D. Williams + +- Minor fixes and cosmectics in "specific" solids. Removed dependency + over the CSG module. +- Updated SBT test to cope with new shapes in "specific". + +Apr 11th, 2000 J. Allison + +- Removed implementations of GetExtent in most sub-classes of G4VSolid (a + default implementation exists in G4VSolid). +- All implementations of DescribeYourselfTo (G4VGraphicsScene& scene) const + now correctly written: scene.AddThis(*this). +- CreatePolyhedron implemented for BooleanSolids. +- G4DisplacedSolid: reversed implementation of GetFrameRotation and + GetObjectRotation, removing inappropriate invertion. +- G4DisplacedSolid::GetConstituentMovedSolid() made const. + +Apr 5th, 2000 G. Cosmo - geomsolids-V01-01-00 + +- Restructured CSG directory: + o moved all shapes which are non-pure CSG to solids/specific. + See related History files for more details. + o moved unit-tests to appropriate test directories. + o extracted tests "SBT" and "Fred" and placed one level up in + solids/tests (new directory). +- Fixes to G4Tubes.cc and G4Hype[.hh.cc]. +- Added new shape in solids/specific: G4EllipticalTube. +- Organised class description comments for the Software Reference Manual + in CSG and specific headers. Added CVS headers to files in specific. + Jan 19th, 2000 G. Cosmo - geomsolids-V01-00-00 - Syncronized HEAD versioning of files after ISO-C++ migration diff --git a/source/geometry/solids/STEP/GNUmakefile b/source/geometry/solids/STEP/GNUmakefile index 99a49c6e37..064e90cd50 100644 --- a/source/geometry/solids/STEP/GNUmakefile +++ b/source/geometry/solids/STEP/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.2 1999/12/15 18:06:43 gracia Exp $ +# $Id: GNUmakefile,v 1.3 2000/02/14 13:44:01 gcosmo Exp $ # ------------------------------------------------------------- # GNUmakefile for STEP library. Gabriele Cosmo, 15/11/96. # ------------------------------------------------------------- @@ -9,6 +9,10 @@ ifndef G4INSTALL G4INSTALL = ../../../.. endif +ifneq (,$(findstring DEC-cxx,$(G4SYSTEM))) + G4DEBUG := 1 +endif + include $(G4INSTALL)/config/architecture.gmk CPPFLAGS += \ @@ -19,7 +23,8 @@ CPPFLAGS += \ include $(G4INSTALL)/config/common.gmk # Fix for ISO AP203 geometry standard files to be always compiled without optimization. - +# Compilation on DEC-cxx must moreover happen with no optimisation level AND debug. +# CXXFLAGS_WITHOUT_O := $(filter-out -O% , $(CXXFLAGS)) CXXFLAGS_WITHOUT_O := $(filter-out +O% , $(CXXFLAGS_WITHOUT_O)) @@ -28,8 +33,6 @@ $(G4TMP)/$(G4SYSTEM)/$(name)/SdaiCONFIG_CONTROL_DESIGN.o: src/SdaiCONFIG_CONTROL $(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 - - ifneq (,$(findstring WIN32-VC,$(G4SYSTEM))) CXXFLAGS_WITH_ZM = $(filter-out -Zm%,$(CXXFLAGS)) -Zm500 diff --git a/source/geometry/solids/STEP/History b/source/geometry/solids/STEP/History new file mode 100644 index 0000000000..c278dee012 --- /dev/null +++ b/source/geometry/solids/STEP/History @@ -0,0 +1,46 @@ +$Id: History,v 1.3 2000/06/14 16:13:30 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 ! + + Please keep a summary of these message in geometry/History! + + ---------------------------------------------------------- + * Reverse chronological order (last date on top), please * + ---------------------------------------------------------- + +June 14, 2000 Gabriele Cosmo (STEP-V01-01-00) +- Fixes for porting on Win/NT VC++: + o dirobj[.h.cc]: deactivated Reset() and Home() functions. + o scl_cf.h: undefine HAVE_UNISTD_H for WIN32. + o stat.h: don't use hard-coded path for on WIN32. + o ExpDict.cc: don't declare external memmove() for WIN32. + o STEPcomplex.cc, SdaiCONFIG_CONTROL_DESIGN.cc: use explicit typedef + StepApplicationInstanceType for SDAI::Application_instance and + StepSelectType for SDAI::Select respectively, when invoking a method + of the base class in scope. + +February 14, 2000 Gabriele Cosmo (STEP-V01-00-01) +- Fixes for porting on supported platforms/compilers: + o STEPfile.h: removed declaration of function HeaderId(int) + since not used and NOT implemented; + o sdai[.h.cc]: replaced use of MAXLONG and MINFLOAT with LONG_MAX + and FLT_MIN respectively. + o STEPfile_inline.cc: added explicit cast to float in argument for + 'ceil' function. + +January 31, 2000 Gabriele Cosmo (STEP-V01-00-00) +- Upgraded NIST STEP Reader to SCL (STEP Class Library) 3.2. +- Implemented porting on supported platforms/compilers. +- Implemented changes for ISO-ANSI C++ compliance. +- Added README and History files. diff --git a/source/geometry/solids/STEP/README b/source/geometry/solids/STEP/README new file mode 100644 index 0000000000..f5c09a77bf --- /dev/null +++ b/source/geometry/solids/STEP/README @@ -0,0 +1,316 @@ +$Id: README,v 1.1 2000/02/14 12:22:47 gcosmo Exp $ +----------------------------------------------------------------------------- + + NIST STEP Reader + ---------------- + +This directory contains the source code for the NIST STEP Reader as it has +been extracted from version 3.2 of SCL (the STEP Class Library). The code +has been ported on all supported Geant4 UNIX platforms-compilers: DEC-cxx, +HP-aCC, SUN-CC and Linux-g++. Modifications have also been applied in order +to make the code compilable on compilers requiring strict ISO-ANSI C++ +compliance. Some fixes have been introduced for reason of porting. +Here also follows part of the original README document part of the SCL +distribution; please, notice that only the part related to the STEP Reader +is relevant here. The code for the Application Protocol (Configuration +controlled design) has been generated by means of the standard fedex-plus +application through the AP203 control schema provided in the SCL package. + - GC +----------------------------------------------------------------------------- +README.scl (top level README) February 1998 + +THE NIST STEP TOOLSET +===================== + +Included in this release of the NIST STEP Toolset are + + STEP Class Library (SCL) + fedex_plus + fedex_idl + fedex_os + Data Probe application + Part 21 Reader application + mkProbe script + NIST EXPRESS Toolkit + NIST EXPRESS Pretty Printing Toolkit + +The focus of our work since our last release has been on developing a +reference implementation of the binding of EXPRESS to C++ and IDL as +specified by STEP's Parts 23 and 26 respectively. To this we have +added a persistence capability (based on the ObjectStore OODB from +Object Design, Inc) and a distribution capability (based on Orbix by +Iona Technologies, Ltd). We also experimented with the Open OODB from +Texas Instruments and with DSOM from IBM. + +The STEP Class Library (SCL) and fedex_plus are used to build +STEP-related applications in C++. They support STEP Parts 21 (the +exchange file format), 22 (the functional specification of STEP's +Standard Data Access Interface, SDAI), 23 (the C++ binding to SDAI), +and 26 (the IDL interface to SDAI). fedex_plus is an application of +the NIST EXPRESS Toolkit (based on STEP Part 11) which generates a C++ +class library representation of an EXPRESS schema based on STEP's Part +23. The generated classes work with the STEP Class Library. The NIST +EXPRESS Pretty Printing Toolkit is used to format and output EXPRESS. +fedex_os is used to generate software (in addition to fedex_plus) +needed to use SCL with the ObjectStore OODB. fedex_idl translates +EXPRESS to the Interface Definition Language (according to Part 26) +for use with Orbix. + +The Data Probe software and mkProbe script are used to generate +schema-specific class libraries (a.k.a. "Schema Class Library"), Data +Probe editors, and Part 21 file readers. mkProbe generates a C++ +library representing a schema (using fedex_plus) and links the schema +library with other libraries of the SCL and Data Probe to create a +schema specific editor, known as a Data Probe. The Data Probe is a +graphical editor for STEP data; it is used to browse and edit data +instances of the objects in an EXPRESS model. It may also be used to +visually browse the objects contained in the EXPRESS schema itself. +Data Probes are X Windows-based and use the InterViews Toolkit from +Stanford University. + +The Data Probe source code was designed with reusability in mind. The +runtime-code uses three class libraries: the STEP Class Library +(developed at NIST), the InterViews Toolkit (user interface +developer's toolkit from Stanford), and a standard C++ Class Library. +The NIST STEP Class Library is divided into component libraries +including STEP Core, Editor, Utilities, Data Access Interface, +Interviews extensions, and Probe. The STEP Core, Editor, and Utils +libraries can be used without the user interface libraries (Interviews +extensions and Probe) for applications needing to represent the +EXPRESS data structures. At this point the Data Access Interface is a +partial implementation of SDAI's Session schema. + +Dependencies between these modules have been minimized so that an +executable program, the Data Probe, can be easily reconfigured to +support different conceptual schemas. + +We have experimented with replacing the Interviews-based interface +with a tcl interface with good success; however, it is not in our work +plan to complete. If anyone is interested in extending the toolkit +with a more modern interface, we would be glad to discuss it with you. + +The Part 21 Reader was originally developed to test whether a Schema +Class built and linked without problems. It is also useful for +checking Part 21 files. It displays the error messages from the STEP +Class Library as a file is read. + + +SYSTEM REQUIREMENTS +=================== + +Depending on how you want to use the toolkit, additional pieces of +software will need to be available on your local system: + + - UNIX SunOS 4.1.x or Solaris 5.x operating system. + At NIST, the SCL including the Data Probe has been built on + SunOS workstations. The SCL without the Data Probe has been + built on Solaris. (We did not build the InterViews Library + on Solaris.) NOTE: earlier versions of the SCL 2.1 without + the Data Probe had been ported to AIX, HP, linux, and Windows NT. + + - a C++ compiler -- cfront version 2.1 or higher + + NOTE: The current SCL release has been built with SUN C/C++, + and GNU's gcc/g++ compilers. Earlier versions of the SCL were + built using CenterLine on SunOS and CSet++ on AIX. + + If you successfully port the current version to other + compilers and/or operating systems (and are willing to share) + please contact us (stepcl@cme.nist.gov) so that we can point + others to it. + + - The NIST EXPRESS Toolkit -- available from NIST + Included in this release; also available as: + ftp.cme.nist.gov:pub/step/npttools/exptk.tar.Z + + - The NIST EXPRESS Pretty Printer -- available from NIST + Included in this release; also available as: + ftp.cme.nist.gov:pub/step/npttools/exppp.tar.Z + +The following components are optional: + + - Version 3.1 of the InterViews Toolkit from Stanford. + ftp://interviews.stanford.edu:pub/3.1.tar.Z + + NOTE: InterViews is only needed for the Data Probe portion of + the toolkit. The STEP Class Library without the Data Probe + and InterViews has been built on more platforms than with these + components. + + - Orbix version 2.0. Available from Iona Technologies: +http://www.iona.com + + - Object Store version 4. Available from Object Design Inc.: +http://www.odi.com. + + +FOR MORE INFORMATION +==================== + +SCL HOME PAGE +------------- + +The SCL home page is located on the world wide web at, + +http://www.nist.gov/scl + +The SCL home page will provide important, up-to-date information on +the status of the SCL, new developments and fixes, links to related +software and projects, and may eventually contain an FAQ sheet. + +SCL DOCUMENTATION +----------------- + +Documentation can be accessed from the SCL world wide web home page +located at http://www.nist.gov/scl +The following files (in postscript format) are particularly relevant: + +Design of a C++ Software Library for Implementing EXPRESS: The NIST + STEP Class Library + +Data Probe User's Guide + +Data Probe: A Tool for EXPRESS-based Data + +Architecture for the Validation Testing System Software + +Validation Testing System Software Reusable Software Component Design + +Diagrams of basic SCL data structures + + +ISO DOCUMENTATION +----------------- + +Copies of the International Standard documents (including STEP Part 11 +the EXPRESS Language Reference Manual, Part 21 the STEP Exchange File +Format, Part 22 STEP's Standard Data Access Interface, and Part 23 the +C++ language binding to SDAI) can be ordered from the ISO +International Organization of Standardization or your national +body. The United States distribution is managed by the US Product Data +Exchange Association at: + +U.S. Product Data Association (USPro) +Trident Research Center, Suite 204 +5300 International Blvd. +N. Charleston, SC 29418 + +http://www.uspro.scra.org +uspro@scra.org +Ph: 803-760-3327 +FAX: 803-760-3349 + +MAILING LIST +------------ + +Announcements of new releases or bug fixes will also be sent to the +mailing list scl@cme.nist.gov. To be added to the scl mailing list +send a request to majordomo@cme.nist.gov. Include in the body of the +message: + + subscribe scl + +For additional help, include in the body of the message: + + help + +If you use a signature within your email, end your majordomo +command sequence with the word "end". For example, + + subscribe scl + end + + +REPORTING PROBLEMS AND SUGGESTIONS +================================== + +We would like feedback on all parts of the software. Please let us +know if you + + - have problems following the instructions in the README file, + - have problems installing the software, + - have problems compiling your own valid EXPRESS schema, or + - have suggestions for improvements to the software. + - really like the software :) + +Send your comments to + + stepcl@cme.nist.gov + +(For users of version 2, note the new mailing address of "stepcl...".) + +Questions about availability or accessing the software should be +directed to the SOLIS administrator + +Gaylen Rinaudot +npt-info@cme.nist.gov +301-975-3386 + +ACKNOWLEDGMENTS +=============== + +The STEP Class Library (SCL) was developed by the Manufacturing +Systems Integration Division at the National Institute of Standards +and Technology (http://www.mel/nist.gov/msid) to support testing of +the Standard for the Exchange of Product Model Data (a.k.a STEP) and +validation of STEP's emerging implementation specifications. Funding +for the project has come from the U.S. Department of Commerce, and the +Department of Defense agencies including the Office of the Defense +CALS (Continuous Acquisition and Life-Cycle Support) Executive and the +Defense Advanced Research Projects Agency (DARPA). Recent +enhancements were sponsored by the National Industrial Information +Infrastructure Consortium (NIIIP) (http://www.niiip.org) and the NAMT +Framework project +(http://www.mel.nist.gov/msid/projs/97projs/framewrk.htm) of NIST's +Systems Integration for Manufacturing Applications (SIMA) program +(http://www.mel.nist.gov/msid/sima/sima.htm). + +LICENSING RESTRICTIONS and DISCLAIMERS +====================================== + +This software was produced by the National Institute of Standards and +Technology (NIST), an agency of the U.S. government, and by statute +is not subject to copyright in the United States. Recipients of this +software assume all responsibility associated with its operation, +modification, maintenance, and subsequent re-distribution. + +There is no warranty for the NIST STEP Toolkit. +If the NIST STEP Toolkit is modified by someone else and passed on, +NIST wants the Toolkit's recipients to know that what they have is not +what NIST originally distributed. + +Distribution Rights +1. Anyone may copy and distribute verbatim copies of the NIST STEP Toolkit + source code as received in any medium. + +2. Anyone may modify their copy or copies of the NIST STEP Toolkit source + code or any portion of it, and copy and distribute such modifications + provided that all modifications are clearly associated with the entity + that performs the modifications. + +!!!!!!!!!!!!!!!!!!!!!!!!!!!!DISCLAIMERS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +Names of companies and products are provided in order to adequately +specify procedures and equipment used. In no case does such +identification imply recommendation or endorsement by the National +Institute of Standards and Technology, nor does it imply that the +products are necessarily the best available for the purpose. + +NO WARRANTY +=========== + +NIST PROVIDES ABSOLUTELY NO WARRANTY. THE NIST STEP TOOLKIT +IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER +EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS +WITH YOU. SHOULD ANY PORTION OF THE NIST STEP TOOLKIT PROVE DEFECTIVE, +YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR, OR CORRECTION. + +IN NO EVENT WILL NIST BE LIABLE FOR DAMAGES, INCLUDING ANY LOST +PROFITS, LOST MONIES, OR OTHER SPECIAL, INCIDENTAL OR CONSEQUENTIAL +DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE (INCLUDING BUT NOT +LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE, OR LOSSES +SUSTAINED BY THIRD PARTIES, OR A FAILURE OF THE PROGRAM TO OPERATE +WITH PROGRAMS NOT DISTRIBUTED BY NIST) THE PROGRAMS, EVEN IF YOU HAVE +BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY +ANY OTHER PARTY. diff --git a/source/geometry/solids/STEP/include/EntityInst.h b/source/geometry/solids/STEP/include/EntityInst.h deleted file mode 100644 index 9551b4d001..0000000000 --- a/source/geometry/solids/STEP/include/EntityInst.h +++ /dev/null @@ -1,83 +0,0 @@ - - -// - - - -// -// $Id: EntityInst.h,v 1.2 1999/05/21 20:20:28 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -#ifndef ENTITYINST_H -#define ENTITYINST_H 1 - -// This entity is the supertype of all entities whose instances may be -// queried or manipulated through the SDAI (i.e., application schema -// entities, SDAI session schema entities, and SDAI dictionary schema -// entities). - -typedef class EntityInstance* EntityInstanceH; - -class EntityInstance { - -//friend class SdaiInstance; -//friend class AppInstance; - -public: -EntityInstance() {} -//EntityInstance(const EntityInstance&); - -virtual ~EntityInstance() {} - -public: - -//const ModelH FindEntityInstanceModel() const; - -//virtual Boolean IsInstanceOf(const String& typeName) const; - -//virtual Boolean IsKindOf(const String& typeName) const; - -//virtual Boolean IsSDAIKindOf(const String& typeName) const; - -//Logical IsSame(const EntityInstanceH& entInst) const; - -//virtual Logical IsEqual(const EntityInstanceH& entInst); - -#ifdef SDAI_CPP_LATE_BINDING -PrimitiveH GetAttr(const AttrH& attDef); -PrimitiveH GetAttr(const String& attName); -#endif - -//static const SDAIAGGRH(Set, EntityInstanceH) -//GetEntityExtents(const ModelH& model); - -//static SDAIAGGRH(Set, EntityInstanceH) GetEntityExtents(ModelH& model); - -#ifdef SDAI_CPP_LATE_BINDING -virtual const EntityTypeSetH GetInstanceType() const; -#endif - -#ifdef SDAI_CPP_LATE_BINDING -virtual Boolean IsInstanceOf(const EntityTypeSetH& typeSet) -const; -#endif - -#ifdef SDAI_CPP_LATE_BINDING -virtual Boolean IsKindOf(const EntityTypeSetH& typeSet) const; -#endif - -#ifdef SDAI_CPP_LATE_BINDING -virtual Boolean IsSDAIKindOf(const EntityTypeSetH& typeSet) -const; -#endif - -#ifdef SDAI_CPP_LATE_BINDING -virtual Boolean TestAttr(const AttrH& attDef) ; -virtual Boolean TestAttr(const name& attName) const; -#endif - -//String GetInstanceTypeName() const; - -}; - -#endif diff --git a/source/geometry/solids/STEP/include/Enumeration.h b/source/geometry/solids/STEP/include/Enumeration.h deleted file mode 100644 index 0f59774fc1..0000000000 --- a/source/geometry/solids/STEP/include/Enumeration.h +++ /dev/null @@ -1,176 +0,0 @@ - - -// - - - -// -// $Id: Enumeration.h,v 1.3 1999/12/15 14:50:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -#ifndef ENUMERATION_H -#define ENUMERATION_H - -/* -* NIST STEP Core Class Library -* clstepcore/Enumeration.h -* May 1995 -* K. C. Morris -* David Sauder - -* Development of this software was funded by the United States Government, -* and is not subject to copyright. -*/ - -/* */ - -#ifdef __O3DB__ -#include -#endif - -#include -#include - -#define ENUM_NULL -1 - -class STEPenumeration { - friend G4std::ostream &operator<< ( G4std::ostream&, const STEPenumeration& ); - protected: - int v; // integer value of enumeration instance - // mapped to a symbolic value in the elements - - int set_value (const char * n); - int set_value (const int n); - virtual ~STEPenumeration () { - } - - public: - - virtual int no_elements () const =0; - virtual const char * Name () const =0; - const char * get_value_at (int n) const { return element_at (n); } - virtual const char * element_at (int n) const =0; - - Severity EnumValidLevel(const char *value, ErrorDescriptor *err, - int optional, char *tokenList, - int needDelims = 0, int clearError = 1); - - Severity EnumValidLevel(G4std::istream &in, ErrorDescriptor *err, - int optional, char *tokenList, - int needDelims = 0, int clearError = 1); - - const int asInt () const { return v; } - - const char * asStr (SCLstring &s) const; - void STEPwrite (G4std::ostream& out = G4cout) const; - const char * STEPwrite (SCLstring &s) const; - - Severity StrToVal (const char * s, ErrorDescriptor *err, int optional = 1); - Severity STEPread(G4std::istream& in, ErrorDescriptor *err, int optional = 1); - Severity STEPread(const char *s, ErrorDescriptor *err, int optional = 1); - - int put (int val) { return set_value (val); } - int put (const char * n) { return set_value (n); } - int is_null () const { return ( v == ENUM_NULL ); } - int set_null() { return put (ENUM_NULL); } - STEPenumeration& operator= (const int); - STEPenumeration& operator= (const STEPenumeration&); - - void DebugDisplay (G4std::ostream& out =G4cout) const; - protected: - Severity ReadEnum(G4std::istream& in, ErrorDescriptor *err, int AssignVal = 1, - int needDelims = 1); -}; - - -enum LOGICAL { sdaiFALSE, sdaiTRUE, sdaiUNKNOWN }; - -#define F sdaiFALSE -#define U sdaiUNKNOWN -#define T sdaiTRUE - -class Boolean : -public STEPenumeration { - public: - const char * Name () const { - return "Boolean"; - } - - Boolean (char * val =0) { - set_value (val); - } - Boolean (LOGICAL val); - virtual ~Boolean () { - } - inline virtual int no_elements () const { - return 2; - } - operator LOGICAL () const; - operator int () const; - int operator ==( LOGICAL log ) const; - - virtual const char * element_at (int n) const; - -} -; - -inline Boolean * create_Boolean () { return new Boolean ; } - -class Logical : -public STEPenumeration { - public: - const char * Name () const { - return "Logical"; - } - - Logical (char * val =0) { - set_value (val); - } - Logical (LOGICAL val) { - set_value (val); - } - - // Josh L, 3/24/95 - Logical (const Boolean& boolean) { - v = boolean.asInt(); - } - - virtual ~Logical () { - } - inline virtual int no_elements () const { - return 3; - } - operator LOGICAL () const; - - virtual const char * element_at (int n) const; - -} -; - -inline Logical * create_Logical () { return new Logical ; } - -// Josh L, 3/24/95 -// These constants are required for Part 23. We declare them as statics -// inside a struct in order to prevent name conflicts when linking with -// other libraries. This technique is discussed in "Effective C++" by -// Scott Meyers, Addison-Wesley, 1992, pp. 93-95. - -// GEANT4 workaround: -// TRUE and FALSE are sometimes defined as preprocessor symbols -// let's get rid of them until the struct has been parsed - -struct SDAI { - static const Logical UNKNOWN; - static const Boolean SdaiTRUE; - static const Boolean SdaiFALSE; -}; - -#endif - - - - - - - - diff --git a/source/geometry/solids/STEP/include/ExpDict.h b/source/geometry/solids/STEP/include/ExpDict.h index 836956af66..76c6601f81 100644 --- a/source/geometry/solids/STEP/include/ExpDict.h +++ b/source/geometry/solids/STEP/include/ExpDict.h @@ -1,20 +1,10 @@ - - -// - - - -// -// $Id: ExpDict.h,v 1.2 1999/05/21 20:20:29 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// #ifndef EXPDICT_H #define EXPDICT_H /* * NIST STEP Core Class Library * clstepcore/ExpDict.h -* May 1995 +* April, 1997 * K. C. Morris * David Sauder @@ -22,44 +12,41 @@ * and is not subject to copyright. */ -/* */ +/* $Id: ExpDict.h,v 1.3 2000/01/21 13:42:30 gcosmo Exp $ */ +#ifdef __OSTORE__ +#include // Required to access ObjectStore Class Library +#endif #ifdef __O3DB__ #include #endif -class STEPentity; -typedef STEPentity * (* Creator) () ; +#include +//class SCLP23(Application_instance); + +#if __OSTORE__ +typedef SCLP23(Application_instance) * (* Creator) (os_database *) ; +#else +typedef SCLP23(Application_instance) * (* Creator) () ; +#endif //class StringAggregate; +enum AttrType_Enum { + AttrType_Explicit = 0, + AttrType_Inverse, + AttrType_Deriving, + AttrType_Redefining + }; + #include -#include #include - -class SchemaDescriptor; -class AttrDescriptor; -class InverseAttrDescriptor; -class EntityDescriptor; -class TypeDescriptor; -class EnumerationTypeDescriptor; -class AggrTypeDescriptor; -class ArrayTypeDescriptor; -class SetTypeDescriptor; -class ListTypeDescriptor; -class SelectTypeDescriptor; -class StringTypeDescriptor; -class BagTypeDescriptor; -class RealTypeDescriptor; -class EntityDescLinkNode; -class EntityDescriptorList; -class AttrDescLinkNode; -class AttrDescriptorList; -class InverseAttrDescLinkNode; -class InverseAttrDescriptorList; -class TypeDescLinkNode; -class TypeDescriptorList; +//#include +#include +//#include +#include +#include /* ** I tried these variations on the TypeDescriptor to get them to be @@ -91,6 +78,7 @@ extern const TypeDescriptor * const t_BOOLEAN_TYPE; extern const TypeDescriptor * const t_LOGICAL_TYPE; */ +/* extern const TypeDescriptor * t_INTEGER_TYPE; extern const TypeDescriptor * t_REAL_TYPE; extern const TypeDescriptor * t_NUMBER_TYPE; @@ -98,176 +86,28 @@ extern const TypeDescriptor * t_STRING_TYPE; extern const TypeDescriptor * t_BINARY_TYPE; extern const TypeDescriptor * t_BOOLEAN_TYPE; extern const TypeDescriptor * t_LOGICAL_TYPE; +*/ + +// defined and created in Registry.inline.cc +extern const TypeDescriptor * t_sdaiINTEGER; +extern const TypeDescriptor * t_sdaiREAL; +extern const TypeDescriptor * t_sdaiNUMBER; +extern const TypeDescriptor * t_sdaiSTRING; +extern const TypeDescriptor * t_sdaiBINARY; +extern const TypeDescriptor * t_sdaiBOOLEAN; +extern const TypeDescriptor * t_sdaiLOGICAL; /////////////////////////////////////////////////////////////////////////////// -// SchemaDescriptor - a class of this type is generated and contains -// the name of the schema. +// Dictionary_instance /////////////////////////////////////////////////////////////////////////////// -class SchemaDescriptor { +class Dictionary_instance { protected: - const char * _name ; - public: + Dictionary_instance() {} + Dictionary_instance(const Dictionary_instance&) {} - SchemaDescriptor (const char *schemaName ) { _name = schemaName; } - virtual ~SchemaDescriptor () { } - - const char * Name() const { return _name; } - void Name (const char * n) { _name = n; } -}; - - -/////////////////////////////////////////////////////////////////////////////// -// EntityDescriptor -// An instance of this class will be generated for each entity type -// found in the schema. This should probably be derived from the -// CreatorEntry class (see STEPentity.h). Then the binary tree that the -// current software builds up containing the entities in the schema -// will be building the same thing but using the new schema info. -// nodes (i.e. EntityDesc nodes) for each entity. -/////////////////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////////////////// - -class EntityDescLinkNode : public SingleLinkNode { - - private: - protected: - EntityDescriptor * _entityDesc; - - public: - EntityDescLinkNode() { _entityDesc = 0; } - virtual ~EntityDescLinkNode() { } - - EntityDescriptor *EntityDesc() const { return _entityDesc; } - void EntityDesc(EntityDescriptor *ed) { _entityDesc = ed; } -}; - -class EntityDescriptorList : public SingleLinkList { - - private: - protected: - public: - EntityDescriptorList() { } - virtual ~EntityDescriptorList() { } - - virtual SingleLinkNode * NewNode () { return new EntityDescLinkNode; } - - EntityDescLinkNode * AddNode (EntityDescriptor * ed) { - EntityDescLinkNode *node = (EntityDescLinkNode *) NewNode(); - node->EntityDesc(ed); - SingleLinkList::AppendNode(node); - return node; - } -}; - -class EntityDescItr -{ - protected: - const EntityDescriptorList &edl; - const EntityDescLinkNode *cur; - - public: - EntityDescItr(const EntityDescriptorList &edList) : edl(edList) - { - cur = (EntityDescLinkNode *)( edl.GetHead() ); - } - ~EntityDescItr() { }; - - void ResetItr() { cur = (EntityDescLinkNode *)( edl.GetHead() ); } - - const EntityDescriptor * NextEntityDesc(); -}; - -/////////////////////////////////////////////////////////////////////////////// - -class AttrDescLinkNode : public SingleLinkNode { - private: - protected: - AttrDescriptor *_attrDesc; - public: - AttrDescLinkNode() { _attrDesc = 0; } - virtual ~AttrDescLinkNode() { } - - const class AttrDescriptor *AttrDesc() const { return _attrDesc; } - void AttrDesc(AttrDescriptor *ad) { _attrDesc = ad; } -}; - -class AttrDescriptorList : public SingleLinkList { - private: - protected: - public: - AttrDescriptorList() { } - virtual ~AttrDescriptorList() { } - - virtual SingleLinkNode * NewNode () { return new AttrDescLinkNode; } - AttrDescLinkNode * AddNode (AttrDescriptor * ad) { - AttrDescLinkNode *node = (AttrDescLinkNode *) NewNode(); - node->AttrDesc(ad); - SingleLinkList::AppendNode(node); - return node; - } -}; - -class AttrDescItr -{ - protected: - const AttrDescriptorList &adl; - const AttrDescLinkNode *cur; - - public: - AttrDescItr(const AttrDescriptorList &adList) : adl(adList) - { - cur = (AttrDescLinkNode *)( adl.GetHead() ); - } - ~AttrDescItr() { }; - - void ResetItr() { cur = (AttrDescLinkNode *)( adl.GetHead() ); } - - const AttrDescriptor * NextAttrDesc(); -}; - -/////////////////////////////////////////////////////////////////////////////// - -class InverseAttrDescLinkNode : public AttrDescLinkNode { - private: - protected: - class InverseAttrDescriptor *_invAttrDesc; - public: - InverseAttrDescLinkNode() { _invAttrDesc = 0; } - virtual ~InverseAttrDescLinkNode() { } - - const InverseAttrDescriptor *InverseAttrDesc() const { return _invAttrDesc; } - void InverseAttrDesc(InverseAttrDescriptor *iad) { _invAttrDesc = iad; } -}; - -class InverseAttrDescriptorList : public AttrDescriptorList { - private: - protected: - public: - InverseAttrDescriptorList() { } - virtual ~InverseAttrDescriptorList() { } - virtual SingleLinkNode * NewNode () { return new InverseAttrDescLinkNode; } -}; - -class InverseADItr -{ - protected: - const InverseAttrDescriptorList &iadl; - const InverseAttrDescLinkNode *cur; - - public: - InverseADItr (const InverseAttrDescriptorList &iadList) : iadl(iadList) - { - cur = (InverseAttrDescLinkNode *)( iadl.GetHead() ); - } - ~InverseADItr() { }; - - void ResetItr() - { cur = (InverseAttrDescLinkNode *)( iadl.GetHead() ); } - - const InverseAttrDescriptor * NextInverseAttrDesc(); + virtual ~Dictionary_instance(); }; /////////////////////////////////////////////////////////////////////////////// @@ -277,8 +117,8 @@ class TypeDescLinkNode : public SingleLinkNode { protected: TypeDescriptor *_typeDesc; public: - TypeDescLinkNode() { _typeDesc = 0; } - virtual ~TypeDescLinkNode() { } + TypeDescLinkNode(); + virtual ~TypeDescLinkNode(); const TypeDescriptor *TypeDesc() const { return _typeDesc; } void TypeDesc(TypeDescriptor *td) { _typeDesc = td; } @@ -288,8 +128,8 @@ class TypeDescriptorList : public SingleLinkList { private: protected: public: - TypeDescriptorList() { } - virtual ~TypeDescriptorList() { } + TypeDescriptorList(); + virtual ~TypeDescriptorList(); virtual SingleLinkNode * NewNode () { return new TypeDescLinkNode; } @@ -308,17 +148,645 @@ class TypeDescItr const TypeDescLinkNode *cur; public: - TypeDescItr (const TypeDescriptorList &tdList) : tdl(tdList) - { - cur = (TypeDescLinkNode *)( tdl.GetHead() ); - } - ~TypeDescItr() { }; + TypeDescItr (const TypeDescriptorList &tdList); + virtual ~TypeDescItr(); void ResetItr() { cur = (TypeDescLinkNode *)( tdl.GetHead() ); } const TypeDescriptor * NextTypeDesc(); }; +/////////////////////////////////////////////////////////////////////////////// + +class EntityDescLinkNode : public SingleLinkNode { + + private: + protected: + EntityDescriptor * _entityDesc; + + public: + EntityDescLinkNode(); + virtual ~EntityDescLinkNode(); + + EntityDescriptor *EntityDesc() const { return _entityDesc; } + void EntityDesc(EntityDescriptor *ed) { _entityDesc = ed; } +}; + +class EntityDescriptorList : public SingleLinkList { + + private: + protected: + public: + EntityDescriptorList(); + virtual ~EntityDescriptorList(); + + virtual SingleLinkNode * NewNode () { return new EntityDescLinkNode; } + + EntityDescLinkNode * AddNode (EntityDescriptor * ed) { + EntityDescLinkNode *node = (EntityDescLinkNode *) NewNode(); + node->EntityDesc(ed); + SingleLinkList::AppendNode(node); + return node; + } +}; + +typedef EntityDescriptorList * Entity__set_ptr; +typedef Entity__set_ptr Entity__set_var; + +class EntityDescItr +{ + protected: + const EntityDescriptorList &edl; + const EntityDescLinkNode *cur; + + public: + EntityDescItr(const EntityDescriptorList &edList); + virtual ~EntityDescItr(); + + void ResetItr() { cur = (EntityDescLinkNode *)( edl.GetHead() ); } + + const EntityDescriptor * NextEntityDesc(); +}; + + +/////////////////////////////////////////////////////////////////////////////// + + +/////////////////////////////////////////////////////////////////////////////// +// Interfaced_item +/////////////////////////////////////////////////////////////////////////////// + +class Interfaced_item : public Dictionary_instance { + protected: + Interfaced_item(); + Interfaced_item(const Interfaced_item&); + Interfaced_item(const char *foreign_schema); + virtual ~Interfaced_item(); + public: + Express_id _foreign_schema; + + const Express_id foreign_schema_(); +// private: + void foreign_schema_(const Express_id&); +}; + +/////////////////////////////////////////////////////////////////////////////// +// Explicit_item_id +/////////////////////////////////////////////////////////////////////////////// + +class Explicit_item_id : public Interfaced_item{ + protected: + Explicit_item_id(); + Explicit_item_id(const Explicit_item_id&); + Explicit_item_id(const char *foreign_schema, TypeDescriptor *ld, + const char *oi, const char *ni) + : Interfaced_item(foreign_schema), _local_definition(ld), _original_id(oi), _new_id(ni) {} + virtual ~Explicit_item_id(); + public: + // definition in the local schema. The TypeDescriptor (or subtype) is not + // implemented quite right - the name in it is the original (foreign + // schema) name. The USE or REFERENCED renames are listed in + // TypeDescriptor's altNames member variable. + // Warning: This is currently a null ptr for objects other than + // types and entities - that is - if this is a USEd FUNCTION or PROCEDURE + // this ptr will be null. + const TypeDescriptor * _local_definition; + + // name in originating schema - only exists if it has been renamed. + Express_id _original_id; + + Express_id _new_id; // original or renamed name via USE or REFERENCE (non-SDAI) + + const TypeDescriptor *local_definition_() const + { return _local_definition; } + + const Express_id original_id_() const + { return _original_id; } + + // non-sdai, renamed name + const Express_id new_id_() const + { return _new_id; } + + // return string "USE" or "REFERENCE" + virtual const char * EXPRESS_type()=0; + +// private: + void local_definition_(const TypeDescriptor *td) + { _local_definition = td; } + void original_id_(const Express_id& ei) + { _original_id = ei; } + + // non-sdai + void new_id_(const Express_id& ni) + { _new_id = ni; } +}; + +typedef Explicit_item_id * Explicit_item_id_ptr; + +class Used_item : public Explicit_item_id { + public: + Used_item() {} + Used_item(const char *foreign_schema, TypeDescriptor *ld, + const char *oi, const char *ni) + : Explicit_item_id(foreign_schema, ld, oi, ni) {} + virtual ~Used_item(); + + const char * EXPRESS_type() { return "USE"; } +}; + +typedef Used_item * Used_item_ptr; + +class Referenced_item : public Explicit_item_id { + public: + Referenced_item() {} + Referenced_item(const char *foreign_schema, TypeDescriptor *ld, + const char *oi, const char *ni) + : Explicit_item_id(foreign_schema, ld, oi, ni) {} + virtual ~Referenced_item(); + + const char * EXPRESS_type() { return "REFERENCE"; } +}; + +typedef Referenced_item * Referenced_item_ptr; + +class Explicit_item_id__set { +public: + Explicit_item_id__set(int = 16); + ~Explicit_item_id__set(); + + Explicit_item_id_ptr& operator[](int index); + void Insert(Explicit_item_id_ptr, int index); + void Append(Explicit_item_id_ptr); + void Remove(int index); + int Index(Explicit_item_id_ptr); + + int Count(); + void Clear(); +private: + void Check(int index); +private: + Explicit_item_id_ptr* _buf; + int _bufsize; + int _count; +}; + +typedef Explicit_item_id__set* Explicit_item_id__set_ptr; +typedef Explicit_item_id__set_ptr Explicit_item_id__set_var; + +/////////////////////////////////////////////////////////////////////////////// +// Implicit_item_id +/////////////////////////////////////////////////////////////////////////////// + +class Implicit_item_id : public Interfaced_item { + protected: + Implicit_item_id(); + Implicit_item_id(Implicit_item_id&); + virtual ~Implicit_item_id(); + public: + const TypeDescriptor * _local_definition; + + const TypeDescriptor *local_definition_() const + { return _local_definition; } + +// private: + void local_definition_(const TypeDescriptor *td) + { _local_definition = td; } +}; + +typedef Implicit_item_id * Implicit_item_id_ptr; + +/////////////////////////////////////////////////////////////////////////////// +// Implicit_item_id__set +/////////////////////////////////////////////////////////////////////////////// + +class Implicit_item_id__set { +public: + Implicit_item_id__set(int = 16); + ~Implicit_item_id__set(); + + Implicit_item_id_ptr& operator[](int index); + void Insert(Implicit_item_id_ptr, int index); + void Append(Implicit_item_id_ptr); + void Remove(int index); + int Index(Implicit_item_id_ptr); + + int Count(); + void Clear(); +private: + void Check(int index); +private: + Implicit_item_id_ptr* _buf; + int _bufsize; + int _count; +}; + +typedef Implicit_item_id__set* Implicit_item_id__set_ptr; +typedef Implicit_item_id__set_ptr Implicit_item_id__set_var; + +/////////////////////////////////////////////////////////////////////////////// +// Interface_spec +/////////////////////////////////////////////////////////////////////////////// + +class Interface_spec : public Dictionary_instance { + public: + Express_id _current_schema_id; // schema containing the USE/REF stmt + // set of objects from USE/REFERENCE stmt(s) + Explicit_item_id__set_var _explicit_items; + Implicit_item_id__set_var _implicit_items; //not yet initialized for schema + + // non-SDAI, not useful for SDAI use of Interface_spec (it would need to + // be a list). + // schema that defined the USE/REFd objects + Express_id _foreign_schema_id; + + // non-SDAI, not useful for SDAI use of Interface_spec (it would need to + // be a list of ints). + // schema USEs or REFERENCEs all objects from foreign schema + int _all_objects; + + Interface_spec(); + Interface_spec(Interface_spec &); // not tested + Interface_spec(const char * cur_sch_id, const char * foreign_sch_id, + int all_objects=0); + virtual ~Interface_spec(); + + Express_id current_schema_id_() { return _current_schema_id; } + Express_id foreign_schema_id_() { return _foreign_schema_id; } + + Explicit_item_id__set_var explicit_items_() + { return _explicit_items; } + + // this is not yet initialized for the schema + Implicit_item_id__set_var implicit_items_() + { return _implicit_items; } + +// private: + void current_schema_id_(const Express_id &ei) { _current_schema_id = ei; } + void foreign_schema_id_(const Express_id &fi) { _foreign_schema_id = fi; } + + int all_objects_() { return _all_objects; } + void all_objects_(int ao) { _all_objects = ao; } +}; + +typedef Interface_spec * Interface_spec_ptr; + +class Interface_spec__set { +public: + Interface_spec__set(int = 16); + ~Interface_spec__set(); + + Interface_spec_ptr& operator[](int index); + void Insert(Interface_spec_ptr, int index); + void Append(Interface_spec_ptr); + void Remove(int index); + int Index(Interface_spec_ptr); + + int Count(); + void Clear(); +private: + void Check(int index); +private: + Interface_spec_ptr* _buf; + int _bufsize; + int _count; +}; + +typedef Interface_spec__set* Interface_spec__set_ptr; +typedef Interface_spec__set_ptr Interface_spec__set_var; + + +class Type_or_rule : public Dictionary_instance { + public: + Type_or_rule(); + Type_or_rule(const Type_or_rule&); + virtual ~Type_or_rule(); +}; + +typedef Type_or_rule* Type_or_rule_ptr; +typedef Type_or_rule_ptr Type_or_rule_var; + +class Where_rule : public Dictionary_instance { + public: + Express_id _label; + Type_or_rule_var _type_or_rule; + + // non-SDAI + SCLstring _comment; // Comment contained in the EXPRESS. + // Should be properly formatted to include (* *) + // Will be written to EXPRESS as-is (w/out formatting) + + Where_rule(); + Where_rule(const Where_rule&); + Where_rule(const char * label, Type_or_rule_var tor=0) + : _label(label), _type_or_rule(tor) { } + virtual ~Where_rule(); + + Express_id label_() const { return _label; } + const Type_or_rule_var parent_item() const { return _type_or_rule; } + SCLstring comment_() const { return _comment; } + + void label_(const Express_id& ei) { _label = ei; } + void parent_item(const Type_or_rule_var& tor) { _type_or_rule = tor; } + void comment_(const char* c) { _comment = c; } +}; + +typedef Where_rule * Where_rule_ptr; + +class Where_rule__list { +public: + Where_rule__list(int = 16); + ~Where_rule__list(); + + Where_rule_ptr& operator[](int index); + void Insert(Where_rule_ptr, int index); + void Append(Where_rule_ptr); + void Remove(int index); + int Index(Where_rule_ptr); + + int Count(); + void Clear(); +private: + void Check(int index); +private: + Where_rule_ptr* _buf; + int _bufsize; + int _count; +}; + +typedef Where_rule__list* Where_rule__list_ptr; +typedef Where_rule__list_ptr Where_rule__list_var; + +class Global_rule : public Dictionary_instance { + public: + Express_id _name; + Entity__set_var _entities; // not implemented + Where_rule__list_var _where_rules; + Schema_ptr _parent_schema; + SCLstring _rule_text; // non-SDAI + + Global_rule(); + Global_rule(const char *n, Schema_ptr parent_sch, const char * rt); + Global_rule(Global_rule&); // not fully implemented + virtual ~Global_rule(); + + Express_id name_() const { return _name; } + const Entity__set_var entities_() const { return _entities; } + const Where_rule__list_var where_rules_() const { return _where_rules; } + const Schema_ptr parent_schema_() const { return _parent_schema; } + const char * rule_text_() { return _rule_text.chars(); } + + void name_(Express_id& n) { _name = n; } + void entities_(const Entity__set_var &e); // not implemented + void where_rules_(const Where_rule__list_var &wrl); // not implemented + void parent_schema_(const Schema_ptr &s) { _parent_schema = s; } + void rule_text_(const char * rt) { _rule_text = rt; } + +}; + +typedef Global_rule * Global_rule_ptr; + +class Global_rule__set { +public: + Global_rule__set(int = 16); + ~Global_rule__set(); + + Global_rule_ptr& operator[](int index); + void Insert(Global_rule_ptr, int index); + void Append(Global_rule_ptr); + void Remove(int index); + int Index(Global_rule_ptr); + + int Count(); + void Clear(); +private: + void Check(int index); +private: + Global_rule_ptr* _buf; + int _bufsize; + int _count; +}; + +typedef Global_rule__set* Global_rule__set_ptr; +typedef Global_rule__set_ptr Global_rule__set_var; + +class Uniqueness_rule : public Dictionary_instance { + public: + Express_id _label; + const EntityDescriptor * _parent_entity; + + // non-SDAI + SCLstring _comment; // Comment contained in the EXPRESS. + // Should be properly formatted to include (* *) + // Will be written to EXPRESS as-is (w/out formatting) + + Uniqueness_rule(); + Uniqueness_rule(const Uniqueness_rule&); + Uniqueness_rule(const char * label, EntityDescriptor *pe=0) + : _label(label), _parent_entity(pe) { } + virtual ~Uniqueness_rule(); + + Express_id label_() const { return _label; } + const EntityDescriptor * parent_() const { return _parent_entity; } + SCLstring &comment_() { return _comment; } + + void label_(const Express_id& ei) { _label = ei; } + void parent_(const EntityDescriptor * pe) { _parent_entity = pe; } + void comment_(const char* c) { _comment = c; } + +}; + +typedef Uniqueness_rule * Uniqueness_rule_ptr; + +class Uniqueness_rule__set { +public: + Uniqueness_rule__set(int = 16); + ~Uniqueness_rule__set(); + + Uniqueness_rule_ptr& operator[](int index); + void Insert(Uniqueness_rule_ptr, int index); + void Append(Uniqueness_rule_ptr); + void Remove(int index); + int Index(Uniqueness_rule_ptr); + + int Count(); + void Clear(); +private: + void Check(int index); +private: + Uniqueness_rule_ptr* _buf; + int _bufsize; + int _count; +}; + +typedef Uniqueness_rule__set* Uniqueness_rule__set_ptr; +typedef Uniqueness_rule__set_ptr Uniqueness_rule__set_var; + +/////////////////////////////////////////////////////////////////////////////// +// Schema (was SchemaDescriptor) - a class of this type is generated and +// contains schema info. +/////////////////////////////////////////////////////////////////////////////// + + +typedef SCLP23(Model_contents_ptr) (* ModelContentsCreator) () ; + +class Schema : public Dictionary_instance { + + protected: + const char * _name ; + EntityDescriptorList _entList; // list of entities in the schema + TypeDescriptorList _typeList; // list of types in the schema + Interface_spec _interface; // list of USE and REF interfaces (SDAI) + + // non-SDAI lists + Interface_spec__set_var _use_interface_list; // list of USE interfaces + Interface_spec__set_var _ref_interface_list; // list of REFERENCE interfaces + scl_char_str__list_var _function_list; // of EXPRESS functions + scl_char_str__list_var _procedure_list; // of EXPRESS procedures + + Global_rule__set_var _global_rules; + + public: + ModelContentsCreator CreateNewModelContents; + + Schema (const char *schemaName ); + virtual ~Schema (); + + void AssignModelContentsCreator(ModelContentsCreator f = 0) + { + CreateNewModelContents = f; + } + + const char * Name() const { return _name; } + void Name (const char * n) { _name = n; } + + Interface_spec& interface_() { return _interface; } + + Interface_spec__set_var use_interface_list_() { return + _use_interface_list; } + + Interface_spec__set_var ref_interface_list_() + { return _ref_interface_list; } + + scl_char_str__list_var function_list_() + { return _function_list; } + + void AddFunction(const char * f); + + Global_rule__set_var global_rules_() // const + { return _global_rules; } + + void AddGlobal_rule(Global_rule_ptr gr); + + void global_rules_(Global_rule__set_var &grs); // not implemented + + scl_char_str__list_var procedure_list_() + { return _procedure_list; } + + void AddProcedure(const char * p); + + EntityDescLinkNode * AddEntity (EntityDescriptor * ed) + { return _entList.AddNode(ed); } + + TypeDescLinkNode * AddType (TypeDescriptor * td) + { return _typeList.AddNode(td); } + + // the whole schema + void GenerateExpress(G4std::ostream& out) const; + + // USE, REFERENCE definitions + void GenerateUseRefExpress(G4std::ostream& out) const; + + // TYPE definitions + void GenerateTypesExpress(G4std::ostream& out) const; + + // Entity definitions + void GenerateEntitiesExpress(G4std::ostream& out) const; +}; + +typedef Schema SchemaDescriptor; + +/////////////////////////////////////////////////////////////////////////////// + +class AttrDescLinkNode : public SingleLinkNode { + private: + protected: + AttrDescriptor *_attrDesc; + public: + AttrDescLinkNode(); + virtual ~AttrDescLinkNode(); + + const AttrDescriptor *AttrDesc() const { return _attrDesc; } + void AttrDesc(AttrDescriptor *ad) { _attrDesc = ad; } +}; + +class AttrDescriptorList : public SingleLinkList { + private: + protected: + public: + AttrDescriptorList(); + virtual ~AttrDescriptorList(); + + virtual SingleLinkNode * NewNode () { return new AttrDescLinkNode; } + + AttrDescLinkNode * AddNode (AttrDescriptor * ad); +}; + +class AttrDescItr +{ + protected: + const AttrDescriptorList &adl; + const AttrDescLinkNode *cur; + + public: + AttrDescItr(const AttrDescriptorList &adList); + virtual ~AttrDescItr(); + + void ResetItr() { cur = (AttrDescLinkNode *)( adl.GetHead() ); } + + const AttrDescriptor * NextAttrDesc(); +}; + +/////////////////////////////////////////////////////////////////////////////// + +class Inverse_attributeLinkNode : public SingleLinkNode { + private: + protected: + Inverse_attribute *_invAttr; + public: + Inverse_attributeLinkNode(); + virtual ~Inverse_attributeLinkNode(); + + const Inverse_attribute *Inverse_attr() const { return _invAttr; } + void Inverse_attr(Inverse_attribute *ia) { _invAttr = ia; } +}; + +class Inverse_attributeList : public SingleLinkList { + private: + protected: + public: + Inverse_attributeList(); + virtual ~Inverse_attributeList(); + + virtual SingleLinkNode * NewNode () { return new Inverse_attributeLinkNode; } + Inverse_attributeLinkNode * AddNode (Inverse_attribute * ia); +}; + +class InverseAItr +{ + protected: + const Inverse_attributeList &ial; + const Inverse_attributeLinkNode *cur; + + public: + InverseAItr (const Inverse_attributeList &iaList); + virtual ~InverseAItr(); + + void ResetItr() + { cur = (Inverse_attributeLinkNode *)( ial.GetHead() ); } + + const Inverse_attribute * NextInverse_attribute(); +}; + /////////////////////////////////////////////////////////////////////////////// // AttrDescriptor // An instance of this class will be generated for each attribute for @@ -331,9 +799,9 @@ class AttrDescriptor { const char * _name ; // the attributes name // this defines the domain of the attribute const TypeDescriptor * _domainType ; - SdaiLogical _optional; - SdaiLogical _unique; - SdaiLogical _derived; + SCLP23(LOGICAL) _optional; + SCLP23(LOGICAL) _unique; + AttrType_Enum _attrType; // former attribute _derived #ifdef __O3DB__ const EntityDescriptor * _owner ; // the owning entityDescriptor @@ -345,15 +813,18 @@ class AttrDescriptor { AttrDescriptor( const char * name, // i.e. char * const TypeDescriptor *domainType, - LOGICAL optional, // i.e. F U or T - LOGICAL unique, // i.e. F U or T - LOGICAL derived, // i.e. F U or T + SCLLOG(Logical) optional, // i.e. F U or T + SCLLOG(Logical) unique, // i.e. F U or T + AttrType_Enum at,// AttrType_Explicit, AttrType_Inverse, + // AttrType_Deriving,AttrType_Redefining const EntityDescriptor & owner ); virtual ~AttrDescriptor (); + const char * GenerateExpress (SCLstring &buf) const; + // the attribute Express def - const char *AttrExprDefStr(SCLstring & s) const; + virtual const char *AttrExprDefStr(SCLstring & s) const; // left side of attr def const char * Name() const { return _name; } @@ -406,29 +877,39 @@ class AttrDescriptor { void DomainType (const TypeDescriptor *td) { _domainType = td; } void ReferentType(const TypeDescriptor *td) { _domainType = td; } - const SdaiLogical & Optional() const { return _optional; } - void Optional (SdaiLogical &opt) { _optional.put(opt.asInt()); } - void Optional (LOGICAL opt) { _optional.put(opt); } + const SCLP23(LOGICAL) & Optional() const { return _optional; } + void Optional (SCLP23(LOGICAL) &opt) { _optional.put(opt.asInt()); } + + void Optional (SCLLOG(Logical) opt) { _optional.put(opt); } void Optional (const char *opt) { _optional.put(opt); } - const SdaiLogical & Unique() const { return _unique; } - void Unique (SdaiLogical uniq) { _unique.put(uniq.asInt()); } - void Unique (LOGICAL uniq) { _unique.put(uniq); } + const SCLP23(LOGICAL) & Unique() const { return _unique; } + void Unique (SCLP23(LOGICAL) uniq) { _unique.put(uniq.asInt()); } + void Unique (SCLLOG(Logical) uniq) { _unique.put(uniq); } void Unique (const char *uniq) { _unique.put(uniq); } - const SdaiLogical & Derived() const { return _derived; } - void Derived (SdaiLogical x) { _derived.put(x.asInt()); } - void Derived (LOGICAL x) { _derived.put(x); } - void Derived (const char *x) { _derived.put(x); } + void AttrType(enum AttrType_Enum ate) { _attrType = ate; } + enum AttrType_Enum AttrType() const { return _attrType; } - const SdaiLogical & Optionality() const { return _optional; } - void Optionality (SdaiLogical &opt) { _optional.put(opt.asInt()); } - void Optionality (LOGICAL opt) { _optional.put(opt); } + SCLLOG(Logical) Explicit() const; + SCLLOG(Logical) Inverse() const; + SCLLOG(Logical) Redefining() const; + SCLLOG(Logical) Deriving() const; + + //outdated functions, use AttrType func above, new support of redefined + SCLLOG(Logical) Derived() const { return Deriving(); } + void Derived (SCLLOG(Logical) x); // outdated DAS + void Derived (SCLP23(LOGICAL) x); // outdated DAS + void Derived (const char *x); // outdated DAS + + const SCLP23(LOGICAL) & Optionality() const { return _optional; } + void Optionality (SCLP23(LOGICAL) &opt) { _optional.put(opt.asInt()); } + void Optionality (SCLLOG(Logical) opt) { _optional.put(opt); } void Optionality (const char *opt) { _optional.put(opt); } - const SdaiLogical & Uniqueness() const { return _unique; } - void Uniqueness (SdaiLogical uniq) { _unique.put(uniq.asInt()); } - void Uniqueness (LOGICAL uniq) { _unique.put(uniq); } + const SCLP23(LOGICAL) & Uniqueness() const { return _unique; } + void Uniqueness (SCLP23(LOGICAL) uniq) { _unique.put(uniq.asInt()); } + void Uniqueness (SCLLOG(Logical) uniq) { _unique.put(uniq); } void Uniqueness (const char *uniq) { _unique.put(uniq); } #ifdef __O3DB__ @@ -440,32 +921,115 @@ class AttrDescriptor { /////////////////////////////////////////////////////////////////////////////// -// InverseAttrDescriptor +// Inverse_attribute /////////////////////////////////////////////////////////////////////////////// -class InverseAttrDescriptor : public AttrDescriptor { +class Derived_attribute : public AttrDescriptor { + public: + const char *_initializer; - protected: - AttrDescriptor * _inverseAttr ; + Derived_attribute( + const char * name, // i.e. char * + const TypeDescriptor *domainType, + SCLLOG(Logical) optional, // i.e. F U or T + SCLLOG(Logical) unique, // i.e. F U or T + AttrType_Enum at,// AttrType_Explicit, AttrType_Inverse, + // AttrType_Deriving,AttrType_Redefining + const EntityDescriptor & owner + ); + virtual ~Derived_attribute(); + const char * AttrExprDefStr(SCLstring & s) const; + + const char *initializer_() { return _initializer; } + void initializer_(const char *i) { _initializer = i; } +}; + +/////////////////////////////////////////////////////////////////////////////// +// Inverse_attribute +/////////////////////////////////////////////////////////////////////////////// + +class Inverse_attribute : public AttrDescriptor { + + public: + const char *_inverted_attr_id; + const char *_inverted_entity_id; + protected: + AttrDescriptor * _inverted_attr ; // not implemented public: - InverseAttrDescriptor( + Inverse_attribute( const char * name, // i.e. char * TypeDescriptor *domainType, - LOGICAL optional, // i.e. F U or T*/ - LOGICAL unique, // i.e. F U or T -// LOGICAL derived, // derived will always be F + SCLLOG(Logical) optional, // i.e. F U or T*/ + SCLLOG(Logical) unique, // i.e. F U or T +// AttrType_Enum at, // will always be AttrType_Inverse const EntityDescriptor & owner, - AttrDescriptor *inverseAttr =0 + const char *inverted_attr_id =0 ) : AttrDescriptor( name, domainType, optional, unique, - F, owner ), _inverseAttr (inverseAttr) + AttrType_Inverse, owner ), + _inverted_attr_id(inverted_attr_id), + _inverted_entity_id(0), _inverted_attr(0) { } - virtual ~InverseAttrDescriptor () { } + virtual ~Inverse_attribute () { } + const char * AttrExprDefStr(SCLstring & s) const; + + const char * inverted_attr_id_() const + { return _inverted_attr_id; } + + void inverted_attr_id_(const char *iai ) + { _inverted_attr_id = iai; } + + const char * inverted_entity_id_() const + { return _inverted_entity_id; } + + void inverted_entity_id_(const char *iei ) + { _inverted_entity_id = iei; } + + // not implemented + class AttrDescriptor * inverted_attr_() + { return _inverted_attr; } + + void inverted_attr_(AttrDescriptor *ia ) + { _inverted_attr = ia; } + + // below are obsolete (and not implemented anyway) class AttrDescriptor * InverseAttribute() - { return _inverseAttr; } + { return _inverted_attr; } void InverseOf (AttrDescriptor * invAttr) - { _inverseAttr = invAttr; } + { _inverted_attr = invAttr; } +}; + +/////////////////////////////////////////////////////////////////////////////// +// SchRename is a structure which partially support the concept of USE and RE- +// FERENCE in EXPRESS. Say schema A USEs object X from schema B and renames it +// to Y (i.e., "USE (X as Y);"). SchRename stores the name of the schema (B) +// plus the new object name for that schema (Y). Each TypeDescriptor has a +// SchRename object (actually a linked list of SchRenames) corresponding to all +// the possible different names of itself depending on the current schema (the +// schema which is currently reading or writing this object). (The current +// schema is determined by the file schema section of the header section of a +// part21 file (the _headerInstances of STEPfile). +/////////////////////////////////////////////////////////////////////////////// + +class SchRename { + public: + SchRename( const char *sch="\0", const char *newnm="\0" ) : next(0) + { strcpy( schName, sch ); strcpy( newName, newnm ); } + ~SchRename() { delete next; } + const char *objName() const { return newName; } + // Added 'int' return type - GC + int operator< ( SchRename &schrnm ) + { return ( strcmp( schName, schrnm.schName ) < 0 ); } + int choice( const char *nm ) const; + // is nm one of our possible choices? + char *rename( const char *schnm, char *newnm ) const; + // given a schema name, returns new object name if exists + SchRename *next; + + private: + char schName[BUFSIZ]; + char newName[BUFSIZ]; }; /////////////////////////////////////////////////////////////////////////////// @@ -542,7 +1106,7 @@ class InverseAttrDescriptor : public AttrDescriptor { // a subtype of TypeDescriptor. //////_description // This is the string description of the type as found in the - // EXPRESS file. e.g. aggr of [aggr of ...] [List of ...] someType + // EXPRESS file. e.g. aggr of [aggr of ...] [list of ...] someType // It is the RIGHT side of an Express TYPE statement // (i.e. LIST OF STRING as in // TYPE label_group = LIST OF STRING END_TYPE;) @@ -554,30 +1118,72 @@ class TypeDescriptor { protected: // the name of the type (see above) + // + // NOTE - memory is not allocated for this, or for _description + // below. It is assumed that at creation, _name will be made + // to point to a static location in memory. The fedex_plus + // generated code, for example, places a literal string in its + // TypeDesc constructor calls. This creates a location in me- + // mory static throughout the lifetime of the calling program. const char * _name ; + // an alternate name of type - such as one given by a different + // schema which USEs/ REFERENCEs this. (A complete list of + // alternate names is stored in altNames below. _altname pro- + // vides storage space for the currently used one.) + char _altname[BUFSIZ]; + + // contains list of renamings of type - used by other schemas + // which USE/ REFERENCE this + const SchRename * altNames; + // the type of the type (see above). // it is an enum see file clstepcore/baseType.h // BASE_TYPE _fundamentalType ; PrimitiveType _fundamentalType ; - // furthur describes the type (see above) + const Schema * _originatingSchema; + + // further describes the type (see above) // most often (or always) points at a subtype. const TypeDescriptor * _referentType ; // Express file description (see above) // e.g. the right side of an Express TYPE stmt + // (See note above by _name regarding memory allocation.) const char * _description ; + public: + // a Where_rule may contain only a comment + Where_rule__list_var _where_rules; // initially a null pointer + + Where_rule__list_var& where_rules_() + { return _where_rules; } + + void where_rules_(Where_rule__list * wrl) + { _where_rules = wrl; } + + protected: + // Functions used to check the current name of the type (may + // != _name if altNames has diff name for current schema). + int PossName (const char *) const; + int OurName (const char *) const; + int AltName (const char *) const; + public: - TypeDescriptor (const char * nm, PrimitiveType ft, const char * d ); + TypeDescriptor (const char * nm, PrimitiveType ft, const char * d); + TypeDescriptor (const char * nm, PrimitiveType ft, + Schema *origSchema, const char * d); TypeDescriptor ( ); - virtual ~TypeDescriptor () { } + virtual ~TypeDescriptor () { /* if ( altNames ) delete altNames; */ } + virtual const char * GenerateExpress (SCLstring &buf) const; - // the name of this type - const char * Name() const { return _name; } + // The name of this type. If schnm != NULL, the name we're + // referred to by schema schnm (may be diff name in our alt- + // names list (based on schnm's USE/REF list)). + const char * Name( const char *schnm =NULL ) const; // The name that would be found on the right side of an // attribute definition. In the case of a type defined like @@ -587,9 +1193,10 @@ class TypeDescriptor { // defined in an attribute it will be the _description // member variable since _name will be null. e.g. attr. def. // project_names : ARRAY [1..10] name; - const char * AttrTypeName() const { - return _name ? _name : _description; - } + const char * AttrTypeName( SCLstring &buf, const char *schnm =NULL ) const; + + // Linked link of alternate names for the type: + const SchRename *AltNameList() const { return altNames; } // This is a fully expanded description of the type. // This returns a string like the _description member variable @@ -608,7 +1215,7 @@ class TypeDescriptor { // TYPE count = INTEGER; // TYPE ref_count = count; // TYPE count_set = SET OF ref_count; - // each of the above will Generate a TypeDescriptor and for + // each of the above will generate a TypeDescriptor and for // each one, PrimitiveType BaseType() will return INTEGER_TYPE. // TypeDescriptor *BaseTypeDescriptor() returns the TypeDescriptor // for Integer. @@ -639,6 +1246,16 @@ class TypeDescriptor { void ReferentType (const TypeDescriptor * rtype) { _referentType = rtype; } + + const Schema * OriginatingSchema() const + { return _originatingSchema; } + void OriginatingSchema (const Schema * os) + { _originatingSchema = os; } + const char *schemaName() const { + if ( _originatingSchema ) return _originatingSchema->Name(); + else return ""; + } + // A description of this type's type. Basically you // get the right side of a TYPE statement minus END_TYPE. // For base type TypeDescriptors it is the same as _name. @@ -646,76 +1263,111 @@ class TypeDescriptor { void Description (const char * desc) { _description = desc; } virtual const TypeDescriptor * IsA (const TypeDescriptor *) const; - virtual const TypeDescriptor * BaseTypeIsA (const TypeDescriptor *) const; + virtual const TypeDescriptor * BaseTypeIsA (const TypeDescriptor *) + const; virtual const TypeDescriptor * IsA (const char *) const; virtual const TypeDescriptor * CanBe (const TypeDescriptor *n) const { return TypeDescriptor::IsA (n); } - + virtual const TypeDescriptor * CanBe (const char *n) const + { return TypeDescriptor::IsA (n); } + virtual const TypeDescriptor * CanBeSet (const char *n, + const char *schNm =0) const + { return ( CurrName( n, schNm ) ? this : 0 ); } + int CurrName( const char *, const char * =0 ) const; + void addAltName( const char *schnm, const char *newnm ); + // Adds an additional name, newnm, to be use when schema schnm + // is USE/REFERENCE'ing us (added to altNames). }; -typedef STEPenumeration * (* EnumCreator) () ; +#ifdef __OSTORE__ +typedef SCLP23(Enum) * (* EnumCreator) (os_database *db) ; +#else +typedef SCLP23(Enum) * (* EnumCreator) () ; +#endif class EnumTypeDescriptor : public TypeDescriptor { public: EnumCreator CreateNewEnum; + const char * GenerateExpress (SCLstring &buf) const; + void AssignEnumCreator(EnumCreator f = 0) { CreateNewEnum = f; } - STEPenumeration *CreateEnum() - { - if(CreateNewEnum) - return CreateNewEnum(); - else - return 0; - } +#ifdef __OSTORE__ + SCLP23(Enum) *CreateEnum(os_database *db); +#else + SCLP23(Enum) *CreateEnum(); +#endif EnumTypeDescriptor ( ) { } - EnumTypeDescriptor (const char * nm, PrimitiveType ft, const char * d, - EnumCreator f =0 ); + EnumTypeDescriptor (const char * nm, PrimitiveType ft, + Schema *origSchema, const char * d, + EnumCreator f =0 ); virtual ~EnumTypeDescriptor () { } }; +/////////////////////////////////////////////////////////////////////////////// +// EntityDescriptor +// An instance of this class will be generated for each entity type +// found in the schema. This should probably be derived from the +// CreatorEntry class (see sdaiApplicaton_instance.h). Then the binary tree +// that the current software builds up containing the entities in the schema +// will be building the same thing but using the new schema info. +// nodes (i.e. EntityDesc nodes) for each entity. +/////////////////////////////////////////////////////////////////////////////// + class EntityDescriptor : public TypeDescriptor { protected: - const SchemaDescriptor * _originatingSchema; - SdaiLogical _abstractEntity; +// const Schema * _originatingSchema; + SCLP23(LOGICAL) _abstractEntity; + SCLP23(LOGICAL) _extMapping; + // does external mapping have to be used to create an instance of + // us (see STEP Part 21, sect 11.2.5.1) EntityDescriptorList _subtypes; // OPTIONAL EntityDescriptorList _supertypes; // OPTIONAL AttrDescriptorList _explicitAttr; // OPTIONAL -// StringAggregate * _derivedAttr; // OPTIONAL - InverseAttrDescriptorList _inverseAttr; // OPTIONAL +// StringAggregate * _derivedAttr; // OPTIONAL + Inverse_attributeList _inverseAttr; // OPTIONAL + SCLstring _supertype_stmt; public: - // pointer to a function that will create a new instance of a STEPentity + Uniqueness_rule__set_var _uniqueness_rules; // initially a null pointer + + // pointer to a function that will create a new instance of a SCLP23(Application_instance) Creator NewSTEPentity; EntityDescriptor ( ); EntityDescriptor (const char * name, // i.e. char * - SchemaDescriptor *origSchema, - LOGICAL abstractEntity, // i.e. F U or T - Creator f =0 + Schema *origSchema, + SCLLOG(Logical) abstractEntity, // i.e. F U or T + SCLLOG(Logical) extMapping, + Creator f =0 ); virtual ~EntityDescriptor (); - const SchemaDescriptor * OriginatingSchema() const - { return _originatingSchema; } - void OriginatingSchema (const SchemaDescriptor * os) - { _originatingSchema = os; } + const char * GenerateExpress (SCLstring &buf) const; - SdaiLogical & AbstractEntity() { return _abstractEntity; } - void AbstractEntity (SdaiLogical &ae) - { _abstractEntity.put(ae.asInt()); } - void AbstractEntity (LOGICAL ae) { _abstractEntity.put(ae); } - void AbstractEntity (const char *ae) { _abstractEntity.put(ae); } + const char * QualifiedName(SCLstring &s) const; + + const SCLP23(LOGICAL) & AbstractEntity() const + { return _abstractEntity;} + const SCLP23(LOGICAL) & ExtMapping() const { return _extMapping; } + void AbstractEntity (SCLP23(LOGICAL) &ae) + { _abstractEntity.put(ae.asInt()); } + void ExtMapping (SCLP23(LOGICAL) &em) + { _extMapping.put(em.asInt()); } + void AbstractEntity (SCLLOG(Logical) ae) { _abstractEntity.put(ae); } + void ExtMapping (SCLLOG(Logical) em) { _extMapping.put(em); } + void ExtMapping (const char *em) { _extMapping.put(em); } const EntityDescriptorList& Subtypes() const { return _subtypes; } @@ -731,19 +1383,26 @@ class EntityDescriptor : public TypeDescriptor { // StringAggregate & DerivedAttr() { return *_derivedAttr; } - const InverseAttrDescriptorList& InverseAttr() const { return _inverseAttr; } + const Inverse_attributeList& InverseAttr() const + { return _inverseAttr; } virtual const EntityDescriptor * IsA (const EntityDescriptor *) const; - virtual const TypeDescriptor * IsA (const TypeDescriptor * td) const ; - virtual const TypeDescriptor * IsA (const char * n) const + virtual const TypeDescriptor * IsA (const TypeDescriptor * td) const; + virtual const TypeDescriptor * IsA (const char * n) const { return TypeDescriptor::IsA (n); } virtual const TypeDescriptor * CanBe (const TypeDescriptor *o) const { return o -> IsA (this); } + virtual const TypeDescriptor * CanBe (const char *n) const + { return TypeDescriptor::CanBe (n); } + // The following will be used by schema initialization functions void AddSubtype(EntityDescriptor *ed) { _subtypes.AddNode(ed); } + void AddSupertype_Stmt(const char *s) { _supertype_stmt = s; } + const char * Supertype_Stmt() { return _supertype_stmt.chars(); } + SCLstring& supertype_stmt_() { return _supertype_stmt; } void AddSupertype(EntityDescriptor *ed) { _supertypes.AddNode(ed); } @@ -751,8 +1410,13 @@ class EntityDescriptor : public TypeDescriptor { void AddExplicitAttr(AttrDescriptor *ad) { _explicitAttr.AddNode(ad); } - void AddInverseAttr(InverseAttrDescriptor *ad) - { _inverseAttr.AddNode(ad); } + void AddInverseAttr(Inverse_attribute *ia) + { _inverseAttr.AddNode(ia); } + void uniqueness_rules_(Uniqueness_rule__set *urs) + { _uniqueness_rules = urs; } + Uniqueness_rule__set_var& uniqueness_rules_() + { return _uniqueness_rules; } + }; @@ -785,6 +1449,17 @@ class BinaryAggregate; class RealAggregate; class IntAggregate; +#ifdef __OSTORE__ +typedef STEPaggregate * (* AggregateCreator) (os_database *db) ; +typedef EnumAggregate * (* EnumAggregateCreator) (os_database *db) ; +typedef GenericAggregate * (* GenericAggregateCreator) (os_database *db) ; +typedef EntityAggregate * (* EntityAggregateCreator) (os_database *db) ; +typedef SelectAggregate * (* SelectAggregateCreator) (os_database *db) ; +typedef StringAggregate * (* StringAggregateCreator) (os_database *db) ; +typedef BinaryAggregate * (* BinaryAggregateCreator) (os_database *db) ; +typedef RealAggregate * (* RealAggregateCreator) (os_database *db) ; +typedef IntAggregate * (* IntAggregateCreator) (os_database *db) ; +#else typedef STEPaggregate * (* AggregateCreator) () ; typedef EnumAggregate * (* EnumAggregateCreator) () ; typedef GenericAggregate * (* GenericAggregateCreator) () ; @@ -794,7 +1469,25 @@ typedef StringAggregate * (* StringAggregateCreator) () ; typedef BinaryAggregate * (* BinaryAggregateCreator) () ; typedef RealAggregate * (* RealAggregateCreator) () ; typedef IntAggregate * (* IntAggregateCreator) () ; +#endif +#ifdef __OSTORE__ +EnumAggregate * create_EnumAggregate(os_database *db); + +GenericAggregate * create_GenericAggregate(os_database *db); + +EntityAggregate * create_EntityAggregate(os_database *db); + +SelectAggregate * create_SelectAggregate(os_database *db); + +StringAggregate * create_StringAggregate(os_database *db); + +BinaryAggregate * create_BinaryAggregate(os_database *db); + +RealAggregate * create_RealAggregate(os_database *db); + +IntAggregate * create_IntAggregate(os_database *db); +#else EnumAggregate * create_EnumAggregate(); GenericAggregate * create_GenericAggregate(); @@ -810,11 +1503,11 @@ BinaryAggregate * create_BinaryAggregate(); RealAggregate * create_RealAggregate(); IntAggregate * create_IntAggregate(); - +#endif /////////////////////////////////////////////////////////////////////////////// // AggrTypeDescriptor // I think we decided on a simplistic representation of aggr. types for now? -// i.e. just have one AggrTypeDesc for Array of [List of] [set of] someType +// i.e. just have one AggrTypeDesc for Array of [list of] [set of] someType // the inherited variable _referentType will point to the TypeDesc for someType // So I don't believe this class was necessary. If we were to retain // info for each of the [aggr of]'s in the example above then there would be @@ -827,9 +1520,9 @@ class AggrTypeDescriptor : public TypeDescriptor { protected: - SdaiInteger _bound1 ; - SdaiInteger _bound2 ; - SdaiLogical _uniqueElements ; + SCLP23(Integer) _bound1 ; + SCLP23(Integer) _bound2 ; + SCLP23(LOGICAL) _uniqueElements ; TypeDescriptor * _aggrDomainType ; AggregateCreator CreateNewAggr; @@ -840,34 +1533,33 @@ class AggrTypeDescriptor : public TypeDescriptor { CreateNewAggr = f; } - STEPaggregate *CreateAggregate() - { - if(CreateNewAggr) - return CreateNewAggr(); - else - return 0; - } +#ifdef __OSTORE__ + STEPaggregate *CreateAggregate(os_database *db); +#else + STEPaggregate *CreateAggregate(); +#endif AggrTypeDescriptor ( ); - AggrTypeDescriptor(SdaiInteger b1, SdaiInteger b2, - LOGICAL uniqElem, + AggrTypeDescriptor(SCLP23(Integer) b1, SCLP23(Integer) b2, + SCLLOG(Logical) uniqElem, TypeDescriptor *aggrDomType); - AggrTypeDescriptor (const char * nm, PrimitiveType ft, const char * d, + AggrTypeDescriptor (const char * nm, PrimitiveType ft, + Schema *origSchema, const char * d, AggregateCreator f =0 ) - : TypeDescriptor (nm, ft, d), CreateNewAggr(f) { } + : TypeDescriptor (nm, ft, origSchema, d), CreateNewAggr(f) { } virtual ~AggrTypeDescriptor (); - SdaiInteger & Bound1() { return _bound1; } - void Bound1 (SdaiInteger b1) { _bound1 = b1; } + SCLP23(Integer) & Bound1() { return _bound1; } + void Bound1 (SCLP23(Integer) b1) { _bound1 = b1; } - SdaiInteger & Bound2() { return _bound2; } - void Bound2 (SdaiInteger b2) { _bound2 = b2; } + SCLP23(Integer) & Bound2() { return _bound2; } + void Bound2 (SCLP23(Integer) b2) { _bound2 = b2; } - SdaiLogical& UniqueElements() { return _uniqueElements; } - void UniqueElements (SdaiLogical &ue) + SCLP23(LOGICAL)& UniqueElements() { return _uniqueElements; } + void UniqueElements (SCLP23(LOGICAL) &ue) { _uniqueElements.put(ue.asInt()); } - void UniquesElements (LOGICAL ue) { _uniqueElements.put(ue); } + void UniqueElements (SCLLOG(Logical) ue) { _uniqueElements.put(ue); } void UniqueElements (const char *ue) { _uniqueElements.put(ue); } class TypeDescriptor * AggrDomainType() { return _aggrDomainType; } @@ -881,23 +1573,26 @@ class AggrTypeDescriptor : public TypeDescriptor { class ArrayTypeDescriptor : public AggrTypeDescriptor { protected: - SdaiLogical _optionalElements ; + SCLP23(LOGICAL) _optionalElements ; public: ArrayTypeDescriptor ( ) : _optionalElements("UNKNOWN_TYPE") { } - ArrayTypeDescriptor (LOGICAL optElem) : _optionalElements(optElem) { } - ArrayTypeDescriptor (const char * nm, PrimitiveType ft, const char * d, - AggregateCreator f =0 ) - : AggrTypeDescriptor (nm, ft, d, f), _optionalElements("UNKNOWN_TYPE") + ArrayTypeDescriptor (SCLLOG(Logical) optElem) : _optionalElements(optElem) + { } + ArrayTypeDescriptor (const char * nm, PrimitiveType ft, + Schema *origSchema, const char * d, + AggregateCreator f =0 ) + : AggrTypeDescriptor (nm, ft, origSchema, d, f), + _optionalElements("UNKNOWN_TYPE") { } virtual ~ArrayTypeDescriptor () {} - SdaiLogical& OptionalElements() { return _optionalElements; } - void OptionalElements (SdaiLogical &oe) + SCLP23(LOGICAL)& OptionalElements() { return _optionalElements; } + void OptionalElements (SCLP23(LOGICAL) &oe) { _optionalElements.put(oe.asInt()); } - void OptionalElements (LOGICAL oe) { _optionalElements.put(oe); } + void OptionalElements (SCLLOG(Logical) oe) { _optionalElements.put(oe); } void OptionalElements (const char *oe) { _optionalElements.put(oe); } }; @@ -920,9 +1615,10 @@ class ListTypeDescriptor : public AggrTypeDescriptor { } */ ListTypeDescriptor ( ) { } - ListTypeDescriptor (const char * nm, PrimitiveType ft, const char * d, + ListTypeDescriptor (const char * nm, PrimitiveType ft, + Schema *origSchema, const char * d, AggregateCreator f =0 ) - : AggrTypeDescriptor (nm, ft, d, f) { } + : AggrTypeDescriptor (nm, ft, origSchema, d, f) { } virtual ~ListTypeDescriptor () { } }; @@ -933,9 +1629,10 @@ class SetTypeDescriptor : public AggrTypeDescriptor { public: SetTypeDescriptor ( ) { } - SetTypeDescriptor (const char * nm, PrimitiveType ft, const char * d, - AggregateCreator f =0 ) - : AggrTypeDescriptor (nm, ft, d, f) { } + SetTypeDescriptor (const char * nm, PrimitiveType ft, + Schema *origSchema, const char * d, + AggregateCreator f =0 ) + : AggrTypeDescriptor (nm, ft, origSchema, d, f) { } virtual ~SetTypeDescriptor () { } }; @@ -946,14 +1643,19 @@ class BagTypeDescriptor : public AggrTypeDescriptor { public: BagTypeDescriptor ( ) { } - BagTypeDescriptor (const char * nm, PrimitiveType ft, const char * d, - AggregateCreator f =0 ) - : AggrTypeDescriptor (nm, ft, d, f) { } + BagTypeDescriptor (const char * nm, PrimitiveType ft, + Schema *origSchema, const char * d, + AggregateCreator f =0 ) + : AggrTypeDescriptor (nm, ft, origSchema, d, f) { } virtual ~BagTypeDescriptor () { } }; -typedef SdaiSelect * (* SelectCreator) () ; +#ifdef __OSTORE__ +typedef SCLP23(Select) * (* SelectCreator) (os_database *db) ; +#else +typedef SCLP23(Select) * (* SelectCreator) () ; +#endif class SelectTypeDescriptor : public TypeDescriptor { @@ -970,18 +1672,16 @@ class SelectTypeDescriptor : public TypeDescriptor { CreateNewSelect = f; } - SdaiSelect *CreateSelect() - { - if(CreateNewSelect) - return CreateNewSelect(); - else - return 0; - } - +#ifdef __OSTORE__ + SCLP23(Select) *CreateSelect(os_database *db); +#else + SCLP23(Select) *CreateSelect(); +#endif SelectTypeDescriptor (int b, const char * nm, PrimitiveType ft, + Schema *origSchema, char * d, SelectCreator f =0 ) - : TypeDescriptor (nm, ft, d), + : TypeDescriptor (nm, ft, origSchema, d), _unique_elements (b), CreateNewSelect(f) { } virtual ~SelectTypeDescriptor () { } @@ -994,39 +1694,41 @@ class SelectTypeDescriptor : public TypeDescriptor { virtual const TypeDescriptor * IsA (const char * n) const { return TypeDescriptor::IsA (n); } virtual const TypeDescriptor * CanBe (const TypeDescriptor *) const; + virtual const TypeDescriptor * CanBe (const char *n) const; + virtual const TypeDescriptor * CanBeSet (const char *, const char *) + const; }; class StringTypeDescriptor : public TypeDescriptor { protected: - SdaiInteger _width ; // OPTIONAL - SdaiLogical _fixedSize ; + SCLP23(Integer) _width ; // OPTIONAL + SCLP23(LOGICAL) _fixedSize ; public: StringTypeDescriptor ( ) : _fixedSize("UNKNOWN_TYPE") { _width = 0; } virtual ~StringTypeDescriptor () { } - SdaiInteger Width() { return _width; } - void Width (SdaiInteger w) { _width = w; } + SCLP23(Integer) Width() { return _width; } + void Width (SCLP23(Integer) w) { _width = w; } - SdaiLogical& FixedSize() { return _fixedSize; } - void FixedSize (SdaiLogical fs) { _fixedSize.put(fs.asInt()); } - void FixedSize (LOGICAL fs) { _fixedSize.put(fs); } - void FixedSize (char * fs) { _fixedSize.put(fs); } + SCLP23(LOGICAL)& FixedSize() { return _fixedSize; } + void FixedSize (SCLP23(LOGICAL) fs) { _fixedSize.put(fs.asInt()); } + void FixedSize (SCLLOG(Logical) fs) { _fixedSize.put(fs); } }; class RealTypeDescriptor : public TypeDescriptor { protected: - SdaiInteger _precisionSpec ; // OPTIONAL + SCLP23(Integer) _precisionSpec ; // OPTIONAL public: RealTypeDescriptor ( ) { _precisionSpec = 0; } virtual ~RealTypeDescriptor () { } - SdaiInteger PrecisionSpec() { return _precisionSpec; } - void PrecisionSpec (SdaiInteger ps) { _precisionSpec = ps; } + SCLP23(Integer) PrecisionSpec() { return _precisionSpec; } + void PrecisionSpec (SCLP23(Integer) ps) { _precisionSpec = ps; } }; diff --git a/source/geometry/solids/STEP/include/Registry.h b/source/geometry/solids/STEP/include/Registry.h index c3a5e8f55a..0b04b151e4 100644 --- a/source/geometry/solids/STEP/include/Registry.h +++ b/source/geometry/solids/STEP/include/Registry.h @@ -1,20 +1,10 @@ - - -// - - - -// -// $Id: Registry.h,v 1.2 1999/05/21 20:20:30 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// #ifndef _REGISTRY_H #define _REGISTRY_H /* * NIST STEP Core Class Library * clstepcore/Registry.h -* May 1995 +* April 1997 * K. C. Morris * David Sauder @@ -22,11 +12,19 @@ * and is not subject to copyright. */ -/* */ +/* $Id: Registry.h,v 1.3 2000/01/21 13:42:30 gcosmo Exp $ */ -#include +#ifdef __OSTORE__ +#include // Required to access ObjectStore Class Library +#endif + +#include +//#include #include #include +#include +#include + typedef struct Hash_Table * HashTable; class Registry; @@ -36,41 +34,63 @@ typedef void (* CF_init) (Registry &); // pointer to creation initialization class Registry { protected: HashTable primordialSwamp; // dictionary of EntityDescriptors - HashTable active_schemas; // dictionary of SchemaDescriptors + HashTable active_schemas; // dictionary of Schemas HashTable active_types; // dictionary of TypeDescriptors + ComplexCollect *col; // struct containing all complex entity info - int entity_cnt; + int entity_cnt, + all_ents_cnt; HashEntry cur_entity; HashEntry cur_schema; + HashEntry cur_type; + + // used by AddEntity() and RemoveEntity() to deal with renamings of an + // entity done in a USE or REFERENCE clause - see header comments in + // file Registry.inline.cc + void AddClones (const EntityDescriptor &); + void RemoveClones (const EntityDescriptor &); public: Registry (CF_init initFunct); ~Registry (); void DeleteContents (); // CAUTION: calls delete on all the descriptors - const EntityDescriptor* FindEntity (const char *, int check_case =1) const; - const SchemaDescriptor* FindSchema (const char *, int check_case =1) const; - const TypeDescriptor* FindType (const char *, int check_case =1) const; + const EntityDescriptor* FindEntity (const char *, const char * =0, + int check_case =0) const; + const Schema* FindSchema (const char *, int check_case =0) const; + const TypeDescriptor* FindType (const char *, int check_case =0) const; void AddEntity (const EntityDescriptor&); - void AddSchema (const SchemaDescriptor&); - void AddType (const TypeDescriptor&); + void AddSchema (const Schema&); + void AddType (const TypeDescriptor&); void RemoveEntity (const char *); void RemoveSchema (const char *); - void RemoveType (const char *); + void RemoveType (const char *); int GetEntityCnt (); + int GetFullEntCnt () { return all_ents_cnt; } + void ResetEntities (); const EntityDescriptor * NextEntity (); - - void ResetSchemas () ; - const SchemaDescriptor * NextSchema (); - STEPentity* ObjCreate (const char * nm, int check_case =1) const; + void ResetSchemas (); + const Schema * NextSchema (); + + void ResetTypes (); + const TypeDescriptor * NextType (); + + const ComplexCollect *CompCol() { return col; } + void SetCompCollect( ComplexCollect *c ) { col = c; } + +#ifdef __OSTORE__ + SCLP23(Application_instance)* ObjCreate (const char * nm, os_database *db =0, + const char * =0, int check_case =0) const; +#else + SCLP23(Application_instance)* ObjCreate (const char * nm, const char * =0, + int check_case =0) const; +#endif }; -#endif - - +#endif /* _REGISTRY_H */ diff --git a/source/geometry/solids/STEP/include/STEPaggregate.h b/source/geometry/solids/STEP/include/STEPaggregate.h index 6e25ffc1fd..adef88d139 100644 --- a/source/geometry/solids/STEP/include/STEPaggregate.h +++ b/source/geometry/solids/STEP/include/STEPaggregate.h @@ -1,20 +1,10 @@ - - -// - - - -// -// $Id: STEPaggregate.h,v 1.3 1999/12/15 14:50:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// #ifndef STEPAGGREGATE_H #define STEPAGGREGATE_H /* * NIST STEP Core Class Library * clstepcore/STEPaggregate.h -* May 1995 +* April 1997 * K. C. Morris * David Sauder @@ -22,7 +12,11 @@ * and is not subject to copyright. */ -/* */ +/* $Id: STEPaggregate.h,v 1.4 2000/01/21 13:42:31 gcosmo Exp $ */ + +#ifdef __OSTORE__ +#include // Required to access ObjectStore Class Library +#endif #ifdef __O3DB__ #include @@ -30,28 +24,29 @@ class InstMgr; class STEPaggregate; -class Logical; -class Boolean; +#ifndef _ODI_OSSG_ +class LOGICAL; +class BOOL; +#endif class TypeDescriptor; -#include "globals.hh" #include #include -#include #include -#include +#include #include #include +#include "G4ios.hh" -class STEPentity; -#define S_ENTITY_NULL &NilSTEPentity -extern STEPentity NilSTEPentity; +//class SCLP23(Application_instance); +//#define S_ENTITY_NULL &NilSTEPentity +//extern SCLP23(Application_instance) NilSTEPentity; #define AGGR_NULL &NilSTEPaggregate extern STEPaggregate NilSTEPaggregate; -typedef unsigned short BOOLEAN; +//typedef unsigned short BOOLEAN; class SingleLinkNode; /****************************************************************************** @@ -59,6 +54,9 @@ class SingleLinkNode; *****************************************************************************/ typedef STEPaggregate * STEPaggregateH; +typedef STEPaggregate * STEPaggregate_ptr; +typedef STEPaggregate_ptr STEPaggregate_var; + class STEPaggregate : public SingleLinkList { protected: @@ -66,35 +64,36 @@ class STEPaggregate : public SingleLinkList protected: - virtual Severity ReadValue(G4std::istream &in, ErrorDescriptor *err, - const TypeDescriptor *elem_type, - InstMgr *insts, int addFileId =0, - int assignVal =1, int ExchangeFileFormat =1); + virtual Severity ReadValue(G4std::istream &in, ErrorDescriptor *err, + const TypeDescriptor *elem_type, + InstMgr *insts, int addFileId =0, + int assignVal =1, int ExchangeFileFormat =1, + const char *currSch =0); public: - int is_null() { return _null; } + int is_null() { return _null; } - virtual Severity AggrValidLevel(const char *value, ErrorDescriptor *err, - const TypeDescriptor *elem_type, InstMgr *insts, - int optional, char *tokenList, int addFileId =0, + virtual Severity AggrValidLevel(const char *value, ErrorDescriptor *err, + const TypeDescriptor *elem_type, InstMgr *insts, + int optional, char *tokenList, int addFileId =0, int clearError =0); - - virtual Severity AggrValidLevel(G4std::istream &in, ErrorDescriptor *err, - const TypeDescriptor *elem_type, InstMgr *insts, - int optional, char *tokenList, int addFileId =0, + virtual Severity AggrValidLevel(G4std::istream &in, ErrorDescriptor *err, + const TypeDescriptor *elem_type, InstMgr *insts, + int optional, char *tokenList, int addFileId =0, int clearError =0); // INPUT - virtual Severity StrToVal(const char *s, ErrorDescriptor *err =0, + virtual Severity StrToVal(const char *s, ErrorDescriptor *err =0, const TypeDescriptor *elem_type =0, InstMgr *insts =0, int addFileId = 0); - virtual Severity STEPread (G4std::istream& in, ErrorDescriptor *err, + virtual Severity STEPread (G4std::istream& in, ErrorDescriptor *err, const TypeDescriptor *elem_type =0, - InstMgr *insts =0, int addFileId =0); + InstMgr *insts =0, int addFileId =0, + const char *currSch =0); // OUTPUT virtual const char *asStr(SCLstring & s) const; - virtual void STEPwrite (G4std::ostream& out =G4cout) const; + virtual void STEPwrite (G4std::ostream& out =G4cout, const char * =0) const; // SingleLinkNode * GetHead () const // { return (STEPnode *) SingleLinkList::GetHead(); } @@ -109,6 +108,10 @@ class STEPaggregate : public SingleLinkList // COPY - defined in subtypes virtual STEPaggregate& ShallowCopy (const STEPaggregate&); +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif + }; /****************************************************************** @@ -123,10 +126,16 @@ class GenericAggregate : public STEPaggregate virtual SingleLinkNode *NewNode(); virtual STEPaggregate& ShallowCopy (const STEPaggregate&); - GenericAggregate () { } - virtual ~GenericAggregate () { } + GenericAggregate(); + virtual ~GenericAggregate(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; typedef GenericAggregate * GenericAggregateH; +typedef GenericAggregate * GenericAggregate_ptr; +typedef GenericAggregate_ptr GenericAggregate_var; /****************************************************************************** ** @@ -138,20 +147,27 @@ class EntityAggregate : public STEPaggregate virtual Severity ReadValue(G4std::istream &in, ErrorDescriptor *err, const TypeDescriptor *elem_type, InstMgr *insts, int addFileId =0, - int assignVal =1, int ExchangeFileFormat =1); + int assignVal =1, int ExchangeFileFormat =1, + const char *currSch =0); virtual SingleLinkNode *NewNode(); virtual STEPaggregate& ShallowCopy (const STEPaggregate&); EntityAggregate (); virtual ~EntityAggregate (); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; typedef EntityAggregate * EntityAggregateH; +typedef EntityAggregate * EntityAggregate_ptr; +typedef EntityAggregate_ptr EntityAggregate_var; /****************************************************************** ** Class: SelectAggregate ** Description: this is a minimal representions for a collection of - ** STEPenumerations + ** SCLP23(Select) ******************************************************************/ class SelectAggregate : public STEPaggregate { @@ -159,15 +175,22 @@ class SelectAggregate : public STEPaggregate virtual Severity ReadValue(G4std::istream &in, ErrorDescriptor *err, const TypeDescriptor *elem_type, InstMgr *insts, int addFileId =0, - int assignVal =1, int ExchangeFileFormat =1); + int assignVal =1, int ExchangeFileFormat =1, + const char *currSch =0); virtual SingleLinkNode *NewNode (); virtual STEPaggregate& ShallowCopy (const STEPaggregate&); SelectAggregate (); virtual ~SelectAggregate (); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; typedef SelectAggregate * SelectAggregateH; +typedef SelectAggregate * SelectAggregate_ptr; +typedef SelectAggregate_ptr SelectAggregate_var; /****************************************************************** ** Class: StringAggregate @@ -179,10 +202,16 @@ class StringAggregate : public STEPaggregate virtual SingleLinkNode *NewNode(); virtual STEPaggregate& ShallowCopy (const STEPaggregate&); - StringAggregate () { } - virtual ~StringAggregate () { } + StringAggregate(); + virtual ~StringAggregate(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; typedef StringAggregate * StringAggregateH; +typedef StringAggregate * StringAggregate_ptr; +typedef StringAggregate_ptr StringAggregate_var; /****************************************************************** @@ -195,15 +224,21 @@ class BinaryAggregate : public STEPaggregate virtual SingleLinkNode *NewNode(); virtual STEPaggregate& ShallowCopy (const STEPaggregate&); - BinaryAggregate () { } - virtual ~BinaryAggregate () { } + BinaryAggregate(); + virtual ~BinaryAggregate(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; typedef BinaryAggregate * BinaryAggregateH; +typedef BinaryAggregate * BinaryAggregate_ptr; +typedef BinaryAggregate_ptr BinaryAggregate_var; /****************************************************************** ** Class: EnumAggregate ** Description: this is a minimal representions for a collection of - ** STEPenumerations + ** SCLP23(Enum) ******************************************************************/ class EnumAggregate : public STEPaggregate { @@ -213,31 +248,59 @@ class EnumAggregate : public STEPaggregate EnumAggregate (); virtual ~EnumAggregate (); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; typedef EnumAggregate * EnumAggregateH; +typedef EnumAggregate * EnumAggregate_ptr; +typedef EnumAggregate_ptr EnumAggregate_var; -class Logicals : public EnumAggregate +class LOGICALS : public EnumAggregate { public: virtual SingleLinkNode * NewNode (); - Logicals () { } - virtual ~Logicals () { } + LOGICALS(); + virtual ~LOGICALS(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; -typedef Logicals * LogicalsH; -inline Logicals * create_Logicals () { return new Logicals ; } +typedef LOGICALS * LogicalsH; +typedef LOGICALS * LOGICALS_ptr; +typedef LOGICALS_ptr LOGICALS_var; +#ifdef __OSTORE__ +LOGICALS * create_LOGICALS(os_database *db); +#else +LOGICALS * create_LOGICALS(); +#endif -class Booleans : public EnumAggregate +class BOOLS : public EnumAggregate { public: virtual SingleLinkNode * NewNode (); - Booleans () { } - virtual ~Booleans () { } + BOOLS(); + virtual ~BOOLS(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; -typedef Booleans * BooleansH; -inline Booleans * create_Booleans () { return new Booleans ; } + +//typedef BOOLS * BooleansH; +typedef BOOLS * BOOLS_ptr; +typedef BOOLS_ptr BOOLS_var; + +#ifdef __OSTORE__ +BOOLS * create_BOOLS(os_database *db); +#else +BOOLS * create_BOOLS(); +#endif class RealAggregate : public STEPaggregate { @@ -245,10 +308,16 @@ class RealAggregate : public STEPaggregate { virtual SingleLinkNode *NewNode(); virtual STEPaggregate& ShallowCopy (const STEPaggregate&); - RealAggregate () { } - virtual ~RealAggregate () { } + RealAggregate(); + virtual ~RealAggregate(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; typedef RealAggregate * RealAggregateH; +typedef RealAggregate * RealAggregate_ptr; +typedef RealAggregate_ptr RealAggregate_var; class IntAggregate : public STEPaggregate { @@ -256,10 +325,16 @@ class IntAggregate : public STEPaggregate { virtual SingleLinkNode *NewNode(); virtual STEPaggregate& ShallowCopy (const STEPaggregate&); - IntAggregate () { } - virtual ~IntAggregate () { } + IntAggregate(); + virtual ~IntAggregate(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; typedef IntAggregate * IntAggregateH; +typedef IntAggregate * IntAggregate_ptr; +typedef IntAggregate_ptr IntAggregate_var; /////////////////////////////////////////////////////////////////////////////// @@ -284,8 +359,11 @@ class STEPnode : public SingleLinkNode { // OUTPUT virtual const char *asStr(SCLstring & s); - virtual const char *STEPwrite(SCLstring &s); + virtual const char *STEPwrite(SCLstring &s, const char * =0); virtual void STEPwrite (G4std::ostream& out =G4cout); +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; typedef STEPnode * STEPnodeH; @@ -309,7 +387,7 @@ class GenericAggrNode : public STEPnode { // OUTPUT virtual const char *asStr(SCLstring & s); - virtual const char *STEPwrite(SCLstring &s); + virtual const char *STEPwrite(SCLstring &s, const char * =0); virtual void STEPwrite (G4std::ostream& out =G4cout); // CONSTRUCTORS @@ -320,13 +398,17 @@ class GenericAggrNode : public STEPnode { virtual SingleLinkNode * NewNode (); +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif + }; ///////////////////////////////////////////////////////////////////////////// class EntityNode : public STEPnode { public: - STEPentity * node; + SCLP23(Application_instance) * node; // INPUT virtual Severity StrToVal(const char *s, ErrorDescriptor *err, @@ -344,13 +426,13 @@ class EntityNode : public STEPnode { InstMgr *insts, int addFileId = 0); // OUTPUT virtual const char *asStr(SCLstring & s); - virtual const char *STEPwrite (SCLstring &s); + virtual const char *STEPwrite (SCLstring &s, const char * =0); virtual void STEPwrite (G4std::ostream& out =G4cout); // CONSTRUCTORS - EntityNode (STEPentity * e); - EntityNode () { } - ~EntityNode () { } + EntityNode (SCLP23(Application_instance) * e); + EntityNode(); + ~EntityNode(); virtual SingleLinkNode * NewNode (); @@ -380,6 +462,10 @@ class EntityNode : public STEPnode { << "\n" << _POC_ "\n"; return STEPread(in, err, 0, 0, 0); } + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; /////////////////////////////////////////////////////////////////////////// @@ -387,13 +473,13 @@ class EntityNode : public STEPnode { /****************************************************************** ** Class: SelectNode ** Description: this is a minimal representions for node in lists of - ** STEPenumerations + ** SCLP23(Select) ******************************************************************/ class SelectNode : public STEPnode { public: - SdaiSelect * node; + SCLP23(Select) * node; public: // INPUT @@ -402,23 +488,25 @@ class SelectNode : public STEPnode { InstMgr *insts, int addFileId = 0); virtual Severity StrToVal(G4std::istream &in, ErrorDescriptor *err, const TypeDescriptor *elem_type, - InstMgr *insts, int addFileId = 0); + InstMgr *insts, int addFileId = 0, + const char *currSch =0); virtual Severity STEPread(const char *s, ErrorDescriptor *err, const TypeDescriptor *elem_type, InstMgr *insts, int addFileId = 0); virtual Severity STEPread(G4std::istream &in, ErrorDescriptor *err, const TypeDescriptor *elem_type, - InstMgr *insts, int addFileId = 0); + InstMgr *insts, int addFileId = 0, + const char *currSch =0); // OUTPUT virtual const char *asStr(SCLstring & s); - virtual const char *STEPwrite (SCLstring &s); + virtual const char *STEPwrite (SCLstring &s, const char * =0); virtual void STEPwrite (G4std::ostream& out =G4cout); // CONSTRUCTORS - SelectNode (SdaiSelect * s) : node (s) { } - SelectNode () { } - ~SelectNode () { } + SelectNode(SCLP23(Select) * s); + SelectNode(); + ~SelectNode(); virtual SingleLinkNode * NewNode (); @@ -426,28 +514,32 @@ class SelectNode : public STEPnode { Severity StrToVal(const char *s, ErrorDescriptor *err) { G4cerr << "Internal error: " << __FILE__ << __LINE__ - << "\n" << _POC_ "\n"; + << "\n" << _POC_ "\n"; return StrToVal(s, err, 0, 0, 0); } Severity StrToVal(G4std::istream &in, ErrorDescriptor *err) { G4cerr << "Internal error: " << __FILE__ << __LINE__ - << "\n" << _POC_ "\n"; + << "\n" << _POC_ "\n"; return StrToVal(in, err, 0, 0, 0); } Severity STEPread(const char *s, ErrorDescriptor *err) { G4cerr << "Internal error: " << __FILE__ << __LINE__ - << "\n" << _POC_ "\n"; + << "\n" << _POC_ "\n"; return STEPread(s, err, 0, 0, 0); } Severity STEPread(G4std::istream &in, ErrorDescriptor *err) { G4cerr << "Internal error: " << __FILE__ << __LINE__ - << "\n" << _POC_ "\n"; + << "\n" << _POC_ "\n"; return STEPread(in, err, 0, 0, 0); } + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; /////////////////////////////////////////////////////////////////////////// @@ -460,7 +552,7 @@ class SelectNode : public STEPnode { class StringNode : public STEPnode { public: - SdaiString value; + SCLP23(String) value; public: // INPUT @@ -472,16 +564,20 @@ class StringNode : public STEPnode { // OUTPUT virtual const char *asStr(SCLstring & s); - virtual const char *STEPwrite (SCLstring &s); + virtual const char *STEPwrite (SCLstring &s, const char * =0); virtual void STEPwrite (G4std::ostream& out =G4cout); // CONSTRUCTORS StringNode(StringNode& sn); StringNode (const char * sStr); - StringNode () { value = 0; } - ~StringNode () { } + StringNode(); + ~StringNode(); virtual SingleLinkNode * NewNode (); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; /////////////////////////////////////////////////////////////////////////// @@ -494,7 +590,7 @@ class StringNode : public STEPnode { class BinaryNode : public STEPnode { public: - SdaiBinary value; + SCLP23(Binary) value; public: // INPUT @@ -506,28 +602,32 @@ class BinaryNode : public STEPnode { // OUTPUT virtual const char *asStr(SCLstring & s); - virtual const char *STEPwrite (SCLstring &s); + virtual const char *STEPwrite (SCLstring &s, const char * =0); virtual void STEPwrite (G4std::ostream& out =G4cout); // CONSTRUCTORS BinaryNode(BinaryNode& bn); BinaryNode (const char * sStr); - BinaryNode () { value = 0; } - ~BinaryNode () { } + BinaryNode(); + ~BinaryNode(); virtual SingleLinkNode * NewNode (); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; /****************************************************************** ** Class: EnumNode ** Description: this is a minimal representions for node in lists of - ** STEPenumerations + ** SCLP23(Enum) ******************************************************************/ class EnumNode : public STEPnode { public: - STEPenumeration * node; + SCLP23(Enum) * node; public: // INPUT @@ -539,20 +639,24 @@ class EnumNode : public STEPnode { // OUTPUT virtual const char *asStr(SCLstring & s); - virtual const char *STEPwrite (SCLstring &s); + virtual const char *STEPwrite (SCLstring &s, const char * =0); virtual void STEPwrite (G4std::ostream& out =G4cout); // CONSTRUCTORS - EnumNode (STEPenumeration * e) : node (e) { } - EnumNode () { } - ~EnumNode () { } + EnumNode(SCLP23(Enum) * e); + EnumNode(); + ~EnumNode(); virtual SingleLinkNode * NewNode (); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; class RealNode : public STEPnode { public: - SdaiReal value; // double + SCLP23(Real) value; // double public: // INPUT @@ -564,19 +668,23 @@ class RealNode : public STEPnode { // OUTPUT virtual const char *asStr(SCLstring & s); - virtual const char *STEPwrite (SCLstring &s); + virtual const char *STEPwrite (SCLstring &s, const char * =0); virtual void STEPwrite (G4std::ostream& out =G4cout); // CONSTRUCTORS - RealNode () { value = S_REAL_NULL; } - ~RealNode () { } + RealNode(); + ~RealNode(); virtual SingleLinkNode * NewNode (); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; class IntNode : public STEPnode { public: - SdaiInteger value; // long int + SCLP23(Integer) value; // long int public: // INPUT @@ -588,21 +696,25 @@ class IntNode : public STEPnode { // OUTPUT virtual const char *asStr(SCLstring & s); - virtual const char *STEPwrite (SCLstring &s); + virtual const char *STEPwrite (SCLstring &s, const char * =0); virtual void STEPwrite (G4std::ostream& out =G4cout); // CONSTRUCTORS - IntNode () { value = S_INT_NULL; } - ~IntNode () { } + IntNode(); + ~IntNode(); virtual SingleLinkNode * NewNode (); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; /****************************************************************** ** The following classes are currently stubs ** **/ - +/* class Array : public STEPaggregate { public: int lowerBound; @@ -625,5 +737,5 @@ class Set : public STEPaggregate { int cnt; }; - +*/ #endif diff --git a/source/geometry/solids/STEP/include/STEPattribute.h b/source/geometry/solids/STEP/include/STEPattribute.h index 4524853242..f2d3703da8 100644 --- a/source/geometry/solids/STEP/include/STEPattribute.h +++ b/source/geometry/solids/STEP/include/STEPattribute.h @@ -1,20 +1,10 @@ - - -// - - - -// -// $Id: STEPattribute.h,v 1.3 1999/12/15 14:50:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// #ifndef STEPATTRIBUTE_H #define STEPATTRIBUTE_H 1 /* * NIST STEP Core Class Library * clstepcore/STEPattribute.h -* May 1995 +* April 1997 * K. C. Morris * David Sauder @@ -22,7 +12,13 @@ * and is not subject to copyright. */ -/* */ +/* $Id: STEPattribute.h,v 1.4 2000/01/21 13:42:31 gcosmo Exp $ */ + +#include + +#ifdef __OSTORE__ +#include // Required to access ObjectStore Class Library +#endif #ifdef __O3DB__ #include @@ -32,29 +28,33 @@ #include #include +#include + // this is used to set a const int Real_Num_Precision // in STEPaggregate.cc and STEPattribute.cc #define REAL_NUM_PRECISION 15 -typedef unsigned short BOOLEAN; +//typedef unsigned short BOOLEAN; typedef double real; class InstMgr; -class STEPentity; -class STEPenumeration; +// Commented out following declaration, since meaningless - GC +//class SCLP23(Application_instance); class STEPaggregate; class SCLundefined; -class SdaiSelect; -class SdaiBinary; +//class SCLP23(Enum); +//class SCLP23(Select); +//class SCLP23(Binary); +//class SCLP23(String); class TypeDescriptor; class AttrDescriptor; class EntityDescriptor; #include "g4std/strstream" -#include +//#include -#define s_String char * +//#define s_String char * extern int SetErrOnNull(const char *attrValue, ErrorDescriptor *error); //////////////////// @@ -65,16 +65,16 @@ CheckRemainingInput(G4std::istream &in, ErrorDescriptor *err, const char *typeName, // used in error message const char *tokenList); // e.g. ",)" -extern STEPentity * +extern SCLP23(Application_instance) * ReadEntityRef(G4std::istream &in, ErrorDescriptor *err, char *tokenList, InstMgr * instances, int addFileId); -extern STEPentity * +extern SCLP23(Application_instance) * ReadEntityRef(const char * s, ErrorDescriptor *err, char *tokenList, InstMgr * instances, int addFileId); extern Severity -EntityValidLevel(STEPentity *se, +EntityValidLevel(SCLP23(Application_instance) *se, const TypeDescriptor *ed, // entity type that entity se needs // to match. (this must be an // EntityDescriptor) @@ -91,7 +91,7 @@ EntityValidLevel(const char *attrValue, // string contain entity ref //////////////////// //////////////////// -extern STEPentity *STEPread_reference (const char * s, ErrorDescriptor *err, +extern SCLP23(Application_instance) *STEPread_reference (const char * s, ErrorDescriptor *err, InstMgr * instances, int addFileId); //////////////////// @@ -108,39 +108,47 @@ PushPastImbedAggr (G4std::istream& in, SCLstring &s, ErrorDescriptor *err); extern void PushPastAggr1Dim(G4std::istream& in, SCLstring &s, ErrorDescriptor *err); -//extern Severity ValidateEntityType(STEPentity *se, +//extern Severity ValidateEntityType(SCLP23(Application_instance) *se, // const AttrDescriptor *ad, // ErrorDescriptor *error); class STEPattribute { friend G4std::ostream &operator<< ( G4std::ostream&, STEPattribute& ); - friend class STEPentity; - - protected: + +// The CenterLine compiler couldn't handle this friend declaration. +// Here is the error +// "../../../src/clstepcore/STEPattribute.h", line 118: internal << AT&T C++ Translator 3.0.2 - ObjectCenter Version 2.1>> error: cannot find friend P23::Application_instance +// We may want to change the next two lines back at some point? DAS +// friend class SCLP23(Application_instance); +// protected: + public: ErrorDescriptor _error; unsigned int _derive : 1; int Derive (unsigned int n =1) { return _derive =n; } + STEPattribute *_redefAttr; + void RedefiningAttr(STEPattribute *a) { _redefAttr = a; } + public: + const AttrDescriptor * aDesc; // You know which of these to use based on the return value of // NonRefType() - see below. BASE_TYPE is defined in baseType.h // This variable points to an appropriate member variable in the entity // class in the generated schema class library (the entity class is - // inherited from STEPentity) + // inherited from SCLP23(Application_instance)) union { - SdaiInteger *i; // INTEGER_TYPE // SdaiInteger is a long int - class SdaiString *S; // STRING_TYPE - class SdaiBinary *b; // BINARY_TYPE - SdaiReal *r; // REAL_TYPE and NUMBER_TYPE // SdaiReal is a double - class STEPentity* *c; // ENTITY_TYPE + SCLP23(String) *S;// STRING_TYPE + SCLP23(Integer) *i; // INTEGER_TYPE (Integer is a long int) + SCLP23(Binary) *b; // BINARY_TYPE + SCLP23(Real) *r; // REAL_TYPE and NUMBER_TYPE (Real is a double) + SCLP23(Application_instance)* *c; // ENTITY_TYPE STEPaggregate *a; // AGGREGATE_TYPE - STEPenumeration *e; // ENUM_TYPE, BOOLEAN_TYPE, and LOGICAL_TYPE - class SdaiSelect *sh; // SELECT_TYPE + SCLP23(Enum) *e; // ENUM_TYPE, BOOLEAN_TYPE, and LOGICAL_TYPE + SCLP23(Select) *sh; // SELECT_TYPE SCLundefined *u; // UNKNOWN_TYPE - void *p; } ptr; @@ -156,23 +164,25 @@ class STEPattribute { Severity StrToVal(const char *s, InstMgr *instances =0, int addFileId =0); Severity STEPread(G4std::istream& in = G4cin, InstMgr *instances =0, - int addFileId =0); + int addFileId =0, const char * =NULL); - const char * asStr(SCLstring &) const; // return the attr value as a string - void STEPwrite(G4std::ostream& out = G4cout); + const char * asStr(SCLstring &, const char * =0) const; + // return the attr value as a string + void STEPwrite(G4std::ostream& out = G4cout, const char * =0); - BOOLEAN ShallowCopy(STEPattribute *sa); + int ShallowCopy(STEPattribute *sa); Severity set_null(); ////////////// Return info on attr - BOOLEAN Nullable() const; // may this attribute be null? - BOOLEAN is_null () const; // is this attribute null? + int Nullable() const; // may this attribute be null? + int is_null () const; // is this attribute null? int IsDerived () const { return _derive; } + STEPattribute *RedefiningAttr() { return _redefAttr; } - const s_String Name() const; - const s_String TypeName() const; + const char * Name() const; + const char * TypeName() const; const BASE_TYPE Type() const; const BASE_TYPE NonRefType() const; const BASE_TYPE BaseType() const; @@ -184,6 +194,9 @@ class STEPattribute { Severity ValidLevel (const char *attrValue, ErrorDescriptor *error, InstMgr *im, int clearError = 1); +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif public: ////////////////// Constructors @@ -194,21 +207,21 @@ class STEPattribute { ~STEPattribute () {}; // INTEGER - STEPattribute (const class AttrDescriptor& d, SdaiInteger *p); + STEPattribute (const class AttrDescriptor& d, SCLP23(Integer) *p); // BINARY - STEPattribute (const class AttrDescriptor& d, SdaiBinary *p); + STEPattribute (const class AttrDescriptor& d, SCLP23(Binary) *p); // STRING - STEPattribute (const class AttrDescriptor& d, SdaiString *p); + STEPattribute (const class AttrDescriptor& d, SCLP23(String) *p); // REAL & NUMBER - STEPattribute (const class AttrDescriptor& d, SdaiReal *p); + STEPattribute (const class AttrDescriptor& d, SCLP23(Real) *p); // ENTITY - STEPattribute (const class AttrDescriptor& d, STEPentity* *p); + STEPattribute (const class AttrDescriptor& d, SCLP23(Application_instance)* *p); // AGGREGATE STEPattribute (const class AttrDescriptor& d, STEPaggregate *p); // ENUMERATION and Logical - STEPattribute (const class AttrDescriptor& d, STEPenumeration *p); + STEPattribute (const class AttrDescriptor& d, SCLP23(Enum) *p); // SELECT - STEPattribute (const class AttrDescriptor& d, class SdaiSelect *p); + STEPattribute (const class AttrDescriptor& d, SCLP23(Select) *p); // UNDEFINED STEPattribute (const class AttrDescriptor& d, SCLundefined *p); diff --git a/source/geometry/solids/STEP/include/STEPattributeList.h b/source/geometry/solids/STEP/include/STEPattributeList.h index 92a5b1f7d3..49ac471f2a 100644 --- a/source/geometry/solids/STEP/include/STEPattributeList.h +++ b/source/geometry/solids/STEP/include/STEPattributeList.h @@ -1,21 +1,11 @@ - -// - - - -// -// $Id: STEPattributeList.h,v 1.2 1999/05/21 20:20:31 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - #ifndef _STEPattributeList_h #define _STEPattributeList_h 1 /* * NIST STEP Core Class Library * clstepcore/STEPattributeList.h -* May 1995 +* April 1997 * K. C. Morris * David Sauder @@ -23,7 +13,11 @@ * and is not subject to copyright. */ -/* */ +/* $Id: STEPattributeList.h,v 1.3 2000/01/21 13:42:32 gcosmo Exp $ */ + +#ifdef __OSTORE__ +#include // Required to access ObjectStore Class Library +#endif #ifdef __O3DB__ #include @@ -32,7 +26,8 @@ //#ifndef _STEPattribute_typedefs //#define _STEPattribute_typedefs 1 -#include +//#include +class STEPattribute; #include //class STEPattribute; @@ -47,30 +42,39 @@ class AttrListNode : public SingleLinkNode STEPattribute *attr; public: - AttrListNode(STEPattribute *a) { attr = a; } + AttrListNode(STEPattribute *a); + virtual ~AttrListNode(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; class STEPattributeList : public SingleLinkList { public: - STEPattributeList() { } + STEPattributeList(); + virtual ~STEPattributeList(); STEPattribute& operator [] (int n); int list_length(); void push(STEPattribute *a); +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; /***************************************************************** ** ** -** This file defines the type STEPattributeList -- a List ** +** This file defines the type STEPattributeList -- a list ** ** of pointers to STEPattribute objects. The nodes on the ** -** List point to STEPattributes. +** list point to STEPattributes. ** ** USED TO BE - DAS ** The file was generated by using GNU's genclass.sh ** ** script with the List prototype definitions. The ** -** command to Generate it was as follows: ** +** command to generate it was as follows: ** genclass.sh STEPattribute ref List STEPattribute diff --git a/source/geometry/solids/STEP/include/STEPcomplex.h b/source/geometry/solids/STEP/include/STEPcomplex.h index 7a99490cb6..addac1ba46 100644 --- a/source/geometry/solids/STEP/include/STEPcomplex.h +++ b/source/geometry/solids/STEP/include/STEPcomplex.h @@ -1,13 +1,3 @@ - - -// - - - -// -// $Id: STEPcomplex.h,v 1.3 1999/12/15 14:50:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// #ifndef STEPCOMPLEX_H #define STEPCOMPLEX_H @@ -15,10 +5,11 @@ #include #include #include -#include +//#include #include -class STEPcomplex : public STEPentity { +class STEPcomplex : public SCLP23(Application_instance) { + public: STEPcomplex * sc; STEPcomplex * head; @@ -27,13 +18,14 @@ class STEPcomplex : public STEPentity { public: STEPcomplex(Registry *registry, int fileid); - STEPcomplex(Registry *registry, const SCLstring **names, int fileid); - STEPcomplex(Registry *registry, const char **names, int fileid); - + STEPcomplex(Registry *registry, const SCLstring **names, int fileid, + const char *schnm =0); + STEPcomplex(Registry *registry, const char **names, int fileid, + const char *schnm =0); virtual ~STEPcomplex(); - int EntityExists(const char *name); - STEPcomplex *EntityPart(const char *name); + int EntityExists(const char *name, const char *currSch =0); + STEPcomplex *EntityPart(const char *name, const char *currSch =0); /* // page 241 Stroustrup @@ -41,28 +33,37 @@ class STEPcomplex : public STEPentity { STEPcomplex &operator[](const int index); */ + virtual const EntityDescriptor * IsA(const EntityDescriptor *) const; + virtual Severity ValidLevel(ErrorDescriptor *error, InstMgr *im, int clearError = 1); // READ virtual Severity STEPread(int id, int addFileId, - InstMgr * instance_set, - G4std::istream& in =G4cin); + class InstMgr * instance_set, + G4std::istream& in =G4cin, const char *currSch =NULL, + int useTechCor =1); + virtual void STEPread_error(char c, int index, G4std::istream& in); // WRITE - virtual void STEPwrite(G4std::ostream& out =G4cout, int writeComment = 1); - virtual const char * STEPwrite(SCLstring &buf); + virtual void STEPwrite(G4std::ostream& out =G4cout, const char *currSch =NULL, + int writeComment = 1); + virtual const char * STEPwrite(SCLstring &buf, const char *currSch =NULL); - virtual void WriteExtMapEntities(G4std::ostream& out =G4cout); - virtual const char * WriteExtMapEntities(SCLstring &buf); + SCLP23(Application_instance) *Replicate(); + + virtual void WriteExtMapEntities(G4std::ostream& out =G4cout, + const char *currSch =NULL); + virtual const char * WriteExtMapEntities(SCLstring &buf, + const char *currSch =NULL); virtual void AppendEntity(STEPcomplex *stepc); protected: - virtual void CopyAs (STEPentity *); - void BuildAttrs(const char *s ); + virtual void CopyAs(SCLP23(Application_instance) *); + void BuildAttrs(const char *s); void AddEntityPart(const char *name); void AssignDerives(); - + void Initialize(const char **, const char *); }; #endif diff --git a/source/geometry/solids/STEP/include/STEPentity.h b/source/geometry/solids/STEP/include/STEPentity.h deleted file mode 100644 index d9432600e1..0000000000 --- a/source/geometry/solids/STEP/include/STEPentity.h +++ /dev/null @@ -1,165 +0,0 @@ - - -// - - - -// -// $Id: STEPentity.h,v 1.3 1999/12/15 14:50:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -#ifndef STEPENTITY_H -#define STEPENTITY_H 1 - -/* -* NIST STEP Core Class Library -* clstepcore/STEPentity.h -* May 1995 -* K. C. Morris -* David Sauder - -* Development of this software was funded by the United States Government, -* and is not subject to copyright. -*/ - -/* */ - -#ifdef __O3DB__ -#include -#endif - -#include -#include - -#include - -#include - -class STEPattributeList; -class STEPattribute; - -#include -#include - -class InstMgr; -class EntityDescriptor; - -/////////////////////////////////////////////////////////////////////////////// -// STEPentity is like the corresponding SDAI object AppInstance. - -class STEPentity : public EntityInstance { - private: - int _cur; // provides a built-in way of accessing attributes in order. - - public: - STEPattributeList attributes; - int STEPfile_id; - ErrorDescriptor _error; - SCLstring *p21Comment; - // registry additions - EntityDescriptor *eDesc; - - // head entity for multiple inheritance. If it is null then this - // STEPentity is not part of a multiply inherited entity. If it - // points to a STEPentity then this STEPentity is part of a mi entity - // and head points at the root STEPentity of the primary inheritance - // path (the one that is the root of the leaf entity). - STEPentity *headMiEntity; - // these form a chain of other entity parents for multiple inheritance - STEPentity *nextMiEntity; - - protected: - int _complex; - - public: - STEPentity (); - STEPentity (int fileid, int complex = 0); - virtual ~STEPentity(); - - int IsComplex() { return _complex; } - int SetFileId(int fid) { return STEPfile_id = fid; } - int GetFileId() const { return STEPfile_id; } - int FileId (int fid) { return STEPfile_id = fid; } - int FileId() const { return STEPfile_id; } - - void AddP21Comment(SCLstring &s, int replace = 1); - void AddP21Comment(const char *s, int replace = 1); - void DeleteP21Comment() { delete p21Comment; p21Comment = 0; } - - // guaranteed a string (may be null string) - const char *P21Comment() - { return ( p21Comment ? p21Comment->chars() : "" ); } - // returns null if no comment exists - const char *P21CommentRep() - { return ( p21Comment ? p21Comment->rep() : 0 ); } - - const char *EntityName() const { return eDesc->Name(); } - - virtual Severity ValidLevel(ErrorDescriptor *error, InstMgr *im, - int clearError = 1); - ErrorDescriptor &Error() { return _error; } - // clears entity's error and optionally all attr's errors - void ClearError(int clearAttrs = 1); - // clears all attr's errors - void ClearAttrError(); -// void EnforceOptionality(int on = 1); - - STEPentity *Replicate(); - -// ACCESS attributes in order. - int AttributeCount(); - STEPattribute * NextAttribute(); - void ResetAttributes() { _cur =0; } - -// READ - virtual Severity STEPread(int id, int addFileId, - class InstMgr * instance_set, - G4std::istream& in =G4cin); - virtual void STEPread_error(char c, int index, G4std::istream& in); - -// WRITE - virtual void STEPwrite(G4std::ostream& out =G4cout, int writeComment = 1); - virtual const char * STEPwrite(SCLstring &buf); - - void STEPwrite_reference (G4std::ostream& out =G4cout); - const char * STEPwrite_reference (SCLstring &buf); - - void beginSTEPwrite(G4std::ostream& out =G4cout); // writes out the SCOPE section - void endSTEPwrite(G4std::ostream& out =G4cout); - -// MULTIPLE INHERITANCE - int MultipleInheritance() { return !(headMiEntity == 0); } - - void HeadEntity(STEPentity *se) { headMiEntity = se; } - STEPentity * HeadEntity() { return headMiEntity; } - - STEPentity *GetNextMiEntity() { return nextMiEntity; } - STEPentity *GetMiEntity(char *EntityName); - void AppendMultInstance(STEPentity *se); - - protected: - STEPattribute * GetSTEPattribute (const char *); - STEPattribute * MakeDerived (const char *); - - virtual void CopyAs (STEPentity *); - void PrependEntityErrMsg(); -} -; - -/////////////////////////////////////////////////////////////////////////////// - -extern STEPentity NilSTEPentity; -#define ENTITY_NULL &NilSTEPentity -#define NULL_ENTITY &NilSTEPentity - -typedef STEPentity* STEPentityPtr; -typedef STEPentity* STEPentityH; - -extern STEPentity * -ReadEntityRef(G4std::istream &in, ErrorDescriptor *err, char *tokenList, - InstMgr * instances, int addFileId); - -//typedef STEPentity * (* Creator) () const; -//typedef STEPentity * (* Creator) () ; - -#endif diff --git a/source/geometry/solids/STEP/include/STEPfile.h b/source/geometry/solids/STEP/include/STEPfile.h index d6a145f5bf..a51d97008f 100644 --- a/source/geometry/solids/STEP/include/STEPfile.h +++ b/source/geometry/solids/STEP/include/STEPfile.h @@ -1,20 +1,10 @@ - - -// - - - -// -// $Id: STEPfile.h,v 1.3 1999/12/15 14:50:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// #ifndef _STEPFILE_H #define _STEPFILE_H /* * NIST STEP Core Class Library * cleditor/STEPfile.h -* May 1995 +* April 1997 * Peter Carr * K. C. Morris * David Sauder @@ -23,16 +13,17 @@ * and is not subject to copyright. */ -/* */ +/* $Id: STEPfile.h,v 1.5 2000/02/14 13:44:02 gcosmo Exp $ */ + +#ifdef __OSTORE__ +#include // Required to access ObjectStore Class Library +#endif + #ifdef __O3DB__ #include #endif -#include "globals.hh" -//#include - - -//typedef unsigned boolean; +/*#include */ #include #include #include "g4std/fstream" @@ -60,6 +51,14 @@ class STEPfile protected: //data members +#ifdef __OSTORE__ + public: + os_database *db; + void set_database(os_database *db_ptr) { db = db_ptr; } + os_database *get_database() { return db; } + protected: +#endif + #ifdef __O3DB__ InstMgr * _instances; Registry * _reg; @@ -81,7 +80,7 @@ class STEPfile //Registry *_headerUserDefined; // Registry *_headerRegistryOld; - int _headerId; //STEPfile_id given to STEPentity from header section + int _headerId; //STEPfile_id given to SCLP23(Application_instance) from header section //file information DirObj* _currentDir; @@ -119,6 +118,11 @@ class STEPfile //public access to member variables //header information InstMgr* HeaderInstances() { return _headerInstances; } + const Registry *HeaderRegistry() { return _headerRegistry; } +// to create header instances + SCLP23(Application_instance)* HeaderDefaultFileName(); + SCLP23(Application_instance)* HeaderDefaultFileDescription(); + SCLP23(Application_instance)* HeaderDefaultFileSchema(); //file information const char* FileName() const { return _fileName; } @@ -137,19 +141,26 @@ class STEPfile int SetFileType (FileTypeCode ft = VERSION_CURRENT); //Reading and Writing - Severity ReadExchangeFile (const char* filename =0); - Severity AppendExchangeFile (const char* filename =0); + Severity ReadExchangeFile (const char* filename =0, int useTechCor =1); + Severity AppendExchangeFile (const char* filename =0, int useTechCor =1); - Severity ReadWorkingFile (const char* filename =0); - Severity AppendWorkingFile (const char* filename =0); + Severity ReadWorkingFile (const char* filename =0, int useTechCor =1); + Severity AppendWorkingFile (const char* filename =0, int useTechCor =1); - Severity AppendFile (G4std::istream* in) ; + Severity AppendFile (G4std::istream* in, int useTechCor =1) ; - Severity WriteExchangeFile (G4std::ostream& out, int validate =1); - Severity WriteExchangeFile (const char* filename =0, int validate =1); + Severity WriteExchangeFile (G4std::ostream& out, int validate =1, + int clearError = 1, int writeComments = 1); + Severity WriteExchangeFile (const char* filename =0, int validate =1, + int clearError = 1, int writeComments = 1); + Severity WriteValuePairsFile(G4std::ostream& out, int validate =1, + int clearError =1, + int writeComments = 1, int mixedCase = 1); - Severity WriteWorkingFile (G4std::ostream& out); - Severity WriteWorkingFile (const char* filename =0); + Severity WriteWorkingFile (G4std::ostream& out, int clearError = 1, + int writeComments = 1); + Severity WriteWorkingFile (const char* filename =0, int clearError = 1, + int writeComments = 1); stateEnum EntityWfState(char c); @@ -157,11 +168,12 @@ class STEPfile //constructors STEPfile (Registry& r, InstMgr& i, const char *filename = (const char*)0); - ~STEPfile(); + virtual ~STEPfile(); - protected: + protected: //member functions - + char *schemaName( char * ); // returns and copies out schema name from + // header instances //called by ReadExchangeFile G4std::istream* OpenInputFile (const char* filename = ""); void CloseInputFile(G4std::istream* in); @@ -171,35 +183,36 @@ class STEPfile InstMgr* HeaderConvertToNew(InstMgr& oldinst); Severity HeaderVerifyInstances(InstMgr* im); void HeaderMergeInstances(InstMgr* im); - STEPentity* HeaderDefaultFileName(); - STEPentity* HeaderDefaultFileDescription(); - STEPentity* HeaderDefaultFileSchema(); - - int HeaderId (int Increment ); // =1); - int HeaderId (const char* nm); // ="\0"); // DELETED both defaults !! - // J.Apostolakis Oct 30, 98 + +// Commented following declaration, since NOT implemented and clashing with +// signature of function HeaderId(const char*) having default argument - GC +// int HeaderId (int increment =1); + int HeaderId (const char* nm ="\0"); int HeaderIdOld (const char* nm ="\0"); int ReadData1 (G4std::istream& in); // first pass to create instances - int ReadData2 (G4std::istream& in); // second pass to read instances + // second pass to read instances + int ReadData2 (G4std::istream& in, int useTechCor =1); // obsolete int ReadWorkingData1 (G4std::istream& in); - int ReadWorkingData2 (G4std::istream& in); + int ReadWorkingData2 (G4std::istream& in, int useTechCor =1); void ReadRestOfFile(G4std::istream& in); // create instance - used by ReadData1() - STEPentity * CreateInstance(G4std::istream& in, G4std::ostream& out); + SCLP23(Application_instance) * CreateInstance(G4std::istream& in, G4std::ostream& out); // create complex instance - used by CreateInstance() - STEPentity * CreateSubSuperInstance(G4std::istream& in, int fileid); + SCLP23(Application_instance) * CreateSubSuperInstance(G4std::istream& in, int fileid, + ErrorDescriptor &); // read the instance - used by ReadData2() - STEPentity * ReadInstance (G4std::istream& in, G4std::ostream& out, SCLstring &cmtStr); + SCLP23(Application_instance) * ReadInstance(G4std::istream& in, G4std::ostream& out, + SCLstring &cmtStr, int useTechCor =1); // reading scopes are still incomplete // these functions are stubs - Severity CreateScopeInstances(G4std::istream& in, STEPentityH ** scopelist); + Severity CreateScopeInstances(G4std::istream& in, SCLP23(Application_instance_ptr) ** scopelist); Severity ReadScopeInstances(G4std::istream& in); // Severity ReadSubSuperInstance(G4std::istream& in); @@ -207,19 +220,21 @@ class STEPfile int FindHeaderSection (G4std::istream& in); // writing working session files - void WriteWorkingData(G4std::ostream& out); + void WriteWorkingData(G4std::ostream& out, int writeComments = 1); //called by WriteExchangeFile G4std::ofstream* OpenOutputFile(const char* filename =0); void CloseOutputFile(G4std::ostream* out); void WriteHeader (G4std::ostream& out); - void WriteHeaderInstance (STEPentity *obj, G4std::ostream& out); + void WriteHeaderInstance (SCLP23(Application_instance) *obj, G4std::ostream& out); void WriteHeaderInstanceFileName (G4std::ostream& out); void WriteHeaderInstanceFileDescription (G4std::ostream& out); void WriteHeaderInstanceFileSchema (G4std::ostream& out); - void WriteData (G4std::ostream& out); + void WriteData (G4std::ostream& out, int writeComments = 1); + void WriteValuePairsData(G4std::ostream& out, int writeComments = 1, + int mixedCase = 1); int IncrementFileId (int fileid); int FileIdIncr() { return _fileIdIncr; } @@ -230,6 +245,5 @@ class STEPfile }; //inline functions -#endif - +#endif /* _STEPFILE_H */ diff --git a/source/geometry/solids/STEP/include/STEPselect.h b/source/geometry/solids/STEP/include/STEPselect.h deleted file mode 100644 index 0b19b699aa..0000000000 --- a/source/geometry/solids/STEP/include/STEPselect.h +++ /dev/null @@ -1,113 +0,0 @@ - - -// - - - -// -// $Id: STEPselect.h,v 1.3 1999/12/15 14:50:15 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -#ifndef _STEPSELECT_H -#define _STEPSELECT_H - -/* -* NIST STEP Core Class Library -* clstepcore/STEPselect.h -* May 1995 -* Dave Helfrick -* KC Morris - -* Development of this software was funded by the United States Government, -* and is not subject to copyright. -*/ - -/* */ - -#ifdef __O3DB__ -#include -#endif - -#include -#include -#include -#include -#include - -class TypeDescriptor; -class SelectTypeDescriptor; -class InstMgr; - -/********** - class definition for the select superclass SdaiSelect. -**********/ -class SdaiSelect { - protected: - const SelectTypeDescriptor *_type; - const TypeDescriptor * underlying_type; - BASE_TYPE base_type; // used by the subtypes - - SdaiString val; - ErrorDescriptor _error; - const TypeDescriptor * SetUnderlyingType (const TypeDescriptor *); - - const TypeDescriptor * CanBe (const char *) const; - const TypeDescriptor * CanBe (BASE_TYPE) const; - const TypeDescriptor * CanBe (const TypeDescriptor * td) const; - - virtual const TypeDescriptor * AssignEntity (STEPentity * se) =0; - virtual SdaiSelect * NewSelect () =0; - public: - Severity severity() const; - Severity severity( Severity ); - const char *Error(); - void Error( char * ); - // clears select's error - void ClearError(); - // clears error - - // constructors - SdaiSelect (const SelectTypeDescriptor * s =0, - const TypeDescriptor * td =0) - : _type (s), underlying_type (td) { } - - virtual ~SdaiSelect () { }; - - // from SDAI binding - SdaiString UnderlyingTypeName () const; - const TypeDescriptor * CurrentUnderlyingType() const; - int exists() const; - void nullify(); - - Severity SelectValidLevel(const char *attrValue, ErrorDescriptor *err, - InstMgr *im, int clearError); - - // reading and writing - const char * STEPwrite(SCLstring& s) const; - void STEPwrite (G4std::ostream& out =G4cout) const; - virtual void STEPwrite_content (G4std::ostream& out) const =0; -// char * asStr() const; - - - Severity StrToVal(const char *val, const char *selectType, - ErrorDescriptor *err, InstMgr * instances =0); - virtual Severity StrToVal_content (const char *, - InstMgr * instances =0) =0; - - Severity STEPread(G4std::istream& in, ErrorDescriptor *err, - InstMgr * instances = 0, int addFileId =0); - - // abstract function - virtual Severity STEPread_content (G4std::istream& in =G4cin, - InstMgr * instances =0, - int addFileId =0) =0; - - virtual SdaiSelect& operator =( const SdaiSelect& ) { return *this; } - - int set_null(); - int is_null(); -}; /** end class **/ - -typedef SdaiSelect * SdaiSelectH ; - -#endif diff --git a/source/geometry/solids/STEP/include/STEPundefined.h b/source/geometry/solids/STEP/include/STEPundefined.h index d113345710..949619370c 100644 --- a/source/geometry/solids/STEP/include/STEPundefined.h +++ b/source/geometry/solids/STEP/include/STEPundefined.h @@ -1,20 +1,10 @@ - - -// - - - -// -// $Id: STEPundefined.h,v 1.3 1999/12/15 14:50:15 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// #ifndef STEPUNDEFINED_H #define STEPUNDEFINED_H /* * NIST STEP Core Class Library * clstepcore/STEPundefined.h -* May 1995 +* April 1997 * KC Morris * David Sauder @@ -22,7 +12,7 @@ * and is not subject to copyright. */ -/* */ +/* $Id: STEPundefined.h,v 1.4 2000/01/21 13:42:33 gcosmo Exp $ */ #ifdef __O3DB__ #include diff --git a/source/geometry/solids/STEP/include/SdaiBinary.h b/source/geometry/solids/STEP/include/SdaiBinary.h index 3690c417a9..124d4b9138 100644 --- a/source/geometry/solids/STEP/include/SdaiBinary.h +++ b/source/geometry/solids/STEP/include/SdaiBinary.h @@ -1,27 +1,22 @@ - - -// - - - -// -// $Id: SdaiBinary.h,v 1.3 1999/12/15 14:50:15 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// #ifndef SDAIBINARY_H #define SDAIBINARY_H 1 /* * NIST STEP Core Class Library -* clstepcore/SdaiBinary.h -* May 1995 +* clstepcore/sdaiBinary.h +* April 1997 * KC Morris * Development of this software was funded by the United States Government, * and is not subject to copyright. */ -/* $Id: SdaiBinary.h,v */ +/* $Id: sdaiBinary.h,v */ + +/* +#ifdef __OSTORE__ +#include // Required to access ObjectStore Class Library +#endif #ifdef __O3DB__ #include @@ -39,24 +34,26 @@ class ErrorDescriptor; #ifndef BINARY_DELIM #define BINARY_DELIM '\"' #endif +*/ -class SdaiBinary : public SCLstring +class SCLP23_NAME(Binary) : public SCLstring { public: //constructor(s) & destructor - SdaiBinary (const char * str = 0, int max =0) : SCLstring (str,max) { } + SCLP23_NAME(Binary) (const char * str = 0, int max =0) + : SCLstring (str,max) { } //Josh L, 3/28/95 -// SdaiBinary (SCLstring& s) : SCLstring (s) { } -// SdaiBinary (SdaiBinary& s) : SCLstring (s) { } - SdaiBinary (const SCLstring& s) : SCLstring (s) { } +// SCLP23_NAME(Binary) (SCLstring& s) : SCLstring (s) { } +// SCLP23_NAME(Binary) (SCLP23_NAME(Binary)& s) : SCLstring (s) { } + SCLP23_NAME(Binary) (const SCLstring& s) : SCLstring (s) { } - ~SdaiBinary () { } + ~SCLP23_NAME(Binary) () { } // operators - SdaiBinary& operator= (const char* s); + SCLP23_NAME(Binary)& operator= (const char* s); // format for STEP const char * asStr () const { return chars (); } @@ -74,15 +71,13 @@ class SdaiBinary : public SCLstring int optional, char *tokenList, int needDelims = 0, int clearError = 1); +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif + protected: Severity ReadBinary(G4std::istream& in, ErrorDescriptor *err, int AssignVal = 1, int needDelims = 1); }; -inline -SdaiBinary& -SdaiBinary::operator= (const char* s) - { SCLstring::operator= (s); - return *this; } - #endif diff --git a/source/geometry/solids/STEP/include/SdaiCONFIG_CONTROL_DESIGN.h b/source/geometry/solids/STEP/include/SdaiCONFIG_CONTROL_DESIGN.h index af50600950..5853a952b7 100644 --- a/source/geometry/solids/STEP/include/SdaiCONFIG_CONTROL_DESIGN.h +++ b/source/geometry/solids/STEP/include/SdaiCONFIG_CONTROL_DESIGN.h @@ -1,4675 +1,5848 @@ - - -// - - - -// -// $Id: SdaiCONFIG_CONTROL_DESIGN.h,v 1.3 1999/12/15 14:50:15 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// #ifndef SDAICONFIG_CONTROL_DESIGN_H #define SDAICONFIG_CONTROL_DESIGN_H // 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.h,v 1.6 2000/06/09 13:55:20 gcosmo Exp $ */ + +#ifdef __OSTORE__ +#include // Required to access ObjectStore Class Library +#endif + #ifdef __O3DB__ #include #endif -#ifndef SCHEMA_H -#include +#ifndef SCHEMA_H +#include +#endif + +#ifdef PART26 +#include +// Create a corbaSchema.h file in this directory with a #include in +// it for your IDL generated schema-specific .hh file. +#include #endif /* ************** TYPES */ -// ***** Describe the Entities +#if __OSTORE__ +STEPaggregate * create_SdaiSet_of_reversible_topology_item (os_database *db); -class SdaiRepresentation_item; -typedef SdaiRepresentation_item * SdaiRepresentation_itemH; -extern EntityDescriptor *config_control_designe_representation_item; - -class SdaiGeometric_representation_item; -typedef SdaiGeometric_representation_item * SdaiGeometric_representation_itemH; -extern EntityDescriptor *config_control_designe_geometric_representation_item; - -class SdaiFunctionally_defined_transformation; -typedef SdaiFunctionally_defined_transformation * SdaiFunctionally_defined_transformationH; -extern EntityDescriptor *config_control_designe_functionally_defined_transformation; - -class SdaiCartesian_transformation_operator; -typedef SdaiCartesian_transformation_operator * SdaiCartesian_transformation_operatorH; -extern EntityDescriptor *config_control_designe_cartesian_transformation_operator; - -class SdaiCartesian_transformation_operator_3d; -typedef SdaiCartesian_transformation_operator_3d * SdaiCartesian_transformation_operator_3dH; -extern EntityDescriptor *config_control_designe_cartesian_transformation_operator_3d; - -class SdaiVersioned_action_request; -typedef SdaiVersioned_action_request * SdaiVersioned_action_requestH; -extern EntityDescriptor *config_control_designe_versioned_action_request; - -class SdaiRepresentation; -typedef SdaiRepresentation * SdaiRepresentationH; -extern EntityDescriptor *config_control_designe_representation; - -class SdaiShape_representation; -typedef SdaiShape_representation * SdaiShape_representationH; -extern EntityDescriptor *config_control_designe_shape_representation; - -class SdaiManifold_surface_shape_representation; -typedef SdaiManifold_surface_shape_representation * SdaiManifold_surface_shape_representationH; -extern EntityDescriptor *config_control_designe_manifold_surface_shape_representation; - -class SdaiCertification; -typedef SdaiCertification * SdaiCertificationH; -extern EntityDescriptor *config_control_designe_certification; - -class SdaiProduct_definition_relationship; -typedef SdaiProduct_definition_relationship * SdaiProduct_definition_relationshipH; -extern EntityDescriptor *config_control_designe_product_definition_relationship; - -class SdaiProduct_definition_usage; -typedef SdaiProduct_definition_usage * SdaiProduct_definition_usageH; -extern EntityDescriptor *config_control_designe_product_definition_usage; - -class SdaiAssembly_component_usage; -typedef SdaiAssembly_component_usage * SdaiAssembly_component_usageH; -extern EntityDescriptor *config_control_designe_assembly_component_usage; - -class SdaiQuantified_assembly_component_usage; -typedef SdaiQuantified_assembly_component_usage * SdaiQuantified_assembly_component_usageH; -extern EntityDescriptor *config_control_designe_quantified_assembly_component_usage; - -class SdaiSolid_model; -typedef SdaiSolid_model * SdaiSolid_modelH; -extern EntityDescriptor *config_control_designe_solid_model; - -class SdaiManifold_solid_brep; -typedef SdaiManifold_solid_brep * SdaiManifold_solid_brepH; -extern EntityDescriptor *config_control_designe_manifold_solid_brep; - -class SdaiFaceted_brep; -typedef SdaiFaceted_brep * SdaiFaceted_brepH; -extern EntityDescriptor *config_control_designe_faceted_brep; - -class SdaiAction_directive; -typedef SdaiAction_directive * SdaiAction_directiveH; -extern EntityDescriptor *config_control_designe_action_directive; - -class SdaiNamed_unit; -typedef SdaiNamed_unit * SdaiNamed_unitH; -extern EntityDescriptor *config_control_designe_named_unit; - -class SdaiPlane_angle_unit; -typedef SdaiPlane_angle_unit * SdaiPlane_angle_unitH; -extern EntityDescriptor *config_control_designe_plane_angle_unit; - -class SdaiMeasure_with_unit; -typedef SdaiMeasure_with_unit * SdaiMeasure_with_unitH; -extern EntityDescriptor *config_control_designe_measure_with_unit; - -class SdaiArea_measure_with_unit; -typedef SdaiArea_measure_with_unit * SdaiArea_measure_with_unitH; -extern EntityDescriptor *config_control_designe_area_measure_with_unit; - -class SdaiEffectivity; -typedef SdaiEffectivity * SdaiEffectivityH; -extern EntityDescriptor *config_control_designe_effectivity; - -class SdaiSerial_numbered_effectivity; -typedef SdaiSerial_numbered_effectivity * SdaiSerial_numbered_effectivityH; -extern EntityDescriptor *config_control_designe_serial_numbered_effectivity; - -class SdaiSurface; -typedef SdaiSurface * SdaiSurfaceH; -extern EntityDescriptor *config_control_designe_surface; - -class SdaiOffset_surface; -typedef SdaiOffset_surface * SdaiOffset_surfaceH; -extern EntityDescriptor *config_control_designe_offset_surface; - -class SdaiPlacement; -typedef SdaiPlacement * SdaiPlacementH; -extern EntityDescriptor *config_control_designe_placement; - -class SdaiAxis2_placement_2d; -typedef SdaiAxis2_placement_2d * SdaiAxis2_placement_2dH; -extern EntityDescriptor *config_control_designe_axis2_placement_2d; - -class SdaiProduct_category; -typedef SdaiProduct_category * SdaiProduct_categoryH; -extern EntityDescriptor *config_control_designe_product_category; - -class SdaiProduct_related_product_category; -typedef SdaiProduct_related_product_category * SdaiProduct_related_product_categoryH; -extern EntityDescriptor *config_control_designe_product_related_product_category; - -class SdaiCurve; -typedef SdaiCurve * SdaiCurveH; -extern EntityDescriptor *config_control_designe_curve; - -class SdaiConic; -typedef SdaiConic * SdaiConicH; -extern EntityDescriptor *config_control_designe_conic; - -class SdaiHyperbola; -typedef SdaiHyperbola * SdaiHyperbolaH; -extern EntityDescriptor *config_control_designe_hyperbola; - -class SdaiAddress; -typedef SdaiAddress * SdaiAddressH; -extern EntityDescriptor *config_control_designe_address; - -class SdaiOrganizational_address; -typedef SdaiOrganizational_address * SdaiOrganizational_addressH; -extern EntityDescriptor *config_control_designe_organizational_address; - -class SdaiBounded_surface; -typedef SdaiBounded_surface * SdaiBounded_surfaceH; -extern EntityDescriptor *config_control_designe_bounded_surface; - -class SdaiB_spline_surface; -typedef SdaiB_spline_surface * SdaiB_spline_surfaceH; -extern EntityDescriptor *config_control_designe_b_spline_surface; - -class SdaiUniform_surface; -typedef SdaiUniform_surface * SdaiUniform_surfaceH; -extern EntityDescriptor *config_control_designe_uniform_surface; - -class SdaiGeometrically_bounded_surface_shape_representation; -typedef SdaiGeometrically_bounded_surface_shape_representation * SdaiGeometrically_bounded_surface_shape_representationH; -extern EntityDescriptor *config_control_designe_geometrically_bounded_surface_shape_representation; - -class SdaiAxis1_placement; -typedef SdaiAxis1_placement * SdaiAxis1_placementH; -extern EntityDescriptor *config_control_designe_axis1_placement; - -class SdaiBounded_curve; -typedef SdaiBounded_curve * SdaiBounded_curveH; -extern EntityDescriptor *config_control_designe_bounded_curve; - -class SdaiB_spline_curve; -typedef SdaiB_spline_curve * SdaiB_spline_curveH; -extern EntityDescriptor *config_control_designe_b_spline_curve; - -class SdaiRational_b_spline_curve; -typedef SdaiRational_b_spline_curve * SdaiRational_b_spline_curveH; -extern EntityDescriptor *config_control_designe_rational_b_spline_curve; - -class SdaiAction_request_assignment; -typedef SdaiAction_request_assignment * SdaiAction_request_assignmentH; -extern EntityDescriptor *config_control_designe_action_request_assignment; - -class SdaiTopological_representation_item; -typedef SdaiTopological_representation_item * SdaiTopological_representation_itemH; -extern EntityDescriptor *config_control_designe_topological_representation_item; - -class SdaiFace_bound; -typedef SdaiFace_bound * SdaiFace_boundH; -extern EntityDescriptor *config_control_designe_face_bound; - -class SdaiLength_measure_with_unit; -typedef SdaiLength_measure_with_unit * SdaiLength_measure_with_unitH; -extern EntityDescriptor *config_control_designe_length_measure_with_unit; - -class SdaiDated_effectivity; -typedef SdaiDated_effectivity * SdaiDated_effectivityH; -extern EntityDescriptor *config_control_designe_dated_effectivity; - -class SdaiDirection; -typedef SdaiDirection * SdaiDirectionH; -extern EntityDescriptor *config_control_designe_direction; - -class SdaiNext_assembly_usage_occurrence; -typedef SdaiNext_assembly_usage_occurrence * SdaiNext_assembly_usage_occurrenceH; -extern EntityDescriptor *config_control_designe_next_assembly_usage_occurrence; - -class SdaiEdge; -typedef SdaiEdge * SdaiEdgeH; -extern EntityDescriptor *config_control_designe_edge; - -class SdaiOriented_edge; -typedef SdaiOriented_edge * SdaiOriented_edgeH; -extern EntityDescriptor *config_control_designe_oriented_edge; - -class SdaiPerson; -typedef SdaiPerson * SdaiPersonH; -extern EntityDescriptor *config_control_designe_person; - -class SdaiDocument; -typedef SdaiDocument * SdaiDocumentH; -extern EntityDescriptor *config_control_designe_document; - -class SdaiDocument_with_class; -typedef SdaiDocument_with_class * SdaiDocument_with_classH; -extern EntityDescriptor *config_control_designe_document_with_class; - -class SdaiConversion_based_unit; -typedef SdaiConversion_based_unit * SdaiConversion_based_unitH; -extern EntityDescriptor *config_control_designe_conversion_based_unit; - -class SdaiPoint; -typedef SdaiPoint * SdaiPointH; -extern EntityDescriptor *config_control_designe_point; - -class SdaiPoint_on_surface; -typedef SdaiPoint_on_surface * SdaiPoint_on_surfaceH; -extern EntityDescriptor *config_control_designe_point_on_surface; - -class SdaiProduct_definition_formation; -typedef SdaiProduct_definition_formation * SdaiProduct_definition_formationH; -extern EntityDescriptor *config_control_designe_product_definition_formation; - -class SdaiPerson_and_organization_assignment; -typedef SdaiPerson_and_organization_assignment * SdaiPerson_and_organization_assignmentH; -extern EntityDescriptor *config_control_designe_person_and_organization_assignment; - -class SdaiCc_design_person_and_organization_assignment; -typedef SdaiCc_design_person_and_organization_assignment * SdaiCc_design_person_and_organization_assignmentH; -extern EntityDescriptor *config_control_designe_cc_design_person_and_organization_assignment; - -class SdaiOffset_curve_3d; -typedef SdaiOffset_curve_3d * SdaiOffset_curve_3dH; -extern EntityDescriptor *config_control_designe_offset_curve_3d; - -class SdaiApproval; -typedef SdaiApproval * SdaiApprovalH; -extern EntityDescriptor *config_control_designe_approval; - -class SdaiComposite_curve; -typedef SdaiComposite_curve * SdaiComposite_curveH; -extern EntityDescriptor *config_control_designe_composite_curve; - -class SdaiComposite_curve_on_surface; -typedef SdaiComposite_curve_on_surface * SdaiComposite_curve_on_surfaceH; -extern EntityDescriptor *config_control_designe_composite_curve_on_surface; - -class SdaiBoundary_curve; -typedef SdaiBoundary_curve * SdaiBoundary_curveH; -extern EntityDescriptor *config_control_designe_boundary_curve; - -class SdaiRepresentation_context; -typedef SdaiRepresentation_context * SdaiRepresentation_contextH; -extern EntityDescriptor *config_control_designe_representation_context; - -class SdaiGeometric_representation_context; -typedef SdaiGeometric_representation_context * SdaiGeometric_representation_contextH; -extern EntityDescriptor *config_control_designe_geometric_representation_context; - -class SdaiAction_status; -typedef SdaiAction_status * SdaiAction_statusH; -extern EntityDescriptor *config_control_designe_action_status; - -class SdaiApplication_context; -typedef SdaiApplication_context * SdaiApplication_contextH; -extern EntityDescriptor *config_control_designe_application_context; - -class SdaiChange_request; -typedef SdaiChange_request * SdaiChange_requestH; -extern EntityDescriptor *config_control_designe_change_request; - -class SdaiDate_and_time; -typedef SdaiDate_and_time * SdaiDate_and_timeH; -extern EntityDescriptor *config_control_designe_date_and_time; - -class SdaiApproval_date_time; -typedef SdaiApproval_date_time * SdaiApproval_date_timeH; -extern EntityDescriptor *config_control_designe_approval_date_time; - -class SdaiApproval_role; -typedef SdaiApproval_role * SdaiApproval_roleH; -extern EntityDescriptor *config_control_designe_approval_role; - -class SdaiApplication_context_element; -typedef SdaiApplication_context_element * SdaiApplication_context_elementH; -extern EntityDescriptor *config_control_designe_application_context_element; - -class SdaiProduct_context; -typedef SdaiProduct_context * SdaiProduct_contextH; -extern EntityDescriptor *config_control_designe_product_context; - -class SdaiElementary_surface; -typedef SdaiElementary_surface * SdaiElementary_surfaceH; -extern EntityDescriptor *config_control_designe_elementary_surface; - -class SdaiSpherical_surface; -typedef SdaiSpherical_surface * SdaiSpherical_surfaceH; -extern EntityDescriptor *config_control_designe_spherical_surface; - -class SdaiApplication_protocol_definition; -typedef SdaiApplication_protocol_definition * SdaiApplication_protocol_definitionH; -extern EntityDescriptor *config_control_designe_application_protocol_definition; - -class SdaiSpecified_higher_usage_occurrence; -typedef SdaiSpecified_higher_usage_occurrence * SdaiSpecified_higher_usage_occurrenceH; -extern EntityDescriptor *config_control_designe_specified_higher_usage_occurrence; - -class SdaiProduct_definition_formation_with_specified_source; -typedef SdaiProduct_definition_formation_with_specified_source * SdaiProduct_definition_formation_with_specified_sourceH; -extern EntityDescriptor *config_control_designe_product_definition_formation_with_specified_source; - -class SdaiAction_request_solution; -typedef SdaiAction_request_solution * SdaiAction_request_solutionH; -extern EntityDescriptor *config_control_designe_action_request_solution; - -class SdaiUncertainty_measure_with_unit; -typedef SdaiUncertainty_measure_with_unit * SdaiUncertainty_measure_with_unitH; -extern EntityDescriptor *config_control_designe_uncertainty_measure_with_unit; - -class SdaiEdge_based_wireframe_model; -typedef SdaiEdge_based_wireframe_model * SdaiEdge_based_wireframe_modelH; -extern EntityDescriptor *config_control_designe_edge_based_wireframe_model; - -class SdaiPath; -typedef SdaiPath * SdaiPathH; -extern EntityDescriptor *config_control_designe_path; - -class SdaiConnected_face_set; -typedef SdaiConnected_face_set * SdaiConnected_face_setH; -extern EntityDescriptor *config_control_designe_connected_face_set; - -class SdaiOpen_shell; -typedef SdaiOpen_shell * SdaiOpen_shellH; -extern EntityDescriptor *config_control_designe_open_shell; - -class SdaiOriented_open_shell; -typedef SdaiOriented_open_shell * SdaiOriented_open_shellH; -extern EntityDescriptor *config_control_designe_oriented_open_shell; - -class SdaiSolid_angle_unit; -typedef SdaiSolid_angle_unit * SdaiSolid_angle_unitH; -extern EntityDescriptor *config_control_designe_solid_angle_unit; - -class SdaiCoordinated_universal_time_offset; -typedef SdaiCoordinated_universal_time_offset * SdaiCoordinated_universal_time_offsetH; -extern EntityDescriptor *config_control_designe_coordinated_universal_time_offset; - -class SdaiCurve_replica; -typedef SdaiCurve_replica * SdaiCurve_replicaH; -extern EntityDescriptor *config_control_designe_curve_replica; - -class SdaiQuasi_uniform_surface; -typedef SdaiQuasi_uniform_surface * SdaiQuasi_uniform_surfaceH; -extern EntityDescriptor *config_control_designe_quasi_uniform_surface; - -class SdaiSurface_curve; -typedef SdaiSurface_curve * SdaiSurface_curveH; -extern EntityDescriptor *config_control_designe_surface_curve; - -class SdaiAction_request_status; -typedef SdaiAction_request_status * SdaiAction_request_statusH; -extern EntityDescriptor *config_control_designe_action_request_status; - -class SdaiComposite_curve_segment; -typedef SdaiComposite_curve_segment * SdaiComposite_curve_segmentH; -extern EntityDescriptor *config_control_designe_composite_curve_segment; - -class SdaiReparametrised_composite_curve_segment; -typedef SdaiReparametrised_composite_curve_segment * SdaiReparametrised_composite_curve_segmentH; -extern EntityDescriptor *config_control_designe_reparametrised_composite_curve_segment; - -class SdaiRepresentation_relationship; -typedef SdaiRepresentation_relationship * SdaiRepresentation_relationshipH; -extern EntityDescriptor *config_control_designe_representation_relationship; - -class SdaiRepresentation_relationship_with_transformation; -typedef SdaiRepresentation_relationship_with_transformation * SdaiRepresentation_relationship_with_transformationH; -extern EntityDescriptor *config_control_designe_representation_relationship_with_transformation; - -class SdaiPerson_and_organization_role; -typedef SdaiPerson_and_organization_role * SdaiPerson_and_organization_roleH; -extern EntityDescriptor *config_control_designe_person_and_organization_role; - -class SdaiQuasi_uniform_curve; -typedef SdaiQuasi_uniform_curve * SdaiQuasi_uniform_curveH; -extern EntityDescriptor *config_control_designe_quasi_uniform_curve; - -class SdaiSwept_surface; -typedef SdaiSwept_surface * SdaiSwept_surfaceH; -extern EntityDescriptor *config_control_designe_swept_surface; - -class SdaiProperty_definition; -typedef SdaiProperty_definition * SdaiProperty_definitionH; -extern EntityDescriptor *config_control_designe_property_definition; - -class SdaiGlobal_uncertainty_assigned_context; -typedef SdaiGlobal_uncertainty_assigned_context * SdaiGlobal_uncertainty_assigned_contextH; -extern EntityDescriptor *config_control_designe_global_uncertainty_assigned_context; - -class SdaiOrganization_relationship; -typedef SdaiOrganization_relationship * SdaiOrganization_relationshipH; -extern EntityDescriptor *config_control_designe_organization_relationship; - -class SdaiParabola; -typedef SdaiParabola * SdaiParabolaH; -extern EntityDescriptor *config_control_designe_parabola; - -class SdaiRectangular_composite_surface; -typedef SdaiRectangular_composite_surface * SdaiRectangular_composite_surfaceH; -extern EntityDescriptor *config_control_designe_rectangular_composite_surface; - -class SdaiLot_effectivity; -typedef SdaiLot_effectivity * SdaiLot_effectivityH; -extern EntityDescriptor *config_control_designe_lot_effectivity; - -class SdaiSurface_of_linear_extrusion; -typedef SdaiSurface_of_linear_extrusion * SdaiSurface_of_linear_extrusionH; -extern EntityDescriptor *config_control_designe_surface_of_linear_extrusion; - -class SdaiShell_based_surface_model; -typedef SdaiShell_based_surface_model * SdaiShell_based_surface_modelH; -extern EntityDescriptor *config_control_designe_shell_based_surface_model; - -class SdaiUniform_curve; -typedef SdaiUniform_curve * SdaiUniform_curveH; -extern EntityDescriptor *config_control_designe_uniform_curve; - -class SdaiBezier_curve; -typedef SdaiBezier_curve * SdaiBezier_curveH; -extern EntityDescriptor *config_control_designe_bezier_curve; - -class SdaiLoop; -typedef SdaiLoop * SdaiLoopH; -extern EntityDescriptor *config_control_designe_loop; - -class SdaiEdge_loop; -typedef SdaiEdge_loop * SdaiEdge_loopH; -extern EntityDescriptor *config_control_designe_edge_loop; - -class SdaiDate; -typedef SdaiDate * SdaiDateH; -extern EntityDescriptor *config_control_designe_date; - -class SdaiCalendar_date; -typedef SdaiCalendar_date * SdaiCalendar_dateH; -extern EntityDescriptor *config_control_designe_calendar_date; - -class SdaiToroidal_surface; -typedef SdaiToroidal_surface * SdaiToroidal_surfaceH; -extern EntityDescriptor *config_control_designe_toroidal_surface; - -class SdaiPromissory_usage_occurrence; -typedef SdaiPromissory_usage_occurrence * SdaiPromissory_usage_occurrenceH; -extern EntityDescriptor *config_control_designe_promissory_usage_occurrence; - -class SdaiApproval_assignment; -typedef SdaiApproval_assignment * SdaiApproval_assignmentH; -extern EntityDescriptor *config_control_designe_approval_assignment; - -class SdaiConfiguration_item; -typedef SdaiConfiguration_item * SdaiConfiguration_itemH; -extern EntityDescriptor *config_control_designe_configuration_item; - -class SdaiContract_assignment; -typedef SdaiContract_assignment * SdaiContract_assignmentH; -extern EntityDescriptor *config_control_designe_contract_assignment; - -class SdaiVector; -typedef SdaiVector * SdaiVectorH; -extern EntityDescriptor *config_control_designe_vector; - -class SdaiIntersection_curve; -typedef SdaiIntersection_curve * SdaiIntersection_curveH; -extern EntityDescriptor *config_control_designe_intersection_curve; - -class SdaiTrimmed_curve; -typedef SdaiTrimmed_curve * SdaiTrimmed_curveH; -extern EntityDescriptor *config_control_designe_trimmed_curve; - -class SdaiProduct_definition_context; -typedef SdaiProduct_definition_context * SdaiProduct_definition_contextH; -extern EntityDescriptor *config_control_designe_product_definition_context; - -class SdaiItem_defined_transformation; -typedef SdaiItem_defined_transformation * SdaiItem_defined_transformationH; -extern EntityDescriptor *config_control_designe_item_defined_transformation; - -class SdaiAction_method; -typedef SdaiAction_method * SdaiAction_methodH; -extern EntityDescriptor *config_control_designe_action_method; - -class SdaiProduct_category_relationship; -typedef SdaiProduct_category_relationship * SdaiProduct_category_relationshipH; -extern EntityDescriptor *config_control_designe_product_category_relationship; - -class SdaiPlane_angle_measure_with_unit; -typedef SdaiPlane_angle_measure_with_unit * SdaiPlane_angle_measure_with_unitH; -extern EntityDescriptor *config_control_designe_plane_angle_measure_with_unit; - -class SdaiVertex; -typedef SdaiVertex * SdaiVertexH; -extern EntityDescriptor *config_control_designe_vertex; - -class SdaiRepresentation_map; -typedef SdaiRepresentation_map * SdaiRepresentation_mapH; -extern EntityDescriptor *config_control_designe_representation_map; - -class SdaiProduct_definition_effectivity; -typedef SdaiProduct_definition_effectivity * SdaiProduct_definition_effectivityH; -extern EntityDescriptor *config_control_designe_product_definition_effectivity; - -class SdaiConfiguration_effectivity; -typedef SdaiConfiguration_effectivity * SdaiConfiguration_effectivityH; -extern EntityDescriptor *config_control_designe_configuration_effectivity; - -class SdaiEllipse; -typedef SdaiEllipse * SdaiEllipseH; -extern EntityDescriptor *config_control_designe_ellipse; - -class SdaiContext_dependent_unit; -typedef SdaiContext_dependent_unit * SdaiContext_dependent_unitH; -extern EntityDescriptor *config_control_designe_context_dependent_unit; - -class SdaiAlternate_product_relationship; -typedef SdaiAlternate_product_relationship * SdaiAlternate_product_relationshipH; -extern EntityDescriptor *config_control_designe_alternate_product_relationship; - -class SdaiDocument_type; -typedef SdaiDocument_type * SdaiDocument_typeH; -extern EntityDescriptor *config_control_designe_document_type; - -class SdaiDocument_reference; -typedef SdaiDocument_reference * SdaiDocument_referenceH; -extern EntityDescriptor *config_control_designe_document_reference; - -class SdaiMechanical_context; -typedef SdaiMechanical_context * SdaiMechanical_contextH; -extern EntityDescriptor *config_control_designe_mechanical_context; - -class SdaiShell_based_wireframe_model; -typedef SdaiShell_based_wireframe_model * SdaiShell_based_wireframe_modelH; -extern EntityDescriptor *config_control_designe_shell_based_wireframe_model; - -class SdaiContract; -typedef SdaiContract * SdaiContractH; -extern EntityDescriptor *config_control_designe_contract; - -class SdaiDimensional_exponents; -typedef SdaiDimensional_exponents * SdaiDimensional_exponentsH; -extern EntityDescriptor *config_control_designe_dimensional_exponents; - -class SdaiStart_request; -typedef SdaiStart_request * SdaiStart_requestH; -extern EntityDescriptor *config_control_designe_start_request; - -class SdaiCc_design_specification_reference; -typedef SdaiCc_design_specification_reference * SdaiCc_design_specification_referenceH; -extern EntityDescriptor *config_control_designe_cc_design_specification_reference; - -class SdaiSupplied_part_relationship; -typedef SdaiSupplied_part_relationship * SdaiSupplied_part_relationshipH; -extern EntityDescriptor *config_control_designe_supplied_part_relationship; - -class SdaiContext_dependent_shape_representation; -typedef SdaiContext_dependent_shape_representation * SdaiContext_dependent_shape_representationH; -extern EntityDescriptor *config_control_designe_context_dependent_shape_representation; - -class SdaiOrdinal_date; -typedef SdaiOrdinal_date * SdaiOrdinal_dateH; -extern EntityDescriptor *config_control_designe_ordinal_date; - -class SdaiFace_outer_bound; -typedef SdaiFace_outer_bound * SdaiFace_outer_boundH; -extern EntityDescriptor *config_control_designe_face_outer_bound; - -class SdaiMass_measure_with_unit; -typedef SdaiMass_measure_with_unit * SdaiMass_measure_with_unitH; -extern EntityDescriptor *config_control_designe_mass_measure_with_unit; - -class SdaiBrep_with_voids; -typedef SdaiBrep_with_voids * SdaiBrep_with_voidsH; -extern EntityDescriptor *config_control_designe_brep_with_voids; - -class SdaiWeek_of_year_and_day_date; -typedef SdaiWeek_of_year_and_day_date * SdaiWeek_of_year_and_day_dateH; -extern EntityDescriptor *config_control_designe_week_of_year_and_day_date; - -class SdaiPoint_on_curve; -typedef SdaiPoint_on_curve * SdaiPoint_on_curveH; -extern EntityDescriptor *config_control_designe_point_on_curve; - -class SdaiShell_based_wireframe_shape_representation; -typedef SdaiShell_based_wireframe_shape_representation * SdaiShell_based_wireframe_shape_representationH; -extern EntityDescriptor *config_control_designe_shell_based_wireframe_shape_representation; - -class SdaiFace; -typedef SdaiFace * SdaiFaceH; -extern EntityDescriptor *config_control_designe_face; - -class SdaiFace_surface; -typedef SdaiFace_surface * SdaiFace_surfaceH; -extern EntityDescriptor *config_control_designe_face_surface; - -class SdaiOriented_face; -typedef SdaiOriented_face * SdaiOriented_faceH; -extern EntityDescriptor *config_control_designe_oriented_face; - -class SdaiSurface_of_revolution; -typedef SdaiSurface_of_revolution * SdaiSurface_of_revolutionH; -extern EntityDescriptor *config_control_designe_surface_of_revolution; - -class SdaiAdvanced_brep_shape_representation; -typedef SdaiAdvanced_brep_shape_representation * SdaiAdvanced_brep_shape_representationH; -extern EntityDescriptor *config_control_designe_advanced_brep_shape_representation; - -class SdaiEdge_curve; -typedef SdaiEdge_curve * SdaiEdge_curveH; -extern EntityDescriptor *config_control_designe_edge_curve; - -class SdaiPoint_replica; -typedef SdaiPoint_replica * SdaiPoint_replicaH; -extern EntityDescriptor *config_control_designe_point_replica; - -class SdaiProduct; -typedef SdaiProduct * SdaiProductH; -extern EntityDescriptor *config_control_designe_product; - -class SdaiShape_aspect_relationship; -typedef SdaiShape_aspect_relationship * SdaiShape_aspect_relationshipH; -extern EntityDescriptor *config_control_designe_shape_aspect_relationship; - -class SdaiRectangular_trimmed_surface; -typedef SdaiRectangular_trimmed_surface * SdaiRectangular_trimmed_surfaceH; -extern EntityDescriptor *config_control_designe_rectangular_trimmed_surface; - -class SdaiPlane; -typedef SdaiPlane * SdaiPlaneH; -extern EntityDescriptor *config_control_designe_plane; - -class SdaiAction_assignment; -typedef SdaiAction_assignment * SdaiAction_assignmentH; -extern EntityDescriptor *config_control_designe_action_assignment; - -class SdaiChange; -typedef SdaiChange * SdaiChangeH; -extern EntityDescriptor *config_control_designe_change; - -class SdaiCircle; -typedef SdaiCircle * SdaiCircleH; -extern EntityDescriptor *config_control_designe_circle; - -class SdaiLine; -typedef SdaiLine * SdaiLineH; -extern EntityDescriptor *config_control_designe_line; - -class SdaiProperty_definition_representation; -typedef SdaiProperty_definition_representation * SdaiProperty_definition_representationH; -extern EntityDescriptor *config_control_designe_property_definition_representation; - -class SdaiGeometric_set; -typedef SdaiGeometric_set * SdaiGeometric_setH; -extern EntityDescriptor *config_control_designe_geometric_set; - -class SdaiGeometric_curve_set; -typedef SdaiGeometric_curve_set * SdaiGeometric_curve_setH; -extern EntityDescriptor *config_control_designe_geometric_curve_set; - -class SdaiPersonal_address; -typedef SdaiPersonal_address * SdaiPersonal_addressH; -extern EntityDescriptor *config_control_designe_personal_address; - -class SdaiDocument_relationship; -typedef SdaiDocument_relationship * SdaiDocument_relationshipH; -extern EntityDescriptor *config_control_designe_document_relationship; - -class SdaiPcurve; -typedef SdaiPcurve * SdaiPcurveH; -extern EntityDescriptor *config_control_designe_pcurve; - -class SdaiOuter_boundary_curve; -typedef SdaiOuter_boundary_curve * SdaiOuter_boundary_curveH; -extern EntityDescriptor *config_control_designe_outer_boundary_curve; - -class SdaiShape_representation_relationship; -typedef SdaiShape_representation_relationship * SdaiShape_representation_relationshipH; -extern EntityDescriptor *config_control_designe_shape_representation_relationship; - -class SdaiAssembly_component_usage_substitute; -typedef SdaiAssembly_component_usage_substitute * SdaiAssembly_component_usage_substituteH; -extern EntityDescriptor *config_control_designe_assembly_component_usage_substitute; - -class SdaiDegenerate_pcurve; -typedef SdaiDegenerate_pcurve * SdaiDegenerate_pcurveH; -extern EntityDescriptor *config_control_designe_degenerate_pcurve; - -class SdaiEvaluated_degenerate_pcurve; -typedef SdaiEvaluated_degenerate_pcurve * SdaiEvaluated_degenerate_pcurveH; -extern EntityDescriptor *config_control_designe_evaluated_degenerate_pcurve; - -class SdaiSolid_angle_measure_with_unit; -typedef SdaiSolid_angle_measure_with_unit * SdaiSolid_angle_measure_with_unitH; -extern EntityDescriptor *config_control_designe_solid_angle_measure_with_unit; - -class SdaiConnected_edge_set; -typedef SdaiConnected_edge_set * SdaiConnected_edge_setH; -extern EntityDescriptor *config_control_designe_connected_edge_set; - -class SdaiAction; -typedef SdaiAction * SdaiActionH; -extern EntityDescriptor *config_control_designe_action; - -class SdaiExecuted_action; -typedef SdaiExecuted_action * SdaiExecuted_actionH; -extern EntityDescriptor *config_control_designe_executed_action; - -class SdaiDirected_action; -typedef SdaiDirected_action * SdaiDirected_actionH; -extern EntityDescriptor *config_control_designe_directed_action; - -class SdaiOrganizational_project; -typedef SdaiOrganizational_project * SdaiOrganizational_projectH; -extern EntityDescriptor *config_control_designe_organizational_project; - -class SdaiDate_time_role; -typedef SdaiDate_time_role * SdaiDate_time_roleH; -extern EntityDescriptor *config_control_designe_date_time_role; - -class SdaiCurve_bounded_surface; -typedef SdaiCurve_bounded_surface * SdaiCurve_bounded_surfaceH; -extern EntityDescriptor *config_control_designe_curve_bounded_surface; - -class SdaiClosed_shell; -typedef SdaiClosed_shell * SdaiClosed_shellH; -extern EntityDescriptor *config_control_designe_closed_shell; - -class SdaiDesign_make_from_relationship; -typedef SdaiDesign_make_from_relationship * SdaiDesign_make_from_relationshipH; -extern EntityDescriptor *config_control_designe_design_make_from_relationship; - -class SdaiDefinitional_representation; -typedef SdaiDefinitional_representation * SdaiDefinitional_representationH; -extern EntityDescriptor *config_control_designe_definitional_representation; - -class SdaiProduct_definition_shape; -typedef SdaiProduct_definition_shape * SdaiProduct_definition_shapeH; -extern EntityDescriptor *config_control_designe_product_definition_shape; - -class SdaiSi_unit; -typedef SdaiSi_unit * SdaiSi_unitH; -extern EntityDescriptor *config_control_designe_si_unit; - -class SdaiBezier_surface; -typedef SdaiBezier_surface * SdaiBezier_surfaceH; -extern EntityDescriptor *config_control_designe_bezier_surface; - -class SdaiCertification_assignment; -typedef SdaiCertification_assignment * SdaiCertification_assignmentH; -extern EntityDescriptor *config_control_designe_certification_assignment; - -class SdaiStart_work; -typedef SdaiStart_work * SdaiStart_workH; -extern EntityDescriptor *config_control_designe_start_work; - -class SdaiContract_type; -typedef SdaiContract_type * SdaiContract_typeH; -extern EntityDescriptor *config_control_designe_contract_type; - -class SdaiB_spline_curve_with_knots; -typedef SdaiB_spline_curve_with_knots * SdaiB_spline_curve_with_knotsH; -extern EntityDescriptor *config_control_designe_b_spline_curve_with_knots; - -class SdaiCc_design_approval; -typedef SdaiCc_design_approval * SdaiCc_design_approvalH; -extern EntityDescriptor *config_control_designe_cc_design_approval; - -class SdaiEdge_based_wireframe_shape_representation; -typedef SdaiEdge_based_wireframe_shape_representation * SdaiEdge_based_wireframe_shape_representationH; -extern EntityDescriptor *config_control_designe_edge_based_wireframe_shape_representation; - -class SdaiGeometrically_bounded_wireframe_shape_representation; -typedef SdaiGeometrically_bounded_wireframe_shape_representation * SdaiGeometrically_bounded_wireframe_shape_representationH; -extern EntityDescriptor *config_control_designe_geometrically_bounded_wireframe_shape_representation; - -class SdaiProduct_concept; -typedef SdaiProduct_concept * SdaiProduct_conceptH; -extern EntityDescriptor *config_control_designe_product_concept; - -class SdaiCc_design_contract; -typedef SdaiCc_design_contract * SdaiCc_design_contractH; -extern EntityDescriptor *config_control_designe_cc_design_contract; - -class SdaiSeam_curve; -typedef SdaiSeam_curve * SdaiSeam_curveH; -extern EntityDescriptor *config_control_designe_seam_curve; - -class SdaiAxis2_placement_3d; -typedef SdaiAxis2_placement_3d * SdaiAxis2_placement_3dH; -extern EntityDescriptor *config_control_designe_axis2_placement_3d; - -class SdaiRational_b_spline_surface; -typedef SdaiRational_b_spline_surface * SdaiRational_b_spline_surfaceH; -extern EntityDescriptor *config_control_designe_rational_b_spline_surface; - -class SdaiConfiguration_design; -typedef SdaiConfiguration_design * SdaiConfiguration_designH; -extern EntityDescriptor *config_control_designe_configuration_design; - -class SdaiDesign_context; -typedef SdaiDesign_context * SdaiDesign_contextH; -extern EntityDescriptor *config_control_designe_design_context; - -class SdaiProduct_definition; -typedef SdaiProduct_definition * SdaiProduct_definitionH; -extern EntityDescriptor *config_control_designe_product_definition; - -class SdaiProduct_definition_with_associated_documents; -typedef SdaiProduct_definition_with_associated_documents * SdaiProduct_definition_with_associated_documentsH; -extern EntityDescriptor *config_control_designe_product_definition_with_associated_documents; - -class SdaiOrganization; -typedef SdaiOrganization * SdaiOrganizationH; -extern EntityDescriptor *config_control_designe_organization; - -class SdaiCc_design_certification; -typedef SdaiCc_design_certification * SdaiCc_design_certificationH; -extern EntityDescriptor *config_control_designe_cc_design_certification; - -class SdaiB_spline_surface_with_knots; -typedef SdaiB_spline_surface_with_knots * SdaiB_spline_surface_with_knotsH; -extern EntityDescriptor *config_control_designe_b_spline_surface_with_knots; - -class SdaiCertification_type; -typedef SdaiCertification_type * SdaiCertification_typeH; -extern EntityDescriptor *config_control_designe_certification_type; - -class SdaiOriented_path; -typedef SdaiOriented_path * SdaiOriented_pathH; -extern EntityDescriptor *config_control_designe_oriented_path; - -class SdaiSecurity_classification; -typedef SdaiSecurity_classification * SdaiSecurity_classificationH; -extern EntityDescriptor *config_control_designe_security_classification; - -class SdaiVertex_loop; -typedef SdaiVertex_loop * SdaiVertex_loopH; -extern EntityDescriptor *config_control_designe_vertex_loop; - -class SdaiApproval_status; -typedef SdaiApproval_status * SdaiApproval_statusH; -extern EntityDescriptor *config_control_designe_approval_status; - -class SdaiCartesian_point; -typedef SdaiCartesian_point * SdaiCartesian_pointH; -extern EntityDescriptor *config_control_designe_cartesian_point; - -class SdaiDate_and_time_assignment; -typedef SdaiDate_and_time_assignment * SdaiDate_and_time_assignmentH; -extern EntityDescriptor *config_control_designe_date_and_time_assignment; - -class SdaiParametric_representation_context; -typedef SdaiParametric_representation_context * SdaiParametric_representation_contextH; -extern EntityDescriptor *config_control_designe_parametric_representation_context; - -class SdaiProduct_concept_context; -typedef SdaiProduct_concept_context * SdaiProduct_concept_contextH; -extern EntityDescriptor *config_control_designe_product_concept_context; - -class SdaiCartesian_transformation_operator_2d; -typedef SdaiCartesian_transformation_operator_2d * SdaiCartesian_transformation_operator_2dH; -extern EntityDescriptor *config_control_designe_cartesian_transformation_operator_2d; - -class SdaiSurface_patch; -typedef SdaiSurface_patch * SdaiSurface_patchH; -extern EntityDescriptor *config_control_designe_surface_patch; - -class SdaiLength_unit; -typedef SdaiLength_unit * SdaiLength_unitH; -extern EntityDescriptor *config_control_designe_length_unit; - -class SdaiShape_aspect; -typedef SdaiShape_aspect * SdaiShape_aspectH; -extern EntityDescriptor *config_control_designe_shape_aspect; - -class SdaiVolume_measure_with_unit; -typedef SdaiVolume_measure_with_unit * SdaiVolume_measure_with_unitH; -extern EntityDescriptor *config_control_designe_volume_measure_with_unit; - -class SdaiAdvanced_face; -typedef SdaiAdvanced_face * SdaiAdvanced_faceH; -extern EntityDescriptor *config_control_designe_advanced_face; - -class SdaiSecurity_classification_level; -typedef SdaiSecurity_classification_level * SdaiSecurity_classification_levelH; -extern EntityDescriptor *config_control_designe_security_classification_level; - -class SdaiApproval_relationship; -typedef SdaiApproval_relationship * SdaiApproval_relationshipH; -extern EntityDescriptor *config_control_designe_approval_relationship; - -class SdaiPolyline; -typedef SdaiPolyline * SdaiPolylineH; -extern EntityDescriptor *config_control_designe_polyline; - -class SdaiApproval_person_organization; -typedef SdaiApproval_person_organization * SdaiApproval_person_organizationH; -extern EntityDescriptor *config_control_designe_approval_person_organization; - -class SdaiSurface_replica; -typedef SdaiSurface_replica * SdaiSurface_replicaH; -extern EntityDescriptor *config_control_designe_surface_replica; - -class SdaiSecurity_classification_assignment; -typedef SdaiSecurity_classification_assignment * SdaiSecurity_classification_assignmentH; -extern EntityDescriptor *config_control_designe_security_classification_assignment; - -class SdaiCc_design_security_classification; -typedef SdaiCc_design_security_classification * SdaiCc_design_security_classificationH; -extern EntityDescriptor *config_control_designe_cc_design_security_classification; - -class SdaiFaceted_brep_shape_representation; -typedef SdaiFaceted_brep_shape_representation * SdaiFaceted_brep_shape_representationH; -extern EntityDescriptor *config_control_designe_faceted_brep_shape_representation; - -class SdaiDocument_usage_constraint; -typedef SdaiDocument_usage_constraint * SdaiDocument_usage_constraintH; -extern EntityDescriptor *config_control_designe_document_usage_constraint; - -class SdaiVertex_point; -typedef SdaiVertex_point * SdaiVertex_pointH; -extern EntityDescriptor *config_control_designe_vertex_point; - -class SdaiCc_design_date_and_time_assignment; -typedef SdaiCc_design_date_and_time_assignment * SdaiCc_design_date_and_time_assignmentH; -extern EntityDescriptor *config_control_designe_cc_design_date_and_time_assignment; - -class SdaiOriented_closed_shell; -typedef SdaiOriented_closed_shell * SdaiOriented_closed_shellH; -extern EntityDescriptor *config_control_designe_oriented_closed_shell; - -class SdaiPerson_and_organization; -typedef SdaiPerson_and_organization * SdaiPerson_and_organizationH; -extern EntityDescriptor *config_control_designe_person_and_organization; - -class SdaiCylindrical_surface; -typedef SdaiCylindrical_surface * SdaiCylindrical_surfaceH; -extern EntityDescriptor *config_control_designe_cylindrical_surface; - -class SdaiLocal_time; -typedef SdaiLocal_time * SdaiLocal_timeH; -extern EntityDescriptor *config_control_designe_local_time; - -class SdaiMass_unit; -typedef SdaiMass_unit * SdaiMass_unitH; -extern EntityDescriptor *config_control_designe_mass_unit; - -class SdaiVertex_shell; -typedef SdaiVertex_shell * SdaiVertex_shellH; -extern EntityDescriptor *config_control_designe_vertex_shell; - -class SdaiPoly_loop; -typedef SdaiPoly_loop * SdaiPoly_loopH; -extern EntityDescriptor *config_control_designe_poly_loop; - -class SdaiWire_shell; -typedef SdaiWire_shell * SdaiWire_shellH; -extern EntityDescriptor *config_control_designe_wire_shell; - -class SdaiArea_unit; -typedef SdaiArea_unit * SdaiArea_unitH; -extern EntityDescriptor *config_control_designe_area_unit; - -class SdaiMapped_item; -typedef SdaiMapped_item * SdaiMapped_itemH; -extern EntityDescriptor *config_control_designe_mapped_item; - -class SdaiOffset_curve_2d; -typedef SdaiOffset_curve_2d * SdaiOffset_curve_2dH; -extern EntityDescriptor *config_control_designe_offset_curve_2d; - -class SdaiShape_definition_representation; -typedef SdaiShape_definition_representation * SdaiShape_definition_representationH; -extern EntityDescriptor *config_control_designe_shape_definition_representation; - -class SdaiVolume_unit; -typedef SdaiVolume_unit * SdaiVolume_unitH; -extern EntityDescriptor *config_control_designe_volume_unit; - -class SdaiConical_surface; -typedef SdaiConical_surface * SdaiConical_surfaceH; -extern EntityDescriptor *config_control_designe_conical_surface; - -class SdaiGlobal_unit_assigned_context; -typedef SdaiGlobal_unit_assigned_context * SdaiGlobal_unit_assigned_contextH; -extern EntityDescriptor *config_control_designe_global_unit_assigned_context; - -// ***** Describe the Other Types -extern SelectTypeDescriptor *config_control_designt_characterized_definition; -class SdaiCharacterized_definition; -typedef SdaiCharacterized_definition * SdaiCharacterized_definitionH; - -class SdaiCharacterized_definitions; -typedef SdaiCharacterized_definitions * SdaiCharacterized_definitionsH; -extern TypeDescriptor *config_control_designt_parameter_value; -extern TypeDescriptor *config_control_designt_plane_angle_measure; -extern SelectTypeDescriptor *config_control_designt_change_request_item; -class SdaiChange_request_item; -typedef SdaiChange_request_item * SdaiChange_request_itemH; - -class SdaiChange_request_items; -typedef SdaiChange_request_items * SdaiChange_request_itemsH; -extern TypeDescriptor *config_control_designt_text; -extern TypeDescriptor *config_control_designt_year_number; -extern SelectTypeDescriptor *config_control_designt_characterized_product_definition; -class SdaiCharacterized_product_definition; -typedef SdaiCharacterized_product_definition * SdaiCharacterized_product_definitionH; - -class SdaiCharacterized_product_definitions; -typedef SdaiCharacterized_product_definitions * SdaiCharacterized_product_definitionsH; -extern SelectTypeDescriptor *config_control_designt_reversible_topology_item; -class SdaiReversible_topology_item; -typedef SdaiReversible_topology_item * SdaiReversible_topology_itemH; - -class SdaiReversible_topology_items; -typedef SdaiReversible_topology_items * SdaiReversible_topology_itemsH; -extern SelectTypeDescriptor *config_control_designt_axis2_placement; -class SdaiAxis2_placement; -typedef SdaiAxis2_placement * SdaiAxis2_placementH; - -class SdaiAxis2_placements; -typedef SdaiAxis2_placements * SdaiAxis2_placementsH; -extern SetTypeDescriptor *config_control_designt_set_of_reversible_topology_item; +#else STEPaggregate * create_SdaiSet_of_reversible_topology_item (); -extern TypeDescriptor *config_control_designt_week_in_year_number; -extern EnumTypeDescriptor *config_control_designt_knot_type; +#endif ////////// ENUMERATION TYPE knot_type -enum sdaiKnot_type { - knot_type_UNIFORM_KNOTS, - knot_type_QUASI_UNIFORM_KNOTS, - knot_type_PIECEWISE_BEZIER_KNOTS, - knot_type_UNSPECIFIED - } ; +enum Knot_type { + Knot_type__uniform_knots, + Knot_type__quasi_uniform_knots, + Knot_type__piecewise_bezier_knots, + Knot_type__unspecified, + Knot_type_unset +}; + +class SdaiKnot_type_var : public SCLP23(Enum) { + +#ifdef __OSTORE__ + friend void SdaiKnot_type_var_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + EnumTypeDescriptor *type; -class SdaiKnot_type : public STEPenumeration { public: - SdaiKnot_type (const char * n =0); - SdaiKnot_type (sdaiKnot_type e) { set_value (e); } - ~SdaiKnot_type () { } - SdaiKnot_type& operator= (const sdaiKnot_type& e) + SdaiKnot_type_var (const char * n =0, EnumTypeDescriptor *et =config_control_designt_knot_type); + SdaiKnot_type_var (Knot_type e, EnumTypeDescriptor *et =config_control_designt_knot_type) + : type(et) { set_value (e); } + ~SdaiKnot_type_var () { } + SdaiKnot_type_var& operator= (const SdaiKnot_type_var& e) { set_value (e); return *this; } - operator sdaiKnot_type () const; + operator Knot_type () const; inline virtual const char * Name () const - { return "SdaiKnot_type" ; } + { return type->Name(); } inline virtual int no_elements () const { return 4; } virtual const char * element_at (int n) const; + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif }; -inline STEPenumeration * -create_SdaiKnot_type () { return new SdaiKnot_type ; } +typedef SdaiKnot_type_var * SdaiKnot_type_var_ptr; +#ifdef __OSTORE__ +void SdaiKnot_type_var_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#if __OSTORE__ + SCLP23(Enum) * create_SdaiKnot_type_var (os_database *db); +#else + SCLP23(Enum) * create_SdaiKnot_type_var (); +#endif + +class SdaiKnot_type_vars : public EnumAggregate { + +#ifdef __OSTORE__ + friend void SdaiKnot_type_vars_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + EnumTypeDescriptor *enum_type; -class SdaiKnot_types : public EnumAggregate { public: - virtual SingleLinkNode * NewNode () { - return new EnumNode (new SdaiKnot_type); } + SdaiKnot_type_vars( EnumTypeDescriptor * =config_control_designt_knot_type); + virtual ~SdaiKnot_type_vars(); + virtual SingleLinkNode * NewNode() + { return new EnumNode (new SdaiKnot_type_var( "", enum_type )); } + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; -typedef SdaiKnot_types * SdaiKnot_typesH; +#ifdef __OSTORE__ +void SdaiKnot_type_vars_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif -inline STEPaggregate * -create_SdaiKnot_types () { return new SdaiKnot_types ; } +typedef SdaiKnot_type_vars * SdaiKnot_type_vars_ptr; + +#if __OSTORE__ + STEPaggregate * create_SdaiKnot_type_vars (os_database *db); +#else + STEPaggregate * create_SdaiKnot_type_vars (); +#endif ////////// END ENUMERATION knot_type -extern SelectTypeDescriptor *config_control_designt_specified_item; -class SdaiSpecified_item; -typedef SdaiSpecified_item * SdaiSpecified_itemH; - -class SdaiSpecified_items; -typedef SdaiSpecified_items * SdaiSpecified_itemsH; -extern TypeDescriptor *config_control_designt_minute_in_hour; -extern EnumTypeDescriptor *config_control_designt_transition_code; ////////// ENUMERATION TYPE transition_code -enum sdaiTransition_code { - transition_code_DISCONTINUOUS, - transition_code_CONT_SAME_GRADIENT_SAME_CURVATURE, - transition_code_CONT_SAME_GRADIENT, - transition_code_CONTINUOUS - } ; +enum Transition_code { + Transition_code__discontinuous, + Transition_code__cont_same_gradient_same_curvature, + Transition_code__cont_same_gradient, + Transition_code__continuous, + Transition_code_unset +}; + +class SdaiTransition_code_var : public SCLP23(Enum) { + +#ifdef __OSTORE__ + friend void SdaiTransition_code_var_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + EnumTypeDescriptor *type; -class SdaiTransition_code : public STEPenumeration { public: - SdaiTransition_code (const char * n =0); - SdaiTransition_code (sdaiTransition_code e) { set_value (e); } - ~SdaiTransition_code () { } - SdaiTransition_code& operator= (const sdaiTransition_code& e) + SdaiTransition_code_var (const char * n =0, EnumTypeDescriptor *et =config_control_designt_transition_code); + SdaiTransition_code_var (Transition_code e, EnumTypeDescriptor *et =config_control_designt_transition_code) + : type(et) { set_value (e); } + ~SdaiTransition_code_var () { } + SdaiTransition_code_var& operator= (const SdaiTransition_code_var& e) { set_value (e); return *this; } - operator sdaiTransition_code () const; + operator Transition_code () const; inline virtual const char * Name () const - { return "SdaiTransition_code" ; } + { return type->Name(); } inline virtual int no_elements () const { return 4; } virtual const char * element_at (int n) const; + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif }; -inline STEPenumeration * -create_SdaiTransition_code () { return new SdaiTransition_code ; } +typedef SdaiTransition_code_var * SdaiTransition_code_var_ptr; +#ifdef __OSTORE__ +void SdaiTransition_code_var_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#if __OSTORE__ + SCLP23(Enum) * create_SdaiTransition_code_var (os_database *db); +#else + SCLP23(Enum) * create_SdaiTransition_code_var (); +#endif + +class SdaiTransition_code_vars : public EnumAggregate { + +#ifdef __OSTORE__ + friend void SdaiTransition_code_vars_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + EnumTypeDescriptor *enum_type; -class SdaiTransition_codes : public EnumAggregate { public: - virtual SingleLinkNode * NewNode () { - return new EnumNode (new SdaiTransition_code); } + SdaiTransition_code_vars( EnumTypeDescriptor * =config_control_designt_transition_code); + virtual ~SdaiTransition_code_vars(); + virtual SingleLinkNode * NewNode() + { return new EnumNode (new SdaiTransition_code_var( "", enum_type )); } + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; -typedef SdaiTransition_codes * SdaiTransition_codesH; +#ifdef __OSTORE__ +void SdaiTransition_code_vars_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif -inline STEPaggregate * -create_SdaiTransition_codes () { return new SdaiTransition_codes ; } +typedef SdaiTransition_code_vars * SdaiTransition_code_vars_ptr; + +#if __OSTORE__ + STEPaggregate * create_SdaiTransition_code_vars (os_database *db); +#else + STEPaggregate * create_SdaiTransition_code_vars (); +#endif ////////// END ENUMERATION transition_code -extern TypeDescriptor *config_control_designt_identifier; -extern SelectTypeDescriptor *config_control_designt_measure_value; -class SdaiMeasure_value; -typedef SdaiMeasure_value * SdaiMeasure_valueH; - -class SdaiMeasure_values; -typedef SdaiMeasure_values * SdaiMeasure_valuesH; -extern SelectTypeDescriptor *config_control_designt_person_organization_select; -class SdaiPerson_organization_select; -typedef SdaiPerson_organization_select * SdaiPerson_organization_selectH; - -class SdaiPerson_organization_selects; -typedef SdaiPerson_organization_selects * SdaiPerson_organization_selectsH; -extern EnumTypeDescriptor *config_control_designt_preferred_surface_curve_representation; ////////// ENUMERATION TYPE preferred_surface_curve_representation -enum sdaiPreferred_surface_curve_representation { - preferred_surface_curve_representation_PCURVE_S2, - preferred_surface_curve_representation_PCURVE_S1, - preferred_surface_curve_representation_CURVE_3D - } ; +enum Preferred_surface_curve_representation { + Preferred_surface_curve_representation__pcurve_s2, + Preferred_surface_curve_representation__pcurve_s1, + Preferred_surface_curve_representation__curve_3d, + Preferred_surface_curve_representation_unset +}; + +class SdaiPreferred_surface_curve_representation_var : public SCLP23(Enum) { + +#ifdef __OSTORE__ + friend void SdaiPreferred_surface_curve_representation_var_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + EnumTypeDescriptor *type; -class SdaiPreferred_surface_curve_representation : public STEPenumeration { public: - SdaiPreferred_surface_curve_representation (const char * n =0); - SdaiPreferred_surface_curve_representation (sdaiPreferred_surface_curve_representation e) { set_value (e); } - ~SdaiPreferred_surface_curve_representation () { } - SdaiPreferred_surface_curve_representation& operator= (const sdaiPreferred_surface_curve_representation& e) + SdaiPreferred_surface_curve_representation_var (const char * n =0, EnumTypeDescriptor *et =config_control_designt_preferred_surface_curve_representation); + SdaiPreferred_surface_curve_representation_var (Preferred_surface_curve_representation e, EnumTypeDescriptor *et =config_control_designt_preferred_surface_curve_representation) + : type(et) { set_value (e); } + ~SdaiPreferred_surface_curve_representation_var () { } + SdaiPreferred_surface_curve_representation_var& operator= (const SdaiPreferred_surface_curve_representation_var& e) { set_value (e); return *this; } - operator sdaiPreferred_surface_curve_representation () const; + operator Preferred_surface_curve_representation () const; inline virtual const char * Name () const - { return "SdaiPreferred_surface_curve_representation" ; } + { return type->Name(); } inline virtual int no_elements () const { return 3; } virtual const char * element_at (int n) const; + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif }; -inline STEPenumeration * -create_SdaiPreferred_surface_curve_representation () { return new SdaiPreferred_surface_curve_representation ; } +typedef SdaiPreferred_surface_curve_representation_var * SdaiPreferred_surface_curve_representation_var_ptr; +#ifdef __OSTORE__ +void SdaiPreferred_surface_curve_representation_var_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#if __OSTORE__ + SCLP23(Enum) * create_SdaiPreferred_surface_curve_representation_var (os_database *db); +#else + SCLP23(Enum) * create_SdaiPreferred_surface_curve_representation_var (); +#endif + +class SdaiPreferred_surface_curve_representation_vars : public EnumAggregate { + +#ifdef __OSTORE__ + friend void SdaiPreferred_surface_curve_representation_vars_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + EnumTypeDescriptor *enum_type; -class SdaiPreferred_surface_curve_representations : public EnumAggregate { public: - virtual SingleLinkNode * NewNode () { - return new EnumNode (new SdaiPreferred_surface_curve_representation); } + SdaiPreferred_surface_curve_representation_vars( EnumTypeDescriptor * =config_control_designt_preferred_surface_curve_representation); + virtual ~SdaiPreferred_surface_curve_representation_vars(); + virtual SingleLinkNode * NewNode() + { return new EnumNode (new SdaiPreferred_surface_curve_representation_var( "", enum_type )); } + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; -typedef SdaiPreferred_surface_curve_representations * SdaiPreferred_surface_curve_representationsH; +#ifdef __OSTORE__ +void SdaiPreferred_surface_curve_representation_vars_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif -inline STEPaggregate * -create_SdaiPreferred_surface_curve_representations () { return new SdaiPreferred_surface_curve_representations ; } +typedef SdaiPreferred_surface_curve_representation_vars * SdaiPreferred_surface_curve_representation_vars_ptr; + +#if __OSTORE__ + STEPaggregate * create_SdaiPreferred_surface_curve_representation_vars (os_database *db); +#else + STEPaggregate * create_SdaiPreferred_surface_curve_representation_vars (); +#endif ////////// END ENUMERATION preferred_surface_curve_representation -extern TypeDescriptor *config_control_designt_dimension_count; -extern SelectTypeDescriptor *config_control_designt_pcurve_or_surface; -class SdaiPcurve_or_surface; -typedef SdaiPcurve_or_surface * SdaiPcurve_or_surfaceH; - -class SdaiPcurve_or_surfaces; -typedef SdaiPcurve_or_surfaces * SdaiPcurve_or_surfacesH; -extern TypeDescriptor *config_control_designt_positive_length_measure; -extern EnumTypeDescriptor *config_control_designt_b_spline_curve_form; ////////// ENUMERATION TYPE b_spline_curve_form -enum sdaiB_spline_curve_form { - b_spline_curve_form_ELLIPTIC_ARC, - b_spline_curve_form_POLYLINE_FORM, - b_spline_curve_form_PARABOLIC_ARC, - b_spline_curve_form_CIRCULAR_ARC, - b_spline_curve_form_UNSPECIFIED, - b_spline_curve_form_HYPERBOLIC_ARC - } ; +enum B_spline_curve_form { + B_spline_curve_form__elliptic_arc, + B_spline_curve_form__polyline_form, + B_spline_curve_form__parabolic_arc, + B_spline_curve_form__circular_arc, + B_spline_curve_form__unspecified, + B_spline_curve_form__hyperbolic_arc, + B_spline_curve_form_unset +}; + +class SdaiB_spline_curve_form_var : public SCLP23(Enum) { + +#ifdef __OSTORE__ + friend void SdaiB_spline_curve_form_var_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + EnumTypeDescriptor *type; -class SdaiB_spline_curve_form : public STEPenumeration { public: - SdaiB_spline_curve_form (const char * n =0); - SdaiB_spline_curve_form (sdaiB_spline_curve_form e) { set_value (e); } - ~SdaiB_spline_curve_form () { } - SdaiB_spline_curve_form& operator= (const sdaiB_spline_curve_form& e) + SdaiB_spline_curve_form_var (const char * n =0, EnumTypeDescriptor *et =config_control_designt_b_spline_curve_form); + SdaiB_spline_curve_form_var (B_spline_curve_form e, EnumTypeDescriptor *et =config_control_designt_b_spline_curve_form) + : type(et) { set_value (e); } + ~SdaiB_spline_curve_form_var () { } + SdaiB_spline_curve_form_var& operator= (const SdaiB_spline_curve_form_var& e) { set_value (e); return *this; } - operator sdaiB_spline_curve_form () const; + operator B_spline_curve_form () const; inline virtual const char * Name () const - { return "SdaiB_spline_curve_form" ; } + { return type->Name(); } inline virtual int no_elements () const { return 6; } virtual const char * element_at (int n) const; + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif }; -inline STEPenumeration * -create_SdaiB_spline_curve_form () { return new SdaiB_spline_curve_form ; } +typedef SdaiB_spline_curve_form_var * SdaiB_spline_curve_form_var_ptr; +#ifdef __OSTORE__ +void SdaiB_spline_curve_form_var_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#if __OSTORE__ + SCLP23(Enum) * create_SdaiB_spline_curve_form_var (os_database *db); +#else + SCLP23(Enum) * create_SdaiB_spline_curve_form_var (); +#endif + +class SdaiB_spline_curve_form_vars : public EnumAggregate { + +#ifdef __OSTORE__ + friend void SdaiB_spline_curve_form_vars_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + EnumTypeDescriptor *enum_type; -class SdaiB_spline_curve_forms : public EnumAggregate { public: - virtual SingleLinkNode * NewNode () { - return new EnumNode (new SdaiB_spline_curve_form); } + SdaiB_spline_curve_form_vars( EnumTypeDescriptor * =config_control_designt_b_spline_curve_form); + virtual ~SdaiB_spline_curve_form_vars(); + virtual SingleLinkNode * NewNode() + { return new EnumNode (new SdaiB_spline_curve_form_var( "", enum_type )); } + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; -typedef SdaiB_spline_curve_forms * SdaiB_spline_curve_formsH; +#ifdef __OSTORE__ +void SdaiB_spline_curve_form_vars_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif -inline STEPaggregate * -create_SdaiB_spline_curve_forms () { return new SdaiB_spline_curve_forms ; } +typedef SdaiB_spline_curve_form_vars * SdaiB_spline_curve_form_vars_ptr; + +#if __OSTORE__ + STEPaggregate * create_SdaiB_spline_curve_form_vars (os_database *db); +#else + STEPaggregate * create_SdaiB_spline_curve_form_vars (); +#endif ////////// END ENUMERATION b_spline_curve_form -extern TypeDescriptor *config_control_designt_hour_in_day; -extern SelectTypeDescriptor *config_control_designt_classified_item; -class SdaiClassified_item; -typedef SdaiClassified_item * SdaiClassified_itemH; - -class SdaiClassified_items; -typedef SdaiClassified_items * SdaiClassified_itemsH; -extern EnumTypeDescriptor *config_control_designt_si_unit_name; ////////// ENUMERATION TYPE si_unit_name -enum sdaiSi_unit_name { - si_unit_name_HERTZ, - si_unit_name_DEGREE_CELSIUS, - si_unit_name_SIEMENS, - si_unit_name_SIEVERT, - si_unit_name_LUX, - si_unit_name_WATT, - si_unit_name_OHM, - si_unit_name_SECOND, - si_unit_name_BECQUEREL, - si_unit_name_PASCAL, - si_unit_name_HENRY, - si_unit_name_TESLA, - si_unit_name_VOLT, - si_unit_name_JOULE, - si_unit_name_KELVIN, - si_unit_name_AMPERE, - si_unit_name_GRAM, - si_unit_name_STERADIAN, - si_unit_name_MOLE, - si_unit_name_LUMEN, - si_unit_name_GRAY, - si_unit_name_CANDELA, - si_unit_name_FARAD, - si_unit_name_RADIAN, - si_unit_name_NEWTON, - si_unit_name_METRE, - si_unit_name_WEBER, - si_unit_name_COULOMB - } ; +enum Si_unit_name { + Si_unit_name__hertz, + Si_unit_name__degree_celsius, + Si_unit_name__siemens, + Si_unit_name__sievert, + Si_unit_name__lux, + Si_unit_name__watt, + Si_unit_name__ohm, + Si_unit_name__second, + Si_unit_name__becquerel, + Si_unit_name__pascal, + Si_unit_name__henry, + Si_unit_name__tesla, + Si_unit_name__volt, + Si_unit_name__joule, + Si_unit_name__kelvin, + Si_unit_name__ampere, + Si_unit_name__gram, + Si_unit_name__steradian, + Si_unit_name__mole, + Si_unit_name__lumen, + Si_unit_name__gray, + Si_unit_name__candela, + Si_unit_name__farad, + Si_unit_name__radian, + Si_unit_name__newton, + Si_unit_name__metre, + Si_unit_name__weber, + Si_unit_name__coulomb, + Si_unit_name_unset +}; + +class SdaiSi_unit_name_var : public SCLP23(Enum) { + +#ifdef __OSTORE__ + friend void SdaiSi_unit_name_var_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + EnumTypeDescriptor *type; -class SdaiSi_unit_name : public STEPenumeration { public: - SdaiSi_unit_name (const char * n =0); - SdaiSi_unit_name (sdaiSi_unit_name e) { set_value (e); } - ~SdaiSi_unit_name () { } - SdaiSi_unit_name& operator= (const sdaiSi_unit_name& e) + SdaiSi_unit_name_var (const char * n =0, EnumTypeDescriptor *et =config_control_designt_si_unit_name); + SdaiSi_unit_name_var (Si_unit_name e, EnumTypeDescriptor *et =config_control_designt_si_unit_name) + : type(et) { set_value (e); } + ~SdaiSi_unit_name_var () { } + SdaiSi_unit_name_var& operator= (const SdaiSi_unit_name_var& e) { set_value (e); return *this; } - operator sdaiSi_unit_name () const; + operator Si_unit_name () const; inline virtual const char * Name () const - { return "SdaiSi_unit_name" ; } + { return type->Name(); } inline virtual int no_elements () const { return 28; } virtual const char * element_at (int n) const; + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif }; -inline STEPenumeration * -create_SdaiSi_unit_name () { return new SdaiSi_unit_name ; } +typedef SdaiSi_unit_name_var * SdaiSi_unit_name_var_ptr; +#ifdef __OSTORE__ +void SdaiSi_unit_name_var_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#if __OSTORE__ + SCLP23(Enum) * create_SdaiSi_unit_name_var (os_database *db); +#else + SCLP23(Enum) * create_SdaiSi_unit_name_var (); +#endif + +class SdaiSi_unit_name_vars : public EnumAggregate { + +#ifdef __OSTORE__ + friend void SdaiSi_unit_name_vars_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + EnumTypeDescriptor *enum_type; -class SdaiSi_unit_names : public EnumAggregate { public: - virtual SingleLinkNode * NewNode () { - return new EnumNode (new SdaiSi_unit_name); } + SdaiSi_unit_name_vars( EnumTypeDescriptor * =config_control_designt_si_unit_name); + virtual ~SdaiSi_unit_name_vars(); + virtual SingleLinkNode * NewNode() + { return new EnumNode (new SdaiSi_unit_name_var( "", enum_type )); } + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; -typedef SdaiSi_unit_names * SdaiSi_unit_namesH; +#ifdef __OSTORE__ +void SdaiSi_unit_name_vars_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif -inline STEPaggregate * -create_SdaiSi_unit_names () { return new SdaiSi_unit_names ; } +typedef SdaiSi_unit_name_vars * SdaiSi_unit_name_vars_ptr; + +#if __OSTORE__ + STEPaggregate * create_SdaiSi_unit_name_vars (os_database *db); +#else + STEPaggregate * create_SdaiSi_unit_name_vars (); +#endif ////////// END ENUMERATION si_unit_name -extern TypeDescriptor *config_control_designt_day_in_month_number; -extern EnumTypeDescriptor *config_control_designt_trimming_preference; ////////// ENUMERATION TYPE trimming_preference -enum sdaiTrimming_preference { - trimming_preference_PARAMETER, - trimming_preference_UNSPECIFIED, - trimming_preference_CARTESIAN - } ; +enum Trimming_preference { + Trimming_preference__parameter, + Trimming_preference__unspecified, + Trimming_preference__cartesian, + Trimming_preference_unset +}; + +class SdaiTrimming_preference_var : public SCLP23(Enum) { + +#ifdef __OSTORE__ + friend void SdaiTrimming_preference_var_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + EnumTypeDescriptor *type; -class SdaiTrimming_preference : public STEPenumeration { public: - SdaiTrimming_preference (const char * n =0); - SdaiTrimming_preference (sdaiTrimming_preference e) { set_value (e); } - ~SdaiTrimming_preference () { } - SdaiTrimming_preference& operator= (const sdaiTrimming_preference& e) + SdaiTrimming_preference_var (const char * n =0, EnumTypeDescriptor *et =config_control_designt_trimming_preference); + SdaiTrimming_preference_var (Trimming_preference e, EnumTypeDescriptor *et =config_control_designt_trimming_preference) + : type(et) { set_value (e); } + ~SdaiTrimming_preference_var () { } + SdaiTrimming_preference_var& operator= (const SdaiTrimming_preference_var& e) { set_value (e); return *this; } - operator sdaiTrimming_preference () const; + operator Trimming_preference () const; inline virtual const char * Name () const - { return "SdaiTrimming_preference" ; } + { return type->Name(); } inline virtual int no_elements () const { return 3; } virtual const char * element_at (int n) const; + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif }; -inline STEPenumeration * -create_SdaiTrimming_preference () { return new SdaiTrimming_preference ; } +typedef SdaiTrimming_preference_var * SdaiTrimming_preference_var_ptr; +#ifdef __OSTORE__ +void SdaiTrimming_preference_var_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#if __OSTORE__ + SCLP23(Enum) * create_SdaiTrimming_preference_var (os_database *db); +#else + SCLP23(Enum) * create_SdaiTrimming_preference_var (); +#endif + +class SdaiTrimming_preference_vars : public EnumAggregate { + +#ifdef __OSTORE__ + friend void SdaiTrimming_preference_vars_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + EnumTypeDescriptor *enum_type; -class SdaiTrimming_preferences : public EnumAggregate { public: - virtual SingleLinkNode * NewNode () { - return new EnumNode (new SdaiTrimming_preference); } + SdaiTrimming_preference_vars( EnumTypeDescriptor * =config_control_designt_trimming_preference); + virtual ~SdaiTrimming_preference_vars(); + virtual SingleLinkNode * NewNode() + { return new EnumNode (new SdaiTrimming_preference_var( "", enum_type )); } + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; -typedef SdaiTrimming_preferences * SdaiTrimming_preferencesH; +#ifdef __OSTORE__ +void SdaiTrimming_preference_vars_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif -inline STEPaggregate * -create_SdaiTrimming_preferences () { return new SdaiTrimming_preferences ; } +typedef SdaiTrimming_preference_vars * SdaiTrimming_preference_vars_ptr; + +#if __OSTORE__ + STEPaggregate * create_SdaiTrimming_preference_vars (os_database *db); +#else + STEPaggregate * create_SdaiTrimming_preference_vars (); +#endif ////////// END ENUMERATION trimming_preference -extern SelectTypeDescriptor *config_control_designt_vector_or_direction; -class SdaiVector_or_direction; -typedef SdaiVector_or_direction * SdaiVector_or_directionH; - -class SdaiVector_or_directions; -typedef SdaiVector_or_directions * SdaiVector_or_directionsH; -extern SelectTypeDescriptor *config_control_designt_wireframe_model; -class SdaiWireframe_model; -typedef SdaiWireframe_model * SdaiWireframe_modelH; - -class SdaiWireframe_models; -typedef SdaiWireframe_models * SdaiWireframe_modelsH; -extern TypeDescriptor *config_control_designt_volume_measure; -extern SelectTypeDescriptor *config_control_designt_geometric_set_select; -class SdaiGeometric_set_select; -typedef SdaiGeometric_set_select * SdaiGeometric_set_selectH; - -class SdaiGeometric_set_selects; -typedef SdaiGeometric_set_selects * SdaiGeometric_set_selectsH; -extern TypeDescriptor *config_control_designt_positive_plane_angle_measure; -extern SelectTypeDescriptor *config_control_designt_start_request_item; -class SdaiStart_request_item; -typedef SdaiStart_request_item * SdaiStart_request_itemH; - -class SdaiStart_request_items; -typedef SdaiStart_request_items * SdaiStart_request_itemsH; -extern EnumTypeDescriptor *config_control_designt_b_spline_surface_form; ////////// ENUMERATION TYPE b_spline_surface_form -enum sdaiB_spline_surface_form { - b_spline_surface_form_SURF_OF_LINEAR_EXTRUSION, - b_spline_surface_form_PLANE_SURF, - b_spline_surface_form_GENERALISED_CONE, - b_spline_surface_form_TOROIDAL_SURF, - b_spline_surface_form_CONICAL_SURF, - b_spline_surface_form_SPHERICAL_SURF, - b_spline_surface_form_UNSPECIFIED, - b_spline_surface_form_RULED_SURF, - b_spline_surface_form_SURF_OF_REVOLUTION, - b_spline_surface_form_CYLINDRICAL_SURF, - b_spline_surface_form_QUADRIC_SURF - } ; +enum B_spline_surface_form { + B_spline_surface_form__surf_of_linear_extrusion, + B_spline_surface_form__plane_surf, + B_spline_surface_form__generalised_cone, + B_spline_surface_form__toroidal_surf, + B_spline_surface_form__conical_surf, + B_spline_surface_form__spherical_surf, + B_spline_surface_form__unspecified, + B_spline_surface_form__ruled_surf, + B_spline_surface_form__surf_of_revolution, + B_spline_surface_form__cylindrical_surf, + B_spline_surface_form__quadric_surf, + B_spline_surface_form_unset +}; + +class SdaiB_spline_surface_form_var : public SCLP23(Enum) { + +#ifdef __OSTORE__ + friend void SdaiB_spline_surface_form_var_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + EnumTypeDescriptor *type; -class SdaiB_spline_surface_form : public STEPenumeration { public: - SdaiB_spline_surface_form (const char * n =0); - SdaiB_spline_surface_form (sdaiB_spline_surface_form e) { set_value (e); } - ~SdaiB_spline_surface_form () { } - SdaiB_spline_surface_form& operator= (const sdaiB_spline_surface_form& e) + SdaiB_spline_surface_form_var (const char * n =0, EnumTypeDescriptor *et =config_control_designt_b_spline_surface_form); + SdaiB_spline_surface_form_var (B_spline_surface_form e, EnumTypeDescriptor *et =config_control_designt_b_spline_surface_form) + : type(et) { set_value (e); } + ~SdaiB_spline_surface_form_var () { } + SdaiB_spline_surface_form_var& operator= (const SdaiB_spline_surface_form_var& e) { set_value (e); return *this; } - operator sdaiB_spline_surface_form () const; + operator B_spline_surface_form () const; inline virtual const char * Name () const - { return "SdaiB_spline_surface_form" ; } + { return type->Name(); } inline virtual int no_elements () const { return 11; } virtual const char * element_at (int n) const; + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif }; -inline STEPenumeration * -create_SdaiB_spline_surface_form () { return new SdaiB_spline_surface_form ; } +typedef SdaiB_spline_surface_form_var * SdaiB_spline_surface_form_var_ptr; +#ifdef __OSTORE__ +void SdaiB_spline_surface_form_var_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#if __OSTORE__ + SCLP23(Enum) * create_SdaiB_spline_surface_form_var (os_database *db); +#else + SCLP23(Enum) * create_SdaiB_spline_surface_form_var (); +#endif + +class SdaiB_spline_surface_form_vars : public EnumAggregate { + +#ifdef __OSTORE__ + friend void SdaiB_spline_surface_form_vars_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + EnumTypeDescriptor *enum_type; -class SdaiB_spline_surface_forms : public EnumAggregate { public: - virtual SingleLinkNode * NewNode () { - return new EnumNode (new SdaiB_spline_surface_form); } + SdaiB_spline_surface_form_vars( EnumTypeDescriptor * =config_control_designt_b_spline_surface_form); + virtual ~SdaiB_spline_surface_form_vars(); + virtual SingleLinkNode * NewNode() + { return new EnumNode (new SdaiB_spline_surface_form_var( "", enum_type )); } + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; -typedef SdaiB_spline_surface_forms * SdaiB_spline_surface_formsH; +#ifdef __OSTORE__ +void SdaiB_spline_surface_form_vars_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif -inline STEPaggregate * -create_SdaiB_spline_surface_forms () { return new SdaiB_spline_surface_forms ; } +typedef SdaiB_spline_surface_form_vars * SdaiB_spline_surface_form_vars_ptr; + +#if __OSTORE__ + STEPaggregate * create_SdaiB_spline_surface_form_vars (os_database *db); +#else + STEPaggregate * create_SdaiB_spline_surface_form_vars (); +#endif ////////// END ENUMERATION b_spline_surface_form -extern SelectTypeDescriptor *config_control_designt_person_organization_item; -class SdaiPerson_organization_item; -typedef SdaiPerson_organization_item * SdaiPerson_organization_itemH; - -class SdaiPerson_organization_items; -typedef SdaiPerson_organization_items * SdaiPerson_organization_itemsH; -extern SelectTypeDescriptor *config_control_designt_date_time_item; -class SdaiDate_time_item; -typedef SdaiDate_time_item * SdaiDate_time_itemH; - -class SdaiDate_time_items; -typedef SdaiDate_time_items * SdaiDate_time_itemsH; -extern SelectTypeDescriptor *config_control_designt_shell; -class SdaiShell; -typedef SdaiShell * SdaiShellH; - -class SdaiShells; -typedef SdaiShells * SdaiShellsH; -extern SelectTypeDescriptor *config_control_designt_transformation; -class SdaiTransformation; -typedef SdaiTransformation * SdaiTransformationH; - -class SdaiTransformations; -typedef SdaiTransformations * SdaiTransformationsH; -extern TypeDescriptor *config_control_designt_day_in_week_number; -extern SelectTypeDescriptor *config_control_designt_boolean_operand; -class SdaiBoolean_operand; -typedef SdaiBoolean_operand * SdaiBoolean_operandH; - -class SdaiBoolean_operands; -typedef SdaiBoolean_operands * SdaiBoolean_operandsH; -extern SelectTypeDescriptor *config_control_designt_certified_item; -class SdaiCertified_item; -typedef SdaiCertified_item * SdaiCertified_itemH; - -class SdaiCertified_items; -typedef SdaiCertified_items * SdaiCertified_itemsH; -extern SelectTypeDescriptor *config_control_designt_date_time_select; -class SdaiDate_time_select; -typedef SdaiDate_time_select * SdaiDate_time_selectH; - -class SdaiDate_time_selects; -typedef SdaiDate_time_selects * SdaiDate_time_selectsH; -extern TypeDescriptor *config_control_designt_solid_angle_measure; -extern SelectTypeDescriptor *config_control_designt_curve_on_surface; -class SdaiCurve_on_surface; -typedef SdaiCurve_on_surface * SdaiCurve_on_surfaceH; - -class SdaiCurve_on_surfaces; -typedef SdaiCurve_on_surfaces * SdaiCurve_on_surfacesH; -extern SelectTypeDescriptor *config_control_designt_trimming_select; -class SdaiTrimming_select; -typedef SdaiTrimming_select * SdaiTrimming_selectH; - -class SdaiTrimming_selects; -typedef SdaiTrimming_selects * SdaiTrimming_selectsH; -extern EnumTypeDescriptor *config_control_designt_ahead_or_behind; ////////// ENUMERATION TYPE ahead_or_behind -enum sdaiAhead_or_behind { - ahead_or_behind_AHEAD, - ahead_or_behind_BEHIND - } ; +enum Ahead_or_behind { + Ahead_or_behind__ahead, + Ahead_or_behind__behind, + Ahead_or_behind_unset +}; + +class SdaiAhead_or_behind_var : public SCLP23(Enum) { + +#ifdef __OSTORE__ + friend void SdaiAhead_or_behind_var_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + EnumTypeDescriptor *type; -class SdaiAhead_or_behind : public STEPenumeration { public: - SdaiAhead_or_behind (const char * n =0); - SdaiAhead_or_behind (sdaiAhead_or_behind e) { set_value (e); } - ~SdaiAhead_or_behind () { } - SdaiAhead_or_behind& operator= (const sdaiAhead_or_behind& e) + SdaiAhead_or_behind_var (const char * n =0, EnumTypeDescriptor *et =config_control_designt_ahead_or_behind); + SdaiAhead_or_behind_var (Ahead_or_behind e, EnumTypeDescriptor *et =config_control_designt_ahead_or_behind) + : type(et) { set_value (e); } + ~SdaiAhead_or_behind_var () { } + SdaiAhead_or_behind_var& operator= (const SdaiAhead_or_behind_var& e) { set_value (e); return *this; } - operator sdaiAhead_or_behind () const; + operator Ahead_or_behind () const; inline virtual const char * Name () const - { return "SdaiAhead_or_behind" ; } + { return type->Name(); } inline virtual int no_elements () const { return 2; } virtual const char * element_at (int n) const; + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif }; -inline STEPenumeration * -create_SdaiAhead_or_behind () { return new SdaiAhead_or_behind ; } +typedef SdaiAhead_or_behind_var * SdaiAhead_or_behind_var_ptr; +#ifdef __OSTORE__ +void SdaiAhead_or_behind_var_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#if __OSTORE__ + SCLP23(Enum) * create_SdaiAhead_or_behind_var (os_database *db); +#else + SCLP23(Enum) * create_SdaiAhead_or_behind_var (); +#endif + +class SdaiAhead_or_behind_vars : public EnumAggregate { + +#ifdef __OSTORE__ + friend void SdaiAhead_or_behind_vars_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + EnumTypeDescriptor *enum_type; -class SdaiAhead_or_behinds : public EnumAggregate { public: - virtual SingleLinkNode * NewNode () { - return new EnumNode (new SdaiAhead_or_behind); } + SdaiAhead_or_behind_vars( EnumTypeDescriptor * =config_control_designt_ahead_or_behind); + virtual ~SdaiAhead_or_behind_vars(); + virtual SingleLinkNode * NewNode() + { return new EnumNode (new SdaiAhead_or_behind_var( "", enum_type )); } + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; -typedef SdaiAhead_or_behinds * SdaiAhead_or_behindsH; +#ifdef __OSTORE__ +void SdaiAhead_or_behind_vars_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif -inline STEPaggregate * -create_SdaiAhead_or_behinds () { return new SdaiAhead_or_behinds ; } +typedef SdaiAhead_or_behind_vars * SdaiAhead_or_behind_vars_ptr; + +#if __OSTORE__ + STEPaggregate * create_SdaiAhead_or_behind_vars (os_database *db); +#else + STEPaggregate * create_SdaiAhead_or_behind_vars (); +#endif ////////// END ENUMERATION ahead_or_behind -extern SelectTypeDescriptor *config_control_designt_contracted_item; -class SdaiContracted_item; -typedef SdaiContracted_item * SdaiContracted_itemH; - -class SdaiContracted_items; -typedef SdaiContracted_items * SdaiContracted_itemsH; -extern TypeDescriptor *config_control_designt_day_in_year_number; -extern TypeDescriptor *config_control_designt_mass_measure; -extern TypeDescriptor *config_control_designt_descriptive_measure; -extern TypeDescriptor *config_control_designt_area_measure; -extern TypeDescriptor *config_control_designt_month_in_year_number; -extern EnumTypeDescriptor *config_control_designt_source; ////////// ENUMERATION TYPE source -enum sdaiSource { - source_BOUGHT, - source_NOT_KNOWN, - source_MADE - } ; +enum Source { + Source__bought, + Source__not_known, + Source__made, + Source_unset +}; + +class SdaiSource_var : public SCLP23(Enum) { + +#ifdef __OSTORE__ + friend void SdaiSource_var_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + EnumTypeDescriptor *type; -class SdaiSource : public STEPenumeration { public: - SdaiSource (const char * n =0); - SdaiSource (sdaiSource e) { set_value (e); } - ~SdaiSource () { } - SdaiSource& operator= (const sdaiSource& e) + SdaiSource_var (const char * n =0, EnumTypeDescriptor *et =config_control_designt_source); + SdaiSource_var (Source e, EnumTypeDescriptor *et =config_control_designt_source) + : type(et) { set_value (e); } + ~SdaiSource_var () { } + SdaiSource_var& operator= (const SdaiSource_var& e) { set_value (e); return *this; } - operator sdaiSource () const; + operator Source () const; inline virtual const char * Name () const - { return "SdaiSource" ; } + { return type->Name(); } inline virtual int no_elements () const { return 3; } virtual const char * element_at (int n) const; + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif }; -inline STEPenumeration * -create_SdaiSource () { return new SdaiSource ; } +typedef SdaiSource_var * SdaiSource_var_ptr; +#ifdef __OSTORE__ +void SdaiSource_var_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#if __OSTORE__ + SCLP23(Enum) * create_SdaiSource_var (os_database *db); +#else + SCLP23(Enum) * create_SdaiSource_var (); +#endif + +class SdaiSource_vars : public EnumAggregate { + +#ifdef __OSTORE__ + friend void SdaiSource_vars_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + EnumTypeDescriptor *enum_type; -class SdaiSources : public EnumAggregate { public: - virtual SingleLinkNode * NewNode () { - return new EnumNode (new SdaiSource); } + SdaiSource_vars( EnumTypeDescriptor * =config_control_designt_source); + virtual ~SdaiSource_vars(); + virtual SingleLinkNode * NewNode() + { return new EnumNode (new SdaiSource_var( "", enum_type )); } + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; -typedef SdaiSources * SdaiSourcesH; +#ifdef __OSTORE__ +void SdaiSource_vars_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif -inline STEPaggregate * -create_SdaiSources () { return new SdaiSources ; } +typedef SdaiSource_vars * SdaiSource_vars_ptr; + +#if __OSTORE__ + STEPaggregate * create_SdaiSource_vars (os_database *db); +#else + STEPaggregate * create_SdaiSource_vars (); +#endif ////////// END ENUMERATION source -extern SelectTypeDescriptor *config_control_designt_unit; -class SdaiUnit; -typedef SdaiUnit * SdaiUnitH; - -class SdaiUnits; -typedef SdaiUnits * SdaiUnitsH; -extern SelectTypeDescriptor *config_control_designt_reversible_topology; -class SdaiReversible_topology; -typedef SdaiReversible_topology * SdaiReversible_topologyH; - -class SdaiReversible_topologys; -typedef SdaiReversible_topologys * SdaiReversible_topologysH; -extern SelectTypeDescriptor *config_control_designt_work_item; -class SdaiWork_item; -typedef SdaiWork_item * SdaiWork_itemH; - -class SdaiWork_items; -typedef SdaiWork_items * SdaiWork_itemsH; -extern SelectTypeDescriptor *config_control_designt_shape_definition; -class SdaiShape_definition; -typedef SdaiShape_definition * SdaiShape_definitionH; - -class SdaiShape_definitions; -typedef SdaiShape_definitions * SdaiShape_definitionsH; -extern TypeDescriptor *config_control_designt_second_in_minute; -extern TypeDescriptor *config_control_designt_label; -extern TypeDescriptor *config_control_designt_context_dependent_measure; -extern SelectTypeDescriptor *config_control_designt_supported_item; -class SdaiSupported_item; -typedef SdaiSupported_item * SdaiSupported_itemH; - -class SdaiSupported_items; -typedef SdaiSupported_items * SdaiSupported_itemsH; -extern EnumTypeDescriptor *config_control_designt_si_prefix; ////////// ENUMERATION TYPE si_prefix -enum sdaiSi_prefix { - si_prefix_EXA, - si_prefix_PICO, - si_prefix_MEGA, - si_prefix_FEMTO, - si_prefix_ATTO, - si_prefix_CENTI, - si_prefix_NANO, - si_prefix_HECTO, - si_prefix_MICRO, - si_prefix_TERA, - si_prefix_GIGA, - si_prefix_MILLI, - si_prefix_PETA, - si_prefix_DECI, - si_prefix_KILO, - si_prefix_DECA - } ; +enum Si_prefix { + Si_prefix__exa, + Si_prefix__pico, + Si_prefix__mega, + Si_prefix__femto, + Si_prefix__atto, + Si_prefix__centi, + Si_prefix__nano, + Si_prefix__hecto, + Si_prefix__micro, + Si_prefix__tera, + Si_prefix__giga, + Si_prefix__milli, + Si_prefix__peta, + Si_prefix__deci, + Si_prefix__kilo, + Si_prefix__deca, + Si_prefix_unset +}; + +class SdaiSi_prefix_var : public SCLP23(Enum) { + +#ifdef __OSTORE__ + friend void SdaiSi_prefix_var_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + EnumTypeDescriptor *type; -class SdaiSi_prefix : public STEPenumeration { public: - SdaiSi_prefix (const char * n =0); - SdaiSi_prefix (sdaiSi_prefix e) { set_value (e); } - ~SdaiSi_prefix () { } - SdaiSi_prefix& operator= (const sdaiSi_prefix& e) + SdaiSi_prefix_var (const char * n =0, EnumTypeDescriptor *et =config_control_designt_si_prefix); + SdaiSi_prefix_var (Si_prefix e, EnumTypeDescriptor *et =config_control_designt_si_prefix) + : type(et) { set_value (e); } + ~SdaiSi_prefix_var () { } + SdaiSi_prefix_var& operator= (const SdaiSi_prefix_var& e) { set_value (e); return *this; } - operator sdaiSi_prefix () const; + operator Si_prefix () const; inline virtual const char * Name () const - { return "SdaiSi_prefix" ; } + { return type->Name(); } inline virtual int no_elements () const { return 16; } virtual const char * element_at (int n) const; + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif }; -inline STEPenumeration * -create_SdaiSi_prefix () { return new SdaiSi_prefix ; } +typedef SdaiSi_prefix_var * SdaiSi_prefix_var_ptr; +#ifdef __OSTORE__ +void SdaiSi_prefix_var_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#if __OSTORE__ + SCLP23(Enum) * create_SdaiSi_prefix_var (os_database *db); +#else + SCLP23(Enum) * create_SdaiSi_prefix_var (); +#endif + +class SdaiSi_prefix_vars : public EnumAggregate { + +#ifdef __OSTORE__ + friend void SdaiSi_prefix_vars_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + EnumTypeDescriptor *enum_type; -class SdaiSi_prefixs : public EnumAggregate { public: - virtual SingleLinkNode * NewNode () { - return new EnumNode (new SdaiSi_prefix); } + SdaiSi_prefix_vars( EnumTypeDescriptor * =config_control_designt_si_prefix); + virtual ~SdaiSi_prefix_vars(); + virtual SingleLinkNode * NewNode() + { return new EnumNode (new SdaiSi_prefix_var( "", enum_type )); } + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; -typedef SdaiSi_prefixs * SdaiSi_prefixsH; +#ifdef __OSTORE__ +void SdaiSi_prefix_vars_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif -inline STEPaggregate * -create_SdaiSi_prefixs () { return new SdaiSi_prefixs ; } +typedef SdaiSi_prefix_vars * SdaiSi_prefix_vars_ptr; + +#if __OSTORE__ + STEPaggregate * create_SdaiSi_prefix_vars (os_database *db); +#else + STEPaggregate * create_SdaiSi_prefix_vars (); +#endif ////////// END ENUMERATION si_prefix -extern TypeDescriptor *config_control_designt_length_measure; -extern SelectTypeDescriptor *config_control_designt_approved_item; -class SdaiApproved_item; -typedef SdaiApproved_item * SdaiApproved_itemH; -class SdaiApproved_items; -typedef SdaiApproved_items * SdaiApproved_itemsH; -extern TypeDescriptor *config_control_designt_count_measure; -extern SelectTypeDescriptor *config_control_designt_surface_model; -class SdaiSurface_model; -typedef SdaiSurface_model * SdaiSurface_modelH; +#if __OSTORE__ +STEPaggregate * create_SdaiList_of_reversible_topology_item (os_database *db); -class SdaiSurface_models; -typedef SdaiSurface_models * SdaiSurface_modelsH; -extern ListTypeDescriptor *config_control_designt_list_of_reversible_topology_item; +#else STEPaggregate * create_SdaiList_of_reversible_topology_item (); -typedef SdaiReal SdaiParameter_value; -typedef SdaiReal SdaiPlane_angle_measure; -typedef SdaiString SdaiText; -typedef SdaiInteger SdaiYear_number; -typedef SdaiReversible_topology_items SdaiSet_of_reversible_topology_item; -typedef SdaiSet_of_reversible_topology_item * SdaiSet_of_reversible_topology_itemH; -typedef SdaiInteger SdaiWeek_in_year_number; -typedef SdaiInteger SdaiMinute_in_hour; -typedef SdaiString SdaiIdentifier; -typedef SdaiInteger SdaiDimension_count; -typedef SdaiReal SdaiPositive_length_measure; -typedef SdaiInteger SdaiHour_in_day; -typedef SdaiInteger SdaiDay_in_month_number; -typedef SdaiReal SdaiVolume_measure; -typedef SdaiReal SdaiPositive_plane_angle_measure; -typedef SdaiInteger SdaiDay_in_week_number; -typedef SdaiReal SdaiSolid_angle_measure; -typedef SdaiInteger SdaiDay_in_year_number; -typedef SdaiReal SdaiMass_measure; -typedef SdaiString SdaiDescriptive_measure; -typedef SdaiReal SdaiArea_measure; -typedef SdaiInteger SdaiMonth_in_year_number; -typedef SdaiReal SdaiSecond_in_minute; -typedef SdaiString SdaiLabel; -typedef SdaiReal SdaiContext_dependent_measure; -typedef SdaiReal SdaiLength_measure; -typedef SdaiReal SdaiCount_measure; -typedef SdaiReversible_topology_items SdaiList_of_reversible_topology_item; -typedef SdaiList_of_reversible_topology_item * SdaiList_of_reversible_topology_itemH; +#endif // ***** Build the SELECT Types -////////// SELECT TYPE characterized_product_definition -class SdaiCharacterized_product_definition : public SdaiSelect { +////////// SELECT TYPE SdaiCharacterized_product_definition +class SdaiCharacterized_product_definition : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // PRODUCT_DEFINITION -- ENTITY_TYPE - // PRODUCT_DEFINITION_RELATIONSHIP -- ENTITY_TYPE - STEPentityH _stepentityh; + // PRODUCT_DEFINITION -- sdaiINSTANCE + // PRODUCT_DEFINITION_RELATIONSHIP -- sdaiINSTANCE + SCLP23(Application_instance_ptr) _app_inst; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiCharacterized_product_definition_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiCharacterized_product_definition(); +// constructors + SdaiCharacterized_product_definition( const SelectTypeDescriptor * =config_control_designt_characterized_product_definition ); // part 1 - SdaiCharacterized_product_definition( const SdaiProduct_definitionH& ); - SdaiCharacterized_product_definition( const SdaiProduct_definition_relationshipH& ); + SdaiCharacterized_product_definition( const SdaiProduct_definition_ptr&, + const SelectTypeDescriptor * =config_control_designt_characterized_product_definition ); + SdaiCharacterized_product_definition( const SdaiProduct_definition_relationship_ptr&, + const SelectTypeDescriptor * =config_control_designt_characterized_product_definition ); virtual ~SdaiCharacterized_product_definition(); // part 2 - operator SdaiProduct_definitionH(); - operator SdaiProduct_definition_relationshipH(); + operator SdaiProduct_definition_ptr(); + operator SdaiProduct_definition_relationship_ptr(); // part 3 - SdaiProduct_definitionH Related_product_definition() const; - void Related_product_definition (SdaiProduct_definitionH x); - SdaiProduct_definitionH Relating_product_definition() const; - void Relating_product_definition (SdaiProduct_definitionH x); - const SdaiLabel Name() const; - void Name (const char * x); - SdaiProduct_definition_contextH Frame_of_reference() const; - void Frame_of_reference (SdaiProduct_definition_contextH x); - SdaiProduct_definition_formationH Formation() const; - void Formation (SdaiProduct_definition_formationH x); - const SdaiText Description() const; - void Description (const char * x); - const SdaiIdentifier Id() const; - void Id (const char * x); + const SdaiProduct_definition_ptr related_product_definition_() const; + void related_product_definition_ (const SdaiProduct_definition_ptr x); + + const SdaiProduct_definition_ptr relating_product_definition_() const; + void relating_product_definition_ (const SdaiProduct_definition_ptr x); + + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiProduct_definition_context_ptr frame_of_reference_() const; + void frame_of_reference_ (const SdaiProduct_definition_context_ptr x); + + const SdaiProduct_definition_formation_ptr formation_() const; + void formation_ (const SdaiProduct_definition_formation_ptr x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiIdentifier id_() const; + void id_ (const SdaiIdentifier x); + // part 4 - SdaiCharacterized_product_definition& operator =( const SdaiProduct_definitionH& ); - SdaiCharacterized_product_definition& operator =( const SdaiProduct_definition_relationshipH& ); + SdaiCharacterized_product_definition& operator =( const SdaiProduct_definition_ptr& ); + SdaiCharacterized_product_definition& operator =( const SdaiProduct_definition_relationship_ptr& ); // not in SDAI SdaiCharacterized_product_definition& ShallowCopy ( const SdaiCharacterized_product_definition& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiCharacterized_product_definition& operator =( const SdaiCharacterized_product_definitionH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiCharacterized_product_definition& operator =( SdaiCharacterized_product_definition * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsProduct_definition() const; - SdaiLogical IsProduct_definition_relationship() const; + SCLLOG(Logical) IsProduct_definition() const; + SCLLOG(Logical) IsProduct_definition_relationship() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 ... NONE only for complex selects... }; -inline SdaiSelect * create_SdaiCharacterized_product_definition () { return new SdaiCharacterized_product_definition ; } +#ifdef __OSTORE__ +void SdaiCharacterized_product_definition_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiCharacterized_product_definition (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiCharacterized_product_definition () { return new SdaiCharacterized_product_definition; } +#endif + +typedef SdaiCharacterized_product_definition * SdaiCharacterized_product_definitionH; +typedef SdaiCharacterized_product_definition_ptr SdaiCharacterized_product_definition_var; -class SdaiCharacterized_product_definitions : public SelectAggregate { +class SdaiCharacterized_product_definitions : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiCharacterized_product_definition); } + SdaiCharacterized_product_definitions( SelectTypeDescriptor * =config_control_designt_characterized_product_definition ); + ~SdaiCharacterized_product_definitions(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiCharacterized_product_definition( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiCharacterized_product_definitions () { return new SdaiCharacterized_product_definitions ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiCharacterized_product_definitions (os_database *db); +#else +inline STEPaggregate * create_SdaiCharacterized_product_definitions () { return new SdaiCharacterized_product_definitions; } +#endif -///// END SELECT TYPE characterized_product_definition +typedef SdaiCharacterized_product_definitions_ptr SdaiCharacterized_product_definitions_var; + +///// END SELECT TYPE characterized_product_definition -////////// SELECT TYPE shape_definition -class SdaiShape_definition : public SdaiSelect { +////////// SELECT TYPE SdaiShape_definition +class SdaiShape_definition : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // PRODUCT_DEFINITION_SHAPE -- ENTITY_TYPE - // SHAPE_ASPECT -- ENTITY_TYPE - // SHAPE_ASPECT_RELATIONSHIP -- ENTITY_TYPE - STEPentityH _stepentityh; + // PRODUCT_DEFINITION_SHAPE -- sdaiINSTANCE + // SHAPE_ASPECT -- sdaiINSTANCE + // SHAPE_ASPECT_RELATIONSHIP -- sdaiINSTANCE + SCLP23(Application_instance_ptr) _app_inst; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiShape_definition_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiShape_definition(); +// constructors + SdaiShape_definition( const SelectTypeDescriptor * =config_control_designt_shape_definition ); // part 1 - SdaiShape_definition( const SdaiProduct_definition_shapeH& ); - SdaiShape_definition( const SdaiShape_aspectH& ); - SdaiShape_definition( const SdaiShape_aspect_relationshipH& ); + SdaiShape_definition( const SdaiProduct_definition_shape_ptr&, + const SelectTypeDescriptor * =config_control_designt_shape_definition ); + SdaiShape_definition( const SdaiShape_aspect_ptr&, + const SelectTypeDescriptor * =config_control_designt_shape_definition ); + SdaiShape_definition( const SdaiShape_aspect_relationship_ptr&, + const SelectTypeDescriptor * =config_control_designt_shape_definition ); virtual ~SdaiShape_definition(); // part 2 - operator SdaiProduct_definition_shapeH(); - operator SdaiShape_aspectH(); - operator SdaiShape_aspect_relationshipH(); + operator SdaiProduct_definition_shape_ptr(); + operator SdaiShape_aspect_ptr(); + operator SdaiShape_aspect_relationship_ptr(); // part 3 - SdaiShape_aspectH Related_shape_aspect() const; - void Related_shape_aspect (SdaiShape_aspectH x); - SdaiShape_aspectH Relating_shape_aspect() const; - void Relating_shape_aspect (SdaiShape_aspectH x); - const LOGICAL Product_definitional() const; - void Product_definitional (LOGICAL x); - SdaiProduct_definition_shapeH Of_shape() const; - void Of_shape (SdaiProduct_definition_shapeH x); - const SdaiCharacterized_definitionH Definition() const; - void Definition (SdaiCharacterized_definitionH x); - const SdaiText Description() const; - void Description (const char * x); - const SdaiLabel Name() const; - void Name (const char * x); + const SdaiShape_aspect_ptr related_shape_aspect_() const; + void related_shape_aspect_ (const SdaiShape_aspect_ptr x); + + const SdaiShape_aspect_ptr relating_shape_aspect_() const; + void relating_shape_aspect_ (const SdaiShape_aspect_ptr x); + + const SCLLOG(Logical) product_definitional_() const; + void product_definitional_ (const SCLLOG(Logical) x); + + const SdaiProduct_definition_shape_ptr of_shape_() const; + void of_shape_ (const SdaiProduct_definition_shape_ptr x); + + const SdaiCharacterized_definition_ptr definition_() const; + void definition_ (const SdaiCharacterized_definition_ptr x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + // part 4 - SdaiShape_definition& operator =( const SdaiProduct_definition_shapeH& ); - SdaiShape_definition& operator =( const SdaiShape_aspectH& ); - SdaiShape_definition& operator =( const SdaiShape_aspect_relationshipH& ); + SdaiShape_definition& operator =( const SdaiProduct_definition_shape_ptr& ); + SdaiShape_definition& operator =( const SdaiShape_aspect_ptr& ); + SdaiShape_definition& operator =( const SdaiShape_aspect_relationship_ptr& ); // not in SDAI SdaiShape_definition& ShallowCopy ( const SdaiShape_definition& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiShape_definition& operator =( const SdaiShape_definitionH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiShape_definition& operator =( SdaiShape_definition * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsProduct_definition_shape() const; - SdaiLogical IsShape_aspect() const; - SdaiLogical IsShape_aspect_relationship() const; + SCLLOG(Logical) IsProduct_definition_shape() const; + SCLLOG(Logical) IsShape_aspect() const; + SCLLOG(Logical) IsShape_aspect_relationship() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 ... NONE only for complex selects... }; -inline SdaiSelect * create_SdaiShape_definition () { return new SdaiShape_definition ; } +#ifdef __OSTORE__ +void SdaiShape_definition_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiShape_definition (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiShape_definition () { return new SdaiShape_definition; } +#endif + +typedef SdaiShape_definition * SdaiShape_definitionH; +typedef SdaiShape_definition_ptr SdaiShape_definition_var; -class SdaiShape_definitions : public SelectAggregate { +class SdaiShape_definitions : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiShape_definition); } + SdaiShape_definitions( SelectTypeDescriptor * =config_control_designt_shape_definition ); + ~SdaiShape_definitions(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiShape_definition( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiShape_definitions () { return new SdaiShape_definitions ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiShape_definitions (os_database *db); +#else +inline STEPaggregate * create_SdaiShape_definitions () { return new SdaiShape_definitions; } +#endif -///// END SELECT TYPE shape_definition +typedef SdaiShape_definitions_ptr SdaiShape_definitions_var; + +///// END SELECT TYPE shape_definition -////////// SELECT TYPE characterized_definition -class SdaiCharacterized_definition : public SdaiSelect { +////////// SELECT TYPE SdaiCharacterized_definition +class SdaiCharacterized_definition : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // CHARACTERIZED_PRODUCT_DEFINITION -- SELECT_TYPE - // SHAPE_DEFINITION -- SELECT_TYPE - SdaiShape_definition _sdaishape_definition; + // CHARACTERIZED_PRODUCT_DEFINITION -- sdaiSELECT + // SHAPE_DEFINITION -- sdaiSELECT SdaiCharacterized_product_definition _sdaicharacterized_product_definition; + SdaiShape_definition _sdaishape_definition; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiCharacterized_definition_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiCharacterized_definition(); +// constructors + SdaiCharacterized_definition( const SelectTypeDescriptor * =config_control_designt_characterized_definition ); // part 1 - SdaiCharacterized_definition( const SdaiCharacterized_product_definitionH& ); - SdaiCharacterized_definition( const SdaiShape_definitionH& ); + SdaiCharacterized_definition( const SdaiCharacterized_product_definition_ptr&, + const SelectTypeDescriptor * =config_control_designt_characterized_definition ); + SdaiCharacterized_definition( const SdaiShape_definition_ptr&, + const SelectTypeDescriptor * =config_control_designt_characterized_definition ); virtual ~SdaiCharacterized_definition(); // part 2 - operator SdaiCharacterized_product_definitionH(); - operator SdaiShape_definitionH(); + operator SdaiCharacterized_product_definition_ptr(); + operator SdaiShape_definition_ptr(); // part 3 // part 4 - SdaiCharacterized_definition& operator =( const SdaiCharacterized_product_definitionH& ); - SdaiCharacterized_definition& operator =( const SdaiShape_definitionH& ); + SdaiCharacterized_definition& operator =( const SdaiCharacterized_product_definition_ptr& ); + SdaiCharacterized_definition& operator =( const SdaiShape_definition_ptr& ); // not in SDAI SdaiCharacterized_definition& ShallowCopy ( const SdaiCharacterized_definition& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiCharacterized_definition& operator =( const SdaiCharacterized_definitionH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiCharacterized_definition& operator =( SdaiCharacterized_definition * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsCharacterized_product_definition() const; - SdaiLogical IsShape_definition() const; + SCLLOG(Logical) IsCharacterized_product_definition() const; + SCLLOG(Logical) IsShape_definition() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 ... NONE only for complex selects... }; -inline SdaiSelect * create_SdaiCharacterized_definition () { return new SdaiCharacterized_definition ; } +#ifdef __OSTORE__ +void SdaiCharacterized_definition_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiCharacterized_definition (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiCharacterized_definition () { return new SdaiCharacterized_definition; } +#endif + +typedef SdaiCharacterized_definition * SdaiCharacterized_definitionH; +typedef SdaiCharacterized_definition_ptr SdaiCharacterized_definition_var; -class SdaiCharacterized_definitions : public SelectAggregate { +class SdaiCharacterized_definitions : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiCharacterized_definition); } + SdaiCharacterized_definitions( SelectTypeDescriptor * =config_control_designt_characterized_definition ); + ~SdaiCharacterized_definitions(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiCharacterized_definition( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiCharacterized_definitions () { return new SdaiCharacterized_definitions ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiCharacterized_definitions (os_database *db); +#else +inline STEPaggregate * create_SdaiCharacterized_definitions () { return new SdaiCharacterized_definitions; } +#endif -///// END SELECT TYPE characterized_definition +typedef SdaiCharacterized_definitions_ptr SdaiCharacterized_definitions_var; + +///// END SELECT TYPE characterized_definition -////////// SELECT TYPE change_request_item -class SdaiChange_request_item : public SdaiSelect { +////////// SELECT TYPE SdaiChange_request_item +class SdaiChange_request_item : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // PRODUCT_DEFINITION_FORMATION -- ENTITY_TYPE - STEPentityH _stepentityh; + // PRODUCT_DEFINITION_FORMATION -- sdaiINSTANCE + SCLP23(Application_instance_ptr) _app_inst; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiChange_request_item_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiChange_request_item(); +// constructors + SdaiChange_request_item( const SelectTypeDescriptor * =config_control_designt_change_request_item ); // part 1 - SdaiChange_request_item( const SdaiProduct_definition_formationH& ); + SdaiChange_request_item( const SdaiProduct_definition_formation_ptr&, + const SelectTypeDescriptor * =config_control_designt_change_request_item ); virtual ~SdaiChange_request_item(); // part 2 - operator SdaiProduct_definition_formationH(); + operator SdaiProduct_definition_formation_ptr(); // part 3 - SdaiProductH Of_product() const; - void Of_product (SdaiProductH x); - const SdaiText Description() const; - void Description (const char * x); - const SdaiIdentifier Id() const; - void Id (const char * x); + const SdaiProduct_ptr of_product_() const; + void of_product_ (const SdaiProduct_ptr x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiIdentifier id_() const; + void id_ (const SdaiIdentifier x); + // part 4 - SdaiChange_request_item& operator =( const SdaiProduct_definition_formationH& ); + SdaiChange_request_item& operator =( const SdaiProduct_definition_formation_ptr& ); // not in SDAI SdaiChange_request_item& ShallowCopy ( const SdaiChange_request_item& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiChange_request_item& operator =( const SdaiChange_request_itemH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiChange_request_item& operator =( SdaiChange_request_item * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsProduct_definition_formation() const; + SCLLOG(Logical) IsProduct_definition_formation() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 ... NONE only for complex selects... }; -inline SdaiSelect * create_SdaiChange_request_item () { return new SdaiChange_request_item ; } +#ifdef __OSTORE__ +void SdaiChange_request_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiChange_request_item (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiChange_request_item () { return new SdaiChange_request_item; } +#endif + +typedef SdaiChange_request_item * SdaiChange_request_itemH; +typedef SdaiChange_request_item_ptr SdaiChange_request_item_var; -class SdaiChange_request_items : public SelectAggregate { +class SdaiChange_request_items : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiChange_request_item); } + SdaiChange_request_items( SelectTypeDescriptor * =config_control_designt_change_request_item ); + ~SdaiChange_request_items(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiChange_request_item( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiChange_request_items () { return new SdaiChange_request_items ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiChange_request_items (os_database *db); +#else +inline STEPaggregate * create_SdaiChange_request_items () { return new SdaiChange_request_items; } +#endif -///// END SELECT TYPE change_request_item +typedef SdaiChange_request_items_ptr SdaiChange_request_items_var; + +///// END SELECT TYPE change_request_item -////////// SELECT TYPE reversible_topology_item -class SdaiReversible_topology_item : public SdaiSelect { +////////// SELECT TYPE SdaiReversible_topology_item +class SdaiReversible_topology_item : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // EDGE -- ENTITY_TYPE - // PATH -- ENTITY_TYPE - // FACE -- ENTITY_TYPE - // FACE_BOUND -- ENTITY_TYPE - // CLOSED_SHELL -- ENTITY_TYPE - // OPEN_SHELL -- ENTITY_TYPE - STEPentityH _stepentityh; + // EDGE -- sdaiINSTANCE + // PATH -- sdaiINSTANCE + // FACE -- sdaiINSTANCE + // FACE_BOUND -- sdaiINSTANCE + // CLOSED_SHELL -- sdaiINSTANCE + // OPEN_SHELL -- sdaiINSTANCE + SCLP23(Application_instance_ptr) _app_inst; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiReversible_topology_item_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiReversible_topology_item(); +// constructors + SdaiReversible_topology_item( const SelectTypeDescriptor * =config_control_designt_reversible_topology_item ); // part 1 - SdaiReversible_topology_item( const SdaiEdgeH& ); - SdaiReversible_topology_item( const SdaiPathH& ); - SdaiReversible_topology_item( const SdaiFaceH& ); - SdaiReversible_topology_item( const SdaiFace_boundH& ); - SdaiReversible_topology_item( const SdaiClosed_shellH& ); - SdaiReversible_topology_item( const SdaiOpen_shellH& ); + SdaiReversible_topology_item( const SdaiEdge_ptr&, + const SelectTypeDescriptor * =config_control_designt_reversible_topology_item ); + SdaiReversible_topology_item( const SdaiPath_ptr&, + const SelectTypeDescriptor * =config_control_designt_reversible_topology_item ); + SdaiReversible_topology_item( const SdaiFace_ptr&, + const SelectTypeDescriptor * =config_control_designt_reversible_topology_item ); + SdaiReversible_topology_item( const SdaiFace_bound_ptr&, + const SelectTypeDescriptor * =config_control_designt_reversible_topology_item ); + SdaiReversible_topology_item( const SdaiClosed_shell_ptr&, + const SelectTypeDescriptor * =config_control_designt_reversible_topology_item ); + SdaiReversible_topology_item( const SdaiOpen_shell_ptr&, + const SelectTypeDescriptor * =config_control_designt_reversible_topology_item ); virtual ~SdaiReversible_topology_item(); // part 2 - operator SdaiEdgeH(); - operator SdaiPathH(); - operator SdaiFaceH(); - operator SdaiFace_boundH(); - operator SdaiClosed_shellH(); - operator SdaiOpen_shellH(); + operator SdaiEdge_ptr(); + operator SdaiPath_ptr(); + operator SdaiFace_ptr(); + operator SdaiFace_bound_ptr(); + operator SdaiClosed_shell_ptr(); + operator SdaiOpen_shell_ptr(); // part 3 - const EntityAggregateH Cfs_faces() const; - void Cfs_faces (EntityAggregateH x); - const BOOLEAN Orientation() const; - void Orientation (BOOLEAN x); - SdaiLoopH Bound() const; - void Bound (SdaiLoopH x); - const EntityAggregateH Bounds() const; - void Bounds (EntityAggregateH x); - const EntityAggregateH Edge_list() const; - void Edge_list (EntityAggregateH x); - SdaiVertexH Edge_end() const; - void Edge_end (SdaiVertexH x); - SdaiVertexH Edge_start() const; - void Edge_start (SdaiVertexH x); - const SdaiLabel Name() const; - void Name (const char * x); + const EntityAggregate_ptr cfs_faces_() const; + void cfs_faces_ (const EntityAggregate_ptr x); + + const SCLBOOL(Bool) orientation_() const; + void orientation_ (const SCLBOOL(Bool) x); + + const SdaiLoop_ptr bound_() const; + void bound_ (const SdaiLoop_ptr x); + + const EntityAggregate_ptr bounds_() const; + void bounds_ (const EntityAggregate_ptr x); + + const EntityAggregate_ptr edge_list_() const; + void edge_list_ (const EntityAggregate_ptr x); + + const SdaiVertex_ptr edge_end_() const; + void edge_end_ (const SdaiVertex_ptr x); + + const SdaiVertex_ptr edge_start_() const; + void edge_start_ (const SdaiVertex_ptr x); + + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + // part 4 - SdaiReversible_topology_item& operator =( const SdaiEdgeH& ); - SdaiReversible_topology_item& operator =( const SdaiPathH& ); - SdaiReversible_topology_item& operator =( const SdaiFaceH& ); - SdaiReversible_topology_item& operator =( const SdaiFace_boundH& ); - SdaiReversible_topology_item& operator =( const SdaiClosed_shellH& ); - SdaiReversible_topology_item& operator =( const SdaiOpen_shellH& ); + SdaiReversible_topology_item& operator =( const SdaiEdge_ptr& ); + SdaiReversible_topology_item& operator =( const SdaiPath_ptr& ); + SdaiReversible_topology_item& operator =( const SdaiFace_ptr& ); + SdaiReversible_topology_item& operator =( const SdaiFace_bound_ptr& ); + SdaiReversible_topology_item& operator =( const SdaiClosed_shell_ptr& ); + SdaiReversible_topology_item& operator =( const SdaiOpen_shell_ptr& ); // not in SDAI SdaiReversible_topology_item& ShallowCopy ( const SdaiReversible_topology_item& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiReversible_topology_item& operator =( const SdaiReversible_topology_itemH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiReversible_topology_item& operator =( SdaiReversible_topology_item * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsEdge() const; - SdaiLogical IsPath() const; - SdaiLogical IsFace() const; - SdaiLogical IsFace_bound() const; - SdaiLogical IsClosed_shell() const; - SdaiLogical IsOpen_shell() const; + SCLLOG(Logical) IsEdge() const; + SCLLOG(Logical) IsPath() const; + SCLLOG(Logical) IsFace() const; + SCLLOG(Logical) IsFace_bound() const; + SCLLOG(Logical) IsClosed_shell() const; + SCLLOG(Logical) IsOpen_shell() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 ... NONE only for complex selects... }; -inline SdaiSelect * create_SdaiReversible_topology_item () { return new SdaiReversible_topology_item ; } +#ifdef __OSTORE__ +void SdaiReversible_topology_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiReversible_topology_item (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiReversible_topology_item () { return new SdaiReversible_topology_item; } +#endif + +typedef SdaiReversible_topology_item * SdaiReversible_topology_itemH; +typedef SdaiReversible_topology_item_ptr SdaiReversible_topology_item_var; -class SdaiReversible_topology_items : public SelectAggregate { +class SdaiReversible_topology_items : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiReversible_topology_item); } + SdaiReversible_topology_items( SelectTypeDescriptor * =config_control_designt_reversible_topology_item ); + ~SdaiReversible_topology_items(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiReversible_topology_item( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiReversible_topology_items () { return new SdaiReversible_topology_items ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiReversible_topology_items (os_database *db); +#else +inline STEPaggregate * create_SdaiReversible_topology_items () { return new SdaiReversible_topology_items; } +#endif -///// END SELECT TYPE reversible_topology_item +typedef SdaiReversible_topology_items_ptr SdaiReversible_topology_items_var; + +///// END SELECT TYPE reversible_topology_item -////////// SELECT TYPE axis2_placement -class SdaiAxis2_placement : public SdaiSelect { +////////// SELECT TYPE SdaiAxis2_placement +class SdaiAxis2_placement : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // AXIS2_PLACEMENT_2D -- ENTITY_TYPE - // AXIS2_PLACEMENT_3D -- ENTITY_TYPE - STEPentityH _stepentityh; + // AXIS2_PLACEMENT_2D -- sdaiINSTANCE + // AXIS2_PLACEMENT_3D -- sdaiINSTANCE + SCLP23(Application_instance_ptr) _app_inst; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiAxis2_placement_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiAxis2_placement(); +// constructors + SdaiAxis2_placement( const SelectTypeDescriptor * =config_control_designt_axis2_placement ); // part 1 - SdaiAxis2_placement( const SdaiAxis2_placement_2dH& ); - SdaiAxis2_placement( const SdaiAxis2_placement_3dH& ); + SdaiAxis2_placement( const SdaiAxis2_placement_2d_ptr&, + const SelectTypeDescriptor * =config_control_designt_axis2_placement ); + SdaiAxis2_placement( const SdaiAxis2_placement_3d_ptr&, + const SelectTypeDescriptor * =config_control_designt_axis2_placement ); virtual ~SdaiAxis2_placement(); // part 2 - operator SdaiAxis2_placement_2dH(); - operator SdaiAxis2_placement_3dH(); + operator SdaiAxis2_placement_2d_ptr(); + operator SdaiAxis2_placement_3d_ptr(); // part 3 - SdaiDirectionH Axis() const; - void Axis (SdaiDirectionH x); - SdaiDirectionH Ref_direction() const; - void Ref_direction (SdaiDirectionH x); - SdaiCartesian_pointH Location() const; - void Location (SdaiCartesian_pointH x); - const SdaiLabel Name() const; - void Name (const char * x); + const SdaiDirection_ptr axis_() const; + void axis_ (const SdaiDirection_ptr x); + + const SdaiDirection_ptr ref_direction_() const; + void ref_direction_ (const SdaiDirection_ptr x); + + const SdaiCartesian_point_ptr location_() const; + void location_ (const SdaiCartesian_point_ptr x); + + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + // part 4 - SdaiAxis2_placement& operator =( const SdaiAxis2_placement_2dH& ); - SdaiAxis2_placement& operator =( const SdaiAxis2_placement_3dH& ); + SdaiAxis2_placement& operator =( const SdaiAxis2_placement_2d_ptr& ); + SdaiAxis2_placement& operator =( const SdaiAxis2_placement_3d_ptr& ); // not in SDAI SdaiAxis2_placement& ShallowCopy ( const SdaiAxis2_placement& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiAxis2_placement& operator =( const SdaiAxis2_placementH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiAxis2_placement& operator =( SdaiAxis2_placement * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsAxis2_placement_2d() const; - SdaiLogical IsAxis2_placement_3d() const; + SCLLOG(Logical) IsAxis2_placement_2d() const; + SCLLOG(Logical) IsAxis2_placement_3d() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 ... NONE only for complex selects... }; -inline SdaiSelect * create_SdaiAxis2_placement () { return new SdaiAxis2_placement ; } +#ifdef __OSTORE__ +void SdaiAxis2_placement_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiAxis2_placement (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiAxis2_placement () { return new SdaiAxis2_placement; } +#endif + +typedef SdaiAxis2_placement * SdaiAxis2_placementH; +typedef SdaiAxis2_placement_ptr SdaiAxis2_placement_var; -class SdaiAxis2_placements : public SelectAggregate { +class SdaiAxis2_placements : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiAxis2_placement); } + SdaiAxis2_placements( SelectTypeDescriptor * =config_control_designt_axis2_placement ); + ~SdaiAxis2_placements(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiAxis2_placement( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiAxis2_placements () { return new SdaiAxis2_placements ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiAxis2_placements (os_database *db); +#else +inline STEPaggregate * create_SdaiAxis2_placements () { return new SdaiAxis2_placements; } +#endif -///// END SELECT TYPE axis2_placement +typedef SdaiAxis2_placements_ptr SdaiAxis2_placements_var; + +///// END SELECT TYPE axis2_placement -////////// SELECT TYPE specified_item -class SdaiSpecified_item : public SdaiSelect { +////////// SELECT TYPE SdaiSpecified_item +class SdaiSpecified_item : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // PRODUCT_DEFINITION -- ENTITY_TYPE - // SHAPE_ASPECT -- ENTITY_TYPE - STEPentityH _stepentityh; + // PRODUCT_DEFINITION -- sdaiINSTANCE + // SHAPE_ASPECT -- sdaiINSTANCE + SCLP23(Application_instance_ptr) _app_inst; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiSpecified_item_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiSpecified_item(); +// constructors + SdaiSpecified_item( const SelectTypeDescriptor * =config_control_designt_specified_item ); // part 1 - SdaiSpecified_item( const SdaiProduct_definitionH& ); - SdaiSpecified_item( const SdaiShape_aspectH& ); + SdaiSpecified_item( const SdaiProduct_definition_ptr&, + const SelectTypeDescriptor * =config_control_designt_specified_item ); + SdaiSpecified_item( const SdaiShape_aspect_ptr&, + const SelectTypeDescriptor * =config_control_designt_specified_item ); virtual ~SdaiSpecified_item(); // part 2 - operator SdaiProduct_definitionH(); - operator SdaiShape_aspectH(); + operator SdaiProduct_definition_ptr(); + operator SdaiShape_aspect_ptr(); // part 3 - const LOGICAL Product_definitional() const; - void Product_definitional (LOGICAL x); - SdaiProduct_definition_shapeH Of_shape() const; - void Of_shape (SdaiProduct_definition_shapeH x); - const SdaiLabel Name() const; - void Name (const char * x); - SdaiProduct_definition_contextH Frame_of_reference() const; - void Frame_of_reference (SdaiProduct_definition_contextH x); - SdaiProduct_definition_formationH Formation() const; - void Formation (SdaiProduct_definition_formationH x); - const SdaiText Description() const; - void Description (const char * x); - const SdaiIdentifier Id() const; - void Id (const char * x); + const SCLLOG(Logical) product_definitional_() const; + void product_definitional_ (const SCLLOG(Logical) x); + + const SdaiProduct_definition_shape_ptr of_shape_() const; + void of_shape_ (const SdaiProduct_definition_shape_ptr x); + + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiProduct_definition_context_ptr frame_of_reference_() const; + void frame_of_reference_ (const SdaiProduct_definition_context_ptr x); + + const SdaiProduct_definition_formation_ptr formation_() const; + void formation_ (const SdaiProduct_definition_formation_ptr x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiIdentifier id_() const; + void id_ (const SdaiIdentifier x); + // part 4 - SdaiSpecified_item& operator =( const SdaiProduct_definitionH& ); - SdaiSpecified_item& operator =( const SdaiShape_aspectH& ); + SdaiSpecified_item& operator =( const SdaiProduct_definition_ptr& ); + SdaiSpecified_item& operator =( const SdaiShape_aspect_ptr& ); // not in SDAI SdaiSpecified_item& ShallowCopy ( const SdaiSpecified_item& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiSpecified_item& operator =( const SdaiSpecified_itemH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiSpecified_item& operator =( SdaiSpecified_item * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsProduct_definition() const; - SdaiLogical IsShape_aspect() const; + SCLLOG(Logical) IsProduct_definition() const; + SCLLOG(Logical) IsShape_aspect() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 ... NONE only for complex selects... }; -inline SdaiSelect * create_SdaiSpecified_item () { return new SdaiSpecified_item ; } +#ifdef __OSTORE__ +void SdaiSpecified_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiSpecified_item (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiSpecified_item () { return new SdaiSpecified_item; } +#endif + +typedef SdaiSpecified_item * SdaiSpecified_itemH; +typedef SdaiSpecified_item_ptr SdaiSpecified_item_var; -class SdaiSpecified_items : public SelectAggregate { +class SdaiSpecified_items : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiSpecified_item); } + SdaiSpecified_items( SelectTypeDescriptor * =config_control_designt_specified_item ); + ~SdaiSpecified_items(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiSpecified_item( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiSpecified_items () { return new SdaiSpecified_items ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiSpecified_items (os_database *db); +#else +inline STEPaggregate * create_SdaiSpecified_items () { return new SdaiSpecified_items; } +#endif -///// END SELECT TYPE specified_item +typedef SdaiSpecified_items_ptr SdaiSpecified_items_var; + +///// END SELECT TYPE specified_item -////////// SELECT TYPE measure_value -class SdaiMeasure_value : public SdaiSelect { +////////// SELECT TYPE SdaiMeasure_value +class SdaiMeasure_value : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // AREA_MEASURE -- REAL_TYPE - // CONTEXT_DEPENDENT_MEASURE -- REAL_TYPE - // COUNT_MEASURE -- NUMBER_TYPE - // DESCRIPTIVE_MEASURE -- STRING_TYPE - // LENGTH_MEASURE -- REAL_TYPE - // MASS_MEASURE -- REAL_TYPE - // PLANE_ANGLE_MEASURE -- REAL_TYPE - // PARAMETER_VALUE -- REAL_TYPE - // POSITIVE_LENGTH_MEASURE -- REAL_TYPE - // POSITIVE_PLANE_ANGLE_MEASURE -- REAL_TYPE - // SOLID_ANGLE_MEASURE -- REAL_TYPE - // VOLUME_MEASURE -- REAL_TYPE - SdaiString _sdaistring; - SdaiReal _sdaireal; + // AREA_MEASURE -- sdaiREAL + // CONTEXT_DEPENDENT_MEASURE -- sdaiREAL + // COUNT_MEASURE -- sdaiNUMBER + // DESCRIPTIVE_MEASURE -- sdaiSTRING + // LENGTH_MEASURE -- sdaiREAL + // MASS_MEASURE -- sdaiREAL + // PLANE_ANGLE_MEASURE -- sdaiREAL + // PARAMETER_VALUE -- sdaiREAL + // POSITIVE_LENGTH_MEASURE -- REFERENCE_TYPE + // POSITIVE_PLANE_ANGLE_MEASURE -- REFERENCE_TYPE + // SOLID_ANGLE_MEASURE -- sdaiREAL + // VOLUME_MEASURE -- sdaiREAL + SCLP23(Real) _real; + SCLP23(String) _string; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiMeasure_value_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiMeasure_value(); +// constructors + SdaiMeasure_value( const SelectTypeDescriptor * =config_control_designt_measure_value ); // part 1 - SdaiMeasure_value( const SdaiDescriptive_measure& ); - SdaiMeasure_value( const SdaiReal& ); + SdaiMeasure_value( const SdaiDescriptive_measure&, + const SelectTypeDescriptor * =config_control_designt_measure_value ); + SdaiMeasure_value( const SCLP23(Real)&, + const SelectTypeDescriptor * =config_control_designt_measure_value ); virtual ~SdaiMeasure_value(); // part 2 operator SdaiDescriptive_measure(); - operator SdaiReal (); + operator SCLP23(Real) (); // part 3 // part 4 SdaiMeasure_value& operator =( const SdaiDescriptive_measure& ); - SdaiMeasure_value& operator =( const SdaiReal& ); + SdaiMeasure_value& operator =( const SCLP23(Real)& ); // not in SDAI SdaiMeasure_value& ShallowCopy ( const SdaiMeasure_value& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiMeasure_value& operator =( const SdaiMeasure_valueH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiMeasure_value& operator =( SdaiMeasure_value * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsArea_measure() const; - SdaiLogical IsContext_dependent_measure() const; - SdaiLogical IsCount_measure() const; - SdaiLogical IsDescriptive_measure() const; - SdaiLogical IsLength_measure() const; - SdaiLogical IsMass_measure() const; - SdaiLogical IsPlane_angle_measure() const; - SdaiLogical IsParameter_value() const; - SdaiLogical IsPositive_length_measure() const; - SdaiLogical IsPositive_plane_angle_measure() const; - SdaiLogical IsSolid_angle_measure() const; - SdaiLogical IsVolume_measure() const; + SCLLOG(Logical) IsArea_measure() const; + SCLLOG(Logical) IsContext_dependent_measure() const; + SCLLOG(Logical) IsCount_measure() const; + SCLLOG(Logical) IsDescriptive_measure() const; + SCLLOG(Logical) IsLength_measure() const; + SCLLOG(Logical) IsMass_measure() const; + SCLLOG(Logical) IsPlane_angle_measure() const; + SCLLOG(Logical) IsParameter_value() const; + SCLLOG(Logical) IsPositive_length_measure() const; + SCLLOG(Logical) IsPositive_plane_angle_measure() const; + SCLLOG(Logical) IsSolid_angle_measure() const; + SCLLOG(Logical) IsVolume_measure() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 const TypeDescriptor *SetUnderlyingType ( const TypeDescriptor * td ); }; -inline SdaiSelect * create_SdaiMeasure_value () { return new SdaiMeasure_value ; } +#ifdef __OSTORE__ +void SdaiMeasure_value_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiMeasure_value (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiMeasure_value () { return new SdaiMeasure_value; } +#endif + +typedef SdaiMeasure_value * SdaiMeasure_valueH; +typedef SdaiMeasure_value_ptr SdaiMeasure_value_var; -class SdaiMeasure_values : public SelectAggregate { +class SdaiMeasure_values : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiMeasure_value); } + SdaiMeasure_values( SelectTypeDescriptor * =config_control_designt_measure_value ); + ~SdaiMeasure_values(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiMeasure_value( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiMeasure_values () { return new SdaiMeasure_values ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiMeasure_values (os_database *db); +#else +inline STEPaggregate * create_SdaiMeasure_values () { return new SdaiMeasure_values; } +#endif -///// END SELECT TYPE measure_value +typedef SdaiMeasure_values_ptr SdaiMeasure_values_var; + +///// END SELECT TYPE measure_value -////////// SELECT TYPE person_organization_select -class SdaiPerson_organization_select : public SdaiSelect { +////////// SELECT TYPE SdaiPerson_organization_select +class SdaiPerson_organization_select : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // PERSON_AND_ORGANIZATION -- ENTITY_TYPE - STEPentityH _stepentityh; + // PERSON_AND_ORGANIZATION -- sdaiINSTANCE + SCLP23(Application_instance_ptr) _app_inst; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiPerson_organization_select_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiPerson_organization_select(); +// constructors + SdaiPerson_organization_select( const SelectTypeDescriptor * =config_control_designt_person_organization_select ); // part 1 - SdaiPerson_organization_select( const SdaiPerson_and_organizationH& ); + SdaiPerson_organization_select( const SdaiPerson_and_organization_ptr&, + const SelectTypeDescriptor * =config_control_designt_person_organization_select ); virtual ~SdaiPerson_organization_select(); // part 2 - operator SdaiPerson_and_organizationH(); + operator SdaiPerson_and_organization_ptr(); // part 3 - SdaiOrganizationH The_organization() const; - void The_organization (SdaiOrganizationH x); - SdaiPersonH The_person() const; - void The_person (SdaiPersonH x); + const SdaiOrganization_ptr the_organization_() const; + void the_organization_ (const SdaiOrganization_ptr x); + + const SdaiPerson_ptr the_person_() const; + void the_person_ (const SdaiPerson_ptr x); + // part 4 - SdaiPerson_organization_select& operator =( const SdaiPerson_and_organizationH& ); + SdaiPerson_organization_select& operator =( const SdaiPerson_and_organization_ptr& ); // not in SDAI SdaiPerson_organization_select& ShallowCopy ( const SdaiPerson_organization_select& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiPerson_organization_select& operator =( const SdaiPerson_organization_selectH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiPerson_organization_select& operator =( SdaiPerson_organization_select * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsPerson_and_organization() const; + SCLLOG(Logical) IsPerson_and_organization() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 ... NONE only for complex selects... }; -inline SdaiSelect * create_SdaiPerson_organization_select () { return new SdaiPerson_organization_select ; } +#ifdef __OSTORE__ +void SdaiPerson_organization_select_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiPerson_organization_select (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiPerson_organization_select () { return new SdaiPerson_organization_select; } +#endif + +typedef SdaiPerson_organization_select * SdaiPerson_organization_selectH; +typedef SdaiPerson_organization_select_ptr SdaiPerson_organization_select_var; -class SdaiPerson_organization_selects : public SelectAggregate { +class SdaiPerson_organization_selects : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiPerson_organization_select); } + SdaiPerson_organization_selects( SelectTypeDescriptor * =config_control_designt_person_organization_select ); + ~SdaiPerson_organization_selects(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiPerson_organization_select( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiPerson_organization_selects () { return new SdaiPerson_organization_selects ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiPerson_organization_selects (os_database *db); +#else +inline STEPaggregate * create_SdaiPerson_organization_selects () { return new SdaiPerson_organization_selects; } +#endif -///// END SELECT TYPE person_organization_select +typedef SdaiPerson_organization_selects_ptr SdaiPerson_organization_selects_var; + +///// END SELECT TYPE person_organization_select -////////// SELECT TYPE pcurve_or_surface -class SdaiPcurve_or_surface : public SdaiSelect { +////////// SELECT TYPE SdaiPcurve_or_surface +class SdaiPcurve_or_surface : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // PCURVE -- ENTITY_TYPE - // SURFACE -- ENTITY_TYPE - STEPentityH _stepentityh; + // PCURVE -- sdaiINSTANCE + // SURFACE -- sdaiINSTANCE + SCLP23(Application_instance_ptr) _app_inst; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiPcurve_or_surface_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiPcurve_or_surface(); +// constructors + SdaiPcurve_or_surface( const SelectTypeDescriptor * =config_control_designt_pcurve_or_surface ); // part 1 - SdaiPcurve_or_surface( const SdaiPcurveH& ); - SdaiPcurve_or_surface( const SdaiSurfaceH& ); + SdaiPcurve_or_surface( const SdaiPcurve_ptr&, + const SelectTypeDescriptor * =config_control_designt_pcurve_or_surface ); + SdaiPcurve_or_surface( const SdaiSurface_ptr&, + const SelectTypeDescriptor * =config_control_designt_pcurve_or_surface ); virtual ~SdaiPcurve_or_surface(); // part 2 - operator SdaiPcurveH(); - operator SdaiSurfaceH(); + operator SdaiPcurve_ptr(); + operator SdaiSurface_ptr(); // part 3 - SdaiDefinitional_representationH Reference_to_curve() const; - void Reference_to_curve (SdaiDefinitional_representationH x); - SdaiSurfaceH Basis_surface() const; - void Basis_surface (SdaiSurfaceH x); - const SdaiLabel Name() const; - void Name (const char * x); + const SdaiDefinitional_representation_ptr reference_to_curve_() const; + void reference_to_curve_ (const SdaiDefinitional_representation_ptr x); + + const SdaiSurface_ptr basis_surface_() const; + void basis_surface_ (const SdaiSurface_ptr x); + + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + // part 4 - SdaiPcurve_or_surface& operator =( const SdaiPcurveH& ); - SdaiPcurve_or_surface& operator =( const SdaiSurfaceH& ); + SdaiPcurve_or_surface& operator =( const SdaiPcurve_ptr& ); + SdaiPcurve_or_surface& operator =( const SdaiSurface_ptr& ); // not in SDAI SdaiPcurve_or_surface& ShallowCopy ( const SdaiPcurve_or_surface& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiPcurve_or_surface& operator =( const SdaiPcurve_or_surfaceH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiPcurve_or_surface& operator =( SdaiPcurve_or_surface * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsPcurve() const; - SdaiLogical IsSurface() const; + SCLLOG(Logical) IsPcurve() const; + SCLLOG(Logical) IsSurface() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 ... NONE only for complex selects... }; -inline SdaiSelect * create_SdaiPcurve_or_surface () { return new SdaiPcurve_or_surface ; } +#ifdef __OSTORE__ +void SdaiPcurve_or_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiPcurve_or_surface (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiPcurve_or_surface () { return new SdaiPcurve_or_surface; } +#endif + +typedef SdaiPcurve_or_surface * SdaiPcurve_or_surfaceH; +typedef SdaiPcurve_or_surface_ptr SdaiPcurve_or_surface_var; -class SdaiPcurve_or_surfaces : public SelectAggregate { +class SdaiPcurve_or_surfaces : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiPcurve_or_surface); } + SdaiPcurve_or_surfaces( SelectTypeDescriptor * =config_control_designt_pcurve_or_surface ); + ~SdaiPcurve_or_surfaces(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiPcurve_or_surface( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiPcurve_or_surfaces () { return new SdaiPcurve_or_surfaces ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiPcurve_or_surfaces (os_database *db); +#else +inline STEPaggregate * create_SdaiPcurve_or_surfaces () { return new SdaiPcurve_or_surfaces; } +#endif -///// END SELECT TYPE pcurve_or_surface +typedef SdaiPcurve_or_surfaces_ptr SdaiPcurve_or_surfaces_var; + +///// END SELECT TYPE pcurve_or_surface -////////// SELECT TYPE classified_item -class SdaiClassified_item : public SdaiSelect { +////////// SELECT TYPE SdaiClassified_item +class SdaiClassified_item : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // PRODUCT_DEFINITION_FORMATION -- ENTITY_TYPE - // ASSEMBLY_COMPONENT_USAGE -- ENTITY_TYPE - STEPentityH _stepentityh; + // PRODUCT_DEFINITION_FORMATION -- sdaiINSTANCE + // ASSEMBLY_COMPONENT_USAGE -- sdaiINSTANCE + SCLP23(Application_instance_ptr) _app_inst; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiClassified_item_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiClassified_item(); +// constructors + SdaiClassified_item( const SelectTypeDescriptor * =config_control_designt_classified_item ); // part 1 - SdaiClassified_item( const SdaiProduct_definition_formationH& ); - SdaiClassified_item( const SdaiAssembly_component_usageH& ); + SdaiClassified_item( const SdaiProduct_definition_formation_ptr&, + const SelectTypeDescriptor * =config_control_designt_classified_item ); + SdaiClassified_item( const SdaiAssembly_component_usage_ptr&, + const SelectTypeDescriptor * =config_control_designt_classified_item ); virtual ~SdaiClassified_item(); // part 2 - operator SdaiProduct_definition_formationH(); - operator SdaiAssembly_component_usageH(); + operator SdaiProduct_definition_formation_ptr(); + operator SdaiAssembly_component_usage_ptr(); // part 3 - const SdaiIdentifier Reference_designator() const; - void Reference_designator (const char * x); - SdaiProduct_definitionH Related_product_definition() const; - void Related_product_definition (SdaiProduct_definitionH x); - SdaiProduct_definitionH Relating_product_definition() const; - void Relating_product_definition (SdaiProduct_definitionH x); - const SdaiLabel Name() const; - void Name (const char * x); - SdaiProductH Of_product() const; - void Of_product (SdaiProductH x); - const SdaiText Description() const; - void Description (const char * x); - const SdaiIdentifier Id() const; - void Id (const char * x); + const SdaiIdentifier reference_designator_() const; + void reference_designator_ (const SdaiIdentifier x); + + const SdaiProduct_definition_ptr related_product_definition_() const; + void related_product_definition_ (const SdaiProduct_definition_ptr x); + + const SdaiProduct_definition_ptr relating_product_definition_() const; + void relating_product_definition_ (const SdaiProduct_definition_ptr x); + + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiProduct_ptr of_product_() const; + void of_product_ (const SdaiProduct_ptr x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiIdentifier id_() const; + void id_ (const SdaiIdentifier x); + // part 4 - SdaiClassified_item& operator =( const SdaiProduct_definition_formationH& ); - SdaiClassified_item& operator =( const SdaiAssembly_component_usageH& ); + SdaiClassified_item& operator =( const SdaiProduct_definition_formation_ptr& ); + SdaiClassified_item& operator =( const SdaiAssembly_component_usage_ptr& ); // not in SDAI SdaiClassified_item& ShallowCopy ( const SdaiClassified_item& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiClassified_item& operator =( const SdaiClassified_itemH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiClassified_item& operator =( SdaiClassified_item * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsProduct_definition_formation() const; - SdaiLogical IsAssembly_component_usage() const; + SCLLOG(Logical) IsProduct_definition_formation() const; + SCLLOG(Logical) IsAssembly_component_usage() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 ... NONE only for complex selects... }; -inline SdaiSelect * create_SdaiClassified_item () { return new SdaiClassified_item ; } +#ifdef __OSTORE__ +void SdaiClassified_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiClassified_item (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiClassified_item () { return new SdaiClassified_item; } +#endif + +typedef SdaiClassified_item * SdaiClassified_itemH; +typedef SdaiClassified_item_ptr SdaiClassified_item_var; -class SdaiClassified_items : public SelectAggregate { +class SdaiClassified_items : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiClassified_item); } + SdaiClassified_items( SelectTypeDescriptor * =config_control_designt_classified_item ); + ~SdaiClassified_items(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiClassified_item( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiClassified_items () { return new SdaiClassified_items ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiClassified_items (os_database *db); +#else +inline STEPaggregate * create_SdaiClassified_items () { return new SdaiClassified_items; } +#endif -///// END SELECT TYPE classified_item +typedef SdaiClassified_items_ptr SdaiClassified_items_var; + +///// END SELECT TYPE classified_item -////////// SELECT TYPE vector_or_direction -class SdaiVector_or_direction : public SdaiSelect { +////////// SELECT TYPE SdaiVector_or_direction +class SdaiVector_or_direction : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // VECTOR -- ENTITY_TYPE - // DIRECTION -- ENTITY_TYPE - STEPentityH _stepentityh; + // VECTOR -- sdaiINSTANCE + // DIRECTION -- sdaiINSTANCE + SCLP23(Application_instance_ptr) _app_inst; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiVector_or_direction_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiVector_or_direction(); +// constructors + SdaiVector_or_direction( const SelectTypeDescriptor * =config_control_designt_vector_or_direction ); // part 1 - SdaiVector_or_direction( const SdaiVectorH& ); - SdaiVector_or_direction( const SdaiDirectionH& ); + SdaiVector_or_direction( const SdaiVector_ptr&, + const SelectTypeDescriptor * =config_control_designt_vector_or_direction ); + SdaiVector_or_direction( const SdaiDirection_ptr&, + const SelectTypeDescriptor * =config_control_designt_vector_or_direction ); virtual ~SdaiVector_or_direction(); // part 2 - operator SdaiVectorH(); - operator SdaiDirectionH(); + operator SdaiVector_ptr(); + operator SdaiDirection_ptr(); // part 3 - const RealAggregateH Direction_ratios() const; - void Direction_ratios (RealAggregateH x); - const SdaiLength_measure Magnitude() const; - void Magnitude (SdaiLength_measure x); - SdaiDirectionH Orientation() const; - void Orientation (SdaiDirectionH x); - const SdaiLabel Name() const; - void Name (const char * x); + const RealAggregate_ptr direction_ratios_() const; + void direction_ratios_ (const RealAggregate_ptr x); + + const SdaiLength_measure magnitude_() const; + void magnitude_ (const SdaiLength_measure x); + + const SdaiDirection_ptr orientation_() const; + void orientation_ (const SdaiDirection_ptr x); + + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + // part 4 - SdaiVector_or_direction& operator =( const SdaiVectorH& ); - SdaiVector_or_direction& operator =( const SdaiDirectionH& ); + SdaiVector_or_direction& operator =( const SdaiVector_ptr& ); + SdaiVector_or_direction& operator =( const SdaiDirection_ptr& ); // not in SDAI SdaiVector_or_direction& ShallowCopy ( const SdaiVector_or_direction& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiVector_or_direction& operator =( const SdaiVector_or_directionH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiVector_or_direction& operator =( SdaiVector_or_direction * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsVector() const; - SdaiLogical IsDirection() const; + SCLLOG(Logical) IsVector() const; + SCLLOG(Logical) IsDirection() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 ... NONE only for complex selects... }; -inline SdaiSelect * create_SdaiVector_or_direction () { return new SdaiVector_or_direction ; } +#ifdef __OSTORE__ +void SdaiVector_or_direction_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiVector_or_direction (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiVector_or_direction () { return new SdaiVector_or_direction; } +#endif + +typedef SdaiVector_or_direction * SdaiVector_or_directionH; +typedef SdaiVector_or_direction_ptr SdaiVector_or_direction_var; -class SdaiVector_or_directions : public SelectAggregate { +class SdaiVector_or_directions : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiVector_or_direction); } + SdaiVector_or_directions( SelectTypeDescriptor * =config_control_designt_vector_or_direction ); + ~SdaiVector_or_directions(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiVector_or_direction( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiVector_or_directions () { return new SdaiVector_or_directions ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiVector_or_directions (os_database *db); +#else +inline STEPaggregate * create_SdaiVector_or_directions () { return new SdaiVector_or_directions; } +#endif -///// END SELECT TYPE vector_or_direction +typedef SdaiVector_or_directions_ptr SdaiVector_or_directions_var; + +///// END SELECT TYPE vector_or_direction -////////// SELECT TYPE wireframe_model -class SdaiWireframe_model : public SdaiSelect { +////////// SELECT TYPE SdaiWireframe_model +class SdaiWireframe_model : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // SHELL_BASED_WIREFRAME_MODEL -- ENTITY_TYPE - // EDGE_BASED_WIREFRAME_MODEL -- ENTITY_TYPE - STEPentityH _stepentityh; + // SHELL_BASED_WIREFRAME_MODEL -- sdaiINSTANCE + // EDGE_BASED_WIREFRAME_MODEL -- sdaiINSTANCE + SCLP23(Application_instance_ptr) _app_inst; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiWireframe_model_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiWireframe_model(); +// constructors + SdaiWireframe_model( const SelectTypeDescriptor * =config_control_designt_wireframe_model ); // part 1 - SdaiWireframe_model( const SdaiShell_based_wireframe_modelH& ); - SdaiWireframe_model( const SdaiEdge_based_wireframe_modelH& ); + SdaiWireframe_model( const SdaiShell_based_wireframe_model_ptr&, + const SelectTypeDescriptor * =config_control_designt_wireframe_model ); + SdaiWireframe_model( const SdaiEdge_based_wireframe_model_ptr&, + const SelectTypeDescriptor * =config_control_designt_wireframe_model ); virtual ~SdaiWireframe_model(); // part 2 - operator SdaiShell_based_wireframe_modelH(); - operator SdaiEdge_based_wireframe_modelH(); + operator SdaiShell_based_wireframe_model_ptr(); + operator SdaiEdge_based_wireframe_model_ptr(); // part 3 - const EntityAggregateH Ebwm_boundary() const; - void Ebwm_boundary (EntityAggregateH x); - const SdaiShellsH Sbwm_boundary() const; - void Sbwm_boundary (SdaiShellsH x); - const SdaiLabel Name() const; - void Name (const char * x); + const EntityAggregate_ptr ebwm_boundary_() const; + void ebwm_boundary_ (const EntityAggregate_ptr x); + + const SdaiShells_ptr sbwm_boundary_() const; + void sbwm_boundary_ (const SdaiShells_ptr x); + + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + // part 4 - SdaiWireframe_model& operator =( const SdaiShell_based_wireframe_modelH& ); - SdaiWireframe_model& operator =( const SdaiEdge_based_wireframe_modelH& ); + SdaiWireframe_model& operator =( const SdaiShell_based_wireframe_model_ptr& ); + SdaiWireframe_model& operator =( const SdaiEdge_based_wireframe_model_ptr& ); // not in SDAI SdaiWireframe_model& ShallowCopy ( const SdaiWireframe_model& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiWireframe_model& operator =( const SdaiWireframe_modelH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiWireframe_model& operator =( SdaiWireframe_model * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsShell_based_wireframe_model() const; - SdaiLogical IsEdge_based_wireframe_model() const; + SCLLOG(Logical) IsShell_based_wireframe_model() const; + SCLLOG(Logical) IsEdge_based_wireframe_model() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 ... NONE only for complex selects... }; -inline SdaiSelect * create_SdaiWireframe_model () { return new SdaiWireframe_model ; } +#ifdef __OSTORE__ +void SdaiWireframe_model_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiWireframe_model (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiWireframe_model () { return new SdaiWireframe_model; } +#endif + +typedef SdaiWireframe_model * SdaiWireframe_modelH; +typedef SdaiWireframe_model_ptr SdaiWireframe_model_var; -class SdaiWireframe_models : public SelectAggregate { +class SdaiWireframe_models : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiWireframe_model); } + SdaiWireframe_models( SelectTypeDescriptor * =config_control_designt_wireframe_model ); + ~SdaiWireframe_models(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiWireframe_model( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiWireframe_models () { return new SdaiWireframe_models ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiWireframe_models (os_database *db); +#else +inline STEPaggregate * create_SdaiWireframe_models () { return new SdaiWireframe_models; } +#endif -///// END SELECT TYPE wireframe_model +typedef SdaiWireframe_models_ptr SdaiWireframe_models_var; + +///// END SELECT TYPE wireframe_model -////////// SELECT TYPE geometric_set_select -class SdaiGeometric_set_select : public SdaiSelect { +////////// SELECT TYPE SdaiGeometric_set_select +class SdaiGeometric_set_select : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // POINT -- ENTITY_TYPE - // CURVE -- ENTITY_TYPE - // SURFACE -- ENTITY_TYPE - STEPentityH _stepentityh; + // POINT -- sdaiINSTANCE + // CURVE -- sdaiINSTANCE + // SURFACE -- sdaiINSTANCE + SCLP23(Application_instance_ptr) _app_inst; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiGeometric_set_select_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiGeometric_set_select(); +// constructors + SdaiGeometric_set_select( const SelectTypeDescriptor * =config_control_designt_geometric_set_select ); // part 1 - SdaiGeometric_set_select( const SdaiPointH& ); - SdaiGeometric_set_select( const SdaiCurveH& ); - SdaiGeometric_set_select( const SdaiSurfaceH& ); + SdaiGeometric_set_select( const SdaiPoint_ptr&, + const SelectTypeDescriptor * =config_control_designt_geometric_set_select ); + SdaiGeometric_set_select( const SdaiCurve_ptr&, + const SelectTypeDescriptor * =config_control_designt_geometric_set_select ); + SdaiGeometric_set_select( const SdaiSurface_ptr&, + const SelectTypeDescriptor * =config_control_designt_geometric_set_select ); virtual ~SdaiGeometric_set_select(); // part 2 - operator SdaiPointH(); - operator SdaiCurveH(); - operator SdaiSurfaceH(); + operator SdaiPoint_ptr(); + operator SdaiCurve_ptr(); + operator SdaiSurface_ptr(); // part 3 - const SdaiLabel Name() const; - void Name (const char * x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + // part 4 - SdaiGeometric_set_select& operator =( const SdaiPointH& ); - SdaiGeometric_set_select& operator =( const SdaiCurveH& ); - SdaiGeometric_set_select& operator =( const SdaiSurfaceH& ); + SdaiGeometric_set_select& operator =( const SdaiPoint_ptr& ); + SdaiGeometric_set_select& operator =( const SdaiCurve_ptr& ); + SdaiGeometric_set_select& operator =( const SdaiSurface_ptr& ); // not in SDAI SdaiGeometric_set_select& ShallowCopy ( const SdaiGeometric_set_select& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiGeometric_set_select& operator =( const SdaiGeometric_set_selectH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiGeometric_set_select& operator =( SdaiGeometric_set_select * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsPoint() const; - SdaiLogical IsCurve() const; - SdaiLogical IsSurface() const; + SCLLOG(Logical) IsPoint() const; + SCLLOG(Logical) IsCurve() const; + SCLLOG(Logical) IsSurface() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 ... NONE only for complex selects... }; -inline SdaiSelect * create_SdaiGeometric_set_select () { return new SdaiGeometric_set_select ; } +#ifdef __OSTORE__ +void SdaiGeometric_set_select_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiGeometric_set_select (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiGeometric_set_select () { return new SdaiGeometric_set_select; } +#endif + +typedef SdaiGeometric_set_select * SdaiGeometric_set_selectH; +typedef SdaiGeometric_set_select_ptr SdaiGeometric_set_select_var; -class SdaiGeometric_set_selects : public SelectAggregate { +class SdaiGeometric_set_selects : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiGeometric_set_select); } + SdaiGeometric_set_selects( SelectTypeDescriptor * =config_control_designt_geometric_set_select ); + ~SdaiGeometric_set_selects(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiGeometric_set_select( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiGeometric_set_selects () { return new SdaiGeometric_set_selects ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiGeometric_set_selects (os_database *db); +#else +inline STEPaggregate * create_SdaiGeometric_set_selects () { return new SdaiGeometric_set_selects; } +#endif -///// END SELECT TYPE geometric_set_select +typedef SdaiGeometric_set_selects_ptr SdaiGeometric_set_selects_var; + +///// END SELECT TYPE geometric_set_select -////////// SELECT TYPE start_request_item -class SdaiStart_request_item : public SdaiSelect { +////////// SELECT TYPE SdaiStart_request_item +class SdaiStart_request_item : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // PRODUCT_DEFINITION_FORMATION -- ENTITY_TYPE - STEPentityH _stepentityh; + // PRODUCT_DEFINITION_FORMATION -- sdaiINSTANCE + SCLP23(Application_instance_ptr) _app_inst; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiStart_request_item_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiStart_request_item(); +// constructors + SdaiStart_request_item( const SelectTypeDescriptor * =config_control_designt_start_request_item ); // part 1 - SdaiStart_request_item( const SdaiProduct_definition_formationH& ); + SdaiStart_request_item( const SdaiProduct_definition_formation_ptr&, + const SelectTypeDescriptor * =config_control_designt_start_request_item ); virtual ~SdaiStart_request_item(); // part 2 - operator SdaiProduct_definition_formationH(); + operator SdaiProduct_definition_formation_ptr(); // part 3 - SdaiProductH Of_product() const; - void Of_product (SdaiProductH x); - const SdaiText Description() const; - void Description (const char * x); - const SdaiIdentifier Id() const; - void Id (const char * x); + const SdaiProduct_ptr of_product_() const; + void of_product_ (const SdaiProduct_ptr x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiIdentifier id_() const; + void id_ (const SdaiIdentifier x); + // part 4 - SdaiStart_request_item& operator =( const SdaiProduct_definition_formationH& ); + SdaiStart_request_item& operator =( const SdaiProduct_definition_formation_ptr& ); // not in SDAI SdaiStart_request_item& ShallowCopy ( const SdaiStart_request_item& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiStart_request_item& operator =( const SdaiStart_request_itemH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiStart_request_item& operator =( SdaiStart_request_item * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsProduct_definition_formation() const; + SCLLOG(Logical) IsProduct_definition_formation() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 ... NONE only for complex selects... }; -inline SdaiSelect * create_SdaiStart_request_item () { return new SdaiStart_request_item ; } +#ifdef __OSTORE__ +void SdaiStart_request_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiStart_request_item (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiStart_request_item () { return new SdaiStart_request_item; } +#endif + +typedef SdaiStart_request_item * SdaiStart_request_itemH; +typedef SdaiStart_request_item_ptr SdaiStart_request_item_var; -class SdaiStart_request_items : public SelectAggregate { +class SdaiStart_request_items : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiStart_request_item); } + SdaiStart_request_items( SelectTypeDescriptor * =config_control_designt_start_request_item ); + ~SdaiStart_request_items(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiStart_request_item( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiStart_request_items () { return new SdaiStart_request_items ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiStart_request_items (os_database *db); +#else +inline STEPaggregate * create_SdaiStart_request_items () { return new SdaiStart_request_items; } +#endif -///// END SELECT TYPE start_request_item +typedef SdaiStart_request_items_ptr SdaiStart_request_items_var; + +///// END SELECT TYPE start_request_item -////////// SELECT TYPE person_organization_item -class SdaiPerson_organization_item : public SdaiSelect { +////////// SELECT TYPE SdaiPerson_organization_item +class SdaiPerson_organization_item : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // CHANGE -- ENTITY_TYPE - // START_WORK -- ENTITY_TYPE - // CHANGE_REQUEST -- ENTITY_TYPE - // START_REQUEST -- ENTITY_TYPE - // CONFIGURATION_ITEM -- ENTITY_TYPE - // PRODUCT -- ENTITY_TYPE - // PRODUCT_DEFINITION_FORMATION -- ENTITY_TYPE - // PRODUCT_DEFINITION -- ENTITY_TYPE - // CONTRACT -- ENTITY_TYPE - // SECURITY_CLASSIFICATION -- ENTITY_TYPE - STEPentityH _stepentityh; + // CHANGE -- sdaiINSTANCE + // START_WORK -- sdaiINSTANCE + // CHANGE_REQUEST -- sdaiINSTANCE + // START_REQUEST -- sdaiINSTANCE + // CONFIGURATION_ITEM -- sdaiINSTANCE + // PRODUCT -- sdaiINSTANCE + // PRODUCT_DEFINITION_FORMATION -- sdaiINSTANCE + // PRODUCT_DEFINITION -- sdaiINSTANCE + // CONTRACT -- sdaiINSTANCE + // SECURITY_CLASSIFICATION -- sdaiINSTANCE + SCLP23(Application_instance_ptr) _app_inst; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiPerson_organization_item_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiPerson_organization_item(); +// constructors + SdaiPerson_organization_item( const SelectTypeDescriptor * =config_control_designt_person_organization_item ); // part 1 - SdaiPerson_organization_item( const SdaiChangeH& ); - SdaiPerson_organization_item( const SdaiStart_workH& ); - SdaiPerson_organization_item( const SdaiChange_requestH& ); - SdaiPerson_organization_item( const SdaiStart_requestH& ); - SdaiPerson_organization_item( const SdaiConfiguration_itemH& ); - SdaiPerson_organization_item( const SdaiProductH& ); - SdaiPerson_organization_item( const SdaiProduct_definition_formationH& ); - SdaiPerson_organization_item( const SdaiProduct_definitionH& ); - SdaiPerson_organization_item( const SdaiContractH& ); - SdaiPerson_organization_item( const SdaiSecurity_classificationH& ); + SdaiPerson_organization_item( const SdaiChange_ptr&, + const SelectTypeDescriptor * =config_control_designt_person_organization_item ); + SdaiPerson_organization_item( const SdaiStart_work_ptr&, + const SelectTypeDescriptor * =config_control_designt_person_organization_item ); + SdaiPerson_organization_item( const SdaiChange_request_ptr&, + const SelectTypeDescriptor * =config_control_designt_person_organization_item ); + SdaiPerson_organization_item( const SdaiStart_request_ptr&, + const SelectTypeDescriptor * =config_control_designt_person_organization_item ); + SdaiPerson_organization_item( const SdaiConfiguration_item_ptr&, + const SelectTypeDescriptor * =config_control_designt_person_organization_item ); + SdaiPerson_organization_item( const SdaiProduct_ptr&, + const SelectTypeDescriptor * =config_control_designt_person_organization_item ); + SdaiPerson_organization_item( const SdaiProduct_definition_formation_ptr&, + const SelectTypeDescriptor * =config_control_designt_person_organization_item ); + SdaiPerson_organization_item( const SdaiProduct_definition_ptr&, + const SelectTypeDescriptor * =config_control_designt_person_organization_item ); + SdaiPerson_organization_item( const SdaiContract_ptr&, + const SelectTypeDescriptor * =config_control_designt_person_organization_item ); + SdaiPerson_organization_item( const SdaiSecurity_classification_ptr&, + const SelectTypeDescriptor * =config_control_designt_person_organization_item ); virtual ~SdaiPerson_organization_item(); // part 2 - operator SdaiChangeH(); - operator SdaiStart_workH(); - operator SdaiChange_requestH(); - operator SdaiStart_requestH(); - operator SdaiConfiguration_itemH(); - operator SdaiProductH(); - operator SdaiProduct_definition_formationH(); - operator SdaiProduct_definitionH(); - operator SdaiContractH(); - operator SdaiSecurity_classificationH(); + operator SdaiChange_ptr(); + operator SdaiStart_work_ptr(); + operator SdaiChange_request_ptr(); + operator SdaiStart_request_ptr(); + operator SdaiConfiguration_item_ptr(); + operator SdaiProduct_ptr(); + operator SdaiProduct_definition_formation_ptr(); + operator SdaiProduct_definition_ptr(); + operator SdaiContract_ptr(); + operator SdaiSecurity_classification_ptr(); // part 3 - SdaiSecurity_classification_levelH Security_level() const; - void Security_level (SdaiSecurity_classification_levelH x); - SdaiContract_typeH Kind() const; - void Kind (SdaiContract_typeH x); - SdaiProduct_definition_formationH Formation() const; - void Formation (SdaiProduct_definition_formationH x); - SdaiProductH Of_product() const; - void Of_product (SdaiProductH x); - const EntityAggregateH Frame_of_reference() const; - void Frame_of_reference (EntityAggregateH x); - const SdaiLabel Purpose() const; - void Purpose (const char * x); - SdaiProduct_conceptH Item_concept() const; - void Item_concept (SdaiProduct_conceptH x); - const SdaiText Description() const; - void Description (const char * x); - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiIdentifier Id() const; - void Id (const char * x); - SdaiVersioned_action_requestH Assigned_action_request() const; - void Assigned_action_request (SdaiVersioned_action_requestH x); - const SdaiWork_itemsH Items() const; - void Items (SdaiWork_itemsH x); - SdaiActionH Assigned_action() const; - void Assigned_action (SdaiActionH x); + const SdaiSecurity_classification_level_ptr security_level_() const; + void security_level_ (const SdaiSecurity_classification_level_ptr x); + + const SdaiContract_type_ptr kind_() const; + void kind_ (const SdaiContract_type_ptr x); + + const SdaiProduct_definition_formation_ptr formation_() const; + void formation_ (const SdaiProduct_definition_formation_ptr x); + + const SdaiProduct_ptr of_product_() const; + void of_product_ (const SdaiProduct_ptr x); + + const EntityAggregate_ptr frame_of_reference_() const; + void frame_of_reference_ (const EntityAggregate_ptr x); + + const SdaiLabel purpose_() const; + void purpose_ (const SdaiLabel x); + + const SdaiProduct_concept_ptr item_concept_() const; + void item_concept_ (const SdaiProduct_concept_ptr x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiIdentifier id_() const; + void id_ (const SdaiIdentifier x); + + const SdaiVersioned_action_request_ptr assigned_action_request_() const; + void assigned_action_request_ (const SdaiVersioned_action_request_ptr x); + + const SdaiWork_items_ptr items_() const; + void items_ (const SdaiWork_items_ptr x); + + const SdaiAction_ptr assigned_action_() const; + void assigned_action_ (const SdaiAction_ptr x); + // part 4 - SdaiPerson_organization_item& operator =( const SdaiChangeH& ); - SdaiPerson_organization_item& operator =( const SdaiStart_workH& ); - SdaiPerson_organization_item& operator =( const SdaiChange_requestH& ); - SdaiPerson_organization_item& operator =( const SdaiStart_requestH& ); - SdaiPerson_organization_item& operator =( const SdaiConfiguration_itemH& ); - SdaiPerson_organization_item& operator =( const SdaiProductH& ); - SdaiPerson_organization_item& operator =( const SdaiProduct_definition_formationH& ); - SdaiPerson_organization_item& operator =( const SdaiProduct_definitionH& ); - SdaiPerson_organization_item& operator =( const SdaiContractH& ); - SdaiPerson_organization_item& operator =( const SdaiSecurity_classificationH& ); + SdaiPerson_organization_item& operator =( const SdaiChange_ptr& ); + SdaiPerson_organization_item& operator =( const SdaiStart_work_ptr& ); + SdaiPerson_organization_item& operator =( const SdaiChange_request_ptr& ); + SdaiPerson_organization_item& operator =( const SdaiStart_request_ptr& ); + SdaiPerson_organization_item& operator =( const SdaiConfiguration_item_ptr& ); + SdaiPerson_organization_item& operator =( const SdaiProduct_ptr& ); + SdaiPerson_organization_item& operator =( const SdaiProduct_definition_formation_ptr& ); + SdaiPerson_organization_item& operator =( const SdaiProduct_definition_ptr& ); + SdaiPerson_organization_item& operator =( const SdaiContract_ptr& ); + SdaiPerson_organization_item& operator =( const SdaiSecurity_classification_ptr& ); // not in SDAI SdaiPerson_organization_item& ShallowCopy ( const SdaiPerson_organization_item& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiPerson_organization_item& operator =( const SdaiPerson_organization_itemH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiPerson_organization_item& operator =( SdaiPerson_organization_item * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsChange() const; - SdaiLogical IsStart_work() const; - SdaiLogical IsChange_request() const; - SdaiLogical IsStart_request() const; - SdaiLogical IsConfiguration_item() const; - SdaiLogical IsProduct() const; - SdaiLogical IsProduct_definition_formation() const; - SdaiLogical IsProduct_definition() const; - SdaiLogical IsContract() const; - SdaiLogical IsSecurity_classification() const; + SCLLOG(Logical) IsChange() const; + SCLLOG(Logical) IsStart_work() const; + SCLLOG(Logical) IsChange_request() const; + SCLLOG(Logical) IsStart_request() const; + SCLLOG(Logical) IsConfiguration_item() const; + SCLLOG(Logical) IsProduct() const; + SCLLOG(Logical) IsProduct_definition_formation() const; + SCLLOG(Logical) IsProduct_definition() const; + SCLLOG(Logical) IsContract() const; + SCLLOG(Logical) IsSecurity_classification() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 ... NONE only for complex selects... }; -inline SdaiSelect * create_SdaiPerson_organization_item () { return new SdaiPerson_organization_item ; } +#ifdef __OSTORE__ +void SdaiPerson_organization_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiPerson_organization_item (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiPerson_organization_item () { return new SdaiPerson_organization_item; } +#endif + +typedef SdaiPerson_organization_item * SdaiPerson_organization_itemH; +typedef SdaiPerson_organization_item_ptr SdaiPerson_organization_item_var; -class SdaiPerson_organization_items : public SelectAggregate { +class SdaiPerson_organization_items : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiPerson_organization_item); } + SdaiPerson_organization_items( SelectTypeDescriptor * =config_control_designt_person_organization_item ); + ~SdaiPerson_organization_items(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiPerson_organization_item( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiPerson_organization_items () { return new SdaiPerson_organization_items ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiPerson_organization_items (os_database *db); +#else +inline STEPaggregate * create_SdaiPerson_organization_items () { return new SdaiPerson_organization_items; } +#endif -///// END SELECT TYPE person_organization_item +typedef SdaiPerson_organization_items_ptr SdaiPerson_organization_items_var; + +///// END SELECT TYPE person_organization_item -////////// SELECT TYPE date_time_item -class SdaiDate_time_item : public SdaiSelect { +////////// SELECT TYPE SdaiDate_time_item +class SdaiDate_time_item : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // PRODUCT_DEFINITION -- ENTITY_TYPE - // CHANGE_REQUEST -- ENTITY_TYPE - // START_REQUEST -- ENTITY_TYPE - // CHANGE -- ENTITY_TYPE - // START_WORK -- ENTITY_TYPE - // APPROVAL_PERSON_ORGANIZATION -- ENTITY_TYPE - // CONTRACT -- ENTITY_TYPE - // SECURITY_CLASSIFICATION -- ENTITY_TYPE - // CERTIFICATION -- ENTITY_TYPE - STEPentityH _stepentityh; + // PRODUCT_DEFINITION -- sdaiINSTANCE + // CHANGE_REQUEST -- sdaiINSTANCE + // START_REQUEST -- sdaiINSTANCE + // CHANGE -- sdaiINSTANCE + // START_WORK -- sdaiINSTANCE + // APPROVAL_PERSON_ORGANIZATION -- sdaiINSTANCE + // CONTRACT -- sdaiINSTANCE + // SECURITY_CLASSIFICATION -- sdaiINSTANCE + // CERTIFICATION -- sdaiINSTANCE + SCLP23(Application_instance_ptr) _app_inst; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiDate_time_item_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiDate_time_item(); +// constructors + SdaiDate_time_item( const SelectTypeDescriptor * =config_control_designt_date_time_item ); // part 1 - SdaiDate_time_item( const SdaiProduct_definitionH& ); - SdaiDate_time_item( const SdaiChange_requestH& ); - SdaiDate_time_item( const SdaiStart_requestH& ); - SdaiDate_time_item( const SdaiChangeH& ); - SdaiDate_time_item( const SdaiStart_workH& ); - SdaiDate_time_item( const SdaiApproval_person_organizationH& ); - SdaiDate_time_item( const SdaiContractH& ); - SdaiDate_time_item( const SdaiSecurity_classificationH& ); - SdaiDate_time_item( const SdaiCertificationH& ); + SdaiDate_time_item( const SdaiProduct_definition_ptr&, + const SelectTypeDescriptor * =config_control_designt_date_time_item ); + SdaiDate_time_item( const SdaiChange_request_ptr&, + const SelectTypeDescriptor * =config_control_designt_date_time_item ); + SdaiDate_time_item( const SdaiStart_request_ptr&, + const SelectTypeDescriptor * =config_control_designt_date_time_item ); + SdaiDate_time_item( const SdaiChange_ptr&, + const SelectTypeDescriptor * =config_control_designt_date_time_item ); + SdaiDate_time_item( const SdaiStart_work_ptr&, + const SelectTypeDescriptor * =config_control_designt_date_time_item ); + SdaiDate_time_item( const SdaiApproval_person_organization_ptr&, + const SelectTypeDescriptor * =config_control_designt_date_time_item ); + SdaiDate_time_item( const SdaiContract_ptr&, + const SelectTypeDescriptor * =config_control_designt_date_time_item ); + SdaiDate_time_item( const SdaiSecurity_classification_ptr&, + const SelectTypeDescriptor * =config_control_designt_date_time_item ); + SdaiDate_time_item( const SdaiCertification_ptr&, + const SelectTypeDescriptor * =config_control_designt_date_time_item ); virtual ~SdaiDate_time_item(); // part 2 - operator SdaiProduct_definitionH(); - operator SdaiChange_requestH(); - operator SdaiStart_requestH(); - operator SdaiChangeH(); - operator SdaiStart_workH(); - operator SdaiApproval_person_organizationH(); - operator SdaiContractH(); - operator SdaiSecurity_classificationH(); - operator SdaiCertificationH(); + operator SdaiProduct_definition_ptr(); + operator SdaiChange_request_ptr(); + operator SdaiStart_request_ptr(); + operator SdaiChange_ptr(); + operator SdaiStart_work_ptr(); + operator SdaiApproval_person_organization_ptr(); + operator SdaiContract_ptr(); + operator SdaiSecurity_classification_ptr(); + operator SdaiCertification_ptr(); // part 3 - SdaiSecurity_classification_levelH Security_level() const; - void Security_level (SdaiSecurity_classification_levelH x); - SdaiContract_typeH Kind() const; - void Kind (SdaiContract_typeH x); - const SdaiText Purpose() const; - void Purpose (const char * x); - const SdaiLabel Name() const; - void Name (const char * x); - SdaiApproval_roleH Role() const; - void Role (SdaiApproval_roleH x); - SdaiApprovalH Authorized_approval() const; - void Authorized_approval (SdaiApprovalH x); - const SdaiPerson_organization_selectH Person_organization() const; - void Person_organization (SdaiPerson_organization_selectH x); - SdaiActionH Assigned_action() const; - void Assigned_action (SdaiActionH x); - const SdaiChange_request_itemsH Items() const; - void Items (SdaiChange_request_itemsH x); - SdaiVersioned_action_requestH Assigned_action_request() const; - void Assigned_action_request (SdaiVersioned_action_requestH x); - SdaiProduct_definition_contextH Frame_of_reference() const; - void Frame_of_reference (SdaiProduct_definition_contextH x); - SdaiProduct_definition_formationH Formation() const; - void Formation (SdaiProduct_definition_formationH x); - const SdaiText Description() const; - void Description (const char * x); - const SdaiIdentifier Id() const; - void Id (const char * x); + const SdaiSecurity_classification_level_ptr security_level_() const; + void security_level_ (const SdaiSecurity_classification_level_ptr x); + + const SdaiContract_type_ptr kind_() const; + void kind_ (const SdaiContract_type_ptr x); + + const SdaiText purpose_() const; + void purpose_ (const SdaiText x); + + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiApproval_role_ptr role_() const; + void role_ (const SdaiApproval_role_ptr x); + + const SdaiApproval_ptr authorized_approval_() const; + void authorized_approval_ (const SdaiApproval_ptr x); + + const SdaiPerson_organization_select_ptr person_organization_() const; + void person_organization_ (const SdaiPerson_organization_select_ptr x); + + const SdaiAction_ptr assigned_action_() const; + void assigned_action_ (const SdaiAction_ptr x); + + const SdaiChange_request_items_ptr items_() const; + void items_ (const SdaiChange_request_items_ptr x); + + const SdaiVersioned_action_request_ptr assigned_action_request_() const; + void assigned_action_request_ (const SdaiVersioned_action_request_ptr x); + + const SdaiProduct_definition_context_ptr frame_of_reference_() const; + void frame_of_reference_ (const SdaiProduct_definition_context_ptr x); + + const SdaiProduct_definition_formation_ptr formation_() const; + void formation_ (const SdaiProduct_definition_formation_ptr x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiIdentifier id_() const; + void id_ (const SdaiIdentifier x); + // part 4 - SdaiDate_time_item& operator =( const SdaiProduct_definitionH& ); - SdaiDate_time_item& operator =( const SdaiChange_requestH& ); - SdaiDate_time_item& operator =( const SdaiStart_requestH& ); - SdaiDate_time_item& operator =( const SdaiChangeH& ); - SdaiDate_time_item& operator =( const SdaiStart_workH& ); - SdaiDate_time_item& operator =( const SdaiApproval_person_organizationH& ); - SdaiDate_time_item& operator =( const SdaiContractH& ); - SdaiDate_time_item& operator =( const SdaiSecurity_classificationH& ); - SdaiDate_time_item& operator =( const SdaiCertificationH& ); + SdaiDate_time_item& operator =( const SdaiProduct_definition_ptr& ); + SdaiDate_time_item& operator =( const SdaiChange_request_ptr& ); + SdaiDate_time_item& operator =( const SdaiStart_request_ptr& ); + SdaiDate_time_item& operator =( const SdaiChange_ptr& ); + SdaiDate_time_item& operator =( const SdaiStart_work_ptr& ); + SdaiDate_time_item& operator =( const SdaiApproval_person_organization_ptr& ); + SdaiDate_time_item& operator =( const SdaiContract_ptr& ); + SdaiDate_time_item& operator =( const SdaiSecurity_classification_ptr& ); + SdaiDate_time_item& operator =( const SdaiCertification_ptr& ); // not in SDAI SdaiDate_time_item& ShallowCopy ( const SdaiDate_time_item& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiDate_time_item& operator =( const SdaiDate_time_itemH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiDate_time_item& operator =( SdaiDate_time_item * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsProduct_definition() const; - SdaiLogical IsChange_request() const; - SdaiLogical IsStart_request() const; - SdaiLogical IsChange() const; - SdaiLogical IsStart_work() const; - SdaiLogical IsApproval_person_organization() const; - SdaiLogical IsContract() const; - SdaiLogical IsSecurity_classification() const; - SdaiLogical IsCertification() const; + SCLLOG(Logical) IsProduct_definition() const; + SCLLOG(Logical) IsChange_request() const; + SCLLOG(Logical) IsStart_request() const; + SCLLOG(Logical) IsChange() const; + SCLLOG(Logical) IsStart_work() const; + SCLLOG(Logical) IsApproval_person_organization() const; + SCLLOG(Logical) IsContract() const; + SCLLOG(Logical) IsSecurity_classification() const; + SCLLOG(Logical) IsCertification() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 ... NONE only for complex selects... }; -inline SdaiSelect * create_SdaiDate_time_item () { return new SdaiDate_time_item ; } +#ifdef __OSTORE__ +void SdaiDate_time_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiDate_time_item (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiDate_time_item () { return new SdaiDate_time_item; } +#endif + +typedef SdaiDate_time_item * SdaiDate_time_itemH; +typedef SdaiDate_time_item_ptr SdaiDate_time_item_var; -class SdaiDate_time_items : public SelectAggregate { +class SdaiDate_time_items : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiDate_time_item); } + SdaiDate_time_items( SelectTypeDescriptor * =config_control_designt_date_time_item ); + ~SdaiDate_time_items(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiDate_time_item( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiDate_time_items () { return new SdaiDate_time_items ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiDate_time_items (os_database *db); +#else +inline STEPaggregate * create_SdaiDate_time_items () { return new SdaiDate_time_items; } +#endif -///// END SELECT TYPE date_time_item +typedef SdaiDate_time_items_ptr SdaiDate_time_items_var; + +///// END SELECT TYPE date_time_item -////////// SELECT TYPE shell -class SdaiShell : public SdaiSelect { +////////// SELECT TYPE SdaiShell +class SdaiShell : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // OPEN_SHELL -- ENTITY_TYPE - // CLOSED_SHELL -- ENTITY_TYPE - // VERTEX_SHELL -- ENTITY_TYPE - // WIRE_SHELL -- ENTITY_TYPE - STEPentityH _stepentityh; + // OPEN_SHELL -- sdaiINSTANCE + // CLOSED_SHELL -- sdaiINSTANCE + // VERTEX_SHELL -- sdaiINSTANCE + // WIRE_SHELL -- sdaiINSTANCE + SCLP23(Application_instance_ptr) _app_inst; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiShell_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiShell(); +// constructors + SdaiShell( const SelectTypeDescriptor * =config_control_designt_shell ); // part 1 - SdaiShell( const SdaiOpen_shellH& ); - SdaiShell( const SdaiClosed_shellH& ); - SdaiShell( const SdaiVertex_shellH& ); - SdaiShell( const SdaiWire_shellH& ); + SdaiShell( const SdaiOpen_shell_ptr&, + const SelectTypeDescriptor * =config_control_designt_shell ); + SdaiShell( const SdaiClosed_shell_ptr&, + const SelectTypeDescriptor * =config_control_designt_shell ); + SdaiShell( const SdaiVertex_shell_ptr&, + const SelectTypeDescriptor * =config_control_designt_shell ); + SdaiShell( const SdaiWire_shell_ptr&, + const SelectTypeDescriptor * =config_control_designt_shell ); virtual ~SdaiShell(); // part 2 - operator SdaiOpen_shellH(); - operator SdaiClosed_shellH(); - operator SdaiVertex_shellH(); - operator SdaiWire_shellH(); + operator SdaiOpen_shell_ptr(); + operator SdaiClosed_shell_ptr(); + operator SdaiVertex_shell_ptr(); + operator SdaiWire_shell_ptr(); // part 3 - const EntityAggregateH Wire_shell_extent() const; - void Wire_shell_extent (EntityAggregateH x); - SdaiVertex_loopH Vertex_shell_extent() const; - void Vertex_shell_extent (SdaiVertex_loopH x); - const EntityAggregateH Cfs_faces() const; - void Cfs_faces (EntityAggregateH x); - const SdaiLabel Name() const; - void Name (const char * x); + const EntityAggregate_ptr wire_shell_extent_() const; + void wire_shell_extent_ (const EntityAggregate_ptr x); + + const SdaiVertex_loop_ptr vertex_shell_extent_() const; + void vertex_shell_extent_ (const SdaiVertex_loop_ptr x); + + const EntityAggregate_ptr cfs_faces_() const; + void cfs_faces_ (const EntityAggregate_ptr x); + + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + // part 4 - SdaiShell& operator =( const SdaiOpen_shellH& ); - SdaiShell& operator =( const SdaiClosed_shellH& ); - SdaiShell& operator =( const SdaiVertex_shellH& ); - SdaiShell& operator =( const SdaiWire_shellH& ); + SdaiShell& operator =( const SdaiOpen_shell_ptr& ); + SdaiShell& operator =( const SdaiClosed_shell_ptr& ); + SdaiShell& operator =( const SdaiVertex_shell_ptr& ); + SdaiShell& operator =( const SdaiWire_shell_ptr& ); // not in SDAI SdaiShell& ShallowCopy ( const SdaiShell& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiShell& operator =( const SdaiShellH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiShell& operator =( SdaiShell * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsOpen_shell() const; - SdaiLogical IsClosed_shell() const; - SdaiLogical IsVertex_shell() const; - SdaiLogical IsWire_shell() const; + SCLLOG(Logical) IsOpen_shell() const; + SCLLOG(Logical) IsClosed_shell() const; + SCLLOG(Logical) IsVertex_shell() const; + SCLLOG(Logical) IsWire_shell() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 ... NONE only for complex selects... }; -inline SdaiSelect * create_SdaiShell () { return new SdaiShell ; } +#ifdef __OSTORE__ +void SdaiShell_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiShell (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiShell () { return new SdaiShell; } +#endif + +typedef SdaiShell * SdaiShellH; +typedef SdaiShell_ptr SdaiShell_var; -class SdaiShells : public SelectAggregate { +class SdaiShells : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiShell); } + SdaiShells( SelectTypeDescriptor * =config_control_designt_shell ); + ~SdaiShells(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiShell( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiShells () { return new SdaiShells ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiShells (os_database *db); +#else +inline STEPaggregate * create_SdaiShells () { return new SdaiShells; } +#endif -///// END SELECT TYPE shell +typedef SdaiShells_ptr SdaiShells_var; + +///// END SELECT TYPE shell -////////// SELECT TYPE transformation -class SdaiTransformation : public SdaiSelect { +////////// SELECT TYPE SdaiTransformation +class SdaiTransformation : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // ITEM_DEFINED_TRANSFORMATION -- ENTITY_TYPE - // FUNCTIONALLY_DEFINED_TRANSFORMATION -- ENTITY_TYPE - STEPentityH _stepentityh; + // ITEM_DEFINED_TRANSFORMATION -- sdaiINSTANCE + // FUNCTIONALLY_DEFINED_TRANSFORMATION -- sdaiINSTANCE + SCLP23(Application_instance_ptr) _app_inst; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiTransformation_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiTransformation(); +// constructors + SdaiTransformation( const SelectTypeDescriptor * =config_control_designt_transformation ); // part 1 - SdaiTransformation( const SdaiItem_defined_transformationH& ); - SdaiTransformation( const SdaiFunctionally_defined_transformationH& ); + SdaiTransformation( const SdaiItem_defined_transformation_ptr&, + const SelectTypeDescriptor * =config_control_designt_transformation ); + SdaiTransformation( const SdaiFunctionally_defined_transformation_ptr&, + const SelectTypeDescriptor * =config_control_designt_transformation ); virtual ~SdaiTransformation(); // part 2 - operator SdaiItem_defined_transformationH(); - operator SdaiFunctionally_defined_transformationH(); + operator SdaiItem_defined_transformation_ptr(); + operator SdaiFunctionally_defined_transformation_ptr(); // part 3 - SdaiRepresentation_itemH Transform_item_2() const; - void Transform_item_2 (SdaiRepresentation_itemH x); - SdaiRepresentation_itemH Transform_item_1() const; - void Transform_item_1 (SdaiRepresentation_itemH x); - const SdaiText Description() const; - void Description (const char * x); - const SdaiLabel Name() const; - void Name (const char * x); + const SdaiRepresentation_item_ptr transform_item_2_() const; + void transform_item_2_ (const SdaiRepresentation_item_ptr x); + + const SdaiRepresentation_item_ptr transform_item_1_() const; + void transform_item_1_ (const SdaiRepresentation_item_ptr x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + // part 4 - SdaiTransformation& operator =( const SdaiItem_defined_transformationH& ); - SdaiTransformation& operator =( const SdaiFunctionally_defined_transformationH& ); + SdaiTransformation& operator =( const SdaiItem_defined_transformation_ptr& ); + SdaiTransformation& operator =( const SdaiFunctionally_defined_transformation_ptr& ); // not in SDAI SdaiTransformation& ShallowCopy ( const SdaiTransformation& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiTransformation& operator =( const SdaiTransformationH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiTransformation& operator =( SdaiTransformation * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsItem_defined_transformation() const; - SdaiLogical IsFunctionally_defined_transformation() const; + SCLLOG(Logical) IsItem_defined_transformation() const; + SCLLOG(Logical) IsFunctionally_defined_transformation() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 ... NONE only for complex selects... }; -inline SdaiSelect * create_SdaiTransformation () { return new SdaiTransformation ; } +#ifdef __OSTORE__ +void SdaiTransformation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiTransformation (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiTransformation () { return new SdaiTransformation; } +#endif + +typedef SdaiTransformation * SdaiTransformationH; +typedef SdaiTransformation_ptr SdaiTransformation_var; -class SdaiTransformations : public SelectAggregate { +class SdaiTransformations : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiTransformation); } + SdaiTransformations( SelectTypeDescriptor * =config_control_designt_transformation ); + ~SdaiTransformations(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiTransformation( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiTransformations () { return new SdaiTransformations ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiTransformations (os_database *db); +#else +inline STEPaggregate * create_SdaiTransformations () { return new SdaiTransformations; } +#endif -///// END SELECT TYPE transformation +typedef SdaiTransformations_ptr SdaiTransformations_var; + +///// END SELECT TYPE transformation -////////// SELECT TYPE boolean_operand -class SdaiBoolean_operand : public SdaiSelect { +////////// SELECT TYPE SdaiBoolean_operand +class SdaiBoolean_operand : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // SOLID_MODEL -- ENTITY_TYPE - STEPentityH _stepentityh; + // SOLID_MODEL -- sdaiINSTANCE + SCLP23(Application_instance_ptr) _app_inst; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiBoolean_operand_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiBoolean_operand(); +// constructors + SdaiBoolean_operand( const SelectTypeDescriptor * =config_control_designt_boolean_operand ); // part 1 - SdaiBoolean_operand( const SdaiSolid_modelH& ); + SdaiBoolean_operand( const SdaiSolid_model_ptr&, + const SelectTypeDescriptor * =config_control_designt_boolean_operand ); virtual ~SdaiBoolean_operand(); // part 2 - operator SdaiSolid_modelH(); + operator SdaiSolid_model_ptr(); // part 3 - const SdaiLabel Name() const; - void Name (const char * x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + // part 4 - SdaiBoolean_operand& operator =( const SdaiSolid_modelH& ); + SdaiBoolean_operand& operator =( const SdaiSolid_model_ptr& ); // not in SDAI SdaiBoolean_operand& ShallowCopy ( const SdaiBoolean_operand& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiBoolean_operand& operator =( const SdaiBoolean_operandH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiBoolean_operand& operator =( SdaiBoolean_operand * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsSolid_model() const; + SCLLOG(Logical) IsSolid_model() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 ... NONE only for complex selects... }; -inline SdaiSelect * create_SdaiBoolean_operand () { return new SdaiBoolean_operand ; } +#ifdef __OSTORE__ +void SdaiBoolean_operand_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiBoolean_operand (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiBoolean_operand () { return new SdaiBoolean_operand; } +#endif + +typedef SdaiBoolean_operand * SdaiBoolean_operandH; +typedef SdaiBoolean_operand_ptr SdaiBoolean_operand_var; -class SdaiBoolean_operands : public SelectAggregate { +class SdaiBoolean_operands : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiBoolean_operand); } + SdaiBoolean_operands( SelectTypeDescriptor * =config_control_designt_boolean_operand ); + ~SdaiBoolean_operands(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiBoolean_operand( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiBoolean_operands () { return new SdaiBoolean_operands ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiBoolean_operands (os_database *db); +#else +inline STEPaggregate * create_SdaiBoolean_operands () { return new SdaiBoolean_operands; } +#endif -///// END SELECT TYPE boolean_operand +typedef SdaiBoolean_operands_ptr SdaiBoolean_operands_var; + +///// END SELECT TYPE boolean_operand -////////// SELECT TYPE certified_item -class SdaiCertified_item : public SdaiSelect { +////////// SELECT TYPE SdaiCertified_item +class SdaiCertified_item : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // SUPPLIED_PART_RELATIONSHIP -- ENTITY_TYPE - STEPentityH _stepentityh; + // SUPPLIED_PART_RELATIONSHIP -- sdaiINSTANCE + SCLP23(Application_instance_ptr) _app_inst; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiCertified_item_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiCertified_item(); +// constructors + SdaiCertified_item( const SelectTypeDescriptor * =config_control_designt_certified_item ); // part 1 - SdaiCertified_item( const SdaiSupplied_part_relationshipH& ); + SdaiCertified_item( const SdaiSupplied_part_relationship_ptr&, + const SelectTypeDescriptor * =config_control_designt_certified_item ); virtual ~SdaiCertified_item(); // part 2 - operator SdaiSupplied_part_relationshipH(); + operator SdaiSupplied_part_relationship_ptr(); // part 3 - SdaiProduct_definitionH Related_product_definition() const; - void Related_product_definition (SdaiProduct_definitionH x); - SdaiProduct_definitionH Relating_product_definition() const; - void Relating_product_definition (SdaiProduct_definitionH x); - const SdaiText Description() const; - void Description (const char * x); - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiIdentifier Id() const; - void Id (const char * x); + const SdaiProduct_definition_ptr related_product_definition_() const; + void related_product_definition_ (const SdaiProduct_definition_ptr x); + + const SdaiProduct_definition_ptr relating_product_definition_() const; + void relating_product_definition_ (const SdaiProduct_definition_ptr x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiIdentifier id_() const; + void id_ (const SdaiIdentifier x); + // part 4 - SdaiCertified_item& operator =( const SdaiSupplied_part_relationshipH& ); + SdaiCertified_item& operator =( const SdaiSupplied_part_relationship_ptr& ); // not in SDAI SdaiCertified_item& ShallowCopy ( const SdaiCertified_item& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiCertified_item& operator =( const SdaiCertified_itemH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiCertified_item& operator =( SdaiCertified_item * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsSupplied_part_relationship() const; + SCLLOG(Logical) IsSupplied_part_relationship() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 ... NONE only for complex selects... }; -inline SdaiSelect * create_SdaiCertified_item () { return new SdaiCertified_item ; } +#ifdef __OSTORE__ +void SdaiCertified_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiCertified_item (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiCertified_item () { return new SdaiCertified_item; } +#endif + +typedef SdaiCertified_item * SdaiCertified_itemH; +typedef SdaiCertified_item_ptr SdaiCertified_item_var; -class SdaiCertified_items : public SelectAggregate { +class SdaiCertified_items : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiCertified_item); } + SdaiCertified_items( SelectTypeDescriptor * =config_control_designt_certified_item ); + ~SdaiCertified_items(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiCertified_item( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiCertified_items () { return new SdaiCertified_items ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiCertified_items (os_database *db); +#else +inline STEPaggregate * create_SdaiCertified_items () { return new SdaiCertified_items; } +#endif -///// END SELECT TYPE certified_item +typedef SdaiCertified_items_ptr SdaiCertified_items_var; + +///// END SELECT TYPE certified_item -////////// SELECT TYPE date_time_select -class SdaiDate_time_select : public SdaiSelect { +////////// SELECT TYPE SdaiDate_time_select +class SdaiDate_time_select : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // DATE_AND_TIME -- ENTITY_TYPE - STEPentityH _stepentityh; + // DATE_AND_TIME -- sdaiINSTANCE + SCLP23(Application_instance_ptr) _app_inst; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiDate_time_select_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiDate_time_select(); +// constructors + SdaiDate_time_select( const SelectTypeDescriptor * =config_control_designt_date_time_select ); // part 1 - SdaiDate_time_select( const SdaiDate_and_timeH& ); + SdaiDate_time_select( const SdaiDate_and_time_ptr&, + const SelectTypeDescriptor * =config_control_designt_date_time_select ); virtual ~SdaiDate_time_select(); // part 2 - operator SdaiDate_and_timeH(); + operator SdaiDate_and_time_ptr(); // part 3 - SdaiLocal_timeH Time_component() const; - void Time_component (SdaiLocal_timeH x); - SdaiDateH Date_component() const; - void Date_component (SdaiDateH x); + const SdaiLocal_time_ptr time_component_() const; + void time_component_ (const SdaiLocal_time_ptr x); + + const SdaiDate_ptr date_component_() const; + void date_component_ (const SdaiDate_ptr x); + // part 4 - SdaiDate_time_select& operator =( const SdaiDate_and_timeH& ); + SdaiDate_time_select& operator =( const SdaiDate_and_time_ptr& ); // not in SDAI SdaiDate_time_select& ShallowCopy ( const SdaiDate_time_select& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiDate_time_select& operator =( const SdaiDate_time_selectH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiDate_time_select& operator =( SdaiDate_time_select * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsDate_and_time() const; + SCLLOG(Logical) IsDate_and_time() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 ... NONE only for complex selects... }; -inline SdaiSelect * create_SdaiDate_time_select () { return new SdaiDate_time_select ; } +#ifdef __OSTORE__ +void SdaiDate_time_select_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiDate_time_select (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiDate_time_select () { return new SdaiDate_time_select; } +#endif + +typedef SdaiDate_time_select * SdaiDate_time_selectH; +typedef SdaiDate_time_select_ptr SdaiDate_time_select_var; -class SdaiDate_time_selects : public SelectAggregate { +class SdaiDate_time_selects : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiDate_time_select); } + SdaiDate_time_selects( SelectTypeDescriptor * =config_control_designt_date_time_select ); + ~SdaiDate_time_selects(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiDate_time_select( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiDate_time_selects () { return new SdaiDate_time_selects ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiDate_time_selects (os_database *db); +#else +inline STEPaggregate * create_SdaiDate_time_selects () { return new SdaiDate_time_selects; } +#endif -///// END SELECT TYPE date_time_select +typedef SdaiDate_time_selects_ptr SdaiDate_time_selects_var; + +///// END SELECT TYPE date_time_select -////////// SELECT TYPE curve_on_surface -class SdaiCurve_on_surface : public SdaiSelect { +////////// SELECT TYPE SdaiCurve_on_surface +class SdaiCurve_on_surface : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // PCURVE -- ENTITY_TYPE - // SURFACE_CURVE -- ENTITY_TYPE - // COMPOSITE_CURVE_ON_SURFACE -- ENTITY_TYPE - STEPentityH _stepentityh; + // PCURVE -- sdaiINSTANCE + // SURFACE_CURVE -- sdaiINSTANCE + // COMPOSITE_CURVE_ON_SURFACE -- sdaiINSTANCE + SCLP23(Application_instance_ptr) _app_inst; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiCurve_on_surface_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiCurve_on_surface(); +// constructors + SdaiCurve_on_surface( const SelectTypeDescriptor * =config_control_designt_curve_on_surface ); // part 1 - SdaiCurve_on_surface( const SdaiPcurveH& ); - SdaiCurve_on_surface( const SdaiSurface_curveH& ); - SdaiCurve_on_surface( const SdaiComposite_curve_on_surfaceH& ); + SdaiCurve_on_surface( const SdaiPcurve_ptr&, + const SelectTypeDescriptor * =config_control_designt_curve_on_surface ); + SdaiCurve_on_surface( const SdaiSurface_curve_ptr&, + const SelectTypeDescriptor * =config_control_designt_curve_on_surface ); + SdaiCurve_on_surface( const SdaiComposite_curve_on_surface_ptr&, + const SelectTypeDescriptor * =config_control_designt_curve_on_surface ); virtual ~SdaiCurve_on_surface(); // part 2 - operator SdaiPcurveH(); - operator SdaiSurface_curveH(); - operator SdaiComposite_curve_on_surfaceH(); + operator SdaiPcurve_ptr(); + operator SdaiSurface_curve_ptr(); + operator SdaiComposite_curve_on_surface_ptr(); // part 3 - const LOGICAL Self_intersect() const; - void Self_intersect (LOGICAL x); - const EntityAggregateH Segments() const; - void Segments (EntityAggregateH x); - const sdaiPreferred_surface_curve_representation Master_representation() const; - void Master_representation (sdaiPreferred_surface_curve_representation x); - const SdaiPcurve_or_surfacesH Associated_geometry() const; - void Associated_geometry (SdaiPcurve_or_surfacesH x); - SdaiCurveH Curve_3d() const; - void Curve_3d (SdaiCurveH x); - SdaiDefinitional_representationH Reference_to_curve() const; - void Reference_to_curve (SdaiDefinitional_representationH x); - SdaiSurfaceH Basis_surface() const; - void Basis_surface (SdaiSurfaceH x); - const SdaiLabel Name() const; - void Name (const char * x); + const SCLLOG(Logical) self_intersect_() const; + void self_intersect_ (const SCLLOG(Logical) x); + + const EntityAggregate_ptr segments_() const; + void segments_ (const EntityAggregate_ptr x); + + const SdaiPreferred_surface_curve_representation_var master_representation_() const; + void master_representation_ (const SdaiPreferred_surface_curve_representation_var x); + + const SdaiPcurve_or_surfaces_ptr associated_geometry_() const; + void associated_geometry_ (const SdaiPcurve_or_surfaces_ptr x); + + const SdaiCurve_ptr curve_3d_() const; + void curve_3d_ (const SdaiCurve_ptr x); + + const SdaiDefinitional_representation_ptr reference_to_curve_() const; + void reference_to_curve_ (const SdaiDefinitional_representation_ptr x); + + const SdaiSurface_ptr basis_surface_() const; + void basis_surface_ (const SdaiSurface_ptr x); + + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + // part 4 - SdaiCurve_on_surface& operator =( const SdaiPcurveH& ); - SdaiCurve_on_surface& operator =( const SdaiSurface_curveH& ); - SdaiCurve_on_surface& operator =( const SdaiComposite_curve_on_surfaceH& ); + SdaiCurve_on_surface& operator =( const SdaiPcurve_ptr& ); + SdaiCurve_on_surface& operator =( const SdaiSurface_curve_ptr& ); + SdaiCurve_on_surface& operator =( const SdaiComposite_curve_on_surface_ptr& ); // not in SDAI SdaiCurve_on_surface& ShallowCopy ( const SdaiCurve_on_surface& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiCurve_on_surface& operator =( const SdaiCurve_on_surfaceH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiCurve_on_surface& operator =( SdaiCurve_on_surface * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsPcurve() const; - SdaiLogical IsSurface_curve() const; - SdaiLogical IsComposite_curve_on_surface() const; + SCLLOG(Logical) IsPcurve() const; + SCLLOG(Logical) IsSurface_curve() const; + SCLLOG(Logical) IsComposite_curve_on_surface() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 ... NONE only for complex selects... }; -inline SdaiSelect * create_SdaiCurve_on_surface () { return new SdaiCurve_on_surface ; } +#ifdef __OSTORE__ +void SdaiCurve_on_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiCurve_on_surface (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiCurve_on_surface () { return new SdaiCurve_on_surface; } +#endif + +typedef SdaiCurve_on_surface * SdaiCurve_on_surfaceH; +typedef SdaiCurve_on_surface_ptr SdaiCurve_on_surface_var; -class SdaiCurve_on_surfaces : public SelectAggregate { +class SdaiCurve_on_surfaces : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiCurve_on_surface); } + SdaiCurve_on_surfaces( SelectTypeDescriptor * =config_control_designt_curve_on_surface ); + ~SdaiCurve_on_surfaces(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiCurve_on_surface( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiCurve_on_surfaces () { return new SdaiCurve_on_surfaces ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiCurve_on_surfaces (os_database *db); +#else +inline STEPaggregate * create_SdaiCurve_on_surfaces () { return new SdaiCurve_on_surfaces; } +#endif -///// END SELECT TYPE curve_on_surface +typedef SdaiCurve_on_surfaces_ptr SdaiCurve_on_surfaces_var; + +///// END SELECT TYPE curve_on_surface -////////// SELECT TYPE trimming_select -class SdaiTrimming_select : public SdaiSelect { +////////// SELECT TYPE SdaiTrimming_select +class SdaiTrimming_select : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // CARTESIAN_POINT -- ENTITY_TYPE - // PARAMETER_VALUE -- REAL_TYPE - SdaiReal _sdaireal; - STEPentityH _stepentityh; + // CARTESIAN_POINT -- sdaiINSTANCE + // PARAMETER_VALUE -- sdaiREAL + SCLP23(Application_instance_ptr) _app_inst; + SCLP23(Real) _real; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiTrimming_select_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiTrimming_select(); +// constructors + SdaiTrimming_select( const SelectTypeDescriptor * =config_control_designt_trimming_select ); // part 1 - SdaiTrimming_select( const SdaiCartesian_pointH& ); - SdaiTrimming_select( const SdaiParameter_value& ); + SdaiTrimming_select( const SdaiCartesian_point_ptr&, + const SelectTypeDescriptor * =config_control_designt_trimming_select ); + SdaiTrimming_select( const SdaiParameter_value&, + const SelectTypeDescriptor * =config_control_designt_trimming_select ); virtual ~SdaiTrimming_select(); // part 2 - operator SdaiCartesian_pointH(); + operator SdaiCartesian_point_ptr(); operator SdaiParameter_value(); // part 3 - const RealAggregateH Coordinates() const; - void Coordinates (RealAggregateH x); - const SdaiLabel Name() const; - void Name (const char * x); + const RealAggregate_ptr coordinates_() const; + void coordinates_ (const RealAggregate_ptr x); + + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + // part 4 - SdaiTrimming_select& operator =( const SdaiCartesian_pointH& ); + SdaiTrimming_select& operator =( const SdaiCartesian_point_ptr& ); SdaiTrimming_select& operator =( const SdaiParameter_value& ); // not in SDAI SdaiTrimming_select& ShallowCopy ( const SdaiTrimming_select& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiTrimming_select& operator =( const SdaiTrimming_selectH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiTrimming_select& operator =( SdaiTrimming_select * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsCartesian_point() const; - SdaiLogical IsParameter_value() const; + SCLLOG(Logical) IsCartesian_point() const; + SCLLOG(Logical) IsParameter_value() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 ... NONE only for complex selects... }; -inline SdaiSelect * create_SdaiTrimming_select () { return new SdaiTrimming_select ; } +#ifdef __OSTORE__ +void SdaiTrimming_select_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiTrimming_select (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiTrimming_select () { return new SdaiTrimming_select; } +#endif + +typedef SdaiTrimming_select * SdaiTrimming_selectH; +typedef SdaiTrimming_select_ptr SdaiTrimming_select_var; -class SdaiTrimming_selects : public SelectAggregate { +class SdaiTrimming_selects : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiTrimming_select); } + SdaiTrimming_selects( SelectTypeDescriptor * =config_control_designt_trimming_select ); + ~SdaiTrimming_selects(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiTrimming_select( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiTrimming_selects () { return new SdaiTrimming_selects ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiTrimming_selects (os_database *db); +#else +inline STEPaggregate * create_SdaiTrimming_selects () { return new SdaiTrimming_selects; } +#endif -///// END SELECT TYPE trimming_select +typedef SdaiTrimming_selects_ptr SdaiTrimming_selects_var; + +///// END SELECT TYPE trimming_select -////////// SELECT TYPE contracted_item -class SdaiContracted_item : public SdaiSelect { +////////// SELECT TYPE SdaiContracted_item +class SdaiContracted_item : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // PRODUCT_DEFINITION_FORMATION -- ENTITY_TYPE - STEPentityH _stepentityh; + // PRODUCT_DEFINITION_FORMATION -- sdaiINSTANCE + SCLP23(Application_instance_ptr) _app_inst; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiContracted_item_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiContracted_item(); +// constructors + SdaiContracted_item( const SelectTypeDescriptor * =config_control_designt_contracted_item ); // part 1 - SdaiContracted_item( const SdaiProduct_definition_formationH& ); + SdaiContracted_item( const SdaiProduct_definition_formation_ptr&, + const SelectTypeDescriptor * =config_control_designt_contracted_item ); virtual ~SdaiContracted_item(); // part 2 - operator SdaiProduct_definition_formationH(); + operator SdaiProduct_definition_formation_ptr(); // part 3 - SdaiProductH Of_product() const; - void Of_product (SdaiProductH x); - const SdaiText Description() const; - void Description (const char * x); - const SdaiIdentifier Id() const; - void Id (const char * x); + const SdaiProduct_ptr of_product_() const; + void of_product_ (const SdaiProduct_ptr x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiIdentifier id_() const; + void id_ (const SdaiIdentifier x); + // part 4 - SdaiContracted_item& operator =( const SdaiProduct_definition_formationH& ); + SdaiContracted_item& operator =( const SdaiProduct_definition_formation_ptr& ); // not in SDAI SdaiContracted_item& ShallowCopy ( const SdaiContracted_item& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiContracted_item& operator =( const SdaiContracted_itemH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiContracted_item& operator =( SdaiContracted_item * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsProduct_definition_formation() const; + SCLLOG(Logical) IsProduct_definition_formation() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 ... NONE only for complex selects... }; -inline SdaiSelect * create_SdaiContracted_item () { return new SdaiContracted_item ; } +#ifdef __OSTORE__ +void SdaiContracted_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiContracted_item (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiContracted_item () { return new SdaiContracted_item; } +#endif + +typedef SdaiContracted_item * SdaiContracted_itemH; +typedef SdaiContracted_item_ptr SdaiContracted_item_var; -class SdaiContracted_items : public SelectAggregate { +class SdaiContracted_items : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiContracted_item); } + SdaiContracted_items( SelectTypeDescriptor * =config_control_designt_contracted_item ); + ~SdaiContracted_items(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiContracted_item( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiContracted_items () { return new SdaiContracted_items ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiContracted_items (os_database *db); +#else +inline STEPaggregate * create_SdaiContracted_items () { return new SdaiContracted_items; } +#endif -///// END SELECT TYPE contracted_item +typedef SdaiContracted_items_ptr SdaiContracted_items_var; + +///// END SELECT TYPE contracted_item -////////// SELECT TYPE unit -class SdaiUnit : public SdaiSelect { +////////// SELECT TYPE SdaiUnit +class SdaiUnit : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // NAMED_UNIT -- ENTITY_TYPE - STEPentityH _stepentityh; + // NAMED_UNIT -- sdaiINSTANCE + SCLP23(Application_instance_ptr) _app_inst; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiUnit_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiUnit(); +// constructors + SdaiUnit( const SelectTypeDescriptor * =config_control_designt_unit ); // part 1 - SdaiUnit( const SdaiNamed_unitH& ); + SdaiUnit( const SdaiNamed_unit_ptr&, + const SelectTypeDescriptor * =config_control_designt_unit ); virtual ~SdaiUnit(); // part 2 - operator SdaiNamed_unitH(); + operator SdaiNamed_unit_ptr(); // part 3 - SdaiDimensional_exponentsH Dimensions() const; - void Dimensions (SdaiDimensional_exponentsH x); + const SdaiDimensional_exponents_ptr dimensions_() const; + void dimensions_ (const SdaiDimensional_exponents_ptr x); + // part 4 - SdaiUnit& operator =( const SdaiNamed_unitH& ); + SdaiUnit& operator =( const SdaiNamed_unit_ptr& ); // not in SDAI SdaiUnit& ShallowCopy ( const SdaiUnit& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiUnit& operator =( const SdaiUnitH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiUnit& operator =( SdaiUnit * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsNamed_unit() const; + SCLLOG(Logical) IsNamed_unit() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 ... NONE only for complex selects... }; -inline SdaiSelect * create_SdaiUnit () { return new SdaiUnit ; } +#ifdef __OSTORE__ +void SdaiUnit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiUnit (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiUnit () { return new SdaiUnit; } +#endif + +typedef SdaiUnit * SdaiUnitH; +typedef SdaiUnit_ptr SdaiUnit_var; -class SdaiUnits : public SelectAggregate { +class SdaiUnits : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiUnit); } + SdaiUnits( SelectTypeDescriptor * =config_control_designt_unit ); + ~SdaiUnits(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiUnit( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiUnits () { return new SdaiUnits ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiUnits (os_database *db); +#else +inline STEPaggregate * create_SdaiUnits () { return new SdaiUnits; } +#endif -///// END SELECT TYPE unit +typedef SdaiUnits_ptr SdaiUnits_var; + +///// END SELECT TYPE unit -////////// SELECT TYPE reversible_topology -class SdaiReversible_topology : public SdaiSelect { +////////// SELECT TYPE SdaiReversible_topology +class SdaiReversible_topology : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // REVERSIBLE_TOPOLOGY_ITEM -- SELECT_TYPE + // REVERSIBLE_TOPOLOGY_ITEM -- sdaiSELECT // LIST_OF_REVERSIBLE_TOPOLOGY_ITEM -- LIST_TYPE // SET_OF_REVERSIBLE_TOPOLOGY_ITEM -- SET_TYPE - SdaiReversible_topology_items _sdaireversible_topology_items; SdaiReversible_topology_item _sdaireversible_topology_item; + SdaiReversible_topology_items _sdaireversible_topology_items; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiReversible_topology_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiReversible_topology(); +// constructors + SdaiReversible_topology( const SelectTypeDescriptor * =config_control_designt_reversible_topology ); // part 1 - SdaiReversible_topology( const SdaiReversible_topology_itemH& ); - SdaiReversible_topology( const SdaiReversible_topology_itemsH& ); + SdaiReversible_topology( const SdaiReversible_topology_item_ptr&, + const SelectTypeDescriptor * =config_control_designt_reversible_topology ); + SdaiReversible_topology( const SdaiSet_of_reversible_topology_item_ptr&, + const SelectTypeDescriptor * =config_control_designt_reversible_topology ); virtual ~SdaiReversible_topology(); // part 2 - operator SdaiReversible_topology_itemH(); - operator SdaiSet_of_reversible_topology_itemH (); + operator SdaiReversible_topology_item_ptr(); + operator SdaiSet_of_reversible_topology_item_ptr (); // part 3 // part 4 - SdaiReversible_topology& operator =( const SdaiReversible_topology_itemH& ); - SdaiReversible_topology& operator =( const SdaiReversible_topology_itemsH& ); + SdaiReversible_topology& operator =( const SdaiReversible_topology_item_ptr& ); + SdaiReversible_topology& operator =( const SdaiSet_of_reversible_topology_item_ptr& ); // not in SDAI SdaiReversible_topology& ShallowCopy ( const SdaiReversible_topology& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiReversible_topology& operator =( const SdaiReversible_topologyH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiReversible_topology& operator =( SdaiReversible_topology * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsReversible_topology_item() const; - SdaiLogical IsList_of_reversible_topology_item() const; - SdaiLogical IsSet_of_reversible_topology_item() const; + SCLLOG(Logical) IsReversible_topology_item() const; + SCLLOG(Logical) IsList_of_reversible_topology_item() const; + SCLLOG(Logical) IsSet_of_reversible_topology_item() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 const TypeDescriptor *SetUnderlyingType ( const TypeDescriptor * td ); }; -inline SdaiSelect * create_SdaiReversible_topology () { return new SdaiReversible_topology ; } +#ifdef __OSTORE__ +void SdaiReversible_topology_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiReversible_topology (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiReversible_topology () { return new SdaiReversible_topology; } +#endif + +typedef SdaiReversible_topology * SdaiReversible_topologyH; +typedef SdaiReversible_topology_ptr SdaiReversible_topology_var; -class SdaiReversible_topologys : public SelectAggregate { +class SdaiReversible_topologys : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiReversible_topology); } + SdaiReversible_topologys( SelectTypeDescriptor * =config_control_designt_reversible_topology ); + ~SdaiReversible_topologys(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiReversible_topology( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiReversible_topologys () { return new SdaiReversible_topologys ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiReversible_topologys (os_database *db); +#else +inline STEPaggregate * create_SdaiReversible_topologys () { return new SdaiReversible_topologys; } +#endif -///// END SELECT TYPE reversible_topology +typedef SdaiReversible_topologys_ptr SdaiReversible_topologys_var; + +///// END SELECT TYPE reversible_topology -////////// SELECT TYPE work_item -class SdaiWork_item : public SdaiSelect { +////////// SELECT TYPE SdaiWork_item +class SdaiWork_item : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // PRODUCT_DEFINITION_FORMATION -- ENTITY_TYPE - STEPentityH _stepentityh; + // PRODUCT_DEFINITION_FORMATION -- sdaiINSTANCE + SCLP23(Application_instance_ptr) _app_inst; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiWork_item_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiWork_item(); +// constructors + SdaiWork_item( const SelectTypeDescriptor * =config_control_designt_work_item ); // part 1 - SdaiWork_item( const SdaiProduct_definition_formationH& ); + SdaiWork_item( const SdaiProduct_definition_formation_ptr&, + const SelectTypeDescriptor * =config_control_designt_work_item ); virtual ~SdaiWork_item(); // part 2 - operator SdaiProduct_definition_formationH(); + operator SdaiProduct_definition_formation_ptr(); // part 3 - SdaiProductH Of_product() const; - void Of_product (SdaiProductH x); - const SdaiText Description() const; - void Description (const char * x); - const SdaiIdentifier Id() const; - void Id (const char * x); + const SdaiProduct_ptr of_product_() const; + void of_product_ (const SdaiProduct_ptr x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiIdentifier id_() const; + void id_ (const SdaiIdentifier x); + // part 4 - SdaiWork_item& operator =( const SdaiProduct_definition_formationH& ); + SdaiWork_item& operator =( const SdaiProduct_definition_formation_ptr& ); // not in SDAI SdaiWork_item& ShallowCopy ( const SdaiWork_item& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiWork_item& operator =( const SdaiWork_itemH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiWork_item& operator =( SdaiWork_item * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsProduct_definition_formation() const; + SCLLOG(Logical) IsProduct_definition_formation() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 ... NONE only for complex selects... }; -inline SdaiSelect * create_SdaiWork_item () { return new SdaiWork_item ; } +#ifdef __OSTORE__ +void SdaiWork_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiWork_item (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiWork_item () { return new SdaiWork_item; } +#endif + +typedef SdaiWork_item * SdaiWork_itemH; +typedef SdaiWork_item_ptr SdaiWork_item_var; -class SdaiWork_items : public SelectAggregate { +class SdaiWork_items : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiWork_item); } + SdaiWork_items( SelectTypeDescriptor * =config_control_designt_work_item ); + ~SdaiWork_items(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiWork_item( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiWork_items () { return new SdaiWork_items ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiWork_items (os_database *db); +#else +inline STEPaggregate * create_SdaiWork_items () { return new SdaiWork_items; } +#endif -///// END SELECT TYPE work_item +typedef SdaiWork_items_ptr SdaiWork_items_var; + +///// END SELECT TYPE work_item -////////// SELECT TYPE supported_item -class SdaiSupported_item : public SdaiSelect { +////////// SELECT TYPE SdaiSupported_item +class SdaiSupported_item : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // ACTION_DIRECTIVE -- ENTITY_TYPE - // ACTION -- ENTITY_TYPE - // ACTION_METHOD -- ENTITY_TYPE - STEPentityH _stepentityh; + // ACTION_DIRECTIVE -- sdaiINSTANCE + // ACTION -- sdaiINSTANCE + // ACTION_METHOD -- sdaiINSTANCE + SCLP23(Application_instance_ptr) _app_inst; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiSupported_item_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiSupported_item(); +// constructors + SdaiSupported_item( const SelectTypeDescriptor * =config_control_designt_supported_item ); // part 1 - SdaiSupported_item( const SdaiAction_directiveH& ); - SdaiSupported_item( const SdaiActionH& ); - SdaiSupported_item( const SdaiAction_methodH& ); + SdaiSupported_item( const SdaiAction_directive_ptr&, + const SelectTypeDescriptor * =config_control_designt_supported_item ); + SdaiSupported_item( const SdaiAction_ptr&, + const SelectTypeDescriptor * =config_control_designt_supported_item ); + SdaiSupported_item( const SdaiAction_method_ptr&, + const SelectTypeDescriptor * =config_control_designt_supported_item ); virtual ~SdaiSupported_item(); // part 2 - operator SdaiAction_directiveH(); - operator SdaiActionH(); - operator SdaiAction_methodH(); + operator SdaiAction_directive_ptr(); + operator SdaiAction_ptr(); + operator SdaiAction_method_ptr(); // part 3 - const SdaiText Purpose() const; - void Purpose (const char * x); - const SdaiText Consequence() const; - void Consequence (const char * x); - SdaiAction_methodH Chosen_method() const; - void Chosen_method (SdaiAction_methodH x); - const EntityAggregateH Requests() const; - void Requests (EntityAggregateH x); - const SdaiText Comment() const; - void Comment (const char * x); - const SdaiText Analysis() const; - void Analysis (const char * x); - const SdaiText Description() const; - void Description (const char * x); - const SdaiLabel Name() const; - void Name (const char * x); + const SdaiText purpose_() const; + void purpose_ (const SdaiText x); + + const SdaiText consequence_() const; + void consequence_ (const SdaiText x); + + const SdaiAction_method_ptr chosen_method_() const; + void chosen_method_ (const SdaiAction_method_ptr x); + + const EntityAggregate_ptr requests_() const; + void requests_ (const EntityAggregate_ptr x); + + const SdaiText comment_() const; + void comment_ (const SdaiText x); + + const SdaiText analysis_() const; + void analysis_ (const SdaiText x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + // part 4 - SdaiSupported_item& operator =( const SdaiAction_directiveH& ); - SdaiSupported_item& operator =( const SdaiActionH& ); - SdaiSupported_item& operator =( const SdaiAction_methodH& ); + SdaiSupported_item& operator =( const SdaiAction_directive_ptr& ); + SdaiSupported_item& operator =( const SdaiAction_ptr& ); + SdaiSupported_item& operator =( const SdaiAction_method_ptr& ); // not in SDAI SdaiSupported_item& ShallowCopy ( const SdaiSupported_item& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiSupported_item& operator =( const SdaiSupported_itemH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiSupported_item& operator =( SdaiSupported_item * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsAction_directive() const; - SdaiLogical IsAction() const; - SdaiLogical IsAction_method() const; + SCLLOG(Logical) IsAction_directive() const; + SCLLOG(Logical) IsAction() const; + SCLLOG(Logical) IsAction_method() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 ... NONE only for complex selects... }; -inline SdaiSelect * create_SdaiSupported_item () { return new SdaiSupported_item ; } +#ifdef __OSTORE__ +void SdaiSupported_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiSupported_item (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiSupported_item () { return new SdaiSupported_item; } +#endif + +typedef SdaiSupported_item * SdaiSupported_itemH; +typedef SdaiSupported_item_ptr SdaiSupported_item_var; -class SdaiSupported_items : public SelectAggregate { +class SdaiSupported_items : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiSupported_item); } + SdaiSupported_items( SelectTypeDescriptor * =config_control_designt_supported_item ); + ~SdaiSupported_items(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiSupported_item( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiSupported_items () { return new SdaiSupported_items ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiSupported_items (os_database *db); +#else +inline STEPaggregate * create_SdaiSupported_items () { return new SdaiSupported_items; } +#endif -///// END SELECT TYPE supported_item +typedef SdaiSupported_items_ptr SdaiSupported_items_var; + +///// END SELECT TYPE supported_item -////////// SELECT TYPE approved_item -class SdaiApproved_item : public SdaiSelect { +////////// SELECT TYPE SdaiApproved_item +class SdaiApproved_item : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // PRODUCT_DEFINITION_FORMATION -- ENTITY_TYPE - // PRODUCT_DEFINITION -- ENTITY_TYPE - // CONFIGURATION_EFFECTIVITY -- ENTITY_TYPE - // CONFIGURATION_ITEM -- ENTITY_TYPE - // SECURITY_CLASSIFICATION -- ENTITY_TYPE - // CHANGE_REQUEST -- ENTITY_TYPE - // CHANGE -- ENTITY_TYPE - // START_REQUEST -- ENTITY_TYPE - // START_WORK -- ENTITY_TYPE - // CERTIFICATION -- ENTITY_TYPE - // CONTRACT -- ENTITY_TYPE - STEPentityH _stepentityh; + // PRODUCT_DEFINITION_FORMATION -- sdaiINSTANCE + // PRODUCT_DEFINITION -- sdaiINSTANCE + // CONFIGURATION_EFFECTIVITY -- sdaiINSTANCE + // CONFIGURATION_ITEM -- sdaiINSTANCE + // SECURITY_CLASSIFICATION -- sdaiINSTANCE + // CHANGE_REQUEST -- sdaiINSTANCE + // CHANGE -- sdaiINSTANCE + // START_REQUEST -- sdaiINSTANCE + // START_WORK -- sdaiINSTANCE + // CERTIFICATION -- sdaiINSTANCE + // CONTRACT -- sdaiINSTANCE + SCLP23(Application_instance_ptr) _app_inst; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiApproved_item_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiApproved_item(); +// constructors + SdaiApproved_item( const SelectTypeDescriptor * =config_control_designt_approved_item ); // part 1 - SdaiApproved_item( const SdaiProduct_definition_formationH& ); - SdaiApproved_item( const SdaiProduct_definitionH& ); - SdaiApproved_item( const SdaiConfiguration_effectivityH& ); - SdaiApproved_item( const SdaiConfiguration_itemH& ); - SdaiApproved_item( const SdaiSecurity_classificationH& ); - SdaiApproved_item( const SdaiChange_requestH& ); - SdaiApproved_item( const SdaiChangeH& ); - SdaiApproved_item( const SdaiStart_requestH& ); - SdaiApproved_item( const SdaiStart_workH& ); - SdaiApproved_item( const SdaiCertificationH& ); - SdaiApproved_item( const SdaiContractH& ); + SdaiApproved_item( const SdaiProduct_definition_formation_ptr&, + const SelectTypeDescriptor * =config_control_designt_approved_item ); + SdaiApproved_item( const SdaiProduct_definition_ptr&, + const SelectTypeDescriptor * =config_control_designt_approved_item ); + SdaiApproved_item( const SdaiConfiguration_effectivity_ptr&, + const SelectTypeDescriptor * =config_control_designt_approved_item ); + SdaiApproved_item( const SdaiConfiguration_item_ptr&, + const SelectTypeDescriptor * =config_control_designt_approved_item ); + SdaiApproved_item( const SdaiSecurity_classification_ptr&, + const SelectTypeDescriptor * =config_control_designt_approved_item ); + SdaiApproved_item( const SdaiChange_request_ptr&, + const SelectTypeDescriptor * =config_control_designt_approved_item ); + SdaiApproved_item( const SdaiChange_ptr&, + const SelectTypeDescriptor * =config_control_designt_approved_item ); + SdaiApproved_item( const SdaiStart_request_ptr&, + const SelectTypeDescriptor * =config_control_designt_approved_item ); + SdaiApproved_item( const SdaiStart_work_ptr&, + const SelectTypeDescriptor * =config_control_designt_approved_item ); + SdaiApproved_item( const SdaiCertification_ptr&, + const SelectTypeDescriptor * =config_control_designt_approved_item ); + SdaiApproved_item( const SdaiContract_ptr&, + const SelectTypeDescriptor * =config_control_designt_approved_item ); virtual ~SdaiApproved_item(); // part 2 - operator SdaiProduct_definition_formationH(); - operator SdaiProduct_definitionH(); - operator SdaiConfiguration_effectivityH(); - operator SdaiConfiguration_itemH(); - operator SdaiSecurity_classificationH(); - operator SdaiChange_requestH(); - operator SdaiChangeH(); - operator SdaiStart_requestH(); - operator SdaiStart_workH(); - operator SdaiCertificationH(); - operator SdaiContractH(); + operator SdaiProduct_definition_formation_ptr(); + operator SdaiProduct_definition_ptr(); + operator SdaiConfiguration_effectivity_ptr(); + operator SdaiConfiguration_item_ptr(); + operator SdaiSecurity_classification_ptr(); + operator SdaiChange_request_ptr(); + operator SdaiChange_ptr(); + operator SdaiStart_request_ptr(); + operator SdaiStart_work_ptr(); + operator SdaiCertification_ptr(); + operator SdaiContract_ptr(); // part 3 - SdaiCertification_typeH Kind() const; - void Kind (SdaiCertification_typeH x); - SdaiActionH Assigned_action() const; - void Assigned_action (SdaiActionH x); - const SdaiChange_request_itemsH Items() const; - void Items (SdaiChange_request_itemsH x); - SdaiVersioned_action_requestH Assigned_action_request() const; - void Assigned_action_request (SdaiVersioned_action_requestH x); - SdaiSecurity_classification_levelH Security_level() const; - void Security_level (SdaiSecurity_classification_levelH x); - const SdaiLabel Purpose() const; - void Purpose (const char * x); - SdaiProduct_conceptH Item_concept() const; - void Item_concept (SdaiProduct_conceptH x); - const SdaiLabel Name() const; - void Name (const char * x); - SdaiConfiguration_designH Configuration() const; - void Configuration (SdaiConfiguration_designH x); - SdaiProduct_definition_relationshipH Usage() const; - void Usage (SdaiProduct_definition_relationshipH x); - SdaiProduct_definition_contextH Frame_of_reference() const; - void Frame_of_reference (SdaiProduct_definition_contextH x); - SdaiProduct_definition_formationH Formation() const; - void Formation (SdaiProduct_definition_formationH x); - SdaiProductH Of_product() const; - void Of_product (SdaiProductH x); - const SdaiText Description() const; - void Description (const char * x); - const SdaiIdentifier Id() const; - void Id (const char * x); + const SdaiCertification_type_ptr kind_() const; + void kind_ (const SdaiCertification_type_ptr x); + + const SdaiAction_ptr assigned_action_() const; + void assigned_action_ (const SdaiAction_ptr x); + + const SdaiChange_request_items_ptr items_() const; + void items_ (const SdaiChange_request_items_ptr x); + + const SdaiVersioned_action_request_ptr assigned_action_request_() const; + void assigned_action_request_ (const SdaiVersioned_action_request_ptr x); + + const SdaiSecurity_classification_level_ptr security_level_() const; + void security_level_ (const SdaiSecurity_classification_level_ptr x); + + const SdaiLabel purpose_() const; + void purpose_ (const SdaiLabel x); + + const SdaiProduct_concept_ptr item_concept_() const; + void item_concept_ (const SdaiProduct_concept_ptr x); + + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiConfiguration_design_ptr configuration_() const; + void configuration_ (const SdaiConfiguration_design_ptr x); + + const SdaiProduct_definition_relationship_ptr usage_() const; + void usage_ (const SdaiProduct_definition_relationship_ptr x); + + const SdaiProduct_definition_context_ptr frame_of_reference_() const; + void frame_of_reference_ (const SdaiProduct_definition_context_ptr x); + + const SdaiProduct_definition_formation_ptr formation_() const; + void formation_ (const SdaiProduct_definition_formation_ptr x); + + const SdaiProduct_ptr of_product_() const; + void of_product_ (const SdaiProduct_ptr x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiIdentifier id_() const; + void id_ (const SdaiIdentifier x); + // part 4 - SdaiApproved_item& operator =( const SdaiProduct_definition_formationH& ); - SdaiApproved_item& operator =( const SdaiProduct_definitionH& ); - SdaiApproved_item& operator =( const SdaiConfiguration_effectivityH& ); - SdaiApproved_item& operator =( const SdaiConfiguration_itemH& ); - SdaiApproved_item& operator =( const SdaiSecurity_classificationH& ); - SdaiApproved_item& operator =( const SdaiChange_requestH& ); - SdaiApproved_item& operator =( const SdaiChangeH& ); - SdaiApproved_item& operator =( const SdaiStart_requestH& ); - SdaiApproved_item& operator =( const SdaiStart_workH& ); - SdaiApproved_item& operator =( const SdaiCertificationH& ); - SdaiApproved_item& operator =( const SdaiContractH& ); + SdaiApproved_item& operator =( const SdaiProduct_definition_formation_ptr& ); + SdaiApproved_item& operator =( const SdaiProduct_definition_ptr& ); + SdaiApproved_item& operator =( const SdaiConfiguration_effectivity_ptr& ); + SdaiApproved_item& operator =( const SdaiConfiguration_item_ptr& ); + SdaiApproved_item& operator =( const SdaiSecurity_classification_ptr& ); + SdaiApproved_item& operator =( const SdaiChange_request_ptr& ); + SdaiApproved_item& operator =( const SdaiChange_ptr& ); + SdaiApproved_item& operator =( const SdaiStart_request_ptr& ); + SdaiApproved_item& operator =( const SdaiStart_work_ptr& ); + SdaiApproved_item& operator =( const SdaiCertification_ptr& ); + SdaiApproved_item& operator =( const SdaiContract_ptr& ); // not in SDAI SdaiApproved_item& ShallowCopy ( const SdaiApproved_item& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiApproved_item& operator =( const SdaiApproved_itemH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiApproved_item& operator =( SdaiApproved_item * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsProduct_definition_formation() const; - SdaiLogical IsProduct_definition() const; - SdaiLogical IsConfiguration_effectivity() const; - SdaiLogical IsConfiguration_item() const; - SdaiLogical IsSecurity_classification() const; - SdaiLogical IsChange_request() const; - SdaiLogical IsChange() const; - SdaiLogical IsStart_request() const; - SdaiLogical IsStart_work() const; - SdaiLogical IsCertification() const; - SdaiLogical IsContract() const; + SCLLOG(Logical) IsProduct_definition_formation() const; + SCLLOG(Logical) IsProduct_definition() const; + SCLLOG(Logical) IsConfiguration_effectivity() const; + SCLLOG(Logical) IsConfiguration_item() const; + SCLLOG(Logical) IsSecurity_classification() const; + SCLLOG(Logical) IsChange_request() const; + SCLLOG(Logical) IsChange() const; + SCLLOG(Logical) IsStart_request() const; + SCLLOG(Logical) IsStart_work() const; + SCLLOG(Logical) IsCertification() const; + SCLLOG(Logical) IsContract() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 ... NONE only for complex selects... }; -inline SdaiSelect * create_SdaiApproved_item () { return new SdaiApproved_item ; } +#ifdef __OSTORE__ +void SdaiApproved_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiApproved_item (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiApproved_item () { return new SdaiApproved_item; } +#endif + +typedef SdaiApproved_item * SdaiApproved_itemH; +typedef SdaiApproved_item_ptr SdaiApproved_item_var; -class SdaiApproved_items : public SelectAggregate { +class SdaiApproved_items : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiApproved_item); } + SdaiApproved_items( SelectTypeDescriptor * =config_control_designt_approved_item ); + ~SdaiApproved_items(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiApproved_item( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiApproved_items () { return new SdaiApproved_items ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiApproved_items (os_database *db); +#else +inline STEPaggregate * create_SdaiApproved_items () { return new SdaiApproved_items; } +#endif -///// END SELECT TYPE approved_item +typedef SdaiApproved_items_ptr SdaiApproved_items_var; + +///// END SELECT TYPE approved_item -////////// SELECT TYPE surface_model -class SdaiSurface_model : public SdaiSelect { +////////// SELECT TYPE SdaiSurface_model +class SdaiSurface_model : public SCLP23(Select) { protected: /* union { */ // types in SELECT - // SHELL_BASED_SURFACE_MODEL -- ENTITY_TYPE - STEPentityH _stepentityh; + // SHELL_BASED_SURFACE_MODEL -- sdaiINSTANCE + SCLP23(Application_instance_ptr) _app_inst; /* } ; */ /* unnamed union of select items */ public: - virtual const TypeDescriptor * AssignEntity (STEPentity * se); - virtual SdaiSelect * NewSelect (); + +#ifdef __OSTORE__ + friend void SdaiSurface_model_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); + static os_typespec* get_os_typespec(); +#endif + + virtual const TypeDescriptor * AssignEntity (SCLP23(Application_instance) * se); + virtual SCLP23(Select) * NewSelect (); + + virtual BASE_TYPE ValueType() const; // STEP Part 21 - virtual void STEPwrite_content (G4std::ostream& out =G4cout) const; - virtual Severity STEPread_content (G4std::istream& in =G4cin, InstMgr * instances =0, int addFileId =0); - - virtual Severity StrToVal_content (const char *, InstMgr * instances =0); + virtual void STEPwrite_content (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, + const char *currSch =0) const; + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, const char *utype =0, + int addFileId =0, const char *currSch =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0); // STEP Part 22: SDAI -// structors - SdaiSurface_model(); +// constructors + SdaiSurface_model( const SelectTypeDescriptor * =config_control_designt_surface_model ); // part 1 - SdaiSurface_model( const SdaiShell_based_surface_modelH& ); + SdaiSurface_model( const SdaiShell_based_surface_model_ptr&, + const SelectTypeDescriptor * =config_control_designt_surface_model ); virtual ~SdaiSurface_model(); // part 2 - operator SdaiShell_based_surface_modelH(); + operator SdaiShell_based_surface_model_ptr(); // part 3 - const SdaiShellsH Sbsm_boundary() const; - void Sbsm_boundary (SdaiShellsH x); - const SdaiLabel Name() const; - void Name (const char * x); + const SdaiShells_ptr sbsm_boundary_() const; + void sbsm_boundary_ (const SdaiShells_ptr x); + + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + // part 4 - SdaiSurface_model& operator =( const SdaiShell_based_surface_modelH& ); + SdaiSurface_model& operator =( const SdaiShell_based_surface_model_ptr& ); // not in SDAI SdaiSurface_model& ShallowCopy ( const SdaiSurface_model& ); #ifdef COMPILER_DEFINES_OPERATOR_EQ #else - SdaiSurface_model& operator =( const SdaiSurface_modelH& ); - SdaiSelect& operator =( const SdaiSelect& ); + SdaiSurface_model& operator =( SdaiSurface_model * const & ); + SCLP23(Select)& operator =( const SCLP23(Select)& ); #endif // part 5 - SdaiLogical IsShell_based_surface_model() const; + SCLLOG(Logical) IsShell_based_surface_model() const; - // part 6 ... UnderlyingTypeName () implemented in SdaiSelect class ... + // part 6 ... UnderlyingTypeName () implemented in SCLP23(Select) class ... // part 7 ... NONE only for complex selects... }; -inline SdaiSelect * create_SdaiSurface_model () { return new SdaiSurface_model ; } +#ifdef __OSTORE__ +void SdaiSurface_model_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +SCLP23(Select) * create_SdaiSurface_model (os_database *db); +#else + +inline SCLP23(Select) * create_SdaiSurface_model () { return new SdaiSurface_model; } +#endif + +typedef SdaiSurface_model * SdaiSurface_modelH; +typedef SdaiSurface_model_ptr SdaiSurface_model_var; -class SdaiSurface_models : public SelectAggregate { +class SdaiSurface_models : public SelectAggregate { + protected: + SelectTypeDescriptor *sel_type; + public: - virtual SingleLinkNode * NewNode () { - return new SelectNode (new SdaiSurface_model); } + SdaiSurface_models( SelectTypeDescriptor * =config_control_designt_surface_model ); + ~SdaiSurface_models(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual SingleLinkNode * NewNode(); +#else + virtual SingleLinkNode * NewNode() + { return new SelectNode (new SdaiSurface_model( sel_type )); } +#endif }; -inline STEPaggregate * create_SdaiSurface_models () { return new SdaiSurface_models ; } +#ifdef __OSTORE__ +STEPaggregate * create_SdaiSurface_models (os_database *db); +#else +inline STEPaggregate * create_SdaiSurface_models () { return new SdaiSurface_models; } +#endif -///// END SELECT TYPE surface_model +typedef SdaiSurface_models_ptr SdaiSurface_models_var; + +///// END SELECT TYPE surface_model /* ************** ENTITIES */ // ***** Print Entity Classes -///////// ENTITY representation_item +///////// ENTITY representation_item extern AttrDescriptor *a_0name; -class SdaiRepresentation_item : public STEPentity { +class SdaiRepresentation_item : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiRepresentation_item_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _name ; + SCLP23(String) _name ; public: SdaiRepresentation_item ( ); - SdaiRepresentation_item (STEPentity *se ); + SdaiRepresentation_item (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiRepresentation_item (SdaiRepresentation_item& e ); ~SdaiRepresentation_item (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 0 ; } - const SdaiLabel Name() const; - void Name (const char * x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiRepresentation_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiRepresentation_item(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiRepresentation_item () { return (SCLP23(Application_instance_ptr)) new SdaiRepresentation_item ; } +#else inline SdaiRepresentation_item * create_SdaiRepresentation_item () { return new SdaiRepresentation_item ; } +#endif -///////// END_ENTITY representation_item +///////// END_ENTITY representation_item -///////// ENTITY geometric_representation_item +///////// ENTITY geometric_representation_item -extern AttrDescriptor *a_1Ddim; +extern Derived_attribute *a_1Ddim; class SdaiGeometric_representation_item : public SdaiRepresentation_item { - protected: + +#ifdef __OSTORE__ + friend void SdaiGeometric_representation_item_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiGeometric_representation_item ( ); - SdaiGeometric_representation_item (STEPentity *se ); + SdaiGeometric_representation_item (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiGeometric_representation_item (SdaiGeometric_representation_item& e ); ~SdaiGeometric_representation_item (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 1 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiGeometric_representation_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiGeometric_representation_item(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiGeometric_representation_item () { return (SCLP23(Application_instance_ptr)) new SdaiGeometric_representation_item ; } +#else inline SdaiGeometric_representation_item * create_SdaiGeometric_representation_item () { return new SdaiGeometric_representation_item ; } +#endif -///////// END_ENTITY geometric_representation_item +///////// END_ENTITY geometric_representation_item -///////// ENTITY functionally_defined_transformation +///////// ENTITY functionally_defined_transformation extern AttrDescriptor *a_2name; extern AttrDescriptor *a_3description; -class SdaiFunctionally_defined_transformation : public STEPentity { +class SdaiFunctionally_defined_transformation : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiFunctionally_defined_transformation_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _name ; - SdaiString _description ; + SCLP23(String) _name ; + SCLP23(String) _description ; public: SdaiFunctionally_defined_transformation ( ); - SdaiFunctionally_defined_transformation (STEPentity *se ); + SdaiFunctionally_defined_transformation (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiFunctionally_defined_transformation (SdaiFunctionally_defined_transformation& e ); ~SdaiFunctionally_defined_transformation (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 2 ; } - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiText Description() const; - void Description (const char * x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiFunctionally_defined_transformation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiFunctionally_defined_transformation(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiFunctionally_defined_transformation () { return (SCLP23(Application_instance_ptr)) new SdaiFunctionally_defined_transformation ; } +#else inline SdaiFunctionally_defined_transformation * create_SdaiFunctionally_defined_transformation () { return new SdaiFunctionally_defined_transformation ; } +#endif -///////// END_ENTITY functionally_defined_transformation +///////// END_ENTITY functionally_defined_transformation -///////// ENTITY cartesian_transformation_operator +///////// ENTITY cartesian_transformation_operator extern AttrDescriptor *a_4axis1; extern AttrDescriptor *a_5axis2; extern AttrDescriptor *a_6local_origin; extern AttrDescriptor *a_7scale; -extern AttrDescriptor *a_8Dscl; +extern Derived_attribute *a_8Dscl; class SdaiCartesian_transformation_operator : public SdaiGeometric_representation_item { - protected: - SdaiDirectionH _axis1 ; // OPTIONAL - SdaiDirectionH _axis2 ; // OPTIONAL - SdaiCartesian_pointH _local_origin ; - SdaiReal _scale ; // OPTIONAL + +#ifdef __OSTORE__ + friend void SdaiCartesian_transformation_operator_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _axis1 ; // OPTIONAL + SCLP23(Application_instance_ptr) _axis2 ; // OPTIONAL + SCLP23(Application_instance_ptr) _local_origin ; + SCLP23(Real) _scale ; // OPTIONAL public: SdaiCartesian_transformation_operator ( ); - SdaiCartesian_transformation_operator (STEPentity *se ); + SdaiCartesian_transformation_operator (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiCartesian_transformation_operator (SdaiCartesian_transformation_operator& e ); ~SdaiCartesian_transformation_operator (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 3 ; } - SdaiDirectionH Axis1() const; - void Axis1 (SdaiDirectionH x); - SdaiDirectionH Axis2() const; - void Axis2 (SdaiDirectionH x); - SdaiCartesian_pointH Local_origin() const; - void Local_origin (SdaiCartesian_pointH x); - const SdaiReal Scale() const; - void Scale (SdaiReal x); + const SdaiDirection_ptr axis1_() const; + void axis1_ (const SdaiDirection_ptr x); + + const SdaiDirection_ptr axis2_() const; + void axis2_ (const SdaiDirection_ptr x); + + const SdaiCartesian_point_ptr local_origin_() const; + void local_origin_ (const SdaiCartesian_point_ptr x); + + const SCLP23(Real) scale_() const; + void scale_ (const SCLP23(Real) x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ #if 0 - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiText Description() const; - void Description (const char * x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + #endif + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiCartesian_transformation_operator_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiCartesian_transformation_operator(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiCartesian_transformation_operator () { return (SCLP23(Application_instance_ptr)) new SdaiCartesian_transformation_operator ; } +#else inline SdaiCartesian_transformation_operator * create_SdaiCartesian_transformation_operator () { return new SdaiCartesian_transformation_operator ; } +#endif -///////// END_ENTITY cartesian_transformation_operator +///////// END_ENTITY cartesian_transformation_operator -///////// ENTITY cartesian_transformation_operator_3d +///////// ENTITY cartesian_transformation_operator_3d extern AttrDescriptor *a_9axis3; -extern AttrDescriptor *a_10Du; +extern Derived_attribute *a_10Du; class SdaiCartesian_transformation_operator_3d : public SdaiCartesian_transformation_operator { - protected: - SdaiDirectionH _axis3 ; // OPTIONAL + +#ifdef __OSTORE__ + friend void SdaiCartesian_transformation_operator_3d_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _axis3 ; // OPTIONAL public: SdaiCartesian_transformation_operator_3d ( ); - SdaiCartesian_transformation_operator_3d (STEPentity *se ); + SdaiCartesian_transformation_operator_3d (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiCartesian_transformation_operator_3d (SdaiCartesian_transformation_operator_3d& e ); ~SdaiCartesian_transformation_operator_3d (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 4 ; } - SdaiDirectionH Axis3() const; - void Axis3 (SdaiDirectionH x); + const SdaiDirection_ptr axis3_() const; + void axis3_ (const SdaiDirection_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiCartesian_transformation_operator_3d_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiCartesian_transformation_operator_3d(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiCartesian_transformation_operator_3d () { return (SCLP23(Application_instance_ptr)) new SdaiCartesian_transformation_operator_3d ; } +#else inline SdaiCartesian_transformation_operator_3d * create_SdaiCartesian_transformation_operator_3d () { return new SdaiCartesian_transformation_operator_3d ; } +#endif -///////// END_ENTITY cartesian_transformation_operator_3d +///////// END_ENTITY cartesian_transformation_operator_3d -///////// ENTITY versioned_action_request +///////// ENTITY versioned_action_request extern AttrDescriptor *a_11id; extern AttrDescriptor *a_12version; extern AttrDescriptor *a_13purpose; extern AttrDescriptor *a_14description; -class SdaiVersioned_action_request : public STEPentity { +class SdaiVersioned_action_request : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiVersioned_action_request_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _id ; - SdaiString _version ; - SdaiString _purpose ; - SdaiString _description ; + SCLP23(String) _id ; + SCLP23(String) _version ; + SCLP23(String) _purpose ; + SCLP23(String) _description ; public: SdaiVersioned_action_request ( ); - SdaiVersioned_action_request (STEPentity *se ); + SdaiVersioned_action_request (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiVersioned_action_request (SdaiVersioned_action_request& e ); ~SdaiVersioned_action_request (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 5 ; } - const SdaiIdentifier Id() const; - void Id (const char * x); - const SdaiLabel Version() const; - void Version (const char * x); - const SdaiText Purpose() const; - void Purpose (const char * x); - const SdaiText Description() const; - void Description (const char * x); + const SdaiIdentifier id_() const; + void id_ (const SdaiIdentifier x); + + const SdaiLabel version_() const; + void version_ (const SdaiLabel x); + + const SdaiText purpose_() const; + void purpose_ (const SdaiText x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiVersioned_action_request_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiVersioned_action_request(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiVersioned_action_request () { return (SCLP23(Application_instance_ptr)) new SdaiVersioned_action_request ; } +#else inline SdaiVersioned_action_request * create_SdaiVersioned_action_request () { return new SdaiVersioned_action_request ; } +#endif -///////// END_ENTITY versioned_action_request +///////// END_ENTITY versioned_action_request -///////// ENTITY representation +///////// ENTITY representation extern AttrDescriptor *a_15name; extern AttrDescriptor *a_16items; extern AttrDescriptor *a_17context_of_items; -class SdaiRepresentation : public STEPentity { +class SdaiRepresentation : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiRepresentation_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _name ; + SCLP23(String) _name ; EntityAggregate _items ; // of representation_item - SdaiRepresentation_contextH _context_of_items ; + SCLP23(Application_instance_ptr) _context_of_items ; public: SdaiRepresentation ( ); - SdaiRepresentation (STEPentity *se ); + SdaiRepresentation (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiRepresentation (SdaiRepresentation& e ); ~SdaiRepresentation (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 6 ; } - const SdaiLabel Name() const; - void Name (const char * x); - const EntityAggregateH Items() const; - void Items (EntityAggregateH x); - SdaiRepresentation_contextH Context_of_items() const; - void Context_of_items (SdaiRepresentation_contextH x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const EntityAggregate_ptr items_() const; + void items_ (const EntityAggregate_ptr x); + + const SdaiRepresentation_context_ptr context_of_items_() const; + void context_of_items_ (const SdaiRepresentation_context_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiRepresentation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiRepresentation(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiRepresentation () { return (SCLP23(Application_instance_ptr)) new SdaiRepresentation ; } +#else inline SdaiRepresentation * create_SdaiRepresentation () { return new SdaiRepresentation ; } +#endif -///////// END_ENTITY representation +///////// END_ENTITY representation -///////// ENTITY shape_representation +///////// ENTITY shape_representation class SdaiShape_representation : public SdaiRepresentation { - protected: + +#ifdef __OSTORE__ + friend void SdaiShape_representation_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiShape_representation ( ); - SdaiShape_representation (STEPentity *se ); + SdaiShape_representation (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiShape_representation (SdaiShape_representation& e ); ~SdaiShape_representation (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 7 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiShape_representation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiShape_representation(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiShape_representation () { return (SCLP23(Application_instance_ptr)) new SdaiShape_representation ; } +#else inline SdaiShape_representation * create_SdaiShape_representation () { return new SdaiShape_representation ; } +#endif -///////// END_ENTITY shape_representation +///////// END_ENTITY shape_representation -///////// ENTITY manifold_surface_shape_representation +///////// ENTITY manifold_surface_shape_representation class SdaiManifold_surface_shape_representation : public SdaiShape_representation { - protected: + +#ifdef __OSTORE__ + friend void SdaiManifold_surface_shape_representation_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiManifold_surface_shape_representation ( ); - SdaiManifold_surface_shape_representation (STEPentity *se ); + SdaiManifold_surface_shape_representation (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiManifold_surface_shape_representation (SdaiManifold_surface_shape_representation& e ); ~SdaiManifold_surface_shape_representation (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 8 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiManifold_surface_shape_representation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiManifold_surface_shape_representation(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiManifold_surface_shape_representation () { return (SCLP23(Application_instance_ptr)) new SdaiManifold_surface_shape_representation ; } +#else inline SdaiManifold_surface_shape_representation * create_SdaiManifold_surface_shape_representation () { return new SdaiManifold_surface_shape_representation ; } +#endif -///////// END_ENTITY manifold_surface_shape_representation +///////// END_ENTITY manifold_surface_shape_representation -///////// ENTITY certification +///////// ENTITY certification extern AttrDescriptor *a_18name; extern AttrDescriptor *a_19purpose; extern AttrDescriptor *a_20kind; -class SdaiCertification : public STEPentity { +class SdaiCertification : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiCertification_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _name ; - SdaiString _purpose ; - SdaiCertification_typeH _kind ; + SCLP23(String) _name ; + SCLP23(String) _purpose ; + SCLP23(Application_instance_ptr) _kind ; public: SdaiCertification ( ); - SdaiCertification (STEPentity *se ); + SdaiCertification (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiCertification (SdaiCertification& e ); ~SdaiCertification (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 9 ; } - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiText Purpose() const; - void Purpose (const char * x); - SdaiCertification_typeH Kind() const; - void Kind (SdaiCertification_typeH x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiText purpose_() const; + void purpose_ (const SdaiText x); + + const SdaiCertification_type_ptr kind_() const; + void kind_ (const SdaiCertification_type_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiCertification_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiCertification(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiCertification () { return (SCLP23(Application_instance_ptr)) new SdaiCertification ; } +#else inline SdaiCertification * create_SdaiCertification () { return new SdaiCertification ; } +#endif -///////// END_ENTITY certification +///////// END_ENTITY certification -///////// ENTITY product_definition_relationship +///////// ENTITY product_definition_relationship extern AttrDescriptor *a_21id; extern AttrDescriptor *a_22name; @@ -4677,176 +5850,422 @@ extern AttrDescriptor *a_23description; extern AttrDescriptor *a_24relating_product_definition; extern AttrDescriptor *a_25related_product_definition; -class SdaiProduct_definition_relationship : public STEPentity { +class SdaiProduct_definition_relationship : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiProduct_definition_relationship_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _id ; - SdaiString _name ; - SdaiString _description ; - SdaiProduct_definitionH _relating_product_definition ; - SdaiProduct_definitionH _related_product_definition ; + SCLP23(String) _id ; + SCLP23(String) _name ; + SCLP23(String) _description ; + SCLP23(Application_instance_ptr) _relating_product_definition ; + SCLP23(Application_instance_ptr) _related_product_definition ; public: SdaiProduct_definition_relationship ( ); - SdaiProduct_definition_relationship (STEPentity *se ); + SdaiProduct_definition_relationship (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiProduct_definition_relationship (SdaiProduct_definition_relationship& e ); ~SdaiProduct_definition_relationship (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 10 ; } - const SdaiIdentifier Id() const; - void Id (const char * x); - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiText Description() const; - void Description (const char * x); - SdaiProduct_definitionH Relating_product_definition() const; - void Relating_product_definition (SdaiProduct_definitionH x); - SdaiProduct_definitionH Related_product_definition() const; - void Related_product_definition (SdaiProduct_definitionH x); + const SdaiIdentifier id_() const; + void id_ (const SdaiIdentifier x); + + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiProduct_definition_ptr relating_product_definition_() const; + void relating_product_definition_ (const SdaiProduct_definition_ptr x); + + const SdaiProduct_definition_ptr related_product_definition_() const; + void related_product_definition_ (const SdaiProduct_definition_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiProduct_definition_relationship_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiProduct_definition_relationship(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiProduct_definition_relationship () { return (SCLP23(Application_instance_ptr)) new SdaiProduct_definition_relationship ; } +#else inline SdaiProduct_definition_relationship * create_SdaiProduct_definition_relationship () { return new SdaiProduct_definition_relationship ; } +#endif -///////// END_ENTITY product_definition_relationship +///////// END_ENTITY product_definition_relationship -///////// ENTITY product_definition_usage +///////// ENTITY product_definition_usage class SdaiProduct_definition_usage : public SdaiProduct_definition_relationship { - protected: + +#ifdef __OSTORE__ + friend void SdaiProduct_definition_usage_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiProduct_definition_usage ( ); - SdaiProduct_definition_usage (STEPentity *se ); + SdaiProduct_definition_usage (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiProduct_definition_usage (SdaiProduct_definition_usage& e ); ~SdaiProduct_definition_usage (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 11 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiProduct_definition_usage_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiProduct_definition_usage(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiProduct_definition_usage () { return (SCLP23(Application_instance_ptr)) new SdaiProduct_definition_usage ; } +#else inline SdaiProduct_definition_usage * create_SdaiProduct_definition_usage () { return new SdaiProduct_definition_usage ; } +#endif -///////// END_ENTITY product_definition_usage +///////// END_ENTITY product_definition_usage -///////// ENTITY assembly_component_usage +///////// ENTITY assembly_component_usage extern AttrDescriptor *a_26reference_designator; class SdaiAssembly_component_usage : public SdaiProduct_definition_usage { - protected: - SdaiString _reference_designator ; // OPTIONAL + +#ifdef __OSTORE__ + friend void SdaiAssembly_component_usage_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(String) _reference_designator ; // OPTIONAL public: SdaiAssembly_component_usage ( ); - SdaiAssembly_component_usage (STEPentity *se ); + SdaiAssembly_component_usage (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiAssembly_component_usage (SdaiAssembly_component_usage& e ); ~SdaiAssembly_component_usage (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 12 ; } - const SdaiIdentifier Reference_designator() const; - void Reference_designator (const char * x); + const SdaiIdentifier reference_designator_() const; + void reference_designator_ (const SdaiIdentifier x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiAssembly_component_usage_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiAssembly_component_usage(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiAssembly_component_usage () { return (SCLP23(Application_instance_ptr)) new SdaiAssembly_component_usage ; } +#else inline SdaiAssembly_component_usage * create_SdaiAssembly_component_usage () { return new SdaiAssembly_component_usage ; } +#endif -///////// END_ENTITY assembly_component_usage +///////// END_ENTITY assembly_component_usage -///////// ENTITY quantified_assembly_component_usage +///////// ENTITY quantified_assembly_component_usage extern AttrDescriptor *a_27quantity; class SdaiQuantified_assembly_component_usage : public SdaiAssembly_component_usage { - protected: - SdaiMeasure_with_unitH _quantity ; + +#ifdef __OSTORE__ + friend void SdaiQuantified_assembly_component_usage_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _quantity ; public: SdaiQuantified_assembly_component_usage ( ); - SdaiQuantified_assembly_component_usage (STEPentity *se ); + SdaiQuantified_assembly_component_usage (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiQuantified_assembly_component_usage (SdaiQuantified_assembly_component_usage& e ); ~SdaiQuantified_assembly_component_usage (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 13 ; } - SdaiMeasure_with_unitH Quantity() const; - void Quantity (SdaiMeasure_with_unitH x); + const SdaiMeasure_with_unit_ptr quantity_() const; + void quantity_ (const SdaiMeasure_with_unit_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiQuantified_assembly_component_usage_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiQuantified_assembly_component_usage(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiQuantified_assembly_component_usage () { return (SCLP23(Application_instance_ptr)) new SdaiQuantified_assembly_component_usage ; } +#else inline SdaiQuantified_assembly_component_usage * create_SdaiQuantified_assembly_component_usage () { return new SdaiQuantified_assembly_component_usage ; } +#endif -///////// END_ENTITY quantified_assembly_component_usage +///////// END_ENTITY quantified_assembly_component_usage -///////// ENTITY solid_model +///////// ENTITY solid_model class SdaiSolid_model : public SdaiGeometric_representation_item { - protected: + +#ifdef __OSTORE__ + friend void SdaiSolid_model_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiSolid_model ( ); - SdaiSolid_model (STEPentity *se ); + SdaiSolid_model (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiSolid_model (SdaiSolid_model& e ); ~SdaiSolid_model (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 14 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiSolid_model_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiSolid_model(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiSolid_model () { return (SCLP23(Application_instance_ptr)) new SdaiSolid_model ; } +#else inline SdaiSolid_model * create_SdaiSolid_model () { return new SdaiSolid_model ; } +#endif -///////// END_ENTITY solid_model +///////// END_ENTITY solid_model -///////// ENTITY manifold_solid_brep +///////// ENTITY manifold_solid_brep extern AttrDescriptor *a_28outer; class SdaiManifold_solid_brep : public SdaiSolid_model { - protected: - SdaiClosed_shellH _outer ; + +#ifdef __OSTORE__ + friend void SdaiManifold_solid_brep_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _outer ; public: SdaiManifold_solid_brep ( ); - SdaiManifold_solid_brep (STEPentity *se ); + SdaiManifold_solid_brep (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiManifold_solid_brep (SdaiManifold_solid_brep& e ); ~SdaiManifold_solid_brep (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 15 ; } - SdaiClosed_shellH Outer() const; - void Outer (SdaiClosed_shellH x); + const SdaiClosed_shell_ptr outer_() const; + void outer_ (const SdaiClosed_shell_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiManifold_solid_brep_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiManifold_solid_brep(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiManifold_solid_brep () { return (SCLP23(Application_instance_ptr)) new SdaiManifold_solid_brep ; } +#else inline SdaiManifold_solid_brep * create_SdaiManifold_solid_brep () { return new SdaiManifold_solid_brep ; } +#endif -///////// END_ENTITY manifold_solid_brep +///////// END_ENTITY manifold_solid_brep -///////// ENTITY faceted_brep +///////// ENTITY faceted_brep class SdaiFaceted_brep : public SdaiManifold_solid_brep { - protected: + +#ifdef __OSTORE__ + friend void SdaiFaceted_brep_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiFaceted_brep ( ); - SdaiFaceted_brep (STEPentity *se ); + SdaiFaceted_brep (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiFaceted_brep (SdaiFaceted_brep& e ); ~SdaiFaceted_brep (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 16 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiFaceted_brep_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiFaceted_brep(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiFaceted_brep () { return (SCLP23(Application_instance_ptr)) new SdaiFaceted_brep ; } +#else inline SdaiFaceted_brep * create_SdaiFaceted_brep () { return new SdaiFaceted_brep ; } +#endif -///////// END_ENTITY faceted_brep +///////// END_ENTITY faceted_brep -///////// ENTITY action_directive +///////// ENTITY action_directive extern AttrDescriptor *a_29name; extern AttrDescriptor *a_30description; @@ -4854,416 +6273,982 @@ extern AttrDescriptor *a_31analysis; extern AttrDescriptor *a_32comment; extern AttrDescriptor *a_33requests; -class SdaiAction_directive : public STEPentity { +class SdaiAction_directive : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiAction_directive_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _name ; - SdaiString _description ; - SdaiString _analysis ; - SdaiString _comment ; + SCLP23(String) _name ; + SCLP23(String) _description ; + SCLP23(String) _analysis ; + SCLP23(String) _comment ; EntityAggregate _requests ; // of versioned_action_request public: SdaiAction_directive ( ); - SdaiAction_directive (STEPentity *se ); + SdaiAction_directive (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiAction_directive (SdaiAction_directive& e ); ~SdaiAction_directive (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 17 ; } - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiText Description() const; - void Description (const char * x); - const SdaiText Analysis() const; - void Analysis (const char * x); - const SdaiText Comment() const; - void Comment (const char * x); - const EntityAggregateH Requests() const; - void Requests (EntityAggregateH x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiText analysis_() const; + void analysis_ (const SdaiText x); + + const SdaiText comment_() const; + void comment_ (const SdaiText x); + + const EntityAggregate_ptr requests_() const; + void requests_ (const EntityAggregate_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiAction_directive_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiAction_directive(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiAction_directive () { return (SCLP23(Application_instance_ptr)) new SdaiAction_directive ; } +#else inline SdaiAction_directive * create_SdaiAction_directive () { return new SdaiAction_directive ; } +#endif -///////// END_ENTITY action_directive +///////// END_ENTITY action_directive -///////// ENTITY named_unit +///////// ENTITY named_unit extern AttrDescriptor *a_34dimensions; -class SdaiNamed_unit : public STEPentity { +class SdaiNamed_unit : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiNamed_unit_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiDimensional_exponentsH _dimensions ; + SCLP23(Application_instance_ptr) _dimensions ; public: SdaiNamed_unit ( ); - SdaiNamed_unit (STEPentity *se ); + SdaiNamed_unit (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiNamed_unit (SdaiNamed_unit& e ); ~SdaiNamed_unit (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 18 ; } - SdaiDimensional_exponentsH Dimensions() const; - void Dimensions (SdaiDimensional_exponentsH x); + const SdaiDimensional_exponents_ptr dimensions_() const; + void dimensions_ (const SdaiDimensional_exponents_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiNamed_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiNamed_unit(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiNamed_unit () { return (SCLP23(Application_instance_ptr)) new SdaiNamed_unit ; } +#else inline SdaiNamed_unit * create_SdaiNamed_unit () { return new SdaiNamed_unit ; } +#endif -///////// END_ENTITY named_unit +///////// END_ENTITY named_unit -///////// ENTITY plane_angle_unit +///////// ENTITY plane_angle_unit class SdaiPlane_angle_unit : public SdaiNamed_unit { - protected: + +#ifdef __OSTORE__ + friend void SdaiPlane_angle_unit_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiPlane_angle_unit ( ); - SdaiPlane_angle_unit (STEPentity *se ); + SdaiPlane_angle_unit (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiPlane_angle_unit (SdaiPlane_angle_unit& e ); ~SdaiPlane_angle_unit (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 19 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiPlane_angle_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiPlane_angle_unit(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiPlane_angle_unit () { return (SCLP23(Application_instance_ptr)) new SdaiPlane_angle_unit ; } +#else inline SdaiPlane_angle_unit * create_SdaiPlane_angle_unit () { return new SdaiPlane_angle_unit ; } +#endif -///////// END_ENTITY plane_angle_unit +///////// END_ENTITY plane_angle_unit -///////// ENTITY measure_with_unit +///////// ENTITY measure_with_unit extern AttrDescriptor *a_35value_component; extern AttrDescriptor *a_36unit_component; -class SdaiMeasure_with_unit : public STEPentity { +class SdaiMeasure_with_unit : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiMeasure_with_unit_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: SdaiMeasure_value _value_component ; SdaiUnit _unit_component ; public: SdaiMeasure_with_unit ( ); - SdaiMeasure_with_unit (STEPentity *se ); + SdaiMeasure_with_unit (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiMeasure_with_unit (SdaiMeasure_with_unit& e ); ~SdaiMeasure_with_unit (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 20 ; } - const SdaiMeasure_valueH Value_component() const; - void Value_component (SdaiMeasure_valueH x); - const SdaiUnitH Unit_component() const; - void Unit_component (SdaiUnitH x); + const SdaiMeasure_value_ptr value_component_() const; + void value_component_ (const SdaiMeasure_value_ptr x); + + const SdaiUnit_ptr unit_component_() const; + void unit_component_ (const SdaiUnit_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiMeasure_with_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiMeasure_with_unit(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiMeasure_with_unit () { return (SCLP23(Application_instance_ptr)) new SdaiMeasure_with_unit ; } +#else inline SdaiMeasure_with_unit * create_SdaiMeasure_with_unit () { return new SdaiMeasure_with_unit ; } +#endif -///////// END_ENTITY measure_with_unit +///////// END_ENTITY measure_with_unit -///////// ENTITY area_measure_with_unit +///////// ENTITY area_measure_with_unit class SdaiArea_measure_with_unit : public SdaiMeasure_with_unit { - protected: + +#ifdef __OSTORE__ + friend void SdaiArea_measure_with_unit_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiArea_measure_with_unit ( ); - SdaiArea_measure_with_unit (STEPentity *se ); + SdaiArea_measure_with_unit (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiArea_measure_with_unit (SdaiArea_measure_with_unit& e ); ~SdaiArea_measure_with_unit (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 21 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiArea_measure_with_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiArea_measure_with_unit(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiArea_measure_with_unit () { return (SCLP23(Application_instance_ptr)) new SdaiArea_measure_with_unit ; } +#else inline SdaiArea_measure_with_unit * create_SdaiArea_measure_with_unit () { return new SdaiArea_measure_with_unit ; } +#endif -///////// END_ENTITY area_measure_with_unit +///////// END_ENTITY area_measure_with_unit -///////// ENTITY effectivity +///////// ENTITY effectivity extern AttrDescriptor *a_37id; -class SdaiEffectivity : public STEPentity { +class SdaiEffectivity : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiEffectivity_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _id ; + SCLP23(String) _id ; public: SdaiEffectivity ( ); - SdaiEffectivity (STEPentity *se ); + SdaiEffectivity (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiEffectivity (SdaiEffectivity& e ); ~SdaiEffectivity (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 22 ; } - const SdaiIdentifier Id() const; - void Id (const char * x); + const SdaiIdentifier id_() const; + void id_ (const SdaiIdentifier x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiEffectivity_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiEffectivity(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiEffectivity () { return (SCLP23(Application_instance_ptr)) new SdaiEffectivity ; } +#else inline SdaiEffectivity * create_SdaiEffectivity () { return new SdaiEffectivity ; } +#endif -///////// END_ENTITY effectivity +///////// END_ENTITY effectivity -///////// ENTITY serial_numbered_effectivity +///////// ENTITY serial_numbered_effectivity extern AttrDescriptor *a_38effectivity_start_id; extern AttrDescriptor *a_39effectivity_end_id; class SdaiSerial_numbered_effectivity : public SdaiEffectivity { - protected: - SdaiString _effectivity_start_id ; - SdaiString _effectivity_end_id ; // OPTIONAL + +#ifdef __OSTORE__ + friend void SdaiSerial_numbered_effectivity_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(String) _effectivity_start_id ; + SCLP23(String) _effectivity_end_id ; // OPTIONAL public: SdaiSerial_numbered_effectivity ( ); - SdaiSerial_numbered_effectivity (STEPentity *se ); + SdaiSerial_numbered_effectivity (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiSerial_numbered_effectivity (SdaiSerial_numbered_effectivity& e ); ~SdaiSerial_numbered_effectivity (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 23 ; } - const SdaiIdentifier Effectivity_start_id() const; - void Effectivity_start_id (const char * x); - const SdaiIdentifier Effectivity_end_id() const; - void Effectivity_end_id (const char * x); + const SdaiIdentifier effectivity_start_id_() const; + void effectivity_start_id_ (const SdaiIdentifier x); + + const SdaiIdentifier effectivity_end_id_() const; + void effectivity_end_id_ (const SdaiIdentifier x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiSerial_numbered_effectivity_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiSerial_numbered_effectivity(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiSerial_numbered_effectivity () { return (SCLP23(Application_instance_ptr)) new SdaiSerial_numbered_effectivity ; } +#else inline SdaiSerial_numbered_effectivity * create_SdaiSerial_numbered_effectivity () { return new SdaiSerial_numbered_effectivity ; } +#endif -///////// END_ENTITY serial_numbered_effectivity +///////// END_ENTITY serial_numbered_effectivity -///////// ENTITY surface +///////// ENTITY surface class SdaiSurface : public SdaiGeometric_representation_item { - protected: + +#ifdef __OSTORE__ + friend void SdaiSurface_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiSurface ( ); - SdaiSurface (STEPentity *se ); + SdaiSurface (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiSurface (SdaiSurface& e ); ~SdaiSurface (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 24 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiSurface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiSurface(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiSurface () { return (SCLP23(Application_instance_ptr)) new SdaiSurface ; } +#else inline SdaiSurface * create_SdaiSurface () { return new SdaiSurface ; } +#endif -///////// END_ENTITY surface +///////// END_ENTITY surface -///////// ENTITY offset_surface +///////// ENTITY offset_surface extern AttrDescriptor *a_40basis_surface; extern AttrDescriptor *a_41distance; extern AttrDescriptor *a_42self_intersect; class SdaiOffset_surface : public SdaiSurface { - protected: - SdaiSurfaceH _basis_surface ; - SdaiReal _distance ; - SdaiLogical _self_intersect ; + +#ifdef __OSTORE__ + friend void SdaiOffset_surface_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _basis_surface ; + SCLP23(Real) _distance ; + SCLP23(LOGICAL) _self_intersect ; public: SdaiOffset_surface ( ); - SdaiOffset_surface (STEPentity *se ); + SdaiOffset_surface (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiOffset_surface (SdaiOffset_surface& e ); ~SdaiOffset_surface (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 25 ; } - SdaiSurfaceH Basis_surface() const; - void Basis_surface (SdaiSurfaceH x); - const SdaiLength_measure Distance() const; - void Distance (SdaiLength_measure x); - const LOGICAL Self_intersect() const; - void Self_intersect (LOGICAL x); + const SdaiSurface_ptr basis_surface_() const; + void basis_surface_ (const SdaiSurface_ptr x); + + const SdaiLength_measure distance_() const; + void distance_ (const SdaiLength_measure x); + + const SCLLOG(Logical) self_intersect_() const; + void self_intersect_ (const SCLLOG(Logical) x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiOffset_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiOffset_surface(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiOffset_surface () { return (SCLP23(Application_instance_ptr)) new SdaiOffset_surface ; } +#else inline SdaiOffset_surface * create_SdaiOffset_surface () { return new SdaiOffset_surface ; } +#endif -///////// END_ENTITY offset_surface +///////// END_ENTITY offset_surface -///////// ENTITY placement +///////// ENTITY placement extern AttrDescriptor *a_43location; class SdaiPlacement : public SdaiGeometric_representation_item { - protected: - SdaiCartesian_pointH _location ; + +#ifdef __OSTORE__ + friend void SdaiPlacement_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _location ; public: SdaiPlacement ( ); - SdaiPlacement (STEPentity *se ); + SdaiPlacement (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiPlacement (SdaiPlacement& e ); ~SdaiPlacement (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 26 ; } - SdaiCartesian_pointH Location() const; - void Location (SdaiCartesian_pointH x); + const SdaiCartesian_point_ptr location_() const; + void location_ (const SdaiCartesian_point_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiPlacement_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiPlacement(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiPlacement () { return (SCLP23(Application_instance_ptr)) new SdaiPlacement ; } +#else inline SdaiPlacement * create_SdaiPlacement () { return new SdaiPlacement ; } +#endif -///////// END_ENTITY placement +///////// END_ENTITY placement -///////// ENTITY axis2_placement_2d +///////// ENTITY axis2_placement_2d extern AttrDescriptor *a_44ref_direction; -extern AttrDescriptor *a_45Dp; +extern Derived_attribute *a_45Dp; class SdaiAxis2_placement_2d : public SdaiPlacement { - protected: - SdaiDirectionH _ref_direction ; // OPTIONAL + +#ifdef __OSTORE__ + friend void SdaiAxis2_placement_2d_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _ref_direction ; // OPTIONAL public: SdaiAxis2_placement_2d ( ); - SdaiAxis2_placement_2d (STEPentity *se ); + SdaiAxis2_placement_2d (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiAxis2_placement_2d (SdaiAxis2_placement_2d& e ); ~SdaiAxis2_placement_2d (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 27 ; } - SdaiDirectionH Ref_direction() const; - void Ref_direction (SdaiDirectionH x); + const SdaiDirection_ptr ref_direction_() const; + void ref_direction_ (const SdaiDirection_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiAxis2_placement_2d_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiAxis2_placement_2d(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiAxis2_placement_2d () { return (SCLP23(Application_instance_ptr)) new SdaiAxis2_placement_2d ; } +#else inline SdaiAxis2_placement_2d * create_SdaiAxis2_placement_2d () { return new SdaiAxis2_placement_2d ; } +#endif -///////// END_ENTITY axis2_placement_2d +///////// END_ENTITY axis2_placement_2d -///////// ENTITY product_category +///////// ENTITY product_category extern AttrDescriptor *a_46name; extern AttrDescriptor *a_47description; -class SdaiProduct_category : public STEPentity { +class SdaiProduct_category : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiProduct_category_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _name ; - SdaiString _description ; // OPTIONAL + SCLP23(String) _name ; + SCLP23(String) _description ; // OPTIONAL public: SdaiProduct_category ( ); - SdaiProduct_category (STEPentity *se ); + SdaiProduct_category (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiProduct_category (SdaiProduct_category& e ); ~SdaiProduct_category (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 28 ; } - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiText Description() const; - void Description (const char * x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiProduct_category_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiProduct_category(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiProduct_category () { return (SCLP23(Application_instance_ptr)) new SdaiProduct_category ; } +#else inline SdaiProduct_category * create_SdaiProduct_category () { return new SdaiProduct_category ; } +#endif -///////// END_ENTITY product_category +///////// END_ENTITY product_category -///////// ENTITY product_related_product_category +///////// ENTITY product_related_product_category extern AttrDescriptor *a_48products; class SdaiProduct_related_product_category : public SdaiProduct_category { - protected: + +#ifdef __OSTORE__ + friend void SdaiProduct_related_product_category_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: EntityAggregate _products ; // of product public: SdaiProduct_related_product_category ( ); - SdaiProduct_related_product_category (STEPentity *se ); + SdaiProduct_related_product_category (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiProduct_related_product_category (SdaiProduct_related_product_category& e ); ~SdaiProduct_related_product_category (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 29 ; } - const EntityAggregateH Products() const; - void Products (EntityAggregateH x); + const EntityAggregate_ptr products_() const; + void products_ (const EntityAggregate_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiProduct_related_product_category_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiProduct_related_product_category(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiProduct_related_product_category () { return (SCLP23(Application_instance_ptr)) new SdaiProduct_related_product_category ; } +#else inline SdaiProduct_related_product_category * create_SdaiProduct_related_product_category () { return new SdaiProduct_related_product_category ; } +#endif -///////// END_ENTITY product_related_product_category +///////// END_ENTITY product_related_product_category -///////// ENTITY curve +///////// ENTITY curve class SdaiCurve : public SdaiGeometric_representation_item { - protected: + +#ifdef __OSTORE__ + friend void SdaiCurve_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiCurve ( ); - SdaiCurve (STEPentity *se ); + SdaiCurve (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiCurve (SdaiCurve& e ); ~SdaiCurve (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 30 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiCurve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiCurve(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiCurve () { return (SCLP23(Application_instance_ptr)) new SdaiCurve ; } +#else inline SdaiCurve * create_SdaiCurve () { return new SdaiCurve ; } +#endif -///////// END_ENTITY curve +///////// END_ENTITY curve -///////// ENTITY conic +///////// ENTITY conic extern AttrDescriptor *a_49position; class SdaiConic : public SdaiCurve { - protected: + +#ifdef __OSTORE__ + friend void SdaiConic_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: SdaiAxis2_placement _position ; public: SdaiConic ( ); - SdaiConic (STEPentity *se ); + SdaiConic (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiConic (SdaiConic& e ); ~SdaiConic (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 31 ; } - const SdaiAxis2_placementH Position() const; - void Position (SdaiAxis2_placementH x); + const SdaiAxis2_placement_ptr position_() const; + void position_ (const SdaiAxis2_placement_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiConic_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiConic(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiConic () { return (SCLP23(Application_instance_ptr)) new SdaiConic ; } +#else inline SdaiConic * create_SdaiConic () { return new SdaiConic ; } +#endif -///////// END_ENTITY conic +///////// END_ENTITY conic -///////// ENTITY hyperbola +///////// ENTITY hyperbola extern AttrDescriptor *a_50semi_axis; extern AttrDescriptor *a_51semi_imag_axis; class SdaiHyperbola : public SdaiConic { - protected: - SdaiReal _semi_axis ; - SdaiReal _semi_imag_axis ; + +#ifdef __OSTORE__ + friend void SdaiHyperbola_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Real) _semi_axis ; + SCLP23(Real) _semi_imag_axis ; public: SdaiHyperbola ( ); - SdaiHyperbola (STEPentity *se ); + SdaiHyperbola (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiHyperbola (SdaiHyperbola& e ); ~SdaiHyperbola (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 32 ; } - const SdaiPositive_length_measure Semi_axis() const; - void Semi_axis (SdaiPositive_length_measure x); - const SdaiPositive_length_measure Semi_imag_axis() const; - void Semi_imag_axis (SdaiPositive_length_measure x); + const SdaiPositive_length_measure semi_axis_() const; + void semi_axis_ (const SdaiPositive_length_measure x); + + const SdaiPositive_length_measure semi_imag_axis_() const; + void semi_imag_axis_ (const SdaiPositive_length_measure x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiHyperbola_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiHyperbola(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiHyperbola () { return (SCLP23(Application_instance_ptr)) new SdaiHyperbola ; } +#else inline SdaiHyperbola * create_SdaiHyperbola () { return new SdaiHyperbola ; } +#endif -///////// END_ENTITY hyperbola +///////// END_ENTITY hyperbola -///////// ENTITY address +///////// ENTITY address extern AttrDescriptor *a_52internal_location; extern AttrDescriptor *a_53street_number; @@ -5278,110 +7263,226 @@ extern AttrDescriptor *a_61telephone_number; extern AttrDescriptor *a_62electronic_mail_address; extern AttrDescriptor *a_63telex_number; -class SdaiAddress : public STEPentity { +class SdaiAddress : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiAddress_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _internal_location ; // OPTIONAL - SdaiString _street_number ; // OPTIONAL - SdaiString _street ; // OPTIONAL - SdaiString _postal_box ; // OPTIONAL - SdaiString _town ; // OPTIONAL - SdaiString _region ; // OPTIONAL - SdaiString _postal_code ; // OPTIONAL - SdaiString _country ; // OPTIONAL - SdaiString _facsimile_number ; // OPTIONAL - SdaiString _telephone_number ; // OPTIONAL - SdaiString _electronic_mail_address ; // OPTIONAL - SdaiString _telex_number ; // OPTIONAL + SCLP23(String) _internal_location ; // OPTIONAL + SCLP23(String) _street_number ; // OPTIONAL + SCLP23(String) _street ; // OPTIONAL + SCLP23(String) _postal_box ; // OPTIONAL + SCLP23(String) _town ; // OPTIONAL + SCLP23(String) _region ; // OPTIONAL + SCLP23(String) _postal_code ; // OPTIONAL + SCLP23(String) _country ; // OPTIONAL + SCLP23(String) _facsimile_number ; // OPTIONAL + SCLP23(String) _telephone_number ; // OPTIONAL + SCLP23(String) _electronic_mail_address ; // OPTIONAL + SCLP23(String) _telex_number ; // OPTIONAL public: SdaiAddress ( ); - SdaiAddress (STEPentity *se ); + SdaiAddress (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiAddress (SdaiAddress& e ); ~SdaiAddress (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 33 ; } - const SdaiLabel Internal_location() const; - void Internal_location (const char * x); - const SdaiLabel Street_number() const; - void Street_number (const char * x); - const SdaiLabel Street() const; - void Street (const char * x); - const SdaiLabel Postal_box() const; - void Postal_box (const char * x); - const SdaiLabel Town() const; - void Town (const char * x); - const SdaiLabel Region() const; - void Region (const char * x); - const SdaiLabel Postal_code() const; - void Postal_code (const char * x); - const SdaiLabel Country() const; - void Country (const char * x); - const SdaiLabel Facsimile_number() const; - void Facsimile_number (const char * x); - const SdaiLabel Telephone_number() const; - void Telephone_number (const char * x); - const SdaiLabel Electronic_mail_address() const; - void Electronic_mail_address (const char * x); - const SdaiLabel Telex_number() const; - void Telex_number (const char * x); + const SdaiLabel internal_location_() const; + void internal_location_ (const SdaiLabel x); + + const SdaiLabel street_number_() const; + void street_number_ (const SdaiLabel x); + + const SdaiLabel street_() const; + void street_ (const SdaiLabel x); + + const SdaiLabel postal_box_() const; + void postal_box_ (const SdaiLabel x); + + const SdaiLabel town_() const; + void town_ (const SdaiLabel x); + + const SdaiLabel region_() const; + void region_ (const SdaiLabel x); + + const SdaiLabel postal_code_() const; + void postal_code_ (const SdaiLabel x); + + const SdaiLabel country_() const; + void country_ (const SdaiLabel x); + + const SdaiLabel facsimile_number_() const; + void facsimile_number_ (const SdaiLabel x); + + const SdaiLabel telephone_number_() const; + void telephone_number_ (const SdaiLabel x); + + const SdaiLabel electronic_mail_address_() const; + void electronic_mail_address_ (const SdaiLabel x); + + const SdaiLabel telex_number_() const; + void telex_number_ (const SdaiLabel x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiAddress_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiAddress(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiAddress () { return (SCLP23(Application_instance_ptr)) new SdaiAddress ; } +#else inline SdaiAddress * create_SdaiAddress () { return new SdaiAddress ; } +#endif -///////// END_ENTITY address +///////// END_ENTITY address -///////// ENTITY organizational_address +///////// ENTITY organizational_address extern AttrDescriptor *a_64organizations; extern AttrDescriptor *a_65description; class SdaiOrganizational_address : public SdaiAddress { - protected: + +#ifdef __OSTORE__ + friend void SdaiOrganizational_address_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: EntityAggregate _organizations ; // of organization - SdaiString _description ; + SCLP23(String) _description ; public: SdaiOrganizational_address ( ); - SdaiOrganizational_address (STEPentity *se ); + SdaiOrganizational_address (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiOrganizational_address (SdaiOrganizational_address& e ); ~SdaiOrganizational_address (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 34 ; } - const EntityAggregateH Organizations() const; - void Organizations (EntityAggregateH x); - const SdaiText Description() const; - void Description (const char * x); + const EntityAggregate_ptr organizations_() const; + void organizations_ (const EntityAggregate_ptr x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiOrganizational_address_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiOrganizational_address(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiOrganizational_address () { return (SCLP23(Application_instance_ptr)) new SdaiOrganizational_address ; } +#else inline SdaiOrganizational_address * create_SdaiOrganizational_address () { return new SdaiOrganizational_address ; } +#endif -///////// END_ENTITY organizational_address +///////// END_ENTITY organizational_address -///////// ENTITY bounded_surface +///////// ENTITY bounded_surface class SdaiBounded_surface : public SdaiSurface { - protected: + +#ifdef __OSTORE__ + friend void SdaiBounded_surface_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiBounded_surface ( ); - SdaiBounded_surface (STEPentity *se ); + SdaiBounded_surface (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiBounded_surface (SdaiBounded_surface& e ); ~SdaiBounded_surface (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 35 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiBounded_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiBounded_surface(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiBounded_surface () { return (SCLP23(Application_instance_ptr)) new SdaiBounded_surface ; } +#else inline SdaiBounded_surface * create_SdaiBounded_surface () { return new SdaiBounded_surface ; } +#endif -///////// END_ENTITY bounded_surface +///////// END_ENTITY bounded_surface -///////// ENTITY b_spline_surface +///////// ENTITY b_spline_surface extern AttrDescriptor *a_66u_degree; extern AttrDescriptor *a_67v_degree; @@ -5390,439 +7491,1007 @@ extern AttrDescriptor *a_69surface_form; extern AttrDescriptor *a_70u_closed; extern AttrDescriptor *a_71v_closed; extern AttrDescriptor *a_72self_intersect; -extern AttrDescriptor *a_73Du_upper; -extern AttrDescriptor *a_74Dv_upper; -extern AttrDescriptor *a_75Dcontrol_points; +extern Derived_attribute *a_73Du_upper; +extern Derived_attribute *a_74Dv_upper; +extern Derived_attribute *a_75Dcontrol_points; class SdaiB_spline_surface : public SdaiBounded_surface { - protected: - SdaiInteger _u_degree ; - SdaiInteger _v_degree ; + +#ifdef __OSTORE__ + friend void SdaiB_spline_surface_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Integer) _u_degree ; + SCLP23(Integer) _v_degree ; GenericAggregate _control_points_list ; // of cartesian_point - SdaiB_spline_surface_form _surface_form ; - SdaiLogical _u_closed ; - SdaiLogical _v_closed ; - SdaiLogical _self_intersect ; + SdaiB_spline_surface_form_var _surface_form ; + SCLP23(LOGICAL) _u_closed ; + SCLP23(LOGICAL) _v_closed ; + SCLP23(LOGICAL) _self_intersect ; public: SdaiB_spline_surface ( ); - SdaiB_spline_surface (STEPentity *se ); + SdaiB_spline_surface (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiB_spline_surface (SdaiB_spline_surface& e ); ~SdaiB_spline_surface (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 36 ; } - const SdaiInteger U_degree() const; - void U_degree (SdaiInteger x); - const SdaiInteger V_degree() const; - void V_degree (SdaiInteger x); - const GenericAggregateH Control_points_list() const; - void Control_points_list (GenericAggregateH x); - const sdaiB_spline_surface_form Surface_form() const; - void Surface_form (sdaiB_spline_surface_form x); - const LOGICAL U_closed() const; - void U_closed (LOGICAL x); - const LOGICAL V_closed() const; - void V_closed (LOGICAL x); - const LOGICAL Self_intersect() const; - void Self_intersect (LOGICAL x); + const SCLP23(Integer) u_degree_() const; + void u_degree_ (const SCLP23(Integer) x); + + const SCLP23(Integer) v_degree_() const; + void v_degree_ (const SCLP23(Integer) x); + + const GenericAggregate_ptr control_points_list_() const; + void control_points_list_ (const GenericAggregate_ptr x); + + const SdaiB_spline_surface_form_var surface_form_() const; + void surface_form_ (const SdaiB_spline_surface_form_var x); + + const SCLLOG(Logical) u_closed_() const; + void u_closed_ (const SCLLOG(Logical) x); + + const SCLLOG(Logical) v_closed_() const; + void v_closed_ (const SCLLOG(Logical) x); + + const SCLLOG(Logical) self_intersect_() const; + void self_intersect_ (const SCLLOG(Logical) x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiB_spline_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiB_spline_surface(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiB_spline_surface () { return (SCLP23(Application_instance_ptr)) new SdaiB_spline_surface ; } +#else inline SdaiB_spline_surface * create_SdaiB_spline_surface () { return new SdaiB_spline_surface ; } +#endif -///////// END_ENTITY b_spline_surface +///////// END_ENTITY b_spline_surface -///////// ENTITY uniform_surface +///////// ENTITY uniform_surface class SdaiUniform_surface : public SdaiB_spline_surface { - protected: + +#ifdef __OSTORE__ + friend void SdaiUniform_surface_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiUniform_surface ( ); - SdaiUniform_surface (STEPentity *se ); + SdaiUniform_surface (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiUniform_surface (SdaiUniform_surface& e ); ~SdaiUniform_surface (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 37 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiUniform_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiUniform_surface(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiUniform_surface () { return (SCLP23(Application_instance_ptr)) new SdaiUniform_surface ; } +#else inline SdaiUniform_surface * create_SdaiUniform_surface () { return new SdaiUniform_surface ; } +#endif -///////// END_ENTITY uniform_surface +///////// END_ENTITY uniform_surface -///////// ENTITY geometrically_bounded_surface_shape_representation +///////// ENTITY geometrically_bounded_surface_shape_representation class SdaiGeometrically_bounded_surface_shape_representation : public SdaiShape_representation { - protected: + +#ifdef __OSTORE__ + friend void SdaiGeometrically_bounded_surface_shape_representation_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiGeometrically_bounded_surface_shape_representation ( ); - SdaiGeometrically_bounded_surface_shape_representation (STEPentity *se ); + SdaiGeometrically_bounded_surface_shape_representation (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiGeometrically_bounded_surface_shape_representation (SdaiGeometrically_bounded_surface_shape_representation& e ); ~SdaiGeometrically_bounded_surface_shape_representation (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 38 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiGeometrically_bounded_surface_shape_representation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiGeometrically_bounded_surface_shape_representation(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiGeometrically_bounded_surface_shape_representation () { return (SCLP23(Application_instance_ptr)) new SdaiGeometrically_bounded_surface_shape_representation ; } +#else inline SdaiGeometrically_bounded_surface_shape_representation * create_SdaiGeometrically_bounded_surface_shape_representation () { return new SdaiGeometrically_bounded_surface_shape_representation ; } +#endif -///////// END_ENTITY geometrically_bounded_surface_shape_representation +///////// END_ENTITY geometrically_bounded_surface_shape_representation -///////// ENTITY axis1_placement +///////// ENTITY axis1_placement extern AttrDescriptor *a_76axis; -extern AttrDescriptor *a_77Dz; +extern Derived_attribute *a_77Dz; class SdaiAxis1_placement : public SdaiPlacement { - protected: - SdaiDirectionH _axis ; // OPTIONAL + +#ifdef __OSTORE__ + friend void SdaiAxis1_placement_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _axis ; // OPTIONAL public: SdaiAxis1_placement ( ); - SdaiAxis1_placement (STEPentity *se ); + SdaiAxis1_placement (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiAxis1_placement (SdaiAxis1_placement& e ); ~SdaiAxis1_placement (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 39 ; } - SdaiDirectionH Axis() const; - void Axis (SdaiDirectionH x); + const SdaiDirection_ptr axis_() const; + void axis_ (const SdaiDirection_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiAxis1_placement_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiAxis1_placement(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiAxis1_placement () { return (SCLP23(Application_instance_ptr)) new SdaiAxis1_placement ; } +#else inline SdaiAxis1_placement * create_SdaiAxis1_placement () { return new SdaiAxis1_placement ; } +#endif -///////// END_ENTITY axis1_placement +///////// END_ENTITY axis1_placement -///////// ENTITY bounded_curve +///////// ENTITY bounded_curve class SdaiBounded_curve : public SdaiCurve { - protected: + +#ifdef __OSTORE__ + friend void SdaiBounded_curve_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiBounded_curve ( ); - SdaiBounded_curve (STEPentity *se ); + SdaiBounded_curve (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiBounded_curve (SdaiBounded_curve& e ); ~SdaiBounded_curve (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 40 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiBounded_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiBounded_curve(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiBounded_curve () { return (SCLP23(Application_instance_ptr)) new SdaiBounded_curve ; } +#else inline SdaiBounded_curve * create_SdaiBounded_curve () { return new SdaiBounded_curve ; } +#endif -///////// END_ENTITY bounded_curve +///////// END_ENTITY bounded_curve -///////// ENTITY b_spline_curve +///////// ENTITY b_spline_curve extern AttrDescriptor *a_78degree; extern AttrDescriptor *a_79control_points_list; extern AttrDescriptor *a_80curve_form; extern AttrDescriptor *a_81closed_curve; extern AttrDescriptor *a_82self_intersect; -extern AttrDescriptor *a_83Dupper_index_on_control_points; -extern AttrDescriptor *a_84Dcontrol_points; +extern Derived_attribute *a_83Dupper_index_on_control_points; +extern Derived_attribute *a_84Dcontrol_points; class SdaiB_spline_curve : public SdaiBounded_curve { - protected: - SdaiInteger _degree ; + +#ifdef __OSTORE__ + friend void SdaiB_spline_curve_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Integer) _degree ; EntityAggregate _control_points_list ; // of cartesian_point - SdaiB_spline_curve_form _curve_form ; - SdaiLogical _closed_curve ; - SdaiLogical _self_intersect ; + SdaiB_spline_curve_form_var _curve_form ; + SCLP23(LOGICAL) _closed_curve ; + SCLP23(LOGICAL) _self_intersect ; public: SdaiB_spline_curve ( ); - SdaiB_spline_curve (STEPentity *se ); + SdaiB_spline_curve (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiB_spline_curve (SdaiB_spline_curve& e ); ~SdaiB_spline_curve (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 41 ; } - const SdaiInteger Degree() const; - void Degree (SdaiInteger x); - const EntityAggregateH Control_points_list() const; - void Control_points_list (EntityAggregateH x); - const sdaiB_spline_curve_form Curve_form() const; - void Curve_form (sdaiB_spline_curve_form x); - const LOGICAL Closed_curve() const; - void Closed_curve (LOGICAL x); - const LOGICAL Self_intersect() const; - void Self_intersect (LOGICAL x); + const SCLP23(Integer) degree_() const; + void degree_ (const SCLP23(Integer) x); + + const EntityAggregate_ptr control_points_list_() const; + void control_points_list_ (const EntityAggregate_ptr x); + + const SdaiB_spline_curve_form_var curve_form_() const; + void curve_form_ (const SdaiB_spline_curve_form_var x); + + const SCLLOG(Logical) closed_curve_() const; + void closed_curve_ (const SCLLOG(Logical) x); + + const SCLLOG(Logical) self_intersect_() const; + void self_intersect_ (const SCLLOG(Logical) x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiB_spline_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiB_spline_curve(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiB_spline_curve () { return (SCLP23(Application_instance_ptr)) new SdaiB_spline_curve ; } +#else inline SdaiB_spline_curve * create_SdaiB_spline_curve () { return new SdaiB_spline_curve ; } +#endif -///////// END_ENTITY b_spline_curve +///////// END_ENTITY b_spline_curve -///////// ENTITY rational_b_spline_curve +///////// ENTITY rational_b_spline_curve extern AttrDescriptor *a_85weights_data; -extern AttrDescriptor *a_86Dweights; +extern Derived_attribute *a_86Dweights; class SdaiRational_b_spline_curve : public SdaiB_spline_curve { - protected: + +#ifdef __OSTORE__ + friend void SdaiRational_b_spline_curve_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: RealAggregate _weights_data ; public: SdaiRational_b_spline_curve ( ); - SdaiRational_b_spline_curve (STEPentity *se ); + SdaiRational_b_spline_curve (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiRational_b_spline_curve (SdaiRational_b_spline_curve& e ); ~SdaiRational_b_spline_curve (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 42 ; } - const RealAggregateH Weights_data() const; - void Weights_data (RealAggregateH x); + const RealAggregate_ptr weights_data_() const; + void weights_data_ (const RealAggregate_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiRational_b_spline_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiRational_b_spline_curve(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiRational_b_spline_curve () { return (SCLP23(Application_instance_ptr)) new SdaiRational_b_spline_curve ; } +#else inline SdaiRational_b_spline_curve * create_SdaiRational_b_spline_curve () { return new SdaiRational_b_spline_curve ; } +#endif -///////// END_ENTITY rational_b_spline_curve +///////// END_ENTITY rational_b_spline_curve -///////// ENTITY action_request_assignment +///////// ENTITY action_request_assignment extern AttrDescriptor *a_87assigned_action_request; -class SdaiAction_request_assignment : public STEPentity { +class SdaiAction_request_assignment : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiAction_request_assignment_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiVersioned_action_requestH _assigned_action_request ; + SCLP23(Application_instance_ptr) _assigned_action_request ; public: SdaiAction_request_assignment ( ); - SdaiAction_request_assignment (STEPentity *se ); + SdaiAction_request_assignment (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiAction_request_assignment (SdaiAction_request_assignment& e ); ~SdaiAction_request_assignment (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 43 ; } - SdaiVersioned_action_requestH Assigned_action_request() const; - void Assigned_action_request (SdaiVersioned_action_requestH x); + const SdaiVersioned_action_request_ptr assigned_action_request_() const; + void assigned_action_request_ (const SdaiVersioned_action_request_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiAction_request_assignment_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiAction_request_assignment(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiAction_request_assignment () { return (SCLP23(Application_instance_ptr)) new SdaiAction_request_assignment ; } +#else inline SdaiAction_request_assignment * create_SdaiAction_request_assignment () { return new SdaiAction_request_assignment ; } +#endif -///////// END_ENTITY action_request_assignment +///////// END_ENTITY action_request_assignment -///////// ENTITY topological_representation_item +///////// ENTITY topological_representation_item class SdaiTopological_representation_item : public SdaiRepresentation_item { - protected: + +#ifdef __OSTORE__ + friend void SdaiTopological_representation_item_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiTopological_representation_item ( ); - SdaiTopological_representation_item (STEPentity *se ); + SdaiTopological_representation_item (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiTopological_representation_item (SdaiTopological_representation_item& e ); ~SdaiTopological_representation_item (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 44 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiTopological_representation_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiTopological_representation_item(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiTopological_representation_item () { return (SCLP23(Application_instance_ptr)) new SdaiTopological_representation_item ; } +#else inline SdaiTopological_representation_item * create_SdaiTopological_representation_item () { return new SdaiTopological_representation_item ; } +#endif -///////// END_ENTITY topological_representation_item +///////// END_ENTITY topological_representation_item -///////// ENTITY face_bound +///////// ENTITY face_bound extern AttrDescriptor *a_88bound; extern AttrDescriptor *a_89orientation; class SdaiFace_bound : public SdaiTopological_representation_item { - protected: - SdaiLoopH _bound ; - SdaiBoolean _orientation ; + +#ifdef __OSTORE__ + friend void SdaiFace_bound_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _bound ; + SCLP23(BOOL) _orientation ; public: SdaiFace_bound ( ); - SdaiFace_bound (STEPentity *se ); + SdaiFace_bound (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiFace_bound (SdaiFace_bound& e ); ~SdaiFace_bound (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 45 ; } - SdaiLoopH Bound() const; - void Bound (SdaiLoopH x); - const BOOLEAN Orientation() const; - void Orientation (BOOLEAN x); + const SdaiLoop_ptr bound_() const; + void bound_ (const SdaiLoop_ptr x); + + const SCLBOOL(Bool) orientation_() const; + void orientation_ (const SCLBOOL(Bool) x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiFace_bound_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiFace_bound(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiFace_bound () { return (SCLP23(Application_instance_ptr)) new SdaiFace_bound ; } +#else inline SdaiFace_bound * create_SdaiFace_bound () { return new SdaiFace_bound ; } +#endif -///////// END_ENTITY face_bound +///////// END_ENTITY face_bound -///////// ENTITY length_measure_with_unit +///////// ENTITY length_measure_with_unit class SdaiLength_measure_with_unit : public SdaiMeasure_with_unit { - protected: + +#ifdef __OSTORE__ + friend void SdaiLength_measure_with_unit_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiLength_measure_with_unit ( ); - SdaiLength_measure_with_unit (STEPentity *se ); + SdaiLength_measure_with_unit (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiLength_measure_with_unit (SdaiLength_measure_with_unit& e ); ~SdaiLength_measure_with_unit (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 46 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiLength_measure_with_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiLength_measure_with_unit(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiLength_measure_with_unit () { return (SCLP23(Application_instance_ptr)) new SdaiLength_measure_with_unit ; } +#else inline SdaiLength_measure_with_unit * create_SdaiLength_measure_with_unit () { return new SdaiLength_measure_with_unit ; } +#endif -///////// END_ENTITY length_measure_with_unit +///////// END_ENTITY length_measure_with_unit -///////// ENTITY dated_effectivity +///////// ENTITY dated_effectivity extern AttrDescriptor *a_90effectivity_start_date; extern AttrDescriptor *a_91effectivity_end_date; class SdaiDated_effectivity : public SdaiEffectivity { - protected: - SdaiDate_and_timeH _effectivity_start_date ; - SdaiDate_and_timeH _effectivity_end_date ; // OPTIONAL + +#ifdef __OSTORE__ + friend void SdaiDated_effectivity_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _effectivity_start_date ; + SCLP23(Application_instance_ptr) _effectivity_end_date ; // OPTIONAL public: SdaiDated_effectivity ( ); - SdaiDated_effectivity (STEPentity *se ); + SdaiDated_effectivity (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiDated_effectivity (SdaiDated_effectivity& e ); ~SdaiDated_effectivity (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 47 ; } - SdaiDate_and_timeH Effectivity_start_date() const; - void Effectivity_start_date (SdaiDate_and_timeH x); - SdaiDate_and_timeH Effectivity_end_date() const; - void Effectivity_end_date (SdaiDate_and_timeH x); + const SdaiDate_and_time_ptr effectivity_start_date_() const; + void effectivity_start_date_ (const SdaiDate_and_time_ptr x); + + const SdaiDate_and_time_ptr effectivity_end_date_() const; + void effectivity_end_date_ (const SdaiDate_and_time_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiDated_effectivity_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiDated_effectivity(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiDated_effectivity () { return (SCLP23(Application_instance_ptr)) new SdaiDated_effectivity ; } +#else inline SdaiDated_effectivity * create_SdaiDated_effectivity () { return new SdaiDated_effectivity ; } +#endif -///////// END_ENTITY dated_effectivity +///////// END_ENTITY dated_effectivity -///////// ENTITY direction +///////// ENTITY direction extern AttrDescriptor *a_92direction_ratios; class SdaiDirection : public SdaiGeometric_representation_item { - protected: + +#ifdef __OSTORE__ + friend void SdaiDirection_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: RealAggregate _direction_ratios ; public: SdaiDirection ( ); - SdaiDirection (STEPentity *se ); + SdaiDirection (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiDirection (SdaiDirection& e ); ~SdaiDirection (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 48 ; } - const RealAggregateH Direction_ratios() const; - void Direction_ratios (RealAggregateH x); + const RealAggregate_ptr direction_ratios_() const; + void direction_ratios_ (const RealAggregate_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiDirection_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiDirection(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiDirection () { return (SCLP23(Application_instance_ptr)) new SdaiDirection ; } +#else inline SdaiDirection * create_SdaiDirection () { return new SdaiDirection ; } +#endif -///////// END_ENTITY direction +///////// END_ENTITY direction -///////// ENTITY next_assembly_usage_occurrence +///////// ENTITY next_assembly_usage_occurrence class SdaiNext_assembly_usage_occurrence : public SdaiAssembly_component_usage { - protected: + +#ifdef __OSTORE__ + friend void SdaiNext_assembly_usage_occurrence_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiNext_assembly_usage_occurrence ( ); - SdaiNext_assembly_usage_occurrence (STEPentity *se ); + SdaiNext_assembly_usage_occurrence (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiNext_assembly_usage_occurrence (SdaiNext_assembly_usage_occurrence& e ); ~SdaiNext_assembly_usage_occurrence (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 49 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiNext_assembly_usage_occurrence_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiNext_assembly_usage_occurrence(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiNext_assembly_usage_occurrence () { return (SCLP23(Application_instance_ptr)) new SdaiNext_assembly_usage_occurrence ; } +#else inline SdaiNext_assembly_usage_occurrence * create_SdaiNext_assembly_usage_occurrence () { return new SdaiNext_assembly_usage_occurrence ; } +#endif -///////// END_ENTITY next_assembly_usage_occurrence +///////// END_ENTITY next_assembly_usage_occurrence -///////// ENTITY edge +///////// ENTITY edge extern AttrDescriptor *a_93edge_start; extern AttrDescriptor *a_94edge_end; class SdaiEdge : public SdaiTopological_representation_item { - protected: - SdaiVertexH _edge_start ; - SdaiVertexH _edge_end ; + +#ifdef __OSTORE__ + friend void SdaiEdge_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _edge_start ; + SCLP23(Application_instance_ptr) _edge_end ; public: SdaiEdge ( ); - SdaiEdge (STEPentity *se ); + SdaiEdge (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiEdge (SdaiEdge& e ); ~SdaiEdge (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 50 ; } - SdaiVertexH Edge_start() const; - void Edge_start (SdaiVertexH x); - SdaiVertexH Edge_end() const; - void Edge_end (SdaiVertexH x); + const SdaiVertex_ptr edge_start_() const; + void edge_start_ (const SdaiVertex_ptr x); + + const SdaiVertex_ptr edge_end_() const; + void edge_end_ (const SdaiVertex_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiEdge_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiEdge(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiEdge () { return (SCLP23(Application_instance_ptr)) new SdaiEdge ; } +#else inline SdaiEdge * create_SdaiEdge () { return new SdaiEdge ; } +#endif -///////// END_ENTITY edge +///////// END_ENTITY edge -///////// ENTITY oriented_edge +///////// ENTITY oriented_edge extern AttrDescriptor *a_95edge_element; extern AttrDescriptor *a_96orientation; -extern AttrDescriptor *a_97Dedge_edge_start; -extern AttrDescriptor *a_98Dedge_edge_end; +extern Derived_attribute *a_97Dedge_edge_start; +extern Derived_attribute *a_98Dedge_edge_end; class SdaiOriented_edge : public SdaiEdge { - protected: - SdaiEdgeH _edge_element ; - SdaiBoolean _orientation ; + +#ifdef __OSTORE__ + friend void SdaiOriented_edge_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _edge_element ; + SCLP23(BOOL) _orientation ; public: SdaiOriented_edge ( ); - SdaiOriented_edge (STEPentity *se ); + SdaiOriented_edge (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiOriented_edge (SdaiOriented_edge& e ); ~SdaiOriented_edge (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 51 ; } - SdaiEdgeH Edge_element() const; - void Edge_element (SdaiEdgeH x); - const BOOLEAN Orientation() const; - void Orientation (BOOLEAN x); + const SdaiEdge_ptr edge_element_() const; + void edge_element_ (const SdaiEdge_ptr x); + + const SCLBOOL(Bool) orientation_() const; + void orientation_ (const SCLBOOL(Bool) x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiOriented_edge_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiOriented_edge(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiOriented_edge () { return (SCLP23(Application_instance_ptr)) new SdaiOriented_edge ; } +#else inline SdaiOriented_edge * create_SdaiOriented_edge () { return new SdaiOriented_edge ; } +#endif -///////// END_ENTITY oriented_edge +///////// END_ENTITY oriented_edge -///////// ENTITY person +///////// ENTITY person extern AttrDescriptor *a_99id; extern AttrDescriptor *a_100last_name; @@ -5831,11 +8500,16 @@ extern AttrDescriptor *a_102middle_names; extern AttrDescriptor *a_103prefix_titles; extern AttrDescriptor *a_104suffix_titles; -class SdaiPerson : public STEPentity { +class SdaiPerson : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiPerson_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _id ; - SdaiString _last_name ; // OPTIONAL - SdaiString _first_name ; // OPTIONAL + SCLP23(String) _id ; + SCLP23(String) _last_name ; // OPTIONAL + SCLP23(String) _first_name ; // OPTIONAL StringAggregate _middle_names ; // OPTIONAL // of label StringAggregate _prefix_titles ; // OPTIONAL // of label @@ -5845,257 +8519,580 @@ class SdaiPerson : public STEPentity { public: SdaiPerson ( ); - SdaiPerson (STEPentity *se ); + SdaiPerson (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiPerson (SdaiPerson& e ); ~SdaiPerson (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 52 ; } - const SdaiIdentifier Id() const; - void Id (const char * x); - const SdaiLabel Last_name() const; - void Last_name (const char * x); - const SdaiLabel First_name() const; - void First_name (const char * x); - const StringAggregateH Middle_names() const; - void Middle_names (StringAggregateH x); - const StringAggregateH Prefix_titles() const; - void Prefix_titles (StringAggregateH x); - const StringAggregateH Suffix_titles() const; - void Suffix_titles (StringAggregateH x); + const SdaiIdentifier id_() const; + void id_ (const SdaiIdentifier x); + + const SdaiLabel last_name_() const; + void last_name_ (const SdaiLabel x); + + const SdaiLabel first_name_() const; + void first_name_ (const SdaiLabel x); + + const StringAggregate_ptr middle_names_() const; + void middle_names_ (const StringAggregate_ptr x); + + const StringAggregate_ptr prefix_titles_() const; + void prefix_titles_ (const StringAggregate_ptr x); + + const StringAggregate_ptr suffix_titles_() const; + void suffix_titles_ (const StringAggregate_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiPerson_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiPerson(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiPerson () { return (SCLP23(Application_instance_ptr)) new SdaiPerson ; } +#else inline SdaiPerson * create_SdaiPerson () { return new SdaiPerson ; } +#endif -///////// END_ENTITY person +///////// END_ENTITY person -///////// ENTITY document +///////// ENTITY document extern AttrDescriptor *a_105id; extern AttrDescriptor *a_106name; extern AttrDescriptor *a_107description; extern AttrDescriptor *a_108kind; -class SdaiDocument : public STEPentity { +class SdaiDocument : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiDocument_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _id ; - SdaiString _name ; - SdaiString _description ; - SdaiDocument_typeH _kind ; + SCLP23(String) _id ; + SCLP23(String) _name ; + SCLP23(String) _description ; + SCLP23(Application_instance_ptr) _kind ; public: SdaiDocument ( ); - SdaiDocument (STEPentity *se ); + SdaiDocument (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiDocument (SdaiDocument& e ); ~SdaiDocument (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 53 ; } - const SdaiIdentifier Id() const; - void Id (const char * x); - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiText Description() const; - void Description (const char * x); - SdaiDocument_typeH Kind() const; - void Kind (SdaiDocument_typeH x); + const SdaiIdentifier id_() const; + void id_ (const SdaiIdentifier x); + + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiDocument_type_ptr kind_() const; + void kind_ (const SdaiDocument_type_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiDocument_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiDocument(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiDocument () { return (SCLP23(Application_instance_ptr)) new SdaiDocument ; } +#else inline SdaiDocument * create_SdaiDocument () { return new SdaiDocument ; } +#endif -///////// END_ENTITY document +///////// END_ENTITY document -///////// ENTITY document_with_class +///////// ENTITY document_with_class extern AttrDescriptor *a_109class; class SdaiDocument_with_class : public SdaiDocument { - protected: - SdaiString _class ; + +#ifdef __OSTORE__ + friend void SdaiDocument_with_class_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(String) _class ; public: SdaiDocument_with_class ( ); - SdaiDocument_with_class (STEPentity *se ); + SdaiDocument_with_class (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiDocument_with_class (SdaiDocument_with_class& e ); ~SdaiDocument_with_class (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 54 ; } - const SdaiIdentifier Class() const; - void Class (const char * x); + const SdaiIdentifier class_() const; + void class_ (const SdaiIdentifier x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiDocument_with_class_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiDocument_with_class(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiDocument_with_class () { return (SCLP23(Application_instance_ptr)) new SdaiDocument_with_class ; } +#else inline SdaiDocument_with_class * create_SdaiDocument_with_class () { return new SdaiDocument_with_class ; } +#endif -///////// END_ENTITY document_with_class +///////// END_ENTITY document_with_class -///////// ENTITY conversion_based_unit +///////// ENTITY conversion_based_unit extern AttrDescriptor *a_110name; extern AttrDescriptor *a_111conversion_factor; class SdaiConversion_based_unit : public SdaiNamed_unit { - protected: - SdaiString _name ; - SdaiMeasure_with_unitH _conversion_factor ; + +#ifdef __OSTORE__ + friend void SdaiConversion_based_unit_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(String) _name ; + SCLP23(Application_instance_ptr) _conversion_factor ; public: SdaiConversion_based_unit ( ); - SdaiConversion_based_unit (STEPentity *se ); + SdaiConversion_based_unit (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiConversion_based_unit (SdaiConversion_based_unit& e ); ~SdaiConversion_based_unit (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 55 ; } - const SdaiLabel Name() const; - void Name (const char * x); - SdaiMeasure_with_unitH Conversion_factor() const; - void Conversion_factor (SdaiMeasure_with_unitH x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiMeasure_with_unit_ptr conversion_factor_() const; + void conversion_factor_ (const SdaiMeasure_with_unit_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiConversion_based_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiConversion_based_unit(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiConversion_based_unit () { return (SCLP23(Application_instance_ptr)) new SdaiConversion_based_unit ; } +#else inline SdaiConversion_based_unit * create_SdaiConversion_based_unit () { return new SdaiConversion_based_unit ; } +#endif -///////// END_ENTITY conversion_based_unit +///////// END_ENTITY conversion_based_unit -///////// ENTITY point +///////// ENTITY point class SdaiPoint : public SdaiGeometric_representation_item { - protected: + +#ifdef __OSTORE__ + friend void SdaiPoint_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiPoint ( ); - SdaiPoint (STEPentity *se ); + SdaiPoint (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiPoint (SdaiPoint& e ); ~SdaiPoint (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 56 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiPoint_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiPoint(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiPoint () { return (SCLP23(Application_instance_ptr)) new SdaiPoint ; } +#else inline SdaiPoint * create_SdaiPoint () { return new SdaiPoint ; } +#endif -///////// END_ENTITY point +///////// END_ENTITY point -///////// ENTITY point_on_surface +///////// ENTITY point_on_surface extern AttrDescriptor *a_112basis_surface; extern AttrDescriptor *a_113point_parameter_u; extern AttrDescriptor *a_114point_parameter_v; class SdaiPoint_on_surface : public SdaiPoint { - protected: - SdaiSurfaceH _basis_surface ; - SdaiReal _point_parameter_u ; - SdaiReal _point_parameter_v ; + +#ifdef __OSTORE__ + friend void SdaiPoint_on_surface_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _basis_surface ; + SCLP23(Real) _point_parameter_u ; + SCLP23(Real) _point_parameter_v ; public: SdaiPoint_on_surface ( ); - SdaiPoint_on_surface (STEPentity *se ); + SdaiPoint_on_surface (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiPoint_on_surface (SdaiPoint_on_surface& e ); ~SdaiPoint_on_surface (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 57 ; } - SdaiSurfaceH Basis_surface() const; - void Basis_surface (SdaiSurfaceH x); - const SdaiParameter_value Point_parameter_u() const; - void Point_parameter_u (SdaiParameter_value x); - const SdaiParameter_value Point_parameter_v() const; - void Point_parameter_v (SdaiParameter_value x); + const SdaiSurface_ptr basis_surface_() const; + void basis_surface_ (const SdaiSurface_ptr x); + + const SdaiParameter_value point_parameter_u_() const; + void point_parameter_u_ (const SdaiParameter_value x); + + const SdaiParameter_value point_parameter_v_() const; + void point_parameter_v_ (const SdaiParameter_value x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiPoint_on_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiPoint_on_surface(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiPoint_on_surface () { return (SCLP23(Application_instance_ptr)) new SdaiPoint_on_surface ; } +#else inline SdaiPoint_on_surface * create_SdaiPoint_on_surface () { return new SdaiPoint_on_surface ; } +#endif -///////// END_ENTITY point_on_surface +///////// END_ENTITY point_on_surface -///////// ENTITY product_definition_formation +///////// ENTITY product_definition_formation extern AttrDescriptor *a_115id; extern AttrDescriptor *a_116description; extern AttrDescriptor *a_117of_product; -class SdaiProduct_definition_formation : public STEPentity { +class SdaiProduct_definition_formation : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiProduct_definition_formation_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _id ; - SdaiString _description ; - SdaiProductH _of_product ; + SCLP23(String) _id ; + SCLP23(String) _description ; + SCLP23(Application_instance_ptr) _of_product ; public: SdaiProduct_definition_formation ( ); - SdaiProduct_definition_formation (STEPentity *se ); + SdaiProduct_definition_formation (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiProduct_definition_formation (SdaiProduct_definition_formation& e ); ~SdaiProduct_definition_formation (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 58 ; } - const SdaiIdentifier Id() const; - void Id (const char * x); - const SdaiText Description() const; - void Description (const char * x); - SdaiProductH Of_product() const; - void Of_product (SdaiProductH x); + const SdaiIdentifier id_() const; + void id_ (const SdaiIdentifier x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiProduct_ptr of_product_() const; + void of_product_ (const SdaiProduct_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiProduct_definition_formation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiProduct_definition_formation(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiProduct_definition_formation () { return (SCLP23(Application_instance_ptr)) new SdaiProduct_definition_formation ; } +#else inline SdaiProduct_definition_formation * create_SdaiProduct_definition_formation () { return new SdaiProduct_definition_formation ; } +#endif -///////// END_ENTITY product_definition_formation +///////// END_ENTITY product_definition_formation -///////// ENTITY person_and_organization_assignment +///////// ENTITY person_and_organization_assignment extern AttrDescriptor *a_118assigned_person_and_organization; extern AttrDescriptor *a_119role; -class SdaiPerson_and_organization_assignment : public STEPentity { +class SdaiPerson_and_organization_assignment : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiPerson_and_organization_assignment_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiPerson_and_organizationH _assigned_person_and_organization ; - SdaiPerson_and_organization_roleH _role ; + SCLP23(Application_instance_ptr) _assigned_person_and_organization ; + SCLP23(Application_instance_ptr) _role ; public: SdaiPerson_and_organization_assignment ( ); - SdaiPerson_and_organization_assignment (STEPentity *se ); + SdaiPerson_and_organization_assignment (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiPerson_and_organization_assignment (SdaiPerson_and_organization_assignment& e ); ~SdaiPerson_and_organization_assignment (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 59 ; } - SdaiPerson_and_organizationH Assigned_person_and_organization() const; - void Assigned_person_and_organization (SdaiPerson_and_organizationH x); - SdaiPerson_and_organization_roleH Role() const; - void Role (SdaiPerson_and_organization_roleH x); + const SdaiPerson_and_organization_ptr assigned_person_and_organization_() const; + void assigned_person_and_organization_ (const SdaiPerson_and_organization_ptr x); + + const SdaiPerson_and_organization_role_ptr role_() const; + void role_ (const SdaiPerson_and_organization_role_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiPerson_and_organization_assignment_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiPerson_and_organization_assignment(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiPerson_and_organization_assignment () { return (SCLP23(Application_instance_ptr)) new SdaiPerson_and_organization_assignment ; } +#else inline SdaiPerson_and_organization_assignment * create_SdaiPerson_and_organization_assignment () { return new SdaiPerson_and_organization_assignment ; } +#endif -///////// END_ENTITY person_and_organization_assignment +///////// END_ENTITY person_and_organization_assignment -///////// ENTITY cc_design_person_and_organization_assignment +///////// ENTITY cc_design_person_and_organization_assignment extern AttrDescriptor *a_120items; class SdaiCc_design_person_and_organization_assignment : public SdaiPerson_and_organization_assignment { - protected: + +#ifdef __OSTORE__ + friend void SdaiCc_design_person_and_organization_assignment_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: SdaiPerson_organization_items _items ; // of person_organization_item public: SdaiCc_design_person_and_organization_assignment ( ); - SdaiCc_design_person_and_organization_assignment (STEPentity *se ); + SdaiCc_design_person_and_organization_assignment (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiCc_design_person_and_organization_assignment (SdaiCc_design_person_and_organization_assignment& e ); ~SdaiCc_design_person_and_organization_assignment (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 60 ; } - const SdaiPerson_organization_itemsH Items() const; - void Items (SdaiPerson_organization_itemsH x); + const SdaiPerson_organization_items_ptr items_() const; + void items_ (const SdaiPerson_organization_items_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiCc_design_person_and_organization_assignment_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiCc_design_person_and_organization_assignment(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiCc_design_person_and_organization_assignment () { return (SCLP23(Application_instance_ptr)) new SdaiCc_design_person_and_organization_assignment ; } +#else inline SdaiCc_design_person_and_organization_assignment * create_SdaiCc_design_person_and_organization_assignment () { return new SdaiCc_design_person_and_organization_assignment ; } +#endif -///////// END_ENTITY cc_design_person_and_organization_assignment +///////// END_ENTITY cc_design_person_and_organization_assignment -///////// ENTITY offset_curve_3d +///////// ENTITY offset_curve_3d extern AttrDescriptor *a_121basis_curve; extern AttrDescriptor *a_122distance; @@ -6103,1524 +9100,3548 @@ extern AttrDescriptor *a_123self_intersect; extern AttrDescriptor *a_124ref_direction; class SdaiOffset_curve_3d : public SdaiCurve { - protected: - SdaiCurveH _basis_curve ; - SdaiReal _distance ; - SdaiLogical _self_intersect ; - SdaiDirectionH _ref_direction ; + +#ifdef __OSTORE__ + friend void SdaiOffset_curve_3d_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _basis_curve ; + SCLP23(Real) _distance ; + SCLP23(LOGICAL) _self_intersect ; + SCLP23(Application_instance_ptr) _ref_direction ; public: SdaiOffset_curve_3d ( ); - SdaiOffset_curve_3d (STEPentity *se ); + SdaiOffset_curve_3d (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiOffset_curve_3d (SdaiOffset_curve_3d& e ); ~SdaiOffset_curve_3d (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 61 ; } - SdaiCurveH Basis_curve() const; - void Basis_curve (SdaiCurveH x); - const SdaiLength_measure Distance() const; - void Distance (SdaiLength_measure x); - const LOGICAL Self_intersect() const; - void Self_intersect (LOGICAL x); - SdaiDirectionH Ref_direction() const; - void Ref_direction (SdaiDirectionH x); + const SdaiCurve_ptr basis_curve_() const; + void basis_curve_ (const SdaiCurve_ptr x); + + const SdaiLength_measure distance_() const; + void distance_ (const SdaiLength_measure x); + + const SCLLOG(Logical) self_intersect_() const; + void self_intersect_ (const SCLLOG(Logical) x); + + const SdaiDirection_ptr ref_direction_() const; + void ref_direction_ (const SdaiDirection_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiOffset_curve_3d_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiOffset_curve_3d(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiOffset_curve_3d () { return (SCLP23(Application_instance_ptr)) new SdaiOffset_curve_3d ; } +#else inline SdaiOffset_curve_3d * create_SdaiOffset_curve_3d () { return new SdaiOffset_curve_3d ; } +#endif -///////// END_ENTITY offset_curve_3d +///////// END_ENTITY offset_curve_3d -///////// ENTITY approval +///////// ENTITY approval extern AttrDescriptor *a_125status; extern AttrDescriptor *a_126level; -class SdaiApproval : public STEPentity { +class SdaiApproval : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiApproval_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiApproval_statusH _status ; - SdaiString _level ; + SCLP23(Application_instance_ptr) _status ; + SCLP23(String) _level ; public: SdaiApproval ( ); - SdaiApproval (STEPentity *se ); + SdaiApproval (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiApproval (SdaiApproval& e ); ~SdaiApproval (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 62 ; } - SdaiApproval_statusH Status() const; - void Status (SdaiApproval_statusH x); - const SdaiLabel Level() const; - void Level (const char * x); + const SdaiApproval_status_ptr status_() const; + void status_ (const SdaiApproval_status_ptr x); + + const SdaiLabel level_() const; + void level_ (const SdaiLabel x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiApproval_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiApproval(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiApproval () { return (SCLP23(Application_instance_ptr)) new SdaiApproval ; } +#else inline SdaiApproval * create_SdaiApproval () { return new SdaiApproval ; } +#endif -///////// END_ENTITY approval +///////// END_ENTITY approval -///////// ENTITY composite_curve +///////// ENTITY composite_curve extern AttrDescriptor *a_127segments; extern AttrDescriptor *a_128self_intersect; -extern AttrDescriptor *a_129Dn_segments; -extern AttrDescriptor *a_130Dclosed_curve; +extern Derived_attribute *a_129Dn_segments; +extern Derived_attribute *a_130Dclosed_curve; class SdaiComposite_curve : public SdaiBounded_curve { - protected: + +#ifdef __OSTORE__ + friend void SdaiComposite_curve_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: EntityAggregate _segments ; // of composite_curve_segment - SdaiLogical _self_intersect ; + SCLP23(LOGICAL) _self_intersect ; public: SdaiComposite_curve ( ); - SdaiComposite_curve (STEPentity *se ); + SdaiComposite_curve (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiComposite_curve (SdaiComposite_curve& e ); ~SdaiComposite_curve (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 63 ; } - const EntityAggregateH Segments() const; - void Segments (EntityAggregateH x); - const LOGICAL Self_intersect() const; - void Self_intersect (LOGICAL x); + const EntityAggregate_ptr segments_() const; + void segments_ (const EntityAggregate_ptr x); + + const SCLLOG(Logical) self_intersect_() const; + void self_intersect_ (const SCLLOG(Logical) x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiComposite_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiComposite_curve(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiComposite_curve () { return (SCLP23(Application_instance_ptr)) new SdaiComposite_curve ; } +#else inline SdaiComposite_curve * create_SdaiComposite_curve () { return new SdaiComposite_curve ; } +#endif -///////// END_ENTITY composite_curve +///////// END_ENTITY composite_curve -///////// ENTITY composite_curve_on_surface +///////// ENTITY composite_curve_on_surface -extern AttrDescriptor *a_131Dbasis_surface; +extern Derived_attribute *a_131Dbasis_surface; class SdaiComposite_curve_on_surface : public SdaiComposite_curve { - protected: + +#ifdef __OSTORE__ + friend void SdaiComposite_curve_on_surface_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiComposite_curve_on_surface ( ); - SdaiComposite_curve_on_surface (STEPentity *se ); + SdaiComposite_curve_on_surface (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiComposite_curve_on_surface (SdaiComposite_curve_on_surface& e ); ~SdaiComposite_curve_on_surface (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 64 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiComposite_curve_on_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiComposite_curve_on_surface(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiComposite_curve_on_surface () { return (SCLP23(Application_instance_ptr)) new SdaiComposite_curve_on_surface ; } +#else inline SdaiComposite_curve_on_surface * create_SdaiComposite_curve_on_surface () { return new SdaiComposite_curve_on_surface ; } +#endif -///////// END_ENTITY composite_curve_on_surface +///////// END_ENTITY composite_curve_on_surface -///////// ENTITY boundary_curve +///////// ENTITY boundary_curve class SdaiBoundary_curve : public SdaiComposite_curve_on_surface { - protected: + +#ifdef __OSTORE__ + friend void SdaiBoundary_curve_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiBoundary_curve ( ); - SdaiBoundary_curve (STEPentity *se ); + SdaiBoundary_curve (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiBoundary_curve (SdaiBoundary_curve& e ); ~SdaiBoundary_curve (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 65 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiBoundary_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiBoundary_curve(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiBoundary_curve () { return (SCLP23(Application_instance_ptr)) new SdaiBoundary_curve ; } +#else inline SdaiBoundary_curve * create_SdaiBoundary_curve () { return new SdaiBoundary_curve ; } +#endif -///////// END_ENTITY boundary_curve +///////// END_ENTITY boundary_curve -///////// ENTITY representation_context +///////// ENTITY representation_context extern AttrDescriptor *a_132context_identifier; extern AttrDescriptor *a_133context_type; -extern InverseAttrDescriptor *a_134Irepresentations_in_context; +extern Inverse_attribute *a_134Irepresentations_in_context; -class SdaiRepresentation_context : public STEPentity { +class SdaiRepresentation_context : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiRepresentation_context_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _context_identifier ; - SdaiString _context_type ; + SCLP23(String) _context_identifier ; + SCLP23(String) _context_type ; EntityAggregate _representations_in_context ; // of representation public: SdaiRepresentation_context ( ); - SdaiRepresentation_context (STEPentity *se ); + SdaiRepresentation_context (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiRepresentation_context (SdaiRepresentation_context& e ); ~SdaiRepresentation_context (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 66 ; } - const SdaiIdentifier Context_identifier() const; - void Context_identifier (const char * x); - const SdaiText Context_type() const; - void Context_type (const char * x); - const EntityAggregateH Representations_in_context() const; - void Representations_in_context (EntityAggregateH x); + const SdaiIdentifier context_identifier_() const; + void context_identifier_ (const SdaiIdentifier x); + + const SdaiText context_type_() const; + void context_type_ (const SdaiText x); + + const EntityAggregate_ptr representations_in_context_() const; + void representations_in_context_ (const EntityAggregate_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiRepresentation_context_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiRepresentation_context(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiRepresentation_context () { return (SCLP23(Application_instance_ptr)) new SdaiRepresentation_context ; } +#else inline SdaiRepresentation_context * create_SdaiRepresentation_context () { return new SdaiRepresentation_context ; } +#endif -///////// END_ENTITY representation_context +///////// END_ENTITY representation_context -///////// ENTITY geometric_representation_context +///////// ENTITY geometric_representation_context extern AttrDescriptor *a_135coordinate_space_dimension; class SdaiGeometric_representation_context : public SdaiRepresentation_context { - protected: - SdaiInteger _coordinate_space_dimension ; + +#ifdef __OSTORE__ + friend void SdaiGeometric_representation_context_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Integer) _coordinate_space_dimension ; public: SdaiGeometric_representation_context ( ); - SdaiGeometric_representation_context (STEPentity *se ); + SdaiGeometric_representation_context (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiGeometric_representation_context (SdaiGeometric_representation_context& e ); ~SdaiGeometric_representation_context (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 67 ; } - const SdaiDimension_count Coordinate_space_dimension() const; - void Coordinate_space_dimension (SdaiDimension_count x); + const SdaiDimension_count coordinate_space_dimension_() const; + void coordinate_space_dimension_ (const SdaiDimension_count x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiGeometric_representation_context_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiGeometric_representation_context(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiGeometric_representation_context () { return (SCLP23(Application_instance_ptr)) new SdaiGeometric_representation_context ; } +#else inline SdaiGeometric_representation_context * create_SdaiGeometric_representation_context () { return new SdaiGeometric_representation_context ; } +#endif -///////// END_ENTITY geometric_representation_context +///////// END_ENTITY geometric_representation_context -///////// ENTITY action_status +///////// ENTITY action_status extern AttrDescriptor *a_136status; extern AttrDescriptor *a_137assigned_action; -class SdaiAction_status : public STEPentity { +class SdaiAction_status : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiAction_status_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _status ; - SdaiExecuted_actionH _assigned_action ; + SCLP23(String) _status ; + SCLP23(Application_instance_ptr) _assigned_action ; public: SdaiAction_status ( ); - SdaiAction_status (STEPentity *se ); + SdaiAction_status (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiAction_status (SdaiAction_status& e ); ~SdaiAction_status (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 68 ; } - const SdaiLabel Status() const; - void Status (const char * x); - SdaiExecuted_actionH Assigned_action() const; - void Assigned_action (SdaiExecuted_actionH x); + const SdaiLabel status_() const; + void status_ (const SdaiLabel x); + + const SdaiExecuted_action_ptr assigned_action_() const; + void assigned_action_ (const SdaiExecuted_action_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiAction_status_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiAction_status(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiAction_status () { return (SCLP23(Application_instance_ptr)) new SdaiAction_status ; } +#else inline SdaiAction_status * create_SdaiAction_status () { return new SdaiAction_status ; } +#endif -///////// END_ENTITY action_status +///////// END_ENTITY action_status -///////// ENTITY application_context +///////// ENTITY application_context extern AttrDescriptor *a_138application; -extern InverseAttrDescriptor *a_139Icontext_elements; +extern Inverse_attribute *a_139Icontext_elements; -class SdaiApplication_context : public STEPentity { +class SdaiApplication_context : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiApplication_context_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _application ; + SCLP23(String) _application ; EntityAggregate _context_elements ; // of application_context_element public: SdaiApplication_context ( ); - SdaiApplication_context (STEPentity *se ); + SdaiApplication_context (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiApplication_context (SdaiApplication_context& e ); ~SdaiApplication_context (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 69 ; } - const SdaiText Application() const; - void Application (const char * x); - const EntityAggregateH Context_elements() const; - void Context_elements (EntityAggregateH x); + const SdaiText application_() const; + void application_ (const SdaiText x); + + const EntityAggregate_ptr context_elements_() const; + void context_elements_ (const EntityAggregate_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiApplication_context_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiApplication_context(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiApplication_context () { return (SCLP23(Application_instance_ptr)) new SdaiApplication_context ; } +#else inline SdaiApplication_context * create_SdaiApplication_context () { return new SdaiApplication_context ; } +#endif -///////// END_ENTITY application_context +///////// END_ENTITY application_context -///////// ENTITY change_request +///////// ENTITY change_request extern AttrDescriptor *a_140items; class SdaiChange_request : public SdaiAction_request_assignment { - protected: + +#ifdef __OSTORE__ + friend void SdaiChange_request_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: SdaiChange_request_items _items ; // of change_request_item public: SdaiChange_request ( ); - SdaiChange_request (STEPentity *se ); + SdaiChange_request (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiChange_request (SdaiChange_request& e ); ~SdaiChange_request (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 70 ; } - const SdaiChange_request_itemsH Items() const; - void Items (SdaiChange_request_itemsH x); + const SdaiChange_request_items_ptr items_() const; + void items_ (const SdaiChange_request_items_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiChange_request_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiChange_request(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiChange_request () { return (SCLP23(Application_instance_ptr)) new SdaiChange_request ; } +#else inline SdaiChange_request * create_SdaiChange_request () { return new SdaiChange_request ; } +#endif -///////// END_ENTITY change_request +///////// END_ENTITY change_request -///////// ENTITY date_and_time +///////// ENTITY date_and_time extern AttrDescriptor *a_141date_component; extern AttrDescriptor *a_142time_component; -class SdaiDate_and_time : public STEPentity { +class SdaiDate_and_time : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiDate_and_time_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiDateH _date_component ; - SdaiLocal_timeH _time_component ; + SCLP23(Application_instance_ptr) _date_component ; + SCLP23(Application_instance_ptr) _time_component ; public: SdaiDate_and_time ( ); - SdaiDate_and_time (STEPentity *se ); + SdaiDate_and_time (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiDate_and_time (SdaiDate_and_time& e ); ~SdaiDate_and_time (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 71 ; } - SdaiDateH Date_component() const; - void Date_component (SdaiDateH x); - SdaiLocal_timeH Time_component() const; - void Time_component (SdaiLocal_timeH x); + const SdaiDate_ptr date_component_() const; + void date_component_ (const SdaiDate_ptr x); + + const SdaiLocal_time_ptr time_component_() const; + void time_component_ (const SdaiLocal_time_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiDate_and_time_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiDate_and_time(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiDate_and_time () { return (SCLP23(Application_instance_ptr)) new SdaiDate_and_time ; } +#else inline SdaiDate_and_time * create_SdaiDate_and_time () { return new SdaiDate_and_time ; } +#endif -///////// END_ENTITY date_and_time +///////// END_ENTITY date_and_time -///////// ENTITY approval_date_time +///////// ENTITY approval_date_time extern AttrDescriptor *a_143date_time; extern AttrDescriptor *a_144dated_approval; -class SdaiApproval_date_time : public STEPentity { +class SdaiApproval_date_time : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiApproval_date_time_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: SdaiDate_time_select _date_time ; - SdaiApprovalH _dated_approval ; + SCLP23(Application_instance_ptr) _dated_approval ; public: SdaiApproval_date_time ( ); - SdaiApproval_date_time (STEPentity *se ); + SdaiApproval_date_time (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiApproval_date_time (SdaiApproval_date_time& e ); ~SdaiApproval_date_time (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 72 ; } - const SdaiDate_time_selectH Date_time() const; - void Date_time (SdaiDate_time_selectH x); - SdaiApprovalH Dated_approval() const; - void Dated_approval (SdaiApprovalH x); + const SdaiDate_time_select_ptr date_time_() const; + void date_time_ (const SdaiDate_time_select_ptr x); + + const SdaiApproval_ptr dated_approval_() const; + void dated_approval_ (const SdaiApproval_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiApproval_date_time_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiApproval_date_time(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiApproval_date_time () { return (SCLP23(Application_instance_ptr)) new SdaiApproval_date_time ; } +#else inline SdaiApproval_date_time * create_SdaiApproval_date_time () { return new SdaiApproval_date_time ; } +#endif -///////// END_ENTITY approval_date_time +///////// END_ENTITY approval_date_time -///////// ENTITY approval_role +///////// ENTITY approval_role extern AttrDescriptor *a_145role; -class SdaiApproval_role : public STEPentity { +class SdaiApproval_role : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiApproval_role_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _role ; + SCLP23(String) _role ; public: SdaiApproval_role ( ); - SdaiApproval_role (STEPentity *se ); + SdaiApproval_role (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiApproval_role (SdaiApproval_role& e ); ~SdaiApproval_role (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 73 ; } - const SdaiLabel Role() const; - void Role (const char * x); + const SdaiLabel role_() const; + void role_ (const SdaiLabel x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiApproval_role_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiApproval_role(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiApproval_role () { return (SCLP23(Application_instance_ptr)) new SdaiApproval_role ; } +#else inline SdaiApproval_role * create_SdaiApproval_role () { return new SdaiApproval_role ; } +#endif -///////// END_ENTITY approval_role +///////// END_ENTITY approval_role -///////// ENTITY application_context_element +///////// ENTITY application_context_element extern AttrDescriptor *a_146name; extern AttrDescriptor *a_147frame_of_reference; -class SdaiApplication_context_element : public STEPentity { +class SdaiApplication_context_element : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiApplication_context_element_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _name ; - SdaiApplication_contextH _frame_of_reference ; + SCLP23(String) _name ; + SCLP23(Application_instance_ptr) _frame_of_reference ; public: SdaiApplication_context_element ( ); - SdaiApplication_context_element (STEPentity *se ); + SdaiApplication_context_element (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiApplication_context_element (SdaiApplication_context_element& e ); ~SdaiApplication_context_element (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 74 ; } - const SdaiLabel Name() const; - void Name (const char * x); - SdaiApplication_contextH Frame_of_reference() const; - void Frame_of_reference (SdaiApplication_contextH x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiApplication_context_ptr frame_of_reference_() const; + void frame_of_reference_ (const SdaiApplication_context_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiApplication_context_element_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiApplication_context_element(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiApplication_context_element () { return (SCLP23(Application_instance_ptr)) new SdaiApplication_context_element ; } +#else inline SdaiApplication_context_element * create_SdaiApplication_context_element () { return new SdaiApplication_context_element ; } +#endif -///////// END_ENTITY application_context_element +///////// END_ENTITY application_context_element -///////// ENTITY product_context +///////// ENTITY product_context extern AttrDescriptor *a_148discipline_type; class SdaiProduct_context : public SdaiApplication_context_element { - protected: - SdaiString _discipline_type ; + +#ifdef __OSTORE__ + friend void SdaiProduct_context_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(String) _discipline_type ; public: SdaiProduct_context ( ); - SdaiProduct_context (STEPentity *se ); + SdaiProduct_context (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiProduct_context (SdaiProduct_context& e ); ~SdaiProduct_context (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 75 ; } - const SdaiLabel Discipline_type() const; - void Discipline_type (const char * x); + const SdaiLabel discipline_type_() const; + void discipline_type_ (const SdaiLabel x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiProduct_context_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiProduct_context(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiProduct_context () { return (SCLP23(Application_instance_ptr)) new SdaiProduct_context ; } +#else inline SdaiProduct_context * create_SdaiProduct_context () { return new SdaiProduct_context ; } +#endif -///////// END_ENTITY product_context +///////// END_ENTITY product_context -///////// ENTITY elementary_surface +///////// ENTITY elementary_surface extern AttrDescriptor *a_149position; class SdaiElementary_surface : public SdaiSurface { - protected: - SdaiAxis2_placement_3dH _position ; + +#ifdef __OSTORE__ + friend void SdaiElementary_surface_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _position ; public: SdaiElementary_surface ( ); - SdaiElementary_surface (STEPentity *se ); + SdaiElementary_surface (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiElementary_surface (SdaiElementary_surface& e ); ~SdaiElementary_surface (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 76 ; } - SdaiAxis2_placement_3dH Position() const; - void Position (SdaiAxis2_placement_3dH x); + const SdaiAxis2_placement_3d_ptr position_() const; + void position_ (const SdaiAxis2_placement_3d_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiElementary_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiElementary_surface(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiElementary_surface () { return (SCLP23(Application_instance_ptr)) new SdaiElementary_surface ; } +#else inline SdaiElementary_surface * create_SdaiElementary_surface () { return new SdaiElementary_surface ; } +#endif -///////// END_ENTITY elementary_surface +///////// END_ENTITY elementary_surface -///////// ENTITY spherical_surface +///////// ENTITY spherical_surface extern AttrDescriptor *a_150radius; class SdaiSpherical_surface : public SdaiElementary_surface { - protected: - SdaiReal _radius ; + +#ifdef __OSTORE__ + friend void SdaiSpherical_surface_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Real) _radius ; public: SdaiSpherical_surface ( ); - SdaiSpherical_surface (STEPentity *se ); + SdaiSpherical_surface (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiSpherical_surface (SdaiSpherical_surface& e ); ~SdaiSpherical_surface (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 77 ; } - const SdaiPositive_length_measure Radius() const; - void Radius (SdaiPositive_length_measure x); + const SdaiPositive_length_measure radius_() const; + void radius_ (const SdaiPositive_length_measure x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiSpherical_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiSpherical_surface(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiSpherical_surface () { return (SCLP23(Application_instance_ptr)) new SdaiSpherical_surface ; } +#else inline SdaiSpherical_surface * create_SdaiSpherical_surface () { return new SdaiSpherical_surface ; } +#endif -///////// END_ENTITY spherical_surface +///////// END_ENTITY spherical_surface -///////// ENTITY application_protocol_definition +///////// ENTITY application_protocol_definition extern AttrDescriptor *a_151status; extern AttrDescriptor *a_152application_interpreted_model_schema_name; extern AttrDescriptor *a_153application_protocol_year; extern AttrDescriptor *a_154application; -class SdaiApplication_protocol_definition : public STEPentity { +class SdaiApplication_protocol_definition : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiApplication_protocol_definition_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _status ; - SdaiString _application_interpreted_model_schema_name ; - SdaiInteger _application_protocol_year ; - SdaiApplication_contextH _application ; + SCLP23(String) _status ; + SCLP23(String) _application_interpreted_model_schema_name ; + SCLP23(Integer) _application_protocol_year ; + SCLP23(Application_instance_ptr) _application ; public: SdaiApplication_protocol_definition ( ); - SdaiApplication_protocol_definition (STEPentity *se ); + SdaiApplication_protocol_definition (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiApplication_protocol_definition (SdaiApplication_protocol_definition& e ); ~SdaiApplication_protocol_definition (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 78 ; } - const SdaiLabel Status() const; - void Status (const char * x); - const SdaiLabel Application_interpreted_model_schema_name() const; - void Application_interpreted_model_schema_name (const char * x); - const SdaiYear_number Application_protocol_year() const; - void Application_protocol_year (SdaiYear_number x); - SdaiApplication_contextH Application() const; - void Application (SdaiApplication_contextH x); + const SdaiLabel status_() const; + void status_ (const SdaiLabel x); + + const SdaiLabel application_interpreted_model_schema_name_() const; + void application_interpreted_model_schema_name_ (const SdaiLabel x); + + const SdaiYear_number application_protocol_year_() const; + void application_protocol_year_ (const SdaiYear_number x); + + const SdaiApplication_context_ptr application_() const; + void application_ (const SdaiApplication_context_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiApplication_protocol_definition_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiApplication_protocol_definition(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiApplication_protocol_definition () { return (SCLP23(Application_instance_ptr)) new SdaiApplication_protocol_definition ; } +#else inline SdaiApplication_protocol_definition * create_SdaiApplication_protocol_definition () { return new SdaiApplication_protocol_definition ; } +#endif -///////// END_ENTITY application_protocol_definition +///////// END_ENTITY application_protocol_definition -///////// ENTITY specified_higher_usage_occurrence +///////// ENTITY specified_higher_usage_occurrence extern AttrDescriptor *a_155upper_usage; extern AttrDescriptor *a_156next_usage; class SdaiSpecified_higher_usage_occurrence : public SdaiAssembly_component_usage { - protected: - SdaiAssembly_component_usageH _upper_usage ; - SdaiNext_assembly_usage_occurrenceH _next_usage ; + +#ifdef __OSTORE__ + friend void SdaiSpecified_higher_usage_occurrence_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _upper_usage ; + SCLP23(Application_instance_ptr) _next_usage ; public: SdaiSpecified_higher_usage_occurrence ( ); - SdaiSpecified_higher_usage_occurrence (STEPentity *se ); + SdaiSpecified_higher_usage_occurrence (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiSpecified_higher_usage_occurrence (SdaiSpecified_higher_usage_occurrence& e ); ~SdaiSpecified_higher_usage_occurrence (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 79 ; } - SdaiAssembly_component_usageH Upper_usage() const; - void Upper_usage (SdaiAssembly_component_usageH x); - SdaiNext_assembly_usage_occurrenceH Next_usage() const; - void Next_usage (SdaiNext_assembly_usage_occurrenceH x); + const SdaiAssembly_component_usage_ptr upper_usage_() const; + void upper_usage_ (const SdaiAssembly_component_usage_ptr x); + + const SdaiNext_assembly_usage_occurrence_ptr next_usage_() const; + void next_usage_ (const SdaiNext_assembly_usage_occurrence_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiSpecified_higher_usage_occurrence_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiSpecified_higher_usage_occurrence(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiSpecified_higher_usage_occurrence () { return (SCLP23(Application_instance_ptr)) new SdaiSpecified_higher_usage_occurrence ; } +#else inline SdaiSpecified_higher_usage_occurrence * create_SdaiSpecified_higher_usage_occurrence () { return new SdaiSpecified_higher_usage_occurrence ; } +#endif -///////// END_ENTITY specified_higher_usage_occurrence +///////// END_ENTITY specified_higher_usage_occurrence -///////// ENTITY product_definition_formation_with_specified_source +///////// ENTITY product_definition_formation_with_specified_source extern AttrDescriptor *a_157make_or_buy; class SdaiProduct_definition_formation_with_specified_source : public SdaiProduct_definition_formation { - protected: - SdaiSource _make_or_buy ; + +#ifdef __OSTORE__ + friend void SdaiProduct_definition_formation_with_specified_source_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SdaiSource_var _make_or_buy ; public: SdaiProduct_definition_formation_with_specified_source ( ); - SdaiProduct_definition_formation_with_specified_source (STEPentity *se ); + SdaiProduct_definition_formation_with_specified_source (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiProduct_definition_formation_with_specified_source (SdaiProduct_definition_formation_with_specified_source& e ); ~SdaiProduct_definition_formation_with_specified_source (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 80 ; } - const sdaiSource Make_or_buy() const; - void Make_or_buy (sdaiSource x); + const SdaiSource_var make_or_buy_() const; + void make_or_buy_ (const SdaiSource_var x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiProduct_definition_formation_with_specified_source_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiProduct_definition_formation_with_specified_source(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiProduct_definition_formation_with_specified_source () { return (SCLP23(Application_instance_ptr)) new SdaiProduct_definition_formation_with_specified_source ; } +#else inline SdaiProduct_definition_formation_with_specified_source * create_SdaiProduct_definition_formation_with_specified_source () { return new SdaiProduct_definition_formation_with_specified_source ; } +#endif -///////// END_ENTITY product_definition_formation_with_specified_source +///////// END_ENTITY product_definition_formation_with_specified_source -///////// ENTITY action_request_solution +///////// ENTITY action_request_solution extern AttrDescriptor *a_158method; extern AttrDescriptor *a_159request; -class SdaiAction_request_solution : public STEPentity { +class SdaiAction_request_solution : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiAction_request_solution_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiAction_methodH _method ; - SdaiVersioned_action_requestH _request ; + SCLP23(Application_instance_ptr) _method ; + SCLP23(Application_instance_ptr) _request ; public: SdaiAction_request_solution ( ); - SdaiAction_request_solution (STEPentity *se ); + SdaiAction_request_solution (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiAction_request_solution (SdaiAction_request_solution& e ); ~SdaiAction_request_solution (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 81 ; } - SdaiAction_methodH Method() const; - void Method (SdaiAction_methodH x); - SdaiVersioned_action_requestH Request() const; - void Request (SdaiVersioned_action_requestH x); + const SdaiAction_method_ptr method_() const; + void method_ (const SdaiAction_method_ptr x); + + const SdaiVersioned_action_request_ptr request_() const; + void request_ (const SdaiVersioned_action_request_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiAction_request_solution_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiAction_request_solution(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiAction_request_solution () { return (SCLP23(Application_instance_ptr)) new SdaiAction_request_solution ; } +#else inline SdaiAction_request_solution * create_SdaiAction_request_solution () { return new SdaiAction_request_solution ; } +#endif -///////// END_ENTITY action_request_solution +///////// END_ENTITY action_request_solution -///////// ENTITY uncertainty_measure_with_unit +///////// ENTITY uncertainty_measure_with_unit extern AttrDescriptor *a_160name; extern AttrDescriptor *a_161description; class SdaiUncertainty_measure_with_unit : public SdaiMeasure_with_unit { - protected: - SdaiString _name ; - SdaiString _description ; + +#ifdef __OSTORE__ + friend void SdaiUncertainty_measure_with_unit_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(String) _name ; + SCLP23(String) _description ; public: SdaiUncertainty_measure_with_unit ( ); - SdaiUncertainty_measure_with_unit (STEPentity *se ); + SdaiUncertainty_measure_with_unit (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiUncertainty_measure_with_unit (SdaiUncertainty_measure_with_unit& e ); ~SdaiUncertainty_measure_with_unit (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 82 ; } - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiText Description() const; - void Description (const char * x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiUncertainty_measure_with_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiUncertainty_measure_with_unit(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiUncertainty_measure_with_unit () { return (SCLP23(Application_instance_ptr)) new SdaiUncertainty_measure_with_unit ; } +#else inline SdaiUncertainty_measure_with_unit * create_SdaiUncertainty_measure_with_unit () { return new SdaiUncertainty_measure_with_unit ; } +#endif -///////// END_ENTITY uncertainty_measure_with_unit +///////// END_ENTITY uncertainty_measure_with_unit -///////// ENTITY edge_based_wireframe_model +///////// ENTITY edge_based_wireframe_model extern AttrDescriptor *a_162ebwm_boundary; class SdaiEdge_based_wireframe_model : public SdaiGeometric_representation_item { - protected: + +#ifdef __OSTORE__ + friend void SdaiEdge_based_wireframe_model_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: EntityAggregate _ebwm_boundary ; // of connected_edge_set public: SdaiEdge_based_wireframe_model ( ); - SdaiEdge_based_wireframe_model (STEPentity *se ); + SdaiEdge_based_wireframe_model (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiEdge_based_wireframe_model (SdaiEdge_based_wireframe_model& e ); ~SdaiEdge_based_wireframe_model (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 83 ; } - const EntityAggregateH Ebwm_boundary() const; - void Ebwm_boundary (EntityAggregateH x); + const EntityAggregate_ptr ebwm_boundary_() const; + void ebwm_boundary_ (const EntityAggregate_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiEdge_based_wireframe_model_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiEdge_based_wireframe_model(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiEdge_based_wireframe_model () { return (SCLP23(Application_instance_ptr)) new SdaiEdge_based_wireframe_model ; } +#else inline SdaiEdge_based_wireframe_model * create_SdaiEdge_based_wireframe_model () { return new SdaiEdge_based_wireframe_model ; } +#endif -///////// END_ENTITY edge_based_wireframe_model +///////// END_ENTITY edge_based_wireframe_model -///////// ENTITY path +///////// ENTITY path extern AttrDescriptor *a_163edge_list; class SdaiPath : public SdaiTopological_representation_item { - protected: + +#ifdef __OSTORE__ + friend void SdaiPath_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: EntityAggregate _edge_list ; // of oriented_edge public: SdaiPath ( ); - SdaiPath (STEPentity *se ); + SdaiPath (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiPath (SdaiPath& e ); ~SdaiPath (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 84 ; } - const EntityAggregateH Edge_list() const; - void Edge_list (EntityAggregateH x); + const EntityAggregate_ptr edge_list_() const; + void edge_list_ (const EntityAggregate_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiPath_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiPath(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiPath () { return (SCLP23(Application_instance_ptr)) new SdaiPath ; } +#else inline SdaiPath * create_SdaiPath () { return new SdaiPath ; } +#endif -///////// END_ENTITY path +///////// END_ENTITY path -///////// ENTITY connected_face_set +///////// ENTITY connected_face_set extern AttrDescriptor *a_164cfs_faces; class SdaiConnected_face_set : public SdaiTopological_representation_item { - protected: + +#ifdef __OSTORE__ + friend void SdaiConnected_face_set_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: EntityAggregate _cfs_faces ; // of face public: SdaiConnected_face_set ( ); - SdaiConnected_face_set (STEPentity *se ); + SdaiConnected_face_set (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiConnected_face_set (SdaiConnected_face_set& e ); ~SdaiConnected_face_set (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 85 ; } - const EntityAggregateH Cfs_faces() const; - void Cfs_faces (EntityAggregateH x); + const EntityAggregate_ptr cfs_faces_() const; + void cfs_faces_ (const EntityAggregate_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiConnected_face_set_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiConnected_face_set(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiConnected_face_set () { return (SCLP23(Application_instance_ptr)) new SdaiConnected_face_set ; } +#else inline SdaiConnected_face_set * create_SdaiConnected_face_set () { return new SdaiConnected_face_set ; } +#endif -///////// END_ENTITY connected_face_set +///////// END_ENTITY connected_face_set -///////// ENTITY open_shell +///////// ENTITY open_shell class SdaiOpen_shell : public SdaiConnected_face_set { - protected: + +#ifdef __OSTORE__ + friend void SdaiOpen_shell_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiOpen_shell ( ); - SdaiOpen_shell (STEPentity *se ); + SdaiOpen_shell (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiOpen_shell (SdaiOpen_shell& e ); ~SdaiOpen_shell (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 86 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiOpen_shell_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiOpen_shell(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiOpen_shell () { return (SCLP23(Application_instance_ptr)) new SdaiOpen_shell ; } +#else inline SdaiOpen_shell * create_SdaiOpen_shell () { return new SdaiOpen_shell ; } +#endif -///////// END_ENTITY open_shell +///////// END_ENTITY open_shell -///////// ENTITY oriented_open_shell +///////// ENTITY oriented_open_shell extern AttrDescriptor *a_165open_shell_element; extern AttrDescriptor *a_166orientation; -extern AttrDescriptor *a_167Dconnected_face_set_cfs_faces; +extern Derived_attribute *a_167Dconnected_face_set_cfs_faces; class SdaiOriented_open_shell : public SdaiOpen_shell { - protected: - SdaiOpen_shellH _open_shell_element ; - SdaiBoolean _orientation ; + +#ifdef __OSTORE__ + friend void SdaiOriented_open_shell_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _open_shell_element ; + SCLP23(BOOL) _orientation ; public: SdaiOriented_open_shell ( ); - SdaiOriented_open_shell (STEPentity *se ); + SdaiOriented_open_shell (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiOriented_open_shell (SdaiOriented_open_shell& e ); ~SdaiOriented_open_shell (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 87 ; } - SdaiOpen_shellH Open_shell_element() const; - void Open_shell_element (SdaiOpen_shellH x); - const BOOLEAN Orientation() const; - void Orientation (BOOLEAN x); + const SdaiOpen_shell_ptr open_shell_element_() const; + void open_shell_element_ (const SdaiOpen_shell_ptr x); + + const SCLBOOL(Bool) orientation_() const; + void orientation_ (const SCLBOOL(Bool) x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiOriented_open_shell_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiOriented_open_shell(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiOriented_open_shell () { return (SCLP23(Application_instance_ptr)) new SdaiOriented_open_shell ; } +#else inline SdaiOriented_open_shell * create_SdaiOriented_open_shell () { return new SdaiOriented_open_shell ; } +#endif -///////// END_ENTITY oriented_open_shell +///////// END_ENTITY oriented_open_shell -///////// ENTITY solid_angle_unit +///////// ENTITY solid_angle_unit class SdaiSolid_angle_unit : public SdaiNamed_unit { - protected: + +#ifdef __OSTORE__ + friend void SdaiSolid_angle_unit_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiSolid_angle_unit ( ); - SdaiSolid_angle_unit (STEPentity *se ); + SdaiSolid_angle_unit (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiSolid_angle_unit (SdaiSolid_angle_unit& e ); ~SdaiSolid_angle_unit (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 88 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiSolid_angle_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiSolid_angle_unit(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiSolid_angle_unit () { return (SCLP23(Application_instance_ptr)) new SdaiSolid_angle_unit ; } +#else inline SdaiSolid_angle_unit * create_SdaiSolid_angle_unit () { return new SdaiSolid_angle_unit ; } +#endif -///////// END_ENTITY solid_angle_unit +///////// END_ENTITY solid_angle_unit -///////// ENTITY coordinated_universal_time_offset +///////// ENTITY coordinated_universal_time_offset extern AttrDescriptor *a_168hour_offset; extern AttrDescriptor *a_169minute_offset; extern AttrDescriptor *a_170sense; -class SdaiCoordinated_universal_time_offset : public STEPentity { +class SdaiCoordinated_universal_time_offset : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiCoordinated_universal_time_offset_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiInteger _hour_offset ; - SdaiInteger _minute_offset ; // OPTIONAL - SdaiAhead_or_behind _sense ; + SCLP23(Integer) _hour_offset ; + SCLP23(Integer) _minute_offset ; // OPTIONAL + SdaiAhead_or_behind_var _sense ; public: SdaiCoordinated_universal_time_offset ( ); - SdaiCoordinated_universal_time_offset (STEPentity *se ); + SdaiCoordinated_universal_time_offset (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiCoordinated_universal_time_offset (SdaiCoordinated_universal_time_offset& e ); ~SdaiCoordinated_universal_time_offset (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 89 ; } - const SdaiHour_in_day Hour_offset() const; - void Hour_offset (SdaiHour_in_day x); - const SdaiMinute_in_hour Minute_offset() const; - void Minute_offset (SdaiMinute_in_hour x); - const sdaiAhead_or_behind Sense() const; - void Sense (sdaiAhead_or_behind x); + const SdaiHour_in_day hour_offset_() const; + void hour_offset_ (const SdaiHour_in_day x); + + const SdaiMinute_in_hour minute_offset_() const; + void minute_offset_ (const SdaiMinute_in_hour x); + + const SdaiAhead_or_behind_var sense_() const; + void sense_ (const SdaiAhead_or_behind_var x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiCoordinated_universal_time_offset_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiCoordinated_universal_time_offset(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiCoordinated_universal_time_offset () { return (SCLP23(Application_instance_ptr)) new SdaiCoordinated_universal_time_offset ; } +#else inline SdaiCoordinated_universal_time_offset * create_SdaiCoordinated_universal_time_offset () { return new SdaiCoordinated_universal_time_offset ; } +#endif -///////// END_ENTITY coordinated_universal_time_offset +///////// END_ENTITY coordinated_universal_time_offset -///////// ENTITY curve_replica +///////// ENTITY curve_replica extern AttrDescriptor *a_171parent_curve; extern AttrDescriptor *a_172transformation; class SdaiCurve_replica : public SdaiCurve { - protected: - SdaiCurveH _parent_curve ; - SdaiCartesian_transformation_operatorH _transformation ; + +#ifdef __OSTORE__ + friend void SdaiCurve_replica_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _parent_curve ; + SCLP23(Application_instance_ptr) _transformation ; public: SdaiCurve_replica ( ); - SdaiCurve_replica (STEPentity *se ); + SdaiCurve_replica (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiCurve_replica (SdaiCurve_replica& e ); ~SdaiCurve_replica (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 90 ; } - SdaiCurveH Parent_curve() const; - void Parent_curve (SdaiCurveH x); - SdaiCartesian_transformation_operatorH Transformation() const; - void Transformation (SdaiCartesian_transformation_operatorH x); + const SdaiCurve_ptr parent_curve_() const; + void parent_curve_ (const SdaiCurve_ptr x); + + const SdaiCartesian_transformation_operator_ptr transformation_() const; + void transformation_ (const SdaiCartesian_transformation_operator_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiCurve_replica_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiCurve_replica(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiCurve_replica () { return (SCLP23(Application_instance_ptr)) new SdaiCurve_replica ; } +#else inline SdaiCurve_replica * create_SdaiCurve_replica () { return new SdaiCurve_replica ; } +#endif -///////// END_ENTITY curve_replica +///////// END_ENTITY curve_replica -///////// ENTITY quasi_uniform_surface +///////// ENTITY quasi_uniform_surface class SdaiQuasi_uniform_surface : public SdaiB_spline_surface { - protected: + +#ifdef __OSTORE__ + friend void SdaiQuasi_uniform_surface_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiQuasi_uniform_surface ( ); - SdaiQuasi_uniform_surface (STEPentity *se ); + SdaiQuasi_uniform_surface (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiQuasi_uniform_surface (SdaiQuasi_uniform_surface& e ); ~SdaiQuasi_uniform_surface (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 91 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiQuasi_uniform_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiQuasi_uniform_surface(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiQuasi_uniform_surface () { return (SCLP23(Application_instance_ptr)) new SdaiQuasi_uniform_surface ; } +#else inline SdaiQuasi_uniform_surface * create_SdaiQuasi_uniform_surface () { return new SdaiQuasi_uniform_surface ; } +#endif -///////// END_ENTITY quasi_uniform_surface +///////// END_ENTITY quasi_uniform_surface -///////// ENTITY surface_curve +///////// ENTITY surface_curve extern AttrDescriptor *a_173curve_3d; extern AttrDescriptor *a_174associated_geometry; extern AttrDescriptor *a_175master_representation; -extern AttrDescriptor *a_176Dbasis_surface; +extern Derived_attribute *a_176Dbasis_surface; class SdaiSurface_curve : public SdaiCurve { - protected: - SdaiCurveH _curve_3d ; + +#ifdef __OSTORE__ + friend void SdaiSurface_curve_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _curve_3d ; SdaiPcurve_or_surfaces _associated_geometry ; // of pcurve_or_surface - SdaiPreferred_surface_curve_representation _master_representation ; + SdaiPreferred_surface_curve_representation_var _master_representation ; public: SdaiSurface_curve ( ); - SdaiSurface_curve (STEPentity *se ); + SdaiSurface_curve (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiSurface_curve (SdaiSurface_curve& e ); ~SdaiSurface_curve (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 92 ; } - SdaiCurveH Curve_3d() const; - void Curve_3d (SdaiCurveH x); - const SdaiPcurve_or_surfacesH Associated_geometry() const; - void Associated_geometry (SdaiPcurve_or_surfacesH x); - const sdaiPreferred_surface_curve_representation Master_representation() const; - void Master_representation (sdaiPreferred_surface_curve_representation x); + const SdaiCurve_ptr curve_3d_() const; + void curve_3d_ (const SdaiCurve_ptr x); + + const SdaiPcurve_or_surfaces_ptr associated_geometry_() const; + void associated_geometry_ (const SdaiPcurve_or_surfaces_ptr x); + + const SdaiPreferred_surface_curve_representation_var master_representation_() const; + void master_representation_ (const SdaiPreferred_surface_curve_representation_var x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiSurface_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiSurface_curve(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiSurface_curve () { return (SCLP23(Application_instance_ptr)) new SdaiSurface_curve ; } +#else inline SdaiSurface_curve * create_SdaiSurface_curve () { return new SdaiSurface_curve ; } +#endif -///////// END_ENTITY surface_curve +///////// END_ENTITY surface_curve -///////// ENTITY action_request_status +///////// ENTITY action_request_status extern AttrDescriptor *a_177status; extern AttrDescriptor *a_178assigned_request; -class SdaiAction_request_status : public STEPentity { +class SdaiAction_request_status : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiAction_request_status_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _status ; - SdaiVersioned_action_requestH _assigned_request ; + SCLP23(String) _status ; + SCLP23(Application_instance_ptr) _assigned_request ; public: SdaiAction_request_status ( ); - SdaiAction_request_status (STEPentity *se ); + SdaiAction_request_status (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiAction_request_status (SdaiAction_request_status& e ); ~SdaiAction_request_status (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 93 ; } - const SdaiLabel Status() const; - void Status (const char * x); - SdaiVersioned_action_requestH Assigned_request() const; - void Assigned_request (SdaiVersioned_action_requestH x); + const SdaiLabel status_() const; + void status_ (const SdaiLabel x); + + const SdaiVersioned_action_request_ptr assigned_request_() const; + void assigned_request_ (const SdaiVersioned_action_request_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiAction_request_status_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiAction_request_status(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiAction_request_status () { return (SCLP23(Application_instance_ptr)) new SdaiAction_request_status ; } +#else inline SdaiAction_request_status * create_SdaiAction_request_status () { return new SdaiAction_request_status ; } +#endif -///////// END_ENTITY action_request_status +///////// END_ENTITY action_request_status -///////// ENTITY composite_curve_segment +///////// ENTITY composite_curve_segment extern AttrDescriptor *a_179transition; extern AttrDescriptor *a_180same_sense; extern AttrDescriptor *a_181parent_curve; -extern InverseAttrDescriptor *a_182Iusing_curves; +extern Inverse_attribute *a_182Iusing_curves; -class SdaiComposite_curve_segment : public STEPentity { +class SdaiComposite_curve_segment : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiComposite_curve_segment_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiTransition_code _transition ; - SdaiBoolean _same_sense ; - SdaiCurveH _parent_curve ; + SdaiTransition_code_var _transition ; + SCLP23(BOOL) _same_sense ; + SCLP23(Application_instance_ptr) _parent_curve ; EntityAggregate _using_curves ; // of composite_curve public: SdaiComposite_curve_segment ( ); - SdaiComposite_curve_segment (STEPentity *se ); + SdaiComposite_curve_segment (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiComposite_curve_segment (SdaiComposite_curve_segment& e ); ~SdaiComposite_curve_segment (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 94 ; } - const sdaiTransition_code Transition() const; - void Transition (sdaiTransition_code x); - const BOOLEAN Same_sense() const; - void Same_sense (BOOLEAN x); - SdaiCurveH Parent_curve() const; - void Parent_curve (SdaiCurveH x); - const EntityAggregateH Using_curves() const; - void Using_curves (EntityAggregateH x); + const SdaiTransition_code_var transition_() const; + void transition_ (const SdaiTransition_code_var x); + + const SCLBOOL(Bool) same_sense_() const; + void same_sense_ (const SCLBOOL(Bool) x); + + const SdaiCurve_ptr parent_curve_() const; + void parent_curve_ (const SdaiCurve_ptr x); + + const EntityAggregate_ptr using_curves_() const; + void using_curves_ (const EntityAggregate_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiComposite_curve_segment_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiComposite_curve_segment(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiComposite_curve_segment () { return (SCLP23(Application_instance_ptr)) new SdaiComposite_curve_segment ; } +#else inline SdaiComposite_curve_segment * create_SdaiComposite_curve_segment () { return new SdaiComposite_curve_segment ; } +#endif -///////// END_ENTITY composite_curve_segment +///////// END_ENTITY composite_curve_segment -///////// ENTITY reparametrised_composite_curve_segment +///////// ENTITY reparametrised_composite_curve_segment extern AttrDescriptor *a_183param_length; class SdaiReparametrised_composite_curve_segment : public SdaiComposite_curve_segment { - protected: - SdaiReal _param_length ; + +#ifdef __OSTORE__ + friend void SdaiReparametrised_composite_curve_segment_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Real) _param_length ; public: SdaiReparametrised_composite_curve_segment ( ); - SdaiReparametrised_composite_curve_segment (STEPentity *se ); + SdaiReparametrised_composite_curve_segment (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiReparametrised_composite_curve_segment (SdaiReparametrised_composite_curve_segment& e ); ~SdaiReparametrised_composite_curve_segment (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 95 ; } - const SdaiParameter_value Param_length() const; - void Param_length (SdaiParameter_value x); + const SdaiParameter_value param_length_() const; + void param_length_ (const SdaiParameter_value x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiReparametrised_composite_curve_segment_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiReparametrised_composite_curve_segment(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiReparametrised_composite_curve_segment () { return (SCLP23(Application_instance_ptr)) new SdaiReparametrised_composite_curve_segment ; } +#else inline SdaiReparametrised_composite_curve_segment * create_SdaiReparametrised_composite_curve_segment () { return new SdaiReparametrised_composite_curve_segment ; } +#endif -///////// END_ENTITY reparametrised_composite_curve_segment +///////// END_ENTITY reparametrised_composite_curve_segment -///////// ENTITY representation_relationship +///////// ENTITY representation_relationship extern AttrDescriptor *a_184name; extern AttrDescriptor *a_185description; extern AttrDescriptor *a_186rep_1; extern AttrDescriptor *a_187rep_2; -class SdaiRepresentation_relationship : public STEPentity { +class SdaiRepresentation_relationship : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiRepresentation_relationship_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _name ; - SdaiString _description ; - SdaiRepresentationH _rep_1 ; - SdaiRepresentationH _rep_2 ; + SCLP23(String) _name ; + SCLP23(String) _description ; + SCLP23(Application_instance_ptr) _rep_1 ; + SCLP23(Application_instance_ptr) _rep_2 ; public: SdaiRepresentation_relationship ( ); - SdaiRepresentation_relationship (STEPentity *se ); + SdaiRepresentation_relationship (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiRepresentation_relationship (SdaiRepresentation_relationship& e ); ~SdaiRepresentation_relationship (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 96 ; } - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiText Description() const; - void Description (const char * x); - SdaiRepresentationH Rep_1() const; - void Rep_1 (SdaiRepresentationH x); - SdaiRepresentationH Rep_2() const; - void Rep_2 (SdaiRepresentationH x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiRepresentation_ptr rep_1_() const; + void rep_1_ (const SdaiRepresentation_ptr x); + + const SdaiRepresentation_ptr rep_2_() const; + void rep_2_ (const SdaiRepresentation_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiRepresentation_relationship_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiRepresentation_relationship(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiRepresentation_relationship () { return (SCLP23(Application_instance_ptr)) new SdaiRepresentation_relationship ; } +#else inline SdaiRepresentation_relationship * create_SdaiRepresentation_relationship () { return new SdaiRepresentation_relationship ; } +#endif -///////// END_ENTITY representation_relationship +///////// END_ENTITY representation_relationship -///////// ENTITY representation_relationship_with_transformation +///////// ENTITY representation_relationship_with_transformation extern AttrDescriptor *a_188transformation_operator; class SdaiRepresentation_relationship_with_transformation : public SdaiRepresentation_relationship { - protected: + +#ifdef __OSTORE__ + friend void SdaiRepresentation_relationship_with_transformation_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: SdaiTransformation _transformation_operator ; public: SdaiRepresentation_relationship_with_transformation ( ); - SdaiRepresentation_relationship_with_transformation (STEPentity *se ); + SdaiRepresentation_relationship_with_transformation (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiRepresentation_relationship_with_transformation (SdaiRepresentation_relationship_with_transformation& e ); ~SdaiRepresentation_relationship_with_transformation (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 97 ; } - const SdaiTransformationH Transformation_operator() const; - void Transformation_operator (SdaiTransformationH x); + const SdaiTransformation_ptr transformation_operator_() const; + void transformation_operator_ (const SdaiTransformation_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiRepresentation_relationship_with_transformation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiRepresentation_relationship_with_transformation(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiRepresentation_relationship_with_transformation () { return (SCLP23(Application_instance_ptr)) new SdaiRepresentation_relationship_with_transformation ; } +#else inline SdaiRepresentation_relationship_with_transformation * create_SdaiRepresentation_relationship_with_transformation () { return new SdaiRepresentation_relationship_with_transformation ; } +#endif -///////// END_ENTITY representation_relationship_with_transformation +///////// END_ENTITY representation_relationship_with_transformation -///////// ENTITY person_and_organization_role +///////// ENTITY person_and_organization_role extern AttrDescriptor *a_189name; -class SdaiPerson_and_organization_role : public STEPentity { +class SdaiPerson_and_organization_role : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiPerson_and_organization_role_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _name ; + SCLP23(String) _name ; public: SdaiPerson_and_organization_role ( ); - SdaiPerson_and_organization_role (STEPentity *se ); + SdaiPerson_and_organization_role (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiPerson_and_organization_role (SdaiPerson_and_organization_role& e ); ~SdaiPerson_and_organization_role (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 98 ; } - const SdaiLabel Name() const; - void Name (const char * x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiPerson_and_organization_role_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiPerson_and_organization_role(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiPerson_and_organization_role () { return (SCLP23(Application_instance_ptr)) new SdaiPerson_and_organization_role ; } +#else inline SdaiPerson_and_organization_role * create_SdaiPerson_and_organization_role () { return new SdaiPerson_and_organization_role ; } +#endif -///////// END_ENTITY person_and_organization_role +///////// END_ENTITY person_and_organization_role -///////// ENTITY quasi_uniform_curve +///////// ENTITY quasi_uniform_curve class SdaiQuasi_uniform_curve : public SdaiB_spline_curve { - protected: + +#ifdef __OSTORE__ + friend void SdaiQuasi_uniform_curve_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiQuasi_uniform_curve ( ); - SdaiQuasi_uniform_curve (STEPentity *se ); + SdaiQuasi_uniform_curve (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiQuasi_uniform_curve (SdaiQuasi_uniform_curve& e ); ~SdaiQuasi_uniform_curve (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 99 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiQuasi_uniform_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiQuasi_uniform_curve(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiQuasi_uniform_curve () { return (SCLP23(Application_instance_ptr)) new SdaiQuasi_uniform_curve ; } +#else inline SdaiQuasi_uniform_curve * create_SdaiQuasi_uniform_curve () { return new SdaiQuasi_uniform_curve ; } +#endif -///////// END_ENTITY quasi_uniform_curve +///////// END_ENTITY quasi_uniform_curve -///////// ENTITY swept_surface +///////// ENTITY swept_surface extern AttrDescriptor *a_190swept_curve; class SdaiSwept_surface : public SdaiSurface { - protected: - SdaiCurveH _swept_curve ; + +#ifdef __OSTORE__ + friend void SdaiSwept_surface_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _swept_curve ; public: SdaiSwept_surface ( ); - SdaiSwept_surface (STEPentity *se ); + SdaiSwept_surface (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiSwept_surface (SdaiSwept_surface& e ); ~SdaiSwept_surface (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 100 ; } - SdaiCurveH Swept_curve() const; - void Swept_curve (SdaiCurveH x); + const SdaiCurve_ptr swept_curve_() const; + void swept_curve_ (const SdaiCurve_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiSwept_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiSwept_surface(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiSwept_surface () { return (SCLP23(Application_instance_ptr)) new SdaiSwept_surface ; } +#else inline SdaiSwept_surface * create_SdaiSwept_surface () { return new SdaiSwept_surface ; } +#endif -///////// END_ENTITY swept_surface +///////// END_ENTITY swept_surface -///////// ENTITY property_definition +///////// ENTITY property_definition extern AttrDescriptor *a_191name; extern AttrDescriptor *a_192description; extern AttrDescriptor *a_193definition; -class SdaiProperty_definition : public STEPentity { +class SdaiProperty_definition : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiProperty_definition_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _name ; - SdaiString _description ; + SCLP23(String) _name ; + SCLP23(String) _description ; SdaiCharacterized_definition _definition ; public: SdaiProperty_definition ( ); - SdaiProperty_definition (STEPentity *se ); + SdaiProperty_definition (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiProperty_definition (SdaiProperty_definition& e ); ~SdaiProperty_definition (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 101 ; } - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiText Description() const; - void Description (const char * x); - const SdaiCharacterized_definitionH Definition() const; - void Definition (SdaiCharacterized_definitionH x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiCharacterized_definition_ptr definition_() const; + void definition_ (const SdaiCharacterized_definition_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiProperty_definition_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiProperty_definition(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiProperty_definition () { return (SCLP23(Application_instance_ptr)) new SdaiProperty_definition ; } +#else inline SdaiProperty_definition * create_SdaiProperty_definition () { return new SdaiProperty_definition ; } +#endif -///////// END_ENTITY property_definition +///////// END_ENTITY property_definition -///////// ENTITY global_uncertainty_assigned_context +///////// ENTITY global_uncertainty_assigned_context extern AttrDescriptor *a_194uncertainty; class SdaiGlobal_uncertainty_assigned_context : public SdaiRepresentation_context { - protected: + +#ifdef __OSTORE__ + friend void SdaiGlobal_uncertainty_assigned_context_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: EntityAggregate _uncertainty ; // of uncertainty_measure_with_unit public: SdaiGlobal_uncertainty_assigned_context ( ); - SdaiGlobal_uncertainty_assigned_context (STEPentity *se ); + SdaiGlobal_uncertainty_assigned_context (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiGlobal_uncertainty_assigned_context (SdaiGlobal_uncertainty_assigned_context& e ); ~SdaiGlobal_uncertainty_assigned_context (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 102 ; } - const EntityAggregateH Uncertainty() const; - void Uncertainty (EntityAggregateH x); + const EntityAggregate_ptr uncertainty_() const; + void uncertainty_ (const EntityAggregate_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiGlobal_uncertainty_assigned_context_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiGlobal_uncertainty_assigned_context(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiGlobal_uncertainty_assigned_context () { return (SCLP23(Application_instance_ptr)) new SdaiGlobal_uncertainty_assigned_context ; } +#else inline SdaiGlobal_uncertainty_assigned_context * create_SdaiGlobal_uncertainty_assigned_context () { return new SdaiGlobal_uncertainty_assigned_context ; } +#endif -///////// END_ENTITY global_uncertainty_assigned_context +///////// END_ENTITY global_uncertainty_assigned_context -///////// ENTITY organization_relationship +///////// ENTITY organization_relationship extern AttrDescriptor *a_195name; extern AttrDescriptor *a_196description; extern AttrDescriptor *a_197relating_organization; extern AttrDescriptor *a_198related_organization; -class SdaiOrganization_relationship : public STEPentity { +class SdaiOrganization_relationship : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiOrganization_relationship_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _name ; - SdaiString _description ; - SdaiOrganizationH _relating_organization ; - SdaiOrganizationH _related_organization ; + SCLP23(String) _name ; + SCLP23(String) _description ; + SCLP23(Application_instance_ptr) _relating_organization ; + SCLP23(Application_instance_ptr) _related_organization ; public: SdaiOrganization_relationship ( ); - SdaiOrganization_relationship (STEPentity *se ); + SdaiOrganization_relationship (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiOrganization_relationship (SdaiOrganization_relationship& e ); ~SdaiOrganization_relationship (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 103 ; } - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiText Description() const; - void Description (const char * x); - SdaiOrganizationH Relating_organization() const; - void Relating_organization (SdaiOrganizationH x); - SdaiOrganizationH Related_organization() const; - void Related_organization (SdaiOrganizationH x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiOrganization_ptr relating_organization_() const; + void relating_organization_ (const SdaiOrganization_ptr x); + + const SdaiOrganization_ptr related_organization_() const; + void related_organization_ (const SdaiOrganization_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiOrganization_relationship_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiOrganization_relationship(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiOrganization_relationship () { return (SCLP23(Application_instance_ptr)) new SdaiOrganization_relationship ; } +#else inline SdaiOrganization_relationship * create_SdaiOrganization_relationship () { return new SdaiOrganization_relationship ; } +#endif -///////// END_ENTITY organization_relationship +///////// END_ENTITY organization_relationship -///////// ENTITY parabola +///////// ENTITY parabola extern AttrDescriptor *a_199focal_dist; class SdaiParabola : public SdaiConic { - protected: - SdaiReal _focal_dist ; + +#ifdef __OSTORE__ + friend void SdaiParabola_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Real) _focal_dist ; public: SdaiParabola ( ); - SdaiParabola (STEPentity *se ); + SdaiParabola (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiParabola (SdaiParabola& e ); ~SdaiParabola (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 104 ; } - const SdaiLength_measure Focal_dist() const; - void Focal_dist (SdaiLength_measure x); + const SdaiLength_measure focal_dist_() const; + void focal_dist_ (const SdaiLength_measure x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiParabola_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiParabola(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiParabola () { return (SCLP23(Application_instance_ptr)) new SdaiParabola ; } +#else inline SdaiParabola * create_SdaiParabola () { return new SdaiParabola ; } +#endif -///////// END_ENTITY parabola +///////// END_ENTITY parabola -///////// ENTITY rectangular_composite_surface +///////// ENTITY rectangular_composite_surface extern AttrDescriptor *a_200segments; -extern AttrDescriptor *a_201Dn_u; -extern AttrDescriptor *a_202Dn_v; +extern Derived_attribute *a_201Dn_u; +extern Derived_attribute *a_202Dn_v; class SdaiRectangular_composite_surface : public SdaiBounded_surface { - protected: + +#ifdef __OSTORE__ + friend void SdaiRectangular_composite_surface_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: GenericAggregate _segments ; // of surface_patch public: SdaiRectangular_composite_surface ( ); - SdaiRectangular_composite_surface (STEPentity *se ); + SdaiRectangular_composite_surface (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiRectangular_composite_surface (SdaiRectangular_composite_surface& e ); ~SdaiRectangular_composite_surface (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 105 ; } - const GenericAggregateH Segments() const; - void Segments (GenericAggregateH x); + const GenericAggregate_ptr segments_() const; + void segments_ (const GenericAggregate_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiRectangular_composite_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiRectangular_composite_surface(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiRectangular_composite_surface () { return (SCLP23(Application_instance_ptr)) new SdaiRectangular_composite_surface ; } +#else inline SdaiRectangular_composite_surface * create_SdaiRectangular_composite_surface () { return new SdaiRectangular_composite_surface ; } +#endif -///////// END_ENTITY rectangular_composite_surface +///////// END_ENTITY rectangular_composite_surface -///////// ENTITY lot_effectivity +///////// ENTITY lot_effectivity extern AttrDescriptor *a_203effectivity_lot_id; extern AttrDescriptor *a_204effectivity_lot_size; class SdaiLot_effectivity : public SdaiEffectivity { - protected: - SdaiString _effectivity_lot_id ; - SdaiMeasure_with_unitH _effectivity_lot_size ; + +#ifdef __OSTORE__ + friend void SdaiLot_effectivity_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(String) _effectivity_lot_id ; + SCLP23(Application_instance_ptr) _effectivity_lot_size ; public: SdaiLot_effectivity ( ); - SdaiLot_effectivity (STEPentity *se ); + SdaiLot_effectivity (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiLot_effectivity (SdaiLot_effectivity& e ); ~SdaiLot_effectivity (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 106 ; } - const SdaiIdentifier Effectivity_lot_id() const; - void Effectivity_lot_id (const char * x); - SdaiMeasure_with_unitH Effectivity_lot_size() const; - void Effectivity_lot_size (SdaiMeasure_with_unitH x); + const SdaiIdentifier effectivity_lot_id_() const; + void effectivity_lot_id_ (const SdaiIdentifier x); + + const SdaiMeasure_with_unit_ptr effectivity_lot_size_() const; + void effectivity_lot_size_ (const SdaiMeasure_with_unit_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiLot_effectivity_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiLot_effectivity(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiLot_effectivity () { return (SCLP23(Application_instance_ptr)) new SdaiLot_effectivity ; } +#else inline SdaiLot_effectivity * create_SdaiLot_effectivity () { return new SdaiLot_effectivity ; } +#endif -///////// END_ENTITY lot_effectivity +///////// END_ENTITY lot_effectivity -///////// ENTITY surface_of_linear_extrusion +///////// ENTITY surface_of_linear_extrusion extern AttrDescriptor *a_205extrusion_axis; class SdaiSurface_of_linear_extrusion : public SdaiSwept_surface { - protected: - SdaiVectorH _extrusion_axis ; + +#ifdef __OSTORE__ + friend void SdaiSurface_of_linear_extrusion_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _extrusion_axis ; public: SdaiSurface_of_linear_extrusion ( ); - SdaiSurface_of_linear_extrusion (STEPentity *se ); + SdaiSurface_of_linear_extrusion (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiSurface_of_linear_extrusion (SdaiSurface_of_linear_extrusion& e ); ~SdaiSurface_of_linear_extrusion (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 107 ; } - SdaiVectorH Extrusion_axis() const; - void Extrusion_axis (SdaiVectorH x); + const SdaiVector_ptr extrusion_axis_() const; + void extrusion_axis_ (const SdaiVector_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiSurface_of_linear_extrusion_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiSurface_of_linear_extrusion(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiSurface_of_linear_extrusion () { return (SCLP23(Application_instance_ptr)) new SdaiSurface_of_linear_extrusion ; } +#else inline SdaiSurface_of_linear_extrusion * create_SdaiSurface_of_linear_extrusion () { return new SdaiSurface_of_linear_extrusion ; } +#endif -///////// END_ENTITY surface_of_linear_extrusion +///////// END_ENTITY surface_of_linear_extrusion -///////// ENTITY shell_based_surface_model +///////// ENTITY shell_based_surface_model extern AttrDescriptor *a_206sbsm_boundary; class SdaiShell_based_surface_model : public SdaiGeometric_representation_item { - protected: + +#ifdef __OSTORE__ + friend void SdaiShell_based_surface_model_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: SdaiShells _sbsm_boundary ; // of shell public: SdaiShell_based_surface_model ( ); - SdaiShell_based_surface_model (STEPentity *se ); + SdaiShell_based_surface_model (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiShell_based_surface_model (SdaiShell_based_surface_model& e ); ~SdaiShell_based_surface_model (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 108 ; } - const SdaiShellsH Sbsm_boundary() const; - void Sbsm_boundary (SdaiShellsH x); + const SdaiShells_ptr sbsm_boundary_() const; + void sbsm_boundary_ (const SdaiShells_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiShell_based_surface_model_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiShell_based_surface_model(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiShell_based_surface_model () { return (SCLP23(Application_instance_ptr)) new SdaiShell_based_surface_model ; } +#else inline SdaiShell_based_surface_model * create_SdaiShell_based_surface_model () { return new SdaiShell_based_surface_model ; } +#endif -///////// END_ENTITY shell_based_surface_model +///////// END_ENTITY shell_based_surface_model -///////// ENTITY uniform_curve +///////// ENTITY uniform_curve class SdaiUniform_curve : public SdaiB_spline_curve { - protected: + +#ifdef __OSTORE__ + friend void SdaiUniform_curve_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiUniform_curve ( ); - SdaiUniform_curve (STEPentity *se ); + SdaiUniform_curve (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiUniform_curve (SdaiUniform_curve& e ); ~SdaiUniform_curve (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 109 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiUniform_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiUniform_curve(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiUniform_curve () { return (SCLP23(Application_instance_ptr)) new SdaiUniform_curve ; } +#else inline SdaiUniform_curve * create_SdaiUniform_curve () { return new SdaiUniform_curve ; } +#endif -///////// END_ENTITY uniform_curve +///////// END_ENTITY uniform_curve -///////// ENTITY bezier_curve +///////// ENTITY bezier_curve class SdaiBezier_curve : public SdaiB_spline_curve { - protected: + +#ifdef __OSTORE__ + friend void SdaiBezier_curve_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiBezier_curve ( ); - SdaiBezier_curve (STEPentity *se ); + SdaiBezier_curve (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiBezier_curve (SdaiBezier_curve& e ); ~SdaiBezier_curve (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 110 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiBezier_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiBezier_curve(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiBezier_curve () { return (SCLP23(Application_instance_ptr)) new SdaiBezier_curve ; } +#else inline SdaiBezier_curve * create_SdaiBezier_curve () { return new SdaiBezier_curve ; } +#endif -///////// END_ENTITY bezier_curve +///////// END_ENTITY bezier_curve -///////// ENTITY loop +///////// ENTITY loop class SdaiLoop : public SdaiTopological_representation_item { - protected: + +#ifdef __OSTORE__ + friend void SdaiLoop_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiLoop ( ); - SdaiLoop (STEPentity *se ); + SdaiLoop (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiLoop (SdaiLoop& e ); ~SdaiLoop (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 111 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiLoop_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiLoop(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiLoop () { return (SCLP23(Application_instance_ptr)) new SdaiLoop ; } +#else inline SdaiLoop * create_SdaiLoop () { return new SdaiLoop ; } +#endif -///////// END_ENTITY loop +///////// END_ENTITY loop -///////// ENTITY edge_loop +///////// ENTITY edge_loop -extern AttrDescriptor *a_207Dne; +extern Derived_attribute *a_207Dne; class SdaiEdge_loop : public SdaiLoop { - protected: + +#ifdef __OSTORE__ + friend void SdaiEdge_loop_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiEdge_loop ( ); - SdaiEdge_loop (STEPentity *se ); + SdaiEdge_loop (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiEdge_loop (SdaiEdge_loop& e ); ~SdaiEdge_loop (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 112 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ #if 0 - const EntityAggregateH Edge_list() const; - void Edge_list (EntityAggregateH x); + const EntityAggregate_ptr edge_list_() const; + void edge_list_ (const EntityAggregate_ptr x); + #endif + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiEdge_loop_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiEdge_loop(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiEdge_loop () { return (SCLP23(Application_instance_ptr)) new SdaiEdge_loop ; } +#else inline SdaiEdge_loop * create_SdaiEdge_loop () { return new SdaiEdge_loop ; } +#endif -///////// END_ENTITY edge_loop +///////// END_ENTITY edge_loop -///////// ENTITY date +///////// ENTITY date extern AttrDescriptor *a_208year_component; -class SdaiDate : public STEPentity { +class SdaiDate : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiDate_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiInteger _year_component ; + SCLP23(Integer) _year_component ; public: SdaiDate ( ); - SdaiDate (STEPentity *se ); + SdaiDate (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiDate (SdaiDate& e ); ~SdaiDate (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 113 ; } - const SdaiYear_number Year_component() const; - void Year_component (SdaiYear_number x); + const SdaiYear_number year_component_() const; + void year_component_ (const SdaiYear_number x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiDate_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiDate(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiDate () { return (SCLP23(Application_instance_ptr)) new SdaiDate ; } +#else inline SdaiDate * create_SdaiDate () { return new SdaiDate ; } +#endif -///////// END_ENTITY date +///////// END_ENTITY date -///////// ENTITY calendar_date +///////// ENTITY calendar_date extern AttrDescriptor *a_209day_component; extern AttrDescriptor *a_210month_component; class SdaiCalendar_date : public SdaiDate { - protected: - SdaiInteger _day_component ; - SdaiInteger _month_component ; + +#ifdef __OSTORE__ + friend void SdaiCalendar_date_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Integer) _day_component ; + SCLP23(Integer) _month_component ; public: SdaiCalendar_date ( ); - SdaiCalendar_date (STEPentity *se ); + SdaiCalendar_date (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiCalendar_date (SdaiCalendar_date& e ); ~SdaiCalendar_date (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 114 ; } - const SdaiDay_in_month_number Day_component() const; - void Day_component (SdaiDay_in_month_number x); - const SdaiMonth_in_year_number Month_component() const; - void Month_component (SdaiMonth_in_year_number x); + const SdaiDay_in_month_number day_component_() const; + void day_component_ (const SdaiDay_in_month_number x); + + const SdaiMonth_in_year_number month_component_() const; + void month_component_ (const SdaiMonth_in_year_number x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiCalendar_date_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiCalendar_date(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiCalendar_date () { return (SCLP23(Application_instance_ptr)) new SdaiCalendar_date ; } +#else inline SdaiCalendar_date * create_SdaiCalendar_date () { return new SdaiCalendar_date ; } +#endif -///////// END_ENTITY calendar_date +///////// END_ENTITY calendar_date -///////// ENTITY toroidal_surface +///////// ENTITY toroidal_surface extern AttrDescriptor *a_211major_radius; extern AttrDescriptor *a_212minor_radius; class SdaiToroidal_surface : public SdaiElementary_surface { - protected: - SdaiReal _major_radius ; - SdaiReal _minor_radius ; + +#ifdef __OSTORE__ + friend void SdaiToroidal_surface_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Real) _major_radius ; + SCLP23(Real) _minor_radius ; public: SdaiToroidal_surface ( ); - SdaiToroidal_surface (STEPentity *se ); + SdaiToroidal_surface (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiToroidal_surface (SdaiToroidal_surface& e ); ~SdaiToroidal_surface (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 115 ; } - const SdaiPositive_length_measure Major_radius() const; - void Major_radius (SdaiPositive_length_measure x); - const SdaiPositive_length_measure Minor_radius() const; - void Minor_radius (SdaiPositive_length_measure x); + const SdaiPositive_length_measure major_radius_() const; + void major_radius_ (const SdaiPositive_length_measure x); + + const SdaiPositive_length_measure minor_radius_() const; + void minor_radius_ (const SdaiPositive_length_measure x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiToroidal_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiToroidal_surface(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiToroidal_surface () { return (SCLP23(Application_instance_ptr)) new SdaiToroidal_surface ; } +#else inline SdaiToroidal_surface * create_SdaiToroidal_surface () { return new SdaiToroidal_surface ; } +#endif -///////// END_ENTITY toroidal_surface +///////// END_ENTITY toroidal_surface -///////// ENTITY promissory_usage_occurrence +///////// ENTITY promissory_usage_occurrence class SdaiPromissory_usage_occurrence : public SdaiAssembly_component_usage { - protected: + +#ifdef __OSTORE__ + friend void SdaiPromissory_usage_occurrence_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiPromissory_usage_occurrence ( ); - SdaiPromissory_usage_occurrence (STEPentity *se ); + SdaiPromissory_usage_occurrence (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiPromissory_usage_occurrence (SdaiPromissory_usage_occurrence& e ); ~SdaiPromissory_usage_occurrence (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 116 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiPromissory_usage_occurrence_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiPromissory_usage_occurrence(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiPromissory_usage_occurrence () { return (SCLP23(Application_instance_ptr)) new SdaiPromissory_usage_occurrence ; } +#else inline SdaiPromissory_usage_occurrence * create_SdaiPromissory_usage_occurrence () { return new SdaiPromissory_usage_occurrence ; } +#endif -///////// END_ENTITY promissory_usage_occurrence +///////// END_ENTITY promissory_usage_occurrence -///////// ENTITY approval_assignment +///////// ENTITY approval_assignment extern AttrDescriptor *a_213assigned_approval; -class SdaiApproval_assignment : public STEPentity { +class SdaiApproval_assignment : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiApproval_assignment_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiApprovalH _assigned_approval ; + SCLP23(Application_instance_ptr) _assigned_approval ; public: SdaiApproval_assignment ( ); - SdaiApproval_assignment (STEPentity *se ); + SdaiApproval_assignment (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiApproval_assignment (SdaiApproval_assignment& e ); ~SdaiApproval_assignment (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 117 ; } - SdaiApprovalH Assigned_approval() const; - void Assigned_approval (SdaiApprovalH x); + const SdaiApproval_ptr assigned_approval_() const; + void assigned_approval_ (const SdaiApproval_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiApproval_assignment_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiApproval_assignment(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiApproval_assignment () { return (SCLP23(Application_instance_ptr)) new SdaiApproval_assignment ; } +#else inline SdaiApproval_assignment * create_SdaiApproval_assignment () { return new SdaiApproval_assignment ; } +#endif -///////// END_ENTITY approval_assignment +///////// END_ENTITY approval_assignment -///////// ENTITY configuration_item +///////// ENTITY configuration_item extern AttrDescriptor *a_214id; extern AttrDescriptor *a_215name; @@ -7628,111 +12649,255 @@ extern AttrDescriptor *a_216description; extern AttrDescriptor *a_217item_concept; extern AttrDescriptor *a_218purpose; -class SdaiConfiguration_item : public STEPentity { +class SdaiConfiguration_item : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiConfiguration_item_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _id ; - SdaiString _name ; - SdaiString _description ; // OPTIONAL - SdaiProduct_conceptH _item_concept ; - SdaiString _purpose ; // OPTIONAL + SCLP23(String) _id ; + SCLP23(String) _name ; + SCLP23(String) _description ; // OPTIONAL + SCLP23(Application_instance_ptr) _item_concept ; + SCLP23(String) _purpose ; // OPTIONAL public: SdaiConfiguration_item ( ); - SdaiConfiguration_item (STEPentity *se ); + SdaiConfiguration_item (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiConfiguration_item (SdaiConfiguration_item& e ); ~SdaiConfiguration_item (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 118 ; } - const SdaiIdentifier Id() const; - void Id (const char * x); - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiText Description() const; - void Description (const char * x); - SdaiProduct_conceptH Item_concept() const; - void Item_concept (SdaiProduct_conceptH x); - const SdaiLabel Purpose() const; - void Purpose (const char * x); + const SdaiIdentifier id_() const; + void id_ (const SdaiIdentifier x); + + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiProduct_concept_ptr item_concept_() const; + void item_concept_ (const SdaiProduct_concept_ptr x); + + const SdaiLabel purpose_() const; + void purpose_ (const SdaiLabel x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiConfiguration_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiConfiguration_item(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiConfiguration_item () { return (SCLP23(Application_instance_ptr)) new SdaiConfiguration_item ; } +#else inline SdaiConfiguration_item * create_SdaiConfiguration_item () { return new SdaiConfiguration_item ; } +#endif -///////// END_ENTITY configuration_item +///////// END_ENTITY configuration_item -///////// ENTITY contract_assignment +///////// ENTITY contract_assignment extern AttrDescriptor *a_219assigned_contract; -class SdaiContract_assignment : public STEPentity { +class SdaiContract_assignment : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiContract_assignment_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiContractH _assigned_contract ; + SCLP23(Application_instance_ptr) _assigned_contract ; public: SdaiContract_assignment ( ); - SdaiContract_assignment (STEPentity *se ); + SdaiContract_assignment (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiContract_assignment (SdaiContract_assignment& e ); ~SdaiContract_assignment (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 119 ; } - SdaiContractH Assigned_contract() const; - void Assigned_contract (SdaiContractH x); + const SdaiContract_ptr assigned_contract_() const; + void assigned_contract_ (const SdaiContract_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiContract_assignment_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiContract_assignment(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiContract_assignment () { return (SCLP23(Application_instance_ptr)) new SdaiContract_assignment ; } +#else inline SdaiContract_assignment * create_SdaiContract_assignment () { return new SdaiContract_assignment ; } +#endif -///////// END_ENTITY contract_assignment +///////// END_ENTITY contract_assignment -///////// ENTITY vector +///////// ENTITY vector extern AttrDescriptor *a_220orientation; extern AttrDescriptor *a_221magnitude; class SdaiVector : public SdaiGeometric_representation_item { - protected: - SdaiDirectionH _orientation ; - SdaiReal _magnitude ; + +#ifdef __OSTORE__ + friend void SdaiVector_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _orientation ; + SCLP23(Real) _magnitude ; public: SdaiVector ( ); - SdaiVector (STEPentity *se ); + SdaiVector (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiVector (SdaiVector& e ); ~SdaiVector (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 120 ; } - SdaiDirectionH Orientation() const; - void Orientation (SdaiDirectionH x); - const SdaiLength_measure Magnitude() const; - void Magnitude (SdaiLength_measure x); + const SdaiDirection_ptr orientation_() const; + void orientation_ (const SdaiDirection_ptr x); + + const SdaiLength_measure magnitude_() const; + void magnitude_ (const SdaiLength_measure x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiVector_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiVector(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiVector () { return (SCLP23(Application_instance_ptr)) new SdaiVector ; } +#else inline SdaiVector * create_SdaiVector () { return new SdaiVector ; } +#endif -///////// END_ENTITY vector +///////// END_ENTITY vector -///////// ENTITY intersection_curve +///////// ENTITY intersection_curve class SdaiIntersection_curve : public SdaiSurface_curve { - protected: + +#ifdef __OSTORE__ + friend void SdaiIntersection_curve_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiIntersection_curve ( ); - SdaiIntersection_curve (STEPentity *se ); + SdaiIntersection_curve (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiIntersection_curve (SdaiIntersection_curve& e ); ~SdaiIntersection_curve (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 121 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiIntersection_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiIntersection_curve(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiIntersection_curve () { return (SCLP23(Application_instance_ptr)) new SdaiIntersection_curve ; } +#else inline SdaiIntersection_curve * create_SdaiIntersection_curve () { return new SdaiIntersection_curve ; } +#endif -///////// END_ENTITY intersection_curve +///////// END_ENTITY intersection_curve -///////// ENTITY trimmed_curve +///////// ENTITY trimmed_curve extern AttrDescriptor *a_222basis_curve; extern AttrDescriptor *a_223trim_1; @@ -7741,349 +12906,783 @@ extern AttrDescriptor *a_225sense_agreement; extern AttrDescriptor *a_226master_representation; class SdaiTrimmed_curve : public SdaiBounded_curve { - protected: - SdaiCurveH _basis_curve ; + +#ifdef __OSTORE__ + friend void SdaiTrimmed_curve_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _basis_curve ; SdaiTrimming_selects _trim_1 ; // of trimming_select SdaiTrimming_selects _trim_2 ; // of trimming_select - SdaiBoolean _sense_agreement ; - SdaiTrimming_preference _master_representation ; + SCLP23(BOOL) _sense_agreement ; + SdaiTrimming_preference_var _master_representation ; public: SdaiTrimmed_curve ( ); - SdaiTrimmed_curve (STEPentity *se ); + SdaiTrimmed_curve (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiTrimmed_curve (SdaiTrimmed_curve& e ); ~SdaiTrimmed_curve (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 122 ; } - SdaiCurveH Basis_curve() const; - void Basis_curve (SdaiCurveH x); - const SdaiTrimming_selectsH Trim_1() const; - void Trim_1 (SdaiTrimming_selectsH x); - const SdaiTrimming_selectsH Trim_2() const; - void Trim_2 (SdaiTrimming_selectsH x); - const BOOLEAN Sense_agreement() const; - void Sense_agreement (BOOLEAN x); - const sdaiTrimming_preference Master_representation() const; - void Master_representation (sdaiTrimming_preference x); + const SdaiCurve_ptr basis_curve_() const; + void basis_curve_ (const SdaiCurve_ptr x); + + const SdaiTrimming_selects_ptr trim_1_() const; + void trim_1_ (const SdaiTrimming_selects_ptr x); + + const SdaiTrimming_selects_ptr trim_2_() const; + void trim_2_ (const SdaiTrimming_selects_ptr x); + + const SCLBOOL(Bool) sense_agreement_() const; + void sense_agreement_ (const SCLBOOL(Bool) x); + + const SdaiTrimming_preference_var master_representation_() const; + void master_representation_ (const SdaiTrimming_preference_var x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiTrimmed_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiTrimmed_curve(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiTrimmed_curve () { return (SCLP23(Application_instance_ptr)) new SdaiTrimmed_curve ; } +#else inline SdaiTrimmed_curve * create_SdaiTrimmed_curve () { return new SdaiTrimmed_curve ; } +#endif -///////// END_ENTITY trimmed_curve +///////// END_ENTITY trimmed_curve -///////// ENTITY product_definition_context +///////// ENTITY product_definition_context extern AttrDescriptor *a_227life_cycle_stage; class SdaiProduct_definition_context : public SdaiApplication_context_element { - protected: - SdaiString _life_cycle_stage ; + +#ifdef __OSTORE__ + friend void SdaiProduct_definition_context_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(String) _life_cycle_stage ; public: SdaiProduct_definition_context ( ); - SdaiProduct_definition_context (STEPentity *se ); + SdaiProduct_definition_context (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiProduct_definition_context (SdaiProduct_definition_context& e ); ~SdaiProduct_definition_context (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 123 ; } - const SdaiLabel Life_cycle_stage() const; - void Life_cycle_stage (const char * x); + const SdaiLabel life_cycle_stage_() const; + void life_cycle_stage_ (const SdaiLabel x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiProduct_definition_context_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiProduct_definition_context(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiProduct_definition_context () { return (SCLP23(Application_instance_ptr)) new SdaiProduct_definition_context ; } +#else inline SdaiProduct_definition_context * create_SdaiProduct_definition_context () { return new SdaiProduct_definition_context ; } +#endif -///////// END_ENTITY product_definition_context +///////// END_ENTITY product_definition_context -///////// ENTITY item_defined_transformation +///////// ENTITY item_defined_transformation extern AttrDescriptor *a_228name; extern AttrDescriptor *a_229description; extern AttrDescriptor *a_230transform_item_1; extern AttrDescriptor *a_231transform_item_2; -class SdaiItem_defined_transformation : public STEPentity { +class SdaiItem_defined_transformation : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiItem_defined_transformation_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _name ; - SdaiString _description ; - SdaiRepresentation_itemH _transform_item_1 ; - SdaiRepresentation_itemH _transform_item_2 ; + SCLP23(String) _name ; + SCLP23(String) _description ; + SCLP23(Application_instance_ptr) _transform_item_1 ; + SCLP23(Application_instance_ptr) _transform_item_2 ; public: SdaiItem_defined_transformation ( ); - SdaiItem_defined_transformation (STEPentity *se ); + SdaiItem_defined_transformation (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiItem_defined_transformation (SdaiItem_defined_transformation& e ); ~SdaiItem_defined_transformation (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 124 ; } - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiText Description() const; - void Description (const char * x); - SdaiRepresentation_itemH Transform_item_1() const; - void Transform_item_1 (SdaiRepresentation_itemH x); - SdaiRepresentation_itemH Transform_item_2() const; - void Transform_item_2 (SdaiRepresentation_itemH x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiRepresentation_item_ptr transform_item_1_() const; + void transform_item_1_ (const SdaiRepresentation_item_ptr x); + + const SdaiRepresentation_item_ptr transform_item_2_() const; + void transform_item_2_ (const SdaiRepresentation_item_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiItem_defined_transformation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiItem_defined_transformation(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiItem_defined_transformation () { return (SCLP23(Application_instance_ptr)) new SdaiItem_defined_transformation ; } +#else inline SdaiItem_defined_transformation * create_SdaiItem_defined_transformation () { return new SdaiItem_defined_transformation ; } +#endif -///////// END_ENTITY item_defined_transformation +///////// END_ENTITY item_defined_transformation -///////// ENTITY action_method +///////// ENTITY action_method extern AttrDescriptor *a_232name; extern AttrDescriptor *a_233description; extern AttrDescriptor *a_234consequence; extern AttrDescriptor *a_235purpose; -class SdaiAction_method : public STEPentity { +class SdaiAction_method : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiAction_method_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _name ; - SdaiString _description ; - SdaiString _consequence ; - SdaiString _purpose ; + SCLP23(String) _name ; + SCLP23(String) _description ; + SCLP23(String) _consequence ; + SCLP23(String) _purpose ; public: SdaiAction_method ( ); - SdaiAction_method (STEPentity *se ); + SdaiAction_method (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiAction_method (SdaiAction_method& e ); ~SdaiAction_method (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 125 ; } - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiText Description() const; - void Description (const char * x); - const SdaiText Consequence() const; - void Consequence (const char * x); - const SdaiText Purpose() const; - void Purpose (const char * x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiText consequence_() const; + void consequence_ (const SdaiText x); + + const SdaiText purpose_() const; + void purpose_ (const SdaiText x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiAction_method_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiAction_method(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiAction_method () { return (SCLP23(Application_instance_ptr)) new SdaiAction_method ; } +#else inline SdaiAction_method * create_SdaiAction_method () { return new SdaiAction_method ; } +#endif -///////// END_ENTITY action_method +///////// END_ENTITY action_method -///////// ENTITY product_category_relationship +///////// ENTITY product_category_relationship extern AttrDescriptor *a_236name; extern AttrDescriptor *a_237description; extern AttrDescriptor *a_238category; extern AttrDescriptor *a_239sub_category; -class SdaiProduct_category_relationship : public STEPentity { +class SdaiProduct_category_relationship : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiProduct_category_relationship_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _name ; - SdaiString _description ; - SdaiProduct_categoryH _category ; - SdaiProduct_categoryH _sub_category ; + SCLP23(String) _name ; + SCLP23(String) _description ; + SCLP23(Application_instance_ptr) _category ; + SCLP23(Application_instance_ptr) _sub_category ; public: SdaiProduct_category_relationship ( ); - SdaiProduct_category_relationship (STEPentity *se ); + SdaiProduct_category_relationship (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiProduct_category_relationship (SdaiProduct_category_relationship& e ); ~SdaiProduct_category_relationship (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 126 ; } - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiText Description() const; - void Description (const char * x); - SdaiProduct_categoryH Category() const; - void Category (SdaiProduct_categoryH x); - SdaiProduct_categoryH Sub_category() const; - void Sub_category (SdaiProduct_categoryH x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiProduct_category_ptr category_() const; + void category_ (const SdaiProduct_category_ptr x); + + const SdaiProduct_category_ptr sub_category_() const; + void sub_category_ (const SdaiProduct_category_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiProduct_category_relationship_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiProduct_category_relationship(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiProduct_category_relationship () { return (SCLP23(Application_instance_ptr)) new SdaiProduct_category_relationship ; } +#else inline SdaiProduct_category_relationship * create_SdaiProduct_category_relationship () { return new SdaiProduct_category_relationship ; } +#endif -///////// END_ENTITY product_category_relationship +///////// END_ENTITY product_category_relationship -///////// ENTITY plane_angle_measure_with_unit +///////// ENTITY plane_angle_measure_with_unit class SdaiPlane_angle_measure_with_unit : public SdaiMeasure_with_unit { - protected: + +#ifdef __OSTORE__ + friend void SdaiPlane_angle_measure_with_unit_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiPlane_angle_measure_with_unit ( ); - SdaiPlane_angle_measure_with_unit (STEPentity *se ); + SdaiPlane_angle_measure_with_unit (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiPlane_angle_measure_with_unit (SdaiPlane_angle_measure_with_unit& e ); ~SdaiPlane_angle_measure_with_unit (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 127 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiPlane_angle_measure_with_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiPlane_angle_measure_with_unit(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiPlane_angle_measure_with_unit () { return (SCLP23(Application_instance_ptr)) new SdaiPlane_angle_measure_with_unit ; } +#else inline SdaiPlane_angle_measure_with_unit * create_SdaiPlane_angle_measure_with_unit () { return new SdaiPlane_angle_measure_with_unit ; } +#endif -///////// END_ENTITY plane_angle_measure_with_unit +///////// END_ENTITY plane_angle_measure_with_unit -///////// ENTITY vertex +///////// ENTITY vertex class SdaiVertex : public SdaiTopological_representation_item { - protected: + +#ifdef __OSTORE__ + friend void SdaiVertex_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiVertex ( ); - SdaiVertex (STEPentity *se ); + SdaiVertex (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiVertex (SdaiVertex& e ); ~SdaiVertex (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 128 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiVertex_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiVertex(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiVertex () { return (SCLP23(Application_instance_ptr)) new SdaiVertex ; } +#else inline SdaiVertex * create_SdaiVertex () { return new SdaiVertex ; } +#endif -///////// END_ENTITY vertex +///////// END_ENTITY vertex -///////// ENTITY representation_map +///////// ENTITY representation_map extern AttrDescriptor *a_240mapping_origin; extern AttrDescriptor *a_241mapped_representation; -extern InverseAttrDescriptor *a_242Imap_usage; +extern Inverse_attribute *a_242Imap_usage; -class SdaiRepresentation_map : public STEPentity { +class SdaiRepresentation_map : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiRepresentation_map_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiRepresentation_itemH _mapping_origin ; - SdaiRepresentationH _mapped_representation ; + SCLP23(Application_instance_ptr) _mapping_origin ; + SCLP23(Application_instance_ptr) _mapped_representation ; EntityAggregate _map_usage ; // of mapped_item public: SdaiRepresentation_map ( ); - SdaiRepresentation_map (STEPentity *se ); + SdaiRepresentation_map (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiRepresentation_map (SdaiRepresentation_map& e ); ~SdaiRepresentation_map (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 129 ; } - SdaiRepresentation_itemH Mapping_origin() const; - void Mapping_origin (SdaiRepresentation_itemH x); - SdaiRepresentationH Mapped_representation() const; - void Mapped_representation (SdaiRepresentationH x); - const EntityAggregateH Map_usage() const; - void Map_usage (EntityAggregateH x); + const SdaiRepresentation_item_ptr mapping_origin_() const; + void mapping_origin_ (const SdaiRepresentation_item_ptr x); + + const SdaiRepresentation_ptr mapped_representation_() const; + void mapped_representation_ (const SdaiRepresentation_ptr x); + + const EntityAggregate_ptr map_usage_() const; + void map_usage_ (const EntityAggregate_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiRepresentation_map_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiRepresentation_map(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiRepresentation_map () { return (SCLP23(Application_instance_ptr)) new SdaiRepresentation_map ; } +#else inline SdaiRepresentation_map * create_SdaiRepresentation_map () { return new SdaiRepresentation_map ; } +#endif -///////// END_ENTITY representation_map +///////// END_ENTITY representation_map -///////// ENTITY product_definition_effectivity +///////// ENTITY product_definition_effectivity extern AttrDescriptor *a_243usage; class SdaiProduct_definition_effectivity : public SdaiEffectivity { - protected: - SdaiProduct_definition_relationshipH _usage ; + +#ifdef __OSTORE__ + friend void SdaiProduct_definition_effectivity_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _usage ; public: SdaiProduct_definition_effectivity ( ); - SdaiProduct_definition_effectivity (STEPentity *se ); + SdaiProduct_definition_effectivity (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiProduct_definition_effectivity (SdaiProduct_definition_effectivity& e ); ~SdaiProduct_definition_effectivity (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 130 ; } - SdaiProduct_definition_relationshipH Usage() const; - void Usage (SdaiProduct_definition_relationshipH x); + const SdaiProduct_definition_relationship_ptr usage_() const; + void usage_ (const SdaiProduct_definition_relationship_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiProduct_definition_effectivity_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiProduct_definition_effectivity(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiProduct_definition_effectivity () { return (SCLP23(Application_instance_ptr)) new SdaiProduct_definition_effectivity ; } +#else inline SdaiProduct_definition_effectivity * create_SdaiProduct_definition_effectivity () { return new SdaiProduct_definition_effectivity ; } +#endif -///////// END_ENTITY product_definition_effectivity +///////// END_ENTITY product_definition_effectivity -///////// ENTITY configuration_effectivity +///////// ENTITY configuration_effectivity extern AttrDescriptor *a_244configuration; class SdaiConfiguration_effectivity : public SdaiProduct_definition_effectivity { - protected: - SdaiConfiguration_designH _configuration ; + +#ifdef __OSTORE__ + friend void SdaiConfiguration_effectivity_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _configuration ; public: SdaiConfiguration_effectivity ( ); - SdaiConfiguration_effectivity (STEPentity *se ); + SdaiConfiguration_effectivity (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiConfiguration_effectivity (SdaiConfiguration_effectivity& e ); ~SdaiConfiguration_effectivity (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 131 ; } - SdaiConfiguration_designH Configuration() const; - void Configuration (SdaiConfiguration_designH x); + const SdaiConfiguration_design_ptr configuration_() const; + void configuration_ (const SdaiConfiguration_design_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiConfiguration_effectivity_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiConfiguration_effectivity(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiConfiguration_effectivity () { return (SCLP23(Application_instance_ptr)) new SdaiConfiguration_effectivity ; } +#else inline SdaiConfiguration_effectivity * create_SdaiConfiguration_effectivity () { return new SdaiConfiguration_effectivity ; } +#endif -///////// END_ENTITY configuration_effectivity +///////// END_ENTITY configuration_effectivity -///////// ENTITY ellipse +///////// ENTITY ellipse extern AttrDescriptor *a_245semi_axis_1; extern AttrDescriptor *a_246semi_axis_2; class SdaiEllipse : public SdaiConic { - protected: - SdaiReal _semi_axis_1 ; - SdaiReal _semi_axis_2 ; + +#ifdef __OSTORE__ + friend void SdaiEllipse_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Real) _semi_axis_1 ; + SCLP23(Real) _semi_axis_2 ; public: SdaiEllipse ( ); - SdaiEllipse (STEPentity *se ); + SdaiEllipse (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiEllipse (SdaiEllipse& e ); ~SdaiEllipse (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 132 ; } - const SdaiPositive_length_measure Semi_axis_1() const; - void Semi_axis_1 (SdaiPositive_length_measure x); - const SdaiPositive_length_measure Semi_axis_2() const; - void Semi_axis_2 (SdaiPositive_length_measure x); + const SdaiPositive_length_measure semi_axis_1_() const; + void semi_axis_1_ (const SdaiPositive_length_measure x); + + const SdaiPositive_length_measure semi_axis_2_() const; + void semi_axis_2_ (const SdaiPositive_length_measure x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiEllipse_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiEllipse(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiEllipse () { return (SCLP23(Application_instance_ptr)) new SdaiEllipse ; } +#else inline SdaiEllipse * create_SdaiEllipse () { return new SdaiEllipse ; } +#endif -///////// END_ENTITY ellipse +///////// END_ENTITY ellipse -///////// ENTITY context_dependent_unit +///////// ENTITY context_dependent_unit extern AttrDescriptor *a_247name; class SdaiContext_dependent_unit : public SdaiNamed_unit { - protected: - SdaiString _name ; + +#ifdef __OSTORE__ + friend void SdaiContext_dependent_unit_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(String) _name ; public: SdaiContext_dependent_unit ( ); - SdaiContext_dependent_unit (STEPentity *se ); + SdaiContext_dependent_unit (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiContext_dependent_unit (SdaiContext_dependent_unit& e ); ~SdaiContext_dependent_unit (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 133 ; } - const SdaiLabel Name() const; - void Name (const char * x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiContext_dependent_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiContext_dependent_unit(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiContext_dependent_unit () { return (SCLP23(Application_instance_ptr)) new SdaiContext_dependent_unit ; } +#else inline SdaiContext_dependent_unit * create_SdaiContext_dependent_unit () { return new SdaiContext_dependent_unit ; } +#endif -///////// END_ENTITY context_dependent_unit +///////// END_ENTITY context_dependent_unit -///////// ENTITY alternate_product_relationship +///////// ENTITY alternate_product_relationship extern AttrDescriptor *a_248name; extern AttrDescriptor *a_249description; @@ -8091,166 +13690,382 @@ extern AttrDescriptor *a_250alternate; extern AttrDescriptor *a_251base; extern AttrDescriptor *a_252basis; -class SdaiAlternate_product_relationship : public STEPentity { +class SdaiAlternate_product_relationship : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiAlternate_product_relationship_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _name ; - SdaiString _description ; - SdaiProductH _alternate ; - SdaiProductH _base ; - SdaiString _basis ; + SCLP23(String) _name ; + SCLP23(String) _description ; + SCLP23(Application_instance_ptr) _alternate ; + SCLP23(Application_instance_ptr) _base ; + SCLP23(String) _basis ; public: SdaiAlternate_product_relationship ( ); - SdaiAlternate_product_relationship (STEPentity *se ); + SdaiAlternate_product_relationship (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiAlternate_product_relationship (SdaiAlternate_product_relationship& e ); ~SdaiAlternate_product_relationship (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 134 ; } - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiText Description() const; - void Description (const char * x); - SdaiProductH Alternate() const; - void Alternate (SdaiProductH x); - SdaiProductH Base() const; - void Base (SdaiProductH x); - const SdaiText Basis() const; - void Basis (const char * x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiProduct_ptr alternate_() const; + void alternate_ (const SdaiProduct_ptr x); + + const SdaiProduct_ptr base_() const; + void base_ (const SdaiProduct_ptr x); + + const SdaiText basis_() const; + void basis_ (const SdaiText x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiAlternate_product_relationship_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiAlternate_product_relationship(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiAlternate_product_relationship () { return (SCLP23(Application_instance_ptr)) new SdaiAlternate_product_relationship ; } +#else inline SdaiAlternate_product_relationship * create_SdaiAlternate_product_relationship () { return new SdaiAlternate_product_relationship ; } +#endif -///////// END_ENTITY alternate_product_relationship +///////// END_ENTITY alternate_product_relationship -///////// ENTITY document_type +///////// ENTITY document_type extern AttrDescriptor *a_253product_data_type; -class SdaiDocument_type : public STEPentity { +class SdaiDocument_type : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiDocument_type_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _product_data_type ; + SCLP23(String) _product_data_type ; public: SdaiDocument_type ( ); - SdaiDocument_type (STEPentity *se ); + SdaiDocument_type (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiDocument_type (SdaiDocument_type& e ); ~SdaiDocument_type (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 135 ; } - const SdaiLabel Product_data_type() const; - void Product_data_type (const char * x); + const SdaiLabel product_data_type_() const; + void product_data_type_ (const SdaiLabel x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiDocument_type_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiDocument_type(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiDocument_type () { return (SCLP23(Application_instance_ptr)) new SdaiDocument_type ; } +#else inline SdaiDocument_type * create_SdaiDocument_type () { return new SdaiDocument_type ; } +#endif -///////// END_ENTITY document_type +///////// END_ENTITY document_type -///////// ENTITY document_reference +///////// ENTITY document_reference extern AttrDescriptor *a_254assigned_document; extern AttrDescriptor *a_255source; -class SdaiDocument_reference : public STEPentity { +class SdaiDocument_reference : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiDocument_reference_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiDocumentH _assigned_document ; - SdaiString _source ; + SCLP23(Application_instance_ptr) _assigned_document ; + SCLP23(String) _source ; public: SdaiDocument_reference ( ); - SdaiDocument_reference (STEPentity *se ); + SdaiDocument_reference (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiDocument_reference (SdaiDocument_reference& e ); ~SdaiDocument_reference (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 136 ; } - SdaiDocumentH Assigned_document() const; - void Assigned_document (SdaiDocumentH x); - const SdaiLabel Source() const; - void Source (const char * x); + const SdaiDocument_ptr assigned_document_() const; + void assigned_document_ (const SdaiDocument_ptr x); + + const SdaiLabel source_() const; + void source_ (const SdaiLabel x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiDocument_reference_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiDocument_reference(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiDocument_reference () { return (SCLP23(Application_instance_ptr)) new SdaiDocument_reference ; } +#else inline SdaiDocument_reference * create_SdaiDocument_reference () { return new SdaiDocument_reference ; } +#endif -///////// END_ENTITY document_reference +///////// END_ENTITY document_reference -///////// ENTITY mechanical_context +///////// ENTITY mechanical_context class SdaiMechanical_context : public SdaiProduct_context { - protected: + +#ifdef __OSTORE__ + friend void SdaiMechanical_context_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiMechanical_context ( ); - SdaiMechanical_context (STEPentity *se ); + SdaiMechanical_context (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiMechanical_context (SdaiMechanical_context& e ); ~SdaiMechanical_context (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 137 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiMechanical_context_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiMechanical_context(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiMechanical_context () { return (SCLP23(Application_instance_ptr)) new SdaiMechanical_context ; } +#else inline SdaiMechanical_context * create_SdaiMechanical_context () { return new SdaiMechanical_context ; } +#endif -///////// END_ENTITY mechanical_context +///////// END_ENTITY mechanical_context -///////// ENTITY shell_based_wireframe_model +///////// ENTITY shell_based_wireframe_model extern AttrDescriptor *a_256sbwm_boundary; class SdaiShell_based_wireframe_model : public SdaiGeometric_representation_item { - protected: + +#ifdef __OSTORE__ + friend void SdaiShell_based_wireframe_model_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: SdaiShells _sbwm_boundary ; // of shell public: SdaiShell_based_wireframe_model ( ); - SdaiShell_based_wireframe_model (STEPentity *se ); + SdaiShell_based_wireframe_model (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiShell_based_wireframe_model (SdaiShell_based_wireframe_model& e ); ~SdaiShell_based_wireframe_model (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 138 ; } - const SdaiShellsH Sbwm_boundary() const; - void Sbwm_boundary (SdaiShellsH x); + const SdaiShells_ptr sbwm_boundary_() const; + void sbwm_boundary_ (const SdaiShells_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiShell_based_wireframe_model_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiShell_based_wireframe_model(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiShell_based_wireframe_model () { return (SCLP23(Application_instance_ptr)) new SdaiShell_based_wireframe_model ; } +#else inline SdaiShell_based_wireframe_model * create_SdaiShell_based_wireframe_model () { return new SdaiShell_based_wireframe_model ; } +#endif -///////// END_ENTITY shell_based_wireframe_model +///////// END_ENTITY shell_based_wireframe_model -///////// ENTITY contract +///////// ENTITY contract extern AttrDescriptor *a_257name; extern AttrDescriptor *a_258purpose; extern AttrDescriptor *a_259kind; -class SdaiContract : public STEPentity { +class SdaiContract : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiContract_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _name ; - SdaiString _purpose ; - SdaiContract_typeH _kind ; + SCLP23(String) _name ; + SCLP23(String) _purpose ; + SCLP23(Application_instance_ptr) _kind ; public: SdaiContract ( ); - SdaiContract (STEPentity *se ); + SdaiContract (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiContract (SdaiContract& e ); ~SdaiContract (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 139 ; } - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiText Purpose() const; - void Purpose (const char * x); - SdaiContract_typeH Kind() const; - void Kind (SdaiContract_typeH x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiText purpose_() const; + void purpose_ (const SdaiText x); + + const SdaiContract_type_ptr kind_() const; + void kind_ (const SdaiContract_type_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiContract_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiContract(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiContract () { return (SCLP23(Application_instance_ptr)) new SdaiContract ; } +#else inline SdaiContract * create_SdaiContract () { return new SdaiContract ; } +#endif -///////// END_ENTITY contract +///////// END_ENTITY contract -///////// ENTITY dimensional_exponents +///////// ENTITY dimensional_exponents extern AttrDescriptor *a_260length_exponent; extern AttrDescriptor *a_261mass_exponent; @@ -8260,585 +14075,1334 @@ extern AttrDescriptor *a_264thermodynamic_temperature_exponent; extern AttrDescriptor *a_265amount_of_substance_exponent; extern AttrDescriptor *a_266luminous_intensity_exponent; -class SdaiDimensional_exponents : public STEPentity { +class SdaiDimensional_exponents : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiDimensional_exponents_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiReal _length_exponent ; - SdaiReal _mass_exponent ; - SdaiReal _time_exponent ; - SdaiReal _electric_current_exponent ; - SdaiReal _thermodynamic_temperature_exponent ; - SdaiReal _amount_of_substance_exponent ; - SdaiReal _luminous_intensity_exponent ; + SCLP23(Real) _length_exponent ; + SCLP23(Real) _mass_exponent ; + SCLP23(Real) _time_exponent ; + SCLP23(Real) _electric_current_exponent ; + SCLP23(Real) _thermodynamic_temperature_exponent ; + SCLP23(Real) _amount_of_substance_exponent ; + SCLP23(Real) _luminous_intensity_exponent ; public: SdaiDimensional_exponents ( ); - SdaiDimensional_exponents (STEPentity *se ); + SdaiDimensional_exponents (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiDimensional_exponents (SdaiDimensional_exponents& e ); ~SdaiDimensional_exponents (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 140 ; } - const SdaiReal Length_exponent() const; - void Length_exponent (SdaiReal x); - const SdaiReal Mass_exponent() const; - void Mass_exponent (SdaiReal x); - const SdaiReal Time_exponent() const; - void Time_exponent (SdaiReal x); - const SdaiReal Electric_current_exponent() const; - void Electric_current_exponent (SdaiReal x); - const SdaiReal Thermodynamic_temperature_exponent() const; - void Thermodynamic_temperature_exponent (SdaiReal x); - const SdaiReal Amount_of_substance_exponent() const; - void Amount_of_substance_exponent (SdaiReal x); - const SdaiReal Luminous_intensity_exponent() const; - void Luminous_intensity_exponent (SdaiReal x); + const SCLP23(Real) length_exponent_() const; + void length_exponent_ (const SCLP23(Real) x); + + const SCLP23(Real) mass_exponent_() const; + void mass_exponent_ (const SCLP23(Real) x); + + const SCLP23(Real) time_exponent_() const; + void time_exponent_ (const SCLP23(Real) x); + + const SCLP23(Real) electric_current_exponent_() const; + void electric_current_exponent_ (const SCLP23(Real) x); + + const SCLP23(Real) thermodynamic_temperature_exponent_() const; + void thermodynamic_temperature_exponent_ (const SCLP23(Real) x); + + const SCLP23(Real) amount_of_substance_exponent_() const; + void amount_of_substance_exponent_ (const SCLP23(Real) x); + + const SCLP23(Real) luminous_intensity_exponent_() const; + void luminous_intensity_exponent_ (const SCLP23(Real) x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiDimensional_exponents_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiDimensional_exponents(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiDimensional_exponents () { return (SCLP23(Application_instance_ptr)) new SdaiDimensional_exponents ; } +#else inline SdaiDimensional_exponents * create_SdaiDimensional_exponents () { return new SdaiDimensional_exponents ; } +#endif -///////// END_ENTITY dimensional_exponents +///////// END_ENTITY dimensional_exponents -///////// ENTITY start_request +///////// ENTITY start_request extern AttrDescriptor *a_267items; class SdaiStart_request : public SdaiAction_request_assignment { - protected: + +#ifdef __OSTORE__ + friend void SdaiStart_request_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: SdaiStart_request_items _items ; // of start_request_item public: SdaiStart_request ( ); - SdaiStart_request (STEPentity *se ); + SdaiStart_request (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiStart_request (SdaiStart_request& e ); ~SdaiStart_request (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 141 ; } - const SdaiStart_request_itemsH Items() const; - void Items (SdaiStart_request_itemsH x); + const SdaiStart_request_items_ptr items_() const; + void items_ (const SdaiStart_request_items_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiStart_request_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiStart_request(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiStart_request () { return (SCLP23(Application_instance_ptr)) new SdaiStart_request ; } +#else inline SdaiStart_request * create_SdaiStart_request () { return new SdaiStart_request ; } +#endif -///////// END_ENTITY start_request +///////// END_ENTITY start_request -///////// ENTITY cc_design_specification_reference +///////// ENTITY cc_design_specification_reference extern AttrDescriptor *a_268items; class SdaiCc_design_specification_reference : public SdaiDocument_reference { - protected: + +#ifdef __OSTORE__ + friend void SdaiCc_design_specification_reference_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: SdaiSpecified_items _items ; // of specified_item public: SdaiCc_design_specification_reference ( ); - SdaiCc_design_specification_reference (STEPentity *se ); + SdaiCc_design_specification_reference (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiCc_design_specification_reference (SdaiCc_design_specification_reference& e ); ~SdaiCc_design_specification_reference (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 142 ; } - const SdaiSpecified_itemsH Items() const; - void Items (SdaiSpecified_itemsH x); + const SdaiSpecified_items_ptr items_() const; + void items_ (const SdaiSpecified_items_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiCc_design_specification_reference_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiCc_design_specification_reference(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiCc_design_specification_reference () { return (SCLP23(Application_instance_ptr)) new SdaiCc_design_specification_reference ; } +#else inline SdaiCc_design_specification_reference * create_SdaiCc_design_specification_reference () { return new SdaiCc_design_specification_reference ; } +#endif -///////// END_ENTITY cc_design_specification_reference +///////// END_ENTITY cc_design_specification_reference -///////// ENTITY supplied_part_relationship +///////// ENTITY supplied_part_relationship class SdaiSupplied_part_relationship : public SdaiProduct_definition_relationship { - protected: + +#ifdef __OSTORE__ + friend void SdaiSupplied_part_relationship_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiSupplied_part_relationship ( ); - SdaiSupplied_part_relationship (STEPentity *se ); + SdaiSupplied_part_relationship (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiSupplied_part_relationship (SdaiSupplied_part_relationship& e ); ~SdaiSupplied_part_relationship (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 143 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiSupplied_part_relationship_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiSupplied_part_relationship(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiSupplied_part_relationship () { return (SCLP23(Application_instance_ptr)) new SdaiSupplied_part_relationship ; } +#else inline SdaiSupplied_part_relationship * create_SdaiSupplied_part_relationship () { return new SdaiSupplied_part_relationship ; } +#endif -///////// END_ENTITY supplied_part_relationship +///////// END_ENTITY supplied_part_relationship -///////// ENTITY context_dependent_shape_representation +///////// ENTITY context_dependent_shape_representation extern AttrDescriptor *a_269representation_relation; extern AttrDescriptor *a_270represented_product_relation; -class SdaiContext_dependent_shape_representation : public STEPentity { +class SdaiContext_dependent_shape_representation : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiContext_dependent_shape_representation_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiShape_representation_relationshipH _representation_relation ; - SdaiProduct_definition_shapeH _represented_product_relation ; + SCLP23(Application_instance_ptr) _representation_relation ; + SCLP23(Application_instance_ptr) _represented_product_relation ; public: SdaiContext_dependent_shape_representation ( ); - SdaiContext_dependent_shape_representation (STEPentity *se ); + SdaiContext_dependent_shape_representation (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiContext_dependent_shape_representation (SdaiContext_dependent_shape_representation& e ); ~SdaiContext_dependent_shape_representation (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 144 ; } - SdaiShape_representation_relationshipH Representation_relation() const; - void Representation_relation (SdaiShape_representation_relationshipH x); - SdaiProduct_definition_shapeH Represented_product_relation() const; - void Represented_product_relation (SdaiProduct_definition_shapeH x); + const SdaiShape_representation_relationship_ptr representation_relation_() const; + void representation_relation_ (const SdaiShape_representation_relationship_ptr x); + + const SdaiProduct_definition_shape_ptr represented_product_relation_() const; + void represented_product_relation_ (const SdaiProduct_definition_shape_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiContext_dependent_shape_representation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiContext_dependent_shape_representation(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiContext_dependent_shape_representation () { return (SCLP23(Application_instance_ptr)) new SdaiContext_dependent_shape_representation ; } +#else inline SdaiContext_dependent_shape_representation * create_SdaiContext_dependent_shape_representation () { return new SdaiContext_dependent_shape_representation ; } +#endif -///////// END_ENTITY context_dependent_shape_representation +///////// END_ENTITY context_dependent_shape_representation -///////// ENTITY ordinal_date +///////// ENTITY ordinal_date extern AttrDescriptor *a_271day_component; class SdaiOrdinal_date : public SdaiDate { - protected: - SdaiInteger _day_component ; + +#ifdef __OSTORE__ + friend void SdaiOrdinal_date_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Integer) _day_component ; public: SdaiOrdinal_date ( ); - SdaiOrdinal_date (STEPentity *se ); + SdaiOrdinal_date (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiOrdinal_date (SdaiOrdinal_date& e ); ~SdaiOrdinal_date (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 145 ; } - const SdaiDay_in_year_number Day_component() const; - void Day_component (SdaiDay_in_year_number x); + const SdaiDay_in_year_number day_component_() const; + void day_component_ (const SdaiDay_in_year_number x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiOrdinal_date_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiOrdinal_date(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiOrdinal_date () { return (SCLP23(Application_instance_ptr)) new SdaiOrdinal_date ; } +#else inline SdaiOrdinal_date * create_SdaiOrdinal_date () { return new SdaiOrdinal_date ; } +#endif -///////// END_ENTITY ordinal_date +///////// END_ENTITY ordinal_date -///////// ENTITY face_outer_bound +///////// ENTITY face_outer_bound class SdaiFace_outer_bound : public SdaiFace_bound { - protected: + +#ifdef __OSTORE__ + friend void SdaiFace_outer_bound_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiFace_outer_bound ( ); - SdaiFace_outer_bound (STEPentity *se ); + SdaiFace_outer_bound (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiFace_outer_bound (SdaiFace_outer_bound& e ); ~SdaiFace_outer_bound (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 146 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiFace_outer_bound_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiFace_outer_bound(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiFace_outer_bound () { return (SCLP23(Application_instance_ptr)) new SdaiFace_outer_bound ; } +#else inline SdaiFace_outer_bound * create_SdaiFace_outer_bound () { return new SdaiFace_outer_bound ; } +#endif -///////// END_ENTITY face_outer_bound +///////// END_ENTITY face_outer_bound -///////// ENTITY mass_measure_with_unit +///////// ENTITY mass_measure_with_unit class SdaiMass_measure_with_unit : public SdaiMeasure_with_unit { - protected: + +#ifdef __OSTORE__ + friend void SdaiMass_measure_with_unit_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiMass_measure_with_unit ( ); - SdaiMass_measure_with_unit (STEPentity *se ); + SdaiMass_measure_with_unit (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiMass_measure_with_unit (SdaiMass_measure_with_unit& e ); ~SdaiMass_measure_with_unit (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 147 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiMass_measure_with_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiMass_measure_with_unit(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiMass_measure_with_unit () { return (SCLP23(Application_instance_ptr)) new SdaiMass_measure_with_unit ; } +#else inline SdaiMass_measure_with_unit * create_SdaiMass_measure_with_unit () { return new SdaiMass_measure_with_unit ; } +#endif -///////// END_ENTITY mass_measure_with_unit +///////// END_ENTITY mass_measure_with_unit -///////// ENTITY brep_with_voids +///////// ENTITY brep_with_voids extern AttrDescriptor *a_272voids; class SdaiBrep_with_voids : public SdaiManifold_solid_brep { - protected: + +#ifdef __OSTORE__ + friend void SdaiBrep_with_voids_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: EntityAggregate _voids ; // of oriented_closed_shell public: SdaiBrep_with_voids ( ); - SdaiBrep_with_voids (STEPentity *se ); + SdaiBrep_with_voids (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiBrep_with_voids (SdaiBrep_with_voids& e ); ~SdaiBrep_with_voids (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 148 ; } - const EntityAggregateH Voids() const; - void Voids (EntityAggregateH x); + const EntityAggregate_ptr voids_() const; + void voids_ (const EntityAggregate_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiBrep_with_voids_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiBrep_with_voids(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiBrep_with_voids () { return (SCLP23(Application_instance_ptr)) new SdaiBrep_with_voids ; } +#else inline SdaiBrep_with_voids * create_SdaiBrep_with_voids () { return new SdaiBrep_with_voids ; } +#endif -///////// END_ENTITY brep_with_voids +///////// END_ENTITY brep_with_voids -///////// ENTITY week_of_year_and_day_date +///////// ENTITY week_of_year_and_day_date extern AttrDescriptor *a_273week_component; extern AttrDescriptor *a_274day_component; class SdaiWeek_of_year_and_day_date : public SdaiDate { - protected: - SdaiInteger _week_component ; - SdaiInteger _day_component ; // OPTIONAL + +#ifdef __OSTORE__ + friend void SdaiWeek_of_year_and_day_date_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Integer) _week_component ; + SCLP23(Integer) _day_component ; // OPTIONAL public: SdaiWeek_of_year_and_day_date ( ); - SdaiWeek_of_year_and_day_date (STEPentity *se ); + SdaiWeek_of_year_and_day_date (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiWeek_of_year_and_day_date (SdaiWeek_of_year_and_day_date& e ); ~SdaiWeek_of_year_and_day_date (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 149 ; } - const SdaiWeek_in_year_number Week_component() const; - void Week_component (SdaiWeek_in_year_number x); - const SdaiDay_in_week_number Day_component() const; - void Day_component (SdaiDay_in_week_number x); + const SdaiWeek_in_year_number week_component_() const; + void week_component_ (const SdaiWeek_in_year_number x); + + const SdaiDay_in_week_number day_component_() const; + void day_component_ (const SdaiDay_in_week_number x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiWeek_of_year_and_day_date_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiWeek_of_year_and_day_date(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiWeek_of_year_and_day_date () { return (SCLP23(Application_instance_ptr)) new SdaiWeek_of_year_and_day_date ; } +#else inline SdaiWeek_of_year_and_day_date * create_SdaiWeek_of_year_and_day_date () { return new SdaiWeek_of_year_and_day_date ; } +#endif -///////// END_ENTITY week_of_year_and_day_date +///////// END_ENTITY week_of_year_and_day_date -///////// ENTITY point_on_curve +///////// ENTITY point_on_curve extern AttrDescriptor *a_275basis_curve; extern AttrDescriptor *a_276point_parameter; class SdaiPoint_on_curve : public SdaiPoint { - protected: - SdaiCurveH _basis_curve ; - SdaiReal _point_parameter ; + +#ifdef __OSTORE__ + friend void SdaiPoint_on_curve_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _basis_curve ; + SCLP23(Real) _point_parameter ; public: SdaiPoint_on_curve ( ); - SdaiPoint_on_curve (STEPentity *se ); + SdaiPoint_on_curve (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiPoint_on_curve (SdaiPoint_on_curve& e ); ~SdaiPoint_on_curve (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 150 ; } - SdaiCurveH Basis_curve() const; - void Basis_curve (SdaiCurveH x); - const SdaiParameter_value Point_parameter() const; - void Point_parameter (SdaiParameter_value x); + const SdaiCurve_ptr basis_curve_() const; + void basis_curve_ (const SdaiCurve_ptr x); + + const SdaiParameter_value point_parameter_() const; + void point_parameter_ (const SdaiParameter_value x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiPoint_on_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiPoint_on_curve(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiPoint_on_curve () { return (SCLP23(Application_instance_ptr)) new SdaiPoint_on_curve ; } +#else inline SdaiPoint_on_curve * create_SdaiPoint_on_curve () { return new SdaiPoint_on_curve ; } +#endif -///////// END_ENTITY point_on_curve +///////// END_ENTITY point_on_curve -///////// ENTITY shell_based_wireframe_shape_representation +///////// ENTITY shell_based_wireframe_shape_representation class SdaiShell_based_wireframe_shape_representation : public SdaiShape_representation { - protected: + +#ifdef __OSTORE__ + friend void SdaiShell_based_wireframe_shape_representation_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiShell_based_wireframe_shape_representation ( ); - SdaiShell_based_wireframe_shape_representation (STEPentity *se ); + SdaiShell_based_wireframe_shape_representation (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiShell_based_wireframe_shape_representation (SdaiShell_based_wireframe_shape_representation& e ); ~SdaiShell_based_wireframe_shape_representation (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 151 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiShell_based_wireframe_shape_representation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiShell_based_wireframe_shape_representation(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiShell_based_wireframe_shape_representation () { return (SCLP23(Application_instance_ptr)) new SdaiShell_based_wireframe_shape_representation ; } +#else inline SdaiShell_based_wireframe_shape_representation * create_SdaiShell_based_wireframe_shape_representation () { return new SdaiShell_based_wireframe_shape_representation ; } +#endif -///////// END_ENTITY shell_based_wireframe_shape_representation +///////// END_ENTITY shell_based_wireframe_shape_representation -///////// ENTITY face +///////// ENTITY face extern AttrDescriptor *a_277bounds; class SdaiFace : public SdaiTopological_representation_item { - protected: + +#ifdef __OSTORE__ + friend void SdaiFace_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: EntityAggregate _bounds ; // of face_bound public: SdaiFace ( ); - SdaiFace (STEPentity *se ); + SdaiFace (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiFace (SdaiFace& e ); ~SdaiFace (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 152 ; } - const EntityAggregateH Bounds() const; - void Bounds (EntityAggregateH x); + const EntityAggregate_ptr bounds_() const; + void bounds_ (const EntityAggregate_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiFace_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiFace(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiFace () { return (SCLP23(Application_instance_ptr)) new SdaiFace ; } +#else inline SdaiFace * create_SdaiFace () { return new SdaiFace ; } +#endif -///////// END_ENTITY face +///////// END_ENTITY face -///////// ENTITY face_surface +///////// ENTITY face_surface extern AttrDescriptor *a_278face_geometry; extern AttrDescriptor *a_279same_sense; class SdaiFace_surface : public SdaiFace { - protected: - SdaiSurfaceH _face_geometry ; - SdaiBoolean _same_sense ; + +#ifdef __OSTORE__ + friend void SdaiFace_surface_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _face_geometry ; + SCLP23(BOOL) _same_sense ; public: SdaiFace_surface ( ); - SdaiFace_surface (STEPentity *se ); + SdaiFace_surface (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiFace_surface (SdaiFace_surface& e ); ~SdaiFace_surface (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 153 ; } - SdaiSurfaceH Face_geometry() const; - void Face_geometry (SdaiSurfaceH x); - const BOOLEAN Same_sense() const; - void Same_sense (BOOLEAN x); + const SdaiSurface_ptr face_geometry_() const; + void face_geometry_ (const SdaiSurface_ptr x); + + const SCLBOOL(Bool) same_sense_() const; + void same_sense_ (const SCLBOOL(Bool) x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ #if 0 #endif + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiFace_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiFace_surface(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiFace_surface () { return (SCLP23(Application_instance_ptr)) new SdaiFace_surface ; } +#else inline SdaiFace_surface * create_SdaiFace_surface () { return new SdaiFace_surface ; } +#endif -///////// END_ENTITY face_surface +///////// END_ENTITY face_surface -///////// ENTITY oriented_face +///////// ENTITY oriented_face extern AttrDescriptor *a_280face_element; extern AttrDescriptor *a_281orientation; -extern AttrDescriptor *a_282Dface_bounds; +extern Derived_attribute *a_282Dface_bounds; class SdaiOriented_face : public SdaiFace { - protected: - SdaiFaceH _face_element ; - SdaiBoolean _orientation ; + +#ifdef __OSTORE__ + friend void SdaiOriented_face_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _face_element ; + SCLP23(BOOL) _orientation ; public: SdaiOriented_face ( ); - SdaiOriented_face (STEPentity *se ); + SdaiOriented_face (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiOriented_face (SdaiOriented_face& e ); ~SdaiOriented_face (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 154 ; } - SdaiFaceH Face_element() const; - void Face_element (SdaiFaceH x); - const BOOLEAN Orientation() const; - void Orientation (BOOLEAN x); + const SdaiFace_ptr face_element_() const; + void face_element_ (const SdaiFace_ptr x); + + const SCLBOOL(Bool) orientation_() const; + void orientation_ (const SCLBOOL(Bool) x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiOriented_face_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiOriented_face(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiOriented_face () { return (SCLP23(Application_instance_ptr)) new SdaiOriented_face ; } +#else inline SdaiOriented_face * create_SdaiOriented_face () { return new SdaiOriented_face ; } +#endif -///////// END_ENTITY oriented_face +///////// END_ENTITY oriented_face -///////// ENTITY surface_of_revolution +///////// ENTITY surface_of_revolution extern AttrDescriptor *a_283axis_position; -extern AttrDescriptor *a_284Daxis_line; +extern Derived_attribute *a_284Daxis_line; class SdaiSurface_of_revolution : public SdaiSwept_surface { - protected: - SdaiAxis1_placementH _axis_position ; + +#ifdef __OSTORE__ + friend void SdaiSurface_of_revolution_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _axis_position ; public: SdaiSurface_of_revolution ( ); - SdaiSurface_of_revolution (STEPentity *se ); + SdaiSurface_of_revolution (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiSurface_of_revolution (SdaiSurface_of_revolution& e ); ~SdaiSurface_of_revolution (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 155 ; } - SdaiAxis1_placementH Axis_position() const; - void Axis_position (SdaiAxis1_placementH x); + const SdaiAxis1_placement_ptr axis_position_() const; + void axis_position_ (const SdaiAxis1_placement_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiSurface_of_revolution_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiSurface_of_revolution(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiSurface_of_revolution () { return (SCLP23(Application_instance_ptr)) new SdaiSurface_of_revolution ; } +#else inline SdaiSurface_of_revolution * create_SdaiSurface_of_revolution () { return new SdaiSurface_of_revolution ; } +#endif -///////// END_ENTITY surface_of_revolution +///////// END_ENTITY surface_of_revolution -///////// ENTITY advanced_brep_shape_representation +///////// ENTITY advanced_brep_shape_representation class SdaiAdvanced_brep_shape_representation : public SdaiShape_representation { - protected: + +#ifdef __OSTORE__ + friend void SdaiAdvanced_brep_shape_representation_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiAdvanced_brep_shape_representation ( ); - SdaiAdvanced_brep_shape_representation (STEPentity *se ); + SdaiAdvanced_brep_shape_representation (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiAdvanced_brep_shape_representation (SdaiAdvanced_brep_shape_representation& e ); ~SdaiAdvanced_brep_shape_representation (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 156 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiAdvanced_brep_shape_representation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiAdvanced_brep_shape_representation(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiAdvanced_brep_shape_representation () { return (SCLP23(Application_instance_ptr)) new SdaiAdvanced_brep_shape_representation ; } +#else inline SdaiAdvanced_brep_shape_representation * create_SdaiAdvanced_brep_shape_representation () { return new SdaiAdvanced_brep_shape_representation ; } +#endif -///////// END_ENTITY advanced_brep_shape_representation +///////// END_ENTITY advanced_brep_shape_representation -///////// ENTITY edge_curve +///////// ENTITY edge_curve extern AttrDescriptor *a_285edge_geometry; extern AttrDescriptor *a_286same_sense; class SdaiEdge_curve : public SdaiEdge { - protected: - SdaiCurveH _edge_geometry ; - SdaiBoolean _same_sense ; + +#ifdef __OSTORE__ + friend void SdaiEdge_curve_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _edge_geometry ; + SCLP23(BOOL) _same_sense ; public: SdaiEdge_curve ( ); - SdaiEdge_curve (STEPentity *se ); + SdaiEdge_curve (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiEdge_curve (SdaiEdge_curve& e ); ~SdaiEdge_curve (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 157 ; } - SdaiCurveH Edge_geometry() const; - void Edge_geometry (SdaiCurveH x); - const BOOLEAN Same_sense() const; - void Same_sense (BOOLEAN x); + const SdaiCurve_ptr edge_geometry_() const; + void edge_geometry_ (const SdaiCurve_ptr x); + + const SCLBOOL(Bool) same_sense_() const; + void same_sense_ (const SCLBOOL(Bool) x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ #if 0 #endif + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiEdge_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiEdge_curve(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiEdge_curve () { return (SCLP23(Application_instance_ptr)) new SdaiEdge_curve ; } +#else inline SdaiEdge_curve * create_SdaiEdge_curve () { return new SdaiEdge_curve ; } +#endif -///////// END_ENTITY edge_curve +///////// END_ENTITY edge_curve -///////// ENTITY point_replica +///////// ENTITY point_replica extern AttrDescriptor *a_287parent_pt; extern AttrDescriptor *a_288transformation; class SdaiPoint_replica : public SdaiPoint { - protected: - SdaiPointH _parent_pt ; - SdaiCartesian_transformation_operatorH _transformation ; + +#ifdef __OSTORE__ + friend void SdaiPoint_replica_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _parent_pt ; + SCLP23(Application_instance_ptr) _transformation ; public: SdaiPoint_replica ( ); - SdaiPoint_replica (STEPentity *se ); + SdaiPoint_replica (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiPoint_replica (SdaiPoint_replica& e ); ~SdaiPoint_replica (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 158 ; } - SdaiPointH Parent_pt() const; - void Parent_pt (SdaiPointH x); - SdaiCartesian_transformation_operatorH Transformation() const; - void Transformation (SdaiCartesian_transformation_operatorH x); + const SdaiPoint_ptr parent_pt_() const; + void parent_pt_ (const SdaiPoint_ptr x); + + const SdaiCartesian_transformation_operator_ptr transformation_() const; + void transformation_ (const SdaiCartesian_transformation_operator_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiPoint_replica_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiPoint_replica(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiPoint_replica () { return (SCLP23(Application_instance_ptr)) new SdaiPoint_replica ; } +#else inline SdaiPoint_replica * create_SdaiPoint_replica () { return new SdaiPoint_replica ; } +#endif -///////// END_ENTITY point_replica +///////// END_ENTITY point_replica -///////// ENTITY product +///////// ENTITY product extern AttrDescriptor *a_289id; extern AttrDescriptor *a_290name; extern AttrDescriptor *a_291description; extern AttrDescriptor *a_292frame_of_reference; -class SdaiProduct : public STEPentity { +class SdaiProduct : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiProduct_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _id ; - SdaiString _name ; - SdaiString _description ; + SCLP23(String) _id ; + SCLP23(String) _name ; + SCLP23(String) _description ; EntityAggregate _frame_of_reference ; // of product_context public: SdaiProduct ( ); - SdaiProduct (STEPentity *se ); + SdaiProduct (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiProduct (SdaiProduct& e ); ~SdaiProduct (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 159 ; } - const SdaiIdentifier Id() const; - void Id (const char * x); - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiText Description() const; - void Description (const char * x); - const EntityAggregateH Frame_of_reference() const; - void Frame_of_reference (EntityAggregateH x); + const SdaiIdentifier id_() const; + void id_ (const SdaiIdentifier x); + + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const EntityAggregate_ptr frame_of_reference_() const; + void frame_of_reference_ (const EntityAggregate_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiProduct_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiProduct(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiProduct () { return (SCLP23(Application_instance_ptr)) new SdaiProduct ; } +#else inline SdaiProduct * create_SdaiProduct () { return new SdaiProduct ; } +#endif -///////// END_ENTITY product +///////// END_ENTITY product -///////// ENTITY shape_aspect_relationship +///////// ENTITY shape_aspect_relationship extern AttrDescriptor *a_293name; extern AttrDescriptor *a_294description; extern AttrDescriptor *a_295relating_shape_aspect; extern AttrDescriptor *a_296related_shape_aspect; -class SdaiShape_aspect_relationship : public STEPentity { +class SdaiShape_aspect_relationship : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiShape_aspect_relationship_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _name ; - SdaiString _description ; - SdaiShape_aspectH _relating_shape_aspect ; - SdaiShape_aspectH _related_shape_aspect ; + SCLP23(String) _name ; + SCLP23(String) _description ; + SCLP23(Application_instance_ptr) _relating_shape_aspect ; + SCLP23(Application_instance_ptr) _related_shape_aspect ; public: SdaiShape_aspect_relationship ( ); - SdaiShape_aspect_relationship (STEPentity *se ); + SdaiShape_aspect_relationship (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiShape_aspect_relationship (SdaiShape_aspect_relationship& e ); ~SdaiShape_aspect_relationship (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 160 ; } - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiText Description() const; - void Description (const char * x); - SdaiShape_aspectH Relating_shape_aspect() const; - void Relating_shape_aspect (SdaiShape_aspectH x); - SdaiShape_aspectH Related_shape_aspect() const; - void Related_shape_aspect (SdaiShape_aspectH x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiShape_aspect_ptr relating_shape_aspect_() const; + void relating_shape_aspect_ (const SdaiShape_aspect_ptr x); + + const SdaiShape_aspect_ptr related_shape_aspect_() const; + void related_shape_aspect_ (const SdaiShape_aspect_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiShape_aspect_relationship_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiShape_aspect_relationship(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiShape_aspect_relationship () { return (SCLP23(Application_instance_ptr)) new SdaiShape_aspect_relationship ; } +#else inline SdaiShape_aspect_relationship * create_SdaiShape_aspect_relationship () { return new SdaiShape_aspect_relationship ; } +#endif -///////// END_ENTITY shape_aspect_relationship +///////// END_ENTITY shape_aspect_relationship -///////// ENTITY rectangular_trimmed_surface +///////// ENTITY rectangular_trimmed_surface extern AttrDescriptor *a_297basis_surface; extern AttrDescriptor *a_298u1; @@ -8849,2430 +15413,6192 @@ extern AttrDescriptor *a_302usense; extern AttrDescriptor *a_303vsense; class SdaiRectangular_trimmed_surface : public SdaiBounded_surface { - protected: - SdaiSurfaceH _basis_surface ; - SdaiReal _u1 ; - SdaiReal _u2 ; - SdaiReal _v1 ; - SdaiReal _v2 ; - SdaiBoolean _usense ; - SdaiBoolean _vsense ; + +#ifdef __OSTORE__ + friend void SdaiRectangular_trimmed_surface_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _basis_surface ; + SCLP23(Real) _u1 ; + SCLP23(Real) _u2 ; + SCLP23(Real) _v1 ; + SCLP23(Real) _v2 ; + SCLP23(BOOL) _usense ; + SCLP23(BOOL) _vsense ; public: SdaiRectangular_trimmed_surface ( ); - SdaiRectangular_trimmed_surface (STEPentity *se ); + SdaiRectangular_trimmed_surface (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiRectangular_trimmed_surface (SdaiRectangular_trimmed_surface& e ); ~SdaiRectangular_trimmed_surface (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 161 ; } - SdaiSurfaceH Basis_surface() const; - void Basis_surface (SdaiSurfaceH x); - const SdaiParameter_value U1() const; - void U1 (SdaiParameter_value x); - const SdaiParameter_value U2() const; - void U2 (SdaiParameter_value x); - const SdaiParameter_value V1() const; - void V1 (SdaiParameter_value x); - const SdaiParameter_value V2() const; - void V2 (SdaiParameter_value x); - const BOOLEAN Usense() const; - void Usense (BOOLEAN x); - const BOOLEAN Vsense() const; - void Vsense (BOOLEAN x); + const SdaiSurface_ptr basis_surface_() const; + void basis_surface_ (const SdaiSurface_ptr x); + + const SdaiParameter_value u1_() const; + void u1_ (const SdaiParameter_value x); + + const SdaiParameter_value u2_() const; + void u2_ (const SdaiParameter_value x); + + const SdaiParameter_value v1_() const; + void v1_ (const SdaiParameter_value x); + + const SdaiParameter_value v2_() const; + void v2_ (const SdaiParameter_value x); + + const SCLBOOL(Bool) usense_() const; + void usense_ (const SCLBOOL(Bool) x); + + const SCLBOOL(Bool) vsense_() const; + void vsense_ (const SCLBOOL(Bool) x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiRectangular_trimmed_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiRectangular_trimmed_surface(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiRectangular_trimmed_surface () { return (SCLP23(Application_instance_ptr)) new SdaiRectangular_trimmed_surface ; } +#else inline SdaiRectangular_trimmed_surface * create_SdaiRectangular_trimmed_surface () { return new SdaiRectangular_trimmed_surface ; } +#endif -///////// END_ENTITY rectangular_trimmed_surface +///////// END_ENTITY rectangular_trimmed_surface -///////// ENTITY plane +///////// ENTITY plane class SdaiPlane : public SdaiElementary_surface { - protected: + +#ifdef __OSTORE__ + friend void SdaiPlane_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiPlane ( ); - SdaiPlane (STEPentity *se ); + SdaiPlane (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiPlane (SdaiPlane& e ); ~SdaiPlane (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 162 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiPlane_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiPlane(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiPlane () { return (SCLP23(Application_instance_ptr)) new SdaiPlane ; } +#else inline SdaiPlane * create_SdaiPlane () { return new SdaiPlane ; } +#endif -///////// END_ENTITY plane +///////// END_ENTITY plane -///////// ENTITY action_assignment +///////// ENTITY action_assignment extern AttrDescriptor *a_304assigned_action; -class SdaiAction_assignment : public STEPentity { +class SdaiAction_assignment : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiAction_assignment_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiActionH _assigned_action ; + SCLP23(Application_instance_ptr) _assigned_action ; public: SdaiAction_assignment ( ); - SdaiAction_assignment (STEPentity *se ); + SdaiAction_assignment (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiAction_assignment (SdaiAction_assignment& e ); ~SdaiAction_assignment (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 163 ; } - SdaiActionH Assigned_action() const; - void Assigned_action (SdaiActionH x); + const SdaiAction_ptr assigned_action_() const; + void assigned_action_ (const SdaiAction_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiAction_assignment_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiAction_assignment(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiAction_assignment () { return (SCLP23(Application_instance_ptr)) new SdaiAction_assignment ; } +#else inline SdaiAction_assignment * create_SdaiAction_assignment () { return new SdaiAction_assignment ; } +#endif -///////// END_ENTITY action_assignment +///////// END_ENTITY action_assignment -///////// ENTITY change +///////// ENTITY change extern AttrDescriptor *a_305items; class SdaiChange : public SdaiAction_assignment { - protected: + +#ifdef __OSTORE__ + friend void SdaiChange_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: SdaiWork_items _items ; // of work_item public: SdaiChange ( ); - SdaiChange (STEPentity *se ); + SdaiChange (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiChange (SdaiChange& e ); ~SdaiChange (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 164 ; } - const SdaiWork_itemsH Items() const; - void Items (SdaiWork_itemsH x); + const SdaiWork_items_ptr items_() const; + void items_ (const SdaiWork_items_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiChange_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiChange(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiChange () { return (SCLP23(Application_instance_ptr)) new SdaiChange ; } +#else inline SdaiChange * create_SdaiChange () { return new SdaiChange ; } +#endif -///////// END_ENTITY change +///////// END_ENTITY change -///////// ENTITY circle +///////// ENTITY circle extern AttrDescriptor *a_306radius; class SdaiCircle : public SdaiConic { - protected: - SdaiReal _radius ; + +#ifdef __OSTORE__ + friend void SdaiCircle_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Real) _radius ; public: SdaiCircle ( ); - SdaiCircle (STEPentity *se ); + SdaiCircle (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiCircle (SdaiCircle& e ); ~SdaiCircle (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 165 ; } - const SdaiPositive_length_measure Radius() const; - void Radius (SdaiPositive_length_measure x); + const SdaiPositive_length_measure radius_() const; + void radius_ (const SdaiPositive_length_measure x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiCircle_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiCircle(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiCircle () { return (SCLP23(Application_instance_ptr)) new SdaiCircle ; } +#else inline SdaiCircle * create_SdaiCircle () { return new SdaiCircle ; } +#endif -///////// END_ENTITY circle +///////// END_ENTITY circle -///////// ENTITY line +///////// ENTITY line extern AttrDescriptor *a_307pnt; extern AttrDescriptor *a_308dir; class SdaiLine : public SdaiCurve { - protected: - SdaiCartesian_pointH _pnt ; - SdaiVectorH _dir ; + +#ifdef __OSTORE__ + friend void SdaiLine_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _pnt ; + SCLP23(Application_instance_ptr) _dir ; public: SdaiLine ( ); - SdaiLine (STEPentity *se ); + SdaiLine (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiLine (SdaiLine& e ); ~SdaiLine (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 166 ; } - SdaiCartesian_pointH Pnt() const; - void Pnt (SdaiCartesian_pointH x); - SdaiVectorH Dir() const; - void Dir (SdaiVectorH x); + const SdaiCartesian_point_ptr pnt_() const; + void pnt_ (const SdaiCartesian_point_ptr x); + + const SdaiVector_ptr dir_() const; + void dir_ (const SdaiVector_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiLine_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiLine(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiLine () { return (SCLP23(Application_instance_ptr)) new SdaiLine ; } +#else inline SdaiLine * create_SdaiLine () { return new SdaiLine ; } +#endif -///////// END_ENTITY line +///////// END_ENTITY line -///////// ENTITY property_definition_representation +///////// ENTITY property_definition_representation extern AttrDescriptor *a_309definition; extern AttrDescriptor *a_310used_representation; -class SdaiProperty_definition_representation : public STEPentity { +class SdaiProperty_definition_representation : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiProperty_definition_representation_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiProperty_definitionH _definition ; - SdaiRepresentationH _used_representation ; + SCLP23(Application_instance_ptr) _definition ; + SCLP23(Application_instance_ptr) _used_representation ; public: SdaiProperty_definition_representation ( ); - SdaiProperty_definition_representation (STEPentity *se ); + SdaiProperty_definition_representation (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiProperty_definition_representation (SdaiProperty_definition_representation& e ); ~SdaiProperty_definition_representation (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 167 ; } - SdaiProperty_definitionH Definition() const; - void Definition (SdaiProperty_definitionH x); - SdaiRepresentationH Used_representation() const; - void Used_representation (SdaiRepresentationH x); + const SdaiProperty_definition_ptr definition_() const; + void definition_ (const SdaiProperty_definition_ptr x); + + const SdaiRepresentation_ptr used_representation_() const; + void used_representation_ (const SdaiRepresentation_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiProperty_definition_representation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiProperty_definition_representation(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiProperty_definition_representation () { return (SCLP23(Application_instance_ptr)) new SdaiProperty_definition_representation ; } +#else inline SdaiProperty_definition_representation * create_SdaiProperty_definition_representation () { return new SdaiProperty_definition_representation ; } +#endif -///////// END_ENTITY property_definition_representation +///////// END_ENTITY property_definition_representation -///////// ENTITY geometric_set +///////// ENTITY geometric_set extern AttrDescriptor *a_311elements; class SdaiGeometric_set : public SdaiGeometric_representation_item { - protected: + +#ifdef __OSTORE__ + friend void SdaiGeometric_set_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: SdaiGeometric_set_selects _elements ; // of geometric_set_select public: SdaiGeometric_set ( ); - SdaiGeometric_set (STEPentity *se ); + SdaiGeometric_set (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiGeometric_set (SdaiGeometric_set& e ); ~SdaiGeometric_set (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 168 ; } - const SdaiGeometric_set_selectsH Elements() const; - void Elements (SdaiGeometric_set_selectsH x); + const SdaiGeometric_set_selects_ptr elements_() const; + void elements_ (const SdaiGeometric_set_selects_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiGeometric_set_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiGeometric_set(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiGeometric_set () { return (SCLP23(Application_instance_ptr)) new SdaiGeometric_set ; } +#else inline SdaiGeometric_set * create_SdaiGeometric_set () { return new SdaiGeometric_set ; } +#endif -///////// END_ENTITY geometric_set +///////// END_ENTITY geometric_set -///////// ENTITY geometric_curve_set +///////// ENTITY geometric_curve_set class SdaiGeometric_curve_set : public SdaiGeometric_set { - protected: + +#ifdef __OSTORE__ + friend void SdaiGeometric_curve_set_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiGeometric_curve_set ( ); - SdaiGeometric_curve_set (STEPentity *se ); + SdaiGeometric_curve_set (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiGeometric_curve_set (SdaiGeometric_curve_set& e ); ~SdaiGeometric_curve_set (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 169 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiGeometric_curve_set_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiGeometric_curve_set(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiGeometric_curve_set () { return (SCLP23(Application_instance_ptr)) new SdaiGeometric_curve_set ; } +#else inline SdaiGeometric_curve_set * create_SdaiGeometric_curve_set () { return new SdaiGeometric_curve_set ; } +#endif -///////// END_ENTITY geometric_curve_set +///////// END_ENTITY geometric_curve_set -///////// ENTITY personal_address +///////// ENTITY personal_address extern AttrDescriptor *a_312people; extern AttrDescriptor *a_313description; class SdaiPersonal_address : public SdaiAddress { - protected: + +#ifdef __OSTORE__ + friend void SdaiPersonal_address_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: EntityAggregate _people ; // of person - SdaiString _description ; + SCLP23(String) _description ; public: SdaiPersonal_address ( ); - SdaiPersonal_address (STEPentity *se ); + SdaiPersonal_address (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiPersonal_address (SdaiPersonal_address& e ); ~SdaiPersonal_address (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 170 ; } - const EntityAggregateH People() const; - void People (EntityAggregateH x); - const SdaiText Description() const; - void Description (const char * x); + const EntityAggregate_ptr people_() const; + void people_ (const EntityAggregate_ptr x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiPersonal_address_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiPersonal_address(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiPersonal_address () { return (SCLP23(Application_instance_ptr)) new SdaiPersonal_address ; } +#else inline SdaiPersonal_address * create_SdaiPersonal_address () { return new SdaiPersonal_address ; } +#endif -///////// END_ENTITY personal_address +///////// END_ENTITY personal_address -///////// ENTITY document_relationship +///////// ENTITY document_relationship extern AttrDescriptor *a_314name; extern AttrDescriptor *a_315description; extern AttrDescriptor *a_316relating_document; extern AttrDescriptor *a_317related_document; -class SdaiDocument_relationship : public STEPentity { +class SdaiDocument_relationship : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiDocument_relationship_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _name ; - SdaiString _description ; - SdaiDocumentH _relating_document ; - SdaiDocumentH _related_document ; + SCLP23(String) _name ; + SCLP23(String) _description ; + SCLP23(Application_instance_ptr) _relating_document ; + SCLP23(Application_instance_ptr) _related_document ; public: SdaiDocument_relationship ( ); - SdaiDocument_relationship (STEPentity *se ); + SdaiDocument_relationship (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiDocument_relationship (SdaiDocument_relationship& e ); ~SdaiDocument_relationship (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 171 ; } - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiText Description() const; - void Description (const char * x); - SdaiDocumentH Relating_document() const; - void Relating_document (SdaiDocumentH x); - SdaiDocumentH Related_document() const; - void Related_document (SdaiDocumentH x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiDocument_ptr relating_document_() const; + void relating_document_ (const SdaiDocument_ptr x); + + const SdaiDocument_ptr related_document_() const; + void related_document_ (const SdaiDocument_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiDocument_relationship_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiDocument_relationship(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiDocument_relationship () { return (SCLP23(Application_instance_ptr)) new SdaiDocument_relationship ; } +#else inline SdaiDocument_relationship * create_SdaiDocument_relationship () { return new SdaiDocument_relationship ; } +#endif -///////// END_ENTITY document_relationship +///////// END_ENTITY document_relationship -///////// ENTITY pcurve +///////// ENTITY pcurve extern AttrDescriptor *a_318basis_surface; extern AttrDescriptor *a_319reference_to_curve; class SdaiPcurve : public SdaiCurve { - protected: - SdaiSurfaceH _basis_surface ; - SdaiDefinitional_representationH _reference_to_curve ; + +#ifdef __OSTORE__ + friend void SdaiPcurve_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _basis_surface ; + SCLP23(Application_instance_ptr) _reference_to_curve ; public: SdaiPcurve ( ); - SdaiPcurve (STEPentity *se ); + SdaiPcurve (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiPcurve (SdaiPcurve& e ); ~SdaiPcurve (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 172 ; } - SdaiSurfaceH Basis_surface() const; - void Basis_surface (SdaiSurfaceH x); - SdaiDefinitional_representationH Reference_to_curve() const; - void Reference_to_curve (SdaiDefinitional_representationH x); + const SdaiSurface_ptr basis_surface_() const; + void basis_surface_ (const SdaiSurface_ptr x); + + const SdaiDefinitional_representation_ptr reference_to_curve_() const; + void reference_to_curve_ (const SdaiDefinitional_representation_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiPcurve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiPcurve(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiPcurve () { return (SCLP23(Application_instance_ptr)) new SdaiPcurve ; } +#else inline SdaiPcurve * create_SdaiPcurve () { return new SdaiPcurve ; } +#endif -///////// END_ENTITY pcurve +///////// END_ENTITY pcurve -///////// ENTITY outer_boundary_curve +///////// ENTITY outer_boundary_curve class SdaiOuter_boundary_curve : public SdaiBoundary_curve { - protected: + +#ifdef __OSTORE__ + friend void SdaiOuter_boundary_curve_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiOuter_boundary_curve ( ); - SdaiOuter_boundary_curve (STEPentity *se ); + SdaiOuter_boundary_curve (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiOuter_boundary_curve (SdaiOuter_boundary_curve& e ); ~SdaiOuter_boundary_curve (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 173 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiOuter_boundary_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiOuter_boundary_curve(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiOuter_boundary_curve () { return (SCLP23(Application_instance_ptr)) new SdaiOuter_boundary_curve ; } +#else inline SdaiOuter_boundary_curve * create_SdaiOuter_boundary_curve () { return new SdaiOuter_boundary_curve ; } +#endif -///////// END_ENTITY outer_boundary_curve +///////// END_ENTITY outer_boundary_curve -///////// ENTITY shape_representation_relationship +///////// ENTITY shape_representation_relationship class SdaiShape_representation_relationship : public SdaiRepresentation_relationship { - protected: + +#ifdef __OSTORE__ + friend void SdaiShape_representation_relationship_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiShape_representation_relationship ( ); - SdaiShape_representation_relationship (STEPentity *se ); + SdaiShape_representation_relationship (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiShape_representation_relationship (SdaiShape_representation_relationship& e ); ~SdaiShape_representation_relationship (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 174 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiShape_representation_relationship_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiShape_representation_relationship(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiShape_representation_relationship () { return (SCLP23(Application_instance_ptr)) new SdaiShape_representation_relationship ; } +#else inline SdaiShape_representation_relationship * create_SdaiShape_representation_relationship () { return new SdaiShape_representation_relationship ; } +#endif -///////// END_ENTITY shape_representation_relationship +///////// END_ENTITY shape_representation_relationship -///////// ENTITY assembly_component_usage_substitute +///////// ENTITY assembly_component_usage_substitute extern AttrDescriptor *a_320name; extern AttrDescriptor *a_321description; extern AttrDescriptor *a_322base; extern AttrDescriptor *a_323substitute; -class SdaiAssembly_component_usage_substitute : public STEPentity { +class SdaiAssembly_component_usage_substitute : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiAssembly_component_usage_substitute_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _name ; - SdaiString _description ; - SdaiAssembly_component_usageH _base ; - SdaiAssembly_component_usageH _substitute ; + SCLP23(String) _name ; + SCLP23(String) _description ; + SCLP23(Application_instance_ptr) _base ; + SCLP23(Application_instance_ptr) _substitute ; public: SdaiAssembly_component_usage_substitute ( ); - SdaiAssembly_component_usage_substitute (STEPentity *se ); + SdaiAssembly_component_usage_substitute (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiAssembly_component_usage_substitute (SdaiAssembly_component_usage_substitute& e ); ~SdaiAssembly_component_usage_substitute (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 175 ; } - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiText Description() const; - void Description (const char * x); - SdaiAssembly_component_usageH Base() const; - void Base (SdaiAssembly_component_usageH x); - SdaiAssembly_component_usageH Substitute() const; - void Substitute (SdaiAssembly_component_usageH x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiAssembly_component_usage_ptr base_() const; + void base_ (const SdaiAssembly_component_usage_ptr x); + + const SdaiAssembly_component_usage_ptr substitute_() const; + void substitute_ (const SdaiAssembly_component_usage_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiAssembly_component_usage_substitute_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiAssembly_component_usage_substitute(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiAssembly_component_usage_substitute () { return (SCLP23(Application_instance_ptr)) new SdaiAssembly_component_usage_substitute ; } +#else inline SdaiAssembly_component_usage_substitute * create_SdaiAssembly_component_usage_substitute () { return new SdaiAssembly_component_usage_substitute ; } +#endif -///////// END_ENTITY assembly_component_usage_substitute +///////// END_ENTITY assembly_component_usage_substitute -///////// ENTITY degenerate_pcurve +///////// ENTITY degenerate_pcurve extern AttrDescriptor *a_324basis_surface; extern AttrDescriptor *a_325reference_to_curve; class SdaiDegenerate_pcurve : public SdaiPoint { - protected: - SdaiSurfaceH _basis_surface ; - SdaiDefinitional_representationH _reference_to_curve ; + +#ifdef __OSTORE__ + friend void SdaiDegenerate_pcurve_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _basis_surface ; + SCLP23(Application_instance_ptr) _reference_to_curve ; public: SdaiDegenerate_pcurve ( ); - SdaiDegenerate_pcurve (STEPentity *se ); + SdaiDegenerate_pcurve (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiDegenerate_pcurve (SdaiDegenerate_pcurve& e ); ~SdaiDegenerate_pcurve (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 176 ; } - SdaiSurfaceH Basis_surface() const; - void Basis_surface (SdaiSurfaceH x); - SdaiDefinitional_representationH Reference_to_curve() const; - void Reference_to_curve (SdaiDefinitional_representationH x); + const SdaiSurface_ptr basis_surface_() const; + void basis_surface_ (const SdaiSurface_ptr x); + + const SdaiDefinitional_representation_ptr reference_to_curve_() const; + void reference_to_curve_ (const SdaiDefinitional_representation_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiDegenerate_pcurve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiDegenerate_pcurve(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiDegenerate_pcurve () { return (SCLP23(Application_instance_ptr)) new SdaiDegenerate_pcurve ; } +#else inline SdaiDegenerate_pcurve * create_SdaiDegenerate_pcurve () { return new SdaiDegenerate_pcurve ; } +#endif -///////// END_ENTITY degenerate_pcurve +///////// END_ENTITY degenerate_pcurve -///////// ENTITY evaluated_degenerate_pcurve +///////// ENTITY evaluated_degenerate_pcurve extern AttrDescriptor *a_326equivalent_point; class SdaiEvaluated_degenerate_pcurve : public SdaiDegenerate_pcurve { - protected: - SdaiCartesian_pointH _equivalent_point ; + +#ifdef __OSTORE__ + friend void SdaiEvaluated_degenerate_pcurve_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _equivalent_point ; public: SdaiEvaluated_degenerate_pcurve ( ); - SdaiEvaluated_degenerate_pcurve (STEPentity *se ); + SdaiEvaluated_degenerate_pcurve (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiEvaluated_degenerate_pcurve (SdaiEvaluated_degenerate_pcurve& e ); ~SdaiEvaluated_degenerate_pcurve (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 177 ; } - SdaiCartesian_pointH Equivalent_point() const; - void Equivalent_point (SdaiCartesian_pointH x); + const SdaiCartesian_point_ptr equivalent_point_() const; + void equivalent_point_ (const SdaiCartesian_point_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiEvaluated_degenerate_pcurve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiEvaluated_degenerate_pcurve(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiEvaluated_degenerate_pcurve () { return (SCLP23(Application_instance_ptr)) new SdaiEvaluated_degenerate_pcurve ; } +#else inline SdaiEvaluated_degenerate_pcurve * create_SdaiEvaluated_degenerate_pcurve () { return new SdaiEvaluated_degenerate_pcurve ; } +#endif -///////// END_ENTITY evaluated_degenerate_pcurve +///////// END_ENTITY evaluated_degenerate_pcurve -///////// ENTITY solid_angle_measure_with_unit +///////// ENTITY solid_angle_measure_with_unit class SdaiSolid_angle_measure_with_unit : public SdaiMeasure_with_unit { - protected: + +#ifdef __OSTORE__ + friend void SdaiSolid_angle_measure_with_unit_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiSolid_angle_measure_with_unit ( ); - SdaiSolid_angle_measure_with_unit (STEPentity *se ); + SdaiSolid_angle_measure_with_unit (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiSolid_angle_measure_with_unit (SdaiSolid_angle_measure_with_unit& e ); ~SdaiSolid_angle_measure_with_unit (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 178 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiSolid_angle_measure_with_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiSolid_angle_measure_with_unit(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiSolid_angle_measure_with_unit () { return (SCLP23(Application_instance_ptr)) new SdaiSolid_angle_measure_with_unit ; } +#else inline SdaiSolid_angle_measure_with_unit * create_SdaiSolid_angle_measure_with_unit () { return new SdaiSolid_angle_measure_with_unit ; } +#endif -///////// END_ENTITY solid_angle_measure_with_unit +///////// END_ENTITY solid_angle_measure_with_unit -///////// ENTITY connected_edge_set +///////// ENTITY connected_edge_set extern AttrDescriptor *a_327ces_edges; class SdaiConnected_edge_set : public SdaiTopological_representation_item { - protected: + +#ifdef __OSTORE__ + friend void SdaiConnected_edge_set_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: EntityAggregate _ces_edges ; // of edge public: SdaiConnected_edge_set ( ); - SdaiConnected_edge_set (STEPentity *se ); + SdaiConnected_edge_set (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiConnected_edge_set (SdaiConnected_edge_set& e ); ~SdaiConnected_edge_set (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 179 ; } - const EntityAggregateH Ces_edges() const; - void Ces_edges (EntityAggregateH x); + const EntityAggregate_ptr ces_edges_() const; + void ces_edges_ (const EntityAggregate_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiConnected_edge_set_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiConnected_edge_set(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiConnected_edge_set () { return (SCLP23(Application_instance_ptr)) new SdaiConnected_edge_set ; } +#else inline SdaiConnected_edge_set * create_SdaiConnected_edge_set () { return new SdaiConnected_edge_set ; } +#endif -///////// END_ENTITY connected_edge_set +///////// END_ENTITY connected_edge_set -///////// ENTITY action +///////// ENTITY action extern AttrDescriptor *a_328name; extern AttrDescriptor *a_329description; extern AttrDescriptor *a_330chosen_method; -class SdaiAction : public STEPentity { +class SdaiAction : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiAction_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _name ; - SdaiString _description ; - SdaiAction_methodH _chosen_method ; + SCLP23(String) _name ; + SCLP23(String) _description ; + SCLP23(Application_instance_ptr) _chosen_method ; public: SdaiAction ( ); - SdaiAction (STEPentity *se ); + SdaiAction (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiAction (SdaiAction& e ); ~SdaiAction (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 180 ; } - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiText Description() const; - void Description (const char * x); - SdaiAction_methodH Chosen_method() const; - void Chosen_method (SdaiAction_methodH x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiAction_method_ptr chosen_method_() const; + void chosen_method_ (const SdaiAction_method_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiAction_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiAction(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiAction () { return (SCLP23(Application_instance_ptr)) new SdaiAction ; } +#else inline SdaiAction * create_SdaiAction () { return new SdaiAction ; } +#endif -///////// END_ENTITY action +///////// END_ENTITY action -///////// ENTITY executed_action +///////// ENTITY executed_action class SdaiExecuted_action : public SdaiAction { - protected: + +#ifdef __OSTORE__ + friend void SdaiExecuted_action_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiExecuted_action ( ); - SdaiExecuted_action (STEPentity *se ); + SdaiExecuted_action (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiExecuted_action (SdaiExecuted_action& e ); ~SdaiExecuted_action (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 181 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiExecuted_action_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiExecuted_action(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiExecuted_action () { return (SCLP23(Application_instance_ptr)) new SdaiExecuted_action ; } +#else inline SdaiExecuted_action * create_SdaiExecuted_action () { return new SdaiExecuted_action ; } +#endif -///////// END_ENTITY executed_action +///////// END_ENTITY executed_action -///////// ENTITY directed_action +///////// ENTITY directed_action extern AttrDescriptor *a_331directive; class SdaiDirected_action : public SdaiExecuted_action { - protected: - SdaiAction_directiveH _directive ; + +#ifdef __OSTORE__ + friend void SdaiDirected_action_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _directive ; public: SdaiDirected_action ( ); - SdaiDirected_action (STEPentity *se ); + SdaiDirected_action (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiDirected_action (SdaiDirected_action& e ); ~SdaiDirected_action (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 182 ; } - SdaiAction_directiveH Directive() const; - void Directive (SdaiAction_directiveH x); + const SdaiAction_directive_ptr directive_() const; + void directive_ (const SdaiAction_directive_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiDirected_action_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiDirected_action(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiDirected_action () { return (SCLP23(Application_instance_ptr)) new SdaiDirected_action ; } +#else inline SdaiDirected_action * create_SdaiDirected_action () { return new SdaiDirected_action ; } +#endif -///////// END_ENTITY directed_action +///////// END_ENTITY directed_action -///////// ENTITY organizational_project +///////// ENTITY organizational_project extern AttrDescriptor *a_332name; extern AttrDescriptor *a_333description; extern AttrDescriptor *a_334responsible_organizations; -class SdaiOrganizational_project : public STEPentity { +class SdaiOrganizational_project : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiOrganizational_project_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _name ; - SdaiString _description ; + SCLP23(String) _name ; + SCLP23(String) _description ; EntityAggregate _responsible_organizations ; // of organization public: SdaiOrganizational_project ( ); - SdaiOrganizational_project (STEPentity *se ); + SdaiOrganizational_project (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiOrganizational_project (SdaiOrganizational_project& e ); ~SdaiOrganizational_project (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 183 ; } - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiText Description() const; - void Description (const char * x); - const EntityAggregateH Responsible_organizations() const; - void Responsible_organizations (EntityAggregateH x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const EntityAggregate_ptr responsible_organizations_() const; + void responsible_organizations_ (const EntityAggregate_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiOrganizational_project_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiOrganizational_project(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiOrganizational_project () { return (SCLP23(Application_instance_ptr)) new SdaiOrganizational_project ; } +#else inline SdaiOrganizational_project * create_SdaiOrganizational_project () { return new SdaiOrganizational_project ; } +#endif -///////// END_ENTITY organizational_project +///////// END_ENTITY organizational_project -///////// ENTITY date_time_role +///////// ENTITY date_time_role extern AttrDescriptor *a_335name; -class SdaiDate_time_role : public STEPentity { +class SdaiDate_time_role : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiDate_time_role_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _name ; + SCLP23(String) _name ; public: SdaiDate_time_role ( ); - SdaiDate_time_role (STEPentity *se ); + SdaiDate_time_role (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiDate_time_role (SdaiDate_time_role& e ); ~SdaiDate_time_role (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 184 ; } - const SdaiLabel Name() const; - void Name (const char * x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiDate_time_role_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiDate_time_role(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiDate_time_role () { return (SCLP23(Application_instance_ptr)) new SdaiDate_time_role ; } +#else inline SdaiDate_time_role * create_SdaiDate_time_role () { return new SdaiDate_time_role ; } +#endif -///////// END_ENTITY date_time_role +///////// END_ENTITY date_time_role -///////// ENTITY curve_bounded_surface +///////// ENTITY curve_bounded_surface extern AttrDescriptor *a_336basis_surface; extern AttrDescriptor *a_337boundaries; extern AttrDescriptor *a_338implicit_outer; class SdaiCurve_bounded_surface : public SdaiBounded_surface { - protected: - SdaiSurfaceH _basis_surface ; + +#ifdef __OSTORE__ + friend void SdaiCurve_bounded_surface_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _basis_surface ; EntityAggregate _boundaries ; // of boundary_curve - SdaiBoolean _implicit_outer ; + SCLP23(BOOL) _implicit_outer ; public: SdaiCurve_bounded_surface ( ); - SdaiCurve_bounded_surface (STEPentity *se ); + SdaiCurve_bounded_surface (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiCurve_bounded_surface (SdaiCurve_bounded_surface& e ); ~SdaiCurve_bounded_surface (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 185 ; } - SdaiSurfaceH Basis_surface() const; - void Basis_surface (SdaiSurfaceH x); - const EntityAggregateH Boundaries() const; - void Boundaries (EntityAggregateH x); - const BOOLEAN Implicit_outer() const; - void Implicit_outer (BOOLEAN x); + const SdaiSurface_ptr basis_surface_() const; + void basis_surface_ (const SdaiSurface_ptr x); + + const EntityAggregate_ptr boundaries_() const; + void boundaries_ (const EntityAggregate_ptr x); + + const SCLBOOL(Bool) implicit_outer_() const; + void implicit_outer_ (const SCLBOOL(Bool) x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiCurve_bounded_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiCurve_bounded_surface(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiCurve_bounded_surface () { return (SCLP23(Application_instance_ptr)) new SdaiCurve_bounded_surface ; } +#else inline SdaiCurve_bounded_surface * create_SdaiCurve_bounded_surface () { return new SdaiCurve_bounded_surface ; } +#endif -///////// END_ENTITY curve_bounded_surface +///////// END_ENTITY curve_bounded_surface -///////// ENTITY closed_shell +///////// ENTITY closed_shell class SdaiClosed_shell : public SdaiConnected_face_set { - protected: + +#ifdef __OSTORE__ + friend void SdaiClosed_shell_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiClosed_shell ( ); - SdaiClosed_shell (STEPentity *se ); + SdaiClosed_shell (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiClosed_shell (SdaiClosed_shell& e ); ~SdaiClosed_shell (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 186 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiClosed_shell_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiClosed_shell(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiClosed_shell () { return (SCLP23(Application_instance_ptr)) new SdaiClosed_shell ; } +#else inline SdaiClosed_shell * create_SdaiClosed_shell () { return new SdaiClosed_shell ; } +#endif -///////// END_ENTITY closed_shell +///////// END_ENTITY closed_shell -///////// ENTITY design_make_from_relationship +///////// ENTITY design_make_from_relationship class SdaiDesign_make_from_relationship : public SdaiProduct_definition_relationship { - protected: + +#ifdef __OSTORE__ + friend void SdaiDesign_make_from_relationship_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiDesign_make_from_relationship ( ); - SdaiDesign_make_from_relationship (STEPentity *se ); + SdaiDesign_make_from_relationship (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiDesign_make_from_relationship (SdaiDesign_make_from_relationship& e ); ~SdaiDesign_make_from_relationship (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 187 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiDesign_make_from_relationship_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiDesign_make_from_relationship(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiDesign_make_from_relationship () { return (SCLP23(Application_instance_ptr)) new SdaiDesign_make_from_relationship ; } +#else inline SdaiDesign_make_from_relationship * create_SdaiDesign_make_from_relationship () { return new SdaiDesign_make_from_relationship ; } +#endif -///////// END_ENTITY design_make_from_relationship +///////// END_ENTITY design_make_from_relationship -///////// ENTITY definitional_representation +///////// ENTITY definitional_representation class SdaiDefinitional_representation : public SdaiRepresentation { - protected: + +#ifdef __OSTORE__ + friend void SdaiDefinitional_representation_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiDefinitional_representation ( ); - SdaiDefinitional_representation (STEPentity *se ); + SdaiDefinitional_representation (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiDefinitional_representation (SdaiDefinitional_representation& e ); ~SdaiDefinitional_representation (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 188 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiDefinitional_representation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiDefinitional_representation(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiDefinitional_representation () { return (SCLP23(Application_instance_ptr)) new SdaiDefinitional_representation ; } +#else inline SdaiDefinitional_representation * create_SdaiDefinitional_representation () { return new SdaiDefinitional_representation ; } +#endif -///////// END_ENTITY definitional_representation +///////// END_ENTITY definitional_representation -///////// ENTITY product_definition_shape +///////// ENTITY product_definition_shape class SdaiProduct_definition_shape : public SdaiProperty_definition { - protected: + +#ifdef __OSTORE__ + friend void SdaiProduct_definition_shape_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiProduct_definition_shape ( ); - SdaiProduct_definition_shape (STEPentity *se ); + SdaiProduct_definition_shape (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiProduct_definition_shape (SdaiProduct_definition_shape& e ); ~SdaiProduct_definition_shape (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 189 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiProduct_definition_shape_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiProduct_definition_shape(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiProduct_definition_shape () { return (SCLP23(Application_instance_ptr)) new SdaiProduct_definition_shape ; } +#else inline SdaiProduct_definition_shape * create_SdaiProduct_definition_shape () { return new SdaiProduct_definition_shape ; } +#endif -///////// END_ENTITY product_definition_shape +///////// END_ENTITY product_definition_shape -///////// ENTITY si_unit +///////// ENTITY si_unit extern AttrDescriptor *a_339prefix; extern AttrDescriptor *a_340name; -extern AttrDescriptor *a_341Dnamed_unit_dimensions; +extern Derived_attribute *a_341Dnamed_unit_dimensions; class SdaiSi_unit : public SdaiNamed_unit { - protected: - SdaiSi_prefix _prefix ; // OPTIONAL - SdaiSi_unit_name _name ; + +#ifdef __OSTORE__ + friend void SdaiSi_unit_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SdaiSi_prefix_var _prefix ; // OPTIONAL + SdaiSi_unit_name_var _name ; public: SdaiSi_unit ( ); - SdaiSi_unit (STEPentity *se ); + SdaiSi_unit (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiSi_unit (SdaiSi_unit& e ); ~SdaiSi_unit (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 190 ; } - const sdaiSi_prefix Prefix() const; - void Prefix (sdaiSi_prefix x); - const sdaiSi_unit_name Name() const; - void Name (sdaiSi_unit_name x); + const SdaiSi_prefix_var prefix_() const; + void prefix_ (const SdaiSi_prefix_var x); + + const SdaiSi_unit_name_var name_() const; + void name_ (const SdaiSi_unit_name_var x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiSi_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiSi_unit(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiSi_unit () { return (SCLP23(Application_instance_ptr)) new SdaiSi_unit ; } +#else inline SdaiSi_unit * create_SdaiSi_unit () { return new SdaiSi_unit ; } +#endif -///////// END_ENTITY si_unit +///////// END_ENTITY si_unit -///////// ENTITY bezier_surface +///////// ENTITY bezier_surface class SdaiBezier_surface : public SdaiB_spline_surface { - protected: + +#ifdef __OSTORE__ + friend void SdaiBezier_surface_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiBezier_surface ( ); - SdaiBezier_surface (STEPentity *se ); + SdaiBezier_surface (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiBezier_surface (SdaiBezier_surface& e ); ~SdaiBezier_surface (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 191 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiBezier_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiBezier_surface(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiBezier_surface () { return (SCLP23(Application_instance_ptr)) new SdaiBezier_surface ; } +#else inline SdaiBezier_surface * create_SdaiBezier_surface () { return new SdaiBezier_surface ; } +#endif -///////// END_ENTITY bezier_surface +///////// END_ENTITY bezier_surface -///////// ENTITY certification_assignment +///////// ENTITY certification_assignment extern AttrDescriptor *a_342assigned_certification; -class SdaiCertification_assignment : public STEPentity { +class SdaiCertification_assignment : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiCertification_assignment_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiCertificationH _assigned_certification ; + SCLP23(Application_instance_ptr) _assigned_certification ; public: SdaiCertification_assignment ( ); - SdaiCertification_assignment (STEPentity *se ); + SdaiCertification_assignment (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiCertification_assignment (SdaiCertification_assignment& e ); ~SdaiCertification_assignment (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 192 ; } - SdaiCertificationH Assigned_certification() const; - void Assigned_certification (SdaiCertificationH x); + const SdaiCertification_ptr assigned_certification_() const; + void assigned_certification_ (const SdaiCertification_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiCertification_assignment_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiCertification_assignment(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiCertification_assignment () { return (SCLP23(Application_instance_ptr)) new SdaiCertification_assignment ; } +#else inline SdaiCertification_assignment * create_SdaiCertification_assignment () { return new SdaiCertification_assignment ; } +#endif -///////// END_ENTITY certification_assignment +///////// END_ENTITY certification_assignment -///////// ENTITY start_work +///////// ENTITY start_work extern AttrDescriptor *a_343items; class SdaiStart_work : public SdaiAction_assignment { - protected: + +#ifdef __OSTORE__ + friend void SdaiStart_work_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: SdaiWork_items _items ; // of work_item public: SdaiStart_work ( ); - SdaiStart_work (STEPentity *se ); + SdaiStart_work (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiStart_work (SdaiStart_work& e ); ~SdaiStart_work (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 193 ; } - const SdaiWork_itemsH Items() const; - void Items (SdaiWork_itemsH x); + const SdaiWork_items_ptr items_() const; + void items_ (const SdaiWork_items_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiStart_work_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiStart_work(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiStart_work () { return (SCLP23(Application_instance_ptr)) new SdaiStart_work ; } +#else inline SdaiStart_work * create_SdaiStart_work () { return new SdaiStart_work ; } +#endif -///////// END_ENTITY start_work +///////// END_ENTITY start_work -///////// ENTITY contract_type +///////// ENTITY contract_type extern AttrDescriptor *a_344description; -class SdaiContract_type : public STEPentity { +class SdaiContract_type : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiContract_type_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _description ; + SCLP23(String) _description ; public: SdaiContract_type ( ); - SdaiContract_type (STEPentity *se ); + SdaiContract_type (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiContract_type (SdaiContract_type& e ); ~SdaiContract_type (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 194 ; } - const SdaiLabel Description() const; - void Description (const char * x); + const SdaiLabel description_() const; + void description_ (const SdaiLabel x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiContract_type_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiContract_type(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiContract_type () { return (SCLP23(Application_instance_ptr)) new SdaiContract_type ; } +#else inline SdaiContract_type * create_SdaiContract_type () { return new SdaiContract_type ; } +#endif -///////// END_ENTITY contract_type +///////// END_ENTITY contract_type -///////// ENTITY b_spline_curve_with_knots +///////// ENTITY b_spline_curve_with_knots extern AttrDescriptor *a_345knot_multiplicities; extern AttrDescriptor *a_346knots; extern AttrDescriptor *a_347knot_spec; -extern AttrDescriptor *a_348Dupper_index_on_knots; +extern Derived_attribute *a_348Dupper_index_on_knots; class SdaiB_spline_curve_with_knots : public SdaiB_spline_curve { - protected: + +#ifdef __OSTORE__ + friend void SdaiB_spline_curve_with_knots_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: IntAggregate _knot_multiplicities ; RealAggregate _knots ; // of parameter_value - SdaiKnot_type _knot_spec ; + SdaiKnot_type_var _knot_spec ; public: SdaiB_spline_curve_with_knots ( ); - SdaiB_spline_curve_with_knots (STEPentity *se ); + SdaiB_spline_curve_with_knots (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiB_spline_curve_with_knots (SdaiB_spline_curve_with_knots& e ); ~SdaiB_spline_curve_with_knots (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 195 ; } - const IntAggregateH Knot_multiplicities() const; - void Knot_multiplicities (IntAggregateH x); - const RealAggregateH Knots() const; - void Knots (RealAggregateH x); - const sdaiKnot_type Knot_spec() const; - void Knot_spec (sdaiKnot_type x); + const IntAggregate_ptr knot_multiplicities_() const; + void knot_multiplicities_ (const IntAggregate_ptr x); + + const RealAggregate_ptr knots_() const; + void knots_ (const RealAggregate_ptr x); + + const SdaiKnot_type_var knot_spec_() const; + void knot_spec_ (const SdaiKnot_type_var x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiB_spline_curve_with_knots_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiB_spline_curve_with_knots(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiB_spline_curve_with_knots () { return (SCLP23(Application_instance_ptr)) new SdaiB_spline_curve_with_knots ; } +#else inline SdaiB_spline_curve_with_knots * create_SdaiB_spline_curve_with_knots () { return new SdaiB_spline_curve_with_knots ; } +#endif -///////// END_ENTITY b_spline_curve_with_knots +///////// END_ENTITY b_spline_curve_with_knots -///////// ENTITY cc_design_approval +///////// ENTITY cc_design_approval extern AttrDescriptor *a_349items; class SdaiCc_design_approval : public SdaiApproval_assignment { - protected: + +#ifdef __OSTORE__ + friend void SdaiCc_design_approval_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: SdaiApproved_items _items ; // of approved_item public: SdaiCc_design_approval ( ); - SdaiCc_design_approval (STEPentity *se ); + SdaiCc_design_approval (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiCc_design_approval (SdaiCc_design_approval& e ); ~SdaiCc_design_approval (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 196 ; } - const SdaiApproved_itemsH Items() const; - void Items (SdaiApproved_itemsH x); + const SdaiApproved_items_ptr items_() const; + void items_ (const SdaiApproved_items_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiCc_design_approval_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiCc_design_approval(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiCc_design_approval () { return (SCLP23(Application_instance_ptr)) new SdaiCc_design_approval ; } +#else inline SdaiCc_design_approval * create_SdaiCc_design_approval () { return new SdaiCc_design_approval ; } +#endif -///////// END_ENTITY cc_design_approval +///////// END_ENTITY cc_design_approval -///////// ENTITY edge_based_wireframe_shape_representation +///////// ENTITY edge_based_wireframe_shape_representation class SdaiEdge_based_wireframe_shape_representation : public SdaiShape_representation { - protected: + +#ifdef __OSTORE__ + friend void SdaiEdge_based_wireframe_shape_representation_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiEdge_based_wireframe_shape_representation ( ); - SdaiEdge_based_wireframe_shape_representation (STEPentity *se ); + SdaiEdge_based_wireframe_shape_representation (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiEdge_based_wireframe_shape_representation (SdaiEdge_based_wireframe_shape_representation& e ); ~SdaiEdge_based_wireframe_shape_representation (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 197 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiEdge_based_wireframe_shape_representation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiEdge_based_wireframe_shape_representation(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiEdge_based_wireframe_shape_representation () { return (SCLP23(Application_instance_ptr)) new SdaiEdge_based_wireframe_shape_representation ; } +#else inline SdaiEdge_based_wireframe_shape_representation * create_SdaiEdge_based_wireframe_shape_representation () { return new SdaiEdge_based_wireframe_shape_representation ; } +#endif -///////// END_ENTITY edge_based_wireframe_shape_representation +///////// END_ENTITY edge_based_wireframe_shape_representation -///////// ENTITY geometrically_bounded_wireframe_shape_representation +///////// ENTITY geometrically_bounded_wireframe_shape_representation class SdaiGeometrically_bounded_wireframe_shape_representation : public SdaiShape_representation { - protected: + +#ifdef __OSTORE__ + friend void SdaiGeometrically_bounded_wireframe_shape_representation_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiGeometrically_bounded_wireframe_shape_representation ( ); - SdaiGeometrically_bounded_wireframe_shape_representation (STEPentity *se ); + SdaiGeometrically_bounded_wireframe_shape_representation (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiGeometrically_bounded_wireframe_shape_representation (SdaiGeometrically_bounded_wireframe_shape_representation& e ); ~SdaiGeometrically_bounded_wireframe_shape_representation (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 198 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiGeometrically_bounded_wireframe_shape_representation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiGeometrically_bounded_wireframe_shape_representation(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiGeometrically_bounded_wireframe_shape_representation () { return (SCLP23(Application_instance_ptr)) new SdaiGeometrically_bounded_wireframe_shape_representation ; } +#else inline SdaiGeometrically_bounded_wireframe_shape_representation * create_SdaiGeometrically_bounded_wireframe_shape_representation () { return new SdaiGeometrically_bounded_wireframe_shape_representation ; } +#endif -///////// END_ENTITY geometrically_bounded_wireframe_shape_representation +///////// END_ENTITY geometrically_bounded_wireframe_shape_representation -///////// ENTITY product_concept +///////// ENTITY product_concept extern AttrDescriptor *a_350id; extern AttrDescriptor *a_351name; extern AttrDescriptor *a_352description; extern AttrDescriptor *a_353market_context; -class SdaiProduct_concept : public STEPentity { +class SdaiProduct_concept : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiProduct_concept_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _id ; - SdaiString _name ; - SdaiString _description ; - SdaiProduct_concept_contextH _market_context ; + SCLP23(String) _id ; + SCLP23(String) _name ; + SCLP23(String) _description ; + SCLP23(Application_instance_ptr) _market_context ; public: SdaiProduct_concept ( ); - SdaiProduct_concept (STEPentity *se ); + SdaiProduct_concept (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiProduct_concept (SdaiProduct_concept& e ); ~SdaiProduct_concept (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 199 ; } - const SdaiIdentifier Id() const; - void Id (const char * x); - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiText Description() const; - void Description (const char * x); - SdaiProduct_concept_contextH Market_context() const; - void Market_context (SdaiProduct_concept_contextH x); + const SdaiIdentifier id_() const; + void id_ (const SdaiIdentifier x); + + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiProduct_concept_context_ptr market_context_() const; + void market_context_ (const SdaiProduct_concept_context_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiProduct_concept_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiProduct_concept(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiProduct_concept () { return (SCLP23(Application_instance_ptr)) new SdaiProduct_concept ; } +#else inline SdaiProduct_concept * create_SdaiProduct_concept () { return new SdaiProduct_concept ; } +#endif -///////// END_ENTITY product_concept +///////// END_ENTITY product_concept -///////// ENTITY cc_design_contract +///////// ENTITY cc_design_contract extern AttrDescriptor *a_354items; class SdaiCc_design_contract : public SdaiContract_assignment { - protected: + +#ifdef __OSTORE__ + friend void SdaiCc_design_contract_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: SdaiContracted_items _items ; // of contracted_item public: SdaiCc_design_contract ( ); - SdaiCc_design_contract (STEPentity *se ); + SdaiCc_design_contract (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiCc_design_contract (SdaiCc_design_contract& e ); ~SdaiCc_design_contract (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 200 ; } - const SdaiContracted_itemsH Items() const; - void Items (SdaiContracted_itemsH x); + const SdaiContracted_items_ptr items_() const; + void items_ (const SdaiContracted_items_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiCc_design_contract_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiCc_design_contract(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiCc_design_contract () { return (SCLP23(Application_instance_ptr)) new SdaiCc_design_contract ; } +#else inline SdaiCc_design_contract * create_SdaiCc_design_contract () { return new SdaiCc_design_contract ; } +#endif -///////// END_ENTITY cc_design_contract +///////// END_ENTITY cc_design_contract -///////// ENTITY seam_curve +///////// ENTITY seam_curve class SdaiSeam_curve : public SdaiSurface_curve { - protected: + +#ifdef __OSTORE__ + friend void SdaiSeam_curve_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiSeam_curve ( ); - SdaiSeam_curve (STEPentity *se ); + SdaiSeam_curve (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiSeam_curve (SdaiSeam_curve& e ); ~SdaiSeam_curve (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 201 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiSeam_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiSeam_curve(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiSeam_curve () { return (SCLP23(Application_instance_ptr)) new SdaiSeam_curve ; } +#else inline SdaiSeam_curve * create_SdaiSeam_curve () { return new SdaiSeam_curve ; } +#endif -///////// END_ENTITY seam_curve +///////// END_ENTITY seam_curve -///////// ENTITY axis2_placement_3d +///////// ENTITY axis2_placement_3d extern AttrDescriptor *a_355axis; extern AttrDescriptor *a_356ref_direction; -extern AttrDescriptor *a_357Dp; +extern Derived_attribute *a_357Dp; class SdaiAxis2_placement_3d : public SdaiPlacement { - protected: - SdaiDirectionH _axis ; // OPTIONAL - SdaiDirectionH _ref_direction ; // OPTIONAL + +#ifdef __OSTORE__ + friend void SdaiAxis2_placement_3d_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _axis ; // OPTIONAL + SCLP23(Application_instance_ptr) _ref_direction ; // OPTIONAL public: SdaiAxis2_placement_3d ( ); - SdaiAxis2_placement_3d (STEPentity *se ); + SdaiAxis2_placement_3d (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiAxis2_placement_3d (SdaiAxis2_placement_3d& e ); ~SdaiAxis2_placement_3d (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 202 ; } - SdaiDirectionH Axis() const; - void Axis (SdaiDirectionH x); - SdaiDirectionH Ref_direction() const; - void Ref_direction (SdaiDirectionH x); + const SdaiDirection_ptr axis_() const; + void axis_ (const SdaiDirection_ptr x); + + const SdaiDirection_ptr ref_direction_() const; + void ref_direction_ (const SdaiDirection_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiAxis2_placement_3d_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiAxis2_placement_3d(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiAxis2_placement_3d () { return (SCLP23(Application_instance_ptr)) new SdaiAxis2_placement_3d ; } +#else inline SdaiAxis2_placement_3d * create_SdaiAxis2_placement_3d () { return new SdaiAxis2_placement_3d ; } +#endif -///////// END_ENTITY axis2_placement_3d +///////// END_ENTITY axis2_placement_3d -///////// ENTITY rational_b_spline_surface +///////// ENTITY rational_b_spline_surface extern AttrDescriptor *a_358weights_data; -extern AttrDescriptor *a_359Dweights; +extern Derived_attribute *a_359Dweights; class SdaiRational_b_spline_surface : public SdaiB_spline_surface { - protected: + +#ifdef __OSTORE__ + friend void SdaiRational_b_spline_surface_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: GenericAggregate _weights_data ; public: SdaiRational_b_spline_surface ( ); - SdaiRational_b_spline_surface (STEPentity *se ); + SdaiRational_b_spline_surface (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiRational_b_spline_surface (SdaiRational_b_spline_surface& e ); ~SdaiRational_b_spline_surface (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 203 ; } - const GenericAggregateH Weights_data() const; - void Weights_data (GenericAggregateH x); + const GenericAggregate_ptr weights_data_() const; + void weights_data_ (const GenericAggregate_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiRational_b_spline_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiRational_b_spline_surface(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiRational_b_spline_surface () { return (SCLP23(Application_instance_ptr)) new SdaiRational_b_spline_surface ; } +#else inline SdaiRational_b_spline_surface * create_SdaiRational_b_spline_surface () { return new SdaiRational_b_spline_surface ; } +#endif -///////// END_ENTITY rational_b_spline_surface +///////// END_ENTITY rational_b_spline_surface -///////// ENTITY configuration_design +///////// ENTITY configuration_design extern AttrDescriptor *a_360configuration; extern AttrDescriptor *a_361design; -class SdaiConfiguration_design : public STEPentity { +class SdaiConfiguration_design : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiConfiguration_design_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiConfiguration_itemH _configuration ; - SdaiProduct_definition_formationH _design ; + SCLP23(Application_instance_ptr) _configuration ; + SCLP23(Application_instance_ptr) _design ; public: SdaiConfiguration_design ( ); - SdaiConfiguration_design (STEPentity *se ); + SdaiConfiguration_design (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiConfiguration_design (SdaiConfiguration_design& e ); ~SdaiConfiguration_design (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 204 ; } - SdaiConfiguration_itemH Configuration() const; - void Configuration (SdaiConfiguration_itemH x); - SdaiProduct_definition_formationH Design() const; - void Design (SdaiProduct_definition_formationH x); + const SdaiConfiguration_item_ptr configuration_() const; + void configuration_ (const SdaiConfiguration_item_ptr x); + + const SdaiProduct_definition_formation_ptr design_() const; + void design_ (const SdaiProduct_definition_formation_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiConfiguration_design_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiConfiguration_design(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiConfiguration_design () { return (SCLP23(Application_instance_ptr)) new SdaiConfiguration_design ; } +#else inline SdaiConfiguration_design * create_SdaiConfiguration_design () { return new SdaiConfiguration_design ; } +#endif -///////// END_ENTITY configuration_design +///////// END_ENTITY configuration_design -///////// ENTITY design_context +///////// ENTITY design_context class SdaiDesign_context : public SdaiProduct_definition_context { - protected: + +#ifdef __OSTORE__ + friend void SdaiDesign_context_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiDesign_context ( ); - SdaiDesign_context (STEPentity *se ); + SdaiDesign_context (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiDesign_context (SdaiDesign_context& e ); ~SdaiDesign_context (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 205 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiDesign_context_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiDesign_context(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiDesign_context () { return (SCLP23(Application_instance_ptr)) new SdaiDesign_context ; } +#else inline SdaiDesign_context * create_SdaiDesign_context () { return new SdaiDesign_context ; } +#endif -///////// END_ENTITY design_context +///////// END_ENTITY design_context -///////// ENTITY product_definition +///////// ENTITY product_definition extern AttrDescriptor *a_362id; extern AttrDescriptor *a_363description; extern AttrDescriptor *a_364formation; extern AttrDescriptor *a_365frame_of_reference; -class SdaiProduct_definition : public STEPentity { +class SdaiProduct_definition : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiProduct_definition_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _id ; - SdaiString _description ; - SdaiProduct_definition_formationH _formation ; - SdaiProduct_definition_contextH _frame_of_reference ; + SCLP23(String) _id ; + SCLP23(String) _description ; + SCLP23(Application_instance_ptr) _formation ; + SCLP23(Application_instance_ptr) _frame_of_reference ; public: SdaiProduct_definition ( ); - SdaiProduct_definition (STEPentity *se ); + SdaiProduct_definition (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiProduct_definition (SdaiProduct_definition& e ); ~SdaiProduct_definition (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 206 ; } - const SdaiIdentifier Id() const; - void Id (const char * x); - const SdaiText Description() const; - void Description (const char * x); - SdaiProduct_definition_formationH Formation() const; - void Formation (SdaiProduct_definition_formationH x); - SdaiProduct_definition_contextH Frame_of_reference() const; - void Frame_of_reference (SdaiProduct_definition_contextH x); + const SdaiIdentifier id_() const; + void id_ (const SdaiIdentifier x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiProduct_definition_formation_ptr formation_() const; + void formation_ (const SdaiProduct_definition_formation_ptr x); + + const SdaiProduct_definition_context_ptr frame_of_reference_() const; + void frame_of_reference_ (const SdaiProduct_definition_context_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiProduct_definition_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiProduct_definition(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiProduct_definition () { return (SCLP23(Application_instance_ptr)) new SdaiProduct_definition ; } +#else inline SdaiProduct_definition * create_SdaiProduct_definition () { return new SdaiProduct_definition ; } +#endif -///////// END_ENTITY product_definition +///////// END_ENTITY product_definition -///////// ENTITY product_definition_with_associated_documents +///////// ENTITY product_definition_with_associated_documents extern AttrDescriptor *a_366documentation_ids; class SdaiProduct_definition_with_associated_documents : public SdaiProduct_definition { - protected: + +#ifdef __OSTORE__ + friend void SdaiProduct_definition_with_associated_documents_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: EntityAggregate _documentation_ids ; // of document public: SdaiProduct_definition_with_associated_documents ( ); - SdaiProduct_definition_with_associated_documents (STEPentity *se ); + SdaiProduct_definition_with_associated_documents (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiProduct_definition_with_associated_documents (SdaiProduct_definition_with_associated_documents& e ); ~SdaiProduct_definition_with_associated_documents (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 207 ; } - const EntityAggregateH Documentation_ids() const; - void Documentation_ids (EntityAggregateH x); + const EntityAggregate_ptr documentation_ids_() const; + void documentation_ids_ (const EntityAggregate_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiProduct_definition_with_associated_documents_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiProduct_definition_with_associated_documents(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiProduct_definition_with_associated_documents () { return (SCLP23(Application_instance_ptr)) new SdaiProduct_definition_with_associated_documents ; } +#else inline SdaiProduct_definition_with_associated_documents * create_SdaiProduct_definition_with_associated_documents () { return new SdaiProduct_definition_with_associated_documents ; } +#endif -///////// END_ENTITY product_definition_with_associated_documents +///////// END_ENTITY product_definition_with_associated_documents -///////// ENTITY organization +///////// ENTITY organization extern AttrDescriptor *a_367id; extern AttrDescriptor *a_368name; extern AttrDescriptor *a_369description; -class SdaiOrganization : public STEPentity { +class SdaiOrganization : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiOrganization_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _id ; // OPTIONAL - SdaiString _name ; - SdaiString _description ; + SCLP23(String) _id ; // OPTIONAL + SCLP23(String) _name ; + SCLP23(String) _description ; public: SdaiOrganization ( ); - SdaiOrganization (STEPentity *se ); + SdaiOrganization (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiOrganization (SdaiOrganization& e ); ~SdaiOrganization (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 208 ; } - const SdaiIdentifier Id() const; - void Id (const char * x); - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiText Description() const; - void Description (const char * x); + const SdaiIdentifier id_() const; + void id_ (const SdaiIdentifier x); + + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiOrganization_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiOrganization(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiOrganization () { return (SCLP23(Application_instance_ptr)) new SdaiOrganization ; } +#else inline SdaiOrganization * create_SdaiOrganization () { return new SdaiOrganization ; } +#endif -///////// END_ENTITY organization +///////// END_ENTITY organization -///////// ENTITY cc_design_certification +///////// ENTITY cc_design_certification extern AttrDescriptor *a_370items; class SdaiCc_design_certification : public SdaiCertification_assignment { - protected: + +#ifdef __OSTORE__ + friend void SdaiCc_design_certification_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: SdaiCertified_items _items ; // of certified_item public: SdaiCc_design_certification ( ); - SdaiCc_design_certification (STEPentity *se ); + SdaiCc_design_certification (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiCc_design_certification (SdaiCc_design_certification& e ); ~SdaiCc_design_certification (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 209 ; } - const SdaiCertified_itemsH Items() const; - void Items (SdaiCertified_itemsH x); + const SdaiCertified_items_ptr items_() const; + void items_ (const SdaiCertified_items_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiCc_design_certification_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiCc_design_certification(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiCc_design_certification () { return (SCLP23(Application_instance_ptr)) new SdaiCc_design_certification ; } +#else inline SdaiCc_design_certification * create_SdaiCc_design_certification () { return new SdaiCc_design_certification ; } +#endif -///////// END_ENTITY cc_design_certification +///////// END_ENTITY cc_design_certification -///////// ENTITY b_spline_surface_with_knots +///////// ENTITY b_spline_surface_with_knots extern AttrDescriptor *a_371u_multiplicities; extern AttrDescriptor *a_372v_multiplicities; extern AttrDescriptor *a_373u_knots; extern AttrDescriptor *a_374v_knots; extern AttrDescriptor *a_375knot_spec; -extern AttrDescriptor *a_376Dknot_u_upper; -extern AttrDescriptor *a_377Dknot_v_upper; +extern Derived_attribute *a_376Dknot_u_upper; +extern Derived_attribute *a_377Dknot_v_upper; class SdaiB_spline_surface_with_knots : public SdaiB_spline_surface { - protected: + +#ifdef __OSTORE__ + friend void SdaiB_spline_surface_with_knots_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: IntAggregate _u_multiplicities ; IntAggregate _v_multiplicities ; RealAggregate _u_knots ; // of parameter_value RealAggregate _v_knots ; // of parameter_value - SdaiKnot_type _knot_spec ; + SdaiKnot_type_var _knot_spec ; public: SdaiB_spline_surface_with_knots ( ); - SdaiB_spline_surface_with_knots (STEPentity *se ); + SdaiB_spline_surface_with_knots (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiB_spline_surface_with_knots (SdaiB_spline_surface_with_knots& e ); ~SdaiB_spline_surface_with_knots (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 210 ; } - const IntAggregateH U_multiplicities() const; - void U_multiplicities (IntAggregateH x); - const IntAggregateH V_multiplicities() const; - void V_multiplicities (IntAggregateH x); - const RealAggregateH U_knots() const; - void U_knots (RealAggregateH x); - const RealAggregateH V_knots() const; - void V_knots (RealAggregateH x); - const sdaiKnot_type Knot_spec() const; - void Knot_spec (sdaiKnot_type x); + const IntAggregate_ptr u_multiplicities_() const; + void u_multiplicities_ (const IntAggregate_ptr x); + + const IntAggregate_ptr v_multiplicities_() const; + void v_multiplicities_ (const IntAggregate_ptr x); + + const RealAggregate_ptr u_knots_() const; + void u_knots_ (const RealAggregate_ptr x); + + const RealAggregate_ptr v_knots_() const; + void v_knots_ (const RealAggregate_ptr x); + + const SdaiKnot_type_var knot_spec_() const; + void knot_spec_ (const SdaiKnot_type_var x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiB_spline_surface_with_knots_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiB_spline_surface_with_knots(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiB_spline_surface_with_knots () { return (SCLP23(Application_instance_ptr)) new SdaiB_spline_surface_with_knots ; } +#else inline SdaiB_spline_surface_with_knots * create_SdaiB_spline_surface_with_knots () { return new SdaiB_spline_surface_with_knots ; } +#endif -///////// END_ENTITY b_spline_surface_with_knots +///////// END_ENTITY b_spline_surface_with_knots -///////// ENTITY certification_type +///////// ENTITY certification_type extern AttrDescriptor *a_378description; -class SdaiCertification_type : public STEPentity { +class SdaiCertification_type : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiCertification_type_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _description ; + SCLP23(String) _description ; public: SdaiCertification_type ( ); - SdaiCertification_type (STEPentity *se ); + SdaiCertification_type (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiCertification_type (SdaiCertification_type& e ); ~SdaiCertification_type (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 211 ; } - const SdaiLabel Description() const; - void Description (const char * x); + const SdaiLabel description_() const; + void description_ (const SdaiLabel x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiCertification_type_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiCertification_type(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiCertification_type () { return (SCLP23(Application_instance_ptr)) new SdaiCertification_type ; } +#else inline SdaiCertification_type * create_SdaiCertification_type () { return new SdaiCertification_type ; } +#endif -///////// END_ENTITY certification_type +///////// END_ENTITY certification_type -///////// ENTITY oriented_path +///////// ENTITY oriented_path extern AttrDescriptor *a_379path_element; extern AttrDescriptor *a_380orientation; -extern AttrDescriptor *a_381Dpath_edge_list; +extern Derived_attribute *a_381Dpath_edge_list; class SdaiOriented_path : public SdaiPath { - protected: - SdaiPathH _path_element ; - SdaiBoolean _orientation ; + +#ifdef __OSTORE__ + friend void SdaiOriented_path_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _path_element ; + SCLP23(BOOL) _orientation ; public: SdaiOriented_path ( ); - SdaiOriented_path (STEPentity *se ); + SdaiOriented_path (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiOriented_path (SdaiOriented_path& e ); ~SdaiOriented_path (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 212 ; } - SdaiPathH Path_element() const; - void Path_element (SdaiPathH x); - const BOOLEAN Orientation() const; - void Orientation (BOOLEAN x); + const SdaiPath_ptr path_element_() const; + void path_element_ (const SdaiPath_ptr x); + + const SCLBOOL(Bool) orientation_() const; + void orientation_ (const SCLBOOL(Bool) x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiOriented_path_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiOriented_path(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiOriented_path () { return (SCLP23(Application_instance_ptr)) new SdaiOriented_path ; } +#else inline SdaiOriented_path * create_SdaiOriented_path () { return new SdaiOriented_path ; } +#endif -///////// END_ENTITY oriented_path +///////// END_ENTITY oriented_path -///////// ENTITY security_classification +///////// ENTITY security_classification extern AttrDescriptor *a_382name; extern AttrDescriptor *a_383purpose; extern AttrDescriptor *a_384security_level; -class SdaiSecurity_classification : public STEPentity { +class SdaiSecurity_classification : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiSecurity_classification_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _name ; - SdaiString _purpose ; - SdaiSecurity_classification_levelH _security_level ; + SCLP23(String) _name ; + SCLP23(String) _purpose ; + SCLP23(Application_instance_ptr) _security_level ; public: SdaiSecurity_classification ( ); - SdaiSecurity_classification (STEPentity *se ); + SdaiSecurity_classification (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiSecurity_classification (SdaiSecurity_classification& e ); ~SdaiSecurity_classification (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 213 ; } - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiText Purpose() const; - void Purpose (const char * x); - SdaiSecurity_classification_levelH Security_level() const; - void Security_level (SdaiSecurity_classification_levelH x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiText purpose_() const; + void purpose_ (const SdaiText x); + + const SdaiSecurity_classification_level_ptr security_level_() const; + void security_level_ (const SdaiSecurity_classification_level_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiSecurity_classification_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiSecurity_classification(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiSecurity_classification () { return (SCLP23(Application_instance_ptr)) new SdaiSecurity_classification ; } +#else inline SdaiSecurity_classification * create_SdaiSecurity_classification () { return new SdaiSecurity_classification ; } +#endif -///////// END_ENTITY security_classification +///////// END_ENTITY security_classification -///////// ENTITY vertex_loop +///////// ENTITY vertex_loop extern AttrDescriptor *a_385loop_vertex; class SdaiVertex_loop : public SdaiLoop { - protected: - SdaiVertexH _loop_vertex ; + +#ifdef __OSTORE__ + friend void SdaiVertex_loop_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _loop_vertex ; public: SdaiVertex_loop ( ); - SdaiVertex_loop (STEPentity *se ); + SdaiVertex_loop (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiVertex_loop (SdaiVertex_loop& e ); ~SdaiVertex_loop (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 214 ; } - SdaiVertexH Loop_vertex() const; - void Loop_vertex (SdaiVertexH x); + const SdaiVertex_ptr loop_vertex_() const; + void loop_vertex_ (const SdaiVertex_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiVertex_loop_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiVertex_loop(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiVertex_loop () { return (SCLP23(Application_instance_ptr)) new SdaiVertex_loop ; } +#else inline SdaiVertex_loop * create_SdaiVertex_loop () { return new SdaiVertex_loop ; } +#endif -///////// END_ENTITY vertex_loop +///////// END_ENTITY vertex_loop -///////// ENTITY approval_status +///////// ENTITY approval_status extern AttrDescriptor *a_386name; -class SdaiApproval_status : public STEPentity { +class SdaiApproval_status : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiApproval_status_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _name ; + SCLP23(String) _name ; public: SdaiApproval_status ( ); - SdaiApproval_status (STEPentity *se ); + SdaiApproval_status (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiApproval_status (SdaiApproval_status& e ); ~SdaiApproval_status (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 215 ; } - const SdaiLabel Name() const; - void Name (const char * x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiApproval_status_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiApproval_status(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiApproval_status () { return (SCLP23(Application_instance_ptr)) new SdaiApproval_status ; } +#else inline SdaiApproval_status * create_SdaiApproval_status () { return new SdaiApproval_status ; } +#endif -///////// END_ENTITY approval_status +///////// END_ENTITY approval_status -///////// ENTITY cartesian_point +///////// ENTITY cartesian_point extern AttrDescriptor *a_387coordinates; class SdaiCartesian_point : public SdaiPoint { - protected: + +#ifdef __OSTORE__ + friend void SdaiCartesian_point_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: RealAggregate _coordinates ; // of length_measure public: SdaiCartesian_point ( ); - SdaiCartesian_point (STEPentity *se ); + SdaiCartesian_point (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiCartesian_point (SdaiCartesian_point& e ); ~SdaiCartesian_point (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 216 ; } - const RealAggregateH Coordinates() const; - void Coordinates (RealAggregateH x); + const RealAggregate_ptr coordinates_() const; + void coordinates_ (const RealAggregate_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiCartesian_point_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiCartesian_point(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiCartesian_point () { return (SCLP23(Application_instance_ptr)) new SdaiCartesian_point ; } +#else inline SdaiCartesian_point * create_SdaiCartesian_point () { return new SdaiCartesian_point ; } +#endif -///////// END_ENTITY cartesian_point +///////// END_ENTITY cartesian_point -///////// ENTITY date_and_time_assignment +///////// ENTITY date_and_time_assignment extern AttrDescriptor *a_388assigned_date_and_time; extern AttrDescriptor *a_389role; -class SdaiDate_and_time_assignment : public STEPentity { +class SdaiDate_and_time_assignment : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiDate_and_time_assignment_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiDate_and_timeH _assigned_date_and_time ; - SdaiDate_time_roleH _role ; + SCLP23(Application_instance_ptr) _assigned_date_and_time ; + SCLP23(Application_instance_ptr) _role ; public: SdaiDate_and_time_assignment ( ); - SdaiDate_and_time_assignment (STEPentity *se ); + SdaiDate_and_time_assignment (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiDate_and_time_assignment (SdaiDate_and_time_assignment& e ); ~SdaiDate_and_time_assignment (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 217 ; } - SdaiDate_and_timeH Assigned_date_and_time() const; - void Assigned_date_and_time (SdaiDate_and_timeH x); - SdaiDate_time_roleH Role() const; - void Role (SdaiDate_time_roleH x); + const SdaiDate_and_time_ptr assigned_date_and_time_() const; + void assigned_date_and_time_ (const SdaiDate_and_time_ptr x); + + const SdaiDate_time_role_ptr role_() const; + void role_ (const SdaiDate_time_role_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiDate_and_time_assignment_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiDate_and_time_assignment(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiDate_and_time_assignment () { return (SCLP23(Application_instance_ptr)) new SdaiDate_and_time_assignment ; } +#else inline SdaiDate_and_time_assignment * create_SdaiDate_and_time_assignment () { return new SdaiDate_and_time_assignment ; } +#endif -///////// END_ENTITY date_and_time_assignment +///////// END_ENTITY date_and_time_assignment -///////// ENTITY parametric_representation_context +///////// ENTITY parametric_representation_context class SdaiParametric_representation_context : public SdaiRepresentation_context { - protected: + +#ifdef __OSTORE__ + friend void SdaiParametric_representation_context_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiParametric_representation_context ( ); - SdaiParametric_representation_context (STEPentity *se ); + SdaiParametric_representation_context (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiParametric_representation_context (SdaiParametric_representation_context& e ); ~SdaiParametric_representation_context (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 218 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiParametric_representation_context_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiParametric_representation_context(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiParametric_representation_context () { return (SCLP23(Application_instance_ptr)) new SdaiParametric_representation_context ; } +#else inline SdaiParametric_representation_context * create_SdaiParametric_representation_context () { return new SdaiParametric_representation_context ; } +#endif -///////// END_ENTITY parametric_representation_context +///////// END_ENTITY parametric_representation_context -///////// ENTITY product_concept_context +///////// ENTITY product_concept_context extern AttrDescriptor *a_390market_segment_type; class SdaiProduct_concept_context : public SdaiApplication_context_element { - protected: - SdaiString _market_segment_type ; + +#ifdef __OSTORE__ + friend void SdaiProduct_concept_context_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(String) _market_segment_type ; public: SdaiProduct_concept_context ( ); - SdaiProduct_concept_context (STEPentity *se ); + SdaiProduct_concept_context (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiProduct_concept_context (SdaiProduct_concept_context& e ); ~SdaiProduct_concept_context (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 219 ; } - const SdaiLabel Market_segment_type() const; - void Market_segment_type (const char * x); + const SdaiLabel market_segment_type_() const; + void market_segment_type_ (const SdaiLabel x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiProduct_concept_context_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiProduct_concept_context(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiProduct_concept_context () { return (SCLP23(Application_instance_ptr)) new SdaiProduct_concept_context ; } +#else inline SdaiProduct_concept_context * create_SdaiProduct_concept_context () { return new SdaiProduct_concept_context ; } +#endif -///////// END_ENTITY product_concept_context +///////// END_ENTITY product_concept_context -///////// ENTITY cartesian_transformation_operator_2d +///////// ENTITY cartesian_transformation_operator_2d -extern AttrDescriptor *a_391Du; +extern Derived_attribute *a_391Du; class SdaiCartesian_transformation_operator_2d : public SdaiCartesian_transformation_operator { - protected: + +#ifdef __OSTORE__ + friend void SdaiCartesian_transformation_operator_2d_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiCartesian_transformation_operator_2d ( ); - SdaiCartesian_transformation_operator_2d (STEPentity *se ); + SdaiCartesian_transformation_operator_2d (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiCartesian_transformation_operator_2d (SdaiCartesian_transformation_operator_2d& e ); ~SdaiCartesian_transformation_operator_2d (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 220 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiCartesian_transformation_operator_2d_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiCartesian_transformation_operator_2d(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiCartesian_transformation_operator_2d () { return (SCLP23(Application_instance_ptr)) new SdaiCartesian_transformation_operator_2d ; } +#else inline SdaiCartesian_transformation_operator_2d * create_SdaiCartesian_transformation_operator_2d () { return new SdaiCartesian_transformation_operator_2d ; } +#endif -///////// END_ENTITY cartesian_transformation_operator_2d +///////// END_ENTITY cartesian_transformation_operator_2d -///////// ENTITY surface_patch +///////// ENTITY surface_patch extern AttrDescriptor *a_392parent_surface; extern AttrDescriptor *a_393u_transition; extern AttrDescriptor *a_394v_transition; extern AttrDescriptor *a_395u_sense; extern AttrDescriptor *a_396v_sense; -extern InverseAttrDescriptor *a_397Iusing_surfaces; +extern Inverse_attribute *a_397Iusing_surfaces; -class SdaiSurface_patch : public STEPentity { +class SdaiSurface_patch : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiSurface_patch_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiBounded_surfaceH _parent_surface ; - SdaiTransition_code _u_transition ; - SdaiTransition_code _v_transition ; - SdaiBoolean _u_sense ; - SdaiBoolean _v_sense ; + SCLP23(Application_instance_ptr) _parent_surface ; + SdaiTransition_code_var _u_transition ; + SdaiTransition_code_var _v_transition ; + SCLP23(BOOL) _u_sense ; + SCLP23(BOOL) _v_sense ; EntityAggregate _using_surfaces ; // of rectangular_composite_surface public: SdaiSurface_patch ( ); - SdaiSurface_patch (STEPentity *se ); + SdaiSurface_patch (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiSurface_patch (SdaiSurface_patch& e ); ~SdaiSurface_patch (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 221 ; } - SdaiBounded_surfaceH Parent_surface() const; - void Parent_surface (SdaiBounded_surfaceH x); - const sdaiTransition_code U_transition() const; - void U_transition (sdaiTransition_code x); - const sdaiTransition_code V_transition() const; - void V_transition (sdaiTransition_code x); - const BOOLEAN U_sense() const; - void U_sense (BOOLEAN x); - const BOOLEAN V_sense() const; - void V_sense (BOOLEAN x); - const EntityAggregateH Using_surfaces() const; - void Using_surfaces (EntityAggregateH x); + const SdaiBounded_surface_ptr parent_surface_() const; + void parent_surface_ (const SdaiBounded_surface_ptr x); + + const SdaiTransition_code_var u_transition_() const; + void u_transition_ (const SdaiTransition_code_var x); + + const SdaiTransition_code_var v_transition_() const; + void v_transition_ (const SdaiTransition_code_var x); + + const SCLBOOL(Bool) u_sense_() const; + void u_sense_ (const SCLBOOL(Bool) x); + + const SCLBOOL(Bool) v_sense_() const; + void v_sense_ (const SCLBOOL(Bool) x); + + const EntityAggregate_ptr using_surfaces_() const; + void using_surfaces_ (const EntityAggregate_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiSurface_patch_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiSurface_patch(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiSurface_patch () { return (SCLP23(Application_instance_ptr)) new SdaiSurface_patch ; } +#else inline SdaiSurface_patch * create_SdaiSurface_patch () { return new SdaiSurface_patch ; } +#endif -///////// END_ENTITY surface_patch +///////// END_ENTITY surface_patch -///////// ENTITY length_unit +///////// ENTITY length_unit class SdaiLength_unit : public SdaiNamed_unit { - protected: + +#ifdef __OSTORE__ + friend void SdaiLength_unit_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiLength_unit ( ); - SdaiLength_unit (STEPentity *se ); + SdaiLength_unit (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiLength_unit (SdaiLength_unit& e ); ~SdaiLength_unit (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 222 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiLength_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiLength_unit(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiLength_unit () { return (SCLP23(Application_instance_ptr)) new SdaiLength_unit ; } +#else inline SdaiLength_unit * create_SdaiLength_unit () { return new SdaiLength_unit ; } +#endif -///////// END_ENTITY length_unit +///////// END_ENTITY length_unit -///////// ENTITY shape_aspect +///////// ENTITY shape_aspect extern AttrDescriptor *a_398name; extern AttrDescriptor *a_399description; extern AttrDescriptor *a_400of_shape; extern AttrDescriptor *a_401product_definitional; -class SdaiShape_aspect : public STEPentity { +class SdaiShape_aspect : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiShape_aspect_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _name ; - SdaiString _description ; - SdaiProduct_definition_shapeH _of_shape ; - SdaiLogical _product_definitional ; + SCLP23(String) _name ; + SCLP23(String) _description ; + SCLP23(Application_instance_ptr) _of_shape ; + SCLP23(LOGICAL) _product_definitional ; public: SdaiShape_aspect ( ); - SdaiShape_aspect (STEPentity *se ); + SdaiShape_aspect (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiShape_aspect (SdaiShape_aspect& e ); ~SdaiShape_aspect (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 223 ; } - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiText Description() const; - void Description (const char * x); - SdaiProduct_definition_shapeH Of_shape() const; - void Of_shape (SdaiProduct_definition_shapeH x); - const LOGICAL Product_definitional() const; - void Product_definitional (LOGICAL x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiProduct_definition_shape_ptr of_shape_() const; + void of_shape_ (const SdaiProduct_definition_shape_ptr x); + + const SCLLOG(Logical) product_definitional_() const; + void product_definitional_ (const SCLLOG(Logical) x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiShape_aspect_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiShape_aspect(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiShape_aspect () { return (SCLP23(Application_instance_ptr)) new SdaiShape_aspect ; } +#else inline SdaiShape_aspect * create_SdaiShape_aspect () { return new SdaiShape_aspect ; } +#endif -///////// END_ENTITY shape_aspect +///////// END_ENTITY shape_aspect -///////// ENTITY volume_measure_with_unit +///////// ENTITY volume_measure_with_unit class SdaiVolume_measure_with_unit : public SdaiMeasure_with_unit { - protected: + +#ifdef __OSTORE__ + friend void SdaiVolume_measure_with_unit_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiVolume_measure_with_unit ( ); - SdaiVolume_measure_with_unit (STEPentity *se ); + SdaiVolume_measure_with_unit (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiVolume_measure_with_unit (SdaiVolume_measure_with_unit& e ); ~SdaiVolume_measure_with_unit (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 224 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiVolume_measure_with_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiVolume_measure_with_unit(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiVolume_measure_with_unit () { return (SCLP23(Application_instance_ptr)) new SdaiVolume_measure_with_unit ; } +#else inline SdaiVolume_measure_with_unit * create_SdaiVolume_measure_with_unit () { return new SdaiVolume_measure_with_unit ; } +#endif -///////// END_ENTITY volume_measure_with_unit +///////// END_ENTITY volume_measure_with_unit -///////// ENTITY advanced_face +///////// ENTITY advanced_face class SdaiAdvanced_face : public SdaiFace_surface { - protected: + +#ifdef __OSTORE__ + friend void SdaiAdvanced_face_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiAdvanced_face ( ); - SdaiAdvanced_face (STEPentity *se ); + SdaiAdvanced_face (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiAdvanced_face (SdaiAdvanced_face& e ); ~SdaiAdvanced_face (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 225 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiAdvanced_face_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiAdvanced_face(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiAdvanced_face () { return (SCLP23(Application_instance_ptr)) new SdaiAdvanced_face ; } +#else inline SdaiAdvanced_face * create_SdaiAdvanced_face () { return new SdaiAdvanced_face ; } +#endif -///////// END_ENTITY advanced_face +///////// END_ENTITY advanced_face -///////// ENTITY security_classification_level +///////// ENTITY security_classification_level extern AttrDescriptor *a_402name; -class SdaiSecurity_classification_level : public STEPentity { +class SdaiSecurity_classification_level : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiSecurity_classification_level_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _name ; + SCLP23(String) _name ; public: SdaiSecurity_classification_level ( ); - SdaiSecurity_classification_level (STEPentity *se ); + SdaiSecurity_classification_level (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiSecurity_classification_level (SdaiSecurity_classification_level& e ); ~SdaiSecurity_classification_level (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 226 ; } - const SdaiLabel Name() const; - void Name (const char * x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiSecurity_classification_level_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiSecurity_classification_level(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiSecurity_classification_level () { return (SCLP23(Application_instance_ptr)) new SdaiSecurity_classification_level ; } +#else inline SdaiSecurity_classification_level * create_SdaiSecurity_classification_level () { return new SdaiSecurity_classification_level ; } +#endif -///////// END_ENTITY security_classification_level +///////// END_ENTITY security_classification_level -///////// ENTITY approval_relationship +///////// ENTITY approval_relationship extern AttrDescriptor *a_403name; extern AttrDescriptor *a_404description; extern AttrDescriptor *a_405relating_approval; extern AttrDescriptor *a_406related_approval; -class SdaiApproval_relationship : public STEPentity { +class SdaiApproval_relationship : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiApproval_relationship_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiString _name ; - SdaiString _description ; - SdaiApprovalH _relating_approval ; - SdaiApprovalH _related_approval ; + SCLP23(String) _name ; + SCLP23(String) _description ; + SCLP23(Application_instance_ptr) _relating_approval ; + SCLP23(Application_instance_ptr) _related_approval ; public: SdaiApproval_relationship ( ); - SdaiApproval_relationship (STEPentity *se ); + SdaiApproval_relationship (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiApproval_relationship (SdaiApproval_relationship& e ); ~SdaiApproval_relationship (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 227 ; } - const SdaiLabel Name() const; - void Name (const char * x); - const SdaiText Description() const; - void Description (const char * x); - SdaiApprovalH Relating_approval() const; - void Relating_approval (SdaiApprovalH x); - SdaiApprovalH Related_approval() const; - void Related_approval (SdaiApprovalH x); + const SdaiLabel name_() const; + void name_ (const SdaiLabel x); + + const SdaiText description_() const; + void description_ (const SdaiText x); + + const SdaiApproval_ptr relating_approval_() const; + void relating_approval_ (const SdaiApproval_ptr x); + + const SdaiApproval_ptr related_approval_() const; + void related_approval_ (const SdaiApproval_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiApproval_relationship_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiApproval_relationship(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiApproval_relationship () { return (SCLP23(Application_instance_ptr)) new SdaiApproval_relationship ; } +#else inline SdaiApproval_relationship * create_SdaiApproval_relationship () { return new SdaiApproval_relationship ; } +#endif -///////// END_ENTITY approval_relationship +///////// END_ENTITY approval_relationship -///////// ENTITY polyline +///////// ENTITY polyline extern AttrDescriptor *a_407points; class SdaiPolyline : public SdaiBounded_curve { - protected: + +#ifdef __OSTORE__ + friend void SdaiPolyline_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: EntityAggregate _points ; // of cartesian_point public: SdaiPolyline ( ); - SdaiPolyline (STEPentity *se ); + SdaiPolyline (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiPolyline (SdaiPolyline& e ); ~SdaiPolyline (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 228 ; } - const EntityAggregateH Points() const; - void Points (EntityAggregateH x); + const EntityAggregate_ptr points_() const; + void points_ (const EntityAggregate_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiPolyline_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiPolyline(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiPolyline () { return (SCLP23(Application_instance_ptr)) new SdaiPolyline ; } +#else inline SdaiPolyline * create_SdaiPolyline () { return new SdaiPolyline ; } +#endif -///////// END_ENTITY polyline +///////// END_ENTITY polyline -///////// ENTITY approval_person_organization +///////// ENTITY approval_person_organization extern AttrDescriptor *a_408person_organization; extern AttrDescriptor *a_409authorized_approval; extern AttrDescriptor *a_410role; -class SdaiApproval_person_organization : public STEPentity { +class SdaiApproval_person_organization : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiApproval_person_organization_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: SdaiPerson_organization_select _person_organization ; - SdaiApprovalH _authorized_approval ; - SdaiApproval_roleH _role ; + SCLP23(Application_instance_ptr) _authorized_approval ; + SCLP23(Application_instance_ptr) _role ; public: SdaiApproval_person_organization ( ); - SdaiApproval_person_organization (STEPentity *se ); + SdaiApproval_person_organization (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiApproval_person_organization (SdaiApproval_person_organization& e ); ~SdaiApproval_person_organization (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 229 ; } - const SdaiPerson_organization_selectH Person_organization() const; - void Person_organization (SdaiPerson_organization_selectH x); - SdaiApprovalH Authorized_approval() const; - void Authorized_approval (SdaiApprovalH x); - SdaiApproval_roleH Role() const; - void Role (SdaiApproval_roleH x); + const SdaiPerson_organization_select_ptr person_organization_() const; + void person_organization_ (const SdaiPerson_organization_select_ptr x); + + const SdaiApproval_ptr authorized_approval_() const; + void authorized_approval_ (const SdaiApproval_ptr x); + + const SdaiApproval_role_ptr role_() const; + void role_ (const SdaiApproval_role_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiApproval_person_organization_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiApproval_person_organization(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiApproval_person_organization () { return (SCLP23(Application_instance_ptr)) new SdaiApproval_person_organization ; } +#else inline SdaiApproval_person_organization * create_SdaiApproval_person_organization () { return new SdaiApproval_person_organization ; } +#endif -///////// END_ENTITY approval_person_organization +///////// END_ENTITY approval_person_organization -///////// ENTITY surface_replica +///////// ENTITY surface_replica extern AttrDescriptor *a_411parent_surface; extern AttrDescriptor *a_412transformation; class SdaiSurface_replica : public SdaiSurface { - protected: - SdaiSurfaceH _parent_surface ; - SdaiCartesian_transformation_operator_3dH _transformation ; + +#ifdef __OSTORE__ + friend void SdaiSurface_replica_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _parent_surface ; + SCLP23(Application_instance_ptr) _transformation ; public: SdaiSurface_replica ( ); - SdaiSurface_replica (STEPentity *se ); + SdaiSurface_replica (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiSurface_replica (SdaiSurface_replica& e ); ~SdaiSurface_replica (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 230 ; } - SdaiSurfaceH Parent_surface() const; - void Parent_surface (SdaiSurfaceH x); - SdaiCartesian_transformation_operator_3dH Transformation() const; - void Transformation (SdaiCartesian_transformation_operator_3dH x); + const SdaiSurface_ptr parent_surface_() const; + void parent_surface_ (const SdaiSurface_ptr x); + + const SdaiCartesian_transformation_operator_3d_ptr transformation_() const; + void transformation_ (const SdaiCartesian_transformation_operator_3d_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiSurface_replica_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiSurface_replica(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiSurface_replica () { return (SCLP23(Application_instance_ptr)) new SdaiSurface_replica ; } +#else inline SdaiSurface_replica * create_SdaiSurface_replica () { return new SdaiSurface_replica ; } +#endif -///////// END_ENTITY surface_replica +///////// END_ENTITY surface_replica -///////// ENTITY security_classification_assignment +///////// ENTITY security_classification_assignment extern AttrDescriptor *a_413assigned_security_classification; -class SdaiSecurity_classification_assignment : public STEPentity { +class SdaiSecurity_classification_assignment : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiSecurity_classification_assignment_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiSecurity_classificationH _assigned_security_classification ; + SCLP23(Application_instance_ptr) _assigned_security_classification ; public: SdaiSecurity_classification_assignment ( ); - SdaiSecurity_classification_assignment (STEPentity *se ); + SdaiSecurity_classification_assignment (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiSecurity_classification_assignment (SdaiSecurity_classification_assignment& e ); ~SdaiSecurity_classification_assignment (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 231 ; } - SdaiSecurity_classificationH Assigned_security_classification() const; - void Assigned_security_classification (SdaiSecurity_classificationH x); + const SdaiSecurity_classification_ptr assigned_security_classification_() const; + void assigned_security_classification_ (const SdaiSecurity_classification_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiSecurity_classification_assignment_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiSecurity_classification_assignment(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiSecurity_classification_assignment () { return (SCLP23(Application_instance_ptr)) new SdaiSecurity_classification_assignment ; } +#else inline SdaiSecurity_classification_assignment * create_SdaiSecurity_classification_assignment () { return new SdaiSecurity_classification_assignment ; } +#endif -///////// END_ENTITY security_classification_assignment +///////// END_ENTITY security_classification_assignment -///////// ENTITY cc_design_security_classification +///////// ENTITY cc_design_security_classification extern AttrDescriptor *a_414items; class SdaiCc_design_security_classification : public SdaiSecurity_classification_assignment { - protected: + +#ifdef __OSTORE__ + friend void SdaiCc_design_security_classification_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: SdaiClassified_items _items ; // of classified_item public: SdaiCc_design_security_classification ( ); - SdaiCc_design_security_classification (STEPentity *se ); + SdaiCc_design_security_classification (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiCc_design_security_classification (SdaiCc_design_security_classification& e ); ~SdaiCc_design_security_classification (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 232 ; } - const SdaiClassified_itemsH Items() const; - void Items (SdaiClassified_itemsH x); + const SdaiClassified_items_ptr items_() const; + void items_ (const SdaiClassified_items_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiCc_design_security_classification_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiCc_design_security_classification(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiCc_design_security_classification () { return (SCLP23(Application_instance_ptr)) new SdaiCc_design_security_classification ; } +#else inline SdaiCc_design_security_classification * create_SdaiCc_design_security_classification () { return new SdaiCc_design_security_classification ; } +#endif -///////// END_ENTITY cc_design_security_classification +///////// END_ENTITY cc_design_security_classification -///////// ENTITY faceted_brep_shape_representation +///////// ENTITY faceted_brep_shape_representation class SdaiFaceted_brep_shape_representation : public SdaiShape_representation { - protected: + +#ifdef __OSTORE__ + friend void SdaiFaceted_brep_shape_representation_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiFaceted_brep_shape_representation ( ); - SdaiFaceted_brep_shape_representation (STEPentity *se ); + SdaiFaceted_brep_shape_representation (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiFaceted_brep_shape_representation (SdaiFaceted_brep_shape_representation& e ); ~SdaiFaceted_brep_shape_representation (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 233 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiFaceted_brep_shape_representation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiFaceted_brep_shape_representation(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiFaceted_brep_shape_representation () { return (SCLP23(Application_instance_ptr)) new SdaiFaceted_brep_shape_representation ; } +#else inline SdaiFaceted_brep_shape_representation * create_SdaiFaceted_brep_shape_representation () { return new SdaiFaceted_brep_shape_representation ; } +#endif -///////// END_ENTITY faceted_brep_shape_representation +///////// END_ENTITY faceted_brep_shape_representation -///////// ENTITY document_usage_constraint +///////// ENTITY document_usage_constraint extern AttrDescriptor *a_415source; extern AttrDescriptor *a_416subject_element; extern AttrDescriptor *a_417subject_element_value; -class SdaiDocument_usage_constraint : public STEPentity { +class SdaiDocument_usage_constraint : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiDocument_usage_constraint_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiDocumentH _source ; - SdaiString _subject_element ; - SdaiString _subject_element_value ; + SCLP23(Application_instance_ptr) _source ; + SCLP23(String) _subject_element ; + SCLP23(String) _subject_element_value ; public: SdaiDocument_usage_constraint ( ); - SdaiDocument_usage_constraint (STEPentity *se ); + SdaiDocument_usage_constraint (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiDocument_usage_constraint (SdaiDocument_usage_constraint& e ); ~SdaiDocument_usage_constraint (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 234 ; } - SdaiDocumentH Source() const; - void Source (SdaiDocumentH x); - const SdaiLabel Subject_element() const; - void Subject_element (const char * x); - const SdaiText Subject_element_value() const; - void Subject_element_value (const char * x); + const SdaiDocument_ptr source_() const; + void source_ (const SdaiDocument_ptr x); + + const SdaiLabel subject_element_() const; + void subject_element_ (const SdaiLabel x); + + const SdaiText subject_element_value_() const; + void subject_element_value_ (const SdaiText x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiDocument_usage_constraint_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiDocument_usage_constraint(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiDocument_usage_constraint () { return (SCLP23(Application_instance_ptr)) new SdaiDocument_usage_constraint ; } +#else inline SdaiDocument_usage_constraint * create_SdaiDocument_usage_constraint () { return new SdaiDocument_usage_constraint ; } +#endif -///////// END_ENTITY document_usage_constraint +///////// END_ENTITY document_usage_constraint -///////// ENTITY vertex_point +///////// ENTITY vertex_point extern AttrDescriptor *a_418vertex_geometry; class SdaiVertex_point : public SdaiVertex { - protected: - SdaiPointH _vertex_geometry ; + +#ifdef __OSTORE__ + friend void SdaiVertex_point_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _vertex_geometry ; public: SdaiVertex_point ( ); - SdaiVertex_point (STEPentity *se ); + SdaiVertex_point (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiVertex_point (SdaiVertex_point& e ); ~SdaiVertex_point (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 235 ; } - SdaiPointH Vertex_geometry() const; - void Vertex_geometry (SdaiPointH x); + const SdaiPoint_ptr vertex_geometry_() const; + void vertex_geometry_ (const SdaiPoint_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ #if 0 #endif + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiVertex_point_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiVertex_point(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiVertex_point () { return (SCLP23(Application_instance_ptr)) new SdaiVertex_point ; } +#else inline SdaiVertex_point * create_SdaiVertex_point () { return new SdaiVertex_point ; } +#endif -///////// END_ENTITY vertex_point +///////// END_ENTITY vertex_point -///////// ENTITY cc_design_date_and_time_assignment +///////// ENTITY cc_design_date_and_time_assignment extern AttrDescriptor *a_419items; class SdaiCc_design_date_and_time_assignment : public SdaiDate_and_time_assignment { - protected: + +#ifdef __OSTORE__ + friend void SdaiCc_design_date_and_time_assignment_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: SdaiDate_time_items _items ; // of date_time_item public: SdaiCc_design_date_and_time_assignment ( ); - SdaiCc_design_date_and_time_assignment (STEPentity *se ); + SdaiCc_design_date_and_time_assignment (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiCc_design_date_and_time_assignment (SdaiCc_design_date_and_time_assignment& e ); ~SdaiCc_design_date_and_time_assignment (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 236 ; } - const SdaiDate_time_itemsH Items() const; - void Items (SdaiDate_time_itemsH x); + const SdaiDate_time_items_ptr items_() const; + void items_ (const SdaiDate_time_items_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiCc_design_date_and_time_assignment_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiCc_design_date_and_time_assignment(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiCc_design_date_and_time_assignment () { return (SCLP23(Application_instance_ptr)) new SdaiCc_design_date_and_time_assignment ; } +#else inline SdaiCc_design_date_and_time_assignment * create_SdaiCc_design_date_and_time_assignment () { return new SdaiCc_design_date_and_time_assignment ; } +#endif -///////// END_ENTITY cc_design_date_and_time_assignment +///////// END_ENTITY cc_design_date_and_time_assignment -///////// ENTITY oriented_closed_shell +///////// ENTITY oriented_closed_shell extern AttrDescriptor *a_420closed_shell_element; extern AttrDescriptor *a_421orientation; -extern AttrDescriptor *a_422Dconnected_face_set_cfs_faces; +extern Derived_attribute *a_422Dconnected_face_set_cfs_faces; class SdaiOriented_closed_shell : public SdaiClosed_shell { - protected: - SdaiClosed_shellH _closed_shell_element ; - SdaiBoolean _orientation ; + +#ifdef __OSTORE__ + friend void SdaiOriented_closed_shell_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _closed_shell_element ; + SCLP23(BOOL) _orientation ; public: SdaiOriented_closed_shell ( ); - SdaiOriented_closed_shell (STEPentity *se ); + SdaiOriented_closed_shell (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiOriented_closed_shell (SdaiOriented_closed_shell& e ); ~SdaiOriented_closed_shell (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 237 ; } - SdaiClosed_shellH Closed_shell_element() const; - void Closed_shell_element (SdaiClosed_shellH x); - const BOOLEAN Orientation() const; - void Orientation (BOOLEAN x); + const SdaiClosed_shell_ptr closed_shell_element_() const; + void closed_shell_element_ (const SdaiClosed_shell_ptr x); + + const SCLBOOL(Bool) orientation_() const; + void orientation_ (const SCLBOOL(Bool) x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiOriented_closed_shell_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiOriented_closed_shell(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiOriented_closed_shell () { return (SCLP23(Application_instance_ptr)) new SdaiOriented_closed_shell ; } +#else inline SdaiOriented_closed_shell * create_SdaiOriented_closed_shell () { return new SdaiOriented_closed_shell ; } +#endif -///////// END_ENTITY oriented_closed_shell +///////// END_ENTITY oriented_closed_shell -///////// ENTITY person_and_organization +///////// ENTITY person_and_organization extern AttrDescriptor *a_423the_person; extern AttrDescriptor *a_424the_organization; -class SdaiPerson_and_organization : public STEPentity { +class SdaiPerson_and_organization : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiPerson_and_organization_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiPersonH _the_person ; - SdaiOrganizationH _the_organization ; + SCLP23(Application_instance_ptr) _the_person ; + SCLP23(Application_instance_ptr) _the_organization ; public: SdaiPerson_and_organization ( ); - SdaiPerson_and_organization (STEPentity *se ); + SdaiPerson_and_organization (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiPerson_and_organization (SdaiPerson_and_organization& e ); ~SdaiPerson_and_organization (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 238 ; } - SdaiPersonH The_person() const; - void The_person (SdaiPersonH x); - SdaiOrganizationH The_organization() const; - void The_organization (SdaiOrganizationH x); + const SdaiPerson_ptr the_person_() const; + void the_person_ (const SdaiPerson_ptr x); + + const SdaiOrganization_ptr the_organization_() const; + void the_organization_ (const SdaiOrganization_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiPerson_and_organization_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiPerson_and_organization(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiPerson_and_organization () { return (SCLP23(Application_instance_ptr)) new SdaiPerson_and_organization ; } +#else inline SdaiPerson_and_organization * create_SdaiPerson_and_organization () { return new SdaiPerson_and_organization ; } +#endif -///////// END_ENTITY person_and_organization +///////// END_ENTITY person_and_organization -///////// ENTITY cylindrical_surface +///////// ENTITY cylindrical_surface extern AttrDescriptor *a_425radius; class SdaiCylindrical_surface : public SdaiElementary_surface { - protected: - SdaiReal _radius ; + +#ifdef __OSTORE__ + friend void SdaiCylindrical_surface_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Real) _radius ; public: SdaiCylindrical_surface ( ); - SdaiCylindrical_surface (STEPentity *se ); + SdaiCylindrical_surface (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiCylindrical_surface (SdaiCylindrical_surface& e ); ~SdaiCylindrical_surface (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 239 ; } - const SdaiPositive_length_measure Radius() const; - void Radius (SdaiPositive_length_measure x); + const SdaiPositive_length_measure radius_() const; + void radius_ (const SdaiPositive_length_measure x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiCylindrical_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiCylindrical_surface(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiCylindrical_surface () { return (SCLP23(Application_instance_ptr)) new SdaiCylindrical_surface ; } +#else inline SdaiCylindrical_surface * create_SdaiCylindrical_surface () { return new SdaiCylindrical_surface ; } +#endif -///////// END_ENTITY cylindrical_surface +///////// END_ENTITY cylindrical_surface -///////// ENTITY local_time +///////// ENTITY local_time extern AttrDescriptor *a_426hour_component; extern AttrDescriptor *a_427minute_component; extern AttrDescriptor *a_428second_component; extern AttrDescriptor *a_429zone; -class SdaiLocal_time : public STEPentity { +class SdaiLocal_time : public SCLP23(Application_instance) { + +#ifdef __OSTORE__ + friend void SdaiLocal_time_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif protected: - SdaiInteger _hour_component ; - SdaiInteger _minute_component ; // OPTIONAL - SdaiReal _second_component ; // OPTIONAL - SdaiCoordinated_universal_time_offsetH _zone ; + SCLP23(Integer) _hour_component ; + SCLP23(Integer) _minute_component ; // OPTIONAL + SCLP23(Real) _second_component ; // OPTIONAL + SCLP23(Application_instance_ptr) _zone ; public: SdaiLocal_time ( ); - SdaiLocal_time (STEPentity *se ); + SdaiLocal_time (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiLocal_time (SdaiLocal_time& e ); ~SdaiLocal_time (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 240 ; } - const SdaiHour_in_day Hour_component() const; - void Hour_component (SdaiHour_in_day x); - const SdaiMinute_in_hour Minute_component() const; - void Minute_component (SdaiMinute_in_hour x); - const SdaiSecond_in_minute Second_component() const; - void Second_component (SdaiSecond_in_minute x); - SdaiCoordinated_universal_time_offsetH Zone() const; - void Zone (SdaiCoordinated_universal_time_offsetH x); + const SdaiHour_in_day hour_component_() const; + void hour_component_ (const SdaiHour_in_day x); + + const SdaiMinute_in_hour minute_component_() const; + void minute_component_ (const SdaiMinute_in_hour x); + + const SdaiSecond_in_minute second_component_() const; + void second_component_ (const SdaiSecond_in_minute x); + + const SdaiCoordinated_universal_time_offset_ptr zone_() const; + void zone_ (const SdaiCoordinated_universal_time_offset_ptr x); + + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiLocal_time_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiLocal_time(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiLocal_time () { return (SCLP23(Application_instance_ptr)) new SdaiLocal_time ; } +#else inline SdaiLocal_time * create_SdaiLocal_time () { return new SdaiLocal_time ; } +#endif -///////// END_ENTITY local_time +///////// END_ENTITY local_time -///////// ENTITY mass_unit +///////// ENTITY mass_unit class SdaiMass_unit : public SdaiNamed_unit { - protected: + +#ifdef __OSTORE__ + friend void SdaiMass_unit_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiMass_unit ( ); - SdaiMass_unit (STEPentity *se ); + SdaiMass_unit (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiMass_unit (SdaiMass_unit& e ); ~SdaiMass_unit (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 241 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiMass_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiMass_unit(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiMass_unit () { return (SCLP23(Application_instance_ptr)) new SdaiMass_unit ; } +#else inline SdaiMass_unit * create_SdaiMass_unit () { return new SdaiMass_unit ; } +#endif -///////// END_ENTITY mass_unit +///////// END_ENTITY mass_unit -///////// ENTITY vertex_shell +///////// ENTITY vertex_shell extern AttrDescriptor *a_430vertex_shell_extent; class SdaiVertex_shell : public SdaiTopological_representation_item { - protected: - SdaiVertex_loopH _vertex_shell_extent ; + +#ifdef __OSTORE__ + friend void SdaiVertex_shell_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _vertex_shell_extent ; public: SdaiVertex_shell ( ); - SdaiVertex_shell (STEPentity *se ); + SdaiVertex_shell (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiVertex_shell (SdaiVertex_shell& e ); ~SdaiVertex_shell (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 242 ; } - SdaiVertex_loopH Vertex_shell_extent() const; - void Vertex_shell_extent (SdaiVertex_loopH x); + const SdaiVertex_loop_ptr vertex_shell_extent_() const; + void vertex_shell_extent_ (const SdaiVertex_loop_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiVertex_shell_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiVertex_shell(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiVertex_shell () { return (SCLP23(Application_instance_ptr)) new SdaiVertex_shell ; } +#else inline SdaiVertex_shell * create_SdaiVertex_shell () { return new SdaiVertex_shell ; } +#endif -///////// END_ENTITY vertex_shell +///////// END_ENTITY vertex_shell -///////// ENTITY poly_loop +///////// ENTITY poly_loop extern AttrDescriptor *a_431polygon; class SdaiPoly_loop : public SdaiLoop { - protected: + +#ifdef __OSTORE__ + friend void SdaiPoly_loop_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: EntityAggregate _polygon ; // of cartesian_point public: SdaiPoly_loop ( ); - SdaiPoly_loop (STEPentity *se ); + SdaiPoly_loop (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiPoly_loop (SdaiPoly_loop& e ); ~SdaiPoly_loop (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 243 ; } - const EntityAggregateH Polygon() const; - void Polygon (EntityAggregateH x); + const EntityAggregate_ptr polygon_() const; + void polygon_ (const EntityAggregate_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ #if 0 #endif + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiPoly_loop_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiPoly_loop(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiPoly_loop () { return (SCLP23(Application_instance_ptr)) new SdaiPoly_loop ; } +#else inline SdaiPoly_loop * create_SdaiPoly_loop () { return new SdaiPoly_loop ; } +#endif -///////// END_ENTITY poly_loop +///////// END_ENTITY poly_loop -///////// ENTITY wire_shell +///////// ENTITY wire_shell extern AttrDescriptor *a_432wire_shell_extent; class SdaiWire_shell : public SdaiTopological_representation_item { - protected: + +#ifdef __OSTORE__ + friend void SdaiWire_shell_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: EntityAggregate _wire_shell_extent ; // of loop public: SdaiWire_shell ( ); - SdaiWire_shell (STEPentity *se ); + SdaiWire_shell (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiWire_shell (SdaiWire_shell& e ); ~SdaiWire_shell (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 244 ; } - const EntityAggregateH Wire_shell_extent() const; - void Wire_shell_extent (EntityAggregateH x); + const EntityAggregate_ptr wire_shell_extent_() const; + void wire_shell_extent_ (const EntityAggregate_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiWire_shell_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiWire_shell(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiWire_shell () { return (SCLP23(Application_instance_ptr)) new SdaiWire_shell ; } +#else inline SdaiWire_shell * create_SdaiWire_shell () { return new SdaiWire_shell ; } +#endif -///////// END_ENTITY wire_shell +///////// END_ENTITY wire_shell -///////// ENTITY area_unit +///////// ENTITY area_unit class SdaiArea_unit : public SdaiNamed_unit { - protected: + +#ifdef __OSTORE__ + friend void SdaiArea_unit_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiArea_unit ( ); - SdaiArea_unit (STEPentity *se ); + SdaiArea_unit (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiArea_unit (SdaiArea_unit& e ); ~SdaiArea_unit (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 245 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiArea_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiArea_unit(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiArea_unit () { return (SCLP23(Application_instance_ptr)) new SdaiArea_unit ; } +#else inline SdaiArea_unit * create_SdaiArea_unit () { return new SdaiArea_unit ; } +#endif -///////// END_ENTITY area_unit +///////// END_ENTITY area_unit -///////// ENTITY mapped_item +///////// ENTITY mapped_item extern AttrDescriptor *a_433mapping_source; extern AttrDescriptor *a_434mapping_target; class SdaiMapped_item : public SdaiRepresentation_item { - protected: - SdaiRepresentation_mapH _mapping_source ; - SdaiRepresentation_itemH _mapping_target ; + +#ifdef __OSTORE__ + friend void SdaiMapped_item_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _mapping_source ; + SCLP23(Application_instance_ptr) _mapping_target ; public: SdaiMapped_item ( ); - SdaiMapped_item (STEPentity *se ); + SdaiMapped_item (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiMapped_item (SdaiMapped_item& e ); ~SdaiMapped_item (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 246 ; } - SdaiRepresentation_mapH Mapping_source() const; - void Mapping_source (SdaiRepresentation_mapH x); - SdaiRepresentation_itemH Mapping_target() const; - void Mapping_target (SdaiRepresentation_itemH x); + const SdaiRepresentation_map_ptr mapping_source_() const; + void mapping_source_ (const SdaiRepresentation_map_ptr x); + + const SdaiRepresentation_item_ptr mapping_target_() const; + void mapping_target_ (const SdaiRepresentation_item_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiMapped_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiMapped_item(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiMapped_item () { return (SCLP23(Application_instance_ptr)) new SdaiMapped_item ; } +#else inline SdaiMapped_item * create_SdaiMapped_item () { return new SdaiMapped_item ; } +#endif -///////// END_ENTITY mapped_item +///////// END_ENTITY mapped_item -///////// ENTITY offset_curve_2d +///////// ENTITY offset_curve_2d extern AttrDescriptor *a_435basis_curve; extern AttrDescriptor *a_436distance; extern AttrDescriptor *a_437self_intersect; class SdaiOffset_curve_2d : public SdaiCurve { - protected: - SdaiCurveH _basis_curve ; - SdaiReal _distance ; - SdaiLogical _self_intersect ; + +#ifdef __OSTORE__ + friend void SdaiOffset_curve_2d_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Application_instance_ptr) _basis_curve ; + SCLP23(Real) _distance ; + SCLP23(LOGICAL) _self_intersect ; public: SdaiOffset_curve_2d ( ); - SdaiOffset_curve_2d (STEPentity *se ); + SdaiOffset_curve_2d (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiOffset_curve_2d (SdaiOffset_curve_2d& e ); ~SdaiOffset_curve_2d (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 247 ; } - SdaiCurveH Basis_curve() const; - void Basis_curve (SdaiCurveH x); - const SdaiLength_measure Distance() const; - void Distance (SdaiLength_measure x); - const LOGICAL Self_intersect() const; - void Self_intersect (LOGICAL x); + const SdaiCurve_ptr basis_curve_() const; + void basis_curve_ (const SdaiCurve_ptr x); + + const SdaiLength_measure distance_() const; + void distance_ (const SdaiLength_measure x); + + const SCLLOG(Logical) self_intersect_() const; + void self_intersect_ (const SCLLOG(Logical) x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiOffset_curve_2d_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiOffset_curve_2d(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiOffset_curve_2d () { return (SCLP23(Application_instance_ptr)) new SdaiOffset_curve_2d ; } +#else inline SdaiOffset_curve_2d * create_SdaiOffset_curve_2d () { return new SdaiOffset_curve_2d ; } +#endif -///////// END_ENTITY offset_curve_2d +///////// END_ENTITY offset_curve_2d -///////// ENTITY shape_definition_representation +///////// ENTITY shape_definition_representation class SdaiShape_definition_representation : public SdaiProperty_definition_representation { - protected: + +#ifdef __OSTORE__ + friend void SdaiShape_definition_representation_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiShape_definition_representation ( ); - SdaiShape_definition_representation (STEPentity *se ); + SdaiShape_definition_representation (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiShape_definition_representation (SdaiShape_definition_representation& e ); ~SdaiShape_definition_representation (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 248 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiShape_definition_representation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiShape_definition_representation(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiShape_definition_representation () { return (SCLP23(Application_instance_ptr)) new SdaiShape_definition_representation ; } +#else inline SdaiShape_definition_representation * create_SdaiShape_definition_representation () { return new SdaiShape_definition_representation ; } +#endif -///////// END_ENTITY shape_definition_representation +///////// END_ENTITY shape_definition_representation -///////// ENTITY volume_unit +///////// ENTITY volume_unit class SdaiVolume_unit : public SdaiNamed_unit { - protected: + +#ifdef __OSTORE__ + friend void SdaiVolume_unit_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: public: SdaiVolume_unit ( ); - SdaiVolume_unit (STEPentity *se ); + SdaiVolume_unit (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiVolume_unit (SdaiVolume_unit& e ); ~SdaiVolume_unit (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 249 ; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiVolume_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiVolume_unit(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiVolume_unit () { return (SCLP23(Application_instance_ptr)) new SdaiVolume_unit ; } +#else inline SdaiVolume_unit * create_SdaiVolume_unit () { return new SdaiVolume_unit ; } +#endif -///////// END_ENTITY volume_unit +///////// END_ENTITY volume_unit -///////// ENTITY conical_surface +///////// ENTITY conical_surface extern AttrDescriptor *a_438radius; extern AttrDescriptor *a_439semi_angle; class SdaiConical_surface : public SdaiElementary_surface { - protected: - SdaiReal _radius ; - SdaiReal _semi_angle ; + +#ifdef __OSTORE__ + friend void SdaiConical_surface_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: + SCLP23(Real) _radius ; + SCLP23(Real) _semi_angle ; public: SdaiConical_surface ( ); - SdaiConical_surface (STEPentity *se ); + SdaiConical_surface (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiConical_surface (SdaiConical_surface& e ); ~SdaiConical_surface (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 250 ; } - const SdaiLength_measure Radius() const; - void Radius (SdaiLength_measure x); - const SdaiPlane_angle_measure Semi_angle() const; - void Semi_angle (SdaiPlane_angle_measure x); + const SdaiLength_measure radius_() const; + void radius_ (const SdaiLength_measure x); + + const SdaiPlane_angle_measure semi_angle_() const; + void semi_angle_ (const SdaiPlane_angle_measure x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiConical_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiConical_surface(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiConical_surface () { return (SCLP23(Application_instance_ptr)) new SdaiConical_surface ; } +#else inline SdaiConical_surface * create_SdaiConical_surface () { return new SdaiConical_surface ; } +#endif -///////// END_ENTITY conical_surface +///////// END_ENTITY conical_surface -///////// ENTITY global_unit_assigned_context +///////// ENTITY global_unit_assigned_context extern AttrDescriptor *a_440units; class SdaiGlobal_unit_assigned_context : public SdaiRepresentation_context { - protected: + +#ifdef __OSTORE__ + friend void SdaiGlobal_unit_assigned_context_access_hook_in(void *, + enum os_access_reason, void *, void *, void *); +#endif + protected: SdaiUnits _units ; // of unit public: SdaiGlobal_unit_assigned_context ( ); - SdaiGlobal_unit_assigned_context (STEPentity *se ); + SdaiGlobal_unit_assigned_context (SCLP23(Application_instance) *se, int *addAttrs = 0); SdaiGlobal_unit_assigned_context (SdaiGlobal_unit_assigned_context& e ); ~SdaiGlobal_unit_assigned_context (); + +#ifdef __O3DB__ + void oodb_reInit(); +#endif + int opcode () { return 251 ; } - const SdaiUnitsH Units() const; - void Units (SdaiUnitsH x); + const SdaiUnits_ptr units_() const; + void units_ (const SdaiUnits_ptr x); + /* The first parent's access functions are */ /* above or covered by inherited functions. */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + }; + +#ifdef __OSTORE__ +void SdaiGlobal_unit_assigned_context_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +#ifdef __OSTORE__ +SCLP23(Application_instance_ptr) +create_SdaiGlobal_unit_assigned_context(os_database *db); + +#elif __O3DB__ +inline SCLP23(Application_instance_ptr) +create_SdaiGlobal_unit_assigned_context () { return (SCLP23(Application_instance_ptr)) new SdaiGlobal_unit_assigned_context ; } +#else inline SdaiGlobal_unit_assigned_context * create_SdaiGlobal_unit_assigned_context () { return new SdaiGlobal_unit_assigned_context ; } +#endif -///////// END_ENTITY global_unit_assigned_context +///////// END_ENTITY global_unit_assigned_context + + +// ***** generate Model related pieces + +class SdaiModel_contents_config_control_design : public SCLP23(Model_contents) { + + public: + +#ifdef __OSTORE__ + SdaiModel_contents_config_control_design(os_database *db=0); +#else + SdaiModel_contents_config_control_design(); +#endif + + SdaiRepresentation_item__set_var SdaiRepresentation_item_get_extents(); + + SdaiGeometric_representation_item__set_var SdaiGeometric_representation_item_get_extents(); + + SdaiFunctionally_defined_transformation__set_var SdaiFunctionally_defined_transformation_get_extents(); + + SdaiCartesian_transformation_operator__set_var SdaiCartesian_transformation_operator_get_extents(); + + SdaiCartesian_transformation_operator_3d__set_var SdaiCartesian_transformation_operator_3d_get_extents(); + + SdaiVersioned_action_request__set_var SdaiVersioned_action_request_get_extents(); + + SdaiRepresentation__set_var SdaiRepresentation_get_extents(); + + SdaiShape_representation__set_var SdaiShape_representation_get_extents(); + + SdaiManifold_surface_shape_representation__set_var SdaiManifold_surface_shape_representation_get_extents(); + + SdaiCertification__set_var SdaiCertification_get_extents(); + + SdaiProduct_definition_relationship__set_var SdaiProduct_definition_relationship_get_extents(); + + SdaiProduct_definition_usage__set_var SdaiProduct_definition_usage_get_extents(); + + SdaiAssembly_component_usage__set_var SdaiAssembly_component_usage_get_extents(); + + SdaiQuantified_assembly_component_usage__set_var SdaiQuantified_assembly_component_usage_get_extents(); + + SdaiSolid_model__set_var SdaiSolid_model_get_extents(); + + SdaiManifold_solid_brep__set_var SdaiManifold_solid_brep_get_extents(); + + SdaiFaceted_brep__set_var SdaiFaceted_brep_get_extents(); + + SdaiAction_directive__set_var SdaiAction_directive_get_extents(); + + SdaiNamed_unit__set_var SdaiNamed_unit_get_extents(); + + SdaiPlane_angle_unit__set_var SdaiPlane_angle_unit_get_extents(); + + SdaiMeasure_with_unit__set_var SdaiMeasure_with_unit_get_extents(); + + SdaiArea_measure_with_unit__set_var SdaiArea_measure_with_unit_get_extents(); + + SdaiEffectivity__set_var SdaiEffectivity_get_extents(); + + SdaiSerial_numbered_effectivity__set_var SdaiSerial_numbered_effectivity_get_extents(); + + SdaiSurface__set_var SdaiSurface_get_extents(); + + SdaiOffset_surface__set_var SdaiOffset_surface_get_extents(); + + SdaiPlacement__set_var SdaiPlacement_get_extents(); + + SdaiAxis2_placement_2d__set_var SdaiAxis2_placement_2d_get_extents(); + + SdaiProduct_category__set_var SdaiProduct_category_get_extents(); + + SdaiProduct_related_product_category__set_var SdaiProduct_related_product_category_get_extents(); + + SdaiCurve__set_var SdaiCurve_get_extents(); + + SdaiConic__set_var SdaiConic_get_extents(); + + SdaiHyperbola__set_var SdaiHyperbola_get_extents(); + + SdaiAddress__set_var SdaiAddress_get_extents(); + + SdaiOrganizational_address__set_var SdaiOrganizational_address_get_extents(); + + SdaiBounded_surface__set_var SdaiBounded_surface_get_extents(); + + SdaiB_spline_surface__set_var SdaiB_spline_surface_get_extents(); + + SdaiUniform_surface__set_var SdaiUniform_surface_get_extents(); + + SdaiGeometrically_bounded_surface_shape_representation__set_var SdaiGeometrically_bounded_surface_shape_representation_get_extents(); + + SdaiAxis1_placement__set_var SdaiAxis1_placement_get_extents(); + + SdaiBounded_curve__set_var SdaiBounded_curve_get_extents(); + + SdaiB_spline_curve__set_var SdaiB_spline_curve_get_extents(); + + SdaiRational_b_spline_curve__set_var SdaiRational_b_spline_curve_get_extents(); + + SdaiAction_request_assignment__set_var SdaiAction_request_assignment_get_extents(); + + SdaiTopological_representation_item__set_var SdaiTopological_representation_item_get_extents(); + + SdaiFace_bound__set_var SdaiFace_bound_get_extents(); + + SdaiLength_measure_with_unit__set_var SdaiLength_measure_with_unit_get_extents(); + + SdaiDated_effectivity__set_var SdaiDated_effectivity_get_extents(); + + SdaiDirection__set_var SdaiDirection_get_extents(); + + SdaiNext_assembly_usage_occurrence__set_var SdaiNext_assembly_usage_occurrence_get_extents(); + + SdaiEdge__set_var SdaiEdge_get_extents(); + + SdaiOriented_edge__set_var SdaiOriented_edge_get_extents(); + + SdaiPerson__set_var SdaiPerson_get_extents(); + + SdaiDocument__set_var SdaiDocument_get_extents(); + + SdaiDocument_with_class__set_var SdaiDocument_with_class_get_extents(); + + SdaiConversion_based_unit__set_var SdaiConversion_based_unit_get_extents(); + + SdaiPoint__set_var SdaiPoint_get_extents(); + + SdaiPoint_on_surface__set_var SdaiPoint_on_surface_get_extents(); + + SdaiProduct_definition_formation__set_var SdaiProduct_definition_formation_get_extents(); + + SdaiPerson_and_organization_assignment__set_var SdaiPerson_and_organization_assignment_get_extents(); + + SdaiCc_design_person_and_organization_assignment__set_var SdaiCc_design_person_and_organization_assignment_get_extents(); + + SdaiOffset_curve_3d__set_var SdaiOffset_curve_3d_get_extents(); + + SdaiApproval__set_var SdaiApproval_get_extents(); + + SdaiComposite_curve__set_var SdaiComposite_curve_get_extents(); + + SdaiComposite_curve_on_surface__set_var SdaiComposite_curve_on_surface_get_extents(); + + SdaiBoundary_curve__set_var SdaiBoundary_curve_get_extents(); + + SdaiRepresentation_context__set_var SdaiRepresentation_context_get_extents(); + + SdaiGeometric_representation_context__set_var SdaiGeometric_representation_context_get_extents(); + + SdaiAction_status__set_var SdaiAction_status_get_extents(); + + SdaiApplication_context__set_var SdaiApplication_context_get_extents(); + + SdaiChange_request__set_var SdaiChange_request_get_extents(); + + SdaiDate_and_time__set_var SdaiDate_and_time_get_extents(); + + SdaiApproval_date_time__set_var SdaiApproval_date_time_get_extents(); + + SdaiApproval_role__set_var SdaiApproval_role_get_extents(); + + SdaiApplication_context_element__set_var SdaiApplication_context_element_get_extents(); + + SdaiProduct_context__set_var SdaiProduct_context_get_extents(); + + SdaiElementary_surface__set_var SdaiElementary_surface_get_extents(); + + SdaiSpherical_surface__set_var SdaiSpherical_surface_get_extents(); + + SdaiApplication_protocol_definition__set_var SdaiApplication_protocol_definition_get_extents(); + + SdaiSpecified_higher_usage_occurrence__set_var SdaiSpecified_higher_usage_occurrence_get_extents(); + + SdaiProduct_definition_formation_with_specified_source__set_var SdaiProduct_definition_formation_with_specified_source_get_extents(); + + SdaiAction_request_solution__set_var SdaiAction_request_solution_get_extents(); + + SdaiUncertainty_measure_with_unit__set_var SdaiUncertainty_measure_with_unit_get_extents(); + + SdaiEdge_based_wireframe_model__set_var SdaiEdge_based_wireframe_model_get_extents(); + + SdaiPath__set_var SdaiPath_get_extents(); + + SdaiConnected_face_set__set_var SdaiConnected_face_set_get_extents(); + + SdaiOpen_shell__set_var SdaiOpen_shell_get_extents(); + + SdaiOriented_open_shell__set_var SdaiOriented_open_shell_get_extents(); + + SdaiSolid_angle_unit__set_var SdaiSolid_angle_unit_get_extents(); + + SdaiCoordinated_universal_time_offset__set_var SdaiCoordinated_universal_time_offset_get_extents(); + + SdaiCurve_replica__set_var SdaiCurve_replica_get_extents(); + + SdaiQuasi_uniform_surface__set_var SdaiQuasi_uniform_surface_get_extents(); + + SdaiSurface_curve__set_var SdaiSurface_curve_get_extents(); + + SdaiAction_request_status__set_var SdaiAction_request_status_get_extents(); + + SdaiComposite_curve_segment__set_var SdaiComposite_curve_segment_get_extents(); + + SdaiReparametrised_composite_curve_segment__set_var SdaiReparametrised_composite_curve_segment_get_extents(); + + SdaiRepresentation_relationship__set_var SdaiRepresentation_relationship_get_extents(); + + SdaiRepresentation_relationship_with_transformation__set_var SdaiRepresentation_relationship_with_transformation_get_extents(); + + SdaiPerson_and_organization_role__set_var SdaiPerson_and_organization_role_get_extents(); + + SdaiQuasi_uniform_curve__set_var SdaiQuasi_uniform_curve_get_extents(); + + SdaiSwept_surface__set_var SdaiSwept_surface_get_extents(); + + SdaiProperty_definition__set_var SdaiProperty_definition_get_extents(); + + SdaiGlobal_uncertainty_assigned_context__set_var SdaiGlobal_uncertainty_assigned_context_get_extents(); + + SdaiOrganization_relationship__set_var SdaiOrganization_relationship_get_extents(); + + SdaiParabola__set_var SdaiParabola_get_extents(); + + SdaiRectangular_composite_surface__set_var SdaiRectangular_composite_surface_get_extents(); + + SdaiLot_effectivity__set_var SdaiLot_effectivity_get_extents(); + + SdaiSurface_of_linear_extrusion__set_var SdaiSurface_of_linear_extrusion_get_extents(); + + SdaiShell_based_surface_model__set_var SdaiShell_based_surface_model_get_extents(); + + SdaiUniform_curve__set_var SdaiUniform_curve_get_extents(); + + SdaiBezier_curve__set_var SdaiBezier_curve_get_extents(); + + SdaiLoop__set_var SdaiLoop_get_extents(); + + SdaiEdge_loop__set_var SdaiEdge_loop_get_extents(); + + SdaiDate__set_var SdaiDate_get_extents(); + + SdaiCalendar_date__set_var SdaiCalendar_date_get_extents(); + + SdaiToroidal_surface__set_var SdaiToroidal_surface_get_extents(); + + SdaiPromissory_usage_occurrence__set_var SdaiPromissory_usage_occurrence_get_extents(); + + SdaiApproval_assignment__set_var SdaiApproval_assignment_get_extents(); + + SdaiConfiguration_item__set_var SdaiConfiguration_item_get_extents(); + + SdaiContract_assignment__set_var SdaiContract_assignment_get_extents(); + + SdaiVector__set_var SdaiVector_get_extents(); + + SdaiIntersection_curve__set_var SdaiIntersection_curve_get_extents(); + + SdaiTrimmed_curve__set_var SdaiTrimmed_curve_get_extents(); + + SdaiProduct_definition_context__set_var SdaiProduct_definition_context_get_extents(); + + SdaiItem_defined_transformation__set_var SdaiItem_defined_transformation_get_extents(); + + SdaiAction_method__set_var SdaiAction_method_get_extents(); + + SdaiProduct_category_relationship__set_var SdaiProduct_category_relationship_get_extents(); + + SdaiPlane_angle_measure_with_unit__set_var SdaiPlane_angle_measure_with_unit_get_extents(); + + SdaiVertex__set_var SdaiVertex_get_extents(); + + SdaiRepresentation_map__set_var SdaiRepresentation_map_get_extents(); + + SdaiProduct_definition_effectivity__set_var SdaiProduct_definition_effectivity_get_extents(); + + SdaiConfiguration_effectivity__set_var SdaiConfiguration_effectivity_get_extents(); + + SdaiEllipse__set_var SdaiEllipse_get_extents(); + + SdaiContext_dependent_unit__set_var SdaiContext_dependent_unit_get_extents(); + + SdaiAlternate_product_relationship__set_var SdaiAlternate_product_relationship_get_extents(); + + SdaiDocument_type__set_var SdaiDocument_type_get_extents(); + + SdaiDocument_reference__set_var SdaiDocument_reference_get_extents(); + + SdaiMechanical_context__set_var SdaiMechanical_context_get_extents(); + + SdaiShell_based_wireframe_model__set_var SdaiShell_based_wireframe_model_get_extents(); + + SdaiContract__set_var SdaiContract_get_extents(); + + SdaiDimensional_exponents__set_var SdaiDimensional_exponents_get_extents(); + + SdaiStart_request__set_var SdaiStart_request_get_extents(); + + SdaiCc_design_specification_reference__set_var SdaiCc_design_specification_reference_get_extents(); + + SdaiSupplied_part_relationship__set_var SdaiSupplied_part_relationship_get_extents(); + + SdaiContext_dependent_shape_representation__set_var SdaiContext_dependent_shape_representation_get_extents(); + + SdaiOrdinal_date__set_var SdaiOrdinal_date_get_extents(); + + SdaiFace_outer_bound__set_var SdaiFace_outer_bound_get_extents(); + + SdaiMass_measure_with_unit__set_var SdaiMass_measure_with_unit_get_extents(); + + SdaiBrep_with_voids__set_var SdaiBrep_with_voids_get_extents(); + + SdaiWeek_of_year_and_day_date__set_var SdaiWeek_of_year_and_day_date_get_extents(); + + SdaiPoint_on_curve__set_var SdaiPoint_on_curve_get_extents(); + + SdaiShell_based_wireframe_shape_representation__set_var SdaiShell_based_wireframe_shape_representation_get_extents(); + + SdaiFace__set_var SdaiFace_get_extents(); + + SdaiFace_surface__set_var SdaiFace_surface_get_extents(); + + SdaiOriented_face__set_var SdaiOriented_face_get_extents(); + + SdaiSurface_of_revolution__set_var SdaiSurface_of_revolution_get_extents(); + + SdaiAdvanced_brep_shape_representation__set_var SdaiAdvanced_brep_shape_representation_get_extents(); + + SdaiEdge_curve__set_var SdaiEdge_curve_get_extents(); + + SdaiPoint_replica__set_var SdaiPoint_replica_get_extents(); + + SdaiProduct__set_var SdaiProduct_get_extents(); + + SdaiShape_aspect_relationship__set_var SdaiShape_aspect_relationship_get_extents(); + + SdaiRectangular_trimmed_surface__set_var SdaiRectangular_trimmed_surface_get_extents(); + + SdaiPlane__set_var SdaiPlane_get_extents(); + + SdaiAction_assignment__set_var SdaiAction_assignment_get_extents(); + + SdaiChange__set_var SdaiChange_get_extents(); + + SdaiCircle__set_var SdaiCircle_get_extents(); + + SdaiLine__set_var SdaiLine_get_extents(); + + SdaiProperty_definition_representation__set_var SdaiProperty_definition_representation_get_extents(); + + SdaiGeometric_set__set_var SdaiGeometric_set_get_extents(); + + SdaiGeometric_curve_set__set_var SdaiGeometric_curve_set_get_extents(); + + SdaiPersonal_address__set_var SdaiPersonal_address_get_extents(); + + SdaiDocument_relationship__set_var SdaiDocument_relationship_get_extents(); + + SdaiPcurve__set_var SdaiPcurve_get_extents(); + + SdaiOuter_boundary_curve__set_var SdaiOuter_boundary_curve_get_extents(); + + SdaiShape_representation_relationship__set_var SdaiShape_representation_relationship_get_extents(); + + SdaiAssembly_component_usage_substitute__set_var SdaiAssembly_component_usage_substitute_get_extents(); + + SdaiDegenerate_pcurve__set_var SdaiDegenerate_pcurve_get_extents(); + + SdaiEvaluated_degenerate_pcurve__set_var SdaiEvaluated_degenerate_pcurve_get_extents(); + + SdaiSolid_angle_measure_with_unit__set_var SdaiSolid_angle_measure_with_unit_get_extents(); + + SdaiConnected_edge_set__set_var SdaiConnected_edge_set_get_extents(); + + SdaiAction__set_var SdaiAction_get_extents(); + + SdaiExecuted_action__set_var SdaiExecuted_action_get_extents(); + + SdaiDirected_action__set_var SdaiDirected_action_get_extents(); + + SdaiOrganizational_project__set_var SdaiOrganizational_project_get_extents(); + + SdaiDate_time_role__set_var SdaiDate_time_role_get_extents(); + + SdaiCurve_bounded_surface__set_var SdaiCurve_bounded_surface_get_extents(); + + SdaiClosed_shell__set_var SdaiClosed_shell_get_extents(); + + SdaiDesign_make_from_relationship__set_var SdaiDesign_make_from_relationship_get_extents(); + + SdaiDefinitional_representation__set_var SdaiDefinitional_representation_get_extents(); + + SdaiProduct_definition_shape__set_var SdaiProduct_definition_shape_get_extents(); + + SdaiSi_unit__set_var SdaiSi_unit_get_extents(); + + SdaiBezier_surface__set_var SdaiBezier_surface_get_extents(); + + SdaiCertification_assignment__set_var SdaiCertification_assignment_get_extents(); + + SdaiStart_work__set_var SdaiStart_work_get_extents(); + + SdaiContract_type__set_var SdaiContract_type_get_extents(); + + SdaiB_spline_curve_with_knots__set_var SdaiB_spline_curve_with_knots_get_extents(); + + SdaiCc_design_approval__set_var SdaiCc_design_approval_get_extents(); + + SdaiEdge_based_wireframe_shape_representation__set_var SdaiEdge_based_wireframe_shape_representation_get_extents(); + + SdaiGeometrically_bounded_wireframe_shape_representation__set_var SdaiGeometrically_bounded_wireframe_shape_representation_get_extents(); + + SdaiProduct_concept__set_var SdaiProduct_concept_get_extents(); + + SdaiCc_design_contract__set_var SdaiCc_design_contract_get_extents(); + + SdaiSeam_curve__set_var SdaiSeam_curve_get_extents(); + + SdaiAxis2_placement_3d__set_var SdaiAxis2_placement_3d_get_extents(); + + SdaiRational_b_spline_surface__set_var SdaiRational_b_spline_surface_get_extents(); + + SdaiConfiguration_design__set_var SdaiConfiguration_design_get_extents(); + + SdaiDesign_context__set_var SdaiDesign_context_get_extents(); + + SdaiProduct_definition__set_var SdaiProduct_definition_get_extents(); + + SdaiProduct_definition_with_associated_documents__set_var SdaiProduct_definition_with_associated_documents_get_extents(); + + SdaiOrganization__set_var SdaiOrganization_get_extents(); + + SdaiCc_design_certification__set_var SdaiCc_design_certification_get_extents(); + + SdaiB_spline_surface_with_knots__set_var SdaiB_spline_surface_with_knots_get_extents(); + + SdaiCertification_type__set_var SdaiCertification_type_get_extents(); + + SdaiOriented_path__set_var SdaiOriented_path_get_extents(); + + SdaiSecurity_classification__set_var SdaiSecurity_classification_get_extents(); + + SdaiVertex_loop__set_var SdaiVertex_loop_get_extents(); + + SdaiApproval_status__set_var SdaiApproval_status_get_extents(); + + SdaiCartesian_point__set_var SdaiCartesian_point_get_extents(); + + SdaiDate_and_time_assignment__set_var SdaiDate_and_time_assignment_get_extents(); + + SdaiParametric_representation_context__set_var SdaiParametric_representation_context_get_extents(); + + SdaiProduct_concept_context__set_var SdaiProduct_concept_context_get_extents(); + + SdaiCartesian_transformation_operator_2d__set_var SdaiCartesian_transformation_operator_2d_get_extents(); + + SdaiSurface_patch__set_var SdaiSurface_patch_get_extents(); + + SdaiLength_unit__set_var SdaiLength_unit_get_extents(); + + SdaiShape_aspect__set_var SdaiShape_aspect_get_extents(); + + SdaiVolume_measure_with_unit__set_var SdaiVolume_measure_with_unit_get_extents(); + + SdaiAdvanced_face__set_var SdaiAdvanced_face_get_extents(); + + SdaiSecurity_classification_level__set_var SdaiSecurity_classification_level_get_extents(); + + SdaiApproval_relationship__set_var SdaiApproval_relationship_get_extents(); + + SdaiPolyline__set_var SdaiPolyline_get_extents(); + + SdaiApproval_person_organization__set_var SdaiApproval_person_organization_get_extents(); + + SdaiSurface_replica__set_var SdaiSurface_replica_get_extents(); + + SdaiSecurity_classification_assignment__set_var SdaiSecurity_classification_assignment_get_extents(); + + SdaiCc_design_security_classification__set_var SdaiCc_design_security_classification_get_extents(); + + SdaiFaceted_brep_shape_representation__set_var SdaiFaceted_brep_shape_representation_get_extents(); + + SdaiDocument_usage_constraint__set_var SdaiDocument_usage_constraint_get_extents(); + + SdaiVertex_point__set_var SdaiVertex_point_get_extents(); + + SdaiCc_design_date_and_time_assignment__set_var SdaiCc_design_date_and_time_assignment_get_extents(); + + SdaiOriented_closed_shell__set_var SdaiOriented_closed_shell_get_extents(); + + SdaiPerson_and_organization__set_var SdaiPerson_and_organization_get_extents(); + + SdaiCylindrical_surface__set_var SdaiCylindrical_surface_get_extents(); + + SdaiLocal_time__set_var SdaiLocal_time_get_extents(); + + SdaiMass_unit__set_var SdaiMass_unit_get_extents(); + + SdaiVertex_shell__set_var SdaiVertex_shell_get_extents(); + + SdaiPoly_loop__set_var SdaiPoly_loop_get_extents(); + + SdaiWire_shell__set_var SdaiWire_shell_get_extents(); + + SdaiArea_unit__set_var SdaiArea_unit_get_extents(); + + SdaiMapped_item__set_var SdaiMapped_item_get_extents(); + + SdaiOffset_curve_2d__set_var SdaiOffset_curve_2d_get_extents(); + + SdaiShape_definition_representation__set_var SdaiShape_definition_representation_get_extents(); + + SdaiVolume_unit__set_var SdaiVolume_unit_get_extents(); + + SdaiConical_surface__set_var SdaiConical_surface_get_extents(); + + SdaiGlobal_unit_assigned_context__set_var SdaiGlobal_unit_assigned_context_get_extents(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif + +}; + + +typedef SdaiModel_contents_config_control_design * SdaiModel_contents_config_control_design_ptr; +typedef SdaiModel_contents_config_control_design_ptr SdaiModel_contents_config_control_design_var; + +#ifdef __OSTORE__ +SCLP23(Model_contents_ptr) create_SdaiModel_contents_config_control_design(os_database *db); +#else +SCLP23(Model_contents_ptr) create_SdaiModel_contents_config_control_design(); +#endif #endif diff --git a/source/geometry/solids/STEP/include/Sdaiclasses.h b/source/geometry/solids/STEP/include/Sdaiclasses.h new file mode 100644 index 0000000000..5b2e91d929 --- /dev/null +++ b/source/geometry/solids/STEP/include/Sdaiclasses.h @@ -0,0 +1,2266 @@ +#ifndef SDAICLASSES_H +#define SDAICLASSES_H +// 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: Sdaiclasses.h,v 1.1 2000/01/21 13:42:36 gcosmo Exp $ */ +#include + +// Schema: SdaiCONFIG_CONTROL_DESIGN +extern Schema * s_config_control_design; + +// Types: +class SdaiCharacterized_definition; +typedef SdaiCharacterized_definition * SdaiCharacterized_definition_ptr; +class SdaiCharacterized_definitions; +typedef SdaiCharacterized_definitions * SdaiCharacterized_definitions_ptr; +extern SelectTypeDescriptor *config_control_designt_characterized_definition; +typedef SCLP23(Real) SdaiParameter_value; +extern TypeDescriptor *config_control_designt_parameter_value; +typedef SCLP23(Real) SdaiPlane_angle_measure; +extern TypeDescriptor *config_control_designt_plane_angle_measure; +class SdaiChange_request_item; +typedef SdaiChange_request_item * SdaiChange_request_item_ptr; +class SdaiChange_request_items; +typedef SdaiChange_request_items * SdaiChange_request_items_ptr; +extern SelectTypeDescriptor *config_control_designt_change_request_item; +typedef SCLP23(String) SdaiText; +extern TypeDescriptor *config_control_designt_text; +typedef SCLP23(Integer) SdaiYear_number; +extern TypeDescriptor *config_control_designt_year_number; +class SdaiCharacterized_product_definition; +typedef SdaiCharacterized_product_definition * SdaiCharacterized_product_definition_ptr; +class SdaiCharacterized_product_definitions; +typedef SdaiCharacterized_product_definitions * SdaiCharacterized_product_definitions_ptr; +extern SelectTypeDescriptor *config_control_designt_characterized_product_definition; +class SdaiReversible_topology_item; +typedef SdaiReversible_topology_item * SdaiReversible_topology_item_ptr; +class SdaiReversible_topology_items; +typedef SdaiReversible_topology_items * SdaiReversible_topology_items_ptr; +extern SelectTypeDescriptor *config_control_designt_reversible_topology_item; +class SdaiAxis2_placement; +typedef SdaiAxis2_placement * SdaiAxis2_placement_ptr; +class SdaiAxis2_placements; +typedef SdaiAxis2_placements * SdaiAxis2_placements_ptr; +extern SelectTypeDescriptor *config_control_designt_axis2_placement; +extern SetTypeDescriptor *config_control_designt_set_of_reversible_topology_item; +typedef SCLP23(Integer) SdaiWeek_in_year_number; +extern TypeDescriptor *config_control_designt_week_in_year_number; +class SdaiKnot_type_vars; +extern EnumTypeDescriptor *config_control_designt_knot_type; +class SdaiSpecified_item; +typedef SdaiSpecified_item * SdaiSpecified_item_ptr; +class SdaiSpecified_items; +typedef SdaiSpecified_items * SdaiSpecified_items_ptr; +extern SelectTypeDescriptor *config_control_designt_specified_item; +typedef SCLP23(Integer) SdaiMinute_in_hour; +extern TypeDescriptor *config_control_designt_minute_in_hour; +class SdaiTransition_code_vars; +extern EnumTypeDescriptor *config_control_designt_transition_code; +typedef SCLP23(String) SdaiIdentifier; +extern TypeDescriptor *config_control_designt_identifier; +class SdaiMeasure_value; +typedef SdaiMeasure_value * SdaiMeasure_value_ptr; +class SdaiMeasure_values; +typedef SdaiMeasure_values * SdaiMeasure_values_ptr; +extern SelectTypeDescriptor *config_control_designt_measure_value; +class SdaiPerson_organization_select; +typedef SdaiPerson_organization_select * SdaiPerson_organization_select_ptr; +class SdaiPerson_organization_selects; +typedef SdaiPerson_organization_selects * SdaiPerson_organization_selects_ptr; +extern SelectTypeDescriptor *config_control_designt_person_organization_select; +class SdaiPreferred_surface_curve_representation_vars; +extern EnumTypeDescriptor *config_control_designt_preferred_surface_curve_representation; +typedef SCLP23(Integer) SdaiDimension_count; +extern TypeDescriptor *config_control_designt_dimension_count; +class SdaiPcurve_or_surface; +typedef SdaiPcurve_or_surface * SdaiPcurve_or_surface_ptr; +class SdaiPcurve_or_surfaces; +typedef SdaiPcurve_or_surfaces * SdaiPcurve_or_surfaces_ptr; +extern SelectTypeDescriptor *config_control_designt_pcurve_or_surface; +typedef SCLP23(Real) SdaiPositive_length_measure; +extern TypeDescriptor *config_control_designt_positive_length_measure; +class SdaiB_spline_curve_form_vars; +extern EnumTypeDescriptor *config_control_designt_b_spline_curve_form; +typedef SCLP23(Integer) SdaiHour_in_day; +extern TypeDescriptor *config_control_designt_hour_in_day; +class SdaiClassified_item; +typedef SdaiClassified_item * SdaiClassified_item_ptr; +class SdaiClassified_items; +typedef SdaiClassified_items * SdaiClassified_items_ptr; +extern SelectTypeDescriptor *config_control_designt_classified_item; +class SdaiSi_unit_name_vars; +extern EnumTypeDescriptor *config_control_designt_si_unit_name; +typedef SCLP23(Integer) SdaiDay_in_month_number; +extern TypeDescriptor *config_control_designt_day_in_month_number; +class SdaiTrimming_preference_vars; +extern EnumTypeDescriptor *config_control_designt_trimming_preference; +class SdaiVector_or_direction; +typedef SdaiVector_or_direction * SdaiVector_or_direction_ptr; +class SdaiVector_or_directions; +typedef SdaiVector_or_directions * SdaiVector_or_directions_ptr; +extern SelectTypeDescriptor *config_control_designt_vector_or_direction; +class SdaiWireframe_model; +typedef SdaiWireframe_model * SdaiWireframe_model_ptr; +class SdaiWireframe_models; +typedef SdaiWireframe_models * SdaiWireframe_models_ptr; +extern SelectTypeDescriptor *config_control_designt_wireframe_model; +typedef SCLP23(Real) SdaiVolume_measure; +extern TypeDescriptor *config_control_designt_volume_measure; +class SdaiGeometric_set_select; +typedef SdaiGeometric_set_select * SdaiGeometric_set_select_ptr; +class SdaiGeometric_set_selects; +typedef SdaiGeometric_set_selects * SdaiGeometric_set_selects_ptr; +extern SelectTypeDescriptor *config_control_designt_geometric_set_select; +typedef SCLP23(Real) SdaiPositive_plane_angle_measure; +extern TypeDescriptor *config_control_designt_positive_plane_angle_measure; +class SdaiStart_request_item; +typedef SdaiStart_request_item * SdaiStart_request_item_ptr; +class SdaiStart_request_items; +typedef SdaiStart_request_items * SdaiStart_request_items_ptr; +extern SelectTypeDescriptor *config_control_designt_start_request_item; +class SdaiB_spline_surface_form_vars; +extern EnumTypeDescriptor *config_control_designt_b_spline_surface_form; +class SdaiPerson_organization_item; +typedef SdaiPerson_organization_item * SdaiPerson_organization_item_ptr; +class SdaiPerson_organization_items; +typedef SdaiPerson_organization_items * SdaiPerson_organization_items_ptr; +extern SelectTypeDescriptor *config_control_designt_person_organization_item; +class SdaiDate_time_item; +typedef SdaiDate_time_item * SdaiDate_time_item_ptr; +class SdaiDate_time_items; +typedef SdaiDate_time_items * SdaiDate_time_items_ptr; +extern SelectTypeDescriptor *config_control_designt_date_time_item; +class SdaiShell; +typedef SdaiShell * SdaiShell_ptr; +class SdaiShells; +typedef SdaiShells * SdaiShells_ptr; +extern SelectTypeDescriptor *config_control_designt_shell; +class SdaiTransformation; +typedef SdaiTransformation * SdaiTransformation_ptr; +class SdaiTransformations; +typedef SdaiTransformations * SdaiTransformations_ptr; +extern SelectTypeDescriptor *config_control_designt_transformation; +typedef SCLP23(Integer) SdaiDay_in_week_number; +extern TypeDescriptor *config_control_designt_day_in_week_number; +class SdaiBoolean_operand; +typedef SdaiBoolean_operand * SdaiBoolean_operand_ptr; +class SdaiBoolean_operands; +typedef SdaiBoolean_operands * SdaiBoolean_operands_ptr; +extern SelectTypeDescriptor *config_control_designt_boolean_operand; +class SdaiCertified_item; +typedef SdaiCertified_item * SdaiCertified_item_ptr; +class SdaiCertified_items; +typedef SdaiCertified_items * SdaiCertified_items_ptr; +extern SelectTypeDescriptor *config_control_designt_certified_item; +class SdaiDate_time_select; +typedef SdaiDate_time_select * SdaiDate_time_select_ptr; +class SdaiDate_time_selects; +typedef SdaiDate_time_selects * SdaiDate_time_selects_ptr; +extern SelectTypeDescriptor *config_control_designt_date_time_select; +typedef SCLP23(Real) SdaiSolid_angle_measure; +extern TypeDescriptor *config_control_designt_solid_angle_measure; +class SdaiCurve_on_surface; +typedef SdaiCurve_on_surface * SdaiCurve_on_surface_ptr; +class SdaiCurve_on_surfaces; +typedef SdaiCurve_on_surfaces * SdaiCurve_on_surfaces_ptr; +extern SelectTypeDescriptor *config_control_designt_curve_on_surface; +class SdaiTrimming_select; +typedef SdaiTrimming_select * SdaiTrimming_select_ptr; +class SdaiTrimming_selects; +typedef SdaiTrimming_selects * SdaiTrimming_selects_ptr; +extern SelectTypeDescriptor *config_control_designt_trimming_select; +class SdaiAhead_or_behind_vars; +extern EnumTypeDescriptor *config_control_designt_ahead_or_behind; +class SdaiContracted_item; +typedef SdaiContracted_item * SdaiContracted_item_ptr; +class SdaiContracted_items; +typedef SdaiContracted_items * SdaiContracted_items_ptr; +extern SelectTypeDescriptor *config_control_designt_contracted_item; +typedef SCLP23(Integer) SdaiDay_in_year_number; +extern TypeDescriptor *config_control_designt_day_in_year_number; +typedef SCLP23(Real) SdaiMass_measure; +extern TypeDescriptor *config_control_designt_mass_measure; +typedef SCLP23(String) SdaiDescriptive_measure; +extern TypeDescriptor *config_control_designt_descriptive_measure; +typedef SCLP23(Real) SdaiArea_measure; +extern TypeDescriptor *config_control_designt_area_measure; +typedef SCLP23(Integer) SdaiMonth_in_year_number; +extern TypeDescriptor *config_control_designt_month_in_year_number; +class SdaiSource_vars; +extern EnumTypeDescriptor *config_control_designt_source; +class SdaiUnit; +typedef SdaiUnit * SdaiUnit_ptr; +class SdaiUnits; +typedef SdaiUnits * SdaiUnits_ptr; +extern SelectTypeDescriptor *config_control_designt_unit; +class SdaiReversible_topology; +typedef SdaiReversible_topology * SdaiReversible_topology_ptr; +class SdaiReversible_topologys; +typedef SdaiReversible_topologys * SdaiReversible_topologys_ptr; +extern SelectTypeDescriptor *config_control_designt_reversible_topology; +class SdaiWork_item; +typedef SdaiWork_item * SdaiWork_item_ptr; +class SdaiWork_items; +typedef SdaiWork_items * SdaiWork_items_ptr; +extern SelectTypeDescriptor *config_control_designt_work_item; +class SdaiShape_definition; +typedef SdaiShape_definition * SdaiShape_definition_ptr; +class SdaiShape_definitions; +typedef SdaiShape_definitions * SdaiShape_definitions_ptr; +extern SelectTypeDescriptor *config_control_designt_shape_definition; +typedef SCLP23(Real) SdaiSecond_in_minute; +extern TypeDescriptor *config_control_designt_second_in_minute; +typedef SCLP23(String) SdaiLabel; +extern TypeDescriptor *config_control_designt_label; +typedef SCLP23(Real) SdaiContext_dependent_measure; +extern TypeDescriptor *config_control_designt_context_dependent_measure; +class SdaiSupported_item; +typedef SdaiSupported_item * SdaiSupported_item_ptr; +class SdaiSupported_items; +typedef SdaiSupported_items * SdaiSupported_items_ptr; +extern SelectTypeDescriptor *config_control_designt_supported_item; +class SdaiSi_prefix_vars; +extern EnumTypeDescriptor *config_control_designt_si_prefix; +typedef SCLP23(Real) SdaiLength_measure; +extern TypeDescriptor *config_control_designt_length_measure; +class SdaiApproved_item; +typedef SdaiApproved_item * SdaiApproved_item_ptr; +class SdaiApproved_items; +typedef SdaiApproved_items * SdaiApproved_items_ptr; +extern SelectTypeDescriptor *config_control_designt_approved_item; +typedef SCLP23(Real) SdaiCount_measure; +extern TypeDescriptor *config_control_designt_count_measure; +class SdaiSurface_model; +typedef SdaiSurface_model * SdaiSurface_model_ptr; +class SdaiSurface_models; +typedef SdaiSurface_models * SdaiSurface_models_ptr; +extern SelectTypeDescriptor *config_control_designt_surface_model; +extern ListTypeDescriptor *config_control_designt_list_of_reversible_topology_item; + +// Entities: +class SdaiRepresentation_item; +typedef SdaiRepresentation_item * SdaiRepresentation_itemH; +typedef SdaiRepresentation_item * SdaiRepresentation_item_ptr; +typedef SdaiRepresentation_item_ptr SdaiRepresentation_item_var; +#define SdaiRepresentation_item__set SCLP23(DAObject__set) +#define SdaiRepresentation_item__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_representation_item; + +class SdaiGeometric_representation_item; +typedef SdaiGeometric_representation_item * SdaiGeometric_representation_itemH; +typedef SdaiGeometric_representation_item * SdaiGeometric_representation_item_ptr; +typedef SdaiGeometric_representation_item_ptr SdaiGeometric_representation_item_var; +#define SdaiGeometric_representation_item__set SCLP23(DAObject__set) +#define SdaiGeometric_representation_item__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_geometric_representation_item; + +class SdaiFunctionally_defined_transformation; +typedef SdaiFunctionally_defined_transformation * SdaiFunctionally_defined_transformationH; +typedef SdaiFunctionally_defined_transformation * SdaiFunctionally_defined_transformation_ptr; +typedef SdaiFunctionally_defined_transformation_ptr SdaiFunctionally_defined_transformation_var; +#define SdaiFunctionally_defined_transformation__set SCLP23(DAObject__set) +#define SdaiFunctionally_defined_transformation__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_functionally_defined_transformation; + +class SdaiCartesian_transformation_operator; +typedef SdaiCartesian_transformation_operator * SdaiCartesian_transformation_operatorH; +typedef SdaiCartesian_transformation_operator * SdaiCartesian_transformation_operator_ptr; +typedef SdaiCartesian_transformation_operator_ptr SdaiCartesian_transformation_operator_var; +#define SdaiCartesian_transformation_operator__set SCLP23(DAObject__set) +#define SdaiCartesian_transformation_operator__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_cartesian_transformation_operator; + +class SdaiCartesian_transformation_operator_3d; +typedef SdaiCartesian_transformation_operator_3d * SdaiCartesian_transformation_operator_3dH; +typedef SdaiCartesian_transformation_operator_3d * SdaiCartesian_transformation_operator_3d_ptr; +typedef SdaiCartesian_transformation_operator_3d_ptr SdaiCartesian_transformation_operator_3d_var; +#define SdaiCartesian_transformation_operator_3d__set SCLP23(DAObject__set) +#define SdaiCartesian_transformation_operator_3d__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_cartesian_transformation_operator_3d; + +class SdaiVersioned_action_request; +typedef SdaiVersioned_action_request * SdaiVersioned_action_requestH; +typedef SdaiVersioned_action_request * SdaiVersioned_action_request_ptr; +typedef SdaiVersioned_action_request_ptr SdaiVersioned_action_request_var; +#define SdaiVersioned_action_request__set SCLP23(DAObject__set) +#define SdaiVersioned_action_request__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_versioned_action_request; + +class SdaiRepresentation; +typedef SdaiRepresentation * SdaiRepresentationH; +typedef SdaiRepresentation * SdaiRepresentation_ptr; +typedef SdaiRepresentation_ptr SdaiRepresentation_var; +#define SdaiRepresentation__set SCLP23(DAObject__set) +#define SdaiRepresentation__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_representation; + +class SdaiShape_representation; +typedef SdaiShape_representation * SdaiShape_representationH; +typedef SdaiShape_representation * SdaiShape_representation_ptr; +typedef SdaiShape_representation_ptr SdaiShape_representation_var; +#define SdaiShape_representation__set SCLP23(DAObject__set) +#define SdaiShape_representation__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_shape_representation; + +class SdaiManifold_surface_shape_representation; +typedef SdaiManifold_surface_shape_representation * SdaiManifold_surface_shape_representationH; +typedef SdaiManifold_surface_shape_representation * SdaiManifold_surface_shape_representation_ptr; +typedef SdaiManifold_surface_shape_representation_ptr SdaiManifold_surface_shape_representation_var; +#define SdaiManifold_surface_shape_representation__set SCLP23(DAObject__set) +#define SdaiManifold_surface_shape_representation__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_manifold_surface_shape_representation; + +class SdaiCertification; +typedef SdaiCertification * SdaiCertificationH; +typedef SdaiCertification * SdaiCertification_ptr; +typedef SdaiCertification_ptr SdaiCertification_var; +#define SdaiCertification__set SCLP23(DAObject__set) +#define SdaiCertification__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_certification; + +class SdaiProduct_definition_relationship; +typedef SdaiProduct_definition_relationship * SdaiProduct_definition_relationshipH; +typedef SdaiProduct_definition_relationship * SdaiProduct_definition_relationship_ptr; +typedef SdaiProduct_definition_relationship_ptr SdaiProduct_definition_relationship_var; +#define SdaiProduct_definition_relationship__set SCLP23(DAObject__set) +#define SdaiProduct_definition_relationship__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_product_definition_relationship; + +class SdaiProduct_definition_usage; +typedef SdaiProduct_definition_usage * SdaiProduct_definition_usageH; +typedef SdaiProduct_definition_usage * SdaiProduct_definition_usage_ptr; +typedef SdaiProduct_definition_usage_ptr SdaiProduct_definition_usage_var; +#define SdaiProduct_definition_usage__set SCLP23(DAObject__set) +#define SdaiProduct_definition_usage__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_product_definition_usage; + +class SdaiAssembly_component_usage; +typedef SdaiAssembly_component_usage * SdaiAssembly_component_usageH; +typedef SdaiAssembly_component_usage * SdaiAssembly_component_usage_ptr; +typedef SdaiAssembly_component_usage_ptr SdaiAssembly_component_usage_var; +#define SdaiAssembly_component_usage__set SCLP23(DAObject__set) +#define SdaiAssembly_component_usage__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_assembly_component_usage; + +class SdaiQuantified_assembly_component_usage; +typedef SdaiQuantified_assembly_component_usage * SdaiQuantified_assembly_component_usageH; +typedef SdaiQuantified_assembly_component_usage * SdaiQuantified_assembly_component_usage_ptr; +typedef SdaiQuantified_assembly_component_usage_ptr SdaiQuantified_assembly_component_usage_var; +#define SdaiQuantified_assembly_component_usage__set SCLP23(DAObject__set) +#define SdaiQuantified_assembly_component_usage__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_quantified_assembly_component_usage; + +class SdaiSolid_model; +typedef SdaiSolid_model * SdaiSolid_modelH; +typedef SdaiSolid_model * SdaiSolid_model_ptr; +typedef SdaiSolid_model_ptr SdaiSolid_model_var; +#define SdaiSolid_model__set SCLP23(DAObject__set) +#define SdaiSolid_model__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_solid_model; + +class SdaiManifold_solid_brep; +typedef SdaiManifold_solid_brep * SdaiManifold_solid_brepH; +typedef SdaiManifold_solid_brep * SdaiManifold_solid_brep_ptr; +typedef SdaiManifold_solid_brep_ptr SdaiManifold_solid_brep_var; +#define SdaiManifold_solid_brep__set SCLP23(DAObject__set) +#define SdaiManifold_solid_brep__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_manifold_solid_brep; + +class SdaiFaceted_brep; +typedef SdaiFaceted_brep * SdaiFaceted_brepH; +typedef SdaiFaceted_brep * SdaiFaceted_brep_ptr; +typedef SdaiFaceted_brep_ptr SdaiFaceted_brep_var; +#define SdaiFaceted_brep__set SCLP23(DAObject__set) +#define SdaiFaceted_brep__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_faceted_brep; + +class SdaiAction_directive; +typedef SdaiAction_directive * SdaiAction_directiveH; +typedef SdaiAction_directive * SdaiAction_directive_ptr; +typedef SdaiAction_directive_ptr SdaiAction_directive_var; +#define SdaiAction_directive__set SCLP23(DAObject__set) +#define SdaiAction_directive__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_action_directive; + +class SdaiNamed_unit; +typedef SdaiNamed_unit * SdaiNamed_unitH; +typedef SdaiNamed_unit * SdaiNamed_unit_ptr; +typedef SdaiNamed_unit_ptr SdaiNamed_unit_var; +#define SdaiNamed_unit__set SCLP23(DAObject__set) +#define SdaiNamed_unit__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_named_unit; + +class SdaiPlane_angle_unit; +typedef SdaiPlane_angle_unit * SdaiPlane_angle_unitH; +typedef SdaiPlane_angle_unit * SdaiPlane_angle_unit_ptr; +typedef SdaiPlane_angle_unit_ptr SdaiPlane_angle_unit_var; +#define SdaiPlane_angle_unit__set SCLP23(DAObject__set) +#define SdaiPlane_angle_unit__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_plane_angle_unit; + +class SdaiMeasure_with_unit; +typedef SdaiMeasure_with_unit * SdaiMeasure_with_unitH; +typedef SdaiMeasure_with_unit * SdaiMeasure_with_unit_ptr; +typedef SdaiMeasure_with_unit_ptr SdaiMeasure_with_unit_var; +#define SdaiMeasure_with_unit__set SCLP23(DAObject__set) +#define SdaiMeasure_with_unit__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_measure_with_unit; + +class SdaiArea_measure_with_unit; +typedef SdaiArea_measure_with_unit * SdaiArea_measure_with_unitH; +typedef SdaiArea_measure_with_unit * SdaiArea_measure_with_unit_ptr; +typedef SdaiArea_measure_with_unit_ptr SdaiArea_measure_with_unit_var; +#define SdaiArea_measure_with_unit__set SCLP23(DAObject__set) +#define SdaiArea_measure_with_unit__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_area_measure_with_unit; + +class SdaiEffectivity; +typedef SdaiEffectivity * SdaiEffectivityH; +typedef SdaiEffectivity * SdaiEffectivity_ptr; +typedef SdaiEffectivity_ptr SdaiEffectivity_var; +#define SdaiEffectivity__set SCLP23(DAObject__set) +#define SdaiEffectivity__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_effectivity; + +class SdaiSerial_numbered_effectivity; +typedef SdaiSerial_numbered_effectivity * SdaiSerial_numbered_effectivityH; +typedef SdaiSerial_numbered_effectivity * SdaiSerial_numbered_effectivity_ptr; +typedef SdaiSerial_numbered_effectivity_ptr SdaiSerial_numbered_effectivity_var; +#define SdaiSerial_numbered_effectivity__set SCLP23(DAObject__set) +#define SdaiSerial_numbered_effectivity__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_serial_numbered_effectivity; + +class SdaiSurface; +typedef SdaiSurface * SdaiSurfaceH; +typedef SdaiSurface * SdaiSurface_ptr; +typedef SdaiSurface_ptr SdaiSurface_var; +#define SdaiSurface__set SCLP23(DAObject__set) +#define SdaiSurface__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_surface; + +class SdaiOffset_surface; +typedef SdaiOffset_surface * SdaiOffset_surfaceH; +typedef SdaiOffset_surface * SdaiOffset_surface_ptr; +typedef SdaiOffset_surface_ptr SdaiOffset_surface_var; +#define SdaiOffset_surface__set SCLP23(DAObject__set) +#define SdaiOffset_surface__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_offset_surface; + +class SdaiPlacement; +typedef SdaiPlacement * SdaiPlacementH; +typedef SdaiPlacement * SdaiPlacement_ptr; +typedef SdaiPlacement_ptr SdaiPlacement_var; +#define SdaiPlacement__set SCLP23(DAObject__set) +#define SdaiPlacement__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_placement; + +class SdaiAxis2_placement_2d; +typedef SdaiAxis2_placement_2d * SdaiAxis2_placement_2dH; +typedef SdaiAxis2_placement_2d * SdaiAxis2_placement_2d_ptr; +typedef SdaiAxis2_placement_2d_ptr SdaiAxis2_placement_2d_var; +#define SdaiAxis2_placement_2d__set SCLP23(DAObject__set) +#define SdaiAxis2_placement_2d__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_axis2_placement_2d; + +class SdaiProduct_category; +typedef SdaiProduct_category * SdaiProduct_categoryH; +typedef SdaiProduct_category * SdaiProduct_category_ptr; +typedef SdaiProduct_category_ptr SdaiProduct_category_var; +#define SdaiProduct_category__set SCLP23(DAObject__set) +#define SdaiProduct_category__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_product_category; + +class SdaiProduct_related_product_category; +typedef SdaiProduct_related_product_category * SdaiProduct_related_product_categoryH; +typedef SdaiProduct_related_product_category * SdaiProduct_related_product_category_ptr; +typedef SdaiProduct_related_product_category_ptr SdaiProduct_related_product_category_var; +#define SdaiProduct_related_product_category__set SCLP23(DAObject__set) +#define SdaiProduct_related_product_category__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_product_related_product_category; + +class SdaiCurve; +typedef SdaiCurve * SdaiCurveH; +typedef SdaiCurve * SdaiCurve_ptr; +typedef SdaiCurve_ptr SdaiCurve_var; +#define SdaiCurve__set SCLP23(DAObject__set) +#define SdaiCurve__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_curve; + +class SdaiConic; +typedef SdaiConic * SdaiConicH; +typedef SdaiConic * SdaiConic_ptr; +typedef SdaiConic_ptr SdaiConic_var; +#define SdaiConic__set SCLP23(DAObject__set) +#define SdaiConic__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_conic; + +class SdaiHyperbola; +typedef SdaiHyperbola * SdaiHyperbolaH; +typedef SdaiHyperbola * SdaiHyperbola_ptr; +typedef SdaiHyperbola_ptr SdaiHyperbola_var; +#define SdaiHyperbola__set SCLP23(DAObject__set) +#define SdaiHyperbola__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_hyperbola; + +class SdaiAddress; +typedef SdaiAddress * SdaiAddressH; +typedef SdaiAddress * SdaiAddress_ptr; +typedef SdaiAddress_ptr SdaiAddress_var; +#define SdaiAddress__set SCLP23(DAObject__set) +#define SdaiAddress__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_address; + +class SdaiOrganizational_address; +typedef SdaiOrganizational_address * SdaiOrganizational_addressH; +typedef SdaiOrganizational_address * SdaiOrganizational_address_ptr; +typedef SdaiOrganizational_address_ptr SdaiOrganizational_address_var; +#define SdaiOrganizational_address__set SCLP23(DAObject__set) +#define SdaiOrganizational_address__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_organizational_address; + +class SdaiBounded_surface; +typedef SdaiBounded_surface * SdaiBounded_surfaceH; +typedef SdaiBounded_surface * SdaiBounded_surface_ptr; +typedef SdaiBounded_surface_ptr SdaiBounded_surface_var; +#define SdaiBounded_surface__set SCLP23(DAObject__set) +#define SdaiBounded_surface__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_bounded_surface; + +class SdaiB_spline_surface; +typedef SdaiB_spline_surface * SdaiB_spline_surfaceH; +typedef SdaiB_spline_surface * SdaiB_spline_surface_ptr; +typedef SdaiB_spline_surface_ptr SdaiB_spline_surface_var; +#define SdaiB_spline_surface__set SCLP23(DAObject__set) +#define SdaiB_spline_surface__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_b_spline_surface; + +class SdaiUniform_surface; +typedef SdaiUniform_surface * SdaiUniform_surfaceH; +typedef SdaiUniform_surface * SdaiUniform_surface_ptr; +typedef SdaiUniform_surface_ptr SdaiUniform_surface_var; +#define SdaiUniform_surface__set SCLP23(DAObject__set) +#define SdaiUniform_surface__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_uniform_surface; + +class SdaiGeometrically_bounded_surface_shape_representation; +typedef SdaiGeometrically_bounded_surface_shape_representation * SdaiGeometrically_bounded_surface_shape_representationH; +typedef SdaiGeometrically_bounded_surface_shape_representation * SdaiGeometrically_bounded_surface_shape_representation_ptr; +typedef SdaiGeometrically_bounded_surface_shape_representation_ptr SdaiGeometrically_bounded_surface_shape_representation_var; +#define SdaiGeometrically_bounded_surface_shape_representation__set SCLP23(DAObject__set) +#define SdaiGeometrically_bounded_surface_shape_representation__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_geometrically_bounded_surface_shape_representation; + +class SdaiAxis1_placement; +typedef SdaiAxis1_placement * SdaiAxis1_placementH; +typedef SdaiAxis1_placement * SdaiAxis1_placement_ptr; +typedef SdaiAxis1_placement_ptr SdaiAxis1_placement_var; +#define SdaiAxis1_placement__set SCLP23(DAObject__set) +#define SdaiAxis1_placement__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_axis1_placement; + +class SdaiBounded_curve; +typedef SdaiBounded_curve * SdaiBounded_curveH; +typedef SdaiBounded_curve * SdaiBounded_curve_ptr; +typedef SdaiBounded_curve_ptr SdaiBounded_curve_var; +#define SdaiBounded_curve__set SCLP23(DAObject__set) +#define SdaiBounded_curve__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_bounded_curve; + +class SdaiB_spline_curve; +typedef SdaiB_spline_curve * SdaiB_spline_curveH; +typedef SdaiB_spline_curve * SdaiB_spline_curve_ptr; +typedef SdaiB_spline_curve_ptr SdaiB_spline_curve_var; +#define SdaiB_spline_curve__set SCLP23(DAObject__set) +#define SdaiB_spline_curve__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_b_spline_curve; + +class SdaiRational_b_spline_curve; +typedef SdaiRational_b_spline_curve * SdaiRational_b_spline_curveH; +typedef SdaiRational_b_spline_curve * SdaiRational_b_spline_curve_ptr; +typedef SdaiRational_b_spline_curve_ptr SdaiRational_b_spline_curve_var; +#define SdaiRational_b_spline_curve__set SCLP23(DAObject__set) +#define SdaiRational_b_spline_curve__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_rational_b_spline_curve; + +class SdaiAction_request_assignment; +typedef SdaiAction_request_assignment * SdaiAction_request_assignmentH; +typedef SdaiAction_request_assignment * SdaiAction_request_assignment_ptr; +typedef SdaiAction_request_assignment_ptr SdaiAction_request_assignment_var; +#define SdaiAction_request_assignment__set SCLP23(DAObject__set) +#define SdaiAction_request_assignment__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_action_request_assignment; + +class SdaiTopological_representation_item; +typedef SdaiTopological_representation_item * SdaiTopological_representation_itemH; +typedef SdaiTopological_representation_item * SdaiTopological_representation_item_ptr; +typedef SdaiTopological_representation_item_ptr SdaiTopological_representation_item_var; +#define SdaiTopological_representation_item__set SCLP23(DAObject__set) +#define SdaiTopological_representation_item__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_topological_representation_item; + +class SdaiFace_bound; +typedef SdaiFace_bound * SdaiFace_boundH; +typedef SdaiFace_bound * SdaiFace_bound_ptr; +typedef SdaiFace_bound_ptr SdaiFace_bound_var; +#define SdaiFace_bound__set SCLP23(DAObject__set) +#define SdaiFace_bound__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_face_bound; + +class SdaiLength_measure_with_unit; +typedef SdaiLength_measure_with_unit * SdaiLength_measure_with_unitH; +typedef SdaiLength_measure_with_unit * SdaiLength_measure_with_unit_ptr; +typedef SdaiLength_measure_with_unit_ptr SdaiLength_measure_with_unit_var; +#define SdaiLength_measure_with_unit__set SCLP23(DAObject__set) +#define SdaiLength_measure_with_unit__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_length_measure_with_unit; + +class SdaiDated_effectivity; +typedef SdaiDated_effectivity * SdaiDated_effectivityH; +typedef SdaiDated_effectivity * SdaiDated_effectivity_ptr; +typedef SdaiDated_effectivity_ptr SdaiDated_effectivity_var; +#define SdaiDated_effectivity__set SCLP23(DAObject__set) +#define SdaiDated_effectivity__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_dated_effectivity; + +class SdaiDirection; +typedef SdaiDirection * SdaiDirectionH; +typedef SdaiDirection * SdaiDirection_ptr; +typedef SdaiDirection_ptr SdaiDirection_var; +#define SdaiDirection__set SCLP23(DAObject__set) +#define SdaiDirection__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_direction; + +class SdaiNext_assembly_usage_occurrence; +typedef SdaiNext_assembly_usage_occurrence * SdaiNext_assembly_usage_occurrenceH; +typedef SdaiNext_assembly_usage_occurrence * SdaiNext_assembly_usage_occurrence_ptr; +typedef SdaiNext_assembly_usage_occurrence_ptr SdaiNext_assembly_usage_occurrence_var; +#define SdaiNext_assembly_usage_occurrence__set SCLP23(DAObject__set) +#define SdaiNext_assembly_usage_occurrence__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_next_assembly_usage_occurrence; + +class SdaiEdge; +typedef SdaiEdge * SdaiEdgeH; +typedef SdaiEdge * SdaiEdge_ptr; +typedef SdaiEdge_ptr SdaiEdge_var; +#define SdaiEdge__set SCLP23(DAObject__set) +#define SdaiEdge__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_edge; + +class SdaiOriented_edge; +typedef SdaiOriented_edge * SdaiOriented_edgeH; +typedef SdaiOriented_edge * SdaiOriented_edge_ptr; +typedef SdaiOriented_edge_ptr SdaiOriented_edge_var; +#define SdaiOriented_edge__set SCLP23(DAObject__set) +#define SdaiOriented_edge__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_oriented_edge; + +class SdaiPerson; +typedef SdaiPerson * SdaiPersonH; +typedef SdaiPerson * SdaiPerson_ptr; +typedef SdaiPerson_ptr SdaiPerson_var; +#define SdaiPerson__set SCLP23(DAObject__set) +#define SdaiPerson__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_person; + +class SdaiDocument; +typedef SdaiDocument * SdaiDocumentH; +typedef SdaiDocument * SdaiDocument_ptr; +typedef SdaiDocument_ptr SdaiDocument_var; +#define SdaiDocument__set SCLP23(DAObject__set) +#define SdaiDocument__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_document; + +class SdaiDocument_with_class; +typedef SdaiDocument_with_class * SdaiDocument_with_classH; +typedef SdaiDocument_with_class * SdaiDocument_with_class_ptr; +typedef SdaiDocument_with_class_ptr SdaiDocument_with_class_var; +#define SdaiDocument_with_class__set SCLP23(DAObject__set) +#define SdaiDocument_with_class__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_document_with_class; + +class SdaiConversion_based_unit; +typedef SdaiConversion_based_unit * SdaiConversion_based_unitH; +typedef SdaiConversion_based_unit * SdaiConversion_based_unit_ptr; +typedef SdaiConversion_based_unit_ptr SdaiConversion_based_unit_var; +#define SdaiConversion_based_unit__set SCLP23(DAObject__set) +#define SdaiConversion_based_unit__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_conversion_based_unit; + +class SdaiPoint; +typedef SdaiPoint * SdaiPointH; +typedef SdaiPoint * SdaiPoint_ptr; +typedef SdaiPoint_ptr SdaiPoint_var; +#define SdaiPoint__set SCLP23(DAObject__set) +#define SdaiPoint__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_point; + +class SdaiPoint_on_surface; +typedef SdaiPoint_on_surface * SdaiPoint_on_surfaceH; +typedef SdaiPoint_on_surface * SdaiPoint_on_surface_ptr; +typedef SdaiPoint_on_surface_ptr SdaiPoint_on_surface_var; +#define SdaiPoint_on_surface__set SCLP23(DAObject__set) +#define SdaiPoint_on_surface__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_point_on_surface; + +class SdaiProduct_definition_formation; +typedef SdaiProduct_definition_formation * SdaiProduct_definition_formationH; +typedef SdaiProduct_definition_formation * SdaiProduct_definition_formation_ptr; +typedef SdaiProduct_definition_formation_ptr SdaiProduct_definition_formation_var; +#define SdaiProduct_definition_formation__set SCLP23(DAObject__set) +#define SdaiProduct_definition_formation__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_product_definition_formation; + +class SdaiPerson_and_organization_assignment; +typedef SdaiPerson_and_organization_assignment * SdaiPerson_and_organization_assignmentH; +typedef SdaiPerson_and_organization_assignment * SdaiPerson_and_organization_assignment_ptr; +typedef SdaiPerson_and_organization_assignment_ptr SdaiPerson_and_organization_assignment_var; +#define SdaiPerson_and_organization_assignment__set SCLP23(DAObject__set) +#define SdaiPerson_and_organization_assignment__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_person_and_organization_assignment; + +class SdaiCc_design_person_and_organization_assignment; +typedef SdaiCc_design_person_and_organization_assignment * SdaiCc_design_person_and_organization_assignmentH; +typedef SdaiCc_design_person_and_organization_assignment * SdaiCc_design_person_and_organization_assignment_ptr; +typedef SdaiCc_design_person_and_organization_assignment_ptr SdaiCc_design_person_and_organization_assignment_var; +#define SdaiCc_design_person_and_organization_assignment__set SCLP23(DAObject__set) +#define SdaiCc_design_person_and_organization_assignment__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_cc_design_person_and_organization_assignment; + +class SdaiOffset_curve_3d; +typedef SdaiOffset_curve_3d * SdaiOffset_curve_3dH; +typedef SdaiOffset_curve_3d * SdaiOffset_curve_3d_ptr; +typedef SdaiOffset_curve_3d_ptr SdaiOffset_curve_3d_var; +#define SdaiOffset_curve_3d__set SCLP23(DAObject__set) +#define SdaiOffset_curve_3d__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_offset_curve_3d; + +class SdaiApproval; +typedef SdaiApproval * SdaiApprovalH; +typedef SdaiApproval * SdaiApproval_ptr; +typedef SdaiApproval_ptr SdaiApproval_var; +#define SdaiApproval__set SCLP23(DAObject__set) +#define SdaiApproval__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_approval; + +class SdaiComposite_curve; +typedef SdaiComposite_curve * SdaiComposite_curveH; +typedef SdaiComposite_curve * SdaiComposite_curve_ptr; +typedef SdaiComposite_curve_ptr SdaiComposite_curve_var; +#define SdaiComposite_curve__set SCLP23(DAObject__set) +#define SdaiComposite_curve__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_composite_curve; + +class SdaiComposite_curve_on_surface; +typedef SdaiComposite_curve_on_surface * SdaiComposite_curve_on_surfaceH; +typedef SdaiComposite_curve_on_surface * SdaiComposite_curve_on_surface_ptr; +typedef SdaiComposite_curve_on_surface_ptr SdaiComposite_curve_on_surface_var; +#define SdaiComposite_curve_on_surface__set SCLP23(DAObject__set) +#define SdaiComposite_curve_on_surface__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_composite_curve_on_surface; + +class SdaiBoundary_curve; +typedef SdaiBoundary_curve * SdaiBoundary_curveH; +typedef SdaiBoundary_curve * SdaiBoundary_curve_ptr; +typedef SdaiBoundary_curve_ptr SdaiBoundary_curve_var; +#define SdaiBoundary_curve__set SCLP23(DAObject__set) +#define SdaiBoundary_curve__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_boundary_curve; + +class SdaiRepresentation_context; +typedef SdaiRepresentation_context * SdaiRepresentation_contextH; +typedef SdaiRepresentation_context * SdaiRepresentation_context_ptr; +typedef SdaiRepresentation_context_ptr SdaiRepresentation_context_var; +#define SdaiRepresentation_context__set SCLP23(DAObject__set) +#define SdaiRepresentation_context__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_representation_context; + +class SdaiGeometric_representation_context; +typedef SdaiGeometric_representation_context * SdaiGeometric_representation_contextH; +typedef SdaiGeometric_representation_context * SdaiGeometric_representation_context_ptr; +typedef SdaiGeometric_representation_context_ptr SdaiGeometric_representation_context_var; +#define SdaiGeometric_representation_context__set SCLP23(DAObject__set) +#define SdaiGeometric_representation_context__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_geometric_representation_context; + +class SdaiAction_status; +typedef SdaiAction_status * SdaiAction_statusH; +typedef SdaiAction_status * SdaiAction_status_ptr; +typedef SdaiAction_status_ptr SdaiAction_status_var; +#define SdaiAction_status__set SCLP23(DAObject__set) +#define SdaiAction_status__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_action_status; + +class SdaiApplication_context; +typedef SdaiApplication_context * SdaiApplication_contextH; +typedef SdaiApplication_context * SdaiApplication_context_ptr; +typedef SdaiApplication_context_ptr SdaiApplication_context_var; +#define SdaiApplication_context__set SCLP23(DAObject__set) +#define SdaiApplication_context__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_application_context; + +class SdaiChange_request; +typedef SdaiChange_request * SdaiChange_requestH; +typedef SdaiChange_request * SdaiChange_request_ptr; +typedef SdaiChange_request_ptr SdaiChange_request_var; +#define SdaiChange_request__set SCLP23(DAObject__set) +#define SdaiChange_request__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_change_request; + +class SdaiDate_and_time; +typedef SdaiDate_and_time * SdaiDate_and_timeH; +typedef SdaiDate_and_time * SdaiDate_and_time_ptr; +typedef SdaiDate_and_time_ptr SdaiDate_and_time_var; +#define SdaiDate_and_time__set SCLP23(DAObject__set) +#define SdaiDate_and_time__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_date_and_time; + +class SdaiApproval_date_time; +typedef SdaiApproval_date_time * SdaiApproval_date_timeH; +typedef SdaiApproval_date_time * SdaiApproval_date_time_ptr; +typedef SdaiApproval_date_time_ptr SdaiApproval_date_time_var; +#define SdaiApproval_date_time__set SCLP23(DAObject__set) +#define SdaiApproval_date_time__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_approval_date_time; + +class SdaiApproval_role; +typedef SdaiApproval_role * SdaiApproval_roleH; +typedef SdaiApproval_role * SdaiApproval_role_ptr; +typedef SdaiApproval_role_ptr SdaiApproval_role_var; +#define SdaiApproval_role__set SCLP23(DAObject__set) +#define SdaiApproval_role__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_approval_role; + +class SdaiApplication_context_element; +typedef SdaiApplication_context_element * SdaiApplication_context_elementH; +typedef SdaiApplication_context_element * SdaiApplication_context_element_ptr; +typedef SdaiApplication_context_element_ptr SdaiApplication_context_element_var; +#define SdaiApplication_context_element__set SCLP23(DAObject__set) +#define SdaiApplication_context_element__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_application_context_element; + +class SdaiProduct_context; +typedef SdaiProduct_context * SdaiProduct_contextH; +typedef SdaiProduct_context * SdaiProduct_context_ptr; +typedef SdaiProduct_context_ptr SdaiProduct_context_var; +#define SdaiProduct_context__set SCLP23(DAObject__set) +#define SdaiProduct_context__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_product_context; + +class SdaiElementary_surface; +typedef SdaiElementary_surface * SdaiElementary_surfaceH; +typedef SdaiElementary_surface * SdaiElementary_surface_ptr; +typedef SdaiElementary_surface_ptr SdaiElementary_surface_var; +#define SdaiElementary_surface__set SCLP23(DAObject__set) +#define SdaiElementary_surface__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_elementary_surface; + +class SdaiSpherical_surface; +typedef SdaiSpherical_surface * SdaiSpherical_surfaceH; +typedef SdaiSpherical_surface * SdaiSpherical_surface_ptr; +typedef SdaiSpherical_surface_ptr SdaiSpherical_surface_var; +#define SdaiSpherical_surface__set SCLP23(DAObject__set) +#define SdaiSpherical_surface__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_spherical_surface; + +class SdaiApplication_protocol_definition; +typedef SdaiApplication_protocol_definition * SdaiApplication_protocol_definitionH; +typedef SdaiApplication_protocol_definition * SdaiApplication_protocol_definition_ptr; +typedef SdaiApplication_protocol_definition_ptr SdaiApplication_protocol_definition_var; +#define SdaiApplication_protocol_definition__set SCLP23(DAObject__set) +#define SdaiApplication_protocol_definition__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_application_protocol_definition; + +class SdaiSpecified_higher_usage_occurrence; +typedef SdaiSpecified_higher_usage_occurrence * SdaiSpecified_higher_usage_occurrenceH; +typedef SdaiSpecified_higher_usage_occurrence * SdaiSpecified_higher_usage_occurrence_ptr; +typedef SdaiSpecified_higher_usage_occurrence_ptr SdaiSpecified_higher_usage_occurrence_var; +#define SdaiSpecified_higher_usage_occurrence__set SCLP23(DAObject__set) +#define SdaiSpecified_higher_usage_occurrence__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_specified_higher_usage_occurrence; + +class SdaiProduct_definition_formation_with_specified_source; +typedef SdaiProduct_definition_formation_with_specified_source * SdaiProduct_definition_formation_with_specified_sourceH; +typedef SdaiProduct_definition_formation_with_specified_source * SdaiProduct_definition_formation_with_specified_source_ptr; +typedef SdaiProduct_definition_formation_with_specified_source_ptr SdaiProduct_definition_formation_with_specified_source_var; +#define SdaiProduct_definition_formation_with_specified_source__set SCLP23(DAObject__set) +#define SdaiProduct_definition_formation_with_specified_source__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_product_definition_formation_with_specified_source; + +class SdaiAction_request_solution; +typedef SdaiAction_request_solution * SdaiAction_request_solutionH; +typedef SdaiAction_request_solution * SdaiAction_request_solution_ptr; +typedef SdaiAction_request_solution_ptr SdaiAction_request_solution_var; +#define SdaiAction_request_solution__set SCLP23(DAObject__set) +#define SdaiAction_request_solution__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_action_request_solution; + +class SdaiUncertainty_measure_with_unit; +typedef SdaiUncertainty_measure_with_unit * SdaiUncertainty_measure_with_unitH; +typedef SdaiUncertainty_measure_with_unit * SdaiUncertainty_measure_with_unit_ptr; +typedef SdaiUncertainty_measure_with_unit_ptr SdaiUncertainty_measure_with_unit_var; +#define SdaiUncertainty_measure_with_unit__set SCLP23(DAObject__set) +#define SdaiUncertainty_measure_with_unit__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_uncertainty_measure_with_unit; + +class SdaiEdge_based_wireframe_model; +typedef SdaiEdge_based_wireframe_model * SdaiEdge_based_wireframe_modelH; +typedef SdaiEdge_based_wireframe_model * SdaiEdge_based_wireframe_model_ptr; +typedef SdaiEdge_based_wireframe_model_ptr SdaiEdge_based_wireframe_model_var; +#define SdaiEdge_based_wireframe_model__set SCLP23(DAObject__set) +#define SdaiEdge_based_wireframe_model__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_edge_based_wireframe_model; + +class SdaiPath; +typedef SdaiPath * SdaiPathH; +typedef SdaiPath * SdaiPath_ptr; +typedef SdaiPath_ptr SdaiPath_var; +#define SdaiPath__set SCLP23(DAObject__set) +#define SdaiPath__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_path; + +class SdaiConnected_face_set; +typedef SdaiConnected_face_set * SdaiConnected_face_setH; +typedef SdaiConnected_face_set * SdaiConnected_face_set_ptr; +typedef SdaiConnected_face_set_ptr SdaiConnected_face_set_var; +#define SdaiConnected_face_set__set SCLP23(DAObject__set) +#define SdaiConnected_face_set__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_connected_face_set; + +class SdaiOpen_shell; +typedef SdaiOpen_shell * SdaiOpen_shellH; +typedef SdaiOpen_shell * SdaiOpen_shell_ptr; +typedef SdaiOpen_shell_ptr SdaiOpen_shell_var; +#define SdaiOpen_shell__set SCLP23(DAObject__set) +#define SdaiOpen_shell__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_open_shell; + +class SdaiOriented_open_shell; +typedef SdaiOriented_open_shell * SdaiOriented_open_shellH; +typedef SdaiOriented_open_shell * SdaiOriented_open_shell_ptr; +typedef SdaiOriented_open_shell_ptr SdaiOriented_open_shell_var; +#define SdaiOriented_open_shell__set SCLP23(DAObject__set) +#define SdaiOriented_open_shell__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_oriented_open_shell; + +class SdaiSolid_angle_unit; +typedef SdaiSolid_angle_unit * SdaiSolid_angle_unitH; +typedef SdaiSolid_angle_unit * SdaiSolid_angle_unit_ptr; +typedef SdaiSolid_angle_unit_ptr SdaiSolid_angle_unit_var; +#define SdaiSolid_angle_unit__set SCLP23(DAObject__set) +#define SdaiSolid_angle_unit__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_solid_angle_unit; + +class SdaiCoordinated_universal_time_offset; +typedef SdaiCoordinated_universal_time_offset * SdaiCoordinated_universal_time_offsetH; +typedef SdaiCoordinated_universal_time_offset * SdaiCoordinated_universal_time_offset_ptr; +typedef SdaiCoordinated_universal_time_offset_ptr SdaiCoordinated_universal_time_offset_var; +#define SdaiCoordinated_universal_time_offset__set SCLP23(DAObject__set) +#define SdaiCoordinated_universal_time_offset__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_coordinated_universal_time_offset; + +class SdaiCurve_replica; +typedef SdaiCurve_replica * SdaiCurve_replicaH; +typedef SdaiCurve_replica * SdaiCurve_replica_ptr; +typedef SdaiCurve_replica_ptr SdaiCurve_replica_var; +#define SdaiCurve_replica__set SCLP23(DAObject__set) +#define SdaiCurve_replica__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_curve_replica; + +class SdaiQuasi_uniform_surface; +typedef SdaiQuasi_uniform_surface * SdaiQuasi_uniform_surfaceH; +typedef SdaiQuasi_uniform_surface * SdaiQuasi_uniform_surface_ptr; +typedef SdaiQuasi_uniform_surface_ptr SdaiQuasi_uniform_surface_var; +#define SdaiQuasi_uniform_surface__set SCLP23(DAObject__set) +#define SdaiQuasi_uniform_surface__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_quasi_uniform_surface; + +class SdaiSurface_curve; +typedef SdaiSurface_curve * SdaiSurface_curveH; +typedef SdaiSurface_curve * SdaiSurface_curve_ptr; +typedef SdaiSurface_curve_ptr SdaiSurface_curve_var; +#define SdaiSurface_curve__set SCLP23(DAObject__set) +#define SdaiSurface_curve__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_surface_curve; + +class SdaiAction_request_status; +typedef SdaiAction_request_status * SdaiAction_request_statusH; +typedef SdaiAction_request_status * SdaiAction_request_status_ptr; +typedef SdaiAction_request_status_ptr SdaiAction_request_status_var; +#define SdaiAction_request_status__set SCLP23(DAObject__set) +#define SdaiAction_request_status__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_action_request_status; + +class SdaiComposite_curve_segment; +typedef SdaiComposite_curve_segment * SdaiComposite_curve_segmentH; +typedef SdaiComposite_curve_segment * SdaiComposite_curve_segment_ptr; +typedef SdaiComposite_curve_segment_ptr SdaiComposite_curve_segment_var; +#define SdaiComposite_curve_segment__set SCLP23(DAObject__set) +#define SdaiComposite_curve_segment__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_composite_curve_segment; + +class SdaiReparametrised_composite_curve_segment; +typedef SdaiReparametrised_composite_curve_segment * SdaiReparametrised_composite_curve_segmentH; +typedef SdaiReparametrised_composite_curve_segment * SdaiReparametrised_composite_curve_segment_ptr; +typedef SdaiReparametrised_composite_curve_segment_ptr SdaiReparametrised_composite_curve_segment_var; +#define SdaiReparametrised_composite_curve_segment__set SCLP23(DAObject__set) +#define SdaiReparametrised_composite_curve_segment__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_reparametrised_composite_curve_segment; + +class SdaiRepresentation_relationship; +typedef SdaiRepresentation_relationship * SdaiRepresentation_relationshipH; +typedef SdaiRepresentation_relationship * SdaiRepresentation_relationship_ptr; +typedef SdaiRepresentation_relationship_ptr SdaiRepresentation_relationship_var; +#define SdaiRepresentation_relationship__set SCLP23(DAObject__set) +#define SdaiRepresentation_relationship__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_representation_relationship; + +class SdaiRepresentation_relationship_with_transformation; +typedef SdaiRepresentation_relationship_with_transformation * SdaiRepresentation_relationship_with_transformationH; +typedef SdaiRepresentation_relationship_with_transformation * SdaiRepresentation_relationship_with_transformation_ptr; +typedef SdaiRepresentation_relationship_with_transformation_ptr SdaiRepresentation_relationship_with_transformation_var; +#define SdaiRepresentation_relationship_with_transformation__set SCLP23(DAObject__set) +#define SdaiRepresentation_relationship_with_transformation__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_representation_relationship_with_transformation; + +class SdaiPerson_and_organization_role; +typedef SdaiPerson_and_organization_role * SdaiPerson_and_organization_roleH; +typedef SdaiPerson_and_organization_role * SdaiPerson_and_organization_role_ptr; +typedef SdaiPerson_and_organization_role_ptr SdaiPerson_and_organization_role_var; +#define SdaiPerson_and_organization_role__set SCLP23(DAObject__set) +#define SdaiPerson_and_organization_role__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_person_and_organization_role; + +class SdaiQuasi_uniform_curve; +typedef SdaiQuasi_uniform_curve * SdaiQuasi_uniform_curveH; +typedef SdaiQuasi_uniform_curve * SdaiQuasi_uniform_curve_ptr; +typedef SdaiQuasi_uniform_curve_ptr SdaiQuasi_uniform_curve_var; +#define SdaiQuasi_uniform_curve__set SCLP23(DAObject__set) +#define SdaiQuasi_uniform_curve__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_quasi_uniform_curve; + +class SdaiSwept_surface; +typedef SdaiSwept_surface * SdaiSwept_surfaceH; +typedef SdaiSwept_surface * SdaiSwept_surface_ptr; +typedef SdaiSwept_surface_ptr SdaiSwept_surface_var; +#define SdaiSwept_surface__set SCLP23(DAObject__set) +#define SdaiSwept_surface__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_swept_surface; + +class SdaiProperty_definition; +typedef SdaiProperty_definition * SdaiProperty_definitionH; +typedef SdaiProperty_definition * SdaiProperty_definition_ptr; +typedef SdaiProperty_definition_ptr SdaiProperty_definition_var; +#define SdaiProperty_definition__set SCLP23(DAObject__set) +#define SdaiProperty_definition__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_property_definition; + +class SdaiGlobal_uncertainty_assigned_context; +typedef SdaiGlobal_uncertainty_assigned_context * SdaiGlobal_uncertainty_assigned_contextH; +typedef SdaiGlobal_uncertainty_assigned_context * SdaiGlobal_uncertainty_assigned_context_ptr; +typedef SdaiGlobal_uncertainty_assigned_context_ptr SdaiGlobal_uncertainty_assigned_context_var; +#define SdaiGlobal_uncertainty_assigned_context__set SCLP23(DAObject__set) +#define SdaiGlobal_uncertainty_assigned_context__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_global_uncertainty_assigned_context; + +class SdaiOrganization_relationship; +typedef SdaiOrganization_relationship * SdaiOrganization_relationshipH; +typedef SdaiOrganization_relationship * SdaiOrganization_relationship_ptr; +typedef SdaiOrganization_relationship_ptr SdaiOrganization_relationship_var; +#define SdaiOrganization_relationship__set SCLP23(DAObject__set) +#define SdaiOrganization_relationship__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_organization_relationship; + +class SdaiParabola; +typedef SdaiParabola * SdaiParabolaH; +typedef SdaiParabola * SdaiParabola_ptr; +typedef SdaiParabola_ptr SdaiParabola_var; +#define SdaiParabola__set SCLP23(DAObject__set) +#define SdaiParabola__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_parabola; + +class SdaiRectangular_composite_surface; +typedef SdaiRectangular_composite_surface * SdaiRectangular_composite_surfaceH; +typedef SdaiRectangular_composite_surface * SdaiRectangular_composite_surface_ptr; +typedef SdaiRectangular_composite_surface_ptr SdaiRectangular_composite_surface_var; +#define SdaiRectangular_composite_surface__set SCLP23(DAObject__set) +#define SdaiRectangular_composite_surface__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_rectangular_composite_surface; + +class SdaiLot_effectivity; +typedef SdaiLot_effectivity * SdaiLot_effectivityH; +typedef SdaiLot_effectivity * SdaiLot_effectivity_ptr; +typedef SdaiLot_effectivity_ptr SdaiLot_effectivity_var; +#define SdaiLot_effectivity__set SCLP23(DAObject__set) +#define SdaiLot_effectivity__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_lot_effectivity; + +class SdaiSurface_of_linear_extrusion; +typedef SdaiSurface_of_linear_extrusion * SdaiSurface_of_linear_extrusionH; +typedef SdaiSurface_of_linear_extrusion * SdaiSurface_of_linear_extrusion_ptr; +typedef SdaiSurface_of_linear_extrusion_ptr SdaiSurface_of_linear_extrusion_var; +#define SdaiSurface_of_linear_extrusion__set SCLP23(DAObject__set) +#define SdaiSurface_of_linear_extrusion__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_surface_of_linear_extrusion; + +class SdaiShell_based_surface_model; +typedef SdaiShell_based_surface_model * SdaiShell_based_surface_modelH; +typedef SdaiShell_based_surface_model * SdaiShell_based_surface_model_ptr; +typedef SdaiShell_based_surface_model_ptr SdaiShell_based_surface_model_var; +#define SdaiShell_based_surface_model__set SCLP23(DAObject__set) +#define SdaiShell_based_surface_model__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_shell_based_surface_model; + +class SdaiUniform_curve; +typedef SdaiUniform_curve * SdaiUniform_curveH; +typedef SdaiUniform_curve * SdaiUniform_curve_ptr; +typedef SdaiUniform_curve_ptr SdaiUniform_curve_var; +#define SdaiUniform_curve__set SCLP23(DAObject__set) +#define SdaiUniform_curve__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_uniform_curve; + +class SdaiBezier_curve; +typedef SdaiBezier_curve * SdaiBezier_curveH; +typedef SdaiBezier_curve * SdaiBezier_curve_ptr; +typedef SdaiBezier_curve_ptr SdaiBezier_curve_var; +#define SdaiBezier_curve__set SCLP23(DAObject__set) +#define SdaiBezier_curve__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_bezier_curve; + +class SdaiLoop; +typedef SdaiLoop * SdaiLoopH; +typedef SdaiLoop * SdaiLoop_ptr; +typedef SdaiLoop_ptr SdaiLoop_var; +#define SdaiLoop__set SCLP23(DAObject__set) +#define SdaiLoop__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_loop; + +class SdaiEdge_loop; +typedef SdaiEdge_loop * SdaiEdge_loopH; +typedef SdaiEdge_loop * SdaiEdge_loop_ptr; +typedef SdaiEdge_loop_ptr SdaiEdge_loop_var; +#define SdaiEdge_loop__set SCLP23(DAObject__set) +#define SdaiEdge_loop__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_edge_loop; + +class SdaiDate; +typedef SdaiDate * SdaiDateH; +typedef SdaiDate * SdaiDate_ptr; +typedef SdaiDate_ptr SdaiDate_var; +#define SdaiDate__set SCLP23(DAObject__set) +#define SdaiDate__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_date; + +class SdaiCalendar_date; +typedef SdaiCalendar_date * SdaiCalendar_dateH; +typedef SdaiCalendar_date * SdaiCalendar_date_ptr; +typedef SdaiCalendar_date_ptr SdaiCalendar_date_var; +#define SdaiCalendar_date__set SCLP23(DAObject__set) +#define SdaiCalendar_date__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_calendar_date; + +class SdaiToroidal_surface; +typedef SdaiToroidal_surface * SdaiToroidal_surfaceH; +typedef SdaiToroidal_surface * SdaiToroidal_surface_ptr; +typedef SdaiToroidal_surface_ptr SdaiToroidal_surface_var; +#define SdaiToroidal_surface__set SCLP23(DAObject__set) +#define SdaiToroidal_surface__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_toroidal_surface; + +class SdaiPromissory_usage_occurrence; +typedef SdaiPromissory_usage_occurrence * SdaiPromissory_usage_occurrenceH; +typedef SdaiPromissory_usage_occurrence * SdaiPromissory_usage_occurrence_ptr; +typedef SdaiPromissory_usage_occurrence_ptr SdaiPromissory_usage_occurrence_var; +#define SdaiPromissory_usage_occurrence__set SCLP23(DAObject__set) +#define SdaiPromissory_usage_occurrence__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_promissory_usage_occurrence; + +class SdaiApproval_assignment; +typedef SdaiApproval_assignment * SdaiApproval_assignmentH; +typedef SdaiApproval_assignment * SdaiApproval_assignment_ptr; +typedef SdaiApproval_assignment_ptr SdaiApproval_assignment_var; +#define SdaiApproval_assignment__set SCLP23(DAObject__set) +#define SdaiApproval_assignment__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_approval_assignment; + +class SdaiConfiguration_item; +typedef SdaiConfiguration_item * SdaiConfiguration_itemH; +typedef SdaiConfiguration_item * SdaiConfiguration_item_ptr; +typedef SdaiConfiguration_item_ptr SdaiConfiguration_item_var; +#define SdaiConfiguration_item__set SCLP23(DAObject__set) +#define SdaiConfiguration_item__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_configuration_item; + +class SdaiContract_assignment; +typedef SdaiContract_assignment * SdaiContract_assignmentH; +typedef SdaiContract_assignment * SdaiContract_assignment_ptr; +typedef SdaiContract_assignment_ptr SdaiContract_assignment_var; +#define SdaiContract_assignment__set SCLP23(DAObject__set) +#define SdaiContract_assignment__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_contract_assignment; + +class SdaiVector; +typedef SdaiVector * SdaiVectorH; +typedef SdaiVector * SdaiVector_ptr; +typedef SdaiVector_ptr SdaiVector_var; +#define SdaiVector__set SCLP23(DAObject__set) +#define SdaiVector__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_vector; + +class SdaiIntersection_curve; +typedef SdaiIntersection_curve * SdaiIntersection_curveH; +typedef SdaiIntersection_curve * SdaiIntersection_curve_ptr; +typedef SdaiIntersection_curve_ptr SdaiIntersection_curve_var; +#define SdaiIntersection_curve__set SCLP23(DAObject__set) +#define SdaiIntersection_curve__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_intersection_curve; + +class SdaiTrimmed_curve; +typedef SdaiTrimmed_curve * SdaiTrimmed_curveH; +typedef SdaiTrimmed_curve * SdaiTrimmed_curve_ptr; +typedef SdaiTrimmed_curve_ptr SdaiTrimmed_curve_var; +#define SdaiTrimmed_curve__set SCLP23(DAObject__set) +#define SdaiTrimmed_curve__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_trimmed_curve; + +class SdaiProduct_definition_context; +typedef SdaiProduct_definition_context * SdaiProduct_definition_contextH; +typedef SdaiProduct_definition_context * SdaiProduct_definition_context_ptr; +typedef SdaiProduct_definition_context_ptr SdaiProduct_definition_context_var; +#define SdaiProduct_definition_context__set SCLP23(DAObject__set) +#define SdaiProduct_definition_context__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_product_definition_context; + +class SdaiItem_defined_transformation; +typedef SdaiItem_defined_transformation * SdaiItem_defined_transformationH; +typedef SdaiItem_defined_transformation * SdaiItem_defined_transformation_ptr; +typedef SdaiItem_defined_transformation_ptr SdaiItem_defined_transformation_var; +#define SdaiItem_defined_transformation__set SCLP23(DAObject__set) +#define SdaiItem_defined_transformation__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_item_defined_transformation; + +class SdaiAction_method; +typedef SdaiAction_method * SdaiAction_methodH; +typedef SdaiAction_method * SdaiAction_method_ptr; +typedef SdaiAction_method_ptr SdaiAction_method_var; +#define SdaiAction_method__set SCLP23(DAObject__set) +#define SdaiAction_method__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_action_method; + +class SdaiProduct_category_relationship; +typedef SdaiProduct_category_relationship * SdaiProduct_category_relationshipH; +typedef SdaiProduct_category_relationship * SdaiProduct_category_relationship_ptr; +typedef SdaiProduct_category_relationship_ptr SdaiProduct_category_relationship_var; +#define SdaiProduct_category_relationship__set SCLP23(DAObject__set) +#define SdaiProduct_category_relationship__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_product_category_relationship; + +class SdaiPlane_angle_measure_with_unit; +typedef SdaiPlane_angle_measure_with_unit * SdaiPlane_angle_measure_with_unitH; +typedef SdaiPlane_angle_measure_with_unit * SdaiPlane_angle_measure_with_unit_ptr; +typedef SdaiPlane_angle_measure_with_unit_ptr SdaiPlane_angle_measure_with_unit_var; +#define SdaiPlane_angle_measure_with_unit__set SCLP23(DAObject__set) +#define SdaiPlane_angle_measure_with_unit__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_plane_angle_measure_with_unit; + +class SdaiVertex; +typedef SdaiVertex * SdaiVertexH; +typedef SdaiVertex * SdaiVertex_ptr; +typedef SdaiVertex_ptr SdaiVertex_var; +#define SdaiVertex__set SCLP23(DAObject__set) +#define SdaiVertex__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_vertex; + +class SdaiRepresentation_map; +typedef SdaiRepresentation_map * SdaiRepresentation_mapH; +typedef SdaiRepresentation_map * SdaiRepresentation_map_ptr; +typedef SdaiRepresentation_map_ptr SdaiRepresentation_map_var; +#define SdaiRepresentation_map__set SCLP23(DAObject__set) +#define SdaiRepresentation_map__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_representation_map; + +class SdaiProduct_definition_effectivity; +typedef SdaiProduct_definition_effectivity * SdaiProduct_definition_effectivityH; +typedef SdaiProduct_definition_effectivity * SdaiProduct_definition_effectivity_ptr; +typedef SdaiProduct_definition_effectivity_ptr SdaiProduct_definition_effectivity_var; +#define SdaiProduct_definition_effectivity__set SCLP23(DAObject__set) +#define SdaiProduct_definition_effectivity__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_product_definition_effectivity; + +class SdaiConfiguration_effectivity; +typedef SdaiConfiguration_effectivity * SdaiConfiguration_effectivityH; +typedef SdaiConfiguration_effectivity * SdaiConfiguration_effectivity_ptr; +typedef SdaiConfiguration_effectivity_ptr SdaiConfiguration_effectivity_var; +#define SdaiConfiguration_effectivity__set SCLP23(DAObject__set) +#define SdaiConfiguration_effectivity__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_configuration_effectivity; + +class SdaiEllipse; +typedef SdaiEllipse * SdaiEllipseH; +typedef SdaiEllipse * SdaiEllipse_ptr; +typedef SdaiEllipse_ptr SdaiEllipse_var; +#define SdaiEllipse__set SCLP23(DAObject__set) +#define SdaiEllipse__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_ellipse; + +class SdaiContext_dependent_unit; +typedef SdaiContext_dependent_unit * SdaiContext_dependent_unitH; +typedef SdaiContext_dependent_unit * SdaiContext_dependent_unit_ptr; +typedef SdaiContext_dependent_unit_ptr SdaiContext_dependent_unit_var; +#define SdaiContext_dependent_unit__set SCLP23(DAObject__set) +#define SdaiContext_dependent_unit__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_context_dependent_unit; + +class SdaiAlternate_product_relationship; +typedef SdaiAlternate_product_relationship * SdaiAlternate_product_relationshipH; +typedef SdaiAlternate_product_relationship * SdaiAlternate_product_relationship_ptr; +typedef SdaiAlternate_product_relationship_ptr SdaiAlternate_product_relationship_var; +#define SdaiAlternate_product_relationship__set SCLP23(DAObject__set) +#define SdaiAlternate_product_relationship__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_alternate_product_relationship; + +class SdaiDocument_type; +typedef SdaiDocument_type * SdaiDocument_typeH; +typedef SdaiDocument_type * SdaiDocument_type_ptr; +typedef SdaiDocument_type_ptr SdaiDocument_type_var; +#define SdaiDocument_type__set SCLP23(DAObject__set) +#define SdaiDocument_type__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_document_type; + +class SdaiDocument_reference; +typedef SdaiDocument_reference * SdaiDocument_referenceH; +typedef SdaiDocument_reference * SdaiDocument_reference_ptr; +typedef SdaiDocument_reference_ptr SdaiDocument_reference_var; +#define SdaiDocument_reference__set SCLP23(DAObject__set) +#define SdaiDocument_reference__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_document_reference; + +class SdaiMechanical_context; +typedef SdaiMechanical_context * SdaiMechanical_contextH; +typedef SdaiMechanical_context * SdaiMechanical_context_ptr; +typedef SdaiMechanical_context_ptr SdaiMechanical_context_var; +#define SdaiMechanical_context__set SCLP23(DAObject__set) +#define SdaiMechanical_context__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_mechanical_context; + +class SdaiShell_based_wireframe_model; +typedef SdaiShell_based_wireframe_model * SdaiShell_based_wireframe_modelH; +typedef SdaiShell_based_wireframe_model * SdaiShell_based_wireframe_model_ptr; +typedef SdaiShell_based_wireframe_model_ptr SdaiShell_based_wireframe_model_var; +#define SdaiShell_based_wireframe_model__set SCLP23(DAObject__set) +#define SdaiShell_based_wireframe_model__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_shell_based_wireframe_model; + +class SdaiContract; +typedef SdaiContract * SdaiContractH; +typedef SdaiContract * SdaiContract_ptr; +typedef SdaiContract_ptr SdaiContract_var; +#define SdaiContract__set SCLP23(DAObject__set) +#define SdaiContract__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_contract; + +class SdaiDimensional_exponents; +typedef SdaiDimensional_exponents * SdaiDimensional_exponentsH; +typedef SdaiDimensional_exponents * SdaiDimensional_exponents_ptr; +typedef SdaiDimensional_exponents_ptr SdaiDimensional_exponents_var; +#define SdaiDimensional_exponents__set SCLP23(DAObject__set) +#define SdaiDimensional_exponents__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_dimensional_exponents; + +class SdaiStart_request; +typedef SdaiStart_request * SdaiStart_requestH; +typedef SdaiStart_request * SdaiStart_request_ptr; +typedef SdaiStart_request_ptr SdaiStart_request_var; +#define SdaiStart_request__set SCLP23(DAObject__set) +#define SdaiStart_request__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_start_request; + +class SdaiCc_design_specification_reference; +typedef SdaiCc_design_specification_reference * SdaiCc_design_specification_referenceH; +typedef SdaiCc_design_specification_reference * SdaiCc_design_specification_reference_ptr; +typedef SdaiCc_design_specification_reference_ptr SdaiCc_design_specification_reference_var; +#define SdaiCc_design_specification_reference__set SCLP23(DAObject__set) +#define SdaiCc_design_specification_reference__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_cc_design_specification_reference; + +class SdaiSupplied_part_relationship; +typedef SdaiSupplied_part_relationship * SdaiSupplied_part_relationshipH; +typedef SdaiSupplied_part_relationship * SdaiSupplied_part_relationship_ptr; +typedef SdaiSupplied_part_relationship_ptr SdaiSupplied_part_relationship_var; +#define SdaiSupplied_part_relationship__set SCLP23(DAObject__set) +#define SdaiSupplied_part_relationship__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_supplied_part_relationship; + +class SdaiContext_dependent_shape_representation; +typedef SdaiContext_dependent_shape_representation * SdaiContext_dependent_shape_representationH; +typedef SdaiContext_dependent_shape_representation * SdaiContext_dependent_shape_representation_ptr; +typedef SdaiContext_dependent_shape_representation_ptr SdaiContext_dependent_shape_representation_var; +#define SdaiContext_dependent_shape_representation__set SCLP23(DAObject__set) +#define SdaiContext_dependent_shape_representation__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_context_dependent_shape_representation; + +class SdaiOrdinal_date; +typedef SdaiOrdinal_date * SdaiOrdinal_dateH; +typedef SdaiOrdinal_date * SdaiOrdinal_date_ptr; +typedef SdaiOrdinal_date_ptr SdaiOrdinal_date_var; +#define SdaiOrdinal_date__set SCLP23(DAObject__set) +#define SdaiOrdinal_date__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_ordinal_date; + +class SdaiFace_outer_bound; +typedef SdaiFace_outer_bound * SdaiFace_outer_boundH; +typedef SdaiFace_outer_bound * SdaiFace_outer_bound_ptr; +typedef SdaiFace_outer_bound_ptr SdaiFace_outer_bound_var; +#define SdaiFace_outer_bound__set SCLP23(DAObject__set) +#define SdaiFace_outer_bound__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_face_outer_bound; + +class SdaiMass_measure_with_unit; +typedef SdaiMass_measure_with_unit * SdaiMass_measure_with_unitH; +typedef SdaiMass_measure_with_unit * SdaiMass_measure_with_unit_ptr; +typedef SdaiMass_measure_with_unit_ptr SdaiMass_measure_with_unit_var; +#define SdaiMass_measure_with_unit__set SCLP23(DAObject__set) +#define SdaiMass_measure_with_unit__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_mass_measure_with_unit; + +class SdaiBrep_with_voids; +typedef SdaiBrep_with_voids * SdaiBrep_with_voidsH; +typedef SdaiBrep_with_voids * SdaiBrep_with_voids_ptr; +typedef SdaiBrep_with_voids_ptr SdaiBrep_with_voids_var; +#define SdaiBrep_with_voids__set SCLP23(DAObject__set) +#define SdaiBrep_with_voids__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_brep_with_voids; + +class SdaiWeek_of_year_and_day_date; +typedef SdaiWeek_of_year_and_day_date * SdaiWeek_of_year_and_day_dateH; +typedef SdaiWeek_of_year_and_day_date * SdaiWeek_of_year_and_day_date_ptr; +typedef SdaiWeek_of_year_and_day_date_ptr SdaiWeek_of_year_and_day_date_var; +#define SdaiWeek_of_year_and_day_date__set SCLP23(DAObject__set) +#define SdaiWeek_of_year_and_day_date__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_week_of_year_and_day_date; + +class SdaiPoint_on_curve; +typedef SdaiPoint_on_curve * SdaiPoint_on_curveH; +typedef SdaiPoint_on_curve * SdaiPoint_on_curve_ptr; +typedef SdaiPoint_on_curve_ptr SdaiPoint_on_curve_var; +#define SdaiPoint_on_curve__set SCLP23(DAObject__set) +#define SdaiPoint_on_curve__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_point_on_curve; + +class SdaiShell_based_wireframe_shape_representation; +typedef SdaiShell_based_wireframe_shape_representation * SdaiShell_based_wireframe_shape_representationH; +typedef SdaiShell_based_wireframe_shape_representation * SdaiShell_based_wireframe_shape_representation_ptr; +typedef SdaiShell_based_wireframe_shape_representation_ptr SdaiShell_based_wireframe_shape_representation_var; +#define SdaiShell_based_wireframe_shape_representation__set SCLP23(DAObject__set) +#define SdaiShell_based_wireframe_shape_representation__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_shell_based_wireframe_shape_representation; + +class SdaiFace; +typedef SdaiFace * SdaiFaceH; +typedef SdaiFace * SdaiFace_ptr; +typedef SdaiFace_ptr SdaiFace_var; +#define SdaiFace__set SCLP23(DAObject__set) +#define SdaiFace__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_face; + +class SdaiFace_surface; +typedef SdaiFace_surface * SdaiFace_surfaceH; +typedef SdaiFace_surface * SdaiFace_surface_ptr; +typedef SdaiFace_surface_ptr SdaiFace_surface_var; +#define SdaiFace_surface__set SCLP23(DAObject__set) +#define SdaiFace_surface__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_face_surface; + +class SdaiOriented_face; +typedef SdaiOriented_face * SdaiOriented_faceH; +typedef SdaiOriented_face * SdaiOriented_face_ptr; +typedef SdaiOriented_face_ptr SdaiOriented_face_var; +#define SdaiOriented_face__set SCLP23(DAObject__set) +#define SdaiOriented_face__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_oriented_face; + +class SdaiSurface_of_revolution; +typedef SdaiSurface_of_revolution * SdaiSurface_of_revolutionH; +typedef SdaiSurface_of_revolution * SdaiSurface_of_revolution_ptr; +typedef SdaiSurface_of_revolution_ptr SdaiSurface_of_revolution_var; +#define SdaiSurface_of_revolution__set SCLP23(DAObject__set) +#define SdaiSurface_of_revolution__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_surface_of_revolution; + +class SdaiAdvanced_brep_shape_representation; +typedef SdaiAdvanced_brep_shape_representation * SdaiAdvanced_brep_shape_representationH; +typedef SdaiAdvanced_brep_shape_representation * SdaiAdvanced_brep_shape_representation_ptr; +typedef SdaiAdvanced_brep_shape_representation_ptr SdaiAdvanced_brep_shape_representation_var; +#define SdaiAdvanced_brep_shape_representation__set SCLP23(DAObject__set) +#define SdaiAdvanced_brep_shape_representation__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_advanced_brep_shape_representation; + +class SdaiEdge_curve; +typedef SdaiEdge_curve * SdaiEdge_curveH; +typedef SdaiEdge_curve * SdaiEdge_curve_ptr; +typedef SdaiEdge_curve_ptr SdaiEdge_curve_var; +#define SdaiEdge_curve__set SCLP23(DAObject__set) +#define SdaiEdge_curve__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_edge_curve; + +class SdaiPoint_replica; +typedef SdaiPoint_replica * SdaiPoint_replicaH; +typedef SdaiPoint_replica * SdaiPoint_replica_ptr; +typedef SdaiPoint_replica_ptr SdaiPoint_replica_var; +#define SdaiPoint_replica__set SCLP23(DAObject__set) +#define SdaiPoint_replica__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_point_replica; + +class SdaiProduct; +typedef SdaiProduct * SdaiProductH; +typedef SdaiProduct * SdaiProduct_ptr; +typedef SdaiProduct_ptr SdaiProduct_var; +#define SdaiProduct__set SCLP23(DAObject__set) +#define SdaiProduct__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_product; + +class SdaiShape_aspect_relationship; +typedef SdaiShape_aspect_relationship * SdaiShape_aspect_relationshipH; +typedef SdaiShape_aspect_relationship * SdaiShape_aspect_relationship_ptr; +typedef SdaiShape_aspect_relationship_ptr SdaiShape_aspect_relationship_var; +#define SdaiShape_aspect_relationship__set SCLP23(DAObject__set) +#define SdaiShape_aspect_relationship__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_shape_aspect_relationship; + +class SdaiRectangular_trimmed_surface; +typedef SdaiRectangular_trimmed_surface * SdaiRectangular_trimmed_surfaceH; +typedef SdaiRectangular_trimmed_surface * SdaiRectangular_trimmed_surface_ptr; +typedef SdaiRectangular_trimmed_surface_ptr SdaiRectangular_trimmed_surface_var; +#define SdaiRectangular_trimmed_surface__set SCLP23(DAObject__set) +#define SdaiRectangular_trimmed_surface__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_rectangular_trimmed_surface; + +class SdaiPlane; +typedef SdaiPlane * SdaiPlaneH; +typedef SdaiPlane * SdaiPlane_ptr; +typedef SdaiPlane_ptr SdaiPlane_var; +#define SdaiPlane__set SCLP23(DAObject__set) +#define SdaiPlane__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_plane; + +class SdaiAction_assignment; +typedef SdaiAction_assignment * SdaiAction_assignmentH; +typedef SdaiAction_assignment * SdaiAction_assignment_ptr; +typedef SdaiAction_assignment_ptr SdaiAction_assignment_var; +#define SdaiAction_assignment__set SCLP23(DAObject__set) +#define SdaiAction_assignment__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_action_assignment; + +class SdaiChange; +typedef SdaiChange * SdaiChangeH; +typedef SdaiChange * SdaiChange_ptr; +typedef SdaiChange_ptr SdaiChange_var; +#define SdaiChange__set SCLP23(DAObject__set) +#define SdaiChange__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_change; + +class SdaiCircle; +typedef SdaiCircle * SdaiCircleH; +typedef SdaiCircle * SdaiCircle_ptr; +typedef SdaiCircle_ptr SdaiCircle_var; +#define SdaiCircle__set SCLP23(DAObject__set) +#define SdaiCircle__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_circle; + +class SdaiLine; +typedef SdaiLine * SdaiLineH; +typedef SdaiLine * SdaiLine_ptr; +typedef SdaiLine_ptr SdaiLine_var; +#define SdaiLine__set SCLP23(DAObject__set) +#define SdaiLine__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_line; + +class SdaiProperty_definition_representation; +typedef SdaiProperty_definition_representation * SdaiProperty_definition_representationH; +typedef SdaiProperty_definition_representation * SdaiProperty_definition_representation_ptr; +typedef SdaiProperty_definition_representation_ptr SdaiProperty_definition_representation_var; +#define SdaiProperty_definition_representation__set SCLP23(DAObject__set) +#define SdaiProperty_definition_representation__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_property_definition_representation; + +class SdaiGeometric_set; +typedef SdaiGeometric_set * SdaiGeometric_setH; +typedef SdaiGeometric_set * SdaiGeometric_set_ptr; +typedef SdaiGeometric_set_ptr SdaiGeometric_set_var; +#define SdaiGeometric_set__set SCLP23(DAObject__set) +#define SdaiGeometric_set__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_geometric_set; + +class SdaiGeometric_curve_set; +typedef SdaiGeometric_curve_set * SdaiGeometric_curve_setH; +typedef SdaiGeometric_curve_set * SdaiGeometric_curve_set_ptr; +typedef SdaiGeometric_curve_set_ptr SdaiGeometric_curve_set_var; +#define SdaiGeometric_curve_set__set SCLP23(DAObject__set) +#define SdaiGeometric_curve_set__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_geometric_curve_set; + +class SdaiPersonal_address; +typedef SdaiPersonal_address * SdaiPersonal_addressH; +typedef SdaiPersonal_address * SdaiPersonal_address_ptr; +typedef SdaiPersonal_address_ptr SdaiPersonal_address_var; +#define SdaiPersonal_address__set SCLP23(DAObject__set) +#define SdaiPersonal_address__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_personal_address; + +class SdaiDocument_relationship; +typedef SdaiDocument_relationship * SdaiDocument_relationshipH; +typedef SdaiDocument_relationship * SdaiDocument_relationship_ptr; +typedef SdaiDocument_relationship_ptr SdaiDocument_relationship_var; +#define SdaiDocument_relationship__set SCLP23(DAObject__set) +#define SdaiDocument_relationship__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_document_relationship; + +class SdaiPcurve; +typedef SdaiPcurve * SdaiPcurveH; +typedef SdaiPcurve * SdaiPcurve_ptr; +typedef SdaiPcurve_ptr SdaiPcurve_var; +#define SdaiPcurve__set SCLP23(DAObject__set) +#define SdaiPcurve__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_pcurve; + +class SdaiOuter_boundary_curve; +typedef SdaiOuter_boundary_curve * SdaiOuter_boundary_curveH; +typedef SdaiOuter_boundary_curve * SdaiOuter_boundary_curve_ptr; +typedef SdaiOuter_boundary_curve_ptr SdaiOuter_boundary_curve_var; +#define SdaiOuter_boundary_curve__set SCLP23(DAObject__set) +#define SdaiOuter_boundary_curve__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_outer_boundary_curve; + +class SdaiShape_representation_relationship; +typedef SdaiShape_representation_relationship * SdaiShape_representation_relationshipH; +typedef SdaiShape_representation_relationship * SdaiShape_representation_relationship_ptr; +typedef SdaiShape_representation_relationship_ptr SdaiShape_representation_relationship_var; +#define SdaiShape_representation_relationship__set SCLP23(DAObject__set) +#define SdaiShape_representation_relationship__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_shape_representation_relationship; + +class SdaiAssembly_component_usage_substitute; +typedef SdaiAssembly_component_usage_substitute * SdaiAssembly_component_usage_substituteH; +typedef SdaiAssembly_component_usage_substitute * SdaiAssembly_component_usage_substitute_ptr; +typedef SdaiAssembly_component_usage_substitute_ptr SdaiAssembly_component_usage_substitute_var; +#define SdaiAssembly_component_usage_substitute__set SCLP23(DAObject__set) +#define SdaiAssembly_component_usage_substitute__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_assembly_component_usage_substitute; + +class SdaiDegenerate_pcurve; +typedef SdaiDegenerate_pcurve * SdaiDegenerate_pcurveH; +typedef SdaiDegenerate_pcurve * SdaiDegenerate_pcurve_ptr; +typedef SdaiDegenerate_pcurve_ptr SdaiDegenerate_pcurve_var; +#define SdaiDegenerate_pcurve__set SCLP23(DAObject__set) +#define SdaiDegenerate_pcurve__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_degenerate_pcurve; + +class SdaiEvaluated_degenerate_pcurve; +typedef SdaiEvaluated_degenerate_pcurve * SdaiEvaluated_degenerate_pcurveH; +typedef SdaiEvaluated_degenerate_pcurve * SdaiEvaluated_degenerate_pcurve_ptr; +typedef SdaiEvaluated_degenerate_pcurve_ptr SdaiEvaluated_degenerate_pcurve_var; +#define SdaiEvaluated_degenerate_pcurve__set SCLP23(DAObject__set) +#define SdaiEvaluated_degenerate_pcurve__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_evaluated_degenerate_pcurve; + +class SdaiSolid_angle_measure_with_unit; +typedef SdaiSolid_angle_measure_with_unit * SdaiSolid_angle_measure_with_unitH; +typedef SdaiSolid_angle_measure_with_unit * SdaiSolid_angle_measure_with_unit_ptr; +typedef SdaiSolid_angle_measure_with_unit_ptr SdaiSolid_angle_measure_with_unit_var; +#define SdaiSolid_angle_measure_with_unit__set SCLP23(DAObject__set) +#define SdaiSolid_angle_measure_with_unit__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_solid_angle_measure_with_unit; + +class SdaiConnected_edge_set; +typedef SdaiConnected_edge_set * SdaiConnected_edge_setH; +typedef SdaiConnected_edge_set * SdaiConnected_edge_set_ptr; +typedef SdaiConnected_edge_set_ptr SdaiConnected_edge_set_var; +#define SdaiConnected_edge_set__set SCLP23(DAObject__set) +#define SdaiConnected_edge_set__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_connected_edge_set; + +class SdaiAction; +typedef SdaiAction * SdaiActionH; +typedef SdaiAction * SdaiAction_ptr; +typedef SdaiAction_ptr SdaiAction_var; +#define SdaiAction__set SCLP23(DAObject__set) +#define SdaiAction__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_action; + +class SdaiExecuted_action; +typedef SdaiExecuted_action * SdaiExecuted_actionH; +typedef SdaiExecuted_action * SdaiExecuted_action_ptr; +typedef SdaiExecuted_action_ptr SdaiExecuted_action_var; +#define SdaiExecuted_action__set SCLP23(DAObject__set) +#define SdaiExecuted_action__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_executed_action; + +class SdaiDirected_action; +typedef SdaiDirected_action * SdaiDirected_actionH; +typedef SdaiDirected_action * SdaiDirected_action_ptr; +typedef SdaiDirected_action_ptr SdaiDirected_action_var; +#define SdaiDirected_action__set SCLP23(DAObject__set) +#define SdaiDirected_action__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_directed_action; + +class SdaiOrganizational_project; +typedef SdaiOrganizational_project * SdaiOrganizational_projectH; +typedef SdaiOrganizational_project * SdaiOrganizational_project_ptr; +typedef SdaiOrganizational_project_ptr SdaiOrganizational_project_var; +#define SdaiOrganizational_project__set SCLP23(DAObject__set) +#define SdaiOrganizational_project__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_organizational_project; + +class SdaiDate_time_role; +typedef SdaiDate_time_role * SdaiDate_time_roleH; +typedef SdaiDate_time_role * SdaiDate_time_role_ptr; +typedef SdaiDate_time_role_ptr SdaiDate_time_role_var; +#define SdaiDate_time_role__set SCLP23(DAObject__set) +#define SdaiDate_time_role__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_date_time_role; + +class SdaiCurve_bounded_surface; +typedef SdaiCurve_bounded_surface * SdaiCurve_bounded_surfaceH; +typedef SdaiCurve_bounded_surface * SdaiCurve_bounded_surface_ptr; +typedef SdaiCurve_bounded_surface_ptr SdaiCurve_bounded_surface_var; +#define SdaiCurve_bounded_surface__set SCLP23(DAObject__set) +#define SdaiCurve_bounded_surface__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_curve_bounded_surface; + +class SdaiClosed_shell; +typedef SdaiClosed_shell * SdaiClosed_shellH; +typedef SdaiClosed_shell * SdaiClosed_shell_ptr; +typedef SdaiClosed_shell_ptr SdaiClosed_shell_var; +#define SdaiClosed_shell__set SCLP23(DAObject__set) +#define SdaiClosed_shell__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_closed_shell; + +class SdaiDesign_make_from_relationship; +typedef SdaiDesign_make_from_relationship * SdaiDesign_make_from_relationshipH; +typedef SdaiDesign_make_from_relationship * SdaiDesign_make_from_relationship_ptr; +typedef SdaiDesign_make_from_relationship_ptr SdaiDesign_make_from_relationship_var; +#define SdaiDesign_make_from_relationship__set SCLP23(DAObject__set) +#define SdaiDesign_make_from_relationship__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_design_make_from_relationship; + +class SdaiDefinitional_representation; +typedef SdaiDefinitional_representation * SdaiDefinitional_representationH; +typedef SdaiDefinitional_representation * SdaiDefinitional_representation_ptr; +typedef SdaiDefinitional_representation_ptr SdaiDefinitional_representation_var; +#define SdaiDefinitional_representation__set SCLP23(DAObject__set) +#define SdaiDefinitional_representation__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_definitional_representation; + +class SdaiProduct_definition_shape; +typedef SdaiProduct_definition_shape * SdaiProduct_definition_shapeH; +typedef SdaiProduct_definition_shape * SdaiProduct_definition_shape_ptr; +typedef SdaiProduct_definition_shape_ptr SdaiProduct_definition_shape_var; +#define SdaiProduct_definition_shape__set SCLP23(DAObject__set) +#define SdaiProduct_definition_shape__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_product_definition_shape; + +class SdaiSi_unit; +typedef SdaiSi_unit * SdaiSi_unitH; +typedef SdaiSi_unit * SdaiSi_unit_ptr; +typedef SdaiSi_unit_ptr SdaiSi_unit_var; +#define SdaiSi_unit__set SCLP23(DAObject__set) +#define SdaiSi_unit__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_si_unit; + +class SdaiBezier_surface; +typedef SdaiBezier_surface * SdaiBezier_surfaceH; +typedef SdaiBezier_surface * SdaiBezier_surface_ptr; +typedef SdaiBezier_surface_ptr SdaiBezier_surface_var; +#define SdaiBezier_surface__set SCLP23(DAObject__set) +#define SdaiBezier_surface__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_bezier_surface; + +class SdaiCertification_assignment; +typedef SdaiCertification_assignment * SdaiCertification_assignmentH; +typedef SdaiCertification_assignment * SdaiCertification_assignment_ptr; +typedef SdaiCertification_assignment_ptr SdaiCertification_assignment_var; +#define SdaiCertification_assignment__set SCLP23(DAObject__set) +#define SdaiCertification_assignment__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_certification_assignment; + +class SdaiStart_work; +typedef SdaiStart_work * SdaiStart_workH; +typedef SdaiStart_work * SdaiStart_work_ptr; +typedef SdaiStart_work_ptr SdaiStart_work_var; +#define SdaiStart_work__set SCLP23(DAObject__set) +#define SdaiStart_work__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_start_work; + +class SdaiContract_type; +typedef SdaiContract_type * SdaiContract_typeH; +typedef SdaiContract_type * SdaiContract_type_ptr; +typedef SdaiContract_type_ptr SdaiContract_type_var; +#define SdaiContract_type__set SCLP23(DAObject__set) +#define SdaiContract_type__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_contract_type; + +class SdaiB_spline_curve_with_knots; +typedef SdaiB_spline_curve_with_knots * SdaiB_spline_curve_with_knotsH; +typedef SdaiB_spline_curve_with_knots * SdaiB_spline_curve_with_knots_ptr; +typedef SdaiB_spline_curve_with_knots_ptr SdaiB_spline_curve_with_knots_var; +#define SdaiB_spline_curve_with_knots__set SCLP23(DAObject__set) +#define SdaiB_spline_curve_with_knots__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_b_spline_curve_with_knots; + +class SdaiCc_design_approval; +typedef SdaiCc_design_approval * SdaiCc_design_approvalH; +typedef SdaiCc_design_approval * SdaiCc_design_approval_ptr; +typedef SdaiCc_design_approval_ptr SdaiCc_design_approval_var; +#define SdaiCc_design_approval__set SCLP23(DAObject__set) +#define SdaiCc_design_approval__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_cc_design_approval; + +class SdaiEdge_based_wireframe_shape_representation; +typedef SdaiEdge_based_wireframe_shape_representation * SdaiEdge_based_wireframe_shape_representationH; +typedef SdaiEdge_based_wireframe_shape_representation * SdaiEdge_based_wireframe_shape_representation_ptr; +typedef SdaiEdge_based_wireframe_shape_representation_ptr SdaiEdge_based_wireframe_shape_representation_var; +#define SdaiEdge_based_wireframe_shape_representation__set SCLP23(DAObject__set) +#define SdaiEdge_based_wireframe_shape_representation__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_edge_based_wireframe_shape_representation; + +class SdaiGeometrically_bounded_wireframe_shape_representation; +typedef SdaiGeometrically_bounded_wireframe_shape_representation * SdaiGeometrically_bounded_wireframe_shape_representationH; +typedef SdaiGeometrically_bounded_wireframe_shape_representation * SdaiGeometrically_bounded_wireframe_shape_representation_ptr; +typedef SdaiGeometrically_bounded_wireframe_shape_representation_ptr SdaiGeometrically_bounded_wireframe_shape_representation_var; +#define SdaiGeometrically_bounded_wireframe_shape_representation__set SCLP23(DAObject__set) +#define SdaiGeometrically_bounded_wireframe_shape_representation__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_geometrically_bounded_wireframe_shape_representation; + +class SdaiProduct_concept; +typedef SdaiProduct_concept * SdaiProduct_conceptH; +typedef SdaiProduct_concept * SdaiProduct_concept_ptr; +typedef SdaiProduct_concept_ptr SdaiProduct_concept_var; +#define SdaiProduct_concept__set SCLP23(DAObject__set) +#define SdaiProduct_concept__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_product_concept; + +class SdaiCc_design_contract; +typedef SdaiCc_design_contract * SdaiCc_design_contractH; +typedef SdaiCc_design_contract * SdaiCc_design_contract_ptr; +typedef SdaiCc_design_contract_ptr SdaiCc_design_contract_var; +#define SdaiCc_design_contract__set SCLP23(DAObject__set) +#define SdaiCc_design_contract__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_cc_design_contract; + +class SdaiSeam_curve; +typedef SdaiSeam_curve * SdaiSeam_curveH; +typedef SdaiSeam_curve * SdaiSeam_curve_ptr; +typedef SdaiSeam_curve_ptr SdaiSeam_curve_var; +#define SdaiSeam_curve__set SCLP23(DAObject__set) +#define SdaiSeam_curve__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_seam_curve; + +class SdaiAxis2_placement_3d; +typedef SdaiAxis2_placement_3d * SdaiAxis2_placement_3dH; +typedef SdaiAxis2_placement_3d * SdaiAxis2_placement_3d_ptr; +typedef SdaiAxis2_placement_3d_ptr SdaiAxis2_placement_3d_var; +#define SdaiAxis2_placement_3d__set SCLP23(DAObject__set) +#define SdaiAxis2_placement_3d__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_axis2_placement_3d; + +class SdaiRational_b_spline_surface; +typedef SdaiRational_b_spline_surface * SdaiRational_b_spline_surfaceH; +typedef SdaiRational_b_spline_surface * SdaiRational_b_spline_surface_ptr; +typedef SdaiRational_b_spline_surface_ptr SdaiRational_b_spline_surface_var; +#define SdaiRational_b_spline_surface__set SCLP23(DAObject__set) +#define SdaiRational_b_spline_surface__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_rational_b_spline_surface; + +class SdaiConfiguration_design; +typedef SdaiConfiguration_design * SdaiConfiguration_designH; +typedef SdaiConfiguration_design * SdaiConfiguration_design_ptr; +typedef SdaiConfiguration_design_ptr SdaiConfiguration_design_var; +#define SdaiConfiguration_design__set SCLP23(DAObject__set) +#define SdaiConfiguration_design__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_configuration_design; + +class SdaiDesign_context; +typedef SdaiDesign_context * SdaiDesign_contextH; +typedef SdaiDesign_context * SdaiDesign_context_ptr; +typedef SdaiDesign_context_ptr SdaiDesign_context_var; +#define SdaiDesign_context__set SCLP23(DAObject__set) +#define SdaiDesign_context__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_design_context; + +class SdaiProduct_definition; +typedef SdaiProduct_definition * SdaiProduct_definitionH; +typedef SdaiProduct_definition * SdaiProduct_definition_ptr; +typedef SdaiProduct_definition_ptr SdaiProduct_definition_var; +#define SdaiProduct_definition__set SCLP23(DAObject__set) +#define SdaiProduct_definition__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_product_definition; + +class SdaiProduct_definition_with_associated_documents; +typedef SdaiProduct_definition_with_associated_documents * SdaiProduct_definition_with_associated_documentsH; +typedef SdaiProduct_definition_with_associated_documents * SdaiProduct_definition_with_associated_documents_ptr; +typedef SdaiProduct_definition_with_associated_documents_ptr SdaiProduct_definition_with_associated_documents_var; +#define SdaiProduct_definition_with_associated_documents__set SCLP23(DAObject__set) +#define SdaiProduct_definition_with_associated_documents__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_product_definition_with_associated_documents; + +class SdaiOrganization; +typedef SdaiOrganization * SdaiOrganizationH; +typedef SdaiOrganization * SdaiOrganization_ptr; +typedef SdaiOrganization_ptr SdaiOrganization_var; +#define SdaiOrganization__set SCLP23(DAObject__set) +#define SdaiOrganization__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_organization; + +class SdaiCc_design_certification; +typedef SdaiCc_design_certification * SdaiCc_design_certificationH; +typedef SdaiCc_design_certification * SdaiCc_design_certification_ptr; +typedef SdaiCc_design_certification_ptr SdaiCc_design_certification_var; +#define SdaiCc_design_certification__set SCLP23(DAObject__set) +#define SdaiCc_design_certification__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_cc_design_certification; + +class SdaiB_spline_surface_with_knots; +typedef SdaiB_spline_surface_with_knots * SdaiB_spline_surface_with_knotsH; +typedef SdaiB_spline_surface_with_knots * SdaiB_spline_surface_with_knots_ptr; +typedef SdaiB_spline_surface_with_knots_ptr SdaiB_spline_surface_with_knots_var; +#define SdaiB_spline_surface_with_knots__set SCLP23(DAObject__set) +#define SdaiB_spline_surface_with_knots__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_b_spline_surface_with_knots; + +class SdaiCertification_type; +typedef SdaiCertification_type * SdaiCertification_typeH; +typedef SdaiCertification_type * SdaiCertification_type_ptr; +typedef SdaiCertification_type_ptr SdaiCertification_type_var; +#define SdaiCertification_type__set SCLP23(DAObject__set) +#define SdaiCertification_type__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_certification_type; + +class SdaiOriented_path; +typedef SdaiOriented_path * SdaiOriented_pathH; +typedef SdaiOriented_path * SdaiOriented_path_ptr; +typedef SdaiOriented_path_ptr SdaiOriented_path_var; +#define SdaiOriented_path__set SCLP23(DAObject__set) +#define SdaiOriented_path__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_oriented_path; + +class SdaiSecurity_classification; +typedef SdaiSecurity_classification * SdaiSecurity_classificationH; +typedef SdaiSecurity_classification * SdaiSecurity_classification_ptr; +typedef SdaiSecurity_classification_ptr SdaiSecurity_classification_var; +#define SdaiSecurity_classification__set SCLP23(DAObject__set) +#define SdaiSecurity_classification__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_security_classification; + +class SdaiVertex_loop; +typedef SdaiVertex_loop * SdaiVertex_loopH; +typedef SdaiVertex_loop * SdaiVertex_loop_ptr; +typedef SdaiVertex_loop_ptr SdaiVertex_loop_var; +#define SdaiVertex_loop__set SCLP23(DAObject__set) +#define SdaiVertex_loop__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_vertex_loop; + +class SdaiApproval_status; +typedef SdaiApproval_status * SdaiApproval_statusH; +typedef SdaiApproval_status * SdaiApproval_status_ptr; +typedef SdaiApproval_status_ptr SdaiApproval_status_var; +#define SdaiApproval_status__set SCLP23(DAObject__set) +#define SdaiApproval_status__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_approval_status; + +class SdaiCartesian_point; +typedef SdaiCartesian_point * SdaiCartesian_pointH; +typedef SdaiCartesian_point * SdaiCartesian_point_ptr; +typedef SdaiCartesian_point_ptr SdaiCartesian_point_var; +#define SdaiCartesian_point__set SCLP23(DAObject__set) +#define SdaiCartesian_point__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_cartesian_point; + +class SdaiDate_and_time_assignment; +typedef SdaiDate_and_time_assignment * SdaiDate_and_time_assignmentH; +typedef SdaiDate_and_time_assignment * SdaiDate_and_time_assignment_ptr; +typedef SdaiDate_and_time_assignment_ptr SdaiDate_and_time_assignment_var; +#define SdaiDate_and_time_assignment__set SCLP23(DAObject__set) +#define SdaiDate_and_time_assignment__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_date_and_time_assignment; + +class SdaiParametric_representation_context; +typedef SdaiParametric_representation_context * SdaiParametric_representation_contextH; +typedef SdaiParametric_representation_context * SdaiParametric_representation_context_ptr; +typedef SdaiParametric_representation_context_ptr SdaiParametric_representation_context_var; +#define SdaiParametric_representation_context__set SCLP23(DAObject__set) +#define SdaiParametric_representation_context__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_parametric_representation_context; + +class SdaiProduct_concept_context; +typedef SdaiProduct_concept_context * SdaiProduct_concept_contextH; +typedef SdaiProduct_concept_context * SdaiProduct_concept_context_ptr; +typedef SdaiProduct_concept_context_ptr SdaiProduct_concept_context_var; +#define SdaiProduct_concept_context__set SCLP23(DAObject__set) +#define SdaiProduct_concept_context__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_product_concept_context; + +class SdaiCartesian_transformation_operator_2d; +typedef SdaiCartesian_transformation_operator_2d * SdaiCartesian_transformation_operator_2dH; +typedef SdaiCartesian_transformation_operator_2d * SdaiCartesian_transformation_operator_2d_ptr; +typedef SdaiCartesian_transformation_operator_2d_ptr SdaiCartesian_transformation_operator_2d_var; +#define SdaiCartesian_transformation_operator_2d__set SCLP23(DAObject__set) +#define SdaiCartesian_transformation_operator_2d__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_cartesian_transformation_operator_2d; + +class SdaiSurface_patch; +typedef SdaiSurface_patch * SdaiSurface_patchH; +typedef SdaiSurface_patch * SdaiSurface_patch_ptr; +typedef SdaiSurface_patch_ptr SdaiSurface_patch_var; +#define SdaiSurface_patch__set SCLP23(DAObject__set) +#define SdaiSurface_patch__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_surface_patch; + +class SdaiLength_unit; +typedef SdaiLength_unit * SdaiLength_unitH; +typedef SdaiLength_unit * SdaiLength_unit_ptr; +typedef SdaiLength_unit_ptr SdaiLength_unit_var; +#define SdaiLength_unit__set SCLP23(DAObject__set) +#define SdaiLength_unit__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_length_unit; + +class SdaiShape_aspect; +typedef SdaiShape_aspect * SdaiShape_aspectH; +typedef SdaiShape_aspect * SdaiShape_aspect_ptr; +typedef SdaiShape_aspect_ptr SdaiShape_aspect_var; +#define SdaiShape_aspect__set SCLP23(DAObject__set) +#define SdaiShape_aspect__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_shape_aspect; + +class SdaiVolume_measure_with_unit; +typedef SdaiVolume_measure_with_unit * SdaiVolume_measure_with_unitH; +typedef SdaiVolume_measure_with_unit * SdaiVolume_measure_with_unit_ptr; +typedef SdaiVolume_measure_with_unit_ptr SdaiVolume_measure_with_unit_var; +#define SdaiVolume_measure_with_unit__set SCLP23(DAObject__set) +#define SdaiVolume_measure_with_unit__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_volume_measure_with_unit; + +class SdaiAdvanced_face; +typedef SdaiAdvanced_face * SdaiAdvanced_faceH; +typedef SdaiAdvanced_face * SdaiAdvanced_face_ptr; +typedef SdaiAdvanced_face_ptr SdaiAdvanced_face_var; +#define SdaiAdvanced_face__set SCLP23(DAObject__set) +#define SdaiAdvanced_face__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_advanced_face; + +class SdaiSecurity_classification_level; +typedef SdaiSecurity_classification_level * SdaiSecurity_classification_levelH; +typedef SdaiSecurity_classification_level * SdaiSecurity_classification_level_ptr; +typedef SdaiSecurity_classification_level_ptr SdaiSecurity_classification_level_var; +#define SdaiSecurity_classification_level__set SCLP23(DAObject__set) +#define SdaiSecurity_classification_level__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_security_classification_level; + +class SdaiApproval_relationship; +typedef SdaiApproval_relationship * SdaiApproval_relationshipH; +typedef SdaiApproval_relationship * SdaiApproval_relationship_ptr; +typedef SdaiApproval_relationship_ptr SdaiApproval_relationship_var; +#define SdaiApproval_relationship__set SCLP23(DAObject__set) +#define SdaiApproval_relationship__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_approval_relationship; + +class SdaiPolyline; +typedef SdaiPolyline * SdaiPolylineH; +typedef SdaiPolyline * SdaiPolyline_ptr; +typedef SdaiPolyline_ptr SdaiPolyline_var; +#define SdaiPolyline__set SCLP23(DAObject__set) +#define SdaiPolyline__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_polyline; + +class SdaiApproval_person_organization; +typedef SdaiApproval_person_organization * SdaiApproval_person_organizationH; +typedef SdaiApproval_person_organization * SdaiApproval_person_organization_ptr; +typedef SdaiApproval_person_organization_ptr SdaiApproval_person_organization_var; +#define SdaiApproval_person_organization__set SCLP23(DAObject__set) +#define SdaiApproval_person_organization__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_approval_person_organization; + +class SdaiSurface_replica; +typedef SdaiSurface_replica * SdaiSurface_replicaH; +typedef SdaiSurface_replica * SdaiSurface_replica_ptr; +typedef SdaiSurface_replica_ptr SdaiSurface_replica_var; +#define SdaiSurface_replica__set SCLP23(DAObject__set) +#define SdaiSurface_replica__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_surface_replica; + +class SdaiSecurity_classification_assignment; +typedef SdaiSecurity_classification_assignment * SdaiSecurity_classification_assignmentH; +typedef SdaiSecurity_classification_assignment * SdaiSecurity_classification_assignment_ptr; +typedef SdaiSecurity_classification_assignment_ptr SdaiSecurity_classification_assignment_var; +#define SdaiSecurity_classification_assignment__set SCLP23(DAObject__set) +#define SdaiSecurity_classification_assignment__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_security_classification_assignment; + +class SdaiCc_design_security_classification; +typedef SdaiCc_design_security_classification * SdaiCc_design_security_classificationH; +typedef SdaiCc_design_security_classification * SdaiCc_design_security_classification_ptr; +typedef SdaiCc_design_security_classification_ptr SdaiCc_design_security_classification_var; +#define SdaiCc_design_security_classification__set SCLP23(DAObject__set) +#define SdaiCc_design_security_classification__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_cc_design_security_classification; + +class SdaiFaceted_brep_shape_representation; +typedef SdaiFaceted_brep_shape_representation * SdaiFaceted_brep_shape_representationH; +typedef SdaiFaceted_brep_shape_representation * SdaiFaceted_brep_shape_representation_ptr; +typedef SdaiFaceted_brep_shape_representation_ptr SdaiFaceted_brep_shape_representation_var; +#define SdaiFaceted_brep_shape_representation__set SCLP23(DAObject__set) +#define SdaiFaceted_brep_shape_representation__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_faceted_brep_shape_representation; + +class SdaiDocument_usage_constraint; +typedef SdaiDocument_usage_constraint * SdaiDocument_usage_constraintH; +typedef SdaiDocument_usage_constraint * SdaiDocument_usage_constraint_ptr; +typedef SdaiDocument_usage_constraint_ptr SdaiDocument_usage_constraint_var; +#define SdaiDocument_usage_constraint__set SCLP23(DAObject__set) +#define SdaiDocument_usage_constraint__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_document_usage_constraint; + +class SdaiVertex_point; +typedef SdaiVertex_point * SdaiVertex_pointH; +typedef SdaiVertex_point * SdaiVertex_point_ptr; +typedef SdaiVertex_point_ptr SdaiVertex_point_var; +#define SdaiVertex_point__set SCLP23(DAObject__set) +#define SdaiVertex_point__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_vertex_point; + +class SdaiCc_design_date_and_time_assignment; +typedef SdaiCc_design_date_and_time_assignment * SdaiCc_design_date_and_time_assignmentH; +typedef SdaiCc_design_date_and_time_assignment * SdaiCc_design_date_and_time_assignment_ptr; +typedef SdaiCc_design_date_and_time_assignment_ptr SdaiCc_design_date_and_time_assignment_var; +#define SdaiCc_design_date_and_time_assignment__set SCLP23(DAObject__set) +#define SdaiCc_design_date_and_time_assignment__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_cc_design_date_and_time_assignment; + +class SdaiOriented_closed_shell; +typedef SdaiOriented_closed_shell * SdaiOriented_closed_shellH; +typedef SdaiOriented_closed_shell * SdaiOriented_closed_shell_ptr; +typedef SdaiOriented_closed_shell_ptr SdaiOriented_closed_shell_var; +#define SdaiOriented_closed_shell__set SCLP23(DAObject__set) +#define SdaiOriented_closed_shell__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_oriented_closed_shell; + +class SdaiPerson_and_organization; +typedef SdaiPerson_and_organization * SdaiPerson_and_organizationH; +typedef SdaiPerson_and_organization * SdaiPerson_and_organization_ptr; +typedef SdaiPerson_and_organization_ptr SdaiPerson_and_organization_var; +#define SdaiPerson_and_organization__set SCLP23(DAObject__set) +#define SdaiPerson_and_organization__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_person_and_organization; + +class SdaiCylindrical_surface; +typedef SdaiCylindrical_surface * SdaiCylindrical_surfaceH; +typedef SdaiCylindrical_surface * SdaiCylindrical_surface_ptr; +typedef SdaiCylindrical_surface_ptr SdaiCylindrical_surface_var; +#define SdaiCylindrical_surface__set SCLP23(DAObject__set) +#define SdaiCylindrical_surface__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_cylindrical_surface; + +class SdaiLocal_time; +typedef SdaiLocal_time * SdaiLocal_timeH; +typedef SdaiLocal_time * SdaiLocal_time_ptr; +typedef SdaiLocal_time_ptr SdaiLocal_time_var; +#define SdaiLocal_time__set SCLP23(DAObject__set) +#define SdaiLocal_time__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_local_time; + +class SdaiMass_unit; +typedef SdaiMass_unit * SdaiMass_unitH; +typedef SdaiMass_unit * SdaiMass_unit_ptr; +typedef SdaiMass_unit_ptr SdaiMass_unit_var; +#define SdaiMass_unit__set SCLP23(DAObject__set) +#define SdaiMass_unit__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_mass_unit; + +class SdaiVertex_shell; +typedef SdaiVertex_shell * SdaiVertex_shellH; +typedef SdaiVertex_shell * SdaiVertex_shell_ptr; +typedef SdaiVertex_shell_ptr SdaiVertex_shell_var; +#define SdaiVertex_shell__set SCLP23(DAObject__set) +#define SdaiVertex_shell__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_vertex_shell; + +class SdaiPoly_loop; +typedef SdaiPoly_loop * SdaiPoly_loopH; +typedef SdaiPoly_loop * SdaiPoly_loop_ptr; +typedef SdaiPoly_loop_ptr SdaiPoly_loop_var; +#define SdaiPoly_loop__set SCLP23(DAObject__set) +#define SdaiPoly_loop__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_poly_loop; + +class SdaiWire_shell; +typedef SdaiWire_shell * SdaiWire_shellH; +typedef SdaiWire_shell * SdaiWire_shell_ptr; +typedef SdaiWire_shell_ptr SdaiWire_shell_var; +#define SdaiWire_shell__set SCLP23(DAObject__set) +#define SdaiWire_shell__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_wire_shell; + +class SdaiArea_unit; +typedef SdaiArea_unit * SdaiArea_unitH; +typedef SdaiArea_unit * SdaiArea_unit_ptr; +typedef SdaiArea_unit_ptr SdaiArea_unit_var; +#define SdaiArea_unit__set SCLP23(DAObject__set) +#define SdaiArea_unit__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_area_unit; + +class SdaiMapped_item; +typedef SdaiMapped_item * SdaiMapped_itemH; +typedef SdaiMapped_item * SdaiMapped_item_ptr; +typedef SdaiMapped_item_ptr SdaiMapped_item_var; +#define SdaiMapped_item__set SCLP23(DAObject__set) +#define SdaiMapped_item__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_mapped_item; + +class SdaiOffset_curve_2d; +typedef SdaiOffset_curve_2d * SdaiOffset_curve_2dH; +typedef SdaiOffset_curve_2d * SdaiOffset_curve_2d_ptr; +typedef SdaiOffset_curve_2d_ptr SdaiOffset_curve_2d_var; +#define SdaiOffset_curve_2d__set SCLP23(DAObject__set) +#define SdaiOffset_curve_2d__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_offset_curve_2d; + +class SdaiShape_definition_representation; +typedef SdaiShape_definition_representation * SdaiShape_definition_representationH; +typedef SdaiShape_definition_representation * SdaiShape_definition_representation_ptr; +typedef SdaiShape_definition_representation_ptr SdaiShape_definition_representation_var; +#define SdaiShape_definition_representation__set SCLP23(DAObject__set) +#define SdaiShape_definition_representation__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_shape_definition_representation; + +class SdaiVolume_unit; +typedef SdaiVolume_unit * SdaiVolume_unitH; +typedef SdaiVolume_unit * SdaiVolume_unit_ptr; +typedef SdaiVolume_unit_ptr SdaiVolume_unit_var; +#define SdaiVolume_unit__set SCLP23(DAObject__set) +#define SdaiVolume_unit__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_volume_unit; + +class SdaiConical_surface; +typedef SdaiConical_surface * SdaiConical_surfaceH; +typedef SdaiConical_surface * SdaiConical_surface_ptr; +typedef SdaiConical_surface_ptr SdaiConical_surface_var; +#define SdaiConical_surface__set SCLP23(DAObject__set) +#define SdaiConical_surface__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_conical_surface; + +class SdaiGlobal_unit_assigned_context; +typedef SdaiGlobal_unit_assigned_context * SdaiGlobal_unit_assigned_contextH; +typedef SdaiGlobal_unit_assigned_context * SdaiGlobal_unit_assigned_context_ptr; +typedef SdaiGlobal_unit_assigned_context_ptr SdaiGlobal_unit_assigned_context_var; +#define SdaiGlobal_unit_assigned_context__set SCLP23(DAObject__set) +#define SdaiGlobal_unit_assigned_context__set_var SCLP23(DAObject__set_var) +extern EntityDescriptor *config_control_designe_global_unit_assigned_context; + +// Aggregate types (from all schemas) which depend on other types: +typedef SdaiReversible_topology_items SdaiSet_of_reversible_topology_item; +typedef SdaiSet_of_reversible_topology_item * SdaiSet_of_reversible_topology_itemH; +typedef SdaiSet_of_reversible_topology_item * SdaiSet_of_reversible_topology_item_ptr; +typedef SdaiReversible_topology_items SdaiList_of_reversible_topology_item; +typedef SdaiList_of_reversible_topology_item * SdaiList_of_reversible_topology_itemH; +typedef SdaiList_of_reversible_topology_item * SdaiList_of_reversible_topology_item_ptr; + +#endif diff --git a/source/geometry/solids/STEP/include/Select.h b/source/geometry/solids/STEP/include/Select.h new file mode 100644 index 0000000000..2c3ef66df7 --- /dev/null +++ b/source/geometry/solids/STEP/include/Select.h @@ -0,0 +1,28 @@ + +#include + +class Select { + public: + SCLstring _underlying_typename; + + Select(); + //Select(const Select&); + virtual ~Select(); + + virtual char * Underlying_typeName const + { return _underlying_typename.chars(); } + +// const Named_type_ptr Underlying_type() const; + + // return 0 if unset, otherwise return 1 + virtual int exists() const=0; + + // change the receiver to an unset state. + virtual void nullify() =0; + + // Set the type of the select's immediate underlying type. This function + // shall only be used for the special case of a complex select which + // contains at least two underlying types which ultimately resolve to + // the same EXPRESS type. +// void SetUnderlying_type(const char * typename); +}; diff --git a/source/geometry/solids/STEP/include/SingleLinkList.h b/source/geometry/solids/STEP/include/SingleLinkList.h index b96f7ca471..6aa51cc0f7 100644 --- a/source/geometry/solids/STEP/include/SingleLinkList.h +++ b/source/geometry/solids/STEP/include/SingleLinkList.h @@ -1,20 +1,10 @@ - - -// - - - -// -// $Id: SingleLinkList.h,v 1.2 1999/05/21 20:20:36 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// #ifndef singlelinklist_h #define singlelinklist_h /* * NIST STEP Core Class Library * clstepcore/SingleLinkList.h -* May 1995 +* April 1997 * David Sauder * KC Morris @@ -22,25 +12,16 @@ * and is not subject to copyright. */ -/* */ +/* $Id: SingleLinkList.h,v 1.3 2000/01/21 13:42:37 gcosmo Exp $ */ + +#ifdef __OSTORE__ +#include // Required to access ObjectStore Class Library +#endif #ifdef __O3DB__ #include #endif -class SingleLinkNode { - friend class SingleLinkList; - protected: - - public: - SingleLinkNode* next; - - public: - virtual SingleLinkNode *NextNode () const; - SingleLinkNode() { next =0; } - virtual ~SingleLinkNode() { } -}; - class SingleLinkList { // node which represents the value is contained in the subclass @@ -48,22 +29,46 @@ class SingleLinkList { protected: - SingleLinkNode * head; + class SingleLinkNode * head; SingleLinkNode * tail; public: virtual SingleLinkNode *NewNode(); virtual void AppendNode (SingleLinkNode *); + virtual void DeleteNode (SingleLinkNode *); virtual void Empty (); + virtual void DeleteFollowingNodes (SingleLinkNode *); virtual SingleLinkNode * GetHead () const; int EntryCount() const; SingleLinkList (); virtual ~SingleLinkList (); - + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif +} +; + + +class SingleLinkNode { + friend class SingleLinkList; + protected: + + public: + SingleLinkList *owner; + SingleLinkNode *next; + + virtual SingleLinkNode *NextNode () const; + SingleLinkNode() : owner(0), next(0) { } + virtual ~SingleLinkNode() { } + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; #endif diff --git a/source/geometry/solids/STEP/include/Str.h b/source/geometry/solids/STEP/include/Str.h index 5a8e41f439..1a827ec0a8 100644 --- a/source/geometry/solids/STEP/include/Str.h +++ b/source/geometry/solids/STEP/include/Str.h @@ -1,21 +1,11 @@ - -// - - - -// -// $Id: Str.h,v 1.3 1999/12/15 14:50:15 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - #ifndef STR_H #define STR_H /* * NIST Utils Class Library * clutils/Str.h -* May 1995 +* April 1997 * K. C. Morris * David Sauder @@ -23,7 +13,7 @@ * and is not subject to copyright. */ -/* */ +/* $Id: Str.h,v 1.4 2000/01/21 13:42:37 gcosmo Exp $ */ #ifdef __O3DB__ #include @@ -41,14 +31,16 @@ #include #include -char ToLower (const char c); -char ToUpper (const char c); +char ToLower (const char c); +char ToUpper (const char c); +char * StrToLower (const char *, char *); const char * StrToLower (const char * word, SCLstring &s); const char * StrToUpper (const char * word, SCLstring &s); const char * StrToConstant (const char * word, SCLstring &s); const char * PrettyTmpName (const char * oldname); -char * PrettyNewName (const char * oldname); -char * EntityClassName ( char * oldname); +char * PrettyNewName (const char * oldname); +int StrCmpIns (const char *, const char *); +char * EntityClassName ( char * oldname); extern Severity CheckRemainingInput (G4std::istream &in, ErrorDescriptor *err, diff --git a/source/geometry/solids/STEP/include/baseType.h b/source/geometry/solids/STEP/include/baseType.h index acf815c357..e029014a31 100644 --- a/source/geometry/solids/STEP/include/baseType.h +++ b/source/geometry/solids/STEP/include/baseType.h @@ -1,20 +1,10 @@ - - -// - - - -// -// $Id: baseType.h,v 1.2 1999/05/21 20:20:37 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// #ifndef BASETYPE_H #define BASETYPE_H /* * NIST STEP Core Class Library * clstepcore/baseType.h -* May 1995 +* April 1997 * David Sauder * KC Morris @@ -22,7 +12,7 @@ * and is not subject to copyright. */ -/* */ +/* $Id: baseType.h,v 1.3 2000/01/21 13:42:37 gcosmo Exp $ */ #ifdef __O3DB__ #include @@ -30,19 +20,22 @@ // ************** TYPES of attributes +// IMS, 9 Aug 95: changed values to make these values usable in a bitmask + enum PrimitiveType { - sdaiINTEGER = 0, - sdaiREAL, - sdaiBOOLEAN, - sdaiLOGICAL, - sdaiSTRING, - sdaiBINARY, - sdaiENUMERATION, - sdaiSELECT, - sdaiINSTANCE, - sdaiAGGR, - sdaiNUMBER, + sdaiINTEGER = 0x0001, + sdaiREAL = 0x0002, + sdaiBOOLEAN = 0x0004, + sdaiLOGICAL = 0x0008, + sdaiSTRING = 0x0010, + sdaiBINARY = 0x0020, + sdaiENUMERATION = 0x0040, + sdaiSELECT = 0x0080, + sdaiINSTANCE = 0x0100, + sdaiAGGR = 0x0200, + sdaiNUMBER = 0x0400, // The elements defined below are not part of part 23 +// (IMS: these should not be used as bitmask fields) ARRAY_TYPE, // DAS BAG_TYPE, // DAS SET_TYPE, // DAS diff --git a/source/geometry/solids/STEP/include/classes.h b/source/geometry/solids/STEP/include/classes.h index b92a74c36a..21aa298780 100644 --- a/source/geometry/solids/STEP/include/classes.h +++ b/source/geometry/solids/STEP/include/classes.h @@ -5,8 +5,8 @@ // -// $Id: classes.h,v 1.2 1999/05/21 20:20:37 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: classes.h,v 1.3 2000/01/21 13:42:37 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // /* ** Fed-x parser output module for generating C++ class definitions diff --git a/source/geometry/solids/STEP/include/cmdmgr.h b/source/geometry/solids/STEP/include/cmdmgr.h index a3215de550..4d46eb4fd1 100644 --- a/source/geometry/solids/STEP/include/cmdmgr.h +++ b/source/geometry/solids/STEP/include/cmdmgr.h @@ -1,20 +1,10 @@ - - -// - - - -// -// $Id: cmdmgr.h,v 1.2 1999/05/21 20:20:38 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// #ifndef cmdmgr_h #define cmdmgr_h /* * NIST STEP Editor Class Library * cleditor/cmdmgr.h -* May 1995 +* April 1997 * David Sauder * K. C. Morris @@ -22,7 +12,7 @@ * and is not subject to copyright. */ -/* */ +/* $Id: cmdmgr.h,v 1.3 2000/01/21 13:42:38 gcosmo Exp $ */ #ifdef __O3DB__ #include @@ -30,6 +20,7 @@ #include #include +//#include #include #include @@ -102,7 +93,7 @@ class ReplicateLinkNode : public SingleLinkNode { ReplicateLinkNode() { _repNode = 0; } ~ReplicateLinkNode() { } - char *ClassName () { return "ReplicateLinkNode"; } + char *ClassName () { return (char*)("ReplicateLinkNode"); } MgrNode *ReplicateNode() { return _repNode; } void ReplicateNode(MgrNode *rn) { _repNode = rn; } @@ -130,7 +121,7 @@ class ReplicateList : public SingleLinkList { BOOLEAN Remove(ReplicateLinkNode *rln); BOOLEAN Remove(MgrNode *rn); - char *ClassName () { return "ReplicateList"; } + char *ClassName () { return (char*)("ReplicateList"); } }; /////////////////////////////////////////////////////////////////////////////// @@ -163,10 +154,10 @@ protected: void ClearReplicateEntries() { replicateList->Empty(); } ReplicateList *RepList() { return replicateList; } - // searches current List for fileId + // searches current list for fileId MgrNode *StateFindFileId(stateEnum s, int fileId); // returns stateNext or statePrev member variables - // i.e. next or previous node on curr state List + // i.e. next or previous node on curr state list int SaveCompleteCmdList(MgrNode *mn) { return mn->ChangeList(completeList); } diff --git a/source/geometry/solids/STEP/include/complexSupport.h b/source/geometry/solids/STEP/include/complexSupport.h new file mode 100644 index 0000000000..df2eafd458 --- /dev/null +++ b/source/geometry/solids/STEP/include/complexSupport.h @@ -0,0 +1,351 @@ +#ifndef COMPLEXSUP_H +#define COMPLEXSUP_H + +/***************************************************************************** + * complexSupport.h * + * * + * Description: Slightly simplified version of fedex_plus's complexSupport.h.* + * This version works with the SCL and is used to validate * + * complex entities (user requests to build them). It does not * + * contain info for building these structures from a fedex * + * Express object, as the fedex_plus version. * + * * + * Created by: David Rosenfeld * + * Date: 5/9/97 * + *****************************************************************************/ + +#include "g4std/iostream" +#include "g4std/fstream" +/* +extern "C" +{ +#include +#include +#include +} +*/ +#include "Str.h" + +#define FALSE 0 +#define TRUE 1 +#define LISTEND 999 +// LISTEND signifies that an OrList has gone beyond its last viable choice +// among its children. + +enum MarkType { + NOMARK, ORMARK, MARK +}; +// MARK is the usual value we'd mark with. If we mark with ORMARK, it means +// an OrList marked this node, so we'll know it may become unmarked later if +// we try another choice. + +enum MatchType { + UNKNOWN, UNSATISFIED, SATISFIED, MATCHSOME, MATCHALL, NEWCHOICE, NOMORE +}; +// These are the conditions the EntList::match() functions may return. They +// are also the assigned values to EntList::viable. +// +// UNKNOWN - The default EntList::viable value - before any matching +// has been attempted. +// UNSATISFIED - EntList had conditions that EntNode did not satisfy (e.g., +// EntList specified A AND B while EntNode only contained an +// A). +// SATISFIED - EntList had no conditions EntNode did not meet. But, +// EntList did not match (mark) any nodes of EntNode which +// were not already matched. +// MATCHSOME - EntList matched some of the nodes in EntNode. +// MATCHALL - EntList matched all the nodes in EntNode (complex entity +// can be instantiated). +// MORECHOICES - Special case - when trying alternate OR paths, this return +// value signifies that we have found another choice. +// NOMORE - Special case - when trying alternate OR paths, this return +// value signifies that no more alternates within this path. + +enum JoinType { + SIMPLE, AND, OR, ANDOR +}; + +class SimpleList; +class MultList; +class JoinList; +class AndOrList; +class AndList; +class OrList; +class ComplexList; +class ComplexCollect; + +class EntNode { + friend class SimpleList; + friend class AndOrList; + friend class AndList; + friend class OrList; + friend class ComplexList; + + public: + EntNode( const char *nm="" ) : next(0), mark(NOMARK), multSupers(0) + { StrToLower( nm, name ); } + EntNode( const char ** ); // given a list, create a + ~EntNode() { if ( next ) delete next; } // linked list of EntNodes + + operator const char *() { return name; } + + // Added missing return types to following operator definitions - GC + + int operator== ( EntNode &ent ) + { return ( strcmp( name, ent.name ) == 0 ); } + int operator< ( EntNode &ent ) + { return ( strcmp( name, ent.name ) < 0 ); } + int operator> ( EntNode &ent ) + { return ( strcmp( name, ent.name ) > 0 ); } + EntNode &operator= ( EntNode &ent ); + void Name( const char *nm ) { strncpy( name, nm, BUFSIZ-1 ); } + const char *Name() { return name; } + void setmark( MarkType stamp=MARK ) { mark = stamp; } + void markAll( MarkType=MARK ); + void unmarkAll() { markAll( NOMARK ); } + int marked( MarkType base=ORMARK ) { return ( mark >= base ); } + int allMarked(); // returns TRUE if all nodes in list are marked + int unmarkedCount(); + int multSuprs() { return multSupers; } + void multSuprs( int j ) { multSupers = j; } + void sort( EntNode ** ); + + EntNode *next; + + private: + MarkType mark; + char name[BUFSIZ]; + int multSupers; // do I correspond to an entity with >1 supertype? + EntNode *lastSmaller( EntNode * ); // used by ::sort() +}; + +class EntList { + friend class MultList; + friend class JoinList; + friend class OrList; + friend class ComplexList; + friend class ComplexCollect; + friend G4std::ostream & operator<< ( G4std::ostream &, EntList & ); + friend G4std::ostream & operator<< ( G4std::ostream &, MultList & ); + + public: + EntList( JoinType j ) : join(j), prev(0), next(0), viable(UNKNOWN), + level(0) {} + virtual ~EntList() {} + MatchType viableVal() { return viable; } + virtual void setLevel( int l ) { level = l; } + virtual int contains( char * ) =0; + virtual int hit( char * ) =0; + virtual MatchType matchNonORs( EntNode * ) { return UNKNOWN; } + virtual int acceptChoice( EntNode * ) =0; + virtual void unmarkAll( EntNode * ) =0; + virtual void reset() { viable = UNKNOWN; } + int siblings(); + + // List access functions. They access desired children based on their + // join or viable values. Below is an incomplete list of possible fns, + // but all we need. + EntList *firstNot( JoinType ); + EntList *nextNot( JoinType j ) { return next->firstNot( j ); } + EntList *firstWanted( MatchType ); + EntList *nextWanted( MatchType mat ) { return next->firstWanted( mat ); } + EntList *lastNot( JoinType ); + EntList *prevNot( JoinType j ) { return prev->lastNot( j ); } + EntList *lastWanted( MatchType ); + EntList *prevWanted( MatchType mat ) { return prev->lastWanted( mat ); } + + JoinType join; + int multiple() { return ( join != SIMPLE ); } + EntList *next, *prev; + + protected: + MatchType viable; + // How does this EntList match the complex type. Used especially if Ent- + // List's parent is an OrList or AndOrList to record if this child is an + // acceptable choice or not. For an AndOr, viable children are accepted + // right away. For Or, only one is accepted, but we keep track of the + // other possible solutions in case we'll want to try them. + int level; // How many levels deep are we (main use for printing). +}; + +class SimpleList : public EntList { + friend class ComplexList; + friend G4std::ostream & operator<< ( G4std::ostream &, SimpleList & ); + + public: + SimpleList( const char *n ) : I_marked(NOMARK), EntList(SIMPLE) + { strcpy( name, n ); } + ~SimpleList() {} + + // Added missing return type - GC + int operator== ( const char *nm ) + { return ( strcmp( name, nm ) == 0 ); } + const char *Name() { return name; } + int contains( char *nm ) { return *this == nm; } + int hit( char *nm ) { return *this == nm; } + MatchType matchNonORs( EntNode * ); + int acceptChoice( EntNode * ); + void unmarkAll( EntNode * ); + void reset() { viable = UNKNOWN; I_marked = NOMARK; } + + private: + char name[BUFSIZ]; // Name of entity we correspond to. + MarkType I_marked; // Did I mark, and with what type of mark. +}; + +class MultList : public EntList { + // Supports concepts and functionality common to all the compound list + // types, especially AND and ANDOR. + + friend class ComplexList; + friend class ComplexCollect; + friend G4std::ostream & operator<< ( G4std::ostream &, MultList & ); + + public: + MultList( JoinType j ) : EntList(j), supertype(0), numchildren(0), + childList(0) {} + ~MultList(); + void setLevel( int ); + int contains( char * ); + int hit( char * ); + void appendList( EntList * ); + EntList *copyList( EntList * ); + virtual MatchType matchORs( EntNode * ) =0; + virtual MatchType tryNext( EntNode * ); + + int childCount() { return numchildren; } +// EntList *operator[]( int ); + EntList *getChild( int ); + EntList *getLast() { return ( getChild( numchildren-1 ) ); } + void unmarkAll( EntNode * ); + int prevKnown( EntList * ); + void reset(); + + protected: + int supertype; // do I represent a supertype? + int numchildren; + EntList *childList; + // Points to a list of "children" of this EntList. E.g., if join = + // AND, it would point to a list of the entity types we are AND'ing. + // The children may be SIMPLE EntLists (contain entity names) or may + // themselves be And-, Or-, or AndOrLists. +}; + +class JoinList : public MultList { + // A specialized MultList, super for subtypes AndOrList and AndList, or + // ones which join their multiple children. + public: + JoinList( JoinType j ) : MultList(j) {} + ~JoinList() {} + void setViableVal( EntNode * ); + int acceptChoice( EntNode * ); +}; + +class AndOrList : public JoinList { + friend class ComplexList; + + public: + AndOrList() : JoinList( ANDOR ) {} + ~AndOrList() {} + MatchType matchNonORs( EntNode * ); + MatchType matchORs( EntNode * ); +}; + +class AndList : public JoinList { + friend class ComplexList; + friend G4std::ostream & operator<< ( G4std::ostream &, ComplexList & ); + + public: + AndList() : JoinList( AND ) {} + ~AndList() {} + MatchType matchNonORs( EntNode * ); + MatchType matchORs( EntNode * ); +}; + +class OrList : public MultList { + public: + OrList() : MultList( OR ), choice(-1), choiceCount(0) {} + ~OrList() {} + int hit( char * ); + MatchType matchORs( EntNode * ); + MatchType tryNext( EntNode * ); + void unmarkAll( EntNode * ); + int acceptChoice( EntNode * ); + int acceptNextChoice( EntNode *ents ) + { choice++; return ( acceptChoice( ents ) ); } + void reset() { choice = -1; choiceCount = 0; MultList::reset(); } + + private: + int choice, choice1, choiceCount; + // Which choice of our childList did we select from this OrList; what's + // the first viable choice; and how many choices are there entirely. +}; + +class ComplexList { + // Contains the entire list of EntLists which describe the set of + // instantiable complex entities defined by an EXPRESS expression. + + friend class MultList; + friend class ComplexCollect; + friend G4std::ostream & operator<< ( G4std::ostream &, ComplexList & ); + + public: + + // Changed 'and' to 'andl'. 'and' is reserved word in the standard - GC + ComplexList( AndList *andl = NULL ) : head(andl), list(0), next(0), + abstract(0), dependent(0), + multSupers(0) {} + ~ComplexList(); + void buildList(); + void remove(); + + // Added missing return types to following operator definitions - GC + + int operator< ( ComplexList &c ) + { return ( strcmp( supertype(), c.supertype() ) < 0 ); } + int operator< ( char *name ) + { return ( strcmp( supertype(), name ) < 0 ); } + int operator== ( char *name ) + { return ( strcmp( supertype(), name ) == 0 ); } + const char *supertype() { return ((SimpleList *)head->childList)->name; } + // Based on knowledge that ComplexList always created by ANDing supertype + // with subtypes. + int toplevel( const char * ); + int contains( EntNode * ); + int matches( EntNode * ); + + EntNode *list; // List of all entities contained in this complex type, + // regardless of how. (Used as a quick way of determining + // if this List *may* contain a certain complex type.) + AndList *head; + ComplexList *next; + int Dependent() { return dependent; } + + private: + void addChildren( EntList * ); + int hitMultNodes( EntNode * ); + int abstract; // is our supertype abstract? + int dependent; // is our supertype also a subtype of other supertype(s)? + int multSupers; // am I a combo-CList created to test a subtype which has +}; // >1 supertypes? + +class ComplexCollect { + // The collection of all the ComplexLists defined by the current schema. + public: + ComplexCollect( ComplexList *c = NULL ) : clists(c) + { count = ( c ? 1 : 0 ); } + ~ComplexCollect() { delete clists; } + void insert( ComplexList * ); + void remove( ComplexList * ); + // Remove this list but don't delete its hierarchy structure, because + // it's used elsewhere. + ComplexList *find( char * ); + int supports( EntNode * ) const; + + ComplexList *clists; + + private: + int count; // # of clist children +}; + +#endif diff --git a/source/geometry/solids/STEP/include/dictdefs.h b/source/geometry/solids/STEP/include/dictdefs.h new file mode 100644 index 0000000000..dd257d2ea7 --- /dev/null +++ b/source/geometry/solids/STEP/include/dictdefs.h @@ -0,0 +1,90 @@ +#ifndef DICTDEFS_H +#define DICTDEFS_H 1 + +class Schema; +class AttrDescriptor; +class Inverse_attribute; +class EntityDescriptor; +class TypeDescriptor; +class EnumerationTypeDescriptor; +class AggrTypeDescriptor; +class ArrayTypeDescriptor; +class SetTypeDescriptor; +class ListTypeDescriptor; +class SelectTypeDescriptor; +class StringTypeDescriptor; +class BagTypeDescriptor; +class RealTypeDescriptor; +class EntityDescLinkNode; +class EntityDescriptorList; +class AttrDescLinkNode; +class AttrDescriptorList; +class Inverse_attributeLinkNode; +class Inverse_attributeList; +class TypeDescLinkNode; +class TypeDescriptorList; + +// These all match up to the new (CD2) Part 23 spec +// Some classes don't exist in our old dictionary implementation so they are +// currently commented out. The underlying class names should be updated +// when the new dictionary is integrated. DAS + +//typedef class Named_type* Named_type_ptr; +//typedef Named_type_ptr Named_type_var; +//typedef class Dictionary_instance* Dictionary_instance_ptr; +//typedef Dictionary_instance_ptr Dictionary_instance_var; +typedef class Schema* Schema_ptr; +typedef Schema_ptr Schema_var; +//typedef class Defined_type* Defined_type_ptr; +//typedef Defined_type_ptr Defined_type_var; +typedef class EntityDescriptor* Entity_ptr; +typedef Entity_ptr Entity_var; +typedef class AttrDescriptor* Attribute_ptr; +typedef Attribute_ptr Attribute_var; +typedef class Derived_attribute* Derived_attribute_ptr; +typedef Derived_attribute_ptr Derived_attribute_var; +typedef class AttrDescriptor* Explicit_attribute_ptr; +typedef Explicit_attribute_ptr Explicit_attribute_var; +typedef Inverse_attribute* Inverse_attribute_ptr; +typedef Inverse_attribute_ptr Inverse_attribute_var; +typedef Inverse_attribute_ptr Inverse_attribute_var; +typedef Inverse_attribute InverseAttrDescriptor; +typedef class EnumTypeDescriptor* Enumeration_type_ptr; +typedef Enumeration_type_ptr Enumeration_type_var; +typedef class SelectTypeDescriptor* Select_type_ptr; +typedef Select_type_ptr Select_type_var; +//typedef class Global_rule* Global_rule_ptr; +//typedef Global_rule_ptr Global_rule_var; +//typedef class Simple_type* Simple_type_ptr; +//typedef Simple_type_ptr Simple_type_var; +//typedef class Number_type* Number_type_ptr; +//typedef Number_type_ptr Number_type_var; +//typedef class IntTypeDescriptor* Integer_type_ptr; +//typedef Integer_type_ptr Integer_type_var; +typedef class RealTypeDescriptor* Real_type_ptr; +typedef Real_type_ptr Real_type_var; +typedef class StringTypeDescriptor* String_type_ptr; +typedef String_type_ptr String_type_var; +//typedef class BinaryTypeDescriptor* Binary_type_ptr; +//typedef Binary_type_ptr Binary_type_var; +//typedef class LogicalTypeDescriptor* Logical_type_ptr; +//typedef Logical_type_ptr Logical_type_var; +//typedef class BooleanTypeDescriptor* Boolean_type_ptr; +//typedef Boolean_type_ptr Boolean_type_var; +typedef class AggrTypeDescriptor* Aggr_type_ptr; +typedef Aggr_type_ptr Aggr_type_var; +typedef class SetTypeDescriptor* Set_type_ptr; +typedef Set_type_ptr Set_type_var; +typedef class BagTypeDescriptor* Bag_type_ptr; +typedef Bag_type_ptr Bag_type_var; +typedef class ListTypeDescriptor* List_type_ptr; +typedef List_type_ptr List_type_var; +typedef class ArrayTypeDescriptor* Array_type_ptr; +typedef Array_type_ptr Array_type_var; + +//#include + +// the following exist until everything is updated +typedef EntityDescriptor Entity; + +#endif diff --git a/source/geometry/solids/STEP/include/dirobj.h b/source/geometry/solids/STEP/include/dirobj.h index 594cc4934f..75b4b64b4d 100644 --- a/source/geometry/solids/STEP/include/dirobj.h +++ b/source/geometry/solids/STEP/include/dirobj.h @@ -1,21 +1,11 @@ - -// - - - -// -// $Id: dirobj.h,v 1.2 1999/05/21 20:20:38 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - #ifndef dirobj_h #define dirobj_h /* * NIST Utils Class Library * clutils/dirobj.h -* May 1995 +* April 1997 * David Sauder * K. C. Morris @@ -23,7 +13,7 @@ * and is not subject to copyright. */ -/* */ +/* $Id: dirobj.h,v 1.4 2000/06/08 17:18:10 gcosmo Exp $ */ #ifdef __O3DB__ #include @@ -31,7 +21,7 @@ /* - * DirObj - This object contains a List of files in a directory. + * DirObj - This object contains a list of files in a directory. * Can be used for interpreting a tilde, checking paths etc. * based on InterViews FBDirectory * Copyright (c) 1987, 1988, 1989 Stanford University from @@ -53,35 +43,55 @@ /////////////////////////////////////////////////////////////////////////////// #include + + +//#include "/proj/pdevel/autoc/arch.sunCC.iv/scl_cf.h" +// This is an scl configuration file generated by the configure script +// generated using gnu's autoconf +#include + +#ifdef HAVE_UNISTD_H +// needed at least for getuid() +#include +#endif + +////extern _G_uid_t getuid _G_ARGS((void)); +//#ifdef HAVE_STAT_H +//#include +//#endif + +#ifdef HAVE_SYSENT_H +#include +#endif + #ifdef WIN32 -# include # ifndef MAXNAMLEN # define MAXNAMLEN 255 # endif -#else -# include -# include #endif -#ifdef __OBJECTCENTER__ -#include // needed to declare getuid() -#include -// extern int getuid(); -#endif -#ifdef __GNUC__ -#include // needed to declare getuid() with new GNU 2.3.3 -//extern _G_uid_t getuid _G_ARGS((void)); -#include -#endif -#ifdef __SUNCPLUSPLUS__ -#include +// sys/stat.h is apparently needed for ObjectCenter and Sun C++ ? +#ifdef HAVE_SYS_STAT_H #include #endif +//#ifdef __GNUC__ +//#include // needed to declare getuid() with new GNU 2.3.3 +////extern _G_uid_t getuid _G_ARGS((void)); +//#include + +//#else +////#ifdef __OBJECTCENTER__ +////#ifdef __SUNCPLUSPLUS__ +////#ifdef __xlC__ +//#include +//#include +//#endif + #ifndef WIN32 # include #endif -//#include +///#include //#include // the below is good for g++ // if getting it from /usr/include change to __string_h @@ -98,9 +108,10 @@ #endif //#include //#include -#include "dir.h" -#include "globals.hh" -//typedef unsigned boolean; + +#include + +typedef unsigned boolean; #ifndef nil #define nil 0 @@ -113,17 +124,17 @@ public: DirObj(const char* dirName); virtual ~DirObj(); - HepBoolean LoadDirectory(const char*); + boolean LoadDirectory(const char*); const char* Normalize(const char*); const char* ValidDirectories(const char*); int Index(const char*); const char* File(int index); // check for file in the currently loaded directory - HepBoolean FileExists(const char* file) { return Index(file) ? true : false;}; + boolean FileExists(const char* file) { return Index(file) ? 1 : 0;}; int Count(); - HepBoolean IsADirectory(const char*); + boolean IsADirectory(const char*); private: const char* Home(const char* x = nil); const char* ElimDot(const char*); @@ -133,7 +144,7 @@ private: const char* ExpandTilde(const char*, int); const char* RealPath(const char*); - HepBoolean Reset(const char*); + boolean Reset(const char*); void ClearFileList(); void CheckIndex(int index); void InsertFile(const char*, int index); @@ -191,10 +202,10 @@ inline const char* DirObj::File (int index) { // /////////////////////////////////////////////////////////////////////////////// -inline HepBoolean DotSlash (const char* path) { +inline boolean DotSlash (const char* path) { return path[0] != '\0' && path[0] == '.' && - (path[1] == '/' || path[1] == '\0')? true : false; + (path[1] == '/' || path[1] == '\0'); } //////////////////////////////// DotDotSlash() //////////////////////////////// @@ -204,11 +215,11 @@ inline HepBoolean DotSlash (const char* path) { // /////////////////////////////////////////////////////////////////////////////// -inline HepBoolean DotDotSlash (const char* path) { +inline boolean DotDotSlash (const char* path) { return path[0] != '\0' && path[1] != '\0' && path[0] == '.' && path[1] == '.' && - (path[2] == '/' || path[2] == '\0')? true : false; + (path[2] == '/' || path[2] == '\0'); } #endif diff --git a/source/geometry/solids/STEP/include/dispnode.h b/source/geometry/solids/STEP/include/dispnode.h index e541aee6dc..02290f96ad 100644 --- a/source/geometry/solids/STEP/include/dispnode.h +++ b/source/geometry/solids/STEP/include/dispnode.h @@ -1,21 +1,11 @@ - -// - - - -// -// $Id: dispnode.h,v 1.2 1999/05/21 20:20:39 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - #ifndef dispnode_h #define dispnode_h /* * NIST STEP Editor Class Library * cleditor/dispnode.h -* May 1995 +* April 1997 * David Sauder * K. C. Morris @@ -23,7 +13,7 @@ * and is not subject to copyright. */ -/* */ +/* $Id: dispnode.h,v 1.3 2000/01/21 13:42:39 gcosmo Exp $ */ #ifdef __O3DB__ #include @@ -35,6 +25,7 @@ #include #include +//#include #include //#include class MgrNode; diff --git a/source/geometry/solids/STEP/include/dispnodelist.h b/source/geometry/solids/STEP/include/dispnodelist.h index 11dcd79a9e..d718fc03eb 100644 --- a/source/geometry/solids/STEP/include/dispnodelist.h +++ b/source/geometry/solids/STEP/include/dispnodelist.h @@ -1,21 +1,11 @@ - -// - - - -// -// $Id: dispnodelist.h,v 1.2 1999/05/21 20:20:39 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - #ifndef dispnodelist_h #define dispnodelist_h /* * NIST STEP Editor Class Library * cleditor/dispnodelist.h -* May 1995 +* April 1997 * David Sauder * K. C. Morris @@ -23,13 +13,14 @@ * and is not subject to copyright. */ -/* */ +/* $Id: dispnodelist.h,v 1.3 2000/01/21 13:42:39 gcosmo Exp $ */ #ifdef __O3DB__ #include #endif #include +//#include #include #include #include @@ -50,9 +41,9 @@ public: displayStateEnum GetState() { return listType; } // REDEFINED functions - // deletes node from its previous List & appends + // deletes node from its previous list & appends virtual void Append(GenericNode *node); - // deletes newNode from its previous List & inserts in + // deletes newNode from its previous list & inserts in // relation to existNode virtual void InsertAfter(GenericNode *newNode, GenericNode *existNode); virtual void InsertBefore(GenericNode *newNode, GenericNode *existNode); @@ -76,10 +67,4 @@ inline DisplayNodeList::DisplayNodeList(displayStateEnum type) ((DisplayNode *)head)->displayState = type; } -inline void DisplayNodeList::Remove(GenericNode *node) -{ - GenNodeList::Remove(node); -// DON'T DO THIS ((DisplayNode *)node)->displayState = noMapState; -} - #endif diff --git a/source/geometry/solids/STEP/include/editordefines.h b/source/geometry/solids/STEP/include/editordefines.h index e9f88f20af..6010334ea4 100644 --- a/source/geometry/solids/STEP/include/editordefines.h +++ b/source/geometry/solids/STEP/include/editordefines.h @@ -1,21 +1,11 @@ - -// - - - -// -// $Id: editordefines.h,v 1.2 1999/05/21 20:20:39 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - #ifndef editordefines_h #define editordefines_h /* * NIST STEP Editor Class Library * cleditor/editordefines.h -* May 1995 +* April 1997 * David Sauder * K. C. Morris @@ -23,7 +13,7 @@ * and is not subject to copyright. */ -/* */ +/* $Id: editordefines.h,v 1.3 2000/01/21 13:42:39 gcosmo Exp $ */ class GenericNode; class GenNodeList; @@ -46,11 +36,11 @@ enum displayStateEnum { ////////////////////////////////////////////////////////////////////////////// enum stateEnum { - noStateSE, // state undefined, not on a List - completeSE, // on saved complete List - incompleteSE, // on saved incomplete List - deleteSE, // on delete List - newSE // on newly created List + noStateSE, // state undefined, not on a list + completeSE, // on saved complete list + incompleteSE, // on saved incomplete list + deleteSE, // on delete list + newSE // on newly created list } ; /* diff --git a/source/geometry/solids/STEP/include/errordesc.h b/source/geometry/solids/STEP/include/errordesc.h index b33d6b2870..71de688829 100644 --- a/source/geometry/solids/STEP/include/errordesc.h +++ b/source/geometry/solids/STEP/include/errordesc.h @@ -1,21 +1,11 @@ - -// - - - -// -// $Id: errordesc.h,v 1.3 1999/12/15 14:50:15 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - #ifndef ERRORDESC_H #define ERRORDESC_H /* * NIST Utils Class Library * clutils/errordesc.h -* May 1995 +* April 1997 * David Sauder * K. C. Morris @@ -23,14 +13,18 @@ * and is not subject to copyright. */ -/* */ +/* $Id: errordesc.h,v 1.4 2000/01/21 13:42:39 gcosmo Exp $ */ + +#ifdef __OSTORE__ +#include // Required to access ObjectStore Class Library +#endif #ifdef __O3DB__ #include #endif #include -#include "G4ios.hh" +#include "g4std/iostream" typedef enum Severity { SEVERITY_MAX = -5, @@ -83,7 +77,7 @@ class ErrorDescriptor { Severity _severity; static DebugLevel _debug_level; - static G4std::ostream* _out; + static G4std::ostream* _out; // note this will not be persistent SCLstring *_userMsg; SCLstring *_detailMsg; @@ -93,14 +87,20 @@ class ErrorDescriptor { DebugLevel d = DEBUG_OFF); ~ErrorDescriptor () { delete _userMsg; delete _detailMsg; } + void PrintContents(G4std::ostream &out = G4cout) const; + void ClearErrorMsg() { _severity = SEVERITY_NULL; delete _userMsg; _userMsg = 0; delete _detailMsg; _detailMsg = 0; } + // return the enum value of _severity Severity severity() const { return _severity; } + // return _severity as a const char * in the SCLstring provided + const char * severity(SCLstring &s) const; Severity severity(Severity s) { return (_severity = s); } + Severity GetCorrSeverity(const char *s); Severity GreaterSeverity(Severity s) { return ((s < _severity) ? _severity = s : _severity); } @@ -108,21 +108,13 @@ class ErrorDescriptor { void UserMsg ( const char *); void AppendToUserMsg ( const char *); void PrependToUserMsg ( const char *); - void AppendToUserMsg ( const char c) - { - if(!_userMsg) _userMsg = new SCLstring; - _userMsg -> Append(c); - } + void AppendToUserMsg ( const char c); const char * DetailMsg () const; void DetailMsg ( const char *); void AppendToDetailMsg ( const char *); void PrependToDetailMsg ( const char *); - void AppendToDetailMsg ( const char c) - { - if(!_detailMsg) _detailMsg = new SCLstring; - _detailMsg -> Append(c); - } + void AppendToDetailMsg ( const char c); Severity AppendFromErrorArg(ErrorDescriptor *err) { @@ -135,6 +127,10 @@ class ErrorDescriptor { DebugLevel debug_level() const { return _debug_level; } void debug_level(DebugLevel d) { _debug_level = d; } void SetOutput(G4std::ostream *o) { _out = o; } + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif // void operator = (const char* y) { SCLstring::operator = (y); } diff --git a/source/geometry/solids/STEP/include/gennode.h b/source/geometry/solids/STEP/include/gennode.h index 426cae9cc0..5e30bebb49 100644 --- a/source/geometry/solids/STEP/include/gennode.h +++ b/source/geometry/solids/STEP/include/gennode.h @@ -1,21 +1,11 @@ - -// - - - -// -// $Id: gennode.h,v 1.3 1999/12/15 18:04:16 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - #ifndef gennode_h #define gennode_h /* * NIST Utils Class Library * clutils/gennode.h -* May 1995 +* April 1997 * David Sauder * K. C. Morris @@ -23,7 +13,13 @@ * and is not subject to copyright. */ -/* */ +/* $Id: gennode.h,v 1.4 2000/01/21 13:42:39 gcosmo Exp $ */ + +/* +#ifdef __OSTORE__ +#include // Required to access ObjectStore Class Library +#endif +*/ #ifdef __O3DB__ #include @@ -37,7 +33,7 @@ class DisplayNodeList; ////////////////////////////////////////////////////////////////////////////// // GenericNode -// If you delete this object it first removes itself from any List it is in. +// If you delete this object it first removes itself from any list it is in. ////////////////////////////////////////////////////////////////////////////// class GenericNode @@ -50,11 +46,12 @@ protected: GenericNode *next; GenericNode *prev; public: - GenericNode() { next = 0; prev = 0; } - virtual ~GenericNode() { Remove(); } + GenericNode(); + virtual ~GenericNode(); + GenericNode *Next() { return next; } GenericNode *Prev() { return prev; } - virtual void Append(GenNodeList *List); + virtual void Append(GenNodeList *list); virtual void Remove() { (next) ? (next->prev = prev) : 0; @@ -69,6 +66,11 @@ public: prev = 0; } +/* +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif +*/ }; ////////////////////////////////////////////////////////////////////////////// diff --git a/source/geometry/solids/STEP/include/gennodearray.h b/source/geometry/solids/STEP/include/gennodearray.h index c1c875546a..b6149d4994 100644 --- a/source/geometry/solids/STEP/include/gennodearray.h +++ b/source/geometry/solids/STEP/include/gennodearray.h @@ -1,21 +1,11 @@ - -// - - - -// -// $Id: gennodearray.h,v 1.2 1999/05/21 20:20:40 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - #ifndef gennodearray_h #define gennodearray_h /* * NIST Utils Class Library * clutils/gennode.h -* May 1995 +* April 1997 * David Sauder * K. C. Morris @@ -23,7 +13,7 @@ * and is not subject to copyright. */ -/* */ +/* $Id: gennodearray.h,v 1.3 2000/01/21 13:42:39 gcosmo Exp $ */ /* * GenNodeArray - dynamic array object of GenericNodes. @@ -31,11 +21,18 @@ * Copyright (c) 1990 Stanford University */ +/* +#ifdef __OSTORE__ +#include // Required to access ObjectStore Class Library +#endif +*/ + #ifdef __O3DB__ #include #endif #include +#include #include // to get bcopy for CenterLine #include @@ -53,7 +50,12 @@ class GenNodeArray { public: + +//#ifdef __OSTORE__ +// GenNodeArray (os_database *db, int defaultSize = ARRAY_DEFAULT_SIZE); +//#else GenNodeArray(int defaultSize = ARRAY_DEFAULT_SIZE); +//#endif virtual ~GenNodeArray(); GenericNode*& operator[](int index); @@ -69,6 +71,11 @@ public: virtual void ClearEntries(); virtual void DeleteEntries(); +/* +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif +*/ protected: virtual void Check(int index); @@ -81,46 +88,12 @@ protected: // class GenNodeArray inline public functions ////////////////////////////////////////////////////////////////////////////// -inline GenNodeArray::GenNodeArray (int defaultSize) -{ - _bufsize = defaultSize; - _buf = new GenericNode*[_bufsize]; - memset(_buf, 0, _bufsize*sizeof(GenericNode*)); - _count = 0; -} - -inline GenNodeArray::~GenNodeArray () -{ - -// int i; - // this is dangerous because several things point at these nodes - // also whatever is derived from this thing might do this -// for(i = 0; i < _count; i++) -// delete _buf[i]; - delete [] _buf; -} - inline GenericNode*& GenNodeArray::operator[] (int index) { Check(index); return _buf[index]; } -inline int GenNodeArray::Index (GenericNode** gn) -{ - return ((gn - _buf) / sizeof(GenericNode*)); -} - -inline void GenNodeArray::Append(GenericNode* gn) -{ - Insert(gn, _count); -} - -inline int GenNodeArray::Insert(GenericNode* gn) -{ - return Insert(gn, _count); -} - inline int GenNodeArray::Count () { return _count; diff --git a/source/geometry/solids/STEP/include/gennodelist.h b/source/geometry/solids/STEP/include/gennodelist.h index 38d25a4d0e..8a7dfeee5d 100644 --- a/source/geometry/solids/STEP/include/gennodelist.h +++ b/source/geometry/solids/STEP/include/gennodelist.h @@ -1,21 +1,11 @@ - -// - - - -// -// $Id: gennodelist.h,v 1.3 1999/12/15 18:04:17 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - #ifndef gennodelist_h #define gennodelist_h /* * NIST Utils Class Library * clutils/gennodelist.h -* May 1995 +* April 1997 * David Sauder * K. C. Morris @@ -23,7 +13,7 @@ * and is not subject to copyright. */ -/* */ +/* $Id: gennodelist.h,v 1.4 2000/01/21 13:42:39 gcosmo Exp $ */ #ifdef __O3DB__ #include @@ -33,7 +23,7 @@ ////////////////////////////////////////////////////////////////////////////// // class GenNodeList -// this class implements a doubly linked List by default. +// this class implements a doubly linked list by default. // If you delete this object it does not delete all of its entries, // only its head. If you want it to delete all of its entries as well // as its head, you need to call DeleteEntries(). @@ -46,16 +36,16 @@ public: GenericNode *GetHead() { return head; } - virtual void ClearEntries(){;} - virtual void DeleteEntries(){;} - // deletes node from its previous List & appends + virtual void ClearEntries(); + virtual void DeleteEntries(); + // deletes node from its previous list & appends virtual void Append(GenericNode *node); - // deletes newNode from its previous List & inserts in + // deletes newNode from its previous list & inserts in // relation to existNode virtual void InsertAfter(GenericNode *newNode, GenericNode *existNode); virtual void InsertBefore(GenericNode *newNode, GenericNode *existNode); - virtual void Remove(GenericNode *node){ if (node) node->Remove(); } + virtual void Remove(GenericNode *node); protected: GenericNode *head; @@ -74,32 +64,4 @@ inline GenNodeList::GenNodeList(GenericNode *headNode) head->prev = head; } - // inserts after existNode -inline void GenNodeList::InsertAfter(GenericNode *newNode, - GenericNode *existNode) -{ - newNode->next = existNode->next; - newNode->next->prev = newNode; - - newNode->prev = existNode; - existNode->next = newNode; -} - - // inserts before existNode -inline void GenNodeList::InsertBefore(GenericNode *newNode, - GenericNode *existNode) -{ - existNode->prev->next = newNode; - newNode->prev = existNode->prev; - - newNode->next = existNode; - existNode->prev = newNode; -} - - // inserts before the head node -inline void GenNodeList::Append(GenericNode *node) -{ - InsertBefore(node, head); -} - #endif diff --git a/source/geometry/solids/STEP/include/instmgr.h b/source/geometry/solids/STEP/include/instmgr.h index c8b497b5e0..061dc8700d 100644 --- a/source/geometry/solids/STEP/include/instmgr.h +++ b/source/geometry/solids/STEP/include/instmgr.h @@ -1,21 +1,11 @@ - -// - - - -// -// $Id: instmgr.h,v 1.2 1999/05/21 20:20:41 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - #ifndef instmgr_h #define instmgr_h /* * NIST STEP Editor Class Library * cleditor/instmgr.h -* May 1995 +* April 1997 * David Sauder * K. C. Morris @@ -23,21 +13,26 @@ * and is not subject to copyright. */ -/* */ +/* $Id: instmgr.h,v 1.3 2000/01/21 13:42:40 gcosmo Exp $ */ ///// future? //////////////// -// InstMgr can maintain an undo List for the last operation +// InstMgr can maintain an undo list for the last operation // performed on a node // InstMgr can have a startUndo() and endUndo() so it knows when to -// start a new undo List and delete the old undo List. +// start a new undo list and delete the old undo list. ///////////////////// +/* +#ifdef __OSTORE__ +#include // Required to access ObjectStore Class Library +#endif +*/ + #ifdef __O3DB__ #include #endif - - +typedef unsigned boolean; extern char * EntityClassName ( char *); // IT IS VERY IMPORTANT THAT THE ORDER OF THE FOLLOWING INCLUDE FILES @@ -45,6 +40,7 @@ extern char * EntityClassName ( char *); #include #include +//#include #include #include @@ -58,62 +54,80 @@ extern char * EntityClassName ( char *); class InstMgr { protected: + int maxFileId; + int _ownsInstances; // if true will delete instances inside destructor + MgrNodeArray *master; // master array of all MgrNodes made up of // complete, incomplete, new, delete MgrNodes lists - // this corresponds to the display List object by index + // this corresponds to the display list object by index MgrNodeArraySorted *sortedMaster; // master array sorted by fileId // StateList *master; // this will be an sorted array of ptrs to MgrNodes - int maxFileId; - public: - InstMgr(); - ~InstMgr() {}; + InstMgr(int ownsInstances = 0); + virtual ~InstMgr(); // MASTER LIST OPERATIONS int InstanceCount() { return master->Count(); } - void ClearInstances(); + + int OwnsInstances() { return _ownsInstances; } + void OwnsInstances(int ownsInstances) { _ownsInstances = ownsInstances; } + + void ClearInstances(); //clears instance lists but doesn't delete instances + void DeleteInstances(); // deletes the instances (ignores _ownsInstances) + Severity VerifyInstances(ErrorDescriptor& e); // DAS PORT possible BUG two funct's below may create a temp for the cast - MgrNode *&operator[](int index) - { return (MgrNode* &)((*master)[index]); } - MgrNode *&GetMgrNode(int index) - { return (MgrNode* &)((*master)[index]); } + MgrNode * GetMgrNode(int index) + { return (MgrNode *) *GetGenNode (index); } + GenericNode** GetGenNode(int index) + { return &(*master) [index]; } MgrNode *FindFileId(int fileId); - // get the index into display List given a STEPentity + // get the index into display list given a SCLP23(Application_instance) // called by see initiated functions - int GetIndex(STEPentity *se); + int GetIndex(SCLP23(Application_instance) *se); int GetIndex(MgrNode *mn); - -// L. Broglia : new - int GetIndex(const char* entityKeyword, int starting_index); - int VerifyEntity(int fileId, const char *expectedType); // void Append(MgrNode *node); - MgrNode *Append(STEPentity *se, stateEnum listState); - // deletes node from master List structure + MgrNode *Append(SCLP23(Application_instance) *se, stateEnum listState); + // deletes node from master list structure void Delete(MgrNode *node); - void Delete(STEPentity *se); + void Delete(SCLP23(Application_instance) *se); void ChangeState(MgrNode *node, stateEnum listState); int MaxFileId() { return maxFileId; } int NextFileId() { return maxFileId = maxFileId +1; } int EntityKeywordCount(const char* name); - STEPentity *GetSTEPentity(int index); - STEPentity *GetSTEPentity(const char* entityKeyword, - int starting_index =0); - STEPentity *GetSTEPentity(MgrNode *node) - { return node->GetSTEPentity(); }; + SCLP23(Application_instance) *GetApplication_instance(int index); + SCLP23(Application_instance) * + GetApplication_instance(const char* entityKeyword, + int starting_index =0); + SCLP23(Application_instance) *GetApplication_instance(MgrNode *node) + { return node->GetApplication_instance(); }; + void *GetSEE(int index); void *GetSEE(MgrNode *node) { return node->SEE(); }; void PrintSortedFileIds(); +/* +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif +*/ + + // OBSOLETE + SCLP23(Application_instance) *GetSTEPentity(int index); + SCLP23(Application_instance) *GetSTEPentity(const char* entityKeyword, + int starting_index =0); + SCLP23(Application_instance) *GetSTEPentity(MgrNode *node) + { return node->GetApplication_instance(); }; + }; #endif diff --git a/source/geometry/solids/STEP/include/mgrnode.h b/source/geometry/solids/STEP/include/mgrnode.h index bc8ef8cfe4..c9a3c49dae 100644 --- a/source/geometry/solids/STEP/include/mgrnode.h +++ b/source/geometry/solids/STEP/include/mgrnode.h @@ -1,20 +1,10 @@ - - -// - - - -// -// $Id: mgrnode.h,v 1.2 1999/05/21 20:20:41 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// #ifndef mgrnode_h #define mgrnode_h /* * NIST STEP Editor Class Library * cleditor/mgrnode.h -* May 1995 +* April 1997 * David Sauder * K. C. Morris @@ -22,17 +12,26 @@ * and is not subject to copyright. */ -/* */ +/* $Id: mgrnode.h,v 1.3 2000/01/21 13:42:40 gcosmo Exp $ */ + +/* +#ifdef __OSTORE__ +#include // Required to access ObjectStore Class Library +#endif +*/ #ifdef __O3DB__ #include #endif +class GenericNode; class DisplayNode; -class STEPentity; +#include +//class SCLP23(Application_instance); #include #include +//#include #include @@ -40,8 +39,8 @@ class InstMgr; ////////////////////////////////////////////////////////////////////////////// // class MgrNode -// If you delete this object, it deletes the STEPentity it represents, -// the DisplayNode, and removes itself from any List it is in. +// If you delete this object, it deletes the SCLP23(Application_instance) it represents, +// the DisplayNode, and removes itself from any list it is in. ////////////////////////////////////////////////////////////////////////////// class MgrNode : public GenericNode @@ -57,8 +56,8 @@ protected: // every node will be on one of the four lists implemented by these: stateEnum currState; - // STEPentity this node is representing info for - STEPentity *se; + // SCLP23(Application_instance) this node is representing info for + SCLP23(Application_instance) *se; // this is the index (in the InstMgr master array) of the ptr to // this node. int arrayIndex; @@ -69,30 +68,30 @@ protected: public: // used for sentinel node on lists of MgrNodes MgrNode(); - MgrNode(STEPentity *se); + MgrNode(SCLP23(Application_instance) *se); // 'listState' == // completeSE - if reading valid exchange file // incompleteSE or completeSE - if reading working session file // newSE - if instance is created by user using editor (probe) - MgrNode(STEPentity *se, stateEnum listState); - MgrNode(STEPentity *se, stateEnum listState, MgrNodeList *List); + MgrNode(SCLP23(Application_instance) *se, stateEnum listState); + MgrNode(SCLP23(Application_instance) *se, stateEnum listState, MgrNodeList *list); virtual ~MgrNode(); // STATE LIST OPERATIONS int MgrNodeListMember(stateEnum s) { return (currState == s); } stateEnum CurrState() { return currState; } // returns next or prev member variables - // i.e. next or previous node on curr state List - // searches current List for fileId + // i.e. next or previous node on curr state list + // searches current list for fileId MgrNode *StateFindFileId(int fileId); - // deletes from previous cmd List, - // & puts on cmd List cmdList + // deletes from previous cmd list, + // & puts on cmd list cmdList int ChangeList(MgrNodeList *cmdList); int ChangeState(stateEnum s); - // Removes from current List. - // Called before adding to diff List or when destructor is called. + // Removes from current list. + // Called before adding to diff list or when destructor is called. void Remove(); // DISPLAY LIST OPERATIONS @@ -102,15 +101,15 @@ public: int IsDisplayState(displayStateEnum ds); // returns next or prev member variables - // i.e. next or previous node on display state List + // i.e. next or previous node on display state list GenericNode *NextDisplay(); GenericNode *PrevDisplay(); - // deletes from previous cmd List, - // & puts on cmd List cmdList + // deletes from previous cmd list, + // & puts on cmd list cmdList int ChangeList(DisplayNodeList *cmdList); - // deletes from previous display List, assigns ds to - // displayState & puts on List dsList + // deletes from previous display list, assigns ds to + // displayState & puts on list dsList int ChangeState(displayStateEnum ds); // might not want these three? since it won't actually map them? @@ -120,15 +119,23 @@ public: // ACCESS FUNCTIONS int GetFileId(); - STEPentity *GetSTEPentity() { return se; } + SCLP23(Application_instance) *GetApplication_instance() { return se; } DisplayNode *&displayNode() { return di; } int ArrayIndex() { return arrayIndex; } void ArrayIndex(int index) { arrayIndex = index; } +/* +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif +*/ + + // OBSOLETE + SCLP23(Application_instance) *GetSTEPentity() { return se; } protected: private: - void Init(STEPentity *s, stateEnum listState, MgrNodeList *List); + void Init(SCLP23(Application_instance) *s, stateEnum listState, MgrNodeList *list); }; ////////////////////////////////////////////////////////////////////////////// diff --git a/source/geometry/solids/STEP/include/mgrnodearray.h b/source/geometry/solids/STEP/include/mgrnodearray.h index 74ab7496f8..43e292ab11 100644 --- a/source/geometry/solids/STEP/include/mgrnodearray.h +++ b/source/geometry/solids/STEP/include/mgrnodearray.h @@ -1,21 +1,11 @@ - -// - - - -// -// $Id: mgrnodearray.h,v 1.3 1999/12/15 14:50:15 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - #ifndef mgrnodearray_h #define mgrnodearray_h /* * NIST STEP Editor Class Library * cleditor/mgrnodearray.h -* May 1995 +* April 1997 * David Sauder * K. C. Morris @@ -23,7 +13,13 @@ * and is not subject to copyright. */ -/* */ +/* $Id: mgrnodearray.h,v 1.4 2000/01/21 13:42:40 gcosmo Exp $ */ + +/* +#ifdef __OSTORE__ +#include // Required to access ObjectStore Class Library +#endif +*/ #ifdef __O3DB__ #include @@ -33,6 +29,7 @@ #include #include +//#include #include #include @@ -44,16 +41,19 @@ ////////////////////////////////////////////////////////////////////////////// // class MgrNodeArray // This class implements the array of MgrNodes representing the -// master List for the seInstMgr which will have a one to one -// mapping by index to the display List of corresponding STEPentities. +// master list for the seInstMgr which will have a one to one +// mapping by index to the display list of corresponding STEPentities. // If you delete this object it deletes all of the entries it points to. ////////////////////////////////////////////////////////////////////////////// class MgrNodeArray : public GenNodeArray { public: - MgrNodeArray(int defaultSize = ARRAY_DEFAULT_SIZE) - : GenNodeArray(defaultSize) { } +//#ifdef __OSTORE__ +// MgrNodeArray(os_database *db, int defaultSize = ARRAY_DEFAULT_SIZE); +//#else + MgrNodeArray(int defaultSize = ARRAY_DEFAULT_SIZE); +//#endif ~MgrNodeArray(); // REDEFINED functions @@ -69,20 +69,28 @@ public: // ADDED functions virtual int MgrNodeIndex(int fileId); void AssignIndexAddress(int index); +/* +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif +*/ }; ////////////////////////////////////////////////////////////////////////////// // class MgrNodeArraySorted // This class implements the array of MgrNodes representing the -// sorted master List for the seInstMgr. This List is sorted by +// sorted master list for the seInstMgr. This list is sorted by // STEPentity::fileId. // If you delete this object it won't delete the entries it points to. ////////////////////////////////////////////////////////////////////////////// class MgrNodeArraySorted : public GenNodeArray { public: - MgrNodeArraySorted(int defaultSize = ARRAY_DEFAULT_SIZE) - : GenNodeArray(defaultSize) {} +//#ifdef __OSTORE__ +// MgrNodeArraySorted(os_database *db, int defaultSize = ARRAY_DEFAULT_SIZE); +//#else + MgrNodeArraySorted(int defaultSize = ARRAY_DEFAULT_SIZE); +//#endif ~MgrNodeArraySorted() { } // REDEFINED functions @@ -102,6 +110,11 @@ public: // ADDED functions virtual int MgrNodeIndex(int fileId); int FindInsertPosition (const int fileId); +/* +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif +*/ }; diff --git a/source/geometry/solids/STEP/include/mgrnodelist.h b/source/geometry/solids/STEP/include/mgrnodelist.h index 0171f6bd46..0a34f3b124 100644 --- a/source/geometry/solids/STEP/include/mgrnodelist.h +++ b/source/geometry/solids/STEP/include/mgrnodelist.h @@ -1,21 +1,11 @@ - -// - - - -// -// $Id: mgrnodelist.h,v 1.2 1999/05/21 20:20:42 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - #ifndef mgrnodelist_h #define mgrnodelist_h /* * NIST STEP Editor Class Library * cleditor/mgrnodelist.h -* May 1995 +* April 1997 * David Sauder * K. C. Morris @@ -23,13 +13,14 @@ * and is not subject to copyright. */ -/* */ +/* $Id: mgrnodelist.h,v 1.3 2000/01/21 13:42:40 gcosmo Exp $ */ #ifdef __O3DB__ #include #endif #include +//#include #include #include @@ -50,9 +41,9 @@ public: virtual MgrNode *FindFileId(int fileId); // REDEFINED functions - // deletes node from its previous List & appends + // deletes node from its previous list & appends virtual void Append(GenericNode *node); - // deletes newNode from its previous List & inserts in + // deletes newNode from its previous list & inserts in // relation to existNode virtual void InsertAfter(GenericNode *newNode, GenericNode *existNode); virtual void InsertBefore(GenericNode *newNode, GenericNode *existNode); diff --git a/source/geometry/solids/STEP/include/read_func.h b/source/geometry/solids/STEP/include/read_func.h index 378aa633bf..f11541533c 100644 --- a/source/geometry/solids/STEP/include/read_func.h +++ b/source/geometry/solids/STEP/include/read_func.h @@ -1,13 +1,3 @@ - - -// - - - -// -// $Id: read_func.h,v 1.3 1999/12/15 14:50:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// #ifndef READ_FUNC_H #define READ_FUNC_H @@ -15,30 +5,36 @@ #define MAX_COMMENT_LENGTH 512 -// Print Error information for debugging purposes +// print Error information for debugging purposes extern void PrintErrorState(ErrorDescriptor &err); -// Print G4std::istream error information for debugging purposes +// print G4std::istream error information for debugging purposes extern void IStreamState(G4std::istream &in); extern int -ReadInteger(SdaiInteger &val, G4std::istream &in, ErrorDescriptor *err, +ReadInteger(SCLP23(Integer) &val, G4std::istream &in, ErrorDescriptor *err, char *tokenList); extern int -ReadInteger(SdaiInteger &val, const char *s, ErrorDescriptor *err, +ReadInteger(SCLP23(Integer) &val, const char *s, ErrorDescriptor *err, char *tokenList); extern Severity IntValidLevel (const char *attrValue, ErrorDescriptor *err, int clearError, int optional, char *tokenList); +extern char * +WriteReal(SCLP23(Real) val, SCLstring &s); + +extern void +WriteReal(SCLP23(Real) val, G4std::ostream &out); + extern int -ReadReal(SdaiReal &val, G4std::istream &in, ErrorDescriptor *err, +ReadReal(SCLP23(Real) &val, G4std::istream &in, ErrorDescriptor *err, char *tokenList); extern int -ReadReal(SdaiReal &val, const char *s, ErrorDescriptor *err, +ReadReal(SCLP23(Real) &val, const char *s, ErrorDescriptor *err, char *tokenList); extern Severity @@ -46,11 +42,11 @@ RealValidLevel (const char *attrValue, ErrorDescriptor *err, int clearError, int optional, char *tokenList); extern int -ReadNumber(SdaiReal &val, G4std::istream &in, ErrorDescriptor *err, +ReadNumber(SCLP23(Real) &val, G4std::istream &in, ErrorDescriptor *err, char *tokenList); extern int -ReadNumber(SdaiReal &val, const char *s, ErrorDescriptor *err, +ReadNumber(SCLP23(Real) &val, const char *s, ErrorDescriptor *err, char *tokenList); extern Severity @@ -97,7 +93,7 @@ extern const char *ReadComment(SCLstring &ss, const char *s); extern const char *ReadComment(G4std::istream& in, SCLstring &s); -extern Severity ReadPcd(G4std::istream& in); //Print control directive +extern Severity ReadPcd(G4std::istream& in); //print control directive extern void ReadTokenSeparator(G4std::istream& in, SCLstring *comments = 0); diff --git a/source/geometry/solids/STEP/include/s_HEADER_SCHEMA.h b/source/geometry/solids/STEP/include/s_HEADER_SCHEMA.h index fa561edf67..acc0d1eebd 100644 --- a/source/geometry/solids/STEP/include/s_HEADER_SCHEMA.h +++ b/source/geometry/solids/STEP/include/s_HEADER_SCHEMA.h @@ -1,20 +1,10 @@ - - -// - - - -// -// $Id: s_HEADER_SCHEMA.h,v 1.2 1999/05/21 20:20:43 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// #ifndef S_HEADER_SCHEMA_H #define S_HEADER_SCHEMA_H /* * NIST STEP Editor Class Library * cleditor/s_HEADER_SCHEMA.h -* May 1995 +* April 1997 * David Sauder * K. C. Morris @@ -26,7 +16,7 @@ // it since your modifications will be lost if fedex_plus is used to // regenerate it. -/* */ +/* $Id: s_HEADER_SCHEMA.h,v 1.3 2000/01/21 13:42:40 gcosmo Exp $ */ #ifdef __O3DB__ #include @@ -34,11 +24,11 @@ #include #include #include -#include +//#include /* ************** TYPES */ extern TypeDescriptor *HEADER_SCHEMAt_SCHEMA_NAME; -typedef SdaiString p21DIS_Schema_name; +typedef SCLP23(String) p21DIS_Schema_name; /* ************** ENTITIES */ extern EntityDescriptor *HEADER_SCHEMAe_FILE_IDENTIFICATION; @@ -49,14 +39,14 @@ extern AttrDescriptor *a_3ORGANIZATION; extern AttrDescriptor *a_4PREPROCESSOR_VERSION; extern AttrDescriptor *a_5ORIGINATING_SYSTEM; -class s_N279_file_identification : public STEPentity { +class s_N279_file_identification : public SCLP23(Application_instance) { protected: - SdaiString _file_name ; - SdaiString _date ; + SCLP23(String) _file_name ; + SCLP23(String) _date ; StringAggregate _author ; StringAggregate _organization ; - SdaiString _preprocessor_version ; - SdaiString _originating_system ; + SCLP23(String) _preprocessor_version ; + SCLP23(String) _originating_system ; public: s_N279_file_identification ( ); @@ -65,29 +55,29 @@ class s_N279_file_identification : public STEPentity { #ifdef __O3DB__ void oodb_reInit(); #endif - char *Name () { return "File_Identification"; } + char *Name () { return (char*)("File_Identification"); } int opcode () { return 0 ; } - const SdaiString & file_name() const; + const SCLP23(String) & file_name() const; void file_name (const char * x); - const SdaiString & date() const; + const SCLP23(String) & date() const; void date (const char * x); StringAggregate & author(); void author (StringAggregate & x); StringAggregate & organization(); void organization (StringAggregate & x); - const SdaiString & preprocessor_version() const; + const SCLP23(String) & preprocessor_version() const; void preprocessor_version (const char * x); - const SdaiString & originating_system() const; + const SCLP23(String) & originating_system() const; void originating_system (const char * x); }; -inline STEPentity * -create_s_N279_file_identification () { return (STEPentity*) new s_N279_file_identification ; } +inline SCLP23(Application_instance) * +create_s_N279_file_identification () { return (SCLP23(Application_instance)*) new s_N279_file_identification ; } extern EntityDescriptor *HEADER_SCHEMAe_IMP_LEVEL; extern AttrDescriptor *a_6IMPLEMENTATION_LEVEL; -class s_N279_imp_level : public STEPentity { +class s_N279_imp_level : public SCLP23(Application_instance) { protected: - SdaiString _implementation_level ; + SCLP23(String) _implementation_level ; public: s_N279_imp_level ( ); @@ -96,13 +86,13 @@ class s_N279_imp_level : public STEPentity { #ifdef __O3DB__ void oodb_reInit(); #endif - char *Name () { return "Imp_Level"; } + char *Name () { return (char*)("Imp_Level"); } int opcode () { return 1 ; } - const SdaiString & implementation_level() const; + const SCLP23(String) & implementation_level() const; void implementation_level (const char * x); }; -inline STEPentity * -create_s_N279_imp_level () { return (STEPentity*) new s_N279_imp_level ; } +inline SCLP23(Application_instance) * +create_s_N279_imp_level () { return (SCLP23(Application_instance)*) new s_N279_imp_level ; } extern EntityDescriptor *HEADER_SCHEMAe_FILE_NAME; extern AttrDescriptor *a_7NAME; extern AttrDescriptor *a_8TIME_STAMP; @@ -113,16 +103,16 @@ extern AttrDescriptor *a_12PREPROCESSOR_VERSION; extern AttrDescriptor *a_13ORIGINATING_SYSTEM; extern AttrDescriptor *a_14AUTHORISATION; -class p21DIS_File_name : public STEPentity { +class p21DIS_File_name : public SCLP23(Application_instance) { protected: - SdaiString _name ; - SdaiString _time_stamp ; + SCLP23(String) _name ; + SCLP23(String) _time_stamp ; StringAggregate _author ; StringAggregate _organization ; -// SdaiString _step_version ; - SdaiString _preprocessor_version ; - SdaiString _originating_system ; - SdaiString _authorisation ; +// SCLP23(String) _step_version ; + SCLP23(String) _preprocessor_version ; + SCLP23(String) _originating_system ; + SCLP23(String) _authorisation ; public: p21DIS_File_name ( ); @@ -131,35 +121,35 @@ class p21DIS_File_name : public STEPentity { #ifdef __O3DB__ void oodb_reInit(); #endif - char *Name () { return "File_Name"; } + char *Name () { return (char*)("File_Name"); } int opcode () { return 2 ; } - const SdaiString & name() const; + const SCLP23(String) & name() const; void name (const char * x); - const SdaiString & time_stamp() const; + const SCLP23(String) & time_stamp() const; void time_stamp (const char * x); StringAggregate & author(); void author (StringAggregate & x); StringAggregate & organization(); void organization (StringAggregate & x); -// const SdaiString & step_version() const; +// const SCLP23(String) & step_version() const; // void step_version (const char * x); - const SdaiString & preprocessor_version() const; + const SCLP23(String) & preprocessor_version() const; void preprocessor_version (const char * x); - const SdaiString & originating_system() const; + const SCLP23(String) & originating_system() const; void originating_system (const char * x); - const SdaiString & authorisation() const; + const SCLP23(String) & authorisation() const; void authorisation (const char * x); }; -inline STEPentity * -create_p21DIS_File_name () { return (STEPentity*) new p21DIS_File_name ; } +inline SCLP23(Application_instance) * +create_p21DIS_File_name () { return (SCLP23(Application_instance)*) new p21DIS_File_name ; } extern EntityDescriptor *HEADER_SCHEMAe_FILE_DESCRIPTION; extern AttrDescriptor *a_15DESCRIPTION; extern AttrDescriptor *a_16IMPLEMENTATION_LEVEL; -class p21DIS_File_description : public STEPentity { +class p21DIS_File_description : public SCLP23(Application_instance) { protected: StringAggregate _description ; - SdaiString _implementation_level ; + SCLP23(String) _implementation_level ; public: p21DIS_File_description ( ); @@ -168,21 +158,21 @@ class p21DIS_File_description : public STEPentity { #ifdef __O3DB__ void oodb_reInit(); #endif - char *Name () { return "File_Description"; } + char *Name () { return (char*)("File_Description"); } int opcode () { return 3 ; } StringAggregate & description(); void description (StringAggregate & x); - const SdaiString & implementation_level() const; + const SCLP23(String) & implementation_level() const; void implementation_level (const char * x); }; -inline STEPentity * -create_p21DIS_File_description () { return (STEPentity*) new p21DIS_File_description ; } +inline SCLP23(Application_instance) * +create_p21DIS_File_description () { return (SCLP23(Application_instance)*) new p21DIS_File_description ; } extern EntityDescriptor *HEADER_SCHEMAe_S_CLASSIFICATION; extern AttrDescriptor *a_17SECURITY_CLASSIFICATION; -class s_N279_classification : public STEPentity { +class s_N279_classification : public SCLP23(Application_instance) { protected: - SdaiString _security_classification ; + SCLP23(String) _security_classification ; public: s_N279_classification ( ); @@ -191,19 +181,19 @@ class s_N279_classification : public STEPentity { #ifdef __O3DB__ void oodb_reInit(); #endif - char *Name () { return "S_Classification"; } + char *Name () { return (char*)("S_Classification"); } int opcode () { return 4 ; } - const SdaiString & security_classification() const; + const SCLP23(String) & security_classification() const; void security_classification (const char * x); }; -inline STEPentity * -create_s_N279_classification () { return (STEPentity*) new s_N279_classification ; } +inline SCLP23(Application_instance) * +create_s_N279_classification () { return (SCLP23(Application_instance)*) new s_N279_classification ; } extern EntityDescriptor *HEADER_SCHEMAe_S_FILE_DESCRIPTION; extern AttrDescriptor *a_18DESCRIPTION; -class s_N279_file_description : public STEPentity { +class s_N279_file_description : public SCLP23(Application_instance) { protected: - SdaiString _description ; + SCLP23(String) _description ; public: s_N279_file_description ( ); @@ -212,19 +202,19 @@ class s_N279_file_description : public STEPentity { #ifdef __O3DB__ void oodb_reInit(); #endif - char *Name () { return "S_File_Description"; } + char *Name () { return (char*)("S_File_Description"); } int opcode () { return 5 ; } - const SdaiString & description() const; + const SCLP23(String) & description() const; void description (const char * x); }; -inline STEPentity * -create_s_N279_file_description () { return (STEPentity*) new s_N279_file_description ; } +inline SCLP23(Application_instance) * +create_s_N279_file_description () { return (SCLP23(Application_instance)*) new s_N279_file_description ; } extern EntityDescriptor *HEADER_SCHEMAe_MAXSIG; extern AttrDescriptor *a_19MAXIMUM_SIGNIFICANT_DIGIT; -class p21DIS_Maxsig : public STEPentity { +class p21DIS_Maxsig : public SCLP23(Application_instance) { protected: - SdaiInteger _maximum_significant_digit ; + SCLP23(Integer) _maximum_significant_digit ; public: p21DIS_Maxsig ( ); @@ -233,19 +223,19 @@ class p21DIS_Maxsig : public STEPentity { #ifdef __O3DB__ void oodb_reInit(); #endif - char *Name () { return "Maxsig"; } + char *Name () { return (char*)("Maxsig"); } int opcode () { return 6 ; } - SdaiInteger maximum_significant_digit(); - void maximum_significant_digit (SdaiInteger x); + SCLP23(Integer) maximum_significant_digit(); + void maximum_significant_digit (SCLP23(Integer) x); }; -inline STEPentity * -create_p21DIS_Maxsig () { return (STEPentity*) new p21DIS_Maxsig ; } +inline SCLP23(Application_instance) * +create_p21DIS_Maxsig () { return (SCLP23(Application_instance)*) new p21DIS_Maxsig ; } extern EntityDescriptor *HEADER_SCHEMAe_CLASSIFICATION; extern AttrDescriptor *a_20SECURITY_CLASSIFICATION; -class p21DIS_Classification : public STEPentity { +class p21DIS_Classification : public SCLP23(Application_instance) { protected: - SdaiString _security_classification ; + SCLP23(String) _security_classification ; public: p21DIS_Classification ( ); @@ -254,17 +244,17 @@ class p21DIS_Classification : public STEPentity { #ifdef __O3DB__ void oodb_reInit(); #endif - char *Name () { return "Classification"; } + char *Name () { return (char*)("Classification"); } int opcode () { return 7 ; } - const SdaiString & security_classification() const; + const SCLP23(String) & security_classification() const; void security_classification (const char * x); }; -inline STEPentity * -create_p21DIS_Classification () { return (STEPentity*) new p21DIS_Classification ; } +inline SCLP23(Application_instance) * +create_p21DIS_Classification () { return (SCLP23(Application_instance)*) new p21DIS_Classification ; } extern EntityDescriptor *HEADER_SCHEMAe_FILE_SCHEMA; extern AttrDescriptor *a_21SCHEMA_IDENTIFIERS; -class p21DIS_File_schema : public STEPentity { +class p21DIS_File_schema : public SCLP23(Application_instance) { protected: StringAggregate _schema_identifiers ; // of SCHEMA_NAME @@ -276,12 +266,12 @@ class p21DIS_File_schema : public STEPentity { #ifdef __O3DB__ void oodb_reInit(); #endif - char *Name () { return "File_Schema"; } + char *Name () { return (char*)("File_Schema"); } int opcode () { return 8 ; } StringAggregate & schema_identifiers(); void schema_identifiers (StringAggregate & x); }; -inline STEPentity * -create_p21DIS_File_schema () { return (STEPentity*) new p21DIS_File_schema ; } +inline SCLP23(Application_instance) * +create_p21DIS_File_schema () { return (SCLP23(Application_instance)*) new p21DIS_File_schema ; } #endif diff --git a/source/geometry/solids/STEP/include/schema.h b/source/geometry/solids/STEP/include/schema.h index 7741c27c0d..a18120bb73 100644 --- a/source/geometry/solids/STEP/include/schema.h +++ b/source/geometry/solids/STEP/include/schema.h @@ -1,19 +1,17 @@ - - -// - - - -// -// $Id: schema.h,v 1.2 1999/05/21 20:20:43 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// #ifndef SCHEMA_H #define SCHEMA_H // 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: schema.h,v 1.3 2000/01/21 13:42:41 gcosmo Exp $ */ +#ifdef SCL_LOGGING +#include +#endif + +#ifdef __OSTORE__ +#include // Required to access ObjectStore Class Library +#endif + #ifdef __O3DB__ #include #endif @@ -25,10 +23,25 @@ #include -#include - #include + +#include + +#include + +#include extern void SchemaInit (Registry &); +extern void InitSchemasAndEnts (Registry &); #include extern void SdaiCONFIG_CONTROL_DESIGNInit (Registry & r); + +#ifdef __OSTORE__ +#include +#endif + + +#include +ComplexCollect *gencomplex(); + +SCLP23(Model_contents_ptr) GetModelContents(char *schemaName); #endif diff --git a/source/geometry/solids/STEP/include/scl_cf.h b/source/geometry/solids/STEP/include/scl_cf.h new file mode 100644 index 0000000000..0ba57d9fa3 --- /dev/null +++ b/source/geometry/solids/STEP/include/scl_cf.h @@ -0,0 +1,67 @@ +/* config/scl_cf.h. Generated automatically by configure. */ +/* + * Check for headers + */ +#ifndef __SCL_CF_H__ +#define __SCL_CF_H__ + +/* #undef DIRENT */ +/* #undef SYSNDIR */ +/* #undef SYSDIR */ +/* #undef NDIR */ + +#define HAVE_DIRENT_H 1 +/* #undef HAVE_SYS_NDIR_H */ +/* #undef HAVE_SYS_DIR_H */ +/* #undef HAVE_NDIR_H */ +#define HAVE_STDARG_H 1 + +#define HAVE_STRING_H 1 +#define HAVE_MEMORY_H 1 + +#ifndef WIN32 +#define HAVE_UNISTD_H 1 +#endif +/* #undef HAVE_SYSENT_H */ +#define HAVE_SYS_STAT_H 1 +/* #undef HAVE_STAT_H */ + +/* #undef NO_STDLIB_H */ +/* #undef HAVE_VARARGS_H */ +/* #undef HAVE_STROPTS_H */ +/* #undef HAVE_SYSCONF_H */ + +/* + * This section is for compile macros needed by + * everything else. + */ + +/* + * Check for functions + */ +#define HAVE_MEMCPY 1 +#define HAVE_SYSCONF 1 +#define HAVE_MEMMOVE 1 +#define HAVE_STRCHR 1 +#define HAVE_ABS 1 + +#ifndef HAVE_STRCHR +#define strchr(s,c) index(s,c) +#endif /* HAVE_STRCHR */ + +/* + * Check for tty/pty functions and structures + */ +/* #undef POSIX */ + +/* + * Special hacks + */ +/* #undef CONVEX */ +/* #undef SOLARIS */ + +#ifdef SOLARIS +#define __EXTENSIONS__ +#endif /* SOLARIS */ + +#endif /* __SCL_CF_H__ */ diff --git a/source/geometry/solids/STEP/include/scl_char_str_list.h b/source/geometry/solids/STEP/include/scl_char_str_list.h new file mode 100644 index 0000000000..5a6b2efa9f --- /dev/null +++ b/source/geometry/solids/STEP/include/scl_char_str_list.h @@ -0,0 +1,30 @@ +#ifndef SCL_CHAR_STR_LIST_H +#define SCL_CHAR_STR_LIST_H + +typedef char * scl_char_str_ptr; + +class scl_char_str__list { +public: + scl_char_str__list(int = 16); + ~scl_char_str__list(); + + scl_char_str_ptr& operator[](int index); + void Insert(scl_char_str_ptr, int index); + void Append(scl_char_str_ptr); + void Remove(int index); + int Index(scl_char_str_ptr); + + int Count(); + void Clear(); +private: + void Check(int index); +private: + scl_char_str_ptr* _buf; + int _bufsize; + int _count; +}; + +typedef scl_char_str__list *scl_char_str__list_ptr; +typedef scl_char_str__list_ptr scl_char_str__list_var; + +#endif diff --git a/source/geometry/solids/STEP/include/scl_hash.h b/source/geometry/solids/STEP/include/scl_hash.h index a21e976710..e603d4e0af 100644 --- a/source/geometry/solids/STEP/include/scl_hash.h +++ b/source/geometry/solids/STEP/include/scl_hash.h @@ -1,21 +1,11 @@ - -// - - - -// -// $Id: scl_hash.h,v 1.2 1999/05/21 20:20:43 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - #ifndef SCL_HASH_H #define SCL_HASH_H /* * NIST Utils Class Library * clutils/scl_hash.h -* May 1995 +* April 1997 * David Sauder * K. C. Morris @@ -23,7 +13,7 @@ * and is not subject to copyright. */ -/* */ +/* $Id: scl_hash.h,v 1.3 2000/01/21 13:42:41 gcosmo Exp $ */ /************************************************************************ ** Hash_Table: Hash_Table @@ -41,41 +31,37 @@ * not subject to copyright. * * $Log: scl_hash.h,v $ - * Revision 1.2 1999/05/21 20:20:43 japost - * Deleted incorrect RD44/Geant4 copyright statement + * Revision 1.3 2000/01/21 13:42:41 gcosmo + * New STEP Reader SCL3.2 * - * Revision 1.1 1999/01/07 16:08:09 gunter - * Files from release of geant4.0.0- tag geant4-00 + * Revision 3.0.1.2 1997/11/05 22:33:49 sauderd + * Adding a new state DP3.1 and associated revision * - * Revision 2.0 1998/07/02 17:03:57 gunter - * Set version 2.0 + * Revision 3.0.1.1 1997/07/28 19:35:28 sauderd + * Adding a new state DP3.0.1 and associated revision * - * Revision 1.1 1998/07/02 15:41:11 gunter - * Import for geant4beta + * Revision 3.0.1.0 1997/04/16 19:14:12 dar + * Setting the first branch * - * Revision 1.4 1997/08/06 15:51:01 jsulkimo - * Going back to Gabrielle's changes - kept only the newly modified - * SdaiCONFIG_CONTROL_DESIGN.h. + * Revision 3.0 1997/04/16 19:14:11 dar + * STEP Class Library Pre Release 3.0 * - * Revision 1.2 1997/06/28 00:15:30 gcosmo - * Porting on DEC-OSF1 + * Revision 2.2.1.0 1997/09/20 20:59:02 sauderd + * Setting the first branch * - * Revision 1.1.1.1 1997/02/12 10:52:33 tsasaki - * GEANT4 alpha + * Revision 2.2 1997/09/20 20:59:01 sauderd + * STEP Class Library Pre Release 2.2 * - * Revision 1.1 1996/08/20 15:32:59 jsulkimo - * created - * - * Revision 2.1.0.1 1995/05/16 14:35:29 lubell + * Revision 2.1.0.1 1997/05/16 14:35:29 lubell * setting state to dp21 * - * Revision 2.1.0.0 1995/05/12 14:13:33 lubell + * Revision 2.1.0.0 1997/05/12 14:13:33 lubell * setting branch * - * Revision 2.1 1995/05/12 14:13:32 lubell + * Revision 2.1 1997/05/12 14:13:32 lubell * changing version to 2.1 * - * Revision 2.0.1.2 1995/05/09 20:04:42 lubell + * Revision 2.0.1.2 1997/05/09 20:04:42 lubell * Changed the date from 2/94 to 5/95 * * Revision 2.0.1.1 1994/04/05 16:44:11 sauderd @@ -113,8 +99,6 @@ typedef enum { HASH_FIND, HASH_INSERT, HASH_DELETE } Action; -struct Symbol { }; /* empty if not used */ - struct Element { char *key; void *data; diff --git a/source/geometry/solids/STEP/include/scl_osschema.h b/source/geometry/solids/STEP/include/scl_osschema.h new file mode 100644 index 0000000000..dfeabc15e3 --- /dev/null +++ b/source/geometry/solids/STEP/include/scl_osschema.h @@ -0,0 +1,94 @@ +#ifndef SCL_OSSCHEMA_H +#define SCL_OSSCHEMA_H + +//#define _ODI_OSSG_ + +/* +*/ +#include +#include + +#include + +//#include +#include +#include +#include +//#include +#include + +#include +#include +#include +#include +#include + +void scl_dummy () +{ + +OS_MARK_SCHEMA_TYPE(ErrorDescriptor) + +OS_MARK_SCHEMA_TYPE(SCLstring) +OS_MARK_SCHEMA_TYPE(SCLP23(String)) +OS_MARK_SCHEMA_TYPE(SCLP23(Binary)) +OS_MARK_SCHEMA_TYPE(SCLP23(Enum)) +OS_MARK_SCHEMA_TYPE(SCLP23(BOOL)) +OS_MARK_SCHEMA_TYPE(SCLP23(LOGICAL)) + +OS_MARK_SCHEMA_TYPE(STEPattribute) +OS_MARK_SCHEMA_TYPE(SingleLinkNode) +OS_MARK_SCHEMA_TYPE(SingleLinkList) +OS_MARK_SCHEMA_TYPE(AttrListNode) +OS_MARK_SCHEMA_TYPE(STEPattributeList) + +OS_MARK_SCHEMA_TYPE(SCLP23(sdaiObject)) +OS_MARK_SCHEMA_TYPE(SCLP23(PID)) +OS_MARK_SCHEMA_TYPE(SCLP23(PID_SDAI)) +OS_MARK_SCHEMA_TYPE(SCLP23(PID_DA)) +OS_MARK_SCHEMA_TYPE(SCLP23(DAObject)) +OS_MARK_SCHEMA_TYPE(SCLP23(DAObject_SDAI)) +OS_MARK_SCHEMA_TYPE(SCLP23(Application_instance)) + +OS_MARK_SCHEMA_TYPE(SCLP23(Select)) + +OS_MARK_SCHEMA_TYPE(SCLP23(DAObject__set)) +OS_MARK_SCHEMA_TYPE(SCLP23(Session_instance)) +OS_MARK_SCHEMA_TYPE(SCLP23(Model_contents_instances)) +OS_MARK_SCHEMA_TYPE(SCLP23(Model_contents)) +OS_MARK_SCHEMA_TYPE(SCLP23(Model_contents__list)) +OS_MARK_SCHEMA_TYPE(SCLP23(Entity_extent)) +OS_MARK_SCHEMA_TYPE(SCLP23(Entity_extent__set)) + +OS_MARK_SCHEMA_TYPE(STEPaggregate) +OS_MARK_SCHEMA_TYPE(GenericAggregate) +OS_MARK_SCHEMA_TYPE(EntityAggregate) +OS_MARK_SCHEMA_TYPE(SelectAggregate) +OS_MARK_SCHEMA_TYPE(StringAggregate) +OS_MARK_SCHEMA_TYPE(BinaryAggregate) +OS_MARK_SCHEMA_TYPE(EnumAggregate) +OS_MARK_SCHEMA_TYPE(LOGICALS) +OS_MARK_SCHEMA_TYPE(BOOLS) +OS_MARK_SCHEMA_TYPE(RealAggregate) +OS_MARK_SCHEMA_TYPE(IntAggregate) +OS_MARK_SCHEMA_TYPE(STEPnode) +OS_MARK_SCHEMA_TYPE(GenericAggrNode) +OS_MARK_SCHEMA_TYPE(EntityNode) +OS_MARK_SCHEMA_TYPE(SelectNode) +OS_MARK_SCHEMA_TYPE(StringNode) +OS_MARK_SCHEMA_TYPE(BinaryNode) +OS_MARK_SCHEMA_TYPE(EnumNode) +OS_MARK_SCHEMA_TYPE(RealNode) +OS_MARK_SCHEMA_TYPE(IntNode) + +/* +//O S_MARK_SCHEMA_TYPE(GenericNode) +//O S_MARK_SCHEMA_TYPE(GenNodeArray) +//O S_MARK_SCHEMA_TYPE(MgrNode) +//O S_MARK_SCHEMA_TYPE(MgrNodeArray) +//O S_MARK_SCHEMA_TYPE(MgrNodeArraySorted) +//O S_MARK_SCHEMA_TYPE(InstMgr) +*/ + +} + +#endif diff --git a/source/geometry/solids/STEP/include/scl_string.h b/source/geometry/solids/STEP/include/scl_string.h index d2aa6055f9..3a66933f38 100644 --- a/source/geometry/solids/STEP/include/scl_string.h +++ b/source/geometry/solids/STEP/include/scl_string.h @@ -1,20 +1,10 @@ - - -// - - - -// -// $Id: scl_string.h,v 1.3 1999/12/15 18:04:17 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// #ifndef _SCL_STRING_H #define _SCL_STRING_H /* * NIST Utils Class Library * clutils/scl_string.h -* May 1995 +* April 1997 * K. C. Morris * David Sauder @@ -22,18 +12,27 @@ * and is not subject to copyright. */ -/* */ +/* $Id: scl_string.h,v 1.4 2000/01/21 13:42:42 gcosmo Exp $ */ #ifdef __O3DB__ #include #endif +#ifdef __OSTORE__ +#include // Required to access ObjectStore Class Library +#endif + /* point of contact for bug reports */ #define _POC_ " report problem to dp2@cme.nist.gov " //#include // not found in CenterLine C++ -#ifdef __OBJECTCENTER__ +//#ifdef __OBJECTCENTER__ // this file is not in gnu C++ but it doesn't seem to be needed. +//#include +//#endif + +// to make ObjectCenter happy? +#ifdef HAVE_STDARG_H #include #endif @@ -41,7 +40,7 @@ #include /****************************************************************** - ** Class: SCLstring +b** Class: SCLstring ** Description: implements a few basic string handling functions - ** hopefully will be replaced by a standard clas ** Status: 26-Jan-1994 kc @@ -49,6 +48,7 @@ class SCLstring { protected: +public: char * _strBuf; // initially empty int _strBufSize; // size of buffer int _max_len; // should be const, but some db\'s don\'t handle that @@ -56,6 +56,7 @@ protected: int newBufSize (int len) const; public: + void PrintContents(G4std::ostream &out = G4cout) const; // returns 1 if _strBuf is a null ptr or if it is an empty string ("") int is_null() const; // returns 1 if _strBuf is a null ptr, and 0 otherwise @@ -67,6 +68,7 @@ public: int StrBufSize() const; int Length() const; int MaxLength() const { return _max_len; } + void MaxLength(int i) { _max_len = i; } const char * chars () const { return _strBuf ? _strBuf : ""; } @@ -96,8 +98,11 @@ public: SCLstring (const SCLstring& s); ~SCLstring (); +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif }; -#endif - +typedef SCLstring String_var; +#endif /* _SCL_STRING_H */ diff --git a/source/geometry/solids/STEP/include/scldir.h b/source/geometry/solids/STEP/include/scldir.h new file mode 100644 index 0000000000..92542387bd --- /dev/null +++ b/source/geometry/solids/STEP/include/scldir.h @@ -0,0 +1,79 @@ + +#ifdef __O3DB__ +#include +#endif + +/* + * C++ interface to Unix file system dir structure + */ +#ifdef HAVE_UNISTD_H +#include +#include +#endif + + /* unistd.h defines _POSIX_VERSION on POSIX.1 systems. */ +#if defined(DIRENT) || defined(_POSIX_VERSION) +#include +#define NLENGTH(dirent) (strlen((dirent)->d_name)) +#else /* not (DIRENT or _POSIX_VERSION) */ +#define dirent direct +#define NLENGTH(dirent) ((dirent)->d_namlen) + +#ifdef HAVE_SYS_DIR_H +#include +//#elif HAVE_SYS_NDIR_H +//#include +//#elif HAVE_NDIR_H +//#include +#endif + +#endif /* not (DIRENT or _POSIX_VERSION) */ + +#if 0 +#ifndef sys_dir_h + +#if defined(__cplusplus) +extern "C" { +#endif + +#if !defined(opendir) +#define opendir sys_dir_h_opendir +#define readdir sys_dir_h_readdir +#define telldir sys_dir_h_telldir +#define seekdir sys_dir_h_seekdir +#define closedir sys_dir_h_closedir +#endif + +#if defined(SYSV) +#include "//usr/include/sys/types.h" +#include "//usr/include/dirent.h" +#else +#include "//usr/include/sys/dir.h" +#endif + +#undef opendir +#undef readdir +#undef telldir +#undef seekdir +#undef closedir + +#ifndef sys_dir_h +#define sys_dir_h +#endif + +extern DIR* opendir(const char*); +#if defined(SYSV) +extern struct dirent* readdir(DIR*); +#else +extern struct direct* readdir(DIR*); +#endif +extern long telldir(DIR*); +extern void seekdir(DIR*); +extern int closedir(DIR*); + +#if defined(__cplusplus) +} +#endif +#endif /* if 0 */ + +#endif diff --git a/source/geometry/solids/STEP/include/sclprefixes.h b/source/geometry/solids/STEP/include/sclprefixes.h new file mode 100644 index 0000000000..ee1650d094 --- /dev/null +++ b/source/geometry/solids/STEP/include/sclprefixes.h @@ -0,0 +1,353 @@ +#ifndef SCLPREFIXES_H +#define SCLPREFIXES_H + +/* DAS + What I had in mind here is that there could be a different prefix or + namespace for some types (like the ones defined in CORBA or some other + software package). e.g. the Boolean and Logical enums are problematic + with various other software packages. They will be defined by the IDL + generated C++. In that case they should not be defined in SCL. In either + case their SCL uses are always prefixed with macros defined in this file + to help adapt the code as necessary. +*/ + +/* ********************** +If you define NO_BOOLS_LOGS when you build the SCL then SCL will not define +Bool or Logical C++ enums. You will need to: + 1. Define Bool and Logical yourself somewhere and #include the name of the + header file that defines them in a corbaIncludes.h that can be seen by + SCL Makefiles (currently found in sdaiOrbix/corbaIncludes.h) + 2. Define SCLBOOL, SCLBOOL_H, SCLLOG, and SCLLOG_H to match their non-SCL + name space or name prefix. + +If you have NO_BOOLS_LOGS turned off (the default) when building SCL +then the definitions for Bool and Logical will be defined in SCL in +clstepcore/sdaiEnum.h + +You should use the parameterized macro definition of SCLBOOL or SCLLOG below +when using Bool or Logical. + +The macro SCLP23_NAME is used in header files and for constructor/destructor +class function names in corresponding .cc files. + +The macro SCLP23 is used everywhere else. + +********************* */ + + // *note* Currently the IDL generated code is not in a namespace. +//#undef NO_P26_NAMESPACE +//#define NO_P26_NAMESPACE 1 + +// P stands for Part (yeah, it's just to make it short & unique - hopefully) +// as in Part 23 or Part 26. + +#ifdef PART26 // SCL's Part 23 is providing the implementation for the Part 26 + // Orbix-generated software interface. + +// The namespace is specified to be SDAI by Part 26 and Part 23 + // Since Part 23 and Part 26 defined objects are suppose to have the same + // names and are supposed to be defined in a namespace called SDAI, define + // the namespaces names for Part 23 and 26 to be different (to avoid conflict) + + // This is the namespace for SCL's Part 23 SDAI. + #define P23_NAMESPACE P23 + // Whenever you have something like P23_NAMESPACE##_name the preprocessor + // does the concatenation first then substitutes things. Thus you get + // P23_NAMESPACE_name instead of _name. If you + // call P23_NAMESPACE_F() like P23_NAMESPACE_F(_name) you get + // whatever P23_NAMESPACE is>_name like you want. The user never has to + // use this macro. It is used in the definition of macros the user uses like + // SCLP23() and SCLP23_NAME(). + #define P23_NAMESPACE_F(x) P23##x + + // This was used by the ITI code. It holds the same meaning as P23_NAMESPACE + #define IMP_NAMESPACE P23_NAMESPACE + #define IMP_NAMESPACE_F(x) P23_NAMESPACE_F(x) + // as defined by original ITI code + // #define IMP_NAMESPACE P26_SDAI + +// This is the namespace used by the IDL generated code implementing Part 26. +// +// define NO_P26_NAMESPACE if you are not going to define an encapsulating +// module in the idl. If you define a module named SDAI then you will have to +// refer to the class for interface PID (e.g.) as SDAI::PID and you will have +// to refer to the macros as DEF_TIE_SDAI_PID() and TIE_SDAI_PID() instead of +// DEF_TIE_PID() and TIE_PID(). DEF_TIE_IDL_MODULE() and TIE_IDL_MODULE() +// handle this problem in the code. +// You should define P26_NAMESPACE the same as the name you use for the idl +// module. Without a module you should define NO_P26_NAMESPACE +// +// DEF_TIE_IDL_MODULE handles the DEF_TIE macro depending on whether a module +// name was used in the idl. e.g. for class/interface named PID +//#define SDAI_DEF_TIE_PID(X) DEF_TIE_IDL_MODULE(PID,X) +// replaces either of these two stmts in your code depending on whether a +// module name SDAI was used. +//#define SDAI_DEF_TIE_PID(X) DEF_TIE_PID(X) +//#define SDAI_DEF_TIE_PID(X) DEF_TIE_SDAI_PID(X) +// +// TIE_IDL_MODULE handles the TIE macro depending on whether a module +// name was used in the idl. e.g. for class/interface named PID +//#define _SDAI_TIE_PID_(X) TIE_IDL_MODULE(PID,X) +// replaces either of these two stmts in your code depending on whether a +// module name SDAI was used. +//#define _SDAI_TIE_PID_(X) TIE_PID(X) +//#define _SDAI_TIE_PID_(X) TIE_SDAI_PID(X) + + #ifdef NO_P26_NAMESPACE + #define P26_NAMESPACE + #define P26_NAMESPACE_F(x) x + #define DEF_TIE_IDL_MODULE(x,y) DEF_TIE_##x(y) + #define TIE_IDL_MODULE(x,y) TIE_##x(y) + #else + // edit "SDAI" here to match the name of your module + #define P26_NAMESPACE SDAI + #define P26_NAMESPACE_F(x) SDAI##x + #define DEF_TIE_IDL_MODULE(x,y) DEF_TIE_SDAI_##x(y) + #define TIE_IDL_MODULE(x,y) TIE_SDAI_##x(y) + #endif + + // Define the namespace that contains the Bool and Logical enum definitions. + // If PART26 is defined, Bool and Logical should be in the IDL-generated + // code (and namespace). + // *note* Currently the IDL generated code is not in a namespace. + #define BOOL_LOG_NAMESPACE P26_NAMESPACE + #define BOOL_LOG_NAMESPACE_F(x) P26_NAMESPACE_F(x) + + // This would be the namespace for your application schema. + // This is for the ITI-developed code. It really shouldn't go here - DAS + #define APP_NAMESPACE P26_Simple_geometry + +#else // SCL's Part 23 is not providing the implementation for the Part 26 + // Orbix-generated software interface. + + // This is the namespace for SCL's Part 23 SDAI. + #define P23_NAMESPACE SDAI + #define P23_NAMESPACE_F(x) SDAI##x + + // This was used by the ITI code. It holds the same meaning as P23_NAMESPACE + #define IMP_NAMESPACE P23_NAMESPACE + #define IMP_NAMESPACE_F(x) P23_NAMESPACE_F(x) + // as defined by original ITI code + // #define IMP_NAMESPACE SDAI + + // This is the namespace used by the IDL generated code implementing Part 26. + // **Note this should never be used if PART26 is not defined. + #define P26_NAMESPACE + #define P26_NAMESPACE_F(x) x + + // Define the namespace that contains the Bool and Logical enum definitions. + // NO_BOOLS_LOGS is used to turn off the SCL definitions of Bool and Logical + #ifndef NO_BOOLS_LOGS + // Unless otherwise necessary, if not defined by IDL generated code use the + // SCL namespace definitions. + #define BOOL_LOG_NAMESPACE P23_NAMESPACE + #define BOOL_LOG_NAMESPACE_F(x) P23_NAMESPACE_F(x) + #else + // if you turn the definitions off you need to define how they are used. + #define BOOL_LOG_NAMESPACE + #define BOOL_LOG_NAMESPACE_F(x) x + #endif + + // This would be the namespace for your application schema. + // This is for the ITI-developed code. It really shouldn't go here - DAS + #define APP_NAMESPACE Simple_geometry + +#endif + + +#ifdef CC_NO_NESTED_CLASSES + + // SCLBOOL_H and SCLLOG_H are used in the sdaiEnum.h header file where + // the C++ enums Bool and Logical are used. + + // Use SCLBOOL_H and SCLLOG_H when Bool and Logical are used inside the + // namespace definition i.e. inside SCL header files. + // This macro should not be relevant to users of SCL (other than to + // understand the SCL header files). + #define SCLBOOL_H(x) BOOL_LOG_NAMESPACE_F(_##x) + #define SCLLOG_H(x) BOOL_LOG_NAMESPACE_F(_##x) + // or if you don't want them to use a name prefix + //#define SCLBOOL_H(x) x + //#define SCLLOG_H(x) x + + // Use SCLBOOL and SCLLOG in all other files where the C++ enums Bool and + // Logical are used. i.e. any uses outside the namespace definition. + // SCL users would always wrap uses of Bool and Logical enums inside these. + #define SCLBOOL(x) BOOL_LOG_NAMESPACE_F(_##x) + #define SCLLOG(x) BOOL_LOG_NAMESPACE_F(_##x) + // or if you don't want them to use a name prefix + //#define SCLBOOL(x) x + //#define SCLLOG(x) x + +/////////////////////// + // Use this macro to enclose objects generated from IDL interface types. + // i.e. Part 26 based generated types. + // Use this with types that will ONLY ever be Part 26 types. For types + // that can switch use PART22() macro. + // Used with the IDL compiler generated C++ - DAS + #define SCLP26(X) P26_NAMESPACE_F(_##X) + + // Used by ITI code to enclose objects generated from IDL interface types. + // This is used for function arguments and return types that need to be + // either the Part 26 version or the Part 23 version depending on whether + // the Part 23 interface is being used standalone or to implement Orbix + // implementation objects using the TIE approach. - DAS + // This one is defined to use the Part 26 defined type for use with Orbix. + #define SCLP22_NAME(X) P26_NAMESPACE_F(_##X) + #define SCLP22(X) P26_NAMESPACE_F(_##X) + // as defined by ITI + // #define SCLP22(X) SDAI_##X + + // Use this macro to enclose references to CORBA types. + // Used with the Orbix base C++ types/classes #included via CORBA.h. + // i.e. not used with types/interfaces generated from a users IDL schema. + // DAS + #define CORBA_REF(X) CORBA_##X + + // I don't understand why this is necessary - DAS + // Use this macro to enclose references to CORBA Object and Object_ptr + #define SCLP22_BASE(X) CORBA_##X + + + // SCLP23_NAME is used in header files and for constructor/destructor + // class function names in corresponding .cc files. + // Use this macro to enclose declarations of implementation types. + #define SCLP23_NAME(x) P23_NAMESPACE_F(_##x) + + // SCLP23 is used everywhere else. + // Use this macro to enclose uses of Part 23 based (implementation) types. + #define SCLP23(x) P23_NAMESPACE_F(_##x) + + // Use this macro to enclose references to implementation types + // whose names have already been qualified + // I don't understand this macros use - DAS + #define SCLP23_SPACE(x) x + + // INTEGRATION appmacros here... + #define SCLP22_SIMPLE_GEOMETRY(X) SDAI_Simple_geometry_##X + #define SCLP23_SIMPLE_GEOMETRY_NAME(x) APP_NAMESPACE##_##x + #define SCLP23_SIMPLE_GEOMETRY(x) APP_NAMESPACE##_##x +/////////////////////////////////// + +#else // nested classes are allowed by the compiler +///////////////////////////////////// + + // Use SCLBOOL_H and SCLLOG_H when Bool and Logical are used inside the + // namespace definition i.e. inside SCL header files. + // This macro should not be relevant to users of SCL (other than to + // understand the SCL header files). + #ifndef NO_BOOLS_LOGS + #define SCLBOOL_H(x) x + #define SCLLOG_H(x) x + #else + #ifdef PART26 + #ifdef NO_P26_NAMESPACE + #define SCLBOOL_H(x) x + #define SCLLOG_H(x) x + #else + #define SCLBOOL_H(x) BOOL_LOG_NAMESPACE_F(::##x) + #define SCLLOG_H(x) BOOL_LOG_NAMESPACE_F(::##x) + #endif + #else + #define SCLBOOL_H(x) BOOL_LOG_NAMESPACE_F(::##x) + #define SCLLOG_H(x) BOOL_LOG_NAMESPACE_F(::##x) + #endif + #endif + + // Use SCLBOOL and SCLLOG in all other files where the C++ enums Bool and + // Logical are used. i.e. any uses outside the namespace definition. + // SCL users would always wrap uses of Bool and Logical enums inside these. + #ifndef NO_BOOLS_LOGS + #define SCLBOOL(x) BOOL_LOG_NAMESPACE_F(::##x) + #define SCLLOG(x) BOOL_LOG_NAMESPACE_F(::##x) + #else + #ifdef PART26 + #ifdef NO_P26_NAMESPACE + #define SCLBOOL(x) x + #define SCLLOG(x) x + #else + #define SCLBOOL(x) BOOL_LOG_NAMESPACE_F(::##x) + #define SCLLOG(x) BOOL_LOG_NAMESPACE_F(::##x) + #endif + #else + #define SCLBOOL(x) BOOL_LOG_NAMESPACE_F(::##x) + #define SCLLOG(x) BOOL_LOG_NAMESPACE_F(::##x) + #endif + #endif + +/////////////////////// + // Use this macro to enclose objects generated from IDL interface types. + // i.e. Part 26 based generated types. + // Used with the IDL compiler generated C++ - DAS + #ifdef NO_P26_NAMESPACE + #define SCLP26(X) X + #else + #define SCLP26(X) P26_NAMESPACE_F(::##X) + #endif + + // Used by ITI code to enclose objects generated from IDL interface types. + // This is used for function arguments and return types that need to be + // either the Part 26 version or the Part 23 version depending on whether + // the Part 23 interface is being used standalone or to implement Orbix + // implementation objects using the TIE approach. - DAS + // This one is defined to use the Part 26 defined type for use with Orbix. + #ifdef NO_P26_NAMESPACE + #define SCLP22_NAME(X) X + #define SCLP22(X) X + #else + #define SCLP22_NAME(X) P26_NAMESPACE_F(::##X) + #define SCLP22(X) P26_NAMESPACE_F(::##X) + #endif + // as defined by ITI + // #define SCLP22(X) SDAI::##X + + // Use this macro to enclose references to CORBA types. + // Used with the Orbix base C++ types/classes #included via CORBA.h. + // i.e. not used with types/interfaces generated from a users IDL schema. + // DAS + #define CORBA_REF(X) CORBA::##X + + // I don't understand why this is necessary - DAS + // Use this macro to enclose references to CORBA Object and Object_ptr + #define SCLP22_BASE(X) CORBA::##X + + // SCLP23_NAME is used in header files and for constructor/destructor + // class function names in corresponding .cc files. + // Use this macro to enclose declarations of implementation types. + #ifdef PART26 + #define SCLP23_NAME(x) P23_NAMESPACE_F(_imp##x) +// #define SCLP23_NAME(x) imp##x + #else + #define SCLP23_NAME(x) x + #endif + + // SCLP23 is used everywhere else. + // Use this macro to enclose uses of Part 23 based (implementation) types. + #ifdef PART26 + #define SCLP23(x) P23_NAMESPACE_F(_imp##x) +// #define SCLP23(x) P23_NAMESPACE_F(::##imp##x) + #else + #define SCLP23(x) P23_NAMESPACE_F(::##x) + #endif + // as defined by ITI + // #define SCLP23(x) IMP_NAMESPACE_F(::imp##x) + + // Use this macro to enclose references to implementation types + // whose names have already been qualified + // I don't understand this macros use - DAS + #ifdef PART26 + #define SCLP23_SPACE(x) P23_NAMESPACE_F(_imp##x) +// #define SCLP23_SPACE(x) P23_NAMESPACE_F(::##imp##x) + #else + #define SCLP23_SPACE(x) IMP_NAMESPACE_F(::x) + #endif + + // INTEGRATION appmacros here... + #define SCLP22_SIMPLE_GEOMETRY(X) SDAI::Simple_geometry::##X + #define SCLP23_SIMPLE_GEOMETRY_NAME(x) imp##x + #define SCLP23_SIMPLE_GEOMETRY(x) APP_NAMESPACE::imp##x +///////////////////////////////////// + +#endif + +#endif diff --git a/source/geometry/solids/STEP/include/sdai.h b/source/geometry/solids/STEP/include/sdai.h index c4b0a54bba..4b89117646 100644 --- a/source/geometry/solids/STEP/include/sdai.h +++ b/source/geometry/solids/STEP/include/sdai.h @@ -1,20 +1,10 @@ - - -// - - - -// -// $Id: sdai.h,v 1.2 1999/05/21 20:20:44 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -#ifndef SDAI_H -#define SDAI_H +#ifndef P23SDAI_H +#define P23SDAI_H /* * NIST STEP Core Class Library * clstepcore/sdai.h -* May 1995 +* April 1997 * David Sauder * KC Morris @@ -28,59 +18,274 @@ * values for the EXPRESS base types. */ -/* */ +/* $Id: sdai.h,v 1.4 2000/02/14 13:44:03 gcosmo Exp $ */ + +extern const char *SCLversion; + +#include +//#include +//#include +//#include + +#include + +#ifdef PART26 +// Change the name of the include file defining the defs for Bool and Logical +// inside the file corbaIncludes.h +#include +#endif + +#ifdef __OSTORE__ + +#include // Required to access ObjectStore Class Library +#include +void Application_instance_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); + +#endif + +#include +#include + +#include +#include +#include +#include + +typedef String_var Express_id; #ifdef __O3DB__ /* OpenOODB.h must be the first include file. */ #include #endif -//#include -#include +//#include -#include +class TypeDescriptor; +class EntityDescriptor; +class SelectTypeDescriptor; +class InstMgr; -// The values used here to represent NULL values for numeric types come from -// the ANSI C standard +#include -// INTEGER -// may not a good idea because the def SdaiInteger &i may not be legal -//typedef long int SdaiInteger; +class STEPattributeList; +class STEPattribute; -#define SdaiInteger long -//#define s_Integer SdaiInteger +#ifndef BINARY_DELIM +#define BINARY_DELIM '\"' +#endif -// C++ from values.h DAS PORT -//#define S_INT_NULL MAXLONG -// C++ from limits.h DAS PORT -#define S_INT_NULL LONG_MAX - - // REAL -//typedef double SdaiReal; -#define SdaiReal double -//#define s_Real SdaiReal - -// C++ from values.h DAS PORT -//# define S_REAL_NULL MINFLOAT -// C++ from limits.h DAS PORT -#define S_REAL_NULL FLT_MIN - - // NUMBER - // arbitrary choice by me for number DAS - -// C++ from values.h DAS PORT -//#define S_NUMBER_NULL MINFLOAT -// C++ from limits.h DAS PORT -#define S_NUMBER_NULL FLT_MIN +#ifndef STRING_DELIM +#define STRING_DELIM '\'' +#endif // STRING #define S_STRING_NULL "" -#include - // ENTITY -class STEPentity; -extern STEPentity NilSTEPentity; -#define S_ENTITY_NULL &NilSTEPentity +#ifndef CC_NO_NESTED_CLASSES +#ifndef PART26 +struct P23_NAMESPACE { +#endif // PART26 +#endif // CC_NO_NESTED_CLASSES + +// INTEGER +//typedef long Integer; +//typedef short Short; +//typedef unsigned short UShort; +//typedef unsigned long ULong; + + +typedef long SCLP23_NAME(Integer); +typedef short SCLP23_NAME(Short); +typedef unsigned short SCLP23_NAME(UShort); +typedef unsigned long SCLP23_NAME(ULong); +typedef double SCLP23_NAME(Real); + +// C++ from values.h DAS PORT +#ifdef CC_NO_NESTED_CLASSES + extern const SCLP23_NAME(Integer) SCLP23_NAME(INT_NULL); + extern const SCLP23_NAME(Real) SCLP23_NAME(REAL_NULL); + // arbitrary choice by me for number DAS + extern const SCLP23_NAME(Real) SCLP23_NAME(NUMBER_NULL); +#else + #ifdef PART26 + extern const SCLP23_NAME(Integer) SCLP23_NAME(INT_NULL); + extern const SCLP23_NAME(Real) SCLP23_NAME(REAL_NULL); + // arbitrary choice by me for number DAS + extern const SCLP23_NAME(Real) SCLP23_NAME(NUMBER_NULL); + #else + static const SCLP23_NAME(Integer) SCLP23_NAME(INT_NULL); + static const SCLP23_NAME(Real) SCLP23_NAME(REAL_NULL); + // arbitrary choice by me for number DAS + static const SCLP23_NAME(Real) SCLP23_NAME(NUMBER_NULL); + #endif +#endif +/* +// C++ from values.h DAS PORT +//static const Integer INT_NULL = MAXLONG; +static const Integer INT_NULL; + +// REAL +typedef double Real; + +// C++ from values.h DAS PORT +//static const Real REAL_NULL = MINFLOAT; +static const Real REAL_NULL; + +// NUMBER + // arbitrary choice by me for number DAS +// C++ from values.h DAS PORT +//static const Real NUMBER_NULL = MINFLOAT; +static const Real NUMBER_NULL; +*/ + +enum SCLP23_NAME(Access_type) { + SCLP23_NAME(sdaiRO), + SCLP23_NAME(sdaiRW), + SCLP23_NAME(Access_type_unset) +}; + +enum SCLP23_NAME(Commit_mode) { + SCLP23_NAME(sdaiCOMMIT), + SCLP23_NAME(sdaiABORT) +} ; + +enum SCLP23_NAME(AttrFlag) { + SCLP23_NAME(sdaiSET), +SCLP23_NAME(sdaiUNSET) +} ; + +enum SCLP23_NAME(ImplementationClass) { + SCLP23_NAME(sdaiCLASS1), + SCLP23_NAME(sdaiCLASS2), + SCLP23_NAME(sdaiCLASS3), + SCLP23_NAME(sdaiCLASS4), + SCLP23_NAME(sdaiCLASS5) +}; // conflict with part 22 EXPRESS: + +enum SCLP23_NAME(Error_id) { + // + // error codes taken from 10303-23, Jan 28, 1997. + // ISO TC184/SC4/WG11 N 004 + // + SCLP23_NAME(sdaiNO_ERR) = 0, // No error + SCLP23_NAME(sdaiSS_OPN) = 10, // Session open + SCLP23_NAME(sdaiSS_NAVL) = 20, // Session not available + SCLP23_NAME(sdaiSS_NOPN) = 30, // Session is not open + SCLP23_NAME(sdaiRP_NEXS) = 40, // Repository does not exist + SCLP23_NAME(sdaiRP_NAVL) = 50, // Repository not available + SCLP23_NAME(sdaiRP_OPN) = 60, // Repository already opened + SCLP23_NAME(sdaiRP_NOPN) = 70, // Repository is not open + SCLP23_NAME(sdaiTR_EAB) = 80, // Transaction ended abnormally so it no longer exists + SCLP23_NAME(sdaiTR_EXS) = 90, // Transaction exists + SCLP23_NAME(sdaiTR_NAVL) = 100, // Transaction not available + SCLP23_NAME(sdaiTR_RW) = 110, // Transaction read-write + SCLP23_NAME(sdaiTR_NRW) = 120, // Transaction not read-write + SCLP23_NAME(sdaiTR_NEXS) = 130, // Transaction does not exist + SCLP23_NAME(sdaiMO_NDEQ) = 140, // SDAI-model not domain-equivalent + SCLP23_NAME(sdaiMO_NEXS) = 150, // SDAI-model does not exist + SCLP23_NAME(sdaiMO_NVLD) = 160, // SDAI-model invalid + SCLP23_NAME(sdaiMO_DUP) = 170, // SDAI-model duplicate + SCLP23_NAME(sdaiMX_NRW) = 180, // SDAI-model access not read-write + SCLP23_NAME(sdaiMX_NDEF) = 190, // SDAI-model access is not defined + SCLP23_NAME(sdaiMX_RW) = 200, // SDAI-model access read-write + SCLP23_NAME(sdaiMX_RO) = 210, // SDAI-model access read-only + SCLP23_NAME(sdaiSD_NDEF) = 220, // Schema definition is not defined + SCLP23_NAME(sdaiED_NDEF) = 230, // Entity definition not defined + SCLP23_NAME(sdaiED_NDEQ) = 240, // Entity definition not domain equivalent + SCLP23_NAME(sdaiED_NVLD) = 250, // Entity definition invalid +// SCLP23_NAME(sdaiED_NAVL) = 250, // Entity definition not available + SCLP23_NAME(sdaiRU_NDEF) = 260, // Rule not defined + SCLP23_NAME(sdaiEX_NSUP) = 270, // Expression evaluation not supported + SCLP23_NAME(sdaiAT_NVLD) = 280, // Attribute invalid + SCLP23_NAME(sdaiAT_NDEF) = 290, // Attribute not defined + SCLP23_NAME(sdaiSI_DUP) = 300, // Schema instance duplicate + SCLP23_NAME(sdaiSI_NEXS) = 310, // Schema instance does not exist + SCLP23_NAME(sdaiEI_NEXS) = 320, // Entity instance does not exist + SCLP23_NAME(sdaiEI_NAVL) = 330, // Entity instance not available + SCLP23_NAME(sdaiEI_NVLD) = 340, // Entity instance invalid + SCLP23_NAME(sdaiEI_NEXP) = 350, // Entity instance not exported + SCLP23_NAME(sdaiSC_NEXS) = 360, // Scope does not exist + SCLP23_NAME(sdaiSC_EXS) = 370, // Scope exists + SCLP23_NAME(sdaiAI_NEXS) = 380, // Aggregate instance does not exist + SCLP23_NAME(sdaiAI_NVLD) = 390, // Aggregate instance invalid + SCLP23_NAME(sdaiAI_NSET) = 400, // Aggregate instance is empty + SCLP23_NAME(sdaiVA_NVLD) = 410, // Value invalid + SCLP23_NAME(sdaiVA_NEXS) = 420, // Value does not exist + SCLP23_NAME(sdaiVA_NSET) = 430, // Value not set + SCLP23_NAME(sdaiVT_NVLD) = 440, // Value type invalid + SCLP23_NAME(sdaiIR_NEXS) = 450, // Iterator does not exist + SCLP23_NAME(sdaiIR_NSET) = 460, // Current member is not defined + SCLP23_NAME(sdaiIX_NVLD) = 470, // Index invalid + SCLP23_NAME(sdaiER_NSET) = 480, // Event recording not set + SCLP23_NAME(sdaiOP_NVLD) = 490, // Operator invalid + SCLP23_NAME(sdaiFN_NAVL) = 500, // Function not available + SCLP23_NAME(sdaiSY_ERR) = 1000 // Underlying system error +}; + +typedef char * SCLP23_NAME(Time_stamp); +typedef char * SCLP23_NAME(Entity_name); +typedef char * SCLP23_NAME(Schema_name); + +/* +enum Access_type {sdaiRO, sdaiRW}; +enum Commit_mode {sdaiCOMMIT, sdaiABORT} ; +enum AttrFlag { sdaiSET, sdaiUNSET } ; +enum ImplementationClass { sdaiCLASS1, sdaiCLASS2, sdaiCLASS3, sdaiCLASS4, sdaiCLASS5 }; // conflict with part 22 EXPRESS: +enum Error_id { +sdaiNO_ERR = 0 , // No error +sdaiSS_OPN = 10, // Session open +sdaiSS_NAVL = 20, // Session not available +sdaiSS_NOPN = 30, // Session is not open +sdaiRP_NEXS = 40, // Repository does not exist +sdaiRP_NAVL = 50, // Repository not available +sdaiRP_OPN = 60, // Repository already opened +sdaiRP_NOPN = 70, // Repository not open +sdaiTR_EXS = 80, // Transaction exists +sdaiTR_NRO = 90, // Transaction not read-only +sdaiTR_NRW = 100, // Transaction not read-write +sdaiTR_NEXS = 110, // Transaction does not exist +sdaiSD_NDEF = 120, // Schema definition is not defined +sdaiMO_NEXS = 130, // SDAI-model does not exist +sdaiMO_NAVL = 140, // SDAI-model is not active +sdaiMX_NVLD = 150, // SDAI-model access invalid +sdaiMX_NRO = 160, // SDAI-model not read-only +sdaiMX_NRW = 170, // SDAI-model not read-write +sdaiMX_NDEF = 180, // SDAI-model access is not defined +sdaiMO_NVLD = 190, // SDAI-model invalid +sdaiMO_DUP = 200, // SDAI-model duplicate +sdaiED_NDEF = 210, // Entity definition not defined +sdaiTY_NDEF = 220, // Type not defined +sdaiTY_NVLD = 230, // Type invalid +sdaiRU_NEXS = 240, // Rule does not exist +sdaiFN_NAVL = 250, // Function not available +sdaiEI_NEXS = 260, // Entity instance does not exist +sdaiAT_NDEF = 270, // Attribute not defined +sdaiSI_DUP = 280, // Schema instance duplicate +sdaiVT_NVLD = 290, // Value type invalid +sdaiAG_NEXS = 300, // Aggregate does not exist +sdaiIR_NEXS = 310, // Iterator does not exist +sdaiAG_NSET = 320, // Aggregate is empty +sdaiIR_NSET = 330, // Current member is not defined +sdaiAD_NVLD = 340, // Aggregate definition invalid +sdaiVA_NSET = 350, // Value not set +sdaiIX_NVLD = 360, // Index invalid +sdaiED_NAVL = 370, // Entity definition is not available +sdaiSI_NEXS = 380, // Schema instance does not exist +sdaiEI_NAVL = 390, // Entity instance not available +sdaiSC_DUP = 400, // Scope duplicate +sdaiEI_NEXP = 410, // Entity instance not exported +sdaiMO_NINT = 420, // SDAI-model not interoperable +sdaiSY_ERR = 1000 // Underlying system error +}; +*/ +#include + +#include + +// define Object which I am calling sdaiObject for now - DAS +#include /****************************************************************************** ENUMERATION @@ -92,28 +297,93 @@ ENUMERATION * the value ENUM_NULL is used to represent NULL for all enumerated types *****************************************************************************/ -#include +#include /****************************************************************************** BOOLEAN and LOGICAL - Logical are implemented as an enumeration in Enumeration.h: - * it\'s possible values are sdaiFALSE, sdaiTRUE, sdaiUNKNOWN - * or F, T, U + Logical are implemented as an enumeration in sdaiEnum.h: - Boolean are implemented as an enumeration in Enumeration.h: - * it\'s possible values are sdaiFALSE, sdaiTRUE - * or F, T + Boolean are implemented as an enumeration in sdaiEnum.h: ******************************************************************************/ -typedef Logical s_Logical; -typedef Logical SdaiLogical; +// ***note*** this file needs classes from sdaiEnum.h +// define DAObjectID and classes PID, PID_DA, PID_SDAI, DAObject, DAObject_SDAI +#include -typedef Boolean s_Boolean; -typedef Boolean SdaiBoolean; -#include +#include +#include + +/****************************************************************************** +SELECT + + Selects are represented as subclasses of the SCLP23(Select) class in + sdaiSelect.h + +******************************************************************************/ +#include + +//typedef char * SCLP23_NAME(Entity_name); + +class SCLP23_NAME(Model_contents); +typedef SCLP23_NAME(Model_contents) * SCLP23_NAME(Model_contents_ptr); +typedef SCLP23_NAME(Model_contents_ptr) SCLP23_NAME(Model_contents_var); + +#include + +#include +#include +#include +#include + +#ifndef CC_NO_NESTED_CLASSES +#ifndef PART26 +}; // end struct P23_NAMESPACE +#endif // PART26 +#endif // CC_NO_NESTED_CLASSES + +#ifdef PART26 + +//#define SDAI_DEF_TIE_P26_Application_instance(x) DEF_TIE_P26_Application_instance(x) + +#define Application_instance_i SCLP23(Application_instance) +DEF_TIE_IDL_Application_instance(Application_instance_i) +//DEF_TIE_P26_Application_instance(Application_instance_i) +//DEF_TIE_IDL_Application_instance(SCLP23(Application_instance)) +#endif + + // ENTITY +extern SCLP23(Application_instance) NilSTEPentity; +#define ENTITY_NULL &NilSTEPentity +#define NULL_ENTITY &NilSTEPentity +#define S_ENTITY_NULL &NilSTEPentity + + +//#define STEPentity SCLP23_NAME(Application_instance); +typedef SCLP23(Application_instance) STEPentity; +typedef SCLP23(Application_instance)* STEPentity_ptr; +typedef STEPentity_ptr STEPentity_var; + +typedef SCLP23(Application_instance)* STEPentityPtr; +typedef SCLP23(Application_instance)* STEPentityH; + +extern SCLP23(Application_instance) * +ReadEntityRef(G4std::istream &in, ErrorDescriptor *err, char *tokenList, + InstMgr * instances, int addFileId); + +#define SdaiInteger SCLP23(Integer) +#define SdaiReal SCLP23(Real) + +#define STEPenumeration SCLP23(Enum) +#define SdaiSelect SCLP23(Select) +#define SdaiString SCLP23(String) +#define SdaiBinary SCLP23(Binary) + +#define S_INT_NULL SCLP23(INT_NULL) +#define S_REAL_NULL SCLP23(REAL_NULL) +#define S_NUMBER_NULL SCLP23(NUMBER_NULL) /****************************************************************************** AGGREGATE TYPES @@ -124,13 +394,35 @@ AGGREGATE TYPES ******************************************************************************/ -/****************************************************************************** -SELECT +#ifdef __OSTORE__ +SCLP23(BOOL) *create_BOOL(os_database *db); +#else +inline SCLP23(BOOL) *create_BOOL() { return new SCLP23(BOOL) ; } +#endif - Selects are represented as subclasses of the SdaiSelectH class in - STEPselect.h +#ifdef __OSTORE__ +SCLP23(LOGICAL) *create_LOGICAL(os_database *db); +#else +inline SCLP23(LOGICAL) *create_LOGICAL() { return new SCLP23(LOGICAL) ; } +#endif -******************************************************************************/ -#include +// below is outdated +typedef SCLP23(Select) * SdaiSelectH; + +//#define INT_NULL MAXLONG +// C from limits.h +//#define S_INT_NULL LONG_MAX + +//#define S_REAL_NULL 10 ** DBL_MAX_10_EXP +//#define FLT_MIN 1E-37 - port 29-Mar-1994 kcm +// C++ from values.h DAS PORT + +//#define REAL_NULL MINFLOAT +// C from float.h +//#define S_REAL_NULL FLT_MIN + +//#define NUMBER_NULL MINFLOAT +// C from float.h +//#define S_NUMBER_NULL FLT_MIN #endif diff --git a/source/geometry/solids/STEP/include/sdaiApplication_instance.h b/source/geometry/solids/STEP/include/sdaiApplication_instance.h new file mode 100644 index 0000000000..93a9023ea0 --- /dev/null +++ b/source/geometry/solids/STEP/include/sdaiApplication_instance.h @@ -0,0 +1,233 @@ +#ifndef STEPENTITY_H +#define STEPENTITY_H 1 + +//#ifdef PART26 +//#include +//#include +//#endif + +/* +* NIST STEP Core Class Library +* clstepcore/sdaiApplication_instance.h +* April 1997 +* K. C. Morris +* David Sauder + +* Development of this software was funded by the United States Government, +* and is not subject to copyright. +*/ + +/* $Id: sdaiApplication_instance.h,v 1.1 2000/01/21 13:42:43 gcosmo Exp $ */ + +//#ifdef __OSTORE__ +//#include // Required to access ObjectStore Class Library +//void Application_instance_access_hook_in(void *object, +// enum os_access_reason reason, void *user_data, +// void *start_range, void *end_range); +//#endif + +//#ifdef __O3DB__ +//#include +//#endif + +//#include +//#include + +//#include + +//#include + +//class STEPattributeList; +//class STEPattribute; + +//#include +//#include + +//class InstMgr; +//class EntityDescriptor; + +/////////////////////////////////////////////////////////////////////////////// +// SCLP23(Application_instance) used to be STEPentity + +//class SCLP23_NAME(Application_instance) /* : public SCLP23(DAObject_SDAI) */ +class SCLP23_NAME(Application_instance) : public SCLP23_NAME(DAObject_SDAI) +{ + private: + int _cur; // provides a built-in way of accessing attributes in order. + + public: + STEPattributeList attributes; + int STEPfile_id; + ErrorDescriptor _error; + SCLstring *p21Comment; + // registry additions + EntityDescriptor *eDesc; + + // head entity for multiple inheritance. If it is null then this + // SCLP23_NAME(Application_instance) is not part of a multiply inherited entity. If it + // points to a SCLP23_NAME(Application_instance) then this SCLP23_NAME(Application_instance) is part of a mi entity + // and head points at the root SCLP23_NAME(Application_instance) of the primary inheritance + // path (the one that is the root of the leaf entity). + SCLP23_NAME(Application_instance) *headMiEntity; + // these form a chain of other entity parents for multiple inheritance + SCLP23_NAME(Application_instance) *nextMiEntity; + + protected: + int _complex; + + public: + SCLP23_NAME(Application_instance) (); + SCLP23_NAME(Application_instance) (int fileid, int complex = 0); + virtual ~SCLP23_NAME(Application_instance)(); + + int IsComplex() const { return _complex; } + +#ifdef PART26 +// virtual P26::Application_instance_ptr create_TIE(); + virtual IDL_Application_instance_ptr create_TIE(); +#endif + +#ifndef PART26 + void StepFileId (int fid) { STEPfile_id = fid; } + int StepFileId() const { return STEPfile_id; } +#else + void StepFileId (CORBA::Long fid, + CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) + throw (CORBA::SystemException) + { STEPfile_id = fid; } + CORBA::Long StepFileId (CORBA::Environment &IT_env= + CORBA::IT_chooseDefaultEnv ()) + throw (CORBA::SystemException) + { return STEPfile_id; } + +// The IDL for the following 2 functions +// string GetPersistentLabel() raises(SDAIException); +// string GetDescription() raises(SDAIException); + +// virtual char * GetPersistentLabel (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException, SCLP26(SDAIException)) + virtual char * GetPersistentLabel (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException, SDAIException) + { return 0; } + +// virtual char * GetDescription (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException, SCLP26(SDAIException)) + virtual char * GetDescription (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException, SDAIException) + { return 0; } + +#endif + + void AddP21Comment(SCLstring &s, int replace = 1); + void AddP21Comment(const char *s, int replace = 1); + void DeleteP21Comment() { delete p21Comment; p21Comment = 0; } + + // guaranteed a string (may be null string) + const char *P21Comment() + { return ( p21Comment ? p21Comment->chars() : "" ); } + // returns null if no comment exists + const char *P21CommentRep() + { return ( p21Comment ? p21Comment->rep() : 0 ); } + + const char *EntityName( const char *schnm =NULL) const; + + virtual const EntityDescriptor * IsA(const EntityDescriptor *) const; + + virtual Severity ValidLevel(ErrorDescriptor *error, InstMgr *im, + int clearError = 1); + ErrorDescriptor &Error() { return _error; } + // clears entity's error and optionally all attr's errors + void ClearError(int clearAttrs = 1); + // clears all attr's errors + void ClearAttrError(); +// void EnforceOptionality(int on = 1); + + virtual SCLP23_NAME(Application_instance) *Replicate(); + +// ACCESS attributes in order. + int AttributeCount(); + STEPattribute * NextAttribute(); + void ResetAttributes() { _cur =0; } + +// READ + virtual Severity STEPread(int id, int addFileId, + class InstMgr * instance_set, + G4std::istream& in =G4cin, const char *currSch =NULL, + int useTechCor =1); + virtual void STEPread_error(char c, int index, G4std::istream& in); + +// WRITE + virtual void STEPwrite(G4std::ostream& out =G4cout, const char *currSch =NULL, + int writeComments = 1); + virtual const char * STEPwrite(SCLstring &buf, const char *currSch =NULL); + + void WriteValuePairs(G4std::ostream& out, const char *currSch =NULL, + int writeComments = 1, int mixedCase = 1); + + void STEPwrite_reference (G4std::ostream& out =G4cout); + const char * STEPwrite_reference (SCLstring &buf); + + void beginSTEPwrite(G4std::ostream& out =G4cout); // writes out the SCOPE section + void endSTEPwrite(G4std::ostream& out =G4cout); + +// MULTIPLE INHERITANCE + int MultipleInheritance() { return !(headMiEntity == 0); } + + void HeadEntity(SCLP23_NAME(Application_instance) *se) { headMiEntity = se; } + SCLP23_NAME(Application_instance) * HeadEntity() { return headMiEntity; } + + SCLP23_NAME(Application_instance) *GetNextMiEntity() { return nextMiEntity; } + SCLP23_NAME(Application_instance) *GetMiEntity(char *EntityName); + void AppendMultInstance(SCLP23_NAME(Application_instance) *se); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + + protected: + STEPattribute * GetSTEPattribute (const char *); + STEPattribute * MakeDerived (const char *); + STEPattribute * MakeRedefined (STEPattribute *redefiningAttr, + const char * nm); + + virtual void CopyAs (SCLP23_NAME(Application_instance) *); + void PrependEntityErrMsg(); + public: + // these functions are going to go away in the future. + int SetFileId(int fid) { return STEPfile_id = fid; } + int GetFileId() const { return STEPfile_id; } + int FileId (int fid) { return STEPfile_id = fid; } + int FileId() const { return STEPfile_id; } + +} +; + +// current style of CORBA handles for Part 23 +typedef SCLP23_NAME(Application_instance)* SCLP23_NAME(Application_instance_ptr); +typedef SCLP23_NAME(Application_instance_ptr) SCLP23_NAME(Application_instance_var); + +// Everything below has been moved to sdai.h +/* +//#ifdef PART26 +//DEF_TIE_P26_IDL_Application_instance(SCLP23_NAME(Application_instance)) +//#endif +*/ +/////////////////////////////////////////////////////////////////////////////// + +//extern SCLP23_NAME(Application_instance) NilSTEPentity; +//#define ENTITY_NULL &NilSTEPentity +//#define NULL_ENTITY &NilSTEPentity + +//typedef SCLP23_NAME(Application_instance)* STEPentity_ptr; +//typedef STEPentity_ptr STEPentity_var; + +//typedef SCLP23_NAME(Application_instance)* STEPentityPtr; +//typedef SCLP23_NAME(Application_instance)* STEPentityH; + +//extern SCLP23_NAME(Application_instance) * +//ReadEntityRef(G4std::istream &in, ErrorDescriptor *err, char *tokenList, +// InstMgr * instances, int addFileId); + +//typedef SCLP23_NAME(Application_instance) * (* Creator) () const; +//typedef SCLP23_NAME(Application_instance) * (* Creator) () ; + +#endif diff --git a/source/geometry/solids/STEP/include/dir.h b/source/geometry/solids/STEP/include/sdaiApplication_instance_set.h similarity index 50% rename from source/geometry/solids/STEP/include/dir.h rename to source/geometry/solids/STEP/include/sdaiApplication_instance_set.h index 665e295fac..905261e92e 100644 --- a/source/geometry/solids/STEP/include/dir.h +++ b/source/geometry/solids/STEP/include/sdaiApplication_instance_set.h @@ -1,20 +1,5 @@ - - -// - - - -// -// $Id: dir.h,v 1.2 1999/05/21 20:20:38 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - -#ifdef __O3DB__ -#include -#endif - /* - * Copyright (c) 1989 Stanford University + * Copyright (c) 1990, 1991 Stanford University * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided @@ -36,17 +21,44 @@ */ /* - * C++ interface to Unix file system dir structure + * UArray - dynamic array object. + */ +/* + * UArray - dynamic array object. */ -#ifndef sys_dir_h -#define sys_dir_h 1 +#ifndef SDAI_APPLICATION_INSTANCE_SET_h +#define SDAI_APPLICATION_INSTANCE_SET_h -#ifdef WIN32 -# include -#else -# include -# include -#endif /* WIN32 */ +//#include + +class SCLP23_NAME(Application_instance__set); +typedef SCLP23_NAME(Application_instance__set) * + SCLP23_NAME(Application_instance__set_ptr); +typedef SCLP23_NAME(Application_instance__set_ptr) + SCLP23_NAME(Application_instance__set_var); + +class SCLP23_NAME(Application_instance__set) +{ +public: + SCLP23_NAME(Application_instance__set)(int = 16); + ~SCLP23_NAME(Application_instance__set)(); + + SCLP23_NAME(Application_instance_ptr)& operator[](int index); + void Insert(SCLP23_NAME(Application_instance_ptr), int index); + void Append(SCLP23_NAME(Application_instance_ptr)); + void Remove(int index); + void Remove(SCLP23_NAME(Application_instance_ptr)); + int Index(SCLP23_NAME(Application_instance_ptr)); + + int Count(); + void Clear(); +private: + void Check(int index); +private: + SCLP23_NAME(Application_instance_ptr)* _buf; + int _bufsize; + int _count; +}; #endif diff --git a/source/geometry/solids/STEP/include/sdaiDaObject.h b/source/geometry/solids/STEP/include/sdaiDaObject.h new file mode 100644 index 0000000000..fbff9e2249 --- /dev/null +++ b/source/geometry/solids/STEP/include/sdaiDaObject.h @@ -0,0 +1,662 @@ +#ifndef SDAIDAOBJECT_H +#define SDAIDAOBJECT_H 1 + +/* +#include + +#ifdef PART26 +#include +#include +#else +typedef char* DAObjectID; +#endif + +#include +*/ + +#ifndef PART26 +typedef char* SCLP23_NAME(DAObjectID); +#endif + + // interface PID (ISO/DIS 10303-23:1996(E) 5.3.10.1) + // Also, CORBA POS specification, Section 5.4 + // + // The PID class maintains the persistent object identifier for every + // persistent object, objects of class DAObject, and objects of any class + // derived directly or indirectly from DAObject. + // + // POS: The PID identifies one or more locations within a Datastore that + // represent the persistent data of an object and generates a string + // identifier for that data. An object must have a PID in order to store + // its data persistently. + // +/* + The EXPRESS ENTITY application_instance from the SDAI_data_type_schema from + clause 10 in ISO 10303-22, shall be mapped to the C++ class + Application_instance. The class Application_instance shall be a subtype of + the C++ class DAObject and of the C++ class Entity_instance. + The class DAObject is supported by the classes PID, PID_SDAI and the type + SCLP23(DAObjectID) as follows: + */ + +class SCLP23_NAME(PID) : public SCLP23_NAME(sdaiObject) +{ + public: + +// These are in the IDL generated code for Part 26. I will have to think about +// why they should be here (for Part 23). DAS +// static PID_ptr _duplicate(PID_ptr); +// static PID_ptr _narrow(SCLP23_NAME(sdaiObject_ptr)); +// static PID_ptr _nil(); + + SCLP23_NAME(String) _datastore_type ; + SCLP23_NAME(String) _pidstring ; + + // constructor/destructor + SCLP23_NAME(PID)(); + virtual ~SCLP23_NAME(PID)(); + +#ifndef PART26 + /* + The Datestore_type attribute shall identify the type of the underlying + datastore. + */ + char* Datastore_type() const { return (char*) _datastore_type.chars(); } + void Datastore_type(char *x) { _datastore_type = x; } + + /* + This function shall return a string version of the receiver. + */ + char* get_PIDString(); +#else + virtual void datastore_type (const char * x, CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException) + { _datastore_type = x; } + + virtual char * datastore_type (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException) + { return CORBA::string_dupl(_datastore_type); } + + virtual char * get_PIDString (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException) + { return CORBA::string_dupl(_pidstring); } +#endif + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif + +}; + +#ifdef PART26 +//DEF_TIE_PID( SCLP23_NAME(PID) ) +#endif + +typedef SCLP23_NAME(PID)* SCLP23_NAME(PID_ptr); +typedef SCLP23_NAME(PID_ptr) SCLP23_NAME(PID_var); + + + // interface PID_DA (ISO/DIS 10303-23:1996(E) 5.3.10.3) + // Also, CORBA POS specification, Direct Access Protocol, Section 5.10.1 + // + // The Direct Access Protocol supports direct access to persistent data + // through typed attributes organized in data objects that are defined + // in a Data Definition Language (DDL). An object using this protocol + // whould represent its persistent data as one or more interconnected + // data objects, For uniformity, the persistent data of an object is + // described as a single data object; however, that data object might be + // the root of a graph of data objects interconnected by stored data + // object references. If an object uses multiple data objects, the + // object traverses the graph by following stored data object references. + // + // The PID_DA class maintains the persistent object identifier for an + // application DAObject. + // + // POS: The Persistent Identifiers (PIDs) used by the PDS_DA contain + // an object identifier that is local to the particular PDS. This value + // may be accessed through this extension to the CosPersistencePID + // interface. + // + +class SCLP23_NAME(PID_DA): public SCLP23_NAME(PID) +{ + public: + + SCLP23_NAME(String) _oid ; + // oid (ISO/DIS 10303-23:1996(E) 5.3.10.3) + // + // This attribute shall set and return the string representation of the + // persistent identifier, local to the Model_contents, of the DAObject + // referred to by this object. + // + // POS: This returns the data object identifier used by this PDS for + // the data object specified by the PID. The SCLP23(DAObjectID) type is + // defined as an unbounded sequence of bytes that may be + // vendor-dependent. + // + + // constructor/destructor + SCLP23_NAME(PID_DA)(); + virtual ~SCLP23_NAME(PID_DA)(); + +#ifndef PART26 + virtual void oid (const SCLP23_NAME(DAObjectID) x) { _oid = x; } + virtual SCLP23_NAME(DAObjectID) oid () const + { return (char*) _oid.chars(); } +#else +// virtual void oid (const SCLP26(DAObjectID) x, CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException) + virtual void oid (const DAObjectID x, CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException) + { _oid = x; } +// virtual SCLP26(DAObjectID) oid (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException) + virtual DAObjectID oid (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException) + { return CORBA::string_dupl(_oid); } +#endif + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif + +}; + +#ifdef PART26 +//DEF_TIE_PID_DA( SCLP23(PID_DA) ) +#endif + +typedef SCLP23_NAME(PID_DA)* SCLP23_NAME(PID_DA_ptr); +typedef SCLP23_NAME(PID_DA_ptr) SCLP23_NAME(PID_DA_var); + + // interface PID_SDAI (ISO/DIS 10303-23:1996(E) 5.3.10.2) + // + // The PID_SDAI class maintains the persistent object identifier for + // a Model_contents object. + // +class SCLP23_NAME(PID_SDAI) : public SCLP23_NAME(PID) +{ + public: + SCLP23_NAME(String) _modelid ; + +// static PID_SDAI_ptr _duplicate(PID_SDAI_ptr); +// static PID_SDAI_ptr _narrow(SCLP23_NAME(sdaiObject_ptr)); +// static PID_SDAI_ptr _nil(); + + // constructor/destructor + SCLP23_NAME(PID_SDAI)(); + virtual ~SCLP23_NAME(PID_SDAI)(); + + // Modelid (ISO/DIS 10303-23:1996(E) 5.3.10.3) + // + // This attribute shall set and return the string representation of + // the persistent identifier of the cluster of data for the + // Model_contents referred to by this PID. + // +#ifndef PART26 + virtual void Modelid (const char * x) { _modelid = x; } + virtual char * Modelid () const { return (char*) _modelid.chars(); } +#else + virtual void Modelid (const char * x, CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException) + { _modelid = x; } + + virtual char * Modelid (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException) + { return CORBA::string_dupl(_modelid); } +#endif + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif + +}; + +#ifdef PART26 +//DEF_TIE_PID_SDAI( SCLP23(PID_SDAI) ) +#endif + +typedef SCLP23_NAME(PID_SDAI)* SCLP23_NAME(PID_SDAI_ptr); +typedef SCLP23_NAME(PID_SDAI_ptr) SCLP23_NAME(PID_SDAI_var); + + // interface DAObject (ISO/DIS 10303-23:1996(E) 5.3.10.5) + // Also, CORBA POS Section 5.10.2, Direct Access Protocol. + // + // From POS: The DAObject interface provides operations that many data + // object clients need. A Datastore implementation may provide support + // for these operations automatically for its data objects. A data object + // is not required to support this interface. A client can obtain access + // to these operations by narrowing a data object reference to the + // DAObject interface. + // + + // predefine these _ptr since they are used inside this class +class SCLP23_NAME(DAObject); +typedef SCLP23_NAME(DAObject)* SCLP23_NAME(DAObject_ptr); +typedef SCLP23_NAME(DAObject_ptr) SCLP23_NAME(DAObject_var); + +class SCLP23_NAME(DAObject) : public SCLP23_NAME(sdaiObject) +//class DAObject : public SCLP23_NAME(sdaiObject) +{ + public: + + SCLP23_NAME(String) _dado_oid; +// static DAObject_ptr _duplicate(DAObject_ptr); +// static DAObject_ptr _narrow(SCLP23_NAME(sdaiObject_ptr)); +// static DAObject_ptr _nil(); + + // dado_same (ISO/DIS 10303-23:1996(E) 5.3.10.5) + // + // Returns TRUE if obj points to the same object as self + // + // POS specification description: This returns true if the target + // data object and the parameter data object are the same data object. + // This operation can be used to test data object references for + // identity. + // + + // constructor/destructor + SCLP23_NAME(DAObject)(); + virtual ~SCLP23_NAME(DAObject)(); + +#ifdef PART26 +// virtual SCLP26(Application_instance_ptr) create_TIE(); + virtual IDL_Application_instance_ptr create_TIE(); +#endif + +#ifndef PART26 + SCLBOOL_H(Bool) dado_same(SCLP23_NAME(DAObject_ptr) obj) + { + // this will make the compiler happy that we used obj + strcmp(obj->dado_oid(),dado_oid()); + return SCLBOOL_H(BUnset); + } +#else + virtual SCLBOOL_H(Bool) dado_same (SCLP23_NAME(DAObject_ptr) obj, CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException) { return SCLBOOL_H(BUnset); } +#endif + + // Get persistent label (ISO/DIS 10303-22:1996(E) 10.11.6) + // + // This operation returns a persistent label for the specified + // application instance. The label shall be unique within the + // repository containing the SDAI-model containing the application + // instance. Any subsequent request for a persistent label for the + // same application instance shall return the same persistent label + // in the current or nay subsequent SDAI session. + // + // Possible Error indicators: + // + // sdaiTR_NEXS The transaction has not been started + // sdaiTR_NAVL The transaction is currently not available + // sdaiTR_EAB The transaction ended abnormally + // sdaiRP_NOPN The repository is not open + // sdaiEI_NEXS The entity instance does not exist + // sdaiFN_NAVL This function is not supported by the implementation + // sdaiSY_ERR An underlying system error occurred + // + // POS specification description: This returns the object identifier + // for the data object. The scope of data object identifiers is + // implementation-specific, but is not guaranteed to be global. + // + /* jg == The return value of this function in Part 23 is PID_DA which + seems wrong. We follow the CORBAservices specification here. + (Persistent Object Service Specification, Section 5.10). Also + note that the return value as described in the text above + should be a string type. + */ +#ifndef PART26 + SCLP23_NAME(DAObjectID) dado_oid() + { return (char*) _dado_oid.chars(); } +#else +// virtual SCLP26(DAObjectID) dado_oid (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException) + virtual DAObjectID dado_oid (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException) + { return CORBA::string_dupl(_dado_oid); } +#endif + + // dado_pid + // + // POS specification description: This returns a PID_DA for the + // data object. + // + /* jg == This function is not included in Part 23 and 26. However, it is + part of interface DAObject in the specification of the + Persistent Object Service. + */ +#ifndef PART26 + SCLP23_NAME(PID_DA_ptr) dado_pid() + { return 0; } +#else + virtual SCLP23_NAME(PID_DA_ptr) dado_pid (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException) + { return 0; } +#endif + + // dado_remove (ISO/DIS 10303-23:1996(E) 5.3.10.5) + // + // This function shall delete the object from persistent store and + // releases its resources. The function need not delete the aggregate- + // valued attributes of an object. + // + // POS specification description: This deletes the object from the + // persistent store and deletes the in-memory data object. + // +#ifndef PART26 + void dado_remove() + { } +#else + virtual void dado_remove (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException) + { } +#endif + + // dado_free (ISO/DIS 10303-23:1996(E) 5.3.10.5) + // + // This function shall inform the implementation that it is free + // to move the object back to the persistent store. + // + // POS specification description: This informs the PDS (Persistent + // Data Service) that the data object is not required for the time + // being, and the PDS may move it back to persistent store. The data + // object must be preserved and must be brought back the next time it is + // referenced. This operation is only a hint and is provided to improve + // performance and resource usage. + // +#ifndef PART26 + void dado_free() + { } +#else + virtual void dado_free (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException) + { } +#endif + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +}; + +/* + 5.3.10.1 DAObject_SDAI +*/ + +class SCLP23_NAME(DAObject_SDAI) : public SCLP23_NAME(DAObject) { + + public: + SCLP23_NAME(DAObject_SDAI)(); +// SCLP23_NAME(DAObject_SDAI)(const SCLP23_NAME(DAObject_SDAI)&); + + virtual ~SCLP23_NAME(DAObject_SDAI)(); + +#ifdef PART26 +// virtual SCLP26(Application_instance_ptr) create_TIE(); + virtual IDL_Application_instance_ptr create_TIE(); +#endif + + /* + 5.3.10.1.1 Find entity instance SDAI-model + */ + +// Model_ptr Owning_model() const; + + /* + The Owning_model function shall implement the SDAI operation, Find + entity instance SDAI-model. + + The following specifies the coorespondence between each SDAI + input/output and its equivalent specified in this Part. + + SDAI C++ + ------ ------- + Object receiver + Model return value + + 5.3.10.1.2 Find entity instance users + */ + +// Object__list_var FindObjectUsers(const +// Schema_instance__list_var& aggr) const; + + /* + The FindObjectUsers function shall implement the SDAI operation, + Find entity instance users. + + The following specifies the coorespondence between each SDAI + input/output and its equivalent specified in this Part. + + SDAI C++ + -------- -------- + Instance receiver + Domain aggr + Result return value + + 5.3.10.1.3 Is same + */ + + SCLLOG_H(Logical) IsSame(const SCLP23_NAME(sdaiObject_ptr)& otherEntity) const; + + /* + Function: + The IsSame function shall determine whether the parameter otherEntity + refers to the same instance as the receiver. This function shall + implement the behaviour of the EXPRESS operator (:=:). + + Output: + This function shall return TRUE if the two instances are identical. + This function shall return FALSE if the two instances are not identical. + This function shall return UNKNOWN if either instance is unset. + + Possible error indicators: + sdaiMX_NDEF // SDAI-model access not defined + sdaiEI_NEXS // Entity instance does not exist + sdaiTY_NDEF // Type not defined + sdaiSY_ERR // Underlying system error + + Origin: Convenience function + + 5.3.10.1.4 Get attribute + */ + +#ifdef SDAI_CPP_LATE_BINDING + Any_var GetAttr(const Attribute_ptr& attDef); + Any_var GetAttr(const char* attName); +#endif + + /* + The GetAttr functions shall implement the SDAI operation, Get attribute. + + The following specifies the coorespondence between each SDAI + input/output and its equivalent specified in this Part. + + SDAI C++ + ------ --------- + Object receiver + Attribute attDef, attName + Value return value + + 5.3.10.1.5 Get instance type + */ + +#ifdef SDAI_CPP_LATE_BINDING + const Entity_ptr GetInstanceType() const; +#endif + + /* + Function: + + The GetInstanceType functions shall implement the SDAI operation, + Get instance type. + + The following specifies the coorespondence between each SDAI + input/output and its equivalent specified in this Part. + + SDAI C++ + ------ -------- + Object receiver + Type return value + + 5.3.10.1.6 Is instance of + */ + + SCLBOOL_H(Bool) IsInstanceOf(const char* typeName) const; +#ifdef SDAI_CPP_LATE_BINDING + SCLBOOL_H(Bool) IsInstanceOf(const Entity_ptr& otherEntity) const; +#endif + + /* + Function: + The IsInstanceOf functions shall implement the SDAI operation Is + instance of. + + The following specifies the coorespondence between each SDAI + input/output and its equivalent specified in this Part. + + SDAI C++ + ------ -------- + Object receiver + Type typeName, otherEntity + Result return value + + 5.3.10.1.7 Is kind of + */ + + SCLBOOL_H(Bool) IsKindOf(const char* typeName) const; +#ifdef SDAI_CPP_LATE_BINDING + SCLBOOL_H(Bool) IsKindOf(const Entity_ptr& theType) const; +#endif + + /* + The IsKindOf functions shall implement the SDAI operation, Is kind of. + + The following specifies the coorespondence between each SDAI + input/output and its equivalent specified in this Part. + + SDAI C++ + ------ -------- + Object receiver + Type typeName, theType + Result return value + + 5.3.10.1.8 Is SDAI kind of + */ + + SCLBOOL_H(Bool) IsSDAIKindOf(const char* typeName) const; + +#ifdef SDAI_CPP_LATE_BINDING + SCLBOOL_H(Bool) IsSDAIKindOf(const Entity_ptr& theType) const; +#endif + + /* + The IsSDAIKindOf functions shall implement the SDAI operation, + Is SDAI Kind Of. + + The following specifies the coorespondence between each SDAI + input/output and its equivalent specified in this Part. + + SDAI C++ + ------ -------- + Object receiver + Type typeName, theType + Result return value + + 5.3.10.1.9 Test attribute + */ + +#ifdef SDAI_CPP_LATE_BINDING + SCLBOOL_H(Bool) TestAttr(const Attribute_ptr& attDef); + SCLBOOL_H(Bool) TestAttr(const char* attName) const; +#endif + + /* + The TestAttr functions shall implement the SDAI operation, + Test attribute. + + The following specifies the coorespondence between each SDAI + input/output and its equivalent specified in this Part. + + SDAI C++ + ------ --------- + Object receiver + Attribute attDef, attName + Result return value + + 5.3.10.1.10 Get instance type name + */ + +#ifndef SDAI_CPP_LATE_BINDING + char * GetInstanceTypeName() const; +#endif + /* + Function: + The GetInstanceType function shall retrieve the name of the type of + the receiver. + + Output: + This function shall return a String which contains the name of the + type of the receiver. The returned name shall be the name as it + appears in the Dictionary Model. + + Possible error indicators: + sdaiMX_NDEF // SDAI-model access not defined + sdaiEI_NEXS // Entity instance does not exist + sdaiSY_ERR // Underlying system error + + Origin: Convenience function + */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +}; + +typedef SCLP23_NAME(DAObject_SDAI)* SCLP23_NAME(DAObject_SDAI_ptr); +typedef SCLP23_NAME(DAObject_SDAI_ptr) SCLP23_NAME(DAObject_SDAI_var); + +class SCLP23_NAME(DAObject__set) { +public: +#ifdef __OSTORE__ + os_Collection &_rep; + os_Cursor _cursor; + SCLBOOL_H(Bool) _first; +#endif + + SCLP23_NAME(DAObject__set)(int = 16); + ~SCLP23_NAME(DAObject__set)(); + + SCLP23_NAME(DAObject_ptr) retrieve(int index); + int is_empty(); + +#ifndef __OSTORE__ + SCLP23_NAME(DAObject_ptr)& operator[](int index); +#endif + + void Insert(SCLP23_NAME(DAObject_ptr), int index); + void Append(SCLP23_NAME(DAObject_ptr)); + void Remove(int index); +#ifndef __OSTORE__ + int Index(SCLP23_NAME(DAObject_ptr)); + + void Clear(); +#endif + int Count(); + +#ifdef __OSTORE__ +// cursor stuff + SCLP23_NAME(DAObject_ptr) first(); + SCLP23_NAME(DAObject_ptr) next(); + SCLP23_NAME(Integer) more(); +#endif + +private: + void Check(int index); +private: + SCLP23_NAME(DAObject_ptr)* _buf; + int _bufsize; + int _count; + + public: + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif +}; + +typedef SCLP23_NAME(DAObject__set)* SCLP23_NAME(DAObject__set_ptr); +typedef SCLP23_NAME(DAObject__set_ptr) SCLP23_NAME(DAObject__set_var); + +#endif diff --git a/source/geometry/solids/STEP/include/sdaiEntity_extent.h b/source/geometry/solids/STEP/include/sdaiEntity_extent.h new file mode 100644 index 0000000000..0ff31a2a36 --- /dev/null +++ b/source/geometry/solids/STEP/include/sdaiEntity_extent.h @@ -0,0 +1,127 @@ +#ifndef ENTITYEXTENT_H +#define ENTITYEXTENT_H 1 + +/* +//#include +//#include +//#include +//#include +*/ + +/* + 7.3.3 Entity extent +*/ + +class SCLP23_NAME(Entity_extent); +typedef SCLP23_NAME(Entity_extent) * SCLP23_NAME(Entity_extent_ptr); +typedef SCLP23_NAME(Entity_extent_ptr) SCLP23_NAME(Entity_extent_var); + +class SCLP23_NAME(Entity_extent) : public SCLP23_NAME(Session_instance) { + +friend class SCLP23_NAME(Model_contents); + /* + NOTE - The ModelContent class is a friend so that ModelContent may add + instances to Entity_extent instances. + */ + + public: //for now +// protected: + Entity_ptr _definition ; + SCLP23_NAME(Entity_name) _definition_name ; + SCLP23_NAME(DAObject__set) _instances ; // of Application_instance +// Entity_instance__set _instances ; // of entity_instance +// EntityAggregate _instances ; // of entity_instance +// Express in part 22 - INVERSE owned_by : sdai_model_contents FOR folders; + SCLP23_NAME(Model_contents__list) _owned_by ; // ADDED in Part 22 + +// private: + SCLP23_NAME(Entity_extent)(); +// SCLP23_NAME(Entity_extent)(const SCLP23_NAME(Entity_extent)& ee); + ~SCLP23_NAME(Entity_extent)(); // not in part 23 + + public: + + SCLP23_NAME(Entity_name) definition_name_() const + { return _definition_name; } + + const Entity_ptr definition_() const; +#ifdef SDAI_CPP_LATE_BINDING +// const Entity_ptr definition_() const; +#endif + + SCLP23_NAME(DAObject__set_var) instances_() { return &_instances; } + SCLP23_NAME(DAObject__set_var) instances_() const + { + // Removed meaningless 'const' qualifier on returned casted type - GC + return (SCLP23_NAME(DAObject__set_var))&_instances; + } + +// need to implement Model_contents__list + const SCLP23_NAME(Model_contents__list_var) owned_by_() const; + +// static SCLP23_NAME(Entity_extent_ptr) +// _duplicate(SCLP23_NAME(Entity_extent_ptr) eep); +// static SCLP23_NAME(Entity_extent_ptr) _narrow(Object_ptr op); +// static SCLP23_NAME(Entity_extent_ptr) _nil(); + +// private: + void definition_(const Entity_ptr& ep); +#ifdef SDAI_CPP_LATE_BINDING +// void definition_(const Entity_ptr& ep); +#endif + void definition_name_(const SCLP23_NAME(Entity_name)& ep); + void owned_by_(SCLP23_NAME(Model_contents__list_var)& mcp); + + /* + 7.3.3.1 SDAI operation declarations + + 7.3.3.1.1 AddInstance + */ + + // this is no longer in Part 23 + void AddInstance(const SCLP23_NAME(DAObject_ptr)& appInst); + + /* + Function: + + The AddInstance function shall add the entity instance entity + handle to the instances set of the receiver. + + Possible error indicators: + sdaiSS_NOPN // Session not open + sdaiRP_NOPN // Repository not open + sdaiMO_NEXS // SDAI-model does not exist + sdaiMX_NRW // SDAI-model access not read-write + sdaiSY_ERR // Underlying system error + + Origin: Convenience function + */ + + // this is no longer in Part 23 +#ifndef __OSTORE__ + void RemoveInstance(const SCLP23_NAME(DAObject_ptr)& appInst); +#endif + + /* + 7.3.3.1.2 RemoveInstance + Function: + The RemoveInstance function shall remove the entity instance entity + handle from the instances set of the receiver. + + Possible error indicators: + sdaiSS_NOPN // Session not open + sdaiRP_NOPN // Repository not open + sdaiMO_NEXS // SDAI-model does not exist + sdaiMX_NRW // SDAI-model access not read-write + sdaiSY_ERR // Underlying system error + + Origin: Convenience function + */ + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif + +}; + +#endif diff --git a/source/geometry/solids/STEP/include/sdaiEntity_extent_set.h b/source/geometry/solids/STEP/include/sdaiEntity_extent_set.h new file mode 100644 index 0000000000..0f2cd2a4b5 --- /dev/null +++ b/source/geometry/solids/STEP/include/sdaiEntity_extent_set.h @@ -0,0 +1,111 @@ +/* + * Copyright (c) 1990, 1991 Stanford University + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided + * that the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Stanford not be used in advertising or + * publicity pertaining to distribution of the software without specific, + * written prior permission. Stanford makes no representations about + * the suitability of this software for any purpose. It is provided "as is" + * without express or implied warranty. + * + * STANFORD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. + * IN NO EVENT SHALL STANFORD BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION + * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* + * UArray - dynamic array object. + */ +/* + * UArray - dynamic array object. + */ + +#ifndef SDAIENTITY_EXTENT_SET_h +#define SDAIENTITY_EXTENT_SET_h + +/* +//#include +//#include +*/ + +class SCLP23_NAME(Entity_extent__set) { +public: +#ifdef __OSTORE__ + os_Collection &_rep; + os_Cursor _cursor; + SCLBOOL_H(Bool) _first; +#endif + + SCLP23_NAME(Entity_extent__set)(int = 16); + ~SCLP23_NAME(Entity_extent__set)(); + + SCLP23_NAME(Entity_extent_ptr) retrieve(int index); + int is_empty(); + +#ifndef __OSTORE__ + SCLP23_NAME(Entity_extent_ptr)& operator[](int index); +#endif + void Insert(SCLP23_NAME(Entity_extent_ptr), int index); + void Append(SCLP23_NAME(Entity_extent_ptr)); + void Remove(int index); +#ifndef __OSTORE__ + int Index(SCLP23_NAME(Entity_extent_ptr)); + + void Clear(); +#endif + int Count(); + +#ifdef __OSTORE__ +// cursor stuff + SCLP23_NAME(Entity_extent_ptr) first(); + SCLP23_NAME(Entity_extent_ptr) next(); + SCLP23_NAME(Integer) more(); +#endif + +private: + void Check(int index); +private: + SCLP23_NAME(Entity_extent_ptr)* _buf; + int _bufsize; + int _count; + + public: + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif +}; + +typedef SCLP23_NAME(Entity_extent__set)* SCLP23_NAME(Entity_extent__set_ptr); +typedef SCLP23_NAME(Entity_extent__set_ptr) SCLP23_NAME(Entity_extent__set_var); + +/* +class Entity_extent__set { +public: + Entity_extent__set(int = 16); + ~Entity_extent__set(); + + Entity_extent_ptr& operator[](int index); + void Insert(Entity_extent_ptr, int index); + void Append(Entity_extent_ptr); + void Remove(int index); + int Index(Entity_extent_ptr); + + int Count(); + void Clear(); +private: + void Check(int index); +private: + Entity_extent_ptr* _buf; + int _bufsize; + int _count; +}; +*/ +#endif diff --git a/source/geometry/solids/STEP/include/sdaiEnum.h b/source/geometry/solids/STEP/include/sdaiEnum.h new file mode 100644 index 0000000000..06a971bc8c --- /dev/null +++ b/source/geometry/solids/STEP/include/sdaiEnum.h @@ -0,0 +1,251 @@ +#ifndef P23ENUM_H +#define P23ENUM_H + +/* +* NIST STEP Core Class Library +* clstepcore/Enum.h +* April 1997 +* K. C. Morris +* David Sauder + +* Development of this software was funded by the United States Government, +* and is not subject to copyright. +*/ + +/* $Id: sdaiEnum.h,v 1.1 2000/01/21 13:42:44 gcosmo Exp $ */ +#if 0 + +#ifdef PART26 +// Change the name of the include file defining the defs for Bool and Logical +// inside the file corbaIncludes.h +#include +#endif + +#ifdef __OSTORE__ +#include // Required to access ObjectStore Class Library +#endif + +#ifdef __O3DB__ +#include +#endif + +#include + +#include +#include + +#endif + +//#define ENUM_NULL -1 + + +//class STEPenumeration { +class SCLP23_NAME(Enum) { + friend G4std::ostream &operator<< ( G4std::ostream&, const SCLP23_NAME(Enum)& ); + protected: + int v; // integer value of enumeration instance + // mapped to a symbolic value in the elements + + virtual int set_value (const char * n); + virtual int set_value (const int n); + SCLP23_NAME(Enum)(); + virtual ~SCLP23_NAME(Enum)(); + + public: + + void PrintContents(G4std::ostream &out = G4cout) const + { DebugDisplay(out); } + + virtual int no_elements () const =0; + virtual const char * Name () const =0; + const char * get_value_at (int n) const { return element_at (n); } + virtual const char * element_at (int n) const =0; + + Severity EnumValidLevel(const char *value, ErrorDescriptor *err, + int optional, char *tokenList, + int needDelims = 0, int clearError = 1); + + Severity EnumValidLevel(G4std::istream &in, ErrorDescriptor *err, + int optional, char *tokenList, + int needDelims = 0, int clearError = 1); + + const int asInt () const { return v; } + + const char * asStr (SCLstring &s) const; + void STEPwrite (G4std::ostream& out = G4cout) const; + const char * STEPwrite (SCLstring &s) const; + + Severity StrToVal (const char * s, ErrorDescriptor *err, int optional = 1); + Severity STEPread(G4std::istream& in, ErrorDescriptor *err, int optional = 1); + Severity STEPread(const char *s, ErrorDescriptor *err, int optional = 1); + + virtual int put (int val); + virtual int put (const char * n); + int is_null () const + { return ! (exists()); } + void set_null() { nullify(); } + SCLP23_NAME(Enum)& operator= (const int); + SCLP23_NAME(Enum)& operator= (const SCLP23_NAME(Enum)&); + +// operator ULong() const { return v; } // return the integer equivalent + + virtual int exists() const; // return 0 if unset otherwise return 1 + virtual void nullify(); // change the receiver to an unset status + // unset is generated to be 1 greater than last element + void DebugDisplay (G4std::ostream& out =G4cout) const; + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + + protected: + virtual Severity ReadEnum(G4std::istream& in, ErrorDescriptor *err, + int AssignVal = 1, int needDelims = 1); +}; + + +//struct P23_NAMESPACE { + +#ifndef _ODI_OSSG_ +class SCLP23_NAME(LOGICAL); +class SCLP23_NAME(BOOL); +#endif + +// If NO_BOOLS_LOGS is defined then Bool and Logical need to be defined +// elsewhere. Namely they are specified by Part 26 to be defined within the +// context of CORBA in IDL. That means they need to have code generated for +// them by the IDL compiler so that they are understood by the compiler in the +// IDL generated code. Of course that means they can't be defined here. It also +// means that their definition needs to be included here. That is done by +// changing the file included above as #include Go to that +// file and change the name of the file included there. +// If NO_BOOL_LOGS is not defined they will be defined here and must be +// prefixed with SCLBOOL() or SCLLOG() parameterized macro when used. (see +// clstepcore/sclprefixes.h) +// If you need Logical and Bool to be prefixed with something else because it +// is defined in another name space: +// 1. define NO_BOOLS_LOGS (so they are not defined here) +// 2. change the definition of the macros defining the parameterized +// macros (SCLBOOL, SCLBOOL_H, SCLLOG, and SCLLOG_H) in +// clstepcore/sclprefixes.h +// DAS +#ifndef NO_BOOLS_LOGS +enum SCLBOOL_H(Bool) { SCLBOOL_H(BFalse), SCLBOOL_H(BTrue), SCLBOOL_H(BUnset) }; +enum SCLLOG_H(Logical) { SCLLOG_H(LFalse), SCLLOG_H(LTrue), SCLLOG_H(LUnset), SCLLOG_H(LUnknown) }; +#endif + +// old SCL definition +//enum LOGICAL { sdaiFALSE, sdaiTRUE, sdaiUNKNOWN }; + +class SCLP23_NAME(LOGICAL) : +public SCLP23_NAME(Enum) { + public: + const char * Name() const; + + SCLP23_NAME(LOGICAL) (char * val =0); + SCLP23_NAME(LOGICAL) (SCLLOG_H(Logical) state); + SCLP23_NAME(LOGICAL) (const SCLP23_NAME(LOGICAL)& source); + SCLP23_NAME(LOGICAL) (int i); + +// this is to avoid a bug? in the ossg utility for ObjectStore +#ifndef __OSTORE__ +#ifndef _ODI_OSSG_ +// this causes an error with sun C++ because SCLP23_NAME(BOOL) is not a completely +// specified type. (this is supposed to be SDAI?) DAS +// SCLP23_NAME(LOGICAL) (const SCLP23_NAME(BOOL)& boo); +#endif +#endif + virtual ~SCLP23_NAME(LOGICAL) (); + + virtual int no_elements () const; + virtual const char * element_at (int n) const; + +// operator int () const; + operator SCLLOG_H(Logical) () const; + SCLP23_NAME(LOGICAL)& operator=(const SCLP23_NAME(LOGICAL)& t); + + SCLP23_NAME(LOGICAL) operator==( const SCLP23_NAME(LOGICAL)& t ) const; + + // these 2 are redefined because LUnknown has cardinal value > LUnset + int exists() const; // return 0 if unset otherwise return 1 + void nullify(); // change the receiver to an unset status + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + + protected: + virtual int set_value (const int n); + virtual int set_value (const char * n); + virtual Severity ReadEnum(G4std::istream& in, ErrorDescriptor *err, + int AssignVal = 1, int needDelims = 1); + +} +; + +class SCLP23_NAME(BOOL) : +public SCLP23_NAME(Enum) { + public: + const char * Name() const; + + SCLP23_NAME(BOOL) (char * val = 0); + SCLP23_NAME(BOOL) (SCLBOOL_H(Bool) state); + SCLP23_NAME(BOOL) (const SCLP23_NAME(BOOL)& source); + SCLP23_NAME(BOOL) (int i); + SCLP23_NAME(BOOL) (const SCLP23_NAME(LOGICAL)& val); + virtual ~SCLP23_NAME(BOOL) (); + + virtual int no_elements () const; + virtual const char * element_at (int n) const; + + operator SCLBOOL_H(Bool)() const; + SCLP23_NAME(BOOL)& operator=(const SCLP23_NAME(LOGICAL)& t); + + SCLP23_NAME(BOOL)& operator=(const SCLBOOL_H(Bool) t); +// operator int () const; +// operator SCLLOG_H(Logical) () const; + SCLP23_NAME(LOGICAL) operator==( const SCLP23_NAME(LOGICAL)& t ) const; + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif + +} +; + +// Commented following declarations (porting on DEC-cxx) - GC +// static const SCLP23_NAME(BOOL) SCLP23_NAME(TRUE); +// static const SCLP23_NAME(BOOL) SCLP23_NAME(FALSE); +// static const SCLP23_NAME(BOOL) SCLP23_NAME(UNSET); +// static const SCLP23_NAME(LOGICAL) SCLP23_NAME(UNKNOWN); + +//}; // end struct P23_NAMESPACE + +#if 0 +// *********** NOTE **************** +// These are now defined in sdai.h + +#ifdef __OSTORE__ +SCLP23(BOOL) *create_BOOL(os_database *db); +#else +inline SCLP23(BOOL) *create_BOOL() { return new SCLP23(BOOL) ; } +#endif + +#ifdef __OSTORE__ +SCLP23(LOGICAL) *create_LOGICAL(os_database *db); +#else +inline SCLP23(LOGICAL) *create_LOGICAL() { return new SCLP23(LOGICAL) ; } +#endif + +#endif + +#endif diff --git a/source/geometry/solids/STEP/include/sdaiModel_contents.h b/source/geometry/solids/STEP/include/sdaiModel_contents.h new file mode 100644 index 0000000000..545dcca9eb --- /dev/null +++ b/source/geometry/solids/STEP/include/sdaiModel_contents.h @@ -0,0 +1,229 @@ +#ifndef SDAIMODEL_CONTENTS_H +#define SDAIMODEL_CONTENTS_H 1 + +//SCLP23_NAME(Model_contents) + +/* + 7.3.2 SCLP23_NAME(Model_contents) +*/ + +/* +//#include + +// for Application_instance__set +//#include +//#include + +// for Entity_extent__set +//#include +//#include + +// for supertype Session_instance +//#include +*/ + +// The class SCLP23_NAME(Model_contents)_instances shall implement convenience functions by +// SCLP23_NAME(Model_contents) in this part of ISO 10303 + +class SCLP23_NAME(Model_contents_instances) : public SCLP23_NAME(DAObject) +{ + public: + + SCLP23_NAME(DAObject__set) _instances; + + SCLP23_NAME(Model_contents_instances)(); + virtual ~SCLP23_NAME(Model_contents_instances)(); + + // This function shall return the set of DAObjects contained in + // the receiver. + SCLP23_NAME(DAObject__set_var) contents_() { return &_instances; } + const SCLP23_NAME(DAObject__set_var) contents_() const + { + // Removed meaningless 'const' qualifier on returned casted type - GC + return (SCLP23_NAME(DAObject__set_var)) &_instances; + } + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif +}; + +typedef SCLP23_NAME(Model_contents_instances) * + SCLP23_NAME(Model_contents_instances_ptr); +typedef SCLP23_NAME(Model_contents_instances_ptr) + SCLP23_NAME(Model_contents_instances_var); + +// Model_contents_ptr def pushed ahead of #include for Entity_extent +//class SCLP23_NAME(Model_contents); +//typedef SCLP23_NAME(Model_contents) SCLP23_NAME(Model_contents_ptr); + +class SCLP23_NAME(Model_contents) : public SCLP23_NAME(Session_instance) { + +//friend class SCLP23_NAME(Model); + + /* + NOTE - Model is a friend so that Model may access the contents of + the Entity_extents folders. + + DATA MEMBERS + */ + public: +// protected: // for now +// contains Application_instances (i.e. STEPentities) + SCLP23_NAME(Model_contents_instances) _instances; + + SCLP23_NAME(Entity_extent__set) _folders; // of entity_extent + + SCLP23_NAME(Entity_extent__set) _populated_folders; // of entity_extent + +// EntityAggregate _instances; // of Entity_instance +// EntityAggregate _folders; // of entity_extent +// EntityAggregate _populated_folders; // of entity_extent + + /* + Constructor declarations + */ + public: // for now at least +// private: + SCLP23_NAME(Model_contents)(); +// SCLP23_NAME(Model_contents)(const SCLP23_NAME(Model_contents)& mc); + ~SCLP23_NAME(Model_contents)(); + /* + Access function declarations + */ + public: + SCLP23_NAME(Model_contents_instances_ptr) instances_(); + const SCLP23_NAME(Model_contents_instances_ptr) instances_() const; + + SCLP23_NAME(Entity_extent__set_var) folders_(); + const SCLP23_NAME(Entity_extent__set_var) folders_() const; + + //Boolean TestFolders() const; + + const SCLP23_NAME(Entity_extent__set_var) populated_folders_() const; + SCLP23_NAME(Entity_extent__set_var) populated_folders_(); + //Boolean TestPopulated_folders() const; + +// static SCLP23_NAME(Model_contents_ptr) +// _duplicate(SCLP23_NAME(Model_contents_ptr)); +// static SCLP23_NAME(Model_contents_ptr) _narrow(Object_ptr); +// static SCLP23_NAME(Model_contents_ptr) _nil(); + + SCLP23_NAME(PID_DA_ptr) + get_object_pid(const SCLP23_NAME(DAObject_ptr &d)) const; + + SCLP23_NAME(DAObject_ptr) lookup(const SCLP23_NAME(PID_DA_ptr &p)) const; + + /* + SDAI operation declarations + + 7.3.2.1 SDAI operation declarations + + 7.3.2.1.1 Add instance + */ +// private: + public: // for now at least + SCLP23_NAME(DAObject_ptr) + CreateEntityInstance(const char * Type); + + // until we find out what this should really be in the spec + void AddInstance(const SCLP23_NAME(DAObject_SDAI_ptr)& appInst); +// void AddInstance(const Entity_instance_ptr& entityHandle); + //void AddInstance(EntityInstanceH& entityHandle); + /* Function: + The AddInstance function shall add the entity instance entity handle + to the instances set of the receiver. This function shall add the + entity instance entityHandle to each Entity_extent in the folders + attribute of the receiver for which the type or a subtype of the + type contained in the folder corresponds to the type of entityHandle. + This function shall add the entity instance entityHandle to each + Entity_extent in the populated_folders attribute of the receiver for + which the type or a subtype of the type contained in the folder + corresponds to the type of entityHandle. + + Possible error indicators: + sdaiSS_NOPN // Session not open + sdaiRP_NOPN // Repository not open + sdaiMO_NEXS // SDAI-model does not exist + sdaiMX_NRW // SDAI-model access not read-write + sdaiSY_ERR // Underlying system error + + Origin: Convenience function + */ + + // until we find out what this should really be in the spec +#ifndef __OSTORE__ + void RemoveInstance(SCLP23_NAME(DAObject_SDAI_ptr)& appInst); +#endif +// void RemoveInstance(Entity_instance_ptr& entityHandle); + //void RemoveInstance(EntityInstanceH& entityHandle); + /* Function + The RemoveInstance function shall remove the entity instance entity + handle from the instances set of the receiver. This function shall + remove the entity instance entityHandle from each Entity_extent in + the folders attribute of the receiver for which the type or a + subtype of the type contained in the folder corresponds to the + type of entityHandle. This function shall remove the entity + instance entityHandle from each Entity_extent in the + populated_folders attribute of the receiver for which the type or + a subtype of the type contained in the folder corresponds to the + type of entityHandle. + + Possible error indicators + sdaiSS_NOPN // Session not open + sdaiRP_NOPN // Repository not open + sdaiMO_NEXS // SDAI-model does not exist + sdaiMX_NRW // SDAI-model access not read-write + sdaiSY_ERR // Underlying system error + + Origin: Convenience function + */ + public: + + /* + 7.3.2.1.3 Get entity extent + */ +#ifdef SDAI_CPP_LATE_BINDING +#if 0 // for now + Any_var GetEntity_extent(const String_var& entityName); + const Any_var GetEntity_extent(const String_var& entityName) const; + Any_var GetEntity_extent(const Entity_ptr& ep); + const Any_var GetEntity_extent(const Entity_ptr& ep) const; +#endif + /* Function: + The GetEntity_extent function shall retrieve an entity folder from + the folders attribute within the contents attribute of the receiver. + This folder shall contain all of the instances of a particular type + and its subtypes within the model. The type may be specified + indirectly by the entityName parameter or directly by the entity. + Subsequent access to the returned aggregate shall be restricted to + read-only functionality. + + Output: + This function shall return an aggregate handle used as an argument + for subsequent SDAI function calls. Otherwise, this function shall + return a null handle. + + Possible error indicators: + sdaiSS_NOPN // Session not open + sdaiRP_NOPN // Repository not open + sdaiMO_NEXS // SDAI-model does not exist + sdaiED_NDEF // Entity definition unknown in this model + sdaiSY_ERR // Underlying system error + + Origin: Convenience function + */ + +#endif + +// void instances (SCLP23_NAME(Model_contents_instances_ptr) x); +// void folders (Entity_extent__set x); +// void populated_folders (Entity_extent__set x); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif + +}; + +#endif diff --git a/source/geometry/solids/STEP/include/sdaiModel_contents_list.h b/source/geometry/solids/STEP/include/sdaiModel_contents_list.h new file mode 100644 index 0000000000..4b8f90be1d --- /dev/null +++ b/source/geometry/solids/STEP/include/sdaiModel_contents_list.h @@ -0,0 +1,58 @@ +#ifndef SDAIMODEL_CONTENTS_LIST_H +#define SDAIMODEL_CONTENTS_LIST_H 1 + +class SCLP23_NAME(Model_contents__list) { +public: +#ifdef __OSTORE__ + os_Collection &_rep; + os_Cursor _cursor; + SCLBOOL_H(Bool) _first; +#endif + + SCLP23_NAME(Model_contents__list)(int = 16); + ~SCLP23_NAME(Model_contents__list)(); + + SCLP23_NAME(Model_contents_ptr) retrieve(int index); + int is_empty(); + +#ifndef __OSTORE__ + SCLP23_NAME(Model_contents_ptr)& operator[](int index); +#endif + + void Insert(SCLP23_NAME(Model_contents_ptr), int index); + void Append(SCLP23_NAME(Model_contents_ptr)); + void Remove(int index); +#ifndef __OSTORE__ + int Index(SCLP23_NAME(Model_contents_ptr)); + + void Clear(); +#endif + int Count(); + +#ifdef __OSTORE__ +// cursor stuff + SCLP23_NAME(Model_contents_ptr) first(); + SCLP23_NAME(Model_contents_ptr) next(); + SCLP23_NAME(Integer) more(); +#endif + +private: + void Check(int index); +private: + SCLP23_NAME(Model_contents_ptr)* _buf; + int _bufsize; + int _count; + + public: + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif +}; + +typedef SCLP23_NAME(Model_contents__list)* + SCLP23_NAME(Model_contents__list_ptr); +typedef SCLP23_NAME(Model_contents__list_ptr) + SCLP23_NAME(Model_contents__list_var); + +#endif diff --git a/source/geometry/solids/STEP/include/sdaiObject.h b/source/geometry/solids/STEP/include/sdaiObject.h new file mode 100644 index 0000000000..3eb3539508 --- /dev/null +++ b/source/geometry/solids/STEP/include/sdaiObject.h @@ -0,0 +1,68 @@ + +#ifndef SDAIOBJECT_H +#define SDAIOBJECT_H 1 + +/* +#include +*/ +/* + The EXPRESS ENTITY entity_instance from the SDAI_data_type_schema from + clause 10 in ISO 10303-22, shall be mapped to the C++ class Entity_instance. + The class Entity_instance shall be a subtype of the C++ class Object: +*/ + +class SCLP23_NAME(sdaiObject) +{ + public: + SCLP23_NAME(sdaiObject)(); + virtual ~SCLP23_NAME(sdaiObject)(); +// static Object_ptr _duplicate(Object_ptr); +// static Object_ptr _nil(); + +#ifdef PART26 +// virtual SCLP26(Application_instance_ptr) create_TIE(); + virtual IDL_Application_instance_ptr create_TIE(); +#endif + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); + virtual void Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range); +#endif +}; + +typedef SCLP23_NAME(sdaiObject)* SCLP23_NAME(sdaiObject_ptr); +typedef SCLP23_NAME(sdaiObject_ptr) SCLP23_NAME(sdaiObject_var); + +/* + The class Object shall be accessed through the handle types Object_ptr and + Object_var. For handles to the C++ class representing a EXPRESS ENTITY data + type A, the following implicit widening operations shall be supported: + A_ptr to Object_ptr and A_var to Object_ptr. An implementation need not + support implicit widening of A_var to Object_var. + + This binding shall support the following functions: +*/ + +//void release(Object_ptr obj); + +/* + The release function indicates that the caller will no longer access the + reference obj. +*/ + +//Boolean is_nil(Object_ptr obj); + +/* + The is_nil function shall return true if obj is a nil handle; otherwise it + returns false. + + This binding does not specify that all base classes in the application + schema be virtual base classes; however, it does require that no multiply + inherited derived class contain multiple instantiations of any of its base + classes. This requirement applies to all classes, even classes used to + instantiate complex instances. +*/ + +#endif diff --git a/source/geometry/solids/STEP/include/sdaiSelect.h b/source/geometry/solids/STEP/include/sdaiSelect.h new file mode 100644 index 0000000000..f88d095f66 --- /dev/null +++ b/source/geometry/solids/STEP/include/sdaiSelect.h @@ -0,0 +1,137 @@ +#ifndef _STEPSELECT_H +#define _STEPSELECT_H + +/* +* NIST STEP Core Class Library +* clstepcore/sdaiSelect.h +* April 1997 +* Dave Helfrick +* KC Morris + +* Development of this software was funded by the United States Government, +* and is not subject to copyright. +*/ + +/* $Id: sdaiSelect.h,v 1.1 2000/01/21 13:42:45 gcosmo Exp $ */ + +/* + +#ifdef __OSTORE__ +#include // Required to access ObjectStore Class Library +#endif + +#ifdef __O3DB__ +#include +#endif + +#include +#include +#include +#include +#include + +class TypeDescriptor; +class SelectTypeDescriptor; +class InstMgr; +*/ + +/********** + class definition for the select superclass SCLP23_NAME(Select). +**********/ +class SCLP23_NAME(Select) { + protected: + const SelectTypeDescriptor *_type; + const TypeDescriptor * underlying_type; + BASE_TYPE base_type; // used by the subtypes + +#ifdef __OSTORE__ + // This member is used in the access_hook function generated for + // SCLP23_NAME(Select) subtypes. It can be saved by ObjectStore where + // underlying_type cannot be since it is pointing to a transient + // TypeDescriptor. This is used to reinitialize underlying_type + // in the access hook function. + SCLP23_NAME(String) underlying_type_name; +#endif + + // it looks like this member, val, is not used anywhere 9/27/96 - DAS + SCLP23_NAME(String) val; + ErrorDescriptor _error; + + const TypeDescriptor * SetUnderlyingType (const TypeDescriptor *); + + const TypeDescriptor * CanBe (const char *) const; + const TypeDescriptor * CanBe (BASE_TYPE) const; + const TypeDescriptor * CanBe (const TypeDescriptor * td) const; + const TypeDescriptor * CanBeSet (const char *, const char *) const; + + const int IsUnique(const BASE_TYPE bt) const; + + virtual const TypeDescriptor * AssignEntity (SCLP23_NAME(Application_instance) * se) =0; + virtual SCLP23_NAME(Select) * NewSelect () =0; + public: + Severity severity() const; + Severity severity( Severity ); + const char *Error(); + void Error( char * ); + // clears select's error + void ClearError(); + // clears error + + virtual BASE_TYPE ValueType() const =0; + + // constructors + SCLP23_NAME(Select) (const SelectTypeDescriptor * s =0, + const TypeDescriptor * td =0); + virtual ~SCLP23_NAME(Select) (); + + // from SDAI binding + SCLP23_NAME(String) UnderlyingTypeName () const; + const TypeDescriptor * CurrentUnderlyingType() const; + int exists() const; + void nullify(); + + Severity SelectValidLevel(const char *attrValue, ErrorDescriptor *err, + InstMgr *im, int clearError); + + // reading and writing + const char * STEPwrite (SCLstring& s, const char *currSch =0) const; + void STEPwrite (G4std::ostream& out =G4cout, const char *currSch =0) const; + + // IMS 8/2/95: added as part of new select implementation + virtual void STEPwrite_verbose (G4std::ostream& out =G4cout, const char * =0) + const; + + virtual void STEPwrite_content (G4std::ostream& out, const char * =0) const =0; +// char * asStr() const; + + + Severity StrToVal(const char *val, const char *selectType, + ErrorDescriptor *err, InstMgr * instances =0); + virtual Severity StrToVal_content (const char *, + InstMgr * instances =0) =0; + + Severity STEPread(G4std::istream& in, ErrorDescriptor *err, + InstMgr * instances =0, const char* utype =0, + int addFileId =0, const char * =NULL); + + // abstract function + virtual Severity STEPread_content (G4std::istream& in =G4cin, + InstMgr * instances =0, + const char *utype =0, + int addFileId =0, + const char *currSch =0) =0; + + virtual SCLP23_NAME(Select)& operator =( const SCLP23_NAME(Select)& ) =0; + + int set_null(); + int is_null(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif +}; /** end class **/ + +typedef SCLP23_NAME(Select) * SCLP23_NAME(Select_ptr) ; +typedef SCLP23_NAME(Select_ptr) SCLP23_NAME(Select_var) ; + +#endif diff --git a/source/geometry/solids/STEP/include/sdaiSession_instance.h b/source/geometry/solids/STEP/include/sdaiSession_instance.h new file mode 100644 index 0000000000..1598febef4 --- /dev/null +++ b/source/geometry/solids/STEP/include/sdaiSession_instance.h @@ -0,0 +1,36 @@ + +#ifndef SESSION_INSTANCE_H +#define SESSION_INSTANCE_H 1 + +//#include + +class SCLP23_NAME(Session_instance) : public SCLP23_NAME(sdaiObject) +{ + + public: + int x; + + SCLP23_NAME(Session_instance)(); + virtual ~SCLP23_NAME(Session_instance)(); +// SCLP23_NAME(Session_instance)(const SCLP23_NAME(Session_instance)& si) {} + +// static SCLP23_NAME(Session_instance_ptr) +// _duplicate(SCLP23_NAME(Session_instance_ptr) sip); +// static SCLP23_NAME(Session_instance_ptr) +// _narrow(SCLP23_NAME(Object_ptr) o); +// static SCLP23_NAME(Session_instance_ptr) _nil(); + +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif + +}; + +typedef SCLP23_NAME(Session_instance)* SCLP23_NAME(Session_instance_ptr); +typedef SCLP23_NAME(Session_instance_ptr) SCLP23_NAME(Session_instance_var); + +// the old names +//typedef SCLP23_NAME(Session_instance) SCLP23_NAME(SessionInstance); +//typedef SCLP23_NAME(Session_instance_ptr) SCLP23_NAME(SessionInstanceH); + +#endif diff --git a/source/geometry/solids/STEP/include/STEPstring.h b/source/geometry/solids/STEP/include/sdaiString.h similarity index 55% rename from source/geometry/solids/STEP/include/STEPstring.h rename to source/geometry/solids/STEP/include/sdaiString.h index 7a9bb97f1e..edae9053a2 100644 --- a/source/geometry/solids/STEP/include/STEPstring.h +++ b/source/geometry/solids/STEP/include/sdaiString.h @@ -1,27 +1,22 @@ - - -// - - - -// -// $Id: STEPstring.h,v 1.3 1999/12/15 14:50:15 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// #ifndef STEPSTRING_H #define STEPSTRING_H 1 /* * NIST STEP Core Class Library -* clstepcore/STEPstring.h -* May 1995 +* clstepcore/sdaiString.h +* April 1997 * KC Morris * Development of this software was funded by the United States Government, * and is not subject to copyright. */ -/* */ +/* $Id: sdaiString.h,v 1.1 2000/01/21 13:42:46 gcosmo Exp $ */ + +/* +#ifdef __OSTORE__ +#include // Required to access ObjectStore Class Library +#endif #ifdef __O3DB__ #include @@ -34,18 +29,20 @@ class ErrorDescriptor; #ifndef STRING_DELIM #define STRING_DELIM '\'' #endif +*/ -class SdaiString : public SCLstring { +class SCLP23_NAME(String) : public SCLstring { public: //constructor(s) & destructor - SdaiString (const char * str = 0, int max =0) : SCLstring (str,max) { } - SdaiString (const SCLstring& s) : SCLstring (s) { } - SdaiString (const SdaiString& s) : SCLstring (s) { } - ~SdaiString () { } + SCLP23_NAME(String) (const char * str = 0, int max =0) : SCLstring (str,max) + { } + SCLP23_NAME(String) (const SCLstring& s) : SCLstring (s) { } + SCLP23_NAME(String) (const SCLP23_NAME(String)& s) : SCLstring (s) { } + ~SCLP23_NAME(String) () { } // operators - SdaiString& operator= (const char* s); + SCLP23_NAME(String)& operator= (const char* s); // format for STEP const char * asStr (SCLstring & s) const { return s = chars (); } @@ -56,13 +53,10 @@ public: Severity STEPread (G4std::istream& in, ErrorDescriptor *err); Severity STEPread (const char *s, ErrorDescriptor *err); - protected: +#ifdef __OSTORE__ + static os_typespec* get_os_typespec(); +#endif + }; -inline -SdaiString& -SdaiString::operator= (const char* s) - { SCLstring::operator= (s); - return *this; } - #endif diff --git a/source/geometry/solids/STEP/include/seeinfodefault.h b/source/geometry/solids/STEP/include/seeinfodefault.h index 3ddd35148c..7463e785e9 100644 --- a/source/geometry/solids/STEP/include/seeinfodefault.h +++ b/source/geometry/solids/STEP/include/seeinfodefault.h @@ -1,20 +1,10 @@ - - -// - - - -// -// $Id: seeinfodefault.h,v 1.2 1999/05/21 20:20:44 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// #ifndef seeinfodefault_h #define seeinfodefault_h /* * NIST STEP Editor Class Library * cleditor/schemaheader.cc -* May 1995 +* April 1997 * David Sauder * K. C. Morris @@ -32,7 +22,8 @@ class MgrNode; class DisplayNode; class DisplayNodelist; -class STEPentity; +#include +//class SCLP23(Application_instance); #include @@ -40,13 +31,13 @@ class seeInfo : public DisplayNode { public: seeInfo(MgrNode *node, - STEPentity *se, + SCLP23(Application_instance) *se, DisplayNodeList *dnl, displayStateEnum displaySt = mappedWrite); void *GetSEE() { return see; } }; -inline seeInfo::seeInfo(MgrNode *node, STEPentity *se, +inline seeInfo::seeInfo(MgrNode *node, SCLP23(Application_instance) *se, DisplayNodeList *dnl, displayStateEnum displaySt) { mn = node; diff --git a/source/geometry/solids/STEP/include/stat.h b/source/geometry/solids/STEP/include/stat.h index cc92b470a3..132b4fe0ca 100644 --- a/source/geometry/solids/STEP/include/stat.h +++ b/source/geometry/solids/STEP/include/stat.h @@ -1,14 +1,4 @@ - -// - - - -// -// $Id: stat.h,v 1.2 1999/05/21 20:20:45 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - #ifdef __O3DB__ #include #endif @@ -41,7 +31,7 @@ #ifndef sys_stat_h -#ifdef __cplusplus +#if defined(__cplusplus) extern "C" { #endif @@ -49,9 +39,6 @@ extern "C" { #ifdef WIN32 # include #else -#ifdef __FreeBSD__ -# include -#endif # include "//usr/include/sys/stat.h" #endif #undef KERNEL @@ -65,7 +52,7 @@ extern int stat(const char* path, struct stat*); extern int fstat(int fd, struct stat*); extern int lstat(const char* path, struct stat*); -#ifdef __cplusplus +#if defined(__cplusplus) } #endif diff --git a/source/geometry/solids/STEP/include/str_list.h b/source/geometry/solids/STEP/include/str_list.h new file mode 100644 index 0000000000..61d4c25c99 --- /dev/null +++ b/source/geometry/solids/STEP/include/str_list.h @@ -0,0 +1,24 @@ + +typedef char * scl_char_str; +typedef scl_char_str * scl_char_str_ptr; + +class scl_char_str__list { +public: + scl_char_str__list(int = 16); + ~scl_char_str__list(); + + scl_char_str_ptr& operator[](int index); + void Insert(scl_char_str_ptr, int index); + void Append(scl_char_str_ptr); + void Remove(int index); + int Index(scl_char_str_ptr); + + int Count(); + void Clear(); +private: + void Check(int index); +private: + scl_char_str_ptr* _buf; + int _bufsize; + int _count; +}; diff --git a/source/geometry/solids/STEP/src/ExpDict.cc b/source/geometry/solids/STEP/src/ExpDict.cc index cf2dd724c9..2093f464d4 100644 --- a/source/geometry/solids/STEP/src/ExpDict.cc +++ b/source/geometry/solids/STEP/src/ExpDict.cc @@ -1,18 +1,8 @@ - -// - - - -// -// $Id: ExpDict.cc,v 1.3 1999/12/15 14:50:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - /* * NIST STEP Core Class Library * clstepcore/ExpDict.cc -* May 1995 +* April 1997 * K. C. Morris * David Sauder @@ -20,7 +10,20 @@ * and is not subject to copyright. */ -/* */ +/* $Id: ExpDict.cc,v 1.5 2000/06/08 17:18:11 gcosmo Exp $ */ +#include +#include +#include + +#ifndef WIN32 +// to help ObjectCenter +#ifndef HAVE_MEMMOVE +extern "C" +{ +void * memmove(void *__s1, const void *__s2, size_t __n); +} +#endif +#endif #include #include @@ -58,47 +61,623 @@ extern const TypeDescriptor _t_INTEGER_TYPE /*extern const TypeDescriptor _t_GENERIC_TYPE ("GENERIC", GENERIC_TYPE, "Generic") ;*/ /*const TypeDescriptor * const t_GENERIC_TYPE = &_t_GENERIC_TYPE;*/ +Explicit_item_id__set::Explicit_item_id__set (int defaultSize) { + _bufsize = defaultSize; + _buf = new Explicit_item_id_ptr[_bufsize]; + _count = 0; +} +Explicit_item_id__set::~Explicit_item_id__set () { delete _buf; } +void Explicit_item_id__set::Check (int index) { + Explicit_item_id_ptr* newbuf; + + if (index >= _bufsize) { + _bufsize = (index+1) * 2; + newbuf = new Explicit_item_id_ptr[_bufsize]; + memmove(newbuf, _buf, _count*sizeof(Explicit_item_id_ptr)); + delete _buf; + _buf = newbuf; + } +} + +void Explicit_item_id__set::Insert (Explicit_item_id_ptr v, int index) { + Explicit_item_id_ptr* spot; + index = (index < 0) ? _count : index; + + if (index < _count) { + Check(_count+1); + spot = &_buf[index]; + memmove(spot+1, spot, (_count - index)*sizeof(Explicit_item_id_ptr)); + + } else { + Check(index); + spot = &_buf[index]; + } + *spot = v; + ++_count; +} + +void Explicit_item_id__set::Append (Explicit_item_id_ptr v) { + int index = _count; + Explicit_item_id_ptr* spot; + + if (index < _count) { + Check(_count+1); + spot = &_buf[index]; + memmove(spot+1, spot, (_count - index)*sizeof(Explicit_item_id_ptr)); + + } else { + Check(index); + spot = &_buf[index]; + } + *spot = v; + ++_count; +} + +void Explicit_item_id__set::Remove (int index) { + if (0 <= index && index < _count) { + --_count; + Explicit_item_id_ptr* spot = &_buf[index]; + memmove(spot, spot+1, (_count - index)*sizeof(Explicit_item_id_ptr)); + } +} + +int Explicit_item_id__set::Index (Explicit_item_id_ptr v) { + for (int i = 0; i < _count; ++i) { + if (_buf[i] == v) { + return i; + } + } + return -1; +} + +Explicit_item_id_ptr& Explicit_item_id__set::operator[] (int index) { + Check(index); +// _count = G4std::max(_count, index+1); + _count = ( (_count > index+1) ? _count : (index+1) ); + return _buf[index]; +} + +int +Explicit_item_id__set::Count() +{ + return _count; +} + +void +Explicit_item_id__set::Clear() +{ + _count = 0; +} + +/////////////////////////////////////////////////////////////////////////////// + +Implicit_item_id__set::Implicit_item_id__set (int defaultSize) { + _bufsize = defaultSize; + _buf = new Implicit_item_id_ptr[_bufsize]; + _count = 0; +} + +Implicit_item_id__set::~Implicit_item_id__set () { delete _buf; } + +void Implicit_item_id__set::Check (int index) { + Implicit_item_id_ptr* newbuf; + + if (index >= _bufsize) { + _bufsize = (index+1) * 2; + newbuf = new Implicit_item_id_ptr[_bufsize]; + memmove(newbuf, _buf, _count*sizeof(Implicit_item_id_ptr)); + delete _buf; + _buf = newbuf; + } +} + +void Implicit_item_id__set::Insert (Implicit_item_id_ptr v, int index) { + Implicit_item_id_ptr* spot; + index = (index < 0) ? _count : index; + + if (index < _count) { + Check(_count+1); + spot = &_buf[index]; + memmove(spot+1, spot, (_count - index)*sizeof(Implicit_item_id_ptr)); + + } else { + Check(index); + spot = &_buf[index]; + } + *spot = v; + ++_count; +} + +void Implicit_item_id__set::Append (Implicit_item_id_ptr v) { + int index = _count; + Implicit_item_id_ptr* spot; + + if (index < _count) { + Check(_count+1); + spot = &_buf[index]; + memmove(spot+1, spot, (_count - index)*sizeof(Implicit_item_id_ptr)); + + } else { + Check(index); + spot = &_buf[index]; + } + *spot = v; + ++_count; +} + +void Implicit_item_id__set::Remove (int index) { + if (0 <= index && index < _count) { + --_count; + Implicit_item_id_ptr* spot = &_buf[index]; + memmove(spot, spot+1, (_count - index)*sizeof(Implicit_item_id_ptr)); + } +} + +int Implicit_item_id__set::Index (Implicit_item_id_ptr v) { + for (int i = 0; i < _count; ++i) { + if (_buf[i] == v) { + return i; + } + } + return -1; +} + +Implicit_item_id_ptr& Implicit_item_id__set::operator[] (int index) { + Check(index); +// _count = G4std::max(_count, index+1); + _count = ( (_count > index+1) ? _count : (index+1) ); + return _buf[index]; +} + +int +Implicit_item_id__set::Count() +{ + return _count; +} + +void +Implicit_item_id__set::Clear() +{ + _count = 0; +} + +/////////////////////////////////////////////////////////////////////////////// + +Interface_spec__set::Interface_spec__set (int defaultSize) { + _bufsize = defaultSize; + _buf = new Interface_spec_ptr[_bufsize]; + _count = 0; +} + +Interface_spec__set::~Interface_spec__set () { delete _buf; } + +void Interface_spec__set::Check (int index) { + Interface_spec_ptr* newbuf; + + if (index >= _bufsize) { + _bufsize = (index+1) * 2; + newbuf = new Interface_spec_ptr[_bufsize]; + memmove(newbuf, _buf, _count*sizeof(Interface_spec_ptr)); + delete _buf; + _buf = newbuf; + } +} + +void Interface_spec__set::Insert (Interface_spec_ptr v, int index) { + Interface_spec_ptr* spot; + index = (index < 0) ? _count : index; + + if (index < _count) { + Check(_count+1); + spot = &_buf[index]; + memmove(spot+1, spot, (_count - index)*sizeof(Interface_spec_ptr)); + + } else { + Check(index); + spot = &_buf[index]; + } + *spot = v; + ++_count; +} + +void Interface_spec__set::Append (Interface_spec_ptr v) { + int index = _count; + Interface_spec_ptr* spot; + + if (index < _count) { + Check(_count+1); + spot = &_buf[index]; + memmove(spot+1, spot, (_count - index)*sizeof(Interface_spec_ptr)); + + } else { + Check(index); + spot = &_buf[index]; + } + *spot = v; + ++_count; +} + +void Interface_spec__set::Remove (int index) { + if (0 <= index && index < _count) { + --_count; + Interface_spec_ptr* spot = &_buf[index]; + memmove(spot, spot+1, (_count - index)*sizeof(Interface_spec_ptr)); + } +} + +int Interface_spec__set::Index (Interface_spec_ptr v) { + for (int i = 0; i < _count; ++i) { + if (_buf[i] == v) { + return i; + } + } + return -1; +} + +Interface_spec_ptr& Interface_spec__set::operator[] (int index) { + Check(index); +// _count = G4std::max(_count, index+1); + _count = ( (_count > index+1) ? _count : (index+1) ); + return _buf[index]; +} + +int +Interface_spec__set::Count() +{ + return _count; +} + +void +Interface_spec__set::Clear() +{ + _count = 0; +} + +/////////////////////////////////////////////////////////////////////////////// + +Interface_spec::Interface_spec() + : _explicit_items(new Explicit_item_id__set), + _implicit_items(0), _all_objects(0) +{ +} + +// not tested +Interface_spec::Interface_spec(Interface_spec &is) +{ + _explicit_items = new Explicit_item_id__set; + int count = is._explicit_items->Count(); + int i; + for (i = 0;i < count; i++) + { + (*_explicit_items)[i] = + (*(is._explicit_items))[i]; + } + _current_schema_id = is._current_schema_id; + _foreign_schema_id = is._foreign_schema_id; + _all_objects = is._all_objects; + _implicit_items = 0; +} + +Interface_spec::Interface_spec(const char * cur_sch_id, + const char * foreign_sch_id, int all_objects) + : _current_schema_id(cur_sch_id), _explicit_items(new Explicit_item_id__set), + _implicit_items(0),_foreign_schema_id(foreign_sch_id), + _all_objects(all_objects) +{ +} + +Interface_spec::~Interface_spec() +{ + delete _explicit_items; + delete _implicit_items; +} + +////////////////////////////////////////////////////////////////////////////// +void +Schema::AddFunction(const char * f) +{ + if(_function_list == 0) + _function_list = new scl_char_str__list; + _function_list->Append((char *)f); +} + +void +Schema::AddGlobal_rule(Global_rule_ptr gr) +{ + if(_global_rules == 0) _global_rules = new Global_rule__set; + _global_rules->Append(gr); +} + + // not implemented +void +Schema::global_rules_(Global_rule__set_var &grs) +{ +} + +void +Schema::AddProcedure(const char * p) +{ + if(_procedure_list == 0) + _procedure_list = new scl_char_str__list; + _procedure_list->Append((char *)p); +} + +// the whole schema +void +Schema::GenerateExpress(G4std::ostream& out) const +{ + SCLstring tmp; + out << G4endl << "(* Generating: " << Name() << " *)" << G4endl; + out << G4endl << "SCHEMA " << StrToLower(Name(),tmp) << ";" << G4endl; + GenerateUseRefExpress(out); + // print TYPE definitions + out << G4endl << "(* ////////////// TYPE Definitions *)" << G4endl; + GenerateTypesExpress(out); + + // print Entity definitions + out << G4endl << "(* ////////////// ENTITY Definitions *)" << G4endl; + GenerateEntitiesExpress(out); + + int count, i; + if(_global_rules != 0) + { + out << G4endl << "(* *************RULES************* *)" << G4endl; + count = _global_rules->Count(); + for(i = 0; i < count; i++) + { + out << G4endl << (*_global_rules)[i]->rule_text_() << G4endl; + } + } + if(_function_list != 0) + { + out << "(* *************FUNCTIONS************* *)" << G4endl; + count = _function_list->Count(); + for(i = 0; i < count; i++) + { + out << G4endl << (*_function_list)[i] << G4endl; + } + } + if(_procedure_list != 0) + { + out << "(* *************PROCEDURES************* *)" << G4endl; + count = _procedure_list->Count(); + for(i = 0; i < count; i++) + { + out << G4endl << (*_procedure_list)[i] << G4endl; + } + } + out << G4endl << "END_SCHEMA;" << G4endl; +} + +// USE, REFERENCE definitions +void +Schema::GenerateUseRefExpress(G4std::ostream& out) const +{ + int i,k; + int intf_count; + int count; + Interface_spec_ptr is; + int first_time; + SCLstring tmp; + + /////////////////////// print USE statements + + intf_count = _use_interface_list->Count(); + if(intf_count) // there is at least 1 USE interface to a foreign schema + { + for (i = 0; i < intf_count; i++) // print out each USE interface + { + is = (*_use_interface_list)[i]; // the 1st USE interface + + // count is # of USE items in interface + count = is->explicit_items_()->Count(); + + //Explicit_item_id__set_var eiis = is->explicit_items_(); + + if(count > 0) + { + out << G4endl << " USE FROM " + << StrToLower(is->foreign_schema_id_().chars(),tmp) << G4endl; + out << " ("; + + first_time = 1; + for(k = 0; k < count; k++) // print out each USE item + { + if(first_time) first_time = 0; + else out << "," << G4endl << "\t"; + if( (*(is->explicit_items_()))[k]->original_id_().is_null() ) + { // not renamed + out << (*(is->explicit_items_()))[k]->new_id_().chars(); + } else { // renamed + out << (*(is->explicit_items_()))[k]->original_id_().chars(); + out << " AS " << (*(is->explicit_items_()))[k]->new_id_().chars(); + } + } + out << ");" << G4endl; + } else if (is->all_objects_()) { + out << G4endl << " USE FROM " + << StrToLower(is->foreign_schema_id_().chars(),tmp) << ";" + << G4endl; + } + } + } + + /////////////////////// print REFERENCE stmts + + intf_count = _ref_interface_list->Count(); + if(intf_count)//there is at least 1 REFERENCE interface to a foreign schema + { + for (i = 0; i < intf_count; i++) // print out each REFERENCE interface + { + is = (*_ref_interface_list)[i]; // the 1st REFERENCE interface + + // count is # of REFERENCE items in interface + count = is->explicit_items_()->Count(); + + + if(count > 0) + { + +// out << " REFERENCE FROM " << (*(is->explicit_items_()))[0]->foreign_schema_().chars() << G4endl; + out << G4endl << " REFERENCE FROM " + << StrToLower(is->foreign_schema_id_().chars(),tmp) << G4endl; + out << " ("; + + first_time = 1; + for(k = 0; k < count; k++) // print out each REFERENCE item + { + if(first_time) first_time = 0; + else out << "," << G4endl << "\t"; + if( (*(is->explicit_items_()))[k]->original_id_().is_null() ) + { // not renamed + out << (*(is->explicit_items_()))[k]->new_id_().chars(); + } else { // renamed + out << (*(is->explicit_items_()))[k]->original_id_().chars(); + out << " AS " + << (*(is->explicit_items_()))[k]->new_id_().chars(); + } + } + out << ");" << G4endl; + } else if (is->all_objects_()) { + out << G4endl << " REFERENCE FROM " + << StrToLower(is->foreign_schema_id_().chars(),tmp) << ";" + << G4endl; + } + } + } +} + +// TYPE definitions +void +Schema::GenerateTypesExpress(G4std::ostream& out) const +{ + TypeDescItr tdi(_typeList); + tdi.ResetItr(); + SCLstring tmp; + + const TypeDescriptor *td = tdi.NextTypeDesc(); + while (td) + { + out << G4endl << td->GenerateExpress(tmp); + td = tdi.NextTypeDesc(); + } +} + +// Entity definitions +void +Schema::GenerateEntitiesExpress(G4std::ostream& out) const +{ + EntityDescItr edi(_entList); + edi.ResetItr(); + SCLstring tmp; + + const EntityDescriptor *ed = edi.NextEntityDesc(); + while (ed) + { + out << G4endl << ed->GenerateExpress(tmp); + ed = edi.NextEntityDesc(); + } +} + +/////////////////////////////////////////////////////////////////////////////// + +#ifdef __OSTORE__ +EnumAggregate * create_EnumAggregate(os_database *db) +{ + return new (db, EnumAggregate::get_os_typespec()) EnumAggregate; +} +#else EnumAggregate * create_EnumAggregate() { return new EnumAggregate; } +#endif +#ifdef __OSTORE__ +GenericAggregate * create_GenericAggregate(os_database *db) +{ + return new (db, GenericAggregate::get_os_typespec()) GenericAggregate; +} +#else GenericAggregate * create_GenericAggregate() { return new GenericAggregate; } +#endif +#ifdef __OSTORE__ +EntityAggregate * create_EntityAggregate(os_database *db) +{ + return new (db, EntityAggregate::get_os_typespec()) EntityAggregate; +} +#else EntityAggregate * create_EntityAggregate() { return new EntityAggregate; } +#endif +#ifdef __OSTORE__ +SelectAggregate * create_SelectAggregate(os_database *db) +{ + return new (db, SelectAggregate::get_os_typespec()) SelectAggregate; +} +#else SelectAggregate * create_SelectAggregate() { return new SelectAggregate; } +#endif +#ifdef __OSTORE__ +StringAggregate * create_StringAggregate(os_database *db) +{ + return new (db, StringAggregate::get_os_typespec()) StringAggregate; +} +#else StringAggregate * create_StringAggregate() { return new StringAggregate; } +#endif +#ifdef __OSTORE__ +BinaryAggregate * create_BinaryAggregate(os_database *db) +{ + return new (db, BinaryAggregate::get_os_typespec()) BinaryAggregate; +} +#else BinaryAggregate * create_BinaryAggregate() { return new BinaryAggregate; } +#endif +#ifdef __OSTORE__ +RealAggregate * create_RealAggregate(os_database *db) +{ + return new (db, RealAggregate::get_os_typespec()) RealAggregate; +} +#else RealAggregate * create_RealAggregate() { return new RealAggregate; } +#endif +#ifdef __OSTORE__ +IntAggregate * create_IntAggregate(os_database *db) +{ + return new (db, IntAggregate::get_os_typespec()) IntAggregate; +} +#else IntAggregate * create_IntAggregate() { return new IntAggregate; } +#endif const EntityDescriptor * EntityDescItr::NextEntityDesc() @@ -124,14 +703,14 @@ AttrDescItr::NextAttrDesc() return 0; } -const InverseAttrDescriptor * -InverseADItr::NextInverseAttrDesc() +const Inverse_attribute * +InverseAItr::NextInverse_attribute() { if(cur) { - const InverseAttrDescriptor *iad = cur->InverseAttrDesc(); - cur = (InverseAttrDescLinkNode *)( cur->NextNode() ); - return iad; + const Inverse_attribute *ia = cur->Inverse_attr(); + cur = (Inverse_attributeLinkNode *)( cur->NextNode() ); + return ia; } return 0; } @@ -155,16 +734,18 @@ TypeDescItr::NextTypeDesc() const char * AttrDescriptor::AttrExprDefStr(SCLstring & s) const { + SCLstring buf; + s = Name (); s.Append (" : "); - if(_optional.asInt() == T) + if(_optional.asInt() == SCLLOG(LTrue)) s.Append( "OPTIONAL "); if(DomainType()) - s.Append (DomainType()->AttrTypeName()); + s.Append (DomainType()->AttrTypeName(buf)); return s.chars(); } -const BASE_TYPE +const PrimitiveType AttrDescriptor::BaseType() const { if(_domainType) @@ -178,7 +759,7 @@ AttrDescriptor::IsAggrType() const return ReferentType()->IsAggrType(); } -const BASE_TYPE +const PrimitiveType AttrDescriptor::AggrElemType() const { if(IsAggrType()) @@ -206,7 +787,7 @@ AttrDescriptor::NonRefTypeDescriptor() const return 0; } -const BASE_TYPE +const PrimitiveType AttrDescriptor::NonRefType() const { if(_domainType) @@ -214,7 +795,7 @@ AttrDescriptor::NonRefType() const return UNKNOWN_TYPE; } -const BASE_TYPE +const PrimitiveType AttrDescriptor::Type() const { if(_domainType) @@ -227,8 +808,10 @@ AttrDescriptor::Type() const const char * AttrDescriptor::TypeName() const { + SCLstring buf; + if(_domainType) - return _domainType->AttrTypeName(); + return _domainType->AttrTypeName(buf); else return ""; } @@ -238,7 +821,7 @@ const char * AttrDescriptor::ExpandedTypeName(SCLstring & s) const { s.set_null(); - if ((LOGICAL) Derived () == sdaiTRUE) s = "DERIVE "; + if (Derived() == SCLLOG(LTrue)) s = "DERIVE "; if(_domainType) { SCLstring tmp; @@ -248,27 +831,190 @@ AttrDescriptor::ExpandedTypeName(SCLstring & s) const return 0; } +const char * +AttrDescriptor::GenerateExpress (SCLstring &buf) const +{ + char tmp[BUFSIZ]; + SCLstring sstr; + buf = AttrExprDefStr(sstr); + buf.Append(";\n"); + +/* +// buf = ""; + buf.Append(StrToLower(Name(),tmp)); + buf.Append(" : "); + if(_optional == SCLLOG(LTrue)) { + buf.Append("OPTIONAL "); + } + buf.Append(TypeName()); + buf.Append(";\n"); +*/ + return buf.chars(); +} + /////////////////////////////////////////////////////////////////////////////// -// InverseAttrDescriptor functions +// Derived_attribute functions /////////////////////////////////////////////////////////////////////////////// +const char * +Derived_attribute::AttrExprDefStr(SCLstring & s) const +{ + SCLstring buf; + + s.set_null(); + if(Name() && strchr(Name(),'.')) + { + s = "SELF\\"; + } + s.Append(Name ()); + s.Append (" : "); +/* + if(_optional.asInt() == SCLLOG(LTrue)) + s.Append( "OPTIONAL "); +*/ + if(DomainType()) + s.Append (DomainType()->AttrTypeName(buf)); + if(_initializer) // this is supposed to exist for a derived attribute. + { + s.Append(" \n\t\t:= "); + s.Append(_initializer); + } + return s.chars(); +} + +/////////////////////////////////////////////////////////////////////////////// +// Inverse_attribute functions +/////////////////////////////////////////////////////////////////////////////// + +const char * +Inverse_attribute::AttrExprDefStr(SCLstring & s) const +{ + SCLstring buf; + + s = Name (); + s.Append (" : "); + if(_optional.asInt() == SCLLOG(LTrue)) + s.Append( "OPTIONAL "); + if(DomainType()) + s.Append (DomainType()->AttrTypeName(buf)); + s.Append(" FOR "); + s.Append(_inverted_attr_id); + return s.chars(); +} +/* +const char * +Inverse_attribute::GenerateExpress (SCLstring &buf) const +{ + char tmp[BUFSIZ]; + SCLstring sstr; + buf = AttrExprDefStr(sstr); + buf.Append(";\n"); + + return buf.chars(); +} +*/ + /////////////////////////////////////////////////////////////////////////////// // EnumDescriptor functions /////////////////////////////////////////////////////////////////////////////// -EnumTypeDescriptor::EnumTypeDescriptor (const char * nm, BASE_TYPE ft, +EnumTypeDescriptor::EnumTypeDescriptor (const char * nm, PrimitiveType ft, + Schema *origSchema, const char * d, EnumCreator f) -: TypeDescriptor (nm, ft, d), CreateNewEnum(f) +: TypeDescriptor (nm, ft, origSchema, d), CreateNewEnum(f) { } +#ifdef __OSTORE__ +SCLP23(Enum) * +EnumTypeDescriptor::CreateEnum(os_database *db) +{ + if(CreateNewEnum) + return CreateNewEnum(db); + else + return 0; +} +#else +SCLP23(Enum) * +EnumTypeDescriptor::CreateEnum() +{ + if(CreateNewEnum) + return CreateNewEnum(); + else + return 0; +} +#endif + +const char * +EnumTypeDescriptor::GenerateExpress (SCLstring &buf) const +{ + char tmp[BUFSIZ]; + buf = "TYPE "; + buf.Append(StrToLower(Name(),tmp)); + buf.Append(" = ENUMERATION OF \n ("); + const char *desc = Description(); + const char *ptr = &(desc[16]); + int count; + Where_rule_ptr wr; + int i; + int all_comments = 1; + + while(*ptr != '\0') + { + if( *ptr == ',') + { + buf.Append(",\n "); + } else if (isupper(*ptr)){ + buf.Append((char)tolower(*ptr)); + } else { + buf.Append(*ptr); + } + ptr++; + } + buf.Append(";\n"); +/////////////// + // count is # of WHERE rules + if(_where_rules != 0) + { + count = _where_rules->Count(); + for(i = 0; i < count; i++) // print out each UNIQUE rule + { + if( !(*(_where_rules))[i]->_label.is_undefined() ) + all_comments = 0; + } + + if(all_comments) + buf.Append(" (* WHERE *)\n"); + else + buf.Append(" WHERE\n"); + + for(i = 0; i < count; i++) // print out each WHERE rule + { + if( !(*(_where_rules))[i]->_comment.is_null() ) + { + buf.Append(" "); + buf.Append( (*(_where_rules))[i]->comment_() ); + } + if( !(*(_where_rules))[i]->_label.is_null() ) + { + buf.Append(" "); + buf.Append( (*(_where_rules))[i]->label_() ); + } + } + } + + buf.Append("END_TYPE;\n"); + return buf.chars(); +} + /////////////////////////////////////////////////////////////////////////////// // EntityDescriptor functions /////////////////////////////////////////////////////////////////////////////// -EntityDescriptor::EntityDescriptor ( ) : _abstractEntity("U") +EntityDescriptor::EntityDescriptor ( ) +: _abstractEntity(SCLLOG(LUnknown)), _extMapping(SCLLOG(LUnknown)), + _uniqueness_rules((Uniqueness_rule__set_var)0), NewSTEPentity(0) { - _originatingSchema = 0; // _derivedAttr = new StringAggregate; /* _subtypes = 0; @@ -279,19 +1025,21 @@ EntityDescriptor::EntityDescriptor ( ) : _abstractEntity("U") } EntityDescriptor::EntityDescriptor (const char * name, // i.e. char * - SchemaDescriptor *origSchema, - LOGICAL abstractEntity, // F U or T + Schema *origSchema, + SCLLOG(Logical) abstractEntity, // F U or T + SCLLOG(Logical) extMapping, Creator f /* EntityDescriptorList *subtypes, EntityDescriptorList *supertypes, AttrDescriptorList *explicitAttr, StringAggregate *derivedAttr, - InverseAttrDescriptorList *inverseAttr + Inverse_attributeList *inverseAttr */ ) -: TypeDescriptor (name, ENTITY_TYPE, name), _originatingSchema (origSchema), - _abstractEntity(abstractEntity), NewSTEPentity(f) +: TypeDescriptor (name, ENTITY_TYPE, origSchema, name), + _abstractEntity(abstractEntity), _extMapping(extMapping), + _uniqueness_rules((Uniqueness_rule__set_var)0), NewSTEPentity(f) { /* _subtypes = subtypes; @@ -304,6 +1052,204 @@ EntityDescriptor::EntityDescriptor (const char * name, // i.e. char * EntityDescriptor::~EntityDescriptor () { + delete _uniqueness_rules; +} + +const char * +EntityDescriptor::GenerateExpress (SCLstring &buf) const +{ + char tmp[BUFSIZ]; + SCLstring sstr; + int count; + Where_rule_ptr wr; + int i; + int all_comments = 1; + + buf = "ENTITY "; + buf.Append(StrToLower(Name(),sstr)); + + if(strlen(_supertype_stmt.chars()) > 0) + buf.Append("\n "); + buf.Append(_supertype_stmt.chars()); + + const EntityDescriptor * ed = 0; +/* + EntityDescItr edi_sub(_subtypes); + edi_sub.ResetItr(); + ed = edi_sub.NextEntityDesc(); + int subtypes = 0; + if(ed) { + buf.Append("\n SUPERTYPE OF (ONEOF("); + buf.Append(StrToLower(ed->Name(),sstr)); + subtypes = 1; + } + ed = edi_sub.NextEntityDesc(); + while (ed) { + buf.Append(",\n\t\t"); + buf.Append(StrToLower(ed->Name(),sstr)); + ed = edi_sub.NextEntityDesc(); + } + if(subtypes) { + buf.Append("))"); + } +*/ + + EntityDescItr edi_super(_supertypes); + edi_super.ResetItr(); + ed = edi_super.NextEntityDesc(); + int supertypes = 0; + if(ed) { + buf.Append("\n SUBTYPE OF ("); + buf.Append(StrToLower(ed->Name(),sstr)); + supertypes = 1; + } + ed = edi_super.NextEntityDesc(); + while (ed) { + buf.Append(",\n\t\t"); + buf.Append(StrToLower(ed->Name(),sstr)); + ed = edi_super.NextEntityDesc(); + } + if(supertypes) { + buf.Append(")"); + } + + buf.Append(";\n"); + + AttrDescItr adi(_explicitAttr); + + adi.ResetItr(); + const AttrDescriptor *ad = adi.NextAttrDesc(); + + while (ad) { + if(ad->AttrType() == AttrType_Explicit) + { + buf.Append(" "); + buf.Append(ad->GenerateExpress(sstr)); + } + ad = adi.NextAttrDesc(); + } + + adi.ResetItr(); + ad = adi.NextAttrDesc(); + + count = 1; + while (ad) { + if(ad->AttrType() == AttrType_Deriving) + { + if(count == 1) + buf.Append(" DERIVE\n"); + buf.Append(" "); + buf.Append(ad->GenerateExpress(sstr)); + count++; + } + ad = adi.NextAttrDesc(); + } +///////// + + InverseAItr iai(_inverseAttr); +// const char * AttrTypeName( SCLstring &buf, const char *schnm =NULL ) const; + + iai.ResetItr(); + const Inverse_attribute *ia = iai.NextInverse_attribute(); + + if(ia) + buf.Append(" INVERSE\n"); + + while (ia) { + buf.Append(" "); + buf.Append(ia->GenerateExpress(sstr)); + ia = iai.NextInverse_attribute(); + } +/////////////// + // count is # of UNIQUE rules + if(_uniqueness_rules != 0) + { + count = _uniqueness_rules->Count(); + for(i = 0; i < count; i++) // print out each UNIQUE rule + { + if( !(*(_uniqueness_rules))[i]->_label.is_undefined() ) + all_comments = 0; + } + + if(all_comments) + buf.Append(" (* UNIQUE *)\n"); + else + buf.Append(" UNIQUE\n"); + for(i = 0; i < count; i++) // print out each UNIQUE rule + { + if( !(*(_uniqueness_rules))[i]->_comment.is_null() ) + { + buf.Append(" "); + buf.Append( (*(_uniqueness_rules))[i]->comment_() ); + buf.Append("\n"); + } + if( !(*(_uniqueness_rules))[i]->_label.is_null() ) + { + buf.Append(" "); + buf.Append( (*(_uniqueness_rules))[i]->label_() ); + buf.Append("\n"); + } + } + } + +/////////////// + // count is # of WHERE rules + if(_where_rules != 0) + { + all_comments = 1; + count = _where_rules->Count(); + for(i = 0; i < count; i++) // print out each UNIQUE rule + { + if( !(*(_where_rules))[i]->_label.is_undefined() ) + all_comments = 0; + } + + if(!all_comments) + buf.Append(" WHERE\n"); + else + buf.Append(" (* WHERE *)\n"); + for(i = 0; i < count; i++) // print out each WHERE rule + { + if( !(*(_where_rules))[i]->_comment.is_null() ) + { + buf.Append(" "); + buf.Append( (*(_where_rules))[i]->comment_() ); + buf.Append("\n"); + } + if( !(*(_where_rules))[i]->_label.is_null() ) + { + buf.Append(" "); + buf.Append( (*(_where_rules))[i]->label_() ); + buf.Append("\n"); + } + } + } + + buf.Append("END_ENTITY;\n"); + + return buf.chars(); +} + +const char * +EntityDescriptor::QualifiedName(SCLstring &s) const +{ + s.set_null(); + EntityDescItr edi(_supertypes); + + int count = 1; + const EntityDescriptor * ed = 0; + while(ed = edi.NextEntityDesc()) + { + if(count > 1) + { + s.Append("&"); + } + s.Append(ed->Name()); + count++; + } + if(count > 1) s.Append("&"); + s.Append(Name()); + return s.chars(); } const TypeDescriptor * @@ -327,6 +1273,7 @@ EntityDescriptor::IsA (const EntityDescriptor * other) const { } return found; } + /* EntityDescriptor::FindLongestAttribute() { @@ -350,10 +1297,447 @@ EntityDescriptor::FindLongestAttribute() } } */ + +Type_or_rule::Type_or_rule() +{ +} + +Type_or_rule::Type_or_rule(const Type_or_rule&tor) +{ +} + +Type_or_rule::~Type_or_rule() +{ +} + + +Where_rule::Where_rule() +{ + _type_or_rule = 0; +} + + +Where_rule::Where_rule(const Where_rule& wr) +{ + _label = wr._label; + _type_or_rule = wr._type_or_rule; +} + +Where_rule::~Where_rule() +{ +} + +/////////////////////////////////////////////////////////////////////////////// + +Where_rule__list::Where_rule__list (int defaultSize) { + _bufsize = defaultSize; + _buf = new Where_rule_ptr[_bufsize]; + _count = 0; +} + +Where_rule__list::~Where_rule__list () { delete _buf; } + +void Where_rule__list::Check (int index) { + Where_rule_ptr* newbuf; + + if (index >= _bufsize) { + _bufsize = (index+1) * 2; + newbuf = new Where_rule_ptr[_bufsize]; + memmove(newbuf, _buf, _count*sizeof(Where_rule_ptr)); + delete _buf; + _buf = newbuf; + } +} + +void Where_rule__list::Insert (Where_rule_ptr v, int index) { + Where_rule_ptr* spot; + index = (index < 0) ? _count : index; + + if (index < _count) { + Check(_count+1); + spot = &_buf[index]; + memmove(spot+1, spot, (_count - index)*sizeof(Where_rule_ptr)); + + } else { + Check(index); + spot = &_buf[index]; + } + *spot = v; + ++_count; +} + +void Where_rule__list::Append (Where_rule_ptr v) { + int index = _count; + Where_rule_ptr* spot; + + if (index < _count) { + Check(_count+1); + spot = &_buf[index]; + memmove(spot+1, spot, (_count - index)*sizeof(Where_rule_ptr)); + + } else { + Check(index); + spot = &_buf[index]; + } + *spot = v; + ++_count; +} + +void Where_rule__list::Remove (int index) { + if (0 <= index && index < _count) { + --_count; + Where_rule_ptr* spot = &_buf[index]; + memmove(spot, spot+1, (_count - index)*sizeof(Where_rule_ptr)); + } +} + +int Where_rule__list::Index (Where_rule_ptr v) { + for (int i = 0; i < _count; ++i) { + if (_buf[i] == v) { + return i; + } + } + return -1; +} + +Where_rule_ptr& Where_rule__list::operator[] (int index) { + Check(index); +// _count = G4std::max(_count, index+1); + _count = ( (_count > index+1) ? _count : (index+1) ); + return _buf[index]; +} + +int +Where_rule__list::Count() +{ + return _count; +} + +void +Where_rule__list::Clear() +{ + _count = 0; +} + +/////////////////////////////////////////////////////////////////////////////// + +Uniqueness_rule::Uniqueness_rule() +: _parent_entity(0) +{ +} + + +Uniqueness_rule::Uniqueness_rule(const Uniqueness_rule& ur) +{ + _label = ur._label; + _parent_entity = ur._parent_entity; +} + +Uniqueness_rule::~Uniqueness_rule() +{ + // don't delete _parent_entity +} + +/////////////////////////////////////////////////////////////////////////////// + +Uniqueness_rule__set::Uniqueness_rule__set (int defaultSize) { + _bufsize = defaultSize; + _buf = new Uniqueness_rule_ptr[_bufsize]; + _count = 0; +} + +Uniqueness_rule__set::~Uniqueness_rule__set () { delete _buf; } + +void Uniqueness_rule__set::Check (int index) { + Uniqueness_rule_ptr* newbuf; + + if (index >= _bufsize) { + _bufsize = (index+1) * 2; + newbuf = new Uniqueness_rule_ptr[_bufsize]; + memmove(newbuf, _buf, _count*sizeof(Uniqueness_rule_ptr)); + delete _buf; + _buf = newbuf; + } +} + +void Uniqueness_rule__set::Insert (Uniqueness_rule_ptr v, int index) { + Uniqueness_rule_ptr* spot; + index = (index < 0) ? _count : index; + + if (index < _count) { + Check(_count+1); + spot = &_buf[index]; + memmove(spot+1, spot, (_count - index)*sizeof(Uniqueness_rule_ptr)); + + } else { + Check(index); + spot = &_buf[index]; + } + *spot = v; + ++_count; +} + +void Uniqueness_rule__set::Append (Uniqueness_rule_ptr v) { + int index = _count; + Uniqueness_rule_ptr* spot; + + if (index < _count) { + Check(_count+1); + spot = &_buf[index]; + memmove(spot+1, spot, (_count - index)*sizeof(Uniqueness_rule_ptr)); + + } else { + Check(index); + spot = &_buf[index]; + } + *spot = v; + ++_count; +} + +void Uniqueness_rule__set::Remove (int index) { + if (0 <= index && index < _count) { + --_count; + Uniqueness_rule_ptr* spot = &_buf[index]; + memmove(spot, spot+1, (_count - index)*sizeof(Uniqueness_rule_ptr)); + } +} + +int Uniqueness_rule__set::Index (Uniqueness_rule_ptr v) { + for (int i = 0; i < _count; ++i) { + if (_buf[i] == v) { + return i; + } + } + return -1; +} + +Uniqueness_rule_ptr& Uniqueness_rule__set::operator[] (int index) { + Check(index); +// _count = G4std::max(_count, index+1); + _count = ( (_count > index+1) ? _count : (index+1) ); + return _buf[index]; +} + +int +Uniqueness_rule__set::Count() +{ + return _count; +} + +void +Uniqueness_rule__set::Clear() +{ + _count = 0; +} + +/////////////////////////////////////////////////////////////////////////////// + +Global_rule::Global_rule() +: _entities(0), _where_rules(0), _parent_schema(0) +{ +} + +Global_rule::Global_rule(const char *n, Schema_ptr parent_sch, const char * rt) +: _name(n), _entities(0), _where_rules(0), _parent_schema(parent_sch), + _rule_text(rt) +{ +} + +// not fully implemented +Global_rule::Global_rule(Global_rule& gr) +{ + _name = gr._name; + _parent_schema = gr._parent_schema; +} + +Global_rule::~Global_rule() +{ + delete _entities; + delete _where_rules; +} + +void +Global_rule::entities_(const Entity__set_var &e) +{ +} + +void +Global_rule::where_rules_(const Where_rule__list_var &wrl) +{ +} + +/////////////////////////////////////////////////////////////////////////////// + +Global_rule__set::Global_rule__set (int defaultSize) { + _bufsize = defaultSize; + _buf = new Global_rule_ptr[_bufsize]; + _count = 0; +} + +Global_rule__set::~Global_rule__set () { delete _buf; } + +void Global_rule__set::Check (int index) { + Global_rule_ptr* newbuf; + + if (index >= _bufsize) { + _bufsize = (index+1) * 2; + newbuf = new Global_rule_ptr[_bufsize]; + memmove(newbuf, _buf, _count*sizeof(Global_rule_ptr)); + delete _buf; + _buf = newbuf; + } +} + +void Global_rule__set::Insert (Global_rule_ptr v, int index) { + Global_rule_ptr* spot; + index = (index < 0) ? _count : index; + + if (index < _count) { + Check(_count+1); + spot = &_buf[index]; + memmove(spot+1, spot, (_count - index)*sizeof(Global_rule_ptr)); + + } else { + Check(index); + spot = &_buf[index]; + } + *spot = v; + ++_count; +} + +void Global_rule__set::Append (Global_rule_ptr v) { + int index = _count; + Global_rule_ptr* spot; + + if (index < _count) { + Check(_count+1); + spot = &_buf[index]; + memmove(spot+1, spot, (_count - index)*sizeof(Global_rule_ptr)); + + } else { + Check(index); + spot = &_buf[index]; + } + *spot = v; + ++_count; +} + +void Global_rule__set::Remove (int index) { + if (0 <= index && index < _count) { + --_count; + Global_rule_ptr* spot = &_buf[index]; + memmove(spot, spot+1, (_count - index)*sizeof(Global_rule_ptr)); + } +} + +int Global_rule__set::Index (Global_rule_ptr v) { + for (int i = 0; i < _count; ++i) { + if (_buf[i] == v) { + return i; + } + } + return -1; +} + +Global_rule_ptr& Global_rule__set::operator[] (int index) { + Check(index); +// _count = G4std::max(_count, index+1); + _count = ( (_count > index+1) ? _count : (index+1) ); + return _buf[index]; +} + +int +Global_rule__set::Count() +{ + return _count; +} + +void +Global_rule__set::Clear() +{ + _count = 0; +} + + /////////////////////////////////////////////////////////////////////////////// // TypeDescriptor functions /////////////////////////////////////////////////////////////////////////////// +const char * +TypeDescriptor::AttrTypeName(SCLstring &buf, const char *schnm ) const +{ + SCLstring sstr; + buf = Name(schnm) ? StrToLower(Name(schnm),sstr) : _description; + return buf.chars(); +} + +const char * +TypeDescriptor::GenerateExpress (SCLstring &buf) const +{ + char tmp[BUFSIZ]; + buf = "TYPE "; + buf.Append(StrToLower(Name(),tmp)); + buf.Append(" = "); + const char *desc = Description(); + const char *ptr = desc; + int count; + Where_rule_ptr wr; + int i; + int all_comments = 1; + + while(*ptr != '\0') + { + if( *ptr == ',') + { + buf.Append(",\n "); + } else if( *ptr == '(') { + buf.Append("\n ("); + } else if (isupper(*ptr)){ + buf.Append((char)tolower(*ptr)); + } else { + buf.Append(*ptr); + } + ptr++; + } + buf.Append(";\n"); +/////////////// + // count is # of WHERE rules + if(_where_rules != 0) + { + count = _where_rules->Count(); + for(i = 0; i < count; i++) // print out each UNIQUE rule + { + if( !(*(_where_rules))[i]->_label.is_undefined() ) + all_comments = 0; + } + + if(all_comments) + buf.Append(" (* WHERE *)\n"); + else + buf.Append(" WHERE\n"); + + for(i = 0; i < count; i++) // print out each WHERE rule + { + if( !(*(_where_rules))[i]->_comment.is_null() ) + { + buf.Append(" "); + buf.Append( (*(_where_rules))[i]->comment_() ); + } + if( !(*(_where_rules))[i]->_label.is_null() ) + { + buf.Append(" "); + buf.Append( (*(_where_rules))[i]->label_() ); + } + } + } + + buf.Append("END_TYPE;\n"); + return buf.chars(); + +// buf.Append(Description()); +// buf.Append("\nEND_TYPE;\n"); +} + /////////////////////////////////////////////////////////////////////// // This is a fully expanded description of the type. // This returns a string like the _description member variable @@ -522,7 +1906,6 @@ TypeDescriptor::TypeString(SCLstring & s) const } */ - const TypeDescriptor * TypeDescriptor::IsA (const TypeDescriptor * other) const { if (this == other) return other; @@ -532,13 +1915,14 @@ TypeDescriptor::IsA (const TypeDescriptor * other) const { const TypeDescriptor * TypeDescriptor::IsA (const char * other) const { if (!Name()) return 0; - if (!strcmp (Name (), PrettyTmpName (other))) // this is the type - return this; + if ( !StrCmpIns( _name, other ) ) { // this is the type + return this; + } return (ReferentType () ? ReferentType () -> IsA (other) : 0); } /////////////////////////////////////////////////////////////////////// - // the first BASE_TYPE that is not REFERENCE_TYPE (the first + // the first PrimitiveType that is not REFERENCE_TYPE (the first // TypeDescriptor *_referentType that does not have REFERENCE_TYPE // for it's fundamentalType variable). This would return the same // as BaseType() for fundamental types. An aggregate type @@ -547,7 +1931,7 @@ TypeDescriptor::IsA (const char * other) const { // would work the same? /////////////////////////////////////////////////////////////////////// -const BASE_TYPE +const PrimitiveType TypeDescriptor::NonRefType() const { const TypeDescriptor *td = NonRefTypeDescriptor(); @@ -572,11 +1956,13 @@ TypeDescriptor::NonRefTypeDescriptor() const } /////////////////////////////////////////////////////////////////////// - // This returns the BASE_TYPE of the first non-aggregate element of + // This returns the PrimitiveType of the first non-aggregate element of // an aggregate /////////////////////////////////////////////////////////////////////// -TypeDescriptor::IsAggrType() const +// Added 'int' return type - GC + +int TypeDescriptor::IsAggrType() const { switch(NonRefType()) { @@ -592,7 +1978,7 @@ TypeDescriptor::IsAggrType() const } } -const BASE_TYPE +const PrimitiveType TypeDescriptor::AggrElemType() const { const TypeDescriptor *aggrElemTD = AggrElemTypeDescriptor(); @@ -620,13 +2006,13 @@ TypeDescriptor::AggrElemTypeDescriptor() const // TYPE count = INTEGER; // TYPE ref_count = count; // TYPE count_set = SET OF ref_count; - // each of the above will Generate a TypeDescriptor and for - // each one, BASE_TYPE BaseType() will return INTEGER_TYPE + // each of the above will generate a TypeDescriptor and for + // each one, PrimitiveType BaseType() will return INTEGER_TYPE // TypeDescriptor *BaseTypeDescriptor() returns the TypeDescriptor // for Integer //////////////////////////////////////////////////////////// -const BASE_TYPE +const PrimitiveType TypeDescriptor::BaseType() const { const TypeDescriptor *td = BaseTypeDescriptor(); @@ -656,20 +2042,106 @@ EnumerationTypeDescriptor::EnumerationTypeDescriptor( ) /////////////////////////////////////////////////////////////////////////////// // SelectTypeDescriptor functions /////////////////////////////////////////////////////////////////////////////// + +#ifdef __OSTORE__ +SCLP23(Select) * +SelectTypeDescriptor::CreateSelect(os_database *db) +{ + if(CreateNewSelect) + return CreateNewSelect(db); + else + return 0; +} +#else +SCLP23(Select) * +SelectTypeDescriptor::CreateSelect() +{ + if(CreateNewSelect) + return CreateNewSelect(); + else + return 0; +} +#endif + const TypeDescriptor * SelectTypeDescriptor::IsA (const TypeDescriptor * other) const { return TypeDescriptor::IsA (other); } +// returns the td among the choices of tds describing elements of this select +// type but only at this unexpanded level. The td ultimately describing the +// type may be an element of a td for a select that is returned. + const TypeDescriptor * SelectTypeDescriptor::CanBe (const TypeDescriptor * other) const { - const TypeDescriptor * found =0; +// const TypeDescriptor * found =0; TypeDescItr elements (GetElements()) ; const TypeDescriptor * td =0; if (this == other) return other; while (td = elements.NextTypeDesc ()) { - if (found = (td -> CanBe (other))) return found; +// if (found = (td -> CanBe (other))) return found; + if (td -> CanBe (other)) return td; + } + return 0; +} + +// returns the td among the choices of tds describing elements of this select +// type but only at this unexpanded level. The td ultimately describing the +// type may be an element of a td for a select that is returned. + +const TypeDescriptor * +SelectTypeDescriptor::CanBe (const char * other) const +{ + const TypeDescriptor * found =0; + TypeDescItr elements (GetElements()) ; + const TypeDescriptor * td =0; + + // see if other is the select + if ( !StrCmpIns( _name, other ) ) + return this; + + // see if other is one of the elements + while (td = elements.NextTypeDesc ()) { + if (td -> CanBe (other)) return td; +// if (found = (td -> CanBe (other))) return found; + } + return 0; +} + +// A modified CanBe, used to determine if "other", a string we have just read, +// is a possible type-choice of this. (I.e., our select "CanBeSet" to this +// choice.) This deals with the following issue, based on the Tech Corrigendum +// to Part 21: Say our select ("selP") has an item which is itself a select +// ("selQ"). Say it has another select item which is a redefinition of another +// select ("TYPE selR = selS;"). According to the T.C., if selP is set to one +// of the members of selQ, "selQ(...)" may not appear in the instantiation. +// If, however, selP is set to a member of selR, "selR(...)" must appear first. +// The code below checks if "other" = one of our possible choices. If one of +// our choices is a select like selQ, we recurse to see if other matches a +// member of selQ (and don't look for "selQ"). If we have a choice like selR, +// we check if other = "selR", but do not look at selR's members. This func- +// tion also takes into account schNm, the name of the current schema. If +// schNm does not = the schema in which this type was declared, it's possible +// that it should be referred to with a different name. This would be the case +// if schNm = a schema which USEs or REFERENCEs this and renames it (e.g., "USE +// from XX (A as B)"). + +const TypeDescriptor * +SelectTypeDescriptor::CanBeSet (const char * other, const char *schNm) const +{ + TypeDescItr elements (GetElements()) ; + const TypeDescriptor * td =0; + + while (td = elements.NextTypeDesc ()) { + if ( td->Type() == REFERENCE_TYPE && td->NonRefType() == sdaiSELECT ) { + // Just look at this level, don't look at my items (see intro). + if ( td->CurrName( other, schNm ) ) { + return td; + } + } else if ( td->CanBeSet( other, schNm ) ) { + return td; + } } return 0; } @@ -678,18 +2150,39 @@ SelectTypeDescriptor::CanBe (const TypeDescriptor * other) const // AggrTypeDescriptor functions /////////////////////////////////////////////////////////////////////////////// +#ifdef __OSTORE__ +STEPaggregate * +AggrTypeDescriptor::CreateAggregate(os_database *db) +{ + if(CreateNewAggr) + return CreateNewAggr(db); + else + return 0; +} +#else +STEPaggregate * +AggrTypeDescriptor::CreateAggregate() +{ + if(CreateNewAggr) + return CreateNewAggr(); + else + return 0; +} +#endif + + AggrTypeDescriptor::AggrTypeDescriptor( ) : - _uniqueElements("UNKNOWN_TYPE") + _uniqueElements((char*)("UNKNOWN_TYPE")) { _bound1 = -1; _bound2 = -1; _aggrDomainType = 0; } -AggrTypeDescriptor::AggrTypeDescriptor(SdaiInteger b1, - SdaiInteger b2, - LOGICAL uniqElem, - TypeDescriptor *aggrDomType) +AggrTypeDescriptor::AggrTypeDescriptor(SCLP23(Integer) b1, + SCLP23(Integer) b2, + SCLLOG(Logical) uniqElem, + TypeDescriptor *aggrDomType) : _bound1(b1), _bound2(b2), _uniqueElements(uniqElem) { _aggrDomainType = aggrDomType; diff --git a/source/geometry/solids/STEP/src/ExpDict_inline.cc b/source/geometry/solids/STEP/src/ExpDict_inline.cc index 2cb4291ae0..482fefdca1 100644 --- a/source/geometry/solids/STEP/src/ExpDict_inline.cc +++ b/source/geometry/solids/STEP/src/ExpDict_inline.cc @@ -1,18 +1,8 @@ - -// - - - -// -// $Id: ExpDict_inline.cc,v 1.2 1999/05/21 20:20:48 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - /* * NIST STEP Core Class Library * clstepcore/ExpDict.inline.cc -* May 1995 +* April 1997 * K. C. Morris * David Sauder @@ -20,26 +10,274 @@ * and is not subject to copyright. */ -/* */ +/* $Id: ExpDict_inline.cc,v 1.3 2000/01/21 13:42:50 gcosmo Exp $ */ #include +Dictionary_instance::~Dictionary_instance() +{} + + +Schema::Schema (const char *schemaName) + : _use_interface_list(new Interface_spec__set), + _ref_interface_list(new Interface_spec__set), + _function_list(0), _procedure_list(0), _global_rules(0) +{ + _name = schemaName; +} + +Schema::~Schema () +{ + if(_use_interface_list != 0) + delete _use_interface_list; + if(_ref_interface_list != 0) + delete _ref_interface_list; + if(_function_list != 0) + delete _function_list; + if(_procedure_list != 0) + delete _procedure_list; + if(_global_rules != 0) + delete _global_rules; +} + +Interfaced_item::Interfaced_item() +{ +} + +Interfaced_item::Interfaced_item(const Interfaced_item &ii) +{ + _foreign_schema = ii._foreign_schema; +} + +Interfaced_item::Interfaced_item(const char *foreign_schema) +: _foreign_schema(foreign_schema) +{ +} + +Interfaced_item::~Interfaced_item() +{ +} + +const Express_id +Interfaced_item::foreign_schema_() +{ + return _foreign_schema; +} + +void +Interfaced_item::foreign_schema_(const Express_id& fs) +{ + _foreign_schema = fs; +} + +Explicit_item_id::Explicit_item_id() +{ + _local_definition = 0; +} + +Explicit_item_id::Explicit_item_id(const Explicit_item_id& eii) +: Interfaced_item(eii) +{ + _local_definition = eii._local_definition; + _original_id = eii._original_id; + _new_id = eii._new_id; +} + +Explicit_item_id::~Explicit_item_id() +{ + _local_definition = 0; +} + +Used_item::~Used_item() +{ +} + +Referenced_item::~Referenced_item() +{ +} + +Implicit_item_id::Implicit_item_id() +{ + _local_definition = 0; +} + +Implicit_item_id::Implicit_item_id(Implicit_item_id& iii) +: Interfaced_item(iii) +{ + _local_definition = iii._local_definition; +} + +Implicit_item_id::~Implicit_item_id() +{ + _local_definition = 0; +} + +EntityDescLinkNode::EntityDescLinkNode() +{ + _entityDesc = 0; +} + +EntityDescLinkNode::~EntityDescLinkNode() +{ +} + +EntityDescriptorList::EntityDescriptorList() +{ +} + +EntityDescriptorList::~EntityDescriptorList() +{ +} + +EntityDescItr::EntityDescItr(const EntityDescriptorList &edList) : edl(edList) +{ + cur = (EntityDescLinkNode *)( edl.GetHead() ); +} +EntityDescItr::~EntityDescItr() +{ +} + +AttrDescLinkNode::AttrDescLinkNode() +{ + _attrDesc = 0; +} + +AttrDescLinkNode::~AttrDescLinkNode() +{ +} + +AttrDescItr::AttrDescItr(const AttrDescriptorList &adList) : adl(adList) +{ + cur = (AttrDescLinkNode *)( adl.GetHead() ); +} + +AttrDescItr::~AttrDescItr() +{ +} + +Inverse_attributeLinkNode::Inverse_attributeLinkNode() +{ + _invAttr = 0; +} + +Inverse_attributeLinkNode::~Inverse_attributeLinkNode() +{ +} + +Inverse_attributeList::Inverse_attributeList() +{ +} + +Inverse_attributeList::~Inverse_attributeList() +{ +} + +Inverse_attributeLinkNode * +Inverse_attributeList::AddNode (Inverse_attribute * ad) +{ + Inverse_attributeLinkNode *node = (Inverse_attributeLinkNode *) NewNode(); + node->Inverse_attr(ad); + SingleLinkList::AppendNode(node); + return node; +} + +InverseAItr::InverseAItr (const Inverse_attributeList &iaList) + : ial(iaList) +{ + cur = (Inverse_attributeLinkNode *)( ial.GetHead() ); +} + +InverseAItr::~InverseAItr() +{ +} + +TypeDescLinkNode::TypeDescLinkNode() +{ + _typeDesc = 0; +} + +TypeDescLinkNode::~TypeDescLinkNode() +{ +} + +TypeDescriptorList::TypeDescriptorList() +{ +} + +TypeDescriptorList::~TypeDescriptorList() +{ +} + +TypeDescItr::TypeDescItr (const TypeDescriptorList &tdList) : tdl(tdList) +{ + cur = (TypeDescLinkNode *)( tdl.GetHead() ); +} + +TypeDescItr::~TypeDescItr() +{ +} + /////////////////////////////////////////////////////////////////////////////// // TypeDescriptor functions /////////////////////////////////////////////////////////////////////////////// +AttrDescriptorList::AttrDescriptorList() +{ +} + +AttrDescriptorList::~AttrDescriptorList() +{ +} + +AttrDescLinkNode * +AttrDescriptorList::AddNode (AttrDescriptor * ad) +{ + AttrDescLinkNode *node = (AttrDescLinkNode *) NewNode(); + node->AttrDesc(ad); + SingleLinkList::AppendNode(node); + return node; +} TypeDescriptor::TypeDescriptor( ) -: _name (0), _fundamentalType(UNKNOWN_TYPE), _referentType (0), _description (0) +: _name (0), altNames(0), _fundamentalType(UNKNOWN_TYPE), + _originatingSchema(0), _referentType (0), _description (0), _where_rules(0) { } TypeDescriptor::TypeDescriptor -(const char * nm, BASE_TYPE ft, const char * d ) -: _name (nm), _fundamentalType (ft), _referentType (0), _description (d) +(const char * nm, PrimitiveType ft, Schema *origSchema, + const char * d) +: _name (nm), altNames (0), _fundamentalType (ft), + _originatingSchema(origSchema), _referentType (0), _description (d), + _where_rules(0) + { } +const char * +TypeDescriptor::Name( const char *schnm ) const + /* + * Determines the current name of this. Normally, this is simply _name. + * If "schnm" is set to a value, however, then this function becomes a + * request for our name when referenced by schnm. (This will be diff from + * our original name if schnm USEs or REFERENCEs us and renames us (e.g., + * "USE (xx as yy)").) In such a case, this function searches through our + * altNames list to see if schema schnm refers to us with a different name + * and returns the new name if found. (See header comments to function + * SchRename::rename().) + */ +{ + if ( !schnm ) { + return _name; + } + if ( altNames && altNames->rename( schnm, (char *)_altname ) ) { + // If our altNames list has an alternate for schnm, copy it into + // _altname, and return it: + return _altname; + } + return _name; +} + const char * TypeDescriptor::BaseTypeName () const { @@ -60,18 +298,132 @@ TypeDescriptor::BaseTypeIsA (const TypeDescriptor * td) const } +int +TypeDescriptor::CurrName(const char *other, const char *schNm) const + /* + * Check if our "current" name = other. CurrName may be different from + * _name if schNm tells us the current schema is a different one from the + * one in which we're defined. If so, we may have an alternate name for + * that schema (it may be listed in our altNames list). This would be the + * case if schNm USEs or REFERENCEs type and renames it in the process + * (e.g., "USE (X as Y)". + */ +{ + if ( !schNm || *schNm == '\0' ) { + // If there's no current schema, accept any possible name of this. + // (I.e., accept its actual name or any substitute): + return ( PossName( other ) ); + } + if ( altNames && altNames->rename( schNm, (char *)_altname ) ) { + // If we have a different name when the current schema = schNm, then + // other better = the alt name. + return ( !StrCmpIns( _altname, other ) ); + } else { + // If we have no desginated alternate name when the current schema = + // schNm, other must = our _name. + return ( OurName( other ) ); + } +} + +int +TypeDescriptor::PossName( const char *nm ) const + /* + * return TRUE if nm is either our name or one of the possible alternates. + */ +{ + return ( OurName( nm ) || AltName( nm ) ); +} + +int +TypeDescriptor::OurName( const char *nm ) const +{ + return !StrCmpIns( nm, _name ); +} + +int +TypeDescriptor::AltName( const char *nm ) const +{ + if ( altNames ) { + return ( altNames->choice( nm ) ); + } + return 0; +} + +void +TypeDescriptor::addAltName( const char *schnm, const char *newnm ) + /* + * Creates a SchRename consisting of schnm & newnm. Places it in alphabe- + * tical order in this's altNames list. + */ +{ + SchRename *newpair = new SchRename( schnm, newnm ), + *node = (SchRename *)altNames, *prev = NULL; + + while ( node && *node < *newpair ) { + prev = node; + node = node->next; + } + newpair->next = node; // node may = NULL + if ( prev ) { + // Will be the case if new node should not be first (and above while + // loop was entered). + prev->next = newpair; + } else { + // put newpair first + altNames = newpair; + } +} + +int +SchRename::choice( const char *nm ) const + /* + * See if nm = one of our choices (either ours or that of a SchRename + * later in the list. + */ +{ + if ( !StrCmpIns( nm, newName ) ) { + return 1; + } + if ( next ) { + return ( next->choice( nm ) ); + } + return 0; +} + +char * +SchRename::rename( const char *schnm, char *newnm ) const + /* + * Check if this SchRename represents the rename of its owning TypeDesc for + * schema schnm. (This will be the case if schnm = schName.) If so, the + * new name is returned and copied into newnm. If not, ::rename is called + * on next. Thus, this function will tell us if this or any later SchRe- + * name in this list provide a new name for TypeDesc for schema schnm. + */ +{ + if ( !StrCmpIns( schnm, schName ) ) { + strcpy( newnm, newName ); + return newnm; + } + if ( next ) { + return ( next->rename( schnm, newnm ) ); + } + return NULL; +} + /////////////////////////////////////////////////////////////////////////////// // AttrDescriptor functions /////////////////////////////////////////////////////////////////////////////// AttrDescriptor::AttrDescriptor( - const char * name, // i.e. char * + const char * name, // i.e. char * const TypeDescriptor *domainType, - LOGICAL optional, // i.e. F U or T - LOGICAL unique, // i.e. F U or T - LOGICAL derived, // i.e. F U or T + SCLLOG(Logical) optional, // i.e. F U or T + SCLLOG(Logical) unique, // i.e. F U or T + AttrType_Enum at, // AttrType_Explicit,AttrType_Inverse, + // AttrType_Deriving,AttrType_Redefining const EntityDescriptor & owner ) -: _name (name), _domainType (domainType), _optional(optional), _unique(unique), _derived (derived), + : _name (name), _domainType (domainType), _optional(optional), + _unique(unique), _attrType (at), #ifdef __O3DB__ _owner (&owner) @@ -82,4 +434,85 @@ _owner ((EntityDescriptor&)owner) { } -AttrDescriptor::~AttrDescriptor () { } +AttrDescriptor::~AttrDescriptor () +{ } + +SCLLOG(Logical) +AttrDescriptor::Explicit() const +{ + if(_attrType == AttrType_Explicit) + return SCLLOG(LTrue); + return SCLLOG(LFalse); +} + +SCLLOG(Logical) +AttrDescriptor::Inverse() const +{ + if(_attrType == AttrType_Inverse) + return SCLLOG(LTrue); + return SCLLOG(LFalse); +} + +SCLLOG(Logical) +AttrDescriptor::Redefining() const +{ + if(_attrType == AttrType_Redefining) + return SCLLOG(LTrue); + return SCLLOG(LFalse); +} + +SCLLOG(Logical) +AttrDescriptor::Deriving() const +{ + if(_attrType == AttrType_Deriving) + return SCLLOG(LTrue); + return SCLLOG(LFalse); +} + +// outdated function +void +AttrDescriptor::Derived (SCLP23(LOGICAL) x) +{ + if(x.asInt()) + _attrType = AttrType_Deriving; + else + _attrType = AttrType_Explicit; +} + +// outdated function +void +AttrDescriptor::Derived (SCLLOG(Logical) x) +{ + if(x == SCLLOG(LTrue)) + _attrType = AttrType_Deriving; + else + _attrType = AttrType_Explicit; +} + +// outdated function +void +AttrDescriptor::Derived (const char *x) +{ + if( !strcmp(x, "LTrue") || !strcmp(x, "T") ) + _attrType = AttrType_Deriving; + else + _attrType = AttrType_Explicit; +} + + +Derived_attribute::Derived_attribute( + const char * name, // i.e. char * + const TypeDescriptor *domainType, + SCLLOG(Logical) optional, // i.e. F U or T + SCLLOG(Logical) unique, // i.e. F U or T + AttrType_Enum at, // AttrType_Explicit,AttrType_Inverse, + // AttrType_Deriving,AttrType_Redefining + const EntityDescriptor & owner ) +: AttrDescriptor(name, domainType, optional, unique, at, owner) +{ + _initializer = (const char *)0; +} + +Derived_attribute::~Derived_attribute() +{ +} diff --git a/source/geometry/solids/STEP/src/Registry_inline.cc b/source/geometry/solids/STEP/src/Registry_inline.cc index fe094950f7..deaf71d6b0 100644 --- a/source/geometry/solids/STEP/src/Registry_inline.cc +++ b/source/geometry/solids/STEP/src/Registry_inline.cc @@ -1,18 +1,11 @@ - - -// - - - -// -// $Id: Registry_inline.cc,v 1.2 1999/05/21 20:20:48 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// +#ifdef __OSTORE__ +extern int pr_obj_errors; +#endif /* * NIST STEP Core Class Library * clstepcore/Registry.inline.cc -* May 1995 +* April 1997 * K. C. Morris * David Sauder @@ -20,47 +13,78 @@ * and is not subject to copyright. */ -/* */ +/* $Id: Registry_inline.cc,v 1.3 2000/01/21 13:42:55 gcosmo Exp $ */ +#include #include - const TypeDescriptor * t_INTEGER_TYPE; - const TypeDescriptor * t_REAL_TYPE; - const TypeDescriptor * t_NUMBER_TYPE; - const TypeDescriptor * t_STRING_TYPE; - const TypeDescriptor * t_BINARY_TYPE; - const TypeDescriptor * t_BOOLEAN_TYPE; - const TypeDescriptor * t_LOGICAL_TYPE; + const TypeDescriptor * t_sdaiINTEGER; + const TypeDescriptor * t_sdaiREAL; + const TypeDescriptor * t_sdaiNUMBER; + const TypeDescriptor * t_sdaiSTRING; + const TypeDescriptor * t_sdaiBINARY; + const TypeDescriptor * t_sdaiBOOLEAN; + const TypeDescriptor * t_sdaiLOGICAL; +static int uniqueNames( const char *, const SchRename * ); -/* inline */ +//#ifdef __OSTORE__ +//Registry::Registry (CF_init initFunct, os_database *db) +//#else Registry::Registry (CF_init initFunct) -: entity_cnt (0) +//#endif +: entity_cnt(0), all_ents_cnt(0), col(0) { +//#ifdef __OSTORE__ + // need to make this thing persistent in a database - DAS +/* + if(NilSTEPentity == 0) + NilSTEPentity = new (db, SCLP23(Application_instance)::get_os_typespec()) + SCLP23(Application_instance); +*/ +//#else +// if(NilSTEPentity == 0) +// NilSTEPentity = new SCLP23(Application_instance); +//#endif + primordialSwamp = HASHcreate (1000); active_schemas = HASHcreate (10); active_types = HASHcreate (100); - t_INTEGER_TYPE = new TypeDescriptor("INTEGER", // Name - INTEGER_TYPE, // FundamentalType + t_sdaiINTEGER = new TypeDescriptor("INTEGER", // Name + sdaiINTEGER, // FundamentalType + 0, // Originating Schema "INTEGER"); // Description; - t_REAL_TYPE = new TypeDescriptor("REAL", REAL_TYPE, "Real"); + t_sdaiREAL = new TypeDescriptor("REAL", sdaiREAL, + 0, // Originating Schema + "Real"); - t_STRING_TYPE = new TypeDescriptor("STRING", STRING_TYPE, "String"); + t_sdaiSTRING = new TypeDescriptor("STRING", sdaiSTRING, + 0, // Originating Schema + "String"); - t_BINARY_TYPE = new TypeDescriptor("BINARY", BINARY_TYPE, "Binary"); + t_sdaiBINARY = new TypeDescriptor("BINARY", sdaiBINARY, + 0, // Originating Schema + "Binary"); - t_BOOLEAN_TYPE = new TypeDescriptor("BOOLEAN", BOOLEAN_TYPE, "Boolean"); + t_sdaiBOOLEAN = new TypeDescriptor("BOOLEAN", sdaiBOOLEAN, + 0, // Originating Schema + "Boolean"); - t_LOGICAL_TYPE = new TypeDescriptor("LOGICAL", LOGICAL_TYPE, "Logical"); + t_sdaiLOGICAL = new TypeDescriptor("LOGICAL", sdaiLOGICAL, + 0, // Originating Schema + "Logical"); - t_NUMBER_TYPE = new TypeDescriptor("NUMBER", NUMBER_TYPE, "Number"); + t_sdaiNUMBER = new TypeDescriptor("NUMBER", sdaiNUMBER, + 0, // Originating Schema + "Number"); /* t_GENERIC_TYPE = new TypeDescriptor("GENERIC", GENERIC_TYPE, "Generic");*/ initFunct (*this); - HASHlistinit (primordialSwamp, &cur_entity); // Initialize cur\'s + HASHlistinit (active_types, &cur_type); + HASHlistinit (primordialSwamp, &cur_entity); // initialize cur\'s HASHlistinit (active_schemas, &cur_schema); } @@ -70,6 +94,7 @@ Registry::~Registry () HASHdestroy (primordialSwamp); HASHdestroy (active_schemas); HASHdestroy (active_types); + delete col; } void @@ -83,65 +108,177 @@ Registry::DeleteContents () // schemas HASHlistinit (active_schemas, &cur_schema); while (HASHlist (&cur_schema)) - delete (SchemaDescriptor *) cur_schema.e->data; + delete (Schema *) cur_schema.e->data; // types } /* inline */ const EntityDescriptor * -Registry::FindEntity (const char * e, int check_case) const +Registry::FindEntity (const char *e, const char *schNm, int check_case) const + /* + * schNm refers to the current schema. This will have a value if we are + * reading from a Part 21 file (using a STEPfile object), and the file + * declares a schema name in the File_Schema section of the Header. (If + * >1 schema names are declared, the first is taken.) The schema name is + * significant because of the USE and REFERENCE clause. Say schema X USEs + * entity A from schema Y and renames it to B, X should only refer to A as + * B. Thus, if schNm here = "X", only e="B" would be valid but not e="A". + */ { - if (check_case) - return - (const EntityDescriptor *) HASHfind (primordialSwamp, - (char *)PrettyTmpName (e)); - else return (const EntityDescriptor *) HASHfind (primordialSwamp, (char *) e); + const EntityDescriptor *entd; + const SchRename *altlist; + char schformat[BUFSIZ], altName[BUFSIZ]; + + if (check_case) { + entd = (EntityDescriptor *)HASHfind (primordialSwamp, (char *)e); + } else { + entd = (EntityDescriptor *)HASHfind (primordialSwamp, + (char *)PrettyTmpName (e)); + } + if ( entd && schNm ) { + // We've now found an entity. If schNm has a value, we must ensure we + // have a valid name. + strcpy( schformat, PrettyTmpName( schNm ) ); + if ( ( (altlist = entd->AltNameList()) != 0 ) + && ( altlist->rename( schformat, altName ) ) ) { + // If entd has other name choices, and entd is referred to with a + // new name by schema schNm, then e had better = the new name. + if ( !StrCmpIns( e, altName ) ) { + return entd; + } + return NULL; + } else if ( FindSchema( schformat, 1 ) ) { + // If schema schNm exists but we had no conditions above to use an + // altName, we must use the original name: + if ( !StrCmpIns( e, entd->Name() ) ) { + return entd; + } + return NULL; + } else { + // Last choice: schNm does not exist at all. The user must have + // typed something wrong. Don't penalize him for it (so even if + // we have an altName of entd, accept it): + return entd; + } + } + return entd; } - -/* inline */ const SchemaDescriptor * +/* inline */ const Schema * Registry::FindSchema (const char * n, int check_case) const { if (check_case) - return (const SchemaDescriptor *) HASHfind (primordialSwamp, + return (const Schema *) HASHfind (active_schemas, (char *) n); + + return (const Schema *) HASHfind (active_schemas, (char *)PrettyTmpName (n)); - return (const SchemaDescriptor *) HASHfind (active_schemas, (char *) n); } /* inline */ const TypeDescriptor * -Registry::FindType (const char * n, int check_case) const +Registry::FindType (const char * n, int check_case) const { - if (check_case) - return (const TypeDescriptor *) HASHfind (primordialSwamp, - (char *)PrettyTmpName (n)); - return (const TypeDescriptor *) HASHfind (active_types, (char *) n); + if (check_case) + return (const TypeDescriptor *) HASHfind (active_types, (char *) n); + return (const TypeDescriptor *) HASHfind (active_types, + (char *)PrettyTmpName (n)); } - + +/* inline */ void +Registry::ResetTypes () +{ + HASHlistinit (active_types, &cur_type); +} + +/* inline */ const TypeDescriptor * +Registry::NextType () +{ + if (0 == HASHlist (&cur_type)) return 0; + return (const TypeDescriptor *) cur_type.e->data; +} + /* inline */ void Registry::AddEntity (const EntityDescriptor& e) { HASHinsert (primordialSwamp, (char *) e.Name (), (EntityDescriptor *) &e); ++entity_cnt; + ++all_ents_cnt; + AddClones(e); } /* inline */ void -Registry::AddSchema (const SchemaDescriptor& d) +Registry::AddSchema (const Schema& d) { - HASHinsert (active_schemas, (char *) d.Name(), (SchemaDescriptor *) &d); + HASHinsert (active_schemas, (char *) d.Name(), (Schema *) &d); } /* inline */ void -Registry::AddType (const TypeDescriptor& d) +Registry::AddType (const TypeDescriptor& d) { HASHinsert (active_types, (char *) d.Name(), (TypeDescriptor *) &d); } +/* inline */ void +Registry::AddClones (const EntityDescriptor& e) + /* + * Purpose is to insert e into the registry hashed according to all its + * alternate names (the names it was renamed with when other schemas USEd + * or REFERENCEd it). This will make these names available to the Registry + * so that if we comes across one of them in a Part 21 file, we'll recog- + * nize it. + */ +{ + const SchRename *alts = e.AltNameList(); + + while ( alts ) { + HASHinsert( primordialSwamp, (char *)alts->objName(), + (EntityDescriptor *)&e ); + alts = alts->next; + } + all_ents_cnt += uniqueNames( e.Name(), e.AltNameList() ); +} + +static int +uniqueNames( const char *entnm, const SchRename *altlist ) + /* + * Returns the number of unique names in an entity's _altname list. If + * schema B uses ent xx from schema A and renames it to yy, and schema C + * does the same (or if C simply uses yy from B), altlist will contain 2 + * entries with the same alt name. + */ +{ + int cnt = 0; + const SchRename *alt = altlist; + + while ( alt ) { + if ( !( alt->next + && alt->next->choice( alt->objName() ) + || !StrCmpIns( alt->objName(), entnm ) ) ) { + // alt has a unique alternate name if it's not reused by a later + // alt. alt->next->choice() returns 1 if one of the later alts + // also has alt's name as its value. The final condition checks + // that our alt name is not the same as the original ent's (would + // be the case if the Express file said "USE from A (xx as xx)", + // which may not be legal and certainly isn't meaningful, but we + // check for it just in case. If none of the above conditions are + // true, we have a unique. + cnt++; + } + alt = alt->next; + } + return cnt; +} + /* inline */ void Registry::RemoveEntity (const char * n) { + const EntityDescriptor *e = FindEntity(n); struct Element tmp; + + if ( e ) { + RemoveClones( *e ); + } tmp.key = (char *) n; HASHsearch (primordialSwamp, &tmp, HASH_DELETE) ? --entity_cnt : 0; @@ -163,16 +300,89 @@ Registry::RemoveType (const char * n) HASHsearch (active_types, &tmp, HASH_DELETE); } -/* inline */ STEPentity * -Registry::ObjCreate (const char * nm, int check_case) const -{ - const EntityDescriptor * entd = FindEntity (nm, check_case); - if (entd) return ((EntityDescriptor *)entd) -> NewSTEPentity (); - else return ENTITY_NULL; -} +/* inline */ void +Registry::RemoveClones (const EntityDescriptor& e) + /* + * Remove all the "clones", or rename values of e. + */ +{ + const SchRename *alts = e.AltNameList(); + struct Element *tmp; + + while ( alts ) { + tmp = new Element; + tmp->key = (char *) alts->objName(); + HASHsearch (primordialSwamp, tmp, HASH_DELETE); + alts = alts->next; + } +} + +#ifdef __OSTORE__ +SCLP23(Application_instance) * +Registry::ObjCreate (const char *nm, os_database *db, const char *schnm, + int check_case) const +{ + if(pr_obj_errors > 3) + G4cout << "Registry::ObjCreate() db ptr: " << db << G4endl; + + const EntityDescriptor * entd = FindEntity (nm, schnm, check_case); + if (entd) + { + SCLP23(Application_instance) *se = + ((EntityDescriptor *)entd) -> NewSTEPentity (db); + + if(pr_obj_errors > 3) + { + G4cout << "Created entity: " << se->EntityName() << G4endl; + G4cout << "os_database::of(se) in Registry::ObjCreate(): " + << os_database::of(se) << G4endl; + } + // If se is an abstract supertype or a complex entity which requires + // external mapping it shouldn't be instantiable using ObjCreate() (but + // rather as a part of a STEPcomplex). In such cases we do create one + // here, but we check these conditions and set se's ErrorDescriptor + // field appropriately. + if ( entd->AbstractEntity().asInt() == TRUE ) { + se->Error().severity( SEVERITY_WARNING ); + se->Error().UserMsg( "ENTITY is abstract supertype" ); + } else if ( entd->ExtMapping().asInt() == TRUE ) { + se->Error().severity( SEVERITY_WARNING ); + se->Error().UserMsg( "ENTITY requires external mapping" ); + } + return se; + } + else { + return ENTITY_NULL; + } +} + +#else + +SCLP23(Application_instance) * +Registry::ObjCreate (const char *nm, const char *schnm, int check_case) const +{ + const EntityDescriptor * entd = FindEntity (nm, schnm, check_case); + if (entd) { + SCLP23(Application_instance) *se = + ((EntityDescriptor *)entd) -> NewSTEPentity (); + + // See comment in previous function. + if ( entd->AbstractEntity().asInt() == TRUE ) { + se->Error().severity( SEVERITY_WARNING ); + se->Error().UserMsg( "ENTITY is abstract supertype" ); + } else if ( entd->ExtMapping().asInt() == TRUE ) { + se->Error().severity( SEVERITY_WARNING ); + se->Error().UserMsg( "ENTITY requires external mapping" ); + } + return se; + } else { + return ENTITY_NULL; + } +} +#endif /* inline */ int -Registry::GetEntityCnt () +Registry::GetEntityCnt () { return entity_cnt; } @@ -197,9 +407,9 @@ Registry::ResetSchemas () HASHlistinit (active_schemas, &cur_schema); } -/* inline */ const SchemaDescriptor * +/* inline */ const Schema * Registry::NextSchema () { if (0 == HASHlist (&cur_schema)) return 0; - return (const SchemaDescriptor *) cur_schema.e->data; + return (const Schema *) cur_schema.e->data; } diff --git a/source/geometry/solids/STEP/src/STEPaggregate.cc b/source/geometry/solids/STEP/src/STEPaggregate.cc index 5acc428492..f666276405 100644 --- a/source/geometry/solids/STEP/src/STEPaggregate.cc +++ b/source/geometry/solids/STEP/src/STEPaggregate.cc @@ -1,18 +1,8 @@ - -// - - - -// -// $Id: STEPaggregate.cc,v 1.3 1999/12/15 14:50:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - /* * NIST STEP Core Class Library * clstepcore/STEPaggregate.cc -* May 1995 +* April 1997 * K. C. Morris * David Sauder @@ -20,21 +10,22 @@ * and is not subject to copyright. */ -/* */ +/* $Id: STEPaggregate.cc,v 1.4 2000/01/21 13:42:56 gcosmo Exp $ */ #include #include #include #include -#include +//#include #include +#include const int Real_Num_Precision = REAL_NUM_PRECISION; // from STEPattribute.h #define STRING_DELIM '\'' -static char rcsid[] = ""; +static char rcsid[] = "$Id: STEPaggregate.cc,v 1.4 2000/01/21 13:42:56 gcosmo Exp $"; /****************************************************************** ** Functions for manipulating aggregate attributes @@ -77,13 +68,14 @@ STEPaggregate::AggrValidLevel(const char *value, ErrorDescriptor *err, int optional, char *tokenList, int addFileId, int clearError) { + SCLstring buf; if(clearError) err->ClearErrorMsg(); G4std::istrstream in ((char *)value); // sz defaults to length of s ReadValue(in, err, elem_type, insts, addFileId, 0, 0); - CheckRemainingInput(in, err, elem_type->AttrTypeName(), tokenList); + CheckRemainingInput(in, err, elem_type->AttrTypeName(buf), tokenList); if( optional && (err->severity() == SEVERITY_INCOMPLETE) ) err->severity(SEVERITY_NULL); return err->severity(); @@ -96,11 +88,12 @@ STEPaggregate::AggrValidLevel(G4std::istream &in, ErrorDescriptor *err, int optional, char *tokenList, int addFileId, int clearError) { + SCLstring buf; if(clearError) err->ClearErrorMsg(); ReadValue(in, err, elem_type, insts, addFileId, 0, 1); - CheckRemainingInput(in, err, elem_type->AttrTypeName(), tokenList); + CheckRemainingInput(in, err, elem_type->AttrTypeName(buf), tokenList); if( optional && (err->severity() == SEVERITY_INCOMPLETE) ) err->severity(SEVERITY_NULL); return err->severity(); @@ -109,14 +102,15 @@ STEPaggregate::AggrValidLevel(G4std::istream &in, ErrorDescriptor *err, // if exchangeFileFormat == 1 then paren delims are required. Severity -STEPaggregate::ReadValue(G4std::istream &in, ErrorDescriptor *err, - const TypeDescriptor *elem_type, - InstMgr *insts, int addFileId, - int assignVal, int exchangeFileFormat) +STEPaggregate::ReadValue(G4std::istream &in, ErrorDescriptor *err, + const TypeDescriptor *elem_type, InstMgr *insts, + int addFileId, int assignVal, int exchangeFileFormat, + const char *) { ErrorDescriptor errdesc; char errmsg[BUFSIZ]; int value_cnt = 0; + SCLstring buf; if(assignVal) Empty (); // read new values and discard existing ones @@ -142,7 +136,7 @@ STEPaggregate::ReadValue(G4std::istream &in, ErrorDescriptor *err, } else if(exchangeFileFormat) { // error did not find opening delim - // cannot recover so give up and let STEPattribute recover + // cannot recover so give up and let STEPattribute recover err->GreaterSeverity(SEVERITY_INPUT_ERROR); return SEVERITY_INPUT_ERROR; } @@ -153,8 +147,18 @@ STEPaggregate::ReadValue(G4std::istream &in, ErrorDescriptor *err, } STEPnode * item = 0; - if(!assignVal) // if not assigning values only need one node. So only - // one node is created. It is used to read the values + + in >> G4std::ws; + // take a peek to see if there are any elements before committing to an + // element + c = in.peek(); // does not advance input + if(c == ')') + { + in.get(c); + } + // if not assigning values only need one node. So only one node is created. + // It is used to read the values + else if(!assignVal) item = (STEPnode*)NewNode(); // ')' is the end of the aggregate @@ -173,7 +177,7 @@ STEPaggregate::ReadValue(G4std::istream &in, ErrorDescriptor *err, // read up to the next delimiter and set errors if garbage is // found before specified delims (i.e. comma and quote) - CheckRemainingInput(in, &errdesc, elem_type->AttrTypeName(), ",)"); + CheckRemainingInput(in, &errdesc, elem_type->AttrTypeName(buf), ",)"); if (errdesc.severity() < SEVERITY_INCOMPLETE) { @@ -214,12 +218,23 @@ STEPaggregate::ReadValue(G4std::istream &in, ErrorDescriptor *err, */ } } + if(c == ')') + { + _null = 0; +// validDelims = 1; // expectation for end paren delim is met + } + else // expectation for end paren delim has not been met + { + err->GreaterSeverity(SEVERITY_INPUT_ERROR); + err->AppendToUserMsg("Missing close paren for aggregate value"); + return SEVERITY_INPUT_ERROR; + } return err->severity(); } -Severity -STEPaggregate::StrToVal(const char *s, ErrorDescriptor *err, - const TypeDescriptor *elem_type, InstMgr *insts, +Severity +STEPaggregate::StrToVal(const char *s, ErrorDescriptor *err, + const TypeDescriptor *elem_type, InstMgr *insts, int addFileId) { G4std::istrstream in((char *)s); @@ -228,15 +243,15 @@ STEPaggregate::StrToVal(const char *s, ErrorDescriptor *err, /////////////////////////////////////////////////////////////////////////////// -Severity -STEPaggregate::STEPread(G4std::istream& in, ErrorDescriptor *err, - const TypeDescriptor *elem_type, - InstMgr *insts, int addFileId) +Severity +STEPaggregate::STEPread(G4std::istream& in, ErrorDescriptor *err, + const TypeDescriptor *elem_type, InstMgr *insts, + int addFileId, const char *currSch) { - return ReadValue(in, err, elem_type, insts, addFileId, 1, 1); + return ReadValue(in, err, elem_type, insts, addFileId, 1, 1, currSch); } -const char * +const char * STEPaggregate::asStr(SCLstring & s) const { s.set_null(); @@ -258,7 +273,7 @@ STEPaggregate::asStr(SCLstring & s) const } void -STEPaggregate::STEPwrite(G4std::ostream& out) const +STEPaggregate::STEPwrite(G4std::ostream& out, const char *currSch) const { if(!_null) { @@ -267,7 +282,7 @@ STEPaggregate::STEPwrite(G4std::ostream& out) const SCLstring s; while (n) { - out << n->STEPwrite (s); + out << n->STEPwrite (s, currSch); if ( n = (STEPnode *)(n -> NextNode ()) ) out << ','; } @@ -378,11 +393,26 @@ STEPnode::asStr(SCLstring &s) } const char * -STEPnode::STEPwrite (SCLstring &s) +STEPnode::STEPwrite (SCLstring &s, const char *currSch) + /* + * NOTE - second argument will contain name of current schema. We may need + * this if STEPnode belongs to an aggregate of selects. If so, each node + * will be written out by calling STEPwrite on its select, and to write a + * select out, the name of its underlying type will be written. Finally, + * the underlying type's name depends on the current schema. This is be- + * cause e.g. type X may be defined in schema A, and may be USEd in schema + * B and renamed to Y (i.e., "USE from A (X as Y)"). Thus, if currSch = B, + * Y will have to be written out rather than X. Actually, this concern + * only applies for SelectNode. To accomodate those cases, all the signa- + * tures of STEPwrite(SCLstring) contain currSch. (As an additional note, + * 2D aggregates should make use of currSch in case they are 2D aggrs of + * selects. But since currently (3/27/97) the SCL handles 2D+ aggrs using + * SCLundefined's, this is not implemented.) + */ { G4cerr << "Internal error: " << __FILE__ << ": " << __LINE__ << "\n" ; - G4cerr << "function: STEPnode::STEPwrite called instead of virtual function.\n" - << _POC_ << "\n"; + G4cerr << "function: STEPnode::STEPwrite called instead of virtual function.\n" + << _POC_ << "\n"; return ""; } @@ -399,10 +429,23 @@ STEPnode::STEPwrite (G4std::ostream& out) // GenericAggregate /////////////////////////////////////////////////////////////////////////////// +GenericAggregate::GenericAggregate() +{ +} + +GenericAggregate::~GenericAggregate() +{ +} + SingleLinkNode * GenericAggregate::NewNode () { +#ifdef __OSTORE__ + return new (os_segment::of(this), + GenericAggrNode::get_os_typespec()) GenericAggrNode(); +#else return new GenericAggrNode(); +#endif } STEPaggregate& @@ -415,7 +458,13 @@ GenericAggregate::ShallowCopy (const STEPaggregate& a) while (next) { +#ifdef __OSTORE__ + copy = new (os_segment::of(this), + GenericAggrNode::get_os_typespec()) + GenericAggrNode (*(GenericAggrNode*)next); +#else copy = new GenericAggrNode (*(GenericAggrNode*)next); +#endif AddNode(copy); next = next->NextNode(); } @@ -452,7 +501,12 @@ GenericAggrNode::~GenericAggrNode() SingleLinkNode * GenericAggrNode::NewNode () { +#ifdef __OSTORE__ + return new (os_segment::of(this), + GenericAggrNode::get_os_typespec()) GenericAggrNode(); +#else return new GenericAggrNode(); +#endif } Severity @@ -490,7 +544,7 @@ GenericAggrNode::asStr(SCLstring &s) } const char * -GenericAggrNode::STEPwrite(SCLstring &s) +GenericAggrNode::STEPwrite(SCLstring &s, const char *currSch) { return value.STEPwrite(s); /* @@ -524,15 +578,16 @@ EntityAggregate::~EntityAggregate () // if exchangeFileFormat == 1 then delims are required. -Severity -EntityAggregate::ReadValue(G4std::istream &in, ErrorDescriptor *err, - const TypeDescriptor *elem_type, - InstMgr *insts, int addFileId, - int assignVal, int exchangeFileFormat) +Severity +EntityAggregate::ReadValue(G4std::istream &in, ErrorDescriptor *err, + const TypeDescriptor *elem_type, InstMgr *insts, + int addFileId, int assignVal, + int exchangeFileFormat, const char *) { ErrorDescriptor errdesc; char errmsg[BUFSIZ]; int value_cnt = 0; + SCLstring buf; if(assignVal) Empty (); // read new values and discard existing ones @@ -569,15 +624,32 @@ EntityAggregate::ReadValue(G4std::istream &in, ErrorDescriptor *err, } EntityNode * item = 0; - if(!assignVal) // if not assigning values only need one node. So only - // one node is created. It is used to read the values + + in >> G4std::ws; + // take a peek to see if there are any elements before committing to an + // element + c = in.peek(); // does not advance input + if(c == ')') + { + in.get(c); + } + // if not assigning values only need one node. So only one node is created. + // It is used to read the values + else if(!assignVal) + // OSTORE note - since this is temporary and deleted anyway don't worry + // about persistent new item = new EntityNode(); while (in.good() && (c != ')') ) { value_cnt++; if(assignVal) // create a new node each time through the loop +#ifdef __OSTORE__ + item = new (os_segment::of(this), + EntityNode::get_os_typespec()) EntityNode(); +#else item = new EntityNode(); +#endif errdesc.ClearErrorMsg(); @@ -588,7 +660,7 @@ EntityAggregate::ReadValue(G4std::istream &in, ErrorDescriptor *err, // read up to the next delimiter and set errors if garbage is // found before specified delims (i.e. comma and quote) - CheckRemainingInput(in, &errdesc, elem_type->AttrTypeName(), ",)"); + CheckRemainingInput(in, &errdesc, elem_type->AttrTypeName(buf), ",)"); if (errdesc.severity() < SEVERITY_INCOMPLETE) { @@ -629,6 +701,17 @@ EntityAggregate::ReadValue(G4std::istream &in, ErrorDescriptor *err, */ } } + if(c == ')') + { + _null = 0; +// validDelims = 1; // expectation for end paren delim is met + } + else // expectation for end paren delim has not been met + { + err->GreaterSeverity(SEVERITY_INPUT_ERROR); + err->AppendToUserMsg("Missing close paren for aggregate value"); + return SEVERITY_INPUT_ERROR; + } return err->severity(); } @@ -639,7 +722,12 @@ EntityAggregate::ShallowCopy (const STEPaggregate& a) const EntityNode * tmp = (const EntityNode*) a.GetHead (); while (tmp) { +#ifdef __OSTORE__ + AddNode (new (os_segment::of(this), + EntityNode::get_os_typespec()) EntityNode (tmp -> node)); +#else AddNode (new EntityNode (tmp -> node)); +#endif tmp = (const EntityNode*) tmp -> NextNode (); } if(head) @@ -654,21 +742,39 @@ EntityAggregate::ShallowCopy (const STEPaggregate& a) SingleLinkNode * EntityAggregate::NewNode () { - return new EntityNode (); +#ifdef __OSTORE__ + return new (os_segment::of(this), + EntityNode::get_os_typespec()) EntityNode(); +#else + return new EntityNode(); +#endif } /////////////////////////////////////////////////////////////////////////////// // EntityNode /////////////////////////////////////////////////////////////////////////////// -EntityNode::EntityNode (STEPentity * e) : node (e) +EntityNode::EntityNode() +{ +} + +EntityNode::~EntityNode() +{ +} + +EntityNode::EntityNode (SCLP23(Application_instance) * e) : node (e) { } SingleLinkNode * EntityNode::NewNode () { - return new EntityNode (); +#ifdef __OSTORE__ + return new (os_segment::of(this), + EntityNode::get_os_typespec()) EntityNode(); +#else + return new EntityNode(); +#endif } /////////////////////////////////////////////////////////////////////////////// @@ -677,8 +783,10 @@ EntityNode::StrToVal(const char *s, ErrorDescriptor *err, const TypeDescriptor *elem_type, InstMgr *insts, int addFileId) { - STEPentity *se = ReadEntityRef(s, err, ",)", insts, addFileId); -// STEPentity *se = ReadEntityRef(s, err, 0, insts, addFileId); + SCLP23(Application_instance) *se = ReadEntityRef(s, err, (char*)(",)"), + insts, addFileId); +// SCLP23(Application_instance) *se = ReadEntityRef(s, err, 0, insts, +// addFileId); if( se != S_ENTITY_NULL ) { ErrorDescriptor error; @@ -719,7 +827,8 @@ EntityNode::STEPread(G4std::istream &in, ErrorDescriptor *err, const TypeDescriptor *elem_type, InstMgr *insts, int addFileId) { - STEPentity *se = ReadEntityRef(in, err, ",)", insts, addFileId); + SCLP23(Application_instance) *se = ReadEntityRef(in, err, (char*)(",)"), + insts, addFileId); if( se != S_ENTITY_NULL ) { ErrorDescriptor error; @@ -755,7 +864,7 @@ EntityNode::asStr (SCLstring &s) } const char * -EntityNode::STEPwrite(SCLstring &s) +EntityNode::STEPwrite(SCLstring &s, const char *) { if (!node || (node == S_ENTITY_NULL) ) // nothing { @@ -792,15 +901,16 @@ SelectAggregate::~SelectAggregate () // if exchangeFileFormat == 1 then delims are required. -Severity -SelectAggregate::ReadValue(G4std::istream &in, ErrorDescriptor *err, - const TypeDescriptor *elem_type, - InstMgr *insts, int addFileId, - int assignVal, int exchangeFileFormat) +Severity +SelectAggregate::ReadValue(G4std::istream &in, ErrorDescriptor *err, + const TypeDescriptor *elem_type, InstMgr *insts, + int addFileId, int assignVal, + int exchangeFileFormat, const char *currSch) { ErrorDescriptor errdesc; char errmsg[BUFSIZ]; int value_cnt = 0; + SCLstring buf; if(assignVal) Empty (); // read new values and discard existing ones @@ -837,9 +947,19 @@ SelectAggregate::ReadValue(G4std::istream &in, ErrorDescriptor *err, } SelectNode * item = 0; - if(!assignVal) // if not assigning values only need one node. So only - // one node is created. It is used to read the values - item = (SelectNode *) NewNode (); + + in >> G4std::ws; + // take a peek to see if there are any elements before committing to an + // element + c = in.peek(); // does not advance input + if(c == ')') + { + in.get(c); + } + // if not assigning values only need one node. So only one node is created. + // It is used to read the values + else if(!assignVal) + item = (SelectNode *) NewNode (); while (in.good() && (c != ')') ) { @@ -850,13 +970,13 @@ SelectAggregate::ReadValue(G4std::istream &in, ErrorDescriptor *err, errdesc.ClearErrorMsg(); if(exchangeFileFormat) - item->STEPread(in, &errdesc, elem_type, insts, addFileId); + item->STEPread(in, &errdesc, elem_type, insts, addFileId, currSch); else - item->StrToVal(in, &errdesc, elem_type, insts, addFileId); + item->StrToVal(in, &errdesc, elem_type, insts, addFileId, currSch); // read up to the next delimiter and set errors if garbage is // found before specified delims (i.e. comma and quote) - CheckRemainingInput(in, &errdesc, elem_type->AttrTypeName(), ",)"); + CheckRemainingInput(in, &errdesc, elem_type->AttrTypeName(buf), ",)"); if (errdesc.severity() < SEVERITY_INCOMPLETE) { @@ -882,6 +1002,17 @@ SelectAggregate::ReadValue(G4std::istream &in, ErrorDescriptor *err, return SEVERITY_INPUT_ERROR; } } + if(c == ')') + { + _null = 0; +// validDelims = 1; // expectation for end paren delim is met + } + else // expectation for end paren delim has not been met + { + err->GreaterSeverity(SEVERITY_INPUT_ERROR); + err->AppendToUserMsg("Missing close paren for aggregate value"); + return SEVERITY_INPUT_ERROR; + } return err->severity(); } @@ -892,7 +1023,13 @@ SelectAggregate::ShallowCopy (const STEPaggregate& a) const SelectNode * tmp = (const SelectNode*) a.GetHead (); while (tmp) { +#ifdef __OSTORE__ + AddNode (new (os_segment::of(this), + SelectNode::get_os_typespec()) SelectNode (tmp -> node)); +#else AddNode (new SelectNode (tmp -> node)); +#endif + tmp = (const SelectNode*) tmp -> NextNode (); } if(head) @@ -907,17 +1044,39 @@ SelectAggregate::ShallowCopy (const STEPaggregate& a) SingleLinkNode * SelectAggregate::NewNode () { - return new SelectNode (); +#ifdef __OSTORE__ + return new (os_segment::of(this), + SelectNode::get_os_typespec()) SelectNode(); +#else + return new SelectNode(); +#endif } /////////////////////////////////////////////////////////////////////////////// // SelectNode /////////////////////////////////////////////////////////////////////////////// +SelectNode::SelectNode(SCLP23(Select) * s) : node (s) +{ +} + +SelectNode::SelectNode() +{ +} + +SelectNode::~SelectNode() +{ +} + SingleLinkNode * SelectNode::NewNode () { - return new SelectNode (); +#ifdef __OSTORE__ + return new (os_segment::of(this), + SelectNode::get_os_typespec()) SelectNode(); +#else + return new SelectNode(); +#endif } /////////////////////////////////////////////////////////////////////////////// @@ -927,7 +1086,8 @@ SelectNode::StrToVal(const char *s, ErrorDescriptor *err, InstMgr *insts, int addFileId) { /* - STEPentity *se = ReadEntityRef(s, err, ",)", insts, addFileId); + SCLP23(Application_instance) *se = ReadEntityRef(s, err, ",)", insts, + addFileId); if( se != S_ENTITY_NULL ) { ErrorDescriptor error; @@ -954,9 +1114,9 @@ SelectNode::StrToVal(const char *s, ErrorDescriptor *err, Severity SelectNode::StrToVal(G4std::istream &in, ErrorDescriptor *err, const TypeDescriptor *elem_type, - InstMgr *insts, int addFileId) + InstMgr *insts, int addFileId, const char *currSch) { - return STEPread(in, err, elem_type, insts, addFileId); + return STEPread(in, err, elem_type, insts, addFileId, currSch); } Severity @@ -971,7 +1131,7 @@ SelectNode::STEPread(const char *s, ErrorDescriptor *err, Severity SelectNode::STEPread(G4std::istream &in, ErrorDescriptor *err, const TypeDescriptor *elem_type, - InstMgr *insts, int addFileId) + InstMgr *insts, int addFileId, const char *currSch) { if (!node) { G4cerr << "Internal error: " << __FILE__ << ": " << __LINE__ << "\n" @@ -979,7 +1139,7 @@ SelectNode::STEPread(G4std::istream &in, ErrorDescriptor *err, G4cerr << "function: SelectNode::STEPread \n" << "\n"; return SEVERITY_BUG; } - err->severity( node->STEPread(in, err, insts, addFileId)); + err->severity( node->STEPread(in, err, insts, 0, addFileId, currSch) ); CheckRemainingInput(in, err, "select", ",)"); return err->severity(); } @@ -998,7 +1158,7 @@ SelectNode::asStr (SCLstring &s) } const char * -SelectNode::STEPwrite(SCLstring &s) +SelectNode::STEPwrite(SCLstring &s, const char *currSch) { s.set_null(); if ( !node || (node->is_null()) ) // nothing @@ -1006,7 +1166,7 @@ SelectNode::STEPwrite(SCLstring &s) s = "$"; return "$"; } - node -> STEPwrite (s); + node -> STEPwrite (s, currSch); return s.chars(); } @@ -1028,6 +1188,14 @@ STEPaggregate& StringAggregate::ShallowCopy (const STEPaggregate&); ******************************************************************/ +StringAggregate::StringAggregate() +{ +} + +StringAggregate::~StringAggregate() +{ +} + STEPaggregate& StringAggregate::ShallowCopy (const STEPaggregate& a) { @@ -1038,7 +1206,13 @@ StringAggregate::ShallowCopy (const STEPaggregate& a) while (next) { +#ifdef __OSTORE__ + copy = new (os_segment::of(this), + StringNode::get_os_typespec()) + StringNode (*(StringNode*)next); +#else copy = new StringNode (*(StringNode*)next); +#endif AddNode(copy); next = next->NextNode(); } @@ -1053,13 +1227,27 @@ StringAggregate::ShallowCopy (const STEPaggregate& a) SingleLinkNode * StringAggregate::NewNode () { - return new StringNode (); +#ifdef __OSTORE__ + return new (os_segment::of(this), + StringNode::get_os_typespec()) StringNode(); +#else + return new StringNode(); +#endif } /////////////////////////////////////////////////////////////////////////////// // StringNode /////////////////////////////////////////////////////////////////////////////// +StringNode::StringNode() +{ + value = 0; +} + +StringNode::~StringNode() +{ +} + StringNode::StringNode(StringNode& sn) { value = sn.value.chars(); @@ -1067,7 +1255,7 @@ StringNode::StringNode(StringNode& sn) StringNode::StringNode(const char * sStr) { - // value is an SdaiString (the memory is copied) + // value is an SCLP23(String) (the memory is copied) value = sStr; /* @@ -1081,7 +1269,12 @@ StringNode::StringNode(const char * sStr) SingleLinkNode * StringNode::NewNode () { - return new StringNode (); +#ifdef __OSTORE__ + return new (os_segment::of(this), + StringNode::get_os_typespec()) StringNode(); +#else + return new StringNode(); +#endif } /////////////////////////////////////////////////////////////////////////////// @@ -1133,7 +1326,7 @@ StringNode::asStr(SCLstring &s) } const char * -StringNode::STEPwrite (SCLstring &s) +StringNode::STEPwrite (SCLstring &s, const char *) { value.STEPwrite(s); return s.chars(); @@ -1153,6 +1346,14 @@ STEPaggregate& BinaryAggregate::ShallowCopy (const STEPaggregate&); ******************************************************************/ +BinaryAggregate::BinaryAggregate() +{ +} + +BinaryAggregate::~BinaryAggregate() +{ +} + STEPaggregate& BinaryAggregate::ShallowCopy (const STEPaggregate& a) { @@ -1163,7 +1364,13 @@ BinaryAggregate::ShallowCopy (const STEPaggregate& a) while (next) { +#ifdef __OSTORE__ + copy = new (os_segment::of(this), + BinaryNode::get_os_typespec()) + BinaryNode (*(BinaryNode*)next); +#else copy = new BinaryNode (*(BinaryNode*)next); +#endif AddNode(copy); next = next->NextNode(); } @@ -1178,13 +1385,27 @@ BinaryAggregate::ShallowCopy (const STEPaggregate& a) SingleLinkNode * BinaryAggregate::NewNode () { - return new BinaryNode (); +#ifdef __OSTORE__ + return new (os_segment::of(this), + BinaryNode::get_os_typespec()) BinaryNode(); +#else + return new BinaryNode(); +#endif } /////////////////////////////////////////////////////////////////////////////// // BinaryNode /////////////////////////////////////////////////////////////////////////////// +BinaryNode::BinaryNode() +{ + value = 0; +} + +BinaryNode::~BinaryNode() +{ +} + BinaryNode::BinaryNode(BinaryNode& bn) { value = bn.value.chars(); @@ -1192,14 +1413,19 @@ BinaryNode::BinaryNode(BinaryNode& bn) BinaryNode::BinaryNode(const char *sStr) { - // value is an SdaiBinary (the memory is copied) + // value is an SCLP23(Binary) (the memory is copied) value = sStr; } SingleLinkNode * BinaryNode::NewNode () { - return new BinaryNode (); +#ifdef __OSTORE__ + return new (os_segment::of(this), + BinaryNode::get_os_typespec()) BinaryNode(); +#else + return new BinaryNode(); +#endif } /////////////////////////////////////////////////////////////////////////////// @@ -1250,7 +1476,7 @@ BinaryNode::asStr(SCLstring &s) } const char * -BinaryNode::STEPwrite (SCLstring &s) +BinaryNode::STEPwrite (SCLstring &s, const char *) { value.STEPwrite(s); return s.chars(); @@ -1302,7 +1528,7 @@ EnumAggregate::~EnumAggregate () ** Procedure: EnumAggregate::NewNode ** Parameters: ** Returns: a new EnumNode which is of the correct derived type - ** Description: creates a node to put in an List of enumerated values + ** Description: creates a node to put in an list of enumerated values ** function is virtual so that the right node will be ** created ** Side Effects: @@ -1325,6 +1551,18 @@ EnumAggregate::NewNode () // EnumNode /////////////////////////////////////////////////////////////////////////////// +EnumNode::EnumNode(SCLP23(Enum) * e) : node (e) +{ +} + +EnumNode::EnumNode() +{ +} + +EnumNode::~EnumNode() +{ +} + SingleLinkNode * EnumNode::NewNode () { @@ -1380,7 +1618,7 @@ EnumNode::StrToVal(const char *s, ErrorDescriptor *err) default: sev = SEVERITY_WARNING; err->GreaterSeverity(SEVERITY_WARNING); - sprintf(messageBuf, "Invalid boolean value: \'%s\'.\n", + sprintf(messageBuf, "Invalid Boolean value: \'%s\'.\n", val); err->AppendToDetailMsg(messageBuf); break; @@ -1393,7 +1631,7 @@ EnumNode::StrToVal(const char *s, ErrorDescriptor *err) if(1 && sev > SEVERITY_WARNING) node -> put (val); } -//STEPenumeration::EnumValidLevel(const char *value, ErrorDescriptor *err, +//SCLP23(Enum)::EnumValidLevel(const char *value, ErrorDescriptor *err, // int optional, char *tokenList, // int needDelims, int clearError) @@ -1458,7 +1696,7 @@ EnumNode::asStr (SCLstring &s) } const char * -EnumNode::STEPwrite (SCLstring &s) +EnumNode::STEPwrite (SCLstring &s, const char *) { node->STEPwrite(s); return s.chars(); @@ -1490,37 +1728,104 @@ EnumNode::STEPwrite (G4std::ostream& out) } /////////////////////////////////////////////////////////////////////////////// -// Logicals +// LOGICALS /////////////////////////////////////////////////////////////////////////////// +LOGICALS::LOGICALS() +{ +} + +LOGICALS::~LOGICALS() +{ +} + //EnumNode * - SingleLinkNode * -Logicals::NewNode () +LOGICALS::NewNode () { - return new EnumNode (new Logical); +#ifdef __OSTORE__ + return new (os_segment::of(this), EnumNode::get_os_typespec()) + EnumNode( new (os_segment::of(this), + SCLP23(LOGICAL)::get_os_typespec()) SCLP23(LOGICAL) ); +#else + return new EnumNode (new SCLP23(LOGICAL)); +#endif } +#ifdef __OSTORE__ +LOGICALS * +create_LOGICALS(os_database *db) +{ + return new (db, LOGICALS::get_os_typespec()) LOGICALS; +} +#else +LOGICALS * +create_LOGICALS() +{ + return new LOGICALS; +} +#endif + /////////////////////////////////////////////////////////////////////////////// -// Booleans +// BOOLS /////////////////////////////////////////////////////////////////////////////// +BOOLS::BOOLS() +{ +} + +BOOLS::~BOOLS() +{ +} + //EnumNode * - SingleLinkNode * -Booleans::NewNode () +BOOLS::NewNode () { - return new EnumNode (new Boolean); +#ifdef __OSTORE__ + return new (os_segment::of(this), EnumNode::get_os_typespec()) + EnumNode( new (os_segment::of(this), + SCLP23(BOOL)::get_os_typespec()) SCLP23(BOOL) ); +#else + return new EnumNode (new SCLP23(BOOL)); +#endif } +#ifdef __OSTORE__ +BOOLS * +create_BOOLS(os_database *db) +{ + return new (db, BOOLS::get_os_typespec()) BOOLS; +} +#else +BOOLS * +create_BOOLS() +{ + return new BOOLS ; +} +#endif + /////////////////////////////////////////////////////////////////////////////// // RealAggregate /////////////////////////////////////////////////////////////////////////////// +RealAggregate::RealAggregate() +{ +} + +RealAggregate::~RealAggregate() +{ +} + SingleLinkNode * RealAggregate::NewNode () { +#ifdef __OSTORE__ + return new (os_segment::of(this), + RealNode::get_os_typespec()) RealNode(); +#else return new RealNode(); +#endif } // COPY @@ -1548,10 +1853,23 @@ RealAggregate::ShallowCopy (const STEPaggregate& a) // IntAggregate /////////////////////////////////////////////////////////////////////////////// +IntAggregate::IntAggregate() +{ +} + +IntAggregate::~IntAggregate() +{ +} + SingleLinkNode * IntAggregate::NewNode () { +#ifdef __OSTORE__ + return new (os_segment::of(this), + IntNode::get_os_typespec()) IntNode(); +#else return new IntNode(); +#endif } // COPY @@ -1579,16 +1897,30 @@ IntAggregate::ShallowCopy (const STEPaggregate& a) // RealNode /////////////////////////////////////////////////////////////////////////////// +RealNode::RealNode() +{ + value = S_REAL_NULL; +} + +RealNode::~RealNode() +{ +} + SingleLinkNode * RealNode::NewNode () { +#ifdef __OSTORE__ + return new (os_segment::of(this), + RealNode::get_os_typespec()) RealNode(); +#else return new RealNode(); +#endif } Severity RealNode::StrToVal(const char *s, ErrorDescriptor *err) { - if( ReadReal(value, s, err, ",)") ) // returns true if value is assigned + if( ReadReal(value, s, err, (char*)(",)")) ) // returns true if value is assigned _null = 0; else { @@ -1601,7 +1933,7 @@ RealNode::StrToVal(const char *s, ErrorDescriptor *err) Severity RealNode::StrToVal(G4std::istream &in, ErrorDescriptor *err) { - if( ReadReal(value, in, err, ",)") ) // returns true if value is assigned + if( ReadReal(value, in, err, (char*)(",)")) ) // returns true if value is assigned _null = 0; else { @@ -1615,7 +1947,7 @@ RealNode::StrToVal(G4std::istream &in, ErrorDescriptor *err) Severity RealNode::STEPread(const char *s, ErrorDescriptor *err) { - if( ReadReal(value, s, err, ",)") ) // returns true if value is assigned + if( ReadReal(value, s, err, (char*)(",)")) ) // returns true if value is assigned _null = 0; else { @@ -1628,7 +1960,7 @@ RealNode::STEPread(const char *s, ErrorDescriptor *err) Severity RealNode::STEPread(G4std::istream &in, ErrorDescriptor *err) { - if( ReadReal(value, in, err, ",)") ) // returns true if value is assigned + if( ReadReal(value, in, err, (char*)(",)")) ) // returns true if value is assigned _null = 0; else { @@ -1646,14 +1978,15 @@ RealNode::asStr(SCLstring &s) } const char * -RealNode::STEPwrite(SCLstring &s) +RealNode::STEPwrite(SCLstring &s, const char *) { char tmp[BUFSIZ]; if(value != S_REAL_NULL) { // sprintf(tmp, "%.15g", value); - sprintf(tmp, "%.*g", Real_Num_Precision, value); - s = tmp; +// sprintf(tmp, "%.*g", Real_Num_Precision, value); +// s = tmp; + WriteReal(value,s); } else s.set_null(); @@ -1671,16 +2004,30 @@ RealNode::STEPwrite(G4std::ostream& out) // IntNode /////////////////////////////////////////////////////////////////////////////// +IntNode::IntNode() +{ + value = S_INT_NULL; +} + +IntNode::~IntNode() +{ +} + SingleLinkNode * IntNode::NewNode () { +#ifdef __OSTORE__ + return new (os_segment::of(this), + IntNode::get_os_typespec()) IntNode(); +#else return new IntNode(); +#endif } Severity IntNode::StrToVal(const char *s, ErrorDescriptor *err) { - if( ReadInteger(value, s, err, ",)") ) // returns true if value is assigned + if( ReadInteger(value, s, err, (char*)(",)")) ) // returns true if value is assigned _null = 0; else { @@ -1693,7 +2040,7 @@ IntNode::StrToVal(const char *s, ErrorDescriptor *err) Severity IntNode::StrToVal(G4std::istream &in, ErrorDescriptor *err) { - if( ReadInteger(value, in, err, ",)") )// returns true if value is assigned + if( ReadInteger(value, in, err, (char*)(",)")) )// returns true if value is assigned _null = 0; else { @@ -1706,7 +2053,7 @@ IntNode::StrToVal(G4std::istream &in, ErrorDescriptor *err) Severity IntNode::STEPread(const char *s, ErrorDescriptor *err) { - if( ReadInteger(value, s, err, ",)") ) // returns true if value is assigned + if( ReadInteger(value, s, err, (char*)(",)")) ) // returns true if value is assigned _null = 0; else { @@ -1719,7 +2066,7 @@ IntNode::STEPread(const char *s, ErrorDescriptor *err) Severity IntNode::STEPread(G4std::istream &in, ErrorDescriptor *err) { - if( ReadInteger(value, in, err, ",)") ) // returns true if value is assigned + if( ReadInteger(value, in, err, (char*)(",)")) ) // returns true if value is assigned _null = 0; else { @@ -1737,7 +2084,7 @@ IntNode::asStr(SCLstring &s) } const char * -IntNode::STEPwrite(SCLstring &s) +IntNode::STEPwrite(SCLstring &s, const char *) { char tmp[BUFSIZ]; if(value != S_INT_NULL) diff --git a/source/geometry/solids/STEP/src/STEPattribute.cc b/source/geometry/solids/STEP/src/STEPattribute.cc index e81499dc3c..dbc7381dc1 100644 --- a/source/geometry/solids/STEP/src/STEPattribute.cc +++ b/source/geometry/solids/STEP/src/STEPattribute.cc @@ -1,17 +1,7 @@ - - -// - - - -// -// $Id: STEPattribute.cc,v 1.4 1999/12/15 18:04:20 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// /* * NIST STEP Core Class Library * clstepcore/STEPattribute.cc -* May 1995 +* April 1997 * K. C. Morris * David Sauder @@ -19,10 +9,12 @@ * and is not subject to copyright. */ -/* */ +/* $Id: STEPattribute.cc,v 1.5 2000/01/21 13:42:56 gcosmo Exp $ */ -//static char rcsid[] =""; +//static char rcsid[] ="$Id: STEPattribute.cc,v 1.5 2000/01/21 13:42:56 gcosmo Exp $"; + +// Added inclusion of 'stream.h' for non-ISO setup - GC #ifndef G4USE_STD_NAMESPACE #ifndef WIN32 #include @@ -31,13 +23,13 @@ #include #include -#include +//#include #include #include #include -#include -#include -#include +//#include +#include +#include // REAL_NUM_PRECISION is defined in STEPattribute.h, and is also used // in aggregate real handling (STEPaggregate.cc) -- IMS 6 Jun 95 @@ -68,12 +60,16 @@ const int Real_Num_Precision = REAL_NUM_PRECISION; Severity STEPattribute::StrToVal (const char* s, InstMgr * instances, int addFileId) { + if ( RedefiningAttr() ) { + return RedefiningAttr()->StrToVal(s, instances, addFileId); + } + _error.ClearErrorMsg(); // also sets Severity to SEVERITY_NULL // set the value to be null (reinitialize the attribute value) set_null(); - int nullable = (aDesc->Optional().asInt() == sdaiTRUE); + int nullable = ( aDesc->Optional().asInt() == SCLBOOL(BTrue) ); // an empty str gets assigned NULL if (!s ) @@ -159,7 +155,7 @@ STEPattribute::StrToVal (const char* s, InstMgr * instances, int addFileId) case BINARY_TYPE: { - ptr.b->StrToVal(s, &_error); // call class SdaiBinary::StrToVal() + ptr.b->StrToVal(s, &_error); // call class SCLP23(Binary)::StrToVal() break; } case STRING_TYPE: @@ -187,7 +183,7 @@ STEPattribute::StrToVal (const char* s, InstMgr * instances, int addFileId) break; case SELECT_TYPE: - if (_error.severity( ptr.sh->STEPread(in, &_error, instances) ) + if (_error.severity( ptr.sh->STEPread(in, &_error, instances, 0) ) != SEVERITY_NULL) _error.AppendToDetailMsg (ptr.sh ->Error ()); break; @@ -218,13 +214,19 @@ STEPattribute::StrToVal (const char* s, InstMgr * instances, int addFileId) // the delim separating the last attribute from the end of the entity (')'). Severity -STEPattribute::STEPread (G4std::istream& in, InstMgr * instances, int addFileId) +STEPattribute::STEPread (G4std::istream& in, InstMgr * instances, int addFileId, + const char *currSch) { - char errStr[BUFSIZ]; errStr[0] = '\0'; char c ='\0'; + // The attribute has been redefined by the attribute pointed + // to by _redefAttr so write the redefined value. + if ( RedefiningAttr() ) { + return RedefiningAttr()->STEPread(in, instances, addFileId, currSch); + } + _error.ClearErrorMsg(); // also sets Severity to SEVERITY_NULL // set the value to be null (reinitialize the attribute value) @@ -234,13 +236,61 @@ STEPattribute::STEPread (G4std::istream& in, InstMgr * instances, int addFileId) in >> c; in.putback (c); // leave input stream alone +/* +// This precludes using this attribute to read the value for the redefined +// attr. + + // this is redefining another attr, it should not be written in a Part 21 + // file. It may be written using an asterisk. + if( aDesc->AttrType() == AttrType_Redefining ) + { + if(c == '*') + { + in.get(c); // take * off the G4std::istream + _error.severity(SEVERITY_WARNING); + sprintf(errStr, " WARNING: attribute %s of type %s, %s", + aDesc->Name(), aDesc->TypeName(), + "Removing asterisk for redefining attribute.\n"); + _error.AppendToDetailMsg(errStr); + CheckRemainingInput(in, &_error, aDesc->TypeName(), ",)"); + return _error.severity(); + } + else + { // The redefining attribute should not be mapped to a Part 21 file + // anyway so pretend that this function was not called and don't + // read anything. + _error.severity(SEVERITY_NULL); + return _error.severity(); + } + } +*/ + + if(IsDerived()) + { + if(c == '*') + { + in.get(c); // take * off the G4std::istream + _error.severity(SEVERITY_NULL); + } + else + { + _error.severity(SEVERITY_WARNING); + sprintf(errStr, " WARNING: attribute %s of type %s, %s", + aDesc->Name(), aDesc->TypeName(), + "Missing asterisk for derived attribute.\n"); + _error.AppendToDetailMsg(errStr); + } + CheckRemainingInput(in, &_error, aDesc->TypeName(), ",)"); + return _error.severity(); + } + // check for NULL or derived attribute value, return if either switch (c) { case '$': case ',': case ')': - if (c == '$') + if (c == '$') { in.get(c); CheckRemainingInput(in, &_error, aDesc->TypeName(), ",)"); @@ -256,18 +306,24 @@ STEPattribute::STEPread (G4std::istream& in, InstMgr * instances, int addFileId) _error.AppendToDetailMsg(errStr); } return _error.severity(); - +/* case '*': - in.get(c); // take * off the G4std::istream - if (IsDerived ()) + { + in.get(c); // take * off the G4std::istream + if( IsDerived() ) _error.severity(SEVERITY_NULL); - else { - _error.severity(SEVERITY_INCOMPLETE); - sprintf(errStr, " attribute not derived\n"); - _error.AppendToDetailMsg(errStr); - } - CheckRemainingInput(in, &_error, aDesc->TypeName(), ",)"); - return _error.severity(); + else if( aDesc->AttrType() == AttrType_Redefining ) + _error.severity(SEVERITY_NULL); + else { + _error.severity(SEVERITY_INCOMPLETE); + sprintf(errStr, + " attribute not derived or redefining an attribute\n"); + _error.AppendToDetailMsg(errStr); + } + CheckRemainingInput(in, &_error, aDesc->TypeName(), ",)"); + return _error.severity(); + } +*/ } PrimitiveType attrBaseType = NonRefType(); @@ -275,17 +331,17 @@ STEPattribute::STEPread (G4std::istream& in, InstMgr * instances, int addFileId) { case INTEGER_TYPE: { - int valAssigned = ReadInteger(*(ptr.i), in, &_error, ",)"); + int valAssigned = ReadInteger(*(ptr.i), in, &_error, (char*)(",)")); return _error.severity(); } case REAL_TYPE: { - int valAssigned = ReadReal(*(ptr.r), in, &_error, ",)"); + int valAssigned = ReadReal(*(ptr.r), in, &_error, (char*)(",)")); return _error.severity(); } case NUMBER_TYPE: { - int valAssigned = ReadNumber(*(ptr.r), in, &_error, ",)"); + int valAssigned = ReadNumber(*(ptr.r), in, &_error, (char*)(",)")); return _error.severity(); } case STRING_TYPE: @@ -295,14 +351,14 @@ STEPattribute::STEPread (G4std::istream& in, InstMgr * instances, int addFileId) return _error.severity(); } case BINARY_TYPE: - { // call class SdaiBinary::STEPread() + { // call class SCLP23(Binary)::STEPread() ptr.b->STEPread(in, &_error); CheckRemainingInput(in, &_error, "binary", ",)"); return _error.severity(); } case BOOLEAN_TYPE: { -// int nullable = (aDesc->Optional().asInt() == sdaiTRUE); +// int nullable = (aDesc->Optional().asInt() == OPBOOL(BTrue) ); ptr.e->STEPread (in, &_error, Nullable()); CheckRemainingInput(in, &_error, "boolean", ",)"); return _error.severity(); @@ -327,7 +383,7 @@ STEPattribute::STEPread (G4std::istream& in, InstMgr * instances, int addFileId) { ptr.a->STEPread(in, &_error, aDesc->AggrElemTypeDescriptor(), - instances, addFileId); + instances, addFileId, currSch); // cannot recover so give up and let STEPentity recover if(_error.severity() < SEVERITY_WARNING) @@ -339,7 +395,7 @@ STEPattribute::STEPread (G4std::istream& in, InstMgr * instances, int addFileId) } case ENTITY_TYPE: { - STEPentity *se = ReadEntityRef(in, &_error, ",)", instances, + STEPentity *se = ReadEntityRef(in, &_error, (char*)(",)"), instances, addFileId); if( se != S_ENTITY_NULL ) { @@ -359,9 +415,11 @@ STEPattribute::STEPread (G4std::istream& in, InstMgr * instances, int addFileId) } case SELECT_TYPE: - if (_error.severity( ptr.sh->STEPread(in, &_error, instances, addFileId) ) - != SEVERITY_NULL) + if ( _error.severity( ptr.sh->STEPread(in, &_error, instances, 0, + addFileId, currSch) ) + != SEVERITY_NULL ) { _error.AppendToDetailMsg (ptr.sh ->Error ()); + } CheckRemainingInput(in, &_error, "select", ",)"); return _error.severity(); @@ -386,38 +444,61 @@ STEPattribute::STEPread (G4std::istream& in, InstMgr * instances, int addFileId) } } -/****************************************************************** +/********************************************************************* ** Procedure: asStr - ** Parameters: - ** Returns: + ** Parameters: currSch - used for select type writes. See commenting + ** in SCLP23(Select)::STEPwrite(). + ** Returns: ** Description: the value of the attribute is returned as a string. ** Side Effects: ** Status: complete 3/91 - ******************************************************************/ + *********************************************************************/ const char * -STEPattribute::asStr (SCLstring& str) const +STEPattribute::asStr (SCLstring& str, const char *currSch) const { // char attrVal[BUFSIZ]; // attrVal[0] = '\0'; str.set_null(); + + // The attribute has been derived by a subtype's attribute if (IsDerived ()) { str = "*"; return str.chars(); } + +/* + // The attribute is redefining the type of a parent's attribute so... + // If explicitly directed to write the attribute value by the + // redefined attribute then write it - indicated by writeRedefined param. + // If not explicitly directed to write value, write asterisk - see Part 21. + // got rid of param writeRedefined + // see technical corrigendum for Part 21 + if (!writeRedefined && (aDesc->AttrType() == AttrType_Redefining) ) { + str = "*"; + return str.chars(); + } +*/ + // The attribute has been redefined by the attribute pointed + // to by _redefAttr so write the redefined value. + if ( _redefAttr ) { + return _redefAttr->asStr( str, currSch ); + } + if (is_null ()) { str = ""; return str.chars(); } switch (NonRefType()) { case INTEGER_TYPE: - str.Append (*(ptr.i)); + str.Append (*(ptr.i)); // sprintf ( attrVal,"%ld",*(ptr.i)); break; case NUMBER_TYPE: case REAL_TYPE: - str.Append (*(ptr.r)); -// sprintf (attrVal, "%.*g", (int) Real_Num_Precision, *(ptr.r)); + + str.Append (*(ptr.r), (int) Real_Num_Precision); +// sprintf (attrVal, "%.*G", (int) Real_Num_Precision, *(ptr.r)); break; case ENTITY_TYPE: - // Print instance id only if not empty pointer + // print instance id only if not empty pointer // and has value assigned if ((*(ptr.c) == S_ENTITY_NULL) || (*(ptr.c) == 0)) break; @@ -453,7 +534,7 @@ STEPattribute::asStr (SCLstring& str) const return ptr.e -> asStr(str); case SELECT_TYPE: - ptr.sh -> STEPwrite (str); + ptr.sh -> STEPwrite ( str, currSch ); return str; // strncpy (attrVal, tmp.chars(), BUFSIZ); @@ -475,13 +556,33 @@ STEPattribute::asStr (SCLstring& str) const // The output is in physical file format. void -STEPattribute::STEPwrite (G4std::ostream& out) +STEPattribute::STEPwrite (G4std::ostream& out, const char *currSch) { - if (IsDerived ()) { + // The attribute has been derived by a subtype's attribute + if ( IsDerived() ) { out << "*"; return; } +/* + // The attribute is redefining the type of a parent's attribute so... + // If explicitly directed to write the attribute value by the + // redefined attribute then write it - indicated by writeRedefined param. + // If not explicitly directed to write value, write asterisk - see Part 21. + // got rid of param writeRedefined + // see technical corrigendum for Part 21 + if (!writeRedefined && (aDesc->AttrType() == AttrType_Redefining) ) { + out << "*"; + return; + } +*/ + // The attribute has been redefined by the attribute pointed + // to by _redefAttr so write the redefined value. + if ( RedefiningAttr() ) { + RedefiningAttr()->STEPwrite(out); + return; + } + if (is_null ()) { out << "$"; return; @@ -496,11 +597,14 @@ STEPattribute::STEPwrite (G4std::ostream& out) case NUMBER_TYPE: case REAL_TYPE: { - real tmp = *(ptr.r); + WriteReal(*(ptr.r),out); +/* + char rbuf[64]; + SCLP23(Real) tmp = *(ptr.r); // IMS (6 Jun 95): // Previously, this code was explicitly rounding reals with - // Magnitude smaller than 1e-9, by doing the following: + // magnitude smaller than 1e-9, by doing the following: // if(tmp > -.00000001 && tmp < .00000001) out << 0.0; // else... @@ -509,15 +613,41 @@ STEPattribute::STEPwrite (G4std::ostream& out) // style output used below should shift such things to e-notation // automagically. - char* outBuf=""; - sprintf(outBuf, "%.*G", (int) Real_Num_Precision,tmp); - out << outBuf; +// out << form("%.*G", (int) Real_Num_Precision,tmp); + // replace the above line with this code so that writing the '.' is + // guaranteed for reals. If you use e or E then you get many + // unnecessary trailing zeros. g and G truncates all trailing zeros + // to save space but when no non-zero precision exists it also + // truncates the decimal. The decimal is required by Part 21. + // Also use G instead of g since G writes uppercase E (E instead of e + // is also required by Part 21) when scientific notation is used - DAS + sprintf(rbuf, "%.*G", (int) Real_Num_Precision,tmp); + if(!strchr(rbuf, '.')) + { + int rindex = strlen(rbuf); + rbuf[rindex] = '.'; + rbuf[rindex+1] = '\0'; + } + out << rbuf; +*/ + // IMS (21 Jul 95) + // Real values, according to Part 21, _must_ have a fractional part. + // So make sure we have one on integral values: + + // this works sometimes but doesn't work when the value has enough + // significant digits that the fraction gets truncated (and can't be + // represented) but is not big enough that scientific notation gets + // used. There may be other cases where it doesn't work but one is + // enough. DAS +// if (tmp == int(tmp)) // tmp doesn't have a fraction +// out << ".0"; + break; } case ENTITY_TYPE: - // Print instance id only if not empty pointer + // print instance id only if not empty pointer if ((*(ptr.c) == 0) || // no value was assigned <-- this would be a BUG (*(ptr.c) == S_ENTITY_NULL) ) @@ -553,7 +683,7 @@ STEPattribute::STEPwrite (G4std::ostream& out) _error.GreaterSeverity(SEVERITY_BUG); sprintf(errStr, " Warning: attribute '%s : %s' should be pointing at %s", - Name(), TypeName(), "an SdaiString.\n"); + Name(), TypeName(), "an SCLP23(String).\n"); _error.AppendToUserMsg(errStr); _error.AppendToDetailMsg(errStr); } @@ -574,7 +704,7 @@ STEPattribute::STEPwrite (G4std::ostream& out) _error.GreaterSeverity(SEVERITY_BUG); sprintf(errStr, " Warning: attribute '%s : %s' should be pointing at %s", - Name(), TypeName(), "an SdaiBinary.\n"); + Name(), TypeName(), "an SCLP23(Binary).\n"); _error.AppendToUserMsg(errStr); _error.AppendToDetailMsg(errStr); } @@ -585,7 +715,7 @@ STEPattribute::STEPwrite (G4std::ostream& out) case BAG_TYPE: // DAS case SET_TYPE: // DAS case LIST_TYPE: // DAS - ptr.a -> STEPwrite (out); + ptr.a -> STEPwrite (out, currSch); break; case ENUM_TYPE: @@ -604,7 +734,7 @@ STEPattribute::STEPwrite (G4std::ostream& out) _error.GreaterSeverity(SEVERITY_BUG); sprintf(errStr, " Warning: attribute '%s : %s' should be pointing at %s", - Name(), TypeName(), "a STEPenumeration class.\n"); + Name(), TypeName(), "a SCLP23(Enum) class.\n"); _error.AppendToUserMsg(errStr); _error.AppendToDetailMsg(errStr); } @@ -612,7 +742,7 @@ STEPattribute::STEPwrite (G4std::ostream& out) case SELECT_TYPE: if(ptr.sh) - ptr.sh -> STEPwrite (out); + ptr.sh -> STEPwrite (out, currSch); else { out << "$"; @@ -624,7 +754,7 @@ STEPattribute::STEPwrite (G4std::ostream& out) _error.GreaterSeverity(SEVERITY_BUG); sprintf(errStr, " Warning: attribute '%s : %s' should be pointing at %s", - Name(), TypeName(), "a STEPselect class.\n"); + Name(), TypeName(), "a SCLP23(Select) class.\n"); _error.AppendToUserMsg(errStr); _error.AppendToDetailMsg(errStr); } @@ -646,9 +776,12 @@ STEPattribute::STEPwrite (G4std::ostream& out) } -BOOLEAN +int STEPattribute::ShallowCopy(STEPattribute *sa) { + if ( RedefiningAttr() ) { + return RedefiningAttr()->ShallowCopy(sa); + } switch(sa->NonRefType()) { case INTEGER_TYPE: @@ -690,13 +823,16 @@ STEPattribute::ShallowCopy(STEPattribute *sa) return 1; } -// for a string attribute this means make it not exist i.e. STEPstring will -// exist in member variable ptr but STEPstring will be told to report as not -// containing a value (even a value of no chars). +// for a string attribute this means, make it not exist i.e. SCLP23(String) +// will exist in member variable ptr but SCLP23(string) will be told to report +// as not containing a value (even a value of no chars). Severity STEPattribute::set_null() { + if ( RedefiningAttr() ) { + return RedefiningAttr()->set_null(); + } switch (NonRefType()) { case INTEGER_TYPE: *(ptr.i) = S_INT_NULL; @@ -769,11 +905,14 @@ STEPattribute::set_null() } // For a string value this reports whether the string exists (as reported by -// STEPstring) not whether STEPstring contains a null string. +// SCLP23(String) ) not whether SCLP23(String) contains a null string. -BOOLEAN +int STEPattribute::is_null () const { + if ( _redefAttr ) { + return _redefAttr->is_null(); + } switch ( NonRefType() ) { case INTEGER_TYPE: @@ -858,6 +997,9 @@ STEPattribute::ValidLevel (const char *attrValue, ErrorDescriptor *error, if(clearError) ClearErrorMsg(); + if ( RedefiningAttr() ) { + return RedefiningAttr()->ValidLevel(attrValue, error, im, clearError); + } int optional = Nullable(); if( !attrValue ) @@ -945,7 +1087,7 @@ STEPattribute::ValidLevel (const char *attrValue, ErrorDescriptor *error, ** Parameters: G4std::ostream & out -- output stream ** STEPattribute & a -- attribute to output ** Returns: G4std::ostream & - ** Description: overloads the output operator to Print an attribute + ** Description: overloads the output operator to print an attribute ******************************************************************/ G4std::ostream &operator<< ( G4std::ostream& out, STEPattribute& a ) @@ -959,7 +1101,8 @@ G4std::ostream &operator<< ( G4std::ostream& out, STEPattribute& a ) ///////////////////////////// AddErrorInfo() ////////////////////////////////// // This adds prepends attribute information to the detailed error msg. This // is intended to add information to the error msgs written by Enumerations, -// Aggregates, and STEPstrings which don't know they are a STEPattribute value. +// Aggregates, and SCLP23(String)s which don't know they are a STEPattribute +// value. /////////////////////////////////////////////////////////////////////////////// void diff --git a/source/geometry/solids/STEP/src/STEPattributeList.cc b/source/geometry/solids/STEP/src/STEPattributeList.cc index b0fa768fd4..d33e3f355f 100644 --- a/source/geometry/solids/STEP/src/STEPattributeList.cc +++ b/source/geometry/solids/STEP/src/STEPattributeList.cc @@ -1,18 +1,8 @@ - -// - - - -// -// $Id: STEPattributeList.cc,v 1.2 1999/05/21 20:20:49 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - /* * NIST STEP Core Class Library * clstepcore/STEPattributeList.cc -* May 1995 +* April 1997 * K. C. Morris * David Sauder @@ -20,13 +10,30 @@ * and is not subject to copyright. */ -/* */ +/* $Id: STEPattributeList.cc,v 1.3 2000/01/21 13:42:56 gcosmo Exp $ */ #include #include //#include +AttrListNode::AttrListNode(STEPattribute *a) +{ + attr = a; +} + +AttrListNode::~AttrListNode() +{ +} + + +STEPattributeList::STEPattributeList() +{ +} + +STEPattributeList::~STEPattributeList() +{ +} STEPattribute& STEPattributeList::operator [] (int n) { @@ -39,12 +46,11 @@ STEPattribute& STEPattributeList::operator [] (int n) a = (AttrListNode *)(a->next); x++; } - if (a) return *(a->attr); - - // else - G4cerr << "\nERROR in STEP Core library: " << __FILE__ << ":" - << __LINE__ << "\n" << _POC_ << "\n\n"; - return *(((AttrListNode *)head)->attr); + // Fixed return value - GC + if (!a) + G4cerr << "\nERROR in STEP Core library: " << __FILE__ << ":" + << __LINE__ << "\n" << _POC_ << "\n\n"; + return *(a->attr); } int STEPattributeList::list_length() @@ -54,7 +60,12 @@ int STEPattributeList::list_length() void STEPattributeList::push(STEPattribute *a) { +#ifdef __OSTORE__ + AttrListNode *saln = new (os_database::of(this), + AttrListNode::get_os_typespec()) AttrListNode(a); +#else AttrListNode *saln = new AttrListNode(a); +#endif AppendNode (saln); } diff --git a/source/geometry/solids/STEP/src/STEPattribute_inline.cc b/source/geometry/solids/STEP/src/STEPattribute_inline.cc index fcc76fd139..7945b7a74c 100644 --- a/source/geometry/solids/STEP/src/STEPattribute_inline.cc +++ b/source/geometry/solids/STEP/src/STEPattribute_inline.cc @@ -1,18 +1,8 @@ - -// - - - -// -// $Id: STEPattribute_inline.cc,v 1.2 1999/05/21 20:20:49 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - /* * NIST STEP Core Class Library * clstepcore/STEPattribute.inline.cc -* May 1995 +* April 1997 * K. C. Morris * David Sauder @@ -20,92 +10,112 @@ * and is not subject to copyright. */ -/* */ +/* $Id: STEPattribute_inline.cc,v 1.3 2000/01/21 13:42:56 gcosmo Exp $ */ #include #include +#include // This is needed so that STEPattribute's can be passed as // references to inline functions STEPattribute::STEPattribute (const STEPattribute& a) -: aDesc (a.aDesc), _derive (0) {} +: aDesc (a.aDesc), _derive (0), _redefAttr (0) {} // INTEGER -STEPattribute::STEPattribute (const class AttrDescriptor& d, SdaiInteger *p) -: aDesc (&d), _derive (0) +STEPattribute::STEPattribute (const class AttrDescriptor& d, SCLP23(Integer) *p) +: aDesc (&d), _derive (0), _redefAttr (0) { ptr.i = p; } // BINARY -STEPattribute::STEPattribute (const class AttrDescriptor& d, SdaiBinary *p) -: aDesc (&d), _derive (0) +STEPattribute::STEPattribute (const class AttrDescriptor& d, SCLP23(Binary) *p) +: aDesc (&d), _derive (0), _redefAttr (0) {ptr.b =p; } // STRING -STEPattribute::STEPattribute (const class AttrDescriptor& d, SdaiString *p) -: aDesc (&d), _derive (0) +STEPattribute::STEPattribute (const class AttrDescriptor& d, SCLP23(String) *p) +: aDesc (&d), _derive (0), _redefAttr (0) {ptr.S =p; } // REAL & NUMBER -STEPattribute::STEPattribute (const class AttrDescriptor& d, SdaiReal *p) -: aDesc (&d), _derive (0) +STEPattribute::STEPattribute (const class AttrDescriptor& d, SCLP23(Real) *p) +: aDesc (&d), _derive (0), _redefAttr (0) { ptr.r = p; } // REAL_PTR /*STEPattribute::STEPattribute (const class AttrDescriptor& d, real **p) -: aDesc (&d), _derive (0) +: aDesc (&d), _derive (0), _redefAttr (0) { ptr.rp = p; } */ // ENTITY -STEPattribute::STEPattribute (const class AttrDescriptor& d, STEPentity* *p) -: aDesc (&d), _derive (0) +STEPattribute::STEPattribute (const class AttrDescriptor& d, + SCLP23(Application_instance)* *p) +: aDesc (&d), _derive (0), _redefAttr (0) { ptr.c = p; } // AGGREGATE STEPattribute::STEPattribute (const class AttrDescriptor& d, STEPaggregate *p) -: aDesc (&d), _derive (0) +: aDesc (&d), _derive (0), _redefAttr (0) { ptr.a = p; } // ENUMERATION and Logical -STEPattribute::STEPattribute (const class AttrDescriptor& d, STEPenumeration *p) -: aDesc (&d), _derive (0) +STEPattribute::STEPattribute (const class AttrDescriptor& d, SCLP23(Enum) *p) +: aDesc (&d), _derive (0), _redefAttr (0) { ptr.e = p; } // SELECT -STEPattribute::STEPattribute (const class AttrDescriptor& d, class SdaiSelect *p) -: aDesc (&d), _derive (0) +STEPattribute::STEPattribute (const class AttrDescriptor& d, + class SCLP23(Select) *p) +: aDesc (&d), _derive (0), _redefAttr (0) { ptr.sh = p; } // UNDEFINED STEPattribute::STEPattribute (const class AttrDescriptor& d, SCLundefined *p) -: aDesc (&d), _derive (0) +: aDesc (&d), _derive (0), _redefAttr (0) { ptr.u = p; } -const s_String +// name is the same even if redefined +const char * STEPattribute::Name() const - { return aDesc->Name(); } +{ + return aDesc->Name(); +} -const s_String +const char * STEPattribute::TypeName() const - { return aDesc->TypeName(); } +{ + if ( _redefAttr ) { + return _redefAttr->TypeName(); + } + return aDesc->TypeName(); +} const BASE_TYPE STEPattribute::Type() const { - return aDesc->Type(); + if ( _redefAttr ) { + return _redefAttr->Type(); + } + return aDesc->Type(); } const BASE_TYPE STEPattribute::NonRefType() const -{ - return aDesc->NonRefType(); +{ + if ( _redefAttr ) { + return _redefAttr->NonRefType(); + } + return aDesc->NonRefType(); } const BASE_TYPE STEPattribute::BaseType() const -{ - return aDesc->BaseType(); +{ + if ( _redefAttr ) { + return _redefAttr->BaseType(); + } + return aDesc->BaseType(); } /* @@ -119,11 +129,17 @@ STEPattribute::ReferentEntity() const const TypeDescriptor * STEPattribute::ReferentType() const { - return aDesc->ReferentType(); + if ( _redefAttr ) { + return _redefAttr->ReferentType(); + } + return aDesc->ReferentType(); } -BOOLEAN +int STEPattribute::Nullable() const { - return (aDesc->Optionality().asInt() == T); + if ( _redefAttr ) { + return _redefAttr->Nullable(); + } + return ( aDesc->Optionality().asInt() == SCLLOG(LTrue) ); } diff --git a/source/geometry/solids/STEP/src/STEPcomplex.cc b/source/geometry/solids/STEP/src/STEPcomplex.cc index 1d5369965f..10c0172a1e 100644 --- a/source/geometry/solids/STEP/src/STEPcomplex.cc +++ b/source/geometry/solids/STEP/src/STEPcomplex.cc @@ -1,24 +1,19 @@ - -// - - - -// -// $Id: STEPcomplex.cc,v 1.3 1999/12/15 14:50:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - #include #include +#include +#include extern const char * ReadStdKeyword(G4std::istream& in, SCLstring &buf, int skipInitWS); +#ifdef WIN32 + typedef SDAI::Application_instance StepApplicationInstanceType; +#endif STEPcomplex::STEPcomplex(Registry *registry, int fileid) -: STEPentity(fileid, 1), sc(0), _registry(registry), visited(0) +: SCLP23(Application_instance)(fileid, 1), sc(0), _registry(registry), visited(0) { head = this; /* @@ -29,74 +24,139 @@ STEPcomplex::STEPcomplex(Registry *registry, int fileid) */ } -STEPcomplex::STEPcomplex(Registry *registry, const SCLstring **names, - int fileid) -: STEPentity(fileid, 1), sc(0), _registry(registry), visited(0) +STEPcomplex::STEPcomplex(Registry *registry, const SCLstring **names, + int fileid, const char *schnm) +: SCLP23(Application_instance)(fileid, 1), sc(0), _registry(registry), visited(0) { + char *nms[BUFSIZ]; + SCLstring *name; + int j, k; + head = this; -/* - _complex = 1; - _registry = registry; - sc = 0; - visited = 0; -*/ - if(names[0]) - { - BuildAttrs( names[0]->chars() ); + // Create a char ** list of names and call Initialize to build all: + for ( j=0; names[j]; j++ ) { + nms[j] = new char[ (names[j])->Length() + 1 ]; + strcpy( nms[j], names[j]->chars() ); } - int i = 1; - while(!eDesc && names[i]) - { - // at least 1 entity part did not have a valid name - _error.GreaterSeverity(SEVERITY_INCOMPLETE); - BuildAttrs( names[i]->chars() ); - i++; + nms[j] = NULL; + Initialize( (const char **)nms, schnm ); + for ( k=0; kchars() ); - i++; - } - AssignDerives(); } -STEPcomplex::STEPcomplex(Registry *registry, const char **names, - int fileid) -: STEPentity(fileid, 1), sc(0), _registry(registry), visited(0) +STEPcomplex::STEPcomplex(Registry *registry, const char **names, int fileid, + const char *schnm) +: SCLP23(Application_instance)(fileid, 1), sc(0), _registry(registry), visited(0) { head = this; -/* - _complex = 1; - _registry = registry; - sc = 0; - visited = 0; -*/ + Initialize( names, schnm ); +} - if(names[0]) - { - BuildAttrs(names[0]); - } - int i = 1; - while(!eDesc && names[i]) - { - // at least 1 entity part did not have a valid name - _error.GreaterSeverity(SEVERITY_INCOMPLETE); - BuildAttrs( names[i] ); - i++; - } - if(!eDesc) // no entity part had a valid name - _error.GreaterSeverity(SEVERITY_WARNING); +void +STEPcomplex::Initialize( const char **names, const char *schnm ) + /* + * Called by the STEPcomplex constructors to validate the names in our + * list, see if they represent a legal entity combination, and build the + * complex list. schnm is the name of the current schema if applicable. + * (One may be defined under the FILE_SCHEMA section of a Part 21 file + * header.) If the current schema is not the schema in which an entity + * was defined, it may be referenced by a different name in this schema. + * (This is the case if schema B USEs or REFERENCEs entity X from schema + * A and renames it to Y.) Registry::FindEntity() below knows how to + * search using the current name of each entity based on schnm. + */ +{ + // Create an EntNode list consisting of all the names in the complex ent: + EntNode *ents = new EntNode( names ), + *eptr = ents, *prev = NULL, *enext; + const EntityDescriptor *enDesc; + char nm[BUFSIZ]; + int invalid = 0, outOfOrder = 0; - while(names[i]) - { - AddEntityPart( names[i] ); - i++; + // Splice out the invalid names from our list: + while ( eptr ) { + enext = eptr->next; + enDesc = _registry->FindEntity( *eptr, schnm ); + if ( enDesc ) { + if ( enDesc->Supertypes().EntryCount() > 1 ) { + eptr->multSuprs( TRUE ); + } + if ( StrCmpIns( *eptr, enDesc->Name() ) ) { + // If this entity was referred by another name rather than the + // original. May be the case if FindEntity() determined that + // eptr's name was a legal renaming of enDesc's. (Entities and + // types may be renamed with the USE/REF clause - see header + // comments.) If so, change eptr's name (since the complex + // support structs only deal with the original names) and have + // ents re-ort eptr properly in the list: + eptr->Name( StrToLower( enDesc->Name(), nm ) ); + outOfOrder = 1; + } + prev = eptr; + } else { + invalid = 1; + G4cerr << "ERROR: Invalid entity \"" << eptr->Name() + << "\" found in complex entity.\n"; + if ( !prev ) { + // if we need to delete the first node, + ents = eptr->next; + } else { + prev->next = eptr->next; + } + eptr->next = NULL; + // must set eptr->next to NULL or next line would del entire list + delete eptr; + } + eptr = enext; + } + + // If we changed the name of any of the entities, resort: + if ( outOfOrder ) { + ents->sort( &ents ); + // This fn may change the value of ents if the list should have a new + // first EndNode. + } + + // Set error message according to results of above: + if ( invalid ) { + if ( !ents ) { + // not a single legal name + _error.severity(SEVERITY_WARNING); + // SEV_WARNING - we have to skip this entity altogether, but will + // continue with the next entity. + _error.UserMsg( "No legal entity names found in instance" ); + return; + } + _error.severity(SEVERITY_INCOMPLETE); + _error.UserMsg( "Some illegal entity names found in instance" ); + // some illegal entity names, but some legal + } + + // Check if a complex entity can be formed from the resulting combination: + if ( !_registry->CompCol()->supports( ents ) ) { + _error.severity(SEVERITY_WARNING); + _error.UserMsg( + "Entity combination does not represent a legal complex entity" ); + G4cerr << "ERROR: Could not create instance of the following complex" + << " entity:" << G4endl; + eptr = ents; + while ( eptr ) { + G4cerr << *eptr << G4endl; + eptr = eptr->next; + } + G4cerr << G4endl; + return; + } + + // Finally, build what we can: + BuildAttrs( *ents ); + for ( eptr = ents->next; eptr; eptr = eptr->next ) { + AddEntityPart( *eptr ); } AssignDerives(); + delete ents; } STEPcomplex::~STEPcomplex() @@ -131,7 +191,7 @@ STEPcomplex::AssignDerives() while( attrPtr != 0 ) { ad = attrPtr->AttrDesc(); - if( (LOGICAL)( ad->Derived() ) == sdaiTRUE) + if( ( ad->Derived() ) == SCLLOG(LTrue) ) { const char *nm = ad->Name(); const char *attrNm = 0; @@ -156,7 +216,7 @@ STEPcomplex::AssignDerives() } // if (a) a ->Derive (); } - // Increment attr + // increment attr attrPtr = (AttrDescLinkNode *)attrPtr->NextNode(); } scomp1 = scomp1->sc; @@ -164,7 +224,7 @@ STEPcomplex::AssignDerives() } // this function should only be called for the head entity -// in the List of entity parts. +// in the list of entity parts. void STEPcomplex::AddEntityPart(const char *name) @@ -190,7 +250,7 @@ STEPcomplex::AddEntityPart(const char *name) } STEPcomplex * -STEPcomplex::EntityPart(const char *name) +STEPcomplex::EntityPart(const char *name, const char *currSch) { STEPcomplex *scomp = head; SCLstring s1, s2; @@ -198,8 +258,7 @@ STEPcomplex::EntityPart(const char *name) { if(scomp->eDesc) { - if( !strcmp( StrToUpper(name, s1), - StrToUpper(scomp->eDesc->Name(), s2) ) ) + if ( scomp->eDesc->CurrName(name, currSch) ) return scomp; } else @@ -211,11 +270,24 @@ STEPcomplex::EntityPart(const char *name) } int -STEPcomplex::EntityExists(const char *name) +STEPcomplex::EntityExists(const char *name, const char *currSch) { - return (EntityPart(name) ? 1 : 0); + return (EntityPart(name, currSch) ? 1 : 0); } +// Check if a given entity (by descriptor) is the same as this one. +// For a complex entity, we'll check the EntityDescriptor of each entity +// in the complex 'chain' +const EntityDescriptor * +STEPcomplex::IsA(const EntityDescriptor *ed) const +{ + const EntityDescriptor *return_ed = eDesc->IsA(ed); + + if (!return_ed && sc) + return sc->IsA(ed); + else + return return_ed; +} Severity STEPcomplex::ValidLevel(ErrorDescriptor *error, InstMgr *im, @@ -237,7 +309,7 @@ STEPcomplex::AppendEntity(STEPcomplex *stepc) // READ Severity STEPcomplex::STEPread(int id, int addFileId, class InstMgr * instance_set, - G4std::istream& in) + G4std::istream& in, const char *currSch, int useTechCor) { char c; SCLstring typeNm; @@ -268,21 +340,31 @@ STEPcomplex::STEPread(int id, int addFileId, class InstMgr * instance_set, c = in.peek(); if(c != '(') { - _error.AppendToDetailMsg("Missing open paren before entity attr values.\n"); + _error.AppendToDetailMsg( + "Missing open paren before entity attr values.\n"); G4cout << "ERROR: missing open paren\n"; _error.GreaterSeverity(SEVERITY_INPUT_ERROR); STEPread_error(c,0,in); return _error.severity(); } - stepc = EntityPart(typeNm.chars()); + stepc = EntityPart(typeNm.chars(), currSch); if(stepc) - stepc->STEPentity::STEPread(id, addFileId, instance_set, in); +#ifndef WIN32 + stepc->SCLP23(Application_instance)::STEPread(id, addFileId, + instance_set, in, + currSch); +#else + stepc->StepApplicationInstanceType::STEPread(id, addFileId, + instance_set, in, + currSch); +#endif else { - G4cout << "ERROR: complex entity part does not exist.\n"; - _error.AppendToDetailMsg("Complex entity part of instance does not exist.\n"); - G4cout << "ERROR: missing open paren\n"; + G4cout << "ERROR: complex entity part \"" << typeNm.chars() + << "\" does not exist.\n"; + _error.AppendToDetailMsg( + "Complex entity part of instance does not exist.\n"); _error.GreaterSeverity(SEVERITY_INPUT_ERROR); STEPread_error(c,0,in); return _error.severity(); @@ -291,7 +373,8 @@ STEPcomplex::STEPread(int id, int addFileId, class InstMgr * instance_set, c = in.peek(); } if(c != ')') - G4cout << "ERROR: missing ending paren for complex entity instance.\n"; + G4cout << + "ERROR: missing ending paren for complex entity instance.\n"; else in.get(c); // read the closing paren } @@ -302,7 +385,7 @@ STEPcomplex::STEPread(int id, int addFileId, class InstMgr * instance_set, // READ Severity STEPcomplex::STEPread(int id, int addFileId, class InstMgr * instance_set, - G4std::istream& in) + G4std::istream& in, const char *currSch) { ClearError(1); STEPfile_id = id; @@ -337,7 +420,7 @@ STEPcomplex::STEPread(int id, int addFileId, class InstMgr * instance_set, if(c != '(') { _error.AppendToDetailMsg( - "Missing open paren before entity attr values.\n"); + "Missing open paren before entity attr values.\n"); G4cout << "ERROR: missing open paren\n"; _error.GreaterSeverity(SEVERITY_INPUT_ERROR); STEPread_error(c,0,in); @@ -348,7 +431,8 @@ STEPcomplex::STEPread(int id, int addFileId, class InstMgr * instance_set, G4cout << s.chars() << G4endl; BuildAttrs( s.chars() ); - STEPentity::STEPread(id, addFileId, instance_set, in); + SCLP23(Application_instance)::STEPread(id, addFileId, instance_set, + in, currSch); in >> G4std::ws; in.get(c); @@ -368,7 +452,7 @@ STEPcomplex::STEPread(int id, int addFileId, class InstMgr * instance_set, if(c != '(') { _error.AppendToDetailMsg( - "Missing open paren before entity attr values.\n"); + "Missing open paren before entity attr values.\n"); G4cout << "ERROR: missing open paren\n"; _error.GreaterSeverity(SEVERITY_INPUT_ERROR); STEPread_error(c,0,in); @@ -382,7 +466,9 @@ STEPcomplex::STEPread(int id, int addFileId, class InstMgr * instance_set, STEPcomplex *stepc = new STEPcomplex( _registry ); AppendEntity(stepc); stepc->BuildAttrs( s.chars() ); - stepc->STEPentity::STEPread(id, addFileId, instance_set, in); + stepc->SCLP23(Application_instance)::STEPread(id, addFileId, + instance_set, in, + currSch); in >> G4std::ws; in.get(c); } @@ -392,7 +478,7 @@ STEPcomplex::STEPread(int id, int addFileId, class InstMgr * instance_set, #endif -void +void STEPcomplex::BuildAttrs(const char *s ) { // assign inherited member variable @@ -415,51 +501,61 @@ STEPcomplex::BuildAttrs(const char *s ) { const AttrDescriptor *ad = attrPtr->AttrDesc(); - if( (LOGICAL)( ad->Derived() ) != sdaiTRUE) + if( ( ad->Derived() ) != SCLLOG(LTrue) ) { switch ( ad->NonRefType() ) { case INTEGER_TYPE: - a = new STEPattribute (*ad, new SdaiInteger); + a = new STEPattribute (*ad, new SCLP23(Integer)); break; case STRING_TYPE: - a = new STEPattribute (*ad, new SdaiString); + a = new STEPattribute (*ad, new SCLP23(String)); break; case BINARY_TYPE: - a = new STEPattribute (*ad, new SdaiBinary); + a = new STEPattribute (*ad, new SCLP23(Binary)); break; case REAL_TYPE: - a = new STEPattribute (*ad, new SdaiReal); + case NUMBER_TYPE: + a = new STEPattribute (*ad, new SCLP23(Real)); break; case BOOLEAN_TYPE: - a = new STEPattribute (*ad, new Boolean); + a = new STEPattribute (*ad, new SCLP23(BOOL)); break; case LOGICAL_TYPE: - a = new STEPattribute (*ad, new Logical); + a = new STEPattribute (*ad, new SCLP23(LOGICAL)); break; case ENTITY_TYPE: - a = new STEPattribute (*ad, new (STEPentity *) ); + a = new STEPattribute(*ad, + new (SCLP23(Application_instance)*)); break; case ENUM_TYPE: { EnumTypeDescriptor * enumD = (EnumTypeDescriptor *)ad->ReferentType(); +#ifdef __OSTORE__ + a = new STEPattribute (*ad, enumD->CreateEnum(os_database::of(this)) ); +#else a = new STEPattribute (*ad, enumD->CreateEnum() ); +#endif break; } case SELECT_TYPE: { SelectTypeDescriptor * selectD = (SelectTypeDescriptor *)ad->ReferentType(); +#ifdef __OSTORE__ + a = new STEPattribute (*ad, selectD->CreateSelect(os_database::of(this)) ); +#else a = new STEPattribute (*ad, selectD->CreateSelect() ); +#endif break; } case AGGREGATE_TYPE: @@ -470,7 +566,11 @@ STEPcomplex::BuildAttrs(const char *s ) { AggrTypeDescriptor * aggrD = (AggrTypeDescriptor *)ad->ReferentType(); +#ifdef __OSTORE__ + a = new STEPattribute (*ad, aggrD->CreateAggregate(os_database::of(this)) ); +#else a = new STEPattribute (*ad, aggrD->CreateAggregate() ); +#endif break; } } @@ -503,24 +603,33 @@ STEPcomplex::STEPread_error(char c, int index, G4std::istream& in) } // WRITE + +// These functions take into account the current schema, so that if an entity +// or attribute type is renamed in this schema (using the USE/REF clause) the +// new name is written out. They do not, however, comply with the requirement +// in the standard that the entity parts of a complex entity must be printed in +// alphabetical order. The nodes are sorted alphabetically according to their +// original names but not according to their renamed names (DAR 6/5/97). + void -STEPcomplex::STEPwrite(G4std::ostream& out, int writeComment) +STEPcomplex::STEPwrite(G4std::ostream& out, const char *currSch, int writeComment) { if(writeComment && p21Comment && !p21Comment->is_null() ) out << p21Comment->chars(); out << "#" << STEPfile_id << "=("; - WriteExtMapEntities(out); + WriteExtMapEntities(out, currSch); out << ");\n"; } const char * -STEPcomplex::STEPwrite(SCLstring &buf) +STEPcomplex::STEPwrite(SCLstring &buf, const char *currSch) { buf.set_null(); buf.Append('#'); buf.Append(STEPfile_id); buf.Append('='); + buf.Append('('); /* char instanceInfo[BUFSIZ]; sprintf(instanceInfo, "#%d=", STEPfile_id ); @@ -528,7 +637,7 @@ STEPcomplex::STEPwrite(SCLstring &buf) /* G4std::strstream ss; ss << "#" << STEPfile_id << "=("; - WriteExtMapEntities(ss); + WriteExtMapEntities(ss, currSch); ss << ");"; ss << G4std::ends; @@ -536,33 +645,33 @@ STEPcomplex::STEPwrite(SCLstring &buf) buf.Append(tmpstr); delete tmpstr; */ - WriteExtMapEntities(buf); + WriteExtMapEntities(buf, currSch); buf.Append(");"); return buf.chars(); } void -STEPcomplex::WriteExtMapEntities(G4std::ostream& out) +STEPcomplex::WriteExtMapEntities(G4std::ostream& out, const char *currSch) { SCLstring tmp; - out << StrToUpper (EntityName(), tmp); + out << StrToUpper (EntityName( currSch ), tmp); out << "("; int n = attributes.list_length(); for (int i = 0 ; i < n; i++) { - (attributes[i]).STEPwrite(out); + (attributes[i]).STEPwrite(out, currSch); if (i < n-1) out << ","; } out << ")"; if(sc) { - sc->WriteExtMapEntities(out); + sc->WriteExtMapEntities(out, currSch); } } const char * -STEPcomplex::WriteExtMapEntities(SCLstring &buf) +STEPcomplex::WriteExtMapEntities(SCLstring &buf, const char *currSch) { char instanceInfo[BUFSIZ]; @@ -570,13 +679,13 @@ STEPcomplex::WriteExtMapEntities(SCLstring &buf) // sprintf(instanceInfo, "%s(", (char *)StrToUpper( EntityName(), tmp ) ); // buf.Append(instanceInfo); - buf.Append( (char *)StrToUpper(EntityName(),tmp) ); + buf.Append( (char *)StrToUpper(EntityName( currSch ),tmp) ); buf.Append( '(' ); int n = attributes.list_length(); for (int i = 0 ; i < n; i++) { - attributes[i].asStr(tmp) ; + attributes[i].asStr(tmp, currSch) ; buf.Append (tmp); if (i < n-1) { buf.Append( ',' ); @@ -586,14 +695,104 @@ STEPcomplex::WriteExtMapEntities(SCLstring &buf) if(sc) { - sc->WriteExtMapEntities(buf); + sc->WriteExtMapEntities(buf, currSch); } return buf.chars(); } void -STEPcomplex::CopyAs (STEPentity *) +STEPcomplex::CopyAs (SCLP23(Application_instance) *se) { - G4cout << "ERROR: STEPcomplex::CopyAs() not implemented.\n"; + if( !se->IsComplex() ) + { + char errStr[BUFSIZ]; + G4cerr << "STEPcomplex::CopyAs() called with non-complex entity: " + << __FILE__ << __LINE__ << "\n" << _POC_ "\n"; + sprintf(errStr, + "STEPcomplex::CopyAs(): %s - entity #%d.\n", + "Programming ERROR - called with non-complex entity", + STEPfile_id); + _error.AppendToDetailMsg(errStr); + _error.AppendToUserMsg(errStr); + _error.GreaterSeverity(SEVERITY_BUG); + return; + } + else + { +// STEPcomplex * sc = 0; + + STEPcomplex * scpartCpyTo = head; + STEPcomplex * scpartCpyFrom = ((STEPcomplex *)se)->head; + while(scpartCpyTo && scpartCpyFrom) + { +#ifndef WIN32 + scpartCpyTo->SCLP23(Application_instance)::CopyAs (scpartCpyFrom); +#else + scpartCpyTo->StepApplicationInstanceType::CopyAs (scpartCpyFrom); +#endif + scpartCpyTo = scpartCpyTo->sc; + scpartCpyFrom = scpartCpyFrom->sc; + } + } +// G4cout << "ERROR: STEPcomplex::CopyAs() not implemented.\n"; +} + +SCLP23(Application_instance) * +STEPcomplex::Replicate() +{ + if(!IsComplex()) + { +#ifndef WIN32 + return SCLP23(Application_instance)::Replicate(); +#else + return StepApplicationInstanceType::Replicate(); +#endif + } + else if (!_registry) { return S_ENTITY_NULL; } + else + { + int nameCount = 64; + +// Don't use this syntax it makes the sun compiler think it is a cast. DAS +// SCLstring **nameList = new (SCLstring *)[nameCount]; + + SCLstring **nameList = new SCLstring *[nameCount]; + STEPcomplex *scomp = this->head; + int i = 0; + while( scomp && (i < 63) ) + { + nameList[i] = new SCLstring; + nameList[i]->Append( scomp->eDesc->Name() ); + i++; + scomp = scomp->sc; + } + nameList[i] = (SCLstring *)0; + if(i == 63) + { + char errStr[BUFSIZ]; + G4cerr << "STEPcomplex::Replicate() name buffer too small: " + << __FILE__ << __LINE__ << "\n" << _POC_ "\n"; + sprintf(errStr, + "STEPcomplex::Replicate(): %s - entity #%d.\n", + "Programming ERROR - name buffer too small", + STEPfile_id); + _error.AppendToDetailMsg(errStr); + _error.AppendToUserMsg(errStr); + _error.GreaterSeverity(SEVERITY_BUG); + } + + STEPcomplex *seNew = new STEPcomplex(_registry, + (const SCLstring **)nameList, + 1111); + seNew -> CopyAs (this); + return seNew; + +// need to: +// get registry +// create list of entity names +// send them to constructor for STEPcomplex +// implement STEPcomplex::CopyAs() +// call seNew->CopyAs() + } } diff --git a/source/geometry/solids/STEP/src/STEPfile.cc b/source/geometry/solids/STEP/src/STEPfile.cc index b95d277662..a0be2692bc 100644 --- a/source/geometry/solids/STEP/src/STEPfile.cc +++ b/source/geometry/solids/STEP/src/STEPfile.cc @@ -1,8 +1,6 @@ -// This code is utilised in the GEANT4 detector simulation toolkit. -// -// $Id: STEPfile.cc,v 1.3 1999/12/15 14:50:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// +#ifdef __OSTORE__ +int pr_obj_errors = 0; +#endif /* * NIST STEP Core Class Library @@ -16,7 +14,7 @@ * and is not subject to copyright. */ -/* */ +/* $Id: STEPfile.cc,v 1.4 2000/01/21 13:42:57 gcosmo Exp $ */ /******************************************************************** TODO LIST: @@ -24,15 +22,15 @@ of the same entity type name. i.e. it doesn't merge info from multiple files - ReadWorkingFile does not handle references to entities which aren't in the working session file. for other *incomplete* instances, - it prints error messages to G4cerr which may not need to be printed. It + it prints error messages to cerr which may not need to be printed. It doesn't keep track of the incomplete instances, it just puts them on the - List according to the symbol which precedes them in the working session + list according to the symbol which precedes them in the working session file **********************************************************************/ - #include -#include +#include #include +#include #include // STEPundefined contains @@ -69,7 +67,7 @@ STEPfile::SetFileName (const char* newName) delete [] _fileName; _fileName = new char[strlen(newName)+1]; if (!_fileName) { - _error.AppendToUserMsg("free Store exhausted.\n"); + _error.AppendToUserMsg("free store exhausted.\n"); return (char*)0; } strcpy(_fileName, newName); @@ -98,7 +96,7 @@ STEPfile::ReadHeader (G4std::istream& in) SCLstring cmtStr; InstMgr *im = new InstMgr; - STEPentity* obj; + SCLP23(Application_instance)* obj; Severity objsev = SEVERITY_NULL; int endsec = 0; @@ -147,7 +145,7 @@ STEPfile::ReadHeader (G4std::istream& in) } else { //create and read the header instance - // STEPentity::STEPread now reads the opening parenthesis + // SCLP23(Application_instance)::STEPread now reads the opening parenthesis //create header instance buf[0]= '\0'; @@ -172,7 +170,17 @@ STEPfile::ReadHeader (G4std::istream& in) } else //not userDefined { +/* +#ifdef __OSTORE__ + obj = _headerRegistry->ObjCreate (buf, db); +#else obj = _headerRegistry->ObjCreate (buf); +#endif +*/ + obj = _headerRegistry->ObjCreate (buf); +#ifdef __O3DB__ + obj -> persist (); +#endif } //read header instance @@ -262,13 +270,13 @@ InstMgr* STEPfile::HeaderConvertToNew(InstMgr& oldinst) { InstMgr* imtmp = new InstMgr; - STEPentity* oldse; + SCLP23(Application_instance)* oldse; int count = 0; // FILE_NAME <== (N279)FILE_IDENTIFICATION p21DIS_File_name * fn = 0; - oldse = oldinst.GetSTEPentity("N279_File_Identification"); + oldse = oldinst.GetApplication_instance("N279_File_Identification"); if (oldse == ENTITY_NULL) { G4cerr << "Warning: STEPfile::HeaderConvertToNew. Unable to get " << @@ -303,18 +311,18 @@ STEPfile::HeaderConvertToNew(InstMgr& oldinst) // FILE_DESCRIPTION <== (N279)FILE_DESCRIPTION & (N279)IMP_LEVEL p21DIS_File_description * fd = new p21DIS_File_description; // Get the (N279) File_Description Instance - oldse = oldinst.GetSTEPentity("N279_File_Description"); + oldse = oldinst.GetApplication_instance("N279_File_Description"); s_N279_file_description * ofd = (s_N279_file_description*)oldse; if (oldse != ENTITY_NULL) { // DAVE, is there a new way TODO this? - // copy a STEPstring value into a StringAggregate + // copy a SCLP23(String) value into a StringAggregate const char* tmpstr = ofd->description(); - int len = strlen(tmpstr) + 2; - char *str = new char[len]; + int l = strlen(tmpstr) + 2; + char *str = new char[l]; str[0]='\''; str[1]='\0'; - strncat(str,tmpstr,len); - strncat(str,"\'",len); + strncat(str,tmpstr,l); + strncat(str,"\'",l); StringNode * sn = new StringNode(str); fd->description().AddNode(sn); oldinst.Delete(ofd); @@ -327,7 +335,7 @@ STEPfile::HeaderConvertToNew(InstMgr& oldinst) } // Get the (N279) Imp_Level Instance - oldse = oldinst.GetSTEPentity("N279_Imp_Level"); + oldse = oldinst.GetApplication_instance("N279_Imp_Level"); s_N279_imp_level * il = (s_N279_imp_level*)oldse; if (oldse != ENTITY_NULL) { @@ -343,14 +351,15 @@ STEPfile::HeaderConvertToNew(InstMgr& oldinst) // FILE_SCHEMA <== default values // There is no entity for the file_schema in the old version - // Therefore, the schema_identifiers List is left empty + // Therefore, the schema_identifiers list is left empty imtmp->Append(HeaderDefaultFileSchema(), completeSE); //append any extra instances from oldinst onto imtmp for (int n = oldinst.InstanceCount() - 1; n>=0; --n) { - imtmp->Append(oldinst.GetSTEPentity(oldinst[n]),completeSE); +/* imtmp->Append(oldinst.GetApplication_instance(oldinst[n]),completeSE);*/ + imtmp->Append(oldinst.GetApplication_instance (oldinst.GetMgrNode (n)),completeSE); } return imtmp; @@ -362,8 +371,8 @@ Verify the instances read from the header section of an exchange file. If some required instances aren't present, then create them, and populate them with default values. The required instances are: - #1 = FILE_NAME - #2 = FILE_DESCRIPTION + #1 = FILE_DESCRIPTION + #2 = FILE_NAME #3 = FILE_SCHEMA ***************************/ Severity @@ -371,7 +380,7 @@ STEPfile::HeaderVerifyInstances(InstMgr* im) { int err = 0; int fileid; - STEPentity* obj; + SCLP23(Application_instance)* obj; //check File_Name fileid = HeaderId("File_Name"); @@ -412,7 +421,7 @@ STEPfile::HeaderVerifyInstances(InstMgr* im) return SEVERITY_WARNING; } -STEPentity* +SCLP23(Application_instance)* STEPfile::HeaderDefaultFileName() { p21DIS_File_name * fn = new p21DIS_File_name; @@ -436,7 +445,7 @@ STEPfile::HeaderDefaultFileName() return fn; } -STEPentity* +SCLP23(Application_instance)* STEPfile::HeaderDefaultFileDescription() { p21DIS_File_description * fd = new p21DIS_File_description; @@ -448,7 +457,7 @@ STEPfile::HeaderDefaultFileDescription() return fd; } -STEPentity* +SCLP23(Application_instance)* STEPfile::HeaderDefaultFileSchema() { p21DIS_File_schema * fs = new p21DIS_File_schema; @@ -480,17 +489,16 @@ from im onto the _headerInstances. This only works for an instance manager which contains the following header section entites. The file id numbers are important. - #1 = FILE_NAME - #2 = FILE_DESCRIPTION + #1 = FILE_DESCRIPTION + #2 = FILE_NAME #3 = FILE_SCHEMA - #4 = CLASSIFICATION (this entity is optional in the header section) ***************************/ void STEPfile::HeaderMergeInstances(InstMgr* im) { - STEPentity* se = 0; - STEPentity* from = 0; - STEPentity* to = 0; + SCLP23(Application_instance)* se = 0; + SCLP23(Application_instance)* from = 0; + SCLP23(Application_instance)* to = 0; int idnum; @@ -509,51 +517,51 @@ STEPfile::HeaderMergeInstances(InstMgr* im) //checking for _headerInstances::FILE_NAME idnum = HeaderId("File_Name"); - if(se = _headerInstances->GetSTEPentity(_headerInstances->FindFileId(idnum))) + if(se = _headerInstances->GetApplication_instance(_headerInstances->FindFileId(idnum))) { - from = im->GetSTEPentity(im->FindFileId(idnum)); + from = im->GetApplication_instance(im->FindFileId(idnum)); // name: // time_stamp: keep the newer time_stamp - // author: append the List of authors - // organization: append the organization List + // author: append the list of authors + // organization: append the organization list // preprocessor_version: // originating_system: // authorization: } else // No current File_Name instance { - from = im->GetSTEPentity(im->FindFileId(idnum)); + from = im->GetApplication_instance(im->FindFileId(idnum)); _headerInstances->Append(from,completeSE); } //checking for _headerInstances::FILE_DESCRIPTION idnum = HeaderId("File_Description"); - if(se = _headerInstances->GetSTEPentity(_headerInstances->FindFileId(idnum))) + if(se = _headerInstances->GetApplication_instance(_headerInstances->FindFileId(idnum))) { - from = im->GetSTEPentity(im->FindFileId(idnum)); + from = im->GetApplication_instance(im->FindFileId(idnum)); //description //implementation_level } else { - from = im->GetSTEPentity(im->FindFileId(idnum)); + from = im->GetApplication_instance(im->FindFileId(idnum)); _headerInstances->Append(from,completeSE); } //checking for _headerInstances::FILE_SCHEMA idnum = HeaderId("File_Schema"); - if(se = _headerInstances->GetSTEPentity(_headerInstances->FindFileId(idnum))) + if(se = _headerInstances->GetApplication_instance(_headerInstances->FindFileId(idnum))) { - from = im->GetSTEPentity(im->FindFileId(idnum)); + from = im->GetApplication_instance(im->FindFileId(idnum)); //description //implementation_level } else { - from = im->GetSTEPentity(im->FindFileId(idnum)); + from = im->GetApplication_instance(im->FindFileId(idnum)); _headerInstances->Append(from,completeSE); } @@ -569,19 +577,19 @@ STEPfile::EntityWfState(char c) { case wsSaveComplete: return completeSE; - break; +// break; case wsSaveIncomplete: return incompleteSE; - break; +// break; case wsDelete: return deleteSE; - break; +// break; case wsNew: return newSE; - break; +// break; default: return noStateSE; @@ -608,7 +616,7 @@ STEPfile::ReadData1(G4std::istream& in) buf[0] = '\0'; SCLstring tmpbuf; - STEPentity * obj = ENTITY_NULL; + SCLP23(Application_instance) * obj = ENTITY_NULL; stateEnum inst_state; // used if reading working file ErrorDescriptor e; @@ -643,20 +651,18 @@ STEPfile::ReadData1(G4std::istream& in) if(c != ENTITY_NAME_DELIM) { in.putback(c); - while( c != ENTITY_NAME_DELIM && in.good () && + while( c != ENTITY_NAME_DELIM && in.good () && !(endsec = FoundEndSecKywd(in, _error)) ) { - tmpbuf.set_null(); FindStartOfInstance(in,tmpbuf); G4cout << "ERROR: trying to recover from invalid data. skipping: " - << tmpbuf.chars() << G4endl; + << tmpbuf.chars() << G4endl; in >> c; ReadTokenSeparator(in); } } - if(!endsec) { obj = ENTITY_NULL; @@ -702,6 +708,25 @@ STEPfile::ReadData1(G4std::istream& in) } } // end while loop +#ifdef __OSTORE__ + if (pr_obj_errors > 4) + { + int x = 0; + G4cout << + "\nSTEPfile::ReadData1(G4std::istream& in) os_database ptrs in entities:" + << G4endl; + SCLP23(Application_instance) *STEPent = 0; + while (x < instance_count) + { + STEPent = instances().GetApplication_instance(x); + G4cout << "os_database::of(STEPent): " << os_database::of(STEPent) + << G4endl; + x++; + } + G4cout << G4endl << "***********" << G4endl; + } +#endif + if(_entsNotCreated) { // new @@ -740,7 +765,7 @@ STEPfile::ReadData1(G4std::istream& in) buf[0] = '\0'; SCLstring tmpbuf; - STEPentity * obj; + SCLP23(Application_instance) * obj; stateEnum inst_state; // used if reading working file ReadTokenSeparator(in); // also skips white space @@ -896,7 +921,7 @@ STEPfile::ReadWorkingData1 (G4std::istream& in) SCLstring tmpbuf; // PASS 1: create instances - STEPentity * obj; + SCLP23(Application_instance) * obj; stateEnum inst_state; int endsec = 0; @@ -1034,7 +1059,7 @@ STEPfile::ReadWorkingData1 (G4std::istream& in) ** in an exchange file ******************************************************************/ int -STEPfile::ReadData2 (G4std::istream& in) +STEPfile::ReadData2 (G4std::istream& in, int useTechCor) { _entsInvalid = 0; _entsIncomplete = 0; @@ -1052,7 +1077,7 @@ STEPfile::ReadData2 (G4std::istream& in) buf[0] = '\0'; SCLstring tmpbuf; - STEPentity * obj = ENTITY_NULL; + SCLP23(Application_instance) * obj = ENTITY_NULL; SCLstring cmtStr; // ReadTokenSeparator(in, &cmtStr); @@ -1075,7 +1100,7 @@ STEPfile::ReadData2 (G4std::istream& in) in >> c; // read the ENTITY_NAME_DELIM } /* - // don't need this error msg for the 2nd pass (it was Done on 1st) + // don't need this error msg for the 2nd pass (it was done on 1st) else { G4cout << "Invalid editing state character: " << c << G4endl; @@ -1108,7 +1133,7 @@ STEPfile::ReadData2 (G4std::istream& in) if( (_fileType == WORKING_SESSION) && (inst_state == deleteSE)) SkipInstance(in, tmpbuf); else - obj = ReadInstance(in, G4cout, cmtStr); + obj = ReadInstance(in, G4cout, cmtStr, useTechCor); cmtStr.set_null(); if(obj != ENTITY_NULL) @@ -1194,7 +1219,7 @@ STEPfile::ReadData2 (G4std::istream& in) buf[0] = '\0'; SCLstring tmpbuf; - STEPentity * obj; + SCLP23(Application_instance) * obj; SCLstring cmtStr; ReadTokenSeparator(in, &cmtStr); @@ -1332,7 +1357,7 @@ STEPfile::ReadData2 (G4std::istream& in) int valid_insts =0; // used for exchange file only - STEPentity * obj = ENTITY_NULL; + SCLP23(Application_instance) * obj = ENTITY_NULL; ReadTokenSeparator(in); @@ -1369,9 +1394,9 @@ STEPfile::ReadData2 (G4std::istream& in) #endif int -STEPfile::ReadWorkingData2 (G4std::istream& in) +STEPfile::ReadWorkingData2 (G4std::istream& in, int useTechCor) { - return ReadData2 (in); + return ReadData2 (in, useTechCor); #ifdef junk _errorCount = 0; // reset error count _warningCount = 0; // reset error count @@ -1380,7 +1405,7 @@ STEPfile::ReadWorkingData2 (G4std::istream& in) SCLstring tmpbuf; int total_instances =0; - STEPentity * obj = ENTITY_NULL; + SCLP23(Application_instance) * obj = ENTITY_NULL; // PASS 2: read data int endsec = 0; @@ -1455,7 +1480,7 @@ int STEPfile::FindDataSection (G4std::istream& in) { ErrorDescriptor errs; - SdaiString tmp; + SCLP23(String) tmp; SCLstring s; // used if need to read a comment char c; @@ -1483,7 +1508,7 @@ STEPfile::FindDataSection (G4std::istream& in) if (c == 'A') { in.get(c); // read 'A' - in >> G4std::ws; // may want to skip comments or Print control directives? + in >> G4std::ws; // may want to skip comments or print control directives? c = in.peek(); // look for semicolon if (c == ';') { @@ -1535,7 +1560,7 @@ STEPfile::FindHeaderSection (G4std::istream& in) _error.GreaterSeverity(SEVERITY_INPUT_ERROR); return 0; } - in.getline(buf, BUFSIZ, ';'); // reads but does not Store the ; + in.getline(buf, BUFSIZ, ';'); // reads but does not store the ; } return 1; } @@ -1560,19 +1585,23 @@ an ENTITY_INSTANCE consists of: '#'(int)'=' [SCOPE] SUBSUPER_RECORD ';' The '#' is read from the G4std::istream before CreateInstance is called. ***************************/ -STEPentity * +SCLP23(Application_instance) * STEPfile::CreateInstance(G4std::istream& in, G4std::ostream &out) { SCLstring tmpbuf; - char errbuf[BUFSIZ]; SCLstring objnm; char c; + char schnm[BUFSIZ]; + schnm[0] = '\0'; + int fileid = -1; - STEPentityH * scopelist =0; + SCLP23(Application_instance_ptr) * scopelist =0; int n =0; - STEPentity* obj; + SCLP23(Application_instance)* obj; + ErrorDescriptor result; + // Sent down to CreateSubSuperInstance() to receive error info ReadTokenSeparator(in); @@ -1587,7 +1616,7 @@ STEPfile::CreateInstance(G4std::istream& in, G4std::ostream &out) } ReadTokenSeparator(in); - in.get (c); // read equal Sign + in.get (c); // read equal sign if (c != '=') { // ERROR: '=' expected @@ -1600,7 +1629,7 @@ STEPfile::CreateInstance(G4std::istream& in, G4std::ostream &out) ReadTokenSeparator(in); c = in.peek(); // peek at the next character on the G4std::istream - //check for optional "&SCOPE" Construct + //check for optional "&SCOPE" construct if (c == '&') // TODO check this out { Severity s = CreateScopeInstances(in, &scopelist); @@ -1615,7 +1644,15 @@ STEPfile::CreateInstance(G4std::istream& in, G4std::ostream &out) if (c == '(') { // TODO: implement complex inheritance - obj = CreateSubSuperInstance(in,fileid); + obj = CreateSubSuperInstance(in,fileid,result); + if (obj == ENTITY_NULL) + { + SkipInstance(in, tmpbuf); + out << "ERROR: instance #" << fileid + << " Illegal complex entity.\n" + << result.UserMsg() << ".\n\n"; + return ENTITY_NULL; + } } else // not a complex entity { @@ -1647,16 +1684,53 @@ STEPfile::CreateInstance(G4std::istream& in, G4std::ostream &out) } else { - obj = reg().ObjCreate(objnm.chars()); + schemaName( schnm ); +#ifdef __OSTORE__ + if (pr_obj_errors > 3) + { + G4cout << "STEPfile::CreateInstance() db ptr: " << db << G4endl; + } + + obj = reg().ObjCreate(objnm.chars(), db, schnm); + + if (pr_obj_errors > 3) + { + G4cout << "os_database::of(obj) in STEPfile::CreateInstance(): " + << os_database::of(obj) << G4endl; + G4cout << "****" << G4endl; + } +#else + obj = reg().ObjCreate(objnm.chars(), schnm); +#endif + if ( obj == ENTITY_NULL ) { + // This will be the case if objnm does not exist in the reg. + result.UserMsg( "Unknown ENTITY type" ); + } else if ( obj->Error().severity() <= SEVERITY_WARNING ) { + // Common causes of error is that obj is an abstract supertype + // or that it can only be instantiated using external mapping. + // If neither are the case, create a generic message. + if ( *obj->Error().UserMsg() != '\0' ) { + result.UserMsg( obj->Error().UserMsg() ); + } else { + result.UserMsg( "Could not create ENTITY" ); + } + // Delete obj so that below we'll know that an error occur: + delete obj; + obj = ENTITY_NULL; + } +#ifdef __O3DB__ + if ( obj ) + obj -> persist(); +#endif } } - - if (obj == ENTITY_NULL) + + if (obj == ENTITY_NULL) { SkipInstance(in, tmpbuf); - out << "ERROR: instance #" << fileid - << " Unknown ENTITY type \'" - << objnm.chars() << "\'.\n\tData lost: " << tmpbuf << "\n\n"; + out << "ERROR: instance #" << fileid << " \'" << objnm.chars() + << "\': " << result.UserMsg() + << ".\n\tData lost: " << tmpbuf << "\n\n"; return ENTITY_NULL; } obj -> STEPfile_id = fileid; @@ -1672,28 +1746,27 @@ STEPfile::CreateInstance(G4std::istream& in, G4std::ostream &out) /************************************************** description: - This function reads the SCOPE List for an entity instance, - creates each instance on the scope List, and appending each + This function reads the SCOPE list for an entity instance, + creates each instance on the scope list, and appending each instance to the instance manager. side-effects: It first searches for "&SCOPE" and reads all characters from the G4std::istream up to and including "ENDSCOPE" returns: ErrorDescriptor >= SEVERITY_WARNING: the G4std::istream was read up to and including the - "ENDSCOPE" and the export List /#1, ... #N/ + "ENDSCOPE" and the export list /#1, ... #N/ < SEVERITY_WARNING: the G4std::istream was read up to and including the next ";" < SEVERITY_BUG: fatal **************************************************/ Severity -STEPfile::CreateScopeInstances(G4std::istream& in, STEPentityH ** scopelist) +STEPfile::CreateScopeInstances(G4std::istream& in, SCLP23(Application_instance_ptr) ** scopelist) { Severity rval = SEVERITY_NULL; - STEPentity * se; - char errbuf[BUFSIZ]; + SCLP23(Application_instance) * se; SCLstring tmpbuf; char c; int exportid; - STEPentityH inscope [BUFSIZ]; int i =0; + SCLP23(Application_instance_ptr) inscope [BUFSIZ]; int i =0; SCLstring keywd; keywd = GetKeyword(in," \n\t/\\#;", _error); @@ -1739,7 +1812,7 @@ STEPfile::CreateScopeInstances(G4std::istream& in, STEPentityH ** scopelist) in.get(c); } in.putback(c); - *scopelist = new STEPentityH [i]; + *scopelist = new SCLP23(Application_instance_ptr) [i]; while (i > 0) *scopelist [--i] = inscope [i]; //check for "ENDSCOPE" @@ -1754,13 +1827,13 @@ STEPfile::CreateScopeInstances(G4std::istream& in, STEPentityH ** scopelist) return SEVERITY_INPUT_ERROR; } - //check for export List + //check for export list ReadTokenSeparator(in); in.get(c); in.putback (c); if (c == '/') { - //read export List + //read export list in.get(c); c = ','; while (c == ',') @@ -1769,15 +1842,15 @@ STEPfile::CreateScopeInstances(G4std::istream& in, STEPentityH ** scopelist) in.get(c); if (c!='#') { } //ERROR in >> exportid; - //TODO: nothing is Done with the idnums on the export List + //TODO: nothing is done with the idnums on the export list ReadTokenSeparator(in); in.get(c); } if (c != '/') { - //ERROR: '/' expected while reading export List + //ERROR: '/' expected while reading export list SkipInstance(in, tmpbuf); - G4cerr << "ERROR: \'/\' expected in export List.\n\tdata lost: " << tmpbuf << "\n"; + G4cerr << "ERROR: \'/\' expected in export list.\n\tdata lost: " << tmpbuf << "\n"; ++_errorCount; rval = SEVERITY_INPUT_ERROR; } @@ -1786,14 +1859,16 @@ STEPfile::CreateScopeInstances(G4std::istream& in, STEPentityH ** scopelist) return rval; } -STEPentity * -STEPfile::CreateSubSuperInstance(G4std::istream& in, int fileid) +SCLP23(Application_instance) * +STEPfile::CreateSubSuperInstance(G4std::istream& in, int fileid, ErrorDescriptor &e) { SCLstring tmpstr; - char errbuf[BUFSIZ]; - STEPentity * obj = ENTITY_NULL; + SCLP23(Application_instance) * obj = ENTITY_NULL; char c; + char schnm[BUFSIZ]; + schnm[0] = '\0'; + SCLstring buf; // used to hold the simple record that is read ErrorDescriptor err; // used to catch error msgs @@ -1825,29 +1900,38 @@ STEPfile::CreateSubSuperInstance(G4std::istream& in, int fileid) // garbage or a comment) this will keep the read function from // infinite looping. If the entity name starts with a digit it is // incorrect and will be invalid. - while( (c != ')') && !isalpha(c) ) + while( in.good() && (c != ')') && !isalpha(c) ) { in >> c; // skip the invalid char c = in.peek(); // see if you have closed paren (ending the record) } } entNmArr[enaIndex] = 0; - + schemaName( schnm ); #ifdef __O3DB__ - obj = new STEPcomplex(_reg, (const SCLstring **)entNmArr, fileid); + obj = new STEPcomplex(_reg, (const SCLstring **)entNmArr, fileid, + schnm); #else - obj = new STEPcomplex(&_reg, (const SCLstring **)entNmArr, fileid); + obj = new STEPcomplex(&_reg, (const SCLstring **)entNmArr, fileid, + schnm); #endif // SkipInstance(in, tmpstr); + if ( obj->Error().severity() <= SEVERITY_WARNING ) { + // If obj is not legal, record its error info and delete it: + e.severity( obj->Error().severity() ); + e.UserMsg( obj->Error().UserMsg() ); + delete obj; + obj = ENTITY_NULL; + } return obj; } /************************************************** description: - This function reads the SCOPE List for an entity instance, + This function reads the SCOPE list for an entity instance, and reads the values for each instance from the G4std::istream. side-effects: It first searches for "&SCOPE" and reads all characters @@ -1857,7 +1941,7 @@ Severity STEPfile::ReadScopeInstances (G4std::istream& in) { Severity rval = SEVERITY_NULL; - STEPentity * se; + SCLP23(Application_instance) * se; SCLstring tmpbuf; char c; int exportid; @@ -1907,13 +1991,13 @@ STEPfile::ReadScopeInstances (G4std::istream& in) return SEVERITY_WARNING; } - //check for export List + //check for export list ReadTokenSeparator(in); in.get(c); in.putback (c); if (c == '/') { - //read through export List + //read through export list in.get(c); c = ','; while (c == ',') { @@ -1925,9 +2009,9 @@ STEPfile::ReadScopeInstances (G4std::istream& in) } if (c != '/') { - //ERROR: '/' expected while reading export List + //ERROR: '/' expected while reading export list SkipInstance(in, tmpbuf); - G4cerr << " \'/\' expected while reading export List.\n\tdata lost: " + G4cerr << " \'/\' expected while reading export list.\n\tdata lost: " << tmpbuf << "\n"; ++_errorCount; rval = SEVERITY_WARNING; @@ -2019,26 +2103,30 @@ ReadEntityError(char c, int i, G4std::istream& in) /***************************************************** description: - This function populates a STEPentity with the values read from + This function populates a SCLP23(Application_instance) with the values read from the G4std::istream. This function must keeps track of error messages encountered when - reading the STEPentity. It passes STEPentity error information onto + reading the SCLP23(Application_instance). It passes SCLP23(Application_instance) error information onto the STEPfile ErrorDescriptor. *****************************************************/ -STEPentity * -STEPfile::ReadInstance(G4std::istream& in, G4std::ostream& out, SCLstring &cmtStr) +SCLP23(Application_instance) * +STEPfile::ReadInstance(G4std::istream& in, G4std::ostream& out, SCLstring &cmtStr, + int useTechCor) { Severity sev = SEVERITY_NULL; SCLstring tmpbuf; char errbuf[BUFSIZ]; + errbuf[0] = '\0'; + char currSch[BUFSIZ]; + currSch[0] = '\0'; SCLstring objnm; char c; int fileid; int n =0; - STEPentity* obj = ENTITY_NULL; + SCLP23(Application_instance)* obj = ENTITY_NULL; int idIncrNum = FileIdIncr(); ReadComment(in, cmtStr); @@ -2048,11 +2136,26 @@ STEPfile::ReadInstance(G4std::istream& in, G4std::ostream& out, SCLstring &cmtSt // check to see that instance was created on PASS 1 MgrNode * node = instances ().FindFileId(fileid); - if ((!node) || ((obj = node -> GetSTEPentity ()) == ENTITY_NULL)) + if ((!node) || ((obj = node -> GetApplication_instance ()) == ENTITY_NULL)) { SkipInstance(in, tmpbuf); - out << "\nERROR: in 2nd pass, instance #" << fileid - << " not found.\n\tData lost: " << tmpbuf << G4endl; + // Changed the 2nd pass error message to report Part 21 User + // Defined Entities. STEPfile still includes them in the error count + // which is not valid. + // Check to see if an User Defined Entity has been found. + const char *ude = tmpbuf.chars(); + while ( *ude && (*ude != '=') ) ude++; + if(*ude == '=') ude++; + while (*ude && isspace(*ude)) ude++; + if(*ude == '!') + { + out << "\nWARNING: #" << fileid << + " - Ignoring User Defined Entity.\n\tData lost: " + << tmpbuf << G4endl; + } + else + out << "\nERROR: in 2nd pass, instance #" << fileid + << " not found.\n\tData lost: " << tmpbuf << G4endl; return ENTITY_NULL; } else if ((_fileType != WORKING_SESSION) && (node->CurrState() != newSE)) @@ -2081,7 +2184,7 @@ STEPfile::ReadInstance(G4std::istream& in, G4std::ostream& out, SCLstring &cmtSt //peek at the next character on the G4std::istream c = in.peek(); - //check for optional "&SCOPE" Construct + //check for optional "&SCOPE" construct if (c == '&') { ReadScopeInstances(in); @@ -2090,12 +2193,15 @@ STEPfile::ReadInstance(G4std::istream& in, G4std::ostream& out, SCLstring &cmtSt in.putback(c); } + schemaName( currSch ); + //check for subtype/supertype record if (c == '(') { // TODO // ReadSubSuperInstance(in); - sev = obj->STEPread (fileid, idIncrNum, &instances (), in); + sev = obj->STEPread (fileid, idIncrNum, &instances (), in, currSch, + useTechCor); ReadTokenSeparator(in, &cmtStr); @@ -2113,6 +2219,8 @@ STEPfile::ReadInstance(G4std::istream& in, G4std::ostream& out, SCLstring &cmtSt c = in.peek(); // check for User Defined Entity + // DAS - I checked this out. It doesn't get into this code for user + // defined entities because a ude isn't created. int userDefined = 0; if (c == '!') { userDefined = 1; in.get(c); } @@ -2139,7 +2247,8 @@ STEPfile::ReadInstance(G4std::istream& in, G4std::ostream& out, SCLstring &cmtSt // NOTE: this function is called for all FileTypes // (WORKING_SESSION included) - sev = obj->STEPread (fileid, idIncrNum, &instances (), in); + sev = obj->STEPread (fileid, idIncrNum, &instances (), in, currSch, + useTechCor); ReadTokenSeparator(in, &cmtStr); @@ -2265,11 +2374,13 @@ STEPfile::MakeBackupFile() /*************************** ***************************/ Severity -STEPfile::WriteExchangeFile(G4std::ostream& out, int validate) +STEPfile::WriteExchangeFile(G4std::ostream& out, int validate, int clearError, + int writeComments) { Severity rval = SEVERITY_NULL; SetFileType(VERSION_CURRENT); - _error.ClearErrorMsg(); + if(clearError) + _error.ClearErrorMsg(); if (validate) { rval = instances ().VerifyInstances(_error); @@ -2284,7 +2395,7 @@ STEPfile::WriteExchangeFile(G4std::ostream& out, int validate) out << FILE_DELIM << "\n"; WriteHeader(out); - WriteData(out); + WriteData(out, writeComments); out << END_FILE_DELIM << "\n"; return rval; } @@ -2292,10 +2403,14 @@ STEPfile::WriteExchangeFile(G4std::ostream& out, int validate) /*************************** ***************************/ Severity -STEPfile::WriteExchangeFile(const char* filename, int validate) +STEPfile::WriteExchangeFile(const char* filename, int validate, int clearError, + int writeComments) { Severity rval = SEVERITY_NULL; + if(clearError) + _error.ClearErrorMsg(); + if (validate) { rval = instances ().VerifyInstances(_error); _error.GreaterSeverity(rval); @@ -2309,11 +2424,41 @@ STEPfile::WriteExchangeFile(const char* filename, int validate) G4std::ostream* out = OpenOutputFile(filename); if (_error.severity() < SEVERITY_WARNING) return _error.severity(); - rval = WriteExchangeFile(*out, 0); + rval = WriteExchangeFile(*out, 0, 0, writeComments); CloseOutputFile(out); return rval; } + +/*************************** +***************************/ +Severity +STEPfile::WriteValuePairsFile(G4std::ostream& out, int validate, int clearError, + int writeComments, int mixedCase) +{ + Severity rval = SEVERITY_NULL; + SetFileType(VERSION_CURRENT); + if(clearError) + _error.ClearErrorMsg(); + + if (validate) { + rval = instances ().VerifyInstances(_error); + _error.GreaterSeverity(rval); + if (rval < SEVERITY_USERMSG) + { + _error.AppendToUserMsg("Unable to verify instances. File not written. Try saving as working session file."); + _error.GreaterSeverity(SEVERITY_INCOMPLETE); + return rval; + } + } + +// out << FILE_DELIM << "\n"; +// WriteHeader(out); + WriteValuePairsData(out, writeComments, mixedCase); +// out << END_FILE_DELIM << "\n"; + return rval; +} + /*************************** This function returns an integer value for the file id for a header section entity, @@ -2324,33 +2469,20 @@ STEPfile member variable: _headerId The header section entities must be numbered in the following manner: -#1=FILE_NAME -#2=FILE_DESCRIPTION +#1=FILE_DESCRIPTION +#2=FILE_NAME #3=FILE_SCHEMA -#4=CLASSIFICATION ***************************/ int STEPfile::HeaderId (const char* name) { -/* // default initialization doesn't work DAS PORT - char* nms[3] = { - "FILE_DESCRIPTION\0", - "FILE_NAME\0", - "FILE_SCHEMA\0", - }; -*/ - const char* nms[3]; - nms[0] = "FILE_DESCRIPTION"; - nms[1] = "FILE_NAME"; - nms[2] = "FILE_SCHEMA"; -// nms[3] = 0; // Aaaaaaahhhhhhh!! - SCLstring tmp; - for (int i = 0; i < 3; ++i) - { - if (!strcmp( (char *)StrToUpper( name, tmp ), nms[i] ) ) - return i; - } + if(! (strcmp( (char *)StrToUpper( name, tmp ), "FILE_DESCRIPTION") ) ) + return 1; + if(! (strcmp( (char *)StrToUpper( name, tmp ), "FILE_NAME") ) ) + return 2; + if(! (strcmp( (char *)StrToUpper( name, tmp ), "FILE_SCHEMA") ) ) + return 3; return ++_headerId; } @@ -2398,15 +2530,21 @@ STEPfile::WriteHeader(G4std::ostream& out) WriteHeaderInstanceFileSchema(out); // Write the rest of the header instances - STEPentity* se; + SCLP23(Application_instance)* se; int n = _headerInstances->InstanceCount(); for (int i =0; i < n; ++i) { - se = (*_headerInstances)[i]->GetSTEPentity(); - if (!((se->FileId() == HeaderId("File_Name")) || - (se->FileId() == HeaderId("File_Description")) || - (se->FileId() == HeaderId("File_Schema")))) - WriteHeaderInstance((*_headerInstances)[i] -> GetSTEPentity(), out ); +/* se = (*_headerInstances)[i]->GetApplication_instance();*/ + se = _headerInstances->GetMgrNode (i) ->GetApplication_instance(); + if(!( + ( se->StepFileId() == HeaderId("File_Name") ) || + ( se->StepFileId() == HeaderId("File_Description") ) || + ( se->StepFileId() == HeaderId("File_Schema") ) + )) + WriteHeaderInstance( + _headerInstances->GetMgrNode(i)->GetApplication_instance(), out); +/* WriteHeaderInstance((*_headerInstances)[i] -> GetApplication_instance(), + out );*/ } out << "ENDSEC;\n"; } @@ -2414,7 +2552,7 @@ STEPfile::WriteHeader(G4std::ostream& out) /*************************** ***************************/ void -STEPfile::WriteHeaderInstance(STEPentity* obj, G4std::ostream& out) +STEPfile::WriteHeaderInstance(SCLP23(Application_instance)* obj, G4std::ostream& out) { SCLstring tmp; if(obj->P21CommentRep()) @@ -2435,13 +2573,14 @@ void STEPfile::WriteHeaderInstanceFileName (G4std::ostream& out) { // Get the FileName instance from _headerInstances - STEPentity* se = _headerInstances->GetSTEPentity("File_Name"); + SCLP23(Application_instance) *se = 0; + se = _headerInstances->GetApplication_instance("File_Name"); if (se == ENTITY_NULL) { // ERROR: no File_Name instance in _headerInstances // create a File_Name instance // (p21DIS_File_name*)se = HeaderDefaultFileName(); - se = (STEPentity *)HeaderDefaultFileName(); + se = (SCLP23(Application_instance) *)HeaderDefaultFileName(); } //set some of the attribute values at time of output @@ -2450,20 +2589,19 @@ STEPfile::WriteHeaderInstanceFileName (G4std::ostream& out) /* I'm not sure this is a good idea that Peter did but I'll leave around - DAS // write time_stamp (as specified in ISO Standard 8601) // output the current system time to the file, using the following format: - // example: '1994-04-12 15:27:46' + // example: '1994-04-12T15:27:46' // for Calendar Date, 12 April 1994, 27 minute 46 seconds past 15 hours */ time_t t = time(NULL); struct tm *timeptr = localtime(&t); char time_buf[26]; - strftime(time_buf,26,"%Y-%m-%d %H:%M:%S",timeptr); + strftime(time_buf,26,"%Y-%m-%dT%H:%M:%S",timeptr); //s_String s = fn->time_stamp(); //strncpy((char*)s,time_buf,27); fn->time_stamp(time_buf); //output the values to the file WriteHeaderInstance(se, out); - } @@ -2477,11 +2615,11 @@ STEPfile::WriteHeaderInstanceFileName (G4std::ostream& out) { // ERROR: no File_Name instance in _headerInstances // create a File_Name instance - (STEPentity*)fn = HeaderDefaultFileName(); + (SCLP23(Application_instance)*)fn = HeaderDefaultFileName(); } else { - (STEPentity*)fn = _headerInstances->GetSTEPentity(mn); + (SCLP23(Application_instance)*)fn = _headerInstances->GetApplication_instance(mn); } // Write the values for the FileName instance to the G4std::ostream @@ -2490,7 +2628,7 @@ STEPfile::WriteHeaderInstanceFileName (G4std::ostream& out) // write name //out << "\'" << (char*)fn->name() << "\',"; - STEPstring * s = new STEPstring((char*)fn->name()); + SCLP23(String) * s = new SCLP23(String)((char*)fn->name()); s->STEPwrite(out); delete s; out << ","; @@ -2514,19 +2652,19 @@ STEPfile::WriteHeaderInstanceFileName (G4std::ostream& out) out << ","; // write preprocessor_version - s = new STEPstring((char*)fn->preprocessor_version()); + s = new SCLP23(String)((char*)fn->preprocessor_version()); s->STEPwrite(out); delete s; out << ","; // write originating_system - s = new STEPstring((char*)fn->originating_system()); + s = new SCLP23(String)((char*)fn->originating_system()); s->STEPwrite(out); delete s; out << ","; // write authorization - s = new STEPstring((char*)fn->authorization()); + s = new SCLP23(String)((char*)fn->authorization()); s->STEPwrite(out); delete s; out << ");\n"; @@ -2539,13 +2677,14 @@ void STEPfile::WriteHeaderInstanceFileDescription (G4std::ostream& out) { // Get the FileDescription instance from _headerInstances - STEPentity *se = _headerInstances->GetSTEPentity("File_Description"); + SCLP23(Application_instance) *se = 0; + se = _headerInstances->GetApplication_instance("File_Description"); if (se == ENTITY_NULL) { // ERROR: no File_Name instance in _headerInstances // create a File_Name instance // (s_File_Description*)se = HeaderDefaultFileDescription(); - se = (STEPentity*)HeaderDefaultFileDescription(); + se = (SCLP23(Application_instance)*)HeaderDefaultFileDescription(); } WriteHeaderInstance(se, out); @@ -2559,11 +2698,11 @@ STEPfile::WriteHeaderInstanceFileDescription (G4std::ostream& out) { // ERROR: no File_Description instance in _headerInstances // create a File_Description instance - (STEPentity*)fd = HeaderDefaultFileDescription(); + (SCLP23(Application_instance)*)fd = HeaderDefaultFileDescription(); } else { - (STEPentity*)fd = _headerInstances->GetSTEPentity(mn); + (SCLP23(Application_instance)*)fd = _headerInstances->GetApplication_instance(mn); } // Write the values for the FileDescription instance to the G4std::ostream out << StrToUpper (fd->EntityName()) << "("; @@ -2573,7 +2712,7 @@ STEPfile::WriteHeaderInstanceFileDescription (G4std::ostream& out) out << ","; //write implementation_level - STEPstring *s = new STEPstring((char*)fd->implementation_level()); + SCLP23(String) *s = new SCLP23(String)((char*)fd->implementation_level()); s->STEPwrite(out); delete s; out << ");\n"; @@ -2585,13 +2724,14 @@ void STEPfile::WriteHeaderInstanceFileSchema (G4std::ostream& out) { // Get the FileName instance from _headerInstances - STEPentity *se = _headerInstances->GetSTEPentity("File_Schema"); + SCLP23(Application_instance) *se = 0; + se = _headerInstances->GetApplication_instance("File_Schema"); if (se == ENTITY_NULL) { // ERROR: no File_Name instance in _headerInstances // create a File_Name instance // (p21DIS_File_schema*)se = HeaderDefaultFileSchema(); - se = (STEPentity*) HeaderDefaultFileSchema(); + se = (SCLP23(Application_instance)*) HeaderDefaultFileSchema(); } WriteHeaderInstance(se, out); @@ -2605,11 +2745,11 @@ STEPfile::WriteHeaderInstanceFileSchema (G4std::ostream& out) { // ERROR: no File_Schema instance in _headerInstances // create a File_Schema instance - (STEPentity*)fs = HeaderDefaultFileSchema(); + (SCLP23(Application_instance)*)fs = HeaderDefaultFileSchema(); } else { - (STEPentity*)fs = _headerInstances->GetSTEPentity(mn); + (SCLP23(Application_instance)*)fs = _headerInstances->GetApplication_instance(mn); } // Write the values for the FileName instance to the G4std::ostream out << StrToUpper (fs->EntityName()) << "("; @@ -2626,19 +2766,44 @@ STEPfile::WriteHeaderInstanceFileSchema (G4std::ostream& out) ***************************/ void -STEPfile::WriteData(G4std::ostream& out) +STEPfile::WriteData(G4std::ostream& out, int writeComments) { + char currSch[BUFSIZ]; + currSch[0] = '\0'; + out << "DATA;\n"; + schemaName( currSch ); int n = instances ().InstanceCount(); for (int i = 0; i < n; ++i) - instances ()[i] -> GetSTEPentity()->STEPwrite(out); +/* instances ()[i] -> GetApplication_instance()->STEPwrite(out);*/ + instances ().GetMgrNode (i)->GetApplication_instance()->STEPwrite(out, currSch, writeComments); out << "ENDSEC;\n"; } +/*************************** +***************************/ + +void +STEPfile::WriteValuePairsData(G4std::ostream& out, int writeComments, int mixedCase) +{ + char currSch[BUFSIZ]; + currSch[0] = '\0'; + +// out << "DATA;\n"; + + schemaName( currSch ); + int n = instances ().InstanceCount(); + for (int i = 0; i < n; ++i) +/* instances ()[i] -> GetApplication_instance()->STEPwrite(out);*/ + instances ().GetMgrNode (i)->GetApplication_instance()->WriteValuePairs(out, currSch, writeComments, mixedCase); + +// out << "ENDSEC;\n"; +} + Severity -STEPfile::AppendFile (G4std::istream* in) +STEPfile::AppendFile (G4std::istream* in, int useTechCor) { Severity rval = SEVERITY_NULL; char errbuf[BUFSIZ]; @@ -2680,7 +2845,10 @@ STEPfile::AppendFile (G4std::istream* in) else { - sprintf(errbuf,"Faulty input at beginning of file. \"ISO-10303-21;\" or \"STEP;\" or \"STEP_WORKING_SESSION;\" expected. File not read: %s\n",FileName()); + sprintf(errbuf, + "Faulty input at beginning of file. \"ISO-10303-21;\" or" + " \"STEP;\" or \"STEP_WORKING_SESSION;\" expected. File " + "not read: %s\n", FileName()); _error.AppendToUserMsg(errbuf); _error.GreaterSeverity(SEVERITY_INPUT_ERROR); return SEVERITY_INPUT_ERROR; @@ -2693,7 +2861,10 @@ STEPfile::AppendFile (G4std::istream* in) G4cout << "\nHEADER read:"; if (rval < SEVERITY_WARNING) { - sprintf(errbuf,"Error: non-recoverable error in reading header section. There were %d errors encountered. Rest of file is ignored.\n",_errorCount); + sprintf(errbuf, + "Error: non-recoverable error in reading header section. " + "There were %d errors encountered. Rest of file is ignored.\n", + _errorCount); _error.AppendToUserMsg(errbuf); return rval; } @@ -2714,7 +2885,8 @@ STEPfile::AppendFile (G4std::istream* in) _errorCount = 0; total_insts = ReadData1 (*in); - G4cout << "\nFIRST PASS complete: " << total_insts << " instances created.\n"; + G4cout << "\nFIRST PASS complete: " << total_insts + << " instances created.\n"; sprintf(errbuf, " %d ERRORS\t %d WARNINGS\n\n", _errorCount, _warningCount); @@ -2729,7 +2901,8 @@ STEPfile::AppendFile (G4std::istream* in) // parsing. SO we are using istreams and this works, but could // be better. - _errorCount = 0; // reset the error count so you\'re not counting things twice + // reset the error count so you\'re not counting things twice: + _errorCount = 0; // delete in; // yikes -- deleted by caller G4std::istream * in2; if (! ((in2 = OpenInputFile ()) && (in2 -> good ())) ) @@ -2751,12 +2924,12 @@ STEPfile::AppendFile (G4std::istream* in) case VERSION_CURRENT: case VERSION_OLD: case VERSION_UNKNOWN: - valid_insts = ReadData2 (*in2); + valid_insts = ReadData2 (*in2, useTechCor); break; case WORKING_SESSION: // valid_insts = ReadWorkingData2 (*in2); - valid_insts = ReadData2 (*in2); + valid_insts = ReadData2 (*in2, useTechCor); break; } @@ -2779,7 +2952,8 @@ STEPfile::AppendFile (G4std::istream* in) return _error.GreaterSeverity(SEVERITY_WARNING); } - G4cout << "\nSECOND PASS complete: " << valid_insts << " instances valid.\n"; + G4cout << "\nSECOND PASS complete: " << valid_insts + << " instances valid.\n"; sprintf(errbuf, " %d ERRORS\t %d WARNINGS\n\n", _errorCount, _warningCount); @@ -2816,10 +2990,11 @@ STEPfile::AppendFile (G4std::istream* in) /*************************** ***************************/ Severity -STEPfile::WriteWorkingFile(G4std::ostream& out) +STEPfile::WriteWorkingFile(G4std::ostream& out, int clearError, int writeComments) { SetFileType (WORKING_SESSION); - _error.ClearErrorMsg(); + if(clearError) + _error.ClearErrorMsg(); if (instances ().VerifyInstances(_error) < SEVERITY_INCOMPLETE) { @@ -2830,7 +3005,7 @@ STEPfile::WriteWorkingFile(G4std::ostream& out) out << FILE_DELIM << "\n"; WriteHeader(out); - WriteWorkingData(out); + WriteWorkingData(out, writeComments); out << END_FILE_DELIM << "\n"; SetFileType(); @@ -2840,12 +3015,14 @@ STEPfile::WriteWorkingFile(G4std::ostream& out) /*************************** ***************************/ Severity -STEPfile::WriteWorkingFile(const char* filename) +STEPfile::WriteWorkingFile(const char* filename, int clearError, + int writeComments) { - _error.ClearErrorMsg(); + if(clearError) + _error.ClearErrorMsg(); G4std::ostream* out = OpenOutputFile(filename); if (_error.severity() < SEVERITY_WARNING) return _error.severity(); - Severity rval = WriteWorkingFile(*out); + Severity rval = WriteWorkingFile(*out, 0, writeComments); CloseOutputFile(out); return rval; @@ -2855,29 +3032,37 @@ STEPfile::WriteWorkingFile(const char* filename) /*************************** ***************************/ void -STEPfile::WriteWorkingData(G4std::ostream& out) +STEPfile::WriteWorkingData(G4std::ostream& out, int writeComments) { + char currSch[BUFSIZ]; + currSch[0] = '\0'; + + schemaName( currSch ); out << "DATA;\n"; -// STEPentity* se; +// SCLP23(Application_instance)* se; int n = instances ().InstanceCount(); for (int i = 0; i < n; ++i) { - switch ((instances ()[i])->CurrState()) + switch (instances ().GetMgrNode (i)->CurrState()) { case deleteSE: out << wsDelete; - (instances ()[i])->GetSTEPentity()->STEPwrite(out); + instances ().GetMgrNode (i)->GetApplication_instance()-> + STEPwrite(out, currSch, writeComments); break; case completeSE: out << wsSaveComplete; - (instances ()[i])->GetSTEPentity()->STEPwrite(out); + instances ().GetMgrNode (i)->GetApplication_instance()-> + STEPwrite(out, currSch, writeComments); break; case incompleteSE: out << wsSaveIncomplete; - (instances ()[i])->GetSTEPentity()->STEPwrite(out); + instances ().GetMgrNode (i)->GetApplication_instance()-> + STEPwrite(out, currSch, writeComments); break; case newSE: out << wsNew; - (instances ()[i])->GetSTEPentity()->STEPwrite(out); + instances ().GetMgrNode (i)->GetApplication_instance()-> + STEPwrite(out, currSch, writeComments); break; case noStateSE: _error.AppendToUserMsg("no state information for this node\n"); @@ -2889,9 +3074,9 @@ STEPfile::WriteWorkingData(G4std::ostream& out) /************************************************** description: - This function sends messages to 'G4cerr' + This function sends messages to 'cerr' based on the values in the given ErrorDescriptor (e), which is - supposed to be from a STEPentity object, being manipulated by one + supposed to be from a SCLP23(Application_instance) object, being manipulated by one of the STEPfile member functions. The given error descriptor's messages are then cleared. @@ -2909,7 +3094,7 @@ STEPfile::AppendEntityErrorMsg(ErrorDescriptor *e) if ((sev < SEVERITY_MAX) || (sev > SEVERITY_NULL)) { //ERROR: something wrong with ErrorDescriptor - //_error.AppendToDetailMsg("Error: in AppendEntityErrorMsg(ErrorDesriptor& e). Incomplete ErrorDescriptor, unable to report error message in STEPentity.\n"); + //_error.AppendToDetailMsg("Error: in AppendEntityErrorMsg(ErrorDesriptor& e). Incomplete ErrorDescriptor, unable to report error message in SCLP23(Application_instance).\n"); _error.GreaterSeverity(SEVERITY_WARNING); return SEVERITY_BUG; } diff --git a/source/geometry/solids/STEP/src/STEPfile_inline.cc b/source/geometry/solids/STEP/src/STEPfile_inline.cc index 31d282fc05..9d92167b0f 100644 --- a/source/geometry/solids/STEP/src/STEPfile_inline.cc +++ b/source/geometry/solids/STEP/src/STEPfile_inline.cc @@ -1,18 +1,8 @@ - -// - - - -// -// $Id: STEPfile_inline.cc,v 1.4 1999/12/15 18:20:19 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - /* * NIST STEP Core Class Library * cleditor/STEPfile.inline.cc -* May 1995 +* April 1997 * Peter Carr * K. C. Morris * David Sauder @@ -21,27 +11,20 @@ * and is not subject to copyright. */ -/* */ +/* $Id: STEPfile_inline.cc,v 1.6 2000/02/14 13:44:04 gcosmo Exp $ */ #include +#include +#include -#ifdef __GNUG__ +//#ifdef __GNUG__ +//#ifdef __SUNCPLUSPLUS__ +//#ifdef __OBJECTCENTER__ +//#ifdef __xlC__ extern "C" { double ceil(double); } -#endif -#ifdef __SUNCPLUSPLUS__ -extern "C" { -double ceil(double); -} -#endif - -#ifdef __OBJECTCENTER__ -extern "C" { -double ceil(double); -} -#endif extern void HeaderSchemaInit (Registry & reg); @@ -55,6 +38,9 @@ STEPfile::STEPfile(Registry& r, InstMgr& i, const char *filename) : _reg(&r), _instances(&i), #else : _reg(r), _instances(i), +#endif +#ifdef __OSTORE__ + db (0), #endif _headerId(0), _maxErrorCount(5000), _fileName (0), _entsNotCreated(0), _entsInvalid(0), @@ -67,7 +53,7 @@ STEPfile::STEPfile(Registry& r, InstMgr& i, const char *filename) SetFileIdIncrement(); _currentDir = new DirObj(""); // _headerRegistry = new Registry(&s_HeaderSchemaInit); - _headerRegistry = new Registry(&HeaderSchemaInit); + _headerRegistry = new Registry(HeaderSchemaInit); _headerInstances = new InstMgr; if (filename) ReadExchangeFile(filename); } @@ -94,8 +80,8 @@ STEPfile::SetFileType(FileTypeCode ft) { case (VERSION_OLD): ENTITY_NAME_DELIM = '@'; - FILE_DELIM = "STEP;"; - END_FILE_DELIM = "ENDSTEP;"; + FILE_DELIM = (char*)("STEP;"); + END_FILE_DELIM = (char*)("ENDSTEP;"); /*DAS if (!_headerRegistryOld) _headerRegistryOld = @@ -106,13 +92,13 @@ STEPfile::SetFileType(FileTypeCode ft) case (VERSION_UNKNOWN): case (VERSION_CURRENT): ENTITY_NAME_DELIM = '#'; - FILE_DELIM = "ISO-10303-21;"; - END_FILE_DELIM = "END-ISO-10303-21;"; + FILE_DELIM = (char*)("ISO-10303-21;"); + END_FILE_DELIM = (char*)("END-ISO-10303-21;"); break; case (WORKING_SESSION): ENTITY_NAME_DELIM = '#'; - FILE_DELIM = "STEP_WORKING_SESSION;"; - END_FILE_DELIM = "END-STEP_WORKING_SESSION;"; + FILE_DELIM = (char*)("STEP_WORKING_SESSION;"); + END_FILE_DELIM = (char*)("END-STEP_WORKING_SESSION;"); break; default: @@ -129,6 +115,7 @@ STEPfile::SetFileType(FileTypeCode ft) const char* STEPfile::TruncFileName(const char* filename) const { + // Put a 'const' qualifier to the temporary string !! - GC const char* tmp = strrchr(filename,'/'); if (tmp) return tmp++; else return filename; @@ -138,7 +125,7 @@ STEPfile::TruncFileName(const char* filename) const /******************************************************/ Severity -STEPfile::ReadExchangeFile(const char* filename) +STEPfile::ReadExchangeFile(const char* filename, int useTechCor) { _error.ClearErrorMsg(); _errorCount = 0; @@ -153,13 +140,13 @@ STEPfile::ReadExchangeFile(const char* filename) if (_headerInstances) _headerInstances->ClearInstances (); _headerId = 5; - Severity rval = AppendFile (in); + Severity rval = AppendFile (in, useTechCor); CloseInputFile(in); return rval; } Severity -STEPfile::AppendExchangeFile (const char* filename) +STEPfile::AppendExchangeFile (const char* filename, int useTechCor) { _error.ClearErrorMsg(); _errorCount = 0; @@ -169,14 +156,14 @@ STEPfile::AppendExchangeFile (const char* filename) CloseInputFile(in); return _error.severity(); } - Severity rval = AppendFile (in); + Severity rval = AppendFile (in, useTechCor); CloseInputFile(in); return rval; } /******************************************************/ Severity -STEPfile::ReadWorkingFile(const char* filename) +STEPfile::ReadWorkingFile(const char* filename, int useTechCor) { _error.ClearErrorMsg(); _errorCount = 0; @@ -191,7 +178,7 @@ STEPfile::ReadWorkingFile(const char* filename) _headerInstances->ClearInstances (); SetFileType(WORKING_SESSION); - Severity rval = AppendFile (in); + Severity rval = AppendFile (in, useTechCor); SetFileType(); CloseInputFile(in); return rval; @@ -199,7 +186,7 @@ STEPfile::ReadWorkingFile(const char* filename) Severity -STEPfile::AppendWorkingFile(const char* filename) +STEPfile::AppendWorkingFile(const char* filename, int useTechCor) { _error.ClearErrorMsg(); _errorCount = 0; @@ -210,7 +197,7 @@ STEPfile::AppendWorkingFile(const char* filename) return _error.severity(); } SetFileType(WORKING_SESSION); - Severity rval = AppendFile (in); + Severity rval = AppendFile (in, useTechCor); SetFileType(); CloseInputFile(in); return rval; @@ -335,11 +322,42 @@ STEPfile::IncrementFileId (int fileid) void STEPfile::SetFileIdIncrement() { - - if (instances ().MaxFileId() < 0) _fileIdIncr = 0; - else - { - double instMaxFileId = (instances ().MaxFileId()+ 99)/1000; - _fileIdIncr = (int)((ceil(instMaxFileId) + 1) * 1000); - } + // Added cast to float in argument for 'ceil' function call. This avoids + // clashes with cmath function signatures on HP-aCC - GC + if (instances ().MaxFileId() < 0) _fileIdIncr = 0; + else _fileIdIncr = (int)((ceil(float((instances ().MaxFileId() + 99)/1000) + 1)) * 1000); +} + +char *STEPfile::schemaName( char *schName ) + /* + * Returns the schema name from the file schema header section (or the 1st + * one if more than one exists). Copies this value into schName. If there + * is no header section or no value for file schema, NULL is returned and + * schName is unset. + */ +{ + p21DIS_File_schema *fs; + SCLstring tmp; + STEPnode *n; + + if ( _headerInstances == NULL ) return NULL; + fs = (p21DIS_File_schema *)_headerInstances->GetApplication_instance("File_Schema"); + if ( fs == ENTITY_NULL ) return NULL; + + n = (STEPnode *)fs->schema_identifiers().GetHead(); + // (take the first one) + if ( n == NULL ) return NULL; + n->STEPwrite(tmp); + if ( *tmp.chars() == '\0' || *tmp.chars() == '$' ) return NULL; + // tmp.chars() returns the string we want plus a beginning and ending + // quote mark ('). We remove these below. + strncpy( schName, tmp.chars()+1, BUFSIZ-1 ); + // "+1" to remove beginning '. + if ( *(schName + strlen( schName ) - 1) == '\'' ) { + // Remove trailing '. This condition checks that it wasn't removed + // already. That may have happend if strncpy had truncated schName + // (it were >= BUFSIZ). + *(schName + strlen( schName ) - 1) = '\0'; + } + return schName; } diff --git a/source/geometry/solids/STEP/src/STEPselect.cc b/source/geometry/solids/STEP/src/STEPselect.cc deleted file mode 100644 index 83e7d41529..0000000000 --- a/source/geometry/solids/STEP/src/STEPselect.cc +++ /dev/null @@ -1,473 +0,0 @@ - - -// - - - -// -// $Id: STEPselect.cc,v 1.4 1999/12/15 14:50:17 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - -/* -* NIST STEP Core Class Library -* clstepcore/STEPselect.cc -* May 1995 -* Dave Helfrick -* KC Morris - -* Development of this software was funded by the United States Government, -* and is not subject to copyright. -*/ - -/* */ - -#include -#include // to get the BUFSIZ #define -#include -#include "g4std/strstream" -#include - -/********** - (member) functions for the select class SdaiSelect -**********/ -/* -SdaiSelect::SdaiSelect() -{ -} -SdaiSelect::SdaiSelect( const SdaiSelect& s ) -{ -} -*/ - -Severity SdaiSelect::severity() const -{ /** fn Severity **/ - return _error.severity(); -} /** end function **/ - -Severity SdaiSelect::severity( Severity s ) -{ /** fn Severity **/ - return _error.severity( s ); -} /** end function **/ - -const char * SdaiSelect::Error() -{ /** fn Error **/ - return _error.DetailMsg(); -} /** end function **/ - -void SdaiSelect::Error( char * e ) -{ /** fn Error **/ - _error.DetailMsg( e ); -} /** end function **/ - -void SdaiSelect::ClearError() -{ /** end function **/ - _error.ClearErrorMsg(); -} /** end function **/ - -const TypeDescriptor * -SdaiSelect::CanBe (const char * n) const -{ - const TypeDescLinkNode * tdn = - (const TypeDescLinkNode *) _type -> GetElements ().GetHead (); - const TypeDescriptor *td = tdn -> TypeDesc (); - - SCLstring tmp1; - SCLstring tmp2; - - while (tdn) { - td = tdn -> TypeDesc (); - if (strcmp( (char *)StrToUpper( n, tmp1 ), - (char *)StrToUpper( td->Name(), tmp2 ) )) - ; - else - return td; // they are the same - tdn = (TypeDescLinkNode *) (tdn -> NextNode ()); - } - return 0; -} - - -const TypeDescriptor * -SdaiSelect::CanBe (BASE_TYPE bt) const -{ - const TypeDescLinkNode * tdn = (const TypeDescLinkNode *) _type -> GetElements ().GetHead (); - const TypeDescriptor *td = tdn -> TypeDesc (); - - while (tdn) { - td = tdn -> TypeDesc (); - if (td -> NonRefType () == bt) - return td; // they are the same - tdn = (TypeDescLinkNode *) (tdn -> NextNode ()); - } - return 0; -} - -const TypeDescriptor * -SdaiSelect::CanBe (const TypeDescriptor * td) const -{ - return _type -> CanBe (td); -} - -SdaiString SdaiSelect::UnderlyingTypeName () const -{ - return underlying_type-> Name (); -} - -const TypeDescriptor * SdaiSelect::CurrentUnderlyingType() const -{ - return underlying_type; -} - -const TypeDescriptor * -SdaiSelect::SetUnderlyingType (const TypeDescriptor * td) -{ - // don\'t do anything if the descriptor is bad - if (!td || !(_type -> CanBe (td))) return 0; - - base_type = td -> NonRefType (); - return underlying_type = td; -} - -int SdaiSelect::exists() const -{ - return (int) underlying_type; -} - -void SdaiSelect::nullify() -{ - underlying_type = 0; -} - -Severity -SdaiSelect::SelectValidLevel(const char *attrValue, ErrorDescriptor *err, - InstMgr *im, int clearError) -{ - SdaiSelect * tmp = NewSelect(); - Severity s = SEVERITY_NULL; - -// COMMENTED OUT TO ALLOW FOR TYPE RESOLUTION WHEN TYPE CHANGES -// if (CurrentUnderlyingType ()) -// s = tmp -> StrToVal -// (attrValue, CurrentUnderlyingType () -> Name (), err, im); -// else - G4std::istrstream paska((char *)attrValue); - s = tmp -> STEPread (paska, err, im); - delete tmp; - return s; -} - -Severity -SdaiSelect::StrToVal(const char *Val, const char *selectType, - ErrorDescriptor *err, InstMgr * instances) -{ - if (SetUnderlyingType (CanBe (selectType))) - - // the underlying type is set to a valid type - // call read on underlying type in subclass - - switch (base_type) { - case ENTITY_TYPE: - { - STEPentity * tmp = - ReadEntityRef (Val, err, ",)", instances, 0); - if( tmp && ( tmp != ENTITY_NULL ) && AssignEntity(tmp) ) - return SEVERITY_NULL; - else - { - err->AppendToDetailMsg( - "Reference to entity that is not a valid type for SELECT.\n" ); - nullify (); - err->GreaterSeverity( SEVERITY_WARNING ); - return SEVERITY_WARNING; - } - } - - // call StrToVal on the contents - case STRING_TYPE: - case AGGREGATE_TYPE: - case ARRAY_TYPE: // DAS - case BAG_TYPE: // DAS - case SET_TYPE: // DAS - case LIST_TYPE: // DAS - case ENUM_TYPE: - case SELECT_TYPE: - case BOOLEAN_TYPE: - case LOGICAL_TYPE: - { - err->GreaterSeverity( StrToVal_content (Val, instances) ); - if(_error.severity() != SEVERITY_NULL) - err->AppendFromErrorArg(&_error); - return err->severity(); - } - - // do the same as STEPread_content - case BINARY_TYPE: - case NUMBER_TYPE: - case REAL_TYPE: - case INTEGER_TYPE: - default: - { - G4std::istrstream paska((char *)Val); - err->GreaterSeverity( STEPread_content( paska ) ); - if(_error.severity() != SEVERITY_NULL) - err->AppendFromErrorArg(&_error); - return err->severity(); - } - } - return SEVERITY_INPUT_ERROR; -} - -Severity -SdaiSelect::STEPread (G4std::istream& in, ErrorDescriptor *err, InstMgr * instances, - int addFileId) -{ - char c ='\0'; - SCLstring tmp; - - // find out what case we have - // NOTE case C falls out of recursive calls in cases A and B - - in >> G4std::ws; - in >> c; -// c = in.peek(); - if( isalpha(c) ) // case B - { - // token is a type name - get the type - int eot =0; // end of token flag - while( (c != '(') && in.good() ) - { - if (!eot && ! (eot = isspace (c)) ) - // as long as eot hasn\'t been reached keep appending - tmp.Append(c); - in >> c; - } - - // check for valid type and set the underlying type - - if( SetUnderlyingType( CanBe( tmp.chars() ) ) ) - { // assign the value to the underlying type - in >> G4std::ws; // skip white space - STEPread_content (in, instances, addFileId); -// STEPread_content uses the ErrorDesc data member from the STEPselect class - err->AppendToDetailMsg (Error ()); - err->GreaterSeverity( severity () ); - in >> G4std::ws >> c; - if( c != ')' ) - { - err->AppendToDetailMsg( - "Bad data or missing closing ')' for SELECT type.\n" ); - err->GreaterSeverity( SEVERITY_WARNING ); - in.putback (c); - return SEVERITY_WARNING; - } - return err->severity(); - } - else // ERROR -- the type wasn't one of the choices - { - if( !in.good() ) - { - err->GreaterSeverity( SEVERITY_INPUT_ERROR ); - return SEVERITY_INPUT_ERROR; - } - else - { - err->AppendToDetailMsg ( - "The type name for the SELECT type is not valid.\n"); - err->GreaterSeverity (SEVERITY_WARNING); - return SEVERITY_WARNING; - } - } -/* if (!in.good()) - { - err->GreaterSeverity( SEVERITY_INPUT_ERROR ); - return SEVERITY_INPUT_ERROR; - } -*/ - } - else // case A - { // the type can be determined from the value -// if (_type && ! _type -> UniqueElements ()) { -// err->AppendToDetailMsg("Type for value of SELECT is ambiguous.\n" ); -// err->GreaterSeverity( SEVERITY_WARNING ); -// } - switch (c) - { - case '$': - nullify (); - err->GreaterSeverity (SEVERITY_INCOMPLETE); - return SEVERITY_INCOMPLETE; - - case ',': - case '\0': - // ERROR IN INPUT - in.putback (c); - err->AppendToDetailMsg( "No value found for SELECT type.\n" ); - err->GreaterSeverity( SEVERITY_WARNING ); - return SEVERITY_WARNING; - - case '.': // assign enum - base_type = ENUM_TYPE; - break; - // set the underlying type - // call STEPread - // return - - case '\'': // assign string - base_type = STRING_TYPE; - break; - - case '"': // assign string - base_type = BINARY_TYPE; - break; - - case '#': - base_type = ENTITY_TYPE; - break; - // call STEPread_reference - // set the underlying type - - // assign entity - // read the reference - // match type to underlying type - // assign the value - // set the underlying type - - case '(': - { - char n; - in >> n; - in.putback(n); - if( isalpha(n) ) - base_type = SELECT_TYPE; - else - base_type = AGGREGATE_TYPE; - in.putback( n ); - break; - } - - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case '-': - if( CanBe( REAL_TYPE ) ) - base_type = REAL_TYPE; - else - base_type = INTEGER_TYPE; - break; - - default: - // ambiguous - ERROR: underlying type should have been set - // STEPread_error (); - err->AppendToDetailMsg( - "type for SELECT could not be determined from value.\n" ); - nullify (); - in.putback (c); - err->GreaterSeverity( SEVERITY_WARNING ); - return SEVERITY_WARNING; - } - - in.putback (c); - - // now the type descriptor should be derivable from the base_type - if( base_type == ENTITY_TYPE ) - { // you don\'t know if this is an ENTITY or a SELECT - // have to do this here - not in STEPread_content - STEPentity * tmp = - ReadEntityRef (in, err, ",)", instances, addFileId); - if( tmp && ( tmp != ENTITY_NULL ) && AssignEntity(tmp) ) - return SEVERITY_NULL; - else - { - err->AppendToDetailMsg( - "Reference to entity that is not a valid type for SELECT.\n" ); - nullify (); - err->GreaterSeverity( SEVERITY_WARNING ); - return SEVERITY_WARNING; - } - } - else if ( SetUnderlyingType( CanBe(base_type) ) ) - STEPread_content( in, instances, addFileId ); - - else // ERROR -- the type wasn\'t one of the choices - { - err->AppendToDetailMsg( - "The type of the SELECT type is not valid.\n"); - err->GreaterSeverity( SEVERITY_WARNING ); - return SEVERITY_WARNING; - } - } -// if (!in.good()) severity (SEVERITY_INPUT_ERROR); - return err->severity (); -} - - -void -SdaiSelect::STEPwrite(G4std::ostream& out) const -{ - if (!exists ()) { - out << "$"; - return; - } - if (_type -> UniqueElements ()) - STEPwrite_content( out ); - else - { - SCLstring tmp; - out << StrToUpper( CurrentUnderlyingType()->Name(), tmp ) << "("; - STEPwrite_content (out); - out << ")"; - } -} - -const char * -SdaiSelect::STEPwrite(SCLstring& s) const -{ - G4std::strstream buf; - STEPwrite (buf); - buf << G4std::ends; // have to add the terminating \0 char - char * tmp; - tmp = buf.str (); - s = tmp; - delete tmp; - return s; -} - - -//SdaiSelect& -//SdaiSelect::operator= (SdaiSelect& x) -//{ -// return *this; -//} - -#ifdef OBSOLETE -char* -SdaiSelect::asStr() const -{ - G4std::strstream buf; - STEPwrite (buf); -/* STEPwrite_content (buf);*/ - buf << G4std::ends; // have to add the terminating \0 char - return buf.str (); // need to delete this space -} -#endif - -int -SdaiSelect::set_null () -{ - nullify (); - return 1; -} - -int -SdaiSelect::is_null () -{ - return (!exists ()); -} diff --git a/source/geometry/solids/STEP/src/STEPundefined.cc b/source/geometry/solids/STEP/src/STEPundefined.cc index 01c4f8a8e5..841664bdf7 100644 --- a/source/geometry/solids/STEP/src/STEPundefined.cc +++ b/source/geometry/solids/STEP/src/STEPundefined.cc @@ -1,18 +1,8 @@ - -// - - - -// -// $Id: STEPundefined.cc,v 1.3 1999/12/15 14:50:17 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - /* * NIST STEP Core Class Library * clstepcore/STEPundefined.cc -* May 1995 +* April 1997 * KC Morris * David Sauder @@ -20,7 +10,7 @@ * and is not subject to copyright. */ -/* */ +/* $Id: STEPundefined.cc,v 1.4 2000/01/21 13:42:58 gcosmo Exp $ */ #include // to get the BUFSIZ #define #include @@ -240,7 +230,7 @@ SCLundefined::STEPread(G4std::istream& in ) if (i < BUFSIZ) buf [i] = c; // BUG: read up to BUFSIZ -1 number of characters - // if more characters, NULL Terminate and ignore the rest of input + // if more characters, NULL terminate and ignore the rest of input if ((++i == BUFSIZ) && !terminal) { G4cerr << "WARNING: information lost -- value of undefined type is too long\n"; buf [i] = '\0'; diff --git a/source/geometry/solids/STEP/src/SdaiAll.cc b/source/geometry/solids/STEP/src/SdaiAll.cc new file mode 100644 index 0000000000..0673b294ee --- /dev/null +++ b/source/geometry/solids/STEP/src/SdaiAll.cc @@ -0,0 +1,5531 @@ +#ifndef SDAIALL_CC +#define SDAIALL_CC +// 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: SdaiAll.cc,v 1.2 2000/06/08 17:18:11 gcosmo Exp $ */ +#include + +#ifdef WIN32 + #define MSWIN 1 +#endif + +void +InitSchemasAndEnts (Registry & reg) +{ + Interface_spec_ptr is; + Used_item_ptr ui; + Referenced_item_ptr ri; + Uniqueness_rule_ptr ur; + Where_rule_ptr wr; + Global_rule_ptr gr; + // Schema: SdaiCONFIG_CONTROL_DESIGN + s_config_control_design = new Schema("Config_Control_Design"); + s_config_control_design->AssignModelContentsCreator( + (ModelContentsCreator) create_SdaiModel_contents_config_control_design); + reg.AddSchema (*s_config_control_design); + gr = new Global_rule("change_request_requires_approval",s_config_control_design,"RULE change_request_requires_approval FOR (change_request, \n cc_design_approval);\n\nWHERE\n wr1: (SIZEOF(QUERY ( cr <* change_request | (NOT (SIZEOF(\n QUERY ( ccda <* cc_design_approval | (cr IN ccda.items) )) = 1)) )) \n = 0);\n\nEND_RULE; -- change_request_requires_approval\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE change_request_requires_approval FOR (change_request, + cc_design_approval); + +WHERE + wr1: (SIZEOF(QUERY ( cr <* change_request | (NOT (SIZEOF( + QUERY ( ccda <* cc_design_approval | (cr IN ccda.items) )) = 1)) )) + = 0); + +END_RULE; -- change_request_requires_approval + +*/ + gr = new Global_rule("restrict_date_time_role",s_config_control_design,"RULE restrict_date_time_role FOR (date_time_role);\n\nWHERE\n wr1: (SIZEOF(QUERY ( dtr <* date_time_role | (NOT (dtr.name IN [\n 'creation_date','request_date','release_date','start_date',\n 'contract_date','certification_date','sign_off_date',\n 'classification_date','declassification_date'])) )) = 0);\n\nEND_RULE; -- restrict_date_time_role\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE restrict_date_time_role FOR (date_time_role); + +WHERE + wr1: (SIZEOF(QUERY ( dtr <* date_time_role | (NOT (dtr.name IN [ + 'creation_date','request_date','release_date','start_date', + 'contract_date','certification_date','sign_off_date', + 'classification_date','declassification_date'])) )) = 0); + +END_RULE; -- restrict_date_time_role + +*/ + gr = new Global_rule("versioned_action_request_requires_status",s_config_control_design,"RULE versioned_action_request_requires_status FOR (\n versioned_action_request, action_request_status);\n\nWHERE\n wr1: (SIZEOF(QUERY ( ar <* versioned_action_request | (NOT (SIZEOF(\n QUERY ( ars <* action_request_status | (ar :=: ars.\n assigned_request) )) = 1)) )) = 0);\n\nEND_RULE; -- versioned_action_request_requires_status\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE versioned_action_request_requires_status FOR ( + versioned_action_request, action_request_status); + +WHERE + wr1: (SIZEOF(QUERY ( ar <* versioned_action_request | (NOT (SIZEOF( + QUERY ( ars <* action_request_status | (ar :=: ars. + assigned_request) )) = 1)) )) = 0); + +END_RULE; -- versioned_action_request_requires_status + +*/ + gr = new Global_rule("acu_requires_security_classification",s_config_control_design,"RULE acu_requires_security_classification FOR (assembly_component_usage, \n cc_design_security_classification);\n\nWHERE\n wr1: (SIZEOF(QUERY ( acu <* assembly_component_usage | (NOT (SIZEOF(\n QUERY ( ccdsc <* cc_design_security_classification | (acu IN \n ccdsc.items) )) = 1)) )) = 0);\n\nEND_RULE; -- acu_requires_security_classification\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE acu_requires_security_classification FOR (assembly_component_usage, + cc_design_security_classification); + +WHERE + wr1: (SIZEOF(QUERY ( acu <* assembly_component_usage | (NOT (SIZEOF( + QUERY ( ccdsc <* cc_design_security_classification | (acu IN + ccdsc.items) )) = 1)) )) = 0); + +END_RULE; -- acu_requires_security_classification + +*/ + gr = new Global_rule("no_shape_for_supplied_part",s_config_control_design,"RULE no_shape_for_supplied_part FOR (supplied_part_relationship);\n\nWHERE\n wr1: (SIZEOF(QUERY ( spr <* supplied_part_relationship | (NOT (SIZEOF(\n QUERY ( pd <* USEDIN(spr,'CONFIG_CONTROL_DESIGN.' + \n 'PROPERTY_DEFINITION.DEFINITION') | (\n 'CONFIG_CONTROL_DESIGN.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) )) \n = 0)) )) = 0);\n\nEND_RULE; -- no_shape_for_supplied_part\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE no_shape_for_supplied_part FOR (supplied_part_relationship); + +WHERE + wr1: (SIZEOF(QUERY ( spr <* supplied_part_relationship | (NOT (SIZEOF( + QUERY ( pd <* USEDIN(spr,'CONFIG_CONTROL_DESIGN.' + + 'PROPERTY_DEFINITION.DEFINITION') | ( + 'CONFIG_CONTROL_DESIGN.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) )) + = 0)) )) = 0); + +END_RULE; -- no_shape_for_supplied_part + +*/ + gr = new Global_rule("dependent_instantiable_person_and_organization_role",s_config_control_design,"RULE dependent_instantiable_person_and_organization_role FOR (\n person_and_organization_role);\n\nWHERE\n wr1: (SIZEOF(QUERY ( poar <* person_and_organization_role | (NOT (\n SIZEOF(USEDIN(poar,'')) >= 1)) )) = 0);\n\nEND_RULE; -- dependent_instantiable_person_and_organization_role\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE dependent_instantiable_person_and_organization_role FOR ( + person_and_organization_role); + +WHERE + wr1: (SIZEOF(QUERY ( poar <* person_and_organization_role | (NOT ( + SIZEOF(USEDIN(poar,'')) >= 1)) )) = 0); + +END_RULE; -- dependent_instantiable_person_and_organization_role + +*/ + gr = new Global_rule("product_definition_requires_date_time",s_config_control_design,"RULE product_definition_requires_date_time FOR (product_definition, \n cc_design_date_and_time_assignment);\n\nWHERE\n wr1: (SIZEOF(QUERY ( pd <* product_definition | (NOT (SIZEOF(\n QUERY ( ccdta <* cc_design_date_and_time_assignment | (pd IN \n ccdta.items) )) = 1)) )) = 0);\n\nEND_RULE; -- product_definition_requires_date_time\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE product_definition_requires_date_time FOR (product_definition, + cc_design_date_and_time_assignment); + +WHERE + wr1: (SIZEOF(QUERY ( pd <* product_definition | (NOT (SIZEOF( + QUERY ( ccdta <* cc_design_date_and_time_assignment | (pd IN + ccdta.items) )) = 1)) )) = 0); + +END_RULE; -- product_definition_requires_date_time + +*/ + gr = new Global_rule("compatible_dimension",s_config_control_design,"RULE compatible_dimension FOR (cartesian_point, direction, \n representation_context, geometric_representation_context);\n\nWHERE\n wr1: (SIZEOF(QUERY ( x <* cartesian_point | (SIZEOF(QUERY ( y <* \n geometric_representation_context | (item_in_context(x,y) AND (\n HIINDEX(x.coordinates) <> y.coordinate_space_dimension)) )) > 0) )) \n = 0);\n wr2: (SIZEOF(QUERY ( x <* direction | (SIZEOF(QUERY ( y <* \n geometric_representation_context | (item_in_context(x,y) AND (\n HIINDEX(x.direction_ratios) <> y.coordinate_space_dimension)) )) \n > 0) )) = 0);\n\nEND_RULE; -- compatible_dimension\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE compatible_dimension FOR (cartesian_point, direction, + representation_context, geometric_representation_context); + +WHERE + wr1: (SIZEOF(QUERY ( x <* cartesian_point | (SIZEOF(QUERY ( y <* + geometric_representation_context | (item_in_context(x,y) AND ( + HIINDEX(x.coordinates) <> y.coordinate_space_dimension)) )) > 0) )) + = 0); + wr2: (SIZEOF(QUERY ( x <* direction | (SIZEOF(QUERY ( y <* + geometric_representation_context | (item_in_context(x,y) AND ( + HIINDEX(x.direction_ratios) <> y.coordinate_space_dimension)) )) + > 0) )) = 0); + +END_RULE; -- compatible_dimension + +*/ + gr = new Global_rule("product_version_requires_approval",s_config_control_design,"RULE product_version_requires_approval FOR (product_definition_formation, \n cc_design_approval);\n\nWHERE\n wr1: (SIZEOF(QUERY ( pdf <* product_definition_formation | (NOT (SIZEOF(\n QUERY ( ccda <* cc_design_approval | (pdf IN ccda.items) )) = 1)) )) \n = 0);\n\nEND_RULE; -- product_version_requires_approval\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE product_version_requires_approval FOR (product_definition_formation, + cc_design_approval); + +WHERE + wr1: (SIZEOF(QUERY ( pdf <* product_definition_formation | (NOT (SIZEOF( + QUERY ( ccda <* cc_design_approval | (pdf IN ccda.items) )) = 1)) )) + = 0); + +END_RULE; -- product_version_requires_approval + +*/ + gr = new Global_rule("change_requires_approval",s_config_control_design,"RULE change_requires_approval FOR (change, cc_design_approval);\n\nWHERE\n wr1: (SIZEOF(QUERY ( chg <* change | (NOT (SIZEOF(QUERY ( ccda <* \n cc_design_approval | (chg IN ccda.items) )) = 1)) )) = 0);\n\nEND_RULE; -- change_requires_approval\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE change_requires_approval FOR (change, cc_design_approval); + +WHERE + wr1: (SIZEOF(QUERY ( chg <* change | (NOT (SIZEOF(QUERY ( ccda <* + cc_design_approval | (chg IN ccda.items) )) = 1)) )) = 0); + +END_RULE; -- change_requires_approval + +*/ + gr = new Global_rule("product_requires_version",s_config_control_design,"RULE product_requires_version FOR (product, product_definition_formation);\n\nWHERE\n wr1: (SIZEOF(QUERY ( prod <* product | (NOT (SIZEOF(QUERY ( pdf <* \n product_definition_formation | (prod :=: pdf.of_product) )) >= 1)) )) \n = 0);\n\nEND_RULE; -- product_requires_version\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE product_requires_version FOR (product, product_definition_formation); + +WHERE + wr1: (SIZEOF(QUERY ( prod <* product | (NOT (SIZEOF(QUERY ( pdf <* + product_definition_formation | (prod :=: pdf.of_product) )) >= 1)) )) + = 0); + +END_RULE; -- product_requires_version + +*/ + gr = new Global_rule("product_definition_requires_person_organization",s_config_control_design,"RULE product_definition_requires_person_organization FOR (\n product_definition, cc_design_person_and_organization_assignment);\n\nWHERE\n wr1: (SIZEOF(QUERY ( pd <* product_definition | (NOT (SIZEOF(\n QUERY ( ccdpoa <* cc_design_person_and_organization_assignment\n | (pd IN ccdpoa.items) )) = 1)) )) = 0);\n\nEND_RULE; -- product_definition_requires_person_organization\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE product_definition_requires_person_organization FOR ( + product_definition, cc_design_person_and_organization_assignment); + +WHERE + wr1: (SIZEOF(QUERY ( pd <* product_definition | (NOT (SIZEOF( + QUERY ( ccdpoa <* cc_design_person_and_organization_assignment + | (pd IN ccdpoa.items) )) = 1)) )) = 0); + +END_RULE; -- product_definition_requires_person_organization + +*/ + gr = new Global_rule("product_concept_requires_configuration_item",s_config_control_design,"RULE product_concept_requires_configuration_item FOR (product_concept, \n configuration_item);\n\nWHERE\n wr1: (SIZEOF(QUERY ( pc <* product_concept | (NOT (SIZEOF(QUERY ( ci <* \n configuration_item | (pc :=: ci.item_concept) )) >= 1)) )) = 0);\n\nEND_RULE; -- product_concept_requires_configuration_item\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE product_concept_requires_configuration_item FOR (product_concept, + configuration_item); + +WHERE + wr1: (SIZEOF(QUERY ( pc <* product_concept | (NOT (SIZEOF(QUERY ( ci <* + configuration_item | (pc :=: ci.item_concept) )) >= 1)) )) = 0); + +END_RULE; -- product_concept_requires_configuration_item + +*/ + gr = new Global_rule("certification_requires_date_time",s_config_control_design,"RULE certification_requires_date_time FOR (certification, \n cc_design_date_and_time_assignment);\n\nWHERE\n wr1: (SIZEOF(QUERY ( cert <* certification | (NOT (SIZEOF(\n QUERY ( ccdta <* cc_design_date_and_time_assignment | (cert IN \n ccdta.items) )) = 1)) )) = 0);\n\nEND_RULE; -- certification_requires_date_time\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE certification_requires_date_time FOR (certification, + cc_design_date_and_time_assignment); + +WHERE + wr1: (SIZEOF(QUERY ( cert <* certification | (NOT (SIZEOF( + QUERY ( ccdta <* cc_design_date_and_time_assignment | (cert IN + ccdta.items) )) = 1)) )) = 0); + +END_RULE; -- certification_requires_date_time + +*/ + gr = new Global_rule("certification_requires_approval",s_config_control_design,"RULE certification_requires_approval FOR (certification, \n cc_design_approval);\n\nWHERE\n wr1: (SIZEOF(QUERY ( cert <* certification | (NOT (SIZEOF(\n QUERY ( ccda <* cc_design_approval | (cert IN ccda.items) )) = 1)) )) \n = 0);\n\nEND_RULE; -- certification_requires_approval\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE certification_requires_approval FOR (certification, + cc_design_approval); + +WHERE + wr1: (SIZEOF(QUERY ( cert <* certification | (NOT (SIZEOF( + QUERY ( ccda <* cc_design_approval | (cert IN ccda.items) )) = 1)) )) + = 0); + +END_RULE; -- certification_requires_approval + +*/ + gr = new Global_rule("subtype_mandatory_effectivity",s_config_control_design,"RULE subtype_mandatory_effectivity FOR (effectivity);\n\nWHERE\n wr1: (SIZEOF(QUERY ( eff <* effectivity | (NOT ((SIZEOF([\n 'CONFIG_CONTROL_DESIGN.SERIAL_NUMBERED_EFFECTIVITY',\n 'CONFIG_CONTROL_DESIGN.LOT_EFFECTIVITY',\n 'CONFIG_CONTROL_DESIGN.DATED_EFFECTIVITY'] * TYPEOF(eff)) = 1) \n AND ('CONFIG_CONTROL_DESIGN.CONFIGURATION_EFFECTIVITY' IN \n TYPEOF(eff)))) )) = 0);\n\nEND_RULE; -- subtype_mandatory_effectivity\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE subtype_mandatory_effectivity FOR (effectivity); + +WHERE + wr1: (SIZEOF(QUERY ( eff <* effectivity | (NOT ((SIZEOF([ + 'CONFIG_CONTROL_DESIGN.SERIAL_NUMBERED_EFFECTIVITY', + 'CONFIG_CONTROL_DESIGN.LOT_EFFECTIVITY', + 'CONFIG_CONTROL_DESIGN.DATED_EFFECTIVITY'] * TYPEOF(eff)) = 1) + AND ('CONFIG_CONTROL_DESIGN.CONFIGURATION_EFFECTIVITY' IN + TYPEOF(eff)))) )) = 0); + +END_RULE; -- subtype_mandatory_effectivity + +*/ + gr = new Global_rule("versioned_action_request_requires_solution",s_config_control_design,"RULE versioned_action_request_requires_solution FOR (\n versioned_action_request, action_request_solution);\n\nWHERE\n wr1: (SIZEOF(QUERY ( ar <* versioned_action_request | (NOT (SIZEOF(\n QUERY ( ars <* action_request_solution | (ar :=: ars.request) )) \n >= 1)) )) = 0);\n\nEND_RULE; -- versioned_action_request_requires_solution\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE versioned_action_request_requires_solution FOR ( + versioned_action_request, action_request_solution); + +WHERE + wr1: (SIZEOF(QUERY ( ar <* versioned_action_request | (NOT (SIZEOF( + QUERY ( ars <* action_request_solution | (ar :=: ars.request) )) + >= 1)) )) = 0); + +END_RULE; -- versioned_action_request_requires_solution + +*/ + gr = new Global_rule("effectivity_requires_approval",s_config_control_design,"RULE effectivity_requires_approval FOR (effectivity, cc_design_approval);\n\nWHERE\n wr1: (SIZEOF(QUERY ( eff <* effectivity | (NOT (SIZEOF(QUERY ( ccda <* \n cc_design_approval | (eff IN ccda.items) )) = 1)) )) = 0);\n\nEND_RULE; -- effectivity_requires_approval\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE effectivity_requires_approval FOR (effectivity, cc_design_approval); + +WHERE + wr1: (SIZEOF(QUERY ( eff <* effectivity | (NOT (SIZEOF(QUERY ( ccda <* + cc_design_approval | (eff IN ccda.items) )) = 1)) )) = 0); + +END_RULE; -- effectivity_requires_approval + +*/ + gr = new Global_rule("unique_version_change_order_rule",s_config_control_design,"RULE unique_version_change_order_rule FOR (change);\n\nWHERE\n wr1: (SIZEOF(QUERY ( c <* change | (NOT unique_version_change_order(c.\n assigned_action)) )) = 0);\n\nEND_RULE; -- unique_version_change_order_rule\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE unique_version_change_order_rule FOR (change); + +WHERE + wr1: (SIZEOF(QUERY ( c <* change | (NOT unique_version_change_order(c. + assigned_action)) )) = 0); + +END_RULE; -- unique_version_change_order_rule + +*/ + gr = new Global_rule("dependent_instantiable_named_unit",s_config_control_design,"RULE dependent_instantiable_named_unit FOR (named_unit);\n\nWHERE\n wr1: (SIZEOF(QUERY ( nu <* named_unit | (NOT (SIZEOF(USEDIN(nu,'')) >= 1)) )) \n = 0);\n\nEND_RULE; -- dependent_instantiable_named_unit\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE dependent_instantiable_named_unit FOR (named_unit); + +WHERE + wr1: (SIZEOF(QUERY ( nu <* named_unit | (NOT (SIZEOF(USEDIN(nu,'')) >= 1)) )) + = 0); + +END_RULE; -- dependent_instantiable_named_unit + +*/ + gr = new Global_rule("subtype_mandatory_product_definition_formation",s_config_control_design,"RULE subtype_mandatory_product_definition_formation FOR (\n product_definition_formation);\n\nWHERE\n wr1: (SIZEOF(QUERY ( pdf <* product_definition_formation | (NOT ((\n 'CONFIG_CONTROL_DESIGN.' + \n 'PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE') IN TYPEOF(\n pdf))) )) = 0);\n\nEND_RULE; -- subtype_mandatory_product_definition_formation\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE subtype_mandatory_product_definition_formation FOR ( + product_definition_formation); + +WHERE + wr1: (SIZEOF(QUERY ( pdf <* product_definition_formation | (NOT (( + 'CONFIG_CONTROL_DESIGN.' + + 'PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE') IN TYPEOF( + pdf))) )) = 0); + +END_RULE; -- subtype_mandatory_product_definition_formation + +*/ + gr = new Global_rule("approval_requires_approval_person_organization",s_config_control_design,"RULE approval_requires_approval_person_organization FOR (approval, \n approval_person_organization);\n\nWHERE\n wr1: (SIZEOF(QUERY ( app <* approval | (NOT (SIZEOF(QUERY ( apo <* \n approval_person_organization | (app :=: apo.authorized_approval) )) \n >= 1)) )) = 0);\n\nEND_RULE; -- approval_requires_approval_person_organization\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE approval_requires_approval_person_organization FOR (approval, + approval_person_organization); + +WHERE + wr1: (SIZEOF(QUERY ( app <* approval | (NOT (SIZEOF(QUERY ( apo <* + approval_person_organization | (app :=: apo.authorized_approval) )) + >= 1)) )) = 0); + +END_RULE; -- approval_requires_approval_person_organization + +*/ + gr = new Global_rule("approvals_are_assigned",s_config_control_design,"RULE approvals_are_assigned FOR (approval, approval_assignment);\n\nWHERE\n wr1: (SIZEOF(QUERY ( app <* approval | (NOT (SIZEOF(QUERY ( aa <* \n approval_assignment | (app :=: aa.assigned_approval) )) >= 1)) )) \n = 0);\n\nEND_RULE; -- approvals_are_assigned\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE approvals_are_assigned FOR (approval, approval_assignment); + +WHERE + wr1: (SIZEOF(QUERY ( app <* approval | (NOT (SIZEOF(QUERY ( aa <* + approval_assignment | (app :=: aa.assigned_approval) )) >= 1)) )) + = 0); + +END_RULE; -- approvals_are_assigned + +*/ + gr = new Global_rule("start_work_requires_approval",s_config_control_design,"RULE start_work_requires_approval FOR (start_work, cc_design_approval);\n\nWHERE\n wr1: (SIZEOF(QUERY ( sw <* start_work | (NOT (SIZEOF(QUERY ( ccda <* \n cc_design_approval | (sw IN ccda.items) )) = 1)) )) = 0);\n\nEND_RULE; -- start_work_requires_approval\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE start_work_requires_approval FOR (start_work, cc_design_approval); + +WHERE + wr1: (SIZEOF(QUERY ( sw <* start_work | (NOT (SIZEOF(QUERY ( ccda <* + cc_design_approval | (sw IN ccda.items) )) = 1)) )) = 0); + +END_RULE; -- start_work_requires_approval + +*/ + gr = new Global_rule("configuration_item_requires_approval",s_config_control_design,"RULE configuration_item_requires_approval FOR (configuration_item, \n cc_design_approval);\n\nWHERE\n wr1: (SIZEOF(QUERY ( ci <* configuration_item | (NOT (SIZEOF(\n QUERY ( ccda <* cc_design_approval | (ci IN ccda.items) )) = 1)) )) \n = 0);\n\nEND_RULE; -- configuration_item_requires_approval\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE configuration_item_requires_approval FOR (configuration_item, + cc_design_approval); + +WHERE + wr1: (SIZEOF(QUERY ( ci <* configuration_item | (NOT (SIZEOF( + QUERY ( ccda <* cc_design_approval | (ci IN ccda.items) )) = 1)) )) + = 0); + +END_RULE; -- configuration_item_requires_approval + +*/ + gr = new Global_rule("contract_requires_person_organization",s_config_control_design,"RULE contract_requires_person_organization FOR (contract, \n cc_design_person_and_organization_assignment);\n\nWHERE\n wr1: (SIZEOF(QUERY ( c <* contract | (NOT (SIZEOF(QUERY ( ccdpoa <* \n cc_design_person_and_organization_assignment | (c IN ccdpoa.\n items) )) = 1)) )) = 0);\n\nEND_RULE; -- contract_requires_person_organization\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE contract_requires_person_organization FOR (contract, + cc_design_person_and_organization_assignment); + +WHERE + wr1: (SIZEOF(QUERY ( c <* contract | (NOT (SIZEOF(QUERY ( ccdpoa <* + cc_design_person_and_organization_assignment | (c IN ccdpoa. + items) )) = 1)) )) = 0); + +END_RULE; -- contract_requires_person_organization + +*/ + gr = new Global_rule("dependent_instantiable_date_time_role",s_config_control_design,"RULE dependent_instantiable_date_time_role FOR (date_time_role);\n\nWHERE\n wr1: (SIZEOF(QUERY ( dtr <* date_time_role | (NOT (SIZEOF(USEDIN(dtr,'')) \n >= 1)) )) = 0);\n\nEND_RULE; -- dependent_instantiable_date_time_role\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE dependent_instantiable_date_time_role FOR (date_time_role); + +WHERE + wr1: (SIZEOF(QUERY ( dtr <* date_time_role | (NOT (SIZEOF(USEDIN(dtr,'')) + >= 1)) )) = 0); + +END_RULE; -- dependent_instantiable_date_time_role + +*/ + gr = new Global_rule("restrict_product_category_value",s_config_control_design,"RULE restrict_product_category_value FOR (product_related_product_category);\n\nWHERE\n wr1: (SIZEOF(QUERY ( prpc <* product_related_product_category | (NOT (\n prpc.name IN ['assembly','detail','customer_furnished_equipment',\n 'inseparable_assembly','cast','coined','drawn','extruded',\n 'forged','formed','machined','molded','rolled','sheared'])) )) =\n 0);\n\nEND_RULE; -- restrict_product_category_value\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE restrict_product_category_value FOR (product_related_product_category); + +WHERE + wr1: (SIZEOF(QUERY ( prpc <* product_related_product_category | (NOT ( + prpc.name IN ['assembly','detail','customer_furnished_equipment', + 'inseparable_assembly','cast','coined','drawn','extruded', + 'forged','formed','machined','molded','rolled','sheared'])) )) = + 0); + +END_RULE; -- restrict_product_category_value + +*/ + gr = new Global_rule("start_work_requires_date_time",s_config_control_design,"RULE start_work_requires_date_time FOR (start_work, \n cc_design_date_and_time_assignment);\n\nWHERE\n wr1: (SIZEOF(QUERY ( sw <* start_work | (NOT (SIZEOF(QUERY ( ccdta <* \n cc_design_date_and_time_assignment | ((sw IN ccdta.items) AND (\n ccdta.role.name = 'start_date')) )) = 1)) )) = 0);\n\nEND_RULE; -- start_work_requires_date_time\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE start_work_requires_date_time FOR (start_work, + cc_design_date_and_time_assignment); + +WHERE + wr1: (SIZEOF(QUERY ( sw <* start_work | (NOT (SIZEOF(QUERY ( ccdta <* + cc_design_date_and_time_assignment | ((sw IN ccdta.items) AND ( + ccdta.role.name = 'start_date')) )) = 1)) )) = 0); + +END_RULE; -- start_work_requires_date_time + +*/ + gr = new Global_rule("product_requires_product_category",s_config_control_design,"RULE product_requires_product_category FOR (product, \n product_related_product_category);\n\nWHERE\n wr1: (SIZEOF(QUERY ( prod <* product | (NOT (SIZEOF(QUERY ( prpc <* \n product_related_product_category | ((prod IN prpc.products) AND \n (prpc.name IN ['assembly','inseparable_assembly','detail',\n 'customer_furnished_equipment'])) )) = 1)) )) = 0);\n\nEND_RULE; -- product_requires_product_category\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE product_requires_product_category FOR (product, + product_related_product_category); + +WHERE + wr1: (SIZEOF(QUERY ( prod <* product | (NOT (SIZEOF(QUERY ( prpc <* + product_related_product_category | ((prod IN prpc.products) AND + (prpc.name IN ['assembly','inseparable_assembly','detail', + 'customer_furnished_equipment'])) )) = 1)) )) = 0); + +END_RULE; -- product_requires_product_category + +*/ + gr = new Global_rule("dependent_instantiable_representation_item",s_config_control_design,"RULE dependent_instantiable_representation_item FOR (representation_item);\n\nWHERE\n wr1: (SIZEOF(QUERY ( ri <* representation_item | (NOT (SIZEOF(USEDIN(ri,\n '')) >= 1)) )) = 0);\n\nEND_RULE; -- dependent_instantiable_representation_item\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE dependent_instantiable_representation_item FOR (representation_item); + +WHERE + wr1: (SIZEOF(QUERY ( ri <* representation_item | (NOT (SIZEOF(USEDIN(ri, + '')) >= 1)) )) = 0); + +END_RULE; -- dependent_instantiable_representation_item + +*/ + gr = new Global_rule("change_request_requires_person_organization",s_config_control_design,"RULE change_request_requires_person_organization FOR (change_request, \n cc_design_person_and_organization_assignment);\n\nWHERE\n wr1: (SIZEOF(QUERY ( cr <* change_request | (NOT (SIZEOF(\n QUERY ( ccpoa <* cc_design_person_and_organization_assignment | \n (cr IN ccpoa.items) )) >= 1)) )) = 0);\n\nEND_RULE; -- change_request_requires_person_organization\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE change_request_requires_person_organization FOR (change_request, + cc_design_person_and_organization_assignment); + +WHERE + wr1: (SIZEOF(QUERY ( cr <* change_request | (NOT (SIZEOF( + QUERY ( ccpoa <* cc_design_person_and_organization_assignment | + (cr IN ccpoa.items) )) >= 1)) )) = 0); + +END_RULE; -- change_request_requires_person_organization + +*/ + gr = new Global_rule("product_definition_requires_approval",s_config_control_design,"RULE product_definition_requires_approval FOR (product_definition, \n cc_design_approval);\n\nWHERE\n wr1: (SIZEOF(QUERY ( pd <* product_definition | (NOT (SIZEOF(\n QUERY ( ccda <* cc_design_approval | (pd IN ccda.items) )) = 1)) )) \n = 0);\n\nEND_RULE; -- product_definition_requires_approval\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE product_definition_requires_approval FOR (product_definition, + cc_design_approval); + +WHERE + wr1: (SIZEOF(QUERY ( pd <* product_definition | (NOT (SIZEOF( + QUERY ( ccda <* cc_design_approval | (pd IN ccda.items) )) = 1)) )) + = 0); + +END_RULE; -- product_definition_requires_approval + +*/ + gr = new Global_rule("subtype_mandatory_representation_context",s_config_control_design,"RULE subtype_mandatory_representation_context FOR (representation_context);\n\nWHERE\n wr1: (SIZEOF(QUERY ( rep_cntxt <* representation_context | (NOT (\n 'CONFIG_CONTROL_DESIGN.GEOMETRIC_REPRESENTATION_CONTEXT' IN \n TYPEOF(rep_cntxt))) )) = 0);\n\nEND_RULE; -- subtype_mandatory_representation_context\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE subtype_mandatory_representation_context FOR (representation_context); + +WHERE + wr1: (SIZEOF(QUERY ( rep_cntxt <* representation_context | (NOT ( + 'CONFIG_CONTROL_DESIGN.GEOMETRIC_REPRESENTATION_CONTEXT' IN + TYPEOF(rep_cntxt))) )) = 0); + +END_RULE; -- subtype_mandatory_representation_context + +*/ + gr = new Global_rule("security_classification_requires_date_time",s_config_control_design,"RULE security_classification_requires_date_time FOR (\n security_classification, cc_design_date_and_time_assignment);\n\nWHERE\n wr1: (SIZEOF(QUERY ( sc <* security_classification | (NOT (SIZEOF(\n QUERY ( ccdta <* cc_design_date_and_time_assignment | ((sc IN \n ccdta.items) AND ('classification_date' = ccdta.role.name)) )) =\n 1)) )) = 0);\n\nEND_RULE; -- security_classification_requires_date_time\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE security_classification_requires_date_time FOR ( + security_classification, cc_design_date_and_time_assignment); + +WHERE + wr1: (SIZEOF(QUERY ( sc <* security_classification | (NOT (SIZEOF( + QUERY ( ccdta <* cc_design_date_and_time_assignment | ((sc IN + ccdta.items) AND ('classification_date' = ccdta.role.name)) )) = + 1)) )) = 0); + +END_RULE; -- security_classification_requires_date_time + +*/ + gr = new Global_rule("security_classification_optional_date_time",s_config_control_design,"RULE security_classification_optional_date_time FOR (\n security_classification, cc_design_date_and_time_assignment);\n\nWHERE\n wr1: (SIZEOF(QUERY ( sc <* security_classification | (NOT (SIZEOF(\n QUERY ( ccdta <* cc_design_date_and_time_assignment | ((sc IN \n ccdta.items) AND ('declassification_date' = ccdta.role.name)) )) \n <= 1)) )) = 0);\n\nEND_RULE; -- security_classification_optional_date_time\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE security_classification_optional_date_time FOR ( + security_classification, cc_design_date_and_time_assignment); + +WHERE + wr1: (SIZEOF(QUERY ( sc <* security_classification | (NOT (SIZEOF( + QUERY ( ccdta <* cc_design_date_and_time_assignment | ((sc IN + ccdta.items) AND ('declassification_date' = ccdta.role.name)) )) + <= 1)) )) = 0); + +END_RULE; -- security_classification_optional_date_time + +*/ + gr = new Global_rule("as_required_quantity",s_config_control_design,"RULE as_required_quantity FOR (measure_with_unit);\n\nWHERE\n wr1: (SIZEOF(QUERY ( m <* measure_with_unit | ((\n 'CONFIG_CONTROL_DESIGN.DESCRIPTIVE_MEASURE' IN TYPEOF(m.\n value_component)) AND (NOT (m.value_component = 'as_required'))) )) \n = 0);\n\nEND_RULE; -- as_required_quantity\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE as_required_quantity FOR (measure_with_unit); + +WHERE + wr1: (SIZEOF(QUERY ( m <* measure_with_unit | (( + 'CONFIG_CONTROL_DESIGN.DESCRIPTIVE_MEASURE' IN TYPEOF(m. + value_component)) AND (NOT (m.value_component = 'as_required'))) )) + = 0); + +END_RULE; -- as_required_quantity + +*/ + gr = new Global_rule("start_request_requires_approval",s_config_control_design,"RULE start_request_requires_approval FOR (start_request, \n cc_design_approval);\n\nWHERE\n wr1: (SIZEOF(QUERY ( sr <* start_request | (NOT (SIZEOF(QUERY ( ccda <* \n cc_design_approval | (sr IN ccda.items) )) = 1)) )) = 0);\n\nEND_RULE; -- start_request_requires_approval\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE start_request_requires_approval FOR (start_request, + cc_design_approval); + +WHERE + wr1: (SIZEOF(QUERY ( sr <* start_request | (NOT (SIZEOF(QUERY ( ccda <* + cc_design_approval | (sr IN ccda.items) )) = 1)) )) = 0); + +END_RULE; -- start_request_requires_approval + +*/ + gr = new Global_rule("geometric_representation_item_3d",s_config_control_design,"RULE geometric_representation_item_3d FOR (geometric_representation_item);\n\nWHERE\n wr1: (SIZEOF(QUERY ( gri <* geometric_representation_item | (NOT ((\n dimension_of(gri) = 3) OR (SIZEOF(bag_to_set(USEDIN(gri,'')) - \n bag_to_set(USEDIN(gri,\n 'CONFIG_CONTROL_DESIGN.DEFINITIONAL_REPRESENTATION.ITEMS'))) = 0))) )) \n = 0);\n\nEND_RULE; -- geometric_representation_item_3d\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE geometric_representation_item_3d FOR (geometric_representation_item); + +WHERE + wr1: (SIZEOF(QUERY ( gri <* geometric_representation_item | (NOT (( + dimension_of(gri) = 3) OR (SIZEOF(bag_to_set(USEDIN(gri,'')) - + bag_to_set(USEDIN(gri, + 'CONFIG_CONTROL_DESIGN.DEFINITIONAL_REPRESENTATION.ITEMS'))) = 0))) )) + = 0); + +END_RULE; -- geometric_representation_item_3d + +*/ + gr = new Global_rule("application_context_requires_ap_definition",s_config_control_design,"RULE application_context_requires_ap_definition FOR (application_context, \n application_protocol_definition);\n\nWHERE\n wr1: (SIZEOF(QUERY ( ac <* application_context | (NOT (SIZEOF(\n QUERY ( apd <* application_protocol_definition | ((ac :=: apd.\n application) AND (apd.application_interpreted_model_schema_name \n = 'config_control_design')) )) = 1)) )) = 0);\n\nEND_RULE; -- application_context_requires_ap_definition\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE application_context_requires_ap_definition FOR (application_context, + application_protocol_definition); + +WHERE + wr1: (SIZEOF(QUERY ( ac <* application_context | (NOT (SIZEOF( + QUERY ( apd <* application_protocol_definition | ((ac :=: apd. + application) AND (apd.application_interpreted_model_schema_name + = 'config_control_design')) )) = 1)) )) = 0); + +END_RULE; -- application_context_requires_ap_definition + +*/ + gr = new Global_rule("subtype_mandatory_representation",s_config_control_design,"RULE subtype_mandatory_representation FOR (representation);\n\nWHERE\n wr1: (SIZEOF(QUERY ( rep <* representation | (NOT (\n 'CONFIG_CONTROL_DESIGN.SHAPE_REPRESENTATION' IN TYPEOF(rep))) )) \n = 0);\n\nEND_RULE; -- subtype_mandatory_representation\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE subtype_mandatory_representation FOR (representation); + +WHERE + wr1: (SIZEOF(QUERY ( rep <* representation | (NOT ( + 'CONFIG_CONTROL_DESIGN.SHAPE_REPRESENTATION' IN TYPEOF(rep))) )) + = 0); + +END_RULE; -- subtype_mandatory_representation + +*/ + gr = new Global_rule("change_requires_date_time",s_config_control_design,"RULE change_requires_date_time FOR (change, \n cc_design_date_and_time_assignment);\n\nWHERE\n wr1: (SIZEOF(QUERY ( chg <* change | (NOT (SIZEOF(QUERY ( ccdta <* \n cc_design_date_and_time_assignment | ((chg IN ccdta.items) AND (\n ccdta.role.name = 'start_date')) )) = 1)) )) = 0);\n\nEND_RULE; -- change_requires_date_time\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE change_requires_date_time FOR (change, + cc_design_date_and_time_assignment); + +WHERE + wr1: (SIZEOF(QUERY ( chg <* change | (NOT (SIZEOF(QUERY ( ccdta <* + cc_design_date_and_time_assignment | ((chg IN ccdta.items) AND ( + ccdta.role.name = 'start_date')) )) = 1)) )) = 0); + +END_RULE; -- change_requires_date_time + +*/ + gr = new Global_rule("dependent_instantiable_action_directive",s_config_control_design,"RULE dependent_instantiable_action_directive FOR (action_directive);\n\nWHERE\n wr1: (SIZEOF(QUERY ( ad <* action_directive | (NOT (SIZEOF(USEDIN(ad,'')) \n >= 1)) )) = 0);\n\nEND_RULE; -- dependent_instantiable_action_directive\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE dependent_instantiable_action_directive FOR (action_directive); + +WHERE + wr1: (SIZEOF(QUERY ( ad <* action_directive | (NOT (SIZEOF(USEDIN(ad,'')) + >= 1)) )) = 0); + +END_RULE; -- dependent_instantiable_action_directive + +*/ + gr = new Global_rule("restrict_security_classification_level",s_config_control_design,"RULE restrict_security_classification_level FOR (\n security_classification_level);\n\nWHERE\n wr1: (SIZEOF(QUERY ( scl <* security_classification_level | (NOT (scl.\n name IN ['unclassified','classified','proprietary',\n 'confidential','secret','top_secret'])) )) = 0);\n\nEND_RULE; -- restrict_security_classification_level\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE restrict_security_classification_level FOR ( + security_classification_level); + +WHERE + wr1: (SIZEOF(QUERY ( scl <* security_classification_level | (NOT (scl. + name IN ['unclassified','classified','proprietary', + 'confidential','secret','top_secret'])) )) = 0); + +END_RULE; -- restrict_security_classification_level + +*/ + gr = new Global_rule("approval_requires_approval_date_time",s_config_control_design,"RULE approval_requires_approval_date_time FOR (approval, \n approval_date_time);\n\nWHERE\n wr1: (SIZEOF(QUERY ( app <* approval | (NOT (SIZEOF(QUERY ( adt <* \n approval_date_time | (app :=: adt.dated_approval) )) = 1)) )) = \n 0);\n\nEND_RULE; -- approval_requires_approval_date_time\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE approval_requires_approval_date_time FOR (approval, + approval_date_time); + +WHERE + wr1: (SIZEOF(QUERY ( app <* approval | (NOT (SIZEOF(QUERY ( adt <* + approval_date_time | (app :=: adt.dated_approval) )) = 1)) )) = + 0); + +END_RULE; -- approval_requires_approval_date_time + +*/ + gr = new Global_rule("subtype_mandatory_product_definition_usage",s_config_control_design,"RULE subtype_mandatory_product_definition_usage FOR (\n product_definition_usage);\n\nWHERE\n wr1: (SIZEOF(QUERY ( pdu <* product_definition_usage | (NOT ((\n 'CONFIG_CONTROL_DESIGN.' + 'ASSEMBLY_COMPONENT_USAGE') IN \n TYPEOF(pdu))) )) = 0);\n\nEND_RULE; -- subtype_mandatory_product_definition_usage\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE subtype_mandatory_product_definition_usage FOR ( + product_definition_usage); + +WHERE + wr1: (SIZEOF(QUERY ( pdu <* product_definition_usage | (NOT (( + 'CONFIG_CONTROL_DESIGN.' + 'ASSEMBLY_COMPONENT_USAGE') IN + TYPEOF(pdu))) )) = 0); + +END_RULE; -- subtype_mandatory_product_definition_usage + +*/ + gr = new Global_rule("restrict_approval_status",s_config_control_design,"RULE restrict_approval_status FOR (approval_status);\n\nWHERE\n wr1: (SIZEOF(QUERY ( ast <* approval_status | (NOT (ast.name IN [\n 'approved','not_yet_approved','disapproved','withdrawn'])) )) = \n 0);\n\nEND_RULE; -- restrict_approval_status\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE restrict_approval_status FOR (approval_status); + +WHERE + wr1: (SIZEOF(QUERY ( ast <* approval_status | (NOT (ast.name IN [ + 'approved','not_yet_approved','disapproved','withdrawn'])) )) = + 0); + +END_RULE; -- restrict_approval_status + +*/ + gr = new Global_rule("change_request_requires_date_time",s_config_control_design,"RULE change_request_requires_date_time FOR (change_request, \n cc_design_date_and_time_assignment);\n\nWHERE\n wr1: (SIZEOF(QUERY ( cr <* change_request | (NOT (SIZEOF(\n QUERY ( ccdta <* cc_design_date_and_time_assignment | (cr IN \n ccdta.items) )) = 1)) )) = 0);\n\nEND_RULE; -- change_request_requires_date_time\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE change_request_requires_date_time FOR (change_request, + cc_design_date_and_time_assignment); + +WHERE + wr1: (SIZEOF(QUERY ( cr <* change_request | (NOT (SIZEOF( + QUERY ( ccdta <* cc_design_date_and_time_assignment | (cr IN + ccdta.items) )) = 1)) )) = 0); + +END_RULE; -- change_request_requires_date_time + +*/ + gr = new Global_rule("dependent_instantiable_contract_type",s_config_control_design,"RULE dependent_instantiable_contract_type FOR (contract_type);\n\nWHERE\n wr1: (SIZEOF(QUERY ( ct <* contract_type | (NOT (SIZEOF(USEDIN(ct,'')) \n >= 1)) )) = 0);\n\nEND_RULE; -- dependent_instantiable_contract_type\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE dependent_instantiable_contract_type FOR (contract_type); + +WHERE + wr1: (SIZEOF(QUERY ( ct <* contract_type | (NOT (SIZEOF(USEDIN(ct,'')) + >= 1)) )) = 0); + +END_RULE; -- dependent_instantiable_contract_type + +*/ + gr = new Global_rule("contract_requires_approval",s_config_control_design,"RULE contract_requires_approval FOR (contract, cc_design_approval);\n\nWHERE\n wr1: (SIZEOF(QUERY ( c <* contract | (NOT (SIZEOF(QUERY ( ccda <* \n cc_design_approval | (c IN ccda.items) )) = 1)) )) = 0);\n\nEND_RULE; -- contract_requires_approval\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE contract_requires_approval FOR (contract, cc_design_approval); + +WHERE + wr1: (SIZEOF(QUERY ( c <* contract | (NOT (SIZEOF(QUERY ( ccda <* + cc_design_approval | (c IN ccda.items) )) = 1)) )) = 0); + +END_RULE; -- contract_requires_approval + +*/ + gr = new Global_rule("restrict_document_type",s_config_control_design,"RULE restrict_document_type FOR (document_type);\n\nWHERE\n wr1: (SIZEOF(QUERY ( dt <* document_type | (NOT (dt.product_data_type IN\n ['material_specification','process_specification',\n 'design_specification','surface_finish_specification',\n 'cad_filename','drawing'])) )) = 0);\n\nEND_RULE; -- restrict_document_type\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE restrict_document_type FOR (document_type); + +WHERE + wr1: (SIZEOF(QUERY ( dt <* document_type | (NOT (dt.product_data_type IN + ['material_specification','process_specification', + 'design_specification','surface_finish_specification', + 'cad_filename','drawing'])) )) = 0); + +END_RULE; -- restrict_document_type + +*/ + gr = new Global_rule("dependent_instantiable_certification_type",s_config_control_design,"RULE dependent_instantiable_certification_type FOR (certification_type);\n\nWHERE\n wr1: (SIZEOF(QUERY ( ct <* certification_type | (NOT (SIZEOF(USEDIN(ct,\n '')) >= 1)) )) = 0);\n\nEND_RULE; -- dependent_instantiable_certification_type\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE dependent_instantiable_certification_type FOR (certification_type); + +WHERE + wr1: (SIZEOF(QUERY ( ct <* certification_type | (NOT (SIZEOF(USEDIN(ct, + '')) >= 1)) )) = 0); + +END_RULE; -- dependent_instantiable_certification_type + +*/ + gr = new Global_rule("design_context_for_property",s_config_control_design,"RULE design_context_for_property FOR (product_definition);\n\nWHERE\n wr1: (SIZEOF(QUERY ( pd <* product_definition | ((SIZEOF(USEDIN(pd,\n 'CONFIG_CONTROL_DESIGN.' + 'PROPERTY_DEFINITION.DEFINITION') + \n QUERY ( pdr <* USEDIN(pd,'CONFIG_CONTROL_DESIGN.' + \n 'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') | \n (SIZEOF(USEDIN(pdr,'CONFIG_CONTROL_DESIGN.PROPERTY_DEFINITION.' \n + 'DEFINITION')) >= 1) )) >= 1) AND (NOT (\n 'CONFIG_CONTROL_DESIGN.DESIGN_CONTEXT' IN TYPEOF(pd.\n frame_of_reference)))) )) = 0);\n\nEND_RULE; -- design_context_for_property\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE design_context_for_property FOR (product_definition); + +WHERE + wr1: (SIZEOF(QUERY ( pd <* product_definition | ((SIZEOF(USEDIN(pd, + 'CONFIG_CONTROL_DESIGN.' + 'PROPERTY_DEFINITION.DEFINITION') + + QUERY ( pdr <* USEDIN(pd,'CONFIG_CONTROL_DESIGN.' + + 'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') | + (SIZEOF(USEDIN(pdr,'CONFIG_CONTROL_DESIGN.PROPERTY_DEFINITION.' + + 'DEFINITION')) >= 1) )) >= 1) AND (NOT ( + 'CONFIG_CONTROL_DESIGN.DESIGN_CONTEXT' IN TYPEOF(pd. + frame_of_reference)))) )) = 0); + +END_RULE; -- design_context_for_property + +*/ + gr = new Global_rule("product_version_requires_person_organization",s_config_control_design,"RULE product_version_requires_person_organization FOR (\n product_definition_formation, \n cc_design_person_and_organization_assignment);\n\nWHERE\n wr1: (SIZEOF(QUERY ( pdf <* product_definition_formation | (NOT (SIZEOF(\n QUERY ( ccdpoa <* cc_design_person_and_organization_assignment\n | ((pdf IN ccdpoa.items) AND (ccdpoa.role.name = 'creator')) )) \n = 1)) )) = 0);\n wr2: (SIZEOF(QUERY ( pdf <* product_definition_formation | (NOT (SIZEOF(\n QUERY ( ccdpoa <* cc_design_person_and_organization_assignment\n | ((pdf IN ccdpoa.items) AND (ccdpoa.role.name IN [\n 'design_supplier','part_supplier'])) )) >= 1)) )) = 0);\n\nEND_RULE; -- product_version_requires_person_organization\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE product_version_requires_person_organization FOR ( + product_definition_formation, + cc_design_person_and_organization_assignment); + +WHERE + wr1: (SIZEOF(QUERY ( pdf <* product_definition_formation | (NOT (SIZEOF( + QUERY ( ccdpoa <* cc_design_person_and_organization_assignment + | ((pdf IN ccdpoa.items) AND (ccdpoa.role.name = 'creator')) )) + = 1)) )) = 0); + wr2: (SIZEOF(QUERY ( pdf <* product_definition_formation | (NOT (SIZEOF( + QUERY ( ccdpoa <* cc_design_person_and_organization_assignment + | ((pdf IN ccdpoa.items) AND (ccdpoa.role.name IN [ + 'design_supplier','part_supplier'])) )) >= 1)) )) = 0); + +END_RULE; -- product_version_requires_person_organization + +*/ + gr = new Global_rule("dependent_instantiable_approval_status",s_config_control_design,"RULE dependent_instantiable_approval_status FOR (approval_status);\n\nWHERE\n wr1: (SIZEOF(QUERY ( ast <* approval_status | (NOT (SIZEOF(USEDIN(ast,'')) \n >= 1)) )) = 0);\n\nEND_RULE; -- dependent_instantiable_approval_status\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE dependent_instantiable_approval_status FOR (approval_status); + +WHERE + wr1: (SIZEOF(QUERY ( ast <* approval_status | (NOT (SIZEOF(USEDIN(ast,'')) + >= 1)) )) = 0); + +END_RULE; -- dependent_instantiable_approval_status + +*/ + gr = new Global_rule("subtype_mandatory_shape_representation",s_config_control_design,"RULE subtype_mandatory_shape_representation FOR (shape_representation);\n\nWHERE\n wr1: (SIZEOF(QUERY ( sr <* shape_representation | (NOT ((SIZEOF([\n 'CONFIG_CONTROL_DESIGN.' + 'ADVANCED_BREP_SHAPE_REPRESENTATION',\n 'CONFIG_CONTROL_DESIGN.FACETED_BREP_SHAPE_REPRESENTATION',\n 'CONFIG_CONTROL_DESIGN.MANIFOLD_SURFACE_SHAPE_REPRESENTATION','CONFIG_CONTROL_DESIGN.EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION','CONFIG_CONTROL_DESIGN.SHELL_BASED_WIREFRAME_SHAPE_REPRESENTATION',\n 'CONFIG_CONTROL_DESIGN.' + \n 'GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION',\n 'CONFIG_CONTROL_DESIGN.' + \n 'GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION'] * \n TYPEOF(sr)) = 1) OR (SIZEOF(QUERY ( it <* sr\\representation.\n items | (NOT ('CONFIG_CONTROL_DESIGN.AXIS2_PLACEMENT_3D' IN \n TYPEOF(it))) )) = 0) OR (SIZEOF(QUERY ( sdr <* QUERY ( pdr <* \n USEDIN(sr,\n 'CONFIG_CONTROL_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.' + \n 'USED_REPRESENTATION') | (\n 'CONFIG_CONTROL_DESIGN.SHAPE_DEFINITION_REPRESENTATION' IN \n TYPEOF(pdr)) ) | (NOT (SIZEOF([\n 'CONFIG_CONTROL_DESIGN.SHAPE_ASPECT',\n 'CONFIG_CONTROL_DESIGN.SHAPE_ASPECT_RELATIONSHIP'] * TYPEOF(sdr.\n definition)) = 1)) )) = 0))) )) = 0);\n\nEND_RULE; -- subtype_mandatory_shape_representation\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE subtype_mandatory_shape_representation FOR (shape_representation); + +WHERE + wr1: (SIZEOF(QUERY ( sr <* shape_representation | (NOT ((SIZEOF([ + 'CONFIG_CONTROL_DESIGN.' + 'ADVANCED_BREP_SHAPE_REPRESENTATION', + 'CONFIG_CONTROL_DESIGN.FACETED_BREP_SHAPE_REPRESENTATION', + 'CONFIG_CONTROL_DESIGN.MANIFOLD_SURFACE_SHAPE_REPRESENTATION','CONFIG_CONTROL_DESIGN.EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION','CONFIG_CONTROL_DESIGN.SHELL_BASED_WIREFRAME_SHAPE_REPRESENTATION', + 'CONFIG_CONTROL_DESIGN.' + + 'GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION', + 'CONFIG_CONTROL_DESIGN.' + + 'GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION'] * + TYPEOF(sr)) = 1) OR (SIZEOF(QUERY ( it <* sr\representation. + items | (NOT ('CONFIG_CONTROL_DESIGN.AXIS2_PLACEMENT_3D' IN + TYPEOF(it))) )) = 0) OR (SIZEOF(QUERY ( sdr <* QUERY ( pdr <* + USEDIN(sr, + 'CONFIG_CONTROL_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.' + + 'USED_REPRESENTATION') | ( + 'CONFIG_CONTROL_DESIGN.SHAPE_DEFINITION_REPRESENTATION' IN + TYPEOF(pdr)) ) | (NOT (SIZEOF([ + 'CONFIG_CONTROL_DESIGN.SHAPE_ASPECT', + 'CONFIG_CONTROL_DESIGN.SHAPE_ASPECT_RELATIONSHIP'] * TYPEOF(sdr. + definition)) = 1)) )) = 0))) )) = 0); + +END_RULE; -- subtype_mandatory_shape_representation + +*/ + gr = new Global_rule("dependent_instantiable_date",s_config_control_design,"RULE dependent_instantiable_date FOR (date);\n\nWHERE\n wr1: (SIZEOF(QUERY ( dt <* date | (NOT (SIZEOF(USEDIN(dt,'')) >= 1)) )) \n = 0);\n\nEND_RULE; -- dependent_instantiable_date\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE dependent_instantiable_date FOR (date); + +WHERE + wr1: (SIZEOF(QUERY ( dt <* date | (NOT (SIZEOF(USEDIN(dt,'')) >= 1)) )) + = 0); + +END_RULE; -- dependent_instantiable_date + +*/ + gr = new Global_rule("configuration_item_requires_person_organization",s_config_control_design,"RULE configuration_item_requires_person_organization FOR (\n configuration_item, cc_design_person_and_organization_assignment);\n\nWHERE\n wr1: (SIZEOF(QUERY ( ci <* configuration_item | (NOT (SIZEOF(\n QUERY ( ccdpoa <* cc_design_person_and_organization_assignment\n | (ci IN ccdpoa.items) )) = 1)) )) = 0);\n\nEND_RULE; -- configuration_item_requires_person_organization\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE configuration_item_requires_person_organization FOR ( + configuration_item, cc_design_person_and_organization_assignment); + +WHERE + wr1: (SIZEOF(QUERY ( ci <* configuration_item | (NOT (SIZEOF( + QUERY ( ccdpoa <* cc_design_person_and_organization_assignment + | (ci IN ccdpoa.items) )) = 1)) )) = 0); + +END_RULE; -- configuration_item_requires_person_organization + +*/ + gr = new Global_rule("dependent_instantiable_document_type",s_config_control_design,"RULE dependent_instantiable_document_type FOR (document_type);\n\nWHERE\n wr1: (SIZEOF(QUERY ( dt <* document_type | (NOT (SIZEOF(USEDIN(dt,'')) \n >= 1)) )) = 0);\n\nEND_RULE; -- dependent_instantiable_document_type\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE dependent_instantiable_document_type FOR (document_type); + +WHERE + wr1: (SIZEOF(QUERY ( dt <* document_type | (NOT (SIZEOF(USEDIN(dt,'')) + >= 1)) )) = 0); + +END_RULE; -- dependent_instantiable_document_type + +*/ + gr = new Global_rule("restrict_contract_type",s_config_control_design,"RULE restrict_contract_type FOR (contract_type);\n\nWHERE\n wr1: (SIZEOF(QUERY ( ct <* contract_type | (NOT (ct.description IN [\n 'fixed_price','cost_plus'])) )) = 0);\n\nEND_RULE; -- restrict_contract_type\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE restrict_contract_type FOR (contract_type); + +WHERE + wr1: (SIZEOF(QUERY ( ct <* contract_type | (NOT (ct.description IN [ + 'fixed_price','cost_plus'])) )) = 0); + +END_RULE; -- restrict_contract_type + +*/ + gr = new Global_rule("subtype_mandatory_product_context",s_config_control_design,"RULE subtype_mandatory_product_context FOR (product_context);\n\nWHERE\n wr1: (SIZEOF(QUERY ( pc <* product_context | (NOT (\n 'CONFIG_CONTROL_DESIGN.MECHANICAL_CONTEXT' IN TYPEOF(pc))) )) = \n 0);\n\nEND_RULE; -- subtype_mandatory_product_context\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE subtype_mandatory_product_context FOR (product_context); + +WHERE + wr1: (SIZEOF(QUERY ( pc <* product_context | (NOT ( + 'CONFIG_CONTROL_DESIGN.MECHANICAL_CONTEXT' IN TYPEOF(pc))) )) = + 0); + +END_RULE; -- subtype_mandatory_product_context + +*/ + gr = new Global_rule("dependent_instantiable_parametric_representation_context",s_config_control_design,"RULE dependent_instantiable_parametric_representation_context FOR (\n parametric_representation_context);\n\nWHERE\n wr1: (SIZEOF(QUERY ( prc <* parametric_representation_context | (NOT (\n SIZEOF(USEDIN(prc,'')) >= 1)) )) = 0);\n\nEND_RULE; -- dependent_instantiable_parametric_representation_context\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE dependent_instantiable_parametric_representation_context FOR ( + parametric_representation_context); + +WHERE + wr1: (SIZEOF(QUERY ( prc <* parametric_representation_context | (NOT ( + SIZEOF(USEDIN(prc,'')) >= 1)) )) = 0); + +END_RULE; -- dependent_instantiable_parametric_representation_context + +*/ + gr = new Global_rule("security_classification_requires_person_organization",s_config_control_design,"RULE security_classification_requires_person_organization FOR (\n security_classification, \n cc_design_person_and_organization_assignment);\n\nWHERE\n wr1: (SIZEOF(QUERY ( sc <* security_classification | (NOT (SIZEOF(\n QUERY ( ccdpoa <* cc_design_person_and_organization_assignment\n | (sc IN ccdpoa.items) )) = 1)) )) = 0);\n\nEND_RULE; -- security_classification_requires_person_organization\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE security_classification_requires_person_organization FOR ( + security_classification, + cc_design_person_and_organization_assignment); + +WHERE + wr1: (SIZEOF(QUERY ( sc <* security_classification | (NOT (SIZEOF( + QUERY ( ccdpoa <* cc_design_person_and_organization_assignment + | (sc IN ccdpoa.items) )) = 1)) )) = 0); + +END_RULE; -- security_classification_requires_person_organization + +*/ + gr = new Global_rule("dependent_instantiable_shape_representation",s_config_control_design,"RULE dependent_instantiable_shape_representation FOR (shape_representation);\n\nWHERE\n wr1: (SIZEOF(QUERY ( sr <* shape_representation | (NOT (SIZEOF(USEDIN(sr,\n '')) >= 1)) )) = 0);\n\nEND_RULE; -- dependent_instantiable_shape_representation\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE dependent_instantiable_shape_representation FOR (shape_representation); + +WHERE + wr1: (SIZEOF(QUERY ( sr <* shape_representation | (NOT (SIZEOF(USEDIN(sr, + '')) >= 1)) )) = 0); + +END_RULE; -- dependent_instantiable_shape_representation + +*/ + gr = new Global_rule("restrict_action_request_status",s_config_control_design,"RULE restrict_action_request_status FOR (action_request_status);\n\nWHERE\n wr1: (SIZEOF(QUERY ( ars <* action_request_status | (NOT (ars.status IN \n ['proposed','in_work','issued','hold'])) )) = 0);\n\nEND_RULE; -- restrict_action_request_status\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE restrict_action_request_status FOR (action_request_status); + +WHERE + wr1: (SIZEOF(QUERY ( ars <* action_request_status | (NOT (ars.status IN + ['proposed','in_work','issued','hold'])) )) = 0); + +END_RULE; -- restrict_action_request_status + +*/ + gr = new Global_rule("restrict_certification_type",s_config_control_design,"RULE restrict_certification_type FOR (certification_type);\n\nWHERE\n wr1: (SIZEOF(QUERY ( ct <* certification_type | (NOT (ct.description IN \n ['design_supplier','part_supplier'])) )) = 0);\n\nEND_RULE; -- restrict_certification_type\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE restrict_certification_type FOR (certification_type); + +WHERE + wr1: (SIZEOF(QUERY ( ct <* certification_type | (NOT (ct.description IN + ['design_supplier','part_supplier'])) )) = 0); + +END_RULE; -- restrict_certification_type + +*/ + gr = new Global_rule("subtype_mandatory_action",s_config_control_design,"RULE subtype_mandatory_action FOR (action);\n\nWHERE\n wr1: (SIZEOF(QUERY ( act <* action | (NOT (\n 'CONFIG_CONTROL_DESIGN.DIRECTED_ACTION' IN TYPEOF(act))) )) = 0);\n\nEND_RULE; -- subtype_mandatory_action\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE subtype_mandatory_action FOR (action); + +WHERE + wr1: (SIZEOF(QUERY ( act <* action | (NOT ( + 'CONFIG_CONTROL_DESIGN.DIRECTED_ACTION' IN TYPEOF(act))) )) = 0); + +END_RULE; -- subtype_mandatory_action + +*/ + gr = new Global_rule("product_requires_person_organization",s_config_control_design,"RULE product_requires_person_organization FOR (product, \n cc_design_person_and_organization_assignment);\n\nWHERE\n wr1: (SIZEOF(QUERY ( prod <* product | (NOT (SIZEOF(QUERY ( ccdpoa <* \n cc_design_person_and_organization_assignment | (prod IN ccdpoa.\n items) )) = 1)) )) = 0);\n\nEND_RULE; -- product_requires_person_organization\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE product_requires_person_organization FOR (product, + cc_design_person_and_organization_assignment); + +WHERE + wr1: (SIZEOF(QUERY ( prod <* product | (NOT (SIZEOF(QUERY ( ccdpoa <* + cc_design_person_and_organization_assignment | (prod IN ccdpoa. + items) )) = 1)) )) = 0); + +END_RULE; -- product_requires_person_organization + +*/ + gr = new Global_rule("product_version_requires_security_classification",s_config_control_design,"RULE product_version_requires_security_classification FOR (\n product_definition_formation, cc_design_security_classification);\n\nWHERE\n wr1: (SIZEOF(QUERY ( pdf <* product_definition_formation | (NOT (SIZEOF(\n QUERY ( ccdsc <* cc_design_security_classification | (pdf IN \n ccdsc.items) )) = 1)) )) = 0);\n\nEND_RULE; -- product_version_requires_security_classification\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE product_version_requires_security_classification FOR ( + product_definition_formation, cc_design_security_classification); + +WHERE + wr1: (SIZEOF(QUERY ( pdf <* product_definition_formation | (NOT (SIZEOF( + QUERY ( ccdsc <* cc_design_security_classification | (pdf IN + ccdsc.items) )) = 1)) )) = 0); + +END_RULE; -- product_version_requires_security_classification + +*/ + gr = new Global_rule("document_to_product_definition",s_config_control_design,"RULE document_to_product_definition FOR (cc_design_specification_reference, \n product_definition);\n\nWHERE\n wr1: (SIZEOF(QUERY ( sp <* cc_design_specification_reference | (NOT ((((\n 'CONFIG_CONTROL_DESIGN.DOCUMENT_RELATIONSHIP.' + \n 'RELATING_DOCUMENT') IN ROLESOF(sp\\document_reference.\n assigned_document)) AND (SIZEOF(QUERY ( it <* sp.items | (NOT (\n 'CONFIG_CONTROL_DESIGN.PRODUCT_DEFINITION' IN TYPEOF(it))) )) = \n 0)) OR (NOT (('CONFIG_CONTROL_DESIGN.DOCUMENT_RELATIONSHIP.' + \n 'RELATING_DOCUMENT') IN ROLESOF(sp\\document_reference.\n assigned_document))))) )) = 0);\n\nEND_RULE; -- document_to_product_definition\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE document_to_product_definition FOR (cc_design_specification_reference, + product_definition); + +WHERE + wr1: (SIZEOF(QUERY ( sp <* cc_design_specification_reference | (NOT (((( + 'CONFIG_CONTROL_DESIGN.DOCUMENT_RELATIONSHIP.' + + 'RELATING_DOCUMENT') IN ROLESOF(sp\document_reference. + assigned_document)) AND (SIZEOF(QUERY ( it <* sp.items | (NOT ( + 'CONFIG_CONTROL_DESIGN.PRODUCT_DEFINITION' IN TYPEOF(it))) )) = + 0)) OR (NOT (('CONFIG_CONTROL_DESIGN.DOCUMENT_RELATIONSHIP.' + + 'RELATING_DOCUMENT') IN ROLESOF(sp\document_reference. + assigned_document))))) )) = 0); + +END_RULE; -- document_to_product_definition + +*/ + gr = new Global_rule("start_request_requires_date_time",s_config_control_design,"RULE start_request_requires_date_time FOR (start_request, \n cc_design_date_and_time_assignment);\n\nWHERE\n wr1: (SIZEOF(QUERY ( sr <* start_request | (NOT (SIZEOF(\n QUERY ( ccdta <* cc_design_date_and_time_assignment | (sr IN \n ccdta.items) )) = 1)) )) = 0);\n\nEND_RULE; -- start_request_requires_date_time\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE start_request_requires_date_time FOR (start_request, + cc_design_date_and_time_assignment); + +WHERE + wr1: (SIZEOF(QUERY ( sr <* start_request | (NOT (SIZEOF( + QUERY ( ccdta <* cc_design_date_and_time_assignment | (sr IN + ccdta.items) )) = 1)) )) = 0); + +END_RULE; -- start_request_requires_date_time + +*/ + gr = new Global_rule("dependent_instantiable_security_classification_level",s_config_control_design,"RULE dependent_instantiable_security_classification_level FOR (\n security_classification_level);\n\nWHERE\n wr1: (SIZEOF(QUERY ( scl <* security_classification_level | (NOT (\n SIZEOF(USEDIN(scl,'')) >= 1)) )) = 0);\n\nEND_RULE; -- dependent_instantiable_security_classification_level\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE dependent_instantiable_security_classification_level FOR ( + security_classification_level); + +WHERE + wr1: (SIZEOF(QUERY ( scl <* security_classification_level | (NOT ( + SIZEOF(USEDIN(scl,'')) >= 1)) )) = 0); + +END_RULE; -- dependent_instantiable_security_classification_level + +*/ + gr = new Global_rule("global_unit_assignment",s_config_control_design,"RULE global_unit_assignment FOR (global_unit_assigned_context);\n\nWHERE\n wr1: (SIZEOF(QUERY ( guac <* global_unit_assigned_context | (NOT (\n SIZEOF(guac.units) = 3)) )) = 0);\n wr2: (SIZEOF(QUERY ( guac <* global_unit_assigned_context | (NOT ((\n SIZEOF(QUERY ( u <* guac.units | (\n 'CONFIG_CONTROL_DESIGN.LENGTH_UNIT' IN TYPEOF(u)) )) = 1) AND (\n SIZEOF(QUERY ( u <* guac.units | (\n 'CONFIG_CONTROL_DESIGN.PLANE_ANGLE_UNIT' IN TYPEOF(u)) )) = 1) \n AND (SIZEOF(QUERY ( u <* guac.units | (\n 'CONFIG_CONTROL_DESIGN.SOLID_ANGLE_UNIT' IN TYPEOF(u)) )) = 1))) )) \n = 0);\n\nEND_RULE; -- global_unit_assignment\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE global_unit_assignment FOR (global_unit_assigned_context); + +WHERE + wr1: (SIZEOF(QUERY ( guac <* global_unit_assigned_context | (NOT ( + SIZEOF(guac.units) = 3)) )) = 0); + wr2: (SIZEOF(QUERY ( guac <* global_unit_assigned_context | (NOT (( + SIZEOF(QUERY ( u <* guac.units | ( + 'CONFIG_CONTROL_DESIGN.LENGTH_UNIT' IN TYPEOF(u)) )) = 1) AND ( + SIZEOF(QUERY ( u <* guac.units | ( + 'CONFIG_CONTROL_DESIGN.PLANE_ANGLE_UNIT' IN TYPEOF(u)) )) = 1) + AND (SIZEOF(QUERY ( u <* guac.units | ( + 'CONFIG_CONTROL_DESIGN.SOLID_ANGLE_UNIT' IN TYPEOF(u)) )) = 1))) )) + = 0); + +END_RULE; -- global_unit_assignment + +*/ + gr = new Global_rule("restrict_person_organization_role",s_config_control_design,"RULE restrict_person_organization_role FOR (person_and_organization_role);\n\nWHERE\n wr1: (SIZEOF(QUERY ( por <* person_and_organization_role | (NOT (por.\n name IN ['request_recipient','initiator','part_supplier',\n 'design_supplier','configuration_manager','contractor',\n 'classification_officer','creator','design_owner'])) )) = 0);\n\nEND_RULE; -- restrict_person_organization_role\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE restrict_person_organization_role FOR (person_and_organization_role); + +WHERE + wr1: (SIZEOF(QUERY ( por <* person_and_organization_role | (NOT (por. + name IN ['request_recipient','initiator','part_supplier', + 'design_supplier','configuration_manager','contractor', + 'classification_officer','creator','design_owner'])) )) = 0); + +END_RULE; -- restrict_person_organization_role + +*/ + gr = new Global_rule("coordinated_assembly_and_shape",s_config_control_design,"RULE coordinated_assembly_and_shape FOR (next_assembly_usage_occurrence);\n\nWHERE\n wr1: (SIZEOF(QUERY ( nauo <* next_assembly_usage_occurrence | (NOT \n assembly_shape_is_defined(nauo)) )) = 0);\n\nEND_RULE; -- coordinated_assembly_and_shape\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE coordinated_assembly_and_shape FOR (next_assembly_usage_occurrence); + +WHERE + wr1: (SIZEOF(QUERY ( nauo <* next_assembly_usage_occurrence | (NOT + assembly_shape_is_defined(nauo)) )) = 0); + +END_RULE; -- coordinated_assembly_and_shape + +*/ + gr = new Global_rule("start_request_requires_person_organization",s_config_control_design,"RULE start_request_requires_person_organization FOR (start_request, \n cc_design_person_and_organization_assignment);\n\nWHERE\n wr1: (SIZEOF(QUERY ( sr <* start_request | (NOT (SIZEOF(\n QUERY ( ccdpoa <* cc_design_person_and_organization_assignment\n | (sr IN ccdpoa.items) )) >= 1)) )) = 0);\n\nEND_RULE; -- start_request_requires_person_organization\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE start_request_requires_person_organization FOR (start_request, + cc_design_person_and_organization_assignment); + +WHERE + wr1: (SIZEOF(QUERY ( sr <* start_request | (NOT (SIZEOF( + QUERY ( ccdpoa <* cc_design_person_and_organization_assignment + | (sr IN ccdpoa.items) )) >= 1)) )) = 0); + +END_RULE; -- start_request_requires_person_organization + +*/ + gr = new Global_rule("no_shape_for_make_from",s_config_control_design,"RULE no_shape_for_make_from FOR (design_make_from_relationship);\n\nWHERE\n wr1: (SIZEOF(QUERY ( dmfr <* design_make_from_relationship | (NOT (\n SIZEOF(QUERY ( pd <* USEDIN(dmfr,'CONFIG_CONTROL_DESIGN.' + \n 'PROPERTY_DEFINITION.DEFINITION') | (\n 'CONFIG_CONTROL_DESIGN.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) )) \n = 0)) )) = 0);\n\nEND_RULE; -- no_shape_for_make_from\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE no_shape_for_make_from FOR (design_make_from_relationship); + +WHERE + wr1: (SIZEOF(QUERY ( dmfr <* design_make_from_relationship | (NOT ( + SIZEOF(QUERY ( pd <* USEDIN(dmfr,'CONFIG_CONTROL_DESIGN.' + + 'PROPERTY_DEFINITION.DEFINITION') | ( + 'CONFIG_CONTROL_DESIGN.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd)) )) + = 0)) )) = 0); + +END_RULE; -- no_shape_for_make_from + +*/ + gr = new Global_rule("security_classification_requires_approval",s_config_control_design,"RULE security_classification_requires_approval FOR (\n security_classification, cc_design_approval);\n\nWHERE\n wr1: (SIZEOF(QUERY ( sc <* security_classification | (NOT (SIZEOF(\n QUERY ( ccda <* cc_design_approval | (sc IN ccda.items) )) = 1)) )) \n = 0);\n\nEND_RULE; -- security_classification_requires_approval\n"); + s_config_control_design->AddGlobal_rule(gr); +/* +RULE security_classification_requires_approval FOR ( + security_classification, cc_design_approval); + +WHERE + wr1: (SIZEOF(QUERY ( sc <* security_classification | (NOT (SIZEOF( + QUERY ( ccda <* cc_design_approval | (sc IN ccda.items) )) = 1)) )) + = 0); + +END_RULE; -- security_classification_requires_approval + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION build_2axes(\n ref_direction: direction\n ): LIST [2:2] OF direction;\n\n LOCAL\n u : LIST [2:2] OF direction;\n END_LOCAL;\n u[1] := NVL(normalise(ref_direction),direction([1,0]));\n u[2] := orthogonal_complement(u[1]);\n RETURN(u);\n\nEND_FUNCTION; -- build_2axes\n"); +#endif +/* +FUNCTION build_2axes( + ref_direction: direction + ): LIST [2:2] OF direction; + + LOCAL + u : LIST [2:2] OF direction; + END_LOCAL; + u[1] := NVL(normalise(ref_direction),direction([1,0])); + u[2] := orthogonal_complement(u[1]); + RETURN(u); + +END_FUNCTION; -- build_2axes + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION item_in_context(\n item: representation_item;\n cntxt: representation_context\n ): BOOLEAN;\n\n LOCAL\n i : INTEGER;\n y : BAG OF representation_item;\n END_LOCAL;\n IF SIZEOF(USEDIN(item,'CONFIG_CONTROL_DESIGN.REPRESENTATION.ITEMS') * \n cntxt.representations_in_context) > 0 THEN\n RETURN(TRUE);\n ELSE\n y := QUERY ( z <* USEDIN(item,'') | (\n 'CONFIG_CONTROL_DESIGN.REPRESENTATION_ITEM' IN TYPEOF(z)) );\n IF SIZEOF(y) > 0 THEN\n REPEAT i := 1 TO HIINDEX(y) BY 1;\n IF item_in_context(y[i],cntxt) THEN\n RETURN(TRUE);\n END_IF;\n END_REPEAT;\n END_IF;\n END_IF;\n RETURN(FALSE);\n\nEND_FUNCTION; -- item_in_context\n"); +#endif +/* +FUNCTION item_in_context( + item: representation_item; + cntxt: representation_context + ): BOOLEAN; + + LOCAL + i : INTEGER; + y : BAG OF representation_item; + END_LOCAL; + IF SIZEOF(USEDIN(item,'CONFIG_CONTROL_DESIGN.REPRESENTATION.ITEMS') * + cntxt.representations_in_context) > 0 THEN + RETURN(TRUE); + ELSE + y := QUERY ( z <* USEDIN(item,'') | ( + 'CONFIG_CONTROL_DESIGN.REPRESENTATION_ITEM' IN TYPEOF(z)) ); + IF SIZEOF(y) > 0 THEN + REPEAT i := 1 TO HIINDEX(y) BY 1; + IF item_in_context(y[i],cntxt) THEN + RETURN(TRUE); + END_IF; + END_REPEAT; + END_IF; + END_IF; + RETURN(FALSE); + +END_FUNCTION; -- item_in_context + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION basis_surface_check(\n surf: surface;\n schema_name: STRING\n ): BOOLEAN;\n IF SIZEOF([schema_name + '.B_SPLINE_SURFACE',schema_name + \n '.ELEMENTARY_SURFACE'] * TYPEOF(surf)) = 1 THEN\n RETURN(TRUE);\n ELSE\n IF (schema_name + '.SWEPT_SURFACE') IN TYPEOF(surf) THEN\n RETURN(basis_curve_check(surf\\swept_surface.swept_curve,schema_name));\n ELSE\n IF (schema_name + '.OFFSET_SURFACE') IN TYPEOF(surf) THEN\n RETURN(basis_surface_check(surf\\offset_surface.basis_surface,\n schema_name));\n ELSE\n IF (schema_name + '.SURFACE REPLICA') IN TYPEOF(surf) THEN\n RETURN(basis_surface_check(surf\\surface_replica.parent_surface,\n schema_name));\n END_IF;\n END_IF;\n END_IF;\n END_IF;\n RETURN(FALSE);\n\nEND_FUNCTION; -- basis_surface_check\n"); +#endif +/* +FUNCTION basis_surface_check( + surf: surface; + schema_name: STRING + ): BOOLEAN; + IF SIZEOF([schema_name + '.B_SPLINE_SURFACE',schema_name + + '.ELEMENTARY_SURFACE'] * TYPEOF(surf)) = 1 THEN + RETURN(TRUE); + ELSE + IF (schema_name + '.SWEPT_SURFACE') IN TYPEOF(surf) THEN + RETURN(basis_curve_check(surf\swept_surface.swept_curve,schema_name)); + ELSE + IF (schema_name + '.OFFSET_SURFACE') IN TYPEOF(surf) THEN + RETURN(basis_surface_check(surf\offset_surface.basis_surface, + schema_name)); + ELSE + IF (schema_name + '.SURFACE REPLICA') IN TYPEOF(surf) THEN + RETURN(basis_surface_check(surf\surface_replica.parent_surface, + schema_name)); + END_IF; + END_IF; + END_IF; + END_IF; + RETURN(FALSE); + +END_FUNCTION; -- basis_surface_check + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION gbsf_check_point(\n pnt: point;\n schema_name: STRING\n ): BOOLEAN;\n IF NOT ((schema_name + '.POINT') IN TYPEOF(pnt)) THEN\n RETURN(TRUE);\n END_IF;\n IF (schema_name + '.CARTESIAN_POINT') IN TYPEOF(pnt) THEN\n RETURN(TRUE);\n ELSE\n IF (schema_name + '.POINT_ON_CURVE') IN TYPEOF(pnt) THEN\n RETURN(gbsf_check_curve(pnt\\point_on_curve.basis_curve,schema_name));\n ELSE\n IF (schema_name + '.POINT_ON_SURFACE') IN TYPEOF(pnt) THEN\n RETURN(gbsf_check_surface(pnt\\point_on_surface.basis_surface,\n schema_name));\n ELSE\n IF (schema_name + '.DEGENERATE_PCURVE') IN TYPEOF(pnt) THEN\n RETURN(gbsf_check_curve(pnt\\degenerate_pcurve.reference_to_curve\n \\representation.items[1],schema_name) AND gbsf_check_surface(\n pnt\\degenerate_pcurve.basis_surface,schema_name));\n END_IF;\n END_IF;\n END_IF;\n END_IF;\n RETURN(FALSE);\n\nEND_FUNCTION; -- gbsf_check_point\n"); +#endif +/* +FUNCTION gbsf_check_point( + pnt: point; + schema_name: STRING + ): BOOLEAN; + IF NOT ((schema_name + '.POINT') IN TYPEOF(pnt)) THEN + RETURN(TRUE); + END_IF; + IF (schema_name + '.CARTESIAN_POINT') IN TYPEOF(pnt) THEN + RETURN(TRUE); + ELSE + IF (schema_name + '.POINT_ON_CURVE') IN TYPEOF(pnt) THEN + RETURN(gbsf_check_curve(pnt\point_on_curve.basis_curve,schema_name)); + ELSE + IF (schema_name + '.POINT_ON_SURFACE') IN TYPEOF(pnt) THEN + RETURN(gbsf_check_surface(pnt\point_on_surface.basis_surface, + schema_name)); + ELSE + IF (schema_name + '.DEGENERATE_PCURVE') IN TYPEOF(pnt) THEN + RETURN(gbsf_check_curve(pnt\degenerate_pcurve.reference_to_curve + \representation.items[1],schema_name) AND gbsf_check_surface( + pnt\degenerate_pcurve.basis_surface,schema_name)); + END_IF; + END_IF; + END_IF; + END_IF; + RETURN(FALSE); + +END_FUNCTION; -- gbsf_check_point + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION build_axes(\n axis, ref_direction: direction\n ): LIST [3:3] OF direction;\n\n LOCAL\n u : LIST [3:3] OF direction;\n END_LOCAL;\n u[3] := NVL(normalise(axis),direction([0,0,1]));\n u[1] := first_proj_axis(u[3],ref_direction);\n u[2] := normalise(cross_product(u[3],u[1])).orientation;\n RETURN(u);\n\nEND_FUNCTION; -- build_axes\n"); +#endif +/* +FUNCTION build_axes( + axis, ref_direction: direction + ): LIST [3:3] OF direction; + + LOCAL + u : LIST [3:3] OF direction; + END_LOCAL; + u[3] := NVL(normalise(axis),direction([0,0,1])); + u[1] := first_proj_axis(u[3],ref_direction); + u[2] := normalise(cross_product(u[3],u[1])).orientation; + RETURN(u); + +END_FUNCTION; -- build_axes + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION edge_reversed(\n an_edge: edge\n ): edge;\n\n LOCAL\n the_reverse : edge;\n END_LOCAL;\n IF 'CONFIG_CONTROL_DESIGN.ORIENTED_EDGE' IN TYPEOF(an_edge) THEN\n the_reverse := oriented_edge(an_edge\\oriented_edge.edge_element,NOT \n an_edge\\oriented_edge.orientation);\n ELSE\n the_reverse := oriented_edge(an_edge,FALSE);\n END_IF;\n RETURN(the_reverse);\n\nEND_FUNCTION; -- edge_reversed\n"); +#endif +/* +FUNCTION edge_reversed( + an_edge: edge + ): edge; + + LOCAL + the_reverse : edge; + END_LOCAL; + IF 'CONFIG_CONTROL_DESIGN.ORIENTED_EDGE' IN TYPEOF(an_edge) THEN + the_reverse := oriented_edge(an_edge\oriented_edge.edge_element,NOT + an_edge\oriented_edge.orientation); + ELSE + the_reverse := oriented_edge(an_edge,FALSE); + END_IF; + RETURN(the_reverse); + +END_FUNCTION; -- edge_reversed + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION cc_design_person_and_organization_correlation(\n e: cc_design_person_and_organization_assignment\n ): BOOLEAN;\n\n LOCAL\n po_role : STRING;\n END_LOCAL;\n po_role := e\\person_and_organization_assignment.role.name;\n CASE po_role OF\n 'request_recipient' : IF SIZEOF(e.items) <> SIZEOF(\n QUERY ( x <* e.items | (SIZEOF(['CONFIG_CONTROL_DESIGN.' + \n 'CHANGE_REQUEST','CONFIG_CONTROL_DESIGN.' + 'START_REQUEST'] * \n TYPEOF(x)) = 1) )) THEN\n RETURN(FALSE);\n END_IF;\n 'initiator' : IF SIZEOF(e.items) <> SIZEOF(\n QUERY ( x <* e.items | (SIZEOF(['CONFIG_CONTROL_DESIGN.' + \n 'CHANGE_REQUEST','CONFIG_CONTROL_DESIGN.' + 'START_REQUEST',\n 'CONFIG_CONTROL_DESIGN.' + 'START_WORK','CONFIG_CONTROL_DESIGN.' \n + 'CHANGE'] * TYPEOF(x)) = 1) )) THEN\n RETURN(FALSE);\n END_IF;\n 'creator' : IF SIZEOF(e.items) <> SIZEOF(\n QUERY ( x <* e.items | (SIZEOF(['CONFIG_CONTROL_DESIGN.' + \n 'PRODUCT_DEFINITION_FORMATION','CONFIG_CONTROL_DESIGN.' + \n 'PRODUCT_DEFINITION'] * TYPEOF(x)) = 1) )) THEN\n RETURN(FALSE);\n END_IF;\n 'part_supplier' : IF SIZEOF(e.items) <> SIZEOF(\n QUERY ( x <* e.items | (('CONFIG_CONTROL_DESIGN.' + \n 'PRODUCT_DEFINITION_FORMATION') IN TYPEOF(x)) )) THEN\n RETURN(FALSE);\n END_IF;\n 'design_supplier' : IF SIZEOF(e.items) <> SIZEOF(\n QUERY ( x <* e.items | (('CONFIG_CONTROL_DESIGN.' + \n 'PRODUCT_DEFINITION_FORMATION') IN TYPEOF(x)) )) THEN\n RETURN(FALSE);\n END_IF;\n 'design_owner' : IF SIZEOF(e.items) <> SIZEOF(\n QUERY ( x <* e.items | ('CONFIG_CONTROL_DESIGN.PRODUCT' IN \n TYPEOF(x)) )) THEN\n RETURN(FALSE);\n END_IF;\n 'configuration_manager' : IF SIZEOF(e.items) <> SIZEOF(\n QUERY ( x <* e.items | (('CONFIG_CONTROL_DESIGN.' + \n 'CONFIGURATION_ITEM') IN TYPEOF(x)) )) THEN\n RETURN(FALSE);\n END_IF;\n 'contractor' : IF SIZEOF(e.items) <> SIZEOF(\n QUERY ( x <* e.items | ('CONFIG_CONTROL_DESIGN.CONTRACT' IN \n TYPEOF(x)) )) THEN\n RETURN(FALSE);\n END_IF;\n 'classification_officer' : IF SIZEOF(e.items) <> SIZEOF(\n QUERY ( x <* e.items | (('CONFIG_CONTROL_DESIGN.' + \n 'SECURITY_CLASSIFICATION') IN TYPEOF(x)) )) THEN\n RETURN(FALSE);\n END_IF;\n OTHERWISE : RETURN(TRUE);\n END_CASE;\n RETURN(TRUE);\n\nEND_FUNCTION; -- cc_design_person_and_organization_correlation\n"); +#endif +/* +FUNCTION cc_design_person_and_organization_correlation( + e: cc_design_person_and_organization_assignment + ): BOOLEAN; + + LOCAL + po_role : STRING; + END_LOCAL; + po_role := e\person_and_organization_assignment.role.name; + CASE po_role OF + 'request_recipient' : IF SIZEOF(e.items) <> SIZEOF( + QUERY ( x <* e.items | (SIZEOF(['CONFIG_CONTROL_DESIGN.' + + 'CHANGE_REQUEST','CONFIG_CONTROL_DESIGN.' + 'START_REQUEST'] * + TYPEOF(x)) = 1) )) THEN + RETURN(FALSE); + END_IF; + 'initiator' : IF SIZEOF(e.items) <> SIZEOF( + QUERY ( x <* e.items | (SIZEOF(['CONFIG_CONTROL_DESIGN.' + + 'CHANGE_REQUEST','CONFIG_CONTROL_DESIGN.' + 'START_REQUEST', + 'CONFIG_CONTROL_DESIGN.' + 'START_WORK','CONFIG_CONTROL_DESIGN.' + + 'CHANGE'] * TYPEOF(x)) = 1) )) THEN + RETURN(FALSE); + END_IF; + 'creator' : IF SIZEOF(e.items) <> SIZEOF( + QUERY ( x <* e.items | (SIZEOF(['CONFIG_CONTROL_DESIGN.' + + 'PRODUCT_DEFINITION_FORMATION','CONFIG_CONTROL_DESIGN.' + + 'PRODUCT_DEFINITION'] * TYPEOF(x)) = 1) )) THEN + RETURN(FALSE); + END_IF; + 'part_supplier' : IF SIZEOF(e.items) <> SIZEOF( + QUERY ( x <* e.items | (('CONFIG_CONTROL_DESIGN.' + + 'PRODUCT_DEFINITION_FORMATION') IN TYPEOF(x)) )) THEN + RETURN(FALSE); + END_IF; + 'design_supplier' : IF SIZEOF(e.items) <> SIZEOF( + QUERY ( x <* e.items | (('CONFIG_CONTROL_DESIGN.' + + 'PRODUCT_DEFINITION_FORMATION') IN TYPEOF(x)) )) THEN + RETURN(FALSE); + END_IF; + 'design_owner' : IF SIZEOF(e.items) <> SIZEOF( + QUERY ( x <* e.items | ('CONFIG_CONTROL_DESIGN.PRODUCT' IN + TYPEOF(x)) )) THEN + RETURN(FALSE); + END_IF; + 'configuration_manager' : IF SIZEOF(e.items) <> SIZEOF( + QUERY ( x <* e.items | (('CONFIG_CONTROL_DESIGN.' + + 'CONFIGURATION_ITEM') IN TYPEOF(x)) )) THEN + RETURN(FALSE); + END_IF; + 'contractor' : IF SIZEOF(e.items) <> SIZEOF( + QUERY ( x <* e.items | ('CONFIG_CONTROL_DESIGN.CONTRACT' IN + TYPEOF(x)) )) THEN + RETURN(FALSE); + END_IF; + 'classification_officer' : IF SIZEOF(e.items) <> SIZEOF( + QUERY ( x <* e.items | (('CONFIG_CONTROL_DESIGN.' + + 'SECURITY_CLASSIFICATION') IN TYPEOF(x)) )) THEN + RETURN(FALSE); + END_IF; + OTHERWISE : RETURN(TRUE); + END_CASE; + RETURN(TRUE); + +END_FUNCTION; -- cc_design_person_and_organization_correlation + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION constraints_composite_curve_on_surface(\n c: composite_curve_on_surface\n ): BOOLEAN;\n\n LOCAL\n n_segments : INTEGER := SIZEOF(c.segments);\n END_LOCAL;\n REPEAT k := 1 TO n_segments BY 1;\n IF (NOT ('CONFIG_CONTROL_DESIGN.PCURVE' IN TYPEOF(c\\composite_curve.\n segments[k].parent_curve))) AND (NOT (\n 'CONFIG_CONTROL_DESIGN.SURFACE_CURVE' IN TYPEOF(c\\composite_curve.\n segments[k].parent_curve))) AND (NOT (\n 'CONFIG_CONTROL_DESIGN.COMPOSITE_CURVE_ON_SURFACE' IN TYPEOF(c\\\n composite_curve.segments[k].parent_curve))) THEN\n RETURN(FALSE);\n END_IF;\n END_REPEAT;\n RETURN(TRUE);\n\nEND_FUNCTION; -- constraints_composite_curve_on_surface\n"); +#endif +/* +FUNCTION constraints_composite_curve_on_surface( + c: composite_curve_on_surface + ): BOOLEAN; + + LOCAL + n_segments : INTEGER := SIZEOF(c.segments); + END_LOCAL; + REPEAT k := 1 TO n_segments BY 1; + IF (NOT ('CONFIG_CONTROL_DESIGN.PCURVE' IN TYPEOF(c\composite_curve. + segments[k].parent_curve))) AND (NOT ( + 'CONFIG_CONTROL_DESIGN.SURFACE_CURVE' IN TYPEOF(c\composite_curve. + segments[k].parent_curve))) AND (NOT ( + 'CONFIG_CONTROL_DESIGN.COMPOSITE_CURVE_ON_SURFACE' IN TYPEOF(c\ + composite_curve.segments[k].parent_curve))) THEN + RETURN(FALSE); + END_IF; + END_REPEAT; + RETURN(TRUE); + +END_FUNCTION; -- constraints_composite_curve_on_surface + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION relatives_of_product_definitions(\n definition_set: SET OF product_definition;\n relation_subtype: STRING\n ): SET OF product_definition;\n\n FUNCTION local_relatives_of_product_definitions(\n definition_set: SET OF product_definition;\n total_definitions: SET OF product_definition;\n relation_subtype: STRING\n ): SET OF product_definition;\n\n LOCAL\n i : INTEGER;\n local_def : SET OF product_definition := [];\n local_pdr : SET OF product_definition_relationship := [];\n local_total : SET OF product_definition := [];\n END_LOCAL;\n REPEAT i := 1 TO HIINDEX(definition_set) BY 1;\n local_pdr := local_pdr + bag_to_set(USEDIN(definition_set[i],\n relation_subtype + '.RELATING_PRODUCT_DEFINITION'));\n END_REPEAT;\n REPEAT i := 1 TO HIINDEX(local_pdr) BY 1;\n local_def := local_def + local_pdr[i].related_product_definition;\n END_REPEAT;\n IF (SIZEOF(local_def) - SIZEOF(total_definitions)) = 0 THEN\n RETURN(local_def);\n ELSE\n local_total := total_definitions + local_def;\n RETURN(local_def + local_relatives_of_product_definitions(local_def \n - total_definitions,local_total,relation_subtype));\n END_IF;\n\n END_FUNCTION; -- local_relatives_of_product_definitions\n RETURN(local_relatives_of_product_definitions(definition_set,\n definition_set,relation_subtype));\n\nEND_FUNCTION; -- relatives_of_product_definitions\n"); +#endif +/* +FUNCTION relatives_of_product_definitions( + definition_set: SET OF product_definition; + relation_subtype: STRING + ): SET OF product_definition; + + FUNCTION local_relatives_of_product_definitions( + definition_set: SET OF product_definition; + total_definitions: SET OF product_definition; + relation_subtype: STRING + ): SET OF product_definition; + + LOCAL + i : INTEGER; + local_def : SET OF product_definition := []; + local_pdr : SET OF product_definition_relationship := []; + local_total : SET OF product_definition := []; + END_LOCAL; + REPEAT i := 1 TO HIINDEX(definition_set) BY 1; + local_pdr := local_pdr + bag_to_set(USEDIN(definition_set[i], + relation_subtype + '.RELATING_PRODUCT_DEFINITION')); + END_REPEAT; + REPEAT i := 1 TO HIINDEX(local_pdr) BY 1; + local_def := local_def + local_pdr[i].related_product_definition; + END_REPEAT; + IF (SIZEOF(local_def) - SIZEOF(total_definitions)) = 0 THEN + RETURN(local_def); + ELSE + local_total := total_definitions + local_def; + RETURN(local_def + local_relatives_of_product_definitions(local_def + - total_definitions,local_total,relation_subtype)); + END_IF; + + END_FUNCTION; -- local_relatives_of_product_definitions + RETURN(local_relatives_of_product_definitions(definition_set, + definition_set,relation_subtype)); + +END_FUNCTION; -- relatives_of_product_definitions + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION acyclic_mapped_representation(\n parent_set: SET OF representation;\n children_set: SET OF representation_item\n ): BOOLEAN;\n\n LOCAL\n i : INTEGER;\n x : SET OF representation_item;\n y : SET OF representation_item;\n END_LOCAL;\n x := QUERY ( z <* children_set | ('CONFIG_CONTROL_DESIGN.MAPPED_ITEM' IN\n TYPEOF(z)) );\n IF SIZEOF(x) > 0 THEN\n REPEAT i := 1 TO HIINDEX(x) BY 1;\n IF x[i]\\mapped_item.mapping_source.mapped_representation IN \n parent_set THEN\n RETURN(FALSE);\n END_IF;\n IF NOT acyclic_mapped_representation(parent_set + x[i]\\mapped_item.\n mapping_source.mapped_representation,x[i]\\mapped_item.\n mapping_source.mapped_representation.items) THEN\n RETURN(FALSE);\n END_IF;\n END_REPEAT;\n END_IF;\n x := children_set - x;\n IF SIZEOF(x) > 0 THEN\n REPEAT i := 1 TO HIINDEX(x) BY 1;\n y := QUERY ( z <* bag_to_set(USEDIN(x[i],'')) | (\n 'CONFIG_CONTROL_DESIGN.REPRESENTATION_ITEM' IN TYPEOF(z)) );\n IF NOT acyclic_mapped_representation(parent_set,y) THEN\n RETURN(FALSE);\n END_IF;\n END_REPEAT;\n END_IF;\n RETURN(TRUE);\n\nEND_FUNCTION; -- acyclic_mapped_representation\n"); +#endif +/* +FUNCTION acyclic_mapped_representation( + parent_set: SET OF representation; + children_set: SET OF representation_item + ): BOOLEAN; + + LOCAL + i : INTEGER; + x : SET OF representation_item; + y : SET OF representation_item; + END_LOCAL; + x := QUERY ( z <* children_set | ('CONFIG_CONTROL_DESIGN.MAPPED_ITEM' IN + TYPEOF(z)) ); + IF SIZEOF(x) > 0 THEN + REPEAT i := 1 TO HIINDEX(x) BY 1; + IF x[i]\mapped_item.mapping_source.mapped_representation IN + parent_set THEN + RETURN(FALSE); + END_IF; + IF NOT acyclic_mapped_representation(parent_set + x[i]\mapped_item. + mapping_source.mapped_representation,x[i]\mapped_item. + mapping_source.mapped_representation.items) THEN + RETURN(FALSE); + END_IF; + END_REPEAT; + END_IF; + x := children_set - x; + IF SIZEOF(x) > 0 THEN + REPEAT i := 1 TO HIINDEX(x) BY 1; + y := QUERY ( z <* bag_to_set(USEDIN(x[i],'')) | ( + 'CONFIG_CONTROL_DESIGN.REPRESENTATION_ITEM' IN TYPEOF(z)) ); + IF NOT acyclic_mapped_representation(parent_set,y) THEN + RETURN(FALSE); + END_IF; + END_REPEAT; + END_IF; + RETURN(TRUE); + +END_FUNCTION; -- acyclic_mapped_representation + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION conditional_reverse(\n p: BOOLEAN;\n an_item: reversible_topology\n ): reversible_topology;\n IF p THEN\n RETURN(an_item);\n ELSE\n RETURN(topology_reversed(an_item));\n END_IF;\n\nEND_FUNCTION; -- conditional_reverse\n"); +#endif +/* +FUNCTION conditional_reverse( + p: BOOLEAN; + an_item: reversible_topology + ): reversible_topology; + IF p THEN + RETURN(an_item); + ELSE + RETURN(topology_reversed(an_item)); + END_IF; + +END_FUNCTION; -- conditional_reverse + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION local_relatives_of_product_definitions(\n definition_set: SET OF product_definition;\n total_definitions: SET OF product_definition;\n relation_subtype: STRING\n ): SET OF product_definition;\n\n LOCAL\n i : INTEGER;\n local_def : SET OF product_definition := [];\n local_pdr : SET OF product_definition_relationship := [];\n local_total : SET OF product_definition := [];\n END_LOCAL;\n REPEAT i := 1 TO HIINDEX(definition_set) BY 1;\n local_pdr := local_pdr + bag_to_set(USEDIN(definition_set[i],\n relation_subtype + '.RELATING_PRODUCT_DEFINITION'));\n END_REPEAT;\n REPEAT i := 1 TO HIINDEX(local_pdr) BY 1;\n local_def := local_def + local_pdr[i].related_product_definition;\n END_REPEAT;\n IF (SIZEOF(local_def) - SIZEOF(total_definitions)) = 0 THEN\n RETURN(local_def);\n ELSE\n local_total := total_definitions + local_def;\n RETURN(local_def + local_relatives_of_product_definitions(local_def - \n total_definitions,local_total,relation_subtype));\n END_IF;\n\nEND_FUNCTION; -- local_relatives_of_product_definitions\n"); +#endif +/* +FUNCTION local_relatives_of_product_definitions( + definition_set: SET OF product_definition; + total_definitions: SET OF product_definition; + relation_subtype: STRING + ): SET OF product_definition; + + LOCAL + i : INTEGER; + local_def : SET OF product_definition := []; + local_pdr : SET OF product_definition_relationship := []; + local_total : SET OF product_definition := []; + END_LOCAL; + REPEAT i := 1 TO HIINDEX(definition_set) BY 1; + local_pdr := local_pdr + bag_to_set(USEDIN(definition_set[i], + relation_subtype + '.RELATING_PRODUCT_DEFINITION')); + END_REPEAT; + REPEAT i := 1 TO HIINDEX(local_pdr) BY 1; + local_def := local_def + local_pdr[i].related_product_definition; + END_REPEAT; + IF (SIZEOF(local_def) - SIZEOF(total_definitions)) = 0 THEN + RETURN(local_def); + ELSE + local_total := total_definitions + local_def; + RETURN(local_def + local_relatives_of_product_definitions(local_def - + total_definitions,local_total,relation_subtype)); + END_IF; + +END_FUNCTION; -- local_relatives_of_product_definitions + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION gbsf_check_curve(\n cv: curve;\n schema_name: STRING\n ): BOOLEAN;\n IF NOT ((schema_name + '.CURVE') IN TYPEOF(cv)) THEN\n RETURN(TRUE);\n END_IF;\n IF SIZEOF([schema_name + '.CIRCLE',schema_name + '.ELLIPSE'] * TYPEOF(cv)) \n = 1 THEN\n RETURN(TRUE);\n ELSE\n IF (schema_name + '.B_SPLINE_CURVE') IN TYPEOF(cv) THEN\n RETURN(NOT cv\\b_spline_curve.self_intersect);\n ELSE\n IF (schema_name + '.COMPOSITE_CURVE') IN TYPEOF(cv) THEN\n RETURN(SIZEOF(QUERY ( seg <* cv\\composite_curve.segments | (NOT \n gbsf_check_curve(seg.parent_curve,schema_name)) )) = 0);\n ELSE\n IF (schema_name + '.CURVE_REPLICA') IN TYPEOF(cv) THEN\n RETURN(gbsf_check_curve(cv\\curve_replica.parent_curve,\n schema_name));\n ELSE\n IF (schema_name + '.OFFSET_CURVE_3D') IN TYPEOF(cv) THEN\n RETURN(gbsf_check_curve(cv\\offset_curve_3d.basis_curve,\n schema_name) AND (NOT cv\\offset_curve_3d.self_intersect));\n ELSE\n IF (schema_name + '.PCURVE') IN TYPEOF(cv) THEN\n RETURN(gbsf_check_curve(cv\\pcurve.reference_to_curve\\\n representation.items[1],schema_name) AND \n gbsf_check_surface(cv\\pcurve.basis_surface,schema_name));\n ELSE\n IF (schema_name + '.POLYLINE') IN TYPEOF(cv) THEN\n IF (SIZEOF(cv\\polyline.points) > 3) AND (SIZEOF(\n bag_to_set(USEDIN(cv,'')) - bag_to_set(USEDIN(cv,\n schema_name + '.INTERSECTION_CURVE.BASIS_CURVE'))) = 0)\n THEN\n RETURN(TRUE);\n END_IF;\n ELSE\n IF (schema_name + '.SURFACE_CURVE') IN TYPEOF(cv) THEN\n IF gbsf_check_curve(cv\\surface_curve.curve_3d,\n schema_name) THEN\n REPEAT i := 1 TO SIZEOF(cv\\surface_curve.\n associated_geometry) BY 1;\n IF (schema_name + '.SURFACE') IN TYPEOF(cv\\\n surface_curve.associated_geometry[i]) THEN\n IF NOT gbsf_check_surface(cv\\surface_curve.\n associated_geometry[i],schema_name) THEN\n RETURN(FALSE);\n END_IF;\n ELSE\n IF (schema_name + '.PCURVE') IN TYPEOF(cv\\\n surface_curve.associated_geometry[i]) THEN\n IF NOT gbsf_check_curve(cv\\surface_curve.\n associated_geometry[i],schema_name) THEN\n RETURN(FALSE);\n END_IF;\n END_IF;\n END_IF;\n END_REPEAT;\n RETURN(TRUE);\n END_IF;\n ELSE\n IF (schema_name + '.TRIMMED_CURVE') IN TYPEOF(cv) THEN\n IF SIZEOF([schema_name + '.LINE',schema_name + \n '.PARABOLA',schema_name + '.HYPERBOLA'] * TYPEOF(cv\n \\trimmed_curve.basis_curve)) = 1 THEN\n RETURN(TRUE);\n ELSE\n RETURN(gbsf_check_curve(cv\\trimmed_curve.basis_curve,\n schema_name));\n END_IF;\n END_IF;\n END_IF;\n END_IF;\n END_IF;\n END_IF;\n END_IF;\n END_IF;\n END_IF;\n END_IF;\n RETURN(FALSE);\n\nEND_FUNCTION; -- gbsf_check_curve\n"); +#endif +/* +FUNCTION gbsf_check_curve( + cv: curve; + schema_name: STRING + ): BOOLEAN; + IF NOT ((schema_name + '.CURVE') IN TYPEOF(cv)) THEN + RETURN(TRUE); + END_IF; + IF SIZEOF([schema_name + '.CIRCLE',schema_name + '.ELLIPSE'] * TYPEOF(cv)) + = 1 THEN + RETURN(TRUE); + ELSE + IF (schema_name + '.B_SPLINE_CURVE') IN TYPEOF(cv) THEN + RETURN(NOT cv\b_spline_curve.self_intersect); + ELSE + IF (schema_name + '.COMPOSITE_CURVE') IN TYPEOF(cv) THEN + RETURN(SIZEOF(QUERY ( seg <* cv\composite_curve.segments | (NOT + gbsf_check_curve(seg.parent_curve,schema_name)) )) = 0); + ELSE + IF (schema_name + '.CURVE_REPLICA') IN TYPEOF(cv) THEN + RETURN(gbsf_check_curve(cv\curve_replica.parent_curve, + schema_name)); + ELSE + IF (schema_name + '.OFFSET_CURVE_3D') IN TYPEOF(cv) THEN + RETURN(gbsf_check_curve(cv\offset_curve_3d.basis_curve, + schema_name) AND (NOT cv\offset_curve_3d.self_intersect)); + ELSE + IF (schema_name + '.PCURVE') IN TYPEOF(cv) THEN + RETURN(gbsf_check_curve(cv\pcurve.reference_to_curve\ + representation.items[1],schema_name) AND + gbsf_check_surface(cv\pcurve.basis_surface,schema_name)); + ELSE + IF (schema_name + '.POLYLINE') IN TYPEOF(cv) THEN + IF (SIZEOF(cv\polyline.points) > 3) AND (SIZEOF( + bag_to_set(USEDIN(cv,'')) - bag_to_set(USEDIN(cv, + schema_name + '.INTERSECTION_CURVE.BASIS_CURVE'))) = 0) + THEN + RETURN(TRUE); + END_IF; + ELSE + IF (schema_name + '.SURFACE_CURVE') IN TYPEOF(cv) THEN + IF gbsf_check_curve(cv\surface_curve.curve_3d, + schema_name) THEN + REPEAT i := 1 TO SIZEOF(cv\surface_curve. + associated_geometry) BY 1; + IF (schema_name + '.SURFACE') IN TYPEOF(cv\ + surface_curve.associated_geometry[i]) THEN + IF NOT gbsf_check_surface(cv\surface_curve. + associated_geometry[i],schema_name) THEN + RETURN(FALSE); + END_IF; + ELSE + IF (schema_name + '.PCURVE') IN TYPEOF(cv\ + surface_curve.associated_geometry[i]) THEN + IF NOT gbsf_check_curve(cv\surface_curve. + associated_geometry[i],schema_name) THEN + RETURN(FALSE); + END_IF; + END_IF; + END_IF; + END_REPEAT; + RETURN(TRUE); + END_IF; + ELSE + IF (schema_name + '.TRIMMED_CURVE') IN TYPEOF(cv) THEN + IF SIZEOF([schema_name + '.LINE',schema_name + + '.PARABOLA',schema_name + '.HYPERBOLA'] * TYPEOF(cv + \trimmed_curve.basis_curve)) = 1 THEN + RETURN(TRUE); + ELSE + RETURN(gbsf_check_curve(cv\trimmed_curve.basis_curve, + schema_name)); + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + RETURN(FALSE); + +END_FUNCTION; -- gbsf_check_curve + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION unique_version_change_order(\n c: action\n ): BOOLEAN;\n\n LOCAL\n ords : action_directive := c\\directed_action.directive;\n assign : SET OF change_request := [];\n versions : SET OF product_definition_formation := [];\n END_LOCAL;\n REPEAT i := 1 TO SIZEOF(ords.requests) BY 1;\n assign := assign + QUERY ( ara <* bag_to_set(USEDIN(ords.requests[i],\n 'CONFIG_CONTROL_DESIGN.ACTION_REQUEST_ASSIGNMENT.' + \n 'ASSIGNED_ACTION_REQUEST')) | (\n 'CONFIG_CONTROL_DESIGN.CHANGE_REQUEST' IN TYPEOF(ara)) );\n END_REPEAT;\n REPEAT k := 1 TO SIZEOF(assign) BY 1;\n versions := versions + assign[k].items;\n END_REPEAT;\n RETURN(SIZEOF(QUERY ( vers <* versions | (NOT (SIZEOF(\n QUERY ( other_vers <* (versions - vers) | (vers.of_product :=: \n other_vers.of_product) )) = 0)) )) = 0);\n\nEND_FUNCTION; -- unique_version_change_order\n"); +#endif +/* +FUNCTION unique_version_change_order( + c: action + ): BOOLEAN; + + LOCAL + ords : action_directive := c\directed_action.directive; + assign : SET OF change_request := []; + versions : SET OF product_definition_formation := []; + END_LOCAL; + REPEAT i := 1 TO SIZEOF(ords.requests) BY 1; + assign := assign + QUERY ( ara <* bag_to_set(USEDIN(ords.requests[i], + 'CONFIG_CONTROL_DESIGN.ACTION_REQUEST_ASSIGNMENT.' + + 'ASSIGNED_ACTION_REQUEST')) | ( + 'CONFIG_CONTROL_DESIGN.CHANGE_REQUEST' IN TYPEOF(ara)) ); + END_REPEAT; + REPEAT k := 1 TO SIZEOF(assign) BY 1; + versions := versions + assign[k].items; + END_REPEAT; + RETURN(SIZEOF(QUERY ( vers <* versions | (NOT (SIZEOF( + QUERY ( other_vers <* (versions - vers) | (vers.of_product :=: + other_vers.of_product) )) = 0)) )) = 0); + +END_FUNCTION; -- unique_version_change_order + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION base_axis(\n dim: INTEGER;\n axis1, axis2, axis3: direction\n ): LIST [2:3] OF direction;\n\n LOCAL\n u : LIST [2:3] OF direction;\n vec : direction;\n factor : REAL;\n END_LOCAL;\n IF dim = 3 THEN\n u[3] := NVL(normalise(axis3),direction([0,0,1]));\n u[1] := first_proj_axis(u[3],axis1);\n u[2] := second_proj_axis(u[3],u[1],axis2);\n ELSE\n u[3] := ?;\n IF EXISTS(axis1) THEN\n u[1] := normalise(axis1);\n u[2] := orthogonal_complement(u[1]);\n IF EXISTS(axis2) THEN\n factor := dot_product(axis2,u[2]);\n IF factor < 0 THEN\n u[2].direction_ratios[1] := -u[2].direction_ratios[1];\n u[2].direction_ratios[2] := -u[2].direction_ratios[2];\n END_IF;\n END_IF;\n ELSE\n IF EXISTS(axis2) THEN\n u[2] := normalise(axis2);\n u[1] := orthogonal_complement(u[2]);\n u[1].direction_ratios[1] := -u[1].direction_ratios[1];\n u[1].direction_ratios[2] := -u[1].direction_ratios[2];\n ELSE\n u[1].direction_ratios[1] := 1;\n u[1].direction_ratios[2] := 0;\n u[2].direction_ratios[1] := 0;\n u[2].direction_ratios[2] := 1;\n END_IF;\n END_IF;\n END_IF;\n RETURN(u);\n\nEND_FUNCTION; -- base_axis\n"); +#endif +/* +FUNCTION base_axis( + dim: INTEGER; + axis1, axis2, axis3: direction + ): LIST [2:3] OF direction; + + LOCAL + u : LIST [2:3] OF direction; + vec : direction; + factor : REAL; + END_LOCAL; + IF dim = 3 THEN + u[3] := NVL(normalise(axis3),direction([0,0,1])); + u[1] := first_proj_axis(u[3],axis1); + u[2] := second_proj_axis(u[3],u[1],axis2); + ELSE + u[3] := ?; + IF EXISTS(axis1) THEN + u[1] := normalise(axis1); + u[2] := orthogonal_complement(u[1]); + IF EXISTS(axis2) THEN + factor := dot_product(axis2,u[2]); + IF factor < 0 THEN + u[2].direction_ratios[1] := -u[2].direction_ratios[1]; + u[2].direction_ratios[2] := -u[2].direction_ratios[2]; + END_IF; + END_IF; + ELSE + IF EXISTS(axis2) THEN + u[2] := normalise(axis2); + u[1] := orthogonal_complement(u[2]); + u[1].direction_ratios[1] := -u[1].direction_ratios[1]; + u[1].direction_ratios[2] := -u[1].direction_ratios[2]; + ELSE + u[1].direction_ratios[1] := 1; + u[1].direction_ratios[2] := 0; + u[2].direction_ratios[1] := 0; + u[2].direction_ratios[2] := 1; + END_IF; + END_IF; + END_IF; + RETURN(u); + +END_FUNCTION; -- base_axis + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION get_basis_surface(\n c: curve_on_surface\n ): SET [0:2] OF surface;\n\n LOCAL\n surfs : SET [0:2] OF surface;\n n : INTEGER;\n END_LOCAL;\n surfs := [];\n IF 'CONFIG_CONTROL_DESIGN.PCURVE' IN TYPEOF(c) THEN\n surfs := [c\\pcurve.basis_surface];\n ELSE\n IF 'CONFIG_CONTROL_DESIGN.SURFACE_CURVE' IN TYPEOF(c) THEN\n n := SIZEOF(c\\surface_curve.associated_geometry);\n REPEAT i := 1 TO n BY 1;\n surfs := surfs + associated_surface(c\\surface_curve.\n associated_geometry[i]);\n END_REPEAT;\n END_IF;\n END_IF;\n IF 'CONFIG_CONTROL_DESIGN.COMPOSITE_CURVE_ON_SURFACE' IN TYPEOF(c) THEN\n n := SIZEOF(c\\composite_curve_on_surface.segments);\n surfs := get_basis_surface(c\\composite_curve_on_surface.segments[1].\n parent_curve);\n IF n > 1 THEN\n REPEAT i := 2 TO n BY 1;\n surfs := surfs * get_basis_surface(c\\composite_curve_on_surface.\n segments[i].parent_curve);\n END_REPEAT;\n END_IF;\n END_IF;\n RETURN(surfs);\n\nEND_FUNCTION; -- get_basis_surface\n"); +#endif +/* +FUNCTION get_basis_surface( + c: curve_on_surface + ): SET [0:2] OF surface; + + LOCAL + surfs : SET [0:2] OF surface; + n : INTEGER; + END_LOCAL; + surfs := []; + IF 'CONFIG_CONTROL_DESIGN.PCURVE' IN TYPEOF(c) THEN + surfs := [c\pcurve.basis_surface]; + ELSE + IF 'CONFIG_CONTROL_DESIGN.SURFACE_CURVE' IN TYPEOF(c) THEN + n := SIZEOF(c\surface_curve.associated_geometry); + REPEAT i := 1 TO n BY 1; + surfs := surfs + associated_surface(c\surface_curve. + associated_geometry[i]); + END_REPEAT; + END_IF; + END_IF; + IF 'CONFIG_CONTROL_DESIGN.COMPOSITE_CURVE_ON_SURFACE' IN TYPEOF(c) THEN + n := SIZEOF(c\composite_curve_on_surface.segments); + surfs := get_basis_surface(c\composite_curve_on_surface.segments[1]. + parent_curve); + IF n > 1 THEN + REPEAT i := 2 TO n BY 1; + surfs := surfs * get_basis_surface(c\composite_curve_on_surface. + segments[i].parent_curve); + END_REPEAT; + END_IF; + END_IF; + RETURN(surfs); + +END_FUNCTION; -- get_basis_surface + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION cc_design_date_time_correlation(\n e: cc_design_date_and_time_assignment\n ): BOOLEAN;\n\n LOCAL\n dt_role : STRING;\n END_LOCAL;\n dt_role := e\\date_and_time_assignment.role.name;\n CASE dt_role OF\n 'creation_date' : IF SIZEOF(e.items) <> SIZEOF(\n QUERY ( x <* e.items | (('CONFIG_CONTROL_DESIGN.' + \n 'PRODUCT_DEFINITION') IN TYPEOF(x)) )) THEN\n RETURN(FALSE);\n END_IF;\n 'request_date' : IF SIZEOF(e.items) <> SIZEOF(\n QUERY ( x <* e.items | (SIZEOF([\n 'CONFIG_CONTROL_DESIGN.CHANGE_REQUEST' + \n 'CONFIG_CONTROL_DESIGN.START_REQUEST'] * TYPEOF(x)) = 1) )) THEN\n RETURN(FALSE);\n END_IF;\n 'release_date' : IF SIZEOF(e.items) <> SIZEOF(\n QUERY ( x <* e.items | (SIZEOF(['CONFIG_CONTROL_DESIGN.CHANGE' + \n 'CONFIG_CONTROL_DESIGN.START_WORK'] * TYPEOF(x)) = 1) )) THEN\n RETURN(FALSE);\n END_IF;\n 'start_date' : IF SIZEOF(e.items) <> SIZEOF(\n QUERY ( x <* e.items | (SIZEOF(['CONFIG_CONTROL_DESIGN.CHANGE' + \n 'CONFIG_CONTROL_DESIGN.START_WORK'] * TYPEOF(x)) = 1) )) THEN\n RETURN(FALSE);\n END_IF;\n 'sign_off_date' : IF SIZEOF(e.items) <> SIZEOF(\n QUERY ( x <* e.items | (('CONFIG_CONTROL_DESIGN.' + \n 'APPROVAL_PERSON_ORGANIZATION') IN TYPEOF(x)) )) THEN\n RETURN(FALSE);\n END_IF;\n 'contract_date' : IF SIZEOF(e.items) <> SIZEOF(\n QUERY ( x <* e.items | ('CONFIG_CONTROL_DESIGN.CONTRACT' IN \n TYPEOF(x)) )) THEN\n RETURN(FALSE);\n END_IF;\n 'certification_date' : IF SIZEOF(e.items) <> SIZEOF(\n QUERY ( x <* e.items | ('CONFIG_CONTROL_DESIGN.CERTIFICATION' IN \n TYPEOF(x)) )) THEN\n RETURN(FALSE);\n END_IF;\n 'classification_date' : IF SIZEOF(e.items) <> SIZEOF(\n QUERY ( x <* e.items | (('CONFIG_CONTROL_DESIGN.' + \n 'SECURITY_CLASSIFICATION') IN TYPEOF(x)) )) THEN\n RETURN(FALSE);\n END_IF;\n 'declassification_date' : IF SIZEOF(e.items) <> SIZEOF(\n QUERY ( x <* e.items | (('CONFIG_CONTROL_DESIGN.' + \n 'SECURITY_CLASSIFICATION') IN TYPEOF(x)) )) THEN\n RETURN(FALSE);\n END_IF;\n OTHERWISE : RETURN(TRUE);\n END_CASE;\n RETURN(TRUE);\n\nEND_FUNCTION; -- cc_design_date_time_correlation\n"); +#endif +/* +FUNCTION cc_design_date_time_correlation( + e: cc_design_date_and_time_assignment + ): BOOLEAN; + + LOCAL + dt_role : STRING; + END_LOCAL; + dt_role := e\date_and_time_assignment.role.name; + CASE dt_role OF + 'creation_date' : IF SIZEOF(e.items) <> SIZEOF( + QUERY ( x <* e.items | (('CONFIG_CONTROL_DESIGN.' + + 'PRODUCT_DEFINITION') IN TYPEOF(x)) )) THEN + RETURN(FALSE); + END_IF; + 'request_date' : IF SIZEOF(e.items) <> SIZEOF( + QUERY ( x <* e.items | (SIZEOF([ + 'CONFIG_CONTROL_DESIGN.CHANGE_REQUEST' + + 'CONFIG_CONTROL_DESIGN.START_REQUEST'] * TYPEOF(x)) = 1) )) THEN + RETURN(FALSE); + END_IF; + 'release_date' : IF SIZEOF(e.items) <> SIZEOF( + QUERY ( x <* e.items | (SIZEOF(['CONFIG_CONTROL_DESIGN.CHANGE' + + 'CONFIG_CONTROL_DESIGN.START_WORK'] * TYPEOF(x)) = 1) )) THEN + RETURN(FALSE); + END_IF; + 'start_date' : IF SIZEOF(e.items) <> SIZEOF( + QUERY ( x <* e.items | (SIZEOF(['CONFIG_CONTROL_DESIGN.CHANGE' + + 'CONFIG_CONTROL_DESIGN.START_WORK'] * TYPEOF(x)) = 1) )) THEN + RETURN(FALSE); + END_IF; + 'sign_off_date' : IF SIZEOF(e.items) <> SIZEOF( + QUERY ( x <* e.items | (('CONFIG_CONTROL_DESIGN.' + + 'APPROVAL_PERSON_ORGANIZATION') IN TYPEOF(x)) )) THEN + RETURN(FALSE); + END_IF; + 'contract_date' : IF SIZEOF(e.items) <> SIZEOF( + QUERY ( x <* e.items | ('CONFIG_CONTROL_DESIGN.CONTRACT' IN + TYPEOF(x)) )) THEN + RETURN(FALSE); + END_IF; + 'certification_date' : IF SIZEOF(e.items) <> SIZEOF( + QUERY ( x <* e.items | ('CONFIG_CONTROL_DESIGN.CERTIFICATION' IN + TYPEOF(x)) )) THEN + RETURN(FALSE); + END_IF; + 'classification_date' : IF SIZEOF(e.items) <> SIZEOF( + QUERY ( x <* e.items | (('CONFIG_CONTROL_DESIGN.' + + 'SECURITY_CLASSIFICATION') IN TYPEOF(x)) )) THEN + RETURN(FALSE); + END_IF; + 'declassification_date' : IF SIZEOF(e.items) <> SIZEOF( + QUERY ( x <* e.items | (('CONFIG_CONTROL_DESIGN.' + + 'SECURITY_CLASSIFICATION') IN TYPEOF(x)) )) THEN + RETURN(FALSE); + END_IF; + OTHERWISE : RETURN(TRUE); + END_CASE; + RETURN(TRUE); + +END_FUNCTION; -- cc_design_date_time_correlation + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION list_face_loops(\n f: face\n ): LIST [0:?] OF loop;\n\n LOCAL\n loops : LIST [0:?] OF loop := [];\n END_LOCAL;\n REPEAT i := 1 TO SIZEOF(f.bounds) BY 1;\n loops := loops + f.bounds[i].bound;\n END_REPEAT;\n RETURN(loops);\n\nEND_FUNCTION; -- list_face_loops\n"); +#endif +/* +FUNCTION list_face_loops( + f: face + ): LIST [0:?] OF loop; + + LOCAL + loops : LIST [0:?] OF loop := []; + END_LOCAL; + REPEAT i := 1 TO SIZEOF(f.bounds) BY 1; + loops := loops + f.bounds[i].bound; + END_REPEAT; + RETURN(loops); + +END_FUNCTION; -- list_face_loops + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION list_of_topology_reversed(\n a_list: list_of_reversible_topology_item\n ): list_of_reversible_topology_item;\n\n LOCAL\n the_reverse : list_of_reversible_topology_item;\n END_LOCAL;\n the_reverse := [];\n REPEAT i := 1 TO SIZEOF(a_list) BY 1;\n the_reverse := topology_reversed(a_list[i]) + the_reverse;\n END_REPEAT;\n RETURN(the_reverse);\n\nEND_FUNCTION; -- list_of_topology_reversed\n"); +#endif +/* +FUNCTION list_of_topology_reversed( + a_list: list_of_reversible_topology_item + ): list_of_reversible_topology_item; + + LOCAL + the_reverse : list_of_reversible_topology_item; + END_LOCAL; + the_reverse := []; + REPEAT i := 1 TO SIZEOF(a_list) BY 1; + the_reverse := topology_reversed(a_list[i]) + the_reverse; + END_REPEAT; + RETURN(the_reverse); + +END_FUNCTION; -- list_of_topology_reversed + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION shell_reversed(\n a_shell: shell\n ): shell;\n\n LOCAL\n the_reverse : shell;\n END_LOCAL;\n IF 'CONFIG_CONTROL_DESIGN.ORIENTED_OPEN_SHELL' IN TYPEOF(a_shell) THEN\n the_reverse := oriented_open_shell(a_shell\\oriented_open_shell.\n open_shell_element,NOT a_shell\\oriented_open_shell.orientation);\n ELSE\n IF 'CONFIG_CONTROL_DESIGN.OPEN_SHELL' IN TYPEOF(a_shell) THEN\n the_reverse := oriented_open_shell(a_shell,FALSE);\n ELSE\n IF 'CONFIG_CONTROL_DESIGN.ORIENTED_CLOSED_SHELL' IN TYPEOF(a_shell)\n THEN\n the_reverse := oriented_closed_shell(a_shell\\oriented_closed_shell\n .closed_shell_element,NOT a_shell\\oriented_closed_shell.\n orientation);\n ELSE\n IF 'CONFIG_CONTROL_DESIGN.CLOSED_SHELL' IN TYPEOF(a_shell) THEN\n the_reverse := oriented_closed_shell(a_shell,FALSE);\n ELSE\n the_reverse := ?;\n END_IF;\n END_IF;\n END_IF;\n END_IF;\n RETURN(the_reverse);\n\nEND_FUNCTION; -- shell_reversed\n"); +#endif +/* +FUNCTION shell_reversed( + a_shell: shell + ): shell; + + LOCAL + the_reverse : shell; + END_LOCAL; + IF 'CONFIG_CONTROL_DESIGN.ORIENTED_OPEN_SHELL' IN TYPEOF(a_shell) THEN + the_reverse := oriented_open_shell(a_shell\oriented_open_shell. + open_shell_element,NOT a_shell\oriented_open_shell.orientation); + ELSE + IF 'CONFIG_CONTROL_DESIGN.OPEN_SHELL' IN TYPEOF(a_shell) THEN + the_reverse := oriented_open_shell(a_shell,FALSE); + ELSE + IF 'CONFIG_CONTROL_DESIGN.ORIENTED_CLOSED_SHELL' IN TYPEOF(a_shell) + THEN + the_reverse := oriented_closed_shell(a_shell\oriented_closed_shell + .closed_shell_element,NOT a_shell\oriented_closed_shell. + orientation); + ELSE + IF 'CONFIG_CONTROL_DESIGN.CLOSED_SHELL' IN TYPEOF(a_shell) THEN + the_reverse := oriented_closed_shell(a_shell,FALSE); + ELSE + the_reverse := ?; + END_IF; + END_IF; + END_IF; + END_IF; + RETURN(the_reverse); + +END_FUNCTION; -- shell_reversed + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION topology_reversed(\n an_item: reversible_topology\n ): reversible_topology;\n IF 'CONFIG_CONTROL_DESIGN.EDGE' IN TYPEOF(an_item) THEN\n RETURN(edge_reversed(an_item));\n END_IF;\n IF 'CONFIG_CONTROL_DESIGN.PATH' IN TYPEOF(an_item) THEN\n RETURN(path_reversed(an_item));\n END_IF;\n IF 'CONFIG_CONTROL_DESIGN.FACE_BOUND' IN TYPEOF(an_item) THEN\n RETURN(face_bound_reversed(an_item));\n END_IF;\n IF 'CONFIG_CONTROL_DESIGN.FACE' IN TYPEOF(an_item) THEN\n RETURN(face_reversed(an_item));\n END_IF;\n IF 'CONFIG_CONTROL_DESIGN.SHELL' IN TYPEOF(an_item) THEN\n RETURN(shell_reversed(an_item));\n END_IF;\n IF 'SET' IN TYPEOF(an_item) THEN\n RETURN(set_of_topology_reversed(an_item));\n END_IF;\n IF 'LIST' IN TYPEOF(an_item) THEN\n RETURN(list_of_topology_reversed(an_item));\n END_IF;\n RETURN(?);\n\nEND_FUNCTION; -- topology_reversed\n"); +#endif +/* +FUNCTION topology_reversed( + an_item: reversible_topology + ): reversible_topology; + IF 'CONFIG_CONTROL_DESIGN.EDGE' IN TYPEOF(an_item) THEN + RETURN(edge_reversed(an_item)); + END_IF; + IF 'CONFIG_CONTROL_DESIGN.PATH' IN TYPEOF(an_item) THEN + RETURN(path_reversed(an_item)); + END_IF; + IF 'CONFIG_CONTROL_DESIGN.FACE_BOUND' IN TYPEOF(an_item) THEN + RETURN(face_bound_reversed(an_item)); + END_IF; + IF 'CONFIG_CONTROL_DESIGN.FACE' IN TYPEOF(an_item) THEN + RETURN(face_reversed(an_item)); + END_IF; + IF 'CONFIG_CONTROL_DESIGN.SHELL' IN TYPEOF(an_item) THEN + RETURN(shell_reversed(an_item)); + END_IF; + IF 'SET' IN TYPEOF(an_item) THEN + RETURN(set_of_topology_reversed(an_item)); + END_IF; + IF 'LIST' IN TYPEOF(an_item) THEN + RETURN(list_of_topology_reversed(an_item)); + END_IF; + RETURN(?); + +END_FUNCTION; -- topology_reversed + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION first_proj_axis(\n z_axis, arg: direction\n ): direction;\n\n LOCAL\n x_vec : vector;\n v : direction;\n z : direction;\n x_axis : direction;\n END_LOCAL;\n IF (NOT EXISTS(z_axis)) OR (NOT EXISTS(arg)) OR (arg.dim <> 3) THEN\n x_axis := ?;\n ELSE\n z_axis := normalise(z_axis);\n IF NOT EXISTS(arg) THEN\n IF z_axis <> direction([1,0,0]) THEN\n v := direction([1,0,0]);\n ELSE\n v := direction([0,1,0]);\n END_IF;\n ELSE\n IF cross_product(arg,z).magnitude = 0 THEN\n RETURN(?);\n ELSE\n v := normalise(arg);\n END_IF;\n END_IF;\n x_vec := scalar_times_vector(dot_product(v,z),z_axis);\n x_axis := vector_difference(v,x_vec).orientation;\n x_axis := normalise(x_axis);\n END_IF;\n RETURN(x_axis);\n\nEND_FUNCTION; -- first_proj_axis\n"); +#endif +/* +FUNCTION first_proj_axis( + z_axis, arg: direction + ): direction; + + LOCAL + x_vec : vector; + v : direction; + z : direction; + x_axis : direction; + END_LOCAL; + IF (NOT EXISTS(z_axis)) OR (NOT EXISTS(arg)) OR (arg.dim <> 3) THEN + x_axis := ?; + ELSE + z_axis := normalise(z_axis); + IF NOT EXISTS(arg) THEN + IF z_axis <> direction([1,0,0]) THEN + v := direction([1,0,0]); + ELSE + v := direction([0,1,0]); + END_IF; + ELSE + IF cross_product(arg,z).magnitude = 0 THEN + RETURN(?); + ELSE + v := normalise(arg); + END_IF; + END_IF; + x_vec := scalar_times_vector(dot_product(v,z),z_axis); + x_axis := vector_difference(v,x_vec).orientation; + x_axis := normalise(x_axis); + END_IF; + RETURN(x_axis); + +END_FUNCTION; -- first_proj_axis + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION orthogonal_complement(\n vec: direction\n ): direction;\n\n LOCAL\n result : direction;\n END_LOCAL;\n IF (vec.dim <> 2) OR (NOT EXISTS(vec)) THEN\n RETURN(?);\n ELSE\n result.direction_ratios[1] := -vec.direction_ratios[2];\n result.direction_ratios[2] := vec.direction_ratios[1];\n RETURN(result);\n END_IF;\n\nEND_FUNCTION; -- orthogonal_complement\n"); +#endif +/* +FUNCTION orthogonal_complement( + vec: direction + ): direction; + + LOCAL + result : direction; + END_LOCAL; + IF (vec.dim <> 2) OR (NOT EXISTS(vec)) THEN + RETURN(?); + ELSE + result.direction_ratios[1] := -vec.direction_ratios[2]; + result.direction_ratios[2] := vec.direction_ratios[1]; + RETURN(result); + END_IF; + +END_FUNCTION; -- orthogonal_complement + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION make_array_of_array(\n lis: LIST [1:?] OF LIST [1:?] OF GENERIC:t;\n low1, u1, low2, u2: INTEGER\n ): ARRAY [low1:u1] OF ARRAY [low2:u2] OF GENERIC:t;\n\n LOCAL\n n2 : INTEGER;\n n1 : INTEGER;\n res : ARRAY [low1:u1] OF ARRAY [low2:u2] OF GENERIC:t;\n resl : LIST [1:?] OF ARRAY [low2:u2] OF GENERIC:t;\n END_LOCAL;\n n1 := SIZEOF(lis);\n n2 := SIZEOF(lis[1]);\n IF (n1 <> ((u1 - low1) + 1)) AND (n2 <> ((u2 - low2) + 1)) THEN\n RETURN(?);\n END_IF;\n REPEAT i := 1 TO n1 BY 1;\n IF SIZEOF(lis[i]) <> n2 THEN\n RETURN(?);\n END_IF;\n END_REPEAT;\n REPEAT i := 1 TO n1 BY 1;\n resl[i] := list_to_array(lis[i],low2,u2);\n END_REPEAT;\n res := list_to_array(resl,low1,u1);\n RETURN(res);\n\nEND_FUNCTION; -- make_array_of_array\n"); +#endif +/* +FUNCTION make_array_of_array( + lis: LIST [1:?] OF LIST [1:?] OF GENERIC:t; + low1, u1, low2, u2: INTEGER + ): ARRAY [low1:u1] OF ARRAY [low2:u2] OF GENERIC:t; + + LOCAL + n2 : INTEGER; + n1 : INTEGER; + res : ARRAY [low1:u1] OF ARRAY [low2:u2] OF GENERIC:t; + resl : LIST [1:?] OF ARRAY [low2:u2] OF GENERIC:t; + END_LOCAL; + n1 := SIZEOF(lis); + n2 := SIZEOF(lis[1]); + IF (n1 <> ((u1 - low1) + 1)) AND (n2 <> ((u2 - low2) + 1)) THEN + RETURN(?); + END_IF; + REPEAT i := 1 TO n1 BY 1; + IF SIZEOF(lis[i]) <> n2 THEN + RETURN(?); + END_IF; + END_REPEAT; + REPEAT i := 1 TO n1 BY 1; + resl[i] := list_to_array(lis[i],low2,u2); + END_REPEAT; + res := list_to_array(resl,low1,u1); + RETURN(res); + +END_FUNCTION; -- make_array_of_array + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION second_proj_axis(\n z_axis, x_axis, arg: direction\n ): direction;\n\n LOCAL\n temp : vector;\n v : direction;\n y_axis : vector;\n END_LOCAL;\n IF NOT EXISTS(arg) THEN\n v := direction([0,1,0]);\n ELSE\n v := arg;\n END_IF;\n temp := scalar_times_vector(dot_product(v,z_axis),z_axis);\n y_axis := vector_difference(v,temp);\n temp := scalar_times_vector(dot_product(v,x_axis),x_axis);\n y_axis := vector_difference(y_axis,temp);\n y_axis := normalise(y_axis);\n RETURN(y_axis.orientation);\n\nEND_FUNCTION; -- second_proj_axis\n"); +#endif +/* +FUNCTION second_proj_axis( + z_axis, x_axis, arg: direction + ): direction; + + LOCAL + temp : vector; + v : direction; + y_axis : vector; + END_LOCAL; + IF NOT EXISTS(arg) THEN + v := direction([0,1,0]); + ELSE + v := arg; + END_IF; + temp := scalar_times_vector(dot_product(v,z_axis),z_axis); + y_axis := vector_difference(v,temp); + temp := scalar_times_vector(dot_product(v,x_axis),x_axis); + y_axis := vector_difference(y_axis,temp); + y_axis := normalise(y_axis); + RETURN(y_axis.orientation); + +END_FUNCTION; -- second_proj_axis + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION bag_to_set(\n the_bag: BAG OF GENERIC:intype\n ): SET OF GENERIC:intype;\n\n LOCAL\n i : INTEGER;\n the_set : SET OF GENERIC:intype := [];\n END_LOCAL;\n IF SIZEOF(the_bag) > 0 THEN\n REPEAT i := 1 TO HIINDEX(the_bag) BY 1;\n the_set := the_set + the_bag[i];\n END_REPEAT;\n END_IF;\n RETURN(the_set);\n\nEND_FUNCTION; -- bag_to_set\n"); +#endif +/* +FUNCTION bag_to_set( + the_bag: BAG OF GENERIC:intype + ): SET OF GENERIC:intype; + + LOCAL + i : INTEGER; + the_set : SET OF GENERIC:intype := []; + END_LOCAL; + IF SIZEOF(the_bag) > 0 THEN + REPEAT i := 1 TO HIINDEX(the_bag) BY 1; + the_set := the_set + the_bag[i]; + END_REPEAT; + END_IF; + RETURN(the_set); + +END_FUNCTION; -- bag_to_set + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION valid_wireframe_edge_curve(\n crv: curve;\n schma: STRING\n ): BOOLEAN;\n IF SIZEOF([schma + '.LINE',schma + '.CIRCLE',schma + '.ELLIPSE',schma + \n '.PARABOLA',schma + '.HYPERBOLA',schma + '.B_SPLINE_CURVE',schma + \n '.POLYLINE'] * TYPEOF(crv)) = 1 THEN\n RETURN(TRUE);\n ELSE\n IF (schma + '.CURVE_REPLICA') IN TYPEOF(crv) THEN\n RETURN(valid_wireframe_edge_curve(crv\\curve_replica.parent_curve,\n schma));\n ELSE\n IF (schma + '.OFFSET_CURVE_3D') IN TYPEOF(crv) THEN\n RETURN(valid_wireframe_edge_curve(crv\\offset_curve_3d.basis_curve,\n schma));\n END_IF;\n END_IF;\n END_IF;\n RETURN(FALSE);\n\nEND_FUNCTION; -- valid_wireframe_edge_curve\n"); +#endif +/* +FUNCTION valid_wireframe_edge_curve( + crv: curve; + schma: STRING + ): BOOLEAN; + IF SIZEOF([schma + '.LINE',schma + '.CIRCLE',schma + '.ELLIPSE',schma + + '.PARABOLA',schma + '.HYPERBOLA',schma + '.B_SPLINE_CURVE',schma + + '.POLYLINE'] * TYPEOF(crv)) = 1 THEN + RETURN(TRUE); + ELSE + IF (schma + '.CURVE_REPLICA') IN TYPEOF(crv) THEN + RETURN(valid_wireframe_edge_curve(crv\curve_replica.parent_curve, + schma)); + ELSE + IF (schma + '.OFFSET_CURVE_3D') IN TYPEOF(crv) THEN + RETURN(valid_wireframe_edge_curve(crv\offset_curve_3d.basis_curve, + schma)); + END_IF; + END_IF; + END_IF; + RETURN(FALSE); + +END_FUNCTION; -- valid_wireframe_edge_curve + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION acyclic_product_category_relationship(\n relation: product_category_relationship;\n children: SET OF product_category\n ): LOGICAL;\n\n LOCAL\n i : INTEGER;\n x : SET OF product_category_relationship;\n local_children : SET OF product_category;\n END_LOCAL;\n REPEAT i := 1 TO HIINDEX(children) BY 1;\n IF relation.category :=: children[i] THEN\n RETURN(FALSE);\n END_IF;\n END_REPEAT;\n x := bag_to_set(USEDIN(relation.category,'CONFIG_CONTROL_DESIGN.' + \n 'PRODUCT_CATEGORY_RELATIONSHIP.SUB_CATEGORY'));\n local_children := children + relation.category;\n IF SIZEOF(x) > 0 THEN\n REPEAT i := 1 TO HIINDEX(x) BY 1;\n IF NOT acyclic_product_category_relationship(x[i],local_children)\n THEN\n RETURN(FALSE);\n END_IF;\n END_REPEAT;\n END_IF;\n RETURN(TRUE);\n\nEND_FUNCTION; -- acyclic_product_category_relationship\n"); +#endif +/* +FUNCTION acyclic_product_category_relationship( + relation: product_category_relationship; + children: SET OF product_category + ): LOGICAL; + + LOCAL + i : INTEGER; + x : SET OF product_category_relationship; + local_children : SET OF product_category; + END_LOCAL; + REPEAT i := 1 TO HIINDEX(children) BY 1; + IF relation.category :=: children[i] THEN + RETURN(FALSE); + END_IF; + END_REPEAT; + x := bag_to_set(USEDIN(relation.category,'CONFIG_CONTROL_DESIGN.' + + 'PRODUCT_CATEGORY_RELATIONSHIP.SUB_CATEGORY')); + local_children := children + relation.category; + IF SIZEOF(x) > 0 THEN + REPEAT i := 1 TO HIINDEX(x) BY 1; + IF NOT acyclic_product_category_relationship(x[i],local_children) + THEN + RETURN(FALSE); + END_IF; + END_REPEAT; + END_IF; + RETURN(TRUE); + +END_FUNCTION; -- acyclic_product_category_relationship + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION surface_weights_positive(\n b: rational_b_spline_surface\n ): BOOLEAN;\n\n LOCAL\n result : BOOLEAN := TRUE;\n END_LOCAL;\n REPEAT i := 0 TO b.u_upper BY 1;\n REPEAT j := 0 TO b.v_upper BY 1;\n IF b.weights[i][j] <= 0 THEN\n result := FALSE;\n RETURN(result);\n END_IF;\n END_REPEAT;\n END_REPEAT;\n RETURN(result);\n\nEND_FUNCTION; -- surface_weights_positive\n"); +#endif +/* +FUNCTION surface_weights_positive( + b: rational_b_spline_surface + ): BOOLEAN; + + LOCAL + result : BOOLEAN := TRUE; + END_LOCAL; + REPEAT i := 0 TO b.u_upper BY 1; + REPEAT j := 0 TO b.v_upper BY 1; + IF b.weights[i][j] <= 0 THEN + result := FALSE; + RETURN(result); + END_IF; + END_REPEAT; + END_REPEAT; + RETURN(result); + +END_FUNCTION; -- surface_weights_positive + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION vector_difference(\n arg1, arg2: vector_or_direction\n ): vector;\n\n LOCAL\n ndim : INTEGER;\n mag2 : REAL;\n mag1 : REAL;\n mag : REAL;\n res : direction;\n vec1 : direction;\n vec2 : direction;\n result : vector;\n END_LOCAL;\n IF (NOT EXISTS(arg1)) OR (NOT EXISTS(arg2)) OR (arg1.dim <> arg2.dim)\n THEN\n result := ?;\n ELSE\n BEGIN\n IF 'CONFIG_CONTROL_DESIGN.VECTOR' IN TYPEOF(arg1) THEN\n mag1 := arg1.magnitude;\n vec1 := arg1.orientation;\n ELSE\n mag1 := 1;\n vec1 := arg1;\n END_IF;\n IF 'CONFIG_CONTROL_DESIGN.VECTOR' IN TYPEOF(arg2) THEN\n mag2 := arg2.magnitude;\n vec2 := arg2.orientation;\n ELSE\n mag2 := 1;\n vec2 := arg2;\n END_IF;\n vec1 := normalise(vec1);\n vec2 := normalise(vec2);\n ndim := SIZEOF(vec1.direction_ratios);\n mag := 0;\n REPEAT i := 1 TO ndim BY 1;\n res.direction_ratios[i] := (mag1 * vec1.direction_ratios[i]) - (\n mag2 * vec2.direction_ratios[i]);\n mag := mag + (res.direction_ratios[i] * res.direction_ratios[i]);\n END_REPEAT;\n IF mag > 0 THEN\n result.magnitude := SQRT(mag);\n result.orientation := res;\n ELSE\n result.magnitude := 0;\n result.orientation := vec1;\n END_IF;\n END;\n END_IF;\n RETURN(result);\n\nEND_FUNCTION; -- vector_difference\n"); +#endif +/* +FUNCTION vector_difference( + arg1, arg2: vector_or_direction + ): vector; + + LOCAL + ndim : INTEGER; + mag2 : REAL; + mag1 : REAL; + mag : REAL; + res : direction; + vec1 : direction; + vec2 : direction; + result : vector; + END_LOCAL; + IF (NOT EXISTS(arg1)) OR (NOT EXISTS(arg2)) OR (arg1.dim <> arg2.dim) + THEN + result := ?; + ELSE + BEGIN + IF 'CONFIG_CONTROL_DESIGN.VECTOR' IN TYPEOF(arg1) THEN + mag1 := arg1.magnitude; + vec1 := arg1.orientation; + ELSE + mag1 := 1; + vec1 := arg1; + END_IF; + IF 'CONFIG_CONTROL_DESIGN.VECTOR' IN TYPEOF(arg2) THEN + mag2 := arg2.magnitude; + vec2 := arg2.orientation; + ELSE + mag2 := 1; + vec2 := arg2; + END_IF; + vec1 := normalise(vec1); + vec2 := normalise(vec2); + ndim := SIZEOF(vec1.direction_ratios); + mag := 0; + REPEAT i := 1 TO ndim BY 1; + res.direction_ratios[i] := (mag1 * vec1.direction_ratios[i]) - ( + mag2 * vec2.direction_ratios[i]); + mag := mag + (res.direction_ratios[i] * res.direction_ratios[i]); + END_REPEAT; + IF mag > 0 THEN + result.magnitude := SQRT(mag); + result.orientation := res; + ELSE + result.magnitude := 0; + result.orientation := vec1; + END_IF; + END; + END_IF; + RETURN(result); + +END_FUNCTION; -- vector_difference + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION acyclic_product_definition_relationship(\n relation: product_definition_relationship;\n relatives: SET OF product_definition;\n specific_relation: STRING\n ): LOGICAL;\n\n LOCAL\n i : INTEGER;\n x : SET OF product_definition_relationship;\n local_relatives : SET OF product_definition;\n END_LOCAL;\n REPEAT i := 1 TO HIINDEX(relatives) BY 1;\n IF relation.relating_product_definition :=: relatives[i] THEN\n RETURN(FALSE);\n END_IF;\n END_REPEAT;\n x := bag_to_set(USEDIN(relation.relating_product_definition,\n specific_relation));\n local_relatives := relatives + relation.relating_product_definition;\n IF SIZEOF(x) > 0 THEN\n REPEAT i := 1 TO HIINDEX(x) BY 1;\n IF NOT acyclic_product_definition_relationship(x[i],local_relatives,\n specific_relation) THEN\n RETURN(FALSE);\n END_IF;\n END_REPEAT;\n END_IF;\n RETURN(TRUE);\n\nEND_FUNCTION; -- acyclic_product_definition_relationship\n"); +#endif +/* +FUNCTION acyclic_product_definition_relationship( + relation: product_definition_relationship; + relatives: SET OF product_definition; + specific_relation: STRING + ): LOGICAL; + + LOCAL + i : INTEGER; + x : SET OF product_definition_relationship; + local_relatives : SET OF product_definition; + END_LOCAL; + REPEAT i := 1 TO HIINDEX(relatives) BY 1; + IF relation.relating_product_definition :=: relatives[i] THEN + RETURN(FALSE); + END_IF; + END_REPEAT; + x := bag_to_set(USEDIN(relation.relating_product_definition, + specific_relation)); + local_relatives := relatives + relation.relating_product_definition; + IF SIZEOF(x) > 0 THEN + REPEAT i := 1 TO HIINDEX(x) BY 1; + IF NOT acyclic_product_definition_relationship(x[i],local_relatives, + specific_relation) THEN + RETURN(FALSE); + END_IF; + END_REPEAT; + END_IF; + RETURN(TRUE); + +END_FUNCTION; -- acyclic_product_definition_relationship + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION constraints_geometry_shell_based_wireframe_model(\n m: shell_based_wireframe_model\n ): BOOLEAN;\n\n LOCAL\n result : BOOLEAN := TRUE;\n END_LOCAL;\n REPEAT j := 1 TO SIZEOF(m.sbwm_boundary) BY 1;\n IF (NOT ('CONFIG_CONTROL_DESIGN.WIRE_SHELL' IN TYPEOF(m.sbwm_boundary[\n j]))) AND (NOT ('CONFIG_CONTROL_DESIGN.VERTEX_SHELL' IN TYPEOF(m.\n sbwm_boundary[j]))) THEN\n result := FALSE;\n RETURN(result);\n END_IF;\n END_REPEAT;\n RETURN(result);\n\nEND_FUNCTION; -- constraints_geometry_shell_based_wireframe_model\n"); +#endif +/* +FUNCTION constraints_geometry_shell_based_wireframe_model( + m: shell_based_wireframe_model + ): BOOLEAN; + + LOCAL + result : BOOLEAN := TRUE; + END_LOCAL; + REPEAT j := 1 TO SIZEOF(m.sbwm_boundary) BY 1; + IF (NOT ('CONFIG_CONTROL_DESIGN.WIRE_SHELL' IN TYPEOF(m.sbwm_boundary[ + j]))) AND (NOT ('CONFIG_CONTROL_DESIGN.VERTEX_SHELL' IN TYPEOF(m. + sbwm_boundary[j]))) THEN + result := FALSE; + RETURN(result); + END_IF; + END_REPEAT; + RETURN(result); + +END_FUNCTION; -- constraints_geometry_shell_based_wireframe_model + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION list_to_set(\n l: LIST [0:?] OF GENERIC:t\n ): SET OF GENERIC:t;\n\n LOCAL\n s : SET OF GENERIC:t := [];\n END_LOCAL;\n REPEAT i := 1 TO SIZEOF(l) BY 1;\n s := s + l[i];\n END_REPEAT;\n RETURN(s);\n\nEND_FUNCTION; -- list_to_set\n"); +#endif +/* +FUNCTION list_to_set( + l: LIST [0:?] OF GENERIC:t + ): SET OF GENERIC:t; + + LOCAL + s : SET OF GENERIC:t := []; + END_LOCAL; + REPEAT i := 1 TO SIZEOF(l) BY 1; + s := s + l[i]; + END_REPEAT; + RETURN(s); + +END_FUNCTION; -- list_to_set + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION valid_calendar_date(\n date: calendar_date\n ): LOGICAL;\n IF NOT ((1 <= date.day_component) AND (date.day_component <= 31)) THEN\n RETURN(FALSE);\n END_IF;\n CASE date.month_component OF\n 4 : RETURN((1 <= date.day_component) AND (date.\n day_component <= 30));\n 6 : RETURN((1 <= date.day_component) AND (date.\n day_component <= 30));\n 9 : RETURN((1 <= date.day_component) AND (date.\n day_component <= 30));\n 11 : RETURN((1 <= date.day_component) AND (date.\n day_component <= 30));\n 2 : BEGIN\n IF leap_year(date.year_component) THEN\n RETURN((1 <= date.day_component) AND (date.day_component <= 29));\n ELSE\n RETURN((1 <= date.day_component) AND (date.day_component <= 28));\n END_IF;\n END;\n OTHERWISE : RETURN(TRUE);\n END_CASE;\n\nEND_FUNCTION; -- valid_calendar_date\n"); +#endif +/* +FUNCTION valid_calendar_date( + date: calendar_date + ): LOGICAL; + IF NOT ((1 <= date.day_component) AND (date.day_component <= 31)) THEN + RETURN(FALSE); + END_IF; + CASE date.month_component OF + 4 : RETURN((1 <= date.day_component) AND (date. + day_component <= 30)); + 6 : RETURN((1 <= date.day_component) AND (date. + day_component <= 30)); + 9 : RETURN((1 <= date.day_component) AND (date. + day_component <= 30)); + 11 : RETURN((1 <= date.day_component) AND (date. + day_component <= 30)); + 2 : BEGIN + IF leap_year(date.year_component) THEN + RETURN((1 <= date.day_component) AND (date.day_component <= 29)); + ELSE + RETURN((1 <= date.day_component) AND (date.day_component <= 28)); + END_IF; + END; + OTHERWISE : RETURN(TRUE); + END_CASE; + +END_FUNCTION; -- valid_calendar_date + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION valid_wireframe_vertex_point(\n pnt: point;\n schma: STRING\n ): BOOLEAN;\n IF (schma + '.CARTESIAN_POINT') IN TYPEOF(pnt) THEN\n RETURN(TRUE);\n ELSE\n IF (schma + '.POINT_REPLICA') IN TYPEOF(pnt) THEN\n RETURN(valid_wireframe_vertex_point(pnt\\point_replica.parent_pt,\n schma));\n END_IF;\n END_IF;\n RETURN(FALSE);\n\nEND_FUNCTION; -- valid_wireframe_vertex_point\n"); +#endif +/* +FUNCTION valid_wireframe_vertex_point( + pnt: point; + schma: STRING + ): BOOLEAN; + IF (schma + '.CARTESIAN_POINT') IN TYPEOF(pnt) THEN + RETURN(TRUE); + ELSE + IF (schma + '.POINT_REPLICA') IN TYPEOF(pnt) THEN + RETURN(valid_wireframe_vertex_point(pnt\point_replica.parent_pt, + schma)); + END_IF; + END_IF; + RETURN(FALSE); + +END_FUNCTION; -- valid_wireframe_vertex_point + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION list_to_array(\n lis: LIST [0:?] OF GENERIC:t;\n low, u: INTEGER\n ): ARRAY [low:u] OF GENERIC:t;\n\n LOCAL\n n : INTEGER;\n res : ARRAY [low:u] OF GENERIC:t;\n END_LOCAL;\n n := SIZEOF(lis);\n IF n <> ((u - low) + 1) THEN\n RETURN(?);\n ELSE\n REPEAT i := 1 TO n BY 1;\n res[(low + i) - 1] := lis[i];\n END_REPEAT;\n RETURN(res);\n END_IF;\n\nEND_FUNCTION; -- list_to_array\n"); +#endif +/* +FUNCTION list_to_array( + lis: LIST [0:?] OF GENERIC:t; + low, u: INTEGER + ): ARRAY [low:u] OF GENERIC:t; + + LOCAL + n : INTEGER; + res : ARRAY [low:u] OF GENERIC:t; + END_LOCAL; + n := SIZEOF(lis); + IF n <> ((u - low) + 1) THEN + RETURN(?); + ELSE + REPEAT i := 1 TO n BY 1; + res[(low + i) - 1] := lis[i]; + END_REPEAT; + RETURN(res); + END_IF; + +END_FUNCTION; -- list_to_array + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION constraints_geometry_shell_based_surface_model(\n m: shell_based_surface_model\n ): BOOLEAN;\n\n LOCAL\n result : BOOLEAN := TRUE;\n END_LOCAL;\n REPEAT j := 1 TO SIZEOF(m.sbsm_boundary) BY 1;\n IF (NOT ('CONFIG_CONTROL_DESIGN.OPEN_SHELL' IN TYPEOF(m.sbsm_boundary[\n j]))) AND (NOT ('CONFIG_CONTROL_DESIGN.CLOSED_SHELL' IN TYPEOF(m.\n sbsm_boundary[j]))) THEN\n result := FALSE;\n RETURN(result);\n END_IF;\n END_REPEAT;\n RETURN(result);\n\nEND_FUNCTION; -- constraints_geometry_shell_based_surface_model\n"); +#endif +/* +FUNCTION constraints_geometry_shell_based_surface_model( + m: shell_based_surface_model + ): BOOLEAN; + + LOCAL + result : BOOLEAN := TRUE; + END_LOCAL; + REPEAT j := 1 TO SIZEOF(m.sbsm_boundary) BY 1; + IF (NOT ('CONFIG_CONTROL_DESIGN.OPEN_SHELL' IN TYPEOF(m.sbsm_boundary[ + j]))) AND (NOT ('CONFIG_CONTROL_DESIGN.CLOSED_SHELL' IN TYPEOF(m. + sbsm_boundary[j]))) THEN + result := FALSE; + RETURN(result); + END_IF; + END_REPEAT; + RETURN(result); + +END_FUNCTION; -- constraints_geometry_shell_based_surface_model + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION face_bound_reversed(\n a_face_bound: face_bound\n ): face_bound;\n\n LOCAL\n the_reverse : face_bound;\n END_LOCAL;\n IF 'CONFIG_CONTROL_DESIGN.FACE_OUTER_BOUND' IN TYPEOF(a_face_bound)\n THEN\n the_reverse := face_bound(a_face_bound\\face_bound.bound,NOT \n a_face_bound\\face_bound.orientation);\n ELSE\n the_reverse := face_bound(a_face_bound.bound,NOT a_face_bound.\n orientation);\n END_IF;\n RETURN(the_reverse);\n\nEND_FUNCTION; -- face_bound_reversed\n"); +#endif +/* +FUNCTION face_bound_reversed( + a_face_bound: face_bound + ): face_bound; + + LOCAL + the_reverse : face_bound; + END_LOCAL; + IF 'CONFIG_CONTROL_DESIGN.FACE_OUTER_BOUND' IN TYPEOF(a_face_bound) + THEN + the_reverse := face_bound(a_face_bound\face_bound.bound,NOT + a_face_bound\face_bound.orientation); + ELSE + the_reverse := face_bound(a_face_bound.bound,NOT a_face_bound. + orientation); + END_IF; + RETURN(the_reverse); + +END_FUNCTION; -- face_bound_reversed + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION set_of_topology_reversed(\n a_set: set_of_reversible_topology_item\n ): set_of_reversible_topology_item;\n\n LOCAL\n the_reverse : set_of_reversible_topology_item;\n END_LOCAL;\n the_reverse := [];\n REPEAT i := 1 TO SIZEOF(a_set) BY 1;\n the_reverse := the_reverse + topology_reversed(a_set[i]);\n END_REPEAT;\n RETURN(the_reverse);\n\nEND_FUNCTION; -- set_of_topology_reversed\n"); +#endif +/* +FUNCTION set_of_topology_reversed( + a_set: set_of_reversible_topology_item + ): set_of_reversible_topology_item; + + LOCAL + the_reverse : set_of_reversible_topology_item; + END_LOCAL; + the_reverse := []; + REPEAT i := 1 TO SIZEOF(a_set) BY 1; + the_reverse := the_reverse + topology_reversed(a_set[i]); + END_REPEAT; + RETURN(the_reverse); + +END_FUNCTION; -- set_of_topology_reversed + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION dimension_of(\n item: geometric_representation_item\n ): dimension_count;\n\n LOCAL\n x : SET OF representation;\n y : representation_context;\n END_LOCAL;\n x := using_representations(item);\n IF SIZEOF(x) > 0 THEN\n y := x[1].context_of_items;\n RETURN(y\\geometric_representation_context.coordinate_space_dimension);\n END_IF;\n\nEND_FUNCTION; -- dimension_of\n"); +#endif +/* +FUNCTION dimension_of( + item: geometric_representation_item + ): dimension_count; + + LOCAL + x : SET OF representation; + y : representation_context; + END_LOCAL; + x := using_representations(item); + IF SIZEOF(x) > 0 THEN + y := x[1].context_of_items; + RETURN(y\geometric_representation_context.coordinate_space_dimension); + END_IF; + +END_FUNCTION; -- dimension_of + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION scalar_times_vector(\n scalar: REAL;\n vec: vector_or_direction\n ): vector;\n\n LOCAL\n v : direction;\n mag : REAL;\n result : vector;\n END_LOCAL;\n IF (NOT EXISTS(scalar)) OR (NOT EXISTS(vec)) THEN\n result := ?;\n ELSE\n IF 'CONFIG_CONTROL_DESIGN.VECTOR' IN TYPEOF(vec) THEN\n v := vec.orientation;\n mag := scalar * vec.magnitude;\n ELSE\n v := vec;\n mag := scalar;\n END_IF;\n IF mag < 0 THEN\n REPEAT i := 1 TO SIZEOF(v.direction_ratios) BY 1;\n v.direction_ratios[i] := -v.direction_ratios[i];\n END_REPEAT;\n mag := -mag;\n END_IF;\n result.orientation := normalise(v);\n result.magnitude := mag;\n END_IF;\n RETURN(result);\n\nEND_FUNCTION; -- scalar_times_vector\n"); +#endif +/* +FUNCTION scalar_times_vector( + scalar: REAL; + vec: vector_or_direction + ): vector; + + LOCAL + v : direction; + mag : REAL; + result : vector; + END_LOCAL; + IF (NOT EXISTS(scalar)) OR (NOT EXISTS(vec)) THEN + result := ?; + ELSE + IF 'CONFIG_CONTROL_DESIGN.VECTOR' IN TYPEOF(vec) THEN + v := vec.orientation; + mag := scalar * vec.magnitude; + ELSE + v := vec; + mag := scalar; + END_IF; + IF mag < 0 THEN + REPEAT i := 1 TO SIZEOF(v.direction_ratios) BY 1; + v.direction_ratios[i] := -v.direction_ratios[i]; + END_REPEAT; + mag := -mag; + END_IF; + result.orientation := normalise(v); + result.magnitude := mag; + END_IF; + RETURN(result); + +END_FUNCTION; -- scalar_times_vector + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION dimensions_for_si_unit(\n n: si_unit_name\n ): dimensional_exponents;\n CASE n OF\n metre : RETURN(dimensional_exponents(1,0,0,0,0,0,0));\n gram : RETURN(dimensional_exponents(0,1,0,0,0,0,0));\n second : RETURN(dimensional_exponents(0,0,1,0,0,0,0));\n ampere : RETURN(dimensional_exponents(0,0,0,1,0,0,0));\n kelvin : RETURN(dimensional_exponents(0,0,0,0,1,0,0));\n mole : RETURN(dimensional_exponents(0,0,0,0,0,1,0));\n candela : RETURN(dimensional_exponents(0,0,0,0,0,0,1));\n radian : RETURN(dimensional_exponents(0,0,0,0,0,0,0));\n steradian : RETURN(dimensional_exponents(0,0,0,0,0,0,0));\n hertz : RETURN(dimensional_exponents(0,0,-1,0,0,0,0));\n newton : RETURN(dimensional_exponents(1,1,-2,0,0,0,0));\n pascal : RETURN(dimensional_exponents(-1,1,-2,0,0,0,0));\n joule : RETURN(dimensional_exponents(2,1,-2,0,0,0,0));\n watt : RETURN(dimensional_exponents(2,1,-3,0,0,0,0));\n coulomb : RETURN(dimensional_exponents(0,0,1,1,0,0,0));\n volt : RETURN(dimensional_exponents(2,1,-3,-1,0,0,0));\n farad : RETURN(dimensional_exponents(-2,-1,4,1,0,0,0));\n ohm : RETURN(dimensional_exponents(2,1,-3,-2,0,0,0));\n siemens : RETURN(dimensional_exponents(-2,-1,3,2,0,0,0));\n weber : RETURN(dimensional_exponents(2,1,-2,-1,0,0,0));\n tesla : RETURN(dimensional_exponents(0,1,-2,-1,0,0,0));\n henry : RETURN(dimensional_exponents(2,1,-2,-2,0,0,0));\n degree_celsius : RETURN(dimensional_exponents(0,0,0,0,1,0,0));\n lumen : RETURN(dimensional_exponents(0,0,0,0,0,0,1));\n lux : RETURN(dimensional_exponents(-2,0,0,0,0,0,1));\n becquerel : RETURN(dimensional_exponents(0,0,-1,0,0,0,0));\n gray : RETURN(dimensional_exponents(2,0,-2,0,0,0,0));\n sievert : RETURN(dimensional_exponents(2,0,-2,0,0,0,0));\n END_CASE;\n\nEND_FUNCTION; -- dimensions_for_si_unit\n"); +#endif +/* +FUNCTION dimensions_for_si_unit( + n: si_unit_name + ): dimensional_exponents; + CASE n OF + metre : RETURN(dimensional_exponents(1,0,0,0,0,0,0)); + gram : RETURN(dimensional_exponents(0,1,0,0,0,0,0)); + second : RETURN(dimensional_exponents(0,0,1,0,0,0,0)); + ampere : RETURN(dimensional_exponents(0,0,0,1,0,0,0)); + kelvin : RETURN(dimensional_exponents(0,0,0,0,1,0,0)); + mole : RETURN(dimensional_exponents(0,0,0,0,0,1,0)); + candela : RETURN(dimensional_exponents(0,0,0,0,0,0,1)); + radian : RETURN(dimensional_exponents(0,0,0,0,0,0,0)); + steradian : RETURN(dimensional_exponents(0,0,0,0,0,0,0)); + hertz : RETURN(dimensional_exponents(0,0,-1,0,0,0,0)); + newton : RETURN(dimensional_exponents(1,1,-2,0,0,0,0)); + pascal : RETURN(dimensional_exponents(-1,1,-2,0,0,0,0)); + joule : RETURN(dimensional_exponents(2,1,-2,0,0,0,0)); + watt : RETURN(dimensional_exponents(2,1,-3,0,0,0,0)); + coulomb : RETURN(dimensional_exponents(0,0,1,1,0,0,0)); + volt : RETURN(dimensional_exponents(2,1,-3,-1,0,0,0)); + farad : RETURN(dimensional_exponents(-2,-1,4,1,0,0,0)); + ohm : RETURN(dimensional_exponents(2,1,-3,-2,0,0,0)); + siemens : RETURN(dimensional_exponents(-2,-1,3,2,0,0,0)); + weber : RETURN(dimensional_exponents(2,1,-2,-1,0,0,0)); + tesla : RETURN(dimensional_exponents(0,1,-2,-1,0,0,0)); + henry : RETURN(dimensional_exponents(2,1,-2,-2,0,0,0)); + degree_celsius : RETURN(dimensional_exponents(0,0,0,0,1,0,0)); + lumen : RETURN(dimensional_exponents(0,0,0,0,0,0,1)); + lux : RETURN(dimensional_exponents(-2,0,0,0,0,0,1)); + becquerel : RETURN(dimensional_exponents(0,0,-1,0,0,0,0)); + gray : RETURN(dimensional_exponents(2,0,-2,0,0,0,0)); + sievert : RETURN(dimensional_exponents(2,0,-2,0,0,0,0)); + END_CASE; + +END_FUNCTION; -- dimensions_for_si_unit + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION assembly_shape_is_defined(\n assy: next_assembly_usage_occurrence\n ): BOOLEAN;\n\n LOCAL\n srr_set : SET OF shape_representation_relationship := [];\n sdr_set : SET OF shape_definition_representation := [];\n END_LOCAL;\n sdr_set := QUERY ( pdr <* bag_to_set(USEDIN(assy.\n related_product_definition,\n 'CONFIG_CONTROL_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.' + \n 'DEFINITION.DEFINITION')) | (\n 'CONFIG_CONTROL_DESIGN.SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF(pdr)) ) \n + QUERY ( pdr <* bag_to_set(USEDIN(assy.related_product_definition,\n 'CONFIG_CONTROL_DESIGN.' + \n 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION.' + \n 'DEFINITION.RELATED_PRODUCT_DEFINITION')) | (\n 'CONFIG_CONTROL_DESIGN.SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF(pdr)) );\n IF SIZEOF(sdr_set) > 0 THEN\n REPEAT i := 1 TO HIINDEX(sdr_set) BY 1;\n srr_set := QUERY ( rr <* bag_to_set(USEDIN(sdr_set[i]\\\n property_definition_representation.used_representation,\n 'CONFIG_CONTROL_DESIGN.REPRESENTATION_RELATIONSHIP.REP_2')) | (\n 'CONFIG_CONTROL_DESIGN.SHAPE_REPRESENTATION_RELATIONSHIP' IN \n TYPEOF(rr)) );\n IF SIZEOF(srr_set) > 0 THEN\n REPEAT j := 1 TO HIINDEX(srr_set) BY 1;\n IF SIZEOF(QUERY ( pdr <* bag_to_set(USEDIN(srr_set[j]\\\n representation_relationship.rep_1,\n 'CONFIG_CONTROL_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.' +\n 'USED_REPRESENTATION')) | (\n 'CONFIG_CONTROL_DESIGN.SHAPE_DEFINITION_REPRESENTATION' IN \n TYPEOF(pdr)) ) * QUERY ( pdr <* bag_to_set(USEDIN(assy.\n relating_product_definition,\n 'CONFIG_CONTROL_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.' +\n 'USED_REPRESENTATION.DEFINITION')) | (\n 'CONFIG_CONTROL_DESIGN.SHAPE_DEFINITION_REPRESENTATION' IN \n TYPEOF(pdr)) )) >= 1 THEN\n IF SIZEOF(QUERY ( cdsr <* USEDIN(assy,'CONFIG_CONTROL_DESIGN.' \n + 'CONTEXT_DEPENDENT_SHAPE_REPRESENTATION.' + \n 'REPRESENTED_PRODUCT_RELATION') | (NOT ((cdsr.\n represented_product_relation.definition :=: assy) AND (cdsr\n .representation_relation :=: srr_set[j]))) )) > 0 THEN\n RETURN(FALSE);\n END_IF;\n END_IF;\n END_REPEAT;\n END_IF;\n END_REPEAT;\n END_IF;\n RETURN(TRUE);\n\nEND_FUNCTION; -- assembly_shape_is_defined\n"); +#endif +/* +FUNCTION assembly_shape_is_defined( + assy: next_assembly_usage_occurrence + ): BOOLEAN; + + LOCAL + srr_set : SET OF shape_representation_relationship := []; + sdr_set : SET OF shape_definition_representation := []; + END_LOCAL; + sdr_set := QUERY ( pdr <* bag_to_set(USEDIN(assy. + related_product_definition, + 'CONFIG_CONTROL_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.' + + 'DEFINITION.DEFINITION')) | ( + 'CONFIG_CONTROL_DESIGN.SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF(pdr)) ) + + QUERY ( pdr <* bag_to_set(USEDIN(assy.related_product_definition, + 'CONFIG_CONTROL_DESIGN.' + + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION.' + + 'DEFINITION.RELATED_PRODUCT_DEFINITION')) | ( + 'CONFIG_CONTROL_DESIGN.SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF(pdr)) ); + IF SIZEOF(sdr_set) > 0 THEN + REPEAT i := 1 TO HIINDEX(sdr_set) BY 1; + srr_set := QUERY ( rr <* bag_to_set(USEDIN(sdr_set[i]\ + property_definition_representation.used_representation, + 'CONFIG_CONTROL_DESIGN.REPRESENTATION_RELATIONSHIP.REP_2')) | ( + 'CONFIG_CONTROL_DESIGN.SHAPE_REPRESENTATION_RELATIONSHIP' IN + TYPEOF(rr)) ); + IF SIZEOF(srr_set) > 0 THEN + REPEAT j := 1 TO HIINDEX(srr_set) BY 1; + IF SIZEOF(QUERY ( pdr <* bag_to_set(USEDIN(srr_set[j]\ + representation_relationship.rep_1, + 'CONFIG_CONTROL_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.' + + 'USED_REPRESENTATION')) | ( + 'CONFIG_CONTROL_DESIGN.SHAPE_DEFINITION_REPRESENTATION' IN + TYPEOF(pdr)) ) * QUERY ( pdr <* bag_to_set(USEDIN(assy. + relating_product_definition, + 'CONFIG_CONTROL_DESIGN.PROPERTY_DEFINITION_REPRESENTATION.' + + 'USED_REPRESENTATION.DEFINITION')) | ( + 'CONFIG_CONTROL_DESIGN.SHAPE_DEFINITION_REPRESENTATION' IN + TYPEOF(pdr)) )) >= 1 THEN + IF SIZEOF(QUERY ( cdsr <* USEDIN(assy,'CONFIG_CONTROL_DESIGN.' + + 'CONTEXT_DEPENDENT_SHAPE_REPRESENTATION.' + + 'REPRESENTED_PRODUCT_RELATION') | (NOT ((cdsr. + represented_product_relation.definition :=: assy) AND (cdsr + .representation_relation :=: srr_set[j]))) )) > 0 THEN + RETURN(FALSE); + END_IF; + END_IF; + END_REPEAT; + END_IF; + END_REPEAT; + END_IF; + RETURN(TRUE); + +END_FUNCTION; -- assembly_shape_is_defined + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION acyclic_surface_replica(\n rep: surface_replica;\n parent: surface\n ): BOOLEAN;\n IF NOT ('CONFIG_CONTROL_DESIGN.SURFACE_REPLICA' IN TYPEOF(parent)) THEN\n RETURN(TRUE);\n END_IF;\n IF parent :=: rep THEN\n RETURN(FALSE);\n ELSE\n RETURN(acyclic_surface_replica(rep,parent\\surface_replica.\n parent_surface));\n END_IF;\n\nEND_FUNCTION; -- acyclic_surface_replica\n"); +#endif +/* +FUNCTION acyclic_surface_replica( + rep: surface_replica; + parent: surface + ): BOOLEAN; + IF NOT ('CONFIG_CONTROL_DESIGN.SURFACE_REPLICA' IN TYPEOF(parent)) THEN + RETURN(TRUE); + END_IF; + IF parent :=: rep THEN + RETURN(FALSE); + ELSE + RETURN(acyclic_surface_replica(rep,parent\surface_replica. + parent_surface)); + END_IF; + +END_FUNCTION; -- acyclic_surface_replica + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION gbsf_check_surface(\n sf: surface;\n schema_name: STRING\n ): BOOLEAN;\n IF (NOT (schema_name + '.SURFACE')) IN TYPEOF(sf) THEN\n RETURN(TRUE);\n END_IF;\n IF (schema_name + '.B_SPLINE_SURFACE') IN TYPEOF(sf) THEN\n RETURN(NOT sf\\b_spline_surface.self_intersect);\n ELSE\n IF SIZEOF([schema_name + '.SPHERICAL_SURFACE',schema_name + \n '.TOROIDAL_SURFACE'] * TYPEOF(sf)) = 3 THEN\n RETURN(TRUE);\n ELSE\n IF (schema_name + '.CURVE_BOUNDED_SURFACE') IN TYPEOF(sf) THEN\n IF SIZEOF([schema_name + '.CONICAL_SURFACE',schema_name + \n '.CYLINDRICAL_SURFACE',schema_name + '.PLANE'] * TYPEOF(sf)) = \n 1 THEN\n RETURN(SIZEOF(QUERY ( bcurve <* sf\\curve_bounded_surface.\n boundaries | (NOT gbsf_check_curve(bcurve,schema_name)) )) = \n 0);\n ELSE\n IF gbsf_check_surface(sf\\curve_bounded_surface.basis_surface,\n schema_name) THEN\n RETURN(SIZEOF(QUERY ( bcurve <* sf\\curve_bounded_surface.\n boundaries | (NOT gbsf_check_curve(bcurve,schema_name)) )) \n = 0);\n END_IF;\n END_IF;\n ELSE\n IF (schema_name + '.OFFSET_SURFACE') IN TYPEOF(sf) THEN\n RETURN(gbsf_check_surface(sf\\offset_surface.basis_surface,\n schema_name) AND (NOT sf\\offset_surface.self_intersect));\n ELSE\n IF (schema_name + '.RECTANGULAR_COMPOSITE_SURFACE') IN TYPEOF(sf)\n THEN\n REPEAT i := 1 TO SIZEOF(sf\\rectangular_composite_surface.\n segments) BY 1;\n REPEAT j := 1 TO SIZEOF(sf\\rectangular_composite_surface.\n segments[i]) BY 1;\n IF NOT gbsf_check_surface(sf\\rectangular_composite_surface\n .segments[i][j].parent_surface,schema_name) THEN\n RETURN(FALSE);\n END_IF;\n END_REPEAT;\n END_REPEAT;\n RETURN(TRUE);\n ELSE\n IF (schema_name + '.RECTANGULAR_TRIMMED_SURFACE') IN TYPEOF(sf)\n THEN\n IF SIZEOF([schema_name + '.CONICAL_SURFACE',schema_name + \n '.CYLINDRICAL_SURFACE',schema_name + '.PLANE'] * TYPEOF(\n sf\\rectangular_trimmed_surface.basis_surface)) = 1 THEN\n RETURN(TRUE);\n ELSE\n RETURN(gbsf_check_surface(sf\\rectangular_trimmed_surface.\n basis_surface,schema_name));\n END_IF;\n ELSE\n IF (schema_name + '.SURFACE_REPLICA') IN TYPEOF(sf) THEN\n RETURN(gbsf_check_surface(sf\\surface_replica.\n parent_surface,schema_name));\n ELSE\n IF (schema_name + '.SWEPT_SURFACE') IN TYPEOF(sf) THEN\n RETURN(gbsf_check_curve(sf\\swept_surface.swept_curve,\n schema_name));\n END_IF;\n END_IF;\n END_IF;\n END_IF;\n END_IF;\n END_IF;\n END_IF;\n END_IF;\n RETURN(FALSE);\n\nEND_FUNCTION; -- gbsf_check_surface\n"); +#endif +/* +FUNCTION gbsf_check_surface( + sf: surface; + schema_name: STRING + ): BOOLEAN; + IF (NOT (schema_name + '.SURFACE')) IN TYPEOF(sf) THEN + RETURN(TRUE); + END_IF; + IF (schema_name + '.B_SPLINE_SURFACE') IN TYPEOF(sf) THEN + RETURN(NOT sf\b_spline_surface.self_intersect); + ELSE + IF SIZEOF([schema_name + '.SPHERICAL_SURFACE',schema_name + + '.TOROIDAL_SURFACE'] * TYPEOF(sf)) = 3 THEN + RETURN(TRUE); + ELSE + IF (schema_name + '.CURVE_BOUNDED_SURFACE') IN TYPEOF(sf) THEN + IF SIZEOF([schema_name + '.CONICAL_SURFACE',schema_name + + '.CYLINDRICAL_SURFACE',schema_name + '.PLANE'] * TYPEOF(sf)) = + 1 THEN + RETURN(SIZEOF(QUERY ( bcurve <* sf\curve_bounded_surface. + boundaries | (NOT gbsf_check_curve(bcurve,schema_name)) )) = + 0); + ELSE + IF gbsf_check_surface(sf\curve_bounded_surface.basis_surface, + schema_name) THEN + RETURN(SIZEOF(QUERY ( bcurve <* sf\curve_bounded_surface. + boundaries | (NOT gbsf_check_curve(bcurve,schema_name)) )) + = 0); + END_IF; + END_IF; + ELSE + IF (schema_name + '.OFFSET_SURFACE') IN TYPEOF(sf) THEN + RETURN(gbsf_check_surface(sf\offset_surface.basis_surface, + schema_name) AND (NOT sf\offset_surface.self_intersect)); + ELSE + IF (schema_name + '.RECTANGULAR_COMPOSITE_SURFACE') IN TYPEOF(sf) + THEN + REPEAT i := 1 TO SIZEOF(sf\rectangular_composite_surface. + segments) BY 1; + REPEAT j := 1 TO SIZEOF(sf\rectangular_composite_surface. + segments[i]) BY 1; + IF NOT gbsf_check_surface(sf\rectangular_composite_surface + .segments[i][j].parent_surface,schema_name) THEN + RETURN(FALSE); + END_IF; + END_REPEAT; + END_REPEAT; + RETURN(TRUE); + ELSE + IF (schema_name + '.RECTANGULAR_TRIMMED_SURFACE') IN TYPEOF(sf) + THEN + IF SIZEOF([schema_name + '.CONICAL_SURFACE',schema_name + + '.CYLINDRICAL_SURFACE',schema_name + '.PLANE'] * TYPEOF( + sf\rectangular_trimmed_surface.basis_surface)) = 1 THEN + RETURN(TRUE); + ELSE + RETURN(gbsf_check_surface(sf\rectangular_trimmed_surface. + basis_surface,schema_name)); + END_IF; + ELSE + IF (schema_name + '.SURFACE_REPLICA') IN TYPEOF(sf) THEN + RETURN(gbsf_check_surface(sf\surface_replica. + parent_surface,schema_name)); + ELSE + IF (schema_name + '.SWEPT_SURFACE') IN TYPEOF(sf) THEN + RETURN(gbsf_check_curve(sf\swept_surface.swept_curve, + schema_name)); + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + RETURN(FALSE); + +END_FUNCTION; -- gbsf_check_surface + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION normalise(\n arg: vector_or_direction\n ): vector_or_direction;\n\n LOCAL\n ndim : INTEGER;\n v : direction;\n vec : vector;\n mag : REAL;\n result : vector_or_direction;\n END_LOCAL;\n IF NOT EXISTS(arg) THEN\n result := ?;\n ELSE\n ndim := arg.dim;\n IF 'CONFIG_CONTROL_DESIGN.VECTOR' IN TYPEOF(arg) THEN\n BEGIN\n vec := arg;\n v := arg.orientation;\n IF arg.magnitude = 0 THEN\n RETURN(?);\n ELSE\n vec.magnitude := 1;\n END_IF;\n END;\n ELSE\n v := arg;\n END_IF;\n mag := 0;\n REPEAT i := 1 TO ndim BY 1;\n mag := mag + (v.direction_ratios[i] * v.direction_ratios[i]);\n END_REPEAT;\n IF mag > 0 THEN\n mag := SQRT(mag);\n REPEAT i := 1 TO ndim BY 1;\n v.direction_ratios[i] := v.direction_ratios[i] / mag;\n END_REPEAT;\n IF 'CONFIG_CONTROL_DESIGN.VECTOR' IN TYPEOF(arg) THEN\n vec.orientation := v;\n result := vec;\n ELSE\n result := v;\n END_IF;\n ELSE\n RETURN(?);\n END_IF;\n END_IF;\n RETURN(result);\n\nEND_FUNCTION; -- normalise\n"); +#endif +/* +FUNCTION normalise( + arg: vector_or_direction + ): vector_or_direction; + + LOCAL + ndim : INTEGER; + v : direction; + vec : vector; + mag : REAL; + result : vector_or_direction; + END_LOCAL; + IF NOT EXISTS(arg) THEN + result := ?; + ELSE + ndim := arg.dim; + IF 'CONFIG_CONTROL_DESIGN.VECTOR' IN TYPEOF(arg) THEN + BEGIN + vec := arg; + v := arg.orientation; + IF arg.magnitude = 0 THEN + RETURN(?); + ELSE + vec.magnitude := 1; + END_IF; + END; + ELSE + v := arg; + END_IF; + mag := 0; + REPEAT i := 1 TO ndim BY 1; + mag := mag + (v.direction_ratios[i] * v.direction_ratios[i]); + END_REPEAT; + IF mag > 0 THEN + mag := SQRT(mag); + REPEAT i := 1 TO ndim BY 1; + v.direction_ratios[i] := v.direction_ratios[i] / mag; + END_REPEAT; + IF 'CONFIG_CONTROL_DESIGN.VECTOR' IN TYPEOF(arg) THEN + vec.orientation := v; + result := vec; + ELSE + result := v; + END_IF; + ELSE + RETURN(?); + END_IF; + END_IF; + RETURN(result); + +END_FUNCTION; -- normalise + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION msb_shells(\n brep: manifold_solid_brep;\n schema_name: STRING\n ): SET [1:?] OF closed_shell;\n IF (schema_name + '.BREP_WITH_VOIDS') IN TYPEOF(brep) THEN\n RETURN(brep\\brep_with_voids.voids + brep.outer);\n ELSE\n RETURN([brep.outer]);\n END_IF;\n\nEND_FUNCTION; -- msb_shells\n"); +#endif +/* +FUNCTION msb_shells( + brep: manifold_solid_brep; + schema_name: STRING + ): SET [1:?] OF closed_shell; + IF (schema_name + '.BREP_WITH_VOIDS') IN TYPEOF(brep) THEN + RETURN(brep\brep_with_voids.voids + brep.outer); + ELSE + RETURN([brep.outer]); + END_IF; + +END_FUNCTION; -- msb_shells + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION mixed_loop_type_set(\n l: SET [0:?] OF loop\n ): LOGICAL;\n\n LOCAL\n i : INTEGER;\n poly_loop_type : LOGICAL;\n END_LOCAL;\n IF SIZEOF(l) <= 1 THEN\n RETURN(FALSE);\n END_IF;\n poly_loop_type := 'CONFIG_CONTROL_DESIGN.POLY_LOOP' IN TYPEOF(l[1]);\n REPEAT i := 2 TO SIZEOF(l) BY 1;\n IF ('CONFIG_CONTROL_DESIGN.POLY_LOOP' IN TYPEOF(l[i])) <> \n poly_loop_type THEN\n RETURN(TRUE);\n END_IF;\n END_REPEAT;\n RETURN(FALSE);\n\nEND_FUNCTION; -- mixed_loop_type_set\n"); +#endif +/* +FUNCTION mixed_loop_type_set( + l: SET [0:?] OF loop + ): LOGICAL; + + LOCAL + i : INTEGER; + poly_loop_type : LOGICAL; + END_LOCAL; + IF SIZEOF(l) <= 1 THEN + RETURN(FALSE); + END_IF; + poly_loop_type := 'CONFIG_CONTROL_DESIGN.POLY_LOOP' IN TYPEOF(l[1]); + REPEAT i := 2 TO SIZEOF(l) BY 1; + IF ('CONFIG_CONTROL_DESIGN.POLY_LOOP' IN TYPEOF(l[i])) <> + poly_loop_type THEN + RETURN(TRUE); + END_IF; + END_REPEAT; + RETURN(FALSE); + +END_FUNCTION; -- mixed_loop_type_set + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION derive_dimensional_exponents(\n x: unit\n ): dimensional_exponents;\n\n LOCAL\n result : dimensional_exponents := dimensional_exponents(0,0,0,0,0,0,0);\n END_LOCAL;\n result := x.dimensions;\n RETURN(result);\n\nEND_FUNCTION; -- derive_dimensional_exponents\n"); +#endif +/* +FUNCTION derive_dimensional_exponents( + x: unit + ): dimensional_exponents; + + LOCAL + result : dimensional_exponents := dimensional_exponents(0,0,0,0,0,0,0); + END_LOCAL; + result := x.dimensions; + RETURN(result); + +END_FUNCTION; -- derive_dimensional_exponents + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION curve_weights_positive(\n b: rational_b_spline_curve\n ): BOOLEAN;\n\n LOCAL\n result : BOOLEAN := TRUE;\n END_LOCAL;\n REPEAT i := 0 TO b.upper_index_on_control_points BY 1;\n IF b.weights[i] <= 0 THEN\n result := FALSE;\n RETURN(result);\n END_IF;\n END_REPEAT;\n RETURN(result);\n\nEND_FUNCTION; -- curve_weights_positive\n"); +#endif +/* +FUNCTION curve_weights_positive( + b: rational_b_spline_curve + ): BOOLEAN; + + LOCAL + result : BOOLEAN := TRUE; + END_LOCAL; + REPEAT i := 0 TO b.upper_index_on_control_points BY 1; + IF b.weights[i] <= 0 THEN + result := FALSE; + RETURN(result); + END_IF; + END_REPEAT; + RETURN(result); + +END_FUNCTION; -- curve_weights_positive + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION valid_geometrically_bounded_wf_point(\n pnt: point;\n schma: STRING\n ): BOOLEAN;\n IF (schma + '.CARTESIAN_POINT') IN TYPEOF(pnt) THEN\n RETURN(TRUE);\n ELSE\n IF (schma + '.POINT_ON_CURVE') IN TYPEOF(pnt) THEN\n RETURN(valid_geometrically_bounded_wf_curve(pnt\\point_on_curve.\n basis_curve,schma));\n ELSE\n IF (schma + '.POINT_REPLICA') IN TYPEOF(pnt) THEN\n RETURN(valid_geometrically_bounded_wf_point(pnt\\point_replica.\n parent_pt,schma));\n END_IF;\n END_IF;\n END_IF;\n RETURN(FALSE);\n\nEND_FUNCTION; -- valid_geometrically_bounded_wf_point\n"); +#endif +/* +FUNCTION valid_geometrically_bounded_wf_point( + pnt: point; + schma: STRING + ): BOOLEAN; + IF (schma + '.CARTESIAN_POINT') IN TYPEOF(pnt) THEN + RETURN(TRUE); + ELSE + IF (schma + '.POINT_ON_CURVE') IN TYPEOF(pnt) THEN + RETURN(valid_geometrically_bounded_wf_curve(pnt\point_on_curve. + basis_curve,schma)); + ELSE + IF (schma + '.POINT_REPLICA') IN TYPEOF(pnt) THEN + RETURN(valid_geometrically_bounded_wf_point(pnt\point_replica. + parent_pt,schma)); + END_IF; + END_IF; + END_IF; + RETURN(FALSE); + +END_FUNCTION; -- valid_geometrically_bounded_wf_point + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION path_head_to_tail(\n a_path: path\n ): LOGICAL;\n\n LOCAL\n n : INTEGER;\n p : LOGICAL := TRUE;\n END_LOCAL;\n n := SIZEOF(a_path.edge_list);\n REPEAT i := 2 TO n BY 1;\n p := p AND (a_path.edge_list[i - 1].edge_end :=: a_path.edge_list[i].\n edge_start);\n END_REPEAT;\n RETURN(p);\n\nEND_FUNCTION; -- path_head_to_tail\n"); +#endif +/* +FUNCTION path_head_to_tail( + a_path: path + ): LOGICAL; + + LOCAL + n : INTEGER; + p : LOGICAL := TRUE; + END_LOCAL; + n := SIZEOF(a_path.edge_list); + REPEAT i := 2 TO n BY 1; + p := p AND (a_path.edge_list[i - 1].edge_end :=: a_path.edge_list[i]. + edge_start); + END_REPEAT; + RETURN(p); + +END_FUNCTION; -- path_head_to_tail + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION path_reversed(\n a_path: path\n ): path;\n\n LOCAL\n the_reverse : path;\n END_LOCAL;\n IF 'CONFIG_CONTROL_DESIGN.ORIENTED_PATH' IN TYPEOF(a_path) THEN\n the_reverse := oriented_path(a_path\\oriented_path.path_element,NOT \n a_path\\oriented_path.orientation);\n ELSE\n the_reverse := oriented_path(a_path,FALSE);\n END_IF;\n RETURN(the_reverse);\n\nEND_FUNCTION; -- path_reversed\n"); +#endif +/* +FUNCTION path_reversed( + a_path: path + ): path; + + LOCAL + the_reverse : path; + END_LOCAL; + IF 'CONFIG_CONTROL_DESIGN.ORIENTED_PATH' IN TYPEOF(a_path) THEN + the_reverse := oriented_path(a_path\oriented_path.path_element,NOT + a_path\oriented_path.orientation); + ELSE + the_reverse := oriented_path(a_path,FALSE); + END_IF; + RETURN(the_reverse); + +END_FUNCTION; -- path_reversed + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION leap_year(\n year: year_number\n ): BOOLEAN;\n IF (((year MOD 4) = 0) AND ((year MOD 100) <> 0)) OR ((year MOD 400) = 0)\n THEN\n RETURN(TRUE);\n ELSE\n RETURN(FALSE);\n END_IF;\n\nEND_FUNCTION; -- leap_year\n"); +#endif +/* +FUNCTION leap_year( + year: year_number + ): BOOLEAN; + IF (((year MOD 4) = 0) AND ((year MOD 100) <> 0)) OR ((year MOD 400) = 0) + THEN + RETURN(TRUE); + ELSE + RETURN(FALSE); + END_IF; + +END_FUNCTION; -- leap_year + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION face_reversed(\n a_face: face\n ): face;\n\n LOCAL\n the_reverse : face;\n END_LOCAL;\n IF 'CONFIG_CONTROL_DESIGN.ORIENTED_FACE' IN TYPEOF(a_face) THEN\n the_reverse := oriented_face(a_face\\oriented_face.face_element,NOT \n a_face\\oriented_face.orientation);\n ELSE\n the_reverse := oriented_face(a_face,FALSE);\n END_IF;\n RETURN(the_reverse);\n\nEND_FUNCTION; -- face_reversed\n"); +#endif +/* +FUNCTION face_reversed( + a_face: face + ): face; + + LOCAL + the_reverse : face; + END_LOCAL; + IF 'CONFIG_CONTROL_DESIGN.ORIENTED_FACE' IN TYPEOF(a_face) THEN + the_reverse := oriented_face(a_face\oriented_face.face_element,NOT + a_face\oriented_face.orientation); + ELSE + the_reverse := oriented_face(a_face,FALSE); + END_IF; + RETURN(the_reverse); + +END_FUNCTION; -- face_reversed + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION constraints_param_b_spline(\n degree, up_knots, up_cp: INTEGER;\n knot_mult: LIST OF INTEGER;\n knots: LIST OF parameter_value\n ): BOOLEAN;\n\n LOCAL\n k : INTEGER;\n l : INTEGER;\n sum : INTEGER;\n result : BOOLEAN := TRUE;\n END_LOCAL;\n sum := knot_mult[1];\n REPEAT i := 2 TO up_knots BY 1;\n sum := sum + knot_mult[i];\n END_REPEAT;\n IF (degree < 1) OR (up_knots < 2) OR (up_cp < degree) OR (sum <> (degree \n + up_cp + 2)) THEN\n result := FALSE;\n RETURN(result);\n END_IF;\n k := knot_mult[1];\n IF (k < 1) OR (k > (degree + 1)) THEN\n result := FALSE;\n RETURN(result);\n END_IF;\n REPEAT i := 2 TO up_knots BY 1;\n IF (knot_mult[i] < 1) OR (knots[i] <= knots[i - 1]) THEN\n result := FALSE;\n RETURN(result);\n END_IF;\n k := knot_mult[i];\n IF (i < up_knots) AND (k > degree) THEN\n result := FALSE;\n RETURN(result);\n END_IF;\n IF (i = up_knots) AND (k > (degree + 1)) THEN\n result := FALSE;\n RETURN(result);\n END_IF;\n END_REPEAT;\n RETURN(result);\n\nEND_FUNCTION; -- constraints_param_b_spline\n"); +#endif +/* +FUNCTION constraints_param_b_spline( + degree, up_knots, up_cp: INTEGER; + knot_mult: LIST OF INTEGER; + knots: LIST OF parameter_value + ): BOOLEAN; + + LOCAL + k : INTEGER; + l : INTEGER; + sum : INTEGER; + result : BOOLEAN := TRUE; + END_LOCAL; + sum := knot_mult[1]; + REPEAT i := 2 TO up_knots BY 1; + sum := sum + knot_mult[i]; + END_REPEAT; + IF (degree < 1) OR (up_knots < 2) OR (up_cp < degree) OR (sum <> (degree + + up_cp + 2)) THEN + result := FALSE; + RETURN(result); + END_IF; + k := knot_mult[1]; + IF (k < 1) OR (k > (degree + 1)) THEN + result := FALSE; + RETURN(result); + END_IF; + REPEAT i := 2 TO up_knots BY 1; + IF (knot_mult[i] < 1) OR (knots[i] <= knots[i - 1]) THEN + result := FALSE; + RETURN(result); + END_IF; + k := knot_mult[i]; + IF (i < up_knots) AND (k > degree) THEN + result := FALSE; + RETURN(result); + END_IF; + IF (i = up_knots) AND (k > (degree + 1)) THEN + result := FALSE; + RETURN(result); + END_IF; + END_REPEAT; + RETURN(result); + +END_FUNCTION; -- constraints_param_b_spline + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION using_representations(\n item: representation_item\n ): SET OF representation;\n\n LOCAL\n results : SET OF representation;\n i : INTEGER;\n intermediate_items : SET OF representation_item;\n result_bag : BAG OF representation;\n END_LOCAL;\n result_bag := USEDIN(item,'CONFIG_CONTROL_DESIGN.REPRESENTATION.ITEMS');\n IF SIZEOF(result_bag) > 0 THEN\n REPEAT i := 1 TO HIINDEX(result_bag) BY 1;\n results := results + result_bag[i];\n END_REPEAT;\n END_IF;\n intermediate_items := QUERY ( z <* bag_to_set(USEDIN(item,'')) | (\n 'CONFIG_CONTROL_DESIGN.REPRESENTATION_ITEM' IN TYPEOF(z)) );\n IF SIZEOF(intermediate_items) > 0 THEN\n REPEAT i := 1 TO HIINDEX(intermediate_items) BY 1;\n results := results + using_representations(intermediate_items[i]);\n END_REPEAT;\n END_IF;\n RETURN(results);\n\nEND_FUNCTION; -- using_representations\n"); +#endif +/* +FUNCTION using_representations( + item: representation_item + ): SET OF representation; + + LOCAL + results : SET OF representation; + i : INTEGER; + intermediate_items : SET OF representation_item; + result_bag : BAG OF representation; + END_LOCAL; + result_bag := USEDIN(item,'CONFIG_CONTROL_DESIGN.REPRESENTATION.ITEMS'); + IF SIZEOF(result_bag) > 0 THEN + REPEAT i := 1 TO HIINDEX(result_bag) BY 1; + results := results + result_bag[i]; + END_REPEAT; + END_IF; + intermediate_items := QUERY ( z <* bag_to_set(USEDIN(item,'')) | ( + 'CONFIG_CONTROL_DESIGN.REPRESENTATION_ITEM' IN TYPEOF(z)) ); + IF SIZEOF(intermediate_items) > 0 THEN + REPEAT i := 1 TO HIINDEX(intermediate_items) BY 1; + results := results + using_representations(intermediate_items[i]); + END_REPEAT; + END_IF; + RETURN(results); + +END_FUNCTION; -- using_representations + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION basis_curve_check(\n cv: curve;\n schema_name: STRING\n ): BOOLEAN;\n IF SIZEOF([schema_name + '.B_SPLINE_CURVE',schema_name + '.CONIC',\n schema_name + '.LINE',schema_name + '.POLYLINE'] * TYPEOF(cv)) = 1\n THEN\n RETURN(TRUE);\n ELSE\n IF (schema_name + '.CURVE_REPLICA') IN TYPEOF(cv) THEN\n RETURN(basis_curve_check(cv\\curve_replica.parent_curve,schema_name));\n ELSE\n IF (schema_name + '.OFFSET_CURVE_3D') IN TYPEOF(cv) THEN\n RETURN(basis_curve_check(cv\\offset_curve_3d.basis_curve,\n schema_name));\n ELSE\n IF (schema_name + '.PCURVE') IN TYPEOF(cv) THEN\n IF SIZEOF([schema_name + '.B_SPLINE_CURVE',schema_name + \n '.CONIC',schema_name + '.LINE',schema_name + '.POLYLINE'] * \n TYPEOF(cv\\pcurve.reference_to_curve\\representation.items[1])) \n = 1 THEN\n RETURN(basis_surface_check(cv\\pcurve.basis_surface,schema_name));\n ELSE\n IF (schema_name + '.CURVE_REPLICA') IN TYPEOF(cv\\pcurve.\n reference_to_curve\\representation.items[1]) THEN\n RETURN(basis_curve_check(cv\\pcurve.reference_to_curve\\\n representation.items[1],schema_name) AND \n basis_surface_check(cv\\pcurve.basis_surface,schema_name));\n END_IF;\n END_IF;\n ELSE\n IF (schema_name + '.SURFACE_CURVE') IN TYPEOF(cv) THEN\n IF SIZEOF([schema_name + '.B_SPLINE_CURVE',schema_name + \n '.CONIC',schema_name + '.LINE',schema_name + '.POLYLINE'] *\n TYPEOF(cv\\surface_curve.curve_3d)) = 1 THEN\n REPEAT i := 1 TO SIZEOF(cv\\surface_curve.associated_geometry)\n BY 1;\n IF (schema_name + '.SURFACE') IN TYPEOF(cv\\surface_curve.\n associated_geometry[i]) THEN\n IF NOT basis_surface_check(cv\\surface_curve.\n associated_geometry[i],schema_name) THEN\n RETURN(FALSE);\n END_IF;\n ELSE\n IF (schema_name + '.PCURVE') IN TYPEOF(cv\\surface_curve.\n associated_geometry[i]) THEN\n IF NOT basis_curve_check(cv\\surface_curve.\n associated_geometry[i],schema_name) THEN\n RETURN(FALSE);\n END_IF;\n END_IF;\n END_IF;\n END_REPEAT;\n ELSE\n IF (schema_name + '.CURVE_REPLICA') IN TYPEOF(cv\\\n surface_curve.curve_3d) THEN\n IF NOT basis_curve_check(cv\\curve_replica.parent_curve,\n schema_name) THEN\n RETURN(FALSE);\n END_IF;\n ELSE\n IF (schema_name + '.OFFSET_CURVE_3D') IN TYPEOF(cv\\\n surface_curve.curve_3d) THEN\n IF NOT basis_curve_check(cv\\offset_curve_3d.basis_curve,\n schema_name) THEN\n RETURN(FALSE);\n END_IF;\n ELSE\n REPEAT i := 1 TO SIZEOF(cv\\surface_curve.\n associated_geometry) BY 1;\n IF (schema_name + '.SURFACE') IN TYPEOF(cv\\\n surface_curve.associated_geometry[i]) THEN\n IF NOT basis_surface_check(cv\\surface_curve.\n associated_geometry[i],schema_name) THEN\n RETURN(FALSE);\n END_IF;\n ELSE\n IF (schema_name + '.PCURVE') IN TYPEOF(cv\\\n surface_curve.associated_geometry[i]) THEN\n IF NOT basis_curve_check(cv\\surface_curve.\n associated_geometry[i],schema_name) THEN\n RETURN(FALSE);\n END_IF;\n END_IF;\n END_IF;\n END_REPEAT;\n END_IF;\n END_IF;\n END_IF;\n END_IF;\n END_IF;\n END_IF;\n END_IF;\n END_IF;\n RETURN(FALSE);\n\nEND_FUNCTION; -- basis_curve_check\n"); +#endif +/* +FUNCTION basis_curve_check( + cv: curve; + schema_name: STRING + ): BOOLEAN; + IF SIZEOF([schema_name + '.B_SPLINE_CURVE',schema_name + '.CONIC', + schema_name + '.LINE',schema_name + '.POLYLINE'] * TYPEOF(cv)) = 1 + THEN + RETURN(TRUE); + ELSE + IF (schema_name + '.CURVE_REPLICA') IN TYPEOF(cv) THEN + RETURN(basis_curve_check(cv\curve_replica.parent_curve,schema_name)); + ELSE + IF (schema_name + '.OFFSET_CURVE_3D') IN TYPEOF(cv) THEN + RETURN(basis_curve_check(cv\offset_curve_3d.basis_curve, + schema_name)); + ELSE + IF (schema_name + '.PCURVE') IN TYPEOF(cv) THEN + IF SIZEOF([schema_name + '.B_SPLINE_CURVE',schema_name + + '.CONIC',schema_name + '.LINE',schema_name + '.POLYLINE'] * + TYPEOF(cv\pcurve.reference_to_curve\representation.items[1])) + = 1 THEN + RETURN(basis_surface_check(cv\pcurve.basis_surface,schema_name)); + ELSE + IF (schema_name + '.CURVE_REPLICA') IN TYPEOF(cv\pcurve. + reference_to_curve\representation.items[1]) THEN + RETURN(basis_curve_check(cv\pcurve.reference_to_curve\ + representation.items[1],schema_name) AND + basis_surface_check(cv\pcurve.basis_surface,schema_name)); + END_IF; + END_IF; + ELSE + IF (schema_name + '.SURFACE_CURVE') IN TYPEOF(cv) THEN + IF SIZEOF([schema_name + '.B_SPLINE_CURVE',schema_name + + '.CONIC',schema_name + '.LINE',schema_name + '.POLYLINE'] * + TYPEOF(cv\surface_curve.curve_3d)) = 1 THEN + REPEAT i := 1 TO SIZEOF(cv\surface_curve.associated_geometry) + BY 1; + IF (schema_name + '.SURFACE') IN TYPEOF(cv\surface_curve. + associated_geometry[i]) THEN + IF NOT basis_surface_check(cv\surface_curve. + associated_geometry[i],schema_name) THEN + RETURN(FALSE); + END_IF; + ELSE + IF (schema_name + '.PCURVE') IN TYPEOF(cv\surface_curve. + associated_geometry[i]) THEN + IF NOT basis_curve_check(cv\surface_curve. + associated_geometry[i],schema_name) THEN + RETURN(FALSE); + END_IF; + END_IF; + END_IF; + END_REPEAT; + ELSE + IF (schema_name + '.CURVE_REPLICA') IN TYPEOF(cv\ + surface_curve.curve_3d) THEN + IF NOT basis_curve_check(cv\curve_replica.parent_curve, + schema_name) THEN + RETURN(FALSE); + END_IF; + ELSE + IF (schema_name + '.OFFSET_CURVE_3D') IN TYPEOF(cv\ + surface_curve.curve_3d) THEN + IF NOT basis_curve_check(cv\offset_curve_3d.basis_curve, + schema_name) THEN + RETURN(FALSE); + END_IF; + ELSE + REPEAT i := 1 TO SIZEOF(cv\surface_curve. + associated_geometry) BY 1; + IF (schema_name + '.SURFACE') IN TYPEOF(cv\ + surface_curve.associated_geometry[i]) THEN + IF NOT basis_surface_check(cv\surface_curve. + associated_geometry[i],schema_name) THEN + RETURN(FALSE); + END_IF; + ELSE + IF (schema_name + '.PCURVE') IN TYPEOF(cv\ + surface_curve.associated_geometry[i]) THEN + IF NOT basis_curve_check(cv\surface_curve. + associated_geometry[i],schema_name) THEN + RETURN(FALSE); + END_IF; + END_IF; + END_IF; + END_REPEAT; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + RETURN(FALSE); + +END_FUNCTION; -- basis_curve_check + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION associated_surface(\n arg: pcurve_or_surface\n ): surface;\n\n LOCAL\n surf : surface;\n END_LOCAL;\n IF 'CONFIG_CONTROL_DESIGN.PCURVE' IN TYPEOF(arg) THEN\n surf := arg.basis_surface;\n ELSE\n surf := arg;\n END_IF;\n RETURN(surf);\n\nEND_FUNCTION; -- associated_surface\n"); +#endif +/* +FUNCTION associated_surface( + arg: pcurve_or_surface + ): surface; + + LOCAL + surf : surface; + END_LOCAL; + IF 'CONFIG_CONTROL_DESIGN.PCURVE' IN TYPEOF(arg) THEN + surf := arg.basis_surface; + ELSE + surf := arg; + END_IF; + RETURN(surf); + +END_FUNCTION; -- associated_surface + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION acyclic_point_replica(\n rep: point_replica;\n parent: point\n ): BOOLEAN;\n IF NOT ('CONFIG_CONTROL_DESIGN.POINT_REPLICA' IN TYPEOF(parent)) THEN\n RETURN(TRUE);\n END_IF;\n IF parent :=: rep THEN\n RETURN(FALSE);\n ELSE\n RETURN(acyclic_point_replica(rep,parent\\point_replica.parent_pt));\n END_IF;\n\nEND_FUNCTION; -- acyclic_point_replica\n"); +#endif +/* +FUNCTION acyclic_point_replica( + rep: point_replica; + parent: point + ): BOOLEAN; + IF NOT ('CONFIG_CONTROL_DESIGN.POINT_REPLICA' IN TYPEOF(parent)) THEN + RETURN(TRUE); + END_IF; + IF parent :=: rep THEN + RETURN(FALSE); + ELSE + RETURN(acyclic_point_replica(rep,parent\point_replica.parent_pt)); + END_IF; + +END_FUNCTION; -- acyclic_point_replica + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION cross_product(\n arg1, arg2: direction\n ): vector;\n\n LOCAL\n v2 : LIST [3:3] OF REAL;\n v1 : LIST [3:3] OF REAL;\n mag : REAL;\n res : direction;\n result : vector;\n END_LOCAL;\n IF (NOT EXISTS(arg1)) OR (arg1.dim = 2) OR (NOT EXISTS(arg2)) OR (arg2.\n dim = 2) THEN\n RETURN(?);\n ELSE\n BEGIN\n v1 := normalise(arg1).direction_ratios;\n v2 := normalise(arg2).direction_ratios;\n res.direction_ratios[1] := (v1[2] * v2[3]) - (v1[3] * v2[2]);\n res.direction_ratios[2] := (v1[3] * v2[1]) - (v1[1] * v2[3]);\n res.direction_ratios[3] := (v1[1] * v2[2]) - (v1[2] * v2[1]);\n mag := 0;\n REPEAT i := 1 TO 3 BY 1;\n mag := mag + (res.direction_ratios[i] * res.direction_ratios[i]);\n END_REPEAT;\n IF mag > 0 THEN\n result.orientation := res;\n result.magnitude := SQRT(mag);\n ELSE\n result.orientation := arg1;\n result.magnitude := 0;\n END_IF;\n RETURN(result);\n END;\n END_IF;\n\nEND_FUNCTION; -- cross_product\n"); +#endif +/* +FUNCTION cross_product( + arg1, arg2: direction + ): vector; + + LOCAL + v2 : LIST [3:3] OF REAL; + v1 : LIST [3:3] OF REAL; + mag : REAL; + res : direction; + result : vector; + END_LOCAL; + IF (NOT EXISTS(arg1)) OR (arg1.dim = 2) OR (NOT EXISTS(arg2)) OR (arg2. + dim = 2) THEN + RETURN(?); + ELSE + BEGIN + v1 := normalise(arg1).direction_ratios; + v2 := normalise(arg2).direction_ratios; + res.direction_ratios[1] := (v1[2] * v2[3]) - (v1[3] * v2[2]); + res.direction_ratios[2] := (v1[3] * v2[1]) - (v1[1] * v2[3]); + res.direction_ratios[3] := (v1[1] * v2[2]) - (v1[2] * v2[1]); + mag := 0; + REPEAT i := 1 TO 3 BY 1; + mag := mag + (res.direction_ratios[i] * res.direction_ratios[i]); + END_REPEAT; + IF mag > 0 THEN + result.orientation := res; + result.magnitude := SQRT(mag); + ELSE + result.orientation := arg1; + result.magnitude := 0; + END_IF; + RETURN(result); + END; + END_IF; + +END_FUNCTION; -- cross_product + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION valid_units(\n m: measure_with_unit\n ): BOOLEAN;\n IF 'CONFIG_CONTROL_DESIGN.LENGTH_MEASURE' IN TYPEOF(m.value_component)\n THEN\n IF derive_dimensional_exponents(m.unit_component) <> \n dimensional_exponents(1,0,0,0,0,0,0) THEN\n RETURN(FALSE);\n END_IF;\n END_IF;\n IF 'CONFIG_CONTROL_DESIGN.MASS_MEASURE' IN TYPEOF(m.value_component)\n THEN\n IF derive_dimensional_exponents(m.unit_component) <> \n dimensional_exponents(0,1,0,0,0,0,0) THEN\n RETURN(FALSE);\n END_IF;\n END_IF;\n IF 'CONFIG_CONTROL_DESIGN.TIME_MEASURE' IN TYPEOF(m.value_component)\n THEN\n IF derive_dimensional_exponents(m.unit_component) <> \n dimensional_exponents(0,0,1,0,0,0,0) THEN\n RETURN(FALSE);\n END_IF;\n END_IF;\n IF 'CONFIG_CONTROL_DESIGN.ELECTRIC_CURRENT_MEASURE' IN TYPEOF(m.\n value_component) THEN\n IF derive_dimensional_exponents(m.unit_component) <> \n dimensional_exponents(0,0,0,1,0,0,0) THEN\n RETURN(FALSE);\n END_IF;\n END_IF;\n IF 'CONFIG_CONTROL_DESIGN.THERMODYNAMIC_TEMPERATURE_MEASURE' IN TYPEOF(m\n .value_component) THEN\n IF derive_dimensional_exponents(m.unit_component) <> \n dimensional_exponents(0,0,0,0,1,0,0) THEN\n RETURN(FALSE);\n END_IF;\n END_IF;\n IF 'CONFIG_CONTROL_DESIGN.AMOUNT_OF_SUBSTANCE_MEASURE' IN TYPEOF(m.\n value_component) THEN\n IF derive_dimensional_exponents(m.unit_component) <> \n dimensional_exponents(0,0,0,0,0,1,0) THEN\n RETURN(FALSE);\n END_IF;\n END_IF;\n IF 'CONFIG_CONTROL_DESIGN.LUMINOUS_INTENSITY_MEASURE' IN TYPEOF(m.\n value_component) THEN\n IF derive_dimensional_exponents(m.unit_component) <> \n dimensional_exponents(0,0,0,0,0,0,1) THEN\n RETURN(FALSE);\n END_IF;\n END_IF;\n IF 'CONFIG_CONTROL_DESIGN.PLANE_ANGLE_MEASURE' IN TYPEOF(m.\n value_component) THEN\n IF derive_dimensional_exponents(m.unit_component) <> \n dimensional_exponents(0,0,0,0,0,0,0) THEN\n RETURN(FALSE);\n END_IF;\n END_IF;\n IF 'CONFIG_CONTROL_DESIGN.SOLID_ANGLE_MEASURE' IN TYPEOF(m.\n value_component) THEN\n IF derive_dimensional_exponents(m.unit_component) <> \n dimensional_exponents(0,0,0,0,0,0,0) THEN\n RETURN(FALSE);\n END_IF;\n END_IF;\n IF 'CONFIG_CONTROL_DESIGN.AREA_MEASURE' IN TYPEOF(m.value_component)\n THEN\n IF derive_dimensional_exponents(m.unit_component) <> \n dimensional_exponents(2,0,0,0,0,0,0) THEN\n RETURN(FALSE);\n END_IF;\n END_IF;\n IF 'CONFIG_CONTROL_DESIGN.VOLUME_MEASURE' IN TYPEOF(m.value_component)\n THEN\n IF derive_dimensional_exponents(m.unit_component) <> \n dimensional_exponents(3,0,0,0,0,0,0) THEN\n RETURN(FALSE);\n END_IF;\n END_IF;\n IF 'CONFIG_CONTROL_DESIGN.RATIO_MEASURE' IN TYPEOF(m.value_component)\n THEN\n IF derive_dimensional_exponents(m.unit_component) <> \n dimensional_exponents(0,0,0,0,0,0,0) THEN\n RETURN(FALSE);\n END_IF;\n END_IF;\n IF 'CONFIG_CONTROL_DESIGN.POSITIVE_LENGTH_MEASURE' IN TYPEOF(m.\n value_component) THEN\n IF derive_dimensional_exponents(m.unit_component) <> \n dimensional_exponents(1,0,0,0,0,0,0) THEN\n RETURN(FALSE);\n END_IF;\n END_IF;\n IF 'CONFIG_CONTROL_DESIGN.POSITIVE_PLANE_ANGLE_MEASURE' IN TYPEOF(m.\n value_component) THEN\n IF derive_dimensional_exponents(m.unit_component) <> \n dimensional_exponents(0,0,0,0,0,0,0) THEN\n RETURN(FALSE);\n END_IF;\n END_IF;\n RETURN(TRUE);\n\nEND_FUNCTION; -- valid_units\n"); +#endif +/* +FUNCTION valid_units( + m: measure_with_unit + ): BOOLEAN; + IF 'CONFIG_CONTROL_DESIGN.LENGTH_MEASURE' IN TYPEOF(m.value_component) + THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(1,0,0,0,0,0,0) THEN + RETURN(FALSE); + END_IF; + END_IF; + IF 'CONFIG_CONTROL_DESIGN.MASS_MEASURE' IN TYPEOF(m.value_component) + THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0,1,0,0,0,0,0) THEN + RETURN(FALSE); + END_IF; + END_IF; + IF 'CONFIG_CONTROL_DESIGN.TIME_MEASURE' IN TYPEOF(m.value_component) + THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0,0,1,0,0,0,0) THEN + RETURN(FALSE); + END_IF; + END_IF; + IF 'CONFIG_CONTROL_DESIGN.ELECTRIC_CURRENT_MEASURE' IN TYPEOF(m. + value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0,0,0,1,0,0,0) THEN + RETURN(FALSE); + END_IF; + END_IF; + IF 'CONFIG_CONTROL_DESIGN.THERMODYNAMIC_TEMPERATURE_MEASURE' IN TYPEOF(m + .value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0,0,0,0,1,0,0) THEN + RETURN(FALSE); + END_IF; + END_IF; + IF 'CONFIG_CONTROL_DESIGN.AMOUNT_OF_SUBSTANCE_MEASURE' IN TYPEOF(m. + value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0,0,0,0,0,1,0) THEN + RETURN(FALSE); + END_IF; + END_IF; + IF 'CONFIG_CONTROL_DESIGN.LUMINOUS_INTENSITY_MEASURE' IN TYPEOF(m. + value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0,0,0,0,0,0,1) THEN + RETURN(FALSE); + END_IF; + END_IF; + IF 'CONFIG_CONTROL_DESIGN.PLANE_ANGLE_MEASURE' IN TYPEOF(m. + value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0,0,0,0,0,0,0) THEN + RETURN(FALSE); + END_IF; + END_IF; + IF 'CONFIG_CONTROL_DESIGN.SOLID_ANGLE_MEASURE' IN TYPEOF(m. + value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0,0,0,0,0,0,0) THEN + RETURN(FALSE); + END_IF; + END_IF; + IF 'CONFIG_CONTROL_DESIGN.AREA_MEASURE' IN TYPEOF(m.value_component) + THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(2,0,0,0,0,0,0) THEN + RETURN(FALSE); + END_IF; + END_IF; + IF 'CONFIG_CONTROL_DESIGN.VOLUME_MEASURE' IN TYPEOF(m.value_component) + THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(3,0,0,0,0,0,0) THEN + RETURN(FALSE); + END_IF; + END_IF; + IF 'CONFIG_CONTROL_DESIGN.RATIO_MEASURE' IN TYPEOF(m.value_component) + THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0,0,0,0,0,0,0) THEN + RETURN(FALSE); + END_IF; + END_IF; + IF 'CONFIG_CONTROL_DESIGN.POSITIVE_LENGTH_MEASURE' IN TYPEOF(m. + value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(1,0,0,0,0,0,0) THEN + RETURN(FALSE); + END_IF; + END_IF; + IF 'CONFIG_CONTROL_DESIGN.POSITIVE_PLANE_ANGLE_MEASURE' IN TYPEOF(m. + value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0,0,0,0,0,0,0) THEN + RETURN(FALSE); + END_IF; + END_IF; + RETURN(TRUE); + +END_FUNCTION; -- valid_units + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION constraints_rectangular_composite_surface(\n s: rectangular_composite_surface\n ): BOOLEAN;\n REPEAT i := 1 TO s.n_u BY 1;\n REPEAT j := 1 TO s.n_v BY 1;\n IF NOT (('CONFIG_CONTROL_DESIGN.B_SPLINE_SURFACE' IN TYPEOF(s.\n segments[i][j].parent_surface)) OR (\n 'CONFIG_CONTROL_DESIGN.RECTANGULAR_TRIMMED_SURFACE' IN TYPEOF(s.\n segments[i][j].parent_surface))) THEN\n RETURN(FALSE);\n END_IF;\n END_REPEAT;\n END_REPEAT;\n REPEAT i := 1 TO s.n_u - 1 BY 1;\n REPEAT j := 1 TO s.n_v BY 1;\n IF s.segments[i][j].u_transition = discontinuous THEN\n RETURN(FALSE);\n END_IF;\n END_REPEAT;\n END_REPEAT;\n REPEAT i := 1 TO s.n_u BY 1;\n REPEAT j := 1 TO s.n_v - 1 BY 1;\n IF s.segments[i][j].v_transition = discontinuous THEN\n RETURN(FALSE);\n END_IF;\n END_REPEAT;\n END_REPEAT;\n RETURN(TRUE);\n\nEND_FUNCTION; -- constraints_rectangular_composite_surface\n"); +#endif +/* +FUNCTION constraints_rectangular_composite_surface( + s: rectangular_composite_surface + ): BOOLEAN; + REPEAT i := 1 TO s.n_u BY 1; + REPEAT j := 1 TO s.n_v BY 1; + IF NOT (('CONFIG_CONTROL_DESIGN.B_SPLINE_SURFACE' IN TYPEOF(s. + segments[i][j].parent_surface)) OR ( + 'CONFIG_CONTROL_DESIGN.RECTANGULAR_TRIMMED_SURFACE' IN TYPEOF(s. + segments[i][j].parent_surface))) THEN + RETURN(FALSE); + END_IF; + END_REPEAT; + END_REPEAT; + REPEAT i := 1 TO s.n_u - 1 BY 1; + REPEAT j := 1 TO s.n_v BY 1; + IF s.segments[i][j].u_transition = discontinuous THEN + RETURN(FALSE); + END_IF; + END_REPEAT; + END_REPEAT; + REPEAT i := 1 TO s.n_u BY 1; + REPEAT j := 1 TO s.n_v - 1 BY 1; + IF s.segments[i][j].v_transition = discontinuous THEN + RETURN(FALSE); + END_IF; + END_REPEAT; + END_REPEAT; + RETURN(TRUE); + +END_FUNCTION; -- constraints_rectangular_composite_surface + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION boolean_choose(\n b: BOOLEAN;\n choice1, choice2: GENERIC:item\n ): GENERIC:item;\n IF b THEN\n RETURN(choice1);\n ELSE\n RETURN(choice2);\n END_IF;\n\nEND_FUNCTION; -- boolean_choose\n"); +#endif +/* +FUNCTION boolean_choose( + b: BOOLEAN; + choice1, choice2: GENERIC:item + ): GENERIC:item; + IF b THEN + RETURN(choice1); + ELSE + RETURN(choice2); + END_IF; + +END_FUNCTION; -- boolean_choose + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION valid_time(\n time: local_time\n ): BOOLEAN;\n IF EXISTS(time.second_component) THEN\n RETURN(EXISTS(time.minute_component));\n ELSE\n RETURN(TRUE);\n END_IF;\n\nEND_FUNCTION; -- valid_time\n"); +#endif +/* +FUNCTION valid_time( + time: local_time + ): BOOLEAN; + IF EXISTS(time.second_component) THEN + RETURN(EXISTS(time.minute_component)); + ELSE + RETURN(TRUE); + END_IF; + +END_FUNCTION; -- valid_time + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION valid_geometrically_bounded_wf_curve(\n crv: curve;\n schma: STRING\n ): BOOLEAN;\n IF SIZEOF([schma + '.POLYLINE',schma + '.B_SPLINE_CURVE',schma + \n '.ELLIPSE',schma + '.CIRCLE'] * TYPEOF(crv)) = 1 THEN\n RETURN(TRUE);\n ELSE\n IF (schma + '.TRIMMED_CURVE') IN TYPEOF(crv) THEN\n IF SIZEOF([schma + '.LINE',schma + '.PARABOLA',schma + '.HYPERBOLA'] \n * TYPEOF(crv\\trimmed_curve.basis_curve)) = 1 THEN\n RETURN(TRUE);\n ELSE\n RETURN(valid_geometrically_bounded_wf_curve(crv\\trimmed_curve.\n basis_curve,schma));\n END_IF;\n ELSE\n IF (schma + '.OFFSET_CURVE_3D') IN TYPEOF(crv) THEN\n RETURN(valid_geometrically_bounded_wf_curve(crv\\offset_curve_3d.\n basis_curve,schma));\n ELSE\n IF (schma + '.CURVE_REPLICA') IN TYPEOF(crv) THEN\n RETURN(valid_geometrically_bounded_wf_curve(crv\\curve_replica.\n parent_curve,schma));\n ELSE\n IF (schma + '.COMPOSITE_CURVE') IN TYPEOF(crv) THEN\n RETURN(SIZEOF(QUERY ( ccs <* crv\\composite_curve.segments | (\n NOT valid_geometrically_bounded_wf_curve(ccs.parent_curve,\n schma)) )) = 0);\n END_IF;\n END_IF;\n END_IF;\n END_IF;\n END_IF;\n RETURN(FALSE);\n\nEND_FUNCTION; -- valid_geometrically_bounded_wf_curve\n"); +#endif +/* +FUNCTION valid_geometrically_bounded_wf_curve( + crv: curve; + schma: STRING + ): BOOLEAN; + IF SIZEOF([schma + '.POLYLINE',schma + '.B_SPLINE_CURVE',schma + + '.ELLIPSE',schma + '.CIRCLE'] * TYPEOF(crv)) = 1 THEN + RETURN(TRUE); + ELSE + IF (schma + '.TRIMMED_CURVE') IN TYPEOF(crv) THEN + IF SIZEOF([schma + '.LINE',schma + '.PARABOLA',schma + '.HYPERBOLA'] + * TYPEOF(crv\trimmed_curve.basis_curve)) = 1 THEN + RETURN(TRUE); + ELSE + RETURN(valid_geometrically_bounded_wf_curve(crv\trimmed_curve. + basis_curve,schma)); + END_IF; + ELSE + IF (schma + '.OFFSET_CURVE_3D') IN TYPEOF(crv) THEN + RETURN(valid_geometrically_bounded_wf_curve(crv\offset_curve_3d. + basis_curve,schma)); + ELSE + IF (schma + '.CURVE_REPLICA') IN TYPEOF(crv) THEN + RETURN(valid_geometrically_bounded_wf_curve(crv\curve_replica. + parent_curve,schma)); + ELSE + IF (schma + '.COMPOSITE_CURVE') IN TYPEOF(crv) THEN + RETURN(SIZEOF(QUERY ( ccs <* crv\composite_curve.segments | ( + NOT valid_geometrically_bounded_wf_curve(ccs.parent_curve, + schma)) )) = 0); + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + RETURN(FALSE); + +END_FUNCTION; -- valid_geometrically_bounded_wf_curve + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION dot_product(\n arg1, arg2: direction\n ): REAL;\n\n LOCAL\n ndim : INTEGER;\n scalar : REAL;\n vec1 : direction;\n vec2 : direction;\n END_LOCAL;\n IF (NOT EXISTS(arg1)) OR (NOT EXISTS(arg2)) THEN\n scalar := ?;\n ELSE\n IF arg1.dim <> arg2.dim THEN\n scalar := ?;\n ELSE\n BEGIN\n vec1 := normalise(arg1);\n vec2 := normalise(arg2);\n ndim := arg1.dim;\n scalar := 0;\n REPEAT i := 1 TO ndim BY 1;\n scalar := scalar + (vec1.direction_ratios[i] * vec2.\n direction_ratios[i]);\n END_REPEAT;\n END;\n END_IF;\n END_IF;\n RETURN(scalar);\n\nEND_FUNCTION; -- dot_product\n"); +#endif +/* +FUNCTION dot_product( + arg1, arg2: direction + ): REAL; + + LOCAL + ndim : INTEGER; + scalar : REAL; + vec1 : direction; + vec2 : direction; + END_LOCAL; + IF (NOT EXISTS(arg1)) OR (NOT EXISTS(arg2)) THEN + scalar := ?; + ELSE + IF arg1.dim <> arg2.dim THEN + scalar := ?; + ELSE + BEGIN + vec1 := normalise(arg1); + vec2 := normalise(arg2); + ndim := arg1.dim; + scalar := 0; + REPEAT i := 1 TO ndim BY 1; + scalar := scalar + (vec1.direction_ratios[i] * vec2. + direction_ratios[i]); + END_REPEAT; + END; + END_IF; + END_IF; + RETURN(scalar); + +END_FUNCTION; -- dot_product + +*/ +#ifndef MSWIN + s_config_control_design->AddFunction("FUNCTION acyclic_curve_replica(\n rep: curve_replica;\n parent: curve\n ): BOOLEAN;\n IF NOT ('CONFIG_CONTROL_DESIGN.CURVE_REPLICA' IN TYPEOF(parent)) THEN\n RETURN(TRUE);\n END_IF;\n IF parent :=: rep THEN\n RETURN(FALSE);\n ELSE\n RETURN(acyclic_curve_replica(rep,parent\\curve_replica.parent_curve));\n END_IF;\n\nEND_FUNCTION; -- acyclic_curve_replica\n"); +#endif +/* +FUNCTION acyclic_curve_replica( + rep: curve_replica; + parent: curve + ): BOOLEAN; + IF NOT ('CONFIG_CONTROL_DESIGN.CURVE_REPLICA' IN TYPEOF(parent)) THEN + RETURN(TRUE); + END_IF; + IF parent :=: rep THEN + RETURN(FALSE); + ELSE + RETURN(acyclic_curve_replica(rep,parent\curve_replica.parent_curve)); + END_IF; + +END_FUNCTION; -- acyclic_curve_replica + +*/ + + // ***** Initialize the Types + config_control_designt_characterized_definition = new SelectTypeDescriptor ( + ~(sdaiINSTANCE), //unique elements, + "Characterized_Definition", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Characterized_Product_Definition, Shape_Definition)"), // Description + (SelectCreator) create_SdaiCharacterized_definition); // Creator function + s_config_control_design->AddType(config_control_designt_characterized_definition); + config_control_designt_parameter_value = new TypeDescriptor ( + "Parameter_Value", // Name + sdaiREAL, // FundamentalType + s_config_control_design, // Originating Schema + "REAL"); // Description + s_config_control_design->AddType(config_control_designt_parameter_value); + config_control_designt_plane_angle_measure = new TypeDescriptor ( + "Plane_Angle_Measure", // Name + sdaiREAL, // FundamentalType + s_config_control_design, // Originating Schema + "REAL"); // Description + s_config_control_design->AddType(config_control_designt_plane_angle_measure); + config_control_designt_change_request_item = new SelectTypeDescriptor ( + ~(0), //unique elements, + "Change_Request_Item", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Product_Definition_Formation)"), // Description + (SelectCreator) create_SdaiChange_request_item); // Creator function + s_config_control_design->AddType(config_control_designt_change_request_item); + config_control_designt_text = new TypeDescriptor ( + "Text", // Name + sdaiSTRING, // FundamentalType + s_config_control_design, // Originating Schema + "STRING"); // Description + s_config_control_design->AddType(config_control_designt_text); + config_control_designt_year_number = new TypeDescriptor ( + "Year_Number", // Name + sdaiINTEGER, // FundamentalType + s_config_control_design, // Originating Schema + "INTEGER"); // Description + s_config_control_design->AddType(config_control_designt_year_number); + config_control_designt_characterized_product_definition = new SelectTypeDescriptor ( + ~(sdaiINSTANCE), //unique elements, + "Characterized_Product_Definition", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Product_Definition, Product_Definition_Relationship)"), // Description + (SelectCreator) create_SdaiCharacterized_product_definition); // Creator function + s_config_control_design->AddType(config_control_designt_characterized_product_definition); + config_control_designt_reversible_topology_item = new SelectTypeDescriptor ( + ~(sdaiINSTANCE), //unique elements, + "Reversible_Topology_Item", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Edge, Path, Face, Face_Bound, Closed_Shell, Open_Shell)"), // Description + (SelectCreator) create_SdaiReversible_topology_item); // Creator function + s_config_control_design->AddType(config_control_designt_reversible_topology_item); + config_control_designt_axis2_placement = new SelectTypeDescriptor ( + ~(sdaiINSTANCE), //unique elements, + "Axis2_Placement", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Axis2_Placement_2d, Axis2_Placement_3d)"), // Description + (SelectCreator) create_SdaiAxis2_placement); // Creator function + s_config_control_design->AddType(config_control_designt_axis2_placement); + + config_control_designt_set_of_reversible_topology_item = new SetTypeDescriptor ( + "Set_Of_Reversible_Topology_Item", // Name + SET_TYPE, // FundamentalType + s_config_control_design, // Originating Schema + "SET [0:?] OF reversible_topology_item", // Description + (AggregateCreator) create_SdaiSet_of_reversible_topology_item); // Creator function + + s_config_control_design->AddType(config_control_designt_set_of_reversible_topology_item); + config_control_designt_week_in_year_number = new TypeDescriptor ( + "Week_In_Year_Number", // Name + sdaiINTEGER, // FundamentalType + s_config_control_design, // Originating Schema + "INTEGER"); // Description + s_config_control_design->AddType(config_control_designt_week_in_year_number); + config_control_designt_week_in_year_number->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: ((1 <= SELF) AND (SELF <= 53));\n"); + config_control_designt_week_in_year_number->_where_rules->Append(wr); + config_control_designt_knot_type = new EnumTypeDescriptor ( + "Knot_Type", // Name + sdaiENUMERATION, // FundamentalType + s_config_control_design, // Originating Schema + "ENUMERATION of (uniform_knots, quasi_uniform_knots, piecewise_bezier_knots, unspecified)", // Description + (EnumCreator) create_SdaiKnot_type_var); // Creator function + s_config_control_design->AddType(config_control_designt_knot_type); + config_control_designt_specified_item = new SelectTypeDescriptor ( + ~(sdaiINSTANCE), //unique elements, + "Specified_Item", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Product_Definition, Shape_Aspect)"), // Description + (SelectCreator) create_SdaiSpecified_item); // Creator function + s_config_control_design->AddType(config_control_designt_specified_item); + config_control_designt_minute_in_hour = new TypeDescriptor ( + "Minute_In_Hour", // Name + sdaiINTEGER, // FundamentalType + s_config_control_design, // Originating Schema + "INTEGER"); // Description + s_config_control_design->AddType(config_control_designt_minute_in_hour); + config_control_designt_minute_in_hour->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: ((0 <= SELF) AND (SELF <= 59));\n"); + config_control_designt_minute_in_hour->_where_rules->Append(wr); + config_control_designt_transition_code = new EnumTypeDescriptor ( + "Transition_Code", // Name + sdaiENUMERATION, // FundamentalType + s_config_control_design, // Originating Schema + "ENUMERATION of (discontinuous, cont_same_gradient_same_curvature, cont_same_gradient, continuous)", // Description + (EnumCreator) create_SdaiTransition_code_var); // Creator function + s_config_control_design->AddType(config_control_designt_transition_code); + config_control_designt_identifier = new TypeDescriptor ( + "Identifier", // Name + sdaiSTRING, // FundamentalType + s_config_control_design, // Originating Schema + "STRING"); // Description + s_config_control_design->AddType(config_control_designt_identifier); + config_control_designt_measure_value = new SelectTypeDescriptor ( + ~(sdaiREAL), //unique elements, + "Measure_Value", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Area_Measure, Context_Dependent_Measure, Count_Measure, Descriptive_Measure, Length_Measure, Mass_Measure, Plane_Angle_Measure, Parameter_Value, Positive_Length_Measure, Positive_Plane_Angle_Measure, Solid_Angle_Measure, Volume_Measure)"), // Description + (SelectCreator) create_SdaiMeasure_value); // Creator function + s_config_control_design->AddType(config_control_designt_measure_value); + config_control_designt_person_organization_select = new SelectTypeDescriptor ( + ~(0), //unique elements, + "Person_Organization_Select", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Person_And_Organization)"), // Description + (SelectCreator) create_SdaiPerson_organization_select); // Creator function + s_config_control_design->AddType(config_control_designt_person_organization_select); + config_control_designt_preferred_surface_curve_representation = new EnumTypeDescriptor ( + "Preferred_Surface_Curve_Representation", // Name + sdaiENUMERATION, // FundamentalType + s_config_control_design, // Originating Schema + "ENUMERATION of (pcurve_s2, pcurve_s1, curve_3d)", // Description + (EnumCreator) create_SdaiPreferred_surface_curve_representation_var); // Creator function + s_config_control_design->AddType(config_control_designt_preferred_surface_curve_representation); + config_control_designt_dimension_count = new TypeDescriptor ( + "Dimension_Count", // Name + sdaiINTEGER, // FundamentalType + s_config_control_design, // Originating Schema + "INTEGER"); // Description + s_config_control_design->AddType(config_control_designt_dimension_count); + config_control_designt_dimension_count->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SELF > 0);\n"); + config_control_designt_dimension_count->_where_rules->Append(wr); + config_control_designt_pcurve_or_surface = new SelectTypeDescriptor ( + ~(sdaiINSTANCE), //unique elements, + "Pcurve_Or_Surface", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Pcurve, Surface)"), // Description + (SelectCreator) create_SdaiPcurve_or_surface); // Creator function + s_config_control_design->AddType(config_control_designt_pcurve_or_surface); + config_control_designt_positive_length_measure = new TypeDescriptor ( + "Positive_Length_Measure", // Name + REFERENCE_TYPE, // FundamentalType + s_config_control_design, // Originating Schema + "length_measure"); // Description + s_config_control_design->AddType(config_control_designt_positive_length_measure); + config_control_designt_positive_length_measure->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SELF > 0);\n"); + config_control_designt_positive_length_measure->_where_rules->Append(wr); + config_control_designt_b_spline_curve_form = new EnumTypeDescriptor ( + "B_Spline_Curve_Form", // Name + sdaiENUMERATION, // FundamentalType + s_config_control_design, // Originating Schema + "ENUMERATION of (elliptic_arc, polyline_form, parabolic_arc, circular_arc, unspecified, hyperbolic_arc)", // Description + (EnumCreator) create_SdaiB_spline_curve_form_var); // Creator function + s_config_control_design->AddType(config_control_designt_b_spline_curve_form); + config_control_designt_hour_in_day = new TypeDescriptor ( + "Hour_In_Day", // Name + sdaiINTEGER, // FundamentalType + s_config_control_design, // Originating Schema + "INTEGER"); // Description + s_config_control_design->AddType(config_control_designt_hour_in_day); + config_control_designt_hour_in_day->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: ((0 <= SELF) AND (SELF < 24));\n"); + config_control_designt_hour_in_day->_where_rules->Append(wr); + config_control_designt_classified_item = new SelectTypeDescriptor ( + ~(sdaiINSTANCE), //unique elements, + "Classified_Item", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Product_Definition_Formation, Assembly_Component_Usage)"), // Description + (SelectCreator) create_SdaiClassified_item); // Creator function + s_config_control_design->AddType(config_control_designt_classified_item); + config_control_designt_si_unit_name = new EnumTypeDescriptor ( + "Si_Unit_Name", // Name + sdaiENUMERATION, // FundamentalType + s_config_control_design, // Originating Schema + "ENUMERATION of (hertz, degree_celsius, siemens, sievert, lux, watt, ohm, second, becquerel, pascal, henry, tesla, volt, joule, kelvin, ampere, gram, steradian, mole, lumen, gray, candela, farad, radian, newton, metre, weber, coulomb)", // Description + (EnumCreator) create_SdaiSi_unit_name_var); // Creator function + s_config_control_design->AddType(config_control_designt_si_unit_name); + config_control_designt_day_in_month_number = new TypeDescriptor ( + "Day_In_Month_Number", // Name + sdaiINTEGER, // FundamentalType + s_config_control_design, // Originating Schema + "INTEGER"); // Description + s_config_control_design->AddType(config_control_designt_day_in_month_number); + config_control_designt_trimming_preference = new EnumTypeDescriptor ( + "Trimming_Preference", // Name + sdaiENUMERATION, // FundamentalType + s_config_control_design, // Originating Schema + "ENUMERATION of (parameter, unspecified, cartesian)", // Description + (EnumCreator) create_SdaiTrimming_preference_var); // Creator function + s_config_control_design->AddType(config_control_designt_trimming_preference); + config_control_designt_vector_or_direction = new SelectTypeDescriptor ( + ~(sdaiINSTANCE), //unique elements, + "Vector_Or_Direction", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Vector, Direction)"), // Description + (SelectCreator) create_SdaiVector_or_direction); // Creator function + s_config_control_design->AddType(config_control_designt_vector_or_direction); + config_control_designt_wireframe_model = new SelectTypeDescriptor ( + ~(sdaiINSTANCE), //unique elements, + "Wireframe_Model", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Shell_Based_Wireframe_Model, Edge_Based_Wireframe_Model)"), // Description + (SelectCreator) create_SdaiWireframe_model); // Creator function + s_config_control_design->AddType(config_control_designt_wireframe_model); + config_control_designt_volume_measure = new TypeDescriptor ( + "Volume_Measure", // Name + sdaiREAL, // FundamentalType + s_config_control_design, // Originating Schema + "REAL"); // Description + s_config_control_design->AddType(config_control_designt_volume_measure); + config_control_designt_geometric_set_select = new SelectTypeDescriptor ( + ~(sdaiINSTANCE), //unique elements, + "Geometric_Set_Select", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Point, Curve, Surface)"), // Description + (SelectCreator) create_SdaiGeometric_set_select); // Creator function + s_config_control_design->AddType(config_control_designt_geometric_set_select); + config_control_designt_positive_plane_angle_measure = new TypeDescriptor ( + "Positive_Plane_Angle_Measure", // Name + REFERENCE_TYPE, // FundamentalType + s_config_control_design, // Originating Schema + "plane_angle_measure"); // Description + s_config_control_design->AddType(config_control_designt_positive_plane_angle_measure); + config_control_designt_positive_plane_angle_measure->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SELF > 0);\n"); + config_control_designt_positive_plane_angle_measure->_where_rules->Append(wr); + config_control_designt_start_request_item = new SelectTypeDescriptor ( + ~(0), //unique elements, + "Start_Request_Item", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Product_Definition_Formation)"), // Description + (SelectCreator) create_SdaiStart_request_item); // Creator function + s_config_control_design->AddType(config_control_designt_start_request_item); + config_control_designt_b_spline_surface_form = new EnumTypeDescriptor ( + "B_Spline_Surface_Form", // Name + sdaiENUMERATION, // FundamentalType + s_config_control_design, // Originating Schema + "ENUMERATION of (surf_of_linear_extrusion, plane_surf, generalised_cone, toroidal_surf, conical_surf, spherical_surf, unspecified, ruled_surf, surf_of_revolution, cylindrical_surf, quadric_surf)", // Description + (EnumCreator) create_SdaiB_spline_surface_form_var); // Creator function + s_config_control_design->AddType(config_control_designt_b_spline_surface_form); + config_control_designt_person_organization_item = new SelectTypeDescriptor ( + ~(sdaiINSTANCE), //unique elements, + "Person_Organization_Item", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Change, Start_Work, Change_Request, Start_Request, Configuration_Item, Product, Product_Definition_Formation, Product_Definition, Contract, Security_Classification)"), // Description + (SelectCreator) create_SdaiPerson_organization_item); // Creator function + s_config_control_design->AddType(config_control_designt_person_organization_item); + config_control_designt_date_time_item = new SelectTypeDescriptor ( + ~(sdaiINSTANCE), //unique elements, + "Date_Time_Item", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Product_Definition, Change_Request, Start_Request, Change, Start_Work, Approval_Person_Organization, Contract, Security_Classification, Certification)"), // Description + (SelectCreator) create_SdaiDate_time_item); // Creator function + s_config_control_design->AddType(config_control_designt_date_time_item); + config_control_designt_shell = new SelectTypeDescriptor ( + ~(sdaiINSTANCE), //unique elements, + "Shell", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Open_Shell, Closed_Shell, Vertex_Shell, Wire_Shell)"), // Description + (SelectCreator) create_SdaiShell); // Creator function + s_config_control_design->AddType(config_control_designt_shell); + config_control_designt_transformation = new SelectTypeDescriptor ( + ~(sdaiINSTANCE), //unique elements, + "Transformation", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Item_Defined_Transformation, Functionally_Defined_Transformation)"), // Description + (SelectCreator) create_SdaiTransformation); // Creator function + s_config_control_design->AddType(config_control_designt_transformation); + config_control_designt_day_in_week_number = new TypeDescriptor ( + "Day_In_Week_Number", // Name + sdaiINTEGER, // FundamentalType + s_config_control_design, // Originating Schema + "INTEGER"); // Description + s_config_control_design->AddType(config_control_designt_day_in_week_number); + config_control_designt_day_in_week_number->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: ((1 <= SELF) AND (SELF <= 7));\n"); + config_control_designt_day_in_week_number->_where_rules->Append(wr); + config_control_designt_boolean_operand = new SelectTypeDescriptor ( + ~(0), //unique elements, + "Boolean_Operand", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Solid_Model)"), // Description + (SelectCreator) create_SdaiBoolean_operand); // Creator function + s_config_control_design->AddType(config_control_designt_boolean_operand); + config_control_designt_certified_item = new SelectTypeDescriptor ( + ~(0), //unique elements, + "Certified_Item", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Supplied_Part_Relationship)"), // Description + (SelectCreator) create_SdaiCertified_item); // Creator function + s_config_control_design->AddType(config_control_designt_certified_item); + config_control_designt_date_time_select = new SelectTypeDescriptor ( + ~(0), //unique elements, + "Date_Time_Select", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Date_And_Time)"), // Description + (SelectCreator) create_SdaiDate_time_select); // Creator function + s_config_control_design->AddType(config_control_designt_date_time_select); + config_control_designt_solid_angle_measure = new TypeDescriptor ( + "Solid_Angle_Measure", // Name + sdaiREAL, // FundamentalType + s_config_control_design, // Originating Schema + "REAL"); // Description + s_config_control_design->AddType(config_control_designt_solid_angle_measure); + config_control_designt_curve_on_surface = new SelectTypeDescriptor ( + ~(sdaiINSTANCE), //unique elements, + "Curve_On_Surface", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Pcurve, Surface_Curve, Composite_Curve_On_Surface)"), // Description + (SelectCreator) create_SdaiCurve_on_surface); // Creator function + s_config_control_design->AddType(config_control_designt_curve_on_surface); + config_control_designt_trimming_select = new SelectTypeDescriptor ( + ~(0), //unique elements, + "Trimming_Select", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Cartesian_Point, Parameter_Value)"), // Description + (SelectCreator) create_SdaiTrimming_select); // Creator function + s_config_control_design->AddType(config_control_designt_trimming_select); + config_control_designt_ahead_or_behind = new EnumTypeDescriptor ( + "Ahead_Or_Behind", // Name + sdaiENUMERATION, // FundamentalType + s_config_control_design, // Originating Schema + "ENUMERATION of (ahead, behind)", // Description + (EnumCreator) create_SdaiAhead_or_behind_var); // Creator function + s_config_control_design->AddType(config_control_designt_ahead_or_behind); + config_control_designt_contracted_item = new SelectTypeDescriptor ( + ~(0), //unique elements, + "Contracted_Item", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Product_Definition_Formation)"), // Description + (SelectCreator) create_SdaiContracted_item); // Creator function + s_config_control_design->AddType(config_control_designt_contracted_item); + config_control_designt_day_in_year_number = new TypeDescriptor ( + "Day_In_Year_Number", // Name + sdaiINTEGER, // FundamentalType + s_config_control_design, // Originating Schema + "INTEGER"); // Description + s_config_control_design->AddType(config_control_designt_day_in_year_number); + config_control_designt_mass_measure = new TypeDescriptor ( + "Mass_Measure", // Name + sdaiREAL, // FundamentalType + s_config_control_design, // Originating Schema + "REAL"); // Description + s_config_control_design->AddType(config_control_designt_mass_measure); + config_control_designt_descriptive_measure = new TypeDescriptor ( + "Descriptive_Measure", // Name + sdaiSTRING, // FundamentalType + s_config_control_design, // Originating Schema + "STRING"); // Description + s_config_control_design->AddType(config_control_designt_descriptive_measure); + config_control_designt_area_measure = new TypeDescriptor ( + "Area_Measure", // Name + sdaiREAL, // FundamentalType + s_config_control_design, // Originating Schema + "REAL"); // Description + s_config_control_design->AddType(config_control_designt_area_measure); + config_control_designt_month_in_year_number = new TypeDescriptor ( + "Month_In_Year_Number", // Name + sdaiINTEGER, // FundamentalType + s_config_control_design, // Originating Schema + "INTEGER"); // Description + s_config_control_design->AddType(config_control_designt_month_in_year_number); + config_control_designt_month_in_year_number->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: ((1 <= SELF) AND (SELF <= 12));\n"); + config_control_designt_month_in_year_number->_where_rules->Append(wr); + config_control_designt_source = new EnumTypeDescriptor ( + "Source", // Name + sdaiENUMERATION, // FundamentalType + s_config_control_design, // Originating Schema + "ENUMERATION of (bought, not_known, made)", // Description + (EnumCreator) create_SdaiSource_var); // Creator function + s_config_control_design->AddType(config_control_designt_source); + config_control_designt_unit = new SelectTypeDescriptor ( + ~(0), //unique elements, + "Unit", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Named_Unit)"), // Description + (SelectCreator) create_SdaiUnit); // Creator function + s_config_control_design->AddType(config_control_designt_unit); + config_control_designt_reversible_topology = new SelectTypeDescriptor ( + ~(sdaiINSTANCE | sdaiAGGR), //unique elements, + "Reversible_Topology", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Reversible_Topology_Item, List_Of_Reversible_Topology_Item, Set_Of_Reversible_Topology_Item)"), // Description + (SelectCreator) create_SdaiReversible_topology); // Creator function + s_config_control_design->AddType(config_control_designt_reversible_topology); + config_control_designt_work_item = new SelectTypeDescriptor ( + ~(0), //unique elements, + "Work_Item", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Product_Definition_Formation)"), // Description + (SelectCreator) create_SdaiWork_item); // Creator function + s_config_control_design->AddType(config_control_designt_work_item); + config_control_designt_shape_definition = new SelectTypeDescriptor ( + ~(sdaiINSTANCE), //unique elements, + "Shape_Definition", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Product_Definition_Shape, Shape_Aspect, Shape_Aspect_Relationship)"), // Description + (SelectCreator) create_SdaiShape_definition); // Creator function + s_config_control_design->AddType(config_control_designt_shape_definition); + config_control_designt_second_in_minute = new TypeDescriptor ( + "Second_In_Minute", // Name + sdaiREAL, // FundamentalType + s_config_control_design, // Originating Schema + "REAL"); // Description + s_config_control_design->AddType(config_control_designt_second_in_minute); + config_control_designt_second_in_minute->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: ((0 <= SELF) AND (SELF < 60));\n"); + config_control_designt_second_in_minute->_where_rules->Append(wr); + config_control_designt_label = new TypeDescriptor ( + "Label", // Name + sdaiSTRING, // FundamentalType + s_config_control_design, // Originating Schema + "STRING"); // Description + s_config_control_design->AddType(config_control_designt_label); + config_control_designt_context_dependent_measure = new TypeDescriptor ( + "Context_Dependent_Measure", // Name + sdaiREAL, // FundamentalType + s_config_control_design, // Originating Schema + "REAL"); // Description + s_config_control_design->AddType(config_control_designt_context_dependent_measure); + config_control_designt_supported_item = new SelectTypeDescriptor ( + ~(sdaiINSTANCE), //unique elements, + "Supported_Item", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Action_Directive, Action, Action_Method)"), // Description + (SelectCreator) create_SdaiSupported_item); // Creator function + s_config_control_design->AddType(config_control_designt_supported_item); + config_control_designt_si_prefix = new EnumTypeDescriptor ( + "Si_Prefix", // Name + sdaiENUMERATION, // FundamentalType + s_config_control_design, // Originating Schema + "ENUMERATION of (exa, pico, mega, femto, atto, centi, nano, hecto, micro, tera, giga, milli, peta, deci, kilo, deca)", // Description + (EnumCreator) create_SdaiSi_prefix_var); // Creator function + s_config_control_design->AddType(config_control_designt_si_prefix); + config_control_designt_length_measure = new TypeDescriptor ( + "Length_Measure", // Name + sdaiREAL, // FundamentalType + s_config_control_design, // Originating Schema + "REAL"); // Description + s_config_control_design->AddType(config_control_designt_length_measure); + config_control_designt_approved_item = new SelectTypeDescriptor ( + ~(sdaiINSTANCE), //unique elements, + "Approved_Item", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Product_Definition_Formation, Product_Definition, Configuration_Effectivity, Configuration_Item, Security_Classification, Change_Request, Change, Start_Request, Start_Work, Certification, Contract)"), // Description + (SelectCreator) create_SdaiApproved_item); // Creator function + s_config_control_design->AddType(config_control_designt_approved_item); + config_control_designt_count_measure = new TypeDescriptor ( + "Count_Measure", // Name + sdaiNUMBER, // FundamentalType + s_config_control_design, // Originating Schema + "NUMBER"); // Description + s_config_control_design->AddType(config_control_designt_count_measure); + config_control_designt_surface_model = new SelectTypeDescriptor ( + ~(0), //unique elements, + "Surface_Model", // Name + sdaiSELECT, // FundamentalType + s_config_control_design, // Originating Schema + (char*)("SELECT (Shell_Based_Surface_Model)"), // Description + (SelectCreator) create_SdaiSurface_model); // Creator function + s_config_control_design->AddType(config_control_designt_surface_model); + + config_control_designt_list_of_reversible_topology_item = new ListTypeDescriptor ( + "List_Of_Reversible_Topology_Item", // Name + LIST_TYPE, // FundamentalType + s_config_control_design, // Originating Schema + "LIST [0:?] OF reversible_topology_item", // Description + (AggregateCreator) create_SdaiList_of_reversible_topology_item); // Creator function + + s_config_control_design->AddType(config_control_designt_list_of_reversible_topology_item); + + // ***** Initialize the Entities + config_control_designe_representation_item = new EntityDescriptor( + "Representation_Item", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiRepresentation_item ); + s_config_control_design->AddEntity(config_control_designe_representation_item); + config_control_designe_representation_item->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SIZEOF\n\t(using_representations\n\t(SELF)) > 0);\n"); + config_control_designe_representation_item->_where_rules->Append(wr); + config_control_designe_geometric_representation_item = new EntityDescriptor( + "Geometric_Representation_Item", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiGeometric_representation_item ); + s_config_control_design->AddEntity(config_control_designe_geometric_representation_item); + config_control_designe_geometric_representation_item->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SIZEOF\n\t(QUERY \n\t( using_rep <* using_representations\n\t(SELF) | \n\t(NOT \n\t( 'CONFIG_CONTROL_DESIGN.GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF\n\t( using_rep.context_of_items))) )) = 0);\n"); + config_control_designe_geometric_representation_item->_where_rules->Append(wr); + config_control_designe_functionally_defined_transformation = new EntityDescriptor( + "Functionally_Defined_Transformation", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiFunctionally_defined_transformation ); + s_config_control_design->AddEntity(config_control_designe_functionally_defined_transformation); + config_control_designe_cartesian_transformation_operator = new EntityDescriptor( + "Cartesian_Transformation_Operator", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiCartesian_transformation_operator ); + s_config_control_design->AddEntity(config_control_designe_cartesian_transformation_operator); + config_control_designe_cartesian_transformation_operator->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (scl > 0);\n"); + config_control_designe_cartesian_transformation_operator->_where_rules->Append(wr); + config_control_designe_cartesian_transformation_operator_3d = new EntityDescriptor( + "Cartesian_Transformation_Operator_3d", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiCartesian_transformation_operator_3d ); + s_config_control_design->AddEntity(config_control_designe_cartesian_transformation_operator_3d); + config_control_designe_cartesian_transformation_operator_3d->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SELF\\cartesian_transformation_operator.dim = 3);\n"); + config_control_designe_cartesian_transformation_operator_3d->_where_rules->Append(wr); + config_control_designe_versioned_action_request = new EntityDescriptor( + "Versioned_Action_Request", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiVersioned_action_request ); + s_config_control_design->AddEntity(config_control_designe_versioned_action_request); + config_control_designe_representation = new EntityDescriptor( + "Representation", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiRepresentation ); + s_config_control_design->AddEntity(config_control_designe_representation); + config_control_designe_shape_representation = new EntityDescriptor( + "Shape_Representation", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiShape_representation ); + s_config_control_design->AddEntity(config_control_designe_shape_representation); + config_control_designe_manifold_surface_shape_representation = new EntityDescriptor( + "Manifold_Surface_Shape_Representation", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiManifold_surface_shape_representation ); + s_config_control_design->AddEntity(config_control_designe_manifold_surface_shape_representation); + config_control_designe_manifold_surface_shape_representation->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SIZEOF\n\t(QUERY \n\t( it <* items | \n\t(NOT \n\t(SIZEOF\n\t([ 'CONFIG_CONTROL_DESIGN.SHELL_BASED_SURFACE_MODEL', 'CONFIG_CONTROL_DESIGN.MAPPED_ITEM', 'CONFIG_CONTROL_DESIGN.AXIS2_PLACEMENT_3D'] * TYPEOF\n\t(it)) = 1)) )) = 0);\n"); + config_control_designe_manifold_surface_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr2: (SIZEOF\n\t(QUERY \n\t( it <* items | \n\t(SIZEOF\n\t([ 'CONFIG_CONTROL_DESIGN.SHELL_BASED_SURFACE_MODEL', 'CONFIG_CONTROL_DESIGN.MAPPED ITEM'] * TYPEOF\n\t(it)) = 1) )) > 0);\n"); + config_control_designe_manifold_surface_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr3: (SIZEOF\n\t(QUERY \n\t( mi <* QUERY \n\t( it <* items | \n\t( 'CONFIG_CONTROL_DESIGN.MAPPED ITEM' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t( 'CONFIG_CONTROL_DESIGN.MANIFOLD_SURFACE_SHAPE_REPRESENTATION' IN TYPEOF\n\t(mi\\mapped_item.mapping_source.mapped_representation))) )) = 0);\n"); + config_control_designe_manifold_surface_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr4: (SIZEOF\n\t(QUERY \n\t( sbsm <* QUERY \n\t( it <* items | \n\t( 'CONFIG_CONTROL_DESIGN.SHELL_BASED_SURFACE_MODEL' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( sh <* sbsm\\shell_based_surface_model. sbsm_boundary | \n\t(NOT \n\t(SIZEOF\n\t(['CONFIG_CONTROL_DESIGN.OPEN_SHELL', 'CONFIG_CONTROL_DESIGN.CLOSED_SHELL'] * TYPEOF\n\t(sh)) = 1)) )) = 0)) )) = 0);\n"); + config_control_designe_manifold_surface_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr5: (SIZEOF\n\t(QUERY \n\t( sbsm <* QUERY \n\t( it <* items | \n\t( 'CONFIG_CONTROL_DESIGN.SHELL_BASED_SURFACE_MODEL' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( cfs <* sbsm\\shell_based_surface_model. sbsm_boundary | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( fa <* cfs.cfs_faces | \n\t(NOT \n\t( SIZEOF\n\t(['CONFIG_CONTROL_DESIGN.FACE_SURFACE', 'CONFIG_CONTROL_DESIGN.ORIENTED_FACE'] * TYPEOF\n\t(fa)) = 1)) )) = 0)) )) = 0)) )) = 0);\n"); + config_control_designe_manifold_surface_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr6: (SIZEOF\n\t(QUERY \n\t( sbsm <* QUERY \n\t( it <* items | \n\t( 'CONFIG_CONTROL_DESIGN.SHELL_BASED_SURFACE_MODEL' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( cfs <* sbsm\\shell_based_surface_model. sbsm_boundary | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( f_sf <* QUERY \n\t( fa <* cfs. cfs_faces | \n\t('CONFIG_CONTROL_DESIGN.FACE_SURFACE' IN TYPEOF\n\t(fa)) ) | \n\t(NOT \n\t(\n\t('CONFIG_CONTROL_DESIGN.ADVANCED_FACE' IN TYPEOF\n\t(f_sf)) OR \n\t(SIZEOF\n\t(['CONFIG_CONTROL_DESIGN.OFFSET_SURFACE', 'CONFIG_CONTROL_DESIGN.SURFACE_REPLICA'] * TYPEOF\n\t(f_sf\\face_surface .face_geometry)) = 1))) )) = 0)) )) = 0)) )) = 0);\n"); + config_control_designe_manifold_surface_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr7: (SIZEOF\n\t(QUERY \n\t( sbsm <* QUERY \n\t( it <* items | \n\t( 'CONFIG_CONTROL_DESIGN.SHELL_BASED_SURFACE_MODEL' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( cfs <* sbsm\\shell_based_surface_model. sbsm_boundary | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( fa <* cfs.cfs_faces | \n\t(NOT \n\t(\n\t( 'CONFIG_CONTROL_DESIGN.ADVANCED_FACE' IN TYPEOF\n\t(fa)) OR basis_surface_check\n\t(fa\\face_surface.face_geometry, 'CONFIG_CONTROL_DESIGN'))) )) = 0)) )) = 0)) )) = 0);\n"); + config_control_designe_manifold_surface_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr8: (SIZEOF\n\t(QUERY \n\t( sbsm <* QUERY \n\t( it <* items | \n\t( 'CONFIG_CONTROL_DESIGN.SHELL_BASED_SURFACE_MODEL' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( cfs <* sbsm\\shell_based_surface_model. sbsm_boundary | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( fa <* cfs.cfs_faces | \n\t(NOT \n\t(\n\t( 'CONFIG_CONTROL_DESIGN.ADVANCED_FACE' IN TYPEOF\n\t(fa)) OR \n\t(SIZEOF\n\t( QUERY \n\t( bnds <* fa.bounds | \n\t(NOT \n\t(SIZEOF\n\t([ 'CONFIG_CONTROL_DESIGN.EDGE_LOOP', 'CONFIG_CONTROL_DESIGN.VERTEX_LOOP'] * TYPEOF\n\t(bnds.bound)) = 1)) )) = 0))) )) = 0)) )) = 0)) )) = 0);\n"); + config_control_designe_manifold_surface_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr9: (SIZEOF\n\t(QUERY \n\t( sbsm <* QUERY \n\t( it <* items | \n\t( 'CONFIG_CONTROL_DESIGN.SHELL_BASED_SURFACE_MODEL' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( cfs <* sbsm\\shell_based_surface_model. sbsm_boundary | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( fa <* cfs.cfs_faces | \n\t(NOT \n\t(\n\t( 'CONFIG_CONTROL_DESIGN.ADVANCED_FACE' IN TYPEOF\n\t(fa)) OR \n\t(SIZEOF\n\t( QUERY \n\t( elp_fbnds <* QUERY \n\t( bnds <* fa.bounds | \n\t( 'CONFIG_CONTROL_DESIGN.EDGE_LOOP' IN TYPEOF\n\t(bnds)) ) | \n\t(NOT \n\t( SIZEOF\n\t(QUERY \n\t( oe <* elp_fbnds.bound\\path.edge_list | \n\t(NOT \n\t( 'CONFIG_CONTROL_DESIGN.EDGE_CURVE' IN TYPEOF\n\t(oe.edge_element))) )) = 0)) )) = 0))) )) = 0)) )) = 0)) )) = 0);\n"); + config_control_designe_manifold_surface_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr10: (SIZEOF\n\t(QUERY \n\t( sbsm <* QUERY \n\t( it <* items | \n\t( 'CONFIG_CONTROL_DESIGN.SHELL_BASED_SURFACE_MODEL' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( cfs <* sbsm\\shell_based_surface_model. sbsm_boundary | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( fa <* cfs.cfs_faces | \n\t(NOT \n\t(\n\t( 'CONFIG_CONTROL_DESIGN.ADVANCED_FACE' IN TYPEOF\n\t(fa)) OR \n\t(SIZEOF\n\t( QUERY \n\t( elp_fbnds <* QUERY \n\t( bnds <* fa.bounds | \n\t( 'CONFIG_CONTROL_DESIGN.EDGE LOOP' IN TYPEOF\n\t(bnds.bound)) ) | \n\t(NOT \n\t( SIZEOF\n\t(QUERY \n\t( oe_cv <* QUERY \n\t( oe <* elp_fbnds.bound\\path. edge_list | \n\t('CONFIG_CONTROL_DESIGN.EDGE_CURVE' IN TYPEOF\n\t(oe. edge_element)) ) | \n\t(NOT \n\t(SIZEOF\n\t([ 'CONFIG_CONTROL_DESIGN.CURVE_REPLICA', 'CONFIG_CONTROL_DESIGN.OFFSET_CURVE_3D', 'CONFIG_CONTROL_DESIGN.SURFACE_CURVE'] * TYPEOF\n\t(oe_cv.edge_element\\ edge_curve.edge_geometry)) = 1)) )) = 0)) )) = 0))) )) = 0)) )) = 0)) )) = 0);\n"); + config_control_designe_manifold_surface_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr11: (SIZEOF\n\t(QUERY \n\t( sbsm <* QUERY \n\t( it <* items | \n\t( 'CONFIG_CONTROL_DESIGN.SHELL_BASED_SURFACE_MODEL' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( cfs <* sbsm\\shell_based_surface_model. sbsm_boundary | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( fa <* cfs.cfs_faces | \n\t(NOT \n\t(\n\t( 'CONFIG_CONTROL_DESIGN.ADVANCED_FACE' IN TYPEOF\n\t(fa)) OR \n\t(SIZEOF\n\t( QUERY \n\t( elp_fbnds <* QUERY \n\t( bnds <* fa.bounds | \n\t( 'CONFIG_CONTROL_DESIGN.EDGE_LOOP' IN TYPEOF\n\t(bnds.bound)) ) | \n\t(NOT \n\t( SIZEOF\n\t(QUERY \n\t( oe <* elp_fbnds.bound\\path.edge_list | \n\t(NOT basis_curve_check\n\t(oe.edge_element\\edge_curve.edge_geometry, 'CONFIG_CONTROL_DESIGN')) )) = 0)) )) = 0))) )) = 0)) )) = 0)) )) = 0);\n"); + config_control_designe_manifold_surface_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr12: (SIZEOF\n\t(QUERY \n\t( sbsm <* QUERY \n\t( it <* items | \n\t( 'CONFIG_CONTROL_DESIGN.SHELL_BASED_SURFACE_MODEL' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( cfs <* sbsm\\shell_based_surface_model. sbsm_boundary | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( fa <* cfs.cfs_faces | \n\t(NOT \n\t(\n\t( 'CONFIG_CONTROL_DESIGN.ADVANCED_FACE' IN TYPEOF\n\t(fa)) OR \n\t(SIZEOF\n\t( QUERY \n\t( elp_fbnds <* QUERY \n\t( bnds <* fa.bounds | \n\t( 'CONFIG_CONTROL_DESIGN.EDGE_LOOP' IN TYPEOF\n\t(bnds)) ) | \n\t(NOT \n\t( SIZEOF\n\t(QUERY \n\t( oe <* elp_fbnds.bound\\path.edge_list | \n\t(NOT \n\t(\n\t( 'CONFIG_CONTROL_DESIGN.VERTEX_POINT' IN TYPEOF\n\t(oe.edge_element. edge_start)) AND \n\t('CONFIG_CONTROL_DESIGN.VERTEX_POINT' IN TYPEOF\n\t(oe .edge_element.edge_end)))) )) = 0)) )) = 0))) )) = 0)) )) = 0)) )) = 0);\n"); + config_control_designe_manifold_surface_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr13: (SIZEOF\n\t(QUERY \n\t( sbsm <* QUERY \n\t( it <* items | \n\t( 'CONFIG_CONTROL_DESIGN.SHELL_BASED_SURFACE_MODEL' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( cfs <* sbsm\\shell_based_surface_model. sbsm_boundary | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( fa <* cfs.cfs_faces | \n\t(NOT \n\t(\n\t( 'CONFIG_CONTROL_DESIGN.ADVANCED_FACE' IN TYPEOF\n\t(fa)) OR \n\t(SIZEOF\n\t( QUERY \n\t( elp_fbnds <* QUERY \n\t( bnds <* fa.bounds | \n\t( 'CONFIG_CONTROL_DESIGN.EDGE_LOOP' IN TYPEOF\n\t(bnds.bound)) ) | \n\t(NOT \n\t( SIZEOF\n\t(QUERY \n\t( oe <* elp_fbnds.bound\\path.edge_list | \n\t(NOT \n\t(\n\t( SIZEOF\n\t(['CONFIG_CONTROL_DESIGN.CARTESIAN_POINT', 'CONFIG_CONTROL_DESIGN.DEGENERATE_PCURVE', 'CONFIG_CONTROL_DESIGN.POINT_ON_CURVE', 'CONFIG_CONTROL_DESIGN.POINT_ON_SURFACE'] * TYPEOF\n\t(oe.edge_element. edge_start\\vertex_point.vertex_geometry)) = 1) AND \n\t(SIZEOF\n\t([ 'CONFIG_CONTROL_DESIGN.CARTESIAN_POINT', 'CONFIG_CONTROL_DESIGN.DEGENERATE_PCURVE', 'CONFIG_CONTROL_DESIGN.POINT_ON_CURVE', 'CONFIG_CONTROL_DESIGN.POINT_ON_SURFACE'] * TYPEOF\n\t(oe.edge_element. edge_end\\vertex_point.vertex_geometry)) = 1))) )) = 0)) )) = 0))) )) = 0)) )) = 0)) )) = 0);\n"); + config_control_designe_manifold_surface_shape_representation->_where_rules->Append(wr); + config_control_designe_certification = new EntityDescriptor( + "Certification", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiCertification ); + s_config_control_design->AddEntity(config_control_designe_certification); + config_control_designe_product_definition_relationship = new EntityDescriptor( + "Product_Definition_Relationship", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiProduct_definition_relationship ); + s_config_control_design->AddEntity(config_control_designe_product_definition_relationship); + config_control_designe_product_definition_usage = new EntityDescriptor( + "Product_Definition_Usage", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiProduct_definition_usage ); + s_config_control_design->AddEntity(config_control_designe_product_definition_usage); + config_control_designe_product_definition_usage->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (acyclic_product_definition_relationship\n\t(SELF,[SELF\\ product_definition_relationship.related_product_definition], 'CONFIG_CONTROL_DESIGN.PRODUCT_DEFINITION_RELATIONSHIP.' + 'RELATED_PRODUCT_DEFINITION'));\n"); + config_control_designe_product_definition_usage->_where_rules->Append(wr); + config_control_designe_product_definition_usage->_uniqueness_rules = new Uniqueness_rule__set; + ur = new Uniqueness_rule("UR1 : id, relating_product_definition, related_product_definition;\n"); + config_control_designe_product_definition_usage->_uniqueness_rules->Append(ur); + config_control_designe_assembly_component_usage = new EntityDescriptor( + "Assembly_Component_Usage", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiAssembly_component_usage ); + s_config_control_design->AddEntity(config_control_designe_assembly_component_usage); + config_control_designe_quantified_assembly_component_usage = new EntityDescriptor( + "Quantified_Assembly_Component_Usage", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiQuantified_assembly_component_usage ); + s_config_control_design->AddEntity(config_control_designe_quantified_assembly_component_usage); + config_control_designe_solid_model = new EntityDescriptor( + "Solid_Model", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiSolid_model ); + s_config_control_design->AddEntity(config_control_designe_solid_model); + config_control_designe_manifold_solid_brep = new EntityDescriptor( + "Manifold_Solid_Brep", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiManifold_solid_brep ); + s_config_control_design->AddEntity(config_control_designe_manifold_solid_brep); + config_control_designe_faceted_brep = new EntityDescriptor( + "Faceted_Brep", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiFaceted_brep ); + s_config_control_design->AddEntity(config_control_designe_faceted_brep); + config_control_designe_action_directive = new EntityDescriptor( + "Action_Directive", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiAction_directive ); + s_config_control_design->AddEntity(config_control_designe_action_directive); + config_control_designe_named_unit = new EntityDescriptor( + "Named_Unit", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiNamed_unit ); + s_config_control_design->AddEntity(config_control_designe_named_unit); + config_control_designe_plane_angle_unit = new EntityDescriptor( + "Plane_Angle_Unit", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiPlane_angle_unit ); + s_config_control_design->AddEntity(config_control_designe_plane_angle_unit); + config_control_designe_plane_angle_unit->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (\n\t(SELF\\named_unit.dimensions.length_exponent = 0) AND \n\t(SELF\\named_unit. dimensions.mass_exponent = 0) AND \n\t(SELF\\named_unit.dimensions. time_exponent = 0) AND \n\t(SELF\\named_unit.dimensions. electric_current_exponent = 0) AND \n\t(SELF\\named_unit.dimensions. thermodynamic_temperature_exponent = 0) AND \n\t(SELF\\named_unit. dimensions.amount_of_substance_exponent = 0) AND \n\t(SELF\\named_unit. dimensions.luminous_intensity_exponent = 0));\n"); + config_control_designe_plane_angle_unit->_where_rules->Append(wr); + config_control_designe_measure_with_unit = new EntityDescriptor( + "Measure_With_Unit", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiMeasure_with_unit ); + s_config_control_design->AddEntity(config_control_designe_measure_with_unit); + config_control_designe_measure_with_unit->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (valid_units\n\t(SELF));\n"); + config_control_designe_measure_with_unit->_where_rules->Append(wr); + config_control_designe_area_measure_with_unit = new EntityDescriptor( + "Area_Measure_With_Unit", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiArea_measure_with_unit ); + s_config_control_design->AddEntity(config_control_designe_area_measure_with_unit); + config_control_designe_area_measure_with_unit->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: ('CONFIG_CONTROL_DESIGN.AREA_UNIT' IN TYPEOF\n\t(SELF\\measure_with_unit. unit_component));\n"); + config_control_designe_area_measure_with_unit->_where_rules->Append(wr); + config_control_designe_effectivity = new EntityDescriptor( + "Effectivity", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiEffectivity ); + s_config_control_design->AddEntity(config_control_designe_effectivity); + config_control_designe_serial_numbered_effectivity = new EntityDescriptor( + "Serial_Numbered_Effectivity", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiSerial_numbered_effectivity ); + s_config_control_design->AddEntity(config_control_designe_serial_numbered_effectivity); + config_control_designe_surface = new EntityDescriptor( + "Surface", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiSurface ); + s_config_control_design->AddEntity(config_control_designe_surface); + config_control_designe_offset_surface = new EntityDescriptor( + "Offset_Surface", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiOffset_surface ); + s_config_control_design->AddEntity(config_control_designe_offset_surface); + config_control_designe_placement = new EntityDescriptor( + "Placement", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiPlacement ); + s_config_control_design->AddEntity(config_control_designe_placement); + config_control_designe_axis2_placement_2d = new EntityDescriptor( + "Axis2_Placement_2d", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiAxis2_placement_2d ); + s_config_control_design->AddEntity(config_control_designe_axis2_placement_2d); + config_control_designe_axis2_placement_2d->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SELF\\geometric_representation_item.dim = 2);\n"); + config_control_designe_axis2_placement_2d->_where_rules->Append(wr); + config_control_designe_product_category = new EntityDescriptor( + "Product_Category", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiProduct_category ); + s_config_control_design->AddEntity(config_control_designe_product_category); + config_control_designe_product_related_product_category = new EntityDescriptor( + "Product_Related_Product_Category", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiProduct_related_product_category ); + s_config_control_design->AddEntity(config_control_designe_product_related_product_category); + config_control_designe_curve = new EntityDescriptor( + "Curve", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiCurve ); + s_config_control_design->AddEntity(config_control_designe_curve); + config_control_designe_conic = new EntityDescriptor( + "Conic", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiConic ); + s_config_control_design->AddEntity(config_control_designe_conic); + config_control_designe_hyperbola = new EntityDescriptor( + "Hyperbola", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiHyperbola ); + s_config_control_design->AddEntity(config_control_designe_hyperbola); + config_control_designe_address = new EntityDescriptor( + "Address", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiAddress ); + s_config_control_design->AddEntity(config_control_designe_address); + config_control_designe_address->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (EXISTS\n\t(internal_location) OR EXISTS\n\t(street_number) OR EXISTS\n\t(street) OR EXISTS\n\t(postal_box) OR EXISTS\n\t(town) OR EXISTS\n\t(region) OR EXISTS\n\t( postal_code) OR EXISTS\n\t(country) OR EXISTS\n\t(facsimile_number) OR EXISTS\n\t(telephone_number) OR EXISTS\n\t(electronic_mail_address) OR EXISTS\n\t(telex_number));\n"); + config_control_designe_address->_where_rules->Append(wr); + config_control_designe_organizational_address = new EntityDescriptor( + "Organizational_Address", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiOrganizational_address ); + s_config_control_design->AddEntity(config_control_designe_organizational_address); + config_control_designe_bounded_surface = new EntityDescriptor( + "Bounded_Surface", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiBounded_surface ); + s_config_control_design->AddEntity(config_control_designe_bounded_surface); + config_control_designe_b_spline_surface = new EntityDescriptor( + "B_Spline_Surface", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiB_spline_surface ); + s_config_control_design->AddEntity(config_control_designe_b_spline_surface); + config_control_designe_b_spline_surface->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (\n\t('CONFIG_CONTROL_DESIGN.UNIFORM_SURFACE' IN TYPEOF\n\t(SELF)) OR \n\t( 'CONFIG_CONTROL_DESIGN.QUASI_UNIFORM_SURFACE' IN TYPEOF\n\t(SELF)) OR \n\t( 'CONFIG_CONTROL_DESIGN.BEZIER_SURFACE' IN TYPEOF\n\t(SELF)) OR \n\t( 'CONFIG_CONTROL_DESIGN.B_SPLINE_SURFACE_WITH_KNOTS' IN TYPEOF\n\t(SELF)));\n"); + config_control_designe_b_spline_surface->_where_rules->Append(wr); + config_control_designe_uniform_surface = new EntityDescriptor( + "Uniform_Surface", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiUniform_surface ); + s_config_control_design->AddEntity(config_control_designe_uniform_surface); + config_control_designe_geometrically_bounded_surface_shape_representation = new EntityDescriptor( + "Geometrically_Bounded_Surface_Shape_Representation", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiGeometrically_bounded_surface_shape_representation ); + s_config_control_design->AddEntity(config_control_designe_geometrically_bounded_surface_shape_representation); + config_control_designe_geometrically_bounded_surface_shape_representation->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SIZEOF\n\t(QUERY \n\t( it <* items | \n\t(NOT \n\t(SIZEOF\n\t([ 'CONFIG_CONTROL_DESIGN.GEOMETRIC_SET', 'CONFIG_CONTROL_DESIGN.MAPPED_ITEM', 'CONFIG_CONTROL_DESIGN.AXIS2_PLACEMENT_3D'] * TYPEOF\n\t(it)) = 1)) )) = 0);\n"); + config_control_designe_geometrically_bounded_surface_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr2: (SIZEOF\n\t(QUERY \n\t( it <* items | \n\t(SIZEOF\n\t([ 'CONFIG_CONTROL_DESIGN.GEOMETRIC_SET', 'CONFIG_CONTROL_DESIGN.MAPPED_ITEM'] * TYPEOF\n\t(it)) = 1) )) > 0);\n"); + config_control_designe_geometrically_bounded_surface_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr3: (SIZEOF\n\t(QUERY \n\t( mi <* QUERY \n\t( it <* items | \n\t( 'CONFIG_CONTROL_DESIGN.MAPPED_ITEM' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t(\n\t( 'CONFIG_CONTROL_DESIGN.' + 'GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION') IN TYPEOF\n\t(mi\\ mapped_item.mapping_source.mapped_representation))) )) = 0);\n"); + config_control_designe_geometrically_bounded_surface_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr4: (SIZEOF\n\t(QUERY \n\t( gs <* QUERY \n\t( it <* items | \n\t( 'CONFIG_CONTROL_DESIGN.GEOMETRIC_SET' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t( SIZEOF\n\t(QUERY \n\t( pnt <* QUERY \n\t( gsel <* gs\\geometric_set.elements | \n\t( 'CONFIG_CONTROL_DESIGN.POINT' IN TYPEOF\n\t(gsel)) ) | \n\t(NOT gbsf_check_point\n\t(pnt,'CONFIG_CONTROL_DESIGN')) )) = 0)) )) = 0);\n"); + config_control_designe_geometrically_bounded_surface_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr5: (SIZEOF\n\t(QUERY \n\t( gs <* QUERY \n\t( it <* items | \n\t( 'CONFIG_CONTROL_DESIGN.GEOMETRIC_SET' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t( SIZEOF\n\t(QUERY \n\t( cv <* QUERY \n\t( gsel <* gs\\geometric_set.elements | \n\t( 'CONFIG_CONTROL_DESIGN.CURVE' IN TYPEOF\n\t(gsel)) ) | \n\t(NOT gbsf_check_curve\n\t(cv,'CONFIG_CONTROL_DESIGN')) )) = 0)) )) = 0);\n"); + config_control_designe_geometrically_bounded_surface_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr6: (SIZEOF\n\t(QUERY \n\t( gs <* QUERY \n\t( it <* items | \n\t( 'CONFIG_CONTROL_DESIGN.GEOMETRIC_SET' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t( SIZEOF\n\t(QUERY \n\t( sf <* QUERY \n\t( gsel <* gs\\geometric_set.elements | \n\t( 'CONFIG_CONTROL_DESIGN.SURFACE' IN TYPEOF\n\t(gsel)) ) | \n\t(NOT gbsf_check_surface\n\t(sf,'CONFIG_CONTROL_DESIGN')) )) = 0)) )) = 0);\n"); + config_control_designe_geometrically_bounded_surface_shape_representation->_where_rules->Append(wr); + config_control_designe_axis1_placement = new EntityDescriptor( + "Axis1_Placement", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiAxis1_placement ); + s_config_control_design->AddEntity(config_control_designe_axis1_placement); + config_control_designe_axis1_placement->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SELF\\geometric_representation_item.dim = 3);\n"); + config_control_designe_axis1_placement->_where_rules->Append(wr); + config_control_designe_bounded_curve = new EntityDescriptor( + "Bounded_Curve", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiBounded_curve ); + s_config_control_design->AddEntity(config_control_designe_bounded_curve); + config_control_designe_b_spline_curve = new EntityDescriptor( + "B_Spline_Curve", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiB_spline_curve ); + s_config_control_design->AddEntity(config_control_designe_b_spline_curve); + config_control_designe_b_spline_curve->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (\n\t('CONFIG_CONTROL_DESIGN.UNIFORM_CURVE' IN TYPEOF\n\t(SELF)) OR \n\t( 'CONFIG_CONTROL_DESIGN.QUASI_UNIFORM_CURVE' IN TYPEOF\n\t(SELF)) OR \n\t( 'CONFIG_CONTROL_DESIGN.BEZIER_CURVE' IN TYPEOF\n\t(SELF)) OR \n\t( 'CONFIG_CONTROL_DESIGN.B_SPLINE_CURVE_WITH_KNOTS' IN TYPEOF\n\t(SELF)));\n"); + config_control_designe_b_spline_curve->_where_rules->Append(wr); + config_control_designe_rational_b_spline_curve = new EntityDescriptor( + "Rational_B_Spline_Curve", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiRational_b_spline_curve ); + s_config_control_design->AddEntity(config_control_designe_rational_b_spline_curve); + config_control_designe_rational_b_spline_curve->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SIZEOF\n\t(weights_data) = SIZEOF\n\t(SELF\\b_spline_curve.control_points_list));\n"); + config_control_designe_rational_b_spline_curve->_where_rules->Append(wr); + wr = new Where_rule("wr2: (curve_weights_positive\n\t(SELF));\n"); + config_control_designe_rational_b_spline_curve->_where_rules->Append(wr); + config_control_designe_action_request_assignment = new EntityDescriptor( + "Action_Request_Assignment", s_config_control_design, SCLLOG(LTrue), SCLLOG(LFalse), + (Creator) create_SdaiAction_request_assignment ); + s_config_control_design->AddEntity(config_control_designe_action_request_assignment); + config_control_designe_topological_representation_item = new EntityDescriptor( + "Topological_Representation_Item", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiTopological_representation_item ); + s_config_control_design->AddEntity(config_control_designe_topological_representation_item); + config_control_designe_face_bound = new EntityDescriptor( + "Face_Bound", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiFace_bound ); + s_config_control_design->AddEntity(config_control_designe_face_bound); + config_control_designe_length_measure_with_unit = new EntityDescriptor( + "Length_Measure_With_Unit", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiLength_measure_with_unit ); + s_config_control_design->AddEntity(config_control_designe_length_measure_with_unit); + config_control_designe_length_measure_with_unit->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: ('CONFIG_CONTROL_DESIGN.LENGTH_UNIT' IN TYPEOF\n\t(SELF\\measure_with_unit. unit_component));\n"); + config_control_designe_length_measure_with_unit->_where_rules->Append(wr); + config_control_designe_dated_effectivity = new EntityDescriptor( + "Dated_Effectivity", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiDated_effectivity ); + s_config_control_design->AddEntity(config_control_designe_dated_effectivity); + config_control_designe_direction = new EntityDescriptor( + "Direction", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiDirection ); + s_config_control_design->AddEntity(config_control_designe_direction); + config_control_designe_direction->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SIZEOF\n\t(QUERY \n\t( tmp <* direction_ratios | \n\t(tmp <> 0) )) > 0);\n"); + config_control_designe_direction->_where_rules->Append(wr); + config_control_designe_next_assembly_usage_occurrence = new EntityDescriptor( + "Next_Assembly_Usage_Occurrence", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiNext_assembly_usage_occurrence ); + s_config_control_design->AddEntity(config_control_designe_next_assembly_usage_occurrence); + config_control_designe_edge = new EntityDescriptor( + "Edge", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiEdge ); + s_config_control_design->AddEntity(config_control_designe_edge); + config_control_designe_oriented_edge = new EntityDescriptor( + "Oriented_Edge", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiOriented_edge ); + s_config_control_design->AddEntity(config_control_designe_oriented_edge); + config_control_designe_oriented_edge->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (NOT \n\t('CONFIG_CONTROL_DESIGN.ORIENTED_EDGE' IN TYPEOF\n\t(SELF.edge_element)));\n"); + config_control_designe_oriented_edge->_where_rules->Append(wr); + config_control_designe_person = new EntityDescriptor( + "Person", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiPerson ); + s_config_control_design->AddEntity(config_control_designe_person); + config_control_designe_person->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (EXISTS\n\t(last_name) OR EXISTS\n\t(first_name));\n"); + config_control_designe_person->_where_rules->Append(wr); + config_control_designe_person->_uniqueness_rules = new Uniqueness_rule__set; + ur = new Uniqueness_rule("UR1 : id;\n"); + config_control_designe_person->_uniqueness_rules->Append(ur); + config_control_designe_document = new EntityDescriptor( + "Document", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiDocument ); + s_config_control_design->AddEntity(config_control_designe_document); + config_control_designe_document->_uniqueness_rules = new Uniqueness_rule__set; + ur = new Uniqueness_rule("UR1 : id;\n"); + config_control_designe_document->_uniqueness_rules->Append(ur); + config_control_designe_document_with_class = new EntityDescriptor( + "Document_With_Class", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiDocument_with_class ); + s_config_control_design->AddEntity(config_control_designe_document_with_class); + config_control_designe_conversion_based_unit = new EntityDescriptor( + "Conversion_Based_Unit", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiConversion_based_unit ); + s_config_control_design->AddEntity(config_control_designe_conversion_based_unit); + config_control_designe_point = new EntityDescriptor( + "Point", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiPoint ); + s_config_control_design->AddEntity(config_control_designe_point); + config_control_designe_point_on_surface = new EntityDescriptor( + "Point_On_Surface", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiPoint_on_surface ); + s_config_control_design->AddEntity(config_control_designe_point_on_surface); + config_control_designe_product_definition_formation = new EntityDescriptor( + "Product_Definition_Formation", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiProduct_definition_formation ); + s_config_control_design->AddEntity(config_control_designe_product_definition_formation); + config_control_designe_product_definition_formation->_uniqueness_rules = new Uniqueness_rule__set; + ur = new Uniqueness_rule("UR1 : id, of_product;\n"); + config_control_designe_product_definition_formation->_uniqueness_rules->Append(ur); + config_control_designe_person_and_organization_assignment = new EntityDescriptor( + "Person_And_Organization_Assignment", s_config_control_design, SCLLOG(LTrue), SCLLOG(LFalse), + (Creator) create_SdaiPerson_and_organization_assignment ); + s_config_control_design->AddEntity(config_control_designe_person_and_organization_assignment); + config_control_designe_cc_design_person_and_organization_assignment = new EntityDescriptor( + "Cc_Design_Person_And_Organization_Assignment", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiCc_design_person_and_organization_assignment ); + s_config_control_design->AddEntity(config_control_designe_cc_design_person_and_organization_assignment); + config_control_designe_cc_design_person_and_organization_assignment->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (cc_design_person_and_organization_correlation\n\t(SELF));\n"); + config_control_designe_cc_design_person_and_organization_assignment->_where_rules->Append(wr); + config_control_designe_offset_curve_3d = new EntityDescriptor( + "Offset_Curve_3d", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiOffset_curve_3d ); + s_config_control_design->AddEntity(config_control_designe_offset_curve_3d); + config_control_designe_offset_curve_3d->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (\n\t(basis_curve.dim = 3) AND \n\t(ref_direction.dim = 3));\n"); + config_control_designe_offset_curve_3d->_where_rules->Append(wr); + config_control_designe_approval = new EntityDescriptor( + "Approval", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiApproval ); + s_config_control_design->AddEntity(config_control_designe_approval); + config_control_designe_composite_curve = new EntityDescriptor( + "Composite_Curve", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiComposite_curve ); + s_config_control_design->AddEntity(config_control_designe_composite_curve); + config_control_designe_composite_curve->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (\n\t(\n\t(NOT closed_curve) AND \n\t(SIZEOF\n\t(QUERY \n\t( temp <* segments | \n\t(temp. transition = discontinuous) )) = 1)) OR \n\t(closed_curve AND \n\t(SIZEOF\n\t( QUERY \n\t( temp <* segments | \n\t(temp.transition = discontinuous) )) = 0)));\n"); + config_control_designe_composite_curve->_where_rules->Append(wr); + config_control_designe_composite_curve_on_surface = new EntityDescriptor( + "Composite_Curve_On_Surface", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiComposite_curve_on_surface ); + s_config_control_design->AddEntity(config_control_designe_composite_curve_on_surface); + config_control_designe_composite_curve_on_surface->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SIZEOF\n\t(basis_surface) > 0);\n"); + config_control_designe_composite_curve_on_surface->_where_rules->Append(wr); + wr = new Where_rule("wr2: (constraints_composite_curve_on_surface\n\t(SELF));\n"); + config_control_designe_composite_curve_on_surface->_where_rules->Append(wr); + config_control_designe_boundary_curve = new EntityDescriptor( + "Boundary_Curve", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiBoundary_curve ); + s_config_control_design->AddEntity(config_control_designe_boundary_curve); + config_control_designe_boundary_curve->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SELF\\composite_curve.closed_curve);\n"); + config_control_designe_boundary_curve->_where_rules->Append(wr); + config_control_designe_representation_context = new EntityDescriptor( + "Representation_Context", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiRepresentation_context ); + s_config_control_design->AddEntity(config_control_designe_representation_context); + config_control_designe_geometric_representation_context = new EntityDescriptor( + "Geometric_Representation_Context", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiGeometric_representation_context ); + s_config_control_design->AddEntity(config_control_designe_geometric_representation_context); + config_control_designe_action_status = new EntityDescriptor( + "Action_Status", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiAction_status ); + s_config_control_design->AddEntity(config_control_designe_action_status); + config_control_designe_application_context = new EntityDescriptor( + "Application_Context", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiApplication_context ); + s_config_control_design->AddEntity(config_control_designe_application_context); + config_control_designe_change_request = new EntityDescriptor( + "Change_Request", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiChange_request ); + s_config_control_design->AddEntity(config_control_designe_change_request); + config_control_designe_date_and_time = new EntityDescriptor( + "Date_And_Time", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiDate_and_time ); + s_config_control_design->AddEntity(config_control_designe_date_and_time); + config_control_designe_approval_date_time = new EntityDescriptor( + "Approval_Date_Time", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiApproval_date_time ); + s_config_control_design->AddEntity(config_control_designe_approval_date_time); + config_control_designe_approval_role = new EntityDescriptor( + "Approval_Role", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiApproval_role ); + s_config_control_design->AddEntity(config_control_designe_approval_role); + config_control_designe_application_context_element = new EntityDescriptor( + "Application_Context_Element", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiApplication_context_element ); + s_config_control_design->AddEntity(config_control_designe_application_context_element); + config_control_designe_product_context = new EntityDescriptor( + "Product_Context", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiProduct_context ); + s_config_control_design->AddEntity(config_control_designe_product_context); + config_control_designe_elementary_surface = new EntityDescriptor( + "Elementary_Surface", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiElementary_surface ); + s_config_control_design->AddEntity(config_control_designe_elementary_surface); + config_control_designe_spherical_surface = new EntityDescriptor( + "Spherical_Surface", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiSpherical_surface ); + s_config_control_design->AddEntity(config_control_designe_spherical_surface); + config_control_designe_application_protocol_definition = new EntityDescriptor( + "Application_Protocol_Definition", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiApplication_protocol_definition ); + s_config_control_design->AddEntity(config_control_designe_application_protocol_definition); + config_control_designe_specified_higher_usage_occurrence = new EntityDescriptor( + "Specified_Higher_Usage_Occurrence", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiSpecified_higher_usage_occurrence ); + s_config_control_design->AddEntity(config_control_designe_specified_higher_usage_occurrence); + config_control_designe_specified_higher_usage_occurrence->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SELF :<>: upper_usage);\n"); + config_control_designe_specified_higher_usage_occurrence->_where_rules->Append(wr); + wr = new Where_rule("wr2: (SELF\\product_definition_relationship.relating_product_definition :=: upper_usage.relating_product_definition);\n"); + config_control_designe_specified_higher_usage_occurrence->_where_rules->Append(wr); + wr = new Where_rule("wr3: (SELF\\product_definition_relationship.related_product_definition :=: next_usage.related_product_definition);\n"); + config_control_designe_specified_higher_usage_occurrence->_where_rules->Append(wr); + wr = new Where_rule("wr4: (upper_usage.related_product_definition :=: next_usage. relating_product_definition);\n"); + config_control_designe_specified_higher_usage_occurrence->_where_rules->Append(wr); + wr = new Where_rule("wr5: (NOT \n\t('CONFIG_CONTROL_DESIGN.PROMISSORY_USAGE_OCCURRENCE' IN TYPEOF\n\t( upper_usage)));\n"); + config_control_designe_specified_higher_usage_occurrence->_where_rules->Append(wr); + config_control_designe_specified_higher_usage_occurrence->_uniqueness_rules = new Uniqueness_rule__set; + ur = new Uniqueness_rule("UR1 : upper_usage, next_usage;\n"); + config_control_designe_specified_higher_usage_occurrence->_uniqueness_rules->Append(ur); + config_control_designe_product_definition_formation_with_specified_source = new EntityDescriptor( + "Product_Definition_Formation_With_Specified_Source", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiProduct_definition_formation_with_specified_source ); + s_config_control_design->AddEntity(config_control_designe_product_definition_formation_with_specified_source); + config_control_designe_action_request_solution = new EntityDescriptor( + "Action_Request_Solution", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiAction_request_solution ); + s_config_control_design->AddEntity(config_control_designe_action_request_solution); + config_control_designe_uncertainty_measure_with_unit = new EntityDescriptor( + "Uncertainty_Measure_With_Unit", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiUncertainty_measure_with_unit ); + s_config_control_design->AddEntity(config_control_designe_uncertainty_measure_with_unit); + config_control_designe_uncertainty_measure_with_unit->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (\n\t(NOT \n\t('NUMBER' IN TYPEOF\n\t(SELF\\measure_with_unit.value_component))) OR \n\t( SELF\\measure_with_unit.value_component >= 0));\n"); + config_control_designe_uncertainty_measure_with_unit->_where_rules->Append(wr); + config_control_designe_edge_based_wireframe_model = new EntityDescriptor( + "Edge_Based_Wireframe_Model", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiEdge_based_wireframe_model ); + s_config_control_design->AddEntity(config_control_designe_edge_based_wireframe_model); + config_control_designe_path = new EntityDescriptor( + "Path", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiPath ); + s_config_control_design->AddEntity(config_control_designe_path); + config_control_designe_path->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (path_head_to_tail\n\t(SELF));\n"); + config_control_designe_path->_where_rules->Append(wr); + config_control_designe_connected_face_set = new EntityDescriptor( + "Connected_Face_Set", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiConnected_face_set ); + s_config_control_design->AddEntity(config_control_designe_connected_face_set); + config_control_designe_open_shell = new EntityDescriptor( + "Open_Shell", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiOpen_shell ); + s_config_control_design->AddEntity(config_control_designe_open_shell); + config_control_designe_oriented_open_shell = new EntityDescriptor( + "Oriented_Open_Shell", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiOriented_open_shell ); + s_config_control_design->AddEntity(config_control_designe_oriented_open_shell); + config_control_designe_oriented_open_shell->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (NOT \n\t('CONFIG_CONTROL_DESIGN.ORIENTED_OPEN_SHELL' IN TYPEOF\n\t(SELF. open_shell_element)));\n"); + config_control_designe_oriented_open_shell->_where_rules->Append(wr); + config_control_designe_solid_angle_unit = new EntityDescriptor( + "Solid_Angle_Unit", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiSolid_angle_unit ); + s_config_control_design->AddEntity(config_control_designe_solid_angle_unit); + config_control_designe_solid_angle_unit->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (\n\t(SELF\\named_unit.dimensions.length_exponent = 0) AND \n\t(SELF\\named_unit. dimensions.mass_exponent = 0) AND \n\t(SELF\\named_unit.dimensions. time_exponent = 0) AND \n\t(SELF\\named_unit.dimensions. electric_current_exponent = 0) AND \n\t(SELF\\named_unit.dimensions. thermodynamic_temperature_exponent = 0) AND \n\t(SELF\\named_unit. dimensions.amount_of_substance_exponent = 0) AND \n\t(SELF\\named_unit. dimensions.luminous_intensity_exponent = 0));\n"); + config_control_designe_solid_angle_unit->_where_rules->Append(wr); + config_control_designe_coordinated_universal_time_offset = new EntityDescriptor( + "Coordinated_Universal_Time_Offset", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiCoordinated_universal_time_offset ); + s_config_control_design->AddEntity(config_control_designe_coordinated_universal_time_offset); + config_control_designe_curve_replica = new EntityDescriptor( + "Curve_Replica", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiCurve_replica ); + s_config_control_design->AddEntity(config_control_designe_curve_replica); + config_control_designe_curve_replica->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (transformation.dim = parent_curve.dim);\n"); + config_control_designe_curve_replica->_where_rules->Append(wr); + wr = new Where_rule("wr2: (acyclic_curve_replica\n\t(SELF,parent_curve));\n"); + config_control_designe_curve_replica->_where_rules->Append(wr); + config_control_designe_quasi_uniform_surface = new EntityDescriptor( + "Quasi_Uniform_Surface", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiQuasi_uniform_surface ); + s_config_control_design->AddEntity(config_control_designe_quasi_uniform_surface); + config_control_designe_surface_curve = new EntityDescriptor( + "Surface_Curve", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiSurface_curve ); + s_config_control_design->AddEntity(config_control_designe_surface_curve); + config_control_designe_surface_curve->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (curve_3d.dim = 3);\n"); + config_control_designe_surface_curve->_where_rules->Append(wr); + wr = new Where_rule("wr2: (\n\t('CONFIG_CONTROL_DESIGN.PCURVE' IN TYPEOF\n\t(associated_geometry[1])) OR \n\t( master_representation <> pcurve_s1));\n"); + config_control_designe_surface_curve->_where_rules->Append(wr); + wr = new Where_rule("wr3: (\n\t('CONFIG_CONTROL_DESIGN.PCURVE' IN TYPEOF\n\t(associated_geometry[2])) OR \n\t( master_representation <> pcurve_s2));\n"); + config_control_designe_surface_curve->_where_rules->Append(wr); + wr = new Where_rule("wr4: (NOT \n\t('CONFIG_CONTROL_DESIGN.PCURVE' IN TYPEOF\n\t(curve_3d)));\n"); + config_control_designe_surface_curve->_where_rules->Append(wr); + config_control_designe_action_request_status = new EntityDescriptor( + "Action_Request_Status", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiAction_request_status ); + s_config_control_design->AddEntity(config_control_designe_action_request_status); + config_control_designe_composite_curve_segment = new EntityDescriptor( + "Composite_Curve_Segment", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiComposite_curve_segment ); + s_config_control_design->AddEntity(config_control_designe_composite_curve_segment); + config_control_designe_composite_curve_segment->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: ('CONFIG_CONTROL_DESIGN.BOUNDED_CURVE' IN TYPEOF\n\t(parent_curve));\n"); + config_control_designe_composite_curve_segment->_where_rules->Append(wr); + config_control_designe_reparametrised_composite_curve_segment = new EntityDescriptor( + "Reparametrised_Composite_Curve_Segment", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiReparametrised_composite_curve_segment ); + s_config_control_design->AddEntity(config_control_designe_reparametrised_composite_curve_segment); + config_control_designe_reparametrised_composite_curve_segment->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (param_length > 0);\n"); + config_control_designe_reparametrised_composite_curve_segment->_where_rules->Append(wr); + config_control_designe_representation_relationship = new EntityDescriptor( + "Representation_Relationship", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiRepresentation_relationship ); + s_config_control_design->AddEntity(config_control_designe_representation_relationship); + config_control_designe_representation_relationship_with_transformation = new EntityDescriptor( + "Representation_Relationship_With_Transformation", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiRepresentation_relationship_with_transformation ); + s_config_control_design->AddEntity(config_control_designe_representation_relationship_with_transformation); + config_control_designe_representation_relationship_with_transformation->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SELF\\representation_relationship.rep_1.context_of_items :<>: SELF\\ representation_relationship.rep_2.context_of_items);\n"); + config_control_designe_representation_relationship_with_transformation->_where_rules->Append(wr); + config_control_designe_person_and_organization_role = new EntityDescriptor( + "Person_And_Organization_Role", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiPerson_and_organization_role ); + s_config_control_design->AddEntity(config_control_designe_person_and_organization_role); + config_control_designe_quasi_uniform_curve = new EntityDescriptor( + "Quasi_Uniform_Curve", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiQuasi_uniform_curve ); + s_config_control_design->AddEntity(config_control_designe_quasi_uniform_curve); + config_control_designe_swept_surface = new EntityDescriptor( + "Swept_Surface", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiSwept_surface ); + s_config_control_design->AddEntity(config_control_designe_swept_surface); + config_control_designe_property_definition = new EntityDescriptor( + "Property_Definition", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiProperty_definition ); + s_config_control_design->AddEntity(config_control_designe_property_definition); + config_control_designe_global_uncertainty_assigned_context = new EntityDescriptor( + "Global_Uncertainty_Assigned_Context", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiGlobal_uncertainty_assigned_context ); + s_config_control_design->AddEntity(config_control_designe_global_uncertainty_assigned_context); + config_control_designe_organization_relationship = new EntityDescriptor( + "Organization_Relationship", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiOrganization_relationship ); + s_config_control_design->AddEntity(config_control_designe_organization_relationship); + config_control_designe_parabola = new EntityDescriptor( + "Parabola", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiParabola ); + s_config_control_design->AddEntity(config_control_designe_parabola); + config_control_designe_parabola->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (focal_dist <> 0);\n"); + config_control_designe_parabola->_where_rules->Append(wr); + config_control_designe_rectangular_composite_surface = new EntityDescriptor( + "Rectangular_Composite_Surface", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiRectangular_composite_surface ); + s_config_control_design->AddEntity(config_control_designe_rectangular_composite_surface); + config_control_designe_rectangular_composite_surface->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: ([] = QUERY \n\t( s <* segments | \n\t(n_v <> SIZEOF\n\t(s)) ));\n"); + config_control_designe_rectangular_composite_surface->_where_rules->Append(wr); + wr = new Where_rule("wr2: (constraints_rectangular_composite_surface\n\t(SELF));\n"); + config_control_designe_rectangular_composite_surface->_where_rules->Append(wr); + config_control_designe_lot_effectivity = new EntityDescriptor( + "Lot_Effectivity", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiLot_effectivity ); + s_config_control_design->AddEntity(config_control_designe_lot_effectivity); + config_control_designe_surface_of_linear_extrusion = new EntityDescriptor( + "Surface_Of_Linear_Extrusion", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiSurface_of_linear_extrusion ); + s_config_control_design->AddEntity(config_control_designe_surface_of_linear_extrusion); + config_control_designe_shell_based_surface_model = new EntityDescriptor( + "Shell_Based_Surface_Model", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiShell_based_surface_model ); + s_config_control_design->AddEntity(config_control_designe_shell_based_surface_model); + config_control_designe_shell_based_surface_model->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (constraints_geometry_shell_based_surface_model\n\t(SELF));\n"); + config_control_designe_shell_based_surface_model->_where_rules->Append(wr); + config_control_designe_uniform_curve = new EntityDescriptor( + "Uniform_Curve", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiUniform_curve ); + s_config_control_design->AddEntity(config_control_designe_uniform_curve); + config_control_designe_bezier_curve = new EntityDescriptor( + "Bezier_Curve", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiBezier_curve ); + s_config_control_design->AddEntity(config_control_designe_bezier_curve); + config_control_designe_loop = new EntityDescriptor( + "Loop", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiLoop ); + s_config_control_design->AddEntity(config_control_designe_loop); + config_control_designe_edge_loop = new EntityDescriptor( + "Edge_Loop", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiEdge_loop ); + s_config_control_design->AddEntity(config_control_designe_edge_loop); + config_control_designe_edge_loop->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SELF\\path.edge_list[1].edge_start :=: SELF\\path.edge_list[ne].edge_end);\n"); + config_control_designe_edge_loop->_where_rules->Append(wr); + config_control_designe_date = new EntityDescriptor( + "Date", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiDate ); + s_config_control_design->AddEntity(config_control_designe_date); + config_control_designe_calendar_date = new EntityDescriptor( + "Calendar_Date", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiCalendar_date ); + s_config_control_design->AddEntity(config_control_designe_calendar_date); + config_control_designe_calendar_date->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (valid_calendar_date\n\t(SELF));\n"); + config_control_designe_calendar_date->_where_rules->Append(wr); + config_control_designe_toroidal_surface = new EntityDescriptor( + "Toroidal_Surface", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiToroidal_surface ); + s_config_control_design->AddEntity(config_control_designe_toroidal_surface); + config_control_designe_promissory_usage_occurrence = new EntityDescriptor( + "Promissory_Usage_Occurrence", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiPromissory_usage_occurrence ); + s_config_control_design->AddEntity(config_control_designe_promissory_usage_occurrence); + config_control_designe_approval_assignment = new EntityDescriptor( + "Approval_Assignment", s_config_control_design, SCLLOG(LTrue), SCLLOG(LFalse), + (Creator) create_SdaiApproval_assignment ); + s_config_control_design->AddEntity(config_control_designe_approval_assignment); + config_control_designe_configuration_item = new EntityDescriptor( + "Configuration_Item", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiConfiguration_item ); + s_config_control_design->AddEntity(config_control_designe_configuration_item); + config_control_designe_configuration_item->_uniqueness_rules = new Uniqueness_rule__set; + ur = new Uniqueness_rule("UR1 : id;\n"); + config_control_designe_configuration_item->_uniqueness_rules->Append(ur); + config_control_designe_contract_assignment = new EntityDescriptor( + "Contract_Assignment", s_config_control_design, SCLLOG(LTrue), SCLLOG(LFalse), + (Creator) create_SdaiContract_assignment ); + s_config_control_design->AddEntity(config_control_designe_contract_assignment); + config_control_designe_vector = new EntityDescriptor( + "Vector", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiVector ); + s_config_control_design->AddEntity(config_control_designe_vector); + config_control_designe_vector->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (magnitude >= 0);\n"); + config_control_designe_vector->_where_rules->Append(wr); + config_control_designe_intersection_curve = new EntityDescriptor( + "Intersection_Curve", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiIntersection_curve ); + s_config_control_design->AddEntity(config_control_designe_intersection_curve); + config_control_designe_intersection_curve->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SIZEOF\n\t(SELF\\surface_curve.associated_geometry) = 2);\n"); + config_control_designe_intersection_curve->_where_rules->Append(wr); + wr = new Where_rule("wr2: (associated_surface\n\t(SELF\\surface_curve.associated_geometry[1]) <> associated_surface\n\t(SELF\\surface_curve.associated_geometry[2]));\n"); + config_control_designe_intersection_curve->_where_rules->Append(wr); + config_control_designe_trimmed_curve = new EntityDescriptor( + "Trimmed_Curve", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiTrimmed_curve ); + s_config_control_design->AddEntity(config_control_designe_trimmed_curve); + config_control_designe_trimmed_curve->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (\n\t(HIINDEX\n\t(trim_1) = 1) OR \n\t(TYPEOF\n\t(trim_1[1]) <> TYPEOF\n\t(trim_1[2])));\n"); + config_control_designe_trimmed_curve->_where_rules->Append(wr); + wr = new Where_rule("wr2: (\n\t(HIINDEX\n\t(trim_2) = 1) OR \n\t(TYPEOF\n\t(trim_2[1]) <> TYPEOF\n\t(trim_2[2])));\n"); + config_control_designe_trimmed_curve->_where_rules->Append(wr); + config_control_designe_product_definition_context = new EntityDescriptor( + "Product_Definition_Context", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiProduct_definition_context ); + s_config_control_design->AddEntity(config_control_designe_product_definition_context); + config_control_designe_item_defined_transformation = new EntityDescriptor( + "Item_Defined_Transformation", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiItem_defined_transformation ); + s_config_control_design->AddEntity(config_control_designe_item_defined_transformation); + config_control_designe_action_method = new EntityDescriptor( + "Action_Method", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiAction_method ); + s_config_control_design->AddEntity(config_control_designe_action_method); + config_control_designe_product_category_relationship = new EntityDescriptor( + "Product_Category_Relationship", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiProduct_category_relationship ); + s_config_control_design->AddEntity(config_control_designe_product_category_relationship); + config_control_designe_product_category_relationship->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (acyclic_product_category_relationship\n\t(SELF,[SELF.sub_category]));\n"); + config_control_designe_product_category_relationship->_where_rules->Append(wr); + config_control_designe_plane_angle_measure_with_unit = new EntityDescriptor( + "Plane_Angle_Measure_With_Unit", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiPlane_angle_measure_with_unit ); + s_config_control_design->AddEntity(config_control_designe_plane_angle_measure_with_unit); + config_control_designe_plane_angle_measure_with_unit->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: ('CONFIG_CONTROL_DESIGN.PLANE_ANGLE_UNIT' IN TYPEOF\n\t(SELF\\measure_with_unit. unit_component));\n"); + config_control_designe_plane_angle_measure_with_unit->_where_rules->Append(wr); + config_control_designe_vertex = new EntityDescriptor( + "Vertex", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiVertex ); + s_config_control_design->AddEntity(config_control_designe_vertex); + config_control_designe_representation_map = new EntityDescriptor( + "Representation_Map", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiRepresentation_map ); + s_config_control_design->AddEntity(config_control_designe_representation_map); + config_control_designe_representation_map->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (item_in_context\n\t(SELF.mapping_origin,SELF.mapped_representation. context_of_items));\n"); + config_control_designe_representation_map->_where_rules->Append(wr); + config_control_designe_product_definition_effectivity = new EntityDescriptor( + "Product_Definition_Effectivity", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiProduct_definition_effectivity ); + s_config_control_design->AddEntity(config_control_designe_product_definition_effectivity); + config_control_designe_product_definition_effectivity->_uniqueness_rules = new Uniqueness_rule__set; + ur = new Uniqueness_rule("UR1 : usage, id;\n"); + config_control_designe_product_definition_effectivity->_uniqueness_rules->Append(ur); + config_control_designe_configuration_effectivity = new EntityDescriptor( + "Configuration_Effectivity", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiConfiguration_effectivity ); + s_config_control_design->AddEntity(config_control_designe_configuration_effectivity); + config_control_designe_configuration_effectivity->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SELF\\product_definition_effectivity.usage.relating_product_definition IN \n\t( USEDIN\n\t(SELF.configuration.design,'CONFIG_CONTROL_DESIGN.' + 'PRODUCT_DEFINITION.FORMATION') + relatives_of_product_definitions\n\t( bag_to_set\n\t(USEDIN\n\t(SELF.configuration.design, 'CONFIG_CONTROL_DESIGN.' + 'PRODUCT_DEFINITION.FORMATION')), 'CONFIG_CONTROL_DESIGN.' + 'PRODUCT_DEFINITION_USAGE')));\n"); + config_control_designe_configuration_effectivity->_where_rules->Append(wr); + wr = new Where_rule("wr2: ('CONFIG_CONTROL_DESIGN.PRODUCT_DEFINITION_USAGE' IN TYPEOF\n\t(SELF\\ product_definition_effectivity.usage));\n"); + config_control_designe_configuration_effectivity->_where_rules->Append(wr); + config_control_designe_configuration_effectivity->_uniqueness_rules = new Uniqueness_rule__set; + ur = new Uniqueness_rule("UR1 : configuration, usage, id;\n"); + config_control_designe_configuration_effectivity->_uniqueness_rules->Append(ur); + config_control_designe_ellipse = new EntityDescriptor( + "Ellipse", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiEllipse ); + s_config_control_design->AddEntity(config_control_designe_ellipse); + config_control_designe_context_dependent_unit = new EntityDescriptor( + "Context_Dependent_Unit", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiContext_dependent_unit ); + s_config_control_design->AddEntity(config_control_designe_context_dependent_unit); + config_control_designe_alternate_product_relationship = new EntityDescriptor( + "Alternate_Product_Relationship", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiAlternate_product_relationship ); + s_config_control_design->AddEntity(config_control_designe_alternate_product_relationship); + config_control_designe_alternate_product_relationship->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (alternate :<>: base);\n"); + config_control_designe_alternate_product_relationship->_where_rules->Append(wr); + config_control_designe_alternate_product_relationship->_uniqueness_rules = new Uniqueness_rule__set; + ur = new Uniqueness_rule("UR1 : alternate, base;\n"); + config_control_designe_alternate_product_relationship->_uniqueness_rules->Append(ur); + config_control_designe_document_type = new EntityDescriptor( + "Document_Type", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiDocument_type ); + s_config_control_design->AddEntity(config_control_designe_document_type); + config_control_designe_document_reference = new EntityDescriptor( + "Document_Reference", s_config_control_design, SCLLOG(LTrue), SCLLOG(LFalse), + (Creator) create_SdaiDocument_reference ); + s_config_control_design->AddEntity(config_control_designe_document_reference); + config_control_designe_mechanical_context = new EntityDescriptor( + "Mechanical_Context", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiMechanical_context ); + s_config_control_design->AddEntity(config_control_designe_mechanical_context); + config_control_designe_mechanical_context->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SELF.discipline_type = 'mechanical');\n"); + config_control_designe_mechanical_context->_where_rules->Append(wr); + config_control_designe_shell_based_wireframe_model = new EntityDescriptor( + "Shell_Based_Wireframe_Model", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiShell_based_wireframe_model ); + s_config_control_design->AddEntity(config_control_designe_shell_based_wireframe_model); + config_control_designe_shell_based_wireframe_model->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (constraints_geometry_shell_based_wireframe_model\n\t(SELF));\n"); + config_control_designe_shell_based_wireframe_model->_where_rules->Append(wr); + config_control_designe_contract = new EntityDescriptor( + "Contract", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiContract ); + s_config_control_design->AddEntity(config_control_designe_contract); + config_control_designe_dimensional_exponents = new EntityDescriptor( + "Dimensional_Exponents", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiDimensional_exponents ); + s_config_control_design->AddEntity(config_control_designe_dimensional_exponents); + config_control_designe_start_request = new EntityDescriptor( + "Start_Request", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiStart_request ); + s_config_control_design->AddEntity(config_control_designe_start_request); + config_control_designe_cc_design_specification_reference = new EntityDescriptor( + "Cc_Design_Specification_Reference", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiCc_design_specification_reference ); + s_config_control_design->AddEntity(config_control_designe_cc_design_specification_reference); + config_control_designe_supplied_part_relationship = new EntityDescriptor( + "Supplied_Part_Relationship", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiSupplied_part_relationship ); + s_config_control_design->AddEntity(config_control_designe_supplied_part_relationship); + config_control_designe_context_dependent_shape_representation = new EntityDescriptor( + "Context_Dependent_Shape_Representation", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiContext_dependent_shape_representation ); + s_config_control_design->AddEntity(config_control_designe_context_dependent_shape_representation); + config_control_designe_context_dependent_shape_representation->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: ('CONFIG_CONTROL_DESIGN.PRODUCT_DEFINITION_RELATIONSHIP' IN TYPEOF\n\t(SELF. represented_product_relation.definition));\n"); + config_control_designe_context_dependent_shape_representation->_where_rules->Append(wr); + config_control_designe_ordinal_date = new EntityDescriptor( + "Ordinal_Date", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiOrdinal_date ); + s_config_control_design->AddEntity(config_control_designe_ordinal_date); + config_control_designe_ordinal_date->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (\n\t(\n\t(NOT leap_year\n\t(SELF.year_component)) AND \n\t(1 <= day_component) AND \n\t( day_component <= 365)) OR \n\t(leap_year\n\t(SELF.year_component) AND \n\t(1 <= day_component) AND \n\t(day_component <= 366)));\n"); + config_control_designe_ordinal_date->_where_rules->Append(wr); + config_control_designe_face_outer_bound = new EntityDescriptor( + "Face_Outer_Bound", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiFace_outer_bound ); + s_config_control_design->AddEntity(config_control_designe_face_outer_bound); + config_control_designe_mass_measure_with_unit = new EntityDescriptor( + "Mass_Measure_With_Unit", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiMass_measure_with_unit ); + s_config_control_design->AddEntity(config_control_designe_mass_measure_with_unit); + config_control_designe_mass_measure_with_unit->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: ('CONFIG_CONTROL_DESIGN.MASS_UNIT' IN TYPEOF\n\t(SELF\\measure_with_unit. unit_component));\n"); + config_control_designe_mass_measure_with_unit->_where_rules->Append(wr); + config_control_designe_brep_with_voids = new EntityDescriptor( + "Brep_With_Voids", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiBrep_with_voids ); + s_config_control_design->AddEntity(config_control_designe_brep_with_voids); + config_control_designe_week_of_year_and_day_date = new EntityDescriptor( + "Week_Of_Year_And_Day_Date", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiWeek_of_year_and_day_date ); + s_config_control_design->AddEntity(config_control_designe_week_of_year_and_day_date); + config_control_designe_point_on_curve = new EntityDescriptor( + "Point_On_Curve", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiPoint_on_curve ); + s_config_control_design->AddEntity(config_control_designe_point_on_curve); + config_control_designe_shell_based_wireframe_shape_representation = new EntityDescriptor( + "Shell_Based_Wireframe_Shape_Representation", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiShell_based_wireframe_shape_representation ); + s_config_control_design->AddEntity(config_control_designe_shell_based_wireframe_shape_representation); + config_control_designe_shell_based_wireframe_shape_representation->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SIZEOF\n\t(QUERY \n\t( it <* SELF\\representation.items | \n\t(NOT \n\t(SIZEOF\n\t([ 'CONFIG_CONTROL_DESIGN.SHELL_BASED_WIREFRAME_MODEL', 'CONFIG_CONTROL_DESIGN.MAPPED_ITEM', 'CONFIG_CONTROL_DESIGN.AXIS2_PLACEMENT_3D'] * TYPEOF\n\t(it)) = 1)) )) = 0);\n"); + config_control_designe_shell_based_wireframe_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr2: (SIZEOF\n\t(QUERY \n\t( it <* SELF\\representation.items | \n\t(SIZEOF\n\t([ 'CONFIG_CONTROL_DESIGN.SHELL_BASED_WIREFRAME_MODEL', 'CONFIG_CONTROL_DESIGN.MAPPED_ITEM'] * TYPEOF\n\t(it)) = 1) )) >= 1);\n"); + config_control_designe_shell_based_wireframe_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr3: (SIZEOF\n\t(QUERY \n\t( sbwm <* QUERY \n\t( it <* SELF\\representation.items | \n\t( 'CONFIG_CONTROL_DESIGN.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( G4std::ws <* QUERY \n\t( sb <* sbwm\\ shell_based_wireframe_model.sbwm_boundary | \n\t( 'CONFIG_CONTROL_DESIGN.WIRE_SHELL' IN TYPEOF\n\t(sb)) ) | \n\t(NOT \n\t(SIZEOF\n\t( QUERY \n\t( eloop <* QUERY \n\t( wsb <* G4std::ws\\wire_shell.wire_shell_extent | \n\t( 'CONFIG_CONTROL_DESIGN.EDGE_LOOP' IN TYPEOF\n\t(wsb)) ) | \n\t(NOT \n\t(SIZEOF\n\t( QUERY \n\t( el <* eloop\\path.edge_list | \n\t(NOT \n\t( 'CONFIG_CONTROL_DESIGN.EDGE_CURVE' IN TYPEOF\n\t(el.edge_element))) )) = 0)) )) = 0)) )) = 0)) )) = 0);\n"); + config_control_designe_shell_based_wireframe_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr4: (SIZEOF\n\t(QUERY \n\t( sbwm <* QUERY \n\t( it <* SELF\\representation.items | \n\t( 'CONFIG_CONTROL_DESIGN.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( G4std::ws <* QUERY \n\t( sb <* sbwm\\ shell_based_wireframe_model.sbwm_boundary | \n\t( 'CONFIG_CONTROL_DESIGN.WIRE_SHELL' IN TYPEOF\n\t(sb)) ) | \n\t(NOT \n\t(SIZEOF\n\t( QUERY \n\t( eloop <* QUERY \n\t( wsb <* G4std::ws\\wire_shell.wire_shell_extent | \n\t( 'CONFIG_CONTROL_DESIGN.EDGE_LOOP' IN TYPEOF\n\t(wsb)) ) | \n\t(NOT \n\t(SIZEOF\n\t( QUERY \n\t( pline_el <* QUERY \n\t( el <* eloop\\path.edge_list | \n\t( 'CONFIG_CONTROL_DESIGN.POLYLINE' IN TYPEOF\n\t(el.edge_element\\ edge_curve.edge_geometry)) ) | \n\t(NOT \n\t(SIZEOF\n\t(pline_el.edge_element\\ edge_curve.edge_geometry\\polyline.points) > 2)) )) = 0)) )) = 0)) )) = 0)) )) = 0);\n"); + config_control_designe_shell_based_wireframe_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr5: (SIZEOF\n\t(QUERY \n\t( sbwm <* QUERY \n\t( it <* SELF\\representation.items | \n\t( 'CONFIG_CONTROL_DESIGN.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( G4std::ws <* QUERY \n\t( sb <* sbwm\\ shell_based_wireframe_model.sbwm_boundary | \n\t( 'CONFIG_CONTROL_DESIGN.WIRE_SHELL' IN TYPEOF\n\t(sb)) ) | \n\t(NOT \n\t(SIZEOF\n\t( QUERY \n\t( eloop <* QUERY \n\t( wsb <* G4std::ws\\wire_shell.wire_shell_extent | \n\t( 'CONFIG_CONTROL_DESIGN.EDGE_LOOP' IN TYPEOF\n\t(wsb)) ) | \n\t(NOT \n\t(SIZEOF\n\t( QUERY \n\t( el <* eloop\\path.edge_list | \n\t(NOT valid_wireframe_edge_curve\n\t(el.edge_element\\edge_curve.edge_geometry, 'CONFIG_CONTROL_DESIGN')) )) = 0)) )) = 0)) )) = 0)) )) = 0);\n"); + config_control_designe_shell_based_wireframe_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr6: (SIZEOF\n\t(QUERY \n\t( sbwm <* QUERY \n\t( it <* SELF\\representation.items | \n\t( 'CONFIG_CONTROL_DESIGN.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( G4std::ws <* QUERY \n\t( sb <* sbwm\\ shell_based_wireframe_model.sbwm_boundary | \n\t( 'CONFIG_CONTROL_DESIGN.WIRE_SHELL' IN TYPEOF\n\t(sb)) ) | \n\t(NOT \n\t(SIZEOF\n\t( QUERY \n\t( eloop <* QUERY \n\t( wsb <* G4std::ws\\wire_shell.wire_shell_extent | \n\t( 'CONFIG_CONTROL_DESIGN.EDGE_LOOP' IN TYPEOF\n\t(wsb)) ) | \n\t(NOT \n\t(SIZEOF\n\t( QUERY \n\t( el <* eloop\\path.edge_list | \n\t(NOT \n\t(\n\t( 'CONFIG_CONTROL_DESIGN.VERTEX_POINT' IN TYPEOF\n\t(el.edge_element. edge_start)) AND \n\t('CONFIG_CONTROL_DESIGN.VERTEX_POINT' IN TYPEOF\n\t(el .edge_element.edge_end)))) )) = 0)) )) = 0)) )) = 0)) )) = 0);\n"); + config_control_designe_shell_based_wireframe_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr7: (SIZEOF\n\t(QUERY \n\t( sbwm <* QUERY \n\t( it <* SELF\\representation.items | \n\t( 'CONFIG_CONTROL_DESIGN.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( G4std::ws <* QUERY \n\t( sb <* sbwm\\ shell_based_wireframe_model.sbwm_boundary | \n\t( 'CONFIG_CONTROL_DESIGN.WIRE_SHELL' IN TYPEOF\n\t(sb)) ) | \n\t(NOT \n\t(SIZEOF\n\t( QUERY \n\t( eloop <* QUERY \n\t( wsb <* G4std::ws\\wire_shell.wire_shell_extent | \n\t( 'CONFIG_CONTROL_DESIGN.EDGE_LOOP' IN TYPEOF\n\t(wsb)) ) | \n\t(NOT \n\t(SIZEOF\n\t( QUERY \n\t( el <* eloop\\path.edge_list | \n\t(NOT \n\t( valid_wireframe_vertex_point\n\t(el.edge_element.edge_start\\ vertex_point.vertex_geometry,'CONFIG_CONTROL_DESIGN') AND valid_wireframe_vertex_point\n\t(el.edge_element.edge_end\\vertex_point. vertex_geometry,'CONFIG_CONTROL_DESIGN'))) )) = 0)) )) = 0)) )) = 0)) )) = 0);\n"); + config_control_designe_shell_based_wireframe_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr8: (SIZEOF\n\t(QUERY \n\t( sbwm <* QUERY \n\t( it <* SELF\\representation.items | \n\t( 'CONFIG_CONTROL_DESIGN.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( G4std::ws <* QUERY \n\t( sb <* sbwm\\ shell_based_wireframe_model.sbwm_boundary | \n\t( 'CONFIG_CONTROL_DESIGN.WIRE_SHELL' IN TYPEOF\n\t(sb)) ) | \n\t(NOT \n\t(SIZEOF\n\t( QUERY \n\t( eloop <* QUERY \n\t( wsb <* G4std::ws\\wire_shell.wire_shell_extent | \n\t( 'CONFIG_CONTROL_DESIGN.EDGE_LOOP' IN TYPEOF\n\t(wsb)) ) | \n\t(NOT \n\t(SIZEOF\n\t( QUERY \n\t( con_edges <* QUERY \n\t( el <* eloop\\path.edge_list | \n\t( 'CONFIG_CONTROL_DESIGN.CONIC' IN TYPEOF\n\t(el.edge_element\\edge_curve. edge_geometry)) ) | \n\t(NOT \n\t( 'CONFIG_CONTROL_DESIGN.AXIS2_PLACEMENT_3D' IN TYPEOF\n\t(con_edges. edge_element\\edge_curve.edge_geometry\\conic.position))) )) = 0)) )) = 0)) )) = 0)) )) = 0);\n"); + config_control_designe_shell_based_wireframe_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr9: (SIZEOF\n\t(QUERY \n\t( sbwm <* QUERY \n\t( it <* SELF\\representation.items | \n\t( 'CONFIG_CONTROL_DESIGN.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( G4std::ws <* QUERY \n\t( sb <* sbwm\\ shell_based_wireframe_model.sbwm_boundary | \n\t( 'CONFIG_CONTROL_DESIGN.WIRE_SHELL' IN TYPEOF\n\t(sb)) ) | \n\t(NOT \n\t(SIZEOF\n\t( QUERY \n\t( vloop <* QUERY \n\t( wsb <* G4std::ws\\wire_shell.wire_shell_extent | \n\t( 'CONFIG_CONTROL_DESIGN.VERTEX_LOOP' IN TYPEOF\n\t(wsb)) ) | \n\t(NOT \n\t( 'CONFIG_CONTROL_DESIGN.VERTEX_POINT' IN TYPEOF\n\t(vloop.loop_vertex))) )) = 0)) )) = 0)) )) = 0);\n"); + config_control_designe_shell_based_wireframe_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr10: (SIZEOF\n\t(QUERY \n\t( sbwm <* QUERY \n\t( it <* SELF\\representation.items | \n\t( 'CONFIG_CONTROL_DESIGN.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( G4std::ws <* QUERY \n\t( sb <* sbwm\\ shell_based_wireframe_model.sbwm_boundary | \n\t( 'CONFIG_CONTROL_DESIGN.WIRE_SHELL' IN TYPEOF\n\t(sb)) ) | \n\t(NOT \n\t(SIZEOF\n\t( QUERY \n\t( vloop <* QUERY \n\t( wsb <* G4std::ws\\wire_shell.wire_shell_extent | \n\t( 'CONFIG_CONTROL_DESIGN.VERTEX_LOOP' IN TYPEOF\n\t(wsb)) ) | \n\t(NOT valid_wireframe_vertex_point\n\t(vloop\\vertex_loop.loop_vertex\\ vertex_point.vertex_geometry,'CONFIG_CONTROL_DESIGN')) )) = 0)) )) = 0)) )) = 0);\n"); + config_control_designe_shell_based_wireframe_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr11: (SIZEOF\n\t(QUERY \n\t( sbwm <* QUERY \n\t( it <* SELF\\representation.items | \n\t( 'CONFIG_CONTROL_DESIGN.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( vs <* QUERY \n\t( sb <* sbwm\\ shell_based_wireframe_model.sbwm_boundary | \n\t( 'CONFIG_CONTROL_DESIGN.VERTEX_SHELL' IN TYPEOF\n\t(sb)) ) | \n\t(NOT \n\t( 'CONFIG_CONTROL_DESIGN.VERTEX_POINT' IN TYPEOF\n\t(vs\\vertex_shell. vertex_shell_extent.loop_vertex))) )) = 0)) )) = 0);\n"); + config_control_designe_shell_based_wireframe_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr12: (SIZEOF\n\t(QUERY \n\t( sbwm <* QUERY \n\t( it <* SELF\\representation.items | \n\t( 'CONFIG_CONTROL_DESIGN.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( vs <* QUERY \n\t( sb <* sbwm\\ shell_based_wireframe_model.sbwm_boundary | \n\t( 'CONFIG_CONTROL_DESIGN.VERTEX_SHELL' IN TYPEOF\n\t(sb)) ) | \n\t(NOT valid_wireframe_vertex_point\n\t(vs\\vertex_shell.vertex_shell_extent. loop_vertex\\vertex_point.vertex_geometry,'CONFIG_CONTROL_DESIGN')) )) = 0)) )) = 0);\n"); + config_control_designe_shell_based_wireframe_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr13: (SIZEOF\n\t(QUERY \n\t( mi <* QUERY \n\t( item <* SELF\\representation.items | \n\t( 'CONFIG_CONTROL_DESIGN.MAPPED_ITEM' IN TYPEOF\n\t(item)) ) | \n\t(NOT \n\t( 'CONFIG_CONTROL_DESIGN.SHELL_BASED_WIREFRAME_REPRESENTATION' IN TYPEOF\n\t(mi\\mapped_item.mapping_source.mapped_representation))) )) = 0);\n"); + config_control_designe_shell_based_wireframe_shape_representation->_where_rules->Append(wr); + config_control_designe_face = new EntityDescriptor( + "Face", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiFace ); + s_config_control_design->AddEntity(config_control_designe_face); + config_control_designe_face->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (NOT mixed_loop_type_set\n\t(list_to_set\n\t(list_face_loops\n\t(SELF))));\n"); + config_control_designe_face->_where_rules->Append(wr); + wr = new Where_rule("wr2: (SIZEOF\n\t(QUERY \n\t( temp <* bounds | \n\t('CONFIG_CONTROL_DESIGN.FACE_OUTER_BOUND' IN TYPEOF\n\t(temp)) )) <= 1);\n"); + config_control_designe_face->_where_rules->Append(wr); + config_control_designe_face_surface = new EntityDescriptor( + "Face_Surface", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiFace_surface ); + s_config_control_design->AddEntity(config_control_designe_face_surface); + config_control_designe_oriented_face = new EntityDescriptor( + "Oriented_Face", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiOriented_face ); + s_config_control_design->AddEntity(config_control_designe_oriented_face); + config_control_designe_oriented_face->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (NOT \n\t('CONFIG_CONTROL_DESIGN.ORIENTED_FACE' IN TYPEOF\n\t(SELF.face_element)));\n"); + config_control_designe_oriented_face->_where_rules->Append(wr); + config_control_designe_surface_of_revolution = new EntityDescriptor( + "Surface_Of_Revolution", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiSurface_of_revolution ); + s_config_control_design->AddEntity(config_control_designe_surface_of_revolution); + config_control_designe_advanced_brep_shape_representation = new EntityDescriptor( + "Advanced_Brep_Shape_Representation", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiAdvanced_brep_shape_representation ); + s_config_control_design->AddEntity(config_control_designe_advanced_brep_shape_representation); + config_control_designe_advanced_brep_shape_representation->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SIZEOF\n\t(QUERY \n\t( it <* SELF.items | \n\t(NOT \n\t(SIZEOF\n\t([ 'CONFIG_CONTROL_DESIGN.MANIFOLD_SOLID_BREP', 'CONFIG_CONTROL_DESIGN.FACETED_BREP', 'CONFIG_CONTROL_DESIGN.MAPPED_ITEM', 'CONFIG_CONTROL_DESIGN.AXIS2_PLACEMENT_3D'] * TYPEOF\n\t(it)) = 1)) )) = 0);\n"); + config_control_designe_advanced_brep_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr2: (SIZEOF\n\t(QUERY \n\t( it <* SELF.items | \n\t(SIZEOF\n\t([ 'CONFIG_CONTROL_DESIGN.MANIFOLD_SOLID_BREP', 'CONFIG_CONTROL_DESIGN.MAPPED_ITEM'] * TYPEOF\n\t(it)) = 1) )) > 0);\n"); + config_control_designe_advanced_brep_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr3: (SIZEOF\n\t(QUERY \n\t( msb <* QUERY \n\t( it <* SELF.items | \n\t( 'CONFIG_CONTROL_DESIGN.MANIFOLD_SOLID_BREP' IN TYPEOF\n\t(it)) ) | \n\t( NOT \n\t(SIZEOF\n\t(QUERY \n\t( csh <* msb_shells\n\t(msb,'CONFIG_CONTROL_DESIGN') | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( csf <* csh.cfs_faces | \n\t(NOT \n\t( 'CONFIG_CONTROL_DESIGN.ADVANCED_FACE' IN TYPEOF\n\t(csf))) )) = 0)) )) = 0)) )) = 0);\n"); + config_control_designe_advanced_brep_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr4: (SIZEOF\n\t(QUERY \n\t( msb <* QUERY \n\t( it <* items | \n\t( 'CONFIG_CONTROL_DESIGN.MANIFOLD_SOLID_BREP' IN TYPEOF\n\t(it)) ) | \n\t( 'CONFIG_CONTROL_DESIGN.ORIENTED_CLOSED_SHELL' IN TYPEOF\n\t(msb\\ manifold_solid_brep.outer)) )) = 0);\n"); + config_control_designe_advanced_brep_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr5: (SIZEOF\n\t(QUERY \n\t( brv <* QUERY \n\t( it <* items | \n\t( 'CONFIG_CONTROL_DESIGN.BREP_WITH_VOIDS' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t( SIZEOF\n\t(QUERY \n\t( csh <* brv\\brep_with_voids.voids | csh\\ oriented_closed_shell.orientation )) = 0)) )) = 0);\n"); + config_control_designe_advanced_brep_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr6: (SIZEOF\n\t(QUERY \n\t( mi <* QUERY \n\t( it <* items | \n\t( 'CONFIG_CONTROL_DESIGN.MAPPED_ITEM' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t( 'CONFIG_CONTROL_DESIGN.ADVANCED_BREP_SHAPE_REPRESENTATION' IN TYPEOF\n\t(mi\\mapped_item.mapping_source.mapped_representation))) )) = 0);\n"); + config_control_designe_advanced_brep_shape_representation->_where_rules->Append(wr); + config_control_designe_edge_curve = new EntityDescriptor( + "Edge_Curve", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiEdge_curve ); + s_config_control_design->AddEntity(config_control_designe_edge_curve); + config_control_designe_point_replica = new EntityDescriptor( + "Point_Replica", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiPoint_replica ); + s_config_control_design->AddEntity(config_control_designe_point_replica); + config_control_designe_point_replica->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (transformation.dim = parent_pt.dim);\n"); + config_control_designe_point_replica->_where_rules->Append(wr); + wr = new Where_rule("wr2: (acyclic_point_replica\n\t(SELF,parent_pt));\n"); + config_control_designe_point_replica->_where_rules->Append(wr); + config_control_designe_product = new EntityDescriptor( + "Product", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiProduct ); + s_config_control_design->AddEntity(config_control_designe_product); + config_control_designe_product->_uniqueness_rules = new Uniqueness_rule__set; + ur = new Uniqueness_rule("UR1 : id;\n"); + config_control_designe_product->_uniqueness_rules->Append(ur); + config_control_designe_shape_aspect_relationship = new EntityDescriptor( + "Shape_Aspect_Relationship", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiShape_aspect_relationship ); + s_config_control_design->AddEntity(config_control_designe_shape_aspect_relationship); + config_control_designe_rectangular_trimmed_surface = new EntityDescriptor( + "Rectangular_Trimmed_Surface", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiRectangular_trimmed_surface ); + s_config_control_design->AddEntity(config_control_designe_rectangular_trimmed_surface); + config_control_designe_rectangular_trimmed_surface->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (u1 <> u2);\n"); + config_control_designe_rectangular_trimmed_surface->_where_rules->Append(wr); + wr = new Where_rule("wr2: (v1 <> v2);\n"); + config_control_designe_rectangular_trimmed_surface->_where_rules->Append(wr); + wr = new Where_rule("wr3: (\n\t(\n\t('CONFIG_CONTROL_DESIGN.ELEMENTARY_SURFACE' IN TYPEOF\n\t(basis_surface)) AND \n\t(NOT \n\t('CONFIG_CONTROL_DESIGN.PLANE' IN TYPEOF\n\t(basis_surface)))) OR \n\t('CONFIG_CONTROL_DESIGN.SURFACE_OF_REVOLUTION' IN TYPEOF\n\t( basis_surface)) OR \n\t(usense = \n\t(u2 > u1)));\n"); + config_control_designe_rectangular_trimmed_surface->_where_rules->Append(wr); + wr = new Where_rule("wr4: (\n\t('CONFIG_CONTROL_DESIGN.SPHERICAL_SURFACE' IN TYPEOF\n\t(basis_surface)) OR \n\t( 'CONFIG_CONTROL_DESIGN.TOROIDAL_SURFACE' IN TYPEOF\n\t(basis_surface)) OR \n\t(vsense = \n\t(v2 > v1)));\n"); + config_control_designe_rectangular_trimmed_surface->_where_rules->Append(wr); + config_control_designe_plane = new EntityDescriptor( + "Plane", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiPlane ); + s_config_control_design->AddEntity(config_control_designe_plane); + config_control_designe_action_assignment = new EntityDescriptor( + "Action_Assignment", s_config_control_design, SCLLOG(LTrue), SCLLOG(LFalse), + (Creator) create_SdaiAction_assignment ); + s_config_control_design->AddEntity(config_control_designe_action_assignment); + config_control_designe_change = new EntityDescriptor( + "Change", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiChange ); + s_config_control_design->AddEntity(config_control_designe_change); + config_control_designe_circle = new EntityDescriptor( + "Circle", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiCircle ); + s_config_control_design->AddEntity(config_control_designe_circle); + config_control_designe_line = new EntityDescriptor( + "Line", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiLine ); + s_config_control_design->AddEntity(config_control_designe_line); + config_control_designe_line->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (dir.dim = pnt.dim);\n"); + config_control_designe_line->_where_rules->Append(wr); + config_control_designe_property_definition_representation = new EntityDescriptor( + "Property_Definition_Representation", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiProperty_definition_representation ); + s_config_control_design->AddEntity(config_control_designe_property_definition_representation); + config_control_designe_geometric_set = new EntityDescriptor( + "Geometric_Set", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiGeometric_set ); + s_config_control_design->AddEntity(config_control_designe_geometric_set); + config_control_designe_geometric_curve_set = new EntityDescriptor( + "Geometric_Curve_Set", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiGeometric_curve_set ); + s_config_control_design->AddEntity(config_control_designe_geometric_curve_set); + config_control_designe_geometric_curve_set->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SIZEOF\n\t(QUERY \n\t( temp <* SELF\\geometric_set.elements | \n\t( 'CONFIG_CONTROL_DESIGN.SURFACE' IN TYPEOF\n\t(temp)) )) = 0);\n"); + config_control_designe_geometric_curve_set->_where_rules->Append(wr); + config_control_designe_personal_address = new EntityDescriptor( + "Personal_Address", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiPersonal_address ); + s_config_control_design->AddEntity(config_control_designe_personal_address); + config_control_designe_document_relationship = new EntityDescriptor( + "Document_Relationship", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiDocument_relationship ); + s_config_control_design->AddEntity(config_control_designe_document_relationship); + config_control_designe_pcurve = new EntityDescriptor( + "Pcurve", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiPcurve ); + s_config_control_design->AddEntity(config_control_designe_pcurve); + config_control_designe_pcurve->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SIZEOF\n\t(reference_to_curve\\representation.items) = 1);\n"); + config_control_designe_pcurve->_where_rules->Append(wr); + wr = new Where_rule("wr2: ('CONFIG_CONTROL_DESIGN.CURVE' IN TYPEOF\n\t(reference_to_curve\\representation. items[1]));\n"); + config_control_designe_pcurve->_where_rules->Append(wr); + wr = new Where_rule("wr3: (reference_to_curve\\representation.items[1]\\geometric_representation_item. dim = 2);\n"); + config_control_designe_pcurve->_where_rules->Append(wr); + config_control_designe_outer_boundary_curve = new EntityDescriptor( + "Outer_Boundary_Curve", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiOuter_boundary_curve ); + s_config_control_design->AddEntity(config_control_designe_outer_boundary_curve); + config_control_designe_shape_representation_relationship = new EntityDescriptor( + "Shape_Representation_Relationship", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiShape_representation_relationship ); + s_config_control_design->AddEntity(config_control_designe_shape_representation_relationship); + config_control_designe_shape_representation_relationship->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: ('CONFIG_CONTROL_DESIGN.SHAPE_REPRESENTATION' IN \n\t(TYPEOF\n\t(SELF\\ representation_relationship.rep_1) + TYPEOF\n\t(SELF\\ representation_relationship.rep_2)));\n"); + config_control_designe_shape_representation_relationship->_where_rules->Append(wr); + config_control_designe_assembly_component_usage_substitute = new EntityDescriptor( + "Assembly_Component_Usage_Substitute", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiAssembly_component_usage_substitute ); + s_config_control_design->AddEntity(config_control_designe_assembly_component_usage_substitute); + config_control_designe_assembly_component_usage_substitute->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (base.relating_product_definition :=: substitute. relating_product_definition);\n"); + config_control_designe_assembly_component_usage_substitute->_where_rules->Append(wr); + wr = new Where_rule("wr2: (base :<>: substitute);\n"); + config_control_designe_assembly_component_usage_substitute->_where_rules->Append(wr); + config_control_designe_assembly_component_usage_substitute->_uniqueness_rules = new Uniqueness_rule__set; + ur = new Uniqueness_rule("UR1 : base, substitute;\n"); + config_control_designe_assembly_component_usage_substitute->_uniqueness_rules->Append(ur); + config_control_designe_degenerate_pcurve = new EntityDescriptor( + "Degenerate_Pcurve", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiDegenerate_pcurve ); + s_config_control_design->AddEntity(config_control_designe_degenerate_pcurve); + config_control_designe_degenerate_pcurve->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SIZEOF\n\t(reference_to_curve\\representation.items) = 1);\n"); + config_control_designe_degenerate_pcurve->_where_rules->Append(wr); + wr = new Where_rule("wr2: ('CONFIG_CONTROL_DESIGN.CURVE' IN TYPEOF\n\t(reference_to_curve\\representation. items[1]));\n"); + config_control_designe_degenerate_pcurve->_where_rules->Append(wr); + wr = new Where_rule("wr3: (reference_to_curve\\representation.items[1]\\geometric_representation_item. dim = 2);\n"); + config_control_designe_degenerate_pcurve->_where_rules->Append(wr); + config_control_designe_evaluated_degenerate_pcurve = new EntityDescriptor( + "Evaluated_Degenerate_Pcurve", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiEvaluated_degenerate_pcurve ); + s_config_control_design->AddEntity(config_control_designe_evaluated_degenerate_pcurve); + config_control_designe_solid_angle_measure_with_unit = new EntityDescriptor( + "Solid_Angle_Measure_With_Unit", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiSolid_angle_measure_with_unit ); + s_config_control_design->AddEntity(config_control_designe_solid_angle_measure_with_unit); + config_control_designe_solid_angle_measure_with_unit->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: ('CONFIG_CONTROL_DESIGN.SOLID_ANGLE_UNIT' IN TYPEOF\n\t(SELF\\measure_with_unit. unit_component));\n"); + config_control_designe_solid_angle_measure_with_unit->_where_rules->Append(wr); + config_control_designe_connected_edge_set = new EntityDescriptor( + "Connected_Edge_Set", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiConnected_edge_set ); + s_config_control_design->AddEntity(config_control_designe_connected_edge_set); + config_control_designe_action = new EntityDescriptor( + "Action", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiAction ); + s_config_control_design->AddEntity(config_control_designe_action); + config_control_designe_executed_action = new EntityDescriptor( + "Executed_Action", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiExecuted_action ); + s_config_control_design->AddEntity(config_control_designe_executed_action); + config_control_designe_directed_action = new EntityDescriptor( + "Directed_Action", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiDirected_action ); + s_config_control_design->AddEntity(config_control_designe_directed_action); + config_control_designe_organizational_project = new EntityDescriptor( + "Organizational_Project", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiOrganizational_project ); + s_config_control_design->AddEntity(config_control_designe_organizational_project); + config_control_designe_date_time_role = new EntityDescriptor( + "Date_Time_Role", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiDate_time_role ); + s_config_control_design->AddEntity(config_control_designe_date_time_role); + config_control_designe_curve_bounded_surface = new EntityDescriptor( + "Curve_Bounded_Surface", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiCurve_bounded_surface ); + s_config_control_design->AddEntity(config_control_designe_curve_bounded_surface); + config_control_designe_curve_bounded_surface->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (NOT \n\t(implicit_outer AND \n\t('CONFIG_CONTROL_DESIGN.OUTER_BOUNDARY_CURVE' IN TYPEOF\n\t(boundaries))));\n"); + config_control_designe_curve_bounded_surface->_where_rules->Append(wr); + wr = new Where_rule("wr2: (\n\t(NOT implicit_outer) OR \n\t('CONFIG_CONTROL_DESIGN.BOUNDED_SURFACE' IN TYPEOF\n\t(basis_surface)));\n"); + config_control_designe_curve_bounded_surface->_where_rules->Append(wr); + wr = new Where_rule("wr3: (SIZEOF\n\t(QUERY \n\t( temp <* boundaries | \n\t( 'CONFIG_CONTROL_DESIGN.OUTER_BOUNDARY_CURVE' IN TYPEOF\n\t(temp)) )) <= 1);\n"); + config_control_designe_curve_bounded_surface->_where_rules->Append(wr); + wr = new Where_rule("wr4: (SIZEOF\n\t(QUERY \n\t( temp <* boundaries | \n\t(temp\\composite_curve_on_surface. basis_surface[1] :<>: SELF.basis_surface) )) = 0);\n"); + config_control_designe_curve_bounded_surface->_where_rules->Append(wr); + config_control_designe_closed_shell = new EntityDescriptor( + "Closed_Shell", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiClosed_shell ); + s_config_control_design->AddEntity(config_control_designe_closed_shell); + config_control_designe_design_make_from_relationship = new EntityDescriptor( + "Design_Make_From_Relationship", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiDesign_make_from_relationship ); + s_config_control_design->AddEntity(config_control_designe_design_make_from_relationship); + config_control_designe_definitional_representation = new EntityDescriptor( + "Definitional_Representation", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiDefinitional_representation ); + s_config_control_design->AddEntity(config_control_designe_definitional_representation); + config_control_designe_definitional_representation->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: ('CONFIG_CONTROL_DESIGN.PARAMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF\n\t(SELF\\ representation.context_of_items));\n"); + config_control_designe_definitional_representation->_where_rules->Append(wr); + config_control_designe_product_definition_shape = new EntityDescriptor( + "Product_Definition_Shape", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiProduct_definition_shape ); + s_config_control_design->AddEntity(config_control_designe_product_definition_shape); + config_control_designe_product_definition_shape->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: ('CONFIG_CONTROL_DESIGN.CHARACTERIZED_PRODUCT_DEFINITION' IN TYPEOF\n\t(SELF\\ property_definition.definition));\n"); + config_control_designe_product_definition_shape->_where_rules->Append(wr); + config_control_designe_product_definition_shape->_uniqueness_rules = new Uniqueness_rule__set; + ur = new Uniqueness_rule("UR1 : definition;\n"); + config_control_designe_product_definition_shape->_uniqueness_rules->Append(ur); + config_control_designe_si_unit = new EntityDescriptor( + "Si_Unit", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiSi_unit ); + s_config_control_design->AddEntity(config_control_designe_si_unit); + config_control_designe_bezier_surface = new EntityDescriptor( + "Bezier_Surface", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiBezier_surface ); + s_config_control_design->AddEntity(config_control_designe_bezier_surface); + config_control_designe_certification_assignment = new EntityDescriptor( + "Certification_Assignment", s_config_control_design, SCLLOG(LTrue), SCLLOG(LFalse), + (Creator) create_SdaiCertification_assignment ); + s_config_control_design->AddEntity(config_control_designe_certification_assignment); + config_control_designe_start_work = new EntityDescriptor( + "Start_Work", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiStart_work ); + s_config_control_design->AddEntity(config_control_designe_start_work); + config_control_designe_contract_type = new EntityDescriptor( + "Contract_Type", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiContract_type ); + s_config_control_design->AddEntity(config_control_designe_contract_type); + config_control_designe_b_spline_curve_with_knots = new EntityDescriptor( + "B_Spline_Curve_With_Knots", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiB_spline_curve_with_knots ); + s_config_control_design->AddEntity(config_control_designe_b_spline_curve_with_knots); + config_control_designe_b_spline_curve_with_knots->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (constraints_param_b_spline\n\t(degree,upper_index_on_knots, upper_index_on_control_points,knot_multiplicities,knots));\n"); + config_control_designe_b_spline_curve_with_knots->_where_rules->Append(wr); + wr = new Where_rule("wr2: (SIZEOF\n\t(knot_multiplicities) = upper_index_on_knots);\n"); + config_control_designe_b_spline_curve_with_knots->_where_rules->Append(wr); + config_control_designe_cc_design_approval = new EntityDescriptor( + "Cc_Design_Approval", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiCc_design_approval ); + s_config_control_design->AddEntity(config_control_designe_cc_design_approval); + config_control_designe_edge_based_wireframe_shape_representation = new EntityDescriptor( + "Edge_Based_Wireframe_Shape_Representation", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiEdge_based_wireframe_shape_representation ); + s_config_control_design->AddEntity(config_control_designe_edge_based_wireframe_shape_representation); + config_control_designe_edge_based_wireframe_shape_representation->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SIZEOF\n\t(QUERY \n\t( it <* SELF\\representation.items | \n\t(NOT \n\t(SIZEOF\n\t([ 'CONFIG_CONTROL_DESIGN.EDGE_BASED_WIREFRAME_MODEL', 'CONFIG_CONTROL_DESIGN.MAPPED_ITEM', 'CONFIG_CONTROL_DESIGN.AXIS2_PLACEMENT_3D'] * TYPEOF\n\t(it)) = 1)) )) = 0);\n"); + config_control_designe_edge_based_wireframe_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr2: (SIZEOF\n\t(QUERY \n\t( it <* SELF\\representation.items | \n\t(SIZEOF\n\t([ 'CONFIG_CONTROL_DESIGN.EDGE_BASED_WIREFRAME_MODEL', 'CONFIG_CONTROL_DESIGN.MAPPED_ITEM'] * TYPEOF\n\t(it)) = 1) )) >= 1);\n"); + config_control_designe_edge_based_wireframe_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr3: (SIZEOF\n\t(QUERY \n\t( ebwm <* QUERY \n\t( it <* SELF\\representation.items | \n\t( 'CONFIG_CONTROL_DESIGN.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( eb <* ebwm\\edge_based_wireframe_model. ebwm_boundary | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( edges <* eb.ces_edges | \n\t(NOT \n\t( 'CONFIG_CONTROL_DESIGN.EDGE_CURVE' IN TYPEOF\n\t(edges))) )) = 0)) )) = 0)) )) = 0);\n"); + config_control_designe_edge_based_wireframe_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr4: (SIZEOF\n\t(QUERY \n\t( ebwm <* QUERY \n\t( it <* SELF\\representation.items | \n\t( 'CONFIG_CONTROL_DESIGN.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( eb <* ebwm\\edge_based_wireframe_model. ebwm_boundary | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( pline_edges <* QUERY \n\t( edges <* eb.ces_edges | \n\t('CONFIG_CONTROL_DESIGN.POLYLINE' IN TYPEOF\n\t(edges\\edge_curve.edge_geometry)) ) | \n\t(NOT \n\t(SIZEOF\n\t( pline_edges\\edge_curve.edge_geometry\\polyline.points) > 2)) )) = 0)) )) = 0)) )) = 0);\n"); + config_control_designe_edge_based_wireframe_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr5: (SIZEOF\n\t(QUERY \n\t( ebwm <* QUERY \n\t( it <* SELF\\representation.items | \n\t( 'CONFIG_CONTROL_DESIGN.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( eb <* ebwm\\edge_based_wireframe_model. ebwm_boundary | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( edges <* eb.ces_edges | \n\t(NOT \n\t( \n\t('CONFIG_CONTROL_DESIGN.VERTEX_POINT' IN TYPEOF\n\t(edges.edge_start)) AND \n\t('CONFIG_CONTROL_DESIGN.VERTEX_POINT' IN TYPEOF\n\t(edges.edge_end)))) )) = 0)) )) = 0)) )) = 0);\n"); + config_control_designe_edge_based_wireframe_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr6: (SIZEOF\n\t(QUERY \n\t( ebwm <* QUERY \n\t( it <* SELF\\representation.items | \n\t( 'CONFIG_CONTROL_DESIGN.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( eb <* ebwm\\edge_based_wireframe_model. ebwm_boundary | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( edges <* eb.ces_edges | \n\t(NOT valid_wireframe_edge_curve\n\t(edges\\edge_curve.edge_geometry, 'CONFIG_CONTROL_DESIGN')) )) = 0)) )) = 0)) )) = 0);\n"); + config_control_designe_edge_based_wireframe_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr7: (SIZEOF\n\t(QUERY \n\t( ebwm <* QUERY \n\t( it <* SELF\\representation.items | \n\t( 'CONFIG_CONTROL_DESIGN.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( eb <* ebwm\\edge_based_wireframe_model. ebwm_boundary | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( edges <* eb.ces_edges | \n\t(NOT \n\t( valid_wireframe_vertex_point\n\t(edges.edge_start\\vertex_point. vertex_geometry,'CONFIG_CONTROL_DESIGN') AND valid_wireframe_vertex_point\n\t(edges.edge_end\\vertex_point. vertex_geometry,'CONFIG_CONTROL_DESIGN'))) )) = 0)) )) = 0)) )) = 0);\n"); + config_control_designe_edge_based_wireframe_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr8: (SIZEOF\n\t(QUERY \n\t( ebwm <* QUERY \n\t( it <* SELF\\representation.items | \n\t( 'CONFIG_CONTROL_DESIGN.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( eb <* ebwm\\edge_based_wireframe_model. ebwm_boundary | \n\t(NOT \n\t(SIZEOF\n\t(QUERY \n\t( con_edges <* QUERY \n\t( edges <* eb.ces_edges | \n\t('CONFIG_CONTROL_DESIGN.CONIC' IN TYPEOF\n\t(edges\\ edge_curve.edge_geometry)) ) | \n\t(NOT \n\t( 'CONFIG_CONTROL_DESIGN.AXIS2_PLACEMENT_3D' IN TYPEOF\n\t(con_edges\\ edge_curve.edge_geometry\\conic.position))) )) = 0)) )) = 0)) )) = 0);\n"); + config_control_designe_edge_based_wireframe_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr9: (SIZEOF\n\t(QUERY \n\t( mi <* QUERY \n\t( item <* SELF\\representation.items | \n\t( 'CONFIG_CONTROL_DESIGN.MAPPED_ITEM' IN TYPEOF\n\t(item)) ) | \n\t(NOT \n\t(\n\t( 'CONFIG_CONTROL_DESIGN.' + 'EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION') IN TYPEOF\n\t(mi\\ mapped_item.mapping_source.mapped_representation))) )) = 0);\n"); + config_control_designe_edge_based_wireframe_shape_representation->_where_rules->Append(wr); + config_control_designe_geometrically_bounded_wireframe_shape_representation = new EntityDescriptor( + "Geometrically_Bounded_Wireframe_Shape_Representation", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiGeometrically_bounded_wireframe_shape_representation ); + s_config_control_design->AddEntity(config_control_designe_geometrically_bounded_wireframe_shape_representation); + config_control_designe_geometrically_bounded_wireframe_shape_representation->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SIZEOF\n\t(QUERY \n\t( it <* SELF\\representation.items | \n\t(NOT \n\t(SIZEOF\n\t([ 'CONFIG_CONTROL_DESIGN.GEOMETRIC_CURVE_SET', 'CONFIG_CONTROL_DESIGN.MAPPED_ITEM', 'CONFIG_CONTROL_DESIGN.AXIS2_PLACEMENT_3D'] * TYPEOF\n\t(it)) = 1)) )) = 0);\n"); + config_control_designe_geometrically_bounded_wireframe_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr2: (SIZEOF\n\t(QUERY \n\t( it <* SELF\\representation.items | \n\t(SIZEOF\n\t([ 'CONFIG_CONTROL_DESIGN.GEOMETRIC_CURVE_SET', 'CONFIG_CONTROL_DESIGN.MAPPED_ITEM'] * TYPEOF\n\t(it)) = 1) )) >= 1);\n"); + config_control_designe_geometrically_bounded_wireframe_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr3: (SIZEOF\n\t(QUERY \n\t( gcs <* QUERY \n\t( it <* SELF\\representation.items | \n\t( 'CONFIG_CONTROL_DESIGN.GEOMETRIC_CURVE_SET' IN TYPEOF\n\t(it)) ) | \n\t( NOT \n\t(SIZEOF\n\t(QUERY \n\t( elem <* gcs\\geometric_set.elements | \n\t(NOT valid_geometrically_bounded_wf_curve\n\t(elem,'CONFIG_CONTROL_DESIGN')) )) = 0)) )) = 0);\n"); + config_control_designe_geometrically_bounded_wireframe_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr4: (SIZEOF\n\t(QUERY \n\t( gcs <* QUERY \n\t( it <* SELF\\representation.items | \n\t( 'CONFIG_CONTROL_DESIGN.GEOMETRIC_CURVE_SET' IN TYPEOF\n\t(it)) ) | \n\t( NOT \n\t(SIZEOF\n\t(QUERY \n\t( pnts <* QUERY \n\t( elem <* gcs\\geometric_set. elements | \n\t('CONFIG_CONTROL_DESIGN.POINT' IN TYPEOF\n\t(elem)) ) | \n\t( NOT valid_geometrically_bounded_wf_point\n\t(pnts, 'CONFIG_CONTROL_DESIGN')) )) = 0)) )) = 0);\n"); + config_control_designe_geometrically_bounded_wireframe_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr5: (SIZEOF\n\t(QUERY \n\t( gcs <* QUERY \n\t( it <* SELF\\representation.items | \n\t( 'CONFIG_CONTROL_DESIGN.GEOMETRIC_CURVE_SET' IN TYPEOF\n\t(it)) ) | \n\t( NOT \n\t(SIZEOF\n\t(QUERY \n\t( cnc <* QUERY \n\t( elem <* gcs\\geometric_set. elements | \n\t('CONFIG_CONTROL_DESIGN.CONIC' IN TYPEOF\n\t(elem)) ) | \n\t( NOT \n\t('CONFIG_CONTROL_DESIGN.AXIS2_PLACEMENT_3D' IN TYPEOF\n\t(cnc\\conic .position))) )) = 0)) )) = 0);\n"); + config_control_designe_geometrically_bounded_wireframe_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr6: (SIZEOF\n\t(QUERY \n\t( gcs <* QUERY \n\t( it <* SELF\\representation.items | \n\t( 'CONFIG_CONTROL_DESIGN.GEOMETRIC_CURVE_SET' IN TYPEOF\n\t(it)) ) | \n\t( NOT \n\t(SIZEOF\n\t(QUERY \n\t( pline <* QUERY \n\t( elem <* gcs\\geometric_set. elements | \n\t('CONFIG_CONTROL_DESIGN.POLYLINE' IN TYPEOF\n\t(elem)) ) | \n\t( NOT \n\t(SIZEOF\n\t(pline\\polyline.points) > 2)) )) = 0)) )) = 0);\n"); + config_control_designe_geometrically_bounded_wireframe_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr7: (SIZEOF\n\t(QUERY \n\t( mi <* QUERY \n\t( item <* SELF\\representation.items | \n\t( 'CONFIG_CONTROL_DESIGN.MAPPED_ITEM' IN TYPEOF\n\t(item)) ) | \n\t(NOT \n\t(\n\t( 'CONFIG_CONTROL_DESIGN.' + 'GEOMETRICALLY_BOUNDED_WIREFRAME_REPRESENTATION') IN TYPEOF\n\t(mi\\ mapped_item.mapping_source.mapped_representation))) )) = 0);\n"); + config_control_designe_geometrically_bounded_wireframe_shape_representation->_where_rules->Append(wr); + config_control_designe_product_concept = new EntityDescriptor( + "Product_Concept", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiProduct_concept ); + s_config_control_design->AddEntity(config_control_designe_product_concept); + config_control_designe_product_concept->_uniqueness_rules = new Uniqueness_rule__set; + ur = new Uniqueness_rule("UR1 : id;\n"); + config_control_designe_product_concept->_uniqueness_rules->Append(ur); + config_control_designe_cc_design_contract = new EntityDescriptor( + "Cc_Design_Contract", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiCc_design_contract ); + s_config_control_design->AddEntity(config_control_designe_cc_design_contract); + config_control_designe_seam_curve = new EntityDescriptor( + "Seam_Curve", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiSeam_curve ); + s_config_control_design->AddEntity(config_control_designe_seam_curve); + config_control_designe_seam_curve->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SIZEOF\n\t(SELF\\surface_curve.associated_geometry) = 2);\n"); + config_control_designe_seam_curve->_where_rules->Append(wr); + wr = new Where_rule("wr2: (associated_surface\n\t(SELF\\surface_curve.associated_geometry[1]) = associated_surface\n\t(SELF\\surface_curve.associated_geometry[2]));\n"); + config_control_designe_seam_curve->_where_rules->Append(wr); + wr = new Where_rule("wr3: ('CONFIG_CONTROL_DESIGN.PCURVE' IN TYPEOF\n\t(SELF\\surface_curve. associated_geometry[1]));\n"); + config_control_designe_seam_curve->_where_rules->Append(wr); + wr = new Where_rule("wr4: ('CONFIG_CONTROL_DESIGN.PCURVE' IN TYPEOF\n\t(SELF\\surface_curve. associated_geometry[2]));\n"); + config_control_designe_seam_curve->_where_rules->Append(wr); + config_control_designe_axis2_placement_3d = new EntityDescriptor( + "Axis2_Placement_3d", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiAxis2_placement_3d ); + s_config_control_design->AddEntity(config_control_designe_axis2_placement_3d); + config_control_designe_axis2_placement_3d->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SELF\\placement.location.dim = 3);\n"); + config_control_designe_axis2_placement_3d->_where_rules->Append(wr); + wr = new Where_rule("wr2: (\n\t(NOT EXISTS\n\t(axis)) OR \n\t(axis.dim = 3));\n"); + config_control_designe_axis2_placement_3d->_where_rules->Append(wr); + wr = new Where_rule("wr3: (\n\t(NOT EXISTS\n\t(ref_direction)) OR \n\t(ref_direction.dim = 3));\n"); + config_control_designe_axis2_placement_3d->_where_rules->Append(wr); + wr = new Where_rule("wr4: (\n\t(NOT EXISTS\n\t(axis)) OR \n\t(NOT EXISTS\n\t(ref_direction)) OR \n\t(cross_product\n\t(axis, ref_direction).magnitude > 0));\n"); + config_control_designe_axis2_placement_3d->_where_rules->Append(wr); + config_control_designe_rational_b_spline_surface = new EntityDescriptor( + "Rational_B_Spline_Surface", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiRational_b_spline_surface ); + s_config_control_design->AddEntity(config_control_designe_rational_b_spline_surface); + config_control_designe_rational_b_spline_surface->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (\n\t(SIZEOF\n\t(weights_data) = SIZEOF\n\t(SELF\\b_spline_surface.control_points_list)) AND \n\t(SIZEOF\n\t(weights_data[1]) = SIZEOF\n\t(SELF\\b_spline_surface. control_points_list[1])));\n"); + config_control_designe_rational_b_spline_surface->_where_rules->Append(wr); + wr = new Where_rule("wr2: (surface_weights_positive\n\t(SELF));\n"); + config_control_designe_rational_b_spline_surface->_where_rules->Append(wr); + config_control_designe_configuration_design = new EntityDescriptor( + "Configuration_Design", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiConfiguration_design ); + s_config_control_design->AddEntity(config_control_designe_configuration_design); + config_control_designe_configuration_design->_uniqueness_rules = new Uniqueness_rule__set; + ur = new Uniqueness_rule("UR1 : configuration, design;\n"); + config_control_designe_configuration_design->_uniqueness_rules->Append(ur); + config_control_designe_design_context = new EntityDescriptor( + "Design_Context", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiDesign_context ); + s_config_control_design->AddEntity(config_control_designe_design_context); + config_control_designe_design_context->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SELF.life_cycle_stage = 'design');\n"); + config_control_designe_design_context->_where_rules->Append(wr); + config_control_designe_product_definition = new EntityDescriptor( + "Product_Definition", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiProduct_definition ); + s_config_control_design->AddEntity(config_control_designe_product_definition); + config_control_designe_product_definition_with_associated_documents = new EntityDescriptor( + "Product_Definition_With_Associated_Documents", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiProduct_definition_with_associated_documents ); + s_config_control_design->AddEntity(config_control_designe_product_definition_with_associated_documents); + config_control_designe_organization = new EntityDescriptor( + "Organization", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiOrganization ); + s_config_control_design->AddEntity(config_control_designe_organization); + config_control_designe_cc_design_certification = new EntityDescriptor( + "Cc_Design_Certification", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiCc_design_certification ); + s_config_control_design->AddEntity(config_control_designe_cc_design_certification); + config_control_designe_b_spline_surface_with_knots = new EntityDescriptor( + "B_Spline_Surface_With_Knots", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiB_spline_surface_with_knots ); + s_config_control_design->AddEntity(config_control_designe_b_spline_surface_with_knots); + config_control_designe_b_spline_surface_with_knots->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (constraints_param_b_spline\n\t(SELF\\b_spline_surface.u_degree,knot_u_upper, SELF\\b_spline_surface.u_upper,u_multiplicities,u_knots));\n"); + config_control_designe_b_spline_surface_with_knots->_where_rules->Append(wr); + wr = new Where_rule("wr2: (constraints_param_b_spline\n\t(SELF\\b_spline_surface.v_degree,knot_v_upper, SELF\\b_spline_surface.v_upper,v_multiplicities,v_knots));\n"); + config_control_designe_b_spline_surface_with_knots->_where_rules->Append(wr); + wr = new Where_rule("wr3: (SIZEOF\n\t(u_multiplicities) = knot_u_upper);\n"); + config_control_designe_b_spline_surface_with_knots->_where_rules->Append(wr); + wr = new Where_rule("wr4: (SIZEOF\n\t(v_multiplicities) = knot_v_upper);\n"); + config_control_designe_b_spline_surface_with_knots->_where_rules->Append(wr); + config_control_designe_certification_type = new EntityDescriptor( + "Certification_Type", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiCertification_type ); + s_config_control_design->AddEntity(config_control_designe_certification_type); + config_control_designe_oriented_path = new EntityDescriptor( + "Oriented_Path", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiOriented_path ); + s_config_control_design->AddEntity(config_control_designe_oriented_path); + config_control_designe_oriented_path->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (NOT \n\t('CONFIG_CONTROL_DESIGN.ORIENTED_PATH' IN TYPEOF\n\t(SELF.path_element)));\n"); + config_control_designe_oriented_path->_where_rules->Append(wr); + config_control_designe_security_classification = new EntityDescriptor( + "Security_Classification", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiSecurity_classification ); + s_config_control_design->AddEntity(config_control_designe_security_classification); + config_control_designe_vertex_loop = new EntityDescriptor( + "Vertex_Loop", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiVertex_loop ); + s_config_control_design->AddEntity(config_control_designe_vertex_loop); + config_control_designe_approval_status = new EntityDescriptor( + "Approval_Status", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiApproval_status ); + s_config_control_design->AddEntity(config_control_designe_approval_status); + config_control_designe_cartesian_point = new EntityDescriptor( + "Cartesian_Point", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiCartesian_point ); + s_config_control_design->AddEntity(config_control_designe_cartesian_point); + config_control_designe_date_and_time_assignment = new EntityDescriptor( + "Date_And_Time_Assignment", s_config_control_design, SCLLOG(LTrue), SCLLOG(LFalse), + (Creator) create_SdaiDate_and_time_assignment ); + s_config_control_design->AddEntity(config_control_designe_date_and_time_assignment); + config_control_designe_parametric_representation_context = new EntityDescriptor( + "Parametric_Representation_Context", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiParametric_representation_context ); + s_config_control_design->AddEntity(config_control_designe_parametric_representation_context); + config_control_designe_product_concept_context = new EntityDescriptor( + "Product_Concept_Context", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiProduct_concept_context ); + s_config_control_design->AddEntity(config_control_designe_product_concept_context); + config_control_designe_cartesian_transformation_operator_2d = new EntityDescriptor( + "Cartesian_Transformation_Operator_2d", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiCartesian_transformation_operator_2d ); + s_config_control_design->AddEntity(config_control_designe_cartesian_transformation_operator_2d); + config_control_designe_cartesian_transformation_operator_2d->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SELF\\cartesian_transformation_operator.dim = 2);\n"); + config_control_designe_cartesian_transformation_operator_2d->_where_rules->Append(wr); + config_control_designe_surface_patch = new EntityDescriptor( + "Surface_Patch", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiSurface_patch ); + s_config_control_design->AddEntity(config_control_designe_surface_patch); + config_control_designe_surface_patch->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (NOT \n\t('CONFIG_CONTROL_DESIGN.CURVE_BOUNDED_SURFACE' IN TYPEOF\n\t( parent_surface)));\n"); + config_control_designe_surface_patch->_where_rules->Append(wr); + config_control_designe_length_unit = new EntityDescriptor( + "Length_Unit", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiLength_unit ); + s_config_control_design->AddEntity(config_control_designe_length_unit); + config_control_designe_length_unit->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (\n\t(SELF\\named_unit.dimensions.length_exponent = 1) AND \n\t(SELF\\named_unit. dimensions.mass_exponent = 0) AND \n\t(SELF\\named_unit.dimensions. time_exponent = 0) AND \n\t(SELF\\named_unit.dimensions. electric_current_exponent = 0) AND \n\t(SELF\\named_unit.dimensions. thermodynamic_temperature_exponent = 0) AND \n\t(SELF\\named_unit. dimensions.amount_of_substance_exponent = 0) AND \n\t(SELF\\named_unit. dimensions.luminous_intensity_exponent = 0));\n"); + config_control_designe_length_unit->_where_rules->Append(wr); + config_control_designe_shape_aspect = new EntityDescriptor( + "Shape_Aspect", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiShape_aspect ); + s_config_control_design->AddEntity(config_control_designe_shape_aspect); + config_control_designe_volume_measure_with_unit = new EntityDescriptor( + "Volume_Measure_With_Unit", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiVolume_measure_with_unit ); + s_config_control_design->AddEntity(config_control_designe_volume_measure_with_unit); + config_control_designe_volume_measure_with_unit->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: ('CONFIG_CONTROL_DESIGN.VOLUME_UNIT' IN TYPEOF\n\t(SELF\\measure_with_unit. unit_component));\n"); + config_control_designe_volume_measure_with_unit->_where_rules->Append(wr); + config_control_designe_advanced_face = new EntityDescriptor( + "Advanced_Face", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiAdvanced_face ); + s_config_control_design->AddEntity(config_control_designe_advanced_face); + config_control_designe_advanced_face->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SIZEOF\n\t(['CONFIG_CONTROL_DESIGN.ELEMENTARY_SURFACE', 'CONFIG_CONTROL_DESIGN.B_SPLINE_SURFACE', 'CONFIG_CONTROL_DESIGN.SWEPT_SURFACE'] * TYPEOF\n\t(face_geometry)) = 1);\n"); + config_control_designe_advanced_face->_where_rules->Append(wr); + wr = new Where_rule("wr2: (SIZEOF\n\t(QUERY \n\t( bnd <* bounds | \n\t(NOT \n\t(SIZEOF\n\t([ 'CONFIG_CONTROL_DESIGN.EDGE_LOOP', 'CONFIG_CONTROL_DESIGN.VERTEX_LOOP'] * TYPEOF\n\t(bnd)) = 1)) )) = 0);\n"); + config_control_designe_advanced_face->_where_rules->Append(wr); + wr = new Where_rule("wr3: (SIZEOF\n\t(QUERY \n\t( elp_fbnds <* QUERY \n\t( bnds <* bounds | \n\t( 'CONFIG_CONTROL_DESIGN.EDGE_LOOP' IN TYPEOF\n\t(bnds.bound)) ) | \n\t(NOT \n\t( SIZEOF\n\t(QUERY \n\t( oe <* elp_fbnds.bound\\path.edge_list | \n\t(NOT \n\t( 'CONFIG_CONTROL_DESIGN.EDGE_CURVE' IN TYPEOF\n\t(oe.edge_element))) )) = 0)) )) = 0);\n"); + config_control_designe_advanced_face->_where_rules->Append(wr); + wr = new Where_rule("wr4: (SIZEOF\n\t(QUERY \n\t( elp_fbnds <* QUERY \n\t( bnds <* bounds | \n\t( 'CONFIG_CONTROL_DESIGN.EDGE_LOOP' IN TYPEOF\n\t(bnds.bound)) ) | \n\t(NOT \n\t( SIZEOF\n\t(QUERY \n\t( oe <* elp_fbnds.bound\\path.edge_list | \n\t(NOT \n\t(\n\t( 'CONFIG_CONTROL_DESIGN.VERTEX_POINT' IN TYPEOF\n\t(oe.edge_start)) AND \n\t('CONFIG_CONTROL_DESIGN.VERTEX_POINT' IN TYPEOF\n\t(oe.edge_end)))) )) = 0)) )) = 0);\n"); + config_control_designe_advanced_face->_where_rules->Append(wr); + wr = new Where_rule("wr5: (SIZEOF\n\t(QUERY \n\t( elp_fbnds <* QUERY \n\t( bnds <* bounds | \n\t( 'CONFIG_CONTROL_DESIGN.EDGE_LOOP' IN TYPEOF\n\t(bnds.bound)) ) | \n\t(NOT \n\t( SIZEOF\n\t(QUERY \n\t( oe <* elp_fbnds.bound\\path.edge_list | \n\t(NOT \n\t(SIZEOF\n\t( ['CONFIG_CONTROL_DESIGN.LINE','CONFIG_CONTROL_DESIGN.CONIC', 'CONFIG_CONTROL_DESIGN.POLYLINE','CONFIG_CONTROL_DESIGN.PCURVE', 'CONFIG_CONTROL_DESIGN.B_SPLINE_CURVE'] * TYPEOF\n\t(oe.edge_element\\ edge_curve.edge_geometry)) = 1)) )) = 0)) )) = 0);\n"); + config_control_designe_advanced_face->_where_rules->Append(wr); + wr = new Where_rule("wr6: (SIZEOF\n\t(QUERY \n\t( elp_fbnds <* QUERY \n\t( bnds <* bounds | \n\t( 'CONFIG_CONTROL_DESIGN.EDGE_LOOP' IN TYPEOF\n\t(bnds.bound)) ) | \n\t(NOT \n\t( 'CONFIG_CONTROL_DESIGN.ORIENTED_PATH' IN TYPEOF\n\t(elp_fbnds.bound))) )) = 0);\n"); + config_control_designe_advanced_face->_where_rules->Append(wr); + wr = new Where_rule("wr7: (\n\t(NOT \n\t('CONFIG_CONTROL_DESIGN.SWEPT_SURFACE' IN TYPEOF\n\t(face_geometry))) OR \n\t(SIZEOF\n\t(['CONFIG_CONTROL_DESIGN.LINE','CONFIG_CONTROL_DESIGN.CONIC', 'CONFIG_CONTROL_DESIGN.POLYLINE', 'CONFIG_CONTROL_DESIGN.B_SPLINE_CURVE'] * TYPEOF\n\t(face_geometry\\ swept_surface.swept_curve)) = 1));\n"); + config_control_designe_advanced_face->_where_rules->Append(wr); + wr = new Where_rule("wr8: (SIZEOF\n\t(QUERY \n\t( vlp_fbnds <* QUERY \n\t( bnds <* bounds | \n\t( 'CONFIG_CONTROL_DESIGN.VERTEX_LOOP' IN TYPEOF\n\t(bnds.bound)) ) | \n\t( NOT \n\t(\n\t('CONFIG_CONTROL_DESIGN.VERTEX_POINT' IN TYPEOF\n\t(vlp_fbnds. bound\\vertex_loop.loop_vertex)) AND \n\t( 'CONFIG_CONTROL_DESIGN.CARTESIAN_POINT' IN TYPEOF\n\t(vlp_fbnds.bound\\ vertex_loop.loop_vertex\\vertex_point.vertex_geometry)))) )) = 0);\n"); + config_control_designe_advanced_face->_where_rules->Append(wr); + config_control_designe_security_classification_level = new EntityDescriptor( + "Security_Classification_Level", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiSecurity_classification_level ); + s_config_control_design->AddEntity(config_control_designe_security_classification_level); + config_control_designe_approval_relationship = new EntityDescriptor( + "Approval_Relationship", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiApproval_relationship ); + s_config_control_design->AddEntity(config_control_designe_approval_relationship); + config_control_designe_polyline = new EntityDescriptor( + "Polyline", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiPolyline ); + s_config_control_design->AddEntity(config_control_designe_polyline); + config_control_designe_approval_person_organization = new EntityDescriptor( + "Approval_Person_Organization", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiApproval_person_organization ); + s_config_control_design->AddEntity(config_control_designe_approval_person_organization); + config_control_designe_surface_replica = new EntityDescriptor( + "Surface_Replica", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiSurface_replica ); + s_config_control_design->AddEntity(config_control_designe_surface_replica); + config_control_designe_surface_replica->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (acyclic_surface_replica\n\t(SELF,parent_surface));\n"); + config_control_designe_surface_replica->_where_rules->Append(wr); + config_control_designe_security_classification_assignment = new EntityDescriptor( + "Security_Classification_Assignment", s_config_control_design, SCLLOG(LTrue), SCLLOG(LFalse), + (Creator) create_SdaiSecurity_classification_assignment ); + s_config_control_design->AddEntity(config_control_designe_security_classification_assignment); + config_control_designe_cc_design_security_classification = new EntityDescriptor( + "Cc_Design_Security_Classification", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiCc_design_security_classification ); + s_config_control_design->AddEntity(config_control_designe_cc_design_security_classification); + config_control_designe_faceted_brep_shape_representation = new EntityDescriptor( + "Faceted_Brep_Shape_Representation", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiFaceted_brep_shape_representation ); + s_config_control_design->AddEntity(config_control_designe_faceted_brep_shape_representation); + config_control_designe_faceted_brep_shape_representation->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (SIZEOF\n\t(QUERY \n\t( it <* items | \n\t(NOT \n\t(SIZEOF\n\t([ 'CONFIG_CONTROL_DESIGN.FACETED_BREP', 'CONFIG_CONTROL_DESIGN.MAPPED_ITEM', 'CONFIG_CONTROL_DESIGN.AXIS2_PLACEMENT_3D'] * TYPEOF\n\t(it)) = 1)) )) = 0);\n"); + config_control_designe_faceted_brep_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr2: (SIZEOF\n\t(QUERY \n\t( it <* items | \n\t(SIZEOF\n\t(['CONFIG_CONTROL_DESIGN.FACETED_BREP', 'CONFIG_CONTROL_DESIGN.MAPPED_ITEM'] * TYPEOF\n\t(it)) = 1) )) > 0);\n"); + config_control_designe_faceted_brep_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr3: (SIZEOF\n\t(QUERY \n\t( fbrep <* QUERY \n\t( it <* items | \n\t( 'CONFIG_CONTROL_DESIGN.FACETED_BREP' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t( SIZEOF\n\t(QUERY \n\t( csh <* msb_shells\n\t(fbrep,'CONFIG_CONTROL_DESIGN') | \n\t( NOT \n\t(SIZEOF\n\t(QUERY \n\t( fcs <* csh.cfs_faces | \n\t(NOT \n\t(\n\t( 'CONFIG_CONTROL_DESIGN.FACE_SURFACE' IN TYPEOF\n\t(fcs)) AND \n\t( 'CONFIG_CONTROL_DESIGN.PLANE' IN TYPEOF\n\t(fcs\\face_surface. face_geometry)) AND \n\t('CONFIG_CONTROL_DESIGN.CARTESIAN_POINT' IN TYPEOF\n\t(fcs\\face_surface.face_geometry\\plane.position.location)))) )) = 0)) )) = 0)) )) = 0);\n"); + config_control_designe_faceted_brep_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr4: (SIZEOF\n\t(QUERY \n\t( fbrep <* QUERY \n\t( it <* items | \n\t( 'CONFIG_CONTROL_DESIGN.FACETED_BREP' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t( SIZEOF\n\t(QUERY \n\t( csh <* msb_shells\n\t(fbrep,'CONFIG_CONTROL_DESIGN') | \n\t( NOT \n\t(SIZEOF\n\t(QUERY \n\t( fcs <* csh.cfs_faces | \n\t(NOT \n\t(SIZEOF\n\t( QUERY \n\t( bnds <* fcs.bounds | \n\t( 'CONFIG_CONTROL_DESIGN.FACE_OUTER_BOUND' IN TYPEOF\n\t(bnds)) )) = 1)) )) = 0)) )) = 0)) )) = 0);\n"); + config_control_designe_faceted_brep_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr5: (SIZEOF\n\t(QUERY \n\t( msb <* QUERY \n\t( it <* items | \n\t( 'CONFIG_CONTROL_DESIGN.MANIFOLD_SOLID_BREP' IN TYPEOF\n\t(it)) ) | \n\t( 'CONFIG_CONTROL_DESIGN.ORIENTED_CLOSED_SHELL' IN TYPEOF\n\t(msb\\ manifold_solid_brep.outer)) )) = 0);\n"); + config_control_designe_faceted_brep_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr6: (SIZEOF\n\t(QUERY \n\t( brv <* QUERY \n\t( it <* items | \n\t( 'CONFIG_CONTROL_DESIGN.BREP_WITH_VOIDS' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t( SIZEOF\n\t(QUERY \n\t( csh <* brv\\brep_with_voids.voids | csh\\ oriented_closed_shell.orientation )) = 0)) )) = 0);\n"); + config_control_designe_faceted_brep_shape_representation->_where_rules->Append(wr); + wr = new Where_rule("wr7: (SIZEOF\n\t(QUERY \n\t( mi <* QUERY \n\t( it <* items | \n\t( 'CONFIG_CONTROL_DESIGN.MAPPED_ITEM' IN TYPEOF\n\t(it)) ) | \n\t(NOT \n\t( 'CONFIG_CONTROL_DESIGN.FACETED_BREP_SHAPE_REPRESENTATION' IN TYPEOF\n\t(mi\\mapped_item.mapping_source.mapped_representation))) )) = 0);\n"); + config_control_designe_faceted_brep_shape_representation->_where_rules->Append(wr); + config_control_designe_document_usage_constraint = new EntityDescriptor( + "Document_Usage_Constraint", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiDocument_usage_constraint ); + s_config_control_design->AddEntity(config_control_designe_document_usage_constraint); + config_control_designe_vertex_point = new EntityDescriptor( + "Vertex_Point", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiVertex_point ); + s_config_control_design->AddEntity(config_control_designe_vertex_point); + config_control_designe_cc_design_date_and_time_assignment = new EntityDescriptor( + "Cc_Design_Date_And_Time_Assignment", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiCc_design_date_and_time_assignment ); + s_config_control_design->AddEntity(config_control_designe_cc_design_date_and_time_assignment); + config_control_designe_cc_design_date_and_time_assignment->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (cc_design_date_time_correlation\n\t(SELF));\n"); + config_control_designe_cc_design_date_and_time_assignment->_where_rules->Append(wr); + config_control_designe_oriented_closed_shell = new EntityDescriptor( + "Oriented_Closed_Shell", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiOriented_closed_shell ); + s_config_control_design->AddEntity(config_control_designe_oriented_closed_shell); + config_control_designe_oriented_closed_shell->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (NOT \n\t('CONFIG_CONTROL_DESIGN.ORIENTED_CLOSED_SHELL' IN TYPEOF\n\t(SELF. closed_shell_element)));\n"); + config_control_designe_oriented_closed_shell->_where_rules->Append(wr); + config_control_designe_person_and_organization = new EntityDescriptor( + "Person_And_Organization", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiPerson_and_organization ); + s_config_control_design->AddEntity(config_control_designe_person_and_organization); + config_control_designe_cylindrical_surface = new EntityDescriptor( + "Cylindrical_Surface", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiCylindrical_surface ); + s_config_control_design->AddEntity(config_control_designe_cylindrical_surface); + config_control_designe_local_time = new EntityDescriptor( + "Local_Time", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiLocal_time ); + s_config_control_design->AddEntity(config_control_designe_local_time); + config_control_designe_local_time->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (valid_time\n\t(SELF));\n"); + config_control_designe_local_time->_where_rules->Append(wr); + config_control_designe_mass_unit = new EntityDescriptor( + "Mass_Unit", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiMass_unit ); + s_config_control_design->AddEntity(config_control_designe_mass_unit); + config_control_designe_mass_unit->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (\n\t(SELF\\named_unit.dimensions.length_exponent = 0) AND \n\t(SELF\\named_unit. dimensions.mass_exponent = 1) AND \n\t(SELF\\named_unit.dimensions. time_exponent = 0) AND \n\t(SELF\\named_unit.dimensions. electric_current_exponent = 0) AND \n\t(SELF\\named_unit.dimensions. thermodynamic_temperature_exponent = 0) AND \n\t(SELF\\named_unit. dimensions.amount_of_substance_exponent = 0) AND \n\t(SELF\\named_unit. dimensions.luminous_intensity_exponent = 0));\n"); + config_control_designe_mass_unit->_where_rules->Append(wr); + config_control_designe_vertex_shell = new EntityDescriptor( + "Vertex_Shell", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiVertex_shell ); + s_config_control_design->AddEntity(config_control_designe_vertex_shell); + config_control_designe_poly_loop = new EntityDescriptor( + "Poly_Loop", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiPoly_loop ); + s_config_control_design->AddEntity(config_control_designe_poly_loop); + config_control_designe_wire_shell = new EntityDescriptor( + "Wire_Shell", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiWire_shell ); + s_config_control_design->AddEntity(config_control_designe_wire_shell); + config_control_designe_wire_shell->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (NOT mixed_loop_type_set\n\t(wire_shell_extent));\n"); + config_control_designe_wire_shell->_where_rules->Append(wr); + config_control_designe_area_unit = new EntityDescriptor( + "Area_Unit", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiArea_unit ); + s_config_control_design->AddEntity(config_control_designe_area_unit); + config_control_designe_area_unit->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (\n\t(SELF\\named_unit.dimensions.length_exponent = 2) AND \n\t(SELF\\named_unit. dimensions.mass_exponent = 0) AND \n\t(SELF\\named_unit.dimensions. time_exponent = 0) AND \n\t(SELF\\named_unit.dimensions. electric_current_exponent = 0) AND \n\t(SELF\\named_unit.dimensions. thermodynamic_temperature_exponent = 0) AND \n\t(SELF\\named_unit. dimensions.amount_of_substance_exponent = 0) AND \n\t(SELF\\named_unit. dimensions.luminous_intensity_exponent = 0));\n"); + config_control_designe_area_unit->_where_rules->Append(wr); + config_control_designe_mapped_item = new EntityDescriptor( + "Mapped_Item", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiMapped_item ); + s_config_control_design->AddEntity(config_control_designe_mapped_item); + config_control_designe_mapped_item->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (acyclic_mapped_representation\n\t(using_representations\n\t(SELF),[SELF]));\n"); + config_control_designe_mapped_item->_where_rules->Append(wr); + config_control_designe_offset_curve_2d = new EntityDescriptor( + "Offset_Curve_2d", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiOffset_curve_2d ); + s_config_control_design->AddEntity(config_control_designe_offset_curve_2d); + config_control_designe_offset_curve_2d->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (basis_curve.dim = 2);\n"); + config_control_designe_offset_curve_2d->_where_rules->Append(wr); + config_control_designe_shape_definition_representation = new EntityDescriptor( + "Shape_Definition_Representation", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiShape_definition_representation ); + s_config_control_design->AddEntity(config_control_designe_shape_definition_representation); + config_control_designe_shape_definition_representation->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (\n\t('CONFIG_CONTROL_DESIGN.SHAPE_DEFINITION' IN TYPEOF\n\t(SELF.definition. definition)) OR \n\t('CONFIG_CONTROL_DESIGN.PRODUCT_DEFINITION_SHAPE' IN TYPEOF\n\t(SELF.definition)));\n"); + config_control_designe_shape_definition_representation->_where_rules->Append(wr); + wr = new Where_rule("wr2: ('CONFIG_CONTROL_DESIGN.SHAPE_REPRESENTATION' IN TYPEOF\n\t(SELF. used_representation));\n"); + config_control_designe_shape_definition_representation->_where_rules->Append(wr); + config_control_designe_volume_unit = new EntityDescriptor( + "Volume_Unit", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiVolume_unit ); + s_config_control_design->AddEntity(config_control_designe_volume_unit); + config_control_designe_volume_unit->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (\n\t(SELF\\named_unit.dimensions.length_exponent = 3) AND \n\t(SELF\\named_unit. dimensions.mass_exponent = 0) AND \n\t(SELF\\named_unit.dimensions. time_exponent = 0) AND \n\t(SELF\\named_unit.dimensions. electric_current_exponent = 0) AND \n\t(SELF\\named_unit.dimensions. thermodynamic_temperature_exponent = 0) AND \n\t(SELF\\named_unit. dimensions.amount_of_substance_exponent = 0) AND \n\t(SELF\\named_unit. dimensions.luminous_intensity_exponent = 0));\n"); + config_control_designe_volume_unit->_where_rules->Append(wr); + config_control_designe_conical_surface = new EntityDescriptor( + "Conical_Surface", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiConical_surface ); + s_config_control_design->AddEntity(config_control_designe_conical_surface); + config_control_designe_conical_surface->_where_rules = new Where_rule__list; + wr = new Where_rule("wr1: (radius >= 0);\n"); + config_control_designe_conical_surface->_where_rules->Append(wr); + config_control_designe_global_unit_assigned_context = new EntityDescriptor( + "Global_Unit_Assigned_Context", s_config_control_design, SCLLOG(LFalse), SCLLOG(LFalse), + (Creator) create_SdaiGlobal_unit_assigned_context ); + s_config_control_design->AddEntity(config_control_designe_global_unit_assigned_context); + + //////////////// USE statements + //////////////// REFERENCE statements +} + +#endif diff --git a/source/geometry/solids/STEP/src/SdaiBinary.cc b/source/geometry/solids/STEP/src/SdaiBinary.cc index ac0b2a95f6..4ab3585495 100644 --- a/source/geometry/solids/STEP/src/SdaiBinary.cc +++ b/source/geometry/solids/STEP/src/SdaiBinary.cc @@ -1,35 +1,34 @@ - -// - - - -// -// $Id: SdaiBinary.cc,v 1.3 1999/12/15 14:50:17 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - /* * NIST STEP Core Class Library -* clstepcore/SdaiBinary.cc -* May 1995 +* clstepcore/sdaiBinary.cc +* April 1997 * David Sauder * Development of this software was funded by the United States Government, * and is not subject to copyright. */ -/* $Id: SdaiBinary.cc,v */ +/* $Id: sdaiBinary.cc,v */ -#include +#include "g4std/strstream" +#include extern Severity CheckRemainingInput(G4std::istream &in, ErrorDescriptor *err, const char *typeName, // used in error message const char *tokenList); // e.g. ",)" + +SCLP23(Binary)& +SCLP23(Binary)::operator= (const char* s) +{ + SCLstring::operator= (s); + return *this; +} + void -SdaiBinary::STEPwrite (G4std::ostream& out) const +SCLP23(Binary)::STEPwrite (G4std::ostream& out) const { const char *str = 0; if (is_null ()) @@ -48,7 +47,7 @@ SdaiBinary::STEPwrite (G4std::ostream& out) const } const char * -SdaiBinary::STEPwrite (SCLstring &s) const +SCLP23(Binary)::STEPwrite (SCLstring &s) const { const char *str = 0; if (is_null ()) @@ -71,8 +70,8 @@ SdaiBinary::STEPwrite (SCLstring &s) const } Severity -SdaiBinary::ReadBinary(G4std::istream& in, ErrorDescriptor *err, int AssignVal, - int needDelims) +SCLP23(Binary)::ReadBinary(G4std::istream& in, ErrorDescriptor *err, int AssignVal, + int needDelims) { if(AssignVal) set_null(); @@ -163,7 +162,7 @@ SdaiBinary::ReadBinary(G4std::istream& in, ErrorDescriptor *err, int AssignVal, } Severity -SdaiBinary::StrToVal (const char * s, ErrorDescriptor *err) +SCLP23(Binary)::StrToVal (const char * s, ErrorDescriptor *err) { G4std::istrstream in ((char *)s); // sz defaults to length of s return ReadBinary(in, err, 1, 0); @@ -256,7 +255,7 @@ SdaiBinary::StrToVal (const char * s, ErrorDescriptor *err) // delimited by double quotes Severity -SdaiBinary::STEPread (G4std::istream& in, ErrorDescriptor *err) +SCLP23(Binary)::STEPread (G4std::istream& in, ErrorDescriptor *err) { return ReadBinary(in, err, 1, 1); /* @@ -297,7 +296,7 @@ SdaiBinary::STEPread (G4std::istream& in, ErrorDescriptor *err) } Severity -SdaiBinary::STEPread (const char *s, ErrorDescriptor *err) +SCLP23(Binary)::STEPread (const char *s, ErrorDescriptor *err) { G4std::istrstream in((char *)s); return STEPread (in, err); @@ -313,8 +312,8 @@ SdaiBinary::STEPread (const char *s, ErrorDescriptor *err) // SEVERITY_NULL if it is valid for the value to be missing. No error // 'message' will be associated with the value being missing so you won\'t // have to worry about undoing an error message. -// * tokenList contains characters that Terminate the expected value. -// * If tokenList is not zero then the value is expected to Terminate before +// * tokenList contains characters that terminate the expected value. +// * If tokenList is not zero then the value is expected to terminate before // a character found in tokenlist. All values read up to the // terminating character (delimiter) must be valid or err will be set with an // appropriate error message. White space between the value and the @@ -324,9 +323,9 @@ SdaiBinary::STEPread (const char *s, ErrorDescriptor *err) /////////////////////////////////////////////////////////////////////////////// Severity -SdaiBinary::BinaryValidLevel (G4std::istream &in, ErrorDescriptor *err, - int optional, char *tokenList, - int needDelims, int clearError) +SCLP23(Binary)::BinaryValidLevel (G4std::istream &in, ErrorDescriptor *err, + int optional, char *tokenList, + int needDelims, int clearError) { if(clearError) err->ClearErrorMsg(); @@ -362,9 +361,9 @@ SdaiBinary::BinaryValidLevel (G4std::istream &in, ErrorDescriptor *err, } Severity -SdaiBinary::BinaryValidLevel (const char *value, ErrorDescriptor *err, - int optional, char *tokenList, - int needDelims, int clearError) +SCLP23(Binary)::BinaryValidLevel (const char *value, ErrorDescriptor *err, + int optional, char *tokenList, + int needDelims, int clearError) { G4std::istrstream in((char *)value); return BinaryValidLevel (in, err, optional, tokenList, diff --git a/source/geometry/solids/STEP/src/SdaiCONFIG_CONTROL_DESIGN.cc b/source/geometry/solids/STEP/src/SdaiCONFIG_CONTROL_DESIGN.cc index 0d1123cad6..7e2650a641 100644 --- a/source/geometry/solids/STEP/src/SdaiCONFIG_CONTROL_DESIGN.cc +++ b/source/geometry/solids/STEP/src/SdaiCONFIG_CONTROL_DESIGN.cc @@ -1,25 +1,32 @@ - - -// - - - -// -// $Id: SdaiCONFIG_CONTROL_DESIGN.cc,v 1.3 1999/12/15 14:50:17 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// #ifndef SDAICONFIG_CONTROL_DESIGN_CC #define SDAICONFIG_CONTROL_DESIGN_CC // 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 $ */ #ifndef SCHEMA_H #include #endif -#undef NULL -#define NULL 0 +#ifdef SCL_LOGGING +#include "g4std/fstream" + extern G4std::ofstream *logStream; +#define SCLLOGFILE "scl.log" +#endif + +#ifdef WIN32 + typedef SDAI::Select StepSelectType; +#endif + +static int debug_access_hooks = 0; + +#ifdef PART26 + +const char * sclHostName = CORBA::Orbix.myHost(); // Default is local host +#endif + +Schema *s_config_control_design =0; + /* ************** TYPES */ SelectTypeDescriptor *config_control_designt_characterized_definition; TypeDescriptor *config_control_designt_parameter_value; @@ -31,230 +38,800 @@ SelectTypeDescriptor *config_control_designt_characterized_product_definition; SelectTypeDescriptor *config_control_designt_reversible_topology_item; SelectTypeDescriptor *config_control_designt_axis2_placement; SetTypeDescriptor *config_control_designt_set_of_reversible_topology_item; + +#if __OSTORE__ +STEPaggregate * +create_SdaiSet_of_reversible_topology_item (os_database *db) { return create_SdaiReversible_topology_items(db); } +#else STEPaggregate * create_SdaiSet_of_reversible_topology_item () { return create_SdaiReversible_topology_items(); } +#endif TypeDescriptor *config_control_designt_week_in_year_number; EnumTypeDescriptor *config_control_designt_knot_type; - -////////// ENUMERATION TYPE knot_type +////////// ENUMERATION TYPE SdaiKnot_type_var const char * -SdaiKnot_type::element_at (int n) const { +SdaiKnot_type_var::element_at (int n) const { switch (n) { - case knot_type_UNIFORM_KNOTS : return "UNIFORM_KNOTS"; - case knot_type_QUASI_UNIFORM_KNOTS : return "QUASI_UNIFORM_KNOTS"; - case knot_type_PIECEWISE_BEZIER_KNOTS : return "PIECEWISE_BEZIER_KNOTS"; - case knot_type_UNSPECIFIED : return "UNSPECIFIED"; - default: return ""; + case Knot_type__uniform_knots : return "UNIFORM_KNOTS"; + case Knot_type__quasi_uniform_knots : return "QUASI_UNIFORM_KNOTS"; + case Knot_type__piecewise_bezier_knots : return "PIECEWISE_BEZIER_KNOTS"; + case Knot_type__unspecified : return "UNSPECIFIED"; + case Knot_type_unset : + default : return "UNSET"; } } -SdaiKnot_type::SdaiKnot_type (const char * n ) { + +SdaiKnot_type_var::SdaiKnot_type_var (const char * n, EnumTypeDescriptor *et) + : type(et) +{ set_value (n); } -SdaiKnot_type::operator sdaiKnot_type () const { + +#ifdef __OSTORE__ +void +SdaiKnot_type_var::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiKnot_type_var: virtual access function." << G4endl; + SdaiKnot_type_var_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiKnot_type_var_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + SdaiKnot_type_var *e = (SdaiKnot_type_var *)object; + if(e->type == 0) + e->type = config_control_designt_knot_type; +} + +#endif + +SdaiKnot_type_var::operator Knot_type () const { switch (v) { - case knot_type_UNIFORM_KNOTS : return knot_type_UNIFORM_KNOTS; - case knot_type_QUASI_UNIFORM_KNOTS : return knot_type_QUASI_UNIFORM_KNOTS; - case knot_type_PIECEWISE_BEZIER_KNOTS : return knot_type_PIECEWISE_BEZIER_KNOTS; - case knot_type_UNSPECIFIED : - default : return knot_type_UNSPECIFIED; + case Knot_type__uniform_knots : return Knot_type__uniform_knots; + case Knot_type__quasi_uniform_knots : return Knot_type__quasi_uniform_knots; + case Knot_type__piecewise_bezier_knots : return Knot_type__piecewise_bezier_knots; + case Knot_type__unspecified : return Knot_type__unspecified; + case Knot_type_unset : + default : return Knot_type_unset; } } +#ifdef __OSTORE__ + +SCLP23(Enum) * +create_SdaiKnot_type_var (os_database *db) +{ + if(db) + return new (db, + SdaiKnot_type_var::get_os_typespec()) SdaiKnot_type_var; + else + return new SdaiKnot_type_var( "", config_control_designt_knot_type ); +} + +#else + +SCLP23(Enum) * +create_SdaiKnot_type_var () +{ + return new SdaiKnot_type_var( "", config_control_designt_knot_type ); +} +#endif + + +SdaiKnot_type_vars::SdaiKnot_type_vars( EnumTypeDescriptor *et ) + : enum_type(et) +{ +} + +SdaiKnot_type_vars::~SdaiKnot_type_vars() +{ +} + +#ifdef __OSTORE__ +void +SdaiKnot_type_vars_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + SdaiKnot_type_vars *e = (SdaiKnot_type_vars *)object; + if(e->enum_type == 0) + e->enum_type = config_control_designt_knot_type; +} + +#endif + +#ifdef __OSTORE__ + +STEPaggregate * +create_SdaiKnot_type_vars (os_database *db) +{ + if(db) + return new (db, + SdaiKnot_type_vars::get_os_typespec()) SdaiKnot_type_vars; + else + return new SdaiKnot_type_vars( config_control_designt_knot_type ); +} + +#else + +STEPaggregate * +create_SdaiKnot_type_vars () +{ + return new SdaiKnot_type_vars( config_control_designt_knot_type ); +} +#endif + ////////// END ENUMERATION knot_type + SelectTypeDescriptor *config_control_designt_specified_item; TypeDescriptor *config_control_designt_minute_in_hour; EnumTypeDescriptor *config_control_designt_transition_code; - -////////// ENUMERATION TYPE transition_code +////////// ENUMERATION TYPE SdaiTransition_code_var const char * -SdaiTransition_code::element_at (int n) const { +SdaiTransition_code_var::element_at (int n) const { switch (n) { - case transition_code_DISCONTINUOUS : return "DISCONTINUOUS"; - case transition_code_CONT_SAME_GRADIENT_SAME_CURVATURE : return "CONT_SAME_GRADIENT_SAME_CURVATURE"; - case transition_code_CONT_SAME_GRADIENT : return "CONT_SAME_GRADIENT"; - case transition_code_CONTINUOUS : return "CONTINUOUS"; - default: return ""; + case Transition_code__discontinuous : return "DISCONTINUOUS"; + case Transition_code__cont_same_gradient_same_curvature : return "CONT_SAME_GRADIENT_SAME_CURVATURE"; + case Transition_code__cont_same_gradient : return "CONT_SAME_GRADIENT"; + case Transition_code__continuous : return "CONTINUOUS"; + case Transition_code_unset : + default : return "UNSET"; } } -SdaiTransition_code::SdaiTransition_code (const char * n ) { + +SdaiTransition_code_var::SdaiTransition_code_var (const char * n, EnumTypeDescriptor *et) + : type(et) +{ set_value (n); } -SdaiTransition_code::operator sdaiTransition_code () const { + +#ifdef __OSTORE__ +void +SdaiTransition_code_var::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiTransition_code_var: virtual access function." << G4endl; + SdaiTransition_code_var_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiTransition_code_var_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + SdaiTransition_code_var *e = (SdaiTransition_code_var *)object; + if(e->type == 0) + e->type = config_control_designt_transition_code; +} + +#endif + +SdaiTransition_code_var::operator Transition_code () const { switch (v) { - case transition_code_DISCONTINUOUS : return transition_code_DISCONTINUOUS; - case transition_code_CONT_SAME_GRADIENT_SAME_CURVATURE : return transition_code_CONT_SAME_GRADIENT_SAME_CURVATURE; - case transition_code_CONT_SAME_GRADIENT : return transition_code_CONT_SAME_GRADIENT; - case transition_code_CONTINUOUS : - default : return transition_code_CONTINUOUS; + case Transition_code__discontinuous : return Transition_code__discontinuous; + case Transition_code__cont_same_gradient_same_curvature : return Transition_code__cont_same_gradient_same_curvature; + case Transition_code__cont_same_gradient : return Transition_code__cont_same_gradient; + case Transition_code__continuous : return Transition_code__continuous; + case Transition_code_unset : + default : return Transition_code_unset; } } +#ifdef __OSTORE__ + +SCLP23(Enum) * +create_SdaiTransition_code_var (os_database *db) +{ + if(db) + return new (db, + SdaiTransition_code_var::get_os_typespec()) SdaiTransition_code_var; + else + return new SdaiTransition_code_var( "", config_control_designt_transition_code ); +} + +#else + +SCLP23(Enum) * +create_SdaiTransition_code_var () +{ + return new SdaiTransition_code_var( "", config_control_designt_transition_code ); +} +#endif + + +SdaiTransition_code_vars::SdaiTransition_code_vars( EnumTypeDescriptor *et ) + : enum_type(et) +{ +} + +SdaiTransition_code_vars::~SdaiTransition_code_vars() +{ +} + +#ifdef __OSTORE__ +void +SdaiTransition_code_vars_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + SdaiTransition_code_vars *e = (SdaiTransition_code_vars *)object; + if(e->enum_type == 0) + e->enum_type = config_control_designt_transition_code; +} + +#endif + +#ifdef __OSTORE__ + +STEPaggregate * +create_SdaiTransition_code_vars (os_database *db) +{ + if(db) + return new (db, + SdaiTransition_code_vars::get_os_typespec()) SdaiTransition_code_vars; + else + return new SdaiTransition_code_vars( config_control_designt_transition_code ); +} + +#else + +STEPaggregate * +create_SdaiTransition_code_vars () +{ + return new SdaiTransition_code_vars( config_control_designt_transition_code ); +} +#endif + ////////// END ENUMERATION transition_code + TypeDescriptor *config_control_designt_identifier; SelectTypeDescriptor *config_control_designt_measure_value; SelectTypeDescriptor *config_control_designt_person_organization_select; EnumTypeDescriptor *config_control_designt_preferred_surface_curve_representation; - -////////// ENUMERATION TYPE preferred_surface_curve_representation +////////// ENUMERATION TYPE SdaiPreferred_surface_curve_representation_var const char * -SdaiPreferred_surface_curve_representation::element_at (int n) const { +SdaiPreferred_surface_curve_representation_var::element_at (int n) const { switch (n) { - case preferred_surface_curve_representation_PCURVE_S2 : return "PCURVE_S2"; - case preferred_surface_curve_representation_PCURVE_S1 : return "PCURVE_S1"; - case preferred_surface_curve_representation_CURVE_3D : return "CURVE_3D"; - default: return ""; + case Preferred_surface_curve_representation__pcurve_s2 : return "PCURVE_S2"; + case Preferred_surface_curve_representation__pcurve_s1 : return "PCURVE_S1"; + case Preferred_surface_curve_representation__curve_3d : return "CURVE_3D"; + case Preferred_surface_curve_representation_unset : + default : return "UNSET"; } } -SdaiPreferred_surface_curve_representation::SdaiPreferred_surface_curve_representation (const char * n ) { + +SdaiPreferred_surface_curve_representation_var::SdaiPreferred_surface_curve_representation_var (const char * n, EnumTypeDescriptor *et) + : type(et) +{ set_value (n); } -SdaiPreferred_surface_curve_representation::operator sdaiPreferred_surface_curve_representation () const { + +#ifdef __OSTORE__ +void +SdaiPreferred_surface_curve_representation_var::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPreferred_surface_curve_representation_var: virtual access function." << G4endl; + SdaiPreferred_surface_curve_representation_var_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiPreferred_surface_curve_representation_var_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + SdaiPreferred_surface_curve_representation_var *e = (SdaiPreferred_surface_curve_representation_var *)object; + if(e->type == 0) + e->type = config_control_designt_preferred_surface_curve_representation; +} + +#endif + +SdaiPreferred_surface_curve_representation_var::operator Preferred_surface_curve_representation () const { switch (v) { - case preferred_surface_curve_representation_PCURVE_S2 : return preferred_surface_curve_representation_PCURVE_S2; - case preferred_surface_curve_representation_PCURVE_S1 : return preferred_surface_curve_representation_PCURVE_S1; - case preferred_surface_curve_representation_CURVE_3D : - default : return preferred_surface_curve_representation_CURVE_3D; + case Preferred_surface_curve_representation__pcurve_s2 : return Preferred_surface_curve_representation__pcurve_s2; + case Preferred_surface_curve_representation__pcurve_s1 : return Preferred_surface_curve_representation__pcurve_s1; + case Preferred_surface_curve_representation__curve_3d : return Preferred_surface_curve_representation__curve_3d; + case Preferred_surface_curve_representation_unset : + default : return Preferred_surface_curve_representation_unset; } } +#ifdef __OSTORE__ + +SCLP23(Enum) * +create_SdaiPreferred_surface_curve_representation_var (os_database *db) +{ + if(db) + return new (db, + SdaiPreferred_surface_curve_representation_var::get_os_typespec()) SdaiPreferred_surface_curve_representation_var; + else + return new SdaiPreferred_surface_curve_representation_var( "", config_control_designt_preferred_surface_curve_representation ); +} + +#else + +SCLP23(Enum) * +create_SdaiPreferred_surface_curve_representation_var () +{ + return new SdaiPreferred_surface_curve_representation_var( "", config_control_designt_preferred_surface_curve_representation ); +} +#endif + + +SdaiPreferred_surface_curve_representation_vars::SdaiPreferred_surface_curve_representation_vars( EnumTypeDescriptor *et ) + : enum_type(et) +{ +} + +SdaiPreferred_surface_curve_representation_vars::~SdaiPreferred_surface_curve_representation_vars() +{ +} + +#ifdef __OSTORE__ +void +SdaiPreferred_surface_curve_representation_vars_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + SdaiPreferred_surface_curve_representation_vars *e = (SdaiPreferred_surface_curve_representation_vars *)object; + if(e->enum_type == 0) + e->enum_type = config_control_designt_preferred_surface_curve_representation; +} + +#endif + +#ifdef __OSTORE__ + +STEPaggregate * +create_SdaiPreferred_surface_curve_representation_vars (os_database *db) +{ + if(db) + return new (db, + SdaiPreferred_surface_curve_representation_vars::get_os_typespec()) SdaiPreferred_surface_curve_representation_vars; + else + return new SdaiPreferred_surface_curve_representation_vars( config_control_designt_preferred_surface_curve_representation ); +} + +#else + +STEPaggregate * +create_SdaiPreferred_surface_curve_representation_vars () +{ + return new SdaiPreferred_surface_curve_representation_vars( config_control_designt_preferred_surface_curve_representation ); +} +#endif + ////////// END ENUMERATION preferred_surface_curve_representation + TypeDescriptor *config_control_designt_dimension_count; SelectTypeDescriptor *config_control_designt_pcurve_or_surface; TypeDescriptor *config_control_designt_positive_length_measure; EnumTypeDescriptor *config_control_designt_b_spline_curve_form; - -////////// ENUMERATION TYPE b_spline_curve_form +////////// ENUMERATION TYPE SdaiB_spline_curve_form_var const char * -SdaiB_spline_curve_form::element_at (int n) const { +SdaiB_spline_curve_form_var::element_at (int n) const { switch (n) { - case b_spline_curve_form_ELLIPTIC_ARC : return "ELLIPTIC_ARC"; - case b_spline_curve_form_POLYLINE_FORM : return "POLYLINE_FORM"; - case b_spline_curve_form_PARABOLIC_ARC : return "PARABOLIC_ARC"; - case b_spline_curve_form_CIRCULAR_ARC : return "CIRCULAR_ARC"; - case b_spline_curve_form_UNSPECIFIED : return "UNSPECIFIED"; - case b_spline_curve_form_HYPERBOLIC_ARC : return "HYPERBOLIC_ARC"; - default: return ""; + case B_spline_curve_form__elliptic_arc : return "ELLIPTIC_ARC"; + case B_spline_curve_form__polyline_form : return "POLYLINE_FORM"; + case B_spline_curve_form__parabolic_arc : return "PARABOLIC_ARC"; + case B_spline_curve_form__circular_arc : return "CIRCULAR_ARC"; + case B_spline_curve_form__unspecified : return "UNSPECIFIED"; + case B_spline_curve_form__hyperbolic_arc : return "HYPERBOLIC_ARC"; + case B_spline_curve_form_unset : + default : return "UNSET"; } } -SdaiB_spline_curve_form::SdaiB_spline_curve_form (const char * n ) { + +SdaiB_spline_curve_form_var::SdaiB_spline_curve_form_var (const char * n, EnumTypeDescriptor *et) + : type(et) +{ set_value (n); } -SdaiB_spline_curve_form::operator sdaiB_spline_curve_form () const { + +#ifdef __OSTORE__ +void +SdaiB_spline_curve_form_var::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiB_spline_curve_form_var: virtual access function." << G4endl; + SdaiB_spline_curve_form_var_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiB_spline_curve_form_var_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + SdaiB_spline_curve_form_var *e = (SdaiB_spline_curve_form_var *)object; + if(e->type == 0) + e->type = config_control_designt_b_spline_curve_form; +} + +#endif + +SdaiB_spline_curve_form_var::operator B_spline_curve_form () const { switch (v) { - case b_spline_curve_form_ELLIPTIC_ARC : return b_spline_curve_form_ELLIPTIC_ARC; - case b_spline_curve_form_POLYLINE_FORM : return b_spline_curve_form_POLYLINE_FORM; - case b_spline_curve_form_PARABOLIC_ARC : return b_spline_curve_form_PARABOLIC_ARC; - case b_spline_curve_form_CIRCULAR_ARC : return b_spline_curve_form_CIRCULAR_ARC; - case b_spline_curve_form_UNSPECIFIED : return b_spline_curve_form_UNSPECIFIED; - case b_spline_curve_form_HYPERBOLIC_ARC : - default : return b_spline_curve_form_HYPERBOLIC_ARC; + case B_spline_curve_form__elliptic_arc : return B_spline_curve_form__elliptic_arc; + case B_spline_curve_form__polyline_form : return B_spline_curve_form__polyline_form; + case B_spline_curve_form__parabolic_arc : return B_spline_curve_form__parabolic_arc; + case B_spline_curve_form__circular_arc : return B_spline_curve_form__circular_arc; + case B_spline_curve_form__unspecified : return B_spline_curve_form__unspecified; + case B_spline_curve_form__hyperbolic_arc : return B_spline_curve_form__hyperbolic_arc; + case B_spline_curve_form_unset : + default : return B_spline_curve_form_unset; } } +#ifdef __OSTORE__ + +SCLP23(Enum) * +create_SdaiB_spline_curve_form_var (os_database *db) +{ + if(db) + return new (db, + SdaiB_spline_curve_form_var::get_os_typespec()) SdaiB_spline_curve_form_var; + else + return new SdaiB_spline_curve_form_var( "", config_control_designt_b_spline_curve_form ); +} + +#else + +SCLP23(Enum) * +create_SdaiB_spline_curve_form_var () +{ + return new SdaiB_spline_curve_form_var( "", config_control_designt_b_spline_curve_form ); +} +#endif + + +SdaiB_spline_curve_form_vars::SdaiB_spline_curve_form_vars( EnumTypeDescriptor *et ) + : enum_type(et) +{ +} + +SdaiB_spline_curve_form_vars::~SdaiB_spline_curve_form_vars() +{ +} + +#ifdef __OSTORE__ +void +SdaiB_spline_curve_form_vars_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + SdaiB_spline_curve_form_vars *e = (SdaiB_spline_curve_form_vars *)object; + if(e->enum_type == 0) + e->enum_type = config_control_designt_b_spline_curve_form; +} + +#endif + +#ifdef __OSTORE__ + +STEPaggregate * +create_SdaiB_spline_curve_form_vars (os_database *db) +{ + if(db) + return new (db, + SdaiB_spline_curve_form_vars::get_os_typespec()) SdaiB_spline_curve_form_vars; + else + return new SdaiB_spline_curve_form_vars( config_control_designt_b_spline_curve_form ); +} + +#else + +STEPaggregate * +create_SdaiB_spline_curve_form_vars () +{ + return new SdaiB_spline_curve_form_vars( config_control_designt_b_spline_curve_form ); +} +#endif + ////////// END ENUMERATION b_spline_curve_form + TypeDescriptor *config_control_designt_hour_in_day; SelectTypeDescriptor *config_control_designt_classified_item; EnumTypeDescriptor *config_control_designt_si_unit_name; - -////////// ENUMERATION TYPE si_unit_name +////////// ENUMERATION TYPE SdaiSi_unit_name_var const char * -SdaiSi_unit_name::element_at (int n) const { +SdaiSi_unit_name_var::element_at (int n) const { switch (n) { - case si_unit_name_HERTZ : return "HERTZ"; - case si_unit_name_DEGREE_CELSIUS : return "DEGREE_CELSIUS"; - case si_unit_name_SIEMENS : return "SIEMENS"; - case si_unit_name_SIEVERT : return "SIEVERT"; - case si_unit_name_LUX : return "LUX"; - case si_unit_name_WATT : return "WATT"; - case si_unit_name_OHM : return "OHM"; - case si_unit_name_SECOND : return "SECOND"; - case si_unit_name_BECQUEREL : return "BECQUEREL"; - case si_unit_name_PASCAL : return "PASCAL"; - case si_unit_name_HENRY : return "HENRY"; - case si_unit_name_TESLA : return "TESLA"; - case si_unit_name_VOLT : return "VOLT"; - case si_unit_name_JOULE : return "JOULE"; - case si_unit_name_KELVIN : return "KELVIN"; - case si_unit_name_AMPERE : return "AMPERE"; - case si_unit_name_GRAM : return "GRAM"; - case si_unit_name_STERADIAN : return "STERADIAN"; - case si_unit_name_MOLE : return "MOLE"; - case si_unit_name_LUMEN : return "LUMEN"; - case si_unit_name_GRAY : return "GRAY"; - case si_unit_name_CANDELA : return "CANDELA"; - case si_unit_name_FARAD : return "FARAD"; - case si_unit_name_RADIAN : return "RADIAN"; - case si_unit_name_NEWTON : return "NEWTON"; - case si_unit_name_METRE : return "METRE"; - case si_unit_name_WEBER : return "WEBER"; - case si_unit_name_COULOMB : return "COULOMB"; - default: return ""; + case Si_unit_name__hertz : return "HERTZ"; + case Si_unit_name__degree_celsius : return "DEGREE_CELSIUS"; + case Si_unit_name__siemens : return "SIEMENS"; + case Si_unit_name__sievert : return "SIEVERT"; + case Si_unit_name__lux : return "LUX"; + case Si_unit_name__watt : return "WATT"; + case Si_unit_name__ohm : return "OHM"; + case Si_unit_name__second : return "SECOND"; + case Si_unit_name__becquerel : return "BECQUEREL"; + case Si_unit_name__pascal : return "PASCAL"; + case Si_unit_name__henry : return "HENRY"; + case Si_unit_name__tesla : return "TESLA"; + case Si_unit_name__volt : return "VOLT"; + case Si_unit_name__joule : return "JOULE"; + case Si_unit_name__kelvin : return "KELVIN"; + case Si_unit_name__ampere : return "AMPERE"; + case Si_unit_name__gram : return "GRAM"; + case Si_unit_name__steradian : return "STERADIAN"; + case Si_unit_name__mole : return "MOLE"; + case Si_unit_name__lumen : return "LUMEN"; + case Si_unit_name__gray : return "GRAY"; + case Si_unit_name__candela : return "CANDELA"; + case Si_unit_name__farad : return "FARAD"; + case Si_unit_name__radian : return "RADIAN"; + case Si_unit_name__newton : return "NEWTON"; + case Si_unit_name__metre : return "METRE"; + case Si_unit_name__weber : return "WEBER"; + case Si_unit_name__coulomb : return "COULOMB"; + case Si_unit_name_unset : + default : return "UNSET"; } } -SdaiSi_unit_name::SdaiSi_unit_name (const char * n ) { + +SdaiSi_unit_name_var::SdaiSi_unit_name_var (const char * n, EnumTypeDescriptor *et) + : type(et) +{ set_value (n); } -SdaiSi_unit_name::operator sdaiSi_unit_name () const { + +#ifdef __OSTORE__ +void +SdaiSi_unit_name_var::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSi_unit_name_var: virtual access function." << G4endl; + SdaiSi_unit_name_var_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiSi_unit_name_var_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + SdaiSi_unit_name_var *e = (SdaiSi_unit_name_var *)object; + if(e->type == 0) + e->type = config_control_designt_si_unit_name; +} + +#endif + +SdaiSi_unit_name_var::operator Si_unit_name () const { switch (v) { - case si_unit_name_HERTZ : return si_unit_name_HERTZ; - case si_unit_name_DEGREE_CELSIUS : return si_unit_name_DEGREE_CELSIUS; - case si_unit_name_SIEMENS : return si_unit_name_SIEMENS; - case si_unit_name_SIEVERT : return si_unit_name_SIEVERT; - case si_unit_name_LUX : return si_unit_name_LUX; - case si_unit_name_WATT : return si_unit_name_WATT; - case si_unit_name_OHM : return si_unit_name_OHM; - case si_unit_name_SECOND : return si_unit_name_SECOND; - case si_unit_name_BECQUEREL : return si_unit_name_BECQUEREL; - case si_unit_name_PASCAL : return si_unit_name_PASCAL; - case si_unit_name_HENRY : return si_unit_name_HENRY; - case si_unit_name_TESLA : return si_unit_name_TESLA; - case si_unit_name_VOLT : return si_unit_name_VOLT; - case si_unit_name_JOULE : return si_unit_name_JOULE; - case si_unit_name_KELVIN : return si_unit_name_KELVIN; - case si_unit_name_AMPERE : return si_unit_name_AMPERE; - case si_unit_name_GRAM : return si_unit_name_GRAM; - case si_unit_name_STERADIAN : return si_unit_name_STERADIAN; - case si_unit_name_MOLE : return si_unit_name_MOLE; - case si_unit_name_LUMEN : return si_unit_name_LUMEN; - case si_unit_name_GRAY : return si_unit_name_GRAY; - case si_unit_name_CANDELA : return si_unit_name_CANDELA; - case si_unit_name_FARAD : return si_unit_name_FARAD; - case si_unit_name_RADIAN : return si_unit_name_RADIAN; - case si_unit_name_NEWTON : return si_unit_name_NEWTON; - case si_unit_name_METRE : return si_unit_name_METRE; - case si_unit_name_WEBER : return si_unit_name_WEBER; - case si_unit_name_COULOMB : - default : return si_unit_name_COULOMB; + case Si_unit_name__hertz : return Si_unit_name__hertz; + case Si_unit_name__degree_celsius : return Si_unit_name__degree_celsius; + case Si_unit_name__siemens : return Si_unit_name__siemens; + case Si_unit_name__sievert : return Si_unit_name__sievert; + case Si_unit_name__lux : return Si_unit_name__lux; + case Si_unit_name__watt : return Si_unit_name__watt; + case Si_unit_name__ohm : return Si_unit_name__ohm; + case Si_unit_name__second : return Si_unit_name__second; + case Si_unit_name__becquerel : return Si_unit_name__becquerel; + case Si_unit_name__pascal : return Si_unit_name__pascal; + case Si_unit_name__henry : return Si_unit_name__henry; + case Si_unit_name__tesla : return Si_unit_name__tesla; + case Si_unit_name__volt : return Si_unit_name__volt; + case Si_unit_name__joule : return Si_unit_name__joule; + case Si_unit_name__kelvin : return Si_unit_name__kelvin; + case Si_unit_name__ampere : return Si_unit_name__ampere; + case Si_unit_name__gram : return Si_unit_name__gram; + case Si_unit_name__steradian : return Si_unit_name__steradian; + case Si_unit_name__mole : return Si_unit_name__mole; + case Si_unit_name__lumen : return Si_unit_name__lumen; + case Si_unit_name__gray : return Si_unit_name__gray; + case Si_unit_name__candela : return Si_unit_name__candela; + case Si_unit_name__farad : return Si_unit_name__farad; + case Si_unit_name__radian : return Si_unit_name__radian; + case Si_unit_name__newton : return Si_unit_name__newton; + case Si_unit_name__metre : return Si_unit_name__metre; + case Si_unit_name__weber : return Si_unit_name__weber; + case Si_unit_name__coulomb : return Si_unit_name__coulomb; + case Si_unit_name_unset : + default : return Si_unit_name_unset; } } +#ifdef __OSTORE__ + +SCLP23(Enum) * +create_SdaiSi_unit_name_var (os_database *db) +{ + if(db) + return new (db, + SdaiSi_unit_name_var::get_os_typespec()) SdaiSi_unit_name_var; + else + return new SdaiSi_unit_name_var( "", config_control_designt_si_unit_name ); +} + +#else + +SCLP23(Enum) * +create_SdaiSi_unit_name_var () +{ + return new SdaiSi_unit_name_var( "", config_control_designt_si_unit_name ); +} +#endif + + +SdaiSi_unit_name_vars::SdaiSi_unit_name_vars( EnumTypeDescriptor *et ) + : enum_type(et) +{ +} + +SdaiSi_unit_name_vars::~SdaiSi_unit_name_vars() +{ +} + +#ifdef __OSTORE__ +void +SdaiSi_unit_name_vars_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + SdaiSi_unit_name_vars *e = (SdaiSi_unit_name_vars *)object; + if(e->enum_type == 0) + e->enum_type = config_control_designt_si_unit_name; +} + +#endif + +#ifdef __OSTORE__ + +STEPaggregate * +create_SdaiSi_unit_name_vars (os_database *db) +{ + if(db) + return new (db, + SdaiSi_unit_name_vars::get_os_typespec()) SdaiSi_unit_name_vars; + else + return new SdaiSi_unit_name_vars( config_control_designt_si_unit_name ); +} + +#else + +STEPaggregate * +create_SdaiSi_unit_name_vars () +{ + return new SdaiSi_unit_name_vars( config_control_designt_si_unit_name ); +} +#endif + ////////// END ENUMERATION si_unit_name + TypeDescriptor *config_control_designt_day_in_month_number; EnumTypeDescriptor *config_control_designt_trimming_preference; - -////////// ENUMERATION TYPE trimming_preference +////////// ENUMERATION TYPE SdaiTrimming_preference_var const char * -SdaiTrimming_preference::element_at (int n) const { +SdaiTrimming_preference_var::element_at (int n) const { switch (n) { - case trimming_preference_PARAMETER : return "PARAMETER"; - case trimming_preference_UNSPECIFIED : return "UNSPECIFIED"; - case trimming_preference_CARTESIAN : return "CARTESIAN"; - default: return ""; + case Trimming_preference__parameter : return "PARAMETER"; + case Trimming_preference__unspecified : return "UNSPECIFIED"; + case Trimming_preference__cartesian : return "CARTESIAN"; + case Trimming_preference_unset : + default : return "UNSET"; } } -SdaiTrimming_preference::SdaiTrimming_preference (const char * n ) { + +SdaiTrimming_preference_var::SdaiTrimming_preference_var (const char * n, EnumTypeDescriptor *et) + : type(et) +{ set_value (n); } -SdaiTrimming_preference::operator sdaiTrimming_preference () const { + +#ifdef __OSTORE__ +void +SdaiTrimming_preference_var::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiTrimming_preference_var: virtual access function." << G4endl; + SdaiTrimming_preference_var_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiTrimming_preference_var_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + SdaiTrimming_preference_var *e = (SdaiTrimming_preference_var *)object; + if(e->type == 0) + e->type = config_control_designt_trimming_preference; +} + +#endif + +SdaiTrimming_preference_var::operator Trimming_preference () const { switch (v) { - case trimming_preference_PARAMETER : return trimming_preference_PARAMETER; - case trimming_preference_UNSPECIFIED : return trimming_preference_UNSPECIFIED; - case trimming_preference_CARTESIAN : - default : return trimming_preference_CARTESIAN; + case Trimming_preference__parameter : return Trimming_preference__parameter; + case Trimming_preference__unspecified : return Trimming_preference__unspecified; + case Trimming_preference__cartesian : return Trimming_preference__cartesian; + case Trimming_preference_unset : + default : return Trimming_preference_unset; } } +#ifdef __OSTORE__ + +SCLP23(Enum) * +create_SdaiTrimming_preference_var (os_database *db) +{ + if(db) + return new (db, + SdaiTrimming_preference_var::get_os_typespec()) SdaiTrimming_preference_var; + else + return new SdaiTrimming_preference_var( "", config_control_designt_trimming_preference ); +} + +#else + +SCLP23(Enum) * +create_SdaiTrimming_preference_var () +{ + return new SdaiTrimming_preference_var( "", config_control_designt_trimming_preference ); +} +#endif + + +SdaiTrimming_preference_vars::SdaiTrimming_preference_vars( EnumTypeDescriptor *et ) + : enum_type(et) +{ +} + +SdaiTrimming_preference_vars::~SdaiTrimming_preference_vars() +{ +} + +#ifdef __OSTORE__ +void +SdaiTrimming_preference_vars_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + SdaiTrimming_preference_vars *e = (SdaiTrimming_preference_vars *)object; + if(e->enum_type == 0) + e->enum_type = config_control_designt_trimming_preference; +} + +#endif + +#ifdef __OSTORE__ + +STEPaggregate * +create_SdaiTrimming_preference_vars (os_database *db) +{ + if(db) + return new (db, + SdaiTrimming_preference_vars::get_os_typespec()) SdaiTrimming_preference_vars; + else + return new SdaiTrimming_preference_vars( config_control_designt_trimming_preference ); +} + +#else + +STEPaggregate * +create_SdaiTrimming_preference_vars () +{ + return new SdaiTrimming_preference_vars( config_control_designt_trimming_preference ); +} +#endif + ////////// END ENUMERATION trimming_preference + SelectTypeDescriptor *config_control_designt_vector_or_direction; SelectTypeDescriptor *config_control_designt_wireframe_model; TypeDescriptor *config_control_designt_volume_measure; @@ -262,46 +839,140 @@ SelectTypeDescriptor *config_control_designt_geometric_set_select; TypeDescriptor *config_control_designt_positive_plane_angle_measure; SelectTypeDescriptor *config_control_designt_start_request_item; EnumTypeDescriptor *config_control_designt_b_spline_surface_form; - -////////// ENUMERATION TYPE b_spline_surface_form +////////// ENUMERATION TYPE SdaiB_spline_surface_form_var const char * -SdaiB_spline_surface_form::element_at (int n) const { +SdaiB_spline_surface_form_var::element_at (int n) const { switch (n) { - case b_spline_surface_form_SURF_OF_LINEAR_EXTRUSION : return "SURF_OF_LINEAR_EXTRUSION"; - case b_spline_surface_form_PLANE_SURF : return "PLANE_SURF"; - case b_spline_surface_form_GENERALISED_CONE : return "GENERALISED_CONE"; - case b_spline_surface_form_TOROIDAL_SURF : return "TOROIDAL_SURF"; - case b_spline_surface_form_CONICAL_SURF : return "CONICAL_SURF"; - case b_spline_surface_form_SPHERICAL_SURF : return "SPHERICAL_SURF"; - case b_spline_surface_form_UNSPECIFIED : return "UNSPECIFIED"; - case b_spline_surface_form_RULED_SURF : return "RULED_SURF"; - case b_spline_surface_form_SURF_OF_REVOLUTION : return "SURF_OF_REVOLUTION"; - case b_spline_surface_form_CYLINDRICAL_SURF : return "CYLINDRICAL_SURF"; - case b_spline_surface_form_QUADRIC_SURF : return "QUADRIC_SURF"; - default: return ""; + case B_spline_surface_form__surf_of_linear_extrusion : return "SURF_OF_LINEAR_EXTRUSION"; + case B_spline_surface_form__plane_surf : return "PLANE_SURF"; + case B_spline_surface_form__generalised_cone : return "GENERALISED_CONE"; + case B_spline_surface_form__toroidal_surf : return "TOROIDAL_SURF"; + case B_spline_surface_form__conical_surf : return "CONICAL_SURF"; + case B_spline_surface_form__spherical_surf : return "SPHERICAL_SURF"; + case B_spline_surface_form__unspecified : return "UNSPECIFIED"; + case B_spline_surface_form__ruled_surf : return "RULED_SURF"; + case B_spline_surface_form__surf_of_revolution : return "SURF_OF_REVOLUTION"; + case B_spline_surface_form__cylindrical_surf : return "CYLINDRICAL_SURF"; + case B_spline_surface_form__quadric_surf : return "QUADRIC_SURF"; + case B_spline_surface_form_unset : + default : return "UNSET"; } } -SdaiB_spline_surface_form::SdaiB_spline_surface_form (const char * n ) { + +SdaiB_spline_surface_form_var::SdaiB_spline_surface_form_var (const char * n, EnumTypeDescriptor *et) + : type(et) +{ set_value (n); } -SdaiB_spline_surface_form::operator sdaiB_spline_surface_form () const { + +#ifdef __OSTORE__ +void +SdaiB_spline_surface_form_var::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiB_spline_surface_form_var: virtual access function." << G4endl; + SdaiB_spline_surface_form_var_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiB_spline_surface_form_var_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + SdaiB_spline_surface_form_var *e = (SdaiB_spline_surface_form_var *)object; + if(e->type == 0) + e->type = config_control_designt_b_spline_surface_form; +} + +#endif + +SdaiB_spline_surface_form_var::operator B_spline_surface_form () const { switch (v) { - case b_spline_surface_form_SURF_OF_LINEAR_EXTRUSION : return b_spline_surface_form_SURF_OF_LINEAR_EXTRUSION; - case b_spline_surface_form_PLANE_SURF : return b_spline_surface_form_PLANE_SURF; - case b_spline_surface_form_GENERALISED_CONE : return b_spline_surface_form_GENERALISED_CONE; - case b_spline_surface_form_TOROIDAL_SURF : return b_spline_surface_form_TOROIDAL_SURF; - case b_spline_surface_form_CONICAL_SURF : return b_spline_surface_form_CONICAL_SURF; - case b_spline_surface_form_SPHERICAL_SURF : return b_spline_surface_form_SPHERICAL_SURF; - case b_spline_surface_form_UNSPECIFIED : return b_spline_surface_form_UNSPECIFIED; - case b_spline_surface_form_RULED_SURF : return b_spline_surface_form_RULED_SURF; - case b_spline_surface_form_SURF_OF_REVOLUTION : return b_spline_surface_form_SURF_OF_REVOLUTION; - case b_spline_surface_form_CYLINDRICAL_SURF : return b_spline_surface_form_CYLINDRICAL_SURF; - case b_spline_surface_form_QUADRIC_SURF : - default : return b_spline_surface_form_QUADRIC_SURF; + case B_spline_surface_form__surf_of_linear_extrusion : return B_spline_surface_form__surf_of_linear_extrusion; + case B_spline_surface_form__plane_surf : return B_spline_surface_form__plane_surf; + case B_spline_surface_form__generalised_cone : return B_spline_surface_form__generalised_cone; + case B_spline_surface_form__toroidal_surf : return B_spline_surface_form__toroidal_surf; + case B_spline_surface_form__conical_surf : return B_spline_surface_form__conical_surf; + case B_spline_surface_form__spherical_surf : return B_spline_surface_form__spherical_surf; + case B_spline_surface_form__unspecified : return B_spline_surface_form__unspecified; + case B_spline_surface_form__ruled_surf : return B_spline_surface_form__ruled_surf; + case B_spline_surface_form__surf_of_revolution : return B_spline_surface_form__surf_of_revolution; + case B_spline_surface_form__cylindrical_surf : return B_spline_surface_form__cylindrical_surf; + case B_spline_surface_form__quadric_surf : return B_spline_surface_form__quadric_surf; + case B_spline_surface_form_unset : + default : return B_spline_surface_form_unset; } } +#ifdef __OSTORE__ + +SCLP23(Enum) * +create_SdaiB_spline_surface_form_var (os_database *db) +{ + if(db) + return new (db, + SdaiB_spline_surface_form_var::get_os_typespec()) SdaiB_spline_surface_form_var; + else + return new SdaiB_spline_surface_form_var( "", config_control_designt_b_spline_surface_form ); +} + +#else + +SCLP23(Enum) * +create_SdaiB_spline_surface_form_var () +{ + return new SdaiB_spline_surface_form_var( "", config_control_designt_b_spline_surface_form ); +} +#endif + + +SdaiB_spline_surface_form_vars::SdaiB_spline_surface_form_vars( EnumTypeDescriptor *et ) + : enum_type(et) +{ +} + +SdaiB_spline_surface_form_vars::~SdaiB_spline_surface_form_vars() +{ +} + +#ifdef __OSTORE__ +void +SdaiB_spline_surface_form_vars_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + SdaiB_spline_surface_form_vars *e = (SdaiB_spline_surface_form_vars *)object; + if(e->enum_type == 0) + e->enum_type = config_control_designt_b_spline_surface_form; +} + +#endif + +#ifdef __OSTORE__ + +STEPaggregate * +create_SdaiB_spline_surface_form_vars (os_database *db) +{ + if(db) + return new (db, + SdaiB_spline_surface_form_vars::get_os_typespec()) SdaiB_spline_surface_form_vars; + else + return new SdaiB_spline_surface_form_vars( config_control_designt_b_spline_surface_form ); +} + +#else + +STEPaggregate * +create_SdaiB_spline_surface_form_vars () +{ + return new SdaiB_spline_surface_form_vars( config_control_designt_b_spline_surface_form ); +} +#endif + ////////// END ENUMERATION b_spline_surface_form + SelectTypeDescriptor *config_control_designt_person_organization_item; SelectTypeDescriptor *config_control_designt_date_time_item; SelectTypeDescriptor *config_control_designt_shell; @@ -314,28 +985,122 @@ TypeDescriptor *config_control_designt_solid_angle_measure; SelectTypeDescriptor *config_control_designt_curve_on_surface; SelectTypeDescriptor *config_control_designt_trimming_select; EnumTypeDescriptor *config_control_designt_ahead_or_behind; - -////////// ENUMERATION TYPE ahead_or_behind +////////// ENUMERATION TYPE SdaiAhead_or_behind_var const char * -SdaiAhead_or_behind::element_at (int n) const { +SdaiAhead_or_behind_var::element_at (int n) const { switch (n) { - case ahead_or_behind_AHEAD : return "AHEAD"; - case ahead_or_behind_BEHIND : return "BEHIND"; - default: return ""; + case Ahead_or_behind__ahead : return "AHEAD"; + case Ahead_or_behind__behind : return "BEHIND"; + case Ahead_or_behind_unset : + default : return "UNSET"; } } -SdaiAhead_or_behind::SdaiAhead_or_behind (const char * n ) { + +SdaiAhead_or_behind_var::SdaiAhead_or_behind_var (const char * n, EnumTypeDescriptor *et) + : type(et) +{ set_value (n); } -SdaiAhead_or_behind::operator sdaiAhead_or_behind () const { + +#ifdef __OSTORE__ +void +SdaiAhead_or_behind_var::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAhead_or_behind_var: virtual access function." << G4endl; + SdaiAhead_or_behind_var_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiAhead_or_behind_var_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + SdaiAhead_or_behind_var *e = (SdaiAhead_or_behind_var *)object; + if(e->type == 0) + e->type = config_control_designt_ahead_or_behind; +} + +#endif + +SdaiAhead_or_behind_var::operator Ahead_or_behind () const { switch (v) { - case ahead_or_behind_AHEAD : return ahead_or_behind_AHEAD; - case ahead_or_behind_BEHIND : - default : return ahead_or_behind_BEHIND; + case Ahead_or_behind__ahead : return Ahead_or_behind__ahead; + case Ahead_or_behind__behind : return Ahead_or_behind__behind; + case Ahead_or_behind_unset : + default : return Ahead_or_behind_unset; } } +#ifdef __OSTORE__ + +SCLP23(Enum) * +create_SdaiAhead_or_behind_var (os_database *db) +{ + if(db) + return new (db, + SdaiAhead_or_behind_var::get_os_typespec()) SdaiAhead_or_behind_var; + else + return new SdaiAhead_or_behind_var( "", config_control_designt_ahead_or_behind ); +} + +#else + +SCLP23(Enum) * +create_SdaiAhead_or_behind_var () +{ + return new SdaiAhead_or_behind_var( "", config_control_designt_ahead_or_behind ); +} +#endif + + +SdaiAhead_or_behind_vars::SdaiAhead_or_behind_vars( EnumTypeDescriptor *et ) + : enum_type(et) +{ +} + +SdaiAhead_or_behind_vars::~SdaiAhead_or_behind_vars() +{ +} + +#ifdef __OSTORE__ +void +SdaiAhead_or_behind_vars_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + SdaiAhead_or_behind_vars *e = (SdaiAhead_or_behind_vars *)object; + if(e->enum_type == 0) + e->enum_type = config_control_designt_ahead_or_behind; +} + +#endif + +#ifdef __OSTORE__ + +STEPaggregate * +create_SdaiAhead_or_behind_vars (os_database *db) +{ + if(db) + return new (db, + SdaiAhead_or_behind_vars::get_os_typespec()) SdaiAhead_or_behind_vars; + else + return new SdaiAhead_or_behind_vars( config_control_designt_ahead_or_behind ); +} + +#else + +STEPaggregate * +create_SdaiAhead_or_behind_vars () +{ + return new SdaiAhead_or_behind_vars( config_control_designt_ahead_or_behind ); +} +#endif + ////////// END ENUMERATION ahead_or_behind + SelectTypeDescriptor *config_control_designt_contracted_item; TypeDescriptor *config_control_designt_day_in_year_number; TypeDescriptor *config_control_designt_mass_measure; @@ -343,30 +1108,124 @@ TypeDescriptor *config_control_designt_descriptive_measure; TypeDescriptor *config_control_designt_area_measure; TypeDescriptor *config_control_designt_month_in_year_number; EnumTypeDescriptor *config_control_designt_source; - -////////// ENUMERATION TYPE source +////////// ENUMERATION TYPE SdaiSource_var const char * -SdaiSource::element_at (int n) const { +SdaiSource_var::element_at (int n) const { switch (n) { - case source_BOUGHT : return "BOUGHT"; - case source_NOT_KNOWN : return "NOT_KNOWN"; - case source_MADE : return "MADE"; - default: return ""; + case Source__bought : return "BOUGHT"; + case Source__not_known : return "NOT_KNOWN"; + case Source__made : return "MADE"; + case Source_unset : + default : return "UNSET"; } } -SdaiSource::SdaiSource (const char * n ) { + +SdaiSource_var::SdaiSource_var (const char * n, EnumTypeDescriptor *et) + : type(et) +{ set_value (n); } -SdaiSource::operator sdaiSource () const { + +#ifdef __OSTORE__ +void +SdaiSource_var::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSource_var: virtual access function." << G4endl; + SdaiSource_var_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiSource_var_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + SdaiSource_var *e = (SdaiSource_var *)object; + if(e->type == 0) + e->type = config_control_designt_source; +} + +#endif + +SdaiSource_var::operator Source () const { switch (v) { - case source_BOUGHT : return source_BOUGHT; - case source_NOT_KNOWN : return source_NOT_KNOWN; - case source_MADE : - default : return source_MADE; + case Source__bought : return Source__bought; + case Source__not_known : return Source__not_known; + case Source__made : return Source__made; + case Source_unset : + default : return Source_unset; } } +#ifdef __OSTORE__ + +SCLP23(Enum) * +create_SdaiSource_var (os_database *db) +{ + if(db) + return new (db, + SdaiSource_var::get_os_typespec()) SdaiSource_var; + else + return new SdaiSource_var( "", config_control_designt_source ); +} + +#else + +SCLP23(Enum) * +create_SdaiSource_var () +{ + return new SdaiSource_var( "", config_control_designt_source ); +} +#endif + + +SdaiSource_vars::SdaiSource_vars( EnumTypeDescriptor *et ) + : enum_type(et) +{ +} + +SdaiSource_vars::~SdaiSource_vars() +{ +} + +#ifdef __OSTORE__ +void +SdaiSource_vars_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + SdaiSource_vars *e = (SdaiSource_vars *)object; + if(e->enum_type == 0) + e->enum_type = config_control_designt_source; +} + +#endif + +#ifdef __OSTORE__ + +STEPaggregate * +create_SdaiSource_vars (os_database *db) +{ + if(db) + return new (db, + SdaiSource_vars::get_os_typespec()) SdaiSource_vars; + else + return new SdaiSource_vars( config_control_designt_source ); +} + +#else + +STEPaggregate * +create_SdaiSource_vars () +{ + return new SdaiSource_vars( config_control_designt_source ); +} +#endif + ////////// END ENUMERATION source + SelectTypeDescriptor *config_control_designt_unit; SelectTypeDescriptor *config_control_designt_reversible_topology; SelectTypeDescriptor *config_control_designt_work_item; @@ -376,108 +1235,262 @@ TypeDescriptor *config_control_designt_label; TypeDescriptor *config_control_designt_context_dependent_measure; SelectTypeDescriptor *config_control_designt_supported_item; EnumTypeDescriptor *config_control_designt_si_prefix; - -////////// ENUMERATION TYPE si_prefix +////////// ENUMERATION TYPE SdaiSi_prefix_var const char * -SdaiSi_prefix::element_at (int n) const { +SdaiSi_prefix_var::element_at (int n) const { switch (n) { - case si_prefix_EXA : return "EXA"; - case si_prefix_PICO : return "PICO"; - case si_prefix_MEGA : return "MEGA"; - case si_prefix_FEMTO : return "FEMTO"; - case si_prefix_ATTO : return "ATTO"; - case si_prefix_CENTI : return "CENTI"; - case si_prefix_NANO : return "NANO"; - case si_prefix_HECTO : return "HECTO"; - case si_prefix_MICRO : return "MICRO"; - case si_prefix_TERA : return "TERA"; - case si_prefix_GIGA : return "GIGA"; - case si_prefix_MILLI : return "MILLI"; - case si_prefix_PETA : return "PETA"; - case si_prefix_DECI : return "DECI"; - case si_prefix_KILO : return "KILO"; - case si_prefix_DECA : return "DECA"; - default: return ""; + case Si_prefix__exa : return "EXA"; + case Si_prefix__pico : return "PICO"; + case Si_prefix__mega : return "MEGA"; + case Si_prefix__femto : return "FEMTO"; + case Si_prefix__atto : return "ATTO"; + case Si_prefix__centi : return "CENTI"; + case Si_prefix__nano : return "NANO"; + case Si_prefix__hecto : return "HECTO"; + case Si_prefix__micro : return "MICRO"; + case Si_prefix__tera : return "TERA"; + case Si_prefix__giga : return "GIGA"; + case Si_prefix__milli : return "MILLI"; + case Si_prefix__peta : return "PETA"; + case Si_prefix__deci : return "DECI"; + case Si_prefix__kilo : return "KILO"; + case Si_prefix__deca : return "DECA"; + case Si_prefix_unset : + default : return "UNSET"; } } -SdaiSi_prefix::SdaiSi_prefix (const char * n ) { + +SdaiSi_prefix_var::SdaiSi_prefix_var (const char * n, EnumTypeDescriptor *et) + : type(et) +{ set_value (n); } -SdaiSi_prefix::operator sdaiSi_prefix () const { + +#ifdef __OSTORE__ +void +SdaiSi_prefix_var::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSi_prefix_var: virtual access function." << G4endl; + SdaiSi_prefix_var_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiSi_prefix_var_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + SdaiSi_prefix_var *e = (SdaiSi_prefix_var *)object; + if(e->type == 0) + e->type = config_control_designt_si_prefix; +} + +#endif + +SdaiSi_prefix_var::operator Si_prefix () const { switch (v) { - case si_prefix_EXA : return si_prefix_EXA; - case si_prefix_PICO : return si_prefix_PICO; - case si_prefix_MEGA : return si_prefix_MEGA; - case si_prefix_FEMTO : return si_prefix_FEMTO; - case si_prefix_ATTO : return si_prefix_ATTO; - case si_prefix_CENTI : return si_prefix_CENTI; - case si_prefix_NANO : return si_prefix_NANO; - case si_prefix_HECTO : return si_prefix_HECTO; - case si_prefix_MICRO : return si_prefix_MICRO; - case si_prefix_TERA : return si_prefix_TERA; - case si_prefix_GIGA : return si_prefix_GIGA; - case si_prefix_MILLI : return si_prefix_MILLI; - case si_prefix_PETA : return si_prefix_PETA; - case si_prefix_DECI : return si_prefix_DECI; - case si_prefix_KILO : return si_prefix_KILO; - case si_prefix_DECA : - default : return si_prefix_DECA; + case Si_prefix__exa : return Si_prefix__exa; + case Si_prefix__pico : return Si_prefix__pico; + case Si_prefix__mega : return Si_prefix__mega; + case Si_prefix__femto : return Si_prefix__femto; + case Si_prefix__atto : return Si_prefix__atto; + case Si_prefix__centi : return Si_prefix__centi; + case Si_prefix__nano : return Si_prefix__nano; + case Si_prefix__hecto : return Si_prefix__hecto; + case Si_prefix__micro : return Si_prefix__micro; + case Si_prefix__tera : return Si_prefix__tera; + case Si_prefix__giga : return Si_prefix__giga; + case Si_prefix__milli : return Si_prefix__milli; + case Si_prefix__peta : return Si_prefix__peta; + case Si_prefix__deci : return Si_prefix__deci; + case Si_prefix__kilo : return Si_prefix__kilo; + case Si_prefix__deca : return Si_prefix__deca; + case Si_prefix_unset : + default : return Si_prefix_unset; } } +#ifdef __OSTORE__ + +SCLP23(Enum) * +create_SdaiSi_prefix_var (os_database *db) +{ + if(db) + return new (db, + SdaiSi_prefix_var::get_os_typespec()) SdaiSi_prefix_var; + else + return new SdaiSi_prefix_var( "", config_control_designt_si_prefix ); +} + +#else + +SCLP23(Enum) * +create_SdaiSi_prefix_var () +{ + return new SdaiSi_prefix_var( "", config_control_designt_si_prefix ); +} +#endif + + +SdaiSi_prefix_vars::SdaiSi_prefix_vars( EnumTypeDescriptor *et ) + : enum_type(et) +{ +} + +SdaiSi_prefix_vars::~SdaiSi_prefix_vars() +{ +} + +#ifdef __OSTORE__ +void +SdaiSi_prefix_vars_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + SdaiSi_prefix_vars *e = (SdaiSi_prefix_vars *)object; + if(e->enum_type == 0) + e->enum_type = config_control_designt_si_prefix; +} + +#endif + +#ifdef __OSTORE__ + +STEPaggregate * +create_SdaiSi_prefix_vars (os_database *db) +{ + if(db) + return new (db, + SdaiSi_prefix_vars::get_os_typespec()) SdaiSi_prefix_vars; + else + return new SdaiSi_prefix_vars( config_control_designt_si_prefix ); +} + +#else + +STEPaggregate * +create_SdaiSi_prefix_vars () +{ + return new SdaiSi_prefix_vars( config_control_designt_si_prefix ); +} +#endif + ////////// END ENUMERATION si_prefix + TypeDescriptor *config_control_designt_length_measure; SelectTypeDescriptor *config_control_designt_approved_item; TypeDescriptor *config_control_designt_count_measure; SelectTypeDescriptor *config_control_designt_surface_model; ListTypeDescriptor *config_control_designt_list_of_reversible_topology_item; + +#if __OSTORE__ +STEPaggregate * +create_SdaiList_of_reversible_topology_item (os_database *db) { return create_SdaiReversible_topology_items(db); } +#else STEPaggregate * create_SdaiList_of_reversible_topology_item () { return create_SdaiReversible_topology_items(); } +#endif ////////// SELECT TYPE characterized_product_definition const TypeDescriptor * -SdaiCharacterized_product_definition::AssignEntity (STEPentity * se) +SdaiCharacterized_product_definition::AssignEntity (SCLP23(Application_instance) * se) { // PRODUCT_DEFINITION - if (se -> eDesc -> IsA (config_control_designe_product_definition)) + if (se -> IsA (config_control_designe_product_definition)) { - _stepentityh = (SdaiProduct_definitionH) se; + _app_inst = (SdaiProduct_definition_ptr) se; return SetUnderlyingType (config_control_designe_product_definition); } // PRODUCT_DEFINITION_RELATIONSHIP - if (se -> eDesc -> IsA (config_control_designe_product_definition_relationship)) + if (se -> IsA (config_control_designe_product_definition_relationship)) { - _stepentityh = (SdaiProduct_definition_relationshipH) se; + _app_inst = (SdaiProduct_definition_relationship_ptr) se; return SetUnderlyingType (config_control_designe_product_definition_relationship); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiCharacterized_product_definition::NewSelect () { - SdaiCharacterized_product_definition * tmp = new SdaiCharacterized_product_definition (); - return tmp; +#ifdef __OSTORE__ + SdaiCharacterized_product_definition * tmp = + new( os_segment::of(this), + SdaiCharacterized_product_definition::get_os_typespec() ) + SdaiCharacterized_product_definition(); +#else + SdaiCharacterized_product_definition * tmp = new SdaiCharacterized_product_definition(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiCharacterized_product_definition::STEPwrite_content (G4std::ostream& out) const +SdaiCharacterized_product_definition::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designe_product_definition) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_product_definition_relationship) - _stepentityh -> STEPwrite_reference (out); - else { + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_product_definition_relationship) + _app_inst -> STEPwrite_reference (out); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiCharacterized_product_definition::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designe_product_definition) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_product_definition_relationship) + return sdaiINSTANCE; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiCharacterized_product_definition::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designe_product_definition) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_product_definition_relationship) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -485,40 +1498,40 @@ SdaiCharacterized_product_definition::STEPwrite_content (G4std::ostream& out) co } Severity -SdaiCharacterized_product_definition::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiCharacterized_product_definition::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designe_product_definition) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_product_definition_relationship) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -530,11 +1543,12 @@ Severity SdaiCharacterized_product_definition::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -546,277 +1560,389 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiCharacterized_product_definition (os_database *db) +{ + return new (db, SdaiCharacterized_product_definition::get_os_typespec()) + SdaiCharacterized_product_definition ; +} + +void +SdaiCharacterized_product_definition_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiCharacterized_product_definition access hook funct called." << G4endl; + } +#endif + SdaiCharacterized_product_definition *s = (SdaiCharacterized_product_definition *) object; + s->_type = config_control_designt_characterized_product_definition; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiCharacterized_product_definitions (os_database *db) +{ + return new (db, SdaiCharacterized_product_definitions::get_os_typespec()) + SdaiCharacterized_product_definitions ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiCharacterized_product_definition::SdaiCharacterized_product_definition() - : SdaiSelect (config_control_designt_characterized_product_definition) +SdaiCharacterized_product_definition::SdaiCharacterized_product_definition( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiCharacterized_product_definition constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiCharacterized_product_definition constructor." << G4endl; + } +#endif } // part 1 -SdaiCharacterized_product_definition::SdaiCharacterized_product_definition( const SdaiProduct_definitionH& o ) - : SdaiSelect (config_control_designt_characterized_product_definition, config_control_designe_product_definition ) +SdaiCharacterized_product_definition::SdaiCharacterized_product_definition( const SdaiProduct_definition_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_product_definition) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiCharacterized_product_definition constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiCharacterized_product_definition constructor." << G4endl; + } +#endif } -SdaiCharacterized_product_definition::SdaiCharacterized_product_definition( const SdaiProduct_definition_relationshipH& o ) - : SdaiSelect (config_control_designt_characterized_product_definition, config_control_designe_product_definition_relationship ) +SdaiCharacterized_product_definition::SdaiCharacterized_product_definition( const SdaiProduct_definition_relationship_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_product_definition_relationship) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiCharacterized_product_definition constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiCharacterized_product_definition constructor." << G4endl; + } +#endif } SdaiCharacterized_product_definition::~SdaiCharacterized_product_definition() { } +SdaiCharacterized_product_definitions::SdaiCharacterized_product_definitions( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiCharacterized_product_definitions::~SdaiCharacterized_product_definitions() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiCharacterized_product_definitions::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiCharacterized_product_definition::get_os_typespec() ) + SdaiCharacterized_product_definition ); +} +#endif + // part 2 -SdaiCharacterized_product_definition::operator SdaiProduct_definitionH() +SdaiCharacterized_product_definition::operator SdaiProduct_definition_ptr() { if( CurrentUnderlyingType () == config_control_designe_product_definition ) - return ((SdaiProduct_definitionH) _stepentityh); + return ((SdaiProduct_definition_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiCharacterized_product_definition::operator SdaiProduct_definition_relationshipH() +SdaiCharacterized_product_definition::operator SdaiProduct_definition_relationship_ptr() { if( CurrentUnderlyingType () == config_control_designe_product_definition_relationship ) - return ((SdaiProduct_definition_relationshipH) _stepentityh); + return ((SdaiProduct_definition_relationship_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } // part 3 -SdaiProduct_definitionH -SdaiCharacterized_product_definition::Related_product_definition() const +const SdaiProduct_definition_ptr +SdaiCharacterized_product_definition::related_product_definition_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition_relationship ) // PRODUCT_DEFINITION_RELATIONSHIP - return ((SdaiProduct_definition_relationshipH) _stepentityh) ->Related_product_definition(); + return ((SdaiProduct_definition_relationship_ptr) _app_inst) ->related_product_definition_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiCharacterized_product_definition::Related_product_definition (SdaiProduct_definitionH x) +SdaiCharacterized_product_definition::related_product_definition_ (const SdaiProduct_definition_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition_relationship ) // PRODUCT_DEFINITION_RELATIONSHIP - { ((SdaiProduct_definition_relationshipH) _stepentityh) ->Related_product_definition( x ); + { ((SdaiProduct_definition_relationship_ptr) _app_inst) ->related_product_definition_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiProduct_definitionH -SdaiCharacterized_product_definition::Relating_product_definition() const +const SdaiProduct_definition_ptr +SdaiCharacterized_product_definition::relating_product_definition_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition_relationship ) // PRODUCT_DEFINITION_RELATIONSHIP - return ((SdaiProduct_definition_relationshipH) _stepentityh) ->Relating_product_definition(); + return ((SdaiProduct_definition_relationship_ptr) _app_inst) ->relating_product_definition_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiCharacterized_product_definition::Relating_product_definition (SdaiProduct_definitionH x) +SdaiCharacterized_product_definition::relating_product_definition_ (const SdaiProduct_definition_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition_relationship ) // PRODUCT_DEFINITION_RELATIONSHIP - { ((SdaiProduct_definition_relationshipH) _stepentityh) ->Relating_product_definition( x ); + { ((SdaiProduct_definition_relationship_ptr) _app_inst) ->relating_product_definition_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiLabel -SdaiCharacterized_product_definition::Name() const +SdaiCharacterized_product_definition::name_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition_relationship ) // PRODUCT_DEFINITION_RELATIONSHIP - return ((SdaiProduct_definition_relationshipH) _stepentityh) ->Name(); + return ((SdaiProduct_definition_relationship_ptr) _app_inst) ->name_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiCharacterized_product_definition::Name (const char * x) +SdaiCharacterized_product_definition::name_ (const SdaiLabel x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition_relationship ) // PRODUCT_DEFINITION_RELATIONSHIP - { ((SdaiProduct_definition_relationshipH) _stepentityh) ->Name( x ); + { ((SdaiProduct_definition_relationship_ptr) _app_inst) ->name_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiProduct_definition_contextH -SdaiCharacterized_product_definition::Frame_of_reference() const +const SdaiProduct_definition_context_ptr +SdaiCharacterized_product_definition::frame_of_reference_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - return ((SdaiProduct_definitionH) _stepentityh) ->Frame_of_reference(); + return ((SdaiProduct_definition_ptr) _app_inst) ->frame_of_reference_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiCharacterized_product_definition::Frame_of_reference (SdaiProduct_definition_contextH x) +SdaiCharacterized_product_definition::frame_of_reference_ (const SdaiProduct_definition_context_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - { ((SdaiProduct_definitionH) _stepentityh) ->Frame_of_reference( x ); + { ((SdaiProduct_definition_ptr) _app_inst) ->frame_of_reference_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiProduct_definition_formationH -SdaiCharacterized_product_definition::Formation() const +const SdaiProduct_definition_formation_ptr +SdaiCharacterized_product_definition::formation_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - return ((SdaiProduct_definitionH) _stepentityh) ->Formation(); + return ((SdaiProduct_definition_ptr) _app_inst) ->formation_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiCharacterized_product_definition::Formation (SdaiProduct_definition_formationH x) +SdaiCharacterized_product_definition::formation_ (const SdaiProduct_definition_formation_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - { ((SdaiProduct_definitionH) _stepentityh) ->Formation( x ); + { ((SdaiProduct_definition_ptr) _app_inst) ->formation_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiText -SdaiCharacterized_product_definition::Description() const +SdaiCharacterized_product_definition::description_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - return ((SdaiProduct_definitionH) _stepentityh) ->Description(); + return ((SdaiProduct_definition_ptr) _app_inst) ->description_(); if( CurrentUnderlyingType () == config_control_designe_product_definition_relationship ) // PRODUCT_DEFINITION_RELATIONSHIP - return ((SdaiProduct_definition_relationshipH) _stepentityh) ->Description(); + return ((SdaiProduct_definition_relationship_ptr) _app_inst) ->description_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiCharacterized_product_definition::Description (const char * x) +SdaiCharacterized_product_definition::description_ (const SdaiText x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - { ((SdaiProduct_definitionH) _stepentityh) ->Description( x ); + { ((SdaiProduct_definition_ptr) _app_inst) ->description_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_product_definition_relationship ) // PRODUCT_DEFINITION_RELATIONSHIP - { ((SdaiProduct_definition_relationshipH) _stepentityh) ->Description( x ); + { ((SdaiProduct_definition_relationship_ptr) _app_inst) ->description_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiIdentifier -SdaiCharacterized_product_definition::Id() const +SdaiCharacterized_product_definition::id_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - return ((SdaiProduct_definitionH) _stepentityh) ->Id(); + return ((SdaiProduct_definition_ptr) _app_inst) ->id_(); if( CurrentUnderlyingType () == config_control_designe_product_definition_relationship ) // PRODUCT_DEFINITION_RELATIONSHIP - return ((SdaiProduct_definition_relationshipH) _stepentityh) ->Id(); + return ((SdaiProduct_definition_relationship_ptr) _app_inst) ->id_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiCharacterized_product_definition::Id (const char * x) +SdaiCharacterized_product_definition::id_ (const SdaiIdentifier x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - { ((SdaiProduct_definitionH) _stepentityh) ->Id( x ); + { ((SdaiProduct_definition_ptr) _app_inst) ->id_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_product_definition_relationship ) // PRODUCT_DEFINITION_RELATIONSHIP - { ((SdaiProduct_definition_relationshipH) _stepentityh) ->Id( x ); + { ((SdaiProduct_definition_relationship_ptr) _app_inst) ->id_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } // part 4 -SdaiCharacterized_product_definition& SdaiCharacterized_product_definition::operator =( const SdaiProduct_definitionH& o ) +SdaiCharacterized_product_definition& SdaiCharacterized_product_definition::operator =( const SdaiProduct_definition_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_product_definition); return *this; } -SdaiCharacterized_product_definition& SdaiCharacterized_product_definition::operator =( const SdaiProduct_definition_relationshipH& o ) +SdaiCharacterized_product_definition& SdaiCharacterized_product_definition::operator =( const SdaiProduct_definition_relationship_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_product_definition_relationship); return *this; } @@ -824,43 +1950,52 @@ SdaiCharacterized_product_definition& SdaiCharacterized_product_definition::oper #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiCharacterized_product_definition& SdaiCharacterized_product_definition::operator =( const SdaiCharacterized_product_definitionH& o ) + +SdaiCharacterized_product_definition& SdaiCharacterized_product_definition::operator =( const SdaiCharacterized_product_definition_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designe_product_definition ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_product_definition_relationship ) - _stepentityh = o -> _stepentityh; + if ( o -> CurrentUnderlyingType () == config_control_designe_product_definition ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_product_definition_relationship ) + _app_inst = o -> _app_inst; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiCharacterized_product_definition::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiCharacterized_product_definition::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designe_product_definition ) - _stepentityh = ((SdaiCharacterized_product_definition&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_product_definition_relationship ) - _stepentityh = ((SdaiCharacterized_product_definition&) o)._stepentityh; + if ( o.CurrentUnderlyingType () == config_control_designe_product_definition ) + _app_inst = ((SdaiCharacterized_product_definition&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_product_definition_relationship ) + _app_inst = ((SdaiCharacterized_product_definition&) o)._app_inst; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiCharacterized_product_definition::IsProduct_definition() const +SCLLOG(Logical) SdaiCharacterized_product_definition::IsProduct_definition() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_product_definition ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiCharacterized_product_definition::IsProduct_definition_relationship() const +SCLLOG(Logical) SdaiCharacterized_product_definition::IsProduct_definition_relationship() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_product_definition_relationship ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } ////////// END SELECT TYPE SdaiCharacterized_product_definition @@ -869,55 +2004,117 @@ SdaiLogical SdaiCharacterized_product_definition::IsProduct_definition_relations ////////// SELECT TYPE shape_definition const TypeDescriptor * -SdaiShape_definition::AssignEntity (STEPentity * se) +SdaiShape_definition::AssignEntity (SCLP23(Application_instance) * se) { // PRODUCT_DEFINITION_SHAPE - if (se -> eDesc -> IsA (config_control_designe_product_definition_shape)) + if (se -> IsA (config_control_designe_product_definition_shape)) { - _stepentityh = (SdaiProduct_definition_shapeH) se; + _app_inst = (SdaiProduct_definition_shape_ptr) se; return SetUnderlyingType (config_control_designe_product_definition_shape); } // SHAPE_ASPECT - if (se -> eDesc -> IsA (config_control_designe_shape_aspect)) + if (se -> IsA (config_control_designe_shape_aspect)) { - _stepentityh = (SdaiShape_aspectH) se; + _app_inst = (SdaiShape_aspect_ptr) se; return SetUnderlyingType (config_control_designe_shape_aspect); } // SHAPE_ASPECT_RELATIONSHIP - if (se -> eDesc -> IsA (config_control_designe_shape_aspect_relationship)) + if (se -> IsA (config_control_designe_shape_aspect_relationship)) { - _stepentityh = (SdaiShape_aspect_relationshipH) se; + _app_inst = (SdaiShape_aspect_relationship_ptr) se; return SetUnderlyingType (config_control_designe_shape_aspect_relationship); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiShape_definition::NewSelect () { - SdaiShape_definition * tmp = new SdaiShape_definition (); - return tmp; +#ifdef __OSTORE__ + SdaiShape_definition * tmp = + new( os_segment::of(this), + SdaiShape_definition::get_os_typespec() ) + SdaiShape_definition(); +#else + SdaiShape_definition * tmp = new SdaiShape_definition(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiShape_definition::STEPwrite_content (G4std::ostream& out) const +SdaiShape_definition::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designe_product_definition_shape) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_shape_aspect) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_shape_aspect_relationship) - _stepentityh -> STEPwrite_reference (out); - else { + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_shape_aspect) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_shape_aspect_relationship) + _app_inst -> STEPwrite_reference (out); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiShape_definition::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designe_product_definition_shape) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_shape_aspect) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_shape_aspect_relationship) + return sdaiINSTANCE; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiShape_definition::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designe_product_definition_shape) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_shape_aspect) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_shape_aspect_relationship) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -925,54 +2122,53 @@ SdaiShape_definition::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiShape_definition::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiShape_definition::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designe_product_definition_shape) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_shape_aspect) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_shape_aspect_relationship) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -984,11 +2180,12 @@ Severity SdaiShape_definition::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -1000,318 +2197,444 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiShape_definition (os_database *db) +{ + return new (db, SdaiShape_definition::get_os_typespec()) + SdaiShape_definition ; +} + +void +SdaiShape_definition_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiShape_definition access hook funct called." << G4endl; + } +#endif + SdaiShape_definition *s = (SdaiShape_definition *) object; + s->_type = config_control_designt_shape_definition; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiShape_definitions (os_database *db) +{ + return new (db, SdaiShape_definitions::get_os_typespec()) + SdaiShape_definitions ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiShape_definition::SdaiShape_definition() - : SdaiSelect (config_control_designt_shape_definition) +SdaiShape_definition::SdaiShape_definition( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiShape_definition constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiShape_definition constructor." << G4endl; + } +#endif } // part 1 -SdaiShape_definition::SdaiShape_definition( const SdaiProduct_definition_shapeH& o ) - : SdaiSelect (config_control_designt_shape_definition, config_control_designe_product_definition_shape ) +SdaiShape_definition::SdaiShape_definition( const SdaiProduct_definition_shape_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_product_definition_shape) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiShape_definition constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiShape_definition constructor." << G4endl; + } +#endif } -SdaiShape_definition::SdaiShape_definition( const SdaiShape_aspectH& o ) - : SdaiSelect (config_control_designt_shape_definition, config_control_designe_shape_aspect ) +SdaiShape_definition::SdaiShape_definition( const SdaiShape_aspect_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_shape_aspect) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiShape_definition constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiShape_definition constructor." << G4endl; + } +#endif } -SdaiShape_definition::SdaiShape_definition( const SdaiShape_aspect_relationshipH& o ) - : SdaiSelect (config_control_designt_shape_definition, config_control_designe_shape_aspect_relationship ) +SdaiShape_definition::SdaiShape_definition( const SdaiShape_aspect_relationship_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_shape_aspect_relationship) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiShape_definition constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiShape_definition constructor." << G4endl; + } +#endif } SdaiShape_definition::~SdaiShape_definition() { } +SdaiShape_definitions::SdaiShape_definitions( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiShape_definitions::~SdaiShape_definitions() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiShape_definitions::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiShape_definition::get_os_typespec() ) + SdaiShape_definition ); +} +#endif + // part 2 -SdaiShape_definition::operator SdaiProduct_definition_shapeH() +SdaiShape_definition::operator SdaiProduct_definition_shape_ptr() { if( CurrentUnderlyingType () == config_control_designe_product_definition_shape ) - return ((SdaiProduct_definition_shapeH) _stepentityh); + return ((SdaiProduct_definition_shape_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiShape_definition::operator SdaiShape_aspectH() +SdaiShape_definition::operator SdaiShape_aspect_ptr() { if( CurrentUnderlyingType () == config_control_designe_shape_aspect ) - return ((SdaiShape_aspectH) _stepentityh); + return ((SdaiShape_aspect_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiShape_definition::operator SdaiShape_aspect_relationshipH() +SdaiShape_definition::operator SdaiShape_aspect_relationship_ptr() { if( CurrentUnderlyingType () == config_control_designe_shape_aspect_relationship ) - return ((SdaiShape_aspect_relationshipH) _stepentityh); + return ((SdaiShape_aspect_relationship_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } // part 3 -SdaiShape_aspectH -SdaiShape_definition::Related_shape_aspect() const +const SdaiShape_aspect_ptr +SdaiShape_definition::related_shape_aspect_() const { if( CurrentUnderlyingType () == config_control_designe_shape_aspect_relationship ) // SHAPE_ASPECT_RELATIONSHIP - return ((SdaiShape_aspect_relationshipH) _stepentityh) ->Related_shape_aspect(); + return ((SdaiShape_aspect_relationship_ptr) _app_inst) ->related_shape_aspect_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiShape_definition::Related_shape_aspect (SdaiShape_aspectH x) +SdaiShape_definition::related_shape_aspect_ (const SdaiShape_aspect_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_shape_aspect_relationship ) // SHAPE_ASPECT_RELATIONSHIP - { ((SdaiShape_aspect_relationshipH) _stepentityh) ->Related_shape_aspect( x ); + { ((SdaiShape_aspect_relationship_ptr) _app_inst) ->related_shape_aspect_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiShape_aspectH -SdaiShape_definition::Relating_shape_aspect() const +const SdaiShape_aspect_ptr +SdaiShape_definition::relating_shape_aspect_() const { if( CurrentUnderlyingType () == config_control_designe_shape_aspect_relationship ) // SHAPE_ASPECT_RELATIONSHIP - return ((SdaiShape_aspect_relationshipH) _stepentityh) ->Relating_shape_aspect(); + return ((SdaiShape_aspect_relationship_ptr) _app_inst) ->relating_shape_aspect_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiShape_definition::Relating_shape_aspect (SdaiShape_aspectH x) +SdaiShape_definition::relating_shape_aspect_ (const SdaiShape_aspect_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_shape_aspect_relationship ) // SHAPE_ASPECT_RELATIONSHIP - { ((SdaiShape_aspect_relationshipH) _stepentityh) ->Relating_shape_aspect( x ); + { ((SdaiShape_aspect_relationship_ptr) _app_inst) ->relating_shape_aspect_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -const LOGICAL -SdaiShape_definition::Product_definitional() const +const SCLLOG(Logical) +SdaiShape_definition::product_definitional_() const { if( CurrentUnderlyingType () == config_control_designe_shape_aspect ) // SHAPE_ASPECT - return ((SdaiShape_aspectH) _stepentityh) ->Product_definitional(); + return ((SdaiShape_aspect_ptr) _app_inst) ->product_definitional_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return (LOGICAL) NULL; + return (SCLLOG(Logical)) 0; } void -SdaiShape_definition::Product_definitional (LOGICAL x) +SdaiShape_definition::product_definitional_ (const SCLLOG(Logical) x) + { if( CurrentUnderlyingType () == config_control_designe_shape_aspect ) // SHAPE_ASPECT - { ((SdaiShape_aspectH) _stepentityh) ->Product_definitional( x ); + { ((SdaiShape_aspect_ptr) _app_inst) ->product_definitional_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiProduct_definition_shapeH -SdaiShape_definition::Of_shape() const +const SdaiProduct_definition_shape_ptr +SdaiShape_definition::of_shape_() const { if( CurrentUnderlyingType () == config_control_designe_shape_aspect ) // SHAPE_ASPECT - return ((SdaiShape_aspectH) _stepentityh) ->Of_shape(); + return ((SdaiShape_aspect_ptr) _app_inst) ->of_shape_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiShape_definition::Of_shape (SdaiProduct_definition_shapeH x) +SdaiShape_definition::of_shape_ (const SdaiProduct_definition_shape_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_shape_aspect ) // SHAPE_ASPECT - { ((SdaiShape_aspectH) _stepentityh) ->Of_shape( x ); + { ((SdaiShape_aspect_ptr) _app_inst) ->of_shape_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -const SdaiCharacterized_definitionH -SdaiShape_definition::Definition() const +const SdaiCharacterized_definition_ptr +SdaiShape_definition::definition_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition_shape ) // PRODUCT_DEFINITION_SHAPE - return ((SdaiProduct_definition_shapeH) _stepentityh) ->Definition(); + return ((SdaiProduct_definition_shape_ptr) _app_inst) ->definition_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiShape_definition::Definition (SdaiCharacterized_definitionH x) +SdaiShape_definition::definition_ (const SdaiCharacterized_definition_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition_shape ) // PRODUCT_DEFINITION_SHAPE - { ((SdaiProduct_definition_shapeH) _stepentityh) ->Definition( x ); + { ((SdaiProduct_definition_shape_ptr) _app_inst) ->definition_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiText -SdaiShape_definition::Description() const +SdaiShape_definition::description_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition_shape ) // PRODUCT_DEFINITION_SHAPE - return ((SdaiProduct_definition_shapeH) _stepentityh) ->Description(); + return ((SdaiProduct_definition_shape_ptr) _app_inst) ->description_(); if( CurrentUnderlyingType () == config_control_designe_shape_aspect ) // SHAPE_ASPECT - return ((SdaiShape_aspectH) _stepentityh) ->Description(); + return ((SdaiShape_aspect_ptr) _app_inst) ->description_(); if( CurrentUnderlyingType () == config_control_designe_shape_aspect_relationship ) // SHAPE_ASPECT_RELATIONSHIP - return ((SdaiShape_aspect_relationshipH) _stepentityh) ->Description(); + return ((SdaiShape_aspect_relationship_ptr) _app_inst) ->description_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiShape_definition::Description (const char * x) +SdaiShape_definition::description_ (const SdaiText x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition_shape ) // PRODUCT_DEFINITION_SHAPE - { ((SdaiProduct_definition_shapeH) _stepentityh) ->Description( x ); + { ((SdaiProduct_definition_shape_ptr) _app_inst) ->description_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_shape_aspect ) // SHAPE_ASPECT - { ((SdaiShape_aspectH) _stepentityh) ->Description( x ); + { ((SdaiShape_aspect_ptr) _app_inst) ->description_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_shape_aspect_relationship ) // SHAPE_ASPECT_RELATIONSHIP - { ((SdaiShape_aspect_relationshipH) _stepentityh) ->Description( x ); + { ((SdaiShape_aspect_relationship_ptr) _app_inst) ->description_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiLabel -SdaiShape_definition::Name() const +SdaiShape_definition::name_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition_shape ) // PRODUCT_DEFINITION_SHAPE - return ((SdaiProduct_definition_shapeH) _stepentityh) ->Name(); + return ((SdaiProduct_definition_shape_ptr) _app_inst) ->name_(); if( CurrentUnderlyingType () == config_control_designe_shape_aspect ) // SHAPE_ASPECT - return ((SdaiShape_aspectH) _stepentityh) ->Name(); + return ((SdaiShape_aspect_ptr) _app_inst) ->name_(); if( CurrentUnderlyingType () == config_control_designe_shape_aspect_relationship ) // SHAPE_ASPECT_RELATIONSHIP - return ((SdaiShape_aspect_relationshipH) _stepentityh) ->Name(); + return ((SdaiShape_aspect_relationship_ptr) _app_inst) ->name_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiShape_definition::Name (const char * x) +SdaiShape_definition::name_ (const SdaiLabel x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition_shape ) // PRODUCT_DEFINITION_SHAPE - { ((SdaiProduct_definition_shapeH) _stepentityh) ->Name( x ); + { ((SdaiProduct_definition_shape_ptr) _app_inst) ->name_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_shape_aspect ) // SHAPE_ASPECT - { ((SdaiShape_aspectH) _stepentityh) ->Name( x ); + { ((SdaiShape_aspect_ptr) _app_inst) ->name_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_shape_aspect_relationship ) // SHAPE_ASPECT_RELATIONSHIP - { ((SdaiShape_aspect_relationshipH) _stepentityh) ->Name( x ); + { ((SdaiShape_aspect_relationship_ptr) _app_inst) ->name_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } // part 4 -SdaiShape_definition& SdaiShape_definition::operator =( const SdaiProduct_definition_shapeH& o ) +SdaiShape_definition& SdaiShape_definition::operator =( const SdaiProduct_definition_shape_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_product_definition_shape); return *this; } -SdaiShape_definition& SdaiShape_definition::operator =( const SdaiShape_aspectH& o ) +SdaiShape_definition& SdaiShape_definition::operator =( const SdaiShape_aspect_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_shape_aspect); return *this; } -SdaiShape_definition& SdaiShape_definition::operator =( const SdaiShape_aspect_relationshipH& o ) +SdaiShape_definition& SdaiShape_definition::operator =( const SdaiShape_aspect_relationship_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_shape_aspect_relationship); return *this; } @@ -1319,56 +2642,65 @@ SdaiShape_definition& SdaiShape_definition::operator =( const SdaiShape_aspect_r #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiShape_definition& SdaiShape_definition::operator =( const SdaiShape_definitionH& o ) + +SdaiShape_definition& SdaiShape_definition::operator =( const SdaiShape_definition_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designe_product_definition_shape ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_shape_aspect ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_shape_aspect_relationship ) - _stepentityh = o -> _stepentityh; + if ( o -> CurrentUnderlyingType () == config_control_designe_product_definition_shape ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_shape_aspect ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_shape_aspect_relationship ) + _app_inst = o -> _app_inst; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiShape_definition::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiShape_definition::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designe_product_definition_shape ) - _stepentityh = ((SdaiShape_definition&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_shape_aspect ) - _stepentityh = ((SdaiShape_definition&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_shape_aspect_relationship ) - _stepentityh = ((SdaiShape_definition&) o)._stepentityh; + if ( o.CurrentUnderlyingType () == config_control_designe_product_definition_shape ) + _app_inst = ((SdaiShape_definition&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_shape_aspect ) + _app_inst = ((SdaiShape_definition&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_shape_aspect_relationship ) + _app_inst = ((SdaiShape_definition&) o)._app_inst; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiShape_definition::IsProduct_definition_shape() const +SCLLOG(Logical) SdaiShape_definition::IsProduct_definition_shape() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_product_definition_shape ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiShape_definition::IsShape_aspect() const +SCLLOG(Logical) SdaiShape_definition::IsShape_aspect() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_shape_aspect ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiShape_definition::IsShape_aspect_relationship() const +SCLLOG(Logical) SdaiShape_definition::IsShape_aspect_relationship() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_shape_aspect_relationship ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } ////////// END SELECT TYPE SdaiShape_definition @@ -1377,7 +2709,7 @@ SdaiLogical SdaiShape_definition::IsShape_aspect_relationship() const ////////// SELECT TYPE characterized_definition const TypeDescriptor * -SdaiCharacterized_definition::AssignEntity (STEPentity * se) +SdaiCharacterized_definition::AssignEntity (SCLP23(Application_instance) * se) { // CHARACTERIZED_PRODUCT_DEFINITION if (config_control_designt_characterized_product_definition -> CanBe (se -> eDesc)) @@ -1391,33 +2723,87 @@ SdaiCharacterized_definition::AssignEntity (STEPentity * se) _sdaishape_definition.AssignEntity (se); return SetUnderlyingType (config_control_designt_shape_definition); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiCharacterized_definition::NewSelect () { - SdaiCharacterized_definition * tmp = new SdaiCharacterized_definition (); - return tmp; +#ifdef __OSTORE__ + SdaiCharacterized_definition * tmp = + new( os_segment::of(this), + SdaiCharacterized_definition::get_os_typespec() ) + SdaiCharacterized_definition(); +#else + SdaiCharacterized_definition * tmp = new SdaiCharacterized_definition(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiCharacterized_definition::STEPwrite_content (G4std::ostream& out) const +SdaiCharacterized_definition::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designt_characterized_product_definition) - _sdaicharacterized_product_definition.STEPwrite (out); - else if (CurrentUnderlyingType () == config_control_designt_shape_definition) - _sdaishape_definition.STEPwrite (out); - else { + _sdaicharacterized_product_definition.STEPwrite (out, currSch); + else if (CurrentUnderlyingType () == config_control_designt_shape_definition) + _sdaishape_definition.STEPwrite (out, currSch); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiCharacterized_definition::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designt_characterized_product_definition) + return _sdaicharacterized_product_definition.ValueType(); + else if (CurrentUnderlyingType() == config_control_designt_shape_definition) + return _sdaishape_definition.ValueType(); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiCharacterized_definition::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designt_characterized_product_definition) + { + out << tmp.chars() << "("; + _sdaicharacterized_product_definition.STEPwrite_verbose (out, currSch); + out << ")"; + } + else if (td == config_control_designt_shape_definition) + { + out << tmp.chars() << "("; + _sdaishape_definition.STEPwrite_verbose (out, currSch); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -1425,20 +2811,22 @@ SdaiCharacterized_definition::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiCharacterized_definition::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiCharacterized_definition::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designt_characterized_product_definition) { - _sdaicharacterized_product_definition.STEPread (in, &_error, instances, addFileId); + _sdaicharacterized_product_definition.STEPread (in, &_error, instances, utype, addFileId, currSch); return severity (); } if (CurrentUnderlyingType () == config_control_designt_shape_definition) { - _sdaishape_definition.STEPread (in, &_error, instances, addFileId); + _sdaishape_definition.STEPread (in, &_error, instances, utype, addFileId, currSch); return severity (); } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -1450,11 +2838,12 @@ Severity SdaiCharacterized_definition::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -1466,77 +2855,188 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiCharacterized_definition (os_database *db) +{ + return new (db, SdaiCharacterized_definition::get_os_typespec()) + SdaiCharacterized_definition ; +} + +void +SdaiCharacterized_definition_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiCharacterized_definition access hook funct called." << G4endl; + } +#endif + SdaiCharacterized_definition *s = (SdaiCharacterized_definition *) object; + s->_type = config_control_designt_characterized_definition; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiCharacterized_definitions (os_database *db) +{ + return new (db, SdaiCharacterized_definitions::get_os_typespec()) + SdaiCharacterized_definitions ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiCharacterized_definition::SdaiCharacterized_definition() - : SdaiSelect (config_control_designt_characterized_definition) +SdaiCharacterized_definition::SdaiCharacterized_definition( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript), + _sdaicharacterized_product_definition (config_control_designt_characterized_product_definition), + _sdaishape_definition (config_control_designt_shape_definition) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiCharacterized_definition constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiCharacterized_definition constructor." << G4endl; + } +#endif } // part 1 -SdaiCharacterized_definition::SdaiCharacterized_definition( const SdaiCharacterized_product_definitionH& o ) - : SdaiSelect (config_control_designt_characterized_definition, config_control_designt_characterized_product_definition ) +SdaiCharacterized_definition::SdaiCharacterized_definition( const SdaiCharacterized_product_definition_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designt_characterized_product_definition), + _sdaicharacterized_product_definition (config_control_designt_characterized_product_definition), + _sdaishape_definition (config_control_designt_shape_definition) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiCharacterized_definition constructor." << G4endl; + } +#endif _sdaicharacterized_product_definition = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiCharacterized_definition constructor." << G4endl; + } +#endif } -SdaiCharacterized_definition::SdaiCharacterized_definition( const SdaiShape_definitionH& o ) - : SdaiSelect (config_control_designt_characterized_definition, config_control_designt_shape_definition ) +SdaiCharacterized_definition::SdaiCharacterized_definition( const SdaiShape_definition_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designt_shape_definition), + _sdaicharacterized_product_definition (config_control_designt_characterized_product_definition), + _sdaishape_definition (config_control_designt_shape_definition) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiCharacterized_definition constructor." << G4endl; + } +#endif _sdaishape_definition = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiCharacterized_definition constructor." << G4endl; + } +#endif } SdaiCharacterized_definition::~SdaiCharacterized_definition() { } +SdaiCharacterized_definitions::SdaiCharacterized_definitions( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiCharacterized_definitions::~SdaiCharacterized_definitions() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiCharacterized_definitions::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiCharacterized_definition::get_os_typespec() ) + SdaiCharacterized_definition ); +} +#endif + // part 2 -SdaiCharacterized_definition::operator SdaiCharacterized_product_definitionH() +SdaiCharacterized_definition::operator SdaiCharacterized_product_definition_ptr() { if( CurrentUnderlyingType () == config_control_designt_characterized_product_definition ) return & _sdaicharacterized_product_definition; - severity( SEVERITY_WARNING ); - Error( "Underlying type is not SdaiCharacterized_product_definitionH" ); + severity( SEVERITY_WARNING ); + Error( "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." ); - return NULL; + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); + return 0; } -SdaiCharacterized_definition::operator SdaiShape_definitionH() +SdaiCharacterized_definition::operator SdaiShape_definition_ptr() { if( CurrentUnderlyingType () == config_control_designt_shape_definition ) return & _sdaishape_definition; - severity( SEVERITY_WARNING ); - Error( "Underlying type is not SdaiShape_definitionH" ); + severity( SEVERITY_WARNING ); + Error( "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." ); - return NULL; + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); + return 0; } // part 3 // part 4 -SdaiCharacterized_definition& SdaiCharacterized_definition::operator =( const SdaiCharacterized_product_definitionH& o ) +SdaiCharacterized_definition& SdaiCharacterized_definition::operator =( const SdaiCharacterized_product_definition_ptr& o ) { - nullify (); + nullify (); _sdaicharacterized_product_definition = o; SetUnderlyingType (config_control_designt_characterized_product_definition); return *this; } -SdaiCharacterized_definition& SdaiCharacterized_definition::operator =( const SdaiShape_definitionH& o ) +SdaiCharacterized_definition& SdaiCharacterized_definition::operator =( const SdaiShape_definition_ptr& o ) { - nullify (); + nullify (); _sdaishape_definition = o; SetUnderlyingType (config_control_designt_shape_definition); return *this; @@ -1545,43 +3045,52 @@ SdaiCharacterized_definition& SdaiCharacterized_definition::operator =( const Sd #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiCharacterized_definition& SdaiCharacterized_definition::operator =( const SdaiCharacterized_definitionH& o ) + +SdaiCharacterized_definition& SdaiCharacterized_definition::operator =( const SdaiCharacterized_definition_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designt_characterized_product_definition ) - _sdaicharacterized_product_definition = o -> _sdaicharacterized_product_definition; - if( o -> CurrentUnderlyingType () == config_control_designt_shape_definition ) - _sdaishape_definition = o -> _sdaishape_definition; + if ( o -> CurrentUnderlyingType () == config_control_designt_characterized_product_definition ) + _sdaicharacterized_product_definition = &(o -> _sdaicharacterized_product_definition); + else if ( o -> CurrentUnderlyingType () == config_control_designt_shape_definition ) + _sdaishape_definition = &(o -> _sdaishape_definition); underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiCharacterized_definition::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiCharacterized_definition::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designt_characterized_product_definition ) - _sdaicharacterized_product_definition = ((SdaiCharacterized_definition&) o)._sdaicharacterized_product_definition; - if( o.CurrentUnderlyingType () == config_control_designt_shape_definition ) - _sdaishape_definition = ((SdaiCharacterized_definition&) o)._sdaishape_definition; + if ( o.CurrentUnderlyingType () == config_control_designt_characterized_product_definition ) + _sdaicharacterized_product_definition = &(((SdaiCharacterized_definition&) o)._sdaicharacterized_product_definition); + else if ( o.CurrentUnderlyingType () == config_control_designt_shape_definition ) + _sdaishape_definition = &(((SdaiCharacterized_definition&) o)._sdaishape_definition); underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiCharacterized_definition::IsCharacterized_product_definition() const +SCLLOG(Logical) SdaiCharacterized_definition::IsCharacterized_product_definition() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designt_characterized_product_definition ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiCharacterized_definition::IsShape_definition() const +SCLLOG(Logical) SdaiCharacterized_definition::IsShape_definition() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designt_shape_definition ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } ////////// END SELECT TYPE SdaiCharacterized_definition @@ -1590,39 +3099,85 @@ SdaiLogical SdaiCharacterized_definition::IsShape_definition() const ////////// SELECT TYPE change_request_item const TypeDescriptor * -SdaiChange_request_item::AssignEntity (STEPentity * se) +SdaiChange_request_item::AssignEntity (SCLP23(Application_instance) * se) { // PRODUCT_DEFINITION_FORMATION - if (se -> eDesc -> IsA (config_control_designe_product_definition_formation)) + if (se -> IsA (config_control_designe_product_definition_formation)) { - _stepentityh = (SdaiProduct_definition_formationH) se; + _app_inst = (SdaiProduct_definition_formation_ptr) se; return SetUnderlyingType (config_control_designe_product_definition_formation); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiChange_request_item::NewSelect () { - SdaiChange_request_item * tmp = new SdaiChange_request_item (); - return tmp; +#ifdef __OSTORE__ + SdaiChange_request_item * tmp = + new( os_segment::of(this), + SdaiChange_request_item::get_os_typespec() ) + SdaiChange_request_item(); +#else + SdaiChange_request_item * tmp = new SdaiChange_request_item(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiChange_request_item::STEPwrite_content (G4std::ostream& out) const +SdaiChange_request_item::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designe_product_definition_formation) - _stepentityh -> STEPwrite_reference (out); - else { + _app_inst -> STEPwrite_reference (out); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiChange_request_item::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designe_product_definition_formation) + return sdaiINSTANCE; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiChange_request_item::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designe_product_definition_formation) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -1630,26 +3185,27 @@ SdaiChange_request_item::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiChange_request_item::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiChange_request_item::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designe_product_definition_formation) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -1661,11 +3217,12 @@ Severity SdaiChange_request_item::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -1677,128 +3234,222 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiChange_request_item (os_database *db) +{ + return new (db, SdaiChange_request_item::get_os_typespec()) + SdaiChange_request_item ; +} + +void +SdaiChange_request_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiChange_request_item access hook funct called." << G4endl; + } +#endif + SdaiChange_request_item *s = (SdaiChange_request_item *) object; + s->_type = config_control_designt_change_request_item; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiChange_request_items (os_database *db) +{ + return new (db, SdaiChange_request_items::get_os_typespec()) + SdaiChange_request_items ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiChange_request_item::SdaiChange_request_item() - : SdaiSelect (config_control_designt_change_request_item) +SdaiChange_request_item::SdaiChange_request_item( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiChange_request_item constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiChange_request_item constructor." << G4endl; + } +#endif } // part 1 -SdaiChange_request_item::SdaiChange_request_item( const SdaiProduct_definition_formationH& o ) - : SdaiSelect (config_control_designt_change_request_item, config_control_designe_product_definition_formation ) +SdaiChange_request_item::SdaiChange_request_item( const SdaiProduct_definition_formation_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_product_definition_formation) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiChange_request_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiChange_request_item constructor." << G4endl; + } +#endif } SdaiChange_request_item::~SdaiChange_request_item() { } +SdaiChange_request_items::SdaiChange_request_items( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiChange_request_items::~SdaiChange_request_items() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiChange_request_items::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiChange_request_item::get_os_typespec() ) + SdaiChange_request_item ); +} +#endif + // part 2 -SdaiChange_request_item::operator SdaiProduct_definition_formationH() +SdaiChange_request_item::operator SdaiProduct_definition_formation_ptr() { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) - return ((SdaiProduct_definition_formationH) _stepentityh); + return ((SdaiProduct_definition_formation_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } // part 3 -SdaiProductH -SdaiChange_request_item::Of_product() const +const SdaiProduct_ptr +SdaiChange_request_item::of_product_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - return ((SdaiProduct_definition_formationH) _stepentityh) ->Of_product(); + return ((SdaiProduct_definition_formation_ptr) _app_inst) ->of_product_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiChange_request_item::Of_product (SdaiProductH x) +SdaiChange_request_item::of_product_ (const SdaiProduct_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - { ((SdaiProduct_definition_formationH) _stepentityh) ->Of_product( x ); + { ((SdaiProduct_definition_formation_ptr) _app_inst) ->of_product_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiText -SdaiChange_request_item::Description() const +SdaiChange_request_item::description_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - return ((SdaiProduct_definition_formationH) _stepentityh) ->Description(); + return ((SdaiProduct_definition_formation_ptr) _app_inst) ->description_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiChange_request_item::Description (const char * x) +SdaiChange_request_item::description_ (const SdaiText x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - { ((SdaiProduct_definition_formationH) _stepentityh) ->Description( x ); + { ((SdaiProduct_definition_formation_ptr) _app_inst) ->description_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiIdentifier -SdaiChange_request_item::Id() const +SdaiChange_request_item::id_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - return ((SdaiProduct_definition_formationH) _stepentityh) ->Id(); + return ((SdaiProduct_definition_formation_ptr) _app_inst) ->id_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiChange_request_item::Id (const char * x) +SdaiChange_request_item::id_ (const SdaiIdentifier x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - { ((SdaiProduct_definition_formationH) _stepentityh) ->Id( x ); + { ((SdaiProduct_definition_formation_ptr) _app_inst) ->id_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } // part 4 -SdaiChange_request_item& SdaiChange_request_item::operator =( const SdaiProduct_definition_formationH& o ) +SdaiChange_request_item& SdaiChange_request_item::operator =( const SdaiProduct_definition_formation_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_product_definition_formation); return *this; } @@ -1806,30 +3457,39 @@ SdaiChange_request_item& SdaiChange_request_item::operator =( const SdaiProduct_ #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiChange_request_item& SdaiChange_request_item::operator =( const SdaiChange_request_itemH& o ) + +SdaiChange_request_item& SdaiChange_request_item::operator =( const SdaiChange_request_item_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designe_product_definition_formation ) - _stepentityh = o -> _stepentityh; + if ( o -> CurrentUnderlyingType () == config_control_designe_product_definition_formation ) + _app_inst = o -> _app_inst; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiChange_request_item::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiChange_request_item::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designe_product_definition_formation ) - _stepentityh = ((SdaiChange_request_item&) o)._stepentityh; + if ( o.CurrentUnderlyingType () == config_control_designe_product_definition_formation ) + _app_inst = ((SdaiChange_request_item&) o)._app_inst; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiChange_request_item::IsProduct_definition_formation() const +SCLLOG(Logical) SdaiChange_request_item::IsProduct_definition_formation() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } ////////// END SELECT TYPE SdaiChange_request_item @@ -1838,79 +3498,165 @@ SdaiLogical SdaiChange_request_item::IsProduct_definition_formation() const ////////// SELECT TYPE reversible_topology_item const TypeDescriptor * -SdaiReversible_topology_item::AssignEntity (STEPentity * se) +SdaiReversible_topology_item::AssignEntity (SCLP23(Application_instance) * se) { // EDGE - if (se -> eDesc -> IsA (config_control_designe_edge)) + if (se -> IsA (config_control_designe_edge)) { - _stepentityh = (SdaiEdgeH) se; + _app_inst = (SdaiEdge_ptr) se; return SetUnderlyingType (config_control_designe_edge); } // PATH - if (se -> eDesc -> IsA (config_control_designe_path)) + if (se -> IsA (config_control_designe_path)) { - _stepentityh = (SdaiPathH) se; + _app_inst = (SdaiPath_ptr) se; return SetUnderlyingType (config_control_designe_path); } // FACE - if (se -> eDesc -> IsA (config_control_designe_face)) + if (se -> IsA (config_control_designe_face)) { - _stepentityh = (SdaiFaceH) se; + _app_inst = (SdaiFace_ptr) se; return SetUnderlyingType (config_control_designe_face); } // FACE_BOUND - if (se -> eDesc -> IsA (config_control_designe_face_bound)) + if (se -> IsA (config_control_designe_face_bound)) { - _stepentityh = (SdaiFace_boundH) se; + _app_inst = (SdaiFace_bound_ptr) se; return SetUnderlyingType (config_control_designe_face_bound); } // CLOSED_SHELL - if (se -> eDesc -> IsA (config_control_designe_closed_shell)) + if (se -> IsA (config_control_designe_closed_shell)) { - _stepentityh = (SdaiClosed_shellH) se; + _app_inst = (SdaiClosed_shell_ptr) se; return SetUnderlyingType (config_control_designe_closed_shell); } // OPEN_SHELL - if (se -> eDesc -> IsA (config_control_designe_open_shell)) + if (se -> IsA (config_control_designe_open_shell)) { - _stepentityh = (SdaiOpen_shellH) se; + _app_inst = (SdaiOpen_shell_ptr) se; return SetUnderlyingType (config_control_designe_open_shell); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiReversible_topology_item::NewSelect () { - SdaiReversible_topology_item * tmp = new SdaiReversible_topology_item (); - return tmp; +#ifdef __OSTORE__ + SdaiReversible_topology_item * tmp = + new( os_segment::of(this), + SdaiReversible_topology_item::get_os_typespec() ) + SdaiReversible_topology_item(); +#else + SdaiReversible_topology_item * tmp = new SdaiReversible_topology_item(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiReversible_topology_item::STEPwrite_content (G4std::ostream& out) const +SdaiReversible_topology_item::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designe_edge) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_path) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_face) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_face_bound) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_closed_shell) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_open_shell) - _stepentityh -> STEPwrite_reference (out); - else { + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_path) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_face) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_face_bound) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_closed_shell) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_open_shell) + _app_inst -> STEPwrite_reference (out); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiReversible_topology_item::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designe_edge) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_path) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_face) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_face_bound) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_closed_shell) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_open_shell) + return sdaiINSTANCE; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiReversible_topology_item::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designe_edge) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_path) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_face) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_face_bound) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_closed_shell) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_open_shell) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -1918,96 +3664,92 @@ SdaiReversible_topology_item::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiReversible_topology_item::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiReversible_topology_item::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designe_edge) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_path) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_face) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_face_bound) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_closed_shell) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_open_shell) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -2019,11 +3761,12 @@ Severity SdaiReversible_topology_item::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -2035,436 +3778,605 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiReversible_topology_item (os_database *db) +{ + return new (db, SdaiReversible_topology_item::get_os_typespec()) + SdaiReversible_topology_item ; +} + +void +SdaiReversible_topology_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiReversible_topology_item access hook funct called." << G4endl; + } +#endif + SdaiReversible_topology_item *s = (SdaiReversible_topology_item *) object; + s->_type = config_control_designt_reversible_topology_item; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiReversible_topology_items (os_database *db) +{ + return new (db, SdaiReversible_topology_items::get_os_typespec()) + SdaiReversible_topology_items ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiReversible_topology_item::SdaiReversible_topology_item() - : SdaiSelect (config_control_designt_reversible_topology_item) +SdaiReversible_topology_item::SdaiReversible_topology_item( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiReversible_topology_item constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiReversible_topology_item constructor." << G4endl; + } +#endif } // part 1 -SdaiReversible_topology_item::SdaiReversible_topology_item( const SdaiEdgeH& o ) - : SdaiSelect (config_control_designt_reversible_topology_item, config_control_designe_edge ) +SdaiReversible_topology_item::SdaiReversible_topology_item( const SdaiEdge_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_edge) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiReversible_topology_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiReversible_topology_item constructor." << G4endl; + } +#endif } -SdaiReversible_topology_item::SdaiReversible_topology_item( const SdaiPathH& o ) - : SdaiSelect (config_control_designt_reversible_topology_item, config_control_designe_path ) +SdaiReversible_topology_item::SdaiReversible_topology_item( const SdaiPath_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_path) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiReversible_topology_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiReversible_topology_item constructor." << G4endl; + } +#endif } -SdaiReversible_topology_item::SdaiReversible_topology_item( const SdaiFaceH& o ) - : SdaiSelect (config_control_designt_reversible_topology_item, config_control_designe_face ) +SdaiReversible_topology_item::SdaiReversible_topology_item( const SdaiFace_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_face) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiReversible_topology_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiReversible_topology_item constructor." << G4endl; + } +#endif } -SdaiReversible_topology_item::SdaiReversible_topology_item( const SdaiFace_boundH& o ) - : SdaiSelect (config_control_designt_reversible_topology_item, config_control_designe_face_bound ) +SdaiReversible_topology_item::SdaiReversible_topology_item( const SdaiFace_bound_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_face_bound) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiReversible_topology_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiReversible_topology_item constructor." << G4endl; + } +#endif } -SdaiReversible_topology_item::SdaiReversible_topology_item( const SdaiClosed_shellH& o ) - : SdaiSelect (config_control_designt_reversible_topology_item, config_control_designe_closed_shell ) +SdaiReversible_topology_item::SdaiReversible_topology_item( const SdaiClosed_shell_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_closed_shell) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiReversible_topology_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiReversible_topology_item constructor." << G4endl; + } +#endif } -SdaiReversible_topology_item::SdaiReversible_topology_item( const SdaiOpen_shellH& o ) - : SdaiSelect (config_control_designt_reversible_topology_item, config_control_designe_open_shell ) +SdaiReversible_topology_item::SdaiReversible_topology_item( const SdaiOpen_shell_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_open_shell) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiReversible_topology_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiReversible_topology_item constructor." << G4endl; + } +#endif } SdaiReversible_topology_item::~SdaiReversible_topology_item() { } +SdaiReversible_topology_items::SdaiReversible_topology_items( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiReversible_topology_items::~SdaiReversible_topology_items() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiReversible_topology_items::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiReversible_topology_item::get_os_typespec() ) + SdaiReversible_topology_item ); +} +#endif + // part 2 -SdaiReversible_topology_item::operator SdaiEdgeH() +SdaiReversible_topology_item::operator SdaiEdge_ptr() { if( CurrentUnderlyingType () == config_control_designe_edge ) - return ((SdaiEdgeH) _stepentityh); + return ((SdaiEdge_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiReversible_topology_item::operator SdaiPathH() +SdaiReversible_topology_item::operator SdaiPath_ptr() { if( CurrentUnderlyingType () == config_control_designe_path ) - return ((SdaiPathH) _stepentityh); + return ((SdaiPath_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiReversible_topology_item::operator SdaiFaceH() +SdaiReversible_topology_item::operator SdaiFace_ptr() { if( CurrentUnderlyingType () == config_control_designe_face ) - return ((SdaiFaceH) _stepentityh); + return ((SdaiFace_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiReversible_topology_item::operator SdaiFace_boundH() +SdaiReversible_topology_item::operator SdaiFace_bound_ptr() { if( CurrentUnderlyingType () == config_control_designe_face_bound ) - return ((SdaiFace_boundH) _stepentityh); + return ((SdaiFace_bound_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiReversible_topology_item::operator SdaiClosed_shellH() +SdaiReversible_topology_item::operator SdaiClosed_shell_ptr() { if( CurrentUnderlyingType () == config_control_designe_closed_shell ) - return ((SdaiClosed_shellH) _stepentityh); + return ((SdaiClosed_shell_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiReversible_topology_item::operator SdaiOpen_shellH() +SdaiReversible_topology_item::operator SdaiOpen_shell_ptr() { if( CurrentUnderlyingType () == config_control_designe_open_shell ) - return ((SdaiOpen_shellH) _stepentityh); + return ((SdaiOpen_shell_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } // part 3 -const EntityAggregateH -SdaiReversible_topology_item::Cfs_faces() const +const EntityAggregate_ptr +SdaiReversible_topology_item::cfs_faces_() const { if( CurrentUnderlyingType () == config_control_designe_closed_shell ) // CLOSED_SHELL - return ((SdaiClosed_shellH) _stepentityh) ->Cfs_faces(); + return ((SdaiClosed_shell_ptr) _app_inst) ->cfs_faces_(); if( CurrentUnderlyingType () == config_control_designe_open_shell ) // OPEN_SHELL - return ((SdaiOpen_shellH) _stepentityh) ->Cfs_faces(); + return ((SdaiOpen_shell_ptr) _app_inst) ->cfs_faces_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiReversible_topology_item::Cfs_faces (EntityAggregateH x) +SdaiReversible_topology_item::cfs_faces_ (const EntityAggregate_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_closed_shell ) // CLOSED_SHELL - { ((SdaiClosed_shellH) _stepentityh) ->Cfs_faces( x ); + { ((SdaiClosed_shell_ptr) _app_inst) ->cfs_faces_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_open_shell ) // OPEN_SHELL - { ((SdaiOpen_shellH) _stepentityh) ->Cfs_faces( x ); + { ((SdaiOpen_shell_ptr) _app_inst) ->cfs_faces_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -const BOOLEAN -SdaiReversible_topology_item::Orientation() const +const SCLBOOL(Bool) +SdaiReversible_topology_item::orientation_() const { if( CurrentUnderlyingType () == config_control_designe_face_bound ) // FACE_BOUND - return ((SdaiFace_boundH) _stepentityh) ->Orientation(); + return ((SdaiFace_bound_ptr) _app_inst) ->orientation_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return (BOOLEAN) NULL; + return (SCLBOOL(Bool)) 0; } void -SdaiReversible_topology_item::Orientation (BOOLEAN x) +SdaiReversible_topology_item::orientation_ (const SCLBOOL(Bool) x) + { if( CurrentUnderlyingType () == config_control_designe_face_bound ) // FACE_BOUND - { ((SdaiFace_boundH) _stepentityh) ->Orientation( x ); + { ((SdaiFace_bound_ptr) _app_inst) ->orientation_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiLoopH -SdaiReversible_topology_item::Bound() const +const SdaiLoop_ptr +SdaiReversible_topology_item::bound_() const { if( CurrentUnderlyingType () == config_control_designe_face_bound ) // FACE_BOUND - return ((SdaiFace_boundH) _stepentityh) ->Bound(); + return ((SdaiFace_bound_ptr) _app_inst) ->bound_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiReversible_topology_item::Bound (SdaiLoopH x) +SdaiReversible_topology_item::bound_ (const SdaiLoop_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_face_bound ) // FACE_BOUND - { ((SdaiFace_boundH) _stepentityh) ->Bound( x ); + { ((SdaiFace_bound_ptr) _app_inst) ->bound_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -const EntityAggregateH -SdaiReversible_topology_item::Bounds() const +const EntityAggregate_ptr +SdaiReversible_topology_item::bounds_() const { if( CurrentUnderlyingType () == config_control_designe_face ) // FACE - return ((SdaiFaceH) _stepentityh) ->Bounds(); + return ((SdaiFace_ptr) _app_inst) ->bounds_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiReversible_topology_item::Bounds (EntityAggregateH x) +SdaiReversible_topology_item::bounds_ (const EntityAggregate_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_face ) // FACE - { ((SdaiFaceH) _stepentityh) ->Bounds( x ); + { ((SdaiFace_ptr) _app_inst) ->bounds_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -const EntityAggregateH -SdaiReversible_topology_item::Edge_list() const +const EntityAggregate_ptr +SdaiReversible_topology_item::edge_list_() const { if( CurrentUnderlyingType () == config_control_designe_path ) // PATH - return ((SdaiPathH) _stepentityh) ->Edge_list(); + return ((SdaiPath_ptr) _app_inst) ->edge_list_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiReversible_topology_item::Edge_list (EntityAggregateH x) +SdaiReversible_topology_item::edge_list_ (const EntityAggregate_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_path ) // PATH - { ((SdaiPathH) _stepentityh) ->Edge_list( x ); + { ((SdaiPath_ptr) _app_inst) ->edge_list_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiVertexH -SdaiReversible_topology_item::Edge_end() const +const SdaiVertex_ptr +SdaiReversible_topology_item::edge_end_() const { if( CurrentUnderlyingType () == config_control_designe_edge ) // EDGE - return ((SdaiEdgeH) _stepentityh) ->Edge_end(); + return ((SdaiEdge_ptr) _app_inst) ->edge_end_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiReversible_topology_item::Edge_end (SdaiVertexH x) +SdaiReversible_topology_item::edge_end_ (const SdaiVertex_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_edge ) // EDGE - { ((SdaiEdgeH) _stepentityh) ->Edge_end( x ); + { ((SdaiEdge_ptr) _app_inst) ->edge_end_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiVertexH -SdaiReversible_topology_item::Edge_start() const +const SdaiVertex_ptr +SdaiReversible_topology_item::edge_start_() const { if( CurrentUnderlyingType () == config_control_designe_edge ) // EDGE - return ((SdaiEdgeH) _stepentityh) ->Edge_start(); + return ((SdaiEdge_ptr) _app_inst) ->edge_start_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiReversible_topology_item::Edge_start (SdaiVertexH x) +SdaiReversible_topology_item::edge_start_ (const SdaiVertex_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_edge ) // EDGE - { ((SdaiEdgeH) _stepentityh) ->Edge_start( x ); + { ((SdaiEdge_ptr) _app_inst) ->edge_start_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiLabel -SdaiReversible_topology_item::Name() const +SdaiReversible_topology_item::name_() const { if( CurrentUnderlyingType () == config_control_designe_edge ) // EDGE - return ((SdaiEdgeH) _stepentityh) ->Name(); + return ((SdaiEdge_ptr) _app_inst) ->name_(); if( CurrentUnderlyingType () == config_control_designe_path ) // PATH - return ((SdaiPathH) _stepentityh) ->Name(); + return ((SdaiPath_ptr) _app_inst) ->name_(); if( CurrentUnderlyingType () == config_control_designe_face ) // FACE - return ((SdaiFaceH) _stepentityh) ->Name(); + return ((SdaiFace_ptr) _app_inst) ->name_(); if( CurrentUnderlyingType () == config_control_designe_face_bound ) // FACE_BOUND - return ((SdaiFace_boundH) _stepentityh) ->Name(); + return ((SdaiFace_bound_ptr) _app_inst) ->name_(); if( CurrentUnderlyingType () == config_control_designe_closed_shell ) // CLOSED_SHELL - return ((SdaiClosed_shellH) _stepentityh) ->Name(); + return ((SdaiClosed_shell_ptr) _app_inst) ->name_(); if( CurrentUnderlyingType () == config_control_designe_open_shell ) // OPEN_SHELL - return ((SdaiOpen_shellH) _stepentityh) ->Name(); + return ((SdaiOpen_shell_ptr) _app_inst) ->name_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiReversible_topology_item::Name (const char * x) +SdaiReversible_topology_item::name_ (const SdaiLabel x) + { if( CurrentUnderlyingType () == config_control_designe_edge ) // EDGE - { ((SdaiEdgeH) _stepentityh) ->Name( x ); + { ((SdaiEdge_ptr) _app_inst) ->name_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_path ) // PATH - { ((SdaiPathH) _stepentityh) ->Name( x ); + { ((SdaiPath_ptr) _app_inst) ->name_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_face ) // FACE - { ((SdaiFaceH) _stepentityh) ->Name( x ); + { ((SdaiFace_ptr) _app_inst) ->name_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_face_bound ) // FACE_BOUND - { ((SdaiFace_boundH) _stepentityh) ->Name( x ); + { ((SdaiFace_bound_ptr) _app_inst) ->name_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_closed_shell ) // CLOSED_SHELL - { ((SdaiClosed_shellH) _stepentityh) ->Name( x ); + { ((SdaiClosed_shell_ptr) _app_inst) ->name_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_open_shell ) // OPEN_SHELL - { ((SdaiOpen_shellH) _stepentityh) ->Name( x ); + { ((SdaiOpen_shell_ptr) _app_inst) ->name_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } // part 4 -SdaiReversible_topology_item& SdaiReversible_topology_item::operator =( const SdaiEdgeH& o ) +SdaiReversible_topology_item& SdaiReversible_topology_item::operator =( const SdaiEdge_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_edge); return *this; } -SdaiReversible_topology_item& SdaiReversible_topology_item::operator =( const SdaiPathH& o ) +SdaiReversible_topology_item& SdaiReversible_topology_item::operator =( const SdaiPath_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_path); return *this; } -SdaiReversible_topology_item& SdaiReversible_topology_item::operator =( const SdaiFaceH& o ) +SdaiReversible_topology_item& SdaiReversible_topology_item::operator =( const SdaiFace_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_face); return *this; } -SdaiReversible_topology_item& SdaiReversible_topology_item::operator =( const SdaiFace_boundH& o ) +SdaiReversible_topology_item& SdaiReversible_topology_item::operator =( const SdaiFace_bound_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_face_bound); return *this; } -SdaiReversible_topology_item& SdaiReversible_topology_item::operator =( const SdaiClosed_shellH& o ) +SdaiReversible_topology_item& SdaiReversible_topology_item::operator =( const SdaiClosed_shell_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_closed_shell); return *this; } -SdaiReversible_topology_item& SdaiReversible_topology_item::operator =( const SdaiOpen_shellH& o ) +SdaiReversible_topology_item& SdaiReversible_topology_item::operator =( const SdaiOpen_shell_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_open_shell); return *this; } @@ -2472,95 +4384,104 @@ SdaiReversible_topology_item& SdaiReversible_topology_item::operator =( const Sd #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiReversible_topology_item& SdaiReversible_topology_item::operator =( const SdaiReversible_topology_itemH& o ) + +SdaiReversible_topology_item& SdaiReversible_topology_item::operator =( const SdaiReversible_topology_item_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designe_edge ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_path ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_face ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_face_bound ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_closed_shell ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_open_shell ) - _stepentityh = o -> _stepentityh; + if ( o -> CurrentUnderlyingType () == config_control_designe_edge ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_path ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_face ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_face_bound ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_closed_shell ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_open_shell ) + _app_inst = o -> _app_inst; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiReversible_topology_item::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiReversible_topology_item::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designe_edge ) - _stepentityh = ((SdaiReversible_topology_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_path ) - _stepentityh = ((SdaiReversible_topology_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_face ) - _stepentityh = ((SdaiReversible_topology_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_face_bound ) - _stepentityh = ((SdaiReversible_topology_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_closed_shell ) - _stepentityh = ((SdaiReversible_topology_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_open_shell ) - _stepentityh = ((SdaiReversible_topology_item&) o)._stepentityh; + if ( o.CurrentUnderlyingType () == config_control_designe_edge ) + _app_inst = ((SdaiReversible_topology_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_path ) + _app_inst = ((SdaiReversible_topology_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_face ) + _app_inst = ((SdaiReversible_topology_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_face_bound ) + _app_inst = ((SdaiReversible_topology_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_closed_shell ) + _app_inst = ((SdaiReversible_topology_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_open_shell ) + _app_inst = ((SdaiReversible_topology_item&) o)._app_inst; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiReversible_topology_item::IsEdge() const +SCLLOG(Logical) SdaiReversible_topology_item::IsEdge() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_edge ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiReversible_topology_item::IsPath() const +SCLLOG(Logical) SdaiReversible_topology_item::IsPath() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_path ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiReversible_topology_item::IsFace() const +SCLLOG(Logical) SdaiReversible_topology_item::IsFace() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_face ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiReversible_topology_item::IsFace_bound() const +SCLLOG(Logical) SdaiReversible_topology_item::IsFace_bound() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_face_bound ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiReversible_topology_item::IsClosed_shell() const +SCLLOG(Logical) SdaiReversible_topology_item::IsClosed_shell() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_closed_shell ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiReversible_topology_item::IsOpen_shell() const +SCLLOG(Logical) SdaiReversible_topology_item::IsOpen_shell() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_open_shell ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } ////////// END SELECT TYPE SdaiReversible_topology_item @@ -2569,47 +4490,101 @@ SdaiLogical SdaiReversible_topology_item::IsOpen_shell() const ////////// SELECT TYPE axis2_placement const TypeDescriptor * -SdaiAxis2_placement::AssignEntity (STEPentity * se) +SdaiAxis2_placement::AssignEntity (SCLP23(Application_instance) * se) { // AXIS2_PLACEMENT_2D - if (se -> eDesc -> IsA (config_control_designe_axis2_placement_2d)) + if (se -> IsA (config_control_designe_axis2_placement_2d)) { - _stepentityh = (SdaiAxis2_placement_2dH) se; + _app_inst = (SdaiAxis2_placement_2d_ptr) se; return SetUnderlyingType (config_control_designe_axis2_placement_2d); } // AXIS2_PLACEMENT_3D - if (se -> eDesc -> IsA (config_control_designe_axis2_placement_3d)) + if (se -> IsA (config_control_designe_axis2_placement_3d)) { - _stepentityh = (SdaiAxis2_placement_3dH) se; + _app_inst = (SdaiAxis2_placement_3d_ptr) se; return SetUnderlyingType (config_control_designe_axis2_placement_3d); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiAxis2_placement::NewSelect () { - SdaiAxis2_placement * tmp = new SdaiAxis2_placement (); - return tmp; +#ifdef __OSTORE__ + SdaiAxis2_placement * tmp = + new( os_segment::of(this), + SdaiAxis2_placement::get_os_typespec() ) + SdaiAxis2_placement(); +#else + SdaiAxis2_placement * tmp = new SdaiAxis2_placement(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiAxis2_placement::STEPwrite_content (G4std::ostream& out) const +SdaiAxis2_placement::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designe_axis2_placement_2d) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_axis2_placement_3d) - _stepentityh -> STEPwrite_reference (out); - else { + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_axis2_placement_3d) + _app_inst -> STEPwrite_reference (out); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiAxis2_placement::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designe_axis2_placement_2d) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_axis2_placement_3d) + return sdaiINSTANCE; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiAxis2_placement::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designe_axis2_placement_2d) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_axis2_placement_3d) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -2617,40 +4592,40 @@ SdaiAxis2_placement::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiAxis2_placement::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiAxis2_placement::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designe_axis2_placement_2d) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_axis2_placement_3d) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -2662,11 +4637,12 @@ Severity SdaiAxis2_placement::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -2678,204 +4654,313 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiAxis2_placement (os_database *db) +{ + return new (db, SdaiAxis2_placement::get_os_typespec()) + SdaiAxis2_placement ; +} + +void +SdaiAxis2_placement_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiAxis2_placement access hook funct called." << G4endl; + } +#endif + SdaiAxis2_placement *s = (SdaiAxis2_placement *) object; + s->_type = config_control_designt_axis2_placement; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiAxis2_placements (os_database *db) +{ + return new (db, SdaiAxis2_placements::get_os_typespec()) + SdaiAxis2_placements ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiAxis2_placement::SdaiAxis2_placement() - : SdaiSelect (config_control_designt_axis2_placement) +SdaiAxis2_placement::SdaiAxis2_placement( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiAxis2_placement constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiAxis2_placement constructor." << G4endl; + } +#endif } // part 1 -SdaiAxis2_placement::SdaiAxis2_placement( const SdaiAxis2_placement_2dH& o ) - : SdaiSelect (config_control_designt_axis2_placement, config_control_designe_axis2_placement_2d ) +SdaiAxis2_placement::SdaiAxis2_placement( const SdaiAxis2_placement_2d_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_axis2_placement_2d) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiAxis2_placement constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiAxis2_placement constructor." << G4endl; + } +#endif } -SdaiAxis2_placement::SdaiAxis2_placement( const SdaiAxis2_placement_3dH& o ) - : SdaiSelect (config_control_designt_axis2_placement, config_control_designe_axis2_placement_3d ) +SdaiAxis2_placement::SdaiAxis2_placement( const SdaiAxis2_placement_3d_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_axis2_placement_3d) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiAxis2_placement constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiAxis2_placement constructor." << G4endl; + } +#endif } SdaiAxis2_placement::~SdaiAxis2_placement() { } +SdaiAxis2_placements::SdaiAxis2_placements( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiAxis2_placements::~SdaiAxis2_placements() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiAxis2_placements::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiAxis2_placement::get_os_typespec() ) + SdaiAxis2_placement ); +} +#endif + // part 2 -SdaiAxis2_placement::operator SdaiAxis2_placement_2dH() +SdaiAxis2_placement::operator SdaiAxis2_placement_2d_ptr() { if( CurrentUnderlyingType () == config_control_designe_axis2_placement_2d ) - return ((SdaiAxis2_placement_2dH) _stepentityh); + return ((SdaiAxis2_placement_2d_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiAxis2_placement::operator SdaiAxis2_placement_3dH() +SdaiAxis2_placement::operator SdaiAxis2_placement_3d_ptr() { if( CurrentUnderlyingType () == config_control_designe_axis2_placement_3d ) - return ((SdaiAxis2_placement_3dH) _stepentityh); + return ((SdaiAxis2_placement_3d_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } // part 3 -SdaiDirectionH -SdaiAxis2_placement::Axis() const +const SdaiDirection_ptr +SdaiAxis2_placement::axis_() const { if( CurrentUnderlyingType () == config_control_designe_axis2_placement_3d ) // AXIS2_PLACEMENT_3D - return ((SdaiAxis2_placement_3dH) _stepentityh) ->Axis(); + return ((SdaiAxis2_placement_3d_ptr) _app_inst) ->axis_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiAxis2_placement::Axis (SdaiDirectionH x) +SdaiAxis2_placement::axis_ (const SdaiDirection_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_axis2_placement_3d ) // AXIS2_PLACEMENT_3D - { ((SdaiAxis2_placement_3dH) _stepentityh) ->Axis( x ); + { ((SdaiAxis2_placement_3d_ptr) _app_inst) ->axis_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiDirectionH -SdaiAxis2_placement::Ref_direction() const +const SdaiDirection_ptr +SdaiAxis2_placement::ref_direction_() const { if( CurrentUnderlyingType () == config_control_designe_axis2_placement_2d ) // AXIS2_PLACEMENT_2D - return ((SdaiAxis2_placement_2dH) _stepentityh) ->Ref_direction(); + return ((SdaiAxis2_placement_2d_ptr) _app_inst) ->ref_direction_(); if( CurrentUnderlyingType () == config_control_designe_axis2_placement_3d ) // AXIS2_PLACEMENT_3D - return ((SdaiAxis2_placement_3dH) _stepentityh) ->Ref_direction(); + return ((SdaiAxis2_placement_3d_ptr) _app_inst) ->ref_direction_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiAxis2_placement::Ref_direction (SdaiDirectionH x) +SdaiAxis2_placement::ref_direction_ (const SdaiDirection_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_axis2_placement_2d ) // AXIS2_PLACEMENT_2D - { ((SdaiAxis2_placement_2dH) _stepentityh) ->Ref_direction( x ); + { ((SdaiAxis2_placement_2d_ptr) _app_inst) ->ref_direction_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_axis2_placement_3d ) // AXIS2_PLACEMENT_3D - { ((SdaiAxis2_placement_3dH) _stepentityh) ->Ref_direction( x ); + { ((SdaiAxis2_placement_3d_ptr) _app_inst) ->ref_direction_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiCartesian_pointH -SdaiAxis2_placement::Location() const +const SdaiCartesian_point_ptr +SdaiAxis2_placement::location_() const { if( CurrentUnderlyingType () == config_control_designe_axis2_placement_2d ) // AXIS2_PLACEMENT_2D - return ((SdaiAxis2_placement_2dH) _stepentityh) ->Location(); + return ((SdaiAxis2_placement_2d_ptr) _app_inst) ->location_(); if( CurrentUnderlyingType () == config_control_designe_axis2_placement_3d ) // AXIS2_PLACEMENT_3D - return ((SdaiAxis2_placement_3dH) _stepentityh) ->Location(); + return ((SdaiAxis2_placement_3d_ptr) _app_inst) ->location_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiAxis2_placement::Location (SdaiCartesian_pointH x) +SdaiAxis2_placement::location_ (const SdaiCartesian_point_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_axis2_placement_2d ) // AXIS2_PLACEMENT_2D - { ((SdaiAxis2_placement_2dH) _stepentityh) ->Location( x ); + { ((SdaiAxis2_placement_2d_ptr) _app_inst) ->location_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_axis2_placement_3d ) // AXIS2_PLACEMENT_3D - { ((SdaiAxis2_placement_3dH) _stepentityh) ->Location( x ); + { ((SdaiAxis2_placement_3d_ptr) _app_inst) ->location_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiLabel -SdaiAxis2_placement::Name() const +SdaiAxis2_placement::name_() const { if( CurrentUnderlyingType () == config_control_designe_axis2_placement_2d ) // AXIS2_PLACEMENT_2D - return ((SdaiAxis2_placement_2dH) _stepentityh) ->Name(); + return ((SdaiAxis2_placement_2d_ptr) _app_inst) ->name_(); if( CurrentUnderlyingType () == config_control_designe_axis2_placement_3d ) // AXIS2_PLACEMENT_3D - return ((SdaiAxis2_placement_3dH) _stepentityh) ->Name(); + return ((SdaiAxis2_placement_3d_ptr) _app_inst) ->name_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiAxis2_placement::Name (const char * x) +SdaiAxis2_placement::name_ (const SdaiLabel x) + { if( CurrentUnderlyingType () == config_control_designe_axis2_placement_2d ) // AXIS2_PLACEMENT_2D - { ((SdaiAxis2_placement_2dH) _stepentityh) ->Name( x ); + { ((SdaiAxis2_placement_2d_ptr) _app_inst) ->name_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_axis2_placement_3d ) // AXIS2_PLACEMENT_3D - { ((SdaiAxis2_placement_3dH) _stepentityh) ->Name( x ); + { ((SdaiAxis2_placement_3d_ptr) _app_inst) ->name_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } // part 4 -SdaiAxis2_placement& SdaiAxis2_placement::operator =( const SdaiAxis2_placement_2dH& o ) +SdaiAxis2_placement& SdaiAxis2_placement::operator =( const SdaiAxis2_placement_2d_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_axis2_placement_2d); return *this; } -SdaiAxis2_placement& SdaiAxis2_placement::operator =( const SdaiAxis2_placement_3dH& o ) +SdaiAxis2_placement& SdaiAxis2_placement::operator =( const SdaiAxis2_placement_3d_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_axis2_placement_3d); return *this; } @@ -2883,43 +4968,52 @@ SdaiAxis2_placement& SdaiAxis2_placement::operator =( const SdaiAxis2_placement_ #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiAxis2_placement& SdaiAxis2_placement::operator =( const SdaiAxis2_placementH& o ) + +SdaiAxis2_placement& SdaiAxis2_placement::operator =( const SdaiAxis2_placement_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designe_axis2_placement_2d ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_axis2_placement_3d ) - _stepentityh = o -> _stepentityh; + if ( o -> CurrentUnderlyingType () == config_control_designe_axis2_placement_2d ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_axis2_placement_3d ) + _app_inst = o -> _app_inst; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiAxis2_placement::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiAxis2_placement::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designe_axis2_placement_2d ) - _stepentityh = ((SdaiAxis2_placement&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_axis2_placement_3d ) - _stepentityh = ((SdaiAxis2_placement&) o)._stepentityh; + if ( o.CurrentUnderlyingType () == config_control_designe_axis2_placement_2d ) + _app_inst = ((SdaiAxis2_placement&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_axis2_placement_3d ) + _app_inst = ((SdaiAxis2_placement&) o)._app_inst; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiAxis2_placement::IsAxis2_placement_2d() const +SCLLOG(Logical) SdaiAxis2_placement::IsAxis2_placement_2d() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_axis2_placement_2d ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiAxis2_placement::IsAxis2_placement_3d() const +SCLLOG(Logical) SdaiAxis2_placement::IsAxis2_placement_3d() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_axis2_placement_3d ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } ////////// END SELECT TYPE SdaiAxis2_placement @@ -2928,47 +5022,101 @@ SdaiLogical SdaiAxis2_placement::IsAxis2_placement_3d() const ////////// SELECT TYPE specified_item const TypeDescriptor * -SdaiSpecified_item::AssignEntity (STEPentity * se) +SdaiSpecified_item::AssignEntity (SCLP23(Application_instance) * se) { // PRODUCT_DEFINITION - if (se -> eDesc -> IsA (config_control_designe_product_definition)) + if (se -> IsA (config_control_designe_product_definition)) { - _stepentityh = (SdaiProduct_definitionH) se; + _app_inst = (SdaiProduct_definition_ptr) se; return SetUnderlyingType (config_control_designe_product_definition); } // SHAPE_ASPECT - if (se -> eDesc -> IsA (config_control_designe_shape_aspect)) + if (se -> IsA (config_control_designe_shape_aspect)) { - _stepentityh = (SdaiShape_aspectH) se; + _app_inst = (SdaiShape_aspect_ptr) se; return SetUnderlyingType (config_control_designe_shape_aspect); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiSpecified_item::NewSelect () { - SdaiSpecified_item * tmp = new SdaiSpecified_item (); - return tmp; +#ifdef __OSTORE__ + SdaiSpecified_item * tmp = + new( os_segment::of(this), + SdaiSpecified_item::get_os_typespec() ) + SdaiSpecified_item(); +#else + SdaiSpecified_item * tmp = new SdaiSpecified_item(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiSpecified_item::STEPwrite_content (G4std::ostream& out) const +SdaiSpecified_item::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designe_product_definition) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_shape_aspect) - _stepentityh -> STEPwrite_reference (out); - else { + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_shape_aspect) + _app_inst -> STEPwrite_reference (out); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiSpecified_item::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designe_product_definition) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_shape_aspect) + return sdaiINSTANCE; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiSpecified_item::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designe_product_definition) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_shape_aspect) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -2976,40 +5124,40 @@ SdaiSpecified_item::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiSpecified_item::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiSpecified_item::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designe_product_definition) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_shape_aspect) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -3021,11 +5169,12 @@ Severity SdaiSpecified_item::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -3037,269 +5186,381 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiSpecified_item (os_database *db) +{ + return new (db, SdaiSpecified_item::get_os_typespec()) + SdaiSpecified_item ; +} + +void +SdaiSpecified_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiSpecified_item access hook funct called." << G4endl; + } +#endif + SdaiSpecified_item *s = (SdaiSpecified_item *) object; + s->_type = config_control_designt_specified_item; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiSpecified_items (os_database *db) +{ + return new (db, SdaiSpecified_items::get_os_typespec()) + SdaiSpecified_items ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiSpecified_item::SdaiSpecified_item() - : SdaiSelect (config_control_designt_specified_item) +SdaiSpecified_item::SdaiSpecified_item( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiSpecified_item constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiSpecified_item constructor." << G4endl; + } +#endif } // part 1 -SdaiSpecified_item::SdaiSpecified_item( const SdaiProduct_definitionH& o ) - : SdaiSelect (config_control_designt_specified_item, config_control_designe_product_definition ) +SdaiSpecified_item::SdaiSpecified_item( const SdaiProduct_definition_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_product_definition) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiSpecified_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiSpecified_item constructor." << G4endl; + } +#endif } -SdaiSpecified_item::SdaiSpecified_item( const SdaiShape_aspectH& o ) - : SdaiSelect (config_control_designt_specified_item, config_control_designe_shape_aspect ) +SdaiSpecified_item::SdaiSpecified_item( const SdaiShape_aspect_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_shape_aspect) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiSpecified_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiSpecified_item constructor." << G4endl; + } +#endif } SdaiSpecified_item::~SdaiSpecified_item() { } +SdaiSpecified_items::SdaiSpecified_items( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiSpecified_items::~SdaiSpecified_items() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiSpecified_items::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiSpecified_item::get_os_typespec() ) + SdaiSpecified_item ); +} +#endif + // part 2 -SdaiSpecified_item::operator SdaiProduct_definitionH() +SdaiSpecified_item::operator SdaiProduct_definition_ptr() { if( CurrentUnderlyingType () == config_control_designe_product_definition ) - return ((SdaiProduct_definitionH) _stepentityh); + return ((SdaiProduct_definition_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiSpecified_item::operator SdaiShape_aspectH() +SdaiSpecified_item::operator SdaiShape_aspect_ptr() { if( CurrentUnderlyingType () == config_control_designe_shape_aspect ) - return ((SdaiShape_aspectH) _stepentityh); + return ((SdaiShape_aspect_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } // part 3 -const LOGICAL -SdaiSpecified_item::Product_definitional() const +const SCLLOG(Logical) +SdaiSpecified_item::product_definitional_() const { if( CurrentUnderlyingType () == config_control_designe_shape_aspect ) // SHAPE_ASPECT - return ((SdaiShape_aspectH) _stepentityh) ->Product_definitional(); + return ((SdaiShape_aspect_ptr) _app_inst) ->product_definitional_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return (LOGICAL) NULL; + return (SCLLOG(Logical)) 0; } void -SdaiSpecified_item::Product_definitional (LOGICAL x) +SdaiSpecified_item::product_definitional_ (const SCLLOG(Logical) x) + { if( CurrentUnderlyingType () == config_control_designe_shape_aspect ) // SHAPE_ASPECT - { ((SdaiShape_aspectH) _stepentityh) ->Product_definitional( x ); + { ((SdaiShape_aspect_ptr) _app_inst) ->product_definitional_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiProduct_definition_shapeH -SdaiSpecified_item::Of_shape() const +const SdaiProduct_definition_shape_ptr +SdaiSpecified_item::of_shape_() const { if( CurrentUnderlyingType () == config_control_designe_shape_aspect ) // SHAPE_ASPECT - return ((SdaiShape_aspectH) _stepentityh) ->Of_shape(); + return ((SdaiShape_aspect_ptr) _app_inst) ->of_shape_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiSpecified_item::Of_shape (SdaiProduct_definition_shapeH x) +SdaiSpecified_item::of_shape_ (const SdaiProduct_definition_shape_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_shape_aspect ) // SHAPE_ASPECT - { ((SdaiShape_aspectH) _stepentityh) ->Of_shape( x ); + { ((SdaiShape_aspect_ptr) _app_inst) ->of_shape_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiLabel -SdaiSpecified_item::Name() const +SdaiSpecified_item::name_() const { if( CurrentUnderlyingType () == config_control_designe_shape_aspect ) // SHAPE_ASPECT - return ((SdaiShape_aspectH) _stepentityh) ->Name(); + return ((SdaiShape_aspect_ptr) _app_inst) ->name_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiSpecified_item::Name (const char * x) +SdaiSpecified_item::name_ (const SdaiLabel x) + { if( CurrentUnderlyingType () == config_control_designe_shape_aspect ) // SHAPE_ASPECT - { ((SdaiShape_aspectH) _stepentityh) ->Name( x ); + { ((SdaiShape_aspect_ptr) _app_inst) ->name_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiProduct_definition_contextH -SdaiSpecified_item::Frame_of_reference() const +const SdaiProduct_definition_context_ptr +SdaiSpecified_item::frame_of_reference_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - return ((SdaiProduct_definitionH) _stepentityh) ->Frame_of_reference(); + return ((SdaiProduct_definition_ptr) _app_inst) ->frame_of_reference_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiSpecified_item::Frame_of_reference (SdaiProduct_definition_contextH x) +SdaiSpecified_item::frame_of_reference_ (const SdaiProduct_definition_context_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - { ((SdaiProduct_definitionH) _stepentityh) ->Frame_of_reference( x ); + { ((SdaiProduct_definition_ptr) _app_inst) ->frame_of_reference_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiProduct_definition_formationH -SdaiSpecified_item::Formation() const +const SdaiProduct_definition_formation_ptr +SdaiSpecified_item::formation_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - return ((SdaiProduct_definitionH) _stepentityh) ->Formation(); + return ((SdaiProduct_definition_ptr) _app_inst) ->formation_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiSpecified_item::Formation (SdaiProduct_definition_formationH x) +SdaiSpecified_item::formation_ (const SdaiProduct_definition_formation_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - { ((SdaiProduct_definitionH) _stepentityh) ->Formation( x ); + { ((SdaiProduct_definition_ptr) _app_inst) ->formation_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiText -SdaiSpecified_item::Description() const +SdaiSpecified_item::description_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - return ((SdaiProduct_definitionH) _stepentityh) ->Description(); + return ((SdaiProduct_definition_ptr) _app_inst) ->description_(); if( CurrentUnderlyingType () == config_control_designe_shape_aspect ) // SHAPE_ASPECT - return ((SdaiShape_aspectH) _stepentityh) ->Description(); + return ((SdaiShape_aspect_ptr) _app_inst) ->description_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiSpecified_item::Description (const char * x) +SdaiSpecified_item::description_ (const SdaiText x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - { ((SdaiProduct_definitionH) _stepentityh) ->Description( x ); + { ((SdaiProduct_definition_ptr) _app_inst) ->description_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_shape_aspect ) // SHAPE_ASPECT - { ((SdaiShape_aspectH) _stepentityh) ->Description( x ); + { ((SdaiShape_aspect_ptr) _app_inst) ->description_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiIdentifier -SdaiSpecified_item::Id() const +SdaiSpecified_item::id_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - return ((SdaiProduct_definitionH) _stepentityh) ->Id(); + return ((SdaiProduct_definition_ptr) _app_inst) ->id_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiSpecified_item::Id (const char * x) +SdaiSpecified_item::id_ (const SdaiIdentifier x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - { ((SdaiProduct_definitionH) _stepentityh) ->Id( x ); + { ((SdaiProduct_definition_ptr) _app_inst) ->id_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } // part 4 -SdaiSpecified_item& SdaiSpecified_item::operator =( const SdaiProduct_definitionH& o ) +SdaiSpecified_item& SdaiSpecified_item::operator =( const SdaiProduct_definition_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_product_definition); return *this; } -SdaiSpecified_item& SdaiSpecified_item::operator =( const SdaiShape_aspectH& o ) +SdaiSpecified_item& SdaiSpecified_item::operator =( const SdaiShape_aspect_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_shape_aspect); return *this; } @@ -3307,43 +5568,52 @@ SdaiSpecified_item& SdaiSpecified_item::operator =( const SdaiShape_aspectH& o ) #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiSpecified_item& SdaiSpecified_item::operator =( const SdaiSpecified_itemH& o ) + +SdaiSpecified_item& SdaiSpecified_item::operator =( const SdaiSpecified_item_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designe_product_definition ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_shape_aspect ) - _stepentityh = o -> _stepentityh; + if ( o -> CurrentUnderlyingType () == config_control_designe_product_definition ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_shape_aspect ) + _app_inst = o -> _app_inst; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiSpecified_item::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiSpecified_item::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designe_product_definition ) - _stepentityh = ((SdaiSpecified_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_shape_aspect ) - _stepentityh = ((SdaiSpecified_item&) o)._stepentityh; + if ( o.CurrentUnderlyingType () == config_control_designe_product_definition ) + _app_inst = ((SdaiSpecified_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_shape_aspect ) + _app_inst = ((SdaiSpecified_item&) o)._app_inst; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiSpecified_item::IsProduct_definition() const +SCLLOG(Logical) SdaiSpecified_item::IsProduct_definition() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_product_definition ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiSpecified_item::IsShape_aspect() const +SCLLOG(Logical) SdaiSpecified_item::IsShape_aspect() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_shape_aspect ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } ////////// END SELECT TYPE SdaiSpecified_item @@ -3352,55 +5622,189 @@ SdaiLogical SdaiSpecified_item::IsShape_aspect() const ////////// SELECT TYPE measure_value const TypeDescriptor * -SdaiMeasure_value::AssignEntity (STEPentity * se) +SdaiMeasure_value::AssignEntity (SCLP23(Application_instance) * se) { - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiMeasure_value::NewSelect () { - SdaiMeasure_value * tmp = new SdaiMeasure_value (); - return tmp; +#ifdef __OSTORE__ + SdaiMeasure_value * tmp = + new( os_segment::of(this), + SdaiMeasure_value::get_os_typespec() ) + SdaiMeasure_value(); +#else + SdaiMeasure_value * tmp = new SdaiMeasure_value(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiMeasure_value::STEPwrite_content (G4std::ostream& out) const +SdaiMeasure_value::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designt_area_measure) - out << _sdaireal; - else if (CurrentUnderlyingType () == config_control_designt_context_dependent_measure) - out << _sdaireal; - else if (CurrentUnderlyingType () == config_control_designt_count_measure) - out << _sdaireal; - else if (CurrentUnderlyingType () == config_control_designt_descriptive_measure) - _sdaistring.STEPwrite (out); - else if (CurrentUnderlyingType () == config_control_designt_length_measure) - out << _sdaireal; - else if (CurrentUnderlyingType () == config_control_designt_mass_measure) - out << _sdaireal; - else if (CurrentUnderlyingType () == config_control_designt_plane_angle_measure) - out << _sdaireal; - else if (CurrentUnderlyingType () == config_control_designt_parameter_value) - out << _sdaireal; - else if (CurrentUnderlyingType () == config_control_designt_positive_length_measure) - out << _sdaireal; - else if (CurrentUnderlyingType () == config_control_designt_positive_plane_angle_measure) - out << _sdaireal; - else if (CurrentUnderlyingType () == config_control_designt_solid_angle_measure) - out << _sdaireal; - else if (CurrentUnderlyingType () == config_control_designt_volume_measure) - out << _sdaireal; - else { + WriteReal(_real,out); + else if (CurrentUnderlyingType () == config_control_designt_context_dependent_measure) + WriteReal(_real,out); + else if (CurrentUnderlyingType () == config_control_designt_count_measure) + WriteReal(_real,out); + else if (CurrentUnderlyingType () == config_control_designt_descriptive_measure) + _string.STEPwrite (out); + else if (CurrentUnderlyingType () == config_control_designt_length_measure) + WriteReal(_real,out); + else if (CurrentUnderlyingType () == config_control_designt_mass_measure) + WriteReal(_real,out); + else if (CurrentUnderlyingType () == config_control_designt_plane_angle_measure) + WriteReal(_real,out); + else if (CurrentUnderlyingType () == config_control_designt_parameter_value) + WriteReal(_real,out); + else if (CurrentUnderlyingType () == config_control_designt_positive_length_measure) + WriteReal(_real,out); + else if (CurrentUnderlyingType () == config_control_designt_positive_plane_angle_measure) + WriteReal(_real,out); + else if (CurrentUnderlyingType () == config_control_designt_solid_angle_measure) + WriteReal(_real,out); + else if (CurrentUnderlyingType () == config_control_designt_volume_measure) + WriteReal(_real,out); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiMeasure_value::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designt_area_measure) + return sdaiREAL; + else if (CurrentUnderlyingType() == config_control_designt_context_dependent_measure) + return sdaiREAL; + else if (CurrentUnderlyingType() == config_control_designt_count_measure) + return sdaiNUMBER; + else if (CurrentUnderlyingType() == config_control_designt_descriptive_measure) + return sdaiSTRING; + else if (CurrentUnderlyingType() == config_control_designt_length_measure) + return sdaiREAL; + else if (CurrentUnderlyingType() == config_control_designt_mass_measure) + return sdaiREAL; + else if (CurrentUnderlyingType() == config_control_designt_plane_angle_measure) + return sdaiREAL; + else if (CurrentUnderlyingType() == config_control_designt_parameter_value) + return sdaiREAL; + else if (CurrentUnderlyingType() == config_control_designt_positive_length_measure) + return sdaiREAL; + else if (CurrentUnderlyingType() == config_control_designt_positive_plane_angle_measure) + return sdaiREAL; + else if (CurrentUnderlyingType() == config_control_designt_solid_angle_measure) + return sdaiREAL; + else if (CurrentUnderlyingType() == config_control_designt_volume_measure) + return sdaiREAL; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiMeasure_value::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designt_area_measure) + { + out << tmp.chars() << "("; + WriteReal(_real,out); + out << ")"; + } + else if (td == config_control_designt_context_dependent_measure) + { + out << tmp.chars() << "("; + WriteReal(_real,out); + out << ")"; + } + else if (td == config_control_designt_count_measure) + { + out << tmp.chars() << "("; + WriteReal(_real,out); + out << ")"; + } + else if (td == config_control_designt_descriptive_measure) + { + out << tmp.chars() << "("; + _string.STEPwrite (out); + out << ")"; + } + else if (td == config_control_designt_length_measure) + { + out << tmp.chars() << "("; + WriteReal(_real,out); + out << ")"; + } + else if (td == config_control_designt_mass_measure) + { + out << tmp.chars() << "("; + WriteReal(_real,out); + out << ")"; + } + else if (td == config_control_designt_plane_angle_measure) + { + out << tmp.chars() << "("; + WriteReal(_real,out); + out << ")"; + } + else if (td == config_control_designt_parameter_value) + { + out << tmp.chars() << "("; + WriteReal(_real,out); + out << ")"; + } + else if (td == config_control_designt_positive_length_measure) + { + out << tmp.chars() << "("; + WriteReal(_real,out); + out << ")"; + } + else if (td == config_control_designt_positive_plane_angle_measure) + { + out << tmp.chars() << "("; + WriteReal(_real,out); + out << ")"; + } + else if (td == config_control_designt_solid_angle_measure) + { + out << tmp.chars() << "("; + WriteReal(_real,out); + out << ")"; + } + else if (td == config_control_designt_volume_measure) + { + out << tmp.chars() << "("; + WriteReal(_real,out); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -3408,71 +5812,62 @@ SdaiMeasure_value::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiMeasure_value::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +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 (_sdaireal, in, &_error, "),"); + ReadReal (_real, in, &_error, "),"); return severity (); } - if (CurrentUnderlyingType () == config_control_designt_context_dependent_measure) { - ReadReal (_sdaireal, in, &_error, "),"); + ReadReal (_real, in, &_error, "),"); return severity (); } - if (CurrentUnderlyingType () == config_control_designt_count_measure) { - ReadReal (_sdaireal, in, &_error, "),"); + ReadReal (_real, in, &_error, "),"); return severity (); } - if (CurrentUnderlyingType () == config_control_designt_descriptive_measure) { - _sdaistring.STEPread (in, &_error); + _string.STEPread (in, &_error); return severity (); } if (CurrentUnderlyingType () == config_control_designt_length_measure) { - ReadReal (_sdaireal, in, &_error, "),"); + ReadReal (_real, in, &_error, "),"); return severity (); } - if (CurrentUnderlyingType () == config_control_designt_mass_measure) { - ReadReal (_sdaireal, in, &_error, "),"); + ReadReal (_real, in, &_error, "),"); return severity (); } - if (CurrentUnderlyingType () == config_control_designt_plane_angle_measure) { - ReadReal (_sdaireal, in, &_error, "),"); + ReadReal (_real, in, &_error, "),"); return severity (); } - if (CurrentUnderlyingType () == config_control_designt_parameter_value) { - ReadReal (_sdaireal, in, &_error, "),"); + ReadReal (_real, in, &_error, "),"); return severity (); } - if (CurrentUnderlyingType () == config_control_designt_positive_length_measure) { - ReadReal (_sdaireal, in, &_error, "),"); + ReadReal (_real, in, &_error, "),"); return severity (); } - if (CurrentUnderlyingType () == config_control_designt_positive_plane_angle_measure) { - ReadReal (_sdaireal, in, &_error, "),"); + ReadReal (_real, in, &_error, "),"); return severity (); } - if (CurrentUnderlyingType () == config_control_designt_solid_angle_measure) { - ReadReal (_sdaireal, in, &_error, "),"); + ReadReal (_real, in, &_error, "),"); return severity (); } - if (CurrentUnderlyingType () == config_control_designt_volume_measure) { - ReadReal (_sdaireal, in, &_error, "),"); + ReadReal (_real, in, &_error, "),"); return severity (); } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -3484,13 +5879,14 @@ Severity SdaiMeasure_value::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - case STRING_TYPE : - return _sdaistring.StrToVal (str); - default: // should never be here - Done in Select class + case sdaiSTRING : + return _string.StrToVal (str); + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -3502,81 +5898,180 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiMeasure_value (os_database *db) +{ + return new (db, SdaiMeasure_value::get_os_typespec()) + SdaiMeasure_value ; +} + +void +SdaiMeasure_value_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiMeasure_value access hook funct called." << G4endl; + } +#endif + SdaiMeasure_value *s = (SdaiMeasure_value *) object; + s->_type = config_control_designt_measure_value; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiMeasure_values (os_database *db) +{ + return new (db, SdaiMeasure_values::get_os_typespec()) + SdaiMeasure_values ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiMeasure_value::SdaiMeasure_value() - : SdaiSelect (config_control_designt_measure_value) +SdaiMeasure_value::SdaiMeasure_value( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiMeasure_value constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiMeasure_value constructor." << G4endl; + } +#endif } // part 1 -SdaiMeasure_value::SdaiMeasure_value( const SdaiDescriptive_measure& o ) - : SdaiSelect (config_control_designt_measure_value, config_control_designt_descriptive_measure ) +SdaiMeasure_value::SdaiMeasure_value( const SdaiDescriptive_measure& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designt_descriptive_measure) { - _sdaistring = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiMeasure_value constructor." << G4endl; + } +#endif + _string = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiMeasure_value constructor." << G4endl; + } +#endif } -SdaiMeasure_value::SdaiMeasure_value( const SdaiReal& o ) - : SdaiSelect (config_control_designt_measure_value, config_control_designt_context_dependent_measure ) +SdaiMeasure_value::SdaiMeasure_value( const SCLP23(Real)& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) ( typedescript, config_control_designt_context_dependent_measure ) { - _sdaireal = o; + _real = o; // NOTE: Underlying type defaults to config_control_designt_context_dependent_measure instead of NULL +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiMeasure_value constructor." << G4endl; + } +#endif } SdaiMeasure_value::~SdaiMeasure_value() { } +SdaiMeasure_values::SdaiMeasure_values( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiMeasure_values::~SdaiMeasure_values() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiMeasure_values::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiMeasure_value::get_os_typespec() ) + SdaiMeasure_value ); +} +#endif + // part 2 SdaiMeasure_value::operator SdaiDescriptive_measure() { if( CurrentUnderlyingType () == config_control_designt_descriptive_measure ) - return _sdaistring; + return _string; - severity( SEVERITY_WARNING ); - Error( "Underlying type is not SdaiDescriptive_measure" ); + severity( SEVERITY_WARNING ); + Error( "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." ); - return NULL; + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); + return 0; } -SdaiMeasure_value::operator SdaiReal() +SdaiMeasure_value::operator SCLP23(Real)() { if( CurrentUnderlyingType () == config_control_designt_area_measure ) - return _sdaireal; + return _real; if( CurrentUnderlyingType () == config_control_designt_context_dependent_measure ) - return _sdaireal; + return _real; if( CurrentUnderlyingType () == config_control_designt_count_measure ) - return _sdaireal; + return _real; if( CurrentUnderlyingType () == config_control_designt_length_measure ) - return _sdaireal; + return _real; if( CurrentUnderlyingType () == config_control_designt_mass_measure ) - return _sdaireal; + return _real; if( CurrentUnderlyingType () == config_control_designt_plane_angle_measure ) - return _sdaireal; + return _real; if( CurrentUnderlyingType () == config_control_designt_parameter_value ) - return _sdaireal; + return _real; if( CurrentUnderlyingType () == config_control_designt_positive_length_measure ) - return _sdaireal; + return _real; if( CurrentUnderlyingType () == config_control_designt_positive_plane_angle_measure ) - return _sdaireal; + return _real; if( CurrentUnderlyingType () == config_control_designt_solid_angle_measure ) - return _sdaireal; + return _real; if( CurrentUnderlyingType () == config_control_designt_volume_measure ) - return _sdaireal; + return _real; - severity( SEVERITY_WARNING ); - Error( "Underlying type is not SdaiReal" ); + severity( SEVERITY_WARNING ); + Error( "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." ); - return NULL; + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); + return (SCLP23(Real))0; } @@ -3585,190 +6080,201 @@ SdaiMeasure_value::operator SdaiReal() // part 4 SdaiMeasure_value& SdaiMeasure_value::operator =( const SdaiDescriptive_measure& o ) { - nullify (); - _sdaistring = o; + nullify (); + _string = o; SetUnderlyingType (config_control_designt_descriptive_measure); return *this; } -SdaiMeasure_value& SdaiMeasure_value::operator =( const SdaiReal& o ) +SdaiMeasure_value& SdaiMeasure_value::operator =( const SCLP23(Real)& o ) { - _sdaireal = o; - underlying_type = 0; // MUST BE SET BY USER -// discriminator = UNSET + _real = o; + underlying_type = 0; // MUST BE SET BY USER +#ifdef __OSTORE__ + underlying_type_name.set_null(); +#endif + // discriminator = UNSET return *this; } - #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiMeasure_value& SdaiMeasure_value::operator =( const SdaiMeasure_valueH& o ) + +SdaiMeasure_value& SdaiMeasure_value::operator =( const SdaiMeasure_value_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designt_area_measure ) - _sdaireal = o -> _sdaireal; - if( o -> CurrentUnderlyingType () == config_control_designt_context_dependent_measure ) - _sdaireal = o -> _sdaireal; - if( o -> CurrentUnderlyingType () == config_control_designt_count_measure ) - _sdaireal = o -> _sdaireal; - if( o -> CurrentUnderlyingType () == config_control_designt_descriptive_measure ) - _sdaistring = o -> _sdaistring; - if( o -> CurrentUnderlyingType () == config_control_designt_length_measure ) - _sdaireal = o -> _sdaireal; - if( o -> CurrentUnderlyingType () == config_control_designt_mass_measure ) - _sdaireal = o -> _sdaireal; - if( o -> CurrentUnderlyingType () == config_control_designt_plane_angle_measure ) - _sdaireal = o -> _sdaireal; - if( o -> CurrentUnderlyingType () == config_control_designt_parameter_value ) - _sdaireal = o -> _sdaireal; - if( o -> CurrentUnderlyingType () == config_control_designt_positive_length_measure ) - _sdaireal = o -> _sdaireal; - if( o -> CurrentUnderlyingType () == config_control_designt_positive_plane_angle_measure ) - _sdaireal = o -> _sdaireal; - if( o -> CurrentUnderlyingType () == config_control_designt_solid_angle_measure ) - _sdaireal = o -> _sdaireal; - if( o -> CurrentUnderlyingType () == config_control_designt_volume_measure ) - _sdaireal = o -> _sdaireal; + if ( o -> CurrentUnderlyingType () == config_control_designt_area_measure ) + _real = o -> _real; + else if ( o -> CurrentUnderlyingType () == config_control_designt_context_dependent_measure ) + _real = o -> _real; + else if ( o -> CurrentUnderlyingType () == config_control_designt_count_measure ) + _real = o -> _real; + else if ( o -> CurrentUnderlyingType () == config_control_designt_descriptive_measure ) + _string = o -> _string; + else if ( o -> CurrentUnderlyingType () == config_control_designt_length_measure ) + _real = o -> _real; + else if ( o -> CurrentUnderlyingType () == config_control_designt_mass_measure ) + _real = o -> _real; + else if ( o -> CurrentUnderlyingType () == config_control_designt_plane_angle_measure ) + _real = o -> _real; + else if ( o -> CurrentUnderlyingType () == config_control_designt_parameter_value ) + _real = o -> _real; + else if ( o -> CurrentUnderlyingType () == config_control_designt_positive_length_measure ) + _real = o -> _real; + else if ( o -> CurrentUnderlyingType () == config_control_designt_positive_plane_angle_measure ) + _real = o -> _real; + else if ( o -> CurrentUnderlyingType () == config_control_designt_solid_angle_measure ) + _real = o -> _real; + else if ( o -> CurrentUnderlyingType () == config_control_designt_volume_measure ) + _real = o -> _real; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiMeasure_value::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiMeasure_value::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designt_area_measure ) - _sdaireal = ((SdaiMeasure_value&) o)._sdaireal; - if( o.CurrentUnderlyingType () == config_control_designt_context_dependent_measure ) - _sdaireal = ((SdaiMeasure_value&) o)._sdaireal; - if( o.CurrentUnderlyingType () == config_control_designt_count_measure ) - _sdaireal = ((SdaiMeasure_value&) o)._sdaireal; - if( o.CurrentUnderlyingType () == config_control_designt_descriptive_measure ) - _sdaistring = ((SdaiMeasure_value&) o)._sdaistring; - if( o.CurrentUnderlyingType () == config_control_designt_length_measure ) - _sdaireal = ((SdaiMeasure_value&) o)._sdaireal; - if( o.CurrentUnderlyingType () == config_control_designt_mass_measure ) - _sdaireal = ((SdaiMeasure_value&) o)._sdaireal; - if( o.CurrentUnderlyingType () == config_control_designt_plane_angle_measure ) - _sdaireal = ((SdaiMeasure_value&) o)._sdaireal; - if( o.CurrentUnderlyingType () == config_control_designt_parameter_value ) - _sdaireal = ((SdaiMeasure_value&) o)._sdaireal; - if( o.CurrentUnderlyingType () == config_control_designt_positive_length_measure ) - _sdaireal = ((SdaiMeasure_value&) o)._sdaireal; - if( o.CurrentUnderlyingType () == config_control_designt_positive_plane_angle_measure ) - _sdaireal = ((SdaiMeasure_value&) o)._sdaireal; - if( o.CurrentUnderlyingType () == config_control_designt_solid_angle_measure ) - _sdaireal = ((SdaiMeasure_value&) o)._sdaireal; - if( o.CurrentUnderlyingType () == config_control_designt_volume_measure ) - _sdaireal = ((SdaiMeasure_value&) o)._sdaireal; + if ( o.CurrentUnderlyingType () == config_control_designt_area_measure ) + _real = ((SdaiMeasure_value&) o)._real; + else if ( o.CurrentUnderlyingType () == config_control_designt_context_dependent_measure ) + _real = ((SdaiMeasure_value&) o)._real; + else if ( o.CurrentUnderlyingType () == config_control_designt_count_measure ) + _real = ((SdaiMeasure_value&) o)._real; + else if ( o.CurrentUnderlyingType () == config_control_designt_descriptive_measure ) + _string = ((SdaiMeasure_value&) o)._string; + else if ( o.CurrentUnderlyingType () == config_control_designt_length_measure ) + _real = ((SdaiMeasure_value&) o)._real; + else if ( o.CurrentUnderlyingType () == config_control_designt_mass_measure ) + _real = ((SdaiMeasure_value&) o)._real; + else if ( o.CurrentUnderlyingType () == config_control_designt_plane_angle_measure ) + _real = ((SdaiMeasure_value&) o)._real; + else if ( o.CurrentUnderlyingType () == config_control_designt_parameter_value ) + _real = ((SdaiMeasure_value&) o)._real; + else if ( o.CurrentUnderlyingType () == config_control_designt_positive_length_measure ) + _real = ((SdaiMeasure_value&) o)._real; + else if ( o.CurrentUnderlyingType () == config_control_designt_positive_plane_angle_measure ) + _real = ((SdaiMeasure_value&) o)._real; + else if ( o.CurrentUnderlyingType () == config_control_designt_solid_angle_measure ) + _real = ((SdaiMeasure_value&) o)._real; + else if ( o.CurrentUnderlyingType () == config_control_designt_volume_measure ) + _real = ((SdaiMeasure_value&) o)._real; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiMeasure_value::IsArea_measure() const +SCLLOG(Logical) SdaiMeasure_value::IsArea_measure() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designt_area_measure ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiMeasure_value::IsContext_dependent_measure() const +SCLLOG(Logical) SdaiMeasure_value::IsContext_dependent_measure() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designt_context_dependent_measure ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiMeasure_value::IsCount_measure() const +SCLLOG(Logical) SdaiMeasure_value::IsCount_measure() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designt_count_measure ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiMeasure_value::IsDescriptive_measure() const +SCLLOG(Logical) SdaiMeasure_value::IsDescriptive_measure() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designt_descriptive_measure ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiMeasure_value::IsLength_measure() const +SCLLOG(Logical) SdaiMeasure_value::IsLength_measure() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designt_length_measure ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiMeasure_value::IsMass_measure() const +SCLLOG(Logical) SdaiMeasure_value::IsMass_measure() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designt_mass_measure ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiMeasure_value::IsPlane_angle_measure() const +SCLLOG(Logical) SdaiMeasure_value::IsPlane_angle_measure() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designt_plane_angle_measure ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiMeasure_value::IsParameter_value() const +SCLLOG(Logical) SdaiMeasure_value::IsParameter_value() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designt_parameter_value ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiMeasure_value::IsPositive_length_measure() const +SCLLOG(Logical) SdaiMeasure_value::IsPositive_length_measure() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designt_positive_length_measure ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiMeasure_value::IsPositive_plane_angle_measure() const +SCLLOG(Logical) SdaiMeasure_value::IsPositive_plane_angle_measure() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designt_positive_plane_angle_measure ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiMeasure_value::IsSolid_angle_measure() const +SCLLOG(Logical) SdaiMeasure_value::IsSolid_angle_measure() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designt_solid_angle_measure ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiMeasure_value::IsVolume_measure() const +SCLLOG(Logical) SdaiMeasure_value::IsVolume_measure() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designt_volume_measure ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } @@ -3776,7 +6282,11 @@ SdaiLogical SdaiMeasure_value::IsVolume_measure() const const TypeDescriptor * SdaiMeasure_value::SetUnderlyingType (const TypeDescriptor * td) { - return SdaiSelect::SetUnderlyingType (td); +#ifndef WIN32 + return SCLP23(Select)::SetUnderlyingType (td); +#else + return StepSelectType::SetUnderlyingType (td); +#endif } ////////// END SELECT TYPE SdaiMeasure_value @@ -3784,39 +6294,85 @@ SdaiMeasure_value::SetUnderlyingType (const TypeDescriptor * td) ////////// SELECT TYPE person_organization_select const TypeDescriptor * -SdaiPerson_organization_select::AssignEntity (STEPentity * se) +SdaiPerson_organization_select::AssignEntity (SCLP23(Application_instance) * se) { // PERSON_AND_ORGANIZATION - if (se -> eDesc -> IsA (config_control_designe_person_and_organization)) + if (se -> IsA (config_control_designe_person_and_organization)) { - _stepentityh = (SdaiPerson_and_organizationH) se; + _app_inst = (SdaiPerson_and_organization_ptr) se; return SetUnderlyingType (config_control_designe_person_and_organization); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiPerson_organization_select::NewSelect () { - SdaiPerson_organization_select * tmp = new SdaiPerson_organization_select (); - return tmp; +#ifdef __OSTORE__ + SdaiPerson_organization_select * tmp = + new( os_segment::of(this), + SdaiPerson_organization_select::get_os_typespec() ) + SdaiPerson_organization_select(); +#else + SdaiPerson_organization_select * tmp = new SdaiPerson_organization_select(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiPerson_organization_select::STEPwrite_content (G4std::ostream& out) const +SdaiPerson_organization_select::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designe_person_and_organization) - _stepentityh -> STEPwrite_reference (out); - else { + _app_inst -> STEPwrite_reference (out); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiPerson_organization_select::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designe_person_and_organization) + return sdaiINSTANCE; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiPerson_organization_select::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designe_person_and_organization) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -3824,26 +6380,27 @@ SdaiPerson_organization_select::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiPerson_organization_select::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiPerson_organization_select::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designe_person_and_organization) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -3855,11 +6412,12 @@ Severity SdaiPerson_organization_select::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -3871,101 +6429,194 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiPerson_organization_select (os_database *db) +{ + return new (db, SdaiPerson_organization_select::get_os_typespec()) + SdaiPerson_organization_select ; +} + +void +SdaiPerson_organization_select_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiPerson_organization_select access hook funct called." << G4endl; + } +#endif + SdaiPerson_organization_select *s = (SdaiPerson_organization_select *) object; + s->_type = config_control_designt_person_organization_select; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiPerson_organization_selects (os_database *db) +{ + return new (db, SdaiPerson_organization_selects::get_os_typespec()) + SdaiPerson_organization_selects ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiPerson_organization_select::SdaiPerson_organization_select() - : SdaiSelect (config_control_designt_person_organization_select) +SdaiPerson_organization_select::SdaiPerson_organization_select( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiPerson_organization_select constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiPerson_organization_select constructor." << G4endl; + } +#endif } // part 1 -SdaiPerson_organization_select::SdaiPerson_organization_select( const SdaiPerson_and_organizationH& o ) - : SdaiSelect (config_control_designt_person_organization_select, config_control_designe_person_and_organization ) +SdaiPerson_organization_select::SdaiPerson_organization_select( const SdaiPerson_and_organization_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_person_and_organization) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiPerson_organization_select constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiPerson_organization_select constructor." << G4endl; + } +#endif } SdaiPerson_organization_select::~SdaiPerson_organization_select() { } +SdaiPerson_organization_selects::SdaiPerson_organization_selects( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiPerson_organization_selects::~SdaiPerson_organization_selects() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiPerson_organization_selects::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiPerson_organization_select::get_os_typespec() ) + SdaiPerson_organization_select ); +} +#endif + // part 2 -SdaiPerson_organization_select::operator SdaiPerson_and_organizationH() +SdaiPerson_organization_select::operator SdaiPerson_and_organization_ptr() { if( CurrentUnderlyingType () == config_control_designe_person_and_organization ) - return ((SdaiPerson_and_organizationH) _stepentityh); + return ((SdaiPerson_and_organization_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } // part 3 -SdaiOrganizationH -SdaiPerson_organization_select::The_organization() const +const SdaiOrganization_ptr +SdaiPerson_organization_select::the_organization_() const { if( CurrentUnderlyingType () == config_control_designe_person_and_organization ) // PERSON_AND_ORGANIZATION - return ((SdaiPerson_and_organizationH) _stepentityh) ->The_organization(); + return ((SdaiPerson_and_organization_ptr) _app_inst) ->the_organization_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiPerson_organization_select::The_organization (SdaiOrganizationH x) +SdaiPerson_organization_select::the_organization_ (const SdaiOrganization_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_person_and_organization ) // PERSON_AND_ORGANIZATION - { ((SdaiPerson_and_organizationH) _stepentityh) ->The_organization( x ); + { ((SdaiPerson_and_organization_ptr) _app_inst) ->the_organization_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiPersonH -SdaiPerson_organization_select::The_person() const +const SdaiPerson_ptr +SdaiPerson_organization_select::the_person_() const { if( CurrentUnderlyingType () == config_control_designe_person_and_organization ) // PERSON_AND_ORGANIZATION - return ((SdaiPerson_and_organizationH) _stepentityh) ->The_person(); + return ((SdaiPerson_and_organization_ptr) _app_inst) ->the_person_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiPerson_organization_select::The_person (SdaiPersonH x) +SdaiPerson_organization_select::the_person_ (const SdaiPerson_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_person_and_organization ) // PERSON_AND_ORGANIZATION - { ((SdaiPerson_and_organizationH) _stepentityh) ->The_person( x ); + { ((SdaiPerson_and_organization_ptr) _app_inst) ->the_person_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } // part 4 -SdaiPerson_organization_select& SdaiPerson_organization_select::operator =( const SdaiPerson_and_organizationH& o ) +SdaiPerson_organization_select& SdaiPerson_organization_select::operator =( const SdaiPerson_and_organization_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_person_and_organization); return *this; } @@ -3973,30 +6624,39 @@ SdaiPerson_organization_select& SdaiPerson_organization_select::operator =( cons #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiPerson_organization_select& SdaiPerson_organization_select::operator =( const SdaiPerson_organization_selectH& o ) + +SdaiPerson_organization_select& SdaiPerson_organization_select::operator =( const SdaiPerson_organization_select_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designe_person_and_organization ) - _stepentityh = o -> _stepentityh; + if ( o -> CurrentUnderlyingType () == config_control_designe_person_and_organization ) + _app_inst = o -> _app_inst; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiPerson_organization_select::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiPerson_organization_select::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designe_person_and_organization ) - _stepentityh = ((SdaiPerson_organization_select&) o)._stepentityh; + if ( o.CurrentUnderlyingType () == config_control_designe_person_and_organization ) + _app_inst = ((SdaiPerson_organization_select&) o)._app_inst; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiPerson_organization_select::IsPerson_and_organization() const +SCLLOG(Logical) SdaiPerson_organization_select::IsPerson_and_organization() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_person_and_organization ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } ////////// END SELECT TYPE SdaiPerson_organization_select @@ -4005,47 +6665,101 @@ SdaiLogical SdaiPerson_organization_select::IsPerson_and_organization() const ////////// SELECT TYPE pcurve_or_surface const TypeDescriptor * -SdaiPcurve_or_surface::AssignEntity (STEPentity * se) +SdaiPcurve_or_surface::AssignEntity (SCLP23(Application_instance) * se) { // PCURVE - if (se -> eDesc -> IsA (config_control_designe_pcurve)) + if (se -> IsA (config_control_designe_pcurve)) { - _stepentityh = (SdaiPcurveH) se; + _app_inst = (SdaiPcurve_ptr) se; return SetUnderlyingType (config_control_designe_pcurve); } // SURFACE - if (se -> eDesc -> IsA (config_control_designe_surface)) + if (se -> IsA (config_control_designe_surface)) { - _stepentityh = (SdaiSurfaceH) se; + _app_inst = (SdaiSurface_ptr) se; return SetUnderlyingType (config_control_designe_surface); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiPcurve_or_surface::NewSelect () { - SdaiPcurve_or_surface * tmp = new SdaiPcurve_or_surface (); - return tmp; +#ifdef __OSTORE__ + SdaiPcurve_or_surface * tmp = + new( os_segment::of(this), + SdaiPcurve_or_surface::get_os_typespec() ) + SdaiPcurve_or_surface(); +#else + SdaiPcurve_or_surface * tmp = new SdaiPcurve_or_surface(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiPcurve_or_surface::STEPwrite_content (G4std::ostream& out) const +SdaiPcurve_or_surface::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designe_pcurve) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_surface) - _stepentityh -> STEPwrite_reference (out); - else { + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_surface) + _app_inst -> STEPwrite_reference (out); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiPcurve_or_surface::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designe_pcurve) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_surface) + return sdaiINSTANCE; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiPcurve_or_surface::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designe_pcurve) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_surface) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -4053,40 +6767,40 @@ SdaiPcurve_or_surface::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiPcurve_or_surface::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiPcurve_or_surface::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designe_pcurve) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_surface) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -4098,11 +6812,12 @@ Severity SdaiPcurve_or_surface::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -4114,161 +6829,269 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiPcurve_or_surface (os_database *db) +{ + return new (db, SdaiPcurve_or_surface::get_os_typespec()) + SdaiPcurve_or_surface ; +} + +void +SdaiPcurve_or_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiPcurve_or_surface access hook funct called." << G4endl; + } +#endif + SdaiPcurve_or_surface *s = (SdaiPcurve_or_surface *) object; + s->_type = config_control_designt_pcurve_or_surface; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiPcurve_or_surfaces (os_database *db) +{ + return new (db, SdaiPcurve_or_surfaces::get_os_typespec()) + SdaiPcurve_or_surfaces ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiPcurve_or_surface::SdaiPcurve_or_surface() - : SdaiSelect (config_control_designt_pcurve_or_surface) +SdaiPcurve_or_surface::SdaiPcurve_or_surface( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiPcurve_or_surface constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiPcurve_or_surface constructor." << G4endl; + } +#endif } // part 1 -SdaiPcurve_or_surface::SdaiPcurve_or_surface( const SdaiPcurveH& o ) - : SdaiSelect (config_control_designt_pcurve_or_surface, config_control_designe_pcurve ) +SdaiPcurve_or_surface::SdaiPcurve_or_surface( const SdaiPcurve_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_pcurve) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiPcurve_or_surface constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiPcurve_or_surface constructor." << G4endl; + } +#endif } -SdaiPcurve_or_surface::SdaiPcurve_or_surface( const SdaiSurfaceH& o ) - : SdaiSelect (config_control_designt_pcurve_or_surface, config_control_designe_surface ) +SdaiPcurve_or_surface::SdaiPcurve_or_surface( const SdaiSurface_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_surface) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiPcurve_or_surface constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiPcurve_or_surface constructor." << G4endl; + } +#endif } SdaiPcurve_or_surface::~SdaiPcurve_or_surface() { } +SdaiPcurve_or_surfaces::SdaiPcurve_or_surfaces( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiPcurve_or_surfaces::~SdaiPcurve_or_surfaces() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiPcurve_or_surfaces::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiPcurve_or_surface::get_os_typespec() ) + SdaiPcurve_or_surface ); +} +#endif + // part 2 -SdaiPcurve_or_surface::operator SdaiPcurveH() +SdaiPcurve_or_surface::operator SdaiPcurve_ptr() { if( CurrentUnderlyingType () == config_control_designe_pcurve ) - return ((SdaiPcurveH) _stepentityh); + return ((SdaiPcurve_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiPcurve_or_surface::operator SdaiSurfaceH() +SdaiPcurve_or_surface::operator SdaiSurface_ptr() { if( CurrentUnderlyingType () == config_control_designe_surface ) - return ((SdaiSurfaceH) _stepentityh); + return ((SdaiSurface_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } // part 3 -SdaiDefinitional_representationH -SdaiPcurve_or_surface::Reference_to_curve() const +const SdaiDefinitional_representation_ptr +SdaiPcurve_or_surface::reference_to_curve_() const { if( CurrentUnderlyingType () == config_control_designe_pcurve ) // PCURVE - return ((SdaiPcurveH) _stepentityh) ->Reference_to_curve(); + return ((SdaiPcurve_ptr) _app_inst) ->reference_to_curve_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiPcurve_or_surface::Reference_to_curve (SdaiDefinitional_representationH x) +SdaiPcurve_or_surface::reference_to_curve_ (const SdaiDefinitional_representation_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_pcurve ) // PCURVE - { ((SdaiPcurveH) _stepentityh) ->Reference_to_curve( x ); + { ((SdaiPcurve_ptr) _app_inst) ->reference_to_curve_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiSurfaceH -SdaiPcurve_or_surface::Basis_surface() const +const SdaiSurface_ptr +SdaiPcurve_or_surface::basis_surface_() const { if( CurrentUnderlyingType () == config_control_designe_pcurve ) // PCURVE - return ((SdaiPcurveH) _stepentityh) ->Basis_surface(); + return ((SdaiPcurve_ptr) _app_inst) ->basis_surface_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiPcurve_or_surface::Basis_surface (SdaiSurfaceH x) +SdaiPcurve_or_surface::basis_surface_ (const SdaiSurface_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_pcurve ) // PCURVE - { ((SdaiPcurveH) _stepentityh) ->Basis_surface( x ); + { ((SdaiPcurve_ptr) _app_inst) ->basis_surface_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiLabel -SdaiPcurve_or_surface::Name() const +SdaiPcurve_or_surface::name_() const { if( CurrentUnderlyingType () == config_control_designe_pcurve ) // PCURVE - return ((SdaiPcurveH) _stepentityh) ->Name(); + return ((SdaiPcurve_ptr) _app_inst) ->name_(); if( CurrentUnderlyingType () == config_control_designe_surface ) // SURFACE - return ((SdaiSurfaceH) _stepentityh) ->Name(); + return ((SdaiSurface_ptr) _app_inst) ->name_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiPcurve_or_surface::Name (const char * x) +SdaiPcurve_or_surface::name_ (const SdaiLabel x) + { if( CurrentUnderlyingType () == config_control_designe_pcurve ) // PCURVE - { ((SdaiPcurveH) _stepentityh) ->Name( x ); + { ((SdaiPcurve_ptr) _app_inst) ->name_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_surface ) // SURFACE - { ((SdaiSurfaceH) _stepentityh) ->Name( x ); + { ((SdaiSurface_ptr) _app_inst) ->name_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } // part 4 -SdaiPcurve_or_surface& SdaiPcurve_or_surface::operator =( const SdaiPcurveH& o ) +SdaiPcurve_or_surface& SdaiPcurve_or_surface::operator =( const SdaiPcurve_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_pcurve); return *this; } -SdaiPcurve_or_surface& SdaiPcurve_or_surface::operator =( const SdaiSurfaceH& o ) +SdaiPcurve_or_surface& SdaiPcurve_or_surface::operator =( const SdaiSurface_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_surface); return *this; } @@ -4276,43 +7099,52 @@ SdaiPcurve_or_surface& SdaiPcurve_or_surface::operator =( const SdaiSurfaceH& o #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiPcurve_or_surface& SdaiPcurve_or_surface::operator =( const SdaiPcurve_or_surfaceH& o ) + +SdaiPcurve_or_surface& SdaiPcurve_or_surface::operator =( const SdaiPcurve_or_surface_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designe_pcurve ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_surface ) - _stepentityh = o -> _stepentityh; + if ( o -> CurrentUnderlyingType () == config_control_designe_pcurve ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_surface ) + _app_inst = o -> _app_inst; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiPcurve_or_surface::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiPcurve_or_surface::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designe_pcurve ) - _stepentityh = ((SdaiPcurve_or_surface&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_surface ) - _stepentityh = ((SdaiPcurve_or_surface&) o)._stepentityh; + if ( o.CurrentUnderlyingType () == config_control_designe_pcurve ) + _app_inst = ((SdaiPcurve_or_surface&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_surface ) + _app_inst = ((SdaiPcurve_or_surface&) o)._app_inst; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiPcurve_or_surface::IsPcurve() const +SCLLOG(Logical) SdaiPcurve_or_surface::IsPcurve() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_pcurve ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiPcurve_or_surface::IsSurface() const +SCLLOG(Logical) SdaiPcurve_or_surface::IsSurface() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_surface ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } ////////// END SELECT TYPE SdaiPcurve_or_surface @@ -4321,47 +7153,101 @@ SdaiLogical SdaiPcurve_or_surface::IsSurface() const ////////// SELECT TYPE classified_item const TypeDescriptor * -SdaiClassified_item::AssignEntity (STEPentity * se) +SdaiClassified_item::AssignEntity (SCLP23(Application_instance) * se) { // PRODUCT_DEFINITION_FORMATION - if (se -> eDesc -> IsA (config_control_designe_product_definition_formation)) + if (se -> IsA (config_control_designe_product_definition_formation)) { - _stepentityh = (SdaiProduct_definition_formationH) se; + _app_inst = (SdaiProduct_definition_formation_ptr) se; return SetUnderlyingType (config_control_designe_product_definition_formation); } // ASSEMBLY_COMPONENT_USAGE - if (se -> eDesc -> IsA (config_control_designe_assembly_component_usage)) + if (se -> IsA (config_control_designe_assembly_component_usage)) { - _stepentityh = (SdaiAssembly_component_usageH) se; + _app_inst = (SdaiAssembly_component_usage_ptr) se; return SetUnderlyingType (config_control_designe_assembly_component_usage); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiClassified_item::NewSelect () { - SdaiClassified_item * tmp = new SdaiClassified_item (); - return tmp; +#ifdef __OSTORE__ + SdaiClassified_item * tmp = + new( os_segment::of(this), + SdaiClassified_item::get_os_typespec() ) + SdaiClassified_item(); +#else + SdaiClassified_item * tmp = new SdaiClassified_item(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiClassified_item::STEPwrite_content (G4std::ostream& out) const +SdaiClassified_item::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designe_product_definition_formation) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_assembly_component_usage) - _stepentityh -> STEPwrite_reference (out); - else { + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_assembly_component_usage) + _app_inst -> STEPwrite_reference (out); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiClassified_item::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designe_product_definition_formation) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_assembly_component_usage) + return sdaiINSTANCE; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiClassified_item::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designe_product_definition_formation) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_assembly_component_usage) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -4369,40 +7255,40 @@ SdaiClassified_item::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiClassified_item::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiClassified_item::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designe_product_definition_formation) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_assembly_component_usage) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -4414,11 +7300,12 @@ Severity SdaiClassified_item::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -4430,53 +7317,158 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiClassified_item (os_database *db) +{ + return new (db, SdaiClassified_item::get_os_typespec()) + SdaiClassified_item ; +} + +void +SdaiClassified_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiClassified_item access hook funct called." << G4endl; + } +#endif + SdaiClassified_item *s = (SdaiClassified_item *) object; + s->_type = config_control_designt_classified_item; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiClassified_items (os_database *db) +{ + return new (db, SdaiClassified_items::get_os_typespec()) + SdaiClassified_items ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiClassified_item::SdaiClassified_item() - : SdaiSelect (config_control_designt_classified_item) +SdaiClassified_item::SdaiClassified_item( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiClassified_item constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiClassified_item constructor." << G4endl; + } +#endif } // part 1 -SdaiClassified_item::SdaiClassified_item( const SdaiProduct_definition_formationH& o ) - : SdaiSelect (config_control_designt_classified_item, config_control_designe_product_definition_formation ) +SdaiClassified_item::SdaiClassified_item( const SdaiProduct_definition_formation_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_product_definition_formation) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiClassified_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiClassified_item constructor." << G4endl; + } +#endif } -SdaiClassified_item::SdaiClassified_item( const SdaiAssembly_component_usageH& o ) - : SdaiSelect (config_control_designt_classified_item, config_control_designe_assembly_component_usage ) +SdaiClassified_item::SdaiClassified_item( const SdaiAssembly_component_usage_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_assembly_component_usage) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiClassified_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiClassified_item constructor." << G4endl; + } +#endif } SdaiClassified_item::~SdaiClassified_item() { } +SdaiClassified_items::SdaiClassified_items( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiClassified_items::~SdaiClassified_items() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiClassified_items::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiClassified_item::get_os_typespec() ) + SdaiClassified_item ); +} +#endif + // part 2 -SdaiClassified_item::operator SdaiProduct_definition_formationH() +SdaiClassified_item::operator SdaiProduct_definition_formation_ptr() { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) - return ((SdaiProduct_definition_formationH) _stepentityh); + return ((SdaiProduct_definition_formation_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiClassified_item::operator SdaiAssembly_component_usageH() +SdaiClassified_item::operator SdaiAssembly_component_usage_ptr() { if( CurrentUnderlyingType () == config_control_designe_assembly_component_usage ) - return ((SdaiAssembly_component_usageH) _stepentityh); + return ((SdaiAssembly_component_usage_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } @@ -4484,223 +7476,230 @@ SdaiClassified_item::operator SdaiAssembly_component_usageH() // part 3 const SdaiIdentifier -SdaiClassified_item::Reference_designator() const +SdaiClassified_item::reference_designator_() const { if( CurrentUnderlyingType () == config_control_designe_assembly_component_usage ) // ASSEMBLY_COMPONENT_USAGE - return ((SdaiAssembly_component_usageH) _stepentityh) ->Reference_designator(); + return ((SdaiAssembly_component_usage_ptr) _app_inst) ->reference_designator_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiClassified_item::Reference_designator (const char * x) +SdaiClassified_item::reference_designator_ (const SdaiIdentifier x) + { if( CurrentUnderlyingType () == config_control_designe_assembly_component_usage ) // ASSEMBLY_COMPONENT_USAGE - { ((SdaiAssembly_component_usageH) _stepentityh) ->Reference_designator( x ); + { ((SdaiAssembly_component_usage_ptr) _app_inst) ->reference_designator_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiProduct_definitionH -SdaiClassified_item::Related_product_definition() const +const SdaiProduct_definition_ptr +SdaiClassified_item::related_product_definition_() const { if( CurrentUnderlyingType () == config_control_designe_assembly_component_usage ) // ASSEMBLY_COMPONENT_USAGE - return ((SdaiAssembly_component_usageH) _stepentityh) ->Related_product_definition(); + return ((SdaiAssembly_component_usage_ptr) _app_inst) ->related_product_definition_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiClassified_item::Related_product_definition (SdaiProduct_definitionH x) +SdaiClassified_item::related_product_definition_ (const SdaiProduct_definition_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_assembly_component_usage ) // ASSEMBLY_COMPONENT_USAGE - { ((SdaiAssembly_component_usageH) _stepentityh) ->Related_product_definition( x ); + { ((SdaiAssembly_component_usage_ptr) _app_inst) ->related_product_definition_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiProduct_definitionH -SdaiClassified_item::Relating_product_definition() const +const SdaiProduct_definition_ptr +SdaiClassified_item::relating_product_definition_() const { if( CurrentUnderlyingType () == config_control_designe_assembly_component_usage ) // ASSEMBLY_COMPONENT_USAGE - return ((SdaiAssembly_component_usageH) _stepentityh) ->Relating_product_definition(); + return ((SdaiAssembly_component_usage_ptr) _app_inst) ->relating_product_definition_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiClassified_item::Relating_product_definition (SdaiProduct_definitionH x) +SdaiClassified_item::relating_product_definition_ (const SdaiProduct_definition_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_assembly_component_usage ) // ASSEMBLY_COMPONENT_USAGE - { ((SdaiAssembly_component_usageH) _stepentityh) ->Relating_product_definition( x ); + { ((SdaiAssembly_component_usage_ptr) _app_inst) ->relating_product_definition_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiLabel -SdaiClassified_item::Name() const +SdaiClassified_item::name_() const { if( CurrentUnderlyingType () == config_control_designe_assembly_component_usage ) // ASSEMBLY_COMPONENT_USAGE - return ((SdaiAssembly_component_usageH) _stepentityh) ->Name(); + return ((SdaiAssembly_component_usage_ptr) _app_inst) ->name_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiClassified_item::Name (const char * x) +SdaiClassified_item::name_ (const SdaiLabel x) + { if( CurrentUnderlyingType () == config_control_designe_assembly_component_usage ) // ASSEMBLY_COMPONENT_USAGE - { ((SdaiAssembly_component_usageH) _stepentityh) ->Name( x ); + { ((SdaiAssembly_component_usage_ptr) _app_inst) ->name_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiProductH -SdaiClassified_item::Of_product() const +const SdaiProduct_ptr +SdaiClassified_item::of_product_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - return ((SdaiProduct_definition_formationH) _stepentityh) ->Of_product(); + return ((SdaiProduct_definition_formation_ptr) _app_inst) ->of_product_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiClassified_item::Of_product (SdaiProductH x) +SdaiClassified_item::of_product_ (const SdaiProduct_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - { ((SdaiProduct_definition_formationH) _stepentityh) ->Of_product( x ); + { ((SdaiProduct_definition_formation_ptr) _app_inst) ->of_product_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiText -SdaiClassified_item::Description() const +SdaiClassified_item::description_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - return ((SdaiProduct_definition_formationH) _stepentityh) ->Description(); + return ((SdaiProduct_definition_formation_ptr) _app_inst) ->description_(); if( CurrentUnderlyingType () == config_control_designe_assembly_component_usage ) // ASSEMBLY_COMPONENT_USAGE - return ((SdaiAssembly_component_usageH) _stepentityh) ->Description(); + return ((SdaiAssembly_component_usage_ptr) _app_inst) ->description_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiClassified_item::Description (const char * x) +SdaiClassified_item::description_ (const SdaiText x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - { ((SdaiProduct_definition_formationH) _stepentityh) ->Description( x ); + { ((SdaiProduct_definition_formation_ptr) _app_inst) ->description_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_assembly_component_usage ) // ASSEMBLY_COMPONENT_USAGE - { ((SdaiAssembly_component_usageH) _stepentityh) ->Description( x ); + { ((SdaiAssembly_component_usage_ptr) _app_inst) ->description_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiIdentifier -SdaiClassified_item::Id() const +SdaiClassified_item::id_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - return ((SdaiProduct_definition_formationH) _stepentityh) ->Id(); + return ((SdaiProduct_definition_formation_ptr) _app_inst) ->id_(); if( CurrentUnderlyingType () == config_control_designe_assembly_component_usage ) // ASSEMBLY_COMPONENT_USAGE - return ((SdaiAssembly_component_usageH) _stepentityh) ->Id(); + return ((SdaiAssembly_component_usage_ptr) _app_inst) ->id_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiClassified_item::Id (const char * x) +SdaiClassified_item::id_ (const SdaiIdentifier x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - { ((SdaiProduct_definition_formationH) _stepentityh) ->Id( x ); + { ((SdaiProduct_definition_formation_ptr) _app_inst) ->id_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_assembly_component_usage ) // ASSEMBLY_COMPONENT_USAGE - { ((SdaiAssembly_component_usageH) _stepentityh) ->Id( x ); + { ((SdaiAssembly_component_usage_ptr) _app_inst) ->id_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } // part 4 -SdaiClassified_item& SdaiClassified_item::operator =( const SdaiProduct_definition_formationH& o ) +SdaiClassified_item& SdaiClassified_item::operator =( const SdaiProduct_definition_formation_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_product_definition_formation); return *this; } -SdaiClassified_item& SdaiClassified_item::operator =( const SdaiAssembly_component_usageH& o ) +SdaiClassified_item& SdaiClassified_item::operator =( const SdaiAssembly_component_usage_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_assembly_component_usage); return *this; } @@ -4708,43 +7707,52 @@ SdaiClassified_item& SdaiClassified_item::operator =( const SdaiAssembly_compone #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiClassified_item& SdaiClassified_item::operator =( const SdaiClassified_itemH& o ) + +SdaiClassified_item& SdaiClassified_item::operator =( const SdaiClassified_item_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designe_product_definition_formation ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_assembly_component_usage ) - _stepentityh = o -> _stepentityh; + if ( o -> CurrentUnderlyingType () == config_control_designe_product_definition_formation ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_assembly_component_usage ) + _app_inst = o -> _app_inst; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiClassified_item::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiClassified_item::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designe_product_definition_formation ) - _stepentityh = ((SdaiClassified_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_assembly_component_usage ) - _stepentityh = ((SdaiClassified_item&) o)._stepentityh; + if ( o.CurrentUnderlyingType () == config_control_designe_product_definition_formation ) + _app_inst = ((SdaiClassified_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_assembly_component_usage ) + _app_inst = ((SdaiClassified_item&) o)._app_inst; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiClassified_item::IsProduct_definition_formation() const +SCLLOG(Logical) SdaiClassified_item::IsProduct_definition_formation() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiClassified_item::IsAssembly_component_usage() const +SCLLOG(Logical) SdaiClassified_item::IsAssembly_component_usage() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_assembly_component_usage ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } ////////// END SELECT TYPE SdaiClassified_item @@ -4753,47 +7761,101 @@ SdaiLogical SdaiClassified_item::IsAssembly_component_usage() const ////////// SELECT TYPE vector_or_direction const TypeDescriptor * -SdaiVector_or_direction::AssignEntity (STEPentity * se) +SdaiVector_or_direction::AssignEntity (SCLP23(Application_instance) * se) { // VECTOR - if (se -> eDesc -> IsA (config_control_designe_vector)) + if (se -> IsA (config_control_designe_vector)) { - _stepentityh = (SdaiVectorH) se; + _app_inst = (SdaiVector_ptr) se; return SetUnderlyingType (config_control_designe_vector); } // DIRECTION - if (se -> eDesc -> IsA (config_control_designe_direction)) + if (se -> IsA (config_control_designe_direction)) { - _stepentityh = (SdaiDirectionH) se; + _app_inst = (SdaiDirection_ptr) se; return SetUnderlyingType (config_control_designe_direction); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiVector_or_direction::NewSelect () { - SdaiVector_or_direction * tmp = new SdaiVector_or_direction (); - return tmp; +#ifdef __OSTORE__ + SdaiVector_or_direction * tmp = + new( os_segment::of(this), + SdaiVector_or_direction::get_os_typespec() ) + SdaiVector_or_direction(); +#else + SdaiVector_or_direction * tmp = new SdaiVector_or_direction(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiVector_or_direction::STEPwrite_content (G4std::ostream& out) const +SdaiVector_or_direction::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designe_vector) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_direction) - _stepentityh -> STEPwrite_reference (out); - else { + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_direction) + _app_inst -> STEPwrite_reference (out); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiVector_or_direction::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designe_vector) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_direction) + return sdaiINSTANCE; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiVector_or_direction::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designe_vector) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_direction) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -4801,40 +7863,40 @@ SdaiVector_or_direction::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiVector_or_direction::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiVector_or_direction::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designe_vector) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_direction) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -4846,11 +7908,12 @@ Severity SdaiVector_or_direction::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -4862,188 +7925,297 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiVector_or_direction (os_database *db) +{ + return new (db, SdaiVector_or_direction::get_os_typespec()) + SdaiVector_or_direction ; +} + +void +SdaiVector_or_direction_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiVector_or_direction access hook funct called." << G4endl; + } +#endif + SdaiVector_or_direction *s = (SdaiVector_or_direction *) object; + s->_type = config_control_designt_vector_or_direction; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiVector_or_directions (os_database *db) +{ + return new (db, SdaiVector_or_directions::get_os_typespec()) + SdaiVector_or_directions ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiVector_or_direction::SdaiVector_or_direction() - : SdaiSelect (config_control_designt_vector_or_direction) +SdaiVector_or_direction::SdaiVector_or_direction( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiVector_or_direction constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiVector_or_direction constructor." << G4endl; + } +#endif } // part 1 -SdaiVector_or_direction::SdaiVector_or_direction( const SdaiVectorH& o ) - : SdaiSelect (config_control_designt_vector_or_direction, config_control_designe_vector ) +SdaiVector_or_direction::SdaiVector_or_direction( const SdaiVector_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_vector) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiVector_or_direction constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiVector_or_direction constructor." << G4endl; + } +#endif } -SdaiVector_or_direction::SdaiVector_or_direction( const SdaiDirectionH& o ) - : SdaiSelect (config_control_designt_vector_or_direction, config_control_designe_direction ) +SdaiVector_or_direction::SdaiVector_or_direction( const SdaiDirection_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_direction) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiVector_or_direction constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiVector_or_direction constructor." << G4endl; + } +#endif } SdaiVector_or_direction::~SdaiVector_or_direction() { } +SdaiVector_or_directions::SdaiVector_or_directions( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiVector_or_directions::~SdaiVector_or_directions() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiVector_or_directions::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiVector_or_direction::get_os_typespec() ) + SdaiVector_or_direction ); +} +#endif + // part 2 -SdaiVector_or_direction::operator SdaiVectorH() +SdaiVector_or_direction::operator SdaiVector_ptr() { if( CurrentUnderlyingType () == config_control_designe_vector ) - return ((SdaiVectorH) _stepentityh); + return ((SdaiVector_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiVector_or_direction::operator SdaiDirectionH() +SdaiVector_or_direction::operator SdaiDirection_ptr() { if( CurrentUnderlyingType () == config_control_designe_direction ) - return ((SdaiDirectionH) _stepentityh); + return ((SdaiDirection_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } // part 3 -const RealAggregateH -SdaiVector_or_direction::Direction_ratios() const +const RealAggregate_ptr +SdaiVector_or_direction::direction_ratios_() const { if( CurrentUnderlyingType () == config_control_designe_direction ) // DIRECTION - return ((SdaiDirectionH) _stepentityh) ->Direction_ratios(); + return ((SdaiDirection_ptr) _app_inst) ->direction_ratios_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiVector_or_direction::Direction_ratios (RealAggregateH x) +SdaiVector_or_direction::direction_ratios_ (const RealAggregate_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_direction ) // DIRECTION - { ((SdaiDirectionH) _stepentityh) ->Direction_ratios( x ); + { ((SdaiDirection_ptr) _app_inst) ->direction_ratios_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiLength_measure -SdaiVector_or_direction::Magnitude() const +SdaiVector_or_direction::magnitude_() const { if( CurrentUnderlyingType () == config_control_designe_vector ) // VECTOR - return ((SdaiVectorH) _stepentityh) ->Magnitude(); + return ((SdaiVector_ptr) _app_inst) ->magnitude_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiVector_or_direction::Magnitude (SdaiLength_measure x) +SdaiVector_or_direction::magnitude_ (const SdaiLength_measure x) + { if( CurrentUnderlyingType () == config_control_designe_vector ) // VECTOR - { ((SdaiVectorH) _stepentityh) ->Magnitude( x ); + { ((SdaiVector_ptr) _app_inst) ->magnitude_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiDirectionH -SdaiVector_or_direction::Orientation() const +const SdaiDirection_ptr +SdaiVector_or_direction::orientation_() const { if( CurrentUnderlyingType () == config_control_designe_vector ) // VECTOR - return ((SdaiVectorH) _stepentityh) ->Orientation(); + return ((SdaiVector_ptr) _app_inst) ->orientation_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiVector_or_direction::Orientation (SdaiDirectionH x) +SdaiVector_or_direction::orientation_ (const SdaiDirection_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_vector ) // VECTOR - { ((SdaiVectorH) _stepentityh) ->Orientation( x ); + { ((SdaiVector_ptr) _app_inst) ->orientation_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiLabel -SdaiVector_or_direction::Name() const +SdaiVector_or_direction::name_() const { if( CurrentUnderlyingType () == config_control_designe_vector ) // VECTOR - return ((SdaiVectorH) _stepentityh) ->Name(); + return ((SdaiVector_ptr) _app_inst) ->name_(); if( CurrentUnderlyingType () == config_control_designe_direction ) // DIRECTION - return ((SdaiDirectionH) _stepentityh) ->Name(); + return ((SdaiDirection_ptr) _app_inst) ->name_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiVector_or_direction::Name (const char * x) +SdaiVector_or_direction::name_ (const SdaiLabel x) + { if( CurrentUnderlyingType () == config_control_designe_vector ) // VECTOR - { ((SdaiVectorH) _stepentityh) ->Name( x ); + { ((SdaiVector_ptr) _app_inst) ->name_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_direction ) // DIRECTION - { ((SdaiDirectionH) _stepentityh) ->Name( x ); + { ((SdaiDirection_ptr) _app_inst) ->name_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } // part 4 -SdaiVector_or_direction& SdaiVector_or_direction::operator =( const SdaiVectorH& o ) +SdaiVector_or_direction& SdaiVector_or_direction::operator =( const SdaiVector_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_vector); return *this; } -SdaiVector_or_direction& SdaiVector_or_direction::operator =( const SdaiDirectionH& o ) +SdaiVector_or_direction& SdaiVector_or_direction::operator =( const SdaiDirection_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_direction); return *this; } @@ -5051,43 +8223,52 @@ SdaiVector_or_direction& SdaiVector_or_direction::operator =( const SdaiDirectio #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiVector_or_direction& SdaiVector_or_direction::operator =( const SdaiVector_or_directionH& o ) + +SdaiVector_or_direction& SdaiVector_or_direction::operator =( const SdaiVector_or_direction_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designe_vector ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_direction ) - _stepentityh = o -> _stepentityh; + if ( o -> CurrentUnderlyingType () == config_control_designe_vector ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_direction ) + _app_inst = o -> _app_inst; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiVector_or_direction::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiVector_or_direction::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designe_vector ) - _stepentityh = ((SdaiVector_or_direction&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_direction ) - _stepentityh = ((SdaiVector_or_direction&) o)._stepentityh; + if ( o.CurrentUnderlyingType () == config_control_designe_vector ) + _app_inst = ((SdaiVector_or_direction&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_direction ) + _app_inst = ((SdaiVector_or_direction&) o)._app_inst; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiVector_or_direction::IsVector() const +SCLLOG(Logical) SdaiVector_or_direction::IsVector() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_vector ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiVector_or_direction::IsDirection() const +SCLLOG(Logical) SdaiVector_or_direction::IsDirection() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_direction ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } ////////// END SELECT TYPE SdaiVector_or_direction @@ -5096,47 +8277,101 @@ SdaiLogical SdaiVector_or_direction::IsDirection() const ////////// SELECT TYPE wireframe_model const TypeDescriptor * -SdaiWireframe_model::AssignEntity (STEPentity * se) +SdaiWireframe_model::AssignEntity (SCLP23(Application_instance) * se) { // SHELL_BASED_WIREFRAME_MODEL - if (se -> eDesc -> IsA (config_control_designe_shell_based_wireframe_model)) + if (se -> IsA (config_control_designe_shell_based_wireframe_model)) { - _stepentityh = (SdaiShell_based_wireframe_modelH) se; + _app_inst = (SdaiShell_based_wireframe_model_ptr) se; return SetUnderlyingType (config_control_designe_shell_based_wireframe_model); } // EDGE_BASED_WIREFRAME_MODEL - if (se -> eDesc -> IsA (config_control_designe_edge_based_wireframe_model)) + if (se -> IsA (config_control_designe_edge_based_wireframe_model)) { - _stepentityh = (SdaiEdge_based_wireframe_modelH) se; + _app_inst = (SdaiEdge_based_wireframe_model_ptr) se; return SetUnderlyingType (config_control_designe_edge_based_wireframe_model); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiWireframe_model::NewSelect () { - SdaiWireframe_model * tmp = new SdaiWireframe_model (); - return tmp; +#ifdef __OSTORE__ + SdaiWireframe_model * tmp = + new( os_segment::of(this), + SdaiWireframe_model::get_os_typespec() ) + SdaiWireframe_model(); +#else + SdaiWireframe_model * tmp = new SdaiWireframe_model(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiWireframe_model::STEPwrite_content (G4std::ostream& out) const +SdaiWireframe_model::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designe_shell_based_wireframe_model) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_edge_based_wireframe_model) - _stepentityh -> STEPwrite_reference (out); - else { + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_edge_based_wireframe_model) + _app_inst -> STEPwrite_reference (out); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiWireframe_model::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designe_shell_based_wireframe_model) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_edge_based_wireframe_model) + return sdaiINSTANCE; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiWireframe_model::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designe_shell_based_wireframe_model) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_edge_based_wireframe_model) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -5144,40 +8379,40 @@ SdaiWireframe_model::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiWireframe_model::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiWireframe_model::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designe_shell_based_wireframe_model) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_edge_based_wireframe_model) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -5189,11 +8424,12 @@ Severity SdaiWireframe_model::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -5205,161 +8441,269 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiWireframe_model (os_database *db) +{ + return new (db, SdaiWireframe_model::get_os_typespec()) + SdaiWireframe_model ; +} + +void +SdaiWireframe_model_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiWireframe_model access hook funct called." << G4endl; + } +#endif + SdaiWireframe_model *s = (SdaiWireframe_model *) object; + s->_type = config_control_designt_wireframe_model; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiWireframe_models (os_database *db) +{ + return new (db, SdaiWireframe_models::get_os_typespec()) + SdaiWireframe_models ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiWireframe_model::SdaiWireframe_model() - : SdaiSelect (config_control_designt_wireframe_model) +SdaiWireframe_model::SdaiWireframe_model( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiWireframe_model constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiWireframe_model constructor." << G4endl; + } +#endif } // part 1 -SdaiWireframe_model::SdaiWireframe_model( const SdaiShell_based_wireframe_modelH& o ) - : SdaiSelect (config_control_designt_wireframe_model, config_control_designe_shell_based_wireframe_model ) +SdaiWireframe_model::SdaiWireframe_model( const SdaiShell_based_wireframe_model_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_shell_based_wireframe_model) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiWireframe_model constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiWireframe_model constructor." << G4endl; + } +#endif } -SdaiWireframe_model::SdaiWireframe_model( const SdaiEdge_based_wireframe_modelH& o ) - : SdaiSelect (config_control_designt_wireframe_model, config_control_designe_edge_based_wireframe_model ) +SdaiWireframe_model::SdaiWireframe_model( const SdaiEdge_based_wireframe_model_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_edge_based_wireframe_model) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiWireframe_model constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiWireframe_model constructor." << G4endl; + } +#endif } SdaiWireframe_model::~SdaiWireframe_model() { } +SdaiWireframe_models::SdaiWireframe_models( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiWireframe_models::~SdaiWireframe_models() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiWireframe_models::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiWireframe_model::get_os_typespec() ) + SdaiWireframe_model ); +} +#endif + // part 2 -SdaiWireframe_model::operator SdaiShell_based_wireframe_modelH() +SdaiWireframe_model::operator SdaiShell_based_wireframe_model_ptr() { if( CurrentUnderlyingType () == config_control_designe_shell_based_wireframe_model ) - return ((SdaiShell_based_wireframe_modelH) _stepentityh); + return ((SdaiShell_based_wireframe_model_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiWireframe_model::operator SdaiEdge_based_wireframe_modelH() +SdaiWireframe_model::operator SdaiEdge_based_wireframe_model_ptr() { if( CurrentUnderlyingType () == config_control_designe_edge_based_wireframe_model ) - return ((SdaiEdge_based_wireframe_modelH) _stepentityh); + return ((SdaiEdge_based_wireframe_model_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } // part 3 -const EntityAggregateH -SdaiWireframe_model::Ebwm_boundary() const +const EntityAggregate_ptr +SdaiWireframe_model::ebwm_boundary_() const { if( CurrentUnderlyingType () == config_control_designe_edge_based_wireframe_model ) // EDGE_BASED_WIREFRAME_MODEL - return ((SdaiEdge_based_wireframe_modelH) _stepentityh) ->Ebwm_boundary(); + return ((SdaiEdge_based_wireframe_model_ptr) _app_inst) ->ebwm_boundary_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiWireframe_model::Ebwm_boundary (EntityAggregateH x) +SdaiWireframe_model::ebwm_boundary_ (const EntityAggregate_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_edge_based_wireframe_model ) // EDGE_BASED_WIREFRAME_MODEL - { ((SdaiEdge_based_wireframe_modelH) _stepentityh) ->Ebwm_boundary( x ); + { ((SdaiEdge_based_wireframe_model_ptr) _app_inst) ->ebwm_boundary_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -const SdaiShellsH -SdaiWireframe_model::Sbwm_boundary() const +const SdaiShells_ptr +SdaiWireframe_model::sbwm_boundary_() const { if( CurrentUnderlyingType () == config_control_designe_shell_based_wireframe_model ) // SHELL_BASED_WIREFRAME_MODEL - return ((SdaiShell_based_wireframe_modelH) _stepentityh) ->Sbwm_boundary(); + return ((SdaiShell_based_wireframe_model_ptr) _app_inst) ->sbwm_boundary_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiWireframe_model::Sbwm_boundary (SdaiShellsH x) +SdaiWireframe_model::sbwm_boundary_ (const SdaiShells_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_shell_based_wireframe_model ) // SHELL_BASED_WIREFRAME_MODEL - { ((SdaiShell_based_wireframe_modelH) _stepentityh) ->Sbwm_boundary( x ); + { ((SdaiShell_based_wireframe_model_ptr) _app_inst) ->sbwm_boundary_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiLabel -SdaiWireframe_model::Name() const +SdaiWireframe_model::name_() const { if( CurrentUnderlyingType () == config_control_designe_shell_based_wireframe_model ) // SHELL_BASED_WIREFRAME_MODEL - return ((SdaiShell_based_wireframe_modelH) _stepentityh) ->Name(); + return ((SdaiShell_based_wireframe_model_ptr) _app_inst) ->name_(); if( CurrentUnderlyingType () == config_control_designe_edge_based_wireframe_model ) // EDGE_BASED_WIREFRAME_MODEL - return ((SdaiEdge_based_wireframe_modelH) _stepentityh) ->Name(); + return ((SdaiEdge_based_wireframe_model_ptr) _app_inst) ->name_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiWireframe_model::Name (const char * x) +SdaiWireframe_model::name_ (const SdaiLabel x) + { if( CurrentUnderlyingType () == config_control_designe_shell_based_wireframe_model ) // SHELL_BASED_WIREFRAME_MODEL - { ((SdaiShell_based_wireframe_modelH) _stepentityh) ->Name( x ); + { ((SdaiShell_based_wireframe_model_ptr) _app_inst) ->name_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_edge_based_wireframe_model ) // EDGE_BASED_WIREFRAME_MODEL - { ((SdaiEdge_based_wireframe_modelH) _stepentityh) ->Name( x ); + { ((SdaiEdge_based_wireframe_model_ptr) _app_inst) ->name_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } // part 4 -SdaiWireframe_model& SdaiWireframe_model::operator =( const SdaiShell_based_wireframe_modelH& o ) +SdaiWireframe_model& SdaiWireframe_model::operator =( const SdaiShell_based_wireframe_model_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_shell_based_wireframe_model); return *this; } -SdaiWireframe_model& SdaiWireframe_model::operator =( const SdaiEdge_based_wireframe_modelH& o ) +SdaiWireframe_model& SdaiWireframe_model::operator =( const SdaiEdge_based_wireframe_model_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_edge_based_wireframe_model); return *this; } @@ -5367,43 +8711,52 @@ SdaiWireframe_model& SdaiWireframe_model::operator =( const SdaiEdge_based_wiref #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiWireframe_model& SdaiWireframe_model::operator =( const SdaiWireframe_modelH& o ) + +SdaiWireframe_model& SdaiWireframe_model::operator =( const SdaiWireframe_model_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designe_shell_based_wireframe_model ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_edge_based_wireframe_model ) - _stepentityh = o -> _stepentityh; + if ( o -> CurrentUnderlyingType () == config_control_designe_shell_based_wireframe_model ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_edge_based_wireframe_model ) + _app_inst = o -> _app_inst; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiWireframe_model::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiWireframe_model::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designe_shell_based_wireframe_model ) - _stepentityh = ((SdaiWireframe_model&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_edge_based_wireframe_model ) - _stepentityh = ((SdaiWireframe_model&) o)._stepentityh; + if ( o.CurrentUnderlyingType () == config_control_designe_shell_based_wireframe_model ) + _app_inst = ((SdaiWireframe_model&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_edge_based_wireframe_model ) + _app_inst = ((SdaiWireframe_model&) o)._app_inst; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiWireframe_model::IsShell_based_wireframe_model() const +SCLLOG(Logical) SdaiWireframe_model::IsShell_based_wireframe_model() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_shell_based_wireframe_model ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiWireframe_model::IsEdge_based_wireframe_model() const +SCLLOG(Logical) SdaiWireframe_model::IsEdge_based_wireframe_model() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_edge_based_wireframe_model ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } ////////// END SELECT TYPE SdaiWireframe_model @@ -5412,55 +8765,117 @@ SdaiLogical SdaiWireframe_model::IsEdge_based_wireframe_model() const ////////// SELECT TYPE geometric_set_select const TypeDescriptor * -SdaiGeometric_set_select::AssignEntity (STEPentity * se) +SdaiGeometric_set_select::AssignEntity (SCLP23(Application_instance) * se) { // POINT - if (se -> eDesc -> IsA (config_control_designe_point)) + if (se -> IsA (config_control_designe_point)) { - _stepentityh = (SdaiPointH) se; + _app_inst = (SdaiPoint_ptr) se; return SetUnderlyingType (config_control_designe_point); } // CURVE - if (se -> eDesc -> IsA (config_control_designe_curve)) + if (se -> IsA (config_control_designe_curve)) { - _stepentityh = (SdaiCurveH) se; + _app_inst = (SdaiCurve_ptr) se; return SetUnderlyingType (config_control_designe_curve); } // SURFACE - if (se -> eDesc -> IsA (config_control_designe_surface)) + if (se -> IsA (config_control_designe_surface)) { - _stepentityh = (SdaiSurfaceH) se; + _app_inst = (SdaiSurface_ptr) se; return SetUnderlyingType (config_control_designe_surface); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiGeometric_set_select::NewSelect () { - SdaiGeometric_set_select * tmp = new SdaiGeometric_set_select (); - return tmp; +#ifdef __OSTORE__ + SdaiGeometric_set_select * tmp = + new( os_segment::of(this), + SdaiGeometric_set_select::get_os_typespec() ) + SdaiGeometric_set_select(); +#else + SdaiGeometric_set_select * tmp = new SdaiGeometric_set_select(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiGeometric_set_select::STEPwrite_content (G4std::ostream& out) const +SdaiGeometric_set_select::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designe_point) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_curve) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_surface) - _stepentityh -> STEPwrite_reference (out); - else { + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_curve) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_surface) + _app_inst -> STEPwrite_reference (out); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiGeometric_set_select::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designe_point) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_curve) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_surface) + return sdaiINSTANCE; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiGeometric_set_select::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designe_point) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_curve) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_surface) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -5468,54 +8883,53 @@ SdaiGeometric_set_select::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiGeometric_set_select::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiGeometric_set_select::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designe_point) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_curve) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_surface) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -5527,11 +8941,12 @@ Severity SdaiGeometric_set_select::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -5543,70 +8958,189 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiGeometric_set_select (os_database *db) +{ + return new (db, SdaiGeometric_set_select::get_os_typespec()) + SdaiGeometric_set_select ; +} + +void +SdaiGeometric_set_select_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiGeometric_set_select access hook funct called." << G4endl; + } +#endif + SdaiGeometric_set_select *s = (SdaiGeometric_set_select *) object; + s->_type = config_control_designt_geometric_set_select; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiGeometric_set_selects (os_database *db) +{ + return new (db, SdaiGeometric_set_selects::get_os_typespec()) + SdaiGeometric_set_selects ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiGeometric_set_select::SdaiGeometric_set_select() - : SdaiSelect (config_control_designt_geometric_set_select) +SdaiGeometric_set_select::SdaiGeometric_set_select( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiGeometric_set_select constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiGeometric_set_select constructor." << G4endl; + } +#endif } // part 1 -SdaiGeometric_set_select::SdaiGeometric_set_select( const SdaiPointH& o ) - : SdaiSelect (config_control_designt_geometric_set_select, config_control_designe_point ) +SdaiGeometric_set_select::SdaiGeometric_set_select( const SdaiPoint_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_point) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiGeometric_set_select constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiGeometric_set_select constructor." << G4endl; + } +#endif } -SdaiGeometric_set_select::SdaiGeometric_set_select( const SdaiCurveH& o ) - : SdaiSelect (config_control_designt_geometric_set_select, config_control_designe_curve ) +SdaiGeometric_set_select::SdaiGeometric_set_select( const SdaiCurve_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_curve) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiGeometric_set_select constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiGeometric_set_select constructor." << G4endl; + } +#endif } -SdaiGeometric_set_select::SdaiGeometric_set_select( const SdaiSurfaceH& o ) - : SdaiSelect (config_control_designt_geometric_set_select, config_control_designe_surface ) +SdaiGeometric_set_select::SdaiGeometric_set_select( const SdaiSurface_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_surface) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiGeometric_set_select constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiGeometric_set_select constructor." << G4endl; + } +#endif } SdaiGeometric_set_select::~SdaiGeometric_set_select() { } +SdaiGeometric_set_selects::SdaiGeometric_set_selects( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiGeometric_set_selects::~SdaiGeometric_set_selects() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiGeometric_set_selects::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiGeometric_set_select::get_os_typespec() ) + SdaiGeometric_set_select ); +} +#endif + // part 2 -SdaiGeometric_set_select::operator SdaiPointH() +SdaiGeometric_set_select::operator SdaiPoint_ptr() { if( CurrentUnderlyingType () == config_control_designe_point ) - return ((SdaiPointH) _stepentityh); + return ((SdaiPoint_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiGeometric_set_select::operator SdaiCurveH() +SdaiGeometric_set_select::operator SdaiCurve_ptr() { if( CurrentUnderlyingType () == config_control_designe_curve ) - return ((SdaiCurveH) _stepentityh); + return ((SdaiCurve_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiGeometric_set_select::operator SdaiSurfaceH() +SdaiGeometric_set_select::operator SdaiSurface_ptr() { if( CurrentUnderlyingType () == config_control_designe_surface ) - return ((SdaiSurfaceH) _stepentityh); + return ((SdaiSurface_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } @@ -5614,69 +9148,70 @@ SdaiGeometric_set_select::operator SdaiSurfaceH() // part 3 const SdaiLabel -SdaiGeometric_set_select::Name() const +SdaiGeometric_set_select::name_() const { if( CurrentUnderlyingType () == config_control_designe_point ) // POINT - return ((SdaiPointH) _stepentityh) ->Name(); + return ((SdaiPoint_ptr) _app_inst) ->name_(); if( CurrentUnderlyingType () == config_control_designe_curve ) // CURVE - return ((SdaiCurveH) _stepentityh) ->Name(); + return ((SdaiCurve_ptr) _app_inst) ->name_(); if( CurrentUnderlyingType () == config_control_designe_surface ) // SURFACE - return ((SdaiSurfaceH) _stepentityh) ->Name(); + return ((SdaiSurface_ptr) _app_inst) ->name_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiGeometric_set_select::Name (const char * x) +SdaiGeometric_set_select::name_ (const SdaiLabel x) + { if( CurrentUnderlyingType () == config_control_designe_point ) // POINT - { ((SdaiPointH) _stepentityh) ->Name( x ); + { ((SdaiPoint_ptr) _app_inst) ->name_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_curve ) // CURVE - { ((SdaiCurveH) _stepentityh) ->Name( x ); + { ((SdaiCurve_ptr) _app_inst) ->name_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_surface ) // SURFACE - { ((SdaiSurfaceH) _stepentityh) ->Name( x ); + { ((SdaiSurface_ptr) _app_inst) ->name_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } // part 4 -SdaiGeometric_set_select& SdaiGeometric_set_select::operator =( const SdaiPointH& o ) +SdaiGeometric_set_select& SdaiGeometric_set_select::operator =( const SdaiPoint_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_point); return *this; } -SdaiGeometric_set_select& SdaiGeometric_set_select::operator =( const SdaiCurveH& o ) +SdaiGeometric_set_select& SdaiGeometric_set_select::operator =( const SdaiCurve_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_curve); return *this; } -SdaiGeometric_set_select& SdaiGeometric_set_select::operator =( const SdaiSurfaceH& o ) +SdaiGeometric_set_select& SdaiGeometric_set_select::operator =( const SdaiSurface_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_surface); return *this; } @@ -5684,56 +9219,65 @@ SdaiGeometric_set_select& SdaiGeometric_set_select::operator =( const SdaiSurfac #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiGeometric_set_select& SdaiGeometric_set_select::operator =( const SdaiGeometric_set_selectH& o ) + +SdaiGeometric_set_select& SdaiGeometric_set_select::operator =( const SdaiGeometric_set_select_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designe_point ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_curve ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_surface ) - _stepentityh = o -> _stepentityh; + if ( o -> CurrentUnderlyingType () == config_control_designe_point ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_curve ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_surface ) + _app_inst = o -> _app_inst; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiGeometric_set_select::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiGeometric_set_select::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designe_point ) - _stepentityh = ((SdaiGeometric_set_select&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_curve ) - _stepentityh = ((SdaiGeometric_set_select&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_surface ) - _stepentityh = ((SdaiGeometric_set_select&) o)._stepentityh; + if ( o.CurrentUnderlyingType () == config_control_designe_point ) + _app_inst = ((SdaiGeometric_set_select&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_curve ) + _app_inst = ((SdaiGeometric_set_select&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_surface ) + _app_inst = ((SdaiGeometric_set_select&) o)._app_inst; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiGeometric_set_select::IsPoint() const +SCLLOG(Logical) SdaiGeometric_set_select::IsPoint() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_point ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiGeometric_set_select::IsCurve() const +SCLLOG(Logical) SdaiGeometric_set_select::IsCurve() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_curve ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiGeometric_set_select::IsSurface() const +SCLLOG(Logical) SdaiGeometric_set_select::IsSurface() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_surface ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } ////////// END SELECT TYPE SdaiGeometric_set_select @@ -5742,39 +9286,85 @@ SdaiLogical SdaiGeometric_set_select::IsSurface() const ////////// SELECT TYPE start_request_item const TypeDescriptor * -SdaiStart_request_item::AssignEntity (STEPentity * se) +SdaiStart_request_item::AssignEntity (SCLP23(Application_instance) * se) { // PRODUCT_DEFINITION_FORMATION - if (se -> eDesc -> IsA (config_control_designe_product_definition_formation)) + if (se -> IsA (config_control_designe_product_definition_formation)) { - _stepentityh = (SdaiProduct_definition_formationH) se; + _app_inst = (SdaiProduct_definition_formation_ptr) se; return SetUnderlyingType (config_control_designe_product_definition_formation); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiStart_request_item::NewSelect () { - SdaiStart_request_item * tmp = new SdaiStart_request_item (); - return tmp; +#ifdef __OSTORE__ + SdaiStart_request_item * tmp = + new( os_segment::of(this), + SdaiStart_request_item::get_os_typespec() ) + SdaiStart_request_item(); +#else + SdaiStart_request_item * tmp = new SdaiStart_request_item(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiStart_request_item::STEPwrite_content (G4std::ostream& out) const +SdaiStart_request_item::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designe_product_definition_formation) - _stepentityh -> STEPwrite_reference (out); - else { + _app_inst -> STEPwrite_reference (out); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiStart_request_item::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designe_product_definition_formation) + return sdaiINSTANCE; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiStart_request_item::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designe_product_definition_formation) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -5782,26 +9372,27 @@ SdaiStart_request_item::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiStart_request_item::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiStart_request_item::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designe_product_definition_formation) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -5813,11 +9404,12 @@ Severity SdaiStart_request_item::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -5829,128 +9421,222 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiStart_request_item (os_database *db) +{ + return new (db, SdaiStart_request_item::get_os_typespec()) + SdaiStart_request_item ; +} + +void +SdaiStart_request_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiStart_request_item access hook funct called." << G4endl; + } +#endif + SdaiStart_request_item *s = (SdaiStart_request_item *) object; + s->_type = config_control_designt_start_request_item; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiStart_request_items (os_database *db) +{ + return new (db, SdaiStart_request_items::get_os_typespec()) + SdaiStart_request_items ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiStart_request_item::SdaiStart_request_item() - : SdaiSelect (config_control_designt_start_request_item) +SdaiStart_request_item::SdaiStart_request_item( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiStart_request_item constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiStart_request_item constructor." << G4endl; + } +#endif } // part 1 -SdaiStart_request_item::SdaiStart_request_item( const SdaiProduct_definition_formationH& o ) - : SdaiSelect (config_control_designt_start_request_item, config_control_designe_product_definition_formation ) +SdaiStart_request_item::SdaiStart_request_item( const SdaiProduct_definition_formation_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_product_definition_formation) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiStart_request_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiStart_request_item constructor." << G4endl; + } +#endif } SdaiStart_request_item::~SdaiStart_request_item() { } +SdaiStart_request_items::SdaiStart_request_items( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiStart_request_items::~SdaiStart_request_items() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiStart_request_items::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiStart_request_item::get_os_typespec() ) + SdaiStart_request_item ); +} +#endif + // part 2 -SdaiStart_request_item::operator SdaiProduct_definition_formationH() +SdaiStart_request_item::operator SdaiProduct_definition_formation_ptr() { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) - return ((SdaiProduct_definition_formationH) _stepentityh); + return ((SdaiProduct_definition_formation_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } // part 3 -SdaiProductH -SdaiStart_request_item::Of_product() const +const SdaiProduct_ptr +SdaiStart_request_item::of_product_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - return ((SdaiProduct_definition_formationH) _stepentityh) ->Of_product(); + return ((SdaiProduct_definition_formation_ptr) _app_inst) ->of_product_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiStart_request_item::Of_product (SdaiProductH x) +SdaiStart_request_item::of_product_ (const SdaiProduct_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - { ((SdaiProduct_definition_formationH) _stepentityh) ->Of_product( x ); + { ((SdaiProduct_definition_formation_ptr) _app_inst) ->of_product_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiText -SdaiStart_request_item::Description() const +SdaiStart_request_item::description_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - return ((SdaiProduct_definition_formationH) _stepentityh) ->Description(); + return ((SdaiProduct_definition_formation_ptr) _app_inst) ->description_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiStart_request_item::Description (const char * x) +SdaiStart_request_item::description_ (const SdaiText x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - { ((SdaiProduct_definition_formationH) _stepentityh) ->Description( x ); + { ((SdaiProduct_definition_formation_ptr) _app_inst) ->description_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiIdentifier -SdaiStart_request_item::Id() const +SdaiStart_request_item::id_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - return ((SdaiProduct_definition_formationH) _stepentityh) ->Id(); + return ((SdaiProduct_definition_formation_ptr) _app_inst) ->id_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiStart_request_item::Id (const char * x) +SdaiStart_request_item::id_ (const SdaiIdentifier x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - { ((SdaiProduct_definition_formationH) _stepentityh) ->Id( x ); + { ((SdaiProduct_definition_formation_ptr) _app_inst) ->id_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } // part 4 -SdaiStart_request_item& SdaiStart_request_item::operator =( const SdaiProduct_definition_formationH& o ) +SdaiStart_request_item& SdaiStart_request_item::operator =( const SdaiProduct_definition_formation_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_product_definition_formation); return *this; } @@ -5958,30 +9644,39 @@ SdaiStart_request_item& SdaiStart_request_item::operator =( const SdaiProduct_de #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiStart_request_item& SdaiStart_request_item::operator =( const SdaiStart_request_itemH& o ) + +SdaiStart_request_item& SdaiStart_request_item::operator =( const SdaiStart_request_item_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designe_product_definition_formation ) - _stepentityh = o -> _stepentityh; + if ( o -> CurrentUnderlyingType () == config_control_designe_product_definition_formation ) + _app_inst = o -> _app_inst; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiStart_request_item::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiStart_request_item::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designe_product_definition_formation ) - _stepentityh = ((SdaiStart_request_item&) o)._stepentityh; + if ( o.CurrentUnderlyingType () == config_control_designe_product_definition_formation ) + _app_inst = ((SdaiStart_request_item&) o)._app_inst; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiStart_request_item::IsProduct_definition_formation() const +SCLLOG(Logical) SdaiStart_request_item::IsProduct_definition_formation() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } ////////// END SELECT TYPE SdaiStart_request_item @@ -5990,111 +9685,229 @@ SdaiLogical SdaiStart_request_item::IsProduct_definition_formation() const ////////// SELECT TYPE person_organization_item const TypeDescriptor * -SdaiPerson_organization_item::AssignEntity (STEPentity * se) +SdaiPerson_organization_item::AssignEntity (SCLP23(Application_instance) * se) { // CHANGE - if (se -> eDesc -> IsA (config_control_designe_change)) + if (se -> IsA (config_control_designe_change)) { - _stepentityh = (SdaiChangeH) se; + _app_inst = (SdaiChange_ptr) se; return SetUnderlyingType (config_control_designe_change); } // START_WORK - if (se -> eDesc -> IsA (config_control_designe_start_work)) + if (se -> IsA (config_control_designe_start_work)) { - _stepentityh = (SdaiStart_workH) se; + _app_inst = (SdaiStart_work_ptr) se; return SetUnderlyingType (config_control_designe_start_work); } // CHANGE_REQUEST - if (se -> eDesc -> IsA (config_control_designe_change_request)) + if (se -> IsA (config_control_designe_change_request)) { - _stepentityh = (SdaiChange_requestH) se; + _app_inst = (SdaiChange_request_ptr) se; return SetUnderlyingType (config_control_designe_change_request); } // START_REQUEST - if (se -> eDesc -> IsA (config_control_designe_start_request)) + if (se -> IsA (config_control_designe_start_request)) { - _stepentityh = (SdaiStart_requestH) se; + _app_inst = (SdaiStart_request_ptr) se; return SetUnderlyingType (config_control_designe_start_request); } // CONFIGURATION_ITEM - if (se -> eDesc -> IsA (config_control_designe_configuration_item)) + if (se -> IsA (config_control_designe_configuration_item)) { - _stepentityh = (SdaiConfiguration_itemH) se; + _app_inst = (SdaiConfiguration_item_ptr) se; return SetUnderlyingType (config_control_designe_configuration_item); } // PRODUCT - if (se -> eDesc -> IsA (config_control_designe_product)) + if (se -> IsA (config_control_designe_product)) { - _stepentityh = (SdaiProductH) se; + _app_inst = (SdaiProduct_ptr) se; return SetUnderlyingType (config_control_designe_product); } // PRODUCT_DEFINITION_FORMATION - if (se -> eDesc -> IsA (config_control_designe_product_definition_formation)) + if (se -> IsA (config_control_designe_product_definition_formation)) { - _stepentityh = (SdaiProduct_definition_formationH) se; + _app_inst = (SdaiProduct_definition_formation_ptr) se; return SetUnderlyingType (config_control_designe_product_definition_formation); } // PRODUCT_DEFINITION - if (se -> eDesc -> IsA (config_control_designe_product_definition)) + if (se -> IsA (config_control_designe_product_definition)) { - _stepentityh = (SdaiProduct_definitionH) se; + _app_inst = (SdaiProduct_definition_ptr) se; return SetUnderlyingType (config_control_designe_product_definition); } // CONTRACT - if (se -> eDesc -> IsA (config_control_designe_contract)) + if (se -> IsA (config_control_designe_contract)) { - _stepentityh = (SdaiContractH) se; + _app_inst = (SdaiContract_ptr) se; return SetUnderlyingType (config_control_designe_contract); } // SECURITY_CLASSIFICATION - if (se -> eDesc -> IsA (config_control_designe_security_classification)) + if (se -> IsA (config_control_designe_security_classification)) { - _stepentityh = (SdaiSecurity_classificationH) se; + _app_inst = (SdaiSecurity_classification_ptr) se; return SetUnderlyingType (config_control_designe_security_classification); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiPerson_organization_item::NewSelect () { - SdaiPerson_organization_item * tmp = new SdaiPerson_organization_item (); - return tmp; +#ifdef __OSTORE__ + SdaiPerson_organization_item * tmp = + new( os_segment::of(this), + SdaiPerson_organization_item::get_os_typespec() ) + SdaiPerson_organization_item(); +#else + SdaiPerson_organization_item * tmp = new SdaiPerson_organization_item(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiPerson_organization_item::STEPwrite_content (G4std::ostream& out) const +SdaiPerson_organization_item::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designe_change) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_start_work) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_change_request) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_start_request) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_configuration_item) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_product) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_product_definition_formation) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_product_definition) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_contract) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_security_classification) - _stepentityh -> STEPwrite_reference (out); - else { + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_start_work) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_change_request) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_start_request) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_configuration_item) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_product) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_product_definition_formation) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_product_definition) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_contract) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_security_classification) + _app_inst -> STEPwrite_reference (out); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiPerson_organization_item::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designe_change) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_start_work) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_change_request) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_start_request) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_configuration_item) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_product) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_product_definition_formation) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_product_definition) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_contract) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_security_classification) + return sdaiINSTANCE; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiPerson_organization_item::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designe_change) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_start_work) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_change_request) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_start_request) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_configuration_item) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_product) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_product_definition_formation) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_product_definition) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_contract) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_security_classification) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -6102,152 +9915,144 @@ SdaiPerson_organization_item::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiPerson_organization_item::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiPerson_organization_item::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designe_change) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_start_work) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_change_request) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_start_request) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_configuration_item) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_product) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_product_definition_formation) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_product_definition) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_contract) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_security_classification) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -6259,11 +10064,12 @@ Severity SdaiPerson_organization_item::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -6275,744 +10081,974 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiPerson_organization_item (os_database *db) +{ + return new (db, SdaiPerson_organization_item::get_os_typespec()) + SdaiPerson_organization_item ; +} + +void +SdaiPerson_organization_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiPerson_organization_item access hook funct called." << G4endl; + } +#endif + SdaiPerson_organization_item *s = (SdaiPerson_organization_item *) object; + s->_type = config_control_designt_person_organization_item; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiPerson_organization_items (os_database *db) +{ + return new (db, SdaiPerson_organization_items::get_os_typespec()) + SdaiPerson_organization_items ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiPerson_organization_item::SdaiPerson_organization_item() - : SdaiSelect (config_control_designt_person_organization_item) +SdaiPerson_organization_item::SdaiPerson_organization_item( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiPerson_organization_item constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiPerson_organization_item constructor." << G4endl; + } +#endif } // part 1 -SdaiPerson_organization_item::SdaiPerson_organization_item( const SdaiChangeH& o ) - : SdaiSelect (config_control_designt_person_organization_item, config_control_designe_change ) +SdaiPerson_organization_item::SdaiPerson_organization_item( const SdaiChange_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_change) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiPerson_organization_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiPerson_organization_item constructor." << G4endl; + } +#endif } -SdaiPerson_organization_item::SdaiPerson_organization_item( const SdaiStart_workH& o ) - : SdaiSelect (config_control_designt_person_organization_item, config_control_designe_start_work ) +SdaiPerson_organization_item::SdaiPerson_organization_item( const SdaiStart_work_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_start_work) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiPerson_organization_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiPerson_organization_item constructor." << G4endl; + } +#endif } -SdaiPerson_organization_item::SdaiPerson_organization_item( const SdaiChange_requestH& o ) - : SdaiSelect (config_control_designt_person_organization_item, config_control_designe_change_request ) +SdaiPerson_organization_item::SdaiPerson_organization_item( const SdaiChange_request_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_change_request) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiPerson_organization_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiPerson_organization_item constructor." << G4endl; + } +#endif } -SdaiPerson_organization_item::SdaiPerson_organization_item( const SdaiStart_requestH& o ) - : SdaiSelect (config_control_designt_person_organization_item, config_control_designe_start_request ) +SdaiPerson_organization_item::SdaiPerson_organization_item( const SdaiStart_request_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_start_request) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiPerson_organization_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiPerson_organization_item constructor." << G4endl; + } +#endif } -SdaiPerson_organization_item::SdaiPerson_organization_item( const SdaiConfiguration_itemH& o ) - : SdaiSelect (config_control_designt_person_organization_item, config_control_designe_configuration_item ) +SdaiPerson_organization_item::SdaiPerson_organization_item( const SdaiConfiguration_item_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_configuration_item) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiPerson_organization_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiPerson_organization_item constructor." << G4endl; + } +#endif } -SdaiPerson_organization_item::SdaiPerson_organization_item( const SdaiProductH& o ) - : SdaiSelect (config_control_designt_person_organization_item, config_control_designe_product ) +SdaiPerson_organization_item::SdaiPerson_organization_item( const SdaiProduct_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_product) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiPerson_organization_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiPerson_organization_item constructor." << G4endl; + } +#endif } -SdaiPerson_organization_item::SdaiPerson_organization_item( const SdaiProduct_definition_formationH& o ) - : SdaiSelect (config_control_designt_person_organization_item, config_control_designe_product_definition_formation ) +SdaiPerson_organization_item::SdaiPerson_organization_item( const SdaiProduct_definition_formation_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_product_definition_formation) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiPerson_organization_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiPerson_organization_item constructor." << G4endl; + } +#endif } -SdaiPerson_organization_item::SdaiPerson_organization_item( const SdaiProduct_definitionH& o ) - : SdaiSelect (config_control_designt_person_organization_item, config_control_designe_product_definition ) +SdaiPerson_organization_item::SdaiPerson_organization_item( const SdaiProduct_definition_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_product_definition) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiPerson_organization_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiPerson_organization_item constructor." << G4endl; + } +#endif } -SdaiPerson_organization_item::SdaiPerson_organization_item( const SdaiContractH& o ) - : SdaiSelect (config_control_designt_person_organization_item, config_control_designe_contract ) +SdaiPerson_organization_item::SdaiPerson_organization_item( const SdaiContract_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_contract) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiPerson_organization_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiPerson_organization_item constructor." << G4endl; + } +#endif } -SdaiPerson_organization_item::SdaiPerson_organization_item( const SdaiSecurity_classificationH& o ) - : SdaiSelect (config_control_designt_person_organization_item, config_control_designe_security_classification ) +SdaiPerson_organization_item::SdaiPerson_organization_item( const SdaiSecurity_classification_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_security_classification) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiPerson_organization_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiPerson_organization_item constructor." << G4endl; + } +#endif } SdaiPerson_organization_item::~SdaiPerson_organization_item() { } +SdaiPerson_organization_items::SdaiPerson_organization_items( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiPerson_organization_items::~SdaiPerson_organization_items() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiPerson_organization_items::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiPerson_organization_item::get_os_typespec() ) + SdaiPerson_organization_item ); +} +#endif + // part 2 -SdaiPerson_organization_item::operator SdaiChangeH() +SdaiPerson_organization_item::operator SdaiChange_ptr() { if( CurrentUnderlyingType () == config_control_designe_change ) - return ((SdaiChangeH) _stepentityh); + return ((SdaiChange_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiPerson_organization_item::operator SdaiStart_workH() +SdaiPerson_organization_item::operator SdaiStart_work_ptr() { if( CurrentUnderlyingType () == config_control_designe_start_work ) - return ((SdaiStart_workH) _stepentityh); + return ((SdaiStart_work_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiPerson_organization_item::operator SdaiChange_requestH() +SdaiPerson_organization_item::operator SdaiChange_request_ptr() { if( CurrentUnderlyingType () == config_control_designe_change_request ) - return ((SdaiChange_requestH) _stepentityh); + return ((SdaiChange_request_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiPerson_organization_item::operator SdaiStart_requestH() +SdaiPerson_organization_item::operator SdaiStart_request_ptr() { if( CurrentUnderlyingType () == config_control_designe_start_request ) - return ((SdaiStart_requestH) _stepentityh); + return ((SdaiStart_request_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiPerson_organization_item::operator SdaiConfiguration_itemH() +SdaiPerson_organization_item::operator SdaiConfiguration_item_ptr() { if( CurrentUnderlyingType () == config_control_designe_configuration_item ) - return ((SdaiConfiguration_itemH) _stepentityh); + return ((SdaiConfiguration_item_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiPerson_organization_item::operator SdaiProductH() +SdaiPerson_organization_item::operator SdaiProduct_ptr() { if( CurrentUnderlyingType () == config_control_designe_product ) - return ((SdaiProductH) _stepentityh); + return ((SdaiProduct_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiPerson_organization_item::operator SdaiProduct_definition_formationH() +SdaiPerson_organization_item::operator SdaiProduct_definition_formation_ptr() { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) - return ((SdaiProduct_definition_formationH) _stepentityh); + return ((SdaiProduct_definition_formation_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiPerson_organization_item::operator SdaiProduct_definitionH() +SdaiPerson_organization_item::operator SdaiProduct_definition_ptr() { if( CurrentUnderlyingType () == config_control_designe_product_definition ) - return ((SdaiProduct_definitionH) _stepentityh); + return ((SdaiProduct_definition_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiPerson_organization_item::operator SdaiContractH() +SdaiPerson_organization_item::operator SdaiContract_ptr() { if( CurrentUnderlyingType () == config_control_designe_contract ) - return ((SdaiContractH) _stepentityh); + return ((SdaiContract_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiPerson_organization_item::operator SdaiSecurity_classificationH() +SdaiPerson_organization_item::operator SdaiSecurity_classification_ptr() { if( CurrentUnderlyingType () == config_control_designe_security_classification ) - return ((SdaiSecurity_classificationH) _stepentityh); + return ((SdaiSecurity_classification_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } // part 3 -SdaiSecurity_classification_levelH -SdaiPerson_organization_item::Security_level() const +const SdaiSecurity_classification_level_ptr +SdaiPerson_organization_item::security_level_() const { if( CurrentUnderlyingType () == config_control_designe_security_classification ) // SECURITY_CLASSIFICATION - return ((SdaiSecurity_classificationH) _stepentityh) ->Security_level(); + return ((SdaiSecurity_classification_ptr) _app_inst) ->security_level_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiPerson_organization_item::Security_level (SdaiSecurity_classification_levelH x) +SdaiPerson_organization_item::security_level_ (const SdaiSecurity_classification_level_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_security_classification ) // SECURITY_CLASSIFICATION - { ((SdaiSecurity_classificationH) _stepentityh) ->Security_level( x ); + { ((SdaiSecurity_classification_ptr) _app_inst) ->security_level_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiContract_typeH -SdaiPerson_organization_item::Kind() const +const SdaiContract_type_ptr +SdaiPerson_organization_item::kind_() const { if( CurrentUnderlyingType () == config_control_designe_contract ) // CONTRACT - return ((SdaiContractH) _stepentityh) ->Kind(); + return ((SdaiContract_ptr) _app_inst) ->kind_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiPerson_organization_item::Kind (SdaiContract_typeH x) +SdaiPerson_organization_item::kind_ (const SdaiContract_type_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_contract ) // CONTRACT - { ((SdaiContractH) _stepentityh) ->Kind( x ); + { ((SdaiContract_ptr) _app_inst) ->kind_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiProduct_definition_formationH -SdaiPerson_organization_item::Formation() const +const SdaiProduct_definition_formation_ptr +SdaiPerson_organization_item::formation_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - return ((SdaiProduct_definitionH) _stepentityh) ->Formation(); + return ((SdaiProduct_definition_ptr) _app_inst) ->formation_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiPerson_organization_item::Formation (SdaiProduct_definition_formationH x) +SdaiPerson_organization_item::formation_ (const SdaiProduct_definition_formation_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - { ((SdaiProduct_definitionH) _stepentityh) ->Formation( x ); + { ((SdaiProduct_definition_ptr) _app_inst) ->formation_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiProductH -SdaiPerson_organization_item::Of_product() const +const SdaiProduct_ptr +SdaiPerson_organization_item::of_product_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - return ((SdaiProduct_definition_formationH) _stepentityh) ->Of_product(); + return ((SdaiProduct_definition_formation_ptr) _app_inst) ->of_product_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiPerson_organization_item::Of_product (SdaiProductH x) +SdaiPerson_organization_item::of_product_ (const SdaiProduct_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - { ((SdaiProduct_definition_formationH) _stepentityh) ->Of_product( x ); + { ((SdaiProduct_definition_formation_ptr) _app_inst) ->of_product_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -const EntityAggregateH -SdaiPerson_organization_item::Frame_of_reference() const +const EntityAggregate_ptr +SdaiPerson_organization_item::frame_of_reference_() const { if( CurrentUnderlyingType () == config_control_designe_product ) // PRODUCT - return ((SdaiProductH) _stepentityh) ->Frame_of_reference(); + return ((SdaiProduct_ptr) _app_inst) ->frame_of_reference_(); // PRODUCT_DEFINITION // attribute access function has a different return type G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiPerson_organization_item::Frame_of_reference (EntityAggregateH x) +SdaiPerson_organization_item::frame_of_reference_ (const EntityAggregate_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_product ) // PRODUCT - { ((SdaiProductH) _stepentityh) ->Frame_of_reference( x ); + { ((SdaiProduct_ptr) _app_inst) ->frame_of_reference_( x ); return; } // for PRODUCT_DEFINITION attribute access function has a different argument type - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiLabel -SdaiPerson_organization_item::Purpose() const +SdaiPerson_organization_item::purpose_() const { if( CurrentUnderlyingType () == config_control_designe_configuration_item ) // CONFIGURATION_ITEM - return ((SdaiConfiguration_itemH) _stepentityh) ->Purpose(); + return ((SdaiConfiguration_item_ptr) _app_inst) ->purpose_(); if( CurrentUnderlyingType () == config_control_designe_contract ) // CONTRACT - return ((SdaiContractH) _stepentityh) ->Purpose(); + return ((SdaiContract_ptr) _app_inst) ->purpose_(); if( CurrentUnderlyingType () == config_control_designe_security_classification ) // SECURITY_CLASSIFICATION - return ((SdaiSecurity_classificationH) _stepentityh) ->Purpose(); + return ((SdaiSecurity_classification_ptr) _app_inst) ->purpose_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiPerson_organization_item::Purpose (const char * x) +SdaiPerson_organization_item::purpose_ (const SdaiLabel x) + { if( CurrentUnderlyingType () == config_control_designe_configuration_item ) // CONFIGURATION_ITEM - { ((SdaiConfiguration_itemH) _stepentityh) ->Purpose( x ); + { ((SdaiConfiguration_item_ptr) _app_inst) ->purpose_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_contract ) // CONTRACT - { ((SdaiContractH) _stepentityh) ->Purpose( x ); + { ((SdaiContract_ptr) _app_inst) ->purpose_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_security_classification ) // SECURITY_CLASSIFICATION - { ((SdaiSecurity_classificationH) _stepentityh) ->Purpose( x ); + { ((SdaiSecurity_classification_ptr) _app_inst) ->purpose_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiProduct_conceptH -SdaiPerson_organization_item::Item_concept() const +const SdaiProduct_concept_ptr +SdaiPerson_organization_item::item_concept_() const { if( CurrentUnderlyingType () == config_control_designe_configuration_item ) // CONFIGURATION_ITEM - return ((SdaiConfiguration_itemH) _stepentityh) ->Item_concept(); + return ((SdaiConfiguration_item_ptr) _app_inst) ->item_concept_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiPerson_organization_item::Item_concept (SdaiProduct_conceptH x) +SdaiPerson_organization_item::item_concept_ (const SdaiProduct_concept_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_configuration_item ) // CONFIGURATION_ITEM - { ((SdaiConfiguration_itemH) _stepentityh) ->Item_concept( x ); + { ((SdaiConfiguration_item_ptr) _app_inst) ->item_concept_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiText -SdaiPerson_organization_item::Description() const +SdaiPerson_organization_item::description_() const { if( CurrentUnderlyingType () == config_control_designe_configuration_item ) // CONFIGURATION_ITEM - return ((SdaiConfiguration_itemH) _stepentityh) ->Description(); + return ((SdaiConfiguration_item_ptr) _app_inst) ->description_(); if( CurrentUnderlyingType () == config_control_designe_product ) // PRODUCT - return ((SdaiProductH) _stepentityh) ->Description(); + return ((SdaiProduct_ptr) _app_inst) ->description_(); if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - return ((SdaiProduct_definition_formationH) _stepentityh) ->Description(); + return ((SdaiProduct_definition_formation_ptr) _app_inst) ->description_(); if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - return ((SdaiProduct_definitionH) _stepentityh) ->Description(); + return ((SdaiProduct_definition_ptr) _app_inst) ->description_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiPerson_organization_item::Description (const char * x) +SdaiPerson_organization_item::description_ (const SdaiText x) + { if( CurrentUnderlyingType () == config_control_designe_configuration_item ) // CONFIGURATION_ITEM - { ((SdaiConfiguration_itemH) _stepentityh) ->Description( x ); + { ((SdaiConfiguration_item_ptr) _app_inst) ->description_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_product ) // PRODUCT - { ((SdaiProductH) _stepentityh) ->Description( x ); + { ((SdaiProduct_ptr) _app_inst) ->description_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - { ((SdaiProduct_definition_formationH) _stepentityh) ->Description( x ); + { ((SdaiProduct_definition_formation_ptr) _app_inst) ->description_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - { ((SdaiProduct_definitionH) _stepentityh) ->Description( x ); + { ((SdaiProduct_definition_ptr) _app_inst) ->description_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiLabel -SdaiPerson_organization_item::Name() const +SdaiPerson_organization_item::name_() const { if( CurrentUnderlyingType () == config_control_designe_configuration_item ) // CONFIGURATION_ITEM - return ((SdaiConfiguration_itemH) _stepentityh) ->Name(); + return ((SdaiConfiguration_item_ptr) _app_inst) ->name_(); if( CurrentUnderlyingType () == config_control_designe_product ) // PRODUCT - return ((SdaiProductH) _stepentityh) ->Name(); + return ((SdaiProduct_ptr) _app_inst) ->name_(); if( CurrentUnderlyingType () == config_control_designe_contract ) // CONTRACT - return ((SdaiContractH) _stepentityh) ->Name(); + return ((SdaiContract_ptr) _app_inst) ->name_(); if( CurrentUnderlyingType () == config_control_designe_security_classification ) // SECURITY_CLASSIFICATION - return ((SdaiSecurity_classificationH) _stepentityh) ->Name(); + return ((SdaiSecurity_classification_ptr) _app_inst) ->name_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiPerson_organization_item::Name (const char * x) +SdaiPerson_organization_item::name_ (const SdaiLabel x) + { if( CurrentUnderlyingType () == config_control_designe_configuration_item ) // CONFIGURATION_ITEM - { ((SdaiConfiguration_itemH) _stepentityh) ->Name( x ); + { ((SdaiConfiguration_item_ptr) _app_inst) ->name_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_product ) // PRODUCT - { ((SdaiProductH) _stepentityh) ->Name( x ); + { ((SdaiProduct_ptr) _app_inst) ->name_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_contract ) // CONTRACT - { ((SdaiContractH) _stepentityh) ->Name( x ); + { ((SdaiContract_ptr) _app_inst) ->name_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_security_classification ) // SECURITY_CLASSIFICATION - { ((SdaiSecurity_classificationH) _stepentityh) ->Name( x ); + { ((SdaiSecurity_classification_ptr) _app_inst) ->name_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiIdentifier -SdaiPerson_organization_item::Id() const +SdaiPerson_organization_item::id_() const { if( CurrentUnderlyingType () == config_control_designe_configuration_item ) // CONFIGURATION_ITEM - return ((SdaiConfiguration_itemH) _stepentityh) ->Id(); + return ((SdaiConfiguration_item_ptr) _app_inst) ->id_(); if( CurrentUnderlyingType () == config_control_designe_product ) // PRODUCT - return ((SdaiProductH) _stepentityh) ->Id(); + return ((SdaiProduct_ptr) _app_inst) ->id_(); if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - return ((SdaiProduct_definition_formationH) _stepentityh) ->Id(); + return ((SdaiProduct_definition_formation_ptr) _app_inst) ->id_(); if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - return ((SdaiProduct_definitionH) _stepentityh) ->Id(); + return ((SdaiProduct_definition_ptr) _app_inst) ->id_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiPerson_organization_item::Id (const char * x) +SdaiPerson_organization_item::id_ (const SdaiIdentifier x) + { if( CurrentUnderlyingType () == config_control_designe_configuration_item ) // CONFIGURATION_ITEM - { ((SdaiConfiguration_itemH) _stepentityh) ->Id( x ); + { ((SdaiConfiguration_item_ptr) _app_inst) ->id_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_product ) // PRODUCT - { ((SdaiProductH) _stepentityh) ->Id( x ); + { ((SdaiProduct_ptr) _app_inst) ->id_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - { ((SdaiProduct_definition_formationH) _stepentityh) ->Id( x ); + { ((SdaiProduct_definition_formation_ptr) _app_inst) ->id_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - { ((SdaiProduct_definitionH) _stepentityh) ->Id( x ); + { ((SdaiProduct_definition_ptr) _app_inst) ->id_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiVersioned_action_requestH -SdaiPerson_organization_item::Assigned_action_request() const +const SdaiVersioned_action_request_ptr +SdaiPerson_organization_item::assigned_action_request_() const { if( CurrentUnderlyingType () == config_control_designe_change_request ) // CHANGE_REQUEST - return ((SdaiChange_requestH) _stepentityh) ->Assigned_action_request(); + return ((SdaiChange_request_ptr) _app_inst) ->assigned_action_request_(); if( CurrentUnderlyingType () == config_control_designe_start_request ) // START_REQUEST - return ((SdaiStart_requestH) _stepentityh) ->Assigned_action_request(); + return ((SdaiStart_request_ptr) _app_inst) ->assigned_action_request_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiPerson_organization_item::Assigned_action_request (SdaiVersioned_action_requestH x) +SdaiPerson_organization_item::assigned_action_request_ (const SdaiVersioned_action_request_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_change_request ) // CHANGE_REQUEST - { ((SdaiChange_requestH) _stepentityh) ->Assigned_action_request( x ); + { ((SdaiChange_request_ptr) _app_inst) ->assigned_action_request_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_start_request ) // START_REQUEST - { ((SdaiStart_requestH) _stepentityh) ->Assigned_action_request( x ); + { ((SdaiStart_request_ptr) _app_inst) ->assigned_action_request_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -const SdaiWork_itemsH -SdaiPerson_organization_item::Items() const +const SdaiWork_items_ptr +SdaiPerson_organization_item::items_() const { if( CurrentUnderlyingType () == config_control_designe_change ) // CHANGE - return ((SdaiChangeH) _stepentityh) ->Items(); + return ((SdaiChange_ptr) _app_inst) ->items_(); if( CurrentUnderlyingType () == config_control_designe_start_work ) // START_WORK - return ((SdaiStart_workH) _stepentityh) ->Items(); + return ((SdaiStart_work_ptr) _app_inst) ->items_(); // CHANGE_REQUEST // attribute access function has a different return type // START_REQUEST // attribute access function has a different return type G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiPerson_organization_item::Items (SdaiWork_itemsH x) +SdaiPerson_organization_item::items_ (const SdaiWork_items_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_change ) // CHANGE - { ((SdaiChangeH) _stepentityh) ->Items( x ); + { ((SdaiChange_ptr) _app_inst) ->items_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_start_work ) // START_WORK - { ((SdaiStart_workH) _stepentityh) ->Items( x ); + { ((SdaiStart_work_ptr) _app_inst) ->items_( x ); return; } // for CHANGE_REQUEST attribute access function has a different argument type // for START_REQUEST attribute access function has a different argument type - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiActionH -SdaiPerson_organization_item::Assigned_action() const +const SdaiAction_ptr +SdaiPerson_organization_item::assigned_action_() const { if( CurrentUnderlyingType () == config_control_designe_change ) // CHANGE - return ((SdaiChangeH) _stepentityh) ->Assigned_action(); + return ((SdaiChange_ptr) _app_inst) ->assigned_action_(); if( CurrentUnderlyingType () == config_control_designe_start_work ) // START_WORK - return ((SdaiStart_workH) _stepentityh) ->Assigned_action(); + return ((SdaiStart_work_ptr) _app_inst) ->assigned_action_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiPerson_organization_item::Assigned_action (SdaiActionH x) +SdaiPerson_organization_item::assigned_action_ (const SdaiAction_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_change ) // CHANGE - { ((SdaiChangeH) _stepentityh) ->Assigned_action( x ); + { ((SdaiChange_ptr) _app_inst) ->assigned_action_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_start_work ) // START_WORK - { ((SdaiStart_workH) _stepentityh) ->Assigned_action( x ); + { ((SdaiStart_work_ptr) _app_inst) ->assigned_action_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } // part 4 -SdaiPerson_organization_item& SdaiPerson_organization_item::operator =( const SdaiChangeH& o ) +SdaiPerson_organization_item& SdaiPerson_organization_item::operator =( const SdaiChange_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_change); return *this; } -SdaiPerson_organization_item& SdaiPerson_organization_item::operator =( const SdaiStart_workH& o ) +SdaiPerson_organization_item& SdaiPerson_organization_item::operator =( const SdaiStart_work_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_start_work); return *this; } -SdaiPerson_organization_item& SdaiPerson_organization_item::operator =( const SdaiChange_requestH& o ) +SdaiPerson_organization_item& SdaiPerson_organization_item::operator =( const SdaiChange_request_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_change_request); return *this; } -SdaiPerson_organization_item& SdaiPerson_organization_item::operator =( const SdaiStart_requestH& o ) +SdaiPerson_organization_item& SdaiPerson_organization_item::operator =( const SdaiStart_request_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_start_request); return *this; } -SdaiPerson_organization_item& SdaiPerson_organization_item::operator =( const SdaiConfiguration_itemH& o ) +SdaiPerson_organization_item& SdaiPerson_organization_item::operator =( const SdaiConfiguration_item_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_configuration_item); return *this; } -SdaiPerson_organization_item& SdaiPerson_organization_item::operator =( const SdaiProductH& o ) +SdaiPerson_organization_item& SdaiPerson_organization_item::operator =( const SdaiProduct_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_product); return *this; } -SdaiPerson_organization_item& SdaiPerson_organization_item::operator =( const SdaiProduct_definition_formationH& o ) +SdaiPerson_organization_item& SdaiPerson_organization_item::operator =( const SdaiProduct_definition_formation_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_product_definition_formation); return *this; } -SdaiPerson_organization_item& SdaiPerson_organization_item::operator =( const SdaiProduct_definitionH& o ) +SdaiPerson_organization_item& SdaiPerson_organization_item::operator =( const SdaiProduct_definition_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_product_definition); return *this; } -SdaiPerson_organization_item& SdaiPerson_organization_item::operator =( const SdaiContractH& o ) +SdaiPerson_organization_item& SdaiPerson_organization_item::operator =( const SdaiContract_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_contract); return *this; } -SdaiPerson_organization_item& SdaiPerson_organization_item::operator =( const SdaiSecurity_classificationH& o ) +SdaiPerson_organization_item& SdaiPerson_organization_item::operator =( const SdaiSecurity_classification_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_security_classification); return *this; } @@ -7020,147 +11056,156 @@ SdaiPerson_organization_item& SdaiPerson_organization_item::operator =( const Sd #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiPerson_organization_item& SdaiPerson_organization_item::operator =( const SdaiPerson_organization_itemH& o ) + +SdaiPerson_organization_item& SdaiPerson_organization_item::operator =( const SdaiPerson_organization_item_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designe_change ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_start_work ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_change_request ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_start_request ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_configuration_item ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_product ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_product_definition_formation ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_product_definition ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_contract ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_security_classification ) - _stepentityh = o -> _stepentityh; + if ( o -> CurrentUnderlyingType () == config_control_designe_change ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_start_work ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_change_request ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_start_request ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_configuration_item ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_product ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_product_definition_formation ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_product_definition ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_contract ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_security_classification ) + _app_inst = o -> _app_inst; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiPerson_organization_item::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiPerson_organization_item::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designe_change ) - _stepentityh = ((SdaiPerson_organization_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_start_work ) - _stepentityh = ((SdaiPerson_organization_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_change_request ) - _stepentityh = ((SdaiPerson_organization_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_start_request ) - _stepentityh = ((SdaiPerson_organization_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_configuration_item ) - _stepentityh = ((SdaiPerson_organization_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_product ) - _stepentityh = ((SdaiPerson_organization_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_product_definition_formation ) - _stepentityh = ((SdaiPerson_organization_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_product_definition ) - _stepentityh = ((SdaiPerson_organization_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_contract ) - _stepentityh = ((SdaiPerson_organization_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_security_classification ) - _stepentityh = ((SdaiPerson_organization_item&) o)._stepentityh; + if ( o.CurrentUnderlyingType () == config_control_designe_change ) + _app_inst = ((SdaiPerson_organization_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_start_work ) + _app_inst = ((SdaiPerson_organization_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_change_request ) + _app_inst = ((SdaiPerson_organization_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_start_request ) + _app_inst = ((SdaiPerson_organization_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_configuration_item ) + _app_inst = ((SdaiPerson_organization_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_product ) + _app_inst = ((SdaiPerson_organization_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_product_definition_formation ) + _app_inst = ((SdaiPerson_organization_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_product_definition ) + _app_inst = ((SdaiPerson_organization_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_contract ) + _app_inst = ((SdaiPerson_organization_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_security_classification ) + _app_inst = ((SdaiPerson_organization_item&) o)._app_inst; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiPerson_organization_item::IsChange() const +SCLLOG(Logical) SdaiPerson_organization_item::IsChange() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_change ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiPerson_organization_item::IsStart_work() const +SCLLOG(Logical) SdaiPerson_organization_item::IsStart_work() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_start_work ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiPerson_organization_item::IsChange_request() const +SCLLOG(Logical) SdaiPerson_organization_item::IsChange_request() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_change_request ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiPerson_organization_item::IsStart_request() const +SCLLOG(Logical) SdaiPerson_organization_item::IsStart_request() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_start_request ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiPerson_organization_item::IsConfiguration_item() const +SCLLOG(Logical) SdaiPerson_organization_item::IsConfiguration_item() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_configuration_item ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiPerson_organization_item::IsProduct() const +SCLLOG(Logical) SdaiPerson_organization_item::IsProduct() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_product ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiPerson_organization_item::IsProduct_definition_formation() const +SCLLOG(Logical) SdaiPerson_organization_item::IsProduct_definition_formation() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiPerson_organization_item::IsProduct_definition() const +SCLLOG(Logical) SdaiPerson_organization_item::IsProduct_definition() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_product_definition ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiPerson_organization_item::IsContract() const +SCLLOG(Logical) SdaiPerson_organization_item::IsContract() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_contract ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiPerson_organization_item::IsSecurity_classification() const +SCLLOG(Logical) SdaiPerson_organization_item::IsSecurity_classification() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_security_classification ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } ////////// END SELECT TYPE SdaiPerson_organization_item @@ -7169,103 +11214,213 @@ SdaiLogical SdaiPerson_organization_item::IsSecurity_classification() const ////////// SELECT TYPE date_time_item const TypeDescriptor * -SdaiDate_time_item::AssignEntity (STEPentity * se) +SdaiDate_time_item::AssignEntity (SCLP23(Application_instance) * se) { // PRODUCT_DEFINITION - if (se -> eDesc -> IsA (config_control_designe_product_definition)) + if (se -> IsA (config_control_designe_product_definition)) { - _stepentityh = (SdaiProduct_definitionH) se; + _app_inst = (SdaiProduct_definition_ptr) se; return SetUnderlyingType (config_control_designe_product_definition); } // CHANGE_REQUEST - if (se -> eDesc -> IsA (config_control_designe_change_request)) + if (se -> IsA (config_control_designe_change_request)) { - _stepentityh = (SdaiChange_requestH) se; + _app_inst = (SdaiChange_request_ptr) se; return SetUnderlyingType (config_control_designe_change_request); } // START_REQUEST - if (se -> eDesc -> IsA (config_control_designe_start_request)) + if (se -> IsA (config_control_designe_start_request)) { - _stepentityh = (SdaiStart_requestH) se; + _app_inst = (SdaiStart_request_ptr) se; return SetUnderlyingType (config_control_designe_start_request); } // CHANGE - if (se -> eDesc -> IsA (config_control_designe_change)) + if (se -> IsA (config_control_designe_change)) { - _stepentityh = (SdaiChangeH) se; + _app_inst = (SdaiChange_ptr) se; return SetUnderlyingType (config_control_designe_change); } // START_WORK - if (se -> eDesc -> IsA (config_control_designe_start_work)) + if (se -> IsA (config_control_designe_start_work)) { - _stepentityh = (SdaiStart_workH) se; + _app_inst = (SdaiStart_work_ptr) se; return SetUnderlyingType (config_control_designe_start_work); } // APPROVAL_PERSON_ORGANIZATION - if (se -> eDesc -> IsA (config_control_designe_approval_person_organization)) + if (se -> IsA (config_control_designe_approval_person_organization)) { - _stepentityh = (SdaiApproval_person_organizationH) se; + _app_inst = (SdaiApproval_person_organization_ptr) se; return SetUnderlyingType (config_control_designe_approval_person_organization); } // CONTRACT - if (se -> eDesc -> IsA (config_control_designe_contract)) + if (se -> IsA (config_control_designe_contract)) { - _stepentityh = (SdaiContractH) se; + _app_inst = (SdaiContract_ptr) se; return SetUnderlyingType (config_control_designe_contract); } // SECURITY_CLASSIFICATION - if (se -> eDesc -> IsA (config_control_designe_security_classification)) + if (se -> IsA (config_control_designe_security_classification)) { - _stepentityh = (SdaiSecurity_classificationH) se; + _app_inst = (SdaiSecurity_classification_ptr) se; return SetUnderlyingType (config_control_designe_security_classification); } // CERTIFICATION - if (se -> eDesc -> IsA (config_control_designe_certification)) + if (se -> IsA (config_control_designe_certification)) { - _stepentityh = (SdaiCertificationH) se; + _app_inst = (SdaiCertification_ptr) se; return SetUnderlyingType (config_control_designe_certification); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiDate_time_item::NewSelect () { - SdaiDate_time_item * tmp = new SdaiDate_time_item (); - return tmp; +#ifdef __OSTORE__ + SdaiDate_time_item * tmp = + new( os_segment::of(this), + SdaiDate_time_item::get_os_typespec() ) + SdaiDate_time_item(); +#else + SdaiDate_time_item * tmp = new SdaiDate_time_item(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiDate_time_item::STEPwrite_content (G4std::ostream& out) const +SdaiDate_time_item::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designe_product_definition) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_change_request) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_start_request) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_change) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_start_work) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_approval_person_organization) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_contract) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_security_classification) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_certification) - _stepentityh -> STEPwrite_reference (out); - else { + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_change_request) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_start_request) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_change) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_start_work) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_approval_person_organization) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_contract) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_security_classification) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_certification) + _app_inst -> STEPwrite_reference (out); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiDate_time_item::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designe_product_definition) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_change_request) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_start_request) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_change) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_start_work) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_approval_person_organization) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_contract) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_security_classification) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_certification) + return sdaiINSTANCE; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiDate_time_item::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designe_product_definition) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_change_request) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_start_request) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_change) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_start_work) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_approval_person_organization) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_contract) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_security_classification) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_certification) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -7273,138 +11428,131 @@ SdaiDate_time_item::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiDate_time_item::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiDate_time_item::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designe_product_definition) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_change_request) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_start_request) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_change) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_start_work) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_approval_person_organization) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_contract) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_security_classification) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_certification) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -7416,11 +11564,12 @@ Severity SdaiDate_time_item::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -7432,443 +11581,654 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiDate_time_item (os_database *db) +{ + return new (db, SdaiDate_time_item::get_os_typespec()) + SdaiDate_time_item ; +} + +void +SdaiDate_time_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiDate_time_item access hook funct called." << G4endl; + } +#endif + SdaiDate_time_item *s = (SdaiDate_time_item *) object; + s->_type = config_control_designt_date_time_item; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiDate_time_items (os_database *db) +{ + return new (db, SdaiDate_time_items::get_os_typespec()) + SdaiDate_time_items ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiDate_time_item::SdaiDate_time_item() - : SdaiSelect (config_control_designt_date_time_item) +SdaiDate_time_item::SdaiDate_time_item( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiDate_time_item constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiDate_time_item constructor." << G4endl; + } +#endif } // part 1 -SdaiDate_time_item::SdaiDate_time_item( const SdaiProduct_definitionH& o ) - : SdaiSelect (config_control_designt_date_time_item, config_control_designe_product_definition ) +SdaiDate_time_item::SdaiDate_time_item( const SdaiProduct_definition_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_product_definition) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiDate_time_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiDate_time_item constructor." << G4endl; + } +#endif } -SdaiDate_time_item::SdaiDate_time_item( const SdaiChange_requestH& o ) - : SdaiSelect (config_control_designt_date_time_item, config_control_designe_change_request ) +SdaiDate_time_item::SdaiDate_time_item( const SdaiChange_request_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_change_request) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiDate_time_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiDate_time_item constructor." << G4endl; + } +#endif } -SdaiDate_time_item::SdaiDate_time_item( const SdaiStart_requestH& o ) - : SdaiSelect (config_control_designt_date_time_item, config_control_designe_start_request ) +SdaiDate_time_item::SdaiDate_time_item( const SdaiStart_request_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_start_request) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiDate_time_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiDate_time_item constructor." << G4endl; + } +#endif } -SdaiDate_time_item::SdaiDate_time_item( const SdaiChangeH& o ) - : SdaiSelect (config_control_designt_date_time_item, config_control_designe_change ) +SdaiDate_time_item::SdaiDate_time_item( const SdaiChange_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_change) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiDate_time_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiDate_time_item constructor." << G4endl; + } +#endif } -SdaiDate_time_item::SdaiDate_time_item( const SdaiStart_workH& o ) - : SdaiSelect (config_control_designt_date_time_item, config_control_designe_start_work ) +SdaiDate_time_item::SdaiDate_time_item( const SdaiStart_work_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_start_work) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiDate_time_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiDate_time_item constructor." << G4endl; + } +#endif } -SdaiDate_time_item::SdaiDate_time_item( const SdaiApproval_person_organizationH& o ) - : SdaiSelect (config_control_designt_date_time_item, config_control_designe_approval_person_organization ) +SdaiDate_time_item::SdaiDate_time_item( const SdaiApproval_person_organization_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_approval_person_organization) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiDate_time_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiDate_time_item constructor." << G4endl; + } +#endif } -SdaiDate_time_item::SdaiDate_time_item( const SdaiContractH& o ) - : SdaiSelect (config_control_designt_date_time_item, config_control_designe_contract ) +SdaiDate_time_item::SdaiDate_time_item( const SdaiContract_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_contract) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiDate_time_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiDate_time_item constructor." << G4endl; + } +#endif } -SdaiDate_time_item::SdaiDate_time_item( const SdaiSecurity_classificationH& o ) - : SdaiSelect (config_control_designt_date_time_item, config_control_designe_security_classification ) +SdaiDate_time_item::SdaiDate_time_item( const SdaiSecurity_classification_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_security_classification) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiDate_time_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiDate_time_item constructor." << G4endl; + } +#endif } -SdaiDate_time_item::SdaiDate_time_item( const SdaiCertificationH& o ) - : SdaiSelect (config_control_designt_date_time_item, config_control_designe_certification ) +SdaiDate_time_item::SdaiDate_time_item( const SdaiCertification_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_certification) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiDate_time_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiDate_time_item constructor." << G4endl; + } +#endif } SdaiDate_time_item::~SdaiDate_time_item() { } +SdaiDate_time_items::SdaiDate_time_items( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiDate_time_items::~SdaiDate_time_items() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiDate_time_items::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiDate_time_item::get_os_typespec() ) + SdaiDate_time_item ); +} +#endif + // part 2 -SdaiDate_time_item::operator SdaiProduct_definitionH() +SdaiDate_time_item::operator SdaiProduct_definition_ptr() { if( CurrentUnderlyingType () == config_control_designe_product_definition ) - return ((SdaiProduct_definitionH) _stepentityh); + return ((SdaiProduct_definition_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiDate_time_item::operator SdaiChange_requestH() +SdaiDate_time_item::operator SdaiChange_request_ptr() { if( CurrentUnderlyingType () == config_control_designe_change_request ) - return ((SdaiChange_requestH) _stepentityh); + return ((SdaiChange_request_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiDate_time_item::operator SdaiStart_requestH() +SdaiDate_time_item::operator SdaiStart_request_ptr() { if( CurrentUnderlyingType () == config_control_designe_start_request ) - return ((SdaiStart_requestH) _stepentityh); + return ((SdaiStart_request_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiDate_time_item::operator SdaiChangeH() +SdaiDate_time_item::operator SdaiChange_ptr() { if( CurrentUnderlyingType () == config_control_designe_change ) - return ((SdaiChangeH) _stepentityh); + return ((SdaiChange_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiDate_time_item::operator SdaiStart_workH() +SdaiDate_time_item::operator SdaiStart_work_ptr() { if( CurrentUnderlyingType () == config_control_designe_start_work ) - return ((SdaiStart_workH) _stepentityh); + return ((SdaiStart_work_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiDate_time_item::operator SdaiApproval_person_organizationH() +SdaiDate_time_item::operator SdaiApproval_person_organization_ptr() { if( CurrentUnderlyingType () == config_control_designe_approval_person_organization ) - return ((SdaiApproval_person_organizationH) _stepentityh); + return ((SdaiApproval_person_organization_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiDate_time_item::operator SdaiContractH() +SdaiDate_time_item::operator SdaiContract_ptr() { if( CurrentUnderlyingType () == config_control_designe_contract ) - return ((SdaiContractH) _stepentityh); + return ((SdaiContract_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiDate_time_item::operator SdaiSecurity_classificationH() +SdaiDate_time_item::operator SdaiSecurity_classification_ptr() { if( CurrentUnderlyingType () == config_control_designe_security_classification ) - return ((SdaiSecurity_classificationH) _stepentityh); + return ((SdaiSecurity_classification_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiDate_time_item::operator SdaiCertificationH() +SdaiDate_time_item::operator SdaiCertification_ptr() { if( CurrentUnderlyingType () == config_control_designe_certification ) - return ((SdaiCertificationH) _stepentityh); + return ((SdaiCertification_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } // part 3 -SdaiSecurity_classification_levelH -SdaiDate_time_item::Security_level() const +const SdaiSecurity_classification_level_ptr +SdaiDate_time_item::security_level_() const { if( CurrentUnderlyingType () == config_control_designe_security_classification ) // SECURITY_CLASSIFICATION - return ((SdaiSecurity_classificationH) _stepentityh) ->Security_level(); + return ((SdaiSecurity_classification_ptr) _app_inst) ->security_level_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiDate_time_item::Security_level (SdaiSecurity_classification_levelH x) +SdaiDate_time_item::security_level_ (const SdaiSecurity_classification_level_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_security_classification ) // SECURITY_CLASSIFICATION - { ((SdaiSecurity_classificationH) _stepentityh) ->Security_level( x ); + { ((SdaiSecurity_classification_ptr) _app_inst) ->security_level_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiContract_typeH -SdaiDate_time_item::Kind() const +const SdaiContract_type_ptr +SdaiDate_time_item::kind_() const { if( CurrentUnderlyingType () == config_control_designe_contract ) // CONTRACT - return ((SdaiContractH) _stepentityh) ->Kind(); + return ((SdaiContract_ptr) _app_inst) ->kind_(); // CERTIFICATION // attribute access function has a different return type G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiDate_time_item::Kind (SdaiContract_typeH x) +SdaiDate_time_item::kind_ (const SdaiContract_type_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_contract ) // CONTRACT - { ((SdaiContractH) _stepentityh) ->Kind( x ); + { ((SdaiContract_ptr) _app_inst) ->kind_( x ); return; } // for CERTIFICATION attribute access function has a different argument type - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiText -SdaiDate_time_item::Purpose() const +SdaiDate_time_item::purpose_() const { if( CurrentUnderlyingType () == config_control_designe_contract ) // CONTRACT - return ((SdaiContractH) _stepentityh) ->Purpose(); + return ((SdaiContract_ptr) _app_inst) ->purpose_(); if( CurrentUnderlyingType () == config_control_designe_security_classification ) // SECURITY_CLASSIFICATION - return ((SdaiSecurity_classificationH) _stepentityh) ->Purpose(); + return ((SdaiSecurity_classification_ptr) _app_inst) ->purpose_(); if( CurrentUnderlyingType () == config_control_designe_certification ) // CERTIFICATION - return ((SdaiCertificationH) _stepentityh) ->Purpose(); + return ((SdaiCertification_ptr) _app_inst) ->purpose_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiDate_time_item::Purpose (const char * x) +SdaiDate_time_item::purpose_ (const SdaiText x) + { if( CurrentUnderlyingType () == config_control_designe_contract ) // CONTRACT - { ((SdaiContractH) _stepentityh) ->Purpose( x ); + { ((SdaiContract_ptr) _app_inst) ->purpose_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_security_classification ) // SECURITY_CLASSIFICATION - { ((SdaiSecurity_classificationH) _stepentityh) ->Purpose( x ); + { ((SdaiSecurity_classification_ptr) _app_inst) ->purpose_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_certification ) // CERTIFICATION - { ((SdaiCertificationH) _stepentityh) ->Purpose( x ); + { ((SdaiCertification_ptr) _app_inst) ->purpose_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiLabel -SdaiDate_time_item::Name() const +SdaiDate_time_item::name_() const { if( CurrentUnderlyingType () == config_control_designe_contract ) // CONTRACT - return ((SdaiContractH) _stepentityh) ->Name(); + return ((SdaiContract_ptr) _app_inst) ->name_(); if( CurrentUnderlyingType () == config_control_designe_security_classification ) // SECURITY_CLASSIFICATION - return ((SdaiSecurity_classificationH) _stepentityh) ->Name(); + return ((SdaiSecurity_classification_ptr) _app_inst) ->name_(); if( CurrentUnderlyingType () == config_control_designe_certification ) // CERTIFICATION - return ((SdaiCertificationH) _stepentityh) ->Name(); + return ((SdaiCertification_ptr) _app_inst) ->name_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiDate_time_item::Name (const char * x) +SdaiDate_time_item::name_ (const SdaiLabel x) + { if( CurrentUnderlyingType () == config_control_designe_contract ) // CONTRACT - { ((SdaiContractH) _stepentityh) ->Name( x ); + { ((SdaiContract_ptr) _app_inst) ->name_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_security_classification ) // SECURITY_CLASSIFICATION - { ((SdaiSecurity_classificationH) _stepentityh) ->Name( x ); + { ((SdaiSecurity_classification_ptr) _app_inst) ->name_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_certification ) // CERTIFICATION - { ((SdaiCertificationH) _stepentityh) ->Name( x ); + { ((SdaiCertification_ptr) _app_inst) ->name_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiApproval_roleH -SdaiDate_time_item::Role() const +const SdaiApproval_role_ptr +SdaiDate_time_item::role_() const { if( CurrentUnderlyingType () == config_control_designe_approval_person_organization ) // APPROVAL_PERSON_ORGANIZATION - return ((SdaiApproval_person_organizationH) _stepentityh) ->Role(); + return ((SdaiApproval_person_organization_ptr) _app_inst) ->role_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiDate_time_item::Role (SdaiApproval_roleH x) +SdaiDate_time_item::role_ (const SdaiApproval_role_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_approval_person_organization ) // APPROVAL_PERSON_ORGANIZATION - { ((SdaiApproval_person_organizationH) _stepentityh) ->Role( x ); + { ((SdaiApproval_person_organization_ptr) _app_inst) ->role_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiApprovalH -SdaiDate_time_item::Authorized_approval() const +const SdaiApproval_ptr +SdaiDate_time_item::authorized_approval_() const { if( CurrentUnderlyingType () == config_control_designe_approval_person_organization ) // APPROVAL_PERSON_ORGANIZATION - return ((SdaiApproval_person_organizationH) _stepentityh) ->Authorized_approval(); + return ((SdaiApproval_person_organization_ptr) _app_inst) ->authorized_approval_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiDate_time_item::Authorized_approval (SdaiApprovalH x) +SdaiDate_time_item::authorized_approval_ (const SdaiApproval_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_approval_person_organization ) // APPROVAL_PERSON_ORGANIZATION - { ((SdaiApproval_person_organizationH) _stepentityh) ->Authorized_approval( x ); + { ((SdaiApproval_person_organization_ptr) _app_inst) ->authorized_approval_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -const SdaiPerson_organization_selectH -SdaiDate_time_item::Person_organization() const +const SdaiPerson_organization_select_ptr +SdaiDate_time_item::person_organization_() const { if( CurrentUnderlyingType () == config_control_designe_approval_person_organization ) // APPROVAL_PERSON_ORGANIZATION - return ((SdaiApproval_person_organizationH) _stepentityh) ->Person_organization(); + return ((SdaiApproval_person_organization_ptr) _app_inst) ->person_organization_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiDate_time_item::Person_organization (SdaiPerson_organization_selectH x) +SdaiDate_time_item::person_organization_ (const SdaiPerson_organization_select_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_approval_person_organization ) // APPROVAL_PERSON_ORGANIZATION - { ((SdaiApproval_person_organizationH) _stepentityh) ->Person_organization( x ); + { ((SdaiApproval_person_organization_ptr) _app_inst) ->person_organization_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiActionH -SdaiDate_time_item::Assigned_action() const +const SdaiAction_ptr +SdaiDate_time_item::assigned_action_() const { if( CurrentUnderlyingType () == config_control_designe_change ) // CHANGE - return ((SdaiChangeH) _stepentityh) ->Assigned_action(); + return ((SdaiChange_ptr) _app_inst) ->assigned_action_(); if( CurrentUnderlyingType () == config_control_designe_start_work ) // START_WORK - return ((SdaiStart_workH) _stepentityh) ->Assigned_action(); + return ((SdaiStart_work_ptr) _app_inst) ->assigned_action_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiDate_time_item::Assigned_action (SdaiActionH x) +SdaiDate_time_item::assigned_action_ (const SdaiAction_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_change ) // CHANGE - { ((SdaiChangeH) _stepentityh) ->Assigned_action( x ); + { ((SdaiChange_ptr) _app_inst) ->assigned_action_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_start_work ) // START_WORK - { ((SdaiStart_workH) _stepentityh) ->Assigned_action( x ); + { ((SdaiStart_work_ptr) _app_inst) ->assigned_action_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -const SdaiChange_request_itemsH -SdaiDate_time_item::Items() const +const SdaiChange_request_items_ptr +SdaiDate_time_item::items_() const { if( CurrentUnderlyingType () == config_control_designe_change_request ) // CHANGE_REQUEST - return ((SdaiChange_requestH) _stepentityh) ->Items(); + return ((SdaiChange_request_ptr) _app_inst) ->items_(); // START_REQUEST // attribute access function has a different return type // CHANGE @@ -7877,240 +12237,246 @@ SdaiDate_time_item::Items() const // attribute access function has a different return type G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiDate_time_item::Items (SdaiChange_request_itemsH x) +SdaiDate_time_item::items_ (const SdaiChange_request_items_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_change_request ) // CHANGE_REQUEST - { ((SdaiChange_requestH) _stepentityh) ->Items( x ); + { ((SdaiChange_request_ptr) _app_inst) ->items_( x ); return; } // for START_REQUEST attribute access function has a different argument type // for CHANGE attribute access function has a different argument type // for START_WORK attribute access function has a different argument type - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiVersioned_action_requestH -SdaiDate_time_item::Assigned_action_request() const +const SdaiVersioned_action_request_ptr +SdaiDate_time_item::assigned_action_request_() const { if( CurrentUnderlyingType () == config_control_designe_change_request ) // CHANGE_REQUEST - return ((SdaiChange_requestH) _stepentityh) ->Assigned_action_request(); + return ((SdaiChange_request_ptr) _app_inst) ->assigned_action_request_(); if( CurrentUnderlyingType () == config_control_designe_start_request ) // START_REQUEST - return ((SdaiStart_requestH) _stepentityh) ->Assigned_action_request(); + return ((SdaiStart_request_ptr) _app_inst) ->assigned_action_request_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiDate_time_item::Assigned_action_request (SdaiVersioned_action_requestH x) +SdaiDate_time_item::assigned_action_request_ (const SdaiVersioned_action_request_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_change_request ) // CHANGE_REQUEST - { ((SdaiChange_requestH) _stepentityh) ->Assigned_action_request( x ); + { ((SdaiChange_request_ptr) _app_inst) ->assigned_action_request_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_start_request ) // START_REQUEST - { ((SdaiStart_requestH) _stepentityh) ->Assigned_action_request( x ); + { ((SdaiStart_request_ptr) _app_inst) ->assigned_action_request_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiProduct_definition_contextH -SdaiDate_time_item::Frame_of_reference() const +const SdaiProduct_definition_context_ptr +SdaiDate_time_item::frame_of_reference_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - return ((SdaiProduct_definitionH) _stepentityh) ->Frame_of_reference(); + return ((SdaiProduct_definition_ptr) _app_inst) ->frame_of_reference_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiDate_time_item::Frame_of_reference (SdaiProduct_definition_contextH x) +SdaiDate_time_item::frame_of_reference_ (const SdaiProduct_definition_context_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - { ((SdaiProduct_definitionH) _stepentityh) ->Frame_of_reference( x ); + { ((SdaiProduct_definition_ptr) _app_inst) ->frame_of_reference_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiProduct_definition_formationH -SdaiDate_time_item::Formation() const +const SdaiProduct_definition_formation_ptr +SdaiDate_time_item::formation_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - return ((SdaiProduct_definitionH) _stepentityh) ->Formation(); + return ((SdaiProduct_definition_ptr) _app_inst) ->formation_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiDate_time_item::Formation (SdaiProduct_definition_formationH x) +SdaiDate_time_item::formation_ (const SdaiProduct_definition_formation_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - { ((SdaiProduct_definitionH) _stepentityh) ->Formation( x ); + { ((SdaiProduct_definition_ptr) _app_inst) ->formation_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiText -SdaiDate_time_item::Description() const +SdaiDate_time_item::description_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - return ((SdaiProduct_definitionH) _stepentityh) ->Description(); + return ((SdaiProduct_definition_ptr) _app_inst) ->description_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiDate_time_item::Description (const char * x) +SdaiDate_time_item::description_ (const SdaiText x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - { ((SdaiProduct_definitionH) _stepentityh) ->Description( x ); + { ((SdaiProduct_definition_ptr) _app_inst) ->description_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiIdentifier -SdaiDate_time_item::Id() const +SdaiDate_time_item::id_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - return ((SdaiProduct_definitionH) _stepentityh) ->Id(); + return ((SdaiProduct_definition_ptr) _app_inst) ->id_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiDate_time_item::Id (const char * x) +SdaiDate_time_item::id_ (const SdaiIdentifier x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - { ((SdaiProduct_definitionH) _stepentityh) ->Id( x ); + { ((SdaiProduct_definition_ptr) _app_inst) ->id_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } // part 4 -SdaiDate_time_item& SdaiDate_time_item::operator =( const SdaiProduct_definitionH& o ) +SdaiDate_time_item& SdaiDate_time_item::operator =( const SdaiProduct_definition_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_product_definition); return *this; } -SdaiDate_time_item& SdaiDate_time_item::operator =( const SdaiChange_requestH& o ) +SdaiDate_time_item& SdaiDate_time_item::operator =( const SdaiChange_request_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_change_request); return *this; } -SdaiDate_time_item& SdaiDate_time_item::operator =( const SdaiStart_requestH& o ) +SdaiDate_time_item& SdaiDate_time_item::operator =( const SdaiStart_request_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_start_request); return *this; } -SdaiDate_time_item& SdaiDate_time_item::operator =( const SdaiChangeH& o ) +SdaiDate_time_item& SdaiDate_time_item::operator =( const SdaiChange_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_change); return *this; } -SdaiDate_time_item& SdaiDate_time_item::operator =( const SdaiStart_workH& o ) +SdaiDate_time_item& SdaiDate_time_item::operator =( const SdaiStart_work_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_start_work); return *this; } -SdaiDate_time_item& SdaiDate_time_item::operator =( const SdaiApproval_person_organizationH& o ) +SdaiDate_time_item& SdaiDate_time_item::operator =( const SdaiApproval_person_organization_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_approval_person_organization); return *this; } -SdaiDate_time_item& SdaiDate_time_item::operator =( const SdaiContractH& o ) +SdaiDate_time_item& SdaiDate_time_item::operator =( const SdaiContract_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_contract); return *this; } -SdaiDate_time_item& SdaiDate_time_item::operator =( const SdaiSecurity_classificationH& o ) +SdaiDate_time_item& SdaiDate_time_item::operator =( const SdaiSecurity_classification_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_security_classification); return *this; } -SdaiDate_time_item& SdaiDate_time_item::operator =( const SdaiCertificationH& o ) +SdaiDate_time_item& SdaiDate_time_item::operator =( const SdaiCertification_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_certification); return *this; } @@ -8118,134 +12484,143 @@ SdaiDate_time_item& SdaiDate_time_item::operator =( const SdaiCertificationH& o #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiDate_time_item& SdaiDate_time_item::operator =( const SdaiDate_time_itemH& o ) + +SdaiDate_time_item& SdaiDate_time_item::operator =( const SdaiDate_time_item_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designe_product_definition ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_change_request ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_start_request ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_change ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_start_work ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_approval_person_organization ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_contract ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_security_classification ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_certification ) - _stepentityh = o -> _stepentityh; + if ( o -> CurrentUnderlyingType () == config_control_designe_product_definition ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_change_request ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_start_request ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_change ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_start_work ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_approval_person_organization ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_contract ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_security_classification ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_certification ) + _app_inst = o -> _app_inst; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiDate_time_item::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiDate_time_item::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designe_product_definition ) - _stepentityh = ((SdaiDate_time_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_change_request ) - _stepentityh = ((SdaiDate_time_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_start_request ) - _stepentityh = ((SdaiDate_time_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_change ) - _stepentityh = ((SdaiDate_time_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_start_work ) - _stepentityh = ((SdaiDate_time_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_approval_person_organization ) - _stepentityh = ((SdaiDate_time_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_contract ) - _stepentityh = ((SdaiDate_time_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_security_classification ) - _stepentityh = ((SdaiDate_time_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_certification ) - _stepentityh = ((SdaiDate_time_item&) o)._stepentityh; + if ( o.CurrentUnderlyingType () == config_control_designe_product_definition ) + _app_inst = ((SdaiDate_time_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_change_request ) + _app_inst = ((SdaiDate_time_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_start_request ) + _app_inst = ((SdaiDate_time_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_change ) + _app_inst = ((SdaiDate_time_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_start_work ) + _app_inst = ((SdaiDate_time_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_approval_person_organization ) + _app_inst = ((SdaiDate_time_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_contract ) + _app_inst = ((SdaiDate_time_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_security_classification ) + _app_inst = ((SdaiDate_time_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_certification ) + _app_inst = ((SdaiDate_time_item&) o)._app_inst; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiDate_time_item::IsProduct_definition() const +SCLLOG(Logical) SdaiDate_time_item::IsProduct_definition() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_product_definition ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiDate_time_item::IsChange_request() const +SCLLOG(Logical) SdaiDate_time_item::IsChange_request() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_change_request ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiDate_time_item::IsStart_request() const +SCLLOG(Logical) SdaiDate_time_item::IsStart_request() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_start_request ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiDate_time_item::IsChange() const +SCLLOG(Logical) SdaiDate_time_item::IsChange() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_change ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiDate_time_item::IsStart_work() const +SCLLOG(Logical) SdaiDate_time_item::IsStart_work() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_start_work ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiDate_time_item::IsApproval_person_organization() const +SCLLOG(Logical) SdaiDate_time_item::IsApproval_person_organization() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_approval_person_organization ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiDate_time_item::IsContract() const +SCLLOG(Logical) SdaiDate_time_item::IsContract() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_contract ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiDate_time_item::IsSecurity_classification() const +SCLLOG(Logical) SdaiDate_time_item::IsSecurity_classification() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_security_classification ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiDate_time_item::IsCertification() const +SCLLOG(Logical) SdaiDate_time_item::IsCertification() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_certification ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } ////////// END SELECT TYPE SdaiDate_time_item @@ -8254,63 +12629,133 @@ SdaiLogical SdaiDate_time_item::IsCertification() const ////////// SELECT TYPE shell const TypeDescriptor * -SdaiShell::AssignEntity (STEPentity * se) +SdaiShell::AssignEntity (SCLP23(Application_instance) * se) { // OPEN_SHELL - if (se -> eDesc -> IsA (config_control_designe_open_shell)) + if (se -> IsA (config_control_designe_open_shell)) { - _stepentityh = (SdaiOpen_shellH) se; + _app_inst = (SdaiOpen_shell_ptr) se; return SetUnderlyingType (config_control_designe_open_shell); } // CLOSED_SHELL - if (se -> eDesc -> IsA (config_control_designe_closed_shell)) + if (se -> IsA (config_control_designe_closed_shell)) { - _stepentityh = (SdaiClosed_shellH) se; + _app_inst = (SdaiClosed_shell_ptr) se; return SetUnderlyingType (config_control_designe_closed_shell); } // VERTEX_SHELL - if (se -> eDesc -> IsA (config_control_designe_vertex_shell)) + if (se -> IsA (config_control_designe_vertex_shell)) { - _stepentityh = (SdaiVertex_shellH) se; + _app_inst = (SdaiVertex_shell_ptr) se; return SetUnderlyingType (config_control_designe_vertex_shell); } // WIRE_SHELL - if (se -> eDesc -> IsA (config_control_designe_wire_shell)) + if (se -> IsA (config_control_designe_wire_shell)) { - _stepentityh = (SdaiWire_shellH) se; + _app_inst = (SdaiWire_shell_ptr) se; return SetUnderlyingType (config_control_designe_wire_shell); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiShell::NewSelect () { - SdaiShell * tmp = new SdaiShell (); - return tmp; +#ifdef __OSTORE__ + SdaiShell * tmp = + new( os_segment::of(this), + SdaiShell::get_os_typespec() ) + SdaiShell(); +#else + SdaiShell * tmp = new SdaiShell(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiShell::STEPwrite_content (G4std::ostream& out) const +SdaiShell::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designe_open_shell) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_closed_shell) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_vertex_shell) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_wire_shell) - _stepentityh -> STEPwrite_reference (out); - else { + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_closed_shell) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_vertex_shell) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_wire_shell) + _app_inst -> STEPwrite_reference (out); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiShell::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designe_open_shell) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_closed_shell) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_vertex_shell) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_wire_shell) + return sdaiINSTANCE; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiShell::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designe_open_shell) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_closed_shell) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_vertex_shell) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_wire_shell) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -8318,68 +12763,66 @@ SdaiShell::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiShell::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiShell::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designe_open_shell) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_closed_shell) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_vertex_shell) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_wire_shell) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -8391,11 +12834,12 @@ Severity SdaiShell::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -8407,262 +12851,399 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiShell (os_database *db) +{ + return new (db, SdaiShell::get_os_typespec()) + SdaiShell ; +} + +void +SdaiShell_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiShell access hook funct called." << G4endl; + } +#endif + SdaiShell *s = (SdaiShell *) object; + s->_type = config_control_designt_shell; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiShells (os_database *db) +{ + return new (db, SdaiShells::get_os_typespec()) + SdaiShells ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiShell::SdaiShell() - : SdaiSelect (config_control_designt_shell) +SdaiShell::SdaiShell( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiShell constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiShell constructor." << G4endl; + } +#endif } // part 1 -SdaiShell::SdaiShell( const SdaiOpen_shellH& o ) - : SdaiSelect (config_control_designt_shell, config_control_designe_open_shell ) +SdaiShell::SdaiShell( const SdaiOpen_shell_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_open_shell) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiShell constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiShell constructor." << G4endl; + } +#endif } -SdaiShell::SdaiShell( const SdaiClosed_shellH& o ) - : SdaiSelect (config_control_designt_shell, config_control_designe_closed_shell ) +SdaiShell::SdaiShell( const SdaiClosed_shell_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_closed_shell) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiShell constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiShell constructor." << G4endl; + } +#endif } -SdaiShell::SdaiShell( const SdaiVertex_shellH& o ) - : SdaiSelect (config_control_designt_shell, config_control_designe_vertex_shell ) +SdaiShell::SdaiShell( const SdaiVertex_shell_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_vertex_shell) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiShell constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiShell constructor." << G4endl; + } +#endif } -SdaiShell::SdaiShell( const SdaiWire_shellH& o ) - : SdaiSelect (config_control_designt_shell, config_control_designe_wire_shell ) +SdaiShell::SdaiShell( const SdaiWire_shell_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_wire_shell) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiShell constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiShell constructor." << G4endl; + } +#endif } SdaiShell::~SdaiShell() { } +SdaiShells::SdaiShells( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiShells::~SdaiShells() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiShells::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiShell::get_os_typespec() ) + SdaiShell ); +} +#endif + // part 2 -SdaiShell::operator SdaiOpen_shellH() +SdaiShell::operator SdaiOpen_shell_ptr() { if( CurrentUnderlyingType () == config_control_designe_open_shell ) - return ((SdaiOpen_shellH) _stepentityh); + return ((SdaiOpen_shell_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiShell::operator SdaiClosed_shellH() +SdaiShell::operator SdaiClosed_shell_ptr() { if( CurrentUnderlyingType () == config_control_designe_closed_shell ) - return ((SdaiClosed_shellH) _stepentityh); + return ((SdaiClosed_shell_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiShell::operator SdaiVertex_shellH() +SdaiShell::operator SdaiVertex_shell_ptr() { if( CurrentUnderlyingType () == config_control_designe_vertex_shell ) - return ((SdaiVertex_shellH) _stepentityh); + return ((SdaiVertex_shell_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiShell::operator SdaiWire_shellH() +SdaiShell::operator SdaiWire_shell_ptr() { if( CurrentUnderlyingType () == config_control_designe_wire_shell ) - return ((SdaiWire_shellH) _stepentityh); + return ((SdaiWire_shell_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } // part 3 -const EntityAggregateH -SdaiShell::Wire_shell_extent() const +const EntityAggregate_ptr +SdaiShell::wire_shell_extent_() const { if( CurrentUnderlyingType () == config_control_designe_wire_shell ) // WIRE_SHELL - return ((SdaiWire_shellH) _stepentityh) ->Wire_shell_extent(); + return ((SdaiWire_shell_ptr) _app_inst) ->wire_shell_extent_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiShell::Wire_shell_extent (EntityAggregateH x) +SdaiShell::wire_shell_extent_ (const EntityAggregate_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_wire_shell ) // WIRE_SHELL - { ((SdaiWire_shellH) _stepentityh) ->Wire_shell_extent( x ); + { ((SdaiWire_shell_ptr) _app_inst) ->wire_shell_extent_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiVertex_loopH -SdaiShell::Vertex_shell_extent() const +const SdaiVertex_loop_ptr +SdaiShell::vertex_shell_extent_() const { if( CurrentUnderlyingType () == config_control_designe_vertex_shell ) // VERTEX_SHELL - return ((SdaiVertex_shellH) _stepentityh) ->Vertex_shell_extent(); + return ((SdaiVertex_shell_ptr) _app_inst) ->vertex_shell_extent_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiShell::Vertex_shell_extent (SdaiVertex_loopH x) +SdaiShell::vertex_shell_extent_ (const SdaiVertex_loop_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_vertex_shell ) // VERTEX_SHELL - { ((SdaiVertex_shellH) _stepentityh) ->Vertex_shell_extent( x ); + { ((SdaiVertex_shell_ptr) _app_inst) ->vertex_shell_extent_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -const EntityAggregateH -SdaiShell::Cfs_faces() const +const EntityAggregate_ptr +SdaiShell::cfs_faces_() const { if( CurrentUnderlyingType () == config_control_designe_open_shell ) // OPEN_SHELL - return ((SdaiOpen_shellH) _stepentityh) ->Cfs_faces(); + return ((SdaiOpen_shell_ptr) _app_inst) ->cfs_faces_(); if( CurrentUnderlyingType () == config_control_designe_closed_shell ) // CLOSED_SHELL - return ((SdaiClosed_shellH) _stepentityh) ->Cfs_faces(); + return ((SdaiClosed_shell_ptr) _app_inst) ->cfs_faces_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiShell::Cfs_faces (EntityAggregateH x) +SdaiShell::cfs_faces_ (const EntityAggregate_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_open_shell ) // OPEN_SHELL - { ((SdaiOpen_shellH) _stepentityh) ->Cfs_faces( x ); + { ((SdaiOpen_shell_ptr) _app_inst) ->cfs_faces_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_closed_shell ) // CLOSED_SHELL - { ((SdaiClosed_shellH) _stepentityh) ->Cfs_faces( x ); + { ((SdaiClosed_shell_ptr) _app_inst) ->cfs_faces_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiLabel -SdaiShell::Name() const +SdaiShell::name_() const { if( CurrentUnderlyingType () == config_control_designe_open_shell ) // OPEN_SHELL - return ((SdaiOpen_shellH) _stepentityh) ->Name(); + return ((SdaiOpen_shell_ptr) _app_inst) ->name_(); if( CurrentUnderlyingType () == config_control_designe_closed_shell ) // CLOSED_SHELL - return ((SdaiClosed_shellH) _stepentityh) ->Name(); + return ((SdaiClosed_shell_ptr) _app_inst) ->name_(); if( CurrentUnderlyingType () == config_control_designe_vertex_shell ) // VERTEX_SHELL - return ((SdaiVertex_shellH) _stepentityh) ->Name(); + return ((SdaiVertex_shell_ptr) _app_inst) ->name_(); if( CurrentUnderlyingType () == config_control_designe_wire_shell ) // WIRE_SHELL - return ((SdaiWire_shellH) _stepentityh) ->Name(); + return ((SdaiWire_shell_ptr) _app_inst) ->name_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiShell::Name (const char * x) +SdaiShell::name_ (const SdaiLabel x) + { if( CurrentUnderlyingType () == config_control_designe_open_shell ) // OPEN_SHELL - { ((SdaiOpen_shellH) _stepentityh) ->Name( x ); + { ((SdaiOpen_shell_ptr) _app_inst) ->name_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_closed_shell ) // CLOSED_SHELL - { ((SdaiClosed_shellH) _stepentityh) ->Name( x ); + { ((SdaiClosed_shell_ptr) _app_inst) ->name_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_vertex_shell ) // VERTEX_SHELL - { ((SdaiVertex_shellH) _stepentityh) ->Name( x ); + { ((SdaiVertex_shell_ptr) _app_inst) ->name_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_wire_shell ) // WIRE_SHELL - { ((SdaiWire_shellH) _stepentityh) ->Name( x ); + { ((SdaiWire_shell_ptr) _app_inst) ->name_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } // part 4 -SdaiShell& SdaiShell::operator =( const SdaiOpen_shellH& o ) +SdaiShell& SdaiShell::operator =( const SdaiOpen_shell_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_open_shell); return *this; } -SdaiShell& SdaiShell::operator =( const SdaiClosed_shellH& o ) +SdaiShell& SdaiShell::operator =( const SdaiClosed_shell_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_closed_shell); return *this; } -SdaiShell& SdaiShell::operator =( const SdaiVertex_shellH& o ) +SdaiShell& SdaiShell::operator =( const SdaiVertex_shell_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_vertex_shell); return *this; } -SdaiShell& SdaiShell::operator =( const SdaiWire_shellH& o ) +SdaiShell& SdaiShell::operator =( const SdaiWire_shell_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_wire_shell); return *this; } @@ -8670,69 +13251,78 @@ SdaiShell& SdaiShell::operator =( const SdaiWire_shellH& o ) #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiShell& SdaiShell::operator =( const SdaiShellH& o ) + +SdaiShell& SdaiShell::operator =( const SdaiShell_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designe_open_shell ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_closed_shell ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_vertex_shell ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_wire_shell ) - _stepentityh = o -> _stepentityh; + if ( o -> CurrentUnderlyingType () == config_control_designe_open_shell ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_closed_shell ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_vertex_shell ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_wire_shell ) + _app_inst = o -> _app_inst; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiShell::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiShell::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designe_open_shell ) - _stepentityh = ((SdaiShell&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_closed_shell ) - _stepentityh = ((SdaiShell&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_vertex_shell ) - _stepentityh = ((SdaiShell&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_wire_shell ) - _stepentityh = ((SdaiShell&) o)._stepentityh; + if ( o.CurrentUnderlyingType () == config_control_designe_open_shell ) + _app_inst = ((SdaiShell&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_closed_shell ) + _app_inst = ((SdaiShell&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_vertex_shell ) + _app_inst = ((SdaiShell&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_wire_shell ) + _app_inst = ((SdaiShell&) o)._app_inst; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiShell::IsOpen_shell() const +SCLLOG(Logical) SdaiShell::IsOpen_shell() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_open_shell ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiShell::IsClosed_shell() const +SCLLOG(Logical) SdaiShell::IsClosed_shell() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_closed_shell ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiShell::IsVertex_shell() const +SCLLOG(Logical) SdaiShell::IsVertex_shell() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_vertex_shell ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiShell::IsWire_shell() const +SCLLOG(Logical) SdaiShell::IsWire_shell() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_wire_shell ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } ////////// END SELECT TYPE SdaiShell @@ -8741,47 +13331,101 @@ SdaiLogical SdaiShell::IsWire_shell() const ////////// SELECT TYPE transformation const TypeDescriptor * -SdaiTransformation::AssignEntity (STEPentity * se) +SdaiTransformation::AssignEntity (SCLP23(Application_instance) * se) { // ITEM_DEFINED_TRANSFORMATION - if (se -> eDesc -> IsA (config_control_designe_item_defined_transformation)) + if (se -> IsA (config_control_designe_item_defined_transformation)) { - _stepentityh = (SdaiItem_defined_transformationH) se; + _app_inst = (SdaiItem_defined_transformation_ptr) se; return SetUnderlyingType (config_control_designe_item_defined_transformation); } // FUNCTIONALLY_DEFINED_TRANSFORMATION - if (se -> eDesc -> IsA (config_control_designe_functionally_defined_transformation)) + if (se -> IsA (config_control_designe_functionally_defined_transformation)) { - _stepentityh = (SdaiFunctionally_defined_transformationH) se; + _app_inst = (SdaiFunctionally_defined_transformation_ptr) se; return SetUnderlyingType (config_control_designe_functionally_defined_transformation); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiTransformation::NewSelect () { - SdaiTransformation * tmp = new SdaiTransformation (); - return tmp; +#ifdef __OSTORE__ + SdaiTransformation * tmp = + new( os_segment::of(this), + SdaiTransformation::get_os_typespec() ) + SdaiTransformation(); +#else + SdaiTransformation * tmp = new SdaiTransformation(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiTransformation::STEPwrite_content (G4std::ostream& out) const +SdaiTransformation::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designe_item_defined_transformation) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_functionally_defined_transformation) - _stepentityh -> STEPwrite_reference (out); - else { + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_functionally_defined_transformation) + _app_inst -> STEPwrite_reference (out); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiTransformation::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designe_item_defined_transformation) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_functionally_defined_transformation) + return sdaiINSTANCE; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiTransformation::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designe_item_defined_transformation) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_functionally_defined_transformation) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -8789,40 +13433,40 @@ SdaiTransformation::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiTransformation::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiTransformation::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designe_item_defined_transformation) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_functionally_defined_transformation) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -8834,11 +13478,12 @@ Severity SdaiTransformation::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -8850,196 +13495,305 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiTransformation (os_database *db) +{ + return new (db, SdaiTransformation::get_os_typespec()) + SdaiTransformation ; +} + +void +SdaiTransformation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiTransformation access hook funct called." << G4endl; + } +#endif + SdaiTransformation *s = (SdaiTransformation *) object; + s->_type = config_control_designt_transformation; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiTransformations (os_database *db) +{ + return new (db, SdaiTransformations::get_os_typespec()) + SdaiTransformations ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiTransformation::SdaiTransformation() - : SdaiSelect (config_control_designt_transformation) +SdaiTransformation::SdaiTransformation( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiTransformation constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiTransformation constructor." << G4endl; + } +#endif } // part 1 -SdaiTransformation::SdaiTransformation( const SdaiItem_defined_transformationH& o ) - : SdaiSelect (config_control_designt_transformation, config_control_designe_item_defined_transformation ) +SdaiTransformation::SdaiTransformation( const SdaiItem_defined_transformation_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_item_defined_transformation) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiTransformation constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiTransformation constructor." << G4endl; + } +#endif } -SdaiTransformation::SdaiTransformation( const SdaiFunctionally_defined_transformationH& o ) - : SdaiSelect (config_control_designt_transformation, config_control_designe_functionally_defined_transformation ) +SdaiTransformation::SdaiTransformation( const SdaiFunctionally_defined_transformation_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_functionally_defined_transformation) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiTransformation constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiTransformation constructor." << G4endl; + } +#endif } SdaiTransformation::~SdaiTransformation() { } +SdaiTransformations::SdaiTransformations( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiTransformations::~SdaiTransformations() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiTransformations::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiTransformation::get_os_typespec() ) + SdaiTransformation ); +} +#endif + // part 2 -SdaiTransformation::operator SdaiItem_defined_transformationH() +SdaiTransformation::operator SdaiItem_defined_transformation_ptr() { if( CurrentUnderlyingType () == config_control_designe_item_defined_transformation ) - return ((SdaiItem_defined_transformationH) _stepentityh); + return ((SdaiItem_defined_transformation_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiTransformation::operator SdaiFunctionally_defined_transformationH() +SdaiTransformation::operator SdaiFunctionally_defined_transformation_ptr() { if( CurrentUnderlyingType () == config_control_designe_functionally_defined_transformation ) - return ((SdaiFunctionally_defined_transformationH) _stepentityh); + return ((SdaiFunctionally_defined_transformation_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } // part 3 -SdaiRepresentation_itemH -SdaiTransformation::Transform_item_2() const +const SdaiRepresentation_item_ptr +SdaiTransformation::transform_item_2_() const { if( CurrentUnderlyingType () == config_control_designe_item_defined_transformation ) // ITEM_DEFINED_TRANSFORMATION - return ((SdaiItem_defined_transformationH) _stepentityh) ->Transform_item_2(); + return ((SdaiItem_defined_transformation_ptr) _app_inst) ->transform_item_2_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiTransformation::Transform_item_2 (SdaiRepresentation_itemH x) +SdaiTransformation::transform_item_2_ (const SdaiRepresentation_item_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_item_defined_transformation ) // ITEM_DEFINED_TRANSFORMATION - { ((SdaiItem_defined_transformationH) _stepentityh) ->Transform_item_2( x ); + { ((SdaiItem_defined_transformation_ptr) _app_inst) ->transform_item_2_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiRepresentation_itemH -SdaiTransformation::Transform_item_1() const +const SdaiRepresentation_item_ptr +SdaiTransformation::transform_item_1_() const { if( CurrentUnderlyingType () == config_control_designe_item_defined_transformation ) // ITEM_DEFINED_TRANSFORMATION - return ((SdaiItem_defined_transformationH) _stepentityh) ->Transform_item_1(); + return ((SdaiItem_defined_transformation_ptr) _app_inst) ->transform_item_1_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiTransformation::Transform_item_1 (SdaiRepresentation_itemH x) +SdaiTransformation::transform_item_1_ (const SdaiRepresentation_item_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_item_defined_transformation ) // ITEM_DEFINED_TRANSFORMATION - { ((SdaiItem_defined_transformationH) _stepentityh) ->Transform_item_1( x ); + { ((SdaiItem_defined_transformation_ptr) _app_inst) ->transform_item_1_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiText -SdaiTransformation::Description() const +SdaiTransformation::description_() const { if( CurrentUnderlyingType () == config_control_designe_item_defined_transformation ) // ITEM_DEFINED_TRANSFORMATION - return ((SdaiItem_defined_transformationH) _stepentityh) ->Description(); + return ((SdaiItem_defined_transformation_ptr) _app_inst) ->description_(); if( CurrentUnderlyingType () == config_control_designe_functionally_defined_transformation ) // FUNCTIONALLY_DEFINED_TRANSFORMATION - return ((SdaiFunctionally_defined_transformationH) _stepentityh) ->Description(); + return ((SdaiFunctionally_defined_transformation_ptr) _app_inst) ->description_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiTransformation::Description (const char * x) +SdaiTransformation::description_ (const SdaiText x) + { if( CurrentUnderlyingType () == config_control_designe_item_defined_transformation ) // ITEM_DEFINED_TRANSFORMATION - { ((SdaiItem_defined_transformationH) _stepentityh) ->Description( x ); + { ((SdaiItem_defined_transformation_ptr) _app_inst) ->description_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_functionally_defined_transformation ) // FUNCTIONALLY_DEFINED_TRANSFORMATION - { ((SdaiFunctionally_defined_transformationH) _stepentityh) ->Description( x ); + { ((SdaiFunctionally_defined_transformation_ptr) _app_inst) ->description_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiLabel -SdaiTransformation::Name() const +SdaiTransformation::name_() const { if( CurrentUnderlyingType () == config_control_designe_item_defined_transformation ) // ITEM_DEFINED_TRANSFORMATION - return ((SdaiItem_defined_transformationH) _stepentityh) ->Name(); + return ((SdaiItem_defined_transformation_ptr) _app_inst) ->name_(); if( CurrentUnderlyingType () == config_control_designe_functionally_defined_transformation ) // FUNCTIONALLY_DEFINED_TRANSFORMATION - return ((SdaiFunctionally_defined_transformationH) _stepentityh) ->Name(); + return ((SdaiFunctionally_defined_transformation_ptr) _app_inst) ->name_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiTransformation::Name (const char * x) +SdaiTransformation::name_ (const SdaiLabel x) + { if( CurrentUnderlyingType () == config_control_designe_item_defined_transformation ) // ITEM_DEFINED_TRANSFORMATION - { ((SdaiItem_defined_transformationH) _stepentityh) ->Name( x ); + { ((SdaiItem_defined_transformation_ptr) _app_inst) ->name_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_functionally_defined_transformation ) // FUNCTIONALLY_DEFINED_TRANSFORMATION - { ((SdaiFunctionally_defined_transformationH) _stepentityh) ->Name( x ); + { ((SdaiFunctionally_defined_transformation_ptr) _app_inst) ->name_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } // part 4 -SdaiTransformation& SdaiTransformation::operator =( const SdaiItem_defined_transformationH& o ) +SdaiTransformation& SdaiTransformation::operator =( const SdaiItem_defined_transformation_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_item_defined_transformation); return *this; } -SdaiTransformation& SdaiTransformation::operator =( const SdaiFunctionally_defined_transformationH& o ) +SdaiTransformation& SdaiTransformation::operator =( const SdaiFunctionally_defined_transformation_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_functionally_defined_transformation); return *this; } @@ -9047,43 +13801,52 @@ SdaiTransformation& SdaiTransformation::operator =( const SdaiFunctionally_defin #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiTransformation& SdaiTransformation::operator =( const SdaiTransformationH& o ) + +SdaiTransformation& SdaiTransformation::operator =( const SdaiTransformation_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designe_item_defined_transformation ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_functionally_defined_transformation ) - _stepentityh = o -> _stepentityh; + if ( o -> CurrentUnderlyingType () == config_control_designe_item_defined_transformation ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_functionally_defined_transformation ) + _app_inst = o -> _app_inst; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiTransformation::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiTransformation::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designe_item_defined_transformation ) - _stepentityh = ((SdaiTransformation&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_functionally_defined_transformation ) - _stepentityh = ((SdaiTransformation&) o)._stepentityh; + if ( o.CurrentUnderlyingType () == config_control_designe_item_defined_transformation ) + _app_inst = ((SdaiTransformation&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_functionally_defined_transformation ) + _app_inst = ((SdaiTransformation&) o)._app_inst; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiTransformation::IsItem_defined_transformation() const +SCLLOG(Logical) SdaiTransformation::IsItem_defined_transformation() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_item_defined_transformation ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiTransformation::IsFunctionally_defined_transformation() const +SCLLOG(Logical) SdaiTransformation::IsFunctionally_defined_transformation() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_functionally_defined_transformation ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } ////////// END SELECT TYPE SdaiTransformation @@ -9092,39 +13855,85 @@ SdaiLogical SdaiTransformation::IsFunctionally_defined_transformation() const ////////// SELECT TYPE boolean_operand const TypeDescriptor * -SdaiBoolean_operand::AssignEntity (STEPentity * se) +SdaiBoolean_operand::AssignEntity (SCLP23(Application_instance) * se) { // SOLID_MODEL - if (se -> eDesc -> IsA (config_control_designe_solid_model)) + if (se -> IsA (config_control_designe_solid_model)) { - _stepentityh = (SdaiSolid_modelH) se; + _app_inst = (SdaiSolid_model_ptr) se; return SetUnderlyingType (config_control_designe_solid_model); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiBoolean_operand::NewSelect () { - SdaiBoolean_operand * tmp = new SdaiBoolean_operand (); - return tmp; +#ifdef __OSTORE__ + SdaiBoolean_operand * tmp = + new( os_segment::of(this), + SdaiBoolean_operand::get_os_typespec() ) + SdaiBoolean_operand(); +#else + SdaiBoolean_operand * tmp = new SdaiBoolean_operand(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiBoolean_operand::STEPwrite_content (G4std::ostream& out) const +SdaiBoolean_operand::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designe_solid_model) - _stepentityh -> STEPwrite_reference (out); - else { + _app_inst -> STEPwrite_reference (out); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiBoolean_operand::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designe_solid_model) + return sdaiINSTANCE; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiBoolean_operand::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designe_solid_model) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -9132,26 +13941,27 @@ SdaiBoolean_operand::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiBoolean_operand::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiBoolean_operand::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designe_solid_model) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -9163,11 +13973,12 @@ Severity SdaiBoolean_operand::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -9179,36 +13990,127 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiBoolean_operand (os_database *db) +{ + return new (db, SdaiBoolean_operand::get_os_typespec()) + SdaiBoolean_operand ; +} + +void +SdaiBoolean_operand_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiBoolean_operand access hook funct called." << G4endl; + } +#endif + SdaiBoolean_operand *s = (SdaiBoolean_operand *) object; + s->_type = config_control_designt_boolean_operand; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiBoolean_operands (os_database *db) +{ + return new (db, SdaiBoolean_operands::get_os_typespec()) + SdaiBoolean_operands ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiBoolean_operand::SdaiBoolean_operand() - : SdaiSelect (config_control_designt_boolean_operand) +SdaiBoolean_operand::SdaiBoolean_operand( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiBoolean_operand constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiBoolean_operand constructor." << G4endl; + } +#endif } // part 1 -SdaiBoolean_operand::SdaiBoolean_operand( const SdaiSolid_modelH& o ) - : SdaiSelect (config_control_designt_boolean_operand, config_control_designe_solid_model ) +SdaiBoolean_operand::SdaiBoolean_operand( const SdaiSolid_model_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_solid_model) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiBoolean_operand constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiBoolean_operand constructor." << G4endl; + } +#endif } SdaiBoolean_operand::~SdaiBoolean_operand() { } +SdaiBoolean_operands::SdaiBoolean_operands( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiBoolean_operands::~SdaiBoolean_operands() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiBoolean_operands::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiBoolean_operand::get_os_typespec() ) + SdaiBoolean_operand ); +} +#endif + // part 2 -SdaiBoolean_operand::operator SdaiSolid_modelH() +SdaiBoolean_operand::operator SdaiSolid_model_ptr() { if( CurrentUnderlyingType () == config_control_designe_solid_model ) - return ((SdaiSolid_modelH) _stepentityh); + return ((SdaiSolid_model_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } @@ -9216,37 +14118,38 @@ SdaiBoolean_operand::operator SdaiSolid_modelH() // part 3 const SdaiLabel -SdaiBoolean_operand::Name() const +SdaiBoolean_operand::name_() const { if( CurrentUnderlyingType () == config_control_designe_solid_model ) // SOLID_MODEL - return ((SdaiSolid_modelH) _stepentityh) ->Name(); + return ((SdaiSolid_model_ptr) _app_inst) ->name_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiBoolean_operand::Name (const char * x) +SdaiBoolean_operand::name_ (const SdaiLabel x) + { if( CurrentUnderlyingType () == config_control_designe_solid_model ) // SOLID_MODEL - { ((SdaiSolid_modelH) _stepentityh) ->Name( x ); + { ((SdaiSolid_model_ptr) _app_inst) ->name_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } // part 4 -SdaiBoolean_operand& SdaiBoolean_operand::operator =( const SdaiSolid_modelH& o ) +SdaiBoolean_operand& SdaiBoolean_operand::operator =( const SdaiSolid_model_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_solid_model); return *this; } @@ -9254,30 +14157,39 @@ SdaiBoolean_operand& SdaiBoolean_operand::operator =( const SdaiSolid_modelH& o #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiBoolean_operand& SdaiBoolean_operand::operator =( const SdaiBoolean_operandH& o ) + +SdaiBoolean_operand& SdaiBoolean_operand::operator =( const SdaiBoolean_operand_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designe_solid_model ) - _stepentityh = o -> _stepentityh; + if ( o -> CurrentUnderlyingType () == config_control_designe_solid_model ) + _app_inst = o -> _app_inst; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiBoolean_operand::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiBoolean_operand::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designe_solid_model ) - _stepentityh = ((SdaiBoolean_operand&) o)._stepentityh; + if ( o.CurrentUnderlyingType () == config_control_designe_solid_model ) + _app_inst = ((SdaiBoolean_operand&) o)._app_inst; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiBoolean_operand::IsSolid_model() const +SCLLOG(Logical) SdaiBoolean_operand::IsSolid_model() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_solid_model ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } ////////// END SELECT TYPE SdaiBoolean_operand @@ -9286,39 +14198,85 @@ SdaiLogical SdaiBoolean_operand::IsSolid_model() const ////////// SELECT TYPE certified_item const TypeDescriptor * -SdaiCertified_item::AssignEntity (STEPentity * se) +SdaiCertified_item::AssignEntity (SCLP23(Application_instance) * se) { // SUPPLIED_PART_RELATIONSHIP - if (se -> eDesc -> IsA (config_control_designe_supplied_part_relationship)) + if (se -> IsA (config_control_designe_supplied_part_relationship)) { - _stepentityh = (SdaiSupplied_part_relationshipH) se; + _app_inst = (SdaiSupplied_part_relationship_ptr) se; return SetUnderlyingType (config_control_designe_supplied_part_relationship); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiCertified_item::NewSelect () { - SdaiCertified_item * tmp = new SdaiCertified_item (); - return tmp; +#ifdef __OSTORE__ + SdaiCertified_item * tmp = + new( os_segment::of(this), + SdaiCertified_item::get_os_typespec() ) + SdaiCertified_item(); +#else + SdaiCertified_item * tmp = new SdaiCertified_item(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiCertified_item::STEPwrite_content (G4std::ostream& out) const +SdaiCertified_item::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designe_supplied_part_relationship) - _stepentityh -> STEPwrite_reference (out); - else { + _app_inst -> STEPwrite_reference (out); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiCertified_item::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designe_supplied_part_relationship) + return sdaiINSTANCE; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiCertified_item::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designe_supplied_part_relationship) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -9326,26 +14284,27 @@ SdaiCertified_item::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiCertified_item::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiCertified_item::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designe_supplied_part_relationship) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -9357,11 +14316,12 @@ Severity SdaiCertified_item::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -9373,182 +14333,278 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiCertified_item (os_database *db) +{ + return new (db, SdaiCertified_item::get_os_typespec()) + SdaiCertified_item ; +} + +void +SdaiCertified_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiCertified_item access hook funct called." << G4endl; + } +#endif + SdaiCertified_item *s = (SdaiCertified_item *) object; + s->_type = config_control_designt_certified_item; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiCertified_items (os_database *db) +{ + return new (db, SdaiCertified_items::get_os_typespec()) + SdaiCertified_items ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiCertified_item::SdaiCertified_item() - : SdaiSelect (config_control_designt_certified_item) +SdaiCertified_item::SdaiCertified_item( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiCertified_item constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiCertified_item constructor." << G4endl; + } +#endif } // part 1 -SdaiCertified_item::SdaiCertified_item( const SdaiSupplied_part_relationshipH& o ) - : SdaiSelect (config_control_designt_certified_item, config_control_designe_supplied_part_relationship ) +SdaiCertified_item::SdaiCertified_item( const SdaiSupplied_part_relationship_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_supplied_part_relationship) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiCertified_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiCertified_item constructor." << G4endl; + } +#endif } SdaiCertified_item::~SdaiCertified_item() { } +SdaiCertified_items::SdaiCertified_items( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiCertified_items::~SdaiCertified_items() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiCertified_items::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiCertified_item::get_os_typespec() ) + SdaiCertified_item ); +} +#endif + // part 2 -SdaiCertified_item::operator SdaiSupplied_part_relationshipH() +SdaiCertified_item::operator SdaiSupplied_part_relationship_ptr() { if( CurrentUnderlyingType () == config_control_designe_supplied_part_relationship ) - return ((SdaiSupplied_part_relationshipH) _stepentityh); + return ((SdaiSupplied_part_relationship_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } // part 3 -SdaiProduct_definitionH -SdaiCertified_item::Related_product_definition() const +const SdaiProduct_definition_ptr +SdaiCertified_item::related_product_definition_() const { if( CurrentUnderlyingType () == config_control_designe_supplied_part_relationship ) // SUPPLIED_PART_RELATIONSHIP - return ((SdaiSupplied_part_relationshipH) _stepentityh) ->Related_product_definition(); + return ((SdaiSupplied_part_relationship_ptr) _app_inst) ->related_product_definition_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiCertified_item::Related_product_definition (SdaiProduct_definitionH x) +SdaiCertified_item::related_product_definition_ (const SdaiProduct_definition_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_supplied_part_relationship ) // SUPPLIED_PART_RELATIONSHIP - { ((SdaiSupplied_part_relationshipH) _stepentityh) ->Related_product_definition( x ); + { ((SdaiSupplied_part_relationship_ptr) _app_inst) ->related_product_definition_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiProduct_definitionH -SdaiCertified_item::Relating_product_definition() const +const SdaiProduct_definition_ptr +SdaiCertified_item::relating_product_definition_() const { if( CurrentUnderlyingType () == config_control_designe_supplied_part_relationship ) // SUPPLIED_PART_RELATIONSHIP - return ((SdaiSupplied_part_relationshipH) _stepentityh) ->Relating_product_definition(); + return ((SdaiSupplied_part_relationship_ptr) _app_inst) ->relating_product_definition_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiCertified_item::Relating_product_definition (SdaiProduct_definitionH x) +SdaiCertified_item::relating_product_definition_ (const SdaiProduct_definition_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_supplied_part_relationship ) // SUPPLIED_PART_RELATIONSHIP - { ((SdaiSupplied_part_relationshipH) _stepentityh) ->Relating_product_definition( x ); + { ((SdaiSupplied_part_relationship_ptr) _app_inst) ->relating_product_definition_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiText -SdaiCertified_item::Description() const +SdaiCertified_item::description_() const { if( CurrentUnderlyingType () == config_control_designe_supplied_part_relationship ) // SUPPLIED_PART_RELATIONSHIP - return ((SdaiSupplied_part_relationshipH) _stepentityh) ->Description(); + return ((SdaiSupplied_part_relationship_ptr) _app_inst) ->description_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiCertified_item::Description (const char * x) +SdaiCertified_item::description_ (const SdaiText x) + { if( CurrentUnderlyingType () == config_control_designe_supplied_part_relationship ) // SUPPLIED_PART_RELATIONSHIP - { ((SdaiSupplied_part_relationshipH) _stepentityh) ->Description( x ); + { ((SdaiSupplied_part_relationship_ptr) _app_inst) ->description_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiLabel -SdaiCertified_item::Name() const +SdaiCertified_item::name_() const { if( CurrentUnderlyingType () == config_control_designe_supplied_part_relationship ) // SUPPLIED_PART_RELATIONSHIP - return ((SdaiSupplied_part_relationshipH) _stepentityh) ->Name(); + return ((SdaiSupplied_part_relationship_ptr) _app_inst) ->name_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiCertified_item::Name (const char * x) +SdaiCertified_item::name_ (const SdaiLabel x) + { if( CurrentUnderlyingType () == config_control_designe_supplied_part_relationship ) // SUPPLIED_PART_RELATIONSHIP - { ((SdaiSupplied_part_relationshipH) _stepentityh) ->Name( x ); + { ((SdaiSupplied_part_relationship_ptr) _app_inst) ->name_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiIdentifier -SdaiCertified_item::Id() const +SdaiCertified_item::id_() const { if( CurrentUnderlyingType () == config_control_designe_supplied_part_relationship ) // SUPPLIED_PART_RELATIONSHIP - return ((SdaiSupplied_part_relationshipH) _stepentityh) ->Id(); + return ((SdaiSupplied_part_relationship_ptr) _app_inst) ->id_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiCertified_item::Id (const char * x) +SdaiCertified_item::id_ (const SdaiIdentifier x) + { if( CurrentUnderlyingType () == config_control_designe_supplied_part_relationship ) // SUPPLIED_PART_RELATIONSHIP - { ((SdaiSupplied_part_relationshipH) _stepentityh) ->Id( x ); + { ((SdaiSupplied_part_relationship_ptr) _app_inst) ->id_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } // part 4 -SdaiCertified_item& SdaiCertified_item::operator =( const SdaiSupplied_part_relationshipH& o ) +SdaiCertified_item& SdaiCertified_item::operator =( const SdaiSupplied_part_relationship_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_supplied_part_relationship); return *this; } @@ -9556,30 +14612,39 @@ SdaiCertified_item& SdaiCertified_item::operator =( const SdaiSupplied_part_rela #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiCertified_item& SdaiCertified_item::operator =( const SdaiCertified_itemH& o ) + +SdaiCertified_item& SdaiCertified_item::operator =( const SdaiCertified_item_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designe_supplied_part_relationship ) - _stepentityh = o -> _stepentityh; + if ( o -> CurrentUnderlyingType () == config_control_designe_supplied_part_relationship ) + _app_inst = o -> _app_inst; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiCertified_item::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiCertified_item::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designe_supplied_part_relationship ) - _stepentityh = ((SdaiCertified_item&) o)._stepentityh; + if ( o.CurrentUnderlyingType () == config_control_designe_supplied_part_relationship ) + _app_inst = ((SdaiCertified_item&) o)._app_inst; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiCertified_item::IsSupplied_part_relationship() const +SCLLOG(Logical) SdaiCertified_item::IsSupplied_part_relationship() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_supplied_part_relationship ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } ////////// END SELECT TYPE SdaiCertified_item @@ -9588,39 +14653,85 @@ SdaiLogical SdaiCertified_item::IsSupplied_part_relationship() const ////////// SELECT TYPE date_time_select const TypeDescriptor * -SdaiDate_time_select::AssignEntity (STEPentity * se) +SdaiDate_time_select::AssignEntity (SCLP23(Application_instance) * se) { // DATE_AND_TIME - if (se -> eDesc -> IsA (config_control_designe_date_and_time)) + if (se -> IsA (config_control_designe_date_and_time)) { - _stepentityh = (SdaiDate_and_timeH) se; + _app_inst = (SdaiDate_and_time_ptr) se; return SetUnderlyingType (config_control_designe_date_and_time); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiDate_time_select::NewSelect () { - SdaiDate_time_select * tmp = new SdaiDate_time_select (); - return tmp; +#ifdef __OSTORE__ + SdaiDate_time_select * tmp = + new( os_segment::of(this), + SdaiDate_time_select::get_os_typespec() ) + SdaiDate_time_select(); +#else + SdaiDate_time_select * tmp = new SdaiDate_time_select(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiDate_time_select::STEPwrite_content (G4std::ostream& out) const +SdaiDate_time_select::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designe_date_and_time) - _stepentityh -> STEPwrite_reference (out); - else { + _app_inst -> STEPwrite_reference (out); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiDate_time_select::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designe_date_and_time) + return sdaiINSTANCE; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiDate_time_select::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designe_date_and_time) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -9628,26 +14739,27 @@ SdaiDate_time_select::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiDate_time_select::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiDate_time_select::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designe_date_and_time) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -9659,11 +14771,12 @@ Severity SdaiDate_time_select::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -9675,101 +14788,194 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiDate_time_select (os_database *db) +{ + return new (db, SdaiDate_time_select::get_os_typespec()) + SdaiDate_time_select ; +} + +void +SdaiDate_time_select_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiDate_time_select access hook funct called." << G4endl; + } +#endif + SdaiDate_time_select *s = (SdaiDate_time_select *) object; + s->_type = config_control_designt_date_time_select; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiDate_time_selects (os_database *db) +{ + return new (db, SdaiDate_time_selects::get_os_typespec()) + SdaiDate_time_selects ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiDate_time_select::SdaiDate_time_select() - : SdaiSelect (config_control_designt_date_time_select) +SdaiDate_time_select::SdaiDate_time_select( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiDate_time_select constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiDate_time_select constructor." << G4endl; + } +#endif } // part 1 -SdaiDate_time_select::SdaiDate_time_select( const SdaiDate_and_timeH& o ) - : SdaiSelect (config_control_designt_date_time_select, config_control_designe_date_and_time ) +SdaiDate_time_select::SdaiDate_time_select( const SdaiDate_and_time_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_date_and_time) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiDate_time_select constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiDate_time_select constructor." << G4endl; + } +#endif } SdaiDate_time_select::~SdaiDate_time_select() { } +SdaiDate_time_selects::SdaiDate_time_selects( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiDate_time_selects::~SdaiDate_time_selects() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiDate_time_selects::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiDate_time_select::get_os_typespec() ) + SdaiDate_time_select ); +} +#endif + // part 2 -SdaiDate_time_select::operator SdaiDate_and_timeH() +SdaiDate_time_select::operator SdaiDate_and_time_ptr() { if( CurrentUnderlyingType () == config_control_designe_date_and_time ) - return ((SdaiDate_and_timeH) _stepentityh); + return ((SdaiDate_and_time_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } // part 3 -SdaiLocal_timeH -SdaiDate_time_select::Time_component() const +const SdaiLocal_time_ptr +SdaiDate_time_select::time_component_() const { if( CurrentUnderlyingType () == config_control_designe_date_and_time ) // DATE_AND_TIME - return ((SdaiDate_and_timeH) _stepentityh) ->Time_component(); + return ((SdaiDate_and_time_ptr) _app_inst) ->time_component_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiDate_time_select::Time_component (SdaiLocal_timeH x) +SdaiDate_time_select::time_component_ (const SdaiLocal_time_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_date_and_time ) // DATE_AND_TIME - { ((SdaiDate_and_timeH) _stepentityh) ->Time_component( x ); + { ((SdaiDate_and_time_ptr) _app_inst) ->time_component_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiDateH -SdaiDate_time_select::Date_component() const +const SdaiDate_ptr +SdaiDate_time_select::date_component_() const { if( CurrentUnderlyingType () == config_control_designe_date_and_time ) // DATE_AND_TIME - return ((SdaiDate_and_timeH) _stepentityh) ->Date_component(); + return ((SdaiDate_and_time_ptr) _app_inst) ->date_component_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiDate_time_select::Date_component (SdaiDateH x) +SdaiDate_time_select::date_component_ (const SdaiDate_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_date_and_time ) // DATE_AND_TIME - { ((SdaiDate_and_timeH) _stepentityh) ->Date_component( x ); + { ((SdaiDate_and_time_ptr) _app_inst) ->date_component_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } // part 4 -SdaiDate_time_select& SdaiDate_time_select::operator =( const SdaiDate_and_timeH& o ) +SdaiDate_time_select& SdaiDate_time_select::operator =( const SdaiDate_and_time_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_date_and_time); return *this; } @@ -9777,30 +14983,39 @@ SdaiDate_time_select& SdaiDate_time_select::operator =( const SdaiDate_and_timeH #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiDate_time_select& SdaiDate_time_select::operator =( const SdaiDate_time_selectH& o ) + +SdaiDate_time_select& SdaiDate_time_select::operator =( const SdaiDate_time_select_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designe_date_and_time ) - _stepentityh = o -> _stepentityh; + if ( o -> CurrentUnderlyingType () == config_control_designe_date_and_time ) + _app_inst = o -> _app_inst; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiDate_time_select::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiDate_time_select::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designe_date_and_time ) - _stepentityh = ((SdaiDate_time_select&) o)._stepentityh; + if ( o.CurrentUnderlyingType () == config_control_designe_date_and_time ) + _app_inst = ((SdaiDate_time_select&) o)._app_inst; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiDate_time_select::IsDate_and_time() const +SCLLOG(Logical) SdaiDate_time_select::IsDate_and_time() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_date_and_time ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } ////////// END SELECT TYPE SdaiDate_time_select @@ -9809,55 +15024,117 @@ SdaiLogical SdaiDate_time_select::IsDate_and_time() const ////////// SELECT TYPE curve_on_surface const TypeDescriptor * -SdaiCurve_on_surface::AssignEntity (STEPentity * se) +SdaiCurve_on_surface::AssignEntity (SCLP23(Application_instance) * se) { // PCURVE - if (se -> eDesc -> IsA (config_control_designe_pcurve)) + if (se -> IsA (config_control_designe_pcurve)) { - _stepentityh = (SdaiPcurveH) se; + _app_inst = (SdaiPcurve_ptr) se; return SetUnderlyingType (config_control_designe_pcurve); } // SURFACE_CURVE - if (se -> eDesc -> IsA (config_control_designe_surface_curve)) + if (se -> IsA (config_control_designe_surface_curve)) { - _stepentityh = (SdaiSurface_curveH) se; + _app_inst = (SdaiSurface_curve_ptr) se; return SetUnderlyingType (config_control_designe_surface_curve); } // COMPOSITE_CURVE_ON_SURFACE - if (se -> eDesc -> IsA (config_control_designe_composite_curve_on_surface)) + if (se -> IsA (config_control_designe_composite_curve_on_surface)) { - _stepentityh = (SdaiComposite_curve_on_surfaceH) se; + _app_inst = (SdaiComposite_curve_on_surface_ptr) se; return SetUnderlyingType (config_control_designe_composite_curve_on_surface); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiCurve_on_surface::NewSelect () { - SdaiCurve_on_surface * tmp = new SdaiCurve_on_surface (); - return tmp; +#ifdef __OSTORE__ + SdaiCurve_on_surface * tmp = + new( os_segment::of(this), + SdaiCurve_on_surface::get_os_typespec() ) + SdaiCurve_on_surface(); +#else + SdaiCurve_on_surface * tmp = new SdaiCurve_on_surface(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiCurve_on_surface::STEPwrite_content (G4std::ostream& out) const +SdaiCurve_on_surface::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designe_pcurve) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_surface_curve) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_composite_curve_on_surface) - _stepentityh -> STEPwrite_reference (out); - else { + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_surface_curve) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_composite_curve_on_surface) + _app_inst -> STEPwrite_reference (out); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiCurve_on_surface::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designe_pcurve) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_surface_curve) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_composite_curve_on_surface) + return sdaiINSTANCE; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiCurve_on_surface::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designe_pcurve) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_surface_curve) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_composite_curve_on_surface) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -9865,54 +15142,53 @@ SdaiCurve_on_surface::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiCurve_on_surface::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiCurve_on_surface::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designe_pcurve) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_surface_curve) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_composite_curve_on_surface) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -9924,11 +15200,12 @@ Severity SdaiCurve_on_surface::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -9940,333 +15217,460 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiCurve_on_surface (os_database *db) +{ + return new (db, SdaiCurve_on_surface::get_os_typespec()) + SdaiCurve_on_surface ; +} + +void +SdaiCurve_on_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiCurve_on_surface access hook funct called." << G4endl; + } +#endif + SdaiCurve_on_surface *s = (SdaiCurve_on_surface *) object; + s->_type = config_control_designt_curve_on_surface; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiCurve_on_surfaces (os_database *db) +{ + return new (db, SdaiCurve_on_surfaces::get_os_typespec()) + SdaiCurve_on_surfaces ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiCurve_on_surface::SdaiCurve_on_surface() - : SdaiSelect (config_control_designt_curve_on_surface) +SdaiCurve_on_surface::SdaiCurve_on_surface( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiCurve_on_surface constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiCurve_on_surface constructor." << G4endl; + } +#endif } // part 1 -SdaiCurve_on_surface::SdaiCurve_on_surface( const SdaiPcurveH& o ) - : SdaiSelect (config_control_designt_curve_on_surface, config_control_designe_pcurve ) +SdaiCurve_on_surface::SdaiCurve_on_surface( const SdaiPcurve_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_pcurve) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiCurve_on_surface constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiCurve_on_surface constructor." << G4endl; + } +#endif } -SdaiCurve_on_surface::SdaiCurve_on_surface( const SdaiSurface_curveH& o ) - : SdaiSelect (config_control_designt_curve_on_surface, config_control_designe_surface_curve ) +SdaiCurve_on_surface::SdaiCurve_on_surface( const SdaiSurface_curve_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_surface_curve) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiCurve_on_surface constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiCurve_on_surface constructor." << G4endl; + } +#endif } -SdaiCurve_on_surface::SdaiCurve_on_surface( const SdaiComposite_curve_on_surfaceH& o ) - : SdaiSelect (config_control_designt_curve_on_surface, config_control_designe_composite_curve_on_surface ) +SdaiCurve_on_surface::SdaiCurve_on_surface( const SdaiComposite_curve_on_surface_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_composite_curve_on_surface) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiCurve_on_surface constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiCurve_on_surface constructor." << G4endl; + } +#endif } SdaiCurve_on_surface::~SdaiCurve_on_surface() { } +SdaiCurve_on_surfaces::SdaiCurve_on_surfaces( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiCurve_on_surfaces::~SdaiCurve_on_surfaces() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiCurve_on_surfaces::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiCurve_on_surface::get_os_typespec() ) + SdaiCurve_on_surface ); +} +#endif + // part 2 -SdaiCurve_on_surface::operator SdaiPcurveH() +SdaiCurve_on_surface::operator SdaiPcurve_ptr() { if( CurrentUnderlyingType () == config_control_designe_pcurve ) - return ((SdaiPcurveH) _stepentityh); + return ((SdaiPcurve_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiCurve_on_surface::operator SdaiSurface_curveH() +SdaiCurve_on_surface::operator SdaiSurface_curve_ptr() { if( CurrentUnderlyingType () == config_control_designe_surface_curve ) - return ((SdaiSurface_curveH) _stepentityh); + return ((SdaiSurface_curve_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiCurve_on_surface::operator SdaiComposite_curve_on_surfaceH() +SdaiCurve_on_surface::operator SdaiComposite_curve_on_surface_ptr() { if( CurrentUnderlyingType () == config_control_designe_composite_curve_on_surface ) - return ((SdaiComposite_curve_on_surfaceH) _stepentityh); + return ((SdaiComposite_curve_on_surface_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } // part 3 -const LOGICAL -SdaiCurve_on_surface::Self_intersect() const +const SCLLOG(Logical) +SdaiCurve_on_surface::self_intersect_() const { if( CurrentUnderlyingType () == config_control_designe_composite_curve_on_surface ) // COMPOSITE_CURVE_ON_SURFACE - return ((SdaiComposite_curve_on_surfaceH) _stepentityh) ->Self_intersect(); + return ((SdaiComposite_curve_on_surface_ptr) _app_inst) ->self_intersect_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return (LOGICAL) NULL; + return (SCLLOG(Logical)) 0; } void -SdaiCurve_on_surface::Self_intersect (LOGICAL x) +SdaiCurve_on_surface::self_intersect_ (const SCLLOG(Logical) x) + { if( CurrentUnderlyingType () == config_control_designe_composite_curve_on_surface ) // COMPOSITE_CURVE_ON_SURFACE - { ((SdaiComposite_curve_on_surfaceH) _stepentityh) ->Self_intersect( x ); + { ((SdaiComposite_curve_on_surface_ptr) _app_inst) ->self_intersect_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -const EntityAggregateH -SdaiCurve_on_surface::Segments() const +const EntityAggregate_ptr +SdaiCurve_on_surface::segments_() const { if( CurrentUnderlyingType () == config_control_designe_composite_curve_on_surface ) // COMPOSITE_CURVE_ON_SURFACE - return ((SdaiComposite_curve_on_surfaceH) _stepentityh) ->Segments(); + return ((SdaiComposite_curve_on_surface_ptr) _app_inst) ->segments_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiCurve_on_surface::Segments (EntityAggregateH x) +SdaiCurve_on_surface::segments_ (const EntityAggregate_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_composite_curve_on_surface ) // COMPOSITE_CURVE_ON_SURFACE - { ((SdaiComposite_curve_on_surfaceH) _stepentityh) ->Segments( x ); + { ((SdaiComposite_curve_on_surface_ptr) _app_inst) ->segments_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -const sdaiPreferred_surface_curve_representation -SdaiCurve_on_surface::Master_representation() const +const SdaiPreferred_surface_curve_representation_var +SdaiCurve_on_surface::master_representation_() const { if( CurrentUnderlyingType () == config_control_designe_surface_curve ) // SURFACE_CURVE - return ((SdaiSurface_curveH) _stepentityh) ->Master_representation(); + return ((SdaiSurface_curve_ptr) _app_inst) ->master_representation_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return (sdaiPreferred_surface_curve_representation) NULL; + return (Preferred_surface_curve_representation) 0; } void -SdaiCurve_on_surface::Master_representation (sdaiPreferred_surface_curve_representation x) +SdaiCurve_on_surface::master_representation_ (const SdaiPreferred_surface_curve_representation_var x) + { if( CurrentUnderlyingType () == config_control_designe_surface_curve ) // SURFACE_CURVE - { ((SdaiSurface_curveH) _stepentityh) ->Master_representation( x ); + { ((SdaiSurface_curve_ptr) _app_inst) ->master_representation_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -const SdaiPcurve_or_surfacesH -SdaiCurve_on_surface::Associated_geometry() const +const SdaiPcurve_or_surfaces_ptr +SdaiCurve_on_surface::associated_geometry_() const { if( CurrentUnderlyingType () == config_control_designe_surface_curve ) // SURFACE_CURVE - return ((SdaiSurface_curveH) _stepentityh) ->Associated_geometry(); + return ((SdaiSurface_curve_ptr) _app_inst) ->associated_geometry_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiCurve_on_surface::Associated_geometry (SdaiPcurve_or_surfacesH x) +SdaiCurve_on_surface::associated_geometry_ (const SdaiPcurve_or_surfaces_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_surface_curve ) // SURFACE_CURVE - { ((SdaiSurface_curveH) _stepentityh) ->Associated_geometry( x ); + { ((SdaiSurface_curve_ptr) _app_inst) ->associated_geometry_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiCurveH -SdaiCurve_on_surface::Curve_3d() const +const SdaiCurve_ptr +SdaiCurve_on_surface::curve_3d_() const { if( CurrentUnderlyingType () == config_control_designe_surface_curve ) // SURFACE_CURVE - return ((SdaiSurface_curveH) _stepentityh) ->Curve_3d(); + return ((SdaiSurface_curve_ptr) _app_inst) ->curve_3d_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiCurve_on_surface::Curve_3d (SdaiCurveH x) +SdaiCurve_on_surface::curve_3d_ (const SdaiCurve_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_surface_curve ) // SURFACE_CURVE - { ((SdaiSurface_curveH) _stepentityh) ->Curve_3d( x ); + { ((SdaiSurface_curve_ptr) _app_inst) ->curve_3d_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiDefinitional_representationH -SdaiCurve_on_surface::Reference_to_curve() const +const SdaiDefinitional_representation_ptr +SdaiCurve_on_surface::reference_to_curve_() const { if( CurrentUnderlyingType () == config_control_designe_pcurve ) // PCURVE - return ((SdaiPcurveH) _stepentityh) ->Reference_to_curve(); + return ((SdaiPcurve_ptr) _app_inst) ->reference_to_curve_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiCurve_on_surface::Reference_to_curve (SdaiDefinitional_representationH x) +SdaiCurve_on_surface::reference_to_curve_ (const SdaiDefinitional_representation_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_pcurve ) // PCURVE - { ((SdaiPcurveH) _stepentityh) ->Reference_to_curve( x ); + { ((SdaiPcurve_ptr) _app_inst) ->reference_to_curve_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiSurfaceH -SdaiCurve_on_surface::Basis_surface() const +const SdaiSurface_ptr +SdaiCurve_on_surface::basis_surface_() const { if( CurrentUnderlyingType () == config_control_designe_pcurve ) // PCURVE - return ((SdaiPcurveH) _stepentityh) ->Basis_surface(); + return ((SdaiPcurve_ptr) _app_inst) ->basis_surface_(); // for SURFACE_CURVE attribute is derived // for COMPOSITE_CURVE_ON_SURFACE attribute is derived G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiCurve_on_surface::Basis_surface (SdaiSurfaceH x) +SdaiCurve_on_surface::basis_surface_ (const SdaiSurface_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_pcurve ) // PCURVE - { ((SdaiPcurveH) _stepentityh) ->Basis_surface( x ); + { ((SdaiPcurve_ptr) _app_inst) ->basis_surface_( x ); return; } // for SURFACE_CURVE attribute is derived // for COMPOSITE_CURVE_ON_SURFACE attribute is derived - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiLabel -SdaiCurve_on_surface::Name() const +SdaiCurve_on_surface::name_() const { if( CurrentUnderlyingType () == config_control_designe_pcurve ) // PCURVE - return ((SdaiPcurveH) _stepentityh) ->Name(); + return ((SdaiPcurve_ptr) _app_inst) ->name_(); if( CurrentUnderlyingType () == config_control_designe_surface_curve ) // SURFACE_CURVE - return ((SdaiSurface_curveH) _stepentityh) ->Name(); + return ((SdaiSurface_curve_ptr) _app_inst) ->name_(); if( CurrentUnderlyingType () == config_control_designe_composite_curve_on_surface ) // COMPOSITE_CURVE_ON_SURFACE - return ((SdaiComposite_curve_on_surfaceH) _stepentityh) ->Name(); + return ((SdaiComposite_curve_on_surface_ptr) _app_inst) ->name_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiCurve_on_surface::Name (const char * x) +SdaiCurve_on_surface::name_ (const SdaiLabel x) + { if( CurrentUnderlyingType () == config_control_designe_pcurve ) // PCURVE - { ((SdaiPcurveH) _stepentityh) ->Name( x ); + { ((SdaiPcurve_ptr) _app_inst) ->name_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_surface_curve ) // SURFACE_CURVE - { ((SdaiSurface_curveH) _stepentityh) ->Name( x ); + { ((SdaiSurface_curve_ptr) _app_inst) ->name_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_composite_curve_on_surface ) // COMPOSITE_CURVE_ON_SURFACE - { ((SdaiComposite_curve_on_surfaceH) _stepentityh) ->Name( x ); + { ((SdaiComposite_curve_on_surface_ptr) _app_inst) ->name_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } // part 4 -SdaiCurve_on_surface& SdaiCurve_on_surface::operator =( const SdaiPcurveH& o ) +SdaiCurve_on_surface& SdaiCurve_on_surface::operator =( const SdaiPcurve_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_pcurve); return *this; } -SdaiCurve_on_surface& SdaiCurve_on_surface::operator =( const SdaiSurface_curveH& o ) +SdaiCurve_on_surface& SdaiCurve_on_surface::operator =( const SdaiSurface_curve_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_surface_curve); return *this; } -SdaiCurve_on_surface& SdaiCurve_on_surface::operator =( const SdaiComposite_curve_on_surfaceH& o ) +SdaiCurve_on_surface& SdaiCurve_on_surface::operator =( const SdaiComposite_curve_on_surface_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_composite_curve_on_surface); return *this; } @@ -10274,56 +15678,65 @@ SdaiCurve_on_surface& SdaiCurve_on_surface::operator =( const SdaiComposite_curv #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiCurve_on_surface& SdaiCurve_on_surface::operator =( const SdaiCurve_on_surfaceH& o ) + +SdaiCurve_on_surface& SdaiCurve_on_surface::operator =( const SdaiCurve_on_surface_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designe_pcurve ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_surface_curve ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_composite_curve_on_surface ) - _stepentityh = o -> _stepentityh; + if ( o -> CurrentUnderlyingType () == config_control_designe_pcurve ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_surface_curve ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_composite_curve_on_surface ) + _app_inst = o -> _app_inst; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiCurve_on_surface::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiCurve_on_surface::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designe_pcurve ) - _stepentityh = ((SdaiCurve_on_surface&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_surface_curve ) - _stepentityh = ((SdaiCurve_on_surface&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_composite_curve_on_surface ) - _stepentityh = ((SdaiCurve_on_surface&) o)._stepentityh; + if ( o.CurrentUnderlyingType () == config_control_designe_pcurve ) + _app_inst = ((SdaiCurve_on_surface&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_surface_curve ) + _app_inst = ((SdaiCurve_on_surface&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_composite_curve_on_surface ) + _app_inst = ((SdaiCurve_on_surface&) o)._app_inst; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiCurve_on_surface::IsPcurve() const +SCLLOG(Logical) SdaiCurve_on_surface::IsPcurve() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_pcurve ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiCurve_on_surface::IsSurface_curve() const +SCLLOG(Logical) SdaiCurve_on_surface::IsSurface_curve() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_surface_curve ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiCurve_on_surface::IsComposite_curve_on_surface() const +SCLLOG(Logical) SdaiCurve_on_surface::IsComposite_curve_on_surface() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_composite_curve_on_surface ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } ////////// END SELECT TYPE SdaiCurve_on_surface @@ -10332,41 +15745,95 @@ SdaiLogical SdaiCurve_on_surface::IsComposite_curve_on_surface() const ////////// SELECT TYPE trimming_select const TypeDescriptor * -SdaiTrimming_select::AssignEntity (STEPentity * se) +SdaiTrimming_select::AssignEntity (SCLP23(Application_instance) * se) { // CARTESIAN_POINT - if (se -> eDesc -> IsA (config_control_designe_cartesian_point)) + if (se -> IsA (config_control_designe_cartesian_point)) { - _stepentityh = (SdaiCartesian_pointH) se; + _app_inst = (SdaiCartesian_point_ptr) se; return SetUnderlyingType (config_control_designe_cartesian_point); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiTrimming_select::NewSelect () { - SdaiTrimming_select * tmp = new SdaiTrimming_select (); - return tmp; +#ifdef __OSTORE__ + SdaiTrimming_select * tmp = + new( os_segment::of(this), + SdaiTrimming_select::get_os_typespec() ) + SdaiTrimming_select(); +#else + SdaiTrimming_select * tmp = new SdaiTrimming_select(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiTrimming_select::STEPwrite_content (G4std::ostream& out) const +SdaiTrimming_select::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designe_cartesian_point) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designt_parameter_value) - out << _sdaireal; - else { + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designt_parameter_value) + WriteReal(_real,out); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiTrimming_select::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designe_cartesian_point) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designt_parameter_value) + return sdaiREAL; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiTrimming_select::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designe_cartesian_point) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designt_parameter_value) + { + out << tmp.chars() << "("; + WriteReal(_real,out); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -10374,31 +15841,31 @@ SdaiTrimming_select::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiTrimming_select::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiTrimming_select::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designe_cartesian_point) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designt_parameter_value) { - ReadReal (_sdaireal, in, &_error, "),"); + ReadReal (_real, in, &_error, "),"); return severity (); } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -10410,11 +15877,12 @@ Severity SdaiTrimming_select::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -10426,129 +15894,236 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiTrimming_select (os_database *db) +{ + return new (db, SdaiTrimming_select::get_os_typespec()) + SdaiTrimming_select ; +} + +void +SdaiTrimming_select_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiTrimming_select access hook funct called." << G4endl; + } +#endif + SdaiTrimming_select *s = (SdaiTrimming_select *) object; + s->_type = config_control_designt_trimming_select; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiTrimming_selects (os_database *db) +{ + return new (db, SdaiTrimming_selects::get_os_typespec()) + SdaiTrimming_selects ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiTrimming_select::SdaiTrimming_select() - : SdaiSelect (config_control_designt_trimming_select) +SdaiTrimming_select::SdaiTrimming_select( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiTrimming_select constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiTrimming_select constructor." << G4endl; + } +#endif } // part 1 -SdaiTrimming_select::SdaiTrimming_select( const SdaiCartesian_pointH& o ) - : SdaiSelect (config_control_designt_trimming_select, config_control_designe_cartesian_point ) +SdaiTrimming_select::SdaiTrimming_select( const SdaiCartesian_point_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_cartesian_point) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiTrimming_select constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiTrimming_select constructor." << G4endl; + } +#endif } -SdaiTrimming_select::SdaiTrimming_select( const SdaiParameter_value& o ) - : SdaiSelect (config_control_designt_trimming_select, config_control_designt_parameter_value ) +SdaiTrimming_select::SdaiTrimming_select( const SdaiParameter_value& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designt_parameter_value) { - _sdaireal = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiTrimming_select constructor." << G4endl; + } +#endif + _real = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiTrimming_select constructor." << G4endl; + } +#endif } SdaiTrimming_select::~SdaiTrimming_select() { } +SdaiTrimming_selects::SdaiTrimming_selects( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiTrimming_selects::~SdaiTrimming_selects() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiTrimming_selects::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiTrimming_select::get_os_typespec() ) + SdaiTrimming_select ); +} +#endif + // part 2 -SdaiTrimming_select::operator SdaiCartesian_pointH() +SdaiTrimming_select::operator SdaiCartesian_point_ptr() { if( CurrentUnderlyingType () == config_control_designe_cartesian_point ) - return ((SdaiCartesian_pointH) _stepentityh); + return ((SdaiCartesian_point_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } SdaiTrimming_select::operator SdaiParameter_value() { if( CurrentUnderlyingType () == config_control_designt_parameter_value ) - return _sdaireal; + return _real; - severity( SEVERITY_WARNING ); - Error( "Underlying type is not SdaiParameter_value" ); + severity( SEVERITY_WARNING ); + Error( "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." ); - return NULL; + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); + return 0; } // part 3 -const RealAggregateH -SdaiTrimming_select::Coordinates() const +const RealAggregate_ptr +SdaiTrimming_select::coordinates_() const { if( CurrentUnderlyingType () == config_control_designe_cartesian_point ) // CARTESIAN_POINT - return ((SdaiCartesian_pointH) _stepentityh) ->Coordinates(); + return ((SdaiCartesian_point_ptr) _app_inst) ->coordinates_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiTrimming_select::Coordinates (RealAggregateH x) +SdaiTrimming_select::coordinates_ (const RealAggregate_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_cartesian_point ) // CARTESIAN_POINT - { ((SdaiCartesian_pointH) _stepentityh) ->Coordinates( x ); + { ((SdaiCartesian_point_ptr) _app_inst) ->coordinates_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiLabel -SdaiTrimming_select::Name() const +SdaiTrimming_select::name_() const { if( CurrentUnderlyingType () == config_control_designe_cartesian_point ) // CARTESIAN_POINT - return ((SdaiCartesian_pointH) _stepentityh) ->Name(); + return ((SdaiCartesian_point_ptr) _app_inst) ->name_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiTrimming_select::Name (const char * x) +SdaiTrimming_select::name_ (const SdaiLabel x) + { if( CurrentUnderlyingType () == config_control_designe_cartesian_point ) // CARTESIAN_POINT - { ((SdaiCartesian_pointH) _stepentityh) ->Name( x ); + { ((SdaiCartesian_point_ptr) _app_inst) ->name_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } // part 4 -SdaiTrimming_select& SdaiTrimming_select::operator =( const SdaiCartesian_pointH& o ) +SdaiTrimming_select& SdaiTrimming_select::operator =( const SdaiCartesian_point_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_cartesian_point); return *this; } SdaiTrimming_select& SdaiTrimming_select::operator =( const SdaiParameter_value& o ) { - nullify (); - _sdaireal = o; + nullify (); + _real = o; SetUnderlyingType (config_control_designt_parameter_value); return *this; } @@ -10556,43 +16131,52 @@ SdaiTrimming_select& SdaiTrimming_select::operator =( const SdaiParameter_value& #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiTrimming_select& SdaiTrimming_select::operator =( const SdaiTrimming_selectH& o ) + +SdaiTrimming_select& SdaiTrimming_select::operator =( const SdaiTrimming_select_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designe_cartesian_point ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designt_parameter_value ) - _sdaireal = o -> _sdaireal; + if ( o -> CurrentUnderlyingType () == config_control_designe_cartesian_point ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designt_parameter_value ) + _real = o -> _real; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiTrimming_select::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiTrimming_select::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designe_cartesian_point ) - _stepentityh = ((SdaiTrimming_select&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designt_parameter_value ) - _sdaireal = ((SdaiTrimming_select&) o)._sdaireal; + if ( o.CurrentUnderlyingType () == config_control_designe_cartesian_point ) + _app_inst = ((SdaiTrimming_select&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designt_parameter_value ) + _real = ((SdaiTrimming_select&) o)._real; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiTrimming_select::IsCartesian_point() const +SCLLOG(Logical) SdaiTrimming_select::IsCartesian_point() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_cartesian_point ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiTrimming_select::IsParameter_value() const +SCLLOG(Logical) SdaiTrimming_select::IsParameter_value() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designt_parameter_value ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } ////////// END SELECT TYPE SdaiTrimming_select @@ -10601,39 +16185,85 @@ SdaiLogical SdaiTrimming_select::IsParameter_value() const ////////// SELECT TYPE contracted_item const TypeDescriptor * -SdaiContracted_item::AssignEntity (STEPentity * se) +SdaiContracted_item::AssignEntity (SCLP23(Application_instance) * se) { // PRODUCT_DEFINITION_FORMATION - if (se -> eDesc -> IsA (config_control_designe_product_definition_formation)) + if (se -> IsA (config_control_designe_product_definition_formation)) { - _stepentityh = (SdaiProduct_definition_formationH) se; + _app_inst = (SdaiProduct_definition_formation_ptr) se; return SetUnderlyingType (config_control_designe_product_definition_formation); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiContracted_item::NewSelect () { - SdaiContracted_item * tmp = new SdaiContracted_item (); - return tmp; +#ifdef __OSTORE__ + SdaiContracted_item * tmp = + new( os_segment::of(this), + SdaiContracted_item::get_os_typespec() ) + SdaiContracted_item(); +#else + SdaiContracted_item * tmp = new SdaiContracted_item(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiContracted_item::STEPwrite_content (G4std::ostream& out) const +SdaiContracted_item::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designe_product_definition_formation) - _stepentityh -> STEPwrite_reference (out); - else { + _app_inst -> STEPwrite_reference (out); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiContracted_item::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designe_product_definition_formation) + return sdaiINSTANCE; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiContracted_item::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designe_product_definition_formation) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -10641,26 +16271,27 @@ SdaiContracted_item::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiContracted_item::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiContracted_item::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designe_product_definition_formation) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -10672,11 +16303,12 @@ Severity SdaiContracted_item::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -10688,128 +16320,222 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiContracted_item (os_database *db) +{ + return new (db, SdaiContracted_item::get_os_typespec()) + SdaiContracted_item ; +} + +void +SdaiContracted_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiContracted_item access hook funct called." << G4endl; + } +#endif + SdaiContracted_item *s = (SdaiContracted_item *) object; + s->_type = config_control_designt_contracted_item; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiContracted_items (os_database *db) +{ + return new (db, SdaiContracted_items::get_os_typespec()) + SdaiContracted_items ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiContracted_item::SdaiContracted_item() - : SdaiSelect (config_control_designt_contracted_item) +SdaiContracted_item::SdaiContracted_item( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiContracted_item constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiContracted_item constructor." << G4endl; + } +#endif } // part 1 -SdaiContracted_item::SdaiContracted_item( const SdaiProduct_definition_formationH& o ) - : SdaiSelect (config_control_designt_contracted_item, config_control_designe_product_definition_formation ) +SdaiContracted_item::SdaiContracted_item( const SdaiProduct_definition_formation_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_product_definition_formation) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiContracted_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiContracted_item constructor." << G4endl; + } +#endif } SdaiContracted_item::~SdaiContracted_item() { } +SdaiContracted_items::SdaiContracted_items( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiContracted_items::~SdaiContracted_items() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiContracted_items::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiContracted_item::get_os_typespec() ) + SdaiContracted_item ); +} +#endif + // part 2 -SdaiContracted_item::operator SdaiProduct_definition_formationH() +SdaiContracted_item::operator SdaiProduct_definition_formation_ptr() { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) - return ((SdaiProduct_definition_formationH) _stepentityh); + return ((SdaiProduct_definition_formation_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } // part 3 -SdaiProductH -SdaiContracted_item::Of_product() const +const SdaiProduct_ptr +SdaiContracted_item::of_product_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - return ((SdaiProduct_definition_formationH) _stepentityh) ->Of_product(); + return ((SdaiProduct_definition_formation_ptr) _app_inst) ->of_product_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiContracted_item::Of_product (SdaiProductH x) +SdaiContracted_item::of_product_ (const SdaiProduct_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - { ((SdaiProduct_definition_formationH) _stepentityh) ->Of_product( x ); + { ((SdaiProduct_definition_formation_ptr) _app_inst) ->of_product_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiText -SdaiContracted_item::Description() const +SdaiContracted_item::description_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - return ((SdaiProduct_definition_formationH) _stepentityh) ->Description(); + return ((SdaiProduct_definition_formation_ptr) _app_inst) ->description_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiContracted_item::Description (const char * x) +SdaiContracted_item::description_ (const SdaiText x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - { ((SdaiProduct_definition_formationH) _stepentityh) ->Description( x ); + { ((SdaiProduct_definition_formation_ptr) _app_inst) ->description_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiIdentifier -SdaiContracted_item::Id() const +SdaiContracted_item::id_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - return ((SdaiProduct_definition_formationH) _stepentityh) ->Id(); + return ((SdaiProduct_definition_formation_ptr) _app_inst) ->id_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiContracted_item::Id (const char * x) +SdaiContracted_item::id_ (const SdaiIdentifier x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - { ((SdaiProduct_definition_formationH) _stepentityh) ->Id( x ); + { ((SdaiProduct_definition_formation_ptr) _app_inst) ->id_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } // part 4 -SdaiContracted_item& SdaiContracted_item::operator =( const SdaiProduct_definition_formationH& o ) +SdaiContracted_item& SdaiContracted_item::operator =( const SdaiProduct_definition_formation_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_product_definition_formation); return *this; } @@ -10817,30 +16543,39 @@ SdaiContracted_item& SdaiContracted_item::operator =( const SdaiProduct_definiti #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiContracted_item& SdaiContracted_item::operator =( const SdaiContracted_itemH& o ) + +SdaiContracted_item& SdaiContracted_item::operator =( const SdaiContracted_item_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designe_product_definition_formation ) - _stepentityh = o -> _stepentityh; + if ( o -> CurrentUnderlyingType () == config_control_designe_product_definition_formation ) + _app_inst = o -> _app_inst; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiContracted_item::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiContracted_item::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designe_product_definition_formation ) - _stepentityh = ((SdaiContracted_item&) o)._stepentityh; + if ( o.CurrentUnderlyingType () == config_control_designe_product_definition_formation ) + _app_inst = ((SdaiContracted_item&) o)._app_inst; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiContracted_item::IsProduct_definition_formation() const +SCLLOG(Logical) SdaiContracted_item::IsProduct_definition_formation() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } ////////// END SELECT TYPE SdaiContracted_item @@ -10849,39 +16584,85 @@ SdaiLogical SdaiContracted_item::IsProduct_definition_formation() const ////////// SELECT TYPE unit const TypeDescriptor * -SdaiUnit::AssignEntity (STEPentity * se) +SdaiUnit::AssignEntity (SCLP23(Application_instance) * se) { // NAMED_UNIT - if (se -> eDesc -> IsA (config_control_designe_named_unit)) + if (se -> IsA (config_control_designe_named_unit)) { - _stepentityh = (SdaiNamed_unitH) se; + _app_inst = (SdaiNamed_unit_ptr) se; return SetUnderlyingType (config_control_designe_named_unit); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiUnit::NewSelect () { - SdaiUnit * tmp = new SdaiUnit (); - return tmp; +#ifdef __OSTORE__ + SdaiUnit * tmp = + new( os_segment::of(this), + SdaiUnit::get_os_typespec() ) + SdaiUnit(); +#else + SdaiUnit * tmp = new SdaiUnit(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiUnit::STEPwrite_content (G4std::ostream& out) const +SdaiUnit::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designe_named_unit) - _stepentityh -> STEPwrite_reference (out); - else { + _app_inst -> STEPwrite_reference (out); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiUnit::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designe_named_unit) + return sdaiINSTANCE; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiUnit::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designe_named_unit) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -10889,26 +16670,27 @@ SdaiUnit::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiUnit::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiUnit::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designe_named_unit) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -10920,11 +16702,12 @@ Severity SdaiUnit::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -10936,74 +16719,166 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiUnit (os_database *db) +{ + return new (db, SdaiUnit::get_os_typespec()) + SdaiUnit ; +} + +void +SdaiUnit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiUnit access hook funct called." << G4endl; + } +#endif + SdaiUnit *s = (SdaiUnit *) object; + s->_type = config_control_designt_unit; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiUnits (os_database *db) +{ + return new (db, SdaiUnits::get_os_typespec()) + SdaiUnits ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiUnit::SdaiUnit() - : SdaiSelect (config_control_designt_unit) +SdaiUnit::SdaiUnit( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiUnit constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiUnit constructor." << G4endl; + } +#endif } // part 1 -SdaiUnit::SdaiUnit( const SdaiNamed_unitH& o ) - : SdaiSelect (config_control_designt_unit, config_control_designe_named_unit ) +SdaiUnit::SdaiUnit( const SdaiNamed_unit_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_named_unit) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiUnit constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiUnit constructor." << G4endl; + } +#endif } SdaiUnit::~SdaiUnit() { } +SdaiUnits::SdaiUnits( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiUnits::~SdaiUnits() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiUnits::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiUnit::get_os_typespec() ) + SdaiUnit ); +} +#endif + // part 2 -SdaiUnit::operator SdaiNamed_unitH() +SdaiUnit::operator SdaiNamed_unit_ptr() { if( CurrentUnderlyingType () == config_control_designe_named_unit ) - return ((SdaiNamed_unitH) _stepentityh); + return ((SdaiNamed_unit_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } // part 3 -SdaiDimensional_exponentsH -SdaiUnit::Dimensions() const +const SdaiDimensional_exponents_ptr +SdaiUnit::dimensions_() const { if( CurrentUnderlyingType () == config_control_designe_named_unit ) // NAMED_UNIT - return ((SdaiNamed_unitH) _stepentityh) ->Dimensions(); + return ((SdaiNamed_unit_ptr) _app_inst) ->dimensions_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiUnit::Dimensions (SdaiDimensional_exponentsH x) +SdaiUnit::dimensions_ (const SdaiDimensional_exponents_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_named_unit ) // NAMED_UNIT - { ((SdaiNamed_unitH) _stepentityh) ->Dimensions( x ); + { ((SdaiNamed_unit_ptr) _app_inst) ->dimensions_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } // part 4 -SdaiUnit& SdaiUnit::operator =( const SdaiNamed_unitH& o ) +SdaiUnit& SdaiUnit::operator =( const SdaiNamed_unit_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_named_unit); return *this; } @@ -11011,30 +16886,39 @@ SdaiUnit& SdaiUnit::operator =( const SdaiNamed_unitH& o ) #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiUnit& SdaiUnit::operator =( const SdaiUnitH& o ) + +SdaiUnit& SdaiUnit::operator =( const SdaiUnit_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designe_named_unit ) - _stepentityh = o -> _stepentityh; + if ( o -> CurrentUnderlyingType () == config_control_designe_named_unit ) + _app_inst = o -> _app_inst; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiUnit::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiUnit::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designe_named_unit ) - _stepentityh = ((SdaiUnit&) o)._stepentityh; + if ( o.CurrentUnderlyingType () == config_control_designe_named_unit ) + _app_inst = ((SdaiUnit&) o)._app_inst; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiUnit::IsNamed_unit() const +SCLLOG(Logical) SdaiUnit::IsNamed_unit() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_named_unit ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } ////////// END SELECT TYPE SdaiUnit @@ -11043,7 +16927,7 @@ SdaiLogical SdaiUnit::IsNamed_unit() const ////////// SELECT TYPE reversible_topology const TypeDescriptor * -SdaiReversible_topology::AssignEntity (STEPentity * se) +SdaiReversible_topology::AssignEntity (SCLP23(Application_instance) * se) { // REVERSIBLE_TOPOLOGY_ITEM if (config_control_designt_reversible_topology_item -> CanBe (se -> eDesc)) @@ -11051,35 +16935,97 @@ SdaiReversible_topology::AssignEntity (STEPentity * se) _sdaireversible_topology_item.AssignEntity (se); return SetUnderlyingType (config_control_designt_reversible_topology_item); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiReversible_topology::NewSelect () { - SdaiReversible_topology * tmp = new SdaiReversible_topology (); - return tmp; +#ifdef __OSTORE__ + SdaiReversible_topology * tmp = + new( os_segment::of(this), + SdaiReversible_topology::get_os_typespec() ) + SdaiReversible_topology(); +#else + SdaiReversible_topology * tmp = new SdaiReversible_topology(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiReversible_topology::STEPwrite_content (G4std::ostream& out) const +SdaiReversible_topology::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designt_reversible_topology_item) - _sdaireversible_topology_item.STEPwrite (out); - else if (CurrentUnderlyingType () == config_control_designt_list_of_reversible_topology_item) + _sdaireversible_topology_item.STEPwrite (out, currSch); + else if (CurrentUnderlyingType () == config_control_designt_list_of_reversible_topology_item) _sdaireversible_topology_items.STEPwrite (out); - else if (CurrentUnderlyingType () == config_control_designt_set_of_reversible_topology_item) + else if (CurrentUnderlyingType () == config_control_designt_set_of_reversible_topology_item) _sdaireversible_topology_items.STEPwrite (out); - else { + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiReversible_topology::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designt_reversible_topology_item) + return _sdaireversible_topology_item.ValueType(); + else if (CurrentUnderlyingType() == config_control_designt_list_of_reversible_topology_item) + return LIST_TYPE; + else if (CurrentUnderlyingType() == config_control_designt_set_of_reversible_topology_item) + return SET_TYPE; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiReversible_topology::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designt_reversible_topology_item) + { + out << tmp.chars() << "("; + _sdaireversible_topology_item.STEPwrite_verbose (out, currSch); + out << ")"; + } + else if (td == config_control_designt_list_of_reversible_topology_item) + { + out << tmp.chars() << "("; + _sdaireversible_topology_items.STEPwrite (out, currSch); + out << ")"; + } + else if (td == config_control_designt_set_of_reversible_topology_item) + { + out << tmp.chars() << "("; + _sdaireversible_topology_items.STEPwrite (out, currSch); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -11087,24 +17033,30 @@ SdaiReversible_topology::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiReversible_topology::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiReversible_topology::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designt_reversible_topology_item) { - _sdaireversible_topology_item.STEPread (in, &_error, instances, addFileId); + _sdaireversible_topology_item.STEPread (in, &_error, instances, utype, addFileId, currSch); return severity (); } if (CurrentUnderlyingType () == config_control_designt_list_of_reversible_topology_item) { - _sdaireversible_topology_items.STEPread (in, &_error, config_control_designt_list_of_reversible_topology_item -> AggrElemTypeDescriptor (), instances, addFileId); + _sdaireversible_topology_items.STEPread (in, &_error, + config_control_designt_list_of_reversible_topology_item -> AggrElemTypeDescriptor (), + instances, addFileId, currSch); return severity (); } if (CurrentUnderlyingType () == config_control_designt_set_of_reversible_topology_item) { - _sdaireversible_topology_items.STEPread (in, &_error, config_control_designt_set_of_reversible_topology_item -> AggrElemTypeDescriptor (), instances, addFileId); + _sdaireversible_topology_items.STEPread (in, &_error, + config_control_designt_set_of_reversible_topology_item -> AggrElemTypeDescriptor (), + instances, addFileId, currSch); return severity (); } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -11118,11 +17070,12 @@ SdaiReversible_topology::StrToVal_content (const char * str, InstMgr * instances switch (base_type) { case LIST_TYPE : return _sdaireversible_topology_items.StrToVal (str, &_error, config_control_designt_list_of_reversible_topology_item -> AggrElemTypeDescriptor ()); - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -11134,138 +17087,257 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiReversible_topology (os_database *db) +{ + return new (db, SdaiReversible_topology::get_os_typespec()) + SdaiReversible_topology ; +} + +void +SdaiReversible_topology_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiReversible_topology access hook funct called." << G4endl; + } +#endif + SdaiReversible_topology *s = (SdaiReversible_topology *) object; + s->_type = config_control_designt_reversible_topology; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiReversible_topologys (os_database *db) +{ + return new (db, SdaiReversible_topologys::get_os_typespec()) + SdaiReversible_topologys ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiReversible_topology::SdaiReversible_topology() - : SdaiSelect (config_control_designt_reversible_topology) +SdaiReversible_topology::SdaiReversible_topology( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript), + _sdaireversible_topology_item (config_control_designt_reversible_topology_item) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiReversible_topology constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiReversible_topology constructor." << G4endl; + } +#endif } // part 1 -SdaiReversible_topology::SdaiReversible_topology( const SdaiReversible_topology_itemH& o ) - : SdaiSelect (config_control_designt_reversible_topology, config_control_designt_reversible_topology_item ) +SdaiReversible_topology::SdaiReversible_topology( const SdaiReversible_topology_item_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designt_reversible_topology_item), + _sdaireversible_topology_item (config_control_designt_reversible_topology_item) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiReversible_topology constructor." << G4endl; + } +#endif _sdaireversible_topology_item = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiReversible_topology constructor." << G4endl; + } +#endif } -SdaiReversible_topology::SdaiReversible_topology( const SdaiReversible_topology_itemsH& o ) - : SdaiSelect (config_control_designt_reversible_topology, config_control_designt_set_of_reversible_topology_item ) +SdaiReversible_topology::SdaiReversible_topology( const SdaiSet_of_reversible_topology_item_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) ( typedescript, config_control_designt_set_of_reversible_topology_item ), + _sdaireversible_topology_item (config_control_designt_reversible_topology_item) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiReversible_topology constructor." << G4endl; + } +#endif _sdaireversible_topology_items.ShallowCopy (*o); // NOTE: Underlying type defaults to config_control_designt_set_of_reversible_topology_item instead of NULL +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiReversible_topology constructor." << G4endl; + } +#endif } SdaiReversible_topology::~SdaiReversible_topology() { } +SdaiReversible_topologys::SdaiReversible_topologys( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiReversible_topologys::~SdaiReversible_topologys() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiReversible_topologys::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiReversible_topology::get_os_typespec() ) + SdaiReversible_topology ); +} +#endif + // part 2 -SdaiReversible_topology::operator SdaiReversible_topology_itemH() +SdaiReversible_topology::operator SdaiReversible_topology_item_ptr() { if( CurrentUnderlyingType () == config_control_designt_reversible_topology_item ) return & _sdaireversible_topology_item; - severity( SEVERITY_WARNING ); - Error( "Underlying type is not SdaiReversible_topology_itemH" ); + severity( SEVERITY_WARNING ); + Error( "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." ); - return NULL; + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); + return 0; } -SdaiReversible_topology::operator SdaiSet_of_reversible_topology_itemH() +SdaiReversible_topology::operator SdaiSet_of_reversible_topology_item_ptr() { if( CurrentUnderlyingType () == config_control_designt_list_of_reversible_topology_item ) return & _sdaireversible_topology_items; if( CurrentUnderlyingType () == config_control_designt_set_of_reversible_topology_item ) return & _sdaireversible_topology_items; - severity( SEVERITY_WARNING ); - Error( "Underlying type is not SdaiSet_of_reversible_topology_itemH" ); + severity( SEVERITY_WARNING ); + Error( "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." ); - return NULL; + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); + return (SdaiSet_of_reversible_topology_item_ptr)0; } // part 3 // part 4 -SdaiReversible_topology& SdaiReversible_topology::operator =( const SdaiReversible_topology_itemH& o ) +SdaiReversible_topology& SdaiReversible_topology::operator =( const SdaiReversible_topology_item_ptr& o ) { - nullify (); + nullify (); _sdaireversible_topology_item = o; SetUnderlyingType (config_control_designt_reversible_topology_item); return *this; } -SdaiReversible_topology& SdaiReversible_topology::operator =( const SdaiReversible_topology_itemsH& o ) +SdaiReversible_topology& SdaiReversible_topology::operator =( const SdaiSet_of_reversible_topology_item_ptr& o ) { _sdaireversible_topology_items.ShallowCopy (*o); - underlying_type = 0; // MUST BE SET BY USER -// discriminator = UNSET + underlying_type = 0; // MUST BE SET BY USER +#ifdef __OSTORE__ + underlying_type_name.set_null(); +#endif + // discriminator = UNSET return *this; } - #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiReversible_topology& SdaiReversible_topology::operator =( const SdaiReversible_topologyH& o ) + +SdaiReversible_topology& SdaiReversible_topology::operator =( const SdaiReversible_topology_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designt_reversible_topology_item ) - _sdaireversible_topology_item = o -> _sdaireversible_topology_item; - if( o -> CurrentUnderlyingType () == config_control_designt_list_of_reversible_topology_item ) + if ( o -> CurrentUnderlyingType () == config_control_designt_reversible_topology_item ) + _sdaireversible_topology_item = &(o -> _sdaireversible_topology_item); + else if ( o -> CurrentUnderlyingType () == config_control_designt_list_of_reversible_topology_item ) _sdaireversible_topology_items = o -> _sdaireversible_topology_items; - if( o -> CurrentUnderlyingType () == config_control_designt_set_of_reversible_topology_item ) + else if ( o -> CurrentUnderlyingType () == config_control_designt_set_of_reversible_topology_item ) _sdaireversible_topology_items = o -> _sdaireversible_topology_items; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiReversible_topology::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiReversible_topology::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designt_reversible_topology_item ) - _sdaireversible_topology_item = ((SdaiReversible_topology&) o)._sdaireversible_topology_item; - if( o.CurrentUnderlyingType () == config_control_designt_list_of_reversible_topology_item ) + if ( o.CurrentUnderlyingType () == config_control_designt_reversible_topology_item ) + _sdaireversible_topology_item = &(((SdaiReversible_topology&) o)._sdaireversible_topology_item); + else if ( o.CurrentUnderlyingType () == config_control_designt_list_of_reversible_topology_item ) _sdaireversible_topology_items = ((SdaiReversible_topology&) o)._sdaireversible_topology_items; - if( o.CurrentUnderlyingType () == config_control_designt_set_of_reversible_topology_item ) + else if ( o.CurrentUnderlyingType () == config_control_designt_set_of_reversible_topology_item ) _sdaireversible_topology_items = ((SdaiReversible_topology&) o)._sdaireversible_topology_items; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiReversible_topology::IsReversible_topology_item() const +SCLLOG(Logical) SdaiReversible_topology::IsReversible_topology_item() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designt_reversible_topology_item ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiReversible_topology::IsList_of_reversible_topology_item() const +SCLLOG(Logical) SdaiReversible_topology::IsList_of_reversible_topology_item() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designt_list_of_reversible_topology_item ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiReversible_topology::IsSet_of_reversible_topology_item() const +SCLLOG(Logical) SdaiReversible_topology::IsSet_of_reversible_topology_item() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designt_set_of_reversible_topology_item ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } @@ -11273,7 +17345,11 @@ SdaiLogical SdaiReversible_topology::IsSet_of_reversible_topology_item() const const TypeDescriptor * SdaiReversible_topology::SetUnderlyingType (const TypeDescriptor * td) { - return SdaiSelect::SetUnderlyingType (td); +#ifndef WIN32 + return SCLP23(Select)::SetUnderlyingType (td); +#else + return StepSelectType::SetUnderlyingType (td); +#endif } ////////// END SELECT TYPE SdaiReversible_topology @@ -11281,39 +17357,85 @@ SdaiReversible_topology::SetUnderlyingType (const TypeDescriptor * td) ////////// SELECT TYPE work_item const TypeDescriptor * -SdaiWork_item::AssignEntity (STEPentity * se) +SdaiWork_item::AssignEntity (SCLP23(Application_instance) * se) { // PRODUCT_DEFINITION_FORMATION - if (se -> eDesc -> IsA (config_control_designe_product_definition_formation)) + if (se -> IsA (config_control_designe_product_definition_formation)) { - _stepentityh = (SdaiProduct_definition_formationH) se; + _app_inst = (SdaiProduct_definition_formation_ptr) se; return SetUnderlyingType (config_control_designe_product_definition_formation); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiWork_item::NewSelect () { - SdaiWork_item * tmp = new SdaiWork_item (); - return tmp; +#ifdef __OSTORE__ + SdaiWork_item * tmp = + new( os_segment::of(this), + SdaiWork_item::get_os_typespec() ) + SdaiWork_item(); +#else + SdaiWork_item * tmp = new SdaiWork_item(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiWork_item::STEPwrite_content (G4std::ostream& out) const +SdaiWork_item::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designe_product_definition_formation) - _stepentityh -> STEPwrite_reference (out); - else { + _app_inst -> STEPwrite_reference (out); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiWork_item::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designe_product_definition_formation) + return sdaiINSTANCE; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiWork_item::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designe_product_definition_formation) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -11321,26 +17443,27 @@ SdaiWork_item::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiWork_item::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiWork_item::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designe_product_definition_formation) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -11352,11 +17475,12 @@ Severity SdaiWork_item::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -11368,128 +17492,222 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiWork_item (os_database *db) +{ + return new (db, SdaiWork_item::get_os_typespec()) + SdaiWork_item ; +} + +void +SdaiWork_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiWork_item access hook funct called." << G4endl; + } +#endif + SdaiWork_item *s = (SdaiWork_item *) object; + s->_type = config_control_designt_work_item; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiWork_items (os_database *db) +{ + return new (db, SdaiWork_items::get_os_typespec()) + SdaiWork_items ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiWork_item::SdaiWork_item() - : SdaiSelect (config_control_designt_work_item) +SdaiWork_item::SdaiWork_item( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiWork_item constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiWork_item constructor." << G4endl; + } +#endif } // part 1 -SdaiWork_item::SdaiWork_item( const SdaiProduct_definition_formationH& o ) - : SdaiSelect (config_control_designt_work_item, config_control_designe_product_definition_formation ) +SdaiWork_item::SdaiWork_item( const SdaiProduct_definition_formation_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_product_definition_formation) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiWork_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiWork_item constructor." << G4endl; + } +#endif } SdaiWork_item::~SdaiWork_item() { } +SdaiWork_items::SdaiWork_items( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiWork_items::~SdaiWork_items() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiWork_items::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiWork_item::get_os_typespec() ) + SdaiWork_item ); +} +#endif + // part 2 -SdaiWork_item::operator SdaiProduct_definition_formationH() +SdaiWork_item::operator SdaiProduct_definition_formation_ptr() { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) - return ((SdaiProduct_definition_formationH) _stepentityh); + return ((SdaiProduct_definition_formation_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } // part 3 -SdaiProductH -SdaiWork_item::Of_product() const +const SdaiProduct_ptr +SdaiWork_item::of_product_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - return ((SdaiProduct_definition_formationH) _stepentityh) ->Of_product(); + return ((SdaiProduct_definition_formation_ptr) _app_inst) ->of_product_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiWork_item::Of_product (SdaiProductH x) +SdaiWork_item::of_product_ (const SdaiProduct_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - { ((SdaiProduct_definition_formationH) _stepentityh) ->Of_product( x ); + { ((SdaiProduct_definition_formation_ptr) _app_inst) ->of_product_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiText -SdaiWork_item::Description() const +SdaiWork_item::description_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - return ((SdaiProduct_definition_formationH) _stepentityh) ->Description(); + return ((SdaiProduct_definition_formation_ptr) _app_inst) ->description_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiWork_item::Description (const char * x) +SdaiWork_item::description_ (const SdaiText x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - { ((SdaiProduct_definition_formationH) _stepentityh) ->Description( x ); + { ((SdaiProduct_definition_formation_ptr) _app_inst) ->description_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiIdentifier -SdaiWork_item::Id() const +SdaiWork_item::id_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - return ((SdaiProduct_definition_formationH) _stepentityh) ->Id(); + return ((SdaiProduct_definition_formation_ptr) _app_inst) ->id_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiWork_item::Id (const char * x) +SdaiWork_item::id_ (const SdaiIdentifier x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - { ((SdaiProduct_definition_formationH) _stepentityh) ->Id( x ); + { ((SdaiProduct_definition_formation_ptr) _app_inst) ->id_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } // part 4 -SdaiWork_item& SdaiWork_item::operator =( const SdaiProduct_definition_formationH& o ) +SdaiWork_item& SdaiWork_item::operator =( const SdaiProduct_definition_formation_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_product_definition_formation); return *this; } @@ -11497,30 +17715,39 @@ SdaiWork_item& SdaiWork_item::operator =( const SdaiProduct_definition_formation #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiWork_item& SdaiWork_item::operator =( const SdaiWork_itemH& o ) + +SdaiWork_item& SdaiWork_item::operator =( const SdaiWork_item_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designe_product_definition_formation ) - _stepentityh = o -> _stepentityh; + if ( o -> CurrentUnderlyingType () == config_control_designe_product_definition_formation ) + _app_inst = o -> _app_inst; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiWork_item::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiWork_item::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designe_product_definition_formation ) - _stepentityh = ((SdaiWork_item&) o)._stepentityh; + if ( o.CurrentUnderlyingType () == config_control_designe_product_definition_formation ) + _app_inst = ((SdaiWork_item&) o)._app_inst; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiWork_item::IsProduct_definition_formation() const +SCLLOG(Logical) SdaiWork_item::IsProduct_definition_formation() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } ////////// END SELECT TYPE SdaiWork_item @@ -11529,55 +17756,117 @@ SdaiLogical SdaiWork_item::IsProduct_definition_formation() const ////////// SELECT TYPE supported_item const TypeDescriptor * -SdaiSupported_item::AssignEntity (STEPentity * se) +SdaiSupported_item::AssignEntity (SCLP23(Application_instance) * se) { // ACTION_DIRECTIVE - if (se -> eDesc -> IsA (config_control_designe_action_directive)) + if (se -> IsA (config_control_designe_action_directive)) { - _stepentityh = (SdaiAction_directiveH) se; + _app_inst = (SdaiAction_directive_ptr) se; return SetUnderlyingType (config_control_designe_action_directive); } // ACTION - if (se -> eDesc -> IsA (config_control_designe_action)) + if (se -> IsA (config_control_designe_action)) { - _stepentityh = (SdaiActionH) se; + _app_inst = (SdaiAction_ptr) se; return SetUnderlyingType (config_control_designe_action); } // ACTION_METHOD - if (se -> eDesc -> IsA (config_control_designe_action_method)) + if (se -> IsA (config_control_designe_action_method)) { - _stepentityh = (SdaiAction_methodH) se; + _app_inst = (SdaiAction_method_ptr) se; return SetUnderlyingType (config_control_designe_action_method); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiSupported_item::NewSelect () { - SdaiSupported_item * tmp = new SdaiSupported_item (); - return tmp; +#ifdef __OSTORE__ + SdaiSupported_item * tmp = + new( os_segment::of(this), + SdaiSupported_item::get_os_typespec() ) + SdaiSupported_item(); +#else + SdaiSupported_item * tmp = new SdaiSupported_item(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiSupported_item::STEPwrite_content (G4std::ostream& out) const +SdaiSupported_item::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designe_action_directive) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_action) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_action_method) - _stepentityh -> STEPwrite_reference (out); - else { + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_action) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_action_method) + _app_inst -> STEPwrite_reference (out); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiSupported_item::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designe_action_directive) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_action) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_action_method) + return sdaiINSTANCE; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiSupported_item::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designe_action_directive) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_action) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_action_method) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -11585,54 +17874,53 @@ SdaiSupported_item::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiSupported_item::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiSupported_item::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designe_action_directive) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_action) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_action_method) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -11644,11 +17932,12 @@ Severity SdaiSupported_item::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -11660,70 +17949,189 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiSupported_item (os_database *db) +{ + return new (db, SdaiSupported_item::get_os_typespec()) + SdaiSupported_item ; +} + +void +SdaiSupported_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiSupported_item access hook funct called." << G4endl; + } +#endif + SdaiSupported_item *s = (SdaiSupported_item *) object; + s->_type = config_control_designt_supported_item; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiSupported_items (os_database *db) +{ + return new (db, SdaiSupported_items::get_os_typespec()) + SdaiSupported_items ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiSupported_item::SdaiSupported_item() - : SdaiSelect (config_control_designt_supported_item) +SdaiSupported_item::SdaiSupported_item( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiSupported_item constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiSupported_item constructor." << G4endl; + } +#endif } // part 1 -SdaiSupported_item::SdaiSupported_item( const SdaiAction_directiveH& o ) - : SdaiSelect (config_control_designt_supported_item, config_control_designe_action_directive ) +SdaiSupported_item::SdaiSupported_item( const SdaiAction_directive_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_action_directive) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiSupported_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiSupported_item constructor." << G4endl; + } +#endif } -SdaiSupported_item::SdaiSupported_item( const SdaiActionH& o ) - : SdaiSelect (config_control_designt_supported_item, config_control_designe_action ) +SdaiSupported_item::SdaiSupported_item( const SdaiAction_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_action) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiSupported_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiSupported_item constructor." << G4endl; + } +#endif } -SdaiSupported_item::SdaiSupported_item( const SdaiAction_methodH& o ) - : SdaiSelect (config_control_designt_supported_item, config_control_designe_action_method ) +SdaiSupported_item::SdaiSupported_item( const SdaiAction_method_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_action_method) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiSupported_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiSupported_item constructor." << G4endl; + } +#endif } SdaiSupported_item::~SdaiSupported_item() { } +SdaiSupported_items::SdaiSupported_items( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiSupported_items::~SdaiSupported_items() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiSupported_items::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiSupported_item::get_os_typespec() ) + SdaiSupported_item ); +} +#endif + // part 2 -SdaiSupported_item::operator SdaiAction_directiveH() +SdaiSupported_item::operator SdaiAction_directive_ptr() { if( CurrentUnderlyingType () == config_control_designe_action_directive ) - return ((SdaiAction_directiveH) _stepentityh); + return ((SdaiAction_directive_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiSupported_item::operator SdaiActionH() +SdaiSupported_item::operator SdaiAction_ptr() { if( CurrentUnderlyingType () == config_control_designe_action ) - return ((SdaiActionH) _stepentityh); + return ((SdaiAction_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiSupported_item::operator SdaiAction_methodH() +SdaiSupported_item::operator SdaiAction_method_ptr() { if( CurrentUnderlyingType () == config_control_designe_action_method ) - return ((SdaiAction_methodH) _stepentityh); + return ((SdaiAction_method_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } @@ -11731,274 +18139,282 @@ SdaiSupported_item::operator SdaiAction_methodH() // part 3 const SdaiText -SdaiSupported_item::Purpose() const +SdaiSupported_item::purpose_() const { if( CurrentUnderlyingType () == config_control_designe_action_method ) // ACTION_METHOD - return ((SdaiAction_methodH) _stepentityh) ->Purpose(); + return ((SdaiAction_method_ptr) _app_inst) ->purpose_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiSupported_item::Purpose (const char * x) +SdaiSupported_item::purpose_ (const SdaiText x) + { if( CurrentUnderlyingType () == config_control_designe_action_method ) // ACTION_METHOD - { ((SdaiAction_methodH) _stepentityh) ->Purpose( x ); + { ((SdaiAction_method_ptr) _app_inst) ->purpose_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiText -SdaiSupported_item::Consequence() const +SdaiSupported_item::consequence_() const { if( CurrentUnderlyingType () == config_control_designe_action_method ) // ACTION_METHOD - return ((SdaiAction_methodH) _stepentityh) ->Consequence(); + return ((SdaiAction_method_ptr) _app_inst) ->consequence_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiSupported_item::Consequence (const char * x) +SdaiSupported_item::consequence_ (const SdaiText x) + { if( CurrentUnderlyingType () == config_control_designe_action_method ) // ACTION_METHOD - { ((SdaiAction_methodH) _stepentityh) ->Consequence( x ); + { ((SdaiAction_method_ptr) _app_inst) ->consequence_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiAction_methodH -SdaiSupported_item::Chosen_method() const +const SdaiAction_method_ptr +SdaiSupported_item::chosen_method_() const { if( CurrentUnderlyingType () == config_control_designe_action ) // ACTION - return ((SdaiActionH) _stepentityh) ->Chosen_method(); + return ((SdaiAction_ptr) _app_inst) ->chosen_method_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiSupported_item::Chosen_method (SdaiAction_methodH x) +SdaiSupported_item::chosen_method_ (const SdaiAction_method_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_action ) // ACTION - { ((SdaiActionH) _stepentityh) ->Chosen_method( x ); + { ((SdaiAction_ptr) _app_inst) ->chosen_method_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -const EntityAggregateH -SdaiSupported_item::Requests() const +const EntityAggregate_ptr +SdaiSupported_item::requests_() const { if( CurrentUnderlyingType () == config_control_designe_action_directive ) // ACTION_DIRECTIVE - return ((SdaiAction_directiveH) _stepentityh) ->Requests(); + return ((SdaiAction_directive_ptr) _app_inst) ->requests_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiSupported_item::Requests (EntityAggregateH x) +SdaiSupported_item::requests_ (const EntityAggregate_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_action_directive ) // ACTION_DIRECTIVE - { ((SdaiAction_directiveH) _stepentityh) ->Requests( x ); + { ((SdaiAction_directive_ptr) _app_inst) ->requests_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiText -SdaiSupported_item::Comment() const +SdaiSupported_item::comment_() const { if( CurrentUnderlyingType () == config_control_designe_action_directive ) // ACTION_DIRECTIVE - return ((SdaiAction_directiveH) _stepentityh) ->Comment(); + return ((SdaiAction_directive_ptr) _app_inst) ->comment_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiSupported_item::Comment (const char * x) +SdaiSupported_item::comment_ (const SdaiText x) + { if( CurrentUnderlyingType () == config_control_designe_action_directive ) // ACTION_DIRECTIVE - { ((SdaiAction_directiveH) _stepentityh) ->Comment( x ); + { ((SdaiAction_directive_ptr) _app_inst) ->comment_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiText -SdaiSupported_item::Analysis() const +SdaiSupported_item::analysis_() const { if( CurrentUnderlyingType () == config_control_designe_action_directive ) // ACTION_DIRECTIVE - return ((SdaiAction_directiveH) _stepentityh) ->Analysis(); + return ((SdaiAction_directive_ptr) _app_inst) ->analysis_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiSupported_item::Analysis (const char * x) +SdaiSupported_item::analysis_ (const SdaiText x) + { if( CurrentUnderlyingType () == config_control_designe_action_directive ) // ACTION_DIRECTIVE - { ((SdaiAction_directiveH) _stepentityh) ->Analysis( x ); + { ((SdaiAction_directive_ptr) _app_inst) ->analysis_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiText -SdaiSupported_item::Description() const +SdaiSupported_item::description_() const { if( CurrentUnderlyingType () == config_control_designe_action_directive ) // ACTION_DIRECTIVE - return ((SdaiAction_directiveH) _stepentityh) ->Description(); + return ((SdaiAction_directive_ptr) _app_inst) ->description_(); if( CurrentUnderlyingType () == config_control_designe_action ) // ACTION - return ((SdaiActionH) _stepentityh) ->Description(); + return ((SdaiAction_ptr) _app_inst) ->description_(); if( CurrentUnderlyingType () == config_control_designe_action_method ) // ACTION_METHOD - return ((SdaiAction_methodH) _stepentityh) ->Description(); + return ((SdaiAction_method_ptr) _app_inst) ->description_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiSupported_item::Description (const char * x) +SdaiSupported_item::description_ (const SdaiText x) + { if( CurrentUnderlyingType () == config_control_designe_action_directive ) // ACTION_DIRECTIVE - { ((SdaiAction_directiveH) _stepentityh) ->Description( x ); + { ((SdaiAction_directive_ptr) _app_inst) ->description_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_action ) // ACTION - { ((SdaiActionH) _stepentityh) ->Description( x ); + { ((SdaiAction_ptr) _app_inst) ->description_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_action_method ) // ACTION_METHOD - { ((SdaiAction_methodH) _stepentityh) ->Description( x ); + { ((SdaiAction_method_ptr) _app_inst) ->description_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiLabel -SdaiSupported_item::Name() const +SdaiSupported_item::name_() const { if( CurrentUnderlyingType () == config_control_designe_action_directive ) // ACTION_DIRECTIVE - return ((SdaiAction_directiveH) _stepentityh) ->Name(); + return ((SdaiAction_directive_ptr) _app_inst) ->name_(); if( CurrentUnderlyingType () == config_control_designe_action ) // ACTION - return ((SdaiActionH) _stepentityh) ->Name(); + return ((SdaiAction_ptr) _app_inst) ->name_(); if( CurrentUnderlyingType () == config_control_designe_action_method ) // ACTION_METHOD - return ((SdaiAction_methodH) _stepentityh) ->Name(); + return ((SdaiAction_method_ptr) _app_inst) ->name_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiSupported_item::Name (const char * x) +SdaiSupported_item::name_ (const SdaiLabel x) + { if( CurrentUnderlyingType () == config_control_designe_action_directive ) // ACTION_DIRECTIVE - { ((SdaiAction_directiveH) _stepentityh) ->Name( x ); + { ((SdaiAction_directive_ptr) _app_inst) ->name_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_action ) // ACTION - { ((SdaiActionH) _stepentityh) ->Name( x ); + { ((SdaiAction_ptr) _app_inst) ->name_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_action_method ) // ACTION_METHOD - { ((SdaiAction_methodH) _stepentityh) ->Name( x ); + { ((SdaiAction_method_ptr) _app_inst) ->name_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } // part 4 -SdaiSupported_item& SdaiSupported_item::operator =( const SdaiAction_directiveH& o ) +SdaiSupported_item& SdaiSupported_item::operator =( const SdaiAction_directive_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_action_directive); return *this; } -SdaiSupported_item& SdaiSupported_item::operator =( const SdaiActionH& o ) +SdaiSupported_item& SdaiSupported_item::operator =( const SdaiAction_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_action); return *this; } -SdaiSupported_item& SdaiSupported_item::operator =( const SdaiAction_methodH& o ) +SdaiSupported_item& SdaiSupported_item::operator =( const SdaiAction_method_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_action_method); return *this; } @@ -12006,56 +18422,65 @@ SdaiSupported_item& SdaiSupported_item::operator =( const SdaiAction_methodH& o #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiSupported_item& SdaiSupported_item::operator =( const SdaiSupported_itemH& o ) + +SdaiSupported_item& SdaiSupported_item::operator =( const SdaiSupported_item_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designe_action_directive ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_action ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_action_method ) - _stepentityh = o -> _stepentityh; + if ( o -> CurrentUnderlyingType () == config_control_designe_action_directive ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_action ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_action_method ) + _app_inst = o -> _app_inst; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiSupported_item::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiSupported_item::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designe_action_directive ) - _stepentityh = ((SdaiSupported_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_action ) - _stepentityh = ((SdaiSupported_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_action_method ) - _stepentityh = ((SdaiSupported_item&) o)._stepentityh; + if ( o.CurrentUnderlyingType () == config_control_designe_action_directive ) + _app_inst = ((SdaiSupported_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_action ) + _app_inst = ((SdaiSupported_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_action_method ) + _app_inst = ((SdaiSupported_item&) o)._app_inst; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiSupported_item::IsAction_directive() const +SCLLOG(Logical) SdaiSupported_item::IsAction_directive() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_action_directive ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiSupported_item::IsAction() const +SCLLOG(Logical) SdaiSupported_item::IsAction() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_action ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiSupported_item::IsAction_method() const +SCLLOG(Logical) SdaiSupported_item::IsAction_method() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_action_method ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } ////////// END SELECT TYPE SdaiSupported_item @@ -12064,119 +18489,245 @@ SdaiLogical SdaiSupported_item::IsAction_method() const ////////// SELECT TYPE approved_item const TypeDescriptor * -SdaiApproved_item::AssignEntity (STEPentity * se) +SdaiApproved_item::AssignEntity (SCLP23(Application_instance) * se) { // PRODUCT_DEFINITION_FORMATION - if (se -> eDesc -> IsA (config_control_designe_product_definition_formation)) + if (se -> IsA (config_control_designe_product_definition_formation)) { - _stepentityh = (SdaiProduct_definition_formationH) se; + _app_inst = (SdaiProduct_definition_formation_ptr) se; return SetUnderlyingType (config_control_designe_product_definition_formation); } // PRODUCT_DEFINITION - if (se -> eDesc -> IsA (config_control_designe_product_definition)) + if (se -> IsA (config_control_designe_product_definition)) { - _stepentityh = (SdaiProduct_definitionH) se; + _app_inst = (SdaiProduct_definition_ptr) se; return SetUnderlyingType (config_control_designe_product_definition); } // CONFIGURATION_EFFECTIVITY - if (se -> eDesc -> IsA (config_control_designe_configuration_effectivity)) + if (se -> IsA (config_control_designe_configuration_effectivity)) { - _stepentityh = (SdaiConfiguration_effectivityH) se; + _app_inst = (SdaiConfiguration_effectivity_ptr) se; return SetUnderlyingType (config_control_designe_configuration_effectivity); } // CONFIGURATION_ITEM - if (se -> eDesc -> IsA (config_control_designe_configuration_item)) + if (se -> IsA (config_control_designe_configuration_item)) { - _stepentityh = (SdaiConfiguration_itemH) se; + _app_inst = (SdaiConfiguration_item_ptr) se; return SetUnderlyingType (config_control_designe_configuration_item); } // SECURITY_CLASSIFICATION - if (se -> eDesc -> IsA (config_control_designe_security_classification)) + if (se -> IsA (config_control_designe_security_classification)) { - _stepentityh = (SdaiSecurity_classificationH) se; + _app_inst = (SdaiSecurity_classification_ptr) se; return SetUnderlyingType (config_control_designe_security_classification); } // CHANGE_REQUEST - if (se -> eDesc -> IsA (config_control_designe_change_request)) + if (se -> IsA (config_control_designe_change_request)) { - _stepentityh = (SdaiChange_requestH) se; + _app_inst = (SdaiChange_request_ptr) se; return SetUnderlyingType (config_control_designe_change_request); } // CHANGE - if (se -> eDesc -> IsA (config_control_designe_change)) + if (se -> IsA (config_control_designe_change)) { - _stepentityh = (SdaiChangeH) se; + _app_inst = (SdaiChange_ptr) se; return SetUnderlyingType (config_control_designe_change); } // START_REQUEST - if (se -> eDesc -> IsA (config_control_designe_start_request)) + if (se -> IsA (config_control_designe_start_request)) { - _stepentityh = (SdaiStart_requestH) se; + _app_inst = (SdaiStart_request_ptr) se; return SetUnderlyingType (config_control_designe_start_request); } // START_WORK - if (se -> eDesc -> IsA (config_control_designe_start_work)) + if (se -> IsA (config_control_designe_start_work)) { - _stepentityh = (SdaiStart_workH) se; + _app_inst = (SdaiStart_work_ptr) se; return SetUnderlyingType (config_control_designe_start_work); } // CERTIFICATION - if (se -> eDesc -> IsA (config_control_designe_certification)) + if (se -> IsA (config_control_designe_certification)) { - _stepentityh = (SdaiCertificationH) se; + _app_inst = (SdaiCertification_ptr) se; return SetUnderlyingType (config_control_designe_certification); } // CONTRACT - if (se -> eDesc -> IsA (config_control_designe_contract)) + if (se -> IsA (config_control_designe_contract)) { - _stepentityh = (SdaiContractH) se; + _app_inst = (SdaiContract_ptr) se; return SetUnderlyingType (config_control_designe_contract); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiApproved_item::NewSelect () { - SdaiApproved_item * tmp = new SdaiApproved_item (); - return tmp; +#ifdef __OSTORE__ + SdaiApproved_item * tmp = + new( os_segment::of(this), + SdaiApproved_item::get_os_typespec() ) + SdaiApproved_item(); +#else + SdaiApproved_item * tmp = new SdaiApproved_item(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiApproved_item::STEPwrite_content (G4std::ostream& out) const +SdaiApproved_item::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designe_product_definition_formation) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_product_definition) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_configuration_effectivity) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_configuration_item) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_security_classification) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_change_request) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_change) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_start_request) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_start_work) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_certification) - _stepentityh -> STEPwrite_reference (out); - else if (CurrentUnderlyingType () == config_control_designe_contract) - _stepentityh -> STEPwrite_reference (out); - else { + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_product_definition) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_configuration_effectivity) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_configuration_item) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_security_classification) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_change_request) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_change) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_start_request) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_start_work) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_certification) + _app_inst -> STEPwrite_reference (out); + else if (CurrentUnderlyingType () == config_control_designe_contract) + _app_inst -> STEPwrite_reference (out); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiApproved_item::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designe_product_definition_formation) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_product_definition) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_configuration_effectivity) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_configuration_item) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_security_classification) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_change_request) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_change) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_start_request) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_start_work) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_certification) + return sdaiINSTANCE; + else if (CurrentUnderlyingType() == config_control_designe_contract) + return sdaiINSTANCE; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiApproved_item::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designe_product_definition_formation) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_product_definition) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_configuration_effectivity) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_configuration_item) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_security_classification) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_change_request) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_change) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_start_request) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_start_work) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_certification) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else if (td == config_control_designe_contract) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -12184,166 +18735,157 @@ SdaiApproved_item::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiApproved_item::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiApproved_item::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designe_product_definition_formation) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_product_definition) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_configuration_effectivity) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_configuration_item) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_security_classification) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_change_request) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_change) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_start_request) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_start_work) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_certification) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - if (CurrentUnderlyingType () == config_control_designe_contract) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -12355,11 +18897,12 @@ Severity SdaiApproved_item::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -12371,283 +18914,516 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiApproved_item (os_database *db) +{ + return new (db, SdaiApproved_item::get_os_typespec()) + SdaiApproved_item ; +} + +void +SdaiApproved_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiApproved_item access hook funct called." << G4endl; + } +#endif + SdaiApproved_item *s = (SdaiApproved_item *) object; + s->_type = config_control_designt_approved_item; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiApproved_items (os_database *db) +{ + return new (db, SdaiApproved_items::get_os_typespec()) + SdaiApproved_items ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiApproved_item::SdaiApproved_item() - : SdaiSelect (config_control_designt_approved_item) +SdaiApproved_item::SdaiApproved_item( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiApproved_item constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiApproved_item constructor." << G4endl; + } +#endif } // part 1 -SdaiApproved_item::SdaiApproved_item( const SdaiProduct_definition_formationH& o ) - : SdaiSelect (config_control_designt_approved_item, config_control_designe_product_definition_formation ) +SdaiApproved_item::SdaiApproved_item( const SdaiProduct_definition_formation_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_product_definition_formation) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiApproved_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiApproved_item constructor." << G4endl; + } +#endif } -SdaiApproved_item::SdaiApproved_item( const SdaiProduct_definitionH& o ) - : SdaiSelect (config_control_designt_approved_item, config_control_designe_product_definition ) +SdaiApproved_item::SdaiApproved_item( const SdaiProduct_definition_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_product_definition) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiApproved_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiApproved_item constructor." << G4endl; + } +#endif } -SdaiApproved_item::SdaiApproved_item( const SdaiConfiguration_effectivityH& o ) - : SdaiSelect (config_control_designt_approved_item, config_control_designe_configuration_effectivity ) +SdaiApproved_item::SdaiApproved_item( const SdaiConfiguration_effectivity_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_configuration_effectivity) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiApproved_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiApproved_item constructor." << G4endl; + } +#endif } -SdaiApproved_item::SdaiApproved_item( const SdaiConfiguration_itemH& o ) - : SdaiSelect (config_control_designt_approved_item, config_control_designe_configuration_item ) +SdaiApproved_item::SdaiApproved_item( const SdaiConfiguration_item_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_configuration_item) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiApproved_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiApproved_item constructor." << G4endl; + } +#endif } -SdaiApproved_item::SdaiApproved_item( const SdaiSecurity_classificationH& o ) - : SdaiSelect (config_control_designt_approved_item, config_control_designe_security_classification ) +SdaiApproved_item::SdaiApproved_item( const SdaiSecurity_classification_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_security_classification) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiApproved_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiApproved_item constructor." << G4endl; + } +#endif } -SdaiApproved_item::SdaiApproved_item( const SdaiChange_requestH& o ) - : SdaiSelect (config_control_designt_approved_item, config_control_designe_change_request ) +SdaiApproved_item::SdaiApproved_item( const SdaiChange_request_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_change_request) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiApproved_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiApproved_item constructor." << G4endl; + } +#endif } -SdaiApproved_item::SdaiApproved_item( const SdaiChangeH& o ) - : SdaiSelect (config_control_designt_approved_item, config_control_designe_change ) +SdaiApproved_item::SdaiApproved_item( const SdaiChange_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_change) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiApproved_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiApproved_item constructor." << G4endl; + } +#endif } -SdaiApproved_item::SdaiApproved_item( const SdaiStart_requestH& o ) - : SdaiSelect (config_control_designt_approved_item, config_control_designe_start_request ) +SdaiApproved_item::SdaiApproved_item( const SdaiStart_request_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_start_request) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiApproved_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiApproved_item constructor." << G4endl; + } +#endif } -SdaiApproved_item::SdaiApproved_item( const SdaiStart_workH& o ) - : SdaiSelect (config_control_designt_approved_item, config_control_designe_start_work ) +SdaiApproved_item::SdaiApproved_item( const SdaiStart_work_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_start_work) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiApproved_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiApproved_item constructor." << G4endl; + } +#endif } -SdaiApproved_item::SdaiApproved_item( const SdaiCertificationH& o ) - : SdaiSelect (config_control_designt_approved_item, config_control_designe_certification ) +SdaiApproved_item::SdaiApproved_item( const SdaiCertification_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_certification) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiApproved_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiApproved_item constructor." << G4endl; + } +#endif } -SdaiApproved_item::SdaiApproved_item( const SdaiContractH& o ) - : SdaiSelect (config_control_designt_approved_item, config_control_designe_contract ) +SdaiApproved_item::SdaiApproved_item( const SdaiContract_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_contract) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiApproved_item constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiApproved_item constructor." << G4endl; + } +#endif } SdaiApproved_item::~SdaiApproved_item() { } +SdaiApproved_items::SdaiApproved_items( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiApproved_items::~SdaiApproved_items() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiApproved_items::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiApproved_item::get_os_typespec() ) + SdaiApproved_item ); +} +#endif + // part 2 -SdaiApproved_item::operator SdaiProduct_definition_formationH() +SdaiApproved_item::operator SdaiProduct_definition_formation_ptr() { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) - return ((SdaiProduct_definition_formationH) _stepentityh); + return ((SdaiProduct_definition_formation_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiApproved_item::operator SdaiProduct_definitionH() +SdaiApproved_item::operator SdaiProduct_definition_ptr() { if( CurrentUnderlyingType () == config_control_designe_product_definition ) - return ((SdaiProduct_definitionH) _stepentityh); + return ((SdaiProduct_definition_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiApproved_item::operator SdaiConfiguration_effectivityH() +SdaiApproved_item::operator SdaiConfiguration_effectivity_ptr() { if( CurrentUnderlyingType () == config_control_designe_configuration_effectivity ) - return ((SdaiConfiguration_effectivityH) _stepentityh); + return ((SdaiConfiguration_effectivity_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiApproved_item::operator SdaiConfiguration_itemH() +SdaiApproved_item::operator SdaiConfiguration_item_ptr() { if( CurrentUnderlyingType () == config_control_designe_configuration_item ) - return ((SdaiConfiguration_itemH) _stepentityh); + return ((SdaiConfiguration_item_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiApproved_item::operator SdaiSecurity_classificationH() +SdaiApproved_item::operator SdaiSecurity_classification_ptr() { if( CurrentUnderlyingType () == config_control_designe_security_classification ) - return ((SdaiSecurity_classificationH) _stepentityh); + return ((SdaiSecurity_classification_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiApproved_item::operator SdaiChange_requestH() +SdaiApproved_item::operator SdaiChange_request_ptr() { if( CurrentUnderlyingType () == config_control_designe_change_request ) - return ((SdaiChange_requestH) _stepentityh); + return ((SdaiChange_request_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiApproved_item::operator SdaiChangeH() +SdaiApproved_item::operator SdaiChange_ptr() { if( CurrentUnderlyingType () == config_control_designe_change ) - return ((SdaiChangeH) _stepentityh); + return ((SdaiChange_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiApproved_item::operator SdaiStart_requestH() +SdaiApproved_item::operator SdaiStart_request_ptr() { if( CurrentUnderlyingType () == config_control_designe_start_request ) - return ((SdaiStart_requestH) _stepentityh); + return ((SdaiStart_request_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiApproved_item::operator SdaiStart_workH() +SdaiApproved_item::operator SdaiStart_work_ptr() { if( CurrentUnderlyingType () == config_control_designe_start_work ) - return ((SdaiStart_workH) _stepentityh); + return ((SdaiStart_work_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiApproved_item::operator SdaiCertificationH() +SdaiApproved_item::operator SdaiCertification_ptr() { if( CurrentUnderlyingType () == config_control_designe_certification ) - return ((SdaiCertificationH) _stepentityh); + return ((SdaiCertification_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } -SdaiApproved_item::operator SdaiContractH() +SdaiApproved_item::operator SdaiContract_ptr() { if( CurrentUnderlyingType () == config_control_designe_contract ) - return ((SdaiContractH) _stepentityh); + return ((SdaiContract_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } // part 3 -SdaiCertification_typeH -SdaiApproved_item::Kind() const +const SdaiCertification_type_ptr +SdaiApproved_item::kind_() const { if( CurrentUnderlyingType () == config_control_designe_certification ) // CERTIFICATION - return ((SdaiCertificationH) _stepentityh) ->Kind(); + return ((SdaiCertification_ptr) _app_inst) ->kind_(); // CONTRACT // attribute access function has a different return type G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiApproved_item::Kind (SdaiCertification_typeH x) +SdaiApproved_item::kind_ (const SdaiCertification_type_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_certification ) // CERTIFICATION - { ((SdaiCertificationH) _stepentityh) ->Kind( x ); + { ((SdaiCertification_ptr) _app_inst) ->kind_( x ); return; } // for CONTRACT attribute access function has a different argument type - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiActionH -SdaiApproved_item::Assigned_action() const +const SdaiAction_ptr +SdaiApproved_item::assigned_action_() const { if( CurrentUnderlyingType () == config_control_designe_change ) // CHANGE - return ((SdaiChangeH) _stepentityh) ->Assigned_action(); + return ((SdaiChange_ptr) _app_inst) ->assigned_action_(); if( CurrentUnderlyingType () == config_control_designe_start_work ) // START_WORK - return ((SdaiStart_workH) _stepentityh) ->Assigned_action(); + return ((SdaiStart_work_ptr) _app_inst) ->assigned_action_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiApproved_item::Assigned_action (SdaiActionH x) +SdaiApproved_item::assigned_action_ (const SdaiAction_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_change ) // CHANGE - { ((SdaiChangeH) _stepentityh) ->Assigned_action( x ); + { ((SdaiChange_ptr) _app_inst) ->assigned_action_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_start_work ) // START_WORK - { ((SdaiStart_workH) _stepentityh) ->Assigned_action( x ); + { ((SdaiStart_work_ptr) _app_inst) ->assigned_action_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -const SdaiChange_request_itemsH -SdaiApproved_item::Items() const +const SdaiChange_request_items_ptr +SdaiApproved_item::items_() const { if( CurrentUnderlyingType () == config_control_designe_change_request ) // CHANGE_REQUEST - return ((SdaiChange_requestH) _stepentityh) ->Items(); + return ((SdaiChange_request_ptr) _app_inst) ->items_(); // CHANGE // attribute access function has a different return type // START_REQUEST @@ -12656,533 +19432,546 @@ SdaiApproved_item::Items() const // attribute access function has a different return type G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiApproved_item::Items (SdaiChange_request_itemsH x) +SdaiApproved_item::items_ (const SdaiChange_request_items_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_change_request ) // CHANGE_REQUEST - { ((SdaiChange_requestH) _stepentityh) ->Items( x ); + { ((SdaiChange_request_ptr) _app_inst) ->items_( x ); return; } // for CHANGE attribute access function has a different argument type // for START_REQUEST attribute access function has a different argument type // for START_WORK attribute access function has a different argument type - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiVersioned_action_requestH -SdaiApproved_item::Assigned_action_request() const +const SdaiVersioned_action_request_ptr +SdaiApproved_item::assigned_action_request_() const { if( CurrentUnderlyingType () == config_control_designe_change_request ) // CHANGE_REQUEST - return ((SdaiChange_requestH) _stepentityh) ->Assigned_action_request(); + return ((SdaiChange_request_ptr) _app_inst) ->assigned_action_request_(); if( CurrentUnderlyingType () == config_control_designe_start_request ) // START_REQUEST - return ((SdaiStart_requestH) _stepentityh) ->Assigned_action_request(); + return ((SdaiStart_request_ptr) _app_inst) ->assigned_action_request_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiApproved_item::Assigned_action_request (SdaiVersioned_action_requestH x) +SdaiApproved_item::assigned_action_request_ (const SdaiVersioned_action_request_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_change_request ) // CHANGE_REQUEST - { ((SdaiChange_requestH) _stepentityh) ->Assigned_action_request( x ); + { ((SdaiChange_request_ptr) _app_inst) ->assigned_action_request_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_start_request ) // START_REQUEST - { ((SdaiStart_requestH) _stepentityh) ->Assigned_action_request( x ); + { ((SdaiStart_request_ptr) _app_inst) ->assigned_action_request_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiSecurity_classification_levelH -SdaiApproved_item::Security_level() const +const SdaiSecurity_classification_level_ptr +SdaiApproved_item::security_level_() const { if( CurrentUnderlyingType () == config_control_designe_security_classification ) // SECURITY_CLASSIFICATION - return ((SdaiSecurity_classificationH) _stepentityh) ->Security_level(); + return ((SdaiSecurity_classification_ptr) _app_inst) ->security_level_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiApproved_item::Security_level (SdaiSecurity_classification_levelH x) +SdaiApproved_item::security_level_ (const SdaiSecurity_classification_level_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_security_classification ) // SECURITY_CLASSIFICATION - { ((SdaiSecurity_classificationH) _stepentityh) ->Security_level( x ); + { ((SdaiSecurity_classification_ptr) _app_inst) ->security_level_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiLabel -SdaiApproved_item::Purpose() const +SdaiApproved_item::purpose_() const { if( CurrentUnderlyingType () == config_control_designe_configuration_item ) // CONFIGURATION_ITEM - return ((SdaiConfiguration_itemH) _stepentityh) ->Purpose(); + return ((SdaiConfiguration_item_ptr) _app_inst) ->purpose_(); if( CurrentUnderlyingType () == config_control_designe_security_classification ) // SECURITY_CLASSIFICATION - return ((SdaiSecurity_classificationH) _stepentityh) ->Purpose(); + return ((SdaiSecurity_classification_ptr) _app_inst) ->purpose_(); if( CurrentUnderlyingType () == config_control_designe_certification ) // CERTIFICATION - return ((SdaiCertificationH) _stepentityh) ->Purpose(); + return ((SdaiCertification_ptr) _app_inst) ->purpose_(); if( CurrentUnderlyingType () == config_control_designe_contract ) // CONTRACT - return ((SdaiContractH) _stepentityh) ->Purpose(); + return ((SdaiContract_ptr) _app_inst) ->purpose_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiApproved_item::Purpose (const char * x) +SdaiApproved_item::purpose_ (const SdaiLabel x) + { if( CurrentUnderlyingType () == config_control_designe_configuration_item ) // CONFIGURATION_ITEM - { ((SdaiConfiguration_itemH) _stepentityh) ->Purpose( x ); + { ((SdaiConfiguration_item_ptr) _app_inst) ->purpose_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_security_classification ) // SECURITY_CLASSIFICATION - { ((SdaiSecurity_classificationH) _stepentityh) ->Purpose( x ); + { ((SdaiSecurity_classification_ptr) _app_inst) ->purpose_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_certification ) // CERTIFICATION - { ((SdaiCertificationH) _stepentityh) ->Purpose( x ); + { ((SdaiCertification_ptr) _app_inst) ->purpose_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_contract ) // CONTRACT - { ((SdaiContractH) _stepentityh) ->Purpose( x ); + { ((SdaiContract_ptr) _app_inst) ->purpose_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiProduct_conceptH -SdaiApproved_item::Item_concept() const +const SdaiProduct_concept_ptr +SdaiApproved_item::item_concept_() const { if( CurrentUnderlyingType () == config_control_designe_configuration_item ) // CONFIGURATION_ITEM - return ((SdaiConfiguration_itemH) _stepentityh) ->Item_concept(); + return ((SdaiConfiguration_item_ptr) _app_inst) ->item_concept_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiApproved_item::Item_concept (SdaiProduct_conceptH x) +SdaiApproved_item::item_concept_ (const SdaiProduct_concept_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_configuration_item ) // CONFIGURATION_ITEM - { ((SdaiConfiguration_itemH) _stepentityh) ->Item_concept( x ); + { ((SdaiConfiguration_item_ptr) _app_inst) ->item_concept_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiLabel -SdaiApproved_item::Name() const +SdaiApproved_item::name_() const { if( CurrentUnderlyingType () == config_control_designe_configuration_item ) // CONFIGURATION_ITEM - return ((SdaiConfiguration_itemH) _stepentityh) ->Name(); + return ((SdaiConfiguration_item_ptr) _app_inst) ->name_(); if( CurrentUnderlyingType () == config_control_designe_security_classification ) // SECURITY_CLASSIFICATION - return ((SdaiSecurity_classificationH) _stepentityh) ->Name(); + return ((SdaiSecurity_classification_ptr) _app_inst) ->name_(); if( CurrentUnderlyingType () == config_control_designe_certification ) // CERTIFICATION - return ((SdaiCertificationH) _stepentityh) ->Name(); + return ((SdaiCertification_ptr) _app_inst) ->name_(); if( CurrentUnderlyingType () == config_control_designe_contract ) // CONTRACT - return ((SdaiContractH) _stepentityh) ->Name(); + return ((SdaiContract_ptr) _app_inst) ->name_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiApproved_item::Name (const char * x) +SdaiApproved_item::name_ (const SdaiLabel x) + { if( CurrentUnderlyingType () == config_control_designe_configuration_item ) // CONFIGURATION_ITEM - { ((SdaiConfiguration_itemH) _stepentityh) ->Name( x ); + { ((SdaiConfiguration_item_ptr) _app_inst) ->name_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_security_classification ) // SECURITY_CLASSIFICATION - { ((SdaiSecurity_classificationH) _stepentityh) ->Name( x ); + { ((SdaiSecurity_classification_ptr) _app_inst) ->name_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_certification ) // CERTIFICATION - { ((SdaiCertificationH) _stepentityh) ->Name( x ); + { ((SdaiCertification_ptr) _app_inst) ->name_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_contract ) // CONTRACT - { ((SdaiContractH) _stepentityh) ->Name( x ); + { ((SdaiContract_ptr) _app_inst) ->name_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiConfiguration_designH -SdaiApproved_item::Configuration() const +const SdaiConfiguration_design_ptr +SdaiApproved_item::configuration_() const { if( CurrentUnderlyingType () == config_control_designe_configuration_effectivity ) // CONFIGURATION_EFFECTIVITY - return ((SdaiConfiguration_effectivityH) _stepentityh) ->Configuration(); + return ((SdaiConfiguration_effectivity_ptr) _app_inst) ->configuration_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiApproved_item::Configuration (SdaiConfiguration_designH x) +SdaiApproved_item::configuration_ (const SdaiConfiguration_design_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_configuration_effectivity ) // CONFIGURATION_EFFECTIVITY - { ((SdaiConfiguration_effectivityH) _stepentityh) ->Configuration( x ); + { ((SdaiConfiguration_effectivity_ptr) _app_inst) ->configuration_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiProduct_definition_relationshipH -SdaiApproved_item::Usage() const +const SdaiProduct_definition_relationship_ptr +SdaiApproved_item::usage_() const { if( CurrentUnderlyingType () == config_control_designe_configuration_effectivity ) // CONFIGURATION_EFFECTIVITY - return ((SdaiConfiguration_effectivityH) _stepentityh) ->Usage(); + return ((SdaiConfiguration_effectivity_ptr) _app_inst) ->usage_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiApproved_item::Usage (SdaiProduct_definition_relationshipH x) +SdaiApproved_item::usage_ (const SdaiProduct_definition_relationship_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_configuration_effectivity ) // CONFIGURATION_EFFECTIVITY - { ((SdaiConfiguration_effectivityH) _stepentityh) ->Usage( x ); + { ((SdaiConfiguration_effectivity_ptr) _app_inst) ->usage_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiProduct_definition_contextH -SdaiApproved_item::Frame_of_reference() const +const SdaiProduct_definition_context_ptr +SdaiApproved_item::frame_of_reference_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - return ((SdaiProduct_definitionH) _stepentityh) ->Frame_of_reference(); + return ((SdaiProduct_definition_ptr) _app_inst) ->frame_of_reference_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiApproved_item::Frame_of_reference (SdaiProduct_definition_contextH x) +SdaiApproved_item::frame_of_reference_ (const SdaiProduct_definition_context_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - { ((SdaiProduct_definitionH) _stepentityh) ->Frame_of_reference( x ); + { ((SdaiProduct_definition_ptr) _app_inst) ->frame_of_reference_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiProduct_definition_formationH -SdaiApproved_item::Formation() const +const SdaiProduct_definition_formation_ptr +SdaiApproved_item::formation_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - return ((SdaiProduct_definitionH) _stepentityh) ->Formation(); + return ((SdaiProduct_definition_ptr) _app_inst) ->formation_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiApproved_item::Formation (SdaiProduct_definition_formationH x) +SdaiApproved_item::formation_ (const SdaiProduct_definition_formation_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - { ((SdaiProduct_definitionH) _stepentityh) ->Formation( x ); + { ((SdaiProduct_definition_ptr) _app_inst) ->formation_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } -SdaiProductH -SdaiApproved_item::Of_product() const +const SdaiProduct_ptr +SdaiApproved_item::of_product_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - return ((SdaiProduct_definition_formationH) _stepentityh) ->Of_product(); + return ((SdaiProduct_definition_formation_ptr) _app_inst) ->of_product_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiApproved_item::Of_product (SdaiProductH x) +SdaiApproved_item::of_product_ (const SdaiProduct_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - { ((SdaiProduct_definition_formationH) _stepentityh) ->Of_product( x ); + { ((SdaiProduct_definition_formation_ptr) _app_inst) ->of_product_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiText -SdaiApproved_item::Description() const +SdaiApproved_item::description_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - return ((SdaiProduct_definition_formationH) _stepentityh) ->Description(); + return ((SdaiProduct_definition_formation_ptr) _app_inst) ->description_(); if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - return ((SdaiProduct_definitionH) _stepentityh) ->Description(); + return ((SdaiProduct_definition_ptr) _app_inst) ->description_(); if( CurrentUnderlyingType () == config_control_designe_configuration_item ) // CONFIGURATION_ITEM - return ((SdaiConfiguration_itemH) _stepentityh) ->Description(); + return ((SdaiConfiguration_item_ptr) _app_inst) ->description_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiApproved_item::Description (const char * x) +SdaiApproved_item::description_ (const SdaiText x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - { ((SdaiProduct_definition_formationH) _stepentityh) ->Description( x ); + { ((SdaiProduct_definition_formation_ptr) _app_inst) ->description_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - { ((SdaiProduct_definitionH) _stepentityh) ->Description( x ); + { ((SdaiProduct_definition_ptr) _app_inst) ->description_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_configuration_item ) // CONFIGURATION_ITEM - { ((SdaiConfiguration_itemH) _stepentityh) ->Description( x ); + { ((SdaiConfiguration_item_ptr) _app_inst) ->description_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiIdentifier -SdaiApproved_item::Id() const +SdaiApproved_item::id_() const { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - return ((SdaiProduct_definition_formationH) _stepentityh) ->Id(); + return ((SdaiProduct_definition_formation_ptr) _app_inst) ->id_(); if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - return ((SdaiProduct_definitionH) _stepentityh) ->Id(); + return ((SdaiProduct_definition_ptr) _app_inst) ->id_(); if( CurrentUnderlyingType () == config_control_designe_configuration_effectivity ) // CONFIGURATION_EFFECTIVITY - return ((SdaiConfiguration_effectivityH) _stepentityh) ->Id(); + return ((SdaiConfiguration_effectivity_ptr) _app_inst) ->id_(); if( CurrentUnderlyingType () == config_control_designe_configuration_item ) // CONFIGURATION_ITEM - return ((SdaiConfiguration_itemH) _stepentityh) ->Id(); + return ((SdaiConfiguration_item_ptr) _app_inst) ->id_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiApproved_item::Id (const char * x) +SdaiApproved_item::id_ (const SdaiIdentifier x) + { if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) // PRODUCT_DEFINITION_FORMATION - { ((SdaiProduct_definition_formationH) _stepentityh) ->Id( x ); + { ((SdaiProduct_definition_formation_ptr) _app_inst) ->id_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_product_definition ) // PRODUCT_DEFINITION - { ((SdaiProduct_definitionH) _stepentityh) ->Id( x ); + { ((SdaiProduct_definition_ptr) _app_inst) ->id_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_configuration_effectivity ) // CONFIGURATION_EFFECTIVITY - { ((SdaiConfiguration_effectivityH) _stepentityh) ->Id( x ); + { ((SdaiConfiguration_effectivity_ptr) _app_inst) ->id_( x ); return; } if( CurrentUnderlyingType () == config_control_designe_configuration_item ) // CONFIGURATION_ITEM - { ((SdaiConfiguration_itemH) _stepentityh) ->Id( x ); + { ((SdaiConfiguration_item_ptr) _app_inst) ->id_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } // part 4 -SdaiApproved_item& SdaiApproved_item::operator =( const SdaiProduct_definition_formationH& o ) +SdaiApproved_item& SdaiApproved_item::operator =( const SdaiProduct_definition_formation_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_product_definition_formation); return *this; } -SdaiApproved_item& SdaiApproved_item::operator =( const SdaiProduct_definitionH& o ) +SdaiApproved_item& SdaiApproved_item::operator =( const SdaiProduct_definition_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_product_definition); return *this; } -SdaiApproved_item& SdaiApproved_item::operator =( const SdaiConfiguration_effectivityH& o ) +SdaiApproved_item& SdaiApproved_item::operator =( const SdaiConfiguration_effectivity_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_configuration_effectivity); return *this; } -SdaiApproved_item& SdaiApproved_item::operator =( const SdaiConfiguration_itemH& o ) +SdaiApproved_item& SdaiApproved_item::operator =( const SdaiConfiguration_item_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_configuration_item); return *this; } -SdaiApproved_item& SdaiApproved_item::operator =( const SdaiSecurity_classificationH& o ) +SdaiApproved_item& SdaiApproved_item::operator =( const SdaiSecurity_classification_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_security_classification); return *this; } -SdaiApproved_item& SdaiApproved_item::operator =( const SdaiChange_requestH& o ) +SdaiApproved_item& SdaiApproved_item::operator =( const SdaiChange_request_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_change_request); return *this; } -SdaiApproved_item& SdaiApproved_item::operator =( const SdaiChangeH& o ) +SdaiApproved_item& SdaiApproved_item::operator =( const SdaiChange_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_change); return *this; } -SdaiApproved_item& SdaiApproved_item::operator =( const SdaiStart_requestH& o ) +SdaiApproved_item& SdaiApproved_item::operator =( const SdaiStart_request_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_start_request); return *this; } -SdaiApproved_item& SdaiApproved_item::operator =( const SdaiStart_workH& o ) +SdaiApproved_item& SdaiApproved_item::operator =( const SdaiStart_work_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_start_work); return *this; } -SdaiApproved_item& SdaiApproved_item::operator =( const SdaiCertificationH& o ) +SdaiApproved_item& SdaiApproved_item::operator =( const SdaiCertification_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_certification); return *this; } -SdaiApproved_item& SdaiApproved_item::operator =( const SdaiContractH& o ) +SdaiApproved_item& SdaiApproved_item::operator =( const SdaiContract_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_contract); return *this; } @@ -13190,160 +19979,169 @@ SdaiApproved_item& SdaiApproved_item::operator =( const SdaiContractH& o ) #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiApproved_item& SdaiApproved_item::operator =( const SdaiApproved_itemH& o ) + +SdaiApproved_item& SdaiApproved_item::operator =( const SdaiApproved_item_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designe_product_definition_formation ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_product_definition ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_configuration_effectivity ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_configuration_item ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_security_classification ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_change_request ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_change ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_start_request ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_start_work ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_certification ) - _stepentityh = o -> _stepentityh; - if( o -> CurrentUnderlyingType () == config_control_designe_contract ) - _stepentityh = o -> _stepentityh; + if ( o -> CurrentUnderlyingType () == config_control_designe_product_definition_formation ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_product_definition ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_configuration_effectivity ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_configuration_item ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_security_classification ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_change_request ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_change ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_start_request ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_start_work ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_certification ) + _app_inst = o -> _app_inst; + else if ( o -> CurrentUnderlyingType () == config_control_designe_contract ) + _app_inst = o -> _app_inst; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiApproved_item::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiApproved_item::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designe_product_definition_formation ) - _stepentityh = ((SdaiApproved_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_product_definition ) - _stepentityh = ((SdaiApproved_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_configuration_effectivity ) - _stepentityh = ((SdaiApproved_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_configuration_item ) - _stepentityh = ((SdaiApproved_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_security_classification ) - _stepentityh = ((SdaiApproved_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_change_request ) - _stepentityh = ((SdaiApproved_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_change ) - _stepentityh = ((SdaiApproved_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_start_request ) - _stepentityh = ((SdaiApproved_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_start_work ) - _stepentityh = ((SdaiApproved_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_certification ) - _stepentityh = ((SdaiApproved_item&) o)._stepentityh; - if( o.CurrentUnderlyingType () == config_control_designe_contract ) - _stepentityh = ((SdaiApproved_item&) o)._stepentityh; + if ( o.CurrentUnderlyingType () == config_control_designe_product_definition_formation ) + _app_inst = ((SdaiApproved_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_product_definition ) + _app_inst = ((SdaiApproved_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_configuration_effectivity ) + _app_inst = ((SdaiApproved_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_configuration_item ) + _app_inst = ((SdaiApproved_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_security_classification ) + _app_inst = ((SdaiApproved_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_change_request ) + _app_inst = ((SdaiApproved_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_change ) + _app_inst = ((SdaiApproved_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_start_request ) + _app_inst = ((SdaiApproved_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_start_work ) + _app_inst = ((SdaiApproved_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_certification ) + _app_inst = ((SdaiApproved_item&) o)._app_inst; + else if ( o.CurrentUnderlyingType () == config_control_designe_contract ) + _app_inst = ((SdaiApproved_item&) o)._app_inst; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiApproved_item::IsProduct_definition_formation() const +SCLLOG(Logical) SdaiApproved_item::IsProduct_definition_formation() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_product_definition_formation ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiApproved_item::IsProduct_definition() const +SCLLOG(Logical) SdaiApproved_item::IsProduct_definition() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_product_definition ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiApproved_item::IsConfiguration_effectivity() const +SCLLOG(Logical) SdaiApproved_item::IsConfiguration_effectivity() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_configuration_effectivity ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiApproved_item::IsConfiguration_item() const +SCLLOG(Logical) SdaiApproved_item::IsConfiguration_item() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_configuration_item ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiApproved_item::IsSecurity_classification() const +SCLLOG(Logical) SdaiApproved_item::IsSecurity_classification() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_security_classification ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiApproved_item::IsChange_request() const +SCLLOG(Logical) SdaiApproved_item::IsChange_request() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_change_request ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiApproved_item::IsChange() const +SCLLOG(Logical) SdaiApproved_item::IsChange() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_change ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiApproved_item::IsStart_request() const +SCLLOG(Logical) SdaiApproved_item::IsStart_request() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_start_request ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiApproved_item::IsStart_work() const +SCLLOG(Logical) SdaiApproved_item::IsStart_work() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_start_work ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiApproved_item::IsCertification() const +SCLLOG(Logical) SdaiApproved_item::IsCertification() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_certification ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } -SdaiLogical SdaiApproved_item::IsContract() const +SCLLOG(Logical) SdaiApproved_item::IsContract() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_contract ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } ////////// END SELECT TYPE SdaiApproved_item @@ -13352,39 +20150,85 @@ SdaiLogical SdaiApproved_item::IsContract() const ////////// SELECT TYPE surface_model const TypeDescriptor * -SdaiSurface_model::AssignEntity (STEPentity * se) +SdaiSurface_model::AssignEntity (SCLP23(Application_instance) * se) { // SHELL_BASED_SURFACE_MODEL - if (se -> eDesc -> IsA (config_control_designe_shell_based_surface_model)) + if (se -> IsA (config_control_designe_shell_based_surface_model)) { - _stepentityh = (SdaiShell_based_surface_modelH) se; + _app_inst = (SdaiShell_based_surface_model_ptr) se; return SetUnderlyingType (config_control_designe_shell_based_surface_model); } - // should never be here - Done in Select class + // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif return 0; } -SdaiSelect * +SCLP23(Select) * SdaiSurface_model::NewSelect () { - SdaiSurface_model * tmp = new SdaiSurface_model (); - return tmp; +#ifdef __OSTORE__ + SdaiSurface_model * tmp = + new( os_segment::of(this), + SdaiSurface_model::get_os_typespec() ) + SdaiSurface_model(); +#else + SdaiSurface_model * tmp = new SdaiSurface_model(); +#endif + return tmp; } + + // STEP Part 21 void -SdaiSurface_model::STEPwrite_content (G4std::ostream& out) const +SdaiSurface_model::STEPwrite_content (G4std::ostream& out, const char * currSch) const { if (CurrentUnderlyingType () == config_control_designe_shell_based_surface_model) - _stepentityh -> STEPwrite_reference (out); - else { + _app_inst -> STEPwrite_reference (out); + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return; +} + +BASE_TYPE +SdaiSurface_model::ValueType() const +{ + if (CurrentUnderlyingType() == config_control_designe_shell_based_surface_model) + return sdaiINSTANCE; + else { + G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" + << _POC_ << "\n\n"; + } + return (BASE_TYPE)0; +} + +void +SdaiSurface_model::STEPwrite_verbose (G4std::ostream& out, const char *currSch) const +{ + const TypeDescriptor *td = CurrentUnderlyingType(); + SCLstring tmp; + + if ( td ) { + // If we have a legal underlying type, get its name acc + // to the current schema. + StrToUpper( td->Name(currSch), tmp ); + } + if (td == config_control_designe_shell_based_surface_model) + { + out << tmp.chars() << "("; + _app_inst -> STEPwrite_reference (out); + out << ")"; + } + else { G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; } @@ -13392,26 +20236,27 @@ SdaiSurface_model::STEPwrite_content (G4std::ostream& out) const } Severity -SdaiSurface_model::STEPread_content (G4std::istream& in, InstMgr * instances, int addFileId) +SdaiSurface_model::STEPread_content (G4std::istream& in, InstMgr * instances, + const char *utype, int addFileId, const char *currSch) { - if (CurrentUnderlyingType () == config_control_designe_shell_based_surface_model) { // set Underlying Type in Select class - _stepentityh = ReadEntityRef (in, &_error, ",)", instances, addFileId); - if (_stepentityh && (_stepentityh != S_ENTITY_NULL) - && (CurrentUnderlyingType () -> CanBe (_stepentityh -> eDesc )) ) + _app_inst = ReadEntityRef (in, &_error, ",)", 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"); - _stepentityh = 0; + _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -13423,11 +20268,12 @@ Severity SdaiSurface_model::StrToVal_content (const char * str, InstMgr * instances) { switch (base_type) { - default: // should never be here - Done in Select class + default: // should never be here - done in Select class - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -13439,101 +20285,194 @@ G4cerr << str << " " << instances << G4endl; #endif } +#ifdef __OSTORE__ +SCLP23(Select) * +create_SdaiSurface_model (os_database *db) +{ + return new (db, SdaiSurface_model::get_os_typespec()) + SdaiSurface_model ; +} + +void +SdaiSurface_model_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "SdaiSurface_model access hook funct called." << G4endl; + } +#endif + SdaiSurface_model *s = (SdaiSurface_model *) object; + s->_type = config_control_designt_surface_model; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "underlying type set to " << s->UnderlyingTypeName() << G4endl << G4endl; + } +#endif + const TypeDescriptor *td = s->CanBe(s->UnderlyingTypeName()); + s->SetUnderlyingType(td); + if(!td) + G4cerr << "ERROR: can't reinitialize underlying select TypeDescriptor." + << G4endl; +} +#endif + + +#ifdef __OSTORE__ +STEPaggregate * +create_SdaiSurface_models (os_database *db) +{ + return new (db, SdaiSurface_models::get_os_typespec()) + SdaiSurface_models ; +} +#endif + + // STEP Part 22: SDAI // part 0 -SdaiSurface_model::SdaiSurface_model() - : SdaiSelect (config_control_designt_surface_model) +SdaiSurface_model::SdaiSurface_model( const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript) { +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiSurface_model constructor." << G4endl; + } +#endif nullify(); +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiSurface_model constructor." << G4endl; + } +#endif } // part 1 -SdaiSurface_model::SdaiSurface_model( const SdaiShell_based_surface_modelH& o ) - : SdaiSelect (config_control_designt_surface_model, config_control_designe_shell_based_surface_model ) +SdaiSurface_model::SdaiSurface_model( const SdaiShell_based_surface_model_ptr& o, + const SelectTypeDescriptor *typedescript ) + : SCLP23(Select) (typedescript, config_control_designe_shell_based_surface_model) { - _stepentityh = o; +#ifdef SCL_LOGGING + if( *logStream ) + { + *logStream << "DAVE ERR entering SdaiSurface_model constructor." << G4endl; + } +#endif + _app_inst = o; +#ifdef SCL_LOGGING + if( *logStream ) + { +// *logStream << "DAVE ERR exiting SdaiSurface_model constructor." << G4endl; + } +#endif } SdaiSurface_model::~SdaiSurface_model() { } +SdaiSurface_models::SdaiSurface_models( SelectTypeDescriptor *s) + : SelectAggregate(), sel_type(s) +{ +} + +SdaiSurface_models::~SdaiSurface_models() { } + + +#ifdef __OSTORE__ +SingleLinkNode * +SdaiSurface_models::NewNode() +{ + return new( os_segment::of(this), SelectNode::get_os_typespec() ) + SelectNode( new( os_segment::of(this), + SdaiSurface_model::get_os_typespec() ) + SdaiSurface_model ); +} +#endif + // part 2 -SdaiSurface_model::operator SdaiShell_based_surface_modelH() +SdaiSurface_model::operator SdaiShell_based_surface_model_ptr() { if( CurrentUnderlyingType () == config_control_designe_shell_based_surface_model ) - return ((SdaiShell_based_surface_modelH) _stepentityh); + return ((SdaiShell_based_surface_model_ptr) _app_inst); - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); return NULL; } // part 3 -const SdaiShellsH -SdaiSurface_model::Sbsm_boundary() const +const SdaiShells_ptr +SdaiSurface_model::sbsm_boundary_() const { if( CurrentUnderlyingType () == config_control_designe_shell_based_surface_model ) // SHELL_BASED_SURFACE_MODEL - return ((SdaiShell_based_surface_modelH) _stepentityh) ->Sbsm_boundary(); + return ((SdaiShell_based_surface_model_ptr) _app_inst) ->sbsm_boundary_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiSurface_model::Sbsm_boundary (SdaiShellsH x) +SdaiSurface_model::sbsm_boundary_ (const SdaiShells_ptr x) + { if( CurrentUnderlyingType () == config_control_designe_shell_based_surface_model ) // SHELL_BASED_SURFACE_MODEL - { ((SdaiShell_based_surface_modelH) _stepentityh) ->Sbsm_boundary( x ); + { ((SdaiShell_based_surface_model_ptr) _app_inst) ->sbsm_boundary_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } const SdaiLabel -SdaiSurface_model::Name() const +SdaiSurface_model::name_() const { if( CurrentUnderlyingType () == config_control_designe_shell_based_surface_model ) // SHELL_BASED_SURFACE_MODEL - return ((SdaiShell_based_surface_modelH) _stepentityh) ->Name(); + return ((SdaiShell_based_surface_model_ptr) _app_inst) ->name_(); G4cerr << __FILE__ << ":" << __LINE__ << ": ERROR in schema library: \n" << _POC_ << "\n\n"; - return NULL; + return 0; } void -SdaiSurface_model::Name (const char * x) +SdaiSurface_model::name_ (const SdaiLabel x) + { if( CurrentUnderlyingType () == config_control_designe_shell_based_surface_model ) // SHELL_BASED_SURFACE_MODEL - { ((SdaiShell_based_surface_modelH) _stepentityh) ->Name( x ); + { ((SdaiShell_based_surface_model_ptr) _app_inst) ->name_( x ); return; } - severity( SEVERITY_WARNING ); - G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); - + severity( SEVERITY_WARNING ); + G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" + << " SELECT TYPE from schema library.\n"; + Error( "Mismatch in underlying type." ); } // part 4 -SdaiSurface_model& SdaiSurface_model::operator =( const SdaiShell_based_surface_modelH& o ) +SdaiSurface_model& SdaiSurface_model::operator =( const SdaiShell_based_surface_model_ptr& o ) { - nullify (); - _stepentityh = o; + nullify (); + _app_inst = o; SetUnderlyingType (config_control_designe_shell_based_surface_model); return *this; } @@ -13541,30 +20480,39 @@ SdaiSurface_model& SdaiSurface_model::operator =( const SdaiShell_based_surface_ #ifdef COMPILER_DEFINES_OPERATOR_EQ #else -SdaiSurface_model& SdaiSurface_model::operator =( const SdaiSurface_modelH& o ) + +SdaiSurface_model& SdaiSurface_model::operator =( const SdaiSurface_model_ptr& o ) { - if( o -> CurrentUnderlyingType () == config_control_designe_shell_based_surface_model ) - _stepentityh = o -> _stepentityh; + if ( o -> CurrentUnderlyingType () == config_control_designe_shell_based_surface_model ) + _app_inst = o -> _app_inst; underlying_type = o -> CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o -> UnderlyingTypeName(); +#endif return *this; } -SdaiSelect& SdaiSurface_model::operator =( const SdaiSelect& o ) + +SCLP23(Select)& SdaiSurface_model::operator =( const SCLP23(Select)& o ) { - if( o.CurrentUnderlyingType () == config_control_designe_shell_based_surface_model ) - _stepentityh = ((SdaiSurface_model&) o)._stepentityh; + if ( o.CurrentUnderlyingType () == config_control_designe_shell_based_surface_model ) + _app_inst = ((SdaiSurface_model&) o)._app_inst; underlying_type = o.CurrentUnderlyingType (); +#ifdef __OSTORE__ + underlying_type_name = o.UnderlyingTypeName(); +#endif return *this; } + #endif // part 5 -SdaiLogical SdaiSurface_model::IsShell_based_surface_model() const +SCLLOG(Logical) SdaiSurface_model::IsShell_based_surface_model() const { if( !exists() ) - return sdaiUNKNOWN; + return SCLLOG(LUnknown); if( CurrentUnderlyingType () == config_control_designe_shell_based_surface_model ) - return sdaiTRUE; - return sdaiFALSE; + return SCLLOG(LTrue); + return SCLLOG(LFalse); } ////////// END SELECT TYPE SdaiSurface_model @@ -13572,7 +20520,7 @@ SdaiLogical SdaiSurface_model::IsShell_based_surface_model() const /* ************** ENTITIES */ -///////// ENTITY representation_item +///////// ENTITY representation_item EntityDescriptor *config_control_designe_representation_item =0; AttrDescriptor *a_0name =0; @@ -13583,14 +20531,74 @@ SdaiRepresentation_item::SdaiRepresentation_item( ) eDesc = config_control_designe_representation_item; - STEPattribute * a = new STEPattribute (*a_0name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_0name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_0name, &_name); +#endif a -> set_null (); attributes.push (a); } SdaiRepresentation_item::SdaiRepresentation_item (SdaiRepresentation_item& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiRepresentation_item::~SdaiRepresentation_item () { } -SdaiRepresentation_item::SdaiRepresentation_item( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiRepresentation_item::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiRepresentation_item: virtual access function." << G4endl; + SdaiRepresentation_item_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiRepresentation_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiRepresentation_item: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiRepresentation_item *ent = (SdaiRepresentation_item *)sent; +// SdaiRepresentation_item *ent = (SdaiRepresentation_item *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_representation_item; + ent->attributes[0].aDesc = a_0name; +} + +SCLP23(Application_instance_ptr) +create_SdaiRepresentation_item(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiRepresentation_item::get_os_typespec()) + SdaiRepresentation_item; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiRepresentation_item::get_os_typespec()) +// SdaiRepresentation_item; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiRepresentation_item; +} +#endif + +#ifdef __O3DB__ +void +SdaiRepresentation_item::oodb_reInit () +{ eDesc = config_control_designe_representation_item; + attributes [0].aDesc = a_0name; +} +#endif + +SdaiRepresentation_item::SdaiRepresentation_item( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -13599,31 +20607,43 @@ SdaiRepresentation_item::SdaiRepresentation_item( STEPentity *se ) eDesc = config_control_designe_representation_item; - STEPattribute * a = new STEPattribute (*a_0name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_0name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_0name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiRepresentation_item::Name() const - { return (const SdaiLabel) _name; } +SdaiRepresentation_item::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiRepresentation_item::Name (const char * x) - { _name = x; } +SdaiRepresentation_item::name_ (const SdaiLabel x) -///////// END_ENTITY representation_item +{ + _name = x; +} + +///////// END_ENTITY representation_item -///////// ENTITY geometric_representation_item +///////// ENTITY geometric_representation_item EntityDescriptor *config_control_designe_geometric_representation_item =0; -AttrDescriptor *a_1Ddim =0; +Derived_attribute *a_1Ddim =0; SdaiGeometric_representation_item::SdaiGeometric_representation_item( ) { @@ -13632,11 +20652,64 @@ SdaiGeometric_representation_item::SdaiGeometric_representation_item( ) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_geometric_representation_item; + MakeDerived ("dim"); } SdaiGeometric_representation_item::SdaiGeometric_representation_item (SdaiGeometric_representation_item& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiGeometric_representation_item::~SdaiGeometric_representation_item () { } -SdaiGeometric_representation_item::SdaiGeometric_representation_item (STEPentity *se ) : SdaiRepresentation_item(se) + +#ifdef __OSTORE__ + +void +SdaiGeometric_representation_item::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiGeometric_representation_item: virtual access function." << G4endl; + SdaiGeometric_representation_item_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiGeometric_representation_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiGeometric_representation_item: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiGeometric_representation_item *ent = (SdaiGeometric_representation_item *)sent; +// SdaiGeometric_representation_item *ent = (SdaiGeometric_representation_item *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_geometric_representation_item; +} + +SCLP23(Application_instance_ptr) +create_SdaiGeometric_representation_item(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiGeometric_representation_item::get_os_typespec()) + SdaiGeometric_representation_item; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiGeometric_representation_item::get_os_typespec()) +// SdaiGeometric_representation_item; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiGeometric_representation_item; +} +#endif + +#ifdef __O3DB__ +void +SdaiGeometric_representation_item::oodb_reInit () +{ eDesc = config_control_designe_geometric_representation_item; +} +#endif + +SdaiGeometric_representation_item::SdaiGeometric_representation_item (SCLP23(Application_instance) *se, int *addAttrs) : SdaiRepresentation_item(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -13646,14 +20719,15 @@ SdaiGeometric_representation_item::SdaiGeometric_representation_item (STEPentity /* part of the main inheritance hierarchy */ eDesc = config_control_designe_geometric_representation_item; + MakeDerived ("dim"); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY geometric_representation_item +///////// END_ENTITY geometric_representation_item -///////// ENTITY functionally_defined_transformation +///////// ENTITY functionally_defined_transformation EntityDescriptor *config_control_designe_functionally_defined_transformation =0; AttrDescriptor *a_2name =0; @@ -13665,18 +20739,86 @@ SdaiFunctionally_defined_transformation::SdaiFunctionally_defined_transformation eDesc = config_control_designe_functionally_defined_transformation; - STEPattribute * a = new STEPattribute (*a_2name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_2name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_2name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_3description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_3description, &_description); +#else + a = new STEPattribute(*a_3description, &_description); +#endif a -> set_null (); attributes.push (a); } SdaiFunctionally_defined_transformation::SdaiFunctionally_defined_transformation (SdaiFunctionally_defined_transformation& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiFunctionally_defined_transformation::~SdaiFunctionally_defined_transformation () { } -SdaiFunctionally_defined_transformation::SdaiFunctionally_defined_transformation( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiFunctionally_defined_transformation::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiFunctionally_defined_transformation: virtual access function." << G4endl; + SdaiFunctionally_defined_transformation_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiFunctionally_defined_transformation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiFunctionally_defined_transformation: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiFunctionally_defined_transformation *ent = (SdaiFunctionally_defined_transformation *)sent; +// SdaiFunctionally_defined_transformation *ent = (SdaiFunctionally_defined_transformation *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_functionally_defined_transformation; + ent->attributes[0].aDesc = a_2name; + ent->attributes[1].aDesc = a_3description; +} + +SCLP23(Application_instance_ptr) +create_SdaiFunctionally_defined_transformation(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiFunctionally_defined_transformation::get_os_typespec()) + SdaiFunctionally_defined_transformation; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiFunctionally_defined_transformation::get_os_typespec()) +// SdaiFunctionally_defined_transformation; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiFunctionally_defined_transformation; +} +#endif + +#ifdef __O3DB__ +void +SdaiFunctionally_defined_transformation::oodb_reInit () +{ eDesc = config_control_designe_functionally_defined_transformation; + attributes [0].aDesc = a_2name; + attributes [1].aDesc = a_3description; +} +#endif + +SdaiFunctionally_defined_transformation::SdaiFunctionally_defined_transformation( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -13685,52 +20827,76 @@ SdaiFunctionally_defined_transformation::SdaiFunctionally_defined_transformation eDesc = config_control_designe_functionally_defined_transformation; - STEPattribute * a = new STEPattribute (*a_2name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_2name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_2name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_3description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_3description, &_description); +#else + a = new STEPattribute(*a_3description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiFunctionally_defined_transformation::Name() const - { return (const SdaiLabel) _name; } +SdaiFunctionally_defined_transformation::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiFunctionally_defined_transformation::Name (const char * x) - { _name = x; } +SdaiFunctionally_defined_transformation::name_ (const SdaiLabel x) + +{ + _name = x; +} const SdaiText -SdaiFunctionally_defined_transformation::Description() const - { return (const SdaiText) _description; } +SdaiFunctionally_defined_transformation::description_() const +{ + return (SdaiText) _description; +} void -SdaiFunctionally_defined_transformation::Description (const char * x) - { _description = x; } +SdaiFunctionally_defined_transformation::description_ (const SdaiText x) -///////// END_ENTITY functionally_defined_transformation +{ + _description = x; +} + +///////// END_ENTITY functionally_defined_transformation -///////// ENTITY cartesian_transformation_operator +///////// ENTITY cartesian_transformation_operator EntityDescriptor *config_control_designe_cartesian_transformation_operator =0; AttrDescriptor *a_4axis1 =0; AttrDescriptor *a_5axis2 =0; AttrDescriptor *a_6local_origin =0; AttrDescriptor *a_7scale =0; -AttrDescriptor *a_8Dscl =0; +Derived_attribute *a_8Dscl =0; SdaiCartesian_transformation_operator::SdaiCartesian_transformation_operator( ) { @@ -13738,32 +20904,136 @@ SdaiCartesian_transformation_operator::SdaiCartesian_transformation_operator( ) /* Ignore the first parent since it is */ /* part of the main inheritance hierarchy */ /* parent: SdaiFunctionally_defined_transformation */ + HeadEntity(this); +#if 0 + /* Optionally use the following to replace the line following + the endif. Use this to turn off adding attributes in + diamond shaped hierarchies for each additional parent at this + level. You currently must hand edit this for it to work. */ + int attrFlags[3]; // e.g. + attrFlags[0] = 1; // add parents attrs + attrFlags[1] = 1; // add parent of parents attrs + attrFlags[2] = 0; // do not add parent of parent of parents attrs + // In *imaginary* hierarchy turn off attrFlags[2] since it + // would be the parent that has more than one path to it. + AppendMultInstance(new SdaiFunctionally_defined_transformation(this, attrFlags)); +#endif AppendMultInstance(new SdaiFunctionally_defined_transformation(this)); eDesc = config_control_designe_cartesian_transformation_operator; - STEPattribute * a = new STEPattribute (*a_4axis1, (STEPentityH *) &_axis1); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_4axis1, (SCLP23(Application_instance_ptr) *) &_axis1); +#else + STEPattribute *a = new STEPattribute(*a_4axis1, (SCLP23(Application_instance_ptr) *) &_axis1); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_5axis2, (STEPentityH *) &_axis2); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_5axis2, (SCLP23(Application_instance_ptr) *) &_axis2); +#else + a = new STEPattribute(*a_5axis2, (SCLP23(Application_instance_ptr) *) &_axis2); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_6local_origin, (STEPentityH *) &_local_origin); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_6local_origin, (SCLP23(Application_instance_ptr) *) &_local_origin); +#else + a = new STEPattribute(*a_6local_origin, (SCLP23(Application_instance_ptr) *) &_local_origin); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_7scale, &_scale); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_7scale, &_scale); +#else + a = new STEPattribute(*a_7scale, &_scale); +#endif a -> set_null (); attributes.push (a); - MakeDerived ("name"); - MakeDerived ("name"); + MakeDerived ("dim"); + MakeDerived ("scl"); } SdaiCartesian_transformation_operator::SdaiCartesian_transformation_operator (SdaiCartesian_transformation_operator& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiCartesian_transformation_operator::~SdaiCartesian_transformation_operator () { } -SdaiCartesian_transformation_operator::SdaiCartesian_transformation_operator (STEPentity *se ) : SdaiGeometric_representation_item(se) + +#ifdef __OSTORE__ + +void +SdaiCartesian_transformation_operator::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCartesian_transformation_operator: virtual access function." << G4endl; + SdaiCartesian_transformation_operator_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiCartesian_transformation_operator_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCartesian_transformation_operator: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiCartesian_transformation_operator *ent = (SdaiCartesian_transformation_operator *)sent; +// SdaiCartesian_transformation_operator *ent = (SdaiCartesian_transformation_operator *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_cartesian_transformation_operator; + ent->attributes[3].aDesc = a_4axis1; + if(ent->_axis1 == 0) + ent->_axis1 = S_ENTITY_NULL; + ent->attributes[4].aDesc = a_5axis2; + if(ent->_axis2 == 0) + ent->_axis2 = S_ENTITY_NULL; + ent->attributes[5].aDesc = a_6local_origin; + if(ent->_local_origin == 0) + ent->_local_origin = S_ENTITY_NULL; + ent->attributes[6].aDesc = a_7scale; +} + +SCLP23(Application_instance_ptr) +create_SdaiCartesian_transformation_operator(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiCartesian_transformation_operator::get_os_typespec()) + SdaiCartesian_transformation_operator; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiCartesian_transformation_operator::get_os_typespec()) +// SdaiCartesian_transformation_operator; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiCartesian_transformation_operator; +} +#endif + +#ifdef __O3DB__ +void +SdaiCartesian_transformation_operator::oodb_reInit () +{ eDesc = config_control_designe_cartesian_transformation_operator; + attributes [3].aDesc = a_4axis1; + attributes [4].aDesc = a_5axis2; + attributes [5].aDesc = a_6local_origin; + attributes [6].aDesc = a_7scale; +} +#endif + +SdaiCartesian_transformation_operator::SdaiCartesian_transformation_operator (SCLP23(Application_instance) *se, int *addAttrs) : SdaiGeometric_representation_item(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -13772,111 +21042,182 @@ SdaiCartesian_transformation_operator::SdaiCartesian_transformation_operator (ST /* Ignore the first parent since it is */ /* part of the main inheritance hierarchy */ /* parent: SdaiFunctionally_defined_transformation */ - se->AppendMultInstance(new SdaiFunctionally_defined_transformation(se)); +#if 0 + /* Optionally use the following to replace the line following + the endif. Use this to turn off adding attributes in + diamond shaped hierarchies for each additional parent at this + level. You currently must hand edit this for it to work. */ + int attrFlags[3]; // e.g. + attrFlags[0] = 1; // add parents attrs + attrFlags[1] = 1; // add parent of parents attrs + attrFlags[2] = 0; // do not add parent of parent of parents attrs + // In *imaginary* hierarchy turn off attrFlags[2] since it + // would be the parent that has more than one path to it. + se->AppendMultInstance(new SdaiFunctionally_defined_transformation(se, attrFlags)); +#endif + se->AppendMultInstance(new SdaiFunctionally_defined_transformation(se, 0)); eDesc = config_control_designe_cartesian_transformation_operator; - STEPattribute * a = new STEPattribute (*a_4axis1, (STEPentityH *) &_axis1); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_4axis1, (SCLP23(Application_instance_ptr) *) &_axis1); +#else + STEPattribute *a = new STEPattribute(*a_4axis1, (SCLP23(Application_instance_ptr) *) &_axis1); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_5axis2, (STEPentityH *) &_axis2); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_5axis2, (SCLP23(Application_instance_ptr) *) &_axis2); +#else + a = new STEPattribute(*a_5axis2, (SCLP23(Application_instance_ptr) *) &_axis2); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_6local_origin, (STEPentityH *) &_local_origin); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_6local_origin, (SCLP23(Application_instance_ptr) *) &_local_origin); +#else + a = new STEPattribute(*a_6local_origin, (SCLP23(Application_instance_ptr) *) &_local_origin); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_7scale, &_scale); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_7scale, &_scale); +#else + a = new STEPattribute(*a_7scale, &_scale); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); - MakeDerived ("name"); - MakeDerived ("name"); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); + MakeDerived ("scl"); } -SdaiDirectionH -SdaiCartesian_transformation_operator::Axis1() const - { return (SdaiDirectionH) _axis1; } +const SdaiDirection_ptr +SdaiCartesian_transformation_operator::axis1_() const +{ + return (SdaiDirection_ptr) _axis1; +} void -SdaiCartesian_transformation_operator::Axis1 (SdaiDirectionH x) - { _axis1 = x; } +SdaiCartesian_transformation_operator::axis1_ (const SdaiDirection_ptr x) -SdaiDirectionH -SdaiCartesian_transformation_operator::Axis2() const - { return (SdaiDirectionH) _axis2; } +{ + _axis1 = x; +} + +const SdaiDirection_ptr +SdaiCartesian_transformation_operator::axis2_() const +{ + return (SdaiDirection_ptr) _axis2; +} void -SdaiCartesian_transformation_operator::Axis2 (SdaiDirectionH x) - { _axis2 = x; } +SdaiCartesian_transformation_operator::axis2_ (const SdaiDirection_ptr x) -SdaiCartesian_pointH -SdaiCartesian_transformation_operator::Local_origin() const - { return (SdaiCartesian_pointH) _local_origin; } +{ + _axis2 = x; +} + +const SdaiCartesian_point_ptr +SdaiCartesian_transformation_operator::local_origin_() const +{ + return (SdaiCartesian_point_ptr) _local_origin; +} void -SdaiCartesian_transformation_operator::Local_origin (SdaiCartesian_pointH x) - { _local_origin = x; } +SdaiCartesian_transformation_operator::local_origin_ (const SdaiCartesian_point_ptr x) -const SdaiReal -SdaiCartesian_transformation_operator::Scale() const - { return (const SdaiReal) _scale; } +{ + _local_origin = x; +} + +const SCLP23(Real) +SdaiCartesian_transformation_operator::scale_() const +{ + return (SCLP23(Real)) _scale; +} void -SdaiCartesian_transformation_operator::Scale (SdaiReal x) - { _scale = x; } +SdaiCartesian_transformation_operator::scale_ (const SCLP23(Real) x) + +{ + _scale = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ #if 0 const SdaiLabel -SdaiCartesian_transformation_operator::Name() const - { return (const SdaiLabel) _name; } +SdaiCartesian_transformation_operator::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiCartesian_transformation_operator::Name (const char * x) - { _name = x; } +SdaiCartesian_transformation_operator::name_ (const SdaiLabel x) + +{ + _name = x; +} const SdaiText -SdaiCartesian_transformation_operator::Description() const - { return (const SdaiText) _description; } +SdaiCartesian_transformation_operator::description_() const +{ + return (SdaiText) _description; +} void -SdaiCartesian_transformation_operator::Description (const char * x) - { _description = x; } +SdaiCartesian_transformation_operator::description_ (const SdaiText x) + +{ + _description = x; +} #endif -///////// END_ENTITY cartesian_transformation_operator +///////// END_ENTITY cartesian_transformation_operator -///////// ENTITY cartesian_transformation_operator_3d +///////// ENTITY cartesian_transformation_operator_3d EntityDescriptor *config_control_designe_cartesian_transformation_operator_3d =0; AttrDescriptor *a_9axis3 =0; -AttrDescriptor *a_10Du =0; +Derived_attribute *a_10Du =0; SdaiCartesian_transformation_operator_3d::SdaiCartesian_transformation_operator_3d( ) { @@ -13886,15 +21227,79 @@ SdaiCartesian_transformation_operator_3d::SdaiCartesian_transformation_operator_ eDesc = config_control_designe_cartesian_transformation_operator_3d; - STEPattribute * a = new STEPattribute (*a_9axis3, (STEPentityH *) &_axis3); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_9axis3, (SCLP23(Application_instance_ptr) *) &_axis3); +#else + STEPattribute *a = new STEPattribute(*a_9axis3, (SCLP23(Application_instance_ptr) *) &_axis3); +#endif a -> set_null (); attributes.push (a); - MakeDerived ("name"); + MakeDerived ("dim"); + MakeDerived ("scl"); + MakeDerived ("u"); } SdaiCartesian_transformation_operator_3d::SdaiCartesian_transformation_operator_3d (SdaiCartesian_transformation_operator_3d& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiCartesian_transformation_operator_3d::~SdaiCartesian_transformation_operator_3d () { } -SdaiCartesian_transformation_operator_3d::SdaiCartesian_transformation_operator_3d (STEPentity *se ) : SdaiCartesian_transformation_operator(se) + +#ifdef __OSTORE__ + +void +SdaiCartesian_transformation_operator_3d::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCartesian_transformation_operator_3d: virtual access function." << G4endl; + SdaiCartesian_transformation_operator_3d_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiCartesian_transformation_operator_3d_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCartesian_transformation_operator_3d: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiCartesian_transformation_operator_3d *ent = (SdaiCartesian_transformation_operator_3d *)sent; +// SdaiCartesian_transformation_operator_3d *ent = (SdaiCartesian_transformation_operator_3d *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_cartesian_transformation_operator_3d; + ent->attributes[7].aDesc = a_9axis3; + if(ent->_axis3 == 0) + ent->_axis3 = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiCartesian_transformation_operator_3d(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiCartesian_transformation_operator_3d::get_os_typespec()) + SdaiCartesian_transformation_operator_3d; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiCartesian_transformation_operator_3d::get_os_typespec()) +// SdaiCartesian_transformation_operator_3d; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiCartesian_transformation_operator_3d; +} +#endif + +#ifdef __O3DB__ +void +SdaiCartesian_transformation_operator_3d::oodb_reInit () +{ eDesc = config_control_designe_cartesian_transformation_operator_3d; + attributes [7].aDesc = a_9axis3; +} +#endif + +SdaiCartesian_transformation_operator_3d::SdaiCartesian_transformation_operator_3d (SCLP23(Application_instance) *se, int *addAttrs) : SdaiCartesian_transformation_operator(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -13905,31 +21310,45 @@ SdaiCartesian_transformation_operator_3d::SdaiCartesian_transformation_operator_ eDesc = config_control_designe_cartesian_transformation_operator_3d; - STEPattribute * a = new STEPattribute (*a_9axis3, (STEPentityH *) &_axis3); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_9axis3, (SCLP23(Application_instance_ptr) *) &_axis3); +#else + STEPattribute *a = new STEPattribute(*a_9axis3, (SCLP23(Application_instance_ptr) *) &_axis3); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); - MakeDerived ("name"); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); + MakeDerived ("scl"); + MakeDerived ("u"); } -SdaiDirectionH -SdaiCartesian_transformation_operator_3d::Axis3() const - { return (SdaiDirectionH) _axis3; } +const SdaiDirection_ptr +SdaiCartesian_transformation_operator_3d::axis3_() const +{ + return (SdaiDirection_ptr) _axis3; +} void -SdaiCartesian_transformation_operator_3d::Axis3 (SdaiDirectionH x) - { _axis3 = x; } +SdaiCartesian_transformation_operator_3d::axis3_ (const SdaiDirection_ptr x) + +{ + _axis3 = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY cartesian_transformation_operator_3d +///////// END_ENTITY cartesian_transformation_operator_3d -///////// ENTITY versioned_action_request +///////// ENTITY versioned_action_request EntityDescriptor *config_control_designe_versioned_action_request =0; AttrDescriptor *a_11id =0; @@ -13943,26 +21362,110 @@ SdaiVersioned_action_request::SdaiVersioned_action_request( ) eDesc = config_control_designe_versioned_action_request; - STEPattribute * a = new STEPattribute (*a_11id, &_id); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_11id, &_id); +#else + STEPattribute *a = new STEPattribute(*a_11id, &_id); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_12version, &_version); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_12version, &_version); +#else + a = new STEPattribute(*a_12version, &_version); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_13purpose, &_purpose); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_13purpose, &_purpose); +#else + a = new STEPattribute(*a_13purpose, &_purpose); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_14description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_14description, &_description); +#else + a = new STEPattribute(*a_14description, &_description); +#endif a -> set_null (); attributes.push (a); } SdaiVersioned_action_request::SdaiVersioned_action_request (SdaiVersioned_action_request& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiVersioned_action_request::~SdaiVersioned_action_request () { } -SdaiVersioned_action_request::SdaiVersioned_action_request( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiVersioned_action_request::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiVersioned_action_request: virtual access function." << G4endl; + SdaiVersioned_action_request_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiVersioned_action_request_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiVersioned_action_request: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiVersioned_action_request *ent = (SdaiVersioned_action_request *)sent; +// SdaiVersioned_action_request *ent = (SdaiVersioned_action_request *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_versioned_action_request; + ent->attributes[0].aDesc = a_11id; + ent->attributes[1].aDesc = a_12version; + ent->attributes[2].aDesc = a_13purpose; + ent->attributes[3].aDesc = a_14description; +} + +SCLP23(Application_instance_ptr) +create_SdaiVersioned_action_request(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiVersioned_action_request::get_os_typespec()) + SdaiVersioned_action_request; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiVersioned_action_request::get_os_typespec()) +// SdaiVersioned_action_request; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiVersioned_action_request; +} +#endif + +#ifdef __O3DB__ +void +SdaiVersioned_action_request::oodb_reInit () +{ eDesc = config_control_designe_versioned_action_request; + attributes [0].aDesc = a_11id; + attributes [1].aDesc = a_12version; + attributes [2].aDesc = a_13purpose; + attributes [3].aDesc = a_14description; +} +#endif + +SdaiVersioned_action_request::SdaiVersioned_action_request( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -13971,79 +21474,127 @@ SdaiVersioned_action_request::SdaiVersioned_action_request( STEPentity *se ) eDesc = config_control_designe_versioned_action_request; - STEPattribute * a = new STEPattribute (*a_11id, &_id); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_11id, &_id); +#else + STEPattribute *a = new STEPattribute(*a_11id, &_id); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_12version, &_version); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_12version, &_version); +#else + a = new STEPattribute(*a_12version, &_version); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_13purpose, &_purpose); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_13purpose, &_purpose); +#else + a = new STEPattribute(*a_13purpose, &_purpose); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_14description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_14description, &_description); +#else + a = new STEPattribute(*a_14description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiIdentifier -SdaiVersioned_action_request::Id() const - { return (const SdaiIdentifier) _id; } +SdaiVersioned_action_request::id_() const +{ + return (SdaiIdentifier) _id; +} void -SdaiVersioned_action_request::Id (const char * x) - { _id = x; } +SdaiVersioned_action_request::id_ (const SdaiIdentifier x) + +{ + _id = x; +} const SdaiLabel -SdaiVersioned_action_request::Version() const - { return (const SdaiLabel) _version; } +SdaiVersioned_action_request::version_() const +{ + return (SdaiLabel) _version; +} void -SdaiVersioned_action_request::Version (const char * x) - { _version = x; } +SdaiVersioned_action_request::version_ (const SdaiLabel x) + +{ + _version = x; +} const SdaiText -SdaiVersioned_action_request::Purpose() const - { return (const SdaiText) _purpose; } +SdaiVersioned_action_request::purpose_() const +{ + return (SdaiText) _purpose; +} void -SdaiVersioned_action_request::Purpose (const char * x) - { _purpose = x; } +SdaiVersioned_action_request::purpose_ (const SdaiText x) + +{ + _purpose = x; +} const SdaiText -SdaiVersioned_action_request::Description() const - { return (const SdaiText) _description; } +SdaiVersioned_action_request::description_() const +{ + return (SdaiText) _description; +} void -SdaiVersioned_action_request::Description (const char * x) - { _description = x; } +SdaiVersioned_action_request::description_ (const SdaiText x) -///////// END_ENTITY versioned_action_request +{ + _description = x; +} + +///////// END_ENTITY versioned_action_request -///////// ENTITY representation +///////// ENTITY representation EntityDescriptor *config_control_designe_representation =0; AttrDescriptor *a_15name =0; @@ -14056,22 +21607,100 @@ SdaiRepresentation::SdaiRepresentation( ) eDesc = config_control_designe_representation; - STEPattribute * a = new STEPattribute (*a_15name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_15name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_15name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_16items, &_items); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_16items, &_items); +#else + a = new STEPattribute(*a_16items, &_items); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_17context_of_items, (STEPentityH *) &_context_of_items); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_17context_of_items, (SCLP23(Application_instance_ptr) *) &_context_of_items); +#else + a = new STEPattribute(*a_17context_of_items, (SCLP23(Application_instance_ptr) *) &_context_of_items); +#endif a -> set_null (); attributes.push (a); } SdaiRepresentation::SdaiRepresentation (SdaiRepresentation& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiRepresentation::~SdaiRepresentation () { } -SdaiRepresentation::SdaiRepresentation( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiRepresentation::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiRepresentation: virtual access function." << G4endl; + SdaiRepresentation_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiRepresentation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiRepresentation: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiRepresentation *ent = (SdaiRepresentation *)sent; +// SdaiRepresentation *ent = (SdaiRepresentation *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_representation; + ent->attributes[0].aDesc = a_15name; + ent->attributes[1].aDesc = a_16items; + ent->attributes[2].aDesc = a_17context_of_items; + if(ent->_context_of_items == 0) + ent->_context_of_items = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiRepresentation(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiRepresentation::get_os_typespec()) + SdaiRepresentation; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiRepresentation::get_os_typespec()) +// SdaiRepresentation; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiRepresentation; +} +#endif + +#ifdef __O3DB__ +void +SdaiRepresentation::oodb_reInit () +{ eDesc = config_control_designe_representation; + attributes [0].aDesc = a_15name; + attributes [1].aDesc = a_16items; + attributes [2].aDesc = a_17context_of_items; +} +#endif + +SdaiRepresentation::SdaiRepresentation( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -14080,62 +21709,96 @@ SdaiRepresentation::SdaiRepresentation( STEPentity *se ) eDesc = config_control_designe_representation; - STEPattribute * a = new STEPattribute (*a_15name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_15name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_15name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_16items, &_items); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_16items, &_items); +#else + a = new STEPattribute(*a_16items, &_items); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_17context_of_items, (STEPentityH *) &_context_of_items); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_17context_of_items, (SCLP23(Application_instance_ptr) *) &_context_of_items); +#else + a = new STEPattribute(*a_17context_of_items, (SCLP23(Application_instance_ptr) *) &_context_of_items); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiRepresentation::Name() const - { return (const SdaiLabel) _name; } +SdaiRepresentation::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiRepresentation::Name (const char * x) - { _name = x; } +SdaiRepresentation::name_ (const SdaiLabel x) -const EntityAggregateH -SdaiRepresentation::Items() const - { return (EntityAggregateH) &_items; } +{ + _name = x; +} + +const EntityAggregate_ptr +SdaiRepresentation::items_() const +{ + return (EntityAggregate_ptr) &_items; +} void -SdaiRepresentation::Items (EntityAggregateH x) +SdaiRepresentation::items_ (const EntityAggregate_ptr x) + { _items.ShallowCopy (*x); } -SdaiRepresentation_contextH -SdaiRepresentation::Context_of_items() const - { return (SdaiRepresentation_contextH) _context_of_items; } +const SdaiRepresentation_context_ptr +SdaiRepresentation::context_of_items_() const +{ + return (SdaiRepresentation_context_ptr) _context_of_items; +} void -SdaiRepresentation::Context_of_items (SdaiRepresentation_contextH x) - { _context_of_items = x; } +SdaiRepresentation::context_of_items_ (const SdaiRepresentation_context_ptr x) -///////// END_ENTITY representation +{ + _context_of_items = x; +} + +///////// END_ENTITY representation -///////// ENTITY shape_representation +///////// ENTITY shape_representation EntityDescriptor *config_control_designe_shape_representation =0; SdaiShape_representation::SdaiShape_representation( ) @@ -14148,9 +21811,61 @@ SdaiShape_representation::SdaiShape_representation( ) eDesc = config_control_designe_shape_representation; } SdaiShape_representation::SdaiShape_representation (SdaiShape_representation& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiShape_representation::~SdaiShape_representation () { } -SdaiShape_representation::SdaiShape_representation (STEPentity *se ) : SdaiRepresentation(se) + +#ifdef __OSTORE__ + +void +SdaiShape_representation::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiShape_representation: virtual access function." << G4endl; + SdaiShape_representation_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiShape_representation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiShape_representation: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiShape_representation *ent = (SdaiShape_representation *)sent; +// SdaiShape_representation *ent = (SdaiShape_representation *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_shape_representation; +} + +SCLP23(Application_instance_ptr) +create_SdaiShape_representation(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiShape_representation::get_os_typespec()) + SdaiShape_representation; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiShape_representation::get_os_typespec()) +// SdaiShape_representation; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiShape_representation; +} +#endif + +#ifdef __O3DB__ +void +SdaiShape_representation::oodb_reInit () +{ eDesc = config_control_designe_shape_representation; +} +#endif + +SdaiShape_representation::SdaiShape_representation (SCLP23(Application_instance) *se, int *addAttrs) : SdaiRepresentation(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -14164,10 +21879,10 @@ SdaiShape_representation::SdaiShape_representation (STEPentity *se ) : SdaiRepre /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY shape_representation +///////// END_ENTITY shape_representation -///////// ENTITY manifold_surface_shape_representation +///////// ENTITY manifold_surface_shape_representation EntityDescriptor *config_control_designe_manifold_surface_shape_representation =0; SdaiManifold_surface_shape_representation::SdaiManifold_surface_shape_representation( ) @@ -14180,9 +21895,61 @@ SdaiManifold_surface_shape_representation::SdaiManifold_surface_shape_representa eDesc = config_control_designe_manifold_surface_shape_representation; } SdaiManifold_surface_shape_representation::SdaiManifold_surface_shape_representation (SdaiManifold_surface_shape_representation& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiManifold_surface_shape_representation::~SdaiManifold_surface_shape_representation () { } -SdaiManifold_surface_shape_representation::SdaiManifold_surface_shape_representation (STEPentity *se ) : SdaiShape_representation(se) + +#ifdef __OSTORE__ + +void +SdaiManifold_surface_shape_representation::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiManifold_surface_shape_representation: virtual access function." << G4endl; + SdaiManifold_surface_shape_representation_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiManifold_surface_shape_representation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiManifold_surface_shape_representation: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiManifold_surface_shape_representation *ent = (SdaiManifold_surface_shape_representation *)sent; +// SdaiManifold_surface_shape_representation *ent = (SdaiManifold_surface_shape_representation *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_manifold_surface_shape_representation; +} + +SCLP23(Application_instance_ptr) +create_SdaiManifold_surface_shape_representation(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiManifold_surface_shape_representation::get_os_typespec()) + SdaiManifold_surface_shape_representation; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiManifold_surface_shape_representation::get_os_typespec()) +// SdaiManifold_surface_shape_representation; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiManifold_surface_shape_representation; +} +#endif + +#ifdef __O3DB__ +void +SdaiManifold_surface_shape_representation::oodb_reInit () +{ eDesc = config_control_designe_manifold_surface_shape_representation; +} +#endif + +SdaiManifold_surface_shape_representation::SdaiManifold_surface_shape_representation (SCLP23(Application_instance) *se, int *addAttrs) : SdaiShape_representation(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -14196,10 +21963,10 @@ SdaiManifold_surface_shape_representation::SdaiManifold_surface_shape_representa /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY manifold_surface_shape_representation +///////// END_ENTITY manifold_surface_shape_representation -///////// ENTITY certification +///////// ENTITY certification EntityDescriptor *config_control_designe_certification =0; AttrDescriptor *a_18name =0; @@ -14212,22 +21979,100 @@ SdaiCertification::SdaiCertification( ) eDesc = config_control_designe_certification; - STEPattribute * a = new STEPattribute (*a_18name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_18name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_18name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_19purpose, &_purpose); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_19purpose, &_purpose); +#else + a = new STEPattribute(*a_19purpose, &_purpose); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_20kind, (STEPentityH *) &_kind); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_20kind, (SCLP23(Application_instance_ptr) *) &_kind); +#else + a = new STEPattribute(*a_20kind, (SCLP23(Application_instance_ptr) *) &_kind); +#endif a -> set_null (); attributes.push (a); } SdaiCertification::SdaiCertification (SdaiCertification& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiCertification::~SdaiCertification () { } -SdaiCertification::SdaiCertification( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiCertification::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCertification: virtual access function." << G4endl; + SdaiCertification_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiCertification_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCertification: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiCertification *ent = (SdaiCertification *)sent; +// SdaiCertification *ent = (SdaiCertification *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_certification; + ent->attributes[0].aDesc = a_18name; + ent->attributes[1].aDesc = a_19purpose; + ent->attributes[2].aDesc = a_20kind; + if(ent->_kind == 0) + ent->_kind = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiCertification(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiCertification::get_os_typespec()) + SdaiCertification; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiCertification::get_os_typespec()) +// SdaiCertification; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiCertification; +} +#endif + +#ifdef __O3DB__ +void +SdaiCertification::oodb_reInit () +{ eDesc = config_control_designe_certification; + attributes [0].aDesc = a_18name; + attributes [1].aDesc = a_19purpose; + attributes [2].aDesc = a_20kind; +} +#endif + +SdaiCertification::SdaiCertification( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -14236,62 +22081,98 @@ SdaiCertification::SdaiCertification( STEPentity *se ) eDesc = config_control_designe_certification; - STEPattribute * a = new STEPattribute (*a_18name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_18name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_18name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_19purpose, &_purpose); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_19purpose, &_purpose); +#else + a = new STEPattribute(*a_19purpose, &_purpose); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_20kind, (STEPentityH *) &_kind); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_20kind, (SCLP23(Application_instance_ptr) *) &_kind); +#else + a = new STEPattribute(*a_20kind, (SCLP23(Application_instance_ptr) *) &_kind); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiCertification::Name() const - { return (const SdaiLabel) _name; } +SdaiCertification::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiCertification::Name (const char * x) - { _name = x; } +SdaiCertification::name_ (const SdaiLabel x) + +{ + _name = x; +} const SdaiText -SdaiCertification::Purpose() const - { return (const SdaiText) _purpose; } +SdaiCertification::purpose_() const +{ + return (SdaiText) _purpose; +} void -SdaiCertification::Purpose (const char * x) - { _purpose = x; } +SdaiCertification::purpose_ (const SdaiText x) -SdaiCertification_typeH -SdaiCertification::Kind() const - { return (SdaiCertification_typeH) _kind; } +{ + _purpose = x; +} + +const SdaiCertification_type_ptr +SdaiCertification::kind_() const +{ + return (SdaiCertification_type_ptr) _kind; +} void -SdaiCertification::Kind (SdaiCertification_typeH x) - { _kind = x; } +SdaiCertification::kind_ (const SdaiCertification_type_ptr x) -///////// END_ENTITY certification +{ + _kind = x; +} + +///////// END_ENTITY certification -///////// ENTITY product_definition_relationship +///////// ENTITY product_definition_relationship EntityDescriptor *config_control_designe_product_definition_relationship =0; AttrDescriptor *a_21id =0; @@ -14306,30 +22187,126 @@ SdaiProduct_definition_relationship::SdaiProduct_definition_relationship( ) eDesc = config_control_designe_product_definition_relationship; - STEPattribute * a = new STEPattribute (*a_21id, &_id); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_21id, &_id); +#else + STEPattribute *a = new STEPattribute(*a_21id, &_id); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_22name, &_name); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_22name, &_name); +#else + a = new STEPattribute(*a_22name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_23description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_23description, &_description); +#else + a = new STEPattribute(*a_23description, &_description); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_24relating_product_definition, (STEPentityH *) &_relating_product_definition); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_24relating_product_definition, (SCLP23(Application_instance_ptr) *) &_relating_product_definition); +#else + a = new STEPattribute(*a_24relating_product_definition, (SCLP23(Application_instance_ptr) *) &_relating_product_definition); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_25related_product_definition, (STEPentityH *) &_related_product_definition); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_25related_product_definition, (SCLP23(Application_instance_ptr) *) &_related_product_definition); +#else + a = new STEPattribute(*a_25related_product_definition, (SCLP23(Application_instance_ptr) *) &_related_product_definition); +#endif a -> set_null (); attributes.push (a); } SdaiProduct_definition_relationship::SdaiProduct_definition_relationship (SdaiProduct_definition_relationship& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiProduct_definition_relationship::~SdaiProduct_definition_relationship () { } -SdaiProduct_definition_relationship::SdaiProduct_definition_relationship( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiProduct_definition_relationship::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_definition_relationship: virtual access function." << G4endl; + SdaiProduct_definition_relationship_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiProduct_definition_relationship_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_definition_relationship: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiProduct_definition_relationship *ent = (SdaiProduct_definition_relationship *)sent; +// SdaiProduct_definition_relationship *ent = (SdaiProduct_definition_relationship *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_product_definition_relationship; + ent->attributes[0].aDesc = a_21id; + ent->attributes[1].aDesc = a_22name; + ent->attributes[2].aDesc = a_23description; + ent->attributes[3].aDesc = a_24relating_product_definition; + if(ent->_relating_product_definition == 0) + ent->_relating_product_definition = S_ENTITY_NULL; + ent->attributes[4].aDesc = a_25related_product_definition; + if(ent->_related_product_definition == 0) + ent->_related_product_definition = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiProduct_definition_relationship(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiProduct_definition_relationship::get_os_typespec()) + SdaiProduct_definition_relationship; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiProduct_definition_relationship::get_os_typespec()) +// SdaiProduct_definition_relationship; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiProduct_definition_relationship; +} +#endif + +#ifdef __O3DB__ +void +SdaiProduct_definition_relationship::oodb_reInit () +{ eDesc = config_control_designe_product_definition_relationship; + attributes [0].aDesc = a_21id; + attributes [1].aDesc = a_22name; + attributes [2].aDesc = a_23description; + attributes [3].aDesc = a_24relating_product_definition; + attributes [4].aDesc = a_25related_product_definition; +} +#endif + +SdaiProduct_definition_relationship::SdaiProduct_definition_relationship( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -14338,96 +22315,156 @@ SdaiProduct_definition_relationship::SdaiProduct_definition_relationship( STEPen eDesc = config_control_designe_product_definition_relationship; - STEPattribute * a = new STEPattribute (*a_21id, &_id); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_21id, &_id); +#else + STEPattribute *a = new STEPattribute(*a_21id, &_id); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_22name, &_name); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_22name, &_name); +#else + a = new STEPattribute(*a_22name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_23description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_23description, &_description); +#else + a = new STEPattribute(*a_23description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_24relating_product_definition, (STEPentityH *) &_relating_product_definition); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_24relating_product_definition, (SCLP23(Application_instance_ptr) *) &_relating_product_definition); +#else + a = new STEPattribute(*a_24relating_product_definition, (SCLP23(Application_instance_ptr) *) &_relating_product_definition); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_25related_product_definition, (STEPentityH *) &_related_product_definition); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_25related_product_definition, (SCLP23(Application_instance_ptr) *) &_related_product_definition); +#else + a = new STEPattribute(*a_25related_product_definition, (SCLP23(Application_instance_ptr) *) &_related_product_definition); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiIdentifier -SdaiProduct_definition_relationship::Id() const - { return (const SdaiIdentifier) _id; } +SdaiProduct_definition_relationship::id_() const +{ + return (SdaiIdentifier) _id; +} void -SdaiProduct_definition_relationship::Id (const char * x) - { _id = x; } +SdaiProduct_definition_relationship::id_ (const SdaiIdentifier x) + +{ + _id = x; +} const SdaiLabel -SdaiProduct_definition_relationship::Name() const - { return (const SdaiLabel) _name; } +SdaiProduct_definition_relationship::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiProduct_definition_relationship::Name (const char * x) - { _name = x; } +SdaiProduct_definition_relationship::name_ (const SdaiLabel x) + +{ + _name = x; +} const SdaiText -SdaiProduct_definition_relationship::Description() const - { return (const SdaiText) _description; } +SdaiProduct_definition_relationship::description_() const +{ + return (SdaiText) _description; +} void -SdaiProduct_definition_relationship::Description (const char * x) - { _description = x; } +SdaiProduct_definition_relationship::description_ (const SdaiText x) -SdaiProduct_definitionH -SdaiProduct_definition_relationship::Relating_product_definition() const - { return (SdaiProduct_definitionH) _relating_product_definition; } +{ + _description = x; +} + +const SdaiProduct_definition_ptr +SdaiProduct_definition_relationship::relating_product_definition_() const +{ + return (SdaiProduct_definition_ptr) _relating_product_definition; +} void -SdaiProduct_definition_relationship::Relating_product_definition (SdaiProduct_definitionH x) - { _relating_product_definition = x; } +SdaiProduct_definition_relationship::relating_product_definition_ (const SdaiProduct_definition_ptr x) -SdaiProduct_definitionH -SdaiProduct_definition_relationship::Related_product_definition() const - { return (SdaiProduct_definitionH) _related_product_definition; } +{ + _relating_product_definition = x; +} + +const SdaiProduct_definition_ptr +SdaiProduct_definition_relationship::related_product_definition_() const +{ + return (SdaiProduct_definition_ptr) _related_product_definition; +} void -SdaiProduct_definition_relationship::Related_product_definition (SdaiProduct_definitionH x) - { _related_product_definition = x; } +SdaiProduct_definition_relationship::related_product_definition_ (const SdaiProduct_definition_ptr x) -///////// END_ENTITY product_definition_relationship +{ + _related_product_definition = x; +} + +///////// END_ENTITY product_definition_relationship -///////// ENTITY product_definition_usage +///////// ENTITY product_definition_usage EntityDescriptor *config_control_designe_product_definition_usage =0; SdaiProduct_definition_usage::SdaiProduct_definition_usage( ) @@ -14440,9 +22477,61 @@ SdaiProduct_definition_usage::SdaiProduct_definition_usage( ) eDesc = config_control_designe_product_definition_usage; } SdaiProduct_definition_usage::SdaiProduct_definition_usage (SdaiProduct_definition_usage& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiProduct_definition_usage::~SdaiProduct_definition_usage () { } -SdaiProduct_definition_usage::SdaiProduct_definition_usage (STEPentity *se ) : SdaiProduct_definition_relationship(se) + +#ifdef __OSTORE__ + +void +SdaiProduct_definition_usage::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_definition_usage: virtual access function." << G4endl; + SdaiProduct_definition_usage_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiProduct_definition_usage_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_definition_usage: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiProduct_definition_usage *ent = (SdaiProduct_definition_usage *)sent; +// SdaiProduct_definition_usage *ent = (SdaiProduct_definition_usage *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_product_definition_usage; +} + +SCLP23(Application_instance_ptr) +create_SdaiProduct_definition_usage(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiProduct_definition_usage::get_os_typespec()) + SdaiProduct_definition_usage; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiProduct_definition_usage::get_os_typespec()) +// SdaiProduct_definition_usage; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiProduct_definition_usage; +} +#endif + +#ifdef __O3DB__ +void +SdaiProduct_definition_usage::oodb_reInit () +{ eDesc = config_control_designe_product_definition_usage; +} +#endif + +SdaiProduct_definition_usage::SdaiProduct_definition_usage (SCLP23(Application_instance) *se, int *addAttrs) : SdaiProduct_definition_relationship(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -14456,10 +22545,10 @@ SdaiProduct_definition_usage::SdaiProduct_definition_usage (STEPentity *se ) : S /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY product_definition_usage +///////// END_ENTITY product_definition_usage -///////// ENTITY assembly_component_usage +///////// ENTITY assembly_component_usage EntityDescriptor *config_control_designe_assembly_component_usage =0; AttrDescriptor *a_26reference_designator =0; @@ -14472,14 +22561,74 @@ SdaiAssembly_component_usage::SdaiAssembly_component_usage( ) eDesc = config_control_designe_assembly_component_usage; - STEPattribute * a = new STEPattribute (*a_26reference_designator, &_reference_designator); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_26reference_designator, &_reference_designator); +#else + STEPattribute *a = new STEPattribute(*a_26reference_designator, &_reference_designator); +#endif a -> set_null (); attributes.push (a); } SdaiAssembly_component_usage::SdaiAssembly_component_usage (SdaiAssembly_component_usage& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiAssembly_component_usage::~SdaiAssembly_component_usage () { } -SdaiAssembly_component_usage::SdaiAssembly_component_usage (STEPentity *se ) : SdaiProduct_definition_usage(se) + +#ifdef __OSTORE__ + +void +SdaiAssembly_component_usage::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAssembly_component_usage: virtual access function." << G4endl; + SdaiAssembly_component_usage_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiAssembly_component_usage_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAssembly_component_usage: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiAssembly_component_usage *ent = (SdaiAssembly_component_usage *)sent; +// SdaiAssembly_component_usage *ent = (SdaiAssembly_component_usage *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_assembly_component_usage; + ent->attributes[5].aDesc = a_26reference_designator; +} + +SCLP23(Application_instance_ptr) +create_SdaiAssembly_component_usage(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiAssembly_component_usage::get_os_typespec()) + SdaiAssembly_component_usage; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiAssembly_component_usage::get_os_typespec()) +// SdaiAssembly_component_usage; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiAssembly_component_usage; +} +#endif + +#ifdef __O3DB__ +void +SdaiAssembly_component_usage::oodb_reInit () +{ eDesc = config_control_designe_assembly_component_usage; + attributes [5].aDesc = a_26reference_designator; +} +#endif + +SdaiAssembly_component_usage::SdaiAssembly_component_usage (SCLP23(Application_instance) *se, int *addAttrs) : SdaiProduct_definition_usage(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -14490,30 +22639,42 @@ SdaiAssembly_component_usage::SdaiAssembly_component_usage (STEPentity *se ) : S eDesc = config_control_designe_assembly_component_usage; - STEPattribute * a = new STEPattribute (*a_26reference_designator, &_reference_designator); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_26reference_designator, &_reference_designator); +#else + STEPattribute *a = new STEPattribute(*a_26reference_designator, &_reference_designator); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiIdentifier -SdaiAssembly_component_usage::Reference_designator() const - { return (const SdaiIdentifier) _reference_designator; } +SdaiAssembly_component_usage::reference_designator_() const +{ + return (SdaiIdentifier) _reference_designator; +} void -SdaiAssembly_component_usage::Reference_designator (const char * x) - { _reference_designator = x; } +SdaiAssembly_component_usage::reference_designator_ (const SdaiIdentifier x) + +{ + _reference_designator = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY assembly_component_usage +///////// END_ENTITY assembly_component_usage -///////// ENTITY quantified_assembly_component_usage +///////// ENTITY quantified_assembly_component_usage EntityDescriptor *config_control_designe_quantified_assembly_component_usage =0; AttrDescriptor *a_27quantity =0; @@ -14526,14 +22687,76 @@ SdaiQuantified_assembly_component_usage::SdaiQuantified_assembly_component_usage eDesc = config_control_designe_quantified_assembly_component_usage; - STEPattribute * a = new STEPattribute (*a_27quantity, (STEPentityH *) &_quantity); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_27quantity, (SCLP23(Application_instance_ptr) *) &_quantity); +#else + STEPattribute *a = new STEPattribute(*a_27quantity, (SCLP23(Application_instance_ptr) *) &_quantity); +#endif a -> set_null (); attributes.push (a); } SdaiQuantified_assembly_component_usage::SdaiQuantified_assembly_component_usage (SdaiQuantified_assembly_component_usage& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiQuantified_assembly_component_usage::~SdaiQuantified_assembly_component_usage () { } -SdaiQuantified_assembly_component_usage::SdaiQuantified_assembly_component_usage (STEPentity *se ) : SdaiAssembly_component_usage(se) + +#ifdef __OSTORE__ + +void +SdaiQuantified_assembly_component_usage::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiQuantified_assembly_component_usage: virtual access function." << G4endl; + SdaiQuantified_assembly_component_usage_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiQuantified_assembly_component_usage_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiQuantified_assembly_component_usage: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiQuantified_assembly_component_usage *ent = (SdaiQuantified_assembly_component_usage *)sent; +// SdaiQuantified_assembly_component_usage *ent = (SdaiQuantified_assembly_component_usage *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_quantified_assembly_component_usage; + ent->attributes[6].aDesc = a_27quantity; + if(ent->_quantity == 0) + ent->_quantity = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiQuantified_assembly_component_usage(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiQuantified_assembly_component_usage::get_os_typespec()) + SdaiQuantified_assembly_component_usage; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiQuantified_assembly_component_usage::get_os_typespec()) +// SdaiQuantified_assembly_component_usage; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiQuantified_assembly_component_usage; +} +#endif + +#ifdef __O3DB__ +void +SdaiQuantified_assembly_component_usage::oodb_reInit () +{ eDesc = config_control_designe_quantified_assembly_component_usage; + attributes [6].aDesc = a_27quantity; +} +#endif + +SdaiQuantified_assembly_component_usage::SdaiQuantified_assembly_component_usage (SCLP23(Application_instance) *se, int *addAttrs) : SdaiAssembly_component_usage(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -14544,30 +22767,42 @@ SdaiQuantified_assembly_component_usage::SdaiQuantified_assembly_component_usage eDesc = config_control_designe_quantified_assembly_component_usage; - STEPattribute * a = new STEPattribute (*a_27quantity, (STEPentityH *) &_quantity); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_27quantity, (SCLP23(Application_instance_ptr) *) &_quantity); +#else + STEPattribute *a = new STEPattribute(*a_27quantity, (SCLP23(Application_instance_ptr) *) &_quantity); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiMeasure_with_unitH -SdaiQuantified_assembly_component_usage::Quantity() const - { return (SdaiMeasure_with_unitH) _quantity; } +const SdaiMeasure_with_unit_ptr +SdaiQuantified_assembly_component_usage::quantity_() const +{ + return (SdaiMeasure_with_unit_ptr) _quantity; +} void -SdaiQuantified_assembly_component_usage::Quantity (SdaiMeasure_with_unitH x) - { _quantity = x; } +SdaiQuantified_assembly_component_usage::quantity_ (const SdaiMeasure_with_unit_ptr x) + +{ + _quantity = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY quantified_assembly_component_usage +///////// END_ENTITY quantified_assembly_component_usage -///////// ENTITY solid_model +///////// ENTITY solid_model EntityDescriptor *config_control_designe_solid_model =0; SdaiSolid_model::SdaiSolid_model( ) @@ -14578,11 +22813,64 @@ SdaiSolid_model::SdaiSolid_model( ) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_solid_model; + MakeDerived ("dim"); } SdaiSolid_model::SdaiSolid_model (SdaiSolid_model& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiSolid_model::~SdaiSolid_model () { } -SdaiSolid_model::SdaiSolid_model (STEPentity *se ) : SdaiGeometric_representation_item(se) + +#ifdef __OSTORE__ + +void +SdaiSolid_model::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSolid_model: virtual access function." << G4endl; + SdaiSolid_model_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiSolid_model_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSolid_model: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiSolid_model *ent = (SdaiSolid_model *)sent; +// SdaiSolid_model *ent = (SdaiSolid_model *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_solid_model; +} + +SCLP23(Application_instance_ptr) +create_SdaiSolid_model(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiSolid_model::get_os_typespec()) + SdaiSolid_model; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiSolid_model::get_os_typespec()) +// SdaiSolid_model; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiSolid_model; +} +#endif + +#ifdef __O3DB__ +void +SdaiSolid_model::oodb_reInit () +{ eDesc = config_control_designe_solid_model; +} +#endif + +SdaiSolid_model::SdaiSolid_model (SCLP23(Application_instance) *se, int *addAttrs) : SdaiGeometric_representation_item(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -14592,14 +22880,15 @@ SdaiSolid_model::SdaiSolid_model (STEPentity *se ) : SdaiGeometric_representatio /* part of the main inheritance hierarchy */ eDesc = config_control_designe_solid_model; + MakeDerived ("dim"); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY solid_model +///////// END_ENTITY solid_model -///////// ENTITY manifold_solid_brep +///////// ENTITY manifold_solid_brep EntityDescriptor *config_control_designe_manifold_solid_brep =0; AttrDescriptor *a_28outer =0; @@ -14612,14 +22901,77 @@ SdaiManifold_solid_brep::SdaiManifold_solid_brep( ) eDesc = config_control_designe_manifold_solid_brep; - STEPattribute * a = new STEPattribute (*a_28outer, (STEPentityH *) &_outer); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_28outer, (SCLP23(Application_instance_ptr) *) &_outer); +#else + STEPattribute *a = new STEPattribute(*a_28outer, (SCLP23(Application_instance_ptr) *) &_outer); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiManifold_solid_brep::SdaiManifold_solid_brep (SdaiManifold_solid_brep& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiManifold_solid_brep::~SdaiManifold_solid_brep () { } -SdaiManifold_solid_brep::SdaiManifold_solid_brep (STEPentity *se ) : SdaiSolid_model(se) + +#ifdef __OSTORE__ + +void +SdaiManifold_solid_brep::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiManifold_solid_brep: virtual access function." << G4endl; + SdaiManifold_solid_brep_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiManifold_solid_brep_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiManifold_solid_brep: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiManifold_solid_brep *ent = (SdaiManifold_solid_brep *)sent; +// SdaiManifold_solid_brep *ent = (SdaiManifold_solid_brep *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_manifold_solid_brep; + ent->attributes[1].aDesc = a_28outer; + if(ent->_outer == 0) + ent->_outer = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiManifold_solid_brep(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiManifold_solid_brep::get_os_typespec()) + SdaiManifold_solid_brep; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiManifold_solid_brep::get_os_typespec()) +// SdaiManifold_solid_brep; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiManifold_solid_brep; +} +#endif + +#ifdef __O3DB__ +void +SdaiManifold_solid_brep::oodb_reInit () +{ eDesc = config_control_designe_manifold_solid_brep; + attributes [1].aDesc = a_28outer; +} +#endif + +SdaiManifold_solid_brep::SdaiManifold_solid_brep (SCLP23(Application_instance) *se, int *addAttrs) : SdaiSolid_model(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -14630,30 +22982,43 @@ SdaiManifold_solid_brep::SdaiManifold_solid_brep (STEPentity *se ) : SdaiSolid_m eDesc = config_control_designe_manifold_solid_brep; - STEPattribute * a = new STEPattribute (*a_28outer, (STEPentityH *) &_outer); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_28outer, (SCLP23(Application_instance_ptr) *) &_outer); +#else + STEPattribute *a = new STEPattribute(*a_28outer, (SCLP23(Application_instance_ptr) *) &_outer); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -SdaiClosed_shellH -SdaiManifold_solid_brep::Outer() const - { return (SdaiClosed_shellH) _outer; } +const SdaiClosed_shell_ptr +SdaiManifold_solid_brep::outer_() const +{ + return (SdaiClosed_shell_ptr) _outer; +} void -SdaiManifold_solid_brep::Outer (SdaiClosed_shellH x) - { _outer = x; } +SdaiManifold_solid_brep::outer_ (const SdaiClosed_shell_ptr x) + +{ + _outer = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY manifold_solid_brep +///////// END_ENTITY manifold_solid_brep -///////// ENTITY faceted_brep +///////// ENTITY faceted_brep EntityDescriptor *config_control_designe_faceted_brep =0; SdaiFaceted_brep::SdaiFaceted_brep( ) @@ -14664,11 +23029,64 @@ SdaiFaceted_brep::SdaiFaceted_brep( ) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_faceted_brep; + MakeDerived ("dim"); } SdaiFaceted_brep::SdaiFaceted_brep (SdaiFaceted_brep& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiFaceted_brep::~SdaiFaceted_brep () { } -SdaiFaceted_brep::SdaiFaceted_brep (STEPentity *se ) : SdaiManifold_solid_brep(se) + +#ifdef __OSTORE__ + +void +SdaiFaceted_brep::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiFaceted_brep: virtual access function." << G4endl; + SdaiFaceted_brep_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiFaceted_brep_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiFaceted_brep: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiFaceted_brep *ent = (SdaiFaceted_brep *)sent; +// SdaiFaceted_brep *ent = (SdaiFaceted_brep *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_faceted_brep; +} + +SCLP23(Application_instance_ptr) +create_SdaiFaceted_brep(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiFaceted_brep::get_os_typespec()) + SdaiFaceted_brep; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiFaceted_brep::get_os_typespec()) +// SdaiFaceted_brep; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiFaceted_brep; +} +#endif + +#ifdef __O3DB__ +void +SdaiFaceted_brep::oodb_reInit () +{ eDesc = config_control_designe_faceted_brep; +} +#endif + +SdaiFaceted_brep::SdaiFaceted_brep (SCLP23(Application_instance) *se, int *addAttrs) : SdaiManifold_solid_brep(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -14678,14 +23096,15 @@ SdaiFaceted_brep::SdaiFaceted_brep (STEPentity *se ) : SdaiManifold_solid_brep(s /* part of the main inheritance hierarchy */ eDesc = config_control_designe_faceted_brep; + MakeDerived ("dim"); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY faceted_brep +///////// END_ENTITY faceted_brep -///////// ENTITY action_directive +///////// ENTITY action_directive EntityDescriptor *config_control_designe_action_directive =0; AttrDescriptor *a_29name =0; @@ -14700,30 +23119,122 @@ SdaiAction_directive::SdaiAction_directive( ) eDesc = config_control_designe_action_directive; - STEPattribute * a = new STEPattribute (*a_29name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_29name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_29name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_30description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_30description, &_description); +#else + a = new STEPattribute(*a_30description, &_description); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_31analysis, &_analysis); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_31analysis, &_analysis); +#else + a = new STEPattribute(*a_31analysis, &_analysis); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_32comment, &_comment); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_32comment, &_comment); +#else + a = new STEPattribute(*a_32comment, &_comment); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_33requests, &_requests); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_33requests, &_requests); +#else + a = new STEPattribute(*a_33requests, &_requests); +#endif a -> set_null (); attributes.push (a); } SdaiAction_directive::SdaiAction_directive (SdaiAction_directive& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiAction_directive::~SdaiAction_directive () { } -SdaiAction_directive::SdaiAction_directive( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiAction_directive::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAction_directive: virtual access function." << G4endl; + SdaiAction_directive_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiAction_directive_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAction_directive: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiAction_directive *ent = (SdaiAction_directive *)sent; +// SdaiAction_directive *ent = (SdaiAction_directive *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_action_directive; + ent->attributes[0].aDesc = a_29name; + ent->attributes[1].aDesc = a_30description; + ent->attributes[2].aDesc = a_31analysis; + ent->attributes[3].aDesc = a_32comment; + ent->attributes[4].aDesc = a_33requests; +} + +SCLP23(Application_instance_ptr) +create_SdaiAction_directive(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiAction_directive::get_os_typespec()) + SdaiAction_directive; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiAction_directive::get_os_typespec()) +// SdaiAction_directive; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiAction_directive; +} +#endif + +#ifdef __O3DB__ +void +SdaiAction_directive::oodb_reInit () +{ eDesc = config_control_designe_action_directive; + attributes [0].aDesc = a_29name; + attributes [1].aDesc = a_30description; + attributes [2].aDesc = a_31analysis; + attributes [3].aDesc = a_32comment; + attributes [4].aDesc = a_33requests; +} +#endif + +SdaiAction_directive::SdaiAction_directive( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -14732,96 +23243,154 @@ SdaiAction_directive::SdaiAction_directive( STEPentity *se ) eDesc = config_control_designe_action_directive; - STEPattribute * a = new STEPattribute (*a_29name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_29name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_29name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_30description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_30description, &_description); +#else + a = new STEPattribute(*a_30description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_31analysis, &_analysis); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_31analysis, &_analysis); +#else + a = new STEPattribute(*a_31analysis, &_analysis); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_32comment, &_comment); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_32comment, &_comment); +#else + a = new STEPattribute(*a_32comment, &_comment); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_33requests, &_requests); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_33requests, &_requests); +#else + a = new STEPattribute(*a_33requests, &_requests); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiAction_directive::Name() const - { return (const SdaiLabel) _name; } +SdaiAction_directive::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiAction_directive::Name (const char * x) - { _name = x; } +SdaiAction_directive::name_ (const SdaiLabel x) + +{ + _name = x; +} const SdaiText -SdaiAction_directive::Description() const - { return (const SdaiText) _description; } +SdaiAction_directive::description_() const +{ + return (SdaiText) _description; +} void -SdaiAction_directive::Description (const char * x) - { _description = x; } +SdaiAction_directive::description_ (const SdaiText x) + +{ + _description = x; +} const SdaiText -SdaiAction_directive::Analysis() const - { return (const SdaiText) _analysis; } +SdaiAction_directive::analysis_() const +{ + return (SdaiText) _analysis; +} void -SdaiAction_directive::Analysis (const char * x) - { _analysis = x; } +SdaiAction_directive::analysis_ (const SdaiText x) + +{ + _analysis = x; +} const SdaiText -SdaiAction_directive::Comment() const - { return (const SdaiText) _comment; } +SdaiAction_directive::comment_() const +{ + return (SdaiText) _comment; +} void -SdaiAction_directive::Comment (const char * x) - { _comment = x; } +SdaiAction_directive::comment_ (const SdaiText x) -const EntityAggregateH -SdaiAction_directive::Requests() const - { return (EntityAggregateH) &_requests; } +{ + _comment = x; +} + +const EntityAggregate_ptr +SdaiAction_directive::requests_() const +{ + return (EntityAggregate_ptr) &_requests; +} void -SdaiAction_directive::Requests (EntityAggregateH x) +SdaiAction_directive::requests_ (const EntityAggregate_ptr x) + { _requests.ShallowCopy (*x); } -///////// END_ENTITY action_directive +///////// END_ENTITY action_directive -///////// ENTITY named_unit +///////// ENTITY named_unit EntityDescriptor *config_control_designe_named_unit =0; AttrDescriptor *a_34dimensions =0; @@ -14832,14 +23401,76 @@ SdaiNamed_unit::SdaiNamed_unit( ) eDesc = config_control_designe_named_unit; - STEPattribute * a = new STEPattribute (*a_34dimensions, (STEPentityH *) &_dimensions); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_34dimensions, (SCLP23(Application_instance_ptr) *) &_dimensions); +#else + STEPattribute *a = new STEPattribute(*a_34dimensions, (SCLP23(Application_instance_ptr) *) &_dimensions); +#endif a -> set_null (); attributes.push (a); } SdaiNamed_unit::SdaiNamed_unit (SdaiNamed_unit& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiNamed_unit::~SdaiNamed_unit () { } -SdaiNamed_unit::SdaiNamed_unit( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiNamed_unit::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiNamed_unit: virtual access function." << G4endl; + SdaiNamed_unit_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiNamed_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiNamed_unit: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiNamed_unit *ent = (SdaiNamed_unit *)sent; +// SdaiNamed_unit *ent = (SdaiNamed_unit *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_named_unit; + ent->attributes[0].aDesc = a_34dimensions; + if(ent->_dimensions == 0) + ent->_dimensions = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiNamed_unit(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiNamed_unit::get_os_typespec()) + SdaiNamed_unit; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiNamed_unit::get_os_typespec()) +// SdaiNamed_unit; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiNamed_unit; +} +#endif + +#ifdef __O3DB__ +void +SdaiNamed_unit::oodb_reInit () +{ eDesc = config_control_designe_named_unit; + attributes [0].aDesc = a_34dimensions; +} +#endif + +SdaiNamed_unit::SdaiNamed_unit( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -14848,28 +23479,40 @@ SdaiNamed_unit::SdaiNamed_unit( STEPentity *se ) eDesc = config_control_designe_named_unit; - STEPattribute * a = new STEPattribute (*a_34dimensions, (STEPentityH *) &_dimensions); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_34dimensions, (SCLP23(Application_instance_ptr) *) &_dimensions); +#else + STEPattribute *a = new STEPattribute(*a_34dimensions, (SCLP23(Application_instance_ptr) *) &_dimensions); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiDimensional_exponentsH -SdaiNamed_unit::Dimensions() const - { return (SdaiDimensional_exponentsH) _dimensions; } +const SdaiDimensional_exponents_ptr +SdaiNamed_unit::dimensions_() const +{ + return (SdaiDimensional_exponents_ptr) _dimensions; +} void -SdaiNamed_unit::Dimensions (SdaiDimensional_exponentsH x) - { _dimensions = x; } +SdaiNamed_unit::dimensions_ (const SdaiDimensional_exponents_ptr x) -///////// END_ENTITY named_unit +{ + _dimensions = x; +} + +///////// END_ENTITY named_unit -///////// ENTITY plane_angle_unit +///////// ENTITY plane_angle_unit EntityDescriptor *config_control_designe_plane_angle_unit =0; SdaiPlane_angle_unit::SdaiPlane_angle_unit( ) @@ -14882,9 +23525,61 @@ SdaiPlane_angle_unit::SdaiPlane_angle_unit( ) eDesc = config_control_designe_plane_angle_unit; } SdaiPlane_angle_unit::SdaiPlane_angle_unit (SdaiPlane_angle_unit& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiPlane_angle_unit::~SdaiPlane_angle_unit () { } -SdaiPlane_angle_unit::SdaiPlane_angle_unit (STEPentity *se ) : SdaiNamed_unit(se) + +#ifdef __OSTORE__ + +void +SdaiPlane_angle_unit::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPlane_angle_unit: virtual access function." << G4endl; + SdaiPlane_angle_unit_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiPlane_angle_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPlane_angle_unit: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiPlane_angle_unit *ent = (SdaiPlane_angle_unit *)sent; +// SdaiPlane_angle_unit *ent = (SdaiPlane_angle_unit *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_plane_angle_unit; +} + +SCLP23(Application_instance_ptr) +create_SdaiPlane_angle_unit(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiPlane_angle_unit::get_os_typespec()) + SdaiPlane_angle_unit; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiPlane_angle_unit::get_os_typespec()) +// SdaiPlane_angle_unit; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiPlane_angle_unit; +} +#endif + +#ifdef __O3DB__ +void +SdaiPlane_angle_unit::oodb_reInit () +{ eDesc = config_control_designe_plane_angle_unit; +} +#endif + +SdaiPlane_angle_unit::SdaiPlane_angle_unit (SCLP23(Application_instance) *se, int *addAttrs) : SdaiNamed_unit(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -14898,10 +23593,10 @@ SdaiPlane_angle_unit::SdaiPlane_angle_unit (STEPentity *se ) : SdaiNamed_unit(se /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY plane_angle_unit +///////// END_ENTITY plane_angle_unit -///////// ENTITY measure_with_unit +///////// ENTITY measure_with_unit EntityDescriptor *config_control_designe_measure_with_unit =0; AttrDescriptor *a_35value_component =0; @@ -14913,18 +23608,86 @@ SdaiMeasure_with_unit::SdaiMeasure_with_unit( ) eDesc = config_control_designe_measure_with_unit; - STEPattribute * a = new STEPattribute (*a_35value_component, &_value_component); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_35value_component, &_value_component); +#else + STEPattribute *a = new STEPattribute(*a_35value_component, &_value_component); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_36unit_component, &_unit_component); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_36unit_component, &_unit_component); +#else + a = new STEPattribute(*a_36unit_component, &_unit_component); +#endif a -> set_null (); attributes.push (a); } SdaiMeasure_with_unit::SdaiMeasure_with_unit (SdaiMeasure_with_unit& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiMeasure_with_unit::~SdaiMeasure_with_unit () { } -SdaiMeasure_with_unit::SdaiMeasure_with_unit( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiMeasure_with_unit::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiMeasure_with_unit: virtual access function." << G4endl; + SdaiMeasure_with_unit_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiMeasure_with_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiMeasure_with_unit: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiMeasure_with_unit *ent = (SdaiMeasure_with_unit *)sent; +// SdaiMeasure_with_unit *ent = (SdaiMeasure_with_unit *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_measure_with_unit; + ent->attributes[0].aDesc = a_35value_component; + ent->attributes[1].aDesc = a_36unit_component; +} + +SCLP23(Application_instance_ptr) +create_SdaiMeasure_with_unit(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiMeasure_with_unit::get_os_typespec()) + SdaiMeasure_with_unit; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiMeasure_with_unit::get_os_typespec()) +// SdaiMeasure_with_unit; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiMeasure_with_unit; +} +#endif + +#ifdef __O3DB__ +void +SdaiMeasure_with_unit::oodb_reInit () +{ eDesc = config_control_designe_measure_with_unit; + attributes [0].aDesc = a_35value_component; + attributes [1].aDesc = a_36unit_component; +} +#endif + +SdaiMeasure_with_unit::SdaiMeasure_with_unit( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -14933,45 +23696,61 @@ SdaiMeasure_with_unit::SdaiMeasure_with_unit( STEPentity *se ) eDesc = config_control_designe_measure_with_unit; - STEPattribute * a = new STEPattribute (*a_35value_component, &_value_component); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_35value_component, &_value_component); +#else + STEPattribute *a = new STEPattribute(*a_35value_component, &_value_component); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_36unit_component, &_unit_component); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_36unit_component, &_unit_component); +#else + a = new STEPattribute(*a_36unit_component, &_unit_component); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -const SdaiMeasure_valueH -SdaiMeasure_with_unit::Value_component() const - { return (const SdaiMeasure_valueH) &_value_component; } +const SdaiMeasure_value_ptr +SdaiMeasure_with_unit::value_component_() const + { return (SdaiMeasure_value_ptr) &_value_component; } void -SdaiMeasure_with_unit::Value_component (SdaiMeasure_valueH x) +SdaiMeasure_with_unit::value_component_ (const SdaiMeasure_value_ptr x) + { _value_component = x; } -const SdaiUnitH -SdaiMeasure_with_unit::Unit_component() const - { return (const SdaiUnitH) &_unit_component; } +const SdaiUnit_ptr +SdaiMeasure_with_unit::unit_component_() const + { return (SdaiUnit_ptr) &_unit_component; } void -SdaiMeasure_with_unit::Unit_component (SdaiUnitH x) +SdaiMeasure_with_unit::unit_component_ (const SdaiUnit_ptr x) + { _unit_component = x; } -///////// END_ENTITY measure_with_unit +///////// END_ENTITY measure_with_unit -///////// ENTITY area_measure_with_unit +///////// ENTITY area_measure_with_unit EntityDescriptor *config_control_designe_area_measure_with_unit =0; SdaiArea_measure_with_unit::SdaiArea_measure_with_unit( ) @@ -14984,9 +23763,61 @@ SdaiArea_measure_with_unit::SdaiArea_measure_with_unit( ) eDesc = config_control_designe_area_measure_with_unit; } SdaiArea_measure_with_unit::SdaiArea_measure_with_unit (SdaiArea_measure_with_unit& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiArea_measure_with_unit::~SdaiArea_measure_with_unit () { } -SdaiArea_measure_with_unit::SdaiArea_measure_with_unit (STEPentity *se ) : SdaiMeasure_with_unit(se) + +#ifdef __OSTORE__ + +void +SdaiArea_measure_with_unit::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiArea_measure_with_unit: virtual access function." << G4endl; + SdaiArea_measure_with_unit_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiArea_measure_with_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiArea_measure_with_unit: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiArea_measure_with_unit *ent = (SdaiArea_measure_with_unit *)sent; +// SdaiArea_measure_with_unit *ent = (SdaiArea_measure_with_unit *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_area_measure_with_unit; +} + +SCLP23(Application_instance_ptr) +create_SdaiArea_measure_with_unit(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiArea_measure_with_unit::get_os_typespec()) + SdaiArea_measure_with_unit; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiArea_measure_with_unit::get_os_typespec()) +// SdaiArea_measure_with_unit; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiArea_measure_with_unit; +} +#endif + +#ifdef __O3DB__ +void +SdaiArea_measure_with_unit::oodb_reInit () +{ eDesc = config_control_designe_area_measure_with_unit; +} +#endif + +SdaiArea_measure_with_unit::SdaiArea_measure_with_unit (SCLP23(Application_instance) *se, int *addAttrs) : SdaiMeasure_with_unit(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -15000,10 +23831,10 @@ SdaiArea_measure_with_unit::SdaiArea_measure_with_unit (STEPentity *se ) : SdaiM /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY area_measure_with_unit +///////// END_ENTITY area_measure_with_unit -///////// ENTITY effectivity +///////// ENTITY effectivity EntityDescriptor *config_control_designe_effectivity =0; AttrDescriptor *a_37id =0; @@ -15014,14 +23845,74 @@ SdaiEffectivity::SdaiEffectivity( ) eDesc = config_control_designe_effectivity; - STEPattribute * a = new STEPattribute (*a_37id, &_id); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_37id, &_id); +#else + STEPattribute *a = new STEPattribute(*a_37id, &_id); +#endif a -> set_null (); attributes.push (a); } SdaiEffectivity::SdaiEffectivity (SdaiEffectivity& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiEffectivity::~SdaiEffectivity () { } -SdaiEffectivity::SdaiEffectivity( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiEffectivity::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiEffectivity: virtual access function." << G4endl; + SdaiEffectivity_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiEffectivity_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiEffectivity: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiEffectivity *ent = (SdaiEffectivity *)sent; +// SdaiEffectivity *ent = (SdaiEffectivity *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_effectivity; + ent->attributes[0].aDesc = a_37id; +} + +SCLP23(Application_instance_ptr) +create_SdaiEffectivity(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiEffectivity::get_os_typespec()) + SdaiEffectivity; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiEffectivity::get_os_typespec()) +// SdaiEffectivity; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiEffectivity; +} +#endif + +#ifdef __O3DB__ +void +SdaiEffectivity::oodb_reInit () +{ eDesc = config_control_designe_effectivity; + attributes [0].aDesc = a_37id; +} +#endif + +SdaiEffectivity::SdaiEffectivity( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -15030,28 +23921,40 @@ SdaiEffectivity::SdaiEffectivity( STEPentity *se ) eDesc = config_control_designe_effectivity; - STEPattribute * a = new STEPattribute (*a_37id, &_id); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_37id, &_id); +#else + STEPattribute *a = new STEPattribute(*a_37id, &_id); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiIdentifier -SdaiEffectivity::Id() const - { return (const SdaiIdentifier) _id; } +SdaiEffectivity::id_() const +{ + return (SdaiIdentifier) _id; +} void -SdaiEffectivity::Id (const char * x) - { _id = x; } +SdaiEffectivity::id_ (const SdaiIdentifier x) -///////// END_ENTITY effectivity +{ + _id = x; +} + +///////// END_ENTITY effectivity -///////// ENTITY serial_numbered_effectivity +///////// ENTITY serial_numbered_effectivity EntityDescriptor *config_control_designe_serial_numbered_effectivity =0; AttrDescriptor *a_38effectivity_start_id =0; @@ -15065,18 +23968,86 @@ SdaiSerial_numbered_effectivity::SdaiSerial_numbered_effectivity( ) eDesc = config_control_designe_serial_numbered_effectivity; - STEPattribute * a = new STEPattribute (*a_38effectivity_start_id, &_effectivity_start_id); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_38effectivity_start_id, &_effectivity_start_id); +#else + STEPattribute *a = new STEPattribute(*a_38effectivity_start_id, &_effectivity_start_id); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_39effectivity_end_id, &_effectivity_end_id); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_39effectivity_end_id, &_effectivity_end_id); +#else + a = new STEPattribute(*a_39effectivity_end_id, &_effectivity_end_id); +#endif a -> set_null (); attributes.push (a); } SdaiSerial_numbered_effectivity::SdaiSerial_numbered_effectivity (SdaiSerial_numbered_effectivity& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiSerial_numbered_effectivity::~SdaiSerial_numbered_effectivity () { } -SdaiSerial_numbered_effectivity::SdaiSerial_numbered_effectivity (STEPentity *se ) : SdaiEffectivity(se) + +#ifdef __OSTORE__ + +void +SdaiSerial_numbered_effectivity::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSerial_numbered_effectivity: virtual access function." << G4endl; + SdaiSerial_numbered_effectivity_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiSerial_numbered_effectivity_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSerial_numbered_effectivity: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiSerial_numbered_effectivity *ent = (SdaiSerial_numbered_effectivity *)sent; +// SdaiSerial_numbered_effectivity *ent = (SdaiSerial_numbered_effectivity *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_serial_numbered_effectivity; + ent->attributes[1].aDesc = a_38effectivity_start_id; + ent->attributes[2].aDesc = a_39effectivity_end_id; +} + +SCLP23(Application_instance_ptr) +create_SdaiSerial_numbered_effectivity(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiSerial_numbered_effectivity::get_os_typespec()) + SdaiSerial_numbered_effectivity; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiSerial_numbered_effectivity::get_os_typespec()) +// SdaiSerial_numbered_effectivity; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiSerial_numbered_effectivity; +} +#endif + +#ifdef __O3DB__ +void +SdaiSerial_numbered_effectivity::oodb_reInit () +{ eDesc = config_control_designe_serial_numbered_effectivity; + attributes [1].aDesc = a_38effectivity_start_id; + attributes [2].aDesc = a_39effectivity_end_id; +} +#endif + +SdaiSerial_numbered_effectivity::SdaiSerial_numbered_effectivity (SCLP23(Application_instance) *se, int *addAttrs) : SdaiEffectivity(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -15087,47 +24058,71 @@ SdaiSerial_numbered_effectivity::SdaiSerial_numbered_effectivity (STEPentity *se eDesc = config_control_designe_serial_numbered_effectivity; - STEPattribute * a = new STEPattribute (*a_38effectivity_start_id, &_effectivity_start_id); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_38effectivity_start_id, &_effectivity_start_id); +#else + STEPattribute *a = new STEPattribute(*a_38effectivity_start_id, &_effectivity_start_id); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_39effectivity_end_id, &_effectivity_end_id); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_39effectivity_end_id, &_effectivity_end_id); +#else + a = new STEPattribute(*a_39effectivity_end_id, &_effectivity_end_id); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiIdentifier -SdaiSerial_numbered_effectivity::Effectivity_start_id() const - { return (const SdaiIdentifier) _effectivity_start_id; } +SdaiSerial_numbered_effectivity::effectivity_start_id_() const +{ + return (SdaiIdentifier) _effectivity_start_id; +} void -SdaiSerial_numbered_effectivity::Effectivity_start_id (const char * x) - { _effectivity_start_id = x; } +SdaiSerial_numbered_effectivity::effectivity_start_id_ (const SdaiIdentifier x) + +{ + _effectivity_start_id = x; +} const SdaiIdentifier -SdaiSerial_numbered_effectivity::Effectivity_end_id() const - { return (const SdaiIdentifier) _effectivity_end_id; } +SdaiSerial_numbered_effectivity::effectivity_end_id_() const +{ + return (SdaiIdentifier) _effectivity_end_id; +} void -SdaiSerial_numbered_effectivity::Effectivity_end_id (const char * x) - { _effectivity_end_id = x; } +SdaiSerial_numbered_effectivity::effectivity_end_id_ (const SdaiIdentifier x) + +{ + _effectivity_end_id = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY serial_numbered_effectivity +///////// END_ENTITY serial_numbered_effectivity -///////// ENTITY surface +///////// ENTITY surface EntityDescriptor *config_control_designe_surface =0; SdaiSurface::SdaiSurface( ) @@ -15138,11 +24133,64 @@ SdaiSurface::SdaiSurface( ) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_surface; + MakeDerived ("dim"); } SdaiSurface::SdaiSurface (SdaiSurface& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiSurface::~SdaiSurface () { } -SdaiSurface::SdaiSurface (STEPentity *se ) : SdaiGeometric_representation_item(se) + +#ifdef __OSTORE__ + +void +SdaiSurface::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSurface: virtual access function." << G4endl; + SdaiSurface_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiSurface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSurface: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiSurface *ent = (SdaiSurface *)sent; +// SdaiSurface *ent = (SdaiSurface *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_surface; +} + +SCLP23(Application_instance_ptr) +create_SdaiSurface(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiSurface::get_os_typespec()) + SdaiSurface; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiSurface::get_os_typespec()) +// SdaiSurface; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiSurface; +} +#endif + +#ifdef __O3DB__ +void +SdaiSurface::oodb_reInit () +{ eDesc = config_control_designe_surface; +} +#endif + +SdaiSurface::SdaiSurface (SCLP23(Application_instance) *se, int *addAttrs) : SdaiGeometric_representation_item(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -15152,14 +24200,15 @@ SdaiSurface::SdaiSurface (STEPentity *se ) : SdaiGeometric_representation_item(s /* part of the main inheritance hierarchy */ eDesc = config_control_designe_surface; + MakeDerived ("dim"); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY surface +///////// END_ENTITY surface -///////// ENTITY offset_surface +///////// ENTITY offset_surface EntityDescriptor *config_control_designe_offset_surface =0; AttrDescriptor *a_40basis_surface =0; @@ -15174,22 +24223,101 @@ SdaiOffset_surface::SdaiOffset_surface( ) eDesc = config_control_designe_offset_surface; - STEPattribute * a = new STEPattribute (*a_40basis_surface, (STEPentityH *) &_basis_surface); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_40basis_surface, (SCLP23(Application_instance_ptr) *) &_basis_surface); +#else + STEPattribute *a = new STEPattribute(*a_40basis_surface, (SCLP23(Application_instance_ptr) *) &_basis_surface); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_41distance, &_distance); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_41distance, &_distance); +#else + a = new STEPattribute(*a_41distance, &_distance); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_42self_intersect, &_self_intersect); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_42self_intersect, &_self_intersect); +#else + a = new STEPattribute(*a_42self_intersect, &_self_intersect); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiOffset_surface::SdaiOffset_surface (SdaiOffset_surface& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiOffset_surface::~SdaiOffset_surface () { } -SdaiOffset_surface::SdaiOffset_surface (STEPentity *se ) : SdaiSurface(se) + +#ifdef __OSTORE__ + +void +SdaiOffset_surface::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOffset_surface: virtual access function." << G4endl; + SdaiOffset_surface_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiOffset_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOffset_surface: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiOffset_surface *ent = (SdaiOffset_surface *)sent; +// SdaiOffset_surface *ent = (SdaiOffset_surface *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_offset_surface; + ent->attributes[1].aDesc = a_40basis_surface; + if(ent->_basis_surface == 0) + ent->_basis_surface = S_ENTITY_NULL; + ent->attributes[2].aDesc = a_41distance; + ent->attributes[3].aDesc = a_42self_intersect; +} + +SCLP23(Application_instance_ptr) +create_SdaiOffset_surface(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiOffset_surface::get_os_typespec()) + SdaiOffset_surface; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiOffset_surface::get_os_typespec()) +// SdaiOffset_surface; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiOffset_surface; +} +#endif + +#ifdef __O3DB__ +void +SdaiOffset_surface::oodb_reInit () +{ eDesc = config_control_designe_offset_surface; + attributes [1].aDesc = a_40basis_surface; + attributes [2].aDesc = a_41distance; + attributes [3].aDesc = a_42self_intersect; +} +#endif + +SdaiOffset_surface::SdaiOffset_surface (SCLP23(Application_instance) *se, int *addAttrs) : SdaiSurface(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -15200,64 +24328,101 @@ SdaiOffset_surface::SdaiOffset_surface (STEPentity *se ) : SdaiSurface(se) eDesc = config_control_designe_offset_surface; - STEPattribute * a = new STEPattribute (*a_40basis_surface, (STEPentityH *) &_basis_surface); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_40basis_surface, (SCLP23(Application_instance_ptr) *) &_basis_surface); +#else + STEPattribute *a = new STEPattribute(*a_40basis_surface, (SCLP23(Application_instance_ptr) *) &_basis_surface); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_41distance, &_distance); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_41distance, &_distance); +#else + a = new STEPattribute(*a_41distance, &_distance); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_42self_intersect, &_self_intersect); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_42self_intersect, &_self_intersect); +#else + a = new STEPattribute(*a_42self_intersect, &_self_intersect); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -SdaiSurfaceH -SdaiOffset_surface::Basis_surface() const - { return (SdaiSurfaceH) _basis_surface; } +const SdaiSurface_ptr +SdaiOffset_surface::basis_surface_() const +{ + return (SdaiSurface_ptr) _basis_surface; +} void -SdaiOffset_surface::Basis_surface (SdaiSurfaceH x) - { _basis_surface = x; } +SdaiOffset_surface::basis_surface_ (const SdaiSurface_ptr x) + +{ + _basis_surface = x; +} const SdaiLength_measure -SdaiOffset_surface::Distance() const - { return (const SdaiLength_measure) _distance; } +SdaiOffset_surface::distance_() const +{ + return (SdaiLength_measure) _distance; +} void -SdaiOffset_surface::Distance (SdaiLength_measure x) - { _distance = x; } +SdaiOffset_surface::distance_ (const SdaiLength_measure x) -const LOGICAL -SdaiOffset_surface::Self_intersect() const - { return (LOGICAL) _self_intersect; } +{ + _distance = x; +} + +const SCLLOG(Logical) +SdaiOffset_surface::self_intersect_() const +{ + return (SCLLOG(Logical)) _self_intersect; +} void -SdaiOffset_surface::Self_intersect (LOGICAL x) - { _self_intersect.put (x); } +SdaiOffset_surface::self_intersect_ (const SCLLOG(Logical) x) + +{ + _self_intersect.put (x); +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY offset_surface +///////// END_ENTITY offset_surface -///////// ENTITY placement +///////// ENTITY placement EntityDescriptor *config_control_designe_placement =0; AttrDescriptor *a_43location =0; @@ -15270,14 +24435,77 @@ SdaiPlacement::SdaiPlacement( ) eDesc = config_control_designe_placement; - STEPattribute * a = new STEPattribute (*a_43location, (STEPentityH *) &_location); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_43location, (SCLP23(Application_instance_ptr) *) &_location); +#else + STEPattribute *a = new STEPattribute(*a_43location, (SCLP23(Application_instance_ptr) *) &_location); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiPlacement::SdaiPlacement (SdaiPlacement& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiPlacement::~SdaiPlacement () { } -SdaiPlacement::SdaiPlacement (STEPentity *se ) : SdaiGeometric_representation_item(se) + +#ifdef __OSTORE__ + +void +SdaiPlacement::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPlacement: virtual access function." << G4endl; + SdaiPlacement_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiPlacement_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPlacement: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiPlacement *ent = (SdaiPlacement *)sent; +// SdaiPlacement *ent = (SdaiPlacement *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_placement; + ent->attributes[1].aDesc = a_43location; + if(ent->_location == 0) + ent->_location = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiPlacement(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiPlacement::get_os_typespec()) + SdaiPlacement; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiPlacement::get_os_typespec()) +// SdaiPlacement; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiPlacement; +} +#endif + +#ifdef __O3DB__ +void +SdaiPlacement::oodb_reInit () +{ eDesc = config_control_designe_placement; + attributes [1].aDesc = a_43location; +} +#endif + +SdaiPlacement::SdaiPlacement (SCLP23(Application_instance) *se, int *addAttrs) : SdaiGeometric_representation_item(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -15288,34 +24516,47 @@ SdaiPlacement::SdaiPlacement (STEPentity *se ) : SdaiGeometric_representation_it eDesc = config_control_designe_placement; - STEPattribute * a = new STEPattribute (*a_43location, (STEPentityH *) &_location); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_43location, (SCLP23(Application_instance_ptr) *) &_location); +#else + STEPattribute *a = new STEPattribute(*a_43location, (SCLP23(Application_instance_ptr) *) &_location); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -SdaiCartesian_pointH -SdaiPlacement::Location() const - { return (SdaiCartesian_pointH) _location; } +const SdaiCartesian_point_ptr +SdaiPlacement::location_() const +{ + return (SdaiCartesian_point_ptr) _location; +} void -SdaiPlacement::Location (SdaiCartesian_pointH x) - { _location = x; } +SdaiPlacement::location_ (const SdaiCartesian_point_ptr x) + +{ + _location = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY placement +///////// END_ENTITY placement -///////// ENTITY axis2_placement_2d +///////// ENTITY axis2_placement_2d EntityDescriptor *config_control_designe_axis2_placement_2d =0; AttrDescriptor *a_44ref_direction =0; -AttrDescriptor *a_45Dp =0; +Derived_attribute *a_45Dp =0; SdaiAxis2_placement_2d::SdaiAxis2_placement_2d( ) { @@ -15325,14 +24566,78 @@ SdaiAxis2_placement_2d::SdaiAxis2_placement_2d( ) eDesc = config_control_designe_axis2_placement_2d; - STEPattribute * a = new STEPattribute (*a_44ref_direction, (STEPentityH *) &_ref_direction); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_44ref_direction, (SCLP23(Application_instance_ptr) *) &_ref_direction); +#else + STEPattribute *a = new STEPattribute(*a_44ref_direction, (SCLP23(Application_instance_ptr) *) &_ref_direction); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); + MakeDerived ("p"); } SdaiAxis2_placement_2d::SdaiAxis2_placement_2d (SdaiAxis2_placement_2d& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiAxis2_placement_2d::~SdaiAxis2_placement_2d () { } -SdaiAxis2_placement_2d::SdaiAxis2_placement_2d (STEPentity *se ) : SdaiPlacement(se) + +#ifdef __OSTORE__ + +void +SdaiAxis2_placement_2d::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAxis2_placement_2d: virtual access function." << G4endl; + SdaiAxis2_placement_2d_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiAxis2_placement_2d_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAxis2_placement_2d: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiAxis2_placement_2d *ent = (SdaiAxis2_placement_2d *)sent; +// SdaiAxis2_placement_2d *ent = (SdaiAxis2_placement_2d *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_axis2_placement_2d; + ent->attributes[2].aDesc = a_44ref_direction; + if(ent->_ref_direction == 0) + ent->_ref_direction = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiAxis2_placement_2d(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiAxis2_placement_2d::get_os_typespec()) + SdaiAxis2_placement_2d; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiAxis2_placement_2d::get_os_typespec()) +// SdaiAxis2_placement_2d; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiAxis2_placement_2d; +} +#endif + +#ifdef __O3DB__ +void +SdaiAxis2_placement_2d::oodb_reInit () +{ eDesc = config_control_designe_axis2_placement_2d; + attributes [2].aDesc = a_44ref_direction; +} +#endif + +SdaiAxis2_placement_2d::SdaiAxis2_placement_2d (SCLP23(Application_instance) *se, int *addAttrs) : SdaiPlacement(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -15343,30 +24648,44 @@ SdaiAxis2_placement_2d::SdaiAxis2_placement_2d (STEPentity *se ) : SdaiPlacement eDesc = config_control_designe_axis2_placement_2d; - STEPattribute * a = new STEPattribute (*a_44ref_direction, (STEPentityH *) &_ref_direction); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_44ref_direction, (SCLP23(Application_instance_ptr) *) &_ref_direction); +#else + STEPattribute *a = new STEPattribute(*a_44ref_direction, (SCLP23(Application_instance_ptr) *) &_ref_direction); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); + MakeDerived ("p"); } -SdaiDirectionH -SdaiAxis2_placement_2d::Ref_direction() const - { return (SdaiDirectionH) _ref_direction; } +const SdaiDirection_ptr +SdaiAxis2_placement_2d::ref_direction_() const +{ + return (SdaiDirection_ptr) _ref_direction; +} void -SdaiAxis2_placement_2d::Ref_direction (SdaiDirectionH x) - { _ref_direction = x; } +SdaiAxis2_placement_2d::ref_direction_ (const SdaiDirection_ptr x) + +{ + _ref_direction = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY axis2_placement_2d +///////// END_ENTITY axis2_placement_2d -///////// ENTITY product_category +///////// ENTITY product_category EntityDescriptor *config_control_designe_product_category =0; AttrDescriptor *a_46name =0; @@ -15378,18 +24697,86 @@ SdaiProduct_category::SdaiProduct_category( ) eDesc = config_control_designe_product_category; - STEPattribute * a = new STEPattribute (*a_46name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_46name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_46name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_47description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_47description, &_description); +#else + a = new STEPattribute(*a_47description, &_description); +#endif a -> set_null (); attributes.push (a); } SdaiProduct_category::SdaiProduct_category (SdaiProduct_category& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiProduct_category::~SdaiProduct_category () { } -SdaiProduct_category::SdaiProduct_category( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiProduct_category::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_category: virtual access function." << G4endl; + SdaiProduct_category_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiProduct_category_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_category: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiProduct_category *ent = (SdaiProduct_category *)sent; +// SdaiProduct_category *ent = (SdaiProduct_category *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_product_category; + ent->attributes[0].aDesc = a_46name; + ent->attributes[1].aDesc = a_47description; +} + +SCLP23(Application_instance_ptr) +create_SdaiProduct_category(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiProduct_category::get_os_typespec()) + SdaiProduct_category; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiProduct_category::get_os_typespec()) +// SdaiProduct_category; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiProduct_category; +} +#endif + +#ifdef __O3DB__ +void +SdaiProduct_category::oodb_reInit () +{ eDesc = config_control_designe_product_category; + attributes [0].aDesc = a_46name; + attributes [1].aDesc = a_47description; +} +#endif + +SdaiProduct_category::SdaiProduct_category( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -15398,45 +24785,69 @@ SdaiProduct_category::SdaiProduct_category( STEPentity *se ) eDesc = config_control_designe_product_category; - STEPattribute * a = new STEPattribute (*a_46name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_46name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_46name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_47description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_47description, &_description); +#else + a = new STEPattribute(*a_47description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiProduct_category::Name() const - { return (const SdaiLabel) _name; } +SdaiProduct_category::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiProduct_category::Name (const char * x) - { _name = x; } +SdaiProduct_category::name_ (const SdaiLabel x) + +{ + _name = x; +} const SdaiText -SdaiProduct_category::Description() const - { return (const SdaiText) _description; } +SdaiProduct_category::description_() const +{ + return (SdaiText) _description; +} void -SdaiProduct_category::Description (const char * x) - { _description = x; } +SdaiProduct_category::description_ (const SdaiText x) -///////// END_ENTITY product_category +{ + _description = x; +} + +///////// END_ENTITY product_category -///////// ENTITY product_related_product_category +///////// ENTITY product_related_product_category EntityDescriptor *config_control_designe_product_related_product_category =0; AttrDescriptor *a_48products =0; @@ -15449,14 +24860,74 @@ SdaiProduct_related_product_category::SdaiProduct_related_product_category( ) eDesc = config_control_designe_product_related_product_category; - STEPattribute * a = new STEPattribute (*a_48products, &_products); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_48products, &_products); +#else + STEPattribute *a = new STEPattribute(*a_48products, &_products); +#endif a -> set_null (); attributes.push (a); } SdaiProduct_related_product_category::SdaiProduct_related_product_category (SdaiProduct_related_product_category& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiProduct_related_product_category::~SdaiProduct_related_product_category () { } -SdaiProduct_related_product_category::SdaiProduct_related_product_category (STEPentity *se ) : SdaiProduct_category(se) + +#ifdef __OSTORE__ + +void +SdaiProduct_related_product_category::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_related_product_category: virtual access function." << G4endl; + SdaiProduct_related_product_category_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiProduct_related_product_category_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_related_product_category: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiProduct_related_product_category *ent = (SdaiProduct_related_product_category *)sent; +// SdaiProduct_related_product_category *ent = (SdaiProduct_related_product_category *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_product_related_product_category; + ent->attributes[2].aDesc = a_48products; +} + +SCLP23(Application_instance_ptr) +create_SdaiProduct_related_product_category(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiProduct_related_product_category::get_os_typespec()) + SdaiProduct_related_product_category; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiProduct_related_product_category::get_os_typespec()) +// SdaiProduct_related_product_category; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiProduct_related_product_category; +} +#endif + +#ifdef __O3DB__ +void +SdaiProduct_related_product_category::oodb_reInit () +{ eDesc = config_control_designe_product_related_product_category; + attributes [2].aDesc = a_48products; +} +#endif + +SdaiProduct_related_product_category::SdaiProduct_related_product_category (SCLP23(Application_instance) *se, int *addAttrs) : SdaiProduct_category(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -15467,30 +24938,40 @@ SdaiProduct_related_product_category::SdaiProduct_related_product_category (STEP eDesc = config_control_designe_product_related_product_category; - STEPattribute * a = new STEPattribute (*a_48products, &_products); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_48products, &_products); +#else + STEPattribute *a = new STEPattribute(*a_48products, &_products); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -const EntityAggregateH -SdaiProduct_related_product_category::Products() const - { return (EntityAggregateH) &_products; } +const EntityAggregate_ptr +SdaiProduct_related_product_category::products_() const +{ + return (EntityAggregate_ptr) &_products; +} void -SdaiProduct_related_product_category::Products (EntityAggregateH x) +SdaiProduct_related_product_category::products_ (const EntityAggregate_ptr x) + { _products.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY product_related_product_category +///////// END_ENTITY product_related_product_category -///////// ENTITY curve +///////// ENTITY curve EntityDescriptor *config_control_designe_curve =0; SdaiCurve::SdaiCurve( ) @@ -15501,11 +24982,64 @@ SdaiCurve::SdaiCurve( ) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_curve; + MakeDerived ("dim"); } SdaiCurve::SdaiCurve (SdaiCurve& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiCurve::~SdaiCurve () { } -SdaiCurve::SdaiCurve (STEPentity *se ) : SdaiGeometric_representation_item(se) + +#ifdef __OSTORE__ + +void +SdaiCurve::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCurve: virtual access function." << G4endl; + SdaiCurve_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiCurve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCurve: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiCurve *ent = (SdaiCurve *)sent; +// SdaiCurve *ent = (SdaiCurve *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_curve; +} + +SCLP23(Application_instance_ptr) +create_SdaiCurve(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiCurve::get_os_typespec()) + SdaiCurve; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiCurve::get_os_typespec()) +// SdaiCurve; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiCurve; +} +#endif + +#ifdef __O3DB__ +void +SdaiCurve::oodb_reInit () +{ eDesc = config_control_designe_curve; +} +#endif + +SdaiCurve::SdaiCurve (SCLP23(Application_instance) *se, int *addAttrs) : SdaiGeometric_representation_item(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -15515,14 +25049,15 @@ SdaiCurve::SdaiCurve (STEPentity *se ) : SdaiGeometric_representation_item(se) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_curve; + MakeDerived ("dim"); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY curve +///////// END_ENTITY curve -///////// ENTITY conic +///////// ENTITY conic EntityDescriptor *config_control_designe_conic =0; AttrDescriptor *a_49position =0; @@ -15535,14 +25070,75 @@ SdaiConic::SdaiConic( ) eDesc = config_control_designe_conic; - STEPattribute * a = new STEPattribute (*a_49position, &_position); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_49position, &_position); +#else + STEPattribute *a = new STEPattribute(*a_49position, &_position); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiConic::SdaiConic (SdaiConic& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiConic::~SdaiConic () { } -SdaiConic::SdaiConic (STEPentity *se ) : SdaiCurve(se) + +#ifdef __OSTORE__ + +void +SdaiConic::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiConic: virtual access function." << G4endl; + SdaiConic_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiConic_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiConic: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiConic *ent = (SdaiConic *)sent; +// SdaiConic *ent = (SdaiConic *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_conic; + ent->attributes[1].aDesc = a_49position; +} + +SCLP23(Application_instance_ptr) +create_SdaiConic(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiConic::get_os_typespec()) + SdaiConic; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiConic::get_os_typespec()) +// SdaiConic; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiConic; +} +#endif + +#ifdef __O3DB__ +void +SdaiConic::oodb_reInit () +{ eDesc = config_control_designe_conic; + attributes [1].aDesc = a_49position; +} +#endif + +SdaiConic::SdaiConic (SCLP23(Application_instance) *se, int *addAttrs) : SdaiCurve(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -15553,30 +25149,39 @@ SdaiConic::SdaiConic (STEPentity *se ) : SdaiCurve(se) eDesc = config_control_designe_conic; - STEPattribute * a = new STEPattribute (*a_49position, &_position); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_49position, &_position); +#else + STEPattribute *a = new STEPattribute(*a_49position, &_position); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -const SdaiAxis2_placementH -SdaiConic::Position() const - { return (const SdaiAxis2_placementH) &_position; } +const SdaiAxis2_placement_ptr +SdaiConic::position_() const + { return (SdaiAxis2_placement_ptr) &_position; } void -SdaiConic::Position (SdaiAxis2_placementH x) +SdaiConic::position_ (const SdaiAxis2_placement_ptr x) + { _position = x; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY conic +///////// END_ENTITY conic -///////// ENTITY hyperbola +///////// ENTITY hyperbola EntityDescriptor *config_control_designe_hyperbola =0; AttrDescriptor *a_50semi_axis =0; @@ -15590,18 +25195,87 @@ SdaiHyperbola::SdaiHyperbola( ) eDesc = config_control_designe_hyperbola; - STEPattribute * a = new STEPattribute (*a_50semi_axis, &_semi_axis); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_50semi_axis, &_semi_axis); +#else + STEPattribute *a = new STEPattribute(*a_50semi_axis, &_semi_axis); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_51semi_imag_axis, &_semi_imag_axis); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_51semi_imag_axis, &_semi_imag_axis); +#else + a = new STEPattribute(*a_51semi_imag_axis, &_semi_imag_axis); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiHyperbola::SdaiHyperbola (SdaiHyperbola& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiHyperbola::~SdaiHyperbola () { } -SdaiHyperbola::SdaiHyperbola (STEPentity *se ) : SdaiConic(se) + +#ifdef __OSTORE__ + +void +SdaiHyperbola::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiHyperbola: virtual access function." << G4endl; + SdaiHyperbola_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiHyperbola_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiHyperbola: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiHyperbola *ent = (SdaiHyperbola *)sent; +// SdaiHyperbola *ent = (SdaiHyperbola *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_hyperbola; + ent->attributes[2].aDesc = a_50semi_axis; + ent->attributes[3].aDesc = a_51semi_imag_axis; +} + +SCLP23(Application_instance_ptr) +create_SdaiHyperbola(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiHyperbola::get_os_typespec()) + SdaiHyperbola; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiHyperbola::get_os_typespec()) +// SdaiHyperbola; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiHyperbola; +} +#endif + +#ifdef __O3DB__ +void +SdaiHyperbola::oodb_reInit () +{ eDesc = config_control_designe_hyperbola; + attributes [2].aDesc = a_50semi_axis; + attributes [3].aDesc = a_51semi_imag_axis; +} +#endif + +SdaiHyperbola::SdaiHyperbola (SCLP23(Application_instance) *se, int *addAttrs) : SdaiConic(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -15612,47 +25286,72 @@ SdaiHyperbola::SdaiHyperbola (STEPentity *se ) : SdaiConic(se) eDesc = config_control_designe_hyperbola; - STEPattribute * a = new STEPattribute (*a_50semi_axis, &_semi_axis); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_50semi_axis, &_semi_axis); +#else + STEPattribute *a = new STEPattribute(*a_50semi_axis, &_semi_axis); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_51semi_imag_axis, &_semi_imag_axis); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_51semi_imag_axis, &_semi_imag_axis); +#else + a = new STEPattribute(*a_51semi_imag_axis, &_semi_imag_axis); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } const SdaiPositive_length_measure -SdaiHyperbola::Semi_axis() const - { return (const SdaiPositive_length_measure) _semi_axis; } +SdaiHyperbola::semi_axis_() const +{ + return (SdaiPositive_length_measure) _semi_axis; +} void -SdaiHyperbola::Semi_axis (SdaiPositive_length_measure x) - { _semi_axis = x; } +SdaiHyperbola::semi_axis_ (const SdaiPositive_length_measure x) + +{ + _semi_axis = x; +} const SdaiPositive_length_measure -SdaiHyperbola::Semi_imag_axis() const - { return (const SdaiPositive_length_measure) _semi_imag_axis; } +SdaiHyperbola::semi_imag_axis_() const +{ + return (SdaiPositive_length_measure) _semi_imag_axis; +} void -SdaiHyperbola::Semi_imag_axis (SdaiPositive_length_measure x) - { _semi_imag_axis = x; } +SdaiHyperbola::semi_imag_axis_ (const SdaiPositive_length_measure x) + +{ + _semi_imag_axis = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY hyperbola +///////// END_ENTITY hyperbola -///////// ENTITY address +///////// ENTITY address EntityDescriptor *config_control_designe_address =0; AttrDescriptor *a_52internal_location =0; @@ -15674,58 +25373,206 @@ SdaiAddress::SdaiAddress( ) eDesc = config_control_designe_address; - STEPattribute * a = new STEPattribute (*a_52internal_location, &_internal_location); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_52internal_location, &_internal_location); +#else + STEPattribute *a = new STEPattribute(*a_52internal_location, &_internal_location); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_53street_number, &_street_number); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_53street_number, &_street_number); +#else + a = new STEPattribute(*a_53street_number, &_street_number); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_54street, &_street); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_54street, &_street); +#else + a = new STEPattribute(*a_54street, &_street); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_55postal_box, &_postal_box); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_55postal_box, &_postal_box); +#else + a = new STEPattribute(*a_55postal_box, &_postal_box); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_56town, &_town); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_56town, &_town); +#else + a = new STEPattribute(*a_56town, &_town); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_57region, &_region); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_57region, &_region); +#else + a = new STEPattribute(*a_57region, &_region); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_58postal_code, &_postal_code); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_58postal_code, &_postal_code); +#else + a = new STEPattribute(*a_58postal_code, &_postal_code); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_59country, &_country); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_59country, &_country); +#else + a = new STEPattribute(*a_59country, &_country); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_60facsimile_number, &_facsimile_number); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_60facsimile_number, &_facsimile_number); +#else + a = new STEPattribute(*a_60facsimile_number, &_facsimile_number); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_61telephone_number, &_telephone_number); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_61telephone_number, &_telephone_number); +#else + a = new STEPattribute(*a_61telephone_number, &_telephone_number); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_62electronic_mail_address, &_electronic_mail_address); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_62electronic_mail_address, &_electronic_mail_address); +#else + a = new STEPattribute(*a_62electronic_mail_address, &_electronic_mail_address); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_63telex_number, &_telex_number); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_63telex_number, &_telex_number); +#else + a = new STEPattribute(*a_63telex_number, &_telex_number); +#endif a -> set_null (); attributes.push (a); } SdaiAddress::SdaiAddress (SdaiAddress& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiAddress::~SdaiAddress () { } -SdaiAddress::SdaiAddress( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiAddress::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAddress: virtual access function." << G4endl; + SdaiAddress_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiAddress_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAddress: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiAddress *ent = (SdaiAddress *)sent; +// SdaiAddress *ent = (SdaiAddress *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_address; + ent->attributes[0].aDesc = a_52internal_location; + ent->attributes[1].aDesc = a_53street_number; + ent->attributes[2].aDesc = a_54street; + ent->attributes[3].aDesc = a_55postal_box; + ent->attributes[4].aDesc = a_56town; + ent->attributes[5].aDesc = a_57region; + ent->attributes[6].aDesc = a_58postal_code; + ent->attributes[7].aDesc = a_59country; + ent->attributes[8].aDesc = a_60facsimile_number; + ent->attributes[9].aDesc = a_61telephone_number; + ent->attributes[10].aDesc = a_62electronic_mail_address; + ent->attributes[11].aDesc = a_63telex_number; +} + +SCLP23(Application_instance_ptr) +create_SdaiAddress(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiAddress::get_os_typespec()) + SdaiAddress; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiAddress::get_os_typespec()) +// SdaiAddress; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiAddress; +} +#endif + +#ifdef __O3DB__ +void +SdaiAddress::oodb_reInit () +{ eDesc = config_control_designe_address; + attributes [0].aDesc = a_52internal_location; + attributes [1].aDesc = a_53street_number; + attributes [2].aDesc = a_54street; + attributes [3].aDesc = a_55postal_box; + attributes [4].aDesc = a_56town; + attributes [5].aDesc = a_57region; + attributes [6].aDesc = a_58postal_code; + attributes [7].aDesc = a_59country; + attributes [8].aDesc = a_60facsimile_number; + attributes [9].aDesc = a_61telephone_number; + attributes [10].aDesc = a_62electronic_mail_address; + attributes [11].aDesc = a_63telex_number; +} +#endif + +SdaiAddress::SdaiAddress( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -15734,215 +25581,359 @@ SdaiAddress::SdaiAddress( STEPentity *se ) eDesc = config_control_designe_address; - STEPattribute * a = new STEPattribute (*a_52internal_location, &_internal_location); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_52internal_location, &_internal_location); +#else + STEPattribute *a = new STEPattribute(*a_52internal_location, &_internal_location); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_53street_number, &_street_number); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_53street_number, &_street_number); +#else + a = new STEPattribute(*a_53street_number, &_street_number); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_54street, &_street); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_54street, &_street); +#else + a = new STEPattribute(*a_54street, &_street); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_55postal_box, &_postal_box); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_55postal_box, &_postal_box); +#else + a = new STEPattribute(*a_55postal_box, &_postal_box); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_56town, &_town); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_56town, &_town); +#else + a = new STEPattribute(*a_56town, &_town); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_57region, &_region); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_57region, &_region); +#else + a = new STEPattribute(*a_57region, &_region); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_58postal_code, &_postal_code); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_58postal_code, &_postal_code); +#else + a = new STEPattribute(*a_58postal_code, &_postal_code); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_59country, &_country); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_59country, &_country); +#else + a = new STEPattribute(*a_59country, &_country); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_60facsimile_number, &_facsimile_number); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_60facsimile_number, &_facsimile_number); +#else + a = new STEPattribute(*a_60facsimile_number, &_facsimile_number); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_61telephone_number, &_telephone_number); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_61telephone_number, &_telephone_number); +#else + a = new STEPattribute(*a_61telephone_number, &_telephone_number); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_62electronic_mail_address, &_electronic_mail_address); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_62electronic_mail_address, &_electronic_mail_address); +#else + a = new STEPattribute(*a_62electronic_mail_address, &_electronic_mail_address); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_63telex_number, &_telex_number); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_63telex_number, &_telex_number); +#else + a = new STEPattribute(*a_63telex_number, &_telex_number); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiAddress::Internal_location() const - { return (const SdaiLabel) _internal_location; } +SdaiAddress::internal_location_() const +{ + return (SdaiLabel) _internal_location; +} void -SdaiAddress::Internal_location (const char * x) - { _internal_location = x; } +SdaiAddress::internal_location_ (const SdaiLabel x) + +{ + _internal_location = x; +} const SdaiLabel -SdaiAddress::Street_number() const - { return (const SdaiLabel) _street_number; } +SdaiAddress::street_number_() const +{ + return (SdaiLabel) _street_number; +} void -SdaiAddress::Street_number (const char * x) - { _street_number = x; } +SdaiAddress::street_number_ (const SdaiLabel x) + +{ + _street_number = x; +} const SdaiLabel -SdaiAddress::Street() const - { return (const SdaiLabel) _street; } +SdaiAddress::street_() const +{ + return (SdaiLabel) _street; +} void -SdaiAddress::Street (const char * x) - { _street = x; } +SdaiAddress::street_ (const SdaiLabel x) + +{ + _street = x; +} const SdaiLabel -SdaiAddress::Postal_box() const - { return (const SdaiLabel) _postal_box; } +SdaiAddress::postal_box_() const +{ + return (SdaiLabel) _postal_box; +} void -SdaiAddress::Postal_box (const char * x) - { _postal_box = x; } +SdaiAddress::postal_box_ (const SdaiLabel x) + +{ + _postal_box = x; +} const SdaiLabel -SdaiAddress::Town() const - { return (const SdaiLabel) _town; } +SdaiAddress::town_() const +{ + return (SdaiLabel) _town; +} void -SdaiAddress::Town (const char * x) - { _town = x; } +SdaiAddress::town_ (const SdaiLabel x) + +{ + _town = x; +} const SdaiLabel -SdaiAddress::Region() const - { return (const SdaiLabel) _region; } +SdaiAddress::region_() const +{ + return (SdaiLabel) _region; +} void -SdaiAddress::Region (const char * x) - { _region = x; } +SdaiAddress::region_ (const SdaiLabel x) + +{ + _region = x; +} const SdaiLabel -SdaiAddress::Postal_code() const - { return (const SdaiLabel) _postal_code; } +SdaiAddress::postal_code_() const +{ + return (SdaiLabel) _postal_code; +} void -SdaiAddress::Postal_code (const char * x) - { _postal_code = x; } +SdaiAddress::postal_code_ (const SdaiLabel x) + +{ + _postal_code = x; +} const SdaiLabel -SdaiAddress::Country() const - { return (const SdaiLabel) _country; } +SdaiAddress::country_() const +{ + return (SdaiLabel) _country; +} void -SdaiAddress::Country (const char * x) - { _country = x; } +SdaiAddress::country_ (const SdaiLabel x) + +{ + _country = x; +} const SdaiLabel -SdaiAddress::Facsimile_number() const - { return (const SdaiLabel) _facsimile_number; } +SdaiAddress::facsimile_number_() const +{ + return (SdaiLabel) _facsimile_number; +} void -SdaiAddress::Facsimile_number (const char * x) - { _facsimile_number = x; } +SdaiAddress::facsimile_number_ (const SdaiLabel x) + +{ + _facsimile_number = x; +} const SdaiLabel -SdaiAddress::Telephone_number() const - { return (const SdaiLabel) _telephone_number; } +SdaiAddress::telephone_number_() const +{ + return (SdaiLabel) _telephone_number; +} void -SdaiAddress::Telephone_number (const char * x) - { _telephone_number = x; } +SdaiAddress::telephone_number_ (const SdaiLabel x) + +{ + _telephone_number = x; +} const SdaiLabel -SdaiAddress::Electronic_mail_address() const - { return (const SdaiLabel) _electronic_mail_address; } +SdaiAddress::electronic_mail_address_() const +{ + return (SdaiLabel) _electronic_mail_address; +} void -SdaiAddress::Electronic_mail_address (const char * x) - { _electronic_mail_address = x; } +SdaiAddress::electronic_mail_address_ (const SdaiLabel x) + +{ + _electronic_mail_address = x; +} const SdaiLabel -SdaiAddress::Telex_number() const - { return (const SdaiLabel) _telex_number; } +SdaiAddress::telex_number_() const +{ + return (SdaiLabel) _telex_number; +} void -SdaiAddress::Telex_number (const char * x) - { _telex_number = x; } +SdaiAddress::telex_number_ (const SdaiLabel x) -///////// END_ENTITY address +{ + _telex_number = x; +} + +///////// END_ENTITY address -///////// ENTITY organizational_address +///////// ENTITY organizational_address EntityDescriptor *config_control_designe_organizational_address =0; AttrDescriptor *a_64organizations =0; @@ -15956,18 +25947,86 @@ SdaiOrganizational_address::SdaiOrganizational_address( ) eDesc = config_control_designe_organizational_address; - STEPattribute * a = new STEPattribute (*a_64organizations, &_organizations); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_64organizations, &_organizations); +#else + STEPattribute *a = new STEPattribute(*a_64organizations, &_organizations); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_65description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_65description, &_description); +#else + a = new STEPattribute(*a_65description, &_description); +#endif a -> set_null (); attributes.push (a); } SdaiOrganizational_address::SdaiOrganizational_address (SdaiOrganizational_address& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiOrganizational_address::~SdaiOrganizational_address () { } -SdaiOrganizational_address::SdaiOrganizational_address (STEPentity *se ) : SdaiAddress(se) + +#ifdef __OSTORE__ + +void +SdaiOrganizational_address::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOrganizational_address: virtual access function." << G4endl; + SdaiOrganizational_address_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiOrganizational_address_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOrganizational_address: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiOrganizational_address *ent = (SdaiOrganizational_address *)sent; +// SdaiOrganizational_address *ent = (SdaiOrganizational_address *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_organizational_address; + ent->attributes[12].aDesc = a_64organizations; + ent->attributes[13].aDesc = a_65description; +} + +SCLP23(Application_instance_ptr) +create_SdaiOrganizational_address(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiOrganizational_address::get_os_typespec()) + SdaiOrganizational_address; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiOrganizational_address::get_os_typespec()) +// SdaiOrganizational_address; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiOrganizational_address; +} +#endif + +#ifdef __O3DB__ +void +SdaiOrganizational_address::oodb_reInit () +{ eDesc = config_control_designe_organizational_address; + attributes [12].aDesc = a_64organizations; + attributes [13].aDesc = a_65description; +} +#endif + +SdaiOrganizational_address::SdaiOrganizational_address (SCLP23(Application_instance) *se, int *addAttrs) : SdaiAddress(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -15978,47 +26037,69 @@ SdaiOrganizational_address::SdaiOrganizational_address (STEPentity *se ) : SdaiA eDesc = config_control_designe_organizational_address; - STEPattribute * a = new STEPattribute (*a_64organizations, &_organizations); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_64organizations, &_organizations); +#else + STEPattribute *a = new STEPattribute(*a_64organizations, &_organizations); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_65description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_65description, &_description); +#else + a = new STEPattribute(*a_65description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -const EntityAggregateH -SdaiOrganizational_address::Organizations() const - { return (EntityAggregateH) &_organizations; } +const EntityAggregate_ptr +SdaiOrganizational_address::organizations_() const +{ + return (EntityAggregate_ptr) &_organizations; +} void -SdaiOrganizational_address::Organizations (EntityAggregateH x) +SdaiOrganizational_address::organizations_ (const EntityAggregate_ptr x) + { _organizations.ShallowCopy (*x); } const SdaiText -SdaiOrganizational_address::Description() const - { return (const SdaiText) _description; } +SdaiOrganizational_address::description_() const +{ + return (SdaiText) _description; +} void -SdaiOrganizational_address::Description (const char * x) - { _description = x; } +SdaiOrganizational_address::description_ (const SdaiText x) + +{ + _description = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY organizational_address +///////// END_ENTITY organizational_address -///////// ENTITY bounded_surface +///////// ENTITY bounded_surface EntityDescriptor *config_control_designe_bounded_surface =0; SdaiBounded_surface::SdaiBounded_surface( ) @@ -16029,11 +26110,64 @@ SdaiBounded_surface::SdaiBounded_surface( ) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_bounded_surface; + MakeDerived ("dim"); } SdaiBounded_surface::SdaiBounded_surface (SdaiBounded_surface& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiBounded_surface::~SdaiBounded_surface () { } -SdaiBounded_surface::SdaiBounded_surface (STEPentity *se ) : SdaiSurface(se) + +#ifdef __OSTORE__ + +void +SdaiBounded_surface::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiBounded_surface: virtual access function." << G4endl; + SdaiBounded_surface_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiBounded_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiBounded_surface: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiBounded_surface *ent = (SdaiBounded_surface *)sent; +// SdaiBounded_surface *ent = (SdaiBounded_surface *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_bounded_surface; +} + +SCLP23(Application_instance_ptr) +create_SdaiBounded_surface(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiBounded_surface::get_os_typespec()) + SdaiBounded_surface; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiBounded_surface::get_os_typespec()) +// SdaiBounded_surface; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiBounded_surface; +} +#endif + +#ifdef __O3DB__ +void +SdaiBounded_surface::oodb_reInit () +{ eDesc = config_control_designe_bounded_surface; +} +#endif + +SdaiBounded_surface::SdaiBounded_surface (SCLP23(Application_instance) *se, int *addAttrs) : SdaiSurface(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -16043,14 +26177,15 @@ SdaiBounded_surface::SdaiBounded_surface (STEPentity *se ) : SdaiSurface(se) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_bounded_surface; + MakeDerived ("dim"); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY bounded_surface +///////// END_ENTITY bounded_surface -///////// ENTITY b_spline_surface +///////// ENTITY b_spline_surface EntityDescriptor *config_control_designe_b_spline_surface =0; AttrDescriptor *a_66u_degree =0; @@ -16060,9 +26195,9 @@ AttrDescriptor *a_69surface_form =0; AttrDescriptor *a_70u_closed =0; AttrDescriptor *a_71v_closed =0; AttrDescriptor *a_72self_intersect =0; -AttrDescriptor *a_73Du_upper =0; -AttrDescriptor *a_74Dv_upper =0; -AttrDescriptor *a_75Dcontrol_points =0; +Derived_attribute *a_73Du_upper =0; +Derived_attribute *a_74Dv_upper =0; +Derived_attribute *a_75Dcontrol_points =0; SdaiB_spline_surface::SdaiB_spline_surface( ) { @@ -16072,38 +26207,150 @@ SdaiB_spline_surface::SdaiB_spline_surface( ) eDesc = config_control_designe_b_spline_surface; - STEPattribute * a = new STEPattribute (*a_66u_degree, &_u_degree); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_66u_degree, &_u_degree); +#else + STEPattribute *a = new STEPattribute(*a_66u_degree, &_u_degree); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_67v_degree, &_v_degree); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_67v_degree, &_v_degree); +#else + a = new STEPattribute(*a_67v_degree, &_v_degree); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_68control_points_list, &_control_points_list); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_68control_points_list, &_control_points_list); +#else + a = new STEPattribute(*a_68control_points_list, &_control_points_list); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_69surface_form, &_surface_form); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_69surface_form, &_surface_form); +#else + a = new STEPattribute(*a_69surface_form, &_surface_form); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_70u_closed, &_u_closed); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_70u_closed, &_u_closed); +#else + a = new STEPattribute(*a_70u_closed, &_u_closed); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_71v_closed, &_v_closed); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_71v_closed, &_v_closed); +#else + a = new STEPattribute(*a_71v_closed, &_v_closed); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_72self_intersect, &_self_intersect); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_72self_intersect, &_self_intersect); +#else + a = new STEPattribute(*a_72self_intersect, &_self_intersect); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); + MakeDerived ("u_upper"); + MakeDerived ("v_upper"); + MakeDerived ("control_points"); } SdaiB_spline_surface::SdaiB_spline_surface (SdaiB_spline_surface& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiB_spline_surface::~SdaiB_spline_surface () { } -SdaiB_spline_surface::SdaiB_spline_surface (STEPentity *se ) : SdaiBounded_surface(se) + +#ifdef __OSTORE__ + +void +SdaiB_spline_surface::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiB_spline_surface: virtual access function." << G4endl; + SdaiB_spline_surface_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiB_spline_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiB_spline_surface: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiB_spline_surface *ent = (SdaiB_spline_surface *)sent; +// SdaiB_spline_surface *ent = (SdaiB_spline_surface *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_b_spline_surface; + ent->attributes[1].aDesc = a_66u_degree; + ent->attributes[2].aDesc = a_67v_degree; + ent->attributes[3].aDesc = a_68control_points_list; + ent->attributes[4].aDesc = a_69surface_form; + ent->attributes[5].aDesc = a_70u_closed; + ent->attributes[6].aDesc = a_71v_closed; + ent->attributes[7].aDesc = a_72self_intersect; +} + +SCLP23(Application_instance_ptr) +create_SdaiB_spline_surface(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiB_spline_surface::get_os_typespec()) + SdaiB_spline_surface; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiB_spline_surface::get_os_typespec()) +// SdaiB_spline_surface; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiB_spline_surface; +} +#endif + +#ifdef __O3DB__ +void +SdaiB_spline_surface::oodb_reInit () +{ eDesc = config_control_designe_b_spline_surface; + attributes [1].aDesc = a_66u_degree; + attributes [2].aDesc = a_67v_degree; + attributes [3].aDesc = a_68control_points_list; + attributes [4].aDesc = a_69surface_form; + attributes [5].aDesc = a_70u_closed; + attributes [6].aDesc = a_71v_closed; + attributes [7].aDesc = a_72self_intersect; +} +#endif + +SdaiB_spline_surface::SdaiB_spline_surface (SCLP23(Application_instance) *se, int *addAttrs) : SdaiBounded_surface(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -16114,132 +26361,218 @@ SdaiB_spline_surface::SdaiB_spline_surface (STEPentity *se ) : SdaiBounded_surfa eDesc = config_control_designe_b_spline_surface; - STEPattribute * a = new STEPattribute (*a_66u_degree, &_u_degree); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_66u_degree, &_u_degree); +#else + STEPattribute *a = new STEPattribute(*a_66u_degree, &_u_degree); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_67v_degree, &_v_degree); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_67v_degree, &_v_degree); +#else + a = new STEPattribute(*a_67v_degree, &_v_degree); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_68control_points_list, &_control_points_list); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_68control_points_list, &_control_points_list); +#else + a = new STEPattribute(*a_68control_points_list, &_control_points_list); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_69surface_form, &_surface_form); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_69surface_form, &_surface_form); +#else + a = new STEPattribute(*a_69surface_form, &_surface_form); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_70u_closed, &_u_closed); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_70u_closed, &_u_closed); +#else + a = new STEPattribute(*a_70u_closed, &_u_closed); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_71v_closed, &_v_closed); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_71v_closed, &_v_closed); +#else + a = new STEPattribute(*a_71v_closed, &_v_closed); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_72self_intersect, &_self_intersect); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_72self_intersect, &_self_intersect); +#else + a = new STEPattribute(*a_72self_intersect, &_self_intersect); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); + MakeDerived ("u_upper"); + MakeDerived ("v_upper"); + MakeDerived ("control_points"); } -const SdaiInteger -SdaiB_spline_surface::U_degree() const - { return (const SdaiInteger) _u_degree; } +const SCLP23(Integer) +SdaiB_spline_surface::u_degree_() const +{ + return (SCLP23(Integer)) _u_degree; +} void -SdaiB_spline_surface::U_degree (SdaiInteger x) - { _u_degree = x; } +SdaiB_spline_surface::u_degree_ (const SCLP23(Integer) x) -const SdaiInteger -SdaiB_spline_surface::V_degree() const - { return (const SdaiInteger) _v_degree; } +{ + _u_degree = x; +} + +const SCLP23(Integer) +SdaiB_spline_surface::v_degree_() const +{ + return (SCLP23(Integer)) _v_degree; +} void -SdaiB_spline_surface::V_degree (SdaiInteger x) - { _v_degree = x; } +SdaiB_spline_surface::v_degree_ (const SCLP23(Integer) x) -const GenericAggregateH -SdaiB_spline_surface::Control_points_list() const - { return (GenericAggregateH) &_control_points_list; } +{ + _v_degree = x; +} + +const GenericAggregate_ptr +SdaiB_spline_surface::control_points_list_() const +{ + return (GenericAggregate_ptr) &_control_points_list; +} void -SdaiB_spline_surface::Control_points_list (GenericAggregateH x) +SdaiB_spline_surface::control_points_list_ (const GenericAggregate_ptr x) + { _control_points_list.ShallowCopy (*x); } -const sdaiB_spline_surface_form -SdaiB_spline_surface::Surface_form() const - { return (sdaiB_spline_surface_form) _surface_form; } +const SdaiB_spline_surface_form_var +SdaiB_spline_surface::surface_form_() const +{ + return (B_spline_surface_form) _surface_form; +} void -SdaiB_spline_surface::Surface_form (sdaiB_spline_surface_form x) - { _surface_form.put (x); } +SdaiB_spline_surface::surface_form_ (const SdaiB_spline_surface_form_var x) -const LOGICAL -SdaiB_spline_surface::U_closed() const - { return (LOGICAL) _u_closed; } +{ + _surface_form.put (x); +} + +const SCLLOG(Logical) +SdaiB_spline_surface::u_closed_() const +{ + return (SCLLOG(Logical)) _u_closed; +} void -SdaiB_spline_surface::U_closed (LOGICAL x) - { _u_closed.put (x); } +SdaiB_spline_surface::u_closed_ (const SCLLOG(Logical) x) -const LOGICAL -SdaiB_spline_surface::V_closed() const - { return (LOGICAL) _v_closed; } +{ + _u_closed.put (x); +} + +const SCLLOG(Logical) +SdaiB_spline_surface::v_closed_() const +{ + return (SCLLOG(Logical)) _v_closed; +} void -SdaiB_spline_surface::V_closed (LOGICAL x) - { _v_closed.put (x); } +SdaiB_spline_surface::v_closed_ (const SCLLOG(Logical) x) -const LOGICAL -SdaiB_spline_surface::Self_intersect() const - { return (LOGICAL) _self_intersect; } +{ + _v_closed.put (x); +} + +const SCLLOG(Logical) +SdaiB_spline_surface::self_intersect_() const +{ + return (SCLLOG(Logical)) _self_intersect; +} void -SdaiB_spline_surface::Self_intersect (LOGICAL x) - { _self_intersect.put (x); } +SdaiB_spline_surface::self_intersect_ (const SCLLOG(Logical) x) + +{ + _self_intersect.put (x); +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY b_spline_surface +///////// END_ENTITY b_spline_surface -///////// ENTITY uniform_surface +///////// ENTITY uniform_surface EntityDescriptor *config_control_designe_uniform_surface =0; SdaiUniform_surface::SdaiUniform_surface( ) @@ -16250,11 +26583,67 @@ SdaiUniform_surface::SdaiUniform_surface( ) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_uniform_surface; + MakeDerived ("dim"); + MakeDerived ("u_upper"); + MakeDerived ("v_upper"); + MakeDerived ("control_points"); } SdaiUniform_surface::SdaiUniform_surface (SdaiUniform_surface& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiUniform_surface::~SdaiUniform_surface () { } -SdaiUniform_surface::SdaiUniform_surface (STEPentity *se ) : SdaiB_spline_surface(se) + +#ifdef __OSTORE__ + +void +SdaiUniform_surface::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiUniform_surface: virtual access function." << G4endl; + SdaiUniform_surface_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiUniform_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiUniform_surface: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiUniform_surface *ent = (SdaiUniform_surface *)sent; +// SdaiUniform_surface *ent = (SdaiUniform_surface *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_uniform_surface; +} + +SCLP23(Application_instance_ptr) +create_SdaiUniform_surface(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiUniform_surface::get_os_typespec()) + SdaiUniform_surface; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiUniform_surface::get_os_typespec()) +// SdaiUniform_surface; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiUniform_surface; +} +#endif + +#ifdef __O3DB__ +void +SdaiUniform_surface::oodb_reInit () +{ eDesc = config_control_designe_uniform_surface; +} +#endif + +SdaiUniform_surface::SdaiUniform_surface (SCLP23(Application_instance) *se, int *addAttrs) : SdaiB_spline_surface(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -16264,14 +26653,18 @@ SdaiUniform_surface::SdaiUniform_surface (STEPentity *se ) : SdaiB_spline_surfac /* part of the main inheritance hierarchy */ eDesc = config_control_designe_uniform_surface; + MakeDerived ("dim"); + MakeDerived ("u_upper"); + MakeDerived ("v_upper"); + MakeDerived ("control_points"); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY uniform_surface +///////// END_ENTITY uniform_surface -///////// ENTITY geometrically_bounded_surface_shape_representation +///////// ENTITY geometrically_bounded_surface_shape_representation EntityDescriptor *config_control_designe_geometrically_bounded_surface_shape_representation =0; SdaiGeometrically_bounded_surface_shape_representation::SdaiGeometrically_bounded_surface_shape_representation( ) @@ -16284,9 +26677,61 @@ SdaiGeometrically_bounded_surface_shape_representation::SdaiGeometrically_bounde eDesc = config_control_designe_geometrically_bounded_surface_shape_representation; } SdaiGeometrically_bounded_surface_shape_representation::SdaiGeometrically_bounded_surface_shape_representation (SdaiGeometrically_bounded_surface_shape_representation& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiGeometrically_bounded_surface_shape_representation::~SdaiGeometrically_bounded_surface_shape_representation () { } -SdaiGeometrically_bounded_surface_shape_representation::SdaiGeometrically_bounded_surface_shape_representation (STEPentity *se ) : SdaiShape_representation(se) + +#ifdef __OSTORE__ + +void +SdaiGeometrically_bounded_surface_shape_representation::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiGeometrically_bounded_surface_shape_representation: virtual access function." << G4endl; + SdaiGeometrically_bounded_surface_shape_representation_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiGeometrically_bounded_surface_shape_representation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiGeometrically_bounded_surface_shape_representation: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiGeometrically_bounded_surface_shape_representation *ent = (SdaiGeometrically_bounded_surface_shape_representation *)sent; +// SdaiGeometrically_bounded_surface_shape_representation *ent = (SdaiGeometrically_bounded_surface_shape_representation *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_geometrically_bounded_surface_shape_representation; +} + +SCLP23(Application_instance_ptr) +create_SdaiGeometrically_bounded_surface_shape_representation(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiGeometrically_bounded_surface_shape_representation::get_os_typespec()) + SdaiGeometrically_bounded_surface_shape_representation; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiGeometrically_bounded_surface_shape_representation::get_os_typespec()) +// SdaiGeometrically_bounded_surface_shape_representation; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiGeometrically_bounded_surface_shape_representation; +} +#endif + +#ifdef __O3DB__ +void +SdaiGeometrically_bounded_surface_shape_representation::oodb_reInit () +{ eDesc = config_control_designe_geometrically_bounded_surface_shape_representation; +} +#endif + +SdaiGeometrically_bounded_surface_shape_representation::SdaiGeometrically_bounded_surface_shape_representation (SCLP23(Application_instance) *se, int *addAttrs) : SdaiShape_representation(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -16300,14 +26745,14 @@ SdaiGeometrically_bounded_surface_shape_representation::SdaiGeometrically_bounde /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY geometrically_bounded_surface_shape_representation +///////// END_ENTITY geometrically_bounded_surface_shape_representation -///////// ENTITY axis1_placement +///////// ENTITY axis1_placement EntityDescriptor *config_control_designe_axis1_placement =0; AttrDescriptor *a_76axis =0; -AttrDescriptor *a_77Dz =0; +Derived_attribute *a_77Dz =0; SdaiAxis1_placement::SdaiAxis1_placement( ) { @@ -16317,14 +26762,78 @@ SdaiAxis1_placement::SdaiAxis1_placement( ) eDesc = config_control_designe_axis1_placement; - STEPattribute * a = new STEPattribute (*a_76axis, (STEPentityH *) &_axis); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_76axis, (SCLP23(Application_instance_ptr) *) &_axis); +#else + STEPattribute *a = new STEPattribute(*a_76axis, (SCLP23(Application_instance_ptr) *) &_axis); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); + MakeDerived ("z"); } SdaiAxis1_placement::SdaiAxis1_placement (SdaiAxis1_placement& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiAxis1_placement::~SdaiAxis1_placement () { } -SdaiAxis1_placement::SdaiAxis1_placement (STEPentity *se ) : SdaiPlacement(se) + +#ifdef __OSTORE__ + +void +SdaiAxis1_placement::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAxis1_placement: virtual access function." << G4endl; + SdaiAxis1_placement_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiAxis1_placement_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAxis1_placement: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiAxis1_placement *ent = (SdaiAxis1_placement *)sent; +// SdaiAxis1_placement *ent = (SdaiAxis1_placement *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_axis1_placement; + ent->attributes[2].aDesc = a_76axis; + if(ent->_axis == 0) + ent->_axis = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiAxis1_placement(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiAxis1_placement::get_os_typespec()) + SdaiAxis1_placement; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiAxis1_placement::get_os_typespec()) +// SdaiAxis1_placement; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiAxis1_placement; +} +#endif + +#ifdef __O3DB__ +void +SdaiAxis1_placement::oodb_reInit () +{ eDesc = config_control_designe_axis1_placement; + attributes [2].aDesc = a_76axis; +} +#endif + +SdaiAxis1_placement::SdaiAxis1_placement (SCLP23(Application_instance) *se, int *addAttrs) : SdaiPlacement(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -16335,30 +26844,44 @@ SdaiAxis1_placement::SdaiAxis1_placement (STEPentity *se ) : SdaiPlacement(se) eDesc = config_control_designe_axis1_placement; - STEPattribute * a = new STEPattribute (*a_76axis, (STEPentityH *) &_axis); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_76axis, (SCLP23(Application_instance_ptr) *) &_axis); +#else + STEPattribute *a = new STEPattribute(*a_76axis, (SCLP23(Application_instance_ptr) *) &_axis); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); + MakeDerived ("z"); } -SdaiDirectionH -SdaiAxis1_placement::Axis() const - { return (SdaiDirectionH) _axis; } +const SdaiDirection_ptr +SdaiAxis1_placement::axis_() const +{ + return (SdaiDirection_ptr) _axis; +} void -SdaiAxis1_placement::Axis (SdaiDirectionH x) - { _axis = x; } +SdaiAxis1_placement::axis_ (const SdaiDirection_ptr x) + +{ + _axis = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY axis1_placement +///////// END_ENTITY axis1_placement -///////// ENTITY bounded_curve +///////// ENTITY bounded_curve EntityDescriptor *config_control_designe_bounded_curve =0; SdaiBounded_curve::SdaiBounded_curve( ) @@ -16369,11 +26892,64 @@ SdaiBounded_curve::SdaiBounded_curve( ) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_bounded_curve; + MakeDerived ("dim"); } SdaiBounded_curve::SdaiBounded_curve (SdaiBounded_curve& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiBounded_curve::~SdaiBounded_curve () { } -SdaiBounded_curve::SdaiBounded_curve (STEPentity *se ) : SdaiCurve(se) + +#ifdef __OSTORE__ + +void +SdaiBounded_curve::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiBounded_curve: virtual access function." << G4endl; + SdaiBounded_curve_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiBounded_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiBounded_curve: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiBounded_curve *ent = (SdaiBounded_curve *)sent; +// SdaiBounded_curve *ent = (SdaiBounded_curve *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_bounded_curve; +} + +SCLP23(Application_instance_ptr) +create_SdaiBounded_curve(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiBounded_curve::get_os_typespec()) + SdaiBounded_curve; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiBounded_curve::get_os_typespec()) +// SdaiBounded_curve; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiBounded_curve; +} +#endif + +#ifdef __O3DB__ +void +SdaiBounded_curve::oodb_reInit () +{ eDesc = config_control_designe_bounded_curve; +} +#endif + +SdaiBounded_curve::SdaiBounded_curve (SCLP23(Application_instance) *se, int *addAttrs) : SdaiCurve(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -16383,14 +26959,15 @@ SdaiBounded_curve::SdaiBounded_curve (STEPentity *se ) : SdaiCurve(se) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_bounded_curve; + MakeDerived ("dim"); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY bounded_curve +///////// END_ENTITY bounded_curve -///////// ENTITY b_spline_curve +///////// ENTITY b_spline_curve EntityDescriptor *config_control_designe_b_spline_curve =0; AttrDescriptor *a_78degree =0; @@ -16398,8 +26975,8 @@ AttrDescriptor *a_79control_points_list =0; AttrDescriptor *a_80curve_form =0; AttrDescriptor *a_81closed_curve =0; AttrDescriptor *a_82self_intersect =0; -AttrDescriptor *a_83Dupper_index_on_control_points =0; -AttrDescriptor *a_84Dcontrol_points =0; +Derived_attribute *a_83Dupper_index_on_control_points =0; +Derived_attribute *a_84Dcontrol_points =0; SdaiB_spline_curve::SdaiB_spline_curve( ) { @@ -16409,30 +26986,125 @@ SdaiB_spline_curve::SdaiB_spline_curve( ) eDesc = config_control_designe_b_spline_curve; - STEPattribute * a = new STEPattribute (*a_78degree, &_degree); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_78degree, &_degree); +#else + STEPattribute *a = new STEPattribute(*a_78degree, &_degree); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_79control_points_list, &_control_points_list); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_79control_points_list, &_control_points_list); +#else + a = new STEPattribute(*a_79control_points_list, &_control_points_list); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_80curve_form, &_curve_form); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_80curve_form, &_curve_form); +#else + a = new STEPattribute(*a_80curve_form, &_curve_form); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_81closed_curve, &_closed_curve); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_81closed_curve, &_closed_curve); +#else + a = new STEPattribute(*a_81closed_curve, &_closed_curve); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_82self_intersect, &_self_intersect); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_82self_intersect, &_self_intersect); +#else + a = new STEPattribute(*a_82self_intersect, &_self_intersect); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); + MakeDerived ("upper_index_on_control_points"); + MakeDerived ("control_points"); } SdaiB_spline_curve::SdaiB_spline_curve (SdaiB_spline_curve& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiB_spline_curve::~SdaiB_spline_curve () { } -SdaiB_spline_curve::SdaiB_spline_curve (STEPentity *se ) : SdaiBounded_curve(se) + +#ifdef __OSTORE__ + +void +SdaiB_spline_curve::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiB_spline_curve: virtual access function." << G4endl; + SdaiB_spline_curve_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiB_spline_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiB_spline_curve: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiB_spline_curve *ent = (SdaiB_spline_curve *)sent; +// SdaiB_spline_curve *ent = (SdaiB_spline_curve *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_b_spline_curve; + ent->attributes[1].aDesc = a_78degree; + ent->attributes[2].aDesc = a_79control_points_list; + ent->attributes[3].aDesc = a_80curve_form; + ent->attributes[4].aDesc = a_81closed_curve; + ent->attributes[5].aDesc = a_82self_intersect; +} + +SCLP23(Application_instance_ptr) +create_SdaiB_spline_curve(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiB_spline_curve::get_os_typespec()) + SdaiB_spline_curve; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiB_spline_curve::get_os_typespec()) +// SdaiB_spline_curve; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiB_spline_curve; +} +#endif + +#ifdef __O3DB__ +void +SdaiB_spline_curve::oodb_reInit () +{ eDesc = config_control_designe_b_spline_curve; + attributes [1].aDesc = a_78degree; + attributes [2].aDesc = a_79control_points_list; + attributes [3].aDesc = a_80curve_form; + attributes [4].aDesc = a_81closed_curve; + attributes [5].aDesc = a_82self_intersect; +} +#endif + +SdaiB_spline_curve::SdaiB_spline_curve (SCLP23(Application_instance) *se, int *addAttrs) : SdaiBounded_curve(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -16443,102 +27115,163 @@ SdaiB_spline_curve::SdaiB_spline_curve (STEPentity *se ) : SdaiBounded_curve(se) eDesc = config_control_designe_b_spline_curve; - STEPattribute * a = new STEPattribute (*a_78degree, &_degree); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_78degree, &_degree); +#else + STEPattribute *a = new STEPattribute(*a_78degree, &_degree); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_79control_points_list, &_control_points_list); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_79control_points_list, &_control_points_list); +#else + a = new STEPattribute(*a_79control_points_list, &_control_points_list); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_80curve_form, &_curve_form); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_80curve_form, &_curve_form); +#else + a = new STEPattribute(*a_80curve_form, &_curve_form); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_81closed_curve, &_closed_curve); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_81closed_curve, &_closed_curve); +#else + a = new STEPattribute(*a_81closed_curve, &_closed_curve); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_82self_intersect, &_self_intersect); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_82self_intersect, &_self_intersect); +#else + a = new STEPattribute(*a_82self_intersect, &_self_intersect); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); + MakeDerived ("upper_index_on_control_points"); + MakeDerived ("control_points"); } -const SdaiInteger -SdaiB_spline_curve::Degree() const - { return (const SdaiInteger) _degree; } +const SCLP23(Integer) +SdaiB_spline_curve::degree_() const +{ + return (SCLP23(Integer)) _degree; +} void -SdaiB_spline_curve::Degree (SdaiInteger x) - { _degree = x; } +SdaiB_spline_curve::degree_ (const SCLP23(Integer) x) -const EntityAggregateH -SdaiB_spline_curve::Control_points_list() const - { return (EntityAggregateH) &_control_points_list; } +{ + _degree = x; +} + +const EntityAggregate_ptr +SdaiB_spline_curve::control_points_list_() const +{ + return (EntityAggregate_ptr) &_control_points_list; +} void -SdaiB_spline_curve::Control_points_list (EntityAggregateH x) +SdaiB_spline_curve::control_points_list_ (const EntityAggregate_ptr x) + { _control_points_list.ShallowCopy (*x); } -const sdaiB_spline_curve_form -SdaiB_spline_curve::Curve_form() const - { return (sdaiB_spline_curve_form) _curve_form; } +const SdaiB_spline_curve_form_var +SdaiB_spline_curve::curve_form_() const +{ + return (B_spline_curve_form) _curve_form; +} void -SdaiB_spline_curve::Curve_form (sdaiB_spline_curve_form x) - { _curve_form.put (x); } +SdaiB_spline_curve::curve_form_ (const SdaiB_spline_curve_form_var x) -const LOGICAL -SdaiB_spline_curve::Closed_curve() const - { return (LOGICAL) _closed_curve; } +{ + _curve_form.put (x); +} + +const SCLLOG(Logical) +SdaiB_spline_curve::closed_curve_() const +{ + return (SCLLOG(Logical)) _closed_curve; +} void -SdaiB_spline_curve::Closed_curve (LOGICAL x) - { _closed_curve.put (x); } +SdaiB_spline_curve::closed_curve_ (const SCLLOG(Logical) x) -const LOGICAL -SdaiB_spline_curve::Self_intersect() const - { return (LOGICAL) _self_intersect; } +{ + _closed_curve.put (x); +} + +const SCLLOG(Logical) +SdaiB_spline_curve::self_intersect_() const +{ + return (SCLLOG(Logical)) _self_intersect; +} void -SdaiB_spline_curve::Self_intersect (LOGICAL x) - { _self_intersect.put (x); } +SdaiB_spline_curve::self_intersect_ (const SCLLOG(Logical) x) + +{ + _self_intersect.put (x); +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY b_spline_curve +///////// END_ENTITY b_spline_curve -///////// ENTITY rational_b_spline_curve +///////// ENTITY rational_b_spline_curve EntityDescriptor *config_control_designe_rational_b_spline_curve =0; AttrDescriptor *a_85weights_data =0; -AttrDescriptor *a_86Dweights =0; +Derived_attribute *a_86Dweights =0; SdaiRational_b_spline_curve::SdaiRational_b_spline_curve( ) { @@ -16548,14 +27281,78 @@ SdaiRational_b_spline_curve::SdaiRational_b_spline_curve( ) eDesc = config_control_designe_rational_b_spline_curve; - STEPattribute * a = new STEPattribute (*a_85weights_data, &_weights_data); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_85weights_data, &_weights_data); +#else + STEPattribute *a = new STEPattribute(*a_85weights_data, &_weights_data); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); + MakeDerived ("upper_index_on_control_points"); + MakeDerived ("control_points"); + MakeDerived ("weights"); } SdaiRational_b_spline_curve::SdaiRational_b_spline_curve (SdaiRational_b_spline_curve& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiRational_b_spline_curve::~SdaiRational_b_spline_curve () { } -SdaiRational_b_spline_curve::SdaiRational_b_spline_curve (STEPentity *se ) : SdaiB_spline_curve(se) + +#ifdef __OSTORE__ + +void +SdaiRational_b_spline_curve::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiRational_b_spline_curve: virtual access function." << G4endl; + SdaiRational_b_spline_curve_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiRational_b_spline_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiRational_b_spline_curve: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiRational_b_spline_curve *ent = (SdaiRational_b_spline_curve *)sent; +// SdaiRational_b_spline_curve *ent = (SdaiRational_b_spline_curve *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_rational_b_spline_curve; + ent->attributes[6].aDesc = a_85weights_data; +} + +SCLP23(Application_instance_ptr) +create_SdaiRational_b_spline_curve(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiRational_b_spline_curve::get_os_typespec()) + SdaiRational_b_spline_curve; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiRational_b_spline_curve::get_os_typespec()) +// SdaiRational_b_spline_curve; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiRational_b_spline_curve; +} +#endif + +#ifdef __O3DB__ +void +SdaiRational_b_spline_curve::oodb_reInit () +{ eDesc = config_control_designe_rational_b_spline_curve; + attributes [6].aDesc = a_85weights_data; +} +#endif + +SdaiRational_b_spline_curve::SdaiRational_b_spline_curve (SCLP23(Application_instance) *se, int *addAttrs) : SdaiB_spline_curve(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -16566,30 +27363,44 @@ SdaiRational_b_spline_curve::SdaiRational_b_spline_curve (STEPentity *se ) : Sda eDesc = config_control_designe_rational_b_spline_curve; - STEPattribute * a = new STEPattribute (*a_85weights_data, &_weights_data); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_85weights_data, &_weights_data); +#else + STEPattribute *a = new STEPattribute(*a_85weights_data, &_weights_data); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); + MakeDerived ("upper_index_on_control_points"); + MakeDerived ("control_points"); + MakeDerived ("weights"); } -const RealAggregateH -SdaiRational_b_spline_curve::Weights_data() const - { return (RealAggregateH) &_weights_data; } +const RealAggregate_ptr +SdaiRational_b_spline_curve::weights_data_() const +{ + return (RealAggregate_ptr) &_weights_data; +} void -SdaiRational_b_spline_curve::Weights_data (RealAggregateH x) +SdaiRational_b_spline_curve::weights_data_ (const RealAggregate_ptr x) + { _weights_data.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY rational_b_spline_curve +///////// END_ENTITY rational_b_spline_curve -///////// ENTITY action_request_assignment +///////// ENTITY action_request_assignment EntityDescriptor *config_control_designe_action_request_assignment =0; AttrDescriptor *a_87assigned_action_request =0; @@ -16600,14 +27411,76 @@ SdaiAction_request_assignment::SdaiAction_request_assignment( ) eDesc = config_control_designe_action_request_assignment; - STEPattribute * a = new STEPattribute (*a_87assigned_action_request, (STEPentityH *) &_assigned_action_request); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_87assigned_action_request, (SCLP23(Application_instance_ptr) *) &_assigned_action_request); +#else + STEPattribute *a = new STEPattribute(*a_87assigned_action_request, (SCLP23(Application_instance_ptr) *) &_assigned_action_request); +#endif a -> set_null (); attributes.push (a); } SdaiAction_request_assignment::SdaiAction_request_assignment (SdaiAction_request_assignment& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiAction_request_assignment::~SdaiAction_request_assignment () { } -SdaiAction_request_assignment::SdaiAction_request_assignment( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiAction_request_assignment::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAction_request_assignment: virtual access function." << G4endl; + SdaiAction_request_assignment_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiAction_request_assignment_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAction_request_assignment: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiAction_request_assignment *ent = (SdaiAction_request_assignment *)sent; +// SdaiAction_request_assignment *ent = (SdaiAction_request_assignment *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_action_request_assignment; + ent->attributes[0].aDesc = a_87assigned_action_request; + if(ent->_assigned_action_request == 0) + ent->_assigned_action_request = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiAction_request_assignment(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiAction_request_assignment::get_os_typespec()) + SdaiAction_request_assignment; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiAction_request_assignment::get_os_typespec()) +// SdaiAction_request_assignment; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiAction_request_assignment; +} +#endif + +#ifdef __O3DB__ +void +SdaiAction_request_assignment::oodb_reInit () +{ eDesc = config_control_designe_action_request_assignment; + attributes [0].aDesc = a_87assigned_action_request; +} +#endif + +SdaiAction_request_assignment::SdaiAction_request_assignment( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -16616,28 +27489,40 @@ SdaiAction_request_assignment::SdaiAction_request_assignment( STEPentity *se ) eDesc = config_control_designe_action_request_assignment; - STEPattribute * a = new STEPattribute (*a_87assigned_action_request, (STEPentityH *) &_assigned_action_request); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_87assigned_action_request, (SCLP23(Application_instance_ptr) *) &_assigned_action_request); +#else + STEPattribute *a = new STEPattribute(*a_87assigned_action_request, (SCLP23(Application_instance_ptr) *) &_assigned_action_request); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiVersioned_action_requestH -SdaiAction_request_assignment::Assigned_action_request() const - { return (SdaiVersioned_action_requestH) _assigned_action_request; } +const SdaiVersioned_action_request_ptr +SdaiAction_request_assignment::assigned_action_request_() const +{ + return (SdaiVersioned_action_request_ptr) _assigned_action_request; +} void -SdaiAction_request_assignment::Assigned_action_request (SdaiVersioned_action_requestH x) - { _assigned_action_request = x; } +SdaiAction_request_assignment::assigned_action_request_ (const SdaiVersioned_action_request_ptr x) -///////// END_ENTITY action_request_assignment +{ + _assigned_action_request = x; +} + +///////// END_ENTITY action_request_assignment -///////// ENTITY topological_representation_item +///////// ENTITY topological_representation_item EntityDescriptor *config_control_designe_topological_representation_item =0; SdaiTopological_representation_item::SdaiTopological_representation_item( ) @@ -16650,9 +27535,61 @@ SdaiTopological_representation_item::SdaiTopological_representation_item( ) eDesc = config_control_designe_topological_representation_item; } SdaiTopological_representation_item::SdaiTopological_representation_item (SdaiTopological_representation_item& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiTopological_representation_item::~SdaiTopological_representation_item () { } -SdaiTopological_representation_item::SdaiTopological_representation_item (STEPentity *se ) : SdaiRepresentation_item(se) + +#ifdef __OSTORE__ + +void +SdaiTopological_representation_item::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiTopological_representation_item: virtual access function." << G4endl; + SdaiTopological_representation_item_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiTopological_representation_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiTopological_representation_item: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiTopological_representation_item *ent = (SdaiTopological_representation_item *)sent; +// SdaiTopological_representation_item *ent = (SdaiTopological_representation_item *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_topological_representation_item; +} + +SCLP23(Application_instance_ptr) +create_SdaiTopological_representation_item(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiTopological_representation_item::get_os_typespec()) + SdaiTopological_representation_item; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiTopological_representation_item::get_os_typespec()) +// SdaiTopological_representation_item; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiTopological_representation_item; +} +#endif + +#ifdef __O3DB__ +void +SdaiTopological_representation_item::oodb_reInit () +{ eDesc = config_control_designe_topological_representation_item; +} +#endif + +SdaiTopological_representation_item::SdaiTopological_representation_item (SCLP23(Application_instance) *se, int *addAttrs) : SdaiRepresentation_item(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -16666,10 +27603,10 @@ SdaiTopological_representation_item::SdaiTopological_representation_item (STEPen /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY topological_representation_item +///////// END_ENTITY topological_representation_item -///////// ENTITY face_bound +///////// ENTITY face_bound EntityDescriptor *config_control_designe_face_bound =0; AttrDescriptor *a_88bound =0; @@ -16683,18 +27620,88 @@ SdaiFace_bound::SdaiFace_bound( ) eDesc = config_control_designe_face_bound; - STEPattribute * a = new STEPattribute (*a_88bound, (STEPentityH *) &_bound); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_88bound, (SCLP23(Application_instance_ptr) *) &_bound); +#else + STEPattribute *a = new STEPattribute(*a_88bound, (SCLP23(Application_instance_ptr) *) &_bound); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_89orientation, &_orientation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_89orientation, &_orientation); +#else + a = new STEPattribute(*a_89orientation, &_orientation); +#endif a -> set_null (); attributes.push (a); } SdaiFace_bound::SdaiFace_bound (SdaiFace_bound& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiFace_bound::~SdaiFace_bound () { } -SdaiFace_bound::SdaiFace_bound (STEPentity *se ) : SdaiTopological_representation_item(se) + +#ifdef __OSTORE__ + +void +SdaiFace_bound::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiFace_bound: virtual access function." << G4endl; + SdaiFace_bound_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiFace_bound_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiFace_bound: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiFace_bound *ent = (SdaiFace_bound *)sent; +// SdaiFace_bound *ent = (SdaiFace_bound *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_face_bound; + ent->attributes[1].aDesc = a_88bound; + if(ent->_bound == 0) + ent->_bound = S_ENTITY_NULL; + ent->attributes[2].aDesc = a_89orientation; +} + +SCLP23(Application_instance_ptr) +create_SdaiFace_bound(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiFace_bound::get_os_typespec()) + SdaiFace_bound; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiFace_bound::get_os_typespec()) +// SdaiFace_bound; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiFace_bound; +} +#endif + +#ifdef __O3DB__ +void +SdaiFace_bound::oodb_reInit () +{ eDesc = config_control_designe_face_bound; + attributes [1].aDesc = a_88bound; + attributes [2].aDesc = a_89orientation; +} +#endif + +SdaiFace_bound::SdaiFace_bound (SCLP23(Application_instance) *se, int *addAttrs) : SdaiTopological_representation_item(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -16705,47 +27712,71 @@ SdaiFace_bound::SdaiFace_bound (STEPentity *se ) : SdaiTopological_representatio eDesc = config_control_designe_face_bound; - STEPattribute * a = new STEPattribute (*a_88bound, (STEPentityH *) &_bound); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_88bound, (SCLP23(Application_instance_ptr) *) &_bound); +#else + STEPattribute *a = new STEPattribute(*a_88bound, (SCLP23(Application_instance_ptr) *) &_bound); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_89orientation, &_orientation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_89orientation, &_orientation); +#else + a = new STEPattribute(*a_89orientation, &_orientation); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiLoopH -SdaiFace_bound::Bound() const - { return (SdaiLoopH) _bound; } +const SdaiLoop_ptr +SdaiFace_bound::bound_() const +{ + return (SdaiLoop_ptr) _bound; +} void -SdaiFace_bound::Bound (SdaiLoopH x) - { _bound = x; } +SdaiFace_bound::bound_ (const SdaiLoop_ptr x) -const BOOLEAN -SdaiFace_bound::Orientation() const - { return (LOGICAL) _orientation; } +{ + _bound = x; +} + +const SCLBOOL(Bool) +SdaiFace_bound::orientation_() const +{ + return (SCLBOOL(Bool)) _orientation; +} void -SdaiFace_bound::Orientation (BOOLEAN x) - { _orientation.put (x); } +SdaiFace_bound::orientation_ (const SCLBOOL(Bool) x) + +{ + _orientation.put (x); +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY face_bound +///////// END_ENTITY face_bound -///////// ENTITY length_measure_with_unit +///////// ENTITY length_measure_with_unit EntityDescriptor *config_control_designe_length_measure_with_unit =0; SdaiLength_measure_with_unit::SdaiLength_measure_with_unit( ) @@ -16758,9 +27789,61 @@ SdaiLength_measure_with_unit::SdaiLength_measure_with_unit( ) eDesc = config_control_designe_length_measure_with_unit; } SdaiLength_measure_with_unit::SdaiLength_measure_with_unit (SdaiLength_measure_with_unit& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiLength_measure_with_unit::~SdaiLength_measure_with_unit () { } -SdaiLength_measure_with_unit::SdaiLength_measure_with_unit (STEPentity *se ) : SdaiMeasure_with_unit(se) + +#ifdef __OSTORE__ + +void +SdaiLength_measure_with_unit::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiLength_measure_with_unit: virtual access function." << G4endl; + SdaiLength_measure_with_unit_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiLength_measure_with_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiLength_measure_with_unit: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiLength_measure_with_unit *ent = (SdaiLength_measure_with_unit *)sent; +// SdaiLength_measure_with_unit *ent = (SdaiLength_measure_with_unit *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_length_measure_with_unit; +} + +SCLP23(Application_instance_ptr) +create_SdaiLength_measure_with_unit(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiLength_measure_with_unit::get_os_typespec()) + SdaiLength_measure_with_unit; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiLength_measure_with_unit::get_os_typespec()) +// SdaiLength_measure_with_unit; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiLength_measure_with_unit; +} +#endif + +#ifdef __O3DB__ +void +SdaiLength_measure_with_unit::oodb_reInit () +{ eDesc = config_control_designe_length_measure_with_unit; +} +#endif + +SdaiLength_measure_with_unit::SdaiLength_measure_with_unit (SCLP23(Application_instance) *se, int *addAttrs) : SdaiMeasure_with_unit(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -16774,10 +27857,10 @@ SdaiLength_measure_with_unit::SdaiLength_measure_with_unit (STEPentity *se ) : S /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY length_measure_with_unit +///////// END_ENTITY length_measure_with_unit -///////// ENTITY dated_effectivity +///////// ENTITY dated_effectivity EntityDescriptor *config_control_designe_dated_effectivity =0; AttrDescriptor *a_90effectivity_start_date =0; @@ -16791,18 +27874,90 @@ SdaiDated_effectivity::SdaiDated_effectivity( ) eDesc = config_control_designe_dated_effectivity; - STEPattribute * a = new STEPattribute (*a_90effectivity_start_date, (STEPentityH *) &_effectivity_start_date); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_90effectivity_start_date, (SCLP23(Application_instance_ptr) *) &_effectivity_start_date); +#else + STEPattribute *a = new STEPattribute(*a_90effectivity_start_date, (SCLP23(Application_instance_ptr) *) &_effectivity_start_date); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_91effectivity_end_date, (STEPentityH *) &_effectivity_end_date); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_91effectivity_end_date, (SCLP23(Application_instance_ptr) *) &_effectivity_end_date); +#else + a = new STEPattribute(*a_91effectivity_end_date, (SCLP23(Application_instance_ptr) *) &_effectivity_end_date); +#endif a -> set_null (); attributes.push (a); } SdaiDated_effectivity::SdaiDated_effectivity (SdaiDated_effectivity& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiDated_effectivity::~SdaiDated_effectivity () { } -SdaiDated_effectivity::SdaiDated_effectivity (STEPentity *se ) : SdaiEffectivity(se) + +#ifdef __OSTORE__ + +void +SdaiDated_effectivity::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDated_effectivity: virtual access function." << G4endl; + SdaiDated_effectivity_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiDated_effectivity_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDated_effectivity: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiDated_effectivity *ent = (SdaiDated_effectivity *)sent; +// SdaiDated_effectivity *ent = (SdaiDated_effectivity *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_dated_effectivity; + ent->attributes[1].aDesc = a_90effectivity_start_date; + if(ent->_effectivity_start_date == 0) + ent->_effectivity_start_date = S_ENTITY_NULL; + ent->attributes[2].aDesc = a_91effectivity_end_date; + if(ent->_effectivity_end_date == 0) + ent->_effectivity_end_date = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiDated_effectivity(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiDated_effectivity::get_os_typespec()) + SdaiDated_effectivity; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiDated_effectivity::get_os_typespec()) +// SdaiDated_effectivity; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiDated_effectivity; +} +#endif + +#ifdef __O3DB__ +void +SdaiDated_effectivity::oodb_reInit () +{ eDesc = config_control_designe_dated_effectivity; + attributes [1].aDesc = a_90effectivity_start_date; + attributes [2].aDesc = a_91effectivity_end_date; +} +#endif + +SdaiDated_effectivity::SdaiDated_effectivity (SCLP23(Application_instance) *se, int *addAttrs) : SdaiEffectivity(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -16813,47 +27968,71 @@ SdaiDated_effectivity::SdaiDated_effectivity (STEPentity *se ) : SdaiEffectivity eDesc = config_control_designe_dated_effectivity; - STEPattribute * a = new STEPattribute (*a_90effectivity_start_date, (STEPentityH *) &_effectivity_start_date); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_90effectivity_start_date, (SCLP23(Application_instance_ptr) *) &_effectivity_start_date); +#else + STEPattribute *a = new STEPattribute(*a_90effectivity_start_date, (SCLP23(Application_instance_ptr) *) &_effectivity_start_date); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_91effectivity_end_date, (STEPentityH *) &_effectivity_end_date); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_91effectivity_end_date, (SCLP23(Application_instance_ptr) *) &_effectivity_end_date); +#else + a = new STEPattribute(*a_91effectivity_end_date, (SCLP23(Application_instance_ptr) *) &_effectivity_end_date); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiDate_and_timeH -SdaiDated_effectivity::Effectivity_start_date() const - { return (SdaiDate_and_timeH) _effectivity_start_date; } +const SdaiDate_and_time_ptr +SdaiDated_effectivity::effectivity_start_date_() const +{ + return (SdaiDate_and_time_ptr) _effectivity_start_date; +} void -SdaiDated_effectivity::Effectivity_start_date (SdaiDate_and_timeH x) - { _effectivity_start_date = x; } +SdaiDated_effectivity::effectivity_start_date_ (const SdaiDate_and_time_ptr x) -SdaiDate_and_timeH -SdaiDated_effectivity::Effectivity_end_date() const - { return (SdaiDate_and_timeH) _effectivity_end_date; } +{ + _effectivity_start_date = x; +} + +const SdaiDate_and_time_ptr +SdaiDated_effectivity::effectivity_end_date_() const +{ + return (SdaiDate_and_time_ptr) _effectivity_end_date; +} void -SdaiDated_effectivity::Effectivity_end_date (SdaiDate_and_timeH x) - { _effectivity_end_date = x; } +SdaiDated_effectivity::effectivity_end_date_ (const SdaiDate_and_time_ptr x) + +{ + _effectivity_end_date = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY dated_effectivity +///////// END_ENTITY dated_effectivity -///////// ENTITY direction +///////// ENTITY direction EntityDescriptor *config_control_designe_direction =0; AttrDescriptor *a_92direction_ratios =0; @@ -16866,14 +28045,75 @@ SdaiDirection::SdaiDirection( ) eDesc = config_control_designe_direction; - STEPattribute * a = new STEPattribute (*a_92direction_ratios, &_direction_ratios); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_92direction_ratios, &_direction_ratios); +#else + STEPattribute *a = new STEPattribute(*a_92direction_ratios, &_direction_ratios); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiDirection::SdaiDirection (SdaiDirection& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiDirection::~SdaiDirection () { } -SdaiDirection::SdaiDirection (STEPentity *se ) : SdaiGeometric_representation_item(se) + +#ifdef __OSTORE__ + +void +SdaiDirection::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDirection: virtual access function." << G4endl; + SdaiDirection_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiDirection_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDirection: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiDirection *ent = (SdaiDirection *)sent; +// SdaiDirection *ent = (SdaiDirection *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_direction; + ent->attributes[1].aDesc = a_92direction_ratios; +} + +SCLP23(Application_instance_ptr) +create_SdaiDirection(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiDirection::get_os_typespec()) + SdaiDirection; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiDirection::get_os_typespec()) +// SdaiDirection; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiDirection; +} +#endif + +#ifdef __O3DB__ +void +SdaiDirection::oodb_reInit () +{ eDesc = config_control_designe_direction; + attributes [1].aDesc = a_92direction_ratios; +} +#endif + +SdaiDirection::SdaiDirection (SCLP23(Application_instance) *se, int *addAttrs) : SdaiGeometric_representation_item(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -16884,30 +28124,41 @@ SdaiDirection::SdaiDirection (STEPentity *se ) : SdaiGeometric_representation_it eDesc = config_control_designe_direction; - STEPattribute * a = new STEPattribute (*a_92direction_ratios, &_direction_ratios); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_92direction_ratios, &_direction_ratios); +#else + STEPattribute *a = new STEPattribute(*a_92direction_ratios, &_direction_ratios); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -const RealAggregateH -SdaiDirection::Direction_ratios() const - { return (RealAggregateH) &_direction_ratios; } +const RealAggregate_ptr +SdaiDirection::direction_ratios_() const +{ + return (RealAggregate_ptr) &_direction_ratios; +} void -SdaiDirection::Direction_ratios (RealAggregateH x) +SdaiDirection::direction_ratios_ (const RealAggregate_ptr x) + { _direction_ratios.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY direction +///////// END_ENTITY direction -///////// ENTITY next_assembly_usage_occurrence +///////// ENTITY next_assembly_usage_occurrence EntityDescriptor *config_control_designe_next_assembly_usage_occurrence =0; SdaiNext_assembly_usage_occurrence::SdaiNext_assembly_usage_occurrence( ) @@ -16920,9 +28171,61 @@ SdaiNext_assembly_usage_occurrence::SdaiNext_assembly_usage_occurrence( ) eDesc = config_control_designe_next_assembly_usage_occurrence; } SdaiNext_assembly_usage_occurrence::SdaiNext_assembly_usage_occurrence (SdaiNext_assembly_usage_occurrence& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiNext_assembly_usage_occurrence::~SdaiNext_assembly_usage_occurrence () { } -SdaiNext_assembly_usage_occurrence::SdaiNext_assembly_usage_occurrence (STEPentity *se ) : SdaiAssembly_component_usage(se) + +#ifdef __OSTORE__ + +void +SdaiNext_assembly_usage_occurrence::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiNext_assembly_usage_occurrence: virtual access function." << G4endl; + SdaiNext_assembly_usage_occurrence_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiNext_assembly_usage_occurrence_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiNext_assembly_usage_occurrence: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiNext_assembly_usage_occurrence *ent = (SdaiNext_assembly_usage_occurrence *)sent; +// SdaiNext_assembly_usage_occurrence *ent = (SdaiNext_assembly_usage_occurrence *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_next_assembly_usage_occurrence; +} + +SCLP23(Application_instance_ptr) +create_SdaiNext_assembly_usage_occurrence(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiNext_assembly_usage_occurrence::get_os_typespec()) + SdaiNext_assembly_usage_occurrence; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiNext_assembly_usage_occurrence::get_os_typespec()) +// SdaiNext_assembly_usage_occurrence; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiNext_assembly_usage_occurrence; +} +#endif + +#ifdef __O3DB__ +void +SdaiNext_assembly_usage_occurrence::oodb_reInit () +{ eDesc = config_control_designe_next_assembly_usage_occurrence; +} +#endif + +SdaiNext_assembly_usage_occurrence::SdaiNext_assembly_usage_occurrence (SCLP23(Application_instance) *se, int *addAttrs) : SdaiAssembly_component_usage(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -16936,10 +28239,10 @@ SdaiNext_assembly_usage_occurrence::SdaiNext_assembly_usage_occurrence (STEPenti /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY next_assembly_usage_occurrence +///////// END_ENTITY next_assembly_usage_occurrence -///////// ENTITY edge +///////// ENTITY edge EntityDescriptor *config_control_designe_edge =0; AttrDescriptor *a_93edge_start =0; @@ -16953,18 +28256,90 @@ SdaiEdge::SdaiEdge( ) eDesc = config_control_designe_edge; - STEPattribute * a = new STEPattribute (*a_93edge_start, (STEPentityH *) &_edge_start); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_93edge_start, (SCLP23(Application_instance_ptr) *) &_edge_start); +#else + STEPattribute *a = new STEPattribute(*a_93edge_start, (SCLP23(Application_instance_ptr) *) &_edge_start); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_94edge_end, (STEPentityH *) &_edge_end); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_94edge_end, (SCLP23(Application_instance_ptr) *) &_edge_end); +#else + a = new STEPattribute(*a_94edge_end, (SCLP23(Application_instance_ptr) *) &_edge_end); +#endif a -> set_null (); attributes.push (a); } SdaiEdge::SdaiEdge (SdaiEdge& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiEdge::~SdaiEdge () { } -SdaiEdge::SdaiEdge (STEPentity *se ) : SdaiTopological_representation_item(se) + +#ifdef __OSTORE__ + +void +SdaiEdge::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiEdge: virtual access function." << G4endl; + SdaiEdge_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiEdge_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiEdge: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiEdge *ent = (SdaiEdge *)sent; +// SdaiEdge *ent = (SdaiEdge *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_edge; + ent->attributes[1].aDesc = a_93edge_start; + if(ent->_edge_start == 0) + ent->_edge_start = S_ENTITY_NULL; + ent->attributes[2].aDesc = a_94edge_end; + if(ent->_edge_end == 0) + ent->_edge_end = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiEdge(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiEdge::get_os_typespec()) + SdaiEdge; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiEdge::get_os_typespec()) +// SdaiEdge; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiEdge; +} +#endif + +#ifdef __O3DB__ +void +SdaiEdge::oodb_reInit () +{ eDesc = config_control_designe_edge; + attributes [1].aDesc = a_93edge_start; + attributes [2].aDesc = a_94edge_end; +} +#endif + +SdaiEdge::SdaiEdge (SCLP23(Application_instance) *se, int *addAttrs) : SdaiTopological_representation_item(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -16975,53 +28350,77 @@ SdaiEdge::SdaiEdge (STEPentity *se ) : SdaiTopological_representation_item(se) eDesc = config_control_designe_edge; - STEPattribute * a = new STEPattribute (*a_93edge_start, (STEPentityH *) &_edge_start); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_93edge_start, (SCLP23(Application_instance_ptr) *) &_edge_start); +#else + STEPattribute *a = new STEPattribute(*a_93edge_start, (SCLP23(Application_instance_ptr) *) &_edge_start); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_94edge_end, (STEPentityH *) &_edge_end); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_94edge_end, (SCLP23(Application_instance_ptr) *) &_edge_end); +#else + a = new STEPattribute(*a_94edge_end, (SCLP23(Application_instance_ptr) *) &_edge_end); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiVertexH -SdaiEdge::Edge_start() const - { return (SdaiVertexH) _edge_start; } +const SdaiVertex_ptr +SdaiEdge::edge_start_() const +{ + return (SdaiVertex_ptr) _edge_start; +} void -SdaiEdge::Edge_start (SdaiVertexH x) - { _edge_start = x; } +SdaiEdge::edge_start_ (const SdaiVertex_ptr x) -SdaiVertexH -SdaiEdge::Edge_end() const - { return (SdaiVertexH) _edge_end; } +{ + _edge_start = x; +} + +const SdaiVertex_ptr +SdaiEdge::edge_end_() const +{ + return (SdaiVertex_ptr) _edge_end; +} void -SdaiEdge::Edge_end (SdaiVertexH x) - { _edge_end = x; } +SdaiEdge::edge_end_ (const SdaiVertex_ptr x) + +{ + _edge_end = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY edge +///////// END_ENTITY edge -///////// ENTITY oriented_edge +///////// ENTITY oriented_edge EntityDescriptor *config_control_designe_oriented_edge =0; AttrDescriptor *a_95edge_element =0; AttrDescriptor *a_96orientation =0; -AttrDescriptor *a_97Dedge_edge_start =0; -AttrDescriptor *a_98Dedge_edge_end =0; +Derived_attribute *a_97Dedge_edge_start =0; +Derived_attribute *a_98Dedge_edge_end =0; SdaiOriented_edge::SdaiOriented_edge( ) { @@ -17031,20 +28430,90 @@ SdaiOriented_edge::SdaiOriented_edge( ) eDesc = config_control_designe_oriented_edge; - STEPattribute * a = new STEPattribute (*a_95edge_element, (STEPentityH *) &_edge_element); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_95edge_element, (SCLP23(Application_instance_ptr) *) &_edge_element); +#else + STEPattribute *a = new STEPattribute(*a_95edge_element, (SCLP23(Application_instance_ptr) *) &_edge_element); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_96orientation, &_orientation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_96orientation, &_orientation); +#else + a = new STEPattribute(*a_96orientation, &_orientation); +#endif a -> set_null (); attributes.push (a); MakeDerived ("edge_start"); MakeDerived ("edge_end"); } SdaiOriented_edge::SdaiOriented_edge (SdaiOriented_edge& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiOriented_edge::~SdaiOriented_edge () { } -SdaiOriented_edge::SdaiOriented_edge (STEPentity *se ) : SdaiEdge(se) + +#ifdef __OSTORE__ + +void +SdaiOriented_edge::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOriented_edge: virtual access function." << G4endl; + SdaiOriented_edge_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiOriented_edge_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOriented_edge: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiOriented_edge *ent = (SdaiOriented_edge *)sent; +// SdaiOriented_edge *ent = (SdaiOriented_edge *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_oriented_edge; + ent->attributes[3].aDesc = a_95edge_element; + if(ent->_edge_element == 0) + ent->_edge_element = S_ENTITY_NULL; + ent->attributes[4].aDesc = a_96orientation; +} + +SCLP23(Application_instance_ptr) +create_SdaiOriented_edge(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiOriented_edge::get_os_typespec()) + SdaiOriented_edge; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiOriented_edge::get_os_typespec()) +// SdaiOriented_edge; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiOriented_edge; +} +#endif + +#ifdef __O3DB__ +void +SdaiOriented_edge::oodb_reInit () +{ eDesc = config_control_designe_oriented_edge; + attributes [3].aDesc = a_95edge_element; + attributes [4].aDesc = a_96orientation; +} +#endif + +SdaiOriented_edge::SdaiOriented_edge (SCLP23(Application_instance) *se, int *addAttrs) : SdaiEdge(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -17055,49 +28524,73 @@ SdaiOriented_edge::SdaiOriented_edge (STEPentity *se ) : SdaiEdge(se) eDesc = config_control_designe_oriented_edge; - STEPattribute * a = new STEPattribute (*a_95edge_element, (STEPentityH *) &_edge_element); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_95edge_element, (SCLP23(Application_instance_ptr) *) &_edge_element); +#else + STEPattribute *a = new STEPattribute(*a_95edge_element, (SCLP23(Application_instance_ptr) *) &_edge_element); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_96orientation, &_orientation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_96orientation, &_orientation); +#else + a = new STEPattribute(*a_96orientation, &_orientation); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); MakeDerived ("edge_start"); MakeDerived ("edge_end"); } -SdaiEdgeH -SdaiOriented_edge::Edge_element() const - { return (SdaiEdgeH) _edge_element; } +const SdaiEdge_ptr +SdaiOriented_edge::edge_element_() const +{ + return (SdaiEdge_ptr) _edge_element; +} void -SdaiOriented_edge::Edge_element (SdaiEdgeH x) - { _edge_element = x; } +SdaiOriented_edge::edge_element_ (const SdaiEdge_ptr x) -const BOOLEAN -SdaiOriented_edge::Orientation() const - { return (LOGICAL) _orientation; } +{ + _edge_element = x; +} + +const SCLBOOL(Bool) +SdaiOriented_edge::orientation_() const +{ + return (SCLBOOL(Bool)) _orientation; +} void -SdaiOriented_edge::Orientation (BOOLEAN x) - { _orientation.put (x); } +SdaiOriented_edge::orientation_ (const SCLBOOL(Bool) x) + +{ + _orientation.put (x); +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY oriented_edge +///////// END_ENTITY oriented_edge -///////// ENTITY person +///////// ENTITY person EntityDescriptor *config_control_designe_person =0; AttrDescriptor *a_99id =0; @@ -17113,34 +28606,134 @@ SdaiPerson::SdaiPerson( ) eDesc = config_control_designe_person; - STEPattribute * a = new STEPattribute (*a_99id, &_id); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_99id, &_id); +#else + STEPattribute *a = new STEPattribute(*a_99id, &_id); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_100last_name, &_last_name); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_100last_name, &_last_name); +#else + a = new STEPattribute(*a_100last_name, &_last_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_101first_name, &_first_name); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_101first_name, &_first_name); +#else + a = new STEPattribute(*a_101first_name, &_first_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_102middle_names, &_middle_names); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_102middle_names, &_middle_names); +#else + a = new STEPattribute(*a_102middle_names, &_middle_names); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_103prefix_titles, &_prefix_titles); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_103prefix_titles, &_prefix_titles); +#else + a = new STEPattribute(*a_103prefix_titles, &_prefix_titles); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_104suffix_titles, &_suffix_titles); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_104suffix_titles, &_suffix_titles); +#else + a = new STEPattribute(*a_104suffix_titles, &_suffix_titles); +#endif a -> set_null (); attributes.push (a); } SdaiPerson::SdaiPerson (SdaiPerson& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiPerson::~SdaiPerson () { } -SdaiPerson::SdaiPerson( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiPerson::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPerson: virtual access function." << G4endl; + SdaiPerson_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiPerson_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPerson: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiPerson *ent = (SdaiPerson *)sent; +// SdaiPerson *ent = (SdaiPerson *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_person; + ent->attributes[0].aDesc = a_99id; + ent->attributes[1].aDesc = a_100last_name; + ent->attributes[2].aDesc = a_101first_name; + ent->attributes[3].aDesc = a_102middle_names; + ent->attributes[4].aDesc = a_103prefix_titles; + ent->attributes[5].aDesc = a_104suffix_titles; +} + +SCLP23(Application_instance_ptr) +create_SdaiPerson(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiPerson::get_os_typespec()) + SdaiPerson; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiPerson::get_os_typespec()) +// SdaiPerson; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiPerson; +} +#endif + +#ifdef __O3DB__ +void +SdaiPerson::oodb_reInit () +{ eDesc = config_control_designe_person; + attributes [0].aDesc = a_99id; + attributes [1].aDesc = a_100last_name; + attributes [2].aDesc = a_101first_name; + attributes [3].aDesc = a_102middle_names; + attributes [4].aDesc = a_103prefix_titles; + attributes [5].aDesc = a_104suffix_titles; +} +#endif + +SdaiPerson::SdaiPerson( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -17149,113 +28742,179 @@ SdaiPerson::SdaiPerson( STEPentity *se ) eDesc = config_control_designe_person; - STEPattribute * a = new STEPattribute (*a_99id, &_id); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_99id, &_id); +#else + STEPattribute *a = new STEPattribute(*a_99id, &_id); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_100last_name, &_last_name); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_100last_name, &_last_name); +#else + a = new STEPattribute(*a_100last_name, &_last_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_101first_name, &_first_name); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_101first_name, &_first_name); +#else + a = new STEPattribute(*a_101first_name, &_first_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_102middle_names, &_middle_names); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_102middle_names, &_middle_names); +#else + a = new STEPattribute(*a_102middle_names, &_middle_names); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_103prefix_titles, &_prefix_titles); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_103prefix_titles, &_prefix_titles); +#else + a = new STEPattribute(*a_103prefix_titles, &_prefix_titles); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_104suffix_titles, &_suffix_titles); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_104suffix_titles, &_suffix_titles); +#else + a = new STEPattribute(*a_104suffix_titles, &_suffix_titles); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiIdentifier -SdaiPerson::Id() const - { return (const SdaiIdentifier) _id; } +SdaiPerson::id_() const +{ + return (SdaiIdentifier) _id; +} void -SdaiPerson::Id (const char * x) - { _id = x; } +SdaiPerson::id_ (const SdaiIdentifier x) + +{ + _id = x; +} const SdaiLabel -SdaiPerson::Last_name() const - { return (const SdaiLabel) _last_name; } +SdaiPerson::last_name_() const +{ + return (SdaiLabel) _last_name; +} void -SdaiPerson::Last_name (const char * x) - { _last_name = x; } +SdaiPerson::last_name_ (const SdaiLabel x) + +{ + _last_name = x; +} const SdaiLabel -SdaiPerson::First_name() const - { return (const SdaiLabel) _first_name; } +SdaiPerson::first_name_() const +{ + return (SdaiLabel) _first_name; +} void -SdaiPerson::First_name (const char * x) - { _first_name = x; } +SdaiPerson::first_name_ (const SdaiLabel x) -const StringAggregateH -SdaiPerson::Middle_names() const - { return (StringAggregateH) &_middle_names; } +{ + _first_name = x; +} + +const StringAggregate_ptr +SdaiPerson::middle_names_() const +{ + return (StringAggregate_ptr) &_middle_names; +} void -SdaiPerson::Middle_names (StringAggregateH x) +SdaiPerson::middle_names_ (const StringAggregate_ptr x) + { _middle_names.ShallowCopy (*x); } -const StringAggregateH -SdaiPerson::Prefix_titles() const - { return (StringAggregateH) &_prefix_titles; } +const StringAggregate_ptr +SdaiPerson::prefix_titles_() const +{ + return (StringAggregate_ptr) &_prefix_titles; +} void -SdaiPerson::Prefix_titles (StringAggregateH x) +SdaiPerson::prefix_titles_ (const StringAggregate_ptr x) + { _prefix_titles.ShallowCopy (*x); } -const StringAggregateH -SdaiPerson::Suffix_titles() const - { return (StringAggregateH) &_suffix_titles; } +const StringAggregate_ptr +SdaiPerson::suffix_titles_() const +{ + return (StringAggregate_ptr) &_suffix_titles; +} void -SdaiPerson::Suffix_titles (StringAggregateH x) +SdaiPerson::suffix_titles_ (const StringAggregate_ptr x) + { _suffix_titles.ShallowCopy (*x); } -///////// END_ENTITY person +///////// END_ENTITY person -///////// ENTITY document +///////// ENTITY document EntityDescriptor *config_control_designe_document =0; AttrDescriptor *a_105id =0; @@ -17269,26 +28928,112 @@ SdaiDocument::SdaiDocument( ) eDesc = config_control_designe_document; - STEPattribute * a = new STEPattribute (*a_105id, &_id); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_105id, &_id); +#else + STEPattribute *a = new STEPattribute(*a_105id, &_id); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_106name, &_name); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_106name, &_name); +#else + a = new STEPattribute(*a_106name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_107description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_107description, &_description); +#else + a = new STEPattribute(*a_107description, &_description); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_108kind, (STEPentityH *) &_kind); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_108kind, (SCLP23(Application_instance_ptr) *) &_kind); +#else + a = new STEPattribute(*a_108kind, (SCLP23(Application_instance_ptr) *) &_kind); +#endif a -> set_null (); attributes.push (a); } SdaiDocument::SdaiDocument (SdaiDocument& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiDocument::~SdaiDocument () { } -SdaiDocument::SdaiDocument( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiDocument::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDocument: virtual access function." << G4endl; + SdaiDocument_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiDocument_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDocument: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiDocument *ent = (SdaiDocument *)sent; +// SdaiDocument *ent = (SdaiDocument *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_document; + ent->attributes[0].aDesc = a_105id; + ent->attributes[1].aDesc = a_106name; + ent->attributes[2].aDesc = a_107description; + ent->attributes[3].aDesc = a_108kind; + if(ent->_kind == 0) + ent->_kind = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiDocument(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiDocument::get_os_typespec()) + SdaiDocument; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiDocument::get_os_typespec()) +// SdaiDocument; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiDocument; +} +#endif + +#ifdef __O3DB__ +void +SdaiDocument::oodb_reInit () +{ eDesc = config_control_designe_document; + attributes [0].aDesc = a_105id; + attributes [1].aDesc = a_106name; + attributes [2].aDesc = a_107description; + attributes [3].aDesc = a_108kind; +} +#endif + +SdaiDocument::SdaiDocument( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -17297,79 +29042,127 @@ SdaiDocument::SdaiDocument( STEPentity *se ) eDesc = config_control_designe_document; - STEPattribute * a = new STEPattribute (*a_105id, &_id); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_105id, &_id); +#else + STEPattribute *a = new STEPattribute(*a_105id, &_id); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_106name, &_name); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_106name, &_name); +#else + a = new STEPattribute(*a_106name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_107description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_107description, &_description); +#else + a = new STEPattribute(*a_107description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_108kind, (STEPentityH *) &_kind); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_108kind, (SCLP23(Application_instance_ptr) *) &_kind); +#else + a = new STEPattribute(*a_108kind, (SCLP23(Application_instance_ptr) *) &_kind); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiIdentifier -SdaiDocument::Id() const - { return (const SdaiIdentifier) _id; } +SdaiDocument::id_() const +{ + return (SdaiIdentifier) _id; +} void -SdaiDocument::Id (const char * x) - { _id = x; } +SdaiDocument::id_ (const SdaiIdentifier x) + +{ + _id = x; +} const SdaiLabel -SdaiDocument::Name() const - { return (const SdaiLabel) _name; } +SdaiDocument::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiDocument::Name (const char * x) - { _name = x; } +SdaiDocument::name_ (const SdaiLabel x) + +{ + _name = x; +} const SdaiText -SdaiDocument::Description() const - { return (const SdaiText) _description; } +SdaiDocument::description_() const +{ + return (SdaiText) _description; +} void -SdaiDocument::Description (const char * x) - { _description = x; } +SdaiDocument::description_ (const SdaiText x) -SdaiDocument_typeH -SdaiDocument::Kind() const - { return (SdaiDocument_typeH) _kind; } +{ + _description = x; +} + +const SdaiDocument_type_ptr +SdaiDocument::kind_() const +{ + return (SdaiDocument_type_ptr) _kind; +} void -SdaiDocument::Kind (SdaiDocument_typeH x) - { _kind = x; } +SdaiDocument::kind_ (const SdaiDocument_type_ptr x) -///////// END_ENTITY document +{ + _kind = x; +} + +///////// END_ENTITY document -///////// ENTITY document_with_class +///////// ENTITY document_with_class EntityDescriptor *config_control_designe_document_with_class =0; AttrDescriptor *a_109class =0; @@ -17382,14 +29175,74 @@ SdaiDocument_with_class::SdaiDocument_with_class( ) eDesc = config_control_designe_document_with_class; - STEPattribute * a = new STEPattribute (*a_109class, &_class); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_109class, &_class); +#else + STEPattribute *a = new STEPattribute(*a_109class, &_class); +#endif a -> set_null (); attributes.push (a); } SdaiDocument_with_class::SdaiDocument_with_class (SdaiDocument_with_class& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiDocument_with_class::~SdaiDocument_with_class () { } -SdaiDocument_with_class::SdaiDocument_with_class (STEPentity *se ) : SdaiDocument(se) + +#ifdef __OSTORE__ + +void +SdaiDocument_with_class::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDocument_with_class: virtual access function." << G4endl; + SdaiDocument_with_class_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiDocument_with_class_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDocument_with_class: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiDocument_with_class *ent = (SdaiDocument_with_class *)sent; +// SdaiDocument_with_class *ent = (SdaiDocument_with_class *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_document_with_class; + ent->attributes[4].aDesc = a_109class; +} + +SCLP23(Application_instance_ptr) +create_SdaiDocument_with_class(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiDocument_with_class::get_os_typespec()) + SdaiDocument_with_class; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiDocument_with_class::get_os_typespec()) +// SdaiDocument_with_class; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiDocument_with_class; +} +#endif + +#ifdef __O3DB__ +void +SdaiDocument_with_class::oodb_reInit () +{ eDesc = config_control_designe_document_with_class; + attributes [4].aDesc = a_109class; +} +#endif + +SdaiDocument_with_class::SdaiDocument_with_class (SCLP23(Application_instance) *se, int *addAttrs) : SdaiDocument(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -17400,30 +29253,42 @@ SdaiDocument_with_class::SdaiDocument_with_class (STEPentity *se ) : SdaiDocumen eDesc = config_control_designe_document_with_class; - STEPattribute * a = new STEPattribute (*a_109class, &_class); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_109class, &_class); +#else + STEPattribute *a = new STEPattribute(*a_109class, &_class); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiIdentifier -SdaiDocument_with_class::Class() const - { return (const SdaiIdentifier) _class; } +SdaiDocument_with_class::class_() const +{ + return (SdaiIdentifier) _class; +} void -SdaiDocument_with_class::Class (const char * x) - { _class = x; } +SdaiDocument_with_class::class_ (const SdaiIdentifier x) + +{ + _class = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY document_with_class +///////// END_ENTITY document_with_class -///////// ENTITY conversion_based_unit +///////// ENTITY conversion_based_unit EntityDescriptor *config_control_designe_conversion_based_unit =0; AttrDescriptor *a_110name =0; @@ -17437,18 +29302,88 @@ SdaiConversion_based_unit::SdaiConversion_based_unit( ) eDesc = config_control_designe_conversion_based_unit; - STEPattribute * a = new STEPattribute (*a_110name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_110name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_110name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_111conversion_factor, (STEPentityH *) &_conversion_factor); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_111conversion_factor, (SCLP23(Application_instance_ptr) *) &_conversion_factor); +#else + a = new STEPattribute(*a_111conversion_factor, (SCLP23(Application_instance_ptr) *) &_conversion_factor); +#endif a -> set_null (); attributes.push (a); } SdaiConversion_based_unit::SdaiConversion_based_unit (SdaiConversion_based_unit& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiConversion_based_unit::~SdaiConversion_based_unit () { } -SdaiConversion_based_unit::SdaiConversion_based_unit (STEPentity *se ) : SdaiNamed_unit(se) + +#ifdef __OSTORE__ + +void +SdaiConversion_based_unit::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiConversion_based_unit: virtual access function." << G4endl; + SdaiConversion_based_unit_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiConversion_based_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiConversion_based_unit: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiConversion_based_unit *ent = (SdaiConversion_based_unit *)sent; +// SdaiConversion_based_unit *ent = (SdaiConversion_based_unit *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_conversion_based_unit; + ent->attributes[1].aDesc = a_110name; + ent->attributes[2].aDesc = a_111conversion_factor; + if(ent->_conversion_factor == 0) + ent->_conversion_factor = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiConversion_based_unit(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiConversion_based_unit::get_os_typespec()) + SdaiConversion_based_unit; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiConversion_based_unit::get_os_typespec()) +// SdaiConversion_based_unit; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiConversion_based_unit; +} +#endif + +#ifdef __O3DB__ +void +SdaiConversion_based_unit::oodb_reInit () +{ eDesc = config_control_designe_conversion_based_unit; + attributes [1].aDesc = a_110name; + attributes [2].aDesc = a_111conversion_factor; +} +#endif + +SdaiConversion_based_unit::SdaiConversion_based_unit (SCLP23(Application_instance) *se, int *addAttrs) : SdaiNamed_unit(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -17459,47 +29394,71 @@ SdaiConversion_based_unit::SdaiConversion_based_unit (STEPentity *se ) : SdaiNam eDesc = config_control_designe_conversion_based_unit; - STEPattribute * a = new STEPattribute (*a_110name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_110name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_110name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_111conversion_factor, (STEPentityH *) &_conversion_factor); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_111conversion_factor, (SCLP23(Application_instance_ptr) *) &_conversion_factor); +#else + a = new STEPattribute(*a_111conversion_factor, (SCLP23(Application_instance_ptr) *) &_conversion_factor); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiConversion_based_unit::Name() const - { return (const SdaiLabel) _name; } +SdaiConversion_based_unit::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiConversion_based_unit::Name (const char * x) - { _name = x; } +SdaiConversion_based_unit::name_ (const SdaiLabel x) -SdaiMeasure_with_unitH -SdaiConversion_based_unit::Conversion_factor() const - { return (SdaiMeasure_with_unitH) _conversion_factor; } +{ + _name = x; +} + +const SdaiMeasure_with_unit_ptr +SdaiConversion_based_unit::conversion_factor_() const +{ + return (SdaiMeasure_with_unit_ptr) _conversion_factor; +} void -SdaiConversion_based_unit::Conversion_factor (SdaiMeasure_with_unitH x) - { _conversion_factor = x; } +SdaiConversion_based_unit::conversion_factor_ (const SdaiMeasure_with_unit_ptr x) + +{ + _conversion_factor = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY conversion_based_unit +///////// END_ENTITY conversion_based_unit -///////// ENTITY point +///////// ENTITY point EntityDescriptor *config_control_designe_point =0; SdaiPoint::SdaiPoint( ) @@ -17510,11 +29469,64 @@ SdaiPoint::SdaiPoint( ) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_point; + MakeDerived ("dim"); } SdaiPoint::SdaiPoint (SdaiPoint& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiPoint::~SdaiPoint () { } -SdaiPoint::SdaiPoint (STEPentity *se ) : SdaiGeometric_representation_item(se) + +#ifdef __OSTORE__ + +void +SdaiPoint::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPoint: virtual access function." << G4endl; + SdaiPoint_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiPoint_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPoint: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiPoint *ent = (SdaiPoint *)sent; +// SdaiPoint *ent = (SdaiPoint *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_point; +} + +SCLP23(Application_instance_ptr) +create_SdaiPoint(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiPoint::get_os_typespec()) + SdaiPoint; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiPoint::get_os_typespec()) +// SdaiPoint; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiPoint; +} +#endif + +#ifdef __O3DB__ +void +SdaiPoint::oodb_reInit () +{ eDesc = config_control_designe_point; +} +#endif + +SdaiPoint::SdaiPoint (SCLP23(Application_instance) *se, int *addAttrs) : SdaiGeometric_representation_item(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -17524,14 +29536,15 @@ SdaiPoint::SdaiPoint (STEPentity *se ) : SdaiGeometric_representation_item(se) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_point; + MakeDerived ("dim"); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY point +///////// END_ENTITY point -///////// ENTITY point_on_surface +///////// ENTITY point_on_surface EntityDescriptor *config_control_designe_point_on_surface =0; AttrDescriptor *a_112basis_surface =0; @@ -17546,22 +29559,101 @@ SdaiPoint_on_surface::SdaiPoint_on_surface( ) eDesc = config_control_designe_point_on_surface; - STEPattribute * a = new STEPattribute (*a_112basis_surface, (STEPentityH *) &_basis_surface); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_112basis_surface, (SCLP23(Application_instance_ptr) *) &_basis_surface); +#else + STEPattribute *a = new STEPattribute(*a_112basis_surface, (SCLP23(Application_instance_ptr) *) &_basis_surface); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_113point_parameter_u, &_point_parameter_u); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_113point_parameter_u, &_point_parameter_u); +#else + a = new STEPattribute(*a_113point_parameter_u, &_point_parameter_u); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_114point_parameter_v, &_point_parameter_v); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_114point_parameter_v, &_point_parameter_v); +#else + a = new STEPattribute(*a_114point_parameter_v, &_point_parameter_v); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiPoint_on_surface::SdaiPoint_on_surface (SdaiPoint_on_surface& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiPoint_on_surface::~SdaiPoint_on_surface () { } -SdaiPoint_on_surface::SdaiPoint_on_surface (STEPentity *se ) : SdaiPoint(se) + +#ifdef __OSTORE__ + +void +SdaiPoint_on_surface::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPoint_on_surface: virtual access function." << G4endl; + SdaiPoint_on_surface_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiPoint_on_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPoint_on_surface: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiPoint_on_surface *ent = (SdaiPoint_on_surface *)sent; +// SdaiPoint_on_surface *ent = (SdaiPoint_on_surface *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_point_on_surface; + ent->attributes[1].aDesc = a_112basis_surface; + if(ent->_basis_surface == 0) + ent->_basis_surface = S_ENTITY_NULL; + ent->attributes[2].aDesc = a_113point_parameter_u; + ent->attributes[3].aDesc = a_114point_parameter_v; +} + +SCLP23(Application_instance_ptr) +create_SdaiPoint_on_surface(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiPoint_on_surface::get_os_typespec()) + SdaiPoint_on_surface; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiPoint_on_surface::get_os_typespec()) +// SdaiPoint_on_surface; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiPoint_on_surface; +} +#endif + +#ifdef __O3DB__ +void +SdaiPoint_on_surface::oodb_reInit () +{ eDesc = config_control_designe_point_on_surface; + attributes [1].aDesc = a_112basis_surface; + attributes [2].aDesc = a_113point_parameter_u; + attributes [3].aDesc = a_114point_parameter_v; +} +#endif + +SdaiPoint_on_surface::SdaiPoint_on_surface (SCLP23(Application_instance) *se, int *addAttrs) : SdaiPoint(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -17572,64 +29664,101 @@ SdaiPoint_on_surface::SdaiPoint_on_surface (STEPentity *se ) : SdaiPoint(se) eDesc = config_control_designe_point_on_surface; - STEPattribute * a = new STEPattribute (*a_112basis_surface, (STEPentityH *) &_basis_surface); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_112basis_surface, (SCLP23(Application_instance_ptr) *) &_basis_surface); +#else + STEPattribute *a = new STEPattribute(*a_112basis_surface, (SCLP23(Application_instance_ptr) *) &_basis_surface); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_113point_parameter_u, &_point_parameter_u); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_113point_parameter_u, &_point_parameter_u); +#else + a = new STEPattribute(*a_113point_parameter_u, &_point_parameter_u); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_114point_parameter_v, &_point_parameter_v); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_114point_parameter_v, &_point_parameter_v); +#else + a = new STEPattribute(*a_114point_parameter_v, &_point_parameter_v); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -SdaiSurfaceH -SdaiPoint_on_surface::Basis_surface() const - { return (SdaiSurfaceH) _basis_surface; } +const SdaiSurface_ptr +SdaiPoint_on_surface::basis_surface_() const +{ + return (SdaiSurface_ptr) _basis_surface; +} void -SdaiPoint_on_surface::Basis_surface (SdaiSurfaceH x) - { _basis_surface = x; } +SdaiPoint_on_surface::basis_surface_ (const SdaiSurface_ptr x) + +{ + _basis_surface = x; +} const SdaiParameter_value -SdaiPoint_on_surface::Point_parameter_u() const - { return (const SdaiParameter_value) _point_parameter_u; } +SdaiPoint_on_surface::point_parameter_u_() const +{ + return (SdaiParameter_value) _point_parameter_u; +} void -SdaiPoint_on_surface::Point_parameter_u (SdaiParameter_value x) - { _point_parameter_u = x; } +SdaiPoint_on_surface::point_parameter_u_ (const SdaiParameter_value x) + +{ + _point_parameter_u = x; +} const SdaiParameter_value -SdaiPoint_on_surface::Point_parameter_v() const - { return (const SdaiParameter_value) _point_parameter_v; } +SdaiPoint_on_surface::point_parameter_v_() const +{ + return (SdaiParameter_value) _point_parameter_v; +} void -SdaiPoint_on_surface::Point_parameter_v (SdaiParameter_value x) - { _point_parameter_v = x; } +SdaiPoint_on_surface::point_parameter_v_ (const SdaiParameter_value x) + +{ + _point_parameter_v = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY point_on_surface +///////// END_ENTITY point_on_surface -///////// ENTITY product_definition_formation +///////// ENTITY product_definition_formation EntityDescriptor *config_control_designe_product_definition_formation =0; AttrDescriptor *a_115id =0; @@ -17642,22 +29771,100 @@ SdaiProduct_definition_formation::SdaiProduct_definition_formation( ) eDesc = config_control_designe_product_definition_formation; - STEPattribute * a = new STEPattribute (*a_115id, &_id); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_115id, &_id); +#else + STEPattribute *a = new STEPattribute(*a_115id, &_id); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_116description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_116description, &_description); +#else + a = new STEPattribute(*a_116description, &_description); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_117of_product, (STEPentityH *) &_of_product); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_117of_product, (SCLP23(Application_instance_ptr) *) &_of_product); +#else + a = new STEPattribute(*a_117of_product, (SCLP23(Application_instance_ptr) *) &_of_product); +#endif a -> set_null (); attributes.push (a); } SdaiProduct_definition_formation::SdaiProduct_definition_formation (SdaiProduct_definition_formation& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiProduct_definition_formation::~SdaiProduct_definition_formation () { } -SdaiProduct_definition_formation::SdaiProduct_definition_formation( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiProduct_definition_formation::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_definition_formation: virtual access function." << G4endl; + SdaiProduct_definition_formation_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiProduct_definition_formation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_definition_formation: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiProduct_definition_formation *ent = (SdaiProduct_definition_formation *)sent; +// SdaiProduct_definition_formation *ent = (SdaiProduct_definition_formation *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_product_definition_formation; + ent->attributes[0].aDesc = a_115id; + ent->attributes[1].aDesc = a_116description; + ent->attributes[2].aDesc = a_117of_product; + if(ent->_of_product == 0) + ent->_of_product = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiProduct_definition_formation(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiProduct_definition_formation::get_os_typespec()) + SdaiProduct_definition_formation; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiProduct_definition_formation::get_os_typespec()) +// SdaiProduct_definition_formation; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiProduct_definition_formation; +} +#endif + +#ifdef __O3DB__ +void +SdaiProduct_definition_formation::oodb_reInit () +{ eDesc = config_control_designe_product_definition_formation; + attributes [0].aDesc = a_115id; + attributes [1].aDesc = a_116description; + attributes [2].aDesc = a_117of_product; +} +#endif + +SdaiProduct_definition_formation::SdaiProduct_definition_formation( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -17666,62 +29873,98 @@ SdaiProduct_definition_formation::SdaiProduct_definition_formation( STEPentity * eDesc = config_control_designe_product_definition_formation; - STEPattribute * a = new STEPattribute (*a_115id, &_id); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_115id, &_id); +#else + STEPattribute *a = new STEPattribute(*a_115id, &_id); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_116description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_116description, &_description); +#else + a = new STEPattribute(*a_116description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_117of_product, (STEPentityH *) &_of_product); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_117of_product, (SCLP23(Application_instance_ptr) *) &_of_product); +#else + a = new STEPattribute(*a_117of_product, (SCLP23(Application_instance_ptr) *) &_of_product); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiIdentifier -SdaiProduct_definition_formation::Id() const - { return (const SdaiIdentifier) _id; } +SdaiProduct_definition_formation::id_() const +{ + return (SdaiIdentifier) _id; +} void -SdaiProduct_definition_formation::Id (const char * x) - { _id = x; } +SdaiProduct_definition_formation::id_ (const SdaiIdentifier x) + +{ + _id = x; +} const SdaiText -SdaiProduct_definition_formation::Description() const - { return (const SdaiText) _description; } +SdaiProduct_definition_formation::description_() const +{ + return (SdaiText) _description; +} void -SdaiProduct_definition_formation::Description (const char * x) - { _description = x; } +SdaiProduct_definition_formation::description_ (const SdaiText x) -SdaiProductH -SdaiProduct_definition_formation::Of_product() const - { return (SdaiProductH) _of_product; } +{ + _description = x; +} + +const SdaiProduct_ptr +SdaiProduct_definition_formation::of_product_() const +{ + return (SdaiProduct_ptr) _of_product; +} void -SdaiProduct_definition_formation::Of_product (SdaiProductH x) - { _of_product = x; } +SdaiProduct_definition_formation::of_product_ (const SdaiProduct_ptr x) -///////// END_ENTITY product_definition_formation +{ + _of_product = x; +} + +///////// END_ENTITY product_definition_formation -///////// ENTITY person_and_organization_assignment +///////// ENTITY person_and_organization_assignment EntityDescriptor *config_control_designe_person_and_organization_assignment =0; AttrDescriptor *a_118assigned_person_and_organization =0; @@ -17733,18 +29976,90 @@ SdaiPerson_and_organization_assignment::SdaiPerson_and_organization_assignment( eDesc = config_control_designe_person_and_organization_assignment; - STEPattribute * a = new STEPattribute (*a_118assigned_person_and_organization, (STEPentityH *) &_assigned_person_and_organization); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_118assigned_person_and_organization, (SCLP23(Application_instance_ptr) *) &_assigned_person_and_organization); +#else + STEPattribute *a = new STEPattribute(*a_118assigned_person_and_organization, (SCLP23(Application_instance_ptr) *) &_assigned_person_and_organization); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_119role, (STEPentityH *) &_role); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_119role, (SCLP23(Application_instance_ptr) *) &_role); +#else + a = new STEPattribute(*a_119role, (SCLP23(Application_instance_ptr) *) &_role); +#endif a -> set_null (); attributes.push (a); } SdaiPerson_and_organization_assignment::SdaiPerson_and_organization_assignment (SdaiPerson_and_organization_assignment& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiPerson_and_organization_assignment::~SdaiPerson_and_organization_assignment () { } -SdaiPerson_and_organization_assignment::SdaiPerson_and_organization_assignment( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiPerson_and_organization_assignment::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPerson_and_organization_assignment: virtual access function." << G4endl; + SdaiPerson_and_organization_assignment_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiPerson_and_organization_assignment_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPerson_and_organization_assignment: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiPerson_and_organization_assignment *ent = (SdaiPerson_and_organization_assignment *)sent; +// SdaiPerson_and_organization_assignment *ent = (SdaiPerson_and_organization_assignment *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_person_and_organization_assignment; + ent->attributes[0].aDesc = a_118assigned_person_and_organization; + if(ent->_assigned_person_and_organization == 0) + ent->_assigned_person_and_organization = S_ENTITY_NULL; + ent->attributes[1].aDesc = a_119role; + if(ent->_role == 0) + ent->_role = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiPerson_and_organization_assignment(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiPerson_and_organization_assignment::get_os_typespec()) + SdaiPerson_and_organization_assignment; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiPerson_and_organization_assignment::get_os_typespec()) +// SdaiPerson_and_organization_assignment; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiPerson_and_organization_assignment; +} +#endif + +#ifdef __O3DB__ +void +SdaiPerson_and_organization_assignment::oodb_reInit () +{ eDesc = config_control_designe_person_and_organization_assignment; + attributes [0].aDesc = a_118assigned_person_and_organization; + attributes [1].aDesc = a_119role; +} +#endif + +SdaiPerson_and_organization_assignment::SdaiPerson_and_organization_assignment( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -17753,45 +30068,69 @@ SdaiPerson_and_organization_assignment::SdaiPerson_and_organization_assignment( eDesc = config_control_designe_person_and_organization_assignment; - STEPattribute * a = new STEPattribute (*a_118assigned_person_and_organization, (STEPentityH *) &_assigned_person_and_organization); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_118assigned_person_and_organization, (SCLP23(Application_instance_ptr) *) &_assigned_person_and_organization); +#else + STEPattribute *a = new STEPattribute(*a_118assigned_person_and_organization, (SCLP23(Application_instance_ptr) *) &_assigned_person_and_organization); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_119role, (STEPentityH *) &_role); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_119role, (SCLP23(Application_instance_ptr) *) &_role); +#else + a = new STEPattribute(*a_119role, (SCLP23(Application_instance_ptr) *) &_role); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiPerson_and_organizationH -SdaiPerson_and_organization_assignment::Assigned_person_and_organization() const - { return (SdaiPerson_and_organizationH) _assigned_person_and_organization; } +const SdaiPerson_and_organization_ptr +SdaiPerson_and_organization_assignment::assigned_person_and_organization_() const +{ + return (SdaiPerson_and_organization_ptr) _assigned_person_and_organization; +} void -SdaiPerson_and_organization_assignment::Assigned_person_and_organization (SdaiPerson_and_organizationH x) - { _assigned_person_and_organization = x; } +SdaiPerson_and_organization_assignment::assigned_person_and_organization_ (const SdaiPerson_and_organization_ptr x) -SdaiPerson_and_organization_roleH -SdaiPerson_and_organization_assignment::Role() const - { return (SdaiPerson_and_organization_roleH) _role; } +{ + _assigned_person_and_organization = x; +} + +const SdaiPerson_and_organization_role_ptr +SdaiPerson_and_organization_assignment::role_() const +{ + return (SdaiPerson_and_organization_role_ptr) _role; +} void -SdaiPerson_and_organization_assignment::Role (SdaiPerson_and_organization_roleH x) - { _role = x; } +SdaiPerson_and_organization_assignment::role_ (const SdaiPerson_and_organization_role_ptr x) -///////// END_ENTITY person_and_organization_assignment +{ + _role = x; +} + +///////// END_ENTITY person_and_organization_assignment -///////// ENTITY cc_design_person_and_organization_assignment +///////// ENTITY cc_design_person_and_organization_assignment EntityDescriptor *config_control_designe_cc_design_person_and_organization_assignment =0; AttrDescriptor *a_120items =0; @@ -17804,14 +30143,74 @@ SdaiCc_design_person_and_organization_assignment::SdaiCc_design_person_and_organ eDesc = config_control_designe_cc_design_person_and_organization_assignment; - STEPattribute * a = new STEPattribute (*a_120items, &_items); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_120items, &_items); +#else + STEPattribute *a = new STEPattribute(*a_120items, &_items); +#endif a -> set_null (); attributes.push (a); } SdaiCc_design_person_and_organization_assignment::SdaiCc_design_person_and_organization_assignment (SdaiCc_design_person_and_organization_assignment& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiCc_design_person_and_organization_assignment::~SdaiCc_design_person_and_organization_assignment () { } -SdaiCc_design_person_and_organization_assignment::SdaiCc_design_person_and_organization_assignment (STEPentity *se ) : SdaiPerson_and_organization_assignment(se) + +#ifdef __OSTORE__ + +void +SdaiCc_design_person_and_organization_assignment::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCc_design_person_and_organization_assignment: virtual access function." << G4endl; + SdaiCc_design_person_and_organization_assignment_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiCc_design_person_and_organization_assignment_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCc_design_person_and_organization_assignment: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiCc_design_person_and_organization_assignment *ent = (SdaiCc_design_person_and_organization_assignment *)sent; +// SdaiCc_design_person_and_organization_assignment *ent = (SdaiCc_design_person_and_organization_assignment *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_cc_design_person_and_organization_assignment; + ent->attributes[2].aDesc = a_120items; +} + +SCLP23(Application_instance_ptr) +create_SdaiCc_design_person_and_organization_assignment(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiCc_design_person_and_organization_assignment::get_os_typespec()) + SdaiCc_design_person_and_organization_assignment; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiCc_design_person_and_organization_assignment::get_os_typespec()) +// SdaiCc_design_person_and_organization_assignment; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiCc_design_person_and_organization_assignment; +} +#endif + +#ifdef __O3DB__ +void +SdaiCc_design_person_and_organization_assignment::oodb_reInit () +{ eDesc = config_control_designe_cc_design_person_and_organization_assignment; + attributes [2].aDesc = a_120items; +} +#endif + +SdaiCc_design_person_and_organization_assignment::SdaiCc_design_person_and_organization_assignment (SCLP23(Application_instance) *se, int *addAttrs) : SdaiPerson_and_organization_assignment(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -17822,30 +30221,40 @@ SdaiCc_design_person_and_organization_assignment::SdaiCc_design_person_and_organ eDesc = config_control_designe_cc_design_person_and_organization_assignment; - STEPattribute * a = new STEPattribute (*a_120items, &_items); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_120items, &_items); +#else + STEPattribute *a = new STEPattribute(*a_120items, &_items); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -const SdaiPerson_organization_itemsH -SdaiCc_design_person_and_organization_assignment::Items() const - { return (SdaiPerson_organization_itemsH) &_items; } +const SdaiPerson_organization_items_ptr +SdaiCc_design_person_and_organization_assignment::items_() const +{ + return (SdaiPerson_organization_items_ptr) &_items; +} void -SdaiCc_design_person_and_organization_assignment::Items (SdaiPerson_organization_itemsH x) +SdaiCc_design_person_and_organization_assignment::items_ (const SdaiPerson_organization_items_ptr x) + { _items.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY cc_design_person_and_organization_assignment +///////// END_ENTITY cc_design_person_and_organization_assignment -///////// ENTITY offset_curve_3d +///////// ENTITY offset_curve_3d EntityDescriptor *config_control_designe_offset_curve_3d =0; AttrDescriptor *a_121basis_curve =0; @@ -17861,26 +30270,115 @@ SdaiOffset_curve_3d::SdaiOffset_curve_3d( ) eDesc = config_control_designe_offset_curve_3d; - STEPattribute * a = new STEPattribute (*a_121basis_curve, (STEPentityH *) &_basis_curve); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_121basis_curve, (SCLP23(Application_instance_ptr) *) &_basis_curve); +#else + STEPattribute *a = new STEPattribute(*a_121basis_curve, (SCLP23(Application_instance_ptr) *) &_basis_curve); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_122distance, &_distance); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_122distance, &_distance); +#else + a = new STEPattribute(*a_122distance, &_distance); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_123self_intersect, &_self_intersect); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_123self_intersect, &_self_intersect); +#else + a = new STEPattribute(*a_123self_intersect, &_self_intersect); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_124ref_direction, (STEPentityH *) &_ref_direction); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_124ref_direction, (SCLP23(Application_instance_ptr) *) &_ref_direction); +#else + a = new STEPattribute(*a_124ref_direction, (SCLP23(Application_instance_ptr) *) &_ref_direction); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiOffset_curve_3d::SdaiOffset_curve_3d (SdaiOffset_curve_3d& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiOffset_curve_3d::~SdaiOffset_curve_3d () { } -SdaiOffset_curve_3d::SdaiOffset_curve_3d (STEPentity *se ) : SdaiCurve(se) + +#ifdef __OSTORE__ + +void +SdaiOffset_curve_3d::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOffset_curve_3d: virtual access function." << G4endl; + SdaiOffset_curve_3d_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiOffset_curve_3d_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOffset_curve_3d: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiOffset_curve_3d *ent = (SdaiOffset_curve_3d *)sent; +// SdaiOffset_curve_3d *ent = (SdaiOffset_curve_3d *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_offset_curve_3d; + ent->attributes[1].aDesc = a_121basis_curve; + if(ent->_basis_curve == 0) + ent->_basis_curve = S_ENTITY_NULL; + ent->attributes[2].aDesc = a_122distance; + ent->attributes[3].aDesc = a_123self_intersect; + ent->attributes[4].aDesc = a_124ref_direction; + if(ent->_ref_direction == 0) + ent->_ref_direction = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiOffset_curve_3d(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiOffset_curve_3d::get_os_typespec()) + SdaiOffset_curve_3d; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiOffset_curve_3d::get_os_typespec()) +// SdaiOffset_curve_3d; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiOffset_curve_3d; +} +#endif + +#ifdef __O3DB__ +void +SdaiOffset_curve_3d::oodb_reInit () +{ eDesc = config_control_designe_offset_curve_3d; + attributes [1].aDesc = a_121basis_curve; + attributes [2].aDesc = a_122distance; + attributes [3].aDesc = a_123self_intersect; + attributes [4].aDesc = a_124ref_direction; +} +#endif + +SdaiOffset_curve_3d::SdaiOffset_curve_3d (SCLP23(Application_instance) *se, int *addAttrs) : SdaiCurve(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -17891,81 +30389,130 @@ SdaiOffset_curve_3d::SdaiOffset_curve_3d (STEPentity *se ) : SdaiCurve(se) eDesc = config_control_designe_offset_curve_3d; - STEPattribute * a = new STEPattribute (*a_121basis_curve, (STEPentityH *) &_basis_curve); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_121basis_curve, (SCLP23(Application_instance_ptr) *) &_basis_curve); +#else + STEPattribute *a = new STEPattribute(*a_121basis_curve, (SCLP23(Application_instance_ptr) *) &_basis_curve); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_122distance, &_distance); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_122distance, &_distance); +#else + a = new STEPattribute(*a_122distance, &_distance); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_123self_intersect, &_self_intersect); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_123self_intersect, &_self_intersect); +#else + a = new STEPattribute(*a_123self_intersect, &_self_intersect); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_124ref_direction, (STEPentityH *) &_ref_direction); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_124ref_direction, (SCLP23(Application_instance_ptr) *) &_ref_direction); +#else + a = new STEPattribute(*a_124ref_direction, (SCLP23(Application_instance_ptr) *) &_ref_direction); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -SdaiCurveH -SdaiOffset_curve_3d::Basis_curve() const - { return (SdaiCurveH) _basis_curve; } +const SdaiCurve_ptr +SdaiOffset_curve_3d::basis_curve_() const +{ + return (SdaiCurve_ptr) _basis_curve; +} void -SdaiOffset_curve_3d::Basis_curve (SdaiCurveH x) - { _basis_curve = x; } +SdaiOffset_curve_3d::basis_curve_ (const SdaiCurve_ptr x) + +{ + _basis_curve = x; +} const SdaiLength_measure -SdaiOffset_curve_3d::Distance() const - { return (const SdaiLength_measure) _distance; } +SdaiOffset_curve_3d::distance_() const +{ + return (SdaiLength_measure) _distance; +} void -SdaiOffset_curve_3d::Distance (SdaiLength_measure x) - { _distance = x; } +SdaiOffset_curve_3d::distance_ (const SdaiLength_measure x) -const LOGICAL -SdaiOffset_curve_3d::Self_intersect() const - { return (LOGICAL) _self_intersect; } +{ + _distance = x; +} + +const SCLLOG(Logical) +SdaiOffset_curve_3d::self_intersect_() const +{ + return (SCLLOG(Logical)) _self_intersect; +} void -SdaiOffset_curve_3d::Self_intersect (LOGICAL x) - { _self_intersect.put (x); } +SdaiOffset_curve_3d::self_intersect_ (const SCLLOG(Logical) x) -SdaiDirectionH -SdaiOffset_curve_3d::Ref_direction() const - { return (SdaiDirectionH) _ref_direction; } +{ + _self_intersect.put (x); +} + +const SdaiDirection_ptr +SdaiOffset_curve_3d::ref_direction_() const +{ + return (SdaiDirection_ptr) _ref_direction; +} void -SdaiOffset_curve_3d::Ref_direction (SdaiDirectionH x) - { _ref_direction = x; } +SdaiOffset_curve_3d::ref_direction_ (const SdaiDirection_ptr x) + +{ + _ref_direction = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY offset_curve_3d +///////// END_ENTITY offset_curve_3d -///////// ENTITY approval +///////// ENTITY approval EntityDescriptor *config_control_designe_approval =0; AttrDescriptor *a_125status =0; @@ -17977,18 +30524,88 @@ SdaiApproval::SdaiApproval( ) eDesc = config_control_designe_approval; - STEPattribute * a = new STEPattribute (*a_125status, (STEPentityH *) &_status); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_125status, (SCLP23(Application_instance_ptr) *) &_status); +#else + STEPattribute *a = new STEPattribute(*a_125status, (SCLP23(Application_instance_ptr) *) &_status); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_126level, &_level); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_126level, &_level); +#else + a = new STEPattribute(*a_126level, &_level); +#endif a -> set_null (); attributes.push (a); } SdaiApproval::SdaiApproval (SdaiApproval& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiApproval::~SdaiApproval () { } -SdaiApproval::SdaiApproval( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiApproval::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiApproval: virtual access function." << G4endl; + SdaiApproval_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiApproval_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiApproval: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiApproval *ent = (SdaiApproval *)sent; +// SdaiApproval *ent = (SdaiApproval *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_approval; + ent->attributes[0].aDesc = a_125status; + if(ent->_status == 0) + ent->_status = S_ENTITY_NULL; + ent->attributes[1].aDesc = a_126level; +} + +SCLP23(Application_instance_ptr) +create_SdaiApproval(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiApproval::get_os_typespec()) + SdaiApproval; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiApproval::get_os_typespec()) +// SdaiApproval; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiApproval; +} +#endif + +#ifdef __O3DB__ +void +SdaiApproval::oodb_reInit () +{ eDesc = config_control_designe_approval; + attributes [0].aDesc = a_125status; + attributes [1].aDesc = a_126level; +} +#endif + +SdaiApproval::SdaiApproval( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -17997,51 +30614,75 @@ SdaiApproval::SdaiApproval( STEPentity *se ) eDesc = config_control_designe_approval; - STEPattribute * a = new STEPattribute (*a_125status, (STEPentityH *) &_status); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_125status, (SCLP23(Application_instance_ptr) *) &_status); +#else + STEPattribute *a = new STEPattribute(*a_125status, (SCLP23(Application_instance_ptr) *) &_status); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_126level, &_level); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_126level, &_level); +#else + a = new STEPattribute(*a_126level, &_level); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiApproval_statusH -SdaiApproval::Status() const - { return (SdaiApproval_statusH) _status; } +const SdaiApproval_status_ptr +SdaiApproval::status_() const +{ + return (SdaiApproval_status_ptr) _status; +} void -SdaiApproval::Status (SdaiApproval_statusH x) - { _status = x; } +SdaiApproval::status_ (const SdaiApproval_status_ptr x) + +{ + _status = x; +} const SdaiLabel -SdaiApproval::Level() const - { return (const SdaiLabel) _level; } +SdaiApproval::level_() const +{ + return (SdaiLabel) _level; +} void -SdaiApproval::Level (const char * x) - { _level = x; } +SdaiApproval::level_ (const SdaiLabel x) -///////// END_ENTITY approval +{ + _level = x; +} + +///////// END_ENTITY approval -///////// ENTITY composite_curve +///////// ENTITY composite_curve EntityDescriptor *config_control_designe_composite_curve =0; AttrDescriptor *a_127segments =0; AttrDescriptor *a_128self_intersect =0; -AttrDescriptor *a_129Dn_segments =0; -AttrDescriptor *a_130Dclosed_curve =0; +Derived_attribute *a_129Dn_segments =0; +Derived_attribute *a_130Dclosed_curve =0; SdaiComposite_curve::SdaiComposite_curve( ) { @@ -18051,18 +30692,89 @@ SdaiComposite_curve::SdaiComposite_curve( ) eDesc = config_control_designe_composite_curve; - STEPattribute * a = new STEPattribute (*a_127segments, &_segments); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_127segments, &_segments); +#else + STEPattribute *a = new STEPattribute(*a_127segments, &_segments); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_128self_intersect, &_self_intersect); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_128self_intersect, &_self_intersect); +#else + a = new STEPattribute(*a_128self_intersect, &_self_intersect); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); + MakeDerived ("n_segments"); + MakeDerived ("closed_curve"); } SdaiComposite_curve::SdaiComposite_curve (SdaiComposite_curve& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiComposite_curve::~SdaiComposite_curve () { } -SdaiComposite_curve::SdaiComposite_curve (STEPentity *se ) : SdaiBounded_curve(se) + +#ifdef __OSTORE__ + +void +SdaiComposite_curve::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiComposite_curve: virtual access function." << G4endl; + SdaiComposite_curve_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiComposite_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiComposite_curve: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiComposite_curve *ent = (SdaiComposite_curve *)sent; +// SdaiComposite_curve *ent = (SdaiComposite_curve *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_composite_curve; + ent->attributes[1].aDesc = a_127segments; + ent->attributes[2].aDesc = a_128self_intersect; +} + +SCLP23(Application_instance_ptr) +create_SdaiComposite_curve(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiComposite_curve::get_os_typespec()) + SdaiComposite_curve; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiComposite_curve::get_os_typespec()) +// SdaiComposite_curve; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiComposite_curve; +} +#endif + +#ifdef __O3DB__ +void +SdaiComposite_curve::oodb_reInit () +{ eDesc = config_control_designe_composite_curve; + attributes [1].aDesc = a_127segments; + attributes [2].aDesc = a_128self_intersect; +} +#endif + +SdaiComposite_curve::SdaiComposite_curve (SCLP23(Application_instance) *se, int *addAttrs) : SdaiBounded_curve(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -18073,50 +30785,75 @@ SdaiComposite_curve::SdaiComposite_curve (STEPentity *se ) : SdaiBounded_curve(s eDesc = config_control_designe_composite_curve; - STEPattribute * a = new STEPattribute (*a_127segments, &_segments); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_127segments, &_segments); +#else + STEPattribute *a = new STEPattribute(*a_127segments, &_segments); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_128self_intersect, &_self_intersect); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_128self_intersect, &_self_intersect); +#else + a = new STEPattribute(*a_128self_intersect, &_self_intersect); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); + MakeDerived ("n_segments"); + MakeDerived ("closed_curve"); } -const EntityAggregateH -SdaiComposite_curve::Segments() const - { return (EntityAggregateH) &_segments; } +const EntityAggregate_ptr +SdaiComposite_curve::segments_() const +{ + return (EntityAggregate_ptr) &_segments; +} void -SdaiComposite_curve::Segments (EntityAggregateH x) +SdaiComposite_curve::segments_ (const EntityAggregate_ptr x) + { _segments.ShallowCopy (*x); } -const LOGICAL -SdaiComposite_curve::Self_intersect() const - { return (LOGICAL) _self_intersect; } +const SCLLOG(Logical) +SdaiComposite_curve::self_intersect_() const +{ + return (SCLLOG(Logical)) _self_intersect; +} void -SdaiComposite_curve::Self_intersect (LOGICAL x) - { _self_intersect.put (x); } +SdaiComposite_curve::self_intersect_ (const SCLLOG(Logical) x) + +{ + _self_intersect.put (x); +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY composite_curve +///////// END_ENTITY composite_curve -///////// ENTITY composite_curve_on_surface +///////// ENTITY composite_curve_on_surface EntityDescriptor *config_control_designe_composite_curve_on_surface =0; -AttrDescriptor *a_131Dbasis_surface =0; +Derived_attribute *a_131Dbasis_surface =0; SdaiComposite_curve_on_surface::SdaiComposite_curve_on_surface( ) { @@ -18125,11 +30862,67 @@ SdaiComposite_curve_on_surface::SdaiComposite_curve_on_surface( ) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_composite_curve_on_surface; + MakeDerived ("dim"); + MakeDerived ("n_segments"); + MakeDerived ("closed_curve"); + MakeDerived ("basis_surface"); } SdaiComposite_curve_on_surface::SdaiComposite_curve_on_surface (SdaiComposite_curve_on_surface& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiComposite_curve_on_surface::~SdaiComposite_curve_on_surface () { } -SdaiComposite_curve_on_surface::SdaiComposite_curve_on_surface (STEPentity *se ) : SdaiComposite_curve(se) + +#ifdef __OSTORE__ + +void +SdaiComposite_curve_on_surface::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiComposite_curve_on_surface: virtual access function." << G4endl; + SdaiComposite_curve_on_surface_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiComposite_curve_on_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiComposite_curve_on_surface: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiComposite_curve_on_surface *ent = (SdaiComposite_curve_on_surface *)sent; +// SdaiComposite_curve_on_surface *ent = (SdaiComposite_curve_on_surface *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_composite_curve_on_surface; +} + +SCLP23(Application_instance_ptr) +create_SdaiComposite_curve_on_surface(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiComposite_curve_on_surface::get_os_typespec()) + SdaiComposite_curve_on_surface; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiComposite_curve_on_surface::get_os_typespec()) +// SdaiComposite_curve_on_surface; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiComposite_curve_on_surface; +} +#endif + +#ifdef __O3DB__ +void +SdaiComposite_curve_on_surface::oodb_reInit () +{ eDesc = config_control_designe_composite_curve_on_surface; +} +#endif + +SdaiComposite_curve_on_surface::SdaiComposite_curve_on_surface (SCLP23(Application_instance) *se, int *addAttrs) : SdaiComposite_curve(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -18139,14 +30932,18 @@ SdaiComposite_curve_on_surface::SdaiComposite_curve_on_surface (STEPentity *se ) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_composite_curve_on_surface; + MakeDerived ("dim"); + MakeDerived ("n_segments"); + MakeDerived ("closed_curve"); + MakeDerived ("basis_surface"); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY composite_curve_on_surface +///////// END_ENTITY composite_curve_on_surface -///////// ENTITY boundary_curve +///////// ENTITY boundary_curve EntityDescriptor *config_control_designe_boundary_curve =0; SdaiBoundary_curve::SdaiBoundary_curve( ) @@ -18157,11 +30954,67 @@ SdaiBoundary_curve::SdaiBoundary_curve( ) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_boundary_curve; + MakeDerived ("dim"); + MakeDerived ("n_segments"); + MakeDerived ("closed_curve"); + MakeDerived ("basis_surface"); } SdaiBoundary_curve::SdaiBoundary_curve (SdaiBoundary_curve& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiBoundary_curve::~SdaiBoundary_curve () { } -SdaiBoundary_curve::SdaiBoundary_curve (STEPentity *se ) : SdaiComposite_curve_on_surface(se) + +#ifdef __OSTORE__ + +void +SdaiBoundary_curve::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiBoundary_curve: virtual access function." << G4endl; + SdaiBoundary_curve_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiBoundary_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiBoundary_curve: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiBoundary_curve *ent = (SdaiBoundary_curve *)sent; +// SdaiBoundary_curve *ent = (SdaiBoundary_curve *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_boundary_curve; +} + +SCLP23(Application_instance_ptr) +create_SdaiBoundary_curve(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiBoundary_curve::get_os_typespec()) + SdaiBoundary_curve; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiBoundary_curve::get_os_typespec()) +// SdaiBoundary_curve; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiBoundary_curve; +} +#endif + +#ifdef __O3DB__ +void +SdaiBoundary_curve::oodb_reInit () +{ eDesc = config_control_designe_boundary_curve; +} +#endif + +SdaiBoundary_curve::SdaiBoundary_curve (SCLP23(Application_instance) *se, int *addAttrs) : SdaiComposite_curve_on_surface(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -18171,19 +31024,23 @@ SdaiBoundary_curve::SdaiBoundary_curve (STEPentity *se ) : SdaiComposite_curve_o /* part of the main inheritance hierarchy */ eDesc = config_control_designe_boundary_curve; + MakeDerived ("dim"); + MakeDerived ("n_segments"); + MakeDerived ("closed_curve"); + MakeDerived ("basis_surface"); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY boundary_curve +///////// END_ENTITY boundary_curve -///////// ENTITY representation_context +///////// ENTITY representation_context EntityDescriptor *config_control_designe_representation_context =0; AttrDescriptor *a_132context_identifier =0; AttrDescriptor *a_133context_type =0; -InverseAttrDescriptor *a_134Irepresentations_in_context =0; +Inverse_attribute *a_134Irepresentations_in_context =0; SdaiRepresentation_context::SdaiRepresentation_context( ) { @@ -18191,18 +31048,86 @@ SdaiRepresentation_context::SdaiRepresentation_context( ) eDesc = config_control_designe_representation_context; - STEPattribute * a = new STEPattribute (*a_132context_identifier, &_context_identifier); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_132context_identifier, &_context_identifier); +#else + STEPattribute *a = new STEPattribute(*a_132context_identifier, &_context_identifier); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_133context_type, &_context_type); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_133context_type, &_context_type); +#else + a = new STEPattribute(*a_133context_type, &_context_type); +#endif a -> set_null (); attributes.push (a); } SdaiRepresentation_context::SdaiRepresentation_context (SdaiRepresentation_context& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiRepresentation_context::~SdaiRepresentation_context () { } -SdaiRepresentation_context::SdaiRepresentation_context( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiRepresentation_context::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiRepresentation_context: virtual access function." << G4endl; + SdaiRepresentation_context_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiRepresentation_context_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiRepresentation_context: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiRepresentation_context *ent = (SdaiRepresentation_context *)sent; +// SdaiRepresentation_context *ent = (SdaiRepresentation_context *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_representation_context; + ent->attributes[0].aDesc = a_132context_identifier; + ent->attributes[1].aDesc = a_133context_type; +} + +SCLP23(Application_instance_ptr) +create_SdaiRepresentation_context(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiRepresentation_context::get_os_typespec()) + SdaiRepresentation_context; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiRepresentation_context::get_os_typespec()) +// SdaiRepresentation_context; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiRepresentation_context; +} +#endif + +#ifdef __O3DB__ +void +SdaiRepresentation_context::oodb_reInit () +{ eDesc = config_control_designe_representation_context; + attributes [0].aDesc = a_132context_identifier; + attributes [1].aDesc = a_133context_type; +} +#endif + +SdaiRepresentation_context::SdaiRepresentation_context( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -18211,53 +31136,80 @@ SdaiRepresentation_context::SdaiRepresentation_context( STEPentity *se ) eDesc = config_control_designe_representation_context; - STEPattribute * a = new STEPattribute (*a_132context_identifier, &_context_identifier); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_132context_identifier, &_context_identifier); +#else + STEPattribute *a = new STEPattribute(*a_132context_identifier, &_context_identifier); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_133context_type, &_context_type); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_133context_type, &_context_type); +#else + a = new STEPattribute(*a_133context_type, &_context_type); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiIdentifier -SdaiRepresentation_context::Context_identifier() const - { return (const SdaiIdentifier) _context_identifier; } +SdaiRepresentation_context::context_identifier_() const +{ + return (SdaiIdentifier) _context_identifier; +} void -SdaiRepresentation_context::Context_identifier (const char * x) - { _context_identifier = x; } +SdaiRepresentation_context::context_identifier_ (const SdaiIdentifier x) + +{ + _context_identifier = x; +} const SdaiText -SdaiRepresentation_context::Context_type() const - { return (const SdaiText) _context_type; } +SdaiRepresentation_context::context_type_() const +{ + return (SdaiText) _context_type; +} void -SdaiRepresentation_context::Context_type (const char * x) - { _context_type = x; } +SdaiRepresentation_context::context_type_ (const SdaiText x) -const EntityAggregateH -SdaiRepresentation_context::Representations_in_context() const - { return (EntityAggregateH) &_representations_in_context; } +{ + _context_type = x; +} + +const EntityAggregate_ptr +SdaiRepresentation_context::representations_in_context_() const +{ + return (EntityAggregate_ptr) &_representations_in_context; +} void -SdaiRepresentation_context::Representations_in_context (EntityAggregateH x) +SdaiRepresentation_context::representations_in_context_ (const EntityAggregate_ptr x) + { _representations_in_context.ShallowCopy (*x); } -///////// END_ENTITY representation_context +///////// END_ENTITY representation_context -///////// ENTITY geometric_representation_context +///////// ENTITY geometric_representation_context EntityDescriptor *config_control_designe_geometric_representation_context =0; AttrDescriptor *a_135coordinate_space_dimension =0; @@ -18270,14 +31222,74 @@ SdaiGeometric_representation_context::SdaiGeometric_representation_context( ) eDesc = config_control_designe_geometric_representation_context; - STEPattribute * a = new STEPattribute (*a_135coordinate_space_dimension, &_coordinate_space_dimension); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_135coordinate_space_dimension, &_coordinate_space_dimension); +#else + STEPattribute *a = new STEPattribute(*a_135coordinate_space_dimension, &_coordinate_space_dimension); +#endif a -> set_null (); attributes.push (a); } SdaiGeometric_representation_context::SdaiGeometric_representation_context (SdaiGeometric_representation_context& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiGeometric_representation_context::~SdaiGeometric_representation_context () { } -SdaiGeometric_representation_context::SdaiGeometric_representation_context (STEPentity *se ) : SdaiRepresentation_context(se) + +#ifdef __OSTORE__ + +void +SdaiGeometric_representation_context::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiGeometric_representation_context: virtual access function." << G4endl; + SdaiGeometric_representation_context_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiGeometric_representation_context_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiGeometric_representation_context: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiGeometric_representation_context *ent = (SdaiGeometric_representation_context *)sent; +// SdaiGeometric_representation_context *ent = (SdaiGeometric_representation_context *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_geometric_representation_context; + ent->attributes[2].aDesc = a_135coordinate_space_dimension; +} + +SCLP23(Application_instance_ptr) +create_SdaiGeometric_representation_context(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiGeometric_representation_context::get_os_typespec()) + SdaiGeometric_representation_context; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiGeometric_representation_context::get_os_typespec()) +// SdaiGeometric_representation_context; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiGeometric_representation_context; +} +#endif + +#ifdef __O3DB__ +void +SdaiGeometric_representation_context::oodb_reInit () +{ eDesc = config_control_designe_geometric_representation_context; + attributes [2].aDesc = a_135coordinate_space_dimension; +} +#endif + +SdaiGeometric_representation_context::SdaiGeometric_representation_context (SCLP23(Application_instance) *se, int *addAttrs) : SdaiRepresentation_context(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -18288,30 +31300,42 @@ SdaiGeometric_representation_context::SdaiGeometric_representation_context (STEP eDesc = config_control_designe_geometric_representation_context; - STEPattribute * a = new STEPattribute (*a_135coordinate_space_dimension, &_coordinate_space_dimension); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_135coordinate_space_dimension, &_coordinate_space_dimension); +#else + STEPattribute *a = new STEPattribute(*a_135coordinate_space_dimension, &_coordinate_space_dimension); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiDimension_count -SdaiGeometric_representation_context::Coordinate_space_dimension() const - { return (const SdaiDimension_count) _coordinate_space_dimension; } +SdaiGeometric_representation_context::coordinate_space_dimension_() const +{ + return (SdaiDimension_count) _coordinate_space_dimension; +} void -SdaiGeometric_representation_context::Coordinate_space_dimension (SdaiDimension_count x) - { _coordinate_space_dimension = x; } +SdaiGeometric_representation_context::coordinate_space_dimension_ (const SdaiDimension_count x) + +{ + _coordinate_space_dimension = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY geometric_representation_context +///////// END_ENTITY geometric_representation_context -///////// ENTITY action_status +///////// ENTITY action_status EntityDescriptor *config_control_designe_action_status =0; AttrDescriptor *a_136status =0; @@ -18323,18 +31347,88 @@ SdaiAction_status::SdaiAction_status( ) eDesc = config_control_designe_action_status; - STEPattribute * a = new STEPattribute (*a_136status, &_status); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_136status, &_status); +#else + STEPattribute *a = new STEPattribute(*a_136status, &_status); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_137assigned_action, (STEPentityH *) &_assigned_action); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_137assigned_action, (SCLP23(Application_instance_ptr) *) &_assigned_action); +#else + a = new STEPattribute(*a_137assigned_action, (SCLP23(Application_instance_ptr) *) &_assigned_action); +#endif a -> set_null (); attributes.push (a); } SdaiAction_status::SdaiAction_status (SdaiAction_status& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiAction_status::~SdaiAction_status () { } -SdaiAction_status::SdaiAction_status( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiAction_status::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAction_status: virtual access function." << G4endl; + SdaiAction_status_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiAction_status_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAction_status: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiAction_status *ent = (SdaiAction_status *)sent; +// SdaiAction_status *ent = (SdaiAction_status *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_action_status; + ent->attributes[0].aDesc = a_136status; + ent->attributes[1].aDesc = a_137assigned_action; + if(ent->_assigned_action == 0) + ent->_assigned_action = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiAction_status(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiAction_status::get_os_typespec()) + SdaiAction_status; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiAction_status::get_os_typespec()) +// SdaiAction_status; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiAction_status; +} +#endif + +#ifdef __O3DB__ +void +SdaiAction_status::oodb_reInit () +{ eDesc = config_control_designe_action_status; + attributes [0].aDesc = a_136status; + attributes [1].aDesc = a_137assigned_action; +} +#endif + +SdaiAction_status::SdaiAction_status( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -18343,49 +31437,73 @@ SdaiAction_status::SdaiAction_status( STEPentity *se ) eDesc = config_control_designe_action_status; - STEPattribute * a = new STEPattribute (*a_136status, &_status); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_136status, &_status); +#else + STEPattribute *a = new STEPattribute(*a_136status, &_status); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_137assigned_action, (STEPentityH *) &_assigned_action); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_137assigned_action, (SCLP23(Application_instance_ptr) *) &_assigned_action); +#else + a = new STEPattribute(*a_137assigned_action, (SCLP23(Application_instance_ptr) *) &_assigned_action); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiAction_status::Status() const - { return (const SdaiLabel) _status; } +SdaiAction_status::status_() const +{ + return (SdaiLabel) _status; +} void -SdaiAction_status::Status (const char * x) - { _status = x; } +SdaiAction_status::status_ (const SdaiLabel x) -SdaiExecuted_actionH -SdaiAction_status::Assigned_action() const - { return (SdaiExecuted_actionH) _assigned_action; } +{ + _status = x; +} + +const SdaiExecuted_action_ptr +SdaiAction_status::assigned_action_() const +{ + return (SdaiExecuted_action_ptr) _assigned_action; +} void -SdaiAction_status::Assigned_action (SdaiExecuted_actionH x) - { _assigned_action = x; } +SdaiAction_status::assigned_action_ (const SdaiExecuted_action_ptr x) -///////// END_ENTITY action_status +{ + _assigned_action = x; +} + +///////// END_ENTITY action_status -///////// ENTITY application_context +///////// ENTITY application_context EntityDescriptor *config_control_designe_application_context =0; AttrDescriptor *a_138application =0; -InverseAttrDescriptor *a_139Icontext_elements =0; +Inverse_attribute *a_139Icontext_elements =0; SdaiApplication_context::SdaiApplication_context( ) { @@ -18393,14 +31511,74 @@ SdaiApplication_context::SdaiApplication_context( ) eDesc = config_control_designe_application_context; - STEPattribute * a = new STEPattribute (*a_138application, &_application); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_138application, &_application); +#else + STEPattribute *a = new STEPattribute(*a_138application, &_application); +#endif a -> set_null (); attributes.push (a); } SdaiApplication_context::SdaiApplication_context (SdaiApplication_context& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiApplication_context::~SdaiApplication_context () { } -SdaiApplication_context::SdaiApplication_context( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiApplication_context::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiApplication_context: virtual access function." << G4endl; + SdaiApplication_context_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiApplication_context_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiApplication_context: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiApplication_context *ent = (SdaiApplication_context *)sent; +// SdaiApplication_context *ent = (SdaiApplication_context *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_application_context; + ent->attributes[0].aDesc = a_138application; +} + +SCLP23(Application_instance_ptr) +create_SdaiApplication_context(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiApplication_context::get_os_typespec()) + SdaiApplication_context; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiApplication_context::get_os_typespec()) +// SdaiApplication_context; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiApplication_context; +} +#endif + +#ifdef __O3DB__ +void +SdaiApplication_context::oodb_reInit () +{ eDesc = config_control_designe_application_context; + attributes [0].aDesc = a_138application; +} +#endif + +SdaiApplication_context::SdaiApplication_context( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -18409,36 +31587,51 @@ SdaiApplication_context::SdaiApplication_context( STEPentity *se ) eDesc = config_control_designe_application_context; - STEPattribute * a = new STEPattribute (*a_138application, &_application); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_138application, &_application); +#else + STEPattribute *a = new STEPattribute(*a_138application, &_application); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiText -SdaiApplication_context::Application() const - { return (const SdaiText) _application; } +SdaiApplication_context::application_() const +{ + return (SdaiText) _application; +} void -SdaiApplication_context::Application (const char * x) - { _application = x; } +SdaiApplication_context::application_ (const SdaiText x) -const EntityAggregateH -SdaiApplication_context::Context_elements() const - { return (EntityAggregateH) &_context_elements; } +{ + _application = x; +} + +const EntityAggregate_ptr +SdaiApplication_context::context_elements_() const +{ + return (EntityAggregate_ptr) &_context_elements; +} void -SdaiApplication_context::Context_elements (EntityAggregateH x) +SdaiApplication_context::context_elements_ (const EntityAggregate_ptr x) + { _context_elements.ShallowCopy (*x); } -///////// END_ENTITY application_context +///////// END_ENTITY application_context -///////// ENTITY change_request +///////// ENTITY change_request EntityDescriptor *config_control_designe_change_request =0; AttrDescriptor *a_140items =0; @@ -18451,14 +31644,74 @@ SdaiChange_request::SdaiChange_request( ) eDesc = config_control_designe_change_request; - STEPattribute * a = new STEPattribute (*a_140items, &_items); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_140items, &_items); +#else + STEPattribute *a = new STEPattribute(*a_140items, &_items); +#endif a -> set_null (); attributes.push (a); } SdaiChange_request::SdaiChange_request (SdaiChange_request& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiChange_request::~SdaiChange_request () { } -SdaiChange_request::SdaiChange_request (STEPentity *se ) : SdaiAction_request_assignment(se) + +#ifdef __OSTORE__ + +void +SdaiChange_request::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiChange_request: virtual access function." << G4endl; + SdaiChange_request_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiChange_request_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiChange_request: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiChange_request *ent = (SdaiChange_request *)sent; +// SdaiChange_request *ent = (SdaiChange_request *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_change_request; + ent->attributes[1].aDesc = a_140items; +} + +SCLP23(Application_instance_ptr) +create_SdaiChange_request(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiChange_request::get_os_typespec()) + SdaiChange_request; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiChange_request::get_os_typespec()) +// SdaiChange_request; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiChange_request; +} +#endif + +#ifdef __O3DB__ +void +SdaiChange_request::oodb_reInit () +{ eDesc = config_control_designe_change_request; + attributes [1].aDesc = a_140items; +} +#endif + +SdaiChange_request::SdaiChange_request (SCLP23(Application_instance) *se, int *addAttrs) : SdaiAction_request_assignment(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -18469,30 +31722,40 @@ SdaiChange_request::SdaiChange_request (STEPentity *se ) : SdaiAction_request_as eDesc = config_control_designe_change_request; - STEPattribute * a = new STEPattribute (*a_140items, &_items); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_140items, &_items); +#else + STEPattribute *a = new STEPattribute(*a_140items, &_items); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -const SdaiChange_request_itemsH -SdaiChange_request::Items() const - { return (SdaiChange_request_itemsH) &_items; } +const SdaiChange_request_items_ptr +SdaiChange_request::items_() const +{ + return (SdaiChange_request_items_ptr) &_items; +} void -SdaiChange_request::Items (SdaiChange_request_itemsH x) +SdaiChange_request::items_ (const SdaiChange_request_items_ptr x) + { _items.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY change_request +///////// END_ENTITY change_request -///////// ENTITY date_and_time +///////// ENTITY date_and_time EntityDescriptor *config_control_designe_date_and_time =0; AttrDescriptor *a_141date_component =0; @@ -18504,18 +31767,90 @@ SdaiDate_and_time::SdaiDate_and_time( ) eDesc = config_control_designe_date_and_time; - STEPattribute * a = new STEPattribute (*a_141date_component, (STEPentityH *) &_date_component); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_141date_component, (SCLP23(Application_instance_ptr) *) &_date_component); +#else + STEPattribute *a = new STEPattribute(*a_141date_component, (SCLP23(Application_instance_ptr) *) &_date_component); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_142time_component, (STEPentityH *) &_time_component); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_142time_component, (SCLP23(Application_instance_ptr) *) &_time_component); +#else + a = new STEPattribute(*a_142time_component, (SCLP23(Application_instance_ptr) *) &_time_component); +#endif a -> set_null (); attributes.push (a); } SdaiDate_and_time::SdaiDate_and_time (SdaiDate_and_time& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiDate_and_time::~SdaiDate_and_time () { } -SdaiDate_and_time::SdaiDate_and_time( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiDate_and_time::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDate_and_time: virtual access function." << G4endl; + SdaiDate_and_time_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiDate_and_time_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDate_and_time: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiDate_and_time *ent = (SdaiDate_and_time *)sent; +// SdaiDate_and_time *ent = (SdaiDate_and_time *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_date_and_time; + ent->attributes[0].aDesc = a_141date_component; + if(ent->_date_component == 0) + ent->_date_component = S_ENTITY_NULL; + ent->attributes[1].aDesc = a_142time_component; + if(ent->_time_component == 0) + ent->_time_component = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiDate_and_time(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiDate_and_time::get_os_typespec()) + SdaiDate_and_time; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiDate_and_time::get_os_typespec()) +// SdaiDate_and_time; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiDate_and_time; +} +#endif + +#ifdef __O3DB__ +void +SdaiDate_and_time::oodb_reInit () +{ eDesc = config_control_designe_date_and_time; + attributes [0].aDesc = a_141date_component; + attributes [1].aDesc = a_142time_component; +} +#endif + +SdaiDate_and_time::SdaiDate_and_time( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -18524,45 +31859,69 @@ SdaiDate_and_time::SdaiDate_and_time( STEPentity *se ) eDesc = config_control_designe_date_and_time; - STEPattribute * a = new STEPattribute (*a_141date_component, (STEPentityH *) &_date_component); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_141date_component, (SCLP23(Application_instance_ptr) *) &_date_component); +#else + STEPattribute *a = new STEPattribute(*a_141date_component, (SCLP23(Application_instance_ptr) *) &_date_component); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_142time_component, (STEPentityH *) &_time_component); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_142time_component, (SCLP23(Application_instance_ptr) *) &_time_component); +#else + a = new STEPattribute(*a_142time_component, (SCLP23(Application_instance_ptr) *) &_time_component); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiDateH -SdaiDate_and_time::Date_component() const - { return (SdaiDateH) _date_component; } +const SdaiDate_ptr +SdaiDate_and_time::date_component_() const +{ + return (SdaiDate_ptr) _date_component; +} void -SdaiDate_and_time::Date_component (SdaiDateH x) - { _date_component = x; } +SdaiDate_and_time::date_component_ (const SdaiDate_ptr x) -SdaiLocal_timeH -SdaiDate_and_time::Time_component() const - { return (SdaiLocal_timeH) _time_component; } +{ + _date_component = x; +} + +const SdaiLocal_time_ptr +SdaiDate_and_time::time_component_() const +{ + return (SdaiLocal_time_ptr) _time_component; +} void -SdaiDate_and_time::Time_component (SdaiLocal_timeH x) - { _time_component = x; } +SdaiDate_and_time::time_component_ (const SdaiLocal_time_ptr x) -///////// END_ENTITY date_and_time +{ + _time_component = x; +} + +///////// END_ENTITY date_and_time -///////// ENTITY approval_date_time +///////// ENTITY approval_date_time EntityDescriptor *config_control_designe_approval_date_time =0; AttrDescriptor *a_143date_time =0; @@ -18574,18 +31933,88 @@ SdaiApproval_date_time::SdaiApproval_date_time( ) eDesc = config_control_designe_approval_date_time; - STEPattribute * a = new STEPattribute (*a_143date_time, &_date_time); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_143date_time, &_date_time); +#else + STEPattribute *a = new STEPattribute(*a_143date_time, &_date_time); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_144dated_approval, (STEPentityH *) &_dated_approval); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_144dated_approval, (SCLP23(Application_instance_ptr) *) &_dated_approval); +#else + a = new STEPattribute(*a_144dated_approval, (SCLP23(Application_instance_ptr) *) &_dated_approval); +#endif a -> set_null (); attributes.push (a); } SdaiApproval_date_time::SdaiApproval_date_time (SdaiApproval_date_time& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiApproval_date_time::~SdaiApproval_date_time () { } -SdaiApproval_date_time::SdaiApproval_date_time( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiApproval_date_time::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiApproval_date_time: virtual access function." << G4endl; + SdaiApproval_date_time_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiApproval_date_time_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiApproval_date_time: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiApproval_date_time *ent = (SdaiApproval_date_time *)sent; +// SdaiApproval_date_time *ent = (SdaiApproval_date_time *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_approval_date_time; + ent->attributes[0].aDesc = a_143date_time; + ent->attributes[1].aDesc = a_144dated_approval; + if(ent->_dated_approval == 0) + ent->_dated_approval = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiApproval_date_time(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiApproval_date_time::get_os_typespec()) + SdaiApproval_date_time; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiApproval_date_time::get_os_typespec()) +// SdaiApproval_date_time; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiApproval_date_time; +} +#endif + +#ifdef __O3DB__ +void +SdaiApproval_date_time::oodb_reInit () +{ eDesc = config_control_designe_approval_date_time; + attributes [0].aDesc = a_143date_time; + attributes [1].aDesc = a_144dated_approval; +} +#endif + +SdaiApproval_date_time::SdaiApproval_date_time( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -18594,45 +32023,65 @@ SdaiApproval_date_time::SdaiApproval_date_time( STEPentity *se ) eDesc = config_control_designe_approval_date_time; - STEPattribute * a = new STEPattribute (*a_143date_time, &_date_time); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_143date_time, &_date_time); +#else + STEPattribute *a = new STEPattribute(*a_143date_time, &_date_time); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_144dated_approval, (STEPentityH *) &_dated_approval); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_144dated_approval, (SCLP23(Application_instance_ptr) *) &_dated_approval); +#else + a = new STEPattribute(*a_144dated_approval, (SCLP23(Application_instance_ptr) *) &_dated_approval); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -const SdaiDate_time_selectH -SdaiApproval_date_time::Date_time() const - { return (const SdaiDate_time_selectH) &_date_time; } +const SdaiDate_time_select_ptr +SdaiApproval_date_time::date_time_() const + { return (SdaiDate_time_select_ptr) &_date_time; } void -SdaiApproval_date_time::Date_time (SdaiDate_time_selectH x) +SdaiApproval_date_time::date_time_ (const SdaiDate_time_select_ptr x) + { _date_time = x; } -SdaiApprovalH -SdaiApproval_date_time::Dated_approval() const - { return (SdaiApprovalH) _dated_approval; } +const SdaiApproval_ptr +SdaiApproval_date_time::dated_approval_() const +{ + return (SdaiApproval_ptr) _dated_approval; +} void -SdaiApproval_date_time::Dated_approval (SdaiApprovalH x) - { _dated_approval = x; } +SdaiApproval_date_time::dated_approval_ (const SdaiApproval_ptr x) -///////// END_ENTITY approval_date_time +{ + _dated_approval = x; +} + +///////// END_ENTITY approval_date_time -///////// ENTITY approval_role +///////// ENTITY approval_role EntityDescriptor *config_control_designe_approval_role =0; AttrDescriptor *a_145role =0; @@ -18643,14 +32092,74 @@ SdaiApproval_role::SdaiApproval_role( ) eDesc = config_control_designe_approval_role; - STEPattribute * a = new STEPattribute (*a_145role, &_role); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_145role, &_role); +#else + STEPattribute *a = new STEPattribute(*a_145role, &_role); +#endif a -> set_null (); attributes.push (a); } SdaiApproval_role::SdaiApproval_role (SdaiApproval_role& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiApproval_role::~SdaiApproval_role () { } -SdaiApproval_role::SdaiApproval_role( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiApproval_role::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiApproval_role: virtual access function." << G4endl; + SdaiApproval_role_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiApproval_role_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiApproval_role: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiApproval_role *ent = (SdaiApproval_role *)sent; +// SdaiApproval_role *ent = (SdaiApproval_role *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_approval_role; + ent->attributes[0].aDesc = a_145role; +} + +SCLP23(Application_instance_ptr) +create_SdaiApproval_role(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiApproval_role::get_os_typespec()) + SdaiApproval_role; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiApproval_role::get_os_typespec()) +// SdaiApproval_role; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiApproval_role; +} +#endif + +#ifdef __O3DB__ +void +SdaiApproval_role::oodb_reInit () +{ eDesc = config_control_designe_approval_role; + attributes [0].aDesc = a_145role; +} +#endif + +SdaiApproval_role::SdaiApproval_role( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -18659,28 +32168,40 @@ SdaiApproval_role::SdaiApproval_role( STEPentity *se ) eDesc = config_control_designe_approval_role; - STEPattribute * a = new STEPattribute (*a_145role, &_role); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_145role, &_role); +#else + STEPattribute *a = new STEPattribute(*a_145role, &_role); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiApproval_role::Role() const - { return (const SdaiLabel) _role; } +SdaiApproval_role::role_() const +{ + return (SdaiLabel) _role; +} void -SdaiApproval_role::Role (const char * x) - { _role = x; } +SdaiApproval_role::role_ (const SdaiLabel x) -///////// END_ENTITY approval_role +{ + _role = x; +} + +///////// END_ENTITY approval_role -///////// ENTITY application_context_element +///////// ENTITY application_context_element EntityDescriptor *config_control_designe_application_context_element =0; AttrDescriptor *a_146name =0; @@ -18692,18 +32213,88 @@ SdaiApplication_context_element::SdaiApplication_context_element( ) eDesc = config_control_designe_application_context_element; - STEPattribute * a = new STEPattribute (*a_146name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_146name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_146name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_147frame_of_reference, (STEPentityH *) &_frame_of_reference); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_147frame_of_reference, (SCLP23(Application_instance_ptr) *) &_frame_of_reference); +#else + a = new STEPattribute(*a_147frame_of_reference, (SCLP23(Application_instance_ptr) *) &_frame_of_reference); +#endif a -> set_null (); attributes.push (a); } SdaiApplication_context_element::SdaiApplication_context_element (SdaiApplication_context_element& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiApplication_context_element::~SdaiApplication_context_element () { } -SdaiApplication_context_element::SdaiApplication_context_element( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiApplication_context_element::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiApplication_context_element: virtual access function." << G4endl; + SdaiApplication_context_element_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiApplication_context_element_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiApplication_context_element: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiApplication_context_element *ent = (SdaiApplication_context_element *)sent; +// SdaiApplication_context_element *ent = (SdaiApplication_context_element *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_application_context_element; + ent->attributes[0].aDesc = a_146name; + ent->attributes[1].aDesc = a_147frame_of_reference; + if(ent->_frame_of_reference == 0) + ent->_frame_of_reference = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiApplication_context_element(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiApplication_context_element::get_os_typespec()) + SdaiApplication_context_element; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiApplication_context_element::get_os_typespec()) +// SdaiApplication_context_element; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiApplication_context_element; +} +#endif + +#ifdef __O3DB__ +void +SdaiApplication_context_element::oodb_reInit () +{ eDesc = config_control_designe_application_context_element; + attributes [0].aDesc = a_146name; + attributes [1].aDesc = a_147frame_of_reference; +} +#endif + +SdaiApplication_context_element::SdaiApplication_context_element( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -18712,45 +32303,69 @@ SdaiApplication_context_element::SdaiApplication_context_element( STEPentity *se eDesc = config_control_designe_application_context_element; - STEPattribute * a = new STEPattribute (*a_146name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_146name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_146name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_147frame_of_reference, (STEPentityH *) &_frame_of_reference); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_147frame_of_reference, (SCLP23(Application_instance_ptr) *) &_frame_of_reference); +#else + a = new STEPattribute(*a_147frame_of_reference, (SCLP23(Application_instance_ptr) *) &_frame_of_reference); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiApplication_context_element::Name() const - { return (const SdaiLabel) _name; } +SdaiApplication_context_element::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiApplication_context_element::Name (const char * x) - { _name = x; } +SdaiApplication_context_element::name_ (const SdaiLabel x) -SdaiApplication_contextH -SdaiApplication_context_element::Frame_of_reference() const - { return (SdaiApplication_contextH) _frame_of_reference; } +{ + _name = x; +} + +const SdaiApplication_context_ptr +SdaiApplication_context_element::frame_of_reference_() const +{ + return (SdaiApplication_context_ptr) _frame_of_reference; +} void -SdaiApplication_context_element::Frame_of_reference (SdaiApplication_contextH x) - { _frame_of_reference = x; } +SdaiApplication_context_element::frame_of_reference_ (const SdaiApplication_context_ptr x) -///////// END_ENTITY application_context_element +{ + _frame_of_reference = x; +} + +///////// END_ENTITY application_context_element -///////// ENTITY product_context +///////// ENTITY product_context EntityDescriptor *config_control_designe_product_context =0; AttrDescriptor *a_148discipline_type =0; @@ -18763,14 +32378,74 @@ SdaiProduct_context::SdaiProduct_context( ) eDesc = config_control_designe_product_context; - STEPattribute * a = new STEPattribute (*a_148discipline_type, &_discipline_type); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_148discipline_type, &_discipline_type); +#else + STEPattribute *a = new STEPattribute(*a_148discipline_type, &_discipline_type); +#endif a -> set_null (); attributes.push (a); } SdaiProduct_context::SdaiProduct_context (SdaiProduct_context& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiProduct_context::~SdaiProduct_context () { } -SdaiProduct_context::SdaiProduct_context (STEPentity *se ) : SdaiApplication_context_element(se) + +#ifdef __OSTORE__ + +void +SdaiProduct_context::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_context: virtual access function." << G4endl; + SdaiProduct_context_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiProduct_context_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_context: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiProduct_context *ent = (SdaiProduct_context *)sent; +// SdaiProduct_context *ent = (SdaiProduct_context *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_product_context; + ent->attributes[2].aDesc = a_148discipline_type; +} + +SCLP23(Application_instance_ptr) +create_SdaiProduct_context(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiProduct_context::get_os_typespec()) + SdaiProduct_context; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiProduct_context::get_os_typespec()) +// SdaiProduct_context; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiProduct_context; +} +#endif + +#ifdef __O3DB__ +void +SdaiProduct_context::oodb_reInit () +{ eDesc = config_control_designe_product_context; + attributes [2].aDesc = a_148discipline_type; +} +#endif + +SdaiProduct_context::SdaiProduct_context (SCLP23(Application_instance) *se, int *addAttrs) : SdaiApplication_context_element(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -18781,30 +32456,42 @@ SdaiProduct_context::SdaiProduct_context (STEPentity *se ) : SdaiApplication_con eDesc = config_control_designe_product_context; - STEPattribute * a = new STEPattribute (*a_148discipline_type, &_discipline_type); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_148discipline_type, &_discipline_type); +#else + STEPattribute *a = new STEPattribute(*a_148discipline_type, &_discipline_type); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiProduct_context::Discipline_type() const - { return (const SdaiLabel) _discipline_type; } +SdaiProduct_context::discipline_type_() const +{ + return (SdaiLabel) _discipline_type; +} void -SdaiProduct_context::Discipline_type (const char * x) - { _discipline_type = x; } +SdaiProduct_context::discipline_type_ (const SdaiLabel x) + +{ + _discipline_type = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY product_context +///////// END_ENTITY product_context -///////// ENTITY elementary_surface +///////// ENTITY elementary_surface EntityDescriptor *config_control_designe_elementary_surface =0; AttrDescriptor *a_149position =0; @@ -18817,14 +32504,77 @@ SdaiElementary_surface::SdaiElementary_surface( ) eDesc = config_control_designe_elementary_surface; - STEPattribute * a = new STEPattribute (*a_149position, (STEPentityH *) &_position); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_149position, (SCLP23(Application_instance_ptr) *) &_position); +#else + STEPattribute *a = new STEPattribute(*a_149position, (SCLP23(Application_instance_ptr) *) &_position); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiElementary_surface::SdaiElementary_surface (SdaiElementary_surface& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiElementary_surface::~SdaiElementary_surface () { } -SdaiElementary_surface::SdaiElementary_surface (STEPentity *se ) : SdaiSurface(se) + +#ifdef __OSTORE__ + +void +SdaiElementary_surface::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiElementary_surface: virtual access function." << G4endl; + SdaiElementary_surface_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiElementary_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiElementary_surface: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiElementary_surface *ent = (SdaiElementary_surface *)sent; +// SdaiElementary_surface *ent = (SdaiElementary_surface *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_elementary_surface; + ent->attributes[1].aDesc = a_149position; + if(ent->_position == 0) + ent->_position = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiElementary_surface(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiElementary_surface::get_os_typespec()) + SdaiElementary_surface; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiElementary_surface::get_os_typespec()) +// SdaiElementary_surface; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiElementary_surface; +} +#endif + +#ifdef __O3DB__ +void +SdaiElementary_surface::oodb_reInit () +{ eDesc = config_control_designe_elementary_surface; + attributes [1].aDesc = a_149position; +} +#endif + +SdaiElementary_surface::SdaiElementary_surface (SCLP23(Application_instance) *se, int *addAttrs) : SdaiSurface(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -18835,30 +32585,43 @@ SdaiElementary_surface::SdaiElementary_surface (STEPentity *se ) : SdaiSurface(s eDesc = config_control_designe_elementary_surface; - STEPattribute * a = new STEPattribute (*a_149position, (STEPentityH *) &_position); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_149position, (SCLP23(Application_instance_ptr) *) &_position); +#else + STEPattribute *a = new STEPattribute(*a_149position, (SCLP23(Application_instance_ptr) *) &_position); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -SdaiAxis2_placement_3dH -SdaiElementary_surface::Position() const - { return (SdaiAxis2_placement_3dH) _position; } +const SdaiAxis2_placement_3d_ptr +SdaiElementary_surface::position_() const +{ + return (SdaiAxis2_placement_3d_ptr) _position; +} void -SdaiElementary_surface::Position (SdaiAxis2_placement_3dH x) - { _position = x; } +SdaiElementary_surface::position_ (const SdaiAxis2_placement_3d_ptr x) + +{ + _position = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY elementary_surface +///////// END_ENTITY elementary_surface -///////// ENTITY spherical_surface +///////// ENTITY spherical_surface EntityDescriptor *config_control_designe_spherical_surface =0; AttrDescriptor *a_150radius =0; @@ -18871,14 +32634,75 @@ SdaiSpherical_surface::SdaiSpherical_surface( ) eDesc = config_control_designe_spherical_surface; - STEPattribute * a = new STEPattribute (*a_150radius, &_radius); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_150radius, &_radius); +#else + STEPattribute *a = new STEPattribute(*a_150radius, &_radius); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiSpherical_surface::SdaiSpherical_surface (SdaiSpherical_surface& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiSpherical_surface::~SdaiSpherical_surface () { } -SdaiSpherical_surface::SdaiSpherical_surface (STEPentity *se ) : SdaiElementary_surface(se) + +#ifdef __OSTORE__ + +void +SdaiSpherical_surface::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSpherical_surface: virtual access function." << G4endl; + SdaiSpherical_surface_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiSpherical_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSpherical_surface: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiSpherical_surface *ent = (SdaiSpherical_surface *)sent; +// SdaiSpherical_surface *ent = (SdaiSpherical_surface *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_spherical_surface; + ent->attributes[2].aDesc = a_150radius; +} + +SCLP23(Application_instance_ptr) +create_SdaiSpherical_surface(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiSpherical_surface::get_os_typespec()) + SdaiSpherical_surface; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiSpherical_surface::get_os_typespec()) +// SdaiSpherical_surface; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiSpherical_surface; +} +#endif + +#ifdef __O3DB__ +void +SdaiSpherical_surface::oodb_reInit () +{ eDesc = config_control_designe_spherical_surface; + attributes [2].aDesc = a_150radius; +} +#endif + +SdaiSpherical_surface::SdaiSpherical_surface (SCLP23(Application_instance) *se, int *addAttrs) : SdaiElementary_surface(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -18889,30 +32713,43 @@ SdaiSpherical_surface::SdaiSpherical_surface (STEPentity *se ) : SdaiElementary_ eDesc = config_control_designe_spherical_surface; - STEPattribute * a = new STEPattribute (*a_150radius, &_radius); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_150radius, &_radius); +#else + STEPattribute *a = new STEPattribute(*a_150radius, &_radius); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } const SdaiPositive_length_measure -SdaiSpherical_surface::Radius() const - { return (const SdaiPositive_length_measure) _radius; } +SdaiSpherical_surface::radius_() const +{ + return (SdaiPositive_length_measure) _radius; +} void -SdaiSpherical_surface::Radius (SdaiPositive_length_measure x) - { _radius = x; } +SdaiSpherical_surface::radius_ (const SdaiPositive_length_measure x) + +{ + _radius = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY spherical_surface +///////// END_ENTITY spherical_surface -///////// ENTITY application_protocol_definition +///////// ENTITY application_protocol_definition EntityDescriptor *config_control_designe_application_protocol_definition =0; AttrDescriptor *a_151status =0; @@ -18926,26 +32763,112 @@ SdaiApplication_protocol_definition::SdaiApplication_protocol_definition( ) eDesc = config_control_designe_application_protocol_definition; - STEPattribute * a = new STEPattribute (*a_151status, &_status); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_151status, &_status); +#else + STEPattribute *a = new STEPattribute(*a_151status, &_status); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_152application_interpreted_model_schema_name, &_application_interpreted_model_schema_name); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_152application_interpreted_model_schema_name, &_application_interpreted_model_schema_name); +#else + a = new STEPattribute(*a_152application_interpreted_model_schema_name, &_application_interpreted_model_schema_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_153application_protocol_year, &_application_protocol_year); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_153application_protocol_year, &_application_protocol_year); +#else + a = new STEPattribute(*a_153application_protocol_year, &_application_protocol_year); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_154application, (STEPentityH *) &_application); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_154application, (SCLP23(Application_instance_ptr) *) &_application); +#else + a = new STEPattribute(*a_154application, (SCLP23(Application_instance_ptr) *) &_application); +#endif a -> set_null (); attributes.push (a); } SdaiApplication_protocol_definition::SdaiApplication_protocol_definition (SdaiApplication_protocol_definition& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiApplication_protocol_definition::~SdaiApplication_protocol_definition () { } -SdaiApplication_protocol_definition::SdaiApplication_protocol_definition( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiApplication_protocol_definition::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiApplication_protocol_definition: virtual access function." << G4endl; + SdaiApplication_protocol_definition_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiApplication_protocol_definition_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiApplication_protocol_definition: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiApplication_protocol_definition *ent = (SdaiApplication_protocol_definition *)sent; +// SdaiApplication_protocol_definition *ent = (SdaiApplication_protocol_definition *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_application_protocol_definition; + ent->attributes[0].aDesc = a_151status; + ent->attributes[1].aDesc = a_152application_interpreted_model_schema_name; + ent->attributes[2].aDesc = a_153application_protocol_year; + ent->attributes[3].aDesc = a_154application; + if(ent->_application == 0) + ent->_application = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiApplication_protocol_definition(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiApplication_protocol_definition::get_os_typespec()) + SdaiApplication_protocol_definition; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiApplication_protocol_definition::get_os_typespec()) +// SdaiApplication_protocol_definition; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiApplication_protocol_definition; +} +#endif + +#ifdef __O3DB__ +void +SdaiApplication_protocol_definition::oodb_reInit () +{ eDesc = config_control_designe_application_protocol_definition; + attributes [0].aDesc = a_151status; + attributes [1].aDesc = a_152application_interpreted_model_schema_name; + attributes [2].aDesc = a_153application_protocol_year; + attributes [3].aDesc = a_154application; +} +#endif + +SdaiApplication_protocol_definition::SdaiApplication_protocol_definition( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -18954,79 +32877,127 @@ SdaiApplication_protocol_definition::SdaiApplication_protocol_definition( STEPen eDesc = config_control_designe_application_protocol_definition; - STEPattribute * a = new STEPattribute (*a_151status, &_status); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_151status, &_status); +#else + STEPattribute *a = new STEPattribute(*a_151status, &_status); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_152application_interpreted_model_schema_name, &_application_interpreted_model_schema_name); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_152application_interpreted_model_schema_name, &_application_interpreted_model_schema_name); +#else + a = new STEPattribute(*a_152application_interpreted_model_schema_name, &_application_interpreted_model_schema_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_153application_protocol_year, &_application_protocol_year); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_153application_protocol_year, &_application_protocol_year); +#else + a = new STEPattribute(*a_153application_protocol_year, &_application_protocol_year); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_154application, (STEPentityH *) &_application); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_154application, (SCLP23(Application_instance_ptr) *) &_application); +#else + a = new STEPattribute(*a_154application, (SCLP23(Application_instance_ptr) *) &_application); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiApplication_protocol_definition::Status() const - { return (const SdaiLabel) _status; } +SdaiApplication_protocol_definition::status_() const +{ + return (SdaiLabel) _status; +} void -SdaiApplication_protocol_definition::Status (const char * x) - { _status = x; } +SdaiApplication_protocol_definition::status_ (const SdaiLabel x) + +{ + _status = x; +} const SdaiLabel -SdaiApplication_protocol_definition::Application_interpreted_model_schema_name() const - { return (const SdaiLabel) _application_interpreted_model_schema_name; } +SdaiApplication_protocol_definition::application_interpreted_model_schema_name_() const +{ + return (SdaiLabel) _application_interpreted_model_schema_name; +} void -SdaiApplication_protocol_definition::Application_interpreted_model_schema_name (const char * x) - { _application_interpreted_model_schema_name = x; } +SdaiApplication_protocol_definition::application_interpreted_model_schema_name_ (const SdaiLabel x) + +{ + _application_interpreted_model_schema_name = x; +} const SdaiYear_number -SdaiApplication_protocol_definition::Application_protocol_year() const - { return (const SdaiYear_number) _application_protocol_year; } +SdaiApplication_protocol_definition::application_protocol_year_() const +{ + return (SdaiYear_number) _application_protocol_year; +} void -SdaiApplication_protocol_definition::Application_protocol_year (SdaiYear_number x) - { _application_protocol_year = x; } +SdaiApplication_protocol_definition::application_protocol_year_ (const SdaiYear_number x) -SdaiApplication_contextH -SdaiApplication_protocol_definition::Application() const - { return (SdaiApplication_contextH) _application; } +{ + _application_protocol_year = x; +} + +const SdaiApplication_context_ptr +SdaiApplication_protocol_definition::application_() const +{ + return (SdaiApplication_context_ptr) _application; +} void -SdaiApplication_protocol_definition::Application (SdaiApplication_contextH x) - { _application = x; } +SdaiApplication_protocol_definition::application_ (const SdaiApplication_context_ptr x) -///////// END_ENTITY application_protocol_definition +{ + _application = x; +} + +///////// END_ENTITY application_protocol_definition -///////// ENTITY specified_higher_usage_occurrence +///////// ENTITY specified_higher_usage_occurrence EntityDescriptor *config_control_designe_specified_higher_usage_occurrence =0; AttrDescriptor *a_155upper_usage =0; @@ -19040,18 +33011,90 @@ SdaiSpecified_higher_usage_occurrence::SdaiSpecified_higher_usage_occurrence( ) eDesc = config_control_designe_specified_higher_usage_occurrence; - STEPattribute * a = new STEPattribute (*a_155upper_usage, (STEPentityH *) &_upper_usage); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_155upper_usage, (SCLP23(Application_instance_ptr) *) &_upper_usage); +#else + STEPattribute *a = new STEPattribute(*a_155upper_usage, (SCLP23(Application_instance_ptr) *) &_upper_usage); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_156next_usage, (STEPentityH *) &_next_usage); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_156next_usage, (SCLP23(Application_instance_ptr) *) &_next_usage); +#else + a = new STEPattribute(*a_156next_usage, (SCLP23(Application_instance_ptr) *) &_next_usage); +#endif a -> set_null (); attributes.push (a); } SdaiSpecified_higher_usage_occurrence::SdaiSpecified_higher_usage_occurrence (SdaiSpecified_higher_usage_occurrence& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiSpecified_higher_usage_occurrence::~SdaiSpecified_higher_usage_occurrence () { } -SdaiSpecified_higher_usage_occurrence::SdaiSpecified_higher_usage_occurrence (STEPentity *se ) : SdaiAssembly_component_usage(se) + +#ifdef __OSTORE__ + +void +SdaiSpecified_higher_usage_occurrence::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSpecified_higher_usage_occurrence: virtual access function." << G4endl; + SdaiSpecified_higher_usage_occurrence_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiSpecified_higher_usage_occurrence_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSpecified_higher_usage_occurrence: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiSpecified_higher_usage_occurrence *ent = (SdaiSpecified_higher_usage_occurrence *)sent; +// SdaiSpecified_higher_usage_occurrence *ent = (SdaiSpecified_higher_usage_occurrence *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_specified_higher_usage_occurrence; + ent->attributes[6].aDesc = a_155upper_usage; + if(ent->_upper_usage == 0) + ent->_upper_usage = S_ENTITY_NULL; + ent->attributes[7].aDesc = a_156next_usage; + if(ent->_next_usage == 0) + ent->_next_usage = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiSpecified_higher_usage_occurrence(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiSpecified_higher_usage_occurrence::get_os_typespec()) + SdaiSpecified_higher_usage_occurrence; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiSpecified_higher_usage_occurrence::get_os_typespec()) +// SdaiSpecified_higher_usage_occurrence; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiSpecified_higher_usage_occurrence; +} +#endif + +#ifdef __O3DB__ +void +SdaiSpecified_higher_usage_occurrence::oodb_reInit () +{ eDesc = config_control_designe_specified_higher_usage_occurrence; + attributes [6].aDesc = a_155upper_usage; + attributes [7].aDesc = a_156next_usage; +} +#endif + +SdaiSpecified_higher_usage_occurrence::SdaiSpecified_higher_usage_occurrence (SCLP23(Application_instance) *se, int *addAttrs) : SdaiAssembly_component_usage(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -19062,47 +33105,71 @@ SdaiSpecified_higher_usage_occurrence::SdaiSpecified_higher_usage_occurrence (ST eDesc = config_control_designe_specified_higher_usage_occurrence; - STEPattribute * a = new STEPattribute (*a_155upper_usage, (STEPentityH *) &_upper_usage); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_155upper_usage, (SCLP23(Application_instance_ptr) *) &_upper_usage); +#else + STEPattribute *a = new STEPattribute(*a_155upper_usage, (SCLP23(Application_instance_ptr) *) &_upper_usage); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_156next_usage, (STEPentityH *) &_next_usage); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_156next_usage, (SCLP23(Application_instance_ptr) *) &_next_usage); +#else + a = new STEPattribute(*a_156next_usage, (SCLP23(Application_instance_ptr) *) &_next_usage); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiAssembly_component_usageH -SdaiSpecified_higher_usage_occurrence::Upper_usage() const - { return (SdaiAssembly_component_usageH) _upper_usage; } +const SdaiAssembly_component_usage_ptr +SdaiSpecified_higher_usage_occurrence::upper_usage_() const +{ + return (SdaiAssembly_component_usage_ptr) _upper_usage; +} void -SdaiSpecified_higher_usage_occurrence::Upper_usage (SdaiAssembly_component_usageH x) - { _upper_usage = x; } +SdaiSpecified_higher_usage_occurrence::upper_usage_ (const SdaiAssembly_component_usage_ptr x) -SdaiNext_assembly_usage_occurrenceH -SdaiSpecified_higher_usage_occurrence::Next_usage() const - { return (SdaiNext_assembly_usage_occurrenceH) _next_usage; } +{ + _upper_usage = x; +} + +const SdaiNext_assembly_usage_occurrence_ptr +SdaiSpecified_higher_usage_occurrence::next_usage_() const +{ + return (SdaiNext_assembly_usage_occurrence_ptr) _next_usage; +} void -SdaiSpecified_higher_usage_occurrence::Next_usage (SdaiNext_assembly_usage_occurrenceH x) - { _next_usage = x; } +SdaiSpecified_higher_usage_occurrence::next_usage_ (const SdaiNext_assembly_usage_occurrence_ptr x) + +{ + _next_usage = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY specified_higher_usage_occurrence +///////// END_ENTITY specified_higher_usage_occurrence -///////// ENTITY product_definition_formation_with_specified_source +///////// ENTITY product_definition_formation_with_specified_source EntityDescriptor *config_control_designe_product_definition_formation_with_specified_source =0; AttrDescriptor *a_157make_or_buy =0; @@ -19115,14 +33182,74 @@ SdaiProduct_definition_formation_with_specified_source::SdaiProduct_definition_f eDesc = config_control_designe_product_definition_formation_with_specified_source; - STEPattribute * a = new STEPattribute (*a_157make_or_buy, &_make_or_buy); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_157make_or_buy, &_make_or_buy); +#else + STEPattribute *a = new STEPattribute(*a_157make_or_buy, &_make_or_buy); +#endif a -> set_null (); attributes.push (a); } SdaiProduct_definition_formation_with_specified_source::SdaiProduct_definition_formation_with_specified_source (SdaiProduct_definition_formation_with_specified_source& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiProduct_definition_formation_with_specified_source::~SdaiProduct_definition_formation_with_specified_source () { } -SdaiProduct_definition_formation_with_specified_source::SdaiProduct_definition_formation_with_specified_source (STEPentity *se ) : SdaiProduct_definition_formation(se) + +#ifdef __OSTORE__ + +void +SdaiProduct_definition_formation_with_specified_source::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_definition_formation_with_specified_source: virtual access function." << G4endl; + SdaiProduct_definition_formation_with_specified_source_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiProduct_definition_formation_with_specified_source_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_definition_formation_with_specified_source: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiProduct_definition_formation_with_specified_source *ent = (SdaiProduct_definition_formation_with_specified_source *)sent; +// SdaiProduct_definition_formation_with_specified_source *ent = (SdaiProduct_definition_formation_with_specified_source *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_product_definition_formation_with_specified_source; + ent->attributes[3].aDesc = a_157make_or_buy; +} + +SCLP23(Application_instance_ptr) +create_SdaiProduct_definition_formation_with_specified_source(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiProduct_definition_formation_with_specified_source::get_os_typespec()) + SdaiProduct_definition_formation_with_specified_source; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiProduct_definition_formation_with_specified_source::get_os_typespec()) +// SdaiProduct_definition_formation_with_specified_source; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiProduct_definition_formation_with_specified_source; +} +#endif + +#ifdef __O3DB__ +void +SdaiProduct_definition_formation_with_specified_source::oodb_reInit () +{ eDesc = config_control_designe_product_definition_formation_with_specified_source; + attributes [3].aDesc = a_157make_or_buy; +} +#endif + +SdaiProduct_definition_formation_with_specified_source::SdaiProduct_definition_formation_with_specified_source (SCLP23(Application_instance) *se, int *addAttrs) : SdaiProduct_definition_formation(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -19133,30 +33260,42 @@ SdaiProduct_definition_formation_with_specified_source::SdaiProduct_definition_f eDesc = config_control_designe_product_definition_formation_with_specified_source; - STEPattribute * a = new STEPattribute (*a_157make_or_buy, &_make_or_buy); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_157make_or_buy, &_make_or_buy); +#else + STEPattribute *a = new STEPattribute(*a_157make_or_buy, &_make_or_buy); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -const sdaiSource -SdaiProduct_definition_formation_with_specified_source::Make_or_buy() const - { return (sdaiSource) _make_or_buy; } +const SdaiSource_var +SdaiProduct_definition_formation_with_specified_source::make_or_buy_() const +{ + return (Source) _make_or_buy; +} void -SdaiProduct_definition_formation_with_specified_source::Make_or_buy (sdaiSource x) - { _make_or_buy.put (x); } +SdaiProduct_definition_formation_with_specified_source::make_or_buy_ (const SdaiSource_var x) + +{ + _make_or_buy.put (x); +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY product_definition_formation_with_specified_source +///////// END_ENTITY product_definition_formation_with_specified_source -///////// ENTITY action_request_solution +///////// ENTITY action_request_solution EntityDescriptor *config_control_designe_action_request_solution =0; AttrDescriptor *a_158method =0; @@ -19168,18 +33307,90 @@ SdaiAction_request_solution::SdaiAction_request_solution( ) eDesc = config_control_designe_action_request_solution; - STEPattribute * a = new STEPattribute (*a_158method, (STEPentityH *) &_method); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_158method, (SCLP23(Application_instance_ptr) *) &_method); +#else + STEPattribute *a = new STEPattribute(*a_158method, (SCLP23(Application_instance_ptr) *) &_method); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_159request, (STEPentityH *) &_request); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_159request, (SCLP23(Application_instance_ptr) *) &_request); +#else + a = new STEPattribute(*a_159request, (SCLP23(Application_instance_ptr) *) &_request); +#endif a -> set_null (); attributes.push (a); } SdaiAction_request_solution::SdaiAction_request_solution (SdaiAction_request_solution& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiAction_request_solution::~SdaiAction_request_solution () { } -SdaiAction_request_solution::SdaiAction_request_solution( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiAction_request_solution::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAction_request_solution: virtual access function." << G4endl; + SdaiAction_request_solution_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiAction_request_solution_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAction_request_solution: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiAction_request_solution *ent = (SdaiAction_request_solution *)sent; +// SdaiAction_request_solution *ent = (SdaiAction_request_solution *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_action_request_solution; + ent->attributes[0].aDesc = a_158method; + if(ent->_method == 0) + ent->_method = S_ENTITY_NULL; + ent->attributes[1].aDesc = a_159request; + if(ent->_request == 0) + ent->_request = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiAction_request_solution(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiAction_request_solution::get_os_typespec()) + SdaiAction_request_solution; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiAction_request_solution::get_os_typespec()) +// SdaiAction_request_solution; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiAction_request_solution; +} +#endif + +#ifdef __O3DB__ +void +SdaiAction_request_solution::oodb_reInit () +{ eDesc = config_control_designe_action_request_solution; + attributes [0].aDesc = a_158method; + attributes [1].aDesc = a_159request; +} +#endif + +SdaiAction_request_solution::SdaiAction_request_solution( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -19188,45 +33399,69 @@ SdaiAction_request_solution::SdaiAction_request_solution( STEPentity *se ) eDesc = config_control_designe_action_request_solution; - STEPattribute * a = new STEPattribute (*a_158method, (STEPentityH *) &_method); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_158method, (SCLP23(Application_instance_ptr) *) &_method); +#else + STEPattribute *a = new STEPattribute(*a_158method, (SCLP23(Application_instance_ptr) *) &_method); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_159request, (STEPentityH *) &_request); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_159request, (SCLP23(Application_instance_ptr) *) &_request); +#else + a = new STEPattribute(*a_159request, (SCLP23(Application_instance_ptr) *) &_request); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiAction_methodH -SdaiAction_request_solution::Method() const - { return (SdaiAction_methodH) _method; } +const SdaiAction_method_ptr +SdaiAction_request_solution::method_() const +{ + return (SdaiAction_method_ptr) _method; +} void -SdaiAction_request_solution::Method (SdaiAction_methodH x) - { _method = x; } +SdaiAction_request_solution::method_ (const SdaiAction_method_ptr x) -SdaiVersioned_action_requestH -SdaiAction_request_solution::Request() const - { return (SdaiVersioned_action_requestH) _request; } +{ + _method = x; +} + +const SdaiVersioned_action_request_ptr +SdaiAction_request_solution::request_() const +{ + return (SdaiVersioned_action_request_ptr) _request; +} void -SdaiAction_request_solution::Request (SdaiVersioned_action_requestH x) - { _request = x; } +SdaiAction_request_solution::request_ (const SdaiVersioned_action_request_ptr x) -///////// END_ENTITY action_request_solution +{ + _request = x; +} + +///////// END_ENTITY action_request_solution -///////// ENTITY uncertainty_measure_with_unit +///////// ENTITY uncertainty_measure_with_unit EntityDescriptor *config_control_designe_uncertainty_measure_with_unit =0; AttrDescriptor *a_160name =0; @@ -19240,18 +33475,86 @@ SdaiUncertainty_measure_with_unit::SdaiUncertainty_measure_with_unit( ) eDesc = config_control_designe_uncertainty_measure_with_unit; - STEPattribute * a = new STEPattribute (*a_160name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_160name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_160name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_161description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_161description, &_description); +#else + a = new STEPattribute(*a_161description, &_description); +#endif a -> set_null (); attributes.push (a); } SdaiUncertainty_measure_with_unit::SdaiUncertainty_measure_with_unit (SdaiUncertainty_measure_with_unit& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiUncertainty_measure_with_unit::~SdaiUncertainty_measure_with_unit () { } -SdaiUncertainty_measure_with_unit::SdaiUncertainty_measure_with_unit (STEPentity *se ) : SdaiMeasure_with_unit(se) + +#ifdef __OSTORE__ + +void +SdaiUncertainty_measure_with_unit::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiUncertainty_measure_with_unit: virtual access function." << G4endl; + SdaiUncertainty_measure_with_unit_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiUncertainty_measure_with_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiUncertainty_measure_with_unit: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiUncertainty_measure_with_unit *ent = (SdaiUncertainty_measure_with_unit *)sent; +// SdaiUncertainty_measure_with_unit *ent = (SdaiUncertainty_measure_with_unit *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_uncertainty_measure_with_unit; + ent->attributes[2].aDesc = a_160name; + ent->attributes[3].aDesc = a_161description; +} + +SCLP23(Application_instance_ptr) +create_SdaiUncertainty_measure_with_unit(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiUncertainty_measure_with_unit::get_os_typespec()) + SdaiUncertainty_measure_with_unit; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiUncertainty_measure_with_unit::get_os_typespec()) +// SdaiUncertainty_measure_with_unit; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiUncertainty_measure_with_unit; +} +#endif + +#ifdef __O3DB__ +void +SdaiUncertainty_measure_with_unit::oodb_reInit () +{ eDesc = config_control_designe_uncertainty_measure_with_unit; + attributes [2].aDesc = a_160name; + attributes [3].aDesc = a_161description; +} +#endif + +SdaiUncertainty_measure_with_unit::SdaiUncertainty_measure_with_unit (SCLP23(Application_instance) *se, int *addAttrs) : SdaiMeasure_with_unit(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -19262,47 +33565,71 @@ SdaiUncertainty_measure_with_unit::SdaiUncertainty_measure_with_unit (STEPentity eDesc = config_control_designe_uncertainty_measure_with_unit; - STEPattribute * a = new STEPattribute (*a_160name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_160name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_160name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_161description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_161description, &_description); +#else + a = new STEPattribute(*a_161description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiUncertainty_measure_with_unit::Name() const - { return (const SdaiLabel) _name; } +SdaiUncertainty_measure_with_unit::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiUncertainty_measure_with_unit::Name (const char * x) - { _name = x; } +SdaiUncertainty_measure_with_unit::name_ (const SdaiLabel x) + +{ + _name = x; +} const SdaiText -SdaiUncertainty_measure_with_unit::Description() const - { return (const SdaiText) _description; } +SdaiUncertainty_measure_with_unit::description_() const +{ + return (SdaiText) _description; +} void -SdaiUncertainty_measure_with_unit::Description (const char * x) - { _description = x; } +SdaiUncertainty_measure_with_unit::description_ (const SdaiText x) + +{ + _description = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY uncertainty_measure_with_unit +///////// END_ENTITY uncertainty_measure_with_unit -///////// ENTITY edge_based_wireframe_model +///////// ENTITY edge_based_wireframe_model EntityDescriptor *config_control_designe_edge_based_wireframe_model =0; AttrDescriptor *a_162ebwm_boundary =0; @@ -19315,14 +33642,75 @@ SdaiEdge_based_wireframe_model::SdaiEdge_based_wireframe_model( ) eDesc = config_control_designe_edge_based_wireframe_model; - STEPattribute * a = new STEPattribute (*a_162ebwm_boundary, &_ebwm_boundary); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_162ebwm_boundary, &_ebwm_boundary); +#else + STEPattribute *a = new STEPattribute(*a_162ebwm_boundary, &_ebwm_boundary); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiEdge_based_wireframe_model::SdaiEdge_based_wireframe_model (SdaiEdge_based_wireframe_model& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiEdge_based_wireframe_model::~SdaiEdge_based_wireframe_model () { } -SdaiEdge_based_wireframe_model::SdaiEdge_based_wireframe_model (STEPentity *se ) : SdaiGeometric_representation_item(se) + +#ifdef __OSTORE__ + +void +SdaiEdge_based_wireframe_model::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiEdge_based_wireframe_model: virtual access function." << G4endl; + SdaiEdge_based_wireframe_model_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiEdge_based_wireframe_model_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiEdge_based_wireframe_model: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiEdge_based_wireframe_model *ent = (SdaiEdge_based_wireframe_model *)sent; +// SdaiEdge_based_wireframe_model *ent = (SdaiEdge_based_wireframe_model *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_edge_based_wireframe_model; + ent->attributes[1].aDesc = a_162ebwm_boundary; +} + +SCLP23(Application_instance_ptr) +create_SdaiEdge_based_wireframe_model(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiEdge_based_wireframe_model::get_os_typespec()) + SdaiEdge_based_wireframe_model; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiEdge_based_wireframe_model::get_os_typespec()) +// SdaiEdge_based_wireframe_model; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiEdge_based_wireframe_model; +} +#endif + +#ifdef __O3DB__ +void +SdaiEdge_based_wireframe_model::oodb_reInit () +{ eDesc = config_control_designe_edge_based_wireframe_model; + attributes [1].aDesc = a_162ebwm_boundary; +} +#endif + +SdaiEdge_based_wireframe_model::SdaiEdge_based_wireframe_model (SCLP23(Application_instance) *se, int *addAttrs) : SdaiGeometric_representation_item(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -19333,30 +33721,41 @@ SdaiEdge_based_wireframe_model::SdaiEdge_based_wireframe_model (STEPentity *se ) eDesc = config_control_designe_edge_based_wireframe_model; - STEPattribute * a = new STEPattribute (*a_162ebwm_boundary, &_ebwm_boundary); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_162ebwm_boundary, &_ebwm_boundary); +#else + STEPattribute *a = new STEPattribute(*a_162ebwm_boundary, &_ebwm_boundary); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -const EntityAggregateH -SdaiEdge_based_wireframe_model::Ebwm_boundary() const - { return (EntityAggregateH) &_ebwm_boundary; } +const EntityAggregate_ptr +SdaiEdge_based_wireframe_model::ebwm_boundary_() const +{ + return (EntityAggregate_ptr) &_ebwm_boundary; +} void -SdaiEdge_based_wireframe_model::Ebwm_boundary (EntityAggregateH x) +SdaiEdge_based_wireframe_model::ebwm_boundary_ (const EntityAggregate_ptr x) + { _ebwm_boundary.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY edge_based_wireframe_model +///////// END_ENTITY edge_based_wireframe_model -///////// ENTITY path +///////// ENTITY path EntityDescriptor *config_control_designe_path =0; AttrDescriptor *a_163edge_list =0; @@ -19369,14 +33768,74 @@ SdaiPath::SdaiPath( ) eDesc = config_control_designe_path; - STEPattribute * a = new STEPattribute (*a_163edge_list, &_edge_list); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_163edge_list, &_edge_list); +#else + STEPattribute *a = new STEPattribute(*a_163edge_list, &_edge_list); +#endif a -> set_null (); attributes.push (a); } SdaiPath::SdaiPath (SdaiPath& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiPath::~SdaiPath () { } -SdaiPath::SdaiPath (STEPentity *se ) : SdaiTopological_representation_item(se) + +#ifdef __OSTORE__ + +void +SdaiPath::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPath: virtual access function." << G4endl; + SdaiPath_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiPath_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPath: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiPath *ent = (SdaiPath *)sent; +// SdaiPath *ent = (SdaiPath *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_path; + ent->attributes[1].aDesc = a_163edge_list; +} + +SCLP23(Application_instance_ptr) +create_SdaiPath(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiPath::get_os_typespec()) + SdaiPath; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiPath::get_os_typespec()) +// SdaiPath; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiPath; +} +#endif + +#ifdef __O3DB__ +void +SdaiPath::oodb_reInit () +{ eDesc = config_control_designe_path; + attributes [1].aDesc = a_163edge_list; +} +#endif + +SdaiPath::SdaiPath (SCLP23(Application_instance) *se, int *addAttrs) : SdaiTopological_representation_item(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -19387,30 +33846,40 @@ SdaiPath::SdaiPath (STEPentity *se ) : SdaiTopological_representation_item(se) eDesc = config_control_designe_path; - STEPattribute * a = new STEPattribute (*a_163edge_list, &_edge_list); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_163edge_list, &_edge_list); +#else + STEPattribute *a = new STEPattribute(*a_163edge_list, &_edge_list); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -const EntityAggregateH -SdaiPath::Edge_list() const - { return (EntityAggregateH) &_edge_list; } +const EntityAggregate_ptr +SdaiPath::edge_list_() const +{ + return (EntityAggregate_ptr) &_edge_list; +} void -SdaiPath::Edge_list (EntityAggregateH x) +SdaiPath::edge_list_ (const EntityAggregate_ptr x) + { _edge_list.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY path +///////// END_ENTITY path -///////// ENTITY connected_face_set +///////// ENTITY connected_face_set EntityDescriptor *config_control_designe_connected_face_set =0; AttrDescriptor *a_164cfs_faces =0; @@ -19423,14 +33892,74 @@ SdaiConnected_face_set::SdaiConnected_face_set( ) eDesc = config_control_designe_connected_face_set; - STEPattribute * a = new STEPattribute (*a_164cfs_faces, &_cfs_faces); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_164cfs_faces, &_cfs_faces); +#else + STEPattribute *a = new STEPattribute(*a_164cfs_faces, &_cfs_faces); +#endif a -> set_null (); attributes.push (a); } SdaiConnected_face_set::SdaiConnected_face_set (SdaiConnected_face_set& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiConnected_face_set::~SdaiConnected_face_set () { } -SdaiConnected_face_set::SdaiConnected_face_set (STEPentity *se ) : SdaiTopological_representation_item(se) + +#ifdef __OSTORE__ + +void +SdaiConnected_face_set::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiConnected_face_set: virtual access function." << G4endl; + SdaiConnected_face_set_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiConnected_face_set_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiConnected_face_set: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiConnected_face_set *ent = (SdaiConnected_face_set *)sent; +// SdaiConnected_face_set *ent = (SdaiConnected_face_set *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_connected_face_set; + ent->attributes[1].aDesc = a_164cfs_faces; +} + +SCLP23(Application_instance_ptr) +create_SdaiConnected_face_set(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiConnected_face_set::get_os_typespec()) + SdaiConnected_face_set; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiConnected_face_set::get_os_typespec()) +// SdaiConnected_face_set; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiConnected_face_set; +} +#endif + +#ifdef __O3DB__ +void +SdaiConnected_face_set::oodb_reInit () +{ eDesc = config_control_designe_connected_face_set; + attributes [1].aDesc = a_164cfs_faces; +} +#endif + +SdaiConnected_face_set::SdaiConnected_face_set (SCLP23(Application_instance) *se, int *addAttrs) : SdaiTopological_representation_item(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -19441,30 +33970,40 @@ SdaiConnected_face_set::SdaiConnected_face_set (STEPentity *se ) : SdaiTopologic eDesc = config_control_designe_connected_face_set; - STEPattribute * a = new STEPattribute (*a_164cfs_faces, &_cfs_faces); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_164cfs_faces, &_cfs_faces); +#else + STEPattribute *a = new STEPattribute(*a_164cfs_faces, &_cfs_faces); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -const EntityAggregateH -SdaiConnected_face_set::Cfs_faces() const - { return (EntityAggregateH) &_cfs_faces; } +const EntityAggregate_ptr +SdaiConnected_face_set::cfs_faces_() const +{ + return (EntityAggregate_ptr) &_cfs_faces; +} void -SdaiConnected_face_set::Cfs_faces (EntityAggregateH x) +SdaiConnected_face_set::cfs_faces_ (const EntityAggregate_ptr x) + { _cfs_faces.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY connected_face_set +///////// END_ENTITY connected_face_set -///////// ENTITY open_shell +///////// ENTITY open_shell EntityDescriptor *config_control_designe_open_shell =0; SdaiOpen_shell::SdaiOpen_shell( ) @@ -19477,9 +34016,61 @@ SdaiOpen_shell::SdaiOpen_shell( ) eDesc = config_control_designe_open_shell; } SdaiOpen_shell::SdaiOpen_shell (SdaiOpen_shell& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiOpen_shell::~SdaiOpen_shell () { } -SdaiOpen_shell::SdaiOpen_shell (STEPentity *se ) : SdaiConnected_face_set(se) + +#ifdef __OSTORE__ + +void +SdaiOpen_shell::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOpen_shell: virtual access function." << G4endl; + SdaiOpen_shell_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiOpen_shell_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOpen_shell: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiOpen_shell *ent = (SdaiOpen_shell *)sent; +// SdaiOpen_shell *ent = (SdaiOpen_shell *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_open_shell; +} + +SCLP23(Application_instance_ptr) +create_SdaiOpen_shell(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiOpen_shell::get_os_typespec()) + SdaiOpen_shell; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiOpen_shell::get_os_typespec()) +// SdaiOpen_shell; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiOpen_shell; +} +#endif + +#ifdef __O3DB__ +void +SdaiOpen_shell::oodb_reInit () +{ eDesc = config_control_designe_open_shell; +} +#endif + +SdaiOpen_shell::SdaiOpen_shell (SCLP23(Application_instance) *se, int *addAttrs) : SdaiConnected_face_set(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -19493,15 +34084,15 @@ SdaiOpen_shell::SdaiOpen_shell (STEPentity *se ) : SdaiConnected_face_set(se) /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY open_shell +///////// END_ENTITY open_shell -///////// ENTITY oriented_open_shell +///////// ENTITY oriented_open_shell EntityDescriptor *config_control_designe_oriented_open_shell =0; AttrDescriptor *a_165open_shell_element =0; AttrDescriptor *a_166orientation =0; -AttrDescriptor *a_167Dconnected_face_set_cfs_faces =0; +Derived_attribute *a_167Dconnected_face_set_cfs_faces =0; SdaiOriented_open_shell::SdaiOriented_open_shell( ) { @@ -19511,19 +34102,89 @@ SdaiOriented_open_shell::SdaiOriented_open_shell( ) eDesc = config_control_designe_oriented_open_shell; - STEPattribute * a = new STEPattribute (*a_165open_shell_element, (STEPentityH *) &_open_shell_element); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_165open_shell_element, (SCLP23(Application_instance_ptr) *) &_open_shell_element); +#else + STEPattribute *a = new STEPattribute(*a_165open_shell_element, (SCLP23(Application_instance_ptr) *) &_open_shell_element); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_166orientation, &_orientation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_166orientation, &_orientation); +#else + a = new STEPattribute(*a_166orientation, &_orientation); +#endif a -> set_null (); attributes.push (a); MakeDerived ("cfs_faces"); } SdaiOriented_open_shell::SdaiOriented_open_shell (SdaiOriented_open_shell& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiOriented_open_shell::~SdaiOriented_open_shell () { } -SdaiOriented_open_shell::SdaiOriented_open_shell (STEPentity *se ) : SdaiOpen_shell(se) + +#ifdef __OSTORE__ + +void +SdaiOriented_open_shell::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOriented_open_shell: virtual access function." << G4endl; + SdaiOriented_open_shell_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiOriented_open_shell_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOriented_open_shell: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiOriented_open_shell *ent = (SdaiOriented_open_shell *)sent; +// SdaiOriented_open_shell *ent = (SdaiOriented_open_shell *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_oriented_open_shell; + ent->attributes[2].aDesc = a_165open_shell_element; + if(ent->_open_shell_element == 0) + ent->_open_shell_element = S_ENTITY_NULL; + ent->attributes[3].aDesc = a_166orientation; +} + +SCLP23(Application_instance_ptr) +create_SdaiOriented_open_shell(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiOriented_open_shell::get_os_typespec()) + SdaiOriented_open_shell; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiOriented_open_shell::get_os_typespec()) +// SdaiOriented_open_shell; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiOriented_open_shell; +} +#endif + +#ifdef __O3DB__ +void +SdaiOriented_open_shell::oodb_reInit () +{ eDesc = config_control_designe_oriented_open_shell; + attributes [2].aDesc = a_165open_shell_element; + attributes [3].aDesc = a_166orientation; +} +#endif + +SdaiOriented_open_shell::SdaiOriented_open_shell (SCLP23(Application_instance) *se, int *addAttrs) : SdaiOpen_shell(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -19534,48 +34195,72 @@ SdaiOriented_open_shell::SdaiOriented_open_shell (STEPentity *se ) : SdaiOpen_sh eDesc = config_control_designe_oriented_open_shell; - STEPattribute * a = new STEPattribute (*a_165open_shell_element, (STEPentityH *) &_open_shell_element); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_165open_shell_element, (SCLP23(Application_instance_ptr) *) &_open_shell_element); +#else + STEPattribute *a = new STEPattribute(*a_165open_shell_element, (SCLP23(Application_instance_ptr) *) &_open_shell_element); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_166orientation, &_orientation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_166orientation, &_orientation); +#else + a = new STEPattribute(*a_166orientation, &_orientation); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); MakeDerived ("cfs_faces"); } -SdaiOpen_shellH -SdaiOriented_open_shell::Open_shell_element() const - { return (SdaiOpen_shellH) _open_shell_element; } +const SdaiOpen_shell_ptr +SdaiOriented_open_shell::open_shell_element_() const +{ + return (SdaiOpen_shell_ptr) _open_shell_element; +} void -SdaiOriented_open_shell::Open_shell_element (SdaiOpen_shellH x) - { _open_shell_element = x; } +SdaiOriented_open_shell::open_shell_element_ (const SdaiOpen_shell_ptr x) -const BOOLEAN -SdaiOriented_open_shell::Orientation() const - { return (LOGICAL) _orientation; } +{ + _open_shell_element = x; +} + +const SCLBOOL(Bool) +SdaiOriented_open_shell::orientation_() const +{ + return (SCLBOOL(Bool)) _orientation; +} void -SdaiOriented_open_shell::Orientation (BOOLEAN x) - { _orientation.put (x); } +SdaiOriented_open_shell::orientation_ (const SCLBOOL(Bool) x) + +{ + _orientation.put (x); +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY oriented_open_shell +///////// END_ENTITY oriented_open_shell -///////// ENTITY solid_angle_unit +///////// ENTITY solid_angle_unit EntityDescriptor *config_control_designe_solid_angle_unit =0; SdaiSolid_angle_unit::SdaiSolid_angle_unit( ) @@ -19588,9 +34273,61 @@ SdaiSolid_angle_unit::SdaiSolid_angle_unit( ) eDesc = config_control_designe_solid_angle_unit; } SdaiSolid_angle_unit::SdaiSolid_angle_unit (SdaiSolid_angle_unit& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiSolid_angle_unit::~SdaiSolid_angle_unit () { } -SdaiSolid_angle_unit::SdaiSolid_angle_unit (STEPentity *se ) : SdaiNamed_unit(se) + +#ifdef __OSTORE__ + +void +SdaiSolid_angle_unit::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSolid_angle_unit: virtual access function." << G4endl; + SdaiSolid_angle_unit_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiSolid_angle_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSolid_angle_unit: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiSolid_angle_unit *ent = (SdaiSolid_angle_unit *)sent; +// SdaiSolid_angle_unit *ent = (SdaiSolid_angle_unit *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_solid_angle_unit; +} + +SCLP23(Application_instance_ptr) +create_SdaiSolid_angle_unit(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiSolid_angle_unit::get_os_typespec()) + SdaiSolid_angle_unit; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiSolid_angle_unit::get_os_typespec()) +// SdaiSolid_angle_unit; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiSolid_angle_unit; +} +#endif + +#ifdef __O3DB__ +void +SdaiSolid_angle_unit::oodb_reInit () +{ eDesc = config_control_designe_solid_angle_unit; +} +#endif + +SdaiSolid_angle_unit::SdaiSolid_angle_unit (SCLP23(Application_instance) *se, int *addAttrs) : SdaiNamed_unit(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -19604,10 +34341,10 @@ SdaiSolid_angle_unit::SdaiSolid_angle_unit (STEPentity *se ) : SdaiNamed_unit(se /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY solid_angle_unit +///////// END_ENTITY solid_angle_unit -///////// ENTITY coordinated_universal_time_offset +///////// ENTITY coordinated_universal_time_offset EntityDescriptor *config_control_designe_coordinated_universal_time_offset =0; AttrDescriptor *a_168hour_offset =0; @@ -19620,22 +34357,98 @@ SdaiCoordinated_universal_time_offset::SdaiCoordinated_universal_time_offset( ) eDesc = config_control_designe_coordinated_universal_time_offset; - STEPattribute * a = new STEPattribute (*a_168hour_offset, &_hour_offset); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_168hour_offset, &_hour_offset); +#else + STEPattribute *a = new STEPattribute(*a_168hour_offset, &_hour_offset); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_169minute_offset, &_minute_offset); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_169minute_offset, &_minute_offset); +#else + a = new STEPattribute(*a_169minute_offset, &_minute_offset); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_170sense, &_sense); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_170sense, &_sense); +#else + a = new STEPattribute(*a_170sense, &_sense); +#endif a -> set_null (); attributes.push (a); } SdaiCoordinated_universal_time_offset::SdaiCoordinated_universal_time_offset (SdaiCoordinated_universal_time_offset& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiCoordinated_universal_time_offset::~SdaiCoordinated_universal_time_offset () { } -SdaiCoordinated_universal_time_offset::SdaiCoordinated_universal_time_offset( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiCoordinated_universal_time_offset::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCoordinated_universal_time_offset: virtual access function." << G4endl; + SdaiCoordinated_universal_time_offset_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiCoordinated_universal_time_offset_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCoordinated_universal_time_offset: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiCoordinated_universal_time_offset *ent = (SdaiCoordinated_universal_time_offset *)sent; +// SdaiCoordinated_universal_time_offset *ent = (SdaiCoordinated_universal_time_offset *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_coordinated_universal_time_offset; + ent->attributes[0].aDesc = a_168hour_offset; + ent->attributes[1].aDesc = a_169minute_offset; + ent->attributes[2].aDesc = a_170sense; +} + +SCLP23(Application_instance_ptr) +create_SdaiCoordinated_universal_time_offset(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiCoordinated_universal_time_offset::get_os_typespec()) + SdaiCoordinated_universal_time_offset; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiCoordinated_universal_time_offset::get_os_typespec()) +// SdaiCoordinated_universal_time_offset; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiCoordinated_universal_time_offset; +} +#endif + +#ifdef __O3DB__ +void +SdaiCoordinated_universal_time_offset::oodb_reInit () +{ eDesc = config_control_designe_coordinated_universal_time_offset; + attributes [0].aDesc = a_168hour_offset; + attributes [1].aDesc = a_169minute_offset; + attributes [2].aDesc = a_170sense; +} +#endif + +SdaiCoordinated_universal_time_offset::SdaiCoordinated_universal_time_offset( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -19644,62 +34457,98 @@ SdaiCoordinated_universal_time_offset::SdaiCoordinated_universal_time_offset( ST eDesc = config_control_designe_coordinated_universal_time_offset; - STEPattribute * a = new STEPattribute (*a_168hour_offset, &_hour_offset); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_168hour_offset, &_hour_offset); +#else + STEPattribute *a = new STEPattribute(*a_168hour_offset, &_hour_offset); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_169minute_offset, &_minute_offset); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_169minute_offset, &_minute_offset); +#else + a = new STEPattribute(*a_169minute_offset, &_minute_offset); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_170sense, &_sense); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_170sense, &_sense); +#else + a = new STEPattribute(*a_170sense, &_sense); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiHour_in_day -SdaiCoordinated_universal_time_offset::Hour_offset() const - { return (const SdaiHour_in_day) _hour_offset; } +SdaiCoordinated_universal_time_offset::hour_offset_() const +{ + return (SdaiHour_in_day) _hour_offset; +} void -SdaiCoordinated_universal_time_offset::Hour_offset (SdaiHour_in_day x) - { _hour_offset = x; } +SdaiCoordinated_universal_time_offset::hour_offset_ (const SdaiHour_in_day x) + +{ + _hour_offset = x; +} const SdaiMinute_in_hour -SdaiCoordinated_universal_time_offset::Minute_offset() const - { return (const SdaiMinute_in_hour) _minute_offset; } +SdaiCoordinated_universal_time_offset::minute_offset_() const +{ + return (SdaiMinute_in_hour) _minute_offset; +} void -SdaiCoordinated_universal_time_offset::Minute_offset (SdaiMinute_in_hour x) - { _minute_offset = x; } +SdaiCoordinated_universal_time_offset::minute_offset_ (const SdaiMinute_in_hour x) -const sdaiAhead_or_behind -SdaiCoordinated_universal_time_offset::Sense() const - { return (sdaiAhead_or_behind) _sense; } +{ + _minute_offset = x; +} + +const SdaiAhead_or_behind_var +SdaiCoordinated_universal_time_offset::sense_() const +{ + return (Ahead_or_behind) _sense; +} void -SdaiCoordinated_universal_time_offset::Sense (sdaiAhead_or_behind x) - { _sense.put (x); } +SdaiCoordinated_universal_time_offset::sense_ (const SdaiAhead_or_behind_var x) -///////// END_ENTITY coordinated_universal_time_offset +{ + _sense.put (x); +} + +///////// END_ENTITY coordinated_universal_time_offset -///////// ENTITY curve_replica +///////// ENTITY curve_replica EntityDescriptor *config_control_designe_curve_replica =0; AttrDescriptor *a_171parent_curve =0; @@ -19713,18 +34562,91 @@ SdaiCurve_replica::SdaiCurve_replica( ) eDesc = config_control_designe_curve_replica; - STEPattribute * a = new STEPattribute (*a_171parent_curve, (STEPentityH *) &_parent_curve); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_171parent_curve, (SCLP23(Application_instance_ptr) *) &_parent_curve); +#else + STEPattribute *a = new STEPattribute(*a_171parent_curve, (SCLP23(Application_instance_ptr) *) &_parent_curve); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_172transformation, (STEPentityH *) &_transformation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_172transformation, (SCLP23(Application_instance_ptr) *) &_transformation); +#else + a = new STEPattribute(*a_172transformation, (SCLP23(Application_instance_ptr) *) &_transformation); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiCurve_replica::SdaiCurve_replica (SdaiCurve_replica& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiCurve_replica::~SdaiCurve_replica () { } -SdaiCurve_replica::SdaiCurve_replica (STEPentity *se ) : SdaiCurve(se) + +#ifdef __OSTORE__ + +void +SdaiCurve_replica::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCurve_replica: virtual access function." << G4endl; + SdaiCurve_replica_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiCurve_replica_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCurve_replica: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiCurve_replica *ent = (SdaiCurve_replica *)sent; +// SdaiCurve_replica *ent = (SdaiCurve_replica *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_curve_replica; + ent->attributes[1].aDesc = a_171parent_curve; + if(ent->_parent_curve == 0) + ent->_parent_curve = S_ENTITY_NULL; + ent->attributes[2].aDesc = a_172transformation; + if(ent->_transformation == 0) + ent->_transformation = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiCurve_replica(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiCurve_replica::get_os_typespec()) + SdaiCurve_replica; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiCurve_replica::get_os_typespec()) +// SdaiCurve_replica; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiCurve_replica; +} +#endif + +#ifdef __O3DB__ +void +SdaiCurve_replica::oodb_reInit () +{ eDesc = config_control_designe_curve_replica; + attributes [1].aDesc = a_171parent_curve; + attributes [2].aDesc = a_172transformation; +} +#endif + +SdaiCurve_replica::SdaiCurve_replica (SCLP23(Application_instance) *se, int *addAttrs) : SdaiCurve(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -19735,47 +34657,72 @@ SdaiCurve_replica::SdaiCurve_replica (STEPentity *se ) : SdaiCurve(se) eDesc = config_control_designe_curve_replica; - STEPattribute * a = new STEPattribute (*a_171parent_curve, (STEPentityH *) &_parent_curve); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_171parent_curve, (SCLP23(Application_instance_ptr) *) &_parent_curve); +#else + STEPattribute *a = new STEPattribute(*a_171parent_curve, (SCLP23(Application_instance_ptr) *) &_parent_curve); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_172transformation, (STEPentityH *) &_transformation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_172transformation, (SCLP23(Application_instance_ptr) *) &_transformation); +#else + a = new STEPattribute(*a_172transformation, (SCLP23(Application_instance_ptr) *) &_transformation); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -SdaiCurveH -SdaiCurve_replica::Parent_curve() const - { return (SdaiCurveH) _parent_curve; } +const SdaiCurve_ptr +SdaiCurve_replica::parent_curve_() const +{ + return (SdaiCurve_ptr) _parent_curve; +} void -SdaiCurve_replica::Parent_curve (SdaiCurveH x) - { _parent_curve = x; } +SdaiCurve_replica::parent_curve_ (const SdaiCurve_ptr x) -SdaiCartesian_transformation_operatorH -SdaiCurve_replica::Transformation() const - { return (SdaiCartesian_transformation_operatorH) _transformation; } +{ + _parent_curve = x; +} + +const SdaiCartesian_transformation_operator_ptr +SdaiCurve_replica::transformation_() const +{ + return (SdaiCartesian_transformation_operator_ptr) _transformation; +} void -SdaiCurve_replica::Transformation (SdaiCartesian_transformation_operatorH x) - { _transformation = x; } +SdaiCurve_replica::transformation_ (const SdaiCartesian_transformation_operator_ptr x) + +{ + _transformation = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY curve_replica +///////// END_ENTITY curve_replica -///////// ENTITY quasi_uniform_surface +///////// ENTITY quasi_uniform_surface EntityDescriptor *config_control_designe_quasi_uniform_surface =0; SdaiQuasi_uniform_surface::SdaiQuasi_uniform_surface( ) @@ -19786,11 +34733,67 @@ SdaiQuasi_uniform_surface::SdaiQuasi_uniform_surface( ) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_quasi_uniform_surface; + MakeDerived ("dim"); + MakeDerived ("u_upper"); + MakeDerived ("v_upper"); + MakeDerived ("control_points"); } SdaiQuasi_uniform_surface::SdaiQuasi_uniform_surface (SdaiQuasi_uniform_surface& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiQuasi_uniform_surface::~SdaiQuasi_uniform_surface () { } -SdaiQuasi_uniform_surface::SdaiQuasi_uniform_surface (STEPentity *se ) : SdaiB_spline_surface(se) + +#ifdef __OSTORE__ + +void +SdaiQuasi_uniform_surface::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiQuasi_uniform_surface: virtual access function." << G4endl; + SdaiQuasi_uniform_surface_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiQuasi_uniform_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiQuasi_uniform_surface: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiQuasi_uniform_surface *ent = (SdaiQuasi_uniform_surface *)sent; +// SdaiQuasi_uniform_surface *ent = (SdaiQuasi_uniform_surface *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_quasi_uniform_surface; +} + +SCLP23(Application_instance_ptr) +create_SdaiQuasi_uniform_surface(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiQuasi_uniform_surface::get_os_typespec()) + SdaiQuasi_uniform_surface; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiQuasi_uniform_surface::get_os_typespec()) +// SdaiQuasi_uniform_surface; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiQuasi_uniform_surface; +} +#endif + +#ifdef __O3DB__ +void +SdaiQuasi_uniform_surface::oodb_reInit () +{ eDesc = config_control_designe_quasi_uniform_surface; +} +#endif + +SdaiQuasi_uniform_surface::SdaiQuasi_uniform_surface (SCLP23(Application_instance) *se, int *addAttrs) : SdaiB_spline_surface(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -19800,20 +34803,24 @@ SdaiQuasi_uniform_surface::SdaiQuasi_uniform_surface (STEPentity *se ) : SdaiB_s /* part of the main inheritance hierarchy */ eDesc = config_control_designe_quasi_uniform_surface; + MakeDerived ("dim"); + MakeDerived ("u_upper"); + MakeDerived ("v_upper"); + MakeDerived ("control_points"); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY quasi_uniform_surface +///////// END_ENTITY quasi_uniform_surface -///////// ENTITY surface_curve +///////// ENTITY surface_curve EntityDescriptor *config_control_designe_surface_curve =0; AttrDescriptor *a_173curve_3d =0; AttrDescriptor *a_174associated_geometry =0; AttrDescriptor *a_175master_representation =0; -AttrDescriptor *a_176Dbasis_surface =0; +Derived_attribute *a_176Dbasis_surface =0; SdaiSurface_curve::SdaiSurface_curve( ) { @@ -19823,22 +34830,102 @@ SdaiSurface_curve::SdaiSurface_curve( ) eDesc = config_control_designe_surface_curve; - STEPattribute * a = new STEPattribute (*a_173curve_3d, (STEPentityH *) &_curve_3d); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_173curve_3d, (SCLP23(Application_instance_ptr) *) &_curve_3d); +#else + STEPattribute *a = new STEPattribute(*a_173curve_3d, (SCLP23(Application_instance_ptr) *) &_curve_3d); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_174associated_geometry, &_associated_geometry); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_174associated_geometry, &_associated_geometry); +#else + a = new STEPattribute(*a_174associated_geometry, &_associated_geometry); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_175master_representation, &_master_representation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_175master_representation, &_master_representation); +#else + a = new STEPattribute(*a_175master_representation, &_master_representation); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); + MakeDerived ("basis_surface"); } SdaiSurface_curve::SdaiSurface_curve (SdaiSurface_curve& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiSurface_curve::~SdaiSurface_curve () { } -SdaiSurface_curve::SdaiSurface_curve (STEPentity *se ) : SdaiCurve(se) + +#ifdef __OSTORE__ + +void +SdaiSurface_curve::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSurface_curve: virtual access function." << G4endl; + SdaiSurface_curve_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiSurface_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSurface_curve: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiSurface_curve *ent = (SdaiSurface_curve *)sent; +// SdaiSurface_curve *ent = (SdaiSurface_curve *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_surface_curve; + ent->attributes[1].aDesc = a_173curve_3d; + if(ent->_curve_3d == 0) + ent->_curve_3d = S_ENTITY_NULL; + ent->attributes[2].aDesc = a_174associated_geometry; + ent->attributes[3].aDesc = a_175master_representation; +} + +SCLP23(Application_instance_ptr) +create_SdaiSurface_curve(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiSurface_curve::get_os_typespec()) + SdaiSurface_curve; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiSurface_curve::get_os_typespec()) +// SdaiSurface_curve; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiSurface_curve; +} +#endif + +#ifdef __O3DB__ +void +SdaiSurface_curve::oodb_reInit () +{ eDesc = config_control_designe_surface_curve; + attributes [1].aDesc = a_173curve_3d; + attributes [2].aDesc = a_174associated_geometry; + attributes [3].aDesc = a_175master_representation; +} +#endif + +SdaiSurface_curve::SdaiSurface_curve (SCLP23(Application_instance) *se, int *addAttrs) : SdaiCurve(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -19849,64 +34936,100 @@ SdaiSurface_curve::SdaiSurface_curve (STEPentity *se ) : SdaiCurve(se) eDesc = config_control_designe_surface_curve; - STEPattribute * a = new STEPattribute (*a_173curve_3d, (STEPentityH *) &_curve_3d); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_173curve_3d, (SCLP23(Application_instance_ptr) *) &_curve_3d); +#else + STEPattribute *a = new STEPattribute(*a_173curve_3d, (SCLP23(Application_instance_ptr) *) &_curve_3d); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_174associated_geometry, &_associated_geometry); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_174associated_geometry, &_associated_geometry); +#else + a = new STEPattribute(*a_174associated_geometry, &_associated_geometry); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_175master_representation, &_master_representation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_175master_representation, &_master_representation); +#else + a = new STEPattribute(*a_175master_representation, &_master_representation); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); + MakeDerived ("basis_surface"); } -SdaiCurveH -SdaiSurface_curve::Curve_3d() const - { return (SdaiCurveH) _curve_3d; } +const SdaiCurve_ptr +SdaiSurface_curve::curve_3d_() const +{ + return (SdaiCurve_ptr) _curve_3d; +} void -SdaiSurface_curve::Curve_3d (SdaiCurveH x) - { _curve_3d = x; } +SdaiSurface_curve::curve_3d_ (const SdaiCurve_ptr x) -const SdaiPcurve_or_surfacesH -SdaiSurface_curve::Associated_geometry() const - { return (SdaiPcurve_or_surfacesH) &_associated_geometry; } +{ + _curve_3d = x; +} + +const SdaiPcurve_or_surfaces_ptr +SdaiSurface_curve::associated_geometry_() const +{ + return (SdaiPcurve_or_surfaces_ptr) &_associated_geometry; +} void -SdaiSurface_curve::Associated_geometry (SdaiPcurve_or_surfacesH x) +SdaiSurface_curve::associated_geometry_ (const SdaiPcurve_or_surfaces_ptr x) + { _associated_geometry.ShallowCopy (*x); } -const sdaiPreferred_surface_curve_representation -SdaiSurface_curve::Master_representation() const - { return (sdaiPreferred_surface_curve_representation) _master_representation; } +const SdaiPreferred_surface_curve_representation_var +SdaiSurface_curve::master_representation_() const +{ + return (Preferred_surface_curve_representation) _master_representation; +} void -SdaiSurface_curve::Master_representation (sdaiPreferred_surface_curve_representation x) - { _master_representation.put (x); } +SdaiSurface_curve::master_representation_ (const SdaiPreferred_surface_curve_representation_var x) + +{ + _master_representation.put (x); +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY surface_curve +///////// END_ENTITY surface_curve -///////// ENTITY action_request_status +///////// ENTITY action_request_status EntityDescriptor *config_control_designe_action_request_status =0; AttrDescriptor *a_177status =0; @@ -19918,18 +35041,88 @@ SdaiAction_request_status::SdaiAction_request_status( ) eDesc = config_control_designe_action_request_status; - STEPattribute * a = new STEPattribute (*a_177status, &_status); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_177status, &_status); +#else + STEPattribute *a = new STEPattribute(*a_177status, &_status); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_178assigned_request, (STEPentityH *) &_assigned_request); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_178assigned_request, (SCLP23(Application_instance_ptr) *) &_assigned_request); +#else + a = new STEPattribute(*a_178assigned_request, (SCLP23(Application_instance_ptr) *) &_assigned_request); +#endif a -> set_null (); attributes.push (a); } SdaiAction_request_status::SdaiAction_request_status (SdaiAction_request_status& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiAction_request_status::~SdaiAction_request_status () { } -SdaiAction_request_status::SdaiAction_request_status( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiAction_request_status::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAction_request_status: virtual access function." << G4endl; + SdaiAction_request_status_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiAction_request_status_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAction_request_status: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiAction_request_status *ent = (SdaiAction_request_status *)sent; +// SdaiAction_request_status *ent = (SdaiAction_request_status *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_action_request_status; + ent->attributes[0].aDesc = a_177status; + ent->attributes[1].aDesc = a_178assigned_request; + if(ent->_assigned_request == 0) + ent->_assigned_request = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiAction_request_status(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiAction_request_status::get_os_typespec()) + SdaiAction_request_status; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiAction_request_status::get_os_typespec()) +// SdaiAction_request_status; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiAction_request_status; +} +#endif + +#ifdef __O3DB__ +void +SdaiAction_request_status::oodb_reInit () +{ eDesc = config_control_designe_action_request_status; + attributes [0].aDesc = a_177status; + attributes [1].aDesc = a_178assigned_request; +} +#endif + +SdaiAction_request_status::SdaiAction_request_status( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -19938,51 +35131,75 @@ SdaiAction_request_status::SdaiAction_request_status( STEPentity *se ) eDesc = config_control_designe_action_request_status; - STEPattribute * a = new STEPattribute (*a_177status, &_status); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_177status, &_status); +#else + STEPattribute *a = new STEPattribute(*a_177status, &_status); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_178assigned_request, (STEPentityH *) &_assigned_request); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_178assigned_request, (SCLP23(Application_instance_ptr) *) &_assigned_request); +#else + a = new STEPattribute(*a_178assigned_request, (SCLP23(Application_instance_ptr) *) &_assigned_request); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiAction_request_status::Status() const - { return (const SdaiLabel) _status; } +SdaiAction_request_status::status_() const +{ + return (SdaiLabel) _status; +} void -SdaiAction_request_status::Status (const char * x) - { _status = x; } +SdaiAction_request_status::status_ (const SdaiLabel x) -SdaiVersioned_action_requestH -SdaiAction_request_status::Assigned_request() const - { return (SdaiVersioned_action_requestH) _assigned_request; } +{ + _status = x; +} + +const SdaiVersioned_action_request_ptr +SdaiAction_request_status::assigned_request_() const +{ + return (SdaiVersioned_action_request_ptr) _assigned_request; +} void -SdaiAction_request_status::Assigned_request (SdaiVersioned_action_requestH x) - { _assigned_request = x; } +SdaiAction_request_status::assigned_request_ (const SdaiVersioned_action_request_ptr x) -///////// END_ENTITY action_request_status +{ + _assigned_request = x; +} + +///////// END_ENTITY action_request_status -///////// ENTITY composite_curve_segment +///////// ENTITY composite_curve_segment EntityDescriptor *config_control_designe_composite_curve_segment =0; AttrDescriptor *a_179transition =0; AttrDescriptor *a_180same_sense =0; AttrDescriptor *a_181parent_curve =0; -InverseAttrDescriptor *a_182Iusing_curves =0; +Inverse_attribute *a_182Iusing_curves =0; SdaiComposite_curve_segment::SdaiComposite_curve_segment( ) { @@ -19990,22 +35207,100 @@ SdaiComposite_curve_segment::SdaiComposite_curve_segment( ) eDesc = config_control_designe_composite_curve_segment; - STEPattribute * a = new STEPattribute (*a_179transition, &_transition); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_179transition, &_transition); +#else + STEPattribute *a = new STEPattribute(*a_179transition, &_transition); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_180same_sense, &_same_sense); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_180same_sense, &_same_sense); +#else + a = new STEPattribute(*a_180same_sense, &_same_sense); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_181parent_curve, (STEPentityH *) &_parent_curve); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_181parent_curve, (SCLP23(Application_instance_ptr) *) &_parent_curve); +#else + a = new STEPattribute(*a_181parent_curve, (SCLP23(Application_instance_ptr) *) &_parent_curve); +#endif a -> set_null (); attributes.push (a); } SdaiComposite_curve_segment::SdaiComposite_curve_segment (SdaiComposite_curve_segment& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiComposite_curve_segment::~SdaiComposite_curve_segment () { } -SdaiComposite_curve_segment::SdaiComposite_curve_segment( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiComposite_curve_segment::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiComposite_curve_segment: virtual access function." << G4endl; + SdaiComposite_curve_segment_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiComposite_curve_segment_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiComposite_curve_segment: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiComposite_curve_segment *ent = (SdaiComposite_curve_segment *)sent; +// SdaiComposite_curve_segment *ent = (SdaiComposite_curve_segment *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_composite_curve_segment; + ent->attributes[0].aDesc = a_179transition; + ent->attributes[1].aDesc = a_180same_sense; + ent->attributes[2].aDesc = a_181parent_curve; + if(ent->_parent_curve == 0) + ent->_parent_curve = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiComposite_curve_segment(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiComposite_curve_segment::get_os_typespec()) + SdaiComposite_curve_segment; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiComposite_curve_segment::get_os_typespec()) +// SdaiComposite_curve_segment; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiComposite_curve_segment; +} +#endif + +#ifdef __O3DB__ +void +SdaiComposite_curve_segment::oodb_reInit () +{ eDesc = config_control_designe_composite_curve_segment; + attributes [0].aDesc = a_179transition; + attributes [1].aDesc = a_180same_sense; + attributes [2].aDesc = a_181parent_curve; +} +#endif + +SdaiComposite_curve_segment::SdaiComposite_curve_segment( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -20014,70 +35309,109 @@ SdaiComposite_curve_segment::SdaiComposite_curve_segment( STEPentity *se ) eDesc = config_control_designe_composite_curve_segment; - STEPattribute * a = new STEPattribute (*a_179transition, &_transition); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_179transition, &_transition); +#else + STEPattribute *a = new STEPattribute(*a_179transition, &_transition); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_180same_sense, &_same_sense); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_180same_sense, &_same_sense); +#else + a = new STEPattribute(*a_180same_sense, &_same_sense); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_181parent_curve, (STEPentityH *) &_parent_curve); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_181parent_curve, (SCLP23(Application_instance_ptr) *) &_parent_curve); +#else + a = new STEPattribute(*a_181parent_curve, (SCLP23(Application_instance_ptr) *) &_parent_curve); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -const sdaiTransition_code -SdaiComposite_curve_segment::Transition() const - { return (sdaiTransition_code) _transition; } +const SdaiTransition_code_var +SdaiComposite_curve_segment::transition_() const +{ + return (Transition_code) _transition; +} void -SdaiComposite_curve_segment::Transition (sdaiTransition_code x) - { _transition.put (x); } +SdaiComposite_curve_segment::transition_ (const SdaiTransition_code_var x) -const BOOLEAN -SdaiComposite_curve_segment::Same_sense() const - { return (LOGICAL) _same_sense; } +{ + _transition.put (x); +} + +const SCLBOOL(Bool) +SdaiComposite_curve_segment::same_sense_() const +{ + return (SCLBOOL(Bool)) _same_sense; +} void -SdaiComposite_curve_segment::Same_sense (BOOLEAN x) - { _same_sense.put (x); } +SdaiComposite_curve_segment::same_sense_ (const SCLBOOL(Bool) x) -SdaiCurveH -SdaiComposite_curve_segment::Parent_curve() const - { return (SdaiCurveH) _parent_curve; } +{ + _same_sense.put (x); +} + +const SdaiCurve_ptr +SdaiComposite_curve_segment::parent_curve_() const +{ + return (SdaiCurve_ptr) _parent_curve; +} void -SdaiComposite_curve_segment::Parent_curve (SdaiCurveH x) - { _parent_curve = x; } +SdaiComposite_curve_segment::parent_curve_ (const SdaiCurve_ptr x) -const EntityAggregateH -SdaiComposite_curve_segment::Using_curves() const - { return (EntityAggregateH) &_using_curves; } +{ + _parent_curve = x; +} + +const EntityAggregate_ptr +SdaiComposite_curve_segment::using_curves_() const +{ + return (EntityAggregate_ptr) &_using_curves; +} void -SdaiComposite_curve_segment::Using_curves (EntityAggregateH x) +SdaiComposite_curve_segment::using_curves_ (const EntityAggregate_ptr x) + { _using_curves.ShallowCopy (*x); } -///////// END_ENTITY composite_curve_segment +///////// END_ENTITY composite_curve_segment -///////// ENTITY reparametrised_composite_curve_segment +///////// ENTITY reparametrised_composite_curve_segment EntityDescriptor *config_control_designe_reparametrised_composite_curve_segment =0; AttrDescriptor *a_183param_length =0; @@ -20090,14 +35424,74 @@ SdaiReparametrised_composite_curve_segment::SdaiReparametrised_composite_curve_s eDesc = config_control_designe_reparametrised_composite_curve_segment; - STEPattribute * a = new STEPattribute (*a_183param_length, &_param_length); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_183param_length, &_param_length); +#else + STEPattribute *a = new STEPattribute(*a_183param_length, &_param_length); +#endif a -> set_null (); attributes.push (a); } SdaiReparametrised_composite_curve_segment::SdaiReparametrised_composite_curve_segment (SdaiReparametrised_composite_curve_segment& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiReparametrised_composite_curve_segment::~SdaiReparametrised_composite_curve_segment () { } -SdaiReparametrised_composite_curve_segment::SdaiReparametrised_composite_curve_segment (STEPentity *se ) : SdaiComposite_curve_segment(se) + +#ifdef __OSTORE__ + +void +SdaiReparametrised_composite_curve_segment::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiReparametrised_composite_curve_segment: virtual access function." << G4endl; + SdaiReparametrised_composite_curve_segment_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiReparametrised_composite_curve_segment_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiReparametrised_composite_curve_segment: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiReparametrised_composite_curve_segment *ent = (SdaiReparametrised_composite_curve_segment *)sent; +// SdaiReparametrised_composite_curve_segment *ent = (SdaiReparametrised_composite_curve_segment *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_reparametrised_composite_curve_segment; + ent->attributes[3].aDesc = a_183param_length; +} + +SCLP23(Application_instance_ptr) +create_SdaiReparametrised_composite_curve_segment(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiReparametrised_composite_curve_segment::get_os_typespec()) + SdaiReparametrised_composite_curve_segment; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiReparametrised_composite_curve_segment::get_os_typespec()) +// SdaiReparametrised_composite_curve_segment; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiReparametrised_composite_curve_segment; +} +#endif + +#ifdef __O3DB__ +void +SdaiReparametrised_composite_curve_segment::oodb_reInit () +{ eDesc = config_control_designe_reparametrised_composite_curve_segment; + attributes [3].aDesc = a_183param_length; +} +#endif + +SdaiReparametrised_composite_curve_segment::SdaiReparametrised_composite_curve_segment (SCLP23(Application_instance) *se, int *addAttrs) : SdaiComposite_curve_segment(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -20108,30 +35502,42 @@ SdaiReparametrised_composite_curve_segment::SdaiReparametrised_composite_curve_s eDesc = config_control_designe_reparametrised_composite_curve_segment; - STEPattribute * a = new STEPattribute (*a_183param_length, &_param_length); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_183param_length, &_param_length); +#else + STEPattribute *a = new STEPattribute(*a_183param_length, &_param_length); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiParameter_value -SdaiReparametrised_composite_curve_segment::Param_length() const - { return (const SdaiParameter_value) _param_length; } +SdaiReparametrised_composite_curve_segment::param_length_() const +{ + return (SdaiParameter_value) _param_length; +} void -SdaiReparametrised_composite_curve_segment::Param_length (SdaiParameter_value x) - { _param_length = x; } +SdaiReparametrised_composite_curve_segment::param_length_ (const SdaiParameter_value x) + +{ + _param_length = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY reparametrised_composite_curve_segment +///////// END_ENTITY reparametrised_composite_curve_segment -///////// ENTITY representation_relationship +///////// ENTITY representation_relationship EntityDescriptor *config_control_designe_representation_relationship =0; AttrDescriptor *a_184name =0; @@ -20145,26 +35551,114 @@ SdaiRepresentation_relationship::SdaiRepresentation_relationship( ) eDesc = config_control_designe_representation_relationship; - STEPattribute * a = new STEPattribute (*a_184name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_184name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_184name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_185description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_185description, &_description); +#else + a = new STEPattribute(*a_185description, &_description); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_186rep_1, (STEPentityH *) &_rep_1); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_186rep_1, (SCLP23(Application_instance_ptr) *) &_rep_1); +#else + a = new STEPattribute(*a_186rep_1, (SCLP23(Application_instance_ptr) *) &_rep_1); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_187rep_2, (STEPentityH *) &_rep_2); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_187rep_2, (SCLP23(Application_instance_ptr) *) &_rep_2); +#else + a = new STEPattribute(*a_187rep_2, (SCLP23(Application_instance_ptr) *) &_rep_2); +#endif a -> set_null (); attributes.push (a); } SdaiRepresentation_relationship::SdaiRepresentation_relationship (SdaiRepresentation_relationship& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiRepresentation_relationship::~SdaiRepresentation_relationship () { } -SdaiRepresentation_relationship::SdaiRepresentation_relationship( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiRepresentation_relationship::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiRepresentation_relationship: virtual access function." << G4endl; + SdaiRepresentation_relationship_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiRepresentation_relationship_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiRepresentation_relationship: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiRepresentation_relationship *ent = (SdaiRepresentation_relationship *)sent; +// SdaiRepresentation_relationship *ent = (SdaiRepresentation_relationship *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_representation_relationship; + ent->attributes[0].aDesc = a_184name; + ent->attributes[1].aDesc = a_185description; + ent->attributes[2].aDesc = a_186rep_1; + if(ent->_rep_1 == 0) + ent->_rep_1 = S_ENTITY_NULL; + ent->attributes[3].aDesc = a_187rep_2; + if(ent->_rep_2 == 0) + ent->_rep_2 = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiRepresentation_relationship(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiRepresentation_relationship::get_os_typespec()) + SdaiRepresentation_relationship; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiRepresentation_relationship::get_os_typespec()) +// SdaiRepresentation_relationship; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiRepresentation_relationship; +} +#endif + +#ifdef __O3DB__ +void +SdaiRepresentation_relationship::oodb_reInit () +{ eDesc = config_control_designe_representation_relationship; + attributes [0].aDesc = a_184name; + attributes [1].aDesc = a_185description; + attributes [2].aDesc = a_186rep_1; + attributes [3].aDesc = a_187rep_2; +} +#endif + +SdaiRepresentation_relationship::SdaiRepresentation_relationship( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -20173,79 +35667,127 @@ SdaiRepresentation_relationship::SdaiRepresentation_relationship( STEPentity *se eDesc = config_control_designe_representation_relationship; - STEPattribute * a = new STEPattribute (*a_184name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_184name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_184name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_185description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_185description, &_description); +#else + a = new STEPattribute(*a_185description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_186rep_1, (STEPentityH *) &_rep_1); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_186rep_1, (SCLP23(Application_instance_ptr) *) &_rep_1); +#else + a = new STEPattribute(*a_186rep_1, (SCLP23(Application_instance_ptr) *) &_rep_1); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_187rep_2, (STEPentityH *) &_rep_2); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_187rep_2, (SCLP23(Application_instance_ptr) *) &_rep_2); +#else + a = new STEPattribute(*a_187rep_2, (SCLP23(Application_instance_ptr) *) &_rep_2); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiRepresentation_relationship::Name() const - { return (const SdaiLabel) _name; } +SdaiRepresentation_relationship::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiRepresentation_relationship::Name (const char * x) - { _name = x; } +SdaiRepresentation_relationship::name_ (const SdaiLabel x) + +{ + _name = x; +} const SdaiText -SdaiRepresentation_relationship::Description() const - { return (const SdaiText) _description; } +SdaiRepresentation_relationship::description_() const +{ + return (SdaiText) _description; +} void -SdaiRepresentation_relationship::Description (const char * x) - { _description = x; } +SdaiRepresentation_relationship::description_ (const SdaiText x) -SdaiRepresentationH -SdaiRepresentation_relationship::Rep_1() const - { return (SdaiRepresentationH) _rep_1; } +{ + _description = x; +} + +const SdaiRepresentation_ptr +SdaiRepresentation_relationship::rep_1_() const +{ + return (SdaiRepresentation_ptr) _rep_1; +} void -SdaiRepresentation_relationship::Rep_1 (SdaiRepresentationH x) - { _rep_1 = x; } +SdaiRepresentation_relationship::rep_1_ (const SdaiRepresentation_ptr x) -SdaiRepresentationH -SdaiRepresentation_relationship::Rep_2() const - { return (SdaiRepresentationH) _rep_2; } +{ + _rep_1 = x; +} + +const SdaiRepresentation_ptr +SdaiRepresentation_relationship::rep_2_() const +{ + return (SdaiRepresentation_ptr) _rep_2; +} void -SdaiRepresentation_relationship::Rep_2 (SdaiRepresentationH x) - { _rep_2 = x; } +SdaiRepresentation_relationship::rep_2_ (const SdaiRepresentation_ptr x) -///////// END_ENTITY representation_relationship +{ + _rep_2 = x; +} + +///////// END_ENTITY representation_relationship -///////// ENTITY representation_relationship_with_transformation +///////// ENTITY representation_relationship_with_transformation EntityDescriptor *config_control_designe_representation_relationship_with_transformation =0; AttrDescriptor *a_188transformation_operator =0; @@ -20258,14 +35800,74 @@ SdaiRepresentation_relationship_with_transformation::SdaiRepresentation_relation eDesc = config_control_designe_representation_relationship_with_transformation; - STEPattribute * a = new STEPattribute (*a_188transformation_operator, &_transformation_operator); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_188transformation_operator, &_transformation_operator); +#else + STEPattribute *a = new STEPattribute(*a_188transformation_operator, &_transformation_operator); +#endif a -> set_null (); attributes.push (a); } SdaiRepresentation_relationship_with_transformation::SdaiRepresentation_relationship_with_transformation (SdaiRepresentation_relationship_with_transformation& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiRepresentation_relationship_with_transformation::~SdaiRepresentation_relationship_with_transformation () { } -SdaiRepresentation_relationship_with_transformation::SdaiRepresentation_relationship_with_transformation (STEPentity *se ) : SdaiRepresentation_relationship(se) + +#ifdef __OSTORE__ + +void +SdaiRepresentation_relationship_with_transformation::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiRepresentation_relationship_with_transformation: virtual access function." << G4endl; + SdaiRepresentation_relationship_with_transformation_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiRepresentation_relationship_with_transformation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiRepresentation_relationship_with_transformation: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiRepresentation_relationship_with_transformation *ent = (SdaiRepresentation_relationship_with_transformation *)sent; +// SdaiRepresentation_relationship_with_transformation *ent = (SdaiRepresentation_relationship_with_transformation *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_representation_relationship_with_transformation; + ent->attributes[4].aDesc = a_188transformation_operator; +} + +SCLP23(Application_instance_ptr) +create_SdaiRepresentation_relationship_with_transformation(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiRepresentation_relationship_with_transformation::get_os_typespec()) + SdaiRepresentation_relationship_with_transformation; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiRepresentation_relationship_with_transformation::get_os_typespec()) +// SdaiRepresentation_relationship_with_transformation; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiRepresentation_relationship_with_transformation; +} +#endif + +#ifdef __O3DB__ +void +SdaiRepresentation_relationship_with_transformation::oodb_reInit () +{ eDesc = config_control_designe_representation_relationship_with_transformation; + attributes [4].aDesc = a_188transformation_operator; +} +#endif + +SdaiRepresentation_relationship_with_transformation::SdaiRepresentation_relationship_with_transformation (SCLP23(Application_instance) *se, int *addAttrs) : SdaiRepresentation_relationship(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -20276,30 +35878,38 @@ SdaiRepresentation_relationship_with_transformation::SdaiRepresentation_relation eDesc = config_control_designe_representation_relationship_with_transformation; - STEPattribute * a = new STEPattribute (*a_188transformation_operator, &_transformation_operator); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_188transformation_operator, &_transformation_operator); +#else + STEPattribute *a = new STEPattribute(*a_188transformation_operator, &_transformation_operator); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -const SdaiTransformationH -SdaiRepresentation_relationship_with_transformation::Transformation_operator() const - { return (const SdaiTransformationH) &_transformation_operator; } +const SdaiTransformation_ptr +SdaiRepresentation_relationship_with_transformation::transformation_operator_() const + { return (SdaiTransformation_ptr) &_transformation_operator; } void -SdaiRepresentation_relationship_with_transformation::Transformation_operator (SdaiTransformationH x) +SdaiRepresentation_relationship_with_transformation::transformation_operator_ (const SdaiTransformation_ptr x) + { _transformation_operator = x; } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY representation_relationship_with_transformation +///////// END_ENTITY representation_relationship_with_transformation -///////// ENTITY person_and_organization_role +///////// ENTITY person_and_organization_role EntityDescriptor *config_control_designe_person_and_organization_role =0; AttrDescriptor *a_189name =0; @@ -20310,14 +35920,74 @@ SdaiPerson_and_organization_role::SdaiPerson_and_organization_role( ) eDesc = config_control_designe_person_and_organization_role; - STEPattribute * a = new STEPattribute (*a_189name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_189name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_189name, &_name); +#endif a -> set_null (); attributes.push (a); } SdaiPerson_and_organization_role::SdaiPerson_and_organization_role (SdaiPerson_and_organization_role& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiPerson_and_organization_role::~SdaiPerson_and_organization_role () { } -SdaiPerson_and_organization_role::SdaiPerson_and_organization_role( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiPerson_and_organization_role::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPerson_and_organization_role: virtual access function." << G4endl; + SdaiPerson_and_organization_role_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiPerson_and_organization_role_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPerson_and_organization_role: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiPerson_and_organization_role *ent = (SdaiPerson_and_organization_role *)sent; +// SdaiPerson_and_organization_role *ent = (SdaiPerson_and_organization_role *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_person_and_organization_role; + ent->attributes[0].aDesc = a_189name; +} + +SCLP23(Application_instance_ptr) +create_SdaiPerson_and_organization_role(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiPerson_and_organization_role::get_os_typespec()) + SdaiPerson_and_organization_role; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiPerson_and_organization_role::get_os_typespec()) +// SdaiPerson_and_organization_role; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiPerson_and_organization_role; +} +#endif + +#ifdef __O3DB__ +void +SdaiPerson_and_organization_role::oodb_reInit () +{ eDesc = config_control_designe_person_and_organization_role; + attributes [0].aDesc = a_189name; +} +#endif + +SdaiPerson_and_organization_role::SdaiPerson_and_organization_role( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -20326,28 +35996,40 @@ SdaiPerson_and_organization_role::SdaiPerson_and_organization_role( STEPentity * eDesc = config_control_designe_person_and_organization_role; - STEPattribute * a = new STEPattribute (*a_189name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_189name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_189name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiPerson_and_organization_role::Name() const - { return (const SdaiLabel) _name; } +SdaiPerson_and_organization_role::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiPerson_and_organization_role::Name (const char * x) - { _name = x; } +SdaiPerson_and_organization_role::name_ (const SdaiLabel x) -///////// END_ENTITY person_and_organization_role +{ + _name = x; +} + +///////// END_ENTITY person_and_organization_role -///////// ENTITY quasi_uniform_curve +///////// ENTITY quasi_uniform_curve EntityDescriptor *config_control_designe_quasi_uniform_curve =0; SdaiQuasi_uniform_curve::SdaiQuasi_uniform_curve( ) @@ -20358,11 +36040,66 @@ SdaiQuasi_uniform_curve::SdaiQuasi_uniform_curve( ) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_quasi_uniform_curve; + MakeDerived ("dim"); + MakeDerived ("upper_index_on_control_points"); + MakeDerived ("control_points"); } SdaiQuasi_uniform_curve::SdaiQuasi_uniform_curve (SdaiQuasi_uniform_curve& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiQuasi_uniform_curve::~SdaiQuasi_uniform_curve () { } -SdaiQuasi_uniform_curve::SdaiQuasi_uniform_curve (STEPentity *se ) : SdaiB_spline_curve(se) + +#ifdef __OSTORE__ + +void +SdaiQuasi_uniform_curve::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiQuasi_uniform_curve: virtual access function." << G4endl; + SdaiQuasi_uniform_curve_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiQuasi_uniform_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiQuasi_uniform_curve: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiQuasi_uniform_curve *ent = (SdaiQuasi_uniform_curve *)sent; +// SdaiQuasi_uniform_curve *ent = (SdaiQuasi_uniform_curve *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_quasi_uniform_curve; +} + +SCLP23(Application_instance_ptr) +create_SdaiQuasi_uniform_curve(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiQuasi_uniform_curve::get_os_typespec()) + SdaiQuasi_uniform_curve; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiQuasi_uniform_curve::get_os_typespec()) +// SdaiQuasi_uniform_curve; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiQuasi_uniform_curve; +} +#endif + +#ifdef __O3DB__ +void +SdaiQuasi_uniform_curve::oodb_reInit () +{ eDesc = config_control_designe_quasi_uniform_curve; +} +#endif + +SdaiQuasi_uniform_curve::SdaiQuasi_uniform_curve (SCLP23(Application_instance) *se, int *addAttrs) : SdaiB_spline_curve(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -20372,14 +36109,17 @@ SdaiQuasi_uniform_curve::SdaiQuasi_uniform_curve (STEPentity *se ) : SdaiB_splin /* part of the main inheritance hierarchy */ eDesc = config_control_designe_quasi_uniform_curve; + MakeDerived ("dim"); + MakeDerived ("upper_index_on_control_points"); + MakeDerived ("control_points"); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY quasi_uniform_curve +///////// END_ENTITY quasi_uniform_curve -///////// ENTITY swept_surface +///////// ENTITY swept_surface EntityDescriptor *config_control_designe_swept_surface =0; AttrDescriptor *a_190swept_curve =0; @@ -20392,14 +36132,77 @@ SdaiSwept_surface::SdaiSwept_surface( ) eDesc = config_control_designe_swept_surface; - STEPattribute * a = new STEPattribute (*a_190swept_curve, (STEPentityH *) &_swept_curve); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_190swept_curve, (SCLP23(Application_instance_ptr) *) &_swept_curve); +#else + STEPattribute *a = new STEPattribute(*a_190swept_curve, (SCLP23(Application_instance_ptr) *) &_swept_curve); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiSwept_surface::SdaiSwept_surface (SdaiSwept_surface& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiSwept_surface::~SdaiSwept_surface () { } -SdaiSwept_surface::SdaiSwept_surface (STEPentity *se ) : SdaiSurface(se) + +#ifdef __OSTORE__ + +void +SdaiSwept_surface::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSwept_surface: virtual access function." << G4endl; + SdaiSwept_surface_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiSwept_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSwept_surface: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiSwept_surface *ent = (SdaiSwept_surface *)sent; +// SdaiSwept_surface *ent = (SdaiSwept_surface *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_swept_surface; + ent->attributes[1].aDesc = a_190swept_curve; + if(ent->_swept_curve == 0) + ent->_swept_curve = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiSwept_surface(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiSwept_surface::get_os_typespec()) + SdaiSwept_surface; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiSwept_surface::get_os_typespec()) +// SdaiSwept_surface; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiSwept_surface; +} +#endif + +#ifdef __O3DB__ +void +SdaiSwept_surface::oodb_reInit () +{ eDesc = config_control_designe_swept_surface; + attributes [1].aDesc = a_190swept_curve; +} +#endif + +SdaiSwept_surface::SdaiSwept_surface (SCLP23(Application_instance) *se, int *addAttrs) : SdaiSurface(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -20410,30 +36213,43 @@ SdaiSwept_surface::SdaiSwept_surface (STEPentity *se ) : SdaiSurface(se) eDesc = config_control_designe_swept_surface; - STEPattribute * a = new STEPattribute (*a_190swept_curve, (STEPentityH *) &_swept_curve); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_190swept_curve, (SCLP23(Application_instance_ptr) *) &_swept_curve); +#else + STEPattribute *a = new STEPattribute(*a_190swept_curve, (SCLP23(Application_instance_ptr) *) &_swept_curve); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -SdaiCurveH -SdaiSwept_surface::Swept_curve() const - { return (SdaiCurveH) _swept_curve; } +const SdaiCurve_ptr +SdaiSwept_surface::swept_curve_() const +{ + return (SdaiCurve_ptr) _swept_curve; +} void -SdaiSwept_surface::Swept_curve (SdaiCurveH x) - { _swept_curve = x; } +SdaiSwept_surface::swept_curve_ (const SdaiCurve_ptr x) + +{ + _swept_curve = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY swept_surface +///////// END_ENTITY swept_surface -///////// ENTITY property_definition +///////// ENTITY property_definition EntityDescriptor *config_control_designe_property_definition =0; AttrDescriptor *a_191name =0; @@ -20446,22 +36262,98 @@ SdaiProperty_definition::SdaiProperty_definition( ) eDesc = config_control_designe_property_definition; - STEPattribute * a = new STEPattribute (*a_191name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_191name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_191name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_192description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_192description, &_description); +#else + a = new STEPattribute(*a_192description, &_description); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_193definition, &_definition); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_193definition, &_definition); +#else + a = new STEPattribute(*a_193definition, &_definition); +#endif a -> set_null (); attributes.push (a); } SdaiProperty_definition::SdaiProperty_definition (SdaiProperty_definition& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiProperty_definition::~SdaiProperty_definition () { } -SdaiProperty_definition::SdaiProperty_definition( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiProperty_definition::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProperty_definition: virtual access function." << G4endl; + SdaiProperty_definition_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiProperty_definition_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProperty_definition: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiProperty_definition *ent = (SdaiProperty_definition *)sent; +// SdaiProperty_definition *ent = (SdaiProperty_definition *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_property_definition; + ent->attributes[0].aDesc = a_191name; + ent->attributes[1].aDesc = a_192description; + ent->attributes[2].aDesc = a_193definition; +} + +SCLP23(Application_instance_ptr) +create_SdaiProperty_definition(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiProperty_definition::get_os_typespec()) + SdaiProperty_definition; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiProperty_definition::get_os_typespec()) +// SdaiProperty_definition; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiProperty_definition; +} +#endif + +#ifdef __O3DB__ +void +SdaiProperty_definition::oodb_reInit () +{ eDesc = config_control_designe_property_definition; + attributes [0].aDesc = a_191name; + attributes [1].aDesc = a_192description; + attributes [2].aDesc = a_193definition; +} +#endif + +SdaiProperty_definition::SdaiProperty_definition( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -20470,62 +36362,94 @@ SdaiProperty_definition::SdaiProperty_definition( STEPentity *se ) eDesc = config_control_designe_property_definition; - STEPattribute * a = new STEPattribute (*a_191name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_191name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_191name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_192description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_192description, &_description); +#else + a = new STEPattribute(*a_192description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_193definition, &_definition); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_193definition, &_definition); +#else + a = new STEPattribute(*a_193definition, &_definition); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiProperty_definition::Name() const - { return (const SdaiLabel) _name; } +SdaiProperty_definition::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiProperty_definition::Name (const char * x) - { _name = x; } +SdaiProperty_definition::name_ (const SdaiLabel x) + +{ + _name = x; +} const SdaiText -SdaiProperty_definition::Description() const - { return (const SdaiText) _description; } +SdaiProperty_definition::description_() const +{ + return (SdaiText) _description; +} void -SdaiProperty_definition::Description (const char * x) - { _description = x; } +SdaiProperty_definition::description_ (const SdaiText x) -const SdaiCharacterized_definitionH -SdaiProperty_definition::Definition() const - { return (const SdaiCharacterized_definitionH) &_definition; } +{ + _description = x; +} + +const SdaiCharacterized_definition_ptr +SdaiProperty_definition::definition_() const + { return (SdaiCharacterized_definition_ptr) &_definition; } void -SdaiProperty_definition::Definition (SdaiCharacterized_definitionH x) +SdaiProperty_definition::definition_ (const SdaiCharacterized_definition_ptr x) + { _definition = x; } -///////// END_ENTITY property_definition +///////// END_ENTITY property_definition -///////// ENTITY global_uncertainty_assigned_context +///////// ENTITY global_uncertainty_assigned_context EntityDescriptor *config_control_designe_global_uncertainty_assigned_context =0; AttrDescriptor *a_194uncertainty =0; @@ -20538,14 +36462,74 @@ SdaiGlobal_uncertainty_assigned_context::SdaiGlobal_uncertainty_assigned_context eDesc = config_control_designe_global_uncertainty_assigned_context; - STEPattribute * a = new STEPattribute (*a_194uncertainty, &_uncertainty); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_194uncertainty, &_uncertainty); +#else + STEPattribute *a = new STEPattribute(*a_194uncertainty, &_uncertainty); +#endif a -> set_null (); attributes.push (a); } SdaiGlobal_uncertainty_assigned_context::SdaiGlobal_uncertainty_assigned_context (SdaiGlobal_uncertainty_assigned_context& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiGlobal_uncertainty_assigned_context::~SdaiGlobal_uncertainty_assigned_context () { } -SdaiGlobal_uncertainty_assigned_context::SdaiGlobal_uncertainty_assigned_context (STEPentity *se ) : SdaiRepresentation_context(se) + +#ifdef __OSTORE__ + +void +SdaiGlobal_uncertainty_assigned_context::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiGlobal_uncertainty_assigned_context: virtual access function." << G4endl; + SdaiGlobal_uncertainty_assigned_context_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiGlobal_uncertainty_assigned_context_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiGlobal_uncertainty_assigned_context: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiGlobal_uncertainty_assigned_context *ent = (SdaiGlobal_uncertainty_assigned_context *)sent; +// SdaiGlobal_uncertainty_assigned_context *ent = (SdaiGlobal_uncertainty_assigned_context *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_global_uncertainty_assigned_context; + ent->attributes[2].aDesc = a_194uncertainty; +} + +SCLP23(Application_instance_ptr) +create_SdaiGlobal_uncertainty_assigned_context(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiGlobal_uncertainty_assigned_context::get_os_typespec()) + SdaiGlobal_uncertainty_assigned_context; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiGlobal_uncertainty_assigned_context::get_os_typespec()) +// SdaiGlobal_uncertainty_assigned_context; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiGlobal_uncertainty_assigned_context; +} +#endif + +#ifdef __O3DB__ +void +SdaiGlobal_uncertainty_assigned_context::oodb_reInit () +{ eDesc = config_control_designe_global_uncertainty_assigned_context; + attributes [2].aDesc = a_194uncertainty; +} +#endif + +SdaiGlobal_uncertainty_assigned_context::SdaiGlobal_uncertainty_assigned_context (SCLP23(Application_instance) *se, int *addAttrs) : SdaiRepresentation_context(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -20556,30 +36540,40 @@ SdaiGlobal_uncertainty_assigned_context::SdaiGlobal_uncertainty_assigned_context eDesc = config_control_designe_global_uncertainty_assigned_context; - STEPattribute * a = new STEPattribute (*a_194uncertainty, &_uncertainty); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_194uncertainty, &_uncertainty); +#else + STEPattribute *a = new STEPattribute(*a_194uncertainty, &_uncertainty); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -const EntityAggregateH -SdaiGlobal_uncertainty_assigned_context::Uncertainty() const - { return (EntityAggregateH) &_uncertainty; } +const EntityAggregate_ptr +SdaiGlobal_uncertainty_assigned_context::uncertainty_() const +{ + return (EntityAggregate_ptr) &_uncertainty; +} void -SdaiGlobal_uncertainty_assigned_context::Uncertainty (EntityAggregateH x) +SdaiGlobal_uncertainty_assigned_context::uncertainty_ (const EntityAggregate_ptr x) + { _uncertainty.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY global_uncertainty_assigned_context +///////// END_ENTITY global_uncertainty_assigned_context -///////// ENTITY organization_relationship +///////// ENTITY organization_relationship EntityDescriptor *config_control_designe_organization_relationship =0; AttrDescriptor *a_195name =0; @@ -20593,26 +36587,114 @@ SdaiOrganization_relationship::SdaiOrganization_relationship( ) eDesc = config_control_designe_organization_relationship; - STEPattribute * a = new STEPattribute (*a_195name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_195name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_195name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_196description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_196description, &_description); +#else + a = new STEPattribute(*a_196description, &_description); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_197relating_organization, (STEPentityH *) &_relating_organization); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_197relating_organization, (SCLP23(Application_instance_ptr) *) &_relating_organization); +#else + a = new STEPattribute(*a_197relating_organization, (SCLP23(Application_instance_ptr) *) &_relating_organization); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_198related_organization, (STEPentityH *) &_related_organization); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_198related_organization, (SCLP23(Application_instance_ptr) *) &_related_organization); +#else + a = new STEPattribute(*a_198related_organization, (SCLP23(Application_instance_ptr) *) &_related_organization); +#endif a -> set_null (); attributes.push (a); } SdaiOrganization_relationship::SdaiOrganization_relationship (SdaiOrganization_relationship& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiOrganization_relationship::~SdaiOrganization_relationship () { } -SdaiOrganization_relationship::SdaiOrganization_relationship( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiOrganization_relationship::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOrganization_relationship: virtual access function." << G4endl; + SdaiOrganization_relationship_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiOrganization_relationship_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOrganization_relationship: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiOrganization_relationship *ent = (SdaiOrganization_relationship *)sent; +// SdaiOrganization_relationship *ent = (SdaiOrganization_relationship *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_organization_relationship; + ent->attributes[0].aDesc = a_195name; + ent->attributes[1].aDesc = a_196description; + ent->attributes[2].aDesc = a_197relating_organization; + if(ent->_relating_organization == 0) + ent->_relating_organization = S_ENTITY_NULL; + ent->attributes[3].aDesc = a_198related_organization; + if(ent->_related_organization == 0) + ent->_related_organization = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiOrganization_relationship(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiOrganization_relationship::get_os_typespec()) + SdaiOrganization_relationship; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiOrganization_relationship::get_os_typespec()) +// SdaiOrganization_relationship; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiOrganization_relationship; +} +#endif + +#ifdef __O3DB__ +void +SdaiOrganization_relationship::oodb_reInit () +{ eDesc = config_control_designe_organization_relationship; + attributes [0].aDesc = a_195name; + attributes [1].aDesc = a_196description; + attributes [2].aDesc = a_197relating_organization; + attributes [3].aDesc = a_198related_organization; +} +#endif + +SdaiOrganization_relationship::SdaiOrganization_relationship( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -20621,79 +36703,127 @@ SdaiOrganization_relationship::SdaiOrganization_relationship( STEPentity *se ) eDesc = config_control_designe_organization_relationship; - STEPattribute * a = new STEPattribute (*a_195name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_195name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_195name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_196description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_196description, &_description); +#else + a = new STEPattribute(*a_196description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_197relating_organization, (STEPentityH *) &_relating_organization); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_197relating_organization, (SCLP23(Application_instance_ptr) *) &_relating_organization); +#else + a = new STEPattribute(*a_197relating_organization, (SCLP23(Application_instance_ptr) *) &_relating_organization); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_198related_organization, (STEPentityH *) &_related_organization); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_198related_organization, (SCLP23(Application_instance_ptr) *) &_related_organization); +#else + a = new STEPattribute(*a_198related_organization, (SCLP23(Application_instance_ptr) *) &_related_organization); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiOrganization_relationship::Name() const - { return (const SdaiLabel) _name; } +SdaiOrganization_relationship::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiOrganization_relationship::Name (const char * x) - { _name = x; } +SdaiOrganization_relationship::name_ (const SdaiLabel x) + +{ + _name = x; +} const SdaiText -SdaiOrganization_relationship::Description() const - { return (const SdaiText) _description; } +SdaiOrganization_relationship::description_() const +{ + return (SdaiText) _description; +} void -SdaiOrganization_relationship::Description (const char * x) - { _description = x; } +SdaiOrganization_relationship::description_ (const SdaiText x) -SdaiOrganizationH -SdaiOrganization_relationship::Relating_organization() const - { return (SdaiOrganizationH) _relating_organization; } +{ + _description = x; +} + +const SdaiOrganization_ptr +SdaiOrganization_relationship::relating_organization_() const +{ + return (SdaiOrganization_ptr) _relating_organization; +} void -SdaiOrganization_relationship::Relating_organization (SdaiOrganizationH x) - { _relating_organization = x; } +SdaiOrganization_relationship::relating_organization_ (const SdaiOrganization_ptr x) -SdaiOrganizationH -SdaiOrganization_relationship::Related_organization() const - { return (SdaiOrganizationH) _related_organization; } +{ + _relating_organization = x; +} + +const SdaiOrganization_ptr +SdaiOrganization_relationship::related_organization_() const +{ + return (SdaiOrganization_ptr) _related_organization; +} void -SdaiOrganization_relationship::Related_organization (SdaiOrganizationH x) - { _related_organization = x; } +SdaiOrganization_relationship::related_organization_ (const SdaiOrganization_ptr x) -///////// END_ENTITY organization_relationship +{ + _related_organization = x; +} + +///////// END_ENTITY organization_relationship -///////// ENTITY parabola +///////// ENTITY parabola EntityDescriptor *config_control_designe_parabola =0; AttrDescriptor *a_199focal_dist =0; @@ -20706,14 +36836,75 @@ SdaiParabola::SdaiParabola( ) eDesc = config_control_designe_parabola; - STEPattribute * a = new STEPattribute (*a_199focal_dist, &_focal_dist); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_199focal_dist, &_focal_dist); +#else + STEPattribute *a = new STEPattribute(*a_199focal_dist, &_focal_dist); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiParabola::SdaiParabola (SdaiParabola& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiParabola::~SdaiParabola () { } -SdaiParabola::SdaiParabola (STEPentity *se ) : SdaiConic(se) + +#ifdef __OSTORE__ + +void +SdaiParabola::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiParabola: virtual access function." << G4endl; + SdaiParabola_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiParabola_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiParabola: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiParabola *ent = (SdaiParabola *)sent; +// SdaiParabola *ent = (SdaiParabola *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_parabola; + ent->attributes[2].aDesc = a_199focal_dist; +} + +SCLP23(Application_instance_ptr) +create_SdaiParabola(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiParabola::get_os_typespec()) + SdaiParabola; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiParabola::get_os_typespec()) +// SdaiParabola; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiParabola; +} +#endif + +#ifdef __O3DB__ +void +SdaiParabola::oodb_reInit () +{ eDesc = config_control_designe_parabola; + attributes [2].aDesc = a_199focal_dist; +} +#endif + +SdaiParabola::SdaiParabola (SCLP23(Application_instance) *se, int *addAttrs) : SdaiConic(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -20724,35 +36915,48 @@ SdaiParabola::SdaiParabola (STEPentity *se ) : SdaiConic(se) eDesc = config_control_designe_parabola; - STEPattribute * a = new STEPattribute (*a_199focal_dist, &_focal_dist); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_199focal_dist, &_focal_dist); +#else + STEPattribute *a = new STEPattribute(*a_199focal_dist, &_focal_dist); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } const SdaiLength_measure -SdaiParabola::Focal_dist() const - { return (const SdaiLength_measure) _focal_dist; } +SdaiParabola::focal_dist_() const +{ + return (SdaiLength_measure) _focal_dist; +} void -SdaiParabola::Focal_dist (SdaiLength_measure x) - { _focal_dist = x; } +SdaiParabola::focal_dist_ (const SdaiLength_measure x) + +{ + _focal_dist = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY parabola +///////// END_ENTITY parabola -///////// ENTITY rectangular_composite_surface +///////// ENTITY rectangular_composite_surface EntityDescriptor *config_control_designe_rectangular_composite_surface =0; AttrDescriptor *a_200segments =0; -AttrDescriptor *a_201Dn_u =0; -AttrDescriptor *a_202Dn_v =0; +Derived_attribute *a_201Dn_u =0; +Derived_attribute *a_202Dn_v =0; SdaiRectangular_composite_surface::SdaiRectangular_composite_surface( ) { @@ -20762,14 +36966,77 @@ SdaiRectangular_composite_surface::SdaiRectangular_composite_surface( ) eDesc = config_control_designe_rectangular_composite_surface; - STEPattribute * a = new STEPattribute (*a_200segments, &_segments); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_200segments, &_segments); +#else + STEPattribute *a = new STEPattribute(*a_200segments, &_segments); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); + MakeDerived ("n_u"); + MakeDerived ("n_v"); } SdaiRectangular_composite_surface::SdaiRectangular_composite_surface (SdaiRectangular_composite_surface& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiRectangular_composite_surface::~SdaiRectangular_composite_surface () { } -SdaiRectangular_composite_surface::SdaiRectangular_composite_surface (STEPentity *se ) : SdaiBounded_surface(se) + +#ifdef __OSTORE__ + +void +SdaiRectangular_composite_surface::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiRectangular_composite_surface: virtual access function." << G4endl; + SdaiRectangular_composite_surface_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiRectangular_composite_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiRectangular_composite_surface: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiRectangular_composite_surface *ent = (SdaiRectangular_composite_surface *)sent; +// SdaiRectangular_composite_surface *ent = (SdaiRectangular_composite_surface *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_rectangular_composite_surface; + ent->attributes[1].aDesc = a_200segments; +} + +SCLP23(Application_instance_ptr) +create_SdaiRectangular_composite_surface(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiRectangular_composite_surface::get_os_typespec()) + SdaiRectangular_composite_surface; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiRectangular_composite_surface::get_os_typespec()) +// SdaiRectangular_composite_surface; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiRectangular_composite_surface; +} +#endif + +#ifdef __O3DB__ +void +SdaiRectangular_composite_surface::oodb_reInit () +{ eDesc = config_control_designe_rectangular_composite_surface; + attributes [1].aDesc = a_200segments; +} +#endif + +SdaiRectangular_composite_surface::SdaiRectangular_composite_surface (SCLP23(Application_instance) *se, int *addAttrs) : SdaiBounded_surface(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -20780,30 +37047,43 @@ SdaiRectangular_composite_surface::SdaiRectangular_composite_surface (STEPentity eDesc = config_control_designe_rectangular_composite_surface; - STEPattribute * a = new STEPattribute (*a_200segments, &_segments); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_200segments, &_segments); +#else + STEPattribute *a = new STEPattribute(*a_200segments, &_segments); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); + MakeDerived ("n_u"); + MakeDerived ("n_v"); } -const GenericAggregateH -SdaiRectangular_composite_surface::Segments() const - { return (GenericAggregateH) &_segments; } +const GenericAggregate_ptr +SdaiRectangular_composite_surface::segments_() const +{ + return (GenericAggregate_ptr) &_segments; +} void -SdaiRectangular_composite_surface::Segments (GenericAggregateH x) +SdaiRectangular_composite_surface::segments_ (const GenericAggregate_ptr x) + { _segments.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY rectangular_composite_surface +///////// END_ENTITY rectangular_composite_surface -///////// ENTITY lot_effectivity +///////// ENTITY lot_effectivity EntityDescriptor *config_control_designe_lot_effectivity =0; AttrDescriptor *a_203effectivity_lot_id =0; @@ -20817,18 +37097,88 @@ SdaiLot_effectivity::SdaiLot_effectivity( ) eDesc = config_control_designe_lot_effectivity; - STEPattribute * a = new STEPattribute (*a_203effectivity_lot_id, &_effectivity_lot_id); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_203effectivity_lot_id, &_effectivity_lot_id); +#else + STEPattribute *a = new STEPattribute(*a_203effectivity_lot_id, &_effectivity_lot_id); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_204effectivity_lot_size, (STEPentityH *) &_effectivity_lot_size); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_204effectivity_lot_size, (SCLP23(Application_instance_ptr) *) &_effectivity_lot_size); +#else + a = new STEPattribute(*a_204effectivity_lot_size, (SCLP23(Application_instance_ptr) *) &_effectivity_lot_size); +#endif a -> set_null (); attributes.push (a); } SdaiLot_effectivity::SdaiLot_effectivity (SdaiLot_effectivity& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiLot_effectivity::~SdaiLot_effectivity () { } -SdaiLot_effectivity::SdaiLot_effectivity (STEPentity *se ) : SdaiEffectivity(se) + +#ifdef __OSTORE__ + +void +SdaiLot_effectivity::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiLot_effectivity: virtual access function." << G4endl; + SdaiLot_effectivity_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiLot_effectivity_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiLot_effectivity: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiLot_effectivity *ent = (SdaiLot_effectivity *)sent; +// SdaiLot_effectivity *ent = (SdaiLot_effectivity *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_lot_effectivity; + ent->attributes[1].aDesc = a_203effectivity_lot_id; + ent->attributes[2].aDesc = a_204effectivity_lot_size; + if(ent->_effectivity_lot_size == 0) + ent->_effectivity_lot_size = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiLot_effectivity(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiLot_effectivity::get_os_typespec()) + SdaiLot_effectivity; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiLot_effectivity::get_os_typespec()) +// SdaiLot_effectivity; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiLot_effectivity; +} +#endif + +#ifdef __O3DB__ +void +SdaiLot_effectivity::oodb_reInit () +{ eDesc = config_control_designe_lot_effectivity; + attributes [1].aDesc = a_203effectivity_lot_id; + attributes [2].aDesc = a_204effectivity_lot_size; +} +#endif + +SdaiLot_effectivity::SdaiLot_effectivity (SCLP23(Application_instance) *se, int *addAttrs) : SdaiEffectivity(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -20839,47 +37189,71 @@ SdaiLot_effectivity::SdaiLot_effectivity (STEPentity *se ) : SdaiEffectivity(se) eDesc = config_control_designe_lot_effectivity; - STEPattribute * a = new STEPattribute (*a_203effectivity_lot_id, &_effectivity_lot_id); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_203effectivity_lot_id, &_effectivity_lot_id); +#else + STEPattribute *a = new STEPattribute(*a_203effectivity_lot_id, &_effectivity_lot_id); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_204effectivity_lot_size, (STEPentityH *) &_effectivity_lot_size); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_204effectivity_lot_size, (SCLP23(Application_instance_ptr) *) &_effectivity_lot_size); +#else + a = new STEPattribute(*a_204effectivity_lot_size, (SCLP23(Application_instance_ptr) *) &_effectivity_lot_size); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiIdentifier -SdaiLot_effectivity::Effectivity_lot_id() const - { return (const SdaiIdentifier) _effectivity_lot_id; } +SdaiLot_effectivity::effectivity_lot_id_() const +{ + return (SdaiIdentifier) _effectivity_lot_id; +} void -SdaiLot_effectivity::Effectivity_lot_id (const char * x) - { _effectivity_lot_id = x; } +SdaiLot_effectivity::effectivity_lot_id_ (const SdaiIdentifier x) -SdaiMeasure_with_unitH -SdaiLot_effectivity::Effectivity_lot_size() const - { return (SdaiMeasure_with_unitH) _effectivity_lot_size; } +{ + _effectivity_lot_id = x; +} + +const SdaiMeasure_with_unit_ptr +SdaiLot_effectivity::effectivity_lot_size_() const +{ + return (SdaiMeasure_with_unit_ptr) _effectivity_lot_size; +} void -SdaiLot_effectivity::Effectivity_lot_size (SdaiMeasure_with_unitH x) - { _effectivity_lot_size = x; } +SdaiLot_effectivity::effectivity_lot_size_ (const SdaiMeasure_with_unit_ptr x) + +{ + _effectivity_lot_size = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY lot_effectivity +///////// END_ENTITY lot_effectivity -///////// ENTITY surface_of_linear_extrusion +///////// ENTITY surface_of_linear_extrusion EntityDescriptor *config_control_designe_surface_of_linear_extrusion =0; AttrDescriptor *a_205extrusion_axis =0; @@ -20892,14 +37266,77 @@ SdaiSurface_of_linear_extrusion::SdaiSurface_of_linear_extrusion( ) eDesc = config_control_designe_surface_of_linear_extrusion; - STEPattribute * a = new STEPattribute (*a_205extrusion_axis, (STEPentityH *) &_extrusion_axis); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_205extrusion_axis, (SCLP23(Application_instance_ptr) *) &_extrusion_axis); +#else + STEPattribute *a = new STEPattribute(*a_205extrusion_axis, (SCLP23(Application_instance_ptr) *) &_extrusion_axis); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiSurface_of_linear_extrusion::SdaiSurface_of_linear_extrusion (SdaiSurface_of_linear_extrusion& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiSurface_of_linear_extrusion::~SdaiSurface_of_linear_extrusion () { } -SdaiSurface_of_linear_extrusion::SdaiSurface_of_linear_extrusion (STEPentity *se ) : SdaiSwept_surface(se) + +#ifdef __OSTORE__ + +void +SdaiSurface_of_linear_extrusion::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSurface_of_linear_extrusion: virtual access function." << G4endl; + SdaiSurface_of_linear_extrusion_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiSurface_of_linear_extrusion_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSurface_of_linear_extrusion: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiSurface_of_linear_extrusion *ent = (SdaiSurface_of_linear_extrusion *)sent; +// SdaiSurface_of_linear_extrusion *ent = (SdaiSurface_of_linear_extrusion *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_surface_of_linear_extrusion; + ent->attributes[2].aDesc = a_205extrusion_axis; + if(ent->_extrusion_axis == 0) + ent->_extrusion_axis = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiSurface_of_linear_extrusion(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiSurface_of_linear_extrusion::get_os_typespec()) + SdaiSurface_of_linear_extrusion; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiSurface_of_linear_extrusion::get_os_typespec()) +// SdaiSurface_of_linear_extrusion; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiSurface_of_linear_extrusion; +} +#endif + +#ifdef __O3DB__ +void +SdaiSurface_of_linear_extrusion::oodb_reInit () +{ eDesc = config_control_designe_surface_of_linear_extrusion; + attributes [2].aDesc = a_205extrusion_axis; +} +#endif + +SdaiSurface_of_linear_extrusion::SdaiSurface_of_linear_extrusion (SCLP23(Application_instance) *se, int *addAttrs) : SdaiSwept_surface(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -20910,30 +37347,43 @@ SdaiSurface_of_linear_extrusion::SdaiSurface_of_linear_extrusion (STEPentity *se eDesc = config_control_designe_surface_of_linear_extrusion; - STEPattribute * a = new STEPattribute (*a_205extrusion_axis, (STEPentityH *) &_extrusion_axis); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_205extrusion_axis, (SCLP23(Application_instance_ptr) *) &_extrusion_axis); +#else + STEPattribute *a = new STEPattribute(*a_205extrusion_axis, (SCLP23(Application_instance_ptr) *) &_extrusion_axis); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -SdaiVectorH -SdaiSurface_of_linear_extrusion::Extrusion_axis() const - { return (SdaiVectorH) _extrusion_axis; } +const SdaiVector_ptr +SdaiSurface_of_linear_extrusion::extrusion_axis_() const +{ + return (SdaiVector_ptr) _extrusion_axis; +} void -SdaiSurface_of_linear_extrusion::Extrusion_axis (SdaiVectorH x) - { _extrusion_axis = x; } +SdaiSurface_of_linear_extrusion::extrusion_axis_ (const SdaiVector_ptr x) + +{ + _extrusion_axis = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY surface_of_linear_extrusion +///////// END_ENTITY surface_of_linear_extrusion -///////// ENTITY shell_based_surface_model +///////// ENTITY shell_based_surface_model EntityDescriptor *config_control_designe_shell_based_surface_model =0; AttrDescriptor *a_206sbsm_boundary =0; @@ -20946,14 +37396,75 @@ SdaiShell_based_surface_model::SdaiShell_based_surface_model( ) eDesc = config_control_designe_shell_based_surface_model; - STEPattribute * a = new STEPattribute (*a_206sbsm_boundary, &_sbsm_boundary); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_206sbsm_boundary, &_sbsm_boundary); +#else + STEPattribute *a = new STEPattribute(*a_206sbsm_boundary, &_sbsm_boundary); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiShell_based_surface_model::SdaiShell_based_surface_model (SdaiShell_based_surface_model& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiShell_based_surface_model::~SdaiShell_based_surface_model () { } -SdaiShell_based_surface_model::SdaiShell_based_surface_model (STEPentity *se ) : SdaiGeometric_representation_item(se) + +#ifdef __OSTORE__ + +void +SdaiShell_based_surface_model::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiShell_based_surface_model: virtual access function." << G4endl; + SdaiShell_based_surface_model_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiShell_based_surface_model_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiShell_based_surface_model: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiShell_based_surface_model *ent = (SdaiShell_based_surface_model *)sent; +// SdaiShell_based_surface_model *ent = (SdaiShell_based_surface_model *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_shell_based_surface_model; + ent->attributes[1].aDesc = a_206sbsm_boundary; +} + +SCLP23(Application_instance_ptr) +create_SdaiShell_based_surface_model(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiShell_based_surface_model::get_os_typespec()) + SdaiShell_based_surface_model; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiShell_based_surface_model::get_os_typespec()) +// SdaiShell_based_surface_model; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiShell_based_surface_model; +} +#endif + +#ifdef __O3DB__ +void +SdaiShell_based_surface_model::oodb_reInit () +{ eDesc = config_control_designe_shell_based_surface_model; + attributes [1].aDesc = a_206sbsm_boundary; +} +#endif + +SdaiShell_based_surface_model::SdaiShell_based_surface_model (SCLP23(Application_instance) *se, int *addAttrs) : SdaiGeometric_representation_item(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -20964,30 +37475,41 @@ SdaiShell_based_surface_model::SdaiShell_based_surface_model (STEPentity *se ) : eDesc = config_control_designe_shell_based_surface_model; - STEPattribute * a = new STEPattribute (*a_206sbsm_boundary, &_sbsm_boundary); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_206sbsm_boundary, &_sbsm_boundary); +#else + STEPattribute *a = new STEPattribute(*a_206sbsm_boundary, &_sbsm_boundary); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -const SdaiShellsH -SdaiShell_based_surface_model::Sbsm_boundary() const - { return (SdaiShellsH) &_sbsm_boundary; } +const SdaiShells_ptr +SdaiShell_based_surface_model::sbsm_boundary_() const +{ + return (SdaiShells_ptr) &_sbsm_boundary; +} void -SdaiShell_based_surface_model::Sbsm_boundary (SdaiShellsH x) +SdaiShell_based_surface_model::sbsm_boundary_ (const SdaiShells_ptr x) + { _sbsm_boundary.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY shell_based_surface_model +///////// END_ENTITY shell_based_surface_model -///////// ENTITY uniform_curve +///////// ENTITY uniform_curve EntityDescriptor *config_control_designe_uniform_curve =0; SdaiUniform_curve::SdaiUniform_curve( ) @@ -20998,11 +37520,66 @@ SdaiUniform_curve::SdaiUniform_curve( ) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_uniform_curve; + MakeDerived ("dim"); + MakeDerived ("upper_index_on_control_points"); + MakeDerived ("control_points"); } SdaiUniform_curve::SdaiUniform_curve (SdaiUniform_curve& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiUniform_curve::~SdaiUniform_curve () { } -SdaiUniform_curve::SdaiUniform_curve (STEPentity *se ) : SdaiB_spline_curve(se) + +#ifdef __OSTORE__ + +void +SdaiUniform_curve::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiUniform_curve: virtual access function." << G4endl; + SdaiUniform_curve_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiUniform_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiUniform_curve: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiUniform_curve *ent = (SdaiUniform_curve *)sent; +// SdaiUniform_curve *ent = (SdaiUniform_curve *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_uniform_curve; +} + +SCLP23(Application_instance_ptr) +create_SdaiUniform_curve(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiUniform_curve::get_os_typespec()) + SdaiUniform_curve; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiUniform_curve::get_os_typespec()) +// SdaiUniform_curve; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiUniform_curve; +} +#endif + +#ifdef __O3DB__ +void +SdaiUniform_curve::oodb_reInit () +{ eDesc = config_control_designe_uniform_curve; +} +#endif + +SdaiUniform_curve::SdaiUniform_curve (SCLP23(Application_instance) *se, int *addAttrs) : SdaiB_spline_curve(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -21012,14 +37589,17 @@ SdaiUniform_curve::SdaiUniform_curve (STEPentity *se ) : SdaiB_spline_curve(se) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_uniform_curve; + MakeDerived ("dim"); + MakeDerived ("upper_index_on_control_points"); + MakeDerived ("control_points"); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY uniform_curve +///////// END_ENTITY uniform_curve -///////// ENTITY bezier_curve +///////// ENTITY bezier_curve EntityDescriptor *config_control_designe_bezier_curve =0; SdaiBezier_curve::SdaiBezier_curve( ) @@ -21030,11 +37610,66 @@ SdaiBezier_curve::SdaiBezier_curve( ) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_bezier_curve; + MakeDerived ("dim"); + MakeDerived ("upper_index_on_control_points"); + MakeDerived ("control_points"); } SdaiBezier_curve::SdaiBezier_curve (SdaiBezier_curve& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiBezier_curve::~SdaiBezier_curve () { } -SdaiBezier_curve::SdaiBezier_curve (STEPentity *se ) : SdaiB_spline_curve(se) + +#ifdef __OSTORE__ + +void +SdaiBezier_curve::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiBezier_curve: virtual access function." << G4endl; + SdaiBezier_curve_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiBezier_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiBezier_curve: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiBezier_curve *ent = (SdaiBezier_curve *)sent; +// SdaiBezier_curve *ent = (SdaiBezier_curve *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_bezier_curve; +} + +SCLP23(Application_instance_ptr) +create_SdaiBezier_curve(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiBezier_curve::get_os_typespec()) + SdaiBezier_curve; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiBezier_curve::get_os_typespec()) +// SdaiBezier_curve; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiBezier_curve; +} +#endif + +#ifdef __O3DB__ +void +SdaiBezier_curve::oodb_reInit () +{ eDesc = config_control_designe_bezier_curve; +} +#endif + +SdaiBezier_curve::SdaiBezier_curve (SCLP23(Application_instance) *se, int *addAttrs) : SdaiB_spline_curve(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -21044,14 +37679,17 @@ SdaiBezier_curve::SdaiBezier_curve (STEPentity *se ) : SdaiB_spline_curve(se) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_bezier_curve; + MakeDerived ("dim"); + MakeDerived ("upper_index_on_control_points"); + MakeDerived ("control_points"); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY bezier_curve +///////// END_ENTITY bezier_curve -///////// ENTITY loop +///////// ENTITY loop EntityDescriptor *config_control_designe_loop =0; SdaiLoop::SdaiLoop( ) @@ -21064,9 +37702,61 @@ SdaiLoop::SdaiLoop( ) eDesc = config_control_designe_loop; } SdaiLoop::SdaiLoop (SdaiLoop& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiLoop::~SdaiLoop () { } -SdaiLoop::SdaiLoop (STEPentity *se ) : SdaiTopological_representation_item(se) + +#ifdef __OSTORE__ + +void +SdaiLoop::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiLoop: virtual access function." << G4endl; + SdaiLoop_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiLoop_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiLoop: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiLoop *ent = (SdaiLoop *)sent; +// SdaiLoop *ent = (SdaiLoop *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_loop; +} + +SCLP23(Application_instance_ptr) +create_SdaiLoop(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiLoop::get_os_typespec()) + SdaiLoop; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiLoop::get_os_typespec()) +// SdaiLoop; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiLoop; +} +#endif + +#ifdef __O3DB__ +void +SdaiLoop::oodb_reInit () +{ eDesc = config_control_designe_loop; +} +#endif + +SdaiLoop::SdaiLoop (SCLP23(Application_instance) *se, int *addAttrs) : SdaiTopological_representation_item(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -21080,13 +37770,13 @@ SdaiLoop::SdaiLoop (STEPentity *se ) : SdaiTopological_representation_item(se) /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY loop +///////// END_ENTITY loop -///////// ENTITY edge_loop +///////// ENTITY edge_loop EntityDescriptor *config_control_designe_edge_loop =0; -AttrDescriptor *a_207Dne =0; +Derived_attribute *a_207Dne =0; SdaiEdge_loop::SdaiEdge_loop( ) { @@ -21094,14 +37784,81 @@ SdaiEdge_loop::SdaiEdge_loop( ) /* Ignore the first parent since it is */ /* part of the main inheritance hierarchy */ /* parent: SdaiPath */ + HeadEntity(this); +#if 0 + /* Optionally use the following to replace the line following + the endif. Use this to turn off adding attributes in + diamond shaped hierarchies for each additional parent at this + level. You currently must hand edit this for it to work. */ + int attrFlags[3]; // e.g. + attrFlags[0] = 1; // add parents attrs + attrFlags[1] = 1; // add parent of parents attrs + attrFlags[2] = 0; // do not add parent of parent of parents attrs + // In *imaginary* hierarchy turn off attrFlags[2] since it + // would be the parent that has more than one path to it. + AppendMultInstance(new SdaiPath(this, attrFlags)); +#endif AppendMultInstance(new SdaiPath(this)); eDesc = config_control_designe_edge_loop; + MakeDerived ("ne"); } SdaiEdge_loop::SdaiEdge_loop (SdaiEdge_loop& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiEdge_loop::~SdaiEdge_loop () { } -SdaiEdge_loop::SdaiEdge_loop (STEPentity *se ) : SdaiLoop(se) + +#ifdef __OSTORE__ + +void +SdaiEdge_loop::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiEdge_loop: virtual access function." << G4endl; + SdaiEdge_loop_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiEdge_loop_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiEdge_loop: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiEdge_loop *ent = (SdaiEdge_loop *)sent; +// SdaiEdge_loop *ent = (SdaiEdge_loop *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_edge_loop; +} + +SCLP23(Application_instance_ptr) +create_SdaiEdge_loop(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiEdge_loop::get_os_typespec()) + SdaiEdge_loop; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiEdge_loop::get_os_typespec()) +// SdaiEdge_loop; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiEdge_loop; +} +#endif + +#ifdef __O3DB__ +void +SdaiEdge_loop::oodb_reInit () +{ eDesc = config_control_designe_edge_loop; +} +#endif + +SdaiEdge_loop::SdaiEdge_loop (SCLP23(Application_instance) *se, int *addAttrs) : SdaiLoop(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -21110,29 +37867,46 @@ SdaiEdge_loop::SdaiEdge_loop (STEPentity *se ) : SdaiLoop(se) /* Ignore the first parent since it is */ /* part of the main inheritance hierarchy */ /* parent: SdaiPath */ - se->AppendMultInstance(new SdaiPath(se)); +#if 0 + /* Optionally use the following to replace the line following + the endif. Use this to turn off adding attributes in + diamond shaped hierarchies for each additional parent at this + level. You currently must hand edit this for it to work. */ + int attrFlags[3]; // e.g. + attrFlags[0] = 1; // add parents attrs + attrFlags[1] = 1; // add parent of parents attrs + attrFlags[2] = 0; // do not add parent of parent of parents attrs + // In *imaginary* hierarchy turn off attrFlags[2] since it + // would be the parent that has more than one path to it. + se->AppendMultInstance(new SdaiPath(se, attrFlags)); +#endif + se->AppendMultInstance(new SdaiPath(se, 0)); eDesc = config_control_designe_edge_loop; + MakeDerived ("ne"); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ #if 0 -const EntityAggregateH -SdaiEdge_loop::Edge_list() const - { return (EntityAggregateH) &_edge_list; } +const EntityAggregate_ptr +SdaiEdge_loop::edge_list_() const +{ + return (EntityAggregate_ptr) &_edge_list; +} void -SdaiEdge_loop::Edge_list (EntityAggregateH x) +SdaiEdge_loop::edge_list_ (const EntityAggregate_ptr x) + { _edge_list.ShallowCopy (*x); } #endif -///////// END_ENTITY edge_loop +///////// END_ENTITY edge_loop -///////// ENTITY date +///////// ENTITY date EntityDescriptor *config_control_designe_date =0; AttrDescriptor *a_208year_component =0; @@ -21143,14 +37917,74 @@ SdaiDate::SdaiDate( ) eDesc = config_control_designe_date; - STEPattribute * a = new STEPattribute (*a_208year_component, &_year_component); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_208year_component, &_year_component); +#else + STEPattribute *a = new STEPattribute(*a_208year_component, &_year_component); +#endif a -> set_null (); attributes.push (a); } SdaiDate::SdaiDate (SdaiDate& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiDate::~SdaiDate () { } -SdaiDate::SdaiDate( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiDate::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDate: virtual access function." << G4endl; + SdaiDate_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiDate_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDate: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiDate *ent = (SdaiDate *)sent; +// SdaiDate *ent = (SdaiDate *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_date; + ent->attributes[0].aDesc = a_208year_component; +} + +SCLP23(Application_instance_ptr) +create_SdaiDate(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiDate::get_os_typespec()) + SdaiDate; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiDate::get_os_typespec()) +// SdaiDate; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiDate; +} +#endif + +#ifdef __O3DB__ +void +SdaiDate::oodb_reInit () +{ eDesc = config_control_designe_date; + attributes [0].aDesc = a_208year_component; +} +#endif + +SdaiDate::SdaiDate( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -21159,28 +37993,40 @@ SdaiDate::SdaiDate( STEPentity *se ) eDesc = config_control_designe_date; - STEPattribute * a = new STEPattribute (*a_208year_component, &_year_component); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_208year_component, &_year_component); +#else + STEPattribute *a = new STEPattribute(*a_208year_component, &_year_component); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiYear_number -SdaiDate::Year_component() const - { return (const SdaiYear_number) _year_component; } +SdaiDate::year_component_() const +{ + return (SdaiYear_number) _year_component; +} void -SdaiDate::Year_component (SdaiYear_number x) - { _year_component = x; } +SdaiDate::year_component_ (const SdaiYear_number x) -///////// END_ENTITY date +{ + _year_component = x; +} + +///////// END_ENTITY date -///////// ENTITY calendar_date +///////// ENTITY calendar_date EntityDescriptor *config_control_designe_calendar_date =0; AttrDescriptor *a_209day_component =0; @@ -21194,18 +38040,86 @@ SdaiCalendar_date::SdaiCalendar_date( ) eDesc = config_control_designe_calendar_date; - STEPattribute * a = new STEPattribute (*a_209day_component, &_day_component); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_209day_component, &_day_component); +#else + STEPattribute *a = new STEPattribute(*a_209day_component, &_day_component); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_210month_component, &_month_component); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_210month_component, &_month_component); +#else + a = new STEPattribute(*a_210month_component, &_month_component); +#endif a -> set_null (); attributes.push (a); } SdaiCalendar_date::SdaiCalendar_date (SdaiCalendar_date& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiCalendar_date::~SdaiCalendar_date () { } -SdaiCalendar_date::SdaiCalendar_date (STEPentity *se ) : SdaiDate(se) + +#ifdef __OSTORE__ + +void +SdaiCalendar_date::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCalendar_date: virtual access function." << G4endl; + SdaiCalendar_date_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiCalendar_date_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCalendar_date: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiCalendar_date *ent = (SdaiCalendar_date *)sent; +// SdaiCalendar_date *ent = (SdaiCalendar_date *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_calendar_date; + ent->attributes[1].aDesc = a_209day_component; + ent->attributes[2].aDesc = a_210month_component; +} + +SCLP23(Application_instance_ptr) +create_SdaiCalendar_date(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiCalendar_date::get_os_typespec()) + SdaiCalendar_date; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiCalendar_date::get_os_typespec()) +// SdaiCalendar_date; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiCalendar_date; +} +#endif + +#ifdef __O3DB__ +void +SdaiCalendar_date::oodb_reInit () +{ eDesc = config_control_designe_calendar_date; + attributes [1].aDesc = a_209day_component; + attributes [2].aDesc = a_210month_component; +} +#endif + +SdaiCalendar_date::SdaiCalendar_date (SCLP23(Application_instance) *se, int *addAttrs) : SdaiDate(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -21216,47 +38130,71 @@ SdaiCalendar_date::SdaiCalendar_date (STEPentity *se ) : SdaiDate(se) eDesc = config_control_designe_calendar_date; - STEPattribute * a = new STEPattribute (*a_209day_component, &_day_component); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_209day_component, &_day_component); +#else + STEPattribute *a = new STEPattribute(*a_209day_component, &_day_component); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_210month_component, &_month_component); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_210month_component, &_month_component); +#else + a = new STEPattribute(*a_210month_component, &_month_component); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiDay_in_month_number -SdaiCalendar_date::Day_component() const - { return (const SdaiDay_in_month_number) _day_component; } +SdaiCalendar_date::day_component_() const +{ + return (SdaiDay_in_month_number) _day_component; +} void -SdaiCalendar_date::Day_component (SdaiDay_in_month_number x) - { _day_component = x; } +SdaiCalendar_date::day_component_ (const SdaiDay_in_month_number x) + +{ + _day_component = x; +} const SdaiMonth_in_year_number -SdaiCalendar_date::Month_component() const - { return (const SdaiMonth_in_year_number) _month_component; } +SdaiCalendar_date::month_component_() const +{ + return (SdaiMonth_in_year_number) _month_component; +} void -SdaiCalendar_date::Month_component (SdaiMonth_in_year_number x) - { _month_component = x; } +SdaiCalendar_date::month_component_ (const SdaiMonth_in_year_number x) + +{ + _month_component = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY calendar_date +///////// END_ENTITY calendar_date -///////// ENTITY toroidal_surface +///////// ENTITY toroidal_surface EntityDescriptor *config_control_designe_toroidal_surface =0; AttrDescriptor *a_211major_radius =0; @@ -21270,18 +38208,87 @@ SdaiToroidal_surface::SdaiToroidal_surface( ) eDesc = config_control_designe_toroidal_surface; - STEPattribute * a = new STEPattribute (*a_211major_radius, &_major_radius); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_211major_radius, &_major_radius); +#else + STEPattribute *a = new STEPattribute(*a_211major_radius, &_major_radius); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_212minor_radius, &_minor_radius); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_212minor_radius, &_minor_radius); +#else + a = new STEPattribute(*a_212minor_radius, &_minor_radius); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiToroidal_surface::SdaiToroidal_surface (SdaiToroidal_surface& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiToroidal_surface::~SdaiToroidal_surface () { } -SdaiToroidal_surface::SdaiToroidal_surface (STEPentity *se ) : SdaiElementary_surface(se) + +#ifdef __OSTORE__ + +void +SdaiToroidal_surface::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiToroidal_surface: virtual access function." << G4endl; + SdaiToroidal_surface_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiToroidal_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiToroidal_surface: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiToroidal_surface *ent = (SdaiToroidal_surface *)sent; +// SdaiToroidal_surface *ent = (SdaiToroidal_surface *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_toroidal_surface; + ent->attributes[2].aDesc = a_211major_radius; + ent->attributes[3].aDesc = a_212minor_radius; +} + +SCLP23(Application_instance_ptr) +create_SdaiToroidal_surface(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiToroidal_surface::get_os_typespec()) + SdaiToroidal_surface; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiToroidal_surface::get_os_typespec()) +// SdaiToroidal_surface; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiToroidal_surface; +} +#endif + +#ifdef __O3DB__ +void +SdaiToroidal_surface::oodb_reInit () +{ eDesc = config_control_designe_toroidal_surface; + attributes [2].aDesc = a_211major_radius; + attributes [3].aDesc = a_212minor_radius; +} +#endif + +SdaiToroidal_surface::SdaiToroidal_surface (SCLP23(Application_instance) *se, int *addAttrs) : SdaiElementary_surface(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -21292,47 +38299,72 @@ SdaiToroidal_surface::SdaiToroidal_surface (STEPentity *se ) : SdaiElementary_su eDesc = config_control_designe_toroidal_surface; - STEPattribute * a = new STEPattribute (*a_211major_radius, &_major_radius); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_211major_radius, &_major_radius); +#else + STEPattribute *a = new STEPattribute(*a_211major_radius, &_major_radius); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_212minor_radius, &_minor_radius); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_212minor_radius, &_minor_radius); +#else + a = new STEPattribute(*a_212minor_radius, &_minor_radius); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } const SdaiPositive_length_measure -SdaiToroidal_surface::Major_radius() const - { return (const SdaiPositive_length_measure) _major_radius; } +SdaiToroidal_surface::major_radius_() const +{ + return (SdaiPositive_length_measure) _major_radius; +} void -SdaiToroidal_surface::Major_radius (SdaiPositive_length_measure x) - { _major_radius = x; } +SdaiToroidal_surface::major_radius_ (const SdaiPositive_length_measure x) + +{ + _major_radius = x; +} const SdaiPositive_length_measure -SdaiToroidal_surface::Minor_radius() const - { return (const SdaiPositive_length_measure) _minor_radius; } +SdaiToroidal_surface::minor_radius_() const +{ + return (SdaiPositive_length_measure) _minor_radius; +} void -SdaiToroidal_surface::Minor_radius (SdaiPositive_length_measure x) - { _minor_radius = x; } +SdaiToroidal_surface::minor_radius_ (const SdaiPositive_length_measure x) + +{ + _minor_radius = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY toroidal_surface +///////// END_ENTITY toroidal_surface -///////// ENTITY promissory_usage_occurrence +///////// ENTITY promissory_usage_occurrence EntityDescriptor *config_control_designe_promissory_usage_occurrence =0; SdaiPromissory_usage_occurrence::SdaiPromissory_usage_occurrence( ) @@ -21345,9 +38377,61 @@ SdaiPromissory_usage_occurrence::SdaiPromissory_usage_occurrence( ) eDesc = config_control_designe_promissory_usage_occurrence; } SdaiPromissory_usage_occurrence::SdaiPromissory_usage_occurrence (SdaiPromissory_usage_occurrence& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiPromissory_usage_occurrence::~SdaiPromissory_usage_occurrence () { } -SdaiPromissory_usage_occurrence::SdaiPromissory_usage_occurrence (STEPentity *se ) : SdaiAssembly_component_usage(se) + +#ifdef __OSTORE__ + +void +SdaiPromissory_usage_occurrence::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPromissory_usage_occurrence: virtual access function." << G4endl; + SdaiPromissory_usage_occurrence_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiPromissory_usage_occurrence_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPromissory_usage_occurrence: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiPromissory_usage_occurrence *ent = (SdaiPromissory_usage_occurrence *)sent; +// SdaiPromissory_usage_occurrence *ent = (SdaiPromissory_usage_occurrence *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_promissory_usage_occurrence; +} + +SCLP23(Application_instance_ptr) +create_SdaiPromissory_usage_occurrence(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiPromissory_usage_occurrence::get_os_typespec()) + SdaiPromissory_usage_occurrence; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiPromissory_usage_occurrence::get_os_typespec()) +// SdaiPromissory_usage_occurrence; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiPromissory_usage_occurrence; +} +#endif + +#ifdef __O3DB__ +void +SdaiPromissory_usage_occurrence::oodb_reInit () +{ eDesc = config_control_designe_promissory_usage_occurrence; +} +#endif + +SdaiPromissory_usage_occurrence::SdaiPromissory_usage_occurrence (SCLP23(Application_instance) *se, int *addAttrs) : SdaiAssembly_component_usage(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -21361,10 +38445,10 @@ SdaiPromissory_usage_occurrence::SdaiPromissory_usage_occurrence (STEPentity *se /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY promissory_usage_occurrence +///////// END_ENTITY promissory_usage_occurrence -///////// ENTITY approval_assignment +///////// ENTITY approval_assignment EntityDescriptor *config_control_designe_approval_assignment =0; AttrDescriptor *a_213assigned_approval =0; @@ -21375,14 +38459,76 @@ SdaiApproval_assignment::SdaiApproval_assignment( ) eDesc = config_control_designe_approval_assignment; - STEPattribute * a = new STEPattribute (*a_213assigned_approval, (STEPentityH *) &_assigned_approval); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_213assigned_approval, (SCLP23(Application_instance_ptr) *) &_assigned_approval); +#else + STEPattribute *a = new STEPattribute(*a_213assigned_approval, (SCLP23(Application_instance_ptr) *) &_assigned_approval); +#endif a -> set_null (); attributes.push (a); } SdaiApproval_assignment::SdaiApproval_assignment (SdaiApproval_assignment& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiApproval_assignment::~SdaiApproval_assignment () { } -SdaiApproval_assignment::SdaiApproval_assignment( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiApproval_assignment::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiApproval_assignment: virtual access function." << G4endl; + SdaiApproval_assignment_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiApproval_assignment_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiApproval_assignment: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiApproval_assignment *ent = (SdaiApproval_assignment *)sent; +// SdaiApproval_assignment *ent = (SdaiApproval_assignment *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_approval_assignment; + ent->attributes[0].aDesc = a_213assigned_approval; + if(ent->_assigned_approval == 0) + ent->_assigned_approval = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiApproval_assignment(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiApproval_assignment::get_os_typespec()) + SdaiApproval_assignment; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiApproval_assignment::get_os_typespec()) +// SdaiApproval_assignment; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiApproval_assignment; +} +#endif + +#ifdef __O3DB__ +void +SdaiApproval_assignment::oodb_reInit () +{ eDesc = config_control_designe_approval_assignment; + attributes [0].aDesc = a_213assigned_approval; +} +#endif + +SdaiApproval_assignment::SdaiApproval_assignment( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -21391,28 +38537,40 @@ SdaiApproval_assignment::SdaiApproval_assignment( STEPentity *se ) eDesc = config_control_designe_approval_assignment; - STEPattribute * a = new STEPattribute (*a_213assigned_approval, (STEPentityH *) &_assigned_approval); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_213assigned_approval, (SCLP23(Application_instance_ptr) *) &_assigned_approval); +#else + STEPattribute *a = new STEPattribute(*a_213assigned_approval, (SCLP23(Application_instance_ptr) *) &_assigned_approval); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiApprovalH -SdaiApproval_assignment::Assigned_approval() const - { return (SdaiApprovalH) _assigned_approval; } +const SdaiApproval_ptr +SdaiApproval_assignment::assigned_approval_() const +{ + return (SdaiApproval_ptr) _assigned_approval; +} void -SdaiApproval_assignment::Assigned_approval (SdaiApprovalH x) - { _assigned_approval = x; } +SdaiApproval_assignment::assigned_approval_ (const SdaiApproval_ptr x) -///////// END_ENTITY approval_assignment +{ + _assigned_approval = x; +} + +///////// END_ENTITY approval_assignment -///////// ENTITY configuration_item +///////// ENTITY configuration_item EntityDescriptor *config_control_designe_configuration_item =0; AttrDescriptor *a_214id =0; @@ -21427,30 +38585,124 @@ SdaiConfiguration_item::SdaiConfiguration_item( ) eDesc = config_control_designe_configuration_item; - STEPattribute * a = new STEPattribute (*a_214id, &_id); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_214id, &_id); +#else + STEPattribute *a = new STEPattribute(*a_214id, &_id); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_215name, &_name); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_215name, &_name); +#else + a = new STEPattribute(*a_215name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_216description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_216description, &_description); +#else + a = new STEPattribute(*a_216description, &_description); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_217item_concept, (STEPentityH *) &_item_concept); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_217item_concept, (SCLP23(Application_instance_ptr) *) &_item_concept); +#else + a = new STEPattribute(*a_217item_concept, (SCLP23(Application_instance_ptr) *) &_item_concept); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_218purpose, &_purpose); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_218purpose, &_purpose); +#else + a = new STEPattribute(*a_218purpose, &_purpose); +#endif a -> set_null (); attributes.push (a); } SdaiConfiguration_item::SdaiConfiguration_item (SdaiConfiguration_item& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiConfiguration_item::~SdaiConfiguration_item () { } -SdaiConfiguration_item::SdaiConfiguration_item( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiConfiguration_item::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiConfiguration_item: virtual access function." << G4endl; + SdaiConfiguration_item_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiConfiguration_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiConfiguration_item: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiConfiguration_item *ent = (SdaiConfiguration_item *)sent; +// SdaiConfiguration_item *ent = (SdaiConfiguration_item *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_configuration_item; + ent->attributes[0].aDesc = a_214id; + ent->attributes[1].aDesc = a_215name; + ent->attributes[2].aDesc = a_216description; + ent->attributes[3].aDesc = a_217item_concept; + if(ent->_item_concept == 0) + ent->_item_concept = S_ENTITY_NULL; + ent->attributes[4].aDesc = a_218purpose; +} + +SCLP23(Application_instance_ptr) +create_SdaiConfiguration_item(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiConfiguration_item::get_os_typespec()) + SdaiConfiguration_item; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiConfiguration_item::get_os_typespec()) +// SdaiConfiguration_item; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiConfiguration_item; +} +#endif + +#ifdef __O3DB__ +void +SdaiConfiguration_item::oodb_reInit () +{ eDesc = config_control_designe_configuration_item; + attributes [0].aDesc = a_214id; + attributes [1].aDesc = a_215name; + attributes [2].aDesc = a_216description; + attributes [3].aDesc = a_217item_concept; + attributes [4].aDesc = a_218purpose; +} +#endif + +SdaiConfiguration_item::SdaiConfiguration_item( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -21459,96 +38711,156 @@ SdaiConfiguration_item::SdaiConfiguration_item( STEPentity *se ) eDesc = config_control_designe_configuration_item; - STEPattribute * a = new STEPattribute (*a_214id, &_id); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_214id, &_id); +#else + STEPattribute *a = new STEPattribute(*a_214id, &_id); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_215name, &_name); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_215name, &_name); +#else + a = new STEPattribute(*a_215name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_216description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_216description, &_description); +#else + a = new STEPattribute(*a_216description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_217item_concept, (STEPentityH *) &_item_concept); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_217item_concept, (SCLP23(Application_instance_ptr) *) &_item_concept); +#else + a = new STEPattribute(*a_217item_concept, (SCLP23(Application_instance_ptr) *) &_item_concept); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_218purpose, &_purpose); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_218purpose, &_purpose); +#else + a = new STEPattribute(*a_218purpose, &_purpose); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiIdentifier -SdaiConfiguration_item::Id() const - { return (const SdaiIdentifier) _id; } +SdaiConfiguration_item::id_() const +{ + return (SdaiIdentifier) _id; +} void -SdaiConfiguration_item::Id (const char * x) - { _id = x; } +SdaiConfiguration_item::id_ (const SdaiIdentifier x) + +{ + _id = x; +} const SdaiLabel -SdaiConfiguration_item::Name() const - { return (const SdaiLabel) _name; } +SdaiConfiguration_item::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiConfiguration_item::Name (const char * x) - { _name = x; } +SdaiConfiguration_item::name_ (const SdaiLabel x) + +{ + _name = x; +} const SdaiText -SdaiConfiguration_item::Description() const - { return (const SdaiText) _description; } +SdaiConfiguration_item::description_() const +{ + return (SdaiText) _description; +} void -SdaiConfiguration_item::Description (const char * x) - { _description = x; } +SdaiConfiguration_item::description_ (const SdaiText x) -SdaiProduct_conceptH -SdaiConfiguration_item::Item_concept() const - { return (SdaiProduct_conceptH) _item_concept; } +{ + _description = x; +} + +const SdaiProduct_concept_ptr +SdaiConfiguration_item::item_concept_() const +{ + return (SdaiProduct_concept_ptr) _item_concept; +} void -SdaiConfiguration_item::Item_concept (SdaiProduct_conceptH x) - { _item_concept = x; } +SdaiConfiguration_item::item_concept_ (const SdaiProduct_concept_ptr x) + +{ + _item_concept = x; +} const SdaiLabel -SdaiConfiguration_item::Purpose() const - { return (const SdaiLabel) _purpose; } +SdaiConfiguration_item::purpose_() const +{ + return (SdaiLabel) _purpose; +} void -SdaiConfiguration_item::Purpose (const char * x) - { _purpose = x; } +SdaiConfiguration_item::purpose_ (const SdaiLabel x) -///////// END_ENTITY configuration_item +{ + _purpose = x; +} + +///////// END_ENTITY configuration_item -///////// ENTITY contract_assignment +///////// ENTITY contract_assignment EntityDescriptor *config_control_designe_contract_assignment =0; AttrDescriptor *a_219assigned_contract =0; @@ -21559,14 +38871,76 @@ SdaiContract_assignment::SdaiContract_assignment( ) eDesc = config_control_designe_contract_assignment; - STEPattribute * a = new STEPattribute (*a_219assigned_contract, (STEPentityH *) &_assigned_contract); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_219assigned_contract, (SCLP23(Application_instance_ptr) *) &_assigned_contract); +#else + STEPattribute *a = new STEPattribute(*a_219assigned_contract, (SCLP23(Application_instance_ptr) *) &_assigned_contract); +#endif a -> set_null (); attributes.push (a); } SdaiContract_assignment::SdaiContract_assignment (SdaiContract_assignment& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiContract_assignment::~SdaiContract_assignment () { } -SdaiContract_assignment::SdaiContract_assignment( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiContract_assignment::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiContract_assignment: virtual access function." << G4endl; + SdaiContract_assignment_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiContract_assignment_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiContract_assignment: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiContract_assignment *ent = (SdaiContract_assignment *)sent; +// SdaiContract_assignment *ent = (SdaiContract_assignment *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_contract_assignment; + ent->attributes[0].aDesc = a_219assigned_contract; + if(ent->_assigned_contract == 0) + ent->_assigned_contract = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiContract_assignment(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiContract_assignment::get_os_typespec()) + SdaiContract_assignment; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiContract_assignment::get_os_typespec()) +// SdaiContract_assignment; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiContract_assignment; +} +#endif + +#ifdef __O3DB__ +void +SdaiContract_assignment::oodb_reInit () +{ eDesc = config_control_designe_contract_assignment; + attributes [0].aDesc = a_219assigned_contract; +} +#endif + +SdaiContract_assignment::SdaiContract_assignment( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -21575,28 +38949,40 @@ SdaiContract_assignment::SdaiContract_assignment( STEPentity *se ) eDesc = config_control_designe_contract_assignment; - STEPattribute * a = new STEPattribute (*a_219assigned_contract, (STEPentityH *) &_assigned_contract); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_219assigned_contract, (SCLP23(Application_instance_ptr) *) &_assigned_contract); +#else + STEPattribute *a = new STEPattribute(*a_219assigned_contract, (SCLP23(Application_instance_ptr) *) &_assigned_contract); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiContractH -SdaiContract_assignment::Assigned_contract() const - { return (SdaiContractH) _assigned_contract; } +const SdaiContract_ptr +SdaiContract_assignment::assigned_contract_() const +{ + return (SdaiContract_ptr) _assigned_contract; +} void -SdaiContract_assignment::Assigned_contract (SdaiContractH x) - { _assigned_contract = x; } +SdaiContract_assignment::assigned_contract_ (const SdaiContract_ptr x) -///////// END_ENTITY contract_assignment +{ + _assigned_contract = x; +} + +///////// END_ENTITY contract_assignment -///////// ENTITY vector +///////// ENTITY vector EntityDescriptor *config_control_designe_vector =0; AttrDescriptor *a_220orientation =0; @@ -21610,18 +38996,89 @@ SdaiVector::SdaiVector( ) eDesc = config_control_designe_vector; - STEPattribute * a = new STEPattribute (*a_220orientation, (STEPentityH *) &_orientation); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_220orientation, (SCLP23(Application_instance_ptr) *) &_orientation); +#else + STEPattribute *a = new STEPattribute(*a_220orientation, (SCLP23(Application_instance_ptr) *) &_orientation); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_221magnitude, &_magnitude); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_221magnitude, &_magnitude); +#else + a = new STEPattribute(*a_221magnitude, &_magnitude); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiVector::SdaiVector (SdaiVector& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiVector::~SdaiVector () { } -SdaiVector::SdaiVector (STEPentity *se ) : SdaiGeometric_representation_item(se) + +#ifdef __OSTORE__ + +void +SdaiVector::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiVector: virtual access function." << G4endl; + SdaiVector_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiVector_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiVector: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiVector *ent = (SdaiVector *)sent; +// SdaiVector *ent = (SdaiVector *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_vector; + ent->attributes[1].aDesc = a_220orientation; + if(ent->_orientation == 0) + ent->_orientation = S_ENTITY_NULL; + ent->attributes[2].aDesc = a_221magnitude; +} + +SCLP23(Application_instance_ptr) +create_SdaiVector(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiVector::get_os_typespec()) + SdaiVector; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiVector::get_os_typespec()) +// SdaiVector; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiVector; +} +#endif + +#ifdef __O3DB__ +void +SdaiVector::oodb_reInit () +{ eDesc = config_control_designe_vector; + attributes [1].aDesc = a_220orientation; + attributes [2].aDesc = a_221magnitude; +} +#endif + +SdaiVector::SdaiVector (SCLP23(Application_instance) *se, int *addAttrs) : SdaiGeometric_representation_item(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -21632,47 +39089,72 @@ SdaiVector::SdaiVector (STEPentity *se ) : SdaiGeometric_representation_item(se) eDesc = config_control_designe_vector; - STEPattribute * a = new STEPattribute (*a_220orientation, (STEPentityH *) &_orientation); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_220orientation, (SCLP23(Application_instance_ptr) *) &_orientation); +#else + STEPattribute *a = new STEPattribute(*a_220orientation, (SCLP23(Application_instance_ptr) *) &_orientation); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_221magnitude, &_magnitude); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_221magnitude, &_magnitude); +#else + a = new STEPattribute(*a_221magnitude, &_magnitude); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -SdaiDirectionH -SdaiVector::Orientation() const - { return (SdaiDirectionH) _orientation; } +const SdaiDirection_ptr +SdaiVector::orientation_() const +{ + return (SdaiDirection_ptr) _orientation; +} void -SdaiVector::Orientation (SdaiDirectionH x) - { _orientation = x; } +SdaiVector::orientation_ (const SdaiDirection_ptr x) + +{ + _orientation = x; +} const SdaiLength_measure -SdaiVector::Magnitude() const - { return (const SdaiLength_measure) _magnitude; } +SdaiVector::magnitude_() const +{ + return (SdaiLength_measure) _magnitude; +} void -SdaiVector::Magnitude (SdaiLength_measure x) - { _magnitude = x; } +SdaiVector::magnitude_ (const SdaiLength_measure x) + +{ + _magnitude = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY vector +///////// END_ENTITY vector -///////// ENTITY intersection_curve +///////// ENTITY intersection_curve EntityDescriptor *config_control_designe_intersection_curve =0; SdaiIntersection_curve::SdaiIntersection_curve( ) @@ -21683,11 +39165,65 @@ SdaiIntersection_curve::SdaiIntersection_curve( ) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_intersection_curve; + MakeDerived ("dim"); + MakeDerived ("basis_surface"); } SdaiIntersection_curve::SdaiIntersection_curve (SdaiIntersection_curve& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiIntersection_curve::~SdaiIntersection_curve () { } -SdaiIntersection_curve::SdaiIntersection_curve (STEPentity *se ) : SdaiSurface_curve(se) + +#ifdef __OSTORE__ + +void +SdaiIntersection_curve::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiIntersection_curve: virtual access function." << G4endl; + SdaiIntersection_curve_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiIntersection_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiIntersection_curve: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiIntersection_curve *ent = (SdaiIntersection_curve *)sent; +// SdaiIntersection_curve *ent = (SdaiIntersection_curve *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_intersection_curve; +} + +SCLP23(Application_instance_ptr) +create_SdaiIntersection_curve(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiIntersection_curve::get_os_typespec()) + SdaiIntersection_curve; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiIntersection_curve::get_os_typespec()) +// SdaiIntersection_curve; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiIntersection_curve; +} +#endif + +#ifdef __O3DB__ +void +SdaiIntersection_curve::oodb_reInit () +{ eDesc = config_control_designe_intersection_curve; +} +#endif + +SdaiIntersection_curve::SdaiIntersection_curve (SCLP23(Application_instance) *se, int *addAttrs) : SdaiSurface_curve(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -21697,14 +39233,16 @@ SdaiIntersection_curve::SdaiIntersection_curve (STEPentity *se ) : SdaiSurface_c /* part of the main inheritance hierarchy */ eDesc = config_control_designe_intersection_curve; + MakeDerived ("dim"); + MakeDerived ("basis_surface"); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY intersection_curve +///////// END_ENTITY intersection_curve -///////// ENTITY trimmed_curve +///////// ENTITY trimmed_curve EntityDescriptor *config_control_designe_trimmed_curve =0; AttrDescriptor *a_222basis_curve =0; @@ -21721,30 +39259,125 @@ SdaiTrimmed_curve::SdaiTrimmed_curve( ) eDesc = config_control_designe_trimmed_curve; - STEPattribute * a = new STEPattribute (*a_222basis_curve, (STEPentityH *) &_basis_curve); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_222basis_curve, (SCLP23(Application_instance_ptr) *) &_basis_curve); +#else + STEPattribute *a = new STEPattribute(*a_222basis_curve, (SCLP23(Application_instance_ptr) *) &_basis_curve); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_223trim_1, &_trim_1); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_223trim_1, &_trim_1); +#else + a = new STEPattribute(*a_223trim_1, &_trim_1); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_224trim_2, &_trim_2); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_224trim_2, &_trim_2); +#else + a = new STEPattribute(*a_224trim_2, &_trim_2); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_225sense_agreement, &_sense_agreement); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_225sense_agreement, &_sense_agreement); +#else + a = new STEPattribute(*a_225sense_agreement, &_sense_agreement); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_226master_representation, &_master_representation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_226master_representation, &_master_representation); +#else + a = new STEPattribute(*a_226master_representation, &_master_representation); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiTrimmed_curve::SdaiTrimmed_curve (SdaiTrimmed_curve& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiTrimmed_curve::~SdaiTrimmed_curve () { } -SdaiTrimmed_curve::SdaiTrimmed_curve (STEPentity *se ) : SdaiBounded_curve(se) + +#ifdef __OSTORE__ + +void +SdaiTrimmed_curve::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiTrimmed_curve: virtual access function." << G4endl; + SdaiTrimmed_curve_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiTrimmed_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiTrimmed_curve: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiTrimmed_curve *ent = (SdaiTrimmed_curve *)sent; +// SdaiTrimmed_curve *ent = (SdaiTrimmed_curve *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_trimmed_curve; + ent->attributes[1].aDesc = a_222basis_curve; + if(ent->_basis_curve == 0) + ent->_basis_curve = S_ENTITY_NULL; + ent->attributes[2].aDesc = a_223trim_1; + ent->attributes[3].aDesc = a_224trim_2; + ent->attributes[4].aDesc = a_225sense_agreement; + ent->attributes[5].aDesc = a_226master_representation; +} + +SCLP23(Application_instance_ptr) +create_SdaiTrimmed_curve(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiTrimmed_curve::get_os_typespec()) + SdaiTrimmed_curve; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiTrimmed_curve::get_os_typespec()) +// SdaiTrimmed_curve; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiTrimmed_curve; +} +#endif + +#ifdef __O3DB__ +void +SdaiTrimmed_curve::oodb_reInit () +{ eDesc = config_control_designe_trimmed_curve; + attributes [1].aDesc = a_222basis_curve; + attributes [2].aDesc = a_223trim_1; + attributes [3].aDesc = a_224trim_2; + attributes [4].aDesc = a_225sense_agreement; + attributes [5].aDesc = a_226master_representation; +} +#endif + +SdaiTrimmed_curve::SdaiTrimmed_curve (SCLP23(Application_instance) *se, int *addAttrs) : SdaiBounded_curve(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -21755,98 +39388,155 @@ SdaiTrimmed_curve::SdaiTrimmed_curve (STEPentity *se ) : SdaiBounded_curve(se) eDesc = config_control_designe_trimmed_curve; - STEPattribute * a = new STEPattribute (*a_222basis_curve, (STEPentityH *) &_basis_curve); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_222basis_curve, (SCLP23(Application_instance_ptr) *) &_basis_curve); +#else + STEPattribute *a = new STEPattribute(*a_222basis_curve, (SCLP23(Application_instance_ptr) *) &_basis_curve); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_223trim_1, &_trim_1); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_223trim_1, &_trim_1); +#else + a = new STEPattribute(*a_223trim_1, &_trim_1); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_224trim_2, &_trim_2); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_224trim_2, &_trim_2); +#else + a = new STEPattribute(*a_224trim_2, &_trim_2); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_225sense_agreement, &_sense_agreement); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_225sense_agreement, &_sense_agreement); +#else + a = new STEPattribute(*a_225sense_agreement, &_sense_agreement); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_226master_representation, &_master_representation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_226master_representation, &_master_representation); +#else + a = new STEPattribute(*a_226master_representation, &_master_representation); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -SdaiCurveH -SdaiTrimmed_curve::Basis_curve() const - { return (SdaiCurveH) _basis_curve; } +const SdaiCurve_ptr +SdaiTrimmed_curve::basis_curve_() const +{ + return (SdaiCurve_ptr) _basis_curve; +} void -SdaiTrimmed_curve::Basis_curve (SdaiCurveH x) - { _basis_curve = x; } +SdaiTrimmed_curve::basis_curve_ (const SdaiCurve_ptr x) -const SdaiTrimming_selectsH -SdaiTrimmed_curve::Trim_1() const - { return (SdaiTrimming_selectsH) &_trim_1; } +{ + _basis_curve = x; +} + +const SdaiTrimming_selects_ptr +SdaiTrimmed_curve::trim_1_() const +{ + return (SdaiTrimming_selects_ptr) &_trim_1; +} void -SdaiTrimmed_curve::Trim_1 (SdaiTrimming_selectsH x) +SdaiTrimmed_curve::trim_1_ (const SdaiTrimming_selects_ptr x) + { _trim_1.ShallowCopy (*x); } -const SdaiTrimming_selectsH -SdaiTrimmed_curve::Trim_2() const - { return (SdaiTrimming_selectsH) &_trim_2; } +const SdaiTrimming_selects_ptr +SdaiTrimmed_curve::trim_2_() const +{ + return (SdaiTrimming_selects_ptr) &_trim_2; +} void -SdaiTrimmed_curve::Trim_2 (SdaiTrimming_selectsH x) +SdaiTrimmed_curve::trim_2_ (const SdaiTrimming_selects_ptr x) + { _trim_2.ShallowCopy (*x); } -const BOOLEAN -SdaiTrimmed_curve::Sense_agreement() const - { return (LOGICAL) _sense_agreement; } +const SCLBOOL(Bool) +SdaiTrimmed_curve::sense_agreement_() const +{ + return (SCLBOOL(Bool)) _sense_agreement; +} void -SdaiTrimmed_curve::Sense_agreement (BOOLEAN x) - { _sense_agreement.put (x); } +SdaiTrimmed_curve::sense_agreement_ (const SCLBOOL(Bool) x) -const sdaiTrimming_preference -SdaiTrimmed_curve::Master_representation() const - { return (sdaiTrimming_preference) _master_representation; } +{ + _sense_agreement.put (x); +} + +const SdaiTrimming_preference_var +SdaiTrimmed_curve::master_representation_() const +{ + return (Trimming_preference) _master_representation; +} void -SdaiTrimmed_curve::Master_representation (sdaiTrimming_preference x) - { _master_representation.put (x); } +SdaiTrimmed_curve::master_representation_ (const SdaiTrimming_preference_var x) + +{ + _master_representation.put (x); +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY trimmed_curve +///////// END_ENTITY trimmed_curve -///////// ENTITY product_definition_context +///////// ENTITY product_definition_context EntityDescriptor *config_control_designe_product_definition_context =0; AttrDescriptor *a_227life_cycle_stage =0; @@ -21859,14 +39549,74 @@ SdaiProduct_definition_context::SdaiProduct_definition_context( ) eDesc = config_control_designe_product_definition_context; - STEPattribute * a = new STEPattribute (*a_227life_cycle_stage, &_life_cycle_stage); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_227life_cycle_stage, &_life_cycle_stage); +#else + STEPattribute *a = new STEPattribute(*a_227life_cycle_stage, &_life_cycle_stage); +#endif a -> set_null (); attributes.push (a); } SdaiProduct_definition_context::SdaiProduct_definition_context (SdaiProduct_definition_context& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiProduct_definition_context::~SdaiProduct_definition_context () { } -SdaiProduct_definition_context::SdaiProduct_definition_context (STEPentity *se ) : SdaiApplication_context_element(se) + +#ifdef __OSTORE__ + +void +SdaiProduct_definition_context::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_definition_context: virtual access function." << G4endl; + SdaiProduct_definition_context_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiProduct_definition_context_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_definition_context: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiProduct_definition_context *ent = (SdaiProduct_definition_context *)sent; +// SdaiProduct_definition_context *ent = (SdaiProduct_definition_context *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_product_definition_context; + ent->attributes[2].aDesc = a_227life_cycle_stage; +} + +SCLP23(Application_instance_ptr) +create_SdaiProduct_definition_context(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiProduct_definition_context::get_os_typespec()) + SdaiProduct_definition_context; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiProduct_definition_context::get_os_typespec()) +// SdaiProduct_definition_context; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiProduct_definition_context; +} +#endif + +#ifdef __O3DB__ +void +SdaiProduct_definition_context::oodb_reInit () +{ eDesc = config_control_designe_product_definition_context; + attributes [2].aDesc = a_227life_cycle_stage; +} +#endif + +SdaiProduct_definition_context::SdaiProduct_definition_context (SCLP23(Application_instance) *se, int *addAttrs) : SdaiApplication_context_element(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -21877,30 +39627,42 @@ SdaiProduct_definition_context::SdaiProduct_definition_context (STEPentity *se ) eDesc = config_control_designe_product_definition_context; - STEPattribute * a = new STEPattribute (*a_227life_cycle_stage, &_life_cycle_stage); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_227life_cycle_stage, &_life_cycle_stage); +#else + STEPattribute *a = new STEPattribute(*a_227life_cycle_stage, &_life_cycle_stage); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiProduct_definition_context::Life_cycle_stage() const - { return (const SdaiLabel) _life_cycle_stage; } +SdaiProduct_definition_context::life_cycle_stage_() const +{ + return (SdaiLabel) _life_cycle_stage; +} void -SdaiProduct_definition_context::Life_cycle_stage (const char * x) - { _life_cycle_stage = x; } +SdaiProduct_definition_context::life_cycle_stage_ (const SdaiLabel x) + +{ + _life_cycle_stage = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY product_definition_context +///////// END_ENTITY product_definition_context -///////// ENTITY item_defined_transformation +///////// ENTITY item_defined_transformation EntityDescriptor *config_control_designe_item_defined_transformation =0; AttrDescriptor *a_228name =0; @@ -21914,26 +39676,114 @@ SdaiItem_defined_transformation::SdaiItem_defined_transformation( ) eDesc = config_control_designe_item_defined_transformation; - STEPattribute * a = new STEPattribute (*a_228name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_228name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_228name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_229description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_229description, &_description); +#else + a = new STEPattribute(*a_229description, &_description); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_230transform_item_1, (STEPentityH *) &_transform_item_1); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_230transform_item_1, (SCLP23(Application_instance_ptr) *) &_transform_item_1); +#else + a = new STEPattribute(*a_230transform_item_1, (SCLP23(Application_instance_ptr) *) &_transform_item_1); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_231transform_item_2, (STEPentityH *) &_transform_item_2); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_231transform_item_2, (SCLP23(Application_instance_ptr) *) &_transform_item_2); +#else + a = new STEPattribute(*a_231transform_item_2, (SCLP23(Application_instance_ptr) *) &_transform_item_2); +#endif a -> set_null (); attributes.push (a); } SdaiItem_defined_transformation::SdaiItem_defined_transformation (SdaiItem_defined_transformation& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiItem_defined_transformation::~SdaiItem_defined_transformation () { } -SdaiItem_defined_transformation::SdaiItem_defined_transformation( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiItem_defined_transformation::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiItem_defined_transformation: virtual access function." << G4endl; + SdaiItem_defined_transformation_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiItem_defined_transformation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiItem_defined_transformation: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiItem_defined_transformation *ent = (SdaiItem_defined_transformation *)sent; +// SdaiItem_defined_transformation *ent = (SdaiItem_defined_transformation *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_item_defined_transformation; + ent->attributes[0].aDesc = a_228name; + ent->attributes[1].aDesc = a_229description; + ent->attributes[2].aDesc = a_230transform_item_1; + if(ent->_transform_item_1 == 0) + ent->_transform_item_1 = S_ENTITY_NULL; + ent->attributes[3].aDesc = a_231transform_item_2; + if(ent->_transform_item_2 == 0) + ent->_transform_item_2 = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiItem_defined_transformation(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiItem_defined_transformation::get_os_typespec()) + SdaiItem_defined_transformation; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiItem_defined_transformation::get_os_typespec()) +// SdaiItem_defined_transformation; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiItem_defined_transformation; +} +#endif + +#ifdef __O3DB__ +void +SdaiItem_defined_transformation::oodb_reInit () +{ eDesc = config_control_designe_item_defined_transformation; + attributes [0].aDesc = a_228name; + attributes [1].aDesc = a_229description; + attributes [2].aDesc = a_230transform_item_1; + attributes [3].aDesc = a_231transform_item_2; +} +#endif + +SdaiItem_defined_transformation::SdaiItem_defined_transformation( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -21942,79 +39792,127 @@ SdaiItem_defined_transformation::SdaiItem_defined_transformation( STEPentity *se eDesc = config_control_designe_item_defined_transformation; - STEPattribute * a = new STEPattribute (*a_228name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_228name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_228name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_229description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_229description, &_description); +#else + a = new STEPattribute(*a_229description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_230transform_item_1, (STEPentityH *) &_transform_item_1); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_230transform_item_1, (SCLP23(Application_instance_ptr) *) &_transform_item_1); +#else + a = new STEPattribute(*a_230transform_item_1, (SCLP23(Application_instance_ptr) *) &_transform_item_1); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_231transform_item_2, (STEPentityH *) &_transform_item_2); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_231transform_item_2, (SCLP23(Application_instance_ptr) *) &_transform_item_2); +#else + a = new STEPattribute(*a_231transform_item_2, (SCLP23(Application_instance_ptr) *) &_transform_item_2); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiItem_defined_transformation::Name() const - { return (const SdaiLabel) _name; } +SdaiItem_defined_transformation::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiItem_defined_transformation::Name (const char * x) - { _name = x; } +SdaiItem_defined_transformation::name_ (const SdaiLabel x) + +{ + _name = x; +} const SdaiText -SdaiItem_defined_transformation::Description() const - { return (const SdaiText) _description; } +SdaiItem_defined_transformation::description_() const +{ + return (SdaiText) _description; +} void -SdaiItem_defined_transformation::Description (const char * x) - { _description = x; } +SdaiItem_defined_transformation::description_ (const SdaiText x) -SdaiRepresentation_itemH -SdaiItem_defined_transformation::Transform_item_1() const - { return (SdaiRepresentation_itemH) _transform_item_1; } +{ + _description = x; +} + +const SdaiRepresentation_item_ptr +SdaiItem_defined_transformation::transform_item_1_() const +{ + return (SdaiRepresentation_item_ptr) _transform_item_1; +} void -SdaiItem_defined_transformation::Transform_item_1 (SdaiRepresentation_itemH x) - { _transform_item_1 = x; } +SdaiItem_defined_transformation::transform_item_1_ (const SdaiRepresentation_item_ptr x) -SdaiRepresentation_itemH -SdaiItem_defined_transformation::Transform_item_2() const - { return (SdaiRepresentation_itemH) _transform_item_2; } +{ + _transform_item_1 = x; +} + +const SdaiRepresentation_item_ptr +SdaiItem_defined_transformation::transform_item_2_() const +{ + return (SdaiRepresentation_item_ptr) _transform_item_2; +} void -SdaiItem_defined_transformation::Transform_item_2 (SdaiRepresentation_itemH x) - { _transform_item_2 = x; } +SdaiItem_defined_transformation::transform_item_2_ (const SdaiRepresentation_item_ptr x) -///////// END_ENTITY item_defined_transformation +{ + _transform_item_2 = x; +} + +///////// END_ENTITY item_defined_transformation -///////// ENTITY action_method +///////// ENTITY action_method EntityDescriptor *config_control_designe_action_method =0; AttrDescriptor *a_232name =0; @@ -22028,26 +39926,110 @@ SdaiAction_method::SdaiAction_method( ) eDesc = config_control_designe_action_method; - STEPattribute * a = new STEPattribute (*a_232name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_232name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_232name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_233description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_233description, &_description); +#else + a = new STEPattribute(*a_233description, &_description); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_234consequence, &_consequence); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_234consequence, &_consequence); +#else + a = new STEPattribute(*a_234consequence, &_consequence); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_235purpose, &_purpose); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_235purpose, &_purpose); +#else + a = new STEPattribute(*a_235purpose, &_purpose); +#endif a -> set_null (); attributes.push (a); } SdaiAction_method::SdaiAction_method (SdaiAction_method& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiAction_method::~SdaiAction_method () { } -SdaiAction_method::SdaiAction_method( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiAction_method::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAction_method: virtual access function." << G4endl; + SdaiAction_method_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiAction_method_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAction_method: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiAction_method *ent = (SdaiAction_method *)sent; +// SdaiAction_method *ent = (SdaiAction_method *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_action_method; + ent->attributes[0].aDesc = a_232name; + ent->attributes[1].aDesc = a_233description; + ent->attributes[2].aDesc = a_234consequence; + ent->attributes[3].aDesc = a_235purpose; +} + +SCLP23(Application_instance_ptr) +create_SdaiAction_method(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiAction_method::get_os_typespec()) + SdaiAction_method; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiAction_method::get_os_typespec()) +// SdaiAction_method; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiAction_method; +} +#endif + +#ifdef __O3DB__ +void +SdaiAction_method::oodb_reInit () +{ eDesc = config_control_designe_action_method; + attributes [0].aDesc = a_232name; + attributes [1].aDesc = a_233description; + attributes [2].aDesc = a_234consequence; + attributes [3].aDesc = a_235purpose; +} +#endif + +SdaiAction_method::SdaiAction_method( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -22056,79 +40038,127 @@ SdaiAction_method::SdaiAction_method( STEPentity *se ) eDesc = config_control_designe_action_method; - STEPattribute * a = new STEPattribute (*a_232name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_232name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_232name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_233description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_233description, &_description); +#else + a = new STEPattribute(*a_233description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_234consequence, &_consequence); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_234consequence, &_consequence); +#else + a = new STEPattribute(*a_234consequence, &_consequence); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_235purpose, &_purpose); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_235purpose, &_purpose); +#else + a = new STEPattribute(*a_235purpose, &_purpose); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiAction_method::Name() const - { return (const SdaiLabel) _name; } +SdaiAction_method::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiAction_method::Name (const char * x) - { _name = x; } +SdaiAction_method::name_ (const SdaiLabel x) + +{ + _name = x; +} const SdaiText -SdaiAction_method::Description() const - { return (const SdaiText) _description; } +SdaiAction_method::description_() const +{ + return (SdaiText) _description; +} void -SdaiAction_method::Description (const char * x) - { _description = x; } +SdaiAction_method::description_ (const SdaiText x) + +{ + _description = x; +} const SdaiText -SdaiAction_method::Consequence() const - { return (const SdaiText) _consequence; } +SdaiAction_method::consequence_() const +{ + return (SdaiText) _consequence; +} void -SdaiAction_method::Consequence (const char * x) - { _consequence = x; } +SdaiAction_method::consequence_ (const SdaiText x) + +{ + _consequence = x; +} const SdaiText -SdaiAction_method::Purpose() const - { return (const SdaiText) _purpose; } +SdaiAction_method::purpose_() const +{ + return (SdaiText) _purpose; +} void -SdaiAction_method::Purpose (const char * x) - { _purpose = x; } +SdaiAction_method::purpose_ (const SdaiText x) -///////// END_ENTITY action_method +{ + _purpose = x; +} + +///////// END_ENTITY action_method -///////// ENTITY product_category_relationship +///////// ENTITY product_category_relationship EntityDescriptor *config_control_designe_product_category_relationship =0; AttrDescriptor *a_236name =0; @@ -22142,26 +40172,114 @@ SdaiProduct_category_relationship::SdaiProduct_category_relationship( ) eDesc = config_control_designe_product_category_relationship; - STEPattribute * a = new STEPattribute (*a_236name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_236name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_236name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_237description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_237description, &_description); +#else + a = new STEPattribute(*a_237description, &_description); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_238category, (STEPentityH *) &_category); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_238category, (SCLP23(Application_instance_ptr) *) &_category); +#else + a = new STEPattribute(*a_238category, (SCLP23(Application_instance_ptr) *) &_category); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_239sub_category, (STEPentityH *) &_sub_category); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_239sub_category, (SCLP23(Application_instance_ptr) *) &_sub_category); +#else + a = new STEPattribute(*a_239sub_category, (SCLP23(Application_instance_ptr) *) &_sub_category); +#endif a -> set_null (); attributes.push (a); } SdaiProduct_category_relationship::SdaiProduct_category_relationship (SdaiProduct_category_relationship& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiProduct_category_relationship::~SdaiProduct_category_relationship () { } -SdaiProduct_category_relationship::SdaiProduct_category_relationship( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiProduct_category_relationship::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_category_relationship: virtual access function." << G4endl; + SdaiProduct_category_relationship_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiProduct_category_relationship_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_category_relationship: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiProduct_category_relationship *ent = (SdaiProduct_category_relationship *)sent; +// SdaiProduct_category_relationship *ent = (SdaiProduct_category_relationship *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_product_category_relationship; + ent->attributes[0].aDesc = a_236name; + ent->attributes[1].aDesc = a_237description; + ent->attributes[2].aDesc = a_238category; + if(ent->_category == 0) + ent->_category = S_ENTITY_NULL; + ent->attributes[3].aDesc = a_239sub_category; + if(ent->_sub_category == 0) + ent->_sub_category = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiProduct_category_relationship(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiProduct_category_relationship::get_os_typespec()) + SdaiProduct_category_relationship; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiProduct_category_relationship::get_os_typespec()) +// SdaiProduct_category_relationship; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiProduct_category_relationship; +} +#endif + +#ifdef __O3DB__ +void +SdaiProduct_category_relationship::oodb_reInit () +{ eDesc = config_control_designe_product_category_relationship; + attributes [0].aDesc = a_236name; + attributes [1].aDesc = a_237description; + attributes [2].aDesc = a_238category; + attributes [3].aDesc = a_239sub_category; +} +#endif + +SdaiProduct_category_relationship::SdaiProduct_category_relationship( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -22170,79 +40288,127 @@ SdaiProduct_category_relationship::SdaiProduct_category_relationship( STEPentity eDesc = config_control_designe_product_category_relationship; - STEPattribute * a = new STEPattribute (*a_236name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_236name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_236name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_237description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_237description, &_description); +#else + a = new STEPattribute(*a_237description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_238category, (STEPentityH *) &_category); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_238category, (SCLP23(Application_instance_ptr) *) &_category); +#else + a = new STEPattribute(*a_238category, (SCLP23(Application_instance_ptr) *) &_category); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_239sub_category, (STEPentityH *) &_sub_category); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_239sub_category, (SCLP23(Application_instance_ptr) *) &_sub_category); +#else + a = new STEPattribute(*a_239sub_category, (SCLP23(Application_instance_ptr) *) &_sub_category); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiProduct_category_relationship::Name() const - { return (const SdaiLabel) _name; } +SdaiProduct_category_relationship::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiProduct_category_relationship::Name (const char * x) - { _name = x; } +SdaiProduct_category_relationship::name_ (const SdaiLabel x) + +{ + _name = x; +} const SdaiText -SdaiProduct_category_relationship::Description() const - { return (const SdaiText) _description; } +SdaiProduct_category_relationship::description_() const +{ + return (SdaiText) _description; +} void -SdaiProduct_category_relationship::Description (const char * x) - { _description = x; } +SdaiProduct_category_relationship::description_ (const SdaiText x) -SdaiProduct_categoryH -SdaiProduct_category_relationship::Category() const - { return (SdaiProduct_categoryH) _category; } +{ + _description = x; +} + +const SdaiProduct_category_ptr +SdaiProduct_category_relationship::category_() const +{ + return (SdaiProduct_category_ptr) _category; +} void -SdaiProduct_category_relationship::Category (SdaiProduct_categoryH x) - { _category = x; } +SdaiProduct_category_relationship::category_ (const SdaiProduct_category_ptr x) -SdaiProduct_categoryH -SdaiProduct_category_relationship::Sub_category() const - { return (SdaiProduct_categoryH) _sub_category; } +{ + _category = x; +} + +const SdaiProduct_category_ptr +SdaiProduct_category_relationship::sub_category_() const +{ + return (SdaiProduct_category_ptr) _sub_category; +} void -SdaiProduct_category_relationship::Sub_category (SdaiProduct_categoryH x) - { _sub_category = x; } +SdaiProduct_category_relationship::sub_category_ (const SdaiProduct_category_ptr x) -///////// END_ENTITY product_category_relationship +{ + _sub_category = x; +} + +///////// END_ENTITY product_category_relationship -///////// ENTITY plane_angle_measure_with_unit +///////// ENTITY plane_angle_measure_with_unit EntityDescriptor *config_control_designe_plane_angle_measure_with_unit =0; SdaiPlane_angle_measure_with_unit::SdaiPlane_angle_measure_with_unit( ) @@ -22255,9 +40421,61 @@ SdaiPlane_angle_measure_with_unit::SdaiPlane_angle_measure_with_unit( ) eDesc = config_control_designe_plane_angle_measure_with_unit; } SdaiPlane_angle_measure_with_unit::SdaiPlane_angle_measure_with_unit (SdaiPlane_angle_measure_with_unit& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiPlane_angle_measure_with_unit::~SdaiPlane_angle_measure_with_unit () { } -SdaiPlane_angle_measure_with_unit::SdaiPlane_angle_measure_with_unit (STEPentity *se ) : SdaiMeasure_with_unit(se) + +#ifdef __OSTORE__ + +void +SdaiPlane_angle_measure_with_unit::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPlane_angle_measure_with_unit: virtual access function." << G4endl; + SdaiPlane_angle_measure_with_unit_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiPlane_angle_measure_with_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPlane_angle_measure_with_unit: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiPlane_angle_measure_with_unit *ent = (SdaiPlane_angle_measure_with_unit *)sent; +// SdaiPlane_angle_measure_with_unit *ent = (SdaiPlane_angle_measure_with_unit *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_plane_angle_measure_with_unit; +} + +SCLP23(Application_instance_ptr) +create_SdaiPlane_angle_measure_with_unit(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiPlane_angle_measure_with_unit::get_os_typespec()) + SdaiPlane_angle_measure_with_unit; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiPlane_angle_measure_with_unit::get_os_typespec()) +// SdaiPlane_angle_measure_with_unit; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiPlane_angle_measure_with_unit; +} +#endif + +#ifdef __O3DB__ +void +SdaiPlane_angle_measure_with_unit::oodb_reInit () +{ eDesc = config_control_designe_plane_angle_measure_with_unit; +} +#endif + +SdaiPlane_angle_measure_with_unit::SdaiPlane_angle_measure_with_unit (SCLP23(Application_instance) *se, int *addAttrs) : SdaiMeasure_with_unit(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -22271,10 +40489,10 @@ SdaiPlane_angle_measure_with_unit::SdaiPlane_angle_measure_with_unit (STEPentity /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY plane_angle_measure_with_unit +///////// END_ENTITY plane_angle_measure_with_unit -///////// ENTITY vertex +///////// ENTITY vertex EntityDescriptor *config_control_designe_vertex =0; SdaiVertex::SdaiVertex( ) @@ -22287,9 +40505,61 @@ SdaiVertex::SdaiVertex( ) eDesc = config_control_designe_vertex; } SdaiVertex::SdaiVertex (SdaiVertex& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiVertex::~SdaiVertex () { } -SdaiVertex::SdaiVertex (STEPentity *se ) : SdaiTopological_representation_item(se) + +#ifdef __OSTORE__ + +void +SdaiVertex::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiVertex: virtual access function." << G4endl; + SdaiVertex_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiVertex_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiVertex: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiVertex *ent = (SdaiVertex *)sent; +// SdaiVertex *ent = (SdaiVertex *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_vertex; +} + +SCLP23(Application_instance_ptr) +create_SdaiVertex(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiVertex::get_os_typespec()) + SdaiVertex; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiVertex::get_os_typespec()) +// SdaiVertex; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiVertex; +} +#endif + +#ifdef __O3DB__ +void +SdaiVertex::oodb_reInit () +{ eDesc = config_control_designe_vertex; +} +#endif + +SdaiVertex::SdaiVertex (SCLP23(Application_instance) *se, int *addAttrs) : SdaiTopological_representation_item(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -22303,15 +40573,15 @@ SdaiVertex::SdaiVertex (STEPentity *se ) : SdaiTopological_representation_item(s /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY vertex +///////// END_ENTITY vertex -///////// ENTITY representation_map +///////// ENTITY representation_map EntityDescriptor *config_control_designe_representation_map =0; AttrDescriptor *a_240mapping_origin =0; AttrDescriptor *a_241mapped_representation =0; -InverseAttrDescriptor *a_242Imap_usage =0; +Inverse_attribute *a_242Imap_usage =0; SdaiRepresentation_map::SdaiRepresentation_map( ) { @@ -22319,18 +40589,90 @@ SdaiRepresentation_map::SdaiRepresentation_map( ) eDesc = config_control_designe_representation_map; - STEPattribute * a = new STEPattribute (*a_240mapping_origin, (STEPentityH *) &_mapping_origin); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_240mapping_origin, (SCLP23(Application_instance_ptr) *) &_mapping_origin); +#else + STEPattribute *a = new STEPattribute(*a_240mapping_origin, (SCLP23(Application_instance_ptr) *) &_mapping_origin); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_241mapped_representation, (STEPentityH *) &_mapped_representation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_241mapped_representation, (SCLP23(Application_instance_ptr) *) &_mapped_representation); +#else + a = new STEPattribute(*a_241mapped_representation, (SCLP23(Application_instance_ptr) *) &_mapped_representation); +#endif a -> set_null (); attributes.push (a); } SdaiRepresentation_map::SdaiRepresentation_map (SdaiRepresentation_map& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiRepresentation_map::~SdaiRepresentation_map () { } -SdaiRepresentation_map::SdaiRepresentation_map( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiRepresentation_map::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiRepresentation_map: virtual access function." << G4endl; + SdaiRepresentation_map_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiRepresentation_map_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiRepresentation_map: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiRepresentation_map *ent = (SdaiRepresentation_map *)sent; +// SdaiRepresentation_map *ent = (SdaiRepresentation_map *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_representation_map; + ent->attributes[0].aDesc = a_240mapping_origin; + if(ent->_mapping_origin == 0) + ent->_mapping_origin = S_ENTITY_NULL; + ent->attributes[1].aDesc = a_241mapped_representation; + if(ent->_mapped_representation == 0) + ent->_mapped_representation = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiRepresentation_map(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiRepresentation_map::get_os_typespec()) + SdaiRepresentation_map; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiRepresentation_map::get_os_typespec()) +// SdaiRepresentation_map; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiRepresentation_map; +} +#endif + +#ifdef __O3DB__ +void +SdaiRepresentation_map::oodb_reInit () +{ eDesc = config_control_designe_representation_map; + attributes [0].aDesc = a_240mapping_origin; + attributes [1].aDesc = a_241mapped_representation; +} +#endif + +SdaiRepresentation_map::SdaiRepresentation_map( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -22339,53 +40681,80 @@ SdaiRepresentation_map::SdaiRepresentation_map( STEPentity *se ) eDesc = config_control_designe_representation_map; - STEPattribute * a = new STEPattribute (*a_240mapping_origin, (STEPentityH *) &_mapping_origin); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_240mapping_origin, (SCLP23(Application_instance_ptr) *) &_mapping_origin); +#else + STEPattribute *a = new STEPattribute(*a_240mapping_origin, (SCLP23(Application_instance_ptr) *) &_mapping_origin); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_241mapped_representation, (STEPentityH *) &_mapped_representation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_241mapped_representation, (SCLP23(Application_instance_ptr) *) &_mapped_representation); +#else + a = new STEPattribute(*a_241mapped_representation, (SCLP23(Application_instance_ptr) *) &_mapped_representation); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiRepresentation_itemH -SdaiRepresentation_map::Mapping_origin() const - { return (SdaiRepresentation_itemH) _mapping_origin; } +const SdaiRepresentation_item_ptr +SdaiRepresentation_map::mapping_origin_() const +{ + return (SdaiRepresentation_item_ptr) _mapping_origin; +} void -SdaiRepresentation_map::Mapping_origin (SdaiRepresentation_itemH x) - { _mapping_origin = x; } +SdaiRepresentation_map::mapping_origin_ (const SdaiRepresentation_item_ptr x) -SdaiRepresentationH -SdaiRepresentation_map::Mapped_representation() const - { return (SdaiRepresentationH) _mapped_representation; } +{ + _mapping_origin = x; +} + +const SdaiRepresentation_ptr +SdaiRepresentation_map::mapped_representation_() const +{ + return (SdaiRepresentation_ptr) _mapped_representation; +} void -SdaiRepresentation_map::Mapped_representation (SdaiRepresentationH x) - { _mapped_representation = x; } +SdaiRepresentation_map::mapped_representation_ (const SdaiRepresentation_ptr x) -const EntityAggregateH -SdaiRepresentation_map::Map_usage() const - { return (EntityAggregateH) &_map_usage; } +{ + _mapped_representation = x; +} + +const EntityAggregate_ptr +SdaiRepresentation_map::map_usage_() const +{ + return (EntityAggregate_ptr) &_map_usage; +} void -SdaiRepresentation_map::Map_usage (EntityAggregateH x) +SdaiRepresentation_map::map_usage_ (const EntityAggregate_ptr x) + { _map_usage.ShallowCopy (*x); } -///////// END_ENTITY representation_map +///////// END_ENTITY representation_map -///////// ENTITY product_definition_effectivity +///////// ENTITY product_definition_effectivity EntityDescriptor *config_control_designe_product_definition_effectivity =0; AttrDescriptor *a_243usage =0; @@ -22398,14 +40767,76 @@ SdaiProduct_definition_effectivity::SdaiProduct_definition_effectivity( ) eDesc = config_control_designe_product_definition_effectivity; - STEPattribute * a = new STEPattribute (*a_243usage, (STEPentityH *) &_usage); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_243usage, (SCLP23(Application_instance_ptr) *) &_usage); +#else + STEPattribute *a = new STEPattribute(*a_243usage, (SCLP23(Application_instance_ptr) *) &_usage); +#endif a -> set_null (); attributes.push (a); } SdaiProduct_definition_effectivity::SdaiProduct_definition_effectivity (SdaiProduct_definition_effectivity& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiProduct_definition_effectivity::~SdaiProduct_definition_effectivity () { } -SdaiProduct_definition_effectivity::SdaiProduct_definition_effectivity (STEPentity *se ) : SdaiEffectivity(se) + +#ifdef __OSTORE__ + +void +SdaiProduct_definition_effectivity::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_definition_effectivity: virtual access function." << G4endl; + SdaiProduct_definition_effectivity_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiProduct_definition_effectivity_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_definition_effectivity: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiProduct_definition_effectivity *ent = (SdaiProduct_definition_effectivity *)sent; +// SdaiProduct_definition_effectivity *ent = (SdaiProduct_definition_effectivity *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_product_definition_effectivity; + ent->attributes[1].aDesc = a_243usage; + if(ent->_usage == 0) + ent->_usage = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiProduct_definition_effectivity(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiProduct_definition_effectivity::get_os_typespec()) + SdaiProduct_definition_effectivity; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiProduct_definition_effectivity::get_os_typespec()) +// SdaiProduct_definition_effectivity; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiProduct_definition_effectivity; +} +#endif + +#ifdef __O3DB__ +void +SdaiProduct_definition_effectivity::oodb_reInit () +{ eDesc = config_control_designe_product_definition_effectivity; + attributes [1].aDesc = a_243usage; +} +#endif + +SdaiProduct_definition_effectivity::SdaiProduct_definition_effectivity (SCLP23(Application_instance) *se, int *addAttrs) : SdaiEffectivity(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -22416,30 +40847,42 @@ SdaiProduct_definition_effectivity::SdaiProduct_definition_effectivity (STEPenti eDesc = config_control_designe_product_definition_effectivity; - STEPattribute * a = new STEPattribute (*a_243usage, (STEPentityH *) &_usage); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_243usage, (SCLP23(Application_instance_ptr) *) &_usage); +#else + STEPattribute *a = new STEPattribute(*a_243usage, (SCLP23(Application_instance_ptr) *) &_usage); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiProduct_definition_relationshipH -SdaiProduct_definition_effectivity::Usage() const - { return (SdaiProduct_definition_relationshipH) _usage; } +const SdaiProduct_definition_relationship_ptr +SdaiProduct_definition_effectivity::usage_() const +{ + return (SdaiProduct_definition_relationship_ptr) _usage; +} void -SdaiProduct_definition_effectivity::Usage (SdaiProduct_definition_relationshipH x) - { _usage = x; } +SdaiProduct_definition_effectivity::usage_ (const SdaiProduct_definition_relationship_ptr x) + +{ + _usage = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY product_definition_effectivity +///////// END_ENTITY product_definition_effectivity -///////// ENTITY configuration_effectivity +///////// ENTITY configuration_effectivity EntityDescriptor *config_control_designe_configuration_effectivity =0; AttrDescriptor *a_244configuration =0; @@ -22452,14 +40895,76 @@ SdaiConfiguration_effectivity::SdaiConfiguration_effectivity( ) eDesc = config_control_designe_configuration_effectivity; - STEPattribute * a = new STEPattribute (*a_244configuration, (STEPentityH *) &_configuration); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_244configuration, (SCLP23(Application_instance_ptr) *) &_configuration); +#else + STEPattribute *a = new STEPattribute(*a_244configuration, (SCLP23(Application_instance_ptr) *) &_configuration); +#endif a -> set_null (); attributes.push (a); } SdaiConfiguration_effectivity::SdaiConfiguration_effectivity (SdaiConfiguration_effectivity& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiConfiguration_effectivity::~SdaiConfiguration_effectivity () { } -SdaiConfiguration_effectivity::SdaiConfiguration_effectivity (STEPentity *se ) : SdaiProduct_definition_effectivity(se) + +#ifdef __OSTORE__ + +void +SdaiConfiguration_effectivity::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiConfiguration_effectivity: virtual access function." << G4endl; + SdaiConfiguration_effectivity_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiConfiguration_effectivity_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiConfiguration_effectivity: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiConfiguration_effectivity *ent = (SdaiConfiguration_effectivity *)sent; +// SdaiConfiguration_effectivity *ent = (SdaiConfiguration_effectivity *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_configuration_effectivity; + ent->attributes[2].aDesc = a_244configuration; + if(ent->_configuration == 0) + ent->_configuration = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiConfiguration_effectivity(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiConfiguration_effectivity::get_os_typespec()) + SdaiConfiguration_effectivity; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiConfiguration_effectivity::get_os_typespec()) +// SdaiConfiguration_effectivity; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiConfiguration_effectivity; +} +#endif + +#ifdef __O3DB__ +void +SdaiConfiguration_effectivity::oodb_reInit () +{ eDesc = config_control_designe_configuration_effectivity; + attributes [2].aDesc = a_244configuration; +} +#endif + +SdaiConfiguration_effectivity::SdaiConfiguration_effectivity (SCLP23(Application_instance) *se, int *addAttrs) : SdaiProduct_definition_effectivity(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -22470,30 +40975,42 @@ SdaiConfiguration_effectivity::SdaiConfiguration_effectivity (STEPentity *se ) : eDesc = config_control_designe_configuration_effectivity; - STEPattribute * a = new STEPattribute (*a_244configuration, (STEPentityH *) &_configuration); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_244configuration, (SCLP23(Application_instance_ptr) *) &_configuration); +#else + STEPattribute *a = new STEPattribute(*a_244configuration, (SCLP23(Application_instance_ptr) *) &_configuration); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiConfiguration_designH -SdaiConfiguration_effectivity::Configuration() const - { return (SdaiConfiguration_designH) _configuration; } +const SdaiConfiguration_design_ptr +SdaiConfiguration_effectivity::configuration_() const +{ + return (SdaiConfiguration_design_ptr) _configuration; +} void -SdaiConfiguration_effectivity::Configuration (SdaiConfiguration_designH x) - { _configuration = x; } +SdaiConfiguration_effectivity::configuration_ (const SdaiConfiguration_design_ptr x) + +{ + _configuration = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY configuration_effectivity +///////// END_ENTITY configuration_effectivity -///////// ENTITY ellipse +///////// ENTITY ellipse EntityDescriptor *config_control_designe_ellipse =0; AttrDescriptor *a_245semi_axis_1 =0; @@ -22507,18 +41024,87 @@ SdaiEllipse::SdaiEllipse( ) eDesc = config_control_designe_ellipse; - STEPattribute * a = new STEPattribute (*a_245semi_axis_1, &_semi_axis_1); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_245semi_axis_1, &_semi_axis_1); +#else + STEPattribute *a = new STEPattribute(*a_245semi_axis_1, &_semi_axis_1); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_246semi_axis_2, &_semi_axis_2); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_246semi_axis_2, &_semi_axis_2); +#else + a = new STEPattribute(*a_246semi_axis_2, &_semi_axis_2); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiEllipse::SdaiEllipse (SdaiEllipse& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiEllipse::~SdaiEllipse () { } -SdaiEllipse::SdaiEllipse (STEPentity *se ) : SdaiConic(se) + +#ifdef __OSTORE__ + +void +SdaiEllipse::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiEllipse: virtual access function." << G4endl; + SdaiEllipse_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiEllipse_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiEllipse: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiEllipse *ent = (SdaiEllipse *)sent; +// SdaiEllipse *ent = (SdaiEllipse *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_ellipse; + ent->attributes[2].aDesc = a_245semi_axis_1; + ent->attributes[3].aDesc = a_246semi_axis_2; +} + +SCLP23(Application_instance_ptr) +create_SdaiEllipse(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiEllipse::get_os_typespec()) + SdaiEllipse; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiEllipse::get_os_typespec()) +// SdaiEllipse; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiEllipse; +} +#endif + +#ifdef __O3DB__ +void +SdaiEllipse::oodb_reInit () +{ eDesc = config_control_designe_ellipse; + attributes [2].aDesc = a_245semi_axis_1; + attributes [3].aDesc = a_246semi_axis_2; +} +#endif + +SdaiEllipse::SdaiEllipse (SCLP23(Application_instance) *se, int *addAttrs) : SdaiConic(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -22529,47 +41115,72 @@ SdaiEllipse::SdaiEllipse (STEPentity *se ) : SdaiConic(se) eDesc = config_control_designe_ellipse; - STEPattribute * a = new STEPattribute (*a_245semi_axis_1, &_semi_axis_1); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_245semi_axis_1, &_semi_axis_1); +#else + STEPattribute *a = new STEPattribute(*a_245semi_axis_1, &_semi_axis_1); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_246semi_axis_2, &_semi_axis_2); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_246semi_axis_2, &_semi_axis_2); +#else + a = new STEPattribute(*a_246semi_axis_2, &_semi_axis_2); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } const SdaiPositive_length_measure -SdaiEllipse::Semi_axis_1() const - { return (const SdaiPositive_length_measure) _semi_axis_1; } +SdaiEllipse::semi_axis_1_() const +{ + return (SdaiPositive_length_measure) _semi_axis_1; +} void -SdaiEllipse::Semi_axis_1 (SdaiPositive_length_measure x) - { _semi_axis_1 = x; } +SdaiEllipse::semi_axis_1_ (const SdaiPositive_length_measure x) + +{ + _semi_axis_1 = x; +} const SdaiPositive_length_measure -SdaiEllipse::Semi_axis_2() const - { return (const SdaiPositive_length_measure) _semi_axis_2; } +SdaiEllipse::semi_axis_2_() const +{ + return (SdaiPositive_length_measure) _semi_axis_2; +} void -SdaiEllipse::Semi_axis_2 (SdaiPositive_length_measure x) - { _semi_axis_2 = x; } +SdaiEllipse::semi_axis_2_ (const SdaiPositive_length_measure x) + +{ + _semi_axis_2 = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY ellipse +///////// END_ENTITY ellipse -///////// ENTITY context_dependent_unit +///////// ENTITY context_dependent_unit EntityDescriptor *config_control_designe_context_dependent_unit =0; AttrDescriptor *a_247name =0; @@ -22582,14 +41193,74 @@ SdaiContext_dependent_unit::SdaiContext_dependent_unit( ) eDesc = config_control_designe_context_dependent_unit; - STEPattribute * a = new STEPattribute (*a_247name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_247name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_247name, &_name); +#endif a -> set_null (); attributes.push (a); } SdaiContext_dependent_unit::SdaiContext_dependent_unit (SdaiContext_dependent_unit& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiContext_dependent_unit::~SdaiContext_dependent_unit () { } -SdaiContext_dependent_unit::SdaiContext_dependent_unit (STEPentity *se ) : SdaiNamed_unit(se) + +#ifdef __OSTORE__ + +void +SdaiContext_dependent_unit::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiContext_dependent_unit: virtual access function." << G4endl; + SdaiContext_dependent_unit_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiContext_dependent_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiContext_dependent_unit: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiContext_dependent_unit *ent = (SdaiContext_dependent_unit *)sent; +// SdaiContext_dependent_unit *ent = (SdaiContext_dependent_unit *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_context_dependent_unit; + ent->attributes[1].aDesc = a_247name; +} + +SCLP23(Application_instance_ptr) +create_SdaiContext_dependent_unit(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiContext_dependent_unit::get_os_typespec()) + SdaiContext_dependent_unit; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiContext_dependent_unit::get_os_typespec()) +// SdaiContext_dependent_unit; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiContext_dependent_unit; +} +#endif + +#ifdef __O3DB__ +void +SdaiContext_dependent_unit::oodb_reInit () +{ eDesc = config_control_designe_context_dependent_unit; + attributes [1].aDesc = a_247name; +} +#endif + +SdaiContext_dependent_unit::SdaiContext_dependent_unit (SCLP23(Application_instance) *se, int *addAttrs) : SdaiNamed_unit(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -22600,30 +41271,42 @@ SdaiContext_dependent_unit::SdaiContext_dependent_unit (STEPentity *se ) : SdaiN eDesc = config_control_designe_context_dependent_unit; - STEPattribute * a = new STEPattribute (*a_247name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_247name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_247name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiContext_dependent_unit::Name() const - { return (const SdaiLabel) _name; } +SdaiContext_dependent_unit::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiContext_dependent_unit::Name (const char * x) - { _name = x; } +SdaiContext_dependent_unit::name_ (const SdaiLabel x) + +{ + _name = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY context_dependent_unit +///////// END_ENTITY context_dependent_unit -///////// ENTITY alternate_product_relationship +///////// ENTITY alternate_product_relationship EntityDescriptor *config_control_designe_alternate_product_relationship =0; AttrDescriptor *a_248name =0; @@ -22638,30 +41321,126 @@ SdaiAlternate_product_relationship::SdaiAlternate_product_relationship( ) eDesc = config_control_designe_alternate_product_relationship; - STEPattribute * a = new STEPattribute (*a_248name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_248name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_248name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_249description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_249description, &_description); +#else + a = new STEPattribute(*a_249description, &_description); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_250alternate, (STEPentityH *) &_alternate); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_250alternate, (SCLP23(Application_instance_ptr) *) &_alternate); +#else + a = new STEPattribute(*a_250alternate, (SCLP23(Application_instance_ptr) *) &_alternate); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_251base, (STEPentityH *) &_base); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_251base, (SCLP23(Application_instance_ptr) *) &_base); +#else + a = new STEPattribute(*a_251base, (SCLP23(Application_instance_ptr) *) &_base); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_252basis, &_basis); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_252basis, &_basis); +#else + a = new STEPattribute(*a_252basis, &_basis); +#endif a -> set_null (); attributes.push (a); } SdaiAlternate_product_relationship::SdaiAlternate_product_relationship (SdaiAlternate_product_relationship& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiAlternate_product_relationship::~SdaiAlternate_product_relationship () { } -SdaiAlternate_product_relationship::SdaiAlternate_product_relationship( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiAlternate_product_relationship::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAlternate_product_relationship: virtual access function." << G4endl; + SdaiAlternate_product_relationship_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiAlternate_product_relationship_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAlternate_product_relationship: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiAlternate_product_relationship *ent = (SdaiAlternate_product_relationship *)sent; +// SdaiAlternate_product_relationship *ent = (SdaiAlternate_product_relationship *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_alternate_product_relationship; + ent->attributes[0].aDesc = a_248name; + ent->attributes[1].aDesc = a_249description; + ent->attributes[2].aDesc = a_250alternate; + if(ent->_alternate == 0) + ent->_alternate = S_ENTITY_NULL; + ent->attributes[3].aDesc = a_251base; + if(ent->_base == 0) + ent->_base = S_ENTITY_NULL; + ent->attributes[4].aDesc = a_252basis; +} + +SCLP23(Application_instance_ptr) +create_SdaiAlternate_product_relationship(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiAlternate_product_relationship::get_os_typespec()) + SdaiAlternate_product_relationship; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiAlternate_product_relationship::get_os_typespec()) +// SdaiAlternate_product_relationship; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiAlternate_product_relationship; +} +#endif + +#ifdef __O3DB__ +void +SdaiAlternate_product_relationship::oodb_reInit () +{ eDesc = config_control_designe_alternate_product_relationship; + attributes [0].aDesc = a_248name; + attributes [1].aDesc = a_249description; + attributes [2].aDesc = a_250alternate; + attributes [3].aDesc = a_251base; + attributes [4].aDesc = a_252basis; +} +#endif + +SdaiAlternate_product_relationship::SdaiAlternate_product_relationship( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -22670,96 +41449,156 @@ SdaiAlternate_product_relationship::SdaiAlternate_product_relationship( STEPenti eDesc = config_control_designe_alternate_product_relationship; - STEPattribute * a = new STEPattribute (*a_248name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_248name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_248name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_249description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_249description, &_description); +#else + a = new STEPattribute(*a_249description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_250alternate, (STEPentityH *) &_alternate); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_250alternate, (SCLP23(Application_instance_ptr) *) &_alternate); +#else + a = new STEPattribute(*a_250alternate, (SCLP23(Application_instance_ptr) *) &_alternate); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_251base, (STEPentityH *) &_base); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_251base, (SCLP23(Application_instance_ptr) *) &_base); +#else + a = new STEPattribute(*a_251base, (SCLP23(Application_instance_ptr) *) &_base); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_252basis, &_basis); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_252basis, &_basis); +#else + a = new STEPattribute(*a_252basis, &_basis); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiAlternate_product_relationship::Name() const - { return (const SdaiLabel) _name; } +SdaiAlternate_product_relationship::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiAlternate_product_relationship::Name (const char * x) - { _name = x; } +SdaiAlternate_product_relationship::name_ (const SdaiLabel x) + +{ + _name = x; +} const SdaiText -SdaiAlternate_product_relationship::Description() const - { return (const SdaiText) _description; } +SdaiAlternate_product_relationship::description_() const +{ + return (SdaiText) _description; +} void -SdaiAlternate_product_relationship::Description (const char * x) - { _description = x; } +SdaiAlternate_product_relationship::description_ (const SdaiText x) -SdaiProductH -SdaiAlternate_product_relationship::Alternate() const - { return (SdaiProductH) _alternate; } +{ + _description = x; +} + +const SdaiProduct_ptr +SdaiAlternate_product_relationship::alternate_() const +{ + return (SdaiProduct_ptr) _alternate; +} void -SdaiAlternate_product_relationship::Alternate (SdaiProductH x) - { _alternate = x; } +SdaiAlternate_product_relationship::alternate_ (const SdaiProduct_ptr x) -SdaiProductH -SdaiAlternate_product_relationship::Base() const - { return (SdaiProductH) _base; } +{ + _alternate = x; +} + +const SdaiProduct_ptr +SdaiAlternate_product_relationship::base_() const +{ + return (SdaiProduct_ptr) _base; +} void -SdaiAlternate_product_relationship::Base (SdaiProductH x) - { _base = x; } +SdaiAlternate_product_relationship::base_ (const SdaiProduct_ptr x) + +{ + _base = x; +} const SdaiText -SdaiAlternate_product_relationship::Basis() const - { return (const SdaiText) _basis; } +SdaiAlternate_product_relationship::basis_() const +{ + return (SdaiText) _basis; +} void -SdaiAlternate_product_relationship::Basis (const char * x) - { _basis = x; } +SdaiAlternate_product_relationship::basis_ (const SdaiText x) -///////// END_ENTITY alternate_product_relationship +{ + _basis = x; +} + +///////// END_ENTITY alternate_product_relationship -///////// ENTITY document_type +///////// ENTITY document_type EntityDescriptor *config_control_designe_document_type =0; AttrDescriptor *a_253product_data_type =0; @@ -22770,14 +41609,74 @@ SdaiDocument_type::SdaiDocument_type( ) eDesc = config_control_designe_document_type; - STEPattribute * a = new STEPattribute (*a_253product_data_type, &_product_data_type); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_253product_data_type, &_product_data_type); +#else + STEPattribute *a = new STEPattribute(*a_253product_data_type, &_product_data_type); +#endif a -> set_null (); attributes.push (a); } SdaiDocument_type::SdaiDocument_type (SdaiDocument_type& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiDocument_type::~SdaiDocument_type () { } -SdaiDocument_type::SdaiDocument_type( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiDocument_type::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDocument_type: virtual access function." << G4endl; + SdaiDocument_type_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiDocument_type_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDocument_type: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiDocument_type *ent = (SdaiDocument_type *)sent; +// SdaiDocument_type *ent = (SdaiDocument_type *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_document_type; + ent->attributes[0].aDesc = a_253product_data_type; +} + +SCLP23(Application_instance_ptr) +create_SdaiDocument_type(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiDocument_type::get_os_typespec()) + SdaiDocument_type; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiDocument_type::get_os_typespec()) +// SdaiDocument_type; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiDocument_type; +} +#endif + +#ifdef __O3DB__ +void +SdaiDocument_type::oodb_reInit () +{ eDesc = config_control_designe_document_type; + attributes [0].aDesc = a_253product_data_type; +} +#endif + +SdaiDocument_type::SdaiDocument_type( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -22786,28 +41685,40 @@ SdaiDocument_type::SdaiDocument_type( STEPentity *se ) eDesc = config_control_designe_document_type; - STEPattribute * a = new STEPattribute (*a_253product_data_type, &_product_data_type); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_253product_data_type, &_product_data_type); +#else + STEPattribute *a = new STEPattribute(*a_253product_data_type, &_product_data_type); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiDocument_type::Product_data_type() const - { return (const SdaiLabel) _product_data_type; } +SdaiDocument_type::product_data_type_() const +{ + return (SdaiLabel) _product_data_type; +} void -SdaiDocument_type::Product_data_type (const char * x) - { _product_data_type = x; } +SdaiDocument_type::product_data_type_ (const SdaiLabel x) -///////// END_ENTITY document_type +{ + _product_data_type = x; +} + +///////// END_ENTITY document_type -///////// ENTITY document_reference +///////// ENTITY document_reference EntityDescriptor *config_control_designe_document_reference =0; AttrDescriptor *a_254assigned_document =0; @@ -22819,18 +41730,88 @@ SdaiDocument_reference::SdaiDocument_reference( ) eDesc = config_control_designe_document_reference; - STEPattribute * a = new STEPattribute (*a_254assigned_document, (STEPentityH *) &_assigned_document); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_254assigned_document, (SCLP23(Application_instance_ptr) *) &_assigned_document); +#else + STEPattribute *a = new STEPattribute(*a_254assigned_document, (SCLP23(Application_instance_ptr) *) &_assigned_document); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_255source, &_source); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_255source, &_source); +#else + a = new STEPattribute(*a_255source, &_source); +#endif a -> set_null (); attributes.push (a); } SdaiDocument_reference::SdaiDocument_reference (SdaiDocument_reference& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiDocument_reference::~SdaiDocument_reference () { } -SdaiDocument_reference::SdaiDocument_reference( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiDocument_reference::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDocument_reference: virtual access function." << G4endl; + SdaiDocument_reference_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiDocument_reference_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDocument_reference: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiDocument_reference *ent = (SdaiDocument_reference *)sent; +// SdaiDocument_reference *ent = (SdaiDocument_reference *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_document_reference; + ent->attributes[0].aDesc = a_254assigned_document; + if(ent->_assigned_document == 0) + ent->_assigned_document = S_ENTITY_NULL; + ent->attributes[1].aDesc = a_255source; +} + +SCLP23(Application_instance_ptr) +create_SdaiDocument_reference(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiDocument_reference::get_os_typespec()) + SdaiDocument_reference; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiDocument_reference::get_os_typespec()) +// SdaiDocument_reference; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiDocument_reference; +} +#endif + +#ifdef __O3DB__ +void +SdaiDocument_reference::oodb_reInit () +{ eDesc = config_control_designe_document_reference; + attributes [0].aDesc = a_254assigned_document; + attributes [1].aDesc = a_255source; +} +#endif + +SdaiDocument_reference::SdaiDocument_reference( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -22839,45 +41820,69 @@ SdaiDocument_reference::SdaiDocument_reference( STEPentity *se ) eDesc = config_control_designe_document_reference; - STEPattribute * a = new STEPattribute (*a_254assigned_document, (STEPentityH *) &_assigned_document); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_254assigned_document, (SCLP23(Application_instance_ptr) *) &_assigned_document); +#else + STEPattribute *a = new STEPattribute(*a_254assigned_document, (SCLP23(Application_instance_ptr) *) &_assigned_document); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_255source, &_source); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_255source, &_source); +#else + a = new STEPattribute(*a_255source, &_source); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiDocumentH -SdaiDocument_reference::Assigned_document() const - { return (SdaiDocumentH) _assigned_document; } +const SdaiDocument_ptr +SdaiDocument_reference::assigned_document_() const +{ + return (SdaiDocument_ptr) _assigned_document; +} void -SdaiDocument_reference::Assigned_document (SdaiDocumentH x) - { _assigned_document = x; } +SdaiDocument_reference::assigned_document_ (const SdaiDocument_ptr x) + +{ + _assigned_document = x; +} const SdaiLabel -SdaiDocument_reference::Source() const - { return (const SdaiLabel) _source; } +SdaiDocument_reference::source_() const +{ + return (SdaiLabel) _source; +} void -SdaiDocument_reference::Source (const char * x) - { _source = x; } +SdaiDocument_reference::source_ (const SdaiLabel x) -///////// END_ENTITY document_reference +{ + _source = x; +} + +///////// END_ENTITY document_reference -///////// ENTITY mechanical_context +///////// ENTITY mechanical_context EntityDescriptor *config_control_designe_mechanical_context =0; SdaiMechanical_context::SdaiMechanical_context( ) @@ -22890,9 +41895,61 @@ SdaiMechanical_context::SdaiMechanical_context( ) eDesc = config_control_designe_mechanical_context; } SdaiMechanical_context::SdaiMechanical_context (SdaiMechanical_context& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiMechanical_context::~SdaiMechanical_context () { } -SdaiMechanical_context::SdaiMechanical_context (STEPentity *se ) : SdaiProduct_context(se) + +#ifdef __OSTORE__ + +void +SdaiMechanical_context::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiMechanical_context: virtual access function." << G4endl; + SdaiMechanical_context_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiMechanical_context_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiMechanical_context: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiMechanical_context *ent = (SdaiMechanical_context *)sent; +// SdaiMechanical_context *ent = (SdaiMechanical_context *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_mechanical_context; +} + +SCLP23(Application_instance_ptr) +create_SdaiMechanical_context(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiMechanical_context::get_os_typespec()) + SdaiMechanical_context; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiMechanical_context::get_os_typespec()) +// SdaiMechanical_context; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiMechanical_context; +} +#endif + +#ifdef __O3DB__ +void +SdaiMechanical_context::oodb_reInit () +{ eDesc = config_control_designe_mechanical_context; +} +#endif + +SdaiMechanical_context::SdaiMechanical_context (SCLP23(Application_instance) *se, int *addAttrs) : SdaiProduct_context(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -22906,10 +41963,10 @@ SdaiMechanical_context::SdaiMechanical_context (STEPentity *se ) : SdaiProduct_c /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY mechanical_context +///////// END_ENTITY mechanical_context -///////// ENTITY shell_based_wireframe_model +///////// ENTITY shell_based_wireframe_model EntityDescriptor *config_control_designe_shell_based_wireframe_model =0; AttrDescriptor *a_256sbwm_boundary =0; @@ -22922,14 +41979,75 @@ SdaiShell_based_wireframe_model::SdaiShell_based_wireframe_model( ) eDesc = config_control_designe_shell_based_wireframe_model; - STEPattribute * a = new STEPattribute (*a_256sbwm_boundary, &_sbwm_boundary); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_256sbwm_boundary, &_sbwm_boundary); +#else + STEPattribute *a = new STEPattribute(*a_256sbwm_boundary, &_sbwm_boundary); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiShell_based_wireframe_model::SdaiShell_based_wireframe_model (SdaiShell_based_wireframe_model& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiShell_based_wireframe_model::~SdaiShell_based_wireframe_model () { } -SdaiShell_based_wireframe_model::SdaiShell_based_wireframe_model (STEPentity *se ) : SdaiGeometric_representation_item(se) + +#ifdef __OSTORE__ + +void +SdaiShell_based_wireframe_model::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiShell_based_wireframe_model: virtual access function." << G4endl; + SdaiShell_based_wireframe_model_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiShell_based_wireframe_model_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiShell_based_wireframe_model: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiShell_based_wireframe_model *ent = (SdaiShell_based_wireframe_model *)sent; +// SdaiShell_based_wireframe_model *ent = (SdaiShell_based_wireframe_model *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_shell_based_wireframe_model; + ent->attributes[1].aDesc = a_256sbwm_boundary; +} + +SCLP23(Application_instance_ptr) +create_SdaiShell_based_wireframe_model(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiShell_based_wireframe_model::get_os_typespec()) + SdaiShell_based_wireframe_model; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiShell_based_wireframe_model::get_os_typespec()) +// SdaiShell_based_wireframe_model; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiShell_based_wireframe_model; +} +#endif + +#ifdef __O3DB__ +void +SdaiShell_based_wireframe_model::oodb_reInit () +{ eDesc = config_control_designe_shell_based_wireframe_model; + attributes [1].aDesc = a_256sbwm_boundary; +} +#endif + +SdaiShell_based_wireframe_model::SdaiShell_based_wireframe_model (SCLP23(Application_instance) *se, int *addAttrs) : SdaiGeometric_representation_item(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -22940,30 +42058,41 @@ SdaiShell_based_wireframe_model::SdaiShell_based_wireframe_model (STEPentity *se eDesc = config_control_designe_shell_based_wireframe_model; - STEPattribute * a = new STEPattribute (*a_256sbwm_boundary, &_sbwm_boundary); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_256sbwm_boundary, &_sbwm_boundary); +#else + STEPattribute *a = new STEPattribute(*a_256sbwm_boundary, &_sbwm_boundary); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -const SdaiShellsH -SdaiShell_based_wireframe_model::Sbwm_boundary() const - { return (SdaiShellsH) &_sbwm_boundary; } +const SdaiShells_ptr +SdaiShell_based_wireframe_model::sbwm_boundary_() const +{ + return (SdaiShells_ptr) &_sbwm_boundary; +} void -SdaiShell_based_wireframe_model::Sbwm_boundary (SdaiShellsH x) +SdaiShell_based_wireframe_model::sbwm_boundary_ (const SdaiShells_ptr x) + { _sbwm_boundary.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY shell_based_wireframe_model +///////// END_ENTITY shell_based_wireframe_model -///////// ENTITY contract +///////// ENTITY contract EntityDescriptor *config_control_designe_contract =0; AttrDescriptor *a_257name =0; @@ -22976,22 +42105,100 @@ SdaiContract::SdaiContract( ) eDesc = config_control_designe_contract; - STEPattribute * a = new STEPattribute (*a_257name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_257name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_257name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_258purpose, &_purpose); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_258purpose, &_purpose); +#else + a = new STEPattribute(*a_258purpose, &_purpose); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_259kind, (STEPentityH *) &_kind); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_259kind, (SCLP23(Application_instance_ptr) *) &_kind); +#else + a = new STEPattribute(*a_259kind, (SCLP23(Application_instance_ptr) *) &_kind); +#endif a -> set_null (); attributes.push (a); } SdaiContract::SdaiContract (SdaiContract& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiContract::~SdaiContract () { } -SdaiContract::SdaiContract( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiContract::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiContract: virtual access function." << G4endl; + SdaiContract_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiContract_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiContract: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiContract *ent = (SdaiContract *)sent; +// SdaiContract *ent = (SdaiContract *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_contract; + ent->attributes[0].aDesc = a_257name; + ent->attributes[1].aDesc = a_258purpose; + ent->attributes[2].aDesc = a_259kind; + if(ent->_kind == 0) + ent->_kind = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiContract(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiContract::get_os_typespec()) + SdaiContract; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiContract::get_os_typespec()) +// SdaiContract; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiContract; +} +#endif + +#ifdef __O3DB__ +void +SdaiContract::oodb_reInit () +{ eDesc = config_control_designe_contract; + attributes [0].aDesc = a_257name; + attributes [1].aDesc = a_258purpose; + attributes [2].aDesc = a_259kind; +} +#endif + +SdaiContract::SdaiContract( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -23000,62 +42207,98 @@ SdaiContract::SdaiContract( STEPentity *se ) eDesc = config_control_designe_contract; - STEPattribute * a = new STEPattribute (*a_257name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_257name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_257name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_258purpose, &_purpose); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_258purpose, &_purpose); +#else + a = new STEPattribute(*a_258purpose, &_purpose); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_259kind, (STEPentityH *) &_kind); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_259kind, (SCLP23(Application_instance_ptr) *) &_kind); +#else + a = new STEPattribute(*a_259kind, (SCLP23(Application_instance_ptr) *) &_kind); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiContract::Name() const - { return (const SdaiLabel) _name; } +SdaiContract::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiContract::Name (const char * x) - { _name = x; } +SdaiContract::name_ (const SdaiLabel x) + +{ + _name = x; +} const SdaiText -SdaiContract::Purpose() const - { return (const SdaiText) _purpose; } +SdaiContract::purpose_() const +{ + return (SdaiText) _purpose; +} void -SdaiContract::Purpose (const char * x) - { _purpose = x; } +SdaiContract::purpose_ (const SdaiText x) -SdaiContract_typeH -SdaiContract::Kind() const - { return (SdaiContract_typeH) _kind; } +{ + _purpose = x; +} + +const SdaiContract_type_ptr +SdaiContract::kind_() const +{ + return (SdaiContract_type_ptr) _kind; +} void -SdaiContract::Kind (SdaiContract_typeH x) - { _kind = x; } +SdaiContract::kind_ (const SdaiContract_type_ptr x) -///////// END_ENTITY contract +{ + _kind = x; +} + +///////// END_ENTITY contract -///////// ENTITY dimensional_exponents +///////// ENTITY dimensional_exponents EntityDescriptor *config_control_designe_dimensional_exponents =0; AttrDescriptor *a_260length_exponent =0; @@ -23072,38 +42315,146 @@ SdaiDimensional_exponents::SdaiDimensional_exponents( ) eDesc = config_control_designe_dimensional_exponents; - STEPattribute * a = new STEPattribute (*a_260length_exponent, &_length_exponent); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_260length_exponent, &_length_exponent); +#else + STEPattribute *a = new STEPattribute(*a_260length_exponent, &_length_exponent); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_261mass_exponent, &_mass_exponent); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_261mass_exponent, &_mass_exponent); +#else + a = new STEPattribute(*a_261mass_exponent, &_mass_exponent); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_262time_exponent, &_time_exponent); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_262time_exponent, &_time_exponent); +#else + a = new STEPattribute(*a_262time_exponent, &_time_exponent); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_263electric_current_exponent, &_electric_current_exponent); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_263electric_current_exponent, &_electric_current_exponent); +#else + a = new STEPattribute(*a_263electric_current_exponent, &_electric_current_exponent); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_264thermodynamic_temperature_exponent, &_thermodynamic_temperature_exponent); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_264thermodynamic_temperature_exponent, &_thermodynamic_temperature_exponent); +#else + a = new STEPattribute(*a_264thermodynamic_temperature_exponent, &_thermodynamic_temperature_exponent); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_265amount_of_substance_exponent, &_amount_of_substance_exponent); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_265amount_of_substance_exponent, &_amount_of_substance_exponent); +#else + a = new STEPattribute(*a_265amount_of_substance_exponent, &_amount_of_substance_exponent); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_266luminous_intensity_exponent, &_luminous_intensity_exponent); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_266luminous_intensity_exponent, &_luminous_intensity_exponent); +#else + a = new STEPattribute(*a_266luminous_intensity_exponent, &_luminous_intensity_exponent); +#endif a -> set_null (); attributes.push (a); } SdaiDimensional_exponents::SdaiDimensional_exponents (SdaiDimensional_exponents& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiDimensional_exponents::~SdaiDimensional_exponents () { } -SdaiDimensional_exponents::SdaiDimensional_exponents( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiDimensional_exponents::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDimensional_exponents: virtual access function." << G4endl; + SdaiDimensional_exponents_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiDimensional_exponents_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDimensional_exponents: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiDimensional_exponents *ent = (SdaiDimensional_exponents *)sent; +// SdaiDimensional_exponents *ent = (SdaiDimensional_exponents *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_dimensional_exponents; + ent->attributes[0].aDesc = a_260length_exponent; + ent->attributes[1].aDesc = a_261mass_exponent; + ent->attributes[2].aDesc = a_262time_exponent; + ent->attributes[3].aDesc = a_263electric_current_exponent; + ent->attributes[4].aDesc = a_264thermodynamic_temperature_exponent; + ent->attributes[5].aDesc = a_265amount_of_substance_exponent; + ent->attributes[6].aDesc = a_266luminous_intensity_exponent; +} + +SCLP23(Application_instance_ptr) +create_SdaiDimensional_exponents(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiDimensional_exponents::get_os_typespec()) + SdaiDimensional_exponents; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiDimensional_exponents::get_os_typespec()) +// SdaiDimensional_exponents; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiDimensional_exponents; +} +#endif + +#ifdef __O3DB__ +void +SdaiDimensional_exponents::oodb_reInit () +{ eDesc = config_control_designe_dimensional_exponents; + attributes [0].aDesc = a_260length_exponent; + attributes [1].aDesc = a_261mass_exponent; + attributes [2].aDesc = a_262time_exponent; + attributes [3].aDesc = a_263electric_current_exponent; + attributes [4].aDesc = a_264thermodynamic_temperature_exponent; + attributes [5].aDesc = a_265amount_of_substance_exponent; + attributes [6].aDesc = a_266luminous_intensity_exponent; +} +#endif + +SdaiDimensional_exponents::SdaiDimensional_exponents( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -23112,130 +42463,214 @@ SdaiDimensional_exponents::SdaiDimensional_exponents( STEPentity *se ) eDesc = config_control_designe_dimensional_exponents; - STEPattribute * a = new STEPattribute (*a_260length_exponent, &_length_exponent); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_260length_exponent, &_length_exponent); +#else + STEPattribute *a = new STEPattribute(*a_260length_exponent, &_length_exponent); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_261mass_exponent, &_mass_exponent); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_261mass_exponent, &_mass_exponent); +#else + a = new STEPattribute(*a_261mass_exponent, &_mass_exponent); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_262time_exponent, &_time_exponent); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_262time_exponent, &_time_exponent); +#else + a = new STEPattribute(*a_262time_exponent, &_time_exponent); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_263electric_current_exponent, &_electric_current_exponent); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_263electric_current_exponent, &_electric_current_exponent); +#else + a = new STEPattribute(*a_263electric_current_exponent, &_electric_current_exponent); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_264thermodynamic_temperature_exponent, &_thermodynamic_temperature_exponent); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_264thermodynamic_temperature_exponent, &_thermodynamic_temperature_exponent); +#else + a = new STEPattribute(*a_264thermodynamic_temperature_exponent, &_thermodynamic_temperature_exponent); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_265amount_of_substance_exponent, &_amount_of_substance_exponent); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_265amount_of_substance_exponent, &_amount_of_substance_exponent); +#else + a = new STEPattribute(*a_265amount_of_substance_exponent, &_amount_of_substance_exponent); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_266luminous_intensity_exponent, &_luminous_intensity_exponent); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_266luminous_intensity_exponent, &_luminous_intensity_exponent); +#else + a = new STEPattribute(*a_266luminous_intensity_exponent, &_luminous_intensity_exponent); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -const SdaiReal -SdaiDimensional_exponents::Length_exponent() const - { return (const SdaiReal) _length_exponent; } +const SCLP23(Real) +SdaiDimensional_exponents::length_exponent_() const +{ + return (SCLP23(Real)) _length_exponent; +} void -SdaiDimensional_exponents::Length_exponent (SdaiReal x) - { _length_exponent = x; } +SdaiDimensional_exponents::length_exponent_ (const SCLP23(Real) x) -const SdaiReal -SdaiDimensional_exponents::Mass_exponent() const - { return (const SdaiReal) _mass_exponent; } +{ + _length_exponent = x; +} + +const SCLP23(Real) +SdaiDimensional_exponents::mass_exponent_() const +{ + return (SCLP23(Real)) _mass_exponent; +} void -SdaiDimensional_exponents::Mass_exponent (SdaiReal x) - { _mass_exponent = x; } +SdaiDimensional_exponents::mass_exponent_ (const SCLP23(Real) x) -const SdaiReal -SdaiDimensional_exponents::Time_exponent() const - { return (const SdaiReal) _time_exponent; } +{ + _mass_exponent = x; +} + +const SCLP23(Real) +SdaiDimensional_exponents::time_exponent_() const +{ + return (SCLP23(Real)) _time_exponent; +} void -SdaiDimensional_exponents::Time_exponent (SdaiReal x) - { _time_exponent = x; } +SdaiDimensional_exponents::time_exponent_ (const SCLP23(Real) x) -const SdaiReal -SdaiDimensional_exponents::Electric_current_exponent() const - { return (const SdaiReal) _electric_current_exponent; } +{ + _time_exponent = x; +} + +const SCLP23(Real) +SdaiDimensional_exponents::electric_current_exponent_() const +{ + return (SCLP23(Real)) _electric_current_exponent; +} void -SdaiDimensional_exponents::Electric_current_exponent (SdaiReal x) - { _electric_current_exponent = x; } +SdaiDimensional_exponents::electric_current_exponent_ (const SCLP23(Real) x) -const SdaiReal -SdaiDimensional_exponents::Thermodynamic_temperature_exponent() const - { return (const SdaiReal) _thermodynamic_temperature_exponent; } +{ + _electric_current_exponent = x; +} + +const SCLP23(Real) +SdaiDimensional_exponents::thermodynamic_temperature_exponent_() const +{ + return (SCLP23(Real)) _thermodynamic_temperature_exponent; +} void -SdaiDimensional_exponents::Thermodynamic_temperature_exponent (SdaiReal x) - { _thermodynamic_temperature_exponent = x; } +SdaiDimensional_exponents::thermodynamic_temperature_exponent_ (const SCLP23(Real) x) -const SdaiReal -SdaiDimensional_exponents::Amount_of_substance_exponent() const - { return (const SdaiReal) _amount_of_substance_exponent; } +{ + _thermodynamic_temperature_exponent = x; +} + +const SCLP23(Real) +SdaiDimensional_exponents::amount_of_substance_exponent_() const +{ + return (SCLP23(Real)) _amount_of_substance_exponent; +} void -SdaiDimensional_exponents::Amount_of_substance_exponent (SdaiReal x) - { _amount_of_substance_exponent = x; } +SdaiDimensional_exponents::amount_of_substance_exponent_ (const SCLP23(Real) x) -const SdaiReal -SdaiDimensional_exponents::Luminous_intensity_exponent() const - { return (const SdaiReal) _luminous_intensity_exponent; } +{ + _amount_of_substance_exponent = x; +} + +const SCLP23(Real) +SdaiDimensional_exponents::luminous_intensity_exponent_() const +{ + return (SCLP23(Real)) _luminous_intensity_exponent; +} void -SdaiDimensional_exponents::Luminous_intensity_exponent (SdaiReal x) - { _luminous_intensity_exponent = x; } +SdaiDimensional_exponents::luminous_intensity_exponent_ (const SCLP23(Real) x) -///////// END_ENTITY dimensional_exponents +{ + _luminous_intensity_exponent = x; +} + +///////// END_ENTITY dimensional_exponents -///////// ENTITY start_request +///////// ENTITY start_request EntityDescriptor *config_control_designe_start_request =0; AttrDescriptor *a_267items =0; @@ -23248,14 +42683,74 @@ SdaiStart_request::SdaiStart_request( ) eDesc = config_control_designe_start_request; - STEPattribute * a = new STEPattribute (*a_267items, &_items); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_267items, &_items); +#else + STEPattribute *a = new STEPattribute(*a_267items, &_items); +#endif a -> set_null (); attributes.push (a); } SdaiStart_request::SdaiStart_request (SdaiStart_request& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiStart_request::~SdaiStart_request () { } -SdaiStart_request::SdaiStart_request (STEPentity *se ) : SdaiAction_request_assignment(se) + +#ifdef __OSTORE__ + +void +SdaiStart_request::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiStart_request: virtual access function." << G4endl; + SdaiStart_request_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiStart_request_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiStart_request: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiStart_request *ent = (SdaiStart_request *)sent; +// SdaiStart_request *ent = (SdaiStart_request *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_start_request; + ent->attributes[1].aDesc = a_267items; +} + +SCLP23(Application_instance_ptr) +create_SdaiStart_request(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiStart_request::get_os_typespec()) + SdaiStart_request; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiStart_request::get_os_typespec()) +// SdaiStart_request; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiStart_request; +} +#endif + +#ifdef __O3DB__ +void +SdaiStart_request::oodb_reInit () +{ eDesc = config_control_designe_start_request; + attributes [1].aDesc = a_267items; +} +#endif + +SdaiStart_request::SdaiStart_request (SCLP23(Application_instance) *se, int *addAttrs) : SdaiAction_request_assignment(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -23266,30 +42761,40 @@ SdaiStart_request::SdaiStart_request (STEPentity *se ) : SdaiAction_request_assi eDesc = config_control_designe_start_request; - STEPattribute * a = new STEPattribute (*a_267items, &_items); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_267items, &_items); +#else + STEPattribute *a = new STEPattribute(*a_267items, &_items); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -const SdaiStart_request_itemsH -SdaiStart_request::Items() const - { return (SdaiStart_request_itemsH) &_items; } +const SdaiStart_request_items_ptr +SdaiStart_request::items_() const +{ + return (SdaiStart_request_items_ptr) &_items; +} void -SdaiStart_request::Items (SdaiStart_request_itemsH x) +SdaiStart_request::items_ (const SdaiStart_request_items_ptr x) + { _items.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY start_request +///////// END_ENTITY start_request -///////// ENTITY cc_design_specification_reference +///////// ENTITY cc_design_specification_reference EntityDescriptor *config_control_designe_cc_design_specification_reference =0; AttrDescriptor *a_268items =0; @@ -23302,14 +42807,74 @@ SdaiCc_design_specification_reference::SdaiCc_design_specification_reference( ) eDesc = config_control_designe_cc_design_specification_reference; - STEPattribute * a = new STEPattribute (*a_268items, &_items); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_268items, &_items); +#else + STEPattribute *a = new STEPattribute(*a_268items, &_items); +#endif a -> set_null (); attributes.push (a); } SdaiCc_design_specification_reference::SdaiCc_design_specification_reference (SdaiCc_design_specification_reference& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiCc_design_specification_reference::~SdaiCc_design_specification_reference () { } -SdaiCc_design_specification_reference::SdaiCc_design_specification_reference (STEPentity *se ) : SdaiDocument_reference(se) + +#ifdef __OSTORE__ + +void +SdaiCc_design_specification_reference::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCc_design_specification_reference: virtual access function." << G4endl; + SdaiCc_design_specification_reference_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiCc_design_specification_reference_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCc_design_specification_reference: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiCc_design_specification_reference *ent = (SdaiCc_design_specification_reference *)sent; +// SdaiCc_design_specification_reference *ent = (SdaiCc_design_specification_reference *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_cc_design_specification_reference; + ent->attributes[2].aDesc = a_268items; +} + +SCLP23(Application_instance_ptr) +create_SdaiCc_design_specification_reference(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiCc_design_specification_reference::get_os_typespec()) + SdaiCc_design_specification_reference; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiCc_design_specification_reference::get_os_typespec()) +// SdaiCc_design_specification_reference; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiCc_design_specification_reference; +} +#endif + +#ifdef __O3DB__ +void +SdaiCc_design_specification_reference::oodb_reInit () +{ eDesc = config_control_designe_cc_design_specification_reference; + attributes [2].aDesc = a_268items; +} +#endif + +SdaiCc_design_specification_reference::SdaiCc_design_specification_reference (SCLP23(Application_instance) *se, int *addAttrs) : SdaiDocument_reference(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -23320,30 +42885,40 @@ SdaiCc_design_specification_reference::SdaiCc_design_specification_reference (ST eDesc = config_control_designe_cc_design_specification_reference; - STEPattribute * a = new STEPattribute (*a_268items, &_items); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_268items, &_items); +#else + STEPattribute *a = new STEPattribute(*a_268items, &_items); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -const SdaiSpecified_itemsH -SdaiCc_design_specification_reference::Items() const - { return (SdaiSpecified_itemsH) &_items; } +const SdaiSpecified_items_ptr +SdaiCc_design_specification_reference::items_() const +{ + return (SdaiSpecified_items_ptr) &_items; +} void -SdaiCc_design_specification_reference::Items (SdaiSpecified_itemsH x) +SdaiCc_design_specification_reference::items_ (const SdaiSpecified_items_ptr x) + { _items.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY cc_design_specification_reference +///////// END_ENTITY cc_design_specification_reference -///////// ENTITY supplied_part_relationship +///////// ENTITY supplied_part_relationship EntityDescriptor *config_control_designe_supplied_part_relationship =0; SdaiSupplied_part_relationship::SdaiSupplied_part_relationship( ) @@ -23356,9 +42931,61 @@ SdaiSupplied_part_relationship::SdaiSupplied_part_relationship( ) eDesc = config_control_designe_supplied_part_relationship; } SdaiSupplied_part_relationship::SdaiSupplied_part_relationship (SdaiSupplied_part_relationship& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiSupplied_part_relationship::~SdaiSupplied_part_relationship () { } -SdaiSupplied_part_relationship::SdaiSupplied_part_relationship (STEPentity *se ) : SdaiProduct_definition_relationship(se) + +#ifdef __OSTORE__ + +void +SdaiSupplied_part_relationship::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSupplied_part_relationship: virtual access function." << G4endl; + SdaiSupplied_part_relationship_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiSupplied_part_relationship_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSupplied_part_relationship: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiSupplied_part_relationship *ent = (SdaiSupplied_part_relationship *)sent; +// SdaiSupplied_part_relationship *ent = (SdaiSupplied_part_relationship *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_supplied_part_relationship; +} + +SCLP23(Application_instance_ptr) +create_SdaiSupplied_part_relationship(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiSupplied_part_relationship::get_os_typespec()) + SdaiSupplied_part_relationship; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiSupplied_part_relationship::get_os_typespec()) +// SdaiSupplied_part_relationship; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiSupplied_part_relationship; +} +#endif + +#ifdef __O3DB__ +void +SdaiSupplied_part_relationship::oodb_reInit () +{ eDesc = config_control_designe_supplied_part_relationship; +} +#endif + +SdaiSupplied_part_relationship::SdaiSupplied_part_relationship (SCLP23(Application_instance) *se, int *addAttrs) : SdaiProduct_definition_relationship(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -23372,10 +42999,10 @@ SdaiSupplied_part_relationship::SdaiSupplied_part_relationship (STEPentity *se ) /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY supplied_part_relationship +///////// END_ENTITY supplied_part_relationship -///////// ENTITY context_dependent_shape_representation +///////// ENTITY context_dependent_shape_representation EntityDescriptor *config_control_designe_context_dependent_shape_representation =0; AttrDescriptor *a_269representation_relation =0; @@ -23387,18 +43014,90 @@ SdaiContext_dependent_shape_representation::SdaiContext_dependent_shape_represen eDesc = config_control_designe_context_dependent_shape_representation; - STEPattribute * a = new STEPattribute (*a_269representation_relation, (STEPentityH *) &_representation_relation); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_269representation_relation, (SCLP23(Application_instance_ptr) *) &_representation_relation); +#else + STEPattribute *a = new STEPattribute(*a_269representation_relation, (SCLP23(Application_instance_ptr) *) &_representation_relation); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_270represented_product_relation, (STEPentityH *) &_represented_product_relation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_270represented_product_relation, (SCLP23(Application_instance_ptr) *) &_represented_product_relation); +#else + a = new STEPattribute(*a_270represented_product_relation, (SCLP23(Application_instance_ptr) *) &_represented_product_relation); +#endif a -> set_null (); attributes.push (a); } SdaiContext_dependent_shape_representation::SdaiContext_dependent_shape_representation (SdaiContext_dependent_shape_representation& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiContext_dependent_shape_representation::~SdaiContext_dependent_shape_representation () { } -SdaiContext_dependent_shape_representation::SdaiContext_dependent_shape_representation( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiContext_dependent_shape_representation::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiContext_dependent_shape_representation: virtual access function." << G4endl; + SdaiContext_dependent_shape_representation_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiContext_dependent_shape_representation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiContext_dependent_shape_representation: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiContext_dependent_shape_representation *ent = (SdaiContext_dependent_shape_representation *)sent; +// SdaiContext_dependent_shape_representation *ent = (SdaiContext_dependent_shape_representation *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_context_dependent_shape_representation; + ent->attributes[0].aDesc = a_269representation_relation; + if(ent->_representation_relation == 0) + ent->_representation_relation = S_ENTITY_NULL; + ent->attributes[1].aDesc = a_270represented_product_relation; + if(ent->_represented_product_relation == 0) + ent->_represented_product_relation = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiContext_dependent_shape_representation(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiContext_dependent_shape_representation::get_os_typespec()) + SdaiContext_dependent_shape_representation; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiContext_dependent_shape_representation::get_os_typespec()) +// SdaiContext_dependent_shape_representation; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiContext_dependent_shape_representation; +} +#endif + +#ifdef __O3DB__ +void +SdaiContext_dependent_shape_representation::oodb_reInit () +{ eDesc = config_control_designe_context_dependent_shape_representation; + attributes [0].aDesc = a_269representation_relation; + attributes [1].aDesc = a_270represented_product_relation; +} +#endif + +SdaiContext_dependent_shape_representation::SdaiContext_dependent_shape_representation( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -23407,45 +43106,69 @@ SdaiContext_dependent_shape_representation::SdaiContext_dependent_shape_represen eDesc = config_control_designe_context_dependent_shape_representation; - STEPattribute * a = new STEPattribute (*a_269representation_relation, (STEPentityH *) &_representation_relation); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_269representation_relation, (SCLP23(Application_instance_ptr) *) &_representation_relation); +#else + STEPattribute *a = new STEPattribute(*a_269representation_relation, (SCLP23(Application_instance_ptr) *) &_representation_relation); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_270represented_product_relation, (STEPentityH *) &_represented_product_relation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_270represented_product_relation, (SCLP23(Application_instance_ptr) *) &_represented_product_relation); +#else + a = new STEPattribute(*a_270represented_product_relation, (SCLP23(Application_instance_ptr) *) &_represented_product_relation); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiShape_representation_relationshipH -SdaiContext_dependent_shape_representation::Representation_relation() const - { return (SdaiShape_representation_relationshipH) _representation_relation; } +const SdaiShape_representation_relationship_ptr +SdaiContext_dependent_shape_representation::representation_relation_() const +{ + return (SdaiShape_representation_relationship_ptr) _representation_relation; +} void -SdaiContext_dependent_shape_representation::Representation_relation (SdaiShape_representation_relationshipH x) - { _representation_relation = x; } +SdaiContext_dependent_shape_representation::representation_relation_ (const SdaiShape_representation_relationship_ptr x) -SdaiProduct_definition_shapeH -SdaiContext_dependent_shape_representation::Represented_product_relation() const - { return (SdaiProduct_definition_shapeH) _represented_product_relation; } +{ + _representation_relation = x; +} + +const SdaiProduct_definition_shape_ptr +SdaiContext_dependent_shape_representation::represented_product_relation_() const +{ + return (SdaiProduct_definition_shape_ptr) _represented_product_relation; +} void -SdaiContext_dependent_shape_representation::Represented_product_relation (SdaiProduct_definition_shapeH x) - { _represented_product_relation = x; } +SdaiContext_dependent_shape_representation::represented_product_relation_ (const SdaiProduct_definition_shape_ptr x) -///////// END_ENTITY context_dependent_shape_representation +{ + _represented_product_relation = x; +} + +///////// END_ENTITY context_dependent_shape_representation -///////// ENTITY ordinal_date +///////// ENTITY ordinal_date EntityDescriptor *config_control_designe_ordinal_date =0; AttrDescriptor *a_271day_component =0; @@ -23458,14 +43181,74 @@ SdaiOrdinal_date::SdaiOrdinal_date( ) eDesc = config_control_designe_ordinal_date; - STEPattribute * a = new STEPattribute (*a_271day_component, &_day_component); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_271day_component, &_day_component); +#else + STEPattribute *a = new STEPattribute(*a_271day_component, &_day_component); +#endif a -> set_null (); attributes.push (a); } SdaiOrdinal_date::SdaiOrdinal_date (SdaiOrdinal_date& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiOrdinal_date::~SdaiOrdinal_date () { } -SdaiOrdinal_date::SdaiOrdinal_date (STEPentity *se ) : SdaiDate(se) + +#ifdef __OSTORE__ + +void +SdaiOrdinal_date::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOrdinal_date: virtual access function." << G4endl; + SdaiOrdinal_date_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiOrdinal_date_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOrdinal_date: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiOrdinal_date *ent = (SdaiOrdinal_date *)sent; +// SdaiOrdinal_date *ent = (SdaiOrdinal_date *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_ordinal_date; + ent->attributes[1].aDesc = a_271day_component; +} + +SCLP23(Application_instance_ptr) +create_SdaiOrdinal_date(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiOrdinal_date::get_os_typespec()) + SdaiOrdinal_date; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiOrdinal_date::get_os_typespec()) +// SdaiOrdinal_date; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiOrdinal_date; +} +#endif + +#ifdef __O3DB__ +void +SdaiOrdinal_date::oodb_reInit () +{ eDesc = config_control_designe_ordinal_date; + attributes [1].aDesc = a_271day_component; +} +#endif + +SdaiOrdinal_date::SdaiOrdinal_date (SCLP23(Application_instance) *se, int *addAttrs) : SdaiDate(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -23476,30 +43259,42 @@ SdaiOrdinal_date::SdaiOrdinal_date (STEPentity *se ) : SdaiDate(se) eDesc = config_control_designe_ordinal_date; - STEPattribute * a = new STEPattribute (*a_271day_component, &_day_component); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_271day_component, &_day_component); +#else + STEPattribute *a = new STEPattribute(*a_271day_component, &_day_component); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiDay_in_year_number -SdaiOrdinal_date::Day_component() const - { return (const SdaiDay_in_year_number) _day_component; } +SdaiOrdinal_date::day_component_() const +{ + return (SdaiDay_in_year_number) _day_component; +} void -SdaiOrdinal_date::Day_component (SdaiDay_in_year_number x) - { _day_component = x; } +SdaiOrdinal_date::day_component_ (const SdaiDay_in_year_number x) + +{ + _day_component = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY ordinal_date +///////// END_ENTITY ordinal_date -///////// ENTITY face_outer_bound +///////// ENTITY face_outer_bound EntityDescriptor *config_control_designe_face_outer_bound =0; SdaiFace_outer_bound::SdaiFace_outer_bound( ) @@ -23512,9 +43307,61 @@ SdaiFace_outer_bound::SdaiFace_outer_bound( ) eDesc = config_control_designe_face_outer_bound; } SdaiFace_outer_bound::SdaiFace_outer_bound (SdaiFace_outer_bound& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiFace_outer_bound::~SdaiFace_outer_bound () { } -SdaiFace_outer_bound::SdaiFace_outer_bound (STEPentity *se ) : SdaiFace_bound(se) + +#ifdef __OSTORE__ + +void +SdaiFace_outer_bound::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiFace_outer_bound: virtual access function." << G4endl; + SdaiFace_outer_bound_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiFace_outer_bound_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiFace_outer_bound: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiFace_outer_bound *ent = (SdaiFace_outer_bound *)sent; +// SdaiFace_outer_bound *ent = (SdaiFace_outer_bound *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_face_outer_bound; +} + +SCLP23(Application_instance_ptr) +create_SdaiFace_outer_bound(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiFace_outer_bound::get_os_typespec()) + SdaiFace_outer_bound; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiFace_outer_bound::get_os_typespec()) +// SdaiFace_outer_bound; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiFace_outer_bound; +} +#endif + +#ifdef __O3DB__ +void +SdaiFace_outer_bound::oodb_reInit () +{ eDesc = config_control_designe_face_outer_bound; +} +#endif + +SdaiFace_outer_bound::SdaiFace_outer_bound (SCLP23(Application_instance) *se, int *addAttrs) : SdaiFace_bound(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -23528,10 +43375,10 @@ SdaiFace_outer_bound::SdaiFace_outer_bound (STEPentity *se ) : SdaiFace_bound(se /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY face_outer_bound +///////// END_ENTITY face_outer_bound -///////// ENTITY mass_measure_with_unit +///////// ENTITY mass_measure_with_unit EntityDescriptor *config_control_designe_mass_measure_with_unit =0; SdaiMass_measure_with_unit::SdaiMass_measure_with_unit( ) @@ -23544,9 +43391,61 @@ SdaiMass_measure_with_unit::SdaiMass_measure_with_unit( ) eDesc = config_control_designe_mass_measure_with_unit; } SdaiMass_measure_with_unit::SdaiMass_measure_with_unit (SdaiMass_measure_with_unit& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiMass_measure_with_unit::~SdaiMass_measure_with_unit () { } -SdaiMass_measure_with_unit::SdaiMass_measure_with_unit (STEPentity *se ) : SdaiMeasure_with_unit(se) + +#ifdef __OSTORE__ + +void +SdaiMass_measure_with_unit::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiMass_measure_with_unit: virtual access function." << G4endl; + SdaiMass_measure_with_unit_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiMass_measure_with_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiMass_measure_with_unit: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiMass_measure_with_unit *ent = (SdaiMass_measure_with_unit *)sent; +// SdaiMass_measure_with_unit *ent = (SdaiMass_measure_with_unit *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_mass_measure_with_unit; +} + +SCLP23(Application_instance_ptr) +create_SdaiMass_measure_with_unit(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiMass_measure_with_unit::get_os_typespec()) + SdaiMass_measure_with_unit; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiMass_measure_with_unit::get_os_typespec()) +// SdaiMass_measure_with_unit; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiMass_measure_with_unit; +} +#endif + +#ifdef __O3DB__ +void +SdaiMass_measure_with_unit::oodb_reInit () +{ eDesc = config_control_designe_mass_measure_with_unit; +} +#endif + +SdaiMass_measure_with_unit::SdaiMass_measure_with_unit (SCLP23(Application_instance) *se, int *addAttrs) : SdaiMeasure_with_unit(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -23560,10 +43459,10 @@ SdaiMass_measure_with_unit::SdaiMass_measure_with_unit (STEPentity *se ) : SdaiM /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY mass_measure_with_unit +///////// END_ENTITY mass_measure_with_unit -///////// ENTITY brep_with_voids +///////// ENTITY brep_with_voids EntityDescriptor *config_control_designe_brep_with_voids =0; AttrDescriptor *a_272voids =0; @@ -23576,14 +43475,75 @@ SdaiBrep_with_voids::SdaiBrep_with_voids( ) eDesc = config_control_designe_brep_with_voids; - STEPattribute * a = new STEPattribute (*a_272voids, &_voids); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_272voids, &_voids); +#else + STEPattribute *a = new STEPattribute(*a_272voids, &_voids); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiBrep_with_voids::SdaiBrep_with_voids (SdaiBrep_with_voids& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiBrep_with_voids::~SdaiBrep_with_voids () { } -SdaiBrep_with_voids::SdaiBrep_with_voids (STEPentity *se ) : SdaiManifold_solid_brep(se) + +#ifdef __OSTORE__ + +void +SdaiBrep_with_voids::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiBrep_with_voids: virtual access function." << G4endl; + SdaiBrep_with_voids_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiBrep_with_voids_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiBrep_with_voids: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiBrep_with_voids *ent = (SdaiBrep_with_voids *)sent; +// SdaiBrep_with_voids *ent = (SdaiBrep_with_voids *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_brep_with_voids; + ent->attributes[2].aDesc = a_272voids; +} + +SCLP23(Application_instance_ptr) +create_SdaiBrep_with_voids(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiBrep_with_voids::get_os_typespec()) + SdaiBrep_with_voids; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiBrep_with_voids::get_os_typespec()) +// SdaiBrep_with_voids; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiBrep_with_voids; +} +#endif + +#ifdef __O3DB__ +void +SdaiBrep_with_voids::oodb_reInit () +{ eDesc = config_control_designe_brep_with_voids; + attributes [2].aDesc = a_272voids; +} +#endif + +SdaiBrep_with_voids::SdaiBrep_with_voids (SCLP23(Application_instance) *se, int *addAttrs) : SdaiManifold_solid_brep(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -23594,30 +43554,41 @@ SdaiBrep_with_voids::SdaiBrep_with_voids (STEPentity *se ) : SdaiManifold_solid_ eDesc = config_control_designe_brep_with_voids; - STEPattribute * a = new STEPattribute (*a_272voids, &_voids); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_272voids, &_voids); +#else + STEPattribute *a = new STEPattribute(*a_272voids, &_voids); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -const EntityAggregateH -SdaiBrep_with_voids::Voids() const - { return (EntityAggregateH) &_voids; } +const EntityAggregate_ptr +SdaiBrep_with_voids::voids_() const +{ + return (EntityAggregate_ptr) &_voids; +} void -SdaiBrep_with_voids::Voids (EntityAggregateH x) +SdaiBrep_with_voids::voids_ (const EntityAggregate_ptr x) + { _voids.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY brep_with_voids +///////// END_ENTITY brep_with_voids -///////// ENTITY week_of_year_and_day_date +///////// ENTITY week_of_year_and_day_date EntityDescriptor *config_control_designe_week_of_year_and_day_date =0; AttrDescriptor *a_273week_component =0; @@ -23631,18 +43602,86 @@ SdaiWeek_of_year_and_day_date::SdaiWeek_of_year_and_day_date( ) eDesc = config_control_designe_week_of_year_and_day_date; - STEPattribute * a = new STEPattribute (*a_273week_component, &_week_component); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_273week_component, &_week_component); +#else + STEPattribute *a = new STEPattribute(*a_273week_component, &_week_component); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_274day_component, &_day_component); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_274day_component, &_day_component); +#else + a = new STEPattribute(*a_274day_component, &_day_component); +#endif a -> set_null (); attributes.push (a); } SdaiWeek_of_year_and_day_date::SdaiWeek_of_year_and_day_date (SdaiWeek_of_year_and_day_date& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiWeek_of_year_and_day_date::~SdaiWeek_of_year_and_day_date () { } -SdaiWeek_of_year_and_day_date::SdaiWeek_of_year_and_day_date (STEPentity *se ) : SdaiDate(se) + +#ifdef __OSTORE__ + +void +SdaiWeek_of_year_and_day_date::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiWeek_of_year_and_day_date: virtual access function." << G4endl; + SdaiWeek_of_year_and_day_date_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiWeek_of_year_and_day_date_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiWeek_of_year_and_day_date: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiWeek_of_year_and_day_date *ent = (SdaiWeek_of_year_and_day_date *)sent; +// SdaiWeek_of_year_and_day_date *ent = (SdaiWeek_of_year_and_day_date *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_week_of_year_and_day_date; + ent->attributes[1].aDesc = a_273week_component; + ent->attributes[2].aDesc = a_274day_component; +} + +SCLP23(Application_instance_ptr) +create_SdaiWeek_of_year_and_day_date(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiWeek_of_year_and_day_date::get_os_typespec()) + SdaiWeek_of_year_and_day_date; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiWeek_of_year_and_day_date::get_os_typespec()) +// SdaiWeek_of_year_and_day_date; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiWeek_of_year_and_day_date; +} +#endif + +#ifdef __O3DB__ +void +SdaiWeek_of_year_and_day_date::oodb_reInit () +{ eDesc = config_control_designe_week_of_year_and_day_date; + attributes [1].aDesc = a_273week_component; + attributes [2].aDesc = a_274day_component; +} +#endif + +SdaiWeek_of_year_and_day_date::SdaiWeek_of_year_and_day_date (SCLP23(Application_instance) *se, int *addAttrs) : SdaiDate(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -23653,47 +43692,71 @@ SdaiWeek_of_year_and_day_date::SdaiWeek_of_year_and_day_date (STEPentity *se ) : eDesc = config_control_designe_week_of_year_and_day_date; - STEPattribute * a = new STEPattribute (*a_273week_component, &_week_component); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_273week_component, &_week_component); +#else + STEPattribute *a = new STEPattribute(*a_273week_component, &_week_component); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_274day_component, &_day_component); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_274day_component, &_day_component); +#else + a = new STEPattribute(*a_274day_component, &_day_component); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiWeek_in_year_number -SdaiWeek_of_year_and_day_date::Week_component() const - { return (const SdaiWeek_in_year_number) _week_component; } +SdaiWeek_of_year_and_day_date::week_component_() const +{ + return (SdaiWeek_in_year_number) _week_component; +} void -SdaiWeek_of_year_and_day_date::Week_component (SdaiWeek_in_year_number x) - { _week_component = x; } +SdaiWeek_of_year_and_day_date::week_component_ (const SdaiWeek_in_year_number x) + +{ + _week_component = x; +} const SdaiDay_in_week_number -SdaiWeek_of_year_and_day_date::Day_component() const - { return (const SdaiDay_in_week_number) _day_component; } +SdaiWeek_of_year_and_day_date::day_component_() const +{ + return (SdaiDay_in_week_number) _day_component; +} void -SdaiWeek_of_year_and_day_date::Day_component (SdaiDay_in_week_number x) - { _day_component = x; } +SdaiWeek_of_year_and_day_date::day_component_ (const SdaiDay_in_week_number x) + +{ + _day_component = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY week_of_year_and_day_date +///////// END_ENTITY week_of_year_and_day_date -///////// ENTITY point_on_curve +///////// ENTITY point_on_curve EntityDescriptor *config_control_designe_point_on_curve =0; AttrDescriptor *a_275basis_curve =0; @@ -23707,18 +43770,89 @@ SdaiPoint_on_curve::SdaiPoint_on_curve( ) eDesc = config_control_designe_point_on_curve; - STEPattribute * a = new STEPattribute (*a_275basis_curve, (STEPentityH *) &_basis_curve); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_275basis_curve, (SCLP23(Application_instance_ptr) *) &_basis_curve); +#else + STEPattribute *a = new STEPattribute(*a_275basis_curve, (SCLP23(Application_instance_ptr) *) &_basis_curve); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_276point_parameter, &_point_parameter); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_276point_parameter, &_point_parameter); +#else + a = new STEPattribute(*a_276point_parameter, &_point_parameter); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiPoint_on_curve::SdaiPoint_on_curve (SdaiPoint_on_curve& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiPoint_on_curve::~SdaiPoint_on_curve () { } -SdaiPoint_on_curve::SdaiPoint_on_curve (STEPentity *se ) : SdaiPoint(se) + +#ifdef __OSTORE__ + +void +SdaiPoint_on_curve::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPoint_on_curve: virtual access function." << G4endl; + SdaiPoint_on_curve_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiPoint_on_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPoint_on_curve: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiPoint_on_curve *ent = (SdaiPoint_on_curve *)sent; +// SdaiPoint_on_curve *ent = (SdaiPoint_on_curve *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_point_on_curve; + ent->attributes[1].aDesc = a_275basis_curve; + if(ent->_basis_curve == 0) + ent->_basis_curve = S_ENTITY_NULL; + ent->attributes[2].aDesc = a_276point_parameter; +} + +SCLP23(Application_instance_ptr) +create_SdaiPoint_on_curve(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiPoint_on_curve::get_os_typespec()) + SdaiPoint_on_curve; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiPoint_on_curve::get_os_typespec()) +// SdaiPoint_on_curve; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiPoint_on_curve; +} +#endif + +#ifdef __O3DB__ +void +SdaiPoint_on_curve::oodb_reInit () +{ eDesc = config_control_designe_point_on_curve; + attributes [1].aDesc = a_275basis_curve; + attributes [2].aDesc = a_276point_parameter; +} +#endif + +SdaiPoint_on_curve::SdaiPoint_on_curve (SCLP23(Application_instance) *se, int *addAttrs) : SdaiPoint(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -23729,47 +43863,72 @@ SdaiPoint_on_curve::SdaiPoint_on_curve (STEPentity *se ) : SdaiPoint(se) eDesc = config_control_designe_point_on_curve; - STEPattribute * a = new STEPattribute (*a_275basis_curve, (STEPentityH *) &_basis_curve); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_275basis_curve, (SCLP23(Application_instance_ptr) *) &_basis_curve); +#else + STEPattribute *a = new STEPattribute(*a_275basis_curve, (SCLP23(Application_instance_ptr) *) &_basis_curve); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_276point_parameter, &_point_parameter); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_276point_parameter, &_point_parameter); +#else + a = new STEPattribute(*a_276point_parameter, &_point_parameter); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -SdaiCurveH -SdaiPoint_on_curve::Basis_curve() const - { return (SdaiCurveH) _basis_curve; } +const SdaiCurve_ptr +SdaiPoint_on_curve::basis_curve_() const +{ + return (SdaiCurve_ptr) _basis_curve; +} void -SdaiPoint_on_curve::Basis_curve (SdaiCurveH x) - { _basis_curve = x; } +SdaiPoint_on_curve::basis_curve_ (const SdaiCurve_ptr x) + +{ + _basis_curve = x; +} const SdaiParameter_value -SdaiPoint_on_curve::Point_parameter() const - { return (const SdaiParameter_value) _point_parameter; } +SdaiPoint_on_curve::point_parameter_() const +{ + return (SdaiParameter_value) _point_parameter; +} void -SdaiPoint_on_curve::Point_parameter (SdaiParameter_value x) - { _point_parameter = x; } +SdaiPoint_on_curve::point_parameter_ (const SdaiParameter_value x) + +{ + _point_parameter = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY point_on_curve +///////// END_ENTITY point_on_curve -///////// ENTITY shell_based_wireframe_shape_representation +///////// ENTITY shell_based_wireframe_shape_representation EntityDescriptor *config_control_designe_shell_based_wireframe_shape_representation =0; SdaiShell_based_wireframe_shape_representation::SdaiShell_based_wireframe_shape_representation( ) @@ -23782,9 +43941,61 @@ SdaiShell_based_wireframe_shape_representation::SdaiShell_based_wireframe_shape_ eDesc = config_control_designe_shell_based_wireframe_shape_representation; } SdaiShell_based_wireframe_shape_representation::SdaiShell_based_wireframe_shape_representation (SdaiShell_based_wireframe_shape_representation& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiShell_based_wireframe_shape_representation::~SdaiShell_based_wireframe_shape_representation () { } -SdaiShell_based_wireframe_shape_representation::SdaiShell_based_wireframe_shape_representation (STEPentity *se ) : SdaiShape_representation(se) + +#ifdef __OSTORE__ + +void +SdaiShell_based_wireframe_shape_representation::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiShell_based_wireframe_shape_representation: virtual access function." << G4endl; + SdaiShell_based_wireframe_shape_representation_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiShell_based_wireframe_shape_representation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiShell_based_wireframe_shape_representation: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiShell_based_wireframe_shape_representation *ent = (SdaiShell_based_wireframe_shape_representation *)sent; +// SdaiShell_based_wireframe_shape_representation *ent = (SdaiShell_based_wireframe_shape_representation *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_shell_based_wireframe_shape_representation; +} + +SCLP23(Application_instance_ptr) +create_SdaiShell_based_wireframe_shape_representation(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiShell_based_wireframe_shape_representation::get_os_typespec()) + SdaiShell_based_wireframe_shape_representation; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiShell_based_wireframe_shape_representation::get_os_typespec()) +// SdaiShell_based_wireframe_shape_representation; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiShell_based_wireframe_shape_representation; +} +#endif + +#ifdef __O3DB__ +void +SdaiShell_based_wireframe_shape_representation::oodb_reInit () +{ eDesc = config_control_designe_shell_based_wireframe_shape_representation; +} +#endif + +SdaiShell_based_wireframe_shape_representation::SdaiShell_based_wireframe_shape_representation (SCLP23(Application_instance) *se, int *addAttrs) : SdaiShape_representation(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -23798,10 +44009,10 @@ SdaiShell_based_wireframe_shape_representation::SdaiShell_based_wireframe_shape_ /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY shell_based_wireframe_shape_representation +///////// END_ENTITY shell_based_wireframe_shape_representation -///////// ENTITY face +///////// ENTITY face EntityDescriptor *config_control_designe_face =0; AttrDescriptor *a_277bounds =0; @@ -23814,14 +44025,74 @@ SdaiFace::SdaiFace( ) eDesc = config_control_designe_face; - STEPattribute * a = new STEPattribute (*a_277bounds, &_bounds); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_277bounds, &_bounds); +#else + STEPattribute *a = new STEPattribute(*a_277bounds, &_bounds); +#endif a -> set_null (); attributes.push (a); } SdaiFace::SdaiFace (SdaiFace& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiFace::~SdaiFace () { } -SdaiFace::SdaiFace (STEPentity *se ) : SdaiTopological_representation_item(se) + +#ifdef __OSTORE__ + +void +SdaiFace::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiFace: virtual access function." << G4endl; + SdaiFace_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiFace_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiFace: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiFace *ent = (SdaiFace *)sent; +// SdaiFace *ent = (SdaiFace *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_face; + ent->attributes[1].aDesc = a_277bounds; +} + +SCLP23(Application_instance_ptr) +create_SdaiFace(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiFace::get_os_typespec()) + SdaiFace; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiFace::get_os_typespec()) +// SdaiFace; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiFace; +} +#endif + +#ifdef __O3DB__ +void +SdaiFace::oodb_reInit () +{ eDesc = config_control_designe_face; + attributes [1].aDesc = a_277bounds; +} +#endif + +SdaiFace::SdaiFace (SCLP23(Application_instance) *se, int *addAttrs) : SdaiTopological_representation_item(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -23832,30 +44103,40 @@ SdaiFace::SdaiFace (STEPentity *se ) : SdaiTopological_representation_item(se) eDesc = config_control_designe_face; - STEPattribute * a = new STEPattribute (*a_277bounds, &_bounds); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_277bounds, &_bounds); +#else + STEPattribute *a = new STEPattribute(*a_277bounds, &_bounds); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -const EntityAggregateH -SdaiFace::Bounds() const - { return (EntityAggregateH) &_bounds; } +const EntityAggregate_ptr +SdaiFace::bounds_() const +{ + return (EntityAggregate_ptr) &_bounds; +} void -SdaiFace::Bounds (EntityAggregateH x) +SdaiFace::bounds_ (const EntityAggregate_ptr x) + { _bounds.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY face +///////// END_ENTITY face -///////// ENTITY face_surface +///////// ENTITY face_surface EntityDescriptor *config_control_designe_face_surface =0; AttrDescriptor *a_278face_geometry =0; @@ -23867,22 +44148,107 @@ SdaiFace_surface::SdaiFace_surface( ) /* Ignore the first parent since it is */ /* part of the main inheritance hierarchy */ /* parent: SdaiGeometric_representation_item */ + HeadEntity(this); +#if 0 + /* Optionally use the following to replace the line following + the endif. Use this to turn off adding attributes in + diamond shaped hierarchies for each additional parent at this + level. You currently must hand edit this for it to work. */ + int attrFlags[3]; // e.g. + attrFlags[0] = 1; // add parents attrs + attrFlags[1] = 1; // add parent of parents attrs + attrFlags[2] = 0; // do not add parent of parent of parents attrs + // In *imaginary* hierarchy turn off attrFlags[2] since it + // would be the parent that has more than one path to it. + AppendMultInstance(new SdaiGeometric_representation_item(this, attrFlags)); +#endif AppendMultInstance(new SdaiGeometric_representation_item(this)); eDesc = config_control_designe_face_surface; - STEPattribute * a = new STEPattribute (*a_278face_geometry, (STEPentityH *) &_face_geometry); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_278face_geometry, (SCLP23(Application_instance_ptr) *) &_face_geometry); +#else + STEPattribute *a = new STEPattribute(*a_278face_geometry, (SCLP23(Application_instance_ptr) *) &_face_geometry); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_279same_sense, &_same_sense); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_279same_sense, &_same_sense); +#else + a = new STEPattribute(*a_279same_sense, &_same_sense); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiFace_surface::SdaiFace_surface (SdaiFace_surface& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiFace_surface::~SdaiFace_surface () { } -SdaiFace_surface::SdaiFace_surface (STEPentity *se ) : SdaiFace(se) + +#ifdef __OSTORE__ + +void +SdaiFace_surface::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiFace_surface: virtual access function." << G4endl; + SdaiFace_surface_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiFace_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiFace_surface: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiFace_surface *ent = (SdaiFace_surface *)sent; +// SdaiFace_surface *ent = (SdaiFace_surface *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_face_surface; + ent->attributes[3].aDesc = a_278face_geometry; + if(ent->_face_geometry == 0) + ent->_face_geometry = S_ENTITY_NULL; + ent->attributes[4].aDesc = a_279same_sense; +} + +SCLP23(Application_instance_ptr) +create_SdaiFace_surface(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiFace_surface::get_os_typespec()) + SdaiFace_surface; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiFace_surface::get_os_typespec()) +// SdaiFace_surface; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiFace_surface; +} +#endif + +#ifdef __O3DB__ +void +SdaiFace_surface::oodb_reInit () +{ eDesc = config_control_designe_face_surface; + attributes [3].aDesc = a_278face_geometry; + attributes [4].aDesc = a_279same_sense; +} +#endif + +SdaiFace_surface::SdaiFace_surface (SCLP23(Application_instance) *se, int *addAttrs) : SdaiFace(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -23891,44 +44257,82 @@ SdaiFace_surface::SdaiFace_surface (STEPentity *se ) : SdaiFace(se) /* Ignore the first parent since it is */ /* part of the main inheritance hierarchy */ /* parent: SdaiGeometric_representation_item */ - se->AppendMultInstance(new SdaiGeometric_representation_item(se)); +#if 0 + /* Optionally use the following to replace the line following + the endif. Use this to turn off adding attributes in + diamond shaped hierarchies for each additional parent at this + level. You currently must hand edit this for it to work. */ + int attrFlags[3]; // e.g. + attrFlags[0] = 1; // add parents attrs + attrFlags[1] = 1; // add parent of parents attrs + attrFlags[2] = 0; // do not add parent of parent of parents attrs + // In *imaginary* hierarchy turn off attrFlags[2] since it + // would be the parent that has more than one path to it. + se->AppendMultInstance(new SdaiGeometric_representation_item(se, attrFlags)); +#endif + se->AppendMultInstance(new SdaiGeometric_representation_item(se, 0)); eDesc = config_control_designe_face_surface; - STEPattribute * a = new STEPattribute (*a_278face_geometry, (STEPentityH *) &_face_geometry); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_278face_geometry, (SCLP23(Application_instance_ptr) *) &_face_geometry); +#else + STEPattribute *a = new STEPattribute(*a_278face_geometry, (SCLP23(Application_instance_ptr) *) &_face_geometry); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_279same_sense, &_same_sense); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_279same_sense, &_same_sense); +#else + a = new STEPattribute(*a_279same_sense, &_same_sense); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -SdaiSurfaceH -SdaiFace_surface::Face_geometry() const - { return (SdaiSurfaceH) _face_geometry; } +const SdaiSurface_ptr +SdaiFace_surface::face_geometry_() const +{ + return (SdaiSurface_ptr) _face_geometry; +} void -SdaiFace_surface::Face_geometry (SdaiSurfaceH x) - { _face_geometry = x; } +SdaiFace_surface::face_geometry_ (const SdaiSurface_ptr x) -const BOOLEAN -SdaiFace_surface::Same_sense() const - { return (LOGICAL) _same_sense; } +{ + _face_geometry = x; +} + +const SCLBOOL(Bool) +SdaiFace_surface::same_sense_() const +{ + return (SCLBOOL(Bool)) _same_sense; +} void -SdaiFace_surface::Same_sense (BOOLEAN x) - { _same_sense.put (x); } +SdaiFace_surface::same_sense_ (const SCLBOOL(Bool) x) + +{ + _same_sense.put (x); +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ @@ -23936,15 +44340,15 @@ SdaiFace_surface::Same_sense (BOOLEAN x) #endif -///////// END_ENTITY face_surface +///////// END_ENTITY face_surface -///////// ENTITY oriented_face +///////// ENTITY oriented_face EntityDescriptor *config_control_designe_oriented_face =0; AttrDescriptor *a_280face_element =0; AttrDescriptor *a_281orientation =0; -AttrDescriptor *a_282Dface_bounds =0; +Derived_attribute *a_282Dface_bounds =0; SdaiOriented_face::SdaiOriented_face( ) { @@ -23954,19 +44358,89 @@ SdaiOriented_face::SdaiOriented_face( ) eDesc = config_control_designe_oriented_face; - STEPattribute * a = new STEPattribute (*a_280face_element, (STEPentityH *) &_face_element); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_280face_element, (SCLP23(Application_instance_ptr) *) &_face_element); +#else + STEPattribute *a = new STEPattribute(*a_280face_element, (SCLP23(Application_instance_ptr) *) &_face_element); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_281orientation, &_orientation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_281orientation, &_orientation); +#else + a = new STEPattribute(*a_281orientation, &_orientation); +#endif a -> set_null (); attributes.push (a); MakeDerived ("bounds"); } SdaiOriented_face::SdaiOriented_face (SdaiOriented_face& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiOriented_face::~SdaiOriented_face () { } -SdaiOriented_face::SdaiOriented_face (STEPentity *se ) : SdaiFace(se) + +#ifdef __OSTORE__ + +void +SdaiOriented_face::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOriented_face: virtual access function." << G4endl; + SdaiOriented_face_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiOriented_face_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOriented_face: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiOriented_face *ent = (SdaiOriented_face *)sent; +// SdaiOriented_face *ent = (SdaiOriented_face *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_oriented_face; + ent->attributes[2].aDesc = a_280face_element; + if(ent->_face_element == 0) + ent->_face_element = S_ENTITY_NULL; + ent->attributes[3].aDesc = a_281orientation; +} + +SCLP23(Application_instance_ptr) +create_SdaiOriented_face(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiOriented_face::get_os_typespec()) + SdaiOriented_face; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiOriented_face::get_os_typespec()) +// SdaiOriented_face; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiOriented_face; +} +#endif + +#ifdef __O3DB__ +void +SdaiOriented_face::oodb_reInit () +{ eDesc = config_control_designe_oriented_face; + attributes [2].aDesc = a_280face_element; + attributes [3].aDesc = a_281orientation; +} +#endif + +SdaiOriented_face::SdaiOriented_face (SCLP23(Application_instance) *se, int *addAttrs) : SdaiFace(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -23977,52 +44451,76 @@ SdaiOriented_face::SdaiOriented_face (STEPentity *se ) : SdaiFace(se) eDesc = config_control_designe_oriented_face; - STEPattribute * a = new STEPattribute (*a_280face_element, (STEPentityH *) &_face_element); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_280face_element, (SCLP23(Application_instance_ptr) *) &_face_element); +#else + STEPattribute *a = new STEPattribute(*a_280face_element, (SCLP23(Application_instance_ptr) *) &_face_element); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_281orientation, &_orientation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_281orientation, &_orientation); +#else + a = new STEPattribute(*a_281orientation, &_orientation); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); MakeDerived ("bounds"); } -SdaiFaceH -SdaiOriented_face::Face_element() const - { return (SdaiFaceH) _face_element; } +const SdaiFace_ptr +SdaiOriented_face::face_element_() const +{ + return (SdaiFace_ptr) _face_element; +} void -SdaiOriented_face::Face_element (SdaiFaceH x) - { _face_element = x; } +SdaiOriented_face::face_element_ (const SdaiFace_ptr x) -const BOOLEAN -SdaiOriented_face::Orientation() const - { return (LOGICAL) _orientation; } +{ + _face_element = x; +} + +const SCLBOOL(Bool) +SdaiOriented_face::orientation_() const +{ + return (SCLBOOL(Bool)) _orientation; +} void -SdaiOriented_face::Orientation (BOOLEAN x) - { _orientation.put (x); } +SdaiOriented_face::orientation_ (const SCLBOOL(Bool) x) + +{ + _orientation.put (x); +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY oriented_face +///////// END_ENTITY oriented_face -///////// ENTITY surface_of_revolution +///////// ENTITY surface_of_revolution EntityDescriptor *config_control_designe_surface_of_revolution =0; AttrDescriptor *a_283axis_position =0; -AttrDescriptor *a_284Daxis_line =0; +Derived_attribute *a_284Daxis_line =0; SdaiSurface_of_revolution::SdaiSurface_of_revolution( ) { @@ -24032,14 +44530,78 @@ SdaiSurface_of_revolution::SdaiSurface_of_revolution( ) eDesc = config_control_designe_surface_of_revolution; - STEPattribute * a = new STEPattribute (*a_283axis_position, (STEPentityH *) &_axis_position); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_283axis_position, (SCLP23(Application_instance_ptr) *) &_axis_position); +#else + STEPattribute *a = new STEPattribute(*a_283axis_position, (SCLP23(Application_instance_ptr) *) &_axis_position); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); + MakeDerived ("axis_line"); } SdaiSurface_of_revolution::SdaiSurface_of_revolution (SdaiSurface_of_revolution& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiSurface_of_revolution::~SdaiSurface_of_revolution () { } -SdaiSurface_of_revolution::SdaiSurface_of_revolution (STEPentity *se ) : SdaiSwept_surface(se) + +#ifdef __OSTORE__ + +void +SdaiSurface_of_revolution::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSurface_of_revolution: virtual access function." << G4endl; + SdaiSurface_of_revolution_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiSurface_of_revolution_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSurface_of_revolution: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiSurface_of_revolution *ent = (SdaiSurface_of_revolution *)sent; +// SdaiSurface_of_revolution *ent = (SdaiSurface_of_revolution *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_surface_of_revolution; + ent->attributes[2].aDesc = a_283axis_position; + if(ent->_axis_position == 0) + ent->_axis_position = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiSurface_of_revolution(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiSurface_of_revolution::get_os_typespec()) + SdaiSurface_of_revolution; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiSurface_of_revolution::get_os_typespec()) +// SdaiSurface_of_revolution; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiSurface_of_revolution; +} +#endif + +#ifdef __O3DB__ +void +SdaiSurface_of_revolution::oodb_reInit () +{ eDesc = config_control_designe_surface_of_revolution; + attributes [2].aDesc = a_283axis_position; +} +#endif + +SdaiSurface_of_revolution::SdaiSurface_of_revolution (SCLP23(Application_instance) *se, int *addAttrs) : SdaiSwept_surface(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -24050,30 +44612,44 @@ SdaiSurface_of_revolution::SdaiSurface_of_revolution (STEPentity *se ) : SdaiSwe eDesc = config_control_designe_surface_of_revolution; - STEPattribute * a = new STEPattribute (*a_283axis_position, (STEPentityH *) &_axis_position); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_283axis_position, (SCLP23(Application_instance_ptr) *) &_axis_position); +#else + STEPattribute *a = new STEPattribute(*a_283axis_position, (SCLP23(Application_instance_ptr) *) &_axis_position); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); + MakeDerived ("axis_line"); } -SdaiAxis1_placementH -SdaiSurface_of_revolution::Axis_position() const - { return (SdaiAxis1_placementH) _axis_position; } +const SdaiAxis1_placement_ptr +SdaiSurface_of_revolution::axis_position_() const +{ + return (SdaiAxis1_placement_ptr) _axis_position; +} void -SdaiSurface_of_revolution::Axis_position (SdaiAxis1_placementH x) - { _axis_position = x; } +SdaiSurface_of_revolution::axis_position_ (const SdaiAxis1_placement_ptr x) + +{ + _axis_position = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY surface_of_revolution +///////// END_ENTITY surface_of_revolution -///////// ENTITY advanced_brep_shape_representation +///////// ENTITY advanced_brep_shape_representation EntityDescriptor *config_control_designe_advanced_brep_shape_representation =0; SdaiAdvanced_brep_shape_representation::SdaiAdvanced_brep_shape_representation( ) @@ -24086,9 +44662,61 @@ SdaiAdvanced_brep_shape_representation::SdaiAdvanced_brep_shape_representation( eDesc = config_control_designe_advanced_brep_shape_representation; } SdaiAdvanced_brep_shape_representation::SdaiAdvanced_brep_shape_representation (SdaiAdvanced_brep_shape_representation& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiAdvanced_brep_shape_representation::~SdaiAdvanced_brep_shape_representation () { } -SdaiAdvanced_brep_shape_representation::SdaiAdvanced_brep_shape_representation (STEPentity *se ) : SdaiShape_representation(se) + +#ifdef __OSTORE__ + +void +SdaiAdvanced_brep_shape_representation::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAdvanced_brep_shape_representation: virtual access function." << G4endl; + SdaiAdvanced_brep_shape_representation_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiAdvanced_brep_shape_representation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAdvanced_brep_shape_representation: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiAdvanced_brep_shape_representation *ent = (SdaiAdvanced_brep_shape_representation *)sent; +// SdaiAdvanced_brep_shape_representation *ent = (SdaiAdvanced_brep_shape_representation *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_advanced_brep_shape_representation; +} + +SCLP23(Application_instance_ptr) +create_SdaiAdvanced_brep_shape_representation(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiAdvanced_brep_shape_representation::get_os_typespec()) + SdaiAdvanced_brep_shape_representation; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiAdvanced_brep_shape_representation::get_os_typespec()) +// SdaiAdvanced_brep_shape_representation; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiAdvanced_brep_shape_representation; +} +#endif + +#ifdef __O3DB__ +void +SdaiAdvanced_brep_shape_representation::oodb_reInit () +{ eDesc = config_control_designe_advanced_brep_shape_representation; +} +#endif + +SdaiAdvanced_brep_shape_representation::SdaiAdvanced_brep_shape_representation (SCLP23(Application_instance) *se, int *addAttrs) : SdaiShape_representation(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -24102,10 +44730,10 @@ SdaiAdvanced_brep_shape_representation::SdaiAdvanced_brep_shape_representation ( /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY advanced_brep_shape_representation +///////// END_ENTITY advanced_brep_shape_representation -///////// ENTITY edge_curve +///////// ENTITY edge_curve EntityDescriptor *config_control_designe_edge_curve =0; AttrDescriptor *a_285edge_geometry =0; @@ -24117,22 +44745,107 @@ SdaiEdge_curve::SdaiEdge_curve( ) /* Ignore the first parent since it is */ /* part of the main inheritance hierarchy */ /* parent: SdaiGeometric_representation_item */ + HeadEntity(this); +#if 0 + /* Optionally use the following to replace the line following + the endif. Use this to turn off adding attributes in + diamond shaped hierarchies for each additional parent at this + level. You currently must hand edit this for it to work. */ + int attrFlags[3]; // e.g. + attrFlags[0] = 1; // add parents attrs + attrFlags[1] = 1; // add parent of parents attrs + attrFlags[2] = 0; // do not add parent of parent of parents attrs + // In *imaginary* hierarchy turn off attrFlags[2] since it + // would be the parent that has more than one path to it. + AppendMultInstance(new SdaiGeometric_representation_item(this, attrFlags)); +#endif AppendMultInstance(new SdaiGeometric_representation_item(this)); eDesc = config_control_designe_edge_curve; - STEPattribute * a = new STEPattribute (*a_285edge_geometry, (STEPentityH *) &_edge_geometry); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_285edge_geometry, (SCLP23(Application_instance_ptr) *) &_edge_geometry); +#else + STEPattribute *a = new STEPattribute(*a_285edge_geometry, (SCLP23(Application_instance_ptr) *) &_edge_geometry); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_286same_sense, &_same_sense); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_286same_sense, &_same_sense); +#else + a = new STEPattribute(*a_286same_sense, &_same_sense); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiEdge_curve::SdaiEdge_curve (SdaiEdge_curve& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiEdge_curve::~SdaiEdge_curve () { } -SdaiEdge_curve::SdaiEdge_curve (STEPentity *se ) : SdaiEdge(se) + +#ifdef __OSTORE__ + +void +SdaiEdge_curve::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiEdge_curve: virtual access function." << G4endl; + SdaiEdge_curve_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiEdge_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiEdge_curve: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiEdge_curve *ent = (SdaiEdge_curve *)sent; +// SdaiEdge_curve *ent = (SdaiEdge_curve *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_edge_curve; + ent->attributes[4].aDesc = a_285edge_geometry; + if(ent->_edge_geometry == 0) + ent->_edge_geometry = S_ENTITY_NULL; + ent->attributes[5].aDesc = a_286same_sense; +} + +SCLP23(Application_instance_ptr) +create_SdaiEdge_curve(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiEdge_curve::get_os_typespec()) + SdaiEdge_curve; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiEdge_curve::get_os_typespec()) +// SdaiEdge_curve; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiEdge_curve; +} +#endif + +#ifdef __O3DB__ +void +SdaiEdge_curve::oodb_reInit () +{ eDesc = config_control_designe_edge_curve; + attributes [4].aDesc = a_285edge_geometry; + attributes [5].aDesc = a_286same_sense; +} +#endif + +SdaiEdge_curve::SdaiEdge_curve (SCLP23(Application_instance) *se, int *addAttrs) : SdaiEdge(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -24141,44 +44854,82 @@ SdaiEdge_curve::SdaiEdge_curve (STEPentity *se ) : SdaiEdge(se) /* Ignore the first parent since it is */ /* part of the main inheritance hierarchy */ /* parent: SdaiGeometric_representation_item */ - se->AppendMultInstance(new SdaiGeometric_representation_item(se)); +#if 0 + /* Optionally use the following to replace the line following + the endif. Use this to turn off adding attributes in + diamond shaped hierarchies for each additional parent at this + level. You currently must hand edit this for it to work. */ + int attrFlags[3]; // e.g. + attrFlags[0] = 1; // add parents attrs + attrFlags[1] = 1; // add parent of parents attrs + attrFlags[2] = 0; // do not add parent of parent of parents attrs + // In *imaginary* hierarchy turn off attrFlags[2] since it + // would be the parent that has more than one path to it. + se->AppendMultInstance(new SdaiGeometric_representation_item(se, attrFlags)); +#endif + se->AppendMultInstance(new SdaiGeometric_representation_item(se, 0)); eDesc = config_control_designe_edge_curve; - STEPattribute * a = new STEPattribute (*a_285edge_geometry, (STEPentityH *) &_edge_geometry); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_285edge_geometry, (SCLP23(Application_instance_ptr) *) &_edge_geometry); +#else + STEPattribute *a = new STEPattribute(*a_285edge_geometry, (SCLP23(Application_instance_ptr) *) &_edge_geometry); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_286same_sense, &_same_sense); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_286same_sense, &_same_sense); +#else + a = new STEPattribute(*a_286same_sense, &_same_sense); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -SdaiCurveH -SdaiEdge_curve::Edge_geometry() const - { return (SdaiCurveH) _edge_geometry; } +const SdaiCurve_ptr +SdaiEdge_curve::edge_geometry_() const +{ + return (SdaiCurve_ptr) _edge_geometry; +} void -SdaiEdge_curve::Edge_geometry (SdaiCurveH x) - { _edge_geometry = x; } +SdaiEdge_curve::edge_geometry_ (const SdaiCurve_ptr x) -const BOOLEAN -SdaiEdge_curve::Same_sense() const - { return (LOGICAL) _same_sense; } +{ + _edge_geometry = x; +} + +const SCLBOOL(Bool) +SdaiEdge_curve::same_sense_() const +{ + return (SCLBOOL(Bool)) _same_sense; +} void -SdaiEdge_curve::Same_sense (BOOLEAN x) - { _same_sense.put (x); } +SdaiEdge_curve::same_sense_ (const SCLBOOL(Bool) x) + +{ + _same_sense.put (x); +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ @@ -24186,10 +44937,10 @@ SdaiEdge_curve::Same_sense (BOOLEAN x) #endif -///////// END_ENTITY edge_curve +///////// END_ENTITY edge_curve -///////// ENTITY point_replica +///////// ENTITY point_replica EntityDescriptor *config_control_designe_point_replica =0; AttrDescriptor *a_287parent_pt =0; @@ -24203,18 +44954,91 @@ SdaiPoint_replica::SdaiPoint_replica( ) eDesc = config_control_designe_point_replica; - STEPattribute * a = new STEPattribute (*a_287parent_pt, (STEPentityH *) &_parent_pt); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_287parent_pt, (SCLP23(Application_instance_ptr) *) &_parent_pt); +#else + STEPattribute *a = new STEPattribute(*a_287parent_pt, (SCLP23(Application_instance_ptr) *) &_parent_pt); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_288transformation, (STEPentityH *) &_transformation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_288transformation, (SCLP23(Application_instance_ptr) *) &_transformation); +#else + a = new STEPattribute(*a_288transformation, (SCLP23(Application_instance_ptr) *) &_transformation); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiPoint_replica::SdaiPoint_replica (SdaiPoint_replica& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiPoint_replica::~SdaiPoint_replica () { } -SdaiPoint_replica::SdaiPoint_replica (STEPentity *se ) : SdaiPoint(se) + +#ifdef __OSTORE__ + +void +SdaiPoint_replica::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPoint_replica: virtual access function." << G4endl; + SdaiPoint_replica_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiPoint_replica_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPoint_replica: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiPoint_replica *ent = (SdaiPoint_replica *)sent; +// SdaiPoint_replica *ent = (SdaiPoint_replica *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_point_replica; + ent->attributes[1].aDesc = a_287parent_pt; + if(ent->_parent_pt == 0) + ent->_parent_pt = S_ENTITY_NULL; + ent->attributes[2].aDesc = a_288transformation; + if(ent->_transformation == 0) + ent->_transformation = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiPoint_replica(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiPoint_replica::get_os_typespec()) + SdaiPoint_replica; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiPoint_replica::get_os_typespec()) +// SdaiPoint_replica; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiPoint_replica; +} +#endif + +#ifdef __O3DB__ +void +SdaiPoint_replica::oodb_reInit () +{ eDesc = config_control_designe_point_replica; + attributes [1].aDesc = a_287parent_pt; + attributes [2].aDesc = a_288transformation; +} +#endif + +SdaiPoint_replica::SdaiPoint_replica (SCLP23(Application_instance) *se, int *addAttrs) : SdaiPoint(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -24225,47 +45049,72 @@ SdaiPoint_replica::SdaiPoint_replica (STEPentity *se ) : SdaiPoint(se) eDesc = config_control_designe_point_replica; - STEPattribute * a = new STEPattribute (*a_287parent_pt, (STEPentityH *) &_parent_pt); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_287parent_pt, (SCLP23(Application_instance_ptr) *) &_parent_pt); +#else + STEPattribute *a = new STEPattribute(*a_287parent_pt, (SCLP23(Application_instance_ptr) *) &_parent_pt); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_288transformation, (STEPentityH *) &_transformation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_288transformation, (SCLP23(Application_instance_ptr) *) &_transformation); +#else + a = new STEPattribute(*a_288transformation, (SCLP23(Application_instance_ptr) *) &_transformation); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -SdaiPointH -SdaiPoint_replica::Parent_pt() const - { return (SdaiPointH) _parent_pt; } +const SdaiPoint_ptr +SdaiPoint_replica::parent_pt_() const +{ + return (SdaiPoint_ptr) _parent_pt; +} void -SdaiPoint_replica::Parent_pt (SdaiPointH x) - { _parent_pt = x; } +SdaiPoint_replica::parent_pt_ (const SdaiPoint_ptr x) -SdaiCartesian_transformation_operatorH -SdaiPoint_replica::Transformation() const - { return (SdaiCartesian_transformation_operatorH) _transformation; } +{ + _parent_pt = x; +} + +const SdaiCartesian_transformation_operator_ptr +SdaiPoint_replica::transformation_() const +{ + return (SdaiCartesian_transformation_operator_ptr) _transformation; +} void -SdaiPoint_replica::Transformation (SdaiCartesian_transformation_operatorH x) - { _transformation = x; } +SdaiPoint_replica::transformation_ (const SdaiCartesian_transformation_operator_ptr x) + +{ + _transformation = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY point_replica +///////// END_ENTITY point_replica -///////// ENTITY product +///////// ENTITY product EntityDescriptor *config_control_designe_product =0; AttrDescriptor *a_289id =0; @@ -24279,26 +45128,110 @@ SdaiProduct::SdaiProduct( ) eDesc = config_control_designe_product; - STEPattribute * a = new STEPattribute (*a_289id, &_id); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_289id, &_id); +#else + STEPattribute *a = new STEPattribute(*a_289id, &_id); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_290name, &_name); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_290name, &_name); +#else + a = new STEPattribute(*a_290name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_291description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_291description, &_description); +#else + a = new STEPattribute(*a_291description, &_description); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_292frame_of_reference, &_frame_of_reference); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_292frame_of_reference, &_frame_of_reference); +#else + a = new STEPattribute(*a_292frame_of_reference, &_frame_of_reference); +#endif a -> set_null (); attributes.push (a); } SdaiProduct::SdaiProduct (SdaiProduct& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiProduct::~SdaiProduct () { } -SdaiProduct::SdaiProduct( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiProduct::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct: virtual access function." << G4endl; + SdaiProduct_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiProduct_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiProduct *ent = (SdaiProduct *)sent; +// SdaiProduct *ent = (SdaiProduct *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_product; + ent->attributes[0].aDesc = a_289id; + ent->attributes[1].aDesc = a_290name; + ent->attributes[2].aDesc = a_291description; + ent->attributes[3].aDesc = a_292frame_of_reference; +} + +SCLP23(Application_instance_ptr) +create_SdaiProduct(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiProduct::get_os_typespec()) + SdaiProduct; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiProduct::get_os_typespec()) +// SdaiProduct; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiProduct; +} +#endif + +#ifdef __O3DB__ +void +SdaiProduct::oodb_reInit () +{ eDesc = config_control_designe_product; + attributes [0].aDesc = a_289id; + attributes [1].aDesc = a_290name; + attributes [2].aDesc = a_291description; + attributes [3].aDesc = a_292frame_of_reference; +} +#endif + +SdaiProduct::SdaiProduct( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -24307,79 +45240,125 @@ SdaiProduct::SdaiProduct( STEPentity *se ) eDesc = config_control_designe_product; - STEPattribute * a = new STEPattribute (*a_289id, &_id); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_289id, &_id); +#else + STEPattribute *a = new STEPattribute(*a_289id, &_id); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_290name, &_name); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_290name, &_name); +#else + a = new STEPattribute(*a_290name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_291description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_291description, &_description); +#else + a = new STEPattribute(*a_291description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_292frame_of_reference, &_frame_of_reference); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_292frame_of_reference, &_frame_of_reference); +#else + a = new STEPattribute(*a_292frame_of_reference, &_frame_of_reference); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiIdentifier -SdaiProduct::Id() const - { return (const SdaiIdentifier) _id; } +SdaiProduct::id_() const +{ + return (SdaiIdentifier) _id; +} void -SdaiProduct::Id (const char * x) - { _id = x; } +SdaiProduct::id_ (const SdaiIdentifier x) + +{ + _id = x; +} const SdaiLabel -SdaiProduct::Name() const - { return (const SdaiLabel) _name; } +SdaiProduct::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiProduct::Name (const char * x) - { _name = x; } +SdaiProduct::name_ (const SdaiLabel x) + +{ + _name = x; +} const SdaiText -SdaiProduct::Description() const - { return (const SdaiText) _description; } +SdaiProduct::description_() const +{ + return (SdaiText) _description; +} void -SdaiProduct::Description (const char * x) - { _description = x; } +SdaiProduct::description_ (const SdaiText x) -const EntityAggregateH -SdaiProduct::Frame_of_reference() const - { return (EntityAggregateH) &_frame_of_reference; } +{ + _description = x; +} + +const EntityAggregate_ptr +SdaiProduct::frame_of_reference_() const +{ + return (EntityAggregate_ptr) &_frame_of_reference; +} void -SdaiProduct::Frame_of_reference (EntityAggregateH x) +SdaiProduct::frame_of_reference_ (const EntityAggregate_ptr x) + { _frame_of_reference.ShallowCopy (*x); } -///////// END_ENTITY product +///////// END_ENTITY product -///////// ENTITY shape_aspect_relationship +///////// ENTITY shape_aspect_relationship EntityDescriptor *config_control_designe_shape_aspect_relationship =0; AttrDescriptor *a_293name =0; @@ -24393,26 +45372,114 @@ SdaiShape_aspect_relationship::SdaiShape_aspect_relationship( ) eDesc = config_control_designe_shape_aspect_relationship; - STEPattribute * a = new STEPattribute (*a_293name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_293name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_293name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_294description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_294description, &_description); +#else + a = new STEPattribute(*a_294description, &_description); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_295relating_shape_aspect, (STEPentityH *) &_relating_shape_aspect); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_295relating_shape_aspect, (SCLP23(Application_instance_ptr) *) &_relating_shape_aspect); +#else + a = new STEPattribute(*a_295relating_shape_aspect, (SCLP23(Application_instance_ptr) *) &_relating_shape_aspect); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_296related_shape_aspect, (STEPentityH *) &_related_shape_aspect); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_296related_shape_aspect, (SCLP23(Application_instance_ptr) *) &_related_shape_aspect); +#else + a = new STEPattribute(*a_296related_shape_aspect, (SCLP23(Application_instance_ptr) *) &_related_shape_aspect); +#endif a -> set_null (); attributes.push (a); } SdaiShape_aspect_relationship::SdaiShape_aspect_relationship (SdaiShape_aspect_relationship& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiShape_aspect_relationship::~SdaiShape_aspect_relationship () { } -SdaiShape_aspect_relationship::SdaiShape_aspect_relationship( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiShape_aspect_relationship::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiShape_aspect_relationship: virtual access function." << G4endl; + SdaiShape_aspect_relationship_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiShape_aspect_relationship_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiShape_aspect_relationship: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiShape_aspect_relationship *ent = (SdaiShape_aspect_relationship *)sent; +// SdaiShape_aspect_relationship *ent = (SdaiShape_aspect_relationship *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_shape_aspect_relationship; + ent->attributes[0].aDesc = a_293name; + ent->attributes[1].aDesc = a_294description; + ent->attributes[2].aDesc = a_295relating_shape_aspect; + if(ent->_relating_shape_aspect == 0) + ent->_relating_shape_aspect = S_ENTITY_NULL; + ent->attributes[3].aDesc = a_296related_shape_aspect; + if(ent->_related_shape_aspect == 0) + ent->_related_shape_aspect = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiShape_aspect_relationship(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiShape_aspect_relationship::get_os_typespec()) + SdaiShape_aspect_relationship; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiShape_aspect_relationship::get_os_typespec()) +// SdaiShape_aspect_relationship; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiShape_aspect_relationship; +} +#endif + +#ifdef __O3DB__ +void +SdaiShape_aspect_relationship::oodb_reInit () +{ eDesc = config_control_designe_shape_aspect_relationship; + attributes [0].aDesc = a_293name; + attributes [1].aDesc = a_294description; + attributes [2].aDesc = a_295relating_shape_aspect; + attributes [3].aDesc = a_296related_shape_aspect; +} +#endif + +SdaiShape_aspect_relationship::SdaiShape_aspect_relationship( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -24421,79 +45488,127 @@ SdaiShape_aspect_relationship::SdaiShape_aspect_relationship( STEPentity *se ) eDesc = config_control_designe_shape_aspect_relationship; - STEPattribute * a = new STEPattribute (*a_293name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_293name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_293name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_294description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_294description, &_description); +#else + a = new STEPattribute(*a_294description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_295relating_shape_aspect, (STEPentityH *) &_relating_shape_aspect); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_295relating_shape_aspect, (SCLP23(Application_instance_ptr) *) &_relating_shape_aspect); +#else + a = new STEPattribute(*a_295relating_shape_aspect, (SCLP23(Application_instance_ptr) *) &_relating_shape_aspect); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_296related_shape_aspect, (STEPentityH *) &_related_shape_aspect); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_296related_shape_aspect, (SCLP23(Application_instance_ptr) *) &_related_shape_aspect); +#else + a = new STEPattribute(*a_296related_shape_aspect, (SCLP23(Application_instance_ptr) *) &_related_shape_aspect); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiShape_aspect_relationship::Name() const - { return (const SdaiLabel) _name; } +SdaiShape_aspect_relationship::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiShape_aspect_relationship::Name (const char * x) - { _name = x; } +SdaiShape_aspect_relationship::name_ (const SdaiLabel x) + +{ + _name = x; +} const SdaiText -SdaiShape_aspect_relationship::Description() const - { return (const SdaiText) _description; } +SdaiShape_aspect_relationship::description_() const +{ + return (SdaiText) _description; +} void -SdaiShape_aspect_relationship::Description (const char * x) - { _description = x; } +SdaiShape_aspect_relationship::description_ (const SdaiText x) -SdaiShape_aspectH -SdaiShape_aspect_relationship::Relating_shape_aspect() const - { return (SdaiShape_aspectH) _relating_shape_aspect; } +{ + _description = x; +} + +const SdaiShape_aspect_ptr +SdaiShape_aspect_relationship::relating_shape_aspect_() const +{ + return (SdaiShape_aspect_ptr) _relating_shape_aspect; +} void -SdaiShape_aspect_relationship::Relating_shape_aspect (SdaiShape_aspectH x) - { _relating_shape_aspect = x; } +SdaiShape_aspect_relationship::relating_shape_aspect_ (const SdaiShape_aspect_ptr x) -SdaiShape_aspectH -SdaiShape_aspect_relationship::Related_shape_aspect() const - { return (SdaiShape_aspectH) _related_shape_aspect; } +{ + _relating_shape_aspect = x; +} + +const SdaiShape_aspect_ptr +SdaiShape_aspect_relationship::related_shape_aspect_() const +{ + return (SdaiShape_aspect_ptr) _related_shape_aspect; +} void -SdaiShape_aspect_relationship::Related_shape_aspect (SdaiShape_aspectH x) - { _related_shape_aspect = x; } +SdaiShape_aspect_relationship::related_shape_aspect_ (const SdaiShape_aspect_ptr x) -///////// END_ENTITY shape_aspect_relationship +{ + _related_shape_aspect = x; +} + +///////// END_ENTITY shape_aspect_relationship -///////// ENTITY rectangular_trimmed_surface +///////// ENTITY rectangular_trimmed_surface EntityDescriptor *config_control_designe_rectangular_trimmed_surface =0; AttrDescriptor *a_297basis_surface =0; @@ -24512,38 +45627,149 @@ SdaiRectangular_trimmed_surface::SdaiRectangular_trimmed_surface( ) eDesc = config_control_designe_rectangular_trimmed_surface; - STEPattribute * a = new STEPattribute (*a_297basis_surface, (STEPentityH *) &_basis_surface); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_297basis_surface, (SCLP23(Application_instance_ptr) *) &_basis_surface); +#else + STEPattribute *a = new STEPattribute(*a_297basis_surface, (SCLP23(Application_instance_ptr) *) &_basis_surface); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_298u1, &_u1); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_298u1, &_u1); +#else + a = new STEPattribute(*a_298u1, &_u1); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_299u2, &_u2); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_299u2, &_u2); +#else + a = new STEPattribute(*a_299u2, &_u2); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_300v1, &_v1); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_300v1, &_v1); +#else + a = new STEPattribute(*a_300v1, &_v1); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_301v2, &_v2); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_301v2, &_v2); +#else + a = new STEPattribute(*a_301v2, &_v2); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_302usense, &_usense); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_302usense, &_usense); +#else + a = new STEPattribute(*a_302usense, &_usense); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_303vsense, &_vsense); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_303vsense, &_vsense); +#else + a = new STEPattribute(*a_303vsense, &_vsense); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiRectangular_trimmed_surface::SdaiRectangular_trimmed_surface (SdaiRectangular_trimmed_surface& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiRectangular_trimmed_surface::~SdaiRectangular_trimmed_surface () { } -SdaiRectangular_trimmed_surface::SdaiRectangular_trimmed_surface (STEPentity *se ) : SdaiBounded_surface(se) + +#ifdef __OSTORE__ + +void +SdaiRectangular_trimmed_surface::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiRectangular_trimmed_surface: virtual access function." << G4endl; + SdaiRectangular_trimmed_surface_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiRectangular_trimmed_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiRectangular_trimmed_surface: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiRectangular_trimmed_surface *ent = (SdaiRectangular_trimmed_surface *)sent; +// SdaiRectangular_trimmed_surface *ent = (SdaiRectangular_trimmed_surface *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_rectangular_trimmed_surface; + ent->attributes[1].aDesc = a_297basis_surface; + if(ent->_basis_surface == 0) + ent->_basis_surface = S_ENTITY_NULL; + ent->attributes[2].aDesc = a_298u1; + ent->attributes[3].aDesc = a_299u2; + ent->attributes[4].aDesc = a_300v1; + ent->attributes[5].aDesc = a_301v2; + ent->attributes[6].aDesc = a_302usense; + ent->attributes[7].aDesc = a_303vsense; +} + +SCLP23(Application_instance_ptr) +create_SdaiRectangular_trimmed_surface(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiRectangular_trimmed_surface::get_os_typespec()) + SdaiRectangular_trimmed_surface; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiRectangular_trimmed_surface::get_os_typespec()) +// SdaiRectangular_trimmed_surface; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiRectangular_trimmed_surface; +} +#endif + +#ifdef __O3DB__ +void +SdaiRectangular_trimmed_surface::oodb_reInit () +{ eDesc = config_control_designe_rectangular_trimmed_surface; + attributes [1].aDesc = a_297basis_surface; + attributes [2].aDesc = a_298u1; + attributes [3].aDesc = a_299u2; + attributes [4].aDesc = a_300v1; + attributes [5].aDesc = a_301v2; + attributes [6].aDesc = a_302usense; + attributes [7].aDesc = a_303vsense; +} +#endif + +SdaiRectangular_trimmed_surface::SdaiRectangular_trimmed_surface (SCLP23(Application_instance) *se, int *addAttrs) : SdaiBounded_surface(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -24554,132 +45780,217 @@ SdaiRectangular_trimmed_surface::SdaiRectangular_trimmed_surface (STEPentity *se eDesc = config_control_designe_rectangular_trimmed_surface; - STEPattribute * a = new STEPattribute (*a_297basis_surface, (STEPentityH *) &_basis_surface); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_297basis_surface, (SCLP23(Application_instance_ptr) *) &_basis_surface); +#else + STEPattribute *a = new STEPattribute(*a_297basis_surface, (SCLP23(Application_instance_ptr) *) &_basis_surface); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_298u1, &_u1); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_298u1, &_u1); +#else + a = new STEPattribute(*a_298u1, &_u1); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_299u2, &_u2); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_299u2, &_u2); +#else + a = new STEPattribute(*a_299u2, &_u2); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_300v1, &_v1); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_300v1, &_v1); +#else + a = new STEPattribute(*a_300v1, &_v1); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_301v2, &_v2); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_301v2, &_v2); +#else + a = new STEPattribute(*a_301v2, &_v2); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_302usense, &_usense); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_302usense, &_usense); +#else + a = new STEPattribute(*a_302usense, &_usense); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_303vsense, &_vsense); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_303vsense, &_vsense); +#else + a = new STEPattribute(*a_303vsense, &_vsense); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -SdaiSurfaceH -SdaiRectangular_trimmed_surface::Basis_surface() const - { return (SdaiSurfaceH) _basis_surface; } +const SdaiSurface_ptr +SdaiRectangular_trimmed_surface::basis_surface_() const +{ + return (SdaiSurface_ptr) _basis_surface; +} void -SdaiRectangular_trimmed_surface::Basis_surface (SdaiSurfaceH x) - { _basis_surface = x; } +SdaiRectangular_trimmed_surface::basis_surface_ (const SdaiSurface_ptr x) + +{ + _basis_surface = x; +} const SdaiParameter_value -SdaiRectangular_trimmed_surface::U1() const - { return (const SdaiParameter_value) _u1; } +SdaiRectangular_trimmed_surface::u1_() const +{ + return (SdaiParameter_value) _u1; +} void -SdaiRectangular_trimmed_surface::U1 (SdaiParameter_value x) - { _u1 = x; } +SdaiRectangular_trimmed_surface::u1_ (const SdaiParameter_value x) + +{ + _u1 = x; +} const SdaiParameter_value -SdaiRectangular_trimmed_surface::U2() const - { return (const SdaiParameter_value) _u2; } +SdaiRectangular_trimmed_surface::u2_() const +{ + return (SdaiParameter_value) _u2; +} void -SdaiRectangular_trimmed_surface::U2 (SdaiParameter_value x) - { _u2 = x; } +SdaiRectangular_trimmed_surface::u2_ (const SdaiParameter_value x) + +{ + _u2 = x; +} const SdaiParameter_value -SdaiRectangular_trimmed_surface::V1() const - { return (const SdaiParameter_value) _v1; } +SdaiRectangular_trimmed_surface::v1_() const +{ + return (SdaiParameter_value) _v1; +} void -SdaiRectangular_trimmed_surface::V1 (SdaiParameter_value x) - { _v1 = x; } +SdaiRectangular_trimmed_surface::v1_ (const SdaiParameter_value x) + +{ + _v1 = x; +} const SdaiParameter_value -SdaiRectangular_trimmed_surface::V2() const - { return (const SdaiParameter_value) _v2; } +SdaiRectangular_trimmed_surface::v2_() const +{ + return (SdaiParameter_value) _v2; +} void -SdaiRectangular_trimmed_surface::V2 (SdaiParameter_value x) - { _v2 = x; } +SdaiRectangular_trimmed_surface::v2_ (const SdaiParameter_value x) -const BOOLEAN -SdaiRectangular_trimmed_surface::Usense() const - { return (LOGICAL) _usense; } +{ + _v2 = x; +} + +const SCLBOOL(Bool) +SdaiRectangular_trimmed_surface::usense_() const +{ + return (SCLBOOL(Bool)) _usense; +} void -SdaiRectangular_trimmed_surface::Usense (BOOLEAN x) - { _usense.put (x); } +SdaiRectangular_trimmed_surface::usense_ (const SCLBOOL(Bool) x) -const BOOLEAN -SdaiRectangular_trimmed_surface::Vsense() const - { return (LOGICAL) _vsense; } +{ + _usense.put (x); +} + +const SCLBOOL(Bool) +SdaiRectangular_trimmed_surface::vsense_() const +{ + return (SCLBOOL(Bool)) _vsense; +} void -SdaiRectangular_trimmed_surface::Vsense (BOOLEAN x) - { _vsense.put (x); } +SdaiRectangular_trimmed_surface::vsense_ (const SCLBOOL(Bool) x) + +{ + _vsense.put (x); +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY rectangular_trimmed_surface +///////// END_ENTITY rectangular_trimmed_surface -///////// ENTITY plane +///////// ENTITY plane EntityDescriptor *config_control_designe_plane =0; SdaiPlane::SdaiPlane( ) @@ -24690,11 +46001,64 @@ SdaiPlane::SdaiPlane( ) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_plane; + MakeDerived ("dim"); } SdaiPlane::SdaiPlane (SdaiPlane& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiPlane::~SdaiPlane () { } -SdaiPlane::SdaiPlane (STEPentity *se ) : SdaiElementary_surface(se) + +#ifdef __OSTORE__ + +void +SdaiPlane::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPlane: virtual access function." << G4endl; + SdaiPlane_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiPlane_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPlane: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiPlane *ent = (SdaiPlane *)sent; +// SdaiPlane *ent = (SdaiPlane *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_plane; +} + +SCLP23(Application_instance_ptr) +create_SdaiPlane(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiPlane::get_os_typespec()) + SdaiPlane; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiPlane::get_os_typespec()) +// SdaiPlane; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiPlane; +} +#endif + +#ifdef __O3DB__ +void +SdaiPlane::oodb_reInit () +{ eDesc = config_control_designe_plane; +} +#endif + +SdaiPlane::SdaiPlane (SCLP23(Application_instance) *se, int *addAttrs) : SdaiElementary_surface(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -24704,14 +46068,15 @@ SdaiPlane::SdaiPlane (STEPentity *se ) : SdaiElementary_surface(se) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_plane; + MakeDerived ("dim"); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY plane +///////// END_ENTITY plane -///////// ENTITY action_assignment +///////// ENTITY action_assignment EntityDescriptor *config_control_designe_action_assignment =0; AttrDescriptor *a_304assigned_action =0; @@ -24722,14 +46087,76 @@ SdaiAction_assignment::SdaiAction_assignment( ) eDesc = config_control_designe_action_assignment; - STEPattribute * a = new STEPattribute (*a_304assigned_action, (STEPentityH *) &_assigned_action); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_304assigned_action, (SCLP23(Application_instance_ptr) *) &_assigned_action); +#else + STEPattribute *a = new STEPattribute(*a_304assigned_action, (SCLP23(Application_instance_ptr) *) &_assigned_action); +#endif a -> set_null (); attributes.push (a); } SdaiAction_assignment::SdaiAction_assignment (SdaiAction_assignment& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiAction_assignment::~SdaiAction_assignment () { } -SdaiAction_assignment::SdaiAction_assignment( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiAction_assignment::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAction_assignment: virtual access function." << G4endl; + SdaiAction_assignment_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiAction_assignment_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAction_assignment: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiAction_assignment *ent = (SdaiAction_assignment *)sent; +// SdaiAction_assignment *ent = (SdaiAction_assignment *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_action_assignment; + ent->attributes[0].aDesc = a_304assigned_action; + if(ent->_assigned_action == 0) + ent->_assigned_action = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiAction_assignment(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiAction_assignment::get_os_typespec()) + SdaiAction_assignment; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiAction_assignment::get_os_typespec()) +// SdaiAction_assignment; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiAction_assignment; +} +#endif + +#ifdef __O3DB__ +void +SdaiAction_assignment::oodb_reInit () +{ eDesc = config_control_designe_action_assignment; + attributes [0].aDesc = a_304assigned_action; +} +#endif + +SdaiAction_assignment::SdaiAction_assignment( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -24738,28 +46165,40 @@ SdaiAction_assignment::SdaiAction_assignment( STEPentity *se ) eDesc = config_control_designe_action_assignment; - STEPattribute * a = new STEPattribute (*a_304assigned_action, (STEPentityH *) &_assigned_action); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_304assigned_action, (SCLP23(Application_instance_ptr) *) &_assigned_action); +#else + STEPattribute *a = new STEPattribute(*a_304assigned_action, (SCLP23(Application_instance_ptr) *) &_assigned_action); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiActionH -SdaiAction_assignment::Assigned_action() const - { return (SdaiActionH) _assigned_action; } +const SdaiAction_ptr +SdaiAction_assignment::assigned_action_() const +{ + return (SdaiAction_ptr) _assigned_action; +} void -SdaiAction_assignment::Assigned_action (SdaiActionH x) - { _assigned_action = x; } +SdaiAction_assignment::assigned_action_ (const SdaiAction_ptr x) -///////// END_ENTITY action_assignment +{ + _assigned_action = x; +} + +///////// END_ENTITY action_assignment -///////// ENTITY change +///////// ENTITY change EntityDescriptor *config_control_designe_change =0; AttrDescriptor *a_305items =0; @@ -24772,14 +46211,74 @@ SdaiChange::SdaiChange( ) eDesc = config_control_designe_change; - STEPattribute * a = new STEPattribute (*a_305items, &_items); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_305items, &_items); +#else + STEPattribute *a = new STEPattribute(*a_305items, &_items); +#endif a -> set_null (); attributes.push (a); } SdaiChange::SdaiChange (SdaiChange& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiChange::~SdaiChange () { } -SdaiChange::SdaiChange (STEPentity *se ) : SdaiAction_assignment(se) + +#ifdef __OSTORE__ + +void +SdaiChange::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiChange: virtual access function." << G4endl; + SdaiChange_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiChange_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiChange: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiChange *ent = (SdaiChange *)sent; +// SdaiChange *ent = (SdaiChange *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_change; + ent->attributes[1].aDesc = a_305items; +} + +SCLP23(Application_instance_ptr) +create_SdaiChange(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiChange::get_os_typespec()) + SdaiChange; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiChange::get_os_typespec()) +// SdaiChange; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiChange; +} +#endif + +#ifdef __O3DB__ +void +SdaiChange::oodb_reInit () +{ eDesc = config_control_designe_change; + attributes [1].aDesc = a_305items; +} +#endif + +SdaiChange::SdaiChange (SCLP23(Application_instance) *se, int *addAttrs) : SdaiAction_assignment(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -24790,30 +46289,40 @@ SdaiChange::SdaiChange (STEPentity *se ) : SdaiAction_assignment(se) eDesc = config_control_designe_change; - STEPattribute * a = new STEPattribute (*a_305items, &_items); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_305items, &_items); +#else + STEPattribute *a = new STEPattribute(*a_305items, &_items); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -const SdaiWork_itemsH -SdaiChange::Items() const - { return (SdaiWork_itemsH) &_items; } +const SdaiWork_items_ptr +SdaiChange::items_() const +{ + return (SdaiWork_items_ptr) &_items; +} void -SdaiChange::Items (SdaiWork_itemsH x) +SdaiChange::items_ (const SdaiWork_items_ptr x) + { _items.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY change +///////// END_ENTITY change -///////// ENTITY circle +///////// ENTITY circle EntityDescriptor *config_control_designe_circle =0; AttrDescriptor *a_306radius =0; @@ -24826,14 +46335,75 @@ SdaiCircle::SdaiCircle( ) eDesc = config_control_designe_circle; - STEPattribute * a = new STEPattribute (*a_306radius, &_radius); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_306radius, &_radius); +#else + STEPattribute *a = new STEPattribute(*a_306radius, &_radius); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiCircle::SdaiCircle (SdaiCircle& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiCircle::~SdaiCircle () { } -SdaiCircle::SdaiCircle (STEPentity *se ) : SdaiConic(se) + +#ifdef __OSTORE__ + +void +SdaiCircle::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCircle: virtual access function." << G4endl; + SdaiCircle_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiCircle_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCircle: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiCircle *ent = (SdaiCircle *)sent; +// SdaiCircle *ent = (SdaiCircle *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_circle; + ent->attributes[2].aDesc = a_306radius; +} + +SCLP23(Application_instance_ptr) +create_SdaiCircle(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiCircle::get_os_typespec()) + SdaiCircle; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiCircle::get_os_typespec()) +// SdaiCircle; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiCircle; +} +#endif + +#ifdef __O3DB__ +void +SdaiCircle::oodb_reInit () +{ eDesc = config_control_designe_circle; + attributes [2].aDesc = a_306radius; +} +#endif + +SdaiCircle::SdaiCircle (SCLP23(Application_instance) *se, int *addAttrs) : SdaiConic(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -24844,30 +46414,43 @@ SdaiCircle::SdaiCircle (STEPentity *se ) : SdaiConic(se) eDesc = config_control_designe_circle; - STEPattribute * a = new STEPattribute (*a_306radius, &_radius); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_306radius, &_radius); +#else + STEPattribute *a = new STEPattribute(*a_306radius, &_radius); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } const SdaiPositive_length_measure -SdaiCircle::Radius() const - { return (const SdaiPositive_length_measure) _radius; } +SdaiCircle::radius_() const +{ + return (SdaiPositive_length_measure) _radius; +} void -SdaiCircle::Radius (SdaiPositive_length_measure x) - { _radius = x; } +SdaiCircle::radius_ (const SdaiPositive_length_measure x) + +{ + _radius = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY circle +///////// END_ENTITY circle -///////// ENTITY line +///////// ENTITY line EntityDescriptor *config_control_designe_line =0; AttrDescriptor *a_307pnt =0; @@ -24881,18 +46464,91 @@ SdaiLine::SdaiLine( ) eDesc = config_control_designe_line; - STEPattribute * a = new STEPattribute (*a_307pnt, (STEPentityH *) &_pnt); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_307pnt, (SCLP23(Application_instance_ptr) *) &_pnt); +#else + STEPattribute *a = new STEPattribute(*a_307pnt, (SCLP23(Application_instance_ptr) *) &_pnt); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_308dir, (STEPentityH *) &_dir); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_308dir, (SCLP23(Application_instance_ptr) *) &_dir); +#else + a = new STEPattribute(*a_308dir, (SCLP23(Application_instance_ptr) *) &_dir); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiLine::SdaiLine (SdaiLine& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiLine::~SdaiLine () { } -SdaiLine::SdaiLine (STEPentity *se ) : SdaiCurve(se) + +#ifdef __OSTORE__ + +void +SdaiLine::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiLine: virtual access function." << G4endl; + SdaiLine_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiLine_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiLine: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiLine *ent = (SdaiLine *)sent; +// SdaiLine *ent = (SdaiLine *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_line; + ent->attributes[1].aDesc = a_307pnt; + if(ent->_pnt == 0) + ent->_pnt = S_ENTITY_NULL; + ent->attributes[2].aDesc = a_308dir; + if(ent->_dir == 0) + ent->_dir = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiLine(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiLine::get_os_typespec()) + SdaiLine; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiLine::get_os_typespec()) +// SdaiLine; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiLine; +} +#endif + +#ifdef __O3DB__ +void +SdaiLine::oodb_reInit () +{ eDesc = config_control_designe_line; + attributes [1].aDesc = a_307pnt; + attributes [2].aDesc = a_308dir; +} +#endif + +SdaiLine::SdaiLine (SCLP23(Application_instance) *se, int *addAttrs) : SdaiCurve(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -24903,47 +46559,72 @@ SdaiLine::SdaiLine (STEPentity *se ) : SdaiCurve(se) eDesc = config_control_designe_line; - STEPattribute * a = new STEPattribute (*a_307pnt, (STEPentityH *) &_pnt); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_307pnt, (SCLP23(Application_instance_ptr) *) &_pnt); +#else + STEPattribute *a = new STEPattribute(*a_307pnt, (SCLP23(Application_instance_ptr) *) &_pnt); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_308dir, (STEPentityH *) &_dir); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_308dir, (SCLP23(Application_instance_ptr) *) &_dir); +#else + a = new STEPattribute(*a_308dir, (SCLP23(Application_instance_ptr) *) &_dir); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -SdaiCartesian_pointH -SdaiLine::Pnt() const - { return (SdaiCartesian_pointH) _pnt; } +const SdaiCartesian_point_ptr +SdaiLine::pnt_() const +{ + return (SdaiCartesian_point_ptr) _pnt; +} void -SdaiLine::Pnt (SdaiCartesian_pointH x) - { _pnt = x; } +SdaiLine::pnt_ (const SdaiCartesian_point_ptr x) -SdaiVectorH -SdaiLine::Dir() const - { return (SdaiVectorH) _dir; } +{ + _pnt = x; +} + +const SdaiVector_ptr +SdaiLine::dir_() const +{ + return (SdaiVector_ptr) _dir; +} void -SdaiLine::Dir (SdaiVectorH x) - { _dir = x; } +SdaiLine::dir_ (const SdaiVector_ptr x) + +{ + _dir = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY line +///////// END_ENTITY line -///////// ENTITY property_definition_representation +///////// ENTITY property_definition_representation EntityDescriptor *config_control_designe_property_definition_representation =0; AttrDescriptor *a_309definition =0; @@ -24955,18 +46636,90 @@ SdaiProperty_definition_representation::SdaiProperty_definition_representation( eDesc = config_control_designe_property_definition_representation; - STEPattribute * a = new STEPattribute (*a_309definition, (STEPentityH *) &_definition); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_309definition, (SCLP23(Application_instance_ptr) *) &_definition); +#else + STEPattribute *a = new STEPattribute(*a_309definition, (SCLP23(Application_instance_ptr) *) &_definition); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_310used_representation, (STEPentityH *) &_used_representation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_310used_representation, (SCLP23(Application_instance_ptr) *) &_used_representation); +#else + a = new STEPattribute(*a_310used_representation, (SCLP23(Application_instance_ptr) *) &_used_representation); +#endif a -> set_null (); attributes.push (a); } SdaiProperty_definition_representation::SdaiProperty_definition_representation (SdaiProperty_definition_representation& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiProperty_definition_representation::~SdaiProperty_definition_representation () { } -SdaiProperty_definition_representation::SdaiProperty_definition_representation( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiProperty_definition_representation::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProperty_definition_representation: virtual access function." << G4endl; + SdaiProperty_definition_representation_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiProperty_definition_representation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProperty_definition_representation: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiProperty_definition_representation *ent = (SdaiProperty_definition_representation *)sent; +// SdaiProperty_definition_representation *ent = (SdaiProperty_definition_representation *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_property_definition_representation; + ent->attributes[0].aDesc = a_309definition; + if(ent->_definition == 0) + ent->_definition = S_ENTITY_NULL; + ent->attributes[1].aDesc = a_310used_representation; + if(ent->_used_representation == 0) + ent->_used_representation = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiProperty_definition_representation(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiProperty_definition_representation::get_os_typespec()) + SdaiProperty_definition_representation; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiProperty_definition_representation::get_os_typespec()) +// SdaiProperty_definition_representation; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiProperty_definition_representation; +} +#endif + +#ifdef __O3DB__ +void +SdaiProperty_definition_representation::oodb_reInit () +{ eDesc = config_control_designe_property_definition_representation; + attributes [0].aDesc = a_309definition; + attributes [1].aDesc = a_310used_representation; +} +#endif + +SdaiProperty_definition_representation::SdaiProperty_definition_representation( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -24975,45 +46728,69 @@ SdaiProperty_definition_representation::SdaiProperty_definition_representation( eDesc = config_control_designe_property_definition_representation; - STEPattribute * a = new STEPattribute (*a_309definition, (STEPentityH *) &_definition); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_309definition, (SCLP23(Application_instance_ptr) *) &_definition); +#else + STEPattribute *a = new STEPattribute(*a_309definition, (SCLP23(Application_instance_ptr) *) &_definition); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_310used_representation, (STEPentityH *) &_used_representation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_310used_representation, (SCLP23(Application_instance_ptr) *) &_used_representation); +#else + a = new STEPattribute(*a_310used_representation, (SCLP23(Application_instance_ptr) *) &_used_representation); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiProperty_definitionH -SdaiProperty_definition_representation::Definition() const - { return (SdaiProperty_definitionH) _definition; } +const SdaiProperty_definition_ptr +SdaiProperty_definition_representation::definition_() const +{ + return (SdaiProperty_definition_ptr) _definition; +} void -SdaiProperty_definition_representation::Definition (SdaiProperty_definitionH x) - { _definition = x; } +SdaiProperty_definition_representation::definition_ (const SdaiProperty_definition_ptr x) -SdaiRepresentationH -SdaiProperty_definition_representation::Used_representation() const - { return (SdaiRepresentationH) _used_representation; } +{ + _definition = x; +} + +const SdaiRepresentation_ptr +SdaiProperty_definition_representation::used_representation_() const +{ + return (SdaiRepresentation_ptr) _used_representation; +} void -SdaiProperty_definition_representation::Used_representation (SdaiRepresentationH x) - { _used_representation = x; } +SdaiProperty_definition_representation::used_representation_ (const SdaiRepresentation_ptr x) -///////// END_ENTITY property_definition_representation +{ + _used_representation = x; +} + +///////// END_ENTITY property_definition_representation -///////// ENTITY geometric_set +///////// ENTITY geometric_set EntityDescriptor *config_control_designe_geometric_set =0; AttrDescriptor *a_311elements =0; @@ -25026,14 +46803,75 @@ SdaiGeometric_set::SdaiGeometric_set( ) eDesc = config_control_designe_geometric_set; - STEPattribute * a = new STEPattribute (*a_311elements, &_elements); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_311elements, &_elements); +#else + STEPattribute *a = new STEPattribute(*a_311elements, &_elements); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiGeometric_set::SdaiGeometric_set (SdaiGeometric_set& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiGeometric_set::~SdaiGeometric_set () { } -SdaiGeometric_set::SdaiGeometric_set (STEPentity *se ) : SdaiGeometric_representation_item(se) + +#ifdef __OSTORE__ + +void +SdaiGeometric_set::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiGeometric_set: virtual access function." << G4endl; + SdaiGeometric_set_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiGeometric_set_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiGeometric_set: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiGeometric_set *ent = (SdaiGeometric_set *)sent; +// SdaiGeometric_set *ent = (SdaiGeometric_set *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_geometric_set; + ent->attributes[1].aDesc = a_311elements; +} + +SCLP23(Application_instance_ptr) +create_SdaiGeometric_set(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiGeometric_set::get_os_typespec()) + SdaiGeometric_set; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiGeometric_set::get_os_typespec()) +// SdaiGeometric_set; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiGeometric_set; +} +#endif + +#ifdef __O3DB__ +void +SdaiGeometric_set::oodb_reInit () +{ eDesc = config_control_designe_geometric_set; + attributes [1].aDesc = a_311elements; +} +#endif + +SdaiGeometric_set::SdaiGeometric_set (SCLP23(Application_instance) *se, int *addAttrs) : SdaiGeometric_representation_item(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -25044,30 +46882,41 @@ SdaiGeometric_set::SdaiGeometric_set (STEPentity *se ) : SdaiGeometric_represent eDesc = config_control_designe_geometric_set; - STEPattribute * a = new STEPattribute (*a_311elements, &_elements); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_311elements, &_elements); +#else + STEPattribute *a = new STEPattribute(*a_311elements, &_elements); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -const SdaiGeometric_set_selectsH -SdaiGeometric_set::Elements() const - { return (SdaiGeometric_set_selectsH) &_elements; } +const SdaiGeometric_set_selects_ptr +SdaiGeometric_set::elements_() const +{ + return (SdaiGeometric_set_selects_ptr) &_elements; +} void -SdaiGeometric_set::Elements (SdaiGeometric_set_selectsH x) +SdaiGeometric_set::elements_ (const SdaiGeometric_set_selects_ptr x) + { _elements.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY geometric_set +///////// END_ENTITY geometric_set -///////// ENTITY geometric_curve_set +///////// ENTITY geometric_curve_set EntityDescriptor *config_control_designe_geometric_curve_set =0; SdaiGeometric_curve_set::SdaiGeometric_curve_set( ) @@ -25078,11 +46927,64 @@ SdaiGeometric_curve_set::SdaiGeometric_curve_set( ) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_geometric_curve_set; + MakeDerived ("dim"); } SdaiGeometric_curve_set::SdaiGeometric_curve_set (SdaiGeometric_curve_set& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiGeometric_curve_set::~SdaiGeometric_curve_set () { } -SdaiGeometric_curve_set::SdaiGeometric_curve_set (STEPentity *se ) : SdaiGeometric_set(se) + +#ifdef __OSTORE__ + +void +SdaiGeometric_curve_set::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiGeometric_curve_set: virtual access function." << G4endl; + SdaiGeometric_curve_set_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiGeometric_curve_set_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiGeometric_curve_set: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiGeometric_curve_set *ent = (SdaiGeometric_curve_set *)sent; +// SdaiGeometric_curve_set *ent = (SdaiGeometric_curve_set *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_geometric_curve_set; +} + +SCLP23(Application_instance_ptr) +create_SdaiGeometric_curve_set(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiGeometric_curve_set::get_os_typespec()) + SdaiGeometric_curve_set; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiGeometric_curve_set::get_os_typespec()) +// SdaiGeometric_curve_set; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiGeometric_curve_set; +} +#endif + +#ifdef __O3DB__ +void +SdaiGeometric_curve_set::oodb_reInit () +{ eDesc = config_control_designe_geometric_curve_set; +} +#endif + +SdaiGeometric_curve_set::SdaiGeometric_curve_set (SCLP23(Application_instance) *se, int *addAttrs) : SdaiGeometric_set(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -25092,14 +46994,15 @@ SdaiGeometric_curve_set::SdaiGeometric_curve_set (STEPentity *se ) : SdaiGeometr /* part of the main inheritance hierarchy */ eDesc = config_control_designe_geometric_curve_set; + MakeDerived ("dim"); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY geometric_curve_set +///////// END_ENTITY geometric_curve_set -///////// ENTITY personal_address +///////// ENTITY personal_address EntityDescriptor *config_control_designe_personal_address =0; AttrDescriptor *a_312people =0; @@ -25113,18 +47016,86 @@ SdaiPersonal_address::SdaiPersonal_address( ) eDesc = config_control_designe_personal_address; - STEPattribute * a = new STEPattribute (*a_312people, &_people); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_312people, &_people); +#else + STEPattribute *a = new STEPattribute(*a_312people, &_people); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_313description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_313description, &_description); +#else + a = new STEPattribute(*a_313description, &_description); +#endif a -> set_null (); attributes.push (a); } SdaiPersonal_address::SdaiPersonal_address (SdaiPersonal_address& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiPersonal_address::~SdaiPersonal_address () { } -SdaiPersonal_address::SdaiPersonal_address (STEPentity *se ) : SdaiAddress(se) + +#ifdef __OSTORE__ + +void +SdaiPersonal_address::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPersonal_address: virtual access function." << G4endl; + SdaiPersonal_address_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiPersonal_address_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPersonal_address: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiPersonal_address *ent = (SdaiPersonal_address *)sent; +// SdaiPersonal_address *ent = (SdaiPersonal_address *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_personal_address; + ent->attributes[12].aDesc = a_312people; + ent->attributes[13].aDesc = a_313description; +} + +SCLP23(Application_instance_ptr) +create_SdaiPersonal_address(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiPersonal_address::get_os_typespec()) + SdaiPersonal_address; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiPersonal_address::get_os_typespec()) +// SdaiPersonal_address; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiPersonal_address; +} +#endif + +#ifdef __O3DB__ +void +SdaiPersonal_address::oodb_reInit () +{ eDesc = config_control_designe_personal_address; + attributes [12].aDesc = a_312people; + attributes [13].aDesc = a_313description; +} +#endif + +SdaiPersonal_address::SdaiPersonal_address (SCLP23(Application_instance) *se, int *addAttrs) : SdaiAddress(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -25135,47 +47106,69 @@ SdaiPersonal_address::SdaiPersonal_address (STEPentity *se ) : SdaiAddress(se) eDesc = config_control_designe_personal_address; - STEPattribute * a = new STEPattribute (*a_312people, &_people); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_312people, &_people); +#else + STEPattribute *a = new STEPattribute(*a_312people, &_people); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_313description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_313description, &_description); +#else + a = new STEPattribute(*a_313description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -const EntityAggregateH -SdaiPersonal_address::People() const - { return (EntityAggregateH) &_people; } +const EntityAggregate_ptr +SdaiPersonal_address::people_() const +{ + return (EntityAggregate_ptr) &_people; +} void -SdaiPersonal_address::People (EntityAggregateH x) +SdaiPersonal_address::people_ (const EntityAggregate_ptr x) + { _people.ShallowCopy (*x); } const SdaiText -SdaiPersonal_address::Description() const - { return (const SdaiText) _description; } +SdaiPersonal_address::description_() const +{ + return (SdaiText) _description; +} void -SdaiPersonal_address::Description (const char * x) - { _description = x; } +SdaiPersonal_address::description_ (const SdaiText x) + +{ + _description = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY personal_address +///////// END_ENTITY personal_address -///////// ENTITY document_relationship +///////// ENTITY document_relationship EntityDescriptor *config_control_designe_document_relationship =0; AttrDescriptor *a_314name =0; @@ -25189,26 +47182,114 @@ SdaiDocument_relationship::SdaiDocument_relationship( ) eDesc = config_control_designe_document_relationship; - STEPattribute * a = new STEPattribute (*a_314name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_314name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_314name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_315description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_315description, &_description); +#else + a = new STEPattribute(*a_315description, &_description); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_316relating_document, (STEPentityH *) &_relating_document); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_316relating_document, (SCLP23(Application_instance_ptr) *) &_relating_document); +#else + a = new STEPattribute(*a_316relating_document, (SCLP23(Application_instance_ptr) *) &_relating_document); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_317related_document, (STEPentityH *) &_related_document); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_317related_document, (SCLP23(Application_instance_ptr) *) &_related_document); +#else + a = new STEPattribute(*a_317related_document, (SCLP23(Application_instance_ptr) *) &_related_document); +#endif a -> set_null (); attributes.push (a); } SdaiDocument_relationship::SdaiDocument_relationship (SdaiDocument_relationship& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiDocument_relationship::~SdaiDocument_relationship () { } -SdaiDocument_relationship::SdaiDocument_relationship( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiDocument_relationship::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDocument_relationship: virtual access function." << G4endl; + SdaiDocument_relationship_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiDocument_relationship_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDocument_relationship: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiDocument_relationship *ent = (SdaiDocument_relationship *)sent; +// SdaiDocument_relationship *ent = (SdaiDocument_relationship *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_document_relationship; + ent->attributes[0].aDesc = a_314name; + ent->attributes[1].aDesc = a_315description; + ent->attributes[2].aDesc = a_316relating_document; + if(ent->_relating_document == 0) + ent->_relating_document = S_ENTITY_NULL; + ent->attributes[3].aDesc = a_317related_document; + if(ent->_related_document == 0) + ent->_related_document = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiDocument_relationship(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiDocument_relationship::get_os_typespec()) + SdaiDocument_relationship; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiDocument_relationship::get_os_typespec()) +// SdaiDocument_relationship; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiDocument_relationship; +} +#endif + +#ifdef __O3DB__ +void +SdaiDocument_relationship::oodb_reInit () +{ eDesc = config_control_designe_document_relationship; + attributes [0].aDesc = a_314name; + attributes [1].aDesc = a_315description; + attributes [2].aDesc = a_316relating_document; + attributes [3].aDesc = a_317related_document; +} +#endif + +SdaiDocument_relationship::SdaiDocument_relationship( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -25217,79 +47298,127 @@ SdaiDocument_relationship::SdaiDocument_relationship( STEPentity *se ) eDesc = config_control_designe_document_relationship; - STEPattribute * a = new STEPattribute (*a_314name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_314name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_314name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_315description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_315description, &_description); +#else + a = new STEPattribute(*a_315description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_316relating_document, (STEPentityH *) &_relating_document); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_316relating_document, (SCLP23(Application_instance_ptr) *) &_relating_document); +#else + a = new STEPattribute(*a_316relating_document, (SCLP23(Application_instance_ptr) *) &_relating_document); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_317related_document, (STEPentityH *) &_related_document); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_317related_document, (SCLP23(Application_instance_ptr) *) &_related_document); +#else + a = new STEPattribute(*a_317related_document, (SCLP23(Application_instance_ptr) *) &_related_document); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiDocument_relationship::Name() const - { return (const SdaiLabel) _name; } +SdaiDocument_relationship::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiDocument_relationship::Name (const char * x) - { _name = x; } +SdaiDocument_relationship::name_ (const SdaiLabel x) + +{ + _name = x; +} const SdaiText -SdaiDocument_relationship::Description() const - { return (const SdaiText) _description; } +SdaiDocument_relationship::description_() const +{ + return (SdaiText) _description; +} void -SdaiDocument_relationship::Description (const char * x) - { _description = x; } +SdaiDocument_relationship::description_ (const SdaiText x) -SdaiDocumentH -SdaiDocument_relationship::Relating_document() const - { return (SdaiDocumentH) _relating_document; } +{ + _description = x; +} + +const SdaiDocument_ptr +SdaiDocument_relationship::relating_document_() const +{ + return (SdaiDocument_ptr) _relating_document; +} void -SdaiDocument_relationship::Relating_document (SdaiDocumentH x) - { _relating_document = x; } +SdaiDocument_relationship::relating_document_ (const SdaiDocument_ptr x) -SdaiDocumentH -SdaiDocument_relationship::Related_document() const - { return (SdaiDocumentH) _related_document; } +{ + _relating_document = x; +} + +const SdaiDocument_ptr +SdaiDocument_relationship::related_document_() const +{ + return (SdaiDocument_ptr) _related_document; +} void -SdaiDocument_relationship::Related_document (SdaiDocumentH x) - { _related_document = x; } +SdaiDocument_relationship::related_document_ (const SdaiDocument_ptr x) -///////// END_ENTITY document_relationship +{ + _related_document = x; +} + +///////// END_ENTITY document_relationship -///////// ENTITY pcurve +///////// ENTITY pcurve EntityDescriptor *config_control_designe_pcurve =0; AttrDescriptor *a_318basis_surface =0; @@ -25303,18 +47432,91 @@ SdaiPcurve::SdaiPcurve( ) eDesc = config_control_designe_pcurve; - STEPattribute * a = new STEPattribute (*a_318basis_surface, (STEPentityH *) &_basis_surface); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_318basis_surface, (SCLP23(Application_instance_ptr) *) &_basis_surface); +#else + STEPattribute *a = new STEPattribute(*a_318basis_surface, (SCLP23(Application_instance_ptr) *) &_basis_surface); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_319reference_to_curve, (STEPentityH *) &_reference_to_curve); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_319reference_to_curve, (SCLP23(Application_instance_ptr) *) &_reference_to_curve); +#else + a = new STEPattribute(*a_319reference_to_curve, (SCLP23(Application_instance_ptr) *) &_reference_to_curve); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiPcurve::SdaiPcurve (SdaiPcurve& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiPcurve::~SdaiPcurve () { } -SdaiPcurve::SdaiPcurve (STEPentity *se ) : SdaiCurve(se) + +#ifdef __OSTORE__ + +void +SdaiPcurve::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPcurve: virtual access function." << G4endl; + SdaiPcurve_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiPcurve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPcurve: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiPcurve *ent = (SdaiPcurve *)sent; +// SdaiPcurve *ent = (SdaiPcurve *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_pcurve; + ent->attributes[1].aDesc = a_318basis_surface; + if(ent->_basis_surface == 0) + ent->_basis_surface = S_ENTITY_NULL; + ent->attributes[2].aDesc = a_319reference_to_curve; + if(ent->_reference_to_curve == 0) + ent->_reference_to_curve = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiPcurve(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiPcurve::get_os_typespec()) + SdaiPcurve; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiPcurve::get_os_typespec()) +// SdaiPcurve; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiPcurve; +} +#endif + +#ifdef __O3DB__ +void +SdaiPcurve::oodb_reInit () +{ eDesc = config_control_designe_pcurve; + attributes [1].aDesc = a_318basis_surface; + attributes [2].aDesc = a_319reference_to_curve; +} +#endif + +SdaiPcurve::SdaiPcurve (SCLP23(Application_instance) *se, int *addAttrs) : SdaiCurve(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -25325,47 +47527,72 @@ SdaiPcurve::SdaiPcurve (STEPentity *se ) : SdaiCurve(se) eDesc = config_control_designe_pcurve; - STEPattribute * a = new STEPattribute (*a_318basis_surface, (STEPentityH *) &_basis_surface); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_318basis_surface, (SCLP23(Application_instance_ptr) *) &_basis_surface); +#else + STEPattribute *a = new STEPattribute(*a_318basis_surface, (SCLP23(Application_instance_ptr) *) &_basis_surface); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_319reference_to_curve, (STEPentityH *) &_reference_to_curve); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_319reference_to_curve, (SCLP23(Application_instance_ptr) *) &_reference_to_curve); +#else + a = new STEPattribute(*a_319reference_to_curve, (SCLP23(Application_instance_ptr) *) &_reference_to_curve); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -SdaiSurfaceH -SdaiPcurve::Basis_surface() const - { return (SdaiSurfaceH) _basis_surface; } +const SdaiSurface_ptr +SdaiPcurve::basis_surface_() const +{ + return (SdaiSurface_ptr) _basis_surface; +} void -SdaiPcurve::Basis_surface (SdaiSurfaceH x) - { _basis_surface = x; } +SdaiPcurve::basis_surface_ (const SdaiSurface_ptr x) -SdaiDefinitional_representationH -SdaiPcurve::Reference_to_curve() const - { return (SdaiDefinitional_representationH) _reference_to_curve; } +{ + _basis_surface = x; +} + +const SdaiDefinitional_representation_ptr +SdaiPcurve::reference_to_curve_() const +{ + return (SdaiDefinitional_representation_ptr) _reference_to_curve; +} void -SdaiPcurve::Reference_to_curve (SdaiDefinitional_representationH x) - { _reference_to_curve = x; } +SdaiPcurve::reference_to_curve_ (const SdaiDefinitional_representation_ptr x) + +{ + _reference_to_curve = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY pcurve +///////// END_ENTITY pcurve -///////// ENTITY outer_boundary_curve +///////// ENTITY outer_boundary_curve EntityDescriptor *config_control_designe_outer_boundary_curve =0; SdaiOuter_boundary_curve::SdaiOuter_boundary_curve( ) @@ -25376,11 +47603,67 @@ SdaiOuter_boundary_curve::SdaiOuter_boundary_curve( ) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_outer_boundary_curve; + MakeDerived ("dim"); + MakeDerived ("n_segments"); + MakeDerived ("closed_curve"); + MakeDerived ("basis_surface"); } SdaiOuter_boundary_curve::SdaiOuter_boundary_curve (SdaiOuter_boundary_curve& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiOuter_boundary_curve::~SdaiOuter_boundary_curve () { } -SdaiOuter_boundary_curve::SdaiOuter_boundary_curve (STEPentity *se ) : SdaiBoundary_curve(se) + +#ifdef __OSTORE__ + +void +SdaiOuter_boundary_curve::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOuter_boundary_curve: virtual access function." << G4endl; + SdaiOuter_boundary_curve_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiOuter_boundary_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOuter_boundary_curve: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiOuter_boundary_curve *ent = (SdaiOuter_boundary_curve *)sent; +// SdaiOuter_boundary_curve *ent = (SdaiOuter_boundary_curve *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_outer_boundary_curve; +} + +SCLP23(Application_instance_ptr) +create_SdaiOuter_boundary_curve(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiOuter_boundary_curve::get_os_typespec()) + SdaiOuter_boundary_curve; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiOuter_boundary_curve::get_os_typespec()) +// SdaiOuter_boundary_curve; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiOuter_boundary_curve; +} +#endif + +#ifdef __O3DB__ +void +SdaiOuter_boundary_curve::oodb_reInit () +{ eDesc = config_control_designe_outer_boundary_curve; +} +#endif + +SdaiOuter_boundary_curve::SdaiOuter_boundary_curve (SCLP23(Application_instance) *se, int *addAttrs) : SdaiBoundary_curve(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -25390,14 +47673,18 @@ SdaiOuter_boundary_curve::SdaiOuter_boundary_curve (STEPentity *se ) : SdaiBound /* part of the main inheritance hierarchy */ eDesc = config_control_designe_outer_boundary_curve; + MakeDerived ("dim"); + MakeDerived ("n_segments"); + MakeDerived ("closed_curve"); + MakeDerived ("basis_surface"); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY outer_boundary_curve +///////// END_ENTITY outer_boundary_curve -///////// ENTITY shape_representation_relationship +///////// ENTITY shape_representation_relationship EntityDescriptor *config_control_designe_shape_representation_relationship =0; SdaiShape_representation_relationship::SdaiShape_representation_relationship( ) @@ -25410,9 +47697,61 @@ SdaiShape_representation_relationship::SdaiShape_representation_relationship( ) eDesc = config_control_designe_shape_representation_relationship; } SdaiShape_representation_relationship::SdaiShape_representation_relationship (SdaiShape_representation_relationship& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiShape_representation_relationship::~SdaiShape_representation_relationship () { } -SdaiShape_representation_relationship::SdaiShape_representation_relationship (STEPentity *se ) : SdaiRepresentation_relationship(se) + +#ifdef __OSTORE__ + +void +SdaiShape_representation_relationship::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiShape_representation_relationship: virtual access function." << G4endl; + SdaiShape_representation_relationship_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiShape_representation_relationship_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiShape_representation_relationship: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiShape_representation_relationship *ent = (SdaiShape_representation_relationship *)sent; +// SdaiShape_representation_relationship *ent = (SdaiShape_representation_relationship *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_shape_representation_relationship; +} + +SCLP23(Application_instance_ptr) +create_SdaiShape_representation_relationship(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiShape_representation_relationship::get_os_typespec()) + SdaiShape_representation_relationship; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiShape_representation_relationship::get_os_typespec()) +// SdaiShape_representation_relationship; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiShape_representation_relationship; +} +#endif + +#ifdef __O3DB__ +void +SdaiShape_representation_relationship::oodb_reInit () +{ eDesc = config_control_designe_shape_representation_relationship; +} +#endif + +SdaiShape_representation_relationship::SdaiShape_representation_relationship (SCLP23(Application_instance) *se, int *addAttrs) : SdaiRepresentation_relationship(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -25426,10 +47765,10 @@ SdaiShape_representation_relationship::SdaiShape_representation_relationship (ST /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY shape_representation_relationship +///////// END_ENTITY shape_representation_relationship -///////// ENTITY assembly_component_usage_substitute +///////// ENTITY assembly_component_usage_substitute EntityDescriptor *config_control_designe_assembly_component_usage_substitute =0; AttrDescriptor *a_320name =0; @@ -25443,26 +47782,114 @@ SdaiAssembly_component_usage_substitute::SdaiAssembly_component_usage_substitute eDesc = config_control_designe_assembly_component_usage_substitute; - STEPattribute * a = new STEPattribute (*a_320name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_320name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_320name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_321description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_321description, &_description); +#else + a = new STEPattribute(*a_321description, &_description); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_322base, (STEPentityH *) &_base); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_322base, (SCLP23(Application_instance_ptr) *) &_base); +#else + a = new STEPattribute(*a_322base, (SCLP23(Application_instance_ptr) *) &_base); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_323substitute, (STEPentityH *) &_substitute); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_323substitute, (SCLP23(Application_instance_ptr) *) &_substitute); +#else + a = new STEPattribute(*a_323substitute, (SCLP23(Application_instance_ptr) *) &_substitute); +#endif a -> set_null (); attributes.push (a); } SdaiAssembly_component_usage_substitute::SdaiAssembly_component_usage_substitute (SdaiAssembly_component_usage_substitute& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiAssembly_component_usage_substitute::~SdaiAssembly_component_usage_substitute () { } -SdaiAssembly_component_usage_substitute::SdaiAssembly_component_usage_substitute( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiAssembly_component_usage_substitute::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAssembly_component_usage_substitute: virtual access function." << G4endl; + SdaiAssembly_component_usage_substitute_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiAssembly_component_usage_substitute_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAssembly_component_usage_substitute: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiAssembly_component_usage_substitute *ent = (SdaiAssembly_component_usage_substitute *)sent; +// SdaiAssembly_component_usage_substitute *ent = (SdaiAssembly_component_usage_substitute *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_assembly_component_usage_substitute; + ent->attributes[0].aDesc = a_320name; + ent->attributes[1].aDesc = a_321description; + ent->attributes[2].aDesc = a_322base; + if(ent->_base == 0) + ent->_base = S_ENTITY_NULL; + ent->attributes[3].aDesc = a_323substitute; + if(ent->_substitute == 0) + ent->_substitute = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiAssembly_component_usage_substitute(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiAssembly_component_usage_substitute::get_os_typespec()) + SdaiAssembly_component_usage_substitute; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiAssembly_component_usage_substitute::get_os_typespec()) +// SdaiAssembly_component_usage_substitute; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiAssembly_component_usage_substitute; +} +#endif + +#ifdef __O3DB__ +void +SdaiAssembly_component_usage_substitute::oodb_reInit () +{ eDesc = config_control_designe_assembly_component_usage_substitute; + attributes [0].aDesc = a_320name; + attributes [1].aDesc = a_321description; + attributes [2].aDesc = a_322base; + attributes [3].aDesc = a_323substitute; +} +#endif + +SdaiAssembly_component_usage_substitute::SdaiAssembly_component_usage_substitute( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -25471,79 +47898,127 @@ SdaiAssembly_component_usage_substitute::SdaiAssembly_component_usage_substitute eDesc = config_control_designe_assembly_component_usage_substitute; - STEPattribute * a = new STEPattribute (*a_320name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_320name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_320name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_321description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_321description, &_description); +#else + a = new STEPattribute(*a_321description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_322base, (STEPentityH *) &_base); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_322base, (SCLP23(Application_instance_ptr) *) &_base); +#else + a = new STEPattribute(*a_322base, (SCLP23(Application_instance_ptr) *) &_base); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_323substitute, (STEPentityH *) &_substitute); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_323substitute, (SCLP23(Application_instance_ptr) *) &_substitute); +#else + a = new STEPattribute(*a_323substitute, (SCLP23(Application_instance_ptr) *) &_substitute); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiAssembly_component_usage_substitute::Name() const - { return (const SdaiLabel) _name; } +SdaiAssembly_component_usage_substitute::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiAssembly_component_usage_substitute::Name (const char * x) - { _name = x; } +SdaiAssembly_component_usage_substitute::name_ (const SdaiLabel x) + +{ + _name = x; +} const SdaiText -SdaiAssembly_component_usage_substitute::Description() const - { return (const SdaiText) _description; } +SdaiAssembly_component_usage_substitute::description_() const +{ + return (SdaiText) _description; +} void -SdaiAssembly_component_usage_substitute::Description (const char * x) - { _description = x; } +SdaiAssembly_component_usage_substitute::description_ (const SdaiText x) -SdaiAssembly_component_usageH -SdaiAssembly_component_usage_substitute::Base() const - { return (SdaiAssembly_component_usageH) _base; } +{ + _description = x; +} + +const SdaiAssembly_component_usage_ptr +SdaiAssembly_component_usage_substitute::base_() const +{ + return (SdaiAssembly_component_usage_ptr) _base; +} void -SdaiAssembly_component_usage_substitute::Base (SdaiAssembly_component_usageH x) - { _base = x; } +SdaiAssembly_component_usage_substitute::base_ (const SdaiAssembly_component_usage_ptr x) -SdaiAssembly_component_usageH -SdaiAssembly_component_usage_substitute::Substitute() const - { return (SdaiAssembly_component_usageH) _substitute; } +{ + _base = x; +} + +const SdaiAssembly_component_usage_ptr +SdaiAssembly_component_usage_substitute::substitute_() const +{ + return (SdaiAssembly_component_usage_ptr) _substitute; +} void -SdaiAssembly_component_usage_substitute::Substitute (SdaiAssembly_component_usageH x) - { _substitute = x; } +SdaiAssembly_component_usage_substitute::substitute_ (const SdaiAssembly_component_usage_ptr x) -///////// END_ENTITY assembly_component_usage_substitute +{ + _substitute = x; +} + +///////// END_ENTITY assembly_component_usage_substitute -///////// ENTITY degenerate_pcurve +///////// ENTITY degenerate_pcurve EntityDescriptor *config_control_designe_degenerate_pcurve =0; AttrDescriptor *a_324basis_surface =0; @@ -25557,18 +48032,91 @@ SdaiDegenerate_pcurve::SdaiDegenerate_pcurve( ) eDesc = config_control_designe_degenerate_pcurve; - STEPattribute * a = new STEPattribute (*a_324basis_surface, (STEPentityH *) &_basis_surface); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_324basis_surface, (SCLP23(Application_instance_ptr) *) &_basis_surface); +#else + STEPattribute *a = new STEPattribute(*a_324basis_surface, (SCLP23(Application_instance_ptr) *) &_basis_surface); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_325reference_to_curve, (STEPentityH *) &_reference_to_curve); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_325reference_to_curve, (SCLP23(Application_instance_ptr) *) &_reference_to_curve); +#else + a = new STEPattribute(*a_325reference_to_curve, (SCLP23(Application_instance_ptr) *) &_reference_to_curve); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiDegenerate_pcurve::SdaiDegenerate_pcurve (SdaiDegenerate_pcurve& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiDegenerate_pcurve::~SdaiDegenerate_pcurve () { } -SdaiDegenerate_pcurve::SdaiDegenerate_pcurve (STEPentity *se ) : SdaiPoint(se) + +#ifdef __OSTORE__ + +void +SdaiDegenerate_pcurve::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDegenerate_pcurve: virtual access function." << G4endl; + SdaiDegenerate_pcurve_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiDegenerate_pcurve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDegenerate_pcurve: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiDegenerate_pcurve *ent = (SdaiDegenerate_pcurve *)sent; +// SdaiDegenerate_pcurve *ent = (SdaiDegenerate_pcurve *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_degenerate_pcurve; + ent->attributes[1].aDesc = a_324basis_surface; + if(ent->_basis_surface == 0) + ent->_basis_surface = S_ENTITY_NULL; + ent->attributes[2].aDesc = a_325reference_to_curve; + if(ent->_reference_to_curve == 0) + ent->_reference_to_curve = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiDegenerate_pcurve(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiDegenerate_pcurve::get_os_typespec()) + SdaiDegenerate_pcurve; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiDegenerate_pcurve::get_os_typespec()) +// SdaiDegenerate_pcurve; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiDegenerate_pcurve; +} +#endif + +#ifdef __O3DB__ +void +SdaiDegenerate_pcurve::oodb_reInit () +{ eDesc = config_control_designe_degenerate_pcurve; + attributes [1].aDesc = a_324basis_surface; + attributes [2].aDesc = a_325reference_to_curve; +} +#endif + +SdaiDegenerate_pcurve::SdaiDegenerate_pcurve (SCLP23(Application_instance) *se, int *addAttrs) : SdaiPoint(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -25579,47 +48127,72 @@ SdaiDegenerate_pcurve::SdaiDegenerate_pcurve (STEPentity *se ) : SdaiPoint(se) eDesc = config_control_designe_degenerate_pcurve; - STEPattribute * a = new STEPattribute (*a_324basis_surface, (STEPentityH *) &_basis_surface); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_324basis_surface, (SCLP23(Application_instance_ptr) *) &_basis_surface); +#else + STEPattribute *a = new STEPattribute(*a_324basis_surface, (SCLP23(Application_instance_ptr) *) &_basis_surface); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_325reference_to_curve, (STEPentityH *) &_reference_to_curve); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_325reference_to_curve, (SCLP23(Application_instance_ptr) *) &_reference_to_curve); +#else + a = new STEPattribute(*a_325reference_to_curve, (SCLP23(Application_instance_ptr) *) &_reference_to_curve); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -SdaiSurfaceH -SdaiDegenerate_pcurve::Basis_surface() const - { return (SdaiSurfaceH) _basis_surface; } +const SdaiSurface_ptr +SdaiDegenerate_pcurve::basis_surface_() const +{ + return (SdaiSurface_ptr) _basis_surface; +} void -SdaiDegenerate_pcurve::Basis_surface (SdaiSurfaceH x) - { _basis_surface = x; } +SdaiDegenerate_pcurve::basis_surface_ (const SdaiSurface_ptr x) -SdaiDefinitional_representationH -SdaiDegenerate_pcurve::Reference_to_curve() const - { return (SdaiDefinitional_representationH) _reference_to_curve; } +{ + _basis_surface = x; +} + +const SdaiDefinitional_representation_ptr +SdaiDegenerate_pcurve::reference_to_curve_() const +{ + return (SdaiDefinitional_representation_ptr) _reference_to_curve; +} void -SdaiDegenerate_pcurve::Reference_to_curve (SdaiDefinitional_representationH x) - { _reference_to_curve = x; } +SdaiDegenerate_pcurve::reference_to_curve_ (const SdaiDefinitional_representation_ptr x) + +{ + _reference_to_curve = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY degenerate_pcurve +///////// END_ENTITY degenerate_pcurve -///////// ENTITY evaluated_degenerate_pcurve +///////// ENTITY evaluated_degenerate_pcurve EntityDescriptor *config_control_designe_evaluated_degenerate_pcurve =0; AttrDescriptor *a_326equivalent_point =0; @@ -25632,14 +48205,77 @@ SdaiEvaluated_degenerate_pcurve::SdaiEvaluated_degenerate_pcurve( ) eDesc = config_control_designe_evaluated_degenerate_pcurve; - STEPattribute * a = new STEPattribute (*a_326equivalent_point, (STEPentityH *) &_equivalent_point); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_326equivalent_point, (SCLP23(Application_instance_ptr) *) &_equivalent_point); +#else + STEPattribute *a = new STEPattribute(*a_326equivalent_point, (SCLP23(Application_instance_ptr) *) &_equivalent_point); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiEvaluated_degenerate_pcurve::SdaiEvaluated_degenerate_pcurve (SdaiEvaluated_degenerate_pcurve& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiEvaluated_degenerate_pcurve::~SdaiEvaluated_degenerate_pcurve () { } -SdaiEvaluated_degenerate_pcurve::SdaiEvaluated_degenerate_pcurve (STEPentity *se ) : SdaiDegenerate_pcurve(se) + +#ifdef __OSTORE__ + +void +SdaiEvaluated_degenerate_pcurve::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiEvaluated_degenerate_pcurve: virtual access function." << G4endl; + SdaiEvaluated_degenerate_pcurve_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiEvaluated_degenerate_pcurve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiEvaluated_degenerate_pcurve: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiEvaluated_degenerate_pcurve *ent = (SdaiEvaluated_degenerate_pcurve *)sent; +// SdaiEvaluated_degenerate_pcurve *ent = (SdaiEvaluated_degenerate_pcurve *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_evaluated_degenerate_pcurve; + ent->attributes[3].aDesc = a_326equivalent_point; + if(ent->_equivalent_point == 0) + ent->_equivalent_point = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiEvaluated_degenerate_pcurve(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiEvaluated_degenerate_pcurve::get_os_typespec()) + SdaiEvaluated_degenerate_pcurve; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiEvaluated_degenerate_pcurve::get_os_typespec()) +// SdaiEvaluated_degenerate_pcurve; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiEvaluated_degenerate_pcurve; +} +#endif + +#ifdef __O3DB__ +void +SdaiEvaluated_degenerate_pcurve::oodb_reInit () +{ eDesc = config_control_designe_evaluated_degenerate_pcurve; + attributes [3].aDesc = a_326equivalent_point; +} +#endif + +SdaiEvaluated_degenerate_pcurve::SdaiEvaluated_degenerate_pcurve (SCLP23(Application_instance) *se, int *addAttrs) : SdaiDegenerate_pcurve(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -25650,30 +48286,43 @@ SdaiEvaluated_degenerate_pcurve::SdaiEvaluated_degenerate_pcurve (STEPentity *se eDesc = config_control_designe_evaluated_degenerate_pcurve; - STEPattribute * a = new STEPattribute (*a_326equivalent_point, (STEPentityH *) &_equivalent_point); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_326equivalent_point, (SCLP23(Application_instance_ptr) *) &_equivalent_point); +#else + STEPattribute *a = new STEPattribute(*a_326equivalent_point, (SCLP23(Application_instance_ptr) *) &_equivalent_point); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -SdaiCartesian_pointH -SdaiEvaluated_degenerate_pcurve::Equivalent_point() const - { return (SdaiCartesian_pointH) _equivalent_point; } +const SdaiCartesian_point_ptr +SdaiEvaluated_degenerate_pcurve::equivalent_point_() const +{ + return (SdaiCartesian_point_ptr) _equivalent_point; +} void -SdaiEvaluated_degenerate_pcurve::Equivalent_point (SdaiCartesian_pointH x) - { _equivalent_point = x; } +SdaiEvaluated_degenerate_pcurve::equivalent_point_ (const SdaiCartesian_point_ptr x) + +{ + _equivalent_point = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY evaluated_degenerate_pcurve +///////// END_ENTITY evaluated_degenerate_pcurve -///////// ENTITY solid_angle_measure_with_unit +///////// ENTITY solid_angle_measure_with_unit EntityDescriptor *config_control_designe_solid_angle_measure_with_unit =0; SdaiSolid_angle_measure_with_unit::SdaiSolid_angle_measure_with_unit( ) @@ -25686,9 +48335,61 @@ SdaiSolid_angle_measure_with_unit::SdaiSolid_angle_measure_with_unit( ) eDesc = config_control_designe_solid_angle_measure_with_unit; } SdaiSolid_angle_measure_with_unit::SdaiSolid_angle_measure_with_unit (SdaiSolid_angle_measure_with_unit& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiSolid_angle_measure_with_unit::~SdaiSolid_angle_measure_with_unit () { } -SdaiSolid_angle_measure_with_unit::SdaiSolid_angle_measure_with_unit (STEPentity *se ) : SdaiMeasure_with_unit(se) + +#ifdef __OSTORE__ + +void +SdaiSolid_angle_measure_with_unit::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSolid_angle_measure_with_unit: virtual access function." << G4endl; + SdaiSolid_angle_measure_with_unit_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiSolid_angle_measure_with_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSolid_angle_measure_with_unit: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiSolid_angle_measure_with_unit *ent = (SdaiSolid_angle_measure_with_unit *)sent; +// SdaiSolid_angle_measure_with_unit *ent = (SdaiSolid_angle_measure_with_unit *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_solid_angle_measure_with_unit; +} + +SCLP23(Application_instance_ptr) +create_SdaiSolid_angle_measure_with_unit(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiSolid_angle_measure_with_unit::get_os_typespec()) + SdaiSolid_angle_measure_with_unit; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiSolid_angle_measure_with_unit::get_os_typespec()) +// SdaiSolid_angle_measure_with_unit; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiSolid_angle_measure_with_unit; +} +#endif + +#ifdef __O3DB__ +void +SdaiSolid_angle_measure_with_unit::oodb_reInit () +{ eDesc = config_control_designe_solid_angle_measure_with_unit; +} +#endif + +SdaiSolid_angle_measure_with_unit::SdaiSolid_angle_measure_with_unit (SCLP23(Application_instance) *se, int *addAttrs) : SdaiMeasure_with_unit(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -25702,10 +48403,10 @@ SdaiSolid_angle_measure_with_unit::SdaiSolid_angle_measure_with_unit (STEPentity /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY solid_angle_measure_with_unit +///////// END_ENTITY solid_angle_measure_with_unit -///////// ENTITY connected_edge_set +///////// ENTITY connected_edge_set EntityDescriptor *config_control_designe_connected_edge_set =0; AttrDescriptor *a_327ces_edges =0; @@ -25718,14 +48419,74 @@ SdaiConnected_edge_set::SdaiConnected_edge_set( ) eDesc = config_control_designe_connected_edge_set; - STEPattribute * a = new STEPattribute (*a_327ces_edges, &_ces_edges); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_327ces_edges, &_ces_edges); +#else + STEPattribute *a = new STEPattribute(*a_327ces_edges, &_ces_edges); +#endif a -> set_null (); attributes.push (a); } SdaiConnected_edge_set::SdaiConnected_edge_set (SdaiConnected_edge_set& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiConnected_edge_set::~SdaiConnected_edge_set () { } -SdaiConnected_edge_set::SdaiConnected_edge_set (STEPentity *se ) : SdaiTopological_representation_item(se) + +#ifdef __OSTORE__ + +void +SdaiConnected_edge_set::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiConnected_edge_set: virtual access function." << G4endl; + SdaiConnected_edge_set_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiConnected_edge_set_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiConnected_edge_set: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiConnected_edge_set *ent = (SdaiConnected_edge_set *)sent; +// SdaiConnected_edge_set *ent = (SdaiConnected_edge_set *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_connected_edge_set; + ent->attributes[1].aDesc = a_327ces_edges; +} + +SCLP23(Application_instance_ptr) +create_SdaiConnected_edge_set(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiConnected_edge_set::get_os_typespec()) + SdaiConnected_edge_set; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiConnected_edge_set::get_os_typespec()) +// SdaiConnected_edge_set; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiConnected_edge_set; +} +#endif + +#ifdef __O3DB__ +void +SdaiConnected_edge_set::oodb_reInit () +{ eDesc = config_control_designe_connected_edge_set; + attributes [1].aDesc = a_327ces_edges; +} +#endif + +SdaiConnected_edge_set::SdaiConnected_edge_set (SCLP23(Application_instance) *se, int *addAttrs) : SdaiTopological_representation_item(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -25736,30 +48497,40 @@ SdaiConnected_edge_set::SdaiConnected_edge_set (STEPentity *se ) : SdaiTopologic eDesc = config_control_designe_connected_edge_set; - STEPattribute * a = new STEPattribute (*a_327ces_edges, &_ces_edges); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_327ces_edges, &_ces_edges); +#else + STEPattribute *a = new STEPattribute(*a_327ces_edges, &_ces_edges); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -const EntityAggregateH -SdaiConnected_edge_set::Ces_edges() const - { return (EntityAggregateH) &_ces_edges; } +const EntityAggregate_ptr +SdaiConnected_edge_set::ces_edges_() const +{ + return (EntityAggregate_ptr) &_ces_edges; +} void -SdaiConnected_edge_set::Ces_edges (EntityAggregateH x) +SdaiConnected_edge_set::ces_edges_ (const EntityAggregate_ptr x) + { _ces_edges.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY connected_edge_set +///////// END_ENTITY connected_edge_set -///////// ENTITY action +///////// ENTITY action EntityDescriptor *config_control_designe_action =0; AttrDescriptor *a_328name =0; @@ -25772,22 +48543,100 @@ SdaiAction::SdaiAction( ) eDesc = config_control_designe_action; - STEPattribute * a = new STEPattribute (*a_328name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_328name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_328name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_329description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_329description, &_description); +#else + a = new STEPattribute(*a_329description, &_description); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_330chosen_method, (STEPentityH *) &_chosen_method); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_330chosen_method, (SCLP23(Application_instance_ptr) *) &_chosen_method); +#else + a = new STEPattribute(*a_330chosen_method, (SCLP23(Application_instance_ptr) *) &_chosen_method); +#endif a -> set_null (); attributes.push (a); } SdaiAction::SdaiAction (SdaiAction& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiAction::~SdaiAction () { } -SdaiAction::SdaiAction( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiAction::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAction: virtual access function." << G4endl; + SdaiAction_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiAction_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAction: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiAction *ent = (SdaiAction *)sent; +// SdaiAction *ent = (SdaiAction *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_action; + ent->attributes[0].aDesc = a_328name; + ent->attributes[1].aDesc = a_329description; + ent->attributes[2].aDesc = a_330chosen_method; + if(ent->_chosen_method == 0) + ent->_chosen_method = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiAction(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiAction::get_os_typespec()) + SdaiAction; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiAction::get_os_typespec()) +// SdaiAction; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiAction; +} +#endif + +#ifdef __O3DB__ +void +SdaiAction::oodb_reInit () +{ eDesc = config_control_designe_action; + attributes [0].aDesc = a_328name; + attributes [1].aDesc = a_329description; + attributes [2].aDesc = a_330chosen_method; +} +#endif + +SdaiAction::SdaiAction( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -25796,62 +48645,98 @@ SdaiAction::SdaiAction( STEPentity *se ) eDesc = config_control_designe_action; - STEPattribute * a = new STEPattribute (*a_328name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_328name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_328name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_329description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_329description, &_description); +#else + a = new STEPattribute(*a_329description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_330chosen_method, (STEPentityH *) &_chosen_method); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_330chosen_method, (SCLP23(Application_instance_ptr) *) &_chosen_method); +#else + a = new STEPattribute(*a_330chosen_method, (SCLP23(Application_instance_ptr) *) &_chosen_method); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiAction::Name() const - { return (const SdaiLabel) _name; } +SdaiAction::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiAction::Name (const char * x) - { _name = x; } +SdaiAction::name_ (const SdaiLabel x) + +{ + _name = x; +} const SdaiText -SdaiAction::Description() const - { return (const SdaiText) _description; } +SdaiAction::description_() const +{ + return (SdaiText) _description; +} void -SdaiAction::Description (const char * x) - { _description = x; } +SdaiAction::description_ (const SdaiText x) -SdaiAction_methodH -SdaiAction::Chosen_method() const - { return (SdaiAction_methodH) _chosen_method; } +{ + _description = x; +} + +const SdaiAction_method_ptr +SdaiAction::chosen_method_() const +{ + return (SdaiAction_method_ptr) _chosen_method; +} void -SdaiAction::Chosen_method (SdaiAction_methodH x) - { _chosen_method = x; } +SdaiAction::chosen_method_ (const SdaiAction_method_ptr x) -///////// END_ENTITY action +{ + _chosen_method = x; +} + +///////// END_ENTITY action -///////// ENTITY executed_action +///////// ENTITY executed_action EntityDescriptor *config_control_designe_executed_action =0; SdaiExecuted_action::SdaiExecuted_action( ) @@ -25864,9 +48749,61 @@ SdaiExecuted_action::SdaiExecuted_action( ) eDesc = config_control_designe_executed_action; } SdaiExecuted_action::SdaiExecuted_action (SdaiExecuted_action& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiExecuted_action::~SdaiExecuted_action () { } -SdaiExecuted_action::SdaiExecuted_action (STEPentity *se ) : SdaiAction(se) + +#ifdef __OSTORE__ + +void +SdaiExecuted_action::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiExecuted_action: virtual access function." << G4endl; + SdaiExecuted_action_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiExecuted_action_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiExecuted_action: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiExecuted_action *ent = (SdaiExecuted_action *)sent; +// SdaiExecuted_action *ent = (SdaiExecuted_action *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_executed_action; +} + +SCLP23(Application_instance_ptr) +create_SdaiExecuted_action(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiExecuted_action::get_os_typespec()) + SdaiExecuted_action; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiExecuted_action::get_os_typespec()) +// SdaiExecuted_action; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiExecuted_action; +} +#endif + +#ifdef __O3DB__ +void +SdaiExecuted_action::oodb_reInit () +{ eDesc = config_control_designe_executed_action; +} +#endif + +SdaiExecuted_action::SdaiExecuted_action (SCLP23(Application_instance) *se, int *addAttrs) : SdaiAction(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -25880,10 +48817,10 @@ SdaiExecuted_action::SdaiExecuted_action (STEPentity *se ) : SdaiAction(se) /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY executed_action +///////// END_ENTITY executed_action -///////// ENTITY directed_action +///////// ENTITY directed_action EntityDescriptor *config_control_designe_directed_action =0; AttrDescriptor *a_331directive =0; @@ -25896,14 +48833,76 @@ SdaiDirected_action::SdaiDirected_action( ) eDesc = config_control_designe_directed_action; - STEPattribute * a = new STEPattribute (*a_331directive, (STEPentityH *) &_directive); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_331directive, (SCLP23(Application_instance_ptr) *) &_directive); +#else + STEPattribute *a = new STEPattribute(*a_331directive, (SCLP23(Application_instance_ptr) *) &_directive); +#endif a -> set_null (); attributes.push (a); } SdaiDirected_action::SdaiDirected_action (SdaiDirected_action& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiDirected_action::~SdaiDirected_action () { } -SdaiDirected_action::SdaiDirected_action (STEPentity *se ) : SdaiExecuted_action(se) + +#ifdef __OSTORE__ + +void +SdaiDirected_action::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDirected_action: virtual access function." << G4endl; + SdaiDirected_action_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiDirected_action_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDirected_action: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiDirected_action *ent = (SdaiDirected_action *)sent; +// SdaiDirected_action *ent = (SdaiDirected_action *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_directed_action; + ent->attributes[3].aDesc = a_331directive; + if(ent->_directive == 0) + ent->_directive = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiDirected_action(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiDirected_action::get_os_typespec()) + SdaiDirected_action; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiDirected_action::get_os_typespec()) +// SdaiDirected_action; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiDirected_action; +} +#endif + +#ifdef __O3DB__ +void +SdaiDirected_action::oodb_reInit () +{ eDesc = config_control_designe_directed_action; + attributes [3].aDesc = a_331directive; +} +#endif + +SdaiDirected_action::SdaiDirected_action (SCLP23(Application_instance) *se, int *addAttrs) : SdaiExecuted_action(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -25914,30 +48913,42 @@ SdaiDirected_action::SdaiDirected_action (STEPentity *se ) : SdaiExecuted_action eDesc = config_control_designe_directed_action; - STEPattribute * a = new STEPattribute (*a_331directive, (STEPentityH *) &_directive); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_331directive, (SCLP23(Application_instance_ptr) *) &_directive); +#else + STEPattribute *a = new STEPattribute(*a_331directive, (SCLP23(Application_instance_ptr) *) &_directive); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiAction_directiveH -SdaiDirected_action::Directive() const - { return (SdaiAction_directiveH) _directive; } +const SdaiAction_directive_ptr +SdaiDirected_action::directive_() const +{ + return (SdaiAction_directive_ptr) _directive; +} void -SdaiDirected_action::Directive (SdaiAction_directiveH x) - { _directive = x; } +SdaiDirected_action::directive_ (const SdaiAction_directive_ptr x) + +{ + _directive = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY directed_action +///////// END_ENTITY directed_action -///////// ENTITY organizational_project +///////// ENTITY organizational_project EntityDescriptor *config_control_designe_organizational_project =0; AttrDescriptor *a_332name =0; @@ -25950,22 +48961,98 @@ SdaiOrganizational_project::SdaiOrganizational_project( ) eDesc = config_control_designe_organizational_project; - STEPattribute * a = new STEPattribute (*a_332name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_332name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_332name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_333description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_333description, &_description); +#else + a = new STEPattribute(*a_333description, &_description); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_334responsible_organizations, &_responsible_organizations); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_334responsible_organizations, &_responsible_organizations); +#else + a = new STEPattribute(*a_334responsible_organizations, &_responsible_organizations); +#endif a -> set_null (); attributes.push (a); } SdaiOrganizational_project::SdaiOrganizational_project (SdaiOrganizational_project& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiOrganizational_project::~SdaiOrganizational_project () { } -SdaiOrganizational_project::SdaiOrganizational_project( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiOrganizational_project::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOrganizational_project: virtual access function." << G4endl; + SdaiOrganizational_project_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiOrganizational_project_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOrganizational_project: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiOrganizational_project *ent = (SdaiOrganizational_project *)sent; +// SdaiOrganizational_project *ent = (SdaiOrganizational_project *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_organizational_project; + ent->attributes[0].aDesc = a_332name; + ent->attributes[1].aDesc = a_333description; + ent->attributes[2].aDesc = a_334responsible_organizations; +} + +SCLP23(Application_instance_ptr) +create_SdaiOrganizational_project(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiOrganizational_project::get_os_typespec()) + SdaiOrganizational_project; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiOrganizational_project::get_os_typespec()) +// SdaiOrganizational_project; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiOrganizational_project; +} +#endif + +#ifdef __O3DB__ +void +SdaiOrganizational_project::oodb_reInit () +{ eDesc = config_control_designe_organizational_project; + attributes [0].aDesc = a_332name; + attributes [1].aDesc = a_333description; + attributes [2].aDesc = a_334responsible_organizations; +} +#endif + +SdaiOrganizational_project::SdaiOrganizational_project( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -25974,62 +49061,96 @@ SdaiOrganizational_project::SdaiOrganizational_project( STEPentity *se ) eDesc = config_control_designe_organizational_project; - STEPattribute * a = new STEPattribute (*a_332name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_332name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_332name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_333description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_333description, &_description); +#else + a = new STEPattribute(*a_333description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_334responsible_organizations, &_responsible_organizations); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_334responsible_organizations, &_responsible_organizations); +#else + a = new STEPattribute(*a_334responsible_organizations, &_responsible_organizations); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiOrganizational_project::Name() const - { return (const SdaiLabel) _name; } +SdaiOrganizational_project::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiOrganizational_project::Name (const char * x) - { _name = x; } +SdaiOrganizational_project::name_ (const SdaiLabel x) + +{ + _name = x; +} const SdaiText -SdaiOrganizational_project::Description() const - { return (const SdaiText) _description; } +SdaiOrganizational_project::description_() const +{ + return (SdaiText) _description; +} void -SdaiOrganizational_project::Description (const char * x) - { _description = x; } +SdaiOrganizational_project::description_ (const SdaiText x) -const EntityAggregateH -SdaiOrganizational_project::Responsible_organizations() const - { return (EntityAggregateH) &_responsible_organizations; } +{ + _description = x; +} + +const EntityAggregate_ptr +SdaiOrganizational_project::responsible_organizations_() const +{ + return (EntityAggregate_ptr) &_responsible_organizations; +} void -SdaiOrganizational_project::Responsible_organizations (EntityAggregateH x) +SdaiOrganizational_project::responsible_organizations_ (const EntityAggregate_ptr x) + { _responsible_organizations.ShallowCopy (*x); } -///////// END_ENTITY organizational_project +///////// END_ENTITY organizational_project -///////// ENTITY date_time_role +///////// ENTITY date_time_role EntityDescriptor *config_control_designe_date_time_role =0; AttrDescriptor *a_335name =0; @@ -26040,14 +49161,74 @@ SdaiDate_time_role::SdaiDate_time_role( ) eDesc = config_control_designe_date_time_role; - STEPattribute * a = new STEPattribute (*a_335name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_335name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_335name, &_name); +#endif a -> set_null (); attributes.push (a); } SdaiDate_time_role::SdaiDate_time_role (SdaiDate_time_role& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiDate_time_role::~SdaiDate_time_role () { } -SdaiDate_time_role::SdaiDate_time_role( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiDate_time_role::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDate_time_role: virtual access function." << G4endl; + SdaiDate_time_role_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiDate_time_role_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDate_time_role: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiDate_time_role *ent = (SdaiDate_time_role *)sent; +// SdaiDate_time_role *ent = (SdaiDate_time_role *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_date_time_role; + ent->attributes[0].aDesc = a_335name; +} + +SCLP23(Application_instance_ptr) +create_SdaiDate_time_role(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiDate_time_role::get_os_typespec()) + SdaiDate_time_role; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiDate_time_role::get_os_typespec()) +// SdaiDate_time_role; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiDate_time_role; +} +#endif + +#ifdef __O3DB__ +void +SdaiDate_time_role::oodb_reInit () +{ eDesc = config_control_designe_date_time_role; + attributes [0].aDesc = a_335name; +} +#endif + +SdaiDate_time_role::SdaiDate_time_role( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -26056,28 +49237,40 @@ SdaiDate_time_role::SdaiDate_time_role( STEPentity *se ) eDesc = config_control_designe_date_time_role; - STEPattribute * a = new STEPattribute (*a_335name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_335name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_335name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiDate_time_role::Name() const - { return (const SdaiLabel) _name; } +SdaiDate_time_role::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiDate_time_role::Name (const char * x) - { _name = x; } +SdaiDate_time_role::name_ (const SdaiLabel x) -///////// END_ENTITY date_time_role +{ + _name = x; +} + +///////// END_ENTITY date_time_role -///////// ENTITY curve_bounded_surface +///////// ENTITY curve_bounded_surface EntityDescriptor *config_control_designe_curve_bounded_surface =0; AttrDescriptor *a_336basis_surface =0; @@ -26092,22 +49285,101 @@ SdaiCurve_bounded_surface::SdaiCurve_bounded_surface( ) eDesc = config_control_designe_curve_bounded_surface; - STEPattribute * a = new STEPattribute (*a_336basis_surface, (STEPentityH *) &_basis_surface); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_336basis_surface, (SCLP23(Application_instance_ptr) *) &_basis_surface); +#else + STEPattribute *a = new STEPattribute(*a_336basis_surface, (SCLP23(Application_instance_ptr) *) &_basis_surface); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_337boundaries, &_boundaries); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_337boundaries, &_boundaries); +#else + a = new STEPattribute(*a_337boundaries, &_boundaries); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_338implicit_outer, &_implicit_outer); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_338implicit_outer, &_implicit_outer); +#else + a = new STEPattribute(*a_338implicit_outer, &_implicit_outer); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiCurve_bounded_surface::SdaiCurve_bounded_surface (SdaiCurve_bounded_surface& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiCurve_bounded_surface::~SdaiCurve_bounded_surface () { } -SdaiCurve_bounded_surface::SdaiCurve_bounded_surface (STEPentity *se ) : SdaiBounded_surface(se) + +#ifdef __OSTORE__ + +void +SdaiCurve_bounded_surface::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCurve_bounded_surface: virtual access function." << G4endl; + SdaiCurve_bounded_surface_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiCurve_bounded_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCurve_bounded_surface: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiCurve_bounded_surface *ent = (SdaiCurve_bounded_surface *)sent; +// SdaiCurve_bounded_surface *ent = (SdaiCurve_bounded_surface *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_curve_bounded_surface; + ent->attributes[1].aDesc = a_336basis_surface; + if(ent->_basis_surface == 0) + ent->_basis_surface = S_ENTITY_NULL; + ent->attributes[2].aDesc = a_337boundaries; + ent->attributes[3].aDesc = a_338implicit_outer; +} + +SCLP23(Application_instance_ptr) +create_SdaiCurve_bounded_surface(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiCurve_bounded_surface::get_os_typespec()) + SdaiCurve_bounded_surface; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiCurve_bounded_surface::get_os_typespec()) +// SdaiCurve_bounded_surface; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiCurve_bounded_surface; +} +#endif + +#ifdef __O3DB__ +void +SdaiCurve_bounded_surface::oodb_reInit () +{ eDesc = config_control_designe_curve_bounded_surface; + attributes [1].aDesc = a_336basis_surface; + attributes [2].aDesc = a_337boundaries; + attributes [3].aDesc = a_338implicit_outer; +} +#endif + +SdaiCurve_bounded_surface::SdaiCurve_bounded_surface (SCLP23(Application_instance) *se, int *addAttrs) : SdaiBounded_surface(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -26118,64 +49390,99 @@ SdaiCurve_bounded_surface::SdaiCurve_bounded_surface (STEPentity *se ) : SdaiBou eDesc = config_control_designe_curve_bounded_surface; - STEPattribute * a = new STEPattribute (*a_336basis_surface, (STEPentityH *) &_basis_surface); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_336basis_surface, (SCLP23(Application_instance_ptr) *) &_basis_surface); +#else + STEPattribute *a = new STEPattribute(*a_336basis_surface, (SCLP23(Application_instance_ptr) *) &_basis_surface); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_337boundaries, &_boundaries); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_337boundaries, &_boundaries); +#else + a = new STEPattribute(*a_337boundaries, &_boundaries); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_338implicit_outer, &_implicit_outer); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_338implicit_outer, &_implicit_outer); +#else + a = new STEPattribute(*a_338implicit_outer, &_implicit_outer); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -SdaiSurfaceH -SdaiCurve_bounded_surface::Basis_surface() const - { return (SdaiSurfaceH) _basis_surface; } +const SdaiSurface_ptr +SdaiCurve_bounded_surface::basis_surface_() const +{ + return (SdaiSurface_ptr) _basis_surface; +} void -SdaiCurve_bounded_surface::Basis_surface (SdaiSurfaceH x) - { _basis_surface = x; } +SdaiCurve_bounded_surface::basis_surface_ (const SdaiSurface_ptr x) -const EntityAggregateH -SdaiCurve_bounded_surface::Boundaries() const - { return (EntityAggregateH) &_boundaries; } +{ + _basis_surface = x; +} + +const EntityAggregate_ptr +SdaiCurve_bounded_surface::boundaries_() const +{ + return (EntityAggregate_ptr) &_boundaries; +} void -SdaiCurve_bounded_surface::Boundaries (EntityAggregateH x) +SdaiCurve_bounded_surface::boundaries_ (const EntityAggregate_ptr x) + { _boundaries.ShallowCopy (*x); } -const BOOLEAN -SdaiCurve_bounded_surface::Implicit_outer() const - { return (LOGICAL) _implicit_outer; } +const SCLBOOL(Bool) +SdaiCurve_bounded_surface::implicit_outer_() const +{ + return (SCLBOOL(Bool)) _implicit_outer; +} void -SdaiCurve_bounded_surface::Implicit_outer (BOOLEAN x) - { _implicit_outer.put (x); } +SdaiCurve_bounded_surface::implicit_outer_ (const SCLBOOL(Bool) x) + +{ + _implicit_outer.put (x); +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY curve_bounded_surface +///////// END_ENTITY curve_bounded_surface -///////// ENTITY closed_shell +///////// ENTITY closed_shell EntityDescriptor *config_control_designe_closed_shell =0; SdaiClosed_shell::SdaiClosed_shell( ) @@ -26188,9 +49495,61 @@ SdaiClosed_shell::SdaiClosed_shell( ) eDesc = config_control_designe_closed_shell; } SdaiClosed_shell::SdaiClosed_shell (SdaiClosed_shell& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiClosed_shell::~SdaiClosed_shell () { } -SdaiClosed_shell::SdaiClosed_shell (STEPentity *se ) : SdaiConnected_face_set(se) + +#ifdef __OSTORE__ + +void +SdaiClosed_shell::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiClosed_shell: virtual access function." << G4endl; + SdaiClosed_shell_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiClosed_shell_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiClosed_shell: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiClosed_shell *ent = (SdaiClosed_shell *)sent; +// SdaiClosed_shell *ent = (SdaiClosed_shell *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_closed_shell; +} + +SCLP23(Application_instance_ptr) +create_SdaiClosed_shell(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiClosed_shell::get_os_typespec()) + SdaiClosed_shell; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiClosed_shell::get_os_typespec()) +// SdaiClosed_shell; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiClosed_shell; +} +#endif + +#ifdef __O3DB__ +void +SdaiClosed_shell::oodb_reInit () +{ eDesc = config_control_designe_closed_shell; +} +#endif + +SdaiClosed_shell::SdaiClosed_shell (SCLP23(Application_instance) *se, int *addAttrs) : SdaiConnected_face_set(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -26204,10 +49563,10 @@ SdaiClosed_shell::SdaiClosed_shell (STEPentity *se ) : SdaiConnected_face_set(se /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY closed_shell +///////// END_ENTITY closed_shell -///////// ENTITY design_make_from_relationship +///////// ENTITY design_make_from_relationship EntityDescriptor *config_control_designe_design_make_from_relationship =0; SdaiDesign_make_from_relationship::SdaiDesign_make_from_relationship( ) @@ -26220,9 +49579,61 @@ SdaiDesign_make_from_relationship::SdaiDesign_make_from_relationship( ) eDesc = config_control_designe_design_make_from_relationship; } SdaiDesign_make_from_relationship::SdaiDesign_make_from_relationship (SdaiDesign_make_from_relationship& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiDesign_make_from_relationship::~SdaiDesign_make_from_relationship () { } -SdaiDesign_make_from_relationship::SdaiDesign_make_from_relationship (STEPentity *se ) : SdaiProduct_definition_relationship(se) + +#ifdef __OSTORE__ + +void +SdaiDesign_make_from_relationship::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDesign_make_from_relationship: virtual access function." << G4endl; + SdaiDesign_make_from_relationship_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiDesign_make_from_relationship_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDesign_make_from_relationship: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiDesign_make_from_relationship *ent = (SdaiDesign_make_from_relationship *)sent; +// SdaiDesign_make_from_relationship *ent = (SdaiDesign_make_from_relationship *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_design_make_from_relationship; +} + +SCLP23(Application_instance_ptr) +create_SdaiDesign_make_from_relationship(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiDesign_make_from_relationship::get_os_typespec()) + SdaiDesign_make_from_relationship; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiDesign_make_from_relationship::get_os_typespec()) +// SdaiDesign_make_from_relationship; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiDesign_make_from_relationship; +} +#endif + +#ifdef __O3DB__ +void +SdaiDesign_make_from_relationship::oodb_reInit () +{ eDesc = config_control_designe_design_make_from_relationship; +} +#endif + +SdaiDesign_make_from_relationship::SdaiDesign_make_from_relationship (SCLP23(Application_instance) *se, int *addAttrs) : SdaiProduct_definition_relationship(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -26236,10 +49647,10 @@ SdaiDesign_make_from_relationship::SdaiDesign_make_from_relationship (STEPentity /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY design_make_from_relationship +///////// END_ENTITY design_make_from_relationship -///////// ENTITY definitional_representation +///////// ENTITY definitional_representation EntityDescriptor *config_control_designe_definitional_representation =0; SdaiDefinitional_representation::SdaiDefinitional_representation( ) @@ -26252,9 +49663,61 @@ SdaiDefinitional_representation::SdaiDefinitional_representation( ) eDesc = config_control_designe_definitional_representation; } SdaiDefinitional_representation::SdaiDefinitional_representation (SdaiDefinitional_representation& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiDefinitional_representation::~SdaiDefinitional_representation () { } -SdaiDefinitional_representation::SdaiDefinitional_representation (STEPentity *se ) : SdaiRepresentation(se) + +#ifdef __OSTORE__ + +void +SdaiDefinitional_representation::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDefinitional_representation: virtual access function." << G4endl; + SdaiDefinitional_representation_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiDefinitional_representation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDefinitional_representation: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiDefinitional_representation *ent = (SdaiDefinitional_representation *)sent; +// SdaiDefinitional_representation *ent = (SdaiDefinitional_representation *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_definitional_representation; +} + +SCLP23(Application_instance_ptr) +create_SdaiDefinitional_representation(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiDefinitional_representation::get_os_typespec()) + SdaiDefinitional_representation; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiDefinitional_representation::get_os_typespec()) +// SdaiDefinitional_representation; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiDefinitional_representation; +} +#endif + +#ifdef __O3DB__ +void +SdaiDefinitional_representation::oodb_reInit () +{ eDesc = config_control_designe_definitional_representation; +} +#endif + +SdaiDefinitional_representation::SdaiDefinitional_representation (SCLP23(Application_instance) *se, int *addAttrs) : SdaiRepresentation(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -26268,10 +49731,10 @@ SdaiDefinitional_representation::SdaiDefinitional_representation (STEPentity *se /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY definitional_representation +///////// END_ENTITY definitional_representation -///////// ENTITY product_definition_shape +///////// ENTITY product_definition_shape EntityDescriptor *config_control_designe_product_definition_shape =0; SdaiProduct_definition_shape::SdaiProduct_definition_shape( ) @@ -26284,9 +49747,61 @@ SdaiProduct_definition_shape::SdaiProduct_definition_shape( ) eDesc = config_control_designe_product_definition_shape; } SdaiProduct_definition_shape::SdaiProduct_definition_shape (SdaiProduct_definition_shape& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiProduct_definition_shape::~SdaiProduct_definition_shape () { } -SdaiProduct_definition_shape::SdaiProduct_definition_shape (STEPentity *se ) : SdaiProperty_definition(se) + +#ifdef __OSTORE__ + +void +SdaiProduct_definition_shape::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_definition_shape: virtual access function." << G4endl; + SdaiProduct_definition_shape_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiProduct_definition_shape_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_definition_shape: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiProduct_definition_shape *ent = (SdaiProduct_definition_shape *)sent; +// SdaiProduct_definition_shape *ent = (SdaiProduct_definition_shape *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_product_definition_shape; +} + +SCLP23(Application_instance_ptr) +create_SdaiProduct_definition_shape(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiProduct_definition_shape::get_os_typespec()) + SdaiProduct_definition_shape; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiProduct_definition_shape::get_os_typespec()) +// SdaiProduct_definition_shape; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiProduct_definition_shape; +} +#endif + +#ifdef __O3DB__ +void +SdaiProduct_definition_shape::oodb_reInit () +{ eDesc = config_control_designe_product_definition_shape; +} +#endif + +SdaiProduct_definition_shape::SdaiProduct_definition_shape (SCLP23(Application_instance) *se, int *addAttrs) : SdaiProperty_definition(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -26300,15 +49815,15 @@ SdaiProduct_definition_shape::SdaiProduct_definition_shape (STEPentity *se ) : S /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY product_definition_shape +///////// END_ENTITY product_definition_shape -///////// ENTITY si_unit +///////// ENTITY si_unit EntityDescriptor *config_control_designe_si_unit =0; AttrDescriptor *a_339prefix =0; AttrDescriptor *a_340name =0; -AttrDescriptor *a_341Dnamed_unit_dimensions =0; +Derived_attribute *a_341Dnamed_unit_dimensions =0; SdaiSi_unit::SdaiSi_unit( ) { @@ -26318,19 +49833,87 @@ SdaiSi_unit::SdaiSi_unit( ) eDesc = config_control_designe_si_unit; - STEPattribute * a = new STEPattribute (*a_339prefix, &_prefix); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_339prefix, &_prefix); +#else + STEPattribute *a = new STEPattribute(*a_339prefix, &_prefix); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_340name, &_name); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_340name, &_name); +#else + a = new STEPattribute(*a_340name, &_name); +#endif a -> set_null (); attributes.push (a); MakeDerived ("dimensions"); } SdaiSi_unit::SdaiSi_unit (SdaiSi_unit& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiSi_unit::~SdaiSi_unit () { } -SdaiSi_unit::SdaiSi_unit (STEPentity *se ) : SdaiNamed_unit(se) + +#ifdef __OSTORE__ + +void +SdaiSi_unit::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSi_unit: virtual access function." << G4endl; + SdaiSi_unit_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiSi_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSi_unit: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiSi_unit *ent = (SdaiSi_unit *)sent; +// SdaiSi_unit *ent = (SdaiSi_unit *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_si_unit; + ent->attributes[1].aDesc = a_339prefix; + ent->attributes[2].aDesc = a_340name; +} + +SCLP23(Application_instance_ptr) +create_SdaiSi_unit(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiSi_unit::get_os_typespec()) + SdaiSi_unit; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiSi_unit::get_os_typespec()) +// SdaiSi_unit; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiSi_unit; +} +#endif + +#ifdef __O3DB__ +void +SdaiSi_unit::oodb_reInit () +{ eDesc = config_control_designe_si_unit; + attributes [1].aDesc = a_339prefix; + attributes [2].aDesc = a_340name; +} +#endif + +SdaiSi_unit::SdaiSi_unit (SCLP23(Application_instance) *se, int *addAttrs) : SdaiNamed_unit(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -26341,48 +49924,72 @@ SdaiSi_unit::SdaiSi_unit (STEPentity *se ) : SdaiNamed_unit(se) eDesc = config_control_designe_si_unit; - STEPattribute * a = new STEPattribute (*a_339prefix, &_prefix); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_339prefix, &_prefix); +#else + STEPattribute *a = new STEPattribute(*a_339prefix, &_prefix); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_340name, &_name); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_340name, &_name); +#else + a = new STEPattribute(*a_340name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); MakeDerived ("dimensions"); } -const sdaiSi_prefix -SdaiSi_unit::Prefix() const - { return (sdaiSi_prefix) _prefix; } +const SdaiSi_prefix_var +SdaiSi_unit::prefix_() const +{ + return (Si_prefix) _prefix; +} void -SdaiSi_unit::Prefix (sdaiSi_prefix x) - { _prefix.put (x); } +SdaiSi_unit::prefix_ (const SdaiSi_prefix_var x) -const sdaiSi_unit_name -SdaiSi_unit::Name() const - { return (sdaiSi_unit_name) _name; } +{ + _prefix.put (x); +} + +const SdaiSi_unit_name_var +SdaiSi_unit::name_() const +{ + return (Si_unit_name) _name; +} void -SdaiSi_unit::Name (sdaiSi_unit_name x) - { _name.put (x); } +SdaiSi_unit::name_ (const SdaiSi_unit_name_var x) + +{ + _name.put (x); +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY si_unit +///////// END_ENTITY si_unit -///////// ENTITY bezier_surface +///////// ENTITY bezier_surface EntityDescriptor *config_control_designe_bezier_surface =0; SdaiBezier_surface::SdaiBezier_surface( ) @@ -26393,11 +50000,67 @@ SdaiBezier_surface::SdaiBezier_surface( ) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_bezier_surface; + MakeDerived ("dim"); + MakeDerived ("u_upper"); + MakeDerived ("v_upper"); + MakeDerived ("control_points"); } SdaiBezier_surface::SdaiBezier_surface (SdaiBezier_surface& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiBezier_surface::~SdaiBezier_surface () { } -SdaiBezier_surface::SdaiBezier_surface (STEPentity *se ) : SdaiB_spline_surface(se) + +#ifdef __OSTORE__ + +void +SdaiBezier_surface::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiBezier_surface: virtual access function." << G4endl; + SdaiBezier_surface_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiBezier_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiBezier_surface: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiBezier_surface *ent = (SdaiBezier_surface *)sent; +// SdaiBezier_surface *ent = (SdaiBezier_surface *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_bezier_surface; +} + +SCLP23(Application_instance_ptr) +create_SdaiBezier_surface(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiBezier_surface::get_os_typespec()) + SdaiBezier_surface; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiBezier_surface::get_os_typespec()) +// SdaiBezier_surface; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiBezier_surface; +} +#endif + +#ifdef __O3DB__ +void +SdaiBezier_surface::oodb_reInit () +{ eDesc = config_control_designe_bezier_surface; +} +#endif + +SdaiBezier_surface::SdaiBezier_surface (SCLP23(Application_instance) *se, int *addAttrs) : SdaiB_spline_surface(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -26407,14 +50070,18 @@ SdaiBezier_surface::SdaiBezier_surface (STEPentity *se ) : SdaiB_spline_surface( /* part of the main inheritance hierarchy */ eDesc = config_control_designe_bezier_surface; + MakeDerived ("dim"); + MakeDerived ("u_upper"); + MakeDerived ("v_upper"); + MakeDerived ("control_points"); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY bezier_surface +///////// END_ENTITY bezier_surface -///////// ENTITY certification_assignment +///////// ENTITY certification_assignment EntityDescriptor *config_control_designe_certification_assignment =0; AttrDescriptor *a_342assigned_certification =0; @@ -26425,14 +50092,76 @@ SdaiCertification_assignment::SdaiCertification_assignment( ) eDesc = config_control_designe_certification_assignment; - STEPattribute * a = new STEPattribute (*a_342assigned_certification, (STEPentityH *) &_assigned_certification); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_342assigned_certification, (SCLP23(Application_instance_ptr) *) &_assigned_certification); +#else + STEPattribute *a = new STEPattribute(*a_342assigned_certification, (SCLP23(Application_instance_ptr) *) &_assigned_certification); +#endif a -> set_null (); attributes.push (a); } SdaiCertification_assignment::SdaiCertification_assignment (SdaiCertification_assignment& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiCertification_assignment::~SdaiCertification_assignment () { } -SdaiCertification_assignment::SdaiCertification_assignment( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiCertification_assignment::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCertification_assignment: virtual access function." << G4endl; + SdaiCertification_assignment_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiCertification_assignment_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCertification_assignment: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiCertification_assignment *ent = (SdaiCertification_assignment *)sent; +// SdaiCertification_assignment *ent = (SdaiCertification_assignment *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_certification_assignment; + ent->attributes[0].aDesc = a_342assigned_certification; + if(ent->_assigned_certification == 0) + ent->_assigned_certification = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiCertification_assignment(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiCertification_assignment::get_os_typespec()) + SdaiCertification_assignment; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiCertification_assignment::get_os_typespec()) +// SdaiCertification_assignment; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiCertification_assignment; +} +#endif + +#ifdef __O3DB__ +void +SdaiCertification_assignment::oodb_reInit () +{ eDesc = config_control_designe_certification_assignment; + attributes [0].aDesc = a_342assigned_certification; +} +#endif + +SdaiCertification_assignment::SdaiCertification_assignment( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -26441,28 +50170,40 @@ SdaiCertification_assignment::SdaiCertification_assignment( STEPentity *se ) eDesc = config_control_designe_certification_assignment; - STEPattribute * a = new STEPattribute (*a_342assigned_certification, (STEPentityH *) &_assigned_certification); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_342assigned_certification, (SCLP23(Application_instance_ptr) *) &_assigned_certification); +#else + STEPattribute *a = new STEPattribute(*a_342assigned_certification, (SCLP23(Application_instance_ptr) *) &_assigned_certification); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiCertificationH -SdaiCertification_assignment::Assigned_certification() const - { return (SdaiCertificationH) _assigned_certification; } +const SdaiCertification_ptr +SdaiCertification_assignment::assigned_certification_() const +{ + return (SdaiCertification_ptr) _assigned_certification; +} void -SdaiCertification_assignment::Assigned_certification (SdaiCertificationH x) - { _assigned_certification = x; } +SdaiCertification_assignment::assigned_certification_ (const SdaiCertification_ptr x) -///////// END_ENTITY certification_assignment +{ + _assigned_certification = x; +} + +///////// END_ENTITY certification_assignment -///////// ENTITY start_work +///////// ENTITY start_work EntityDescriptor *config_control_designe_start_work =0; AttrDescriptor *a_343items =0; @@ -26475,14 +50216,74 @@ SdaiStart_work::SdaiStart_work( ) eDesc = config_control_designe_start_work; - STEPattribute * a = new STEPattribute (*a_343items, &_items); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_343items, &_items); +#else + STEPattribute *a = new STEPattribute(*a_343items, &_items); +#endif a -> set_null (); attributes.push (a); } SdaiStart_work::SdaiStart_work (SdaiStart_work& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiStart_work::~SdaiStart_work () { } -SdaiStart_work::SdaiStart_work (STEPentity *se ) : SdaiAction_assignment(se) + +#ifdef __OSTORE__ + +void +SdaiStart_work::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiStart_work: virtual access function." << G4endl; + SdaiStart_work_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiStart_work_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiStart_work: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiStart_work *ent = (SdaiStart_work *)sent; +// SdaiStart_work *ent = (SdaiStart_work *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_start_work; + ent->attributes[1].aDesc = a_343items; +} + +SCLP23(Application_instance_ptr) +create_SdaiStart_work(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiStart_work::get_os_typespec()) + SdaiStart_work; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiStart_work::get_os_typespec()) +// SdaiStart_work; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiStart_work; +} +#endif + +#ifdef __O3DB__ +void +SdaiStart_work::oodb_reInit () +{ eDesc = config_control_designe_start_work; + attributes [1].aDesc = a_343items; +} +#endif + +SdaiStart_work::SdaiStart_work (SCLP23(Application_instance) *se, int *addAttrs) : SdaiAction_assignment(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -26493,30 +50294,40 @@ SdaiStart_work::SdaiStart_work (STEPentity *se ) : SdaiAction_assignment(se) eDesc = config_control_designe_start_work; - STEPattribute * a = new STEPattribute (*a_343items, &_items); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_343items, &_items); +#else + STEPattribute *a = new STEPattribute(*a_343items, &_items); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -const SdaiWork_itemsH -SdaiStart_work::Items() const - { return (SdaiWork_itemsH) &_items; } +const SdaiWork_items_ptr +SdaiStart_work::items_() const +{ + return (SdaiWork_items_ptr) &_items; +} void -SdaiStart_work::Items (SdaiWork_itemsH x) +SdaiStart_work::items_ (const SdaiWork_items_ptr x) + { _items.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY start_work +///////// END_ENTITY start_work -///////// ENTITY contract_type +///////// ENTITY contract_type EntityDescriptor *config_control_designe_contract_type =0; AttrDescriptor *a_344description =0; @@ -26527,14 +50338,74 @@ SdaiContract_type::SdaiContract_type( ) eDesc = config_control_designe_contract_type; - STEPattribute * a = new STEPattribute (*a_344description, &_description); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_344description, &_description); +#else + STEPattribute *a = new STEPattribute(*a_344description, &_description); +#endif a -> set_null (); attributes.push (a); } SdaiContract_type::SdaiContract_type (SdaiContract_type& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiContract_type::~SdaiContract_type () { } -SdaiContract_type::SdaiContract_type( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiContract_type::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiContract_type: virtual access function." << G4endl; + SdaiContract_type_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiContract_type_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiContract_type: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiContract_type *ent = (SdaiContract_type *)sent; +// SdaiContract_type *ent = (SdaiContract_type *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_contract_type; + ent->attributes[0].aDesc = a_344description; +} + +SCLP23(Application_instance_ptr) +create_SdaiContract_type(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiContract_type::get_os_typespec()) + SdaiContract_type; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiContract_type::get_os_typespec()) +// SdaiContract_type; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiContract_type; +} +#endif + +#ifdef __O3DB__ +void +SdaiContract_type::oodb_reInit () +{ eDesc = config_control_designe_contract_type; + attributes [0].aDesc = a_344description; +} +#endif + +SdaiContract_type::SdaiContract_type( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -26543,34 +50414,46 @@ SdaiContract_type::SdaiContract_type( STEPentity *se ) eDesc = config_control_designe_contract_type; - STEPattribute * a = new STEPattribute (*a_344description, &_description); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_344description, &_description); +#else + STEPattribute *a = new STEPattribute(*a_344description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiContract_type::Description() const - { return (const SdaiLabel) _description; } +SdaiContract_type::description_() const +{ + return (SdaiLabel) _description; +} void -SdaiContract_type::Description (const char * x) - { _description = x; } +SdaiContract_type::description_ (const SdaiLabel x) -///////// END_ENTITY contract_type +{ + _description = x; +} + +///////// END_ENTITY contract_type -///////// ENTITY b_spline_curve_with_knots +///////// ENTITY b_spline_curve_with_knots EntityDescriptor *config_control_designe_b_spline_curve_with_knots =0; AttrDescriptor *a_345knot_multiplicities =0; AttrDescriptor *a_346knots =0; AttrDescriptor *a_347knot_spec =0; -AttrDescriptor *a_348Dupper_index_on_knots =0; +Derived_attribute *a_348Dupper_index_on_knots =0; SdaiB_spline_curve_with_knots::SdaiB_spline_curve_with_knots( ) { @@ -26580,22 +50463,102 @@ SdaiB_spline_curve_with_knots::SdaiB_spline_curve_with_knots( ) eDesc = config_control_designe_b_spline_curve_with_knots; - STEPattribute * a = new STEPattribute (*a_345knot_multiplicities, &_knot_multiplicities); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_345knot_multiplicities, &_knot_multiplicities); +#else + STEPattribute *a = new STEPattribute(*a_345knot_multiplicities, &_knot_multiplicities); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_346knots, &_knots); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_346knots, &_knots); +#else + a = new STEPattribute(*a_346knots, &_knots); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_347knot_spec, &_knot_spec); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_347knot_spec, &_knot_spec); +#else + a = new STEPattribute(*a_347knot_spec, &_knot_spec); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); + MakeDerived ("upper_index_on_control_points"); + MakeDerived ("control_points"); + MakeDerived ("upper_index_on_knots"); } SdaiB_spline_curve_with_knots::SdaiB_spline_curve_with_knots (SdaiB_spline_curve_with_knots& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiB_spline_curve_with_knots::~SdaiB_spline_curve_with_knots () { } -SdaiB_spline_curve_with_knots::SdaiB_spline_curve_with_knots (STEPentity *se ) : SdaiB_spline_curve(se) + +#ifdef __OSTORE__ + +void +SdaiB_spline_curve_with_knots::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiB_spline_curve_with_knots: virtual access function." << G4endl; + SdaiB_spline_curve_with_knots_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiB_spline_curve_with_knots_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiB_spline_curve_with_knots: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiB_spline_curve_with_knots *ent = (SdaiB_spline_curve_with_knots *)sent; +// SdaiB_spline_curve_with_knots *ent = (SdaiB_spline_curve_with_knots *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_b_spline_curve_with_knots; + ent->attributes[6].aDesc = a_345knot_multiplicities; + ent->attributes[7].aDesc = a_346knots; + ent->attributes[8].aDesc = a_347knot_spec; +} + +SCLP23(Application_instance_ptr) +create_SdaiB_spline_curve_with_knots(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiB_spline_curve_with_knots::get_os_typespec()) + SdaiB_spline_curve_with_knots; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiB_spline_curve_with_knots::get_os_typespec()) +// SdaiB_spline_curve_with_knots; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiB_spline_curve_with_knots; +} +#endif + +#ifdef __O3DB__ +void +SdaiB_spline_curve_with_knots::oodb_reInit () +{ eDesc = config_control_designe_b_spline_curve_with_knots; + attributes [6].aDesc = a_345knot_multiplicities; + attributes [7].aDesc = a_346knots; + attributes [8].aDesc = a_347knot_spec; +} +#endif + +SdaiB_spline_curve_with_knots::SdaiB_spline_curve_with_knots (SCLP23(Application_instance) *se, int *addAttrs) : SdaiB_spline_curve(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -26606,64 +50569,100 @@ SdaiB_spline_curve_with_knots::SdaiB_spline_curve_with_knots (STEPentity *se ) : eDesc = config_control_designe_b_spline_curve_with_knots; - STEPattribute * a = new STEPattribute (*a_345knot_multiplicities, &_knot_multiplicities); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_345knot_multiplicities, &_knot_multiplicities); +#else + STEPattribute *a = new STEPattribute(*a_345knot_multiplicities, &_knot_multiplicities); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_346knots, &_knots); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_346knots, &_knots); +#else + a = new STEPattribute(*a_346knots, &_knots); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_347knot_spec, &_knot_spec); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_347knot_spec, &_knot_spec); +#else + a = new STEPattribute(*a_347knot_spec, &_knot_spec); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); + MakeDerived ("upper_index_on_control_points"); + MakeDerived ("control_points"); + MakeDerived ("upper_index_on_knots"); } -const IntAggregateH -SdaiB_spline_curve_with_knots::Knot_multiplicities() const - { return (IntAggregateH) &_knot_multiplicities; } +const IntAggregate_ptr +SdaiB_spline_curve_with_knots::knot_multiplicities_() const +{ + return (IntAggregate_ptr) &_knot_multiplicities; +} void -SdaiB_spline_curve_with_knots::Knot_multiplicities (IntAggregateH x) +SdaiB_spline_curve_with_knots::knot_multiplicities_ (const IntAggregate_ptr x) + { _knot_multiplicities.ShallowCopy (*x); } -const RealAggregateH -SdaiB_spline_curve_with_knots::Knots() const - { return (RealAggregateH) &_knots; } +const RealAggregate_ptr +SdaiB_spline_curve_with_knots::knots_() const +{ + return (RealAggregate_ptr) &_knots; +} void -SdaiB_spline_curve_with_knots::Knots (RealAggregateH x) +SdaiB_spline_curve_with_knots::knots_ (const RealAggregate_ptr x) + { _knots.ShallowCopy (*x); } -const sdaiKnot_type -SdaiB_spline_curve_with_knots::Knot_spec() const - { return (sdaiKnot_type) _knot_spec; } +const SdaiKnot_type_var +SdaiB_spline_curve_with_knots::knot_spec_() const +{ + return (Knot_type) _knot_spec; +} void -SdaiB_spline_curve_with_knots::Knot_spec (sdaiKnot_type x) - { _knot_spec.put (x); } +SdaiB_spline_curve_with_knots::knot_spec_ (const SdaiKnot_type_var x) + +{ + _knot_spec.put (x); +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY b_spline_curve_with_knots +///////// END_ENTITY b_spline_curve_with_knots -///////// ENTITY cc_design_approval +///////// ENTITY cc_design_approval EntityDescriptor *config_control_designe_cc_design_approval =0; AttrDescriptor *a_349items =0; @@ -26676,14 +50675,74 @@ SdaiCc_design_approval::SdaiCc_design_approval( ) eDesc = config_control_designe_cc_design_approval; - STEPattribute * a = new STEPattribute (*a_349items, &_items); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_349items, &_items); +#else + STEPattribute *a = new STEPattribute(*a_349items, &_items); +#endif a -> set_null (); attributes.push (a); } SdaiCc_design_approval::SdaiCc_design_approval (SdaiCc_design_approval& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiCc_design_approval::~SdaiCc_design_approval () { } -SdaiCc_design_approval::SdaiCc_design_approval (STEPentity *se ) : SdaiApproval_assignment(se) + +#ifdef __OSTORE__ + +void +SdaiCc_design_approval::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCc_design_approval: virtual access function." << G4endl; + SdaiCc_design_approval_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiCc_design_approval_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCc_design_approval: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiCc_design_approval *ent = (SdaiCc_design_approval *)sent; +// SdaiCc_design_approval *ent = (SdaiCc_design_approval *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_cc_design_approval; + ent->attributes[1].aDesc = a_349items; +} + +SCLP23(Application_instance_ptr) +create_SdaiCc_design_approval(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiCc_design_approval::get_os_typespec()) + SdaiCc_design_approval; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiCc_design_approval::get_os_typespec()) +// SdaiCc_design_approval; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiCc_design_approval; +} +#endif + +#ifdef __O3DB__ +void +SdaiCc_design_approval::oodb_reInit () +{ eDesc = config_control_designe_cc_design_approval; + attributes [1].aDesc = a_349items; +} +#endif + +SdaiCc_design_approval::SdaiCc_design_approval (SCLP23(Application_instance) *se, int *addAttrs) : SdaiApproval_assignment(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -26694,30 +50753,40 @@ SdaiCc_design_approval::SdaiCc_design_approval (STEPentity *se ) : SdaiApproval_ eDesc = config_control_designe_cc_design_approval; - STEPattribute * a = new STEPattribute (*a_349items, &_items); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_349items, &_items); +#else + STEPattribute *a = new STEPattribute(*a_349items, &_items); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -const SdaiApproved_itemsH -SdaiCc_design_approval::Items() const - { return (SdaiApproved_itemsH) &_items; } +const SdaiApproved_items_ptr +SdaiCc_design_approval::items_() const +{ + return (SdaiApproved_items_ptr) &_items; +} void -SdaiCc_design_approval::Items (SdaiApproved_itemsH x) +SdaiCc_design_approval::items_ (const SdaiApproved_items_ptr x) + { _items.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY cc_design_approval +///////// END_ENTITY cc_design_approval -///////// ENTITY edge_based_wireframe_shape_representation +///////// ENTITY edge_based_wireframe_shape_representation EntityDescriptor *config_control_designe_edge_based_wireframe_shape_representation =0; SdaiEdge_based_wireframe_shape_representation::SdaiEdge_based_wireframe_shape_representation( ) @@ -26730,9 +50799,61 @@ SdaiEdge_based_wireframe_shape_representation::SdaiEdge_based_wireframe_shape_re eDesc = config_control_designe_edge_based_wireframe_shape_representation; } SdaiEdge_based_wireframe_shape_representation::SdaiEdge_based_wireframe_shape_representation (SdaiEdge_based_wireframe_shape_representation& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiEdge_based_wireframe_shape_representation::~SdaiEdge_based_wireframe_shape_representation () { } -SdaiEdge_based_wireframe_shape_representation::SdaiEdge_based_wireframe_shape_representation (STEPentity *se ) : SdaiShape_representation(se) + +#ifdef __OSTORE__ + +void +SdaiEdge_based_wireframe_shape_representation::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiEdge_based_wireframe_shape_representation: virtual access function." << G4endl; + SdaiEdge_based_wireframe_shape_representation_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiEdge_based_wireframe_shape_representation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiEdge_based_wireframe_shape_representation: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiEdge_based_wireframe_shape_representation *ent = (SdaiEdge_based_wireframe_shape_representation *)sent; +// SdaiEdge_based_wireframe_shape_representation *ent = (SdaiEdge_based_wireframe_shape_representation *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_edge_based_wireframe_shape_representation; +} + +SCLP23(Application_instance_ptr) +create_SdaiEdge_based_wireframe_shape_representation(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiEdge_based_wireframe_shape_representation::get_os_typespec()) + SdaiEdge_based_wireframe_shape_representation; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiEdge_based_wireframe_shape_representation::get_os_typespec()) +// SdaiEdge_based_wireframe_shape_representation; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiEdge_based_wireframe_shape_representation; +} +#endif + +#ifdef __O3DB__ +void +SdaiEdge_based_wireframe_shape_representation::oodb_reInit () +{ eDesc = config_control_designe_edge_based_wireframe_shape_representation; +} +#endif + +SdaiEdge_based_wireframe_shape_representation::SdaiEdge_based_wireframe_shape_representation (SCLP23(Application_instance) *se, int *addAttrs) : SdaiShape_representation(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -26746,10 +50867,10 @@ SdaiEdge_based_wireframe_shape_representation::SdaiEdge_based_wireframe_shape_re /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY edge_based_wireframe_shape_representation +///////// END_ENTITY edge_based_wireframe_shape_representation -///////// ENTITY geometrically_bounded_wireframe_shape_representation +///////// ENTITY geometrically_bounded_wireframe_shape_representation EntityDescriptor *config_control_designe_geometrically_bounded_wireframe_shape_representation =0; SdaiGeometrically_bounded_wireframe_shape_representation::SdaiGeometrically_bounded_wireframe_shape_representation( ) @@ -26762,9 +50883,61 @@ SdaiGeometrically_bounded_wireframe_shape_representation::SdaiGeometrically_boun eDesc = config_control_designe_geometrically_bounded_wireframe_shape_representation; } SdaiGeometrically_bounded_wireframe_shape_representation::SdaiGeometrically_bounded_wireframe_shape_representation (SdaiGeometrically_bounded_wireframe_shape_representation& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiGeometrically_bounded_wireframe_shape_representation::~SdaiGeometrically_bounded_wireframe_shape_representation () { } -SdaiGeometrically_bounded_wireframe_shape_representation::SdaiGeometrically_bounded_wireframe_shape_representation (STEPentity *se ) : SdaiShape_representation(se) + +#ifdef __OSTORE__ + +void +SdaiGeometrically_bounded_wireframe_shape_representation::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiGeometrically_bounded_wireframe_shape_representation: virtual access function." << G4endl; + SdaiGeometrically_bounded_wireframe_shape_representation_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiGeometrically_bounded_wireframe_shape_representation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiGeometrically_bounded_wireframe_shape_representation: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiGeometrically_bounded_wireframe_shape_representation *ent = (SdaiGeometrically_bounded_wireframe_shape_representation *)sent; +// SdaiGeometrically_bounded_wireframe_shape_representation *ent = (SdaiGeometrically_bounded_wireframe_shape_representation *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_geometrically_bounded_wireframe_shape_representation; +} + +SCLP23(Application_instance_ptr) +create_SdaiGeometrically_bounded_wireframe_shape_representation(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiGeometrically_bounded_wireframe_shape_representation::get_os_typespec()) + SdaiGeometrically_bounded_wireframe_shape_representation; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiGeometrically_bounded_wireframe_shape_representation::get_os_typespec()) +// SdaiGeometrically_bounded_wireframe_shape_representation; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiGeometrically_bounded_wireframe_shape_representation; +} +#endif + +#ifdef __O3DB__ +void +SdaiGeometrically_bounded_wireframe_shape_representation::oodb_reInit () +{ eDesc = config_control_designe_geometrically_bounded_wireframe_shape_representation; +} +#endif + +SdaiGeometrically_bounded_wireframe_shape_representation::SdaiGeometrically_bounded_wireframe_shape_representation (SCLP23(Application_instance) *se, int *addAttrs) : SdaiShape_representation(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -26778,10 +50951,10 @@ SdaiGeometrically_bounded_wireframe_shape_representation::SdaiGeometrically_boun /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY geometrically_bounded_wireframe_shape_representation +///////// END_ENTITY geometrically_bounded_wireframe_shape_representation -///////// ENTITY product_concept +///////// ENTITY product_concept EntityDescriptor *config_control_designe_product_concept =0; AttrDescriptor *a_350id =0; @@ -26795,26 +50968,112 @@ SdaiProduct_concept::SdaiProduct_concept( ) eDesc = config_control_designe_product_concept; - STEPattribute * a = new STEPattribute (*a_350id, &_id); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_350id, &_id); +#else + STEPattribute *a = new STEPattribute(*a_350id, &_id); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_351name, &_name); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_351name, &_name); +#else + a = new STEPattribute(*a_351name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_352description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_352description, &_description); +#else + a = new STEPattribute(*a_352description, &_description); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_353market_context, (STEPentityH *) &_market_context); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_353market_context, (SCLP23(Application_instance_ptr) *) &_market_context); +#else + a = new STEPattribute(*a_353market_context, (SCLP23(Application_instance_ptr) *) &_market_context); +#endif a -> set_null (); attributes.push (a); } SdaiProduct_concept::SdaiProduct_concept (SdaiProduct_concept& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiProduct_concept::~SdaiProduct_concept () { } -SdaiProduct_concept::SdaiProduct_concept( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiProduct_concept::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_concept: virtual access function." << G4endl; + SdaiProduct_concept_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiProduct_concept_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_concept: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiProduct_concept *ent = (SdaiProduct_concept *)sent; +// SdaiProduct_concept *ent = (SdaiProduct_concept *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_product_concept; + ent->attributes[0].aDesc = a_350id; + ent->attributes[1].aDesc = a_351name; + ent->attributes[2].aDesc = a_352description; + ent->attributes[3].aDesc = a_353market_context; + if(ent->_market_context == 0) + ent->_market_context = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiProduct_concept(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiProduct_concept::get_os_typespec()) + SdaiProduct_concept; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiProduct_concept::get_os_typespec()) +// SdaiProduct_concept; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiProduct_concept; +} +#endif + +#ifdef __O3DB__ +void +SdaiProduct_concept::oodb_reInit () +{ eDesc = config_control_designe_product_concept; + attributes [0].aDesc = a_350id; + attributes [1].aDesc = a_351name; + attributes [2].aDesc = a_352description; + attributes [3].aDesc = a_353market_context; +} +#endif + +SdaiProduct_concept::SdaiProduct_concept( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -26823,79 +51082,127 @@ SdaiProduct_concept::SdaiProduct_concept( STEPentity *se ) eDesc = config_control_designe_product_concept; - STEPattribute * a = new STEPattribute (*a_350id, &_id); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_350id, &_id); +#else + STEPattribute *a = new STEPattribute(*a_350id, &_id); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_351name, &_name); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_351name, &_name); +#else + a = new STEPattribute(*a_351name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_352description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_352description, &_description); +#else + a = new STEPattribute(*a_352description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_353market_context, (STEPentityH *) &_market_context); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_353market_context, (SCLP23(Application_instance_ptr) *) &_market_context); +#else + a = new STEPattribute(*a_353market_context, (SCLP23(Application_instance_ptr) *) &_market_context); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiIdentifier -SdaiProduct_concept::Id() const - { return (const SdaiIdentifier) _id; } +SdaiProduct_concept::id_() const +{ + return (SdaiIdentifier) _id; +} void -SdaiProduct_concept::Id (const char * x) - { _id = x; } +SdaiProduct_concept::id_ (const SdaiIdentifier x) + +{ + _id = x; +} const SdaiLabel -SdaiProduct_concept::Name() const - { return (const SdaiLabel) _name; } +SdaiProduct_concept::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiProduct_concept::Name (const char * x) - { _name = x; } +SdaiProduct_concept::name_ (const SdaiLabel x) + +{ + _name = x; +} const SdaiText -SdaiProduct_concept::Description() const - { return (const SdaiText) _description; } +SdaiProduct_concept::description_() const +{ + return (SdaiText) _description; +} void -SdaiProduct_concept::Description (const char * x) - { _description = x; } +SdaiProduct_concept::description_ (const SdaiText x) -SdaiProduct_concept_contextH -SdaiProduct_concept::Market_context() const - { return (SdaiProduct_concept_contextH) _market_context; } +{ + _description = x; +} + +const SdaiProduct_concept_context_ptr +SdaiProduct_concept::market_context_() const +{ + return (SdaiProduct_concept_context_ptr) _market_context; +} void -SdaiProduct_concept::Market_context (SdaiProduct_concept_contextH x) - { _market_context = x; } +SdaiProduct_concept::market_context_ (const SdaiProduct_concept_context_ptr x) -///////// END_ENTITY product_concept +{ + _market_context = x; +} + +///////// END_ENTITY product_concept -///////// ENTITY cc_design_contract +///////// ENTITY cc_design_contract EntityDescriptor *config_control_designe_cc_design_contract =0; AttrDescriptor *a_354items =0; @@ -26908,14 +51215,74 @@ SdaiCc_design_contract::SdaiCc_design_contract( ) eDesc = config_control_designe_cc_design_contract; - STEPattribute * a = new STEPattribute (*a_354items, &_items); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_354items, &_items); +#else + STEPattribute *a = new STEPattribute(*a_354items, &_items); +#endif a -> set_null (); attributes.push (a); } SdaiCc_design_contract::SdaiCc_design_contract (SdaiCc_design_contract& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiCc_design_contract::~SdaiCc_design_contract () { } -SdaiCc_design_contract::SdaiCc_design_contract (STEPentity *se ) : SdaiContract_assignment(se) + +#ifdef __OSTORE__ + +void +SdaiCc_design_contract::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCc_design_contract: virtual access function." << G4endl; + SdaiCc_design_contract_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiCc_design_contract_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCc_design_contract: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiCc_design_contract *ent = (SdaiCc_design_contract *)sent; +// SdaiCc_design_contract *ent = (SdaiCc_design_contract *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_cc_design_contract; + ent->attributes[1].aDesc = a_354items; +} + +SCLP23(Application_instance_ptr) +create_SdaiCc_design_contract(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiCc_design_contract::get_os_typespec()) + SdaiCc_design_contract; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiCc_design_contract::get_os_typespec()) +// SdaiCc_design_contract; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiCc_design_contract; +} +#endif + +#ifdef __O3DB__ +void +SdaiCc_design_contract::oodb_reInit () +{ eDesc = config_control_designe_cc_design_contract; + attributes [1].aDesc = a_354items; +} +#endif + +SdaiCc_design_contract::SdaiCc_design_contract (SCLP23(Application_instance) *se, int *addAttrs) : SdaiContract_assignment(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -26926,30 +51293,40 @@ SdaiCc_design_contract::SdaiCc_design_contract (STEPentity *se ) : SdaiContract_ eDesc = config_control_designe_cc_design_contract; - STEPattribute * a = new STEPattribute (*a_354items, &_items); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_354items, &_items); +#else + STEPattribute *a = new STEPattribute(*a_354items, &_items); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -const SdaiContracted_itemsH -SdaiCc_design_contract::Items() const - { return (SdaiContracted_itemsH) &_items; } +const SdaiContracted_items_ptr +SdaiCc_design_contract::items_() const +{ + return (SdaiContracted_items_ptr) &_items; +} void -SdaiCc_design_contract::Items (SdaiContracted_itemsH x) +SdaiCc_design_contract::items_ (const SdaiContracted_items_ptr x) + { _items.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY cc_design_contract +///////// END_ENTITY cc_design_contract -///////// ENTITY seam_curve +///////// ENTITY seam_curve EntityDescriptor *config_control_designe_seam_curve =0; SdaiSeam_curve::SdaiSeam_curve( ) @@ -26960,11 +51337,65 @@ SdaiSeam_curve::SdaiSeam_curve( ) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_seam_curve; + MakeDerived ("dim"); + MakeDerived ("basis_surface"); } SdaiSeam_curve::SdaiSeam_curve (SdaiSeam_curve& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiSeam_curve::~SdaiSeam_curve () { } -SdaiSeam_curve::SdaiSeam_curve (STEPentity *se ) : SdaiSurface_curve(se) + +#ifdef __OSTORE__ + +void +SdaiSeam_curve::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSeam_curve: virtual access function." << G4endl; + SdaiSeam_curve_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiSeam_curve_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSeam_curve: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiSeam_curve *ent = (SdaiSeam_curve *)sent; +// SdaiSeam_curve *ent = (SdaiSeam_curve *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_seam_curve; +} + +SCLP23(Application_instance_ptr) +create_SdaiSeam_curve(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiSeam_curve::get_os_typespec()) + SdaiSeam_curve; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiSeam_curve::get_os_typespec()) +// SdaiSeam_curve; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiSeam_curve; +} +#endif + +#ifdef __O3DB__ +void +SdaiSeam_curve::oodb_reInit () +{ eDesc = config_control_designe_seam_curve; +} +#endif + +SdaiSeam_curve::SdaiSeam_curve (SCLP23(Application_instance) *se, int *addAttrs) : SdaiSurface_curve(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -26974,19 +51405,21 @@ SdaiSeam_curve::SdaiSeam_curve (STEPentity *se ) : SdaiSurface_curve(se) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_seam_curve; + MakeDerived ("dim"); + MakeDerived ("basis_surface"); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY seam_curve +///////// END_ENTITY seam_curve -///////// ENTITY axis2_placement_3d +///////// ENTITY axis2_placement_3d EntityDescriptor *config_control_designe_axis2_placement_3d =0; AttrDescriptor *a_355axis =0; AttrDescriptor *a_356ref_direction =0; -AttrDescriptor *a_357Dp =0; +Derived_attribute *a_357Dp =0; SdaiAxis2_placement_3d::SdaiAxis2_placement_3d( ) { @@ -26996,18 +51429,92 @@ SdaiAxis2_placement_3d::SdaiAxis2_placement_3d( ) eDesc = config_control_designe_axis2_placement_3d; - STEPattribute * a = new STEPattribute (*a_355axis, (STEPentityH *) &_axis); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_355axis, (SCLP23(Application_instance_ptr) *) &_axis); +#else + STEPattribute *a = new STEPattribute(*a_355axis, (SCLP23(Application_instance_ptr) *) &_axis); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_356ref_direction, (STEPentityH *) &_ref_direction); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_356ref_direction, (SCLP23(Application_instance_ptr) *) &_ref_direction); +#else + a = new STEPattribute(*a_356ref_direction, (SCLP23(Application_instance_ptr) *) &_ref_direction); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); + MakeDerived ("p"); } SdaiAxis2_placement_3d::SdaiAxis2_placement_3d (SdaiAxis2_placement_3d& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiAxis2_placement_3d::~SdaiAxis2_placement_3d () { } -SdaiAxis2_placement_3d::SdaiAxis2_placement_3d (STEPentity *se ) : SdaiPlacement(se) + +#ifdef __OSTORE__ + +void +SdaiAxis2_placement_3d::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAxis2_placement_3d: virtual access function." << G4endl; + SdaiAxis2_placement_3d_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiAxis2_placement_3d_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAxis2_placement_3d: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiAxis2_placement_3d *ent = (SdaiAxis2_placement_3d *)sent; +// SdaiAxis2_placement_3d *ent = (SdaiAxis2_placement_3d *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_axis2_placement_3d; + ent->attributes[2].aDesc = a_355axis; + if(ent->_axis == 0) + ent->_axis = S_ENTITY_NULL; + ent->attributes[3].aDesc = a_356ref_direction; + if(ent->_ref_direction == 0) + ent->_ref_direction = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiAxis2_placement_3d(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiAxis2_placement_3d::get_os_typespec()) + SdaiAxis2_placement_3d; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiAxis2_placement_3d::get_os_typespec()) +// SdaiAxis2_placement_3d; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiAxis2_placement_3d; +} +#endif + +#ifdef __O3DB__ +void +SdaiAxis2_placement_3d::oodb_reInit () +{ eDesc = config_control_designe_axis2_placement_3d; + attributes [2].aDesc = a_355axis; + attributes [3].aDesc = a_356ref_direction; +} +#endif + +SdaiAxis2_placement_3d::SdaiAxis2_placement_3d (SCLP23(Application_instance) *se, int *addAttrs) : SdaiPlacement(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -27018,51 +51525,77 @@ SdaiAxis2_placement_3d::SdaiAxis2_placement_3d (STEPentity *se ) : SdaiPlacement eDesc = config_control_designe_axis2_placement_3d; - STEPattribute * a = new STEPattribute (*a_355axis, (STEPentityH *) &_axis); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_355axis, (SCLP23(Application_instance_ptr) *) &_axis); +#else + STEPattribute *a = new STEPattribute(*a_355axis, (SCLP23(Application_instance_ptr) *) &_axis); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_356ref_direction, (STEPentityH *) &_ref_direction); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_356ref_direction, (SCLP23(Application_instance_ptr) *) &_ref_direction); +#else + a = new STEPattribute(*a_356ref_direction, (SCLP23(Application_instance_ptr) *) &_ref_direction); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); + MakeDerived ("p"); } -SdaiDirectionH -SdaiAxis2_placement_3d::Axis() const - { return (SdaiDirectionH) _axis; } +const SdaiDirection_ptr +SdaiAxis2_placement_3d::axis_() const +{ + return (SdaiDirection_ptr) _axis; +} void -SdaiAxis2_placement_3d::Axis (SdaiDirectionH x) - { _axis = x; } +SdaiAxis2_placement_3d::axis_ (const SdaiDirection_ptr x) -SdaiDirectionH -SdaiAxis2_placement_3d::Ref_direction() const - { return (SdaiDirectionH) _ref_direction; } +{ + _axis = x; +} + +const SdaiDirection_ptr +SdaiAxis2_placement_3d::ref_direction_() const +{ + return (SdaiDirection_ptr) _ref_direction; +} void -SdaiAxis2_placement_3d::Ref_direction (SdaiDirectionH x) - { _ref_direction = x; } +SdaiAxis2_placement_3d::ref_direction_ (const SdaiDirection_ptr x) + +{ + _ref_direction = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY axis2_placement_3d +///////// END_ENTITY axis2_placement_3d -///////// ENTITY rational_b_spline_surface +///////// ENTITY rational_b_spline_surface EntityDescriptor *config_control_designe_rational_b_spline_surface =0; AttrDescriptor *a_358weights_data =0; -AttrDescriptor *a_359Dweights =0; +Derived_attribute *a_359Dweights =0; SdaiRational_b_spline_surface::SdaiRational_b_spline_surface( ) { @@ -27072,14 +51605,79 @@ SdaiRational_b_spline_surface::SdaiRational_b_spline_surface( ) eDesc = config_control_designe_rational_b_spline_surface; - STEPattribute * a = new STEPattribute (*a_358weights_data, &_weights_data); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_358weights_data, &_weights_data); +#else + STEPattribute *a = new STEPattribute(*a_358weights_data, &_weights_data); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); + MakeDerived ("u_upper"); + MakeDerived ("v_upper"); + MakeDerived ("control_points"); + MakeDerived ("weights"); } SdaiRational_b_spline_surface::SdaiRational_b_spline_surface (SdaiRational_b_spline_surface& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiRational_b_spline_surface::~SdaiRational_b_spline_surface () { } -SdaiRational_b_spline_surface::SdaiRational_b_spline_surface (STEPentity *se ) : SdaiB_spline_surface(se) + +#ifdef __OSTORE__ + +void +SdaiRational_b_spline_surface::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiRational_b_spline_surface: virtual access function." << G4endl; + SdaiRational_b_spline_surface_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiRational_b_spline_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiRational_b_spline_surface: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiRational_b_spline_surface *ent = (SdaiRational_b_spline_surface *)sent; +// SdaiRational_b_spline_surface *ent = (SdaiRational_b_spline_surface *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_rational_b_spline_surface; + ent->attributes[8].aDesc = a_358weights_data; +} + +SCLP23(Application_instance_ptr) +create_SdaiRational_b_spline_surface(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiRational_b_spline_surface::get_os_typespec()) + SdaiRational_b_spline_surface; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiRational_b_spline_surface::get_os_typespec()) +// SdaiRational_b_spline_surface; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiRational_b_spline_surface; +} +#endif + +#ifdef __O3DB__ +void +SdaiRational_b_spline_surface::oodb_reInit () +{ eDesc = config_control_designe_rational_b_spline_surface; + attributes [8].aDesc = a_358weights_data; +} +#endif + +SdaiRational_b_spline_surface::SdaiRational_b_spline_surface (SCLP23(Application_instance) *se, int *addAttrs) : SdaiB_spline_surface(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -27090,30 +51688,45 @@ SdaiRational_b_spline_surface::SdaiRational_b_spline_surface (STEPentity *se ) : eDesc = config_control_designe_rational_b_spline_surface; - STEPattribute * a = new STEPattribute (*a_358weights_data, &_weights_data); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_358weights_data, &_weights_data); +#else + STEPattribute *a = new STEPattribute(*a_358weights_data, &_weights_data); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); + MakeDerived ("u_upper"); + MakeDerived ("v_upper"); + MakeDerived ("control_points"); + MakeDerived ("weights"); } -const GenericAggregateH -SdaiRational_b_spline_surface::Weights_data() const - { return (GenericAggregateH) &_weights_data; } +const GenericAggregate_ptr +SdaiRational_b_spline_surface::weights_data_() const +{ + return (GenericAggregate_ptr) &_weights_data; +} void -SdaiRational_b_spline_surface::Weights_data (GenericAggregateH x) +SdaiRational_b_spline_surface::weights_data_ (const GenericAggregate_ptr x) + { _weights_data.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY rational_b_spline_surface +///////// END_ENTITY rational_b_spline_surface -///////// ENTITY configuration_design +///////// ENTITY configuration_design EntityDescriptor *config_control_designe_configuration_design =0; AttrDescriptor *a_360configuration =0; @@ -27125,18 +51738,90 @@ SdaiConfiguration_design::SdaiConfiguration_design( ) eDesc = config_control_designe_configuration_design; - STEPattribute * a = new STEPattribute (*a_360configuration, (STEPentityH *) &_configuration); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_360configuration, (SCLP23(Application_instance_ptr) *) &_configuration); +#else + STEPattribute *a = new STEPattribute(*a_360configuration, (SCLP23(Application_instance_ptr) *) &_configuration); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_361design, (STEPentityH *) &_design); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_361design, (SCLP23(Application_instance_ptr) *) &_design); +#else + a = new STEPattribute(*a_361design, (SCLP23(Application_instance_ptr) *) &_design); +#endif a -> set_null (); attributes.push (a); } SdaiConfiguration_design::SdaiConfiguration_design (SdaiConfiguration_design& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiConfiguration_design::~SdaiConfiguration_design () { } -SdaiConfiguration_design::SdaiConfiguration_design( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiConfiguration_design::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiConfiguration_design: virtual access function." << G4endl; + SdaiConfiguration_design_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiConfiguration_design_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiConfiguration_design: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiConfiguration_design *ent = (SdaiConfiguration_design *)sent; +// SdaiConfiguration_design *ent = (SdaiConfiguration_design *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_configuration_design; + ent->attributes[0].aDesc = a_360configuration; + if(ent->_configuration == 0) + ent->_configuration = S_ENTITY_NULL; + ent->attributes[1].aDesc = a_361design; + if(ent->_design == 0) + ent->_design = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiConfiguration_design(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiConfiguration_design::get_os_typespec()) + SdaiConfiguration_design; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiConfiguration_design::get_os_typespec()) +// SdaiConfiguration_design; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiConfiguration_design; +} +#endif + +#ifdef __O3DB__ +void +SdaiConfiguration_design::oodb_reInit () +{ eDesc = config_control_designe_configuration_design; + attributes [0].aDesc = a_360configuration; + attributes [1].aDesc = a_361design; +} +#endif + +SdaiConfiguration_design::SdaiConfiguration_design( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -27145,45 +51830,69 @@ SdaiConfiguration_design::SdaiConfiguration_design( STEPentity *se ) eDesc = config_control_designe_configuration_design; - STEPattribute * a = new STEPattribute (*a_360configuration, (STEPentityH *) &_configuration); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_360configuration, (SCLP23(Application_instance_ptr) *) &_configuration); +#else + STEPattribute *a = new STEPattribute(*a_360configuration, (SCLP23(Application_instance_ptr) *) &_configuration); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_361design, (STEPentityH *) &_design); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_361design, (SCLP23(Application_instance_ptr) *) &_design); +#else + a = new STEPattribute(*a_361design, (SCLP23(Application_instance_ptr) *) &_design); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiConfiguration_itemH -SdaiConfiguration_design::Configuration() const - { return (SdaiConfiguration_itemH) _configuration; } +const SdaiConfiguration_item_ptr +SdaiConfiguration_design::configuration_() const +{ + return (SdaiConfiguration_item_ptr) _configuration; +} void -SdaiConfiguration_design::Configuration (SdaiConfiguration_itemH x) - { _configuration = x; } +SdaiConfiguration_design::configuration_ (const SdaiConfiguration_item_ptr x) -SdaiProduct_definition_formationH -SdaiConfiguration_design::Design() const - { return (SdaiProduct_definition_formationH) _design; } +{ + _configuration = x; +} + +const SdaiProduct_definition_formation_ptr +SdaiConfiguration_design::design_() const +{ + return (SdaiProduct_definition_formation_ptr) _design; +} void -SdaiConfiguration_design::Design (SdaiProduct_definition_formationH x) - { _design = x; } +SdaiConfiguration_design::design_ (const SdaiProduct_definition_formation_ptr x) -///////// END_ENTITY configuration_design +{ + _design = x; +} + +///////// END_ENTITY configuration_design -///////// ENTITY design_context +///////// ENTITY design_context EntityDescriptor *config_control_designe_design_context =0; SdaiDesign_context::SdaiDesign_context( ) @@ -27196,9 +51905,61 @@ SdaiDesign_context::SdaiDesign_context( ) eDesc = config_control_designe_design_context; } SdaiDesign_context::SdaiDesign_context (SdaiDesign_context& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiDesign_context::~SdaiDesign_context () { } -SdaiDesign_context::SdaiDesign_context (STEPentity *se ) : SdaiProduct_definition_context(se) + +#ifdef __OSTORE__ + +void +SdaiDesign_context::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDesign_context: virtual access function." << G4endl; + SdaiDesign_context_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiDesign_context_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDesign_context: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiDesign_context *ent = (SdaiDesign_context *)sent; +// SdaiDesign_context *ent = (SdaiDesign_context *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_design_context; +} + +SCLP23(Application_instance_ptr) +create_SdaiDesign_context(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiDesign_context::get_os_typespec()) + SdaiDesign_context; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiDesign_context::get_os_typespec()) +// SdaiDesign_context; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiDesign_context; +} +#endif + +#ifdef __O3DB__ +void +SdaiDesign_context::oodb_reInit () +{ eDesc = config_control_designe_design_context; +} +#endif + +SdaiDesign_context::SdaiDesign_context (SCLP23(Application_instance) *se, int *addAttrs) : SdaiProduct_definition_context(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -27212,10 +51973,10 @@ SdaiDesign_context::SdaiDesign_context (STEPentity *se ) : SdaiProduct_definitio /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY design_context +///////// END_ENTITY design_context -///////// ENTITY product_definition +///////// ENTITY product_definition EntityDescriptor *config_control_designe_product_definition =0; AttrDescriptor *a_362id =0; @@ -27229,26 +51990,114 @@ SdaiProduct_definition::SdaiProduct_definition( ) eDesc = config_control_designe_product_definition; - STEPattribute * a = new STEPattribute (*a_362id, &_id); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_362id, &_id); +#else + STEPattribute *a = new STEPattribute(*a_362id, &_id); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_363description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_363description, &_description); +#else + a = new STEPattribute(*a_363description, &_description); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_364formation, (STEPentityH *) &_formation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_364formation, (SCLP23(Application_instance_ptr) *) &_formation); +#else + a = new STEPattribute(*a_364formation, (SCLP23(Application_instance_ptr) *) &_formation); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_365frame_of_reference, (STEPentityH *) &_frame_of_reference); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_365frame_of_reference, (SCLP23(Application_instance_ptr) *) &_frame_of_reference); +#else + a = new STEPattribute(*a_365frame_of_reference, (SCLP23(Application_instance_ptr) *) &_frame_of_reference); +#endif a -> set_null (); attributes.push (a); } SdaiProduct_definition::SdaiProduct_definition (SdaiProduct_definition& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiProduct_definition::~SdaiProduct_definition () { } -SdaiProduct_definition::SdaiProduct_definition( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiProduct_definition::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_definition: virtual access function." << G4endl; + SdaiProduct_definition_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiProduct_definition_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_definition: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiProduct_definition *ent = (SdaiProduct_definition *)sent; +// SdaiProduct_definition *ent = (SdaiProduct_definition *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_product_definition; + ent->attributes[0].aDesc = a_362id; + ent->attributes[1].aDesc = a_363description; + ent->attributes[2].aDesc = a_364formation; + if(ent->_formation == 0) + ent->_formation = S_ENTITY_NULL; + ent->attributes[3].aDesc = a_365frame_of_reference; + if(ent->_frame_of_reference == 0) + ent->_frame_of_reference = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiProduct_definition(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiProduct_definition::get_os_typespec()) + SdaiProduct_definition; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiProduct_definition::get_os_typespec()) +// SdaiProduct_definition; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiProduct_definition; +} +#endif + +#ifdef __O3DB__ +void +SdaiProduct_definition::oodb_reInit () +{ eDesc = config_control_designe_product_definition; + attributes [0].aDesc = a_362id; + attributes [1].aDesc = a_363description; + attributes [2].aDesc = a_364formation; + attributes [3].aDesc = a_365frame_of_reference; +} +#endif + +SdaiProduct_definition::SdaiProduct_definition( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -27257,79 +52106,127 @@ SdaiProduct_definition::SdaiProduct_definition( STEPentity *se ) eDesc = config_control_designe_product_definition; - STEPattribute * a = new STEPattribute (*a_362id, &_id); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_362id, &_id); +#else + STEPattribute *a = new STEPattribute(*a_362id, &_id); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_363description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_363description, &_description); +#else + a = new STEPattribute(*a_363description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_364formation, (STEPentityH *) &_formation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_364formation, (SCLP23(Application_instance_ptr) *) &_formation); +#else + a = new STEPattribute(*a_364formation, (SCLP23(Application_instance_ptr) *) &_formation); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_365frame_of_reference, (STEPentityH *) &_frame_of_reference); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_365frame_of_reference, (SCLP23(Application_instance_ptr) *) &_frame_of_reference); +#else + a = new STEPattribute(*a_365frame_of_reference, (SCLP23(Application_instance_ptr) *) &_frame_of_reference); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiIdentifier -SdaiProduct_definition::Id() const - { return (const SdaiIdentifier) _id; } +SdaiProduct_definition::id_() const +{ + return (SdaiIdentifier) _id; +} void -SdaiProduct_definition::Id (const char * x) - { _id = x; } +SdaiProduct_definition::id_ (const SdaiIdentifier x) + +{ + _id = x; +} const SdaiText -SdaiProduct_definition::Description() const - { return (const SdaiText) _description; } +SdaiProduct_definition::description_() const +{ + return (SdaiText) _description; +} void -SdaiProduct_definition::Description (const char * x) - { _description = x; } +SdaiProduct_definition::description_ (const SdaiText x) -SdaiProduct_definition_formationH -SdaiProduct_definition::Formation() const - { return (SdaiProduct_definition_formationH) _formation; } +{ + _description = x; +} + +const SdaiProduct_definition_formation_ptr +SdaiProduct_definition::formation_() const +{ + return (SdaiProduct_definition_formation_ptr) _formation; +} void -SdaiProduct_definition::Formation (SdaiProduct_definition_formationH x) - { _formation = x; } +SdaiProduct_definition::formation_ (const SdaiProduct_definition_formation_ptr x) -SdaiProduct_definition_contextH -SdaiProduct_definition::Frame_of_reference() const - { return (SdaiProduct_definition_contextH) _frame_of_reference; } +{ + _formation = x; +} + +const SdaiProduct_definition_context_ptr +SdaiProduct_definition::frame_of_reference_() const +{ + return (SdaiProduct_definition_context_ptr) _frame_of_reference; +} void -SdaiProduct_definition::Frame_of_reference (SdaiProduct_definition_contextH x) - { _frame_of_reference = x; } +SdaiProduct_definition::frame_of_reference_ (const SdaiProduct_definition_context_ptr x) -///////// END_ENTITY product_definition +{ + _frame_of_reference = x; +} + +///////// END_ENTITY product_definition -///////// ENTITY product_definition_with_associated_documents +///////// ENTITY product_definition_with_associated_documents EntityDescriptor *config_control_designe_product_definition_with_associated_documents =0; AttrDescriptor *a_366documentation_ids =0; @@ -27342,14 +52239,74 @@ SdaiProduct_definition_with_associated_documents::SdaiProduct_definition_with_as eDesc = config_control_designe_product_definition_with_associated_documents; - STEPattribute * a = new STEPattribute (*a_366documentation_ids, &_documentation_ids); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_366documentation_ids, &_documentation_ids); +#else + STEPattribute *a = new STEPattribute(*a_366documentation_ids, &_documentation_ids); +#endif a -> set_null (); attributes.push (a); } SdaiProduct_definition_with_associated_documents::SdaiProduct_definition_with_associated_documents (SdaiProduct_definition_with_associated_documents& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiProduct_definition_with_associated_documents::~SdaiProduct_definition_with_associated_documents () { } -SdaiProduct_definition_with_associated_documents::SdaiProduct_definition_with_associated_documents (STEPentity *se ) : SdaiProduct_definition(se) + +#ifdef __OSTORE__ + +void +SdaiProduct_definition_with_associated_documents::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_definition_with_associated_documents: virtual access function." << G4endl; + SdaiProduct_definition_with_associated_documents_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiProduct_definition_with_associated_documents_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_definition_with_associated_documents: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiProduct_definition_with_associated_documents *ent = (SdaiProduct_definition_with_associated_documents *)sent; +// SdaiProduct_definition_with_associated_documents *ent = (SdaiProduct_definition_with_associated_documents *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_product_definition_with_associated_documents; + ent->attributes[4].aDesc = a_366documentation_ids; +} + +SCLP23(Application_instance_ptr) +create_SdaiProduct_definition_with_associated_documents(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiProduct_definition_with_associated_documents::get_os_typespec()) + SdaiProduct_definition_with_associated_documents; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiProduct_definition_with_associated_documents::get_os_typespec()) +// SdaiProduct_definition_with_associated_documents; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiProduct_definition_with_associated_documents; +} +#endif + +#ifdef __O3DB__ +void +SdaiProduct_definition_with_associated_documents::oodb_reInit () +{ eDesc = config_control_designe_product_definition_with_associated_documents; + attributes [4].aDesc = a_366documentation_ids; +} +#endif + +SdaiProduct_definition_with_associated_documents::SdaiProduct_definition_with_associated_documents (SCLP23(Application_instance) *se, int *addAttrs) : SdaiProduct_definition(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -27360,30 +52317,40 @@ SdaiProduct_definition_with_associated_documents::SdaiProduct_definition_with_as eDesc = config_control_designe_product_definition_with_associated_documents; - STEPattribute * a = new STEPattribute (*a_366documentation_ids, &_documentation_ids); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_366documentation_ids, &_documentation_ids); +#else + STEPattribute *a = new STEPattribute(*a_366documentation_ids, &_documentation_ids); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -const EntityAggregateH -SdaiProduct_definition_with_associated_documents::Documentation_ids() const - { return (EntityAggregateH) &_documentation_ids; } +const EntityAggregate_ptr +SdaiProduct_definition_with_associated_documents::documentation_ids_() const +{ + return (EntityAggregate_ptr) &_documentation_ids; +} void -SdaiProduct_definition_with_associated_documents::Documentation_ids (EntityAggregateH x) +SdaiProduct_definition_with_associated_documents::documentation_ids_ (const EntityAggregate_ptr x) + { _documentation_ids.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY product_definition_with_associated_documents +///////// END_ENTITY product_definition_with_associated_documents -///////// ENTITY organization +///////// ENTITY organization EntityDescriptor *config_control_designe_organization =0; AttrDescriptor *a_367id =0; @@ -27396,22 +52363,98 @@ SdaiOrganization::SdaiOrganization( ) eDesc = config_control_designe_organization; - STEPattribute * a = new STEPattribute (*a_367id, &_id); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_367id, &_id); +#else + STEPattribute *a = new STEPattribute(*a_367id, &_id); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_368name, &_name); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_368name, &_name); +#else + a = new STEPattribute(*a_368name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_369description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_369description, &_description); +#else + a = new STEPattribute(*a_369description, &_description); +#endif a -> set_null (); attributes.push (a); } SdaiOrganization::SdaiOrganization (SdaiOrganization& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiOrganization::~SdaiOrganization () { } -SdaiOrganization::SdaiOrganization( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiOrganization::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOrganization: virtual access function." << G4endl; + SdaiOrganization_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiOrganization_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOrganization: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiOrganization *ent = (SdaiOrganization *)sent; +// SdaiOrganization *ent = (SdaiOrganization *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_organization; + ent->attributes[0].aDesc = a_367id; + ent->attributes[1].aDesc = a_368name; + ent->attributes[2].aDesc = a_369description; +} + +SCLP23(Application_instance_ptr) +create_SdaiOrganization(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiOrganization::get_os_typespec()) + SdaiOrganization; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiOrganization::get_os_typespec()) +// SdaiOrganization; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiOrganization; +} +#endif + +#ifdef __O3DB__ +void +SdaiOrganization::oodb_reInit () +{ eDesc = config_control_designe_organization; + attributes [0].aDesc = a_367id; + attributes [1].aDesc = a_368name; + attributes [2].aDesc = a_369description; +} +#endif + +SdaiOrganization::SdaiOrganization( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -27420,62 +52463,98 @@ SdaiOrganization::SdaiOrganization( STEPentity *se ) eDesc = config_control_designe_organization; - STEPattribute * a = new STEPattribute (*a_367id, &_id); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_367id, &_id); +#else + STEPattribute *a = new STEPattribute(*a_367id, &_id); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_368name, &_name); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_368name, &_name); +#else + a = new STEPattribute(*a_368name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_369description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_369description, &_description); +#else + a = new STEPattribute(*a_369description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiIdentifier -SdaiOrganization::Id() const - { return (const SdaiIdentifier) _id; } +SdaiOrganization::id_() const +{ + return (SdaiIdentifier) _id; +} void -SdaiOrganization::Id (const char * x) - { _id = x; } +SdaiOrganization::id_ (const SdaiIdentifier x) + +{ + _id = x; +} const SdaiLabel -SdaiOrganization::Name() const - { return (const SdaiLabel) _name; } +SdaiOrganization::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiOrganization::Name (const char * x) - { _name = x; } +SdaiOrganization::name_ (const SdaiLabel x) + +{ + _name = x; +} const SdaiText -SdaiOrganization::Description() const - { return (const SdaiText) _description; } +SdaiOrganization::description_() const +{ + return (SdaiText) _description; +} void -SdaiOrganization::Description (const char * x) - { _description = x; } +SdaiOrganization::description_ (const SdaiText x) -///////// END_ENTITY organization +{ + _description = x; +} + +///////// END_ENTITY organization -///////// ENTITY cc_design_certification +///////// ENTITY cc_design_certification EntityDescriptor *config_control_designe_cc_design_certification =0; AttrDescriptor *a_370items =0; @@ -27488,14 +52567,74 @@ SdaiCc_design_certification::SdaiCc_design_certification( ) eDesc = config_control_designe_cc_design_certification; - STEPattribute * a = new STEPattribute (*a_370items, &_items); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_370items, &_items); +#else + STEPattribute *a = new STEPattribute(*a_370items, &_items); +#endif a -> set_null (); attributes.push (a); } SdaiCc_design_certification::SdaiCc_design_certification (SdaiCc_design_certification& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiCc_design_certification::~SdaiCc_design_certification () { } -SdaiCc_design_certification::SdaiCc_design_certification (STEPentity *se ) : SdaiCertification_assignment(se) + +#ifdef __OSTORE__ + +void +SdaiCc_design_certification::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCc_design_certification: virtual access function." << G4endl; + SdaiCc_design_certification_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiCc_design_certification_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCc_design_certification: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiCc_design_certification *ent = (SdaiCc_design_certification *)sent; +// SdaiCc_design_certification *ent = (SdaiCc_design_certification *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_cc_design_certification; + ent->attributes[1].aDesc = a_370items; +} + +SCLP23(Application_instance_ptr) +create_SdaiCc_design_certification(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiCc_design_certification::get_os_typespec()) + SdaiCc_design_certification; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiCc_design_certification::get_os_typespec()) +// SdaiCc_design_certification; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiCc_design_certification; +} +#endif + +#ifdef __O3DB__ +void +SdaiCc_design_certification::oodb_reInit () +{ eDesc = config_control_designe_cc_design_certification; + attributes [1].aDesc = a_370items; +} +#endif + +SdaiCc_design_certification::SdaiCc_design_certification (SCLP23(Application_instance) *se, int *addAttrs) : SdaiCertification_assignment(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -27506,30 +52645,40 @@ SdaiCc_design_certification::SdaiCc_design_certification (STEPentity *se ) : Sda eDesc = config_control_designe_cc_design_certification; - STEPattribute * a = new STEPattribute (*a_370items, &_items); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_370items, &_items); +#else + STEPattribute *a = new STEPattribute(*a_370items, &_items); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -const SdaiCertified_itemsH -SdaiCc_design_certification::Items() const - { return (SdaiCertified_itemsH) &_items; } +const SdaiCertified_items_ptr +SdaiCc_design_certification::items_() const +{ + return (SdaiCertified_items_ptr) &_items; +} void -SdaiCc_design_certification::Items (SdaiCertified_itemsH x) +SdaiCc_design_certification::items_ (const SdaiCertified_items_ptr x) + { _items.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY cc_design_certification +///////// END_ENTITY cc_design_certification -///////// ENTITY b_spline_surface_with_knots +///////// ENTITY b_spline_surface_with_knots EntityDescriptor *config_control_designe_b_spline_surface_with_knots =0; AttrDescriptor *a_371u_multiplicities =0; @@ -27537,8 +52686,8 @@ AttrDescriptor *a_372v_multiplicities =0; AttrDescriptor *a_373u_knots =0; AttrDescriptor *a_374v_knots =0; AttrDescriptor *a_375knot_spec =0; -AttrDescriptor *a_376Dknot_u_upper =0; -AttrDescriptor *a_377Dknot_v_upper =0; +Derived_attribute *a_376Dknot_u_upper =0; +Derived_attribute *a_377Dknot_v_upper =0; SdaiB_spline_surface_with_knots::SdaiB_spline_surface_with_knots( ) { @@ -27548,30 +52697,128 @@ SdaiB_spline_surface_with_knots::SdaiB_spline_surface_with_knots( ) eDesc = config_control_designe_b_spline_surface_with_knots; - STEPattribute * a = new STEPattribute (*a_371u_multiplicities, &_u_multiplicities); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_371u_multiplicities, &_u_multiplicities); +#else + STEPattribute *a = new STEPattribute(*a_371u_multiplicities, &_u_multiplicities); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_372v_multiplicities, &_v_multiplicities); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_372v_multiplicities, &_v_multiplicities); +#else + a = new STEPattribute(*a_372v_multiplicities, &_v_multiplicities); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_373u_knots, &_u_knots); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_373u_knots, &_u_knots); +#else + a = new STEPattribute(*a_373u_knots, &_u_knots); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_374v_knots, &_v_knots); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_374v_knots, &_v_knots); +#else + a = new STEPattribute(*a_374v_knots, &_v_knots); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_375knot_spec, &_knot_spec); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_375knot_spec, &_knot_spec); +#else + a = new STEPattribute(*a_375knot_spec, &_knot_spec); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); + MakeDerived ("u_upper"); + MakeDerived ("v_upper"); + MakeDerived ("control_points"); + MakeDerived ("knot_u_upper"); + MakeDerived ("knot_v_upper"); } SdaiB_spline_surface_with_knots::SdaiB_spline_surface_with_knots (SdaiB_spline_surface_with_knots& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiB_spline_surface_with_knots::~SdaiB_spline_surface_with_knots () { } -SdaiB_spline_surface_with_knots::SdaiB_spline_surface_with_knots (STEPentity *se ) : SdaiB_spline_surface(se) + +#ifdef __OSTORE__ + +void +SdaiB_spline_surface_with_knots::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiB_spline_surface_with_knots: virtual access function." << G4endl; + SdaiB_spline_surface_with_knots_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiB_spline_surface_with_knots_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiB_spline_surface_with_knots: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiB_spline_surface_with_knots *ent = (SdaiB_spline_surface_with_knots *)sent; +// SdaiB_spline_surface_with_knots *ent = (SdaiB_spline_surface_with_knots *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_b_spline_surface_with_knots; + ent->attributes[8].aDesc = a_371u_multiplicities; + ent->attributes[9].aDesc = a_372v_multiplicities; + ent->attributes[10].aDesc = a_373u_knots; + ent->attributes[11].aDesc = a_374v_knots; + ent->attributes[12].aDesc = a_375knot_spec; +} + +SCLP23(Application_instance_ptr) +create_SdaiB_spline_surface_with_knots(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiB_spline_surface_with_knots::get_os_typespec()) + SdaiB_spline_surface_with_knots; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiB_spline_surface_with_knots::get_os_typespec()) +// SdaiB_spline_surface_with_knots; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiB_spline_surface_with_knots; +} +#endif + +#ifdef __O3DB__ +void +SdaiB_spline_surface_with_knots::oodb_reInit () +{ eDesc = config_control_designe_b_spline_surface_with_knots; + attributes [8].aDesc = a_371u_multiplicities; + attributes [9].aDesc = a_372v_multiplicities; + attributes [10].aDesc = a_373u_knots; + attributes [11].aDesc = a_374v_knots; + attributes [12].aDesc = a_375knot_spec; +} +#endif + +SdaiB_spline_surface_with_knots::SdaiB_spline_surface_with_knots (SCLP23(Application_instance) *se, int *addAttrs) : SdaiB_spline_surface(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -27582,98 +52829,156 @@ SdaiB_spline_surface_with_knots::SdaiB_spline_surface_with_knots (STEPentity *se eDesc = config_control_designe_b_spline_surface_with_knots; - STEPattribute * a = new STEPattribute (*a_371u_multiplicities, &_u_multiplicities); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_371u_multiplicities, &_u_multiplicities); +#else + STEPattribute *a = new STEPattribute(*a_371u_multiplicities, &_u_multiplicities); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_372v_multiplicities, &_v_multiplicities); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_372v_multiplicities, &_v_multiplicities); +#else + a = new STEPattribute(*a_372v_multiplicities, &_v_multiplicities); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_373u_knots, &_u_knots); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_373u_knots, &_u_knots); +#else + a = new STEPattribute(*a_373u_knots, &_u_knots); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_374v_knots, &_v_knots); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_374v_knots, &_v_knots); +#else + a = new STEPattribute(*a_374v_knots, &_v_knots); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_375knot_spec, &_knot_spec); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_375knot_spec, &_knot_spec); +#else + a = new STEPattribute(*a_375knot_spec, &_knot_spec); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); + MakeDerived ("u_upper"); + MakeDerived ("v_upper"); + MakeDerived ("control_points"); + MakeDerived ("knot_u_upper"); + MakeDerived ("knot_v_upper"); } -const IntAggregateH -SdaiB_spline_surface_with_knots::U_multiplicities() const - { return (IntAggregateH) &_u_multiplicities; } +const IntAggregate_ptr +SdaiB_spline_surface_with_knots::u_multiplicities_() const +{ + return (IntAggregate_ptr) &_u_multiplicities; +} void -SdaiB_spline_surface_with_knots::U_multiplicities (IntAggregateH x) +SdaiB_spline_surface_with_knots::u_multiplicities_ (const IntAggregate_ptr x) + { _u_multiplicities.ShallowCopy (*x); } -const IntAggregateH -SdaiB_spline_surface_with_knots::V_multiplicities() const - { return (IntAggregateH) &_v_multiplicities; } +const IntAggregate_ptr +SdaiB_spline_surface_with_knots::v_multiplicities_() const +{ + return (IntAggregate_ptr) &_v_multiplicities; +} void -SdaiB_spline_surface_with_knots::V_multiplicities (IntAggregateH x) +SdaiB_spline_surface_with_knots::v_multiplicities_ (const IntAggregate_ptr x) + { _v_multiplicities.ShallowCopy (*x); } -const RealAggregateH -SdaiB_spline_surface_with_knots::U_knots() const - { return (RealAggregateH) &_u_knots; } +const RealAggregate_ptr +SdaiB_spline_surface_with_knots::u_knots_() const +{ + return (RealAggregate_ptr) &_u_knots; +} void -SdaiB_spline_surface_with_knots::U_knots (RealAggregateH x) +SdaiB_spline_surface_with_knots::u_knots_ (const RealAggregate_ptr x) + { _u_knots.ShallowCopy (*x); } -const RealAggregateH -SdaiB_spline_surface_with_knots::V_knots() const - { return (RealAggregateH) &_v_knots; } +const RealAggregate_ptr +SdaiB_spline_surface_with_knots::v_knots_() const +{ + return (RealAggregate_ptr) &_v_knots; +} void -SdaiB_spline_surface_with_knots::V_knots (RealAggregateH x) +SdaiB_spline_surface_with_knots::v_knots_ (const RealAggregate_ptr x) + { _v_knots.ShallowCopy (*x); } -const sdaiKnot_type -SdaiB_spline_surface_with_knots::Knot_spec() const - { return (sdaiKnot_type) _knot_spec; } +const SdaiKnot_type_var +SdaiB_spline_surface_with_knots::knot_spec_() const +{ + return (Knot_type) _knot_spec; +} void -SdaiB_spline_surface_with_knots::Knot_spec (sdaiKnot_type x) - { _knot_spec.put (x); } +SdaiB_spline_surface_with_knots::knot_spec_ (const SdaiKnot_type_var x) + +{ + _knot_spec.put (x); +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY b_spline_surface_with_knots +///////// END_ENTITY b_spline_surface_with_knots -///////// ENTITY certification_type +///////// ENTITY certification_type EntityDescriptor *config_control_designe_certification_type =0; AttrDescriptor *a_378description =0; @@ -27684,14 +52989,74 @@ SdaiCertification_type::SdaiCertification_type( ) eDesc = config_control_designe_certification_type; - STEPattribute * a = new STEPattribute (*a_378description, &_description); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_378description, &_description); +#else + STEPattribute *a = new STEPattribute(*a_378description, &_description); +#endif a -> set_null (); attributes.push (a); } SdaiCertification_type::SdaiCertification_type (SdaiCertification_type& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiCertification_type::~SdaiCertification_type () { } -SdaiCertification_type::SdaiCertification_type( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiCertification_type::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCertification_type: virtual access function." << G4endl; + SdaiCertification_type_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiCertification_type_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCertification_type: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiCertification_type *ent = (SdaiCertification_type *)sent; +// SdaiCertification_type *ent = (SdaiCertification_type *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_certification_type; + ent->attributes[0].aDesc = a_378description; +} + +SCLP23(Application_instance_ptr) +create_SdaiCertification_type(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiCertification_type::get_os_typespec()) + SdaiCertification_type; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiCertification_type::get_os_typespec()) +// SdaiCertification_type; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiCertification_type; +} +#endif + +#ifdef __O3DB__ +void +SdaiCertification_type::oodb_reInit () +{ eDesc = config_control_designe_certification_type; + attributes [0].aDesc = a_378description; +} +#endif + +SdaiCertification_type::SdaiCertification_type( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -27700,33 +53065,45 @@ SdaiCertification_type::SdaiCertification_type( STEPentity *se ) eDesc = config_control_designe_certification_type; - STEPattribute * a = new STEPattribute (*a_378description, &_description); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_378description, &_description); +#else + STEPattribute *a = new STEPattribute(*a_378description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiCertification_type::Description() const - { return (const SdaiLabel) _description; } +SdaiCertification_type::description_() const +{ + return (SdaiLabel) _description; +} void -SdaiCertification_type::Description (const char * x) - { _description = x; } +SdaiCertification_type::description_ (const SdaiLabel x) -///////// END_ENTITY certification_type +{ + _description = x; +} + +///////// END_ENTITY certification_type -///////// ENTITY oriented_path +///////// ENTITY oriented_path EntityDescriptor *config_control_designe_oriented_path =0; AttrDescriptor *a_379path_element =0; AttrDescriptor *a_380orientation =0; -AttrDescriptor *a_381Dpath_edge_list =0; +Derived_attribute *a_381Dpath_edge_list =0; SdaiOriented_path::SdaiOriented_path( ) { @@ -27736,19 +53113,89 @@ SdaiOriented_path::SdaiOriented_path( ) eDesc = config_control_designe_oriented_path; - STEPattribute * a = new STEPattribute (*a_379path_element, (STEPentityH *) &_path_element); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_379path_element, (SCLP23(Application_instance_ptr) *) &_path_element); +#else + STEPattribute *a = new STEPattribute(*a_379path_element, (SCLP23(Application_instance_ptr) *) &_path_element); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_380orientation, &_orientation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_380orientation, &_orientation); +#else + a = new STEPattribute(*a_380orientation, &_orientation); +#endif a -> set_null (); attributes.push (a); MakeDerived ("edge_list"); } SdaiOriented_path::SdaiOriented_path (SdaiOriented_path& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiOriented_path::~SdaiOriented_path () { } -SdaiOriented_path::SdaiOriented_path (STEPentity *se ) : SdaiPath(se) + +#ifdef __OSTORE__ + +void +SdaiOriented_path::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOriented_path: virtual access function." << G4endl; + SdaiOriented_path_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiOriented_path_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOriented_path: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiOriented_path *ent = (SdaiOriented_path *)sent; +// SdaiOriented_path *ent = (SdaiOriented_path *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_oriented_path; + ent->attributes[2].aDesc = a_379path_element; + if(ent->_path_element == 0) + ent->_path_element = S_ENTITY_NULL; + ent->attributes[3].aDesc = a_380orientation; +} + +SCLP23(Application_instance_ptr) +create_SdaiOriented_path(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiOriented_path::get_os_typespec()) + SdaiOriented_path; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiOriented_path::get_os_typespec()) +// SdaiOriented_path; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiOriented_path; +} +#endif + +#ifdef __O3DB__ +void +SdaiOriented_path::oodb_reInit () +{ eDesc = config_control_designe_oriented_path; + attributes [2].aDesc = a_379path_element; + attributes [3].aDesc = a_380orientation; +} +#endif + +SdaiOriented_path::SdaiOriented_path (SCLP23(Application_instance) *se, int *addAttrs) : SdaiPath(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -27759,48 +53206,72 @@ SdaiOriented_path::SdaiOriented_path (STEPentity *se ) : SdaiPath(se) eDesc = config_control_designe_oriented_path; - STEPattribute * a = new STEPattribute (*a_379path_element, (STEPentityH *) &_path_element); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_379path_element, (SCLP23(Application_instance_ptr) *) &_path_element); +#else + STEPattribute *a = new STEPattribute(*a_379path_element, (SCLP23(Application_instance_ptr) *) &_path_element); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_380orientation, &_orientation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_380orientation, &_orientation); +#else + a = new STEPattribute(*a_380orientation, &_orientation); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); MakeDerived ("edge_list"); } -SdaiPathH -SdaiOriented_path::Path_element() const - { return (SdaiPathH) _path_element; } +const SdaiPath_ptr +SdaiOriented_path::path_element_() const +{ + return (SdaiPath_ptr) _path_element; +} void -SdaiOriented_path::Path_element (SdaiPathH x) - { _path_element = x; } +SdaiOriented_path::path_element_ (const SdaiPath_ptr x) -const BOOLEAN -SdaiOriented_path::Orientation() const - { return (LOGICAL) _orientation; } +{ + _path_element = x; +} + +const SCLBOOL(Bool) +SdaiOriented_path::orientation_() const +{ + return (SCLBOOL(Bool)) _orientation; +} void -SdaiOriented_path::Orientation (BOOLEAN x) - { _orientation.put (x); } +SdaiOriented_path::orientation_ (const SCLBOOL(Bool) x) + +{ + _orientation.put (x); +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY oriented_path +///////// END_ENTITY oriented_path -///////// ENTITY security_classification +///////// ENTITY security_classification EntityDescriptor *config_control_designe_security_classification =0; AttrDescriptor *a_382name =0; @@ -27813,22 +53284,100 @@ SdaiSecurity_classification::SdaiSecurity_classification( ) eDesc = config_control_designe_security_classification; - STEPattribute * a = new STEPattribute (*a_382name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_382name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_382name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_383purpose, &_purpose); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_383purpose, &_purpose); +#else + a = new STEPattribute(*a_383purpose, &_purpose); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_384security_level, (STEPentityH *) &_security_level); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_384security_level, (SCLP23(Application_instance_ptr) *) &_security_level); +#else + a = new STEPattribute(*a_384security_level, (SCLP23(Application_instance_ptr) *) &_security_level); +#endif a -> set_null (); attributes.push (a); } SdaiSecurity_classification::SdaiSecurity_classification (SdaiSecurity_classification& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiSecurity_classification::~SdaiSecurity_classification () { } -SdaiSecurity_classification::SdaiSecurity_classification( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiSecurity_classification::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSecurity_classification: virtual access function." << G4endl; + SdaiSecurity_classification_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiSecurity_classification_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSecurity_classification: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiSecurity_classification *ent = (SdaiSecurity_classification *)sent; +// SdaiSecurity_classification *ent = (SdaiSecurity_classification *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_security_classification; + ent->attributes[0].aDesc = a_382name; + ent->attributes[1].aDesc = a_383purpose; + ent->attributes[2].aDesc = a_384security_level; + if(ent->_security_level == 0) + ent->_security_level = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiSecurity_classification(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiSecurity_classification::get_os_typespec()) + SdaiSecurity_classification; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiSecurity_classification::get_os_typespec()) +// SdaiSecurity_classification; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiSecurity_classification; +} +#endif + +#ifdef __O3DB__ +void +SdaiSecurity_classification::oodb_reInit () +{ eDesc = config_control_designe_security_classification; + attributes [0].aDesc = a_382name; + attributes [1].aDesc = a_383purpose; + attributes [2].aDesc = a_384security_level; +} +#endif + +SdaiSecurity_classification::SdaiSecurity_classification( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -27837,62 +53386,98 @@ SdaiSecurity_classification::SdaiSecurity_classification( STEPentity *se ) eDesc = config_control_designe_security_classification; - STEPattribute * a = new STEPattribute (*a_382name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_382name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_382name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_383purpose, &_purpose); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_383purpose, &_purpose); +#else + a = new STEPattribute(*a_383purpose, &_purpose); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_384security_level, (STEPentityH *) &_security_level); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_384security_level, (SCLP23(Application_instance_ptr) *) &_security_level); +#else + a = new STEPattribute(*a_384security_level, (SCLP23(Application_instance_ptr) *) &_security_level); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiSecurity_classification::Name() const - { return (const SdaiLabel) _name; } +SdaiSecurity_classification::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiSecurity_classification::Name (const char * x) - { _name = x; } +SdaiSecurity_classification::name_ (const SdaiLabel x) + +{ + _name = x; +} const SdaiText -SdaiSecurity_classification::Purpose() const - { return (const SdaiText) _purpose; } +SdaiSecurity_classification::purpose_() const +{ + return (SdaiText) _purpose; +} void -SdaiSecurity_classification::Purpose (const char * x) - { _purpose = x; } +SdaiSecurity_classification::purpose_ (const SdaiText x) -SdaiSecurity_classification_levelH -SdaiSecurity_classification::Security_level() const - { return (SdaiSecurity_classification_levelH) _security_level; } +{ + _purpose = x; +} + +const SdaiSecurity_classification_level_ptr +SdaiSecurity_classification::security_level_() const +{ + return (SdaiSecurity_classification_level_ptr) _security_level; +} void -SdaiSecurity_classification::Security_level (SdaiSecurity_classification_levelH x) - { _security_level = x; } +SdaiSecurity_classification::security_level_ (const SdaiSecurity_classification_level_ptr x) -///////// END_ENTITY security_classification +{ + _security_level = x; +} + +///////// END_ENTITY security_classification -///////// ENTITY vertex_loop +///////// ENTITY vertex_loop EntityDescriptor *config_control_designe_vertex_loop =0; AttrDescriptor *a_385loop_vertex =0; @@ -27905,14 +53490,76 @@ SdaiVertex_loop::SdaiVertex_loop( ) eDesc = config_control_designe_vertex_loop; - STEPattribute * a = new STEPattribute (*a_385loop_vertex, (STEPentityH *) &_loop_vertex); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_385loop_vertex, (SCLP23(Application_instance_ptr) *) &_loop_vertex); +#else + STEPattribute *a = new STEPattribute(*a_385loop_vertex, (SCLP23(Application_instance_ptr) *) &_loop_vertex); +#endif a -> set_null (); attributes.push (a); } SdaiVertex_loop::SdaiVertex_loop (SdaiVertex_loop& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiVertex_loop::~SdaiVertex_loop () { } -SdaiVertex_loop::SdaiVertex_loop (STEPentity *se ) : SdaiLoop(se) + +#ifdef __OSTORE__ + +void +SdaiVertex_loop::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiVertex_loop: virtual access function." << G4endl; + SdaiVertex_loop_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiVertex_loop_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiVertex_loop: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiVertex_loop *ent = (SdaiVertex_loop *)sent; +// SdaiVertex_loop *ent = (SdaiVertex_loop *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_vertex_loop; + ent->attributes[1].aDesc = a_385loop_vertex; + if(ent->_loop_vertex == 0) + ent->_loop_vertex = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiVertex_loop(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiVertex_loop::get_os_typespec()) + SdaiVertex_loop; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiVertex_loop::get_os_typespec()) +// SdaiVertex_loop; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiVertex_loop; +} +#endif + +#ifdef __O3DB__ +void +SdaiVertex_loop::oodb_reInit () +{ eDesc = config_control_designe_vertex_loop; + attributes [1].aDesc = a_385loop_vertex; +} +#endif + +SdaiVertex_loop::SdaiVertex_loop (SCLP23(Application_instance) *se, int *addAttrs) : SdaiLoop(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -27923,30 +53570,42 @@ SdaiVertex_loop::SdaiVertex_loop (STEPentity *se ) : SdaiLoop(se) eDesc = config_control_designe_vertex_loop; - STEPattribute * a = new STEPattribute (*a_385loop_vertex, (STEPentityH *) &_loop_vertex); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_385loop_vertex, (SCLP23(Application_instance_ptr) *) &_loop_vertex); +#else + STEPattribute *a = new STEPattribute(*a_385loop_vertex, (SCLP23(Application_instance_ptr) *) &_loop_vertex); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiVertexH -SdaiVertex_loop::Loop_vertex() const - { return (SdaiVertexH) _loop_vertex; } +const SdaiVertex_ptr +SdaiVertex_loop::loop_vertex_() const +{ + return (SdaiVertex_ptr) _loop_vertex; +} void -SdaiVertex_loop::Loop_vertex (SdaiVertexH x) - { _loop_vertex = x; } +SdaiVertex_loop::loop_vertex_ (const SdaiVertex_ptr x) + +{ + _loop_vertex = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY vertex_loop +///////// END_ENTITY vertex_loop -///////// ENTITY approval_status +///////// ENTITY approval_status EntityDescriptor *config_control_designe_approval_status =0; AttrDescriptor *a_386name =0; @@ -27957,14 +53616,74 @@ SdaiApproval_status::SdaiApproval_status( ) eDesc = config_control_designe_approval_status; - STEPattribute * a = new STEPattribute (*a_386name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_386name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_386name, &_name); +#endif a -> set_null (); attributes.push (a); } SdaiApproval_status::SdaiApproval_status (SdaiApproval_status& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiApproval_status::~SdaiApproval_status () { } -SdaiApproval_status::SdaiApproval_status( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiApproval_status::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiApproval_status: virtual access function." << G4endl; + SdaiApproval_status_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiApproval_status_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiApproval_status: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiApproval_status *ent = (SdaiApproval_status *)sent; +// SdaiApproval_status *ent = (SdaiApproval_status *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_approval_status; + ent->attributes[0].aDesc = a_386name; +} + +SCLP23(Application_instance_ptr) +create_SdaiApproval_status(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiApproval_status::get_os_typespec()) + SdaiApproval_status; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiApproval_status::get_os_typespec()) +// SdaiApproval_status; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiApproval_status; +} +#endif + +#ifdef __O3DB__ +void +SdaiApproval_status::oodb_reInit () +{ eDesc = config_control_designe_approval_status; + attributes [0].aDesc = a_386name; +} +#endif + +SdaiApproval_status::SdaiApproval_status( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -27973,28 +53692,40 @@ SdaiApproval_status::SdaiApproval_status( STEPentity *se ) eDesc = config_control_designe_approval_status; - STEPattribute * a = new STEPattribute (*a_386name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_386name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_386name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiApproval_status::Name() const - { return (const SdaiLabel) _name; } +SdaiApproval_status::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiApproval_status::Name (const char * x) - { _name = x; } +SdaiApproval_status::name_ (const SdaiLabel x) -///////// END_ENTITY approval_status +{ + _name = x; +} + +///////// END_ENTITY approval_status -///////// ENTITY cartesian_point +///////// ENTITY cartesian_point EntityDescriptor *config_control_designe_cartesian_point =0; AttrDescriptor *a_387coordinates =0; @@ -28007,14 +53738,75 @@ SdaiCartesian_point::SdaiCartesian_point( ) eDesc = config_control_designe_cartesian_point; - STEPattribute * a = new STEPattribute (*a_387coordinates, &_coordinates); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_387coordinates, &_coordinates); +#else + STEPattribute *a = new STEPattribute(*a_387coordinates, &_coordinates); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiCartesian_point::SdaiCartesian_point (SdaiCartesian_point& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiCartesian_point::~SdaiCartesian_point () { } -SdaiCartesian_point::SdaiCartesian_point (STEPentity *se ) : SdaiPoint(se) + +#ifdef __OSTORE__ + +void +SdaiCartesian_point::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCartesian_point: virtual access function." << G4endl; + SdaiCartesian_point_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiCartesian_point_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCartesian_point: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiCartesian_point *ent = (SdaiCartesian_point *)sent; +// SdaiCartesian_point *ent = (SdaiCartesian_point *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_cartesian_point; + ent->attributes[1].aDesc = a_387coordinates; +} + +SCLP23(Application_instance_ptr) +create_SdaiCartesian_point(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiCartesian_point::get_os_typespec()) + SdaiCartesian_point; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiCartesian_point::get_os_typespec()) +// SdaiCartesian_point; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiCartesian_point; +} +#endif + +#ifdef __O3DB__ +void +SdaiCartesian_point::oodb_reInit () +{ eDesc = config_control_designe_cartesian_point; + attributes [1].aDesc = a_387coordinates; +} +#endif + +SdaiCartesian_point::SdaiCartesian_point (SCLP23(Application_instance) *se, int *addAttrs) : SdaiPoint(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -28025,30 +53817,41 @@ SdaiCartesian_point::SdaiCartesian_point (STEPentity *se ) : SdaiPoint(se) eDesc = config_control_designe_cartesian_point; - STEPattribute * a = new STEPattribute (*a_387coordinates, &_coordinates); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_387coordinates, &_coordinates); +#else + STEPattribute *a = new STEPattribute(*a_387coordinates, &_coordinates); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -const RealAggregateH -SdaiCartesian_point::Coordinates() const - { return (RealAggregateH) &_coordinates; } +const RealAggregate_ptr +SdaiCartesian_point::coordinates_() const +{ + return (RealAggregate_ptr) &_coordinates; +} void -SdaiCartesian_point::Coordinates (RealAggregateH x) +SdaiCartesian_point::coordinates_ (const RealAggregate_ptr x) + { _coordinates.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY cartesian_point +///////// END_ENTITY cartesian_point -///////// ENTITY date_and_time_assignment +///////// ENTITY date_and_time_assignment EntityDescriptor *config_control_designe_date_and_time_assignment =0; AttrDescriptor *a_388assigned_date_and_time =0; @@ -28060,18 +53863,90 @@ SdaiDate_and_time_assignment::SdaiDate_and_time_assignment( ) eDesc = config_control_designe_date_and_time_assignment; - STEPattribute * a = new STEPattribute (*a_388assigned_date_and_time, (STEPentityH *) &_assigned_date_and_time); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_388assigned_date_and_time, (SCLP23(Application_instance_ptr) *) &_assigned_date_and_time); +#else + STEPattribute *a = new STEPattribute(*a_388assigned_date_and_time, (SCLP23(Application_instance_ptr) *) &_assigned_date_and_time); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_389role, (STEPentityH *) &_role); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_389role, (SCLP23(Application_instance_ptr) *) &_role); +#else + a = new STEPattribute(*a_389role, (SCLP23(Application_instance_ptr) *) &_role); +#endif a -> set_null (); attributes.push (a); } SdaiDate_and_time_assignment::SdaiDate_and_time_assignment (SdaiDate_and_time_assignment& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiDate_and_time_assignment::~SdaiDate_and_time_assignment () { } -SdaiDate_and_time_assignment::SdaiDate_and_time_assignment( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiDate_and_time_assignment::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDate_and_time_assignment: virtual access function." << G4endl; + SdaiDate_and_time_assignment_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiDate_and_time_assignment_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDate_and_time_assignment: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiDate_and_time_assignment *ent = (SdaiDate_and_time_assignment *)sent; +// SdaiDate_and_time_assignment *ent = (SdaiDate_and_time_assignment *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_date_and_time_assignment; + ent->attributes[0].aDesc = a_388assigned_date_and_time; + if(ent->_assigned_date_and_time == 0) + ent->_assigned_date_and_time = S_ENTITY_NULL; + ent->attributes[1].aDesc = a_389role; + if(ent->_role == 0) + ent->_role = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiDate_and_time_assignment(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiDate_and_time_assignment::get_os_typespec()) + SdaiDate_and_time_assignment; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiDate_and_time_assignment::get_os_typespec()) +// SdaiDate_and_time_assignment; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiDate_and_time_assignment; +} +#endif + +#ifdef __O3DB__ +void +SdaiDate_and_time_assignment::oodb_reInit () +{ eDesc = config_control_designe_date_and_time_assignment; + attributes [0].aDesc = a_388assigned_date_and_time; + attributes [1].aDesc = a_389role; +} +#endif + +SdaiDate_and_time_assignment::SdaiDate_and_time_assignment( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -28080,45 +53955,69 @@ SdaiDate_and_time_assignment::SdaiDate_and_time_assignment( STEPentity *se ) eDesc = config_control_designe_date_and_time_assignment; - STEPattribute * a = new STEPattribute (*a_388assigned_date_and_time, (STEPentityH *) &_assigned_date_and_time); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_388assigned_date_and_time, (SCLP23(Application_instance_ptr) *) &_assigned_date_and_time); +#else + STEPattribute *a = new STEPattribute(*a_388assigned_date_and_time, (SCLP23(Application_instance_ptr) *) &_assigned_date_and_time); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_389role, (STEPentityH *) &_role); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_389role, (SCLP23(Application_instance_ptr) *) &_role); +#else + a = new STEPattribute(*a_389role, (SCLP23(Application_instance_ptr) *) &_role); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiDate_and_timeH -SdaiDate_and_time_assignment::Assigned_date_and_time() const - { return (SdaiDate_and_timeH) _assigned_date_and_time; } +const SdaiDate_and_time_ptr +SdaiDate_and_time_assignment::assigned_date_and_time_() const +{ + return (SdaiDate_and_time_ptr) _assigned_date_and_time; +} void -SdaiDate_and_time_assignment::Assigned_date_and_time (SdaiDate_and_timeH x) - { _assigned_date_and_time = x; } +SdaiDate_and_time_assignment::assigned_date_and_time_ (const SdaiDate_and_time_ptr x) -SdaiDate_time_roleH -SdaiDate_and_time_assignment::Role() const - { return (SdaiDate_time_roleH) _role; } +{ + _assigned_date_and_time = x; +} + +const SdaiDate_time_role_ptr +SdaiDate_and_time_assignment::role_() const +{ + return (SdaiDate_time_role_ptr) _role; +} void -SdaiDate_and_time_assignment::Role (SdaiDate_time_roleH x) - { _role = x; } +SdaiDate_and_time_assignment::role_ (const SdaiDate_time_role_ptr x) -///////// END_ENTITY date_and_time_assignment +{ + _role = x; +} + +///////// END_ENTITY date_and_time_assignment -///////// ENTITY parametric_representation_context +///////// ENTITY parametric_representation_context EntityDescriptor *config_control_designe_parametric_representation_context =0; SdaiParametric_representation_context::SdaiParametric_representation_context( ) @@ -28131,9 +54030,61 @@ SdaiParametric_representation_context::SdaiParametric_representation_context( ) eDesc = config_control_designe_parametric_representation_context; } SdaiParametric_representation_context::SdaiParametric_representation_context (SdaiParametric_representation_context& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiParametric_representation_context::~SdaiParametric_representation_context () { } -SdaiParametric_representation_context::SdaiParametric_representation_context (STEPentity *se ) : SdaiRepresentation_context(se) + +#ifdef __OSTORE__ + +void +SdaiParametric_representation_context::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiParametric_representation_context: virtual access function." << G4endl; + SdaiParametric_representation_context_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiParametric_representation_context_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiParametric_representation_context: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiParametric_representation_context *ent = (SdaiParametric_representation_context *)sent; +// SdaiParametric_representation_context *ent = (SdaiParametric_representation_context *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_parametric_representation_context; +} + +SCLP23(Application_instance_ptr) +create_SdaiParametric_representation_context(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiParametric_representation_context::get_os_typespec()) + SdaiParametric_representation_context; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiParametric_representation_context::get_os_typespec()) +// SdaiParametric_representation_context; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiParametric_representation_context; +} +#endif + +#ifdef __O3DB__ +void +SdaiParametric_representation_context::oodb_reInit () +{ eDesc = config_control_designe_parametric_representation_context; +} +#endif + +SdaiParametric_representation_context::SdaiParametric_representation_context (SCLP23(Application_instance) *se, int *addAttrs) : SdaiRepresentation_context(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -28147,10 +54098,10 @@ SdaiParametric_representation_context::SdaiParametric_representation_context (ST /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY parametric_representation_context +///////// END_ENTITY parametric_representation_context -///////// ENTITY product_concept_context +///////// ENTITY product_concept_context EntityDescriptor *config_control_designe_product_concept_context =0; AttrDescriptor *a_390market_segment_type =0; @@ -28163,14 +54114,74 @@ SdaiProduct_concept_context::SdaiProduct_concept_context( ) eDesc = config_control_designe_product_concept_context; - STEPattribute * a = new STEPattribute (*a_390market_segment_type, &_market_segment_type); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_390market_segment_type, &_market_segment_type); +#else + STEPattribute *a = new STEPattribute(*a_390market_segment_type, &_market_segment_type); +#endif a -> set_null (); attributes.push (a); } SdaiProduct_concept_context::SdaiProduct_concept_context (SdaiProduct_concept_context& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiProduct_concept_context::~SdaiProduct_concept_context () { } -SdaiProduct_concept_context::SdaiProduct_concept_context (STEPentity *se ) : SdaiApplication_context_element(se) + +#ifdef __OSTORE__ + +void +SdaiProduct_concept_context::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_concept_context: virtual access function." << G4endl; + SdaiProduct_concept_context_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiProduct_concept_context_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiProduct_concept_context: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiProduct_concept_context *ent = (SdaiProduct_concept_context *)sent; +// SdaiProduct_concept_context *ent = (SdaiProduct_concept_context *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_product_concept_context; + ent->attributes[2].aDesc = a_390market_segment_type; +} + +SCLP23(Application_instance_ptr) +create_SdaiProduct_concept_context(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiProduct_concept_context::get_os_typespec()) + SdaiProduct_concept_context; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiProduct_concept_context::get_os_typespec()) +// SdaiProduct_concept_context; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiProduct_concept_context; +} +#endif + +#ifdef __O3DB__ +void +SdaiProduct_concept_context::oodb_reInit () +{ eDesc = config_control_designe_product_concept_context; + attributes [2].aDesc = a_390market_segment_type; +} +#endif + +SdaiProduct_concept_context::SdaiProduct_concept_context (SCLP23(Application_instance) *se, int *addAttrs) : SdaiApplication_context_element(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -28181,33 +54192,45 @@ SdaiProduct_concept_context::SdaiProduct_concept_context (STEPentity *se ) : Sda eDesc = config_control_designe_product_concept_context; - STEPattribute * a = new STEPattribute (*a_390market_segment_type, &_market_segment_type); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_390market_segment_type, &_market_segment_type); +#else + STEPattribute *a = new STEPattribute(*a_390market_segment_type, &_market_segment_type); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiProduct_concept_context::Market_segment_type() const - { return (const SdaiLabel) _market_segment_type; } +SdaiProduct_concept_context::market_segment_type_() const +{ + return (SdaiLabel) _market_segment_type; +} void -SdaiProduct_concept_context::Market_segment_type (const char * x) - { _market_segment_type = x; } +SdaiProduct_concept_context::market_segment_type_ (const SdaiLabel x) + +{ + _market_segment_type = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY product_concept_context +///////// END_ENTITY product_concept_context -///////// ENTITY cartesian_transformation_operator_2d +///////// ENTITY cartesian_transformation_operator_2d EntityDescriptor *config_control_designe_cartesian_transformation_operator_2d =0; -AttrDescriptor *a_391Du =0; +Derived_attribute *a_391Du =0; SdaiCartesian_transformation_operator_2d::SdaiCartesian_transformation_operator_2d( ) { @@ -28216,12 +54239,66 @@ SdaiCartesian_transformation_operator_2d::SdaiCartesian_transformation_operator_ /* part of the main inheritance hierarchy */ eDesc = config_control_designe_cartesian_transformation_operator_2d; - MakeDerived ("name"); + MakeDerived ("dim"); + MakeDerived ("scl"); + MakeDerived ("u"); } SdaiCartesian_transformation_operator_2d::SdaiCartesian_transformation_operator_2d (SdaiCartesian_transformation_operator_2d& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiCartesian_transformation_operator_2d::~SdaiCartesian_transformation_operator_2d () { } -SdaiCartesian_transformation_operator_2d::SdaiCartesian_transformation_operator_2d (STEPentity *se ) : SdaiCartesian_transformation_operator(se) + +#ifdef __OSTORE__ + +void +SdaiCartesian_transformation_operator_2d::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCartesian_transformation_operator_2d: virtual access function." << G4endl; + SdaiCartesian_transformation_operator_2d_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiCartesian_transformation_operator_2d_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCartesian_transformation_operator_2d: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiCartesian_transformation_operator_2d *ent = (SdaiCartesian_transformation_operator_2d *)sent; +// SdaiCartesian_transformation_operator_2d *ent = (SdaiCartesian_transformation_operator_2d *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_cartesian_transformation_operator_2d; +} + +SCLP23(Application_instance_ptr) +create_SdaiCartesian_transformation_operator_2d(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiCartesian_transformation_operator_2d::get_os_typespec()) + SdaiCartesian_transformation_operator_2d; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiCartesian_transformation_operator_2d::get_os_typespec()) +// SdaiCartesian_transformation_operator_2d; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiCartesian_transformation_operator_2d; +} +#endif + +#ifdef __O3DB__ +void +SdaiCartesian_transformation_operator_2d::oodb_reInit () +{ eDesc = config_control_designe_cartesian_transformation_operator_2d; +} +#endif + +SdaiCartesian_transformation_operator_2d::SdaiCartesian_transformation_operator_2d (SCLP23(Application_instance) *se, int *addAttrs) : SdaiCartesian_transformation_operator(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -28231,15 +54308,17 @@ SdaiCartesian_transformation_operator_2d::SdaiCartesian_transformation_operator_ /* part of the main inheritance hierarchy */ eDesc = config_control_designe_cartesian_transformation_operator_2d; - MakeDerived ("name"); + MakeDerived ("dim"); + MakeDerived ("scl"); + MakeDerived ("u"); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY cartesian_transformation_operator_2d +///////// END_ENTITY cartesian_transformation_operator_2d -///////// ENTITY surface_patch +///////// ENTITY surface_patch EntityDescriptor *config_control_designe_surface_patch =0; AttrDescriptor *a_392parent_surface =0; @@ -28247,7 +54326,7 @@ AttrDescriptor *a_393u_transition =0; AttrDescriptor *a_394v_transition =0; AttrDescriptor *a_395u_sense =0; AttrDescriptor *a_396v_sense =0; -InverseAttrDescriptor *a_397Iusing_surfaces =0; +Inverse_attribute *a_397Iusing_surfaces =0; SdaiSurface_patch::SdaiSurface_patch( ) { @@ -28255,30 +54334,124 @@ SdaiSurface_patch::SdaiSurface_patch( ) eDesc = config_control_designe_surface_patch; - STEPattribute * a = new STEPattribute (*a_392parent_surface, (STEPentityH *) &_parent_surface); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_392parent_surface, (SCLP23(Application_instance_ptr) *) &_parent_surface); +#else + STEPattribute *a = new STEPattribute(*a_392parent_surface, (SCLP23(Application_instance_ptr) *) &_parent_surface); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_393u_transition, &_u_transition); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_393u_transition, &_u_transition); +#else + a = new STEPattribute(*a_393u_transition, &_u_transition); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_394v_transition, &_v_transition); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_394v_transition, &_v_transition); +#else + a = new STEPattribute(*a_394v_transition, &_v_transition); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_395u_sense, &_u_sense); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_395u_sense, &_u_sense); +#else + a = new STEPattribute(*a_395u_sense, &_u_sense); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_396v_sense, &_v_sense); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_396v_sense, &_v_sense); +#else + a = new STEPattribute(*a_396v_sense, &_v_sense); +#endif a -> set_null (); attributes.push (a); } SdaiSurface_patch::SdaiSurface_patch (SdaiSurface_patch& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiSurface_patch::~SdaiSurface_patch () { } -SdaiSurface_patch::SdaiSurface_patch( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiSurface_patch::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSurface_patch: virtual access function." << G4endl; + SdaiSurface_patch_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiSurface_patch_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSurface_patch: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiSurface_patch *ent = (SdaiSurface_patch *)sent; +// SdaiSurface_patch *ent = (SdaiSurface_patch *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_surface_patch; + ent->attributes[0].aDesc = a_392parent_surface; + if(ent->_parent_surface == 0) + ent->_parent_surface = S_ENTITY_NULL; + ent->attributes[1].aDesc = a_393u_transition; + ent->attributes[2].aDesc = a_394v_transition; + ent->attributes[3].aDesc = a_395u_sense; + ent->attributes[4].aDesc = a_396v_sense; +} + +SCLP23(Application_instance_ptr) +create_SdaiSurface_patch(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiSurface_patch::get_os_typespec()) + SdaiSurface_patch; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiSurface_patch::get_os_typespec()) +// SdaiSurface_patch; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiSurface_patch; +} +#endif + +#ifdef __O3DB__ +void +SdaiSurface_patch::oodb_reInit () +{ eDesc = config_control_designe_surface_patch; + attributes [0].aDesc = a_392parent_surface; + attributes [1].aDesc = a_393u_transition; + attributes [2].aDesc = a_394v_transition; + attributes [3].aDesc = a_395u_sense; + attributes [4].aDesc = a_396v_sense; +} +#endif + +SdaiSurface_patch::SdaiSurface_patch( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -28287,104 +54460,167 @@ SdaiSurface_patch::SdaiSurface_patch( STEPentity *se ) eDesc = config_control_designe_surface_patch; - STEPattribute * a = new STEPattribute (*a_392parent_surface, (STEPentityH *) &_parent_surface); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_392parent_surface, (SCLP23(Application_instance_ptr) *) &_parent_surface); +#else + STEPattribute *a = new STEPattribute(*a_392parent_surface, (SCLP23(Application_instance_ptr) *) &_parent_surface); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_393u_transition, &_u_transition); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_393u_transition, &_u_transition); +#else + a = new STEPattribute(*a_393u_transition, &_u_transition); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_394v_transition, &_v_transition); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_394v_transition, &_v_transition); +#else + a = new STEPattribute(*a_394v_transition, &_v_transition); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_395u_sense, &_u_sense); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_395u_sense, &_u_sense); +#else + a = new STEPattribute(*a_395u_sense, &_u_sense); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_396v_sense, &_v_sense); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_396v_sense, &_v_sense); +#else + a = new STEPattribute(*a_396v_sense, &_v_sense); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiBounded_surfaceH -SdaiSurface_patch::Parent_surface() const - { return (SdaiBounded_surfaceH) _parent_surface; } +const SdaiBounded_surface_ptr +SdaiSurface_patch::parent_surface_() const +{ + return (SdaiBounded_surface_ptr) _parent_surface; +} void -SdaiSurface_patch::Parent_surface (SdaiBounded_surfaceH x) - { _parent_surface = x; } +SdaiSurface_patch::parent_surface_ (const SdaiBounded_surface_ptr x) -const sdaiTransition_code -SdaiSurface_patch::U_transition() const - { return (sdaiTransition_code) _u_transition; } +{ + _parent_surface = x; +} + +const SdaiTransition_code_var +SdaiSurface_patch::u_transition_() const +{ + return (Transition_code) _u_transition; +} void -SdaiSurface_patch::U_transition (sdaiTransition_code x) - { _u_transition.put (x); } +SdaiSurface_patch::u_transition_ (const SdaiTransition_code_var x) -const sdaiTransition_code -SdaiSurface_patch::V_transition() const - { return (sdaiTransition_code) _v_transition; } +{ + _u_transition.put (x); +} + +const SdaiTransition_code_var +SdaiSurface_patch::v_transition_() const +{ + return (Transition_code) _v_transition; +} void -SdaiSurface_patch::V_transition (sdaiTransition_code x) - { _v_transition.put (x); } +SdaiSurface_patch::v_transition_ (const SdaiTransition_code_var x) -const BOOLEAN -SdaiSurface_patch::U_sense() const - { return (LOGICAL) _u_sense; } +{ + _v_transition.put (x); +} + +const SCLBOOL(Bool) +SdaiSurface_patch::u_sense_() const +{ + return (SCLBOOL(Bool)) _u_sense; +} void -SdaiSurface_patch::U_sense (BOOLEAN x) - { _u_sense.put (x); } +SdaiSurface_patch::u_sense_ (const SCLBOOL(Bool) x) -const BOOLEAN -SdaiSurface_patch::V_sense() const - { return (LOGICAL) _v_sense; } +{ + _u_sense.put (x); +} + +const SCLBOOL(Bool) +SdaiSurface_patch::v_sense_() const +{ + return (SCLBOOL(Bool)) _v_sense; +} void -SdaiSurface_patch::V_sense (BOOLEAN x) - { _v_sense.put (x); } +SdaiSurface_patch::v_sense_ (const SCLBOOL(Bool) x) -const EntityAggregateH -SdaiSurface_patch::Using_surfaces() const - { return (EntityAggregateH) &_using_surfaces; } +{ + _v_sense.put (x); +} + +const EntityAggregate_ptr +SdaiSurface_patch::using_surfaces_() const +{ + return (EntityAggregate_ptr) &_using_surfaces; +} void -SdaiSurface_patch::Using_surfaces (EntityAggregateH x) +SdaiSurface_patch::using_surfaces_ (const EntityAggregate_ptr x) + { _using_surfaces.ShallowCopy (*x); } -///////// END_ENTITY surface_patch +///////// END_ENTITY surface_patch -///////// ENTITY length_unit +///////// ENTITY length_unit EntityDescriptor *config_control_designe_length_unit =0; SdaiLength_unit::SdaiLength_unit( ) @@ -28397,9 +54633,61 @@ SdaiLength_unit::SdaiLength_unit( ) eDesc = config_control_designe_length_unit; } SdaiLength_unit::SdaiLength_unit (SdaiLength_unit& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiLength_unit::~SdaiLength_unit () { } -SdaiLength_unit::SdaiLength_unit (STEPentity *se ) : SdaiNamed_unit(se) + +#ifdef __OSTORE__ + +void +SdaiLength_unit::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiLength_unit: virtual access function." << G4endl; + SdaiLength_unit_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiLength_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiLength_unit: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiLength_unit *ent = (SdaiLength_unit *)sent; +// SdaiLength_unit *ent = (SdaiLength_unit *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_length_unit; +} + +SCLP23(Application_instance_ptr) +create_SdaiLength_unit(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiLength_unit::get_os_typespec()) + SdaiLength_unit; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiLength_unit::get_os_typespec()) +// SdaiLength_unit; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiLength_unit; +} +#endif + +#ifdef __O3DB__ +void +SdaiLength_unit::oodb_reInit () +{ eDesc = config_control_designe_length_unit; +} +#endif + +SdaiLength_unit::SdaiLength_unit (SCLP23(Application_instance) *se, int *addAttrs) : SdaiNamed_unit(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -28413,10 +54701,10 @@ SdaiLength_unit::SdaiLength_unit (STEPentity *se ) : SdaiNamed_unit(se) /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY length_unit +///////// END_ENTITY length_unit -///////// ENTITY shape_aspect +///////// ENTITY shape_aspect EntityDescriptor *config_control_designe_shape_aspect =0; AttrDescriptor *a_398name =0; @@ -28430,26 +54718,112 @@ SdaiShape_aspect::SdaiShape_aspect( ) eDesc = config_control_designe_shape_aspect; - STEPattribute * a = new STEPattribute (*a_398name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_398name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_398name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_399description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_399description, &_description); +#else + a = new STEPattribute(*a_399description, &_description); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_400of_shape, (STEPentityH *) &_of_shape); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_400of_shape, (SCLP23(Application_instance_ptr) *) &_of_shape); +#else + a = new STEPattribute(*a_400of_shape, (SCLP23(Application_instance_ptr) *) &_of_shape); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_401product_definitional, &_product_definitional); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_401product_definitional, &_product_definitional); +#else + a = new STEPattribute(*a_401product_definitional, &_product_definitional); +#endif a -> set_null (); attributes.push (a); } SdaiShape_aspect::SdaiShape_aspect (SdaiShape_aspect& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiShape_aspect::~SdaiShape_aspect () { } -SdaiShape_aspect::SdaiShape_aspect( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiShape_aspect::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiShape_aspect: virtual access function." << G4endl; + SdaiShape_aspect_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiShape_aspect_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiShape_aspect: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiShape_aspect *ent = (SdaiShape_aspect *)sent; +// SdaiShape_aspect *ent = (SdaiShape_aspect *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_shape_aspect; + ent->attributes[0].aDesc = a_398name; + ent->attributes[1].aDesc = a_399description; + ent->attributes[2].aDesc = a_400of_shape; + if(ent->_of_shape == 0) + ent->_of_shape = S_ENTITY_NULL; + ent->attributes[3].aDesc = a_401product_definitional; +} + +SCLP23(Application_instance_ptr) +create_SdaiShape_aspect(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiShape_aspect::get_os_typespec()) + SdaiShape_aspect; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiShape_aspect::get_os_typespec()) +// SdaiShape_aspect; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiShape_aspect; +} +#endif + +#ifdef __O3DB__ +void +SdaiShape_aspect::oodb_reInit () +{ eDesc = config_control_designe_shape_aspect; + attributes [0].aDesc = a_398name; + attributes [1].aDesc = a_399description; + attributes [2].aDesc = a_400of_shape; + attributes [3].aDesc = a_401product_definitional; +} +#endif + +SdaiShape_aspect::SdaiShape_aspect( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -28458,79 +54832,127 @@ SdaiShape_aspect::SdaiShape_aspect( STEPentity *se ) eDesc = config_control_designe_shape_aspect; - STEPattribute * a = new STEPattribute (*a_398name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_398name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_398name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_399description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_399description, &_description); +#else + a = new STEPattribute(*a_399description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_400of_shape, (STEPentityH *) &_of_shape); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_400of_shape, (SCLP23(Application_instance_ptr) *) &_of_shape); +#else + a = new STEPattribute(*a_400of_shape, (SCLP23(Application_instance_ptr) *) &_of_shape); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_401product_definitional, &_product_definitional); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_401product_definitional, &_product_definitional); +#else + a = new STEPattribute(*a_401product_definitional, &_product_definitional); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiShape_aspect::Name() const - { return (const SdaiLabel) _name; } +SdaiShape_aspect::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiShape_aspect::Name (const char * x) - { _name = x; } +SdaiShape_aspect::name_ (const SdaiLabel x) + +{ + _name = x; +} const SdaiText -SdaiShape_aspect::Description() const - { return (const SdaiText) _description; } +SdaiShape_aspect::description_() const +{ + return (SdaiText) _description; +} void -SdaiShape_aspect::Description (const char * x) - { _description = x; } +SdaiShape_aspect::description_ (const SdaiText x) -SdaiProduct_definition_shapeH -SdaiShape_aspect::Of_shape() const - { return (SdaiProduct_definition_shapeH) _of_shape; } +{ + _description = x; +} + +const SdaiProduct_definition_shape_ptr +SdaiShape_aspect::of_shape_() const +{ + return (SdaiProduct_definition_shape_ptr) _of_shape; +} void -SdaiShape_aspect::Of_shape (SdaiProduct_definition_shapeH x) - { _of_shape = x; } +SdaiShape_aspect::of_shape_ (const SdaiProduct_definition_shape_ptr x) -const LOGICAL -SdaiShape_aspect::Product_definitional() const - { return (LOGICAL) _product_definitional; } +{ + _of_shape = x; +} + +const SCLLOG(Logical) +SdaiShape_aspect::product_definitional_() const +{ + return (SCLLOG(Logical)) _product_definitional; +} void -SdaiShape_aspect::Product_definitional (LOGICAL x) - { _product_definitional.put (x); } +SdaiShape_aspect::product_definitional_ (const SCLLOG(Logical) x) -///////// END_ENTITY shape_aspect +{ + _product_definitional.put (x); +} + +///////// END_ENTITY shape_aspect -///////// ENTITY volume_measure_with_unit +///////// ENTITY volume_measure_with_unit EntityDescriptor *config_control_designe_volume_measure_with_unit =0; SdaiVolume_measure_with_unit::SdaiVolume_measure_with_unit( ) @@ -28543,9 +54965,61 @@ SdaiVolume_measure_with_unit::SdaiVolume_measure_with_unit( ) eDesc = config_control_designe_volume_measure_with_unit; } SdaiVolume_measure_with_unit::SdaiVolume_measure_with_unit (SdaiVolume_measure_with_unit& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiVolume_measure_with_unit::~SdaiVolume_measure_with_unit () { } -SdaiVolume_measure_with_unit::SdaiVolume_measure_with_unit (STEPentity *se ) : SdaiMeasure_with_unit(se) + +#ifdef __OSTORE__ + +void +SdaiVolume_measure_with_unit::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiVolume_measure_with_unit: virtual access function." << G4endl; + SdaiVolume_measure_with_unit_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiVolume_measure_with_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiVolume_measure_with_unit: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiVolume_measure_with_unit *ent = (SdaiVolume_measure_with_unit *)sent; +// SdaiVolume_measure_with_unit *ent = (SdaiVolume_measure_with_unit *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_volume_measure_with_unit; +} + +SCLP23(Application_instance_ptr) +create_SdaiVolume_measure_with_unit(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiVolume_measure_with_unit::get_os_typespec()) + SdaiVolume_measure_with_unit; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiVolume_measure_with_unit::get_os_typespec()) +// SdaiVolume_measure_with_unit; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiVolume_measure_with_unit; +} +#endif + +#ifdef __O3DB__ +void +SdaiVolume_measure_with_unit::oodb_reInit () +{ eDesc = config_control_designe_volume_measure_with_unit; +} +#endif + +SdaiVolume_measure_with_unit::SdaiVolume_measure_with_unit (SCLP23(Application_instance) *se, int *addAttrs) : SdaiMeasure_with_unit(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -28559,10 +55033,10 @@ SdaiVolume_measure_with_unit::SdaiVolume_measure_with_unit (STEPentity *se ) : S /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY volume_measure_with_unit +///////// END_ENTITY volume_measure_with_unit -///////// ENTITY advanced_face +///////// ENTITY advanced_face EntityDescriptor *config_control_designe_advanced_face =0; SdaiAdvanced_face::SdaiAdvanced_face( ) @@ -28573,11 +55047,64 @@ SdaiAdvanced_face::SdaiAdvanced_face( ) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_advanced_face; + MakeDerived ("dim"); } SdaiAdvanced_face::SdaiAdvanced_face (SdaiAdvanced_face& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiAdvanced_face::~SdaiAdvanced_face () { } -SdaiAdvanced_face::SdaiAdvanced_face (STEPentity *se ) : SdaiFace_surface(se) + +#ifdef __OSTORE__ + +void +SdaiAdvanced_face::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAdvanced_face: virtual access function." << G4endl; + SdaiAdvanced_face_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiAdvanced_face_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiAdvanced_face: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiAdvanced_face *ent = (SdaiAdvanced_face *)sent; +// SdaiAdvanced_face *ent = (SdaiAdvanced_face *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_advanced_face; +} + +SCLP23(Application_instance_ptr) +create_SdaiAdvanced_face(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiAdvanced_face::get_os_typespec()) + SdaiAdvanced_face; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiAdvanced_face::get_os_typespec()) +// SdaiAdvanced_face; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiAdvanced_face; +} +#endif + +#ifdef __O3DB__ +void +SdaiAdvanced_face::oodb_reInit () +{ eDesc = config_control_designe_advanced_face; +} +#endif + +SdaiAdvanced_face::SdaiAdvanced_face (SCLP23(Application_instance) *se, int *addAttrs) : SdaiFace_surface(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -28587,14 +55114,15 @@ SdaiAdvanced_face::SdaiAdvanced_face (STEPentity *se ) : SdaiFace_surface(se) /* part of the main inheritance hierarchy */ eDesc = config_control_designe_advanced_face; + MakeDerived ("dim"); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY advanced_face +///////// END_ENTITY advanced_face -///////// ENTITY security_classification_level +///////// ENTITY security_classification_level EntityDescriptor *config_control_designe_security_classification_level =0; AttrDescriptor *a_402name =0; @@ -28605,14 +55133,74 @@ SdaiSecurity_classification_level::SdaiSecurity_classification_level( ) eDesc = config_control_designe_security_classification_level; - STEPattribute * a = new STEPattribute (*a_402name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_402name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_402name, &_name); +#endif a -> set_null (); attributes.push (a); } SdaiSecurity_classification_level::SdaiSecurity_classification_level (SdaiSecurity_classification_level& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiSecurity_classification_level::~SdaiSecurity_classification_level () { } -SdaiSecurity_classification_level::SdaiSecurity_classification_level( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiSecurity_classification_level::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSecurity_classification_level: virtual access function." << G4endl; + SdaiSecurity_classification_level_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiSecurity_classification_level_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSecurity_classification_level: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiSecurity_classification_level *ent = (SdaiSecurity_classification_level *)sent; +// SdaiSecurity_classification_level *ent = (SdaiSecurity_classification_level *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_security_classification_level; + ent->attributes[0].aDesc = a_402name; +} + +SCLP23(Application_instance_ptr) +create_SdaiSecurity_classification_level(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiSecurity_classification_level::get_os_typespec()) + SdaiSecurity_classification_level; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiSecurity_classification_level::get_os_typespec()) +// SdaiSecurity_classification_level; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiSecurity_classification_level; +} +#endif + +#ifdef __O3DB__ +void +SdaiSecurity_classification_level::oodb_reInit () +{ eDesc = config_control_designe_security_classification_level; + attributes [0].aDesc = a_402name; +} +#endif + +SdaiSecurity_classification_level::SdaiSecurity_classification_level( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -28621,28 +55209,40 @@ SdaiSecurity_classification_level::SdaiSecurity_classification_level( STEPentity eDesc = config_control_designe_security_classification_level; - STEPattribute * a = new STEPattribute (*a_402name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_402name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_402name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiSecurity_classification_level::Name() const - { return (const SdaiLabel) _name; } +SdaiSecurity_classification_level::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiSecurity_classification_level::Name (const char * x) - { _name = x; } +SdaiSecurity_classification_level::name_ (const SdaiLabel x) -///////// END_ENTITY security_classification_level +{ + _name = x; +} + +///////// END_ENTITY security_classification_level -///////// ENTITY approval_relationship +///////// ENTITY approval_relationship EntityDescriptor *config_control_designe_approval_relationship =0; AttrDescriptor *a_403name =0; @@ -28656,26 +55256,114 @@ SdaiApproval_relationship::SdaiApproval_relationship( ) eDesc = config_control_designe_approval_relationship; - STEPattribute * a = new STEPattribute (*a_403name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_403name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_403name, &_name); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_404description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_404description, &_description); +#else + a = new STEPattribute(*a_404description, &_description); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_405relating_approval, (STEPentityH *) &_relating_approval); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_405relating_approval, (SCLP23(Application_instance_ptr) *) &_relating_approval); +#else + a = new STEPattribute(*a_405relating_approval, (SCLP23(Application_instance_ptr) *) &_relating_approval); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_406related_approval, (STEPentityH *) &_related_approval); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_406related_approval, (SCLP23(Application_instance_ptr) *) &_related_approval); +#else + a = new STEPattribute(*a_406related_approval, (SCLP23(Application_instance_ptr) *) &_related_approval); +#endif a -> set_null (); attributes.push (a); } SdaiApproval_relationship::SdaiApproval_relationship (SdaiApproval_relationship& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiApproval_relationship::~SdaiApproval_relationship () { } -SdaiApproval_relationship::SdaiApproval_relationship( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiApproval_relationship::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiApproval_relationship: virtual access function." << G4endl; + SdaiApproval_relationship_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiApproval_relationship_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiApproval_relationship: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiApproval_relationship *ent = (SdaiApproval_relationship *)sent; +// SdaiApproval_relationship *ent = (SdaiApproval_relationship *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_approval_relationship; + ent->attributes[0].aDesc = a_403name; + ent->attributes[1].aDesc = a_404description; + ent->attributes[2].aDesc = a_405relating_approval; + if(ent->_relating_approval == 0) + ent->_relating_approval = S_ENTITY_NULL; + ent->attributes[3].aDesc = a_406related_approval; + if(ent->_related_approval == 0) + ent->_related_approval = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiApproval_relationship(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiApproval_relationship::get_os_typespec()) + SdaiApproval_relationship; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiApproval_relationship::get_os_typespec()) +// SdaiApproval_relationship; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiApproval_relationship; +} +#endif + +#ifdef __O3DB__ +void +SdaiApproval_relationship::oodb_reInit () +{ eDesc = config_control_designe_approval_relationship; + attributes [0].aDesc = a_403name; + attributes [1].aDesc = a_404description; + attributes [2].aDesc = a_405relating_approval; + attributes [3].aDesc = a_406related_approval; +} +#endif + +SdaiApproval_relationship::SdaiApproval_relationship( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -28684,79 +55372,127 @@ SdaiApproval_relationship::SdaiApproval_relationship( STEPentity *se ) eDesc = config_control_designe_approval_relationship; - STEPattribute * a = new STEPattribute (*a_403name, &_name); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_403name, &_name); +#else + STEPattribute *a = new STEPattribute(*a_403name, &_name); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_404description, &_description); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_404description, &_description); +#else + a = new STEPattribute(*a_404description, &_description); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_405relating_approval, (STEPentityH *) &_relating_approval); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_405relating_approval, (SCLP23(Application_instance_ptr) *) &_relating_approval); +#else + a = new STEPattribute(*a_405relating_approval, (SCLP23(Application_instance_ptr) *) &_relating_approval); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_406related_approval, (STEPentityH *) &_related_approval); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_406related_approval, (SCLP23(Application_instance_ptr) *) &_related_approval); +#else + a = new STEPattribute(*a_406related_approval, (SCLP23(Application_instance_ptr) *) &_related_approval); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiLabel -SdaiApproval_relationship::Name() const - { return (const SdaiLabel) _name; } +SdaiApproval_relationship::name_() const +{ + return (SdaiLabel) _name; +} void -SdaiApproval_relationship::Name (const char * x) - { _name = x; } +SdaiApproval_relationship::name_ (const SdaiLabel x) + +{ + _name = x; +} const SdaiText -SdaiApproval_relationship::Description() const - { return (const SdaiText) _description; } +SdaiApproval_relationship::description_() const +{ + return (SdaiText) _description; +} void -SdaiApproval_relationship::Description (const char * x) - { _description = x; } +SdaiApproval_relationship::description_ (const SdaiText x) -SdaiApprovalH -SdaiApproval_relationship::Relating_approval() const - { return (SdaiApprovalH) _relating_approval; } +{ + _description = x; +} + +const SdaiApproval_ptr +SdaiApproval_relationship::relating_approval_() const +{ + return (SdaiApproval_ptr) _relating_approval; +} void -SdaiApproval_relationship::Relating_approval (SdaiApprovalH x) - { _relating_approval = x; } +SdaiApproval_relationship::relating_approval_ (const SdaiApproval_ptr x) -SdaiApprovalH -SdaiApproval_relationship::Related_approval() const - { return (SdaiApprovalH) _related_approval; } +{ + _relating_approval = x; +} + +const SdaiApproval_ptr +SdaiApproval_relationship::related_approval_() const +{ + return (SdaiApproval_ptr) _related_approval; +} void -SdaiApproval_relationship::Related_approval (SdaiApprovalH x) - { _related_approval = x; } +SdaiApproval_relationship::related_approval_ (const SdaiApproval_ptr x) -///////// END_ENTITY approval_relationship +{ + _related_approval = x; +} + +///////// END_ENTITY approval_relationship -///////// ENTITY polyline +///////// ENTITY polyline EntityDescriptor *config_control_designe_polyline =0; AttrDescriptor *a_407points =0; @@ -28769,14 +55505,75 @@ SdaiPolyline::SdaiPolyline( ) eDesc = config_control_designe_polyline; - STEPattribute * a = new STEPattribute (*a_407points, &_points); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_407points, &_points); +#else + STEPattribute *a = new STEPattribute(*a_407points, &_points); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiPolyline::SdaiPolyline (SdaiPolyline& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiPolyline::~SdaiPolyline () { } -SdaiPolyline::SdaiPolyline (STEPentity *se ) : SdaiBounded_curve(se) + +#ifdef __OSTORE__ + +void +SdaiPolyline::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPolyline: virtual access function." << G4endl; + SdaiPolyline_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiPolyline_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPolyline: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiPolyline *ent = (SdaiPolyline *)sent; +// SdaiPolyline *ent = (SdaiPolyline *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_polyline; + ent->attributes[1].aDesc = a_407points; +} + +SCLP23(Application_instance_ptr) +create_SdaiPolyline(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiPolyline::get_os_typespec()) + SdaiPolyline; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiPolyline::get_os_typespec()) +// SdaiPolyline; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiPolyline; +} +#endif + +#ifdef __O3DB__ +void +SdaiPolyline::oodb_reInit () +{ eDesc = config_control_designe_polyline; + attributes [1].aDesc = a_407points; +} +#endif + +SdaiPolyline::SdaiPolyline (SCLP23(Application_instance) *se, int *addAttrs) : SdaiBounded_curve(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -28787,30 +55584,41 @@ SdaiPolyline::SdaiPolyline (STEPentity *se ) : SdaiBounded_curve(se) eDesc = config_control_designe_polyline; - STEPattribute * a = new STEPattribute (*a_407points, &_points); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_407points, &_points); +#else + STEPattribute *a = new STEPattribute(*a_407points, &_points); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -const EntityAggregateH -SdaiPolyline::Points() const - { return (EntityAggregateH) &_points; } +const EntityAggregate_ptr +SdaiPolyline::points_() const +{ + return (EntityAggregate_ptr) &_points; +} void -SdaiPolyline::Points (EntityAggregateH x) +SdaiPolyline::points_ (const EntityAggregate_ptr x) + { _points.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY polyline +///////// END_ENTITY polyline -///////// ENTITY approval_person_organization +///////// ENTITY approval_person_organization EntityDescriptor *config_control_designe_approval_person_organization =0; AttrDescriptor *a_408person_organization =0; @@ -28823,22 +55631,102 @@ SdaiApproval_person_organization::SdaiApproval_person_organization( ) eDesc = config_control_designe_approval_person_organization; - STEPattribute * a = new STEPattribute (*a_408person_organization, &_person_organization); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_408person_organization, &_person_organization); +#else + STEPattribute *a = new STEPattribute(*a_408person_organization, &_person_organization); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_409authorized_approval, (STEPentityH *) &_authorized_approval); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_409authorized_approval, (SCLP23(Application_instance_ptr) *) &_authorized_approval); +#else + a = new STEPattribute(*a_409authorized_approval, (SCLP23(Application_instance_ptr) *) &_authorized_approval); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_410role, (STEPentityH *) &_role); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_410role, (SCLP23(Application_instance_ptr) *) &_role); +#else + a = new STEPattribute(*a_410role, (SCLP23(Application_instance_ptr) *) &_role); +#endif a -> set_null (); attributes.push (a); } SdaiApproval_person_organization::SdaiApproval_person_organization (SdaiApproval_person_organization& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiApproval_person_organization::~SdaiApproval_person_organization () { } -SdaiApproval_person_organization::SdaiApproval_person_organization( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiApproval_person_organization::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiApproval_person_organization: virtual access function." << G4endl; + SdaiApproval_person_organization_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiApproval_person_organization_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiApproval_person_organization: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiApproval_person_organization *ent = (SdaiApproval_person_organization *)sent; +// SdaiApproval_person_organization *ent = (SdaiApproval_person_organization *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_approval_person_organization; + ent->attributes[0].aDesc = a_408person_organization; + ent->attributes[1].aDesc = a_409authorized_approval; + if(ent->_authorized_approval == 0) + ent->_authorized_approval = S_ENTITY_NULL; + ent->attributes[2].aDesc = a_410role; + if(ent->_role == 0) + ent->_role = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiApproval_person_organization(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiApproval_person_organization::get_os_typespec()) + SdaiApproval_person_organization; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiApproval_person_organization::get_os_typespec()) +// SdaiApproval_person_organization; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiApproval_person_organization; +} +#endif + +#ifdef __O3DB__ +void +SdaiApproval_person_organization::oodb_reInit () +{ eDesc = config_control_designe_approval_person_organization; + attributes [0].aDesc = a_408person_organization; + attributes [1].aDesc = a_409authorized_approval; + attributes [2].aDesc = a_410role; +} +#endif + +SdaiApproval_person_organization::SdaiApproval_person_organization( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -28847,62 +55735,94 @@ SdaiApproval_person_organization::SdaiApproval_person_organization( STEPentity * eDesc = config_control_designe_approval_person_organization; - STEPattribute * a = new STEPattribute (*a_408person_organization, &_person_organization); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_408person_organization, &_person_organization); +#else + STEPattribute *a = new STEPattribute(*a_408person_organization, &_person_organization); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_409authorized_approval, (STEPentityH *) &_authorized_approval); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_409authorized_approval, (SCLP23(Application_instance_ptr) *) &_authorized_approval); +#else + a = new STEPattribute(*a_409authorized_approval, (SCLP23(Application_instance_ptr) *) &_authorized_approval); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_410role, (STEPentityH *) &_role); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_410role, (SCLP23(Application_instance_ptr) *) &_role); +#else + a = new STEPattribute(*a_410role, (SCLP23(Application_instance_ptr) *) &_role); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -const SdaiPerson_organization_selectH -SdaiApproval_person_organization::Person_organization() const - { return (const SdaiPerson_organization_selectH) &_person_organization; } +const SdaiPerson_organization_select_ptr +SdaiApproval_person_organization::person_organization_() const + { return (SdaiPerson_organization_select_ptr) &_person_organization; } void -SdaiApproval_person_organization::Person_organization (SdaiPerson_organization_selectH x) +SdaiApproval_person_organization::person_organization_ (const SdaiPerson_organization_select_ptr x) + { _person_organization = x; } -SdaiApprovalH -SdaiApproval_person_organization::Authorized_approval() const - { return (SdaiApprovalH) _authorized_approval; } +const SdaiApproval_ptr +SdaiApproval_person_organization::authorized_approval_() const +{ + return (SdaiApproval_ptr) _authorized_approval; +} void -SdaiApproval_person_organization::Authorized_approval (SdaiApprovalH x) - { _authorized_approval = x; } +SdaiApproval_person_organization::authorized_approval_ (const SdaiApproval_ptr x) -SdaiApproval_roleH -SdaiApproval_person_organization::Role() const - { return (SdaiApproval_roleH) _role; } +{ + _authorized_approval = x; +} + +const SdaiApproval_role_ptr +SdaiApproval_person_organization::role_() const +{ + return (SdaiApproval_role_ptr) _role; +} void -SdaiApproval_person_organization::Role (SdaiApproval_roleH x) - { _role = x; } +SdaiApproval_person_organization::role_ (const SdaiApproval_role_ptr x) -///////// END_ENTITY approval_person_organization +{ + _role = x; +} + +///////// END_ENTITY approval_person_organization -///////// ENTITY surface_replica +///////// ENTITY surface_replica EntityDescriptor *config_control_designe_surface_replica =0; AttrDescriptor *a_411parent_surface =0; @@ -28916,18 +55836,91 @@ SdaiSurface_replica::SdaiSurface_replica( ) eDesc = config_control_designe_surface_replica; - STEPattribute * a = new STEPattribute (*a_411parent_surface, (STEPentityH *) &_parent_surface); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_411parent_surface, (SCLP23(Application_instance_ptr) *) &_parent_surface); +#else + STEPattribute *a = new STEPattribute(*a_411parent_surface, (SCLP23(Application_instance_ptr) *) &_parent_surface); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_412transformation, (STEPentityH *) &_transformation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_412transformation, (SCLP23(Application_instance_ptr) *) &_transformation); +#else + a = new STEPattribute(*a_412transformation, (SCLP23(Application_instance_ptr) *) &_transformation); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiSurface_replica::SdaiSurface_replica (SdaiSurface_replica& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiSurface_replica::~SdaiSurface_replica () { } -SdaiSurface_replica::SdaiSurface_replica (STEPentity *se ) : SdaiSurface(se) + +#ifdef __OSTORE__ + +void +SdaiSurface_replica::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSurface_replica: virtual access function." << G4endl; + SdaiSurface_replica_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiSurface_replica_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSurface_replica: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiSurface_replica *ent = (SdaiSurface_replica *)sent; +// SdaiSurface_replica *ent = (SdaiSurface_replica *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_surface_replica; + ent->attributes[1].aDesc = a_411parent_surface; + if(ent->_parent_surface == 0) + ent->_parent_surface = S_ENTITY_NULL; + ent->attributes[2].aDesc = a_412transformation; + if(ent->_transformation == 0) + ent->_transformation = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiSurface_replica(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiSurface_replica::get_os_typespec()) + SdaiSurface_replica; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiSurface_replica::get_os_typespec()) +// SdaiSurface_replica; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiSurface_replica; +} +#endif + +#ifdef __O3DB__ +void +SdaiSurface_replica::oodb_reInit () +{ eDesc = config_control_designe_surface_replica; + attributes [1].aDesc = a_411parent_surface; + attributes [2].aDesc = a_412transformation; +} +#endif + +SdaiSurface_replica::SdaiSurface_replica (SCLP23(Application_instance) *se, int *addAttrs) : SdaiSurface(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -28938,47 +55931,72 @@ SdaiSurface_replica::SdaiSurface_replica (STEPentity *se ) : SdaiSurface(se) eDesc = config_control_designe_surface_replica; - STEPattribute * a = new STEPattribute (*a_411parent_surface, (STEPentityH *) &_parent_surface); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_411parent_surface, (SCLP23(Application_instance_ptr) *) &_parent_surface); +#else + STEPattribute *a = new STEPattribute(*a_411parent_surface, (SCLP23(Application_instance_ptr) *) &_parent_surface); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_412transformation, (STEPentityH *) &_transformation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_412transformation, (SCLP23(Application_instance_ptr) *) &_transformation); +#else + a = new STEPattribute(*a_412transformation, (SCLP23(Application_instance_ptr) *) &_transformation); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -SdaiSurfaceH -SdaiSurface_replica::Parent_surface() const - { return (SdaiSurfaceH) _parent_surface; } +const SdaiSurface_ptr +SdaiSurface_replica::parent_surface_() const +{ + return (SdaiSurface_ptr) _parent_surface; +} void -SdaiSurface_replica::Parent_surface (SdaiSurfaceH x) - { _parent_surface = x; } +SdaiSurface_replica::parent_surface_ (const SdaiSurface_ptr x) -SdaiCartesian_transformation_operator_3dH -SdaiSurface_replica::Transformation() const - { return (SdaiCartesian_transformation_operator_3dH) _transformation; } +{ + _parent_surface = x; +} + +const SdaiCartesian_transformation_operator_3d_ptr +SdaiSurface_replica::transformation_() const +{ + return (SdaiCartesian_transformation_operator_3d_ptr) _transformation; +} void -SdaiSurface_replica::Transformation (SdaiCartesian_transformation_operator_3dH x) - { _transformation = x; } +SdaiSurface_replica::transformation_ (const SdaiCartesian_transformation_operator_3d_ptr x) + +{ + _transformation = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY surface_replica +///////// END_ENTITY surface_replica -///////// ENTITY security_classification_assignment +///////// ENTITY security_classification_assignment EntityDescriptor *config_control_designe_security_classification_assignment =0; AttrDescriptor *a_413assigned_security_classification =0; @@ -28989,14 +56007,76 @@ SdaiSecurity_classification_assignment::SdaiSecurity_classification_assignment( eDesc = config_control_designe_security_classification_assignment; - STEPattribute * a = new STEPattribute (*a_413assigned_security_classification, (STEPentityH *) &_assigned_security_classification); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_413assigned_security_classification, (SCLP23(Application_instance_ptr) *) &_assigned_security_classification); +#else + STEPattribute *a = new STEPattribute(*a_413assigned_security_classification, (SCLP23(Application_instance_ptr) *) &_assigned_security_classification); +#endif a -> set_null (); attributes.push (a); } SdaiSecurity_classification_assignment::SdaiSecurity_classification_assignment (SdaiSecurity_classification_assignment& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiSecurity_classification_assignment::~SdaiSecurity_classification_assignment () { } -SdaiSecurity_classification_assignment::SdaiSecurity_classification_assignment( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiSecurity_classification_assignment::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSecurity_classification_assignment: virtual access function." << G4endl; + SdaiSecurity_classification_assignment_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiSecurity_classification_assignment_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiSecurity_classification_assignment: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiSecurity_classification_assignment *ent = (SdaiSecurity_classification_assignment *)sent; +// SdaiSecurity_classification_assignment *ent = (SdaiSecurity_classification_assignment *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_security_classification_assignment; + ent->attributes[0].aDesc = a_413assigned_security_classification; + if(ent->_assigned_security_classification == 0) + ent->_assigned_security_classification = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiSecurity_classification_assignment(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiSecurity_classification_assignment::get_os_typespec()) + SdaiSecurity_classification_assignment; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiSecurity_classification_assignment::get_os_typespec()) +// SdaiSecurity_classification_assignment; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiSecurity_classification_assignment; +} +#endif + +#ifdef __O3DB__ +void +SdaiSecurity_classification_assignment::oodb_reInit () +{ eDesc = config_control_designe_security_classification_assignment; + attributes [0].aDesc = a_413assigned_security_classification; +} +#endif + +SdaiSecurity_classification_assignment::SdaiSecurity_classification_assignment( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -29005,28 +56085,40 @@ SdaiSecurity_classification_assignment::SdaiSecurity_classification_assignment( eDesc = config_control_designe_security_classification_assignment; - STEPattribute * a = new STEPattribute (*a_413assigned_security_classification, (STEPentityH *) &_assigned_security_classification); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_413assigned_security_classification, (SCLP23(Application_instance_ptr) *) &_assigned_security_classification); +#else + STEPattribute *a = new STEPattribute(*a_413assigned_security_classification, (SCLP23(Application_instance_ptr) *) &_assigned_security_classification); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiSecurity_classificationH -SdaiSecurity_classification_assignment::Assigned_security_classification() const - { return (SdaiSecurity_classificationH) _assigned_security_classification; } +const SdaiSecurity_classification_ptr +SdaiSecurity_classification_assignment::assigned_security_classification_() const +{ + return (SdaiSecurity_classification_ptr) _assigned_security_classification; +} void -SdaiSecurity_classification_assignment::Assigned_security_classification (SdaiSecurity_classificationH x) - { _assigned_security_classification = x; } +SdaiSecurity_classification_assignment::assigned_security_classification_ (const SdaiSecurity_classification_ptr x) -///////// END_ENTITY security_classification_assignment +{ + _assigned_security_classification = x; +} + +///////// END_ENTITY security_classification_assignment -///////// ENTITY cc_design_security_classification +///////// ENTITY cc_design_security_classification EntityDescriptor *config_control_designe_cc_design_security_classification =0; AttrDescriptor *a_414items =0; @@ -29039,14 +56131,74 @@ SdaiCc_design_security_classification::SdaiCc_design_security_classification( ) eDesc = config_control_designe_cc_design_security_classification; - STEPattribute * a = new STEPattribute (*a_414items, &_items); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_414items, &_items); +#else + STEPattribute *a = new STEPattribute(*a_414items, &_items); +#endif a -> set_null (); attributes.push (a); } SdaiCc_design_security_classification::SdaiCc_design_security_classification (SdaiCc_design_security_classification& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiCc_design_security_classification::~SdaiCc_design_security_classification () { } -SdaiCc_design_security_classification::SdaiCc_design_security_classification (STEPentity *se ) : SdaiSecurity_classification_assignment(se) + +#ifdef __OSTORE__ + +void +SdaiCc_design_security_classification::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCc_design_security_classification: virtual access function." << G4endl; + SdaiCc_design_security_classification_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiCc_design_security_classification_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCc_design_security_classification: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiCc_design_security_classification *ent = (SdaiCc_design_security_classification *)sent; +// SdaiCc_design_security_classification *ent = (SdaiCc_design_security_classification *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_cc_design_security_classification; + ent->attributes[1].aDesc = a_414items; +} + +SCLP23(Application_instance_ptr) +create_SdaiCc_design_security_classification(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiCc_design_security_classification::get_os_typespec()) + SdaiCc_design_security_classification; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiCc_design_security_classification::get_os_typespec()) +// SdaiCc_design_security_classification; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiCc_design_security_classification; +} +#endif + +#ifdef __O3DB__ +void +SdaiCc_design_security_classification::oodb_reInit () +{ eDesc = config_control_designe_cc_design_security_classification; + attributes [1].aDesc = a_414items; +} +#endif + +SdaiCc_design_security_classification::SdaiCc_design_security_classification (SCLP23(Application_instance) *se, int *addAttrs) : SdaiSecurity_classification_assignment(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -29057,30 +56209,40 @@ SdaiCc_design_security_classification::SdaiCc_design_security_classification (ST eDesc = config_control_designe_cc_design_security_classification; - STEPattribute * a = new STEPattribute (*a_414items, &_items); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_414items, &_items); +#else + STEPattribute *a = new STEPattribute(*a_414items, &_items); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -const SdaiClassified_itemsH -SdaiCc_design_security_classification::Items() const - { return (SdaiClassified_itemsH) &_items; } +const SdaiClassified_items_ptr +SdaiCc_design_security_classification::items_() const +{ + return (SdaiClassified_items_ptr) &_items; +} void -SdaiCc_design_security_classification::Items (SdaiClassified_itemsH x) +SdaiCc_design_security_classification::items_ (const SdaiClassified_items_ptr x) + { _items.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY cc_design_security_classification +///////// END_ENTITY cc_design_security_classification -///////// ENTITY faceted_brep_shape_representation +///////// ENTITY faceted_brep_shape_representation EntityDescriptor *config_control_designe_faceted_brep_shape_representation =0; SdaiFaceted_brep_shape_representation::SdaiFaceted_brep_shape_representation( ) @@ -29093,9 +56255,61 @@ SdaiFaceted_brep_shape_representation::SdaiFaceted_brep_shape_representation( ) eDesc = config_control_designe_faceted_brep_shape_representation; } SdaiFaceted_brep_shape_representation::SdaiFaceted_brep_shape_representation (SdaiFaceted_brep_shape_representation& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiFaceted_brep_shape_representation::~SdaiFaceted_brep_shape_representation () { } -SdaiFaceted_brep_shape_representation::SdaiFaceted_brep_shape_representation (STEPentity *se ) : SdaiShape_representation(se) + +#ifdef __OSTORE__ + +void +SdaiFaceted_brep_shape_representation::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiFaceted_brep_shape_representation: virtual access function." << G4endl; + SdaiFaceted_brep_shape_representation_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiFaceted_brep_shape_representation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiFaceted_brep_shape_representation: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiFaceted_brep_shape_representation *ent = (SdaiFaceted_brep_shape_representation *)sent; +// SdaiFaceted_brep_shape_representation *ent = (SdaiFaceted_brep_shape_representation *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_faceted_brep_shape_representation; +} + +SCLP23(Application_instance_ptr) +create_SdaiFaceted_brep_shape_representation(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiFaceted_brep_shape_representation::get_os_typespec()) + SdaiFaceted_brep_shape_representation; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiFaceted_brep_shape_representation::get_os_typespec()) +// SdaiFaceted_brep_shape_representation; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiFaceted_brep_shape_representation; +} +#endif + +#ifdef __O3DB__ +void +SdaiFaceted_brep_shape_representation::oodb_reInit () +{ eDesc = config_control_designe_faceted_brep_shape_representation; +} +#endif + +SdaiFaceted_brep_shape_representation::SdaiFaceted_brep_shape_representation (SCLP23(Application_instance) *se, int *addAttrs) : SdaiShape_representation(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -29109,10 +56323,10 @@ SdaiFaceted_brep_shape_representation::SdaiFaceted_brep_shape_representation (ST /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY faceted_brep_shape_representation +///////// END_ENTITY faceted_brep_shape_representation -///////// ENTITY document_usage_constraint +///////// ENTITY document_usage_constraint EntityDescriptor *config_control_designe_document_usage_constraint =0; AttrDescriptor *a_415source =0; @@ -29125,22 +56339,100 @@ SdaiDocument_usage_constraint::SdaiDocument_usage_constraint( ) eDesc = config_control_designe_document_usage_constraint; - STEPattribute * a = new STEPattribute (*a_415source, (STEPentityH *) &_source); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_415source, (SCLP23(Application_instance_ptr) *) &_source); +#else + STEPattribute *a = new STEPattribute(*a_415source, (SCLP23(Application_instance_ptr) *) &_source); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_416subject_element, &_subject_element); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_416subject_element, &_subject_element); +#else + a = new STEPattribute(*a_416subject_element, &_subject_element); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_417subject_element_value, &_subject_element_value); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_417subject_element_value, &_subject_element_value); +#else + a = new STEPattribute(*a_417subject_element_value, &_subject_element_value); +#endif a -> set_null (); attributes.push (a); } SdaiDocument_usage_constraint::SdaiDocument_usage_constraint (SdaiDocument_usage_constraint& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiDocument_usage_constraint::~SdaiDocument_usage_constraint () { } -SdaiDocument_usage_constraint::SdaiDocument_usage_constraint( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiDocument_usage_constraint::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDocument_usage_constraint: virtual access function." << G4endl; + SdaiDocument_usage_constraint_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiDocument_usage_constraint_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiDocument_usage_constraint: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiDocument_usage_constraint *ent = (SdaiDocument_usage_constraint *)sent; +// SdaiDocument_usage_constraint *ent = (SdaiDocument_usage_constraint *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_document_usage_constraint; + ent->attributes[0].aDesc = a_415source; + if(ent->_source == 0) + ent->_source = S_ENTITY_NULL; + ent->attributes[1].aDesc = a_416subject_element; + ent->attributes[2].aDesc = a_417subject_element_value; +} + +SCLP23(Application_instance_ptr) +create_SdaiDocument_usage_constraint(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiDocument_usage_constraint::get_os_typespec()) + SdaiDocument_usage_constraint; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiDocument_usage_constraint::get_os_typespec()) +// SdaiDocument_usage_constraint; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiDocument_usage_constraint; +} +#endif + +#ifdef __O3DB__ +void +SdaiDocument_usage_constraint::oodb_reInit () +{ eDesc = config_control_designe_document_usage_constraint; + attributes [0].aDesc = a_415source; + attributes [1].aDesc = a_416subject_element; + attributes [2].aDesc = a_417subject_element_value; +} +#endif + +SdaiDocument_usage_constraint::SdaiDocument_usage_constraint( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -29149,62 +56441,98 @@ SdaiDocument_usage_constraint::SdaiDocument_usage_constraint( STEPentity *se ) eDesc = config_control_designe_document_usage_constraint; - STEPattribute * a = new STEPattribute (*a_415source, (STEPentityH *) &_source); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_415source, (SCLP23(Application_instance_ptr) *) &_source); +#else + STEPattribute *a = new STEPattribute(*a_415source, (SCLP23(Application_instance_ptr) *) &_source); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_416subject_element, &_subject_element); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_416subject_element, &_subject_element); +#else + a = new STEPattribute(*a_416subject_element, &_subject_element); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_417subject_element_value, &_subject_element_value); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_417subject_element_value, &_subject_element_value); +#else + a = new STEPattribute(*a_417subject_element_value, &_subject_element_value); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiDocumentH -SdaiDocument_usage_constraint::Source() const - { return (SdaiDocumentH) _source; } +const SdaiDocument_ptr +SdaiDocument_usage_constraint::source_() const +{ + return (SdaiDocument_ptr) _source; +} void -SdaiDocument_usage_constraint::Source (SdaiDocumentH x) - { _source = x; } +SdaiDocument_usage_constraint::source_ (const SdaiDocument_ptr x) + +{ + _source = x; +} const SdaiLabel -SdaiDocument_usage_constraint::Subject_element() const - { return (const SdaiLabel) _subject_element; } +SdaiDocument_usage_constraint::subject_element_() const +{ + return (SdaiLabel) _subject_element; +} void -SdaiDocument_usage_constraint::Subject_element (const char * x) - { _subject_element = x; } +SdaiDocument_usage_constraint::subject_element_ (const SdaiLabel x) + +{ + _subject_element = x; +} const SdaiText -SdaiDocument_usage_constraint::Subject_element_value() const - { return (const SdaiText) _subject_element_value; } +SdaiDocument_usage_constraint::subject_element_value_() const +{ + return (SdaiText) _subject_element_value; +} void -SdaiDocument_usage_constraint::Subject_element_value (const char * x) - { _subject_element_value = x; } +SdaiDocument_usage_constraint::subject_element_value_ (const SdaiText x) -///////// END_ENTITY document_usage_constraint +{ + _subject_element_value = x; +} + +///////// END_ENTITY document_usage_constraint -///////// ENTITY vertex_point +///////// ENTITY vertex_point EntityDescriptor *config_control_designe_vertex_point =0; AttrDescriptor *a_418vertex_geometry =0; @@ -29215,18 +56543,95 @@ SdaiVertex_point::SdaiVertex_point( ) /* Ignore the first parent since it is */ /* part of the main inheritance hierarchy */ /* parent: SdaiGeometric_representation_item */ + HeadEntity(this); +#if 0 + /* Optionally use the following to replace the line following + the endif. Use this to turn off adding attributes in + diamond shaped hierarchies for each additional parent at this + level. You currently must hand edit this for it to work. */ + int attrFlags[3]; // e.g. + attrFlags[0] = 1; // add parents attrs + attrFlags[1] = 1; // add parent of parents attrs + attrFlags[2] = 0; // do not add parent of parent of parents attrs + // In *imaginary* hierarchy turn off attrFlags[2] since it + // would be the parent that has more than one path to it. + AppendMultInstance(new SdaiGeometric_representation_item(this, attrFlags)); +#endif AppendMultInstance(new SdaiGeometric_representation_item(this)); eDesc = config_control_designe_vertex_point; - STEPattribute * a = new STEPattribute (*a_418vertex_geometry, (STEPentityH *) &_vertex_geometry); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_418vertex_geometry, (SCLP23(Application_instance_ptr) *) &_vertex_geometry); +#else + STEPattribute *a = new STEPattribute(*a_418vertex_geometry, (SCLP23(Application_instance_ptr) *) &_vertex_geometry); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiVertex_point::SdaiVertex_point (SdaiVertex_point& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiVertex_point::~SdaiVertex_point () { } -SdaiVertex_point::SdaiVertex_point (STEPentity *se ) : SdaiVertex(se) + +#ifdef __OSTORE__ + +void +SdaiVertex_point::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiVertex_point: virtual access function." << G4endl; + SdaiVertex_point_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiVertex_point_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiVertex_point: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiVertex_point *ent = (SdaiVertex_point *)sent; +// SdaiVertex_point *ent = (SdaiVertex_point *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_vertex_point; + ent->attributes[2].aDesc = a_418vertex_geometry; + if(ent->_vertex_geometry == 0) + ent->_vertex_geometry = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiVertex_point(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiVertex_point::get_os_typespec()) + SdaiVertex_point; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiVertex_point::get_os_typespec()) +// SdaiVertex_point; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiVertex_point; +} +#endif + +#ifdef __O3DB__ +void +SdaiVertex_point::oodb_reInit () +{ eDesc = config_control_designe_vertex_point; + attributes [2].aDesc = a_418vertex_geometry; +} +#endif + +SdaiVertex_point::SdaiVertex_point (SCLP23(Application_instance) *se, int *addAttrs) : SdaiVertex(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -29235,27 +56640,53 @@ SdaiVertex_point::SdaiVertex_point (STEPentity *se ) : SdaiVertex(se) /* Ignore the first parent since it is */ /* part of the main inheritance hierarchy */ /* parent: SdaiGeometric_representation_item */ - se->AppendMultInstance(new SdaiGeometric_representation_item(se)); +#if 0 + /* Optionally use the following to replace the line following + the endif. Use this to turn off adding attributes in + diamond shaped hierarchies for each additional parent at this + level. You currently must hand edit this for it to work. */ + int attrFlags[3]; // e.g. + attrFlags[0] = 1; // add parents attrs + attrFlags[1] = 1; // add parent of parents attrs + attrFlags[2] = 0; // do not add parent of parent of parents attrs + // In *imaginary* hierarchy turn off attrFlags[2] since it + // would be the parent that has more than one path to it. + se->AppendMultInstance(new SdaiGeometric_representation_item(se, attrFlags)); +#endif + se->AppendMultInstance(new SdaiGeometric_representation_item(se, 0)); eDesc = config_control_designe_vertex_point; - STEPattribute * a = new STEPattribute (*a_418vertex_geometry, (STEPentityH *) &_vertex_geometry); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_418vertex_geometry, (SCLP23(Application_instance_ptr) *) &_vertex_geometry); +#else + STEPattribute *a = new STEPattribute(*a_418vertex_geometry, (SCLP23(Application_instance_ptr) *) &_vertex_geometry); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -SdaiPointH -SdaiVertex_point::Vertex_geometry() const - { return (SdaiPointH) _vertex_geometry; } +const SdaiPoint_ptr +SdaiVertex_point::vertex_geometry_() const +{ + return (SdaiPoint_ptr) _vertex_geometry; +} void -SdaiVertex_point::Vertex_geometry (SdaiPointH x) - { _vertex_geometry = x; } +SdaiVertex_point::vertex_geometry_ (const SdaiPoint_ptr x) + +{ + _vertex_geometry = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ @@ -29263,10 +56694,10 @@ SdaiVertex_point::Vertex_geometry (SdaiPointH x) #endif -///////// END_ENTITY vertex_point +///////// END_ENTITY vertex_point -///////// ENTITY cc_design_date_and_time_assignment +///////// ENTITY cc_design_date_and_time_assignment EntityDescriptor *config_control_designe_cc_design_date_and_time_assignment =0; AttrDescriptor *a_419items =0; @@ -29279,14 +56710,74 @@ SdaiCc_design_date_and_time_assignment::SdaiCc_design_date_and_time_assignment( eDesc = config_control_designe_cc_design_date_and_time_assignment; - STEPattribute * a = new STEPattribute (*a_419items, &_items); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_419items, &_items); +#else + STEPattribute *a = new STEPattribute(*a_419items, &_items); +#endif a -> set_null (); attributes.push (a); } SdaiCc_design_date_and_time_assignment::SdaiCc_design_date_and_time_assignment (SdaiCc_design_date_and_time_assignment& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiCc_design_date_and_time_assignment::~SdaiCc_design_date_and_time_assignment () { } -SdaiCc_design_date_and_time_assignment::SdaiCc_design_date_and_time_assignment (STEPentity *se ) : SdaiDate_and_time_assignment(se) + +#ifdef __OSTORE__ + +void +SdaiCc_design_date_and_time_assignment::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCc_design_date_and_time_assignment: virtual access function." << G4endl; + SdaiCc_design_date_and_time_assignment_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiCc_design_date_and_time_assignment_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCc_design_date_and_time_assignment: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiCc_design_date_and_time_assignment *ent = (SdaiCc_design_date_and_time_assignment *)sent; +// SdaiCc_design_date_and_time_assignment *ent = (SdaiCc_design_date_and_time_assignment *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_cc_design_date_and_time_assignment; + ent->attributes[2].aDesc = a_419items; +} + +SCLP23(Application_instance_ptr) +create_SdaiCc_design_date_and_time_assignment(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiCc_design_date_and_time_assignment::get_os_typespec()) + SdaiCc_design_date_and_time_assignment; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiCc_design_date_and_time_assignment::get_os_typespec()) +// SdaiCc_design_date_and_time_assignment; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiCc_design_date_and_time_assignment; +} +#endif + +#ifdef __O3DB__ +void +SdaiCc_design_date_and_time_assignment::oodb_reInit () +{ eDesc = config_control_designe_cc_design_date_and_time_assignment; + attributes [2].aDesc = a_419items; +} +#endif + +SdaiCc_design_date_and_time_assignment::SdaiCc_design_date_and_time_assignment (SCLP23(Application_instance) *se, int *addAttrs) : SdaiDate_and_time_assignment(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -29297,35 +56788,45 @@ SdaiCc_design_date_and_time_assignment::SdaiCc_design_date_and_time_assignment ( eDesc = config_control_designe_cc_design_date_and_time_assignment; - STEPattribute * a = new STEPattribute (*a_419items, &_items); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_419items, &_items); +#else + STEPattribute *a = new STEPattribute(*a_419items, &_items); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -const SdaiDate_time_itemsH -SdaiCc_design_date_and_time_assignment::Items() const - { return (SdaiDate_time_itemsH) &_items; } +const SdaiDate_time_items_ptr +SdaiCc_design_date_and_time_assignment::items_() const +{ + return (SdaiDate_time_items_ptr) &_items; +} void -SdaiCc_design_date_and_time_assignment::Items (SdaiDate_time_itemsH x) +SdaiCc_design_date_and_time_assignment::items_ (const SdaiDate_time_items_ptr x) + { _items.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY cc_design_date_and_time_assignment +///////// END_ENTITY cc_design_date_and_time_assignment -///////// ENTITY oriented_closed_shell +///////// ENTITY oriented_closed_shell EntityDescriptor *config_control_designe_oriented_closed_shell =0; AttrDescriptor *a_420closed_shell_element =0; AttrDescriptor *a_421orientation =0; -AttrDescriptor *a_422Dconnected_face_set_cfs_faces =0; +Derived_attribute *a_422Dconnected_face_set_cfs_faces =0; SdaiOriented_closed_shell::SdaiOriented_closed_shell( ) { @@ -29335,19 +56836,89 @@ SdaiOriented_closed_shell::SdaiOriented_closed_shell( ) eDesc = config_control_designe_oriented_closed_shell; - STEPattribute * a = new STEPattribute (*a_420closed_shell_element, (STEPentityH *) &_closed_shell_element); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_420closed_shell_element, (SCLP23(Application_instance_ptr) *) &_closed_shell_element); +#else + STEPattribute *a = new STEPattribute(*a_420closed_shell_element, (SCLP23(Application_instance_ptr) *) &_closed_shell_element); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_421orientation, &_orientation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_421orientation, &_orientation); +#else + a = new STEPattribute(*a_421orientation, &_orientation); +#endif a -> set_null (); attributes.push (a); MakeDerived ("cfs_faces"); } SdaiOriented_closed_shell::SdaiOriented_closed_shell (SdaiOriented_closed_shell& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiOriented_closed_shell::~SdaiOriented_closed_shell () { } -SdaiOriented_closed_shell::SdaiOriented_closed_shell (STEPentity *se ) : SdaiClosed_shell(se) + +#ifdef __OSTORE__ + +void +SdaiOriented_closed_shell::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOriented_closed_shell: virtual access function." << G4endl; + SdaiOriented_closed_shell_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiOriented_closed_shell_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOriented_closed_shell: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiOriented_closed_shell *ent = (SdaiOriented_closed_shell *)sent; +// SdaiOriented_closed_shell *ent = (SdaiOriented_closed_shell *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_oriented_closed_shell; + ent->attributes[2].aDesc = a_420closed_shell_element; + if(ent->_closed_shell_element == 0) + ent->_closed_shell_element = S_ENTITY_NULL; + ent->attributes[3].aDesc = a_421orientation; +} + +SCLP23(Application_instance_ptr) +create_SdaiOriented_closed_shell(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiOriented_closed_shell::get_os_typespec()) + SdaiOriented_closed_shell; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiOriented_closed_shell::get_os_typespec()) +// SdaiOriented_closed_shell; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiOriented_closed_shell; +} +#endif + +#ifdef __O3DB__ +void +SdaiOriented_closed_shell::oodb_reInit () +{ eDesc = config_control_designe_oriented_closed_shell; + attributes [2].aDesc = a_420closed_shell_element; + attributes [3].aDesc = a_421orientation; +} +#endif + +SdaiOriented_closed_shell::SdaiOriented_closed_shell (SCLP23(Application_instance) *se, int *addAttrs) : SdaiClosed_shell(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -29358,48 +56929,72 @@ SdaiOriented_closed_shell::SdaiOriented_closed_shell (STEPentity *se ) : SdaiClo eDesc = config_control_designe_oriented_closed_shell; - STEPattribute * a = new STEPattribute (*a_420closed_shell_element, (STEPentityH *) &_closed_shell_element); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_420closed_shell_element, (SCLP23(Application_instance_ptr) *) &_closed_shell_element); +#else + STEPattribute *a = new STEPattribute(*a_420closed_shell_element, (SCLP23(Application_instance_ptr) *) &_closed_shell_element); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_421orientation, &_orientation); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_421orientation, &_orientation); +#else + a = new STEPattribute(*a_421orientation, &_orientation); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); MakeDerived ("cfs_faces"); } -SdaiClosed_shellH -SdaiOriented_closed_shell::Closed_shell_element() const - { return (SdaiClosed_shellH) _closed_shell_element; } +const SdaiClosed_shell_ptr +SdaiOriented_closed_shell::closed_shell_element_() const +{ + return (SdaiClosed_shell_ptr) _closed_shell_element; +} void -SdaiOriented_closed_shell::Closed_shell_element (SdaiClosed_shellH x) - { _closed_shell_element = x; } +SdaiOriented_closed_shell::closed_shell_element_ (const SdaiClosed_shell_ptr x) -const BOOLEAN -SdaiOriented_closed_shell::Orientation() const - { return (LOGICAL) _orientation; } +{ + _closed_shell_element = x; +} + +const SCLBOOL(Bool) +SdaiOriented_closed_shell::orientation_() const +{ + return (SCLBOOL(Bool)) _orientation; +} void -SdaiOriented_closed_shell::Orientation (BOOLEAN x) - { _orientation.put (x); } +SdaiOriented_closed_shell::orientation_ (const SCLBOOL(Bool) x) + +{ + _orientation.put (x); +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY oriented_closed_shell +///////// END_ENTITY oriented_closed_shell -///////// ENTITY person_and_organization +///////// ENTITY person_and_organization EntityDescriptor *config_control_designe_person_and_organization =0; AttrDescriptor *a_423the_person =0; @@ -29411,18 +57006,90 @@ SdaiPerson_and_organization::SdaiPerson_and_organization( ) eDesc = config_control_designe_person_and_organization; - STEPattribute * a = new STEPattribute (*a_423the_person, (STEPentityH *) &_the_person); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_423the_person, (SCLP23(Application_instance_ptr) *) &_the_person); +#else + STEPattribute *a = new STEPattribute(*a_423the_person, (SCLP23(Application_instance_ptr) *) &_the_person); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_424the_organization, (STEPentityH *) &_the_organization); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_424the_organization, (SCLP23(Application_instance_ptr) *) &_the_organization); +#else + a = new STEPattribute(*a_424the_organization, (SCLP23(Application_instance_ptr) *) &_the_organization); +#endif a -> set_null (); attributes.push (a); } SdaiPerson_and_organization::SdaiPerson_and_organization (SdaiPerson_and_organization& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiPerson_and_organization::~SdaiPerson_and_organization () { } -SdaiPerson_and_organization::SdaiPerson_and_organization( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiPerson_and_organization::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPerson_and_organization: virtual access function." << G4endl; + SdaiPerson_and_organization_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiPerson_and_organization_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPerson_and_organization: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiPerson_and_organization *ent = (SdaiPerson_and_organization *)sent; +// SdaiPerson_and_organization *ent = (SdaiPerson_and_organization *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_person_and_organization; + ent->attributes[0].aDesc = a_423the_person; + if(ent->_the_person == 0) + ent->_the_person = S_ENTITY_NULL; + ent->attributes[1].aDesc = a_424the_organization; + if(ent->_the_organization == 0) + ent->_the_organization = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiPerson_and_organization(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiPerson_and_organization::get_os_typespec()) + SdaiPerson_and_organization; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiPerson_and_organization::get_os_typespec()) +// SdaiPerson_and_organization; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiPerson_and_organization; +} +#endif + +#ifdef __O3DB__ +void +SdaiPerson_and_organization::oodb_reInit () +{ eDesc = config_control_designe_person_and_organization; + attributes [0].aDesc = a_423the_person; + attributes [1].aDesc = a_424the_organization; +} +#endif + +SdaiPerson_and_organization::SdaiPerson_and_organization( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -29431,45 +57098,69 @@ SdaiPerson_and_organization::SdaiPerson_and_organization( STEPentity *se ) eDesc = config_control_designe_person_and_organization; - STEPattribute * a = new STEPattribute (*a_423the_person, (STEPentityH *) &_the_person); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_423the_person, (SCLP23(Application_instance_ptr) *) &_the_person); +#else + STEPattribute *a = new STEPattribute(*a_423the_person, (SCLP23(Application_instance_ptr) *) &_the_person); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_424the_organization, (STEPentityH *) &_the_organization); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_424the_organization, (SCLP23(Application_instance_ptr) *) &_the_organization); +#else + a = new STEPattribute(*a_424the_organization, (SCLP23(Application_instance_ptr) *) &_the_organization); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiPersonH -SdaiPerson_and_organization::The_person() const - { return (SdaiPersonH) _the_person; } +const SdaiPerson_ptr +SdaiPerson_and_organization::the_person_() const +{ + return (SdaiPerson_ptr) _the_person; +} void -SdaiPerson_and_organization::The_person (SdaiPersonH x) - { _the_person = x; } +SdaiPerson_and_organization::the_person_ (const SdaiPerson_ptr x) -SdaiOrganizationH -SdaiPerson_and_organization::The_organization() const - { return (SdaiOrganizationH) _the_organization; } +{ + _the_person = x; +} + +const SdaiOrganization_ptr +SdaiPerson_and_organization::the_organization_() const +{ + return (SdaiOrganization_ptr) _the_organization; +} void -SdaiPerson_and_organization::The_organization (SdaiOrganizationH x) - { _the_organization = x; } +SdaiPerson_and_organization::the_organization_ (const SdaiOrganization_ptr x) -///////// END_ENTITY person_and_organization +{ + _the_organization = x; +} + +///////// END_ENTITY person_and_organization -///////// ENTITY cylindrical_surface +///////// ENTITY cylindrical_surface EntityDescriptor *config_control_designe_cylindrical_surface =0; AttrDescriptor *a_425radius =0; @@ -29482,14 +57173,75 @@ SdaiCylindrical_surface::SdaiCylindrical_surface( ) eDesc = config_control_designe_cylindrical_surface; - STEPattribute * a = new STEPattribute (*a_425radius, &_radius); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_425radius, &_radius); +#else + STEPattribute *a = new STEPattribute(*a_425radius, &_radius); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiCylindrical_surface::SdaiCylindrical_surface (SdaiCylindrical_surface& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiCylindrical_surface::~SdaiCylindrical_surface () { } -SdaiCylindrical_surface::SdaiCylindrical_surface (STEPentity *se ) : SdaiElementary_surface(se) + +#ifdef __OSTORE__ + +void +SdaiCylindrical_surface::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCylindrical_surface: virtual access function." << G4endl; + SdaiCylindrical_surface_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiCylindrical_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiCylindrical_surface: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiCylindrical_surface *ent = (SdaiCylindrical_surface *)sent; +// SdaiCylindrical_surface *ent = (SdaiCylindrical_surface *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_cylindrical_surface; + ent->attributes[2].aDesc = a_425radius; +} + +SCLP23(Application_instance_ptr) +create_SdaiCylindrical_surface(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiCylindrical_surface::get_os_typespec()) + SdaiCylindrical_surface; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiCylindrical_surface::get_os_typespec()) +// SdaiCylindrical_surface; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiCylindrical_surface; +} +#endif + +#ifdef __O3DB__ +void +SdaiCylindrical_surface::oodb_reInit () +{ eDesc = config_control_designe_cylindrical_surface; + attributes [2].aDesc = a_425radius; +} +#endif + +SdaiCylindrical_surface::SdaiCylindrical_surface (SCLP23(Application_instance) *se, int *addAttrs) : SdaiElementary_surface(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -29500,30 +57252,43 @@ SdaiCylindrical_surface::SdaiCylindrical_surface (STEPentity *se ) : SdaiElement eDesc = config_control_designe_cylindrical_surface; - STEPattribute * a = new STEPattribute (*a_425radius, &_radius); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_425radius, &_radius); +#else + STEPattribute *a = new STEPattribute(*a_425radius, &_radius); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } const SdaiPositive_length_measure -SdaiCylindrical_surface::Radius() const - { return (const SdaiPositive_length_measure) _radius; } +SdaiCylindrical_surface::radius_() const +{ + return (SdaiPositive_length_measure) _radius; +} void -SdaiCylindrical_surface::Radius (SdaiPositive_length_measure x) - { _radius = x; } +SdaiCylindrical_surface::radius_ (const SdaiPositive_length_measure x) + +{ + _radius = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY cylindrical_surface +///////// END_ENTITY cylindrical_surface -///////// ENTITY local_time +///////// ENTITY local_time EntityDescriptor *config_control_designe_local_time =0; AttrDescriptor *a_426hour_component =0; @@ -29537,26 +57302,112 @@ SdaiLocal_time::SdaiLocal_time( ) eDesc = config_control_designe_local_time; - STEPattribute * a = new STEPattribute (*a_426hour_component, &_hour_component); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_426hour_component, &_hour_component); +#else + STEPattribute *a = new STEPattribute(*a_426hour_component, &_hour_component); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_427minute_component, &_minute_component); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_427minute_component, &_minute_component); +#else + a = new STEPattribute(*a_427minute_component, &_minute_component); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_428second_component, &_second_component); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_428second_component, &_second_component); +#else + a = new STEPattribute(*a_428second_component, &_second_component); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_429zone, (STEPentityH *) &_zone); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_429zone, (SCLP23(Application_instance_ptr) *) &_zone); +#else + a = new STEPattribute(*a_429zone, (SCLP23(Application_instance_ptr) *) &_zone); +#endif a -> set_null (); attributes.push (a); } SdaiLocal_time::SdaiLocal_time (SdaiLocal_time& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiLocal_time::~SdaiLocal_time () { } -SdaiLocal_time::SdaiLocal_time( STEPentity *se ) + +#ifdef __OSTORE__ + +void +SdaiLocal_time::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiLocal_time: virtual access function." << G4endl; + SdaiLocal_time_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiLocal_time_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiLocal_time: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiLocal_time *ent = (SdaiLocal_time *)sent; +// SdaiLocal_time *ent = (SdaiLocal_time *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_local_time; + ent->attributes[0].aDesc = a_426hour_component; + ent->attributes[1].aDesc = a_427minute_component; + ent->attributes[2].aDesc = a_428second_component; + ent->attributes[3].aDesc = a_429zone; + if(ent->_zone == 0) + ent->_zone = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiLocal_time(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiLocal_time::get_os_typespec()) + SdaiLocal_time; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiLocal_time::get_os_typespec()) +// SdaiLocal_time; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiLocal_time; +} +#endif + +#ifdef __O3DB__ +void +SdaiLocal_time::oodb_reInit () +{ eDesc = config_control_designe_local_time; + attributes [0].aDesc = a_426hour_component; + attributes [1].aDesc = a_427minute_component; + attributes [2].aDesc = a_428second_component; + attributes [3].aDesc = a_429zone; +} +#endif + +SdaiLocal_time::SdaiLocal_time( SCLP23(Application_instance) *se, int *addAttrs) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -29565,79 +57416,127 @@ SdaiLocal_time::SdaiLocal_time( STEPentity *se ) eDesc = config_control_designe_local_time; - STEPattribute * a = new STEPattribute (*a_426hour_component, &_hour_component); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_426hour_component, &_hour_component); +#else + STEPattribute *a = new STEPattribute(*a_426hour_component, &_hour_component); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_427minute_component, &_minute_component); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_427minute_component, &_minute_component); +#else + a = new STEPattribute(*a_427minute_component, &_minute_component); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_428second_component, &_second_component); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_428second_component, &_second_component); +#else + a = new STEPattribute(*a_428second_component, &_second_component); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_429zone, (STEPentityH *) &_zone); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_429zone, (SCLP23(Application_instance_ptr) *) &_zone); +#else + a = new STEPattribute(*a_429zone, (SCLP23(Application_instance_ptr) *) &_zone); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } const SdaiHour_in_day -SdaiLocal_time::Hour_component() const - { return (const SdaiHour_in_day) _hour_component; } +SdaiLocal_time::hour_component_() const +{ + return (SdaiHour_in_day) _hour_component; +} void -SdaiLocal_time::Hour_component (SdaiHour_in_day x) - { _hour_component = x; } +SdaiLocal_time::hour_component_ (const SdaiHour_in_day x) + +{ + _hour_component = x; +} const SdaiMinute_in_hour -SdaiLocal_time::Minute_component() const - { return (const SdaiMinute_in_hour) _minute_component; } +SdaiLocal_time::minute_component_() const +{ + return (SdaiMinute_in_hour) _minute_component; +} void -SdaiLocal_time::Minute_component (SdaiMinute_in_hour x) - { _minute_component = x; } +SdaiLocal_time::minute_component_ (const SdaiMinute_in_hour x) + +{ + _minute_component = x; +} const SdaiSecond_in_minute -SdaiLocal_time::Second_component() const - { return (const SdaiSecond_in_minute) _second_component; } +SdaiLocal_time::second_component_() const +{ + return (SdaiSecond_in_minute) _second_component; +} void -SdaiLocal_time::Second_component (SdaiSecond_in_minute x) - { _second_component = x; } +SdaiLocal_time::second_component_ (const SdaiSecond_in_minute x) -SdaiCoordinated_universal_time_offsetH -SdaiLocal_time::Zone() const - { return (SdaiCoordinated_universal_time_offsetH) _zone; } +{ + _second_component = x; +} + +const SdaiCoordinated_universal_time_offset_ptr +SdaiLocal_time::zone_() const +{ + return (SdaiCoordinated_universal_time_offset_ptr) _zone; +} void -SdaiLocal_time::Zone (SdaiCoordinated_universal_time_offsetH x) - { _zone = x; } +SdaiLocal_time::zone_ (const SdaiCoordinated_universal_time_offset_ptr x) -///////// END_ENTITY local_time +{ + _zone = x; +} + +///////// END_ENTITY local_time -///////// ENTITY mass_unit +///////// ENTITY mass_unit EntityDescriptor *config_control_designe_mass_unit =0; SdaiMass_unit::SdaiMass_unit( ) @@ -29650,9 +57549,61 @@ SdaiMass_unit::SdaiMass_unit( ) eDesc = config_control_designe_mass_unit; } SdaiMass_unit::SdaiMass_unit (SdaiMass_unit& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiMass_unit::~SdaiMass_unit () { } -SdaiMass_unit::SdaiMass_unit (STEPentity *se ) : SdaiNamed_unit(se) + +#ifdef __OSTORE__ + +void +SdaiMass_unit::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiMass_unit: virtual access function." << G4endl; + SdaiMass_unit_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiMass_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiMass_unit: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiMass_unit *ent = (SdaiMass_unit *)sent; +// SdaiMass_unit *ent = (SdaiMass_unit *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_mass_unit; +} + +SCLP23(Application_instance_ptr) +create_SdaiMass_unit(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiMass_unit::get_os_typespec()) + SdaiMass_unit; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiMass_unit::get_os_typespec()) +// SdaiMass_unit; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiMass_unit; +} +#endif + +#ifdef __O3DB__ +void +SdaiMass_unit::oodb_reInit () +{ eDesc = config_control_designe_mass_unit; +} +#endif + +SdaiMass_unit::SdaiMass_unit (SCLP23(Application_instance) *se, int *addAttrs) : SdaiNamed_unit(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -29666,10 +57617,10 @@ SdaiMass_unit::SdaiMass_unit (STEPentity *se ) : SdaiNamed_unit(se) /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY mass_unit +///////// END_ENTITY mass_unit -///////// ENTITY vertex_shell +///////// ENTITY vertex_shell EntityDescriptor *config_control_designe_vertex_shell =0; AttrDescriptor *a_430vertex_shell_extent =0; @@ -29682,14 +57633,76 @@ SdaiVertex_shell::SdaiVertex_shell( ) eDesc = config_control_designe_vertex_shell; - STEPattribute * a = new STEPattribute (*a_430vertex_shell_extent, (STEPentityH *) &_vertex_shell_extent); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_430vertex_shell_extent, (SCLP23(Application_instance_ptr) *) &_vertex_shell_extent); +#else + STEPattribute *a = new STEPattribute(*a_430vertex_shell_extent, (SCLP23(Application_instance_ptr) *) &_vertex_shell_extent); +#endif a -> set_null (); attributes.push (a); } SdaiVertex_shell::SdaiVertex_shell (SdaiVertex_shell& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiVertex_shell::~SdaiVertex_shell () { } -SdaiVertex_shell::SdaiVertex_shell (STEPentity *se ) : SdaiTopological_representation_item(se) + +#ifdef __OSTORE__ + +void +SdaiVertex_shell::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiVertex_shell: virtual access function." << G4endl; + SdaiVertex_shell_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiVertex_shell_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiVertex_shell: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiVertex_shell *ent = (SdaiVertex_shell *)sent; +// SdaiVertex_shell *ent = (SdaiVertex_shell *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_vertex_shell; + ent->attributes[1].aDesc = a_430vertex_shell_extent; + if(ent->_vertex_shell_extent == 0) + ent->_vertex_shell_extent = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiVertex_shell(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiVertex_shell::get_os_typespec()) + SdaiVertex_shell; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiVertex_shell::get_os_typespec()) +// SdaiVertex_shell; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiVertex_shell; +} +#endif + +#ifdef __O3DB__ +void +SdaiVertex_shell::oodb_reInit () +{ eDesc = config_control_designe_vertex_shell; + attributes [1].aDesc = a_430vertex_shell_extent; +} +#endif + +SdaiVertex_shell::SdaiVertex_shell (SCLP23(Application_instance) *se, int *addAttrs) : SdaiTopological_representation_item(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -29700,30 +57713,42 @@ SdaiVertex_shell::SdaiVertex_shell (STEPentity *se ) : SdaiTopological_represent eDesc = config_control_designe_vertex_shell; - STEPattribute * a = new STEPattribute (*a_430vertex_shell_extent, (STEPentityH *) &_vertex_shell_extent); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_430vertex_shell_extent, (SCLP23(Application_instance_ptr) *) &_vertex_shell_extent); +#else + STEPattribute *a = new STEPattribute(*a_430vertex_shell_extent, (SCLP23(Application_instance_ptr) *) &_vertex_shell_extent); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiVertex_loopH -SdaiVertex_shell::Vertex_shell_extent() const - { return (SdaiVertex_loopH) _vertex_shell_extent; } +const SdaiVertex_loop_ptr +SdaiVertex_shell::vertex_shell_extent_() const +{ + return (SdaiVertex_loop_ptr) _vertex_shell_extent; +} void -SdaiVertex_shell::Vertex_shell_extent (SdaiVertex_loopH x) - { _vertex_shell_extent = x; } +SdaiVertex_shell::vertex_shell_extent_ (const SdaiVertex_loop_ptr x) + +{ + _vertex_shell_extent = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY vertex_shell +///////// END_ENTITY vertex_shell -///////// ENTITY poly_loop +///////// ENTITY poly_loop EntityDescriptor *config_control_designe_poly_loop =0; AttrDescriptor *a_431polygon =0; @@ -29734,18 +57759,93 @@ SdaiPoly_loop::SdaiPoly_loop( ) /* Ignore the first parent since it is */ /* part of the main inheritance hierarchy */ /* parent: SdaiGeometric_representation_item */ + HeadEntity(this); +#if 0 + /* Optionally use the following to replace the line following + the endif. Use this to turn off adding attributes in + diamond shaped hierarchies for each additional parent at this + level. You currently must hand edit this for it to work. */ + int attrFlags[3]; // e.g. + attrFlags[0] = 1; // add parents attrs + attrFlags[1] = 1; // add parent of parents attrs + attrFlags[2] = 0; // do not add parent of parent of parents attrs + // In *imaginary* hierarchy turn off attrFlags[2] since it + // would be the parent that has more than one path to it. + AppendMultInstance(new SdaiGeometric_representation_item(this, attrFlags)); +#endif AppendMultInstance(new SdaiGeometric_representation_item(this)); eDesc = config_control_designe_poly_loop; - STEPattribute * a = new STEPattribute (*a_431polygon, &_polygon); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_431polygon, &_polygon); +#else + STEPattribute *a = new STEPattribute(*a_431polygon, &_polygon); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiPoly_loop::SdaiPoly_loop (SdaiPoly_loop& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiPoly_loop::~SdaiPoly_loop () { } -SdaiPoly_loop::SdaiPoly_loop (STEPentity *se ) : SdaiLoop(se) + +#ifdef __OSTORE__ + +void +SdaiPoly_loop::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPoly_loop: virtual access function." << G4endl; + SdaiPoly_loop_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiPoly_loop_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiPoly_loop: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiPoly_loop *ent = (SdaiPoly_loop *)sent; +// SdaiPoly_loop *ent = (SdaiPoly_loop *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_poly_loop; + ent->attributes[2].aDesc = a_431polygon; +} + +SCLP23(Application_instance_ptr) +create_SdaiPoly_loop(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiPoly_loop::get_os_typespec()) + SdaiPoly_loop; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiPoly_loop::get_os_typespec()) +// SdaiPoly_loop; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiPoly_loop; +} +#endif + +#ifdef __O3DB__ +void +SdaiPoly_loop::oodb_reInit () +{ eDesc = config_control_designe_poly_loop; + attributes [2].aDesc = a_431polygon; +} +#endif + +SdaiPoly_loop::SdaiPoly_loop (SCLP23(Application_instance) *se, int *addAttrs) : SdaiLoop(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -29754,26 +57854,50 @@ SdaiPoly_loop::SdaiPoly_loop (STEPentity *se ) : SdaiLoop(se) /* Ignore the first parent since it is */ /* part of the main inheritance hierarchy */ /* parent: SdaiGeometric_representation_item */ - se->AppendMultInstance(new SdaiGeometric_representation_item(se)); +#if 0 + /* Optionally use the following to replace the line following + the endif. Use this to turn off adding attributes in + diamond shaped hierarchies for each additional parent at this + level. You currently must hand edit this for it to work. */ + int attrFlags[3]; // e.g. + attrFlags[0] = 1; // add parents attrs + attrFlags[1] = 1; // add parent of parents attrs + attrFlags[2] = 0; // do not add parent of parent of parents attrs + // In *imaginary* hierarchy turn off attrFlags[2] since it + // would be the parent that has more than one path to it. + se->AppendMultInstance(new SdaiGeometric_representation_item(se, attrFlags)); +#endif + se->AppendMultInstance(new SdaiGeometric_representation_item(se, 0)); eDesc = config_control_designe_poly_loop; - STEPattribute * a = new STEPattribute (*a_431polygon, &_polygon); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_431polygon, &_polygon); +#else + STEPattribute *a = new STEPattribute(*a_431polygon, &_polygon); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -const EntityAggregateH -SdaiPoly_loop::Polygon() const - { return (EntityAggregateH) &_polygon; } +const EntityAggregate_ptr +SdaiPoly_loop::polygon_() const +{ + return (EntityAggregate_ptr) &_polygon; +} void -SdaiPoly_loop::Polygon (EntityAggregateH x) +SdaiPoly_loop::polygon_ (const EntityAggregate_ptr x) + { _polygon.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ @@ -29782,10 +57906,10 @@ SdaiPoly_loop::Polygon (EntityAggregateH x) #endif -///////// END_ENTITY poly_loop +///////// END_ENTITY poly_loop -///////// ENTITY wire_shell +///////// ENTITY wire_shell EntityDescriptor *config_control_designe_wire_shell =0; AttrDescriptor *a_432wire_shell_extent =0; @@ -29798,14 +57922,74 @@ SdaiWire_shell::SdaiWire_shell( ) eDesc = config_control_designe_wire_shell; - STEPattribute * a = new STEPattribute (*a_432wire_shell_extent, &_wire_shell_extent); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_432wire_shell_extent, &_wire_shell_extent); +#else + STEPattribute *a = new STEPattribute(*a_432wire_shell_extent, &_wire_shell_extent); +#endif a -> set_null (); attributes.push (a); } SdaiWire_shell::SdaiWire_shell (SdaiWire_shell& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiWire_shell::~SdaiWire_shell () { } -SdaiWire_shell::SdaiWire_shell (STEPentity *se ) : SdaiTopological_representation_item(se) + +#ifdef __OSTORE__ + +void +SdaiWire_shell::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiWire_shell: virtual access function." << G4endl; + SdaiWire_shell_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiWire_shell_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiWire_shell: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiWire_shell *ent = (SdaiWire_shell *)sent; +// SdaiWire_shell *ent = (SdaiWire_shell *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_wire_shell; + ent->attributes[1].aDesc = a_432wire_shell_extent; +} + +SCLP23(Application_instance_ptr) +create_SdaiWire_shell(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiWire_shell::get_os_typespec()) + SdaiWire_shell; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiWire_shell::get_os_typespec()) +// SdaiWire_shell; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiWire_shell; +} +#endif + +#ifdef __O3DB__ +void +SdaiWire_shell::oodb_reInit () +{ eDesc = config_control_designe_wire_shell; + attributes [1].aDesc = a_432wire_shell_extent; +} +#endif + +SdaiWire_shell::SdaiWire_shell (SCLP23(Application_instance) *se, int *addAttrs) : SdaiTopological_representation_item(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -29816,30 +58000,40 @@ SdaiWire_shell::SdaiWire_shell (STEPentity *se ) : SdaiTopological_representatio eDesc = config_control_designe_wire_shell; - STEPattribute * a = new STEPattribute (*a_432wire_shell_extent, &_wire_shell_extent); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_432wire_shell_extent, &_wire_shell_extent); +#else + STEPattribute *a = new STEPattribute(*a_432wire_shell_extent, &_wire_shell_extent); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -const EntityAggregateH -SdaiWire_shell::Wire_shell_extent() const - { return (EntityAggregateH) &_wire_shell_extent; } +const EntityAggregate_ptr +SdaiWire_shell::wire_shell_extent_() const +{ + return (EntityAggregate_ptr) &_wire_shell_extent; +} void -SdaiWire_shell::Wire_shell_extent (EntityAggregateH x) +SdaiWire_shell::wire_shell_extent_ (const EntityAggregate_ptr x) + { _wire_shell_extent.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY wire_shell +///////// END_ENTITY wire_shell -///////// ENTITY area_unit +///////// ENTITY area_unit EntityDescriptor *config_control_designe_area_unit =0; SdaiArea_unit::SdaiArea_unit( ) @@ -29852,9 +58046,61 @@ SdaiArea_unit::SdaiArea_unit( ) eDesc = config_control_designe_area_unit; } SdaiArea_unit::SdaiArea_unit (SdaiArea_unit& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiArea_unit::~SdaiArea_unit () { } -SdaiArea_unit::SdaiArea_unit (STEPentity *se ) : SdaiNamed_unit(se) + +#ifdef __OSTORE__ + +void +SdaiArea_unit::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiArea_unit: virtual access function." << G4endl; + SdaiArea_unit_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiArea_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiArea_unit: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiArea_unit *ent = (SdaiArea_unit *)sent; +// SdaiArea_unit *ent = (SdaiArea_unit *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_area_unit; +} + +SCLP23(Application_instance_ptr) +create_SdaiArea_unit(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiArea_unit::get_os_typespec()) + SdaiArea_unit; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiArea_unit::get_os_typespec()) +// SdaiArea_unit; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiArea_unit; +} +#endif + +#ifdef __O3DB__ +void +SdaiArea_unit::oodb_reInit () +{ eDesc = config_control_designe_area_unit; +} +#endif + +SdaiArea_unit::SdaiArea_unit (SCLP23(Application_instance) *se, int *addAttrs) : SdaiNamed_unit(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -29868,10 +58114,10 @@ SdaiArea_unit::SdaiArea_unit (STEPentity *se ) : SdaiNamed_unit(se) /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY area_unit +///////// END_ENTITY area_unit -///////// ENTITY mapped_item +///////// ENTITY mapped_item EntityDescriptor *config_control_designe_mapped_item =0; AttrDescriptor *a_433mapping_source =0; @@ -29885,18 +58131,90 @@ SdaiMapped_item::SdaiMapped_item( ) eDesc = config_control_designe_mapped_item; - STEPattribute * a = new STEPattribute (*a_433mapping_source, (STEPentityH *) &_mapping_source); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_433mapping_source, (SCLP23(Application_instance_ptr) *) &_mapping_source); +#else + STEPattribute *a = new STEPattribute(*a_433mapping_source, (SCLP23(Application_instance_ptr) *) &_mapping_source); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_434mapping_target, (STEPentityH *) &_mapping_target); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_434mapping_target, (SCLP23(Application_instance_ptr) *) &_mapping_target); +#else + a = new STEPattribute(*a_434mapping_target, (SCLP23(Application_instance_ptr) *) &_mapping_target); +#endif a -> set_null (); attributes.push (a); } SdaiMapped_item::SdaiMapped_item (SdaiMapped_item& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiMapped_item::~SdaiMapped_item () { } -SdaiMapped_item::SdaiMapped_item (STEPentity *se ) : SdaiRepresentation_item(se) + +#ifdef __OSTORE__ + +void +SdaiMapped_item::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiMapped_item: virtual access function." << G4endl; + SdaiMapped_item_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiMapped_item_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiMapped_item: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiMapped_item *ent = (SdaiMapped_item *)sent; +// SdaiMapped_item *ent = (SdaiMapped_item *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_mapped_item; + ent->attributes[1].aDesc = a_433mapping_source; + if(ent->_mapping_source == 0) + ent->_mapping_source = S_ENTITY_NULL; + ent->attributes[2].aDesc = a_434mapping_target; + if(ent->_mapping_target == 0) + ent->_mapping_target = S_ENTITY_NULL; +} + +SCLP23(Application_instance_ptr) +create_SdaiMapped_item(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiMapped_item::get_os_typespec()) + SdaiMapped_item; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiMapped_item::get_os_typespec()) +// SdaiMapped_item; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiMapped_item; +} +#endif + +#ifdef __O3DB__ +void +SdaiMapped_item::oodb_reInit () +{ eDesc = config_control_designe_mapped_item; + attributes [1].aDesc = a_433mapping_source; + attributes [2].aDesc = a_434mapping_target; +} +#endif + +SdaiMapped_item::SdaiMapped_item (SCLP23(Application_instance) *se, int *addAttrs) : SdaiRepresentation_item(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -29907,47 +58225,71 @@ SdaiMapped_item::SdaiMapped_item (STEPentity *se ) : SdaiRepresentation_item(se) eDesc = config_control_designe_mapped_item; - STEPattribute * a = new STEPattribute (*a_433mapping_source, (STEPentityH *) &_mapping_source); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_433mapping_source, (SCLP23(Application_instance_ptr) *) &_mapping_source); +#else + STEPattribute *a = new STEPattribute(*a_433mapping_source, (SCLP23(Application_instance_ptr) *) &_mapping_source); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_434mapping_target, (STEPentityH *) &_mapping_target); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_434mapping_target, (SCLP23(Application_instance_ptr) *) &_mapping_target); +#else + a = new STEPattribute(*a_434mapping_target, (SCLP23(Application_instance_ptr) *) &_mapping_target); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -SdaiRepresentation_mapH -SdaiMapped_item::Mapping_source() const - { return (SdaiRepresentation_mapH) _mapping_source; } +const SdaiRepresentation_map_ptr +SdaiMapped_item::mapping_source_() const +{ + return (SdaiRepresentation_map_ptr) _mapping_source; +} void -SdaiMapped_item::Mapping_source (SdaiRepresentation_mapH x) - { _mapping_source = x; } +SdaiMapped_item::mapping_source_ (const SdaiRepresentation_map_ptr x) -SdaiRepresentation_itemH -SdaiMapped_item::Mapping_target() const - { return (SdaiRepresentation_itemH) _mapping_target; } +{ + _mapping_source = x; +} + +const SdaiRepresentation_item_ptr +SdaiMapped_item::mapping_target_() const +{ + return (SdaiRepresentation_item_ptr) _mapping_target; +} void -SdaiMapped_item::Mapping_target (SdaiRepresentation_itemH x) - { _mapping_target = x; } +SdaiMapped_item::mapping_target_ (const SdaiRepresentation_item_ptr x) + +{ + _mapping_target = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY mapped_item +///////// END_ENTITY mapped_item -///////// ENTITY offset_curve_2d +///////// ENTITY offset_curve_2d EntityDescriptor *config_control_designe_offset_curve_2d =0; AttrDescriptor *a_435basis_curve =0; @@ -29962,22 +58304,101 @@ SdaiOffset_curve_2d::SdaiOffset_curve_2d( ) eDesc = config_control_designe_offset_curve_2d; - STEPattribute * a = new STEPattribute (*a_435basis_curve, (STEPentityH *) &_basis_curve); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_435basis_curve, (SCLP23(Application_instance_ptr) *) &_basis_curve); +#else + STEPattribute *a = new STEPattribute(*a_435basis_curve, (SCLP23(Application_instance_ptr) *) &_basis_curve); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_436distance, &_distance); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_436distance, &_distance); +#else + a = new STEPattribute(*a_436distance, &_distance); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_437self_intersect, &_self_intersect); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_437self_intersect, &_self_intersect); +#else + a = new STEPattribute(*a_437self_intersect, &_self_intersect); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiOffset_curve_2d::SdaiOffset_curve_2d (SdaiOffset_curve_2d& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiOffset_curve_2d::~SdaiOffset_curve_2d () { } -SdaiOffset_curve_2d::SdaiOffset_curve_2d (STEPentity *se ) : SdaiCurve(se) + +#ifdef __OSTORE__ + +void +SdaiOffset_curve_2d::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOffset_curve_2d: virtual access function." << G4endl; + SdaiOffset_curve_2d_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiOffset_curve_2d_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiOffset_curve_2d: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiOffset_curve_2d *ent = (SdaiOffset_curve_2d *)sent; +// SdaiOffset_curve_2d *ent = (SdaiOffset_curve_2d *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_offset_curve_2d; + ent->attributes[1].aDesc = a_435basis_curve; + if(ent->_basis_curve == 0) + ent->_basis_curve = S_ENTITY_NULL; + ent->attributes[2].aDesc = a_436distance; + ent->attributes[3].aDesc = a_437self_intersect; +} + +SCLP23(Application_instance_ptr) +create_SdaiOffset_curve_2d(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiOffset_curve_2d::get_os_typespec()) + SdaiOffset_curve_2d; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiOffset_curve_2d::get_os_typespec()) +// SdaiOffset_curve_2d; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiOffset_curve_2d; +} +#endif + +#ifdef __O3DB__ +void +SdaiOffset_curve_2d::oodb_reInit () +{ eDesc = config_control_designe_offset_curve_2d; + attributes [1].aDesc = a_435basis_curve; + attributes [2].aDesc = a_436distance; + attributes [3].aDesc = a_437self_intersect; +} +#endif + +SdaiOffset_curve_2d::SdaiOffset_curve_2d (SCLP23(Application_instance) *se, int *addAttrs) : SdaiCurve(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -29988,64 +58409,101 @@ SdaiOffset_curve_2d::SdaiOffset_curve_2d (STEPentity *se ) : SdaiCurve(se) eDesc = config_control_designe_offset_curve_2d; - STEPattribute * a = new STEPattribute (*a_435basis_curve, (STEPentityH *) &_basis_curve); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_435basis_curve, (SCLP23(Application_instance_ptr) *) &_basis_curve); +#else + STEPattribute *a = new STEPattribute(*a_435basis_curve, (SCLP23(Application_instance_ptr) *) &_basis_curve); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_436distance, &_distance); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_436distance, &_distance); +#else + a = new STEPattribute(*a_436distance, &_distance); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_437self_intersect, &_self_intersect); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_437self_intersect, &_self_intersect); +#else + a = new STEPattribute(*a_437self_intersect, &_self_intersect); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } -SdaiCurveH -SdaiOffset_curve_2d::Basis_curve() const - { return (SdaiCurveH) _basis_curve; } +const SdaiCurve_ptr +SdaiOffset_curve_2d::basis_curve_() const +{ + return (SdaiCurve_ptr) _basis_curve; +} void -SdaiOffset_curve_2d::Basis_curve (SdaiCurveH x) - { _basis_curve = x; } +SdaiOffset_curve_2d::basis_curve_ (const SdaiCurve_ptr x) + +{ + _basis_curve = x; +} const SdaiLength_measure -SdaiOffset_curve_2d::Distance() const - { return (const SdaiLength_measure) _distance; } +SdaiOffset_curve_2d::distance_() const +{ + return (SdaiLength_measure) _distance; +} void -SdaiOffset_curve_2d::Distance (SdaiLength_measure x) - { _distance = x; } +SdaiOffset_curve_2d::distance_ (const SdaiLength_measure x) -const LOGICAL -SdaiOffset_curve_2d::Self_intersect() const - { return (LOGICAL) _self_intersect; } +{ + _distance = x; +} + +const SCLLOG(Logical) +SdaiOffset_curve_2d::self_intersect_() const +{ + return (SCLLOG(Logical)) _self_intersect; +} void -SdaiOffset_curve_2d::Self_intersect (LOGICAL x) - { _self_intersect.put (x); } +SdaiOffset_curve_2d::self_intersect_ (const SCLLOG(Logical) x) + +{ + _self_intersect.put (x); +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY offset_curve_2d +///////// END_ENTITY offset_curve_2d -///////// ENTITY shape_definition_representation +///////// ENTITY shape_definition_representation EntityDescriptor *config_control_designe_shape_definition_representation =0; SdaiShape_definition_representation::SdaiShape_definition_representation( ) @@ -30058,9 +58516,61 @@ SdaiShape_definition_representation::SdaiShape_definition_representation( ) eDesc = config_control_designe_shape_definition_representation; } SdaiShape_definition_representation::SdaiShape_definition_representation (SdaiShape_definition_representation& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiShape_definition_representation::~SdaiShape_definition_representation () { } -SdaiShape_definition_representation::SdaiShape_definition_representation (STEPentity *se ) : SdaiProperty_definition_representation(se) + +#ifdef __OSTORE__ + +void +SdaiShape_definition_representation::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiShape_definition_representation: virtual access function." << G4endl; + SdaiShape_definition_representation_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiShape_definition_representation_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiShape_definition_representation: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiShape_definition_representation *ent = (SdaiShape_definition_representation *)sent; +// SdaiShape_definition_representation *ent = (SdaiShape_definition_representation *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_shape_definition_representation; +} + +SCLP23(Application_instance_ptr) +create_SdaiShape_definition_representation(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiShape_definition_representation::get_os_typespec()) + SdaiShape_definition_representation; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiShape_definition_representation::get_os_typespec()) +// SdaiShape_definition_representation; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiShape_definition_representation; +} +#endif + +#ifdef __O3DB__ +void +SdaiShape_definition_representation::oodb_reInit () +{ eDesc = config_control_designe_shape_definition_representation; +} +#endif + +SdaiShape_definition_representation::SdaiShape_definition_representation (SCLP23(Application_instance) *se, int *addAttrs) : SdaiProperty_definition_representation(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -30074,10 +58584,10 @@ SdaiShape_definition_representation::SdaiShape_definition_representation (STEPen /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY shape_definition_representation +///////// END_ENTITY shape_definition_representation -///////// ENTITY volume_unit +///////// ENTITY volume_unit EntityDescriptor *config_control_designe_volume_unit =0; SdaiVolume_unit::SdaiVolume_unit( ) @@ -30090,9 +58600,61 @@ SdaiVolume_unit::SdaiVolume_unit( ) eDesc = config_control_designe_volume_unit; } SdaiVolume_unit::SdaiVolume_unit (SdaiVolume_unit& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiVolume_unit::~SdaiVolume_unit () { } -SdaiVolume_unit::SdaiVolume_unit (STEPentity *se ) : SdaiNamed_unit(se) + +#ifdef __OSTORE__ + +void +SdaiVolume_unit::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiVolume_unit: virtual access function." << G4endl; + SdaiVolume_unit_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiVolume_unit_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiVolume_unit: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiVolume_unit *ent = (SdaiVolume_unit *)sent; +// SdaiVolume_unit *ent = (SdaiVolume_unit *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_volume_unit; +} + +SCLP23(Application_instance_ptr) +create_SdaiVolume_unit(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiVolume_unit::get_os_typespec()) + SdaiVolume_unit; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiVolume_unit::get_os_typespec()) +// SdaiVolume_unit; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiVolume_unit; +} +#endif + +#ifdef __O3DB__ +void +SdaiVolume_unit::oodb_reInit () +{ eDesc = config_control_designe_volume_unit; +} +#endif + +SdaiVolume_unit::SdaiVolume_unit (SCLP23(Application_instance) *se, int *addAttrs) : SdaiNamed_unit(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -30106,10 +58668,10 @@ SdaiVolume_unit::SdaiVolume_unit (STEPentity *se ) : SdaiNamed_unit(se) /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY volume_unit +///////// END_ENTITY volume_unit -///////// ENTITY conical_surface +///////// ENTITY conical_surface EntityDescriptor *config_control_designe_conical_surface =0; AttrDescriptor *a_438radius =0; @@ -30123,18 +58685,87 @@ SdaiConical_surface::SdaiConical_surface( ) eDesc = config_control_designe_conical_surface; - STEPattribute * a = new STEPattribute (*a_438radius, &_radius); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_438radius, &_radius); +#else + STEPattribute *a = new STEPattribute(*a_438radius, &_radius); +#endif a -> set_null (); attributes.push (a); - a = new STEPattribute (*a_439semi_angle, &_semi_angle); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_439semi_angle, &_semi_angle); +#else + a = new STEPattribute(*a_439semi_angle, &_semi_angle); +#endif a -> set_null (); attributes.push (a); + MakeDerived ("dim"); } SdaiConical_surface::SdaiConical_surface (SdaiConical_surface& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiConical_surface::~SdaiConical_surface () { } -SdaiConical_surface::SdaiConical_surface (STEPentity *se ) : SdaiElementary_surface(se) + +#ifdef __OSTORE__ + +void +SdaiConical_surface::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiConical_surface: virtual access function." << G4endl; + SdaiConical_surface_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiConical_surface_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiConical_surface: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiConical_surface *ent = (SdaiConical_surface *)sent; +// SdaiConical_surface *ent = (SdaiConical_surface *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_conical_surface; + ent->attributes[2].aDesc = a_438radius; + ent->attributes[3].aDesc = a_439semi_angle; +} + +SCLP23(Application_instance_ptr) +create_SdaiConical_surface(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiConical_surface::get_os_typespec()) + SdaiConical_surface; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiConical_surface::get_os_typespec()) +// SdaiConical_surface; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiConical_surface; +} +#endif + +#ifdef __O3DB__ +void +SdaiConical_surface::oodb_reInit () +{ eDesc = config_control_designe_conical_surface; + attributes [2].aDesc = a_438radius; + attributes [3].aDesc = a_439semi_angle; +} +#endif + +SdaiConical_surface::SdaiConical_surface (SCLP23(Application_instance) *se, int *addAttrs) : SdaiElementary_surface(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -30145,47 +58776,72 @@ SdaiConical_surface::SdaiConical_surface (STEPentity *se ) : SdaiElementary_surf eDesc = config_control_designe_conical_surface; - STEPattribute * a = new STEPattribute (*a_438radius, &_radius); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_438radius, &_radius); +#else + STEPattribute *a = new STEPattribute(*a_438radius, &_radius); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); - a = new STEPattribute (*a_439semi_angle, &_semi_angle); +#ifdef __OSTORE__ + a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_439semi_angle, &_semi_angle); +#else + a = new STEPattribute(*a_439semi_angle, &_semi_angle); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); + MakeDerived ("dim"); } const SdaiLength_measure -SdaiConical_surface::Radius() const - { return (const SdaiLength_measure) _radius; } +SdaiConical_surface::radius_() const +{ + return (SdaiLength_measure) _radius; +} void -SdaiConical_surface::Radius (SdaiLength_measure x) - { _radius = x; } +SdaiConical_surface::radius_ (const SdaiLength_measure x) + +{ + _radius = x; +} const SdaiPlane_angle_measure -SdaiConical_surface::Semi_angle() const - { return (const SdaiPlane_angle_measure) _semi_angle; } +SdaiConical_surface::semi_angle_() const +{ + return (SdaiPlane_angle_measure) _semi_angle; +} void -SdaiConical_surface::Semi_angle (SdaiPlane_angle_measure x) - { _semi_angle = x; } +SdaiConical_surface::semi_angle_ (const SdaiPlane_angle_measure x) + +{ + _semi_angle = x; +} /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY conical_surface +///////// END_ENTITY conical_surface -///////// ENTITY global_unit_assigned_context +///////// ENTITY global_unit_assigned_context EntityDescriptor *config_control_designe_global_unit_assigned_context =0; AttrDescriptor *a_440units =0; @@ -30198,14 +58854,74 @@ SdaiGlobal_unit_assigned_context::SdaiGlobal_unit_assigned_context( ) eDesc = config_control_designe_global_unit_assigned_context; - STEPattribute * a = new STEPattribute (*a_440units, &_units); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_440units, &_units); +#else + STEPattribute *a = new STEPattribute(*a_440units, &_units); +#endif a -> set_null (); attributes.push (a); } SdaiGlobal_unit_assigned_context::SdaiGlobal_unit_assigned_context (SdaiGlobal_unit_assigned_context& e ) - { CopyAs((STEPentityH) &e); } + { CopyAs((SCLP23(Application_instance_ptr)) &e); } SdaiGlobal_unit_assigned_context::~SdaiGlobal_unit_assigned_context () { } -SdaiGlobal_unit_assigned_context::SdaiGlobal_unit_assigned_context (STEPentity *se ) : SdaiRepresentation_context(se) + +#ifdef __OSTORE__ + +void +SdaiGlobal_unit_assigned_context::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiGlobal_unit_assigned_context: virtual access function." << G4endl; + SdaiGlobal_unit_assigned_context_access_hook_in(object, reason, user_data, start_range, end_range); +} + +void +SdaiGlobal_unit_assigned_context_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + if(debug_access_hooks) + G4cout << "SdaiGlobal_unit_assigned_context: non-virtual access function." << G4endl; + SCLP23(Application_instance) *sent = (SCLP23(Application_instance) *)object; + if(debug_access_hooks) + G4cout << "STEPfile_id: " << sent->STEPfile_id << G4endl; + SdaiGlobal_unit_assigned_context *ent = (SdaiGlobal_unit_assigned_context *)sent; +// SdaiGlobal_unit_assigned_context *ent = (SdaiGlobal_unit_assigned_context *)object; + if(ent->eDesc == 0) + ent->eDesc = config_control_designe_global_unit_assigned_context; + ent->attributes[2].aDesc = a_440units; +} + +SCLP23(Application_instance_ptr) +create_SdaiGlobal_unit_assigned_context(os_database *db) +{ + if(db) + { + SCLP23(DAObject_ptr) ap = new (db, SdaiGlobal_unit_assigned_context::get_os_typespec()) + SdaiGlobal_unit_assigned_context; + return (SCLP23(Application_instance_ptr)) ap; +// return (SCLP23(Application_instance_ptr)) new (db, SdaiGlobal_unit_assigned_context::get_os_typespec()) +// SdaiGlobal_unit_assigned_context; + } + else + return (SCLP23(Application_instance_ptr)) new SdaiGlobal_unit_assigned_context; +} +#endif + +#ifdef __O3DB__ +void +SdaiGlobal_unit_assigned_context::oodb_reInit () +{ eDesc = config_control_designe_global_unit_assigned_context; + attributes [2].aDesc = a_440units; +} +#endif + +SdaiGlobal_unit_assigned_context::SdaiGlobal_unit_assigned_context (SCLP23(Application_instance) *se, int *addAttrs) : SdaiRepresentation_context(se, (addAttrs ? &addAttrs[1] : 0)) { /* Set this to point to the head entity. */ HeadEntity(se); @@ -30216,26 +58932,4347 @@ SdaiGlobal_unit_assigned_context::SdaiGlobal_unit_assigned_context (STEPentity * eDesc = config_control_designe_global_unit_assigned_context; - STEPattribute * a = new STEPattribute (*a_440units, &_units); +#ifdef __OSTORE__ + STEPattribute *a = new (os_segment::of(this), + STEPattribute::get_os_typespec()) + STEPattribute(*a_440units, &_units); +#else + STEPattribute *a = new STEPattribute(*a_440units, &_units); +#endif a -> set_null (); - /* Put attribute on this class' attributes List so the */ - /*access functions still work. */ + /* Put attribute on this class' attributes list so the */ + /*access functions still work. */ attributes.push (a); - /* Put attribute on the attributes List for the */ - /* main inheritance heirarchy. */ - se->attributes.push (a); + /* Put attribute on the attributes list for the */ + /* main inheritance heirarchy. */ + if(!addAttrs || addAttrs[0]) + se->attributes.push (a); } -const SdaiUnitsH -SdaiGlobal_unit_assigned_context::Units() const - { return (SdaiUnitsH) &_units; } +const SdaiUnits_ptr +SdaiGlobal_unit_assigned_context::units_() const +{ + return (SdaiUnits_ptr) &_units; +} void -SdaiGlobal_unit_assigned_context::Units (SdaiUnitsH x) +SdaiGlobal_unit_assigned_context::units_ (const SdaiUnits_ptr x) + { _units.ShallowCopy (*x); } /* The first parent's access functions are */ /* above or covered by inherited functions. */ -///////// END_ENTITY global_unit_assigned_context +///////// END_ENTITY global_unit_assigned_context + +#ifdef __OSTORE__ +SCLP23(Model_contents_ptr) create_SdaiModel_contents_config_control_design(os_database *db) +{ + if(db) + return (SCLP23(Model_contents_ptr)) new (db, SdaiModel_contents_config_control_design::get_os_typespec()) + SdaiModel_contents_config_control_design(db); + else{ + return (SCLP23(Model_contents_ptr)) new SdaiModel_contents_config_control_design(0); + } +} +#else + +SCLP23(Model_contents_ptr) create_SdaiModel_contents_config_control_design() +{ return new SdaiModel_contents_config_control_design ; } +#endif + + +#ifdef __OSTORE__ +SdaiModel_contents_config_control_design::SdaiModel_contents_config_control_design(os_database *db) +#else +SdaiModel_contents_config_control_design::SdaiModel_contents_config_control_design() +#endif +{ + SCLP23(Entity_extent_ptr) eep = (SCLP23(Entity_extent_ptr))0; + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_representation_item); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_geometric_representation_item); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_functionally_defined_transformation); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_cartesian_transformation_operator); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_cartesian_transformation_operator_3d); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_versioned_action_request); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_representation); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_shape_representation); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_manifold_surface_shape_representation); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_certification); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_product_definition_relationship); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_product_definition_usage); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_assembly_component_usage); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_quantified_assembly_component_usage); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_solid_model); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_manifold_solid_brep); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_faceted_brep); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_action_directive); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_named_unit); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_plane_angle_unit); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_measure_with_unit); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_area_measure_with_unit); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_effectivity); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_serial_numbered_effectivity); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_surface); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_offset_surface); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_placement); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_axis2_placement_2d); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_product_category); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_product_related_product_category); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_curve); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_conic); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_hyperbola); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_address); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_organizational_address); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_bounded_surface); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_b_spline_surface); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_uniform_surface); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_geometrically_bounded_surface_shape_representation); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_axis1_placement); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_bounded_curve); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_b_spline_curve); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_rational_b_spline_curve); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_action_request_assignment); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_topological_representation_item); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_face_bound); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_length_measure_with_unit); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_dated_effectivity); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_direction); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_next_assembly_usage_occurrence); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_edge); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_oriented_edge); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_person); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_document); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_document_with_class); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_conversion_based_unit); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_point); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_point_on_surface); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_product_definition_formation); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_person_and_organization_assignment); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_cc_design_person_and_organization_assignment); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_offset_curve_3d); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_approval); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_composite_curve); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_composite_curve_on_surface); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_boundary_curve); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_representation_context); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_geometric_representation_context); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_action_status); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_application_context); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_change_request); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_date_and_time); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_approval_date_time); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_approval_role); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_application_context_element); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_product_context); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_elementary_surface); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_spherical_surface); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_application_protocol_definition); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_specified_higher_usage_occurrence); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_product_definition_formation_with_specified_source); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_action_request_solution); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_uncertainty_measure_with_unit); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_edge_based_wireframe_model); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_path); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_connected_face_set); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_open_shell); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_oriented_open_shell); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_solid_angle_unit); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_coordinated_universal_time_offset); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_curve_replica); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_quasi_uniform_surface); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_surface_curve); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_action_request_status); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_composite_curve_segment); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_reparametrised_composite_curve_segment); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_representation_relationship); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_representation_relationship_with_transformation); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_person_and_organization_role); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_quasi_uniform_curve); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_swept_surface); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_property_definition); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_global_uncertainty_assigned_context); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_organization_relationship); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_parabola); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_rectangular_composite_surface); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_lot_effectivity); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_surface_of_linear_extrusion); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_shell_based_surface_model); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_uniform_curve); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_bezier_curve); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_loop); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_edge_loop); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_date); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_calendar_date); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_toroidal_surface); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_promissory_usage_occurrence); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_approval_assignment); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_configuration_item); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_contract_assignment); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_vector); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_intersection_curve); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_trimmed_curve); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_product_definition_context); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_item_defined_transformation); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_action_method); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_product_category_relationship); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_plane_angle_measure_with_unit); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_vertex); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_representation_map); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_product_definition_effectivity); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_configuration_effectivity); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_ellipse); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_context_dependent_unit); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_alternate_product_relationship); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_document_type); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_document_reference); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_mechanical_context); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_shell_based_wireframe_model); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_contract); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_dimensional_exponents); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_start_request); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_cc_design_specification_reference); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_supplied_part_relationship); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_context_dependent_shape_representation); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_ordinal_date); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_face_outer_bound); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_mass_measure_with_unit); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_brep_with_voids); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_week_of_year_and_day_date); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_point_on_curve); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_shell_based_wireframe_shape_representation); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_face); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_face_surface); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_oriented_face); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_surface_of_revolution); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_advanced_brep_shape_representation); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_edge_curve); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_point_replica); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_product); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_shape_aspect_relationship); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_rectangular_trimmed_surface); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_plane); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_action_assignment); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_change); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_circle); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_line); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_property_definition_representation); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_geometric_set); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_geometric_curve_set); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_personal_address); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_document_relationship); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_pcurve); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_outer_boundary_curve); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_shape_representation_relationship); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_assembly_component_usage_substitute); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_degenerate_pcurve); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_evaluated_degenerate_pcurve); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_solid_angle_measure_with_unit); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_connected_edge_set); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_action); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_executed_action); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_directed_action); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_organizational_project); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_date_time_role); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_curve_bounded_surface); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_closed_shell); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_design_make_from_relationship); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_definitional_representation); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_product_definition_shape); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_si_unit); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_bezier_surface); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_certification_assignment); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_start_work); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_contract_type); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_b_spline_curve_with_knots); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_cc_design_approval); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_edge_based_wireframe_shape_representation); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_geometrically_bounded_wireframe_shape_representation); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_product_concept); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_cc_design_contract); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_seam_curve); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_axis2_placement_3d); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_rational_b_spline_surface); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_configuration_design); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_design_context); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_product_definition); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_product_definition_with_associated_documents); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_organization); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_cc_design_certification); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_b_spline_surface_with_knots); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_certification_type); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_oriented_path); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_security_classification); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_vertex_loop); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_approval_status); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_cartesian_point); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_date_and_time_assignment); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_parametric_representation_context); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_product_concept_context); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_cartesian_transformation_operator_2d); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_surface_patch); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_length_unit); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_shape_aspect); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_volume_measure_with_unit); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_advanced_face); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_security_classification_level); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_approval_relationship); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_polyline); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_approval_person_organization); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_surface_replica); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_security_classification_assignment); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_cc_design_security_classification); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_faceted_brep_shape_representation); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_document_usage_constraint); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_vertex_point); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_cc_design_date_and_time_assignment); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_oriented_closed_shell); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_person_and_organization); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_cylindrical_surface); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_local_time); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_mass_unit); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_vertex_shell); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_poly_loop); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_wire_shell); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_area_unit); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_mapped_item); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_offset_curve_2d); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_shape_definition_representation); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_volume_unit); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_conical_surface); + _folders.Append(eep); + +#ifdef __OSTORE__ + if(db) + eep = new (db, + SCLP23(Entity_extent)::get_os_typespec()) SCLP23(Entity_extent); + else + eep = new SCLP23(Entity_extent); +#else + eep = new SCLP23(Entity_extent); +#endif + eep->definition_(config_control_designe_global_unit_assigned_context); + _folders.Append(eep); + +} + +SdaiRepresentation_item__set_var SdaiModel_contents_config_control_design::SdaiRepresentation_item_get_extents() +{ + return (SdaiRepresentation_item__set_var)((_folders.retrieve(0))->instances_()); +} + +SdaiGeometric_representation_item__set_var SdaiModel_contents_config_control_design::SdaiGeometric_representation_item_get_extents() +{ + return (SdaiGeometric_representation_item__set_var)((_folders.retrieve(1))->instances_()); +} + +SdaiFunctionally_defined_transformation__set_var SdaiModel_contents_config_control_design::SdaiFunctionally_defined_transformation_get_extents() +{ + return (SdaiFunctionally_defined_transformation__set_var)((_folders.retrieve(2))->instances_()); +} + +SdaiCartesian_transformation_operator__set_var SdaiModel_contents_config_control_design::SdaiCartesian_transformation_operator_get_extents() +{ + return (SdaiCartesian_transformation_operator__set_var)((_folders.retrieve(3))->instances_()); +} + +SdaiCartesian_transformation_operator_3d__set_var SdaiModel_contents_config_control_design::SdaiCartesian_transformation_operator_3d_get_extents() +{ + return (SdaiCartesian_transformation_operator_3d__set_var)((_folders.retrieve(4))->instances_()); +} + +SdaiVersioned_action_request__set_var SdaiModel_contents_config_control_design::SdaiVersioned_action_request_get_extents() +{ + return (SdaiVersioned_action_request__set_var)((_folders.retrieve(5))->instances_()); +} + +SdaiRepresentation__set_var SdaiModel_contents_config_control_design::SdaiRepresentation_get_extents() +{ + return (SdaiRepresentation__set_var)((_folders.retrieve(6))->instances_()); +} + +SdaiShape_representation__set_var SdaiModel_contents_config_control_design::SdaiShape_representation_get_extents() +{ + return (SdaiShape_representation__set_var)((_folders.retrieve(7))->instances_()); +} + +SdaiManifold_surface_shape_representation__set_var SdaiModel_contents_config_control_design::SdaiManifold_surface_shape_representation_get_extents() +{ + return (SdaiManifold_surface_shape_representation__set_var)((_folders.retrieve(8))->instances_()); +} + +SdaiCertification__set_var SdaiModel_contents_config_control_design::SdaiCertification_get_extents() +{ + return (SdaiCertification__set_var)((_folders.retrieve(9))->instances_()); +} + +SdaiProduct_definition_relationship__set_var SdaiModel_contents_config_control_design::SdaiProduct_definition_relationship_get_extents() +{ + return (SdaiProduct_definition_relationship__set_var)((_folders.retrieve(10))->instances_()); +} + +SdaiProduct_definition_usage__set_var SdaiModel_contents_config_control_design::SdaiProduct_definition_usage_get_extents() +{ + return (SdaiProduct_definition_usage__set_var)((_folders.retrieve(11))->instances_()); +} + +SdaiAssembly_component_usage__set_var SdaiModel_contents_config_control_design::SdaiAssembly_component_usage_get_extents() +{ + return (SdaiAssembly_component_usage__set_var)((_folders.retrieve(12))->instances_()); +} + +SdaiQuantified_assembly_component_usage__set_var SdaiModel_contents_config_control_design::SdaiQuantified_assembly_component_usage_get_extents() +{ + return (SdaiQuantified_assembly_component_usage__set_var)((_folders.retrieve(13))->instances_()); +} + +SdaiSolid_model__set_var SdaiModel_contents_config_control_design::SdaiSolid_model_get_extents() +{ + return (SdaiSolid_model__set_var)((_folders.retrieve(14))->instances_()); +} + +SdaiManifold_solid_brep__set_var SdaiModel_contents_config_control_design::SdaiManifold_solid_brep_get_extents() +{ + return (SdaiManifold_solid_brep__set_var)((_folders.retrieve(15))->instances_()); +} + +SdaiFaceted_brep__set_var SdaiModel_contents_config_control_design::SdaiFaceted_brep_get_extents() +{ + return (SdaiFaceted_brep__set_var)((_folders.retrieve(16))->instances_()); +} + +SdaiAction_directive__set_var SdaiModel_contents_config_control_design::SdaiAction_directive_get_extents() +{ + return (SdaiAction_directive__set_var)((_folders.retrieve(17))->instances_()); +} + +SdaiNamed_unit__set_var SdaiModel_contents_config_control_design::SdaiNamed_unit_get_extents() +{ + return (SdaiNamed_unit__set_var)((_folders.retrieve(18))->instances_()); +} + +SdaiPlane_angle_unit__set_var SdaiModel_contents_config_control_design::SdaiPlane_angle_unit_get_extents() +{ + return (SdaiPlane_angle_unit__set_var)((_folders.retrieve(19))->instances_()); +} + +SdaiMeasure_with_unit__set_var SdaiModel_contents_config_control_design::SdaiMeasure_with_unit_get_extents() +{ + return (SdaiMeasure_with_unit__set_var)((_folders.retrieve(20))->instances_()); +} + +SdaiArea_measure_with_unit__set_var SdaiModel_contents_config_control_design::SdaiArea_measure_with_unit_get_extents() +{ + return (SdaiArea_measure_with_unit__set_var)((_folders.retrieve(21))->instances_()); +} + +SdaiEffectivity__set_var SdaiModel_contents_config_control_design::SdaiEffectivity_get_extents() +{ + return (SdaiEffectivity__set_var)((_folders.retrieve(22))->instances_()); +} + +SdaiSerial_numbered_effectivity__set_var SdaiModel_contents_config_control_design::SdaiSerial_numbered_effectivity_get_extents() +{ + return (SdaiSerial_numbered_effectivity__set_var)((_folders.retrieve(23))->instances_()); +} + +SdaiSurface__set_var SdaiModel_contents_config_control_design::SdaiSurface_get_extents() +{ + return (SdaiSurface__set_var)((_folders.retrieve(24))->instances_()); +} + +SdaiOffset_surface__set_var SdaiModel_contents_config_control_design::SdaiOffset_surface_get_extents() +{ + return (SdaiOffset_surface__set_var)((_folders.retrieve(25))->instances_()); +} + +SdaiPlacement__set_var SdaiModel_contents_config_control_design::SdaiPlacement_get_extents() +{ + return (SdaiPlacement__set_var)((_folders.retrieve(26))->instances_()); +} + +SdaiAxis2_placement_2d__set_var SdaiModel_contents_config_control_design::SdaiAxis2_placement_2d_get_extents() +{ + return (SdaiAxis2_placement_2d__set_var)((_folders.retrieve(27))->instances_()); +} + +SdaiProduct_category__set_var SdaiModel_contents_config_control_design::SdaiProduct_category_get_extents() +{ + return (SdaiProduct_category__set_var)((_folders.retrieve(28))->instances_()); +} + +SdaiProduct_related_product_category__set_var SdaiModel_contents_config_control_design::SdaiProduct_related_product_category_get_extents() +{ + return (SdaiProduct_related_product_category__set_var)((_folders.retrieve(29))->instances_()); +} + +SdaiCurve__set_var SdaiModel_contents_config_control_design::SdaiCurve_get_extents() +{ + return (SdaiCurve__set_var)((_folders.retrieve(30))->instances_()); +} + +SdaiConic__set_var SdaiModel_contents_config_control_design::SdaiConic_get_extents() +{ + return (SdaiConic__set_var)((_folders.retrieve(31))->instances_()); +} + +SdaiHyperbola__set_var SdaiModel_contents_config_control_design::SdaiHyperbola_get_extents() +{ + return (SdaiHyperbola__set_var)((_folders.retrieve(32))->instances_()); +} + +SdaiAddress__set_var SdaiModel_contents_config_control_design::SdaiAddress_get_extents() +{ + return (SdaiAddress__set_var)((_folders.retrieve(33))->instances_()); +} + +SdaiOrganizational_address__set_var SdaiModel_contents_config_control_design::SdaiOrganizational_address_get_extents() +{ + return (SdaiOrganizational_address__set_var)((_folders.retrieve(34))->instances_()); +} + +SdaiBounded_surface__set_var SdaiModel_contents_config_control_design::SdaiBounded_surface_get_extents() +{ + return (SdaiBounded_surface__set_var)((_folders.retrieve(35))->instances_()); +} + +SdaiB_spline_surface__set_var SdaiModel_contents_config_control_design::SdaiB_spline_surface_get_extents() +{ + return (SdaiB_spline_surface__set_var)((_folders.retrieve(36))->instances_()); +} + +SdaiUniform_surface__set_var SdaiModel_contents_config_control_design::SdaiUniform_surface_get_extents() +{ + return (SdaiUniform_surface__set_var)((_folders.retrieve(37))->instances_()); +} + +SdaiGeometrically_bounded_surface_shape_representation__set_var SdaiModel_contents_config_control_design::SdaiGeometrically_bounded_surface_shape_representation_get_extents() +{ + return (SdaiGeometrically_bounded_surface_shape_representation__set_var)((_folders.retrieve(38))->instances_()); +} + +SdaiAxis1_placement__set_var SdaiModel_contents_config_control_design::SdaiAxis1_placement_get_extents() +{ + return (SdaiAxis1_placement__set_var)((_folders.retrieve(39))->instances_()); +} + +SdaiBounded_curve__set_var SdaiModel_contents_config_control_design::SdaiBounded_curve_get_extents() +{ + return (SdaiBounded_curve__set_var)((_folders.retrieve(40))->instances_()); +} + +SdaiB_spline_curve__set_var SdaiModel_contents_config_control_design::SdaiB_spline_curve_get_extents() +{ + return (SdaiB_spline_curve__set_var)((_folders.retrieve(41))->instances_()); +} + +SdaiRational_b_spline_curve__set_var SdaiModel_contents_config_control_design::SdaiRational_b_spline_curve_get_extents() +{ + return (SdaiRational_b_spline_curve__set_var)((_folders.retrieve(42))->instances_()); +} + +SdaiAction_request_assignment__set_var SdaiModel_contents_config_control_design::SdaiAction_request_assignment_get_extents() +{ + return (SdaiAction_request_assignment__set_var)((_folders.retrieve(43))->instances_()); +} + +SdaiTopological_representation_item__set_var SdaiModel_contents_config_control_design::SdaiTopological_representation_item_get_extents() +{ + return (SdaiTopological_representation_item__set_var)((_folders.retrieve(44))->instances_()); +} + +SdaiFace_bound__set_var SdaiModel_contents_config_control_design::SdaiFace_bound_get_extents() +{ + return (SdaiFace_bound__set_var)((_folders.retrieve(45))->instances_()); +} + +SdaiLength_measure_with_unit__set_var SdaiModel_contents_config_control_design::SdaiLength_measure_with_unit_get_extents() +{ + return (SdaiLength_measure_with_unit__set_var)((_folders.retrieve(46))->instances_()); +} + +SdaiDated_effectivity__set_var SdaiModel_contents_config_control_design::SdaiDated_effectivity_get_extents() +{ + return (SdaiDated_effectivity__set_var)((_folders.retrieve(47))->instances_()); +} + +SdaiDirection__set_var SdaiModel_contents_config_control_design::SdaiDirection_get_extents() +{ + return (SdaiDirection__set_var)((_folders.retrieve(48))->instances_()); +} + +SdaiNext_assembly_usage_occurrence__set_var SdaiModel_contents_config_control_design::SdaiNext_assembly_usage_occurrence_get_extents() +{ + return (SdaiNext_assembly_usage_occurrence__set_var)((_folders.retrieve(49))->instances_()); +} + +SdaiEdge__set_var SdaiModel_contents_config_control_design::SdaiEdge_get_extents() +{ + return (SdaiEdge__set_var)((_folders.retrieve(50))->instances_()); +} + +SdaiOriented_edge__set_var SdaiModel_contents_config_control_design::SdaiOriented_edge_get_extents() +{ + return (SdaiOriented_edge__set_var)((_folders.retrieve(51))->instances_()); +} + +SdaiPerson__set_var SdaiModel_contents_config_control_design::SdaiPerson_get_extents() +{ + return (SdaiPerson__set_var)((_folders.retrieve(52))->instances_()); +} + +SdaiDocument__set_var SdaiModel_contents_config_control_design::SdaiDocument_get_extents() +{ + return (SdaiDocument__set_var)((_folders.retrieve(53))->instances_()); +} + +SdaiDocument_with_class__set_var SdaiModel_contents_config_control_design::SdaiDocument_with_class_get_extents() +{ + return (SdaiDocument_with_class__set_var)((_folders.retrieve(54))->instances_()); +} + +SdaiConversion_based_unit__set_var SdaiModel_contents_config_control_design::SdaiConversion_based_unit_get_extents() +{ + return (SdaiConversion_based_unit__set_var)((_folders.retrieve(55))->instances_()); +} + +SdaiPoint__set_var SdaiModel_contents_config_control_design::SdaiPoint_get_extents() +{ + return (SdaiPoint__set_var)((_folders.retrieve(56))->instances_()); +} + +SdaiPoint_on_surface__set_var SdaiModel_contents_config_control_design::SdaiPoint_on_surface_get_extents() +{ + return (SdaiPoint_on_surface__set_var)((_folders.retrieve(57))->instances_()); +} + +SdaiProduct_definition_formation__set_var SdaiModel_contents_config_control_design::SdaiProduct_definition_formation_get_extents() +{ + return (SdaiProduct_definition_formation__set_var)((_folders.retrieve(58))->instances_()); +} + +SdaiPerson_and_organization_assignment__set_var SdaiModel_contents_config_control_design::SdaiPerson_and_organization_assignment_get_extents() +{ + return (SdaiPerson_and_organization_assignment__set_var)((_folders.retrieve(59))->instances_()); +} + +SdaiCc_design_person_and_organization_assignment__set_var SdaiModel_contents_config_control_design::SdaiCc_design_person_and_organization_assignment_get_extents() +{ + return (SdaiCc_design_person_and_organization_assignment__set_var)((_folders.retrieve(60))->instances_()); +} + +SdaiOffset_curve_3d__set_var SdaiModel_contents_config_control_design::SdaiOffset_curve_3d_get_extents() +{ + return (SdaiOffset_curve_3d__set_var)((_folders.retrieve(61))->instances_()); +} + +SdaiApproval__set_var SdaiModel_contents_config_control_design::SdaiApproval_get_extents() +{ + return (SdaiApproval__set_var)((_folders.retrieve(62))->instances_()); +} + +SdaiComposite_curve__set_var SdaiModel_contents_config_control_design::SdaiComposite_curve_get_extents() +{ + return (SdaiComposite_curve__set_var)((_folders.retrieve(63))->instances_()); +} + +SdaiComposite_curve_on_surface__set_var SdaiModel_contents_config_control_design::SdaiComposite_curve_on_surface_get_extents() +{ + return (SdaiComposite_curve_on_surface__set_var)((_folders.retrieve(64))->instances_()); +} + +SdaiBoundary_curve__set_var SdaiModel_contents_config_control_design::SdaiBoundary_curve_get_extents() +{ + return (SdaiBoundary_curve__set_var)((_folders.retrieve(65))->instances_()); +} + +SdaiRepresentation_context__set_var SdaiModel_contents_config_control_design::SdaiRepresentation_context_get_extents() +{ + return (SdaiRepresentation_context__set_var)((_folders.retrieve(66))->instances_()); +} + +SdaiGeometric_representation_context__set_var SdaiModel_contents_config_control_design::SdaiGeometric_representation_context_get_extents() +{ + return (SdaiGeometric_representation_context__set_var)((_folders.retrieve(67))->instances_()); +} + +SdaiAction_status__set_var SdaiModel_contents_config_control_design::SdaiAction_status_get_extents() +{ + return (SdaiAction_status__set_var)((_folders.retrieve(68))->instances_()); +} + +SdaiApplication_context__set_var SdaiModel_contents_config_control_design::SdaiApplication_context_get_extents() +{ + return (SdaiApplication_context__set_var)((_folders.retrieve(69))->instances_()); +} + +SdaiChange_request__set_var SdaiModel_contents_config_control_design::SdaiChange_request_get_extents() +{ + return (SdaiChange_request__set_var)((_folders.retrieve(70))->instances_()); +} + +SdaiDate_and_time__set_var SdaiModel_contents_config_control_design::SdaiDate_and_time_get_extents() +{ + return (SdaiDate_and_time__set_var)((_folders.retrieve(71))->instances_()); +} + +SdaiApproval_date_time__set_var SdaiModel_contents_config_control_design::SdaiApproval_date_time_get_extents() +{ + return (SdaiApproval_date_time__set_var)((_folders.retrieve(72))->instances_()); +} + +SdaiApproval_role__set_var SdaiModel_contents_config_control_design::SdaiApproval_role_get_extents() +{ + return (SdaiApproval_role__set_var)((_folders.retrieve(73))->instances_()); +} + +SdaiApplication_context_element__set_var SdaiModel_contents_config_control_design::SdaiApplication_context_element_get_extents() +{ + return (SdaiApplication_context_element__set_var)((_folders.retrieve(74))->instances_()); +} + +SdaiProduct_context__set_var SdaiModel_contents_config_control_design::SdaiProduct_context_get_extents() +{ + return (SdaiProduct_context__set_var)((_folders.retrieve(75))->instances_()); +} + +SdaiElementary_surface__set_var SdaiModel_contents_config_control_design::SdaiElementary_surface_get_extents() +{ + return (SdaiElementary_surface__set_var)((_folders.retrieve(76))->instances_()); +} + +SdaiSpherical_surface__set_var SdaiModel_contents_config_control_design::SdaiSpherical_surface_get_extents() +{ + return (SdaiSpherical_surface__set_var)((_folders.retrieve(77))->instances_()); +} + +SdaiApplication_protocol_definition__set_var SdaiModel_contents_config_control_design::SdaiApplication_protocol_definition_get_extents() +{ + return (SdaiApplication_protocol_definition__set_var)((_folders.retrieve(78))->instances_()); +} + +SdaiSpecified_higher_usage_occurrence__set_var SdaiModel_contents_config_control_design::SdaiSpecified_higher_usage_occurrence_get_extents() +{ + return (SdaiSpecified_higher_usage_occurrence__set_var)((_folders.retrieve(79))->instances_()); +} + +SdaiProduct_definition_formation_with_specified_source__set_var SdaiModel_contents_config_control_design::SdaiProduct_definition_formation_with_specified_source_get_extents() +{ + return (SdaiProduct_definition_formation_with_specified_source__set_var)((_folders.retrieve(80))->instances_()); +} + +SdaiAction_request_solution__set_var SdaiModel_contents_config_control_design::SdaiAction_request_solution_get_extents() +{ + return (SdaiAction_request_solution__set_var)((_folders.retrieve(81))->instances_()); +} + +SdaiUncertainty_measure_with_unit__set_var SdaiModel_contents_config_control_design::SdaiUncertainty_measure_with_unit_get_extents() +{ + return (SdaiUncertainty_measure_with_unit__set_var)((_folders.retrieve(82))->instances_()); +} + +SdaiEdge_based_wireframe_model__set_var SdaiModel_contents_config_control_design::SdaiEdge_based_wireframe_model_get_extents() +{ + return (SdaiEdge_based_wireframe_model__set_var)((_folders.retrieve(83))->instances_()); +} + +SdaiPath__set_var SdaiModel_contents_config_control_design::SdaiPath_get_extents() +{ + return (SdaiPath__set_var)((_folders.retrieve(84))->instances_()); +} + +SdaiConnected_face_set__set_var SdaiModel_contents_config_control_design::SdaiConnected_face_set_get_extents() +{ + return (SdaiConnected_face_set__set_var)((_folders.retrieve(85))->instances_()); +} + +SdaiOpen_shell__set_var SdaiModel_contents_config_control_design::SdaiOpen_shell_get_extents() +{ + return (SdaiOpen_shell__set_var)((_folders.retrieve(86))->instances_()); +} + +SdaiOriented_open_shell__set_var SdaiModel_contents_config_control_design::SdaiOriented_open_shell_get_extents() +{ + return (SdaiOriented_open_shell__set_var)((_folders.retrieve(87))->instances_()); +} + +SdaiSolid_angle_unit__set_var SdaiModel_contents_config_control_design::SdaiSolid_angle_unit_get_extents() +{ + return (SdaiSolid_angle_unit__set_var)((_folders.retrieve(88))->instances_()); +} + +SdaiCoordinated_universal_time_offset__set_var SdaiModel_contents_config_control_design::SdaiCoordinated_universal_time_offset_get_extents() +{ + return (SdaiCoordinated_universal_time_offset__set_var)((_folders.retrieve(89))->instances_()); +} + +SdaiCurve_replica__set_var SdaiModel_contents_config_control_design::SdaiCurve_replica_get_extents() +{ + return (SdaiCurve_replica__set_var)((_folders.retrieve(90))->instances_()); +} + +SdaiQuasi_uniform_surface__set_var SdaiModel_contents_config_control_design::SdaiQuasi_uniform_surface_get_extents() +{ + return (SdaiQuasi_uniform_surface__set_var)((_folders.retrieve(91))->instances_()); +} + +SdaiSurface_curve__set_var SdaiModel_contents_config_control_design::SdaiSurface_curve_get_extents() +{ + return (SdaiSurface_curve__set_var)((_folders.retrieve(92))->instances_()); +} + +SdaiAction_request_status__set_var SdaiModel_contents_config_control_design::SdaiAction_request_status_get_extents() +{ + return (SdaiAction_request_status__set_var)((_folders.retrieve(93))->instances_()); +} + +SdaiComposite_curve_segment__set_var SdaiModel_contents_config_control_design::SdaiComposite_curve_segment_get_extents() +{ + return (SdaiComposite_curve_segment__set_var)((_folders.retrieve(94))->instances_()); +} + +SdaiReparametrised_composite_curve_segment__set_var SdaiModel_contents_config_control_design::SdaiReparametrised_composite_curve_segment_get_extents() +{ + return (SdaiReparametrised_composite_curve_segment__set_var)((_folders.retrieve(95))->instances_()); +} + +SdaiRepresentation_relationship__set_var SdaiModel_contents_config_control_design::SdaiRepresentation_relationship_get_extents() +{ + return (SdaiRepresentation_relationship__set_var)((_folders.retrieve(96))->instances_()); +} + +SdaiRepresentation_relationship_with_transformation__set_var SdaiModel_contents_config_control_design::SdaiRepresentation_relationship_with_transformation_get_extents() +{ + return (SdaiRepresentation_relationship_with_transformation__set_var)((_folders.retrieve(97))->instances_()); +} + +SdaiPerson_and_organization_role__set_var SdaiModel_contents_config_control_design::SdaiPerson_and_organization_role_get_extents() +{ + return (SdaiPerson_and_organization_role__set_var)((_folders.retrieve(98))->instances_()); +} + +SdaiQuasi_uniform_curve__set_var SdaiModel_contents_config_control_design::SdaiQuasi_uniform_curve_get_extents() +{ + return (SdaiQuasi_uniform_curve__set_var)((_folders.retrieve(99))->instances_()); +} + +SdaiSwept_surface__set_var SdaiModel_contents_config_control_design::SdaiSwept_surface_get_extents() +{ + return (SdaiSwept_surface__set_var)((_folders.retrieve(100))->instances_()); +} + +SdaiProperty_definition__set_var SdaiModel_contents_config_control_design::SdaiProperty_definition_get_extents() +{ + return (SdaiProperty_definition__set_var)((_folders.retrieve(101))->instances_()); +} + +SdaiGlobal_uncertainty_assigned_context__set_var SdaiModel_contents_config_control_design::SdaiGlobal_uncertainty_assigned_context_get_extents() +{ + return (SdaiGlobal_uncertainty_assigned_context__set_var)((_folders.retrieve(102))->instances_()); +} + +SdaiOrganization_relationship__set_var SdaiModel_contents_config_control_design::SdaiOrganization_relationship_get_extents() +{ + return (SdaiOrganization_relationship__set_var)((_folders.retrieve(103))->instances_()); +} + +SdaiParabola__set_var SdaiModel_contents_config_control_design::SdaiParabola_get_extents() +{ + return (SdaiParabola__set_var)((_folders.retrieve(104))->instances_()); +} + +SdaiRectangular_composite_surface__set_var SdaiModel_contents_config_control_design::SdaiRectangular_composite_surface_get_extents() +{ + return (SdaiRectangular_composite_surface__set_var)((_folders.retrieve(105))->instances_()); +} + +SdaiLot_effectivity__set_var SdaiModel_contents_config_control_design::SdaiLot_effectivity_get_extents() +{ + return (SdaiLot_effectivity__set_var)((_folders.retrieve(106))->instances_()); +} + +SdaiSurface_of_linear_extrusion__set_var SdaiModel_contents_config_control_design::SdaiSurface_of_linear_extrusion_get_extents() +{ + return (SdaiSurface_of_linear_extrusion__set_var)((_folders.retrieve(107))->instances_()); +} + +SdaiShell_based_surface_model__set_var SdaiModel_contents_config_control_design::SdaiShell_based_surface_model_get_extents() +{ + return (SdaiShell_based_surface_model__set_var)((_folders.retrieve(108))->instances_()); +} + +SdaiUniform_curve__set_var SdaiModel_contents_config_control_design::SdaiUniform_curve_get_extents() +{ + return (SdaiUniform_curve__set_var)((_folders.retrieve(109))->instances_()); +} + +SdaiBezier_curve__set_var SdaiModel_contents_config_control_design::SdaiBezier_curve_get_extents() +{ + return (SdaiBezier_curve__set_var)((_folders.retrieve(110))->instances_()); +} + +SdaiLoop__set_var SdaiModel_contents_config_control_design::SdaiLoop_get_extents() +{ + return (SdaiLoop__set_var)((_folders.retrieve(111))->instances_()); +} + +SdaiEdge_loop__set_var SdaiModel_contents_config_control_design::SdaiEdge_loop_get_extents() +{ + return (SdaiEdge_loop__set_var)((_folders.retrieve(112))->instances_()); +} + +SdaiDate__set_var SdaiModel_contents_config_control_design::SdaiDate_get_extents() +{ + return (SdaiDate__set_var)((_folders.retrieve(113))->instances_()); +} + +SdaiCalendar_date__set_var SdaiModel_contents_config_control_design::SdaiCalendar_date_get_extents() +{ + return (SdaiCalendar_date__set_var)((_folders.retrieve(114))->instances_()); +} + +SdaiToroidal_surface__set_var SdaiModel_contents_config_control_design::SdaiToroidal_surface_get_extents() +{ + return (SdaiToroidal_surface__set_var)((_folders.retrieve(115))->instances_()); +} + +SdaiPromissory_usage_occurrence__set_var SdaiModel_contents_config_control_design::SdaiPromissory_usage_occurrence_get_extents() +{ + return (SdaiPromissory_usage_occurrence__set_var)((_folders.retrieve(116))->instances_()); +} + +SdaiApproval_assignment__set_var SdaiModel_contents_config_control_design::SdaiApproval_assignment_get_extents() +{ + return (SdaiApproval_assignment__set_var)((_folders.retrieve(117))->instances_()); +} + +SdaiConfiguration_item__set_var SdaiModel_contents_config_control_design::SdaiConfiguration_item_get_extents() +{ + return (SdaiConfiguration_item__set_var)((_folders.retrieve(118))->instances_()); +} + +SdaiContract_assignment__set_var SdaiModel_contents_config_control_design::SdaiContract_assignment_get_extents() +{ + return (SdaiContract_assignment__set_var)((_folders.retrieve(119))->instances_()); +} + +SdaiVector__set_var SdaiModel_contents_config_control_design::SdaiVector_get_extents() +{ + return (SdaiVector__set_var)((_folders.retrieve(120))->instances_()); +} + +SdaiIntersection_curve__set_var SdaiModel_contents_config_control_design::SdaiIntersection_curve_get_extents() +{ + return (SdaiIntersection_curve__set_var)((_folders.retrieve(121))->instances_()); +} + +SdaiTrimmed_curve__set_var SdaiModel_contents_config_control_design::SdaiTrimmed_curve_get_extents() +{ + return (SdaiTrimmed_curve__set_var)((_folders.retrieve(122))->instances_()); +} + +SdaiProduct_definition_context__set_var SdaiModel_contents_config_control_design::SdaiProduct_definition_context_get_extents() +{ + return (SdaiProduct_definition_context__set_var)((_folders.retrieve(123))->instances_()); +} + +SdaiItem_defined_transformation__set_var SdaiModel_contents_config_control_design::SdaiItem_defined_transformation_get_extents() +{ + return (SdaiItem_defined_transformation__set_var)((_folders.retrieve(124))->instances_()); +} + +SdaiAction_method__set_var SdaiModel_contents_config_control_design::SdaiAction_method_get_extents() +{ + return (SdaiAction_method__set_var)((_folders.retrieve(125))->instances_()); +} + +SdaiProduct_category_relationship__set_var SdaiModel_contents_config_control_design::SdaiProduct_category_relationship_get_extents() +{ + return (SdaiProduct_category_relationship__set_var)((_folders.retrieve(126))->instances_()); +} + +SdaiPlane_angle_measure_with_unit__set_var SdaiModel_contents_config_control_design::SdaiPlane_angle_measure_with_unit_get_extents() +{ + return (SdaiPlane_angle_measure_with_unit__set_var)((_folders.retrieve(127))->instances_()); +} + +SdaiVertex__set_var SdaiModel_contents_config_control_design::SdaiVertex_get_extents() +{ + return (SdaiVertex__set_var)((_folders.retrieve(128))->instances_()); +} + +SdaiRepresentation_map__set_var SdaiModel_contents_config_control_design::SdaiRepresentation_map_get_extents() +{ + return (SdaiRepresentation_map__set_var)((_folders.retrieve(129))->instances_()); +} + +SdaiProduct_definition_effectivity__set_var SdaiModel_contents_config_control_design::SdaiProduct_definition_effectivity_get_extents() +{ + return (SdaiProduct_definition_effectivity__set_var)((_folders.retrieve(130))->instances_()); +} + +SdaiConfiguration_effectivity__set_var SdaiModel_contents_config_control_design::SdaiConfiguration_effectivity_get_extents() +{ + return (SdaiConfiguration_effectivity__set_var)((_folders.retrieve(131))->instances_()); +} + +SdaiEllipse__set_var SdaiModel_contents_config_control_design::SdaiEllipse_get_extents() +{ + return (SdaiEllipse__set_var)((_folders.retrieve(132))->instances_()); +} + +SdaiContext_dependent_unit__set_var SdaiModel_contents_config_control_design::SdaiContext_dependent_unit_get_extents() +{ + return (SdaiContext_dependent_unit__set_var)((_folders.retrieve(133))->instances_()); +} + +SdaiAlternate_product_relationship__set_var SdaiModel_contents_config_control_design::SdaiAlternate_product_relationship_get_extents() +{ + return (SdaiAlternate_product_relationship__set_var)((_folders.retrieve(134))->instances_()); +} + +SdaiDocument_type__set_var SdaiModel_contents_config_control_design::SdaiDocument_type_get_extents() +{ + return (SdaiDocument_type__set_var)((_folders.retrieve(135))->instances_()); +} + +SdaiDocument_reference__set_var SdaiModel_contents_config_control_design::SdaiDocument_reference_get_extents() +{ + return (SdaiDocument_reference__set_var)((_folders.retrieve(136))->instances_()); +} + +SdaiMechanical_context__set_var SdaiModel_contents_config_control_design::SdaiMechanical_context_get_extents() +{ + return (SdaiMechanical_context__set_var)((_folders.retrieve(137))->instances_()); +} + +SdaiShell_based_wireframe_model__set_var SdaiModel_contents_config_control_design::SdaiShell_based_wireframe_model_get_extents() +{ + return (SdaiShell_based_wireframe_model__set_var)((_folders.retrieve(138))->instances_()); +} + +SdaiContract__set_var SdaiModel_contents_config_control_design::SdaiContract_get_extents() +{ + return (SdaiContract__set_var)((_folders.retrieve(139))->instances_()); +} + +SdaiDimensional_exponents__set_var SdaiModel_contents_config_control_design::SdaiDimensional_exponents_get_extents() +{ + return (SdaiDimensional_exponents__set_var)((_folders.retrieve(140))->instances_()); +} + +SdaiStart_request__set_var SdaiModel_contents_config_control_design::SdaiStart_request_get_extents() +{ + return (SdaiStart_request__set_var)((_folders.retrieve(141))->instances_()); +} + +SdaiCc_design_specification_reference__set_var SdaiModel_contents_config_control_design::SdaiCc_design_specification_reference_get_extents() +{ + return (SdaiCc_design_specification_reference__set_var)((_folders.retrieve(142))->instances_()); +} + +SdaiSupplied_part_relationship__set_var SdaiModel_contents_config_control_design::SdaiSupplied_part_relationship_get_extents() +{ + return (SdaiSupplied_part_relationship__set_var)((_folders.retrieve(143))->instances_()); +} + +SdaiContext_dependent_shape_representation__set_var SdaiModel_contents_config_control_design::SdaiContext_dependent_shape_representation_get_extents() +{ + return (SdaiContext_dependent_shape_representation__set_var)((_folders.retrieve(144))->instances_()); +} + +SdaiOrdinal_date__set_var SdaiModel_contents_config_control_design::SdaiOrdinal_date_get_extents() +{ + return (SdaiOrdinal_date__set_var)((_folders.retrieve(145))->instances_()); +} + +SdaiFace_outer_bound__set_var SdaiModel_contents_config_control_design::SdaiFace_outer_bound_get_extents() +{ + return (SdaiFace_outer_bound__set_var)((_folders.retrieve(146))->instances_()); +} + +SdaiMass_measure_with_unit__set_var SdaiModel_contents_config_control_design::SdaiMass_measure_with_unit_get_extents() +{ + return (SdaiMass_measure_with_unit__set_var)((_folders.retrieve(147))->instances_()); +} + +SdaiBrep_with_voids__set_var SdaiModel_contents_config_control_design::SdaiBrep_with_voids_get_extents() +{ + return (SdaiBrep_with_voids__set_var)((_folders.retrieve(148))->instances_()); +} + +SdaiWeek_of_year_and_day_date__set_var SdaiModel_contents_config_control_design::SdaiWeek_of_year_and_day_date_get_extents() +{ + return (SdaiWeek_of_year_and_day_date__set_var)((_folders.retrieve(149))->instances_()); +} + +SdaiPoint_on_curve__set_var SdaiModel_contents_config_control_design::SdaiPoint_on_curve_get_extents() +{ + return (SdaiPoint_on_curve__set_var)((_folders.retrieve(150))->instances_()); +} + +SdaiShell_based_wireframe_shape_representation__set_var SdaiModel_contents_config_control_design::SdaiShell_based_wireframe_shape_representation_get_extents() +{ + return (SdaiShell_based_wireframe_shape_representation__set_var)((_folders.retrieve(151))->instances_()); +} + +SdaiFace__set_var SdaiModel_contents_config_control_design::SdaiFace_get_extents() +{ + return (SdaiFace__set_var)((_folders.retrieve(152))->instances_()); +} + +SdaiFace_surface__set_var SdaiModel_contents_config_control_design::SdaiFace_surface_get_extents() +{ + return (SdaiFace_surface__set_var)((_folders.retrieve(153))->instances_()); +} + +SdaiOriented_face__set_var SdaiModel_contents_config_control_design::SdaiOriented_face_get_extents() +{ + return (SdaiOriented_face__set_var)((_folders.retrieve(154))->instances_()); +} + +SdaiSurface_of_revolution__set_var SdaiModel_contents_config_control_design::SdaiSurface_of_revolution_get_extents() +{ + return (SdaiSurface_of_revolution__set_var)((_folders.retrieve(155))->instances_()); +} + +SdaiAdvanced_brep_shape_representation__set_var SdaiModel_contents_config_control_design::SdaiAdvanced_brep_shape_representation_get_extents() +{ + return (SdaiAdvanced_brep_shape_representation__set_var)((_folders.retrieve(156))->instances_()); +} + +SdaiEdge_curve__set_var SdaiModel_contents_config_control_design::SdaiEdge_curve_get_extents() +{ + return (SdaiEdge_curve__set_var)((_folders.retrieve(157))->instances_()); +} + +SdaiPoint_replica__set_var SdaiModel_contents_config_control_design::SdaiPoint_replica_get_extents() +{ + return (SdaiPoint_replica__set_var)((_folders.retrieve(158))->instances_()); +} + +SdaiProduct__set_var SdaiModel_contents_config_control_design::SdaiProduct_get_extents() +{ + return (SdaiProduct__set_var)((_folders.retrieve(159))->instances_()); +} + +SdaiShape_aspect_relationship__set_var SdaiModel_contents_config_control_design::SdaiShape_aspect_relationship_get_extents() +{ + return (SdaiShape_aspect_relationship__set_var)((_folders.retrieve(160))->instances_()); +} + +SdaiRectangular_trimmed_surface__set_var SdaiModel_contents_config_control_design::SdaiRectangular_trimmed_surface_get_extents() +{ + return (SdaiRectangular_trimmed_surface__set_var)((_folders.retrieve(161))->instances_()); +} + +SdaiPlane__set_var SdaiModel_contents_config_control_design::SdaiPlane_get_extents() +{ + return (SdaiPlane__set_var)((_folders.retrieve(162))->instances_()); +} + +SdaiAction_assignment__set_var SdaiModel_contents_config_control_design::SdaiAction_assignment_get_extents() +{ + return (SdaiAction_assignment__set_var)((_folders.retrieve(163))->instances_()); +} + +SdaiChange__set_var SdaiModel_contents_config_control_design::SdaiChange_get_extents() +{ + return (SdaiChange__set_var)((_folders.retrieve(164))->instances_()); +} + +SdaiCircle__set_var SdaiModel_contents_config_control_design::SdaiCircle_get_extents() +{ + return (SdaiCircle__set_var)((_folders.retrieve(165))->instances_()); +} + +SdaiLine__set_var SdaiModel_contents_config_control_design::SdaiLine_get_extents() +{ + return (SdaiLine__set_var)((_folders.retrieve(166))->instances_()); +} + +SdaiProperty_definition_representation__set_var SdaiModel_contents_config_control_design::SdaiProperty_definition_representation_get_extents() +{ + return (SdaiProperty_definition_representation__set_var)((_folders.retrieve(167))->instances_()); +} + +SdaiGeometric_set__set_var SdaiModel_contents_config_control_design::SdaiGeometric_set_get_extents() +{ + return (SdaiGeometric_set__set_var)((_folders.retrieve(168))->instances_()); +} + +SdaiGeometric_curve_set__set_var SdaiModel_contents_config_control_design::SdaiGeometric_curve_set_get_extents() +{ + return (SdaiGeometric_curve_set__set_var)((_folders.retrieve(169))->instances_()); +} + +SdaiPersonal_address__set_var SdaiModel_contents_config_control_design::SdaiPersonal_address_get_extents() +{ + return (SdaiPersonal_address__set_var)((_folders.retrieve(170))->instances_()); +} + +SdaiDocument_relationship__set_var SdaiModel_contents_config_control_design::SdaiDocument_relationship_get_extents() +{ + return (SdaiDocument_relationship__set_var)((_folders.retrieve(171))->instances_()); +} + +SdaiPcurve__set_var SdaiModel_contents_config_control_design::SdaiPcurve_get_extents() +{ + return (SdaiPcurve__set_var)((_folders.retrieve(172))->instances_()); +} + +SdaiOuter_boundary_curve__set_var SdaiModel_contents_config_control_design::SdaiOuter_boundary_curve_get_extents() +{ + return (SdaiOuter_boundary_curve__set_var)((_folders.retrieve(173))->instances_()); +} + +SdaiShape_representation_relationship__set_var SdaiModel_contents_config_control_design::SdaiShape_representation_relationship_get_extents() +{ + return (SdaiShape_representation_relationship__set_var)((_folders.retrieve(174))->instances_()); +} + +SdaiAssembly_component_usage_substitute__set_var SdaiModel_contents_config_control_design::SdaiAssembly_component_usage_substitute_get_extents() +{ + return (SdaiAssembly_component_usage_substitute__set_var)((_folders.retrieve(175))->instances_()); +} + +SdaiDegenerate_pcurve__set_var SdaiModel_contents_config_control_design::SdaiDegenerate_pcurve_get_extents() +{ + return (SdaiDegenerate_pcurve__set_var)((_folders.retrieve(176))->instances_()); +} + +SdaiEvaluated_degenerate_pcurve__set_var SdaiModel_contents_config_control_design::SdaiEvaluated_degenerate_pcurve_get_extents() +{ + return (SdaiEvaluated_degenerate_pcurve__set_var)((_folders.retrieve(177))->instances_()); +} + +SdaiSolid_angle_measure_with_unit__set_var SdaiModel_contents_config_control_design::SdaiSolid_angle_measure_with_unit_get_extents() +{ + return (SdaiSolid_angle_measure_with_unit__set_var)((_folders.retrieve(178))->instances_()); +} + +SdaiConnected_edge_set__set_var SdaiModel_contents_config_control_design::SdaiConnected_edge_set_get_extents() +{ + return (SdaiConnected_edge_set__set_var)((_folders.retrieve(179))->instances_()); +} + +SdaiAction__set_var SdaiModel_contents_config_control_design::SdaiAction_get_extents() +{ + return (SdaiAction__set_var)((_folders.retrieve(180))->instances_()); +} + +SdaiExecuted_action__set_var SdaiModel_contents_config_control_design::SdaiExecuted_action_get_extents() +{ + return (SdaiExecuted_action__set_var)((_folders.retrieve(181))->instances_()); +} + +SdaiDirected_action__set_var SdaiModel_contents_config_control_design::SdaiDirected_action_get_extents() +{ + return (SdaiDirected_action__set_var)((_folders.retrieve(182))->instances_()); +} + +SdaiOrganizational_project__set_var SdaiModel_contents_config_control_design::SdaiOrganizational_project_get_extents() +{ + return (SdaiOrganizational_project__set_var)((_folders.retrieve(183))->instances_()); +} + +SdaiDate_time_role__set_var SdaiModel_contents_config_control_design::SdaiDate_time_role_get_extents() +{ + return (SdaiDate_time_role__set_var)((_folders.retrieve(184))->instances_()); +} + +SdaiCurve_bounded_surface__set_var SdaiModel_contents_config_control_design::SdaiCurve_bounded_surface_get_extents() +{ + return (SdaiCurve_bounded_surface__set_var)((_folders.retrieve(185))->instances_()); +} + +SdaiClosed_shell__set_var SdaiModel_contents_config_control_design::SdaiClosed_shell_get_extents() +{ + return (SdaiClosed_shell__set_var)((_folders.retrieve(186))->instances_()); +} + +SdaiDesign_make_from_relationship__set_var SdaiModel_contents_config_control_design::SdaiDesign_make_from_relationship_get_extents() +{ + return (SdaiDesign_make_from_relationship__set_var)((_folders.retrieve(187))->instances_()); +} + +SdaiDefinitional_representation__set_var SdaiModel_contents_config_control_design::SdaiDefinitional_representation_get_extents() +{ + return (SdaiDefinitional_representation__set_var)((_folders.retrieve(188))->instances_()); +} + +SdaiProduct_definition_shape__set_var SdaiModel_contents_config_control_design::SdaiProduct_definition_shape_get_extents() +{ + return (SdaiProduct_definition_shape__set_var)((_folders.retrieve(189))->instances_()); +} + +SdaiSi_unit__set_var SdaiModel_contents_config_control_design::SdaiSi_unit_get_extents() +{ + return (SdaiSi_unit__set_var)((_folders.retrieve(190))->instances_()); +} + +SdaiBezier_surface__set_var SdaiModel_contents_config_control_design::SdaiBezier_surface_get_extents() +{ + return (SdaiBezier_surface__set_var)((_folders.retrieve(191))->instances_()); +} + +SdaiCertification_assignment__set_var SdaiModel_contents_config_control_design::SdaiCertification_assignment_get_extents() +{ + return (SdaiCertification_assignment__set_var)((_folders.retrieve(192))->instances_()); +} + +SdaiStart_work__set_var SdaiModel_contents_config_control_design::SdaiStart_work_get_extents() +{ + return (SdaiStart_work__set_var)((_folders.retrieve(193))->instances_()); +} + +SdaiContract_type__set_var SdaiModel_contents_config_control_design::SdaiContract_type_get_extents() +{ + return (SdaiContract_type__set_var)((_folders.retrieve(194))->instances_()); +} + +SdaiB_spline_curve_with_knots__set_var SdaiModel_contents_config_control_design::SdaiB_spline_curve_with_knots_get_extents() +{ + return (SdaiB_spline_curve_with_knots__set_var)((_folders.retrieve(195))->instances_()); +} + +SdaiCc_design_approval__set_var SdaiModel_contents_config_control_design::SdaiCc_design_approval_get_extents() +{ + return (SdaiCc_design_approval__set_var)((_folders.retrieve(196))->instances_()); +} + +SdaiEdge_based_wireframe_shape_representation__set_var SdaiModel_contents_config_control_design::SdaiEdge_based_wireframe_shape_representation_get_extents() +{ + return (SdaiEdge_based_wireframe_shape_representation__set_var)((_folders.retrieve(197))->instances_()); +} + +SdaiGeometrically_bounded_wireframe_shape_representation__set_var SdaiModel_contents_config_control_design::SdaiGeometrically_bounded_wireframe_shape_representation_get_extents() +{ + return (SdaiGeometrically_bounded_wireframe_shape_representation__set_var)((_folders.retrieve(198))->instances_()); +} + +SdaiProduct_concept__set_var SdaiModel_contents_config_control_design::SdaiProduct_concept_get_extents() +{ + return (SdaiProduct_concept__set_var)((_folders.retrieve(199))->instances_()); +} + +SdaiCc_design_contract__set_var SdaiModel_contents_config_control_design::SdaiCc_design_contract_get_extents() +{ + return (SdaiCc_design_contract__set_var)((_folders.retrieve(200))->instances_()); +} + +SdaiSeam_curve__set_var SdaiModel_contents_config_control_design::SdaiSeam_curve_get_extents() +{ + return (SdaiSeam_curve__set_var)((_folders.retrieve(201))->instances_()); +} + +SdaiAxis2_placement_3d__set_var SdaiModel_contents_config_control_design::SdaiAxis2_placement_3d_get_extents() +{ + return (SdaiAxis2_placement_3d__set_var)((_folders.retrieve(202))->instances_()); +} + +SdaiRational_b_spline_surface__set_var SdaiModel_contents_config_control_design::SdaiRational_b_spline_surface_get_extents() +{ + return (SdaiRational_b_spline_surface__set_var)((_folders.retrieve(203))->instances_()); +} + +SdaiConfiguration_design__set_var SdaiModel_contents_config_control_design::SdaiConfiguration_design_get_extents() +{ + return (SdaiConfiguration_design__set_var)((_folders.retrieve(204))->instances_()); +} + +SdaiDesign_context__set_var SdaiModel_contents_config_control_design::SdaiDesign_context_get_extents() +{ + return (SdaiDesign_context__set_var)((_folders.retrieve(205))->instances_()); +} + +SdaiProduct_definition__set_var SdaiModel_contents_config_control_design::SdaiProduct_definition_get_extents() +{ + return (SdaiProduct_definition__set_var)((_folders.retrieve(206))->instances_()); +} + +SdaiProduct_definition_with_associated_documents__set_var SdaiModel_contents_config_control_design::SdaiProduct_definition_with_associated_documents_get_extents() +{ + return (SdaiProduct_definition_with_associated_documents__set_var)((_folders.retrieve(207))->instances_()); +} + +SdaiOrganization__set_var SdaiModel_contents_config_control_design::SdaiOrganization_get_extents() +{ + return (SdaiOrganization__set_var)((_folders.retrieve(208))->instances_()); +} + +SdaiCc_design_certification__set_var SdaiModel_contents_config_control_design::SdaiCc_design_certification_get_extents() +{ + return (SdaiCc_design_certification__set_var)((_folders.retrieve(209))->instances_()); +} + +SdaiB_spline_surface_with_knots__set_var SdaiModel_contents_config_control_design::SdaiB_spline_surface_with_knots_get_extents() +{ + return (SdaiB_spline_surface_with_knots__set_var)((_folders.retrieve(210))->instances_()); +} + +SdaiCertification_type__set_var SdaiModel_contents_config_control_design::SdaiCertification_type_get_extents() +{ + return (SdaiCertification_type__set_var)((_folders.retrieve(211))->instances_()); +} + +SdaiOriented_path__set_var SdaiModel_contents_config_control_design::SdaiOriented_path_get_extents() +{ + return (SdaiOriented_path__set_var)((_folders.retrieve(212))->instances_()); +} + +SdaiSecurity_classification__set_var SdaiModel_contents_config_control_design::SdaiSecurity_classification_get_extents() +{ + return (SdaiSecurity_classification__set_var)((_folders.retrieve(213))->instances_()); +} + +SdaiVertex_loop__set_var SdaiModel_contents_config_control_design::SdaiVertex_loop_get_extents() +{ + return (SdaiVertex_loop__set_var)((_folders.retrieve(214))->instances_()); +} + +SdaiApproval_status__set_var SdaiModel_contents_config_control_design::SdaiApproval_status_get_extents() +{ + return (SdaiApproval_status__set_var)((_folders.retrieve(215))->instances_()); +} + +SdaiCartesian_point__set_var SdaiModel_contents_config_control_design::SdaiCartesian_point_get_extents() +{ + return (SdaiCartesian_point__set_var)((_folders.retrieve(216))->instances_()); +} + +SdaiDate_and_time_assignment__set_var SdaiModel_contents_config_control_design::SdaiDate_and_time_assignment_get_extents() +{ + return (SdaiDate_and_time_assignment__set_var)((_folders.retrieve(217))->instances_()); +} + +SdaiParametric_representation_context__set_var SdaiModel_contents_config_control_design::SdaiParametric_representation_context_get_extents() +{ + return (SdaiParametric_representation_context__set_var)((_folders.retrieve(218))->instances_()); +} + +SdaiProduct_concept_context__set_var SdaiModel_contents_config_control_design::SdaiProduct_concept_context_get_extents() +{ + return (SdaiProduct_concept_context__set_var)((_folders.retrieve(219))->instances_()); +} + +SdaiCartesian_transformation_operator_2d__set_var SdaiModel_contents_config_control_design::SdaiCartesian_transformation_operator_2d_get_extents() +{ + return (SdaiCartesian_transformation_operator_2d__set_var)((_folders.retrieve(220))->instances_()); +} + +SdaiSurface_patch__set_var SdaiModel_contents_config_control_design::SdaiSurface_patch_get_extents() +{ + return (SdaiSurface_patch__set_var)((_folders.retrieve(221))->instances_()); +} + +SdaiLength_unit__set_var SdaiModel_contents_config_control_design::SdaiLength_unit_get_extents() +{ + return (SdaiLength_unit__set_var)((_folders.retrieve(222))->instances_()); +} + +SdaiShape_aspect__set_var SdaiModel_contents_config_control_design::SdaiShape_aspect_get_extents() +{ + return (SdaiShape_aspect__set_var)((_folders.retrieve(223))->instances_()); +} + +SdaiVolume_measure_with_unit__set_var SdaiModel_contents_config_control_design::SdaiVolume_measure_with_unit_get_extents() +{ + return (SdaiVolume_measure_with_unit__set_var)((_folders.retrieve(224))->instances_()); +} + +SdaiAdvanced_face__set_var SdaiModel_contents_config_control_design::SdaiAdvanced_face_get_extents() +{ + return (SdaiAdvanced_face__set_var)((_folders.retrieve(225))->instances_()); +} + +SdaiSecurity_classification_level__set_var SdaiModel_contents_config_control_design::SdaiSecurity_classification_level_get_extents() +{ + return (SdaiSecurity_classification_level__set_var)((_folders.retrieve(226))->instances_()); +} + +SdaiApproval_relationship__set_var SdaiModel_contents_config_control_design::SdaiApproval_relationship_get_extents() +{ + return (SdaiApproval_relationship__set_var)((_folders.retrieve(227))->instances_()); +} + +SdaiPolyline__set_var SdaiModel_contents_config_control_design::SdaiPolyline_get_extents() +{ + return (SdaiPolyline__set_var)((_folders.retrieve(228))->instances_()); +} + +SdaiApproval_person_organization__set_var SdaiModel_contents_config_control_design::SdaiApproval_person_organization_get_extents() +{ + return (SdaiApproval_person_organization__set_var)((_folders.retrieve(229))->instances_()); +} + +SdaiSurface_replica__set_var SdaiModel_contents_config_control_design::SdaiSurface_replica_get_extents() +{ + return (SdaiSurface_replica__set_var)((_folders.retrieve(230))->instances_()); +} + +SdaiSecurity_classification_assignment__set_var SdaiModel_contents_config_control_design::SdaiSecurity_classification_assignment_get_extents() +{ + return (SdaiSecurity_classification_assignment__set_var)((_folders.retrieve(231))->instances_()); +} + +SdaiCc_design_security_classification__set_var SdaiModel_contents_config_control_design::SdaiCc_design_security_classification_get_extents() +{ + return (SdaiCc_design_security_classification__set_var)((_folders.retrieve(232))->instances_()); +} + +SdaiFaceted_brep_shape_representation__set_var SdaiModel_contents_config_control_design::SdaiFaceted_brep_shape_representation_get_extents() +{ + return (SdaiFaceted_brep_shape_representation__set_var)((_folders.retrieve(233))->instances_()); +} + +SdaiDocument_usage_constraint__set_var SdaiModel_contents_config_control_design::SdaiDocument_usage_constraint_get_extents() +{ + return (SdaiDocument_usage_constraint__set_var)((_folders.retrieve(234))->instances_()); +} + +SdaiVertex_point__set_var SdaiModel_contents_config_control_design::SdaiVertex_point_get_extents() +{ + return (SdaiVertex_point__set_var)((_folders.retrieve(235))->instances_()); +} + +SdaiCc_design_date_and_time_assignment__set_var SdaiModel_contents_config_control_design::SdaiCc_design_date_and_time_assignment_get_extents() +{ + return (SdaiCc_design_date_and_time_assignment__set_var)((_folders.retrieve(236))->instances_()); +} + +SdaiOriented_closed_shell__set_var SdaiModel_contents_config_control_design::SdaiOriented_closed_shell_get_extents() +{ + return (SdaiOriented_closed_shell__set_var)((_folders.retrieve(237))->instances_()); +} + +SdaiPerson_and_organization__set_var SdaiModel_contents_config_control_design::SdaiPerson_and_organization_get_extents() +{ + return (SdaiPerson_and_organization__set_var)((_folders.retrieve(238))->instances_()); +} + +SdaiCylindrical_surface__set_var SdaiModel_contents_config_control_design::SdaiCylindrical_surface_get_extents() +{ + return (SdaiCylindrical_surface__set_var)((_folders.retrieve(239))->instances_()); +} + +SdaiLocal_time__set_var SdaiModel_contents_config_control_design::SdaiLocal_time_get_extents() +{ + return (SdaiLocal_time__set_var)((_folders.retrieve(240))->instances_()); +} + +SdaiMass_unit__set_var SdaiModel_contents_config_control_design::SdaiMass_unit_get_extents() +{ + return (SdaiMass_unit__set_var)((_folders.retrieve(241))->instances_()); +} + +SdaiVertex_shell__set_var SdaiModel_contents_config_control_design::SdaiVertex_shell_get_extents() +{ + return (SdaiVertex_shell__set_var)((_folders.retrieve(242))->instances_()); +} + +SdaiPoly_loop__set_var SdaiModel_contents_config_control_design::SdaiPoly_loop_get_extents() +{ + return (SdaiPoly_loop__set_var)((_folders.retrieve(243))->instances_()); +} + +SdaiWire_shell__set_var SdaiModel_contents_config_control_design::SdaiWire_shell_get_extents() +{ + return (SdaiWire_shell__set_var)((_folders.retrieve(244))->instances_()); +} + +SdaiArea_unit__set_var SdaiModel_contents_config_control_design::SdaiArea_unit_get_extents() +{ + return (SdaiArea_unit__set_var)((_folders.retrieve(245))->instances_()); +} + +SdaiMapped_item__set_var SdaiModel_contents_config_control_design::SdaiMapped_item_get_extents() +{ + return (SdaiMapped_item__set_var)((_folders.retrieve(246))->instances_()); +} + +SdaiOffset_curve_2d__set_var SdaiModel_contents_config_control_design::SdaiOffset_curve_2d_get_extents() +{ + return (SdaiOffset_curve_2d__set_var)((_folders.retrieve(247))->instances_()); +} + +SdaiShape_definition_representation__set_var SdaiModel_contents_config_control_design::SdaiShape_definition_representation_get_extents() +{ + return (SdaiShape_definition_representation__set_var)((_folders.retrieve(248))->instances_()); +} + +SdaiVolume_unit__set_var SdaiModel_contents_config_control_design::SdaiVolume_unit_get_extents() +{ + return (SdaiVolume_unit__set_var)((_folders.retrieve(249))->instances_()); +} + +SdaiConical_surface__set_var SdaiModel_contents_config_control_design::SdaiConical_surface_get_extents() +{ + return (SdaiConical_surface__set_var)((_folders.retrieve(250))->instances_()); +} + +SdaiGlobal_unit_assigned_context__set_var SdaiModel_contents_config_control_design::SdaiGlobal_unit_assigned_context_get_extents() +{ + return (SdaiGlobal_unit_assigned_context__set_var)((_folders.retrieve(251))->instances_()); +} #endif diff --git a/source/geometry/solids/STEP/src/SdaiCONFIG_CONTROL_DESIGN_init.cc b/source/geometry/solids/STEP/src/SdaiCONFIG_CONTROL_DESIGN_init.cc index 8cb96e2ee3..2ddce6f894 100644 --- a/source/geometry/solids/STEP/src/SdaiCONFIG_CONTROL_DESIGN_init.cc +++ b/source/geometry/solids/STEP/src/SdaiCONFIG_CONTROL_DESIGN_init.cc @@ -1,753 +1,57 @@ - - -// - - - -// -// $Id: SdaiCONFIG_CONTROL_DESIGN_init.cc,v 1.2 1999/05/21 20:21:03 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// #ifndef SDAICONFIG_CONTROL_DESIGN_INIT_CC #define SDAICONFIG_CONTROL_DESIGN_INIT_CC // 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. -/* */ -#ifndef SCHEMA_H -#include -#endif +/* $Id: SdaiCONFIG_CONTROL_DESIGN_init.cc,v 1.3 2000/01/21 13:43:04 gcosmo Exp $ */ +#ifndef SCHEMA_H +#include +#endif #include void SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) { - SchemaDescriptor * s_config_control_design = new SchemaDescriptor("Config_Control_Design"); - reg.AddSchema (*s_config_control_design); - -/* ************** TYPES */ - config_control_designt_characterized_definition = new SelectTypeDescriptor ( - 0, //unique elements, - "Characterized_Definition", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Characterized_Product_Definition, Shape_Definition)", // Description - (SelectCreator) create_SdaiCharacterized_definition); // Creator function - config_control_designt_parameter_value = new TypeDescriptor ( - "Parameter_Value", // Name - REAL_TYPE, // FundamentalType - "REAL"); // Description - config_control_designt_plane_angle_measure = new TypeDescriptor ( - "Plane_Angle_Measure", // Name - REAL_TYPE, // FundamentalType - "REAL"); // Description - config_control_designt_change_request_item = new SelectTypeDescriptor ( - 1, //unique elements, - "Change_Request_Item", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Product_Definition_Formation)", // Description - (SelectCreator) create_SdaiChange_request_item); // Creator function - config_control_designt_text = new TypeDescriptor ( - "Text", // Name - STRING_TYPE, // FundamentalType - "STRING"); // Description - config_control_designt_year_number = new TypeDescriptor ( - "Year_Number", // Name - INTEGER_TYPE, // FundamentalType - "INTEGER"); // Description - config_control_designt_characterized_product_definition = new SelectTypeDescriptor ( - 1, //unique elements, - "Characterized_Product_Definition", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Product_Definition, Product_Definition_Relationship)", // Description - (SelectCreator) create_SdaiCharacterized_product_definition); // Creator function - config_control_designt_reversible_topology_item = new SelectTypeDescriptor ( - 1, //unique elements, - "Reversible_Topology_Item", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Edge, Path, Face, Face_Bound, Closed_Shell, Open_Shell)", // Description - (SelectCreator) create_SdaiReversible_topology_item); // Creator function - config_control_designt_axis2_placement = new SelectTypeDescriptor ( - 1, //unique elements, - "Axis2_Placement", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Axis2_Placement_2d, Axis2_Placement_3d)", // Description - (SelectCreator) create_SdaiAxis2_placement); // Creator function - - config_control_designt_set_of_reversible_topology_item = new SetTypeDescriptor ( - "Set_Of_Reversible_Topology_Item", // Name - SET_TYPE, // FundamentalType - "SET [0:?] OF Reversible_Topology_Item", // Description - (AggregateCreator) create_SdaiSet_of_reversible_topology_item); // Creator function - - config_control_designt_week_in_year_number = new TypeDescriptor ( - "Week_In_Year_Number", // Name - INTEGER_TYPE, // FundamentalType - "INTEGER"); // Description - config_control_designt_knot_type = new EnumTypeDescriptor ( - "Knot_Type", // Name - ENUM_TYPE, // FundamentalType - "ENUMERATION of (uniform_knots, quasi_uniform_knots, piecewise_bezier_knots, unspecified)", // Description - (EnumCreator) create_SdaiKnot_type); // Creator function - config_control_designt_specified_item = new SelectTypeDescriptor ( - 1, //unique elements, - "Specified_Item", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Product_Definition, Shape_Aspect)", // Description - (SelectCreator) create_SdaiSpecified_item); // Creator function - config_control_designt_minute_in_hour = new TypeDescriptor ( - "Minute_In_Hour", // Name - INTEGER_TYPE, // FundamentalType - "INTEGER"); // Description - config_control_designt_transition_code = new EnumTypeDescriptor ( - "Transition_Code", // Name - ENUM_TYPE, // FundamentalType - "ENUMERATION of (discontinuous, cont_same_gradient_same_curvature, cont_same_gradient, continuous)", // Description - (EnumCreator) create_SdaiTransition_code); // Creator function - config_control_designt_identifier = new TypeDescriptor ( - "Identifier", // Name - STRING_TYPE, // FundamentalType - "STRING"); // Description - config_control_designt_measure_value = new SelectTypeDescriptor ( - 0, //unique elements, - "Measure_Value", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Area_Measure, Context_Dependent_Measure, Count_Measure, Descriptive_Measure, Length_Measure, Mass_Measure, Plane_Angle_Measure, Parameter_Value, Positive_Length_Measure, Positive_Plane_Angle_Measure, Solid_Angle_Measure, Volume_Measure)", // Description - (SelectCreator) create_SdaiMeasure_value); // Creator function - config_control_designt_person_organization_select = new SelectTypeDescriptor ( - 1, //unique elements, - "Person_Organization_Select", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Person_And_Organization)", // Description - (SelectCreator) create_SdaiPerson_organization_select); // Creator function - config_control_designt_preferred_surface_curve_representation = new EnumTypeDescriptor ( - "Preferred_Surface_Curve_Representation", // Name - ENUM_TYPE, // FundamentalType - "ENUMERATION of (pcurve_s2, pcurve_s1, curve_3d)", // Description - (EnumCreator) create_SdaiPreferred_surface_curve_representation); // Creator function - config_control_designt_dimension_count = new TypeDescriptor ( - "Dimension_Count", // Name - INTEGER_TYPE, // FundamentalType - "INTEGER"); // Description - config_control_designt_pcurve_or_surface = new SelectTypeDescriptor ( - 1, //unique elements, - "Pcurve_Or_Surface", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Pcurve, Surface)", // Description - (SelectCreator) create_SdaiPcurve_or_surface); // Creator function - config_control_designt_positive_length_measure = new TypeDescriptor ( - "Positive_Length_Measure", // Name - REFERENCE_TYPE, // FundamentalType - "Length_Measure"); // Description - config_control_designt_b_spline_curve_form = new EnumTypeDescriptor ( - "B_Spline_Curve_Form", // Name - ENUM_TYPE, // FundamentalType - "ENUMERATION of (elliptic_arc, polyline_form, parabolic_arc, circular_arc, unspecified, hyperbolic_arc)", // Description - (EnumCreator) create_SdaiB_spline_curve_form); // Creator function - config_control_designt_hour_in_day = new TypeDescriptor ( - "Hour_In_Day", // Name - INTEGER_TYPE, // FundamentalType - "INTEGER"); // Description - config_control_designt_classified_item = new SelectTypeDescriptor ( - 1, //unique elements, - "Classified_Item", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Product_Definition_Formation, Assembly_Component_Usage)", // Description - (SelectCreator) create_SdaiClassified_item); // Creator function - config_control_designt_si_unit_name = new EnumTypeDescriptor ( - "Si_Unit_Name", // Name - ENUM_TYPE, // FundamentalType - "ENUMERATION of (hertz, degree_celsius, siemens, sievert, lux, Watt, ohm, second, becquerel, pascal, henry, tesla, volt, joule, kelvin, ampere, gram, steradian, mole, lumen, gray, candela, farad, radian, newton, metre, weber, coulomb)", // Description - (EnumCreator) create_SdaiSi_unit_name); // Creator function - config_control_designt_day_in_month_number = new TypeDescriptor ( - "Day_In_Month_Number", // Name - INTEGER_TYPE, // FundamentalType - "INTEGER"); // Description - config_control_designt_trimming_preference = new EnumTypeDescriptor ( - "Trimming_Preference", // Name - ENUM_TYPE, // FundamentalType - "ENUMERATION of (parameter, unspecified, cartesian)", // Description - (EnumCreator) create_SdaiTrimming_preference); // Creator function - config_control_designt_vector_or_direction = new SelectTypeDescriptor ( - 1, //unique elements, - "Vector_Or_Direction", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Vector, Direction)", // Description - (SelectCreator) create_SdaiVector_or_direction); // Creator function - config_control_designt_wireframe_model = new SelectTypeDescriptor ( - 1, //unique elements, - "Wireframe_Model", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Shell_Based_Wireframe_Model, Edge_Based_Wireframe_Model)", // Description - (SelectCreator) create_SdaiWireframe_model); // Creator function - config_control_designt_volume_measure = new TypeDescriptor ( - "Volume_Measure", // Name - REAL_TYPE, // FundamentalType - "REAL"); // Description - config_control_designt_geometric_set_select = new SelectTypeDescriptor ( - 1, //unique elements, - "Geometric_Set_Select", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Point, Curve, Surface)", // Description - (SelectCreator) create_SdaiGeometric_set_select); // Creator function - config_control_designt_positive_plane_angle_measure = new TypeDescriptor ( - "Positive_Plane_Angle_Measure", // Name - REFERENCE_TYPE, // FundamentalType - "Plane_Angle_Measure"); // Description - config_control_designt_start_request_item = new SelectTypeDescriptor ( - 1, //unique elements, - "Start_Request_Item", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Product_Definition_Formation)", // Description - (SelectCreator) create_SdaiStart_request_item); // Creator function - config_control_designt_b_spline_surface_form = new EnumTypeDescriptor ( - "B_Spline_Surface_Form", // Name - ENUM_TYPE, // FundamentalType - "ENUMERATION of (surf_of_linear_extrusion, plane_surf, generalised_cone, toroidal_surf, conical_surf, spherical_surf, unspecified, ruled_surf, surf_of_revolution, cylindrical_surf, quadric_surf)", // Description - (EnumCreator) create_SdaiB_spline_surface_form); // Creator function - config_control_designt_person_organization_item = new SelectTypeDescriptor ( - 1, //unique elements, - "Person_Organization_Item", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Change, Start_Work, Change_Request, Start_Request, Configuration_Item, Product, Product_Definition_Formation, Product_Definition, Contract, Security_Classification)", // Description - (SelectCreator) create_SdaiPerson_organization_item); // Creator function - config_control_designt_date_time_item = new SelectTypeDescriptor ( - 1, //unique elements, - "Date_Time_Item", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Product_Definition, Change_Request, Start_Request, Change, Start_Work, Approval_Person_Organization, Contract, Security_Classification, Certification)", // Description - (SelectCreator) create_SdaiDate_time_item); // Creator function - config_control_designt_shell = new SelectTypeDescriptor ( - 1, //unique elements, - "Shell", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Open_Shell, Closed_Shell, Vertex_Shell, Wire_Shell)", // Description - (SelectCreator) create_SdaiShell); // Creator function - config_control_designt_transformation = new SelectTypeDescriptor ( - 1, //unique elements, - "Transformation", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Item_Defined_Transformation, Functionally_Defined_Transformation)", // Description - (SelectCreator) create_SdaiTransformation); // Creator function - config_control_designt_day_in_week_number = new TypeDescriptor ( - "Day_In_Week_Number", // Name - INTEGER_TYPE, // FundamentalType - "INTEGER"); // Description - config_control_designt_boolean_operand = new SelectTypeDescriptor ( - 1, //unique elements, - "Boolean_Operand", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Solid_Model)", // Description - (SelectCreator) create_SdaiBoolean_operand); // Creator function - config_control_designt_certified_item = new SelectTypeDescriptor ( - 1, //unique elements, - "Certified_Item", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Supplied_Part_Relationship)", // Description - (SelectCreator) create_SdaiCertified_item); // Creator function - config_control_designt_date_time_select = new SelectTypeDescriptor ( - 1, //unique elements, - "Date_Time_Select", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Date_And_Time)", // Description - (SelectCreator) create_SdaiDate_time_select); // Creator function - config_control_designt_solid_angle_measure = new TypeDescriptor ( - "Solid_Angle_Measure", // Name - REAL_TYPE, // FundamentalType - "REAL"); // Description - config_control_designt_curve_on_surface = new SelectTypeDescriptor ( - 1, //unique elements, - "Curve_On_Surface", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Pcurve, Surface_Curve, Composite_Curve_On_Surface)", // Description - (SelectCreator) create_SdaiCurve_on_surface); // Creator function - config_control_designt_trimming_select = new SelectTypeDescriptor ( - 0, //unique elements, - "Trimming_Select", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Cartesian_Point, Parameter_Value)", // Description - (SelectCreator) create_SdaiTrimming_select); // Creator function - config_control_designt_ahead_or_behind = new EnumTypeDescriptor ( - "Ahead_Or_Behind", // Name - ENUM_TYPE, // FundamentalType - "ENUMERATION of (ahead, behind)", // Description - (EnumCreator) create_SdaiAhead_or_behind); // Creator function - config_control_designt_contracted_item = new SelectTypeDescriptor ( - 1, //unique elements, - "Contracted_Item", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Product_Definition_Formation)", // Description - (SelectCreator) create_SdaiContracted_item); // Creator function - config_control_designt_day_in_year_number = new TypeDescriptor ( - "Day_In_Year_Number", // Name - INTEGER_TYPE, // FundamentalType - "INTEGER"); // Description - config_control_designt_mass_measure = new TypeDescriptor ( - "Mass_Measure", // Name - REAL_TYPE, // FundamentalType - "REAL"); // Description - config_control_designt_descriptive_measure = new TypeDescriptor ( - "Descriptive_Measure", // Name - STRING_TYPE, // FundamentalType - "STRING"); // Description - config_control_designt_area_measure = new TypeDescriptor ( - "Area_Measure", // Name - REAL_TYPE, // FundamentalType - "REAL"); // Description - config_control_designt_month_in_year_number = new TypeDescriptor ( - "Month_In_Year_Number", // Name - INTEGER_TYPE, // FundamentalType - "INTEGER"); // Description - config_control_designt_source = new EnumTypeDescriptor ( - "Source", // Name - ENUM_TYPE, // FundamentalType - "ENUMERATION of (bought, not_known, made)", // Description - (EnumCreator) create_SdaiSource); // Creator function - config_control_designt_unit = new SelectTypeDescriptor ( - 1, //unique elements, - "Unit", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Named_Unit)", // Description - (SelectCreator) create_SdaiUnit); // Creator function - config_control_designt_reversible_topology = new SelectTypeDescriptor ( - 0, //unique elements, - "Reversible_Topology", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Reversible_Topology_Item, List_Of_Reversible_Topology_Item, Set_Of_Reversible_Topology_Item)", // Description - (SelectCreator) create_SdaiReversible_topology); // Creator function - config_control_designt_work_item = new SelectTypeDescriptor ( - 1, //unique elements, - "Work_Item", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Product_Definition_Formation)", // Description - (SelectCreator) create_SdaiWork_item); // Creator function - config_control_designt_shape_definition = new SelectTypeDescriptor ( - 1, //unique elements, - "Shape_Definition", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Product_Definition_Shape, Shape_Aspect, Shape_Aspect_Relationship)", // Description - (SelectCreator) create_SdaiShape_definition); // Creator function - config_control_designt_second_in_minute = new TypeDescriptor ( - "Second_In_Minute", // Name - REAL_TYPE, // FundamentalType - "REAL"); // Description - config_control_designt_label = new TypeDescriptor ( - "Label", // Name - STRING_TYPE, // FundamentalType - "STRING"); // Description - config_control_designt_context_dependent_measure = new TypeDescriptor ( - "Context_Dependent_Measure", // Name - REAL_TYPE, // FundamentalType - "REAL"); // Description - config_control_designt_supported_item = new SelectTypeDescriptor ( - 1, //unique elements, - "Supported_Item", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Action_Directive, Action, Action_Method)", // Description - (SelectCreator) create_SdaiSupported_item); // Creator function - config_control_designt_si_prefix = new EnumTypeDescriptor ( - "Si_Prefix", // Name - ENUM_TYPE, // FundamentalType - "ENUMERATION of (exa, pico, mega, femto, atto, centi, nano, hecto, micro, tera, giga, milli, peta, deci, kilo, deca)", // Description - (EnumCreator) create_SdaiSi_prefix); // Creator function - config_control_designt_length_measure = new TypeDescriptor ( - "Length_Measure", // Name - REAL_TYPE, // FundamentalType - "REAL"); // Description - config_control_designt_approved_item = new SelectTypeDescriptor ( - 1, //unique elements, - "Approved_Item", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Product_Definition_Formation, Product_Definition, Configuration_Effectivity, Configuration_Item, Security_Classification, Change_Request, Change, Start_Request, Start_Work, Certification, Contract)", // Description - (SelectCreator) create_SdaiApproved_item); // Creator function - config_control_designt_count_measure = new TypeDescriptor ( - "Count_Measure", // Name - NUMBER_TYPE, // FundamentalType - "NUMBER"); // Description - config_control_designt_surface_model = new SelectTypeDescriptor ( - 1, //unique elements, - "Surface_Model", // Name - SELECT_TYPE, // FundamentalType - "SELECT of (Shell_Based_Surface_Model)", // Description - (SelectCreator) create_SdaiSurface_model); // Creator function - - config_control_designt_list_of_reversible_topology_item = new ListTypeDescriptor ( - "List_Of_Reversible_Topology_Item", // Name - LIST_TYPE, // FundamentalType - "LIST [0:?] of Reversible_Topology_Item", // Description - (AggregateCreator) create_SdaiList_of_reversible_topology_item); // Creator function - - - // ***** Describe the Entities */ - config_control_designe_representation_item = new EntityDescriptor("Representation_Item",s_config_control_design,F, (Creator) create_SdaiRepresentation_item); - config_control_designe_geometric_representation_item = new EntityDescriptor("Geometric_Representation_Item",s_config_control_design,F, (Creator) create_SdaiGeometric_representation_item); - config_control_designe_functionally_defined_transformation = new EntityDescriptor("Functionally_Defined_Transformation",s_config_control_design,F, (Creator) create_SdaiFunctionally_defined_transformation); - config_control_designe_cartesian_transformation_operator = new EntityDescriptor("Cartesian_Transformation_Operator",s_config_control_design,F, (Creator) create_SdaiCartesian_transformation_operator); - config_control_designe_cartesian_transformation_operator_3d = new EntityDescriptor("Cartesian_Transformation_Operator_3d",s_config_control_design,F, (Creator) create_SdaiCartesian_transformation_operator_3d); - config_control_designe_versioned_action_request = new EntityDescriptor("Versioned_Action_Request",s_config_control_design,F, (Creator) create_SdaiVersioned_action_request); - config_control_designe_representation = new EntityDescriptor("Representation",s_config_control_design,F, (Creator) create_SdaiRepresentation); - config_control_designe_shape_representation = new EntityDescriptor("Shape_Representation",s_config_control_design,F, (Creator) create_SdaiShape_representation); - config_control_designe_manifold_surface_shape_representation = new EntityDescriptor("Manifold_Surface_Shape_Representation",s_config_control_design,F, (Creator) create_SdaiManifold_surface_shape_representation); - config_control_designe_certification = new EntityDescriptor("Certification",s_config_control_design,F, (Creator) create_SdaiCertification); - config_control_designe_product_definition_relationship = new EntityDescriptor("Product_Definition_Relationship",s_config_control_design,F, (Creator) create_SdaiProduct_definition_relationship); - config_control_designe_product_definition_usage = new EntityDescriptor("Product_Definition_Usage",s_config_control_design,F, (Creator) create_SdaiProduct_definition_usage); - config_control_designe_assembly_component_usage = new EntityDescriptor("Assembly_Component_Usage",s_config_control_design,F, (Creator) create_SdaiAssembly_component_usage); - config_control_designe_quantified_assembly_component_usage = new EntityDescriptor("Quantified_Assembly_Component_Usage",s_config_control_design,F, (Creator) create_SdaiQuantified_assembly_component_usage); - config_control_designe_solid_model = new EntityDescriptor("Solid_Model",s_config_control_design,F, (Creator) create_SdaiSolid_model); - config_control_designe_manifold_solid_brep = new EntityDescriptor("Manifold_Solid_Brep",s_config_control_design,F, (Creator) create_SdaiManifold_solid_brep); - config_control_designe_faceted_brep = new EntityDescriptor("Faceted_Brep",s_config_control_design,F, (Creator) create_SdaiFaceted_brep); - config_control_designe_action_directive = new EntityDescriptor("Action_Directive",s_config_control_design,F, (Creator) create_SdaiAction_directive); - config_control_designe_named_unit = new EntityDescriptor("Named_Unit",s_config_control_design,F, (Creator) create_SdaiNamed_unit); - config_control_designe_plane_angle_unit = new EntityDescriptor("Plane_Angle_Unit",s_config_control_design,F, (Creator) create_SdaiPlane_angle_unit); - config_control_designe_measure_with_unit = new EntityDescriptor("Measure_With_Unit",s_config_control_design,F, (Creator) create_SdaiMeasure_with_unit); - config_control_designe_area_measure_with_unit = new EntityDescriptor("Area_Measure_With_Unit",s_config_control_design,F, (Creator) create_SdaiArea_measure_with_unit); - config_control_designe_effectivity = new EntityDescriptor("Effectivity",s_config_control_design,F, (Creator) create_SdaiEffectivity); - config_control_designe_serial_numbered_effectivity = new EntityDescriptor("Serial_Numbered_Effectivity",s_config_control_design,F, (Creator) create_SdaiSerial_numbered_effectivity); - config_control_designe_surface = new EntityDescriptor("Surface",s_config_control_design,F, (Creator) create_SdaiSurface); - config_control_designe_offset_surface = new EntityDescriptor("Offset_Surface",s_config_control_design,F, (Creator) create_SdaiOffset_surface); - config_control_designe_placement = new EntityDescriptor("Placement",s_config_control_design,F, (Creator) create_SdaiPlacement); - config_control_designe_axis2_placement_2d = new EntityDescriptor("Axis2_Placement_2d",s_config_control_design,F, (Creator) create_SdaiAxis2_placement_2d); - config_control_designe_product_category = new EntityDescriptor("Product_Category",s_config_control_design,F, (Creator) create_SdaiProduct_category); - config_control_designe_product_related_product_category = new EntityDescriptor("Product_Related_Product_Category",s_config_control_design,F, (Creator) create_SdaiProduct_related_product_category); - config_control_designe_curve = new EntityDescriptor("Curve",s_config_control_design,F, (Creator) create_SdaiCurve); - config_control_designe_conic = new EntityDescriptor("Conic",s_config_control_design,F, (Creator) create_SdaiConic); - config_control_designe_hyperbola = new EntityDescriptor("Hyperbola",s_config_control_design,F, (Creator) create_SdaiHyperbola); - config_control_designe_address = new EntityDescriptor("Address",s_config_control_design,F, (Creator) create_SdaiAddress); - config_control_designe_organizational_address = new EntityDescriptor("Organizational_Address",s_config_control_design,F, (Creator) create_SdaiOrganizational_address); - config_control_designe_bounded_surface = new EntityDescriptor("Bounded_Surface",s_config_control_design,F, (Creator) create_SdaiBounded_surface); - config_control_designe_b_spline_surface = new EntityDescriptor("B_Spline_Surface",s_config_control_design,F, (Creator) create_SdaiB_spline_surface); - config_control_designe_uniform_surface = new EntityDescriptor("Uniform_Surface",s_config_control_design,F, (Creator) create_SdaiUniform_surface); - config_control_designe_geometrically_bounded_surface_shape_representation = new EntityDescriptor("Geometrically_Bounded_Surface_Shape_Representation",s_config_control_design,F, (Creator) create_SdaiGeometrically_bounded_surface_shape_representation); - config_control_designe_axis1_placement = new EntityDescriptor("Axis1_Placement",s_config_control_design,F, (Creator) create_SdaiAxis1_placement); - config_control_designe_bounded_curve = new EntityDescriptor("Bounded_Curve",s_config_control_design,F, (Creator) create_SdaiBounded_curve); - config_control_designe_b_spline_curve = new EntityDescriptor("B_Spline_Curve",s_config_control_design,F, (Creator) create_SdaiB_spline_curve); - config_control_designe_rational_b_spline_curve = new EntityDescriptor("Rational_B_Spline_Curve",s_config_control_design,F, (Creator) create_SdaiRational_b_spline_curve); - config_control_designe_action_request_assignment = new EntityDescriptor("Action_Request_Assignment",s_config_control_design,T, (Creator) create_SdaiAction_request_assignment); - config_control_designe_topological_representation_item = new EntityDescriptor("Topological_Representation_Item",s_config_control_design,F, (Creator) create_SdaiTopological_representation_item); - config_control_designe_face_bound = new EntityDescriptor("Face_Bound",s_config_control_design,F, (Creator) create_SdaiFace_bound); - config_control_designe_length_measure_with_unit = new EntityDescriptor("Length_Measure_With_Unit",s_config_control_design,F, (Creator) create_SdaiLength_measure_with_unit); - config_control_designe_dated_effectivity = new EntityDescriptor("Dated_Effectivity",s_config_control_design,F, (Creator) create_SdaiDated_effectivity); - config_control_designe_direction = new EntityDescriptor("Direction",s_config_control_design,F, (Creator) create_SdaiDirection); - config_control_designe_next_assembly_usage_occurrence = new EntityDescriptor("Next_Assembly_Usage_Occurrence",s_config_control_design,F, (Creator) create_SdaiNext_assembly_usage_occurrence); - config_control_designe_edge = new EntityDescriptor("Edge",s_config_control_design,F, (Creator) create_SdaiEdge); - config_control_designe_oriented_edge = new EntityDescriptor("Oriented_Edge",s_config_control_design,F, (Creator) create_SdaiOriented_edge); - config_control_designe_person = new EntityDescriptor("Person",s_config_control_design,F, (Creator) create_SdaiPerson); - config_control_designe_document = new EntityDescriptor("Document",s_config_control_design,F, (Creator) create_SdaiDocument); - config_control_designe_document_with_class = new EntityDescriptor("Document_With_Class",s_config_control_design,F, (Creator) create_SdaiDocument_with_class); - config_control_designe_conversion_based_unit = new EntityDescriptor("Conversion_Based_Unit",s_config_control_design,F, (Creator) create_SdaiConversion_based_unit); - config_control_designe_point = new EntityDescriptor("Point",s_config_control_design,F, (Creator) create_SdaiPoint); - config_control_designe_point_on_surface = new EntityDescriptor("Point_On_Surface",s_config_control_design,F, (Creator) create_SdaiPoint_on_surface); - config_control_designe_product_definition_formation = new EntityDescriptor("Product_Definition_Formation",s_config_control_design,F, (Creator) create_SdaiProduct_definition_formation); - config_control_designe_person_and_organization_assignment = new EntityDescriptor("Person_And_Organization_Assignment",s_config_control_design,T, (Creator) create_SdaiPerson_and_organization_assignment); - config_control_designe_cc_design_person_and_organization_assignment = new EntityDescriptor("Cc_Design_Person_And_Organization_Assignment",s_config_control_design,F, (Creator) create_SdaiCc_design_person_and_organization_assignment); - config_control_designe_offset_curve_3d = new EntityDescriptor("Offset_Curve_3d",s_config_control_design,F, (Creator) create_SdaiOffset_curve_3d); - config_control_designe_approval = new EntityDescriptor("Approval",s_config_control_design,F, (Creator) create_SdaiApproval); - config_control_designe_composite_curve = new EntityDescriptor("Composite_Curve",s_config_control_design,F, (Creator) create_SdaiComposite_curve); - config_control_designe_composite_curve_on_surface = new EntityDescriptor("Composite_Curve_On_Surface",s_config_control_design,F, (Creator) create_SdaiComposite_curve_on_surface); - config_control_designe_boundary_curve = new EntityDescriptor("Boundary_Curve",s_config_control_design,F, (Creator) create_SdaiBoundary_curve); - config_control_designe_representation_context = new EntityDescriptor("Representation_Context",s_config_control_design,F, (Creator) create_SdaiRepresentation_context); - config_control_designe_geometric_representation_context = new EntityDescriptor("Geometric_Representation_Context",s_config_control_design,F, (Creator) create_SdaiGeometric_representation_context); - config_control_designe_action_status = new EntityDescriptor("Action_Status",s_config_control_design,F, (Creator) create_SdaiAction_status); - config_control_designe_application_context = new EntityDescriptor("Application_Context",s_config_control_design,F, (Creator) create_SdaiApplication_context); - config_control_designe_change_request = new EntityDescriptor("Change_Request",s_config_control_design,F, (Creator) create_SdaiChange_request); - config_control_designe_date_and_time = new EntityDescriptor("Date_And_Time",s_config_control_design,F, (Creator) create_SdaiDate_and_time); - config_control_designe_approval_date_time = new EntityDescriptor("Approval_Date_Time",s_config_control_design,F, (Creator) create_SdaiApproval_date_time); - config_control_designe_approval_role = new EntityDescriptor("Approval_Role",s_config_control_design,F, (Creator) create_SdaiApproval_role); - config_control_designe_application_context_element = new EntityDescriptor("Application_Context_Element",s_config_control_design,F, (Creator) create_SdaiApplication_context_element); - config_control_designe_product_context = new EntityDescriptor("Product_Context",s_config_control_design,F, (Creator) create_SdaiProduct_context); - config_control_designe_elementary_surface = new EntityDescriptor("Elementary_Surface",s_config_control_design,F, (Creator) create_SdaiElementary_surface); - config_control_designe_spherical_surface = new EntityDescriptor("Spherical_Surface",s_config_control_design,F, (Creator) create_SdaiSpherical_surface); - config_control_designe_application_protocol_definition = new EntityDescriptor("Application_Protocol_Definition",s_config_control_design,F, (Creator) create_SdaiApplication_protocol_definition); - config_control_designe_specified_higher_usage_occurrence = new EntityDescriptor("Specified_Higher_Usage_Occurrence",s_config_control_design,F, (Creator) create_SdaiSpecified_higher_usage_occurrence); - config_control_designe_product_definition_formation_with_specified_source = new EntityDescriptor("Product_Definition_Formation_With_Specified_Source",s_config_control_design,F, (Creator) create_SdaiProduct_definition_formation_with_specified_source); - config_control_designe_action_request_solution = new EntityDescriptor("Action_Request_Solution",s_config_control_design,F, (Creator) create_SdaiAction_request_solution); - config_control_designe_uncertainty_measure_with_unit = new EntityDescriptor("Uncertainty_Measure_With_Unit",s_config_control_design,F, (Creator) create_SdaiUncertainty_measure_with_unit); - config_control_designe_edge_based_wireframe_model = new EntityDescriptor("Edge_Based_Wireframe_Model",s_config_control_design,F, (Creator) create_SdaiEdge_based_wireframe_model); - config_control_designe_path = new EntityDescriptor("Path",s_config_control_design,F, (Creator) create_SdaiPath); - config_control_designe_connected_face_set = new EntityDescriptor("Connected_Face_Set",s_config_control_design,F, (Creator) create_SdaiConnected_face_set); - config_control_designe_open_shell = new EntityDescriptor("Open_Shell",s_config_control_design,F, (Creator) create_SdaiOpen_shell); - config_control_designe_oriented_open_shell = new EntityDescriptor("Oriented_Open_Shell",s_config_control_design,F, (Creator) create_SdaiOriented_open_shell); - config_control_designe_solid_angle_unit = new EntityDescriptor("Solid_Angle_Unit",s_config_control_design,F, (Creator) create_SdaiSolid_angle_unit); - config_control_designe_coordinated_universal_time_offset = new EntityDescriptor("Coordinated_Universal_Time_Offset",s_config_control_design,F, (Creator) create_SdaiCoordinated_universal_time_offset); - config_control_designe_curve_replica = new EntityDescriptor("Curve_Replica",s_config_control_design,F, (Creator) create_SdaiCurve_replica); - config_control_designe_quasi_uniform_surface = new EntityDescriptor("Quasi_Uniform_Surface",s_config_control_design,F, (Creator) create_SdaiQuasi_uniform_surface); - config_control_designe_surface_curve = new EntityDescriptor("Surface_Curve",s_config_control_design,F, (Creator) create_SdaiSurface_curve); - config_control_designe_action_request_status = new EntityDescriptor("Action_Request_Status",s_config_control_design,F, (Creator) create_SdaiAction_request_status); - config_control_designe_composite_curve_segment = new EntityDescriptor("Composite_Curve_Segment",s_config_control_design,F, (Creator) create_SdaiComposite_curve_segment); - config_control_designe_reparametrised_composite_curve_segment = new EntityDescriptor("Reparametrised_Composite_Curve_Segment",s_config_control_design,F, (Creator) create_SdaiReparametrised_composite_curve_segment); - config_control_designe_representation_relationship = new EntityDescriptor("Representation_Relationship",s_config_control_design,F, (Creator) create_SdaiRepresentation_relationship); - config_control_designe_representation_relationship_with_transformation = new EntityDescriptor("Representation_Relationship_With_Transformation",s_config_control_design,F, (Creator) create_SdaiRepresentation_relationship_with_transformation); - config_control_designe_person_and_organization_role = new EntityDescriptor("Person_And_Organization_Role",s_config_control_design,F, (Creator) create_SdaiPerson_and_organization_role); - config_control_designe_quasi_uniform_curve = new EntityDescriptor("Quasi_Uniform_Curve",s_config_control_design,F, (Creator) create_SdaiQuasi_uniform_curve); - config_control_designe_swept_surface = new EntityDescriptor("Swept_Surface",s_config_control_design,F, (Creator) create_SdaiSwept_surface); - config_control_designe_property_definition = new EntityDescriptor("Property_Definition",s_config_control_design,F, (Creator) create_SdaiProperty_definition); - config_control_designe_global_uncertainty_assigned_context = new EntityDescriptor("Global_Uncertainty_Assigned_Context",s_config_control_design,F, (Creator) create_SdaiGlobal_uncertainty_assigned_context); - config_control_designe_organization_relationship = new EntityDescriptor("Organization_Relationship",s_config_control_design,F, (Creator) create_SdaiOrganization_relationship); - config_control_designe_parabola = new EntityDescriptor("Parabola",s_config_control_design,F, (Creator) create_SdaiParabola); - config_control_designe_rectangular_composite_surface = new EntityDescriptor("Rectangular_Composite_Surface",s_config_control_design,F, (Creator) create_SdaiRectangular_composite_surface); - config_control_designe_lot_effectivity = new EntityDescriptor("Lot_Effectivity",s_config_control_design,F, (Creator) create_SdaiLot_effectivity); - config_control_designe_surface_of_linear_extrusion = new EntityDescriptor("Surface_Of_Linear_Extrusion",s_config_control_design,F, (Creator) create_SdaiSurface_of_linear_extrusion); - config_control_designe_shell_based_surface_model = new EntityDescriptor("Shell_Based_Surface_Model",s_config_control_design,F, (Creator) create_SdaiShell_based_surface_model); - config_control_designe_uniform_curve = new EntityDescriptor("Uniform_Curve",s_config_control_design,F, (Creator) create_SdaiUniform_curve); - config_control_designe_bezier_curve = new EntityDescriptor("Bezier_Curve",s_config_control_design,F, (Creator) create_SdaiBezier_curve); - config_control_designe_loop = new EntityDescriptor("Loop",s_config_control_design,F, (Creator) create_SdaiLoop); - config_control_designe_edge_loop = new EntityDescriptor("Edge_Loop",s_config_control_design,F, (Creator) create_SdaiEdge_loop); - config_control_designe_date = new EntityDescriptor("Date",s_config_control_design,F, (Creator) create_SdaiDate); - config_control_designe_calendar_date = new EntityDescriptor("Calendar_Date",s_config_control_design,F, (Creator) create_SdaiCalendar_date); - config_control_designe_toroidal_surface = new EntityDescriptor("Toroidal_Surface",s_config_control_design,F, (Creator) create_SdaiToroidal_surface); - config_control_designe_promissory_usage_occurrence = new EntityDescriptor("Promissory_Usage_Occurrence",s_config_control_design,F, (Creator) create_SdaiPromissory_usage_occurrence); - config_control_designe_approval_assignment = new EntityDescriptor("Approval_Assignment",s_config_control_design,T, (Creator) create_SdaiApproval_assignment); - config_control_designe_configuration_item = new EntityDescriptor("Configuration_Item",s_config_control_design,F, (Creator) create_SdaiConfiguration_item); - config_control_designe_contract_assignment = new EntityDescriptor("Contract_Assignment",s_config_control_design,T, (Creator) create_SdaiContract_assignment); - config_control_designe_vector = new EntityDescriptor("Vector",s_config_control_design,F, (Creator) create_SdaiVector); - config_control_designe_intersection_curve = new EntityDescriptor("Intersection_Curve",s_config_control_design,F, (Creator) create_SdaiIntersection_curve); - config_control_designe_trimmed_curve = new EntityDescriptor("Trimmed_Curve",s_config_control_design,F, (Creator) create_SdaiTrimmed_curve); - config_control_designe_product_definition_context = new EntityDescriptor("Product_Definition_Context",s_config_control_design,F, (Creator) create_SdaiProduct_definition_context); - config_control_designe_item_defined_transformation = new EntityDescriptor("Item_Defined_Transformation",s_config_control_design,F, (Creator) create_SdaiItem_defined_transformation); - config_control_designe_action_method = new EntityDescriptor("Action_Method",s_config_control_design,F, (Creator) create_SdaiAction_method); - config_control_designe_product_category_relationship = new EntityDescriptor("Product_Category_Relationship",s_config_control_design,F, (Creator) create_SdaiProduct_category_relationship); - config_control_designe_plane_angle_measure_with_unit = new EntityDescriptor("Plane_Angle_Measure_With_Unit",s_config_control_design,F, (Creator) create_SdaiPlane_angle_measure_with_unit); - config_control_designe_vertex = new EntityDescriptor("Vertex",s_config_control_design,F, (Creator) create_SdaiVertex); - config_control_designe_representation_map = new EntityDescriptor("Representation_Map",s_config_control_design,F, (Creator) create_SdaiRepresentation_map); - config_control_designe_product_definition_effectivity = new EntityDescriptor("Product_Definition_Effectivity",s_config_control_design,F, (Creator) create_SdaiProduct_definition_effectivity); - config_control_designe_configuration_effectivity = new EntityDescriptor("Configuration_Effectivity",s_config_control_design,F, (Creator) create_SdaiConfiguration_effectivity); - config_control_designe_ellipse = new EntityDescriptor("Ellipse",s_config_control_design,F, (Creator) create_SdaiEllipse); - config_control_designe_context_dependent_unit = new EntityDescriptor("Context_Dependent_Unit",s_config_control_design,F, (Creator) create_SdaiContext_dependent_unit); - config_control_designe_alternate_product_relationship = new EntityDescriptor("Alternate_Product_Relationship",s_config_control_design,F, (Creator) create_SdaiAlternate_product_relationship); - config_control_designe_document_type = new EntityDescriptor("Document_Type",s_config_control_design,F, (Creator) create_SdaiDocument_type); - config_control_designe_document_reference = new EntityDescriptor("Document_Reference",s_config_control_design,T, (Creator) create_SdaiDocument_reference); - config_control_designe_mechanical_context = new EntityDescriptor("Mechanical_Context",s_config_control_design,F, (Creator) create_SdaiMechanical_context); - config_control_designe_shell_based_wireframe_model = new EntityDescriptor("Shell_Based_Wireframe_Model",s_config_control_design,F, (Creator) create_SdaiShell_based_wireframe_model); - config_control_designe_contract = new EntityDescriptor("Contract",s_config_control_design,F, (Creator) create_SdaiContract); - config_control_designe_dimensional_exponents = new EntityDescriptor("Dimensional_Exponents",s_config_control_design,F, (Creator) create_SdaiDimensional_exponents); - config_control_designe_start_request = new EntityDescriptor("Start_Request",s_config_control_design,F, (Creator) create_SdaiStart_request); - config_control_designe_cc_design_specification_reference = new EntityDescriptor("Cc_Design_Specification_Reference",s_config_control_design,F, (Creator) create_SdaiCc_design_specification_reference); - config_control_designe_supplied_part_relationship = new EntityDescriptor("Supplied_Part_Relationship",s_config_control_design,F, (Creator) create_SdaiSupplied_part_relationship); - config_control_designe_context_dependent_shape_representation = new EntityDescriptor("Context_Dependent_Shape_Representation",s_config_control_design,F, (Creator) create_SdaiContext_dependent_shape_representation); - config_control_designe_ordinal_date = new EntityDescriptor("Ordinal_Date",s_config_control_design,F, (Creator) create_SdaiOrdinal_date); - config_control_designe_face_outer_bound = new EntityDescriptor("Face_Outer_Bound",s_config_control_design,F, (Creator) create_SdaiFace_outer_bound); - config_control_designe_mass_measure_with_unit = new EntityDescriptor("Mass_Measure_With_Unit",s_config_control_design,F, (Creator) create_SdaiMass_measure_with_unit); - config_control_designe_brep_with_voids = new EntityDescriptor("Brep_With_Voids",s_config_control_design,F, (Creator) create_SdaiBrep_with_voids); - config_control_designe_week_of_year_and_day_date = new EntityDescriptor("Week_Of_Year_And_Day_Date",s_config_control_design,F, (Creator) create_SdaiWeek_of_year_and_day_date); - config_control_designe_point_on_curve = new EntityDescriptor("Point_On_Curve",s_config_control_design,F, (Creator) create_SdaiPoint_on_curve); - config_control_designe_shell_based_wireframe_shape_representation = new EntityDescriptor("Shell_Based_Wireframe_Shape_Representation",s_config_control_design,F, (Creator) create_SdaiShell_based_wireframe_shape_representation); - config_control_designe_face = new EntityDescriptor("Face",s_config_control_design,F, (Creator) create_SdaiFace); - config_control_designe_face_surface = new EntityDescriptor("Face_Surface",s_config_control_design,F, (Creator) create_SdaiFace_surface); - config_control_designe_oriented_face = new EntityDescriptor("Oriented_Face",s_config_control_design,F, (Creator) create_SdaiOriented_face); - config_control_designe_surface_of_revolution = new EntityDescriptor("Surface_Of_Revolution",s_config_control_design,F, (Creator) create_SdaiSurface_of_revolution); - config_control_designe_advanced_brep_shape_representation = new EntityDescriptor("Advanced_Brep_Shape_Representation",s_config_control_design,F, (Creator) create_SdaiAdvanced_brep_shape_representation); - config_control_designe_edge_curve = new EntityDescriptor("Edge_Curve",s_config_control_design,F, (Creator) create_SdaiEdge_curve); - config_control_designe_point_replica = new EntityDescriptor("Point_Replica",s_config_control_design,F, (Creator) create_SdaiPoint_replica); - config_control_designe_product = new EntityDescriptor("Product",s_config_control_design,F, (Creator) create_SdaiProduct); - config_control_designe_shape_aspect_relationship = new EntityDescriptor("Shape_Aspect_Relationship",s_config_control_design,F, (Creator) create_SdaiShape_aspect_relationship); - config_control_designe_rectangular_trimmed_surface = new EntityDescriptor("Rectangular_Trimmed_Surface",s_config_control_design,F, (Creator) create_SdaiRectangular_trimmed_surface); - config_control_designe_plane = new EntityDescriptor("Plane",s_config_control_design,F, (Creator) create_SdaiPlane); - config_control_designe_action_assignment = new EntityDescriptor("Action_Assignment",s_config_control_design,T, (Creator) create_SdaiAction_assignment); - config_control_designe_change = new EntityDescriptor("Change",s_config_control_design,F, (Creator) create_SdaiChange); - config_control_designe_circle = new EntityDescriptor("Circle",s_config_control_design,F, (Creator) create_SdaiCircle); - config_control_designe_line = new EntityDescriptor("Line",s_config_control_design,F, (Creator) create_SdaiLine); - config_control_designe_property_definition_representation = new EntityDescriptor("Property_Definition_Representation",s_config_control_design,F, (Creator) create_SdaiProperty_definition_representation); - config_control_designe_geometric_set = new EntityDescriptor("Geometric_Set",s_config_control_design,F, (Creator) create_SdaiGeometric_set); - config_control_designe_geometric_curve_set = new EntityDescriptor("Geometric_Curve_Set",s_config_control_design,F, (Creator) create_SdaiGeometric_curve_set); - config_control_designe_personal_address = new EntityDescriptor("Personal_Address",s_config_control_design,F, (Creator) create_SdaiPersonal_address); - config_control_designe_document_relationship = new EntityDescriptor("Document_Relationship",s_config_control_design,F, (Creator) create_SdaiDocument_relationship); - config_control_designe_pcurve = new EntityDescriptor("Pcurve",s_config_control_design,F, (Creator) create_SdaiPcurve); - config_control_designe_outer_boundary_curve = new EntityDescriptor("Outer_Boundary_Curve",s_config_control_design,F, (Creator) create_SdaiOuter_boundary_curve); - config_control_designe_shape_representation_relationship = new EntityDescriptor("Shape_Representation_Relationship",s_config_control_design,F, (Creator) create_SdaiShape_representation_relationship); - config_control_designe_assembly_component_usage_substitute = new EntityDescriptor("Assembly_Component_Usage_Substitute",s_config_control_design,F, (Creator) create_SdaiAssembly_component_usage_substitute); - config_control_designe_degenerate_pcurve = new EntityDescriptor("Degenerate_Pcurve",s_config_control_design,F, (Creator) create_SdaiDegenerate_pcurve); - config_control_designe_evaluated_degenerate_pcurve = new EntityDescriptor("Evaluated_Degenerate_Pcurve",s_config_control_design,F, (Creator) create_SdaiEvaluated_degenerate_pcurve); - config_control_designe_solid_angle_measure_with_unit = new EntityDescriptor("Solid_Angle_Measure_With_Unit",s_config_control_design,F, (Creator) create_SdaiSolid_angle_measure_with_unit); - config_control_designe_connected_edge_set = new EntityDescriptor("Connected_Edge_Set",s_config_control_design,F, (Creator) create_SdaiConnected_edge_set); - config_control_designe_action = new EntityDescriptor("Action",s_config_control_design,F, (Creator) create_SdaiAction); - config_control_designe_executed_action = new EntityDescriptor("Executed_Action",s_config_control_design,F, (Creator) create_SdaiExecuted_action); - config_control_designe_directed_action = new EntityDescriptor("Directed_Action",s_config_control_design,F, (Creator) create_SdaiDirected_action); - config_control_designe_organizational_project = new EntityDescriptor("Organizational_Project",s_config_control_design,F, (Creator) create_SdaiOrganizational_project); - config_control_designe_date_time_role = new EntityDescriptor("Date_Time_Role",s_config_control_design,F, (Creator) create_SdaiDate_time_role); - config_control_designe_curve_bounded_surface = new EntityDescriptor("Curve_Bounded_Surface",s_config_control_design,F, (Creator) create_SdaiCurve_bounded_surface); - config_control_designe_closed_shell = new EntityDescriptor("Closed_Shell",s_config_control_design,F, (Creator) create_SdaiClosed_shell); - config_control_designe_design_make_from_relationship = new EntityDescriptor("Design_Make_From_Relationship",s_config_control_design,F, (Creator) create_SdaiDesign_make_from_relationship); - config_control_designe_definitional_representation = new EntityDescriptor("Definitional_Representation",s_config_control_design,F, (Creator) create_SdaiDefinitional_representation); - config_control_designe_product_definition_shape = new EntityDescriptor("Product_Definition_Shape",s_config_control_design,F, (Creator) create_SdaiProduct_definition_shape); - config_control_designe_si_unit = new EntityDescriptor("Si_Unit",s_config_control_design,F, (Creator) create_SdaiSi_unit); - config_control_designe_bezier_surface = new EntityDescriptor("Bezier_Surface",s_config_control_design,F, (Creator) create_SdaiBezier_surface); - config_control_designe_certification_assignment = new EntityDescriptor("Certification_Assignment",s_config_control_design,T, (Creator) create_SdaiCertification_assignment); - config_control_designe_start_work = new EntityDescriptor("Start_Work",s_config_control_design,F, (Creator) create_SdaiStart_work); - config_control_designe_contract_type = new EntityDescriptor("Contract_Type",s_config_control_design,F, (Creator) create_SdaiContract_type); - config_control_designe_b_spline_curve_with_knots = new EntityDescriptor("B_Spline_Curve_With_Knots",s_config_control_design,F, (Creator) create_SdaiB_spline_curve_with_knots); - config_control_designe_cc_design_approval = new EntityDescriptor("Cc_Design_Approval",s_config_control_design,F, (Creator) create_SdaiCc_design_approval); - config_control_designe_edge_based_wireframe_shape_representation = new EntityDescriptor("Edge_Based_Wireframe_Shape_Representation",s_config_control_design,F, (Creator) create_SdaiEdge_based_wireframe_shape_representation); - config_control_designe_geometrically_bounded_wireframe_shape_representation = new EntityDescriptor("Geometrically_Bounded_Wireframe_Shape_Representation",s_config_control_design,F, (Creator) create_SdaiGeometrically_bounded_wireframe_shape_representation); - config_control_designe_product_concept = new EntityDescriptor("Product_Concept",s_config_control_design,F, (Creator) create_SdaiProduct_concept); - config_control_designe_cc_design_contract = new EntityDescriptor("Cc_Design_Contract",s_config_control_design,F, (Creator) create_SdaiCc_design_contract); - config_control_designe_seam_curve = new EntityDescriptor("Seam_Curve",s_config_control_design,F, (Creator) create_SdaiSeam_curve); - config_control_designe_axis2_placement_3d = new EntityDescriptor("Axis2_Placement_3d",s_config_control_design,F, (Creator) create_SdaiAxis2_placement_3d); - config_control_designe_rational_b_spline_surface = new EntityDescriptor("Rational_B_Spline_Surface",s_config_control_design,F, (Creator) create_SdaiRational_b_spline_surface); - config_control_designe_configuration_design = new EntityDescriptor("Configuration_Design",s_config_control_design,F, (Creator) create_SdaiConfiguration_design); - config_control_designe_design_context = new EntityDescriptor("Design_Context",s_config_control_design,F, (Creator) create_SdaiDesign_context); - config_control_designe_product_definition = new EntityDescriptor("Product_Definition",s_config_control_design,F, (Creator) create_SdaiProduct_definition); - config_control_designe_product_definition_with_associated_documents = new EntityDescriptor("Product_Definition_With_Associated_Documents",s_config_control_design,F, (Creator) create_SdaiProduct_definition_with_associated_documents); - config_control_designe_organization = new EntityDescriptor("Organization",s_config_control_design,F, (Creator) create_SdaiOrganization); - config_control_designe_cc_design_certification = new EntityDescriptor("Cc_Design_Certification",s_config_control_design,F, (Creator) create_SdaiCc_design_certification); - config_control_designe_b_spline_surface_with_knots = new EntityDescriptor("B_Spline_Surface_With_Knots",s_config_control_design,F, (Creator) create_SdaiB_spline_surface_with_knots); - config_control_designe_certification_type = new EntityDescriptor("Certification_Type",s_config_control_design,F, (Creator) create_SdaiCertification_type); - config_control_designe_oriented_path = new EntityDescriptor("Oriented_Path",s_config_control_design,F, (Creator) create_SdaiOriented_path); - config_control_designe_security_classification = new EntityDescriptor("Security_Classification",s_config_control_design,F, (Creator) create_SdaiSecurity_classification); - config_control_designe_vertex_loop = new EntityDescriptor("Vertex_Loop",s_config_control_design,F, (Creator) create_SdaiVertex_loop); - config_control_designe_approval_status = new EntityDescriptor("Approval_Status",s_config_control_design,F, (Creator) create_SdaiApproval_status); - config_control_designe_cartesian_point = new EntityDescriptor("Cartesian_Point",s_config_control_design,F, (Creator) create_SdaiCartesian_point); - config_control_designe_date_and_time_assignment = new EntityDescriptor("Date_And_Time_Assignment",s_config_control_design,T, (Creator) create_SdaiDate_and_time_assignment); - config_control_designe_parametric_representation_context = new EntityDescriptor("Parametric_Representation_Context",s_config_control_design,F, (Creator) create_SdaiParametric_representation_context); - config_control_designe_product_concept_context = new EntityDescriptor("Product_Concept_Context",s_config_control_design,F, (Creator) create_SdaiProduct_concept_context); - config_control_designe_cartesian_transformation_operator_2d = new EntityDescriptor("Cartesian_Transformation_Operator_2d",s_config_control_design,F, (Creator) create_SdaiCartesian_transformation_operator_2d); - config_control_designe_surface_patch = new EntityDescriptor("Surface_Patch",s_config_control_design,F, (Creator) create_SdaiSurface_patch); - config_control_designe_length_unit = new EntityDescriptor("Length_Unit",s_config_control_design,F, (Creator) create_SdaiLength_unit); - config_control_designe_shape_aspect = new EntityDescriptor("Shape_Aspect",s_config_control_design,F, (Creator) create_SdaiShape_aspect); - config_control_designe_volume_measure_with_unit = new EntityDescriptor("Volume_Measure_With_Unit",s_config_control_design,F, (Creator) create_SdaiVolume_measure_with_unit); - config_control_designe_advanced_face = new EntityDescriptor("Advanced_Face",s_config_control_design,F, (Creator) create_SdaiAdvanced_face); - config_control_designe_security_classification_level = new EntityDescriptor("Security_Classification_Level",s_config_control_design,F, (Creator) create_SdaiSecurity_classification_level); - config_control_designe_approval_relationship = new EntityDescriptor("Approval_Relationship",s_config_control_design,F, (Creator) create_SdaiApproval_relationship); - config_control_designe_polyline = new EntityDescriptor("Polyline",s_config_control_design,F, (Creator) create_SdaiPolyline); - config_control_designe_approval_person_organization = new EntityDescriptor("Approval_Person_Organization",s_config_control_design,F, (Creator) create_SdaiApproval_person_organization); - config_control_designe_surface_replica = new EntityDescriptor("Surface_Replica",s_config_control_design,F, (Creator) create_SdaiSurface_replica); - config_control_designe_security_classification_assignment = new EntityDescriptor("Security_Classification_Assignment",s_config_control_design,T, (Creator) create_SdaiSecurity_classification_assignment); - config_control_designe_cc_design_security_classification = new EntityDescriptor("Cc_Design_Security_Classification",s_config_control_design,F, (Creator) create_SdaiCc_design_security_classification); - config_control_designe_faceted_brep_shape_representation = new EntityDescriptor("Faceted_Brep_Shape_Representation",s_config_control_design,F, (Creator) create_SdaiFaceted_brep_shape_representation); - config_control_designe_document_usage_constraint = new EntityDescriptor("Document_Usage_Constraint",s_config_control_design,F, (Creator) create_SdaiDocument_usage_constraint); - config_control_designe_vertex_point = new EntityDescriptor("Vertex_Point",s_config_control_design,F, (Creator) create_SdaiVertex_point); - config_control_designe_cc_design_date_and_time_assignment = new EntityDescriptor("Cc_Design_Date_And_Time_Assignment",s_config_control_design,F, (Creator) create_SdaiCc_design_date_and_time_assignment); - config_control_designe_oriented_closed_shell = new EntityDescriptor("Oriented_Closed_Shell",s_config_control_design,F, (Creator) create_SdaiOriented_closed_shell); - config_control_designe_person_and_organization = new EntityDescriptor("Person_And_Organization",s_config_control_design,F, (Creator) create_SdaiPerson_and_organization); - config_control_designe_cylindrical_surface = new EntityDescriptor("Cylindrical_Surface",s_config_control_design,F, (Creator) create_SdaiCylindrical_surface); - config_control_designe_local_time = new EntityDescriptor("Local_Time",s_config_control_design,F, (Creator) create_SdaiLocal_time); - config_control_designe_mass_unit = new EntityDescriptor("Mass_Unit",s_config_control_design,F, (Creator) create_SdaiMass_unit); - config_control_designe_vertex_shell = new EntityDescriptor("Vertex_Shell",s_config_control_design,F, (Creator) create_SdaiVertex_shell); - config_control_designe_poly_loop = new EntityDescriptor("Poly_Loop",s_config_control_design,F, (Creator) create_SdaiPoly_loop); - config_control_designe_wire_shell = new EntityDescriptor("Wire_Shell",s_config_control_design,F, (Creator) create_SdaiWire_shell); - config_control_designe_area_unit = new EntityDescriptor("Area_Unit",s_config_control_design,F, (Creator) create_SdaiArea_unit); - config_control_designe_mapped_item = new EntityDescriptor("Mapped_Item",s_config_control_design,F, (Creator) create_SdaiMapped_item); - config_control_designe_offset_curve_2d = new EntityDescriptor("Offset_Curve_2d",s_config_control_design,F, (Creator) create_SdaiOffset_curve_2d); - config_control_designe_shape_definition_representation = new EntityDescriptor("Shape_Definition_Representation",s_config_control_design,F, (Creator) create_SdaiShape_definition_representation); - config_control_designe_volume_unit = new EntityDescriptor("Volume_Unit",s_config_control_design,F, (Creator) create_SdaiVolume_unit); - config_control_designe_conical_surface = new EntityDescriptor("Conical_Surface",s_config_control_design,F, (Creator) create_SdaiConical_surface); - config_control_designe_global_unit_assigned_context = new EntityDescriptor("Global_Unit_Assigned_Context",s_config_control_design,F, (Creator) create_SdaiGlobal_unit_assigned_context); - reg.AddType (*config_control_designt_characterized_definition); - config_control_designt_parameter_value->ReferentType(t_REAL_TYPE); - reg.AddType (*config_control_designt_parameter_value); - config_control_designt_plane_angle_measure->ReferentType(t_REAL_TYPE); - reg.AddType (*config_control_designt_plane_angle_measure); - reg.AddType (*config_control_designt_change_request_item); - config_control_designt_text->ReferentType(t_STRING_TYPE); - reg.AddType (*config_control_designt_text); - config_control_designt_year_number->ReferentType(t_INTEGER_TYPE); - reg.AddType (*config_control_designt_year_number); - reg.AddType (*config_control_designt_characterized_product_definition); - reg.AddType (*config_control_designt_reversible_topology_item); - reg.AddType (*config_control_designt_axis2_placement); - config_control_designt_set_of_reversible_topology_item->Bound1(0); - config_control_designt_set_of_reversible_topology_item->Bound2(2147483647); - config_control_designt_set_of_reversible_topology_item->ReferentType(config_control_designt_reversible_topology_item); - reg.AddType (*config_control_designt_set_of_reversible_topology_item); - config_control_designt_week_in_year_number->ReferentType(t_INTEGER_TYPE); - reg.AddType (*config_control_designt_week_in_year_number); - reg.AddType (*config_control_designt_knot_type); - reg.AddType (*config_control_designt_specified_item); - config_control_designt_minute_in_hour->ReferentType(t_INTEGER_TYPE); - reg.AddType (*config_control_designt_minute_in_hour); - reg.AddType (*config_control_designt_transition_code); - config_control_designt_identifier->ReferentType(t_STRING_TYPE); - reg.AddType (*config_control_designt_identifier); - reg.AddType (*config_control_designt_measure_value); - reg.AddType (*config_control_designt_person_organization_select); - reg.AddType (*config_control_designt_preferred_surface_curve_representation); - config_control_designt_dimension_count->ReferentType(t_INTEGER_TYPE); - reg.AddType (*config_control_designt_dimension_count); - reg.AddType (*config_control_designt_pcurve_or_surface); - config_control_designt_positive_length_measure->ReferentType(config_control_designt_length_measure); - reg.AddType (*config_control_designt_positive_length_measure); - reg.AddType (*config_control_designt_b_spline_curve_form); - config_control_designt_hour_in_day->ReferentType(t_INTEGER_TYPE); - reg.AddType (*config_control_designt_hour_in_day); - reg.AddType (*config_control_designt_classified_item); - reg.AddType (*config_control_designt_si_unit_name); - config_control_designt_day_in_month_number->ReferentType(t_INTEGER_TYPE); - reg.AddType (*config_control_designt_day_in_month_number); - reg.AddType (*config_control_designt_trimming_preference); - reg.AddType (*config_control_designt_vector_or_direction); - reg.AddType (*config_control_designt_wireframe_model); - config_control_designt_volume_measure->ReferentType(t_REAL_TYPE); - reg.AddType (*config_control_designt_volume_measure); - reg.AddType (*config_control_designt_geometric_set_select); - config_control_designt_positive_plane_angle_measure->ReferentType(config_control_designt_plane_angle_measure); - reg.AddType (*config_control_designt_positive_plane_angle_measure); - reg.AddType (*config_control_designt_start_request_item); - reg.AddType (*config_control_designt_b_spline_surface_form); - reg.AddType (*config_control_designt_person_organization_item); - reg.AddType (*config_control_designt_date_time_item); - reg.AddType (*config_control_designt_shell); - reg.AddType (*config_control_designt_transformation); - config_control_designt_day_in_week_number->ReferentType(t_INTEGER_TYPE); - reg.AddType (*config_control_designt_day_in_week_number); - reg.AddType (*config_control_designt_boolean_operand); - reg.AddType (*config_control_designt_certified_item); - reg.AddType (*config_control_designt_date_time_select); - config_control_designt_solid_angle_measure->ReferentType(t_REAL_TYPE); - reg.AddType (*config_control_designt_solid_angle_measure); - reg.AddType (*config_control_designt_curve_on_surface); - reg.AddType (*config_control_designt_trimming_select); - reg.AddType (*config_control_designt_ahead_or_behind); - reg.AddType (*config_control_designt_contracted_item); - config_control_designt_day_in_year_number->ReferentType(t_INTEGER_TYPE); - reg.AddType (*config_control_designt_day_in_year_number); - config_control_designt_mass_measure->ReferentType(t_REAL_TYPE); - reg.AddType (*config_control_designt_mass_measure); - config_control_designt_descriptive_measure->ReferentType(t_STRING_TYPE); - reg.AddType (*config_control_designt_descriptive_measure); - config_control_designt_area_measure->ReferentType(t_REAL_TYPE); - reg.AddType (*config_control_designt_area_measure); - config_control_designt_month_in_year_number->ReferentType(t_INTEGER_TYPE); - reg.AddType (*config_control_designt_month_in_year_number); - reg.AddType (*config_control_designt_source); - reg.AddType (*config_control_designt_unit); - reg.AddType (*config_control_designt_reversible_topology); - reg.AddType (*config_control_designt_work_item); - reg.AddType (*config_control_designt_shape_definition); - config_control_designt_second_in_minute->ReferentType(t_REAL_TYPE); - reg.AddType (*config_control_designt_second_in_minute); - config_control_designt_label->ReferentType(t_STRING_TYPE); - reg.AddType (*config_control_designt_label); - config_control_designt_context_dependent_measure->ReferentType(t_REAL_TYPE); - reg.AddType (*config_control_designt_context_dependent_measure); - reg.AddType (*config_control_designt_supported_item); - reg.AddType (*config_control_designt_si_prefix); - config_control_designt_length_measure->ReferentType(t_REAL_TYPE); - reg.AddType (*config_control_designt_length_measure); - reg.AddType (*config_control_designt_approved_item); - config_control_designt_count_measure->ReferentType(t_NUMBER_TYPE); - reg.AddType (*config_control_designt_count_measure); - reg.AddType (*config_control_designt_surface_model); - config_control_designt_list_of_reversible_topology_item->Bound1(0); - config_control_designt_list_of_reversible_topology_item->Bound2(2147483647); - config_control_designt_list_of_reversible_topology_item->ReferentType(config_control_designt_reversible_topology_item); - reg.AddType (*config_control_designt_list_of_reversible_topology_item); - -// ***** Add the TypeDescriptor's to the SELECT Types - config_control_designt_characterized_product_definition -> Elements ().AddNode (config_control_designe_product_definition); - config_control_designt_characterized_product_definition -> Elements ().AddNode (config_control_designe_product_definition_relationship); - config_control_designt_shape_definition -> Elements ().AddNode (config_control_designe_product_definition_shape); - config_control_designt_shape_definition -> Elements ().AddNode (config_control_designe_shape_aspect); - config_control_designt_shape_definition -> Elements ().AddNode (config_control_designe_shape_aspect_relationship); config_control_designt_characterized_definition -> Elements ().AddNode (config_control_designt_characterized_product_definition); config_control_designt_characterized_definition -> Elements ().AddNode (config_control_designt_shape_definition); + reg.AddType (*config_control_designt_characterized_definition); + config_control_designt_parameter_value->ReferentType(t_sdaiREAL); + reg.AddType (*config_control_designt_parameter_value); + config_control_designt_plane_angle_measure->ReferentType(t_sdaiREAL); + reg.AddType (*config_control_designt_plane_angle_measure); config_control_designt_change_request_item -> Elements ().AddNode (config_control_designe_product_definition_formation); + reg.AddType (*config_control_designt_change_request_item); + config_control_designt_text->ReferentType(t_sdaiSTRING); + reg.AddType (*config_control_designt_text); + config_control_designt_year_number->ReferentType(t_sdaiINTEGER); + reg.AddType (*config_control_designt_year_number); + config_control_designt_characterized_product_definition -> Elements ().AddNode (config_control_designe_product_definition); + config_control_designt_characterized_product_definition -> Elements ().AddNode (config_control_designe_product_definition_relationship); + reg.AddType (*config_control_designt_characterized_product_definition); config_control_designt_reversible_topology_item -> Elements ().AddNode (config_control_designe_edge); config_control_designt_reversible_topology_item -> Elements ().AddNode (config_control_designe_path); config_control_designt_reversible_topology_item -> Elements ().AddNode (config_control_designe_face); config_control_designt_reversible_topology_item -> Elements ().AddNode (config_control_designe_face_bound); config_control_designt_reversible_topology_item -> Elements ().AddNode (config_control_designe_closed_shell); config_control_designt_reversible_topology_item -> Elements ().AddNode (config_control_designe_open_shell); + reg.AddType (*config_control_designt_reversible_topology_item); config_control_designt_axis2_placement -> Elements ().AddNode (config_control_designe_axis2_placement_2d); config_control_designt_axis2_placement -> Elements ().AddNode (config_control_designe_axis2_placement_3d); + reg.AddType (*config_control_designt_axis2_placement); + config_control_designt_set_of_reversible_topology_item->Bound1(0); + config_control_designt_set_of_reversible_topology_item->Bound2(2147483647); + config_control_designt_set_of_reversible_topology_item->ReferentType(config_control_designt_reversible_topology_item); + reg.AddType (*config_control_designt_set_of_reversible_topology_item); + config_control_designt_week_in_year_number->ReferentType(t_sdaiINTEGER); + reg.AddType (*config_control_designt_week_in_year_number); + reg.AddType (*config_control_designt_knot_type); config_control_designt_specified_item -> Elements ().AddNode (config_control_designe_product_definition); config_control_designt_specified_item -> Elements ().AddNode (config_control_designe_shape_aspect); + reg.AddType (*config_control_designt_specified_item); + config_control_designt_minute_in_hour->ReferentType(t_sdaiINTEGER); + reg.AddType (*config_control_designt_minute_in_hour); + reg.AddType (*config_control_designt_transition_code); + config_control_designt_identifier->ReferentType(t_sdaiSTRING); + reg.AddType (*config_control_designt_identifier); config_control_designt_measure_value -> Elements ().AddNode (config_control_designt_area_measure); config_control_designt_measure_value -> Elements ().AddNode (config_control_designt_context_dependent_measure); config_control_designt_measure_value -> Elements ().AddNode (config_control_designt_count_measure); @@ -760,19 +64,44 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) config_control_designt_measure_value -> Elements ().AddNode (config_control_designt_positive_plane_angle_measure); config_control_designt_measure_value -> Elements ().AddNode (config_control_designt_solid_angle_measure); config_control_designt_measure_value -> Elements ().AddNode (config_control_designt_volume_measure); + reg.AddType (*config_control_designt_measure_value); config_control_designt_person_organization_select -> Elements ().AddNode (config_control_designe_person_and_organization); + reg.AddType (*config_control_designt_person_organization_select); + reg.AddType (*config_control_designt_preferred_surface_curve_representation); + config_control_designt_dimension_count->ReferentType(t_sdaiINTEGER); + reg.AddType (*config_control_designt_dimension_count); config_control_designt_pcurve_or_surface -> Elements ().AddNode (config_control_designe_pcurve); config_control_designt_pcurve_or_surface -> Elements ().AddNode (config_control_designe_surface); + reg.AddType (*config_control_designt_pcurve_or_surface); + config_control_designt_positive_length_measure->ReferentType(config_control_designt_length_measure); + reg.AddType (*config_control_designt_positive_length_measure); + reg.AddType (*config_control_designt_b_spline_curve_form); + config_control_designt_hour_in_day->ReferentType(t_sdaiINTEGER); + reg.AddType (*config_control_designt_hour_in_day); config_control_designt_classified_item -> Elements ().AddNode (config_control_designe_product_definition_formation); config_control_designt_classified_item -> Elements ().AddNode (config_control_designe_assembly_component_usage); + reg.AddType (*config_control_designt_classified_item); + reg.AddType (*config_control_designt_si_unit_name); + config_control_designt_day_in_month_number->ReferentType(t_sdaiINTEGER); + reg.AddType (*config_control_designt_day_in_month_number); + reg.AddType (*config_control_designt_trimming_preference); config_control_designt_vector_or_direction -> Elements ().AddNode (config_control_designe_vector); config_control_designt_vector_or_direction -> Elements ().AddNode (config_control_designe_direction); + reg.AddType (*config_control_designt_vector_or_direction); config_control_designt_wireframe_model -> Elements ().AddNode (config_control_designe_shell_based_wireframe_model); config_control_designt_wireframe_model -> Elements ().AddNode (config_control_designe_edge_based_wireframe_model); + reg.AddType (*config_control_designt_wireframe_model); + config_control_designt_volume_measure->ReferentType(t_sdaiREAL); + reg.AddType (*config_control_designt_volume_measure); config_control_designt_geometric_set_select -> Elements ().AddNode (config_control_designe_point); config_control_designt_geometric_set_select -> Elements ().AddNode (config_control_designe_curve); config_control_designt_geometric_set_select -> Elements ().AddNode (config_control_designe_surface); + reg.AddType (*config_control_designt_geometric_set_select); + config_control_designt_positive_plane_angle_measure->ReferentType(config_control_designt_plane_angle_measure); + reg.AddType (*config_control_designt_positive_plane_angle_measure); config_control_designt_start_request_item -> Elements ().AddNode (config_control_designe_product_definition_formation); + reg.AddType (*config_control_designt_start_request_item); + reg.AddType (*config_control_designt_b_spline_surface_form); config_control_designt_person_organization_item -> Elements ().AddNode (config_control_designe_change); config_control_designt_person_organization_item -> Elements ().AddNode (config_control_designe_start_work); config_control_designt_person_organization_item -> Elements ().AddNode (config_control_designe_change_request); @@ -783,6 +112,7 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) config_control_designt_person_organization_item -> Elements ().AddNode (config_control_designe_product_definition); config_control_designt_person_organization_item -> Elements ().AddNode (config_control_designe_contract); config_control_designt_person_organization_item -> Elements ().AddNode (config_control_designe_security_classification); + reg.AddType (*config_control_designt_person_organization_item); config_control_designt_date_time_item -> Elements ().AddNode (config_control_designe_product_definition); config_control_designt_date_time_item -> Elements ().AddNode (config_control_designe_change_request); config_control_designt_date_time_item -> Elements ().AddNode (config_control_designe_start_request); @@ -792,29 +122,71 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) config_control_designt_date_time_item -> Elements ().AddNode (config_control_designe_contract); config_control_designt_date_time_item -> Elements ().AddNode (config_control_designe_security_classification); config_control_designt_date_time_item -> Elements ().AddNode (config_control_designe_certification); + reg.AddType (*config_control_designt_date_time_item); config_control_designt_shell -> Elements ().AddNode (config_control_designe_open_shell); config_control_designt_shell -> Elements ().AddNode (config_control_designe_closed_shell); config_control_designt_shell -> Elements ().AddNode (config_control_designe_vertex_shell); config_control_designt_shell -> Elements ().AddNode (config_control_designe_wire_shell); + reg.AddType (*config_control_designt_shell); config_control_designt_transformation -> Elements ().AddNode (config_control_designe_item_defined_transformation); config_control_designt_transformation -> Elements ().AddNode (config_control_designe_functionally_defined_transformation); + reg.AddType (*config_control_designt_transformation); + config_control_designt_day_in_week_number->ReferentType(t_sdaiINTEGER); + reg.AddType (*config_control_designt_day_in_week_number); config_control_designt_boolean_operand -> Elements ().AddNode (config_control_designe_solid_model); + reg.AddType (*config_control_designt_boolean_operand); config_control_designt_certified_item -> Elements ().AddNode (config_control_designe_supplied_part_relationship); + reg.AddType (*config_control_designt_certified_item); config_control_designt_date_time_select -> Elements ().AddNode (config_control_designe_date_and_time); + reg.AddType (*config_control_designt_date_time_select); + config_control_designt_solid_angle_measure->ReferentType(t_sdaiREAL); + reg.AddType (*config_control_designt_solid_angle_measure); config_control_designt_curve_on_surface -> Elements ().AddNode (config_control_designe_pcurve); config_control_designt_curve_on_surface -> Elements ().AddNode (config_control_designe_surface_curve); config_control_designt_curve_on_surface -> Elements ().AddNode (config_control_designe_composite_curve_on_surface); + reg.AddType (*config_control_designt_curve_on_surface); config_control_designt_trimming_select -> Elements ().AddNode (config_control_designe_cartesian_point); config_control_designt_trimming_select -> Elements ().AddNode (config_control_designt_parameter_value); + reg.AddType (*config_control_designt_trimming_select); + reg.AddType (*config_control_designt_ahead_or_behind); config_control_designt_contracted_item -> Elements ().AddNode (config_control_designe_product_definition_formation); + reg.AddType (*config_control_designt_contracted_item); + config_control_designt_day_in_year_number->ReferentType(t_sdaiINTEGER); + reg.AddType (*config_control_designt_day_in_year_number); + config_control_designt_mass_measure->ReferentType(t_sdaiREAL); + reg.AddType (*config_control_designt_mass_measure); + config_control_designt_descriptive_measure->ReferentType(t_sdaiSTRING); + reg.AddType (*config_control_designt_descriptive_measure); + config_control_designt_area_measure->ReferentType(t_sdaiREAL); + reg.AddType (*config_control_designt_area_measure); + config_control_designt_month_in_year_number->ReferentType(t_sdaiINTEGER); + reg.AddType (*config_control_designt_month_in_year_number); + reg.AddType (*config_control_designt_source); config_control_designt_unit -> Elements ().AddNode (config_control_designe_named_unit); + reg.AddType (*config_control_designt_unit); config_control_designt_reversible_topology -> Elements ().AddNode (config_control_designt_reversible_topology_item); config_control_designt_reversible_topology -> Elements ().AddNode (config_control_designt_list_of_reversible_topology_item); config_control_designt_reversible_topology -> Elements ().AddNode (config_control_designt_set_of_reversible_topology_item); + reg.AddType (*config_control_designt_reversible_topology); config_control_designt_work_item -> Elements ().AddNode (config_control_designe_product_definition_formation); + reg.AddType (*config_control_designt_work_item); + config_control_designt_shape_definition -> Elements ().AddNode (config_control_designe_product_definition_shape); + config_control_designt_shape_definition -> Elements ().AddNode (config_control_designe_shape_aspect); + config_control_designt_shape_definition -> Elements ().AddNode (config_control_designe_shape_aspect_relationship); + reg.AddType (*config_control_designt_shape_definition); + config_control_designt_second_in_minute->ReferentType(t_sdaiREAL); + reg.AddType (*config_control_designt_second_in_minute); + config_control_designt_label->ReferentType(t_sdaiSTRING); + reg.AddType (*config_control_designt_label); + config_control_designt_context_dependent_measure->ReferentType(t_sdaiREAL); + reg.AddType (*config_control_designt_context_dependent_measure); config_control_designt_supported_item -> Elements ().AddNode (config_control_designe_action_directive); config_control_designt_supported_item -> Elements ().AddNode (config_control_designe_action); config_control_designt_supported_item -> Elements ().AddNode (config_control_designe_action_method); + reg.AddType (*config_control_designt_supported_item); + reg.AddType (*config_control_designt_si_prefix); + config_control_designt_length_measure->ReferentType(t_sdaiREAL); + reg.AddType (*config_control_designt_length_measure); config_control_designt_approved_item -> Elements ().AddNode (config_control_designe_product_definition_formation); config_control_designt_approved_item -> Elements ().AddNode (config_control_designe_product_definition); config_control_designt_approved_item -> Elements ().AddNode (config_control_designe_configuration_effectivity); @@ -826,318 +198,483 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) config_control_designt_approved_item -> Elements ().AddNode (config_control_designe_start_work); config_control_designt_approved_item -> Elements ().AddNode (config_control_designe_certification); config_control_designt_approved_item -> Elements ().AddNode (config_control_designe_contract); + reg.AddType (*config_control_designt_approved_item); + config_control_designt_count_measure->ReferentType(t_sdaiNUMBER); + reg.AddType (*config_control_designt_count_measure); config_control_designt_surface_model -> Elements ().AddNode (config_control_designe_shell_based_surface_model); + reg.AddType (*config_control_designt_surface_model); + config_control_designt_list_of_reversible_topology_item->Bound1(0); + config_control_designt_list_of_reversible_topology_item->Bound2(2147483647); + config_control_designt_list_of_reversible_topology_item->ReferentType(config_control_designt_reversible_topology_item); + reg.AddType (*config_control_designt_list_of_reversible_topology_item); -///////// ENTITY representation_item +///////// ENTITY representation_item - reg.AddEntity (*config_control_designe_representation_item); - a_0name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_representation_item); + a_0name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_representation_item); config_control_designe_representation_item->AddExplicitAttr (a_0name); -///////// END_ENTITY representation_item + reg.AddEntity (*config_control_designe_representation_item); +///////// END_ENTITY representation_item -///////// ENTITY geometric_representation_item +///////// ENTITY geometric_representation_item - reg.AddEntity (*config_control_designe_geometric_representation_item); + config_control_designe_geometric_representation_item->AddSupertype_Stmt("SUPERTYPE OF (ONEOF (point,direction,vector,placement,cartesian_transformation_operator,\n curve,surface,edge_curve,face_surface,vertex_point,poly_loop,\n solid_model,shell_based_surface_model,shell_based_wireframe_model,\n edge_based_wireframe_model,geometric_set))"); config_control_designe_geometric_representation_item->AddSupertype(config_control_designe_representation_item); config_control_designe_representation_item->AddSubtype(config_control_designe_geometric_representation_item); - a_1Ddim = new AttrDescriptor("dim",config_control_designt_dimension_count,F,F,T,*config_control_designe_geometric_representation_item); + a_1Ddim = + new Derived_attribute("dim",config_control_designt_dimension_count, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_geometric_representation_item); config_control_designe_geometric_representation_item->AddExplicitAttr (a_1Ddim); -///////// END_ENTITY geometric_representation_item + a_1Ddim->initializer_("dimension_of(SELF)"); + reg.AddEntity (*config_control_designe_geometric_representation_item); +///////// END_ENTITY geometric_representation_item -///////// ENTITY functionally_defined_transformation +///////// ENTITY functionally_defined_transformation - reg.AddEntity (*config_control_designe_functionally_defined_transformation); - a_2name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_functionally_defined_transformation); + a_2name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_functionally_defined_transformation); config_control_designe_functionally_defined_transformation->AddExplicitAttr (a_2name); - a_3description = new AttrDescriptor("description",config_control_designt_text,F,F,F,*config_control_designe_functionally_defined_transformation); + a_3description = + new AttrDescriptor("description",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_functionally_defined_transformation); config_control_designe_functionally_defined_transformation->AddExplicitAttr (a_3description); -///////// END_ENTITY functionally_defined_transformation + reg.AddEntity (*config_control_designe_functionally_defined_transformation); +///////// END_ENTITY functionally_defined_transformation -///////// ENTITY cartesian_transformation_operator +///////// ENTITY cartesian_transformation_operator - reg.AddEntity (*config_control_designe_cartesian_transformation_operator); + config_control_designe_cartesian_transformation_operator->AddSupertype_Stmt("SUPERTYPE OF (ONEOF (cartesian_transformation_operator_2d,\n cartesian_transformation_operator_3d))"); config_control_designe_cartesian_transformation_operator->AddSupertype(config_control_designe_geometric_representation_item); config_control_designe_geometric_representation_item->AddSubtype(config_control_designe_cartesian_transformation_operator); config_control_designe_cartesian_transformation_operator->AddSupertype(config_control_designe_functionally_defined_transformation); config_control_designe_functionally_defined_transformation->AddSubtype(config_control_designe_cartesian_transformation_operator); - a_4axis1 = new AttrDescriptor("axis1",config_control_designe_direction,T,F,F,*config_control_designe_cartesian_transformation_operator); + a_4axis1 = + new AttrDescriptor("axis1",config_control_designe_direction, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_cartesian_transformation_operator); config_control_designe_cartesian_transformation_operator->AddExplicitAttr (a_4axis1); - a_5axis2 = new AttrDescriptor("axis2",config_control_designe_direction,T,F,F,*config_control_designe_cartesian_transformation_operator); + a_5axis2 = + new AttrDescriptor("axis2",config_control_designe_direction, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_cartesian_transformation_operator); config_control_designe_cartesian_transformation_operator->AddExplicitAttr (a_5axis2); - a_6local_origin = new AttrDescriptor("local_origin",config_control_designe_cartesian_point,F,F,F,*config_control_designe_cartesian_transformation_operator); + a_6local_origin = + new AttrDescriptor("local_origin",config_control_designe_cartesian_point, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_cartesian_transformation_operator); config_control_designe_cartesian_transformation_operator->AddExplicitAttr (a_6local_origin); - a_7scale = new AttrDescriptor("scale",t_REAL_TYPE,T,F,F,*config_control_designe_cartesian_transformation_operator); + a_7scale = + new AttrDescriptor("scale",t_sdaiREAL, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_cartesian_transformation_operator); config_control_designe_cartesian_transformation_operator->AddExplicitAttr (a_7scale); - a_8Dscl = new AttrDescriptor("scl",t_REAL_TYPE,F,F,T,*config_control_designe_cartesian_transformation_operator); + a_8Dscl = + new Derived_attribute("scl",t_sdaiREAL, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_cartesian_transformation_operator); config_control_designe_cartesian_transformation_operator->AddExplicitAttr (a_8Dscl); -///////// END_ENTITY cartesian_transformation_operator + a_8Dscl->initializer_("NVL(scale,1)"); + reg.AddEntity (*config_control_designe_cartesian_transformation_operator); +///////// END_ENTITY cartesian_transformation_operator -///////// ENTITY cartesian_transformation_operator_3d +///////// ENTITY cartesian_transformation_operator_3d - reg.AddEntity (*config_control_designe_cartesian_transformation_operator_3d); config_control_designe_cartesian_transformation_operator_3d->AddSupertype(config_control_designe_cartesian_transformation_operator); config_control_designe_cartesian_transformation_operator->AddSubtype(config_control_designe_cartesian_transformation_operator_3d); - a_9axis3 = new AttrDescriptor("axis3",config_control_designe_direction,T,F,F,*config_control_designe_cartesian_transformation_operator_3d); + a_9axis3 = + new AttrDescriptor("axis3",config_control_designe_direction, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_cartesian_transformation_operator_3d); config_control_designe_cartesian_transformation_operator_3d->AddExplicitAttr (a_9axis3); ListTypeDescriptor * t_0 = new ListTypeDescriptor; t_0->AssignAggrCreator((AggregateCreator) create_EntityAggregate); // Creator function t_0->Bound1(3); t_0->Bound2(3); t_0->FundamentalType(LIST_TYPE); - t_0->Description("LIST [3:3] of Direction"); + t_0->Description("LIST [3:3] OF direction"); + t_0->OriginatingSchema(s_config_control_design); t_0->ReferentType(config_control_designe_direction); - a_10Du = new AttrDescriptor("u",t_0,F,F,T,*config_control_designe_cartesian_transformation_operator_3d); + a_10Du = + new Derived_attribute("u",t_0,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_cartesian_transformation_operator_3d); config_control_designe_cartesian_transformation_operator_3d->AddExplicitAttr (a_10Du); -///////// END_ENTITY cartesian_transformation_operator_3d + a_10Du->initializer_("base_axis(3,SELF\\cartesian_transformation_operator.axis1,SELF\\\n cartesian_transformation_operator.axis2,axis3)"); + reg.AddEntity (*config_control_designe_cartesian_transformation_operator_3d); +///////// END_ENTITY cartesian_transformation_operator_3d -///////// ENTITY versioned_action_request +///////// ENTITY versioned_action_request - reg.AddEntity (*config_control_designe_versioned_action_request); - a_11id = new AttrDescriptor("id",config_control_designt_identifier,F,F,F,*config_control_designe_versioned_action_request); + a_11id = + new AttrDescriptor("id",config_control_designt_identifier, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_versioned_action_request); config_control_designe_versioned_action_request->AddExplicitAttr (a_11id); - a_12version = new AttrDescriptor("version",config_control_designt_label,F,F,F,*config_control_designe_versioned_action_request); + a_12version = + new AttrDescriptor("version",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_versioned_action_request); config_control_designe_versioned_action_request->AddExplicitAttr (a_12version); - a_13purpose = new AttrDescriptor("purpose",config_control_designt_text,F,F,F,*config_control_designe_versioned_action_request); + a_13purpose = + new AttrDescriptor("purpose",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_versioned_action_request); config_control_designe_versioned_action_request->AddExplicitAttr (a_13purpose); - a_14description = new AttrDescriptor("description",config_control_designt_text,F,F,F,*config_control_designe_versioned_action_request); + a_14description = + new AttrDescriptor("description",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_versioned_action_request); config_control_designe_versioned_action_request->AddExplicitAttr (a_14description); -///////// END_ENTITY versioned_action_request + reg.AddEntity (*config_control_designe_versioned_action_request); +///////// END_ENTITY versioned_action_request -///////// ENTITY representation +///////// ENTITY representation - reg.AddEntity (*config_control_designe_representation); - a_15name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_representation); + a_15name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_representation); config_control_designe_representation->AddExplicitAttr (a_15name); SetTypeDescriptor * t_1 = new SetTypeDescriptor; t_1->AssignAggrCreator((AggregateCreator) create_EntityAggregate); // Creator function t_1->Bound1(1); t_1->Bound2(2147483647); t_1->FundamentalType(SET_TYPE); - t_1->Description("SET [1:?] OF Representation_Item"); + t_1->Description("SET [1:?] OF representation_item"); + t_1->OriginatingSchema(s_config_control_design); t_1->ReferentType(config_control_designe_representation_item); - a_16items = new AttrDescriptor("items",t_1,F,F,F,*config_control_designe_representation); + a_16items = + new AttrDescriptor("items",t_1,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_representation); config_control_designe_representation->AddExplicitAttr (a_16items); - a_17context_of_items = new AttrDescriptor("context_of_items",config_control_designe_representation_context,F,F,F,*config_control_designe_representation); + a_17context_of_items = + new AttrDescriptor("context_of_items",config_control_designe_representation_context, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_representation); config_control_designe_representation->AddExplicitAttr (a_17context_of_items); -///////// END_ENTITY representation + reg.AddEntity (*config_control_designe_representation); +///////// END_ENTITY representation -///////// ENTITY shape_representation +///////// ENTITY shape_representation - reg.AddEntity (*config_control_designe_shape_representation); config_control_designe_shape_representation->AddSupertype(config_control_designe_representation); config_control_designe_representation->AddSubtype(config_control_designe_shape_representation); -///////// END_ENTITY shape_representation + reg.AddEntity (*config_control_designe_shape_representation); +///////// END_ENTITY shape_representation -///////// ENTITY manifold_surface_shape_representation +///////// ENTITY manifold_surface_shape_representation - reg.AddEntity (*config_control_designe_manifold_surface_shape_representation); config_control_designe_manifold_surface_shape_representation->AddSupertype(config_control_designe_shape_representation); config_control_designe_shape_representation->AddSubtype(config_control_designe_manifold_surface_shape_representation); -///////// END_ENTITY manifold_surface_shape_representation + reg.AddEntity (*config_control_designe_manifold_surface_shape_representation); +///////// END_ENTITY manifold_surface_shape_representation -///////// ENTITY certification +///////// ENTITY certification - reg.AddEntity (*config_control_designe_certification); - a_18name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_certification); + a_18name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_certification); config_control_designe_certification->AddExplicitAttr (a_18name); - a_19purpose = new AttrDescriptor("purpose",config_control_designt_text,F,F,F,*config_control_designe_certification); + a_19purpose = + new AttrDescriptor("purpose",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_certification); config_control_designe_certification->AddExplicitAttr (a_19purpose); - a_20kind = new AttrDescriptor("kind",config_control_designe_certification_type,F,F,F,*config_control_designe_certification); + a_20kind = + new AttrDescriptor("kind",config_control_designe_certification_type, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_certification); config_control_designe_certification->AddExplicitAttr (a_20kind); -///////// END_ENTITY certification + reg.AddEntity (*config_control_designe_certification); +///////// END_ENTITY certification -///////// ENTITY product_definition_relationship +///////// ENTITY product_definition_relationship - reg.AddEntity (*config_control_designe_product_definition_relationship); - a_21id = new AttrDescriptor("id",config_control_designt_identifier,F,F,F,*config_control_designe_product_definition_relationship); + a_21id = + new AttrDescriptor("id",config_control_designt_identifier, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_product_definition_relationship); config_control_designe_product_definition_relationship->AddExplicitAttr (a_21id); - a_22name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_product_definition_relationship); + a_22name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_product_definition_relationship); config_control_designe_product_definition_relationship->AddExplicitAttr (a_22name); - a_23description = new AttrDescriptor("description",config_control_designt_text,F,F,F,*config_control_designe_product_definition_relationship); + a_23description = + new AttrDescriptor("description",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_product_definition_relationship); config_control_designe_product_definition_relationship->AddExplicitAttr (a_23description); - a_24relating_product_definition = new AttrDescriptor("relating_product_definition",config_control_designe_product_definition,F,F,F,*config_control_designe_product_definition_relationship); + a_24relating_product_definition = + new AttrDescriptor("relating_product_definition",config_control_designe_product_definition, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_product_definition_relationship); config_control_designe_product_definition_relationship->AddExplicitAttr (a_24relating_product_definition); - a_25related_product_definition = new AttrDescriptor("related_product_definition",config_control_designe_product_definition,F,F,F,*config_control_designe_product_definition_relationship); + a_25related_product_definition = + new AttrDescriptor("related_product_definition",config_control_designe_product_definition, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_product_definition_relationship); config_control_designe_product_definition_relationship->AddExplicitAttr (a_25related_product_definition); -///////// END_ENTITY product_definition_relationship + reg.AddEntity (*config_control_designe_product_definition_relationship); +///////// END_ENTITY product_definition_relationship -///////// ENTITY product_definition_usage +///////// ENTITY product_definition_usage - reg.AddEntity (*config_control_designe_product_definition_usage); + config_control_designe_product_definition_usage->AddSupertype_Stmt("SUPERTYPE OF (assembly_component_usage)"); config_control_designe_product_definition_usage->AddSupertype(config_control_designe_product_definition_relationship); config_control_designe_product_definition_relationship->AddSubtype(config_control_designe_product_definition_usage); -///////// END_ENTITY product_definition_usage + reg.AddEntity (*config_control_designe_product_definition_usage); +///////// END_ENTITY product_definition_usage -///////// ENTITY assembly_component_usage +///////// ENTITY assembly_component_usage - reg.AddEntity (*config_control_designe_assembly_component_usage); + config_control_designe_assembly_component_usage->AddSupertype_Stmt("SUPERTYPE OF (ONEOF (next_assembly_usage_occurrence,specified_higher_usage_occurrence,\n promissory_usage_occurrence))"); config_control_designe_assembly_component_usage->AddSupertype(config_control_designe_product_definition_usage); config_control_designe_product_definition_usage->AddSubtype(config_control_designe_assembly_component_usage); - a_26reference_designator = new AttrDescriptor("reference_designator",config_control_designt_identifier,T,F,F,*config_control_designe_assembly_component_usage); + a_26reference_designator = + new AttrDescriptor("reference_designator",config_control_designt_identifier, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_assembly_component_usage); config_control_designe_assembly_component_usage->AddExplicitAttr (a_26reference_designator); -///////// END_ENTITY assembly_component_usage + reg.AddEntity (*config_control_designe_assembly_component_usage); +///////// END_ENTITY assembly_component_usage -///////// ENTITY quantified_assembly_component_usage +///////// ENTITY quantified_assembly_component_usage - reg.AddEntity (*config_control_designe_quantified_assembly_component_usage); config_control_designe_quantified_assembly_component_usage->AddSupertype(config_control_designe_assembly_component_usage); config_control_designe_assembly_component_usage->AddSubtype(config_control_designe_quantified_assembly_component_usage); - a_27quantity = new AttrDescriptor("quantity",config_control_designe_measure_with_unit,F,F,F,*config_control_designe_quantified_assembly_component_usage); + a_27quantity = + new AttrDescriptor("quantity",config_control_designe_measure_with_unit, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_quantified_assembly_component_usage); config_control_designe_quantified_assembly_component_usage->AddExplicitAttr (a_27quantity); -///////// END_ENTITY quantified_assembly_component_usage + reg.AddEntity (*config_control_designe_quantified_assembly_component_usage); +///////// END_ENTITY quantified_assembly_component_usage -///////// ENTITY solid_model +///////// ENTITY solid_model - reg.AddEntity (*config_control_designe_solid_model); + config_control_designe_solid_model->AddSupertype_Stmt("SUPERTYPE OF (manifold_solid_brep)"); config_control_designe_solid_model->AddSupertype(config_control_designe_geometric_representation_item); config_control_designe_geometric_representation_item->AddSubtype(config_control_designe_solid_model); -///////// END_ENTITY solid_model + reg.AddEntity (*config_control_designe_solid_model); +///////// END_ENTITY solid_model -///////// ENTITY manifold_solid_brep +///////// ENTITY manifold_solid_brep - reg.AddEntity (*config_control_designe_manifold_solid_brep); config_control_designe_manifold_solid_brep->AddSupertype(config_control_designe_solid_model); config_control_designe_solid_model->AddSubtype(config_control_designe_manifold_solid_brep); - a_28outer = new AttrDescriptor("outer",config_control_designe_closed_shell,F,F,F,*config_control_designe_manifold_solid_brep); + a_28outer = + new AttrDescriptor("outer",config_control_designe_closed_shell, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_manifold_solid_brep); config_control_designe_manifold_solid_brep->AddExplicitAttr (a_28outer); -///////// END_ENTITY manifold_solid_brep + reg.AddEntity (*config_control_designe_manifold_solid_brep); +///////// END_ENTITY manifold_solid_brep -///////// ENTITY faceted_brep +///////// ENTITY faceted_brep - reg.AddEntity (*config_control_designe_faceted_brep); config_control_designe_faceted_brep->AddSupertype(config_control_designe_manifold_solid_brep); config_control_designe_manifold_solid_brep->AddSubtype(config_control_designe_faceted_brep); -///////// END_ENTITY faceted_brep + reg.AddEntity (*config_control_designe_faceted_brep); +///////// END_ENTITY faceted_brep -///////// ENTITY action_directive +///////// ENTITY action_directive - reg.AddEntity (*config_control_designe_action_directive); - a_29name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_action_directive); + a_29name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_action_directive); config_control_designe_action_directive->AddExplicitAttr (a_29name); - a_30description = new AttrDescriptor("description",config_control_designt_text,F,F,F,*config_control_designe_action_directive); + a_30description = + new AttrDescriptor("description",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_action_directive); config_control_designe_action_directive->AddExplicitAttr (a_30description); - a_31analysis = new AttrDescriptor("analysis",config_control_designt_text,F,F,F,*config_control_designe_action_directive); + a_31analysis = + new AttrDescriptor("analysis",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_action_directive); config_control_designe_action_directive->AddExplicitAttr (a_31analysis); - a_32comment = new AttrDescriptor("comment",config_control_designt_text,F,F,F,*config_control_designe_action_directive); + a_32comment = + new AttrDescriptor("comment",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_action_directive); config_control_designe_action_directive->AddExplicitAttr (a_32comment); SetTypeDescriptor * t_2 = new SetTypeDescriptor; t_2->AssignAggrCreator((AggregateCreator) create_EntityAggregate); // Creator function t_2->Bound1(1); t_2->Bound2(2147483647); t_2->FundamentalType(SET_TYPE); - t_2->Description("SET [1:?] OF Versioned_Action_Request"); + t_2->Description("SET [1:?] OF versioned_action_request"); + t_2->OriginatingSchema(s_config_control_design); t_2->ReferentType(config_control_designe_versioned_action_request); - a_33requests = new AttrDescriptor("requests",t_2,F,F,F,*config_control_designe_action_directive); + a_33requests = + new AttrDescriptor("requests",t_2,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_action_directive); config_control_designe_action_directive->AddExplicitAttr (a_33requests); -///////// END_ENTITY action_directive + reg.AddEntity (*config_control_designe_action_directive); +///////// END_ENTITY action_directive -///////// ENTITY named_unit +///////// ENTITY named_unit - reg.AddEntity (*config_control_designe_named_unit); - a_34dimensions = new AttrDescriptor("dimensions",config_control_designe_dimensional_exponents,F,F,F,*config_control_designe_named_unit); + config_control_designe_named_unit->AddSupertype_Stmt("SUPERTYPE OF (ONEOF (si_unit,conversion_based_unit,context_dependent_unit) ANDOR ONEOF (\n length_unit,mass_unit,plane_angle_unit,solid_angle_unit,area_unit,\n volume_unit))"); + a_34dimensions = + new AttrDescriptor("dimensions",config_control_designe_dimensional_exponents, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_named_unit); config_control_designe_named_unit->AddExplicitAttr (a_34dimensions); -///////// END_ENTITY named_unit + reg.AddEntity (*config_control_designe_named_unit); +///////// END_ENTITY named_unit -///////// ENTITY plane_angle_unit +///////// ENTITY plane_angle_unit - reg.AddEntity (*config_control_designe_plane_angle_unit); config_control_designe_plane_angle_unit->AddSupertype(config_control_designe_named_unit); config_control_designe_named_unit->AddSubtype(config_control_designe_plane_angle_unit); -///////// END_ENTITY plane_angle_unit + reg.AddEntity (*config_control_designe_plane_angle_unit); +///////// END_ENTITY plane_angle_unit -///////// ENTITY measure_with_unit +///////// ENTITY measure_with_unit - reg.AddEntity (*config_control_designe_measure_with_unit); - a_35value_component = new AttrDescriptor("value_component",config_control_designt_measure_value,F,F,F,*config_control_designe_measure_with_unit); + config_control_designe_measure_with_unit->AddSupertype_Stmt("SUPERTYPE OF (ONEOF (length_measure_with_unit,mass_measure_with_unit,\n plane_angle_measure_with_unit,solid_angle_measure_with_unit,\n area_measure_with_unit,volume_measure_with_unit))"); + a_35value_component = + new AttrDescriptor("value_component",config_control_designt_measure_value, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_measure_with_unit); config_control_designe_measure_with_unit->AddExplicitAttr (a_35value_component); - a_36unit_component = new AttrDescriptor("unit_component",config_control_designt_unit,F,F,F,*config_control_designe_measure_with_unit); + a_36unit_component = + new AttrDescriptor("unit_component",config_control_designt_unit, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_measure_with_unit); config_control_designe_measure_with_unit->AddExplicitAttr (a_36unit_component); -///////// END_ENTITY measure_with_unit + reg.AddEntity (*config_control_designe_measure_with_unit); +///////// END_ENTITY measure_with_unit -///////// ENTITY area_measure_with_unit +///////// ENTITY area_measure_with_unit - reg.AddEntity (*config_control_designe_area_measure_with_unit); config_control_designe_area_measure_with_unit->AddSupertype(config_control_designe_measure_with_unit); config_control_designe_measure_with_unit->AddSubtype(config_control_designe_area_measure_with_unit); -///////// END_ENTITY area_measure_with_unit + reg.AddEntity (*config_control_designe_area_measure_with_unit); +///////// END_ENTITY area_measure_with_unit -///////// ENTITY effectivity +///////// ENTITY effectivity - reg.AddEntity (*config_control_designe_effectivity); - a_37id = new AttrDescriptor("id",config_control_designt_identifier,F,F,F,*config_control_designe_effectivity); + config_control_designe_effectivity->AddSupertype_Stmt("SUPERTYPE OF (ONEOF (serial_numbered_effectivity,dated_effectivity,lot_effectivity))"); + a_37id = + new AttrDescriptor("id",config_control_designt_identifier, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_effectivity); config_control_designe_effectivity->AddExplicitAttr (a_37id); -///////// END_ENTITY effectivity + reg.AddEntity (*config_control_designe_effectivity); +///////// END_ENTITY effectivity -///////// ENTITY serial_numbered_effectivity +///////// ENTITY serial_numbered_effectivity - reg.AddEntity (*config_control_designe_serial_numbered_effectivity); config_control_designe_serial_numbered_effectivity->AddSupertype(config_control_designe_effectivity); config_control_designe_effectivity->AddSubtype(config_control_designe_serial_numbered_effectivity); - a_38effectivity_start_id = new AttrDescriptor("effectivity_start_id",config_control_designt_identifier,F,F,F,*config_control_designe_serial_numbered_effectivity); + a_38effectivity_start_id = + new AttrDescriptor("effectivity_start_id",config_control_designt_identifier, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_serial_numbered_effectivity); config_control_designe_serial_numbered_effectivity->AddExplicitAttr (a_38effectivity_start_id); - a_39effectivity_end_id = new AttrDescriptor("effectivity_end_id",config_control_designt_identifier,T,F,F,*config_control_designe_serial_numbered_effectivity); + a_39effectivity_end_id = + new AttrDescriptor("effectivity_end_id",config_control_designt_identifier, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_serial_numbered_effectivity); config_control_designe_serial_numbered_effectivity->AddExplicitAttr (a_39effectivity_end_id); -///////// END_ENTITY serial_numbered_effectivity + reg.AddEntity (*config_control_designe_serial_numbered_effectivity); +///////// END_ENTITY serial_numbered_effectivity -///////// ENTITY surface +///////// ENTITY surface - reg.AddEntity (*config_control_designe_surface); + config_control_designe_surface->AddSupertype_Stmt("SUPERTYPE OF (ONEOF (elementary_surface,swept_surface,bounded_surface,offset_surface,\n surface_replica))"); config_control_designe_surface->AddSupertype(config_control_designe_geometric_representation_item); config_control_designe_geometric_representation_item->AddSubtype(config_control_designe_surface); -///////// END_ENTITY surface + reg.AddEntity (*config_control_designe_surface); +///////// END_ENTITY surface -///////// ENTITY offset_surface +///////// ENTITY offset_surface - reg.AddEntity (*config_control_designe_offset_surface); config_control_designe_offset_surface->AddSupertype(config_control_designe_surface); config_control_designe_surface->AddSubtype(config_control_designe_offset_surface); - a_40basis_surface = new AttrDescriptor("basis_surface",config_control_designe_surface,F,F,F,*config_control_designe_offset_surface); + a_40basis_surface = + new AttrDescriptor("basis_surface",config_control_designe_surface, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_offset_surface); config_control_designe_offset_surface->AddExplicitAttr (a_40basis_surface); - a_41distance = new AttrDescriptor("distance",config_control_designt_length_measure,F,F,F,*config_control_designe_offset_surface); + a_41distance = + new AttrDescriptor("distance",config_control_designt_length_measure, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_offset_surface); config_control_designe_offset_surface->AddExplicitAttr (a_41distance); - a_42self_intersect = new AttrDescriptor("self_intersect",t_LOGICAL_TYPE,F,F,F,*config_control_designe_offset_surface); + a_42self_intersect = + new AttrDescriptor("self_intersect",t_sdaiLOGICAL, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_offset_surface); config_control_designe_offset_surface->AddExplicitAttr (a_42self_intersect); -///////// END_ENTITY offset_surface + reg.AddEntity (*config_control_designe_offset_surface); +///////// END_ENTITY offset_surface -///////// ENTITY placement +///////// ENTITY placement - reg.AddEntity (*config_control_designe_placement); + config_control_designe_placement->AddSupertype_Stmt("SUPERTYPE OF (ONEOF (axis1_placement,axis2_placement_2d,axis2_placement_3d))"); config_control_designe_placement->AddSupertype(config_control_designe_geometric_representation_item); config_control_designe_geometric_representation_item->AddSubtype(config_control_designe_placement); - a_43location = new AttrDescriptor("location",config_control_designe_cartesian_point,F,F,F,*config_control_designe_placement); + a_43location = + new AttrDescriptor("location",config_control_designe_cartesian_point, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_placement); config_control_designe_placement->AddExplicitAttr (a_43location); -///////// END_ENTITY placement + reg.AddEntity (*config_control_designe_placement); +///////// END_ENTITY placement -///////// ENTITY axis2_placement_2d +///////// ENTITY axis2_placement_2d - reg.AddEntity (*config_control_designe_axis2_placement_2d); config_control_designe_axis2_placement_2d->AddSupertype(config_control_designe_placement); config_control_designe_placement->AddSubtype(config_control_designe_axis2_placement_2d); - a_44ref_direction = new AttrDescriptor("ref_direction",config_control_designe_direction,T,F,F,*config_control_designe_axis2_placement_2d); + a_44ref_direction = + new AttrDescriptor("ref_direction",config_control_designe_direction, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_axis2_placement_2d); config_control_designe_axis2_placement_2d->AddExplicitAttr (a_44ref_direction); ListTypeDescriptor * t_3 = new ListTypeDescriptor; t_3->AssignAggrCreator((AggregateCreator) create_EntityAggregate); // Creator function t_3->Bound1(2); t_3->Bound2(2); t_3->FundamentalType(LIST_TYPE); - t_3->Description("LIST [2:2] of Direction"); + t_3->Description("LIST [2:2] OF direction"); + t_3->OriginatingSchema(s_config_control_design); t_3->ReferentType(config_control_designe_direction); - a_45Dp = new AttrDescriptor("p",t_3,F,F,T,*config_control_designe_axis2_placement_2d); + a_45Dp = + new Derived_attribute("p",t_3,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_axis2_placement_2d); config_control_designe_axis2_placement_2d->AddExplicitAttr (a_45Dp); -///////// END_ENTITY axis2_placement_2d + a_45Dp->initializer_("build_2axes(ref_direction)"); + reg.AddEntity (*config_control_designe_axis2_placement_2d); +///////// END_ENTITY axis2_placement_2d -///////// ENTITY product_category +///////// ENTITY product_category - reg.AddEntity (*config_control_designe_product_category); - a_46name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_product_category); + a_46name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_product_category); config_control_designe_product_category->AddExplicitAttr (a_46name); - a_47description = new AttrDescriptor("description",config_control_designt_text,T,F,F,*config_control_designe_product_category); + a_47description = + new AttrDescriptor("description",config_control_designt_text, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_product_category); config_control_designe_product_category->AddExplicitAttr (a_47description); -///////// END_ENTITY product_category + reg.AddEntity (*config_control_designe_product_category); +///////// END_ENTITY product_category -///////// ENTITY product_related_product_category +///////// ENTITY product_related_product_category - reg.AddEntity (*config_control_designe_product_related_product_category); config_control_designe_product_related_product_category->AddSupertype(config_control_designe_product_category); config_control_designe_product_category->AddSubtype(config_control_designe_product_related_product_category); SetTypeDescriptor * t_4 = new SetTypeDescriptor; @@ -1145,71 +682,121 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_4->Bound1(1); t_4->Bound2(2147483647); t_4->FundamentalType(SET_TYPE); - t_4->Description("SET [1:?] OF Product"); + t_4->Description("SET [1:?] OF product"); + t_4->OriginatingSchema(s_config_control_design); t_4->ReferentType(config_control_designe_product); - a_48products = new AttrDescriptor("products",t_4,F,F,F,*config_control_designe_product_related_product_category); + a_48products = + new AttrDescriptor("products",t_4,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_product_related_product_category); config_control_designe_product_related_product_category->AddExplicitAttr (a_48products); -///////// END_ENTITY product_related_product_category + reg.AddEntity (*config_control_designe_product_related_product_category); +///////// END_ENTITY product_related_product_category -///////// ENTITY curve +///////// ENTITY curve - reg.AddEntity (*config_control_designe_curve); + config_control_designe_curve->AddSupertype_Stmt("SUPERTYPE OF (ONEOF (line,conic,pcurve,surface_curve,offset_curve_2d,offset_curve_3d,\n curve_replica))"); config_control_designe_curve->AddSupertype(config_control_designe_geometric_representation_item); config_control_designe_geometric_representation_item->AddSubtype(config_control_designe_curve); -///////// END_ENTITY curve + reg.AddEntity (*config_control_designe_curve); +///////// END_ENTITY curve -///////// ENTITY conic +///////// ENTITY conic - reg.AddEntity (*config_control_designe_conic); + config_control_designe_conic->AddSupertype_Stmt("SUPERTYPE OF (ONEOF (circle,ellipse,hyperbola,parabola))"); config_control_designe_conic->AddSupertype(config_control_designe_curve); config_control_designe_curve->AddSubtype(config_control_designe_conic); - a_49position = new AttrDescriptor("position",config_control_designt_axis2_placement,F,F,F,*config_control_designe_conic); + a_49position = + new AttrDescriptor("position",config_control_designt_axis2_placement, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_conic); config_control_designe_conic->AddExplicitAttr (a_49position); -///////// END_ENTITY conic + reg.AddEntity (*config_control_designe_conic); +///////// END_ENTITY conic -///////// ENTITY hyperbola +///////// ENTITY hyperbola - reg.AddEntity (*config_control_designe_hyperbola); config_control_designe_hyperbola->AddSupertype(config_control_designe_conic); config_control_designe_conic->AddSubtype(config_control_designe_hyperbola); - a_50semi_axis = new AttrDescriptor("semi_axis",config_control_designt_positive_length_measure,F,F,F,*config_control_designe_hyperbola); + a_50semi_axis = + new AttrDescriptor("semi_axis",config_control_designt_positive_length_measure, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_hyperbola); config_control_designe_hyperbola->AddExplicitAttr (a_50semi_axis); - a_51semi_imag_axis = new AttrDescriptor("semi_imag_axis",config_control_designt_positive_length_measure,F,F,F,*config_control_designe_hyperbola); + a_51semi_imag_axis = + new AttrDescriptor("semi_imag_axis",config_control_designt_positive_length_measure, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_hyperbola); config_control_designe_hyperbola->AddExplicitAttr (a_51semi_imag_axis); -///////// END_ENTITY hyperbola + reg.AddEntity (*config_control_designe_hyperbola); +///////// END_ENTITY hyperbola -///////// ENTITY address +///////// ENTITY address - reg.AddEntity (*config_control_designe_address); - a_52internal_location = new AttrDescriptor("internal_location",config_control_designt_label,T,F,F,*config_control_designe_address); + a_52internal_location = + new AttrDescriptor("internal_location",config_control_designt_label, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_address); config_control_designe_address->AddExplicitAttr (a_52internal_location); - a_53street_number = new AttrDescriptor("street_number",config_control_designt_label,T,F,F,*config_control_designe_address); + a_53street_number = + new AttrDescriptor("street_number",config_control_designt_label, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_address); config_control_designe_address->AddExplicitAttr (a_53street_number); - a_54street = new AttrDescriptor("street",config_control_designt_label,T,F,F,*config_control_designe_address); + a_54street = + new AttrDescriptor("street",config_control_designt_label, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_address); config_control_designe_address->AddExplicitAttr (a_54street); - a_55postal_box = new AttrDescriptor("postal_box",config_control_designt_label,T,F,F,*config_control_designe_address); + a_55postal_box = + new AttrDescriptor("postal_box",config_control_designt_label, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_address); config_control_designe_address->AddExplicitAttr (a_55postal_box); - a_56town = new AttrDescriptor("town",config_control_designt_label,T,F,F,*config_control_designe_address); + a_56town = + new AttrDescriptor("town",config_control_designt_label, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_address); config_control_designe_address->AddExplicitAttr (a_56town); - a_57region = new AttrDescriptor("region",config_control_designt_label,T,F,F,*config_control_designe_address); + a_57region = + new AttrDescriptor("region",config_control_designt_label, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_address); config_control_designe_address->AddExplicitAttr (a_57region); - a_58postal_code = new AttrDescriptor("postal_code",config_control_designt_label,T,F,F,*config_control_designe_address); + a_58postal_code = + new AttrDescriptor("postal_code",config_control_designt_label, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_address); config_control_designe_address->AddExplicitAttr (a_58postal_code); - a_59country = new AttrDescriptor("country",config_control_designt_label,T,F,F,*config_control_designe_address); + a_59country = + new AttrDescriptor("country",config_control_designt_label, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_address); config_control_designe_address->AddExplicitAttr (a_59country); - a_60facsimile_number = new AttrDescriptor("facsimile_number",config_control_designt_label,T,F,F,*config_control_designe_address); + a_60facsimile_number = + new AttrDescriptor("facsimile_number",config_control_designt_label, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_address); config_control_designe_address->AddExplicitAttr (a_60facsimile_number); - a_61telephone_number = new AttrDescriptor("telephone_number",config_control_designt_label,T,F,F,*config_control_designe_address); + a_61telephone_number = + new AttrDescriptor("telephone_number",config_control_designt_label, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_address); config_control_designe_address->AddExplicitAttr (a_61telephone_number); - a_62electronic_mail_address = new AttrDescriptor("electronic_mail_address",config_control_designt_label,T,F,F,*config_control_designe_address); + a_62electronic_mail_address = + new AttrDescriptor("electronic_mail_address",config_control_designt_label, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_address); config_control_designe_address->AddExplicitAttr (a_62electronic_mail_address); - a_63telex_number = new AttrDescriptor("telex_number",config_control_designt_label,T,F,F,*config_control_designe_address); + a_63telex_number = + new AttrDescriptor("telex_number",config_control_designt_label, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_address); config_control_designe_address->AddExplicitAttr (a_63telex_number); -///////// END_ENTITY address + reg.AddEntity (*config_control_designe_address); +///////// END_ENTITY address -///////// ENTITY organizational_address +///////// ENTITY organizational_address - reg.AddEntity (*config_control_designe_organizational_address); config_control_designe_organizational_address->AddSupertype(config_control_designe_address); config_control_designe_address->AddSubtype(config_control_designe_organizational_address); SetTypeDescriptor * t_5 = new SetTypeDescriptor; @@ -1217,146 +804,221 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_5->Bound1(1); t_5->Bound2(2147483647); t_5->FundamentalType(SET_TYPE); - t_5->Description("SET [1:?] OF Organization"); + t_5->Description("SET [1:?] OF organization"); + t_5->OriginatingSchema(s_config_control_design); t_5->ReferentType(config_control_designe_organization); - a_64organizations = new AttrDescriptor("organizations",t_5,F,F,F,*config_control_designe_organizational_address); + a_64organizations = + new AttrDescriptor("organizations",t_5,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_organizational_address); config_control_designe_organizational_address->AddExplicitAttr (a_64organizations); - a_65description = new AttrDescriptor("description",config_control_designt_text,F,F,F,*config_control_designe_organizational_address); + a_65description = + new AttrDescriptor("description",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_organizational_address); config_control_designe_organizational_address->AddExplicitAttr (a_65description); -///////// END_ENTITY organizational_address + reg.AddEntity (*config_control_designe_organizational_address); +///////// END_ENTITY organizational_address -///////// ENTITY bounded_surface +///////// ENTITY bounded_surface - reg.AddEntity (*config_control_designe_bounded_surface); + config_control_designe_bounded_surface->AddSupertype_Stmt("SUPERTYPE OF (ONEOF (b_spline_surface,rectangular_trimmed_surface,curve_bounded_surface,\n rectangular_composite_surface))"); config_control_designe_bounded_surface->AddSupertype(config_control_designe_surface); config_control_designe_surface->AddSubtype(config_control_designe_bounded_surface); -///////// END_ENTITY bounded_surface + reg.AddEntity (*config_control_designe_bounded_surface); +///////// END_ENTITY bounded_surface -///////// ENTITY b_spline_surface +///////// ENTITY b_spline_surface - reg.AddEntity (*config_control_designe_b_spline_surface); + config_control_designe_b_spline_surface->AddSupertype_Stmt("SUPERTYPE OF (ONEOF (b_spline_surface_with_knots,uniform_surface,quasi_uniform_surface,\n bezier_surface) ANDOR rational_b_spline_surface)"); config_control_designe_b_spline_surface->AddSupertype(config_control_designe_bounded_surface); config_control_designe_bounded_surface->AddSubtype(config_control_designe_b_spline_surface); - a_66u_degree = new AttrDescriptor("u_degree",t_INTEGER_TYPE,F,F,F,*config_control_designe_b_spline_surface); + a_66u_degree = + new AttrDescriptor("u_degree",t_sdaiINTEGER, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_b_spline_surface); config_control_designe_b_spline_surface->AddExplicitAttr (a_66u_degree); - a_67v_degree = new AttrDescriptor("v_degree",t_INTEGER_TYPE,F,F,F,*config_control_designe_b_spline_surface); + a_67v_degree = + new AttrDescriptor("v_degree",t_sdaiINTEGER, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_b_spline_surface); config_control_designe_b_spline_surface->AddExplicitAttr (a_67v_degree); ListTypeDescriptor * t_6 = new ListTypeDescriptor; t_6->AssignAggrCreator((AggregateCreator) create_GenericAggregate); // Creator function t_6->Bound1(2); t_6->Bound2(2147483647); t_6->FundamentalType(LIST_TYPE); - t_6->Description("LIST [2:?] of LIST [2:?] of Cartesian_Point"); + t_6->Description("LIST [2:?] OF LIST [2:?] OF cartesian_point"); + t_6->OriginatingSchema(s_config_control_design); ListTypeDescriptor * t_7 = new ListTypeDescriptor; t_7->AssignAggrCreator((AggregateCreator) create_EntityAggregate); // Creator function t_7->Bound1(2); t_7->Bound2(2147483647); t_7->FundamentalType(LIST_TYPE); - t_7->Description("LIST [2:?] of Cartesian_Point"); + t_7->Description("LIST [2:?] OF cartesian_point"); + t_7->OriginatingSchema(s_config_control_design); t_7->ReferentType(config_control_designe_cartesian_point); t_6->ReferentType(t_7); - a_68control_points_list = new AttrDescriptor("control_points_list",t_6,F,F,F,*config_control_designe_b_spline_surface); + a_68control_points_list = + new AttrDescriptor("control_points_list",t_6,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_b_spline_surface); config_control_designe_b_spline_surface->AddExplicitAttr (a_68control_points_list); - a_69surface_form = new AttrDescriptor("surface_form",config_control_designt_b_spline_surface_form,F,F,F,*config_control_designe_b_spline_surface); + a_69surface_form = + new AttrDescriptor("surface_form",config_control_designt_b_spline_surface_form, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_b_spline_surface); config_control_designe_b_spline_surface->AddExplicitAttr (a_69surface_form); - a_70u_closed = new AttrDescriptor("u_closed",t_LOGICAL_TYPE,F,F,F,*config_control_designe_b_spline_surface); + a_70u_closed = + new AttrDescriptor("u_closed",t_sdaiLOGICAL, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_b_spline_surface); config_control_designe_b_spline_surface->AddExplicitAttr (a_70u_closed); - a_71v_closed = new AttrDescriptor("v_closed",t_LOGICAL_TYPE,F,F,F,*config_control_designe_b_spline_surface); + a_71v_closed = + new AttrDescriptor("v_closed",t_sdaiLOGICAL, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_b_spline_surface); config_control_designe_b_spline_surface->AddExplicitAttr (a_71v_closed); - a_72self_intersect = new AttrDescriptor("self_intersect",t_LOGICAL_TYPE,F,F,F,*config_control_designe_b_spline_surface); + a_72self_intersect = + new AttrDescriptor("self_intersect",t_sdaiLOGICAL, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_b_spline_surface); config_control_designe_b_spline_surface->AddExplicitAttr (a_72self_intersect); - a_73Du_upper = new AttrDescriptor("u_upper",t_INTEGER_TYPE,F,F,T,*config_control_designe_b_spline_surface); + a_73Du_upper = + new Derived_attribute("u_upper",t_sdaiINTEGER, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_b_spline_surface); config_control_designe_b_spline_surface->AddExplicitAttr (a_73Du_upper); - a_74Dv_upper = new AttrDescriptor("v_upper",t_INTEGER_TYPE,F,F,T,*config_control_designe_b_spline_surface); + a_73Du_upper->initializer_("SIZEOF(control_points_list) - 1"); + a_74Dv_upper = + new Derived_attribute("v_upper",t_sdaiINTEGER, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_b_spline_surface); config_control_designe_b_spline_surface->AddExplicitAttr (a_74Dv_upper); + a_74Dv_upper->initializer_("SIZEOF(control_points_list[1]) - 1"); ArrayTypeDescriptor * t_8 = new ArrayTypeDescriptor; t_8->AssignAggrCreator((AggregateCreator) create_GenericAggregate); // Creator function t_8->Bound1(0); - t_8->Bound2(537692792); + t_8->Bound2(1025168); t_8->FundamentalType(ARRAY_TYPE); - t_8->Description("ARRAY [0:u_upper] OF ARRAY [0:v_upper] OF Cartesian_Point"); + t_8->Description("ARRAY [0:u_upper] OF ARRAY [0:v_upper] OF cartesian_point"); + t_8->OriginatingSchema(s_config_control_design); ArrayTypeDescriptor * t_9 = new ArrayTypeDescriptor; t_9->AssignAggrCreator((AggregateCreator) create_EntityAggregate); // Creator function t_9->Bound1(0); - t_9->Bound2(537693480); + t_9->Bound2(1025208); t_9->FundamentalType(ARRAY_TYPE); - t_9->Description("ARRAY [0:v_upper] OF Cartesian_Point"); + t_9->Description("ARRAY [0:v_upper] OF cartesian_point"); + t_9->OriginatingSchema(s_config_control_design); t_9->ReferentType(config_control_designe_cartesian_point); t_8->ReferentType(t_9); - a_75Dcontrol_points = new AttrDescriptor("control_points",t_8,F,F,T,*config_control_designe_b_spline_surface); + a_75Dcontrol_points = + new Derived_attribute("control_points",t_8,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_b_spline_surface); config_control_designe_b_spline_surface->AddExplicitAttr (a_75Dcontrol_points); -///////// END_ENTITY b_spline_surface + a_75Dcontrol_points->initializer_("make_array_of_array(control_points_list,0,u_upper,0,v_upper)"); + reg.AddEntity (*config_control_designe_b_spline_surface); +///////// END_ENTITY b_spline_surface -///////// ENTITY uniform_surface +///////// ENTITY uniform_surface - reg.AddEntity (*config_control_designe_uniform_surface); config_control_designe_uniform_surface->AddSupertype(config_control_designe_b_spline_surface); config_control_designe_b_spline_surface->AddSubtype(config_control_designe_uniform_surface); -///////// END_ENTITY uniform_surface + reg.AddEntity (*config_control_designe_uniform_surface); +///////// END_ENTITY uniform_surface -///////// ENTITY geometrically_bounded_surface_shape_representation +///////// ENTITY geometrically_bounded_surface_shape_representation - reg.AddEntity (*config_control_designe_geometrically_bounded_surface_shape_representation); config_control_designe_geometrically_bounded_surface_shape_representation->AddSupertype(config_control_designe_shape_representation); config_control_designe_shape_representation->AddSubtype(config_control_designe_geometrically_bounded_surface_shape_representation); -///////// END_ENTITY geometrically_bounded_surface_shape_representation + reg.AddEntity (*config_control_designe_geometrically_bounded_surface_shape_representation); +///////// END_ENTITY geometrically_bounded_surface_shape_representation -///////// ENTITY axis1_placement +///////// ENTITY axis1_placement - reg.AddEntity (*config_control_designe_axis1_placement); config_control_designe_axis1_placement->AddSupertype(config_control_designe_placement); config_control_designe_placement->AddSubtype(config_control_designe_axis1_placement); - a_76axis = new AttrDescriptor("axis",config_control_designe_direction,T,F,F,*config_control_designe_axis1_placement); + a_76axis = + new AttrDescriptor("axis",config_control_designe_direction, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_axis1_placement); config_control_designe_axis1_placement->AddExplicitAttr (a_76axis); - a_77Dz = new AttrDescriptor("z",config_control_designe_direction,F,F,T,*config_control_designe_axis1_placement); + a_77Dz = + new Derived_attribute("z",config_control_designe_direction, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_axis1_placement); config_control_designe_axis1_placement->AddExplicitAttr (a_77Dz); -///////// END_ENTITY axis1_placement + a_77Dz->initializer_("NVL(normalise(axis),direction([0,0,1]))"); + reg.AddEntity (*config_control_designe_axis1_placement); +///////// END_ENTITY axis1_placement -///////// ENTITY bounded_curve +///////// ENTITY bounded_curve - reg.AddEntity (*config_control_designe_bounded_curve); + config_control_designe_bounded_curve->AddSupertype_Stmt("SUPERTYPE OF (ONEOF (polyline,b_spline_curve,trimmed_curve,composite_curve))"); config_control_designe_bounded_curve->AddSupertype(config_control_designe_curve); config_control_designe_curve->AddSubtype(config_control_designe_bounded_curve); -///////// END_ENTITY bounded_curve + reg.AddEntity (*config_control_designe_bounded_curve); +///////// END_ENTITY bounded_curve -///////// ENTITY b_spline_curve +///////// ENTITY b_spline_curve - reg.AddEntity (*config_control_designe_b_spline_curve); + config_control_designe_b_spline_curve->AddSupertype_Stmt("SUPERTYPE OF (ONEOF (uniform_curve,b_spline_curve_with_knots,quasi_uniform_curve,\n bezier_curve) ANDOR rational_b_spline_curve)"); config_control_designe_b_spline_curve->AddSupertype(config_control_designe_bounded_curve); config_control_designe_bounded_curve->AddSubtype(config_control_designe_b_spline_curve); - a_78degree = new AttrDescriptor("degree",t_INTEGER_TYPE,F,F,F,*config_control_designe_b_spline_curve); + a_78degree = + new AttrDescriptor("degree",t_sdaiINTEGER, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_b_spline_curve); config_control_designe_b_spline_curve->AddExplicitAttr (a_78degree); ListTypeDescriptor * t_10 = new ListTypeDescriptor; t_10->AssignAggrCreator((AggregateCreator) create_EntityAggregate); // Creator function t_10->Bound1(2); t_10->Bound2(2147483647); t_10->FundamentalType(LIST_TYPE); - t_10->Description("LIST [2:?] of Cartesian_Point"); + t_10->Description("LIST [2:?] OF cartesian_point"); + t_10->OriginatingSchema(s_config_control_design); t_10->ReferentType(config_control_designe_cartesian_point); - a_79control_points_list = new AttrDescriptor("control_points_list",t_10,F,F,F,*config_control_designe_b_spline_curve); + a_79control_points_list = + new AttrDescriptor("control_points_list",t_10,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_b_spline_curve); config_control_designe_b_spline_curve->AddExplicitAttr (a_79control_points_list); - a_80curve_form = new AttrDescriptor("curve_form",config_control_designt_b_spline_curve_form,F,F,F,*config_control_designe_b_spline_curve); + a_80curve_form = + new AttrDescriptor("curve_form",config_control_designt_b_spline_curve_form, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_b_spline_curve); config_control_designe_b_spline_curve->AddExplicitAttr (a_80curve_form); - a_81closed_curve = new AttrDescriptor("closed_curve",t_LOGICAL_TYPE,F,F,F,*config_control_designe_b_spline_curve); + a_81closed_curve = + new AttrDescriptor("closed_curve",t_sdaiLOGICAL, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_b_spline_curve); config_control_designe_b_spline_curve->AddExplicitAttr (a_81closed_curve); - a_82self_intersect = new AttrDescriptor("self_intersect",t_LOGICAL_TYPE,F,F,F,*config_control_designe_b_spline_curve); + a_82self_intersect = + new AttrDescriptor("self_intersect",t_sdaiLOGICAL, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_b_spline_curve); config_control_designe_b_spline_curve->AddExplicitAttr (a_82self_intersect); - a_83Dupper_index_on_control_points = new AttrDescriptor("upper_index_on_control_points",t_INTEGER_TYPE,F,F,T,*config_control_designe_b_spline_curve); + a_83Dupper_index_on_control_points = + new Derived_attribute("upper_index_on_control_points",t_sdaiINTEGER, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_b_spline_curve); config_control_designe_b_spline_curve->AddExplicitAttr (a_83Dupper_index_on_control_points); + a_83Dupper_index_on_control_points->initializer_("SIZEOF(control_points_list) - 1"); ArrayTypeDescriptor * t_11 = new ArrayTypeDescriptor; t_11->AssignAggrCreator((AggregateCreator) create_EntityAggregate); // Creator function t_11->Bound1(0); - t_11->Bound2(539033608); + t_11->Bound2(1024368); t_11->FundamentalType(ARRAY_TYPE); - t_11->Description("ARRAY [0:upper_index_on_control_points] OF Cartesian_Point"); + t_11->Description("ARRAY [0:upper_index_on_control_points] OF cartesian_point"); + t_11->OriginatingSchema(s_config_control_design); t_11->ReferentType(config_control_designe_cartesian_point); - a_84Dcontrol_points = new AttrDescriptor("control_points",t_11,F,F,T,*config_control_designe_b_spline_curve); + a_84Dcontrol_points = + new Derived_attribute("control_points",t_11,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_b_spline_curve); config_control_designe_b_spline_curve->AddExplicitAttr (a_84Dcontrol_points); -///////// END_ENTITY b_spline_curve + a_84Dcontrol_points->initializer_("list_to_array(control_points_list,0,upper_index_on_control_points)"); + reg.AddEntity (*config_control_designe_b_spline_curve); +///////// END_ENTITY b_spline_curve -///////// ENTITY rational_b_spline_curve +///////// ENTITY rational_b_spline_curve - reg.AddEntity (*config_control_designe_rational_b_spline_curve); config_control_designe_rational_b_spline_curve->AddSupertype(config_control_designe_b_spline_curve); config_control_designe_b_spline_curve->AddSubtype(config_control_designe_rational_b_spline_curve); ListTypeDescriptor * t_12 = new ListTypeDescriptor; @@ -1364,67 +1026,91 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_12->Bound1(2); t_12->Bound2(2147483647); t_12->FundamentalType(LIST_TYPE); - t_12->Description("LIST [2:?] of REAL"); - t_12->ReferentType(t_REAL_TYPE); - a_85weights_data = new AttrDescriptor("weights_data",t_12,F,F,F,*config_control_designe_rational_b_spline_curve); + t_12->Description("LIST [2:?] OF REAL"); + t_12->OriginatingSchema(s_config_control_design); + t_12->ReferentType(t_sdaiREAL); + a_85weights_data = + new AttrDescriptor("weights_data",t_12,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_rational_b_spline_curve); config_control_designe_rational_b_spline_curve->AddExplicitAttr (a_85weights_data); ArrayTypeDescriptor * t_13 = new ArrayTypeDescriptor; t_13->AssignAggrCreator((AggregateCreator) create_RealAggregate); // Creator function t_13->Bound1(0); - t_13->Bound2(539033608); + t_13->Bound2(1024368); t_13->FundamentalType(ARRAY_TYPE); t_13->Description("ARRAY [0:upper_index_on_control_points] OF REAL"); - t_13->ReferentType(t_REAL_TYPE); - a_86Dweights = new AttrDescriptor("weights",t_13,F,F,T,*config_control_designe_rational_b_spline_curve); + t_13->OriginatingSchema(s_config_control_design); + t_13->ReferentType(t_sdaiREAL); + a_86Dweights = + new Derived_attribute("weights",t_13,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_rational_b_spline_curve); config_control_designe_rational_b_spline_curve->AddExplicitAttr (a_86Dweights); -///////// END_ENTITY rational_b_spline_curve + a_86Dweights->initializer_("list_to_array(weights_data,0,upper_index_on_control_points)"); + reg.AddEntity (*config_control_designe_rational_b_spline_curve); +///////// END_ENTITY rational_b_spline_curve -///////// ENTITY action_request_assignment +///////// ENTITY action_request_assignment - reg.AddEntity (*config_control_designe_action_request_assignment); - a_87assigned_action_request = new AttrDescriptor("assigned_action_request",config_control_designe_versioned_action_request,F,F,F,*config_control_designe_action_request_assignment); + config_control_designe_action_request_assignment->AddSupertype_Stmt("ABSTRACT SUPERTYPE"); + a_87assigned_action_request = + new AttrDescriptor("assigned_action_request",config_control_designe_versioned_action_request, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_action_request_assignment); config_control_designe_action_request_assignment->AddExplicitAttr (a_87assigned_action_request); -///////// END_ENTITY action_request_assignment + reg.AddEntity (*config_control_designe_action_request_assignment); +///////// END_ENTITY action_request_assignment -///////// ENTITY topological_representation_item +///////// ENTITY topological_representation_item - reg.AddEntity (*config_control_designe_topological_representation_item); + config_control_designe_topological_representation_item->AddSupertype_Stmt("SUPERTYPE OF (ONEOF (vertex,edge,face_bound,face,connected_edge_set,connected_face_set,\n vertex_shell,wire_shell,loop ANDOR path))"); config_control_designe_topological_representation_item->AddSupertype(config_control_designe_representation_item); config_control_designe_representation_item->AddSubtype(config_control_designe_topological_representation_item); -///////// END_ENTITY topological_representation_item + reg.AddEntity (*config_control_designe_topological_representation_item); +///////// END_ENTITY topological_representation_item -///////// ENTITY face_bound +///////// ENTITY face_bound - reg.AddEntity (*config_control_designe_face_bound); config_control_designe_face_bound->AddSupertype(config_control_designe_topological_representation_item); config_control_designe_topological_representation_item->AddSubtype(config_control_designe_face_bound); - a_88bound = new AttrDescriptor("bound",config_control_designe_loop,F,F,F,*config_control_designe_face_bound); + a_88bound = + new AttrDescriptor("bound",config_control_designe_loop, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_face_bound); config_control_designe_face_bound->AddExplicitAttr (a_88bound); - a_89orientation = new AttrDescriptor("orientation",t_BOOLEAN_TYPE,F,F,F,*config_control_designe_face_bound); + a_89orientation = + new AttrDescriptor("orientation",t_sdaiBOOLEAN, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_face_bound); config_control_designe_face_bound->AddExplicitAttr (a_89orientation); -///////// END_ENTITY face_bound + reg.AddEntity (*config_control_designe_face_bound); +///////// END_ENTITY face_bound -///////// ENTITY length_measure_with_unit +///////// ENTITY length_measure_with_unit - reg.AddEntity (*config_control_designe_length_measure_with_unit); config_control_designe_length_measure_with_unit->AddSupertype(config_control_designe_measure_with_unit); config_control_designe_measure_with_unit->AddSubtype(config_control_designe_length_measure_with_unit); -///////// END_ENTITY length_measure_with_unit + reg.AddEntity (*config_control_designe_length_measure_with_unit); +///////// END_ENTITY length_measure_with_unit -///////// ENTITY dated_effectivity +///////// ENTITY dated_effectivity - reg.AddEntity (*config_control_designe_dated_effectivity); config_control_designe_dated_effectivity->AddSupertype(config_control_designe_effectivity); config_control_designe_effectivity->AddSubtype(config_control_designe_dated_effectivity); - a_90effectivity_start_date = new AttrDescriptor("effectivity_start_date",config_control_designe_date_and_time,F,F,F,*config_control_designe_dated_effectivity); + a_90effectivity_start_date = + new AttrDescriptor("effectivity_start_date",config_control_designe_date_and_time, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_dated_effectivity); config_control_designe_dated_effectivity->AddExplicitAttr (a_90effectivity_start_date); - a_91effectivity_end_date = new AttrDescriptor("effectivity_end_date",config_control_designe_date_and_time,T,F,F,*config_control_designe_dated_effectivity); + a_91effectivity_end_date = + new AttrDescriptor("effectivity_end_date",config_control_designe_date_and_time, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_dated_effectivity); config_control_designe_dated_effectivity->AddExplicitAttr (a_91effectivity_end_date); -///////// END_ENTITY dated_effectivity + reg.AddEntity (*config_control_designe_dated_effectivity); +///////// END_ENTITY dated_effectivity -///////// ENTITY direction +///////// ENTITY direction - reg.AddEntity (*config_control_designe_direction); config_control_designe_direction->AddSupertype(config_control_designe_geometric_representation_item); config_control_designe_geometric_representation_item->AddSubtype(config_control_designe_direction); ListTypeDescriptor * t_14 = new ListTypeDescriptor; @@ -1432,159 +1118,248 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_14->Bound1(2); t_14->Bound2(3); t_14->FundamentalType(LIST_TYPE); - t_14->Description("LIST [2:3] of REAL"); - t_14->ReferentType(t_REAL_TYPE); - a_92direction_ratios = new AttrDescriptor("direction_ratios",t_14,F,F,F,*config_control_designe_direction); + t_14->Description("LIST [2:3] OF REAL"); + t_14->OriginatingSchema(s_config_control_design); + t_14->ReferentType(t_sdaiREAL); + a_92direction_ratios = + new AttrDescriptor("direction_ratios",t_14,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_direction); config_control_designe_direction->AddExplicitAttr (a_92direction_ratios); -///////// END_ENTITY direction + reg.AddEntity (*config_control_designe_direction); +///////// END_ENTITY direction -///////// ENTITY next_assembly_usage_occurrence +///////// ENTITY next_assembly_usage_occurrence - reg.AddEntity (*config_control_designe_next_assembly_usage_occurrence); config_control_designe_next_assembly_usage_occurrence->AddSupertype(config_control_designe_assembly_component_usage); config_control_designe_assembly_component_usage->AddSubtype(config_control_designe_next_assembly_usage_occurrence); -///////// END_ENTITY next_assembly_usage_occurrence + reg.AddEntity (*config_control_designe_next_assembly_usage_occurrence); +///////// END_ENTITY next_assembly_usage_occurrence -///////// ENTITY edge +///////// ENTITY edge - reg.AddEntity (*config_control_designe_edge); + config_control_designe_edge->AddSupertype_Stmt("SUPERTYPE OF (ONEOF (edge_curve,oriented_edge))"); config_control_designe_edge->AddSupertype(config_control_designe_topological_representation_item); config_control_designe_topological_representation_item->AddSubtype(config_control_designe_edge); - a_93edge_start = new AttrDescriptor("edge_start",config_control_designe_vertex,F,F,F,*config_control_designe_edge); + a_93edge_start = + new AttrDescriptor("edge_start",config_control_designe_vertex, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_edge); config_control_designe_edge->AddExplicitAttr (a_93edge_start); - a_94edge_end = new AttrDescriptor("edge_end",config_control_designe_vertex,F,F,F,*config_control_designe_edge); + a_94edge_end = + new AttrDescriptor("edge_end",config_control_designe_vertex, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_edge); config_control_designe_edge->AddExplicitAttr (a_94edge_end); -///////// END_ENTITY edge + reg.AddEntity (*config_control_designe_edge); +///////// END_ENTITY edge -///////// ENTITY oriented_edge +///////// ENTITY oriented_edge - reg.AddEntity (*config_control_designe_oriented_edge); config_control_designe_oriented_edge->AddSupertype(config_control_designe_edge); config_control_designe_edge->AddSubtype(config_control_designe_oriented_edge); - a_95edge_element = new AttrDescriptor("edge_element",config_control_designe_edge,F,F,F,*config_control_designe_oriented_edge); + a_95edge_element = + new AttrDescriptor("edge_element",config_control_designe_edge, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_oriented_edge); config_control_designe_oriented_edge->AddExplicitAttr (a_95edge_element); - a_96orientation = new AttrDescriptor("orientation",t_BOOLEAN_TYPE,F,F,F,*config_control_designe_oriented_edge); + a_96orientation = + new AttrDescriptor("orientation",t_sdaiBOOLEAN, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_oriented_edge); config_control_designe_oriented_edge->AddExplicitAttr (a_96orientation); - a_97Dedge_edge_start = new AttrDescriptor("edge.edge_start",config_control_designe_vertex,F,F,T,*config_control_designe_oriented_edge); + a_97Dedge_edge_start = + new Derived_attribute("edge.edge_start",config_control_designe_vertex, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_oriented_edge); config_control_designe_oriented_edge->AddExplicitAttr (a_97Dedge_edge_start); - a_98Dedge_edge_end = new AttrDescriptor("edge.edge_end",config_control_designe_vertex,F,F,T,*config_control_designe_oriented_edge); + a_97Dedge_edge_start->initializer_("boolean_choose(SELF.orientation,SELF.edge_element.edge_start,SELF.\n edge_element.edge_end)"); + a_98Dedge_edge_end = + new Derived_attribute("edge.edge_end",config_control_designe_vertex, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_oriented_edge); config_control_designe_oriented_edge->AddExplicitAttr (a_98Dedge_edge_end); -///////// END_ENTITY oriented_edge + a_98Dedge_edge_end->initializer_("boolean_choose(SELF.orientation,SELF.edge_element.edge_end,SELF.\n edge_element.edge_start)"); + reg.AddEntity (*config_control_designe_oriented_edge); +///////// END_ENTITY oriented_edge -///////// ENTITY person +///////// ENTITY person - reg.AddEntity (*config_control_designe_person); - a_99id = new AttrDescriptor("id",config_control_designt_identifier,F,T,F,*config_control_designe_person); + a_99id = + new AttrDescriptor("id",config_control_designt_identifier, + SCLLOG(LFalse),SCLLOG(LTrue), AttrType_Explicit, + *config_control_designe_person); config_control_designe_person->AddExplicitAttr (a_99id); - a_100last_name = new AttrDescriptor("last_name",config_control_designt_label,T,F,F,*config_control_designe_person); + a_100last_name = + new AttrDescriptor("last_name",config_control_designt_label, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_person); config_control_designe_person->AddExplicitAttr (a_100last_name); - a_101first_name = new AttrDescriptor("first_name",config_control_designt_label,T,F,F,*config_control_designe_person); + a_101first_name = + new AttrDescriptor("first_name",config_control_designt_label, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_person); config_control_designe_person->AddExplicitAttr (a_101first_name); ListTypeDescriptor * t_15 = new ListTypeDescriptor; t_15->AssignAggrCreator((AggregateCreator) create_StringAggregate); // Creator function t_15->Bound1(1); t_15->Bound2(2147483647); t_15->FundamentalType(LIST_TYPE); - t_15->Description("LIST [1:?] of Label"); - t_15->ReferentType(t_STRING_TYPE); - a_102middle_names = new AttrDescriptor("middle_names",t_15,T,F,F,*config_control_designe_person); + t_15->Description("LIST [1:?] OF label"); + t_15->OriginatingSchema(s_config_control_design); + t_15->ReferentType(config_control_designt_label); + a_102middle_names = + new AttrDescriptor("middle_names",t_15,SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_person); config_control_designe_person->AddExplicitAttr (a_102middle_names); ListTypeDescriptor * t_16 = new ListTypeDescriptor; t_16->AssignAggrCreator((AggregateCreator) create_StringAggregate); // Creator function t_16->Bound1(1); t_16->Bound2(2147483647); t_16->FundamentalType(LIST_TYPE); - t_16->Description("LIST [1:?] of Label"); - t_16->ReferentType(t_STRING_TYPE); - a_103prefix_titles = new AttrDescriptor("prefix_titles",t_16,T,F,F,*config_control_designe_person); + t_16->Description("LIST [1:?] OF label"); + t_16->OriginatingSchema(s_config_control_design); + t_16->ReferentType(config_control_designt_label); + a_103prefix_titles = + new AttrDescriptor("prefix_titles",t_16,SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_person); config_control_designe_person->AddExplicitAttr (a_103prefix_titles); ListTypeDescriptor * t_17 = new ListTypeDescriptor; t_17->AssignAggrCreator((AggregateCreator) create_StringAggregate); // Creator function t_17->Bound1(1); t_17->Bound2(2147483647); t_17->FundamentalType(LIST_TYPE); - t_17->Description("LIST [1:?] of Label"); - t_17->ReferentType(t_STRING_TYPE); - a_104suffix_titles = new AttrDescriptor("suffix_titles",t_17,T,F,F,*config_control_designe_person); + t_17->Description("LIST [1:?] OF label"); + t_17->OriginatingSchema(s_config_control_design); + t_17->ReferentType(config_control_designt_label); + a_104suffix_titles = + new AttrDescriptor("suffix_titles",t_17,SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_person); config_control_designe_person->AddExplicitAttr (a_104suffix_titles); -///////// END_ENTITY person + reg.AddEntity (*config_control_designe_person); +///////// END_ENTITY person -///////// ENTITY document +///////// ENTITY document - reg.AddEntity (*config_control_designe_document); - a_105id = new AttrDescriptor("id",config_control_designt_identifier,F,T,F,*config_control_designe_document); + a_105id = + new AttrDescriptor("id",config_control_designt_identifier, + SCLLOG(LFalse),SCLLOG(LTrue), AttrType_Explicit, + *config_control_designe_document); config_control_designe_document->AddExplicitAttr (a_105id); - a_106name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_document); + a_106name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_document); config_control_designe_document->AddExplicitAttr (a_106name); - a_107description = new AttrDescriptor("description",config_control_designt_text,F,F,F,*config_control_designe_document); + a_107description = + new AttrDescriptor("description",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_document); config_control_designe_document->AddExplicitAttr (a_107description); - a_108kind = new AttrDescriptor("kind",config_control_designe_document_type,F,F,F,*config_control_designe_document); + a_108kind = + new AttrDescriptor("kind",config_control_designe_document_type, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_document); config_control_designe_document->AddExplicitAttr (a_108kind); -///////// END_ENTITY document + reg.AddEntity (*config_control_designe_document); +///////// END_ENTITY document -///////// ENTITY document_with_class +///////// ENTITY document_with_class - reg.AddEntity (*config_control_designe_document_with_class); config_control_designe_document_with_class->AddSupertype(config_control_designe_document); config_control_designe_document->AddSubtype(config_control_designe_document_with_class); - a_109class = new AttrDescriptor("class",config_control_designt_identifier,F,F,F,*config_control_designe_document_with_class); + a_109class = + new AttrDescriptor("class",config_control_designt_identifier, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_document_with_class); config_control_designe_document_with_class->AddExplicitAttr (a_109class); -///////// END_ENTITY document_with_class + reg.AddEntity (*config_control_designe_document_with_class); +///////// END_ENTITY document_with_class -///////// ENTITY conversion_based_unit +///////// ENTITY conversion_based_unit - reg.AddEntity (*config_control_designe_conversion_based_unit); config_control_designe_conversion_based_unit->AddSupertype(config_control_designe_named_unit); config_control_designe_named_unit->AddSubtype(config_control_designe_conversion_based_unit); - a_110name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_conversion_based_unit); + a_110name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_conversion_based_unit); config_control_designe_conversion_based_unit->AddExplicitAttr (a_110name); - a_111conversion_factor = new AttrDescriptor("conversion_factor",config_control_designe_measure_with_unit,F,F,F,*config_control_designe_conversion_based_unit); + a_111conversion_factor = + new AttrDescriptor("conversion_factor",config_control_designe_measure_with_unit, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_conversion_based_unit); config_control_designe_conversion_based_unit->AddExplicitAttr (a_111conversion_factor); -///////// END_ENTITY conversion_based_unit + reg.AddEntity (*config_control_designe_conversion_based_unit); +///////// END_ENTITY conversion_based_unit -///////// ENTITY point +///////// ENTITY point - reg.AddEntity (*config_control_designe_point); + config_control_designe_point->AddSupertype_Stmt("SUPERTYPE OF (ONEOF (cartesian_point,point_on_curve,point_on_surface,point_replica,\n degenerate_pcurve))"); config_control_designe_point->AddSupertype(config_control_designe_geometric_representation_item); config_control_designe_geometric_representation_item->AddSubtype(config_control_designe_point); -///////// END_ENTITY point + reg.AddEntity (*config_control_designe_point); +///////// END_ENTITY point -///////// ENTITY point_on_surface +///////// ENTITY point_on_surface - reg.AddEntity (*config_control_designe_point_on_surface); config_control_designe_point_on_surface->AddSupertype(config_control_designe_point); config_control_designe_point->AddSubtype(config_control_designe_point_on_surface); - a_112basis_surface = new AttrDescriptor("basis_surface",config_control_designe_surface,F,F,F,*config_control_designe_point_on_surface); + a_112basis_surface = + new AttrDescriptor("basis_surface",config_control_designe_surface, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_point_on_surface); config_control_designe_point_on_surface->AddExplicitAttr (a_112basis_surface); - a_113point_parameter_u = new AttrDescriptor("point_parameter_u",config_control_designt_parameter_value,F,F,F,*config_control_designe_point_on_surface); + a_113point_parameter_u = + new AttrDescriptor("point_parameter_u",config_control_designt_parameter_value, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_point_on_surface); config_control_designe_point_on_surface->AddExplicitAttr (a_113point_parameter_u); - a_114point_parameter_v = new AttrDescriptor("point_parameter_v",config_control_designt_parameter_value,F,F,F,*config_control_designe_point_on_surface); + a_114point_parameter_v = + new AttrDescriptor("point_parameter_v",config_control_designt_parameter_value, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_point_on_surface); config_control_designe_point_on_surface->AddExplicitAttr (a_114point_parameter_v); -///////// END_ENTITY point_on_surface + reg.AddEntity (*config_control_designe_point_on_surface); +///////// END_ENTITY point_on_surface -///////// ENTITY product_definition_formation +///////// ENTITY product_definition_formation - reg.AddEntity (*config_control_designe_product_definition_formation); - a_115id = new AttrDescriptor("id",config_control_designt_identifier,F,T,F,*config_control_designe_product_definition_formation); + a_115id = + new AttrDescriptor("id",config_control_designt_identifier, + SCLLOG(LFalse),SCLLOG(LTrue), AttrType_Explicit, + *config_control_designe_product_definition_formation); config_control_designe_product_definition_formation->AddExplicitAttr (a_115id); - a_116description = new AttrDescriptor("description",config_control_designt_text,F,F,F,*config_control_designe_product_definition_formation); + a_116description = + new AttrDescriptor("description",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_product_definition_formation); config_control_designe_product_definition_formation->AddExplicitAttr (a_116description); - a_117of_product = new AttrDescriptor("of_product",config_control_designe_product,F,T,F,*config_control_designe_product_definition_formation); + a_117of_product = + new AttrDescriptor("of_product",config_control_designe_product, + SCLLOG(LFalse),SCLLOG(LTrue), AttrType_Explicit, + *config_control_designe_product_definition_formation); config_control_designe_product_definition_formation->AddExplicitAttr (a_117of_product); -///////// END_ENTITY product_definition_formation + reg.AddEntity (*config_control_designe_product_definition_formation); +///////// END_ENTITY product_definition_formation -///////// ENTITY person_and_organization_assignment +///////// ENTITY person_and_organization_assignment - reg.AddEntity (*config_control_designe_person_and_organization_assignment); - a_118assigned_person_and_organization = new AttrDescriptor("assigned_person_and_organization",config_control_designe_person_and_organization,F,F,F,*config_control_designe_person_and_organization_assignment); + config_control_designe_person_and_organization_assignment->AddSupertype_Stmt("ABSTRACT SUPERTYPE"); + a_118assigned_person_and_organization = + new AttrDescriptor("assigned_person_and_organization",config_control_designe_person_and_organization, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_person_and_organization_assignment); config_control_designe_person_and_organization_assignment->AddExplicitAttr (a_118assigned_person_and_organization); - a_119role = new AttrDescriptor("role",config_control_designe_person_and_organization_role,F,F,F,*config_control_designe_person_and_organization_assignment); + a_119role = + new AttrDescriptor("role",config_control_designe_person_and_organization_role, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_person_and_organization_assignment); config_control_designe_person_and_organization_assignment->AddExplicitAttr (a_119role); -///////// END_ENTITY person_and_organization_assignment + reg.AddEntity (*config_control_designe_person_and_organization_assignment); +///////// END_ENTITY person_and_organization_assignment -///////// ENTITY cc_design_person_and_organization_assignment +///////// ENTITY cc_design_person_and_organization_assignment - reg.AddEntity (*config_control_designe_cc_design_person_and_organization_assignment); config_control_designe_cc_design_person_and_organization_assignment->AddSupertype(config_control_designe_person_and_organization_assignment); config_control_designe_person_and_organization_assignment->AddSubtype(config_control_designe_cc_design_person_and_organization_assignment); SetTypeDescriptor * t_18 = new SetTypeDescriptor; @@ -1592,39 +1367,60 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_18->Bound1(1); t_18->Bound2(2147483647); t_18->FundamentalType(SET_TYPE); - t_18->Description("SET [1:?] OF Person_Organization_Item"); + t_18->Description("SET [1:?] OF person_organization_item"); + t_18->OriginatingSchema(s_config_control_design); t_18->ReferentType(config_control_designt_person_organization_item); - a_120items = new AttrDescriptor("items",t_18,F,F,F,*config_control_designe_cc_design_person_and_organization_assignment); + a_120items = + new AttrDescriptor("items",t_18,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_cc_design_person_and_organization_assignment); config_control_designe_cc_design_person_and_organization_assignment->AddExplicitAttr (a_120items); -///////// END_ENTITY cc_design_person_and_organization_assignment + reg.AddEntity (*config_control_designe_cc_design_person_and_organization_assignment); +///////// END_ENTITY cc_design_person_and_organization_assignment -///////// ENTITY offset_curve_3d +///////// ENTITY offset_curve_3d - reg.AddEntity (*config_control_designe_offset_curve_3d); config_control_designe_offset_curve_3d->AddSupertype(config_control_designe_curve); config_control_designe_curve->AddSubtype(config_control_designe_offset_curve_3d); - a_121basis_curve = new AttrDescriptor("basis_curve",config_control_designe_curve,F,F,F,*config_control_designe_offset_curve_3d); + a_121basis_curve = + new AttrDescriptor("basis_curve",config_control_designe_curve, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_offset_curve_3d); config_control_designe_offset_curve_3d->AddExplicitAttr (a_121basis_curve); - a_122distance = new AttrDescriptor("distance",config_control_designt_length_measure,F,F,F,*config_control_designe_offset_curve_3d); + a_122distance = + new AttrDescriptor("distance",config_control_designt_length_measure, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_offset_curve_3d); config_control_designe_offset_curve_3d->AddExplicitAttr (a_122distance); - a_123self_intersect = new AttrDescriptor("self_intersect",t_LOGICAL_TYPE,F,F,F,*config_control_designe_offset_curve_3d); + a_123self_intersect = + new AttrDescriptor("self_intersect",t_sdaiLOGICAL, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_offset_curve_3d); config_control_designe_offset_curve_3d->AddExplicitAttr (a_123self_intersect); - a_124ref_direction = new AttrDescriptor("ref_direction",config_control_designe_direction,F,F,F,*config_control_designe_offset_curve_3d); + a_124ref_direction = + new AttrDescriptor("ref_direction",config_control_designe_direction, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_offset_curve_3d); config_control_designe_offset_curve_3d->AddExplicitAttr (a_124ref_direction); -///////// END_ENTITY offset_curve_3d + reg.AddEntity (*config_control_designe_offset_curve_3d); +///////// END_ENTITY offset_curve_3d -///////// ENTITY approval +///////// ENTITY approval - reg.AddEntity (*config_control_designe_approval); - a_125status = new AttrDescriptor("status",config_control_designe_approval_status,F,F,F,*config_control_designe_approval); + a_125status = + new AttrDescriptor("status",config_control_designe_approval_status, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_approval); config_control_designe_approval->AddExplicitAttr (a_125status); - a_126level = new AttrDescriptor("level",config_control_designt_label,F,F,F,*config_control_designe_approval); + a_126level = + new AttrDescriptor("level",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_approval); config_control_designe_approval->AddExplicitAttr (a_126level); -///////// END_ENTITY approval + reg.AddEntity (*config_control_designe_approval); +///////// END_ENTITY approval -///////// ENTITY composite_curve +///////// ENTITY composite_curve - reg.AddEntity (*config_control_designe_composite_curve); config_control_designe_composite_curve->AddSupertype(config_control_designe_bounded_curve); config_control_designe_bounded_curve->AddSubtype(config_control_designe_composite_curve); ListTypeDescriptor * t_19 = new ListTypeDescriptor; @@ -1632,21 +1428,36 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_19->Bound1(1); t_19->Bound2(2147483647); t_19->FundamentalType(LIST_TYPE); - t_19->Description("LIST [1:?] of Composite_Curve_Segment"); + t_19->Description("LIST [1:?] OF composite_curve_segment"); + t_19->OriginatingSchema(s_config_control_design); t_19->ReferentType(config_control_designe_composite_curve_segment); - a_127segments = new AttrDescriptor("segments",t_19,F,F,F,*config_control_designe_composite_curve); + a_127segments = + new AttrDescriptor("segments",t_19,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_composite_curve); config_control_designe_composite_curve->AddExplicitAttr (a_127segments); - a_128self_intersect = new AttrDescriptor("self_intersect",t_LOGICAL_TYPE,F,F,F,*config_control_designe_composite_curve); + a_128self_intersect = + new AttrDescriptor("self_intersect",t_sdaiLOGICAL, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_composite_curve); config_control_designe_composite_curve->AddExplicitAttr (a_128self_intersect); - a_129Dn_segments = new AttrDescriptor("n_segments",t_INTEGER_TYPE,F,F,T,*config_control_designe_composite_curve); + a_129Dn_segments = + new Derived_attribute("n_segments",t_sdaiINTEGER, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_composite_curve); config_control_designe_composite_curve->AddExplicitAttr (a_129Dn_segments); - a_130Dclosed_curve = new AttrDescriptor("closed_curve",t_LOGICAL_TYPE,F,F,T,*config_control_designe_composite_curve); + a_129Dn_segments->initializer_("SIZEOF(segments)"); + a_130Dclosed_curve = + new Derived_attribute("closed_curve",t_sdaiLOGICAL, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_composite_curve); config_control_designe_composite_curve->AddExplicitAttr (a_130Dclosed_curve); -///////// END_ENTITY composite_curve + a_130Dclosed_curve->initializer_("segments[n_segments].transition <> discontinuous"); + reg.AddEntity (*config_control_designe_composite_curve); +///////// END_ENTITY composite_curve -///////// ENTITY composite_curve_on_surface +///////// ENTITY composite_curve_on_surface - reg.AddEntity (*config_control_designe_composite_curve_on_surface); + config_control_designe_composite_curve_on_surface->AddSupertype_Stmt("SUPERTYPE OF (boundary_curve)"); config_control_designe_composite_curve_on_surface->AddSupertype(config_control_designe_composite_curve); config_control_designe_composite_curve->AddSubtype(config_control_designe_composite_curve_on_surface); SetTypeDescriptor * t_20 = new SetTypeDescriptor; @@ -1654,74 +1465,108 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_20->Bound1(0); t_20->Bound2(2); t_20->FundamentalType(SET_TYPE); - t_20->Description("SET [0:2] OF Surface"); + t_20->Description("SET [0:2] OF surface"); + t_20->OriginatingSchema(s_config_control_design); t_20->ReferentType(config_control_designe_surface); - a_131Dbasis_surface = new AttrDescriptor("basis_surface",t_20,F,F,T,*config_control_designe_composite_curve_on_surface); + a_131Dbasis_surface = + new Derived_attribute("basis_surface",t_20,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_composite_curve_on_surface); config_control_designe_composite_curve_on_surface->AddExplicitAttr (a_131Dbasis_surface); -///////// END_ENTITY composite_curve_on_surface + a_131Dbasis_surface->initializer_("get_basis_surface(SELF)"); + reg.AddEntity (*config_control_designe_composite_curve_on_surface); +///////// END_ENTITY composite_curve_on_surface -///////// ENTITY boundary_curve +///////// ENTITY boundary_curve - reg.AddEntity (*config_control_designe_boundary_curve); config_control_designe_boundary_curve->AddSupertype(config_control_designe_composite_curve_on_surface); config_control_designe_composite_curve_on_surface->AddSubtype(config_control_designe_boundary_curve); -///////// END_ENTITY boundary_curve + reg.AddEntity (*config_control_designe_boundary_curve); +///////// END_ENTITY boundary_curve -///////// ENTITY representation_context +///////// ENTITY representation_context - reg.AddEntity (*config_control_designe_representation_context); - a_132context_identifier = new AttrDescriptor("context_identifier",config_control_designt_identifier,F,F,F,*config_control_designe_representation_context); + a_132context_identifier = + new AttrDescriptor("context_identifier",config_control_designt_identifier, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_representation_context); config_control_designe_representation_context->AddExplicitAttr (a_132context_identifier); - a_133context_type = new AttrDescriptor("context_type",config_control_designt_text,F,F,F,*config_control_designe_representation_context); + a_133context_type = + new AttrDescriptor("context_type",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_representation_context); config_control_designe_representation_context->AddExplicitAttr (a_133context_type); SetTypeDescriptor * t_21 = new SetTypeDescriptor; t_21->AssignAggrCreator((AggregateCreator) create_EntityAggregate); // Creator function t_21->Bound1(1); t_21->Bound2(2147483647); t_21->FundamentalType(SET_TYPE); - t_21->Description("SET [1:?] OF Representation"); + t_21->Description("SET [1:?] OF representation"); + t_21->OriginatingSchema(s_config_control_design); t_21->ReferentType(config_control_designe_representation); - a_134Irepresentations_in_context = new InverseAttrDescriptor("representations_in_context",t_21,F,F,*config_control_designe_representation_context); + a_134Irepresentations_in_context = + new Inverse_attribute("representations_in_context",t_21,SCLLOG(LFalse),SCLLOG(LFalse), + *config_control_designe_representation_context); config_control_designe_representation_context->AddInverseAttr (a_134Irepresentations_in_context); -///////// END_ENTITY representation_context + a_134Irepresentations_in_context->inverted_attr_id_("context_of_items"); + a_134Irepresentations_in_context->inverted_entity_id_("representation"); +// inverse entity 3 representation + reg.AddEntity (*config_control_designe_representation_context); +///////// END_ENTITY representation_context -///////// ENTITY geometric_representation_context +///////// ENTITY geometric_representation_context - reg.AddEntity (*config_control_designe_geometric_representation_context); config_control_designe_geometric_representation_context->AddSupertype(config_control_designe_representation_context); config_control_designe_representation_context->AddSubtype(config_control_designe_geometric_representation_context); - a_135coordinate_space_dimension = new AttrDescriptor("coordinate_space_dimension",config_control_designt_dimension_count,F,F,F,*config_control_designe_geometric_representation_context); + a_135coordinate_space_dimension = + new AttrDescriptor("coordinate_space_dimension",config_control_designt_dimension_count, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_geometric_representation_context); config_control_designe_geometric_representation_context->AddExplicitAttr (a_135coordinate_space_dimension); -///////// END_ENTITY geometric_representation_context + reg.AddEntity (*config_control_designe_geometric_representation_context); +///////// END_ENTITY geometric_representation_context -///////// ENTITY action_status +///////// ENTITY action_status - reg.AddEntity (*config_control_designe_action_status); - a_136status = new AttrDescriptor("status",config_control_designt_label,F,F,F,*config_control_designe_action_status); + a_136status = + new AttrDescriptor("status",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_action_status); config_control_designe_action_status->AddExplicitAttr (a_136status); - a_137assigned_action = new AttrDescriptor("assigned_action",config_control_designe_executed_action,F,F,F,*config_control_designe_action_status); + a_137assigned_action = + new AttrDescriptor("assigned_action",config_control_designe_executed_action, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_action_status); config_control_designe_action_status->AddExplicitAttr (a_137assigned_action); -///////// END_ENTITY action_status + reg.AddEntity (*config_control_designe_action_status); +///////// END_ENTITY action_status -///////// ENTITY application_context +///////// ENTITY application_context - reg.AddEntity (*config_control_designe_application_context); - a_138application = new AttrDescriptor("application",config_control_designt_text,F,F,F,*config_control_designe_application_context); + a_138application = + new AttrDescriptor("application",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_application_context); config_control_designe_application_context->AddExplicitAttr (a_138application); SetTypeDescriptor * t_22 = new SetTypeDescriptor; t_22->AssignAggrCreator((AggregateCreator) create_EntityAggregate); // Creator function t_22->Bound1(1); t_22->Bound2(2147483647); t_22->FundamentalType(SET_TYPE); - t_22->Description("SET [1:?] OF Application_Context_Element"); + t_22->Description("SET [1:?] OF application_context_element"); + t_22->OriginatingSchema(s_config_control_design); t_22->ReferentType(config_control_designe_application_context_element); - a_139Icontext_elements = new InverseAttrDescriptor("context_elements",t_22,F,F,*config_control_designe_application_context); + a_139Icontext_elements = + new Inverse_attribute("context_elements",t_22,SCLLOG(LFalse),SCLLOG(LFalse), + *config_control_designe_application_context); config_control_designe_application_context->AddInverseAttr (a_139Icontext_elements); -///////// END_ENTITY application_context + a_139Icontext_elements->inverted_attr_id_("frame_of_reference"); + a_139Icontext_elements->inverted_entity_id_("application_context_element"); +// inverse entity 3 application_context_element + reg.AddEntity (*config_control_designe_application_context); +///////// END_ENTITY application_context -///////// ENTITY change_request +///////// ENTITY change_request - reg.AddEntity (*config_control_designe_change_request); config_control_designe_change_request->AddSupertype(config_control_designe_action_request_assignment); config_control_designe_action_request_assignment->AddSubtype(config_control_designe_change_request); SetTypeDescriptor * t_23 = new SetTypeDescriptor; @@ -1729,129 +1574,197 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_23->Bound1(1); t_23->Bound2(2147483647); t_23->FundamentalType(SET_TYPE); - t_23->Description("SET [1:?] OF Change_Request_Item"); + t_23->Description("SET [1:?] OF change_request_item"); + t_23->OriginatingSchema(s_config_control_design); t_23->ReferentType(config_control_designt_change_request_item); - a_140items = new AttrDescriptor("items",t_23,F,F,F,*config_control_designe_change_request); + a_140items = + new AttrDescriptor("items",t_23,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_change_request); config_control_designe_change_request->AddExplicitAttr (a_140items); -///////// END_ENTITY change_request + reg.AddEntity (*config_control_designe_change_request); +///////// END_ENTITY change_request -///////// ENTITY date_and_time +///////// ENTITY date_and_time - reg.AddEntity (*config_control_designe_date_and_time); - a_141date_component = new AttrDescriptor("date_component",config_control_designe_date,F,F,F,*config_control_designe_date_and_time); + a_141date_component = + new AttrDescriptor("date_component",config_control_designe_date, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_date_and_time); config_control_designe_date_and_time->AddExplicitAttr (a_141date_component); - a_142time_component = new AttrDescriptor("time_component",config_control_designe_local_time,F,F,F,*config_control_designe_date_and_time); + a_142time_component = + new AttrDescriptor("time_component",config_control_designe_local_time, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_date_and_time); config_control_designe_date_and_time->AddExplicitAttr (a_142time_component); -///////// END_ENTITY date_and_time + reg.AddEntity (*config_control_designe_date_and_time); +///////// END_ENTITY date_and_time -///////// ENTITY approval_date_time +///////// ENTITY approval_date_time - reg.AddEntity (*config_control_designe_approval_date_time); - a_143date_time = new AttrDescriptor("date_time",config_control_designt_date_time_select,F,F,F,*config_control_designe_approval_date_time); + a_143date_time = + new AttrDescriptor("date_time",config_control_designt_date_time_select, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_approval_date_time); config_control_designe_approval_date_time->AddExplicitAttr (a_143date_time); - a_144dated_approval = new AttrDescriptor("dated_approval",config_control_designe_approval,F,F,F,*config_control_designe_approval_date_time); + a_144dated_approval = + new AttrDescriptor("dated_approval",config_control_designe_approval, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_approval_date_time); config_control_designe_approval_date_time->AddExplicitAttr (a_144dated_approval); -///////// END_ENTITY approval_date_time + reg.AddEntity (*config_control_designe_approval_date_time); +///////// END_ENTITY approval_date_time -///////// ENTITY approval_role +///////// ENTITY approval_role - reg.AddEntity (*config_control_designe_approval_role); - a_145role = new AttrDescriptor("role",config_control_designt_label,F,F,F,*config_control_designe_approval_role); + a_145role = + new AttrDescriptor("role",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_approval_role); config_control_designe_approval_role->AddExplicitAttr (a_145role); -///////// END_ENTITY approval_role + reg.AddEntity (*config_control_designe_approval_role); +///////// END_ENTITY approval_role -///////// ENTITY application_context_element +///////// ENTITY application_context_element - reg.AddEntity (*config_control_designe_application_context_element); - a_146name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_application_context_element); + config_control_designe_application_context_element->AddSupertype_Stmt("SUPERTYPE OF (ONEOF (product_context,product_definition_context,product_concept_context))"); + a_146name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_application_context_element); config_control_designe_application_context_element->AddExplicitAttr (a_146name); - a_147frame_of_reference = new AttrDescriptor("frame_of_reference",config_control_designe_application_context,F,F,F,*config_control_designe_application_context_element); + a_147frame_of_reference = + new AttrDescriptor("frame_of_reference",config_control_designe_application_context, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_application_context_element); config_control_designe_application_context_element->AddExplicitAttr (a_147frame_of_reference); -///////// END_ENTITY application_context_element + reg.AddEntity (*config_control_designe_application_context_element); +///////// END_ENTITY application_context_element -///////// ENTITY product_context +///////// ENTITY product_context - reg.AddEntity (*config_control_designe_product_context); config_control_designe_product_context->AddSupertype(config_control_designe_application_context_element); config_control_designe_application_context_element->AddSubtype(config_control_designe_product_context); - a_148discipline_type = new AttrDescriptor("discipline_type",config_control_designt_label,F,F,F,*config_control_designe_product_context); + a_148discipline_type = + new AttrDescriptor("discipline_type",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_product_context); config_control_designe_product_context->AddExplicitAttr (a_148discipline_type); -///////// END_ENTITY product_context + reg.AddEntity (*config_control_designe_product_context); +///////// END_ENTITY product_context -///////// ENTITY elementary_surface +///////// ENTITY elementary_surface - reg.AddEntity (*config_control_designe_elementary_surface); + config_control_designe_elementary_surface->AddSupertype_Stmt("SUPERTYPE OF (ONEOF (plane,cylindrical_surface,conical_surface,spherical_surface,\n toroidal_surface))"); config_control_designe_elementary_surface->AddSupertype(config_control_designe_surface); config_control_designe_surface->AddSubtype(config_control_designe_elementary_surface); - a_149position = new AttrDescriptor("position",config_control_designe_axis2_placement_3d,F,F,F,*config_control_designe_elementary_surface); + a_149position = + new AttrDescriptor("position",config_control_designe_axis2_placement_3d, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_elementary_surface); config_control_designe_elementary_surface->AddExplicitAttr (a_149position); -///////// END_ENTITY elementary_surface + reg.AddEntity (*config_control_designe_elementary_surface); +///////// END_ENTITY elementary_surface -///////// ENTITY spherical_surface +///////// ENTITY spherical_surface - reg.AddEntity (*config_control_designe_spherical_surface); config_control_designe_spherical_surface->AddSupertype(config_control_designe_elementary_surface); config_control_designe_elementary_surface->AddSubtype(config_control_designe_spherical_surface); - a_150radius = new AttrDescriptor("radius",config_control_designt_positive_length_measure,F,F,F,*config_control_designe_spherical_surface); + a_150radius = + new AttrDescriptor("radius",config_control_designt_positive_length_measure, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_spherical_surface); config_control_designe_spherical_surface->AddExplicitAttr (a_150radius); -///////// END_ENTITY spherical_surface + reg.AddEntity (*config_control_designe_spherical_surface); +///////// END_ENTITY spherical_surface -///////// ENTITY application_protocol_definition +///////// ENTITY application_protocol_definition - reg.AddEntity (*config_control_designe_application_protocol_definition); - a_151status = new AttrDescriptor("status",config_control_designt_label,F,F,F,*config_control_designe_application_protocol_definition); + a_151status = + new AttrDescriptor("status",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_application_protocol_definition); config_control_designe_application_protocol_definition->AddExplicitAttr (a_151status); - a_152application_interpreted_model_schema_name = new AttrDescriptor("application_interpreted_model_schema_name",config_control_designt_label,F,F,F,*config_control_designe_application_protocol_definition); + a_152application_interpreted_model_schema_name = + new AttrDescriptor("application_interpreted_model_schema_name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_application_protocol_definition); config_control_designe_application_protocol_definition->AddExplicitAttr (a_152application_interpreted_model_schema_name); - a_153application_protocol_year = new AttrDescriptor("application_protocol_year",config_control_designt_year_number,F,F,F,*config_control_designe_application_protocol_definition); + a_153application_protocol_year = + new AttrDescriptor("application_protocol_year",config_control_designt_year_number, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_application_protocol_definition); config_control_designe_application_protocol_definition->AddExplicitAttr (a_153application_protocol_year); - a_154application = new AttrDescriptor("application",config_control_designe_application_context,F,F,F,*config_control_designe_application_protocol_definition); + a_154application = + new AttrDescriptor("application",config_control_designe_application_context, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_application_protocol_definition); config_control_designe_application_protocol_definition->AddExplicitAttr (a_154application); -///////// END_ENTITY application_protocol_definition + reg.AddEntity (*config_control_designe_application_protocol_definition); +///////// END_ENTITY application_protocol_definition -///////// ENTITY specified_higher_usage_occurrence +///////// ENTITY specified_higher_usage_occurrence - reg.AddEntity (*config_control_designe_specified_higher_usage_occurrence); config_control_designe_specified_higher_usage_occurrence->AddSupertype(config_control_designe_assembly_component_usage); config_control_designe_assembly_component_usage->AddSubtype(config_control_designe_specified_higher_usage_occurrence); - a_155upper_usage = new AttrDescriptor("upper_usage",config_control_designe_assembly_component_usage,F,T,F,*config_control_designe_specified_higher_usage_occurrence); + a_155upper_usage = + new AttrDescriptor("upper_usage",config_control_designe_assembly_component_usage, + SCLLOG(LFalse),SCLLOG(LTrue), AttrType_Explicit, + *config_control_designe_specified_higher_usage_occurrence); config_control_designe_specified_higher_usage_occurrence->AddExplicitAttr (a_155upper_usage); - a_156next_usage = new AttrDescriptor("next_usage",config_control_designe_next_assembly_usage_occurrence,F,T,F,*config_control_designe_specified_higher_usage_occurrence); + a_156next_usage = + new AttrDescriptor("next_usage",config_control_designe_next_assembly_usage_occurrence, + SCLLOG(LFalse),SCLLOG(LTrue), AttrType_Explicit, + *config_control_designe_specified_higher_usage_occurrence); config_control_designe_specified_higher_usage_occurrence->AddExplicitAttr (a_156next_usage); -///////// END_ENTITY specified_higher_usage_occurrence + reg.AddEntity (*config_control_designe_specified_higher_usage_occurrence); +///////// END_ENTITY specified_higher_usage_occurrence -///////// ENTITY product_definition_formation_with_specified_source +///////// ENTITY product_definition_formation_with_specified_source - reg.AddEntity (*config_control_designe_product_definition_formation_with_specified_source); config_control_designe_product_definition_formation_with_specified_source->AddSupertype(config_control_designe_product_definition_formation); config_control_designe_product_definition_formation->AddSubtype(config_control_designe_product_definition_formation_with_specified_source); - a_157make_or_buy = new AttrDescriptor("make_or_buy",config_control_designt_source,F,F,F,*config_control_designe_product_definition_formation_with_specified_source); + a_157make_or_buy = + new AttrDescriptor("make_or_buy",config_control_designt_source, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_product_definition_formation_with_specified_source); config_control_designe_product_definition_formation_with_specified_source->AddExplicitAttr (a_157make_or_buy); -///////// END_ENTITY product_definition_formation_with_specified_source + reg.AddEntity (*config_control_designe_product_definition_formation_with_specified_source); +///////// END_ENTITY product_definition_formation_with_specified_source -///////// ENTITY action_request_solution +///////// ENTITY action_request_solution - reg.AddEntity (*config_control_designe_action_request_solution); - a_158method = new AttrDescriptor("method",config_control_designe_action_method,F,F,F,*config_control_designe_action_request_solution); + a_158method = + new AttrDescriptor("method",config_control_designe_action_method, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_action_request_solution); config_control_designe_action_request_solution->AddExplicitAttr (a_158method); - a_159request = new AttrDescriptor("request",config_control_designe_versioned_action_request,F,F,F,*config_control_designe_action_request_solution); + a_159request = + new AttrDescriptor("request",config_control_designe_versioned_action_request, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_action_request_solution); config_control_designe_action_request_solution->AddExplicitAttr (a_159request); -///////// END_ENTITY action_request_solution + reg.AddEntity (*config_control_designe_action_request_solution); +///////// END_ENTITY action_request_solution -///////// ENTITY uncertainty_measure_with_unit +///////// ENTITY uncertainty_measure_with_unit - reg.AddEntity (*config_control_designe_uncertainty_measure_with_unit); config_control_designe_uncertainty_measure_with_unit->AddSupertype(config_control_designe_measure_with_unit); config_control_designe_measure_with_unit->AddSubtype(config_control_designe_uncertainty_measure_with_unit); - a_160name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_uncertainty_measure_with_unit); + a_160name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_uncertainty_measure_with_unit); config_control_designe_uncertainty_measure_with_unit->AddExplicitAttr (a_160name); - a_161description = new AttrDescriptor("description",config_control_designt_text,F,F,F,*config_control_designe_uncertainty_measure_with_unit); + a_161description = + new AttrDescriptor("description",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_uncertainty_measure_with_unit); config_control_designe_uncertainty_measure_with_unit->AddExplicitAttr (a_161description); -///////// END_ENTITY uncertainty_measure_with_unit + reg.AddEntity (*config_control_designe_uncertainty_measure_with_unit); +///////// END_ENTITY uncertainty_measure_with_unit -///////// ENTITY edge_based_wireframe_model +///////// ENTITY edge_based_wireframe_model - reg.AddEntity (*config_control_designe_edge_based_wireframe_model); config_control_designe_edge_based_wireframe_model->AddSupertype(config_control_designe_geometric_representation_item); config_control_designe_geometric_representation_item->AddSubtype(config_control_designe_edge_based_wireframe_model); SetTypeDescriptor * t_24 = new SetTypeDescriptor; @@ -1859,32 +1772,40 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_24->Bound1(1); t_24->Bound2(2147483647); t_24->FundamentalType(SET_TYPE); - t_24->Description("SET [1:?] OF Connected_Edge_Set"); + t_24->Description("SET [1:?] OF connected_edge_set"); + t_24->OriginatingSchema(s_config_control_design); t_24->ReferentType(config_control_designe_connected_edge_set); - a_162ebwm_boundary = new AttrDescriptor("ebwm_boundary",t_24,F,F,F,*config_control_designe_edge_based_wireframe_model); + a_162ebwm_boundary = + new AttrDescriptor("ebwm_boundary",t_24,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_edge_based_wireframe_model); config_control_designe_edge_based_wireframe_model->AddExplicitAttr (a_162ebwm_boundary); -///////// END_ENTITY edge_based_wireframe_model + reg.AddEntity (*config_control_designe_edge_based_wireframe_model); +///////// END_ENTITY edge_based_wireframe_model -///////// ENTITY path +///////// ENTITY path - reg.AddEntity (*config_control_designe_path); + config_control_designe_path->AddSupertype_Stmt("SUPERTYPE OF (ONEOF (edge_loop,oriented_path))"); config_control_designe_path->AddSupertype(config_control_designe_topological_representation_item); config_control_designe_topological_representation_item->AddSubtype(config_control_designe_path); ListTypeDescriptor * t_25 = new ListTypeDescriptor; t_25->AssignAggrCreator((AggregateCreator) create_EntityAggregate); // Creator function t_25->Bound1(1); t_25->Bound2(2147483647); - t_25->UniqueElements("T"); + t_25->UniqueElements(SCLLOG(LTrue)); t_25->FundamentalType(LIST_TYPE); - t_25->Description("UNIQUE LIST [1:?] of Oriented_Edge"); + t_25->Description("LIST [1:?] OF UNIQUE oriented_edge"); + t_25->OriginatingSchema(s_config_control_design); t_25->ReferentType(config_control_designe_oriented_edge); - a_163edge_list = new AttrDescriptor("edge_list",t_25,F,F,F,*config_control_designe_path); + a_163edge_list = + new AttrDescriptor("edge_list",t_25,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_path); config_control_designe_path->AddExplicitAttr (a_163edge_list); -///////// END_ENTITY path + reg.AddEntity (*config_control_designe_path); +///////// END_ENTITY path -///////// ENTITY connected_face_set +///////// ENTITY connected_face_set - reg.AddEntity (*config_control_designe_connected_face_set); + config_control_designe_connected_face_set->AddSupertype_Stmt("SUPERTYPE OF (ONEOF (closed_shell,open_shell))"); config_control_designe_connected_face_set->AddSupertype(config_control_designe_topological_representation_item); config_control_designe_topological_representation_item->AddSubtype(config_control_designe_connected_face_set); SetTypeDescriptor * t_26 = new SetTypeDescriptor; @@ -1892,201 +1813,298 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_26->Bound1(1); t_26->Bound2(2147483647); t_26->FundamentalType(SET_TYPE); - t_26->Description("SET [1:?] OF Face"); + t_26->Description("SET [1:?] OF face"); + t_26->OriginatingSchema(s_config_control_design); t_26->ReferentType(config_control_designe_face); - a_164cfs_faces = new AttrDescriptor("cfs_faces",t_26,F,F,F,*config_control_designe_connected_face_set); + a_164cfs_faces = + new AttrDescriptor("cfs_faces",t_26,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_connected_face_set); config_control_designe_connected_face_set->AddExplicitAttr (a_164cfs_faces); -///////// END_ENTITY connected_face_set + reg.AddEntity (*config_control_designe_connected_face_set); +///////// END_ENTITY connected_face_set -///////// ENTITY open_shell +///////// ENTITY open_shell - reg.AddEntity (*config_control_designe_open_shell); config_control_designe_open_shell->AddSupertype(config_control_designe_connected_face_set); config_control_designe_connected_face_set->AddSubtype(config_control_designe_open_shell); -///////// END_ENTITY open_shell + reg.AddEntity (*config_control_designe_open_shell); +///////// END_ENTITY open_shell -///////// ENTITY oriented_open_shell +///////// ENTITY oriented_open_shell - reg.AddEntity (*config_control_designe_oriented_open_shell); config_control_designe_oriented_open_shell->AddSupertype(config_control_designe_open_shell); config_control_designe_open_shell->AddSubtype(config_control_designe_oriented_open_shell); - a_165open_shell_element = new AttrDescriptor("open_shell_element",config_control_designe_open_shell,F,F,F,*config_control_designe_oriented_open_shell); + a_165open_shell_element = + new AttrDescriptor("open_shell_element",config_control_designe_open_shell, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_oriented_open_shell); config_control_designe_oriented_open_shell->AddExplicitAttr (a_165open_shell_element); - a_166orientation = new AttrDescriptor("orientation",t_BOOLEAN_TYPE,F,F,F,*config_control_designe_oriented_open_shell); + a_166orientation = + new AttrDescriptor("orientation",t_sdaiBOOLEAN, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_oriented_open_shell); config_control_designe_oriented_open_shell->AddExplicitAttr (a_166orientation); SetTypeDescriptor * t_27 = new SetTypeDescriptor; t_27->AssignAggrCreator((AggregateCreator) create_EntityAggregate); // Creator function t_27->Bound1(1); t_27->Bound2(2147483647); t_27->FundamentalType(SET_TYPE); - t_27->Description("SET [1:?] OF Face"); + t_27->Description("SET [1:?] OF face"); + t_27->OriginatingSchema(s_config_control_design); t_27->ReferentType(config_control_designe_face); - a_167Dconnected_face_set_cfs_faces = new AttrDescriptor("connected_face_set.cfs_faces",t_27,F,F,T,*config_control_designe_oriented_open_shell); + a_167Dconnected_face_set_cfs_faces = + new Derived_attribute("connected_face_set.cfs_faces",t_27,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_oriented_open_shell); config_control_designe_oriented_open_shell->AddExplicitAttr (a_167Dconnected_face_set_cfs_faces); -///////// END_ENTITY oriented_open_shell + a_167Dconnected_face_set_cfs_faces->initializer_("conditional_reverse(SELF.orientation,SELF.open_shell_element.cfs_faces)"); + reg.AddEntity (*config_control_designe_oriented_open_shell); +///////// END_ENTITY oriented_open_shell -///////// ENTITY solid_angle_unit +///////// ENTITY solid_angle_unit - reg.AddEntity (*config_control_designe_solid_angle_unit); config_control_designe_solid_angle_unit->AddSupertype(config_control_designe_named_unit); config_control_designe_named_unit->AddSubtype(config_control_designe_solid_angle_unit); -///////// END_ENTITY solid_angle_unit + reg.AddEntity (*config_control_designe_solid_angle_unit); +///////// END_ENTITY solid_angle_unit -///////// ENTITY coordinated_universal_time_offset +///////// ENTITY coordinated_universal_time_offset - reg.AddEntity (*config_control_designe_coordinated_universal_time_offset); - a_168hour_offset = new AttrDescriptor("hour_offset",config_control_designt_hour_in_day,F,F,F,*config_control_designe_coordinated_universal_time_offset); + a_168hour_offset = + new AttrDescriptor("hour_offset",config_control_designt_hour_in_day, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_coordinated_universal_time_offset); config_control_designe_coordinated_universal_time_offset->AddExplicitAttr (a_168hour_offset); - a_169minute_offset = new AttrDescriptor("minute_offset",config_control_designt_minute_in_hour,T,F,F,*config_control_designe_coordinated_universal_time_offset); + a_169minute_offset = + new AttrDescriptor("minute_offset",config_control_designt_minute_in_hour, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_coordinated_universal_time_offset); config_control_designe_coordinated_universal_time_offset->AddExplicitAttr (a_169minute_offset); - a_170sense = new AttrDescriptor("sense",config_control_designt_ahead_or_behind,F,F,F,*config_control_designe_coordinated_universal_time_offset); + a_170sense = + new AttrDescriptor("sense",config_control_designt_ahead_or_behind, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_coordinated_universal_time_offset); config_control_designe_coordinated_universal_time_offset->AddExplicitAttr (a_170sense); -///////// END_ENTITY coordinated_universal_time_offset + reg.AddEntity (*config_control_designe_coordinated_universal_time_offset); +///////// END_ENTITY coordinated_universal_time_offset -///////// ENTITY curve_replica +///////// ENTITY curve_replica - reg.AddEntity (*config_control_designe_curve_replica); config_control_designe_curve_replica->AddSupertype(config_control_designe_curve); config_control_designe_curve->AddSubtype(config_control_designe_curve_replica); - a_171parent_curve = new AttrDescriptor("parent_curve",config_control_designe_curve,F,F,F,*config_control_designe_curve_replica); + a_171parent_curve = + new AttrDescriptor("parent_curve",config_control_designe_curve, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_curve_replica); config_control_designe_curve_replica->AddExplicitAttr (a_171parent_curve); - a_172transformation = new AttrDescriptor("transformation",config_control_designe_cartesian_transformation_operator,F,F,F,*config_control_designe_curve_replica); + a_172transformation = + new AttrDescriptor("transformation",config_control_designe_cartesian_transformation_operator, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_curve_replica); config_control_designe_curve_replica->AddExplicitAttr (a_172transformation); -///////// END_ENTITY curve_replica + reg.AddEntity (*config_control_designe_curve_replica); +///////// END_ENTITY curve_replica -///////// ENTITY quasi_uniform_surface +///////// ENTITY quasi_uniform_surface - reg.AddEntity (*config_control_designe_quasi_uniform_surface); config_control_designe_quasi_uniform_surface->AddSupertype(config_control_designe_b_spline_surface); config_control_designe_b_spline_surface->AddSubtype(config_control_designe_quasi_uniform_surface); -///////// END_ENTITY quasi_uniform_surface + reg.AddEntity (*config_control_designe_quasi_uniform_surface); +///////// END_ENTITY quasi_uniform_surface -///////// ENTITY surface_curve +///////// ENTITY surface_curve - reg.AddEntity (*config_control_designe_surface_curve); + config_control_designe_surface_curve->AddSupertype_Stmt("SUPERTYPE OF (ONEOF (intersection_curve,seam_curve))"); config_control_designe_surface_curve->AddSupertype(config_control_designe_curve); config_control_designe_curve->AddSubtype(config_control_designe_surface_curve); - a_173curve_3d = new AttrDescriptor("curve_3d",config_control_designe_curve,F,F,F,*config_control_designe_surface_curve); + a_173curve_3d = + new AttrDescriptor("curve_3d",config_control_designe_curve, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_surface_curve); config_control_designe_surface_curve->AddExplicitAttr (a_173curve_3d); ListTypeDescriptor * t_28 = new ListTypeDescriptor; t_28->AssignAggrCreator((AggregateCreator) create_SdaiPcurve_or_surfaces); // Creator function t_28->Bound1(1); t_28->Bound2(2); t_28->FundamentalType(LIST_TYPE); - t_28->Description("LIST [1:2] of Pcurve_Or_Surface"); + t_28->Description("LIST [1:2] OF pcurve_or_surface"); + t_28->OriginatingSchema(s_config_control_design); t_28->ReferentType(config_control_designt_pcurve_or_surface); - a_174associated_geometry = new AttrDescriptor("associated_geometry",t_28,F,F,F,*config_control_designe_surface_curve); + a_174associated_geometry = + new AttrDescriptor("associated_geometry",t_28,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_surface_curve); config_control_designe_surface_curve->AddExplicitAttr (a_174associated_geometry); - a_175master_representation = new AttrDescriptor("master_representation",config_control_designt_preferred_surface_curve_representation,F,F,F,*config_control_designe_surface_curve); + a_175master_representation = + new AttrDescriptor("master_representation",config_control_designt_preferred_surface_curve_representation, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_surface_curve); config_control_designe_surface_curve->AddExplicitAttr (a_175master_representation); SetTypeDescriptor * t_29 = new SetTypeDescriptor; t_29->AssignAggrCreator((AggregateCreator) create_EntityAggregate); // Creator function t_29->Bound1(1); t_29->Bound2(2); t_29->FundamentalType(SET_TYPE); - t_29->Description("SET [1:2] OF Surface"); + t_29->Description("SET [1:2] OF surface"); + t_29->OriginatingSchema(s_config_control_design); t_29->ReferentType(config_control_designe_surface); - a_176Dbasis_surface = new AttrDescriptor("basis_surface",t_29,F,F,T,*config_control_designe_surface_curve); + a_176Dbasis_surface = + new Derived_attribute("basis_surface",t_29,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_surface_curve); config_control_designe_surface_curve->AddExplicitAttr (a_176Dbasis_surface); -///////// END_ENTITY surface_curve + a_176Dbasis_surface->initializer_("get_basis_surface(SELF)"); + reg.AddEntity (*config_control_designe_surface_curve); +///////// END_ENTITY surface_curve -///////// ENTITY action_request_status +///////// ENTITY action_request_status - reg.AddEntity (*config_control_designe_action_request_status); - a_177status = new AttrDescriptor("status",config_control_designt_label,F,F,F,*config_control_designe_action_request_status); + a_177status = + new AttrDescriptor("status",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_action_request_status); config_control_designe_action_request_status->AddExplicitAttr (a_177status); - a_178assigned_request = new AttrDescriptor("assigned_request",config_control_designe_versioned_action_request,F,F,F,*config_control_designe_action_request_status); + a_178assigned_request = + new AttrDescriptor("assigned_request",config_control_designe_versioned_action_request, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_action_request_status); config_control_designe_action_request_status->AddExplicitAttr (a_178assigned_request); -///////// END_ENTITY action_request_status + reg.AddEntity (*config_control_designe_action_request_status); +///////// END_ENTITY action_request_status -///////// ENTITY composite_curve_segment +///////// ENTITY composite_curve_segment - reg.AddEntity (*config_control_designe_composite_curve_segment); - a_179transition = new AttrDescriptor("transition",config_control_designt_transition_code,F,F,F,*config_control_designe_composite_curve_segment); + a_179transition = + new AttrDescriptor("transition",config_control_designt_transition_code, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_composite_curve_segment); config_control_designe_composite_curve_segment->AddExplicitAttr (a_179transition); - a_180same_sense = new AttrDescriptor("same_sense",t_BOOLEAN_TYPE,F,F,F,*config_control_designe_composite_curve_segment); + a_180same_sense = + new AttrDescriptor("same_sense",t_sdaiBOOLEAN, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_composite_curve_segment); config_control_designe_composite_curve_segment->AddExplicitAttr (a_180same_sense); - a_181parent_curve = new AttrDescriptor("parent_curve",config_control_designe_curve,F,F,F,*config_control_designe_composite_curve_segment); + a_181parent_curve = + new AttrDescriptor("parent_curve",config_control_designe_curve, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_composite_curve_segment); config_control_designe_composite_curve_segment->AddExplicitAttr (a_181parent_curve); BagTypeDescriptor * t_30 = new BagTypeDescriptor; t_30->AssignAggrCreator((AggregateCreator) create_EntityAggregate); // Creator function t_30->Bound1(1); t_30->Bound2(2147483647); t_30->FundamentalType(BAG_TYPE); - t_30->Description("BAG [1:?] OF Composite_Curve"); + t_30->Description("BAG [1:?] OF composite_curve"); + t_30->OriginatingSchema(s_config_control_design); t_30->ReferentType(config_control_designe_composite_curve); - a_182Iusing_curves = new InverseAttrDescriptor("using_curves",t_30,F,F,*config_control_designe_composite_curve_segment); + a_182Iusing_curves = + new Inverse_attribute("using_curves",t_30,SCLLOG(LFalse),SCLLOG(LFalse), + *config_control_designe_composite_curve_segment); config_control_designe_composite_curve_segment->AddInverseAttr (a_182Iusing_curves); -///////// END_ENTITY composite_curve_segment + a_182Iusing_curves->inverted_attr_id_("segments"); + a_182Iusing_curves->inverted_entity_id_("composite_curve"); +// inverse entity 3 composite_curve + reg.AddEntity (*config_control_designe_composite_curve_segment); +///////// END_ENTITY composite_curve_segment -///////// ENTITY reparametrised_composite_curve_segment +///////// ENTITY reparametrised_composite_curve_segment - reg.AddEntity (*config_control_designe_reparametrised_composite_curve_segment); config_control_designe_reparametrised_composite_curve_segment->AddSupertype(config_control_designe_composite_curve_segment); config_control_designe_composite_curve_segment->AddSubtype(config_control_designe_reparametrised_composite_curve_segment); - a_183param_length = new AttrDescriptor("param_length",config_control_designt_parameter_value,F,F,F,*config_control_designe_reparametrised_composite_curve_segment); + a_183param_length = + new AttrDescriptor("param_length",config_control_designt_parameter_value, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_reparametrised_composite_curve_segment); config_control_designe_reparametrised_composite_curve_segment->AddExplicitAttr (a_183param_length); -///////// END_ENTITY reparametrised_composite_curve_segment + reg.AddEntity (*config_control_designe_reparametrised_composite_curve_segment); +///////// END_ENTITY reparametrised_composite_curve_segment -///////// ENTITY representation_relationship +///////// ENTITY representation_relationship - reg.AddEntity (*config_control_designe_representation_relationship); - a_184name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_representation_relationship); + a_184name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_representation_relationship); config_control_designe_representation_relationship->AddExplicitAttr (a_184name); - a_185description = new AttrDescriptor("description",config_control_designt_text,F,F,F,*config_control_designe_representation_relationship); + a_185description = + new AttrDescriptor("description",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_representation_relationship); config_control_designe_representation_relationship->AddExplicitAttr (a_185description); - a_186rep_1 = new AttrDescriptor("rep_1",config_control_designe_representation,F,F,F,*config_control_designe_representation_relationship); + a_186rep_1 = + new AttrDescriptor("rep_1",config_control_designe_representation, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_representation_relationship); config_control_designe_representation_relationship->AddExplicitAttr (a_186rep_1); - a_187rep_2 = new AttrDescriptor("rep_2",config_control_designe_representation,F,F,F,*config_control_designe_representation_relationship); + a_187rep_2 = + new AttrDescriptor("rep_2",config_control_designe_representation, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_representation_relationship); config_control_designe_representation_relationship->AddExplicitAttr (a_187rep_2); -///////// END_ENTITY representation_relationship + reg.AddEntity (*config_control_designe_representation_relationship); +///////// END_ENTITY representation_relationship -///////// ENTITY representation_relationship_with_transformation +///////// ENTITY representation_relationship_with_transformation - reg.AddEntity (*config_control_designe_representation_relationship_with_transformation); config_control_designe_representation_relationship_with_transformation->AddSupertype(config_control_designe_representation_relationship); config_control_designe_representation_relationship->AddSubtype(config_control_designe_representation_relationship_with_transformation); - a_188transformation_operator = new AttrDescriptor("transformation_operator",config_control_designt_transformation,F,F,F,*config_control_designe_representation_relationship_with_transformation); + a_188transformation_operator = + new AttrDescriptor("transformation_operator",config_control_designt_transformation, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_representation_relationship_with_transformation); config_control_designe_representation_relationship_with_transformation->AddExplicitAttr (a_188transformation_operator); -///////// END_ENTITY representation_relationship_with_transformation + reg.AddEntity (*config_control_designe_representation_relationship_with_transformation); +///////// END_ENTITY representation_relationship_with_transformation -///////// ENTITY person_and_organization_role +///////// ENTITY person_and_organization_role - reg.AddEntity (*config_control_designe_person_and_organization_role); - a_189name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_person_and_organization_role); + a_189name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_person_and_organization_role); config_control_designe_person_and_organization_role->AddExplicitAttr (a_189name); -///////// END_ENTITY person_and_organization_role + reg.AddEntity (*config_control_designe_person_and_organization_role); +///////// END_ENTITY person_and_organization_role -///////// ENTITY quasi_uniform_curve +///////// ENTITY quasi_uniform_curve - reg.AddEntity (*config_control_designe_quasi_uniform_curve); config_control_designe_quasi_uniform_curve->AddSupertype(config_control_designe_b_spline_curve); config_control_designe_b_spline_curve->AddSubtype(config_control_designe_quasi_uniform_curve); -///////// END_ENTITY quasi_uniform_curve + reg.AddEntity (*config_control_designe_quasi_uniform_curve); +///////// END_ENTITY quasi_uniform_curve -///////// ENTITY swept_surface +///////// ENTITY swept_surface - reg.AddEntity (*config_control_designe_swept_surface); + config_control_designe_swept_surface->AddSupertype_Stmt("SUPERTYPE OF (ONEOF (surface_of_linear_extrusion,surface_of_revolution))"); config_control_designe_swept_surface->AddSupertype(config_control_designe_surface); config_control_designe_surface->AddSubtype(config_control_designe_swept_surface); - a_190swept_curve = new AttrDescriptor("swept_curve",config_control_designe_curve,F,F,F,*config_control_designe_swept_surface); + a_190swept_curve = + new AttrDescriptor("swept_curve",config_control_designe_curve, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_swept_surface); config_control_designe_swept_surface->AddExplicitAttr (a_190swept_curve); -///////// END_ENTITY swept_surface + reg.AddEntity (*config_control_designe_swept_surface); +///////// END_ENTITY swept_surface -///////// ENTITY property_definition +///////// ENTITY property_definition - reg.AddEntity (*config_control_designe_property_definition); - a_191name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_property_definition); + a_191name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_property_definition); config_control_designe_property_definition->AddExplicitAttr (a_191name); - a_192description = new AttrDescriptor("description",config_control_designt_text,F,F,F,*config_control_designe_property_definition); + a_192description = + new AttrDescriptor("description",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_property_definition); config_control_designe_property_definition->AddExplicitAttr (a_192description); - a_193definition = new AttrDescriptor("definition",config_control_designt_characterized_definition,F,F,F,*config_control_designe_property_definition); + a_193definition = + new AttrDescriptor("definition",config_control_designt_characterized_definition, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_property_definition); config_control_designe_property_definition->AddExplicitAttr (a_193definition); -///////// END_ENTITY property_definition + reg.AddEntity (*config_control_designe_property_definition); +///////// END_ENTITY property_definition -///////// ENTITY global_uncertainty_assigned_context +///////// ENTITY global_uncertainty_assigned_context - reg.AddEntity (*config_control_designe_global_uncertainty_assigned_context); config_control_designe_global_uncertainty_assigned_context->AddSupertype(config_control_designe_representation_context); config_control_designe_representation_context->AddSubtype(config_control_designe_global_uncertainty_assigned_context); SetTypeDescriptor * t_31 = new SetTypeDescriptor; @@ -2094,37 +2112,55 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_31->Bound1(1); t_31->Bound2(2147483647); t_31->FundamentalType(SET_TYPE); - t_31->Description("SET [1:?] OF Uncertainty_Measure_With_Unit"); + t_31->Description("SET [1:?] OF uncertainty_measure_with_unit"); + t_31->OriginatingSchema(s_config_control_design); t_31->ReferentType(config_control_designe_uncertainty_measure_with_unit); - a_194uncertainty = new AttrDescriptor("uncertainty",t_31,F,F,F,*config_control_designe_global_uncertainty_assigned_context); + a_194uncertainty = + new AttrDescriptor("uncertainty",t_31,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_global_uncertainty_assigned_context); config_control_designe_global_uncertainty_assigned_context->AddExplicitAttr (a_194uncertainty); -///////// END_ENTITY global_uncertainty_assigned_context + reg.AddEntity (*config_control_designe_global_uncertainty_assigned_context); +///////// END_ENTITY global_uncertainty_assigned_context -///////// ENTITY organization_relationship +///////// ENTITY organization_relationship - reg.AddEntity (*config_control_designe_organization_relationship); - a_195name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_organization_relationship); + a_195name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_organization_relationship); config_control_designe_organization_relationship->AddExplicitAttr (a_195name); - a_196description = new AttrDescriptor("description",config_control_designt_text,F,F,F,*config_control_designe_organization_relationship); + a_196description = + new AttrDescriptor("description",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_organization_relationship); config_control_designe_organization_relationship->AddExplicitAttr (a_196description); - a_197relating_organization = new AttrDescriptor("relating_organization",config_control_designe_organization,F,F,F,*config_control_designe_organization_relationship); + a_197relating_organization = + new AttrDescriptor("relating_organization",config_control_designe_organization, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_organization_relationship); config_control_designe_organization_relationship->AddExplicitAttr (a_197relating_organization); - a_198related_organization = new AttrDescriptor("related_organization",config_control_designe_organization,F,F,F,*config_control_designe_organization_relationship); + a_198related_organization = + new AttrDescriptor("related_organization",config_control_designe_organization, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_organization_relationship); config_control_designe_organization_relationship->AddExplicitAttr (a_198related_organization); -///////// END_ENTITY organization_relationship + reg.AddEntity (*config_control_designe_organization_relationship); +///////// END_ENTITY organization_relationship -///////// ENTITY parabola +///////// ENTITY parabola - reg.AddEntity (*config_control_designe_parabola); config_control_designe_parabola->AddSupertype(config_control_designe_conic); config_control_designe_conic->AddSubtype(config_control_designe_parabola); - a_199focal_dist = new AttrDescriptor("focal_dist",config_control_designt_length_measure,F,F,F,*config_control_designe_parabola); + a_199focal_dist = + new AttrDescriptor("focal_dist",config_control_designt_length_measure, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_parabola); config_control_designe_parabola->AddExplicitAttr (a_199focal_dist); -///////// END_ENTITY parabola + reg.AddEntity (*config_control_designe_parabola); +///////// END_ENTITY parabola -///////// ENTITY rectangular_composite_surface +///////// ENTITY rectangular_composite_surface - reg.AddEntity (*config_control_designe_rectangular_composite_surface); config_control_designe_rectangular_composite_surface->AddSupertype(config_control_designe_bounded_surface); config_control_designe_bounded_surface->AddSubtype(config_control_designe_rectangular_composite_surface); ListTypeDescriptor * t_32 = new ListTypeDescriptor; @@ -2132,46 +2168,67 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_32->Bound1(1); t_32->Bound2(2147483647); t_32->FundamentalType(LIST_TYPE); - t_32->Description("LIST [1:?] of LIST [1:?] of Surface_Patch"); + t_32->Description("LIST [1:?] OF LIST [1:?] OF surface_patch"); + t_32->OriginatingSchema(s_config_control_design); ListTypeDescriptor * t_33 = new ListTypeDescriptor; t_33->AssignAggrCreator((AggregateCreator) create_EntityAggregate); // Creator function t_33->Bound1(1); t_33->Bound2(2147483647); t_33->FundamentalType(LIST_TYPE); - t_33->Description("LIST [1:?] of Surface_Patch"); + t_33->Description("LIST [1:?] OF surface_patch"); + t_33->OriginatingSchema(s_config_control_design); t_33->ReferentType(config_control_designe_surface_patch); t_32->ReferentType(t_33); - a_200segments = new AttrDescriptor("segments",t_32,F,F,F,*config_control_designe_rectangular_composite_surface); + a_200segments = + new AttrDescriptor("segments",t_32,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_rectangular_composite_surface); config_control_designe_rectangular_composite_surface->AddExplicitAttr (a_200segments); - a_201Dn_u = new AttrDescriptor("n_u",t_INTEGER_TYPE,F,F,T,*config_control_designe_rectangular_composite_surface); + a_201Dn_u = + new Derived_attribute("n_u",t_sdaiINTEGER, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_rectangular_composite_surface); config_control_designe_rectangular_composite_surface->AddExplicitAttr (a_201Dn_u); - a_202Dn_v = new AttrDescriptor("n_v",t_INTEGER_TYPE,F,F,T,*config_control_designe_rectangular_composite_surface); + a_201Dn_u->initializer_("SIZEOF(segments)"); + a_202Dn_v = + new Derived_attribute("n_v",t_sdaiINTEGER, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_rectangular_composite_surface); config_control_designe_rectangular_composite_surface->AddExplicitAttr (a_202Dn_v); -///////// END_ENTITY rectangular_composite_surface + a_202Dn_v->initializer_("SIZEOF(segments[1])"); + reg.AddEntity (*config_control_designe_rectangular_composite_surface); +///////// END_ENTITY rectangular_composite_surface -///////// ENTITY lot_effectivity +///////// ENTITY lot_effectivity - reg.AddEntity (*config_control_designe_lot_effectivity); config_control_designe_lot_effectivity->AddSupertype(config_control_designe_effectivity); config_control_designe_effectivity->AddSubtype(config_control_designe_lot_effectivity); - a_203effectivity_lot_id = new AttrDescriptor("effectivity_lot_id",config_control_designt_identifier,F,F,F,*config_control_designe_lot_effectivity); + a_203effectivity_lot_id = + new AttrDescriptor("effectivity_lot_id",config_control_designt_identifier, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_lot_effectivity); config_control_designe_lot_effectivity->AddExplicitAttr (a_203effectivity_lot_id); - a_204effectivity_lot_size = new AttrDescriptor("effectivity_lot_size",config_control_designe_measure_with_unit,F,F,F,*config_control_designe_lot_effectivity); + a_204effectivity_lot_size = + new AttrDescriptor("effectivity_lot_size",config_control_designe_measure_with_unit, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_lot_effectivity); config_control_designe_lot_effectivity->AddExplicitAttr (a_204effectivity_lot_size); -///////// END_ENTITY lot_effectivity + reg.AddEntity (*config_control_designe_lot_effectivity); +///////// END_ENTITY lot_effectivity -///////// ENTITY surface_of_linear_extrusion +///////// ENTITY surface_of_linear_extrusion - reg.AddEntity (*config_control_designe_surface_of_linear_extrusion); config_control_designe_surface_of_linear_extrusion->AddSupertype(config_control_designe_swept_surface); config_control_designe_swept_surface->AddSubtype(config_control_designe_surface_of_linear_extrusion); - a_205extrusion_axis = new AttrDescriptor("extrusion_axis",config_control_designe_vector,F,F,F,*config_control_designe_surface_of_linear_extrusion); + a_205extrusion_axis = + new AttrDescriptor("extrusion_axis",config_control_designe_vector, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_surface_of_linear_extrusion); config_control_designe_surface_of_linear_extrusion->AddExplicitAttr (a_205extrusion_axis); -///////// END_ENTITY surface_of_linear_extrusion + reg.AddEntity (*config_control_designe_surface_of_linear_extrusion); +///////// END_ENTITY surface_of_linear_extrusion -///////// ENTITY shell_based_surface_model +///////// ENTITY shell_based_surface_model - reg.AddEntity (*config_control_designe_shell_based_surface_model); config_control_designe_shell_based_surface_model->AddSupertype(config_control_designe_geometric_representation_item); config_control_designe_geometric_representation_item->AddSubtype(config_control_designe_shell_based_surface_model); SetTypeDescriptor * t_34 = new SetTypeDescriptor; @@ -2179,317 +2236,476 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_34->Bound1(1); t_34->Bound2(2147483647); t_34->FundamentalType(SET_TYPE); - t_34->Description("SET [1:?] OF Shell"); + t_34->Description("SET [1:?] OF shell"); + t_34->OriginatingSchema(s_config_control_design); t_34->ReferentType(config_control_designt_shell); - a_206sbsm_boundary = new AttrDescriptor("sbsm_boundary",t_34,F,F,F,*config_control_designe_shell_based_surface_model); + a_206sbsm_boundary = + new AttrDescriptor("sbsm_boundary",t_34,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_shell_based_surface_model); config_control_designe_shell_based_surface_model->AddExplicitAttr (a_206sbsm_boundary); -///////// END_ENTITY shell_based_surface_model + reg.AddEntity (*config_control_designe_shell_based_surface_model); +///////// END_ENTITY shell_based_surface_model -///////// ENTITY uniform_curve +///////// ENTITY uniform_curve - reg.AddEntity (*config_control_designe_uniform_curve); config_control_designe_uniform_curve->AddSupertype(config_control_designe_b_spline_curve); config_control_designe_b_spline_curve->AddSubtype(config_control_designe_uniform_curve); -///////// END_ENTITY uniform_curve + reg.AddEntity (*config_control_designe_uniform_curve); +///////// END_ENTITY uniform_curve -///////// ENTITY bezier_curve +///////// ENTITY bezier_curve - reg.AddEntity (*config_control_designe_bezier_curve); config_control_designe_bezier_curve->AddSupertype(config_control_designe_b_spline_curve); config_control_designe_b_spline_curve->AddSubtype(config_control_designe_bezier_curve); -///////// END_ENTITY bezier_curve + reg.AddEntity (*config_control_designe_bezier_curve); +///////// END_ENTITY bezier_curve -///////// ENTITY loop +///////// ENTITY loop - reg.AddEntity (*config_control_designe_loop); + config_control_designe_loop->AddSupertype_Stmt("SUPERTYPE OF (ONEOF (vertex_loop,edge_loop,poly_loop))"); config_control_designe_loop->AddSupertype(config_control_designe_topological_representation_item); config_control_designe_topological_representation_item->AddSubtype(config_control_designe_loop); -///////// END_ENTITY loop + reg.AddEntity (*config_control_designe_loop); +///////// END_ENTITY loop -///////// ENTITY edge_loop +///////// ENTITY edge_loop - reg.AddEntity (*config_control_designe_edge_loop); config_control_designe_edge_loop->AddSupertype(config_control_designe_loop); config_control_designe_loop->AddSubtype(config_control_designe_edge_loop); config_control_designe_edge_loop->AddSupertype(config_control_designe_path); config_control_designe_path->AddSubtype(config_control_designe_edge_loop); - a_207Dne = new AttrDescriptor("ne",t_INTEGER_TYPE,F,F,T,*config_control_designe_edge_loop); + a_207Dne = + new Derived_attribute("ne",t_sdaiINTEGER, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_edge_loop); config_control_designe_edge_loop->AddExplicitAttr (a_207Dne); -///////// END_ENTITY edge_loop + a_207Dne->initializer_("SIZEOF(SELF\\path.edge_list)"); + reg.AddEntity (*config_control_designe_edge_loop); +///////// END_ENTITY edge_loop -///////// ENTITY date +///////// ENTITY date - reg.AddEntity (*config_control_designe_date); - a_208year_component = new AttrDescriptor("year_component",config_control_designt_year_number,F,F,F,*config_control_designe_date); + config_control_designe_date->AddSupertype_Stmt("SUPERTYPE OF (ONEOF (calendar_date,ordinal_date,week_of_year_and_day_date))"); + a_208year_component = + new AttrDescriptor("year_component",config_control_designt_year_number, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_date); config_control_designe_date->AddExplicitAttr (a_208year_component); -///////// END_ENTITY date + reg.AddEntity (*config_control_designe_date); +///////// END_ENTITY date -///////// ENTITY calendar_date +///////// ENTITY calendar_date - reg.AddEntity (*config_control_designe_calendar_date); config_control_designe_calendar_date->AddSupertype(config_control_designe_date); config_control_designe_date->AddSubtype(config_control_designe_calendar_date); - a_209day_component = new AttrDescriptor("day_component",config_control_designt_day_in_month_number,F,F,F,*config_control_designe_calendar_date); + a_209day_component = + new AttrDescriptor("day_component",config_control_designt_day_in_month_number, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_calendar_date); config_control_designe_calendar_date->AddExplicitAttr (a_209day_component); - a_210month_component = new AttrDescriptor("month_component",config_control_designt_month_in_year_number,F,F,F,*config_control_designe_calendar_date); + a_210month_component = + new AttrDescriptor("month_component",config_control_designt_month_in_year_number, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_calendar_date); config_control_designe_calendar_date->AddExplicitAttr (a_210month_component); -///////// END_ENTITY calendar_date + reg.AddEntity (*config_control_designe_calendar_date); +///////// END_ENTITY calendar_date -///////// ENTITY toroidal_surface +///////// ENTITY toroidal_surface - reg.AddEntity (*config_control_designe_toroidal_surface); config_control_designe_toroidal_surface->AddSupertype(config_control_designe_elementary_surface); config_control_designe_elementary_surface->AddSubtype(config_control_designe_toroidal_surface); - a_211major_radius = new AttrDescriptor("major_radius",config_control_designt_positive_length_measure,F,F,F,*config_control_designe_toroidal_surface); + a_211major_radius = + new AttrDescriptor("major_radius",config_control_designt_positive_length_measure, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_toroidal_surface); config_control_designe_toroidal_surface->AddExplicitAttr (a_211major_radius); - a_212minor_radius = new AttrDescriptor("minor_radius",config_control_designt_positive_length_measure,F,F,F,*config_control_designe_toroidal_surface); + a_212minor_radius = + new AttrDescriptor("minor_radius",config_control_designt_positive_length_measure, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_toroidal_surface); config_control_designe_toroidal_surface->AddExplicitAttr (a_212minor_radius); -///////// END_ENTITY toroidal_surface + reg.AddEntity (*config_control_designe_toroidal_surface); +///////// END_ENTITY toroidal_surface -///////// ENTITY promissory_usage_occurrence +///////// ENTITY promissory_usage_occurrence - reg.AddEntity (*config_control_designe_promissory_usage_occurrence); config_control_designe_promissory_usage_occurrence->AddSupertype(config_control_designe_assembly_component_usage); config_control_designe_assembly_component_usage->AddSubtype(config_control_designe_promissory_usage_occurrence); -///////// END_ENTITY promissory_usage_occurrence + reg.AddEntity (*config_control_designe_promissory_usage_occurrence); +///////// END_ENTITY promissory_usage_occurrence -///////// ENTITY approval_assignment +///////// ENTITY approval_assignment - reg.AddEntity (*config_control_designe_approval_assignment); - a_213assigned_approval = new AttrDescriptor("assigned_approval",config_control_designe_approval,F,F,F,*config_control_designe_approval_assignment); + config_control_designe_approval_assignment->AddSupertype_Stmt("ABSTRACT SUPERTYPE"); + a_213assigned_approval = + new AttrDescriptor("assigned_approval",config_control_designe_approval, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_approval_assignment); config_control_designe_approval_assignment->AddExplicitAttr (a_213assigned_approval); -///////// END_ENTITY approval_assignment + reg.AddEntity (*config_control_designe_approval_assignment); +///////// END_ENTITY approval_assignment -///////// ENTITY configuration_item +///////// ENTITY configuration_item - reg.AddEntity (*config_control_designe_configuration_item); - a_214id = new AttrDescriptor("id",config_control_designt_identifier,F,T,F,*config_control_designe_configuration_item); + a_214id = + new AttrDescriptor("id",config_control_designt_identifier, + SCLLOG(LFalse),SCLLOG(LTrue), AttrType_Explicit, + *config_control_designe_configuration_item); config_control_designe_configuration_item->AddExplicitAttr (a_214id); - a_215name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_configuration_item); + a_215name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_configuration_item); config_control_designe_configuration_item->AddExplicitAttr (a_215name); - a_216description = new AttrDescriptor("description",config_control_designt_text,T,F,F,*config_control_designe_configuration_item); + a_216description = + new AttrDescriptor("description",config_control_designt_text, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_configuration_item); config_control_designe_configuration_item->AddExplicitAttr (a_216description); - a_217item_concept = new AttrDescriptor("item_concept",config_control_designe_product_concept,F,F,F,*config_control_designe_configuration_item); + a_217item_concept = + new AttrDescriptor("item_concept",config_control_designe_product_concept, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_configuration_item); config_control_designe_configuration_item->AddExplicitAttr (a_217item_concept); - a_218purpose = new AttrDescriptor("purpose",config_control_designt_label,T,F,F,*config_control_designe_configuration_item); + a_218purpose = + new AttrDescriptor("purpose",config_control_designt_label, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_configuration_item); config_control_designe_configuration_item->AddExplicitAttr (a_218purpose); -///////// END_ENTITY configuration_item + reg.AddEntity (*config_control_designe_configuration_item); +///////// END_ENTITY configuration_item -///////// ENTITY contract_assignment +///////// ENTITY contract_assignment - reg.AddEntity (*config_control_designe_contract_assignment); - a_219assigned_contract = new AttrDescriptor("assigned_contract",config_control_designe_contract,F,F,F,*config_control_designe_contract_assignment); + config_control_designe_contract_assignment->AddSupertype_Stmt("ABSTRACT SUPERTYPE"); + a_219assigned_contract = + new AttrDescriptor("assigned_contract",config_control_designe_contract, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_contract_assignment); config_control_designe_contract_assignment->AddExplicitAttr (a_219assigned_contract); -///////// END_ENTITY contract_assignment + reg.AddEntity (*config_control_designe_contract_assignment); +///////// END_ENTITY contract_assignment -///////// ENTITY vector +///////// ENTITY vector - reg.AddEntity (*config_control_designe_vector); config_control_designe_vector->AddSupertype(config_control_designe_geometric_representation_item); config_control_designe_geometric_representation_item->AddSubtype(config_control_designe_vector); - a_220orientation = new AttrDescriptor("orientation",config_control_designe_direction,F,F,F,*config_control_designe_vector); + a_220orientation = + new AttrDescriptor("orientation",config_control_designe_direction, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_vector); config_control_designe_vector->AddExplicitAttr (a_220orientation); - a_221magnitude = new AttrDescriptor("Magnitude",config_control_designt_length_measure,F,F,F,*config_control_designe_vector); + a_221magnitude = + new AttrDescriptor("magnitude",config_control_designt_length_measure, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_vector); config_control_designe_vector->AddExplicitAttr (a_221magnitude); -///////// END_ENTITY vector + reg.AddEntity (*config_control_designe_vector); +///////// END_ENTITY vector -///////// ENTITY intersection_curve +///////// ENTITY intersection_curve - reg.AddEntity (*config_control_designe_intersection_curve); config_control_designe_intersection_curve->AddSupertype(config_control_designe_surface_curve); config_control_designe_surface_curve->AddSubtype(config_control_designe_intersection_curve); -///////// END_ENTITY intersection_curve + reg.AddEntity (*config_control_designe_intersection_curve); +///////// END_ENTITY intersection_curve -///////// ENTITY trimmed_curve +///////// ENTITY trimmed_curve - reg.AddEntity (*config_control_designe_trimmed_curve); config_control_designe_trimmed_curve->AddSupertype(config_control_designe_bounded_curve); config_control_designe_bounded_curve->AddSubtype(config_control_designe_trimmed_curve); - a_222basis_curve = new AttrDescriptor("basis_curve",config_control_designe_curve,F,F,F,*config_control_designe_trimmed_curve); + a_222basis_curve = + new AttrDescriptor("basis_curve",config_control_designe_curve, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_trimmed_curve); config_control_designe_trimmed_curve->AddExplicitAttr (a_222basis_curve); SetTypeDescriptor * t_35 = new SetTypeDescriptor; t_35->AssignAggrCreator((AggregateCreator) create_SdaiTrimming_selects); // Creator function t_35->Bound1(1); t_35->Bound2(2); t_35->FundamentalType(SET_TYPE); - t_35->Description("SET [1:2] OF Trimming_Select"); + t_35->Description("SET [1:2] OF trimming_select"); + t_35->OriginatingSchema(s_config_control_design); t_35->ReferentType(config_control_designt_trimming_select); - a_223trim_1 = new AttrDescriptor("trim_1",t_35,F,F,F,*config_control_designe_trimmed_curve); + a_223trim_1 = + new AttrDescriptor("trim_1",t_35,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_trimmed_curve); config_control_designe_trimmed_curve->AddExplicitAttr (a_223trim_1); SetTypeDescriptor * t_36 = new SetTypeDescriptor; t_36->AssignAggrCreator((AggregateCreator) create_SdaiTrimming_selects); // Creator function t_36->Bound1(1); t_36->Bound2(2); t_36->FundamentalType(SET_TYPE); - t_36->Description("SET [1:2] OF Trimming_Select"); + t_36->Description("SET [1:2] OF trimming_select"); + t_36->OriginatingSchema(s_config_control_design); t_36->ReferentType(config_control_designt_trimming_select); - a_224trim_2 = new AttrDescriptor("trim_2",t_36,F,F,F,*config_control_designe_trimmed_curve); + a_224trim_2 = + new AttrDescriptor("trim_2",t_36,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_trimmed_curve); config_control_designe_trimmed_curve->AddExplicitAttr (a_224trim_2); - a_225sense_agreement = new AttrDescriptor("sense_agreement",t_BOOLEAN_TYPE,F,F,F,*config_control_designe_trimmed_curve); + a_225sense_agreement = + new AttrDescriptor("sense_agreement",t_sdaiBOOLEAN, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_trimmed_curve); config_control_designe_trimmed_curve->AddExplicitAttr (a_225sense_agreement); - a_226master_representation = new AttrDescriptor("master_representation",config_control_designt_trimming_preference,F,F,F,*config_control_designe_trimmed_curve); + a_226master_representation = + new AttrDescriptor("master_representation",config_control_designt_trimming_preference, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_trimmed_curve); config_control_designe_trimmed_curve->AddExplicitAttr (a_226master_representation); -///////// END_ENTITY trimmed_curve + reg.AddEntity (*config_control_designe_trimmed_curve); +///////// END_ENTITY trimmed_curve -///////// ENTITY product_definition_context +///////// ENTITY product_definition_context - reg.AddEntity (*config_control_designe_product_definition_context); config_control_designe_product_definition_context->AddSupertype(config_control_designe_application_context_element); config_control_designe_application_context_element->AddSubtype(config_control_designe_product_definition_context); - a_227life_cycle_stage = new AttrDescriptor("life_cycle_stage",config_control_designt_label,F,F,F,*config_control_designe_product_definition_context); + a_227life_cycle_stage = + new AttrDescriptor("life_cycle_stage",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_product_definition_context); config_control_designe_product_definition_context->AddExplicitAttr (a_227life_cycle_stage); -///////// END_ENTITY product_definition_context + reg.AddEntity (*config_control_designe_product_definition_context); +///////// END_ENTITY product_definition_context -///////// ENTITY item_defined_transformation +///////// ENTITY item_defined_transformation - reg.AddEntity (*config_control_designe_item_defined_transformation); - a_228name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_item_defined_transformation); + a_228name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_item_defined_transformation); config_control_designe_item_defined_transformation->AddExplicitAttr (a_228name); - a_229description = new AttrDescriptor("description",config_control_designt_text,F,F,F,*config_control_designe_item_defined_transformation); + a_229description = + new AttrDescriptor("description",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_item_defined_transformation); config_control_designe_item_defined_transformation->AddExplicitAttr (a_229description); - a_230transform_item_1 = new AttrDescriptor("transform_item_1",config_control_designe_representation_item,F,F,F,*config_control_designe_item_defined_transformation); + a_230transform_item_1 = + new AttrDescriptor("transform_item_1",config_control_designe_representation_item, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_item_defined_transformation); config_control_designe_item_defined_transformation->AddExplicitAttr (a_230transform_item_1); - a_231transform_item_2 = new AttrDescriptor("transform_item_2",config_control_designe_representation_item,F,F,F,*config_control_designe_item_defined_transformation); + a_231transform_item_2 = + new AttrDescriptor("transform_item_2",config_control_designe_representation_item, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_item_defined_transformation); config_control_designe_item_defined_transformation->AddExplicitAttr (a_231transform_item_2); -///////// END_ENTITY item_defined_transformation + reg.AddEntity (*config_control_designe_item_defined_transformation); +///////// END_ENTITY item_defined_transformation -///////// ENTITY action_method +///////// ENTITY action_method - reg.AddEntity (*config_control_designe_action_method); - a_232name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_action_method); + a_232name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_action_method); config_control_designe_action_method->AddExplicitAttr (a_232name); - a_233description = new AttrDescriptor("description",config_control_designt_text,F,F,F,*config_control_designe_action_method); + a_233description = + new AttrDescriptor("description",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_action_method); config_control_designe_action_method->AddExplicitAttr (a_233description); - a_234consequence = new AttrDescriptor("consequence",config_control_designt_text,F,F,F,*config_control_designe_action_method); + a_234consequence = + new AttrDescriptor("consequence",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_action_method); config_control_designe_action_method->AddExplicitAttr (a_234consequence); - a_235purpose = new AttrDescriptor("purpose",config_control_designt_text,F,F,F,*config_control_designe_action_method); + a_235purpose = + new AttrDescriptor("purpose",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_action_method); config_control_designe_action_method->AddExplicitAttr (a_235purpose); -///////// END_ENTITY action_method + reg.AddEntity (*config_control_designe_action_method); +///////// END_ENTITY action_method -///////// ENTITY product_category_relationship +///////// ENTITY product_category_relationship - reg.AddEntity (*config_control_designe_product_category_relationship); - a_236name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_product_category_relationship); + a_236name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_product_category_relationship); config_control_designe_product_category_relationship->AddExplicitAttr (a_236name); - a_237description = new AttrDescriptor("description",config_control_designt_text,F,F,F,*config_control_designe_product_category_relationship); + a_237description = + new AttrDescriptor("description",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_product_category_relationship); config_control_designe_product_category_relationship->AddExplicitAttr (a_237description); - a_238category = new AttrDescriptor("category",config_control_designe_product_category,F,F,F,*config_control_designe_product_category_relationship); + a_238category = + new AttrDescriptor("category",config_control_designe_product_category, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_product_category_relationship); config_control_designe_product_category_relationship->AddExplicitAttr (a_238category); - a_239sub_category = new AttrDescriptor("sub_category",config_control_designe_product_category,F,F,F,*config_control_designe_product_category_relationship); + a_239sub_category = + new AttrDescriptor("sub_category",config_control_designe_product_category, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_product_category_relationship); config_control_designe_product_category_relationship->AddExplicitAttr (a_239sub_category); -///////// END_ENTITY product_category_relationship + reg.AddEntity (*config_control_designe_product_category_relationship); +///////// END_ENTITY product_category_relationship -///////// ENTITY plane_angle_measure_with_unit +///////// ENTITY plane_angle_measure_with_unit - reg.AddEntity (*config_control_designe_plane_angle_measure_with_unit); config_control_designe_plane_angle_measure_with_unit->AddSupertype(config_control_designe_measure_with_unit); config_control_designe_measure_with_unit->AddSubtype(config_control_designe_plane_angle_measure_with_unit); -///////// END_ENTITY plane_angle_measure_with_unit + reg.AddEntity (*config_control_designe_plane_angle_measure_with_unit); +///////// END_ENTITY plane_angle_measure_with_unit -///////// ENTITY vertex +///////// ENTITY vertex - reg.AddEntity (*config_control_designe_vertex); config_control_designe_vertex->AddSupertype(config_control_designe_topological_representation_item); config_control_designe_topological_representation_item->AddSubtype(config_control_designe_vertex); -///////// END_ENTITY vertex + reg.AddEntity (*config_control_designe_vertex); +///////// END_ENTITY vertex -///////// ENTITY representation_map +///////// ENTITY representation_map - reg.AddEntity (*config_control_designe_representation_map); - a_240mapping_origin = new AttrDescriptor("mapping_origin",config_control_designe_representation_item,F,F,F,*config_control_designe_representation_map); + a_240mapping_origin = + new AttrDescriptor("mapping_origin",config_control_designe_representation_item, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_representation_map); config_control_designe_representation_map->AddExplicitAttr (a_240mapping_origin); - a_241mapped_representation = new AttrDescriptor("mapped_representation",config_control_designe_representation,F,F,F,*config_control_designe_representation_map); + a_241mapped_representation = + new AttrDescriptor("mapped_representation",config_control_designe_representation, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_representation_map); config_control_designe_representation_map->AddExplicitAttr (a_241mapped_representation); SetTypeDescriptor * t_37 = new SetTypeDescriptor; t_37->AssignAggrCreator((AggregateCreator) create_EntityAggregate); // Creator function t_37->Bound1(1); t_37->Bound2(2147483647); t_37->FundamentalType(SET_TYPE); - t_37->Description("SET [1:?] OF Mapped_Item"); + t_37->Description("SET [1:?] OF mapped_item"); + t_37->OriginatingSchema(s_config_control_design); t_37->ReferentType(config_control_designe_mapped_item); - a_242Imap_usage = new InverseAttrDescriptor("map_usage",t_37,F,F,*config_control_designe_representation_map); + a_242Imap_usage = + new Inverse_attribute("map_usage",t_37,SCLLOG(LFalse),SCLLOG(LFalse), + *config_control_designe_representation_map); config_control_designe_representation_map->AddInverseAttr (a_242Imap_usage); -///////// END_ENTITY representation_map + a_242Imap_usage->inverted_attr_id_("mapping_source"); + a_242Imap_usage->inverted_entity_id_("mapped_item"); +// inverse entity 3 mapped_item + reg.AddEntity (*config_control_designe_representation_map); +///////// END_ENTITY representation_map -///////// ENTITY product_definition_effectivity +///////// ENTITY product_definition_effectivity - reg.AddEntity (*config_control_designe_product_definition_effectivity); config_control_designe_product_definition_effectivity->AddSupertype(config_control_designe_effectivity); config_control_designe_effectivity->AddSubtype(config_control_designe_product_definition_effectivity); - a_243usage = new AttrDescriptor("usage",config_control_designe_product_definition_relationship,F,T,F,*config_control_designe_product_definition_effectivity); + a_243usage = + new AttrDescriptor("usage",config_control_designe_product_definition_relationship, + SCLLOG(LFalse),SCLLOG(LTrue), AttrType_Explicit, + *config_control_designe_product_definition_effectivity); config_control_designe_product_definition_effectivity->AddExplicitAttr (a_243usage); -///////// END_ENTITY product_definition_effectivity + reg.AddEntity (*config_control_designe_product_definition_effectivity); +///////// END_ENTITY product_definition_effectivity -///////// ENTITY configuration_effectivity +///////// ENTITY configuration_effectivity - reg.AddEntity (*config_control_designe_configuration_effectivity); config_control_designe_configuration_effectivity->AddSupertype(config_control_designe_product_definition_effectivity); config_control_designe_product_definition_effectivity->AddSubtype(config_control_designe_configuration_effectivity); - a_244configuration = new AttrDescriptor("configuration",config_control_designe_configuration_design,F,T,F,*config_control_designe_configuration_effectivity); + a_244configuration = + new AttrDescriptor("configuration",config_control_designe_configuration_design, + SCLLOG(LFalse),SCLLOG(LTrue), AttrType_Explicit, + *config_control_designe_configuration_effectivity); config_control_designe_configuration_effectivity->AddExplicitAttr (a_244configuration); -///////// END_ENTITY configuration_effectivity + reg.AddEntity (*config_control_designe_configuration_effectivity); +///////// END_ENTITY configuration_effectivity -///////// ENTITY ellipse +///////// ENTITY ellipse - reg.AddEntity (*config_control_designe_ellipse); config_control_designe_ellipse->AddSupertype(config_control_designe_conic); config_control_designe_conic->AddSubtype(config_control_designe_ellipse); - a_245semi_axis_1 = new AttrDescriptor("semi_axis_1",config_control_designt_positive_length_measure,F,F,F,*config_control_designe_ellipse); + a_245semi_axis_1 = + new AttrDescriptor("semi_axis_1",config_control_designt_positive_length_measure, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_ellipse); config_control_designe_ellipse->AddExplicitAttr (a_245semi_axis_1); - a_246semi_axis_2 = new AttrDescriptor("semi_axis_2",config_control_designt_positive_length_measure,F,F,F,*config_control_designe_ellipse); + a_246semi_axis_2 = + new AttrDescriptor("semi_axis_2",config_control_designt_positive_length_measure, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_ellipse); config_control_designe_ellipse->AddExplicitAttr (a_246semi_axis_2); -///////// END_ENTITY ellipse + reg.AddEntity (*config_control_designe_ellipse); +///////// END_ENTITY ellipse -///////// ENTITY context_dependent_unit +///////// ENTITY context_dependent_unit - reg.AddEntity (*config_control_designe_context_dependent_unit); config_control_designe_context_dependent_unit->AddSupertype(config_control_designe_named_unit); config_control_designe_named_unit->AddSubtype(config_control_designe_context_dependent_unit); - a_247name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_context_dependent_unit); + a_247name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_context_dependent_unit); config_control_designe_context_dependent_unit->AddExplicitAttr (a_247name); -///////// END_ENTITY context_dependent_unit + reg.AddEntity (*config_control_designe_context_dependent_unit); +///////// END_ENTITY context_dependent_unit -///////// ENTITY alternate_product_relationship +///////// ENTITY alternate_product_relationship - reg.AddEntity (*config_control_designe_alternate_product_relationship); - a_248name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_alternate_product_relationship); + a_248name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_alternate_product_relationship); config_control_designe_alternate_product_relationship->AddExplicitAttr (a_248name); - a_249description = new AttrDescriptor("description",config_control_designt_text,F,F,F,*config_control_designe_alternate_product_relationship); + a_249description = + new AttrDescriptor("description",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_alternate_product_relationship); config_control_designe_alternate_product_relationship->AddExplicitAttr (a_249description); - a_250alternate = new AttrDescriptor("alternate",config_control_designe_product,F,T,F,*config_control_designe_alternate_product_relationship); + a_250alternate = + new AttrDescriptor("alternate",config_control_designe_product, + SCLLOG(LFalse),SCLLOG(LTrue), AttrType_Explicit, + *config_control_designe_alternate_product_relationship); config_control_designe_alternate_product_relationship->AddExplicitAttr (a_250alternate); - a_251base = new AttrDescriptor("base",config_control_designe_product,F,T,F,*config_control_designe_alternate_product_relationship); + a_251base = + new AttrDescriptor("base",config_control_designe_product, + SCLLOG(LFalse),SCLLOG(LTrue), AttrType_Explicit, + *config_control_designe_alternate_product_relationship); config_control_designe_alternate_product_relationship->AddExplicitAttr (a_251base); - a_252basis = new AttrDescriptor("basis",config_control_designt_text,F,F,F,*config_control_designe_alternate_product_relationship); + a_252basis = + new AttrDescriptor("basis",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_alternate_product_relationship); config_control_designe_alternate_product_relationship->AddExplicitAttr (a_252basis); -///////// END_ENTITY alternate_product_relationship + reg.AddEntity (*config_control_designe_alternate_product_relationship); +///////// END_ENTITY alternate_product_relationship -///////// ENTITY document_type +///////// ENTITY document_type - reg.AddEntity (*config_control_designe_document_type); - a_253product_data_type = new AttrDescriptor("product_data_type",config_control_designt_label,F,F,F,*config_control_designe_document_type); + a_253product_data_type = + new AttrDescriptor("product_data_type",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_document_type); config_control_designe_document_type->AddExplicitAttr (a_253product_data_type); -///////// END_ENTITY document_type + reg.AddEntity (*config_control_designe_document_type); +///////// END_ENTITY document_type -///////// ENTITY document_reference +///////// ENTITY document_reference - reg.AddEntity (*config_control_designe_document_reference); - a_254assigned_document = new AttrDescriptor("assigned_document",config_control_designe_document,F,F,F,*config_control_designe_document_reference); + config_control_designe_document_reference->AddSupertype_Stmt("ABSTRACT SUPERTYPE"); + a_254assigned_document = + new AttrDescriptor("assigned_document",config_control_designe_document, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_document_reference); config_control_designe_document_reference->AddExplicitAttr (a_254assigned_document); - a_255source = new AttrDescriptor("source",config_control_designt_label,F,F,F,*config_control_designe_document_reference); + a_255source = + new AttrDescriptor("source",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_document_reference); config_control_designe_document_reference->AddExplicitAttr (a_255source); -///////// END_ENTITY document_reference + reg.AddEntity (*config_control_designe_document_reference); +///////// END_ENTITY document_reference -///////// ENTITY mechanical_context +///////// ENTITY mechanical_context - reg.AddEntity (*config_control_designe_mechanical_context); config_control_designe_mechanical_context->AddSupertype(config_control_designe_product_context); config_control_designe_product_context->AddSubtype(config_control_designe_mechanical_context); -///////// END_ENTITY mechanical_context + reg.AddEntity (*config_control_designe_mechanical_context); +///////// END_ENTITY mechanical_context -///////// ENTITY shell_based_wireframe_model +///////// ENTITY shell_based_wireframe_model - reg.AddEntity (*config_control_designe_shell_based_wireframe_model); config_control_designe_shell_based_wireframe_model->AddSupertype(config_control_designe_geometric_representation_item); config_control_designe_geometric_representation_item->AddSubtype(config_control_designe_shell_based_wireframe_model); SetTypeDescriptor * t_38 = new SetTypeDescriptor; @@ -2497,45 +2713,78 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_38->Bound1(1); t_38->Bound2(2147483647); t_38->FundamentalType(SET_TYPE); - t_38->Description("SET [1:?] OF Shell"); + t_38->Description("SET [1:?] OF shell"); + t_38->OriginatingSchema(s_config_control_design); t_38->ReferentType(config_control_designt_shell); - a_256sbwm_boundary = new AttrDescriptor("sbwm_boundary",t_38,F,F,F,*config_control_designe_shell_based_wireframe_model); + a_256sbwm_boundary = + new AttrDescriptor("sbwm_boundary",t_38,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_shell_based_wireframe_model); config_control_designe_shell_based_wireframe_model->AddExplicitAttr (a_256sbwm_boundary); -///////// END_ENTITY shell_based_wireframe_model + reg.AddEntity (*config_control_designe_shell_based_wireframe_model); +///////// END_ENTITY shell_based_wireframe_model -///////// ENTITY contract +///////// ENTITY contract - reg.AddEntity (*config_control_designe_contract); - a_257name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_contract); + a_257name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_contract); config_control_designe_contract->AddExplicitAttr (a_257name); - a_258purpose = new AttrDescriptor("purpose",config_control_designt_text,F,F,F,*config_control_designe_contract); + a_258purpose = + new AttrDescriptor("purpose",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_contract); config_control_designe_contract->AddExplicitAttr (a_258purpose); - a_259kind = new AttrDescriptor("kind",config_control_designe_contract_type,F,F,F,*config_control_designe_contract); + a_259kind = + new AttrDescriptor("kind",config_control_designe_contract_type, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_contract); config_control_designe_contract->AddExplicitAttr (a_259kind); -///////// END_ENTITY contract + reg.AddEntity (*config_control_designe_contract); +///////// END_ENTITY contract -///////// ENTITY dimensional_exponents +///////// ENTITY dimensional_exponents - reg.AddEntity (*config_control_designe_dimensional_exponents); - a_260length_exponent = new AttrDescriptor("length_exponent",t_REAL_TYPE,F,F,F,*config_control_designe_dimensional_exponents); + a_260length_exponent = + new AttrDescriptor("length_exponent",t_sdaiREAL, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_dimensional_exponents); config_control_designe_dimensional_exponents->AddExplicitAttr (a_260length_exponent); - a_261mass_exponent = new AttrDescriptor("mass_exponent",t_REAL_TYPE,F,F,F,*config_control_designe_dimensional_exponents); + a_261mass_exponent = + new AttrDescriptor("mass_exponent",t_sdaiREAL, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_dimensional_exponents); config_control_designe_dimensional_exponents->AddExplicitAttr (a_261mass_exponent); - a_262time_exponent = new AttrDescriptor("time_exponent",t_REAL_TYPE,F,F,F,*config_control_designe_dimensional_exponents); + a_262time_exponent = + new AttrDescriptor("time_exponent",t_sdaiREAL, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_dimensional_exponents); config_control_designe_dimensional_exponents->AddExplicitAttr (a_262time_exponent); - a_263electric_current_exponent = new AttrDescriptor("electric_current_exponent",t_REAL_TYPE,F,F,F,*config_control_designe_dimensional_exponents); + a_263electric_current_exponent = + new AttrDescriptor("electric_current_exponent",t_sdaiREAL, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_dimensional_exponents); config_control_designe_dimensional_exponents->AddExplicitAttr (a_263electric_current_exponent); - a_264thermodynamic_temperature_exponent = new AttrDescriptor("thermodynamic_temperature_exponent",t_REAL_TYPE,F,F,F,*config_control_designe_dimensional_exponents); + a_264thermodynamic_temperature_exponent = + new AttrDescriptor("thermodynamic_temperature_exponent",t_sdaiREAL, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_dimensional_exponents); config_control_designe_dimensional_exponents->AddExplicitAttr (a_264thermodynamic_temperature_exponent); - a_265amount_of_substance_exponent = new AttrDescriptor("amount_of_substance_exponent",t_REAL_TYPE,F,F,F,*config_control_designe_dimensional_exponents); + a_265amount_of_substance_exponent = + new AttrDescriptor("amount_of_substance_exponent",t_sdaiREAL, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_dimensional_exponents); config_control_designe_dimensional_exponents->AddExplicitAttr (a_265amount_of_substance_exponent); - a_266luminous_intensity_exponent = new AttrDescriptor("luminous_intensity_exponent",t_REAL_TYPE,F,F,F,*config_control_designe_dimensional_exponents); + a_266luminous_intensity_exponent = + new AttrDescriptor("luminous_intensity_exponent",t_sdaiREAL, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_dimensional_exponents); config_control_designe_dimensional_exponents->AddExplicitAttr (a_266luminous_intensity_exponent); -///////// END_ENTITY dimensional_exponents + reg.AddEntity (*config_control_designe_dimensional_exponents); +///////// END_ENTITY dimensional_exponents -///////// ENTITY start_request +///////// ENTITY start_request - reg.AddEntity (*config_control_designe_start_request); config_control_designe_start_request->AddSupertype(config_control_designe_action_request_assignment); config_control_designe_action_request_assignment->AddSubtype(config_control_designe_start_request); SetTypeDescriptor * t_39 = new SetTypeDescriptor; @@ -2543,15 +2792,18 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_39->Bound1(1); t_39->Bound2(2147483647); t_39->FundamentalType(SET_TYPE); - t_39->Description("SET [1:?] OF Start_Request_Item"); + t_39->Description("SET [1:?] OF start_request_item"); + t_39->OriginatingSchema(s_config_control_design); t_39->ReferentType(config_control_designt_start_request_item); - a_267items = new AttrDescriptor("items",t_39,F,F,F,*config_control_designe_start_request); + a_267items = + new AttrDescriptor("items",t_39,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_start_request); config_control_designe_start_request->AddExplicitAttr (a_267items); -///////// END_ENTITY start_request + reg.AddEntity (*config_control_designe_start_request); +///////// END_ENTITY start_request -///////// ENTITY cc_design_specification_reference +///////// ENTITY cc_design_specification_reference - reg.AddEntity (*config_control_designe_cc_design_specification_reference); config_control_designe_cc_design_specification_reference->AddSupertype(config_control_designe_document_reference); config_control_designe_document_reference->AddSubtype(config_control_designe_cc_design_specification_reference); SetTypeDescriptor * t_40 = new SetTypeDescriptor; @@ -2559,54 +2811,66 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_40->Bound1(1); t_40->Bound2(2147483647); t_40->FundamentalType(SET_TYPE); - t_40->Description("SET [1:?] OF Specified_Item"); + t_40->Description("SET [1:?] OF specified_item"); + t_40->OriginatingSchema(s_config_control_design); t_40->ReferentType(config_control_designt_specified_item); - a_268items = new AttrDescriptor("items",t_40,F,F,F,*config_control_designe_cc_design_specification_reference); + a_268items = + new AttrDescriptor("items",t_40,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_cc_design_specification_reference); config_control_designe_cc_design_specification_reference->AddExplicitAttr (a_268items); -///////// END_ENTITY cc_design_specification_reference + reg.AddEntity (*config_control_designe_cc_design_specification_reference); +///////// END_ENTITY cc_design_specification_reference -///////// ENTITY supplied_part_relationship +///////// ENTITY supplied_part_relationship - reg.AddEntity (*config_control_designe_supplied_part_relationship); config_control_designe_supplied_part_relationship->AddSupertype(config_control_designe_product_definition_relationship); config_control_designe_product_definition_relationship->AddSubtype(config_control_designe_supplied_part_relationship); -///////// END_ENTITY supplied_part_relationship + reg.AddEntity (*config_control_designe_supplied_part_relationship); +///////// END_ENTITY supplied_part_relationship -///////// ENTITY context_dependent_shape_representation +///////// ENTITY context_dependent_shape_representation - reg.AddEntity (*config_control_designe_context_dependent_shape_representation); - a_269representation_relation = new AttrDescriptor("representation_relation",config_control_designe_shape_representation_relationship,F,F,F,*config_control_designe_context_dependent_shape_representation); + a_269representation_relation = + new AttrDescriptor("representation_relation",config_control_designe_shape_representation_relationship, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_context_dependent_shape_representation); config_control_designe_context_dependent_shape_representation->AddExplicitAttr (a_269representation_relation); - a_270represented_product_relation = new AttrDescriptor("represented_product_relation",config_control_designe_product_definition_shape,F,F,F,*config_control_designe_context_dependent_shape_representation); + a_270represented_product_relation = + new AttrDescriptor("represented_product_relation",config_control_designe_product_definition_shape, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_context_dependent_shape_representation); config_control_designe_context_dependent_shape_representation->AddExplicitAttr (a_270represented_product_relation); -///////// END_ENTITY context_dependent_shape_representation + reg.AddEntity (*config_control_designe_context_dependent_shape_representation); +///////// END_ENTITY context_dependent_shape_representation -///////// ENTITY ordinal_date +///////// ENTITY ordinal_date - reg.AddEntity (*config_control_designe_ordinal_date); config_control_designe_ordinal_date->AddSupertype(config_control_designe_date); config_control_designe_date->AddSubtype(config_control_designe_ordinal_date); - a_271day_component = new AttrDescriptor("day_component",config_control_designt_day_in_year_number,F,F,F,*config_control_designe_ordinal_date); + a_271day_component = + new AttrDescriptor("day_component",config_control_designt_day_in_year_number, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_ordinal_date); config_control_designe_ordinal_date->AddExplicitAttr (a_271day_component); -///////// END_ENTITY ordinal_date + reg.AddEntity (*config_control_designe_ordinal_date); +///////// END_ENTITY ordinal_date -///////// ENTITY face_outer_bound +///////// ENTITY face_outer_bound - reg.AddEntity (*config_control_designe_face_outer_bound); config_control_designe_face_outer_bound->AddSupertype(config_control_designe_face_bound); config_control_designe_face_bound->AddSubtype(config_control_designe_face_outer_bound); -///////// END_ENTITY face_outer_bound + reg.AddEntity (*config_control_designe_face_outer_bound); +///////// END_ENTITY face_outer_bound -///////// ENTITY mass_measure_with_unit +///////// ENTITY mass_measure_with_unit - reg.AddEntity (*config_control_designe_mass_measure_with_unit); config_control_designe_mass_measure_with_unit->AddSupertype(config_control_designe_measure_with_unit); config_control_designe_measure_with_unit->AddSubtype(config_control_designe_mass_measure_with_unit); -///////// END_ENTITY mass_measure_with_unit + reg.AddEntity (*config_control_designe_mass_measure_with_unit); +///////// END_ENTITY mass_measure_with_unit -///////// ENTITY brep_with_voids +///////// ENTITY brep_with_voids - reg.AddEntity (*config_control_designe_brep_with_voids); config_control_designe_brep_with_voids->AddSupertype(config_control_designe_manifold_solid_brep); config_control_designe_manifold_solid_brep->AddSubtype(config_control_designe_brep_with_voids); SetTypeDescriptor * t_41 = new SetTypeDescriptor; @@ -2614,44 +2878,60 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_41->Bound1(1); t_41->Bound2(2147483647); t_41->FundamentalType(SET_TYPE); - t_41->Description("SET [1:?] OF Oriented_Closed_Shell"); + t_41->Description("SET [1:?] OF oriented_closed_shell"); + t_41->OriginatingSchema(s_config_control_design); t_41->ReferentType(config_control_designe_oriented_closed_shell); - a_272voids = new AttrDescriptor("voids",t_41,F,F,F,*config_control_designe_brep_with_voids); + a_272voids = + new AttrDescriptor("voids",t_41,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_brep_with_voids); config_control_designe_brep_with_voids->AddExplicitAttr (a_272voids); -///////// END_ENTITY brep_with_voids + reg.AddEntity (*config_control_designe_brep_with_voids); +///////// END_ENTITY brep_with_voids -///////// ENTITY week_of_year_and_day_date +///////// ENTITY week_of_year_and_day_date - reg.AddEntity (*config_control_designe_week_of_year_and_day_date); config_control_designe_week_of_year_and_day_date->AddSupertype(config_control_designe_date); config_control_designe_date->AddSubtype(config_control_designe_week_of_year_and_day_date); - a_273week_component = new AttrDescriptor("week_component",config_control_designt_week_in_year_number,F,F,F,*config_control_designe_week_of_year_and_day_date); + a_273week_component = + new AttrDescriptor("week_component",config_control_designt_week_in_year_number, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_week_of_year_and_day_date); config_control_designe_week_of_year_and_day_date->AddExplicitAttr (a_273week_component); - a_274day_component = new AttrDescriptor("day_component",config_control_designt_day_in_week_number,T,F,F,*config_control_designe_week_of_year_and_day_date); + a_274day_component = + new AttrDescriptor("day_component",config_control_designt_day_in_week_number, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_week_of_year_and_day_date); config_control_designe_week_of_year_and_day_date->AddExplicitAttr (a_274day_component); -///////// END_ENTITY week_of_year_and_day_date + reg.AddEntity (*config_control_designe_week_of_year_and_day_date); +///////// END_ENTITY week_of_year_and_day_date -///////// ENTITY point_on_curve +///////// ENTITY point_on_curve - reg.AddEntity (*config_control_designe_point_on_curve); config_control_designe_point_on_curve->AddSupertype(config_control_designe_point); config_control_designe_point->AddSubtype(config_control_designe_point_on_curve); - a_275basis_curve = new AttrDescriptor("basis_curve",config_control_designe_curve,F,F,F,*config_control_designe_point_on_curve); + a_275basis_curve = + new AttrDescriptor("basis_curve",config_control_designe_curve, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_point_on_curve); config_control_designe_point_on_curve->AddExplicitAttr (a_275basis_curve); - a_276point_parameter = new AttrDescriptor("point_parameter",config_control_designt_parameter_value,F,F,F,*config_control_designe_point_on_curve); + a_276point_parameter = + new AttrDescriptor("point_parameter",config_control_designt_parameter_value, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_point_on_curve); config_control_designe_point_on_curve->AddExplicitAttr (a_276point_parameter); -///////// END_ENTITY point_on_curve + reg.AddEntity (*config_control_designe_point_on_curve); +///////// END_ENTITY point_on_curve -///////// ENTITY shell_based_wireframe_shape_representation +///////// ENTITY shell_based_wireframe_shape_representation - reg.AddEntity (*config_control_designe_shell_based_wireframe_shape_representation); config_control_designe_shell_based_wireframe_shape_representation->AddSupertype(config_control_designe_shape_representation); config_control_designe_shape_representation->AddSubtype(config_control_designe_shell_based_wireframe_shape_representation); -///////// END_ENTITY shell_based_wireframe_shape_representation + reg.AddEntity (*config_control_designe_shell_based_wireframe_shape_representation); +///////// END_ENTITY shell_based_wireframe_shape_representation -///////// ENTITY face +///////// ENTITY face - reg.AddEntity (*config_control_designe_face); + config_control_designe_face->AddSupertype_Stmt("SUPERTYPE OF (ONEOF (face_surface,oriented_face))"); config_control_designe_face->AddSupertype(config_control_designe_topological_representation_item); config_control_designe_topological_representation_item->AddSubtype(config_control_designe_face); SetTypeDescriptor * t_42 = new SetTypeDescriptor; @@ -2659,158 +2939,245 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_42->Bound1(1); t_42->Bound2(2147483647); t_42->FundamentalType(SET_TYPE); - t_42->Description("SET [1:?] OF Face_Bound"); + t_42->Description("SET [1:?] OF face_bound"); + t_42->OriginatingSchema(s_config_control_design); t_42->ReferentType(config_control_designe_face_bound); - a_277bounds = new AttrDescriptor("bounds",t_42,F,F,F,*config_control_designe_face); + a_277bounds = + new AttrDescriptor("bounds",t_42,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_face); config_control_designe_face->AddExplicitAttr (a_277bounds); -///////// END_ENTITY face + reg.AddEntity (*config_control_designe_face); +///////// END_ENTITY face -///////// ENTITY face_surface +///////// ENTITY face_surface - reg.AddEntity (*config_control_designe_face_surface); config_control_designe_face_surface->AddSupertype(config_control_designe_face); config_control_designe_face->AddSubtype(config_control_designe_face_surface); config_control_designe_face_surface->AddSupertype(config_control_designe_geometric_representation_item); config_control_designe_geometric_representation_item->AddSubtype(config_control_designe_face_surface); - a_278face_geometry = new AttrDescriptor("face_geometry",config_control_designe_surface,F,F,F,*config_control_designe_face_surface); + a_278face_geometry = + new AttrDescriptor("face_geometry",config_control_designe_surface, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_face_surface); config_control_designe_face_surface->AddExplicitAttr (a_278face_geometry); - a_279same_sense = new AttrDescriptor("same_sense",t_BOOLEAN_TYPE,F,F,F,*config_control_designe_face_surface); + a_279same_sense = + new AttrDescriptor("same_sense",t_sdaiBOOLEAN, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_face_surface); config_control_designe_face_surface->AddExplicitAttr (a_279same_sense); -///////// END_ENTITY face_surface + reg.AddEntity (*config_control_designe_face_surface); +///////// END_ENTITY face_surface -///////// ENTITY oriented_face +///////// ENTITY oriented_face - reg.AddEntity (*config_control_designe_oriented_face); config_control_designe_oriented_face->AddSupertype(config_control_designe_face); config_control_designe_face->AddSubtype(config_control_designe_oriented_face); - a_280face_element = new AttrDescriptor("face_element",config_control_designe_face,F,F,F,*config_control_designe_oriented_face); + a_280face_element = + new AttrDescriptor("face_element",config_control_designe_face, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_oriented_face); config_control_designe_oriented_face->AddExplicitAttr (a_280face_element); - a_281orientation = new AttrDescriptor("orientation",t_BOOLEAN_TYPE,F,F,F,*config_control_designe_oriented_face); + a_281orientation = + new AttrDescriptor("orientation",t_sdaiBOOLEAN, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_oriented_face); config_control_designe_oriented_face->AddExplicitAttr (a_281orientation); SetTypeDescriptor * t_43 = new SetTypeDescriptor; t_43->AssignAggrCreator((AggregateCreator) create_EntityAggregate); // Creator function t_43->Bound1(1); t_43->Bound2(2147483647); t_43->FundamentalType(SET_TYPE); - t_43->Description("SET [1:?] OF Face_Bound"); + t_43->Description("SET [1:?] OF face_bound"); + t_43->OriginatingSchema(s_config_control_design); t_43->ReferentType(config_control_designe_face_bound); - a_282Dface_bounds = new AttrDescriptor("face.bounds",t_43,F,F,T,*config_control_designe_oriented_face); + a_282Dface_bounds = + new Derived_attribute("face.bounds",t_43,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_oriented_face); config_control_designe_oriented_face->AddExplicitAttr (a_282Dface_bounds); -///////// END_ENTITY oriented_face + a_282Dface_bounds->initializer_("conditional_reverse(SELF.orientation,SELF.face_element.bounds)"); + reg.AddEntity (*config_control_designe_oriented_face); +///////// END_ENTITY oriented_face -///////// ENTITY surface_of_revolution +///////// ENTITY surface_of_revolution - reg.AddEntity (*config_control_designe_surface_of_revolution); config_control_designe_surface_of_revolution->AddSupertype(config_control_designe_swept_surface); config_control_designe_swept_surface->AddSubtype(config_control_designe_surface_of_revolution); - a_283axis_position = new AttrDescriptor("axis_position",config_control_designe_axis1_placement,F,F,F,*config_control_designe_surface_of_revolution); + a_283axis_position = + new AttrDescriptor("axis_position",config_control_designe_axis1_placement, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_surface_of_revolution); config_control_designe_surface_of_revolution->AddExplicitAttr (a_283axis_position); - a_284Daxis_line = new AttrDescriptor("axis_line",config_control_designe_line,F,F,T,*config_control_designe_surface_of_revolution); + a_284Daxis_line = + new Derived_attribute("axis_line",config_control_designe_line, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_surface_of_revolution); config_control_designe_surface_of_revolution->AddExplicitAttr (a_284Daxis_line); -///////// END_ENTITY surface_of_revolution + a_284Daxis_line->initializer_("line(axis_position.location,vector(axis_position.z,1))"); + reg.AddEntity (*config_control_designe_surface_of_revolution); +///////// END_ENTITY surface_of_revolution -///////// ENTITY advanced_brep_shape_representation +///////// ENTITY advanced_brep_shape_representation - reg.AddEntity (*config_control_designe_advanced_brep_shape_representation); config_control_designe_advanced_brep_shape_representation->AddSupertype(config_control_designe_shape_representation); config_control_designe_shape_representation->AddSubtype(config_control_designe_advanced_brep_shape_representation); -///////// END_ENTITY advanced_brep_shape_representation + reg.AddEntity (*config_control_designe_advanced_brep_shape_representation); +///////// END_ENTITY advanced_brep_shape_representation -///////// ENTITY edge_curve +///////// ENTITY edge_curve - reg.AddEntity (*config_control_designe_edge_curve); config_control_designe_edge_curve->AddSupertype(config_control_designe_edge); config_control_designe_edge->AddSubtype(config_control_designe_edge_curve); config_control_designe_edge_curve->AddSupertype(config_control_designe_geometric_representation_item); config_control_designe_geometric_representation_item->AddSubtype(config_control_designe_edge_curve); - a_285edge_geometry = new AttrDescriptor("edge_geometry",config_control_designe_curve,F,F,F,*config_control_designe_edge_curve); + a_285edge_geometry = + new AttrDescriptor("edge_geometry",config_control_designe_curve, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_edge_curve); config_control_designe_edge_curve->AddExplicitAttr (a_285edge_geometry); - a_286same_sense = new AttrDescriptor("same_sense",t_BOOLEAN_TYPE,F,F,F,*config_control_designe_edge_curve); + a_286same_sense = + new AttrDescriptor("same_sense",t_sdaiBOOLEAN, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_edge_curve); config_control_designe_edge_curve->AddExplicitAttr (a_286same_sense); -///////// END_ENTITY edge_curve + reg.AddEntity (*config_control_designe_edge_curve); +///////// END_ENTITY edge_curve -///////// ENTITY point_replica +///////// ENTITY point_replica - reg.AddEntity (*config_control_designe_point_replica); config_control_designe_point_replica->AddSupertype(config_control_designe_point); config_control_designe_point->AddSubtype(config_control_designe_point_replica); - a_287parent_pt = new AttrDescriptor("parent_pt",config_control_designe_point,F,F,F,*config_control_designe_point_replica); + a_287parent_pt = + new AttrDescriptor("parent_pt",config_control_designe_point, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_point_replica); config_control_designe_point_replica->AddExplicitAttr (a_287parent_pt); - a_288transformation = new AttrDescriptor("transformation",config_control_designe_cartesian_transformation_operator,F,F,F,*config_control_designe_point_replica); + a_288transformation = + new AttrDescriptor("transformation",config_control_designe_cartesian_transformation_operator, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_point_replica); config_control_designe_point_replica->AddExplicitAttr (a_288transformation); -///////// END_ENTITY point_replica + reg.AddEntity (*config_control_designe_point_replica); +///////// END_ENTITY point_replica -///////// ENTITY product +///////// ENTITY product - reg.AddEntity (*config_control_designe_product); - a_289id = new AttrDescriptor("id",config_control_designt_identifier,F,T,F,*config_control_designe_product); + a_289id = + new AttrDescriptor("id",config_control_designt_identifier, + SCLLOG(LFalse),SCLLOG(LTrue), AttrType_Explicit, + *config_control_designe_product); config_control_designe_product->AddExplicitAttr (a_289id); - a_290name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_product); + a_290name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_product); config_control_designe_product->AddExplicitAttr (a_290name); - a_291description = new AttrDescriptor("description",config_control_designt_text,F,F,F,*config_control_designe_product); + a_291description = + new AttrDescriptor("description",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_product); config_control_designe_product->AddExplicitAttr (a_291description); SetTypeDescriptor * t_44 = new SetTypeDescriptor; t_44->AssignAggrCreator((AggregateCreator) create_EntityAggregate); // Creator function t_44->Bound1(1); t_44->Bound2(2147483647); t_44->FundamentalType(SET_TYPE); - t_44->Description("SET [1:?] OF Product_Context"); + t_44->Description("SET [1:?] OF product_context"); + t_44->OriginatingSchema(s_config_control_design); t_44->ReferentType(config_control_designe_product_context); - a_292frame_of_reference = new AttrDescriptor("frame_of_reference",t_44,F,F,F,*config_control_designe_product); + a_292frame_of_reference = + new AttrDescriptor("frame_of_reference",t_44,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_product); config_control_designe_product->AddExplicitAttr (a_292frame_of_reference); -///////// END_ENTITY product + reg.AddEntity (*config_control_designe_product); +///////// END_ENTITY product -///////// ENTITY shape_aspect_relationship +///////// ENTITY shape_aspect_relationship - reg.AddEntity (*config_control_designe_shape_aspect_relationship); - a_293name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_shape_aspect_relationship); + a_293name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_shape_aspect_relationship); config_control_designe_shape_aspect_relationship->AddExplicitAttr (a_293name); - a_294description = new AttrDescriptor("description",config_control_designt_text,F,F,F,*config_control_designe_shape_aspect_relationship); + a_294description = + new AttrDescriptor("description",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_shape_aspect_relationship); config_control_designe_shape_aspect_relationship->AddExplicitAttr (a_294description); - a_295relating_shape_aspect = new AttrDescriptor("relating_shape_aspect",config_control_designe_shape_aspect,F,F,F,*config_control_designe_shape_aspect_relationship); + a_295relating_shape_aspect = + new AttrDescriptor("relating_shape_aspect",config_control_designe_shape_aspect, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_shape_aspect_relationship); config_control_designe_shape_aspect_relationship->AddExplicitAttr (a_295relating_shape_aspect); - a_296related_shape_aspect = new AttrDescriptor("related_shape_aspect",config_control_designe_shape_aspect,F,F,F,*config_control_designe_shape_aspect_relationship); + a_296related_shape_aspect = + new AttrDescriptor("related_shape_aspect",config_control_designe_shape_aspect, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_shape_aspect_relationship); config_control_designe_shape_aspect_relationship->AddExplicitAttr (a_296related_shape_aspect); -///////// END_ENTITY shape_aspect_relationship + reg.AddEntity (*config_control_designe_shape_aspect_relationship); +///////// END_ENTITY shape_aspect_relationship -///////// ENTITY rectangular_trimmed_surface +///////// ENTITY rectangular_trimmed_surface - reg.AddEntity (*config_control_designe_rectangular_trimmed_surface); config_control_designe_rectangular_trimmed_surface->AddSupertype(config_control_designe_bounded_surface); config_control_designe_bounded_surface->AddSubtype(config_control_designe_rectangular_trimmed_surface); - a_297basis_surface = new AttrDescriptor("basis_surface",config_control_designe_surface,F,F,F,*config_control_designe_rectangular_trimmed_surface); + a_297basis_surface = + new AttrDescriptor("basis_surface",config_control_designe_surface, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_rectangular_trimmed_surface); config_control_designe_rectangular_trimmed_surface->AddExplicitAttr (a_297basis_surface); - a_298u1 = new AttrDescriptor("u1",config_control_designt_parameter_value,F,F,F,*config_control_designe_rectangular_trimmed_surface); + a_298u1 = + new AttrDescriptor("u1",config_control_designt_parameter_value, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_rectangular_trimmed_surface); config_control_designe_rectangular_trimmed_surface->AddExplicitAttr (a_298u1); - a_299u2 = new AttrDescriptor("u2",config_control_designt_parameter_value,F,F,F,*config_control_designe_rectangular_trimmed_surface); + a_299u2 = + new AttrDescriptor("u2",config_control_designt_parameter_value, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_rectangular_trimmed_surface); config_control_designe_rectangular_trimmed_surface->AddExplicitAttr (a_299u2); - a_300v1 = new AttrDescriptor("v1",config_control_designt_parameter_value,F,F,F,*config_control_designe_rectangular_trimmed_surface); + a_300v1 = + new AttrDescriptor("v1",config_control_designt_parameter_value, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_rectangular_trimmed_surface); config_control_designe_rectangular_trimmed_surface->AddExplicitAttr (a_300v1); - a_301v2 = new AttrDescriptor("v2",config_control_designt_parameter_value,F,F,F,*config_control_designe_rectangular_trimmed_surface); + a_301v2 = + new AttrDescriptor("v2",config_control_designt_parameter_value, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_rectangular_trimmed_surface); config_control_designe_rectangular_trimmed_surface->AddExplicitAttr (a_301v2); - a_302usense = new AttrDescriptor("usense",t_BOOLEAN_TYPE,F,F,F,*config_control_designe_rectangular_trimmed_surface); + a_302usense = + new AttrDescriptor("usense",t_sdaiBOOLEAN, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_rectangular_trimmed_surface); config_control_designe_rectangular_trimmed_surface->AddExplicitAttr (a_302usense); - a_303vsense = new AttrDescriptor("vsense",t_BOOLEAN_TYPE,F,F,F,*config_control_designe_rectangular_trimmed_surface); + a_303vsense = + new AttrDescriptor("vsense",t_sdaiBOOLEAN, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_rectangular_trimmed_surface); config_control_designe_rectangular_trimmed_surface->AddExplicitAttr (a_303vsense); -///////// END_ENTITY rectangular_trimmed_surface + reg.AddEntity (*config_control_designe_rectangular_trimmed_surface); +///////// END_ENTITY rectangular_trimmed_surface -///////// ENTITY plane +///////// ENTITY plane - reg.AddEntity (*config_control_designe_plane); config_control_designe_plane->AddSupertype(config_control_designe_elementary_surface); config_control_designe_elementary_surface->AddSubtype(config_control_designe_plane); -///////// END_ENTITY plane + reg.AddEntity (*config_control_designe_plane); +///////// END_ENTITY plane -///////// ENTITY action_assignment +///////// ENTITY action_assignment - reg.AddEntity (*config_control_designe_action_assignment); - a_304assigned_action = new AttrDescriptor("assigned_action",config_control_designe_action,F,F,F,*config_control_designe_action_assignment); + config_control_designe_action_assignment->AddSupertype_Stmt("ABSTRACT SUPERTYPE"); + a_304assigned_action = + new AttrDescriptor("assigned_action",config_control_designe_action, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_action_assignment); config_control_designe_action_assignment->AddExplicitAttr (a_304assigned_action); -///////// END_ENTITY action_assignment + reg.AddEntity (*config_control_designe_action_assignment); +///////// END_ENTITY action_assignment -///////// ENTITY change +///////// ENTITY change - reg.AddEntity (*config_control_designe_change); config_control_designe_change->AddSupertype(config_control_designe_action_assignment); config_control_designe_action_assignment->AddSubtype(config_control_designe_change); SetTypeDescriptor * t_45 = new SetTypeDescriptor; @@ -2818,44 +3185,63 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_45->Bound1(1); t_45->Bound2(2147483647); t_45->FundamentalType(SET_TYPE); - t_45->Description("SET [1:?] OF Work_Item"); + t_45->Description("SET [1:?] OF work_item"); + t_45->OriginatingSchema(s_config_control_design); t_45->ReferentType(config_control_designt_work_item); - a_305items = new AttrDescriptor("items",t_45,F,F,F,*config_control_designe_change); + a_305items = + new AttrDescriptor("items",t_45,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_change); config_control_designe_change->AddExplicitAttr (a_305items); -///////// END_ENTITY change + reg.AddEntity (*config_control_designe_change); +///////// END_ENTITY change -///////// ENTITY circle +///////// ENTITY circle - reg.AddEntity (*config_control_designe_circle); config_control_designe_circle->AddSupertype(config_control_designe_conic); config_control_designe_conic->AddSubtype(config_control_designe_circle); - a_306radius = new AttrDescriptor("radius",config_control_designt_positive_length_measure,F,F,F,*config_control_designe_circle); + a_306radius = + new AttrDescriptor("radius",config_control_designt_positive_length_measure, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_circle); config_control_designe_circle->AddExplicitAttr (a_306radius); -///////// END_ENTITY circle + reg.AddEntity (*config_control_designe_circle); +///////// END_ENTITY circle -///////// ENTITY line +///////// ENTITY line - reg.AddEntity (*config_control_designe_line); config_control_designe_line->AddSupertype(config_control_designe_curve); config_control_designe_curve->AddSubtype(config_control_designe_line); - a_307pnt = new AttrDescriptor("pnt",config_control_designe_cartesian_point,F,F,F,*config_control_designe_line); + a_307pnt = + new AttrDescriptor("pnt",config_control_designe_cartesian_point, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_line); config_control_designe_line->AddExplicitAttr (a_307pnt); - a_308dir = new AttrDescriptor("dir",config_control_designe_vector,F,F,F,*config_control_designe_line); + a_308dir = + new AttrDescriptor("dir",config_control_designe_vector, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_line); config_control_designe_line->AddExplicitAttr (a_308dir); -///////// END_ENTITY line + reg.AddEntity (*config_control_designe_line); +///////// END_ENTITY line -///////// ENTITY property_definition_representation +///////// ENTITY property_definition_representation - reg.AddEntity (*config_control_designe_property_definition_representation); - a_309definition = new AttrDescriptor("definition",config_control_designe_property_definition,F,F,F,*config_control_designe_property_definition_representation); + a_309definition = + new AttrDescriptor("definition",config_control_designe_property_definition, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_property_definition_representation); config_control_designe_property_definition_representation->AddExplicitAttr (a_309definition); - a_310used_representation = new AttrDescriptor("used_representation",config_control_designe_representation,F,F,F,*config_control_designe_property_definition_representation); + a_310used_representation = + new AttrDescriptor("used_representation",config_control_designe_representation, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_property_definition_representation); config_control_designe_property_definition_representation->AddExplicitAttr (a_310used_representation); -///////// END_ENTITY property_definition_representation + reg.AddEntity (*config_control_designe_property_definition_representation); +///////// END_ENTITY property_definition_representation -///////// ENTITY geometric_set +///////// ENTITY geometric_set - reg.AddEntity (*config_control_designe_geometric_set); + config_control_designe_geometric_set->AddSupertype_Stmt("SUPERTYPE OF (geometric_curve_set)"); config_control_designe_geometric_set->AddSupertype(config_control_designe_geometric_representation_item); config_control_designe_geometric_representation_item->AddSubtype(config_control_designe_geometric_set); SetTypeDescriptor * t_46 = new SetTypeDescriptor; @@ -2863,22 +3249,25 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_46->Bound1(1); t_46->Bound2(2147483647); t_46->FundamentalType(SET_TYPE); - t_46->Description("SET [1:?] OF Geometric_Set_Select"); + t_46->Description("SET [1:?] OF geometric_set_select"); + t_46->OriginatingSchema(s_config_control_design); t_46->ReferentType(config_control_designt_geometric_set_select); - a_311elements = new AttrDescriptor("elements",t_46,F,F,F,*config_control_designe_geometric_set); + a_311elements = + new AttrDescriptor("elements",t_46,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_geometric_set); config_control_designe_geometric_set->AddExplicitAttr (a_311elements); -///////// END_ENTITY geometric_set + reg.AddEntity (*config_control_designe_geometric_set); +///////// END_ENTITY geometric_set -///////// ENTITY geometric_curve_set +///////// ENTITY geometric_curve_set - reg.AddEntity (*config_control_designe_geometric_curve_set); config_control_designe_geometric_curve_set->AddSupertype(config_control_designe_geometric_set); config_control_designe_geometric_set->AddSubtype(config_control_designe_geometric_curve_set); -///////// END_ENTITY geometric_curve_set + reg.AddEntity (*config_control_designe_geometric_curve_set); +///////// END_ENTITY geometric_curve_set -///////// ENTITY personal_address +///////// ENTITY personal_address - reg.AddEntity (*config_control_designe_personal_address); config_control_designe_personal_address->AddSupertype(config_control_designe_address); config_control_designe_address->AddSubtype(config_control_designe_personal_address); SetTypeDescriptor * t_47 = new SetTypeDescriptor; @@ -2886,95 +3275,140 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_47->Bound1(1); t_47->Bound2(2147483647); t_47->FundamentalType(SET_TYPE); - t_47->Description("SET [1:?] OF Person"); + t_47->Description("SET [1:?] OF person"); + t_47->OriginatingSchema(s_config_control_design); t_47->ReferentType(config_control_designe_person); - a_312people = new AttrDescriptor("people",t_47,F,F,F,*config_control_designe_personal_address); + a_312people = + new AttrDescriptor("people",t_47,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_personal_address); config_control_designe_personal_address->AddExplicitAttr (a_312people); - a_313description = new AttrDescriptor("description",config_control_designt_text,F,F,F,*config_control_designe_personal_address); + a_313description = + new AttrDescriptor("description",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_personal_address); config_control_designe_personal_address->AddExplicitAttr (a_313description); -///////// END_ENTITY personal_address + reg.AddEntity (*config_control_designe_personal_address); +///////// END_ENTITY personal_address -///////// ENTITY document_relationship +///////// ENTITY document_relationship - reg.AddEntity (*config_control_designe_document_relationship); - a_314name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_document_relationship); + a_314name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_document_relationship); config_control_designe_document_relationship->AddExplicitAttr (a_314name); - a_315description = new AttrDescriptor("description",config_control_designt_text,F,F,F,*config_control_designe_document_relationship); + a_315description = + new AttrDescriptor("description",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_document_relationship); config_control_designe_document_relationship->AddExplicitAttr (a_315description); - a_316relating_document = new AttrDescriptor("relating_document",config_control_designe_document,F,F,F,*config_control_designe_document_relationship); + a_316relating_document = + new AttrDescriptor("relating_document",config_control_designe_document, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_document_relationship); config_control_designe_document_relationship->AddExplicitAttr (a_316relating_document); - a_317related_document = new AttrDescriptor("related_document",config_control_designe_document,F,F,F,*config_control_designe_document_relationship); + a_317related_document = + new AttrDescriptor("related_document",config_control_designe_document, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_document_relationship); config_control_designe_document_relationship->AddExplicitAttr (a_317related_document); -///////// END_ENTITY document_relationship + reg.AddEntity (*config_control_designe_document_relationship); +///////// END_ENTITY document_relationship -///////// ENTITY pcurve +///////// ENTITY pcurve - reg.AddEntity (*config_control_designe_pcurve); config_control_designe_pcurve->AddSupertype(config_control_designe_curve); config_control_designe_curve->AddSubtype(config_control_designe_pcurve); - a_318basis_surface = new AttrDescriptor("basis_surface",config_control_designe_surface,F,F,F,*config_control_designe_pcurve); + a_318basis_surface = + new AttrDescriptor("basis_surface",config_control_designe_surface, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_pcurve); config_control_designe_pcurve->AddExplicitAttr (a_318basis_surface); - a_319reference_to_curve = new AttrDescriptor("reference_to_curve",config_control_designe_definitional_representation,F,F,F,*config_control_designe_pcurve); + a_319reference_to_curve = + new AttrDescriptor("reference_to_curve",config_control_designe_definitional_representation, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_pcurve); config_control_designe_pcurve->AddExplicitAttr (a_319reference_to_curve); -///////// END_ENTITY pcurve + reg.AddEntity (*config_control_designe_pcurve); +///////// END_ENTITY pcurve -///////// ENTITY outer_boundary_curve +///////// ENTITY outer_boundary_curve - reg.AddEntity (*config_control_designe_outer_boundary_curve); config_control_designe_outer_boundary_curve->AddSupertype(config_control_designe_boundary_curve); config_control_designe_boundary_curve->AddSubtype(config_control_designe_outer_boundary_curve); -///////// END_ENTITY outer_boundary_curve + reg.AddEntity (*config_control_designe_outer_boundary_curve); +///////// END_ENTITY outer_boundary_curve -///////// ENTITY shape_representation_relationship +///////// ENTITY shape_representation_relationship - reg.AddEntity (*config_control_designe_shape_representation_relationship); config_control_designe_shape_representation_relationship->AddSupertype(config_control_designe_representation_relationship); config_control_designe_representation_relationship->AddSubtype(config_control_designe_shape_representation_relationship); -///////// END_ENTITY shape_representation_relationship + reg.AddEntity (*config_control_designe_shape_representation_relationship); +///////// END_ENTITY shape_representation_relationship -///////// ENTITY assembly_component_usage_substitute +///////// ENTITY assembly_component_usage_substitute - reg.AddEntity (*config_control_designe_assembly_component_usage_substitute); - a_320name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_assembly_component_usage_substitute); + a_320name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_assembly_component_usage_substitute); config_control_designe_assembly_component_usage_substitute->AddExplicitAttr (a_320name); - a_321description = new AttrDescriptor("description",config_control_designt_text,F,F,F,*config_control_designe_assembly_component_usage_substitute); + a_321description = + new AttrDescriptor("description",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_assembly_component_usage_substitute); config_control_designe_assembly_component_usage_substitute->AddExplicitAttr (a_321description); - a_322base = new AttrDescriptor("base",config_control_designe_assembly_component_usage,F,T,F,*config_control_designe_assembly_component_usage_substitute); + a_322base = + new AttrDescriptor("base",config_control_designe_assembly_component_usage, + SCLLOG(LFalse),SCLLOG(LTrue), AttrType_Explicit, + *config_control_designe_assembly_component_usage_substitute); config_control_designe_assembly_component_usage_substitute->AddExplicitAttr (a_322base); - a_323substitute = new AttrDescriptor("substitute",config_control_designe_assembly_component_usage,F,T,F,*config_control_designe_assembly_component_usage_substitute); + a_323substitute = + new AttrDescriptor("substitute",config_control_designe_assembly_component_usage, + SCLLOG(LFalse),SCLLOG(LTrue), AttrType_Explicit, + *config_control_designe_assembly_component_usage_substitute); config_control_designe_assembly_component_usage_substitute->AddExplicitAttr (a_323substitute); -///////// END_ENTITY assembly_component_usage_substitute + reg.AddEntity (*config_control_designe_assembly_component_usage_substitute); +///////// END_ENTITY assembly_component_usage_substitute -///////// ENTITY degenerate_pcurve +///////// ENTITY degenerate_pcurve - reg.AddEntity (*config_control_designe_degenerate_pcurve); config_control_designe_degenerate_pcurve->AddSupertype(config_control_designe_point); config_control_designe_point->AddSubtype(config_control_designe_degenerate_pcurve); - a_324basis_surface = new AttrDescriptor("basis_surface",config_control_designe_surface,F,F,F,*config_control_designe_degenerate_pcurve); + a_324basis_surface = + new AttrDescriptor("basis_surface",config_control_designe_surface, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_degenerate_pcurve); config_control_designe_degenerate_pcurve->AddExplicitAttr (a_324basis_surface); - a_325reference_to_curve = new AttrDescriptor("reference_to_curve",config_control_designe_definitional_representation,F,F,F,*config_control_designe_degenerate_pcurve); + a_325reference_to_curve = + new AttrDescriptor("reference_to_curve",config_control_designe_definitional_representation, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_degenerate_pcurve); config_control_designe_degenerate_pcurve->AddExplicitAttr (a_325reference_to_curve); -///////// END_ENTITY degenerate_pcurve + reg.AddEntity (*config_control_designe_degenerate_pcurve); +///////// END_ENTITY degenerate_pcurve -///////// ENTITY evaluated_degenerate_pcurve +///////// ENTITY evaluated_degenerate_pcurve - reg.AddEntity (*config_control_designe_evaluated_degenerate_pcurve); config_control_designe_evaluated_degenerate_pcurve->AddSupertype(config_control_designe_degenerate_pcurve); config_control_designe_degenerate_pcurve->AddSubtype(config_control_designe_evaluated_degenerate_pcurve); - a_326equivalent_point = new AttrDescriptor("equivalent_point",config_control_designe_cartesian_point,F,F,F,*config_control_designe_evaluated_degenerate_pcurve); + a_326equivalent_point = + new AttrDescriptor("equivalent_point",config_control_designe_cartesian_point, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_evaluated_degenerate_pcurve); config_control_designe_evaluated_degenerate_pcurve->AddExplicitAttr (a_326equivalent_point); -///////// END_ENTITY evaluated_degenerate_pcurve + reg.AddEntity (*config_control_designe_evaluated_degenerate_pcurve); +///////// END_ENTITY evaluated_degenerate_pcurve -///////// ENTITY solid_angle_measure_with_unit +///////// ENTITY solid_angle_measure_with_unit - reg.AddEntity (*config_control_designe_solid_angle_measure_with_unit); config_control_designe_solid_angle_measure_with_unit->AddSupertype(config_control_designe_measure_with_unit); config_control_designe_measure_with_unit->AddSubtype(config_control_designe_solid_angle_measure_with_unit); -///////// END_ENTITY solid_angle_measure_with_unit + reg.AddEntity (*config_control_designe_solid_angle_measure_with_unit); +///////// END_ENTITY solid_angle_measure_with_unit -///////// ENTITY connected_edge_set +///////// ENTITY connected_edge_set - reg.AddEntity (*config_control_designe_connected_edge_set); config_control_designe_connected_edge_set->AddSupertype(config_control_designe_topological_representation_item); config_control_designe_topological_representation_item->AddSubtype(config_control_designe_connected_edge_set); SetTypeDescriptor * t_48 = new SetTypeDescriptor; @@ -2982,142 +3416,192 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_48->Bound1(1); t_48->Bound2(2147483647); t_48->FundamentalType(SET_TYPE); - t_48->Description("SET [1:?] OF Edge"); + t_48->Description("SET [1:?] OF edge"); + t_48->OriginatingSchema(s_config_control_design); t_48->ReferentType(config_control_designe_edge); - a_327ces_edges = new AttrDescriptor("ces_edges",t_48,F,F,F,*config_control_designe_connected_edge_set); + a_327ces_edges = + new AttrDescriptor("ces_edges",t_48,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_connected_edge_set); config_control_designe_connected_edge_set->AddExplicitAttr (a_327ces_edges); -///////// END_ENTITY connected_edge_set + reg.AddEntity (*config_control_designe_connected_edge_set); +///////// END_ENTITY connected_edge_set -///////// ENTITY action +///////// ENTITY action - reg.AddEntity (*config_control_designe_action); - a_328name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_action); + a_328name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_action); config_control_designe_action->AddExplicitAttr (a_328name); - a_329description = new AttrDescriptor("description",config_control_designt_text,F,F,F,*config_control_designe_action); + a_329description = + new AttrDescriptor("description",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_action); config_control_designe_action->AddExplicitAttr (a_329description); - a_330chosen_method = new AttrDescriptor("chosen_method",config_control_designe_action_method,F,F,F,*config_control_designe_action); + a_330chosen_method = + new AttrDescriptor("chosen_method",config_control_designe_action_method, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_action); config_control_designe_action->AddExplicitAttr (a_330chosen_method); -///////// END_ENTITY action + reg.AddEntity (*config_control_designe_action); +///////// END_ENTITY action -///////// ENTITY executed_action +///////// ENTITY executed_action - reg.AddEntity (*config_control_designe_executed_action); config_control_designe_executed_action->AddSupertype(config_control_designe_action); config_control_designe_action->AddSubtype(config_control_designe_executed_action); -///////// END_ENTITY executed_action + reg.AddEntity (*config_control_designe_executed_action); +///////// END_ENTITY executed_action -///////// ENTITY directed_action +///////// ENTITY directed_action - reg.AddEntity (*config_control_designe_directed_action); config_control_designe_directed_action->AddSupertype(config_control_designe_executed_action); config_control_designe_executed_action->AddSubtype(config_control_designe_directed_action); - a_331directive = new AttrDescriptor("directive",config_control_designe_action_directive,F,F,F,*config_control_designe_directed_action); + a_331directive = + new AttrDescriptor("directive",config_control_designe_action_directive, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_directed_action); config_control_designe_directed_action->AddExplicitAttr (a_331directive); -///////// END_ENTITY directed_action + reg.AddEntity (*config_control_designe_directed_action); +///////// END_ENTITY directed_action -///////// ENTITY organizational_project +///////// ENTITY organizational_project - reg.AddEntity (*config_control_designe_organizational_project); - a_332name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_organizational_project); + a_332name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_organizational_project); config_control_designe_organizational_project->AddExplicitAttr (a_332name); - a_333description = new AttrDescriptor("description",config_control_designt_text,F,F,F,*config_control_designe_organizational_project); + a_333description = + new AttrDescriptor("description",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_organizational_project); config_control_designe_organizational_project->AddExplicitAttr (a_333description); SetTypeDescriptor * t_49 = new SetTypeDescriptor; t_49->AssignAggrCreator((AggregateCreator) create_EntityAggregate); // Creator function t_49->Bound1(1); t_49->Bound2(2147483647); t_49->FundamentalType(SET_TYPE); - t_49->Description("SET [1:?] OF Organization"); + t_49->Description("SET [1:?] OF organization"); + t_49->OriginatingSchema(s_config_control_design); t_49->ReferentType(config_control_designe_organization); - a_334responsible_organizations = new AttrDescriptor("responsible_organizations",t_49,F,F,F,*config_control_designe_organizational_project); + a_334responsible_organizations = + new AttrDescriptor("responsible_organizations",t_49,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_organizational_project); config_control_designe_organizational_project->AddExplicitAttr (a_334responsible_organizations); -///////// END_ENTITY organizational_project + reg.AddEntity (*config_control_designe_organizational_project); +///////// END_ENTITY organizational_project -///////// ENTITY date_time_role +///////// ENTITY date_time_role - reg.AddEntity (*config_control_designe_date_time_role); - a_335name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_date_time_role); + a_335name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_date_time_role); config_control_designe_date_time_role->AddExplicitAttr (a_335name); -///////// END_ENTITY date_time_role + reg.AddEntity (*config_control_designe_date_time_role); +///////// END_ENTITY date_time_role -///////// ENTITY curve_bounded_surface +///////// ENTITY curve_bounded_surface - reg.AddEntity (*config_control_designe_curve_bounded_surface); config_control_designe_curve_bounded_surface->AddSupertype(config_control_designe_bounded_surface); config_control_designe_bounded_surface->AddSubtype(config_control_designe_curve_bounded_surface); - a_336basis_surface = new AttrDescriptor("basis_surface",config_control_designe_surface,F,F,F,*config_control_designe_curve_bounded_surface); + a_336basis_surface = + new AttrDescriptor("basis_surface",config_control_designe_surface, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_curve_bounded_surface); config_control_designe_curve_bounded_surface->AddExplicitAttr (a_336basis_surface); SetTypeDescriptor * t_50 = new SetTypeDescriptor; t_50->AssignAggrCreator((AggregateCreator) create_EntityAggregate); // Creator function t_50->Bound1(1); t_50->Bound2(2147483647); t_50->FundamentalType(SET_TYPE); - t_50->Description("SET [1:?] OF Boundary_Curve"); + t_50->Description("SET [1:?] OF boundary_curve"); + t_50->OriginatingSchema(s_config_control_design); t_50->ReferentType(config_control_designe_boundary_curve); - a_337boundaries = new AttrDescriptor("boundaries",t_50,F,F,F,*config_control_designe_curve_bounded_surface); + a_337boundaries = + new AttrDescriptor("boundaries",t_50,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_curve_bounded_surface); config_control_designe_curve_bounded_surface->AddExplicitAttr (a_337boundaries); - a_338implicit_outer = new AttrDescriptor("implicit_outer",t_BOOLEAN_TYPE,F,F,F,*config_control_designe_curve_bounded_surface); + a_338implicit_outer = + new AttrDescriptor("implicit_outer",t_sdaiBOOLEAN, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_curve_bounded_surface); config_control_designe_curve_bounded_surface->AddExplicitAttr (a_338implicit_outer); -///////// END_ENTITY curve_bounded_surface + reg.AddEntity (*config_control_designe_curve_bounded_surface); +///////// END_ENTITY curve_bounded_surface -///////// ENTITY closed_shell +///////// ENTITY closed_shell - reg.AddEntity (*config_control_designe_closed_shell); config_control_designe_closed_shell->AddSupertype(config_control_designe_connected_face_set); config_control_designe_connected_face_set->AddSubtype(config_control_designe_closed_shell); -///////// END_ENTITY closed_shell + reg.AddEntity (*config_control_designe_closed_shell); +///////// END_ENTITY closed_shell -///////// ENTITY design_make_from_relationship +///////// ENTITY design_make_from_relationship - reg.AddEntity (*config_control_designe_design_make_from_relationship); config_control_designe_design_make_from_relationship->AddSupertype(config_control_designe_product_definition_relationship); config_control_designe_product_definition_relationship->AddSubtype(config_control_designe_design_make_from_relationship); -///////// END_ENTITY design_make_from_relationship + reg.AddEntity (*config_control_designe_design_make_from_relationship); +///////// END_ENTITY design_make_from_relationship -///////// ENTITY definitional_representation +///////// ENTITY definitional_representation - reg.AddEntity (*config_control_designe_definitional_representation); config_control_designe_definitional_representation->AddSupertype(config_control_designe_representation); config_control_designe_representation->AddSubtype(config_control_designe_definitional_representation); -///////// END_ENTITY definitional_representation + reg.AddEntity (*config_control_designe_definitional_representation); +///////// END_ENTITY definitional_representation -///////// ENTITY product_definition_shape +///////// ENTITY product_definition_shape - reg.AddEntity (*config_control_designe_product_definition_shape); config_control_designe_product_definition_shape->AddSupertype(config_control_designe_property_definition); config_control_designe_property_definition->AddSubtype(config_control_designe_product_definition_shape); -///////// END_ENTITY product_definition_shape + reg.AddEntity (*config_control_designe_product_definition_shape); +///////// END_ENTITY product_definition_shape -///////// ENTITY si_unit +///////// ENTITY si_unit - reg.AddEntity (*config_control_designe_si_unit); config_control_designe_si_unit->AddSupertype(config_control_designe_named_unit); config_control_designe_named_unit->AddSubtype(config_control_designe_si_unit); - a_339prefix = new AttrDescriptor("prefix",config_control_designt_si_prefix,T,F,F,*config_control_designe_si_unit); + a_339prefix = + new AttrDescriptor("prefix",config_control_designt_si_prefix, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_si_unit); config_control_designe_si_unit->AddExplicitAttr (a_339prefix); - a_340name = new AttrDescriptor("name",config_control_designt_si_unit_name,F,F,F,*config_control_designe_si_unit); + a_340name = + new AttrDescriptor("name",config_control_designt_si_unit_name, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_si_unit); config_control_designe_si_unit->AddExplicitAttr (a_340name); - a_341Dnamed_unit_dimensions = new AttrDescriptor("named_unit.dimensions",config_control_designe_dimensional_exponents,F,F,T,*config_control_designe_si_unit); + a_341Dnamed_unit_dimensions = + new Derived_attribute("named_unit.dimensions",config_control_designe_dimensional_exponents, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_si_unit); config_control_designe_si_unit->AddExplicitAttr (a_341Dnamed_unit_dimensions); -///////// END_ENTITY si_unit + a_341Dnamed_unit_dimensions->initializer_("dimensions_for_si_unit(SELF.name)"); + reg.AddEntity (*config_control_designe_si_unit); +///////// END_ENTITY si_unit -///////// ENTITY bezier_surface +///////// ENTITY bezier_surface - reg.AddEntity (*config_control_designe_bezier_surface); config_control_designe_bezier_surface->AddSupertype(config_control_designe_b_spline_surface); config_control_designe_b_spline_surface->AddSubtype(config_control_designe_bezier_surface); -///////// END_ENTITY bezier_surface + reg.AddEntity (*config_control_designe_bezier_surface); +///////// END_ENTITY bezier_surface -///////// ENTITY certification_assignment +///////// ENTITY certification_assignment - reg.AddEntity (*config_control_designe_certification_assignment); - a_342assigned_certification = new AttrDescriptor("assigned_certification",config_control_designe_certification,F,F,F,*config_control_designe_certification_assignment); + config_control_designe_certification_assignment->AddSupertype_Stmt("ABSTRACT SUPERTYPE"); + a_342assigned_certification = + new AttrDescriptor("assigned_certification",config_control_designe_certification, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_certification_assignment); config_control_designe_certification_assignment->AddExplicitAttr (a_342assigned_certification); -///////// END_ENTITY certification_assignment + reg.AddEntity (*config_control_designe_certification_assignment); +///////// END_ENTITY certification_assignment -///////// ENTITY start_work +///////// ENTITY start_work - reg.AddEntity (*config_control_designe_start_work); config_control_designe_start_work->AddSupertype(config_control_designe_action_assignment); config_control_designe_action_assignment->AddSubtype(config_control_designe_start_work); SetTypeDescriptor * t_51 = new SetTypeDescriptor; @@ -3125,22 +3609,28 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_51->Bound1(1); t_51->Bound2(2147483647); t_51->FundamentalType(SET_TYPE); - t_51->Description("SET [1:?] OF Work_Item"); + t_51->Description("SET [1:?] OF work_item"); + t_51->OriginatingSchema(s_config_control_design); t_51->ReferentType(config_control_designt_work_item); - a_343items = new AttrDescriptor("items",t_51,F,F,F,*config_control_designe_start_work); + a_343items = + new AttrDescriptor("items",t_51,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_start_work); config_control_designe_start_work->AddExplicitAttr (a_343items); -///////// END_ENTITY start_work + reg.AddEntity (*config_control_designe_start_work); +///////// END_ENTITY start_work -///////// ENTITY contract_type +///////// ENTITY contract_type - reg.AddEntity (*config_control_designe_contract_type); - a_344description = new AttrDescriptor("description",config_control_designt_label,F,F,F,*config_control_designe_contract_type); + a_344description = + new AttrDescriptor("description",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_contract_type); config_control_designe_contract_type->AddExplicitAttr (a_344description); -///////// END_ENTITY contract_type + reg.AddEntity (*config_control_designe_contract_type); +///////// END_ENTITY contract_type -///////// ENTITY b_spline_curve_with_knots +///////// ENTITY b_spline_curve_with_knots - reg.AddEntity (*config_control_designe_b_spline_curve_with_knots); config_control_designe_b_spline_curve_with_knots->AddSupertype(config_control_designe_b_spline_curve); config_control_designe_b_spline_curve->AddSubtype(config_control_designe_b_spline_curve_with_knots); ListTypeDescriptor * t_52 = new ListTypeDescriptor; @@ -3148,28 +3638,41 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_52->Bound1(2); t_52->Bound2(2147483647); t_52->FundamentalType(LIST_TYPE); - t_52->Description("LIST [2:?] of INTEGER"); - t_52->ReferentType(t_INTEGER_TYPE); - a_345knot_multiplicities = new AttrDescriptor("knot_multiplicities",t_52,F,F,F,*config_control_designe_b_spline_curve_with_knots); + t_52->Description("LIST [2:?] OF INTEGER"); + t_52->OriginatingSchema(s_config_control_design); + t_52->ReferentType(t_sdaiINTEGER); + a_345knot_multiplicities = + new AttrDescriptor("knot_multiplicities",t_52,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_b_spline_curve_with_knots); config_control_designe_b_spline_curve_with_knots->AddExplicitAttr (a_345knot_multiplicities); ListTypeDescriptor * t_53 = new ListTypeDescriptor; t_53->AssignAggrCreator((AggregateCreator) create_RealAggregate); // Creator function t_53->Bound1(2); t_53->Bound2(2147483647); t_53->FundamentalType(LIST_TYPE); - t_53->Description("LIST [2:?] of Parameter_Value"); - t_53->ReferentType(t_REAL_TYPE); - a_346knots = new AttrDescriptor("knots",t_53,F,F,F,*config_control_designe_b_spline_curve_with_knots); + t_53->Description("LIST [2:?] OF parameter_value"); + t_53->OriginatingSchema(s_config_control_design); + t_53->ReferentType(config_control_designt_parameter_value); + a_346knots = + new AttrDescriptor("knots",t_53,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_b_spline_curve_with_knots); config_control_designe_b_spline_curve_with_knots->AddExplicitAttr (a_346knots); - a_347knot_spec = new AttrDescriptor("knot_spec",config_control_designt_knot_type,F,F,F,*config_control_designe_b_spline_curve_with_knots); + a_347knot_spec = + new AttrDescriptor("knot_spec",config_control_designt_knot_type, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_b_spline_curve_with_knots); config_control_designe_b_spline_curve_with_knots->AddExplicitAttr (a_347knot_spec); - a_348Dupper_index_on_knots = new AttrDescriptor("upper_index_on_knots",t_INTEGER_TYPE,F,F,T,*config_control_designe_b_spline_curve_with_knots); + a_348Dupper_index_on_knots = + new Derived_attribute("upper_index_on_knots",t_sdaiINTEGER, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_b_spline_curve_with_knots); config_control_designe_b_spline_curve_with_knots->AddExplicitAttr (a_348Dupper_index_on_knots); -///////// END_ENTITY b_spline_curve_with_knots + a_348Dupper_index_on_knots->initializer_("SIZEOF(knots)"); + reg.AddEntity (*config_control_designe_b_spline_curve_with_knots); +///////// END_ENTITY b_spline_curve_with_knots -///////// ENTITY cc_design_approval +///////// ENTITY cc_design_approval - reg.AddEntity (*config_control_designe_cc_design_approval); config_control_designe_cc_design_approval->AddSupertype(config_control_designe_approval_assignment); config_control_designe_approval_assignment->AddSubtype(config_control_designe_cc_design_approval); SetTypeDescriptor * t_54 = new SetTypeDescriptor; @@ -3177,42 +3680,57 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_54->Bound1(1); t_54->Bound2(2147483647); t_54->FundamentalType(SET_TYPE); - t_54->Description("SET [1:?] OF Approved_Item"); + t_54->Description("SET [1:?] OF approved_item"); + t_54->OriginatingSchema(s_config_control_design); t_54->ReferentType(config_control_designt_approved_item); - a_349items = new AttrDescriptor("items",t_54,F,F,F,*config_control_designe_cc_design_approval); + a_349items = + new AttrDescriptor("items",t_54,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_cc_design_approval); config_control_designe_cc_design_approval->AddExplicitAttr (a_349items); -///////// END_ENTITY cc_design_approval + reg.AddEntity (*config_control_designe_cc_design_approval); +///////// END_ENTITY cc_design_approval -///////// ENTITY edge_based_wireframe_shape_representation +///////// ENTITY edge_based_wireframe_shape_representation - reg.AddEntity (*config_control_designe_edge_based_wireframe_shape_representation); config_control_designe_edge_based_wireframe_shape_representation->AddSupertype(config_control_designe_shape_representation); config_control_designe_shape_representation->AddSubtype(config_control_designe_edge_based_wireframe_shape_representation); -///////// END_ENTITY edge_based_wireframe_shape_representation + reg.AddEntity (*config_control_designe_edge_based_wireframe_shape_representation); +///////// END_ENTITY edge_based_wireframe_shape_representation -///////// ENTITY geometrically_bounded_wireframe_shape_representation +///////// ENTITY geometrically_bounded_wireframe_shape_representation - reg.AddEntity (*config_control_designe_geometrically_bounded_wireframe_shape_representation); config_control_designe_geometrically_bounded_wireframe_shape_representation->AddSupertype(config_control_designe_shape_representation); config_control_designe_shape_representation->AddSubtype(config_control_designe_geometrically_bounded_wireframe_shape_representation); -///////// END_ENTITY geometrically_bounded_wireframe_shape_representation + reg.AddEntity (*config_control_designe_geometrically_bounded_wireframe_shape_representation); +///////// END_ENTITY geometrically_bounded_wireframe_shape_representation -///////// ENTITY product_concept +///////// ENTITY product_concept - reg.AddEntity (*config_control_designe_product_concept); - a_350id = new AttrDescriptor("id",config_control_designt_identifier,F,T,F,*config_control_designe_product_concept); + a_350id = + new AttrDescriptor("id",config_control_designt_identifier, + SCLLOG(LFalse),SCLLOG(LTrue), AttrType_Explicit, + *config_control_designe_product_concept); config_control_designe_product_concept->AddExplicitAttr (a_350id); - a_351name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_product_concept); + a_351name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_product_concept); config_control_designe_product_concept->AddExplicitAttr (a_351name); - a_352description = new AttrDescriptor("description",config_control_designt_text,F,F,F,*config_control_designe_product_concept); + a_352description = + new AttrDescriptor("description",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_product_concept); config_control_designe_product_concept->AddExplicitAttr (a_352description); - a_353market_context = new AttrDescriptor("market_context",config_control_designe_product_concept_context,F,F,F,*config_control_designe_product_concept); + a_353market_context = + new AttrDescriptor("market_context",config_control_designe_product_concept_context, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_product_concept); config_control_designe_product_concept->AddExplicitAttr (a_353market_context); -///////// END_ENTITY product_concept + reg.AddEntity (*config_control_designe_product_concept); +///////// END_ENTITY product_concept -///////// ENTITY cc_design_contract +///////// ENTITY cc_design_contract - reg.AddEntity (*config_control_designe_cc_design_contract); config_control_designe_cc_design_contract->AddSupertype(config_control_designe_contract_assignment); config_control_designe_contract_assignment->AddSubtype(config_control_designe_cc_design_contract); SetTypeDescriptor * t_55 = new SetTypeDescriptor; @@ -3220,42 +3738,55 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_55->Bound1(1); t_55->Bound2(2147483647); t_55->FundamentalType(SET_TYPE); - t_55->Description("SET [1:?] OF Contracted_Item"); + t_55->Description("SET [1:?] OF contracted_item"); + t_55->OriginatingSchema(s_config_control_design); t_55->ReferentType(config_control_designt_contracted_item); - a_354items = new AttrDescriptor("items",t_55,F,F,F,*config_control_designe_cc_design_contract); + a_354items = + new AttrDescriptor("items",t_55,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_cc_design_contract); config_control_designe_cc_design_contract->AddExplicitAttr (a_354items); -///////// END_ENTITY cc_design_contract + reg.AddEntity (*config_control_designe_cc_design_contract); +///////// END_ENTITY cc_design_contract -///////// ENTITY seam_curve +///////// ENTITY seam_curve - reg.AddEntity (*config_control_designe_seam_curve); config_control_designe_seam_curve->AddSupertype(config_control_designe_surface_curve); config_control_designe_surface_curve->AddSubtype(config_control_designe_seam_curve); -///////// END_ENTITY seam_curve + reg.AddEntity (*config_control_designe_seam_curve); +///////// END_ENTITY seam_curve -///////// ENTITY axis2_placement_3d +///////// ENTITY axis2_placement_3d - reg.AddEntity (*config_control_designe_axis2_placement_3d); config_control_designe_axis2_placement_3d->AddSupertype(config_control_designe_placement); config_control_designe_placement->AddSubtype(config_control_designe_axis2_placement_3d); - a_355axis = new AttrDescriptor("axis",config_control_designe_direction,T,F,F,*config_control_designe_axis2_placement_3d); + a_355axis = + new AttrDescriptor("axis",config_control_designe_direction, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_axis2_placement_3d); config_control_designe_axis2_placement_3d->AddExplicitAttr (a_355axis); - a_356ref_direction = new AttrDescriptor("ref_direction",config_control_designe_direction,T,F,F,*config_control_designe_axis2_placement_3d); + a_356ref_direction = + new AttrDescriptor("ref_direction",config_control_designe_direction, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_axis2_placement_3d); config_control_designe_axis2_placement_3d->AddExplicitAttr (a_356ref_direction); ListTypeDescriptor * t_56 = new ListTypeDescriptor; t_56->AssignAggrCreator((AggregateCreator) create_EntityAggregate); // Creator function t_56->Bound1(3); t_56->Bound2(3); t_56->FundamentalType(LIST_TYPE); - t_56->Description("LIST [3:3] of Direction"); + t_56->Description("LIST [3:3] OF direction"); + t_56->OriginatingSchema(s_config_control_design); t_56->ReferentType(config_control_designe_direction); - a_357Dp = new AttrDescriptor("p",t_56,F,F,T,*config_control_designe_axis2_placement_3d); + a_357Dp = + new Derived_attribute("p",t_56,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_axis2_placement_3d); config_control_designe_axis2_placement_3d->AddExplicitAttr (a_357Dp); -///////// END_ENTITY axis2_placement_3d + a_357Dp->initializer_("build_axes(axis,ref_direction)"); + reg.AddEntity (*config_control_designe_axis2_placement_3d); +///////// END_ENTITY axis2_placement_3d -///////// ENTITY rational_b_spline_surface +///////// ENTITY rational_b_spline_surface - reg.AddEntity (*config_control_designe_rational_b_spline_surface); config_control_designe_rational_b_spline_surface->AddSupertype(config_control_designe_b_spline_surface); config_control_designe_b_spline_surface->AddSubtype(config_control_designe_rational_b_spline_surface); ListTypeDescriptor * t_57 = new ListTypeDescriptor; @@ -3263,67 +3794,94 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_57->Bound1(2); t_57->Bound2(2147483647); t_57->FundamentalType(LIST_TYPE); - t_57->Description("LIST [2:?] of LIST [2:?] of REAL"); + t_57->Description("LIST [2:?] OF LIST [2:?] OF REAL"); + t_57->OriginatingSchema(s_config_control_design); ListTypeDescriptor * t_58 = new ListTypeDescriptor; t_58->AssignAggrCreator((AggregateCreator) create_RealAggregate); // Creator function t_58->Bound1(2); t_58->Bound2(2147483647); t_58->FundamentalType(LIST_TYPE); - t_58->Description("LIST [2:?] of REAL"); - t_58->ReferentType(t_REAL_TYPE); + t_58->Description("LIST [2:?] OF REAL"); + t_58->OriginatingSchema(s_config_control_design); + t_58->ReferentType(t_sdaiREAL); t_57->ReferentType(t_58); - a_358weights_data = new AttrDescriptor("weights_data",t_57,F,F,F,*config_control_designe_rational_b_spline_surface); + a_358weights_data = + new AttrDescriptor("weights_data",t_57,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_rational_b_spline_surface); config_control_designe_rational_b_spline_surface->AddExplicitAttr (a_358weights_data); ArrayTypeDescriptor * t_59 = new ArrayTypeDescriptor; t_59->AssignAggrCreator((AggregateCreator) create_GenericAggregate); // Creator function t_59->Bound1(0); - t_59->Bound2(537692792); + t_59->Bound2(1025168); t_59->FundamentalType(ARRAY_TYPE); t_59->Description("ARRAY [0:u_upper] OF ARRAY [0:v_upper] OF REAL"); + t_59->OriginatingSchema(s_config_control_design); ArrayTypeDescriptor * t_60 = new ArrayTypeDescriptor; t_60->AssignAggrCreator((AggregateCreator) create_RealAggregate); // Creator function t_60->Bound1(0); - t_60->Bound2(537693480); + t_60->Bound2(1025208); t_60->FundamentalType(ARRAY_TYPE); t_60->Description("ARRAY [0:v_upper] OF REAL"); - t_60->ReferentType(t_REAL_TYPE); + t_60->OriginatingSchema(s_config_control_design); + t_60->ReferentType(t_sdaiREAL); t_59->ReferentType(t_60); - a_359Dweights = new AttrDescriptor("weights",t_59,F,F,T,*config_control_designe_rational_b_spline_surface); + a_359Dweights = + new Derived_attribute("weights",t_59,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_rational_b_spline_surface); config_control_designe_rational_b_spline_surface->AddExplicitAttr (a_359Dweights); -///////// END_ENTITY rational_b_spline_surface + a_359Dweights->initializer_("make_array_of_array(weights_data,0,u_upper,0,v_upper)"); + reg.AddEntity (*config_control_designe_rational_b_spline_surface); +///////// END_ENTITY rational_b_spline_surface -///////// ENTITY configuration_design +///////// ENTITY configuration_design - reg.AddEntity (*config_control_designe_configuration_design); - a_360configuration = new AttrDescriptor("configuration",config_control_designe_configuration_item,F,T,F,*config_control_designe_configuration_design); + a_360configuration = + new AttrDescriptor("configuration",config_control_designe_configuration_item, + SCLLOG(LFalse),SCLLOG(LTrue), AttrType_Explicit, + *config_control_designe_configuration_design); config_control_designe_configuration_design->AddExplicitAttr (a_360configuration); - a_361design = new AttrDescriptor("design",config_control_designe_product_definition_formation,F,T,F,*config_control_designe_configuration_design); + a_361design = + new AttrDescriptor("design",config_control_designe_product_definition_formation, + SCLLOG(LFalse),SCLLOG(LTrue), AttrType_Explicit, + *config_control_designe_configuration_design); config_control_designe_configuration_design->AddExplicitAttr (a_361design); -///////// END_ENTITY configuration_design + reg.AddEntity (*config_control_designe_configuration_design); +///////// END_ENTITY configuration_design -///////// ENTITY design_context +///////// ENTITY design_context - reg.AddEntity (*config_control_designe_design_context); config_control_designe_design_context->AddSupertype(config_control_designe_product_definition_context); config_control_designe_product_definition_context->AddSubtype(config_control_designe_design_context); -///////// END_ENTITY design_context + reg.AddEntity (*config_control_designe_design_context); +///////// END_ENTITY design_context -///////// ENTITY product_definition +///////// ENTITY product_definition - reg.AddEntity (*config_control_designe_product_definition); - a_362id = new AttrDescriptor("id",config_control_designt_identifier,F,F,F,*config_control_designe_product_definition); + a_362id = + new AttrDescriptor("id",config_control_designt_identifier, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_product_definition); config_control_designe_product_definition->AddExplicitAttr (a_362id); - a_363description = new AttrDescriptor("description",config_control_designt_text,F,F,F,*config_control_designe_product_definition); + a_363description = + new AttrDescriptor("description",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_product_definition); config_control_designe_product_definition->AddExplicitAttr (a_363description); - a_364formation = new AttrDescriptor("formation",config_control_designe_product_definition_formation,F,F,F,*config_control_designe_product_definition); + a_364formation = + new AttrDescriptor("formation",config_control_designe_product_definition_formation, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_product_definition); config_control_designe_product_definition->AddExplicitAttr (a_364formation); - a_365frame_of_reference = new AttrDescriptor("frame_of_reference",config_control_designe_product_definition_context,F,F,F,*config_control_designe_product_definition); + a_365frame_of_reference = + new AttrDescriptor("frame_of_reference",config_control_designe_product_definition_context, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_product_definition); config_control_designe_product_definition->AddExplicitAttr (a_365frame_of_reference); -///////// END_ENTITY product_definition + reg.AddEntity (*config_control_designe_product_definition); +///////// END_ENTITY product_definition -///////// ENTITY product_definition_with_associated_documents +///////// ENTITY product_definition_with_associated_documents - reg.AddEntity (*config_control_designe_product_definition_with_associated_documents); config_control_designe_product_definition_with_associated_documents->AddSupertype(config_control_designe_product_definition); config_control_designe_product_definition->AddSubtype(config_control_designe_product_definition_with_associated_documents); SetTypeDescriptor * t_61 = new SetTypeDescriptor; @@ -3331,26 +3889,38 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_61->Bound1(1); t_61->Bound2(2147483647); t_61->FundamentalType(SET_TYPE); - t_61->Description("SET [1:?] OF Document"); + t_61->Description("SET [1:?] OF document"); + t_61->OriginatingSchema(s_config_control_design); t_61->ReferentType(config_control_designe_document); - a_366documentation_ids = new AttrDescriptor("documentation_ids",t_61,F,F,F,*config_control_designe_product_definition_with_associated_documents); + a_366documentation_ids = + new AttrDescriptor("documentation_ids",t_61,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_product_definition_with_associated_documents); config_control_designe_product_definition_with_associated_documents->AddExplicitAttr (a_366documentation_ids); -///////// END_ENTITY product_definition_with_associated_documents + reg.AddEntity (*config_control_designe_product_definition_with_associated_documents); +///////// END_ENTITY product_definition_with_associated_documents -///////// ENTITY organization +///////// ENTITY organization - reg.AddEntity (*config_control_designe_organization); - a_367id = new AttrDescriptor("id",config_control_designt_identifier,T,F,F,*config_control_designe_organization); + a_367id = + new AttrDescriptor("id",config_control_designt_identifier, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_organization); config_control_designe_organization->AddExplicitAttr (a_367id); - a_368name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_organization); + a_368name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_organization); config_control_designe_organization->AddExplicitAttr (a_368name); - a_369description = new AttrDescriptor("description",config_control_designt_text,F,F,F,*config_control_designe_organization); + a_369description = + new AttrDescriptor("description",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_organization); config_control_designe_organization->AddExplicitAttr (a_369description); -///////// END_ENTITY organization + reg.AddEntity (*config_control_designe_organization); +///////// END_ENTITY organization -///////// ENTITY cc_design_certification +///////// ENTITY cc_design_certification - reg.AddEntity (*config_control_designe_cc_design_certification); config_control_designe_cc_design_certification->AddSupertype(config_control_designe_certification_assignment); config_control_designe_certification_assignment->AddSubtype(config_control_designe_cc_design_certification); SetTypeDescriptor * t_62 = new SetTypeDescriptor; @@ -3358,15 +3928,18 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_62->Bound1(1); t_62->Bound2(2147483647); t_62->FundamentalType(SET_TYPE); - t_62->Description("SET [1:?] OF Certified_Item"); + t_62->Description("SET [1:?] OF certified_item"); + t_62->OriginatingSchema(s_config_control_design); t_62->ReferentType(config_control_designt_certified_item); - a_370items = new AttrDescriptor("items",t_62,F,F,F,*config_control_designe_cc_design_certification); + a_370items = + new AttrDescriptor("items",t_62,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_cc_design_certification); config_control_designe_cc_design_certification->AddExplicitAttr (a_370items); -///////// END_ENTITY cc_design_certification + reg.AddEntity (*config_control_designe_cc_design_certification); +///////// END_ENTITY cc_design_certification -///////// ENTITY b_spline_surface_with_knots +///////// ENTITY b_spline_surface_with_knots - reg.AddEntity (*config_control_designe_b_spline_surface_with_knots); config_control_designe_b_spline_surface_with_knots->AddSupertype(config_control_designe_b_spline_surface); config_control_designe_b_spline_surface->AddSubtype(config_control_designe_b_spline_surface_with_knots); ListTypeDescriptor * t_63 = new ListTypeDescriptor; @@ -3374,103 +3947,154 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_63->Bound1(2); t_63->Bound2(2147483647); t_63->FundamentalType(LIST_TYPE); - t_63->Description("LIST [2:?] of INTEGER"); - t_63->ReferentType(t_INTEGER_TYPE); - a_371u_multiplicities = new AttrDescriptor("u_multiplicities",t_63,F,F,F,*config_control_designe_b_spline_surface_with_knots); + t_63->Description("LIST [2:?] OF INTEGER"); + t_63->OriginatingSchema(s_config_control_design); + t_63->ReferentType(t_sdaiINTEGER); + a_371u_multiplicities = + new AttrDescriptor("u_multiplicities",t_63,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_b_spline_surface_with_knots); config_control_designe_b_spline_surface_with_knots->AddExplicitAttr (a_371u_multiplicities); ListTypeDescriptor * t_64 = new ListTypeDescriptor; t_64->AssignAggrCreator((AggregateCreator) create_IntAggregate); // Creator function t_64->Bound1(2); t_64->Bound2(2147483647); t_64->FundamentalType(LIST_TYPE); - t_64->Description("LIST [2:?] of INTEGER"); - t_64->ReferentType(t_INTEGER_TYPE); - a_372v_multiplicities = new AttrDescriptor("v_multiplicities",t_64,F,F,F,*config_control_designe_b_spline_surface_with_knots); + t_64->Description("LIST [2:?] OF INTEGER"); + t_64->OriginatingSchema(s_config_control_design); + t_64->ReferentType(t_sdaiINTEGER); + a_372v_multiplicities = + new AttrDescriptor("v_multiplicities",t_64,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_b_spline_surface_with_knots); config_control_designe_b_spline_surface_with_knots->AddExplicitAttr (a_372v_multiplicities); ListTypeDescriptor * t_65 = new ListTypeDescriptor; t_65->AssignAggrCreator((AggregateCreator) create_RealAggregate); // Creator function t_65->Bound1(2); t_65->Bound2(2147483647); t_65->FundamentalType(LIST_TYPE); - t_65->Description("LIST [2:?] of Parameter_Value"); - t_65->ReferentType(t_REAL_TYPE); - a_373u_knots = new AttrDescriptor("u_knots",t_65,F,F,F,*config_control_designe_b_spline_surface_with_knots); + t_65->Description("LIST [2:?] OF parameter_value"); + t_65->OriginatingSchema(s_config_control_design); + t_65->ReferentType(config_control_designt_parameter_value); + a_373u_knots = + new AttrDescriptor("u_knots",t_65,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_b_spline_surface_with_knots); config_control_designe_b_spline_surface_with_knots->AddExplicitAttr (a_373u_knots); ListTypeDescriptor * t_66 = new ListTypeDescriptor; t_66->AssignAggrCreator((AggregateCreator) create_RealAggregate); // Creator function t_66->Bound1(2); t_66->Bound2(2147483647); t_66->FundamentalType(LIST_TYPE); - t_66->Description("LIST [2:?] of Parameter_Value"); - t_66->ReferentType(t_REAL_TYPE); - a_374v_knots = new AttrDescriptor("v_knots",t_66,F,F,F,*config_control_designe_b_spline_surface_with_knots); + t_66->Description("LIST [2:?] OF parameter_value"); + t_66->OriginatingSchema(s_config_control_design); + t_66->ReferentType(config_control_designt_parameter_value); + a_374v_knots = + new AttrDescriptor("v_knots",t_66,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_b_spline_surface_with_knots); config_control_designe_b_spline_surface_with_knots->AddExplicitAttr (a_374v_knots); - a_375knot_spec = new AttrDescriptor("knot_spec",config_control_designt_knot_type,F,F,F,*config_control_designe_b_spline_surface_with_knots); + a_375knot_spec = + new AttrDescriptor("knot_spec",config_control_designt_knot_type, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_b_spline_surface_with_knots); config_control_designe_b_spline_surface_with_knots->AddExplicitAttr (a_375knot_spec); - a_376Dknot_u_upper = new AttrDescriptor("knot_u_upper",t_INTEGER_TYPE,F,F,T,*config_control_designe_b_spline_surface_with_knots); + a_376Dknot_u_upper = + new Derived_attribute("knot_u_upper",t_sdaiINTEGER, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_b_spline_surface_with_knots); config_control_designe_b_spline_surface_with_knots->AddExplicitAttr (a_376Dknot_u_upper); - a_377Dknot_v_upper = new AttrDescriptor("knot_v_upper",t_INTEGER_TYPE,F,F,T,*config_control_designe_b_spline_surface_with_knots); + a_376Dknot_u_upper->initializer_("SIZEOF(u_knots)"); + a_377Dknot_v_upper = + new Derived_attribute("knot_v_upper",t_sdaiINTEGER, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_b_spline_surface_with_knots); config_control_designe_b_spline_surface_with_knots->AddExplicitAttr (a_377Dknot_v_upper); -///////// END_ENTITY b_spline_surface_with_knots + a_377Dknot_v_upper->initializer_("SIZEOF(v_knots)"); + reg.AddEntity (*config_control_designe_b_spline_surface_with_knots); +///////// END_ENTITY b_spline_surface_with_knots -///////// ENTITY certification_type +///////// ENTITY certification_type - reg.AddEntity (*config_control_designe_certification_type); - a_378description = new AttrDescriptor("description",config_control_designt_label,F,F,F,*config_control_designe_certification_type); + a_378description = + new AttrDescriptor("description",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_certification_type); config_control_designe_certification_type->AddExplicitAttr (a_378description); -///////// END_ENTITY certification_type + reg.AddEntity (*config_control_designe_certification_type); +///////// END_ENTITY certification_type -///////// ENTITY oriented_path +///////// ENTITY oriented_path - reg.AddEntity (*config_control_designe_oriented_path); config_control_designe_oriented_path->AddSupertype(config_control_designe_path); config_control_designe_path->AddSubtype(config_control_designe_oriented_path); - a_379path_element = new AttrDescriptor("path_element",config_control_designe_path,F,F,F,*config_control_designe_oriented_path); + a_379path_element = + new AttrDescriptor("path_element",config_control_designe_path, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_oriented_path); config_control_designe_oriented_path->AddExplicitAttr (a_379path_element); - a_380orientation = new AttrDescriptor("orientation",t_BOOLEAN_TYPE,F,F,F,*config_control_designe_oriented_path); + a_380orientation = + new AttrDescriptor("orientation",t_sdaiBOOLEAN, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_oriented_path); config_control_designe_oriented_path->AddExplicitAttr (a_380orientation); ListTypeDescriptor * t_67 = new ListTypeDescriptor; t_67->AssignAggrCreator((AggregateCreator) create_EntityAggregate); // Creator function t_67->Bound1(1); t_67->Bound2(2147483647); - t_67->UniqueElements("T"); + t_67->UniqueElements(SCLLOG(LTrue)); t_67->FundamentalType(LIST_TYPE); - t_67->Description("UNIQUE LIST [1:?] of Oriented_Edge"); + t_67->Description("LIST [1:?] OF UNIQUE oriented_edge"); + t_67->OriginatingSchema(s_config_control_design); t_67->ReferentType(config_control_designe_oriented_edge); - a_381Dpath_edge_list = new AttrDescriptor("path.edge_list",t_67,F,F,T,*config_control_designe_oriented_path); + a_381Dpath_edge_list = + new Derived_attribute("path.edge_list",t_67,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_oriented_path); config_control_designe_oriented_path->AddExplicitAttr (a_381Dpath_edge_list); -///////// END_ENTITY oriented_path + a_381Dpath_edge_list->initializer_("conditional_reverse(SELF.orientation,SELF.path_element.edge_list)"); + reg.AddEntity (*config_control_designe_oriented_path); +///////// END_ENTITY oriented_path -///////// ENTITY security_classification +///////// ENTITY security_classification - reg.AddEntity (*config_control_designe_security_classification); - a_382name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_security_classification); + a_382name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_security_classification); config_control_designe_security_classification->AddExplicitAttr (a_382name); - a_383purpose = new AttrDescriptor("purpose",config_control_designt_text,F,F,F,*config_control_designe_security_classification); + a_383purpose = + new AttrDescriptor("purpose",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_security_classification); config_control_designe_security_classification->AddExplicitAttr (a_383purpose); - a_384security_level = new AttrDescriptor("security_level",config_control_designe_security_classification_level,F,F,F,*config_control_designe_security_classification); + a_384security_level = + new AttrDescriptor("security_level",config_control_designe_security_classification_level, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_security_classification); config_control_designe_security_classification->AddExplicitAttr (a_384security_level); -///////// END_ENTITY security_classification + reg.AddEntity (*config_control_designe_security_classification); +///////// END_ENTITY security_classification -///////// ENTITY vertex_loop +///////// ENTITY vertex_loop - reg.AddEntity (*config_control_designe_vertex_loop); config_control_designe_vertex_loop->AddSupertype(config_control_designe_loop); config_control_designe_loop->AddSubtype(config_control_designe_vertex_loop); - a_385loop_vertex = new AttrDescriptor("loop_vertex",config_control_designe_vertex,F,F,F,*config_control_designe_vertex_loop); + a_385loop_vertex = + new AttrDescriptor("loop_vertex",config_control_designe_vertex, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_vertex_loop); config_control_designe_vertex_loop->AddExplicitAttr (a_385loop_vertex); -///////// END_ENTITY vertex_loop + reg.AddEntity (*config_control_designe_vertex_loop); +///////// END_ENTITY vertex_loop -///////// ENTITY approval_status +///////// ENTITY approval_status - reg.AddEntity (*config_control_designe_approval_status); - a_386name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_approval_status); + a_386name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_approval_status); config_control_designe_approval_status->AddExplicitAttr (a_386name); -///////// END_ENTITY approval_status + reg.AddEntity (*config_control_designe_approval_status); +///////// END_ENTITY approval_status -///////// ENTITY cartesian_point +///////// ENTITY cartesian_point - reg.AddEntity (*config_control_designe_cartesian_point); config_control_designe_cartesian_point->AddSupertype(config_control_designe_point); config_control_designe_point->AddSubtype(config_control_designe_cartesian_point); ListTypeDescriptor * t_68 = new ListTypeDescriptor; @@ -3478,40 +4102,53 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_68->Bound1(1); t_68->Bound2(3); t_68->FundamentalType(LIST_TYPE); - t_68->Description("LIST [1:3] of Length_Measure"); - t_68->ReferentType(t_REAL_TYPE); - a_387coordinates = new AttrDescriptor("coordinates",t_68,F,F,F,*config_control_designe_cartesian_point); + t_68->Description("LIST [1:3] OF length_measure"); + t_68->OriginatingSchema(s_config_control_design); + t_68->ReferentType(config_control_designt_length_measure); + a_387coordinates = + new AttrDescriptor("coordinates",t_68,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_cartesian_point); config_control_designe_cartesian_point->AddExplicitAttr (a_387coordinates); -///////// END_ENTITY cartesian_point + reg.AddEntity (*config_control_designe_cartesian_point); +///////// END_ENTITY cartesian_point -///////// ENTITY date_and_time_assignment +///////// ENTITY date_and_time_assignment - reg.AddEntity (*config_control_designe_date_and_time_assignment); - a_388assigned_date_and_time = new AttrDescriptor("assigned_date_and_time",config_control_designe_date_and_time,F,F,F,*config_control_designe_date_and_time_assignment); + config_control_designe_date_and_time_assignment->AddSupertype_Stmt("ABSTRACT SUPERTYPE"); + a_388assigned_date_and_time = + new AttrDescriptor("assigned_date_and_time",config_control_designe_date_and_time, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_date_and_time_assignment); config_control_designe_date_and_time_assignment->AddExplicitAttr (a_388assigned_date_and_time); - a_389role = new AttrDescriptor("role",config_control_designe_date_time_role,F,F,F,*config_control_designe_date_and_time_assignment); + a_389role = + new AttrDescriptor("role",config_control_designe_date_time_role, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_date_and_time_assignment); config_control_designe_date_and_time_assignment->AddExplicitAttr (a_389role); -///////// END_ENTITY date_and_time_assignment + reg.AddEntity (*config_control_designe_date_and_time_assignment); +///////// END_ENTITY date_and_time_assignment -///////// ENTITY parametric_representation_context +///////// ENTITY parametric_representation_context - reg.AddEntity (*config_control_designe_parametric_representation_context); config_control_designe_parametric_representation_context->AddSupertype(config_control_designe_representation_context); config_control_designe_representation_context->AddSubtype(config_control_designe_parametric_representation_context); -///////// END_ENTITY parametric_representation_context + reg.AddEntity (*config_control_designe_parametric_representation_context); +///////// END_ENTITY parametric_representation_context -///////// ENTITY product_concept_context +///////// ENTITY product_concept_context - reg.AddEntity (*config_control_designe_product_concept_context); config_control_designe_product_concept_context->AddSupertype(config_control_designe_application_context_element); config_control_designe_application_context_element->AddSubtype(config_control_designe_product_concept_context); - a_390market_segment_type = new AttrDescriptor("market_segment_type",config_control_designt_label,F,F,F,*config_control_designe_product_concept_context); + a_390market_segment_type = + new AttrDescriptor("market_segment_type",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_product_concept_context); config_control_designe_product_concept_context->AddExplicitAttr (a_390market_segment_type); -///////// END_ENTITY product_concept_context + reg.AddEntity (*config_control_designe_product_concept_context); +///////// END_ENTITY product_concept_context -///////// ENTITY cartesian_transformation_operator_2d +///////// ENTITY cartesian_transformation_operator_2d - reg.AddEntity (*config_control_designe_cartesian_transformation_operator_2d); config_control_designe_cartesian_transformation_operator_2d->AddSupertype(config_control_designe_cartesian_transformation_operator); config_control_designe_cartesian_transformation_operator->AddSubtype(config_control_designe_cartesian_transformation_operator_2d); ListTypeDescriptor * t_69 = new ListTypeDescriptor; @@ -3519,93 +4156,145 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_69->Bound1(2); t_69->Bound2(2); t_69->FundamentalType(LIST_TYPE); - t_69->Description("LIST [2:2] of Direction"); + t_69->Description("LIST [2:2] OF direction"); + t_69->OriginatingSchema(s_config_control_design); t_69->ReferentType(config_control_designe_direction); - a_391Du = new AttrDescriptor("u",t_69,F,F,T,*config_control_designe_cartesian_transformation_operator_2d); + a_391Du = + new Derived_attribute("u",t_69,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_cartesian_transformation_operator_2d); config_control_designe_cartesian_transformation_operator_2d->AddExplicitAttr (a_391Du); -///////// END_ENTITY cartesian_transformation_operator_2d + a_391Du->initializer_("base_axis(2,SELF\\cartesian_transformation_operator.axis1,SELF\\\n cartesian_transformation_operator.axis2,?)"); + reg.AddEntity (*config_control_designe_cartesian_transformation_operator_2d); +///////// END_ENTITY cartesian_transformation_operator_2d -///////// ENTITY surface_patch +///////// ENTITY surface_patch - reg.AddEntity (*config_control_designe_surface_patch); - a_392parent_surface = new AttrDescriptor("parent_surface",config_control_designe_bounded_surface,F,F,F,*config_control_designe_surface_patch); + a_392parent_surface = + new AttrDescriptor("parent_surface",config_control_designe_bounded_surface, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_surface_patch); config_control_designe_surface_patch->AddExplicitAttr (a_392parent_surface); - a_393u_transition = new AttrDescriptor("u_transition",config_control_designt_transition_code,F,F,F,*config_control_designe_surface_patch); + a_393u_transition = + new AttrDescriptor("u_transition",config_control_designt_transition_code, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_surface_patch); config_control_designe_surface_patch->AddExplicitAttr (a_393u_transition); - a_394v_transition = new AttrDescriptor("v_transition",config_control_designt_transition_code,F,F,F,*config_control_designe_surface_patch); + a_394v_transition = + new AttrDescriptor("v_transition",config_control_designt_transition_code, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_surface_patch); config_control_designe_surface_patch->AddExplicitAttr (a_394v_transition); - a_395u_sense = new AttrDescriptor("u_sense",t_BOOLEAN_TYPE,F,F,F,*config_control_designe_surface_patch); + a_395u_sense = + new AttrDescriptor("u_sense",t_sdaiBOOLEAN, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_surface_patch); config_control_designe_surface_patch->AddExplicitAttr (a_395u_sense); - a_396v_sense = new AttrDescriptor("v_sense",t_BOOLEAN_TYPE,F,F,F,*config_control_designe_surface_patch); + a_396v_sense = + new AttrDescriptor("v_sense",t_sdaiBOOLEAN, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_surface_patch); config_control_designe_surface_patch->AddExplicitAttr (a_396v_sense); BagTypeDescriptor * t_70 = new BagTypeDescriptor; t_70->AssignAggrCreator((AggregateCreator) create_EntityAggregate); // Creator function t_70->Bound1(1); t_70->Bound2(2147483647); t_70->FundamentalType(BAG_TYPE); - t_70->Description("BAG [1:?] OF Rectangular_Composite_Surface"); + t_70->Description("BAG [1:?] OF rectangular_composite_surface"); + t_70->OriginatingSchema(s_config_control_design); t_70->ReferentType(config_control_designe_rectangular_composite_surface); - a_397Iusing_surfaces = new InverseAttrDescriptor("using_surfaces",t_70,F,F,*config_control_designe_surface_patch); + a_397Iusing_surfaces = + new Inverse_attribute("using_surfaces",t_70,SCLLOG(LFalse),SCLLOG(LFalse), + *config_control_designe_surface_patch); config_control_designe_surface_patch->AddInverseAttr (a_397Iusing_surfaces); -///////// END_ENTITY surface_patch + a_397Iusing_surfaces->inverted_attr_id_("segments"); + a_397Iusing_surfaces->inverted_entity_id_("rectangular_composite_surface"); +// inverse entity 3 rectangular_composite_surface + reg.AddEntity (*config_control_designe_surface_patch); +///////// END_ENTITY surface_patch -///////// ENTITY length_unit +///////// ENTITY length_unit - reg.AddEntity (*config_control_designe_length_unit); config_control_designe_length_unit->AddSupertype(config_control_designe_named_unit); config_control_designe_named_unit->AddSubtype(config_control_designe_length_unit); -///////// END_ENTITY length_unit + reg.AddEntity (*config_control_designe_length_unit); +///////// END_ENTITY length_unit -///////// ENTITY shape_aspect +///////// ENTITY shape_aspect - reg.AddEntity (*config_control_designe_shape_aspect); - a_398name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_shape_aspect); + a_398name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_shape_aspect); config_control_designe_shape_aspect->AddExplicitAttr (a_398name); - a_399description = new AttrDescriptor("description",config_control_designt_text,F,F,F,*config_control_designe_shape_aspect); + a_399description = + new AttrDescriptor("description",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_shape_aspect); config_control_designe_shape_aspect->AddExplicitAttr (a_399description); - a_400of_shape = new AttrDescriptor("of_shape",config_control_designe_product_definition_shape,F,F,F,*config_control_designe_shape_aspect); + a_400of_shape = + new AttrDescriptor("of_shape",config_control_designe_product_definition_shape, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_shape_aspect); config_control_designe_shape_aspect->AddExplicitAttr (a_400of_shape); - a_401product_definitional = new AttrDescriptor("product_definitional",t_LOGICAL_TYPE,F,F,F,*config_control_designe_shape_aspect); + a_401product_definitional = + new AttrDescriptor("product_definitional",t_sdaiLOGICAL, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_shape_aspect); config_control_designe_shape_aspect->AddExplicitAttr (a_401product_definitional); -///////// END_ENTITY shape_aspect + reg.AddEntity (*config_control_designe_shape_aspect); +///////// END_ENTITY shape_aspect -///////// ENTITY volume_measure_with_unit +///////// ENTITY volume_measure_with_unit - reg.AddEntity (*config_control_designe_volume_measure_with_unit); config_control_designe_volume_measure_with_unit->AddSupertype(config_control_designe_measure_with_unit); config_control_designe_measure_with_unit->AddSubtype(config_control_designe_volume_measure_with_unit); -///////// END_ENTITY volume_measure_with_unit + reg.AddEntity (*config_control_designe_volume_measure_with_unit); +///////// END_ENTITY volume_measure_with_unit -///////// ENTITY advanced_face +///////// ENTITY advanced_face - reg.AddEntity (*config_control_designe_advanced_face); config_control_designe_advanced_face->AddSupertype(config_control_designe_face_surface); config_control_designe_face_surface->AddSubtype(config_control_designe_advanced_face); -///////// END_ENTITY advanced_face + reg.AddEntity (*config_control_designe_advanced_face); +///////// END_ENTITY advanced_face -///////// ENTITY security_classification_level +///////// ENTITY security_classification_level - reg.AddEntity (*config_control_designe_security_classification_level); - a_402name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_security_classification_level); + a_402name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_security_classification_level); config_control_designe_security_classification_level->AddExplicitAttr (a_402name); -///////// END_ENTITY security_classification_level + reg.AddEntity (*config_control_designe_security_classification_level); +///////// END_ENTITY security_classification_level -///////// ENTITY approval_relationship +///////// ENTITY approval_relationship - reg.AddEntity (*config_control_designe_approval_relationship); - a_403name = new AttrDescriptor("name",config_control_designt_label,F,F,F,*config_control_designe_approval_relationship); + a_403name = + new AttrDescriptor("name",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_approval_relationship); config_control_designe_approval_relationship->AddExplicitAttr (a_403name); - a_404description = new AttrDescriptor("description",config_control_designt_text,F,F,F,*config_control_designe_approval_relationship); + a_404description = + new AttrDescriptor("description",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_approval_relationship); config_control_designe_approval_relationship->AddExplicitAttr (a_404description); - a_405relating_approval = new AttrDescriptor("relating_approval",config_control_designe_approval,F,F,F,*config_control_designe_approval_relationship); + a_405relating_approval = + new AttrDescriptor("relating_approval",config_control_designe_approval, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_approval_relationship); config_control_designe_approval_relationship->AddExplicitAttr (a_405relating_approval); - a_406related_approval = new AttrDescriptor("related_approval",config_control_designe_approval,F,F,F,*config_control_designe_approval_relationship); + a_406related_approval = + new AttrDescriptor("related_approval",config_control_designe_approval, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_approval_relationship); config_control_designe_approval_relationship->AddExplicitAttr (a_406related_approval); -///////// END_ENTITY approval_relationship + reg.AddEntity (*config_control_designe_approval_relationship); +///////// END_ENTITY approval_relationship -///////// ENTITY polyline +///////// ENTITY polyline - reg.AddEntity (*config_control_designe_polyline); config_control_designe_polyline->AddSupertype(config_control_designe_bounded_curve); config_control_designe_bounded_curve->AddSubtype(config_control_designe_polyline); ListTypeDescriptor * t_71 = new ListTypeDescriptor; @@ -3613,44 +4302,66 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_71->Bound1(2); t_71->Bound2(2147483647); t_71->FundamentalType(LIST_TYPE); - t_71->Description("LIST [2:?] of Cartesian_Point"); + t_71->Description("LIST [2:?] OF cartesian_point"); + t_71->OriginatingSchema(s_config_control_design); t_71->ReferentType(config_control_designe_cartesian_point); - a_407points = new AttrDescriptor("points",t_71,F,F,F,*config_control_designe_polyline); + a_407points = + new AttrDescriptor("points",t_71,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_polyline); config_control_designe_polyline->AddExplicitAttr (a_407points); -///////// END_ENTITY polyline + reg.AddEntity (*config_control_designe_polyline); +///////// END_ENTITY polyline -///////// ENTITY approval_person_organization +///////// ENTITY approval_person_organization - reg.AddEntity (*config_control_designe_approval_person_organization); - a_408person_organization = new AttrDescriptor("person_organization",config_control_designt_person_organization_select,F,F,F,*config_control_designe_approval_person_organization); + a_408person_organization = + new AttrDescriptor("person_organization",config_control_designt_person_organization_select, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_approval_person_organization); config_control_designe_approval_person_organization->AddExplicitAttr (a_408person_organization); - a_409authorized_approval = new AttrDescriptor("authorized_approval",config_control_designe_approval,F,F,F,*config_control_designe_approval_person_organization); + a_409authorized_approval = + new AttrDescriptor("authorized_approval",config_control_designe_approval, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_approval_person_organization); config_control_designe_approval_person_organization->AddExplicitAttr (a_409authorized_approval); - a_410role = new AttrDescriptor("role",config_control_designe_approval_role,F,F,F,*config_control_designe_approval_person_organization); + a_410role = + new AttrDescriptor("role",config_control_designe_approval_role, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_approval_person_organization); config_control_designe_approval_person_organization->AddExplicitAttr (a_410role); -///////// END_ENTITY approval_person_organization + reg.AddEntity (*config_control_designe_approval_person_organization); +///////// END_ENTITY approval_person_organization -///////// ENTITY surface_replica +///////// ENTITY surface_replica - reg.AddEntity (*config_control_designe_surface_replica); config_control_designe_surface_replica->AddSupertype(config_control_designe_surface); config_control_designe_surface->AddSubtype(config_control_designe_surface_replica); - a_411parent_surface = new AttrDescriptor("parent_surface",config_control_designe_surface,F,F,F,*config_control_designe_surface_replica); + a_411parent_surface = + new AttrDescriptor("parent_surface",config_control_designe_surface, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_surface_replica); config_control_designe_surface_replica->AddExplicitAttr (a_411parent_surface); - a_412transformation = new AttrDescriptor("transformation",config_control_designe_cartesian_transformation_operator_3d,F,F,F,*config_control_designe_surface_replica); + a_412transformation = + new AttrDescriptor("transformation",config_control_designe_cartesian_transformation_operator_3d, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_surface_replica); config_control_designe_surface_replica->AddExplicitAttr (a_412transformation); -///////// END_ENTITY surface_replica + reg.AddEntity (*config_control_designe_surface_replica); +///////// END_ENTITY surface_replica -///////// ENTITY security_classification_assignment +///////// ENTITY security_classification_assignment - reg.AddEntity (*config_control_designe_security_classification_assignment); - a_413assigned_security_classification = new AttrDescriptor("assigned_security_classification",config_control_designe_security_classification,F,F,F,*config_control_designe_security_classification_assignment); + config_control_designe_security_classification_assignment->AddSupertype_Stmt("ABSTRACT SUPERTYPE"); + a_413assigned_security_classification = + new AttrDescriptor("assigned_security_classification",config_control_designe_security_classification, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_security_classification_assignment); config_control_designe_security_classification_assignment->AddExplicitAttr (a_413assigned_security_classification); -///////// END_ENTITY security_classification_assignment + reg.AddEntity (*config_control_designe_security_classification_assignment); +///////// END_ENTITY security_classification_assignment -///////// ENTITY cc_design_security_classification +///////// ENTITY cc_design_security_classification - reg.AddEntity (*config_control_designe_cc_design_security_classification); config_control_designe_cc_design_security_classification->AddSupertype(config_control_designe_security_classification_assignment); config_control_designe_security_classification_assignment->AddSubtype(config_control_designe_cc_design_security_classification); SetTypeDescriptor * t_72 = new SetTypeDescriptor; @@ -3658,44 +4369,59 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_72->Bound1(1); t_72->Bound2(2147483647); t_72->FundamentalType(SET_TYPE); - t_72->Description("SET [1:?] OF Classified_Item"); + t_72->Description("SET [1:?] OF classified_item"); + t_72->OriginatingSchema(s_config_control_design); t_72->ReferentType(config_control_designt_classified_item); - a_414items = new AttrDescriptor("items",t_72,F,F,F,*config_control_designe_cc_design_security_classification); + a_414items = + new AttrDescriptor("items",t_72,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_cc_design_security_classification); config_control_designe_cc_design_security_classification->AddExplicitAttr (a_414items); -///////// END_ENTITY cc_design_security_classification + reg.AddEntity (*config_control_designe_cc_design_security_classification); +///////// END_ENTITY cc_design_security_classification -///////// ENTITY faceted_brep_shape_representation +///////// ENTITY faceted_brep_shape_representation - reg.AddEntity (*config_control_designe_faceted_brep_shape_representation); config_control_designe_faceted_brep_shape_representation->AddSupertype(config_control_designe_shape_representation); config_control_designe_shape_representation->AddSubtype(config_control_designe_faceted_brep_shape_representation); -///////// END_ENTITY faceted_brep_shape_representation + reg.AddEntity (*config_control_designe_faceted_brep_shape_representation); +///////// END_ENTITY faceted_brep_shape_representation -///////// ENTITY document_usage_constraint +///////// ENTITY document_usage_constraint - reg.AddEntity (*config_control_designe_document_usage_constraint); - a_415source = new AttrDescriptor("source",config_control_designe_document,F,F,F,*config_control_designe_document_usage_constraint); + a_415source = + new AttrDescriptor("source",config_control_designe_document, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_document_usage_constraint); config_control_designe_document_usage_constraint->AddExplicitAttr (a_415source); - a_416subject_element = new AttrDescriptor("subject_element",config_control_designt_label,F,F,F,*config_control_designe_document_usage_constraint); + a_416subject_element = + new AttrDescriptor("subject_element",config_control_designt_label, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_document_usage_constraint); config_control_designe_document_usage_constraint->AddExplicitAttr (a_416subject_element); - a_417subject_element_value = new AttrDescriptor("subject_element_value",config_control_designt_text,F,F,F,*config_control_designe_document_usage_constraint); + a_417subject_element_value = + new AttrDescriptor("subject_element_value",config_control_designt_text, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_document_usage_constraint); config_control_designe_document_usage_constraint->AddExplicitAttr (a_417subject_element_value); -///////// END_ENTITY document_usage_constraint + reg.AddEntity (*config_control_designe_document_usage_constraint); +///////// END_ENTITY document_usage_constraint -///////// ENTITY vertex_point +///////// ENTITY vertex_point - reg.AddEntity (*config_control_designe_vertex_point); config_control_designe_vertex_point->AddSupertype(config_control_designe_vertex); config_control_designe_vertex->AddSubtype(config_control_designe_vertex_point); config_control_designe_vertex_point->AddSupertype(config_control_designe_geometric_representation_item); config_control_designe_geometric_representation_item->AddSubtype(config_control_designe_vertex_point); - a_418vertex_geometry = new AttrDescriptor("vertex_geometry",config_control_designe_point,F,F,F,*config_control_designe_vertex_point); + a_418vertex_geometry = + new AttrDescriptor("vertex_geometry",config_control_designe_point, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_vertex_point); config_control_designe_vertex_point->AddExplicitAttr (a_418vertex_geometry); -///////// END_ENTITY vertex_point + reg.AddEntity (*config_control_designe_vertex_point); +///////// END_ENTITY vertex_point -///////// ENTITY cc_design_date_and_time_assignment +///////// ENTITY cc_design_date_and_time_assignment - reg.AddEntity (*config_control_designe_cc_design_date_and_time_assignment); config_control_designe_cc_design_date_and_time_assignment->AddSupertype(config_control_designe_date_and_time_assignment); config_control_designe_date_and_time_assignment->AddSubtype(config_control_designe_cc_design_date_and_time_assignment); SetTypeDescriptor * t_73 = new SetTypeDescriptor; @@ -3703,82 +4429,119 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_73->Bound1(1); t_73->Bound2(2147483647); t_73->FundamentalType(SET_TYPE); - t_73->Description("SET [1:?] OF Date_Time_Item"); + t_73->Description("SET [1:?] OF date_time_item"); + t_73->OriginatingSchema(s_config_control_design); t_73->ReferentType(config_control_designt_date_time_item); - a_419items = new AttrDescriptor("items",t_73,F,F,F,*config_control_designe_cc_design_date_and_time_assignment); + a_419items = + new AttrDescriptor("items",t_73,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_cc_design_date_and_time_assignment); config_control_designe_cc_design_date_and_time_assignment->AddExplicitAttr (a_419items); -///////// END_ENTITY cc_design_date_and_time_assignment + reg.AddEntity (*config_control_designe_cc_design_date_and_time_assignment); +///////// END_ENTITY cc_design_date_and_time_assignment -///////// ENTITY oriented_closed_shell +///////// ENTITY oriented_closed_shell - reg.AddEntity (*config_control_designe_oriented_closed_shell); config_control_designe_oriented_closed_shell->AddSupertype(config_control_designe_closed_shell); config_control_designe_closed_shell->AddSubtype(config_control_designe_oriented_closed_shell); - a_420closed_shell_element = new AttrDescriptor("closed_shell_element",config_control_designe_closed_shell,F,F,F,*config_control_designe_oriented_closed_shell); + a_420closed_shell_element = + new AttrDescriptor("closed_shell_element",config_control_designe_closed_shell, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_oriented_closed_shell); config_control_designe_oriented_closed_shell->AddExplicitAttr (a_420closed_shell_element); - a_421orientation = new AttrDescriptor("orientation",t_BOOLEAN_TYPE,F,F,F,*config_control_designe_oriented_closed_shell); + a_421orientation = + new AttrDescriptor("orientation",t_sdaiBOOLEAN, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_oriented_closed_shell); config_control_designe_oriented_closed_shell->AddExplicitAttr (a_421orientation); SetTypeDescriptor * t_74 = new SetTypeDescriptor; t_74->AssignAggrCreator((AggregateCreator) create_EntityAggregate); // Creator function t_74->Bound1(1); t_74->Bound2(2147483647); t_74->FundamentalType(SET_TYPE); - t_74->Description("SET [1:?] OF Face"); + t_74->Description("SET [1:?] OF face"); + t_74->OriginatingSchema(s_config_control_design); t_74->ReferentType(config_control_designe_face); - a_422Dconnected_face_set_cfs_faces = new AttrDescriptor("connected_face_set.cfs_faces",t_74,F,F,T,*config_control_designe_oriented_closed_shell); + a_422Dconnected_face_set_cfs_faces = + new Derived_attribute("connected_face_set.cfs_faces",t_74,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Deriving, + *config_control_designe_oriented_closed_shell); config_control_designe_oriented_closed_shell->AddExplicitAttr (a_422Dconnected_face_set_cfs_faces); -///////// END_ENTITY oriented_closed_shell + a_422Dconnected_face_set_cfs_faces->initializer_("conditional_reverse(SELF.orientation,SELF.closed_shell_element.cfs_faces)"); + reg.AddEntity (*config_control_designe_oriented_closed_shell); +///////// END_ENTITY oriented_closed_shell -///////// ENTITY person_and_organization +///////// ENTITY person_and_organization - reg.AddEntity (*config_control_designe_person_and_organization); - a_423the_person = new AttrDescriptor("the_person",config_control_designe_person,F,F,F,*config_control_designe_person_and_organization); + a_423the_person = + new AttrDescriptor("the_person",config_control_designe_person, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_person_and_organization); config_control_designe_person_and_organization->AddExplicitAttr (a_423the_person); - a_424the_organization = new AttrDescriptor("the_organization",config_control_designe_organization,F,F,F,*config_control_designe_person_and_organization); + a_424the_organization = + new AttrDescriptor("the_organization",config_control_designe_organization, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_person_and_organization); config_control_designe_person_and_organization->AddExplicitAttr (a_424the_organization); -///////// END_ENTITY person_and_organization + reg.AddEntity (*config_control_designe_person_and_organization); +///////// END_ENTITY person_and_organization -///////// ENTITY cylindrical_surface +///////// ENTITY cylindrical_surface - reg.AddEntity (*config_control_designe_cylindrical_surface); config_control_designe_cylindrical_surface->AddSupertype(config_control_designe_elementary_surface); config_control_designe_elementary_surface->AddSubtype(config_control_designe_cylindrical_surface); - a_425radius = new AttrDescriptor("radius",config_control_designt_positive_length_measure,F,F,F,*config_control_designe_cylindrical_surface); + a_425radius = + new AttrDescriptor("radius",config_control_designt_positive_length_measure, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_cylindrical_surface); config_control_designe_cylindrical_surface->AddExplicitAttr (a_425radius); -///////// END_ENTITY cylindrical_surface + reg.AddEntity (*config_control_designe_cylindrical_surface); +///////// END_ENTITY cylindrical_surface -///////// ENTITY local_time +///////// ENTITY local_time - reg.AddEntity (*config_control_designe_local_time); - a_426hour_component = new AttrDescriptor("hour_component",config_control_designt_hour_in_day,F,F,F,*config_control_designe_local_time); + a_426hour_component = + new AttrDescriptor("hour_component",config_control_designt_hour_in_day, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_local_time); config_control_designe_local_time->AddExplicitAttr (a_426hour_component); - a_427minute_component = new AttrDescriptor("minute_component",config_control_designt_minute_in_hour,T,F,F,*config_control_designe_local_time); + a_427minute_component = + new AttrDescriptor("minute_component",config_control_designt_minute_in_hour, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_local_time); config_control_designe_local_time->AddExplicitAttr (a_427minute_component); - a_428second_component = new AttrDescriptor("second_component",config_control_designt_second_in_minute,T,F,F,*config_control_designe_local_time); + a_428second_component = + new AttrDescriptor("second_component",config_control_designt_second_in_minute, + SCLLOG(LTrue),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_local_time); config_control_designe_local_time->AddExplicitAttr (a_428second_component); - a_429zone = new AttrDescriptor("zone",config_control_designe_coordinated_universal_time_offset,F,F,F,*config_control_designe_local_time); + a_429zone = + new AttrDescriptor("zone",config_control_designe_coordinated_universal_time_offset, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_local_time); config_control_designe_local_time->AddExplicitAttr (a_429zone); -///////// END_ENTITY local_time + reg.AddEntity (*config_control_designe_local_time); +///////// END_ENTITY local_time -///////// ENTITY mass_unit +///////// ENTITY mass_unit - reg.AddEntity (*config_control_designe_mass_unit); config_control_designe_mass_unit->AddSupertype(config_control_designe_named_unit); config_control_designe_named_unit->AddSubtype(config_control_designe_mass_unit); -///////// END_ENTITY mass_unit + reg.AddEntity (*config_control_designe_mass_unit); +///////// END_ENTITY mass_unit -///////// ENTITY vertex_shell +///////// ENTITY vertex_shell - reg.AddEntity (*config_control_designe_vertex_shell); config_control_designe_vertex_shell->AddSupertype(config_control_designe_topological_representation_item); config_control_designe_topological_representation_item->AddSubtype(config_control_designe_vertex_shell); - a_430vertex_shell_extent = new AttrDescriptor("vertex_shell_extent",config_control_designe_vertex_loop,F,F,F,*config_control_designe_vertex_shell); + a_430vertex_shell_extent = + new AttrDescriptor("vertex_shell_extent",config_control_designe_vertex_loop, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_vertex_shell); config_control_designe_vertex_shell->AddExplicitAttr (a_430vertex_shell_extent); -///////// END_ENTITY vertex_shell + reg.AddEntity (*config_control_designe_vertex_shell); +///////// END_ENTITY vertex_shell -///////// ENTITY poly_loop +///////// ENTITY poly_loop - reg.AddEntity (*config_control_designe_poly_loop); config_control_designe_poly_loop->AddSupertype(config_control_designe_loop); config_control_designe_loop->AddSubtype(config_control_designe_poly_loop); config_control_designe_poly_loop->AddSupertype(config_control_designe_geometric_representation_item); @@ -3787,17 +4550,20 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_75->AssignAggrCreator((AggregateCreator) create_EntityAggregate); // Creator function t_75->Bound1(3); t_75->Bound2(2147483647); - t_75->UniqueElements("T"); + t_75->UniqueElements(SCLLOG(LTrue)); t_75->FundamentalType(LIST_TYPE); - t_75->Description("UNIQUE LIST [3:?] of Cartesian_Point"); + t_75->Description("LIST [3:?] OF UNIQUE cartesian_point"); + t_75->OriginatingSchema(s_config_control_design); t_75->ReferentType(config_control_designe_cartesian_point); - a_431polygon = new AttrDescriptor("polygon",t_75,F,F,F,*config_control_designe_poly_loop); + a_431polygon = + new AttrDescriptor("polygon",t_75,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_poly_loop); config_control_designe_poly_loop->AddExplicitAttr (a_431polygon); -///////// END_ENTITY poly_loop + reg.AddEntity (*config_control_designe_poly_loop); +///////// END_ENTITY poly_loop -///////// ENTITY wire_shell +///////// ENTITY wire_shell - reg.AddEntity (*config_control_designe_wire_shell); config_control_designe_wire_shell->AddSupertype(config_control_designe_topological_representation_item); config_control_designe_topological_representation_item->AddSubtype(config_control_designe_wire_shell); SetTypeDescriptor * t_76 = new SetTypeDescriptor; @@ -3805,71 +4571,95 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_76->Bound1(1); t_76->Bound2(2147483647); t_76->FundamentalType(SET_TYPE); - t_76->Description("SET [1:?] OF Loop"); + t_76->Description("SET [1:?] OF loop"); + t_76->OriginatingSchema(s_config_control_design); t_76->ReferentType(config_control_designe_loop); - a_432wire_shell_extent = new AttrDescriptor("wire_shell_extent",t_76,F,F,F,*config_control_designe_wire_shell); + a_432wire_shell_extent = + new AttrDescriptor("wire_shell_extent",t_76,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_wire_shell); config_control_designe_wire_shell->AddExplicitAttr (a_432wire_shell_extent); -///////// END_ENTITY wire_shell + reg.AddEntity (*config_control_designe_wire_shell); +///////// END_ENTITY wire_shell -///////// ENTITY area_unit +///////// ENTITY area_unit - reg.AddEntity (*config_control_designe_area_unit); config_control_designe_area_unit->AddSupertype(config_control_designe_named_unit); config_control_designe_named_unit->AddSubtype(config_control_designe_area_unit); -///////// END_ENTITY area_unit + reg.AddEntity (*config_control_designe_area_unit); +///////// END_ENTITY area_unit -///////// ENTITY mapped_item +///////// ENTITY mapped_item - reg.AddEntity (*config_control_designe_mapped_item); config_control_designe_mapped_item->AddSupertype(config_control_designe_representation_item); config_control_designe_representation_item->AddSubtype(config_control_designe_mapped_item); - a_433mapping_source = new AttrDescriptor("mapping_source",config_control_designe_representation_map,F,F,F,*config_control_designe_mapped_item); + a_433mapping_source = + new AttrDescriptor("mapping_source",config_control_designe_representation_map, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_mapped_item); config_control_designe_mapped_item->AddExplicitAttr (a_433mapping_source); - a_434mapping_target = new AttrDescriptor("mapping_target",config_control_designe_representation_item,F,F,F,*config_control_designe_mapped_item); + a_434mapping_target = + new AttrDescriptor("mapping_target",config_control_designe_representation_item, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_mapped_item); config_control_designe_mapped_item->AddExplicitAttr (a_434mapping_target); -///////// END_ENTITY mapped_item + reg.AddEntity (*config_control_designe_mapped_item); +///////// END_ENTITY mapped_item -///////// ENTITY offset_curve_2d +///////// ENTITY offset_curve_2d - reg.AddEntity (*config_control_designe_offset_curve_2d); config_control_designe_offset_curve_2d->AddSupertype(config_control_designe_curve); config_control_designe_curve->AddSubtype(config_control_designe_offset_curve_2d); - a_435basis_curve = new AttrDescriptor("basis_curve",config_control_designe_curve,F,F,F,*config_control_designe_offset_curve_2d); + a_435basis_curve = + new AttrDescriptor("basis_curve",config_control_designe_curve, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_offset_curve_2d); config_control_designe_offset_curve_2d->AddExplicitAttr (a_435basis_curve); - a_436distance = new AttrDescriptor("distance",config_control_designt_length_measure,F,F,F,*config_control_designe_offset_curve_2d); + a_436distance = + new AttrDescriptor("distance",config_control_designt_length_measure, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_offset_curve_2d); config_control_designe_offset_curve_2d->AddExplicitAttr (a_436distance); - a_437self_intersect = new AttrDescriptor("self_intersect",t_LOGICAL_TYPE,F,F,F,*config_control_designe_offset_curve_2d); + a_437self_intersect = + new AttrDescriptor("self_intersect",t_sdaiLOGICAL, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_offset_curve_2d); config_control_designe_offset_curve_2d->AddExplicitAttr (a_437self_intersect); -///////// END_ENTITY offset_curve_2d + reg.AddEntity (*config_control_designe_offset_curve_2d); +///////// END_ENTITY offset_curve_2d -///////// ENTITY shape_definition_representation +///////// ENTITY shape_definition_representation - reg.AddEntity (*config_control_designe_shape_definition_representation); config_control_designe_shape_definition_representation->AddSupertype(config_control_designe_property_definition_representation); config_control_designe_property_definition_representation->AddSubtype(config_control_designe_shape_definition_representation); -///////// END_ENTITY shape_definition_representation + reg.AddEntity (*config_control_designe_shape_definition_representation); +///////// END_ENTITY shape_definition_representation -///////// ENTITY volume_unit +///////// ENTITY volume_unit - reg.AddEntity (*config_control_designe_volume_unit); config_control_designe_volume_unit->AddSupertype(config_control_designe_named_unit); config_control_designe_named_unit->AddSubtype(config_control_designe_volume_unit); -///////// END_ENTITY volume_unit + reg.AddEntity (*config_control_designe_volume_unit); +///////// END_ENTITY volume_unit -///////// ENTITY conical_surface +///////// ENTITY conical_surface - reg.AddEntity (*config_control_designe_conical_surface); config_control_designe_conical_surface->AddSupertype(config_control_designe_elementary_surface); config_control_designe_elementary_surface->AddSubtype(config_control_designe_conical_surface); - a_438radius = new AttrDescriptor("radius",config_control_designt_length_measure,F,F,F,*config_control_designe_conical_surface); + a_438radius = + new AttrDescriptor("radius",config_control_designt_length_measure, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_conical_surface); config_control_designe_conical_surface->AddExplicitAttr (a_438radius); - a_439semi_angle = new AttrDescriptor("semi_angle",config_control_designt_plane_angle_measure,F,F,F,*config_control_designe_conical_surface); + a_439semi_angle = + new AttrDescriptor("semi_angle",config_control_designt_plane_angle_measure, + SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_conical_surface); config_control_designe_conical_surface->AddExplicitAttr (a_439semi_angle); -///////// END_ENTITY conical_surface + reg.AddEntity (*config_control_designe_conical_surface); +///////// END_ENTITY conical_surface -///////// ENTITY global_unit_assigned_context +///////// ENTITY global_unit_assigned_context - reg.AddEntity (*config_control_designe_global_unit_assigned_context); config_control_designe_global_unit_assigned_context->AddSupertype(config_control_designe_representation_context); config_control_designe_representation_context->AddSubtype(config_control_designe_global_unit_assigned_context); SetTypeDescriptor * t_77 = new SetTypeDescriptor; @@ -3877,11 +4667,15 @@ SdaiCONFIG_CONTROL_DESIGNInit (Registry& reg) t_77->Bound1(1); t_77->Bound2(2147483647); t_77->FundamentalType(SET_TYPE); - t_77->Description("SET [1:?] OF Unit"); + t_77->Description("SET [1:?] OF unit"); + t_77->OriginatingSchema(s_config_control_design); t_77->ReferentType(config_control_designt_unit); - a_440units = new AttrDescriptor("units",t_77,F,F,F,*config_control_designe_global_unit_assigned_context); + a_440units = + new AttrDescriptor("units",t_77,SCLLOG(LFalse),SCLLOG(LFalse), AttrType_Explicit, + *config_control_designe_global_unit_assigned_context); config_control_designe_global_unit_assigned_context->AddExplicitAttr (a_440units); -///////// END_ENTITY global_unit_assigned_context + reg.AddEntity (*config_control_designe_global_unit_assigned_context); +///////// END_ENTITY global_unit_assigned_context } #endif diff --git a/source/geometry/solids/STEP/src/SingleLinkList.cc b/source/geometry/solids/STEP/src/SingleLinkList.cc index b44c099408..a0d390bbcf 100644 --- a/source/geometry/solids/STEP/src/SingleLinkList.cc +++ b/source/geometry/solids/STEP/src/SingleLinkList.cc @@ -1,18 +1,8 @@ - -// - - - -// -// $Id: SingleLinkList.cc,v 1.2 1999/05/21 20:21:05 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - /* * NIST STEP Core Class Library * clstepcore/SingleLinkList.cc -* May 1995 +* April 1997 * David Sauder * KC Morris @@ -20,10 +10,41 @@ * and is not subject to copyright. */ -/* */ +/* $Id: SingleLinkList.cc,v 1.3 2000/01/21 13:43:05 gcosmo Exp $ */ #include +void +SingleLinkList::DeleteFollowingNodes (SingleLinkNode *item) +{ + if (head) { + SingleLinkNode * trailer = 0; + SingleLinkNode * leader = head; + while (leader) { + if (leader == item) { + while(leader) + { + if(trailer) trailer->next = leader->next; + else if(leader == head) + { + head = leader->next; + trailer = head; + } + if(leader == tail) tail = trailer; + delete leader; + leader = trailer->next; + } + } + else { + if(trailer) + trailer = trailer->NextNode(); + else trailer = leader; + leader = leader->NextNode(); + } + } + } +} + void SingleLinkList::AppendNode (SingleLinkNode * item) { @@ -32,5 +53,29 @@ SingleLinkList::AppendNode (SingleLinkNode * item) tail = item; } else head = tail = item; + item->owner = this; } +void +SingleLinkList::DeleteNode (SingleLinkNode * item) +{ + if (head) { + SingleLinkNode * trailer = 0; + SingleLinkNode * leader = head; + while (leader) { + if (leader == item) { + if(trailer) trailer->next = leader->next; + leader = leader->next; + if(item == head) head = item->next; + if(item == tail) tail = trailer; + delete item; + } + else { + if(trailer) + trailer = trailer->NextNode(); + else trailer = leader; + leader = leader->NextNode(); + } + } + } +} diff --git a/source/geometry/solids/STEP/src/SingleLinkList_inline.cc b/source/geometry/solids/STEP/src/SingleLinkList_inline.cc index 65ed236324..fba5bdb262 100644 --- a/source/geometry/solids/STEP/src/SingleLinkList_inline.cc +++ b/source/geometry/solids/STEP/src/SingleLinkList_inline.cc @@ -1,18 +1,8 @@ - -// - - - -// -// $Id: SingleLinkList_inline.cc,v 1.4 1999/12/15 18:04:20 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - /* * NIST STEP Core Class Library * clstepcore/SingleLinkList.inline.cc -* May 1995 +* April 1997 * David Sauder * KC Morris @@ -20,7 +10,7 @@ * and is not subject to copyright. */ -/* */ +/* $Id: SingleLinkList_inline.cc,v 1.5 2000/01/21 13:43:06 gcosmo Exp $ */ #include diff --git a/source/geometry/solids/STEP/src/Str.cc b/source/geometry/solids/STEP/src/Str.cc index e7607044fe..321fcf53fb 100644 --- a/source/geometry/solids/STEP/src/Str.cc +++ b/source/geometry/solids/STEP/src/Str.cc @@ -1,18 +1,8 @@ - -// - - - -// -// $Id: Str.cc,v 1.3 1999/12/15 14:50:19 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - /* * NIST Utils Class Library * clutils/Str.cc -* May 1995 +* April 1997 * K. C. Morris * David Sauder @@ -20,7 +10,7 @@ * and is not subject to copyright. */ -/* */ +/* $Id: Str.cc,v 1.4 2000/01/21 13:43:06 gcosmo Exp $ */ #include @@ -49,6 +39,22 @@ ToUpper (const char c) else return (c); } +char * +StrToLower (const char *strOld, char *strNew) + /* + * Place in strNew a lowercase version of strOld. + */ +{ + int i = 0; + + while ( strOld[i] != '\0' ) { + strNew[i] = ToLower( strOld[i] ); + i++; + } + strNew[i] = '\0'; + return strNew; +} + const char * StrToLower (const char * word, SCLstring &s) { @@ -130,7 +136,6 @@ PrettyTmpName (const char * oldname) return newname; } - char * PrettyNewName (const char * oldname) { @@ -140,7 +145,23 @@ PrettyNewName (const char * oldname) return name; } +int +StrCmpIns( const char *strA, const char *strB ) + /* + * An insensitive string compare function. Used most often to compare + * names of objects where case is not known and not significant. + * + * NOTE - cygnus does not define strcmpi/stricmp. I'm sure there's a nifty + * way to add preprocessor commands to check if it exists, and if so to + * use it, but I didn't bother. + */ +{ + char str1[BUFSIZ], str2[BUFSIZ]; + strncpy( str1, PrettyTmpName( strA ), BUFSIZ-1 ); + strncpy( str2, PrettyTmpName( strB ), BUFSIZ-1 ); + return ( strcmp( str1, str2 ) ); +} // This function is used to check an input stream following a read. It writes // error messages in the 'ErrorDescriptor &err' argument as appropriate. @@ -256,7 +277,7 @@ CheckRemainingInput(G4std::istream &in, ErrorDescriptor *err, } } else if(in.good()) // found a char => error - // i.e. skipping whitespace did not cause EOF so must have Hit a char + // i.e. skipping whitespace did not cause EOF so must have hit a char { // remember we are not expecting more input since no tokenList // or 3. since not expecting a delimiter and there is input there @@ -273,7 +294,7 @@ CheckRemainingInput(G4std::istream &in, ErrorDescriptor *err, } else if (in.eof()) { - // Hit EOF when reading for a value + // hit EOF when reading for a value // don\'t set any error return err->severity(); } diff --git a/source/geometry/solids/STEP/src/cmdmgr.cc b/source/geometry/solids/STEP/src/cmdmgr.cc index 84ec10c754..8e32339a96 100644 --- a/source/geometry/solids/STEP/src/cmdmgr.cc +++ b/source/geometry/solids/STEP/src/cmdmgr.cc @@ -1,18 +1,8 @@ - -// - - - -// -// $Id: cmdmgr.cc,v 1.2 1999/05/21 20:21:06 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - /* * NIST STEP Editor Class Library * cleditor/cmdmgr.cc -* May 1995 +* April 1997 * David Sauder * K. C. Morris @@ -20,7 +10,7 @@ * and is not subject to copyright. */ -/* */ +/* $Id: cmdmgr.cc,v 1.3 2000/01/21 13:43:06 gcosmo Exp $ */ #include @@ -149,7 +139,7 @@ void CmdMgr::ClearInstances() // newList->ClearEntries(); } - // searches current List for fileId + // searches current list for fileId MgrNode *CmdMgr::StateFindFileId(stateEnum s, int fileId) { switch(s){ @@ -159,7 +149,7 @@ MgrNode *CmdMgr::StateFindFileId(stateEnum s, int fileId) return incompleteList->FindFileId(fileId); case deleteSE: return deleteList->FindFileId(fileId); - case newSE: // there is no new List + case newSE: // there is no new list case noStateSE: default: G4cout << "ERROR can't find the node containing fileid " << @@ -172,11 +162,11 @@ MgrNode *CmdMgr::GetHead(stateEnum listType) { switch(listType) { - case completeSE: // saved complete List + case completeSE: // saved complete list return (MgrNode *)completeList->GetHead(); - case incompleteSE: // saved incomplete List + case incompleteSE: // saved incomplete list return (MgrNode *)incompleteList->GetHead(); - case deleteSE: // delete List + case deleteSE: // delete list return (MgrNode *)deleteList->GetHead(); default: return 0; @@ -206,13 +196,13 @@ void CmdMgr::ClearEntries(stateEnum listType) { switch(listType) { - case completeSE: // saved complete List + case completeSE: // saved complete list completeList->ClearEntries(); break; - case incompleteSE: // saved incomplete List + case incompleteSE: // saved incomplete list incompleteList->ClearEntries(); break; - case deleteSE: // delete List + case deleteSE: // delete list deleteList->ClearEntries(); break; default: diff --git a/source/geometry/solids/STEP/src/collect.cc b/source/geometry/solids/STEP/src/collect.cc new file mode 100644 index 0000000000..aecea0e613 --- /dev/null +++ b/source/geometry/solids/STEP/src/collect.cc @@ -0,0 +1,175 @@ +/***************************************************************************** + * collect.cc * + * * + * Description: ComplexCollect is the container structure for all ofthe com- * + * plex entity information in a schema. It contains a list of * + * ComplexList structures each of which corresponds to one set * + * of subtype/supertype information about the schema. This file * + * contains many of the ComplexCollect member functions. * + * * + * Created by: David Rosenfeld * + * Date: 11/14/96 * + *****************************************************************************/ + +#include "complexSupport.h" + +void ComplexCollect::insert( ComplexList *c ) + /* + * Inserts a new ComplexList to our list. The ComplexLists are ordered by + * supertype name. Increments count. + */ +{ + ComplexList *prev = NULL, *cl = clists; + + while ( cl && *cl < *c ) { + prev = cl; + cl = cl->next; + } + if ( prev == NULL ) { + // I.e., c belongs before the first cl so the above loop was never + // entered. (This may also be the case if there's nothing in the + // collect yet and cl also = NULL.) + clists = c; + c->next = cl; + } else { + prev->next = c; + c->next = cl; + } + count++; +} + +void ComplexCollect::remove( ComplexList *c ) + /* + * Removes the ComplexList whose supertype name = supername. "Removing" + * deletes the list and removes it from this, but does not delete its + * subtype structure. This is done when a subtype of other supertypes + * was temporarily stored in the Collect so that its supertypes would + * be able to find it, and now that all its supers have accessed it, we + * remove it from the Collect. + */ +{ + ComplexList *cl = clists, *prev = NULL; + + while ( cl && *cl < *c ) { + prev = cl; + cl = cl->next; + } + if ( cl == NULL || cl != c ) { + // Just in case c isn't in the list. + return; + } + if ( prev == NULL ) { + // c is the first thing in clists (so prev while loop never entered) + clists = c->next; + } else { + prev->next = cl->next; + } + cl->next = NULL; + cl->remove(); + count--; +} + +ComplexList *ComplexCollect::find( char *name ) + /* + * Searches for and returns the ComplexList whose supertype name = name. + */ +{ + ComplexList *cl = clists; + + while ( cl && *cl < name ) { + cl = cl->next; + } + if ( cl && *cl == name ) { + return cl; + } + return NULL; +} + +int ComplexCollect::supports( EntNode *ents ) const + /* + * Determines if the parent schema supports the instantiation of a complex + * type consisting of the the entities named in ents. Does so by attempt- + * ing to match ents against the ComplexLists in clists. If one of the + * nodes of ents has multSupers set to TRUE (it has >1 supertype), it + * should be included in >1 CList. A more complicated algorithm is applied + * to match it, as described in the commenting. + */ +{ + // Changed 'and' to 'andl'. 'and' is reserved word in the standard - GC + + EntNode *node = ents, *nextnode; + AndList *andl; + ComplexList *clist = clists, *cl = NULL, *current; + int retval; + EntList *elist, *next; + + // Loop through the nodes of ents. If 1+ of them have >1 supertype, build + // a combo-CList to handle it. + while ( node ) { + if ( node->multSuprs() ) { + // Temporarily slice out node from its list (so that CList-> + // contains() will work properly below): + nextnode = node->next; + node->next = NULL; + if ( !cl ) { + // We may have created cl already in an earlier pass. + andl = new AndList; + cl = new ComplexList( andl ); + } + current = clists; + while ( current ) { + if ( current->contains( node ) ) { + // Must add current CList to new CList. First check if we + // added current already (while testing an earlier node). + if ( ! cl->toplevel( current->supertype() ) ) { + // Below line adds current to cl. "current->head-> + // childList" points to the EntLists directly under the + // top-level AND. We'll add that list right under the + // new AND we created at cl's top level. + andl->appendList( current->head->childList ); + } + } + current = current->next; + } + node->next = nextnode; + } + node = node->next; + } + + // Now figure out if we match ents or not. Done differently depending on + // if we had a sub of >1 supers (and built cl as a combo). + if ( !cl ) { + // If we never built up cl in the above loop, there were no entities + // which had mult supers. Simply go through each CList separately: + while ( clist != NULL ) { + if ( clist->matches( ents ) ) { + return TRUE; + } + clist = clist->next; + } + // Went through whole list without match: + return FALSE; + } else { + // Use cl to test that the conditions of all supertypes are met: + cl->multSupers = TRUE; + cl->buildList(); + retval = cl->matches( ents ); + + // We have our return value. Now get rid of cl: + // Unlink all the EntLists (gotten from other CLists) which were joined + // to make cl: + elist = cl->head->childList; + while ( elist ) { + elist->prev = NULL; + elist = elist->next; + next = elist->next; + elist->next = NULL; + elist = next; + } + cl->head->childList = NULL; + // Separate the childList from head. We don't want to delete any of the + // sublists when we delete cl - they still belong to other sublists. + delete cl; + return retval; + } +} diff --git a/source/geometry/solids/STEP/src/complexlist.cc b/source/geometry/solids/STEP/src/complexlist.cc new file mode 100644 index 0000000000..edd5ec448f --- /dev/null +++ b/source/geometry/solids/STEP/src/complexlist.cc @@ -0,0 +1,260 @@ +/***************************************************************************** + * complexlist.cc * + * * + * Description: ComplexList is a class type which represents inheritance * + * information for a set of entities related through supertype * + * and subtype information. This file contains many of the * + * ComplexList member functions. * + * * + * Created by: David Rosenfeld * + * Date: 01/07/97 * + *****************************************************************************/ + +#include "complexSupport.h" + +ComplexList::~ComplexList() + /* + * Destructor for ComplexList. + */ +{ + if ( next ) delete next; + delete head; + delete list; +} + +void ComplexList::remove() + /* + * Delete myself but don't take my sublist too. Done when a ComplexList + * was temporarily created to represent a complex structure which later + * became a subtype of other supertypes. After being incorporated into + * the supertypes' ComplexLists, this temp one can be deleted. Its sub- + * structure, however, cannot be deleted since it's still being used. + */ +{ + head = NULL; + // Only the overall AND will be deleted. + delete this; +} + +int ComplexList::toplevel( const char *name ) + /* + * Returns TRUE if name is already contained at the top level of our + * EntList hierarchy. By top level, we mean the level under head. This + * is a highly specialized function which is used during the building of + * a temporary CList to test entities which are subtypes of >1 supertype. + */ +{ + EntList *slist = head->childList; + + while ( slist ) { + if ( *(SimpleList *)slist == name ) return TRUE; + slist = slist->next; + if ( slist ) slist = slist->next; + } + return FALSE; +} + +void ComplexList::buildList() + /* + * Constructs this's list member. Contains an alphabetically-ordered + * linked list of EntNodes corresponding to all the leaf nodes in this. + * Used as a quick method of determining if this *may* allow a complex + * entity to be instantiated. If the user wants to construct a complex + * entity which contains an entity which is not contained in list, this + * ComplexList certainly can't support it. + */ +{ + EntList *sibling = head->childList->next; + // sibling = the first EntList (below the overall AND) after the supertype. + + // If there was a list before, delete it: + if ( list ) delete list; + + // Add first node based on supertype: + list = new EntNode( ((SimpleList *)head->childList)->name ); + + // Recursively add all descendents: + while ( sibling ) { + addChildren( sibling ); + sibling = sibling->next; + // Note - a CList usually has no more than 1 sibling, corresponding to + // the subtype info of a supertype. But this may be a combo-CList used + // to test sub's with >1 supertype. If so, there will be more siblings. + } + +} + +void ComplexList::addChildren( EntList *ent ) + /* + * Recursive function to add all the SimpleList descendents of ent into + * this's list. + */ +{ + EntList *child; + char *nm; + EntNode *prev = list, *prev2 = NULL, *newnode; + int comp; + + if ( ent->multiple() ) { + child = ((MultList *)ent)->childList; + while ( child ) { + addChildren( child ); + child = child->next; + } + } else { + nm = ((SimpleList *)ent)->name; + while ( prev != NULL && (comp = strcmp( prev->name, nm )) < 0 ) { + prev2 = prev; + prev = prev->next; + } + // One exceptional case: If new name is same as prev, skip it: + if ( comp != 0 ) { + // At this point, we know the new node belongs between prev2 and + // prev. prev or prev2 may = NULL if newnode belongs at the end + // of the list or before the beginning, respectively. + newnode = new EntNode( nm ); + newnode->next = prev; + if ( prev2 == NULL ) { + // This will be the case if the inner while was never entered. + // That happens when newnode belonged at the beginning of the + // list. If so, reset firstnode. + list = newnode; + } else { + prev2->next = newnode; + } + } + } +} + +int ComplexList::contains( EntNode *ents ) + /* + * Does a simple search to determine if this contains all the nodes of an + * EntNode list. If not, there's no way this will match ents. If so, + * we'll have to run matches() (below) to check more closely. This func- + * tion is simplified greatly because both EntNodes are ordered alphabeti- + * cally. + */ +{ + EntNode *ours = list, *theirs = ents; + + while ( theirs != NULL ) { + while ( ours != NULL && *ours < *theirs ) { + ours = ours->next; + } + if ( ours == NULL || *ours > *theirs ) { + // If either of these occured, we couldn't find one of ours which + // matched the current "theirs". + return FALSE; + } + theirs = theirs->next; + ours = ours->next; + } + // At this point we must have matched them all. (We may have extra, but + // there's nothing wrong with that.) + return TRUE; +} + +int ComplexList::matches( EntNode *ents ) + /* + * Receives as input an EntNode list, corresponding to a user request to + * instantiate the corresponding complex type. Returns TRUE if such a list + * can be instantiated based on the list of EntLists which were generated + * when the schema was read; FALSE otherwise. + */ +{ + MatchType retval, otherChoices = NEWCHOICE; + int result = FALSE; + + // First check if this ComplexList at least contains all the nodes of ents. + // If it does, we'll search in detail. If not, we're done. + if (! contains( ents ) ) { + return FALSE; + } + + // Now start a thorough search through this ComplexList: + if ( (retval = head->matchNonORs( ents )) == MATCHALL ) { + result = TRUE; + } else if ( retval != UNKNOWN ) { + result = FALSE; + // UNKNOWN is the return val if there are ORs matchNonORs can't + // analyze. Unless we got a MATCHALL already, that's our only hope. + } else { + if ( ( (retval = head->matchORs( ents )) == MATCHALL ) && + ( hitMultNodes( ents ) ) ) { + // hitMultNodes() checks that in case we're a combo-CList (see + // CColect->supports()) we have a legal choice (see comments in + // hitMultNodes()). + result = TRUE; + } else if ( retval >= MATCHSOME ) { + // We have a partial answer. Check if other solutions exist (i.e., + // if there are OR's with other choices): + while ( otherChoices == NEWCHOICE ) { + otherChoices = head->tryNext( ents ); + if ( otherChoices == MATCHALL ) { + if ( hitMultNodes( ents ) ) { + result = TRUE; + } else { + otherChoices = NEWCHOICE; + } + } + } + } + } + head->reset(); + // This recursively sets all EntLists in our list. + ents->unmarkAll(); + // NOTE - may want to put this at ComplexCollect level. + return result; +} + +int ComplexList::hitMultNodes( EntNode *ents ) + /* + * This function has a specialized application. If the user wants to + * instantiate a complex type containing an entity with >1 supertype (call + * it C), we temporarily join all the ComplexLists together corresponding + * to the supertypes of C into a big CList (this). We then test the user + * request as normal. If the regular matches() functions return MATCHALL, + * we must check if each MultList corresponding to a CList hit C. If not, + * we do not have a valid match. We only have the right to join the CLists + * together (and make use of all the matching they afford) in order to + * create a complete instance of C. Matches which do not contain C are not + * valid. (This function is actually slightly more complicated because it + * also deals with the possibility that >1 entities like C exist.) + */ +{ + EntNode *node; + EntList *child; + + // First get rid of the trivial case: If this is not a combo-CList at all, + // we have nothing to check for. (CList::matches() routinely checks for + // hitMultNodes in case we're a combo.) + if ( !multSupers ) { + return TRUE; + } + + for ( node = ents; node != NULL; node = node->next ) { + if ( node->multSuprs() ) { + child = head->childList->next; + // child points to the sublist of the first CList. (head is the + // AndList which AND's them all together.) + while ( child ) { + // child is one of the EntList members of this which corre- + // sponds to one of the combined CLists. If child has node as + // a member, it must have matched node, or we do not have a + // legal match (see function header comments). We check this + // below. + if ( child->contains( node->name ) ) { + if ( ! child->hit( node->name ) ) { + return FALSE; + } + } + child = child->next; + if ( child ) child = child->next; + // We increment child twice. We know this is how CLists are + // joined: super1 -> sublist1 -> super2 -> sublist2 -> ... + } + } + } + return TRUE; + // If we got here, we didn't find any unmatched complex subtypes. +} diff --git a/source/geometry/solids/STEP/src/compstructs.cc b/source/geometry/solids/STEP/src/compstructs.cc new file mode 100644 index 0000000000..b56901f4df --- /dev/null +++ b/source/geometry/solids/STEP/src/compstructs.cc @@ -0,0 +1,1696 @@ +/* + * This file contains instantiation statements to create complex + * support structures. The structures will be used in the SCL to + * validate user requests to instantiate complex entities. + */ + +#include "complexSupport.h" + +ComplexCollect *gencomplex() + /* + * This function contains instantiation statments for all the + * ComplexLists and EntLists in a ComplexCollect. The instan- + * stiation statements were generated in order of lower to + * higher, and last to first to simplify creating some of the + * links between structures. Because of this, the code is not + * very readable, but does the trick. + */ +{ + ComplexCollect *cc; + ComplexList *cl; + EntList *node, *child, *next1, *next2, *next3, *next4, + *next5, *next6, *next7, *next8, *next9, *next10, + *next11, *next12, *next13, *next14, *next15, + *next16, *next17, *next18, *next19, *next20, + *next21, *next22, *next23, *next24, *next25, + *next26, *next27, *next28, *next29, *next30; + + cc = new ComplexCollect; + + // ComplexList with supertype "action": + node = new SimpleList( "directed_action" ); + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next4 = node; + node = new SimpleList( "executed_action" ); + next4->prev = node; + node->next = next4; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next3 = node; + node = new SimpleList( "executed_action" ); + next3->prev = node; + node->next = next3; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next1 = node; + node = new SimpleList( "action" ); + next1->prev = node; + node->next = next1; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + cl = new ComplexList((AndList *)node); + cl->buildList(); + cl->head->setLevel( 0 ); + cc->insert( cl ); + + // ComplexList with supertype "action_assignment": + node = new SimpleList( "start_work" ); + next2 = node; + node = new SimpleList( "change" ); + next2->prev = node; + node->next = next2; + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next1 = node; + node = new SimpleList( "action_assignment" ); + next1->prev = node; + node->next = next1; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + cl = new ComplexList((AndList *)node); + cl->buildList(); + cl->head->setLevel( 0 ); + cc->insert( cl ); + + // ComplexList with supertype "action_request_assignment": + node = new SimpleList( "start_request" ); + next2 = node; + node = new SimpleList( "change_request" ); + next2->prev = node; + node->next = next2; + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next1 = node; + node = new SimpleList( "action_request_assignment" ); + next1->prev = node; + node->next = next1; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + cl = new ComplexList((AndList *)node); + cl->buildList(); + cl->head->setLevel( 0 ); + cc->insert( cl ); + + // ComplexList with supertype "address": + node = new SimpleList( "personal_address" ); + next2 = node; + node = new SimpleList( "organizational_address" ); + next2->prev = node; + node->next = next2; + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next1 = node; + node = new SimpleList( "address" ); + next1->prev = node; + node->next = next1; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + cl = new ComplexList((AndList *)node); + cl->buildList(); + cl->head->setLevel( 0 ); + cc->insert( cl ); + + // ComplexList with supertype "application_context_element": + node = new SimpleList( "product_concept_context" ); + next2 = node; + node = new SimpleList( "design_context" ); + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next4 = node; + node = new SimpleList( "product_definition_context" ); + next4->prev = node; + node->next = next4; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next3 = node; + node = new SimpleList( "product_definition_context" ); + next3->prev = node; + node->next = next3; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next2->prev = node; + node->next = next2; + next2 = node; + node = new SimpleList( "mechanical_context" ); + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next4 = node; + node = new SimpleList( "product_context" ); + next4->prev = node; + node->next = next4; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next3 = node; + node = new SimpleList( "product_context" ); + next3->prev = node; + node->next = next3; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next2->prev = node; + node->next = next2; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next1 = node; + node = new SimpleList( "application_context_element" ); + next1->prev = node; + node->next = next1; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + cl = new ComplexList((AndList *)node); + cl->buildList(); + cl->head->setLevel( 0 ); + cc->insert( cl ); + + // ComplexList with supertype "approval_assignment": + node = new SimpleList( "cc_design_approval" ); + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next1 = node; + node = new SimpleList( "approval_assignment" ); + next1->prev = node; + node->next = next1; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + cl = new ComplexList((AndList *)node); + cl->buildList(); + cl->head->setLevel( 0 ); + cc->insert( cl ); + + // ComplexList with supertype "certification_assignment": + node = new SimpleList( "cc_design_certification" ); + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next1 = node; + node = new SimpleList( "certification_assignment" ); + next1->prev = node; + node->next = next1; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + cl = new ComplexList((AndList *)node); + cl->buildList(); + cl->head->setLevel( 0 ); + cc->insert( cl ); + + // ComplexList with supertype "composite_curve_segment": + node = new SimpleList( "reparametrised_composite_curve_segment" ); + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next1 = node; + node = new SimpleList( "composite_curve_segment" ); + next1->prev = node; + node->next = next1; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + cl = new ComplexList((AndList *)node); + cl->buildList(); + cl->head->setLevel( 0 ); + cc->insert( cl ); + + // ComplexList with supertype "contract_assignment": + node = new SimpleList( "cc_design_contract" ); + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next1 = node; + node = new SimpleList( "contract_assignment" ); + next1->prev = node; + node->next = next1; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + cl = new ComplexList((AndList *)node); + cl->buildList(); + cl->head->setLevel( 0 ); + cc->insert( cl ); + + // ComplexList with supertype "date": + node = new SimpleList( "week_of_year_and_day_date" ); + next2 = node; + node = new SimpleList( "ordinal_date" ); + next2->prev = node; + node->next = next2; + next2 = node; + node = new SimpleList( "calendar_date" ); + next2->prev = node; + node->next = next2; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next1 = node; + node = new SimpleList( "date" ); + next1->prev = node; + node->next = next1; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + cl = new ComplexList((AndList *)node); + cl->buildList(); + cl->head->setLevel( 0 ); + cc->insert( cl ); + + // ComplexList with supertype "date_and_time_assignment": + node = new SimpleList( "cc_design_date_and_time_assignment" ); + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next1 = node; + node = new SimpleList( "date_and_time_assignment" ); + next1->prev = node; + node->next = next1; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + cl = new ComplexList((AndList *)node); + cl->buildList(); + cl->head->setLevel( 0 ); + cc->insert( cl ); + + // ComplexList with supertype "document": + node = new SimpleList( "document_with_class" ); + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next1 = node; + node = new SimpleList( "document" ); + next1->prev = node; + node->next = next1; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + cl = new ComplexList((AndList *)node); + cl->buildList(); + cl->head->setLevel( 0 ); + cc->insert( cl ); + + // ComplexList with supertype "document_reference": + node = new SimpleList( "cc_design_specification_reference" ); + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next1 = node; + node = new SimpleList( "document_reference" ); + next1->prev = node; + node->next = next1; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + cl = new ComplexList((AndList *)node); + cl->buildList(); + cl->head->setLevel( 0 ); + cc->insert( cl ); + + // ComplexList with supertype "effectivity": + node = new SimpleList( "configuration_effectivity" ); + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next4 = node; + node = new SimpleList( "product_definition_effectivity" ); + next4->prev = node; + node->next = next4; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next3 = node; + node = new SimpleList( "product_definition_effectivity" ); + next3->prev = node; + node->next = next3; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next2 = node; + node = new SimpleList( "lot_effectivity" ); + next3 = node; + node = new SimpleList( "dated_effectivity" ); + next3->prev = node; + node->next = next3; + next3 = node; + node = new SimpleList( "serial_numbered_effectivity" ); + next3->prev = node; + node->next = next3; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next2->prev = node; + node->next = next2; + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next1 = node; + node = new SimpleList( "effectivity" ); + next1->prev = node; + node->next = next1; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + cl = new ComplexList((AndList *)node); + cl->buildList(); + cl->head->setLevel( 0 ); + cc->insert( cl ); + + // ComplexList with supertype "functionally_defined_transformation": + node = new SimpleList( "cartesian_transformation_operator_3d" ); + next5 = node; + node = new SimpleList( "cartesian_transformation_operator_2d" ); + next5->prev = node; + node->next = next5; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next4 = node; + node = new SimpleList( "cartesian_transformation_operator" ); + next4->prev = node; + node->next = next4; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next3 = node; + node = new SimpleList( "cartesian_transformation_operator" ); + next3->prev = node; + node->next = next3; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next1 = node; + node = new SimpleList( "functionally_defined_transformation" ); + next1->prev = node; + node->next = next1; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + cl = new ComplexList((AndList *)node); + cl->buildList(); + cl->head->setLevel( 0 ); + cc->insert( cl ); + + // ComplexList with supertype "measure_with_unit": + node = new SimpleList( "uncertainty_measure_with_unit" ); + next2 = node; + node = new SimpleList( "volume_measure_with_unit" ); + next3 = node; + node = new SimpleList( "area_measure_with_unit" ); + next3->prev = node; + node->next = next3; + next3 = node; + node = new SimpleList( "solid_angle_measure_with_unit" ); + next3->prev = node; + node->next = next3; + next3 = node; + node = new SimpleList( "plane_angle_measure_with_unit" ); + next3->prev = node; + node->next = next3; + next3 = node; + node = new SimpleList( "mass_measure_with_unit" ); + next3->prev = node; + node->next = next3; + next3 = node; + node = new SimpleList( "length_measure_with_unit" ); + next3->prev = node; + node->next = next3; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next2->prev = node; + node->next = next2; + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next1 = node; + node = new SimpleList( "measure_with_unit" ); + next1->prev = node; + node->next = next1; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + cl = new ComplexList((AndList *)node); + cl->buildList(); + cl->head->setLevel( 0 ); + cc->insert( cl ); + + // ComplexList with supertype "named_unit": + node = new SimpleList( "volume_unit" ); + next3 = node; + node = new SimpleList( "area_unit" ); + next3->prev = node; + node->next = next3; + next3 = node; + node = new SimpleList( "solid_angle_unit" ); + next3->prev = node; + node->next = next3; + next3 = node; + node = new SimpleList( "plane_angle_unit" ); + next3->prev = node; + node->next = next3; + next3 = node; + node = new SimpleList( "mass_unit" ); + next3->prev = node; + node->next = next3; + next3 = node; + node = new SimpleList( "length_unit" ); + next3->prev = node; + node->next = next3; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next2 = node; + node = new SimpleList( "context_dependent_unit" ); + next3 = node; + node = new SimpleList( "conversion_based_unit" ); + next3->prev = node; + node->next = next3; + next3 = node; + node = new SimpleList( "si_unit" ); + next3->prev = node; + node->next = next3; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next2->prev = node; + node->next = next2; + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next1 = node; + node = new SimpleList( "named_unit" ); + next1->prev = node; + node->next = next1; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + cl = new ComplexList((AndList *)node); + cl->buildList(); + cl->head->setLevel( 0 ); + cc->insert( cl ); + + // ComplexList with supertype "person_and_organization_assignment": + node = new SimpleList( "cc_design_person_and_organization_assignment" ); + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next1 = node; + node = new SimpleList( "person_and_organization_assignment" ); + next1->prev = node; + node->next = next1; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + cl = new ComplexList((AndList *)node); + cl->buildList(); + cl->head->setLevel( 0 ); + cc->insert( cl ); + + // ComplexList with supertype "product_category": + node = new SimpleList( "product_related_product_category" ); + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next1 = node; + node = new SimpleList( "product_category" ); + next1->prev = node; + node->next = next1; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + cl = new ComplexList((AndList *)node); + cl->buildList(); + cl->head->setLevel( 0 ); + cc->insert( cl ); + + // ComplexList with supertype "product_definition": + node = new SimpleList( "product_definition_with_associated_documents" ); + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next1 = node; + node = new SimpleList( "product_definition" ); + next1->prev = node; + node->next = next1; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + cl = new ComplexList((AndList *)node); + cl->buildList(); + cl->head->setLevel( 0 ); + cc->insert( cl ); + + // ComplexList with supertype "product_definition_formation": + node = new SimpleList( "product_definition_formation_with_specified_source" ); + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next1 = node; + node = new SimpleList( "product_definition_formation" ); + next1->prev = node; + node->next = next1; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + cl = new ComplexList((AndList *)node); + cl->buildList(); + cl->head->setLevel( 0 ); + cc->insert( cl ); + + // ComplexList with supertype "product_definition_relationship": + node = new SimpleList( "quantified_assembly_component_usage" ); + next7 = node; + node = new SimpleList( "promissory_usage_occurrence" ); + next8 = node; + node = new SimpleList( "specified_higher_usage_occurrence" ); + next8->prev = node; + node->next = next8; + next8 = node; + node = new SimpleList( "next_assembly_usage_occurrence" ); + next8->prev = node; + node->next = next8; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next7->prev = node; + node->next = next7; + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next6 = node; + node = new SimpleList( "assembly_component_usage" ); + next6->prev = node; + node->next = next6; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next5 = node; + node = new SimpleList( "assembly_component_usage" ); + next5->prev = node; + node->next = next5; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next4 = node; + node = new SimpleList( "product_definition_usage" ); + next4->prev = node; + node->next = next4; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next3 = node; + node = new SimpleList( "product_definition_usage" ); + next3->prev = node; + node->next = next3; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next2 = node; + node = new SimpleList( "design_make_from_relationship" ); + next2->prev = node; + node->next = next2; + next2 = node; + node = new SimpleList( "supplied_part_relationship" ); + next2->prev = node; + node->next = next2; + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next1 = node; + node = new SimpleList( "product_definition_relationship" ); + next1->prev = node; + node->next = next1; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + cl = new ComplexList((AndList *)node); + cl->buildList(); + cl->head->setLevel( 0 ); + cc->insert( cl ); + + // ComplexList with supertype "property_definition": + node = new SimpleList( "product_definition_shape" ); + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next1 = node; + node = new SimpleList( "property_definition" ); + next1->prev = node; + node->next = next1; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + cl = new ComplexList((AndList *)node); + cl->buildList(); + cl->head->setLevel( 0 ); + cc->insert( cl ); + + // ComplexList with supertype "property_definition_representation": + node = new SimpleList( "shape_definition_representation" ); + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next1 = node; + node = new SimpleList( "property_definition_representation" ); + next1->prev = node; + node->next = next1; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + cl = new ComplexList((AndList *)node); + cl->buildList(); + cl->head->setLevel( 0 ); + cc->insert( cl ); + + // ComplexList with supertype "representation": + node = new SimpleList( "faceted_brep_shape_representation" ); + next5 = node; + node = new SimpleList( "geometrically_bounded_wireframe_shape_representation" ); + next5->prev = node; + node->next = next5; + next5 = node; + node = new SimpleList( "edge_based_wireframe_shape_representation" ); + next5->prev = node; + node->next = next5; + next5 = node; + node = new SimpleList( "advanced_brep_shape_representation" ); + next5->prev = node; + node->next = next5; + next5 = node; + node = new SimpleList( "shell_based_wireframe_shape_representation" ); + next5->prev = node; + node->next = next5; + next5 = node; + node = new SimpleList( "geometrically_bounded_surface_shape_representation" ); + next5->prev = node; + node->next = next5; + next5 = node; + node = new SimpleList( "manifold_surface_shape_representation" ); + next5->prev = node; + node->next = next5; + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next4 = node; + node = new SimpleList( "shape_representation" ); + next4->prev = node; + node->next = next4; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next3 = node; + node = new SimpleList( "shape_representation" ); + next3->prev = node; + node->next = next3; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next2 = node; + node = new SimpleList( "definitional_representation" ); + next2->prev = node; + node->next = next2; + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next1 = node; + node = new SimpleList( "representation" ); + next1->prev = node; + node->next = next1; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + cl = new ComplexList((AndList *)node); + cl->buildList(); + cl->head->setLevel( 0 ); + cc->insert( cl ); + + // ComplexList with supertype "representation_context": + node = new SimpleList( "global_unit_assigned_context" ); + next2 = node; + node = new SimpleList( "parametric_representation_context" ); + next2->prev = node; + node->next = next2; + next2 = node; + node = new SimpleList( "global_uncertainty_assigned_context" ); + next2->prev = node; + node->next = next2; + next2 = node; + node = new SimpleList( "geometric_representation_context" ); + next2->prev = node; + node->next = next2; + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next1 = node; + node = new SimpleList( "representation_context" ); + next1->prev = node; + node->next = next1; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + cl = new ComplexList((AndList *)node); + cl->buildList(); + cl->head->setLevel( 0 ); + cc->insert( cl ); + + // ComplexList with supertype "representation_item": + node = new SimpleList( "mapped_item" ); + next2 = node; + node = new SimpleList( "geometric_curve_set" ); + next7 = node; + node = new SimpleList( "geometric_set" ); + next7->prev = node; + node->next = next7; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next6 = node; + node = new SimpleList( "geometric_set" ); + next6->prev = node; + node->next = next6; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next5 = node; + node = new SimpleList( "edge_based_wireframe_model" ); + next5->prev = node; + node->next = next5; + next5 = node; + node = new SimpleList( "shell_based_wireframe_model" ); + next5->prev = node; + node->next = next5; + next5 = node; + node = new SimpleList( "shell_based_surface_model" ); + next5->prev = node; + node->next = next5; + next5 = node; + node = new SimpleList( "brep_with_voids" ); + next10 = node; + node = new SimpleList( "faceted_brep" ); + next10->prev = node; + node->next = next10; + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next9 = node; + node = new SimpleList( "manifold_solid_brep" ); + next9->prev = node; + node->next = next9; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next8 = node; + node = new SimpleList( "manifold_solid_brep" ); + next8->prev = node; + node->next = next8; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next7 = node; + node = new SimpleList( "solid_model" ); + next7->prev = node; + node->next = next7; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next6 = node; + node = new SimpleList( "solid_model" ); + next6->prev = node; + node->next = next6; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next5->prev = node; + node->next = next5; + next5 = node; + node = new SimpleList( "poly_loop" ); + next5->prev = node; + node->next = next5; + next5 = node; + node = new SimpleList( "vertex_point" ); + next5->prev = node; + node->next = next5; + next5 = node; + node = new SimpleList( "advanced_face" ); + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next7 = node; + node = new SimpleList( "face_surface" ); + next7->prev = node; + node->next = next7; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next6 = node; + node = new SimpleList( "face_surface" ); + next6->prev = node; + node->next = next6; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next5->prev = node; + node->next = next5; + next5 = node; + node = new SimpleList( "edge_curve" ); + next5->prev = node; + node->next = next5; + next5 = node; + node = new SimpleList( "surface_replica" ); + next8 = node; + node = new SimpleList( "offset_surface" ); + next8->prev = node; + node->next = next8; + next8 = node; + node = new SimpleList( "rectangular_composite_surface" ); + next11 = node; + node = new SimpleList( "curve_bounded_surface" ); + next11->prev = node; + node->next = next11; + next11 = node; + node = new SimpleList( "rectangular_trimmed_surface" ); + next11->prev = node; + node->next = next11; + next11 = node; + node = new SimpleList( "rational_b_spline_surface" ); + next14 = node; + node = new SimpleList( "bezier_surface" ); + next15 = node; + node = new SimpleList( "quasi_uniform_surface" ); + next15->prev = node; + node->next = next15; + next15 = node; + node = new SimpleList( "uniform_surface" ); + next15->prev = node; + node->next = next15; + next15 = node; + node = new SimpleList( "b_spline_surface_with_knots" ); + next15->prev = node; + node->next = next15; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next14->prev = node; + node->next = next14; + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next13 = node; + node = new SimpleList( "b_spline_surface" ); + next13->prev = node; + node->next = next13; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next12 = node; + node = new SimpleList( "b_spline_surface" ); + next12->prev = node; + node->next = next12; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next11->prev = node; + node->next = next11; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next10 = node; + node = new SimpleList( "bounded_surface" ); + next10->prev = node; + node->next = next10; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next9 = node; + node = new SimpleList( "bounded_surface" ); + next9->prev = node; + node->next = next9; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next8->prev = node; + node->next = next8; + next8 = node; + node = new SimpleList( "surface_of_revolution" ); + next11 = node; + node = new SimpleList( "surface_of_linear_extrusion" ); + next11->prev = node; + node->next = next11; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next10 = node; + node = new SimpleList( "swept_surface" ); + next10->prev = node; + node->next = next10; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next9 = node; + node = new SimpleList( "swept_surface" ); + next9->prev = node; + node->next = next9; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next8->prev = node; + node->next = next8; + next8 = node; + node = new SimpleList( "toroidal_surface" ); + next11 = node; + node = new SimpleList( "spherical_surface" ); + next11->prev = node; + node->next = next11; + next11 = node; + node = new SimpleList( "conical_surface" ); + next11->prev = node; + node->next = next11; + next11 = node; + node = new SimpleList( "cylindrical_surface" ); + next11->prev = node; + node->next = next11; + next11 = node; + node = new SimpleList( "plane" ); + next11->prev = node; + node->next = next11; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next10 = node; + node = new SimpleList( "elementary_surface" ); + next10->prev = node; + node->next = next10; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next9 = node; + node = new SimpleList( "elementary_surface" ); + next9->prev = node; + node->next = next9; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next8->prev = node; + node->next = next8; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next7 = node; + node = new SimpleList( "surface" ); + next7->prev = node; + node->next = next7; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next6 = node; + node = new SimpleList( "surface" ); + next6->prev = node; + node->next = next6; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next5->prev = node; + node->next = next5; + next5 = node; + node = new SimpleList( "outer_boundary_curve" ); + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next18 = node; + node = new SimpleList( "boundary_curve" ); + next18->prev = node; + node->next = next18; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next17 = node; + node = new SimpleList( "boundary_curve" ); + next17->prev = node; + node->next = next17; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next16 = node; + node = new SimpleList( "composite_curve_on_surface" ); + next16->prev = node; + node->next = next16; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next15 = node; + node = new SimpleList( "composite_curve_on_surface" ); + next15->prev = node; + node->next = next15; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next13 = node; + node = new SimpleList( "composite_curve" ); + next13->prev = node; + node->next = next13; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next12 = node; + node = new SimpleList( "composite_curve" ); + next12->prev = node; + node->next = next12; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next11 = node; + node = new SimpleList( "trimmed_curve" ); + next11->prev = node; + node->next = next11; + next11 = node; + node = new SimpleList( "rational_b_spline_curve" ); + next14 = node; + node = new SimpleList( "bezier_curve" ); + next15 = node; + node = new SimpleList( "quasi_uniform_curve" ); + next15->prev = node; + node->next = next15; + next15 = node; + node = new SimpleList( "b_spline_curve_with_knots" ); + next15->prev = node; + node->next = next15; + next15 = node; + node = new SimpleList( "uniform_curve" ); + next15->prev = node; + node->next = next15; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next14->prev = node; + node->next = next14; + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next13 = node; + node = new SimpleList( "b_spline_curve" ); + next13->prev = node; + node->next = next13; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next12 = node; + node = new SimpleList( "b_spline_curve" ); + next12->prev = node; + node->next = next12; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next11->prev = node; + node->next = next11; + next11 = node; + node = new SimpleList( "polyline" ); + next11->prev = node; + node->next = next11; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next10 = node; + node = new SimpleList( "bounded_curve" ); + next10->prev = node; + node->next = next10; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next9 = node; + node = new SimpleList( "bounded_curve" ); + next9->prev = node; + node->next = next9; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next8 = node; + node = new SimpleList( "curve_replica" ); + next9 = node; + node = new SimpleList( "offset_curve_3d" ); + next9->prev = node; + node->next = next9; + next9 = node; + node = new SimpleList( "offset_curve_2d" ); + next9->prev = node; + node->next = next9; + next9 = node; + node = new SimpleList( "seam_curve" ); + next12 = node; + node = new SimpleList( "intersection_curve" ); + next12->prev = node; + node->next = next12; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next11 = node; + node = new SimpleList( "surface_curve" ); + next11->prev = node; + node->next = next11; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next10 = node; + node = new SimpleList( "surface_curve" ); + next10->prev = node; + node->next = next10; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next9->prev = node; + node->next = next9; + next9 = node; + node = new SimpleList( "pcurve" ); + next9->prev = node; + node->next = next9; + next9 = node; + node = new SimpleList( "parabola" ); + next12 = node; + node = new SimpleList( "hyperbola" ); + next12->prev = node; + node->next = next12; + next12 = node; + node = new SimpleList( "ellipse" ); + next12->prev = node; + node->next = next12; + next12 = node; + node = new SimpleList( "circle" ); + next12->prev = node; + node->next = next12; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next11 = node; + node = new SimpleList( "conic" ); + next11->prev = node; + node->next = next11; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next10 = node; + node = new SimpleList( "conic" ); + next10->prev = node; + node->next = next10; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next9->prev = node; + node->next = next9; + next9 = node; + node = new SimpleList( "line" ); + next9->prev = node; + node->next = next9; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next8->prev = node; + node->next = next8; + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next7 = node; + node = new SimpleList( "curve" ); + next7->prev = node; + node->next = next7; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next6 = node; + node = new SimpleList( "curve" ); + next6->prev = node; + node->next = next6; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next5->prev = node; + node->next = next5; + next5 = node; + node = new SimpleList( "cartesian_transformation_operator_3d" ); + next8 = node; + node = new SimpleList( "cartesian_transformation_operator_2d" ); + next8->prev = node; + node->next = next8; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next7 = node; + node = new SimpleList( "cartesian_transformation_operator" ); + next7->prev = node; + node->next = next7; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next6 = node; + node = new SimpleList( "cartesian_transformation_operator" ); + next6->prev = node; + node->next = next6; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next5->prev = node; + node->next = next5; + next5 = node; + node = new SimpleList( "axis2_placement_3d" ); + next8 = node; + node = new SimpleList( "axis2_placement_2d" ); + next8->prev = node; + node->next = next8; + next8 = node; + node = new SimpleList( "axis1_placement" ); + next8->prev = node; + node->next = next8; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next7 = node; + node = new SimpleList( "placement" ); + next7->prev = node; + node->next = next7; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next6 = node; + node = new SimpleList( "placement" ); + next6->prev = node; + node->next = next6; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next5->prev = node; + node->next = next5; + next5 = node; + node = new SimpleList( "vector" ); + next5->prev = node; + node->next = next5; + next5 = node; + node = new SimpleList( "direction" ); + next5->prev = node; + node->next = next5; + next5 = node; + node = new SimpleList( "evaluated_degenerate_pcurve" ); + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next10 = node; + node = new SimpleList( "degenerate_pcurve" ); + next10->prev = node; + node->next = next10; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next9 = node; + node = new SimpleList( "degenerate_pcurve" ); + next9->prev = node; + node->next = next9; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next8 = node; + node = new SimpleList( "point_replica" ); + next8->prev = node; + node->next = next8; + next8 = node; + node = new SimpleList( "point_on_surface" ); + next8->prev = node; + node->next = next8; + next8 = node; + node = new SimpleList( "point_on_curve" ); + next8->prev = node; + node->next = next8; + next8 = node; + node = new SimpleList( "cartesian_point" ); + next8->prev = node; + node->next = next8; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next7 = node; + node = new SimpleList( "point" ); + next7->prev = node; + node->next = next7; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next6 = node; + node = new SimpleList( "point" ); + next6->prev = node; + node->next = next6; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next5->prev = node; + node->next = next5; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next4 = node; + node = new SimpleList( "geometric_representation_item" ); + next4->prev = node; + node->next = next4; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next3 = node; + node = new SimpleList( "geometric_representation_item" ); + next3->prev = node; + node->next = next3; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next2->prev = node; + node->next = next2; + next2 = node; + node = new SimpleList( "oriented_path" ); + next9 = node; + node = new SimpleList( "edge_loop" ); + next9->prev = node; + node->next = next9; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next8 = node; + node = new SimpleList( "path" ); + next8->prev = node; + node->next = next8; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next7 = node; + node = new SimpleList( "path" ); + next7->prev = node; + node->next = next7; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next6 = node; + node = new SimpleList( "poly_loop" ); + next9 = node; + node = new SimpleList( "edge_loop" ); + next9->prev = node; + node->next = next9; + next9 = node; + node = new SimpleList( "vertex_loop" ); + next9->prev = node; + node->next = next9; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next8 = node; + node = new SimpleList( "loop" ); + next8->prev = node; + node->next = next8; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next7 = node; + node = new SimpleList( "loop" ); + next7->prev = node; + node->next = next7; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next6->prev = node; + node->next = next6; + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next5 = node; + node = new SimpleList( "wire_shell" ); + next5->prev = node; + node->next = next5; + next5 = node; + node = new SimpleList( "vertex_shell" ); + next5->prev = node; + node->next = next5; + next5 = node; + node = new SimpleList( "oriented_open_shell" ); + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next10 = node; + node = new SimpleList( "open_shell" ); + next10->prev = node; + node->next = next10; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next9 = node; + node = new SimpleList( "open_shell" ); + next9->prev = node; + node->next = next9; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next8 = node; + node = new SimpleList( "oriented_closed_shell" ); + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next10 = node; + node = new SimpleList( "closed_shell" ); + next10->prev = node; + node->next = next10; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next9 = node; + node = new SimpleList( "closed_shell" ); + next9->prev = node; + node->next = next9; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next8->prev = node; + node->next = next8; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next7 = node; + node = new SimpleList( "connected_face_set" ); + next7->prev = node; + node->next = next7; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next6 = node; + node = new SimpleList( "connected_face_set" ); + next6->prev = node; + node->next = next6; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next5->prev = node; + node->next = next5; + next5 = node; + node = new SimpleList( "connected_edge_set" ); + next5->prev = node; + node->next = next5; + next5 = node; + node = new SimpleList( "oriented_face" ); + next8 = node; + node = new SimpleList( "advanced_face" ); + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next10 = node; + node = new SimpleList( "face_surface" ); + next10->prev = node; + node->next = next10; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next9 = node; + node = new SimpleList( "face_surface" ); + next9->prev = node; + node->next = next9; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next8->prev = node; + node->next = next8; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next7 = node; + node = new SimpleList( "face" ); + next7->prev = node; + node->next = next7; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next6 = node; + node = new SimpleList( "face" ); + next6->prev = node; + node->next = next6; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next5->prev = node; + node->next = next5; + next5 = node; + node = new SimpleList( "face_outer_bound" ); + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next7 = node; + node = new SimpleList( "face_bound" ); + next7->prev = node; + node->next = next7; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next6 = node; + node = new SimpleList( "face_bound" ); + next6->prev = node; + node->next = next6; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next5->prev = node; + node->next = next5; + next5 = node; + node = new SimpleList( "oriented_edge" ); + next8 = node; + node = new SimpleList( "edge_curve" ); + next8->prev = node; + node->next = next8; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next7 = node; + node = new SimpleList( "edge" ); + next7->prev = node; + node->next = next7; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next6 = node; + node = new SimpleList( "edge" ); + next6->prev = node; + node->next = next6; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next5->prev = node; + node->next = next5; + next5 = node; + node = new SimpleList( "vertex_point" ); + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next7 = node; + node = new SimpleList( "vertex" ); + next7->prev = node; + node->next = next7; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next6 = node; + node = new SimpleList( "vertex" ); + next6->prev = node; + node->next = next6; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next5->prev = node; + node->next = next5; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next4 = node; + node = new SimpleList( "topological_representation_item" ); + next4->prev = node; + node->next = next4; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + next3 = node; + node = new SimpleList( "topological_representation_item" ); + next3->prev = node; + node->next = next3; + child = node; + node = new OrList; + ((MultList *)node)->appendList( child ); + next2->prev = node; + node->next = next2; + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next1 = node; + node = new SimpleList( "representation_item" ); + next1->prev = node; + node->next = next1; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + cl = new ComplexList((AndList *)node); + cl->buildList(); + cl->head->setLevel( 0 ); + cc->insert( cl ); + + // ComplexList with supertype "representation_relationship": + node = new SimpleList( "shape_representation_relationship" ); + next2 = node; + node = new SimpleList( "representation_relationship_with_transformation" ); + next2->prev = node; + node->next = next2; + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next1 = node; + node = new SimpleList( "representation_relationship" ); + next1->prev = node; + node->next = next1; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + cl = new ComplexList((AndList *)node); + cl->buildList(); + cl->head->setLevel( 0 ); + cc->insert( cl ); + + // ComplexList with supertype "security_classification_assignment": + node = new SimpleList( "cc_design_security_classification" ); + child = node; + node = new AndOrList; + ((MultList *)node)->appendList( child ); + next1 = node; + node = new SimpleList( "security_classification_assignment" ); + next1->prev = node; + node->next = next1; + child = node; + node = new AndList; + ((MultList *)node)->appendList( child ); + cl = new ComplexList((AndList *)node); + cl->buildList(); + cl->head->setLevel( 0 ); + cc->insert( cl ); + + return cc; +} diff --git a/source/geometry/solids/STEP/src/dirobj.cc b/source/geometry/solids/STEP/src/dirobj.cc index ab7f5ec4b4..661705894b 100644 --- a/source/geometry/solids/STEP/src/dirobj.cc +++ b/source/geometry/solids/STEP/src/dirobj.cc @@ -1,18 +1,8 @@ - -// - - - -// -// $Id: dirobj.cc,v 1.2 1999/05/21 20:21:07 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - /* * NIST Utils Class Library * clutils/dirobj.cc -* May 1995 +* April 1997 * David Sauder * K. C. Morris @@ -20,7 +10,7 @@ * and is not subject to copyright. */ -/* */ +/* $Id: dirobj.cc,v 1.4 2000/06/08 17:18:12 gcosmo Exp $ */ /* * DirObj implementation @@ -51,6 +41,22 @@ #include + +// to help ObjectCenter +#ifndef HAVE_MEMMOVE +extern "C" +{ +void * memmove(void *__s1, const void *__s2, size_t __n); +} +#endif + +//#ifdef __OBJECTCENTER__ +//extern "C" +//{ +//void * memmove(void *__s1, const void *__s2, size_t __n); +//} +//#endif + /////////////////////////////////////////////////////////////////////////////// // // Create a new DirObj object. @@ -80,7 +86,7 @@ DirObj::~DirObj () { // // Returns a real path. // if 'path' is a null string ("\0") or nil (0) return ./ -// otherwise return the path remaining after the following is Done: +// otherwise return the path remaining after the following is done: // send the remaining path after the first '/' in the last occurence // of '//' to InterpTilde() where the last tilde will be expanded // to a full path. @@ -104,7 +110,7 @@ const char* DirObj::RealPath (const char* path) { // /////////////////////////////////////////////////////////////////////////////// -HepBoolean DirObj::LoadDirectory (const char* name) { +boolean DirObj::LoadDirectory (const char* name) { char buf[MAXPATHLEN+2]; const char* path = buf; @@ -136,14 +142,19 @@ int DirObj::Index (const char* name) { // /////////////////////////////////////////////////////////////////////////////// -HepBoolean DirObj::Reset (const char* path) { - HepBoolean successful = IsADirectory(path); +boolean DirObj::Reset (const char* path) { + boolean successful = IsADirectory(path); if (successful) { ClearFileList(); // temporary fix for Windows/NT !!!!!!!!!!!!!!!!!!!!!!! #ifndef WIN32 DIR* dir = opendir(path); for (struct dirent* d = readdir(dir); d != NULL; d = readdir(dir)) { +//#if defined(SYSV) +// for (struct dirent* d = readdir(dir); d != NULL; d = readdir(dir)) { +//#else +// for (struct direct* d = readdir(dir); d != NULL; d = readdir(dir)) { +//#endif InsertFile(d->d_name, Position(d->d_name)); } closedir(dir); @@ -160,9 +171,9 @@ HepBoolean DirObj::Reset (const char* path) { // /////////////////////////////////////////////////////////////////////////////// -HepBoolean DirObj::IsADirectory (const char* path) { +boolean DirObj::IsADirectory (const char* path) { struct stat st; - return (stat(path, &st) == 0 && (st.st_mode & S_IFMT) == S_IFDIR) ? true : false ; + return stat(path, &st) == 0 && (st.st_mode & S_IFMT) == S_IFDIR; } //////////////////////////////// Home() /////////////////////////////////////// @@ -315,34 +326,34 @@ const char* DirObj::ElimDot (const char* path) { // /////////////////////////////////////////////////////////////////////////////// -//static HepBoolean CollapsedDotDotSlash (const char* path, const char*& start) { +//static boolean CollapsedDotDotSlash (const char* path, const char*& start) { // Josh L, 5/2/95 -static HepBoolean CollapsedDotDotSlash (const char* path, const char* start) { +static boolean CollapsedDotDotSlash (const char* path, const char* start) { // fail if 'start' is at beginning of path (there is no path) or // if no directory is before start (no '/' before '../') if (path == start || *(start-1) != '/') { - return false; + return 0; // succeed if 1st char in path is '/' and start points to the // next char (didn't collapse path and shouldn't have } else if (path == start-1 && *path == '/') { - return true; + return 1; } else if (path == start-2) { // NB: won't handle '//' right start = path; - return *start != '.' ? true : false;; + return *start != '.'; } else if (path < start-2 && !DotDotSlash(start-3)) { for (start -= 2; path <= start; --start) { if (*start == '/') { ++start; - return true; + return 1; } } start = path; - return true; + return 1; } - return false; + return 0; } //////////////////////////////// ElimDotDot() ///////////////////////////////// @@ -377,7 +388,7 @@ const char* DirObj::ElimDotDot (const char* path) { // if 'path' has no tilde or an error happens when expanding the tilde, // return 'path'. // if 'path' has a tilde, it must be at the beginning of 'path' or -// Follow a '/' +// follow a '/' // if a 'name' follows tilde, return a new path consisting of the // last ~ in 'path' expanded to the 'name's home directory // followed by the remaining path after name (if such exists) @@ -391,20 +402,15 @@ const char* DirObj::ElimDotDot (const char* path) { const char* DirObj::InterpTilde (const char* path) { static char realpath[MAXPATHLEN+1]; const char* beg = strrchr(path, '~'); - int tmp = (beg != NULL && (beg == path || *(beg-1) == '/')); - HepBoolean validTilde; - if (tmp) - validTilde = true; - else - validTilde = false; - + boolean validTilde = beg != NULL && (beg == path || *(beg-1) == '/'); + if (validTilde) { const char* end = strchr(beg, '/'); int length = (end == nil) ? strlen(beg) : end - beg; const char* expandedTilde = ExpandTilde(beg, length); if (expandedTilde == nil) { - validTilde = false; + validTilde = 0; } else { strcpy(realpath, expandedTilde); if (end != nil) { diff --git a/source/geometry/solids/STEP/src/dispnode.cc b/source/geometry/solids/STEP/src/dispnode.cc index 559858ca53..93311301d3 100644 --- a/source/geometry/solids/STEP/src/dispnode.cc +++ b/source/geometry/solids/STEP/src/dispnode.cc @@ -1,18 +1,8 @@ - -// - - - -// -// $Id: dispnode.cc,v 1.2 1999/05/21 20:21:07 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - /* * NIST STEP Editor Class Library * cleditor/dispnode.cc -* May 1995 +* April 1997 * David Sauder * K. C. Morris @@ -20,16 +10,17 @@ * and is not subject to copyright. */ -/* */ +/* $Id: dispnode.cc,v 1.3 2000/01/21 13:43:08 gcosmo Exp $ */ #include #include +//#include #include #include // define this to be the name of the display object -class StepEntityEditor; +// class StepEntityEditor; // This function needs to be defined outside the SCL libraries. It needs to do // two things: @@ -37,19 +28,14 @@ class StepEntityEditor; // 2) delete the StepEntityEditor window // To see an example of this function used with the Data Probe look in // ../clprobe-ui/StepEntEditor.cc Look at DeleteSEE() and ~StepEntityEditor(). - -// Note: the following function has been redefined for porting on DEC/OSF1 and SUN/OS // extern void DeleteSEE(StepEntityEditor *se); -void DeleteSEE(StepEntityEditor *se) { - if (se) se=NULL; -} DisplayNode::~DisplayNode() { Remove(); if(see) { - DeleteSEE((StepEntityEditor *)see); +// DeleteSEE((StepEntityEditor *)see); //DAS PORT need the cast from void* DeleteSEE(see); } } diff --git a/source/geometry/solids/STEP/src/dispnodelist.cc b/source/geometry/solids/STEP/src/dispnodelist.cc index 821f5bab0e..53ab7000d7 100644 --- a/source/geometry/solids/STEP/src/dispnodelist.cc +++ b/source/geometry/solids/STEP/src/dispnodelist.cc @@ -1,18 +1,8 @@ - -// - - - -// -// $Id: dispnodelist.cc,v 1.2 1999/05/21 20:21:08 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - /* * NIST STEP Editor Class Library * cleditor/dispnodelist.cc -* May 1995 +* April 1997 * David Sauder * K. C. Morris @@ -20,7 +10,7 @@ * and is not subject to copyright. */ -/* */ +/* $Id: dispnodelist.cc,v 1.3 2000/01/21 13:43:08 gcosmo Exp $ */ #include #include @@ -30,32 +20,39 @@ #include #include - // deletes node from its previous List & appends - // actually it puts it at the front of the List. + +void DisplayNodeList::Remove(GenericNode *node) +{ + GenNodeList::Remove(node); +// DON'T DO THIS ((DisplayNode *)node)->displayState = noMapState; +} + + // deletes node from its previous list & appends + // actually it puts it at the front of the list. void DisplayNodeList::Append(GenericNode *node) { InsertBefore(node, head); } - // deletes newNode from its previous List & inserts after + // deletes newNode from its previous list & inserts after // existNode void DisplayNodeList::InsertAfter(GenericNode *newNode, GenericNode *existNode) { if(newNode->next != 0){ // remove the node from its previous - newNode->Remove(); // display state List + newNode->Remove(); // display state list } GenNodeList::InsertAfter(newNode, existNode); // DON'T DO THIS ((DisplayNode *)newNode)->displayState = listType; } - // deletes newNode from its previous List & inserts before + // deletes newNode from its previous list & inserts before // existNode void DisplayNodeList::InsertBefore(GenericNode *newNode, GenericNode *existNode) { if(newNode->next != 0){ // remove the node from its previous - newNode->Remove(); // display state List + newNode->Remove(); // display state list } GenNodeList::InsertBefore(newNode, existNode); // DON'T DO THIS!!! ((DisplayNode *)newNode)->displayState = listType; diff --git a/source/geometry/solids/STEP/src/entlist.cc b/source/geometry/solids/STEP/src/entlist.cc new file mode 100644 index 0000000000..8cac8c434b --- /dev/null +++ b/source/geometry/solids/STEP/src/entlist.cc @@ -0,0 +1,140 @@ +/***************************************************************************** + * entlist.cc * + * * + * Description: EntList is a class type which supports the concept of com- * + * plex inheritance. EntLists capture information on the * + * allowable types of complex entities. They represent this * + * information internally and may be used to validate a user * + * attempt to instantiate a complex instance. This file con- * + * tains member function definitions for EntList and for its * + * SimpleList subtype. * + * * + * Created by: David Rosenfeld * + * Date: 9/18/96 * + *****************************************************************************/ + +#include "complexSupport.h" + +int EntList::siblings() + /* + * Returns the number of EntLists in this's list (EntList->next, next->next + * etc.) including this. + */ +{ + int count; + EntList *el; + + for ( count=1, el=next; el; count++, el= el->next ) + ; + return count; +} + +EntList *EntList::firstNot( JoinType j ) + /* + * Returns the first EntList not of type join, starting from this. + */ +{ + EntList *sibling = this; + + while ( sibling != NULL && sibling->join == j ) { + sibling = sibling->next; + } + return sibling; // (may = NULL) +} + +EntList *EntList::firstWanted( MatchType match ) + /* + * Returns the first EntList where viable = match, starting from this. + */ +{ + EntList *sibling = this; + + while ( sibling != NULL && sibling->viable != match ) { + sibling = sibling->next; + } + return sibling; // (may = NULL) +} + +EntList *EntList::lastNot( JoinType j ) + /* + * Returns the last EntList not of type join, searching backwards from + * this. + */ +{ + EntList *sibling = this; + + while ( sibling != NULL && sibling->join == j ) { + sibling = sibling->prev; + } + return sibling; // (may = NULL) +} + +EntList *EntList::lastWanted( MatchType match ) + /* + * Returns the last EntList where viable = match, searching backwards from + * this. + */ +{ + EntList *sibling = this; + + while ( sibling != NULL && sibling->viable != match ) { + sibling = sibling->prev; + } + return sibling; // (may = NULL) +} + + +void SimpleList::unmarkAll( EntNode *ents ) + /* + * Unmarks the node that was marked by this List. Normally called when + * undoing an OR choice to try out another. + */ +{ + EntNode *eptr = ents; + int comp = -1; + + if ( viable < MATCHSOME ) return; + + while ( eptr != NULL && (comp = strcmp( eptr->name, name )) < 0 ) { + eptr = eptr->next; + } + // (We assume we have a match now since viable >= MATCHSOME.) + if ( eptr->mark <= I_marked ) { + // Only unmark if we gave it the strongest mark: + eptr->setmark( NOMARK ); + } + // Either way (whether or not another List's mark remains), we no longer + // marked: + I_marked = NOMARK; +} + +int SimpleList::acceptChoice( EntNode *ents ) + /* + * Marks whichever node we can mark. We assume there is a match because + * this function is only called by a parent MultList if its child had a + * viable val of MATCHSOME. Return TRUE if we mark a previously unmarked + * node; otherwise FALSE. + */ +{ + EntNode *eptr = ents; + int comp; + + while ( eptr != NULL ) { + if ( (comp = strcmp( name, eptr->name )) == 0 ) { + if ( ! eptr->marked() ) { + eptr->setmark( ORMARK ); + I_marked = ORMARK; + // Remember that we're the one who marked this. (Nec. in case + // we have to unmark later to try out another OR branch.) + return TRUE; + } + return FALSE; // we didn't mark + } + if ( comp < 0 ) { + // We're beyond name in the ents list. No more checking to do. + return FALSE; + } + eptr = eptr->next; + } + return FALSE; +} diff --git a/source/geometry/solids/STEP/src/entnode.cc b/source/geometry/solids/STEP/src/entnode.cc new file mode 100644 index 0000000000..1d41079a44 --- /dev/null +++ b/source/geometry/solids/STEP/src/entnode.cc @@ -0,0 +1,198 @@ +/***************************************************************************** + * entnode.cc * + * * + * Description: The EntNode class is used to store a collection of entity * + * names. It stores them in alphabetical order. It is the key * + * component of the EntList classes, which are used to store * + * information on the instantiable complex entity types. This * + * file contains EntNode member function definitions. * + * * + * Created by: David Rosenfeld * + * Date: 9/18/96 * + *****************************************************************************/ + +#include "complexSupport.h" + +EntNode::EntNode( const char **names ) + /* + * Given a list of entity names, creates a sorted linked list of EntNodes + * corresponding to the list. A name which = "*" is a dummy trailer + * implying the list has been completed. This function first builds the + * list, then sets this to the first element, and then deletes the first + * element. This ensures that `this' points to the start of the list. + */ +{ + int j = 1, comp; + EntNode *prev, *prev2 = NULL, // prev2 - the one before prev + *newnode, *firstnode; + const char *nm; + + // Create a first EntNode: + firstnode = prev = new EntNode( names[0] ); + + while ( names[j] && *names[j] != '*' ) { + nm = names[j]; + while ( prev != NULL && (comp = StrCmpIns( prev->name, nm )) < 0 ) { + prev2 = prev; + prev = prev->next; + } + + // One exceptional case: If new name is same as prev, skip it: + if ( comp != 0 ) { + // At this point, we know the new node belongs between prev2 and + // prev. prev or prev2 may = NULL if newnode belongs at the end of + // the list or before the beginning, respectively. + newnode = new EntNode( nm ); + newnode->next = prev; + if ( prev2 == NULL ) { + // This will be the case if the inner while was never entered. + // That happens when newnode belonged at the beginning of the + // list. If so, reset firstnode. + firstnode = newnode; + } else { + prev2->next = newnode; + } + } + // Reset for next name: + prev = firstnode; + prev2 = NULL; + j++; + } + + // Finally, place the contents of firstnode in 'this', and delete first- + // node. This ensures that 'this' is first. + *this = *firstnode; + firstnode->next = NULL; + // (Otherwise, deleting firstnode would delete entire list.) + delete firstnode; +} + +EntNode &EntNode::operator= ( EntNode &ent ) + /* + * Copies all of ent's values here. + */ +{ + Name( ent.name ); + setmark( ent.mark ); + multSuprs( ent.multSupers ); + next = ent.next; + return *this; +} + +void EntNode::markAll( MarkType stamp ) + /* + * Marks/unmarks all the nodes in this's list (default is to mark). + */ +{ + EntNode *node = this; + + while ( node != NULL ) { + node->mark = stamp; + node = node->next; + } +} + +int EntNode::allMarked() + /* + * Returns TRUE if this and all nodes following it are marked. + */ +{ + EntNode *node = this; + + while ( node != NULL ) { + if ( node->mark == NOMARK ) { + return FALSE; + } + node = node->next; + } + return TRUE; +} + +int EntNode::unmarkedCount() + /* + * Returns the number of unmarked nodes in this's list. + */ +{ + int count = 0; + EntNode *node = this; + + while ( node != NULL ) { + if ( node->mark == NOMARK ) { + count++; + } + node = node->next; + } + return count; +} + +EntNode *EntNode::lastSmaller( EntNode *ent ) + /* + * Starting from `this', search for the last node (along our next's) which + * alphabetically precedes ent. + */ +{ + EntNode *eptr = next, *prev = this; + + if ( *this > *ent ) { + return NULL; + } + while ( eptr && *eptr > *prev && *eptr < *ent ) { + prev = eptr; + eptr = eptr->next; + } + return prev; +} + +void EntNode::sort( EntNode **first ) + /* + * Check if our nodes are in order. If not, re-sort. The earlier part of + * the list has been sorted but not necessarily the remainder. This algo- + * rithm sorts our nodes in chunks, and is fairly efficient when we know + * our nodes are basically in order. (sort() is called from STEPcomplex:: + * Initialize() when we are creating a complex entity and have renamed a + * few of the nodes. The nodes at first were in order; only the renamed + * ones may be out of place.) + */ +{ + EntNode *eptr1, *eptr2, *temp1, *temp2; + + while ( next && *this > *next ) { + + // Find the earliest node greater than next. (I.e., is not only this > + // next but also some of this's preceding nodes. Since the nodes + // earlier in the list are sorted already, we can easily determine the + // ordered chunk of nodes which next should precede.) (eptr1 is + // actually set to the one before, so that we'll know that eptr1->next + // should now be set to next.) + eptr1 = (*first)->lastSmaller( next ); + + // Take the latest node eptr1 is greater than. (I.e., beyond next are + // there more nodes which should be immediately after eptr1.) (The + // succeeding nodes are not necessarily in order, so lastSmaller() also + // checks that nodes later than next are also > their prev's.) + if ( eptr1 ) { + eptr2 = next->lastSmaller( eptr1->next ); + } else { + eptr2= next->lastSmaller( *first ); + } + + // Switch the two lists: + if ( eptr1 ) { + temp1 = eptr1->next; + eptr1->next = next; + temp2 = eptr2->next; + eptr2->next = temp1; + next = temp2; + } else { + // `this' should be first in the list. + temp2 = eptr2->next; + eptr2->next = *first; + *first = next; + next = temp2; + } + } + + if ( next ) { + next->sort( first ); + } +} diff --git a/source/geometry/solids/STEP/src/errordesc.cc b/source/geometry/solids/STEP/src/errordesc.cc index c3f0e56c2d..bff1d48e45 100644 --- a/source/geometry/solids/STEP/src/errordesc.cc +++ b/source/geometry/solids/STEP/src/errordesc.cc @@ -1,14 +1,4 @@ - -// - - - -// -// $Id: errordesc.cc,v 1.3 1999/12/15 14:50:19 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - /* * NIST Utils Class Library * clutils/errordesc.cc @@ -20,13 +10,148 @@ * and is not subject to copyright. */ -/* */ +/* $Id: errordesc.cc,v 1.4 2000/01/21 13:43:10 gcosmo Exp $ */ #include +#include DebugLevel ErrorDescriptor::_debug_level = DEBUG_OFF; G4std::ostream * ErrorDescriptor::_out = 0; +void +ErrorDescriptor::PrintContents(G4std::ostream &out) const +{ + SCLstring s; + out << "Severity: " << severity(s) << G4endl; + if(_userMsg) + { + out << "User message in parens:" << G4endl << "("; + out << UserMsg() << ")" << G4endl; + } + if(_detailMsg) + { + out << "Detailed message in parens:" << G4endl << "("; + out << DetailMsg() << ")" << G4endl; + } +} + +const char * +ErrorDescriptor::severity(SCLstring &s) const +{ + s.set_null(); + switch(severity()) + { + case SEVERITY_NULL : + { + s = "SEVERITY_NULL"; + break; + } + case SEVERITY_USERMSG : + { + s = "SEVERITY_USERMSG"; + break; + } + case SEVERITY_INCOMPLETE : + { + s = "SEVERITY_INCOMPLETE"; + break; + } + case SEVERITY_WARNING : + { + s = "SEVERITY_WARNING"; + break; + } + case SEVERITY_INPUT_ERROR : + { + s = "SEVERITY_INPUT_ERROR"; + break; + } + case SEVERITY_BUG : + { + s = "SEVERITY_BUG"; + break; + } + case SEVERITY_EXIT : + { + s = "SEVERITY_EXIT"; + break; + } + case SEVERITY_DUMP : + { + s = "SEVERITY_DUMP"; + break; + } + case SEVERITY_MAX : + { + s = "SEVERITY_MAX"; + break; + } + } + return s.chars(); +} + + +Severity +ErrorDescriptor::GetCorrSeverity(const char *s) +{ +// G4cout << "s is (" << s << ") \n"; + if(s && s[0] != 0) + { + SCLstring s2; + StrToUpper(s,s2); +// G4cout << "s after if is (" << s << ") \n" << "s2 is (" << s2.chars() << ")\n"; + if(!strcmp(s2.chars(),"SEVERITY_NULL")) + { +// G4cout << "SEVERITY_NULL" << G4endl; + return SEVERITY_NULL; + } + if(!strcmp(s2.chars(),"SEVERITY_USERMSG")) + { +// G4cout << "SEVERITY_USERMSG" << G4endl; + return SEVERITY_USERMSG; + } + if(!strcmp(s2.chars(),"SEVERITY_INCOMPLETE")) + { +// G4cout << "SEVERITY_INCOMPLETE" << G4endl; + return SEVERITY_INCOMPLETE; + } + if(!strcmp(s2.chars(),"SEVERITY_WARNING")) + { +// G4cout << "SEVERITY_WARNING" << G4endl; + return SEVERITY_WARNING; + } + if(!strcmp(s2.chars(),"SEVERITY_INPUT_ERROR")) + { +// G4cout << "SEVERITY_INPUT_ERROR" << G4endl; + return SEVERITY_INPUT_ERROR; + } + if(!strcmp(s2.chars(),"SEVERITY_BUG")) + { +// G4cout << "SEVERITY_BUG" << G4endl; + return SEVERITY_BUG; + } + if(!strcmp(s2.chars(),"SEVERITY_EXIT")) + { +// G4cout << "SEVERITY_EXIT" << G4endl; + return SEVERITY_EXIT; + } + if(!strcmp(s2.chars(),"SEVERITY_DUMP")) + { +// G4cout << "SEVERITY_DUMP" << G4endl; + return SEVERITY_DUMP; + } + if(!strcmp(s2.chars(),"SEVERITY_MAX")) + { +// G4cout << "SEVERITY_MAX" << G4endl; + return SEVERITY_MAX; + } + } + G4cerr << "Internal error: " << __FILE__ << __LINE__ + << "\n" << _POC_ "\n"; + G4cerr << "Calling ErrorDescriptor::GetCorrSeverity() with null string\n"; + return SEVERITY_BUG; +} + ErrorDescriptor::ErrorDescriptor ( Severity s, DebugLevel d) : _severity (s), _userMsg (0), @@ -61,7 +186,12 @@ void ErrorDescriptor::UserMsg ( const char * msg) { if(!_userMsg) +#ifdef __OSTORE__ + _userMsg = new (os_database::of(this), + SCLstring::get_os_typespec()) SCLstring; +#else _userMsg = new SCLstring; +#endif *_userMsg = msg; } @@ -69,15 +199,38 @@ void ErrorDescriptor::PrependToUserMsg ( const char * msg) { if(!_userMsg) +#ifdef __OSTORE__ + _userMsg = new (os_database::of(this), + SCLstring::get_os_typespec()) SCLstring; +#else _userMsg = new SCLstring; +#endif _userMsg -> Prepend (msg); } +void +ErrorDescriptor::AppendToUserMsg ( const char c) +{ + if(!_userMsg) +#ifdef __OSTORE__ + _userMsg = new (os_database::of(this), + SCLstring::get_os_typespec()) SCLstring; +#else + _userMsg = new SCLstring; +#endif + _userMsg -> Append(c); +} + void ErrorDescriptor::AppendToUserMsg ( const char * msg) { if(!_userMsg) +#ifdef __OSTORE__ + _userMsg = new (os_database::of(this), + SCLstring::get_os_typespec()) SCLstring; +#else _userMsg = new SCLstring; +#endif _userMsg -> Append (msg); } @@ -95,7 +248,12 @@ void ErrorDescriptor::DetailMsg ( const char * msg) { if(!_detailMsg) +#ifdef __OSTORE__ + _detailMsg = new (os_database::of(this), + SCLstring::get_os_typespec()) SCLstring; +#else _detailMsg = new SCLstring; +#endif *_detailMsg = msg; // G4cerr << "D " << _detailMsg->chars() << '\n'; } @@ -104,14 +262,37 @@ void ErrorDescriptor::PrependToDetailMsg (const char * msg) { if(!_detailMsg) +#ifdef __OSTORE__ + _detailMsg = new (os_database::of(this), + SCLstring::get_os_typespec()) SCLstring; +#else _detailMsg = new SCLstring; +#endif _detailMsg -> Prepend (msg); } +void +ErrorDescriptor::AppendToDetailMsg ( const char c) +{ + if(!_detailMsg) +#ifdef __OSTORE__ + _detailMsg = new (os_database::of(this), + SCLstring::get_os_typespec()) SCLstring; +#else + _detailMsg = new SCLstring; +#endif + _detailMsg -> Append(c); +} + void ErrorDescriptor::AppendToDetailMsg (const char * msg) { if(!_detailMsg) +#ifdef __OSTORE__ + _detailMsg = new (os_database::of(this), + SCLstring::get_os_typespec()) SCLstring; +#else _detailMsg = new SCLstring; +#endif _detailMsg -> Append (msg); } diff --git a/source/geometry/solids/STEP/src/gennode_inline.cc b/source/geometry/solids/STEP/src/gennode.cc similarity index 72% rename from source/geometry/solids/STEP/src/gennode_inline.cc rename to source/geometry/solids/STEP/src/gennode.cc index d94c8f3266..a9c4cfe6d7 100644 --- a/source/geometry/solids/STEP/src/gennode_inline.cc +++ b/source/geometry/solids/STEP/src/gennode.cc @@ -1,21 +1,8 @@ - -// - - - -// -// $Id: gennode_inline.cc,v 1.2 1999/05/21 20:21:08 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - -#ifndef gennode_inline_cc -#define gennode_inline_cc - /* * NIST Utils Class Library -* clutils/gennode_inline.cc -* May 1995 +* clutils/gennode.cc +* September 1996 * David Sauder * K. C. Morris @@ -23,15 +10,14 @@ * and is not subject to copyright. */ -/* */ - -#ifdef __O3DB__ -#include -#endif +/* $Id: gennode.cc,v 1.1 2000/01/21 13:43:10 gcosmo Exp $ */ #include #include +#ifdef __O3DB__ +#include +#endif ////////////////////////////////////////////////////////////////////////////// // class GenericNode inline functions that depend on other classes // inline functions @@ -39,13 +25,13 @@ // depends on: // void GenNodeList::Append(GenericNode *node) from the gennodelist.h ////////////////////////////////////////////////////////////////////////////// -void GenericNode::Append(GenNodeList *List) + +void GenericNode::Append(GenNodeList *list) { // if(debug_level >= PrintFunctionTrace) // G4cout << "GenericNode::Append()\n"; // if(debug_level >= PrintValues) // G4cout << "GenericNode::this : '" << this << "'\n"; - List->Append(this); + list->Append(this); } -#endif diff --git a/source/geometry/solids/STEP/src/gennodearray.cc b/source/geometry/solids/STEP/src/gennodearray.cc index 612c771e45..faec7c8cd2 100644 --- a/source/geometry/solids/STEP/src/gennodearray.cc +++ b/source/geometry/solids/STEP/src/gennodearray.cc @@ -1,18 +1,8 @@ - -// - - - -// -// $Id: gennodearray.cc,v 1.2 1999/05/21 20:21:09 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - /* * NIST Utils Class Library * clutils/gennodearray.h -* May 1995 +* April 1997 * David Sauder * K. C. Morris @@ -20,12 +10,89 @@ * and is not subject to copyright. */ -/* */ +/* $Id: gennodearray.cc,v 1.3 2000/01/21 13:43:11 gcosmo Exp $ */ + +//#include "/proj/pdevel/autoc/arch.sunCC.iv/scl_cf.h" +// This is an scl configuration file generated by the configure script +// generated using gnu's autoconf +#ifdef HAVE_CONFIG_H +#include +#endif #include #include #include +#ifndef HAVE_MEMMOVE +extern "C" { +//#ifdef __OSTORE__ +//#include +//#else + extern void * memmove(void *, const void *, size_t); +/* extern char * memset(char *, int, int); */ +//#endif +} +#endif + +GenericNode::GenericNode() +{ + next = 0; + prev = 0; +} + +GenericNode::~GenericNode() +{ + Remove(); +} + +//#ifdef __OSTORE__ +//GenNodeArray::GenNodeArray (os_database *db, int defaultSize) +//#else +GenNodeArray::GenNodeArray (int defaultSize) +//#endif +{ + _bufsize = defaultSize; +/* +#ifdef __OSTORE__ + { + os_typespec tmp_ts("GenericNode*"); + _buf = new (os_segment::of(this), &tmp_ts, _bufsize) + GenericNode*[_bufsize]; + } +#else +*/ + _buf = new GenericNode*[_bufsize]; +//#endif + memset(_buf, 0, _bufsize*sizeof(GenericNode*)); + _count = 0; +} + +GenNodeArray::~GenNodeArray () +{ + +// int i; + // this is dangerous because several things point at these nodes + // also whatever is derived from this thing might do this +// for(i = 0; i < _count; i++) +// delete _buf[i]; + delete [] _buf; +} + +int GenNodeArray::Index (GenericNode** gn) +{ + return ((gn - _buf) / sizeof(GenericNode*)); +} + +void GenNodeArray::Append(GenericNode* gn) +{ + Insert(gn, _count); +} + +int GenNodeArray::Insert(GenericNode* gn) +{ + return Insert(gn, _count); +} + void GenNodeArray::Check (int index) { @@ -34,7 +101,19 @@ GenNodeArray::Check (int index) if (index >= _bufsize) { int oldBufSize = _bufsize; _bufsize = (index+1) * 2; +/* +#ifdef __OSTORE__ + { + os_typespec tmp_ts("GenericNode*"); + newbuf = new (os_segment::of(this), &tmp_ts, _bufsize) + GenericNode*[_bufsize]; + } +#else +*/ newbuf = new GenericNode*[_bufsize]; +//#endif + + memset(newbuf, 0, _bufsize); // memset(newbuf[oldBufSize], 0, // (_bufsize - oldBufSize)*sizeof(GenericNode*) ); diff --git a/source/geometry/solids/STEP/src/gennodelist.cc b/source/geometry/solids/STEP/src/gennodelist.cc new file mode 100644 index 0000000000..ad6323dc9e --- /dev/null +++ b/source/geometry/solids/STEP/src/gennodelist.cc @@ -0,0 +1,93 @@ + +/* +* NIST Utils Class Library +* clutils/gennodelist.cc +* April 1997 +* David Sauder +* K. C. Morris + +* Development of this software was funded by the United States Government, +* and is not subject to copyright. +*/ + +/* $Id: gennodelist.cc,v 1.1 2000/01/21 13:43:11 gcosmo Exp $ */ + +#include +#include +//#include +#include + + // inserts after existNode +void GenNodeList::InsertAfter(GenericNode *newNode, + GenericNode *existNode) +{ + newNode->next = existNode->next; + newNode->next->prev = newNode; + + newNode->prev = existNode; + existNode->next = newNode; +} + + // inserts before existNode +void GenNodeList::InsertBefore(GenericNode *newNode, + GenericNode *existNode) +{ + existNode->prev->next = newNode; + newNode->prev = existNode->prev; + + newNode->next = existNode; + existNode->prev = newNode; +} + + // inserts before the head node +void GenNodeList::Append(GenericNode *node) +{ + InsertBefore(node, head); +} + +void +GenNodeList::Remove(GenericNode *node) +{ + if(node != head){ + node->next->prev = node->prev; + node->prev->next = node->next; + node->next = 0; + node->prev = 0; + } +} + +void GenNodeList::ClearEntries() +{ +// if(debug_level >= PrintFunctionTrace) +// G4cout << "GenNodeList::ClearEntries()\n"; + GenericNode *gnPrev = head->Next(); + GenericNode *gn = gnPrev->Next(); + + while(gnPrev != head) + { + gnPrev->prev = 0; + gnPrev->next = 0; + gnPrev = gn; + gn = gn->Next(); + } + head->next = head; + head->prev = head; +} + +void GenNodeList::DeleteEntries() +{ +// if(debug_level >= PrintFunctionTrace) +// G4cout << "GenNodeList::DeleteEntries()\n"; + GenericNode *gnPrev = head->Next(); + GenericNode *gn; + head->next = 0; + + while(gnPrev != head) + { + gn = gnPrev->Next(); + delete gnPrev; + gnPrev = gn; + } + head->next = head; + head->prev = head; +} diff --git a/source/geometry/solids/STEP/src/instmgr.cc b/source/geometry/solids/STEP/src/instmgr.cc index bd7486e488..25d3145a1c 100644 --- a/source/geometry/solids/STEP/src/instmgr.cc +++ b/source/geometry/solids/STEP/src/instmgr.cc @@ -1,18 +1,8 @@ - -// - - - -// -// $Id: instmgr.cc,v 1.4 1999/12/15 14:50:19 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - /* * NIST STEP Editor Class Library * cleditor/instmgr.cc -* May 1995 +* April 1997 * David Sauder * K. C. Morris @@ -20,7 +10,7 @@ * and is not subject to copyright. */ -/* */ +/* $Id: instmgr.cc,v 1.5 2000/01/21 13:43:12 gcosmo Exp $ */ ////////////////////////////////////////////////////////////////////////////// // @@ -28,7 +18,8 @@ // ////////////////////////////////////////////////////////////////////////////// -#include +#include +//#include #include /////////////////////////////////////////////////////////////////////////////// @@ -59,12 +50,30 @@ InstMgr::PrintSortedFileIds() } } -InstMgr::InstMgr() +InstMgr::InstMgr(int ownsInstances) + : maxFileId(-1), _ownsInstances(ownsInstances) { - maxFileId = -1; +/* +#ifdef __OSTORE__ + master = new (os_segment::of(this), MgrNodeArray::get_os_typespec()) + MgrNodeArray(); + sortedMaster = new (os_segment::of(this), + MgrNodeArraySorted::get_os_typespec()) + MgrNodeArraySorted(); +#else +*/ master = new MgrNodeArray(); sortedMaster = new MgrNodeArraySorted(); +//#endif +} + +InstMgr::~InstMgr() +{ + if(_ownsInstances) + { + master->DeleteEntries(); + } } /////////////////////////////////////////////////////////////////////////////// @@ -72,6 +81,15 @@ InstMgr::InstMgr() void InstMgr::ClearInstances() { // delete master; +// master = new MgrNodeArray(); + master->ClearEntries(); + sortedMaster->ClearEntries(); + maxFileId = -1; +} + +void InstMgr::DeleteInstances() +{ +// delete master; // master = new MgrNodeArray(); master->DeleteEntries(); sortedMaster->ClearEntries(); @@ -87,7 +105,7 @@ void InstMgr::ClearInstances() SEVERITY_INCOMPLETE: if at least one instance is missing a required attribute SEVERITY_WARNING: SEVERITY_INPUT_ERROR: if at least one instance can not be fetched - from the instance List. + from the instance list. **************************************************/ enum Severity @@ -98,17 +116,17 @@ InstMgr::VerifyInstances(ErrorDescriptor& err) int n = InstanceCount(); MgrNode* mn; - STEPentity* se; + SCLP23(Application_instance)* se; enum Severity rval = SEVERITY_NULL; - //for each instance on the List, + //for each instance on the list, //check the MgrNode state. //if the state is complete then do nothing //if the state is not complete, // then check if it is valid - // if it is valid then Increment the warning count, + // if it is valid then increment the warning count, // and set the rval to SEVERITY_INCOMPLETE - // if it is not valid, then Increment the error count + // if it is not valid, then increment the error count // and set the rval to for (int i = 0; i < n; ++i) @@ -129,9 +147,13 @@ InstMgr::VerifyInstances(ErrorDescriptor& err) err.GreaterSeverity(SEVERITY_INPUT_ERROR); continue; } + if (debug_level > 3) + G4cerr << "In VerifyInstances: " + << "new MgrNode for " << mn->GetFileId() << " with state " + << mn->CurrState () << G4endl; if (!mn->MgrNodeListMember(completeSE)) { - se = mn->GetSTEPentity(); + se = mn->GetApplication_instance(); if (se->ValidLevel(&err,this,0) < SEVERITY_USERMSG) { if (rval > SEVERITY_INCOMPLETE) @@ -140,9 +162,9 @@ InstMgr::VerifyInstances(ErrorDescriptor& err) if (errorCount == 1) sprintf(errbuf, "VerifyInstances: Unable to verify the following instances: #%d", - se->FileId()); + se->StepFileId()); else - sprintf(errbuf,", #%d",se->FileId()); + sprintf(errbuf,", #%d",se->StepFileId()); err.AppendToDetailMsg(errbuf); } } @@ -150,7 +172,7 @@ InstMgr::VerifyInstances(ErrorDescriptor& err) if (errorCount) { sprintf(errbuf, - "VerifyInstances: %d invalid instances in List.\n", + "VerifyInstances: %d invalid instances in list.\n", errorCount); err.AppendToUserMsg(errbuf); err.AppendToDetailMsg(".\n"); @@ -173,7 +195,7 @@ MgrNode *InstMgr::FindFileId(int fileId) /////////////////////////////////////////////////////////////////////////////// - // get the index into display List given a STEPentity + // get the index into display list given a SCLP23(Application_instance) // called by see initiated functions int InstMgr::GetIndex(MgrNode *mn) { @@ -182,9 +204,9 @@ int InstMgr::GetIndex(MgrNode *mn) /////////////////////////////////////////////////////////////////////////////// -int InstMgr::GetIndex(STEPentity *se) +int InstMgr::GetIndex(SCLP23(Application_instance) *se) { - int fileId = se->FileId(); + int fileId = se->StepFileId(); return sortedMaster->MgrNodeIndex(fileId); } @@ -195,7 +217,7 @@ int InstMgr::VerifyEntity(int fileId, const char *expectedType) MgrNode *mn = FindFileId(fileId); if(mn) { - if(!strcmp(expectedType, mn->GetSTEPentity()->EntityName())) + if(!strcmp(expectedType, mn->GetApplication_instance()->EntityName())) return 2; // types match else return 1; // possible mismatch depending on descendants @@ -205,23 +227,44 @@ int InstMgr::VerifyEntity(int fileId, const char *expectedType) } /////////////////////////////////////////////////////////////////////////////// -// Append instance to the List of instances. Checks the file id and -// sets it if 1) it is not set already or 2) it already exists in the List. +// Append instance to the list of instances. Checks the file id and +// sets it if 1) it is not set already or 2) it already exists in the list. -MgrNode *InstMgr::Append(STEPentity *se, stateEnum listState) +MgrNode *InstMgr::Append(SCLP23(Application_instance) *se, stateEnum listState) { if (debug_level > 3) - G4cout << "#" << se->FileId() << " append node to InstMgr\n"; + G4cout << "#" << se->StepFileId() << " append node to InstMgr" << G4endl; - if ((se -> FileId () == 0) // no id assigned - || FindFileId (se -> FileId ())) // id already in List - se -> FileId ( NextFileId () ); - else if (se->FileId() > MaxFileId()) maxFileId = se->FileId(); + MgrNode *mn =0; - MgrNode *mn = new MgrNode(se, listState); + if (se->StepFileId () == 0) // no id assigned + se->StepFileId( NextFileId () ); // assign a file id + + if (mn = FindFileId (se->StepFileId())) // if id already in list + // and it's because instance is already in list + if (GetApplication_instance (mn) == se) + return 0; // return 0 or mn? + else se->StepFileId( NextFileId () ); // otherwise assign a new file id + + // update the maxFileId if needed + if (se->StepFileId() > MaxFileId()) maxFileId = se->StepFileId(); + +/* +#ifdef __OSTORE__ + mn = new (os_segment::of(this), MgrNode::get_os_typespec()) + MgrNode(se, listState); + G4cout << "Appended entity: " << G4std::flush; + G4cout << se->EntityName() << G4endl << G4std::flush; +#else +*/ + mn = new MgrNode(se, listState); +//#endif + if (debug_level > 3) + G4cerr << "new MgrNode for " << mn->GetFileId() << " with state " + << mn->CurrState () << G4endl; if(listState == noStateSE) - G4cout << "append to InstMgr **ERROR ** node #" << se->FileId() << - " doesn't have state information\n"; + G4cout << "append to InstMgr **ERROR ** node #" << se->StepFileId() << + " doesn't have state information" << G4endl; master->Append(mn); sortedMaster->Insert(mn); //PrintSortedFileIds(); @@ -232,7 +275,7 @@ MgrNode *InstMgr::Append(STEPentity *se, stateEnum listState) void InstMgr::Delete(MgrNode *node) { - // delete the node from its current state List + // delete the node from its current state list node->Remove(); int index; @@ -251,9 +294,9 @@ void InstMgr::Delete(MgrNode *node) /////////////////////////////////////////////////////////////////////////////// -void InstMgr::Delete(STEPentity *se) +void InstMgr::Delete(SCLP23(Application_instance) *se) { - Delete (FindFileId (se->FileId())); + Delete (FindFileId (se->StepFileId())); } /////////////////////////////////////////////////////////////////////////////// @@ -263,30 +306,30 @@ void InstMgr::ChangeState(MgrNode *node, stateEnum listState) switch(listState){ case completeSE: if (debug_level > 3) - G4cout << "#" << node->GetSTEPentity()->FileId() << - " change node to InstMgr's complete List\n"; + G4cout << "#" << node->GetApplication_instance()->StepFileId() << + " change node to InstMgr's complete list\n"; node->ChangeState(listState); break; case incompleteSE: if (debug_level > 3) - G4cout << "#" << node->GetSTEPentity()->FileId() << - " change node to InstMgr's incomplete List\n"; + G4cout << "#" << node->GetApplication_instance()->StepFileId() << + " change node to InstMgr's incomplete list\n"; node->ChangeState(listState); break; case newSE: if (debug_level > 3) - G4cout << "#" << node->GetSTEPentity()->FileId() << - " change node to InstMgr's new List\n"; + G4cout << "#" << node->GetApplication_instance()->StepFileId() << + " change node to InstMgr's new list\n"; node->ChangeState(listState); break; case deleteSE: if (debug_level > 3) - G4cout << "#" << node->GetSTEPentity()->FileId() << - " change node to InstMgr's delete List\n"; + G4cout << "#" << node->GetApplication_instance()->StepFileId() << + " change node to InstMgr's delete list\n"; node->ChangeState(listState); break; case noStateSE: - G4cout << "#" << node->GetSTEPentity()->FileId() << + G4cout << "#" << node->GetApplication_instance()->StepFileId() << "ERROR can't change this node state\n"; node->Remove(); break; @@ -306,12 +349,12 @@ InstMgr::EntityKeywordCount(const char* name) { int count = 0; MgrNode* node; - STEPentity* se; + SCLP23(Application_instance)* se; int n = InstanceCount(); for (int j = 0; jGetSTEPentity(); + se = node->GetApplication_instance(); if (!strcmp(se->EntityName(), PrettyTmpName(name))) ++count; @@ -321,12 +364,22 @@ InstMgr::EntityKeywordCount(const char* name) /////////////////////////////////////////////////////////////////////////////// -STEPentity * +SCLP23(Application_instance) * +InstMgr::GetApplication_instance(int index) +{ + MgrNode *mn = (MgrNode*)(*master)[index]; + if(mn) + return mn->GetApplication_instance(); + else + return 0; +} + +SCLP23(Application_instance) * InstMgr::GetSTEPentity(int index) { MgrNode *mn = (MgrNode*)(*master)[index]; if(mn) - return mn->GetSTEPentity(); + return mn->GetApplication_instance(); else return 0; } @@ -343,58 +396,41 @@ InstMgr::GetSTEPentity(int index) does not wrap around to search indices before the starting_index. **************************************************/ -STEPentity* +SCLP23(Application_instance)* +InstMgr::GetApplication_instance(const char* entityKeyword, int starting_index) +{ + MgrNode *node; + SCLP23(Application_instance) *se; + + int count = InstanceCount(); + for (int j = starting_index; jGetApplication_instance(); + if (!strcmp(se->EntityName(), + PrettyTmpName(entityKeyword))) + return se; + } + return ENTITY_NULL; +} + +SCLP23(Application_instance)* InstMgr::GetSTEPentity(const char* entityKeyword, int starting_index) { - // L. Broglia - G4cout<<"Warning ! This function don`t work correctly..."; - - MgrNode *node; - STEPentity *se; - - int count = InstanceCount(); - for (int j = starting_index; jGetSTEPentity(); - - if ( ! strcmp( se->EntityName(),PrettyTmpName(entityKeyword)) ) - { - return se; - } - } - - return ENTITY_NULL; + MgrNode *node; + SCLP23(Application_instance) *se; + + int count = InstanceCount(); + for (int j = starting_index; jGetApplication_instance(); + if (!strcmp(se->EntityName(), + PrettyTmpName(entityKeyword))) + return se; + } + return ENTITY_NULL; } -//////////////////////////////////////////////////////// -// L. Broglia : new - -int InstMgr::GetIndex(const char* entityKeyword, int starting_index) -{ - // L. Broglia - // When the entity is founded, put return index - - MgrNode *node; - STEPentity *se; - - int count = InstanceCount(); - const char* tmpname; - - for (int j = starting_index; jGetSTEPentity(); - tmpname = se->EntityName(); - - if ( !strcmp(tmpname, entityKeyword) ) - { - return j; - } - } - return 0; -} - - /////////////////////////////////////////////////////////////////////////////// diff --git a/source/geometry/solids/STEP/src/match_ors.cc b/source/geometry/solids/STEP/src/match_ors.cc new file mode 100644 index 0000000000..5d56eb8d99 --- /dev/null +++ b/source/geometry/solids/STEP/src/match_ors.cc @@ -0,0 +1,163 @@ +/***************************************************************************** + * match-ors.cc * + * * + * Description: Contains the matchORs() functions for the EntList descen- * + * dants. The matchORs() of AndOrList and AndList recursively * + * loop through their non-SIMPLE EntList children to determine * + * how well their OR descendants match an EntNode. OrList's * + * matchORs() function checks its children one at a time for * + * both complete and incomplete matches of EntNode and stores * + * the resulting information. * + * * + * Created by: David Rosenfeld * + * Date: 10/17/96 * + *****************************************************************************/ + +#include "complexSupport.h" + +MatchType AndOrList::matchORs( EntNode *ents ) + /* + * Loops through descendants of this, invoking their matchOR functions. + * Returns the status of how well this's OR descendants match the nodes of + * ents. We only check our children whose viable values = UNKNOWN. This + * signifies that when we checked them previously with matchNonORs(), we + * couldn't determine their match value. And that happens when there are + * OR descendants we didn't test. Thus, UNKNOWN tells us that this child + * is an OR, or has an OR somewhere beneath it which we must process now. + */ +{ + EntList *child = childList->firstWanted( UNKNOWN ); + + while ( child != NULL ) { + if ( ((MultList *)child)->matchORs( ents ) == UNSATISFIED ) { + // Unmark whatever we may have marked. (E.g., there may have + // been an AND beneath and it started marking and then found one + // it couldn't match.) + child->unmarkAll( ents ); + } + child = child->nextWanted( UNKNOWN ); + } + // NOTE - We went through entire loop above even if we found a MATCHALL + // sometime in the middle. After finding a bug, I realized we couldn't + // stop in the middle. So long as there are more UNKNOWN children, one + // of those children may become UNSAT later and we'll have to unmark all + // its descendants. If so, some of the marks we have now may disappear. + setViableVal( ents ); + return viable; +} + +MatchType AndList::matchORs( EntNode *ents ) + /* + * Loops through the descendants of this with viable val = UNKNOWN, invo- + * king their matchOR functions. Returns the status of how well this's OR + * descendants match the nodes of ents. We only take UNKNOWN's because + * they will lead us to OR's, as explained in AndOrList::matchORs(). + */ +{ + EntList *child = childList->firstWanted( UNKNOWN ); + + while ( child != NULL ) { + if ( ((MultList *)child)->matchORs( ents ) == UNSATISFIED ) { + viable = UNSATISFIED; + return UNSATISFIED; + // This means the whole AndList has failed, by definition. + } + child = child->nextWanted( UNKNOWN ); + // Note - we loop through all even if one of our children returned + // MATCHALL. Since we're an AND, we must look through all branches - + // to search for any other conditions we can't meet. If one of our + // children did MATCHALL, its viable val will be set to MATCHALL and + // we'll catch it in setViableVal() called below. + } + setViableVal( ents ); + return viable; +} + +MatchType OrList::matchORs( EntNode *ents ) + /* + * Checks the branches of an OrList to search for a match to the nodes of + * ents. This function searches this's children and marks all the viable + * paths, or paths which mark off at least some of the remaining nodes of + * ents. It then selects the first one, marking it only with an ORMARK to + * retain the info that these were only conditionally marked. Also, if a + * MATCHALL solution was found, that is returned immediately. + */ +{ + int count; + EntList *child = childList; + MatchType retval; + + for ( count=0; countnext ) { + + // First call (recursively) matchNonORs() to check off all nodes that + // the descendants of this branch can definitely mark off: + if ( child->join != OR ) { + retval = child->matchNonORs( ents ); + } + + // Then try the OR's. At this point, any OR's that we get to (in + // recursively checking the descendants of child) will know that if + // it can mark new node(s), it's a viable option. + if ( child->viable == UNKNOWN ) { + // If viable = UNKNOWN, this child must either be an OR or a Mult + // with an OR underneath. Only ORs are still indeterminate after + // running matchNonORs() above. (We also exclude the case of an + // AND child who may have OR desc's, but already determined that + // it can't satisfy one of its paths and so returned UNSAT.) + retval = ((MultList *)child)->matchORs( ents ); + } + + // Now register the result: + if ( retval >= MATCHSOME ) { + // Note: In the past I would return immediately if retval = + // MATCHALL, thinking our job was done. I changed it when we + // started dealing with combo-CLists (sub w/ >1 super). I realized + // that even if down here we got a MATCHALL, we may have to reject + // above, so we must keep searching. + if ( choice == -1 ) { + choice1 = choice = count; + } + choiceCount++; + if ( viable < retval ) { + viable = retval; + } + } else { + // At this point, retval must = SATISFIED or UNSAT. Neither + // result gives us a possible solution since neither marks any + // new nodes. He we keep track of the best retval we've gotten + // between the two remaining values. It's important to know if + // retval = SATISFIED. In case there is no better result, this + // Will cause us to tell our parent that we have at least one + // satisfactory path. Thus, if our parent is an AND, it'll know + // that this branch doesn't violate anything. + if ( viable < retval ) { + viable = retval; + } + } + + // Undo this choice before we try the next: + child->unmarkAll( ents ); + } + + // Accept the first viable solution, if there is one: + if ( viable >= MATCHSOME ) { + // If there are some MATCHSOME solutions, accept the first. accept- + // Choice() begins by accepting the child at "choice". But if this + // does not mark anything new, it loops until it finds a choice that + // does mark (if there is one). There's no point marking any earlier + // ones. There may be earlier children which are set to MATCHSOME + // because they *may* mark (since they match nodes which are only + // conditionally marked). But now we're looking for a child which + // *actually* marks under the current circumstances. + acceptChoice( ents ); + } + if ( viable == MATCHALL ) { + return getChild( choice1 )->viable; + // viable == MATCHALL because we found a MATCHALL sol'n along the way, + // but that wasn't necessarily the choice acceptChoice() took now. + // (See note above why we don't drop everything and just accept the + // MATCHALL.) + } else { + return viable; + } +} diff --git a/source/geometry/solids/STEP/src/mgrnode.cc b/source/geometry/solids/STEP/src/mgrnode.cc index dd8830203b..59a85ff895 100644 --- a/source/geometry/solids/STEP/src/mgrnode.cc +++ b/source/geometry/solids/STEP/src/mgrnode.cc @@ -1,18 +1,8 @@ - -// - - - -// -// $Id: mgrnode.cc,v 1.3 1999/12/15 18:04:21 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - /* * NIST STEP Editor Class Library * cleditor/mgrnode.cc -* May 1995 +* April 1997 * David Sauder * K. C. Morris @@ -20,7 +10,7 @@ * and is not subject to copyright. */ -/* */ +/* $Id: mgrnode.cc,v 1.4 2000/01/21 13:43:12 gcosmo Exp $ */ #include #include @@ -28,7 +18,8 @@ #include #include -#include +//#include +#include #include "G4ios.hh" @@ -52,7 +43,7 @@ void MgrNode::Remove() // DON'T DO THIS!! currState = noStateSE; } - // searches current List for fileId + // searches current list for fileId MgrNode *MgrNode::StateFindFileId(int fileId) { // if(debug_level >= PrintFunctionTrace) @@ -131,7 +122,7 @@ GenericNode *MgrNode::PrevDisplay() // STATE LIST OPERATIONS -// deletes from previous cmd List & puts on cmd List cmdList +// deletes from previous cmd list & puts on cmd list cmdList int MgrNode::ChangeList(DisplayNodeList *cmdList) { if(!di) @@ -139,7 +130,7 @@ int MgrNode::ChangeList(DisplayNodeList *cmdList) return di->ChangeList(cmdList); } -// deletes from previous cmd List & puts on cmd List cmdList +// deletes from previous cmd list & puts on cmd list cmdList int MgrNode::ChangeList(MgrNodeList *cmdList) { Remove(); @@ -167,9 +158,9 @@ int MgrNode::ChangeState(stateEnum s) return 1; } -void MgrNode::Init(STEPentity *s, +void MgrNode::Init(SCLP23(Application_instance) *s, stateEnum listState, - MgrNodeList *List) + MgrNodeList *list) { // if(debug_level >= PrintFunctionTrace) // G4cout << "MgrNode::Init()\n"; @@ -177,9 +168,9 @@ void MgrNode::Init(STEPentity *s, arrayIndex = -1; di = 0; currState = listState; - if(List) + if(list) { - List->Append(this); + list->Append(this); } } @@ -193,7 +184,7 @@ MgrNode::MgrNode() Init(0, noStateSE, 0); } -MgrNode::MgrNode(STEPentity *StepEntPtr) +MgrNode::MgrNode(SCLP23(Application_instance) *StepEntPtr) { // if(debug_level >= PrintFunctionTrace) // G4cout << "MgrNode::MgrNode()\n"; @@ -206,7 +197,7 @@ MgrNode::MgrNode(STEPentity *StepEntPtr) // completeSE - if reading valid exchange file // incompleteSE or completeSE - if reading working session file // newSE - if instance is created by user using editor (probe) -MgrNode::MgrNode(STEPentity *StepEntPtr, stateEnum listState) +MgrNode::MgrNode(SCLP23(Application_instance) *StepEntPtr, stateEnum listState) { // if(debug_level >= PrintFunctionTrace) // G4cout << "MgrNode::MgrNode()\n"; @@ -218,12 +209,12 @@ MgrNode::MgrNode(STEPentity *StepEntPtr, stateEnum listState) // completeSE - if reading valid exchange file // incompleteSE or completeSE - if reading working session file // newSE - if instance is created by user using editor (probe) -MgrNode::MgrNode(STEPentity *StepEntPtr, stateEnum listState, MgrNodeList *List) +MgrNode::MgrNode(SCLP23(Application_instance) *StepEntPtr, stateEnum listState, MgrNodeList *list) { // if(debug_level >= PrintFunctionTrace) // G4cout << "MgrNode::MgrNode()\n"; // if(debug_level >= PrintValues) // G4cout << "MgrNode::this : '" << this << "'\n"; - Init(StepEntPtr, listState, List); + Init(StepEntPtr, listState, list); } diff --git a/source/geometry/solids/STEP/src/mgrnodearray.cc b/source/geometry/solids/STEP/src/mgrnodearray.cc index f00788246c..6726f599f1 100644 --- a/source/geometry/solids/STEP/src/mgrnodearray.cc +++ b/source/geometry/solids/STEP/src/mgrnodearray.cc @@ -1,18 +1,8 @@ - -// - - - -// -// $Id: mgrnodearray.cc,v 1.2 1999/05/21 20:21:10 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - /* * NIST STEP Editor Class Library * cleditor/mgrnodearray.cc -* May 1995 +* April 1997 * David Sauder * K. C. Morris @@ -20,7 +10,7 @@ * and is not subject to copyright. */ -/* */ +/* $Id: mgrnodearray.cc,v 1.3 2000/01/21 13:43:12 gcosmo Exp $ */ /* * MgrNodeArray - dynamic array object of MgrNodes. @@ -31,8 +21,8 @@ /////////////////////////////////////////////////////////////////////////////// // debug_level >= 2 => tells when a command is chosen // debug_level >= 3 => prints values within functions: -// e.g. 1) entity type List when read -// 2) entity instance List when read +// e.g. 1) entity type list when read +// 2) entity instance list when read /////////////////////////////////////////////////////////////////////////////// static int debug_level = 1; // if debug_level is greater than this number then @@ -43,7 +33,8 @@ static int PrintFunctionTrace = 2; //static int PrintValues = 3; #include -#include +//#include +#include #include // to get bcopy() - ANSI @@ -52,6 +43,18 @@ static int PrintFunctionTrace = 2; // class MgrNodeArray member functions ////////////////////////////////////////////////////////////////////////////// +//#ifdef __OSTORE__ +//MgrNodeArray::MgrNodeArray(os_database *db, int defaultSize) +// : GenNodeArray(db, defaultSize) +//{ +//} +//#endif + +MgrNodeArray::MgrNodeArray(int defaultSize) + : GenNodeArray(defaultSize) +{ +} + void MgrNodeArray::AssignIndexAddress(int index) { // if(debug_level >= PrintFunctionTrace) @@ -124,7 +127,7 @@ int MgrNodeArray::MgrNodeIndex(int fileId) G4cout << "MgrNodeArray::MgrNodeIndex()\n"; int i; for (i = 0; i < _count; ++i) { - if( ((MgrNode *)_buf[i])->GetSTEPentity()->GetFileId() == fileId) { + if( ((MgrNode *)_buf[i])->GetApplication_instance()->GetFileId() == fileId) { return i; } } @@ -135,12 +138,24 @@ int MgrNodeArray::MgrNodeIndex(int fileId) // class MgrNodeArraySorted member functions ////////////////////////////////////////////////////////////////////////////// +//#ifdef __OSTORE__ +//MgrNodeArraySorted::MgrNodeArraySorted(os_database *db, int defaultSize) +// : GenNodeArray(db, defaultSize) +//{ +//} +//#endif + +MgrNodeArraySorted::MgrNodeArraySorted(int defaultSize) + : GenNodeArray(defaultSize) +{ +} + int MgrNodeArraySorted::Insert (GenericNode* gn) { // if(debug_level >= PrintFunctionTrace) // G4cout << "MgrNodeArraySorted::Insert()\n"; // since gn is really a MgrNode - int fileId = ((MgrNode *)gn)->GetSTEPentity()->GetFileId(); + int fileId = ((MgrNode *)gn)->GetApplication_instance()->GetFileId(); int index = FindInsertPosition(fileId); @@ -196,7 +211,7 @@ int MgrNodeArraySorted::FindInsertPosition(const int fileId) int curFileId; for (i = _count-1; i >= 0; --i) { - curFileId = ((MgrNode *)_buf[i])->GetSTEPentity()->GetFileId(); + curFileId = ((MgrNode *)_buf[i])->GetApplication_instance()->GetFileId(); if (curFileId < fileId /*|| curFileId == fileId*/) { return i + 1; @@ -222,7 +237,7 @@ int MgrNodeArraySorted::MgrNodeIndex(int fileId) { while(!found && (low <= high)) { mid = (low + high) / 2; - curFileId = ((MgrNode *)_buf[mid])->GetSTEPentity()->GetFileId(); + curFileId = ((MgrNode *)_buf[mid])->GetApplication_instance()->GetFileId(); if(curFileId == fileId) { found = 1; diff --git a/source/geometry/solids/STEP/src/mgrnodelist.cc b/source/geometry/solids/STEP/src/mgrnodelist.cc index e1e5193e6d..e03d6b8e3a 100644 --- a/source/geometry/solids/STEP/src/mgrnodelist.cc +++ b/source/geometry/solids/STEP/src/mgrnodelist.cc @@ -1,18 +1,8 @@ - -// - - - -// -// $Id: mgrnodelist.cc,v 1.2 1999/05/21 20:21:10 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - /* * NIST STEP Editor Class Library * cleditor/mgrnodelist.cc -* May 1995 +* April 1997 * David Sauder * K. C. Morris @@ -20,7 +10,7 @@ * and is not subject to copyright. */ -/* */ +/* $Id: mgrnodelist.cc,v 1.3 2000/01/21 13:43:12 gcosmo Exp $ */ #include #include @@ -44,32 +34,32 @@ void MgrNodeList::Remove(GenericNode *node) // DON'T DO THIS ((MgrNode *)node)->currState = noStateSE; } - // deletes node from its previous List & appends... - // actually it puts it at the front of the List. + // deletes node from its previous list & appends... + // actually it puts it at the front of the list. void MgrNodeList::Append(GenericNode *node) { InsertBefore(node, head); } - // deletes newNode from its previous List & inserts after + // deletes newNode from its previous list & inserts after // existNode void MgrNodeList::InsertAfter(GenericNode *newNode, GenericNode *existNode) { - if(newNode->next != 0){ // remove the node from its previous List + if(newNode->next != 0){ // remove the node from its previous list newNode->Remove(); } GenNodeList::InsertAfter(newNode, existNode); // DON'T DO THIS ((MgrNode *)newNode)->currState = listType; } - // deletes newNode from its previous List & inserts before + // deletes newNode from its previous list & inserts before // existNode void MgrNodeList::InsertBefore(GenericNode *newNode, GenericNode *existNode) { if(newNode->next != 0){ // remove the node from its previous - newNode->Remove(); // state List + newNode->Remove(); // state list } GenNodeList::InsertBefore(newNode, existNode); // DON'T DO THIS!! ((MgrNode *)newNode)->currState = listType; diff --git a/source/geometry/solids/STEP/src/multlist.cc b/source/geometry/solids/STEP/src/multlist.cc new file mode 100644 index 0000000000..36a46e45c0 --- /dev/null +++ b/source/geometry/solids/STEP/src/multlist.cc @@ -0,0 +1,261 @@ +/***************************************************************************** + * multlist.cc * + * * + * Description: MultList is a class type derived from EntList which is the * + * parent class to the compound list types, AND, OR and ANDOR. * + * It supports the concepts and functionality which is shared * + * by all compound types, especially And- and AndOr-List's. * + * This file contains many of the MultList and JoinList member * + * functions. * + * * + * Created by: David Rosenfeld * + * Date: 9/18/96 * + *****************************************************************************/ + +#include "complexSupport.h" + +MultList::~MultList() + /* + * Deletes the childList of this, before this is deleted. + */ +{ + EntList *child = childList, *cnext; + + while ( child ) { + cnext = child->next; + delete child; + child = cnext; + } +} + +void MultList::setLevel( int l ) + /* + * Sets this's level, and tells all its children to set their level to our + * level +1. + */ +{ + EntList *child = childList; + + level = l; + for ( ; child != NULL; child = child->next ) { + child->setLevel( l+1 ); + } +} + +int MultList::contains( char *nm ) + /* + * Check if one of this's descendants matches nm. + */ +{ + EntList *child = childList; + + while ( child ) { + if ( child->contains( nm ) ) return TRUE; + child = child->next; + } + return FALSE; +} + +int MultList::hit( char *nm ) + /* + * Check if one of our descendants matches nm. + */ +{ + EntList *child = childList; + + while ( child ) { + if ( child->viable > UNSATISFIED && child->hit( nm ) ) { + // For most child->join types ruling out UNSATs just saves us + // trouble - we know nm won't be hit since child didn't hit any- + // thing. If child->join = AND, we must skip child. One of its + // children may "hit" nm, but it wouldn't be valid because overall + // child is an UNSAT. + return TRUE; + } + child = child->next; + } + return FALSE; +} + +EntList *MultList::getChild( int num ) + /* + * Returns a pointer to the num'th child of MultList. + */ +{ + EntList *child = childList; + int j; + + if ( num < 0 || num >= numchildren ) { + // Check for error situations (shouldn't normally occur): + return NULL; + } + for ( j=0; jnext ) + ; + return child; +} + +void MultList::appendList( EntList *ent ) + /* + * Appends a new entry into this's childList. The siblings of ent (ent-> + * next ...) are automatically also appended. + */ +{ + EntList *eprev; + + if ( numchildren == 0 ) { + childList = ent; + } else { + eprev = getLast(); + eprev->next = ent; + ent->prev = eprev; + } + numchildren += ent->siblings(); +} + +EntList *MultList::copyList( EntList *ent ) + /* + * Makes a copy of ent (and its children if it's a MultList) and appends it + * to the end of our list. + */ +{ + EntList *newlist, *child; + + switch ( ent->join ) { + case SIMPLE: + newlist = new SimpleList( ((SimpleList *)ent)->Name() ); + break; + case AND: + newlist = new AndList; + break; + case OR: + newlist = new OrList; + break; + case ANDOR: + newlist = new AndOrList; + break; + }; + appendList( newlist ); + if ( ent->multiple() ) { + // For the multlists, we must recurse for all their children: + child = ((MultList *)ent)->childList; + while ( child ) { + ((MultList *)newlist)->copyList( child ); + child = child->next; + } + } + return newlist; +} + +void MultList::unmarkAll( EntNode *ents ) + /* + * Unmarks all nodes of ents marked by any of the descendants of this. + * This function is invoked by AndList and AndOrList. It is redefined for + * OrList. + */ +{ + EntList *child = childList; + + while ( child != NULL ) { + child->unmarkAll( ents ); + child = child->next; + } +} + +void MultList::reset() + /* + * Resets this to default values. Iterates through child list, calling + * each child's reset function. + */ +{ + EntList *child; + + viable = UNKNOWN; + for ( child = childList; child; child = child->next ) { + child->reset(); + } +} + +void JoinList::setViableVal( EntNode *ents ) + /* + * Sets this's viable value based on the value of its children. This is + * called at the end of matchNonOR() and matchOR() to determine the result + * of the matching. Since matchNonOR() is always called first and it + * skips OR children, some of the children may still be UNKNOWN. In that + * case, we still don't know the overall result and set viable to UNKNOWN. + * As an important note, for an AndList the match fns themselves check for + * children which are UNSATISFIED and return UNSAT if found, we don't + * worry about coming across them down here. + */ +{ + EntList *child = childList; + + viable = UNKNOWN; + // Start viable at UNKNOWN. This is default val and the lowest enum val. + + while ( child != NULL ) { + if ( child->viable == UNKNOWN ) { + viable = UNKNOWN; + return; + } + if ( child->viable > viable ) { + viable = child->viable; + } + child = child->next; + } + if ( viable == MATCHALL && !ents->allMarked() ) { + // There are some situations where this may happen - a child claims + // MATCHALL while that is not the case. If child #2 was checked and + // later child #1 was unmarked (because we tried its OR's and ran into + // problems), child #2's MATCHALL may no longer be true. + viable = MATCHSOME; + } +} + +int JoinList::acceptChoice( EntNode *ents ) + /* + * Accept the path we're a part of: Mark all nodes of ents we can. Mark + * value will = mark (either MARK or ORMARK). Return TRUE if we mark any- + * thing; FALSE otherwise. + */ +{ + EntList *child; + int result = FALSE; + + for ( child = childList; child != NULL; child = child->next ) { + if ( child->viable >= MATCHSOME ) { + // Only mark children which have new nodes they can mark. (This + // condition is important. Sometimes, there will be children who + // can mark but whose vaiable val = SATISFIED. This will be the + // case if there's another EntList with higher priority which can + // also mark this node. (For example, if an AND has an OR and a + // SIMPLE child, the SIMPLE wins so that we'll have fewer OR + // choices, and so that a node we can mark with an unconditional + // EntList we won't mark with a conditional which may be undone + // later.) Thus, our test here is - is this child the one who + // MATCHSOME'd when we originally went through the hierarchy.) + result = child->acceptChoice( ents ) || result; + // (NOTE - must run acceptChoice() first in above line. If result + // were TRUE and we ||'ed it with acceptChoice(), aC() would never + // be run.) + } + } + return result; +} + +int MultList::prevKnown( EntList *desc ) + /* + * Specialized function to test that none of the children prior to desc + * (a pointer to one of the EntLists of childList) have viable = UNKNOWN. + * Used in MatchNonORs() (see). + */ +{ + EntList *child = childList; + + while ( child != NULL && child != desc ) { + if ( child->viable == UNKNOWN ) { + return FALSE; + } + child = child->next; + } + return TRUE; +} diff --git a/source/geometry/solids/STEP/src/non_ors.cc b/source/geometry/solids/STEP/src/non_ors.cc new file mode 100644 index 0000000000..27ca042893 --- /dev/null +++ b/source/geometry/solids/STEP/src/non_ors.cc @@ -0,0 +1,146 @@ +/***************************************************************************** + * non-ors.cc * + * * + * Description: Contains the matchNonORs() functions for the EntList descen- * + * dants. matchNonORs() functions loop through the EntList * + * children of this whose JoinType != OR (and check a Simple- * + * List itself) to determine how well they match an EntNode. * + * * + * Created by: David Rosenfeld * + * Date: 10/17/96 * + *****************************************************************************/ + +#include "complexSupport.h" + +MatchType SimpleList::matchNonORs( EntNode *ents ) + /* + * Checks if we match the nodes of ents. If only one unmarked is left + * and we match it, return MATCHALL. More likely, we'll return one of the + * other return values. (See descript of MatchType values in complex- + * Support.h.) + */ +{ + EntNode *eptr = ents; + int comp; + + while ( eptr != NULL ) { + if ( (comp = strcmp( name, eptr->name )) == 0 ) { + if ( ! eptr->marked( MARK ) ) { + // NOTE - this cond also returns TRUE if eptr did have an OR- + // MARK. We don't want to remark now (since we're also trying + // out OR choices -- we know this because no OR's are done + // until after all the non-OR's). But, we do want to return + // MATCHSOME, as below. Since The prev OR which marked this + // may one time later try another path, we want to record that + // our OR can also mark it. So we return MATCHSOME saying + // this is a viable option we may one time want to try. + if ( eptr->mark == NOMARK ) { + eptr->setmark(); + I_marked = MARK; + // Remember that we're the one who marked this. (Nec. in + // case we have to unmark later to try out another OR + // branch.) + if ( ents->allMarked() ) { + // If this was the only unmarked left, + viable = MATCHALL; + return MATCHALL; + } + } + viable = MATCHSOME; + return MATCHSOME; + } + viable = SATISFIED; + return SATISFIED; + // Couldn't mark any more, but at least we're not placing a re- + // quirement ents couldn't meet. + } + if ( comp < 0 ) { + // We're beyond name in the ents list. No more checking to do. + break; + } + eptr = eptr->next; + } + + // At this point, we went through the list without finding a match. Result + // = UNSATISFIED - no match. + viable = UNSATISFIED; + return UNSATISFIED; +} + +MatchType AndOrList::matchNonORs( EntNode *ents ) + /* + * Loop through the children of this matching as many of the nodes of ents + * as we can. We skip all OrList descendants. Those are processed later + * only after all the non-conditional descendants, so that when we start + * processing them we'll be able to tell which OR choices are viable, and + * which are unnec. + */ +{ + EntList *child = childList->firstNot( OR ); + MatchType retval; + + while ( child != NULL ) { + if ( (retval = child->matchNonORs( ents )) == MATCHALL ) { + if ( prevKnown( child ) ) { + viable = MATCHALL; + return MATCHALL; + // We found a good solution. Nothing else to do. (Some higher + // AND may have some other req's ents can't meet, but that's + // not our problem. If that happens, AND will return UNSATIS- + // FIED, or an even higher OR will undo all and will try + // another path.) + // The prevKnown() fn is used to check that we haven't come + // across any UNKNOWNs yet. If we have, we can't be sure the + // MATCHALL is valid. An illustration: One of our previous + // children was an AND who had a SIMPLE child and an OR child. + // The SIMPLE child matched one EntNode. The OR child is + // UNKNOWN, since we haven't matchOR()'ed yet. Possibly, our + // retval of MATCHALL is in part due to the SIMPLE child of + // the AND. But if the OR child of the AND returns UNSAT when + // we run matchOR(), we'll unmark the SIMPLE child too. Thus, + // we can only be sure of a MATCHALL if nothing is UNKNOWN. + // (Note that future UNKNOWN children don't bother us (in fact + // all future children are UNKNOWN by default since they have + // not been touched). This is because we're an ANDOR and can + // skip them altogether. But previous children we have visi- + // ted already, and we can't ignore, as above. Compare to + // AndOrList::matchORs(), where since all children had been + // visited already in matchNonORs(), we were not able to stop + // in process as here at all.) + } + } else if ( retval == UNSATISFIED ) { + // Unmark whatever we may have marked. (E.g., there may have + // been an AND beneath and it started marking and then found one + // it couldn't match.) + child->unmarkAll( ents ); + } + child = child->nextNot( OR ); + } + setViableVal( ents ); + return viable; +} + +MatchType AndList::matchNonORs( EntNode *ents ) + /* + * Checks if the AndList contains the set of nodes in ents. Skip OrList + * descendants. + */ +{ + EntList *child = childList->firstNot( OR ); + + while ( child != NULL ) { + if ( child->matchNonORs( ents ) == UNSATISFIED ) { + viable = UNSATISFIED; + return UNSATISFIED; + // This means the whole AndList has failed, by definition. + } + child = child->nextNot( OR ); + // Note - we loop through all even if one of our children returned + // MATCHALL. Since we're an AND, we must look through all branches - + // to search for any other conditions we can't meet. If one of our + // children did MATCHALL, its viable val will be set to MATCHALL and + // we'll catch it in setViableVal() called below. + } + setViableVal( ents ); + return viable; +} diff --git a/source/geometry/solids/STEP/src/orlist.cc b/source/geometry/solids/STEP/src/orlist.cc new file mode 100644 index 0000000000..fe6dd9b6b9 --- /dev/null +++ b/source/geometry/solids/STEP/src/orlist.cc @@ -0,0 +1,87 @@ +/***************************************************************************** + * orlist.cc * + * * + * Description: OrList is a specialized class type which supports OR lists. * + * This file contains the OrList member functions, which pro- * + * vide the capability to undo previous choices, and select new * + * ones. * + * * + * Created by: David Rosenfeld * + * Date: 9/18/96 * + *****************************************************************************/ + +#include "complexSupport.h" + +int OrList::hit( char *nm ) + /* + * Check if we matched nm. We have two possibilities here: If we have a + * choice selected, we only check the selected choice. Say we're an OR + * between SimpleLists C and D, and nm = C. If choice = D, we can't check + * C. This is because we're already using this OR to match D, and it can + * not match C. If however, this OR doesn't have any choice selected (it + * = SATISFIED), we can check all our children. Since we don't need to + * have a particular choice selected (D), so long as we could be used to + * match C, we potentially have a match. (This all makes sense in the + * context of a sub w/ >1 super, in which case we build a combo-CList and + * may need to check if all sub-CLists matched the multi-sub, C.) + */ +{ + EntList *child = getChild( choice ); + + if ( child ) { + // I.e., if we have a choice selected, check it only. + return ( child->hit( nm ) ); + } else { + child = childList; + while ( child ) { + if ( child->viable > UNSATISFIED && child->hit( nm ) ) { + // See MultList::hit() on why we must skip UNSATs. + return TRUE; + } + child = child->next; + } + } + return FALSE; +} + +void OrList::unmarkAll( EntNode *ents ) + /* + * Unmarks all the nodes of ents marked by the descendants of this. + */ +{ + EntList *child; + int j; + + if ( (child = getChild( choice )) != NULL ) { + // choice = the last selected path which we'll now undo. + child->unmarkAll( ents ); + } +} + +int OrList::acceptChoice( EntNode *ents ) + /* + * Accepts the first choice of our childList which marks any unmarked + * nodes. If none of our current choices mark anything, choice is set to + * LISTEND. If choice was set to LISTEND before calling aC(), we reset + * choice to choice1, and search again. + */ +{ + EntList *child; + + if ( choice == LISTEND ) { + choice = choice1; + } + child = getChild( choice ); + while ( child ) { + if ( child->viable >= MATCHSOME && child->acceptChoice( ents ) ) { + // acceptChoice() returns TRUE if we marked something. + return TRUE; + } + child = child->next; + choice++; + } + // If we got here, we must have gotten to the end of the childList without + // finding a choice which marks something. + choice = LISTEND; + return FALSE; +} diff --git a/source/geometry/solids/STEP/src/print.cc b/source/geometry/solids/STEP/src/print.cc new file mode 100644 index 0000000000..7ed174b641 --- /dev/null +++ b/source/geometry/solids/STEP/src/print.cc @@ -0,0 +1,113 @@ +/***************************************************************************** + * print.cc * + * * + * Description: Contains the "<<" functions for all the EntList types. * + * * + * Created by: David Rosenfeld * + * Date: 10/31/96 * + *****************************************************************************/ + +#include "complexSupport.h" + +// Local function prototypes: +static char *joinText( JoinType, char * ); + +G4std::ostream & operator << ( G4std::ostream &os, ComplexList &clist ) + /* + * Prints out a ComplexList, by iterating through its children. + */ +{ + os << "ComplexList - \"" << *(SimpleList *)clist.head->childList + << "\" supertype\n"; + // head->childList will call << for head's 1st child. We know by def + // that this is the supertype. + os << *clist.head; + return os; +} + +G4std::ostream & operator << ( G4std::ostream &os, EntList &list ) + /* + * Prints out an EntList. Calls appropriate function based on JoinType. + */ +{ + if ( list.join == SIMPLE ) { + os << *(SimpleList *)&list; + } else { + os << *(MultList *)&list; + } + return os; +} + +G4std::ostream & operator << ( G4std::ostream &os, SimpleList &slist ) + /* + * Prints out a SimpleList. + */ +{ + os << slist.name; + return os; +} + +G4std::ostream & operator << ( G4std::ostream &os, MultList &mlist ) + /* + * Prints out a MultList. + */ +{ + char jointype[7]; + int k, lastSimple; + // lastSimple - is the last child simple? If so, we need to print another + // line at the end. If not, the children of last child did already. + EntList *child = mlist.childList; + + os << joinText( mlist.join, jointype ) << G4endl; + for ( k=0; k<=mlist.level; k++ ) { + // Indent 1 more than our level (hence the "<=" ): + os << " "; + } + while ( child != NULL ) { + os << *child; + if ( child->next == NULL ) { + lastSimple = ( child->join == SIMPLE ); + break; + // We don't want to do the conditions below if we're done. + } + if ( child->join == SIMPLE ) { + // If so, we're just going to continue printing the next child + // (if exists) in same line. + os << " "; + } else { + // If another MultList is coming, it printed a new line for its + // childList (as we're doing). We must now start a new line at + // our indent level: + for ( k=0; k<=mlist.level; k++ ) { + os << " "; + } + } + child = child->next; + } + if ( lastSimple ) { + os << G4endl; + } + return os; +} + +static char *joinText( JoinType j, char *buf ) + /* + * Copies and returns the string equivalent of a JoinType. + */ +{ + switch ( j ) { + case SIMPLE: + strcpy( buf, "SIMPLE" ); + return buf; + case AND: + strcpy( buf, "AND" ); + return buf; + case OR: + strcpy( buf, "OR" ); + return buf; + case ANDOR: + strcpy( buf, "ANDOR" ); + return buf; + }; + return NULL; +} diff --git a/source/geometry/solids/STEP/src/read_func.cc b/source/geometry/solids/STEP/src/read_func.cc index be61a70aa3..7c858bd915 100644 --- a/source/geometry/solids/STEP/src/read_func.cc +++ b/source/geometry/solids/STEP/src/read_func.cc @@ -1,13 +1,3 @@ - - -// - - - -// -// $Id: read_func.cc,v 1.3 1999/12/15 14:50:19 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// #ifdef __O3DB__ #include #endif @@ -15,8 +5,12 @@ #include #include #include +#include +#include -// Print Error information for debugging purposes +const int RealNumPrecision = REAL_NUM_PRECISION; + +// print Error information for debugging purposes void PrintErrorState(ErrorDescriptor &err) { @@ -45,7 +39,7 @@ PrintErrorState(ErrorDescriptor &err) G4cout << err.DetailMsg() << "\n"; } -// Print G4std::istream error information for debugging purposes +// print G4std::istream error information for debugging purposes void IStreamState(G4std::istream &in) { if( in.good()) @@ -71,7 +65,7 @@ void IStreamState(G4std::istream &in) // * If there is an error then the ErrorDescriptor err is set accordingly with // a severity level and error message (no error MESSAGE is set for severity // incomplete). -// * tokenList contains characters that Terminate reading the value. +// * tokenList contains characters that terminate reading the value. // * If tokenList is not zero then the G4std::istream will be read until a character // is found matching a character in tokenlist. All values read up to the // terminating character (delimiter) must be valid or err will be set with an @@ -84,10 +78,10 @@ void IStreamState(G4std::istream &in) /////////////////////////////////////////////////////////////////////////////// int -ReadInteger(SdaiInteger &val, G4std::istream &in, ErrorDescriptor *err, +ReadInteger(SCLP23(Integer) &val, G4std::istream &in, ErrorDescriptor *err, char *tokenList) { - SdaiInteger i = 0; + SCLP23(Integer) i = 0; in >> G4std::ws; in >> i; @@ -109,7 +103,7 @@ ReadInteger(SdaiInteger &val, G4std::istream &in, ErrorDescriptor *err, /////////////////////////////////////////////////////////////////////////////// int -ReadInteger(SdaiInteger &val, const char *s, ErrorDescriptor *err, +ReadInteger(SCLP23(Integer) &val, const char *s, ErrorDescriptor *err, char *tokenList) { G4std::istrstream in((char *)s); @@ -126,8 +120,8 @@ ReadInteger(SdaiInteger &val, const char *s, ErrorDescriptor *err, // SEVERITY_NULL if it is valid for the value to be missing. No error // 'message' will be associated with the value being missing so you won\'t // have to worry about undoing an error message. -// * tokenList contains characters that Terminate the expected value. -// * If tokenList is not zero then the value is expected to Terminate before +// * tokenList contains characters that terminate the expected value. +// * If tokenList is not zero then the value is expected to terminate before // a character found in tokenlist. All values read up to the // terminating character (delimiter) must be valid or err will be set with an // appropriate error message. White space between the value and the @@ -161,7 +155,7 @@ IntValidLevel (const char *attrValue, ErrorDescriptor *err, } else { - SdaiInteger val = 0; + SCLP23(Integer) val = 0; int valAssigned = ReadInteger(val, in, err, tokenList); if(!valAssigned && !optional) err->GreaterSeverity(SEVERITY_INCOMPLETE); @@ -169,6 +163,103 @@ IntValidLevel (const char *attrValue, ErrorDescriptor *err, return err->severity(); } +char * +WriteReal(SCLP23(Real) val, SCLstring &s) +{ + + char rbuf[64]; + +// out << form("%.*G", (int) Real_Num_Precision,tmp); + // replace the above line with this code so that writing the '.' is + // guaranteed for reals. If you use e or E then you get many + // unnecessary trailing zeros. g and G truncates all trailing zeros + // to save space but when no non-zero precision exists it also + // truncates the decimal. The decimal is required by Part 21. + // Also use G instead of g since G writes uppercase E (E instead of e + // is also required by Part 21) when scientific notation is used - DAS + + sprintf(rbuf, "%.*G", (int) RealNumPrecision,val); + if(!strchr(rbuf, '.')) + { + if(strchr(rbuf, 'E') || strchr(rbuf, 'e')) + { + char *expon = strchr(rbuf, 'E'); + + if( !expon) + { + expon = strchr(rbuf, 'e'); + } + *expon = '\0'; + s = rbuf; + s.Append('.'); + s.Append('E'); + expon++; + s.Append(expon); + } + else + { + int rindex = strlen(rbuf); + rbuf[rindex] = '.'; + rbuf[rindex+1] = '\0'; + s = rbuf; + } + } + else + s = rbuf; + return (char *)(s.chars()); +} + +void +WriteReal(SCLP23(Real) val, G4std::ostream &out) +{ + SCLstring s; + + out << WriteReal(val,s); +#if 0 + char rbuf[64]; + +// out << form("%.*G", (int) Real_Num_Precision,tmp); + // replace the above line with this code so that writing the '.' is + // guaranteed for reals. If you use e or E then you get many + // unnecessary trailing zeros. g and G truncates all trailing zeros + // to save space but when no non-zero precision exists it also + // truncates the decimal. The decimal is required by Part 21. + // Also use G instead of g since G writes uppercase E (E instead of e + // is also required by Part 21) when scientific notation is used - DAS + + sprintf(rbuf, "%.*G", (int) RealNumPrecision,val); + if(!strchr(rbuf, '.')) + { + if(strchr(rbuf, 'E') || strchr(rbuf, 'e')) + { + char *expon = strchr(rbuf, 'E'); + + if( !expon) + { + expon = strchr(rbuf, 'e'); + } + *expon = '\0'; + s = rbuf; + s.Append('.'); + s.Append('E'); + expon++; + s.Append(expon); + } + else + { + int rindex = strlen(rbuf); + rbuf[rindex] = '.'; + rbuf[rindex+1] = '\0'; + s = rbuf; + } + } + else + s = rbuf; + + out << (char *)(s.chars()); +#endif +} + /////////////////////////////////////////////////////////////////////////////// // ReadReal // * This function reads a real if possible @@ -178,7 +269,7 @@ IntValidLevel (const char *attrValue, ErrorDescriptor *err, // * If there is an error then the ErrorDescriptor err is set accordingly with // a severity level and error message (no error MESSAGE is set for severity // incomplete). -// * tokenList contains characters that Terminate reading the value. +// * tokenList contains characters that terminate reading the value. // * If tokenList is not zero then the G4std::istream will be read until a character // is found matching a character in tokenlist. All values read up to the // terminating character (delimiter) must be valid or err will be set with an @@ -187,14 +278,132 @@ IntValidLevel (const char *attrValue, ErrorDescriptor *err, // space between the value and the terminating character is not considered // to be invalid. If tokenList is null then the value must not be followed // by any characters other than white space (i.e. EOF must happen) + +// skip any leading whitespace characters +// read: optional sign, at least one decimal digit, required decimal point, +// zero or more decimal digits, optional letter e or E (but lower case e is +// an error), optional sign, at least one decimal digit if there is an E. + /////////////////////////////////////////////////////////////////////////////// int -ReadReal(SdaiReal &val, G4std::istream &in, ErrorDescriptor *err, +ReadReal(SCLP23(Real) &val, G4std::istream &in, ErrorDescriptor *err, char *tokenList) { - SdaiReal d = 0; - in >> G4std::ws; + SCLP23(Real) d = 0; + + // Read the real's value into a string so we can make sure it is properly + // formatted. e.g. a decimal point is present. If you use the stream to + // read the real, it won't complain if the decimal place is missing. + char buf[64]; + int i = 0; + char c; + ErrorDescriptor e; + + in >> G4std::ws; // skip white space + + // read optional sign + c = in.peek(); + if(c == '+' || c == '-') { in.get(buf[i++]); c = in.peek(); } + + // check for required initial decimal digit + if(!isdigit(c)) + { + e.severity(SEVERITY_WARNING); + e.DetailMsg("Real must have an initial digit.\n"); + } + // read one or more decimal digits + while(isdigit(c)) + { + in.get(buf[i++]); + c = in.peek(); + } + + // read Part 21 required decimal point + if(c == '.') + { + in.get(buf[i++]); + c = in.peek(); + } + else + { + // It may be the number they wanted but it is incompletely specified + // without a decimal and thus it is an error + e.GreaterSeverity(SEVERITY_WARNING); + e.AppendToDetailMsg("Reals are required to have a decimal point.\n"); + } + + // read optional decimal digits + while(isdigit(c)) + { + in.get(buf[i++]); + c = in.peek(); + } + + // try to read an optional E for scientific notation + if( (c == 'e') || (c == 'E') ) + { + if(c == 'e') + { + // this is incorrectly specified and thus is an error + e.GreaterSeverity(SEVERITY_WARNING); +// e.GreaterSeverity(SEVERITY_USERMSG); // not flagged as an error + e.AppendToDetailMsg( + "Reals using scientific notation must use upper case E.\n"); + } + in.get(buf[i++]); // read the E + c = in.peek(); + + // read optional sign + if(c == '+' || c == '-') + { in.get(buf[i++]); c = in.peek(); } + + // read required decimal digit (since it has an E) + if(!isdigit(c)) + { + e.GreaterSeverity(SEVERITY_WARNING); + e.AppendToDetailMsg( + "Real must have at least one digit following E for scientific notation.\n"); + } + // read one or more decimal digits + while(isdigit(c)) + { + in.get(buf[i++]); + c = in.peek(); + } + } + buf[i] = '\0'; + +/* + int success = 0; + success = sscanf(buf," %G", &d); +*/ + G4std::istrstream in2((char *)buf); + + // now that we have the real the stream will be able to salvage reading + // whatever kind of format was used to represent the real. + in2 >> d; +// G4cout << "buffer: " << buf << G4endl << "value: " << d << G4endl << G4endl; + + int valAssigned = 0; +// PrintErrorState(err); + +// if(success > 0) + if(!in2.fail()) + { + valAssigned = 1; + val = d; + err->GreaterSeverity(e.severity()); + err->AppendToDetailMsg(e.DetailMsg()); + } + else + val = S_REAL_NULL; + + Severity s = CheckRemainingInput(in, err, "Real", tokenList); + return valAssigned; + +/* old way - much easier but not thorough enough */ +/* in >> d; // IStreamState(in); @@ -209,6 +418,7 @@ ReadReal(SdaiReal &val, G4std::istream &in, ErrorDescriptor *err, } Severity s = CheckRemainingInput(in, err, "Real", tokenList); return valAssigned; +*/ } /////////////////////////////////////////////////////////////////////////////// @@ -216,7 +426,7 @@ ReadReal(SdaiReal &val, G4std::istream &in, ErrorDescriptor *err, /////////////////////////////////////////////////////////////////////////////// int -ReadReal(SdaiReal &val, const char *s, ErrorDescriptor *err, +ReadReal(SCLP23(Real) &val, const char *s, ErrorDescriptor *err, char *tokenList) { G4std::istrstream in((char *)s); @@ -233,8 +443,8 @@ ReadReal(SdaiReal &val, const char *s, ErrorDescriptor *err, // SEVERITY_NULL if it is valid for the value to be missing. No error // 'message' will be associated with the value being missing so you won\'t // have to worry about undoing an error message. -// * tokenList contains characters that Terminate the expected value. -// * If tokenList is not zero then the value is expected to Terminate before +// * tokenList contains characters that terminate the expected value. +// * If tokenList is not zero then the value is expected to terminate before // a character found in tokenlist. All values read up to the // terminating character (delimiter) must be valid or err will be set with an // appropriate error message. White space between the value and the @@ -268,7 +478,7 @@ RealValidLevel (const char *attrValue, ErrorDescriptor *err, } else { - SdaiReal val = 0; + SCLP23(Real) val = 0; int valAssigned = ReadReal(val, in, err, tokenList); if(!valAssigned && !optional) err->GreaterSeverity(SEVERITY_INCOMPLETE); @@ -285,7 +495,7 @@ RealValidLevel (const char *attrValue, ErrorDescriptor *err, // * If there is an error then the ErrorDescriptor err is set accordingly with // a severity level and error message (no error MESSAGE is set for severity // incomplete). -// * tokenList contains characters that Terminate reading the value. +// * tokenList contains characters that terminate reading the value. // * If tokenList is not zero then the G4std::istream will be read until a character // is found matching a character in tokenlist. All values read up to the // terminating character (delimiter) must be valid or err will be set with an @@ -297,10 +507,10 @@ RealValidLevel (const char *attrValue, ErrorDescriptor *err, /////////////////////////////////////////////////////////////////////////////// int -ReadNumber(SdaiReal &val, G4std::istream &in, ErrorDescriptor *err, +ReadNumber(SCLP23(Real) &val, G4std::istream &in, ErrorDescriptor *err, char *tokenList) { - SdaiReal d = 0; + SCLP23(Real) d = 0; in >> G4std::ws; in >> d; @@ -321,7 +531,7 @@ ReadNumber(SdaiReal &val, G4std::istream &in, ErrorDescriptor *err, /////////////////////////////////////////////////////////////////////////////// int -ReadNumber(SdaiReal &val, const char *s, ErrorDescriptor *err, +ReadNumber(SCLP23(Real) &val, const char *s, ErrorDescriptor *err, char *tokenList) { G4std::istrstream in((char *)s); @@ -339,8 +549,8 @@ ReadNumber(SdaiReal &val, const char *s, ErrorDescriptor *err, // SEVERITY_NULL if it is valid for the value to be missing. No error // 'message' will be associated with the value being missing so you won\'t // have to worry about undoing an error message. -// * tokenList contains characters that Terminate the expected value. -// * If tokenList is not zero then the value is expected to Terminate before +// * tokenList contains characters that terminate the expected value. +// * If tokenList is not zero then the value is expected to terminate before // a character found in tokenlist. All values read up to the // terminating character (delimiter) must be valid or err will be set with an // appropriate error message. White space between the value and the @@ -374,7 +584,7 @@ NumberValidLevel (const char *attrValue, ErrorDescriptor *err, } else { - SdaiReal val = 0; + SCLP23(Real) val = 0; int valAssigned = ReadNumber(val, in, err, tokenList); if(!valAssigned && !optional) err->GreaterSeverity(SEVERITY_INCOMPLETE); @@ -560,7 +770,7 @@ FindStartOfInstance(G4std::istream& in, SCLstring& inst) { char c =0; ErrorDescriptor errs; - SdaiString tmp; + SCLP23(String) tmp; // SCLstring tmp; while (in.good ()) @@ -600,7 +810,7 @@ SkipInstance (G4std::istream& in, SCLstring& inst) { char c =0; ErrorDescriptor errs; - SdaiString tmp; + SCLP23(String) tmp; // SCLstring tmp; while (in.good ()) @@ -902,7 +1112,7 @@ ReadComment(G4std::istream& in, SCLstring &s) if(c == '/') // it is end of comment return s.chars(); // return comment as a string else // it is not end of comment - { // so Store the * and put back the other char + { // so store the * and put back the other char s.Append('*'); in.putback(c); commentLength++; @@ -960,7 +1170,7 @@ ReadPcd(G4std::istream& in) This function reads through token separators from an G4std::istream. It returns when a token separator is not the next thing on the G4std::istream. -The token separators are blanks, explicit Print control directives, +The token separators are blanks, explicit print control directives, and comments. Part 21 considers the blank to be the space character, but this function considers blanks to be the return value of isspace(c) @@ -996,7 +1206,7 @@ ReadTokenSeparator(G4std::istream& in, SCLstring *comments) } break; - case '\\': // try to read a Print control directive + case '\\': // try to read a print control directive ReadPcd(in); break; diff --git a/source/geometry/solids/STEP/src/s_HEADER_SCHEMA.cc b/source/geometry/solids/STEP/src/s_HEADER_SCHEMA.cc index 8125076948..81c60c4db5 100644 --- a/source/geometry/solids/STEP/src/s_HEADER_SCHEMA.cc +++ b/source/geometry/solids/STEP/src/s_HEADER_SCHEMA.cc @@ -1,20 +1,10 @@ - - -// - - - -// -// $Id: s_HEADER_SCHEMA.cc,v 1.2 1999/05/21 20:21:12 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// #ifndef S_HEADER_SCHEMA_CC #define S_HEADER_SCHEMA_CC /* * NIST STEP Editor Class Library * cleditor/s_HEADER_SCHEMA.cc -* May 1995 +* April 1997 * David Sauder * K. C. Morris @@ -26,9 +16,11 @@ // it since your modifications will be lost if fedex_plus is used to // regenerate it. -/* */ +/* $Id: s_HEADER_SCHEMA.cc,v 1.3 2000/01/21 13:43:13 gcosmo Exp $ */ #include +#include +#include /* ************** TYPES */ TypeDescriptor *HEADER_SCHEMAt_SCHEMA_NAME; @@ -82,7 +74,7 @@ s_N279_file_identification::oodb_reInit () } #endif -const SdaiString & +const SCLP23(String) & s_N279_file_identification::file_name() const { return _file_name; } @@ -90,7 +82,7 @@ void s_N279_file_identification::file_name (const char * x) { _file_name = x; } -const SdaiString & +const SCLP23(String) & s_N279_file_identification::date() const { return _date; } @@ -114,7 +106,7 @@ void s_N279_file_identification::organization (StringAggregate & x) { _organization = x; } -const SdaiString & +const SCLP23(String) & s_N279_file_identification::preprocessor_version() const { return _preprocessor_version; } @@ -122,7 +114,7 @@ void s_N279_file_identification::preprocessor_version (const char * x) { _preprocessor_version = x; } -const SdaiString & +const SCLP23(String) & s_N279_file_identification::originating_system() const { return _originating_system; } @@ -152,7 +144,7 @@ s_N279_imp_level::oodb_reInit () } #endif -const SdaiString & +const SCLP23(String) & s_N279_imp_level::implementation_level() const { return _implementation_level; } @@ -218,7 +210,7 @@ p21DIS_File_name::oodb_reInit () eDesc = HEADER_SCHEMAe_FILE_NAME; } #endif -const SdaiString & +const SCLP23(String) & p21DIS_File_name::name() const { return _name; } @@ -226,7 +218,7 @@ void p21DIS_File_name::name (const char * x) { _name = x; } -const SdaiString & +const SCLP23(String) & p21DIS_File_name::time_stamp() const { return _time_stamp; } @@ -251,7 +243,7 @@ p21DIS_File_name::organization (StringAggregate & x) { _organization = x; } /* -const SdaiString & +const SCLP23(String) & p21DIS_File_name::step_version() const { return _step_version; } @@ -260,7 +252,7 @@ p21DIS_File_name::step_version (const char * x) { _step_version = x; } */ -const SdaiString & +const SCLP23(String) & p21DIS_File_name::preprocessor_version() const { return _preprocessor_version; } @@ -268,7 +260,7 @@ void p21DIS_File_name::preprocessor_version (const char * x) { _preprocessor_version = x; } -const SdaiString & +const SCLP23(String) & p21DIS_File_name::originating_system() const { return _originating_system; } @@ -276,7 +268,7 @@ void p21DIS_File_name::originating_system (const char * x) { _originating_system = x; } -const SdaiString & +const SCLP23(String) & p21DIS_File_name::authorisation() const { return _authorisation; } @@ -319,7 +311,7 @@ void p21DIS_File_description::description (StringAggregate & x) { _description = x; } -const SdaiString & +const SCLP23(String) & p21DIS_File_description::implementation_level() const { return _implementation_level; } @@ -349,7 +341,7 @@ s_N279_classification::oodb_reInit () } #endif -const SdaiString & +const SCLP23(String) & s_N279_classification::security_classification() const { return _security_classification; } @@ -379,7 +371,7 @@ s_N279_file_description::oodb_reInit () } #endif -const SdaiString & +const SCLP23(String) & s_N279_file_description::description() const { return _description; } @@ -409,12 +401,12 @@ p21DIS_Maxsig::oodb_reInit () } #endif -SdaiInteger +SCLP23(Integer) p21DIS_Maxsig::maximum_significant_digit() - { return (SdaiInteger ) _maximum_significant_digit; } + { return (SCLP23(Integer) ) _maximum_significant_digit; } void -p21DIS_Maxsig::maximum_significant_digit (SdaiInteger x) +p21DIS_Maxsig::maximum_significant_digit (SCLP23(Integer) x) { _maximum_significant_digit = x; } EntityDescriptor *HEADER_SCHEMAe_CLASSIFICATION =0; AttrDescriptor *a_20SECURITY_CLASSIFICATION =0; @@ -439,7 +431,7 @@ p21DIS_Classification::oodb_reInit () } #endif -const SdaiString & +const SCLP23(String) & p21DIS_Classification::security_classification() const { return _security_classification; } diff --git a/source/geometry/solids/STEP/src/s_HEADER_SCHEMA_init.cc b/source/geometry/solids/STEP/src/s_HEADER_SCHEMA_init.cc index 72fe7413bb..a2c8f7458d 100644 --- a/source/geometry/solids/STEP/src/s_HEADER_SCHEMA_init.cc +++ b/source/geometry/solids/STEP/src/s_HEADER_SCHEMA_init.cc @@ -1,20 +1,10 @@ - - -// - - - -// -// $Id: s_HEADER_SCHEMA_init.cc,v 1.2 1999/05/21 20:21:12 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// #ifndef S_HEADER_SCHEMA_INIT_CC #define S_HEADER_SCHEMA_INIT_CC /* * NIST STEP Editor Class Library * cleditor/s_HEADER_SCHEMA.inline.cc -* May 1995 +* April 1997 * David Sauder * K. C. Morris @@ -26,9 +16,11 @@ // it since your modifications will be lost if fedex_plus is used to // regenerate it. -/* */ +/* $Id: s_HEADER_SCHEMA_init.cc,v 1.3 2000/01/21 13:43:14 gcosmo Exp $ */ #include +#include +#include #include void HeaderSchemaInit (Registry & reg) @@ -38,96 +30,163 @@ HeaderSchemaInit (Registry & reg) HEADER_SCHEMAt_SCHEMA_NAME = new TypeDescriptor ( "Schema_Name", // Name STRING_TYPE, // FundamentalType + z_HEADER_SCHEMA, // Originating Schema "STRING"); // Description - HEADER_SCHEMAe_FILE_IDENTIFICATION = new EntityDescriptor("File_Identification",z_HEADER_SCHEMA,F, (Creator) create_s_N279_file_identification); - HEADER_SCHEMAe_IMP_LEVEL = new EntityDescriptor("Imp_Level",z_HEADER_SCHEMA,F, (Creator) create_s_N279_imp_level); - HEADER_SCHEMAe_FILE_NAME = new EntityDescriptor("File_Name",z_HEADER_SCHEMA,F, (Creator) create_p21DIS_File_name); - HEADER_SCHEMAe_FILE_DESCRIPTION = new EntityDescriptor("File_Description",z_HEADER_SCHEMA,F, (Creator) create_p21DIS_File_description); - HEADER_SCHEMAe_S_CLASSIFICATION = new EntityDescriptor("S_Classification",z_HEADER_SCHEMA,F, (Creator) create_s_N279_classification); - HEADER_SCHEMAe_S_FILE_DESCRIPTION = new EntityDescriptor("S_File_Description",z_HEADER_SCHEMA,F, (Creator) create_s_N279_file_description); - HEADER_SCHEMAe_MAXSIG = new EntityDescriptor("Maxsig",z_HEADER_SCHEMA,F, (Creator) create_p21DIS_Maxsig); - HEADER_SCHEMAe_CLASSIFICATION = new EntityDescriptor("Classification",z_HEADER_SCHEMA,F, (Creator) create_p21DIS_Classification); - HEADER_SCHEMAe_FILE_SCHEMA = new EntityDescriptor("File_Schema",z_HEADER_SCHEMA,F, (Creator) create_p21DIS_File_schema); - HEADER_SCHEMAt_SCHEMA_NAME->ReferentType(t_STRING_TYPE); + HEADER_SCHEMAe_FILE_IDENTIFICATION = new EntityDescriptor("File_Identification",z_HEADER_SCHEMA, +SCLLOG(LFalse), SCLLOG(LFalse), +(Creator) create_s_N279_file_identification); + HEADER_SCHEMAe_IMP_LEVEL = new EntityDescriptor("Imp_Level",z_HEADER_SCHEMA, +SCLLOG(LFalse), SCLLOG(LFalse), +(Creator) create_s_N279_imp_level); + HEADER_SCHEMAe_FILE_NAME = new EntityDescriptor("File_Name",z_HEADER_SCHEMA, +SCLLOG(LFalse), SCLLOG(LFalse), +(Creator) create_p21DIS_File_name); + HEADER_SCHEMAe_FILE_DESCRIPTION = new EntityDescriptor("File_Description",z_HEADER_SCHEMA, +SCLLOG(LFalse), SCLLOG(LFalse), +(Creator) create_p21DIS_File_description); + HEADER_SCHEMAe_S_CLASSIFICATION = new EntityDescriptor("S_Classification",z_HEADER_SCHEMA, +SCLLOG(LFalse), SCLLOG(LFalse), +(Creator) create_s_N279_classification); + HEADER_SCHEMAe_S_FILE_DESCRIPTION = new EntityDescriptor("S_File_Description",z_HEADER_SCHEMA, +SCLLOG(LFalse), SCLLOG(LFalse), +(Creator) create_s_N279_file_description); + HEADER_SCHEMAe_MAXSIG = new EntityDescriptor("Maxsig",z_HEADER_SCHEMA, +SCLLOG(LFalse), SCLLOG(LFalse), +(Creator) create_p21DIS_Maxsig); + HEADER_SCHEMAe_CLASSIFICATION = new EntityDescriptor("Classification",z_HEADER_SCHEMA, +SCLLOG(LFalse), SCLLOG(LFalse), +(Creator) create_p21DIS_Classification); + HEADER_SCHEMAe_FILE_SCHEMA = new EntityDescriptor("File_Schema",z_HEADER_SCHEMA, +SCLLOG(LFalse), SCLLOG(LFalse), +(Creator) create_p21DIS_File_schema); + HEADER_SCHEMAt_SCHEMA_NAME->ReferentType(t_sdaiSTRING); reg.AddType (*HEADER_SCHEMAt_SCHEMA_NAME); reg.AddEntity (*HEADER_SCHEMAe_FILE_IDENTIFICATION); - a_0FILE_NAME = new AttrDescriptor("file_name",t_STRING_TYPE,F,F,F,*HEADER_SCHEMAe_FILE_IDENTIFICATION); + a_0FILE_NAME = new AttrDescriptor("file_name",t_sdaiSTRING, +SCLLOG(LFalse),SCLLOG(LFalse), +AttrType_Explicit,*HEADER_SCHEMAe_FILE_IDENTIFICATION); HEADER_SCHEMAe_FILE_IDENTIFICATION->AddExplicitAttr(a_0FILE_NAME); - a_1DATE = new AttrDescriptor("date",t_STRING_TYPE,F,F,F,*HEADER_SCHEMAe_FILE_IDENTIFICATION); + a_1DATE = new AttrDescriptor("date",t_sdaiSTRING, +SCLLOG(LFalse),SCLLOG(LFalse), +AttrType_Explicit,*HEADER_SCHEMAe_FILE_IDENTIFICATION); HEADER_SCHEMAe_FILE_IDENTIFICATION->AddExplicitAttr(a_1DATE); TypeDescriptor * t_0 = new TypeDescriptor; t_0->FundamentalType(AGGREGATE_TYPE); t_0->Description("LIST of STRING"); - t_0->ReferentType(t_STRING_TYPE); - a_2AUTHOR = new AttrDescriptor("author",t_0,F,F,F,*HEADER_SCHEMAe_FILE_IDENTIFICATION); + t_0->OriginatingSchema(z_HEADER_SCHEMA); + t_0->ReferentType(t_sdaiSTRING); + a_2AUTHOR = new AttrDescriptor("author",t_0, +SCLLOG(LFalse),SCLLOG(LFalse), +AttrType_Explicit,*HEADER_SCHEMAe_FILE_IDENTIFICATION); HEADER_SCHEMAe_FILE_IDENTIFICATION->AddExplicitAttr(a_2AUTHOR); TypeDescriptor * t_1 = new TypeDescriptor; t_1->FundamentalType(AGGREGATE_TYPE); t_1->Description("LIST of STRING"); - t_1->ReferentType(t_STRING_TYPE); - a_3ORGANIZATION = new AttrDescriptor("organization",t_1,F,F,F,*HEADER_SCHEMAe_FILE_IDENTIFICATION); + t_1->OriginatingSchema(z_HEADER_SCHEMA); + t_1->ReferentType(t_sdaiSTRING); + a_3ORGANIZATION = new AttrDescriptor("organization",t_1, +SCLLOG(LFalse),SCLLOG(LFalse), +AttrType_Explicit,*HEADER_SCHEMAe_FILE_IDENTIFICATION); HEADER_SCHEMAe_FILE_IDENTIFICATION->AddExplicitAttr(a_3ORGANIZATION); - a_4PREPROCESSOR_VERSION = new AttrDescriptor("preprocessor_version",t_STRING_TYPE,F,F,F,*HEADER_SCHEMAe_FILE_IDENTIFICATION); + a_4PREPROCESSOR_VERSION = new AttrDescriptor("preprocessor_version",t_sdaiSTRING, +SCLLOG(LFalse),SCLLOG(LFalse), +AttrType_Explicit,*HEADER_SCHEMAe_FILE_IDENTIFICATION); HEADER_SCHEMAe_FILE_IDENTIFICATION->AddExplicitAttr(a_4PREPROCESSOR_VERSION); - a_5ORIGINATING_SYSTEM = new AttrDescriptor("originating_system",t_STRING_TYPE,F,F,F,*HEADER_SCHEMAe_FILE_IDENTIFICATION); + a_5ORIGINATING_SYSTEM = new AttrDescriptor("originating_system",t_sdaiSTRING, +SCLLOG(LFalse),SCLLOG(LFalse), +AttrType_Explicit,*HEADER_SCHEMAe_FILE_IDENTIFICATION); HEADER_SCHEMAe_FILE_IDENTIFICATION->AddExplicitAttr(a_5ORIGINATING_SYSTEM); reg.AddEntity (*HEADER_SCHEMAe_IMP_LEVEL); - a_6IMPLEMENTATION_LEVEL = new AttrDescriptor("implementation_level",t_STRING_TYPE,F,F,F,*HEADER_SCHEMAe_IMP_LEVEL); + a_6IMPLEMENTATION_LEVEL = new AttrDescriptor("implementation_level",t_sdaiSTRING, +SCLLOG(LFalse),SCLLOG(LFalse), +AttrType_Explicit,*HEADER_SCHEMAe_IMP_LEVEL); HEADER_SCHEMAe_IMP_LEVEL->AddExplicitAttr(a_6IMPLEMENTATION_LEVEL); reg.AddEntity (*HEADER_SCHEMAe_FILE_NAME); - a_7NAME = new AttrDescriptor("name",t_STRING_TYPE,F,F,F,*HEADER_SCHEMAe_FILE_NAME); + a_7NAME = new AttrDescriptor("name",t_sdaiSTRING, +SCLLOG(LFalse),SCLLOG(LFalse), +AttrType_Explicit,*HEADER_SCHEMAe_FILE_NAME); HEADER_SCHEMAe_FILE_NAME->AddExplicitAttr(a_7NAME); - a_8TIME_STAMP = new AttrDescriptor("time_stamp",t_STRING_TYPE,F,F,F,*HEADER_SCHEMAe_FILE_NAME); + a_8TIME_STAMP = new AttrDescriptor("time_stamp",t_sdaiSTRING, +SCLLOG(LFalse),SCLLOG(LFalse), +AttrType_Explicit,*HEADER_SCHEMAe_FILE_NAME); HEADER_SCHEMAe_FILE_NAME->AddExplicitAttr(a_8TIME_STAMP); TypeDescriptor * t_2 = new TypeDescriptor; t_2->FundamentalType(AGGREGATE_TYPE); t_2->Description("LIST [1:?] of STRING (256)"); - t_2->ReferentType(t_STRING_TYPE); - a_9AUTHOR = new AttrDescriptor("author",t_2,F,F,F,*HEADER_SCHEMAe_FILE_NAME); + t_2->OriginatingSchema(z_HEADER_SCHEMA); + t_2->ReferentType(t_sdaiSTRING); + a_9AUTHOR = new AttrDescriptor("author",t_2, +SCLLOG(LFalse),SCLLOG(LFalse), +AttrType_Explicit,*HEADER_SCHEMAe_FILE_NAME); HEADER_SCHEMAe_FILE_NAME->AddExplicitAttr(a_9AUTHOR); TypeDescriptor * t_3 = new TypeDescriptor; t_3->FundamentalType(AGGREGATE_TYPE); t_3->Description("LIST [1:?] of STRING (256)"); - t_3->ReferentType(t_STRING_TYPE); - a_10ORGANIZATION = new AttrDescriptor("organization",t_3,F,F,F,*HEADER_SCHEMAe_FILE_NAME); + t_3->OriginatingSchema(z_HEADER_SCHEMA); + t_3->ReferentType(t_sdaiSTRING); + a_10ORGANIZATION = new AttrDescriptor("organization",t_3, +SCLLOG(LFalse),SCLLOG(LFalse), +AttrType_Explicit,*HEADER_SCHEMAe_FILE_NAME); HEADER_SCHEMAe_FILE_NAME->AddExplicitAttr(a_10ORGANIZATION); /* - a_11STEP_VERSION = new AttrDescriptor("step_version",t_STRING_TYPE,F,F,F,*HEADER_SCHEMAe_FILE_NAME); + a_11STEP_VERSION = new AttrDescriptor("step_version",t_sdaiSTRING,SCLLOG(LFalse),SCLLOG(LFalse),AttrType_Explicit,*HEADER_SCHEMAe_FILE_NAME); HEADER_SCHEMAe_FILE_NAME->AddExplicitAttr(a_11STEP_VERSION); */ - a_12PREPROCESSOR_VERSION = new AttrDescriptor("preprocessor_version",t_STRING_TYPE,F,F,F,*HEADER_SCHEMAe_FILE_NAME); + a_12PREPROCESSOR_VERSION = new AttrDescriptor("preprocessor_version",t_sdaiSTRING, +SCLLOG(LFalse),SCLLOG(LFalse), +AttrType_Explicit,*HEADER_SCHEMAe_FILE_NAME); HEADER_SCHEMAe_FILE_NAME->AddExplicitAttr(a_12PREPROCESSOR_VERSION); - a_13ORIGINATING_SYSTEM = new AttrDescriptor("originating_system",t_STRING_TYPE,F,F,F,*HEADER_SCHEMAe_FILE_NAME); + a_13ORIGINATING_SYSTEM = new AttrDescriptor("originating_system",t_sdaiSTRING, +SCLLOG(LFalse),SCLLOG(LFalse), +AttrType_Explicit,*HEADER_SCHEMAe_FILE_NAME); HEADER_SCHEMAe_FILE_NAME->AddExplicitAttr(a_13ORIGINATING_SYSTEM); - a_14AUTHORISATION = new AttrDescriptor("authorisation",t_STRING_TYPE,F,F,F,*HEADER_SCHEMAe_FILE_NAME); + a_14AUTHORISATION = new AttrDescriptor("authorisation",t_sdaiSTRING, +SCLLOG(LFalse),SCLLOG(LFalse), +AttrType_Explicit,*HEADER_SCHEMAe_FILE_NAME); HEADER_SCHEMAe_FILE_NAME->AddExplicitAttr(a_14AUTHORISATION); reg.AddEntity (*HEADER_SCHEMAe_FILE_DESCRIPTION); TypeDescriptor * t_4 = new TypeDescriptor; t_4->FundamentalType(AGGREGATE_TYPE); t_4->Description("LIST [1:?] of STRING (256)"); - t_4->ReferentType(t_STRING_TYPE); - a_15DESCRIPTION = new AttrDescriptor("description",t_4,F,F,F,*HEADER_SCHEMAe_FILE_DESCRIPTION); + t_4->OriginatingSchema(z_HEADER_SCHEMA); + t_4->ReferentType(t_sdaiSTRING); + a_15DESCRIPTION = new AttrDescriptor("description",t_4, +SCLLOG(LFalse),SCLLOG(LFalse), +AttrType_Explicit,*HEADER_SCHEMAe_FILE_DESCRIPTION); HEADER_SCHEMAe_FILE_DESCRIPTION->AddExplicitAttr(a_15DESCRIPTION); - a_16IMPLEMENTATION_LEVEL = new AttrDescriptor("implementation_level",t_STRING_TYPE,F,F,F,*HEADER_SCHEMAe_FILE_DESCRIPTION); + a_16IMPLEMENTATION_LEVEL = new AttrDescriptor("implementation_level",t_sdaiSTRING, +SCLLOG(LFalse),SCLLOG(LFalse), +AttrType_Explicit,*HEADER_SCHEMAe_FILE_DESCRIPTION); HEADER_SCHEMAe_FILE_DESCRIPTION->AddExplicitAttr(a_16IMPLEMENTATION_LEVEL); reg.AddEntity (*HEADER_SCHEMAe_S_CLASSIFICATION); - a_17SECURITY_CLASSIFICATION = new AttrDescriptor("security_classification",t_STRING_TYPE,F,F,F,*HEADER_SCHEMAe_S_CLASSIFICATION); + a_17SECURITY_CLASSIFICATION = new AttrDescriptor("security_classification",t_sdaiSTRING, +SCLLOG(LFalse),SCLLOG(LFalse), +AttrType_Explicit,*HEADER_SCHEMAe_S_CLASSIFICATION); HEADER_SCHEMAe_S_CLASSIFICATION->AddExplicitAttr(a_17SECURITY_CLASSIFICATION); reg.AddEntity (*HEADER_SCHEMAe_S_FILE_DESCRIPTION); - a_18DESCRIPTION = new AttrDescriptor("description",t_STRING_TYPE,F,F,F,*HEADER_SCHEMAe_S_FILE_DESCRIPTION); + a_18DESCRIPTION = new AttrDescriptor("description",t_sdaiSTRING, +SCLLOG(LFalse),SCLLOG(LFalse), +AttrType_Explicit,*HEADER_SCHEMAe_S_FILE_DESCRIPTION); HEADER_SCHEMAe_S_FILE_DESCRIPTION->AddExplicitAttr(a_18DESCRIPTION); reg.AddEntity (*HEADER_SCHEMAe_MAXSIG); - a_19MAXIMUM_SIGNIFICANT_DIGIT = new AttrDescriptor("maximum_significant_digit",t_INTEGER_TYPE,F,F,F,*HEADER_SCHEMAe_MAXSIG); + a_19MAXIMUM_SIGNIFICANT_DIGIT = new AttrDescriptor("maximum_significant_digit",t_sdaiINTEGER, +SCLLOG(LFalse),SCLLOG(LFalse), +AttrType_Explicit,*HEADER_SCHEMAe_MAXSIG); HEADER_SCHEMAe_MAXSIG->AddExplicitAttr(a_19MAXIMUM_SIGNIFICANT_DIGIT); reg.AddEntity (*HEADER_SCHEMAe_CLASSIFICATION); - a_20SECURITY_CLASSIFICATION = new AttrDescriptor("security_classification",t_STRING_TYPE,F,F,F,*HEADER_SCHEMAe_CLASSIFICATION); + a_20SECURITY_CLASSIFICATION = new AttrDescriptor("security_classification",t_sdaiSTRING, +SCLLOG(LFalse),SCLLOG(LFalse), +AttrType_Explicit,*HEADER_SCHEMAe_CLASSIFICATION); HEADER_SCHEMAe_CLASSIFICATION->AddExplicitAttr(a_20SECURITY_CLASSIFICATION); reg.AddEntity (*HEADER_SCHEMAe_FILE_SCHEMA); TypeDescriptor * t_5 = new TypeDescriptor; t_5->FundamentalType(AGGREGATE_TYPE); t_5->Description("LIST [1:?] of Schema_Name"); - t_5->ReferentType(t_STRING_TYPE); - a_21SCHEMA_IDENTIFIERS = new AttrDescriptor("schema_identifiers",t_5,F,F,F,*HEADER_SCHEMAe_FILE_SCHEMA); + t_5->OriginatingSchema(z_HEADER_SCHEMA); + t_5->ReferentType(t_sdaiSTRING); + a_21SCHEMA_IDENTIFIERS = new AttrDescriptor("schema_identifiers",t_5, +SCLLOG(LFalse),SCLLOG(LFalse), +AttrType_Explicit,*HEADER_SCHEMAe_FILE_SCHEMA); HEADER_SCHEMAe_FILE_SCHEMA->AddExplicitAttr(a_21SCHEMA_IDENTIFIERS); } diff --git a/source/geometry/solids/STEP/src/schema.cc b/source/geometry/solids/STEP/src/schema.cc index 0671efe38e..e283e9ba0b 100644 --- a/source/geometry/solids/STEP/src/schema.cc +++ b/source/geometry/solids/STEP/src/schema.cc @@ -1,26 +1,32 @@ - - -// - - - -// -// $Id: schema.cc,v 1.2 1999/05/21 20:21:12 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// #ifndef SCHEMA_CC #define SCHEMA_CC // 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: schema.cc,v 1.3 2000/01/21 13:43:14 gcosmo Exp $ */ +#include class Registry; -void +void SchemaInit (Registry & reg) { + extern void InitSchemasAndEnts (Registry & r); + InitSchemasAndEnts (reg); extern void SdaiCONFIG_CONTROL_DESIGNInit (Registry & r); SdaiCONFIG_CONTROL_DESIGNInit (reg); + reg.SetCompCollect( gencomplex() ); +} +// Generate a function to be called by Model to help it +// create the necessary Model_contents without the +// dictionary (Registry) handle since it doesn't have a +// predetermined way to access to the handle. + +SCLP23(Model_contents_ptr) GetModelContents(char *schemaName) +{ + if(!strcmp(schemaName, "config_control_design")) + return (SCLP23(Model_contents_ptr)) new SdaiModel_contents_config_control_design; + // Added default return type - GC + return 0; } #endif diff --git a/source/geometry/solids/STEP/src/scl_char_str_list.cc b/source/geometry/solids/STEP/src/scl_char_str_list.cc new file mode 100644 index 0000000000..eafb51960f --- /dev/null +++ b/source/geometry/solids/STEP/src/scl_char_str_list.cc @@ -0,0 +1,115 @@ + +/////////////////////////////////////////////////////////////////////////////// + +//#include "/proj/pdevel/autoc/arch.sunCC.iv/scl_cf.h" +// This is an scl configuration file generated by the configure script +// generated using gnu's autoconf +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include + +#include + +// to help ObjectCenter +#ifndef HAVE_MEMMOVE +extern "C" +{ +void * memmove(void *__s1, const void *__s2, size_t __n); +} +#endif + +#include + + +scl_char_str__list::scl_char_str__list (int defaultSize) { + _bufsize = defaultSize; + _buf = new scl_char_str_ptr[_bufsize]; + _count = 0; +} + +scl_char_str__list::~scl_char_str__list () { delete _buf; } + +void scl_char_str__list::Check (int index) { + scl_char_str_ptr* newbuf; + + if (index >= _bufsize) { + _bufsize = (index+1) * 2; + newbuf = new scl_char_str_ptr[_bufsize]; + memmove(newbuf, _buf, _count*sizeof(scl_char_str_ptr)); + delete _buf; + _buf = newbuf; + } +} + +void scl_char_str__list::Insert (scl_char_str_ptr v, int index) { + scl_char_str_ptr* spot; + index = (index < 0) ? _count : index; + + if (index < _count) { + Check(_count+1); + spot = &_buf[index]; + memmove(spot+1, spot, (_count - index)*sizeof(scl_char_str_ptr)); + + } else { + Check(index); + spot = &_buf[index]; + } + *spot = v; + ++_count; +} + +void scl_char_str__list::Append (scl_char_str_ptr v) { + int index = _count; + scl_char_str_ptr* spot; + + if (index < _count) { + Check(_count+1); + spot = &_buf[index]; + memmove(spot+1, spot, (_count - index)*sizeof(scl_char_str_ptr)); + + } else { + Check(index); + spot = &_buf[index]; + } + *spot = v; + ++_count; +} + +void scl_char_str__list::Remove (int index) { + if (0 <= index && index < _count) { + --_count; + scl_char_str_ptr* spot = &_buf[index]; + memmove(spot, spot+1, (_count - index)*sizeof(scl_char_str_ptr)); + } +} + +int scl_char_str__list::Index (scl_char_str_ptr v) { + for (int i = 0; i < _count; ++i) { + if (_buf[i] == v) { + return i; + } + } + return -1; +} + +scl_char_str_ptr& scl_char_str__list::operator[] (int index) { + Check(index); +// _count = G4std::max(_count, index+1); + _count = ( (_count > index+1) ? _count : (index+1) ); + return _buf[index]; +} + +int +scl_char_str__list::Count() +{ + return _count; +} + +void +scl_char_str__list::Clear() +{ + _count = 0; +} diff --git a/source/geometry/solids/STEP/src/scl_hash.cc b/source/geometry/solids/STEP/src/scl_hash.cc index 6783d65d95..f6e54973b8 100644 --- a/source/geometry/solids/STEP/src/scl_hash.cc +++ b/source/geometry/solids/STEP/src/scl_hash.cc @@ -1,14 +1,4 @@ - - -// - - - -// -// $Id: scl_hash.cc,v 1.2 1999/05/21 20:21:13 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -/* ""; */ +/* "$Id: scl_hash.cc,v 1.3 2000/01/21 13:43:15 gcosmo Exp $"; */ /* * Dynamic hashing, after CACM April 1988 pp 446-457, by Per-Ake Larson. @@ -89,7 +79,7 @@ HASHfind(Hash_TableP t,char *s) struct Element *ep; e.key = s; - e.symbol =0; /* Initialize to 0 - 25-Apr-1994 - kcm */ + e.symbol =0; /* initialize to 0 - 25-Apr-1994 - kcm */ ep = HASHsearch(t,&e,HASH_FIND); return(ep?ep->data:0); } @@ -101,7 +91,7 @@ HASHinsert(Hash_TableP t,char *s,void *data) e.key = s; e.data = data; - e.symbol =0; /* Initialize to 0 - 25-Apr-1994 - kcm */ + e.symbol =0; /* initialize to 0 - 25-Apr-1994 - kcm */ e2 = HASHsearch(t,&e,HASH_INSERT); if (e2) { printf("Redeclaration of %s\n",s); @@ -115,7 +105,7 @@ HASHcreate(unsigned count) Hash_TableP table; /* - ** Adjust Count to be nearest higher Power of 2, + ** Adjust Count to be nearest higher power of 2, ** minimum SEGMENT_SIZE, then convert into segments. */ i = SEGMENT_SIZE; @@ -126,7 +116,7 @@ HASHcreate(unsigned count) table = (Hash_TableP) HASH_Table_new(); table->SegmentCount = table->p = (short) (table->KeyCount = 0); /* - ** First Initialize directory to 0\'s + ** First initialize directory to 0\'s ** DIRECTORY_SIZE must be same as in header */ for (i = 0; i < DIRECTORY_SIZE; i++) @@ -138,7 +128,7 @@ HASHcreate(unsigned count) /* table->Directory[i] = (struct Element **) calloc(SEGMENT_SIZE,sizeof(struct Element));*/ { table->Directory[i] = new struct Element * [SEGMENT_SIZE]; - for (int h =0; h < SEGMENT_SIZE; h++) // Initialize to NULL + for (int h =0; h < SEGMENT_SIZE; h++) // initialize to NULL table->Directory[i][h] = 0; } @@ -160,7 +150,7 @@ HASHcreate(unsigned count) return(table); } -/* Initialize pointer to beginning of hash table so we can Step through it */ +/* initialize pointer to beginning of hash table so we can step through it */ /* on repeated calls to HASHlist - DEL */ void HASHlistinit(Hash_TableP table,HashEntry *he) @@ -169,7 +159,7 @@ HASHlistinit(Hash_TableP table,HashEntry *he) he->p = 0; he->table = table; he->type = '*'; - he->e =0; /* Initialize to 0 - 25-Apr-1994 - kcm */ + he->e =0; /* initialize to 0 - 25-Apr-1994 - kcm */ } void @@ -179,10 +169,10 @@ HASHlistinit_by_type(Hash_TableP table,HashEntry *he,char type) he->p = 0; he->table = table; he->type = type; - he->e =0; /* Initialize to 0 - 25-Apr-1994 - kcm */ + he->e =0; /* initialize to 0 - 25-Apr-1994 - kcm */ } -/* provide a way to Step through the hash */ +/* provide a way to step through the hash */ struct Element * HASHlist(HashEntry *he) { @@ -385,7 +375,7 @@ HASHexpand_table(Hash_TableP table) /* table->Directory[NewSegmentDir] = (struct Element **) calloc(SEGMENT_SIZE,sizeof(struct Element));*/ { table->Directory[NewSegmentDir] = new struct Element * [SEGMENT_SIZE]; - for (int h =0; h < SEGMENT_SIZE; h++) // Initialize to NULL + for (int h =0; h < SEGMENT_SIZE; h++) // initialize to NULL table->Directory[NewSegmentDir][h] = 0; } diff --git a/source/geometry/solids/STEP/src/scl_string.cc b/source/geometry/solids/STEP/src/scl_string.cc index d9d1795c66..21a99f4cfc 100644 --- a/source/geometry/solids/STEP/src/scl_string.cc +++ b/source/geometry/solids/STEP/src/scl_string.cc @@ -1,18 +1,8 @@ - -// - - - -// -// $Id: scl_string.cc,v 1.2 1999/05/21 20:21:13 japost Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - /* * NIST Utils Class Library * clutils/scl_string.cc -* May 1995 +* April 1997 * K. C. Morris * David Sauder @@ -20,15 +10,28 @@ * and is not subject to copyright. */ -/* */ +/* $Id: scl_string.cc,v 1.3 2000/01/21 13:43:15 gcosmo Exp $ */ #include #include /*******************************************************************/ - -int SCLstring::newBufSize (int len) const +void +SCLstring::PrintContents(G4std::ostream &out) const { - int rval = (((len + 1)/32) +1) * 32; + if(_strBuf) + { + out << "_strBuf in parens" << G4endl << "("; + out << _strBuf << ")" << G4endl; + } + else + out << "_strBuf is a null pointer" << G4endl; + out << "_strBufSize: " << _strBufSize << G4endl; + out << "_max_len: " << _max_len << G4endl; +} + +int SCLstring::newBufSize (int l) const +{ + int rval = (((l + 1)/32) +1) * 32; // if there\'s a max and rval > max return max +1 return (MaxLength () && (rval > MaxLength ())) ? MaxLength ()+1 : rval; @@ -42,29 +45,40 @@ SCLstring::SCLstring (const char * str, int lim) if (!str) { _strBufSize = 0; _strBuf = 0; return; } // check the length - int len; - if (lim && (strlen (str) > lim)) len = lim; - else len = strlen (str); + int l; + if (lim && (strlen (str) > lim)) l = lim; + else l = strlen (str); - _strBufSize = newBufSize (len); + _strBufSize = newBufSize (l); +#ifdef __OSTORE__ + _strBuf = new (os_database::of(this), os_typespec::get_char(), _strBufSize) + char[_strBufSize]; +#else _strBuf = new char[_strBufSize]; - strncpy (_strBuf, str, len); - _strBuf [len] = '\0'; +#endif + strncpy (_strBuf, str, l); + _strBuf [l] = '\0'; } SCLstring::SCLstring (const SCLstring& s) : _max_len (s.MaxLength ()) { - if (s.is_null ()) { _strBufSize = 0; _strBuf = 0; return; } + if (s.is_undefined ()) { _strBufSize = 0; _strBuf = 0; return; } // int len = newBufSize (s.Length ()); // _strBuf = new char [len]; // strncpy (_strBuf, s, len); // _strBuf [len] = '\0'; _strBufSize = newBufSize (s.Length ()); - _strBuf = new char [_strBufSize]; + +#ifdef __OSTORE__ + _strBuf = new (os_database::of(this), os_typespec::get_char(), _strBufSize) + char[_strBufSize]; +#else + _strBuf = new char[_strBufSize]; +#endif strncpy (_strBuf, s, _strBufSize); - _strBuf [_strBufSize] = '\0'; + _strBuf [_strBufSize-1] = '\0'; } //destructor @@ -91,7 +105,12 @@ SCLstring& SCLstring::operator= (const char* str) // first clean up the space if (_strBuf) delete [] _strBuf; _strBufSize = newBufSize (slen+1); +#ifdef __OSTORE__ + _strBuf = new (os_database::of(this), os_typespec::get_char(), + _strBufSize) char[_strBufSize]; +#else _strBuf = new char[_strBufSize]; +#endif } strncpy (_strBuf, str, _strBufSize -1); _strBuf [_strBufSize -1] = '\0'; @@ -103,9 +122,9 @@ SCLstring& SCLstring::operator= (const char* str) SCLstring& SCLstring::operator= (const SCLstring& s) { // changed from sending s.chars() so undefined will be set correctly - DAS +// _max_len = s.MaxLength(); // Do we want this to happen? - DAS operator=(s.rep()); - _strBufSize = s.StrBufSize(); - _max_len = s.MaxLength(); +// _strBufSize = s.StrBufSize(); // this seems wrong - DAS return *this; } @@ -119,17 +138,26 @@ SCLstring& SCLstring::Append (const char * s) { if (!s) return *this; - int olen = Length (), slen = strlen (s); - int len = olen + slen +1; - if (_strBuf && (len < _strBufSize)) strncat (_strBuf, s, slen+1); + int oldlen = Length (); + int slen = strlen (s); + int l = oldlen + slen +1; + if (_strBuf && (l < _strBufSize)) strncat (_strBuf, s, slen+1); else { // make more space - int sz = newBufSize (len); - char * tmp = new char [sz]; tmp [0] ='\0'; + int sz = newBufSize (l); + +#ifdef __OSTORE__ + char * tmp = new (os_database::of(this), os_typespec::get_char(), sz) + char[sz]; +#else + char * tmp = new char [sz]; +#endif + tmp [0] ='\0'; + _strBufSize = sz; if (_strBuf) strcpy (tmp, _strBuf ); - len = ((slen > sz-olen) ? sz-olen : slen); - strncat (tmp, s, len); - *(tmp+olen+len) = '\0'; + l = (( slen > (sz-oldlen) ) ? sz-oldlen : slen); + strncat (tmp, s, l); + *(tmp+oldlen+l) = '\0'; delete [] _strBuf; _strBuf = tmp; } @@ -164,9 +192,44 @@ SCLstring::Append (const int i) SCLstring& SCLstring::Append (const double i, const int prec) { - char tmp [BUFSIZ]; - sprintf (tmp, "%.*g", prec, i); - return Append (tmp); + char tmp [BUFSIZ]; +// sprintf (tmp, "%.*g", prec, i); + // replace the above line with this code so that writing the '.' is + // guaranteed for reals. If you use e or E then you get many + // unnecessary trailing zeros. g and G truncates all trailing zeros + // to save space but when no non-zero precision exists it also + // truncates the decimal. The decimal is required by Part 21. + // Also use G instead of g since G writes uppercase E (E instead of e + // is also required by Part 21) when scientific notation is used - DAS + + sprintf(tmp, "%.*G", prec, i); + if(!strchr(tmp, '.')) + { + if(strchr(tmp, 'E') || strchr(tmp, 'e')) + { + char *expon = strchr(tmp, 'E'); + + if( !expon) + { + expon = strchr(tmp, 'e'); + } + *expon = '\0'; + Append(tmp); + Append('.'); + Append('E'); + expon++; + Append(expon); + } + else + { + int rindex = strlen(tmp); + tmp[rindex] = '.'; + tmp[rindex+1] = '\0'; + Append(tmp); + } + return *this; + } + return Append (tmp); } SCLstring& @@ -174,16 +237,29 @@ SCLstring::Prepend (const char * s) { if (!_strBuf) { // no string int sz = newBufSize (strlen (s)); +#ifdef __OSTORE__ + _strBuf = new (os_database::of(this), os_typespec::get_char(), sz) + char[sz]; +#else _strBuf = new char [sz]; +#endif + sz = sz-1; strncpy (_strBuf, s, sz); - _strBuf [sz] = '\0'; + _strBuf [sz-1] = '\0'; return *this; } // otherwise make some space int slen = strlen (s); int sz = newBufSize (slen + Length () ); + +#ifdef __OSTORE__ + char * nstr = new (os_database::of(this), os_typespec::get_char(), sz) + char[sz]; +#else char * nstr = new char [sz]; +#endif + strncpy (nstr, s, sz-1); if (slen < sz) // copy the rest strncat (nstr, _strBuf, sz-slen); diff --git a/source/geometry/solids/STEP/src/sdai.cc b/source/geometry/solids/STEP/src/sdai.cc new file mode 100644 index 0000000000..23a508a025 --- /dev/null +++ b/source/geometry/solids/STEP/src/sdai.cc @@ -0,0 +1,15 @@ + +// Use limits.h instead of values.h for portability. Therefore, +// use FLT_MIN instead of MINFLOAT, LONG_MAX instead of MAXLONG. +// Also commented inclusion of values.h in sdai.h - GC +#include +#include +#include "globals.hh" +// The values used here to represent NULL values for numeric types come from +// the ANSI C standard + +const char *SCLversion = "STEP Class Library version 3.1"; + +const SCLP23(Integer) SCLP23(INT_NULL) = LONG_MAX; +const SCLP23(Real) SCLP23(REAL_NULL) = FLT_MIN; +const SCLP23(Real) SCLP23(NUMBER_NULL) = FLT_MIN; diff --git a/source/geometry/solids/STEP/src/STEPentity.cc b/source/geometry/solids/STEP/src/sdaiApplication_instance.cc similarity index 61% rename from source/geometry/solids/STEP/src/STEPentity.cc rename to source/geometry/solids/STEP/src/sdaiApplication_instance.cc index dcd88a25a1..3f373e35c9 100644 --- a/source/geometry/solids/STEP/src/STEPentity.cc +++ b/source/geometry/solids/STEP/src/sdaiApplication_instance.cc @@ -1,19 +1,8 @@ - -// - - - -// -// $Id: STEPentity.cc,v 1.3 1999/12/15 14:50:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - - /* * NIST STEP Core Class Library -* clstepcore/STEPentity.cc -* February, 1994 +* clstepcore/sdaiApplication_instance.cc +* July, 1997 * K. C. Morris * David Sauder @@ -21,40 +10,42 @@ * and is not subject to copyright. */ -/* */ +/* $Id: sdaiApplication_instance.cc,v 1.1 2000/01/21 13:43:15 gcosmo Exp $ */ -//static char rcsid[] =""; +//static char rcsid[] ="$Id: sdaiApplication_instance.cc,v 1.1 2000/01/21 13:43:15 gcosmo Exp $"; -#include +#include +//#include #include #include +#include -STEPentity NilSTEPentity; +SCLP23(Application_instance) NilSTEPentity; /****************************************************************** ** Functions for manipulating entities -** KNOWN BUGs: the STEPentity is not aware of the STEPfile; therefore -** it can not read comments which may be embedded in the instance. +** KNOWN BUGs: the SCLP23(Application_instance) is not aware of the STEPfile; +** therefore it can not read comments which may be embedded in the instance. ** The following are known problems: ** -- does not handle comments embedded in an instance ==> bombs ** -- ignores embedded entities ==> does not bomb ** -- error reporting does not include line number information **/ -STEPentity::STEPentity () +SCLP23(Application_instance)::SCLP23_NAME(Application_instance) () : _cur(0), STEPfile_id(0), p21Comment(0), headMiEntity(0), nextMiEntity(0), _complex(0) { } -STEPentity::STEPentity (int fileid, int complex) +SCLP23(Application_instance)::SCLP23_NAME(Application_instance) (int fileid, int complex) : _cur(0), STEPfile_id(fileid), p21Comment(0), headMiEntity(0), nextMiEntity(0), _complex (complex) { } -STEPentity::~STEPentity () +SCLP23(Application_instance)::~SCLP23_NAME(Application_instance) () { STEPattribute * next =0; ResetAttributes (); @@ -66,11 +57,13 @@ STEPentity::~STEPentity () delete nextMiEntity; } + delete p21Comment; + /* // this is not necessary since each will call delete on its // own nextMiEntity - DAS - STEPentity * nextMI = nextMiEntity; - STEPentity * nextMItrail = 0; + SCLP23(Application_instance) * nextMI = nextMiEntity; + SCLP23(Application_instance) * nextMItrail = 0; while(nextMI) { nextMItrail = nextMI; @@ -81,15 +74,46 @@ STEPentity::~STEPentity () */ } -STEPentity * -STEPentity::Replicate() +#ifdef PART26 +//SCLP26(Application_instance_ptr) +IDL_Application_instance_ptr +SCLP23(Application_instance)::create_TIE() { - STEPentity *seNew = eDesc->NewSTEPentity(); - seNew -> CopyAs (this); - return seNew; + G4cout << "ERROR SCLP23(Application_instance)::create_TIE() called." << G4endl; + return 0; +} +#endif + +SCLP23(Application_instance) * +SCLP23(Application_instance)::Replicate() +{ + char errStr[BUFSIZ]; + if(IsComplex()) + { + G4cerr << "STEPcomplex::Replicate() should be called: " << __FILE__ + << __LINE__ << "\n" << _POC_ "\n"; + sprintf(errStr, + "SCLP23(Application_instance)::Replicate(): %s - entity #%d.\n", + "Programming ERROR - STEPcomplex::Replicate() should be called", + STEPfile_id); + _error.AppendToDetailMsg(errStr); + _error.AppendToUserMsg(errStr); + _error.GreaterSeverity(SEVERITY_BUG); + return S_ENTITY_NULL; + } + else + { +#ifdef __OSTORE__ + SCLP23(Application_instance) *seNew = eDesc->NewSTEPentity(os_database::of(this)); +#else + SCLP23(Application_instance) *seNew = eDesc->NewSTEPentity(); +#endif + seNew -> CopyAs (this); + return seNew; + } } -void STEPentity::AddP21Comment(const char *s, int replace) +void SCLP23(Application_instance)::AddP21Comment(const char *s, int replace) { if(replace) { @@ -100,7 +124,12 @@ void STEPentity::AddP21Comment(const char *s, int replace) { if(!p21Comment) { +#ifdef __OSTORE__ + p21Comment = new (os_segment::of(this), SCLstring::get_os_typespec()) + SCLstring; +#else p21Comment = new SCLstring; +#endif } else p21Comment->set_null(); @@ -109,7 +138,7 @@ void STEPentity::AddP21Comment(const char *s, int replace) } void -STEPentity::AddP21Comment(SCLstring &s, int replace) +SCLP23(Application_instance)::AddP21Comment(SCLstring &s, int replace) { if(replace) { @@ -120,7 +149,13 @@ STEPentity::AddP21Comment(SCLstring &s, int replace) { if(!p21Comment) { +#ifdef __OSTORE__ + p21Comment = new (os_segment::of(this), + SCLstring::get_os_typespec()) + SCLstring; +#else p21Comment = new SCLstring; +#endif } else p21Comment->set_null(); @@ -129,13 +164,13 @@ STEPentity::AddP21Comment(SCLstring &s, int replace) } void -STEPentity::STEPwrite_reference (G4std::ostream& out) +SCLP23(Application_instance)::STEPwrite_reference (G4std::ostream& out) { out << "#" << STEPfile_id; } const char * -STEPentity::STEPwrite_reference (SCLstring &buf) +SCLP23(Application_instance)::STEPwrite_reference (SCLstring &buf) { char tmp[64]; sprintf ( tmp,"#%d", STEPfile_id); @@ -144,14 +179,14 @@ STEPentity::STEPwrite_reference (SCLstring &buf) } void -STEPentity::AppendMultInstance(STEPentity *se) +SCLP23(Application_instance)::AppendMultInstance(SCLP23(Application_instance) *se) { if(nextMiEntity == 0) nextMiEntity = se; else { - STEPentity *link = nextMiEntity; - STEPentity *linkTrailing = 0; + SCLP23(Application_instance) *link = nextMiEntity; + SCLP23(Application_instance) *linkTrailing = 0; while(link) { linkTrailing = link; @@ -163,8 +198,8 @@ STEPentity::AppendMultInstance(STEPentity *se) // BUG implement this -STEPentity * -STEPentity::GetMiEntity(char *EntityName) +SCLP23(Application_instance) * +SCLP23(Application_instance)::GetMiEntity(char *EntityName) { SCLstring s1, s2; @@ -189,8 +224,35 @@ STEPentity::GetMiEntity(char *EntityName) } +#ifdef __OSTORE__ +void Application_instance_access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + G4cout << "ObjectStore called non-member function Application_instance Access_hook" + << G4endl; + SCLP23(Application_instance) *ent = (SCLP23(Application_instance) *)object; + G4cout << "STEPfile_id: " << ent->STEPfile_id << G4endl; + ent->Access_hook_in(object, reason, user_data, start_range, end_range); + +// SdaiEb_person *ent = (SdaiEb_person *)object; +// SdaiEb_person_access_hook_in(object, reason, user_data, +// start_range, end_range); +} + +void +SCLP23(Application_instance)::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + SCLP23(Application_instance) *ent = (SCLP23(Application_instance) *)object; + G4cout << "****WARNING: virtual SCLP23(Application_instance)::Access_hook_in() called" << G4endl; + ent->Access_hook_in(object, reason, user_data, start_range, end_range); +} +#endif + STEPattribute * -STEPentity::GetSTEPattribute (const char * nm) +SCLP23(Application_instance)::GetSTEPattribute (const char * nm) { if (!nm) return 0; STEPattribute *a =0; @@ -198,13 +260,24 @@ STEPentity::GetSTEPattribute (const char * nm) ResetAttributes(); while ((a = NextAttribute () ) && strcmp (nm, a ->Name())) - ; // keep going untill no more attribute or attribute found + ; // keep going until no more attributes or attribute is found return a; } STEPattribute * -STEPentity::MakeDerived (const char * nm) +SCLP23(Application_instance)::MakeRedefined (STEPattribute *redefiningAttr, const char * nm) +{ + // find the attribute being redefined + STEPattribute * a = GetSTEPattribute (nm); + + // assign its pointer to the redefining attribute + if (a) a->RedefiningAttr(redefiningAttr); + return a; +} + +STEPattribute * +SCLP23(Application_instance)::MakeDerived (const char * nm) { STEPattribute * a = GetSTEPattribute (nm); if (a) a ->Derive (); @@ -212,7 +285,7 @@ STEPentity::MakeDerived (const char * nm) } void -STEPentity::CopyAs (STEPentity * other) +SCLP23(Application_instance)::CopyAs (SCLP23(Application_instance) * other) { int numAttrs = AttributeCount(); ResetAttributes(); @@ -228,11 +301,27 @@ STEPentity::CopyAs (STEPentity * other) } } + +const char * +SCLP23(Application_instance)::EntityName( const char *schnm) const +{ + return eDesc->Name( schnm ); +} + +/***************************************************************** + Checks if a given SCLP23(Application_instance) is the same type as this one + ****************************************************************/ + +const EntityDescriptor* SCLP23(Application_instance)::IsA(const EntityDescriptor *ed) const +{ + return (eDesc->IsA(ed)); +} + /****************************************************************** // Checks the validity of the current attribute values for the entity ******************************************************************/ -Severity STEPentity::ValidLevel(ErrorDescriptor *error, InstMgr *im, +Severity SCLP23(Application_instance)::ValidLevel(ErrorDescriptor *error, InstMgr *im, int clearError) { ErrorDescriptor err; @@ -241,8 +330,9 @@ Severity STEPentity::ValidLevel(ErrorDescriptor *error, InstMgr *im, int n = attributes.list_length(); SCLstring tmp; for (int i = 0 ; i < n; i++) { - error->GreaterSeverity(attributes[i].ValidLevel(attributes[i].asStr(tmp), - &err, im, 0)); + if( !(attributes[i].aDesc->AttrType() == AttrType_Redefining) ) + error->GreaterSeverity(attributes[i].ValidLevel( + attributes[i].asStr(tmp), &err, im, 0)); } return error->severity(); } @@ -250,7 +340,7 @@ Severity STEPentity::ValidLevel(ErrorDescriptor *error, InstMgr *im, /****************************************************************** // clears all attr's errors ******************************************************************/ -void STEPentity::ClearAttrError() +void SCLP23(Application_instance)::ClearAttrError() { int n = attributes.list_length(); for (int i = 0 ; i < n; i++) { @@ -262,7 +352,7 @@ void STEPentity::ClearAttrError() // clears entity's error and optionally all attr's errors ******************************************************************/ -void STEPentity::ClearError(int clearAttrs) +void SCLP23(Application_instance)::ClearError(int clearAttrs) { _error.ClearErrorMsg(); if(clearAttrs) @@ -273,7 +363,7 @@ void STEPentity::ClearError(int clearAttrs) ******************************************************************/ /* -void STEPentity::EnforceOptionality(int on) +void SCLP23(Application_instance)::EnforceOptionality(int on) { Enforcement e; if(on) e = ENFORCE_OPTIONALITY; @@ -294,7 +384,7 @@ void STEPentity::EnforceOptionality(int on) ** Status: stub ******************************************************************/ -void STEPentity::beginSTEPwrite(G4std::ostream& out) +void SCLP23(Application_instance)::beginSTEPwrite(G4std::ostream& out) { out << "begin STEPwrite ... \n" ; out.flush(); @@ -313,40 +403,130 @@ void STEPentity::beginSTEPwrite(G4std::ostream& out) ** Returns: ** Side Effects: writes out the data associated with an instance in STEP format - ** Problems: does not Print out the SCOPE section of an entity + ** Problems: does not print out the SCOPE section of an entity ** ******************************************************************/ -void STEPentity::STEPwrite(G4std::ostream& out, int writeComment) +void +SCLP23(Application_instance)::STEPwrite(G4std::ostream& out, const char *currSch, + int writeComments) { SCLstring tmp; - if(writeComment && p21Comment && !p21Comment->is_null() ) + if(writeComments && p21Comment && !p21Comment->is_null() ) out << p21Comment->chars(); - out << "#" << STEPfile_id << "=" << StrToUpper (EntityName(), tmp) << "("; + out << "#" << STEPfile_id << "=" << StrToUpper(EntityName( currSch ), tmp) + << "("; int n = attributes.list_length(); for (int i = 0 ; i < n; i++) { - (attributes[i]).STEPwrite(out); - if (i < n-1) out << ","; + if( !(attributes[i].aDesc->AttrType() == AttrType_Redefining) ) + { + if (i > 0) out << ","; + (attributes[i]).STEPwrite( out, currSch ); + } } out << ");\n"; } -void STEPentity::endSTEPwrite(G4std::ostream& out) +void SCLP23(Application_instance)::endSTEPwrite(G4std::ostream& out) { out << "end STEPwrite ... \n" ; out.flush(); } +void +SCLP23(Application_instance)::WriteValuePairs(G4std::ostream& out, + const char *currSch, + int writeComments, int mixedCase) +{ +/* + const EntityDescriptorList &edl = eDesc->Supertypes(); + EntityDescItr &edi((EntityDescriptorList &)(eDesc->Supertypes())); + + int count = 1; + const EntityDescriptor * ed = 0; + while(ed = edi.NextEntityDesc()) + { + if(count > 1) + { + out << "&"; + } + out << ed->Name(); + count++; + } +*/ + +// const AttrDescriptorList& adl = ed->ExplicitAttr(); + +/* + out << "Attributes are: " << G4endl; + edi.ResetItr(); + AttrDescItr *adi = 0; + const AttrDescriptor * ad; + while(ed = edi.NextEntityDesc()) + { + adi = new AttrDescItr((AttrDescriptorList&)ed->ExplicitAttr()); + ad = 0; + while(ad = adi->NextAttrDesc()) + { + out << ed->Name() << "." << ad->Name() << G4endl; + } + delete adi; + } + out << G4endl; + out << "finished writing attribute names." << G4endl; + edi.ResetItr(); +*/ + SCLstring s; +// out << eDesc->QualifiedName(s) << G4endl; + + SCLstring tmp, tmp2; + if(writeComments && p21Comment && !p21Comment->is_null() ) + out << p21Comment->chars(); + if(mixedCase) + { + out << "#" << STEPfile_id << " " + << eDesc->QualifiedName(s) << G4endl; + } + else + { + out << "#" << STEPfile_id << " " + << StrToUpper(eDesc->QualifiedName(s),tmp) << G4endl; + } + int n = attributes.list_length(); + + for (int i = 0 ; i < n; i++) { + if( !(attributes[i].aDesc->AttrType() == AttrType_Redefining) ) + { +// if (i > 0) out << ","; + if(mixedCase) + { + out << "\t" + << attributes[i].aDesc->Owner().Name(s) + << "." << attributes[i].aDesc->Name() << " "; + } + else + { + out << "\t" + << StrToUpper(attributes[i].aDesc->Owner().Name(s),tmp) + << "." << StrToUpper(attributes[i].aDesc->Name(),tmp2) << " "; + } + (attributes[i]).STEPwrite( out, currSch ); + out << G4endl; + } + } + out << G4endl; +} + /****************************************************************** ** Procedure: STEPwrite - ** Problems: does not Print out the SCOPE section of an entity + ** Problems: does not print out the SCOPE section of an entity ** ******************************************************************/ const char * -STEPentity::STEPwrite(SCLstring &buf) +SCLP23(Application_instance)::STEPwrite(SCLstring &buf, const char *currSch) { buf.set_null(); @@ -354,16 +534,17 @@ STEPentity::STEPwrite(SCLstring &buf) SCLstring tmp; sprintf(instanceInfo, "#%d=%s(", STEPfile_id, - (char *)StrToUpper( EntityName(), tmp ) ); + (char *)StrToUpper( EntityName( currSch ), tmp ) ); buf.Append(instanceInfo); int n = attributes.list_length(); for (int i = 0 ; i < n; i++) { - attributes[i].asStr(tmp) ; - buf.Append (tmp); - if (i < n-1) { - buf.Append( ',' ); + if( !(attributes[i].aDesc->AttrType() == AttrType_Redefining) ) + { + if (i > 0) buf.Append( ',' ); + attributes[i].asStr( tmp, currSch ) ; + buf.Append (tmp); } } buf.Append( ");" ); @@ -371,7 +552,7 @@ STEPentity::STEPwrite(SCLstring &buf) } void -STEPentity::PrependEntityErrMsg() +SCLP23(Application_instance)::PrependEntityErrMsg() { char errStr[BUFSIZ]; errStr[0] = '\0'; @@ -385,7 +566,7 @@ STEPentity::PrependEntityErrMsg() } /****************************************************************** - ** Procedure: STEPentity::STEPread_error + ** Procedure: SCLP23(Application_instance)::STEPread_error ** Parameters: char c -- character which caused error ** int i -- index of attribute which caused error ** G4std::istream& in -- input stream for recovery @@ -395,7 +576,7 @@ STEPentity::PrependEntityErrMsg() ** whitespace between them. ******************************************************************/ void -STEPentity::STEPread_error(char c, int i, G4std::istream& in) +SCLP23(Application_instance)::STEPread_error(char c, int i, G4std::istream& in) { char errStr[BUFSIZ]; errStr[0] = '\0'; @@ -492,21 +673,21 @@ STEPentity::STEPread_error(char c, int i, G4std::istream& in) ******************************************************************/ Severity -STEPentity::STEPread(int id, int idIncr, InstMgr * instance_set, G4std::istream& in) +SCLP23(Application_instance)::STEPread(int id, int idIncr, + InstMgr * instance_set, G4std::istream& in, + const char *currSch, int useTechCor) { STEPfile_id = id; char c ='\0'; char errStr[BUFSIZ]; errStr[0] = '\0'; Severity severe; + int i = 0; - // L. Broglia - // ClearError(1); + ClearError(1); in >> G4std::ws; - in >> c; - - // read the open paren + in >> c; // read the open paren if( c != '(' ) { PrependEntityErrMsg(); @@ -524,43 +705,115 @@ STEPentity::STEPread(int id, int idIncr, InstMgr * instance_set, G4std::istream return _error.severity(); } - int i; for (i = 0 ; i < n; i++) { - attributes[i].STEPread(in, instance_set, idIncr); + if( attributes[i].aDesc->AttrType() == AttrType_Redefining ) + { + in >> G4std::ws; + c = in.peek(); + if(!useTechCor) // i.e. use pre-technical corrigendum encoding + { + in >> c; // read what should be the '*' + in >> G4std::ws; + if(c == '*') + { + in >> c; // read the delimiter i.e. ',' or ')' + } + else + { + severe = SEVERITY_INCOMPLETE; + PrependEntityErrMsg(); // adds entity info if necessary - severe = attributes[i].Error().severity(); + // set the severity for this entity + _error.GreaterSeverity(severe); + sprintf (errStr, " %s : ", attributes[i].Name()); + _error.AppendToDetailMsg(errStr); // add attr name + _error.AppendToDetailMsg( + "Since using pre-technical corrigendum... missing asterisk for redefined attr.\n"); + _error.AppendToUserMsg( + "Since using pre-technical corrigendum... missing asterisk for redefined attr. "); + } +/* + if( ! ( (c == ',') || (c == ')') ) ) + { // input is not a delimiter - an error + PrependEntityErrMsg(); - if(severe <= SEVERITY_USERMSG) - { // if there is some type of error - PrependEntityErrMsg(); + _error.AppendToDetailMsg( + "Delimiter expected after redefined asterisk attribute encoding (since using pre-technical corregendum.\n"); + CheckRemainingInput(in, &_error, "ENTITY", ",)"); + if(!in.good()) + return _error.severity(); + if(_error.severity() <= SEVERITY_INPUT_ERROR) + { +// STEPread_error(c,i,in); + return _error.severity(); + } + } +*/ + } + else // using technical corrigendum + { + // should be nothing to do except loop again unless... + // if at end need to have read the closing paren. + if(c == ')') // assume you are at the end so read last char + in >> c; + G4cout << "Entity #" << STEPfile_id + << " skipping redefined attribute " + << attributes[i].aDesc->Name() << G4endl << G4endl << G4std::flush; + } + // increment counter to read following attr since these attrs + // aren't written or read => there won't be a delimiter either +// i++; + } + else + { + attributes[i].STEPread(in, instance_set, idIncr, currSch); + in >> c; // read the , or ) following the attr read + + severe = attributes[i].Error().severity(); + + if(severe <= SEVERITY_USERMSG) + { // if there is some type of error + PrependEntityErrMsg(); // set the severity for this entity - _error.GreaterSeverity(severe); - sprintf (errStr, " %s : ", attributes[i].Name()); - _error.AppendToDetailMsg(errStr); // add attr name - _error.AppendToDetailMsg((char *) // add attr error - attributes[i].Error().DetailMsg()); - _error.AppendToUserMsg((char *)attributes[i].Error().UserMsg()); + _error.GreaterSeverity(severe); + sprintf (errStr, " %s : ", attributes[i].Name()); + _error.AppendToDetailMsg(errStr); // add attr name + _error.AppendToDetailMsg((char *) // add attr error + attributes[i].Error().DetailMsg()); + _error.AppendToUserMsg((char*)attributes[i].Error().UserMsg()); + } } + /* if(severe <= SEVERITY_INPUT_ERROR) { // attribute\'s error is non-recoverable - // I believe if this error occurs then you cannot recover + // I believe if this error occurs then you cannot recover - // TODO: can you just read to the next comma and try to continue ? - STEPread_error(c,i,in); - return _error.severity(); + // TODO: can you just read to the next comma and try to continue ? + STEPread_error(c,i,in); + return _error.severity(); } */ - in >> c; - if ( ! ((c == ',') || (c == ')' ))) { // input is not a delimiter + // if technical corrigendum redefined, input is at next attribute value + // if pre-technical corrigendum redefined, don't process + if ( (!( attributes[i].aDesc->AttrType() == AttrType_Redefining ) || + !useTechCor) && + ! ((c == ',') || (c == ')' )) ) { // input is not a delimiter PrependEntityErrMsg(); _error.AppendToDetailMsg( "Delimiter expected after attribute value.\n"); + if(!useTechCor) + { + _error.AppendToDetailMsg( + "I.e. since using pre-technical corrigendum, redefined "); + _error.AppendToDetailMsg( + "attribute is mapped as an asterisk so needs delimiter.\n"); + } CheckRemainingInput(in, &_error, "ENTITY", ",)"); if(!in.good()) - return _error.severity(); + return _error.severity(); if(_error.severity() <= SEVERITY_INPUT_ERROR) { // STEPread_error(c,i,in); @@ -569,25 +822,66 @@ STEPentity::STEPread(int id, int idIncr, InstMgr * instance_set, G4std::istream } else if(c == ')') { - if(i < n-1) + while (i < n-1) { - PrependEntityErrMsg(); - _error.AppendToDetailMsg( - "Missing attribute values.\n"); - _error.GreaterSeverity(SEVERITY_WARNING); // recoverable error + i++; // check if following attributes are redefined + if( !(attributes[i].aDesc->AttrType() == AttrType_Redefining) ) + { + PrependEntityErrMsg(); + _error.AppendToDetailMsg("Missing attribute value[s].\n"); + // recoverable error + _error.GreaterSeverity(SEVERITY_WARNING); + return _error.severity(); + } + i++; } return _error.severity(); } } STEPread_error(c,i,in); +// code fragment imported from STEPread_error +// for some currently unknown reason it was commented out of STEPread_error + errStr[0] = '\0'; + in.clear(); + int foundEnd = 0; + SCLstring tmp; + tmp = ""; + + // Search until a close paren is found followed by (skipping optional + // whitespace) a semicolon + while( in.good() && !foundEnd ) + { + while ( in.good() && (c != ')') ) + { + in.get(c); + tmp.Append(c); +// G4cerr << c; + } + if(in.good() && (c == ')') ) + { + in >> G4std::ws; // skip whitespace + in.get(c); + tmp.Append(c); +// G4cerr << c; +// G4cerr << "\n"; + if(c == ';') + { + foundEnd = 1; + } + } + } + _error.AppendToDetailMsg( tmp.chars() ); + sprintf (errStr, "\nfinished reading #%d\n", STEPfile_id); + _error.AppendToDetailMsg(errStr); +// end of imported code return _error.severity(); } /////////////////////////////////////////////////////////////////////////////// -// read an entity reference and return a pointer to the STEPentity +// read an entity reference and return a pointer to the SCLP23(Application_instance) /////////////////////////////////////////////////////////////////////////////// -STEPentity * +SCLP23(Application_instance) * ReadEntityRef(G4std::istream &in, ErrorDescriptor *err, char *tokenList, InstMgr * instances, int addFileId) { @@ -621,7 +915,7 @@ ReadEntityRef(G4std::istream &in, ErrorDescriptor *err, char *tokenList, } else // found an entity id { - // check to make sure garbage does not Follow the id + // check to make sure garbage does not follow the id CheckRemainingInput(in, err, "Entity Reference", tokenList); id += addFileId; @@ -640,8 +934,8 @@ ReadEntityRef(G4std::istream &in, ErrorDescriptor *err, char *tokenList, } // lookup which object has id as its instance id - STEPentity* inst; - /* If there is a ManagerNode it should have a STEPentity */ + SCLP23(Application_instance)* inst; + /* If there is a ManagerNode it should have a SCLP23(Application_instance) */ MgrNode* mn =0; mn = instances->FindFileId(id); if (mn) @@ -688,7 +982,7 @@ ReadEntityRef(G4std::istream &in, ErrorDescriptor *err, char *tokenList, // same as above but reads from a const char * /////////////////////////////////////////////////////////////////////////////// -STEPentity * +SCLP23(Application_instance) * ReadEntityRef(const char * s, ErrorDescriptor *err, char *tokenList, InstMgr * instances, int addFileId) { @@ -701,7 +995,7 @@ ReadEntityRef(const char * s, ErrorDescriptor *err, char *tokenList, /////////////////////////////////////////////////////////////////////////////// Severity -EntityValidLevel(STEPentity *se, +EntityValidLevel(SCLP23(Application_instance) *se, const TypeDescriptor *ed, // entity type that entity se needs // to match. (this must be an // EntityDescriptor) @@ -727,7 +1021,7 @@ EntityValidLevel(STEPentity *se, err->GreaterSeverity(SEVERITY_BUG); sprintf(messageBuf, " BUG: EntityValidLevel() called with null pointer %s\n", - "for STEPentity argument."); + "for SCLP23(Application_instance) argument."); err->AppendToUserMsg(messageBuf); err->AppendToDetailMsg(messageBuf); G4cerr << "Internal error: " << __FILE__ << __LINE__ @@ -784,7 +1078,7 @@ EntityValidLevel(STEPentity *se, { err->GreaterSeverity(SEVERITY_BUG); sprintf(messageBuf, - " BUG: EntityValidLevel(): STEPentity #%d has a %s", + " BUG: EntityValidLevel(): SCLP23(Application_instance) #%d has a %s", se->STEPfile_id, "missing or invalid EntityDescriptor\n"); err->AppendToUserMsg(messageBuf); err->AppendToDetailMsg(messageBuf); @@ -824,8 +1118,8 @@ SetErrOnNull (const char *attrValue, ErrorDescriptor *error) /////////////////////////////////////////////////////////////////////////////// // return SEVERITY_NULL if attrValue has a valid entity reference // This function accepts an entity reference in two forms that is with or -// without the # Sign: e.g. either #23 or 23 will be read. -// If non-whitespace characters Follow the entity reference an error is set. +// without the # sign: e.g. either #23 or 23 will be read. +// If non-whitespace characters follow the entity reference an error is set. /////////////////////////////////////////////////////////////////////////////// Severity @@ -847,7 +1141,7 @@ EntityValidLevel(const char *attrValue, // string contain entity ref /* // the problem with doing this is that it will require having a # in front // of the entity ref. - STEPentity se = ReadEntityRef(attrValue, err, 0, im, 0); + SCLP23(Application_instance) se = ReadEntityRef(attrValue, err, 0, im, 0); return EntityValidLevel(se, ed, err); */ @@ -872,7 +1166,7 @@ EntityValidLevel(const char *attrValue, // string contain entity ref mn = im->FindFileId(fileId); if(mn) { - STEPentity *se = mn->GetSTEPentity(); + SCLP23(Application_instance) *se = mn->GetSTEPentity(); return EntityValidLevel(se, ed, err); } else { @@ -902,13 +1196,13 @@ EntityValidLevel(const char *attrValue, // string contain entity ref ** Procedure: NextAttribute ** Parameters: ** Returns: reference to an attribute pointer - ** Description: used to cycle through the List of attributes - ** Side Effects: increments the current position in the attribute List + ** Description: used to cycle through the list of attributes + ** Side Effects: increments the current position in the attribute list ** Status: untested 7/31/90 ******************************************************************/ STEPattribute * -STEPentity::NextAttribute () { +SCLP23(Application_instance)::NextAttribute () { int i = AttributeCount (); ++_cur; if (i < _cur) return 0; @@ -917,13 +1211,13 @@ STEPentity::NextAttribute () { } int -STEPentity::AttributeCount () { +SCLP23(Application_instance)::AttributeCount () { return attributes.list_length (); } #ifdef OBSOLETE Severity -STEPentity::ReadAttrs(int id, int addFileId, +SCLP23(Application_instance)::ReadAttrs(int id, int addFileId, class InstMgr * instance_set, G4std::istream& in) { char c ='\0'; diff --git a/source/geometry/solids/STEP/src/sdaiApplication_instance_set.cc b/source/geometry/solids/STEP/src/sdaiApplication_instance_set.cc new file mode 100644 index 0000000000..4dbd30220d --- /dev/null +++ b/source/geometry/solids/STEP/src/sdaiApplication_instance_set.cc @@ -0,0 +1,144 @@ +/* + * Copyright (c) 1990, 1991 Stanford University + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided + * that the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Stanford not be used in advertising or + * publicity pertaining to distribution of the software without specific, + * written prior permission. Stanford makes no representations about + * the suitability of this software for any purpose. It is provided "as is" + * without express or implied warranty. + * + * STANFORD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. + * IN NO EVENT SHALL STANFORD BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION + * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* + * UArray implementation. + */ + +//#include "/proj/pdevel/autoc/arch.sunCC.iv/scl_cf.h" +// This is an scl configuration file generated by the configure script +// generated using gnu's autoconf +#ifdef HAVE_CONFIG_H +#include +#endif + +//#include +#include + +#include +#include + +// to help ObjectCenter +#ifndef HAVE_MEMMOVE +extern "C" +{ +void * memmove(void *__s1, const void *__s2, size_t __n); +} +#endif + +/*****************************************************************************/ + +SCLP23(Application_instance__set)::SCLP23_NAME(Application_instance__set) (int defaultSize) { + _bufsize = defaultSize; + _buf = new SCLP23(Application_instance_ptr)[_bufsize]; + _count = 0; +} + +SCLP23(Application_instance__set)::~SCLP23_NAME(Application_instance__set) () { delete _buf; } + +void SCLP23(Application_instance__set)::Check (int index) { + SCLP23(Application_instance_ptr)* newbuf; + + if (index >= _bufsize) { + _bufsize = (index+1) * 2; + newbuf = new SCLP23(Application_instance_ptr)[_bufsize]; + memmove(newbuf, _buf, _count*sizeof(SCLP23(Application_instance_ptr))); + delete _buf; + _buf = newbuf; + } +} + +void SCLP23(Application_instance__set)::Insert (SCLP23(Application_instance_ptr) v, int index) { + SCLP23(Application_instance_ptr)* spot; + index = (index < 0) ? _count : index; + + if (index < _count) { + Check(_count+1); + spot = &_buf[index]; + memmove(spot+1, spot, (_count - index)*sizeof(SCLP23(Application_instance_ptr))); + + } else { + Check(index); + spot = &_buf[index]; + } + *spot = v; + ++_count; +} + +void SCLP23(Application_instance__set)::Append (SCLP23(Application_instance_ptr) v) { + int index = _count; + SCLP23(Application_instance_ptr)* spot; + + if (index < _count) { + Check(_count+1); + spot = &_buf[index]; + memmove(spot+1, spot, (_count - index)*sizeof(SCLP23(Application_instance_ptr))); + + } else { + Check(index); + spot = &_buf[index]; + } + *spot = v; + ++_count; +} + +void SCLP23(Application_instance__set)::Remove (int index) { + if (0 <= index && index < _count) { + --_count; + SCLP23(Application_instance_ptr)* spot = &_buf[index]; + memmove(spot, spot+1, (_count - index)*sizeof(SCLP23(Application_instance_ptr))); + } +} + +void SCLP23(Application_instance__set)::Remove (SCLP23(Application_instance_ptr) a) { + int index = Index(a); + if( !(index < 0) ) + Remove(index); +} + +int SCLP23(Application_instance__set)::Index (SCLP23(Application_instance_ptr) v) { + for (int i = 0; i < _count; ++i) { + if (_buf[i] == v) { + return i; + } + } + return -1; +} + +SCLP23(Application_instance_ptr)& SCLP23(Application_instance__set)::operator[] (int index) { + Check(index); +// _count = G4std::max(_count, index+1); + _count = ( (_count > index+1) ? _count : (index+1) ); + return _buf[index]; +} + +int +SCLP23(Application_instance__set)::Count() +{ + return _count; +} + +void +SCLP23(Application_instance__set)::Clear() +{ + _count = 0; +} diff --git a/source/geometry/solids/STEP/src/sdaiDaObject.cc b/source/geometry/solids/STEP/src/sdaiDaObject.cc new file mode 100644 index 0000000000..b0a44362a6 --- /dev/null +++ b/source/geometry/solids/STEP/src/sdaiDaObject.cc @@ -0,0 +1,336 @@ + +//#include "/proj/pdevel/autoc/arch.sunCC.iv/scl_cf.h" +// This is an scl configuration file generated by the configure script +// generated using gnu's autoconf +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include + +#ifdef __OSTORE__ +#include // Required to access ObjectStore Class Library +#endif + +#include + +// to help ObjectCenter +#ifndef HAVE_MEMMOVE +extern "C" +{ +void * memmove(void *__s1, const void *__s2, size_t __n); +} +#endif + +#ifdef __OSTORE__ +void force_vfts (void*){ + force_vfts(new os_Array); + force_vfts(new os_Bag); + force_vfts(new os_Collection); + force_vfts(new os_List); + force_vfts(new os_Set); +} +#endif + +SCLP23(PID)::SCLP23_NAME(PID)() +{ +} + +SCLP23(PID)::~SCLP23_NAME(PID)() +{ +} + +SCLP23(PID_DA)::SCLP23_NAME(PID_DA)() +{ +} + +SCLP23(PID_DA)::~SCLP23_NAME(PID_DA)() +{ +} + +SCLP23(PID_SDAI)::SCLP23_NAME(PID_SDAI)() +{ +} + +SCLP23(PID_SDAI)::~SCLP23_NAME(PID_SDAI)() +{ +} + +SCLP23(DAObject)::SCLP23_NAME(DAObject)() +{ +} + +SCLP23(DAObject)::~SCLP23_NAME(DAObject)() +{ +} + +#ifdef __OSTORE__ +void +SCLP23(DAObject)::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + G4cout << "****WARNING: virtual DAObject::Access_hook_in() called" << G4endl; + SCLP23(DAObject_ptr) ent = (SCLP23(DAObject_ptr))object; +/* + ent->Access_hook_in(object, reason, user_data, start_range, end_range); +*/ +} +#endif + +#ifdef PART26 +//SCLP26(Application_instance_ptr) +IDL_Application_instance_ptr +SCLP23(DAObject)::create_TIE() +{ + G4cout << "ERROR DAObject::create_TIE() called." << G4endl; + return 0; +} +#endif + +SCLP23(DAObject_SDAI)::SCLP23_NAME(DAObject_SDAI)() +{ +} + +/* +SCLP23(DAObject_SDAI)::SCLP23_NAME(DAObject_SDAI)(const DAObject_SDAI&) +{ +} +*/ + +SCLP23(DAObject_SDAI)::~SCLP23_NAME(DAObject_SDAI)() +{ +} + +#ifdef __OSTORE__ +void +SCLP23(DAObject_SDAI)::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + G4cout << "****WARNING: virtual DAObject_SDAI::Access_hook_in() called" << G4endl; + SCLP23(DAObject_SDAI_ptr) ent = (SCLP23(DAObject_SDAI_ptr))object; +/* + ent->Access_hook_in(object, reason, user_data, start_range, end_range); +*/ +} +#endif + +#ifdef PART26 +//SCLP26(Application_instance_ptr) +IDL_Application_instance_ptr +SCLP23(DAObject_SDAI)::create_TIE() +{ + G4cout << "ERROR DAObject_SDAI::create_TIE() called." << G4endl; + return 0; +} +#endif + +/* + * Copyright (c) 1990, 1991 Stanford University + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided + * that the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Stanford not be used in advertising or + * publicity pertaining to distribution of the software without specific, + * written prior permission. Stanford makes no representations about + * the suitability of this software for any purpose. It is provided "as is" + * without express or implied warranty. + * + * STANFORD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. + * IN NO EVENT SHALL STANFORD BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION + * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* + * UArray implementation. + */ + +/*****************************************************************************/ + +SCLP23(DAObject__set)::SCLP23_NAME(DAObject__set) (int defaultSize) +#ifdef __OSTORE__ +// : _rep(os_Collection::create(os_database::of(this)) ), + : _rep(os_List::create(os_database::of(this)) ), + _cursor(_rep), + _first(SCLBOOL(BTrue)) +{ +// _rep = os_Set::create(os_database::of(this)); +} +#else +{ + _bufsize = defaultSize; + _buf = new SCLP23(DAObject_ptr)[_bufsize]; + _count = 0; +} +#endif + +SCLP23(DAObject__set)::~SCLP23_NAME(DAObject__set) () +{ +#ifndef __OSTORE__ + delete _buf; +#endif +} + +void SCLP23(DAObject__set)::Check (int index) { + +#ifdef __OSTORE__ +#else + SCLP23(DAObject_ptr)* newbuf; + + if (index >= _bufsize) { + _bufsize = (index+1) * 2; + newbuf = new SCLP23(DAObject_ptr)[_bufsize]; + memmove(newbuf, _buf, _count*sizeof(SCLP23(DAObject_ptr))); + delete _buf; + _buf = newbuf; + } +#endif +} + +void +SCLP23(DAObject__set)::Insert (SCLP23(DAObject_ptr) v, int index) { + +#ifdef __OSTORE__ + _rep.insert_before( (SCLP23(DAObject_ptr)) v, index); +#else + SCLP23(DAObject_ptr)* spot; + index = (index < 0) ? _count : index; + + if (index < _count) { + Check(_count+1); + spot = &_buf[index]; + memmove(spot+1, spot, (_count - index)*sizeof(SCLP23(DAObject_ptr))); + + } else { + Check(index); + spot = &_buf[index]; + } + *spot = v; + ++_count; +#endif +} + +void SCLP23(DAObject__set)::Append (SCLP23(DAObject_ptr) v) { + +#ifdef __OSTORE__ + _rep.insert_last( (SCLP23(DAObject_ptr)) v); +#else + int index = _count; + SCLP23(DAObject_ptr)* spot; + + if (index < _count) { + Check(_count+1); + spot = &_buf[index]; + memmove(spot+1, spot, (_count - index)*sizeof(SCLP23(DAObject_ptr))); + + } else { + Check(index); + spot = &_buf[index]; + } + *spot = v; + ++_count; +#endif +} + +void SCLP23(DAObject__set)::Remove (int index) { + +#ifdef __OSTORE__ + _rep.remove_at( index ); +#else + if (0 <= index && index < _count) { + --_count; + SCLP23(DAObject_ptr)* spot = &_buf[index]; + memmove(spot, spot+1, (_count - index)*sizeof(SCLP23(DAObject_ptr))); + } +#endif +} + +#ifndef __OSTORE__ +int SCLP23(DAObject__set)::Index (SCLP23(DAObject_ptr) v) { + + for (int i = 0; i < _count; ++i) { + if (_buf[i] == v) { + return i; + } + } + return -1; +} +#endif + +SCLP23(DAObject_ptr) +SCLP23(DAObject__set)::retrieve(int index) +{ +#ifdef __OSTORE__ + return _rep.retrieve(index); +#else + return operator[](index); +#endif +} + +#ifndef __OSTORE__ +SCLP23(DAObject_ptr)& SCLP23(DAObject__set)::operator[] (int index) { + + Check(index); +// _count = G4std::max(_count, index+1); + _count = ( (_count > index+1) ? _count : (index+1) ); + return _buf[index]; +} +#endif + +int +SCLP23(DAObject__set)::Count() +{ +#ifdef __OSTORE__ + return _rep.cardinality(); +#else + return _count; +#endif +} + +int +SCLP23(DAObject__set)::is_empty() +{ +#ifdef __OSTORE__ + return _rep.empty(); +#else + return _count; +#endif +} + +#ifndef __OSTORE__ +void +SCLP23(DAObject__set)::Clear() +{ + _count = 0; +} +#endif + +#ifdef __OSTORE__ + +SCLP23(DAObject_ptr) +SCLP23(DAObject__set)::first() +{ + return _cursor.first(); +} + +SCLP23(DAObject_ptr) +SCLP23(DAObject__set)::next() +{ + return _cursor.next(); +} + +SCLP23(Integer) +SCLP23(DAObject__set)::more() +{ + return _cursor.more(); +} + +#endif diff --git a/source/geometry/solids/STEP/src/sdaiEntity_extent.cc b/source/geometry/solids/STEP/src/sdaiEntity_extent.cc new file mode 100644 index 0000000000..64ef5096d6 --- /dev/null +++ b/source/geometry/solids/STEP/src/sdaiEntity_extent.cc @@ -0,0 +1,138 @@ +///////// ENTITY entity_extent + +//#include + +#include + +SCLP23(Entity_extent)::SCLP23_NAME(Entity_extent)( ) +: _definition(0), _definition_name(0), _owned_by(0) +{ +/* + _definition = 0; + _definition_name = 0; + _owned_by = 0; +*/ +} + +/* +SCLP23(Entity_extent)::SCLP23_NAME(Entity_extent)(const SCLP23(Entity_extent)& ee) +{ +// { CopyAs((STEPentityH) &e); } + _definition = 0; + _owned_by = 0; +} +*/ + +SCLP23(Entity_extent)::~SCLP23_NAME(Entity_extent) () +{ + delete _definition_name; +} + +const Entity_ptr +SCLP23(Entity_extent)::definition_() const +{ + return _definition; +} + +/* +const SCLP23(Entity_name) +SCLP23(Entity_extent)::definition_name_() const +{ + return _definition_name; +} +*/ + +void +SCLP23(Entity_extent)::definition_(const Entity_ptr& ep) +{ + _definition = ep; +} + +void +SCLP23(Entity_extent)::definition_name_(const SCLP23(Entity_name)& en) +{ +#ifdef __OSTORE__ + _definition_name = new (os_database::of(this), os_typespec::get_char(), + strlen(en)+1) char[strlen(en)+1]; +#else + _definition_name = new char[strlen(en)+1]; +#endif + strncpy (_definition_name, en, strlen(en)+1); +} + +void +SCLP23(Entity_extent)::owned_by_(SCLP23_NAME(Model_contents__list_var)& mclv) +{ +// _owned_by = mcp; +} + +const SCLP23(Model_contents__list_var) +SCLP23(Entity_extent)::owned_by_() const +{ + // removed 'const' qualifier from return type since meaningless - GC + return (SCLP23(Model_contents__list_var)) &_owned_by; +} + +/* +SCLP23(DAObject__set_var) instances_() +{ + return &_instances; +} + +const +SCLP23(DAObject__set_var) instances_() const +{ + return (const SCLP23(DAObject__set_var))&_instances; +} +*/ + +/* + 7.3.3.1 SDAI operation declarations + + 7.3.3.1.1 AddInstance + Function: + The AddInstance function shall add the entity instance entity + handle to the instances set of the receiver. + + Possible error indicators: + sdaiSS_NOPN // Session not open + sdaiRP_NOPN // Repository not open + sdaiMO_NEXS // SDAI-model does not exist + sdaiMX_NRW // SDAI-model access not read-write + sdaiSY_ERR // Underlying system error + + Origin: Convenience function +*/ + +void +SCLP23(Entity_extent)::AddInstance(const SCLP23(DAObject_ptr)& appInst) +{ + _instances.Append(appInst); +} + +/* + 7.3.3.1.2 RemoveInstance + Function: + The RemoveInstance function shall remove the entity instance entity + handle from the instances set of the receiver. + + Possible error indicators: + sdaiSS_NOPN // Session not open + sdaiRP_NOPN // Repository not open + sdaiMO_NEXS // SDAI-model does not exist + sdaiMX_NRW // SDAI-model access not read-write + sdaiSY_ERR // Underlying system error + + Origin: Convenience function +*/ + + +#ifndef __OSTORE__ +void +SCLP23(Entity_extent)::RemoveInstance(const SCLP23(DAObject_ptr)& appInst) +{ + _instances.Remove( _instances.Index(appInst) ); +} +#endif + +///////// END_ENTITY SCLP23(Entity_extent) diff --git a/source/geometry/solids/STEP/src/sdaiEntity_extent_set.cc b/source/geometry/solids/STEP/src/sdaiEntity_extent_set.cc new file mode 100644 index 0000000000..9913ec7459 --- /dev/null +++ b/source/geometry/solids/STEP/src/sdaiEntity_extent_set.cc @@ -0,0 +1,327 @@ +/* + * Copyright (c) 1990, 1991 Stanford University + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided + * that the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Stanford not be used in advertising or + * publicity pertaining to distribution of the software without specific, + * written prior permission. Stanford makes no representations about + * the suitability of this software for any purpose. It is provided "as is" + * without express or implied warranty. + * + * STANFORD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. + * IN NO EVENT SHALL STANFORD BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION + * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* + * UArray implementation. + */ + +//#include "/proj/pdevel/autoc/arch.sunCC.iv/scl_cf.h" +// This is an scl configuration file generated by the configure script +// generated using gnu's autoconf +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include + +#include + +/* +#include +#include +*/ + +// to help ObjectCenter +#ifndef HAVE_MEMMOVE +extern "C" +{ +void * memmove(void *__s1, const void *__s2, size_t __n); +} +#endif + +/*****************************************************************************/ + +SCLP23(Entity_extent__set)::SCLP23_NAME(Entity_extent__set) (int defaultSize) +#ifdef __OSTORE__ +// : _rep(os_Collection::create(os_database::of(this)) ), + : _rep(os_List::create(os_database::of(this)) ), + _cursor(_rep), + _first(SCLBOOL(BTrue)) +{ +// _rep = os_Set::create(os_database::of(this)); +} +#else +{ + _bufsize = defaultSize; + _buf = new SCLP23(Entity_extent_ptr)[_bufsize]; + _count = 0; +} +#endif + +SCLP23(Entity_extent__set)::~SCLP23_NAME(Entity_extent__set) () +{ +#ifndef __OSTORE__ + delete _buf; +#endif +} + +void SCLP23(Entity_extent__set)::Check (int index) { + +#ifdef __OSTORE__ +#else + SCLP23(Entity_extent_ptr)* newbuf; + + if (index >= _bufsize) { + _bufsize = (index+1) * 2; + newbuf = new SCLP23(Entity_extent_ptr)[_bufsize]; + memmove(newbuf, _buf, _count*sizeof(SCLP23(Entity_extent_ptr))); + delete _buf; + _buf = newbuf; + } +#endif +} + +void +SCLP23(Entity_extent__set)::Insert (SCLP23(Entity_extent_ptr) v, int index) { + +#ifdef __OSTORE__ + _rep.insert_before( (SCLP23(Entity_extent_ptr)) v, index); +#else + SCLP23(Entity_extent_ptr)* spot; + index = (index < 0) ? _count : index; + + if (index < _count) { + Check(_count+1); + spot = &_buf[index]; + memmove(spot+1, spot, (_count - index)*sizeof(SCLP23(Entity_extent_ptr))); + + } else { + Check(index); + spot = &_buf[index]; + } + *spot = v; + ++_count; +#endif +} + +void SCLP23(Entity_extent__set)::Append (SCLP23(Entity_extent_ptr) v) { + +#ifdef __OSTORE__ + _rep.insert_last( (SCLP23(Entity_extent_ptr)) v); +#else + int index = _count; + SCLP23(Entity_extent_ptr)* spot; + + if (index < _count) { + Check(_count+1); + spot = &_buf[index]; + memmove(spot+1, spot, (_count - index)*sizeof(SCLP23(Entity_extent_ptr))); + + } else { + Check(index); + spot = &_buf[index]; + } + *spot = v; + ++_count; +#endif +} + +void SCLP23(Entity_extent__set)::Remove (int index) { + +#ifdef __OSTORE__ + _rep.remove_at( index ); +#else + if (0 <= index && index < _count) { + --_count; + SCLP23(Entity_extent_ptr)* spot = &_buf[index]; + memmove(spot, spot+1, (_count - index)*sizeof(SCLP23(Entity_extent_ptr))); + } +#endif +} + +#ifndef __OSTORE__ +int SCLP23(Entity_extent__set)::Index (SCLP23(Entity_extent_ptr) v) { + + for (int i = 0; i < _count; ++i) { + if (_buf[i] == v) { + return i; + } + } + return -1; +} +#endif + +SCLP23(Entity_extent_ptr) +SCLP23(Entity_extent__set)::retrieve(int index) +{ +#ifdef __OSTORE__ + return _rep.retrieve(index); +#else + return operator[](index); +#endif +} + +#ifndef __OSTORE__ +SCLP23(Entity_extent_ptr)& SCLP23(Entity_extent__set)::operator[] (int index) { + Check(index); +// _count = G4std::max(_count, index+1); + _count = ( (_count > index+1) ? _count : (index+1) ); + return _buf[index]; +} +#endif + +int +SCLP23(Entity_extent__set)::Count() +{ +#ifdef __OSTORE__ + return _rep.cardinality(); +#else + return _count; +#endif +} + +int +SCLP23(Entity_extent__set)::is_empty() +{ +#ifdef __OSTORE__ + return _rep.empty(); +#else + return _count; +#endif +} + +#ifndef __OSTORE__ +void +SCLP23(Entity_extent__set)::Clear() +{ + _count = 0; +} +#endif + +#ifdef __OSTORE__ + +SCLP23(Entity_extent_ptr) +SCLP23(Entity_extent__set)::first() +{ + return _cursor.first(); +} + +SCLP23(Entity_extent_ptr) +SCLP23(Entity_extent__set)::next() +{ + return _cursor.next(); +} + +SCLP23(Integer) +SCLP23(Entity_extent__set)::more() +{ + return _cursor.more(); +} + +#endif + +/*****************************************************************************/ + + +#if 0 +Entity_extent__set::Entity_extent__set (int defaultSize) { + _bufsize = defaultSize; + _buf = new Entity_extent_ptr[_bufsize]; + _count = 0; +} + +Entity_extent__set::~Entity_extent__set () { delete _buf; } + +void Entity_extent__set::Check (int index) { + Entity_extent_ptr* newbuf; + + if (index >= _bufsize) { + _bufsize = (index+1) * 2; + newbuf = new Entity_extent_ptr[_bufsize]; + memmove(newbuf, _buf, _count*sizeof(Entity_extent_ptr)); + delete _buf; + _buf = newbuf; + } +} + +void Entity_extent__set::Insert (Entity_extent_ptr v, int index) { + Entity_extent_ptr* spot; + index = (index < 0) ? _count : index; + + if (index < _count) { + Check(_count+1); + spot = &_buf[index]; + memmove(spot+1, spot, (_count - index)*sizeof(Entity_extent_ptr)); + + } else { + Check(index); + spot = &_buf[index]; + } + *spot = v; + ++_count; +} + +void Entity_extent__set::Append (Entity_extent_ptr v) { + int index = _count; + Entity_extent_ptr* spot; + + if (index < _count) { + Check(_count+1); + spot = &_buf[index]; + memmove(spot+1, spot, (_count - index)*sizeof(Entity_extent_ptr)); + + } else { + Check(index); + spot = &_buf[index]; + } + *spot = v; + ++_count; +} + +void Entity_extent__set::Remove (int index) { + if (0 <= index && index < _count) { + --_count; + Entity_extent_ptr* spot = &_buf[index]; + memmove(spot, spot+1, (_count - index)*sizeof(Entity_extent_ptr)); + } +} + +int Entity_extent__set::Index (Entity_extent_ptr v) { + for (int i = 0; i < _count; ++i) { + if (_buf[i] == v) { + return i; + } + } + return -1; +} + +Entity_extent_ptr& Entity_extent__set::operator[] (int index) { + Check(index); +// _count = G4std::max(_count, index+1); + _count = ( (_count > index+1) ? _count : (index+1) ); + return _buf[index]; +} + +int +Entity_extent__set::Count() +{ + return _count; +} + +void +Entity_extent__set::Clear() +{ + _count = 0; +} + +#endif diff --git a/source/geometry/solids/STEP/src/Enumeration.cc b/source/geometry/solids/STEP/src/sdaiEnum.cc similarity index 51% rename from source/geometry/solids/STEP/src/Enumeration.cc rename to source/geometry/solids/STEP/src/sdaiEnum.cc index c7e259b802..a03d0a43ae 100644 --- a/source/geometry/solids/STEP/src/Enumeration.cc +++ b/source/geometry/solids/STEP/src/sdaiEnum.cc @@ -1,20 +1,13 @@ +//#include +//#include -// - - - -// -// $Id: Enumeration.cc,v 1.3 1999/12/15 14:50:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - -#include +#include /* * NIST STEP Core Class Library * clstepcore/Enumeration.cc -* May 1995 +* April 1997 * K. C. Morris * David Sauder @@ -22,81 +15,521 @@ * and is not subject to copyright. */ -/* */ +/* $Id: sdaiEnum.cc,v 1.1 2000/01/21 13:43:17 gcosmo Exp $ */ -//static char rcsid[] =""; +//static char rcsid[] ="$Id: sdaiEnum.cc,v 1.1 2000/01/21 13:43:17 gcosmo Exp $"; #include "g4std/strstream" +//#ifndef SCLP23(TRUE) +//#ifndef SCLP23(FALSE) // Josh L, 3/31/95 // These constants have to be initialized outside the SDAI struct. They // are initialized here instead of in the header file in order to avoid -// mulitple inclusions when building SCL applications. -const Logical SDAI::UNKNOWN = sdaiUNKNOWN; -const Boolean SDAI::SdaiTRUE = sdaiTRUE; -const Boolean SDAI::SdaiFALSE = sdaiFALSE; +// multiple inclusions when building SCL applications. +/* +const SCLP23(BOOL) SCLP23(TRUE)( SCLBOOL(BTrue) ); +const SCLP23(BOOL) SCLP23(FALSE)( SCLBOOL(BFalse) ); +const SCLP23(BOOL) SCLP23(UNSET)( SCLBOOL(BUnset) ); +const SCLP23(LOGICAL) SCLP23(UNKNOWN)( SCLLOG(LUnknown) ); +*/ +//#endif +//#endif + /////////////////////////////////////////////////////////////////////////////// // class Logical /////////////////////////////////////////////////////////////////////////////// -Logical::operator LOGICAL () const { - switch (v) { - case sdaiUNKNOWN: return sdaiUNKNOWN; - case sdaiFALSE: return sdaiFALSE; - case sdaiTRUE: return sdaiTRUE; - default: return sdaiUNKNOWN; -}} +#ifdef __OSTORE__ +SCLP23(LOGICAL) * create_LOGICAL(os_database *db) +{ + return new (db, SCLP23(LOGICAL)::get_os_typespec()) SCLP23(LOGICAL); +} +#endif + +SCLP23(LOGICAL)::SCLP23_NAME(LOGICAL) (char * val) +{ + set_value (val); +} + +SCLP23(LOGICAL)::SCLP23_NAME(LOGICAL) (SCLLOG(Logical) state) +{ + set_value (state); +} + +SCLP23(LOGICAL)::SCLP23_NAME(LOGICAL) (const SCLP23(LOGICAL)& source) +{ + set_value (source.asInt()); +} + +SCLP23(LOGICAL)::SCLP23_NAME(LOGICAL) (int i) +{ + if (i == 0) + v = SCLLOG(LFalse) ; + else + v = SCLLOG(LTrue) ; +} + +/* +SCLP23(LOGICAL)::SCLP23_NAME(LOGICAL) (const BOOL& boo) +{ + v = boo.asInt(); +} +*/ + +SCLP23(LOGICAL)::~SCLP23_NAME(LOGICAL) () +{ +} + +#ifdef __OSTORE__ +void +SCLP23(LOGICAL)::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + G4cout << "ObjectStore called LOGICAL::Access_hook_in()" + << G4endl; +} +#endif const char * -Logical::element_at (int n) const { +SCLP23(LOGICAL)::Name() const +{ + return "Logical"; +} + +int +SCLP23(LOGICAL)::no_elements () const +{ + return 3; +} + +const char * +SCLP23(LOGICAL)::element_at (int n) const +{ switch (n) { - case sdaiUNKNOWN: return "U"; - case sdaiFALSE: return "F"; - case sdaiTRUE: return "T"; - default: return ""; + case SCLLOG(LUnknown) : return "U"; + case SCLLOG(LFalse) : return "F"; + case SCLLOG(LTrue) : return "T"; + default: return "UNSET"; } } +int +SCLP23(LOGICAL)::exists() const // return 0 if unset otherwise return 1 +{ + return !(v == 2); +} + +void +SCLP23(LOGICAL)::nullify() // change the receiver to an unset status +{ + v = 2; +} + +#if 0 + +SCLP23(LOGICAL)::operator int () const { + // anything other than BFalse should return 1 according to Part 23 + if (v == SCLLOG(LFalse) ) return 0; + //#endif + else return 1; +/* + switch (v) { + case LFalse: return 0; + case LTrue: return 1; + + case LUnknown: + case LUnset: // BUnset or anything other than t or f should set error + // sdaiVA_NSET i.e. value unset + default: return 1; +} +*/ +} + +#endif + +SCLP23(LOGICAL)::operator SCLLOG(Logical) () const { + switch (v) { + case SCLLOG(LFalse) : return SCLLOG(LFalse) ; + case SCLLOG(LTrue) : return SCLLOG(LTrue) ; + case SCLLOG(LUnknown) : return SCLLOG(LUnknown) ; + case SCLLOG(LUnset) : + default: return SCLLOG(LUnset) ; +}} + + + +SCLP23(LOGICAL)& +SCLP23(LOGICAL)::operator= (const SCLP23(LOGICAL)& t) +{ + set_value (t.asInt()); + return *this; +} + +SCLP23(LOGICAL) SCLP23(LOGICAL)::operator ==( const SCLP23(LOGICAL)& t ) const +{ + if( v == t.asInt() ) + return SCLLOG(LTrue) ; + return SCLLOG(LFalse) ; +} + +int +SCLP23(LOGICAL)::set_value (const int i) { + if (i > no_elements() + 1) { + v = 2; + return v; + } + const char *tmp = element_at( i ); + if ( tmp[0] != '\0' ) return (v =i); + // otherwise + G4cerr << "(OLD Warning:) invalid enumeration value " << i + << " for " << Name () << "\n"; + DebugDisplay (); + return no_elements() + 1 ; +// return ENUM_NULL ; + +} + +int +SCLP23(LOGICAL)::set_value (const char * n) { + // assigns the appropriate value based on n +// if ( !n || (!strcmp (n, "")) ) return set_value (ENUM_NULL); + if ( !n || (!strcmp (n, "")) ) { nullify(); return asInt(); } + + int i =0; + SCLstring tmp; + while ((i < (no_elements() + 1)) && + (strcmp ( (char *)StrToUpper( n, tmp ), element_at (i)) != 0 ) ) + ++i; + if ( (no_elements() + 1) == i) // exhausted all the possible values + { + nullify(); + return v; +// return set_value (ENUM_NULL); + } + v = i; + return v; + +} + + +Severity +SCLP23(LOGICAL)::ReadEnum(G4std::istream& in, ErrorDescriptor *err, int AssignVal, + int needDelims) +{ + if(AssignVal) + set_null(); + + SCLstring str; + char c; + char messageBuf[512]; + messageBuf[0] = '\0'; + + int validDelimiters = 1; + + in >> G4std::ws; // skip white space + + if( in.good() ) + { + in.get(c); + if( c == '.' || isalpha(c)) + { + if( c == '.' ) + { + in.get(c); // push past the delimiter + // since found a valid delimiter it is now invalid until the + // matching ending delim is found + validDelimiters = 0; + } + + // look for UPPER + if( in.good() && ( isalpha(c) || c == '_' ) ) + { + str.Append(c); + in.get(c); + } + + // look for UPPER or DIGIT + while( in.good() && ( isalnum(c) || c == '_' ) ) + { + str.Append(c); + in.get(c); + } + // if character is not the delimiter unread it + if(in.good() && (c != '.') ) + in.putback(c); + + // a value was read + if(str.Length() > 0) + { + int i =0; + const char *strval = str.chars(); + SCLstring tmp; + while( (i < (no_elements()+1)) && + (strcmp( (char *)StrToUpper( strval, tmp ), + element_at (i) ) != 0) ) + ++i; + if ( (no_elements()+1) == i) + { // exhausted all the possible values + err->GreaterSeverity(SEVERITY_WARNING); + err->AppendToDetailMsg("Invalid Enumeration value.\n"); + err->AppendToUserMsg("Invalid Enumeration value.\n"); + } + else + { + if(AssignVal) + v = i; + } + + // now also check the delimiter situation + if(c == '.') // if found ending delimiter + { + // if expecting delim (i.e. validDelimiter == 0) + if(!validDelimiters) + { + validDelimiters = 1; // everything is fine + } + else // found ending delimiter but no initial delimiter + { + validDelimiters = 0; + } + } + // didn't find any delimiters at all and need them. + else if(needDelims) + { + validDelimiters = 0; + } + + if (!validDelimiters) + { + err->GreaterSeverity(SEVERITY_WARNING); + if(needDelims) + sprintf(messageBuf, + "Enumerated value has invalid period delimiters.\n"); + else + sprintf(messageBuf, + "Mismatched period delimiters for enumeration.\n"); + err->AppendToDetailMsg(messageBuf); + err->AppendToUserMsg(messageBuf); + } + return err->severity(); + } + // found valid or invalid delimiters with no associated value + else if( (c == '.') || !validDelimiters) + { + err->GreaterSeverity(SEVERITY_WARNING); + err->AppendToDetailMsg( + "Enumerated has valid or invalid period delimiters with no value.\n" + ); + err->AppendToUserMsg( + "Enumerated has valid or invalid period delimiters with no value.\n" + ); + return err->severity(); + } + else // no delims and no value + err->GreaterSeverity(SEVERITY_INCOMPLETE); + + } + else if( (c == ',') || (c == ')') ) + { + in.putback(c); + err->GreaterSeverity(SEVERITY_INCOMPLETE); + } + else + { + in.putback(c); + err->GreaterSeverity(SEVERITY_WARNING); + sprintf(messageBuf, "Invalid enumeration value.\n"); + err->AppendToDetailMsg(messageBuf); + err->AppendToUserMsg(messageBuf); + } + } + else // hit eof (assuming there was no error state for G4std::istream passed in) + { + err->GreaterSeverity(SEVERITY_INCOMPLETE); + } + return err->severity(); +} + /////////////////////////////////////////////////////////////////////////////// -// class Boolean 29-Sep-1994 +// class BOOL Jan 97 /////////////////////////////////////////////////////////////////////////////// -Boolean::Boolean (LOGICAL val) { - if (val == sdaiUNKNOWN) return; +#ifdef __OSTORE__ +SCLP23(BOOL) * +create_BOOL(os_database *db) +{ + return new (db, SCLP23(BOOL)::get_os_typespec()) SCLP23(BOOL); +} +#endif + +const char * +SCLP23(BOOL)::Name() const +{ + return "Bool"; +} + +SCLP23(BOOL)::SCLP23_NAME(BOOL) (char * val) +{ + set_value (val); +} + +SCLP23(BOOL)::SCLP23_NAME(BOOL) (SCLBOOL(Bool) state) +{ + set_value (state); +} + +SCLP23(BOOL)::SCLP23_NAME(BOOL) (const SCLP23_NAME(BOOL)& source) +{ + set_value (source.asInt()); +} + +SCLP23(BOOL)::~SCLP23_NAME(BOOL)() +{ +} + +int +SCLP23(BOOL)::no_elements () const +{ + return 2; +} + +SCLP23(BOOL)::SCLP23_NAME(BOOL) (int i) +{ + if (i == 0) + v = SCLBOOL(BFalse) ; + else + v = SCLBOOL(BTrue) ; +} + +SCLP23(BOOL)::SCLP23_NAME(BOOL) (const SCLP23(LOGICAL)& val) { + if (val.asInt() == SCLLOG(LUnknown)) + { // this should set error code sdaiVT_NVLD i.e. Invalid value type. + v = SCLBOOL(BUnset); return; + } set_value (val); } -Boolean::operator LOGICAL () const { +#ifdef __OSTORE__ +void +SCLP23(BOOL)::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + G4cout << "ObjectStore called BOOL::Access_hook_in()" + << G4endl; +} +#endif + +SCLP23(BOOL)::operator SCLBOOL(Bool) () const { switch (v) { - case sdaiFALSE: return sdaiFALSE; - case sdaiTRUE: return sdaiTRUE; - default: return sdaiUNKNOWN; + case SCLBOOL(BFalse) : return SCLBOOL(BFalse) ; + case SCLBOOL(BTrue) : return SCLBOOL(BTrue) ; + case SCLBOOL(BUnset) : + default: return SCLBOOL(BUnset) ; }} +SCLP23(BOOL)& +SCLP23(BOOL)::operator= (const SCLP23(LOGICAL)& t) +{ + set_value (t.asInt()); + return *this; +} + +SCLP23(BOOL)& +SCLP23(BOOL)::operator= (const SCLBOOL(Bool) t) +{ + v = t; + return *this; +} + +#if 0 + +SCLP23(BOOL)::operator int () const { + // anything other than BFalse should return 1 according to Part 23 + switch (v) { + case SCLBOOL(BFalse) : return 0; + case SCLBOOL(BTrue) : return 1; + case SCLBOOL(BUnset) : // BUnset or anything other than t or f should set + // error sdaiVA_NSET i.e. value unset + default: return 1; +}} + +SCLP23(BOOL)::operator SCLLOG(Logical) () const { + switch (v) { + case SCLBOOL(BFalse) : return SCLLOG(LFalse) ; + case SCLBOOL(BTrue) : return SCLLOG(LTrue) ; + case SCLBOOL(BUnset) : return SCLLOG(LUnset) ; + default: return SCLLOG(LUnknown) ; +}} + +#endif + const char * -Boolean::element_at (int n) const { +SCLP23(BOOL)::element_at (int n) const { switch (n) { - case sdaiFALSE: return "F"; - case sdaiTRUE: return "T"; - default: return ""; + case SCLBOOL(BFalse) : return "F"; + case SCLBOOL(BTrue) : return "T"; + default: return "UNSET"; } } -Boolean::operator int () const { - if (v == sdaiFALSE) return 0; - else return 1; -} - -int Boolean::operator ==( LOGICAL log ) const +SCLP23(LOGICAL) SCLP23(BOOL)::operator ==( const SCLP23(LOGICAL)& t ) const { - if( v == log ) - return 1; - return 0; + if( v == t.asInt() ) + return SCLLOG(LTrue) ; + return SCLLOG(LFalse) ; } /////////////////////////////////////////////////////////////////////////////// +SCLP23(Enum)::SCLP23_NAME(Enum)() +{ + v = 0; +} + +SCLP23(Enum)::~SCLP23_NAME(Enum)() +{ +} + +#ifdef __OSTORE__ +void +SCLP23(Enum)::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + G4cout << "ObjectStore called Enum::Access_hook_in()" + << G4endl; +} +#endif + +int +SCLP23(Enum)::put(int val) +{ + return set_value (val); +} + +int +SCLP23(Enum)::put(const char * n) +{ + return set_value (n); +} + +int +SCLP23(Enum)::exists() const // return 0 if unset otherwise return 1 +{ + return ! (v > no_elements()); +} + +void +SCLP23(Enum)::nullify() // change the receiver to an unset status + // unset is generated to be 1 greater than last element +{ + set_value (no_elements()+1); +} + /****************************************************************** ** Procedure: DebugDisplay ** Parameters: G4std::ostream& out @@ -107,20 +540,24 @@ int Boolean::operator ==( LOGICAL log ) const ** Status: ok 2/1/91 ******************************************************************/ void -STEPenumeration::DebugDisplay (G4std::ostream& out) const { +SCLP23(Enum)::DebugDisplay (G4std::ostream& out) const +{ SCLstring tmp; - out << "Value : " << v << " " - << asStr (tmp) - << ": for type " << Name () << "\n"; - out << "valid values are "; - int i =0; - while (element_at (i)) - { - out << element_at (i++) << " "; - } + out << "Current " << Name() << " value: " << G4endl + << " cardinal: " << v << G4endl + << " string: " << asStr(tmp) << G4endl + << " Part 21 file format: "; STEPwrite (out); + out << G4endl; + + out << "Valid values are: " << G4endl; + int i =0; + while (i < (no_elements() + 1)) + { + out << i << " " << element_at (i) << G4endl; + i++; + } out << "\n"; - } // Read an Enumeration value @@ -129,7 +566,7 @@ STEPenumeration::DebugDisplay (G4std::ostream& out) const { // returns: Severity of the error. // error message and error Severity is written to ErrorDescriptor *err. // int AssignVal is: -// true => value is assigned to the STEPenumeration; +// true => value is assigned to the SCLP23(Enum); // true or false => value is read and appropriate error info is set and // returned. // int needDelims is: @@ -138,7 +575,7 @@ STEPenumeration::DebugDisplay (G4std::ostream& out) const { // true or false => non-matching delimiters are flagged as an error Severity -STEPenumeration::ReadEnum(G4std::istream& in, ErrorDescriptor *err, int AssignVal, +SCLP23(Enum)::ReadEnum(G4std::istream& in, ErrorDescriptor *err, int AssignVal, int needDelims) { if(AssignVal) @@ -268,7 +705,7 @@ STEPenumeration::ReadEnum(G4std::istream& in, ErrorDescriptor *err, int AssignVa err->AppendToUserMsg(messageBuf); } } - else // Hit eof (assuming there was no error state for G4std::istream passed in) + else // hit eof (assuming there was no error state for G4std::istream passed in) { err->GreaterSeverity(SEVERITY_INCOMPLETE); } @@ -277,7 +714,7 @@ STEPenumeration::ReadEnum(G4std::istream& in, ErrorDescriptor *err, int AssignVa /* Severity -STEPenumeration::StrToVal (const char * s) +SCLP23(Enum)::StrToVal (const char * s) { put (s); return SEVERITY_NULL; @@ -285,7 +722,7 @@ STEPenumeration::StrToVal (const char * s) */ Severity -STEPenumeration::StrToVal (const char * s, ErrorDescriptor *err, int optional) +SCLP23(Enum)::StrToVal (const char * s, ErrorDescriptor *err, int optional) { G4std::istrstream in ((char *)s); // sz defaults to length of s @@ -298,7 +735,7 @@ STEPenumeration::StrToVal (const char * s, ErrorDescriptor *err, int optional) // reads an enumerated value in STEP file format Severity -STEPenumeration::STEPread (const char *s, ErrorDescriptor *err, int optional) +SCLP23(Enum)::STEPread (const char *s, ErrorDescriptor *err, int optional) { G4std::istrstream in((char *)s); return STEPread (in, err, optional); @@ -306,7 +743,7 @@ STEPenumeration::STEPread (const char *s, ErrorDescriptor *err, int optional) // reads an enumerated value in STEP file format Severity -STEPenumeration::STEPread (G4std::istream& in, ErrorDescriptor *err, int optional) +SCLP23(Enum)::STEPread (G4std::istream& in, ErrorDescriptor *err, int optional) { Severity sev = ReadEnum(in, err, 1, 1); if( (err->severity() == SEVERITY_INCOMPLETE) && optional) @@ -317,8 +754,9 @@ STEPenumeration::STEPread (G4std::istream& in, ErrorDescriptor *err, int optiona const char * -STEPenumeration::asStr (SCLstring &s) const { - if (v != ENUM_NULL) +SCLP23(Enum)::asStr (SCLstring &s) const { +// if (v != ENUM_NULL) + if (exists()) { // s = elements[v]; return s = element_at (v); @@ -328,7 +766,7 @@ STEPenumeration::asStr (SCLstring &s) const { } void -STEPenumeration::STEPwrite (G4std::ostream& out) const { +SCLP23(Enum)::STEPwrite (G4std::ostream& out) const { if( is_null() ) out << '$'; else @@ -339,7 +777,7 @@ STEPenumeration::STEPwrite (G4std::ostream& out) const { } const char * -STEPenumeration::STEPwrite (SCLstring &s) const +SCLP23(Enum)::STEPwrite (SCLstring &s) const { if( is_null() ) { @@ -355,7 +793,7 @@ STEPenumeration::STEPwrite (SCLstring &s) const return s.chars(); } -//STEPenumeration::STEPenumeration (const char * const e) +//SCLP23(Enum)::SCLP23_NAME(Enum) (const char * const e) //: elements (e) //{ //} @@ -370,12 +808,12 @@ STEPenumeration::STEPwrite (SCLstring &s) const ******************************************************************/ #ifdef OBSOLETE void -STEPenumeration::set_elements (const char * const e []) { +SCLP23(Enum)::set_elements (const char * const e []) { elements = e; } #endif Severity -STEPenumeration::EnumValidLevel(G4std::istream &in, ErrorDescriptor *err, +SCLP23(Enum)::EnumValidLevel(G4std::istream &in, ErrorDescriptor *err, int optional, char *tokenList, int needDelims, int clearError) { @@ -415,7 +853,7 @@ STEPenumeration::EnumValidLevel(G4std::istream &in, ErrorDescriptor *err, } Severity -STEPenumeration::EnumValidLevel(const char *value, ErrorDescriptor *err, +SCLP23(Enum)::EnumValidLevel(const char *value, ErrorDescriptor *err, int optional, char *tokenList, int needDelims, int clearError) { @@ -499,9 +937,10 @@ STEPenumeration::EnumValidLevel(const char *value, ErrorDescriptor *err, ** Status: ok 2.91 ******************************************************************/ int -STEPenumeration::set_value (const char * n) { +SCLP23(Enum)::set_value (const char * n) { // assigns the appropriate value based on n - if ( !n || (!strcmp (n, "")) ) return set_value (ENUM_NULL); +// if ( !n || (!strcmp (n, "")) ) return set_value (ENUM_NULL); + if ( !n || (!strcmp (n, "")) ) { nullify(); return asInt(); } int i =0; SCLstring tmp; @@ -509,7 +948,8 @@ STEPenumeration::set_value (const char * n) { (strcmp ( (char *)StrToUpper( n, tmp ), element_at (i)) != 0 ) ) ++i; if ( no_elements () == i) { // exhausted all the possible values - return set_value (ENUM_NULL); + return v = no_elements() + 1; // defined as UNSET +// return set_value (ENUM_NULL); } v = i; return v; @@ -518,36 +958,43 @@ STEPenumeration::set_value (const char * n) { // set_value is the same function as put int -STEPenumeration::set_value (const int i) { +SCLP23(Enum)::set_value (const int i) { +/* if (i == ENUM_NULL) { v = ENUM_NULL; return ENUM_NULL; } +*/ + if (i > no_elements()) { + v = no_elements() + 1; + return v; + } const char *tmp = element_at( i ); if ( tmp[0] != '\0' ) return (v =i); // otherwise G4cerr << "(OLD Warning:) invalid enumeration value " << i << " for " << Name () << "\n"; DebugDisplay (); - return ENUM_NULL ; + return no_elements() + 1 ; +// return ENUM_NULL ; } -STEPenumeration& -STEPenumeration::operator= (const int i) +SCLP23(Enum)& +SCLP23(Enum)::operator= (const int i) { put (i); return *this; } -STEPenumeration& -STEPenumeration::operator= (const STEPenumeration& Senum) +SCLP23(Enum)& +SCLP23(Enum)::operator= (const SCLP23(Enum)& Senum) { put (Senum.asInt()); return *this; } -G4std::ostream &operator<< ( G4std::ostream& out, const STEPenumeration& a ) +G4std::ostream &operator<< ( G4std::ostream& out, const SCLP23(Enum)& a ) { SCLstring tmp; out << a.asStr( tmp ); @@ -559,7 +1006,7 @@ G4std::ostream &operator<< ( G4std::ostream& out, const STEPenumeration& a ) #ifdef pojoldStrToValNstepRead Severity -STEPenumeration::StrToVal (const char * s, ErrorDescriptor *err, int optional) +SCLP23(Enum)::StrToVal (const char * s, ErrorDescriptor *err, int optional) { const char *sPtr = s; while(isspace(*sPtr)) sPtr++; @@ -624,7 +1071,7 @@ STEPenumeration::StrToVal (const char * s, ErrorDescriptor *err, int optional) Severity -STEPenumeration::STEPread (G4std::istream& in, ErrorDescriptor *err, int optional) +SCLP23(Enum)::STEPread (G4std::istream& in, ErrorDescriptor *err, int optional) { char enumValue [BUFSIZ]; char c; @@ -636,12 +1083,12 @@ STEPenumeration::STEPread (G4std::istream& in, ErrorDescriptor *err, int optiona switch (c) { case '.': - in.getline (enumValue, BUFSIZ, '.');// reads but does not Store the . + in.getline (enumValue, BUFSIZ, '.');// reads but does not store the . /* - // gcc 2.3.3 - It does and should read the . It doesn't Store it DAS 4/27/93 + // gcc 2.3.3 - It does and should read the . It doesn't store it DAS 4/27/93 char * pos = index(enumValue, '.'); if (pos) *pos = '\0'; - // NON-STANDARD (GNUism) getline should not Retrieve . + // NON-STANDARD (GNUism) getline should not retrieve . // function gcount is unavailable */ if(in.fail()) @@ -677,7 +1124,7 @@ STEPenumeration::STEPread (G4std::istream& in, ErrorDescriptor *err, int optiona // read didn't know what to do err->GreaterSeverity(SEVERITY_INPUT_ERROR); sprintf(errStr, - "STEPenumeration::STEPread(): warning : poorly delimited %s %s", + "SCLP23(Enum)::STEPread(): warning : poorly delimited %s %s", Name(), "enumerated value was ignored."); err->AppendToDetailMsg(errStr); */ @@ -686,3 +1133,4 @@ STEPenumeration::STEPread (G4std::istream& in, ErrorDescriptor *err, int optiona } #endif + diff --git a/source/geometry/solids/STEP/src/sdaiModel_contents.cc b/source/geometry/solids/STEP/src/sdaiModel_contents.cc new file mode 100644 index 0000000000..1194704aa6 --- /dev/null +++ b/source/geometry/solids/STEP/src/sdaiModel_contents.cc @@ -0,0 +1,161 @@ + +#include + +///////// SCLP23(Model_contents_instances) + +SCLP23(Model_contents_instances)::SCLP23_NAME(Model_contents_instances)( ) +{ +} + +/* +SCLP23(Model_contents_instances)::SCLP23_NAME(Model_contents_instances) (const SCLP23(Model_contents_instances)& e ) +{ +} +*/ + +SCLP23(Model_contents_instances)::~SCLP23_NAME(Model_contents_instances)() +{ +} + +///////// SCLP23(Model_contents) + +SCLP23(Model_contents)::SCLP23_NAME(Model_contents)( ) +{ +} + +/* +SCLP23(Model_contents)::SCLP23_NAME(Model_contents) (const SCLP23(Model_contents)& e ) +{ +// CopyAs((STEPentityH) &e); +} +*/ + +SCLP23(Model_contents)::~SCLP23_NAME(Model_contents)() +{ +} + +// const Entity_instance__set_var instances() const; + //const SDAIAGGRH(Set, EntityInstanceH) Instances() const; +SCLP23(Model_contents_instances_ptr) +SCLP23(Model_contents)::instances_() +{ + return &_instances; +} + +const SCLP23(Model_contents_instances_ptr) +SCLP23(Model_contents)::instances_() const +{ + // removed 'const' qualifier from return type since meaningless - GC + return (SCLP23(Model_contents_instances_ptr)) &_instances; +} + +SCLP23(Entity_extent__set_var) +SCLP23(Model_contents)::folders_() +{ + return &_folders; +} + +const SCLP23(Entity_extent__set_var) +SCLP23(Model_contents)::folders_() const +{ + // removed 'const' qualifier from return type since meaningless - GC + return (SCLP23(Entity_extent__set_var))&_folders; +} + +SCLP23(Entity_extent__set_var) +SCLP23(Model_contents)::populated_folders_() +{ + return &_populated_folders; +} + +const SCLP23(Entity_extent__set_var) +SCLP23(Model_contents)::populated_folders_() const +{ + // removed 'const' qualifier from return type since meaningless - GC + return (SCLP23(Entity_extent__set_var))&_populated_folders; +} + +SCLP23(PID_DA_ptr) +SCLP23(Model_contents)::get_object_pid(const SCLP23(DAObject_ptr &d)) + const +{ + return 0; +} + +SCLP23(DAObject_ptr) +SCLP23(Model_contents)::lookup(const SCLP23(PID_DA_ptr &p)) const +{ + return 0; +} + +SCLP23(DAObject_ptr) +SCLP23(Model_contents)::CreateEntityInstance(const char * Type) +{ + return 0; +} + +void +SCLP23(Model_contents)::AddInstance(const SCLP23(DAObject_SDAI_ptr)& appInst) +{ + _instances.contents_()->Append(appInst); +} + +#ifndef __OSTORE__ +void +SCLP23(Model_contents)::RemoveInstance(SCLP23(DAObject_SDAI_ptr)& appInst) +{ + _instances.contents_()->Remove(_instances.contents_()->Index(appInst)); +} +#endif + + +#ifdef SDAI_CPP_LATE_BINDING +#if 0 // for now + +Any_var +SCLP23(Model_contents)::GetEntity_extent(const String_var& entityName) +{ +} + +const Any_var +SCLP23(Model_contents)::GetEntity_extent(const String_var& entityName) const +{ +} + +Any_var +SCLP23(Model_contents)::GetEntity_extent(const Entity_ptr& ep) +{ +} + +const Any_var +SCLP23(Model_contents)::GetEntity_extent(const Entity_ptr& ep) const +{ +} + +#endif + /* Function: + The GetEntity_extent function shall retrieve an entity folder from + the folders attribute within the contents attribute of the receiver. + This folder shall contain all of the instances of a particular type + and its subtypes within the model. The type may be specified + indirectly by the entityName parameter or directly by the entity. + Subsequent access to the returned aggregate shall be restricted to + read-only functionality. + + Output: + This function shall return an aggregate handle used as an argument + for subsequent SDAI function calls. Otherwise, this function shall + return a null handle. + + Possible error indicators: + sdaiSS_NOPN // Session not open + sdaiRP_NOPN // Repository not open + sdaiMO_NEXS // SDAI-model does not exist + sdaiED_NDEF // Entity definition unknown in this model + sdaiSY_ERR // Underlying system error + + Origin: Convenience function + */ + +#endif +//////// END SCLP23(Model_contents) diff --git a/source/geometry/solids/STEP/src/sdaiModel_contents_list.cc b/source/geometry/solids/STEP/src/sdaiModel_contents_list.cc new file mode 100644 index 0000000000..48d21ca1b8 --- /dev/null +++ b/source/geometry/solids/STEP/src/sdaiModel_contents_list.cc @@ -0,0 +1,225 @@ +/* + * Copyright (c) 1990, 1991 Stanford University + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided + * that the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Stanford not be used in advertising or + * publicity pertaining to distribution of the software without specific, + * written prior permission. Stanford makes no representations about + * the suitability of this software for any purpose. It is provided "as is" + * without express or implied warranty. + * + * STANFORD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. + * IN NO EVENT SHALL STANFORD BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION + * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* + * UArray implementation. + */ + +//#include "/proj/pdevel/autoc/arch.sunCC.iv/scl_cf.h" +// This is an scl configuration file generated by the configure script +// generated using gnu's autoconf +#ifdef HAVE_CONFIG_H +#include +#endif + +#include + +// to help ObjectCenter +#ifndef HAVE_MEMMOVE +extern "C" +{ +void * memmove(void *__s1, const void *__s2, size_t __n); +} +#endif + +/*****************************************************************************/ + +SCLP23(Model_contents__list)::SCLP23_NAME(Model_contents__list) (int defaultSize) +#ifdef __OSTORE__ + : _rep(os_List::create(os_database::of(this)) ), + _cursor(_rep), + _first(SCLBOOL(BTrue)) +{ +// _rep = os_List::create(os_database::of(this)); +#else +{ + _bufsize = defaultSize; + _buf = new SCLP23(Model_contents_ptr)[_bufsize]; + _count = 0; +#endif + +} + +SCLP23(Model_contents__list)::~SCLP23_NAME(Model_contents__list) () +{ +#ifndef __OSTORE__ + delete _buf; +#endif +} + +void SCLP23(Model_contents__list)::Check (int index) { + +#ifdef __OSTORE__ +#else + SCLP23(Model_contents_ptr)* newbuf; + + if (index >= _bufsize) { + _bufsize = (index+1) * 2; + newbuf = new SCLP23(Model_contents_ptr)[_bufsize]; + memmove(newbuf, _buf, _count*sizeof(SCLP23(Model_contents_ptr))); + delete _buf; + _buf = newbuf; + } +#endif +} + +void +SCLP23(Model_contents__list)::Insert (SCLP23(Model_contents_ptr) v, int index) { + +#ifdef __OSTORE__ + _rep.insert_before( (SCLP23(Model_contents_ptr)) v, index); +#else + SCLP23(Model_contents_ptr)* spot; + index = (index < 0) ? _count : index; + + if (index < _count) { + Check(_count+1); + spot = &_buf[index]; + memmove(spot+1, spot, (_count - index)*sizeof(SCLP23(Model_contents_ptr))); + + } else { + Check(index); + spot = &_buf[index]; + } + *spot = v; + ++_count; +#endif +} + +void SCLP23(Model_contents__list)::Append (SCLP23(Model_contents_ptr) v) { + +#ifdef __OSTORE__ + _rep.insert_last( (SCLP23(Model_contents_ptr)) v); +#else + int index = _count; + SCLP23(Model_contents_ptr)* spot; + + if (index < _count) { + Check(_count+1); + spot = &_buf[index]; + memmove(spot+1, spot, (_count - index)*sizeof(SCLP23(Model_contents_ptr))); + + } else { + Check(index); + spot = &_buf[index]; + } + *spot = v; + ++_count; +#endif +} + +void SCLP23(Model_contents__list)::Remove (int index) { + +#ifdef __OSTORE__ + _rep.remove_at( index ); +#else + if (0 <= index && index < _count) { + --_count; + SCLP23(Model_contents_ptr)* spot = &_buf[index]; + memmove(spot, spot+1, (_count - index)*sizeof(SCLP23(Model_contents_ptr))); + } +#endif +} + +#ifndef __OSTORE__ +int SCLP23(Model_contents__list)::Index (SCLP23(Model_contents_ptr) v) { + + for (int i = 0; i < _count; ++i) { + if (_buf[i] == v) { + return i; + } + } + return -1; +} +#endif + +SCLP23(Model_contents_ptr) +SCLP23(Model_contents__list)::retrieve(int index) +{ +#ifdef __OSTORE__ + return _rep.retrieve(index); +#else + return operator[](index); +#endif +} + +#ifndef __OSTORE__ +SCLP23(Model_contents_ptr)& +SCLP23(Model_contents__list)::operator[] (int index) +{ + + Check(index); +// _count = max(_count, index+1); + _count = ( (_count > index+1) ? _count : (index+1) ); + return _buf[index]; +} +#endif + +int +SCLP23(Model_contents__list)::Count() +{ +#ifdef __OSTORE__ + return _rep.cardinality(); +#else + return _count; +#endif +} + +int +SCLP23(Model_contents__list)::is_empty() +{ +#ifdef __OSTORE__ + return _rep.empty(); +#else + return _count; +#endif +} + +#ifndef __OSTORE__ +void +SCLP23(Model_contents__list)::Clear() +{ + _count = 0; +} +#endif + +#ifdef __OSTORE__ + +SCLP23(Model_contents_ptr) +SCLP23(Model_contents__list)::first() +{ + return _cursor.first(); +} + +SCLP23(Model_contents_ptr) +SCLP23(Model_contents__list)::next() +{ + return _cursor.next(); +} + +SCLP23(Integer) +SCLP23(Model_contents__list)::more() +{ + return _cursor.more(); +} + +#endif diff --git a/source/geometry/solids/STEP/src/sdaiObject.cc b/source/geometry/solids/STEP/src/sdaiObject.cc new file mode 100644 index 0000000000..ba47761d65 --- /dev/null +++ b/source/geometry/solids/STEP/src/sdaiObject.cc @@ -0,0 +1,33 @@ +#include + +SCLP23(sdaiObject)::SCLP23_NAME(sdaiObject)() +{ +} + +SCLP23(sdaiObject)::~SCLP23_NAME(sdaiObject)() +{ +} + +#ifdef PART26 +//SCLP26(Application_instance_ptr) +IDL_Application_instance_ptr +SCLP23(sdaiObject)::create_TIE() +{ + G4cout << "ERROR sdaiObject::create_TIE() called." << G4endl; + return 0; +} +#endif + +#ifdef __OSTORE__ +void +SCLP23(sdaiObject)::Access_hook_in(void *object, + enum os_access_reason reason, void *user_data, + void *start_range, void *end_range) +{ + G4cout << "****WARNING: virtual sdaiObject::Access_hook_in() called" << G4endl; + SCLP23(sdaiObject_ptr) ent = (SCLP23(sdaiObject_ptr))object; +/* + ent->Access_hook_in(object, reason, user_data, start_range, end_range); +*/ +} +#endif diff --git a/source/geometry/solids/STEP/src/sdaiSelect.cc b/source/geometry/solids/STEP/src/sdaiSelect.cc new file mode 100644 index 0000000000..2d1f71d850 --- /dev/null +++ b/source/geometry/solids/STEP/src/sdaiSelect.cc @@ -0,0 +1,722 @@ + +/* +* NIST STEP Core Class Library +* clstepcore/sdaiSelect.cc +* April 1997 +* Dave Helfrick +* KC Morris + +* Development of this software was funded by the United States Government, +* and is not subject to copyright. +*/ + +/* $Id: sdaiSelect.cc,v 1.1 2000/01/21 13:43:18 gcosmo Exp $ */ + +#include // to get the BUFSIZ #define +#include +#include "g4std/strstream" +//#include +#include +#include +#include + +#ifdef SCL_LOGGING +#include "g4std/fstream" + extern G4std::ofstream *logStream; +#endif + +/********** + (member) functions for the select class SCLP23(Select) +**********/ +SCLP23(Select)::SCLP23_NAME(Select) (const SelectTypeDescriptor *s, + const TypeDescriptor *td) + : _type (s), underlying_type (td) +{ +#ifdef __OSTORE__ + if(td) + underlying_type_name = td->Name(); + else + underlying_type_name.set_null(); +#endif +#ifdef SCL_LOGGING + *logStream << "Exiting SCLP23(Select) constructor." << G4endl; +#endif +} + +SCLP23(Select)::~SCLP23_NAME(Select) () +{ +} + +Severity SCLP23(Select)::severity() const +{ /** fn Severity **/ + return _error.severity(); +} /** end function **/ + +Severity SCLP23(Select)::severity( Severity s ) +{ /** fn Severity **/ + return _error.severity( s ); +} /** end function **/ + +const char * SCLP23(Select)::Error() +{ /** fn Error **/ + return _error.DetailMsg(); +} /** end function **/ + +void SCLP23(Select)::Error( char * e ) +{ /** fn Error **/ + _error.DetailMsg( e ); +} /** end function **/ + +void SCLP23(Select)::ClearError() +{ /** end function **/ + _error.ClearErrorMsg(); +} /** end function **/ + +const TypeDescriptor * +SCLP23(Select)::CanBe (const char * n) const +{ + return _type -> CanBe (n); +/* + const TypeDescLinkNode * tdn = + (const TypeDescLinkNode *) _type -> GetElements ().GetHead (); + const TypeDescriptor *td = tdn -> TypeDesc (); + + SCLstring tmp1; + SCLstring tmp2; + + while (tdn) { + td = tdn -> TypeDesc (); + if (strcmp( (char *)StrToUpper( n, tmp1 ), + (char *)StrToUpper( td->Name(), tmp2 ) )) + ; + else + return td; // they are the same + tdn = (TypeDescLinkNode *) (tdn -> NextNode ()); + } + return 0; +*/ +} + + +const TypeDescriptor * +SCLP23(Select)::CanBe (BASE_TYPE bt) const +{ + const TypeDescLinkNode * tdn = + (const TypeDescLinkNode *) _type -> GetElements ().GetHead (); + const TypeDescriptor *td = tdn -> TypeDesc (); + BASE_TYPE bt_thisnode; + + while (tdn) { + td = tdn -> TypeDesc (); + if (((bt_thisnode = td -> NonRefType ()) == bt) || + (bt == AGGREGATE_TYPE && ((bt_thisnode == ARRAY_TYPE) || + (bt_thisnode == LIST_TYPE) || + (bt_thisnode == SET_TYPE) || + (bt_thisnode == BAG_TYPE)))) + return td; // they are the same + tdn = (TypeDescLinkNode *) (tdn -> NextNode ()); + } + return 0; +} + +const TypeDescriptor * +SCLP23(Select)::CanBe (const TypeDescriptor * td) const +{ + return _type -> CanBe (td); +} + +const TypeDescriptor * +SCLP23(Select)::CanBeSet (const char * n, const char *schnm) const +{ + return _type -> CanBeSet (n, schnm); +} + +const int +SCLP23(Select)::IsUnique (const BASE_TYPE bt) const +{ + if (bt == ARRAY_TYPE || + bt == LIST_TYPE || + bt == BAG_TYPE || + bt == SET_TYPE) + return ((_type->UniqueElements()) & AGGREGATE_TYPE); + else + return ((_type->UniqueElements()) & bt); +} + + +SCLP23(String) SCLP23(Select)::UnderlyingTypeName () const +{ +#ifdef __OSTORE__ + return underlying_type_name.chars(); +#else + return underlying_type -> Name (); +#endif +} + +const TypeDescriptor * SCLP23(Select)::CurrentUnderlyingType() const +{ + return underlying_type; +} + +const TypeDescriptor * +SCLP23(Select)::SetUnderlyingType (const TypeDescriptor * td) +{ + // don\'t do anything if the descriptor is bad + if (!td || !(_type -> CanBe (td))) return 0; + + base_type = td -> NonRefType (); +#ifdef __OSTORE__ + underlying_type_name = td->Name(); +#endif + + return underlying_type = td; +} + +int SCLP23(Select)::exists() const +{ + // changed cast from 'int' to 'long' - GC + return (long) underlying_type; +} + +void SCLP23(Select)::nullify() +{ + underlying_type = 0; +#ifdef __OSTORE__ + underlying_type_name.set_null(); +#endif +} + +Severity +SCLP23(Select)::SelectValidLevel(const char *attrValue, ErrorDescriptor *err, + InstMgr *im, int clearError) +{ + SCLP23(Select) * tmp = NewSelect(); + Severity s = SEVERITY_NULL; + +// COMMENTED OUT TO ALLOW FOR TYPE RESOLUTION WHEN TYPE CHANGES +// if (CurrentUnderlyingType ()) +// s = tmp -> StrToVal +// (attrValue, CurrentUnderlyingType () -> Name (), err, im); +// else + + G4std::istrstream strtmp (attrValue); + s = tmp -> STEPread (strtmp, err, im); + delete tmp; + return s; +} + +Severity +SCLP23(Select)::StrToVal(const char *Val, const char *selectType, + ErrorDescriptor *err, InstMgr * instances) +{ + severity(SEVERITY_NULL); + if (SetUnderlyingType (CanBe (selectType))) + + // the underlying type is set to a valid type + // call read on underlying type in subclass + + switch (base_type) { + case ENTITY_TYPE: + { + STEPentity * tmp = + ReadEntityRef (Val, err, (char*)(",)"), instances, 0); + if ( tmp && ( tmp != ENTITY_NULL )) + { + AssignEntity(tmp); + return severity(); + } + else + { + err->AppendToDetailMsg( + "Reference to entity that is not a valid type for SELECT.\n" ); + nullify (); + err->GreaterSeverity( SEVERITY_WARNING ); + return SEVERITY_WARNING; + } + } + + // call StrToVal on the contents + case STRING_TYPE: + case AGGREGATE_TYPE: + case ARRAY_TYPE: // DAS + case BAG_TYPE: // DAS + case SET_TYPE: // DAS + case LIST_TYPE: // DAS + case ENUM_TYPE: + case SELECT_TYPE: + case BOOLEAN_TYPE: + case LOGICAL_TYPE: + { + err->GreaterSeverity( StrToVal_content (Val, instances) ); + if(_error.severity() != SEVERITY_NULL) + err->AppendFromErrorArg(&_error); + return err->severity(); + } + + // do the same as STEPread_content + case BINARY_TYPE: + case NUMBER_TYPE: + case REAL_TYPE: + case INTEGER_TYPE: + default: + { + G4std::istrstream strtmp (Val); + err->GreaterSeverity( STEPread_content (strtmp) ); + if(_error.severity() != SEVERITY_NULL) + err->AppendFromErrorArg(&_error); + return err->severity(); + } + } + return SEVERITY_INPUT_ERROR; +} + +// updated to Technical Corrigendum. DAS 2/4/97 +Severity +SCLP23(Select)::STEPread (G4std::istream& in, ErrorDescriptor *err, + InstMgr *instances, const char* utype, + int addFileId, const char *currSch) +{ + char c ='\0'; + SCLstring tmp; + +#ifdef SCL_LOGGING +// *logStream << "DAVE ERR Entering SCLP23(Select)::STEPread." << G4endl; +#endif + // find out what case we have + // NOTE case C falls out of recursive calls in cases A and B + + // This section of code is used to read a value belonging to a select + // contained in another select. If you have read the text part of the + // TYPED_PARAMETER and it needs to fall down thru some levels of contained + // select types, then the text is passed down to each select in the utype + // parameter as STEPread is called on each contained select type.DAS 2/4/97 + if(utype) + { + if( SetUnderlyingType( CanBeSet( utype, currSch ) ) ) + { // assign the value to the underlying type + in >> G4std::ws; // skip white space + if( (underlying_type->Type() == REFERENCE_TYPE) && + (underlying_type->NonRefType() == sdaiSELECT) ) + { // See comments below for a similar code segment. + STEPread_content (in, instances, 0, addFileId, currSch); + } + else + STEPread_content (in, instances, utype, addFileId, currSch); + err->AppendToDetailMsg (Error ()); + err->GreaterSeverity( severity () ); + } + return err->severity(); + } + in >> G4std::ws; + in >> c; +// c = in.peek(); + + // the if part of this code reads a value according to the Technical + // Corrigendum for Part 21 (except for Entity instance refs which are read + // in the else part - everything else in the else stmt is invalid). The + // idea here is to read text and find out if it is specifying the final + // type or is a simple defined type which is typed to be a select some + // number of levels down. The first case will cause the value to be read + // directly by STEPread_content() or will cause STEPread_content() to pass + // the text naming the type to the underlying Select containing it. When + // the latter is the case, STEPread_content calls STEPread for the + // contained select and passes in the text. The convoluted case is when + // the text describes a simple defined type that translates directly into + // a select some number of levels down. In this case there will be more + // text inside the containing parens to indicate the type. Since the text + // specifying the type still needs to be read utype is passed as null which + // will cause the contained Select STEPread function to read it. DAS 2/4/97 + + if( isalpha(c) ) // case B + { + int eot =0; // end of token flag + // token is a type name - get the type + while( (c != '(') && in.good() ) + { + if (!eot && ! (eot = isspace (c)) ) + // as long as eot hasn\'t been reached keep appending + tmp.Append(c); + in >> c; + } + + // check for valid type and set the underlying type + if( SetUnderlyingType( CanBeSet( tmp.chars(), currSch ) ) ) + { // Assign the value to the underlying type. CanBeSet() is a + // slightly modified CanBe(). It ensures that a renamed select + // type (see big comment below) "CantBe" one of its member items. + // This is because such a select type requires its own name to + // appear first ("selX("), so even if we read a valid element of + // selX, selX can't be the underlying type. That can only be the + // case if "selX" appears first and is what we just read. + in >> G4std::ws; // skip white space + if( (underlying_type->Type() == REFERENCE_TYPE) && + (underlying_type->NonRefType() == sdaiSELECT) ) + { + // This means (1) that the underlying type is itself a select + // (cond 2), and (2) it's not defined in the EXPRESS as a + // select, but as a renamed select. (E.g., TYPE sel2 = sel1.) + // In such a case, according to the TC, "sel2(" must appear in + // the text. (We must have found one for SetUnderlyingType() + // above to set underlying_type to sel2.) If all of the above + // is true, we read "sel2" but not the value of sel2. We + // therefore do not pass down what we read to STEPread_content + // below, so that we can still read the value of sel2. If, + // however, under_type was a non-renamed select, no "sel1" + // would appear (according to TC) and we already read the value + // of sel1. If so, we pass the already-read value down. + STEPread_content (in, instances, 0, addFileId, currSch); + } + else + { + // In most cases (see above note), we've already read the value + // we're interested in. + // This also handles all other cases? other than the if part + // above and elements of type entity ref? + STEPread_content (in, instances, tmp.chars(), addFileId, + currSch); + // STEPread_content uses the ErrorDesc data member from the + // SCLP23(Select) class + } + err->AppendToDetailMsg (Error ()); + err->GreaterSeverity( severity () ); + in >> G4std::ws >> c; + if( c != ')' ) + { + err->AppendToDetailMsg( + "Bad data or missing closing ')' for SELECT type.\n" ); + err->GreaterSeverity( SEVERITY_WARNING ); + in.putback (c); +#ifdef SCL_LOGGING +// *logStream << "DAVE ERR Exiting SCLP23(Select)::STEPread for " << _type->Name() << G4endl; +#endif + return SEVERITY_WARNING; + } +#ifdef SCL_LOGGING +// *logStream << "DAVE ERR Exiting SCLP23(Select)::STEPread for " << _type->Name() << G4endl; +#endif + return err->severity(); + } + else // ERROR -- the type wasn't one of the choices + { + if( !in.good() ) + { + err->GreaterSeverity( SEVERITY_INPUT_ERROR ); +#ifdef SCL_LOGGING +// *logStream << "DAVE ERR Exiting SCLP23(Select)::STEPread for " << _type->Name() << G4endl; +#endif + return SEVERITY_INPUT_ERROR; + } + else + { + err->AppendToDetailMsg ( + "The type name for the SELECT type is not valid.\n"); + err->GreaterSeverity (SEVERITY_WARNING); +#ifdef SCL_LOGGING +// *logStream << "DAVE ERR Exiting SCLP23(Select)::STEPread for " << _type->Name() << G4endl; +#endif + return SEVERITY_WARNING; + } + } +/* if (!in.good()) + { + err->GreaterSeverity( SEVERITY_INPUT_ERROR ); + return SEVERITY_INPUT_ERROR; + } +*/ + } +// NOTE **** anything that gets read below here is invalid according to the +// Technical Corrigendum for Part 21 (except for reading an entity instance +// where below is the only place they get read). I am leaving all of this +// here since it is valuable to 'read what you can' and flag an error which +// is what it does (for every type but entity instance refs). DAS 2/4/97 + + else // case A + { // the type can be determined from the value +// if (_type && ! _type -> UniqueElements ()) { +// err->AppendToDetailMsg("Type for value of SELECT is ambiguous.\n" ); +// err->GreaterSeverity( SEVERITY_WARNING ); +// } + switch (c) + { + case '$': + nullify (); + err->GreaterSeverity (SEVERITY_INCOMPLETE); +#ifdef SCL_LOGGING +// *logStream << "DAVE ERR Exiting SCLP23(Select)::STEPread for " << _type->Name() << G4endl; +#endif + return SEVERITY_INCOMPLETE; + + case ',': + case '\0': + // ERROR IN INPUT + in.putback (c); + err->AppendToDetailMsg( "No value found for SELECT type.\n" ); + err->GreaterSeverity( SEVERITY_WARNING ); +#ifdef SCL_LOGGING +// *logStream << "DAVE ERR Exiting SCLP23(Select)::STEPread for " << _type->Name() << G4endl; +#endif + return SEVERITY_WARNING; + + case '.': // assign enum + base_type = ENUM_TYPE; + err->AppendToDetailMsg( "Invalid Enumeration, Logical, or Boolean value in SELECT type.\n" ); + err->GreaterSeverity( SEVERITY_WARNING ); + break; + // set the underlying type + // call STEPread + // return + + case '\'': // assign string + base_type = STRING_TYPE; + err->AppendToDetailMsg( "Invalid String value in SELECT type.\n" ); + err->GreaterSeverity( SEVERITY_WARNING ); + break; + + case '"': // assign string + base_type = BINARY_TYPE; + err->AppendToDetailMsg( "Invalid Binary value in SELECT type.\n" ); + err->GreaterSeverity( SEVERITY_WARNING ); + break; + + case '#': + base_type = ENTITY_TYPE; + break; + // call STEPread_reference + // set the underlying type + + // assign entity + // read the reference + // match type to underlying type + // assign the value + // set the underlying type + + case '(': + { + err->AppendToDetailMsg( "Invalid aggregate value in SELECT type.\n" ); + err->GreaterSeverity( SEVERITY_WARNING ); + char n; + in >> n; + in.putback(n); + if( isalpha(n) ) + base_type = SELECT_TYPE; + else + base_type = AGGREGATE_TYPE; + break; + } + + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case '-': + // **************************************************************** + // The following check is commented out for compatibility with STEP + // entities with single attributes for aggregates. See definition + // for TRIMMED_CURVE. Part of ISO 10303-203 AIM EXPRESS schema - GC + // **************************************************************** + // err->AppendToDetailMsg( "Invalid Integer or Real value in SELECT type.\n" ); + // err->GreaterSeverity( SEVERITY_WARNING ); + if( CanBe( REAL_TYPE ) ) + base_type = REAL_TYPE; + else + base_type = INTEGER_TYPE; + break; + + default: + // ambiguous - ERROR: underlying type should have been set + // STEPread_error (); + err->AppendToDetailMsg( + "type for SELECT could not be determined from value.\n" ); + nullify (); + in.putback (c); + err->GreaterSeverity( SEVERITY_WARNING ); +#ifdef SCL_LOGGING +// *logStream << "DAVE ERR Exiting SCLP23(Select)::STEPread for " << _type->Name() << G4endl; +#endif + return SEVERITY_WARNING; + } + + in.putback (c); + + // now the type descriptor should be derivable from the base_type + + // if it\'s not issue a warning + if (_type && ! (IsUnique(base_type))) { + err->AppendToDetailMsg("Value for SELECT will be assigned to first possible choice.\n" ); +// err->GreaterSeverity( SEVERITY_INCOMPLETE ); + err->GreaterSeverity( SEVERITY_USERMSG ); + } + + if( base_type == ENTITY_TYPE ) + { // you don\'t know if this is an ENTITY or a SELECT + // have to do this here - not in STEPread_content + STEPentity * tmp = + ReadEntityRef (in, err, (char*)(",)"), instances, addFileId); + if( tmp && ( tmp != ENTITY_NULL ) && AssignEntity(tmp) ) + { +#ifdef SCL_LOGGING +// *logStream << "DAVE ERR Exiting SCLP23(Select)::STEPread for " << _type->Name() << G4endl; +#endif + return SEVERITY_NULL; + } + else + { + err->AppendToDetailMsg( + "Reference to entity that is not a valid type for SELECT.\n" ); + nullify (); + err->GreaterSeverity( SEVERITY_WARNING ); +#ifdef SCL_LOGGING +// *logStream << "DAVE ERR Exiting SCLP23(Select)::STEPread for " << _type->Name() << G4endl; +#endif + return SEVERITY_WARNING; + } + } + else if ( SetUnderlyingType( CanBe(base_type) ) ) + STEPread_content( in, instances, 0, addFileId ); + + else // ERROR -- the type wasn\'t one of the choices + { + err->AppendToDetailMsg( + "The type of the SELECT type is not valid.\n"); + err->GreaterSeverity( SEVERITY_WARNING ); +#ifdef SCL_LOGGING +// *logStream << "DAVE ERR Exiting SCLP23(Select)::STEPread for " << _type->Name() << G4endl; +#endif + return SEVERITY_WARNING; + } + } +// if (!in.good()) severity (SEVERITY_INPUT_ERROR); +#ifdef SCL_LOGGING +// *logStream << "DAVE ERR Exiting SCLP23(Select)::STEPread for " << _type->Name() << G4endl; +#endif + return err->severity (); +} + + +// updated to Technical Corrigendum DAS Feb 4, 1997 +void +SCLP23(Select)::STEPwrite(G4std::ostream& out, const char *currSch) const +{ + if (!exists ()) { + out << "$"; + return; + } +// switch(ValueType()) // This doesn't work DAS 2/4/97 + switch(underlying_type->NonRefType()) + { + case sdaiINSTANCE: + { + STEPwrite_content( out ); + break; + } + case sdaiSELECT: // The name of a select is never written DAS 1/31/97 + { + if(underlying_type->Type() == REFERENCE_TYPE) + { +// if(underlying_type->NonRefType() == sdaiSELECT) + SCLstring s; + out << StrToUpper(underlying_type->Name(currSch),s) << "("; + STEPwrite_content( out, currSch ); + out << ")"; + } + else + STEPwrite_content( out, currSch ); + break; + } + case sdaiNUMBER: + case sdaiREAL: + case sdaiINTEGER: + case sdaiSTRING: + case sdaiBOOLEAN: + case sdaiLOGICAL: + case sdaiBINARY: + case sdaiENUMERATION: + case sdaiAGGR: + case ARRAY_TYPE: + case BAG_TYPE: + case SET_TYPE: + case LIST_TYPE: + { + STEPwrite_verbose( out, currSch ); + break; + } + case REFERENCE_TYPE: // this should never happen? DAS + default: + out << "ERROR Should not have gone here in SCLP23(Select)::STEPwrite()" + << G4endl; + } +/* + if (IsUnique(ValueType()) || (ValueType() == ENTITY_TYPE)) + STEPwrite_content( out ); + else + STEPwrite_verbose(out); +*/ +/* + { + SCLstring tmp; + out << StrToUpper( CurrentUnderlyingType()->Name(), tmp ) << "("; + STEPwrite_content (out); + out << ")"; + } +*/ +} + +void +SCLP23(Select)::STEPwrite_verbose(G4std::ostream& out, const char *currSch) const +{ + SCLstring tmp; + out << StrToUpper( CurrentUnderlyingType()->Name(currSch), tmp) << "("; + STEPwrite_content (out); + out << ")"; +} + +const char * +SCLP23(Select)::STEPwrite(SCLstring& s, const char *currSch) const +{ + G4std::strstream buf; + STEPwrite (buf, currSch); + buf << G4std::ends; // have to add the terminating \0 char + char * tmp; + tmp = buf.str (); + s = tmp; + delete tmp; + return s; +} + + +//SCLP23(Select)& +//SCLP23(Select)::operator= (SCLP23(Select)& x) +//{ +// return *this; +//} + +#ifdef OBSOLETE +char* +SCLP23(Select)::asStr() const +{ + G4std::strstream buf; + STEPwrite (buf); +/* STEPwrite_content (buf);*/ + buf << G4std::ends; // have to add the terminating \0 char + return buf.str (); // need to delete this space +} +#endif + +int +SCLP23(Select)::set_null () +{ + nullify (); + return 1; +} + +int +SCLP23(Select)::is_null () +{ + return (!exists ()); +} diff --git a/source/geometry/solids/STEP/src/sdaiSession_instance.cc b/source/geometry/solids/STEP/src/sdaiSession_instance.cc new file mode 100644 index 0000000000..e3aa53f695 --- /dev/null +++ b/source/geometry/solids/STEP/src/sdaiSession_instance.cc @@ -0,0 +1,9 @@ +#include + +SCLP23(Session_instance)::SCLP23_NAME(Session_instance)() +{ +} + +SCLP23(Session_instance)::~SCLP23_NAME(Session_instance)() +{ +} diff --git a/source/geometry/solids/STEP/src/STEPstring.cc b/source/geometry/solids/STEP/src/sdaiString.cc similarity index 79% rename from source/geometry/solids/STEP/src/STEPstring.cc rename to source/geometry/solids/STEP/src/sdaiString.cc index f00ec0f1d9..09d28c6aaf 100644 --- a/source/geometry/solids/STEP/src/STEPstring.cc +++ b/source/geometry/solids/STEP/src/sdaiString.cc @@ -1,31 +1,29 @@ - -// - - - -// -// $Id: STEPstring.cc,v 1.3 1999/12/15 14:50:17 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// - /* * NIST STEP Core Class Library -* clstepcore/STEPstring.cc -* May 1995 +* clstepcore/sdaiString.cc +* April 1997 * KC Morris * Development of this software was funded by the United States Government, * and is not subject to copyright. */ -/* */ +/* $Id: sdaiString.cc,v 1.1 2000/01/21 13:43:19 gcosmo Exp $ */ -#include +#include #include "g4std/strstream" + +SCLP23(String)& +SCLP23(String)::operator= (const char* s) +{ + SCLstring::operator= (s); + return *this; +} + void -SdaiString::STEPwrite (G4std::ostream& out) const +SCLP23(String)::STEPwrite (G4std::ostream& out) const { const char *str = 0; // strings that exist but do not contain any chars should be written as '', @@ -49,7 +47,7 @@ SdaiString::STEPwrite (G4std::ostream& out) const } void -SdaiString::STEPwrite (SCLstring &s) const +SCLP23(String)::STEPwrite (SCLstring &s) const { const char *str = 0; // null strings should be represented by '', not $ --Josh L, 4/28/95 @@ -75,7 +73,7 @@ SdaiString::STEPwrite (SCLstring &s) const } Severity -SdaiString::StrToVal (const char * s) +SCLP23(String)::StrToVal (const char * s) { operator= (s); if (! strcmp (chars (), s)) return SEVERITY_NULL ; @@ -85,7 +83,7 @@ SdaiString::StrToVal (const char * s) // STEPread reads a string in exchange file format // starting with a single quote Severity -SdaiString::STEPread (G4std::istream& in, ErrorDescriptor *err) +SCLP23(String)::STEPread (G4std::istream& in, ErrorDescriptor *err) { int foundEndQuote = 0; // need so this string is not ok: 'hi'' set_null (); // clear the old string @@ -99,6 +97,10 @@ SdaiString::STEPread (G4std::istream& in, ErrorDescriptor *err) if (c == STRING_DELIM) { + Append("\0"); // this will make sure that this will not be undefined. + // It will handle the case where '' is read. It will be an + // empty string rather than one that is undefined. + while( (c != '\0') && in.good() && in.get(c) ) { if (c == STRING_DELIM) { @@ -140,7 +142,7 @@ SdaiString::STEPread (G4std::istream& in, ErrorDescriptor *err) } Severity -SdaiString::STEPread (const char *s, ErrorDescriptor *err) +SCLP23(String)::STEPread (const char *s, ErrorDescriptor *err) { G4std::istrstream in((char *)s); return STEPread (in, err); diff --git a/source/geometry/solids/STEP/src/trynext.cc b/source/geometry/solids/STEP/src/trynext.cc new file mode 100644 index 0000000000..60c6b8404a --- /dev/null +++ b/source/geometry/solids/STEP/src/trynext.cc @@ -0,0 +1,161 @@ +/***************************************************************************** + * trynext.cc * + * * + * Description: Contains the tryNext() functions for the EntList descen- * + * dants. Their purpose is to search for additional branches * + * of OrList's to try the next available untried solution. AND * + * and ANDOR iterate through their children looking for OR's. * + * OR tries the next branch of its children if more remain. * + * * + * Created by: David Rosenfeld * + * Date: 10/24/96 * + *****************************************************************************/ + +#include "complexSupport.h" + +// Local function prototypes: +static EntList *firstCandidate( EntList * ); +static EntList *nextCandidate( EntList * ); + +MatchType MultList::tryNext( EntNode *ents ) + /* + * Loops backwards through the children of this, recursively searching for + * alternate solutions (i.e., OR's which have alternate paths we haven't + * tried yet). We loop through all MultList type children which may have + * an OR with additional choices. (Which children to try is determined in + * a local function. We loop backwards because this is the reverse of the + * order we set the OR's. Later choices must be redone before earlier + * (reasons discussed in notes, 10/17). This function is the tryNext() + * for AND and ANDOR; the OR version is redefined. + */ +{ + MatchType retval; + EntList *child = getLast(); + + child = firstCandidate( child ); + while ( child != NULL ) { + if ( (retval = ((MultList *)child)->tryNext( ents )) == MATCHALL ) { + // We're done - a good solution was found. + return MATCHALL; + } + if ( retval == NEWCHOICE ) { + // If a new viable choice was found below, we must now reset all + // later OR's to their first choice. (That's what acceptChoice() + // does when choice = LISTEND.) This is necessary so that we can + // exhaust every possibility with this new choice. To do this we + // first reset all our children, and then return NEWCHOICE so that + // our parent (if exists) will also know to reset all its later OR + // children. + while ( (child = nextCandidate( child )) != NULL ) { + if ( child->acceptChoice( ents ) && ents->allMarked() ) { + return MATCHALL; + } + } + return NEWCHOICE; + } + child = firstCandidate( child->prev ); + } + // If we got here, we didn't find any new OR choices: + return NOMORE; +} + +static EntList *firstCandidate( EntList *child ) + /* + * Finds an EntList from child's list which may have an OR with more + * choices below it. The acceptable choices are described in commenting + * below. + */ +{ + EntList *ent = child->lastNot( SIMPLE ); + + while ( ent != NULL ) { + if ( ent->viableVal() >= MATCHSOME ) { + // Return any non-SIMPLE ent where viable >= MATCHSOME. We even + // want to check an OR where numChoices = 1, because it may have + // an OR descendant with more choices. + return ent; + } + ent = ent->prevNot( SIMPLE ); + } + return ent; +} + +static EntList *nextCandidate( EntList *child ) + /* + * Same as prev function, searches forwards from ent after child. + */ +{ + EntList *ent = child->nextNot( SIMPLE ); + + while ( ent != NULL ) { + if ( ent->viableVal() >= MATCHSOME ) { + return ent; + } + ent = ent->nextNot( SIMPLE ); + } + return ent; +} + +MatchType OrList::tryNext( EntNode *ents ) + /* + * Tries out the next choice of this. Basic algorithm is to first recurse + * to check for other solutions in the descendants of the current choice, + * and then to try our next choice. + */ +{ + MatchType retval; + EntList *child; + + + if ( choice == LISTEND ) { + // if we've already exhausted all the choices in this OR, + return NOMORE; + } + + // First try other choices of descendants of current choice: + child = getChild( choice ); + if ( child->multiple() ) { + // I.e., if there are (or may be) more choices within the current + // choice, try those first. We must be sure to exhaust all choices in + // our descendants before moving on. + retval = ((MultList *)child)->tryNext( ents ); + if ( retval == MATCHALL ) { + return MATCHALL; + } + if ( retval == NEWCHOICE ) { + // I.e., we found a next choice to go to, return so that the + // EntLists on the higher levels (if there are) can retry all the + // later choices with the new choice we just found. Otherwise, + // we'll continue below looking into our next choice. + return NEWCHOICE; + } + } + + // No other choices among our descendants. Look for new choice at our + // level: + child->unmarkAll( ents ); + if ( choiceCount == 1 ) { + // Quick way to determine that there won't be any more choices here. + // (Also, it's nec. to unmark now, as we did above before returning and + // before the calling tryNext() tries earlier OR's - see notes, 11/12.) + choice = LISTEND; + return NOMORE; + } + + // Otherwise, try our next: + if ( acceptNextChoice( ents ) ) { + if ( ents->allMarked() ) { + return MATCHALL; + } + return NEWCHOICE; + } else { + // Must have been no next choice (or none which mark anything new). + // acceptNextChoice() has set choice to LISTEND. We leave this OR + // unset and return NOMORE. If our calling function finds another + // choice elsewhere, it will reloop forwards and set all later OR's to + // their first choices, so that we'll be able to test every possibility + // with the new choice. At that time, this OrList will be reset to its + // first choice too. + return NOMORE; + } +} diff --git a/source/geometry/solids/STEPinterface/History b/source/geometry/solids/STEPinterface/History index 07b36c7cf1..cc07dfe648 100644 --- a/source/geometry/solids/STEPinterface/History +++ b/source/geometry/solids/STEPinterface/History @@ -1,4 +1,4 @@ -$Id: History,v 1.3 1999/11/08 09:53:55 gcosmo Exp $ +$Id: History,v 1.5 2000/02/25 16:36:16 gcosmo Exp $ ---------------------------------------------------------------------------- ========================================================= @@ -17,6 +17,48 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +25th February 2000 Gabriele Cosmo (stepinterface-V01-00-01) +- Improved overall diagnostics. +- Fixed internal memory-leaks. +- Added protections for NULL pointers generated by missing geometry creators. + Updated files: G4VectorCreator.cc, G4ToroidalSurfaceCreator.cc, + G4SphericalSurfaceCreator.cc, G4ShapeRepresentationCreator.cc, + G4RationalBSplineSurfaceCreator.cc, G4PlaneCreator.cc, + G4OrientedEdgeCreator.cc, G4LineCreator.cc, + G4ItemDefinedTransformationCreator.cc, G4EllipseCreator.cc, + G4EdgeLoopCreator.cc, G4EdgeCurveCreator.cc, G4CylindricalSurfaceCreator.cc, + G4ConicalSurfaceCreator.cc, G4ClosedShellCreator.cc, G4CircleCreator.cc, + G4BoundedSurfaceCreator.cc, G4BSplineCurveWithKnotsCreator.cc, + G4Axis2Placement3dCreator.cc, G4AdvancedFaceCreator.cc, + G4AdvancedBrepShapeRepresentationCreator.cc +- G4AdvancedFaceCreator.cc, G4EdgeLoopCreator.cc + o added check over the number of allocated curves for composition. +- G4ClosedShellCreator.cc + o added check over the number of allocated surfaces for composition. +- G4BSplineSurfaceWithKnotsCreator.cc + o created object is now a G4BSplineSurface. No G4 object was returned before. +- G4RepresentationRelationshipCreator[.hh.cc]: + o fixed bound-overflow problem on array of placements. + o implemented temporary solution for association of placements and + manifolded solids for advanced BREP shape representations. + o added protections for NULL pointers. +- G4GeometryTable.cc: + o added extra-debug verbosity protected by G4_STEPINTERFACE_DEBUG flag. +- G4AssemblyCreator.cc: + o STEPfile_id is now retrieved through direct call to STEP reader function + GetApplication_instance(keyw, index). + o added extra-debug verbosity protected by G4_STEPINTERFACE_DEBUG flag. + o added protection for NULL pointers. +- test/GNUmakefile: + o moved to use granular libraries. + +21st January 2000 Gabriele Cosmo (stepinterface-V01-00-00) +- Code migrated to handle new NIST STEP Reader SCL 3.2. +- Reduced inter-class dependencies by reorganising include statements and + removing unnecessary ones. +- Added standard class header description and CVS identifiers. +- Code porting to supported UNIX platforms/compilers. + 8th November 1999 Gabriele Cosmo (stepinterface-V00-01-00) - Added files G4NISTStepReader[.hh.cc] and G4StepFileReader[.hh] from BREPS. - Added inclusion of STEPcomplex.h in G4BoundedSurfaceCreator.cc, diff --git a/source/geometry/solids/STEPinterface/include/G4AdvancedBrepShapeRepresentationCreator.hh b/source/geometry/solids/STEPinterface/include/G4AdvancedBrepShapeRepresentationCreator.hh index 2c9ba8ff5b..9ce01053d6 100644 --- a/source/geometry/solids/STEPinterface/include/G4AdvancedBrepShapeRepresentationCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4AdvancedBrepShapeRepresentationCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4AdvancedBrepShapeRepresentationCreator.hh,v 1.2 2000/01/21 13:45:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4AdvancedBrepShapeRepresentationCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4ADVANCEDBREPSHAPEREPRESENTATIONCREATOR_HH #define G4ADVANCEDBREPSHAPEREPRESENTATIONCREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4AdvancedBrepShapeRepresentationCreator: private G4GeometryCreator { -public: -//Constructor -G4AdvancedBrepShapeRepresentationCreator(); -~G4AdvancedBrepShapeRepresentationCreator(); + public: + + // Constructor & destructor -//Member functions + G4AdvancedBrepShapeRepresentationCreator(); + ~G4AdvancedBrepShapeRepresentationCreator(); -void CreateG4Geometry(STEPentity&); + // Member functions -void CreateSTEPGeometry(void* G4obj); + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Advanced_Brep_Shape_Representation"; } + static G4AdvancedBrepShapeRepresentationCreator GetInstance() { return csc; } -G4String Name(){return "Advanced_Brep_Shape_Representation";}; + // Members -static G4AdvancedBrepShapeRepresentationCreator GetInstance(){return csc;}; + private: -//Members -private: - -static G4AdvancedBrepShapeRepresentationCreator csc; + static G4AdvancedBrepShapeRepresentationCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4AdvancedFaceCreator.hh b/source/geometry/solids/STEPinterface/include/G4AdvancedFaceCreator.hh index 0a89895da7..83a93f4527 100644 --- a/source/geometry/solids/STEPinterface/include/G4AdvancedFaceCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4AdvancedFaceCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4AdvancedFaceCreator.hh,v 1.2 2000/01/21 13:45:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4AdvancedFaceCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4ADVANCEDFACECREATOR_HH #define G4ADVANCEDFACECREATOR_HH -#include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" -class G4AdvancedFaceCreator; // Forward declararation -> Simone +#include "G4GeometryCreator.hh" class G4AdvancedFaceCreator: private G4GeometryCreator { -public: -//Constructor -G4AdvancedFaceCreator(); -~G4AdvancedFaceCreator(); + public: -//Member functions -void CreateG4Geometry(STEPentity&); -void CreateSTEPGeometry(void* G4obj); + // Constructor & destructor + + G4AdvancedFaceCreator(); + ~G4AdvancedFaceCreator(); -G4String Name(){return "Advanced_Face";}; + // Member functions + + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Advanced_Face"; } + static G4AdvancedFaceCreator GetInstance() { return csc; } -static G4AdvancedFaceCreator GetInstance(){return csc;}; + // Members -//Members -private: + private: -static G4AdvancedFaceCreator csc; + static G4AdvancedFaceCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4AssemblyCreator.hh b/source/geometry/solids/STEPinterface/include/G4AssemblyCreator.hh index e6b2d346c0..5bad6f1792 100644 --- a/source/geometry/solids/STEPinterface/include/G4AssemblyCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4AssemblyCreator.hh @@ -1,44 +1,63 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4AssemblyCreator.hh,v 1.2 2000/01/21 13:45:07 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4AssemblyCreator +// +// Class description: +// +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4ASSEMBLYCREATOR_HH #define G4ASSEMBLYCREATOR_HH -#include "G4GeometryTable.hh" -#include "G4StepFileReader.hh" -#include "G4NISTStepReader.hh" - -#include "G4AdvancedBrepShapeRepresentationCreator.hh" -#include "G4ManifoldSolidBrepCreator.hh" -#include "G4ClosedShellCreator.hh" -#include "G4OpenShellCreator.hh" -#include "G4PointCreator.hh" +#include "G4GeometryCreator.hh" +class G4StepFileReader; class G4AssemblyCreator: public G4GeometryCreator { -public: - // Constructor - G4AssemblyCreator(); - G4AssemblyCreator(G4String, G4String ="NIST"); + public: + + // Constructors + + G4AssemblyCreator(); + G4AssemblyCreator(G4String, G4String ="NIST"); // Destructor - ~G4AssemblyCreator(); - - //Member functions - void ReadStepFile(); - void CreateG4Geometry(STEPentity&); - void CreateSTEPGeometry(void* G4obj); - G4String Name(){return "Assembly";} - static G4AssemblyCreator GetInstance(){return ci;} - - //Members - int index; // add by L. Broglia, memory for get STEP entity + ~G4AssemblyCreator(); -private: - G4StepFileReader* StepReader; - G4String STEPfileName; - static G4AssemblyCreator ci; + // Member functions + + void ReadStepFile(); + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Assembly"; } + static G4AssemblyCreator GetInstance() { return ci; } + + // Members + + int index; // add by L. Broglia, memory for get STEP entity + + private: + + G4StepFileReader* StepReader; + G4String STEPfileName; + static G4AssemblyCreator ci; }; #endif - diff --git a/source/geometry/solids/STEPinterface/include/G4Axis1PlacementCreator.hh b/source/geometry/solids/STEPinterface/include/G4Axis1PlacementCreator.hh index b34d776836..c82e603f83 100644 --- a/source/geometry/solids/STEPinterface/include/G4Axis1PlacementCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4Axis1PlacementCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4Axis1PlacementCreator.hh,v 1.2 2000/01/21 13:45:07 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4Axis1PlacementCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4AXIS1PLACEMENTCREATOR_HH #define G4AXIS1PLACEMENTCREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4Axis1PlacementCreator: private G4GeometryCreator { -public: -//Constructor -G4Axis1PlacementCreator(); -~G4Axis1PlacementCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4Axis1PlacementCreator(); + ~G4Axis1PlacementCreator(); -void CreateSTEPGeometry(void* G4obj); + // Member functions -G4String Name(){return "Axis1_Placement";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Axis1_Placement"; } + static G4Axis1PlacementCreator GetInstance() { return csc; } -static G4Axis1PlacementCreator GetInstance(){return csc;}; + // Members -//Members -private: + private: -static G4Axis1PlacementCreator csc; + static G4Axis1PlacementCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4Axis2Placement2dCreator.hh b/source/geometry/solids/STEPinterface/include/G4Axis2Placement2dCreator.hh index a283944729..a44ef1cce1 100644 --- a/source/geometry/solids/STEPinterface/include/G4Axis2Placement2dCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4Axis2Placement2dCreator.hh @@ -1,28 +1,51 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4Axis2Placement2dCreator.hh,v 1.2 2000/01/21 13:45:08 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4Axis2Placement2dCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4AXIS2PLACEMENT2DCREATOR_HH #define G4AXIS2PLACEMENT2DCREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4Axis2Placement2dCreator: private G4GeometryCreator { -public: -//Constructor -G4Axis2Placement2dCreator(); -~G4Axis2Placement2dCreator(); + public: + + // Constructor & destructor + G4Axis2Placement2dCreator(); + ~G4Axis2Placement2dCreator(); -//Member functions + // Member functions -void CreateG4Geometry(STEPentity&); + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Axis2_Placement_2d"; } + static G4Axis2Placement2dCreator GetInstance() { return csc; } -void CreateSTEPGeometry(void* G4obj); + //Members -G4String Name(){return "Axis2_Placement_2d";}; + private: -static G4Axis2Placement2dCreator GetInstance(){return csc;}; - -//Members -private: - -static G4Axis2Placement2dCreator csc; + static G4Axis2Placement2dCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4Axis2Placement3dCreator.hh b/source/geometry/solids/STEPinterface/include/G4Axis2Placement3dCreator.hh index 673793e0d4..7828906ba9 100644 --- a/source/geometry/solids/STEPinterface/include/G4Axis2Placement3dCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4Axis2Placement3dCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4Axis2Placement3dCreator.hh,v 1.2 2000/01/21 13:45:08 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4Axis2Placement3dCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4AXIS2PLACEMENT3DCREATOR_HH #define G4AXIS2PLACEMENT3DCREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4Axis2Placement3dCreator: private G4GeometryCreator { -public: -//Constructor -G4Axis2Placement3dCreator(); -~G4Axis2Placement3dCreator(); + public: -//Member functions + // Constructor & destructor + + G4Axis2Placement3dCreator(); + ~G4Axis2Placement3dCreator(); -void CreateG4Geometry(STEPentity&); + // Member functions -void CreateSTEPGeometry(void*); + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void*); + G4String Name() { return "Axis2_Placement_3d"; } + static G4Axis2Placement3dCreator GetInstance() { return csc; } -G4String Name(){return "Axis2_Placement_3d";}; + // Members -static G4Axis2Placement3dCreator GetInstance(){return csc;}; + private: -//Members -private: - -static G4Axis2Placement3dCreator csc; + static G4Axis2Placement3dCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4Axis2PlacementCreator.hh b/source/geometry/solids/STEPinterface/include/G4Axis2PlacementCreator.hh index 405d66409e..c873851bb5 100644 --- a/source/geometry/solids/STEPinterface/include/G4Axis2PlacementCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4Axis2PlacementCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4Axis2PlacementCreator.hh,v 1.2 2000/01/21 13:45:09 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4Axis2PlacementCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4AXIS2PLACEMENTCREATOR_HH #define G4AXIS2PLACEMENTCREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4Axis2PlacementCreator: private G4GeometryCreator { -public: -//Constructor -G4Axis2PlacementCreator(); -~G4Axis2PlacementCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4Axis2PlacementCreator(); + ~G4Axis2PlacementCreator(); -void CreateSTEPGeometry(void* G4obj); + // Member functions -G4String Name(){return "Axis2_Placement";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Axis2_Placement"; } + static G4Axis2PlacementCreator GetInstance() { return csc; } -static G4Axis2PlacementCreator GetInstance(){return csc;}; + // Members -//Members -private: + private: -static G4Axis2PlacementCreator csc; + static G4Axis2PlacementCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4Axis2PlacementsCreator.hh b/source/geometry/solids/STEPinterface/include/G4Axis2PlacementsCreator.hh index 2424a31a40..4102382dd6 100644 --- a/source/geometry/solids/STEPinterface/include/G4Axis2PlacementsCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4Axis2PlacementsCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4Axis2PlacementsCreator.hh,v 1.2 2000/01/21 13:45:09 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4Axis2PlacementsCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4AXIS2PLACEMENTSCREATOR_HH #define G4AXIS2PLACEMENTSCREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4Axis2PlacementsCreator: private G4GeometryCreator { -public: -//Constructor -G4Axis2PlacementsCreator(); -~G4Axis2PlacementsCreator(); + public: + + // Constructor & destructor -//Member functions + G4Axis2PlacementsCreator(); + ~G4Axis2PlacementsCreator(); -void CreateG4Geometry(STEPentity&); + // Member functions -void CreateSTEPGeometry(void* G4obj); + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Axis2_Placements"; } + static G4Axis2PlacementsCreator GetInstance() { return csc; } -G4String Name(){return "Axis2_Placements";}; + // Members + + private: -static G4Axis2PlacementsCreator GetInstance(){return csc;}; - -//Members -private: - -static G4Axis2PlacementsCreator csc; + static G4Axis2PlacementsCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4BSplineCurveWithKnotsCreator.hh b/source/geometry/solids/STEPinterface/include/G4BSplineCurveWithKnotsCreator.hh index 6d51f29907..25df292e0f 100644 --- a/source/geometry/solids/STEPinterface/include/G4BSplineCurveWithKnotsCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4BSplineCurveWithKnotsCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4BSplineCurveWithKnotsCreator.hh,v 1.2 2000/01/21 13:45:10 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4BSplineCurveWithKnotsCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4BSPLINECURVEWITHKNOTSCREATOR_HH #define G4BSPLINECURVEWITHKNOTSCREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4BSplineCurveWithKnotsCreator: private G4GeometryCreator { -public: -//Constructor -G4BSplineCurveWithKnotsCreator(); -~G4BSplineCurveWithKnotsCreator(); + public: + + // Constructor & destructor -//Member functions + G4BSplineCurveWithKnotsCreator(); + ~G4BSplineCurveWithKnotsCreator(); -void CreateG4Geometry(STEPentity&); + // Member functions -void CreateSTEPGeometry(void* G4obj); + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "B_Spline_Curve_With_Knots"; } + static G4BSplineCurveWithKnotsCreator GetInstance() { return csc; } -G4String Name(){return "B_Spline_Curve_With_Knots";}; + // Members -static G4BSplineCurveWithKnotsCreator GetInstance(){return csc;}; + private: -//Members -private: - -static G4BSplineCurveWithKnotsCreator csc; + static G4BSplineCurveWithKnotsCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4BSplineSurfaceCreator.hh b/source/geometry/solids/STEPinterface/include/G4BSplineSurfaceCreator.hh index 1ab9051688..7b0e6a574c 100644 --- a/source/geometry/solids/STEPinterface/include/G4BSplineSurfaceCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4BSplineSurfaceCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4BSplineSurfaceCreator.hh,v 1.2 2000/01/21 13:45:11 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4BSplineSurfaceCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4BSPLINESURFACECREATOR_HH #define G4BSPLINESURFACECREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4BSplineSurfaceCreator: public G4GeometryCreator { -public: -//Constructor -G4BSplineSurfaceCreator(); -~G4BSplineSurfaceCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4BSplineSurfaceCreator(); + ~G4BSplineSurfaceCreator(); -void CreateSTEPGeometry(void*); + // Member functions -G4String Name(){return "B_Spline_Surface";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void*); + G4String Name() { return "B_Spline_Surface"; } + static G4BSplineSurfaceCreator GetInstance() { return csc; } -static G4BSplineSurfaceCreator GetInstance(){return csc;}; + // Members -//Members -private: + private: -static G4BSplineSurfaceCreator csc; + static G4BSplineSurfaceCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4BSplineSurfaceWithKnotsCreator.hh b/source/geometry/solids/STEPinterface/include/G4BSplineSurfaceWithKnotsCreator.hh index c8bf4ca148..581c23952a 100644 --- a/source/geometry/solids/STEPinterface/include/G4BSplineSurfaceWithKnotsCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4BSplineSurfaceWithKnotsCreator.hh @@ -1,30 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4BSplineSurfaceWithKnotsCreator.hh,v 1.2 2000/01/21 13:45:11 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4BSplineSurfaceWithKnotsCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4BSPLINESURFACEWITHKNOTSCREATOR_HH #define G4BSPLINESURFACEWITHKNOTSCREATOR_HH -#include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" + #include "G4BSplineSurfaceCreator.hh" -#include "G4ControlPoints.hh" class G4BSplineSurfaceWithKnotsCreator: public G4BSplineSurfaceCreator { -public: -//Constructor -G4BSplineSurfaceWithKnotsCreator(); -~G4BSplineSurfaceWithKnotsCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4BSplineSurfaceWithKnotsCreator(); + ~G4BSplineSurfaceWithKnotsCreator(); -void CreateSTEPGeometry(void*); + // Member functions -G4String Name(){return "B_Spline_Surface_With_Knots";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void*); + G4String Name() { return "B_Spline_Surface_With_Knots"; } + static G4BSplineSurfaceWithKnotsCreator GetInstance() { return csc; } -static G4BSplineSurfaceWithKnotsCreator GetInstance(){return csc;}; + // Members -//Members -private: + private: -static G4BSplineSurfaceWithKnotsCreator csc; + static G4BSplineSurfaceWithKnotsCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4BoundedSurfaceCreator.hh b/source/geometry/solids/STEPinterface/include/G4BoundedSurfaceCreator.hh index a8dc6f5755..2cf239dbc3 100644 --- a/source/geometry/solids/STEPinterface/include/G4BoundedSurfaceCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4BoundedSurfaceCreator.hh @@ -1,30 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4BoundedSurfaceCreator.hh,v 1.2 2000/01/21 13:45:12 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4BoundedSurfaceCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4BOUNDEDSURFACECREATOR_HH #define G4BOUNDEDSURFACECREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" -#include "G4ControlPoints.hh" -#include "G4BSplineSurface.hh" class G4BoundedSurfaceCreator: private G4GeometryCreator { -public: -//Constructor -G4BoundedSurfaceCreator(); -~G4BoundedSurfaceCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4BoundedSurfaceCreator(); + ~G4BoundedSurfaceCreator(); -void CreateSTEPGeometry(void*); + // Member functions -G4String Name(){return "Bounded_Surface";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void*); + G4String Name() { return "Bounded_Surface"; } + static G4BoundedSurfaceCreator GetInstance() { return csc; } -static G4BoundedSurfaceCreator GetInstance(){return csc;}; + // Members -//Members -private: + private: -static G4BoundedSurfaceCreator csc; + static G4BoundedSurfaceCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4CartesianPointCreator.hh b/source/geometry/solids/STEPinterface/include/G4CartesianPointCreator.hh index 4e3ce4b9f6..0a5c7d8e52 100644 --- a/source/geometry/solids/STEPinterface/include/G4CartesianPointCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4CartesianPointCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4CartesianPointCreator.hh,v 1.2 2000/01/21 13:45:13 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4CartesianPointCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4CARTESIANPOINTCREATOR_HH #define G4CARTESIANPOINTCREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4CartesianPointCreator: private G4GeometryCreator { -public: -//Constructor -G4CartesianPointCreator(); -~G4CartesianPointCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4CartesianPointCreator(); + ~G4CartesianPointCreator(); -void CreateSTEPGeometry(void* G4obj); + // Member functions -G4String Name(){return "Cartesian_Point";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Cartesian_Point"; } + static G4CartesianPointCreator GetInstance() { return csc; } -static G4CartesianPointCreator GetInstance(){return csc;}; + // Members + + private: -//Members -private: - -static G4CartesianPointCreator csc; + static G4CartesianPointCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4CircleCreator.hh b/source/geometry/solids/STEPinterface/include/G4CircleCreator.hh index 88444a061a..c246242094 100644 --- a/source/geometry/solids/STEPinterface/include/G4CircleCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4CircleCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4CircleCreator.hh,v 1.2 2000/01/21 13:45:14 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4CircleCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4CIRCLECREATOR_HH #define G4CIRCLECREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4CircleCreator: private G4GeometryCreator { -public: -//Constructor -G4CircleCreator(); -~G4CircleCreator(); + public: + + // Constructor & destructor -//Member functions + G4CircleCreator(); + ~G4CircleCreator(); -void CreateG4Geometry(STEPentity&); + // Member functions -void CreateSTEPGeometry(void* G4obj); + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Circle"; } + static G4CircleCreator GetInstance() { return csc; } -G4String Name(){return "Circle";}; + // Members -static G4CircleCreator GetInstance(){return csc;}; + private: -//Members -private: - -static G4CircleCreator csc; + static G4CircleCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4ClosedShellCreator.hh b/source/geometry/solids/STEPinterface/include/G4ClosedShellCreator.hh index ee155c8f17..4e49b0744b 100644 --- a/source/geometry/solids/STEPinterface/include/G4ClosedShellCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4ClosedShellCreator.hh @@ -1,29 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ClosedShellCreator.hh,v 1.2 2000/01/21 13:45:14 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4ClosedShellCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4CLOSEDSHELLCREATOR_HH #define G4CLOSEDSHELLCREATOR_HH + #include "G4ConnectedFaceSetCreator.hh" -#include "G4GeometryTable.hh" -#include "G4BREPSolid.hh" class G4ClosedShellCreator: public G4ConnectedFaceSetCreator { -public: -//Constructor -G4ClosedShellCreator(); -~G4ClosedShellCreator(); + public: -//Member functions + // Constructor & destructor + + G4ClosedShellCreator(); + ~G4ClosedShellCreator(); -void CreateG4Geometry(STEPentity&); + // Member functions -void CreateSTEPGeometry(void* G4obj); + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Closed_Shell"; } + static G4ClosedShellCreator GetInstance() { return csc; } -G4String Name(){return "Closed_Shell";}; + //Members -static G4ClosedShellCreator GetInstance(){return csc;}; + private: -//Members -private: - -static G4ClosedShellCreator csc; + static G4ClosedShellCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4ConicCreator.hh b/source/geometry/solids/STEPinterface/include/G4ConicCreator.hh index 39d6ac7c38..2a64d10c1c 100644 --- a/source/geometry/solids/STEPinterface/include/G4ConicCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4ConicCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ConicCreator.hh,v 1.2 2000/01/21 13:45:14 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4ConicCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4CONICCREATOR_HH #define G4CONICCREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4ConicCreator: private G4GeometryCreator { -public: -//Constructor -G4ConicCreator(); -~G4ConicCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4ConicCreator(); + ~G4ConicCreator(); -void CreateSTEPGeometry(void* G4obj); + // Member functions -G4String Name(){return "Conic";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Conic"; } + static G4ConicCreator GetInstance() { return csc; } -static G4ConicCreator GetInstance(){return csc;}; + // Members + + private: -//Members -private: - -static G4ConicCreator csc; + static G4ConicCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4ConicalSurfaceCreator.hh b/source/geometry/solids/STEPinterface/include/G4ConicalSurfaceCreator.hh index f81460ac98..dc5fabee49 100644 --- a/source/geometry/solids/STEPinterface/include/G4ConicalSurfaceCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4ConicalSurfaceCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ConicalSurfaceCreator.hh,v 1.2 2000/01/21 13:45:17 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4ConicalSurfaceCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4CONICALSURFACECREATOR_HH #define G4CONICALSURFACECREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4ConicalSurfaceCreator: private G4GeometryCreator { -public: -//Constructor -G4ConicalSurfaceCreator(); -~G4ConicalSurfaceCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4ConicalSurfaceCreator(); + ~G4ConicalSurfaceCreator(); -void CreateSTEPGeometry(void*); + // Member functions -G4String Name(){return "Conical_Surface";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void*); + G4String Name() { return "Conical_Surface"; } + static G4ConicalSurfaceCreator GetInstance() { return csc; } + + // Members -static G4ConicalSurfaceCreator GetInstance(){return csc;}; + private: -//Members -private: - -static G4ConicalSurfaceCreator csc; + static G4ConicalSurfaceCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4ConnectedFaceSetCreator.hh b/source/geometry/solids/STEPinterface/include/G4ConnectedFaceSetCreator.hh index e1e64bbc9e..83b8adce6c 100644 --- a/source/geometry/solids/STEPinterface/include/G4ConnectedFaceSetCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4ConnectedFaceSetCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ConnectedFaceSetCreator.hh,v 1.2 2000/01/21 13:45:17 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4ConnectedFaceSetCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4CONNECTEDFACESETCREATOR_HH #define G4CONNECTEDFACESETCREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4ConnectedFaceSetCreator: public G4GeometryCreator { -public: -//Constructor -G4ConnectedFaceSetCreator(); -~G4ConnectedFaceSetCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4ConnectedFaceSetCreator(); + ~G4ConnectedFaceSetCreator(); -void CreateSTEPGeometry(void* G4obj); + // Member functions -G4String Name(){return "Connected_Face_Set";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Connected_Face_Set"; } + static G4ConnectedFaceSetCreator GetInstance() { return csc; } -static G4ConnectedFaceSetCreator GetInstance(){return csc;}; - -//Members + // Members + private: -static G4ConnectedFaceSetCreator csc; + static G4ConnectedFaceSetCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4ContextDependentShapeRepresentationCreator.hh b/source/geometry/solids/STEPinterface/include/G4ContextDependentShapeRepresentationCreator.hh index 70947e29ca..6fa3ee0825 100644 --- a/source/geometry/solids/STEPinterface/include/G4ContextDependentShapeRepresentationCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4ContextDependentShapeRepresentationCreator.hh @@ -1,27 +1,53 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ContextDependentShapeRepresentationCreator.hh,v 1.2 2000/01/21 13:45:17 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4ContextDependentShapeRepresentationCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4CONTEXTDEPENDENTSHAPEREPRESENTATIONCREATOR_HH #define G4CONTEXTDEPENDENTSHAPEREPRESENTATIONCREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4ContextDependentShapeRepresentationCreator: private G4GeometryCreator { -public: -//Constructor -G4ContextDependentShapeRepresentationCreator(); -~G4ContextDependentShapeRepresentationCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4ContextDependentShapeRepresentationCreator(); + ~G4ContextDependentShapeRepresentationCreator(); -void CreateSTEPGeometry(void*); + // Member functions -G4String Name(){return "Context_Dependent_Shape_Representation";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void*); + G4String Name() { return "Context_Dependent_Shape_Representation"; } + static G4ContextDependentShapeRepresentationCreator GetInstance() + { return csc; } + + // Members + + private: -static G4ContextDependentShapeRepresentationCreator GetInstance(){return csc;}; - -//Members -private: -static G4ContextDependentShapeRepresentationCreator csc; + static G4ContextDependentShapeRepresentationCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4CurveCreator.hh b/source/geometry/solids/STEPinterface/include/G4CurveCreator.hh index 738e831dc7..cc5f884a90 100644 --- a/source/geometry/solids/STEPinterface/include/G4CurveCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4CurveCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4CurveCreator.hh,v 1.2 2000/01/21 13:45:17 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4CurveCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4CURVECREATOR_HH #define G4CURVECREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4CurveCreator: private G4GeometryCreator { -public: -//Constructor -G4CurveCreator(); -~G4CurveCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4CurveCreator(); + ~G4CurveCreator(); -void CreateSTEPGeometry(void* G4obj); + // Member functions -G4String Name(){return "Curve";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Curve"; } + static G4CurveCreator GetInstance() { return csc; } -static G4CurveCreator GetInstance(){return csc;}; + // Members -//Members -private: + private: -static G4CurveCreator csc; + static G4CurveCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4CylindricalSurfaceCreator.hh b/source/geometry/solids/STEPinterface/include/G4CylindricalSurfaceCreator.hh index 59c745d8d2..a6c0aa8b6a 100644 --- a/source/geometry/solids/STEPinterface/include/G4CylindricalSurfaceCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4CylindricalSurfaceCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4CylindricalSurfaceCreator.hh,v 1.2 2000/01/21 13:45:18 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4CylindricalSurfaceCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4CYLINDRICALSURFACECREATOR_HH #define G4CYLINDRICALSURFACECREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4CylindricalSurfaceCreator: private G4GeometryCreator { -public: -//Constructor -G4CylindricalSurfaceCreator(); -~G4CylindricalSurfaceCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4CylindricalSurfaceCreator(); + ~G4CylindricalSurfaceCreator(); -void CreateSTEPGeometry(void* G4obj); + // Member functions -G4String Name(){return "Cylindrical_Surface";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Cylindrical_Surface"; } + static G4CylindricalSurfaceCreator GetInstance() { return csc; } -static G4CylindricalSurfaceCreator GetInstance(){return csc;}; + // Members + + private: -//Members -private: - -static G4CylindricalSurfaceCreator csc; + static G4CylindricalSurfaceCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4DirectionCreator.hh b/source/geometry/solids/STEPinterface/include/G4DirectionCreator.hh index 8d83e2ec96..1b4a7f3922 100644 --- a/source/geometry/solids/STEPinterface/include/G4DirectionCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4DirectionCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4DirectionCreator.hh,v 1.2 2000/01/21 13:45:18 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4DirectionCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4DIRECTIONCREATOR_HH #define G4DIRECTIONCREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4DirectionCreator: private G4GeometryCreator { -public: -//Constructor -G4DirectionCreator(); -~G4DirectionCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4DirectionCreator(); + ~G4DirectionCreator(); -void CreateSTEPGeometry(void* G4obj); + // Member functions -G4String Name(){return "Direction";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Direction"; } + static G4DirectionCreator GetInstance() { return csc; } -static G4DirectionCreator GetInstance(){return csc;}; + //Members + + private: -//Members -private: - -static G4DirectionCreator csc; + static G4DirectionCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4EdgeCurveCreator.hh b/source/geometry/solids/STEPinterface/include/G4EdgeCurveCreator.hh index b4c16a189f..feb388c98b 100644 --- a/source/geometry/solids/STEPinterface/include/G4EdgeCurveCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4EdgeCurveCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4EdgeCurveCreator.hh,v 1.2 2000/01/21 13:45:19 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4EdgeCurveCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4EDGECURVECREATOR_HH #define G4EDGECURVECREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4EdgeCurveCreator: private G4GeometryCreator { -public: -//Constructor -G4EdgeCurveCreator(); -~G4EdgeCurveCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4EdgeCurveCreator(); + ~G4EdgeCurveCreator(); -void CreateSTEPGeometry(void* G4obj); + // Member functions -G4String Name(){return "Edge_Curve";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Edge_Curve"; } + static G4EdgeCurveCreator GetInstance() { return csc; } -static G4EdgeCurveCreator GetInstance(){return csc;}; + // Members + + private: -//Members -private: - -static G4EdgeCurveCreator csc; + static G4EdgeCurveCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4EdgeLoopCreator.hh b/source/geometry/solids/STEPinterface/include/G4EdgeLoopCreator.hh index e7f2371b43..967e45abfd 100644 --- a/source/geometry/solids/STEPinterface/include/G4EdgeLoopCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4EdgeLoopCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4EdgeLoopCreator.hh,v 1.2 2000/01/21 13:45:19 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4EdgeLoopCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4EDGELOOPCREATOR_HH #define G4EDGELOOPCREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4EdgeLoopCreator: private G4GeometryCreator { -public: -//Constructor -G4EdgeLoopCreator(); -~G4EdgeLoopCreator(); + public: -//Member functions + // Constructor -void CreateG4Geometry(STEPentity&); + G4EdgeLoopCreator(); + ~G4EdgeLoopCreator(); -void CreateSTEPGeometry(void* G4obj); + // Member functions -G4String Name(){return "Edge_Loop";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Edge_Loop"; } + static G4EdgeLoopCreator GetInstance() { return csc; } -static G4EdgeLoopCreator GetInstance(){return csc;}; + // Members -//Members -private: + private: -static G4EdgeLoopCreator csc; + static G4EdgeLoopCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4EllipseCreator.hh b/source/geometry/solids/STEPinterface/include/G4EllipseCreator.hh index 01ebc20423..f9f8d89b4b 100644 --- a/source/geometry/solids/STEPinterface/include/G4EllipseCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4EllipseCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4EllipseCreator.hh,v 1.2 2000/01/21 13:45:19 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4EllipseCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4ELLIPSECREATOR_HH #define G4ELLIPSECREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4EllipseCreator: private G4GeometryCreator { -public: -//Constructor -G4EllipseCreator(); -~G4EllipseCreator(); + public: + + // Constructor & destructor -//Member functions + G4EllipseCreator(); + ~G4EllipseCreator(); -void CreateG4Geometry(STEPentity&); + // Member functions -void CreateSTEPGeometry(void* G4obj); + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Ellipse"; } + static G4EllipseCreator GetInstance() { return csc; } -G4String Name(){return "Ellipse";}; + //Members -static G4EllipseCreator GetInstance(){return csc;}; + private: -//Members -private: - -static G4EllipseCreator csc; + static G4EllipseCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4FaceBoundCreator.hh b/source/geometry/solids/STEPinterface/include/G4FaceBoundCreator.hh index 98f63d218e..7963bff8c6 100644 --- a/source/geometry/solids/STEPinterface/include/G4FaceBoundCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4FaceBoundCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4FaceBoundCreator.hh,v 1.2 2000/01/21 13:45:19 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4FaceBoundCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4FACEBOUNDCREATOR_HH #define G4FACEBOUNDCREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4FaceBoundCreator: public G4GeometryCreator { -public: -//Constructor -G4FaceBoundCreator(); -~G4FaceBoundCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4FaceBoundCreator(); + ~G4FaceBoundCreator(); -void CreateSTEPGeometry(void* G4obj); + // Member functions -G4String Name(){return "Face_Bound";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Face_Bound"; } + static G4FaceBoundCreator GetInstance() { return csc; } -static G4FaceBoundCreator GetInstance(){return csc;}; + // Members -//Members -private: + private: -static G4FaceBoundCreator csc; + static G4FaceBoundCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4FaceOuterBoundCreator.hh b/source/geometry/solids/STEPinterface/include/G4FaceOuterBoundCreator.hh index 5ecab415a1..591ff93b41 100644 --- a/source/geometry/solids/STEPinterface/include/G4FaceOuterBoundCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4FaceOuterBoundCreator.hh @@ -1,29 +1,51 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4FaceOuterBoundCreator.hh,v 1.2 2000/01/21 13:45:20 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4FaceOuterBoundCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4FACEOUTERBOUNDCREATOR_HH #define G4FACEOUTERBOUNDCREATOR_HH -#include "G4GeometryCreator.hh" -//#include "G4GeometryTable.hh" + #include "G4FaceBoundCreator.hh" class G4FaceOuterBoundCreator: public G4FaceBoundCreator { -public: -//Constructor -G4FaceOuterBoundCreator(); -~G4FaceOuterBoundCreator(); + public: -//Member functions + // Constructor & destructor -void CreateSTEPGeometry(void* G4obj); + G4FaceOuterBoundCreator(); + ~G4FaceOuterBoundCreator(); -G4String Name(){return "Face_Outer_Bound";}; + // Member functions -static G4FaceOuterBoundCreator GetInstance(){return csc;}; + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Face_Outer_Bound"; } + static G4FaceOuterBoundCreator GetInstance() { return csc; } -//Members -private: + // Members -static G4FaceOuterBoundCreator csc; + private: + + static G4FaceOuterBoundCreator csc; }; + #endif - - diff --git a/source/geometry/solids/STEPinterface/include/G4FaceSurfaceCreator.hh b/source/geometry/solids/STEPinterface/include/G4FaceSurfaceCreator.hh index 58efef4377..bf3c75fae0 100644 --- a/source/geometry/solids/STEPinterface/include/G4FaceSurfaceCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4FaceSurfaceCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4FaceSurfaceCreator.hh,v 1.2 2000/01/21 13:45:20 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4FaceSurfaceCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4FACESURFACECREATOR_HH #define G4FACESURFACECREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4FaceSurfaceCreator: public G4GeometryCreator { -public: -//Constructor -G4FaceSurfaceCreator(); -~G4FaceSurfaceCreator(); + public: -//Member functions + // Constructor & destructor + + G4FaceSurfaceCreator(); + ~G4FaceSurfaceCreator(); -void CreateG4Geometry(STEPentity&); + // Member functions -void CreateSTEPGeometry(void* G4obj); + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Face_Surface"; } + static G4FaceSurfaceCreator GetInstance() { return csc; } + + // Members -G4String Name(){return "Face_Surface";}; - -static G4FaceSurfaceCreator GetInstance(){return csc;}; - -//Members private: -static G4FaceSurfaceCreator csc; + static G4FaceSurfaceCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4GeometricRepresentationContextCreator.hh b/source/geometry/solids/STEPinterface/include/G4GeometricRepresentationContextCreator.hh index 9242cbec56..7b37a46ca0 100644 --- a/source/geometry/solids/STEPinterface/include/G4GeometricRepresentationContextCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4GeometricRepresentationContextCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4GeometricRepresentationContextCreator.hh,v 1.2 2000/01/21 13:45:25 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4GeometricRepresentationContextCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4GEOMETRICREPRESENTATIONCONTEXTCREATOR_HH #define G4GEOMETRICREPRESENTATIONCONTEXTCREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4GeometricRepresentationContextCreator: private G4GeometryCreator { -public: -//Constructor -G4GeometricRepresentationContextCreator(); -~G4GeometricRepresentationContextCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4GeometricRepresentationContextCreator(); + ~G4GeometricRepresentationContextCreator(); -void CreateSTEPGeometry(void*); + // Member functions -G4String Name(){return "Geometric_Representation_Context";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void*); + G4String Name() { return "Geometric_Representation_Context"; } + static G4GeometricRepresentationContextCreator GetInstance() { return csc; } -static G4GeometricRepresentationContextCreator GetInstance(){return csc;}; + // Members -//Members -private: + private: -static G4GeometricRepresentationContextCreator csc; + static G4GeometricRepresentationContextCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4GeometryCreator.hh b/source/geometry/solids/STEPinterface/include/G4GeometryCreator.hh index dd86d84a35..b023c7c810 100644 --- a/source/geometry/solids/STEPinterface/include/G4GeometryCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4GeometryCreator.hh @@ -1,63 +1,68 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4GeometryCreator.hh,v 1.3 2000/01/21 13:45:26 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4GeometryCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4GEOMETRYCREATOR_HH #define G4GEOMETRYCREATOR_HH -//#include "G4OrderedTable.hh" -#include "G4STEPEntity.hh" -#include "G4NISTStepReader.hh" -#include "G4Curve.hh" -#include "G4PlacedSolid.hh" -//#include "G4Placement.hh" -#include "G4Axis2Placement3D.hh" -//typedef G4RWTPtrOrderedVector G4CurveVector; -//typedef G4RWTPtrOrderedVector G4BoundaryVector; +#include +#include "globals.hh" +#include "G4PlacedSolid.hh" +#include "G4Surface.hh" +#include "G4BREPSolid.hh" + typedef G4RWTPtrOrderedVector G4PlacedSolidVector; -//typedef G4RWTPtrOrderedVector G4CreatorVector; typedef G4RWTPtrOrderedVector G4SurfaceVector; typedef G4RWTPtrOrderedVector G4SolidVector; -//typedef G4RWTPtrOrderedVector G4PlacementVector; - -//#include "G4STEPEntity.hh" -//erator ==(class G4RWTPtrOrderedVector a, class G4RWTPtrOrderedVector b){} -#include "globals.hh" -#include "instmgr.h" -#include "STEPentity.h" -#include "STEPaggregate.h" - -#include "G4Curve.hh" -//#include "G4Surface.hh" -#include "G4FPlane.hh" -#include "G4FConicalSurface.hh" -#include "G4FCylindricalSurface.hh" -#include "G4CylindricalSurface.hh" -#include "G4ToroidalSurface.hh" -#include "G4SphericalSurface.hh" -#include "G4PlacedSolid.hh" class G4GeometryCreator { -public: - G4GeometryCreator(){} - virtual ~G4GeometryCreator(){}; + public: - virtual void CreateG4Geometry(STEPentity&)=0; - virtual void CreateSTEPGeometry(void* =0)=0; + // Constructor & destructor + + G4GeometryCreator() {;} + virtual ~G4GeometryCreator() {;} - virtual void* GetCreatedObject(){return createdObject;} + // Member functions - virtual G4String Name()=0; - virtual G4bool operator==(const G4GeometryCreator&){return 0;} - virtual STEPattribute* GetNamedAttribute(G4String&,STEPentity&); - virtual STEPentity* GetNamedEntity(G4String&,STEPentity&); - G4int GetNextId(){objectId +=10 ; return objectId; } + virtual void CreateG4Geometry(STEPentity&)=0; + virtual void CreateSTEPGeometry(void* =0)=0; + + virtual void* GetCreatedObject() { return createdObject; } - static G4int objectId; - static InstMgr instanceManager; - void* createdObject; + virtual G4String Name()=0; + virtual G4bool operator==(const G4GeometryCreator&) { return 0; } + virtual STEPattribute* GetNamedAttribute(G4String&,STEPentity&); + virtual STEPentity* GetNamedEntity(G4String&,STEPentity&); + G4int GetNextId() { objectId+=10; return objectId; } + + // Members + + static G4int objectId; + static InstMgr instanceManager; + void* createdObject; }; #endif - - - diff --git a/source/geometry/solids/STEPinterface/include/G4GeometryTable.hh b/source/geometry/solids/STEPinterface/include/G4GeometryTable.hh index c4d09d9e05..cc11ee2fa9 100644 --- a/source/geometry/solids/STEPinterface/include/G4GeometryTable.hh +++ b/source/geometry/solids/STEPinterface/include/G4GeometryTable.hh @@ -1,48 +1,64 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4GeometryTable.hh,v 1.3 2000/01/21 13:45:26 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4GeometryTable +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4GEOMETRYTABLE_HH #define G4GEOMETRYTABLE_HH +#include "globals.hh" #include "G4GeometryCreator.hh" -//#include "G4OrderedTable.hh" -//#include "G4NISTStepReader.hh" -//typedef G4RWTPtrOrderedVector G4CurveVector; -//typedef G4RWTPtrOrderedVector G4BoundaryVector; -//typedef G4RWTPtrOrderedVector G4PlacedSolidVector; -//typedef G4RWTPtrOrderedVector G4CreatorVector; typedef G4RWTPtrOrderedVector G4CreatorVector; -//typedef G4RWTPtrOrderedVector G4SurfaceVector; -//typedef G4RWTPtrOrderedVector G4SolidVector; - - - -//operator ==(class G4RWTPtrOrderedVector a, class G4RWTPtrOrderedVector b){} - class G4GeometryTable { -public: + public: + // Destructor - ~G4GeometryTable(); - //Member functions - static void RegisterObject(G4GeometryCreator*); - static G4bool ExistsInTable(G4String&); - static G4GeometryCreator* GetObject(G4String); - static void* CreateObject(STEPentity&); - static void* CreateSTEPObject(void*, G4String&); - static void PrintObjectNames(); - static G4GeometryTable& GetInstance(){return gt;} + + ~G4GeometryTable(); + + // Member functions + + static void RegisterObject(G4GeometryCreator*); + static G4bool ExistsInTable(G4String&); + static G4GeometryCreator* GetObject(G4String); + static void* CreateObject(STEPentity&); + static void* CreateSTEPObject(void*, G4String&); + static void PrintObjectNames(); + static G4GeometryTable& GetInstance() { return gt; } + + public: -public: // Constructor, singleton - G4GeometryTable(); - //Members -private: - static G4CreatorVector RegisteredObjects; - static G4GeometryTable gt; + G4GeometryTable(); + + // Members + + private: + + static G4CreatorVector RegisteredObjects; + static G4GeometryTable gt; }; #endif - - - diff --git a/source/geometry/solids/STEPinterface/include/G4HyperbolaCreator.hh b/source/geometry/solids/STEPinterface/include/G4HyperbolaCreator.hh index 7e49bd2a9c..19f1226429 100644 --- a/source/geometry/solids/STEPinterface/include/G4HyperbolaCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4HyperbolaCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4HyperbolaCreator.hh,v 1.2 2000/01/21 13:45:26 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4HyperbolaCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4HYPERBOLACREATOR_HH #define G4HYPERBOLACREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4HyperbolaCreator: private G4GeometryCreator { -public: -//Constructor -G4HyperbolaCreator(); -~G4HyperbolaCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4HyperbolaCreator(); + ~G4HyperbolaCreator(); -void CreateSTEPGeometry(void* G4obj); + // Member functions -G4String Name(){return "Hyperbola";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Hyperbola"; } + static G4HyperbolaCreator GetInstance() { return csc; } -static G4HyperbolaCreator GetInstance(){return csc;}; + // Members + + private: -//Members -private: - -static G4HyperbolaCreator csc; + static G4HyperbolaCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4ItemDefinedTransformationCreator.hh b/source/geometry/solids/STEPinterface/include/G4ItemDefinedTransformationCreator.hh index 1355be5d49..9d6f98f65b 100644 --- a/source/geometry/solids/STEPinterface/include/G4ItemDefinedTransformationCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4ItemDefinedTransformationCreator.hh @@ -1,29 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ItemDefinedTransformationCreator.hh,v 1.2 2000/01/21 13:45:27 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4ItemDefinedTransformationCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4ITEMDEFINEDTRANSFORMATIONCREATOR_HH #define G4ITEMDEFINEDTRANSFORMATIONCREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" -#include "G4PlacementVector.hh" class G4ItemDefinedTransformationCreator: private G4GeometryCreator { -public: -//Constructor -G4ItemDefinedTransformationCreator(); -~G4ItemDefinedTransformationCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4ItemDefinedTransformationCreator(); + ~G4ItemDefinedTransformationCreator(); -void CreateSTEPGeometry(void*); + // Member functions -G4String Name(){return "Item_Defined_Transformation";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void*); + G4String Name() { return "Item_Defined_Transformation"; } + static G4ItemDefinedTransformationCreator GetInstance() { return csc; } -static G4ItemDefinedTransformationCreator GetInstance(){return csc;}; + // Members + + private: -//Members -private: - -static G4ItemDefinedTransformationCreator csc; + static G4ItemDefinedTransformationCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4LineCreator.hh b/source/geometry/solids/STEPinterface/include/G4LineCreator.hh index 884a90f16f..16f7c24bc9 100644 --- a/source/geometry/solids/STEPinterface/include/G4LineCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4LineCreator.hh @@ -1,29 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4LineCreator.hh,v 1.2 2000/01/21 13:45:27 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4LineCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4LINECREATOR_HH #define G4LINECREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" -#include "G4Line.hh" class G4LineCreator: private G4GeometryCreator { -public: -//Constructor -G4LineCreator(); -~G4LineCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4LineCreator(); + ~G4LineCreator(); -void CreateSTEPGeometry(void* G4obj); + // Member functions -G4String Name(){return "Line";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Line"; } + static G4LineCreator GetInstance() { return csc; } -static G4LineCreator GetInstance(){return csc;}; + // Members -//Members -private: + private: -static G4LineCreator csc; + static G4LineCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4ManifoldSolidBrepCreator.hh b/source/geometry/solids/STEPinterface/include/G4ManifoldSolidBrepCreator.hh index 67fc2f09ee..0453752275 100644 --- a/source/geometry/solids/STEPinterface/include/G4ManifoldSolidBrepCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4ManifoldSolidBrepCreator.hh @@ -1,29 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ManifoldSolidBrepCreator.hh,v 1.2 2000/01/21 13:45:27 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4ManifoldSolidBrepCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4MANIFOLDSOLIDBREPCREATOR_HH #define G4MANIFOLDSOLIDBREPCREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" -#include "G4BREPSolid.hh" class G4ManifoldSolidBrepCreator: private G4GeometryCreator { -public: -//Constructor -G4ManifoldSolidBrepCreator(); -~G4ManifoldSolidBrepCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4ManifoldSolidBrepCreator(); + ~G4ManifoldSolidBrepCreator(); -void CreateSTEPGeometry(void* G4obj); + // Member functions -G4String Name(){return "Manifold_Solid_Brep";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Manifold_Solid_Brep"; } + static G4ManifoldSolidBrepCreator GetInstance() { return csc; } -static G4ManifoldSolidBrepCreator GetInstance(){return csc;}; + // Members -//Members -private: + private: -static G4ManifoldSolidBrepCreator csc; + static G4ManifoldSolidBrepCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4NISTStepReader.hh b/source/geometry/solids/STEPinterface/include/G4NISTStepReader.hh index 0578c19138..b5f3dfc4fd 100644 --- a/source/geometry/solids/STEPinterface/include/G4NISTStepReader.hh +++ b/source/geometry/solids/STEPinterface/include/G4NISTStepReader.hh @@ -5,31 +5,28 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4NISTStepReader.hh,v 1.2 1999/12/15 14:50:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4NISTStepReader.hh,v 1.3 2000/01/21 13:45:28 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // +// ---------------------------------------------------------------------- +// Class G4NISTStepReader +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4NISTSTEPFILEREADER_HH #define G4NISTSTEPFILEREADER_HH + +#include #include "G4StepFileReader.hh" -#include "STEPfile.h" /* STEPfile class and others used by SCL */ -#include "sdai.h" /* definitions of for EXRPESS built-in types */ -#include "schema.h" -#include "instmgr.h" -//#include "G4StepFile.h" /* or suitable substitute */ - - -#ifdef __O3DB__ -#include -#endif - -#include "instmgr.h" -#include "Registry.h" -//#include "STEPfile.h" -#include "STEPentity.h" -#include "STEPaggregate.h" - - /////////////////////////////////////////////////////////////////////////////// // Function defined as a stub (necessary to use the scl) // The purpose of this function is to allow the DisplayNode object to delete @@ -57,13 +54,12 @@ void AssignFileId (STEPentity *se, InstMgr& instance_list) // define this to be the name of the display window object for // STEP entity instance editing or define your own. // This is only needed as there's a link to these from the toolkit -class STEPentity; -class InstMgr; + class StepEntityEditor { public: - StepEntityEditor() {}; - ~StepEntityEditor() {}; + StepEntityEditor() {;} + ~StepEntityEditor() {;} }; extern void AssignFileId (STEPentity *se, InstMgr& instance_list); @@ -74,15 +70,16 @@ extern void SchemaInit (Registry &); class G4NISTStepReader: public G4StepFileReader { - public: - void ReadSTEPFile(G4String); - void SaveSTEPFile(); - void UpdateSTEPFile(); - InstMgr GetInstanceManager(){return InstanceList;} + public: - private: - InstMgr InstanceList; - + void ReadSTEPFile(G4String); + void SaveSTEPFile(); + void UpdateSTEPFile(); + InstMgr GetInstanceManager() { return InstanceList; } + + private: + + InstMgr InstanceList; }; #endif diff --git a/source/geometry/solids/STEPinterface/include/G4OpenShellCreator.hh b/source/geometry/solids/STEPinterface/include/G4OpenShellCreator.hh index 31e41be07f..5704aee071 100644 --- a/source/geometry/solids/STEPinterface/include/G4OpenShellCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4OpenShellCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4OpenShellCreator.hh,v 1.2 2000/01/21 13:45:28 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4OpenShellCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4OPENSHELLCREATOR_HH #define G4OPENSHELLCREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4OpenShellCreator: private G4GeometryCreator { -public: -//Constructor -G4OpenShellCreator(); -~G4OpenShellCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4OpenShellCreator(); + ~G4OpenShellCreator(); -void CreateSTEPGeometry(void* G4obj); + // Member functions -G4String Name(){return "Open_Shell";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Open_Shell"; } + static G4OpenShellCreator GetInstance() { return csc; } -static G4OpenShellCreator GetInstance(){return csc;}; + // Members -//Members -private: + private: -static G4OpenShellCreator csc; + static G4OpenShellCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4OrientedEdgeCreator.hh b/source/geometry/solids/STEPinterface/include/G4OrientedEdgeCreator.hh index 58135c329b..0c948db2d0 100644 --- a/source/geometry/solids/STEPinterface/include/G4OrientedEdgeCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4OrientedEdgeCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4OrientedEdgeCreator.hh,v 1.2 2000/01/21 13:45:28 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4OrientedEdgeCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4ORIENTEDEDGECREATOR_HH #define G4ORIENTEDEDGECREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4OrientedEdgeCreator: private G4GeometryCreator { -public: -//Constructor -G4OrientedEdgeCreator(); -~G4OrientedEdgeCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4OrientedEdgeCreator(); + ~G4OrientedEdgeCreator(); -void CreateSTEPGeometry(void* G4obj); + // Member functions -G4String Name(){return "Oriented_Edge";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Oriented_Edge"; } + static G4OrientedEdgeCreator GetInstance() { return csc; } -static G4OrientedEdgeCreator GetInstance(){return csc;}; + // Members -//Members -private: + private: -static G4OrientedEdgeCreator csc; + static G4OrientedEdgeCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4ParabolaCreator.hh b/source/geometry/solids/STEPinterface/include/G4ParabolaCreator.hh index b818a83772..b18bfc24f8 100644 --- a/source/geometry/solids/STEPinterface/include/G4ParabolaCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4ParabolaCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ParabolaCreator.hh,v 1.2 2000/01/21 13:45:28 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4ParabolaCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4PARABOLACREATOR_HH #define G4PARABOLACREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4ParabolaCreator: private G4GeometryCreator { -public: -//Constructor -G4ParabolaCreator(); -~G4ParabolaCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4ParabolaCreator(); + ~G4ParabolaCreator(); -void CreateSTEPGeometry(void* G4obj); + // Member functions -G4String Name(){return "Parabola";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Parabola"; } + static G4ParabolaCreator GetInstance() { return csc; } -static G4ParabolaCreator GetInstance(){return csc;}; + // Members -//Members -private: + private: -static G4ParabolaCreator csc; + static G4ParabolaCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4PlaneCreator.hh b/source/geometry/solids/STEPinterface/include/G4PlaneCreator.hh index df26f1486a..92ce8b657a 100644 --- a/source/geometry/solids/STEPinterface/include/G4PlaneCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4PlaneCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4PlaneCreator.hh,v 1.2 2000/01/21 13:45:28 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4PlaneCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4PLANECREATOR_HH #define G4PLANECREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4PlaneCreator: private G4GeometryCreator { -public: -//Constructor -G4PlaneCreator(); -~G4PlaneCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4PlaneCreator(); + ~G4PlaneCreator(); -void CreateSTEPGeometry(void* G4obj); + // Member functions -G4String Name(){return "Plane";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Plane"; } + static G4PlaneCreator GetInstance() { return csc; } -static G4PlaneCreator GetInstance(){return csc;}; + // Members -//Members -private: + private: -static G4PlaneCreator csc; + static G4PlaneCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4PointCreator.hh b/source/geometry/solids/STEPinterface/include/G4PointCreator.hh index e969cc128a..c20004e910 100644 --- a/source/geometry/solids/STEPinterface/include/G4PointCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4PointCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4PointCreator.hh,v 1.2 2000/01/21 13:45:28 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4PointCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4POINTCREATOR_HH #define G4POINTCREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4PointCreator: private G4GeometryCreator { -public: -//Constructor -G4PointCreator(); -~G4PointCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4PointCreator(); + ~G4PointCreator(); -void CreateSTEPGeometry(void* G4obj); + // Member functions -G4String Name(){return "Point";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Point"; } + static G4PointCreator GetInstance() { return csc; } -static G4PointCreator GetInstance(){return csc;}; + // Members -//Members -private: + private: -static G4PointCreator csc; + static G4PointCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4PointOnCurveCreator.hh b/source/geometry/solids/STEPinterface/include/G4PointOnCurveCreator.hh index a617a08957..29b14842fa 100644 --- a/source/geometry/solids/STEPinterface/include/G4PointOnCurveCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4PointOnCurveCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4PointOnCurveCreator.hh,v 1.2 2000/01/21 13:45:29 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4PointOnCurveCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4POINTONCURVECREATOR_HH #define G4POINTONCURVECREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4PointOnCurveCreator: private G4GeometryCreator { -public: -//Constructor -G4PointOnCurveCreator(); -~G4PointOnCurveCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4PointOnCurveCreator(); + ~G4PointOnCurveCreator(); -void CreateSTEPGeometry(void* G4obj); + // Member functions -G4String Name(){return "Point_On_Curve";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Point_On_Curve"; } + static G4PointOnCurveCreator GetInstance() { return csc; } -static G4PointOnCurveCreator GetInstance(){return csc;}; + // Members -//Members -private: + private: -static G4PointOnCurveCreator csc; + static G4PointOnCurveCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4PointOnSurfaceCreator.hh b/source/geometry/solids/STEPinterface/include/G4PointOnSurfaceCreator.hh index 567821743f..0618434758 100644 --- a/source/geometry/solids/STEPinterface/include/G4PointOnSurfaceCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4PointOnSurfaceCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4PointOnSurfaceCreator.hh,v 1.2 2000/01/21 13:45:29 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4PointOnSurfaceCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4POINTONSURFACECREATOR_HH #define G4POINTONSURFACECREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4PointOnSurfaceCreator: private G4GeometryCreator { -public: -//Constructor -G4PointOnSurfaceCreator(); -~G4PointOnSurfaceCreator(); + public: -//Member functions + // Constructor & destructor + + G4PointOnSurfaceCreator(); + ~G4PointOnSurfaceCreator(); -void CreateG4Geometry(STEPentity&); + // Member functions -void CreateSTEPGeometry(void* G4obj); + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Point_On_Surface"; } + static G4PointOnSurfaceCreator GetInstance() { return csc; } -G4String Name(){return "Point_On_Surface";}; + // Members -static G4PointOnSurfaceCreator GetInstance(){return csc;}; + private: -//Members -private: - -static G4PointOnSurfaceCreator csc; + static G4PointOnSurfaceCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4PointReplicaCreator.hh b/source/geometry/solids/STEPinterface/include/G4PointReplicaCreator.hh index ad93a63efb..1be6dd7891 100644 --- a/source/geometry/solids/STEPinterface/include/G4PointReplicaCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4PointReplicaCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4PointReplicaCreator.hh,v 1.2 2000/01/21 13:45:29 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4PointReplicaCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4POINTREPLICACREATOR_HH #define G4POINTREPLICACREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4PointReplicaCreator: private G4GeometryCreator { -public: -//Constructor -G4PointReplicaCreator(); -~G4PointReplicaCreator(); + public: + + // Constructor & destructor -//Member functions + G4PointReplicaCreator(); + ~G4PointReplicaCreator(); -void CreateG4Geometry(STEPentity&); + // Member functions -void CreateSTEPGeometry(void* G4obj); + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Point_Replica"; } + static G4PointReplicaCreator GetInstance() { return csc; } -G4String Name(){return "Point_Replica";}; + // Members -static G4PointReplicaCreator GetInstance(){return csc;}; + private: -//Members -private: - -static G4PointReplicaCreator csc; + static G4PointReplicaCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4ProductDefinitionShapeCreator.hh b/source/geometry/solids/STEPinterface/include/G4ProductDefinitionShapeCreator.hh index 823bd2fc7d..1792ca61b2 100644 --- a/source/geometry/solids/STEPinterface/include/G4ProductDefinitionShapeCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4ProductDefinitionShapeCreator.hh @@ -1,28 +1,53 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ProductDefinitionShapeCreator.hh,v 1.2 2000/01/21 13:45:29 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4ProductDefinitionShapeCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4PRODUCTDEFINITIONSHAPECREATOR_HH #define G4PRODUCTDEFINITIONSHAPECREATOR_HH + #include "G4GeometryCreator.hh" #include "G4GeometryTable.hh" class G4ProductDefinitionShapeCreator: private G4GeometryCreator { -public: -//Constructor -G4ProductDefinitionShapeCreator(); -~G4ProductDefinitionShapeCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4ProductDefinitionShapeCreator(); + ~G4ProductDefinitionShapeCreator(); -void CreateSTEPGeometry(void*); + // Member functions -G4String Name(){return "Product_Definition_Shape";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void*); + G4String Name() { return "Product_Definition_Shape"; } + static G4ProductDefinitionShapeCreator GetInstance() { return csc; } -static G4ProductDefinitionShapeCreator GetInstance(){return csc;}; + // Members -//Members -private: + private: -static G4ProductDefinitionShapeCreator csc; + static G4ProductDefinitionShapeCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4RationalBSplineSurfaceCreator.hh b/source/geometry/solids/STEPinterface/include/G4RationalBSplineSurfaceCreator.hh index a5efb3f51c..2f5c1a3440 100644 --- a/source/geometry/solids/STEPinterface/include/G4RationalBSplineSurfaceCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4RationalBSplineSurfaceCreator.hh @@ -1,29 +1,53 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RationalBSplineSurfaceCreator.hh,v 1.2 2000/01/21 13:45:29 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4RationalBSplineSurfaceCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4RATIONALBSPLINESURFACECREATOR_HH #define G4RATIONALBSPLINESURFACECREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" #include "G4BSplineSurfaceCreator.hh" class G4RationalBSplineSurfaceCreator: public G4BSplineSurfaceCreator { -public: -//Constructor -G4RationalBSplineSurfaceCreator(); -~G4RationalBSplineSurfaceCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4RationalBSplineSurfaceCreator(); + ~G4RationalBSplineSurfaceCreator(); -void CreateSTEPGeometry(void*); + // Member functions -G4String Name(){return "Rational_B_Spline_Surface";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void*); + G4String Name() { return "Rational_B_Spline_Surface"; } + static G4RationalBSplineSurfaceCreator GetInstance() { return csc; } + + // Members -static G4RationalBSplineSurfaceCreator GetInstance(){return csc;}; + private: -//Members -private: - -static G4RationalBSplineSurfaceCreator csc; + static G4RationalBSplineSurfaceCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4RepresentationRelationshipCreator.hh b/source/geometry/solids/STEPinterface/include/G4RepresentationRelationshipCreator.hh index 2d4fc12103..ee9f2b3297 100644 --- a/source/geometry/solids/STEPinterface/include/G4RepresentationRelationshipCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4RepresentationRelationshipCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RepresentationRelationshipCreator.hh,v 1.3 2000/02/25 16:36:17 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4RepresentationRelationshipCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4REPRESENTATIONRELATIONSHIPCREATOR_HH #define G4REPRESENTATIONRELATIONSHIPCREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4RepresentationRelationshipCreator: private G4GeometryCreator { -public: -//Constructor -G4RepresentationRelationshipCreator(); -~G4RepresentationRelationshipCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4RepresentationRelationshipCreator(); + ~G4RepresentationRelationshipCreator(); -void CreateSTEPGeometry(void*); + // Member functions -G4String Name(){return "Representation_Relationship";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void*); + G4String Name() { return "Representation_Relationship"; } + static G4RepresentationRelationshipCreator GetInstance() { return csc; } -static G4RepresentationRelationshipCreator GetInstance(){return csc;}; + // Members -//Members -private: -static G4int placeCount; -static G4RepresentationRelationshipCreator csc; + private: + + static G4RepresentationRelationshipCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4RepresentationRelationshipWithTransformationCreator.hh b/source/geometry/solids/STEPinterface/include/G4RepresentationRelationshipWithTransformationCreator.hh index 46d05a9eb3..33be2c3e3e 100644 --- a/source/geometry/solids/STEPinterface/include/G4RepresentationRelationshipWithTransformationCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4RepresentationRelationshipWithTransformationCreator.hh @@ -1,28 +1,55 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RepresentationRelationshipWithTransformationCreator.hh,v 1.2 2000/01/21 13:45:30 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4RepresentationRelationshipWithTransformationCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4REPRESENTATIONRELATIONSHIPWITHTRANSFORMATIONCREATOR_HH #define G4REPRESENTATIONRELATIONSHIPWITHTRANSFORMATIONCREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" -class G4RepresentationRelationshipWithTransformationCreator: private G4GeometryCreator +class G4RepresentationRelationshipWithTransformationCreator + : private G4GeometryCreator { -public: -//Constructor -G4RepresentationRelationshipWithTransformationCreator(); -~G4RepresentationRelationshipWithTransformationCreator(); + public: + + // Constructor & destructor -//Member functions + G4RepresentationRelationshipWithTransformationCreator(); + ~G4RepresentationRelationshipWithTransformationCreator(); -void CreateG4Geometry(STEPentity&); + // Member functions -void CreateSTEPGeometry(void*); + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void*); + G4String Name() + { return "Representation_Relationship_With_Transformation"; } + static G4RepresentationRelationshipWithTransformationCreator GetInstance() + { return csc; } -G4String Name(){return "Representation_Relationship_With_Transformation";}; + // Members -static G4RepresentationRelationshipWithTransformationCreator GetInstance(){return csc;}; + private: -//Members -private: - -static G4RepresentationRelationshipWithTransformationCreator csc; + static G4RepresentationRelationshipWithTransformationCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4ShapeDefinitionRepresentationCreator.hh b/source/geometry/solids/STEPinterface/include/G4ShapeDefinitionRepresentationCreator.hh index f5c1e35a6b..d9b11cce47 100644 --- a/source/geometry/solids/STEPinterface/include/G4ShapeDefinitionRepresentationCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4ShapeDefinitionRepresentationCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ShapeDefinitionRepresentationCreator.hh,v 1.2 2000/01/21 13:45:30 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4ShapeDefinitionRepresentationCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4SHAPEDEFINITIONREPRESENTATIONCREATOR_HH #define G4SHAPEDEFINITIONREPRESENTATIONCREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4ShapeDefinitionRepresentationCreator: private G4GeometryCreator { -public: -//Constructor -G4ShapeDefinitionRepresentationCreator(); -~G4ShapeDefinitionRepresentationCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4ShapeDefinitionRepresentationCreator(); + ~G4ShapeDefinitionRepresentationCreator(); -void CreateSTEPGeometry(void*); + // Member functions -G4String Name(){return "Shape_Definition_Representation";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void*); + G4String Name() { return "Shape_Definition_Representation"; } + static G4ShapeDefinitionRepresentationCreator GetInstance() { return csc; } -static G4ShapeDefinitionRepresentationCreator GetInstance(){return csc;}; + // Members -//Members -private: + private: -static G4ShapeDefinitionRepresentationCreator csc; + static G4ShapeDefinitionRepresentationCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4ShapeRepresentationCreator.hh b/source/geometry/solids/STEPinterface/include/G4ShapeRepresentationCreator.hh index ba023de9ed..eeb125d34e 100644 --- a/source/geometry/solids/STEPinterface/include/G4ShapeRepresentationCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4ShapeRepresentationCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ShapeRepresentationCreator.hh,v 1.2 2000/01/21 13:45:30 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4ShapeRepresentationCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4SHAPEREPRESENTATIONCREATOR_HH #define G4SHAPEREPRESENTATIONCREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" -#include "G4PlacementVector.hh" + class G4ShapeRepresentationCreator: private G4GeometryCreator { -public: -//Constructor -G4ShapeRepresentationCreator(); -~G4ShapeRepresentationCreator(); + public: -//Member functions + // Constructor -void CreateG4Geometry(STEPentity&); + G4ShapeRepresentationCreator(); + ~G4ShapeRepresentationCreator(); -void CreateSTEPGeometry(void*); + // Member functions -G4String Name(){return "Shape_Representation";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void*); + G4String Name() { return "Shape_Representation"; } + static G4ShapeRepresentationCreator GetInstance() { return csc; } -static G4ShapeRepresentationCreator GetInstance(){return csc;}; + // Members -//Members -private: + private: -static G4ShapeRepresentationCreator csc; + static G4ShapeRepresentationCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4ShapeRepresentationRelationshipCreator.hh b/source/geometry/solids/STEPinterface/include/G4ShapeRepresentationRelationshipCreator.hh index ba8f5f081e..a3261276a7 100644 --- a/source/geometry/solids/STEPinterface/include/G4ShapeRepresentationRelationshipCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4ShapeRepresentationRelationshipCreator.hh @@ -1,29 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ShapeRepresentationRelationshipCreator.hh,v 1.2 2000/01/21 13:45:30 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4ShapeRepresentationRelationshipCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4SHAPEREPRESENTATIONRELATIONSHIPCREATOR_HH #define G4SHAPEREPRESENTATIONRELATIONSHIPCREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" -#include "G4PlacementVector.hh" class G4ShapeRepresentationRelationshipCreator: private G4GeometryCreator { -public: -//Constructor -G4ShapeRepresentationRelationshipCreator(); -~G4ShapeRepresentationRelationshipCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4ShapeRepresentationRelationshipCreator(); + ~G4ShapeRepresentationRelationshipCreator(); -void CreateSTEPGeometry(void*); + // Member functions -G4String Name(){return "Shape_Representation_Relationship";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void*); + G4String Name() { return "Shape_Representation_Relationship"; } + static G4ShapeRepresentationRelationshipCreator GetInstance() { return csc; } -static G4ShapeRepresentationRelationshipCreator GetInstance(){return csc;}; + // Members -//Members -private: + private: -static G4ShapeRepresentationRelationshipCreator csc; + static G4ShapeRepresentationRelationshipCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4SphericalSurfaceCreator.hh b/source/geometry/solids/STEPinterface/include/G4SphericalSurfaceCreator.hh index e1371933cf..41b049bfea 100644 --- a/source/geometry/solids/STEPinterface/include/G4SphericalSurfaceCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4SphericalSurfaceCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4SphericalSurfaceCreator.hh,v 1.2 2000/01/21 13:45:30 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4SphericalSurfaceCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4SPHERICALSURFACECREATOR_HH #define G4SPHERICALSURFACECREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4SphericalSurfaceCreator: private G4GeometryCreator { -public: -//Constructor -G4SphericalSurfaceCreator(); -~G4SphericalSurfaceCreator(); + public: + + // Constructor & destructor -//Member functions + G4SphericalSurfaceCreator(); + ~G4SphericalSurfaceCreator(); -void CreateG4Geometry(STEPentity&); + // Member functions -void CreateSTEPGeometry(void*); + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void*); + G4String Name() { return "Spherical_Surface"; } + static G4SphericalSurfaceCreator GetInstance() { return csc; } -G4String Name(){return "Spherical_Surface";}; + // Members -static G4SphericalSurfaceCreator GetInstance(){return csc;}; + private: -//Members -private: - -static G4SphericalSurfaceCreator csc; + static G4SphericalSurfaceCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4StepFileReader.hh b/source/geometry/solids/STEPinterface/include/G4StepFileReader.hh index b44da8b021..05955f9095 100644 --- a/source/geometry/solids/STEPinterface/include/G4StepFileReader.hh +++ b/source/geometry/solids/STEPinterface/include/G4StepFileReader.hh @@ -5,22 +5,35 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4StepFileReader.hh,v 1.2 1999/12/15 14:50:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4StepFileReader.hh,v 1.3 2000/01/21 13:45:31 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // +// ---------------------------------------------------------------------- +// Class G4StepFileReader +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4STEPFILEREADER_HH #define G4STEPFILEREADER_HH +#include #include "globals.hh" -#include "instmgr.h" class G4StepFileReader { -public: - virtual void ReadSTEPFile(G4String)=0; - virtual void SaveSTEPFile()=0; - virtual void UpdateSTEPFile()=0; - virtual InstMgr GetInstanceManager()=0; + public: + virtual void ReadSTEPFile(G4String)=0; + virtual void SaveSTEPFile()=0; + virtual void UpdateSTEPFile()=0; + virtual InstMgr GetInstanceManager()=0; }; #endif diff --git a/source/geometry/solids/STEPinterface/include/G4ToroidalSurfaceCreator.hh b/source/geometry/solids/STEPinterface/include/G4ToroidalSurfaceCreator.hh index f561b17bd0..3b0ecdb501 100644 --- a/source/geometry/solids/STEPinterface/include/G4ToroidalSurfaceCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4ToroidalSurfaceCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ToroidalSurfaceCreator.hh,v 1.2 2000/01/21 13:45:31 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4ToroidalSurfaceCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4TOROIDALSURFACECREATOR_HH #define G4TOROIDALSURFACECREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4ToroidalSurfaceCreator: private G4GeometryCreator { -public: -//Constructor -G4ToroidalSurfaceCreator(); -~G4ToroidalSurfaceCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4ToroidalSurfaceCreator(); + ~G4ToroidalSurfaceCreator(); -void CreateSTEPGeometry(void* G4obj); + // Member functions -G4String Name(){return "Toroidal_Surface";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Toroidal_Surface"; } + static G4ToroidalSurfaceCreator GetInstance() { return csc; } -static G4ToroidalSurfaceCreator GetInstance(){return csc;}; + // Members -//Members -private: + private: -static G4ToroidalSurfaceCreator csc; + static G4ToroidalSurfaceCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4VectorCreator.hh b/source/geometry/solids/STEPinterface/include/G4VectorCreator.hh index 5ddf0fa305..01e250bd97 100644 --- a/source/geometry/solids/STEPinterface/include/G4VectorCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4VectorCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4VectorCreator.hh,v 1.2 2000/01/21 13:45:31 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4VectorCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4VECTORCREATOR_HH #define G4VECTORCREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4VectorCreator: private G4GeometryCreator { -public: -//Constructor -G4VectorCreator(); -~G4VectorCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4VectorCreator(); + ~G4VectorCreator(); -void CreateSTEPGeometry(void* G4obj); + // Member functions -G4String Name(){return "Vector";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Vector"; } + static G4VectorCreator GetInstance() { return csc; } -static G4VectorCreator GetInstance(){return csc;}; + // Members -//Members -private: + private: -static G4VectorCreator csc; + static G4VectorCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/G4VertexPointCreator.hh b/source/geometry/solids/STEPinterface/include/G4VertexPointCreator.hh index d9abe52c17..37356c61a4 100644 --- a/source/geometry/solids/STEPinterface/include/G4VertexPointCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4VertexPointCreator.hh @@ -1,28 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4VertexPointCreator.hh,v 1.2 2000/01/21 13:45:39 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4VertexPointCreator +// +// Class description: +// +// + +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- #ifndef G4VERTEXPOINTCREATOR_HH #define G4VERTEXPOINTCREATOR_HH + #include "G4GeometryCreator.hh" -#include "G4GeometryTable.hh" class G4VertexPointCreator: private G4GeometryCreator { -public: -//Constructor -G4VertexPointCreator(); -~G4VertexPointCreator(); + public: -//Member functions + // Constructor & destructor -void CreateG4Geometry(STEPentity&); + G4VertexPointCreator(); + ~G4VertexPointCreator(); -void CreateSTEPGeometry(void* G4obj); + // Member functions -G4String Name(){return "Vertex_Point";}; + void CreateG4Geometry(STEPentity&); + void CreateSTEPGeometry(void* G4obj); + G4String Name() { return "Vertex_Point"; } + static G4VertexPointCreator GetInstance() { return csc; } -static G4VertexPointCreator GetInstance(){return csc;}; + // Members -//Members -private: + private: -static G4VertexPointCreator csc; + static G4VertexPointCreator csc; }; + #endif diff --git a/source/geometry/solids/STEPinterface/include/includes b/source/geometry/solids/STEPinterface/include/includes index e97b866767..ff946803b3 100644 --- a/source/geometry/solids/STEPinterface/include/includes +++ b/source/geometry/solids/STEPinterface/include/includes @@ -1,3 +1,4 @@ +#include #include "G4PointCreator.hh" #include "G4PointOnSurfaceCreator.hh" #include "G4PointOnCurveCreator.hh" diff --git a/source/geometry/solids/STEPinterface/src/G4AdvancedBrepShapeRepresentationCreator.cc b/source/geometry/solids/STEPinterface/src/G4AdvancedBrepShapeRepresentationCreator.cc index 4db9f5f757..da88123917 100644 --- a/source/geometry/solids/STEPinterface/src/G4AdvancedBrepShapeRepresentationCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4AdvancedBrepShapeRepresentationCreator.cc @@ -1,7 +1,28 @@ -#include "G4AdvancedBrepShapeRepresentationCreator.hh" -#include +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4AdvancedBrepShapeRepresentationCreator.cc,v 1.3 2000/02/25 16:36:17 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4AdvancedBrepShapeRepresentationCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- -G4AdvancedBrepShapeRepresentationCreator +#include +#include "G4AdvancedBrepShapeRepresentationCreator.hh" +#include "G4GeometryTable.hh" + +G4AdvancedBrepShapeRepresentationCreator G4AdvancedBrepShapeRepresentationCreator::csc; @@ -16,11 +37,10 @@ G4AdvancedBrepShapeRepresentationCreator:: ~G4AdvancedBrepShapeRepresentationCreator(){} -void G4AdvancedBrepShapeRepresentationCreator:: - CreateG4Geometry(STEPentity& Ent) +void G4AdvancedBrepShapeRepresentationCreator::CreateG4Geometry(STEPentity& sEnt) { G4String attrName("items"); - STEPattribute *Attr = GetNamedAttribute(attrName, Ent); + STEPattribute *Attr = GetNamedAttribute(attrName, sEnt); EntityAggregate *ea = (EntityAggregate*)Attr->ptr.a; // Get parts of this shape @@ -48,38 +68,44 @@ void G4AdvancedBrepShapeRepresentationCreator:: { ent = en->node; void *tmp = G4GeometryTable::CreateObject(*ent); - - if( !strcmp(ent->EntityName(), "Axis2_Placement_3d") ) + + if (tmp) { - // Get placement - place = (G4Axis2Placement3D*)tmp; - placement = 1; + if( !strcmp(ent->EntityName(), "Axis2_Placement_3d") ) + { + // Get placement + place = (G4Axis2Placement3D*)tmp; + placement = 1; + } + else + if( !strcmp(ent->EntityName(), "Manifold_Solid_Brep") ) + { + // Get solid + sld = (G4BREPSolid*)tmp; + nbofsolids++; + + G4int id = ent->GetFileId(); + sld->SetId(id); + + // Create the placed solid + if(placement) + placedSld = new G4PlacedSolid(sld, place); + else + placedSld = new G4PlacedSolid(sld, place0); + + placedSldV->append(placedSld); + } } else - if( !strcmp(ent->EntityName(), "Manifold_Solid_Brep") ) - { - // Get solid - sld = (G4BREPSolid*)tmp; - nbofsolids++; + G4cerr << "WARNING - G4AdvancedBrepShapeRepresentationCreator::CreateG4Geometry" << G4endl + << "\tEntity part for " << ent->EntityName() << " NOT found." << G4endl; - G4int id = ent->GetFileId(); - sld->SetId(id); - - // Create the placed solid - if(placement) - placedSld = new G4PlacedSolid(sld, place); - else - placedSld = new G4PlacedSolid(sld, place0); - - placedSldV->append(placedSld); - } - en = (EntityNode*)en->NextNode(); } // Get geometric_representation_context, but it is not used attrName = "context_of_items"; - Attr = GetNamedAttribute(attrName, Ent); + Attr = GetNamedAttribute(attrName, sEnt); createdObject = placedSldV; } @@ -87,6 +113,4 @@ void G4AdvancedBrepShapeRepresentationCreator:: void G4AdvancedBrepShapeRepresentationCreator::CreateSTEPGeometry(void* G4obj) { - } - diff --git a/source/geometry/solids/STEPinterface/src/G4AdvancedFaceCreator.cc b/source/geometry/solids/STEPinterface/src/G4AdvancedFaceCreator.cc index 5546f94ef2..a26f71146a 100644 --- a/source/geometry/solids/STEPinterface/src/G4AdvancedFaceCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4AdvancedFaceCreator.cc @@ -1,4 +1,25 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4AdvancedFaceCreator.cc,v 1.3 2000/02/25 16:36:17 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4AdvancedFaceCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4AdvancedFaceCreator.hh" +#include "G4GeometryTable.hh" #include "G4CurveVector.hh" #include "G4CompositeCurve.hh" #include "G4Surface.hh" @@ -31,42 +52,55 @@ void G4AdvancedFaceCreator::CreateG4Geometry(STEPentity& Ent) { TmpEnt = ((EntityNode*)Node)->node; tmp =G4GeometryTable::CreateObject(*TmpEnt); - G4CompositeCurve* pcc= new G4CompositeCurve; - pcc->Init(*((G4CurveVector*)tmp)); - boundaryVec->insert(pcc); + if (tmp) + { + G4CompositeCurve* pcc= new G4CompositeCurve; + pcc->Init(*((G4CurveVector*)tmp)); + boundaryVec->insert(pcc); + } Node = Node->NextNode(); } + G4int boundNum = boundaryVec->entries(); + if (boundNum != boundaryCount) + G4cerr << "WARNING - G4AdvancedFaceCreator::CreateG4Geometry" << G4endl + << "\tTotal of " << boundNum << " G4CompositeCurve components created, out of " + << boundaryCount << " expected !" << G4endl; + attrName = "face_geometry"; Attr = GetNamedAttribute(attrName, Ent); TmpEnt = *Attr->ptr.c; tmp =G4GeometryTable::CreateObject(*TmpEnt); - srf = (G4Surface*)tmp; + if (tmp) + { + srf = (G4Surface*)tmp; - Attr = Ent.NextAttribute(); - // if(*Attr->ptr.b) // BINARY_TYPE - // sense = 1; - // else - // sense = 0; + Attr = Ent.NextAttribute(); + // if(*Attr->ptr.b) // BINARY_TYPE + // sense = 1; + // else + // sense = 0; - // Utilize the INTEGER_TYPE attribute which is 0 or 1 - sense = *Attr->ptr.i; + // Utilize the INTEGER_TYPE attribute which is 0 or 1 + sense = *Attr->ptr.i; - // L. Broglia - srf->SetSameSense(sense); + // L. Broglia + srf->SetSameSense(sense); - // Now, re-calculate the normal of the plane - srf->CalcNormal(); + // Now, re-calculate the normal of the plane + srf->CalcNormal(); + + srf->SetBoundaries(boundaryVec); + } + else + G4cerr << "WARNING - G4AdvancedFaceCreator::CreateG4Geometry" << G4endl + << "\tNULL pointer to G4Surface. Advanced Face NOT instantiated." + << G4endl; - srf->SetBoundaries(boundaryVec); - createdObject= srf; } void G4AdvancedFaceCreator::CreateSTEPGeometry(void* G4obj) { - } - - diff --git a/source/geometry/solids/STEPinterface/src/G4AssemblyCreator.cc b/source/geometry/solids/STEPinterface/src/G4AssemblyCreator.cc index 34c3f393d1..dce116d7e5 100644 --- a/source/geometry/solids/STEPinterface/src/G4AssemblyCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4AssemblyCreator.cc @@ -1,5 +1,31 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4AssemblyCreator.cc,v 1.5 2000/02/25 16:36:17 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4AssemblyCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4AssemblyCreator.hh" #include "G4Assembly.hh" + +#include "G4GeometryTable.hh" +#include "G4StepFileReader.hh" +#include "G4NISTStepReader.hh" +#include "G4ToroidalSurface.hh" + extern void HeaderSchemaInit (Registry & reg); G4AssemblyCreator G4AssemblyCreator::ci; @@ -34,8 +60,11 @@ void G4AssemblyCreator::ReadStepFile() instanceManager = StepReader->GetInstanceManager(); } -void G4AssemblyCreator::CreateG4Geometry(STEPentity& Ent) -{ +void G4AssemblyCreator::CreateG4Geometry(STEPentity& sEntity) +{ + G4cout << G4endl + << "Creating assembly of G4 solids ..." << G4endl; + // Advanced_Brep_Shape_Representation are created into // Context_Dependent_Shape_Representation and // Shape_Definition_Representation @@ -53,7 +82,7 @@ void G4AssemblyCreator::CreateG4Geometry(STEPentity& Ent) STEPentity* ent=0; index = 0; - int tmpindex; + int tmpindex = 0; void *tmp = 0; G4PlacedSolidVector* psv = new G4PlacedSolidVector(); @@ -63,46 +92,52 @@ void G4AssemblyCreator::CreateG4Geometry(STEPentity& Ent) // L. Broglia if(ConDepShapes>0) { - //#define G4_STEPINTERFACE_DEBUG 1 -#ifdef G4_STEPINTERFACE_DEBUG - G4cout<<"\n\n Creating the Context_Dependent_Shape_Representation"<entries(); + // Be careful, tmpindex not correspond to STEPfile_id ! + tmpindex = instanceManager.GetIndex(ent); - for(G4int b=0; bat(b); - psv->append(ps); + G4cerr << "--- GeometryTable::CreateG4Geometry()" << G4endl; + G4cerr << " No correspondent G4 geometry created for entity: " + << ent->EntityName() << G4endl; + } + else + { + G4PlacedSolidVector* tmpV = (G4PlacedSolidVector*)tmp; + G4int entr = tmpV->entries(); + + for(G4int b=0; bat(b); + psv->append(ps); + } } index = ent->STEPfile_id ; #ifdef G4_STEPINTERFACE_DEBUG - G4cout<<" Context_Dependent_Shape_Representation find in index " - <entries(); - - for(G4int b=0; bat(b); - psv->append(ps); + G4cerr << "--- GeometryTable::CreateG4Geometry()" << G4endl; + G4cerr << " No correspondent G4 geometry created for entity: " + << ent->EntityName() << G4endl; } + else + { + G4PlacedSolidVector* tmpV = (G4PlacedSolidVector*)tmp; + G4int entr = tmpV->entries(); + for(G4int b=0; bat(b); + psv->append(ps); + } + } index = ent->STEPfile_id ; + #ifdef G4_STEPINTERFACE_DEBUG - G4cout<<" Shape_Definition_Representation find in index "<ptr.c; void * tmp = G4GeometryTable::CreateObject(*TmpEnt); - srfPoint = *(G4Point3D*)tmp; + if (tmp) + srfPoint = *(G4Point3D*)tmp; + else + G4cerr << "WARNING - G4Axis2Placement3dCreator::CreateG4Geometry" << G4endl + << "\tPoint on surface (G4Point3D) NULL !" << G4endl + << "\tThis will result as an incorrect placement." << G4endl; // Get axis Attr = Ent.NextAttribute(); TmpEnt = *Attr->ptr.c; tmp =G4GeometryTable::CreateObject(*TmpEnt); - axis = *(G4Vector3D*)tmp; + if (tmp) + axis = *(G4Vector3D*)tmp; + else + G4cerr << "WARNING - G4Axis2Placement3dCreator::CreateG4Geometry" << G4endl + << "\tPlacement axis (G4Vector3D) NULL !" << G4endl + << "\tThis will result as an incorrect placement." << G4endl; // Get direction Attr = Ent.NextAttribute(); TmpEnt = *Attr->ptr.c; tmp =G4GeometryTable::CreateObject(*TmpEnt); - dir = *(G4Vector3D*)tmp; + if (tmp) + dir = *(G4Vector3D*)tmp; + else + G4cerr << "WARNING - G4Axis2Placement3dCreator::CreateG4Geometry" << G4endl + << "\tPlacement direction (G4Vector3D) NULL !" << G4endl + << "\tThis will result as an incorrect placement." << G4endl; createdObject = new G4Axis2Placement3D(dir, axis, srfPoint); } @@ -55,27 +92,22 @@ void G4Axis2Placement3dCreator::CreateSTEPGeometry(void* G4obj) // Get location void * tmp =G4GeometryTable::CreateSTEPObject(&pt, pointName); - place->Location((SdaiCartesian_point*)tmp); + place->location_((SdaiCartesian_point*)tmp); // Get axis tmp = G4GeometryTable::CreateSTEPObject(&axis, directionName); - place->Axis((SdaiDirection*)tmp); + place->axis_((SdaiDirection*)tmp); // Get dir tmp = G4GeometryTable::CreateSTEPObject(&dir, directionName); - place->Ref_direction((SdaiDirection*)tmp); + place->ref_direction_((SdaiDirection*)tmp); // Set STEP info place->SetFileId(GetNextId()); - place->Name(""); + place->name_(""); // Write out object & subobjects place->STEPwrite(G4cout); createdObject = place; } - - - - - diff --git a/source/geometry/solids/STEPinterface/src/G4Axis2PlacementCreator.cc b/source/geometry/solids/STEPinterface/src/G4Axis2PlacementCreator.cc index 762e031b62..9bcd688df9 100644 --- a/source/geometry/solids/STEPinterface/src/G4Axis2PlacementCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4Axis2PlacementCreator.cc @@ -1,17 +1,39 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4Axis2PlacementCreator.cc,v 1.2 2000/01/21 13:45:58 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4Axis2PlacementCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4Axis2PlacementCreator.hh" +#include "G4GeometryTable.hh" G4Axis2PlacementCreator G4Axis2PlacementCreator::csc; -G4Axis2PlacementCreator::G4Axis2PlacementCreator(){G4GeometryTable::RegisterObject(this);} +G4Axis2PlacementCreator::G4Axis2PlacementCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4Axis2PlacementCreator::~G4Axis2PlacementCreator(){} +G4Axis2PlacementCreator::~G4Axis2PlacementCreator() {} void G4Axis2PlacementCreator::CreateG4Geometry(STEPentity& Ent) { - } void G4Axis2PlacementCreator::CreateSTEPGeometry(void* G4obj) { - } diff --git a/source/geometry/solids/STEPinterface/src/G4Axis2PlacementsCreator.cc b/source/geometry/solids/STEPinterface/src/G4Axis2PlacementsCreator.cc index 4c1aa2bc39..67f0d6279a 100644 --- a/source/geometry/solids/STEPinterface/src/G4Axis2PlacementsCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4Axis2PlacementsCreator.cc @@ -1,21 +1,41 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4Axis2PlacementsCreator.cc,v 1.3 2000/01/21 13:45:58 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4Axis2PlacementsCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4Axis2PlacementsCreator.hh" +#include "G4GeometryTable.hh" G4Axis2PlacementsCreator G4Axis2PlacementsCreator::csc; -G4Axis2PlacementsCreator::G4Axis2PlacementsCreator(){ +G4Axis2PlacementsCreator::G4Axis2PlacementsCreator() +{ // G4cerr << " G4Axis2PlacementsCreator default constructor " // << " calling G4GeometryTable::RegisterObject(this) " << G4endl; G4GeometryTable::RegisterObject(this); } -G4Axis2PlacementsCreator::~G4Axis2PlacementsCreator(){} +G4Axis2PlacementsCreator::~G4Axis2PlacementsCreator() {} void G4Axis2PlacementsCreator::CreateG4Geometry(STEPentity& Ent) { - } void G4Axis2PlacementsCreator::CreateSTEPGeometry(void* G4obj) { - } diff --git a/source/geometry/solids/STEPinterface/src/G4BSplineCurveWithKnotsCreator.cc b/source/geometry/solids/STEPinterface/src/G4BSplineCurveWithKnotsCreator.cc index fa8c0e5b74..08c5cc6799 100644 --- a/source/geometry/solids/STEPinterface/src/G4BSplineCurveWithKnotsCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4BSplineCurveWithKnotsCreator.cc @@ -1,5 +1,28 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4BSplineCurveWithKnotsCreator.cc,v 1.4 2000/02/25 16:36:17 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4BSplineCurveWithKnotsCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + +#include #include "G4BSplineCurveWithKnotsCreator.hh" +#include "G4GeometryTable.hh" #include "G4BSplineCurve.hh" + typedef G4RWTValVector G4doubleVector; G4BSplineCurveWithKnotsCreator G4BSplineCurveWithKnotsCreator::csc; @@ -11,7 +34,7 @@ G4BSplineCurveWithKnotsCreator::G4BSplineCurveWithKnotsCreator() } -G4BSplineCurveWithKnotsCreator::~G4BSplineCurveWithKnotsCreator(){} +G4BSplineCurveWithKnotsCreator::~G4BSplineCurveWithKnotsCreator() {} void G4BSplineCurveWithKnotsCreator::CreateG4Geometry(STEPentity& Ent) @@ -78,9 +101,16 @@ void G4BSplineCurveWithKnotsCreator::CreateG4Geometry(STEPentity& Ent) MgrNode* MgrTmp = instanceManager.FindFileId(Index); Index = instanceManager.GetIndex(MgrTmp); - Entity = instanceManager.GetSTEPentity(Index); +// Entity = instanceManager.GetSTEPentity(Index); + Entity = instanceManager.GetApplication_instance(Index); void *tmp =G4GeometryTable::CreateObject(*Entity); + if (!tmp) + { + G4cerr << "ERROR - G4BSplineCurveWithKnotsCreator::CreateG4Geometry" << G4endl + << "\tUnexpected NULL control point!" << G4endl; + G4Exception("G4BSplineCurveWithKnotsCreator: NULL G4Point3D* ?"); + } G4Point3D* pt = (G4Point3D*) tmp; G4Point3D Pt(pt->x(), pt->y(), pt->z()); @@ -184,10 +214,8 @@ void G4BSplineCurveWithKnotsCreator::CreateG4Geometry(STEPentity& Ent) bSpline->Init(degree, &controlPointsList, &knots, &weightsData); createdObject = bSpline; - } void G4BSplineCurveWithKnotsCreator::CreateSTEPGeometry(void* G4obj) { - } diff --git a/source/geometry/solids/STEPinterface/src/G4BSplineSurfaceCreator.cc b/source/geometry/solids/STEPinterface/src/G4BSplineSurfaceCreator.cc index 664ea04a3a..375aef46b3 100644 --- a/source/geometry/solids/STEPinterface/src/G4BSplineSurfaceCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4BSplineSurfaceCreator.cc @@ -1,5 +1,28 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4BSplineSurfaceCreator.cc,v 1.3 2000/02/25 16:36:17 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4BSplineSurfaceCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + +#include #include "G4BSplineSurfaceCreator.hh" +#include "G4GeometryTable.hh" #include "G4ControlPoints.hh" + G4BSplineSurfaceCreator G4BSplineSurfaceCreator::csc; G4BSplineSurfaceCreator::G4BSplineSurfaceCreator(){G4GeometryTable::RegisterObject(this);} @@ -14,17 +37,17 @@ void G4BSplineSurfaceCreator::CreateG4Geometry(STEPentity& Ent) G4String attrName("u_degree"); STEPattribute *Attr = GetNamedAttribute(attrName, Ent); u = *Attr->ptr.i; - bSpline->U_degree(*Attr->ptr.i); + bSpline->u_degree_(*Attr->ptr.i); attrName = "v_degree"; Attr = GetNamedAttribute(attrName, Ent); v=*Attr->ptr.i; - bSpline->V_degree(*Attr->ptr.i); + bSpline->v_degree_(*Attr->ptr.i); attrName = "control_points_list"; Attr = GetNamedAttribute(attrName, Ent); STEPaggregate *Aggr = Attr->ptr.a; GenericAggregate* gAggr = (GenericAggregate*)Attr->ptr.a; - bSpline->Control_points_list(gAggr); + bSpline->control_points_list_(gAggr); // Get control points @@ -86,9 +109,14 @@ void G4BSplineSurfaceCreator::CreateG4Geometry(STEPentity& Ent) //Entity = InstanceList.GetSTEPentity(Index); MgrNode* MgrTmp = instanceManager.FindFileId(Index); Index = instanceManager.GetIndex(MgrTmp); - Entity = instanceManager.GetSTEPentity(Index); +// Entity = instanceManager.GetSTEPentity(Index); + Entity = instanceManager.GetApplication_instance(Index); void *tmp =G4GeometryTable::CreateObject(*Entity); - controlPoints.put(a,b,*(G4PointRat*)tmp); + if (tmp) + controlPoints.put(a,b,*(G4PointRat*)tmp); + else + G4cerr << "WARNING - G4BSplineSurfaceCreator::CreateG4Geometry" << G4endl + << "\tNULL control point (G4PointRat) detected." << G4endl; } createdObject = bSpline; diff --git a/source/geometry/solids/STEPinterface/src/G4BSplineSurfaceWithKnotsCreator.cc b/source/geometry/solids/STEPinterface/src/G4BSplineSurfaceWithKnotsCreator.cc index 8c4ad196af..d663223cac 100644 --- a/source/geometry/solids/STEPinterface/src/G4BSplineSurfaceWithKnotsCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4BSplineSurfaceWithKnotsCreator.cc @@ -1,18 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4BSplineSurfaceWithKnotsCreator.cc,v 1.3 2000/02/25 16:36:18 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4BSplineSurfaceWithKnotsCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + +#include + #include "G4BSplineSurfaceWithKnotsCreator.hh" +#include "G4GeometryTable.hh" +#include "G4ControlPoints.hh" +#include "G4KnotVector.hh" +#include "G4BSplineSurface.hh" G4BSplineSurfaceWithKnotsCreator G4BSplineSurfaceWithKnotsCreator::csc; -G4BSplineSurfaceWithKnotsCreator::G4BSplineSurfaceWithKnotsCreator(){G4GeometryTable::RegisterObject(this);} +G4BSplineSurfaceWithKnotsCreator::G4BSplineSurfaceWithKnotsCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4BSplineSurfaceWithKnotsCreator::~G4BSplineSurfaceWithKnotsCreator(){} +G4BSplineSurfaceWithKnotsCreator::~G4BSplineSurfaceWithKnotsCreator() {} void G4BSplineSurfaceWithKnotsCreator::CreateG4Geometry(STEPentity& Ent) { - SdaiB_spline_surface_with_knots *bSpline = new SdaiB_spline_surface_with_knots(&Ent); + G4int rows=0, cols=0; + G4KnotVector* uKnots=0; + G4KnotVector* vKnots=0; + G4ControlPoints* controlPoints=0; + + SdaiB_spline_surface_with_knots bSpline(&Ent); // U dir G4String attrName("u_multiplicities"); STEPattribute *Attr = GetNamedAttribute(attrName, Ent); - bSpline->U_multiplicities((IntAggregate*)Attr->ptr.a); + bSpline.u_multiplicities_((IntAggregate*)Attr->ptr.a); STEPaggregate *multAggr = Attr->ptr.a; G4int uMultCount = multAggr->EntryCount(); @@ -32,12 +66,12 @@ void G4BSplineSurfaceWithKnotsCreator::CreateG4Geometry(STEPentity& Ent) multiNode = (IntNode*)multiNode->NextNode(); } - G4KnotVector *uKnots = new G4KnotVector(totalUKnotCount); + uKnots = new G4KnotVector(totalUKnotCount); RealNode* knotNode = (RealNode*)knotAggr->GetHead(); multiNode = (IntNode*)multAggr->GetHead(); - bSpline->U_knots((RealAggregate*)knotAggr); + bSpline.u_knots_((RealAggregate*)knotAggr); G4int multValue=0; G4double knotValue=0; @@ -60,13 +94,13 @@ void G4BSplineSurfaceWithKnotsCreator::CreateG4Geometry(STEPentity& Ent) attrName = "v_multiplicities"; Attr = GetNamedAttribute(attrName, Ent); multAggr = Attr->ptr.a; - bSpline->V_multiplicities((IntAggregate*)Attr->ptr.a); + bSpline.v_multiplicities_((IntAggregate*)Attr->ptr.a); G4int vMultCount = multAggr->EntryCount(); attrName = "v_knots"; Attr = GetNamedAttribute(attrName, Ent); knotAggr = Attr->ptr.a; - bSpline->V_knots((RealAggregate*)knotAggr); + bSpline.v_knots_((RealAggregate*)knotAggr); G4int vKnotCount = knotAggr->EntryCount(); G4int totalVKnotCount = 0; @@ -77,7 +111,7 @@ void G4BSplineSurfaceWithKnotsCreator::CreateG4Geometry(STEPentity& Ent) totalVKnotCount += multiNode->value; multiNode = (IntNode*)multiNode->NextNode(); } - G4KnotVector *vKnots = new G4KnotVector(totalVKnotCount); + vKnots = new G4KnotVector(totalVKnotCount); knotNode = (RealNode*)knotAggr->GetHead(); multiNode = (IntNode*)multAggr->GetHead(); @@ -108,17 +142,22 @@ void G4BSplineSurfaceWithKnotsCreator::CreateG4Geometry(STEPentity& Ent) if(Attr) { u = *Attr->ptr.i; - bSpline->U_degree(*Attr->ptr.i); + bSpline.u_degree_(*Attr->ptr.i); } - + else + G4cerr << "WARNING - G4BSplineSurfaceWithKnotsCreator::CreateG4Geometry" << G4endl + << "\tSurface attribute u_degree not valid." << G4endl; attrName = "v_degree"; Attr = GetNamedAttribute(attrName, Ent); if(Attr) { v=*Attr->ptr.i; - bSpline->V_degree(*Attr->ptr.i); + bSpline.v_degree_(*Attr->ptr.i); } + else + G4cerr << "WARNING - G4BSplineSurfaceWithKnotsCreator::CreateG4Geometry" << G4endl + << "\tSurface attribute v_degree not valid." << G4endl; attrName = "control_points_list"; Attr = GetNamedAttribute(attrName, Ent); @@ -126,7 +165,7 @@ void G4BSplineSurfaceWithKnotsCreator::CreateG4Geometry(STEPentity& Ent) { STEPaggregate *Aggr = Attr->ptr.a; GenericAggregate* gAggr = (GenericAggregate*)Attr->ptr.a; - bSpline->Control_points_list(gAggr); + bSpline.control_points_list_(gAggr); // Get control points G4int cols,rows; @@ -141,7 +180,7 @@ void G4BSplineSurfaceWithKnotsCreator::CreateG4Geometry(STEPentity& Ent) const char *Str = Aggr->asStr(s); G4int stringlength = strlen(Str); - G4ControlPoints controlPoints(4,rows, cols); + controlPoints = new G4ControlPoints(4,rows, cols); RealAggregate rationalAggr; RealNode* rNode =0; for(G4int a=0;aput(a,b,*(G4PointRat*)tmp); + else + G4cerr << "WARNING - G4BSplineSurfaceWithKnotsCreator::CreateG4Geometry" << G4endl + << "\tNULL control point (G4PointRat) detected." << G4endl; } - } + } + else + G4cerr << "WARNING - G4BSplineSurfaceWithKnotsCreator::CreateG4Geometry" << G4endl + << "\tSurface attribute control_points_list not valid." << G4endl; - - createdObject = bSpline; - + if (uKnots && vKnots && controlPoints) + { + createdObject = new G4BSplineSurface(rows, cols, *uKnots, *vKnots, *controlPoints); + delete uKnots; + delete vKnots; + delete controlPoints; + } + else + { + createdObject = 0; + G4cerr << "\tG4BSplineSurface not created !" << G4endl; + } + } - void G4BSplineSurfaceWithKnotsCreator::CreateSTEPGeometry(void* G4obj) +void G4BSplineSurfaceWithKnotsCreator::CreateSTEPGeometry(void* G4obj) { - } - - - - diff --git a/source/geometry/solids/STEPinterface/src/G4BoundedSurfaceCreator.cc b/source/geometry/solids/STEPinterface/src/G4BoundedSurfaceCreator.cc index 277c8ace42..a21efc13f8 100644 --- a/source/geometry/solids/STEPinterface/src/G4BoundedSurfaceCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4BoundedSurfaceCreator.cc @@ -1,11 +1,39 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4BoundedSurfaceCreator.cc,v 1.4 2000/02/25 16:36:18 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4BoundedSurfaceCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + +#include +#include + #include "G4BoundedSurfaceCreator.hh" -#include "STEPcomplex.h" +#include "G4GeometryTable.hh" +#include "G4ControlPoints.hh" +#include "G4BSplineSurface.hh" G4BoundedSurfaceCreator G4BoundedSurfaceCreator::csc; -G4BoundedSurfaceCreator::G4BoundedSurfaceCreator(){G4GeometryTable::RegisterObject(this);} +G4BoundedSurfaceCreator::G4BoundedSurfaceCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4BoundedSurfaceCreator::~G4BoundedSurfaceCreator(){} +G4BoundedSurfaceCreator::~G4BoundedSurfaceCreator() {} void G4BoundedSurfaceCreator::CreateG4Geometry(STEPentity& Ent) { @@ -19,25 +47,40 @@ void G4BoundedSurfaceCreator::CreateG4Geometry(STEPentity& Ent) if(complexEnt->EntityExists("B_Spline_Surface")) { subEnt = complexEnt->EntityPart("B_Spline_Surface"); - bSpline =(SdaiB_spline_surface*)G4GeometryTable::CreateObject(*subEnt); + bSpline =(SdaiB_spline_surface*)G4GeometryTable::CreateObject(*subEnt); + if (!bSpline) + G4cerr << "WARNING - G4BoundedSurfaceCreator::CreateG4Geometry" << G4endl + << "\tComplex entity part -BSpline surface- not found !" << G4endl; } if(complexEnt->EntityExists("B_Spline_Surface_With_Knots")) { subEnt = complexEnt->EntityPart("B_Spline_Surface_With_Knots"); bSplineWithKnots =(SdaiB_spline_surface_with_knots*)G4GeometryTable::CreateObject(*subEnt); + if (!bSplineWithKnots) + G4cerr << "WARNING - G4BoundedSurfaceCreator::CreateG4Geometry" << G4endl + << "\tComplex entity part -BSpline surface with knots- not found !" << G4endl; } if(complexEnt->EntityExists("Rational_B_Spline_Surface")) { subEnt = complexEnt->EntityPart("Rational_B_Spline_Surface"); rationalBSpline =(SdaiRational_b_spline_surface*)G4GeometryTable::CreateObject(*subEnt); + if (!rationalBSpline) + G4cerr << "WARNING - G4BoundedSurfaceCreator::CreateG4Geometry" << G4endl + << "\tComplex entity part -Rational BSpline surface- not found !" << G4endl; } + if ((!bSpline) || (!bSplineWithKnots) || (!rationalBSpline)) + { + G4cerr << "\tComplex Bounded Surface NOT created." << G4endl; + createdObject = 0; + return; + } G4int u,v; - u=bSpline->U_degree(); - v=bSpline->V_degree(); + u=bSpline->u_degree_(); + v=bSpline->v_degree_(); // Get control points @@ -50,7 +93,7 @@ void G4BoundedSurfaceCreator::CreateG4Geometry(STEPentity& Ent) G4int Index; STEPentity *Entity; SCLstring s; - STEPaggregate *Aggr=bSpline->Control_points_list(); + STEPaggregate *Aggr=bSpline->control_points_list_(); const char *Str = Aggr->asStr(s); G4int stringlength = strlen(Str); @@ -101,16 +144,21 @@ void G4BoundedSurfaceCreator::CreateG4Geometry(STEPentity& Ent) //Entity = InstanceList.GetSTEPentity(Index); MgrNode* MgrTmp = instanceManager.FindFileId(Index); Index = instanceManager.GetIndex(MgrTmp); - Entity = instanceManager.GetSTEPentity(Index); +// Entity = instanceManager.GetSTEPentity(Index); + Entity = instanceManager.GetApplication_instance(Index); void *tmp =G4GeometryTable::CreateObject(*Entity); - controlPoints.put(a,b,*(G4PointRat*)tmp); + if (tmp) + controlPoints.put(a,b,*(G4PointRat*)tmp); + else + G4cerr << "WARNING - G4BoundedSurfaceCreator::CreateG4Geometry" << G4endl + << "\tNULL control point (G4PointRat) detected." << G4endl; } // Get knot vectors - STEPaggregate *multAggr = bSplineWithKnots->U_multiplicities(); + STEPaggregate *multAggr = bSplineWithKnots->u_multiplicities_(); G4int uMultCount = multAggr->EntryCount(); - STEPaggregate *knotAggr = bSplineWithKnots->U_knots(); + STEPaggregate *knotAggr = bSplineWithKnots->u_knots_(); G4int uKnotCount = knotAggr->EntryCount(); G4int totalUKnotCount = 0; @@ -122,7 +170,7 @@ void G4BoundedSurfaceCreator::CreateG4Geometry(STEPentity& Ent) multiNode = (IntNode*)multiNode->NextNode(); } - G4KnotVector *uKnots = new G4KnotVector(totalUKnotCount); + G4KnotVector uKnots(totalUKnotCount); RealNode* knotNode = (RealNode*)knotAggr->GetHead(); multiNode = (IntNode*)multAggr->GetHead(); @@ -137,7 +185,7 @@ void G4BoundedSurfaceCreator::CreateG4Geometry(STEPentity& Ent) for(G4int b=0;bPutKnot(index, knotValue); + uKnots.PutKnot(index, knotValue); index++; } knotNode = (RealNode*)knotNode->NextNode(); @@ -146,10 +194,10 @@ void G4BoundedSurfaceCreator::CreateG4Geometry(STEPentity& Ent) // V dir - multAggr = bSplineWithKnots->V_multiplicities(); + multAggr = bSplineWithKnots->v_multiplicities_(); G4int vMultCount = multAggr->EntryCount(); - knotAggr = bSplineWithKnots->V_knots(); + knotAggr = bSplineWithKnots->v_knots_(); G4int vKnotCount = knotAggr->EntryCount(); G4int totalVKnotCount = 0; @@ -160,7 +208,7 @@ void G4BoundedSurfaceCreator::CreateG4Geometry(STEPentity& Ent) totalVKnotCount += multiNode->value; multiNode = (IntNode*)multiNode->NextNode(); } - G4KnotVector *vKnots = new G4KnotVector(totalVKnotCount); + G4KnotVector vKnots(totalVKnotCount); knotNode = (RealNode*)knotAggr->GetHead(); multiNode = (IntNode*)multAggr->GetHead(); @@ -176,7 +224,7 @@ void G4BoundedSurfaceCreator::CreateG4Geometry(STEPentity& Ent) for(G4int b=0;bPutKnot(index, knotValue); + vKnots.PutKnot(index, knotValue); index++; } knotNode = (RealNode*)knotNode->NextNode(); @@ -185,7 +233,8 @@ void G4BoundedSurfaceCreator::CreateG4Geometry(STEPentity& Ent) // copy weights data - STEPaggregate *weightAggr = rationalBSpline->Weights_data(); + STEPaggregate *weightAggr = rationalBSpline->weights_data_(); + // Temp solution until NIST supports // two dimensional instances.grrh const char* Str2 = weightAggr->asStr(s); @@ -227,19 +276,19 @@ void G4BoundedSurfaceCreator::CreateG4Geometry(STEPentity& Ent) } controlPoints.SetWeights(ratVector); - + delete [] ratVector; // create BSpline G4BSplineSurface* bSplineSrf = new G4BSplineSurface( u, v, - *uKnots, - *vKnots, + uKnots, + vKnots, controlPoints - ); + ); + createdObject = bSplineSrf; } void G4BoundedSurfaceCreator::CreateSTEPGeometry(void * G4obj) { - } diff --git a/source/geometry/solids/STEPinterface/src/G4CartesianPointCreator.cc b/source/geometry/solids/STEPinterface/src/G4CartesianPointCreator.cc index b8abe9634e..7b5f1fe7ba 100644 --- a/source/geometry/solids/STEPinterface/src/G4CartesianPointCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4CartesianPointCreator.cc @@ -1,4 +1,25 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4CartesianPointCreator.cc,v 1.2 2000/01/21 13:45:59 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4CartesianPointCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4CartesianPointCreator.hh" +#include "G4GeometryTable.hh" G4CartesianPointCreator G4CartesianPointCreator::csc; @@ -7,7 +28,7 @@ G4CartesianPointCreator::G4CartesianPointCreator() G4GeometryTable::RegisterObject(this); } -G4CartesianPointCreator::~G4CartesianPointCreator(){} +G4CartesianPointCreator::~G4CartesianPointCreator() {} void G4CartesianPointCreator::CreateG4Geometry(STEPentity& Ent) { @@ -52,16 +73,10 @@ void G4CartesianPointCreator::CreateSTEPGeometry(void* G4obj) pointAggr.AddNode(za); SdaiCartesian_point *sPoint = new SdaiCartesian_point(); - sPoint->Coordinates(&pointAggr); + sPoint->coordinates_(&pointAggr); sPoint->SetFileId(GetNextId()); - sPoint->Name(""); + sPoint->name_(""); sPoint->STEPwrite(G4cout); createdObject = sPoint; - } - - - - - diff --git a/source/geometry/solids/STEPinterface/src/G4CircleCreator.cc b/source/geometry/solids/STEPinterface/src/G4CircleCreator.cc index 2ce7a7ffd6..8e316c2792 100644 --- a/source/geometry/solids/STEPinterface/src/G4CircleCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4CircleCreator.cc @@ -1,4 +1,25 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4CircleCreator.cc,v 1.3 2000/02/25 16:36:18 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4CircleCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4CircleCreator.hh" +#include "G4GeometryTable.hh" #include "G4CircularCurve.hh" @@ -9,7 +30,7 @@ G4CircleCreator::G4CircleCreator() G4GeometryTable::RegisterObject(this); } -G4CircleCreator::~G4CircleCreator(){} +G4CircleCreator::~G4CircleCreator() {} void G4CircleCreator::CreateG4Geometry(STEPentity& Ent) { @@ -24,13 +45,18 @@ void G4CircleCreator::CreateG4Geometry(STEPentity& Ent) Attr = Ent.NextAttribute(); // Get the placement - SelectNode* SelectN = (SelectNode*)Attr->ptr.sh; - SdaiSelect* Select = (SdaiSelect*)SelectN; + // SelectNode* SelectN = (SelectNode*)Attr->ptr.sh; + // SdaiSelect* Select = (SdaiSelect*)SelectN; + SdaiSelect* Select = Attr->ptr.sh; SdaiAxis2_placement* Place = (SdaiAxis2_placement*)Select; STEPentity* TmpEnt = Place->operator SdaiAxis2_placement_3dH(); void * tmp =G4GeometryTable::CreateObject(*TmpEnt); - place = *(G4Axis2Placement3D*)tmp; + if (tmp) + place = *(G4Axis2Placement3D*)tmp; + else + G4cerr << "WARNING - G4CircleCreator::CreateG4Geometry" << G4endl + << "\tUnexpected NULL axis placement (G4Axis2Placement3D) detected." << G4endl; Attr = Ent.NextAttribute(); radius = *Attr->ptr.r; @@ -42,6 +68,4 @@ void G4CircleCreator::CreateG4Geometry(STEPentity& Ent) void G4CircleCreator::CreateSTEPGeometry(void* G4obj) { - } - diff --git a/source/geometry/solids/STEPinterface/src/G4ClosedShellCreator.cc b/source/geometry/solids/STEPinterface/src/G4ClosedShellCreator.cc index 66c904ab6d..1abf6c61e0 100644 --- a/source/geometry/solids/STEPinterface/src/G4ClosedShellCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4ClosedShellCreator.cc @@ -1,14 +1,38 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ClosedShellCreator.cc,v 1.3 2000/02/25 16:36:18 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4ClosedShellCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4ClosedShellCreator.hh" +#include "G4GeometryTable.hh" +#include "G4BREPSolid.hh" G4ClosedShellCreator G4ClosedShellCreator::csc; -G4ClosedShellCreator::G4ClosedShellCreator(){G4GeometryTable::RegisterObject(this);} +G4ClosedShellCreator::G4ClosedShellCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4ClosedShellCreator::~G4ClosedShellCreator(){} +G4ClosedShellCreator::~G4ClosedShellCreator() {} void G4ClosedShellCreator::CreateG4Geometry(STEPentity& Ent) { - G4String attrName("cfs_faces"); STEPattribute *Attr = GetNamedAttribute(attrName, Ent); STEPaggregate *Aggr = Attr->ptr.a; @@ -19,26 +43,28 @@ void G4ClosedShellCreator::CreateG4Geometry(STEPentity& Ent) G4SurfaceVector SurfaceVec; - for(G4int a=0; anode; - void *tmp =::G4GeometryTable::CreateObject(*TmpEnt); - SurfaceVec.append((G4Surface*)tmp); + void *tmp = G4GeometryTable::CreateObject(*TmpEnt); + if (tmp) SurfaceVec.append((G4Surface*)tmp); Node = Node->NextNode(); } // create G4solid - G4Surface** srfVec = new G4Surface*[FaceCount]; - - for(G4int b=0;bCfs_faces(&eAggr); - - + sld->cfs_faces_(&eAggr); sld->SetFileId(GetNextId()); - sld->Name(""); + sld->name_(""); sld->STEPwrite(G4cout); createdObject = sld; diff --git a/source/geometry/solids/STEPinterface/src/G4ConicCreator.cc b/source/geometry/solids/STEPinterface/src/G4ConicCreator.cc index 54e93915c3..9249fc8219 100644 --- a/source/geometry/solids/STEPinterface/src/G4ConicCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4ConicCreator.cc @@ -1,10 +1,34 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ConicCreator.cc,v 1.2 2000/01/21 13:45:59 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4ConicCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4ConicCreator.hh" +#include "G4GeometryTable.hh" G4ConicCreator G4ConicCreator::csc; -G4ConicCreator::G4ConicCreator(){G4GeometryTable::RegisterObject(this);} +G4ConicCreator::G4ConicCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4ConicCreator::~G4ConicCreator(){} +G4ConicCreator::~G4ConicCreator() {} void G4ConicCreator::CreateG4Geometry(STEPentity& Ent) { @@ -22,5 +46,4 @@ void G4ConicCreator::CreateG4Geometry(STEPentity& Ent) void G4ConicCreator::CreateSTEPGeometry(void* G4obj) { - } diff --git a/source/geometry/solids/STEPinterface/src/G4ConicalSurfaceCreator.cc b/source/geometry/solids/STEPinterface/src/G4ConicalSurfaceCreator.cc index d35e1ff516..c40f99f7ed 100644 --- a/source/geometry/solids/STEPinterface/src/G4ConicalSurfaceCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4ConicalSurfaceCreator.cc @@ -1,11 +1,36 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ConicalSurfaceCreator.cc,v 1.3 2000/02/25 16:36:18 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4ConicalSurfaceCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4ConicalSurfaceCreator.hh" +#include "G4GeometryTable.hh" #include "G4ConicalSurface.hh" +#include "G4FConicalSurface.hh" G4ConicalSurfaceCreator G4ConicalSurfaceCreator::csc; -G4ConicalSurfaceCreator::G4ConicalSurfaceCreator(){G4GeometryTable::RegisterObject(this);} +G4ConicalSurfaceCreator::G4ConicalSurfaceCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4ConicalSurfaceCreator::~G4ConicalSurfaceCreator(){} +G4ConicalSurfaceCreator::~G4ConicalSurfaceCreator() {} void G4ConicalSurfaceCreator::CreateG4Geometry(STEPentity& Ent) { @@ -29,14 +54,17 @@ void G4ConicalSurfaceCreator::CreateG4Geometry(STEPentity& Ent) angle = *Attr->ptr.r; // Be careful, angle is in degree - G4ConicalSurface* aG4cone = - new G4ConicalSurface( (*place).GetLocation() , - (*place).GetAxis() , - angle * 2*M_PI/360 ); + G4ConicalSurface* aG4cone = 0; + if (place) + aG4cone = new G4ConicalSurface( (*place).GetLocation() , + (*place).GetAxis() , + abs(angle * 2*M_PI/360) ); + else + G4cerr << "WARNING - G4ConicalSurfaceCreator::CreateG4Geometry" << G4endl + << "\tUnexpected NULL axis placement (G4Axis2Placement3D) !" << G4endl + << "\tConical Surface NOT created." << G4endl; createdObject = aG4cone; - - } void G4ConicalSurfaceCreator::CreateSTEPGeometry(void* G4obj) @@ -47,20 +75,17 @@ void G4ConicalSurfaceCreator::CreateSTEPGeometry(void* G4obj) G4String placementName("Axis2Placement3d"); void * tmp =G4GeometryTable::CreateSTEPObject(&fCon, placementName); SdaiAxis2_placement_3d *place = (SdaiAxis2_placement_3d*)tmp; - srf->Position(place); + srf->position_(place); // radius - srf->Radius(fCon->GetSmallRadius()); + srf->radius_(fCon->GetSmallRadius()); // semi-angle //srf->Semi_angle(fCon->GetAngle()); // Set STEP info srf->SetFileId(GetNextId()); - srf->Name(""); + srf->name_(""); // Write out object srf->STEPwrite(G4cout); createdObject = srf; } - - - diff --git a/source/geometry/solids/STEPinterface/src/G4ConnectedFaceSetCreator.cc b/source/geometry/solids/STEPinterface/src/G4ConnectedFaceSetCreator.cc index 7fb85ceeb3..f93407fbf3 100644 --- a/source/geometry/solids/STEPinterface/src/G4ConnectedFaceSetCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4ConnectedFaceSetCreator.cc @@ -1,17 +1,39 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ConnectedFaceSetCreator.cc,v 1.2 2000/01/21 13:46:00 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4ConnectedFaceSetCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4ConnectedFaceSetCreator.hh" +#include "G4GeometryTable.hh" G4ConnectedFaceSetCreator G4ConnectedFaceSetCreator::csc; -G4ConnectedFaceSetCreator::G4ConnectedFaceSetCreator(){G4GeometryTable::RegisterObject(this);} +G4ConnectedFaceSetCreator::G4ConnectedFaceSetCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4ConnectedFaceSetCreator::~G4ConnectedFaceSetCreator(){} +G4ConnectedFaceSetCreator::~G4ConnectedFaceSetCreator() {} void G4ConnectedFaceSetCreator::CreateG4Geometry(STEPentity& Ent) { - } void G4ConnectedFaceSetCreator::CreateSTEPGeometry(void* G4obj) { - } diff --git a/source/geometry/solids/STEPinterface/src/G4ContextDependentShapeRepresentationCreator.cc b/source/geometry/solids/STEPinterface/src/G4ContextDependentShapeRepresentationCreator.cc index 05bba9f5f7..8e394343dd 100644 --- a/source/geometry/solids/STEPinterface/src/G4ContextDependentShapeRepresentationCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4ContextDependentShapeRepresentationCreator.cc @@ -1,21 +1,51 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ContextDependentShapeRepresentationCreator.cc,v 1.3 2000/02/25 16:36:18 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4ContextDependentShapeRepresentationCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4ContextDependentShapeRepresentationCreator.hh" +#include "G4GeometryTable.hh" -G4ContextDependentShapeRepresentationCreator G4ContextDependentShapeRepresentationCreator::csc; +G4ContextDependentShapeRepresentationCreator + G4ContextDependentShapeRepresentationCreator::csc; -G4ContextDependentShapeRepresentationCreator::G4ContextDependentShapeRepresentationCreator(){G4GeometryTable::RegisterObject(this);} - -G4ContextDependentShapeRepresentationCreator::~G4ContextDependentShapeRepresentationCreator(){} - -void G4ContextDependentShapeRepresentationCreator::CreateG4Geometry(STEPentity& Ent) +G4ContextDependentShapeRepresentationCreator:: + G4ContextDependentShapeRepresentationCreator() +{ + G4GeometryTable::RegisterObject(this); +} + +G4ContextDependentShapeRepresentationCreator:: + ~G4ContextDependentShapeRepresentationCreator() {} + +void G4ContextDependentShapeRepresentationCreator:: + CreateG4Geometry(STEPentity& Ent) { - G4String attrName("representation_relation"); STEPattribute *Attr = GetNamedAttribute(attrName, Ent); STEPentity* TmpEnt = *Attr->ptr.c; void *tmp =G4GeometryTable::CreateObject(*TmpEnt); + if (!tmp) + G4cerr << "WARNING - G4ContextDependentShapeRepresentationCreator::CreateG4Geometry" << G4endl + << "\tNULL G4PlacedSolidVector returned." << G4endl; + G4PlacedSolidVector* psV = (G4PlacedSolidVector*)tmp; - - + // L. Broglia // For the moment, the represented_product_relation is not needed // So don`t create it @@ -27,7 +57,7 @@ void G4ContextDependentShapeRepresentationCreator::CreateG4Geometry(STEPentity& createdObject = psV; } -void G4ContextDependentShapeRepresentationCreator::CreateSTEPGeometry(void* obj) +void G4ContextDependentShapeRepresentationCreator:: + CreateSTEPGeometry(void* obj) { - } diff --git a/source/geometry/solids/STEPinterface/src/G4CurveCreator.cc b/source/geometry/solids/STEPinterface/src/G4CurveCreator.cc index 6b1ea90dcc..2f9916f601 100644 --- a/source/geometry/solids/STEPinterface/src/G4CurveCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4CurveCreator.cc @@ -1,11 +1,35 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4CurveCreator.cc,v 1.2 2000/01/21 13:46:00 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4CurveCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4CurveCreator.hh" +#include "G4GeometryTable.hh" G4CurveCreator G4CurveCreator::csc; -G4CurveCreator::G4CurveCreator(){G4GeometryTable::RegisterObject(this);} +G4CurveCreator::G4CurveCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4CurveCreator::~G4CurveCreator(){} +G4CurveCreator::~G4CurveCreator() {} -void G4CurveCreator::CreateG4Geometry(STEPentity& Ent){} +void G4CurveCreator::CreateG4Geometry(STEPentity& Ent) {} -void G4CurveCreator::CreateSTEPGeometry(void* G4obj){} +void G4CurveCreator::CreateSTEPGeometry(void* G4obj) {} diff --git a/source/geometry/solids/STEPinterface/src/G4CylindricalSurfaceCreator.cc b/source/geometry/solids/STEPinterface/src/G4CylindricalSurfaceCreator.cc index 91e080d477..819596ca9b 100644 --- a/source/geometry/solids/STEPinterface/src/G4CylindricalSurfaceCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4CylindricalSurfaceCreator.cc @@ -1,13 +1,36 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4CylindricalSurfaceCreator.cc,v 1.3 2000/02/25 16:36:18 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4CylindricalSurfaceCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4CylindricalSurfaceCreator.hh" +#include "G4GeometryTable.hh" #include "G4FCylindricalSurface.hh" #include "G4CylindricalSurface.hh" - G4CylindricalSurfaceCreator G4CylindricalSurfaceCreator::csc; -G4CylindricalSurfaceCreator::G4CylindricalSurfaceCreator(){G4GeometryTable::RegisterObject(this);} +G4CylindricalSurfaceCreator::G4CylindricalSurfaceCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4CylindricalSurfaceCreator::~G4CylindricalSurfaceCreator(){} +G4CylindricalSurfaceCreator::~G4CylindricalSurfaceCreator() {} void G4CylindricalSurfaceCreator::CreateG4Geometry(STEPentity& Ent) { @@ -30,10 +53,16 @@ void G4CylindricalSurfaceCreator::CreateG4Geometry(STEPentity& Ent) Attr = GetNamedAttribute(attrNameR, Ent); radius = *Attr->ptr.r; - G4CylindricalSurface* aG4cylinder = - new G4CylindricalSurface( (*place).GetLocation() , - (*place).GetAxis() , - radius ); + G4CylindricalSurface* aG4cylinder = 0; + if (place) + aG4cylinder = new G4CylindricalSurface( (*place).GetLocation() , + (*place).GetAxis() , + radius ); + else + G4cerr << "WARNING - G4CylindricalSurfaceCreator::CreateG4Geometry" << G4endl + << "\tUnexpected NULL axis placement (G4Axis2Placement3D) !" << G4endl + << "\tCylindrical Surface NOT created." << G4endl; + createdObject = aG4cylinder; } @@ -46,21 +75,17 @@ void G4CylindricalSurfaceCreator::CreateSTEPGeometry(void* G4obj) G4String placementName("Axis2Placement3d"); void * tmp =G4GeometryTable::CreateSTEPObject(&fCyl, placementName); SdaiAxis2_placement_3d *place = (SdaiAxis2_placement_3d*)tmp; - srf->Position(place); + srf->position_(place); // radius - srf->Radius(fCyl->GetRadius()); + srf->radius_(fCyl->GetRadius()); // Set STEP info srf->SetFileId(GetNextId()); - srf->Name(""); + srf->name_(""); // Write out object srf->STEPwrite(G4cout); createdObject = srf; } - - - - diff --git a/source/geometry/solids/STEPinterface/src/G4DirectionCreator.cc b/source/geometry/solids/STEPinterface/src/G4DirectionCreator.cc index 3721d4c4fe..50f7fe7e71 100644 --- a/source/geometry/solids/STEPinterface/src/G4DirectionCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4DirectionCreator.cc @@ -1,4 +1,25 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4DirectionCreator.cc,v 1.2 2000/01/21 13:46:00 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4DirectionCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4DirectionCreator.hh" +#include "G4GeometryTable.hh" G4DirectionCreator G4DirectionCreator::csc; @@ -7,7 +28,7 @@ G4DirectionCreator::G4DirectionCreator() G4GeometryTable::RegisterObject(this); } -G4DirectionCreator::~G4DirectionCreator(){} +G4DirectionCreator::~G4DirectionCreator() {} void G4DirectionCreator::CreateG4Geometry(STEPentity& Ent) { @@ -54,12 +75,9 @@ void G4DirectionCreator::CreateSTEPGeometry(void* G4obj) dirAggr.AddNode(za); SdaiDirection *sDir = new SdaiDirection(); - sDir->Direction_ratios(&dirAggr); + sDir->direction_ratios_(&dirAggr); sDir->SetFileId(GetNextId()); - sDir->Name(""); + sDir->name_(""); sDir->STEPwrite(G4cout); createdObject = sDir; } - - - diff --git a/source/geometry/solids/STEPinterface/src/G4EdgeCurveCreator.cc b/source/geometry/solids/STEPinterface/src/G4EdgeCurveCreator.cc index 9734d54dba..6d2b0733e7 100644 --- a/source/geometry/solids/STEPinterface/src/G4EdgeCurveCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4EdgeCurveCreator.cc @@ -1,4 +1,25 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4EdgeCurveCreator.cc,v 1.3 2000/02/25 16:36:18 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4EdgeCurveCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4EdgeCurveCreator.hh" +#include "G4GeometryTable.hh" G4EdgeCurveCreator G4EdgeCurveCreator::csc; @@ -7,12 +28,12 @@ G4EdgeCurveCreator::G4EdgeCurveCreator() G4GeometryTable::RegisterObject(this); } -G4EdgeCurveCreator::~G4EdgeCurveCreator(){} +G4EdgeCurveCreator::~G4EdgeCurveCreator() {} void G4EdgeCurveCreator::CreateG4Geometry(STEPentity& Ent) { G4Point3D *pt1,*pt2; - G4Curve* crv; + G4Curve* crv=0; G4bool sameSense; // Get start point @@ -21,6 +42,9 @@ void G4EdgeCurveCreator::CreateG4Geometry(STEPentity& Ent) STEPentity* TmpEnt = *Attr->ptr.c; void *tmp =G4GeometryTable::CreateObject(*TmpEnt); pt1 = (G4Point3D*)tmp; + if (!tmp) + G4cerr << "WARNING - G4EdgeCurveCreator::CreateG4Geometry" << G4endl + << "\tUnexpected NULL edge-start (G4Point3D) !" << G4endl; // Get end point attrName = "edge_end"; @@ -28,20 +52,38 @@ void G4EdgeCurveCreator::CreateG4Geometry(STEPentity& Ent) TmpEnt = *Attr->ptr.c; tmp =G4GeometryTable::CreateObject(*TmpEnt); pt2 = (G4Point3D*)tmp; + if (!tmp) + G4cerr << "WARNING - G4EdgeCurveCreator::CreateG4Geometry" << G4endl + << "\tUnexpected NULL edge-end (G4Point3D) !" << G4endl; // Get curve attrName = "edge_geometry"; Attr = GetNamedAttribute(attrName, Ent); TmpEnt = *Attr->ptr.c; tmp =G4GeometryTable::CreateObject(*TmpEnt); - crv = (G4Curve*)tmp; - // set the bounds - G4Point3D p1(pt1->x(), pt1->y(), pt1->z()); - G4Point3D p2(pt2->x(), pt2->y(), pt1->z()); + if ((!pt1) || (!pt2)) + { + G4cerr << "\tEdge Curve NOT created." << G4endl; + createdObject = 0; + return; + } - crv->SetBounds(p1, p2); + if (tmp) + { + crv = (G4Curve*)tmp; + + // set the bounds + G4Point3D p1(pt1->x(), pt1->y(), pt1->z()); + G4Point3D p2(pt2->x(), pt2->y(), pt1->z()); + crv->SetBounds(p1, p2); + } + else + G4cerr << "WARNING - G4EdgeCurveCreator::CreateG4Geometry" << G4endl + << "\tUnexpected NULL curve (G4Curve) !" << G4endl + << "\tEdge Curve NOT created." << G4endl; + //get sense info Attr = Ent.NextAttribute(); // sameSense = *Attr->ptr.b; @@ -50,9 +92,4 @@ void G4EdgeCurveCreator::CreateG4Geometry(STEPentity& Ent) } -void G4EdgeCurveCreator::CreateSTEPGeometry(void* G4obj){} - - - - - +void G4EdgeCurveCreator::CreateSTEPGeometry(void* G4obj) {} diff --git a/source/geometry/solids/STEPinterface/src/G4EdgeLoopCreator.cc b/source/geometry/solids/STEPinterface/src/G4EdgeLoopCreator.cc index 8d2bdc6572..79459c41b9 100644 --- a/source/geometry/solids/STEPinterface/src/G4EdgeLoopCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4EdgeLoopCreator.cc @@ -1,10 +1,34 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4EdgeLoopCreator.cc,v 1.3 2000/02/25 16:36:18 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4EdgeLoopCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4EdgeLoopCreator.hh" +#include "G4GeometryTable.hh" G4EdgeLoopCreator G4EdgeLoopCreator::csc; -G4EdgeLoopCreator::G4EdgeLoopCreator(){G4GeometryTable::RegisterObject(this);} +G4EdgeLoopCreator::G4EdgeLoopCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4EdgeLoopCreator::~G4EdgeLoopCreator(){} +G4EdgeLoopCreator::~G4EdgeLoopCreator() {} void G4EdgeLoopCreator::CreateG4Geometry(STEPentity& Ent) { @@ -16,20 +40,25 @@ void G4EdgeLoopCreator::CreateG4Geometry(STEPentity& Ent) STEPentity* TmpEnt=0; G4int EdgeCount = Aggr->EntryCount(); - G4CurveVector* CurveVec = new G4CurveVector[EdgeCount]; + G4CurveVector* CurveVec = new G4CurveVector; for(G4int a=0; anode; void *tmp =G4GeometryTable::CreateObject(*TmpEnt); - CurveVec->append((G4Curve*)tmp); + if (tmp) CurveVec->append((G4Curve*)tmp); Node = Node->NextNode(); } + G4int EdgeNum = CurveVec->entries(); + if (EdgeNum != EdgeCount) + G4cerr << "WARNING - G4EdgeLoopCreator::CreateG4Geometry" << G4endl + << "\tTotal of " << EdgeNum << " G4Curve components created, out of " + << EdgeCount << " expected !" << G4endl; + createdObject = CurveVec; } void G4EdgeLoopCreator::CreateSTEPGeometry(void* G4obj) { - } diff --git a/source/geometry/solids/STEPinterface/src/G4EllipseCreator.cc b/source/geometry/solids/STEPinterface/src/G4EllipseCreator.cc index 02f4f643f2..476aa6c10b 100644 --- a/source/geometry/solids/STEPinterface/src/G4EllipseCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4EllipseCreator.cc @@ -1,10 +1,34 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4EllipseCreator.cc,v 1.3 2000/02/25 16:36:18 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4EllipseCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4EllipseCreator.hh" +#include "G4GeometryTable.hh" G4EllipseCreator G4EllipseCreator::csc; -G4EllipseCreator::G4EllipseCreator(){G4GeometryTable::RegisterObject(this);} +G4EllipseCreator::G4EllipseCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4EllipseCreator::~G4EllipseCreator(){} +G4EllipseCreator::~G4EllipseCreator() {} void G4EllipseCreator::CreateG4Geometry(STEPentity& Ent) { @@ -12,7 +36,7 @@ void G4EllipseCreator::CreateG4Geometry(STEPentity& Ent) // L. Broglia // G4Placement* place; - G4Axis2Placement3D* place; + G4Axis2Placement3D* place=0; Ent.ResetAttributes(); STEPattribute* Attr = Ent.NextAttribute(); @@ -38,5 +62,4 @@ void G4EllipseCreator::CreateG4Geometry(STEPentity& Ent) void G4EllipseCreator::CreateSTEPGeometry(void* G4obj) { - } diff --git a/source/geometry/solids/STEPinterface/src/G4FaceBoundCreator.cc b/source/geometry/solids/STEPinterface/src/G4FaceBoundCreator.cc index 359f163f41..4b77673885 100644 --- a/source/geometry/solids/STEPinterface/src/G4FaceBoundCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4FaceBoundCreator.cc @@ -1,10 +1,34 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4FaceBoundCreator.cc,v 1.3 2000/02/25 16:36:19 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4FaceBoundCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4FaceBoundCreator.hh" +#include "G4GeometryTable.hh" G4FaceBoundCreator G4FaceBoundCreator::csc; -G4FaceBoundCreator::G4FaceBoundCreator(){G4GeometryTable::RegisterObject(this);} +G4FaceBoundCreator::G4FaceBoundCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4FaceBoundCreator::~G4FaceBoundCreator(){} +G4FaceBoundCreator::~G4FaceBoundCreator() {} void G4FaceBoundCreator::CreateG4Geometry(STEPentity& Ent) { @@ -15,6 +39,10 @@ void G4FaceBoundCreator::CreateG4Geometry(STEPentity& Ent) // Get curve STEPentity* TmpEnt = *Attr->ptr.c; void *tmp =G4GeometryTable::CreateObject(*TmpEnt); + if (!tmp) + G4cerr << "WARNING - G4FaceBoundCreator::CreateG4Geometry" << G4endl + << "\tUnexpected NULL curve vector (G4CurveVector) !" << G4endl + << "\tEntity NOT created." << G4endl; // L. Broglia // Mistake : the created object tmp is a G4CurveVector @@ -25,10 +53,8 @@ void G4FaceBoundCreator::CreateG4Geometry(STEPentity& Ent) //orientation = *Attr->ptr.i; //crv->SetSameSense(orientation); createdObject = crv; - } void G4FaceBoundCreator::CreateSTEPGeometry(void* G4obj) { - } diff --git a/source/geometry/solids/STEPinterface/src/G4FaceOuterBoundCreator.cc b/source/geometry/solids/STEPinterface/src/G4FaceOuterBoundCreator.cc index 215aa17577..d1463f606b 100644 --- a/source/geometry/solids/STEPinterface/src/G4FaceOuterBoundCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4FaceOuterBoundCreator.cc @@ -1,12 +1,35 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4FaceOuterBoundCreator.cc,v 1.2 2000/01/21 13:46:01 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4FaceOuterBoundCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4FaceOuterBoundCreator.hh" +#include "G4GeometryTable.hh" G4FaceOuterBoundCreator G4FaceOuterBoundCreator::csc; -G4FaceOuterBoundCreator::G4FaceOuterBoundCreator(){G4GeometryTable::RegisterObject(this);} +G4FaceOuterBoundCreator::G4FaceOuterBoundCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4FaceOuterBoundCreator::~G4FaceOuterBoundCreator(){} +G4FaceOuterBoundCreator::~G4FaceOuterBoundCreator() {} void G4FaceOuterBoundCreator::CreateSTEPGeometry(void* G4obj) { - } diff --git a/source/geometry/solids/STEPinterface/src/G4FaceSurfaceCreator.cc b/source/geometry/solids/STEPinterface/src/G4FaceSurfaceCreator.cc index a3497bbe86..25dca18b7f 100644 --- a/source/geometry/solids/STEPinterface/src/G4FaceSurfaceCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4FaceSurfaceCreator.cc @@ -1,10 +1,34 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4FaceSurfaceCreator.cc,v 1.3 2000/02/25 16:36:19 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4FaceSurfaceCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4FaceSurfaceCreator.hh" +#include "G4GeometryTable.hh" G4FaceSurfaceCreator G4FaceSurfaceCreator::csc; -G4FaceSurfaceCreator::G4FaceSurfaceCreator(){G4GeometryTable::RegisterObject(this);} +G4FaceSurfaceCreator::G4FaceSurfaceCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4FaceSurfaceCreator::~G4FaceSurfaceCreator(){} +G4FaceSurfaceCreator::~G4FaceSurfaceCreator() {} void G4FaceSurfaceCreator::CreateG4Geometry(STEPentity& Ent) { @@ -17,6 +41,10 @@ void G4FaceSurfaceCreator::CreateG4Geometry(STEPentity& Ent) STEPentity* TmpEnt = *Attr->ptr.c; void *tmp =G4GeometryTable::CreateObject(*TmpEnt); srf = (G4Surface*)tmp; + if (!tmp) + G4cerr << "WARNING - G4FaceSurfaceCreator::CreateG4Geometry" << G4endl + << "\tUnexpected NULL pointer to G4Surface !" << G4endl + << "\tFace Surface NOT created." << G4endl; Attr = Ent.NextAttribute(); // sense = *Attr->ptr.b; @@ -25,8 +53,4 @@ void G4FaceSurfaceCreator::CreateG4Geometry(STEPentity& Ent) void G4FaceSurfaceCreator::CreateSTEPGeometry(void* G4obj) { - } - - - diff --git a/source/geometry/solids/STEPinterface/src/G4GeometricRepresentationContextCreator.cc b/source/geometry/solids/STEPinterface/src/G4GeometricRepresentationContextCreator.cc index 4ec30b10cf..a898e26ac5 100644 --- a/source/geometry/solids/STEPinterface/src/G4GeometricRepresentationContextCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4GeometricRepresentationContextCreator.cc @@ -1,16 +1,37 @@ -#include "G4GeometricRepresentationContextCreator.hh" +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4GeometricRepresentationContextCreator.cc,v 1.3 2000/01/21 13:46:02 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------------------------------------------------------------- +// Class G4GeometricRepresentationContextCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- -G4GeometricRepresentationContextCreator G4GeometricRepresentationContextCreator -::csc; +#include "G4GeometricRepresentationContextCreator.hh" +#include "G4GeometryTable.hh" + +G4GeometricRepresentationContextCreator + G4GeometricRepresentationContextCreator::csc; G4GeometricRepresentationContextCreator:: -G4GeometricRepresentationContextCreator() + G4GeometricRepresentationContextCreator() { G4GeometryTable::RegisterObject(this); } G4GeometricRepresentationContextCreator:: -~G4GeometricRepresentationContextCreator(){} + ~G4GeometricRepresentationContextCreator() {} void G4GeometricRepresentationContextCreator::CreateG4Geometry(STEPentity& Ent) { @@ -30,5 +51,4 @@ void G4GeometricRepresentationContextCreator::CreateG4Geometry(STEPentity& Ent) void G4GeometricRepresentationContextCreator::CreateSTEPGeometry(void* G4obj) { - } diff --git a/source/geometry/solids/STEPinterface/src/G4GeometryCreator.cc b/source/geometry/solids/STEPinterface/src/G4GeometryCreator.cc index 00f3ff01f9..de68b0eaab 100644 --- a/source/geometry/solids/STEPinterface/src/G4GeometryCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4GeometryCreator.cc @@ -1,11 +1,35 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4GeometryCreator.cc,v 1.3 2000/01/21 13:46:02 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// ---------------------------------------------------------------------- +// Class G4GeometryCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + +#include +#include + #include "G4GeometryCreator.hh" #include "G4GeometryTable.hh" -#include "STEPcomplex.h" InstMgr G4GeometryCreator::instanceManager; G4int G4GeometryCreator::objectId = 0; -STEPattribute* G4GeometryCreator::GetNamedAttribute(G4String& attrName, STEPentity& Ent) +STEPattribute* +G4GeometryCreator::GetNamedAttribute(G4String& attrName, STEPentity& Ent) { STEPattribute* attr; @@ -24,7 +48,8 @@ STEPattribute* G4GeometryCreator::GetNamedAttribute(G4String& attrName, STEPenti return 0; // NULL } -STEPentity* G4GeometryCreator::GetNamedEntity(G4String& entName, STEPentity& Ent) +STEPentity* +G4GeometryCreator::GetNamedEntity(G4String& entName, STEPentity& Ent) { // Ent is a complex entity @@ -48,6 +73,7 @@ STEPentity* G4GeometryCreator::GetNamedEntity(G4String& entName, STEPentity& Ent return 0; } + /* G4int[][] G4GeometryCreator::GetIds(GenericAggregate& aggr) { @@ -57,12 +83,5 @@ G4int[][] G4GeometryCreator::GetIds(GenericAggregate& aggr) SCLstring str; G4String aggrStr = gNode->asStr(str); - - - } */ - - - - diff --git a/source/geometry/solids/STEPinterface/src/G4GeometryTable.cc b/source/geometry/solids/STEPinterface/src/G4GeometryTable.cc index 37ccb4604d..e45df4cccc 100644 --- a/source/geometry/solids/STEPinterface/src/G4GeometryTable.cc +++ b/source/geometry/solids/STEPinterface/src/G4GeometryTable.cc @@ -1,5 +1,26 @@ -#include "G4GeometryTable.hh" +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4GeometryTable.cc,v 1.6 2000/02/25 16:36:19 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// ---------------------------------------------------------------------- +// Class G4GeometryTable +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "includes" +#include "G4GeometryTable.hh" G4GeometryTable G4GeometryTable::gt; @@ -11,7 +32,6 @@ G4GeometryTable::G4GeometryTable() G4GeometryTable::~G4GeometryTable() { - } G4bool G4GeometryTable::ExistsInTable(G4String& objectName) @@ -50,25 +70,29 @@ G4GeometryCreator* G4GeometryTable::GetObject(G4String objectName) return (G4GeometryCreator*)0; } - void* G4GeometryTable::CreateObject(STEPentity& Ent) { Ent.ResetAttributes(); G4String name = Ent.EntityName(); G4GeometryCreator* gctmp = GetObject(name); +#ifdef G4_STEPINTERFACE_DEBUG + G4cout << "G4GeometryTable::CreateObject(STEPentity&) - " + << "Found STEPEntity " << name << " :" << G4endl; +#endif + if(gctmp) { gctmp->CreateG4Geometry(Ent); void* obj = gctmp->GetCreatedObject(); -//#define G4_STEPINTERFACE_DEBUG 1 #ifdef G4_STEPINTERFACE_DEBUG if (obj == 0) G4cout << "G4 object of type " << gctmp->Name() << " not necessary" << G4endl; else - //G4cout << "Created G4 object of type " << gctmp->Name() << G4endl; + G4cout << "Created G4 object of type " + << gctmp->Name() << G4endl; #endif return obj; @@ -76,13 +100,12 @@ void* G4GeometryTable::CreateObject(STEPentity& Ent) else { G4String err = "Geometry creator for entity " + name + " not found."; - G4cout << err << G4endl; - // G4Exception(err); + G4cerr << err << G4endl; + // G4Exception(err); return 0; } } - void* G4GeometryTable::CreateSTEPObject(void* G4obj, G4String& objName) { @@ -96,15 +119,14 @@ void* G4GeometryTable::CreateSTEPObject(void* G4obj, G4String& objName) } else { - G4String err = "\nSTEP creator for entity " + objName + " not found.\n"; - G4cout << err; - // G4Exception(err); + G4String err = "STEP creator for entity " + objName + " not found."; + G4cerr << err << G4endl; + // G4Exception(err); return 0; } } - void G4GeometryTable::PrintObjectNames() { G4String name; @@ -129,7 +151,6 @@ void G4GeometryTable::PrintObjectNames() } - G4PointCreator a; G4CartesianPointCreator b; G4PointOnCurveCreator c; @@ -170,7 +191,7 @@ G4SphericalSurfaceCreator s6; G4ConicalSurfaceCreator s7; G4BSplineSurfaceCreator s8; G4BoundedSurfaceCreator s9; -G4RationalBSplineSurfaceCreator s10; +//G4RationalBSplineSurfaceCreator s10; G4BSplineSurfaceWithKnotsCreator s11; G4ClosedShellCreator sc1; @@ -194,10 +215,3 @@ G4ShapeRepresentationCreator srcs; G4ShapeDefinitionRepresentationCreator sdr; G4GeometricRepresentationContextCreator grc; - - - - - - - diff --git a/source/geometry/solids/STEPinterface/src/G4HyperbolaCreator.cc b/source/geometry/solids/STEPinterface/src/G4HyperbolaCreator.cc index 688c6490af..604a461f0c 100644 --- a/source/geometry/solids/STEPinterface/src/G4HyperbolaCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4HyperbolaCreator.cc @@ -1,10 +1,35 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4HyperbolaCreator.cc,v 1.2 2000/01/21 13:46:02 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// ---------------------------------------------------------------------- +// Class G4HyperbolaCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4HyperbolaCreator.hh" +#include "G4GeometryTable.hh" G4HyperbolaCreator G4HyperbolaCreator::csc; -G4HyperbolaCreator::G4HyperbolaCreator(){G4GeometryTable::RegisterObject(this);} +G4HyperbolaCreator::G4HyperbolaCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4HyperbolaCreator::~G4HyperbolaCreator(){} +G4HyperbolaCreator::~G4HyperbolaCreator() {} void G4HyperbolaCreator::CreateG4Geometry(STEPentity& Ent) { @@ -38,8 +63,4 @@ void G4HyperbolaCreator::CreateG4Geometry(STEPentity& Ent) void G4HyperbolaCreator::CreateSTEPGeometry(void* G4obj) { - } - - - diff --git a/source/geometry/solids/STEPinterface/src/G4ItemDefinedTransformationCreator.cc b/source/geometry/solids/STEPinterface/src/G4ItemDefinedTransformationCreator.cc index 97a4976e7b..b67cdf709c 100644 --- a/source/geometry/solids/STEPinterface/src/G4ItemDefinedTransformationCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4ItemDefinedTransformationCreator.cc @@ -1,10 +1,36 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ItemDefinedTransformationCreator.cc,v 1.3 2000/02/25 16:36:19 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// ---------------------------------------------------------------------- +// Class G4ItemDefinedTransformationCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4ItemDefinedTransformationCreator.hh" +#include "G4GeometryTable.hh" +#include "G4PlacementVector.hh" G4ItemDefinedTransformationCreator G4ItemDefinedTransformationCreator::csc; -G4ItemDefinedTransformationCreator::G4ItemDefinedTransformationCreator(){G4GeometryTable::RegisterObject(this);} +G4ItemDefinedTransformationCreator::G4ItemDefinedTransformationCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4ItemDefinedTransformationCreator::~G4ItemDefinedTransformationCreator(){} +G4ItemDefinedTransformationCreator::~G4ItemDefinedTransformationCreator() {} void G4ItemDefinedTransformationCreator::CreateG4Geometry(STEPentity& Ent) { @@ -18,27 +44,34 @@ void G4ItemDefinedTransformationCreator::CreateG4Geometry(STEPentity& Ent) STEPattribute *Attr = GetNamedAttribute(attrName, Ent); STEPentity* TmpEnt = *Attr->ptr.c; void *tmp =G4GeometryTable::CreateObject(*TmpEnt); + if (!tmp) + G4cerr << "WARNING - G4ItemDefinedTransformationCreator::CreateG4Geometry" << G4endl + << "\t" << attrName << ": unexpected NULL axis placement (G4Axis2Placement3D) !" + << G4endl; // L. Broglia // place = (G4Placement*)tmp; place = (G4Axis2Placement3D*)tmp; - places->append(place); + if (place) places->append(place); attrName="transform_item_2"; Attr = GetNamedAttribute(attrName, Ent); TmpEnt = *Attr->ptr.c; tmp =G4GeometryTable::CreateObject(*TmpEnt); + if (!tmp) + G4cerr << "WARNING - G4ItemDefinedTransformationCreator::CreateG4Geometry" << G4endl + << "\t" << attrName << ": unexpected NULL axis placement (G4Axis2Placement3D) !" + << G4endl; // L. Broglia // place = (G4Placement*)tmp; place = (G4Axis2Placement3D*)tmp; - places->append(place); + if (place) places->append(place); createdObject = places; } void G4ItemDefinedTransformationCreator::CreateSTEPGeometry(void* G4obj) { - } diff --git a/source/geometry/solids/STEPinterface/src/G4LineCreator.cc b/source/geometry/solids/STEPinterface/src/G4LineCreator.cc index f85b12aa52..660cbe7a10 100644 --- a/source/geometry/solids/STEPinterface/src/G4LineCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4LineCreator.cc @@ -1,10 +1,36 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4LineCreator.cc,v 1.3 2000/02/25 16:36:19 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// ---------------------------------------------------------------------- +// Class G4LineCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4LineCreator.hh" +#include "G4GeometryTable.hh" +#include "G4Line.hh" G4LineCreator G4LineCreator::csc; -G4LineCreator::G4LineCreator(){G4GeometryTable::RegisterObject(this);} +G4LineCreator::G4LineCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4LineCreator::~G4LineCreator(){} +G4LineCreator::~G4LineCreator() {} void G4LineCreator::CreateG4Geometry(STEPentity& Ent) { @@ -20,14 +46,23 @@ void G4LineCreator::CreateG4Geometry(STEPentity& Ent) // Get the line origin STEPentity* TmpEnt = *Attr->ptr.c; void *tmp =G4GeometryTable::CreateObject(*TmpEnt); - origin = *(G4ThreeVector*)tmp; + if (tmp) + origin = *(G4ThreeVector*)tmp; + else + G4cerr << "WARNING - G4LineCreator::CreateG4Geometry" << G4endl + << "\tUnexpected NULL origin (G4ThreeVector) for G4Line !" << G4endl + << "\tG4Line origin set to (0,0,0)." << G4endl; // Get the line direction Attr = Ent.NextAttribute(); TmpEnt = *Attr->ptr.c; tmp =G4GeometryTable::CreateObject(*TmpEnt); - dir = *(G4ThreeVector*)tmp; - + if (tmp) + dir = *(G4ThreeVector*)tmp; + else + G4cerr << "WARNING - G4LineCreator::CreateG4Geometry" << G4endl + << "\tUnexpected NULL direction (G4ThreeVector) for G4Line !" << G4endl + << "\tG4Line direction set to (0,0,0)." << G4endl; G4Line* line = new G4Line(); line->Init(origin, dir); @@ -36,5 +71,4 @@ void G4LineCreator::CreateG4Geometry(STEPentity& Ent) void G4LineCreator::CreateSTEPGeometry(void* G4obj) { - } diff --git a/source/geometry/solids/STEPinterface/src/G4ManifoldSolidBrepCreator.cc b/source/geometry/solids/STEPinterface/src/G4ManifoldSolidBrepCreator.cc index 5c5204b874..7df966205c 100644 --- a/source/geometry/solids/STEPinterface/src/G4ManifoldSolidBrepCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4ManifoldSolidBrepCreator.cc @@ -1,10 +1,36 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ManifoldSolidBrepCreator.cc,v 1.3 2000/02/25 16:36:19 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// ---------------------------------------------------------------------- +// Class G4ManifoldSolidBrepCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4ManifoldSolidBrepCreator.hh" +#include "G4GeometryTable.hh" +#include "G4BREPSolid.hh" G4ManifoldSolidBrepCreator G4ManifoldSolidBrepCreator::csc; -G4ManifoldSolidBrepCreator::G4ManifoldSolidBrepCreator(){G4GeometryTable::RegisterObject(this);} +G4ManifoldSolidBrepCreator::G4ManifoldSolidBrepCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4ManifoldSolidBrepCreator::~G4ManifoldSolidBrepCreator(){} +G4ManifoldSolidBrepCreator::~G4ManifoldSolidBrepCreator() {} void G4ManifoldSolidBrepCreator::CreateG4Geometry(STEPentity& Ent) { @@ -16,11 +42,15 @@ void G4ManifoldSolidBrepCreator::CreateG4Geometry(STEPentity& Ent) // Get solid STEPentity* TmpEnt = *Attr->ptr.c; void *tmp =G4GeometryTable::CreateObject(*TmpEnt); + if (!tmp) + G4cerr << "WARNING - G4ManifoldSolidBrepCreator::CreateG4Geometry" << G4endl + << "\tUnexpected NULL pointer to BREP Solid !" << G4endl + << "\tBREP Solid NOT created." << G4endl; + sld = (G4BREPSolid*)tmp; createdObject = sld; } void G4ManifoldSolidBrepCreator::CreateSTEPGeometry(void* G4obj) { - } diff --git a/source/geometry/solids/STEPinterface/src/G4NISTStepReader.cc b/source/geometry/solids/STEPinterface/src/G4NISTStepReader.cc index edcafde549..000a5b13d1 100644 --- a/source/geometry/solids/STEPinterface/src/G4NISTStepReader.cc +++ b/source/geometry/solids/STEPinterface/src/G4NISTStepReader.cc @@ -5,11 +5,31 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4NISTStepReader.cc,v 1.2 1999/12/15 14:50:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4NISTStepReader.cc,v 1.3 2000/01/21 13:46:03 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // +// +// ---------------------------------------------------------------------- +// Class G4NISTStepReader +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4NISTStepReader.hh" +#include "instmgr.h" +#include "Registry.h" +#include "STEPaggregate.h" +#include "STEPfile.h" /* STEPfile class and others used by SCL */ + +#ifdef __O3DB__ + #include +#endif + void G4NISTStepReader::ReadSTEPFile(G4String STEPfilename) { // Reads the Step file into the nist toolkit class library @@ -58,6 +78,6 @@ void G4NISTStepReader::ReadSTEPFile(G4String STEPfilename) } -void G4NISTStepReader::SaveSTEPFile(){} +void G4NISTStepReader::SaveSTEPFile() {} -void G4NISTStepReader::UpdateSTEPFile(){} +void G4NISTStepReader::UpdateSTEPFile() {} diff --git a/source/geometry/solids/STEPinterface/src/G4OpenShellCreator.cc b/source/geometry/solids/STEPinterface/src/G4OpenShellCreator.cc index 12a4572295..f4b3776199 100644 --- a/source/geometry/solids/STEPinterface/src/G4OpenShellCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4OpenShellCreator.cc @@ -1,17 +1,40 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4OpenShellCreator.cc,v 1.2 2000/01/21 13:46:03 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// ---------------------------------------------------------------------- +// Class G4OpenShellCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4OpenShellCreator.hh" +#include "G4GeometryTable.hh" G4OpenShellCreator G4OpenShellCreator::csc; -G4OpenShellCreator::G4OpenShellCreator(){G4GeometryTable::RegisterObject(this);} +G4OpenShellCreator::G4OpenShellCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4OpenShellCreator::~G4OpenShellCreator(){} +G4OpenShellCreator::~G4OpenShellCreator() {} void G4OpenShellCreator::CreateG4Geometry(STEPentity& Ent) { - } void G4OpenShellCreator::CreateSTEPGeometry(void* G4obj) { - } diff --git a/source/geometry/solids/STEPinterface/src/G4OrientedEdgeCreator.cc b/source/geometry/solids/STEPinterface/src/G4OrientedEdgeCreator.cc index 6a8834803b..871fcc2907 100644 --- a/source/geometry/solids/STEPinterface/src/G4OrientedEdgeCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4OrientedEdgeCreator.cc @@ -1,15 +1,40 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4OrientedEdgeCreator.cc,v 1.3 2000/02/25 16:36:19 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// ---------------------------------------------------------------------- +// Class G4OrientedEdgeCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4OrientedEdgeCreator.hh" +#include "G4GeometryTable.hh" G4OrientedEdgeCreator G4OrientedEdgeCreator::csc; -G4OrientedEdgeCreator::G4OrientedEdgeCreator(){G4GeometryTable::RegisterObject(this);} +G4OrientedEdgeCreator::G4OrientedEdgeCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4OrientedEdgeCreator::~G4OrientedEdgeCreator(){} +G4OrientedEdgeCreator::~G4OrientedEdgeCreator() {} void G4OrientedEdgeCreator::CreateG4Geometry(STEPentity& Ent) { G4int orientation; - G4Curve* crv; + G4Curve* crv=0; G4String attrName("edge_element"); STEPattribute *Attr = GetNamedAttribute(attrName, Ent); @@ -17,18 +42,24 @@ void G4OrientedEdgeCreator::CreateG4Geometry(STEPentity& Ent) // Get curve STEPentity* TmpEnt = *Attr->ptr.c; void *tmp =G4GeometryTable::CreateObject(*TmpEnt); - crv = (G4Curve*)tmp; + if (tmp) + { + crv = (G4Curve*)tmp; - // Get orientation - Attr = Ent.NextAttribute(); - orientation = *Attr->ptr.i;// INTEGER_TYPE + // Get orientation + Attr = Ent.NextAttribute(); + orientation = *Attr->ptr.i;// INTEGER_TYPE - crv->SetSameSense(orientation); + crv->SetSameSense(orientation); + } + else + G4cerr << "WARNING - G4OrientedEdgeCreator::CreateG4Geometry" << G4endl + << "\tUnexpected NULL pointer to G4Curve !" << G4endl + << "\tOriented Edge NOT created." << G4endl; createdObject = crv; } void G4OrientedEdgeCreator::CreateSTEPGeometry(void* G4obj) { - } diff --git a/source/geometry/solids/STEPinterface/src/G4ParabolaCreator.cc b/source/geometry/solids/STEPinterface/src/G4ParabolaCreator.cc index 3235cd8249..6a8c1e1c7e 100644 --- a/source/geometry/solids/STEPinterface/src/G4ParabolaCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4ParabolaCreator.cc @@ -1,10 +1,35 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ParabolaCreator.cc,v 1.2 2000/01/21 13:46:04 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// ---------------------------------------------------------------------- +// Class G4ParabolaCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4ParabolaCreator.hh" +#include "G4GeometryTable.hh" G4ParabolaCreator G4ParabolaCreator::csc; -G4ParabolaCreator::G4ParabolaCreator(){G4GeometryTable::RegisterObject(this);} +G4ParabolaCreator::G4ParabolaCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4ParabolaCreator::~G4ParabolaCreator(){} +G4ParabolaCreator::~G4ParabolaCreator() {} void G4ParabolaCreator::CreateG4Geometry(STEPentity& Ent) { @@ -36,5 +61,4 @@ void G4ParabolaCreator::CreateG4Geometry(STEPentity& Ent) void G4ParabolaCreator::CreateSTEPGeometry(void* G4obj) { - } diff --git a/source/geometry/solids/STEPinterface/src/G4PlaneCreator.cc b/source/geometry/solids/STEPinterface/src/G4PlaneCreator.cc index f1f803cb73..5f2abe8bcd 100644 --- a/source/geometry/solids/STEPinterface/src/G4PlaneCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4PlaneCreator.cc @@ -1,16 +1,42 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4PlaneCreator.cc,v 1.3 2000/02/25 16:36:19 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// ---------------------------------------------------------------------- +// Class G4PlaneCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4PlaneCreator.hh" +#include "G4GeometryTable.hh" +#include "G4FPlane.hh" G4PlaneCreator G4PlaneCreator::csc; -G4PlaneCreator::G4PlaneCreator(){G4GeometryTable::RegisterObject(this);} +G4PlaneCreator::G4PlaneCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4PlaneCreator::~G4PlaneCreator(){} +G4PlaneCreator::~G4PlaneCreator() {} void G4PlaneCreator::CreateG4Geometry(STEPentity& Ent) { // L. Broglia // G4Placement* place; - G4Axis2Placement3D* place; + G4Axis2Placement3D* place=0; Ent.ResetAttributes(); STEPattribute *Attr; @@ -22,14 +48,24 @@ void G4PlaneCreator::CreateG4Geometry(STEPentity& Ent) STEPentity* TmpEnt = *Attr->ptr.c; void *tmp =G4GeometryTable::CreateObject(*TmpEnt); - place = (G4Axis2Placement3D*)tmp; - createdObject = new G4FPlane( place->GetRefDirection(), - place->GetAxis(), - place->GetLocation()); + G4FPlane* fplane = 0; + + if (tmp) + { + place = (G4Axis2Placement3D*)tmp; + fplane = new G4FPlane( place->GetRefDirection(), + place->GetAxis(), + place->GetLocation()); + } + else + G4cerr << "WARNING - G4PlaneCreator::CreateG4Geometry" << G4endl + << "\tUnexpected NULL axis placement (G4Axis2Placement3D) !" << G4endl + << "\tPlane Surface NOT created." << G4endl; + + createdObject = fplane; } void G4PlaneCreator::CreateSTEPGeometry(void* G4obj) { - } diff --git a/source/geometry/solids/STEPinterface/src/G4PointCreator.cc b/source/geometry/solids/STEPinterface/src/G4PointCreator.cc index ff85664323..860a2f0ae9 100644 --- a/source/geometry/solids/STEPinterface/src/G4PointCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4PointCreator.cc @@ -1,4 +1,26 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4PointCreator.cc,v 1.2 2000/01/21 13:46:04 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// ---------------------------------------------------------------------- +// Class G4PointCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4PointCreator.hh" +#include "G4GeometryTable.hh" G4PointCreator G4PointCreator::csc; @@ -7,8 +29,8 @@ G4PointCreator::G4PointCreator() G4GeometryTable::RegisterObject(this); } -G4PointCreator::~G4PointCreator(){} +G4PointCreator::~G4PointCreator() {} -void G4PointCreator::CreateG4Geometry(STEPentity& Ent){} +void G4PointCreator::CreateG4Geometry(STEPentity& Ent) {} -void G4PointCreator::CreateSTEPGeometry(void* G4obj){} +void G4PointCreator::CreateSTEPGeometry(void* G4obj) {} diff --git a/source/geometry/solids/STEPinterface/src/G4PointOnCurveCreator.cc b/source/geometry/solids/STEPinterface/src/G4PointOnCurveCreator.cc index d93b717b68..f0468f55dd 100644 --- a/source/geometry/solids/STEPinterface/src/G4PointOnCurveCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4PointOnCurveCreator.cc @@ -1,10 +1,35 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4PointOnCurveCreator.cc,v 1.3 2000/02/25 16:36:19 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// ---------------------------------------------------------------------- +// Class G4PointOnCurveCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4PointOnCurveCreator.hh" +#include "G4GeometryTable.hh" G4PointOnCurveCreator G4PointOnCurveCreator::csc; -G4PointOnCurveCreator::G4PointOnCurveCreator(){G4GeometryTable::RegisterObject(this);} +G4PointOnCurveCreator::G4PointOnCurveCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4PointOnCurveCreator::~G4PointOnCurveCreator(){} +G4PointOnCurveCreator::~G4PointOnCurveCreator() {} void G4PointOnCurveCreator::CreateG4Geometry(STEPentity& Ent) { @@ -18,20 +43,18 @@ void G4PointOnCurveCreator::CreateG4Geometry(STEPentity& Ent) Attr = Ent.NextAttribute(); // Get basis curve - STEPentity* TmpEnt= *Attr->ptr.c; + STEPentity* TmpEnt= *Attr->ptr.c; void* tmp =G4GeometryTable::CreateObject(*TmpEnt); - crv = (G4Curve*)tmp; + crv = (G4Curve*)tmp; + if (!tmp) + G4cerr << "WARNING - G4PointOnCurveCreator::CreateG4Geometry" << G4endl + << "\tUnexpected NULL pointer to G4Curve !" << G4endl; // Get parameter value - Attr = Ent.NextAttribute(); + Attr = Ent.NextAttribute(); pval = *Attr->ptr.r; createdObject = new G4double(pval); } -void G4PointOnCurveCreator::CreateSTEPGeometry(void* G4obj){} - - - - - +void G4PointOnCurveCreator::CreateSTEPGeometry(void* G4obj) {} diff --git a/source/geometry/solids/STEPinterface/src/G4PointOnSurfaceCreator.cc b/source/geometry/solids/STEPinterface/src/G4PointOnSurfaceCreator.cc index 6232e51089..9687a677ea 100644 --- a/source/geometry/solids/STEPinterface/src/G4PointOnSurfaceCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4PointOnSurfaceCreator.cc @@ -1,10 +1,35 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4PointOnSurfaceCreator.cc,v 1.3 2000/02/25 16:36:19 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// ---------------------------------------------------------------------- +// Class G4PointOnSurfaceCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4PointOnSurfaceCreator.hh" +#include "G4GeometryTable.hh" G4PointOnSurfaceCreator G4PointOnSurfaceCreator::csc; -G4PointOnSurfaceCreator::G4PointOnSurfaceCreator(){G4GeometryTable::RegisterObject(this);} +G4PointOnSurfaceCreator::G4PointOnSurfaceCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4PointOnSurfaceCreator::~G4PointOnSurfaceCreator(){} +G4PointOnSurfaceCreator::~G4PointOnSurfaceCreator() {} void G4PointOnSurfaceCreator::CreateG4Geometry(STEPentity& Ent) { @@ -19,12 +44,15 @@ void G4PointOnSurfaceCreator::CreateG4Geometry(STEPentity& Ent) Attr = Ent.NextAttribute(); // Get basis surface - STEPentity* TmpEnt= *Attr->ptr.c; + STEPentity* TmpEnt= *Attr->ptr.c; void * tmp =G4GeometryTable::CreateObject(*TmpEnt); srf = (G4Surface*)tmp; + if (!tmp) + G4cerr << "WARNING - G4PointOnSurfaceCreator::CreateG4Geometry" << G4endl + << "\tUnexpected NULL pointer to G4Surface !" << G4endl; // Get parameter values - Attr = Ent.NextAttribute(); + Attr = Ent.NextAttribute(); pval1 = *Attr->ptr.r; Attr = Ent.NextAttribute(); pval2 = *Attr->ptr.r; @@ -36,4 +64,4 @@ void G4PointOnSurfaceCreator::CreateG4Geometry(STEPentity& Ent) createdObject = dtmp; } -void G4PointOnSurfaceCreator::CreateSTEPGeometry(void* G4obj){} +void G4PointOnSurfaceCreator::CreateSTEPGeometry(void* G4obj) {} diff --git a/source/geometry/solids/STEPinterface/src/G4PointReplicaCreator.cc b/source/geometry/solids/STEPinterface/src/G4PointReplicaCreator.cc index 95ba28ced5..6258e578d3 100644 --- a/source/geometry/solids/STEPinterface/src/G4PointReplicaCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4PointReplicaCreator.cc @@ -1,11 +1,36 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4PointReplicaCreator.cc,v 1.2 2000/01/21 13:46:05 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// ---------------------------------------------------------------------- +// Class G4PointReplicaCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4PointReplicaCreator.hh" +#include "G4GeometryTable.hh" G4PointReplicaCreator G4PointReplicaCreator::csc; -G4PointReplicaCreator::G4PointReplicaCreator(){G4GeometryTable::RegisterObject(this);} +G4PointReplicaCreator::G4PointReplicaCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4PointReplicaCreator::~G4PointReplicaCreator(){} +G4PointReplicaCreator::~G4PointReplicaCreator() {} -void G4PointReplicaCreator::CreateG4Geometry(STEPentity& Ent){} +void G4PointReplicaCreator::CreateG4Geometry(STEPentity& Ent) {} -void G4PointReplicaCreator::CreateSTEPGeometry(void* G4obj){} +void G4PointReplicaCreator::CreateSTEPGeometry(void* G4obj) {} diff --git a/source/geometry/solids/STEPinterface/src/G4ProductDefinitionShapeCreator.cc b/source/geometry/solids/STEPinterface/src/G4ProductDefinitionShapeCreator.cc index 669c060aaf..ea9503a268 100644 --- a/source/geometry/solids/STEPinterface/src/G4ProductDefinitionShapeCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4ProductDefinitionShapeCreator.cc @@ -1,4 +1,26 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ProductDefinitionShapeCreator.cc,v 1.3 2000/01/21 13:46:05 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// ---------------------------------------------------------------------- +// Class G4ProductDefinitionShapeCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4ProductDefinitionShapeCreator.hh" +#include "G4GeometryTable.hh" G4ProductDefinitionShapeCreator G4ProductDefinitionShapeCreator::csc; @@ -7,7 +29,7 @@ G4ProductDefinitionShapeCreator::G4ProductDefinitionShapeCreator() G4GeometryTable::RegisterObject(this); } -G4ProductDefinitionShapeCreator::~G4ProductDefinitionShapeCreator(){} +G4ProductDefinitionShapeCreator::~G4ProductDefinitionShapeCreator() {} void G4ProductDefinitionShapeCreator::CreateG4Geometry(STEPentity& Ent) { @@ -32,5 +54,4 @@ void G4ProductDefinitionShapeCreator::CreateG4Geometry(STEPentity& Ent) void G4ProductDefinitionShapeCreator::CreateSTEPGeometry(void* G4obj) { - } diff --git a/source/geometry/solids/STEPinterface/src/G4RationalBSplineSurfaceCreator.cc b/source/geometry/solids/STEPinterface/src/G4RationalBSplineSurfaceCreator.cc index be68b72431..923f0e3552 100644 --- a/source/geometry/solids/STEPinterface/src/G4RationalBSplineSurfaceCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4RationalBSplineSurfaceCreator.cc @@ -1,10 +1,35 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RationalBSplineSurfaceCreator.cc,v 1.3 2000/02/25 16:36:20 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// ---------------------------------------------------------------------- +// Class G4RationalBSplineSurfaceCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4RationalBSplineSurfaceCreator.hh" +#include "G4GeometryTable.hh" G4RationalBSplineSurfaceCreator G4RationalBSplineSurfaceCreator::csc; -G4RationalBSplineSurfaceCreator::G4RationalBSplineSurfaceCreator(){G4GeometryTable::RegisterObject(this);} +G4RationalBSplineSurfaceCreator::G4RationalBSplineSurfaceCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4RationalBSplineSurfaceCreator::~G4RationalBSplineSurfaceCreator(){} +G4RationalBSplineSurfaceCreator::~G4RationalBSplineSurfaceCreator() {} void G4RationalBSplineSurfaceCreator::CreateG4Geometry(STEPentity& Ent) { @@ -12,7 +37,7 @@ void G4RationalBSplineSurfaceCreator::CreateG4Geometry(STEPentity& Ent) STEPattribute *Attr = GetNamedAttribute(attrName, Ent); STEPaggregate *weightAggr = Attr->ptr.a; SdaiRational_b_spline_surface* bSpline = new SdaiRational_b_spline_surface(&Ent); - bSpline->Weights_data((GenericAggregate*)Attr->ptr.a); + bSpline->weights_data_((GenericAggregate*)Attr->ptr.a); // Temp solution until NIST supports // two dimensional instances.grrh @@ -245,21 +270,16 @@ void G4RationalBSplineSurfaceCreator::CreateG4Geometry(STEPentity& Ent) //Entity = InstanceList.GetSTEPentity(Index); MgrNode* MgrTmp = instanceManager.FindFileId(Index); Index = instanceManager.GetIndex(MgrTmp); - Entity = instanceManager.GetSTEPentity(Index); +// Entity = instanceManager.GetSTEPentity(Index); + Entity = instanceManager.GetApplication_instance(Index); void *tmp =G4GeometryTable::CreateObject(*Entity); - controlPoints.put(a,b,*(G4PointRat*)tmp); + if (tmp) controlPoints.put(a,b,*(G4PointRat*)tmp); } } */ - - - createdObject = bSpline; } void G4RationalBSplineSurfaceCreator::CreateSTEPGeometry(void* G4obj) { - } - - diff --git a/source/geometry/solids/STEPinterface/src/G4RepresentationRelationshipCreator.cc b/source/geometry/solids/STEPinterface/src/G4RepresentationRelationshipCreator.cc index 3893b50256..e6777dce8a 100644 --- a/source/geometry/solids/STEPinterface/src/G4RepresentationRelationshipCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4RepresentationRelationshipCreator.cc @@ -1,12 +1,38 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RepresentationRelationshipCreator.cc,v 1.4 2000/02/25 16:36:20 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// ---------------------------------------------------------------------- +// Class G4RepresentationRelationshipCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + +#include + #include "G4RepresentationRelationshipCreator.hh" +#include "G4GeometryTable.hh" #include "G4PlacementVector.hh" -#include "STEPcomplex.h" G4RepresentationRelationshipCreator G4RepresentationRelationshipCreator::csc; -G4int G4RepresentationRelationshipCreator::placeCount=0; -G4RepresentationRelationshipCreator::G4RepresentationRelationshipCreator(){G4GeometryTable::RegisterObject(this);} -G4RepresentationRelationshipCreator::~G4RepresentationRelationshipCreator(){} +G4RepresentationRelationshipCreator::G4RepresentationRelationshipCreator() +{ + G4GeometryTable::RegisterObject(this); +} + +G4RepresentationRelationshipCreator::~G4RepresentationRelationshipCreator() {} void G4RepresentationRelationshipCreator::CreateG4Geometry(STEPentity& Ent) { @@ -14,16 +40,17 @@ void G4RepresentationRelationshipCreator::CreateG4Geometry(STEPentity& Ent) STEPcomplex* complexEnt = (STEPcomplex*)&Ent; void* tmp=0; STEPentity* subEnt=0; + STEPentity* subEnt1=0; STEPentity* subEnt2=0; G4String attrName; - STEPattribute *Attr; + STEPattribute *Attr=0; - G4PlacementVector* itemDefPlaces; - G4PlacementVector* places; - G4PlacedSolid* sld; - G4PlacedSolid* tmpsld; + G4PlacementVector* itemDefPlaces=0; + G4PlacementVector* places=0; + G4PlacedSolid* sld=0; + G4PlacedSolid* tmpsld=0; G4PlacedSolidVector* sldV = new G4PlacedSolidVector(); - G4PlacedSolidVector* tmpsldV; + G4PlacedSolidVector* tmpsldV=0; if(complexEnt->EntityExists("Representation_Relationship")) { @@ -32,15 +59,36 @@ void G4RepresentationRelationshipCreator::CreateG4Geometry(STEPentity& Ent) // get subparts attrName = "rep_1"; Attr = GetNamedAttribute(attrName, *subEnt); - subEnt2 = *Attr->ptr.c; - places = (G4PlacementVector*)G4GeometryTable::CreateObject(*subEnt2); + subEnt1 = *Attr->ptr.c; + places = (G4PlacementVector*)G4GeometryTable::CreateObject(*subEnt1); +#ifdef G4_STEPINTERFACE_DEBUG + G4cout << "Rep_1 entries: " << places->entries() + << " - Entity: " << subEnt1->EntityName() << G4endl; +#endif attrName = "rep_2"; Attr = GetNamedAttribute(attrName, *subEnt); subEnt2 = *Attr->ptr.c; tmpsldV = (G4PlacedSolidVector*)G4GeometryTable::CreateObject(*subEnt2); +#ifdef G4_STEPINTERFACE_DEBUG + G4cout << "Rep_2 entries: " << tmpsldV->entries() + << " - Entity: " << subEnt2->EntityName() << G4endl; +#endif } - + G4String e1Name = subEnt1->EntityName(); + G4String e2Name = subEnt2->EntityName(); + if ((e1Name != "Shape_Representation") || + (e2Name != "Advanced_Brep_Shape_Representation") ) + { + G4cerr << "WARNING - G4RepresentationRelationshipCreator::CreateG4Geometry" << G4endl + << "\tInconsistent association for representations:" << G4endl + << "\t" << e1Name << " - Rep_1 entries: " << places->entries() << G4endl + << "\t" << e2Name << " - Rep_2 entries: " << tmpsldV->entries() << G4endl + << "\tRepresentation Relationship NOT created." << G4endl; + createdObject=0; + return; + } + if( complexEnt->EntityExists ("Representation_Relationship_With_Transformation") ) { @@ -63,8 +111,8 @@ void G4RepresentationRelationshipCreator::CreateG4Geometry(STEPentity& Ent) SdaiItem_defined_transformation* iTransf = transf->operator SdaiItem_defined_transformationH(); - SdaiRepresentation_itemH repItem1 = iTransf->Transform_item_1(); - SdaiRepresentation_itemH repItem2 = iTransf->Transform_item_2(); + SdaiRepresentation_itemH repItem1 = iTransf->transform_item_1_(); + SdaiRepresentation_itemH repItem2 = iTransf->transform_item_2_(); subEnt = (STEPentity*)repItem1; itemDefPlaces = new G4PlacementVector(); @@ -82,31 +130,35 @@ void G4RepresentationRelationshipCreator::CreateG4Geometry(STEPentity& Ent) // subEnt2 = *Attr->ptr.c; // G4GeometryTable::CreateObject(*subEnt2); } - - if(complexEnt->EntityExists("Shape_Representation_Relationship")) - subEnt = complexEnt->EntityPart("Shape_Representation_Relationship"); - - G4Axis2Placement3D* place = (G4Axis2Placement3D*)places->at(placeCount); - placeCount++; - - // the following line is probably wrong. The combination of - // the two transformations should be taken (?) - //G4PlacedSolid* ps=new G4PlacedSolid((G4BREPSolid*)sld->GetSolid(), place); - - // place the advanced BREP, so place each manifold solids + // Place the advanced BREP, so place each manifold solids. + // At this point, one cannot do anything else that guessing (!) the + // logic behind the association of placements with each manifold solid. + // See also creator for Advanced BREP shape Representations. + // All this needs to be reviewed ! - GC + // + G4Axis2Placement3D* place = (G4Axis2Placement3D*)(places->at(0)); G4int entr = tmpsldV->entries(); for(G4int a = 0; a < entr; a++) { + if (0 < a < places->entries()) + place = (G4Axis2Placement3D*)(places->at(a)); tmpsld = tmpsldV->at(a); - sld = new G4PlacedSolid((G4BREPSolid*)tmpsld->GetSolid(), place); - sldV->append(sld); + if (tmpsld) + { + sld = new G4PlacedSolid((G4BREPSolid*)(tmpsld->GetSolid()), place); + sldV->append(sld); + } + else + { + G4cerr << "WARNING - G4RepresentationRelationshipCreator::CreateG4Geometry" << G4endl + << "\tUnexpected NULL manifold solids vector !" << G4endl + << "\tPlacement failed." << G4endl; + } } - createdObject = sldV; } void G4RepresentationRelationshipCreator::CreateSTEPGeometry(void* G4obj) { - } diff --git a/source/geometry/solids/STEPinterface/src/G4RepresentationRelationshipWithTransformationCreator.cc b/source/geometry/solids/STEPinterface/src/G4RepresentationRelationshipWithTransformationCreator.cc index 4443c79127..dc7e969c5a 100644 --- a/source/geometry/solids/STEPinterface/src/G4RepresentationRelationshipWithTransformationCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4RepresentationRelationshipWithTransformationCreator.cc @@ -1,17 +1,45 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RepresentationRelationshipWithTransformationCreator.cc,v 1.2 2000/01/21 13:46:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// ---------------------------------------------------------------------- +// Class G4RepresentationRelationshipWithTransformationCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4RepresentationRelationshipWithTransformationCreator.hh" +#include "G4GeometryTable.hh" -G4RepresentationRelationshipWithTransformationCreator G4RepresentationRelationshipWithTransformationCreator::csc; +G4RepresentationRelationshipWithTransformationCreator + G4RepresentationRelationshipWithTransformationCreator::csc; -G4RepresentationRelationshipWithTransformationCreator::G4RepresentationRelationshipWithTransformationCreator(){G4GeometryTable::RegisterObject(this);} - -G4RepresentationRelationshipWithTransformationCreator::~G4RepresentationRelationshipWithTransformationCreator(){} - -void G4RepresentationRelationshipWithTransformationCreator::CreateG4Geometry(STEPentity& Ent) +G4RepresentationRelationshipWithTransformationCreator:: + G4RepresentationRelationshipWithTransformationCreator() { - + G4GeometryTable::RegisterObject(this); } -void G4RepresentationRelationshipWithTransformationCreator::CreateSTEPGeometry(void * G4obj) -{ +G4RepresentationRelationshipWithTransformationCreator:: + ~G4RepresentationRelationshipWithTransformationCreator() {} +void G4RepresentationRelationshipWithTransformationCreator:: + CreateG4Geometry(STEPentity& Ent) +{ +} + +void G4RepresentationRelationshipWithTransformationCreator:: + CreateSTEPGeometry(void * G4obj) +{ } diff --git a/source/geometry/solids/STEPinterface/src/G4ShapeDefinitionRepresentationCreator.cc b/source/geometry/solids/STEPinterface/src/G4ShapeDefinitionRepresentationCreator.cc index db52b4734f..e784a96973 100644 --- a/source/geometry/solids/STEPinterface/src/G4ShapeDefinitionRepresentationCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4ShapeDefinitionRepresentationCreator.cc @@ -1,10 +1,38 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ShapeDefinitionRepresentationCreator.cc,v 1.4 2000/02/25 16:36:20 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// ---------------------------------------------------------------------- +// Class G4ShapeDefinitionRepresentationCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4ShapeDefinitionRepresentationCreator.hh" +#include "G4GeometryTable.hh" -G4ShapeDefinitionRepresentationCreator G4ShapeDefinitionRepresentationCreator::csc; +G4ShapeDefinitionRepresentationCreator + G4ShapeDefinitionRepresentationCreator::csc; -G4ShapeDefinitionRepresentationCreator::G4ShapeDefinitionRepresentationCreator(){G4GeometryTable::RegisterObject(this);} +G4ShapeDefinitionRepresentationCreator:: + G4ShapeDefinitionRepresentationCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4ShapeDefinitionRepresentationCreator::~G4ShapeDefinitionRepresentationCreator(){} +G4ShapeDefinitionRepresentationCreator:: + ~G4ShapeDefinitionRepresentationCreator() {} void G4ShapeDefinitionRepresentationCreator::CreateG4Geometry(STEPentity& Ent) { @@ -13,6 +41,11 @@ void G4ShapeDefinitionRepresentationCreator::CreateG4Geometry(STEPentity& Ent) STEPentity* TmpEnt = *Attr->ptr.c; void *tmp =G4GeometryTable::CreateObject(*TmpEnt); G4PlacedSolid* ps = (G4PlacedSolid*)tmp; + if (!tmp) + G4cerr << "WARNING - G4ShapeDefinitionRepresentationCreator::CreateG4Geometry" << G4endl + << "\tUnexpected NULL pointer to G4PlacedSolid !" << G4endl + << "\tEntity NOT created." << G4endl; + createdObject = ps; /* @@ -36,5 +69,4 @@ void G4ShapeDefinitionRepresentationCreator::CreateG4Geometry(STEPentity& Ent) void G4ShapeDefinitionRepresentationCreator::CreateSTEPGeometry(void* G4obj) { - } diff --git a/source/geometry/solids/STEPinterface/src/G4ShapeRepresentationCreator.cc b/source/geometry/solids/STEPinterface/src/G4ShapeRepresentationCreator.cc index 4674dbc377..290cb632fd 100644 --- a/source/geometry/solids/STEPinterface/src/G4ShapeRepresentationCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4ShapeRepresentationCreator.cc @@ -1,10 +1,36 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ShapeRepresentationCreator.cc,v 1.3 2000/02/25 16:36:20 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// ---------------------------------------------------------------------- +// Class G4ShapeDefinitionRepresentationCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4ShapeRepresentationCreator.hh" +#include "G4GeometryTable.hh" +#include "G4PlacementVector.hh" G4ShapeRepresentationCreator G4ShapeRepresentationCreator::csc; -G4ShapeRepresentationCreator::G4ShapeRepresentationCreator(){G4GeometryTable::RegisterObject(this);} +G4ShapeRepresentationCreator::G4ShapeRepresentationCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4ShapeRepresentationCreator::~G4ShapeRepresentationCreator(){} +G4ShapeRepresentationCreator::~G4ShapeRepresentationCreator() {} void G4ShapeRepresentationCreator::CreateG4Geometry(STEPentity& Ent) { @@ -30,10 +56,18 @@ void G4ShapeRepresentationCreator::CreateG4Geometry(STEPentity& Ent) // place =(G4Placement*)G4GeometryTable::CreateObject(*TmpEnt); place =(G4Axis2Placement3D*)G4GeometryTable::CreateObject(*TmpEnt); - placements->append(place); + if (place) + placements->append(place); en = (EntityNode*)en->NextNode(); } + G4int placementNum = placements->entries(); + if (placementNum != placementCount) + G4cerr << "WARNING - G4ShapeRepresentationCreator::CreateG4Geometry" << G4endl + << "\tTotal of " << placementNum << " G4Axis2Placement3D components created, out of " + << placementCount << " expected !" << G4endl + << "\tEntity not correctly instantiated." << G4endl; + attrName="context_of_items"; Attr = GetNamedAttribute(attrName, Ent); TmpEnt = *Attr->ptr.c; @@ -44,9 +78,4 @@ void G4ShapeRepresentationCreator::CreateG4Geometry(STEPentity& Ent) void G4ShapeRepresentationCreator::CreateSTEPGeometry(void* G4obj) { - } - - - - diff --git a/source/geometry/solids/STEPinterface/src/G4ShapeRepresentationRelationshipCreator.cc b/source/geometry/solids/STEPinterface/src/G4ShapeRepresentationRelationshipCreator.cc index 25491957da..bda8973e34 100644 --- a/source/geometry/solids/STEPinterface/src/G4ShapeRepresentationRelationshipCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4ShapeRepresentationRelationshipCreator.cc @@ -1,17 +1,43 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ShapeRepresentationRelationshipCreator.cc,v 1.2 2000/01/21 13:46:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// ---------------------------------------------------------------------- +// Class G4ShapeDefinitionRepresentationCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4ShapeRepresentationRelationshipCreator.hh" +#include "G4GeometryTable.hh" -G4ShapeRepresentationRelationshipCreator G4ShapeRepresentationRelationshipCreator::csc; +G4ShapeRepresentationRelationshipCreator + G4ShapeRepresentationRelationshipCreator::csc; -G4ShapeRepresentationRelationshipCreator::G4ShapeRepresentationRelationshipCreator(){G4GeometryTable::RegisterObject(this);} +G4ShapeRepresentationRelationshipCreator:: + G4ShapeRepresentationRelationshipCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4ShapeRepresentationRelationshipCreator::~G4ShapeRepresentationRelationshipCreator(){} +G4ShapeRepresentationRelationshipCreator:: + ~G4ShapeRepresentationRelationshipCreator() {} void G4ShapeRepresentationRelationshipCreator::CreateG4Geometry(STEPentity& Ent) { - } void G4ShapeRepresentationRelationshipCreator::CreateSTEPGeometry(void* G4obj) { - } diff --git a/source/geometry/solids/STEPinterface/src/G4SphericalSurfaceCreator.cc b/source/geometry/solids/STEPinterface/src/G4SphericalSurfaceCreator.cc index 3aef4cddce..b0b45d5c08 100644 --- a/source/geometry/solids/STEPinterface/src/G4SphericalSurfaceCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4SphericalSurfaceCreator.cc @@ -1,10 +1,36 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4SphericalSurfaceCreator.cc,v 1.3 2000/02/25 16:36:20 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// ---------------------------------------------------------------------- +// Class G4SphericalSurfaceCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4SphericalSurfaceCreator.hh" +#include "G4GeometryTable.hh" +#include "G4SphericalSurface.hh" G4SphericalSurfaceCreator G4SphericalSurfaceCreator::csc; -G4SphericalSurfaceCreator::G4SphericalSurfaceCreator(){G4GeometryTable::RegisterObject(this);} +G4SphericalSurfaceCreator::G4SphericalSurfaceCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4SphericalSurfaceCreator::~G4SphericalSurfaceCreator(){} +G4SphericalSurfaceCreator::~G4SphericalSurfaceCreator() {} void G4SphericalSurfaceCreator::CreateG4Geometry(STEPentity& Ent) { @@ -28,16 +54,20 @@ void G4SphericalSurfaceCreator::CreateG4Geometry(STEPentity& Ent) radius = *Attr->ptr.r; - G4SphericalSurface* aG4sphere = - new G4SphericalSurface( (*place).GetLocation() , - (*place).GetPX() , - (*place).GetPZ() , - radius , - 0, 2*M_PI , - 0, M_PI ); + G4SphericalSurface* aG4sphere = 0; + if (place) + aG4sphere = new G4SphericalSurface( (*place).GetLocation() , + (*place).GetPX() , + (*place).GetPZ() , + radius , + 0, 2*M_PI , + 0, M_PI ); + else + G4cerr << "WARNING - G4SphericalSurfaceCreator::CreateG4Geometry" << G4endl + << "\tUnexpected NULL axis placement (G4Axis2Placement3D) !" << G4endl + << "\tSpherical Surface NOT created." << G4endl; createdObject = aG4sphere; - } void G4SphericalSurfaceCreator::CreateSTEPGeometry(void* G4obj) @@ -48,19 +78,16 @@ void G4SphericalSurfaceCreator::CreateSTEPGeometry(void* G4obj) G4String placementName("Axis2Placement3d"); void * tmp =G4GeometryTable::CreateSTEPObject(&fSph, placementName); SdaiAxis2_placement_3d *place = (SdaiAxis2_placement_3d*)tmp; - srf->Position(place); + srf->position_(place); // radius - srf->Radius(fSph->GetRadius()); + srf->radius_(fSph->GetRadius()); // Set STEP info srf->SetFileId(GetNextId()); - srf->Name(""); + srf->name_(""); // Write out object srf->STEPwrite(G4cout); createdObject = srf; } - - - diff --git a/source/geometry/solids/STEPinterface/src/G4ToroidalSurfaceCreator.cc b/source/geometry/solids/STEPinterface/src/G4ToroidalSurfaceCreator.cc index f7c5d3a15f..0971b4df23 100644 --- a/source/geometry/solids/STEPinterface/src/G4ToroidalSurfaceCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4ToroidalSurfaceCreator.cc @@ -1,10 +1,36 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ToroidalSurfaceCreator.cc,v 1.3 2000/02/25 16:36:20 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// ---------------------------------------------------------------------- +// Class G4ToroidalSurfaceCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4ToroidalSurfaceCreator.hh" +#include "G4GeometryTable.hh" +#include "G4ToroidalSurface.hh" G4ToroidalSurfaceCreator G4ToroidalSurfaceCreator::csc; -G4ToroidalSurfaceCreator::G4ToroidalSurfaceCreator(){G4GeometryTable::RegisterObject(this);} +G4ToroidalSurfaceCreator::G4ToroidalSurfaceCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4ToroidalSurfaceCreator::~G4ToroidalSurfaceCreator(){} +G4ToroidalSurfaceCreator::~G4ToroidalSurfaceCreator() {} void G4ToroidalSurfaceCreator::CreateG4Geometry(STEPentity& Ent) { @@ -27,16 +53,22 @@ void G4ToroidalSurfaceCreator::CreateG4Geometry(STEPentity& Ent) minorRadius = *Attr->ptr.r; - G4ToroidalSurface* aTorus = new G4ToroidalSurface( (*place).GetLocation() , - (*place).GetPZ() , - (*place).GetPX() , - minorRadius , - majorRadius ); + G4ToroidalSurface* aTorus = 0; + if (place) + aTorus = new G4ToroidalSurface( (*place).GetLocation() , + (*place).GetPZ() , + (*place).GetPX() , + minorRadius , + majorRadius ); + else + G4cerr << "WARNING - G4ToroidalSurfaceCreator::CreateG4Geometry" << G4endl + << "\tUnexpected NULL axis placement (G4Axis2Placement3D) !" << G4endl + << "\tToroidal Surface NOT created." << G4endl; + createdObject = aTorus; } - void G4ToroidalSurfaceCreator::CreateSTEPGeometry(void* G4obj) { G4ToroidalSurface* tor = (G4ToroidalSurface*)G4obj; @@ -45,21 +77,17 @@ void G4ToroidalSurfaceCreator::CreateSTEPGeometry(void* G4obj) G4String placementName("Axis2Placement3d"); void * tmp =G4GeometryTable::CreateSTEPObject(&tor, placementName); SdaiAxis2_placement_3d *place = (SdaiAxis2_placement_3d*)tmp; - srf->Position(place); + srf->position_(place); // radiis - srf->Minor_radius(tor->GetMinRadius()); - srf->Major_radius(tor->GetMaxRadius()); + srf->minor_radius_(tor->GetMinRadius()); + srf->major_radius_(tor->GetMaxRadius()); // Set STEP info srf->SetFileId(GetNextId()); - srf->Name(""); + srf->name_(""); // Write out object srf->STEPwrite(G4cout); createdObject = srf; } - - - - diff --git a/source/geometry/solids/STEPinterface/src/G4VectorCreator.cc b/source/geometry/solids/STEPinterface/src/G4VectorCreator.cc index f9ae9b222d..eedc3c5228 100644 --- a/source/geometry/solids/STEPinterface/src/G4VectorCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4VectorCreator.cc @@ -1,10 +1,35 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4VectorCreator.cc,v 1.3 2000/02/25 16:36:20 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// ---------------------------------------------------------------------- +// Class G4VectorCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4VectorCreator.hh" +#include "G4GeometryTable.hh" G4VectorCreator G4VectorCreator::csc; -G4VectorCreator::G4VectorCreator(){G4GeometryTable::RegisterObject(this);} +G4VectorCreator::G4VectorCreator() +{ + G4GeometryTable::RegisterObject(this); +} -G4VectorCreator::~G4VectorCreator(){} +G4VectorCreator::~G4VectorCreator() {} void G4VectorCreator::CreateG4Geometry(STEPentity& Ent) { @@ -24,13 +49,19 @@ void G4VectorCreator::CreateG4Geometry(STEPentity& Ent) Attr = Ent.NextAttribute(); Magnitude = *Attr->ptr.r; - createdObject = new G4ThreeVector(Magnitude * place->x(), - Magnitude * place->y(), - Magnitude * place->z() - ); + G4ThreeVector* vec = 0; + if (place) + vec = new G4ThreeVector(Magnitude * place->x(), + Magnitude * place->y(), + Magnitude * place->z() ); + else + G4cerr << "WARNING - G4VectorCreator::CreateG4Geometry" << G4endl + << "\tUnexpected NULL orientation (G4ThreeVector) !" << G4endl + << "\tEntity NOT created." << G4endl; + + createdObject = vec; } void G4VectorCreator::CreateSTEPGeometry(void* G4obj) { - } diff --git a/source/geometry/solids/STEPinterface/src/G4VertexPointCreator.cc b/source/geometry/solids/STEPinterface/src/G4VertexPointCreator.cc index 99816a94c9..5073c2baf7 100644 --- a/source/geometry/solids/STEPinterface/src/G4VertexPointCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4VertexPointCreator.cc @@ -1,4 +1,26 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4VertexPointCreator.cc,v 1.3 2000/02/25 16:36:20 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// ---------------------------------------------------------------------- +// Class G4VertexPointCreator +// +// Authors: J.Sulkimo, P.Urban. +// Revisions by: L.Broglia, G.Cosmo. +// +// History: +// 18-Nov-1999: First step of re-engineering - G.Cosmo +// ---------------------------------------------------------------------- + #include "G4VertexPointCreator.hh" +#include "G4GeometryTable.hh" G4VertexPointCreator G4VertexPointCreator::csc; @@ -7,11 +29,10 @@ G4VertexPointCreator::G4VertexPointCreator() G4GeometryTable::RegisterObject(this); } -G4VertexPointCreator::~G4VertexPointCreator(){} +G4VertexPointCreator::~G4VertexPointCreator() {} void G4VertexPointCreator::CreateG4Geometry(STEPentity& Ent) { - // G4Point3d *point; G4Point3D *point; G4String attrName("vertex_geometry"); @@ -20,13 +41,13 @@ void G4VertexPointCreator::CreateG4Geometry(STEPentity& Ent) // Get the geometric point STEPentity* TmpEnt= *Attr->ptr.c; void * tmp =G4GeometryTable::CreateObject(*TmpEnt); + if (!tmp) + G4cerr << "WARNING - G4VertexPointCreator::CreateG4Geometry" << G4endl + << "\tUnexpected NULL point (G4Point3D) !" << G4endl + << "\tVertex point NOT created." << G4endl; - // point = (G4Point3d*)tmp; point = (G4Point3D*)tmp; createdObject = point; } -void G4VertexPointCreator::CreateSTEPGeometry(void* G4obj){} - - - +void G4VertexPointCreator::CreateSTEPGeometry(void* G4obj) {} diff --git a/source/geometry/solids/specific/GNUmakefile b/source/geometry/solids/specific/GNUmakefile new file mode 100644 index 0000000000..8d07188b76 --- /dev/null +++ b/source/geometry/solids/specific/GNUmakefile @@ -0,0 +1,22 @@ +# $Id: GNUmakefile,v 1.2 2000/04/27 10:37:26 gcosmo Exp $ +# ---------------------------------------------------------------------------- +# GNUmakefile for geometry/solids/specific library. Gabriele Cosmo, 05/04/00. +# ---------------------------------------------------------------------------- + +name := G4specsolids + +ifndef G4INSTALL + G4INSTALL = ../../../.. +endif + +include $(G4INSTALL)/config/architecture.gmk + +CPPFLAGS += -I$(G4BASE)/intercoms/include \ + -I$(G4BASE)/graphics_reps/include \ + -I$(G4BASE)/global/management/include \ + -I$(G4BASE)/global/HEPRandom/include \ + -I$(G4BASE)/global/HEPGeometry/include \ + -I$(G4BASE)/geometry/volumes/include \ + -I$(G4BASE)/geometry/management/include + +include $(G4INSTALL)/config/common.gmk diff --git a/source/geometry/solids/specific/History b/source/geometry/solids/specific/History new file mode 100644 index 0000000000..731c202a47 --- /dev/null +++ b/source/geometry/solids/specific/History @@ -0,0 +1,80 @@ +$Id: History,v 1.10 2000/06/27 16:20:11 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 directory-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 * + ---------------------------------------------------------- + +27-Jun-2000, G.Cosmo (geom-solids-specific-V01-01-02) +-------------------- +- G4Polycone[.hh.cc]: better fix for bug-report #110. + Removed struct and replaced with class. + +26-Jun-2000, G.Cosmo (geom-solids-specific-V01-01-01) +-------------------- +- G4Polycone.cc: fixed memory leak by invoking destruction of member + enclosingCylinder, which was not cleaned up in the destructor. + This fixes problem report #107. +- G4Polycone.hh: added forward declaration of struct G4PolyconeHistorical + and made it friend, for porting on KCC --strict. This fixes report #110. +- G4Polyhedra.hh: fixed typo in method name. Changed GetNumSIde() to + GetNumSide(). This fixes problem report #105. + +08-Jun-2000, G.Gracia +--------------------- +- G4VCSGfaceted.cc: fix for Win/NT in function GetExtent(). + +27-Apr-2000, G.Cosmo +-------------------- +- Removed dependency over the CSG domain in GNUmakefile. + +18-Apr-2000, D.Williams +----------------------- +- Removed meaningless "const" specifiers from methods in G4ClippablePolygon, + and G4EllipticalTube. +- G4EllipticalTube, G4Hype and G4VCSGfaceted now inherit directly + from G4VSolid (before was G4CSGSolid). +- Reintroduced GetExtent() in G4EllipticalTube, G4Hype and G4VCSGfaceted + (in principle, not needed). +- Modified assertations in unit test testG4Hype.cc. + +11-Apr-2000, J.Allison +---------------------- +- Removed implementations of GetExtent in most sub-classes of G4VSolid (a + default implementation exists in G4VSolid). +- All implementations of DescribeYourselfTo (G4VGraphicsScene& scene) const + now correctly written: scene.AddThis(*this). + +05-Apr-2000, G.Cosmo (geom-solids-specific-V01-01-00) +-------------------- +- Restructured solids/CSG domain, by moving to "specific" the following + classes: G4ClippablePolygon, G4EnclosingCylinder, G4Hype, G4PolyPhiFace, + G4Polycone, G4PolyconeSide, G4Polyhedra, G4PolyhedraSide, G4ReduciblePolygon, + G4IntersectingCone, G4SolidExtentList, G4VCSGface, G4VCSGfaceted. + The new module's library for "specific" is now called 'G4specsolids'. +- Created specific/test directory and moved testG4Hype.cc and testG4Polycone,cc + from CSG/test. +- Organised class description comments for the Software Reference Manual + and added CVS headers to files. + +29-Mar-2000, D.Williams +----------------------- +- Added first implementation of G4EllipticalTube. + It defines a simple elliptical tube, as in geant3 "ELTU". + Files introduced: G4EllipticalTube[.hh.cc]. + +25-Mar-2000, G.Cosmo +-------------------- +- History file created. diff --git a/source/geometry/solids/CSG/include/G4ClippablePolygon.hh b/source/geometry/solids/specific/include/G4ClippablePolygon.hh similarity index 53% rename from source/geometry/solids/CSG/include/G4ClippablePolygon.hh rename to source/geometry/solids/specific/include/G4ClippablePolygon.hh index b7dbdbad1b..707e1aa334 100644 --- a/source/geometry/solids/CSG/include/G4ClippablePolygon.hh +++ b/source/geometry/solids/specific/include/G4ClippablePolygon.hh @@ -1,10 +1,3 @@ -// -// G4ClippablePolygon.hh -// -// Declaration of a utility class of a polycon that can be clipped -// by a voxel -// -// ---------------------------------------------------------- // This code implementation is the intellectual property of // the GEANT4 collaboration. // @@ -12,8 +5,24 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -#ifndef G4ClippablePolycon_hh -#define G4ClippablePolycon_hh +// $Id: G4ClippablePolygon.hh,v 1.2 2000/04/18 19:06:38 davidw Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// -------------------------------------------------------------------- +// GEANT 4 class header file +// +// G4ClippablePolygon +// +// Class description: +// +// Declaration of a utility class of a polygon that can be +// clipped by a voxel. + +// -------------------------------------------------------------------- + +#ifndef G4ClippablePolygon_hh +#define G4ClippablePolygon_hh #include "globals.hh" #include "geomdefs.hh" @@ -39,25 +48,25 @@ class G4ClippablePolygon { virtual void SetNormal( const G4ThreeVector &newNormal ) { normal = newNormal; } virtual const G4ThreeVector GetNormal() const { return normal; } - virtual const G4bool Clip( const G4VoxelLimits &voxelLimit ); + virtual G4bool Clip( const G4VoxelLimits &voxelLimit ); - virtual const G4bool PartialClip( const G4VoxelLimits &voxelLimit, const EAxis IgnoreMe ); + virtual G4bool PartialClip( const G4VoxelLimits &voxelLimit, const EAxis IgnoreMe ); virtual void ClipAlongOneAxis( const G4VoxelLimits &voxelLimit, const EAxis axis ); - virtual const G4bool GetExtent( const EAxis axis, - G4double &min, G4double &max ) const; + virtual G4bool GetExtent( const EAxis axis, + G4double &min, G4double &max ) const; virtual const G4ThreeVector *GetMinPoint( const EAxis axis ) const; virtual const G4ThreeVector *GetMaxPoint( const EAxis axis ) const; - virtual const G4int GetNumVertices() const { return vertices.entries(); } - virtual const G4bool Empty() const { return vertices.entries()==0; } + virtual G4int GetNumVertices() const { return vertices.entries(); } + virtual G4bool Empty() const { return vertices.entries()==0; } - virtual const G4bool InFrontOf( const G4ClippablePolygon &other, EAxis axis ) const; - virtual const G4bool BehindOf( const G4ClippablePolygon &other, EAxis axis ) const; - virtual const G4bool GetPlanerExtent( const G4ThreeVector &pointOnPlane, - const G4ThreeVector &planeNormal, - G4double &min, G4double &max ) const; + virtual G4bool InFrontOf( const G4ClippablePolygon &other, EAxis axis ) const; + virtual G4bool BehindOf( const G4ClippablePolygon &other, EAxis axis ) const; + virtual G4bool GetPlanerExtent( const G4ThreeVector &pointOnPlane, + const G4ThreeVector &planeNormal, + G4double &min, G4double &max ) const; protected: G4ThreeVectorList vertices; diff --git a/source/geometry/solids/specific/include/G4EllipticalTube.hh b/source/geometry/solids/specific/include/G4EllipticalTube.hh new file mode 100644 index 0000000000..175551ea1b --- /dev/null +++ b/source/geometry/solids/specific/include/G4EllipticalTube.hh @@ -0,0 +1,94 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4EllipticalTube.hh,v 1.6 2000/04/19 19:08:58 davidw Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// -------------------------------------------------------------------- +// GEANT 4 class header file +// +// G4EllipticalTube +// +// Class description: +// +// Declaration of a CSG volume representing a tube with elliptical +// cross section (geant3 solid 'ELTU') +// +// The equation of the surface in x/y is 1.0 = (x/dx)**2 + (y/dy)**2 + +// -------------------------------------------------------------------- + +#ifndef G4EllipticalTube_hh +#define G4EllipticalTube_hh + +#include "G4VSolid.hh" + +class G4EllipticalTube : public G4VSolid { + public: + G4EllipticalTube( const G4String &name, + const G4double theDx, const G4double theDy, const G4double theDz ); + virtual ~G4EllipticalTube(); + + // + // Standard CSG inherited methods + // + virtual G4bool CalculateExtent( const EAxis pAxis, + const G4VoxelLimits& pVoxelLimit, + const G4AffineTransform& pTransform, + G4double& pmin, G4double& pmax) const; + + virtual EInside Inside( const G4ThreeVector& p) const; + + virtual G4ThreeVector SurfaceNormal( const G4ThreeVector& p) const; + + virtual G4double DistanceToIn( const G4ThreeVector& p,const G4ThreeVector& v ) const; + virtual G4double DistanceToIn( const G4ThreeVector& p ) const; + virtual G4double DistanceToOut( const G4ThreeVector& p,const G4ThreeVector& v, + const G4bool calcNorm=false, + G4bool *validNorm=0,G4ThreeVector *n=0 ) const; + virtual G4double DistanceToOut( const G4ThreeVector& p ) const; + + virtual G4GeometryType GetEntityType() const { return G4String("G4EllipticalTube"); } + + virtual G4Polyhedron* CreatePolyhedron() const; + + virtual void DescribeYourselfTo( G4VGraphicsScene& scene ) const; + + virtual G4VisExtent GetExtent() const; + + + // + // Parameter access + // + G4double GetDx() const { return dx; } + G4double GetDy() const { return dy; } + G4double GetDz() const { return dz; } + + void SetDx( const G4double newDx ) { dx = newDx; } + void SetDy( const G4double newDy ) { dy = newDy; } + void SetDz( const G4double newDz ) { dz = newDz; } + + protected: + G4double dx, dy, dz; + + // + // Utility + // + inline G4double CheckXY( const G4double x, const G4double y, const G4double toler ) const { + G4double rx = x/(dx+toler), ry = y/(dy+toler); + return rx*rx + ry*ry; + } + inline G4double CheckXY( const G4double x, const G4double y ) const { + G4double rx = x/dx, ry = y/dy; + return rx*rx + ry*ry; + } + + G4int IntersectXY( const G4ThreeVector &p, + const G4ThreeVector &v, G4double s[2] ) const; +}; + +#endif diff --git a/source/geometry/solids/CSG/include/G4EnclosingCylinder.hh b/source/geometry/solids/specific/include/G4EnclosingCylinder.hh similarity index 69% rename from source/geometry/solids/CSG/include/G4EnclosingCylinder.hh rename to source/geometry/solids/specific/include/G4EnclosingCylinder.hh index d76d19b260..2efad88e50 100644 --- a/source/geometry/solids/CSG/include/G4EnclosingCylinder.hh +++ b/source/geometry/solids/specific/include/G4EnclosingCylinder.hh @@ -1,11 +1,3 @@ -// -// G4EnclosingCylinder.hh -// -// Definition of a utility class for quickly deciding if a point -// is clearly outside a polyhedra or ploycone or deciding if -// a trajectory is clearly going to miss said shapes. -// -// ---------------------------------------------------------- // This code implementation is the intellectual property of // the GEANT4 collaboration. // @@ -13,6 +5,23 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // +// $Id: G4EnclosingCylinder.hh,v 1.1 2000/04/07 10:55:42 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// -------------------------------------------------------------------- +// GEANT 4 class header file +// +// G4EnclosingCylinder +// +// Class description: +// +// Definition of a utility class for quickly deciding if a point +// is clearly outside a polyhedra or polycone or deciding if +// a trajectory is clearly going to miss those shapes. + +// -------------------------------------------------------------------- + #ifndef G4EnclosingCylinder_hh #define G4EnclosingCylinder_hh diff --git a/source/geometry/solids/specific/include/G4Hype.hh b/source/geometry/solids/specific/include/G4Hype.hh new file mode 100644 index 0000000000..55bf7489be --- /dev/null +++ b/source/geometry/solids/specific/include/G4Hype.hh @@ -0,0 +1,209 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4Hype.hh,v 1.3 2000/04/19 17:56:27 davidw Exp $ +// $Original: G4Hype.hh,v 1.0 1998/06/09 16:57:50 safai Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// -------------------------------------------------------------------- +// GEANT 4 class header file +// +// +// G4Hype +// +// Class description: +// +// This class implements in G4 the volume equivalent to the +// HYPE volume in Geant 3.21, i.e. a tube with hyperbolic profile. +// +// For further informations, please read G4Hype.history and G4Hype.doc. +// +// An hyperbolic volume with curved sides parallel to the z-axis. +// The Hype has a specified half-length along the z axis, about which +// it is centred, and a given minimum and maximum radius. +// A minimum radius of 0 signifies a filled Hype (with hyperbolical +// inner surface). To have a filled Hype the user must specify +// inner radius = 0 AND inner stereo angle = 0. +// +// The inner and outer hyperbolical surfaces can have different +// stereo angles. A stereo angle of 0 gives a cylindrical surface. +// +// Member functions: +// +// As inherited from G4VSolid, +// +// G4Hype(const G4String &pName +// const G4double innerRadius +// const G4double outerRadius +// const G4double innerStereo +// const G4double outerStereo +// const G4double halfLenZ ) +// +// Construct an hype with the given name and dimensions. +// The provided angles are in radians. +// +// +// Protected: +// +// G4ThreeVectorList* +// CreateRotatedVertices(const G4AffineTransform& pTransform) const +// +// Create the List of transformed vertices in the format required +// for G4VSolid:: ClipCrossSection and ClipBetweenSections. + +// Authors: +// Ernesto Lamanna (Ernesto.Lamanna@roma1.infn.it) & +// Francesco Safai Tehrani (Francesco.SafaiTehrani@roma1.infn.it) +// Rome, INFN & University of Rome "La Sapienza", 9 June 1998. +// +// History: +// Updated Feb 2000 D.C. Williams +// +// -------------------------------------------------------------------- + +#ifndef G4HYPE_HH +#define G4HYPE_HH + +#include "G4VSolid.hh" +#include "G4ThreeVector.hh" + +class G4SolidExtentList; +class G4ClippablePolygon; + +class G4Hype : public G4VSolid { +public: + + G4Hype(const G4String &pName, + const G4double newInnerRadius, + const G4double newOuterRadius, + const G4double newInnerStereo, + const G4double newOuterStereo, + const G4double newHalfLenZ); + + virtual ~G4Hype(); + + void ComputeDimensions(G4VPVParameterisation* p, + const G4int n, + const G4VPhysicalVolume* pRep); + + G4bool CalculateExtent(const EAxis pAxis, + const G4VoxelLimits& pVoxelLimit, + const G4AffineTransform& pTransform, + G4double& pmin, G4double& pmax) const; + + G4double GetInnerRadius () const { return innerRadius; } + G4double GetOuterRadius () const { return outerRadius; } + G4double GetZHalfLength () const { return halfLenZ; } + G4double GetInnerStereo () const { return innerStereo; } + G4double GetOuterStereo () const { return outerStereo; } + + void SetInnerRadius (G4double newIRad) + { + innerRadius= newIRad; + innerRadius2= newIRad*newIRad; + endInnerRadius2=HypeInnerRadius2(halfLenZ); + endInnerRadius=sqrt(endInnerRadius2); + } + + void SetOuterRadius (G4double newORad) + { + outerRadius= newORad; + outerRadius2=newORad*newORad; + endOuterRadius2=HypeOuterRadius2(halfLenZ); + endOuterRadius=sqrt(endOuterRadius2); + } + + void SetZHalfLength (G4double newHLZ) { halfLenZ = newHLZ ; } + + void SetInnerStereo (G4double newISte) + { + innerStereo= fabs(newISte); + tanInnerStereo=tan(innerStereo); + tanInnerStereo2=tanInnerStereo*tanInnerStereo; + endInnerRadius2=HypeInnerRadius2(halfLenZ); + endInnerRadius=sqrt(endInnerRadius2); + } + + void SetOuterStereo (G4double newOSte) + { + outerStereo= fabs(newOSte); + tanOuterStereo=tan(outerStereo); + tanOuterStereo2=tanOuterStereo*tanOuterStereo; + endOuterRadius2=HypeOuterRadius2(halfLenZ); + endOuterRadius=sqrt(endOuterRadius2); + } + + EInside Inside(const G4ThreeVector& p) 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=G4bool(false), + G4bool *validNorm=0,G4ThreeVector *n=0) const; + G4double DistanceToOut(const G4ThreeVector& p) const; + + virtual G4GeometryType GetEntityType() const { return G4String("G4Hype"); } + + void DescribeYourselfTo (G4VGraphicsScene& scene) const; + G4VisExtent GetExtent () const; + G4Polyhedron* CreatePolyhedron () const; + G4NURBS* CreateNURBS () const; + +protected: + + // whether we have an inner surface or not + G4bool InnerSurfaceExists() const { return (innerRadius > DBL_MIN) || (innerStereo != 0); } + + // approximate isotropic distance to hyperbolic surface + static G4double ApproxDistOutside( const G4double pr, const G4double pz, + const G4double r0, const G4double tanPhi ); + static G4double ApproxDistInside( const G4double pr, const G4double pz, + const G4double r0, const G4double tan2Phi ); + + // values of hype radius at a given Z + G4double HypeInnerRadius2(const G4double zVal) const { return (tanInnerStereo2*zVal*zVal+innerRadius2); } + G4double HypeOuterRadius2(const G4double zVal) const { return (tanOuterStereo2*zVal*zVal+outerRadius2); } + + // intersection with hyperbolic surface + static G4int IntersectHype( const G4ThreeVector &p, const G4ThreeVector &v, + const G4double r2, const G4double tan2Phi, G4double s[2] ); + + static void AddPolyToExtent( const G4ThreeVector &v0, + const G4ThreeVector &v1, + const G4ThreeVector &w1, + const G4ThreeVector &w0, + const G4VoxelLimits &voxelLimit, + const EAxis axis, + G4SolidExtentList &extentList ); + + + G4double innerRadius; // variable names are quite self explanative + G4double outerRadius; + G4double halfLenZ; + G4double innerStereo; + G4double outerStereo; + + // precalculated parameters, squared quantities + G4double tanInnerStereo; + G4double tanOuterStereo; + G4double tanInnerStereo2; // squared tan of Inner Stereo angle + G4double tanOuterStereo2; // squared tan of Outer Stereo angle + G4double innerRadius2; // squared Inner Radius + G4double outerRadius2; // squared Outer Radius + G4double endInnerRadius2; // squared endcap Inner Radius + G4double endOuterRadius2; // squared endcap Outer Radius + G4double endInnerRadius; // endcap Inner Radius + G4double endOuterRadius; // endcap Outer Radius + + // Used by distanceToOut + enum ESide {outerFace,innerFace,leftCap, rightCap}; +}; + +#endif diff --git a/source/geometry/solids/CSG/include/G4IntersectingCone.hh b/source/geometry/solids/specific/include/G4IntersectingCone.hh similarity index 62% rename from source/geometry/solids/CSG/include/G4IntersectingCone.hh rename to source/geometry/solids/specific/include/G4IntersectingCone.hh index 566e84a91a..71bac4215a 100644 --- a/source/geometry/solids/CSG/include/G4IntersectingCone.hh +++ b/source/geometry/solids/specific/include/G4IntersectingCone.hh @@ -1,9 +1,27 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. // -// G4IntersectingCone.hh +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. // -// Declaration of a utility class which calculates the intersection -// of an arbitrary line with a fixed cone +// $Id: G4IntersectingCone.hh,v 1.1 2000/04/07 10:56:27 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // +// +// -------------------------------------------------------------------- +// GEANT 4 class header file +// +// +// G4IntersectingCone +// +// Class description: +// +// Utility class which calculates the intersection +// of an arbitrary line with a fixed cone +// +// -------------------------------------------------------------------- + #ifndef G4IntersectingCone_hh #define G4IntersectingCone_hh diff --git a/source/geometry/solids/CSG/include/G4PolyPhiFace.hh b/source/geometry/solids/specific/include/G4PolyPhiFace.hh similarity index 83% rename from source/geometry/solids/CSG/include/G4PolyPhiFace.hh rename to source/geometry/solids/specific/include/G4PolyPhiFace.hh index 5f1230c72b..ed7a0fce91 100644 --- a/source/geometry/solids/CSG/include/G4PolyPhiFace.hh +++ b/source/geometry/solids/specific/include/G4PolyPhiFace.hh @@ -1,14 +1,3 @@ -// -// G4PolyPhiFace.hh -// -// Definition of a face that bounds a polycone or polyhedra when it has a phi -// opening. -// -// Specifically: a face that lies on a plane that passes through -// the z axis. It has boundaries that are straight lines of arbitrary length -// and direction, but with corners aways on the same side of the z axis. -// -// ---------------------------------------------------------- // This code implementation is the intellectual property of // the GEANT4 collaboration. // @@ -16,6 +5,28 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // +// $Id: G4PolyPhiFace.hh,v 1.1 2000/04/07 10:56:52 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// -------------------------------------------------------------------- +// GEANT 4 class header file +// +// +// G4PolyPhiFace +// +// Class description: +// +// Definition of a face that bounds a polycone or polyhedra when +// it has a phi opening. +// +// Specifically: a face that lies on a plane that passes through +// the z axis. It has boundaries that are straight lines of arbitrary +// length and direction, but with corners aways on the same side of +// the z axis. + +// -------------------------------------------------------------------- + #ifndef G4PolyPhiFace_hh #define G4PolyPhiFace_hh diff --git a/source/geometry/solids/CSG/include/G4PolyPhiFace.icc b/source/geometry/solids/specific/include/G4PolyPhiFace.icc similarity index 83% rename from source/geometry/solids/CSG/include/G4PolyPhiFace.icc rename to source/geometry/solids/specific/include/G4PolyPhiFace.icc index f7ad148126..ea303c1d44 100644 --- a/source/geometry/solids/CSG/include/G4PolyPhiFace.icc +++ b/source/geometry/solids/specific/include/G4PolyPhiFace.icc @@ -1,18 +1,22 @@ -// -// G4PolyPhiFace.icc -// -// Implementation of inline methods of G4PolyPhiFace -// -// ---------------------------------------------------------- // This code implementation is the intellectual property of // the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. -// - // +// $Id: G4PolyPhiFace.icc,v 1.1 2000/04/07 10:57:03 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// -------------------------------------------------------------------- +// GEANT 4 inline definitions file +// +// G4PolyPhiFace.icc +// +// Implementation of inline methods of G4PolyPhiFace +// -------------------------------------------------------------------- + // ExactZOrder // // Decide precisely whether a trajectory passes to the left, right, or exactly diff --git a/source/geometry/solids/CSG/include/G4Polycone.hh b/source/geometry/solids/specific/include/G4Polycone.hh similarity index 88% rename from source/geometry/solids/CSG/include/G4Polycone.hh rename to source/geometry/solids/specific/include/G4Polycone.hh index b765050102..86776c2ab5 100644 --- a/source/geometry/solids/CSG/include/G4Polycone.hh +++ b/source/geometry/solids/specific/include/G4Polycone.hh @@ -1,10 +1,3 @@ -// -// G4Polycone.hh -// -// Declaration of a CSG type "PCON" geant volume, inherited from -// class G4VCSGSolid -// -// ---------------------------------------------------------- // This code implementation is the intellectual property of // the GEANT4 collaboration. // @@ -12,6 +5,22 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // +// $Id: G4Polycone.hh,v 1.3 2000/06/27 16:20:11 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// -------------------------------------------------------------------- +// GEANT 4 class header file +// +// +// G4Polycone +// +// Class description: +// +// Class implementing a CSG type "PCON" Geant 3.21 volume, +// inherited from class G4VCSGSolid. + +// -------------------------------------------------------------------- #ifndef G4Polycone_hh #define G4Polycone_hh @@ -88,11 +97,12 @@ class G4Polycone : public G4VCSGfaceted // // The following is temporary until graphics_reps is brought up to this design // - struct G4PolyconeHistorical { + class G4PolyconeHistorical + { + public: G4PolyconeHistorical() {;} ~G4PolyconeHistorical(); G4PolyconeHistorical( const G4PolyconeHistorical &source ); - G4double Start_angle; G4double Opening_angle; G4int Num_z_planes; diff --git a/source/geometry/solids/CSG/include/G4PolyconeSide.hh b/source/geometry/solids/specific/include/G4PolyconeSide.hh similarity index 81% rename from source/geometry/solids/CSG/include/G4PolyconeSide.hh rename to source/geometry/solids/specific/include/G4PolyconeSide.hh index 1aa25fe50a..2b3677fb34 100644 --- a/source/geometry/solids/CSG/include/G4PolyconeSide.hh +++ b/source/geometry/solids/specific/include/G4PolyconeSide.hh @@ -1,8 +1,27 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4PolyconeSide.hh,v 1.1 2000/04/07 10:57:41 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// -------------------------------------------------------------------- +// GEANT 4 class header file +// // // G4PolyconeSide // -// Declaration of a face that represents one conical side of a polycone +// Class description: // +// Class implmenting a face that represents one conical side +// of a polycone. + +// -------------------------------------------------------------------- + #ifndef G4PolyconeSide_hh #define G4PolyconeSide_hh diff --git a/source/geometry/solids/CSG/include/G4Polyhedra.hh b/source/geometry/solids/specific/include/G4Polyhedra.hh similarity index 88% rename from source/geometry/solids/CSG/include/G4Polyhedra.hh rename to source/geometry/solids/specific/include/G4Polyhedra.hh index 42d0e14368..41f314ecc1 100644 --- a/source/geometry/solids/CSG/include/G4Polyhedra.hh +++ b/source/geometry/solids/specific/include/G4Polyhedra.hh @@ -1,10 +1,3 @@ -// -// G4Polyhedra.hh -// -// Declaration of a CSG type "PCON" geant volume, inherited from -// class G4CSGSolid -// -// ---------------------------------------------------------- // This code implementation is the intellectual property of // the GEANT4 collaboration. // @@ -12,6 +5,22 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // +// $Id: G4Polyhedra.hh,v 1.2 2000/06/26 09:54:34 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// -------------------------------------------------------------------- +// GEANT 4 class header file +// +// +// G4Polyhedra.hh +// +// Class description: +// +// Class implementing a CSG type "PGON" Geant 3.21 volume, +// inherited from class G4CSGSolid. + +// -------------------------------------------------------------------- #ifndef G4Polyhedra_hh #define G4Polyhedra_hh @@ -62,7 +71,7 @@ class G4Polyhedra : public G4VCSGfaceted { G4Polyhedron* CreatePolyhedron() const; G4NURBS* CreateNURBS() const; - inline G4int GetNumSIde() const { return numSide; } + inline G4int GetNumSide() const { return numSide; } inline G4double GetStartPhi() const { return startPhi; } inline G4double GetEndPhi() const { return endPhi; } inline G4bool IsOpen() const { return phiIsOpen; } diff --git a/source/geometry/solids/CSG/include/G4PolyhedraSide.hh b/source/geometry/solids/specific/include/G4PolyhedraSide.hh similarity index 91% rename from source/geometry/solids/CSG/include/G4PolyhedraSide.hh rename to source/geometry/solids/specific/include/G4PolyhedraSide.hh index 77b1742e08..021cc83dcd 100644 --- a/source/geometry/solids/CSG/include/G4PolyhedraSide.hh +++ b/source/geometry/solids/specific/include/G4PolyhedraSide.hh @@ -1,9 +1,3 @@ -// -// G4PolyhedraSide -// -// Declaration of a face that represents one segmented side of a polyhedra -// -// ---------------------------------------------------------- // This code implementation is the intellectual property of // the GEANT4 collaboration. // @@ -11,6 +5,23 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // +// $Id: G4PolyhedraSide.hh,v 1.1 2000/04/07 10:58:14 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// -------------------------------------------------------------------- +// GEANT 4 class header file +// +// +// G4PolyhedraSide +// +// Class description: +// +// Class implementing a face that represents one segmented side +// of a polyhedra. + +// -------------------------------------------------------------------- + #ifndef G4PolyhedraSide_hh #define G4PolyhedraSide_hh diff --git a/source/geometry/solids/CSG/include/G4ReduciblePolygon.hh b/source/geometry/solids/specific/include/G4ReduciblePolygon.hh similarity index 77% rename from source/geometry/solids/CSG/include/G4ReduciblePolygon.hh rename to source/geometry/solids/specific/include/G4ReduciblePolygon.hh index 374f75f700..10b4eb87e8 100644 --- a/source/geometry/solids/CSG/include/G4ReduciblePolygon.hh +++ b/source/geometry/solids/specific/include/G4ReduciblePolygon.hh @@ -1,22 +1,3 @@ -// -// G4ReduciblePolygon.hh -// -// Declaration of a utility class used to specify, test, reduce, -// and/or otherwise manipulate a 2D polygon. -// -// For this class, a polygon consists of n > 2 points in 2D -// space (a,b). The polygon is always closed by connecting the -// last point to the first. A G4ReduciblePolygon is guaranteed -// to fulfill this definition in all instances. -// -// Illegal manipulations (such that a valid polygon would be -// produced) result in an error return if possible and -// otherwise a G4Exception. -// -// The set of manipulations is limited currently to what -// is needed for G4Polycone and G4Polyhedra. -// -// ---------------------------------------------------------- // This code implementation is the intellectual property of // the GEANT4 collaboration. // @@ -24,6 +5,34 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // +// $Id: G4ReduciblePolygon.hh,v 1.1 2000/04/07 10:58:32 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// -------------------------------------------------------------------- +// GEANT 4 class header file +// +// +// G4ReduciblePolygon.hh +// +// Class description: +// +// Utility class used to specify, test, reduce, and/or otherwise +// manipulate a 2D polygon. +// +// For this class, a polygon consists of n > 2 points in 2D +// space (a,b). The polygon is always closed by connecting the +// last point to the first. A G4ReduciblePolygon is guaranteed +// to fulfill this definition in all instances. +// +// Illegal manipulations (such that a valid polygon would be +// produced) result in an error return if possible and +// otherwise a G4Exception. +// +// The set of manipulations is limited currently to what +// is needed for G4Polycone and G4Polyhedra. + +// -------------------------------------------------------------------- #ifndef G4ReduciblePolygon_hh #define G4ReduciblePolygon_hh diff --git a/source/geometry/solids/CSG/include/G4SolidExtentList.hh b/source/geometry/solids/specific/include/G4SolidExtentList.hh similarity index 66% rename from source/geometry/solids/CSG/include/G4SolidExtentList.hh rename to source/geometry/solids/specific/include/G4SolidExtentList.hh index 201b6f86ba..b4c5d04b2e 100644 --- a/source/geometry/solids/CSG/include/G4SolidExtentList.hh +++ b/source/geometry/solids/specific/include/G4SolidExtentList.hh @@ -1,13 +1,3 @@ -// -// G4SolidExtentList.hh -// -// Declaration of a list of (voxel) extents along one axis -// -// This utility class is designed for one specific purpose: to -// calculate the extent of a CSG solid for a voxel -// (G4VSolid::CalculateExtent). -// -// ---------------------------------------------------------- // This code implementation is the intellectual property of // the GEANT4 collaboration. // @@ -15,6 +5,25 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // +// $Id: G4SolidExtentList.hh,v 1.1 2000/04/07 10:58:50 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// -------------------------------------------------------------------- +// GEANT 4 class header file +// +// +// G4SolidExtentList +// +// Class description: +// +// Defines a list of (voxel) extents along one axis. +// +// This utility class is designed for one specific purpose: +// to calculate the extent of a CSG solid for a voxel +// (G4VSolid::CalculateExtent). + +// -------------------------------------------------------------------- #ifndef G4SolidExtentList_hh #define G4SolidExtentList_hh diff --git a/source/geometry/solids/specific/include/G4VCSGface.hh b/source/geometry/solids/specific/include/G4VCSGface.hh new file mode 100644 index 0000000000..8f9968e6ea --- /dev/null +++ b/source/geometry/solids/specific/include/G4VCSGface.hh @@ -0,0 +1,283 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4VCSGface.hh,v 1.1 2000/04/07 10:59:18 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// -------------------------------------------------------------------- +// GEANT 4 class header file +// +// +// G4VCSGface +// +// Class description: +// +// Definition of the virtual base class G4VCSGface, one side (or face) +// of a CSG solid. It should be possible to build a CSG entirely out of +// connecting CSG faces. +// +// Each face has an inside and outside surface, the former represents +// the inside of the volume, the latter, the outside. +// +// Virtual members: +// +// ------------------------------------------------------------------- +// Intersect( const G4ThreeVector &p, const G4ThreeVector &v, const G4bool outGoing, const G4double surfTolerance, +// const G4bool outgoing, const G4double surfTolerance, +// G4double &distance, G4double &distFromSurface, +// G4ThreeVector &normal, G4bool &allBehind ); +// +// p - (in) position +// v - (in) direction (assumed to be a unit vector) +// outgoing - (in) true, to consider only inside surfaces +// false, to consider only outside surfaces +// distance - (out) distance to intersection +// distFromSurface - (out) distance from surface (along surface normal), +// < 0 if the point is in front of the surface +// normal - (out) normal of surface at intersection point +// allBehind - (out) true, if entire surface is behind normal +// +// return value = true if there is an intersection, +// false if there is no intersection +// (all output arguments undefined) +// +// Determine the distance along a line to the face. +// +// ------------------------------------------------------------------- +// Distance( const G4ThreeVector &p, const G4bool outgoing ); +// +// p - (in) position +// outgoing - (in) true, to consider only inside surfaces +// false, to consider only outside surfaces +// +// return value = distance to closest surface satisifying requirements +// or kInfinity if no such surface exists +// +// Determine the distance of a point from either the inside or outside +// surfaces of the face. +// +// ------------------------------------------------------------------- +// Inside( const G4ThreeVector &p, const G4double tolerance, +// G4double *bestDistance ); +// +// p - (in) position +// tolerance - (in) tolerance defining the bounds of the "kSurface", +// nominally equal to kCarTolerance/2 +// bestDistance - (out) distance to closest surface (in or out) +// +// return value = kInside if the point is closest to the inside surface +// kOutside if the point is closest to the outside surface +// kSurface if the point is withing tolerance of the surface +// +// Determine whether a point is inside, outside, or on the surface of +// the face. +// +// ------------------------------------------------------------------- +// Normal( const G4ThreeVector &p, G4double *bestDistance ); +// +// p - (in) position +// bestDistance - (out) distance to closest surface (in or out) +// +// return value = the normal of the surface nearest the point +// +// Return normal of surface closest to the point. +// +// ------------------------------------------------------------------- +// Extent( const G4ThreeVector axis ); +// +// axis - (in) unit vector defining direction +// +// return value = the largest point along the given axis of the +// the face's extent. +// +// ------------------------------------------------------------------- +// CalculateExtent( const EAxis pAxis, +// const G4VoxelLimit &pVoxelLimit, +// const G4AffineTransform &pTransform, +// G4double &min, G4double &max ) +// +// pAxis - (in) The x,y, or z axis in which to check +// the shapes 3D extent against +// pVoxelLimit - (in) Limits along x, y, and/or z axes +// pTransform - (in) A coordinate transformation on which +// to apply to the shape before testing +// min - (out) If the face has any point on its +// surface after tranformation and limits +// along pAxis that is smaller than the value +// of min, than it is used to replace min. +// Undefined if the return value is false. +// max - (out) Same as min, except for the largest +// point. +// Undefined if the return value is false. +// +// return value = true if anything remains of the face +// +// Calculate the extent of the face for the voxel navigator. +// In analogy with CalculateExtent for G4VCSGfaceted, this is +// done in the following steps: +// +// 1. Transform the face using pTranform, an arbitrary 3D +// rotation/offset/reflection +// 2. Clip the face to those boundaries as specified in +// pVoxelLimit. This may include limits in any number +// of x, y, or z axes. +// 3. For each part of the face that remains (there could +// be many separate pieces in general): +// 4. Check to see if the piece overlaps the currently +// existing limits along axis pAxis. For +// pVoxelLimit.IsLimited(pAxis) = false, there are +// no limits. +// 5. For a piece that does overlap, update min/max +// accordingly (within confines of pre-existing +// limits) along the direction pAxis. +// 6. If min/max were updated, return true +// +// ------------------------------------------------------------------- +// G3VCSGface *Clone() +// +// This method is invoked by G4CSGfaceted during the copy constructor +// or the assignment operator. Its purpose is to return a pointer +// (of type G4VCSGface) to a duplicate copy of the face. +// The implementation is straight forward for inherited classes. Example: +// +// G4VCSGface G4PolySideFace::Clone() { return new G4PolySideFace(*this); } +// +// Of course, this assumes the copy constructor of G4PolySideFace is +// correctly implemented. +// +// Implementation notes: +// * distance. +// The meaning of distance includes the boundaries of the face. +// For example, for a rectangular, planer face: +// +// A | B | C +// | | +// -------+--------------+----- +// D | I | E +// | | +// -------+--------------+----- +// F | G | H +// | | +// +// A, C, F, and H: closest distance is the distance to +// the adjacent corner. +// +// B, D, E, and G: closest distance is the distance to +// the adjacent line. +// +// I: normal distance to plane +// +// For non-planer faces, one can use the normal to decide when +// a point falls off the edge and then act accordingly. +// +// +// Usage: +// +// A CSG shape can be defined by putting together any number of generic +// faces, as long as the faces cover the entire surface of the shape +// without overlapping. +// +// G4VSolid::CalculateExtent +// +// Define unit vectors along the specified transform axis. +// Use the inverse of the specified coordinate transformation to rotate +// these unit vectors. Loop over each face, call face->Extent, and save +// the maximum value. +// +// G4VSolid::Inside +// +// To decide if a point is inside, outside, or on the surface of the shape, +// loop through all faces, and find the answer from face->Inside which gives +// a value of "bestDistance" smaller than any other. While looping, if any +// face->Inside returns kSurface, this value can be returned immediately. +// +// EInside answer; +// G4VCSGface *face = faces; +// G4double best = kInfinity; +// do { +// G4double distance; +// EInside result = (*face)->Inside( p, kCarTolerance/2, distance ); +// if (result == kSurface) return kSurface; +// if (distance < best) { +// best = distance; +// answer = result; +// } +// } while( ++face < faces + numFaces ); +// +// return(answer); +// +// G4VSolid::SurfaceNormal +// +// Loop over all faces, call face->Normal, and return the normal to the face +// that is closest to the point. +// +// G4VSolid::DistanceToIn(p) +// +// Loop over all faces, invoking face->Distance with outgoing = false, +// and save the answer that is smallest. +// +// G4VSolid::DistanceToIn(p,v) +// +// Loop over all faces, invoking face->Intersect with outgoing = false, +// and save the answer that is smallest. +// +// G4VSolid::DistanceToOut(p) +// +// Loop over all faces, invoking face->Distance with outgoing = true, +// and save the answer that is smallest. +// +// G4VSolid::DistanceToOut(p,v) +// +// Loop over all faces, invoking face->Intersect with outgoing = true, +// and save the answer that is smallest. If there is more than one answer, +// or if allBehind is false for the one answer, return validNorm as false. + +// -------------------------------------------------------------------- + +#ifndef G4VCSGface_hh +#define G4VCSGface_hh + +#include "G4VSolid.hh" + +#include "globals.hh" +#include "G4ThreeVector.hh" +#include "geomdefs.hh" + +class G4VoxelLimits; +class G4AffineTransform; +class G4SolidExtentList; + +class G4VCSGface { + public: + G4VCSGface() {;} + virtual ~G4VCSGface() {;} + + virtual G4bool Intersect( const G4ThreeVector &p, const G4ThreeVector &v, + const G4bool outgoing, const G4double surfTolerance, + G4double &distance, G4double &distFromSurface, + G4ThreeVector &normal, G4bool &allBehind ) = 0; + + virtual G4double Distance( const G4ThreeVector &p, const G4bool outgoing ) = 0; + + virtual EInside Inside( const G4ThreeVector &p, const G4double tolerance, + G4double *bestDistance ) = 0; + + virtual G4ThreeVector Normal( const G4ThreeVector &p, G4double *bestDistance ) = 0; + + virtual G4double Extent( const G4ThreeVector axis ) = 0; + + virtual void CalculateExtent( const EAxis axis, + const G4VoxelLimits &voxelLimit, + const G4AffineTransform &tranform, + G4SolidExtentList &extentList ) = 0; + + virtual G4VCSGface* Clone() = 0; +}; + +#endif + diff --git a/source/geometry/solids/CSG/include/G4VCSGfaceted.hh b/source/geometry/solids/specific/include/G4VCSGfaceted.hh similarity index 63% rename from source/geometry/solids/CSG/include/G4VCSGfaceted.hh rename to source/geometry/solids/specific/include/G4VCSGfaceted.hh index fd3690e474..467d1b626f 100644 --- a/source/geometry/solids/CSG/include/G4VCSGfaceted.hh +++ b/source/geometry/solids/specific/include/G4VCSGfaceted.hh @@ -1,20 +1,39 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. // -// G4VCSGfaceted.hh +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. // -// Declaration of a virtual class CSG type shape that is built entire of G4CSGface faces. +// $Id: G4VCSGfaceted.hh,v 1.3 2000/04/19 17:56:29 davidw Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // +// +// -------------------------------------------------------------------- +// GEANT 4 class header file +// +// +// G4VCSGfaceted +// +// Class description: +// +// Virtual class defining CSG type shape that is built entire +// of G4CSGface faces. + +// -------------------------------------------------------------------- #ifndef G4VCSGfaceted_hh #define G4VCSGfaceted_hh -#include "G4CSGSolid.hh" +#include "G4VSolid.hh" class G4VCSGface; +class G4VisExtent; -class G4VCSGfaceted : public G4CSGSolid +class G4VCSGfaceted : public G4VSolid { public: - G4VCSGfaceted( G4String name) : G4CSGSolid(name) {;} + G4VCSGfaceted( G4String name) : G4VSolid(name) {;} virtual ~G4VCSGfaceted(); G4VCSGfaceted( const G4VCSGfaceted &source ); @@ -43,7 +62,7 @@ class G4VCSGfaceted : public G4CSGSolid virtual void DescribeYourselfTo( G4VGraphicsScene& scene ) const; virtual G4VisExtent GetExtent() const; - + protected: G4int numFace; G4VCSGface **faces; diff --git a/source/geometry/solids/CSG/src/G4ClippablePolygon.cc b/source/geometry/solids/specific/src/G4ClippablePolygon.cc similarity index 91% rename from source/geometry/solids/CSG/src/G4ClippablePolygon.cc rename to source/geometry/solids/specific/src/G4ClippablePolygon.cc index 0c67d4109a..2100012e78 100644 --- a/source/geometry/solids/CSG/src/G4ClippablePolygon.cc +++ b/source/geometry/solids/specific/src/G4ClippablePolygon.cc @@ -1,9 +1,3 @@ -// -// G4ClippablePolygon.cc -// -// Includes code from G4VSolid (P. Kent, V. Grichine, J. Allison) -// -// ---------------------------------------------------------- // This code implementation is the intellectual property of // the GEANT4 collaboration. // @@ -11,6 +5,19 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // +// $Id: G4ClippablePolygon.cc,v 1.2 2000/04/18 19:07:11 davidw Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// -------------------------------------------------------------------- +// GEANT 4 class source file +// +// +// G4ClippablePolygon.cc +// +// Includes code from G4VSolid (P. Kent, V. Grichine, J. Allison) +// +// -------------------------------------------------------------------- #include "G4ClippablePolygon.hh" @@ -38,7 +45,7 @@ void G4ClippablePolygon::ClearAllVertices() // // Clip // -const G4bool G4ClippablePolygon::Clip( const G4VoxelLimits &voxelLimit ) +G4bool G4ClippablePolygon::Clip( const G4VoxelLimits &voxelLimit ) { if (voxelLimit.IsLimited()) { ClipAlongOneAxis( voxelLimit, kXAxis ); @@ -55,7 +62,7 @@ const G4bool G4ClippablePolygon::Clip( const G4VoxelLimits &voxelLimit ) // // Clip, while ignoring the indicated axis // -const G4bool G4ClippablePolygon::PartialClip( const G4VoxelLimits &voxelLimit, const EAxis IgnoreMe ) +G4bool G4ClippablePolygon::PartialClip( const G4VoxelLimits &voxelLimit, const EAxis IgnoreMe ) { if (voxelLimit.IsLimited()) { if (IgnoreMe != kXAxis) ClipAlongOneAxis( voxelLimit, kXAxis ); @@ -70,8 +77,8 @@ const G4bool G4ClippablePolygon::PartialClip( const G4VoxelLimits &voxelLimit, c // // GetExtent // -const G4bool G4ClippablePolygon::GetExtent( const EAxis axis, - G4double &min, G4double &max ) const +G4bool G4ClippablePolygon::GetExtent( const EAxis axis, + G4double &min, G4double &max ) const { // // Okay, how many entries do we have? @@ -174,7 +181,7 @@ const G4ThreeVector *G4ClippablePolygon::GetMaxPoint( const EAxis axis ) const // polygon1.InFrontOf(polygon2) // polygon2.BehindOf(polygon1) // -const G4bool G4ClippablePolygon::InFrontOf( const G4ClippablePolygon &other, EAxis axis ) const +G4bool G4ClippablePolygon::InFrontOf( const G4ClippablePolygon &other, EAxis axis ) const { // // If things are empty, do something semi-sensible @@ -234,7 +241,7 @@ const G4bool G4ClippablePolygon::InFrontOf( const G4ClippablePolygon &other, EAx // Decide if this polygon is behind another. // See notes in method "InFrontOf" // -const G4bool G4ClippablePolygon::BehindOf( const G4ClippablePolygon &other, EAxis axis ) const +G4bool G4ClippablePolygon::BehindOf( const G4ClippablePolygon &other, EAxis axis ) const { // // If things are empty, do something semi-sensible @@ -294,9 +301,9 @@ const G4bool G4ClippablePolygon::BehindOf( const G4ClippablePolygon &other, EAxi // // Get min/max distance in or out of a plane // -const G4bool G4ClippablePolygon::GetPlanerExtent( const G4ThreeVector &pointOnPlane, - const G4ThreeVector &planeNormal, - G4double &min, G4double &max ) const +G4bool G4ClippablePolygon::GetPlanerExtent( const G4ThreeVector &pointOnPlane, + const G4ThreeVector &planeNormal, + G4double &min, G4double &max ) const { // // Okay, how many entries do we have? diff --git a/source/geometry/solids/specific/src/G4EllipticalTube.cc b/source/geometry/solids/specific/src/G4EllipticalTube.cc new file mode 100644 index 0000000000..e9da90f9ea --- /dev/null +++ b/source/geometry/solids/specific/src/G4EllipticalTube.cc @@ -0,0 +1,709 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4EllipticalTube.cc,v 1.7 2000/04/19 19:09:07 davidw Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// -------------------------------------------------------------------- +// GEANT 4 class source file +// +// +// G4EllipticalTube.cc +// +// Implementation of a CSG volume representing a tube with elliptical cross +// section (geant3 solid 'ELTU') +// +// -------------------------------------------------------------------- + +#include "G4EllipticalTube.hh" +#include "G4ClippablePolygon.hh" +#include "G4AffineTransform.hh" +#include "G4SolidExtentList.hh" +#include "G4VoxelLimits.hh" +#include "meshdefs.hh" + +#include "G4VGraphicsScene.hh" +#include "G4Polyhedron.hh" +#include "G4VisExtent.hh" + +// +// Constructor +// +G4EllipticalTube::G4EllipticalTube( const G4String &name, + const G4double theDx, const G4double theDy, const G4double theDz ) + : G4VSolid( name ) +{ + dx = theDx; + dy = theDy; + dz = theDz; +} + + +// +// Destructor +// +G4EllipticalTube::~G4EllipticalTube() {;} + + +// +// CalculateExtent +// +G4bool G4EllipticalTube::CalculateExtent( const EAxis axis, + const G4VoxelLimits &voxelLimit, + const G4AffineTransform &transform, + G4double &min, G4double &max ) const +{ + G4SolidExtentList extentList( axis, voxelLimit ); + + // + // We are going to divide up our elliptical face into small + // pieces + // + + // + // Choose phi size of our segment(s) based on constants as + // defined in meshdefs.hh + // + G4int numPhi = kMaxMeshSections; + G4double sigPhi = 2*M_PI/numPhi; + + // + // We have to be careful to keep our segments completely outside + // of the elliptical surface. To do so we imagine we have + // a simple (unit radius) circular cross section (as in G4Tubs) + // and then "stretch" the dimensions as necessary to fit the ellipse. + // + G4double rFudge = 1.0/cos(0.5*sigPhi); + G4double dxFudge = dx*rFudge, + dyFudge = dy*rFudge; + + // + // As we work around the elliptical surface, we build + // a "phi" segment on the way, and keep track of two + // additional polygons for the two ends. + // + G4ClippablePolygon endPoly1, endPoly2, phiPoly; + + G4double phi = 0, + cosPhi = cos(phi), + sinPhi = sin(phi); + G4ThreeVector v0( dxFudge*cosPhi, dyFudge*sinPhi, +dz ), + v1( dxFudge*cosPhi, dyFudge*sinPhi, -dz ), + w0, w1; + transform.ApplyPointTransform( v0 ); + transform.ApplyPointTransform( v1 ); + do { + phi += sigPhi; + if (numPhi == 1) phi = 0; // Try to avoid roundoff + cosPhi = cos(phi), + sinPhi = sin(phi); + + w0 = G4ThreeVector( dxFudge*cosPhi, dyFudge*sinPhi, +dz ); + w1 = G4ThreeVector( dxFudge*cosPhi, dyFudge*sinPhi, -dz ); + transform.ApplyPointTransform( w0 ); + transform.ApplyPointTransform( w1 ); + + // + // Add a point to our z ends + // + endPoly1.AddVertexInOrder( v0 ); + endPoly2.AddVertexInOrder( v1 ); + + // + // Build phi polygon + // + phiPoly.ClearAllVertices(); + + phiPoly.AddVertexInOrder( v0 ); + phiPoly.AddVertexInOrder( v1 ); + phiPoly.AddVertexInOrder( w1 ); + phiPoly.AddVertexInOrder( w0 ); + + if (phiPoly.PartialClip( voxelLimit, axis )) { + // + // Get unit normal + // + phiPoly.SetNormal( (v1-v0).cross(w0-v0).unit() ); + + extentList.AddSurface( phiPoly ); + } + + // + // Next vertex + // + v0 = w0; + v1 = w1; + } while( --numPhi > 0 ); + + // + // Process the end pieces + // + if (endPoly1.PartialClip( voxelLimit, axis )) { + static const G4ThreeVector normal(0,0,+1); + endPoly1.SetNormal( transform.TransformAxis(normal) ); + extentList.AddSurface( endPoly1 ); + } + + if (endPoly2.PartialClip( voxelLimit, axis )) { + static const G4ThreeVector normal(0,0,-1); + endPoly2.SetNormal( transform.TransformAxis(normal) ); + extentList.AddSurface( endPoly2 ); + } + + // + // Return min/max value + // + return extentList.GetExtent( min, max ); +} + + +// +// Inside +// +// Note that for this solid, we've decided to define the tolerant +// surface as that which is bounded by ellipses with axes +// at +/- 0.5*kCarTolerance. +// +EInside G4EllipticalTube::Inside( const G4ThreeVector& p) const +{ + static const G4double halfTol = 0.5*kCarTolerance; + + // + // Check z extents: are we outside? + // + G4double absZ = fabs(p.z()); + if (absZ > dz+halfTol) return kOutside; + + // + // Check x,y: are we outside? + // + G4double x = p.x(), y = p.y(); + + if (CheckXY(p.x(), p.y(), +halfTol) > 1.0) return kOutside; + + // + // We are either inside or on the surface: recheck z extents + // + if (absZ > dz-halfTol) return kSurface; + + // + // Recheck x,y + // + if (CheckXY(p.x(), p.y(), -halfTol) > 1.0) return kSurface; + + return kInside; +} + + +// +// SurfaceNormal +// +G4ThreeVector G4EllipticalTube::SurfaceNormal( const G4ThreeVector& p) const +{ + // + // Which of the three surfaces are we closest to (approximately)? + // + G4double distZ = fabs(p.z()) - dz; + + G4double rxy = CheckXY( p.x(), p.y() ); + G4double distR2 = (rxy < DBL_MIN) ? DBL_MAX : 1.0/rxy; + + // + // Closer to z? + // + if (distZ*distZ < distR2) + return G4ThreeVector( 0.0, 0.0, p.z() < 0 ? -1.0 : 1.0 ); + + // + // Closer to x/y + // + return G4ThreeVector( p.x()*dy*dy, p.y()*dx*dx, 0.0 ).unit(); +} + + +// +// DistanceToIn(p,v) +// +// Unlike DistanceToOut(p,v), it is possible for the trajectory +// to miss. The geometric calculations here are quite simple. +// More difficult is the logic required to prevent particles +// from sneaking (or leaking) between the elliptical and end +// surfaces. +// +// Keep in mind that the true distance is allowed to be +// negative if the point is currently on the surface. For oblique +// angles, it can be very negative. +// +G4double G4EllipticalTube::DistanceToIn( const G4ThreeVector& p,const G4ThreeVector& v ) const +{ + static const G4double halfTol = 0.5*kCarTolerance; + + // + // Check z = -dz planer surface + // + G4double sigz = p.z()+dz; + + if (sigz < halfTol) { + // + // We are "behind" the shape in z, and so can + // potentially hit the rear face. Correct direction? + // + if (v.z() <= 0) { + // + // As long as we are far enough away, we know we + // can't intersect + // + if (sigz < 0) return kInfinity; + + // + // Otherwise, we don't intersect unless we are + // on the surface of the ellipse + // + if (CheckXY(p.x(),p.y(),-halfTol) <= 1.0) return kInfinity; + } + else { + + // + // How far? + // + G4double s = -sigz/v.z(); + + // + // Where does that place us? + // + G4double xi = p.x() + s*v.x(), + yi = p.y() + s*v.y(); + + // + // Is this on the surface (within ellipse)? + // + if (CheckXY(xi,yi) <= 1.0) { + // + // Yup. Return s, unless we are on the surface + // + return (sigz < -halfTol) ? s : 0; + } + else if (xi*dy*dy*v.x() + yi*dx*dx*v.y() >= 0) { + // + // Else, if we are traveling outwards, we know + // we must miss + // + return kInfinity; + } + } + } + + // + // Check z = +dz planer surface + // + sigz = p.z() - dz; + + if (sigz > -halfTol) { + if (v.z() >= 0) { + if (sigz > 0) return kInfinity; + if (CheckXY(p.x(),p.y(),-halfTol) <= 1.0) return kInfinity; + } + else { + G4double s = -sigz/v.z(); + + G4double xi = p.x() + s*v.x(), + yi = p.y() + s*v.y(); + + if (CheckXY(xi,yi) <= 1.0) { + return (sigz > -halfTol) ? s : 0; + } + else if (xi*dy*dy*v.x() + yi*dx*dx*v.y() >= 0) { + return kInfinity; + } + } + } + + // + // Check intersection with the elliptical tube + // + G4double s[2]; + G4int n = IntersectXY( p, v, s ); + + if (n==0) return kInfinity; + + // + // Is the original point on the surface? + // + if (fabs(p.z()) < dz+halfTol) { + if (CheckXY( p.x(), p.y(), halfTol ) < 1.0) { + // + // Well, yes, but are we traveling inwards at this point? + // + if (p.x()*dy*dy*v.x() + p.y()*dx*dx*v.y() < 0) return 0; + } + } + + // + // We are now certain that point p is not on the surface of + // the solid (and thus fabs(s[0]) > halfTol). + // Return kInfinity if the intersection is "behind" the point. + // + if (s[0] < 0) return kInfinity; + + // + // Check to see if we intersect the tube within + // dz, but only when we know it might miss + // + G4double zi = p.z() + s[0]*v.z(); + + if (v.z() < 0) { + if (zi < -dz) return kInfinity; + } + else if (v.z() > 0) { + if (zi > +dz) return kInfinity; + } + + return s[0]; +} + + +// +// DistanceToIn(p) +// +// The distance from a point to an ellipse (in 2 dimensions) is a +// surprisingly complicated quadric expression (this is easy to +// appreciate once one understands that there may be up to +// four lines normal to the ellipse intersecting any point). To +// solve it exactly would be rather time consuming. This method, +// however, is supposed to be a quick check, and is allowed to be an +// underestimate. +// +// So, I will use the following underestimate of the distance +// from an outside point to an ellipse. First: find the intersection "A" +// of the line from the origin to the point with the ellipse. +// Find the line passing through "A" and tangent to the ellipse +// at A. The distance of the point p from the ellipse will be approximated +// as the distance to this line. +// +G4double G4EllipticalTube::DistanceToIn( const G4ThreeVector& p ) const +{ + static const G4double halfTol = 0.5*kCarTolerance; + + if (CheckXY( p.x(), p.y(), +halfTol ) < 1.0) { + // + // We are inside or on the surface of the + // elliptical cross section in x/y. Check z + // + if (p.z() < -dz-halfTol) + return -p.z()-dz; + else if (p.z() > dz+halfTol) + return p.z()-dz; + else + return 0; // On any surface here (or inside) + } + + // + // Find point on ellipse + // + G4double qnorm = CheckXY( p.x(), p.y() ); + if (qnorm < DBL_MIN) return 0; // This should never happen + + G4double q = 1.0/sqrt(qnorm); + + G4double xe = q*p.x(), ye = q*p.y(); + + // + // Get tangent to ellipse + // + G4double tx = -ye*dx*dx, ty = +xe*dy*dy; + G4double tnorm = sqrt( tx*tx + ty*ty ); + + // + // Calculate distance + // + G4double distR = ( (p.x()-xe)*ty - (p.y()-ye)*tx )/tnorm; + + // + // Add the result in quadrature if we are, in addition, + // outside the z bounds of the shape + // + // We could save some time by returning the maximum rather + // than the quadrature sum + // + if (p.z() < -dz) + return sqrt( (p.z()+dz)*(p.z()+dz) + distR*distR ); + else if (p.z() > dz) + return sqrt( (p.z()-dz)*(p.z()-dz) + distR*distR ); + + return distR; +} + + +// +// DistanceToOut(p,v) +// +// This method can be somewhat complicated for a general shape. +// For a convex one, like this, there are several simplifications, +// the most important of which is that one can treat the surfaces +// as infinite in extent when deciding if the p is on the surface. +// +G4double G4EllipticalTube::DistanceToOut( const G4ThreeVector& p,const G4ThreeVector& v, + const G4bool calcNorm, + G4bool *validNorm,G4ThreeVector *norm ) const +{ + static const G4double halfTol = 0.5*kCarTolerance; + + // + // Our normal is always valid + // + if (calcNorm) *validNorm = true; + + G4double sBest = kInfinity; + const G4ThreeVector *nBest; + + // + // Might we intersect the -dz surface? + // + if (v.z() < 0) { + static const G4ThreeVector normHere(0.0,0.0,-1.0); + // + // Yup. What distance? + // + sBest = -(p.z()+dz)/v.z(); + + // + // Are we on the surface? If so, return zero + // + if (p.z() < -dz+halfTol) { + if (calcNorm) *norm = normHere; + return 0; + } + else + nBest = &normHere; + } + + // + // How about the +dz surface? + // + if (v.z() > 0) { + static const G4ThreeVector normHere(0.0,0.0,+1.0); + // + // Yup. What distance? + // + G4double s = (dz-p.z())/v.z(); + + // + // Are we on the surface? If so, return zero + // + if (p.z() > +dz-halfTol) { + if (calcNorm) *norm = normHere; + return 0; + } + + // + // Best so far? + // + if (s < sBest) { sBest = s; nBest = &normHere; } + } + + // + // Check furthest intersection with ellipse + // + G4double s[2]; + G4int n = IntersectXY( p, v, s ); + + if (n == 0) { + if (sBest == kInfinity) + G4Exception( "G4EllipticalTube::DistanceToOut - Point is outside" ); + + if (calcNorm) *norm = *nBest; + return sBest; + } + else if (s[n-1] > sBest) { + if (calcNorm) *norm = *nBest; + return sBest; + } + sBest = s[n-1]; + + // + // Intersection with ellipse. Get normal at intersection point. + // + if (calcNorm) { + G4ThreeVector ip = p + sBest*v; + *norm = G4ThreeVector( ip.x()*dy*dy, ip.y()*dx*dx, 0.0 ).unit(); + } + + // + // Do we start on the surface? + // + if (CheckXY( p.x(), p.y(), -halfTol ) > 1.0) { + // + // Well, yes, but are we traveling outwards at this point? + // + if (p.x()*dy*dy*v.x() + p.y()*dx*dx*v.y() > 0) return 0; + } + + return sBest; +} + + +// +// DistanceToOut(p) +// +// See DistanceToIn(p) for notes on the distance from a point +// to an ellipse in two dimensions. +// +// The approximation used here for a point inside the ellipse +// is to find the intersection with the ellipse of the lines +// through the point and parallel to the x and y axes. The +// distance of the point from the line connecting the two +// intersecting points is then used. +// +G4double G4EllipticalTube::DistanceToOut( const G4ThreeVector& p ) const +{ + static const G4double halfTol = 0.5*kCarTolerance; + + // + // We need to calculate the distances to all surfaces, + // and then return the smallest + // + // Check -dz and +dz surface + // + G4double sBest = dz - fabs(p.z()); + if (sBest < halfTol) return 0; + + // + // Check elliptical surface: find intersection of + // line through p and parallel to x axis + // + G4double radical = 1.0 - p.y()*p.y()/dy/dy; + if (radical < +DBL_MIN) return 0; + + G4double xi = dx*sqrt( radical ); + if (p.x() < 0) xi = -xi; + + // + // Do the same with y axis + // + radical = 1.0 - p.x()*p.x()/dx/dx; + if (radical < +DBL_MIN) return 0; + + G4double yi = dy*sqrt( radical ); + if (p.y() < 0) yi = -yi; + + // + // Get distance from p to the line connecting + // these two points + // + G4double xdi = p.x() - xi, + ydi = yi - p.y(); + + G4double normi = sqrt( xdi*xdi + ydi*ydi ); + if (normi < halfTol) return 0; + xdi /= normi; + ydi /= normi; + + G4double s = 0.5*(xdi*(p.y()-yi) - ydi*(p.x()-xi)); + if (xi*yi < 0) s = -s; + + if (s < sBest) sBest = s; + + // + // Return best answer + // + return sBest < halfTol ? 0 : sBest; +} + + +// +// CreatePolyhedron +// +G4Polyhedron* G4EllipticalTube::CreatePolyhedron() const +{ + if (dx==dy) { + // + // Special case (useful for debugging) + // + return new G4PolyhedronTubs( 0.0, dx, dz, 0, 2*M_PI ); + } + + G4cerr << "G4EllipticalTube: visualization of this type of solid is not supported at this time" << G4endl; + return 0; +} + + +// +// DescribeYourselfTo +// +void G4EllipticalTube::DescribeYourselfTo( G4VGraphicsScene& scene ) const +{ + scene.AddThis (*this); +} + + +// +// GetExtent +// +G4VisExtent G4EllipticalTube::GetExtent() const +{ + return G4VisExtent( -dx, dx, -dy, dy, -dz, dz ); +} + + +// +// IntersectXY +// +// Decide if and where the x/y trajectory hits the elliptical cross +// section. +// +// Arguments: +// p - (in) Point on trajectory +// v - (in) Vector along trajectory +// s - (out) Up to two points of intersection, where the +// intersection point is p + s*v, and if there are +// two intersections, s[0] < s[1]. May be negative. +// Returns: +// The number of intersections. If 0, the trajectory misses. If 1, the +// trajectory just grazes the surface. +// +// Solution: +// One needs to solve: ( (p.x + s*v.x)/dx )**2 + ( (p.y + s*v.y)/dy )**2 = 1 +// +// The solution is quadratic: a*s**2 + b*s + c = 0 +// +// a = (v.x/dx)**2 + (v.y/dy)**2 +// b = 2*p.x*v.x/dx**2 + 2*p.y*v.y/dy**2 +// c = (p.x/dx)**2 + (p.y/dy)**2 - 1 +// +G4int G4EllipticalTube::IntersectXY( const G4ThreeVector &p, + const G4ThreeVector &v, G4double s[2] ) const +{ + G4double px = p.x(), py = p.y(); + G4double vx = v.x(), vy = v.y(); + + G4double a = (vx/dx)*(vx/dx) + (vy/dy)*(vy/dy); + G4double b = 2.0*( px*vx/dx/dx + py*vy/dy/dy ); + G4double c = (px/dx)*(px/dx) + (py/dy)*(py/dy) - 1.0; + + if (a < DBL_MIN) return 0; // Trajectory parallel to z axis + + G4double radical = b*b - 4*a*c; + + if (radical < -DBL_MIN) return 0; // No solution + + if (radical < DBL_MIN) { + // + // Grazes surface + // + s[0] = -b/a/2.0; + return 1; + } + + radical = sqrt(radical); + + G4double q = -0.5*( b + (b < 0 ? -radical : +radical) ); + G4double sa = q/a; + G4double sb = c/q; + if (sa < sb) { s[0] = sa; s[1] = sb; } else { s[0] = sb; s[1] = sa; } + return 2; +} diff --git a/source/geometry/solids/CSG/src/G4EnclosingCylinder.cc b/source/geometry/solids/specific/src/G4EnclosingCylinder.cc similarity index 89% rename from source/geometry/solids/CSG/src/G4EnclosingCylinder.cc rename to source/geometry/solids/specific/src/G4EnclosingCylinder.cc index 17e25defe7..d20408806e 100644 --- a/source/geometry/solids/CSG/src/G4EnclosingCylinder.cc +++ b/source/geometry/solids/specific/src/G4EnclosingCylinder.cc @@ -1,9 +1,3 @@ -// -// G4EnclosingCylinder.cc -// -// Implementation of a utility class for a quick check of geometry -// -// ---------------------------------------------------------- // This code implementation is the intellectual property of // the GEANT4 collaboration. // @@ -11,6 +5,19 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // +// $Id: G4EnclosingCylinder.cc,v 1.1 2000/04/07 11:00:35 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// -------------------------------------------------------------------- +// GEANT 4 class source file +// +// +// G4EnclosingCylinder.cc +// +// Implementation of a utility class for a quick check of geometry. +// +// -------------------------------------------------------------------- #include "G4EnclosingCylinder.hh" #include "G4ReduciblePolygon.hh" diff --git a/source/geometry/solids/specific/src/G4Hype.cc b/source/geometry/solids/specific/src/G4Hype.cc new file mode 100644 index 0000000000..9ecf52da04 --- /dev/null +++ b/source/geometry/solids/specific/src/G4Hype.cc @@ -0,0 +1,1188 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4Hype.cc,v 1.3 2000/04/19 17:56:44 davidw Exp $ +// $Original: G4Hype.cc,v 1.0 1998/06/09 16:57:50 safai Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// -------------------------------------------------------------------- +// GEANT 4 class source file +// +// +// G4Hype.cc +// +// This class implements in G4 the volume equivalent to the HYPE volume +// in Geant 3.21, i.e. a tube with hyperbolic profile. +// For further informations, please read G4Hype.history and G4Hype.doc, +// and the G4Hype.hh header. +// +// -------------------------------------------------------------------- +// +// Authors: +// Ernesto Lamanna (Ernesto.Lamanna@roma1.infn.it) & +// Francesco Safai Tehrani (Francesco.SafaiTehrani@roma1.infn.it) +// Rome, INFN & University of Rome "La Sapienza", 9 June 1998. +// +// History: +// Updated Feb 2000 D.C. Williams +// +// -------------------------------------------------------------------- + +#include "G4Hype.hh" + +#include "G4VoxelLimits.hh" +#include "G4AffineTransform.hh" +#include "G4SolidExtentList.hh" +#include "G4ClippablePolygon.hh" + +#include "G4VPVParameterisation.hh" + +#include "meshdefs.hh" + +#include "G4VGraphicsScene.hh" +#include "G4Polyhedron.hh" +#include "G4VisExtent.hh" +#include "G4NURBS.hh" +#include "G4NURBStube.hh" +#include "G4NURBScylinder.hh" +#include "G4NURBStubesector.hh" + +// Constructor - check parameters, and fills protected data members +G4Hype::G4Hype(const G4String& pName, + const G4double newInnerRadius, + const G4double newOuterRadius, + const G4double newInnerStereo, + const G4double newOuterStereo, + const G4double newHalfLenZ) : G4VSolid(pName) +{ +// Check z-len + if (newHalfLenZ>0) + { + halfLenZ=newHalfLenZ; + } + else + { + G4Exception("Error in G4Hype::G4Hype - invalid z half-length"); + } + +// Check radii + if (newInnerRadius>=0 && newOuterRadius>=0) + if (newInnerRadius < newOuterRadius) { + innerRadius=newInnerRadius; + outerRadius=newOuterRadius; + } + else { // swapping radii (:-) +// innerRadius=newOuterRadius; +// outerRadius=newInnerRadius; +// DCW: swapping is fine, but what about the stereo angles??? + G4Exception( "Error in G4Hype::G4Hype outer > inner radius" ); + } + else + { + G4Exception("Error in G4Hype::G4Hype - invalid radii"); + } + + + innerRadius2=innerRadius*innerRadius; + outerRadius2=outerRadius*outerRadius; + + SetInnerStereo( newInnerStereo ); + SetOuterStereo( newOuterStereo ); +} + +// Destructor +G4Hype::~G4Hype() +{;} + +// Dispatch to parameterisation for replication mechanism dimension +// computation & modification. + void G4Hype::ComputeDimensions(G4VPVParameterisation* p, + const G4int n, + const G4VPhysicalVolume* pRep) +{ + p->ComputeDimensions(*this,n,pRep); +} + + +// +// CalculateExtent +// +G4bool G4Hype::CalculateExtent( const EAxis axis, + const G4VoxelLimits &voxelLimit, + const G4AffineTransform &transform, + G4double &min, G4double &max ) const +{ + G4SolidExtentList extentList( axis, voxelLimit ); + + // + // Choose phi size of our segment(s) based on constants as + // defined in meshdefs.hh + // + G4int numPhi = kMaxMeshSections; + G4double sigPhi = 2*M_PI/numPhi; + G4double rFudge = 1.0/cos(0.5*sigPhi); + + // + // We work around in phi building polygons along the way. + // As a reasonable compromise between accuracy and + // complexity (=cpu time), the following facets are chosen: + // + // 1. If outerRadius/endOuterRadius > 0.95, approximate + // the outer surface as a cylinder, and use one + // rectangular polygon (0-1) to build its mesh. + // + // Otherwise, use two trapazoidal polygons that + // meet at z = 0 (0-4-1) + // + // 2. If there is no inner surface, then use one + // polygon for each entire endcap. (0) and (1) + // + // Otherwise, use a trapazoidal polygon for each + // phi segment of each endcap. (0-2) and (1-3) + // + // 3. For the inner surface, if innerRadius/endInnerRadius > 0.95, + // approximate the inner surface as a cylinder of + // radius innerRadius and use one rectangular polygon + // to build each phi segment of its mesh. (2-3) + // + // Otherwise, use one rectangular polygon centered + // at z = 0 (5-6) and two connecting trapazoidal polygons + // for each phi segment (2-5) and (3-6). + // + + G4bool splitOuter = (outerRadius/endOuterRadius < 0.95); + G4bool splitInner; + if (InnerSurfaceExists()) { + splitInner = (innerRadius/endInnerRadius < 0.95); + } + + // + // Vertex assignments (v and w arrays) + // [0] and [1] are mandatory + // the rest are optional + // + // + - + // [0]------[4]------[1] <--- outer radius + // | | + // | | + // [2]---[5]---[6]---[3] <--- inner radius + // + + + G4ClippablePolygon endPoly1, endPoly2; + + G4double phi = 0, + cosPhi = cos(phi), + sinPhi = sin(phi); + G4ThreeVector v0( rFudge*endOuterRadius*cosPhi, rFudge*endOuterRadius*sinPhi, +halfLenZ ), + v1( rFudge*endOuterRadius*cosPhi, rFudge*endOuterRadius*sinPhi, -halfLenZ ), + v2, v3, v4, v5, v6, + w0, w1, w2, w3, w4, w5, w6; + transform.ApplyPointTransform( v0 ); + transform.ApplyPointTransform( v1 ); + + G4double zInnerSplit; + if (InnerSurfaceExists()) { + if (splitInner) { + v2 = transform.TransformPoint( + G4ThreeVector( endInnerRadius*cosPhi, endInnerRadius*sinPhi, +halfLenZ ) ); + v3 = transform.TransformPoint( + G4ThreeVector( endInnerRadius*cosPhi, endInnerRadius*sinPhi, -halfLenZ ) ); + + // + // Find intersection of line normal to inner + // surface at z = halfLenZ and line r=innerRadius + // + G4double rn = halfLenZ*tanInnerStereo2; + G4double zn = endInnerRadius; + + zInnerSplit = halfLenZ + (innerRadius - endInnerRadius)*zn/rn; + + // + // Build associated vertices + // + v5 = transform.TransformPoint( + G4ThreeVector( innerRadius*cosPhi, innerRadius*sinPhi, +zInnerSplit ) ); + v6 = transform.TransformPoint( + G4ThreeVector( innerRadius*cosPhi, innerRadius*sinPhi, -zInnerSplit ) ); + } + else { + v2 = transform.TransformPoint( + G4ThreeVector( innerRadius*cosPhi, innerRadius*sinPhi, +halfLenZ ) ); + v3 = transform.TransformPoint( + G4ThreeVector( innerRadius*cosPhi, innerRadius*sinPhi, -halfLenZ ) ); + } + } + + if (splitOuter) { + v4 = transform.TransformPoint( + G4ThreeVector( rFudge*outerRadius*cosPhi, rFudge*outerRadius*sinPhi, 0 ) ); + } + + // + // Loop over phi segments + // + do { + phi += sigPhi; + if (numPhi == 1) phi = 0; // Try to avoid roundoff + cosPhi = cos(phi), + sinPhi = sin(phi); + + G4double r(rFudge*endOuterRadius); + w0 = G4ThreeVector( r*cosPhi, r*sinPhi, +halfLenZ ); + w1 = G4ThreeVector( r*cosPhi, r*sinPhi, -halfLenZ ); + transform.ApplyPointTransform( w0 ); + transform.ApplyPointTransform( w1 ); + + // + // Outer hyperbolic surface + // + if (splitOuter) { + r = rFudge*outerRadius; + w4 = G4ThreeVector( r*cosPhi, r*sinPhi, 0 ); + transform.ApplyPointTransform( w4 ); + + AddPolyToExtent( v0, v4, w4, w0, voxelLimit, axis, extentList ); + AddPolyToExtent( v4, v1, w1, w4, voxelLimit, axis, extentList ); + } + else { + AddPolyToExtent( v0, v1, w1, w0, voxelLimit, axis, extentList ); + } + + if (InnerSurfaceExists()) { + + // + // Inner hyperbolic surface + // + if (splitInner) { + w2 = G4ThreeVector( endInnerRadius*cosPhi, endInnerRadius*sinPhi, +halfLenZ ); + w3 = G4ThreeVector( endInnerRadius*cosPhi, endInnerRadius*sinPhi, -halfLenZ ); + transform.ApplyPointTransform( w2 ); + transform.ApplyPointTransform( w3 ); + + w5 = G4ThreeVector( innerRadius*cosPhi, innerRadius*sinPhi, +zInnerSplit ); + w6 = G4ThreeVector( innerRadius*cosPhi, innerRadius*sinPhi, -zInnerSplit ); + transform.ApplyPointTransform( w5 ); + transform.ApplyPointTransform( w6 ); + AddPolyToExtent( v3, v6, w6, w3, voxelLimit, axis, extentList ); + AddPolyToExtent( v6, v5, w5, w6, voxelLimit, axis, extentList ); + AddPolyToExtent( v5, v2, w2, w5, voxelLimit, axis, extentList ); + } + else { + w2 = G4ThreeVector( innerRadius*cosPhi, innerRadius*sinPhi, +halfLenZ ); + w3 = G4ThreeVector( innerRadius*cosPhi, innerRadius*sinPhi, -halfLenZ ); + transform.ApplyPointTransform( w2 ); + transform.ApplyPointTransform( w3 ); + + AddPolyToExtent( v3, v2, w2, w3, voxelLimit, axis, extentList ); + } + + // + // Endplate segments + // + AddPolyToExtent( v1, v3, w3, w1, voxelLimit, axis, extentList ); + AddPolyToExtent( v2, v0, w0, w2, voxelLimit, axis, extentList ); + } + else { + // + // Continue building endplate polygons + // + endPoly1.AddVertexInOrder( v0 ); + endPoly2.AddVertexInOrder( v1 ); + } + + // + // Next phi segments + // + v0 = w0; + v1 = w1; + if (InnerSurfaceExists()) { + v2 = w2; + v3 = w3; + if (splitInner) { + v5 = w5; + v6 = w6; + } + } + if (splitOuter) v4 = w4; + + } while( --numPhi > 0 ); + + + // + // Don't forget about the endplate polygons, if + // we use them + // + if (!InnerSurfaceExists()) { + if (endPoly1.PartialClip( voxelLimit, axis )) { + static const G4ThreeVector normal(0,0,+1); + endPoly1.SetNormal( transform.TransformAxis(normal) ); + extentList.AddSurface( endPoly1 ); + } + + if (endPoly2.PartialClip( voxelLimit, axis )) { + static const G4ThreeVector normal(0,0,-1); + endPoly2.SetNormal( transform.TransformAxis(normal) ); + extentList.AddSurface( endPoly2 ); + } + } + + // + // Return min/max value + // + return extentList.GetExtent( min, max ); +} + + +// +// AddPolyToExtent (static) +// +// Utility function for CalculateExtent +// +void G4Hype::AddPolyToExtent( const G4ThreeVector &v0, + const G4ThreeVector &v1, + const G4ThreeVector &w1, + const G4ThreeVector &w0, + const G4VoxelLimits &voxelLimit, + const EAxis axis, + G4SolidExtentList &extentList ) +{ + G4ClippablePolygon phiPoly; + + phiPoly.AddVertexInOrder( v0 ); + phiPoly.AddVertexInOrder( v1 ); + phiPoly.AddVertexInOrder( w1 ); + phiPoly.AddVertexInOrder( w0 ); + + if (phiPoly.PartialClip( voxelLimit, axis )) { + phiPoly.SetNormal( (v1-v0).cross(w0-v0).unit() ); + extentList.AddSurface( phiPoly ); + } +} + + +// +// Decides whether point is inside,outside or on the surface +// +EInside G4Hype::Inside(const G4ThreeVector& p) const +{ + static const G4double halfTol = 0.5*kCarTolerance; + + // + // Check z extents: are we outside? + // + const G4double absZ(fabs(p.z())); + if (absZ > halfLenZ + halfTol) return kOutside; + + // + // Check outer radius + // + const G4double oRad2(HypeOuterRadius2(absZ)); + const G4double xR2( p.x()*p.x()+p.y()*p.y() ); + + if (xR2 > oRad2 + kCarTolerance*endOuterRadius) return kOutside; + + if (xR2 > oRad2 - kCarTolerance*endOuterRadius) return kSurface; + + if (InnerSurfaceExists()) { + // + // Check inner radius + // + const G4double iRad2(HypeInnerRadius2(absZ)); + + if (xR2 < iRad2 - kCarTolerance*endInnerRadius) return kOutside; + + if (xR2 < iRad2 + kCarTolerance*endInnerRadius) return kSurface; + } + + // + // We are inside in radius, now check endplate surface + // + if (absZ > halfLenZ - halfTol) return kSurface; + + return kInside; +} + + + +// +// return the normal unit vector to the Hyperbolical Surface at a point +// p on (or nearly on) the surface +// +G4ThreeVector G4Hype::SurfaceNormal( const G4ThreeVector& p) const +{ + // + // Which of the three or four surfaces are we closest to? + // + const G4double absZ(fabs(p.z())); + const G4double distZ(absZ - halfLenZ); + const G4double dist2Z(distZ*distZ); + + const G4double xR2( p.x()*p.x()+p.y()*p.y() ); + const G4double dist2Outer( fabs(xR2 - HypeOuterRadius2(absZ)) ); + + if (InnerSurfaceExists()) { + // + // Has inner surface: is this closest? + // + const G4double dist2Inner( fabs(xR2 - HypeInnerRadius2(absZ)) ); + if (dist2Inner < dist2Z && dist2Inner < dist2Outer) + return G4ThreeVector( -p.x(), -p.y(), p.z()*tanInnerStereo2 ).unit(); + } + + // + // Do the "endcaps" win? + // + if (dist2Z < dist2Outer) + return G4ThreeVector( 0.0, 0.0, p.z() < 0 ? -1.0 : 1.0 ); + + + // + // Outer surface wins + // + return G4ThreeVector( p.x(), p.y(), -p.z()*tanOuterStereo2 ).unit(); +} + + +// +// Calculate distance to shape from outside, along normalised vector +// - return kInfinity if no intersection, or intersection distance <= tolerance +// +// Calculating the intersection of a line with the surfaces +// is fairly straight forward. The difficult problem is dealing +// with the intersections of the surfaces in a consistent manner, +// and this accounts for the complicated logic. +// +G4double G4Hype::DistanceToIn(const G4ThreeVector& p, + const G4ThreeVector& v ) const +{ + static const G4double halfTol = 0.5*kCarTolerance; + + // + // Quick test. Beware! This assumes v is a unit vector! + // + if (fabs(p.x()*v.y() - p.y()*v.x()) > endOuterRadius+kCarTolerance) return kInfinity; + + // + // Take advantage of z symmetry, and reflect throught the + // z=0 plane so that pz is always positive + // + G4double pz(p.z()), vz(v.z()); + if (pz < 0) { + pz = -pz; + vz = -vz; + } + + // + // We must be very careful if we don't want to + // create subtle leaks at the edges where the + // hyperbolic surfaces connect to the endplate. + // The only reliable way to do so is to make sure + // that the decision as to when a track passes + // over the edge of one surface is exactly the + // same decision as to when a track passes into the + // other surface. By "exact", we don't mean algebraicly + // exact, but we mean the same machine instructions + // should be used. + // + G4bool couldMissOuter(true), + couldMissInner(true), + cantMissInnerCylinder(false); + + // + // Check endplate intersection + // + G4double sigz = pz-halfLenZ; + + if (sigz > -halfTol) { // equivalent to: if (pz > halfLenZ - halfTol) + // + // We start in front of the endplate (within roundoff) + // Correct direction to intersect endplate? + // + if (vz >= 0) { + // + // Nope. As long as we are far enough away, we + // can't intersect anything + // + if (sigz > 0) return kInfinity; + + // + // Otherwise, we may still hit a hyperbolic surface + // if the point is on the hyperbolic surface (within tolerance) + // + G4double pr2 = p.x()*p.x() + p.y()*p.y(); + if (pr2 > endOuterRadius2 + kCarTolerance*endOuterRadius) return kInfinity; + + if (InnerSurfaceExists()) { + if (pr2 < endInnerRadius2 - kCarTolerance*endInnerRadius) return kInfinity; + if (pr2 < endOuterRadius2 - kCarTolerance*endOuterRadius && + pr2 > endInnerRadius2 + kCarTolerance*endInnerRadius ) return kInfinity; + } + else { + if (pr2 < endOuterRadius2 - kCarTolerance*endOuterRadius) return kInfinity; + } + } + else { + // + // Where do we intersect at z = halfLenZ? + // + G4double s = -sigz/vz; + G4double xi = p.x() + s*v.x(), + yi = p.y() + s*v.y(); + + // + // Is this on the endplate? If so, return s, unless + // we are on the tolerant surface, in which case return 0 + // + G4double pr2 = xi*xi + yi*yi; + if (pr2 <= endOuterRadius2) { + if (InnerSurfaceExists()) { + if (pr2 >= endInnerRadius2) return (sigz < halfTol) ? 0 : s; + // + // This test is sufficient to ensure that the + // trajectory cannot miss the inner hyperbolic surface + // for z > 0, if the normal is correct. + // + G4double dot1 = (xi*v.x() + yi*v.y())*endInnerRadius/sqrt(pr2); + couldMissInner = (dot1 - halfLenZ*tanInnerStereo2*vz <= 0); + + if (pr2 > endInnerRadius2*(1 - 2*DBL_EPSILON) ) { + // + // There is a potential leak if the inner + // surface is a cylinder + // + if (innerStereo < DBL_MIN && + (fabs(v.x()) > DBL_MIN || fabs(v.y()) > DBL_MIN)) + cantMissInnerCylinder = true; + } + } + else { + return (sigz < halfTol) ? 0 : s; + } + } + else { + G4double dotR( xi*v.x() + yi*v.y() ); + if (dotR >= 0) { + // + // Otherwise, if we are traveling outwards, we know + // we must miss the hyperbolic surfaces also, so + // we need not bother checking + // + return kInfinity; + } + else { + // + // This test is sufficient to ensure that the + // trajectory cannot miss the outer hyperbolic surface + // for z > 0, if the normal is correct. + // + G4double dot1 = dotR*endOuterRadius/sqrt(pr2); + couldMissOuter = (dot1 - halfLenZ*tanOuterStereo2*vz>= 0); + } + } + } + } + + // + // Check intersection with outer hyperbolic surface, save + // distance to valid intersection into "best". + // + G4double best = kInfinity; + + G4double s[2]; + G4int n = IntersectHype( p, v, outerRadius2, tanOuterStereo2, s ); + + if (n > 0) { + // + // Potential intersection: is p on this surface? + // + if (pz < halfLenZ+halfTol) { + G4double dr2 = p.x()*p.x() + p.y()*p.y() - HypeOuterRadius2(pz); + if (fabs(dr2) < kCarTolerance*endOuterRadius) { + // + // Sure, but make sure we're traveling inwards at + // this point + // + if (p.x()*v.x() + p.y()*v.y() - pz*tanOuterStereo2*vz < 0) return 0; + } + } + + // + // We are now certain that p is not on the tolerant surface. + // Accept only position distance s + // + G4int i; + for( i=0; i= 0) { + // + // Check to make sure this intersection point is + // on the surface, but only do so if we haven't + // checked the endplate intersection already + // + G4double zi = pz + s[i]*vz; + + if (zi < -halfLenZ) continue; + if (zi > +halfLenZ && couldMissOuter) continue; + + // + // Check normal + // + G4double xi = p.x() + s[i]*v.x(), + yi = p.y() + s[i]*v.y(); + + if (xi*v.x() + yi*v.y() - zi*tanOuterStereo2*vz > 0) continue; + + best = s[i]; + break; + } + } + } + + if (!InnerSurfaceExists()) return best; + + // + // Check intersection with inner hyperbolic surface + // + n = IntersectHype( p, v, innerRadius2, tanInnerStereo2, s ); + if (n == 0) { + if (cantMissInnerCylinder) return (sigz < halfTol) ? 0 : -sigz/vz; + + return best; + } + + // + // P on this surface? + // + if (pz < halfLenZ+halfTol) { + G4double dr2 = p.x()*p.x() + p.y()*p.y() - HypeInnerRadius2(pz); + if (fabs(dr2) < kCarTolerance*endInnerRadius) { + // + // Sure, but make sure we're traveling outwards at + // this point + // + if (p.x()*v.x() + p.y()*v.y() - pz*tanInnerStereo2*vz > 0) return 0; + } + } + + // + // No, so only positive s is valid. Search for a valid intersection + // that is closer than the outer intersection (if it exists) + // + G4int i; + for( i=0; i best) break; + if (s[i] >= 0) { + // + // Check to make sure this intersection point is + // on the surface, but only do so if we haven't + // checked the endplate intersection already + // + G4double zi = pz + s[i]*vz; + + if (zi < -halfLenZ) continue; + if (zi > +halfLenZ && couldMissInner) continue; + + + // + // Check normal + // + G4double xi = p.x() + s[i]*v.x(), + yi = p.y() + s[i]*v.y(); + + if (xi*v.x() + yi*v.y() - zi*tanOuterStereo2*vz < 0) continue; + + best = s[i]; + break; + } + } + + // + // Done + // + return best; +} + + +// +// Calculate distance to shape from outside, along perpendicular direction +// (if one exists). May be an underestimate. +// +// There are five (r,z) regions: +// 1. a point that is beyond the endcap but within the +// endcap radii +// 2. a point with r > outer endcap radius and with +// a z position that is beyond the cone formed by the +// normal of the outer hyperbolic surface at the +// edge at which it meets the endcap. +// 3. a point that is outside the outer surface and not in (1 or 2) +// 4. a point that is inside the inner surface and not in (5) +// 5. a point with radius < inner endcap radius and +// with a z position beyond the cone formed by the +// normal of the inner hyperbolic surface at the +// edge at which it meets the endcap. +// (regions 4 and 5 only exist if there is an inner surface) +// +G4double G4Hype::DistanceToIn(const G4ThreeVector& p) const +{ + static const G4double halfTol(0.5*kCarTolerance); + + G4double absZ(fabs(p.z())); + + // + // Check region + // + G4double r2 = p.x()*p.x() + p.y()*p.y(); + G4double r = sqrt(r2); + + G4double sigz = absZ - halfLenZ; + + if (r < endOuterRadius) { + if (sigz > -halfTol) { + if (InnerSurfaceExists()) { + if (r > endInnerRadius) + return sigz < halfTol ? 0 : sigz; // Region 1 + + G4double dr = endInnerRadius - r; + if (sigz > dr*tanInnerStereo2) { + // + // In region 5 + // + G4double answer = sqrt( dr*dr + sigz*sigz ); + return answer < halfTol ? 0 : answer; + } + } + else { + // + // In region 1 (no inner surface) + // + return sigz < halfTol ? 0 : sigz; + } + } + } + else { + G4double dr = r - endOuterRadius; + if (sigz > -dr*tanOuterStereo2) { + // + // In region 2 + // + G4double answer = sqrt( dr*dr + sigz*sigz ); + return answer < halfTol ? 0 : answer; + } + } + + if (InnerSurfaceExists()) { + if (r2 < HypeInnerRadius2(absZ)+kCarTolerance*endInnerRadius) { + // + // In region 4 + // + G4double answer = ApproxDistInside( r, absZ, innerRadius, tanInnerStereo2 ); + return answer < halfTol ? 0 : answer; + } + } + + // + // We are left by elimination with region 3 + // + G4double answer = ApproxDistOutside( r, absZ, outerRadius, tanOuterStereo ); + return answer < halfTol ? 0 : answer; +} + + +// +// Calculate distance to surface of shape from `inside', allowing for tolerance +// +// The situation here is much simplier than DistanceToIn(p,v). For +// example, there is no need to even check whether an intersection +// point is inside the boundary of a surface, as long as all surfaces +// are checked and the smallest distance is used. +// +G4double G4Hype::DistanceToOut( const G4ThreeVector& p,const G4ThreeVector& v, + const G4bool calcNorm, + G4bool *validNorm, G4ThreeVector *norm ) const +{ + static const G4double halfTol = 0.5*kCarTolerance; + + + static const G4ThreeVector normEnd1(0.0,0.0,+1.0); + static const G4ThreeVector normEnd2(0.0,0.0,-1.0); + + // + // Keep track of closest surface + // + G4double sBest; // distance to + const G4ThreeVector *nBest; // normal vector + G4bool vBest; // whether "valid" + + // + // Check endplate, taking advantage of symmetry. + // Note that the endcap is the only surface which + // has a "valid" normal, i.e. is a surface of which + // the entire solid is behind. + // + G4double pz(p.z()), vz(v.z()); + if (vz < 0) { + pz = -pz; + vz = -vz; + nBest = &normEnd2; + } + else + nBest = &normEnd1; + + // + // Possible intercept. Are we on the surface? + // + if (pz > halfLenZ-halfTol) { + if (calcNorm) { *norm = *nBest; *validNorm = true; } + return 0; + } + + // + // Nope. Get distance. + // + sBest = (halfLenZ - pz)/vz; + vBest = true; + + // + // Check outer surface + // + G4double r2 = p.x()*p.x() + p.y()*p.y(); + + G4double s[2]; + G4int n = IntersectHype( p, v, outerRadius2, tanOuterStereo2, s ); + + G4ThreeVector norm1, norm2; + + if (n > 0) { + // + // We hit somewhere. Are we on the surface? + // + G4double dr2 = r2 - HypeOuterRadius2(pz); + if (fabs(dr2) < endOuterRadius*kCarTolerance) { + G4ThreeVector normHere( p.x(), p.y(), -p.z()*tanOuterStereo2 ); + // + // Sure. But are we going the right way? + // + if (normHere.dot(v) > 0) { + if (calcNorm) { *norm = normHere.unit(); *validNorm = false; } + return 0; + } + } + + // + // Nope. Check closest positive intercept. + // + G4int i; + for( i=0; i sBest) break; + if (s[i] > 0) { + // + // Make sure normal is correct (that this + // solution is an outgoing solution) + // + G4ThreeVector pi(p+s[i]*v); + norm1 = G4ThreeVector( pi.x(), pi.y(), -pi.z()*tanOuterStereo2 ); + if (norm1.dot(v) > 0) { + sBest = s[i]; + nBest = &norm1; + vBest = false; + break; + } + } + } + } + + if (InnerSurfaceExists()) { + // + // Check inner surface + // + n = IntersectHype( p, v, innerRadius2, tanInnerStereo2, s ); + if (n > 0) { + // + // On surface? + // + G4double dr2 = r2 - HypeInnerRadius2(pz); + if (fabs(dr2) < endInnerRadius*kCarTolerance) { + G4ThreeVector normHere( -p.x(), -p.y(), p.z()*tanInnerStereo2 ); + if (normHere.dot(v) > 0) { + if (calcNorm) {*norm = normHere.unit(); *validNorm = false;} + return 0; + } + } + + // + // Check closest positive + // + G4int i; + for( i=0; i sBest) break; + if (s[i] > 0) { + G4ThreeVector pi(p+s[i]*v); + norm2 = G4ThreeVector( -pi.x(), -pi.y(), pi.z()*tanInnerStereo2 ); + if (norm2.dot(v) > 0) { + sBest = s[i]; + nBest = &norm2; + vBest = false; + break; + } + } + } + } + } + + // + // Done! + // + if (calcNorm) { + *validNorm = vBest; + + if (nBest == &norm1 || nBest == &norm2) + *norm = nBest->unit(); + else + *norm = *nBest; + } + + return sBest; +} + + + +// +// Calculate distance (<=actual) to closest surface of shape from inside +// +// May be an underestimate +// +G4double G4Hype::DistanceToOut(const G4ThreeVector& p) const +{ + // + // Try each surface and remember the closest + // + G4double absZ(fabs(p.z())); + G4double r(p.perp()); + + G4double sBest = halfLenZ - absZ; + + G4double tryOuter = ApproxDistInside( r, absZ, outerRadius, tanOuterStereo2 ); + if (tryOuter < sBest) sBest = tryOuter; + + if (InnerSurfaceExists()) { + G4double tryInner = ApproxDistOutside( r, absZ, innerRadius, tanInnerStereo ); + if (tryInner < sBest) sBest = tryInner; + } + + return sBest < 0.5*kCarTolerance ? 0 : sBest; +} + + + + +void G4Hype::DescribeYourselfTo (G4VGraphicsScene& scene) const +{ + scene.AddThis (*this); +} + +G4VisExtent G4Hype::GetExtent() const +{ + // Define the sides of the box into which the G4Tubs instance would fit. + return G4VisExtent( -endOuterRadius, endOuterRadius, + -endOuterRadius, endOuterRadius, + -halfLenZ, halfLenZ ); +} + +G4Polyhedron* G4Hype::CreatePolyhedron () const +{ + // return new G4PolyhedronHype (fRMin, fRMax, fDz, fSPhi, fDPhi); + return 0; +} + +G4NURBS* G4Hype::CreateNURBS () const +{ + return new G4NURBStube(endInnerRadius, endOuterRadius, halfLenZ); // Tube for now!!! +} + + + +// +// IntersectHype (static) +// +// Decide if and where a line intersects with a hyperbolic +// surface (of infinite extent) +// +// Arguments: +// p - (in) Point on trajectory +// v - (in) Vector along trajectory +// r2 - (in) Square of radius at z = 0 +// tan2phi - (in) tan(phi)**2 +// s - (out) Up to two points of intersection, where the +// intersection point is p + s*v, and if there are +// two intersections, s[0] < s[1]. May be negative. +// Returns: +// The number of intersections. If 0, the trajectory misses. +// +// +// Equation of a line: +// +// x = x0 + s*tx y = y0 + s*ty z = z0 + s*tz +// +// Equation of a hyperbolic surface: +// +// x**2 + y**2 = r**2 + (z*tanPhi)**2 +// +// Solution is quadratic: +// +// a*s**2 + b*s + c = 0 +// +// where: +// +// a = tx**2 + ty**2 - (tz*tanPhi)**2 +// +// b = 2*( x0*tx + y0*ty - z0*tz*tanPhi**2 ) +// +// c = x0**2 + y0**2 - r**2 - (z0*tanPhi)**2 +// +// +G4int G4Hype::IntersectHype( const G4ThreeVector &p, const G4ThreeVector &v, + const G4double r2, const G4double tan2Phi, G4double s[2] ) +{ + G4double x0 = p.x(), y0 = p.y(), z0 = p.z(); + G4double tx = v.x(), ty = v.y(), tz = v.z(); + + G4double a = tx*tx + ty*ty - tz*tz*tan2Phi; + G4double b = 2*( x0*tx + y0*ty - z0*tz*tan2Phi ); + G4double c = x0*x0 + y0*y0 - r2 - z0*z0*tan2Phi; + + if (fabs(a) < DBL_MIN) { + // + // The trajectory is parallel to the asympotic limit of + // the surface: single solution + // + if (fabs(b) < DBL_MIN) return 0; // Unless we travel through exact center + + s[0] = c/b; + return 1; + } + + + G4double radical = b*b - 4*a*c; + + if (radical < -DBL_MIN) return 0; // No solution + + if (radical < DBL_MIN) { + // + // Grazes surface + // + s[0] = -b/a/2.0; + return 1; + } + + radical = sqrt(radical); + + G4double q = -0.5*( b + (b < 0 ? -radical : +radical) ); + G4double sa = q/a; + G4double sb = c/q; + if (sa < sb) { s[0] = sa; s[1] = sb; } else { s[0] = sb; s[1] = sa; } + return 2; +} + + +// +// ApproxDistOutside (static) +// +// Find the approximate distance of a point outside +// (greater radius) of a hyperbolic surface. The distance +// must be an underestimate. It will also be nice (although +// not necesary) that the estimate is always finite no +// matter how close the point is. +// +// Our hyperbola approaches the asymptotic limit at z = +/- infinity +// to the lines r = z*tanPhi. We call these lines the +// asymptotic limit line. +// +// We need the distance of the 2d point p(r,z) to the +// hyperbola r**2 = r0**2 + (z*tanPhi)**2. Find two +// points that bracket the true normal and use the +// distance to the line that connects these two points. +// The first such point is z=p.z. The second point is +// the z position on the asymptotic limit line that +// contains the normal on the line through the point p. +// +G4double G4Hype::ApproxDistOutside( const G4double pr, const G4double pz, + const G4double r0, const G4double tanPhi ) +{ + if (tanPhi < DBL_MIN) return pr-r0; + + G4double tan2Phi = tanPhi*tanPhi; + + // + // First point + // + G4double z1 = pz; + G4double r1 = sqrt( r0*r0 + z1*z1*tan2Phi ); + + // + // Second point + // + G4double z2 = (pr*tanPhi + pz)/(1 + tan2Phi); + G4double r2 = sqrt( r0*r0 + z2*z2*tan2Phi ); + + // + // Line between them + // + G4double dr = r2-r1; + G4double dz = z2-z1; + + G4double len = sqrt(dr*dr + dz*dz); + if (len < DBL_MIN) { + // + // The two points are the same?? I guess we + // must have really bracketed the normal + // + dr = pr-r1; + dz = pz-z1; + return sqrt( dr*dr + dz*dz ); + } + + // + // Distance + // + return fabs((pr-r1)*dz - (pz-z1)*dr)/len; +} + +// +// ApproxDistInside (static) +// +// Find the approximate distance of a point inside +// of a hyperbolic surface. The distance +// must be an underestimate. It will also be nice (although +// not necesary) that the estimate is always finite no +// matter how close the point is. +// +// This estimate uses the distance to a line tangent to +// the hyperbolic function. The point of tangent is chosen +// by the z position point +// +// Assumes pr and pz are positive +// +G4double G4Hype::ApproxDistInside( const G4double pr, const G4double pz, + const G4double r0, const G4double tan2Phi ) +{ + if (tan2Phi < DBL_MIN) return r0 - pr; + + // + // Corresponding position and normal on hyperbolic + // + G4double rh = sqrt( r0*r0 + pz*pz*tan2Phi ); + + G4double dr = -rh; + G4double dz = pz*tan2Phi; + G4double len = sqrt(dr*dr + dz*dz); + + // + // Answer + // + return fabs((pr-rh)*dr)/len; +} diff --git a/source/geometry/solids/CSG/src/G4IntersectingCone.cc b/source/geometry/solids/specific/src/G4IntersectingCone.cc similarity index 96% rename from source/geometry/solids/CSG/src/G4IntersectingCone.cc rename to source/geometry/solids/specific/src/G4IntersectingCone.cc index f7d7cfeb87..7bf6add587 100644 --- a/source/geometry/solids/CSG/src/G4IntersectingCone.cc +++ b/source/geometry/solids/specific/src/G4IntersectingCone.cc @@ -1,10 +1,3 @@ -// -// G4IntersectingCone.cc -// -// Implementation of a utility class which calculates the intersection -// of an arbitrary line with a fixed cone -// -// ---------------------------------------------------------- // This code implementation is the intellectual property of // the GEANT4 collaboration. // @@ -12,6 +5,20 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // +// $Id: G4IntersectingCone.cc,v 1.1 2000/04/07 11:01:12 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// -------------------------------------------------------------------- +// GEANT 4 class source file +// +// +// G4IntersectingCone.cc +// +// Implementation of a utility class which calculates the intersection +// of an arbitrary line with a fixed cone +// -------------------------------------------------------------------- + #include "G4IntersectingCone.hh" // diff --git a/source/geometry/solids/CSG/src/G4PolyPhiFace.cc b/source/geometry/solids/specific/src/G4PolyPhiFace.cc similarity index 98% rename from source/geometry/solids/CSG/src/G4PolyPhiFace.cc rename to source/geometry/solids/specific/src/G4PolyPhiFace.cc index a1bf10b1b8..3a5ee90e46 100644 --- a/source/geometry/solids/CSG/src/G4PolyPhiFace.cc +++ b/source/geometry/solids/specific/src/G4PolyPhiFace.cc @@ -1,10 +1,3 @@ -// -// G4PolyPhiFace.cc -// -// Implementation of the face that bounds a polycone or polyhedra at -// its phi opening. -// -// ---------------------------------------------------------- // This code implementation is the intellectual property of // the GEANT4 collaboration. // @@ -12,6 +5,20 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // +// $Id: G4PolyPhiFace.cc,v 1.1 2000/04/07 11:01:31 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// -------------------------------------------------------------------- +// GEANT 4 class source file +// +// +// G4PolyPhiFace.cc +// +// Implementation of the face that bounds a polycone or polyhedra at +// its phi opening. +// +// -------------------------------------------------------------------- #include "G4PolyPhiFace.hh" #include "G4ClippablePolygon.hh" diff --git a/source/geometry/solids/CSG/src/G4Polycone.cc b/source/geometry/solids/specific/src/G4Polycone.cc similarity index 96% rename from source/geometry/solids/CSG/src/G4Polycone.cc rename to source/geometry/solids/specific/src/G4Polycone.cc index 548ad366e2..6e0814263a 100644 --- a/source/geometry/solids/CSG/src/G4Polycone.cc +++ b/source/geometry/solids/specific/src/G4Polycone.cc @@ -1,9 +1,3 @@ -// -// G4Polycone.cc -// -// Implementation of a CSG polycone -// -// ---------------------------------------------------------- // This code implementation is the intellectual property of // the GEANT4 collaboration. // @@ -11,6 +5,20 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // +// $Id: G4Polycone.cc,v 1.3 2000/06/27 16:20:11 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// -------------------------------------------------------------------- +// GEANT 4 class source file +// +// +// G4Polycone.cc +// +// Implementation of a CSG polycone +// +// -------------------------------------------------------------------- + #include "G4Polycone.hh" #include "G4PolyconeSide.hh" #include "G4PolyPhiFace.hh" @@ -226,6 +234,7 @@ G4Polycone::~G4Polycone() delete [] corners; if (original_parameters) delete original_parameters; + if (enclosingCylinder) delete enclosingCylinder; } @@ -391,7 +400,7 @@ G4Polycone::G4PolyconeHistorical::~G4PolyconeHistorical() delete [] Rmax; } -G4Polycone::G4PolyconeHistorical::G4PolyconeHistorical( const G4Polycone::G4PolyconeHistorical &source ) +G4Polycone::G4PolyconeHistorical::G4PolyconeHistorical( const G4PolyconeHistorical &source ) { Start_angle = source.Start_angle; Opening_angle = source.Opening_angle; diff --git a/source/geometry/solids/CSG/src/G4PolyconeSide.cc b/source/geometry/solids/specific/src/G4PolyconeSide.cc similarity index 98% rename from source/geometry/solids/CSG/src/G4PolyconeSide.cc rename to source/geometry/solids/specific/src/G4PolyconeSide.cc index 9dd4fe5784..e6eaa8531c 100644 --- a/source/geometry/solids/CSG/src/G4PolyconeSide.cc +++ b/source/geometry/solids/specific/src/G4PolyconeSide.cc @@ -1,9 +1,3 @@ -// -// G4PolyconeSide.cc -// -// Implemenation of the face representing one conical side of a polycone -// -// ---------------------------------------------------------- // This code implementation is the intellectual property of // the GEANT4 collaboration. // @@ -11,6 +5,19 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // +// $Id: G4PolyconeSide.cc,v 1.1 2000/04/07 11:02:07 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// -------------------------------------------------------------------- +// GEANT 4 class source file +// +// +// G4PolyconeSide.cc +// +// Implementation of the face representing one conical side of a polycone +// +// -------------------------------------------------------------------- #include "G4PolyconeSide.hh" #include "G4IntersectingCone.hh" diff --git a/source/geometry/solids/CSG/src/G4Polyhedra.cc b/source/geometry/solids/specific/src/G4Polyhedra.cc similarity index 97% rename from source/geometry/solids/CSG/src/G4Polyhedra.cc rename to source/geometry/solids/specific/src/G4Polyhedra.cc index 3e297c65ac..00fe837ac1 100644 --- a/source/geometry/solids/CSG/src/G4Polyhedra.cc +++ b/source/geometry/solids/specific/src/G4Polyhedra.cc @@ -1,3 +1,17 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4Polyhedra.cc,v 1.1 2000/04/07 11:02:25 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// -------------------------------------------------------------------- +// GEANT 4 class source file +// // // G4Polyhedra.cc // @@ -20,14 +34,8 @@ // Both these classes are implemented outside this file because they are // shared with G4Polycone. // -// ---------------------------------------------------------- -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By 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 "G4Polyhedra.hh" #include "G4PolyhedraSide.hh" #include "G4PolyPhiFace.hh" diff --git a/source/geometry/solids/CSG/src/G4PolyhedraSide.cc b/source/geometry/solids/specific/src/G4PolyhedraSide.cc similarity index 98% rename from source/geometry/solids/CSG/src/G4PolyhedraSide.cc rename to source/geometry/solids/specific/src/G4PolyhedraSide.cc index 886b2111e7..e2a8557e61 100644 --- a/source/geometry/solids/CSG/src/G4PolyhedraSide.cc +++ b/source/geometry/solids/specific/src/G4PolyhedraSide.cc @@ -1,9 +1,3 @@ -// -// G4PolyhedraSide.cc -// -// Implemenation of the face representing one segmented side of a Polyhedra -// -// ---------------------------------------------------------- // This code implementation is the intellectual property of // the GEANT4 collaboration. // @@ -11,6 +5,19 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // +// $Id: G4PolyhedraSide.cc,v 1.1 2000/04/07 11:02:42 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// -------------------------------------------------------------------- +// GEANT 4 class source file +// +// +// G4PolyhedraSide.cc +// +// Implemenation of the face representing one segmented side of a Polyhedra +// +// -------------------------------------------------------------------- #include "G4PolyhedraSide.hh" #include "G4IntersectingCone.hh" @@ -549,7 +556,17 @@ EInside G4PolyhedraSide::Inside( const G4ThreeVector &p, const G4double toleranc // G4ThreeVector G4PolyhedraSide::Normal( const G4ThreeVector &p, G4double *bestDistance ) { + // + // Which phi segment is closest to this point? + // G4int iPhi = ClosestPhiSegment( p.phi() ); + + // + // Get distance to this segment + // + G4double norm; + *bestDistance = DistanceToOneSide( p, vecs[iPhi], &norm ); + return vecs[iPhi].normal; } diff --git a/source/geometry/solids/CSG/src/G4ReduciblePolygon.cc b/source/geometry/solids/specific/src/G4ReduciblePolygon.cc similarity index 96% rename from source/geometry/solids/CSG/src/G4ReduciblePolygon.cc rename to source/geometry/solids/specific/src/G4ReduciblePolygon.cc index 36b204c84d..444870101e 100644 --- a/source/geometry/solids/CSG/src/G4ReduciblePolygon.cc +++ b/source/geometry/solids/specific/src/G4ReduciblePolygon.cc @@ -1,3 +1,17 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ReduciblePolygon.cc,v 1.1 2000/04/07 11:03:04 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// -------------------------------------------------------------------- +// GEANT 4 class source file +// // // G4ReduciblePolygon.cc // @@ -6,17 +20,10 @@ // // See G4ReduciblePolygon.hh for more info. // -// ---------------------------------------------------------- -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By 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 "G4ReduciblePolygon.hh" -#include "math.h" // // Constructor: with simple arrays diff --git a/source/geometry/solids/CSG/src/G4SolidExtentList.cc b/source/geometry/solids/specific/src/G4SolidExtentList.cc similarity index 91% rename from source/geometry/solids/CSG/src/G4SolidExtentList.cc rename to source/geometry/solids/specific/src/G4SolidExtentList.cc index d1df15f936..7dddc2f412 100644 --- a/source/geometry/solids/CSG/src/G4SolidExtentList.cc +++ b/source/geometry/solids/specific/src/G4SolidExtentList.cc @@ -1,9 +1,3 @@ -// -// G4SolidExtentList.cc -// -// Implementation of a list of (voxel) extents along one axis -// -// ---------------------------------------------------------- // This code implementation is the intellectual property of // the GEANT4 collaboration. // @@ -11,6 +5,19 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // +// $Id: G4SolidExtentList.cc,v 1.1 2000/04/07 11:03:23 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// -------------------------------------------------------------------- +// GEANT 4 class source file +// +// +// G4SolidExtentList.cc +// +// Implementation of a list of (voxel) extents along one axis +// +// -------------------------------------------------------------------- #include "G4SolidExtentList.hh" #include "G4VoxelLimits.hh" diff --git a/source/geometry/solids/CSG/src/G4VCSGfaceted.cc b/source/geometry/solids/specific/src/G4VCSGfaceted.cc similarity index 84% rename from source/geometry/solids/CSG/src/G4VCSGfaceted.cc rename to source/geometry/solids/specific/src/G4VCSGfaceted.cc index fe3acd63e2..d1308bd257 100644 --- a/source/geometry/solids/CSG/src/G4VCSGfaceted.cc +++ b/source/geometry/solids/specific/src/G4VCSGfaceted.cc @@ -1,17 +1,24 @@ -// -// G4VCSGfaceted.cc -// -// Implementation of the virtual class of a CSG type shape that is built -// entirely out of G4VCSGface faces. -// -// ---------------------------------------------------------- -// This code implementation is the intellectual property of // the GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, // and all its terms. // +// $Id: G4VCSGfaceted.cc,v 1.5 2000/06/08 17:54:01 gracia Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// -------------------------------------------------------------------- +// GEANT 4 class source file +// +// +// G4VCSGfaceted.cc +// +// Implementation of the virtual class of a CSG type shape that is built +// entirely out of G4VCSGface faces. +// +// -------------------------------------------------------------------- + #include "G4VCSGfaceted.hh" #include "G4VCSGface.hh" #include "G4SolidExtentList.hh" @@ -37,7 +44,7 @@ G4VCSGfaceted::~G4VCSGfaceted() // // Copy constructor // -G4VCSGfaceted::G4VCSGfaceted( const G4VCSGfaceted &source ) : G4CSGSolid( source ) +G4VCSGfaceted::G4VCSGfaceted( const G4VCSGfaceted &source ) : G4VSolid( source ) { CopyStuff( source ); } @@ -309,44 +316,32 @@ void G4VCSGfaceted::DescribeYourselfTo( G4VGraphicsScene& scene ) const // // GetExtent // -G4VisExtent G4VCSGfaceted::GetExtent() const -{ - G4ThreeVector plusX(1,0,0), minusX(-1,0,0), - plusY(0,1,0), minusY(0,-1,0), - plusZ(0,0,1), minusZ(0,0,-0); - G4double answer, maxX = -kInfinity, - minX = -kInfinity, - maxY = -kInfinity, - minY = -kInfinity, - maxZ = -kInfinity, - minZ = -kInfinity; +// Define the sides of the box into which our solid instance would fit. +// +G4VisExtent G4VCSGfaceted::GetExtent() const +{ + static const G4ThreeVector xMax(1,0,0), xMin(-1,0,0), + yMax(0,1,0), yMin(0,-1,0), + zMax(0,0,1), zMin(0,0,-1); + static const G4ThreeVector *axes[6] = { &xMin, &xMax, &yMin, &yMax, &zMin, &zMax }; - // - // Ask everyone about x, y, and z - // + G4double answers[6] = {-kInfinity, -kInfinity, -kInfinity, -kInfinity, -kInfinity, -kInfinity}; + G4VCSGface **face = faces; do { - answer = (*face)->Extent( plusX ); - if (answer > maxX) maxX = answer; - - answer = (*face)->Extent( minusX ); - if (answer > minX) minX = answer; - - answer = (*face)->Extent( plusY ); - if (answer > maxY) maxY = answer; - - answer = (*face)->Extent( minusY ); - if (answer > minY) minY = answer; - - answer = (*face)->Extent( plusZ ); - if (answer > maxZ) maxZ = answer; - - answer = (*face)->Extent( minusZ ); - if (answer > minZ) minZ = answer; + G4double vmax; + + const G4ThreeVector **axis = axes+5 ; + G4double *answer = answers+5; + do { + G4double testFace = (*face)->Extent( **axis ); + if (testFace > *answer) *answer = testFace; + } + while( --axis, --answer >= answers ); + } while( ++face < faces + numFace ); - - // - // Yes, the signs are correct! - // - return G4VisExtent( -minX, maxY, -minY, maxY, -minZ, maxZ ); + + return G4VisExtent( -answers[0], answers[1], + -answers[2], answers[3], + -answers[4], answers[5] ); } diff --git a/source/geometry/volumes/History b/source/geometry/volumes/History index 5b6bc73d9b..98cde4f34a 100644 --- a/source/geometry/volumes/History +++ b/source/geometry/volumes/History @@ -1,4 +1,4 @@ -$Id: History,v 1.20 2000/01/20 10:52:16 gcosmo Exp $ +$Id: History,v 1.27 2000/05/31 15:51:46 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,53 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +May 17th, 2000 G. Cosmo - geomvol-V01-01-01 + +G4ReplicaNavigation.cc: +- Added check to returned safety value in DistanceToOut(). Zero is + returned if the computed velue is less than kCarTolerance. +- Introduced temporary fix to ComputeStep() in the first step computation + for replica boundaries. 'ourStep' is not set to the computed 'sampleStep' + if 'sampleStep' happens to be zero. + This fix helps to get rid of infinite loops when a point is on a + shared surface of a replica or on a shared vertex; a more definitive + solution to the problem is needed for the correct replica location. + +May 16th, 2000 J. Apostolakis + +G4PropagatorInField[.hh.icc]: +- Added implementations for SetDeltaOneStep and SetDeltaIntersection. + +May 9th, 2000 J. Apostolakis - geomvol-V01-01-00 + +Improvements in G4PropagatorInField incorporating include file fixes +in geometry-V01-01-02 +[ ie: Introduced kCarTolerance for check over taken step length and +TruePathLength in G4PropagatorInField::ComputeStep(). ] + + +May 8th, 2000 J. Apostolakis - geomvol-fieldImprove1 + +Internal tag for version that improves the behavior of the field. +[ it does not include the changes of geometry-V01-01-02 ] + +May 5th, 2000 J. Apostolakis + +G4PropagatorInField improvements modifying: + i) the comparison for detecting probable loop condition + - to accomodate solids that (wrongly) return small finite answer instead + of zero for Distance on surface. [ can probably be reversed eventually] +ii) the condition for exit from while (sufficient path length) to + avoid making a very small final step : used the tolerance. + +April 25th, 2000 G. Cosmo + +- Reorganised comments for the Software Reference Manual. +- Moved inlined definition to .icc files, where needed. + Created: G4LogicalBorderSurface.icc and G4LogicalSkinSurface.icc. +- Removed obsolete G4Transform class. Removed files: + G4Transform[.hh.icc]. + January 19th, 2000 G. Cosmo - geomvol-V01-00-00 Sycronized files versions with HEAD after ISO-C++ migration. diff --git a/source/geometry/volumes/include/G4AuxiliaryNavServices.hh b/source/geometry/volumes/include/G4AuxiliaryNavServices.hh index 86cff13866..864f7d9f8c 100644 --- a/source/geometry/volumes/include/G4AuxiliaryNavServices.hh +++ b/source/geometry/volumes/include/G4AuxiliaryNavServices.hh @@ -5,12 +5,19 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AuxiliaryNavServices.hh,v 1.2 1999/12/15 14:50:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AuxiliaryNavServices.hh,v 1.3 2000/04/25 16:15:02 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// class G4NormalNavigation: Utility for navigation in volumes -// containing only G4PVPlacement daughter volumes. Paul Kent Aug 96 +// class G4NormalNavigation +// +// Class description: +// +// Utility for navigation in volumes containing only G4PVPlacement +// daughter volumes. + +// History: +// - Created: Paul Kent, Aug 96 #ifndef G4AuxiliaryNavServices_hh #define G4AuxiliaryNavServices_hh @@ -23,22 +30,26 @@ class G4AuxiliaryNavServices { - public: + + public: // with description + static G4bool CheckPointOnSurface( const G4VSolid* sampleSolid, const G4ThreeVector& localPoint, const G4ThreeVector* globalDirection, const G4AffineTransform& sampleTransform, const G4bool locatedOnEdge); -// -// Is the track (Point, direction) inside the solid sampleSolid ? -// Returns true if we are going to enter the volume, -// which is the case if: -// - The point is inside -// - The point is on the surface and the direction points inside or along it. -// Else returns false + // + // Is the track (Point, direction) inside the solid sampleSolid ? + // Returns true if we are going to enter the volume, which is the case if: + // - The point is inside + // - The point is on the surface and the direction points inside + // or along it. + // Else returns false private: + G4bool testOne(); + }; #include "G4AuxiliaryNavServices.icc" diff --git a/source/geometry/volumes/include/G4BlockingList.hh b/source/geometry/volumes/include/G4BlockingList.hh index 1eb7a59362..d658882e3f 100644 --- a/source/geometry/volumes/include/G4BlockingList.hh +++ b/source/geometry/volumes/include/G4BlockingList.hh @@ -5,59 +5,23 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4BlockingList.hh,v 1.3 1999/12/15 14:50:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4BlockingList.hh,v 1.4 2000/04/25 16:15:02 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4BlockingList // +// Class description: +// // A utility class responsible for (efficiently) maintaining a List // of blocked volume numbers, with rapid `reset' operations. // -// Member functions: -// -// G4BlockingList(G4int maxDefault=511,G4int stride=512) -// -// Create empty blocking List of default size and `stride' resize -// count. -// -// ~G4BlockingList() -// -// Reset() -// -// Efficiently `Reset' the blocking List, so that no volumes -// are blocked -// [Advance tag no and only fully clear List if tag max reached] -// -// FullyReset() -// -// Clear the blocking List and reset tag value [slow] -// -// Enlarge(G4int nv) -// -// Enlarges blocking List is current size < nv, in units of stride -// Clears the new part of the List -// -// G4int Length() -// -// Returns the current length of the List. Note a length of 16 -// means volumes of indices between 0 & 15 inclusive may be blocked -// -// void BlockVolume(G4int v) -// -// Block the volume number v. Requires: 0<=v fBlockingList; + // Blocked volumes: Elements with indices + // corresponding to blocked volume set to fBlockTagNo. -private: -// Current blocked volume tag no. - G4int fBlockTagNo,fStride; -// Blocked volumes: Elements with indices -// corresponding to blocked volume set to fBlockTagNo - G4RWTValVector fBlockingList; - }; #include "G4BlockingList.icc" diff --git a/source/geometry/volumes/include/G4BlockingList.icc b/source/geometry/volumes/include/G4BlockingList.icc index 56940a50c6..fa4a9c74a4 100644 --- a/source/geometry/volumes/include/G4BlockingList.icc +++ b/source/geometry/volumes/include/G4BlockingList.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4BlockingList.icc,v 1.2 1999/12/15 14:50:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4BlockingList Inlined Implementation diff --git a/source/geometry/volumes/include/G4GRSSolid.hh b/source/geometry/volumes/include/G4GRSSolid.hh index cc82f5deaa..24726beb04 100644 --- a/source/geometry/volumes/include/G4GRSSolid.hh +++ b/source/geometry/volumes/include/G4GRSSolid.hh @@ -5,47 +5,53 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4GRSSolid.hh,v 1.2 1999/12/15 14:50:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4GRSSolid.hh,v 1.3 2000/04/25 16:15:02 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// class G4GRSSolid Paul Kent August 1996 +// class G4GRSSolid // -// Object representing a touchable solid - maintains -// association between a solid and its net resultant -// local->global transform +// Class description: +// +// Object representing a touchable solid - maintains the association +// between a solid and its net resultant local->global transform. // // NOTE: The (optional) rotation matrix is copied +// History: +// - Created. Paul Kent, August 1996 + #ifndef G4GRSSOLID_HH #define G4GRSSOLID_HH #include "G4VTouchable.hh" #include "G4VPhysicalVolume.hh" -// #include "G4LogicalVolume.hh" #include "G4RotationMatrix.hh" class G4GRSSolid : public G4VTouchable { -public: - G4GRSSolid(G4VSolid *pSolid, - const G4RotationMatrix *pRot, - const G4ThreeVector &tlate); - G4GRSSolid(G4VSolid *pSolid, - const G4RotationMatrix &rot, - const G4ThreeVector &tlate); - ~G4GRSSolid(); - G4VSolid* GetSolid(G4int depth=0) const; - const G4ThreeVector& GetTranslation(G4int depth=0) const; - const G4RotationMatrix* GetRotation(G4int depth=0) const; + public: // with description + + G4GRSSolid(G4VSolid *pSolid, + const G4RotationMatrix *pRot, + const G4ThreeVector &tlate); + G4GRSSolid(G4VSolid *pSolid, + const G4RotationMatrix &rot, + const G4ThreeVector &tlate); + ~G4GRSSolid(); + + G4VSolid* GetSolid(G4int depth=0) const; + const G4ThreeVector& GetTranslation(G4int depth=0) const; + const G4RotationMatrix* GetRotation(G4int depth=0) const; -private: + private: - G4VSolid *fsolid; - G4RotationMatrix *frot; - G4ThreeVector ftlate; + G4VSolid *fsolid; + G4RotationMatrix *frot; + G4ThreeVector ftlate; }; #include "G4GRSSolid.icc" + #endif diff --git a/source/geometry/volumes/include/G4GRSSolid.icc b/source/geometry/volumes/include/G4GRSSolid.icc index fe46dc20f5..959d8253fc 100644 --- a/source/geometry/volumes/include/G4GRSSolid.icc +++ b/source/geometry/volumes/include/G4GRSSolid.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4GRSSolid.icc,v 1.2 1999/12/15 14:50:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4GRSSolid inline implementation diff --git a/source/geometry/volumes/include/G4GRSVolume.hh b/source/geometry/volumes/include/G4GRSVolume.hh index 13faff34e8..bfc0c0979f 100644 --- a/source/geometry/volumes/include/G4GRSVolume.hh +++ b/source/geometry/volumes/include/G4GRSVolume.hh @@ -5,18 +5,23 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4GRSVolume.hh,v 1.2 1999/12/15 14:50:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4GRSVolume.hh,v 1.3 2000/04/25 16:15:02 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// class G4GRSVolume Paul Kent August 1996 +// class G4GRSVolume +// +// Class description: // // Object representing a touchable detector element - maintains // associations between a physical volume and its net resultant -// local->global transform +// local->global transform. // // NOTE: The (optional) rotation matrix is copied +// History: +// - Created. Paul Kent, August 1996 + #ifndef G4GRSVOLUME_HH #define G4GRSVOLUME_HH @@ -28,25 +33,28 @@ class G4GRSVolume : public G4VTouchable { -public: - G4GRSVolume(G4VPhysicalVolume *pVol, - const G4RotationMatrix *pRot, - const G4ThreeVector &tlate); - G4GRSVolume(G4VPhysicalVolume *pVol, - const G4RotationMatrix &rot, - const G4ThreeVector &tlate); - ~G4GRSVolume(); - G4VPhysicalVolume* GetVolume(G4int depth=0) const; - G4VSolid* GetSolid(G4int depth=0) const; - const G4ThreeVector& GetTranslation(G4int depth=0) const; - const G4RotationMatrix* GetRotation(G4int depth=0) const; + public: // with description + + G4GRSVolume(G4VPhysicalVolume *pVol, + const G4RotationMatrix *pRot, + const G4ThreeVector &tlate); + G4GRSVolume(G4VPhysicalVolume *pVol, + const G4RotationMatrix &rot, + const G4ThreeVector &tlate); + ~G4GRSVolume(); + + G4VPhysicalVolume* GetVolume(G4int depth=0) const; + G4VSolid* GetSolid(G4int depth=0) const; + const G4ThreeVector& GetTranslation(G4int depth=0) const; + const G4RotationMatrix* GetRotation(G4int depth=0) const; -private: + private: - G4VPhysicalVolume *fvol; - G4RotationMatrix *frot; - G4ThreeVector ftlate; + G4VPhysicalVolume *fvol; + G4RotationMatrix *frot; + G4ThreeVector ftlate; }; #include "G4GRSVolume.icc" + #endif diff --git a/source/geometry/volumes/include/G4GRSVolume.icc b/source/geometry/volumes/include/G4GRSVolume.icc index 9262178aa8..9d6f5d404e 100644 --- a/source/geometry/volumes/include/G4GRSVolume.icc +++ b/source/geometry/volumes/include/G4GRSVolume.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4GRSVolume.icc,v 1.3 1999/12/15 14:50:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4GRSVolume inline implementation diff --git a/source/geometry/volumes/include/G4LogicalBorderSurface.hh b/source/geometry/volumes/include/G4LogicalBorderSurface.hh index da5d137d4a..c7ce98dc56 100644 --- a/source/geometry/volumes/include/G4LogicalBorderSurface.hh +++ b/source/geometry/volumes/include/G4LogicalBorderSurface.hh @@ -5,23 +5,25 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LogicalBorderSurface.hh,v 1.3 1999/12/15 14:50:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LogicalBorderSurface.hh,v 1.4 2000/04/25 16:15:02 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // //////////////////////////////////////////////////////////////////////// -// G4LogicalBorderSurface Definition +// class G4LogicalBorderSurface //////////////////////////////////////////////////////////////////////// // -// File: G4LogicalBorderSurface.hh -// Description: A Logical Surface class for surfaces defined by the -// boundary of two physical volumes. -// Version: 1.0 +// Class description: +// +// A Logical Surface class for surfaces defined by the boundary +// of two physical volumes. + +// History: +// ------- // Created: 1997-06-17 // Author: John Apostolakis // mail: John.Apostolakis@cern.ch // Modified: 1997-06-16 John Apostolakis // -// Id tag: //////////////////////////////////////////////////////////////////////// #ifndef G4LogicalBorderSurface_h @@ -50,7 +52,7 @@ class G4LogicalBorderSurface: public G4LogicalSurface //////////////////////////////// // Constructors and Destructor //////////////////////////////// -public: + public: G4LogicalBorderSurface(const G4String& name, G4VPhysicalVolume* vol1, @@ -62,44 +64,38 @@ public: //////////// // Methods //////////// -public: - // public methods + + public: static G4LogicalBorderSurface* GetSurface(const G4VPhysicalVolume* vol1, - const G4VPhysicalVolume* vol2); + const G4VPhysicalVolume* vol2); void SetPhysicalVolumes(G4VPhysicalVolume* vol1, - G4VPhysicalVolume* vol2) - { Volume1 = vol1; Volume2 = vol2; } + G4VPhysicalVolume* vol2); - G4VPhysicalVolume* GetVolume1() const {return Volume1;} - G4VPhysicalVolume* GetVolume2() const {return Volume2;} + G4VPhysicalVolume* GetVolume1() const; + G4VPhysicalVolume* GetVolume2() const; - // These are potentially dangerous. - void SetVolume1(G4VPhysicalVolume* vol1) - {Volume1 = vol1;} + void SetVolume1(G4VPhysicalVolume* vol1); + void SetVolume2(G4VPhysicalVolume* vol2); + // These are potentially dangerous. - void SetVolume2(G4VPhysicalVolume* vol2) - {Volume2 = vol2;} - - // Methods dealing with the table of surfaces. - // - static const G4RWTPtrOrderedVector* GetSurfaceTable() - { return &theBorderSurfaceTable; } - static size_t GetNumberOfBorderSurfaces() - { return theBorderSurfaceTable.length(); } + static const G4RWTPtrOrderedVector* GetSurfaceTable(); + static size_t GetNumberOfBorderSurfaces(); static void DumpInfo(); + // Methods dealing with the table of surfaces. - size_t GetIndex() const { return theIndexInTable; } + size_t GetIndex() const; ////////////// // Operators ////////////// -public: + G4int operator==(const G4LogicalBorderSurface &right) const; G4int operator!=(const G4LogicalBorderSurface &right) const; -private: + private: + G4LogicalBorderSurface(const G4LogicalBorderSurface &right); const G4LogicalBorderSurface & operator=(const G4LogicalBorderSurface &right); @@ -107,15 +103,16 @@ private: // Basic data members ( To define a 'logical' surface) // ------------------ -private: + private: + G4VPhysicalVolume* Volume1; // Physical Volume pointer on side 1 G4VPhysicalVolume* Volume2; // Physical Volume pointer on side 2 -// The static Table of Surfaces static G4RWTPtrOrderedVector theBorderSurfaceTable; + // The static Table of Surfaces - size_t theIndexInTable; // Index of surface in the surface table - + size_t theIndexInTable; + // Index of surface in the surface table }; typedef G4RWTPtrOrderedVector G4LogicalBorderSurfaceTable; @@ -124,4 +121,6 @@ typedef G4RWTPtrOrderedVector G4LogicalBorderSurfaceTabl // Inline methods //////////////////// +#include "G4LogicalBorderSurface.icc" + #endif /* G4LogicalBorderSurface_h */ diff --git a/source/geometry/volumes/include/G4LogicalBorderSurface.icc b/source/geometry/volumes/include/G4LogicalBorderSurface.icc new file mode 100644 index 0000000000..6b383cf4d6 --- /dev/null +++ b/source/geometry/volumes/include/G4LogicalBorderSurface.icc @@ -0,0 +1,50 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4LogicalBorderSurface.icc,v 1.1 2000/04/25 16:15:02 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// class G4LogicalBorderSurface inline implementation + +inline +void G4LogicalBorderSurface::SetPhysicalVolumes(G4VPhysicalVolume* vol1, + G4VPhysicalVolume* vol2) +{ + Volume1 = vol1; + Volume2 = vol2; +} + +inline +G4VPhysicalVolume* G4LogicalBorderSurface::GetVolume1() const +{ + return Volume1; +} + +inline +G4VPhysicalVolume* G4LogicalBorderSurface::GetVolume2() const +{ + return Volume2; +} + +inline +void G4LogicalBorderSurface::SetVolume1(G4VPhysicalVolume* vol1) +{ + Volume1 = vol1; +} + +inline +void G4LogicalBorderSurface::SetVolume2(G4VPhysicalVolume* vol2) +{ + Volume2 = vol2; +} + +inline +size_t G4LogicalBorderSurface::GetIndex() const +{ + return theIndexInTable; +} diff --git a/source/geometry/volumes/include/G4LogicalSkinSurface.hh b/source/geometry/volumes/include/G4LogicalSkinSurface.hh index ee820735f9..f90cc17054 100644 --- a/source/geometry/volumes/include/G4LogicalSkinSurface.hh +++ b/source/geometry/volumes/include/G4LogicalSkinSurface.hh @@ -5,23 +5,25 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LogicalSkinSurface.hh,v 1.3 1999/12/15 14:50:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LogicalSkinSurface.hh,v 1.4 2000/04/25 16:15:03 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // //////////////////////////////////////////////////////////////////////// -// G4LogicalSkinSurface Definition +// class G4LogicalSkinSurface //////////////////////////////////////////////////////////////////////// // -// File: G4LogicalSkinSurface.hh -// Description: A Logical Surface class for the surface -// surrounding a single logical volume. -// Version: 1.0 +// Class description: +// +// A Logical Surface class for the surface surrounding a single logical +// volume. + +// History: +// ------- // Created: 1997-06-16 // Author: John Apostolakis // mail: John.Apostolakis@cern.ch // Modified: 1997-06-16 John Apostolakis // -// Id tag: //////////////////////////////////////////////////////////////////////// #ifndef G4LogicalSkinSurface_h @@ -46,7 +48,7 @@ class G4LogicalSkinSurface : public G4LogicalSurface { -public: + public: //////////////////////////////// // Constructors and Destructor @@ -62,53 +64,47 @@ public: //////////// // Methods //////////// -public: - // public methods - + public: + static G4LogicalSkinSurface* GetSurface(const G4LogicalVolume* vol); - G4LogicalVolume* GetLogicalVolume() const {return LogVolume;}; - void SetLogicalVolume(G4LogicalVolume* vol) - {LogVolume = vol;}; + G4LogicalVolume* GetLogicalVolume() const; + void SetLogicalVolume(G4LogicalVolume* vol); - - // Methods dealing with the table of surfaces. - // - static size_t GetNumberOfSkinSurfaces() - { return theSurfaceTable.length(); }; + static size_t GetNumberOfSkinSurfaces(); static void DumpInfo(); // const + // Methods dealing with the table of surfaces. #if THESE_ARE_NEEDED - // static const G4RWTPtrOrderedVector* - // GetSurfaceTable() - // { return &theSurfaceTable; }; - - size_t GetIndex() const { return theIndexInTable; }; + size_t GetIndex() const; #endif ////////////// // Operators ////////////// -public: + G4int operator==(const G4LogicalSkinSurface &right) const; G4int operator!=(const G4LogicalSkinSurface &right) const; private: - // Assignment and copying must be denied. + G4LogicalSkinSurface(const G4LogicalSkinSurface &right); const G4LogicalSkinSurface & operator=(const G4LogicalSkinSurface &right); + // Assignment and copying must be denied. // ------------------ // Basic data members ( To define a 'logical' surface) // ------------------ + private: - G4LogicalVolume* LogVolume; // Logical Volume pointer on side 1 + G4LogicalVolume* LogVolume; + // Logical Volume pointer on side 1 -// The static Table of Surfaces static G4RWTPtrOrderedVector theSurfaceTable; -// static G4LogicalSkinSurfaceTable theSurfaceTable; + // The static Table of Surfaces - size_t theIndexInTable; // Index of surface in the surface table + size_t theIndexInTable; + // Index of surface in the surface table }; @@ -118,4 +114,6 @@ typedef G4RWTPtrOrderedVector G4LogicalSkinSurfaceTable; // Inline methods //////////////////// +#include "G4LogicalSkinSurface.icc" + #endif /* G4LogicalSkinSurface_h */ diff --git a/source/geometry/volumes/include/G4LogicalSkinSurface.icc b/source/geometry/volumes/include/G4LogicalSkinSurface.icc new file mode 100644 index 0000000000..7e3402a145 --- /dev/null +++ b/source/geometry/volumes/include/G4LogicalSkinSurface.icc @@ -0,0 +1,32 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4LogicalSkinSurface.icc,v 1.1 2000/04/25 16:15:03 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// class G4LogicalSkinSurface inline implementation + +inline +G4LogicalVolume* G4LogicalSkinSurface::GetLogicalVolume() const +{ + return LogVolume; +} + +inline +void G4LogicalSkinSurface::SetLogicalVolume(G4LogicalVolume* vol) +{ + LogVolume = vol; +} + +#if THESE_ARE_NEEDED +inline +size_t G4LogicalSkinSurface::GetIndex() const +{ + return theIndexInTable; +} +#endif diff --git a/source/geometry/volumes/include/G4NavigationHistory.hh b/source/geometry/volumes/include/G4NavigationHistory.hh index ce8665b29e..5ae258d4ac 100644 --- a/source/geometry/volumes/include/G4NavigationHistory.hh +++ b/source/geometry/volumes/include/G4NavigationHistory.hh @@ -5,15 +5,17 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4NavigationHistory.hh,v 1.4 1999/12/15 16:40:10 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4NavigationHistory.hh,v 1.5 2000/04/25 16:15:03 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4NavigationHistory // -// Responsible for maintenance of the history of the path taken through -// the geometrical hierarchy. Principally a utility class for use by -// G4Navigator. +// Class description: // +// Responsible for maintenance of the history of the path taken through +// the geometrical hierarchy. Principally a utility class for use by the +// G4Navigator. + // History: // // 25.07.96 P.Kent Initial version. Services derived from @@ -38,7 +40,8 @@ const G4int kHistoryStride=16; // History increase stride class G4NavigationHistory { -public: + public: // with description + friend G4std::ostream& operator << (G4std::ostream &os,const G4NavigationHistory &h); G4NavigationHistory(); @@ -73,11 +76,11 @@ public: G4NavigationHistory& operator=(const G4NavigationHistory &h); -private: + private: void EnlargeHistory(); -// Depth of stack: effectively depth in geometrical tree G4int fStackDepth; + // Depth of stack: effectively depth in geometrical tree G4RWTValVector fNavHistory; // G4RWTPtrVector fNavHistory; diff --git a/source/geometry/volumes/include/G4NavigationHistory.icc b/source/geometry/volumes/include/G4NavigationHistory.icc index 955a02dd82..5fce5dcd47 100644 --- a/source/geometry/volumes/include/G4NavigationHistory.icc +++ b/source/geometry/volumes/include/G4NavigationHistory.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4NavigationHistory.icc,v 1.2 1999/12/15 14:50:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4NavigationHistory Inline implementation diff --git a/source/geometry/volumes/include/G4NavigationLevel.hh b/source/geometry/volumes/include/G4NavigationLevel.hh index 9999e4947a..1b5b10dff7 100644 --- a/source/geometry/volumes/include/G4NavigationLevel.hh +++ b/source/geometry/volumes/include/G4NavigationLevel.hh @@ -5,14 +5,16 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4NavigationLevel.hh,v 1.10 1999/12/15 16:40:10 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4NavigationLevel.hh,v 1.11 2000/04/25 16:15:03 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4NavigationLevel // -// Maintains one level of the geometrical hierarchy. A utility class for use -// by G4NavigationHistory. +// Class description: // +// Maintains one level of the geometrical hierarchy. +// A utility class for use by G4NavigationHistory. + // History: // // 30.09.97 J.Apostolakis Initial version. Services derived from @@ -33,21 +35,21 @@ class G4NavigationLevel { - public: + public: // with description + G4NavigationLevel(G4VPhysicalVolume* newPtrPhysVol, const G4AffineTransform& newT, EVolume newVolTp, G4int newRepNo= -1); - // As the previous constructor, but instead of giving Transform, give - // the AffineTransform to the level above and the current level's - // Transform relative to that. - // G4NavigationLevel(G4VPhysicalVolume* newPtrPhysVol, const G4AffineTransform& levelAbove, const G4AffineTransform& relativeCurrent, EVolume newVolTp, G4int newRepNo= -1); + // As the previous constructor, but instead of giving Transform, give + // the AffineTransform to the level above and the current level's + // Transform relative to that. G4NavigationLevel(); G4NavigationLevel( const G4NavigationLevel& ); @@ -63,23 +65,24 @@ class G4NavigationLevel EVolume GetVolumeType() const ; G4int GetReplicaNo() const ; - // To try to resolve the possible problem with returning a reference. - const G4AffineTransform* GetPtrTransform() const; + public: // without description + + const G4AffineTransform* GetPtrTransform() const; + // To try to resolve the possible problem with returning a reference. - // Override "new" and "delete" to use "G4Allocator". inline void *operator new(size_t); inline void operator delete(void *aLevel); + // Override "new" and "delete" to use "G4Allocator". - // Pre-allocated 'new' and 'delete' for use with STL - // - do not (directly) use Allocator F.Behner/J.Apostolakis - inline void *operator new(size_t, void *); // void*); + inline void *operator new(size_t, void *); #ifndef G4NOT_ISO_DELETES inline void operator delete(void *ptr, void*); // Not accepted Sun/HP #endif + // Pre-allocated 'new' and 'delete' for use with STL + // Do not (directly) use Allocator - F.Behner/J.Apostolakis - // Data members: - // private: + G4NavigationLevelRep* fLevelRep; }; diff --git a/source/geometry/volumes/include/G4NavigationLevel.icc b/source/geometry/volumes/include/G4NavigationLevel.icc index c2b62f60e0..f48a7fecc8 100644 --- a/source/geometry/volumes/include/G4NavigationLevel.icc +++ b/source/geometry/volumes/include/G4NavigationLevel.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4NavigationLevel.icc,v 1.9 1999/12/15 14:50:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 729f9cb2c9..e8b54b6fc2 100644 --- a/source/geometry/volumes/include/G4NavigationLevelRep.hh +++ b/source/geometry/volumes/include/G4NavigationLevelRep.hh @@ -5,21 +5,23 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4NavigationLevelRep.hh,v 1.3 1999/12/15 16:40:10 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4NavigationLevelRep.hh,v 1.4 2000/04/25 16:15:03 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4NavigationLevelRep // -// A data representation class, used to hold the data for -// a single level of the Navigation history tree. +// Class description: // -// This is the body of a handle/body pair of classes, -// that implement reference counting for NavigationLevels. -// The corresponding handle class is G4NavigationLevel +// A data representation class, used to hold the data for a single level +// of the Navigation history tree. // +// This is the body of a handle/body pair of classes, that implement +// reference counting for NavigationLevels. +// The corresponding handle class is G4NavigationLevel + // History: // -// 1 October 1997, J.Apostolakis: Initial version. +// - 1 October 1997, J.Apostolakis: initial version. #ifndef G4NAVIGATIONLEVELREP_HH #define G4NAVIGATIONLEVELREP_HH @@ -33,21 +35,21 @@ class G4NavigationLevelRep { - public: + public: // with description + G4NavigationLevelRep(G4VPhysicalVolume* newPtrPhysVol, const G4AffineTransform& newT, EVolume newVolTp, G4int newRepNo= -1); - // As the previous constructor, but instead of giving Transform, give - // the AffineTransform to the level above and the current level's - // Transform relative to that. - // G4NavigationLevelRep(G4VPhysicalVolume* newPtrPhysVol, const G4AffineTransform& levelAbove, const G4AffineTransform& relativeCurrent, EVolume newVolTp, G4int newRepNo= -1); + // As the previous constructor, but instead of giving Transform, give + // the AffineTransform to the level above and the current level's + // Transform relative to that. G4NavigationLevelRep(); G4NavigationLevelRep( G4NavigationLevelRep& ); @@ -64,28 +66,32 @@ class G4NavigationLevelRep EVolume GetVolumeType() const ; G4int GetReplicaNo() const ; + void AddAReference(); + G4bool RemoveAReference(); + // Take care of the reference counts. + + inline void *operator new(size_t); + // Override "new" to use "G4Allocator". + inline void operator delete(void *aTrack); + // Override "delete" to use "G4Allocator". + + public: // without description + // const G4AffineTransform* GetPtrTransform() const; // G4AffineTransform& accessTransform(); - // Take care of the reference counts. - // - void AddAReference(); - G4bool RemoveAReference(); - - inline void *operator new(size_t); - // Override "new" to use "G4Allocator". - inline void operator delete(void *aTrack); - // Override "delete" to use "G4Allocator". - private: - // Compounded global->local transformation (takes a point in the - // global reference system to the system of the volume at this level) + G4AffineTransform sTransform; - // Physical volume ptrs, for this level's volume + // Compounded global->local transformation (takes a point in the + // global reference system to the system of the volume at this level) + G4VPhysicalVolume* sPhysicalVolumePtr; - // Volume `type' + // Physical volume ptrs, for this level's volume + G4int sReplicaNo; EVolume sVolumeType; + // Volume `type' G4int fCountRef; diff --git a/source/geometry/volumes/include/G4NavigationLevelRep.icc b/source/geometry/volumes/include/G4NavigationLevelRep.icc index d8ef934ffb..5861e1fb07 100644 --- a/source/geometry/volumes/include/G4NavigationLevelRep.icc +++ b/source/geometry/volumes/include/G4NavigationLevelRep.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4NavigationLevelRep.icc,v 1.2 1999/12/15 14:50:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 c30fe1c04b..e46b847f53 100644 --- a/source/geometry/volumes/include/G4Navigator.hh +++ b/source/geometry/volumes/include/G4Navigator.hh @@ -5,11 +5,13 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Navigator.hh,v 1.1.10.1.2.2 1999/12/09 13:51:22 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Navigator.hh,v 1.5 2000/04/25 16:15:03 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// class G4Navigator Paul Kent July 95/96 +// class G4Navigator +// +// Class description: // // A class for use by the tracking management, able to obtain/calculate // dynamic tracking time information such as the distance to the next volume, @@ -17,110 +19,9 @@ // reference system. The navigator maintains a transformation history and // other information to optimise the tracking time performance. // -// Member functions: +// NOTES: // -// G4Navigator() -// Constructor. No actions yet. -// -// ~G4Navigator() -// Destructor. No actions yet. -// -// G4double ComputeStep(const G4ThreeVector &globalpoint, -// const G4ThreeVector &direction, -// const G4double pCurrentProposedStepLength, -// G4double &newSafety) -// Calculate the distance to the next boundary intersected -// along the specified NORMALISED vector direction and -// from the specified point in the global coordiante -// system. LocateGlobalPointAndSetup or LocateGlobalPointWithinVolume -// must have been called with the same global point prior to this call. -// The isotropic distance to the nearest boundary is also -// calculated (usually an underestimate). The current -// proposed Step length is used to avoid intersection -// calculations: if it can be determined that the nearest -// boundary is >pCurrentProposedStepLength away, kInfinity -// is returned together with the computed isotropic safety -// distance. Geometry must be closed. -// -// G4double ComputeSafety(const G4ThreeVector &globalpoint, -// const G4double pProposedMaxLength=DBL_MAX ) -// -// Calculate the isotropic distance to the nearest boundary from the -// specified point in the global coordinate system. -// The globalpoint utilised must be within the current volume. -// The value returned is usually an underestimate. -// The proposed maximum length is used to avoid volume safety -// calculations. The geometry must be closed. -// -// G4ThreeVector GetCurrentLocalCoordinate() const -// Return the local coordinate of the point in the reference system -// of its containing volume that was found by -// LocalGlobalPointAndSetup. -// -// G4ThreeVector ComputeLocalAxis(const G4ThreeVector& pGVector) const -// Return the local direction of the specified vector in the reference -// system of the volume that was found by LocalGlobalPointAndSetup. -// -// G4VPhysicalVolume* GetWorldVolume() const -// Return the current world (`topmost') volume -// -// G4VPhysicalVolume* LocateGlobalPointAndSetup(const G4ThreeVector& point, -// const G4ThreeVector* direction=0, -// G4bool pRelativeSearch=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 -// information. Returns the physical volume containing the point, -// with all previous mothers correctly set up. -// ii) If pRelativeSearch is set to true, the search begin is the geometrical -// 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. -// -// -// void LocateGlobalPointWithinVolume( const G4ThreeVector& position) -// Notify the Navigator that a track has moved to the new Global point -// 'position', that is know to be within the current safety. -// No check is performed to ensure that it is within the volume. -// This method can be called instead of LocateGlobalPointAndSetup ONLY if -// the caller is certain that the new global point (position) is inside the -// same volume as the previous position. Usually this can be guaranteed -// only if the point is within safety. -// -// void -// LocateGlobalPointAndUpdateTouchable( const G4ThreeVector& position, -// const G4ThreeVector& globalDirection, -// G4Touchable* touchableToUpdate, -// const G4bool relativeSearch=true); -// First, search the geometrical hierarchy like the above method -// LocateGlobalPointAndSetup(const G4ThreeVector&, G4bool). -// Then use the volume found and its navigation history to -// update the touchable. -// - -// void SetGeometricallyLimitedStep() -// Inform the navigator that the previous Step calculated -// by the geometry was taken in its entirety -// -// void SetWorldVolume(G4VPhysicalVolume* pWorld) -// Set the world (`topmost') volume. This must be -// positioned at (0,0,0) and unrotated. -// -// G4ThreeVector GetLocalExitNormal(G4bool* valid); -// Can be called only if the Navigator's last Step has arrived at -// a geometrical boundary. -// It returns the Normal to the surface pointing out of the volume that -// was left behind and/or into the volume that was entered. -// (The normal is in the coordinate system of the final volume.) -// This function takes full care about how to calculate this normal, -// but if the surfaces are not convex it will return valid=false. -// -// The following methods provide (more detailed) information when a Step has +// The following methods provide detailed information when a Step has // arrived at a geometrical boundary. They distinguish between the different // causes that can result in the track leaving its current volume. // @@ -143,27 +44,9 @@ // reccomended to compare the G4touchables associated // to the preStepPoint and postStepPoint to handle this case. // -// 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 -// - True only in case 1) above, that is when -// the Step has caused the track to arrive at a boundary of a daughter. -// - False in cases 2), 3) and 4), ie in all other cases. -// This function is not guaranteed to work if SetGeometricallyLimitedStep() -// was not called when it should have been called. -// -// G4bool IsExitNormalValid(); -// Return true if the Navigator -// i) found that it is exiting the previous volume and is not entering a -// daughter volume. -// ii) has obtained the normal for the previous volume. -// -// G4ThreeVector GetLocalExitNormal(); -// Can be called (ie can return a valid result) only if Navigator replied -// true to IsExitNormalValid() -// It returns the ExitNormal of the previous volume -// (The normal is in the coordinate system of the final volume.) +// G4bool EnteredDaughterVolume() +// G4bool IsExitNormalValid() +// G4ThreeVector GetLocalExitNormal() // // The expected usefulness of these methods is to allow the caller to // determine how to compute the surface normal at the volume boundary. The two @@ -171,21 +54,23 @@ // // i) the solid associated with the volume of the initial point of the Step. // This is valid for cases 2 and 3. -// (Note that the initial point is generally the PreStepPoint of a Step). -// or +// (Note that the initial point is generally the PreStepPoint of a Step). +// or +// // ii) the solid of the final point, ie of the volume after the relocation. // This is valid for case 1. -// (Note that the final point is generally the PreStepPoint of a Step). +// (Note that the final point is generally the PreStepPoint of a Step). // // This way the caller can always get a valid normal, pointing outside // the solid for which it is computed, that can be used at his own // discretion. -// -// 18th Dec 1997 John Allison Temporary change -> NON-CONST (8 functions) +// History: +// - Created. Paul Kent, July 95/96 #ifndef G4NAVIGATOR_HH #define G4NAVIGATOR_HH + #include "geomdefs.hh" #include "G4ThreeVector.hh" @@ -211,141 +96,216 @@ class G4Navigator { -public: + public: // with description + friend G4std::ostream& operator << (G4std::ostream &os, const G4Navigator &n); -// Constructor - initialisers and setup G4Navigator(); - ~G4Navigator(); + // Constructor - initialisers and setup. + + ~G4Navigator(); + // Destructor. No actions. -// Compute the next geometric Step G4double ComputeStep(const G4ThreeVector &pGlobalPoint, const G4ThreeVector &pDirection, const G4double pCurrentProposedStepLength, G4double &pNewSafety); - -// Locate the point in the hierarchy + // Calculate the distance to the next boundary intersected + // along the specified NORMALISED vector direction and + // from the specified point in the global coordinate + // system. LocateGlobalPointAndSetup or LocateGlobalPointWithinVolume + // must have been called with the same global point prior to this call. + // The isotropic distance to the nearest boundary is also + // calculated (usually an underestimate). The current + // proposed Step length is used to avoid intersection + // calculations: if it can be determined that the nearest + // boundary is >pCurrentProposedStepLength away, kInfinity + // is returned together with the computed isotropic safety + // distance. Geometry must be closed. + + G4VPhysicalVolume* LocateGlobalPointAndSetup(const G4ThreeVector &p, + const G4TouchableHistory &h); + G4VPhysicalVolume* LocateGlobalPointAndSetup(const G4ThreeVector& point, const G4ThreeVector* direction=0, const G4bool pRelativeSearch=true); - - G4VPhysicalVolume* LocateGlobalPointAndSetup(const G4ThreeVector &p, - const G4TouchableHistory &h); + // 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 + // information. Returns the physical volume containing the point, + // with all previous mothers correctly set up. + // ii) If pRelativeSearch is set to true, the search begin is the geometrical + // 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. void LocateGlobalPointWithinVolume( const G4ThreeVector& position); + // Notify the Navigator that a track has moved to the new Global point + // 'position', that is known to be within the current safety. + // No check is performed to ensure that it is within the volume. + // This method can be called instead of LocateGlobalPointAndSetup ONLY if + // the caller is certain that the new global point (position) is inside the + // same volume as the previous position. Usually this can be guaranteed + // only if the point is within safety. - void LocateGlobalPointAndUpdateTouchable( + void LocateGlobalPointAndUpdateTouchable( const G4ThreeVector& position, 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. - // Old version (missing direction) : not recommended - // replace with new version above. - - void LocateGlobalPointAndUpdateTouchable( + void LocateGlobalPointAndUpdateTouchable( const G4ThreeVector& position, G4VTouchable* touchableToUpdate, const G4bool RelativeSearch =true); + // Old version (missing direction). + // Not recommended replace with newer version above. -// Inform the navigator that the previous Step calculated -// by the geometry was taken in its entirety void SetGeometricallyLimitedStep(); + // Inform the navigator that the previous Step calculated + // by the geometry was taken in its entirety. -// Calculate the isotropic distance to the nearest boundary from the -// specified point in the global coordinate system. -G4double ComputeSafety(const G4ThreeVector &globalpoint, - const G4double pProposedMaxLength=DBL_MAX ); + G4double ComputeSafety(const G4ThreeVector &globalpoint, + const G4double pProposedMaxLength=DBL_MAX ); + // Calculate the isotropic distance to the nearest boundary from the + // specified point in the global coordinate system. + // The globalpoint utilised must be within the current volume. + // The value returned is usually an underestimate. + // The proposed maximum length is used to avoid volume safety + // calculations. The geometry must be closed. -// Return the local coordinate of the last located track G4ThreeVector GetCurrentLocalCoordinate() const; -// Return position vector in local coordinate system, given a position vector -// in world coord system - G4ThreeVector ComputeLocalPoint(const G4ThreeVector& rGlobPoint) const; -// Return Local Coordinates of point in world coordinate system -// - G4ThreeVector ComputeLocalAxis(const G4ThreeVector& pVec) const; + // Return the local coordinate of the point in the reference system + // of its containing volume that was found by LocalGlobalPointAndSetup. + // The local coordinate of the last located track. + + G4ThreeVector ComputeLocalPoint(const G4ThreeVector& rGlobPoint) const; + // Return position vector in local coordinate system, given a position + // vector in world coordinate system. + + G4ThreeVector ComputeLocalAxis(const G4ThreeVector& pVec) const; + // Return the local direction of the specified vector in the reference + // system of the volume that was found by LocalGlobalPointAndSetup. + // The Local Coordinates of point in world coordinate system. -// Compute+return the local->global translation/rotation of current volume G4ThreeVector NetTranslation() const; G4RotationMatrix NetRotation() const; + // Compute+return the local->global translation/rotation of current volume. -// Return the current world (`topmost') volume G4VPhysicalVolume* GetWorldVolume() const; + // Return the current world (`topmost') volume. -// Set the world (`topmost') volume. Check at origin and unrotated. void SetWorldVolume(G4VPhysicalVolume* pWorld); + // Set the world (`topmost') volume. This must be positioned at + // origin (0,0,0) and unrotated. -// `Touchable' creation methods: caller has deletion responsibility G4GRSVolume* CreateGRSVolume() const; G4GRSSolid* CreateGRSSolid() const; G4TouchableHistory* CreateTouchableHistory() const; + // `Touchable' creation methods: caller has deletion responsibility. -// Obtain the Normal vector to a surface (in local coordinates) G4bool IsExitNormalValid(); - G4ThreeVector GetLocalExitNormal(); // Valid only if Navigator replied true - // It is in the coordinate system of the final volume + // Return true if the Navigator + // i) found that it is exiting the previous volume and is not + // entering a daughter volume. + // ii) has obtained the normal for the previous volume (in local + // coordinates). + + G4ThreeVector GetLocalExitNormal(); + // Can be called (i.e. can return a valid result) only if the Navigator + // replied true to IsExitNormalValid(). + // It returns the ExitNormal of the previous volume. + // (The normal is in the coordinate system of the final volume.) + // It is in the coordinate system of the final volume. - // More powerful calculation of Exit Surface Normal, returns validity too. - // But it can only be called if the Step has crossed a volume boundary. G4ThreeVector GetLocalExitNormal(G4bool* valid); + // More powerful calculation of Exit Surface Normal, returns validity too. + // But it can only be called if the Navigator's last Step has crossed a + // volume geometrical boundary. + // It returns the Normal to the surface pointing out of the volume that + // was left behind and/or into the volume that was entered. + // (The normal is in the coordinate system of the final volume.) + // 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(); - // G4bool ExitedMotherVolume(); + 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 + // - True only in case 1) above, that is when the Step has caused + // the track to arrive at a boundary of a daughter. + // - False in cases 2), 3) and 4), i.e. in all other cases. + // This function is not guaranteed to work if SetGeometricallyLimitedStep() + // was not called when it should have been called. + + // G4bool ExitedMotherVolume(); - // Get/Set Verbose(ness) level (if level>0 && G4VERBOSE, printout can occur) G4int GetVerboseLevel(); void SetVerboseLevel(G4int level); + // Get/Set Verbose(ness) level. + // [if level>0 && G4VERBOSE, printout can occur] - // Print the internal state of the Navigator (for debugging). - // The level of detail is according to the verbosity. - void PrintState(); + void PrintState(); + // Print the internal state of the Navigator (for debugging). + // The level of detail is according to the verbosity. -// Obtain the transformations Global/Local (and inverse) -// Clients of these methods must copy the data if they need to keep it. const G4AffineTransform& GetGlobalToLocalTransform() const; 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 -protected: -// Reset stack and minimum or navigator state machine necessary for reset -// as needed by LocalGlobalPointAnsSetup -// [Does not perform clears, resizes, or reset fLastLocatedPointLocal] void ResetStackAndState(); + // Reset stack and minimum or navigator state machine necessary for reset + // as needed by LocalGlobalPointAndSetup. + // [Does not perform clears, resizes, or reset fLastLocatedPointLocal] -// Characterise `type' of volume - normal/replicated/parameterised EVolume VolumeType(const G4VPhysicalVolume *pVol) const; -// Characterise daughter of logical volume + // Characterise `type' of volume - normal/replicated/parameterised. + EVolume CharacteriseDaughters(const G4LogicalVolume *pLog) const; + // Characterise daughter of logical volume. -// Renavigate & reset hierarchy described by current history -// o Reset volumes -// o Recompute transforms and/or solids of replicated/parameterised vols void SetupHierarchy(); -private: + // Renavigate & reset hierarchy described by current history + // o Reset volumes + // o Recompute transforms and/or solids of replicated/parameterised + // volumes. -// -// BEGIN State information -// + private: + + // + // BEGIN State information + // -// Position of the last located point relative to its containing volume G4ThreeVector fLastLocatedPointLocal; - -// Set true if last Step was limited by geometry. - G4bool fWasLimitedByGeometry; - G4bool fEntering,fExiting; + // Position of the last located point relative to its containing volume. -// Entering/Exiting volumes blocking/setup -// o If exiting -// volume ptr & replica number (set & used by Locate..()) -// used for blocking on redescent of geometry -// o If entering -// volume ptr & replica number (set by ComputeStep(),used by -// Locate..()) of volume for `automatic' entry + G4bool fWasLimitedByGeometry; + // Set true if last Step was limited by geometry. + G4bool fEntering,fExiting; + // Entering/Exiting volumes blocking/setup + // o If exiting + // volume ptr & replica number (set & used by Locate..()) + // used for blocking on redescent of geometry + // o If entering + // volume ptr & replica number (set by ComputeStep(),used by + // Locate..()) of volume for `automatic' entry G4VPhysicalVolume *fBlockedPhysicalVolume; G4int fBlockedReplicaNo; + G4VPhysicalVolume *fCandidatePhysicalVolume; + G4int fCandidateReplicaNo; + G4bool fEnteredDaughter; // A memory of whether in this Step a daughter // volume is entered (set in Compute & Locate) // After Compute: it expects to enter a daughter @@ -376,32 +336,36 @@ private: // Used in ComputeStep to ensure that // origin of current Step is in the same // volume as the point of the last relocation. -// -// END State information -// + // + // END State information + // -// -// BEGIN Tracking Invariants -// + // + // BEGIN Tracking Invariants + // -// A link to the topmost physical volume in the detector. -// Must be positioned at the origin and unrotated. G4VPhysicalVolume *fTopPhysical; -// -// END Tracking Invariants -// + // A link to the topmost physical volume in the detector. + // Must be positioned at the origin and unrotated. -// -// BEGIN Utility information -// - G4int fVerbose; // Verbose(ness) level (if > 0, printout can occur) -// -// END Utility Invariants -// + // + // END Tracking Invariants + // -// -// Helpers/Utility classes -// + // + // BEGIN Utility information + // + + G4int fVerbose; + // Verbose(ness) level [if > 0, printout can occur]. + + // + // END Utility Invariants + // + + // + // Helpers/Utility classes + // G4NormalNavigation fnormalNav; G4VoxelNavigation fvoxelNav; G4ParameterisedNavigation fparamNav; @@ -411,9 +375,3 @@ private: #include "G4Navigator.icc" #endif - - - - - - diff --git a/source/geometry/volumes/include/G4Navigator.icc b/source/geometry/volumes/include/G4Navigator.icc index 5c04817880..67bcb3254a 100644 --- a/source/geometry/volumes/include/G4Navigator.icc +++ b/source/geometry/volumes/include/G4Navigator.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Navigator.icc,v 1.2 1999/12/15 14:50:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4Navigator Inline implementation diff --git a/source/geometry/volumes/include/G4NormalNavigation.hh b/source/geometry/volumes/include/G4NormalNavigation.hh index a9c1a24633..e5856bc9af 100644 --- a/source/geometry/volumes/include/G4NormalNavigation.hh +++ b/source/geometry/volumes/include/G4NormalNavigation.hh @@ -5,12 +5,19 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4NormalNavigation.hh,v 1.2 1999/12/15 14:50:23 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4NormalNavigation.hh,v 1.3 2000/04/25 16:15:03 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// class G4NormalNavigation: Utility for navigation in volumes -// containing only G4PVPlacement daughter volumes. Paul Kent Aug 96 +// class G4NormalNavigation +// +// Class description: +// +// Utility for navigation in volumes containing only G4PVPlacement +// daughter volumes. + +// History: +// - Created. Paul Kent, Aug 96 #ifndef G4NORMALNAVIGATION_HH #define G4NORMALNAVIGATION_HH @@ -25,37 +32,37 @@ class G4NormalNavigation { -public: + public: // with description -// Search positioned volumes in mother at current top level of history for -// volume containing globalPoint. Do not test the blocked volume. If a -// containing volume is found, `stack' the new volume and return true, -// else return false (the point lying in the mother but not any of the -// daughters). localPoint = global point in local system on entry, -// point in new system on exit. - G4bool LevelLocate(G4NavigationHistory &history, - const G4VPhysicalVolume *blockedVol, - const G4int blockedNum, - const G4ThreeVector &globalPoint, - const G4ThreeVector* globalDirection, - const G4bool pLocatedOnEdge, - G4ThreeVector &localPoint); + G4bool LevelLocate(G4NavigationHistory &history, + const G4VPhysicalVolume *blockedVol, + const G4int blockedNum, + const G4ThreeVector &globalPoint, + const G4ThreeVector* globalDirection, + const G4bool pLocatedOnEdge, + G4ThreeVector &localPoint); + // Search positioned volumes in mother at current top level of history + // for volume containing globalPoint. Do not test the blocked volume. + // If a containing volume is found, `stack' the new volume and return + // true, else return false (the point lying in the mother but not any + // of the daughters). localPoint = global point in local system on entry, + // point in new system on exit. - G4double ComputeStep(const G4ThreeVector &localPoint, - const G4ThreeVector &localDirection, - const G4double currentProposedStepLength, - G4double &newSafety, - G4NavigationHistory &history, - G4bool &validExitNormal, - G4ThreeVector &exitNormal, - G4bool &exiting, - G4bool &entering, - G4VPhysicalVolume *(*pBlockedPhysical), - G4int &blockedReplicaNo); + G4double ComputeStep(const G4ThreeVector &localPoint, + const G4ThreeVector &localDirection, + const G4double currentProposedStepLength, + G4double &newSafety, + G4NavigationHistory &history, + G4bool &validExitNormal, + G4ThreeVector &exitNormal, + G4bool &exiting, + G4bool &entering, + G4VPhysicalVolume *(*pBlockedPhysical), + G4int &blockedReplicaNo); - G4double ComputeSafety(const G4ThreeVector &globalpoint, - const G4NavigationHistory &history, - const G4double pMaxLength=DBL_MAX ); + G4double ComputeSafety(const G4ThreeVector &globalpoint, + const G4NavigationHistory &history, + const G4double pMaxLength=DBL_MAX ); }; #include "G4AuxiliaryNavServices.hh" // Needed for inline methods diff --git a/source/geometry/volumes/include/G4NormalNavigation.icc b/source/geometry/volumes/include/G4NormalNavigation.icc index de3b10be72..160ca7fd2b 100644 --- a/source/geometry/volumes/include/G4NormalNavigation.icc +++ b/source/geometry/volumes/include/G4NormalNavigation.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4NormalNavigation.icc,v 1.2 1999/12/15 14:50:23 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // G4NormalNavigation Inline Implementation diff --git a/source/geometry/volumes/include/G4ParameterisedNavigation.hh b/source/geometry/volumes/include/G4ParameterisedNavigation.hh index 5e46faf341..1dd8703f68 100644 --- a/source/geometry/volumes/include/G4ParameterisedNavigation.hh +++ b/source/geometry/volumes/include/G4ParameterisedNavigation.hh @@ -5,14 +5,20 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ParameterisedNavigation.hh,v 1.2 1999/12/15 14:50:23 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ParameterisedNavigation.hh,v 1.3 2000/04/25 16:15:03 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// class G4ParameterisedNavigation: Utility for navigation in volumes -// containing a single G4PVParameterised volume for which voxels for -// the replicated volumes have been constructed. -// [Voxels MUST be along one axis only: NOT refined] Paul Kent Aug 96 +// class G4ParameterisedNavigation +// +// Class description: +// +// Utility for navigation in volumes containing a single G4PVParameterised +// volume for which voxels for the replicated volumes have been constructed. +// [Voxels MUST be along one axis only: NOT refined] + +// History: +// - Created. Paul Kent, Aug 96 #ifndef G4PARAMETERISEDNAVIGATION_HH #define G4PARAMETERISEDNAVIGATION_HH @@ -35,7 +41,8 @@ class G4ParameterisedNavigation { -public: + public: // with description + G4ParameterisedNavigation(); ~G4ParameterisedNavigation(); G4SmartVoxelNode* VoxelLocate(G4SmartVoxelHeader *pHead, @@ -61,22 +68,24 @@ public: G4double ComputeSafety(const G4ThreeVector &localPoint, const G4NavigationHistory &history, const G4double pProposedMaxLength=DBL_MAX ); -private: + + private: + G4double ComputeVoxelSafety(const G4ThreeVector &localPoint) const; G4bool LocateNextVoxel(const G4ThreeVector &localPoint, const G4ThreeVector& localDirection, const G4double currentStep); - G4BlockingList fBList; // Blocked volumes + G4BlockingList fBList; // Blocked volumes // // BEGIN Voxel Stack information // - EAxis fVoxelAxis; - G4int fVoxelNoSlices; - G4double fVoxelSliceWidth; - G4int fVoxelNodeNo; - G4SmartVoxelHeader *fVoxelHeader; - G4SmartVoxelNode *fVoxelNode; + EAxis fVoxelAxis; + G4int fVoxelNoSlices; + G4double fVoxelSliceWidth; + G4int fVoxelNodeNo; + G4SmartVoxelHeader *fVoxelHeader; + G4SmartVoxelNode *fVoxelNode; // // END Voxel Stack information // @@ -88,5 +97,3 @@ private: #include "G4ParameterisedNavigation.icc" #endif - - diff --git a/source/geometry/volumes/include/G4ParameterisedNavigation.icc b/source/geometry/volumes/include/G4ParameterisedNavigation.icc index 20d6d2a396..e0fb2b9374 100644 --- a/source/geometry/volumes/include/G4ParameterisedNavigation.icc +++ b/source/geometry/volumes/include/G4ParameterisedNavigation.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ParameterisedNavigation.icc,v 1.2 1999/12/15 14:50:23 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4ParameterisedNavigation Inline implementation diff --git a/source/geometry/volumes/include/G4PropagatorInField.hh b/source/geometry/volumes/include/G4PropagatorInField.hh index 9cc4d02b09..0e2f9899c0 100644 --- a/source/geometry/volumes/include/G4PropagatorInField.hh +++ b/source/geometry/volumes/include/G4PropagatorInField.hh @@ -5,30 +5,31 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PropagatorInField.hh,v 1.6 1999/12/15 14:50:23 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PropagatorInField.hh,v 1.8 2000/05/16 17:39:00 japost Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// ------------------------------------------------------------------------ -// GEANT 4 include file implementation +// class G4PropagatorInField // -// For information related to this code contact: -// CERN, IT Division (formely CN), ASD group -// ------------------------------------------------------------------------ +// Class description: // -// This class performs the navigation/propagation of a particle/track -// in a magnetic field. The field is in general non-uniform. -// For the calculation of the path, it relies on the class G4MagTr. +// This class performs the navigation/propagation of a particle/track +// in a magnetic field. The field is in general non-uniform. +// For the calculation of the path, it relies on the class G4MagTr. +// To create an object, must have an object that calculates the Curved +// paths and also must know the value of the maximum displacement allowed. // -// class G4PropagatorInField -// Methods: +// Methods: // ComputeStep(..) // CalculateStepTimeAndAccuracy(..) // LocateIntersectionPoint(..) -// + +// History: +// ------- // 25.10.96 John Apostolakis, design and implementation // 25.03.97 John Apostolakis, adaptation for G4Transportation and cleanup // ------------------------------------------------------------------------ + #ifndef G4PropagatorInField_hh #define G4PropagatorInField_hh 1 @@ -44,12 +45,10 @@ // #include "G4MagIntegratorDriver.hh" -class G4PropagatorInField { +class G4PropagatorInField +{ - public: - // To create an object, must have an object that calculates the Curved - // paths and also must know the value of the maximum displacement allowed - // + public: // with description G4PropagatorInField( G4Navigator *theNavigator, G4FieldManager *detectorFieldMgr); @@ -57,8 +56,6 @@ class G4PropagatorInField { G4PropagatorInField( G4Navigator *theNavigator ); ~G4PropagatorInField(){}; - // Compute the next geometric Step - // G4double ComputeStep(G4FieldTrack &pFieldTrack, G4double pCurrentProposedStepLength, G4double &pNewSafety, @@ -69,26 +66,22 @@ class G4PropagatorInField { G4double pCurrentProposedStepLength, G4double &pNewSafety, G4VPhysicalVolume *pPhysVol=0 ); - // Current Volume (to check) + // Compute the next geometric Step - // Return the state after the Step - // G4ThreeVector EndPosition(); G4ThreeVector EndMomentumDir(); G4bool IsParticleLooping(); + // Return the state after the Step - // The accuracy of finding an intersection - // G4double DeltaIntersection(); + // The accuracy of finding an intersection - // The accuracy of a single Step - // G4double DeltaOneStep(); + // The accuracy of a single Step - // The ratio DeltaOneStep()/h_current_step - // G4double GetEpsilonStep(); // Relative accuracy for current Step (Calc.) void SetEpsilonStep(G4double newEps); + // The ratio DeltaOneStep()/h_current_step void SetChargeMomentumMass( G4double Charge, // in e+ units G4double Momentum, // in Geant4 units @@ -97,23 +90,27 @@ class G4PropagatorInField { G4ChordFinder* GetChordFinder(); // void SetChordFinder(G4ChordFinder* newCF); // Not yet relevant - G4int SetVerboseLevel( G4int Verbose ){ return fVerboseLevel=Verbose; } - G4int Verbose(){ return fVerboseLevel; } + G4int SetVerboseLevel( G4int Verbose ); + G4int Verbose(); - // Accuracies: - G4double GetDeltaIntersection(); // for boundary intersection - G4double GetDeltaOneStep(); // for one tracking/physics step + G4double GetDeltaIntersection(); + // Accuracy for boundary intersection. + G4double GetDeltaOneStep(); + // Accuracy for one tracking/physics step. - // Sets both accuracies, - // maintaining a particular ratio Delta Interaction / OneStep ) void SetAccuraciesWithDeltaOneStep(G4double deltaOneStep); + // Sets both accuracies, maintaining a particular ratio + // for accuracties of volume Intersection and Integration (in One Step) + + void SetDeltaOneStep(G4double deltaOneStep); + // Set accuracy for integration of one step. (only) + void SetDeltaIntersection(G4double deltaIntersection); + // Set accuracy of intersection of a volume. (only) - // A maximum for the number of steps that a (looping) particle can take G4int GetMaxLoopCount(); void SetMaxLoopCount(G4int new_max); + // A maximum for the number of steps that a (looping) particle can take. - // Print Method - useful mostly for debugging this class - // void printStatus( const G4FieldTrack& StartFT, const G4FieldTrack& CurrentFT, @@ -121,48 +118,51 @@ class G4PropagatorInField { G4double safety, G4int Step, G4VPhysicalVolume* startVolume); + // Print Method - useful mostly for debugging. + + G4FieldTrack GetEndState(); + + public: // without description - // The Field Manager of the Detector - // // void SetGlobalFieldMgr( G4FieldManager *detectorFieldMgr ); - G4FieldTrack GetEndState() { return End_PointAndTangent; } + // The Field Manager of the Detector. private: - // If such an intersection exists, this function - // calculate the intersection point of the true path of the particle - // with the surface of the current volume (or of one of its daughters). - // (Should use lateral displacement as measure of convergence). - // + G4bool LocateIntersectionPoint( const G4FieldTrack& CurveStartPointTangent, // A const G4FieldTrack& CurveEndPointTangent, // B const G4ThreeVector& TrialPoint, // E G4FieldTrack& IntersectPointTangent); // Output + // If such an intersection exists, this function + // calculate the intersection point of the true path of the particle + // with the surface of the current volume (or of one of its daughters). + // (Should use lateral displacement as measure of convergence). // DATA Members // ---------------------------------------------------------------------- + private: - // The Field Manager of the whole Detector - // G4FieldManager *fDetectorFieldMgr; + // The Field Manager of the whole Detector. G4Navigator *fNavigator; // STATE information // ------------------ - G4double fEpsilonStep; // Relative accuracy for current Step (Calc.) + G4double fEpsilonStep; + // Relative accuracy for current Step (Calc.) - // End point storage: - // G4FieldTrack End_PointAndTangent; + // End point storage G4bool fParticleIsLooping; - // For debuging purposes G4int fVerboseLevel; + // For debuging purposes // Values for the required accuracies // @@ -177,16 +177,16 @@ class G4PropagatorInField { 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 fThresholdNo_ZeroSteps; // Threshold: above this - action // G4double fMidPoint_CurveLen_of_LastAttempt= -1; G4double fFull_CurveLen_of_LastAttempt; G4double fLast_ProposedStepLength; -}; // End of class G4PropagatorInField { +}; // Defines the constructor. // #include "G4PropagatorInField.icc" #endif -// End of "#ifndef G4PropagatorInField_hh" diff --git a/source/geometry/volumes/include/G4PropagatorInField.icc b/source/geometry/volumes/include/G4PropagatorInField.icc index 70450eb069..84a2d39fe4 100644 --- a/source/geometry/volumes/include/G4PropagatorInField.icc +++ b/source/geometry/volumes/include/G4PropagatorInField.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PropagatorInField.icc,v 1.6 1999/12/15 14:50:24 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PropagatorInField.icc,v 1.8 2000/05/16 17:39:25 japost Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------------------ @@ -113,3 +113,31 @@ inline void G4PropagatorInField::SetAccuraciesWithDeltaOneStep(G4double valDelta fDelta_One_Step_Value= valDeltaOneStep; fDelta_Intersection_Val = 0.4 * fDelta_One_Step_Value; } + +inline void G4PropagatorInField::SetDeltaOneStep(G4double valDeltaOneStep) +{ + fDelta_One_Step_Value= valDeltaOneStep; +} + +inline void G4PropagatorInField::SetDeltaIntersection(G4double valDeltaIntersection) +{ + fDelta_Intersection_Val = valDeltaIntersection; +} + +inline +G4int G4PropagatorInField::SetVerboseLevel( G4int Verbose ) +{ + return fVerboseLevel=Verbose; +} + +inline +G4int G4PropagatorInField::Verbose() +{ + return fVerboseLevel; +} + +inline +G4FieldTrack G4PropagatorInField::GetEndState() +{ + return End_PointAndTangent; +} diff --git a/source/geometry/volumes/include/G4ReplicaNavigation.hh b/source/geometry/volumes/include/G4ReplicaNavigation.hh index 5187e7c90e..5f7e541246 100644 --- a/source/geometry/volumes/include/G4ReplicaNavigation.hh +++ b/source/geometry/volumes/include/G4ReplicaNavigation.hh @@ -5,14 +5,20 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ReplicaNavigation.hh,v 1.2 1999/12/15 14:50:24 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ReplicaNavigation.hh,v 1.3 2000/04/25 16:15:03 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// class G4ReplicaNavigation: Utility for navigation in volumes -// containing a single G4PVParameterised volume for which voxels for -// the replicated volumes have been constructed. -// [Voxels MUST be along one axis only: NOT refined] Paul Kent Aug 96 +// class G4ReplicaNavigation +// +// Class description: +// +// Utility for navigation in volumes containing a single G4PVParameterised +// volume for which voxels for the replicated volumes have been constructed. +// [Voxels MUST be along one axis only: NOT refined] + +// History: +// - Created. Paul Kent, Aug 96 #ifndef G4REPLICANAVIGATION_HH #define G4REPLICANAVIGATION_HH @@ -37,7 +43,8 @@ class G4ReplicaNavigation { friend class G4ReplicaNavigationTester; -public: + public: // with description + G4ReplicaNavigation(); G4bool LevelLocate(G4NavigationHistory& history, const G4VPhysicalVolume *blockedVol, @@ -89,7 +96,9 @@ public: const G4int replicaNo, const G4ThreeVector &localPoint, const G4ThreeVector &localDirection) const; -private: + + private: + G4int VoxelLocate(const G4SmartVoxelHeader *pHead, const G4ThreeVector &localPoint, const G4int blocked=-1) const; @@ -110,5 +119,3 @@ private: #include "G4ReplicaNavigation.icc" #endif - - diff --git a/source/geometry/volumes/include/G4ReplicaNavigation.icc b/source/geometry/volumes/include/G4ReplicaNavigation.icc index 8202edd322..d8f6b9176f 100644 --- a/source/geometry/volumes/include/G4ReplicaNavigation.icc +++ b/source/geometry/volumes/include/G4ReplicaNavigation.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ReplicaNavigation.icc,v 1.2 1999/12/15 14:50:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4ReplicaNavigation Inline implementation diff --git a/source/geometry/volumes/include/G4TouchableHistory.hh b/source/geometry/volumes/include/G4TouchableHistory.hh index ab5b23d745..74916aa8d1 100644 --- a/source/geometry/volumes/include/G4TouchableHistory.hh +++ b/source/geometry/volumes/include/G4TouchableHistory.hh @@ -5,15 +5,19 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4TouchableHistory.hh,v 1.2 1999/12/15 14:50:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4TouchableHistory.hh,v 1.3 2000/04/25 16:15:04 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// class G4TouchableHistory Paul Kent August 1996 +// class G4TouchableHistory // -// Object representing a touchable detector element, and -// its history in the geomtrical hierarchy, including -// its net resultant local->global transform +// Class description: +// +// Object representing a touchable detector element, and its history in the +// geomtrical hierarchy, including its net resultant local->global transform. + +// History: +// - Created. Paul Kent, August 1996 #ifndef G4TOUCHABLEHISTORY_HH #define G4TOUCHABLEHISTORY_HH @@ -26,37 +30,43 @@ class G4TouchableHistory : public G4VTouchable { -public: + + public: // with description + G4TouchableHistory(const G4NavigationHistory &history); - // The default constructor produces a touchable-history of - // 'zero-depth', ie an "unphysical" and not very unusable one. - // It is for initialisation only . G4TouchableHistory(); + // The default constructor produces a touchable-history of + // 'zero-depth', ie an "unphysical" and not very unusable one. + // It is for initialisation only. ~G4TouchableHistory(); + G4VPhysicalVolume* GetVolume(G4int depth=0) const; G4VSolid* GetSolid(G4int depth=0) const; const G4ThreeVector& GetTranslation(G4int depth=0) const; const G4RotationMatrix* GetRotation(G4int depth=0) const; - // New access methods for touchables with history G4int GetReplicaNumber(G4int depth=0) const; G4int GetHistoryDepth() const; G4int MoveUpHistory( G4int num_levels = 1 ); - // void ResetLevel(); // Set the level to the top level. + // Access methods for touchables with history - // Update methods for touchables with history - virtual void UpdateYourself( G4VPhysicalVolume* pPhysVol, - const G4NavigationHistory* history=NULL); + virtual void UpdateYourself(G4VPhysicalVolume* pPhysVol, + const G4NavigationHistory* history=NULL); + // Update methods for touchables with history + + public: // without description - // Should this method be "depricated" ? - // it is used now in G4Navigator::LocateGlobalPointAndSetup - // const G4NavigationHistory* GetHistory() const; + // Should this method be "depricated" ? + // it is used now in G4Navigator::LocateGlobalPointAndSetup + + // void ResetLevel(); + // Set the level to the top level. + + private: -private: G4int CalculateHistoryIndex(G4int stackDepth) const; -private: G4RotationMatrix frot; G4ThreeVector ftlate; G4NavigationHistory fhistory; diff --git a/source/geometry/volumes/include/G4TouchableHistory.icc b/source/geometry/volumes/include/G4TouchableHistory.icc index dcd6b8e375..d866a00163 100644 --- a/source/geometry/volumes/include/G4TouchableHistory.icc +++ b/source/geometry/volumes/include/G4TouchableHistory.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4TouchableHistory.icc,v 1.3 1999/12/15 14:50:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4TouchableHistory inline implementation diff --git a/source/geometry/volumes/include/G4Transform.hh b/source/geometry/volumes/include/G4Transform.hh deleted file mode 100644 index d199a601e4..0000000000 --- a/source/geometry/volumes/include/G4Transform.hh +++ /dev/null @@ -1,266 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4Transform.hh,v 1.2 1999/12/15 14:50:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// class G4Transform -// -// A coordinate transform, consisting of a translation and a rotation. -// When applying the forwards transformations, rotation is applied first, then -// the translation. -// -// -// Member functions: -// -// G4Transform(G4RotationMatrix* pRot=0) -// Create a translform consisting of a rotation by the specified matrix. -// If NULL (the default) and indentity transform is constructed -// G4Transform(G4RotationMatrix* pRot,const G4ThreeVector& pVec) -// Create a transform consisting of a rotation by the specified matrix, then -// a translation by specified vector. The transform does not copy the -// specified matrix: ownership (hence deletion responsibility) remains with -// the caller. -// -// If the rotation is 0 (NULL ptr), no rotation is performed. -// -// G4ThreeVector& Apply(G4ThreeVector& pVec) -// Apply to the transformation to the specified vector. -// G4ThreeVector& ApplyReverse(G4ThreeVector& pVec) -// Apply to the reverse transformation to the specified vector. -// -// G4ThreeVector Transform(const G4ThreeVector& pVec) -// Compute the transformation of the specified vector. -// G4ThreeVector ReverseTransform(const G4ThreeVector& pVec) -// Compute the reverse transformation to the specified vector. -// -// G4RotationMatrix* GetRotation() -// Return ptr to rotation for the transformation (possibly null if no -// rotation) -// const G4ThreeVector& GetTranslation() const -// Return the translation component of the transformation -// G4Transform& SetTranslation(const G4ThreeVector& pVec) -// Set the translation resulting from the transform. -// Returns a self reference. -// -// [Intended so that simple modifications can be made without creating -// new transforms] -// -// G4Transform& SetRotation(G4RotationMatrix* pRot) -// Set the translation resulting from the transform. -// Returns a self reference. -// -// G4Transform& ComputeCompoundTransform(const G4Transform& t1, -// const G4Transform& t2,G4RotationMatrix* pRot) -// Compute the compound transformation resulting from the transform t1 -// followed by the transform t2. The Rotation matrix pRot is modified -// and set to the rotation resulting from the transformation. If no -// rotation results, the rotation ptr of the compounded transform is set -// to NULL. Returns self reference. -// -// If transforms are considered as 4*4 matrices computes t1 . t2 -// -// G4Transform& ComputeCompoundReverseTransform(const G4Transform& t1, -// const G4Transform& t2,G4RotationMatrix* pRot) -// Compute the compound transformation resulting from the inverse of -// transform t1 followed by the transform t2. The Rotation matrix pRot -// is modified and set to the rotation resulting from the transformation. -// If no rotation results, the rotation ptr of the compounded transform -// is set to NULL. Returns self reference. -// -// If transforms are considered as 4*4 matrices computes [t1^-1].t2 -// -// G4bool IsRotated() const -// Return true if transform involves rotation -// -// G4bool operator == (const G4Transform& t) const -// Define equality as -// 1) equal translations and equal rotation matrix *pointers* -// or -// 2) equal translation and rotation matrices (contents) -// -// Member data: -// -// G4RotationMatrix* frotation -// Pointer to the transmations rotation component -// G4ThreeVector ftranslation -// Translation component -// -// History: -// 16.07.95 P.Kent Added SetTranslation -// 13.07.95 P.Kent Initial version - -#ifndef G4TRANSFORM_HH -#define G4TRANSFORM_HH - -#include "globals.hh" -#include -#include "G4ThreeVector.hh" -#include "G4RotationMatrix.hh" - -class G4Transform -{ -public: - inline G4Transform( G4RotationMatrix* pRot=0) : - frotation(pRot) - {;} - - inline G4Transform( G4RotationMatrix* pRot, - const G4ThreeVector& pVec) : - frotation(pRot), - ftranslation(pVec) - {;} - -// inline ~G4Transform() {;} - -// Apply to specified vector - inline G4ThreeVector& Apply(G4ThreeVector& pVec) const - { - if (frotation) - { - return pVec=frotation->operator*(pVec)+ftranslation; - } - else - { - return pVec+=ftranslation; - } - } - -// Apply reverse transformation to specified vector - inline G4ThreeVector& ApplyReverse(G4ThreeVector& pVec) const - { - if (frotation) - { - return pVec=frotation->inverse()*(pVec-ftranslation); - } - else - { - return pVec-=ftranslation; - } - } - -// Compute the transform of the specified vector - inline G4ThreeVector Transform(const G4ThreeVector& pVec) const - { - if (frotation) - { - return frotation->operator*(pVec)+ftranslation; - } - else - { - return pVec+ftranslation; - } - } - -// Compute the transform of the specified vector - inline G4ThreeVector ReverseTransform(const G4ThreeVector& pVec) const - { - if (frotation) - { - return frotation->inverse()*(pVec-ftranslation); - } - else - { - return pVec-ftranslation; - } - } - - - inline G4ThreeVector ComputeLocalAxis(const G4ThreeVector& pVec) const - { - if (!frotation) - { - return pVec; - } - else - { - return (*frotation)*pVec; // UNTESTED - } - } - - inline G4RotationMatrix* GetRotation() const - { - return frotation; - } - - inline const G4ThreeVector& GetTranslation() const - { - return ftranslation; - } - - inline void SetTranslation(const G4ThreeVector& pVec) - { - ftranslation=pVec; - } - - inline void SetRotation(G4RotationMatrix* pRot) - { - frotation=pRot; - } - - inline G4Transform& ComputeCompoundTransform(const G4Transform& t1, - const G4Transform& t2, - G4RotationMatrix* pRot) - { - if (!(t1.GetRotation()&&t2.GetRotation())) - { - SetTranslation(t1.GetTranslation()+t2.GetTranslation()); - SetRotation(0); - } - else - { - pRot=pRot; // Avoid unuse warning - assert(0==1); // Unimpl 13.7.95 - } - return *this; - } - - inline G4Transform& ComputeCompoundReverseTransform(const G4Transform& t1, - const G4Transform& t2, - G4RotationMatrix* pRot) - { - if (!(t1.GetRotation()&&t2.GetRotation())) - { - SetTranslation(t2.GetTranslation()-t1.GetTranslation()); - SetRotation(0); - } - else - { - pRot=pRot; // Avoid unused warning - assert(0==1); // Unimpl 13.7.95 - } - return *this; - } - -// Return true if transform involves rotations - inline G4bool IsRotated() const - { - return (!frotation||frotation->isIdentity()) ? false : true; - } - -// Define equality as -// 1) equal rotation matrix *pointers*, and equal translations -// or -// 2) equal rotation matrices and equal translations - - inline G4bool operator == (const G4Transform& t) const - { - return ((GetTranslation()==t.GetTranslation())&& - ( (GetRotation()==t.GetRotation()) - || (*GetRotation()==*t.GetRotation()) )) ? true : false; - } - -private: - G4RotationMatrix* frotation; - G4ThreeVector ftranslation; -}; - - -#endif - - - diff --git a/source/geometry/volumes/include/G4TransportationManager.hh b/source/geometry/volumes/include/G4TransportationManager.hh index 18122beb4d..2190f7ba70 100644 --- a/source/geometry/volumes/include/G4TransportationManager.hh +++ b/source/geometry/volumes/include/G4TransportationManager.hh @@ -5,27 +5,24 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4TransportationManager.hh,v 1.3 1999/12/15 14:50:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4TransportationManager.hh,v 1.4 2000/04/25 16:15:04 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -// -// ------------------------------------------------------------ -// GEANT 4 inlude file implementation +// class G4TransportationManager // -// For information related to this code contact: -// CERN, IT Division (formely CN), ASD group -// ------------------------------------------------------------ +// Class description: // // A singleton class which stores the (volume) navigator used by -// the transportation process to do the geometrical tracking. -// It also stores a pointer to the propagator used in a (magnetic) -// field and to the field manager. -// The class instance is created before main() is called, and -// in turn creates the navigator and the rest. -// +// the transportation process to do the geometrical tracking. +// It also stores a pointer to the propagator used in a (magnetic) +// field and to the field manager. +// The class instance is created before main() is called, and +// in turn creates the navigator and the rest. + // ======================================================================= // Created: 10 March 1997, J. Apostolakis // ======================================================================= + #ifndef G4TransportationManager_hh #define G4TransportationManager_hh @@ -36,7 +33,8 @@ class G4FieldManager; class G4TransportationManager { - public: + public: // with description + static G4TransportationManager* GetTransportationManager(); G4Navigator* GetNavigatorForTracking(); @@ -50,9 +48,11 @@ class G4TransportationManager ~G4TransportationManager(); protected: + G4TransportationManager(); private: + G4Navigator* fNavigatorForTracking ; G4PropagatorInField* fPropagatorInField; G4FieldManager* fFieldManager; @@ -63,4 +63,3 @@ class G4TransportationManager #include "G4TransportationManager.icc" #endif -// end of #ifndef G4TransportationManager_hh diff --git a/source/geometry/volumes/include/G4TransportationManager.icc b/source/geometry/volumes/include/G4TransportationManager.icc index a865d08743..4969cf16dd 100644 --- a/source/geometry/volumes/include/G4TransportationManager.icc +++ b/source/geometry/volumes/include/G4TransportationManager.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4TransportationManager.icc,v 1.3 1999/12/15 14:50:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/geometry/volumes/include/G4VoxelNavigation.hh b/source/geometry/volumes/include/G4VoxelNavigation.hh index 299c1aaf61..3e8343ff38 100644 --- a/source/geometry/volumes/include/G4VoxelNavigation.hh +++ b/source/geometry/volumes/include/G4VoxelNavigation.hh @@ -5,13 +5,19 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VoxelNavigation.hh,v 1.5 1999/12/15 14:50:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VoxelNavigation.hh,v 1.6 2000/04/25 16:15:04 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -// class G4VoxelNavigation: Utility for navigation in volumes -// containing only G4PVPlacement daughter volumes for which voxels -// have been constructed. Paul Kent Aug 96 +// class G4VoxelNavigation +// +// Class description: +// +// Utility for navigation in volumes containing only G4PVPlacement +// daughter volumes for which voxels have been constructed. + +// History: +// - Created. Paul Kent, Aug 96 #ifndef G4VOXELNAVIGATION_HH #define G4VOXELNAVIGATION_HH @@ -38,7 +44,8 @@ const G4int kNavigatorVoxelStackMax = 3; class G4VoxelNavigation { -public: + public: // with description + G4VoxelNavigation(); ~G4VoxelNavigation(); G4SmartVoxelNode* VoxelLocate(G4SmartVoxelHeader *pHead, @@ -66,7 +73,8 @@ public: G4double ComputeSafety(const G4ThreeVector &globalpoint, const G4NavigationHistory &history, const G4double pMaxLength=DBL_MAX ); -private: + private: + G4double ComputeVoxelSafety(const G4ThreeVector &localPoint) const; G4bool LocateNextVoxel(const G4ThreeVector &localPoint, const G4ThreeVector& localDirection, @@ -76,34 +84,36 @@ private: G4int pDepth); G4BlockingList fBList; // Blocked volumes -// -// BEGIN Voxel Stack information -// -// Note: fVoxelDepth==0+ => fVoxelAxisStack(0+) contains axes of voxel -// fVoxelDepth==-1 -> not in voxel + // + // BEGIN Voxel Stack information + // + G4int fVoxelDepth; + // Note: fVoxelDepth==0+ => fVoxelAxisStack(0+) contains axes of voxel + // fVoxelDepth==-1 -> not in voxel -// Voxel axes G4RWTValVector fVoxelAxisStack; + // Voxel axes -// No slices per voxel at each level G4RWTValVector fVoxelNoSlicesStack; + // No slices per voxel at each level -// Width of voxels at each level G4RWTValVector fVoxelSliceWidthStack; + // Width of voxels at each level -// Node no point is inside at each level G4RWTValVector fVoxelNodeNoStack; + // Node no point is inside at each level -// Voxel headers at each level G4RWTPtrVector fVoxelHeaderStack; + // Voxel headers at each level -// Node containing last located point G4SmartVoxelNode* fVoxelNode; -// -// END Voxel Stack information -// + // Node containing last located point + + // + // END Voxel Stack information + // }; @@ -112,7 +122,3 @@ private: #include "G4VoxelNavigation.icc" #endif - - - - diff --git a/source/geometry/volumes/include/G4VoxelNavigation.icc b/source/geometry/volumes/include/G4VoxelNavigation.icc index 790e493b04..23f9c7b1b0 100644 --- a/source/geometry/volumes/include/G4VoxelNavigation.icc +++ b/source/geometry/volumes/include/G4VoxelNavigation.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VoxelNavigation.icc,v 1.2 1999/12/15 14:50:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4VoxelNavigation Inline implementation diff --git a/source/geometry/volumes/src/G4BlockingList.cc b/source/geometry/volumes/src/G4BlockingList.cc index 702ad34634..f11e381941 100644 --- a/source/geometry/volumes/src/G4BlockingList.cc +++ b/source/geometry/volumes/src/G4BlockingList.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4BlockingList.cc,v 1.2 1999/12/15 14:50:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4BlockingList Implementation diff --git a/source/geometry/volumes/src/G4GRSSolid.cc b/source/geometry/volumes/src/G4GRSSolid.cc index 8a09e96d80..1348ce770e 100644 --- a/source/geometry/volumes/src/G4GRSSolid.cc +++ b/source/geometry/volumes/src/G4GRSSolid.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4GRSSolid.cc,v 1.2 1999/12/15 14:50:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4GRSSolid Implementation diff --git a/source/geometry/volumes/src/G4GRSVolume.cc b/source/geometry/volumes/src/G4GRSVolume.cc index 243d13b8d5..0e45d3039e 100644 --- a/source/geometry/volumes/src/G4GRSVolume.cc +++ b/source/geometry/volumes/src/G4GRSVolume.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4GRSVolume.cc,v 1.2 1999/12/15 14:50:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4GRSVolume Implementation diff --git a/source/geometry/volumes/src/G4LogicalBorderSurface.cc b/source/geometry/volumes/src/G4LogicalBorderSurface.cc index 8d8b425d04..719a917515 100644 --- a/source/geometry/volumes/src/G4LogicalBorderSurface.cc +++ b/source/geometry/volumes/src/G4LogicalBorderSurface.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LogicalBorderSurface.cc,v 1.2 1999/12/15 14:50:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LogicalBorderSurface.cc,v 1.3 2000/04/25 16:15:05 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // //////////////////////////////////////////////////////////////////////// // G4LogicalBorderSurface Implementation @@ -80,6 +80,17 @@ G4int G4LogicalBorderSurface::operator!=(const G4LogicalBorderSurface &right) co // Methods //////////// +const G4RWTPtrOrderedVector* +G4LogicalBorderSurface::GetSurfaceTable() +{ + return &theBorderSurfaceTable; +} + +size_t G4LogicalBorderSurface::GetNumberOfBorderSurfaces() +{ + return theBorderSurfaceTable.length(); +} + G4LogicalBorderSurface* G4LogicalBorderSurface::GetSurface(const G4VPhysicalVolume* vol1, const G4VPhysicalVolume* vol2) { diff --git a/source/geometry/volumes/src/G4LogicalSkinSurface.cc b/source/geometry/volumes/src/G4LogicalSkinSurface.cc index 8750751774..4ccf615710 100644 --- a/source/geometry/volumes/src/G4LogicalSkinSurface.cc +++ b/source/geometry/volumes/src/G4LogicalSkinSurface.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LogicalSkinSurface.cc,v 1.2 1999/12/15 14:50:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LogicalSkinSurface.cc,v 1.3 2000/04/25 16:15:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // //////////////////////////////////////////////////////////////////////// // G4LogicalSkinSurface Implementation @@ -79,6 +79,11 @@ G4int G4LogicalSkinSurface::operator!=(const G4LogicalSkinSurface &right) const // Methods //////////// +size_t G4LogicalSkinSurface::GetNumberOfSkinSurfaces() +{ + return theSurfaceTable.length(); +} + G4LogicalSkinSurface* G4LogicalSkinSurface::GetSurface(const G4LogicalVolume* vol) { for (int i=0; i= kCarTolerance) ? safety : 0; } G4double G4ReplicaNavigation::DistanceToOut(const G4VPhysicalVolume *pVol, @@ -528,6 +527,7 @@ void G4ReplicaNavigation::ComputeTransformation(const G4int replicaNo, break; } } + G4double G4ReplicaNavigation::ComputeStep(const G4ThreeVector &globalPoint, const G4ThreeVector &globalDirection, const G4ThreeVector &localPoint, @@ -563,7 +563,6 @@ G4double G4ReplicaNavigation::ComputeStep(const G4ThreeVector &globalPoint, ourSafety=0; } } - exiting=false; entering=false; @@ -577,6 +576,7 @@ G4double G4ReplicaNavigation::ComputeStep(const G4ThreeVector &globalPoint, sampleSafety=DistanceToOut(history.GetTopVolume(), history.GetTopReplicaNo(), localPoint); + if (sampleSafety +template class G4Integrator { - public: + public: // with description G4Integrator(){;} - ~G4Integrator(){;} - // Simpson integration method - - template G4double - Simpson( T& typeT, F f, G4double a, G4double b, G4int n ) ; - - template G4double - Simpson( T* ptrT, F f, G4double a, G4double b, G4int n ) ; - + G4double Simpson( T& typeT, F f, G4double a, G4double b, G4int n ) ; + G4double Simpson( T* ptrT, F f, G4double a, G4double b, G4int n ) ; G4double Simpson( G4double (*f)(G4double), G4double a, G4double b, G4int n ) ; + // Simpson integration method - // Adaptive Gauss method - - template G4double - AdaptiveGauss( T& typeT, F f, G4double a, G4double b, G4double e ) ; - - template G4double - AdaptiveGauss( T* ptrT, F f, G4double a, G4double b, G4double e ) ; - + G4double AdaptiveGauss( T& typeT, F f, G4double a, G4double b, G4double e ) ; + G4double AdaptiveGauss( T* ptrT, F f, G4double a, G4double b, G4double e ) ; G4double AdaptiveGauss( G4double (*f)(G4double), G4double a, G4double b, G4double e ) ; + // Adaptive Gauss method + // Integration methods involving orthogohol polynomials + G4double Legendre( T& typeT, F f, G4double a, G4double b, G4int n) ; + G4double Legendre( T* ptrT, F f, G4double a, G4double b, G4int n) ; + G4double Legendre( G4double (*f)(G4double), G4double a, G4double b, G4int n) ; + // // Methods involving Legendre polynomials - - template - G4double Legendre( T& typeT, F f, G4double a, G4double b, G4int n) ; - - template - G4double Legendre( T* ptrT, F f, G4double a, G4double b, G4int n) ; - - G4double Legendre( G4double (*f)(G4double), G4double a, G4double b, G4int n) ; - - // Legendre10 is very fast and accurate anough - - template G4double Legendre10( T& typeT, F f,G4double a, G4double b) ; - - template G4double Legendre10( T* ptrT, F f,G4double a, G4double b) ; - G4double Legendre10( G4double (*f)(G4double), G4double a, G4double b) ; + // + // Legendre10 is very fast and accurate enough + G4double Legendre96( T& typeT, F f,G4double a, G4double b) ; + G4double Legendre96( T* ptrT, F f,G4double a, G4double b) ; + G4double Legendre96( G4double (*f)(G4double), G4double a, G4double b) ; + // // Legendre96 is very accurate and fast enough - template - G4double Legendre96( T& typeT, F f,G4double a, G4double b) ; - - template - G4double Legendre96( T* ptrT, F f,G4double a, G4double b) ; - - G4double Legendre96( G4double (*f)(G4double), G4double a, G4double b) ; - + G4double Chebyshev( T& typeT, F f, G4double a, G4double b, G4int n) ; + G4double Chebyshev( T* ptrT, F f, G4double a, G4double b, G4int n) ; + G4double Chebyshev( G4double (*f)(G4double), G4double a, G4double b, G4int n) ; + // // Methods involving Chebyshev polynomials - template - G4double Chebyshev( T& typeT, F f, G4double a, G4double b, G4int n) ; - - template - G4double Chebyshev( T* ptrT, F f, G4double a, G4double b, G4int n) ; - - G4double Chebyshev( G4double (*f)(G4double), G4double a, G4double b, G4int n) ; - + G4double Laguerre( T& typeT, F f, G4double alpha, G4int n) ; + G4double Laguerre( T* ptrT, F f, G4double alpha, G4int n) ; + G4double Laguerre( G4double (*f)(G4double), G4double alpha, G4int n) ; + // // Method involving Laguerre polynomials - template - G4double Laguerre( T& typeT, F f, G4double alpha, G4int n) ; - - template - G4double Laguerre( T* ptrT, F f, G4double alpha, G4int n) ; - - G4double Laguerre( G4double (*f)(G4double), G4double alpha, G4int n) ; - + G4double Hermite( T& typeT, F f, G4int n) ; + G4double Hermite( T* ptrT, F f, G4int n) ; + G4double Hermite( G4double (*f)(G4double), G4int n) ; + // // Method involving Hermite polynomials - template - G4double Hermite( T& typeT, F f, G4int n) ; - - template - G4double Hermite( T* ptrT, F f, G4int n) ; - - G4double Hermite( G4double (*f)(G4double), G4int n) ; - - // Method involving Jacobi polynomials - - template G4double Jacobi( T& typeT, F f, G4double alpha, G4double beta, G4int n) ; - - template G4double Jacobi( T* ptrT, F f, G4double alpha, G4double beta, G4int n) ; - G4double Jacobi( G4double (*f)(G4double), G4double alpha, G4double beta, G4int n) ; + // Method involving Jacobi polynomials protected: // Auxiliary function for adaptive Gauss method - template G4double - Gauss( T& typeT, F f, G4double a, G4double b ) ; - - template G4double - Gauss( T* ptrT, F f, G4double a, G4double b ) ; - + G4double Gauss( T& typeT, F f, G4double a, G4double b ) ; + G4double Gauss( T* ptrT, F f, G4double a, G4double b ) ; G4double Gauss( G4double (*f)(G4double), G4double a, G4double b) ; - // - - template void - AdaptGauss( T& typeT, F f, G4double a, G4double b, - G4double e, G4double& sum, G4int& n) ; - - template void - AdaptGauss( T* typeT, F f, G4double a, G4double b, - G4double e, G4double& sum, G4int& n ) ; - + void AdaptGauss( T& typeT, F f, G4double a, G4double b, + G4double e, G4double& sum, G4int& n) ; + void AdaptGauss( T* typeT, F f, G4double a, G4double b, + G4double e, G4double& sum, G4int& n ) ; void AdaptGauss( G4double (*f)(G4double), G4double a, G4double b, G4double e, G4double& sum, G4int& n ) ; diff --git a/source/global/HEPNumerics/include/G4Integrator.icc b/source/global/HEPNumerics/include/G4Integrator.icc index 09763556fd..c0365e83b0 100644 --- a/source/global/HEPNumerics/include/G4Integrator.icc +++ b/source/global/HEPNumerics/include/G4Integrator.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Integrator.icc,v 1.4 1999/11/23 14:59:59 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Integrator.icc,v 1.6 2000/06/15 17:31:23 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // Implementation of G4Integrator methods. // @@ -21,11 +21,11 @@ // Integration of class member functions T::f by Simpson method. template -G4double G4Integrator::Simpson( T& typeT, - F f, - G4double xInitial, - G4double xFinal, - G4int iterationNumber ) +G4double G4Integrator::Simpson( T& typeT, + F f, + G4double xInitial, + G4double xFinal, + G4int iterationNumber ) { G4int i ; G4double step = (xFinal - xInitial)/iterationNumber ; @@ -52,7 +52,7 @@ G4double G4Integrator::Simpson( T& typeT, // Convenient to use with 'this' pointer template -G4double G4Integrator::Simpson( T* ptrT, +G4double G4Integrator::Simpson( T* ptrT, F f, G4double xInitial, G4double xFinal, @@ -83,7 +83,8 @@ G4double G4Integrator::Simpson( T* ptrT, // Convenient to use, when function f is defined in global scope, i.e. in main() // program -G4double G4Integrator::Simpson( G4double (*f)(G4double), +template +G4double G4Integrator::Simpson( G4double (*f)(G4double), G4double xInitial, G4double xFinal, G4int iterationNumber ) @@ -116,7 +117,7 @@ G4double G4Integrator::Simpson( G4double (*f)(G4double), // template -G4double G4Integrator::Gauss( T& typeT, F f, +G4double G4Integrator::Gauss( T& typeT, F f, G4double xInitial, G4double xFinal ) { static G4double root = 1.0/sqrt(3.0) ; @@ -135,7 +136,7 @@ G4double G4Integrator::Gauss( T& typeT, F f, // template G4double -G4Integrator::Gauss( T* ptrT, F f, G4double a, G4double b ) +G4Integrator::Gauss( T* ptrT, F f, G4double a, G4double b ) { return Gauss(*ptrT,f,a,b) ; } @@ -144,7 +145,8 @@ G4Integrator::Gauss( T* ptrT, F f, G4double a, G4double b ) // // -G4double G4Integrator::Gauss( G4double (*f)(G4double), +template +G4double G4Integrator::Gauss( G4double (*f)(G4double), G4double xInitial, G4double xFinal) { static G4double root = 1.0/sqrt(3.0) ; @@ -162,14 +164,14 @@ G4double G4Integrator::Gauss( G4double (*f)(G4double), // template -void G4Integrator::AdaptGauss( T& typeT, F f, G4double xInitial, +void G4Integrator::AdaptGauss( T& typeT, F f, G4double xInitial, G4double xFinal, G4double fTolerance, G4double& sum, G4int& depth ) { if(depth > 100) { - G4cout<<"G4Integrator::AdaptGauss: WARNING !!!"<::AdaptGauss: WARNING !!!"< -void G4Integrator::AdaptGauss( T* ptrT, F f, G4double xInitial, +void G4Integrator::AdaptGauss( T* ptrT, F f, G4double xInitial, G4double xFinal, G4double fTolerance, G4double& sum, G4int& depth ) { - return AdaptGauss(*ptrT,f,xInitial,xFinal,fTolerance,sum,depth) ; + AdaptGauss(*ptrT,f,xInitial,xFinal,fTolerance,sum,depth) ; } ///////////////////////////////////////////////////////////////////////// // // - -void G4Integrator::AdaptGauss( G4double (*f)(G4double), +template +void G4Integrator::AdaptGauss( G4double (*f)(G4double), G4double xInitial, G4double xFinal, G4double fTolerance, G4double& sum, G4int& depth ) @@ -242,7 +244,7 @@ void G4Integrator::AdaptGauss( G4double (*f)(G4double), // Convenient for using with class object typeT template G4double -G4Integrator::AdaptiveGauss( T& typeT, F f, G4double xInitial, +G4Integrator::AdaptiveGauss( T& typeT, F f, G4double xInitial, G4double xFinal, G4double e ) { G4int depth = 0 ; @@ -257,7 +259,7 @@ G4Integrator::AdaptiveGauss( T& typeT, F f, G4double xInitial, // Convenient for using with 'this' pointer template G4double -G4Integrator::AdaptiveGauss( T* ptrT, F f, G4double xInitial, +G4Integrator::AdaptiveGauss( T* ptrT, F f, G4double xInitial, G4double xFinal, G4double e ) { return AdaptiveGauss(*ptrT,f,xInitial,xFinal,e) ; @@ -268,8 +270,8 @@ G4Integrator::AdaptiveGauss( T* ptrT, F f, G4double xInitial, // Adaptive Gauss integration with accuracy 'e' // Convenient for using with global scope function f -G4double -G4Integrator::AdaptiveGauss( G4double (*f)(G4double), +template G4double +G4Integrator::AdaptiveGauss( G4double (*f)(G4double), G4double xInitial, G4double xFinal, G4double e ) { G4int depth = 0 ; @@ -301,7 +303,7 @@ G4Integrator::AdaptiveGauss( G4double (*f)(G4double), // Convenient for using with some class object dataT template G4double -G4Integrator::Legendre( T& typeT, F f, G4double a, G4double b, G4int nLegendre) +G4Integrator::Legendre( T& typeT, F f, G4double a, G4double b, G4int nLegendre) { G4double newton, newton1, temp1, temp2, temp3, temp ; G4double xDiff, xMean, dx, integral ; @@ -312,7 +314,7 @@ G4Integrator::Legendre( T& typeT, F f, G4double a, G4double b, G4int nLegendre) if(2*fNumber != k) { - G4Exception("Invalid (odd) n Legendre in G4Integrator::Legendre") ; + G4Exception("Invalid (odd) n Legendre in G4Integrator::Legendre") ; } G4double* fAbscissa = new G4double[fNumber] ; @@ -362,7 +364,7 @@ G4Integrator::Legendre( T& typeT, F f, G4double a, G4double b, G4int nLegendre) // Convenient for using with the pointer 'this' template G4double -G4Integrator::Legendre( T* ptrT, F f, G4double a, G4double b, G4int nLegendre) +G4Integrator::Legendre( T* ptrT, F f, G4double a, G4double b, G4int nLegendre) { return Legendre(*ptrT,f,a,b,nLegendre) ; } @@ -371,8 +373,8 @@ G4Integrator::Legendre( T* ptrT, F f, G4double a, G4double b, G4int nLegendre) // // Convenient for using with global scope function f - -G4double G4Integrator:: +template +G4double G4Integrator:: Legendre( G4double (*f)(G4double), G4double a, G4double b, G4int nLegendre) { G4double newton, newton1, temp1, temp2, temp3, temp ; @@ -384,7 +386,7 @@ Legendre( G4double (*f)(G4double), G4double a, G4double b, G4int nLegendre) if(2*fNumber != k) { - G4Exception("Invalid (odd) n Legendre in G4Integrator::Legendre") ; + G4Exception("Invalid (odd) n Legendre in G4Integrator::Legendre") ; } G4double* fAbscissa = new G4double[fNumber] ; @@ -438,7 +440,7 @@ Legendre( G4double (*f)(G4double), G4double a, G4double b, G4int nLegendre) // Convenient for using with class object typeT template - G4double G4Integrator::Legendre10( T& typeT, F f,G4double a, G4double b) + G4double G4Integrator::Legendre10( T& typeT, F f,G4double a, G4double b) { G4int i ; G4double xDiff, xMean, dx, integral ; @@ -468,7 +470,7 @@ Legendre( G4double (*f)(G4double), G4double a, G4double b, G4int nLegendre) // Convenient for using with the pointer 'this' template -G4double G4Integrator::Legendre10( T* ptrT, F f,G4double a, G4double b) +G4double G4Integrator::Legendre10( T* ptrT, F f,G4double a, G4double b) { return Legendre10(*ptrT,f,a,b) ; } @@ -477,8 +479,8 @@ G4double G4Integrator::Legendre10( T* ptrT, F f,G4double a, G4double b) // // Convenient for using with global scope functions -G4double -G4Integrator::Legendre10( G4double (*f)(G4double), G4double a, G4double b) +template G4double +G4Integrator::Legendre10( G4double (*f)(G4double), G4double a, G4double b) { G4int i ; G4double xDiff, xMean, dx, integral ; @@ -513,7 +515,7 @@ G4Integrator::Legendre10( G4double (*f)(G4double), G4double a, G4double b) // Convenient for using with some class object typeT template -G4double G4Integrator::Legendre96( T& typeT, F f,G4double a, G4double b) +G4double G4Integrator::Legendre96( T& typeT, F f,G4double a, G4double b) { G4int i ; G4double xDiff, xMean, dx, integral ; @@ -605,7 +607,7 @@ G4double G4Integrator::Legendre96( T& typeT, F f,G4double a, G4double b) // Convenient for using with the pointer 'this' template -G4double G4Integrator::Legendre96( T* ptrT, F f,G4double a, G4double b) +G4double G4Integrator::Legendre96( T* ptrT, F f,G4double a, G4double b) { return Legendre96(*ptrT,f,a,b) ; } @@ -614,8 +616,8 @@ G4double G4Integrator::Legendre96( T* ptrT, F f,G4double a, G4double b) // // Convenient for using with global scope function f -G4double -G4Integrator::Legendre96( G4double (*f)(G4double), G4double a, G4double b) +template G4double +G4Integrator::Legendre96( G4double (*f)(G4double), G4double a, G4double b) { G4int i ; G4double xDiff, xMean, dx, integral ; @@ -713,7 +715,7 @@ G4Integrator::Legendre96( G4double (*f)(G4double), G4double a, G4double b) // Convenient for using with class object typeT template G4double -G4Integrator::Chebyshev( T& typeT, F f, G4double a, +G4Integrator::Chebyshev( T& typeT, F f, G4double a, G4double b, G4int nChebyshev ) { G4int i ; @@ -746,7 +748,7 @@ G4Integrator::Chebyshev( T& typeT, F f, G4double a, // Convenient for using with 'this' pointer template G4double -G4Integrator::Chebyshev( T* ptrT, F f, G4double a, G4double b, G4int n) +G4Integrator::Chebyshev( T* ptrT, F f, G4double a, G4double b, G4int n) { return Chebyshev(*ptrT,f,a,b,n) ; } @@ -755,8 +757,8 @@ G4Integrator::Chebyshev( T* ptrT, F f, G4double a, G4double b, G4int n) // // For use with global scope functions f -G4double -G4Integrator::Chebyshev( G4double (*f)(G4double), +template G4double +G4Integrator::Chebyshev( G4double (*f)(G4double), G4double a, G4double b, G4int nChebyshev) { G4int i ; @@ -798,7 +800,7 @@ G4Integrator::Chebyshev( G4double (*f)(G4double), // (T::f) template G4double -G4Integrator::Laguerre( T& typeT, F f, G4double alpha, G4int nLaguerre ) +G4Integrator::Laguerre( T& typeT, F f, G4double alpha, G4int nLaguerre ) { const G4double tolerance = 1.0e-10 ; const G4int maxNumber = 12 ; @@ -872,7 +874,7 @@ newton += ((1.0+2.55*cofi)/(1.9*cofi) + 1.26*cofi*alpha/(1.0+3.5*cofi))* // template G4double -G4Integrator::Laguerre( T* ptrT, F f, G4double alpha, G4int nLaguerre ) +G4Integrator::Laguerre( T* ptrT, F f, G4double alpha, G4int nLaguerre ) { return Laguerre(*ptrT,f,alpha,nLaguerre) ; } @@ -881,8 +883,8 @@ G4Integrator::Laguerre( T* ptrT, F f, G4double alpha, G4int nLaguerre ) // // For use with global scope functions f -G4double -G4Integrator::Laguerre( G4double (*f)(G4double), +template G4double +G4Integrator::Laguerre( G4double (*f)(G4double), G4double alpha, G4int nLaguerre) { const G4double tolerance = 1.0e-10 ; @@ -958,7 +960,8 @@ newton += ((1.0+2.55*cofi)/(1.9*cofi) + 1.26*cofi*alpha/(1.0+3.5*cofi))* // (Adapted from Numerical Recipes in C) // -G4double G4Integrator::GammaLogarithm(G4double xx) +template +G4double G4Integrator::GammaLogarithm(G4double xx) { static G4double cof[6] = { 76.18009172947146, -86.50532032941677, 24.01409824083091, -1.231739572450155, @@ -989,7 +992,7 @@ G4double G4Integrator::GammaLogarithm(G4double xx) // template -G4double G4Integrator::Hermite( T& typeT, F f, G4int nHermite) +G4double G4Integrator::Hermite( T& typeT, F f, G4int nHermite) { const G4double tolerance = 1.0e-12 ; const G4int maxNumber = 12 ; @@ -1050,7 +1053,7 @@ G4double G4Integrator::Hermite( T& typeT, F f, G4int nHermite) } if(k > maxNumber) { - G4Exception("Too many (>12) iterations in G4Integrator::Hermite") ; + G4Exception("Too many (>12) iterations in G4Integrator::Hermite") ; } fAbscissa[i-1] = newton ; fWeight[i-1] = 2.0/(temp*temp) ; @@ -1072,7 +1075,7 @@ G4double G4Integrator::Hermite( T& typeT, F f, G4int nHermite) // For use with 'this' pointer template -G4double G4Integrator::Hermite( T* ptrT, F f, G4int n) +G4double G4Integrator::Hermite( T* ptrT, F f, G4int n) { return Hermite(*ptrT,f,n) ; } @@ -1081,7 +1084,8 @@ G4double G4Integrator::Hermite( T* ptrT, F f, G4int n) // // For use with global scope f -G4double G4Integrator::Hermite( G4double (*f)(G4double), G4int nHermite) +template +G4double G4Integrator::Hermite( G4double (*f)(G4double), G4int nHermite) { const G4double tolerance = 1.0e-12 ; const G4int maxNumber = 12 ; @@ -1142,7 +1146,7 @@ G4double G4Integrator::Hermite( G4double (*f)(G4double), G4int nHermite) } if(k > maxNumber) { - G4Exception("Too many (>12) iterations in G4Integrator::Hermite") ; + G4Exception("Too many (>12) iterations in G4Integrator::Hermite") ; } fAbscissa[i-1] = newton ; fWeight[i-1] = 2.0/(temp*temp) ; @@ -1168,7 +1172,7 @@ G4double G4Integrator::Hermite( G4double (*f)(G4double), G4int nHermite) // template -G4double G4Integrator::Jacobi( T& typeT, F f, G4double alpha, +G4double G4Integrator::Jacobi( T& typeT, F f, G4double alpha, G4double beta, G4int nJacobi) { const G4double tolerance = 1.0e-12 ; @@ -1254,7 +1258,7 @@ G4double G4Integrator::Jacobi( T& typeT, F f, G4double alpha, } if (k > maxNumber) { - G4Exception("Too many iterations (>12) in G4Integrator::Jacobi") ; + G4Exception("Too many iterations (>12) in G4Integrator::Jacobi") ; } fAbscissa[i-1] = root ; fWeight[i-1] = exp(GammaLogarithm((G4double)(alpha+nJacobi)) + @@ -1280,7 +1284,7 @@ G4double G4Integrator::Jacobi( T& typeT, F f, G4double alpha, // For use with 'this' pointer template -G4double G4Integrator::Jacobi( T* ptrT, F f, G4double alpha, +G4double G4Integrator::Jacobi( T* ptrT, F f, G4double alpha, G4double beta, G4int n) { return Jacobi(*ptrT,f,alpha,beta,n) ; @@ -1290,7 +1294,8 @@ G4double G4Integrator::Jacobi( T* ptrT, F f, G4double alpha, // // For use with global scope f -G4double G4Integrator::Jacobi( G4double (*f)(G4double), G4double alpha, +template +G4double G4Integrator::Jacobi( G4double (*f)(G4double), G4double alpha, G4double beta, G4int nJacobi) { const G4double tolerance = 1.0e-12 ; @@ -1376,7 +1381,7 @@ G4double G4Integrator::Jacobi( G4double (*f)(G4double), G4double alpha, } if (k > maxNumber) { - G4Exception("Too many iterations (>12) in G4Integrator::Jacobi") ; + G4Exception("Too many iterations (>12) in G4Integrator::Jacobi") ; } fAbscissa[i-1] = root ; fWeight[i-1] = exp(GammaLogarithm((G4double)(alpha+nJacobi)) + diff --git a/source/global/HEPNumerics/include/G4SimpleIntegration.hh b/source/global/HEPNumerics/include/G4SimpleIntegration.hh index aaf31923ed..291189f080 100644 --- a/source/global/HEPNumerics/include/G4SimpleIntegration.hh +++ b/source/global/HEPNumerics/include/G4SimpleIntegration.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4SimpleIntegration.hh,v 1.2 1999/11/16 17:30:59 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // Class description: // diff --git a/source/global/HEPNumerics/include/G4VGaussianQuadrature.hh b/source/global/HEPNumerics/include/G4VGaussianQuadrature.hh index 48a3369b34..432445d227 100644 --- a/source/global/HEPNumerics/include/G4VGaussianQuadrature.hh +++ b/source/global/HEPNumerics/include/G4VGaussianQuadrature.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VGaussianQuadrature.hh,v 1.2 1999/11/16 17:30:59 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // Class description: // diff --git a/source/global/HEPNumerics/src/G4ChebyshevApproximation.cc b/source/global/HEPNumerics/src/G4ChebyshevApproximation.cc index 113777ec25..104712b223 100644 --- a/source/global/HEPNumerics/src/G4ChebyshevApproximation.cc +++ b/source/global/HEPNumerics/src/G4ChebyshevApproximation.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ChebyshevApproximation.cc,v 1.2 1999/11/16 17:31:09 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4ChebyshevApproximation.hh" diff --git a/source/global/HEPNumerics/src/G4DataInterpolation.cc b/source/global/HEPNumerics/src/G4DataInterpolation.cc index 482a7314f0..01d6f285b6 100644 --- a/source/global/HEPNumerics/src/G4DataInterpolation.cc +++ b/source/global/HEPNumerics/src/G4DataInterpolation.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4DataInterpolation.cc,v 1.3 1999/11/16 17:31:09 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4DataInterpolation.hh" diff --git a/source/global/HEPNumerics/src/G4GaussChebyshevQ.cc b/source/global/HEPNumerics/src/G4GaussChebyshevQ.cc index f5195cdd29..331e99bcec 100644 --- a/source/global/HEPNumerics/src/G4GaussChebyshevQ.cc +++ b/source/global/HEPNumerics/src/G4GaussChebyshevQ.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4GaussChebyshevQ.cc,v 1.2 1999/11/16 17:31:09 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4GaussChebyshevQ.hh" diff --git a/source/global/HEPNumerics/src/G4GaussHermiteQ.cc b/source/global/HEPNumerics/src/G4GaussHermiteQ.cc index 66d2940931..d008648a64 100644 --- a/source/global/HEPNumerics/src/G4GaussHermiteQ.cc +++ b/source/global/HEPNumerics/src/G4GaussHermiteQ.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4GaussHermiteQ.cc,v 1.2 1999/11/16 17:31:10 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4GaussHermiteQ.hh" diff --git a/source/global/HEPNumerics/src/G4GaussJacobiQ.cc b/source/global/HEPNumerics/src/G4GaussJacobiQ.cc index 1ef1a654d3..b63a6c115e 100644 --- a/source/global/HEPNumerics/src/G4GaussJacobiQ.cc +++ b/source/global/HEPNumerics/src/G4GaussJacobiQ.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4GaussJacobiQ.cc,v 1.2 1999/11/16 17:31:10 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4GaussJacobiQ.hh" diff --git a/source/global/HEPNumerics/src/G4GaussLaguerreQ.cc b/source/global/HEPNumerics/src/G4GaussLaguerreQ.cc index fae263cc7f..80c5590d12 100644 --- a/source/global/HEPNumerics/src/G4GaussLaguerreQ.cc +++ b/source/global/HEPNumerics/src/G4GaussLaguerreQ.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4GaussLaguerreQ.cc,v 1.2 1999/11/16 17:31:10 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4GaussLaguerreQ.hh" diff --git a/source/global/HEPNumerics/src/G4GaussLegendreQ.cc b/source/global/HEPNumerics/src/G4GaussLegendreQ.cc index 8e4df297d5..693e2935c4 100644 --- a/source/global/HEPNumerics/src/G4GaussLegendreQ.cc +++ b/source/global/HEPNumerics/src/G4GaussLegendreQ.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4GaussLegendreQ.cc,v 1.2 1999/11/16 17:31:10 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4GaussLegendreQ.hh" diff --git a/source/global/HEPNumerics/src/G4SimpleIntegration.cc b/source/global/HEPNumerics/src/G4SimpleIntegration.cc index 8a7c19bb21..8cab4b787a 100644 --- a/source/global/HEPNumerics/src/G4SimpleIntegration.cc +++ b/source/global/HEPNumerics/src/G4SimpleIntegration.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4SimpleIntegration.cc,v 1.2 1999/11/16 17:31:11 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // Implementation file for simple integration methods // diff --git a/source/global/HEPNumerics/src/G4VGaussianQuadrature.cc b/source/global/HEPNumerics/src/G4VGaussianQuadrature.cc index ddc75c1374..bdc748568e 100644 --- a/source/global/HEPNumerics/src/G4VGaussianQuadrature.cc +++ b/source/global/HEPNumerics/src/G4VGaussianQuadrature.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VGaussianQuadrature.cc,v 1.2 1999/11/16 17:31:11 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 ed1ff55fe5..53fd52d15a 100644 --- a/source/global/HEPRandom/include/G4Poisson.hh +++ b/source/global/HEPRandom/include/G4Poisson.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Poisson.hh,v 1.5 2000/01/06 14:13:08 maire Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/global/HEPRandom/include/Randomize.hh b/source/global/HEPRandom/include/Randomize.hh index b5f93a52a4..8880544a79 100644 --- a/source/global/HEPRandom/include/Randomize.hh +++ b/source/global/HEPRandom/include/Randomize.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: Randomize.hh,v 1.2 1999/11/16 17:31:35 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef randomize_h #define randomize_h 1 diff --git a/source/global/HEPRandom/test/G4RandDistributionTest.cc b/source/global/HEPRandom/test/G4RandDistributionTest.cc deleted file mode 100644 index b8ba0a786d..0000000000 --- a/source/global/HEPRandom/test/G4RandDistributionTest.cc +++ /dev/null @@ -1,233 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4RandDistributionTest.cc,v 1.3 1999/11/23 15:00:00 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// -// ---------------------------------------------------------------------- -#include "Randomize.hh" -#include "G4ios.hh" - -HepJamesRandom theJamesEngine; -RandEngine theRandEngine; -DRand48Engine theDRand48Engine; -RanluxEngine theRanluxEngine(19780503,4); -RanecuEngine theRanecuEngine; - -void init() -{ - char Pause; - - G4cout << G4endl << G4endl; - G4cout << "---------------------------- Random shooting test -----------------------------" << G4endl; - G4cout << " -------------------- " << G4endl; - G4cout << " >>> Random Engines available <<<" << G4endl << G4endl; - G4cout << " > HepJamesRandom (default)" << G4endl; - G4cout << " > Rand" << G4endl; - G4cout << " > DRand48" << G4endl; - G4cout << " > Ranlux" << G4endl; - G4cout << " > Ranecu" << G4endl << G4endl; - G4cout << " ----- Press to continue -----"; - if ( (Pause = G4cin.get()) != '\n') exit(0); - G4cout << G4endl; - -} // end init() - - -void layout() -{ - HepFloat m=3.0; - const HepInt size=5; - HepDouble vect[size]; - - G4cout << " Flat ]0,1[ : " << RandFlat::shoot() << G4endl; - G4cout << " Flat ]0,5[ : " << RandFlat::shoot(5) << G4endl; - G4cout << " Flat ]-5,3[ : " << RandFlat::shoot(-5,3) << G4endl; - G4cout << " Exp (m=1) : " << RandExponential::shoot() << G4endl; - G4cout << " Exp (m=3) : " << RandExponential::shoot(3) << G4endl; - G4cout << " Gauss (m=1) : " << RandGauss::shoot() << G4endl; - G4cout << " Gauss (m=3,v=1) : " << RandGauss::shoot(3,1) << G4endl; - G4cout << " Wigner(1,0.2) : " << RandBreitWigner::shoot(1,0.2) << G4endl; - G4cout << " Wigner(1,0.2,1) : " << RandBreitWigner::shoot(1,0.2,1) << G4endl; - G4cout << " Wigner2(1,0.2) : " << RandBreitWigner::shootM2(1,0.2) << G4endl; - G4cout << " Wigner2(1,0.2,1) : " << RandBreitWigner::shootM2(1,0.2,1) << G4endl; - G4cout << " IntFlat [0,99[ : " << RandFlat::shootInt(99) << G4endl; - G4cout << " IntFlat [-99,37[ : " << RandFlat::shootInt(-99,37) << G4endl; - G4cout << " Poisson (m=3.0) : " << RandPoisson::shoot(m) << G4endl; - G4cout << G4endl; - G4cout << " Shooting an array of 5 flat numbers ..." << G4endl << G4endl; - RandFlat::shootArray(size,vect); - for ( HepInt i=0; i to continue -----"; - if ( (Pause = G4cin.get()) != '\n') exit(0); - G4cout << "-------------------- Shooting test on distribution objects --------------------" << G4endl; - G4cout << G4endl; - G4cout << " Flat ]0,1[ : " << aFlatObj.fire() << G4endl; - G4cout << " Flat ]0,5[ : " << aFlatObj.fire(5) << G4endl; - G4cout << " Flat ]-5,3[ : " << aFlatObj.fire(-5,3) << G4endl; - G4cout << " Exp (m=1) : " << anExponentialObj.fire() << G4endl; - G4cout << " Exp (m=3) : " << anExponentialObj.fire(3) << G4endl; - G4cout << " Gauss (m=1) : " << aGaussObj.fire() << G4endl; - G4cout << " Gauss (m=3,v=1) : " << aGaussObj.fire(3,1) << G4endl; - G4cout << " Wigner(1,0.2) : " << aBreitObj.fire(1,0.2) << G4endl; - G4cout << " Wigner(1,0.2,1) : " << aBreitObj.fire(1,0.2,1) << G4endl; - G4cout << " Wigner2(1,0.2) : " << aBreitObj.fireM2(1,0.2) << G4endl; - G4cout << " Wigner2(1,0.2,1) : " << aBreitObj.fireM2(1,0.2,1) << G4endl; - G4cout << " IntFlat [0,99[ : " << aFlatObj.fireInt(99) << G4endl; - G4cout << " IntFlat [-99,37[ : " << aFlatObj.fireInt(-99,37) << G4endl; - G4cout << " Poisson (m=3.0) : " << aPoissonObj.fire(m) << G4endl; - G4cout << G4endl; - G4cout << " Shooting an array of 5 flat numbers ..." << G4endl << G4endl; - aFlatObj.fireArray(size,vect); - for ( HepInt i=0; i to continue -----"; - if ( (Pause = G4cin.get()) != '\n') exit(0); -} // end dist_layout() - -void user_layout() -{ - HepFloat m=3.0; - const HepInt size=5; - HepDouble vect[size]; - char sel; - HepRandomEngine* anEngine; - - G4cout << G4endl << G4endl; - G4cout << "-------------------- Shooting test skeeping the generator ---------------------" << G4endl; - G4cout << G4endl; - G4cout << " >>> Select a Random Engine <<<" << G4endl << G4endl; - G4cout << " 1. HepJamesRandom (default)" << G4endl; - G4cout << " 2. Rand" << G4endl; - G4cout << " 3. DRand48" << G4endl; - G4cout << " 4. Ranlux" << G4endl; - G4cout << " 5. Ranecu" << G4endl << G4endl; - G4cout << " > "; - G4cin >> sel; - while ((sel!='1')&&(sel!='2')&&(sel!='3')&&(sel!='4')&&(sel!='5')) { - G4cout << G4endl << " >>> Choice not legal !! [1..5]<<<" << G4endl; - G4cin >> sel; - } - - switch (sel) { - case '1': - anEngine = &theJamesEngine; - break; - case '2': - anEngine = &theRandEngine; - break; - case '3': - anEngine = &theDRand48Engine; - break; - case '4': - anEngine = &theRanluxEngine; - break; - case '5': - anEngine = &theRanecuEngine; - break; - - default: - anEngine = &theJamesEngine; - break; - } - G4cout << G4endl; - - G4cout << " Flat ]0,1[ : " << RandFlat::shoot(anEngine) << G4endl; - G4cout << " Flat ]0,5[ : " << RandFlat::shoot(anEngine,5) << G4endl; - G4cout << " Flat ]-5,3[ : " << RandFlat::shoot(anEngine,-5,3) << G4endl; - G4cout << " Exp (m=1) : " << RandExponential::shoot(anEngine) << G4endl; - G4cout << " Exp (m=3) : " << RandExponential::shoot(anEngine,3) << G4endl; - G4cout << " Gauss (m=1) : " << RandGauss::shoot(anEngine) << G4endl; - G4cout << " Gauss (m=3,v=1) : " << RandGauss::shoot(anEngine,3,1) << G4endl; - G4cout << " Wigner(1,0.2) : " << RandBreitWigner::shoot(anEngine,1,0.2) << G4endl; - G4cout << " Wigner(1,0.2,1) : " << RandBreitWigner::shoot(anEngine,1,0.2,1) << G4endl; - G4cout << " Wigner2(1,0.2) : " << RandBreitWigner::shootM2(anEngine,1,0.2) << G4endl; - G4cout << " Wigner2(1,0.2,1) : " << RandBreitWigner::shootM2(anEngine,1,0.2,1) << G4endl; - G4cout << " IntFlat [0,99[ : " << RandFlat::shootInt(anEngine,99) << G4endl; - G4cout << " IntFlat [-99,37[ : " << RandFlat::shootInt(anEngine,-99,37) << G4endl; - G4cout << " Poisson (m=3.0) : " << RandPoisson::shoot(anEngine,m) << G4endl; - G4cout << G4endl; - G4cout << " Shooting an array of 5 flat numbers ..." << G4endl << G4endl; - RandFlat::shootArray(anEngine,size,vect); - for ( HepInt i=0; i to continue -----"; - if ( (Pause = G4cin.get()) != '\n') exit(0); - G4cout << G4endl; - G4cout << "--------------------------- Test on RandEngine ------------------------------" << G4endl; - G4cout << G4endl; - HepRandom::setTheEngine(&theRandEngine); - layout(); - G4cout << " ----- Press to continue -----"; - if ( (Pause = G4cin.get()) != '\n') exit(0); - G4cout << G4endl; - G4cout << "------------------------- Test on DRand48Engine -----------------------------" << G4endl; - G4cout << G4endl; - HepRandom::setTheEngine(&theDRand48Engine); - layout(); - G4cout << " ----- Press to continue -----"; - if ( (Pause = G4cin.get()) != '\n') exit(0); - G4cout << G4endl; - G4cout << "--------------------- Test on RanluxEngine (luxury 4) ------------------------" << G4endl; - G4cout << G4endl; - HepRandom::setTheEngine(&theRanluxEngine); - layout(); - G4cout << " ----- Press to continue -----"; - if ( (Pause = G4cin.get()) != '\n') exit(0); - G4cout << G4endl; - G4cout << "-------------------------- Test on RanecuEngine ------------------------------" << G4endl; - G4cout << G4endl; - HepRandom::setTheEngine(&theRanecuEngine); - layout(); - dist_layout(); - user_layout(); -} // end start_test() - - -HepInt main() { - - init(); - start_test(); - - return 0; -} - diff --git a/source/global/HEPRandom/test/G4RandGlobalTest.cc b/source/global/HEPRandom/test/G4RandGlobalTest.cc deleted file mode 100644 index 8f135c2a3a..0000000000 --- a/source/global/HEPRandom/test/G4RandGlobalTest.cc +++ /dev/null @@ -1,282 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4RandGlobalTest.cc,v 1.3 1999/11/23 15:00:00 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// -// ---------------------------------------------------------------------- -#include "Randomize.hh" -#include "G4ios.hh" - -RandEngine theRandEngine; -DRand48Engine theDRand48Engine; -RanluxEngine theRanluxEngine(19780503,4); -RanecuEngine theRanecuEngine; - -//======================== CHI-SQUARED TEST ============================ - -HepInt box[10], chi[8], more=1; -HepInt prob[8] = { 1, 5, 25, 50, 75, 95, 99, 100 }; -HepFloat perc[8] = { 2.09, 3.33, 5.90, 8.34, 11.39, 16.92, 21.67, 100.0 }; - -void even_test(HepInt seq) -{ - HepInt i,j; - char Pause; - - for (i=0; i<8; ++i) - chi[i]=0; - - G4cout << "\t\t\t --- CHI-SQUARED TEST ---" << G4endl; - HepInt fac = HepInt(seq/100); - - G4cout << G4endl; - - for (HepInt k=0; k to continue -----"; - if ( (Pause = G4cin.get()) != '\n') exit(0); - if (more == 1) - if ( (Pause = G4cin.get()) != '\n') exit(0); - G4cout << G4endl; -} // end even_test() - -//====================== SERIAL CORRELATION TEST ======================= - -void corr_test(HepInt seq) -{ - HepInt i,j; - char Pause; - HepDouble U; - HepDouble UU; - HepDouble UV; - HepDouble corr = 0.; - HepDouble stde = 0.; - HepDouble mv = -1./999; - HepDouble std = (-mv)*sqrt(HepDouble(1000*(997)/(1001))); - HepDouble next, uni, w, mve, temp[10000]; - - G4cout << "\t\t\t--- SERIAL CORRELATION TEST ---" << G4endl << G4endl; - - for (j=0; j to continue -----"; - if ( (Pause = G4cin.get()) != '\n') exit(0); - G4cout << G4endl; - -} // end corr_test - -//=========================== SPATIAL TEST ============================= - -#define PI 3.1415926 - -static unsigned long twotoj[16] = { 0x1L,0x2L,0x4L,0x8L,0x10L,0x20L,0x40L, - 0x80L,0x100L,0x200L,0x400L,0x800L, - 0x1000L,0x2000L,0x4000L,0x8000L }; - -HepFloat fnc(HepFloat x1, HepFloat x2, HepFloat x3, HepFloat x4) -{ - return (HepFloat) sqrt(x1*x1+x2*x2+x3*x3+x4*x4); -} - -void spat_test () -{ - char Pause; - long iy[4],jpower,k; - HepInt i,j; - HepFloat x1,x2,x3,x4,yprob[4]; - - G4cout << "\t\t\t --- SPATIAL TEST ---" << G4endl - << "\tCalculates PI statistically using volume of unit n-sphere " - << "n = 2,3,4" - << G4endl << G4endl; - for (i=1; i<=3; i++) iy[i]=0; - G4cout << "\t\t\t# pts\tPI\t(4/3)PI\t(1/2)PI^2" << G4endl << G4endl; - for (j=1; j<=15; j++) { - for (k=twotoj[j-1]; k>=0; k--) { - x1 = (HepFloat) G4UniformRand(); - x2 = (HepFloat) G4UniformRand(); - x3 = (HepFloat) G4UniformRand(); - x4 = (HepFloat) G4UniformRand(); - if (fnc(x1,x2,0.,0.) < 1.) ++iy[1]; - if (fnc(x1,x2,x3,0.) < 1.) ++iy[2]; - if (fnc(x1,x2,x3,x4) < 1.) ++iy[3]; - } - jpower = twotoj[j]; - for (i=1; i<=3; i++) - yprob[i] = (HepFloat) twotoj[i+1]*iy[i]/jpower; - if ((jpower <= 32768) && (jpower != 0)) - G4cout << "\t\t\t" << jpower << "\t" << yprob[1] << "\t" - << yprob[2] << "\t" << yprob[3] << G4endl; - } - G4cout << G4endl; - G4cout << "\t\t\tactual" << "\t" << PI << "\t" - << 4.*PI/3. << "\t" << .5*PI*PI << G4endl << G4endl; - - if (more != 99) { - G4cout << " ----- Press to continue -----"; - if ( (Pause = G4cin.get()) != '\n') exit(0); - G4cout << G4endl; - } -} // end spat_test() - -//============================= GLOBAL ================================= - -void init() -{ - G4cout << G4endl << G4endl; - G4cout << "-------------------------- Random distribution test ---------------------------" << G4endl; - G4cout << " ------------------------ " << G4endl; - G4cout << " >>> Random Engines available <<< " << G4endl << G4endl; - G4cout << " > HepJamesRandom (default)" << G4endl; - G4cout << " > Rand" << G4endl; - G4cout << " > DRand48" << G4endl; - G4cout << " > Ranlux" << G4endl; - G4cout << " > Ranecu" << G4endl << G4endl; - G4cout << " >>> Tests performed <<< " << G4endl << G4endl; - G4cout << " > Even distribution test" << G4endl; - G4cout << " > Serial correlation test" << G4endl; - G4cout << " > Spatial test" << G4endl; - G4cout << G4endl << G4endl; - -} // end init() - - -void layout(HepInt seq) -{ - even_test(seq); - corr_test(seq); - spat_test(); -} // end layout() - - -void start_test() -{ - char sel; - HepInt seq; - - G4cout << " Select the number of random values sequences:" << G4endl; - G4cout << "\t a - 100 sequences of 1000 random values" << G4endl; - G4cout << "\t b - 1000 sequences of 1000 random values" << G4endl; - G4cout << "\t c - 10000 sequences of 1000 random values" << G4endl; - G4cout << " > "; - G4cin >> sel; - if ((sel!='a')&&(sel!='b')&&(sel!='c')) - exit(0); - switch (sel) { - case 'a': - seq = 100; - break; - case 'b': - seq = 1000; - break; - case 'c': - seq = 10000; - break; - default: - seq = 100; - break; - } - - G4cout << G4endl << G4endl; - G4cout << "------------------------- Test on HepJamesRandom ----------------------------" << G4endl; - G4cout << G4endl; - layout(seq); - G4cout << G4endl << G4endl; - more = 0; - G4cout << "--------------------------- Test on RandEngine ------------------------------" << G4endl; - G4cout << G4endl; - HepRandom::setTheEngine(&theRandEngine); - layout(seq); - G4cout << G4endl << G4endl; - G4cout << "------------------------- Test on DRand48Engine -----------------------------" << G4endl; - G4cout << G4endl; - HepRandom::setTheEngine(&theDRand48Engine); - layout(seq); - G4cout << G4endl << G4endl; - G4cout << "--------------------- Test on RanluxEngine (luxury 4) ------------------------" << G4endl; - G4cout << G4endl; - HepRandom::setTheEngine(&theRanluxEngine); - layout(seq); - G4cout << G4endl << G4endl; - more = 99; - G4cout << "-------------------------- Test on RanecuEngine ------------------------------" << G4endl; - G4cout << G4endl; - HepRandom::setTheEngine(&theRanecuEngine); - layout(seq); -} // end start_test() - - -HepInt main() { - - init(); - start_test(); - - return 0; -} - diff --git a/source/global/HEPRandom/test/G4ShootBitTest.cc b/source/global/HEPRandom/test/G4ShootBitTest.cc deleted file mode 100644 index 488c9da814..0000000000 --- a/source/global/HEPRandom/test/G4ShootBitTest.cc +++ /dev/null @@ -1,72 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4ShootBitTest.cc,v 1.4 1999/12/15 14:50:29 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// - -// Tests RandFlat::fireBit() member function -// Peter Urban, 5th Sep 1996 - -#include "G4ios.hh" -#include "g4std/iomanip" -#include "Randomize.hh" -#include "G4Timer.hh" - -int main() -{ - HepRandomEngine* e= HepRandom::getTheEngine(); - RandFlat r(*e); - - const long NumTest= 10000; - - G4cout << "Printed value: (relative frequency - probability)" << G4endl; - G4cout << NumTest << " random numbers" << G4endl << G4endl; - - long sum= 0; - long i, j; - - for (i=0; i G4RWTPtrOrderedVector::G4RWTPtrOrderedVector(size_t capacity) - : std_pvector(capacity,(T*)0),rwsize(0){} - + : 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){} diff --git a/source/global/STLInterface/g4rw/tpsrtvec.h b/source/global/STLInterface/g4rw/tpsrtvec.h index 2dac54e962..b382432beb 100644 --- a/source/global/STLInterface/g4rw/tpsrtvec.h +++ b/source/global/STLInterface/g4rw/tpsrtvec.h @@ -6,7 +6,7 @@ // and all its terms. // // $Id: tpsrtvec.h,v 1.8 1999/11/26 17:17:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/global/STLInterface/g4rw/tpsrtvec.icc b/source/global/STLInterface/g4rw/tpsrtvec.icc index d385337e98..b4348d1af0 100644 --- a/source/global/STLInterface/g4rw/tpsrtvec.icc +++ b/source/global/STLInterface/g4rw/tpsrtvec.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: tpsrtvec.icc,v 1.3 2000/02/01 16:55:01 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: tpsrtvec.icc,v 1.6 2000/06/26 16:25:57 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -17,12 +17,9 @@ template G4RWTPtrSortedVector::G4RWTPtrSortedVector(size_t n) - : std_pvector(n),rwsize(0) -{ - for(int i=0;i G4RWTPtrSortedVector::G4RWTPtrSortedVector(const G4RWTPtrSortedVector& v) : std_pvector(v), rwsize(v.rwsize){} @@ -171,10 +168,9 @@ T* const & G4RWTPtrSortedVector::first () const template T* const & G4RWTPtrSortedVector::last () const { - if(rwsize) - return std_pvector::operator[](rwsize-1); - else + if(!rwsize) G4RWTHROW(G4RWBoundsErr("G4RWTPtrSortedVector last()",rwsize,0)); + return std_pvector::operator[](rwsize-1); } template diff --git a/source/global/STLInterface/g4rw/tpvector.h b/source/global/STLInterface/g4rw/tpvector.h index fd1eaec377..e00c647057 100644 --- a/source/global/STLInterface/g4rw/tpvector.h +++ b/source/global/STLInterface/g4rw/tpvector.h @@ -6,7 +6,7 @@ // and all its terms. // // $Id: tpvector.h,v 1.9 2000/02/11 14:09:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/global/STLInterface/g4rw/tpvector.icc b/source/global/STLInterface/g4rw/tpvector.icc index 9ab57941cc..a220f42afd 100644 --- a/source/global/STLInterface/g4rw/tpvector.icc +++ b/source/global/STLInterface/g4rw/tpvector.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: tpvector.icc,v 1.6 2000/02/11 14:09:25 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: tpvector.icc,v 1.7 2000/03/10 15:53:24 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -21,8 +21,8 @@ G4RWTPtrVector::G4RWTPtrVector () template G4RWTPtrVector::G4RWTPtrVector (size_t n) - : std_pvector(n), rwsize(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){} diff --git a/source/global/STLInterface/g4rw/tvordvec.h b/source/global/STLInterface/g4rw/tvordvec.h index a9ee1eb87f..7bbb675224 100644 --- a/source/global/STLInterface/g4rw/tvordvec.h +++ b/source/global/STLInterface/g4rw/tvordvec.h @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: tvordvec.h,v 1.7 1999/11/26 17:17:58 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: tvordvec.h,v 1.8 2000/03/10 15:53:24 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/global/STLInterface/g4rw/tvordvec.icc b/source/global/STLInterface/g4rw/tvordvec.icc index 7ccfa52ca5..0914a23d12 100644 --- a/source/global/STLInterface/g4rw/tvordvec.icc +++ b/source/global/STLInterface/g4rw/tvordvec.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: tvordvec.icc,v 1.2 2000/02/01 16:55:02 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: tvordvec.icc,v 1.5 2000/06/26 16:25:57 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -17,8 +17,9 @@ template G4RWTValOrderedVector::G4RWTValOrderedVector(size_t capacity) - : std_vector(capacity),rwsize(0){} - + : 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){} @@ -128,10 +129,9 @@ T G4RWTValOrderedVector::first() const template T G4RWTValOrderedVector::last() const { - if(rwsize) - return std_vector::operator[](rwsize-1); - else + if(!rwsize) G4RWTHROW(G4RWBoundsErr("G4RWTValOrderedVector last",rwsize,0)); + return std_vector::operator[](rwsize-1); } template diff --git a/source/global/STLInterface/g4rw/tvvector.h b/source/global/STLInterface/g4rw/tvvector.h index eedc637658..fcd2281237 100644 --- a/source/global/STLInterface/g4rw/tvvector.h +++ b/source/global/STLInterface/g4rw/tvvector.h @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: tvvector.h,v 1.7 1999/11/26 17:17:58 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: tvvector.h,v 1.8 2000/03/10 15:53:24 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/global/STLInterface/g4rw/tvvector.icc b/source/global/STLInterface/g4rw/tvvector.icc index 69010b3edb..b9b7da81c9 100644 --- a/source/global/STLInterface/g4rw/tvvector.icc +++ b/source/global/STLInterface/g4rw/tvvector.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: tvvector.icc,v 1.2 2000/02/01 16:55:02 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: tvvector.icc,v 1.3 2000/03/10 15:53:24 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -21,7 +21,7 @@ G4RWTValVector::G4RWTValVector () template G4RWTValVector::G4RWTValVector (size_t n) - : std_vector(n), rwsize(n){} + : std_vector(n,T()), rwsize(n){} template G4RWTValVector::G4RWTValVector (size_t n, const T& ival) diff --git a/source/global/management/include/G4Allocator.hh b/source/global/management/include/G4Allocator.hh index 863d118ccd..3bf533c8f5 100644 --- a/source/global/management/include/G4Allocator.hh +++ b/source/global/management/include/G4Allocator.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Allocator.hh,v 1.3 1999/11/23 15:00:03 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/global/management/include/G4AllocatorPage.hh b/source/global/management/include/G4AllocatorPage.hh index 95edc4bf57..38311a52a8 100644 --- a/source/global/management/include/G4AllocatorPage.hh +++ b/source/global/management/include/G4AllocatorPage.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4AllocatorPage.hh,v 1.2 1999/11/16 17:40:22 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/global/management/include/G4AllocatorUnit.hh b/source/global/management/include/G4AllocatorUnit.hh index 5ee038c2e5..4394a70d09 100644 --- a/source/global/management/include/G4AllocatorUnit.hh +++ b/source/global/management/include/G4AllocatorUnit.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4AllocatorUnit.hh,v 1.2 1999/11/16 17:40:22 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/global/management/include/G4DataVector.hh b/source/global/management/include/G4DataVector.hh index 18d40dc3b4..97ddf56db7 100644 --- a/source/global/management/include/G4DataVector.hh +++ b/source/global/management/include/G4DataVector.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4DataVector.hh,v 1.4 1999/11/23 15:00:03 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/global/management/include/G4FastVector.hh b/source/global/management/include/G4FastVector.hh index 2537a0e52f..f951980d3a 100644 --- a/source/global/management/include/G4FastVector.hh +++ b/source/global/management/include/G4FastVector.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4FastVector.hh,v 1.3 1999/11/23 15:00:03 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/global/management/include/G4LPhysicsFreeVector.hh b/source/global/management/include/G4LPhysicsFreeVector.hh index 022b9cb3fd..9290b8b73c 100644 --- a/source/global/management/include/G4LPhysicsFreeVector.hh +++ b/source/global/management/include/G4LPhysicsFreeVector.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4LPhysicsFreeVector.hh,v 1.2 1999/11/16 17:40:38 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------------ diff --git a/source/global/management/include/G4LPhysicsFreeVector.icc b/source/global/management/include/G4LPhysicsFreeVector.icc index b1ef03d774..d360072fa2 100644 --- a/source/global/management/include/G4LPhysicsFreeVector.icc +++ b/source/global/management/include/G4LPhysicsFreeVector.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4LPhysicsFreeVector.icc,v 1.2 1999/11/23 15:00:03 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------------ diff --git a/source/global/management/include/G4OrderedTable.hh b/source/global/management/include/G4OrderedTable.hh index 15b2092584..8d120672fd 100644 --- a/source/global/management/include/G4OrderedTable.hh +++ b/source/global/management/include/G4OrderedTable.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OrderedTable.hh,v 1.4 1999/11/16 17:40:39 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/global/management/include/G4PhysicsFreeVector.hh b/source/global/management/include/G4PhysicsFreeVector.hh index 5eb8ee22b8..dbc4bdbd74 100644 --- a/source/global/management/include/G4PhysicsFreeVector.hh +++ b/source/global/management/include/G4PhysicsFreeVector.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PhysicsFreeVector.hh,v 1.2 1999/11/16 17:40:40 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //-------------------------------------------------------------------- diff --git a/source/global/management/include/G4PhysicsLinearVector.hh b/source/global/management/include/G4PhysicsLinearVector.hh index 61ec2153cb..4c9f3f73e9 100644 --- a/source/global/management/include/G4PhysicsLinearVector.hh +++ b/source/global/management/include/G4PhysicsLinearVector.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PhysicsLinearVector.hh,v 1.2 1999/11/16 17:40:40 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //-------------------------------------------------------------------- diff --git a/source/global/management/include/G4PhysicsLnVector.hh b/source/global/management/include/G4PhysicsLnVector.hh new file mode 100644 index 0000000000..fb6f56e5f1 --- /dev/null +++ b/source/global/management/include/G4PhysicsLnVector.hh @@ -0,0 +1,79 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4PhysicsLnVector.hh,v 1.3 2000/03/23 09:20:09 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +//-------------------------------------------------------------------- +// GEANT 4 class header file +// +// G4PhysicsLnVector.hh +// +// Class description: +// +// A physics vector which has values of energy-loss, cross-section, +// and other physics values of a particle in matter in a given +// range of the energy, momentum, etc. The scale of energy/momentum +// bins is natural logarithmic. +// +// History: +// 27 Apr. 1999, M.G. Pia: Created, copying from G4PhysicsLogVector +// +//-------------------------------------------------------------------- + +#ifndef G4PhysicsLnVector_h +#define G4PhysicsLnVector_h 1 + +#include "globals.hh" +#include "G4DataVector.hh" +#include "G4PhysicsVector.hh" + + +class G4PhysicsLnVector : public G4PhysicsVector +{ + public: + + // Constructors + G4PhysicsLnVector(); + G4PhysicsLnVector(size_t theNbin); + G4PhysicsLnVector(G4double theEmin, G4double theEmax, size_t theNbin); + // Because of logarithmic scale, note that 'theEmin' has to be + // greater than zero. No protection exists against this error. + + // Destructor + ~G4PhysicsLnVector(); + + protected: + + size_t FindBinLocation(G4double theEnergy) const; + // Find bin# in which theEnergy belongs - pure virtual function + + private: + + G4double dBin; // Bin width - useful only for fixed binning + G4double baseBin; // Set this in constructor for performance + +}; + + +inline size_t G4PhysicsLnVector::FindBinLocation(G4double theEnergy) const { + + // For G4PhysicsLnVector, FindBinLocation is implemented using + // a simple arithmetic calculation. + // + // Because this is a virtual function, it is accessed through a + // pointer to the G4PhyiscsVector object for most usages. In this + // case, 'inline' will not be invoked. However, there is a possibility + // that the user access to the G4PhysicsLnVector object directly and + // not through pointers or references. In this case, the 'inline' will + // be invoked. (See R.B.Murray, "C++ Strategies and Tactics", Chap.6.6) + + return size_t( log(theEnergy)/dBin - baseBin ); +} + +#endif diff --git a/source/global/management/include/G4PhysicsLogVector.hh b/source/global/management/include/G4PhysicsLogVector.hh index 8d52de6b1f..453ee86fa9 100644 --- a/source/global/management/include/G4PhysicsLogVector.hh +++ b/source/global/management/include/G4PhysicsLogVector.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PhysicsLogVector.hh,v 1.2 1999/11/16 17:40:41 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //-------------------------------------------------------------------- diff --git a/source/global/management/include/G4PhysicsOrderedFreeVector.hh b/source/global/management/include/G4PhysicsOrderedFreeVector.hh index c0dd18fcb7..d8594223f6 100644 --- a/source/global/management/include/G4PhysicsOrderedFreeVector.hh +++ b/source/global/management/include/G4PhysicsOrderedFreeVector.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PhysicsOrderedFreeVector.hh,v 1.3 1999/11/16 17:40:41 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // //////////////////////////////////////////////////////////////////////// // PhysicsOrderedFreeVector Class Definition diff --git a/source/global/management/include/G4PhysicsOrderedFreeVector.icc b/source/global/management/include/G4PhysicsOrderedFreeVector.icc index 9fd8baa542..9cf8378a47 100644 --- a/source/global/management/include/G4PhysicsOrderedFreeVector.icc +++ b/source/global/management/include/G4PhysicsOrderedFreeVector.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PhysicsOrderedFreeVector.icc,v 1.2 1999/11/23 15:00:03 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // //////////////////////////////////////////////////////////////////////// // PhysicsOrderedFreeVector Class Inline Functions Definitions diff --git a/source/global/management/include/G4PhysicsTable.hh b/source/global/management/include/G4PhysicsTable.hh index bc4f8e640c..44a2733dd2 100644 --- a/source/global/management/include/G4PhysicsTable.hh +++ b/source/global/management/include/G4PhysicsTable.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PhysicsTable.hh,v 1.3 1999/11/16 17:40:42 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/global/management/include/G4PhysicsVector.hh b/source/global/management/include/G4PhysicsVector.hh index 1d5a0acc08..7038a7d21e 100644 --- a/source/global/management/include/G4PhysicsVector.hh +++ b/source/global/management/include/G4PhysicsVector.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PhysicsVector.hh,v 1.3 1999/11/16 17:40:43 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/global/management/include/G4PhysicsVector.icc b/source/global/management/include/G4PhysicsVector.icc index 7b879df3f1..ef9f0b9244 100644 --- a/source/global/management/include/G4PhysicsVector.icc +++ b/source/global/management/include/G4PhysicsVector.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PhysicsVector.icc,v 1.1 1999/11/16 17:40:46 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/global/management/include/G4RotationMatrix.hh b/source/global/management/include/G4RotationMatrix.hh index bdb5a3fbcb..fd07c65315 100644 --- a/source/global/management/include/G4RotationMatrix.hh +++ b/source/global/management/include/G4RotationMatrix.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4RotationMatrix.hh,v 1.2 1999/11/16 17:40:47 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/global/management/include/G4ThreeVector.hh b/source/global/management/include/G4ThreeVector.hh index 7061db92cb..12351f57c3 100644 --- a/source/global/management/include/G4ThreeVector.hh +++ b/source/global/management/include/G4ThreeVector.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ThreeVector.hh,v 1.2 1999/11/16 17:40:47 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/global/management/include/G4Timer.hh b/source/global/management/include/G4Timer.hh index 5393c9f3a5..201fcf2a09 100644 --- a/source/global/management/include/G4Timer.hh +++ b/source/global/management/include/G4Timer.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Timer.hh,v 1.10 2000/01/06 14:27:09 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/global/management/include/G4Types.hh b/source/global/management/include/G4Types.hh index 56c29b81d8..cdd8f647e2 100644 --- a/source/global/management/include/G4Types.hh +++ b/source/global/management/include/G4Types.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Types.hh,v 1.4 1999/12/15 18:05:19 gracia Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // GEANT4 native types diff --git a/source/global/management/include/G4UnitsTable.hh b/source/global/management/include/G4UnitsTable.hh index a568ebdc0f..6c0aee9d44 100644 --- a/source/global/management/include/G4UnitsTable.hh +++ b/source/global/management/include/G4UnitsTable.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UnitsTable.hh,v 1.9 2000/01/19 11:16:46 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ----------------------------------------------------------------- diff --git a/source/global/management/include/G4UnitsTest.hh b/source/global/management/include/G4UnitsTest.hh index 301de23352..31beaab6c4 100644 --- a/source/global/management/include/G4UnitsTest.hh +++ b/source/global/management/include/G4UnitsTest.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UnitsTest.hh,v 1.4 1999/11/19 09:19:30 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // ---------------------------------------------------------------------- // diff --git a/source/global/management/include/G4UserLimits.hh b/source/global/management/include/G4UserLimits.hh index 1bd181e118..b37e9558cb 100644 --- a/source/global/management/include/G4UserLimits.hh +++ b/source/global/management/include/G4UserLimits.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4UserLimits.hh,v 1.4 1999/11/23 15:00:04 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4UserLimits.hh,v 1.6 2000/02/17 16:13:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4UserLimits @@ -20,6 +20,7 @@ // // 01-11-97: change GetMaxAllowedStep(), Hisaya Kurashige // 08-04-98: new data members, mma +// 02-16-00: add fType member and accessors, Hisaya Kurashige // #ifndef G4USERLIMITS_HH #define G4USERLIMITS_HH @@ -37,16 +38,21 @@ public: // with description G4double utimeMax = DBL_MAX, G4double uekinMin = 0., G4double urangMin = 0. ); + G4UserLimits(const G4String& type, + G4double ustepMax = DBL_MAX, + G4double utrakMax = DBL_MAX, + G4double utimeMax = DBL_MAX, + G4double uekinMin = 0., + G4double urangMin = 0. ); virtual ~G4UserLimits(); public: // with description - - // If a Logical Volume has a G4UserLimits object, - // the Step length should be limited as shorter - // than MaxAllowedStep in the volume. - // In the current design, the other limits are irrelavant in tracking virtual G4double GetMaxAllowedStep(const G4Track&); + // If a Logical Volume has a G4UserLimits object, the Step length should + // be limited as shorter than MaxAllowedStep in the volume. + // In the current design, the other limits are irrelevant in tracking + virtual G4double GetUserMaxTrackLength(const G4Track&) ; virtual G4double GetUserMaxTime (const G4Track&); virtual G4double GetUserMinEkine(const G4Track&); @@ -57,6 +63,14 @@ public: // with description virtual void SetUserMaxTime(G4double utimeMax); virtual void SetUserMinEkine(G4double uekinMin); virtual void SetUserMinRange(G4double urangMin); + + const G4String & GetType() const; + void SetType(const G4String& type); + // Set/Get type name for UserLimits. + // This type member is supposed to be used to check real class types for + // each concrete instantiation of G4UserLimits. In other words, users who + // use special classes derived from this base class should name their class + // with a proper identifier. protected: // with description @@ -65,6 +79,8 @@ protected: // with description G4double fMaxTime; // max time G4double fMinEkine; // min kinetic energy (only for charged particles) G4double fMinRange; // min remaining range (only for charged particles) + + G4String fType; // type name }; #include "G4UserLimits.icc" diff --git a/source/global/management/include/G4UserLimits.icc b/source/global/management/include/G4UserLimits.icc index 8f8e837d9f..26a53ef40f 100644 --- a/source/global/management/include/G4UserLimits.icc +++ b/source/global/management/include/G4UserLimits.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4UserLimits.icc,v 1.3 1999/11/22 15:12:45 maire Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4UserLimits.icc,v 1.5 2000/02/17 16:13:08 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // @@ -27,9 +27,28 @@ inline G4UserLimits::G4UserLimits(G4double ustepMax, G4double uekinMin, G4double urangMin) :fMaxStep (ustepMax),fMaxTrack(utrakMax),fMaxTime(utimeMax), - fMinEkine(uekinMin),fMinRange(urangMin) + fMinEkine(uekinMin),fMinRange(urangMin),fType("base") {} +inline G4UserLimits::G4UserLimits(const G4String& type, + G4double ustepMax, + G4double utrakMax, + G4double utimeMax, + G4double uekinMin, + G4double urangMin) +:fMaxStep (ustepMax),fMaxTrack(utrakMax),fMaxTime(utimeMax), + fMinEkine(uekinMin),fMinRange(urangMin),fType(type) +{} + +inline const G4String& G4UserLimits::GetType() const +{ + return fType; +} + +inline void G4UserLimits::SetType(const G4String& type) +{ + fType = type; +} //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline G4UserLimits::~G4UserLimits(){} diff --git a/source/global/management/include/G4coutDestination.hh b/source/global/management/include/G4coutDestination.hh index e8a06d27cf..2164b8dc14 100644 --- a/source/global/management/include/G4coutDestination.hh +++ b/source/global/management/include/G4coutDestination.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4coutDestination.hh,v 1.2 1999/11/16 17:40:51 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // --------------------------------------------------------------- diff --git a/source/global/management/include/G4ios.hh b/source/global/management/include/G4ios.hh index 0a12a4e2a6..02d95976c8 100644 --- a/source/global/management/include/G4ios.hh +++ b/source/global/management/include/G4ios.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ios.hh,v 1.5 1999/12/15 18:05:18 gracia Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // --------------------------------------------------------------- diff --git a/source/global/management/include/G4strstreambuf.hh b/source/global/management/include/G4strstreambuf.hh index 7498bdf272..41c6cf3204 100644 --- a/source/global/management/include/G4strstreambuf.hh +++ b/source/global/management/include/G4strstreambuf.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4strstreambuf.hh,v 1.6 1999/12/16 08:15:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // --------------------------------------------------------------- diff --git a/source/global/management/include/PhysicalConstants.h b/source/global/management/include/PhysicalConstants.h index 74b4749ab9..a81f30ccad 100644 --- a/source/global/management/include/PhysicalConstants.h +++ b/source/global/management/include/PhysicalConstants.h @@ -6,7 +6,7 @@ // and all its terms. // // $Id: PhysicalConstants.h,v 1.4 1999/11/19 09:19:31 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // ---------------------------------------------------------------------- // diff --git a/source/global/management/include/SystemOfUnits.h b/source/global/management/include/SystemOfUnits.h index efc30d3b36..dae8ab8ec1 100644 --- a/source/global/management/include/SystemOfUnits.h +++ b/source/global/management/include/SystemOfUnits.h @@ -6,7 +6,7 @@ // and all its terms. // // $Id: SystemOfUnits.h,v 1.4 1999/11/19 09:19:31 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // ---------------------------------------------------------------------- // diff --git a/source/global/management/include/g4std/algorithm b/source/global/management/include/g4std/algorithm index 15bd216fde..0869d52862 100644 --- a/source/global/management/include/g4std/algorithm +++ b/source/global/management/include/g4std/algorithm @@ -6,7 +6,7 @@ // and all its terms. // // $Id: algorithm,v 1.3 1999/11/16 17:42:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // ---------------- algorithm ---------------- // diff --git a/source/global/management/include/g4std/complex b/source/global/management/include/g4std/complex new file mode 100644 index 0000000000..774ed1aff3 --- /dev/null +++ b/source/global/management/include/g4std/complex @@ -0,0 +1,30 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// +// $Id: complex,v 1.3 2000/06/15 17:32:10 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ---------------- complex ---------------- +// +#ifndef G4_COMPLEX_H +#define G4_COMPLEX_H + +#ifndef G4USE_STD_NAMESPACE + #if defined(__hpux) || defined(__linux) + #include + typedef complex G4complex; + #else + #include + typedef complex G4complex; + #endif +#else + #include + typedef std::complex G4complex; +#endif + +#endif /* G4_COMPLEX_H */ diff --git a/source/global/management/include/g4std/fstream b/source/global/management/include/g4std/fstream index 035b33c5bb..53db417c25 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-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // ---------------- fstream ---------------- // diff --git a/source/global/management/include/g4std/functional b/source/global/management/include/g4std/functional index eaf93fca0f..14ef1c1741 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-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // ---------------- functional ---------------- // diff --git a/source/global/management/include/g4std/iomanip b/source/global/management/include/g4std/iomanip index e2cccbe569..c12107b7ea 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-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // ---------------- iomanip ---------------- // diff --git a/source/global/management/include/g4std/iostream b/source/global/management/include/g4std/iostream index 7a5b12617a..8be615c934 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-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // ---------------- iostream ---------------- // diff --git a/source/global/management/include/g4std/map b/source/global/management/include/g4std/map index 403b7365a6..eb22e7061f 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-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // ---------------- map ---------------- // diff --git a/source/global/management/include/g4std/set b/source/global/management/include/g4std/set index 72f282c2ea..b6138941bc 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-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // ---------------- set ---------------- // diff --git a/source/global/management/include/g4std/streambuf b/source/global/management/include/g4std/streambuf index e28a821d22..05d5422e3d 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-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // ---------------- streambuf ---------------- // diff --git a/source/global/management/include/g4std/strstream b/source/global/management/include/g4std/strstream index 7f77dadacb..9a689f2e3c 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-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // ---------------- strstream ---------------- // diff --git a/source/global/management/include/g4std/vector b/source/global/management/include/g4std/vector index 9a53fd18e5..30d65187db 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-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // ---------------- vector ---------------- // diff --git a/source/global/management/include/globals.hh b/source/global/management/include/globals.hh index 5301d3dab3..339c76db2f 100644 --- a/source/global/management/include/globals.hh +++ b/source/global/management/include/globals.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: globals.hh,v 1.15 2000/01/19 11:12:44 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Global Constants and typedefs diff --git a/source/global/management/include/templates.hh b/source/global/management/include/templates.hh index a73fd63c9a..7905bc9804 100644 --- a/source/global/management/include/templates.hh +++ b/source/global/management/include/templates.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: templates.hh,v 1.5 2000/01/03 11:39:39 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -*- C++ -*- diff --git a/source/global/management/src/G4Exception.cc b/source/global/management/src/G4Exception.cc index 58bf645a8a..4a0b227bc5 100644 --- a/source/global/management/src/G4Exception.cc +++ b/source/global/management/src/G4Exception.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Exception.cc,v 1.8 1999/11/29 10:17:46 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/global/management/src/G4LPhysicsFreeVector.cc b/source/global/management/src/G4LPhysicsFreeVector.cc index 3f1217d1a8..db53dd318a 100644 --- a/source/global/management/src/G4LPhysicsFreeVector.cc +++ b/source/global/management/src/G4LPhysicsFreeVector.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4LPhysicsFreeVector.cc,v 1.2 1999/11/16 17:46:51 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------------- diff --git a/source/global/management/src/G4PhysicsFreeVector.cc b/source/global/management/src/G4PhysicsFreeVector.cc index 32cc16d65d..63e79706f2 100644 --- a/source/global/management/src/G4PhysicsFreeVector.cc +++ b/source/global/management/src/G4PhysicsFreeVector.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PhysicsFreeVector.cc,v 1.2 1999/11/16 17:46:51 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //-------------------------------------------------------------------- diff --git a/source/global/management/src/G4PhysicsLinearVector.cc b/source/global/management/src/G4PhysicsLinearVector.cc index 02c489e0f0..86c793beea 100644 --- a/source/global/management/src/G4PhysicsLinearVector.cc +++ b/source/global/management/src/G4PhysicsLinearVector.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PhysicsLinearVector.cc,v 1.2 1999/11/16 17:46:52 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //-------------------------------------------------------------------- diff --git a/source/global/management/src/G4PhysicsLnVector.cc b/source/global/management/src/G4PhysicsLnVector.cc new file mode 100644 index 0000000000..9b3bb109d6 --- /dev/null +++ b/source/global/management/src/G4PhysicsLnVector.cc @@ -0,0 +1,79 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4PhysicsLnVector.cc,v 1.3 2000/03/23 09:21:24 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// -------------------------------------------------------------- +// GEANT 4 class implementation file +// +// G4PhysicsLnVector.cc +// +// History: +// 27 Apr. 1999, M.G. Pia: Created, copying from G4PhysicsLogVector +// +// -------------------------------------------------------------- + +#include "G4PhysicsLnVector.hh" + + +G4PhysicsLnVector::G4PhysicsLnVector() + : dBin(0.), baseBin(0.) +{} + + +G4PhysicsLnVector::G4PhysicsLnVector(size_t theNbin) +{ + + // Add extra one bin (hidden to user) to handle correctly when + // Energy=theEmax in getValue. + dataVector.resize(theNbin+1); + binVector.resize(theNbin+1); + + ptrNextTable = 0; + numberOfBin = theNbin; + dBin = 0.; + baseBin = 0.; + + edgeMin = 0.; + edgeMax = 0.; + + lastBin = INT_MAX; + lastEnergy = -DBL_MAX; + lastValue = DBL_MAX; +} + + +G4PhysicsLnVector::G4PhysicsLnVector(G4double theEmin, + G4double theEmax, size_t theNbin) +{ + + // Add extra one bin (hidden to user) to handle correctly when + // Energy=theEmax in getValue. + dataVector.resize(theNbin+1); + binVector.resize(theNbin+1); + + ptrNextTable = 0; + numberOfBin = theNbin; + dBin = log(theEmax/theEmin) / numberOfBin; + baseBin = log(theEmin)/dBin; + + for (G4int i=0; i diff --git a/source/global/management/src/G4UnitsTable.cc b/source/global/management/src/G4UnitsTable.cc index 4a6e152150..4c7c0b8d34 100644 --- a/source/global/management/src/G4UnitsTable.cc +++ b/source/global/management/src/G4UnitsTable.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4UnitsTable.cc,v 1.9 2000/01/19 11:17:50 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4UnitsTable.cc,v 1.10 2000/05/25 15:40:48 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -212,6 +212,7 @@ void G4UnitDefinition::BuildUnitsTable() //Volumic Mass new G4UnitDefinition( "g/cm3", "g/cm3","Volumic Mass", g/cm3); new G4UnitDefinition("mg/cm3","mg/cm3","Volumic Mass",mg/cm3); + new G4UnitDefinition("kg/m3", "kg/m3", "Volumic Mass",kg/m3); //Power new G4UnitDefinition("watt","W","Power",watt); diff --git a/source/global/management/src/G4ios.cc b/source/global/management/src/G4ios.cc index 188ee60424..2f416071ff 100644 --- a/source/global/management/src/G4ios.cc +++ b/source/global/management/src/G4ios.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ios.cc,v 1.4 1999/11/23 15:00:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/graphics_reps/History b/source/graphics_reps/History index e3b663d219..577ab859ea 100644 --- a/source/graphics_reps/History +++ b/source/graphics_reps/History @@ -1,4 +1,4 @@ -$Id: History,v 1.14 2000/01/11 17:35:07 johna Exp $ +$Id: History,v 1.25 2000/06/06 10:53:38 johna Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,40 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +5th June May 2000 Evgeni Chernaev (greps-V01-01-04) +- Bug fix in BooleanProcessor.src. +- Graceful recovery from caseIE() and caseEE() non-implementation + (first polygon returned). + +20th May 2000 Evgeni Chernaev (greps-V01-01-03) +- Temporary workaround to avoid caseIE() and caseEE. + +13th May 2000 John Allison (greps-V01-01-02) +- Changed std:: to HepStd:: for ISO compatibility (Evgeni Chernaev). + +11th April 2000 John Allison (greps-V01-01-01) +- Added operator = (const HepPolyhedron&) to ExtPolyhedron. + +6th April 2000 John Allison (greps-V01-01-00) +- Tagged. + +4th April 2000 Evgeni Chernaev +- Added boolean operations (add, subtract, intersect) on HepPolyhedron objects. +- Added BooleanProcessor.src. + +30th March 2000 John Allison +- Added virtual operator= to G4Polyhedron.hh and HepPolyhedron.h to avoid + warnings about hiding. + +23rd February 2000 John Allison +- Moved G4Polyhedron constructors and destructor to .cc. + +22nd February 2000 Evgeni Chernaev (greps-V01-00-03) +- Re-instated edge flags for "invisible" edges of HepPolyhedronCons and Torus. + +22nd February 2000 John Allison (greps-V01-00-02) +- Added HepPolyhedron (Evgeni Chernaev). Re-implemented G4Polyhedron. + 11th January 2000 John Allison (greps-V01-00-01) - Fix for spheres with small dtheta. diff --git a/source/graphics_reps/include/G4Circle.hh b/source/graphics_reps/include/G4Circle.hh index eced761636..1e1567c348 100644 --- a/source/graphics_reps/include/G4Circle.hh +++ b/source/graphics_reps/include/G4Circle.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Circle.hh,v 1.4 1999/12/15 14:50:31 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 17/11/96. diff --git a/source/graphics_reps/include/G4Circle.icc b/source/graphics_reps/include/G4Circle.icc index 3c2fca6ae1..fba35ce8e7 100644 --- a/source/graphics_reps/include/G4Circle.icc +++ b/source/graphics_reps/include/G4Circle.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Circle.icc,v 1.3 1999/12/15 14:50:32 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 17/11/96. diff --git a/source/graphics_reps/include/G4Color.hh b/source/graphics_reps/include/G4Color.hh index b40938a7a4..061554f384 100644 --- a/source/graphics_reps/include/G4Color.hh +++ b/source/graphics_reps/include/G4Color.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Color.hh,v 1.3 1999/12/15 14:50:32 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 20th October 1996 diff --git a/source/graphics_reps/include/G4Colour.hh b/source/graphics_reps/include/G4Colour.hh index de29be7a6b..25f0d6318f 100644 --- a/source/graphics_reps/include/G4Colour.hh +++ b/source/graphics_reps/include/G4Colour.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Colour.hh,v 1.5 1999/12/15 16:46:07 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 20th October 1996 diff --git a/source/graphics_reps/include/G4NURBS.hh b/source/graphics_reps/include/G4NURBS.hh index 822d5bfd36..1f707e8612 100644 --- a/source/graphics_reps/include/G4NURBS.hh +++ b/source/graphics_reps/include/G4NURBS.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4NURBS.hh,v 1.5 1999/12/15 14:50:32 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // Olivier Crumeyrolle 12 September 1996 diff --git a/source/graphics_reps/include/G4NURBSbox.hh b/source/graphics_reps/include/G4NURBSbox.hh index 4ed2ec40f5..ac0d41c4ae 100644 --- a/source/graphics_reps/include/G4NURBSbox.hh +++ b/source/graphics_reps/include/G4NURBSbox.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4NURBSbox.hh,v 1.5 1999/12/15 14:50:32 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Olivier Crumeyrolle 12 September 1996 diff --git a/source/graphics_reps/include/G4NURBScylinder.hh b/source/graphics_reps/include/G4NURBScylinder.hh index 6d81586020..be5938f311 100644 --- a/source/graphics_reps/include/G4NURBScylinder.hh +++ b/source/graphics_reps/include/G4NURBScylinder.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4NURBScylinder.hh,v 1.5 1999/12/15 14:50:32 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Olivier Crumeyrolle 12 September 1996 diff --git a/source/graphics_reps/include/G4NURBShexahedron.hh b/source/graphics_reps/include/G4NURBShexahedron.hh index fea3bd33c8..ca38914a1c 100644 --- a/source/graphics_reps/include/G4NURBShexahedron.hh +++ b/source/graphics_reps/include/G4NURBShexahedron.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4NURBShexahedron.hh,v 1.5 1999/12/15 14:50:32 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 e91ba386ca..f10fb95ecf 100644 --- a/source/graphics_reps/include/G4NURBStube.hh +++ b/source/graphics_reps/include/G4NURBStube.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4NURBStube.hh,v 1.5 1999/12/15 14:50:32 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Olivier Crumeyrolle 12 September 1996 diff --git a/source/graphics_reps/include/G4NURBStubesector.hh b/source/graphics_reps/include/G4NURBStubesector.hh index 5024550293..381e7e9c78 100644 --- a/source/graphics_reps/include/G4NURBStubesector.hh +++ b/source/graphics_reps/include/G4NURBStubesector.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4NURBStubesector.hh,v 1.4 1999/12/15 14:50:32 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Olivier Crumeyrolle 12 September 1996 diff --git a/source/graphics_reps/include/G4PlacedPolyhedron.hh b/source/graphics_reps/include/G4PlacedPolyhedron.hh index 8f8c1080f0..9b2e22d807 100644 --- a/source/graphics_reps/include/G4PlacedPolyhedron.hh +++ b/source/graphics_reps/include/G4PlacedPolyhedron.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PlacedPolyhedron.hh,v 1.7 1999/12/15 14:50:32 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // Class Description: diff --git a/source/graphics_reps/include/G4Point3DList.hh b/source/graphics_reps/include/G4Point3DList.hh index 0b7a7750b4..e7e90be356 100644 --- a/source/graphics_reps/include/G4Point3DList.hh +++ b/source/graphics_reps/include/G4Point3DList.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Point3DList.hh,v 1.6 1999/12/15 16:46:08 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison July 1995 diff --git a/source/graphics_reps/include/G4Polyhedron.hh b/source/graphics_reps/include/G4Polyhedron.hh index 85ee96a90c..46e0b5108f 100644 --- a/source/graphics_reps/include/G4Polyhedron.hh +++ b/source/graphics_reps/include/G4Polyhedron.hh @@ -5,18 +5,21 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Polyhedron.hh,v 1.5 1999/12/16 15:26:03 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// -// +// $Id: G4Polyhedron.hh,v 1.8 2000/03/30 16:01:41 stesting Exp $ +// GEANT4 tag $Name: geant4-02-00 $ + +#ifndef G4POLYHEDRON_HH +#define G4POLYHEDRON_HH // Class Description: // G4Polyhedron is an intermediate class between G4 and visualization // systems. It is intended to provide some service like: // - polygonization of the G4 shapes with triangulization // (quadrilaterization) of complex polygons; -// - calculation of normals for faces and vertices; +// - calculation of normals for faces and vertices. +// +// Inherits from HepPolyhedron, to which reference should be made for +// functionality. // // Public constructors: // G4PolyhedronBox(dx,dy,dz) - create G4Polyhedron for G4 Box; @@ -47,7 +50,8 @@ // G4PolyhedronTorus(rmin,rmax,rtor, // phi,dphi) - create G4Polyhedron for Torus; // -// Public functions: +// Public functions inherited from HepPolyhedron (this list might be +// incomplete): // GetNoVertices() - returns number of vertices // GetNoFacets() - returns number of faces // GetNextVertexIndex(index, edgeFlag) - get vertex indeces of the @@ -69,315 +73,232 @@ // GetNextEdge(p1, p2, edgeFlag) - get next edge; // returns false for the last edge; // SetNumberOfRotationSteps(G4int n) - Set number of steps for whole circle; -// Class Description - End: // History: -// 20.06.96 Evgeni Chernyaev - initial version -// -// 23.07.96 John Allison -// - added GetNoVertices, GetNoFacets, GetNextVertex, GetNextNormal -// -// 30.09.96 E.Chernyaev -// - added GetNextVertexIndex, GetVertex by Yasuhide Sawada -// - added GetNextUnitNormal, GetNextEdgeIndeces, GetNextEdge -// - improvements: angles now expected in radians -// int -> G4int, double -> G4double -// - G4ThreeVector replaced by either G4Point3D or G4Normal3D -// -// 15.12.96 E.Chernyaev -// - private functions G4PolyhedronAlloc, G4PolyhedronPrism renamed -// to AllocateMemory and CreatePrism -// - added private functions GetNumberOfRotationSteps, RotateEdge, -// RotateAroundZ, SetReferences -// - rewritten G4PolyhedronCons; -// - added G4PolyhedronPara, ...Trap, ...Pgon, ...Pcon, ...Sphere, ...Torus, -// so full List of implemented shapes now looks like: -// BOX, TRD1, TRD2, TRAP, TUBE, TUBS, CONE, CONS, PARA, PGON, PCON, -// SPHERE, TORUS -// -// 01.06.97 E.Chernyaev -// - RotateAroundZ modified and SetSideFacets added to allow Rmin=Rmax -// in bodies of revolution -// -// 24.06.97 J.Allison -// - added static private member fNumberOfRotationSteps and static public -// functions void SetNumberOfRotationSteps (G4int n) and -// void ResetNumberOfRotationSteps (). Modified -// GetNumberOfRotationSteps() appropriately. Made all three functions -// inline (at end of this .hh file). -// Usage: -// G4Polyhedron::SetNumberOfRotationSteps -// (fpView -> GetViewParameters ().GetNoOfSides ()); -// pPolyhedron = solid.CreatePolyhedron (); -// G4Polyhedron::ResetNumberOfRotationSteps (); +// 21st February 2000 Evgeni Chernaev, John Allison +// - Re-written to inherit HepPolyhedron. - -#ifndef G4POLYHEDRON_HH -#define G4POLYHEDRON_HH - -#include "G4ios.hh" +#include "globals.hh" +#include "HepPolyhedron.h" #include "G4VVisPrim.hh" -#include "G4Point3D.hh" -#include "G4Normal3D.hh" -#include "G4Vector3D.hh" -#include "G4Transform3D.hh" -class G4Facet { - friend class G4Polyhedron; - friend G4std::ostream& operator<<(G4std::ostream&, const G4Facet &facet); - - private: - struct G4Edge { G4int v,f; }; - G4Edge edge[4]; - - public: // With description - - G4Facet(G4int v1=0, G4int f1=0, G4int v2=0, G4int f2=0, - G4int v3=0, G4int f3=0, G4int v4=0, G4int f4=0) - { edge[0].v=v1; edge[0].f=f1; edge[1].v=v2; edge[1].f=f2; - edge[2].v=v3; edge[2].f=f3; edge[3].v=v4; edge[3].f=f4; } +class G4Polyhedron : public HepPolyhedron, public G4VVisPrim { +public: + G4Polyhedron (); + G4Polyhedron (const G4Polyhedron& from); + G4Polyhedron (const HepPolyhedron& from); + virtual G4Visible& operator = (const G4Visible& from) { + return G4Visible::operator = (from); + } + virtual G4VVisPrim& operator = (const G4VVisPrim& from) { + return G4VVisPrim::operator = (from); + } + virtual HepPolyhedron& operator = (const HepPolyhedron& from) { + return HepPolyhedron::operator = (from); + } + G4Polyhedron& operator = (const G4Polyhedron& from); }; -class G4Polyhedron: public G4VVisPrim { - friend G4std::ostream& operator<<(G4std::ostream&, const G4Polyhedron &ph); - - private: - static G4int fNumberOfRotationSteps; - - protected: - G4int nvert, nface; - G4Point3D *pV; - G4Facet *pF; - - // Allocate memory for G4Polyhedron - void AllocateMemory(G4int Nvert, G4int Nface); - - // Create G4Polyhedron for prism with quadrilateral base - void CreatePrism(); - - // Get number of steps for whole circle - G4int GetNumberOfRotationSteps(); - - // Generate facets by revolving an edge around Z-axis - void RotateEdge(G4int k1, G4int k2, G4double r1, G4double r2, - G4int v1, G4int v2, G4int vEdge, - G4bool ifWholeCircle, G4int ns, G4int &kface); - - // Set side facets for the case of incomplete rotation - void SetSideFacets(G4int ii[4], G4int vv[4], - G4int *kk, G4double *r, - G4double dphi, G4int ns, G4int &kface); - - // Create G4Polyhedron for body of revolution around Z-axis - void RotateAroundZ(G4int nstep, G4double phi, G4double dphi, - G4int np1, G4int np2, - const G4double *z, G4double *r, - G4int nodeVis, G4int edgeVis); - - // For each edge set reference to neighbouring facet - void SetReferences(); - - // Invert the order on nodes in facets - void InvertFacets(); - - public: - // Constructor - G4Polyhedron(G4int Nvert=0, G4int Nface=0) - : nvert(Nvert), nface(Nface), - pV(Nvert ? new G4Point3D[Nvert+1] : 0), - pF(Nface ? new G4Facet[Nface+1] : 0) {} - - // Copy constructor - G4Polyhedron(const G4Polyhedron &from); - - // Destructor - ~G4Polyhedron() { delete [] pV; delete [] pF; } - - // Assignment - virtual G4Visible& operator=(const G4Visible &from); - virtual G4VVisPrim& operator=(const G4VVisPrim &from); - G4Polyhedron& operator=(const G4Polyhedron &from); - - // Get number of vertices - G4int GetNoVertices() const { return nvert; } - - // Get number of facets - G4int GetNoFacets() const { return nface; } - - // Transform the polyhedron - G4Polyhedron & Transform(const G4Transform3D &t); - - // Get next vertex index of the quadrilateral - G4bool GetNextVertexIndex(G4int &index, G4int &edgeFlag) const; - - // Get vertex by index - G4Point3D GetVertex(G4int index) const; - - // Get next vertex + edge visibility of the quadrilateral - G4bool GetNextVertex(G4Point3D &vertex, G4int &edgeFlag) const; - - // Get next vertex + edge visibility + normal of the quadrilateral - //G4bool GetNextVertex - //(G4Point3D &vertex, G4int &edgeFlag, G4Normal3D &normal) const; - - // Get normal of the next face - G4bool GetNextNormal(G4Normal3D &normal) const; - - // Get normal of unit length of the next face - G4bool GetNextUnitNormal(G4Normal3D &normal) const; - - // Get indeces of the next edge - G4bool GetNextEdgeIndeces(G4int &i1, G4int &i2, G4int &edgeFlag) const; - - // Get next edge - G4bool GetNextEdge(G4Point3D &p1, G4Point3D &p2, G4int &edgeFlag) const; - - // Set number of steps for whole circle - static void SetNumberOfRotationSteps(G4int n); - - // Reset number of steps for whole circle to default value - static void ResetNumberOfRotationSteps(); +class G4PolyhedronBox: public G4Polyhedron { +public: + G4PolyhedronBox (G4double dx, G4double dy, G4double dz); + virtual G4Visible& operator = (const G4Visible& from) { + return G4Visible::operator = (from); + } + virtual G4VVisPrim& operator = (const G4VVisPrim& from) { + return G4VVisPrim::operator = (from); + } + virtual HepPolyhedron& operator = (const HepPolyhedron& from) { + return HepPolyhedron::operator = (from); + } }; -class G4PolyhedronTrd2 : public G4Polyhedron { - public: - G4PolyhedronTrd2(G4double Dx1, G4double Dx2, - G4double Dy1, G4double Dy2, G4double Dz); - virtual G4Visible& operator=(const G4Visible &from); - virtual G4VVisPrim& operator=(const G4VVisPrim &from); +class G4PolyhedronCone: public G4Polyhedron { +public: + G4PolyhedronCone (G4double Rmn1, G4double Rmx1, + G4double Rmn2, G4double Rmx2, G4double Dz); + virtual G4Visible& operator = (const G4Visible& from) { + return G4Visible::operator = (from); + } + virtual G4VVisPrim& operator = (const G4VVisPrim& from) { + return G4VVisPrim::operator = (from); + } + virtual HepPolyhedron& operator = (const HepPolyhedron& from) { + return HepPolyhedron::operator = (from); + } }; -class G4PolyhedronTrd1 : public G4PolyhedronTrd2 { - public: - G4PolyhedronTrd1(G4double Dx1, G4double Dx2, G4double Dy, G4double Dz) : - G4PolyhedronTrd2(Dx1, Dx2, Dy, Dy, Dz) {} - virtual G4Visible& operator=(const G4Visible &from); - virtual G4VVisPrim& operator=(const G4VVisPrim &from); +class G4PolyhedronCons: public G4Polyhedron { +public: + G4PolyhedronCons (G4double Rmn1, G4double Rmx1, + G4double Rmn2, G4double Rmx2, G4double Dz, + G4double Phi1, G4double Dphi); + virtual G4Visible& operator = (const G4Visible& from) { + return G4Visible::operator = (from); + } + virtual G4VVisPrim& operator = (const G4VVisPrim& from) { + return G4VVisPrim::operator = (from); + } + virtual HepPolyhedron& operator = (const HepPolyhedron& from) { + return HepPolyhedron::operator = (from); + } }; -class G4PolyhedronBox : public G4PolyhedronTrd2 { - public: - G4PolyhedronBox(G4double Dx, G4double Dy, G4double Dz) : - G4PolyhedronTrd2(Dx, Dx, Dy, Dy, Dz) {} - virtual G4Visible& operator=(const G4Visible &from); - virtual G4VVisPrim& operator=(const G4VVisPrim &from); +class G4PolyhedronPara: public G4Polyhedron { +public: + G4PolyhedronPara (G4double Dx, G4double Dy, G4double Dz, + G4double Alpha, G4double Theta, G4double Phi); + virtual G4Visible& operator = (const G4Visible& from) { + return G4Visible::operator = (from); + } + virtual G4VVisPrim& operator = (const G4VVisPrim& from) { + return G4VVisPrim::operator = (from); + } + virtual HepPolyhedron& operator = (const HepPolyhedron& from) { + return HepPolyhedron::operator = (from); + } }; -class G4PolyhedronTrap : public G4Polyhedron { - public: - G4PolyhedronTrap(G4double Dz, G4double Theta, G4double Phi, - G4double Dy1, G4double Dx1, G4double Dx2, G4double Alp1, - G4double Dy2, G4double Dx3, G4double Dx4, G4double Alp2); - virtual G4Visible& operator=(const G4Visible &from); - virtual G4VVisPrim& operator=(const G4VVisPrim &from); +class G4PolyhedronPcon: public G4Polyhedron { +public: + G4PolyhedronPcon (G4double phi, G4double dphi, G4int nz, + const G4double *z, + const G4double *rmin, + const G4double *rmax); + virtual G4Visible& operator = (const G4Visible& from) { + return G4Visible::operator = (from); + } + virtual G4VVisPrim& operator = (const G4VVisPrim& from) { + return G4VVisPrim::operator = (from); + } + virtual HepPolyhedron& operator = (const HepPolyhedron& from) { + return HepPolyhedron::operator = (from); + } }; -class G4PolyhedronPara : public G4PolyhedronTrap { - public: - G4PolyhedronPara(G4double Dx, G4double Dy, G4double Dz, - G4double Alpha, G4double Theta, G4double Phi) : - G4PolyhedronTrap(Dz, Theta, Phi, Dy, Dx, Dx, Alpha, Dy, Dx, Dx, Alpha) {} - virtual G4Visible& operator=(const G4Visible &from); - virtual G4VVisPrim& operator=(const G4VVisPrim &from); +class G4PolyhedronPgon: public G4Polyhedron { +public: + G4PolyhedronPgon (G4double phi, G4double dphi, G4int npdv, G4int nz, + const G4double *z, + const G4double *rmin, + const G4double *rmax); + virtual G4Visible& operator = (const G4Visible& from) { + return G4Visible::operator = (from); + } + virtual G4VVisPrim& operator = (const G4VVisPrim& from) { + return G4VVisPrim::operator = (from); + } + virtual HepPolyhedron& operator = (const HepPolyhedron& from) { + return HepPolyhedron::operator = (from); + } }; -class G4PolyhedronCons : public G4Polyhedron { - public: - G4PolyhedronCons(G4double Rmn1, G4double Rmx1, - G4double Rmn2, G4double Rmx2, G4double Dz, - G4double Phi1, G4double Dphi); - virtual G4Visible& operator=(const G4Visible &from); - virtual G4VVisPrim& operator=(const G4VVisPrim &from); +class G4PolyhedronSphere: public G4Polyhedron { +public: + G4PolyhedronSphere (G4double rmin, G4double rmax, + G4double phi, G4double dphi, + G4double the, G4double dthe); + virtual G4Visible& operator = (const G4Visible& from) { + return G4Visible::operator = (from); + } + virtual G4VVisPrim& operator = (const G4VVisPrim& from) { + return G4VVisPrim::operator = (from); + } + virtual HepPolyhedron& operator = (const HepPolyhedron& from) { + return HepPolyhedron::operator = (from); + } }; -class G4PolyhedronCone : public G4PolyhedronCons { - public: - G4PolyhedronCone(G4double Rmn1, G4double Rmx1, - G4double Rmn2, G4double Rmx2, G4double Dz) - : G4PolyhedronCons(Rmn1, Rmx1, Rmn2, Rmx2, Dz, 0*deg, 360*deg) {} - virtual G4Visible& operator=(const G4Visible &from); - virtual G4VVisPrim& operator=(const G4VVisPrim &from); -}; - -class G4PolyhedronTubs : public G4PolyhedronCons { - public: - G4PolyhedronTubs(G4double Rmin, G4double Rmax, G4double Dz, - G4double Phi1, G4double Dphi) - : G4PolyhedronCons(Rmin, Rmax, Rmin, Rmax, Dz, Phi1, Dphi) {} - virtual G4Visible& operator=(const G4Visible &from); - virtual G4VVisPrim& operator=(const G4VVisPrim &from); -}; - -class G4PolyhedronTube : public G4PolyhedronCons { - public: - G4PolyhedronTube (G4double Rmin, G4double Rmax, G4double Dz) - : G4PolyhedronCons(Rmin, Rmax, Rmin, Rmax, Dz, 0*deg, 360*deg) {} - virtual G4Visible& operator=(const G4Visible &from); - virtual G4VVisPrim& operator=(const G4VVisPrim &from); -}; - -class G4PolyhedronPgon : public G4Polyhedron { - public: - G4PolyhedronPgon(G4double phi, G4double dphi, G4int npdv, G4int nz, - const G4double *z, - const G4double *rmin, - const G4double *rmax); - virtual G4Visible& operator=(const G4Visible &from); - virtual G4VVisPrim& operator=(const G4VVisPrim &from); -}; - -class G4PolyhedronPcon : public G4PolyhedronPgon { - public: - G4PolyhedronPcon(G4double phi, G4double dphi, G4int nz, - const G4double *z, - const G4double *rmin, - const G4double *rmax) - : G4PolyhedronPgon(phi, dphi, 0, nz, z, rmin, rmax) {} - virtual G4Visible& operator=(const G4Visible &from); - virtual G4VVisPrim& operator=(const G4VVisPrim &from); -}; - -class G4PolyhedronSphere : public G4Polyhedron { - public: - G4PolyhedronSphere(G4double rmin, G4double rmax, - G4double phi, G4double dphi, - G4double the, G4double dthe); - virtual G4Visible& operator=(const G4Visible &from); - virtual G4VVisPrim& operator=(const G4VVisPrim &from); -}; - -class G4PolyhedronTorus : public G4Polyhedron { - public: - G4PolyhedronTorus(G4double rmin, G4double rmax, G4double rtor, +class G4PolyhedronTorus: public G4Polyhedron { +public: + G4PolyhedronTorus (G4double rmin, G4double rmax, G4double rtor, G4double phi, G4double dphi); - virtual G4Visible& operator=(const G4Visible &from); - virtual G4VVisPrim& operator=(const G4VVisPrim &from); + virtual G4Visible& operator = (const G4Visible& from) { + return G4Visible::operator = (from); + } + virtual G4VVisPrim& operator = (const G4VVisPrim& from) { + return G4VVisPrim::operator = (from); + } + virtual HepPolyhedron& operator = (const HepPolyhedron& from) { + return HepPolyhedron::operator = (from); + } }; -inline G4int G4Polyhedron::GetNumberOfRotationSteps() -/*********************************************************************** - * * - * Name: G4Polyhedron::GetNumberOfRotationSteps Date: 11.12.96 * - * Author: E.Chernyaev (IHEP/Protvino) Revised: 24.06.97 * - * * - * Function: Get number of steps for whole circle * - * * - ***********************************************************************/ -{ - return fNumberOfRotationSteps; -} +class G4PolyhedronTrap: public G4Polyhedron { +public: + G4PolyhedronTrap (G4double Dz, G4double Theta, G4double Phi, + G4double Dy1, + G4double Dx1, G4double Dx2, G4double Alp1, + G4double Dy2, + G4double Dx3, G4double Dx4, G4double Alp2); + virtual G4Visible& operator = (const G4Visible& from) { + return G4Visible::operator = (from); + } + virtual G4VVisPrim& operator = (const G4VVisPrim& from) { + return G4VVisPrim::operator = (from); + } + virtual HepPolyhedron& operator = (const HepPolyhedron& from) { + return HepPolyhedron::operator = (from); + } +}; -inline void G4Polyhedron::ResetNumberOfRotationSteps() -/*********************************************************************** - * * - * Name: G4Polyhedron::ResetNumberOfRotationSteps Date: 24.06.97 * - * Author: J.Allison (Manchester University) Revised: * - * * - * Function: Reset number of steps for whole circle to default value * - * * - ***********************************************************************/ -{ - fNumberOfRotationSteps = 24; -} +class G4PolyhedronTrd1: public G4Polyhedron { +public: + G4PolyhedronTrd1 (G4double Dx1, G4double Dx2, + G4double Dy, G4double Dz); + virtual G4Visible& operator = (const G4Visible& from) { + return G4Visible::operator = (from); + } + virtual G4VVisPrim& operator = (const G4VVisPrim& from) { + return G4VVisPrim::operator = (from); + } + virtual HepPolyhedron& operator = (const HepPolyhedron& from) { + return HepPolyhedron::operator = (from); + } +}; + +class G4PolyhedronTrd2: public G4Polyhedron { +public: + G4PolyhedronTrd2 (G4double Dx1, G4double Dx2, + G4double Dy1, G4double Dy2, G4double Dz); + virtual G4Visible& operator = (const G4Visible& from) { + return G4Visible::operator = (from); + } + virtual G4VVisPrim& operator = (const G4VVisPrim& from) { + return G4VVisPrim::operator = (from); + } + virtual HepPolyhedron& operator = (const HepPolyhedron& from) { + return HepPolyhedron::operator = (from); + } +}; + +class G4PolyhedronTube: public G4Polyhedron { +public: + G4PolyhedronTube (G4double Rmin, G4double Rmax, G4double Dz); + virtual G4Visible& operator = (const G4Visible& from) { + return G4Visible::operator = (from); + } + virtual G4VVisPrim& operator = (const G4VVisPrim& from) { + return G4VVisPrim::operator = (from); + } + virtual HepPolyhedron& operator = (const HepPolyhedron& from) { + return HepPolyhedron::operator = (from); + } +}; + +class G4PolyhedronTubs: public G4Polyhedron { +public: + G4PolyhedronTubs (G4double Rmin, G4double Rmax, G4double Dz, + G4double Phi1, G4double Dphi); + virtual G4Visible& operator = (const G4Visible& from) { + return G4Visible::operator = (from); + } + virtual G4VVisPrim& operator = (const G4VVisPrim& from) { + return G4VVisPrim::operator = (from); + } + virtual HepPolyhedron& operator = (const HepPolyhedron& from) { + return HepPolyhedron::operator = (from); + } +}; #endif /* G4POLYHEDRON_HH */ diff --git a/source/graphics_reps/include/G4Polyline.hh b/source/graphics_reps/include/G4Polyline.hh index ff9f0ab981..f2d3b4ae98 100644 --- a/source/graphics_reps/include/G4Polyline.hh +++ b/source/graphics_reps/include/G4Polyline.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Polyline.hh,v 1.5 1999/12/15 14:50:33 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison July 1995 diff --git a/source/graphics_reps/include/G4Polymarker.hh b/source/graphics_reps/include/G4Polymarker.hh index d5eb9a50db..298c0fac35 100644 --- a/source/graphics_reps/include/G4Polymarker.hh +++ b/source/graphics_reps/include/G4Polymarker.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Polymarker.hh,v 1.5 1999/12/15 14:50:33 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison November 1996 diff --git a/source/graphics_reps/include/G4Polymarker.icc b/source/graphics_reps/include/G4Polymarker.icc index 5c006e670c..e5b9cab1b0 100644 --- a/source/graphics_reps/include/G4Polymarker.icc +++ b/source/graphics_reps/include/G4Polymarker.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Polymarker.icc,v 1.2 1999/12/15 14:50:33 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison November 1996 diff --git a/source/graphics_reps/include/G4Square.hh b/source/graphics_reps/include/G4Square.hh index 7ac3a6872c..b766318db6 100644 --- a/source/graphics_reps/include/G4Square.hh +++ b/source/graphics_reps/include/G4Square.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Square.hh,v 1.4 1999/12/15 14:50:34 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 17/11/96. diff --git a/source/graphics_reps/include/G4Square.icc b/source/graphics_reps/include/G4Square.icc index a81a440f16..9c3ee29629 100644 --- a/source/graphics_reps/include/G4Square.icc +++ b/source/graphics_reps/include/G4Square.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Square.icc,v 1.2 1999/12/15 14:50:34 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 17/11/96. diff --git a/source/graphics_reps/include/G4Text.hh b/source/graphics_reps/include/G4Text.hh index 35c0fbf344..9e7e587e8f 100644 --- a/source/graphics_reps/include/G4Text.hh +++ b/source/graphics_reps/include/G4Text.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Text.hh,v 1.5 1999/12/15 14:50:34 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 17/11/96. diff --git a/source/graphics_reps/include/G4Text.icc b/source/graphics_reps/include/G4Text.icc index 094117f440..b82bf8f533 100644 --- a/source/graphics_reps/include/G4Text.icc +++ b/source/graphics_reps/include/G4Text.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Text.icc,v 1.2 1999/12/15 14:50:34 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 17/11/96. diff --git a/source/graphics_reps/include/G4VMarker.hh b/source/graphics_reps/include/G4VMarker.hh index c34851ba9e..bee1768275 100644 --- a/source/graphics_reps/include/G4VMarker.hh +++ b/source/graphics_reps/include/G4VMarker.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VMarker.hh,v 1.6 1999/12/15 14:50:34 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 b655c4f42a..c54ce04439 100644 --- a/source/graphics_reps/include/G4VMarker.icc +++ b/source/graphics_reps/include/G4VMarker.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VMarker.icc,v 1.4 1999/12/16 15:22:05 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/graphics_reps/include/G4VVisPrim.hh b/source/graphics_reps/include/G4VVisPrim.hh index 967adf14b4..0d79051704 100644 --- a/source/graphics_reps/include/G4VVisPrim.hh +++ b/source/graphics_reps/include/G4VVisPrim.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VVisPrim.hh,v 1.6 1999/12/15 16:46:08 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison August 1995 diff --git a/source/graphics_reps/include/G4VVisPrim.icc b/source/graphics_reps/include/G4VVisPrim.icc index c0ab98cc4a..6929654907 100644 --- a/source/graphics_reps/include/G4VVisPrim.icc +++ b/source/graphics_reps/include/G4VVisPrim.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VVisPrim.icc,v 1.3 1999/12/15 14:50:34 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison August 1995 diff --git a/source/graphics_reps/include/G4VisAttributes.hh b/source/graphics_reps/include/G4VisAttributes.hh index 323ee44817..b47d72e950 100644 --- a/source/graphics_reps/include/G4VisAttributes.hh +++ b/source/graphics_reps/include/G4VisAttributes.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VisAttributes.hh,v 1.5 1999/12/15 14:50:34 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VisAttributes.hh,v 1.6 2000/05/13 09:33:37 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 23rd October 1996 @@ -43,7 +43,6 @@ class G4VisAttributes { public: // With description - // Constructors, etc. - begin snippet. enum LineStyle {unbroken, dashed, dotted}; enum ForcedDrawingStyle {wireframe, solid}; @@ -53,7 +52,6 @@ public: // With description G4VisAttributes (G4bool visibility, const G4Colour& colour); static const G4VisAttributes Invisible; - // Constructors - end snippet. G4bool operator != (const G4VisAttributes& a) const; G4bool operator == (const G4VisAttributes& a) const; @@ -67,7 +65,6 @@ public: // With description G4bool IsForceDrawingStyle () const; ForcedDrawingStyle GetForcedDrawingStyle () const; - // Set methods - begin snippet. void SetVisibility (G4bool); void SetDaughtersInvisible (G4bool); void SetColour (const G4Colour&); @@ -80,11 +77,9 @@ public: // With description void SetLineWidth (G4double); void SetForceWireframe (G4bool); void SetForceSolid (G4bool); - // Set methods - end snippet. private: - // Available attributes - begin snippet. G4bool fVisible; // Visibility flag G4bool fDaughtersInvisible; // Make daughters invsibile. G4Colour fColour; @@ -93,7 +88,6 @@ private: // pixels for screen, 0.1 mm for paper. G4bool fForceDrawingStyle; // To override view parameters. ForcedDrawingStyle fForcedStyle; - // Available attributes - end snippet. }; #include "G4VisAttributes.icc" diff --git a/source/graphics_reps/include/G4VisAttributes.icc b/source/graphics_reps/include/G4VisAttributes.icc index 3be5e232e6..94a185d34a 100644 --- a/source/graphics_reps/include/G4VisAttributes.icc +++ b/source/graphics_reps/include/G4VisAttributes.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisAttributes.icc,v 1.3 1999/12/15 14:50:34 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 18th November 1996 diff --git a/source/graphics_reps/include/G4VisExtent.hh b/source/graphics_reps/include/G4VisExtent.hh index f4a3b2f57a..a31e0bcec2 100644 --- a/source/graphics_reps/include/G4VisExtent.hh +++ b/source/graphics_reps/include/G4VisExtent.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisExtent.hh,v 1.4 1999/12/15 14:50:35 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // A.Walkden 28/11/95 diff --git a/source/graphics_reps/include/G4Visible.hh b/source/graphics_reps/include/G4Visible.hh index 07c0ba0dc7..fd3168bc0c 100644 --- a/source/graphics_reps/include/G4Visible.hh +++ b/source/graphics_reps/include/G4Visible.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Visible.hh,v 1.6 1999/12/15 16:46:08 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 30th October 1996 diff --git a/source/graphics_reps/include/G4Visible.icc b/source/graphics_reps/include/G4Visible.icc index 0c7501372d..6146b65192 100644 --- a/source/graphics_reps/include/G4Visible.icc +++ b/source/graphics_reps/include/G4Visible.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Visible.icc,v 1.3 1999/12/15 14:50:35 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 30th October 1996 diff --git a/source/graphics_reps/include/HepPolyhedron.h b/source/graphics_reps/include/HepPolyhedron.h new file mode 100644 index 0000000000..17b78857a2 --- /dev/null +++ b/source/graphics_reps/include/HepPolyhedron.h @@ -0,0 +1,439 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: HepPolyhedron.h,v 1.4 2000/04/18 10:03:06 evc Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// Class Description: +// HepPolyhedron is an intermediate class between description of a shape +// and visualization systems. It is intended to provide some service like: +// - polygonization of shapes with triangulization (quadrilaterization) +// of complex polygons; +// - calculation of normals for faces and vertices; +// - finding result of boolean operation on polyhedra; +// +// Public constructors: +// +// HepPolyhedronBox (dx,dy,dz) +// - create polyhedron for Box; +// HepPolyhedronTrd1 (dx1,dx2,dy,dz) +// - create polyhedron for G3 Trd1; +// HepPolyhedronTrd2 (dx1,dx2,dy1,dy2,dz) +// - create polyhedron for G3 Trd2; +// HepPolyhedronTrap (dz,theta,phi, h1,bl1,tl1,alp1, h2,bl2,tl2,alp2) +// - create polyhedron for G3 Trap; +// HepPolyhedronPara (dx,dy,dz,alpha,theta,phi) +// - create polyhedron for G3 Para; +// HepPolyhedronTube (rmin,rmax,dz) +// - create polyhedron for G3 Tube; +// HepPolyhedronTubs (rmin,rmax,dz,phi1,dphi) +// - create polyhedron for G3 Tubs; +// HepPolyhedronCone (rmin1,rmax1,rmin2,rmax2,dz) +// - create polyhedron for G3 Cone; +// HepPolyhedronCons (rmin1,rmax1,rmin2,rmax2,dz,phi1,dphi) +// - create polyhedron for G3 Cons; +// HepPolyhedronPgon (phi,dphi,npdv,nz, z(*),rmin(*),rmax(*)) +// - create polyhedron for G3 Pgon; +// HepPolyhedronPcon (phi,dphi,nz, z(*),rmin(*),rmax(*)) +// - create polyhedron for G3 Pcon; +// HepPolyhedronSphere (rmin,rmax,phi,dphi,the,dthe) +// - create polyhedron for Sphere; +// HepPolyhedronTorus (rmin,rmax,rtor,phi,dphi) +// - create polyhedron for Torus; +// Public functions: +// +// GetNoVertices () - returns number of vertices; +// GetNoFacets () - returns number of faces; +// GetNextVertexIndex (index,edgeFlag) - get vertex indeces of the +// quadrilaterals in order; +// returns false when finished each face; +// GetVertex (index) - returns vertex by index; +// GetNextVertex (vertex,edgeFlag) - get vertices with edge visibility +// of the quadrilaterals in order; +// returns false when finished each face; +// GetNextVertex (vertex,edgeFlag,normal) - get vertices with edge +// visibility and normal of the quadrilaterals +// in order; returns false when finished each face; +// GetNextEdgeIndeces (i1,i2,edgeFlag) - get indeces of the next edge; +// returns false for the last edge; +// GetNextEdgeIndeces (i1,i2,edgeFlag,iface1,iface2) - get indeces of +// the next edge with indeces of the faces +// to which the edge belongs; +// returns false for the last edge; +// GetNextEdge (p1,p2,edgeFlag) - get next edge; +// returns false for the last edge; +// GetNextEdge (p1,p2,edgeFlag,iface1,iface2) - get next edge with indeces +// of the faces to which the edge belongs; +// returns false for the last edge; +// GetFacet (index,n,nodes,edgeFlags=0,normals=0) - get face by index; +// GetNextFacet (n,nodes,edgeFlags=0,normals=0) - get next face with normals +// at the nodes; returns false for the last face; +// GetNormal (index) - get normal of face given by index; +// GetUnitNormal (index) - get unit normal of face given by index; +// GetNextNormal (normal) - get normals of each face in order; +// returns false when finished all faces; +// GetNextUnitNormal (normal) - get normals of unit length of each face +// in order; returns false when finished all faces; +// SetNumberOfRotationSteps (n) - set number of steps for whole circle; +// ResetNumberOfRotationSteps() - reset number of steps for whole circle +// to default value; +// History: +// +// 20.06.96 Evgeni Chernyaev - initial version +// +// 23.07.96 John Allison +// - added GetNoVertices, GetNoFacets, GetNextVertex, GetNextNormal +// +// 30.09.96 E.Chernyaev +// - added GetNextVertexIndex, GetVertex by Yasuhide Sawada +// - added GetNextUnitNormal, GetNextEdgeIndeces, GetNextEdge +// - improvements: angles now expected in radians +// int -> G4int, double -> G4double +// - G4ThreeVector replaced by either G4Point3D or G4Normal3D +// +// 15.12.96 E.Chernyaev +// - private functions G4PolyhedronAlloc, G4PolyhedronPrism renamed +// to AllocateMemory and CreatePrism +// - added private functions GetNumberOfRotationSteps, RotateEdge, +// RotateAroundZ, SetReferences +// - rewritten G4PolyhedronCons; +// - added G4PolyhedronPara, ...Trap, ...Pgon, ...Pcon, ...Sphere, ...Torus, +// so full List of implemented shapes now looks like: +// BOX, TRD1, TRD2, TRAP, TUBE, TUBS, CONE, CONS, PARA, PGON, PCON, +// SPHERE, TORUS +// +// 01.06.97 E.Chernyaev +// - RotateAroundZ modified and SetSideFacets added to allow Rmin=Rmax +// in bodies of revolution +// +// 24.06.97 J.Allison +// - added static private member fNumberOfRotationSteps and static public +// functions void SetNumberOfRotationSteps (G4int n) and +// void ResetNumberOfRotationSteps (). Modified +// GetNumberOfRotationSteps() appropriately. Made all three functions +// inline (at end of this .hh file). +// Usage: +// G4Polyhedron::SetNumberOfRotationSteps +// (fpView -> GetViewParameters ().GetNoOfSides ()); +// pPolyhedron = solid.CreatePolyhedron (); +// G4Polyhedron::ResetNumberOfRotationSteps (); +// +// 19.03.00 E.Chernyaev +// - added boolean operations (add, subtract, intersect) on polyhedra; +// + +#ifndef HEP_POLYHEDRON_HH +#define HEP_POLYHEDRON_HH + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef HepStd +#ifndef HEP_USE_STD +#define HepStd +#else +#define HepStd std +#endif +#endif + +#ifndef DEFAULT_NUMBER_OF_STEPS +#define DEFAULT_NUMBER_OF_STEPS 24 +#endif + +class G4Facet { + friend class HepPolyhedron; + friend HepStd::ostream& operator<<(HepStd::ostream&, const G4Facet &facet); + + private: + struct G4Edge { int v,f; }; + G4Edge edge[4]; + + public: + G4Facet(int v1=0, int f1=0, int v2=0, int f2=0, + int v3=0, int f3=0, int v4=0, int f4=0) + { edge[0].v=v1; edge[0].f=f1; edge[1].v=v2; edge[1].f=f2; + edge[2].v=v3; edge[2].f=f3; edge[3].v=v4; edge[3].f=f4; } +}; + +class HepPolyhedron { + friend HepStd::ostream& operator<<(HepStd::ostream&, const HepPolyhedron &ph); + + private: + static int fNumberOfRotationSteps; + + protected: + int nvert, nface; + HepPoint3D *pV; + G4Facet *pF; + + // Allocate memory for HepPolyhedron + void AllocateMemory(int Nvert, int Nface); + + // Find neighbouring facet + int FindNeighbour(int iFace, int iNode, int iOrder) const; + + // Find normal at node + HepNormal3D FindNodeNormal(int iFace, int iNode) const; + + // Create HepPolyhedron for prism with quadrilateral base + void CreatePrism(); + + // Get number of steps for whole circle + int GetNumberOfRotationSteps() { return fNumberOfRotationSteps; } + + // Generate facets by revolving an edge around Z-axis + void RotateEdge(int k1, int k2, HepDouble r1, HepDouble r2, + int v1, int v2, int vEdge, + HepBoolean ifWholeCircle, int ns, int &kface); + + // Set side facets for the case of incomplete rotation + void SetSideFacets(int ii[4], int vv[4], + int *kk, HepDouble *r, + HepDouble dphi, int ns, int &kface); + + // Create HepPolyhedron for body of revolution around Z-axis + void RotateAroundZ(int nstep, HepDouble phi, HepDouble dphi, + int np1, int np2, + const HepDouble *z, HepDouble *r, + int nodeVis, int edgeVis); + + // For each edge set reference to neighbouring facet + void SetReferences(); + + // Invert the order on nodes in facets + void InvertFacets(); + + public: + // Constructor + HepPolyhedron(int Nvert=0, int Nface=0) + : nvert(Nvert), nface(Nface), + pV(Nvert ? new HepPoint3D[Nvert+1] : 0), + pF(Nface ? new G4Facet[Nface+1] : 0) {} + + // Copy constructor + HepPolyhedron(const HepPolyhedron & from); + + // Destructor + virtual ~HepPolyhedron() { delete [] pV; delete [] pF; } + + // Assignment + virtual HepPolyhedron & operator=(const HepPolyhedron & from); + + // Get number of vertices + int GetNoVertices() const { return nvert; } + + // Get number of facets + int GetNoFacets() const { return nface; } + + // Transform the polyhedron + HepPolyhedron & Transform(const HepTransform3D & t); + + // Get next vertex index of the quadrilateral + HepBoolean GetNextVertexIndex(int & index, int & edgeFlag) const; + + // Get vertex by index + HepPoint3D GetVertex(int index) const; + + // Get next vertex + edge visibility of the quadrilateral + HepBoolean GetNextVertex(HepPoint3D & vertex, int & edgeFlag) const; + + // Get next vertex + edge visibility + normal of the quadrilateral + HepBoolean GetNextVertex(HepPoint3D & vertex, int & edgeFlag, + HepNormal3D & normal) const; + + // Get indeces of the next edge with indeces of the faces + HepBoolean GetNextEdgeIndeces(int & i1, int & i2, int & edgeFlag, + int & iface1, int & iface2) const; + + // Get indeces of the next edge + HepBoolean GetNextEdgeIndeces(int & i1, int & i2, int & edgeFlag) const; + + // Get next edge + HepBoolean GetNextEdge(HepPoint3D &p1, HepPoint3D &p2, int &edgeFlag) const; + + // Get next edge + HepBoolean GetNextEdge(HepPoint3D &p1, HepPoint3D &p2, int &edgeFlag, + int &iface1, int &iface2) const; + + // Get face by index + void GetFacet(int iFace, int &n, int *iNodes, + int *edgeFlags = 0, int *iFaces = 0) const; + + // Get face by index + void GetFacet(int iFace, int &n, HepPoint3D *nodes, + int *edgeFlags = 0, HepNormal3D *normals = 0) const; + + // Get next face with normals at the nodes + HepBoolean GetNextFacet(int &n, HepPoint3D *nodes, + int *edgeFlags=0, HepNormal3D *normals=0) const; + + // Get normal of the face given by index + HepNormal3D GetNormal(int iFace) const; + + // Get unit normal of the face given by index + HepNormal3D GetUnitNormal(int iFace) const; + + // Get normal of the next face + HepBoolean GetNextNormal(HepNormal3D &normal) const; + + // Get normal of unit length of the next face + HepBoolean GetNextUnitNormal(HepNormal3D &normal) const; + + // Boolean operations + HepPolyhedron add(const HepPolyhedron &p) const; + HepPolyhedron subtract(const HepPolyhedron &p) const; + HepPolyhedron intersect(const HepPolyhedron &p) const; + + // Set number of steps for whole circle + static void SetNumberOfRotationSteps(int n); + + // Reset number of steps for whole circle to default value + static void ResetNumberOfRotationSteps() { + fNumberOfRotationSteps = DEFAULT_NUMBER_OF_STEPS; + } +}; + +class HepPolyhedronTrd2 : public HepPolyhedron { + public: + HepPolyhedronTrd2(HepDouble Dx1, HepDouble Dx2, + HepDouble Dy1, HepDouble Dy2, HepDouble Dz); + virtual HepPolyhedron& operator = (const HepPolyhedron& from) { + return HepPolyhedron::operator = (from); + } +}; + +class HepPolyhedronTrd1 : public HepPolyhedronTrd2 { + public: + HepPolyhedronTrd1(HepDouble Dx1, HepDouble Dx2, + HepDouble Dy, HepDouble Dz) : + HepPolyhedronTrd2(Dx1, Dx2, Dy, Dy, Dz) {} + virtual HepPolyhedron& operator = (const HepPolyhedron& from) { + return HepPolyhedron::operator = (from); + } +}; + +class HepPolyhedronBox : public HepPolyhedronTrd2 { + public: + HepPolyhedronBox(HepDouble Dx, HepDouble Dy, HepDouble Dz) : + HepPolyhedronTrd2(Dx, Dx, Dy, Dy, Dz) {} + virtual HepPolyhedron& operator = (const HepPolyhedron& from) { + return HepPolyhedron::operator = (from); + } +}; + +class HepPolyhedronTrap : public HepPolyhedron { +public: + HepPolyhedronTrap(HepDouble Dz, HepDouble Theta, HepDouble Phi, + HepDouble Dy1, + HepDouble Dx1, HepDouble Dx2, HepDouble Alp1, + HepDouble Dy2, + HepDouble Dx3, HepDouble Dx4, HepDouble Alp2); + virtual HepPolyhedron& operator = (const HepPolyhedron& from) { + return HepPolyhedron::operator = (from); + } +}; + +class HepPolyhedronPara : public HepPolyhedronTrap { +public: + HepPolyhedronPara(HepDouble Dx, HepDouble Dy, HepDouble Dz, + HepDouble Alpha, HepDouble Theta, HepDouble Phi) : + HepPolyhedronTrap(Dz, Theta, Phi, Dy, Dx, Dx, Alpha, Dy, Dx, Dx, Alpha) {} + virtual HepPolyhedron& operator = (const HepPolyhedron& from) { + return HepPolyhedron::operator = (from); + } +}; + +class HepPolyhedronCons : public HepPolyhedron { +public: + HepPolyhedronCons(HepDouble Rmn1, HepDouble Rmx1, + HepDouble Rmn2, HepDouble Rmx2, HepDouble Dz, + HepDouble Phi1, HepDouble Dphi); + virtual HepPolyhedron& operator = (const HepPolyhedron& from) { + return HepPolyhedron::operator = (from); + } +}; + +class HepPolyhedronCone : public HepPolyhedronCons { +public: + HepPolyhedronCone(HepDouble Rmn1, HepDouble Rmx1, + HepDouble Rmn2, HepDouble Rmx2, HepDouble Dz) + : HepPolyhedronCons(Rmn1, Rmx1, Rmn2, Rmx2, Dz, 0*deg, 360*deg) {} + virtual HepPolyhedron& operator = (const HepPolyhedron& from) { + return HepPolyhedron::operator = (from); + } +}; + +class HepPolyhedronTubs : public HepPolyhedronCons { +public: + HepPolyhedronTubs(HepDouble Rmin, HepDouble Rmax, HepDouble Dz, + HepDouble Phi1, HepDouble Dphi) + : HepPolyhedronCons(Rmin, Rmax, Rmin, Rmax, Dz, Phi1, Dphi) {} + virtual HepPolyhedron& operator = (const HepPolyhedron& from) { + return HepPolyhedron::operator = (from); + } +}; + +class HepPolyhedronTube : public HepPolyhedronCons { +public: + HepPolyhedronTube (HepDouble Rmin, HepDouble Rmax, HepDouble Dz) + : HepPolyhedronCons(Rmin, Rmax, Rmin, Rmax, Dz, 0*deg, 360*deg) {} + virtual HepPolyhedron& operator = (const HepPolyhedron& from) { + return HepPolyhedron::operator = (from); + } +}; + +class HepPolyhedronPgon : public HepPolyhedron { +public: + HepPolyhedronPgon(HepDouble phi, HepDouble dphi, int npdv, int nz, + const HepDouble *z, + const HepDouble *rmin, + const HepDouble *rmax); + virtual HepPolyhedron& operator = (const HepPolyhedron& from) { + return HepPolyhedron::operator = (from); + } +}; + +class HepPolyhedronPcon : public HepPolyhedronPgon { +public: + HepPolyhedronPcon(HepDouble phi, HepDouble dphi, int nz, + const HepDouble *z, + const HepDouble *rmin, + const HepDouble *rmax) + : HepPolyhedronPgon(phi, dphi, 0, nz, z, rmin, rmax) {} + virtual HepPolyhedron& operator = (const HepPolyhedron& from) { + return HepPolyhedron::operator = (from); + } +}; + +class HepPolyhedronSphere : public HepPolyhedron { +public: + HepPolyhedronSphere(HepDouble rmin, HepDouble rmax, + HepDouble phi, HepDouble dphi, + HepDouble the, HepDouble dthe); + virtual HepPolyhedron& operator = (const HepPolyhedron& from) { + return HepPolyhedron::operator = (from); + } +}; + +class HepPolyhedronTorus : public HepPolyhedron { +public: + HepPolyhedronTorus(HepDouble rmin, HepDouble rmax, HepDouble rtor, + HepDouble phi, HepDouble dphi); + virtual HepPolyhedron& operator = (const HepPolyhedron& from) { + return HepPolyhedron::operator = (from); + } +}; + +#endif /* HEP_POLYHEDRON_HH */ diff --git a/source/graphics_reps/src/BooleanProcessor.src b/source/graphics_reps/src/BooleanProcessor.src new file mode 100755 index 0000000000..f8be6cb3ac --- /dev/null +++ b/source/graphics_reps/src/BooleanProcessor.src @@ -0,0 +1,2045 @@ +/*********************************************************************** + * * + * Name: BooleanProcessor Date: 10.12.99 * + * Author: E.Chernyaev Revised: * + * * + * Function: Internal class for executing boolean operations * + * on Polyhedra * + * * + ***********************************************************************/ + +#define INITIAL_SIZE 200 +#define CRAZY_POINT HepPoint3D(-10.e+6, -10.e+6, -10.e+6) +#define GRANULARITY 10.e+5; + +#define SWAP(A,B) w = A; A = B; B = w + +#define OP_UNION 0 // Operations +#define OP_INTERSECTION 1 +#define OP_SUBTRACTION 2 + +#define OUT_OF_PLANE 0 // Face vs face statuses +#define ON_PLANE 1 +#define INTERSECTION 2 +#define EDGE 3 +#define NON_PLANAR_FACE 4 + +#define UNKNOWN_FACE 0 // Face statuses +#define ORIGINAL_FACE -1 +#define NEW_FACE -2 +#define UNSUITABLE_FACE -3 +#define DEFECTIVE_FACE -4 + +// -------------------------------------------- Simplified STL vector --- +template +class vector { + private: + int cur_size, max_size; + T * v; + + public: + vector(): cur_size(0), max_size(INITIAL_SIZE), v(new T[INITIAL_SIZE]) {} + ~vector() { delete [] v; } + + void clear() { cur_size = 0; } + int size() const { return cur_size; } + T & operator[](int i) { return v[i]; } + const T & operator[](int i) const { return v[i]; } + T & front() { return v[0]; } + const T & front() const { return v[0]; } + T & back() { return v[cur_size-1]; } + const T & back() const { return v[cur_size-1]; } + void pop_back() { cur_size--; } + void push_back(const T & a) { + if (cur_size == max_size) { + T * w = v; + max_size *= 2; + v = new T[max_size]; + for (int i=0; i nodes; // vector of nodes +static vector edges; // vector of edges +static vector faces; // vector of faces + +// ---------------------------------------------------- List of faces --- +class FaceList { + private: + int ihead; + int ilast; + + public: + FaceList() : ihead(0), ilast(0) {} + ~FaceList() {} + + void clean() { ihead = 0; ilast = 0; } + int front() { return ihead; } + + void push_back(int i) { + if (ilast == 0) { ihead = i; } else { faces[ilast].inext = i; } + faces[i].iprev = ilast; + faces[i].inext = 0; + ilast = i; + } + + void remove(int i) { + if (ihead == i) { + ihead = faces[i].inext; + }else{ + faces[faces[i].iprev].inext = faces[i].inext; + } + if (ilast == i) { + ilast = faces[i].iprev; + }else{ + faces[faces[i].inext].iprev = faces[i].iprev; + } + faces[i].iprev = 0; + faces[i].inext = 0; + } +}; + +// --------------------- Polyhedron with extended access to +// its members from the BooleanProcessor class --- +class ExtPolyhedron : public HepPolyhedron { + friend class BooleanProcessor; + virtual HepPolyhedron& operator = (const HepPolyhedron& from) { + return HepPolyhedron::operator = (from); + } +}; + +// ----------------------------------------- Boolean processor class --- +class BooleanProcessor { + private: + int processor_error; // is set in case of error + int operation; // 0 (union), 1 (intersection), 2 (subtraction) + int ifaces1, ifaces2; // lists of faces + int iout1, iout2; // lists of faces with status "out" + double rmin[3], rmax[3]; // intersection of bounding boxes + double del; // precision (tolerance) + + FaceList result_faces; // list of accepted faces + FaceList suitable_faces; // list of suitable faces + FaceList unsuitable_faces; // list of unsuitable faces + FaceList unknown_faces; // list of unknown faces + + vector external_contours; // heads of external contours + vector internal_contours; // heads of internal contours + + private: + void takePolyhedron(const HepPolyhedron & p, double, double, double); + double findMinMax(); + void selectOutsideFaces(int & ifaces, int & iout); + int testFaceVsPlane(ExtEdge & edge); + void renumberNodes(int & i1, int & i2, int & i3, int & i4); + int testEdgeVsEdge(ExtEdge & edge1, ExtEdge & edge2); + void removeJunkNodes() { while(nodes.back().s != 0) nodes.pop_back(); } + void divideEdge(int & i1, int & i2); + void insertEdge(const ExtEdge & edge); + void caseII(ExtEdge & edge1, ExtEdge & edge2); + void caseIE(ExtEdge & edge1, ExtEdge & edge2); + void caseEE(ExtEdge & edge1, ExtEdge & edge2); + void testFaceVsFace(int iface1, int iface2); + void invertNewEdges(int iface); + void checkDoubleEdges(int iface); + void assembleFace(int what, int iface); + void assembleNewFaces(int what, int ihead); + void initiateLists(); + void assemblePolyhedra(); + void findABC(double x1, double y1, double x2, double y2, + double &a, double &b, double &c) const; + int checkDirection(double *x, double *y) const; + int checkIntersection(int ix, int iy, int i1, int i2) const; + void mergeContours(int ix, int iy, int kext, int kint); + int checkTriangle(int iedge1, int iedge2, int ix, int iy) const; + void triangulateContour(int ix, int iy, int ihead); + void modifyReference(int iface, int i1, int i2, int iref); + void triangulateFace(int iface); + HepPolyhedron createPolyhedron(); + + public: + BooleanProcessor() {} + ~BooleanProcessor() {} + + HepPolyhedron execute(int op, + const HepPolyhedron &a, + const HepPolyhedron &b); + + void draw(); + void draw_edge(int, int); + void draw_contour(int, int, int); + void draw_faces(int, int, int); +}; + +inline void ExtFace::invert() +/*********************************************************************** + * * + * Name: ExtFace::invert() Date: 28.02.00 * + * Author: E.Chernyaev Revised: * + * * + * Function: Invert face * + * * + ***********************************************************************/ +{ + int iEprev, iEcur, iEnext; + + iEprev = 0; iEcur = iold; + while (iEcur > 0) { + edges[iEcur].invert(); + iEnext = edges[iEcur].inext; + edges[iEcur].inext = iEprev; + iEprev = iEcur; + iEcur = iEnext; + } + if (iold > 0) iold = iEprev; + + iEprev = 0; iEcur = inew; + while (iEcur > 0) { + edges[iEcur].invert(); + iEnext = edges[iEcur].inext; + edges[iEcur].inext = iEprev; + iEprev = iEcur; + iEcur = iEnext; + } + if (inew > 0) inew = iEprev; + + plane = HepPlane3D(-plane.a(), -plane.b(), -plane.c(), -plane.d()); +} + +void BooleanProcessor::takePolyhedron(const HepPolyhedron & p, + double dx, double dy, double dz) +/*********************************************************************** + * * + * Name: BooleanProcessor::takePolyhedron Date: 16.12.99 * + * Author: E.Chernyaev Revised: * + * * + * Function: Transfer Polyhedron to internal representation * + * * + ***********************************************************************/ +{ + int i, k, nnode, iNodes[5], iVis[4], iFaces[4]; + int dnode = nodes.size() - 1; + int dface = faces.size() - 1; + + // S E T N O D E S + + // for (i=1; i <= p.GetNoVertices(); i++) { + // nodes.push_back(ExtNode(p.GetVertex(i))); + // } + + HepPoint3D ppp; + for (i=1; i <= p.GetNoVertices(); i++) { + ppp = p.GetVertex(i); + ppp.setX(ppp.x()+dx); + ppp.setY(ppp.y()+dy); + ppp.setZ(ppp.z()+dz); + nodes.push_back(ExtNode(ppp)); + } + + // S E T F A C E S + + for (int iface=1; iface <= p.GetNoFacets(); iface++) { + faces.push_back(ExtFace(edges.size())); + + // S E T F A C E N O D E S + + p.GetFacet(iface, nnode, iNodes, iVis, iFaces); + for (i=0; i p.GetNoVertices()) processor_error = 1; + if (iFaces[i] < 1 || iFaces[i] > p.GetNoFacets()) processor_error = 1; + iNodes[i] += dnode; + iFaces[i] += dface; + } + + // S E T E D G E S + + iNodes[nnode] = iNodes[0]; + faces.back().iedges[3] = 0; + for (i=0; i nodes[iNodes[i]].v[k]) + faces.back().rmin[k] = nodes[iNodes[i]].v[k]; + if (faces.back().rmax[k] < nodes[iNodes[i]].v[k]) + faces.back().rmax[k] = nodes[iNodes[i]].v[k]; + } + } + + // S E T F A C E P L A N E + + HepNormal3D n = (nodes[iNodes[2]].v-nodes[iNodes[0]].v).cross + (nodes[iNodes[3]].v-nodes[iNodes[1]].v); + HepPoint3D p(0,0,0); + + for (i=0; i 0) { + for (i=0; i<3; i++) { + if (rmin1[i] > faces[iface].rmin[i]) rmin1[i] = faces[iface].rmin[i]; + if (rmax1[i] < faces[iface].rmax[i]) rmax1[i] = faces[iface].rmax[i]; + } + iface = faces[iface].inext; + } + + iface = faces[ifaces2].inext; + while(iface > 0) { + for (i=0; i<3; i++) { + if (rmin2[i] > faces[iface].rmin[i]) rmin2[i] = faces[iface].rmin[i]; + if (rmax2[i] < faces[iface].rmax[i]) rmax2[i] = faces[iface].rmax[i]; + } + iface = faces[iface].inext; + } + + // F I N D I N T E R S E C T I O N O F B O U N D I N G B O X E S + + for (i=0; i<3; i++) { + rmin[i] = (rmin1[i] > rmin2[i]) ? rmin1[i] : rmin2[i]; + rmax[i] = (rmax1[i] < rmax2[i]) ? rmax1[i] : rmax2[i]; + } + + // F I N D T O L E R A N C E + + double del1 = 0; + double del2 = 0; + for (i=0; i<3; i++) { + if ((rmax1[i]-rmin1[i]) > del1) del1 = rmax1[i]-rmin1[i]; + if ((rmax2[i]-rmin2[i]) > del2) del2 = rmax2[i]-rmin2[i]; + } + return ((del1 < del2) ? del1 : del2) / GRANULARITY; +} + +void BooleanProcessor::selectOutsideFaces(int & ifaces, int & iout) +/*********************************************************************** + * * + * Name: BooleanProcessor::selectOutsideFaces Date: 10.01.00 * + * Author: E.Chernyaev Revised: * + * * + * Function: Preselection of outside faces * + * * + ***********************************************************************/ +{ + int i, outflag, iface = ifaces, *prev; + HepPoint3D mmbox[8] = { HepPoint3D(rmin[0],rmin[1],rmin[2]), + HepPoint3D(rmax[0],rmin[1],rmin[2]), + HepPoint3D(rmin[0],rmax[1],rmin[2]), + HepPoint3D(rmax[0],rmax[1],rmin[2]), + HepPoint3D(rmin[0],rmin[1],rmax[2]), + HepPoint3D(rmax[0],rmin[1],rmax[2]), + HepPoint3D(rmin[0],rmax[1],rmax[2]), + HepPoint3D(rmax[0],rmax[1],rmax[2]) }; + prev = &ifaces; + while (iface > 0) { + + // B O U N D I N G B O X vs B O U N D I N G B O X + + outflag = 0; + for (i=0; i<3; i++) { + if (faces[iface].rmin[i] > rmax[i] + del) { outflag = 1; break; } + if (faces[iface].rmax[i] < rmin[i] - del) { outflag = 1; break; } + } + + // B O U N D I N G B O X vs P L A N E + + if (outflag == 0) { + int npos = 0, nneg = 0; + double d; + for (i=0; i<8; i++) { + d = faces[iface].plane.distance(mmbox[i]); + if (d > +del) npos++; + if (d < -del) nneg++; + } + if (npos == 8 || nneg == 8) outflag = 1; + } + + // U P D A T E L I S T S + + if (outflag == 1) { + *prev = faces[iface].inext; + faces[iface].inext = iout; + iout = iface; + }else{ + prev = &faces[iface].inext; + } + iface = *prev; + } +} + +int BooleanProcessor::testFaceVsPlane(ExtEdge & edge) +/*********************************************************************** + * * + * Name: BooleanProcessor::testFaceVsPlane Date: 19.01.00 * + * Author: E.Chernyaev Revised: * + * * + * Function: Find result of intersection of face by plane * + * * + ***********************************************************************/ +{ + int iface = edge.iface1; + HepPlane3D plane = faces[edge.iface2].plane; + int i, nnode, npos = 0, nneg = 0, nzer = 0; + double dd[5]; + + // F I N D D I S T A N C E S + + nnode = (faces[iface].iedges[3] == 0) ? 3 : 4; + for (i=0; i del) { + npos++; + }else if (dd[i] < -del) { + nneg++; + }else{ + nzer++; dd[i] = 0; + } + } + + // S O M E S I M P L E C A S E S ( N O I N T E R S E C T I O N ) + + if (npos == nnode || nneg == nnode) return OUT_OF_PLANE; + if (nzer == 1 && nneg == 0) return OUT_OF_PLANE; + if (nzer == 1 && npos == 0) return OUT_OF_PLANE; + if (nzer == nnode) return ON_PLANE; + if (nzer == 3) return NON_PLANAR_FACE; + + // F I N D I N T E R S E C T I O N + + int ie1, ie2, s1, s2, status, nint = 0; + enum { PLUS_MINUS, MINUS_PLUS, ZERO_ZERO, ZERO_PLUS, ZERO_MINUS }; + + dd[nnode] = dd[0]; + for (i=0; i 0) { + if (dd[i+1] >= 0) continue; + status = PLUS_MINUS; + }else if (dd[i] < 0) { + if (dd[i+1] <= 0) continue; + status = MINUS_PLUS; + }else{ + status = ZERO_ZERO; + if (dd[i+1] > 0) status = ZERO_PLUS; + if (dd[i+1] < 0) status = ZERO_MINUS; + } + switch (nint) { + case 0: + ie1 = i; s1 = status; nint++; break; + case 1: + ie2 = i; s2 = status; nint++; break; + default: + return NON_PLANAR_FACE; + } + } + if (nint != 2) return NON_PLANAR_FACE; + + // F O R M I N T E R S E C T I O N S E G M E N T + + if (s1 != ZERO_ZERO && s2 != ZERO_ZERO) { + if (s1 == s2) return NON_PLANAR_FACE; + int iedge, i1, i2, ii[2]; + double d1, d2, dd ; + ii[0] = ie1; ii[1] = ie2; + for (i=0; i<2; i++) { + iedge = faces[iface].iedges[ii[i]]; + while (iedge > 0) { + i1 = edges[iedge].i1; + i2 = edges[iedge].i2; + d1 = plane.distance(nodes[i1].v); + d2 = plane.distance(nodes[i2].v); + if (d1 > del) { + if (d2 < -del) { ii[i] = nodes.size(); break; } // +- + }else if (d1 < -del) { + if (d2 > del) { ii[i] = nodes.size(); break; } // -+ + }else{ + ii[i] = i1; break; // 0+ or 0- + } + iedge = edges[iedge].inext; + } + if (ii[i] == nodes.size()) { + dd = d2-d1; d1 = d1/dd; d2 = d2/dd; + nodes.push_back(ExtNode(d2*nodes[i1].v-d1*nodes[i2].v, iedge)); + } + } + edge.inext = 0; + if (s1 == MINUS_PLUS || s1 == ZERO_PLUS) { + edge.i1 = ii[1]; + edge.i2 = ii[0]; + }else{ + edge.i1 = ii[0]; + edge.i2 = ii[1]; + } + return INTERSECTION; + }else{ + if (npos == nneg) return NON_PLANAR_FACE; + edge.inext = (s1 == ZERO_ZERO) ? ie1+1 : ie2+1; + if (s1 == ZERO_PLUS || s2 == ZERO_MINUS) { + edge.i1 = edges[faces[iface].iedges[ie2]].i1; + edge.i2 = edges[faces[iface].iedges[ie1]].i1; + }else{ + edge.i1 = edges[faces[iface].iedges[ie1]].i1; + edge.i2 = edges[faces[iface].iedges[ie2]].i1; + } + return EDGE; + } +} + +void BooleanProcessor::renumberNodes(int & i1, int & i2, int & i3, int & i4) +/*********************************************************************** + * * + * Name: BooleanProcessor::renumberNodes Date: 19.01.00 * + * Author: E.Chernyaev Revised: * + * * + * Function: Renumber nodes and remove last temporary node. * + * Remark: In principal this routine can be replaced just * + * with i1 = i2; * + * Removal of temporary nodes provides additional control * + * on number of nodes, that is very useful for debugging. * + * * + ***********************************************************************/ +{ + if (i1 == i2) return; + if (nodes[i1].s == 0 || nodes.back().s == 0) { i1 = i2; return; } + + int ilast = nodes.size()-1; + if (i1 == ilast) { i1 = i2; nodes.pop_back(); return; } + if (i2 == ilast) { i2 = i1; } + if (i3 == ilast) { i3 = i1; } + if (i4 == ilast) { i4 = i1; } + nodes[i1] = nodes.back(); i1 = i2; nodes.pop_back(); +} + +int BooleanProcessor::testEdgeVsEdge(ExtEdge & edge1, ExtEdge & edge2) +/*********************************************************************** + * * + * Name: BooleanProcessor::testEdgeVsEdge Date: 19.01.00 * + * Author: E.Chernyaev Revised: * + * * + * Function: Find common part of two edges * + * * + ***********************************************************************/ +{ + int i, ii; + double d, dd = 0.; + + for (i=0; i<3; i++) { + d = nodes[edge1.i1].v[i]-nodes[edge1.i2].v[i]; + if (d < 0.) d = -d; + if (d > dd) { dd = d; ii = i; } + } + double t1 = nodes[edge1.i1].v[ii]; + double t2 = nodes[edge1.i2].v[ii]; + double t3 = nodes[edge2.i1].v[ii]; + double t4 = nodes[edge2.i2].v[ii]; + if (t2-t1 < 0.) { t1 = -t1; t2 = -t2; t3 = -t3; t4 = -t4; } + + if (t3 <= t1+del || t4 >= t2-del) return 0; + if (t3 > t2+del) { + renumberNodes(edge2.i1, edge1.i2, edge1.i1, edge2.i2); + }else if (t3 < t2-del) { + renumberNodes(edge1.i2, edge2.i1, edge1.i1, edge2.i2); + } + if (t4 < t1-del) { + renumberNodes(edge2.i2, edge1.i1, edge1.i2, edge2.i1); + }else if (t4 > t1+del) { + renumberNodes(edge1.i1, edge2.i2, edge1.i2, edge2.i1); + } + return 1; +} + +void BooleanProcessor::divideEdge(int & i1, int & i2) +/*********************************************************************** + * * + * Name: BooleanProcessor::divideEdge Date: 24.01.00 * + * Author: E.Chernyaev Revised: * + * * + * Function: Unify the nodes and divide edge on two parts by the node. * + * * + ***********************************************************************/ +{ + int iedges[2]; + iedges[0] = nodes[i1].s; + iedges[1] = nodes[i2].s; + + // U N I F Y N O D E S + + if (i1 < i2) { i2 = i1; } + else if (i1 > i2) { i1 = i2; } + else { iedges[1] = 0; } + if (iedges[0] == iedges[1]) return; + + int ie1, ie2, inode = i1; + nodes[inode].s = 0; + for (int i=0; i<2; i++) { + + // F I N D C O R R E S P O N D I N G E D G E + + if ((ie1 = iedges[i]) == 0) continue; + ie2 = faces[edges[ie1].iface2].iedges[0]; + while (ie2 > 0) { + if (edges[ie2].i1 == edges[ie1].i2 && + edges[ie2].i2 == edges[ie1].i1) break; + ie2 = edges[ie2].inext; + } + + // D I V I D E E D G E S + + edges.push_back(edges[ie1]); + edges[ie1].inext = edges.size() - 1; + edges[ie1].i2 = inode; + edges.back().i1 = inode; + + edges.push_back(edges[ie2]); + edges[ie2].inext = edges.size() - 1; + edges[ie2].i2 = inode; + edges.back().i1 = inode; + } +} + +void BooleanProcessor::insertEdge(const ExtEdge & edge) +/*********************************************************************** + * * + * Name: BooleanProcessor::insertEdge Date: 24.01.00 * + * Author: E.Chernyaev Revised: * + * * + * Function: Insert edge to the list of new edges * + * * + ***********************************************************************/ +{ + int iface = edge.iface1; + edges.push_back(edge); + edges.back().inext = faces[iface].inew; + faces[iface].inew = edges.size() - 1; +} + +void BooleanProcessor::caseII(ExtEdge & edge1, ExtEdge & edge2) +/*********************************************************************** + * * + * Name: BooleanProcessor::caseII Date: 19.01.00 * + * Author: E.Chernyaev Revised: * + * * + * Function: Intersection/Intersection case * + * * + ***********************************************************************/ +{ + divideEdge(edge1.i1, edge2.i2); + divideEdge(edge1.i2, edge2.i1); + edge1.ivis = 1; + edge2.ivis = 1; + insertEdge(edge1); + insertEdge(edge2); +} + +void BooleanProcessor::caseIE(ExtEdge & edge1, ExtEdge & edge2) +/*********************************************************************** + * * + * Name: BooleanProcessor::caseIE Date: 19.01.00 * + * Author: E.Chernyaev Revised: * + * * + * Function: Intersection/Edge-touch case * + * * + ***********************************************************************/ +{ + processor_error = 1; + HepStd::cout + << "BooleanProcessor::caseIE : unimplemented case" + << HepStd::endl; +} + +void BooleanProcessor::caseEE(ExtEdge & edge1, ExtEdge & edge2) +/*********************************************************************** + * * + * Name: BooleanProcessor::caseEE Date: 19.01.00 * + * Author: E.Chernyaev Revised: * + * * + * Function: Edge-touch/Edge-touch case * + * * + ***********************************************************************/ +{ + processor_error = 1; + HepStd::cout + << "BooleanProcessor::caseEE : unimplemented case" + << HepStd::endl; +} + +void BooleanProcessor::testFaceVsFace(int iface1, int iface2) +/*********************************************************************** + * * + * Name: BooleanProcessor::testFaceVsFace Date: 11.01.00 * + * Author: E.Chernyaev Revised: * + * * + * Function: Find result (an edge) of intersection of two faces * + * * + ***********************************************************************/ +{ + ExtEdge edge1, edge2; + int irep1, irep2; + + // M I N - M A X + + for (int i=0; i<3; i++) { + if (faces[iface1].rmin[i] > faces[iface2].rmax[i] + del) return; + if (faces[iface1].rmax[i] < faces[iface2].rmin[i] - del) return; + } + + // F A C E - 1 vs P L A N E - 2 + + edge1.iface1 = iface1; + edge1.iface2 = iface2; + irep1 = testFaceVsPlane(edge1); + if (irep1 == OUT_OF_PLANE || irep1 == ON_PLANE) { + removeJunkNodes(); + return; + } + + // F A C E - 2 vs P L A N E - 1 + + edge2.iface1 = iface2; + edge2.iface2 = iface1; + irep2 = testFaceVsPlane(edge2); + if (irep2 == OUT_OF_PLANE || irep2 == ON_PLANE) { + removeJunkNodes(); + return; + } + + // C H E C K F O R N O N P L A N A R F A C E + + if (irep1 == NON_PLANAR_FACE || irep2 == NON_PLANAR_FACE) { + removeJunkNodes(); + return; + } + + // F I N D I N T E R S E C T I O N P A R T + + if (testEdgeVsEdge(edge1, edge2) == 0) return; + + // C O N S I D E R D I F F E R E N T C A S E S + + if (irep1 == INTERSECTION && irep2 == INTERSECTION) caseII(edge1, edge2); + if (irep1 == INTERSECTION && irep2 == EDGE) caseIE(edge1, edge2); + if (irep1 == EDGE && irep2 == INTERSECTION) caseIE(edge2, edge1); + if (irep1 == EDGE && irep2 == EDGE) caseEE(edge1, edge2); + removeJunkNodes(); + +} + +void BooleanProcessor::invertNewEdges(int iface) +/*********************************************************************** + * * + * Name: BooleanProcessor::invertNewEdges Date: 04.02.00 * + * Author: E.Chernyaev Revised: * + * * + * Function: Invert direction of new edges * + * * + ***********************************************************************/ +{ + int iedge = faces[iface].inew; + while (iedge > 0) { + edges[iedge].invert(); + iedge = edges[iedge].inext; + } +} + +void BooleanProcessor::checkDoubleEdges(int iface) +/*********************************************************************** + * * + * Name: BooleanProcessor::checkDoubleEdges Date: 04.02.00 * + * Author: E.Chernyaev Revised: * + * * + * Function: Eliminate duplication of edges * + * * + ***********************************************************************/ +{ + +} + +void BooleanProcessor::assembleFace(int what, int iface) +/*********************************************************************** + * * + * Name: BooleanProcessor::assembleFace Date: 19.02.00 * + * Author: E.Chernyaev Revised: * + * * + * Function: Assemble face * + * * + ***********************************************************************/ +{ + // A S S E M B L E N E W F A C E + + int ihead; // head of the list of edges for new face + int icur; // current edge in the list - last edge inserted to the list + int *ilink; // pointer to the current link + int ifirst; // first node of a contour + int *i; // pointer to the index of the current edge in a loop + int ioldflag=0; // is set if an edge from iold has been taken + +#define INSERT_EDGE_TO_THE_LIST(A) \ +*ilink = A; ilink = &edges[A].inext; *ilink = 0 + + ilink = &ihead; + for(;;) { + if (faces[iface].inew == 0) break; + + // S T A R T N E W C O N T O U R + + icur = faces[iface].inew; + faces[iface].inew = edges[icur].inext; + INSERT_EDGE_TO_THE_LIST(icur); + ifirst = edges[icur].i1; + + // C O N S T R U C T T H E C O N T O U R + + for (;;) { + i = &faces[iface].inew; + while(*i > 0) { + if (edges[*i].i1 == edges[icur].i2) break; + i = &edges[*i].inext; + } + if (*i == 0) { + i = &faces[iface].iold; + while(*i > 0) { + if (edges[*i].i1 == edges[icur].i2) ioldflag = 1; + if (edges[*i].i1 == edges[icur].i2) break; + i = &edges[*i].inext; + } + } + if (*i > 0) { + icur = *i; + *i = edges[icur].inext; + INSERT_EDGE_TO_THE_LIST(icur); + if (edges[icur].i2 == ifirst) { break; } else { continue; } + }else{ + processor_error = 1; + HepStd::cerr + << "BooleanProcessor::assembleFace(" << iface << ") : " + << "could not find next edge of the contour" + << HepStd::endl; + faces[iface].inew = DEFECTIVE_FACE; + return; + } + } + } + + // C H E C K O R I G I N A L C O N T O U R + + int iedge; + iedge = faces[iface].iold; + if (what == 0 && ioldflag == 0 && iedge > 0) { + for (;;) { + if (edges[iedge].inext > 0) { + if (edges[iedge].i2 == edges[edges[iedge].inext].i1) { + iedge = edges[iedge].inext; + }else{ + break; + } + }else{ + if (edges[iedge].i2 == edges[faces[iface].iold].i1) { + edges[iedge].inext = ihead; // set new face + return; + }else{ + break; + } + } + } + } + + // M A R K U N S U I T A B L E N E I G H B O U R I N G F A C E S + + int iface2; + iedge = faces[iface].iold; + while(iedge > 0) { + iface2 = edges[iedge].iface2; + if (faces[iface2].inew == 0) faces[iface2].inew = UNSUITABLE_FACE; + iedge = edges[iedge].inext; + } + faces[iface].iold = ihead; // set new face +} + +void BooleanProcessor::assembleNewFaces(int what, int ihead) +/*********************************************************************** + * * + * Name: BooleanProcessor::assembleNewFaces Date: 30.01.00 * + * Author: E.Chernyaev Revised: * + * * + * Function: Assemble internal or external parts of faces * + * * + ***********************************************************************/ +{ + int iface = ihead; + while(iface > 0) { + if (faces[iface].inew > 0) { + if (what != 0) invertNewEdges(iface); + checkDoubleEdges(iface); + assembleFace(what, iface); + faces[iface].inew = + (faces[iface].iold == 0) ? UNSUITABLE_FACE : NEW_FACE; + } + iface = faces[iface].inext; + } +} + +void BooleanProcessor::initiateLists() +/*********************************************************************** + * * + * Name: BooleanProcessor::initiateLists Date: 28.02.00 * + * Author: E.Chernyaev Revised: * + * * + * Function: Initiate lists of faces. * + * * + ***********************************************************************/ +{ + int i, iface; + + // R E S E T L I S T S O F F A C E S + + result_faces.clean(); + suitable_faces.clean(); + unsuitable_faces.clean(); + unknown_faces.clean(); + + // I N I T I A T E T H E L I S T S + + iface = iout1; + while (iface > 0) { + i = iface; + iface = faces[i].inext; + if (operation == OP_INTERSECTION) { + unsuitable_faces.push_back(i); + faces[i].inew = UNSUITABLE_FACE; + }else{ + suitable_faces.push_back(i); + faces[i].inew = ORIGINAL_FACE; + } + } + iface = iout2; + while (iface > 0) { + i = iface; + iface = faces[i].inext; + if (operation == OP_UNION) { + suitable_faces.push_back(i); + faces[i].inew = ORIGINAL_FACE; + }else{ + unsuitable_faces.push_back(i); + faces[i].inew = UNSUITABLE_FACE; + } + } + iface = ifaces1; + while (iface > 0) { + i = iface; + iface = faces[i].inext; + switch(faces[i].inew) { + case UNKNOWN_FACE: + unknown_faces.push_back(i); + break; + case ORIGINAL_FACE: case NEW_FACE: + suitable_faces.push_back(i); + break; + case UNSUITABLE_FACE: + unsuitable_faces.push_back(i); + break; + default: + faces[i].iprev = 0; + faces[i].inext = 0; + break; + } + } + iface = ifaces2; + while (iface > 0) { + i = iface; + iface = faces[i].inext; + if (operation == OP_SUBTRACTION) faces[i].invert(); + switch(faces[i].inew) { + case UNKNOWN_FACE: + unknown_faces.push_back(i); + break; + case ORIGINAL_FACE: case NEW_FACE: + suitable_faces.push_back(i); + break; + case UNSUITABLE_FACE: + unsuitable_faces.push_back(i); + break; + default: + faces[i].iprev = 0; + faces[i].inext = 0; + break; + } + } + ifaces1 = ifaces2 = iout1 = iout2 = 0; +} + +void BooleanProcessor::assemblePolyhedra() +/*********************************************************************** + * * + * Name: BooleanProcessor::assemblePolyhedra() Date: 10.12.99 * + * Author: E.Chernyaev Revised: * + * * + * Function: Collect suitable faces and remove unsuitable ones. * + * * + ***********************************************************************/ +{ + int i, iedge, iface; + + // L O O P A L O N G S U I T A B L E F A C E S + + iface = suitable_faces.front(); + while(iface > 0) { + i = iface; + iedge = faces[i].iold; + while(iedge > 0) { + iface = edges[iedge].iface2; + if (faces[iface].inew == UNKNOWN_FACE) { + unknown_faces.remove(iface); + suitable_faces.push_back(iface); + faces[iface].inew = ORIGINAL_FACE; + } + iedge = edges[iedge].inext; + } + iface = faces[i].inext; + suitable_faces.remove(i); + result_faces.push_back(i); + } + if (unknown_faces.front() == 0) return; + + // L O O P A L O N G U N S U I T A B L E F A C E S + + iface = unsuitable_faces.front(); + while(iface > 0) { + i = iface; + iedge = faces[i].iold; + while(iedge > 0) { + iface = edges[iedge].iface2; + if (faces[iface].inew == UNKNOWN_FACE) { + unknown_faces.remove(iface); + unsuitable_faces.push_back(iface); + faces[iface].inew = UNSUITABLE_FACE; + } + iedge = edges[iedge].inext; + } + iface = faces[i].inext; + unsuitable_faces.remove(i); + } +} + +inline void +BooleanProcessor::findABC(double x1, double y1, double x2, double y2, + double &a, double &b, double &c) const +/*********************************************************************** + * * + * Name: BooleanProcessor::findABC Date: 07.03.00 * + * Author: E.Chernyaev Revised: * + * * + * Function: Find line equation Ax+By+C=0 * + * * + ***********************************************************************/ +{ + double w; + a = y1 - y2; + b = x2 - x1; + w = abs(a)+abs(b); + a /= w; + b /= w; + c = -(a*x2 + b*y2); +} + +int BooleanProcessor::checkDirection(double *x, double *y) const +/*********************************************************************** + * * + * Name: BooleanProcessor::checkDirection Date: 06.03.00 * + * Author: E.Chernyaev Revised: * + * * + * Function: Check direction of line 1-4 * + * * + ***********************************************************************/ +{ + double a1, b1, c1, a2, b2, c2, d1, d2; + + // T E S T L I N E 1 - 4 V S E X T E R N A L C O N T O U R + + findABC(x[0], y[0], x[1], y[1], a1, b1, c1); + findABC(x[1], y[1], x[2], y[2], a2, b2, c2); + d1 = a1*x[4] + b1*y[4] + c1; + d2 = a2*x[4] + b2*y[4] + c2; + if (d1 <= del && d2 <= del) return 1; + if (! (d1 > del && d2 > del)) { + if ( a1*x[2] + b1*y[2] + c1 >= -del) return 1; + } + + // T E S T L I N E 1 - 4 V S I N T E R N A L C O N T O U R + + findABC(x[3], y[3], x[4], y[4], a1, b1, c1); + findABC(x[4], y[4], x[5], y[5], a2, b2, c2); + d1 = a1*x[1] + b1*y[1] + c1; + d2 = a2*x[1] + b2*y[1] + c2; + if (d1 <= del && d2 <= del) return 1; + if (!(d1 > del && d2 > del)) { + if ( a1*x[5] + b1*y[5] + c1 >= -del) return 1; + } + return 0; +} + +int BooleanProcessor::checkIntersection(int ix, int iy, int i1, int i2) const +/*********************************************************************** + * * + * Name: BooleanProcessor::checkDirection Date: 06.03.00 * + * Author: E.Chernyaev Revised: * + * * + * Function: Check line i1-i2 on intersection with contours * + * * + ***********************************************************************/ +{ + // F I N D L I N E E Q U A T I O N + + double x1, y1, x2, y2, a1, b1, c1; + x1 = nodes[i1].v[ix]; + y1 = nodes[i1].v[iy]; + x2 = nodes[i2].v[ix]; + y2 = nodes[i2].v[iy]; + findABC(x1, y1, x2, y2, a1, b1, c1); + + // L O O P A L O N G E X T E R N A L C O N T O U R S + + int icontour, iedge, k1, k2; + double x3, y3, x4, y4, a2, b2, c2, d1, d2; + for(icontour=0; icontour 0) { + k1 = edges[iedge].i1; + k2 = edges[iedge].i2; + iedge = edges[iedge].inext; + if (k1 == i1 || k2 == i1) continue; + if (k1 == i2 || k2 == i2) continue; + x3 = nodes[k1].v[ix]; + y3 = nodes[k1].v[iy]; + x4 = nodes[k2].v[ix]; + y4 = nodes[k2].v[iy]; + d1 = a1*x3 + b1*y3 + c1; + d2 = a1*x4 + b1*y4 + c1; + if (d1 > del && d2 > del) continue; + if (d1 < -del && d2 < -del) continue; + + findABC(x3, y3, x4, y4, a2, b2, c2); + d1 = a2*x1 + b2*y1 + c2; + d2 = a2*x2 + b2*y2 + c2; + if (d1 > del && d2 > del) continue; + if (d1 < -del && d2 < -del) continue; + return 1; + } + } + + // L O O P A L O N G E X T E R N A L C O N T O U R S + + for(icontour=0; icontour 0) { + k1 = edges[iedge].i1; + k2 = edges[iedge].i2; + iedge = edges[iedge].inext; + if (k1 == i1 || k2 == i1) continue; + if (k1 == i2 || k2 == i2) continue; + x3 = nodes[k1].v[ix]; + y3 = nodes[k1].v[iy]; + x4 = nodes[k2].v[ix]; + y4 = nodes[k2].v[iy]; + d1 = a1*x3 + b1*y3 + c1; + d2 = a1*x4 + b1*y4 + c1; + if (d1 > del && d2 > del) continue; + if (d1 < -del && d2 < -del) continue; + + findABC(x3, y3, x4, y4, a2, b2, c2); + d1 = a2*x1 + b2*y1 + c2; + d2 = a2*x2 + b2*y2 + c2; + if (d1 > del && d2 > del) continue; + if (d1 < -del && d2 < -del) continue; + return 1; + } + } + return 0; +} + +void BooleanProcessor::mergeContours(int ix, int iy, int kext, int kint) +/*********************************************************************** + * * + * Name: BooleanProcessor::mergeContours Date: 06.03.00 * + * Author: E.Chernyaev Revised: * + * * + * Function: Attemp to merge internal contour with external one * + * * + ***********************************************************************/ +{ + int i1ext, i2ext, i1int, i2int, i, k[6]; + double x[6], y[6]; + + // L O O P A L O N G E X T E R N A L C O N T O U R + + i1ext = external_contours[kext]; + while (i1ext > 0) { + i2ext = edges[i1ext].inext; + if (i2ext == 0) i2ext = external_contours[kext]; + k[0] = edges[i1ext].i1; + k[1] = edges[i1ext].i2; + k[2] = edges[i2ext].i2; + for (i=0; i<3; i++) { + x[i] = nodes[k[i]].v[ix]; + y[i] = nodes[k[i]].v[iy]; + } + + // L O O P A L O N G I N T E R N A L C O N T O U R + + i1int = internal_contours[kint]; + while (i1int > 0) { + i2int = edges[i1int].inext; + if (i2int == 0) i2int = internal_contours[kint]; + k[3] = edges[i1int].i1; + k[4] = edges[i1int].i2; + k[5] = edges[i2int].i2; + for (i=3; i<6; i++) { + x[i] = nodes[k[i]].v[ix]; + y[i] = nodes[k[i]].v[iy]; + } + + // T E S T L I N E K1 - K4 + // I F O K T H E N M E R G E C O N T O U R S + + if (checkDirection(x, y) == 0) { + if (checkIntersection(ix, iy, k[1], k[4]) == 0) { + i = i1int; + for(;;) { + if (edges[i].inext == 0) { + edges[i].inext = internal_contours[kint]; + internal_contours[kint] = 0; + break; + }else{ + i = edges[i].inext; + } + } + i = edges[i1int].iface1; + edges.push_back(ExtEdge(k[1], k[4], i, -(edges.size()+1), -1)); + edges.back().inext = i2int; + edges.push_back(ExtEdge(k[4], k[1], i, -(edges.size()-1), -1)); + edges.back().inext = edges[i1ext].inext; + edges[i1ext].inext = edges.size()-2; + edges[i1int].inext = edges.size()-1; + return; + } + } + i1int = edges[i1int].inext; + } + i1ext = edges[i1ext].inext; + } +} + +int +BooleanProcessor::checkTriangle(int iedge1, int iedge2, int ix, int iy) const +/*********************************************************************** + * * + * Name: BooleanProcessor::checkTriangle Date: 08.03.00 * + * Author: E.Chernyaev Revised: * + * * + * Function: Check triangle for correctness * + * * + ***********************************************************************/ +{ + int k[3]; + double x[3], y[3]; + double a1, b1, c1; + + k[0] = edges[iedge1].i1; + k[1] = edges[iedge1].i2; + k[2] = edges[iedge2].i2; + for (int i=0; i<3; i++) { + x[i] = nodes[k[i]].v[ix]; + y[i] = nodes[k[i]].v[iy]; + } + + // C H E C K P R I N C I P A L C O R R E C T N E S S + + findABC(x[2], y[2], x[0], y[0], a1, b1, c1); + if (a1*x[1]+b1*y[1]+c1 <= 0.1*del) return 1; + + // C H E C K T H A T T H E R E I S N O P O I N T S I N S I D E + + int inode, iedge; + double a2, b2, c2, a3, b3, c3; + + findABC(x[0], y[0], x[1], y[1], a2, b2, c2); + findABC(x[1], y[1], x[2], y[2], a3, b3, c3); + iedge = iedge2; + for (;;) { + iedge = edges[iedge].inext; + if (edges[iedge].inext == iedge1) return 0; + inode = edges[iedge].i2; + if (inode == k[0]) continue; + if (inode == k[1]) continue; + if (inode == k[2]) continue; + x[1] = nodes[inode].v[ix]; + y[1] = nodes[inode].v[iy]; + if (a1*x[1]+b1*y[1]+c1 < -0.1*del) continue; + if (a2*x[1]+b2*y[1]+c2 < -0.1*del) continue; + if (a3*x[1]+b3*y[1]+c3 < -0.1*del) continue; + return 1; + } +} + +void BooleanProcessor::triangulateContour(int ix, int iy, int ihead) +/*********************************************************************** + * * + * Name: BooleanProcessor::triangulateContour Date: 06.03.00 * + * Author: E.Chernyaev Revised: * + * * + * Function: Triangulate external contour * + * * + ***********************************************************************/ +{ + + //HepStd::cout << "Next Countour" << HepStd::endl; + //int draw_flag = 0; + //if (draw_flag) draw_contour(5, 3, ihead); + + // C L O S E C O N T O U R + + int *pnext, nnode = 0; + pnext = &ihead; + for (;;) { + if (*pnext > 0) { + pnext = &edges[*pnext].inext; + nnode++; + }else{ + *pnext = ihead; + break; + } + } + + // L O O P A L O N G C O N T O U R + + int iedge1, iedge2, iedge3, istart = 0; + for (;;) { + iedge1 = *pnext; + iedge2 = edges[iedge1].inext; + if (istart == 0) { + istart = iedge1; + if (nnode <= 3) { + iedge3 = edges[iedge2].inext; + edges[iedge1].iface1 = faces.size(); + edges[iedge2].iface1 = faces.size(); + edges[iedge3].iface1 = faces.size(); + edges[iedge3].inext = 0; + faces.push_back(ExtFace()); + faces.back().iold = iedge1; + faces.back().inew = ORIGINAL_FACE; + + //if (draw_flag) draw_contour(4, 2, iedge1); + + break; + } + }else if (istart == iedge1) { + processor_error = 1; + HepStd::cerr + << "BooleanProcessor::triangulateContour : " + << "could not generate a triangle (infinite loop)" + << HepStd::endl; + break; + } + + // C H E C K C O R E C T N E S S O F T H E T R I A N G L E + + if (checkTriangle(iedge1,iedge2,ix,iy) != 0) { + pnext = &edges[*pnext].inext; + continue; + } + + // M O D I F Y C O N T O U R + + int i1 = edges[iedge1].i1; + int i2 = edges[iedge1].i2; + int i3 = edges[iedge2].i2; + int iface1 = edges[iedge1].iface1; + int iface2 = faces.size(); + + *pnext = edges.size(); + edges.push_back(ExtEdge(i1, i3, iface1, -(edges.size()+1), -1)); + edges.back().inext = edges[iedge2].inext; + + // A D D N E W T R I A N G L E T O T H E L I S T + + edges[iedge2].inext = edges.size(); + edges.push_back(ExtEdge(i3, i1, iface2, -(edges.size()-1), -1)); + faces.push_back(ExtFace()); + faces.back().iold = iedge1; + faces.back().inew = ORIGINAL_FACE; + edges[iedge1].iface1 = iface2; + edges[iedge2].iface1 = iface2; + pnext = &edges[*pnext].inext; + istart = 0; + nnode--; + + //if (draw_flag) draw_contour(4, 2, iedge1); + + } +} + +void BooleanProcessor::modifyReference(int iface, int i1, int i2, int iref) +/*********************************************************************** + * * + * Name: BooleanProcessor::modifyReference Date: 13.03.00 * + * Author: E.Chernyaev Revised: * + * * + * Function: Modify reference to the neighbouring face * + * * + ***********************************************************************/ +{ + int iedge = faces[iface].iold; + while (iedge > 0) { + if (edges[iedge].i1 == i2 && edges[iedge].i2 == i1) { + edges[iedge].iface2 = iref; + return; + } + iedge = edges[iedge].inext; + } + processor_error = 1; + HepStd::cerr + << "BooleanProcessor::modifyReference : could not find the edge, " + << "iface=" << iface << ", i1,i2=" << i1 << "," << i2 << ", iref=" << iref + << HepStd::endl; +} + +void BooleanProcessor::triangulateFace(int iface) +/*********************************************************************** + * * + * Name: BooleanProcessor::triangulateFace Date: 02.03.00 * + * Author: E.Chernyaev Revised: * + * * + * Function: Triangulation of an extended face * + * * + ***********************************************************************/ +{ + + // F I N D M A X C O M P O N E N T O F T H E N O R M A L + // S E T IX, IY, IZ + + HepNormal3D normal = faces[iface].plane.normal(); + int ix, iy, iz = 0; + if (abs(normal[1]) > abs(normal[iz])) iz = 1; + if (abs(normal[2]) > abs(normal[iz])) iz = 2; + if (normal[iz] > 0) { + ix = (iz+1)%3; iy = (ix+1)%3; + }else{ + iy = (iz+1)%3; ix = (iy+1)%3; + } + + // F I L L L I S T S O F C O N T O U R S + + external_contours.clear(); + internal_contours.clear(); + double z; + int i1, i2, ifirst, iedge, icontour = faces[iface].iold; + while (icontour > 0) { + iedge = icontour; + ifirst = edges[iedge].i1; + z = 0.0; + for(;;) { + if (iedge > 0) { + i1 = edges[iedge].i1; + i2 = edges[iedge].i2; + z += nodes[i1].v[ix]*nodes[i2].v[iy]-nodes[i2].v[ix]*nodes[i1].v[iy]; + if (ifirst != i2) { + iedge = edges[iedge].inext; + continue; + }else{ + if (z > del*del) { + external_contours.push_back(icontour); + }else if (z < -del*del) { + internal_contours.push_back(icontour); + }else{ + processor_error = 1; + HepStd::cerr + << "BooleanProcessor::triangulateFace : too small contour" + << HepStd::endl; + } + icontour = edges[iedge].inext; + edges[iedge].inext = 0; + break; + } + }else{ + processor_error = 1; + HepStd::cerr + << "BooleanProcessor::triangulateFace : broken contour" + << HepStd::endl; + icontour = 0; + break; + } + } + } + + // G E T R I D O F I N T E R N A L C O N T O U R S + + int kint, kext; + for (kint=0; kint < internal_contours.size(); kint++) { + for (kext=0; kext < external_contours.size(); kext++) { + mergeContours(ix, iy, kext, kint); + if (internal_contours[kint] == 0) break; + } + if (kext == external_contours.size()) { + processor_error = 1; + HepStd::cerr + << "BooleanProcessor::triangulateFace : " + << "could not merge internal contour " << kint + << HepStd::endl; + } + } + + // T R I A N G U L A T E C O N T O U R S + + int nface = faces.size(); + for (kext=0; kext < external_contours.size(); kext++) { + triangulateContour(ix, iy, external_contours[kext]); + } + faces[iface].inew = UNSUITABLE_FACE; + + // M O D I F Y R E F E R E N C E S + + for (iface=nface; iface 0) { + if (edges[iedge].iface1 != iface) { + processor_error = 1; + HepStd::cerr + << "BooleanProcessor::triangulateFace : wrong reference to itself, " + << "iface=" << iface << ", iface1=" << edges[iedge].iface1 + << HepStd::endl; + }else if (edges[iedge].iface2 > 0) { + modifyReference(edges[iedge].iface2, + edges[iedge].i1, edges[iedge].i2, iface); + }else if (edges[iedge].iface2 < 0) { + edges[iedge].iface2 = edges[-edges[iedge].iface2].iface1; + } + iedge = edges[iedge].inext; + } + } +} + +HepPolyhedron BooleanProcessor::createPolyhedron() +/*********************************************************************** + * * + * Name: BooleanProcessor::createPolyhedron() Date: 14.03.00 * + * Author: E.Chernyaev Revised: * + * * + * Function: Create HepPolyhedron. * + * * + ***********************************************************************/ +{ + int i, iedge, nnode = 0, nface = 0; + + // R E N U M E R A T E N O D E S A N D F A C E S + + for (i=1; i 0) { + nodes[edges[iedge].i1].s = 1; + iedge = edges[iedge].inext; + } + }else{ + faces[i].inew = 0; + } + } + + for (i=1; i 0) { + if (k > 3) { + HepStd::cerr + << "BooleanProcessor::createPolyhedron : too many edges" + << HepStd::endl; + break; + } + v[k] = nodes[edges[iedge].i1].s; + if (edges[iedge].ivis < 0) v[k] = -v[k]; + f[k] = faces[edges[iedge].iface2].inew; + iedge = edges[iedge].inext; + k++; + } + if (k < 3) { + HepStd::cerr + << "BooleanProcessor::createPolyhedron : " + << "face has only " << k << " edges" + << HepStd::endl; + } + polyhedron.pF[faces[i].inew] = + G4Facet(v[0],f[0], v[1],f[1], v[2],f[2], v[3],f[3]); + } + return polyhedron; +} + +HepPolyhedron BooleanProcessor::execute(int op, + const HepPolyhedron & a, + const HepPolyhedron & b) +/*********************************************************************** + * * + * Name: BooleanProcessor::execute Date: 10.12.99 * + * Author: E.Chernyaev Revised: * + * * + * Function: Execute boolean operation. * + * * + ***********************************************************************/ +{ + static int ishift = 0; + static double shift[8][3] = { + { 31, 23, 17}, + { -31, -23, -17}, + { -23, 17, 31}, + { 23, -17, -31}, + { -17, -31, 23}, + { 17, 31, -23}, + { 31, -23, 17}, + { -31, 23, -17} + }; + + // I N I T I A T E P R O C E S S O R + + processor_error = 0; + operation = op; + nodes.clear(); nodes.push_back(CRAZY_POINT); + edges.clear(); edges.push_back(ExtEdge()); + faces.clear(); faces.push_back(ExtFace()); + + // T A K E P O L Y H E D R A + + ifaces1 = faces.size(); takePolyhedron(a,0,0,0); + ifaces2 = faces.size(); takePolyhedron(b,0,0,0); + + if (processor_error) { // corrapted polyhedron + HepStd::cerr + << "BooleanProcessor: corrapted input polyhedron" + << HepStd::endl; + return HepPolyhedron(); + } + if (ifaces1 == ifaces2) { // a is empty + switch (operation) { + case OP_UNION: + return b; + case OP_INTERSECTION: + HepStd::cerr + << "BooleanProcessor: intersection with empty polyhedron" + << HepStd::endl; + return HepPolyhedron(); + case OP_SUBTRACTION: + HepStd::cerr + << "BooleanProcessor: subtraction from empty polyhedron" + << HepStd::endl; + return HepPolyhedron(); + } + } + if (ifaces2 == faces.size()) { // b is empty + switch (operation) { + case OP_UNION: + return a; + case OP_INTERSECTION: + HepStd::cerr + << "BooleanProcessor: intersection with empty polyhedron" + << HepStd::endl; + return HepPolyhedron(); + case OP_SUBTRACTION: + return a; + } + } + + // S E T I N I T I A L M I N - M A X A N D T O L E R A N C E + + del = findMinMax(); + + // W O R K A R O U N D T O A V O I D I E A N D E E + + double ddxx = del*shift[ishift][0]; + double ddyy = del*shift[ishift][1]; + double ddzz = del*shift[ishift][2]; + ishift++; if (ishift == 8) ishift = 0; + + operation = op; + nodes.clear(); nodes.push_back(CRAZY_POINT); + edges.clear(); edges.push_back(ExtEdge()); + faces.clear(); faces.push_back(ExtFace()); + + ifaces1 = faces.size(); takePolyhedron(a,0,0,0); + ifaces2 = faces.size(); takePolyhedron(b,ddxx,ddyy,ddzz); + + del = findMinMax(); + + // P R E S E L E C T O U T S I D E F A C E S + + int ifa1, ifa2; + iout1 = iout2 = 0; + for(;;) { + ifa1 = iout1; + ifa2 = iout2; + selectOutsideFaces(ifaces1, iout1); + selectOutsideFaces(ifaces2, iout2); + if (iout1 == ifa1 && iout2 == ifa2) break; + findMinMax(); + } + +#define PROCESSOR_ERROR \ +HepStd::cerr << "BooleanProcessor: boolean operation failed" << HepStd::endl;\ +return a; + + // F I N D N E W E D G E S + + if (ifaces1 != 0 && ifaces2 != 0 ) { + ifa1 = ifaces1; + while (ifa1 > 0) { + ifa2 = ifaces2; + while (ifa2 > 0) { + testFaceVsFace(ifa1, ifa2); + ifa2 = faces[ifa2].inext; + } + ifa1 = faces[ifa1].inext; + } + } + if (processor_error) { PROCESSOR_ERROR } + + // C O N S T R U C T N E W F A C E S + + assembleNewFaces((operation == OP_INTERSECTION) ? 1 : 0, ifaces1); + if (processor_error) { PROCESSOR_ERROR } + assembleNewFaces((operation == OP_UNION) ? 0 : 1, ifaces2); + if (processor_error) { PROCESSOR_ERROR } + + // A S S E M B L E S U I T A B L E F A C E S + + initiateLists(); + for (;;) { + assemblePolyhedra(); + if (unknown_faces.front() != 0) { + processor_error = 1; + HepStd::cerr + << "BooleanProcessor::execute : unknown faces !!!" + << HepStd::endl; + } + break; + } + if (processor_error) { PROCESSOR_ERROR } + + // T R I A N G U L A T E A C C E P T E D F A C E S + + ifa1 = result_faces.front(); + while (ifa1 > 0) { + ifa2 = ifa1; + ifa1 = faces[ifa2].inext; + if (faces[ifa2].inew == NEW_FACE) triangulateFace(ifa2); + if (processor_error) { PROCESSOR_ERROR } + } + + // C R E A T E P O L Y H E D R O N + + return createPolyhedron(); +} + + +//#include +//#include +//#include "zbuf.h" +//void BooleanProcessor::draw() +/*********************************************************************** + * * + * Name: BooleanProcessor::draw Date: 10.12.99 * + * Author: E.Chernyaev Revised: * + * * + * Function: Draw * + * * + ***********************************************************************/ +/* +{ + int II; + int icol, i1, i2, iedge, iface, ilist[4]; + float p1[3], p2[3]; + + ilist[0] = ifaces1; + ilist[1] = ifaces2; + ilist[2] = iout1; + ilist[3] = iout2; + + for (int i=0; i<4; i++) { + + if (i == 0) cout << "========= Ifaces_1" << endl; + if (i == 1) cout << "========= Ifaces_2" << endl; + if (i == 2) cout << "========= Iout_1" << endl; + if (i == 3) cout << "========= Iout_2" << endl; + + icol = i+1; + iface = ilist[i]; + while (iface > 0) { + + cout << "iface = " << iface << endl; + cout << "--- iold" << endl; + + iedge = faces[iface].iold; + icol = 2; + + while (iedge > 0) { + + cout << " iegde = " << iedge + << " i1,i2 =" << edges[iedge].i1 << "," << edges[iedge].i2 + << " iface1,iface2 = " + << edges[iedge].iface1 << "," << edges[iedge].iface2 + << endl; + + i1 = edges[iedge].i1; + p1[0] = nodes[i1].v.x(); + p1[1] = nodes[i1].v.y(); + p1[2] = nodes[i1].v.z(); + IHWTON(p1,p1); + i2 = edges[iedge].i2; + p2[0] = nodes[i2].v.x(); + p2[1] = nodes[i2].v.y(); + p2[2] = nodes[i2].v.z(); + IHWTON(p2,p2); +// icol = (edges[iedge].ivis > 0) ? 1 : 2; + IHZLIN(icol,p1[0],p1[1],p1[2], p2[0],p2[1],p2[2]); + iedge = edges[iedge].inext; + } + + cout << "--- inew" << endl; + + iedge = faces[iface].inew; + icol = 3; + + while (iedge > 0) { + + cout << " iegde = " << iedge + << " i1,i2 =" << edges[iedge].i1 << "," << edges[iedge].i2 + << " iface1,iface2 = " + << edges[iedge].iface1 << "," << edges[iedge].iface2 + << endl; + + i1 = edges[iedge].i1; + p1[0] = nodes[i1].v.x(); + p1[1] = nodes[i1].v.y(); + p1[2] = nodes[i1].v.z(); + IHWTON(p1,p1); + i2 = edges[iedge].i2; + p2[0] = nodes[i2].v.x(); + p2[1] = nodes[i2].v.y(); + p2[2] = nodes[i2].v.z(); + IHWTON(p2,p2); +// icol = (edges[iedge].ivis > 0) ? 1 : 2; + IHZLIN(icol,p1[0],p1[1],p1[2], p2[0],p2[1],p2[2]); + iedge = edges[iedge].inext; + } + iface = faces[iface].inext; + + IHZTOX(0,100,100); + ixupdwi(0); + cin >> II; + ixclrwi(); + IHZCLE(0); + + + } + } +} +*/ + +/* +//-------------------------------------------------------------------- +void +BooleanProcessor::draw_edge(int icol, int iedge) { + int i1, i2; + float p1[3], p2[3]; + + i1 = edges[iedge].i1; + p1[0] = nodes[i1].v.x(); + p1[1] = nodes[i1].v.y(); + p1[2] = nodes[i1].v.z(); + IHWTON(p1,p1); + i2 = edges[iedge].i2; + p2[0] = nodes[i2].v.x(); + p2[1] = nodes[i2].v.y(); + p2[2] = nodes[i2].v.z(); + IHWTON(p2,p2); + IHZLIN(icol,p1[0],p1[1],p1[2], p2[0],p2[1],p2[2]); +} + +//-------------------------------------------------------------------- +void +BooleanProcessor::draw_contour(int i1col, int i2col, int ihead) { + int iedge, icol; + iedge = ihead; + while (iedge > 0) { + icol = (edges[iedge].ivis > 0) ? i1col : i2col; + draw_edge(icol, iedge); + iedge = edges[iedge].inext; + } + + IHZTOX(0,100,100); + ixupdwi(0); + + int i; + std::cin >> i; +} +*/ diff --git a/source/graphics_reps/src/G4Circle.cc b/source/graphics_reps/src/G4Circle.cc index d2b1299b7f..2a201ec18c 100644 --- a/source/graphics_reps/src/G4Circle.cc +++ b/source/graphics_reps/src/G4Circle.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Circle.cc,v 1.2 1999/12/15 14:50:35 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/graphics_reps/src/G4Colour.cc b/source/graphics_reps/src/G4Colour.cc index f81f7b6230..4dfdb0d3ea 100644 --- a/source/graphics_reps/src/G4Colour.cc +++ b/source/graphics_reps/src/G4Colour.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Colour.cc,v 1.3 1999/12/15 14:50:35 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 20th October 1996 diff --git a/source/graphics_reps/src/G4NURBS.cc b/source/graphics_reps/src/G4NURBS.cc index 3ea6de0aae..c2dbf2a4dc 100644 --- a/source/graphics_reps/src/G4NURBS.cc +++ b/source/graphics_reps/src/G4NURBS.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4NURBS.cc,v 1.3 1999/12/15 14:50:35 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Olivier Crumeyrolle 12 September 1996 diff --git a/source/graphics_reps/src/G4NURBSbox.cc b/source/graphics_reps/src/G4NURBSbox.cc index e4f4d22ce2..220c6282ef 100644 --- a/source/graphics_reps/src/G4NURBSbox.cc +++ b/source/graphics_reps/src/G4NURBSbox.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4NURBSbox.cc,v 1.3 1999/12/15 14:50:35 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Olivier Crumeyrolle 12 September 1996 diff --git a/source/graphics_reps/src/G4NURBScylinder.cc b/source/graphics_reps/src/G4NURBScylinder.cc index 5a170800bb..36a0c104f1 100644 --- a/source/graphics_reps/src/G4NURBScylinder.cc +++ b/source/graphics_reps/src/G4NURBScylinder.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4NURBScylinder.cc,v 1.3 1999/12/15 14:50:35 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Olivier Crumeyrolle 12 September 1996 diff --git a/source/graphics_reps/src/G4NURBShexahedron.cc b/source/graphics_reps/src/G4NURBShexahedron.cc index 89162774d0..dddbb1843a 100644 --- a/source/graphics_reps/src/G4NURBShexahedron.cc +++ b/source/graphics_reps/src/G4NURBShexahedron.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4NURBShexahedron.cc,v 1.3 1999/12/15 14:50:36 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // hexahedron implementation // OC 17 9 96 diff --git a/source/graphics_reps/src/G4NURBStube.cc b/source/graphics_reps/src/G4NURBStube.cc index 6a9fc8478b..e492bd033c 100644 --- a/source/graphics_reps/src/G4NURBStube.cc +++ b/source/graphics_reps/src/G4NURBStube.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4NURBStube.cc,v 1.3 1999/12/15 14:50:36 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Olivier Crumeyrolle 12 September 1996 diff --git a/source/graphics_reps/src/G4NURBStubesector.cc b/source/graphics_reps/src/G4NURBStubesector.cc index 0261fe0977..d2bc89ced8 100644 --- a/source/graphics_reps/src/G4NURBStubesector.cc +++ b/source/graphics_reps/src/G4NURBStubesector.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4NURBStubesector.cc,v 1.4 1999/12/15 14:50:36 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Olivier Crumeyrolle 12 September 1996 diff --git a/source/graphics_reps/src/G4PlacedPolyhedron.cc b/source/graphics_reps/src/G4PlacedPolyhedron.cc index 84364356e4..ef77503d66 100644 --- a/source/graphics_reps/src/G4PlacedPolyhedron.cc +++ b/source/graphics_reps/src/G4PlacedPolyhedron.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PlacedPolyhedron.cc,v 1.2 1999/12/15 14:50:36 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ #include "G4PlacedPolyhedron.hh" diff --git a/source/graphics_reps/src/G4Point3DList.cc b/source/graphics_reps/src/G4Point3DList.cc index f98be40371..fd64c9846b 100644 --- a/source/graphics_reps/src/G4Point3DList.cc +++ b/source/graphics_reps/src/G4Point3DList.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Point3DList.cc,v 1.3 1999/12/15 14:50:36 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison July 1995 diff --git a/source/graphics_reps/src/G4Polyhedron.cc b/source/graphics_reps/src/G4Polyhedron.cc index 23d08741a8..13040d8933 100644 --- a/source/graphics_reps/src/G4Polyhedron.cc +++ b/source/graphics_reps/src/G4Polyhedron.cc @@ -5,1407 +5,87 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Polyhedron.cc,v 1.7 2000/01/11 17:35:09 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// -// -// G4 Polyhedron library -// -// History: -// 23.07.96 E.Chernyaev - initial version -// -// 30.09.96 E.Chernyaev -// - added GetNextVertexIndex, GetVertex by Yasuhide Sawada -// - added GetNextUnitNormal, GetNextEdgeIndeces, GetNextEdge -// -// 15.12.96 E.Chernyaev -// - added GetNumberOfRotationSteps, RotateEdge, RotateAroundZ, SetReferences -// - rewritten G4PolyhedronCons; -// - added G4PolyhedronPara, ...Trap, ...Pgon, ...Pcon, ...Sphere, ...Torus -// -// 01.06.97 E.Chernyaev -// - modified RotateAroundZ, added SetSideFacets - +// $Id: G4Polyhedron.cc,v 1.9 2000/02/23 16:57:36 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ + #include "G4Polyhedron.hh" -/*********************************************************************** - * * - * Name: G4Polyhedron << operator Date: 09.05.96 * - * Author: E.Chernyaev (IHEP/Protvino) Revised: * - * * - * Function: Print contents of G4 polyhedron * - * * - ***********************************************************************/ -G4std::ostream& operator<<(G4std::ostream &ostr, const G4Facet &facet) { - for (G4int k=0; k<4; k++) { - ostr << " " << facet.edge[k].v << "/" << facet.edge[k].f; - } - return ostr; +G4Polyhedron::G4Polyhedron () {} + +G4Polyhedron::G4Polyhedron (const G4Polyhedron& from) { + *this = from; } -G4std::ostream& operator<<(G4std::ostream &ostr, const G4Polyhedron &ph) { - G4int i; - - ostr << G4endl; - ostr << "Nverteces=" << ph.nvert << ", Nfacets=" << ph.nface << G4endl; - for (i=1; i<=ph.nvert; i++) { - ostr << "xyz(" << i << ")=" << - ph.pV[i].x() << ' ' << ph.pV[i].y() << ' ' << ph.pV[i].z() << G4endl; - } - for (i=1; i<=ph.nface; i++) { - ostr << "face(" << i << ")=" << ph.pF[i] << G4endl; - } - return ostr; +G4Polyhedron::G4Polyhedron (const HepPolyhedron& from) { + *this = from; } -G4Polyhedron::G4Polyhedron(const G4Polyhedron &from) -/*********************************************************************** - * * - * Name: G4Polyhedron copy constructor Date: 23.07.96 * - * Author: E.Chernyaev (IHEP/Protvino) Revised: * - * * - ***********************************************************************/ -{ +G4Polyhedron& G4Polyhedron::operator = (const G4Polyhedron& from) { + if (&from == this) return *this; + HepPolyhedron::operator = (from); G4VVisPrim::operator = (from); - if (from.nvert > 0 && from.nface > 0) { - G4int i; - nvert = from.nvert; - nface = from.nface; - pV = new G4Point3D[nvert + 1]; - pF = new G4Facet[nface + 1]; - for (i=1; i<=nvert; i++) pV[i] = from.pV[i]; - for (i=1; i<=nface; i++) pF[i] = from.pF[i]; - }else{ - nvert = 0; nface = 0; pV = 0; pF = 0; - } -} - -G4Visible & G4Polyhedron::operator=(const G4Visible &from) { - return G4Visible::operator = (from); -} - -G4VVisPrim & G4Polyhedron::operator=(const G4VVisPrim &from) { - return G4VVisPrim::operator = (from); -} - -G4Visible & G4PolyhedronTrd2::operator=(const G4Visible &from) { - return G4Visible::operator = (from); -} - -G4VVisPrim & G4PolyhedronTrd2::operator=(const G4VVisPrim &from) { - return G4VVisPrim::operator = (from); -} - -G4Visible & G4PolyhedronTrd1::operator=(const G4Visible &from) { - return G4Visible::operator = (from); -} - -G4VVisPrim & G4PolyhedronTrd1::operator=(const G4VVisPrim &from) { - return G4VVisPrim::operator = (from); -} - -G4Visible & G4PolyhedronBox::operator=(const G4Visible &from) { - return G4Visible::operator = (from); -} - -G4VVisPrim & G4PolyhedronBox::operator=(const G4VVisPrim &from) { - return G4VVisPrim::operator = (from); -} - -G4Visible & G4PolyhedronTrap::operator=(const G4Visible &from) { - return G4Visible::operator = (from); -} - -G4VVisPrim & G4PolyhedronTrap::operator=(const G4VVisPrim &from) { - return G4VVisPrim::operator = (from); -} - -G4Visible & G4PolyhedronPara::operator=(const G4Visible &from) { - return G4Visible::operator = (from); -} - -G4VVisPrim & G4PolyhedronPara::operator=(const G4VVisPrim &from) { - return G4VVisPrim::operator = (from); -} - -G4Visible & G4PolyhedronCons::operator=(const G4Visible &from) { - return G4Visible::operator = (from); -} - -G4VVisPrim & G4PolyhedronCons::operator=(const G4VVisPrim &from) { - return G4VVisPrim::operator = (from); -} - -G4Visible & G4PolyhedronCone::operator=(const G4Visible &from) { - return G4Visible::operator = (from); -} - -G4VVisPrim & G4PolyhedronCone::operator=(const G4VVisPrim &from) { - return G4VVisPrim::operator = (from); -} - -G4Visible & G4PolyhedronTubs::operator=(const G4Visible &from) { - return G4Visible::operator = (from); -} - -G4VVisPrim & G4PolyhedronTubs::operator=(const G4VVisPrim &from) { - return G4VVisPrim::operator = (from); -} - -G4Visible & G4PolyhedronTube::operator=(const G4Visible &from) { - return G4Visible::operator = (from); -} - -G4VVisPrim & G4PolyhedronTube::operator=(const G4VVisPrim &from) { - return G4VVisPrim::operator = (from); -} - -G4Visible & G4PolyhedronPgon::operator=(const G4Visible &from) { - return G4Visible::operator = (from); -} - -G4VVisPrim & G4PolyhedronPgon::operator=(const G4VVisPrim &from) { - return G4VVisPrim::operator = (from); -} - -G4Visible & G4PolyhedronPcon::operator=(const G4Visible &from) { - return G4Visible::operator = (from); -} - -G4VVisPrim & G4PolyhedronPcon::operator=(const G4VVisPrim &from) { - return G4VVisPrim::operator = (from); -} - -G4Visible & G4PolyhedronSphere::operator=(const G4Visible &from) { - return G4Visible::operator = (from); -} - -G4VVisPrim & G4PolyhedronSphere::operator=(const G4VVisPrim &from) { - return G4VVisPrim::operator = (from); -} - -G4Visible & G4PolyhedronTorus::operator=(const G4Visible &from) { - return G4Visible::operator = (from); -} - -G4VVisPrim & G4PolyhedronTorus::operator=(const G4VVisPrim &from) { - return G4VVisPrim::operator = (from); -} - -G4Polyhedron & G4Polyhedron::operator=(const G4Polyhedron &from) -/*********************************************************************** - * * - * Name: G4Polyhedron = operator Date: 23.07.96 * - * Author: E.Chernyaev (IHEP/Protvino) Revised: * - * * - * Function: Copy contents of one GEANT4 polyhedron to another * - * * - ***********************************************************************/ -{ - if (this == &from) return *this; - G4VVisPrim::operator=(from); - delete [] pV; - delete [] pF; - if (from.nvert > 0 && from.nface > 0) { - G4int i; - nvert = from.nvert; - nface = from.nface; - pV = new G4Point3D[nvert + 1]; - pF = new G4Facet[nface + 1]; - for (i=1; i<=nvert; i++) pV[i] = from.pV[i]; - for (i=1; i<=nface; i++) pF[i] = from.pF[i]; - }else{ - nvert = 0; nface = 0; pV = 0; pF = 0; - } return *this; } -void G4Polyhedron::SetNumberOfRotationSteps(G4int n) -/*********************************************************************** - * * - * Name: G4Polyhedron::SetNumberOfRotationSteps Date: 24.06.97 * - * Author: J.Allison (Manchester University) Revised: * - * * - * Function: Set number of steps for whole circle * - * * - ***********************************************************************/ -{ - const G4int nMin = 3; - if (n < nMin) { - n = nMin; - G4cout << "G4Polyhedron::SetNumberOfRotationSteps: attempt to set the" - "\nnumber of steps per circle < " << nMin << "; forced to " << n << G4endl; - } - fNumberOfRotationSteps = n; -} - -void G4Polyhedron::AllocateMemory(G4int Nvert, G4int Nface) -/*********************************************************************** - * * - * Name: G4Polyhedron::AllocateMemory Date: 19.06.96 * - * Author: E.Chernyaev (IHEP/Protvino) Revised: * - * * - * Function: Allocate memory for GEANT4 polyhedron * - * * - * Input: Nvert - number of nodes * - * Nface - number of faces * - * * - ***********************************************************************/ -{ - nvert = Nvert; - nface = Nface; - pV = new G4Point3D[nvert+1]; - pF = new G4Facet[nface+1]; -} - -void G4Polyhedron::CreatePrism() -/*********************************************************************** - * * - * Name: G4Polyhedron::CreatePrism Date: 15.07.96 * - * Author: E.Chernyaev (IHEP/Protvino) Revised: * - * * - * Function: Set facets for a prism * - * * - ***********************************************************************/ -{ - enum {DUMMY, BOTTOM, LEFT, BACK, RIGHT, FRONT, TOP}; - - pF[1] = G4Facet(1,LEFT, 4,BACK, 3,RIGHT, 2,FRONT); - pF[2] = G4Facet(5,TOP, 8,BACK, 4,BOTTOM, 1,FRONT); - pF[3] = G4Facet(8,TOP, 7,RIGHT, 3,BOTTOM, 4,LEFT); - pF[4] = G4Facet(7,TOP, 6,FRONT, 2,BOTTOM, 3,BACK); - pF[5] = G4Facet(6,TOP, 5,LEFT, 1,BOTTOM, 2,RIGHT); - pF[6] = G4Facet(5,FRONT, 6,RIGHT, 7,BACK, 8,LEFT); -} - -void G4Polyhedron::RotateEdge(G4int k1, G4int k2, G4double r1, G4double r2, - G4int v1, G4int v2, G4int vEdge, - G4bool ifWholeCircle, G4int ns, G4int &kface) -/*********************************************************************** - * * - * Name: G4Polyhedron::RotateEdge Date: 05.12.96 * - * Author: E.Chernyaev (IHEP/Protvino) Revised: * - * * - * Function: Create set of facets by rotation of an edge around Z-axis * - * * - * Input: k1, k2 - end vertices of the edge * - * r1, r2 - radiuses of the end vertices * - * v1, v2 - visibility of edges produced by rotation of the end * - * vertices * - * vEdge - visibility of the edge * - * ifWholeCircle - is true in case of whole circle rotation * - * ns - number of discrete steps * - * r[] - r-coordinates * - * kface - current free cell in the pF array * - * * - ***********************************************************************/ -{ - if (r1 == 0. && r2 == 0) return; - - G4int i; - G4int i1 = k1; - G4int i2 = k2; - G4int ii1 = ifWholeCircle ? i1 : i1+ns; - G4int ii2 = ifWholeCircle ? i2 : i2+ns; - G4int vv = ifWholeCircle ? vEdge : 1; - - if (ns == 1) { - if (r1 == 0.) { - pF[kface++] = G4Facet(i1,0, v2*i2,0, (i2+1),0); - }else if (r2 == 0.) { - pF[kface++] = G4Facet(i1,0, i2,0, v1*(i1+1),0); - }else{ - pF[kface++] = G4Facet(i1,0, v2*i2,0, (i2+1),0, v1*(i1+1),0); - } - }else{ - if (r1 == 0.) { - pF[kface++] = G4Facet(vv*i1,0, v2*i2,0, vEdge*(i2+1),0); - for (i2++,i=1; i>> -z for both polylines) * - * r[] - r-coordinates * - * nodeVis - how to Draw edges joing consecutive positions of * - * node during rotation * - * edgeVis - how to Draw edges * - * * - ***********************************************************************/ -{ - static G4double wholeCircle = 2*M_PI; - - // S E T R O T A T I O N P A R A M E T E R S - - G4bool ifWholeCircle = abs(dphi-wholeCircle) < perMillion ? true : false; - G4double delPhi = ifWholeCircle ? wholeCircle : dphi; - G4int nSphi = nstep > 0 ? nstep : - G4int(delPhi*GetNumberOfRotationSteps()/wholeCircle+.5); - if (nSphi == 0) nSphi = 1; - G4int nVphi = ifWholeCircle ? nSphi : nSphi+1; - G4bool ifClosed = np1 > 0 ? false : true; - - // C O U N T V E R T E C E S - - G4int absNp1 = abs(np1); - G4int absNp2 = abs(np2); - G4int i1beg = 0; - G4int i1end = absNp1-1; - G4int i2beg = absNp1; - G4int i2end = absNp1+absNp2-1; - G4int i, j, k; - - for(i=i1beg; i<=i2end; i++) { - if (abs(r[i]) < perMillion) r[i] = 0.; - } - - j = 0; // external nodes - for (i=i1beg; i<=i1end; i++) { - j += (r[i] == 0.) ? 1 : nVphi; - } - - G4bool ifSide1 = false; // internal nodes - G4bool ifSide2 = false; - - if (r[i2beg] != r[i1beg] || z[i2beg] != z[i1beg]) { - j += (r[i2beg] == 0.) ? 1 : nVphi; - ifSide1 = true; - } - - for(i=i2beg+1; i 1) j += (r[i2end] == 0.) ? 1 : nVphi; - ifSide2 = true; - } - - // C O U N T F A C E S - - k = ifClosed ? absNp1*nSphi : (absNp1-1)*nSphi; // external faces - - if (absNp2 > 1) { // internal faces - for(i=i2beg; i 0. || r[i+1] > 0.) k += nSphi; - } - - if (ifClosed) { - if (r[i2end] > 0. || r[i2beg] > 0.) k += nSphi; - } - } - - if (!ifClosed) { // side faces - if (ifSide1 && (r[i1beg] > 0. || r[i2beg] > 0.)) k += nSphi; - if (ifSide2 && (r[i1end] > 0. || r[i2end] > 0.)) k += nSphi; - } - - if (!ifWholeCircle) { // phi_side faces - k += ifClosed ? 2*absNp1 : 2*(absNp1-1); - } - - // A L L O C A T E M E M O R Y - - AllocateMemory(j, k); - - // G E N E R A T E V E R T E C E S - - G4int *kk; - kk = new G4int[absNp1+absNp2]; - - k = 1; - for(i=i1beg; i<=i1end; i++) { - kk[i] = k; - if (r[i] == 0.) { pV[k++] = G4Point3D(0., 0., z[i]); } else { k += nVphi; } - } - - i = i2beg; - if (ifSide1) { - kk[i] = k; - if (r[i] == 0.) { pV[k++] = G4Point3D(0., 0., z[i]); } else { k += nVphi; } - }else{ - kk[i] = kk[i1beg]; - } - - for(i=i2beg+1; i 1) { - i = i2end; - if (ifSide2) { - kk[i] = k; - if (r[i] == 0.) pV[k] = G4Point3D(0., 0., z[i]); - }else{ - kk[i] = kk[i1end]; - } - } - - G4double cosPhi, sinPhi; - - for(j=0; j 1) { - v2 = ifClosed ? nodeVis : 1; - for(i=i2beg; inext; - cur = headList[k1]; - cur->next = 0; - cur->v2 = k2; - cur->iface = iface; - cur->iedge = iedge; - continue; - } - - if (cur->v2 == k2) { - headList[k1] = cur->next; - cur->next = freeList; - freeList = cur; - pF[iface].edge[iedge].f = cur->iface; - pF[cur->iface].edge[cur->iedge].f = iface; - i1 = (pF[iface].edge[iedge].v < 0) ? -1 : 1; - i2 = (pF[cur->iface].edge[cur->iedge].v < 0) ? -1 : 1; - if (i1 != i2) { - G4cerr << "Polyhedron::SetReferences: different edge visibility " - << iface << "/" << iedge << "/" - << pF[iface].edge[iedge].v << " and " - << cur->iface << "/" << cur->iedge << "/" - << pF[cur->iface].edge[cur->iedge].v << G4endl; - } - continue; - } - - // check List itself - for (;;) { - prev = cur; - cur = prev->next; - if (cur == 0) { - prev->next = freeList; - freeList = freeList->next; - cur = prev->next; - cur->next = 0; - cur->v2 = k2; - cur->iface = iface; - cur->iedge = iedge; - break; - } - - if (cur->v2 == k2) { - prev->next = cur->next; - cur->next = freeList; - freeList = cur; - pF[iface].edge[iedge].f = cur->iface; - pF[cur->iface].edge[cur->iedge].f = iface; - i1 = (pF[iface].edge[iedge].v < 0) ? -1 : 1; - i2 = (pF[cur->iface].edge[cur->iedge].v < 0) ? -1 : 1; - if (i1 != i2) { - G4cerr << "Polyhedron::SetReferences: different edge visibility " - << iface << "/" << iedge << "/" - << pF[iface].edge[iedge].v << " and " - << cur->iface << "/" << cur->iedge << "/" - << pF[cur->iface].edge[cur->iedge].v << G4endl; - } - break; - } - } - } - } - - // C H E C K T H A T A L L L I S T S A R E E M P T Y - - for (i=0; i 0) { - for (G4int i=1; i<=nvert; i++) { pV[i] = t * pV[i]; } - - // C H E C K D E T E R M I N A N T A N D - // I N V E R T F A C E T S I F I T I S N E G A T I V E - - G4Vector3D d = t * G4Vector3D(0,0,0); - G4Vector3D x = t * G4Vector3D(1,0,0) - d; - G4Vector3D y = t * G4Vector3D(0,1,0) - d; - G4Vector3D z = t * G4Vector3D(0,0,1) - d; - if ((x.cross(y))*z < 0) InvertFacets(); - } - return *this; -} - -G4bool G4Polyhedron::GetNextVertexIndex(G4int &index, G4int &edgeFlag) const -/*********************************************************************** - * * - * Name: G4Polyhedron::GetNextVertexIndex Date: 03.09.96 * - * Author: Yasuhide Sawada Revised: * - * * - * Function: * - * * - ***********************************************************************/ -{ - static G4int iFace = 1; - static G4int iQVertex = 0; - G4int vIndex = pF[iFace].edge[iQVertex].v; - -//edgeFlag = vIndex > 0 ? true : false; - edgeFlag = vIndex > 0 ? 1 : 0; - index = abs(vIndex); - - if (iQVertex >= 3 || pF[iFace].edge[iQVertex+1].v == 0) { - iQVertex = 0; - if (++iFace > nface) iFace = 1; - return false; // Last Edge - }else{ - ++iQVertex; - return true; // not Last Edge - } -} - -G4Point3D G4Polyhedron::GetVertex(G4int index) const -/*********************************************************************** - * * - * Name: G4Polyhedron::GetVertex Date: 03.09.96 * - * Author: Yasuhide Sawada Revised: * - * * - * Function: Get vertex of the index. * - * * - ***********************************************************************/ -{ - if (index <= 0 || index > nvert){ - G4cerr << "Error: irrelevant vertex label " << index << G4endl; - return G4Point3D(); - } - return pV[index]; -} - -G4bool G4Polyhedron::GetNextVertex(G4Point3D &vertex, G4int &edgeFlag) const -/*********************************************************************** - * * - * Name: G4Polyhedron::GetNextVertex Date: 22.07.96 * - * Author: John Allison Revised: * - * * - * Function: Get vertices of the quadrilaterals in order for each * - * face in face order. Returns false when finished each * - * face. * - * * - ***********************************************************************/ -{ - G4int index; - G4bool rep = GetNextVertexIndex(index, edgeFlag); - vertex = pV[index]; - return rep; -} - -G4bool G4Polyhedron::GetNextNormal(G4Normal3D &normal) const -/*********************************************************************** - * * - * Name: G4Polyhedron::GetNextNormal Date: 22.07.96 * - * Author: John Allison Revised: * - * * - * Function: Get normals of each face in face order. Returns false * - * when finished all faces. * - * * - ***********************************************************************/ -{ - static G4int iFace = 1; - G4int vIndex; - - vIndex = pF[iFace].edge[0].v; - G4Point3D v0 = pV[abs(vIndex)]; - vIndex = pF[iFace].edge[1].v; - G4Point3D v1 = pV[abs(vIndex)]; - vIndex = pF[iFace].edge[2].v; - G4Point3D v2 = pV[abs(vIndex)]; - vIndex = pF[iFace].edge[3].v; - G4Point3D v3 = vIndex > 0 ? pV[abs(vIndex)] : v0; - - // Use diagonals - safer. - normal = (v2 - v0).cross(v3 - v1); - - if (++iFace <= nface) { - return true; - } - else { - iFace = 1; - return false; - } -} - -G4bool G4Polyhedron::GetNextUnitNormal(G4Normal3D &normal) const -/*********************************************************************** - * * - * Name: G4Polyhedron::GetNextUnitNormal Date: 16.09.96 * - * Author: E.Chernyaev Revised: * - * * - * Function: Get normals of unit length of each face in face order. * - * Returns false when finished all faces. * - * * - ***********************************************************************/ -{ - G4bool rep = GetNextNormal(normal); - normal = normal.unit(); - return rep; -} - -G4bool -G4Polyhedron::GetNextEdgeIndeces(G4int &i1, G4int &i2, G4int &edgeFlag) const -/*********************************************************************** - * * - * Name: G4Polyhedron::GetNextEdgeIndeces Date: 30.09.96 * - * Author: E.Chernyaev Revised: * - * * - * Function: Get indeces of the next edge. * - * Returns false when the last edge. * - * * - ***********************************************************************/ -{ - static G4int iFace = 1; - static G4int iQVertex = 0; - static G4int iOrder = 1; - G4int k1, k2, kflag; - - if (iFace == 1 && iQVertex == 0) { - k2 = pF[nface].edge[0].v; - k1 = pF[nface].edge[3].v; - if (k1 == 0) k1 = pF[nface].edge[2].v; - if (abs(k1) > abs(k2)) iOrder = -1; - } - - do { - k1 = pF[iFace].edge[iQVertex].v; - kflag = k1; - k1 = abs(k1); - if (iQVertex >= 3 || pF[iFace].edge[iQVertex+1].v == 0) { - iQVertex = 0; - k2 = abs(pF[iFace].edge[iQVertex].v); - iFace++; - }else{ - iQVertex++; - k2 = abs(pF[iFace].edge[iQVertex].v); - } - } while (iOrder*k1 > iOrder*k2); - - i1 = k1; i2 = k2; edgeFlag = kflag > 0 ? 1 : -1; - - if (iFace > nface) { - iFace = 1; iOrder = 1; - return false; - }else{ - return true; - } -} - -G4bool -G4Polyhedron::GetNextEdge(G4Point3D &p1, G4Point3D &p2, G4int &edgeFlag) const -/*********************************************************************** - * * - * Name: G4Polyhedron::GetNextEdge Date: 30.09.96 * - * Author: E.Chernyaev Revised: * - * * - * Function: Get next edge. * - * Returns false when the last edge. * - * * - ***********************************************************************/ -{ - G4int i1,i2; - G4bool rep = GetNextEdgeIndeces(i1,i2,edgeFlag); - p1 = pV[i1]; - p2 = pV[i2]; - return rep; -} - -G4PolyhedronTrd2::G4PolyhedronTrd2(G4double Dx1, G4double Dx2, - G4double Dy1, G4double Dy2, G4double Dz) -/*********************************************************************** - * * - * Name: G4PolyhedronTrd2 Date: 22.07.96 * - * Author: E.Chernyaev (IHEP/Protvino) Revised: * - * * - * Function: Create GEANT4 TRD2-trapezoid * - * * - * Input: Dx1 - half-length along X at -Dz 8----7 * - * Dx2 - half-length along X ay +Dz 5----6 ! * - * Dy1 - half-length along Y ay -Dz ! 4-!--3 * - * Dy2 - half-length along Y ay +Dz 1----2 * - * Dz - half-length along Z * - * * - ***********************************************************************/ -{ - AllocateMemory(8,6); - - pV[1] = G4Point3D(-Dx1,-Dy1,-Dz); - pV[2] = G4Point3D( Dx1,-Dy1,-Dz); - pV[3] = G4Point3D( Dx1, Dy1,-Dz); - pV[4] = G4Point3D(-Dx1, Dy1,-Dz); - pV[5] = G4Point3D(-Dx2,-Dy2, Dz); - pV[6] = G4Point3D( Dx2,-Dy2, Dz); - pV[7] = G4Point3D( Dx2, Dy2, Dz); - pV[8] = G4Point3D(-Dx2, Dy2, Dz); - - CreatePrism(); -} - -G4PolyhedronTrap::G4PolyhedronTrap(G4double Dz, G4double Theta, G4double Phi, - G4double Dy1, G4double Dx1, G4double Dx2, G4double Alp1, - G4double Dy2, G4double Dx3, G4double Dx4, G4double Alp2) -/*********************************************************************** - * * - * Name: G4PolyhedronTrap Date: 20.11.96 * - * Author: E.Chernyaev (IHEP/Protvino) Revised: * - * * - * Function: Create GEANT4 TRAP-trapezoid * - * * - * Input: DZ - half-length in Z * - * Theta,Phi - polar angles of the line joining centres of the * - * faces at Z=-Dz and Z=+Dz * - * Dy1 - half-length in Y of the face at Z=-Dz * - * Dx1 - half-length in X of low edge of the face at Z=-Dz * - * Dx2 - half-length in X of top edge of the face at Z=-Dz * - * Alp1 - angle between Y-axis and the median joining top and * - * low edges of the face at Z=-Dz * - * Dy2 - half-length in Y of the face at Z=+Dz * - * Dx3 - half-length in X of low edge of the face at Z=+Dz * - * Dx4 - half-length in X of top edge of the face at Z=+Dz * - * Alp2 - angle between Y-axis and the median joining top and * - * low edges of the face at Z=+Dz * - * * - ***********************************************************************/ -{ - G4double DzTthetaCphi = Dz*tan(Theta)*cos(Phi); - G4double DzTthetaSphi = Dz*tan(Theta)*sin(Phi); - G4double Dy1Talp1 = Dy1*tan(Alp1); - G4double Dy2Talp2 = Dy2*tan(Alp2); - - AllocateMemory(8,6); - - pV[1] = G4Point3D(-DzTthetaCphi-Dy1Talp1-Dx1,-DzTthetaSphi-Dy1,-Dz); - pV[2] = G4Point3D(-DzTthetaCphi-Dy1Talp1+Dx1,-DzTthetaSphi-Dy1,-Dz); - pV[3] = G4Point3D(-DzTthetaCphi+Dy1Talp1+Dx2,-DzTthetaSphi+Dy1,-Dz); - pV[4] = G4Point3D(-DzTthetaCphi+Dy1Talp1-Dx2,-DzTthetaSphi+Dy1,-Dz); - pV[5] = G4Point3D( DzTthetaCphi-Dy2Talp2-Dx3, DzTthetaSphi-Dy2, Dz); - pV[6] = G4Point3D( DzTthetaCphi-Dy2Talp2+Dx3, DzTthetaSphi-Dy2, Dz); - pV[7] = G4Point3D( DzTthetaCphi+Dy2Talp2+Dx4, DzTthetaSphi+Dy2, Dz); - pV[8] = G4Point3D( DzTthetaCphi+Dy2Talp2-Dx4, DzTthetaSphi+Dy2, Dz); - - CreatePrism(); -} - -G4PolyhedronCons::G4PolyhedronCons(G4double Rmn1, G4double Rmx1, - G4double Rmn2, G4double Rmx2, - G4double Dz, G4double Phi1, G4double Dphi) -/*********************************************************************** - * * - * Name: G4PolyhedronCons::G4PolyhedronCons Date: 15.12.96 * - * Author: E.Chernyaev (IHEP/Protvino) Revised: 15.12.96 * - * * - * Function: Constructor for CONS, TUBS, CONE, TUBE * - * * - * Input: Rmn1, Rmx1 - inside and outside radiuses at -Dz * - * Rmn2, Rmx2 - inside and outside radiuses at +Dz * - * Dz - half length in Z * - * Phi1 - starting angle of the segment * - * Dphi - segment range * - * * - ***********************************************************************/ -{ - static G4double wholeCircle=2*M_PI; - - // C H E C K I N P U T P A R A M E T E R S - - G4int k = 0; - if (Rmn1 < 0. || Rmx1 < 0. || Rmn2 < 0. || Rmx2 < 0.) k = 1; - if (Rmn1 > Rmx1 || Rmn2 > Rmx2) k = 1; - if (Rmn1 == Rmx1 && Rmn2 == Rmx2) k = 1; - - if (Dz <= 0.) k += 2; - - G4double phi1, phi2, dphi; - if (Dphi < 0.) { - phi2 = Phi1; phi1 = phi2 - Dphi; - }else if (Dphi == 0.) { - phi1 = Phi1; phi2 = phi1 + wholeCircle; - }else{ - phi1 = Phi1; phi2 = phi1 + Dphi; - } - dphi = phi2 - phi1; - if (abs(dphi-wholeCircle) < perMillion) dphi = wholeCircle; - if (dphi > wholeCircle) k += 4; - - if (k != 0) { - G4cerr << "G4PolyhedronCone(s)/Tube(s): error in input parameters"; - if ((k & 1) != 0) G4cerr << " (radiuses)"; - if ((k & 2) != 0) G4cerr << " (half-length)"; - if ((k & 4) != 0) G4cerr << " (angles)"; - G4cerr << G4endl; - G4cerr << " Rmn1=" << Rmn1 << " Rmx1=" << Rmx1; - G4cerr << " Rmn2=" << Rmn2 << " Rmx2=" << Rmx2; - G4cerr << " Dz=" << Dz << " Phi1=" << Phi1 << " Dphi=" << Dphi << G4endl; - return; - } - - // P R E P A R E T W O P O L Y L I N E S - - G4double zz[4], rr[4]; - zz[0] = Dz; - zz[1] = -Dz; - zz[2] = Dz; - zz[3] = -Dz; - rr[0] = Rmx2; - rr[1] = Rmx1; - rr[2] = Rmn2; - rr[3] = Rmn1; - - // R O T A T E P O L Y L I N E S - - RotateAroundZ(0, phi1, dphi, 2, 2, zz, rr, 1, -1); - SetReferences(); -} - -G4PolyhedronPgon::G4PolyhedronPgon(G4double phi, - G4double dphi, - G4int npdv, - G4int nz, - const G4double *z, - const G4double *rmin, - const G4double *rmax) -/*********************************************************************** - * * - * Name: G4PolyhedronPgon Date: 09.12.96 * - * Author: E.Chernyaev (IHEP/Protvino) Revised: * - * * - * Function: Constructor of polyhedron for PGON, PCON * - * * - * Input: phi - initial phi * - * dphi - delta phi * - * npdv - number of steps along phi * - * nz - number of z-planes (at least two) * - * z[] - z coordinates of the slices * - * rmin[] - smaller r at the slices * - * rmax[] - bigger r at the slices * - * * - ***********************************************************************/ -{ - // C H E C K I N P U T P A R A M E T E R S - - if (dphi <= 0. || dphi > 2*M_PI) { - G4cerr << "G4PolyhedronPgon/Pcon: wrong delta phi = " << dphi << G4endl; - return; - } - - if (nz < 2) { - G4cerr << "G4PolyhedronPgon/Pcon: number of z-planes less than two = " << nz - << G4endl; - return; - } - - if (npdv < 0) { - G4cerr << "G4PolyhedronPgon/Pcon: error in number of phi-steps =" << npdv - << G4endl; - return; - } - - G4int i; - for (i=0; i rmax[i]) { - G4cerr << "G4PolyhedronPgon: error in radiuses rmin[" << i << "]=" - << rmin[i] << " rmax[" << i << "]=" << rmax[i] << G4endl; - return; - } - } - - // P R E P A R E T W O P O L Y L I N E S - - G4double *zz, *rr; - zz = new G4double[2*nz]; - rr = new G4double[2*nz]; - - if (z[0] > z[nz-1]) { - for (i=0; i 2*M_PI) { - G4cerr << "G4PolyhedronSphere: wrong delta phi = " << dphi << G4endl; - return; - } - - if (the < 0. || the > M_PI) { - G4cerr << "G4PolyhedronSphere: wrong theta = " << the << G4endl; - return; - } - - if (dthe <= 0. || dthe > M_PI) { - G4cerr << "G4PolyhedronSphere: wrong delta theta = " << dthe << G4endl; - return; - } - - if (the+dthe > M_PI) { - G4cerr << "G4PolyhedronSphere: wrong theta + delta theta = " - << the << " " << dthe << G4endl; - return; - } - - if (rmin < 0. || rmin >= rmax) { - G4cerr << "G4PolyhedronSphere: error in radiuses" - << " rmin=" << rmin << " rmax=" << rmax << G4endl; - return; - } - - // P R E P A R E T W O P O L Y L I N E S - - G4int ns = (GetNumberOfRotationSteps() + 1) / 2; - G4int np1 = G4int(dthe*ns/M_PI+.5) + 1; - if (np1 <= 1) np1 = 2; - G4int np2 = rmin < perMillion ? 1 : np1; - - G4double *zz, *rr; - zz = new G4double[np1+np2]; - rr = new G4double[np1+np2]; - - G4double a = dthe/(np1-1); - G4double cosa, sina; - for (G4int i=0; i 1) { - zz[i+np1] = rmin*cosa; - rr[i+np1] = rmin*sina; - } - } - if (np2 == 1) { - zz[np1] = 0.; - rr[np1] = 0.; - } - - // R O T A T E P O L Y L I N E S - - RotateAroundZ(0, phi, dphi, np1, np2, zz, rr, -1, 1); - SetReferences(); - - delete [] zz; - delete [] rr; -} - -G4PolyhedronTorus::G4PolyhedronTorus(G4double rmin, G4double rmax, - G4double rtor, - G4double phi, G4double dphi) -/*********************************************************************** - * * - * Name: G4PolyhedronTorus Date: 11.12.96 * - * Author: E.Chernyaev (IHEP/Protvino) Revised: * - * * - * Function: Constructor of polyhedron for TORUS * - * * - * Input: rmin - internal radius * - * rmax - external radius * - * rtor - radius of torus * - * phi - initial phi * - * dphi - delta phi * - * * - ***********************************************************************/ -{ - // C H E C K I N P U T P A R A M E T E R S - - if (dphi <= 0. || dphi > 2*M_PI) { - G4cerr << "G4PolyhedronTorus: wrong delta phi = " << dphi << G4endl; - return; - } - - if (rmin < 0. || rmin >= rmax || rmax >= rtor) { - G4cerr << "G4PolyhedronTorus: error in radiuses" - << " rmin=" << rmin << " rmax=" << rmax - << " rtorus=" << rtor << G4endl; - return; - } - - // P R E P A R E T W O P O L Y L I N E S - - G4int np1 = GetNumberOfRotationSteps(); - G4int np2 = rmin < perMillion ? 1 : np1; - - G4double *zz, *rr; - zz = new G4double[np1+np2]; - rr = new G4double[np1+np2]; - - G4double a = 2*M_PI/np1; - G4double cosa, sina; - for (G4int i=0; i 1) { - zz[i+np1] = rmin*cosa; - rr[i+np1] = rtor+rmin*sina; - } - } - if (np2 == 1) { - zz[np1] = 0.; - rr[np1] = rtor; - np2 = -1; - } - - // R O T A T E P O L Y L I N E S - - RotateAroundZ(0, phi, dphi, -np1, -np2, zz, rr, 1,-1); - SetReferences(); - - delete [] zz; - delete [] rr; -} - -G4int G4Polyhedron::fNumberOfRotationSteps = 24; -/*********************************************************************** - * * - * Name: G4Polyhedron::fNumberOfRotationSteps Date: 24.06.97 * - * Author: J.Allison (Manchester University) Revised: * - * * - * Function: Number of steps for whole circle * - * * - ***********************************************************************/ +G4PolyhedronBox::G4PolyhedronBox (G4double dx, G4double dy, G4double dz): + G4Polyhedron (HepPolyhedronBox (dx, dy, dz)) {} + +G4PolyhedronCone::G4PolyhedronCone (G4double Rmn1, G4double Rmx1, + G4double Rmn2, G4double Rmx2, G4double Dz): + G4Polyhedron (HepPolyhedronCone (Rmn1, Rmx1, Rmn2, Rmx2, Dz)) {} + +G4PolyhedronCons::G4PolyhedronCons (G4double Rmn1, G4double Rmx1, + G4double Rmn2, G4double Rmx2, G4double Dz, + G4double Phi1, G4double Dphi): + G4Polyhedron (HepPolyhedronCons (Rmn1, Rmx1, Rmn2, Rmx2, Dz, Phi1, Dphi)) {} + +G4PolyhedronPara::G4PolyhedronPara (G4double Dx, G4double Dy, G4double Dz, + G4double Alpha, G4double Theta, + G4double Phi): + G4Polyhedron (HepPolyhedronPara (Dx, Dy, Dz, Alpha, Theta, Phi)) {} + +G4PolyhedronPcon::G4PolyhedronPcon (G4double phi, G4double dphi, G4int nz, + const G4double *z, + const G4double *rmin, + const G4double *rmax): + G4Polyhedron (HepPolyhedronPcon (phi, dphi, nz, z, rmin, rmax)) {} + +G4PolyhedronPgon::G4PolyhedronPgon (G4double phi, G4double dphi, G4int npdv, + G4int nz, + const G4double *z, + const G4double *rmin, + const G4double *rmax): + G4Polyhedron (HepPolyhedronPgon (phi, dphi, npdv, nz, z, rmin, rmax)) {} + +G4PolyhedronSphere::G4PolyhedronSphere (G4double rmin, G4double rmax, + G4double phi, G4double dphi, + G4double the, G4double dthe): + G4Polyhedron (HepPolyhedronSphere (rmin, rmax, phi, dphi, the, dthe)) {} + +G4PolyhedronTorus::G4PolyhedronTorus (G4double rmin, G4double rmax, + G4double rtor, + G4double phi, G4double dphi): + G4Polyhedron (HepPolyhedronTorus (rmin, rmax, rtor, phi, dphi)) {} + +G4PolyhedronTrap::G4PolyhedronTrap (G4double Dz, G4double Theta, G4double Phi, + G4double Dy1, + G4double Dx1, G4double Dx2, G4double Alp1, + G4double Dy2, + G4double Dx3, G4double Dx4, G4double Alp2): + G4Polyhedron (HepPolyhedronTrap (Dz, Theta, Phi, Dy1, Dx1, Dx2, Alp1, + Dy2, Dx3, Dx4, Alp2)) {} + +G4PolyhedronTrd1::G4PolyhedronTrd1 (G4double Dx1, G4double Dx2, + G4double Dy, G4double Dz): + G4Polyhedron (HepPolyhedronTrd1 (Dx1, Dx2, Dy, Dz)) {} + +G4PolyhedronTrd2::G4PolyhedronTrd2 (G4double Dx1, G4double Dx2, + G4double Dy1, G4double Dy2, G4double Dz): + G4Polyhedron (HepPolyhedronTrd2 (Dx1, Dx2, Dy1, Dy2, Dz)) {} + +G4PolyhedronTube::G4PolyhedronTube (G4double Rmin, G4double Rmax, G4double Dz): + G4Polyhedron (HepPolyhedronTube (Rmin, Rmax, Dz)) {} + +G4PolyhedronTubs::G4PolyhedronTubs (G4double Rmin, G4double Rmax, G4double Dz, + G4double Phi1, G4double Dphi): + G4Polyhedron (HepPolyhedronTubs (Rmin, Rmax, Dz, Phi1, Dphi)) {} diff --git a/source/graphics_reps/src/G4Polyline.cc b/source/graphics_reps/src/G4Polyline.cc index 0fc97b9dbe..57eb3361ac 100644 --- a/source/graphics_reps/src/G4Polyline.cc +++ b/source/graphics_reps/src/G4Polyline.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Polyline.cc,v 1.4 1999/12/15 14:50:36 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison July 1995 diff --git a/source/graphics_reps/src/G4Polymarker.cc b/source/graphics_reps/src/G4Polymarker.cc index 7cc210f404..c71574a6ca 100644 --- a/source/graphics_reps/src/G4Polymarker.cc +++ b/source/graphics_reps/src/G4Polymarker.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Polymarker.cc,v 1.5 1999/12/15 14:50:36 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison November 1996 diff --git a/source/graphics_reps/src/G4Square.cc b/source/graphics_reps/src/G4Square.cc index 1af84666dd..917234aac1 100644 --- a/source/graphics_reps/src/G4Square.cc +++ b/source/graphics_reps/src/G4Square.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Square.cc,v 1.2 1999/12/15 14:50:36 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/graphics_reps/src/G4Text.cc b/source/graphics_reps/src/G4Text.cc index 39d743d01f..9534136343 100644 --- a/source/graphics_reps/src/G4Text.cc +++ b/source/graphics_reps/src/G4Text.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Text.cc,v 1.4 1999/12/15 14:50:36 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 17/11/96. diff --git a/source/graphics_reps/src/G4VMarker.cc b/source/graphics_reps/src/G4VMarker.cc index 7d26d0baae..b67e0ea8c8 100644 --- a/source/graphics_reps/src/G4VMarker.cc +++ b/source/graphics_reps/src/G4VMarker.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VMarker.cc,v 1.5 1999/12/15 14:50:36 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/graphics_reps/src/G4VVisPrim.cc b/source/graphics_reps/src/G4VVisPrim.cc index fb0131be78..31d5c5b4eb 100644 --- a/source/graphics_reps/src/G4VVisPrim.cc +++ b/source/graphics_reps/src/G4VVisPrim.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VVisPrim.cc,v 1.5 1999/12/15 14:50:36 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison August 1995 diff --git a/source/graphics_reps/src/G4VisAttributes.cc b/source/graphics_reps/src/G4VisAttributes.cc index 225fe9e5ab..f63a204eab 100644 --- a/source/graphics_reps/src/G4VisAttributes.cc +++ b/source/graphics_reps/src/G4VisAttributes.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisAttributes.cc,v 1.5 1999/12/15 14:50:37 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 23rd October 1996 diff --git a/source/graphics_reps/src/G4VisExtent.cc b/source/graphics_reps/src/G4VisExtent.cc index 2c25ca2530..efec971dc0 100644 --- a/source/graphics_reps/src/G4VisExtent.cc +++ b/source/graphics_reps/src/G4VisExtent.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisExtent.cc,v 1.4 1999/12/15 14:50:37 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // A.Walkden 28/11/95 diff --git a/source/graphics_reps/src/G4Visible.cc b/source/graphics_reps/src/G4Visible.cc index 8f8b5491e8..f8e874f777 100644 --- a/source/graphics_reps/src/G4Visible.cc +++ b/source/graphics_reps/src/G4Visible.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Visible.cc,v 1.3 1999/12/15 14:50:37 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 30th October 1996 diff --git a/source/graphics_reps/src/HepPolyhedron.cc b/source/graphics_reps/src/HepPolyhedron.cc new file mode 100644 index 0000000000..36a70c9cd6 --- /dev/null +++ b/source/graphics_reps/src/HepPolyhedron.cc @@ -0,0 +1,1645 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: HepPolyhedron.cc,v 1.4 2000/04/18 10:03:29 evc Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// +// G4 Polyhedron library +// +// History: +// 23.07.96 E.Chernyaev - initial version +// +// 30.09.96 E.Chernyaev +// - added GetNextVertexIndex, GetVertex by Yasuhide Sawada +// - added GetNextUnitNormal, GetNextEdgeIndeces, GetNextEdge +// +// 15.12.96 E.Chernyaev +// - added GetNumberOfRotationSteps, RotateEdge, RotateAroundZ, SetReferences +// - rewritten G4PolyhedronCons; +// - added G4PolyhedronPara, ...Trap, ...Pgon, ...Pcon, ...Sphere, ...Torus +// +// 01.06.97 E.Chernyaev +// - modified RotateAroundZ, added SetSideFacets +// +// 19.03.00 E.Chernyaev +// - implemented boolean operations (add, subtract, intersect) on polyhedra; +// + +#include "HepPolyhedron.h" + +/*********************************************************************** + * * + * Name: HepPolyhedron operator << Date: 09.05.96 * + * Author: E.Chernyaev (IHEP/Protvino) Revised: * + * * + * Function: Print contents of G4 polyhedron * + * * + ***********************************************************************/ +HepStd::ostream & operator<<(HepStd::ostream & ostr, const G4Facet & facet) { + for (int k=0; k<4; k++) { + ostr << " " << facet.edge[k].v << "/" << facet.edge[k].f; + } + return ostr; +} + +HepStd::ostream & operator<<(HepStd::ostream & ostr, const HepPolyhedron & ph) { + ostr << HepStd::endl; + ostr << "Nverteces=" << ph.nvert << ", Nfacets=" << ph.nface << HepStd::endl; + int i; + for (i=1; i<=ph.nvert; i++) { + ostr << "xyz(" << i << ")=" + << ph.pV[i].x() << ' ' << ph.pV[i].y() << ' ' << ph.pV[i].z() + << HepStd::endl; + } + for (i=1; i<=ph.nface; i++) { + ostr << "face(" << i << ")=" << ph.pF[i] << HepStd::endl; + } + return ostr; +} + +HepPolyhedron::HepPolyhedron(const HepPolyhedron &from) +/*********************************************************************** + * * + * Name: HepPolyhedron copy constructor Date: 23.07.96 * + * Author: E.Chernyaev (IHEP/Protvino) Revised: * + * * + ***********************************************************************/ +{ + if (from.nvert > 0 && from.nface > 0) { + nvert = from.nvert; + nface = from.nface; + pV = new HepPoint3D[nvert + 1]; + pF = new G4Facet[nface + 1]; + int i; + for (i=1; i<=nvert; i++) pV[i] = from.pV[i]; + for (i=1; i<=nface; i++) pF[i] = from.pF[i]; + }else{ + nvert = 0; nface = 0; pV = 0; pF = 0; + } +} + +HepPolyhedron & HepPolyhedron::operator=(const HepPolyhedron &from) +/*********************************************************************** + * * + * Name: HepPolyhedron operator = Date: 23.07.96 * + * Author: E.Chernyaev (IHEP/Protvino) Revised: * + * * + * Function: Copy contents of one GEANT4 polyhedron to another * + * * + ***********************************************************************/ +{ + if (this == &from) return *this; + delete [] pV; + delete [] pF; + if (from.nvert > 0 && from.nface > 0) { + nvert = from.nvert; + nface = from.nface; + pV = new HepPoint3D[nvert + 1]; + pF = new G4Facet[nface + 1]; + int i; + for (i=1; i<=nvert; i++) pV[i] = from.pV[i]; + for (i=1; i<=nface; i++) pF[i] = from.pF[i]; + }else{ + nvert = 0; nface = 0; pV = 0; pF = 0; + } + return *this; +} + +int +HepPolyhedron::FindNeighbour(int iFace, int iNode, int iOrder) const +/*********************************************************************** + * * + * Name: HepPolyhedron::FindNeighbour Date: 22.11.99 * + * Author: E.Chernyaev Revised: * + * * + * Function: Find neighbouring face * + * * + ***********************************************************************/ +{ + int i; + for (i=0; i<4; i++) { + if (iNode == abs(pF[iFace].edge[i].v)) break; + } + if (i == 4) { + HepStd::cerr + << "HepPolyhedron::FindNeighbour: face " << iFace + << " has no node " << iNode + << HepStd::endl; + return 0; + } + if (iOrder < 0) { + if ( --i < 0) i = 3; + if (pF[iFace].edge[i].v == 0) i = 2; + } + return (pF[iFace].edge[i].v > 0) ? 0 : pF[iFace].edge[i].f; +} + +HepNormal3D HepPolyhedron::FindNodeNormal(int iFace, int iNode) const +/*********************************************************************** + * * + * Name: HepPolyhedron::FindNodeNormal Date: 22.11.99 * + * Author: E.Chernyaev Revised: * + * * + * Function: Find normal at given node * + * * + ***********************************************************************/ +{ + HepNormal3D normal = GetUnitNormal(iFace); + int k = iFace, iOrder = 1, n = 1; + + for(;;) { + k = FindNeighbour(k, iNode, iOrder); + if (k == iFace) break; + if (k > 0) { + n++; + normal += GetUnitNormal(k); + }else{ + if (iOrder < 0) break; + k = iFace; + iOrder = -iOrder; + } + } + return normal.unit(); +} + +void HepPolyhedron::SetNumberOfRotationSteps(int n) +/*********************************************************************** + * * + * Name: HepPolyhedron::SetNumberOfRotationSteps Date: 24.06.97 * + * Author: J.Allison (Manchester University) Revised: * + * * + * Function: Set number of steps for whole circle * + * * + ***********************************************************************/ +{ + const int nMin = 3; + if (n < nMin) { + HepStd::cerr + << "HepPolyhedron::SetNumberOfRotationSteps: attempt to set the\n" + << "number of steps per circle < " << nMin << "; forced to " << nMin + << HepStd::endl; + fNumberOfRotationSteps = nMin; + }else{ + fNumberOfRotationSteps = n; + } +} + +void HepPolyhedron::AllocateMemory(int Nvert, int Nface) +/*********************************************************************** + * * + * Name: HepPolyhedron::AllocateMemory Date: 19.06.96 * + * Author: E.Chernyaev (IHEP/Protvino) Revised: * + * * + * Function: Allocate memory for GEANT4 polyhedron * + * * + * Input: Nvert - number of nodes * + * Nface - number of faces * + * * + ***********************************************************************/ +{ + nvert = Nvert; + nface = Nface; + pV = new HepPoint3D[nvert+1]; + pF = new G4Facet[nface+1]; +} + +void HepPolyhedron::CreatePrism() +/*********************************************************************** + * * + * Name: HepPolyhedron::CreatePrism Date: 15.07.96 * + * Author: E.Chernyaev (IHEP/Protvino) Revised: * + * * + * Function: Set facets for a prism * + * * + ***********************************************************************/ +{ + enum {DUMMY, BOTTOM, LEFT, BACK, RIGHT, FRONT, TOP}; + + pF[1] = G4Facet(1,LEFT, 4,BACK, 3,RIGHT, 2,FRONT); + pF[2] = G4Facet(5,TOP, 8,BACK, 4,BOTTOM, 1,FRONT); + pF[3] = G4Facet(8,TOP, 7,RIGHT, 3,BOTTOM, 4,LEFT); + pF[4] = G4Facet(7,TOP, 6,FRONT, 2,BOTTOM, 3,BACK); + pF[5] = G4Facet(6,TOP, 5,LEFT, 1,BOTTOM, 2,RIGHT); + pF[6] = G4Facet(5,FRONT, 6,RIGHT, 7,BACK, 8,LEFT); +} + +void HepPolyhedron::RotateEdge(int k1, int k2, HepDouble r1, HepDouble r2, + int v1, int v2, int vEdge, + HepBoolean ifWholeCircle, int ns, int &kface) +/*********************************************************************** + * * + * Name: HepPolyhedron::RotateEdge Date: 05.12.96 * + * Author: E.Chernyaev (IHEP/Protvino) Revised: * + * * + * Function: Create set of facets by rotation of an edge around Z-axis * + * * + * Input: k1, k2 - end vertices of the edge * + * r1, r2 - radiuses of the end vertices * + * v1, v2 - visibility of edges produced by rotation of the end * + * vertices * + * vEdge - visibility of the edge * + * ifWholeCircle - is true in case of whole circle rotation * + * ns - number of discrete steps * + * r[] - r-coordinates * + * kface - current free cell in the pF array * + * * + ***********************************************************************/ +{ + if (r1 == 0. && r2 == 0) return; + + int i; + int i1 = k1; + int i2 = k2; + int ii1 = ifWholeCircle ? i1 : i1+ns; + int ii2 = ifWholeCircle ? i2 : i2+ns; + int vv = ifWholeCircle ? vEdge : 1; + + if (ns == 1) { + if (r1 == 0.) { + pF[kface++] = G4Facet(i1,0, v2*i2,0, (i2+1),0); + }else if (r2 == 0.) { + pF[kface++] = G4Facet(i1,0, i2,0, v1*(i1+1),0); + }else{ + pF[kface++] = G4Facet(i1,0, v2*i2,0, (i2+1),0, v1*(i1+1),0); + } + }else{ + if (r1 == 0.) { + pF[kface++] = G4Facet(vv*i1,0, v2*i2,0, vEdge*(i2+1),0); + for (i2++,i=1; i>> -z for both polylines) * + * r[] - r-coordinates * + * nodeVis - how to Draw edges joing consecutive positions of * + * node during rotation * + * edgeVis - how to Draw edges * + * * + ***********************************************************************/ +{ + static HepDouble wholeCircle = 2*M_PI; + + // S E T R O T A T I O N P A R A M E T E R S + + HepBoolean ifWholeCircle = (abs(dphi-wholeCircle) < perMillion) ? + true : false; + HepDouble delPhi = ifWholeCircle ? wholeCircle : dphi; + int nSphi = (nstep > 0) ? + nstep : int(delPhi*GetNumberOfRotationSteps()/wholeCircle+.5); + if (nSphi == 0) nSphi = 1; + int nVphi = ifWholeCircle ? nSphi : nSphi+1; + HepBoolean ifClosed = np1 > 0 ? false : true; + + // C O U N T V E R T E C E S + + int absNp1 = abs(np1); + int absNp2 = abs(np2); + int i1beg = 0; + int i1end = absNp1-1; + int i2beg = absNp1; + int i2end = absNp1+absNp2-1; + int i, j, k; + + for(i=i1beg; i<=i2end; i++) { + if (abs(r[i]) < perMillion) r[i] = 0.; + } + + j = 0; // external nodes + for (i=i1beg; i<=i1end; i++) { + j += (r[i] == 0.) ? 1 : nVphi; + } + + HepBoolean ifSide1 = false; // internal nodes + HepBoolean ifSide2 = false; + + if (r[i2beg] != r[i1beg] || z[i2beg] != z[i1beg]) { + j += (r[i2beg] == 0.) ? 1 : nVphi; + ifSide1 = true; + } + + for(i=i2beg+1; i 1) j += (r[i2end] == 0.) ? 1 : nVphi; + ifSide2 = true; + } + + // C O U N T F A C E S + + k = ifClosed ? absNp1*nSphi : (absNp1-1)*nSphi; // external faces + + if (absNp2 > 1) { // internal faces + for(i=i2beg; i 0. || r[i+1] > 0.) k += nSphi; + } + + if (ifClosed) { + if (r[i2end] > 0. || r[i2beg] > 0.) k += nSphi; + } + } + + if (!ifClosed) { // side faces + if (ifSide1 && (r[i1beg] > 0. || r[i2beg] > 0.)) k += nSphi; + if (ifSide2 && (r[i1end] > 0. || r[i2end] > 0.)) k += nSphi; + } + + if (!ifWholeCircle) { // phi_side faces + k += ifClosed ? 2*absNp1 : 2*(absNp1-1); + } + + // A L L O C A T E M E M O R Y + + AllocateMemory(j, k); + + // G E N E R A T E V E R T E C E S + + int *kk; + kk = new int[absNp1+absNp2]; + + k = 1; + for(i=i1beg; i<=i1end; i++) { + kk[i] = k; + if (r[i] == 0.) { pV[k++] = HepPoint3D(0, 0, z[i]); } else { k += nVphi; } + } + + i = i2beg; + if (ifSide1) { + kk[i] = k; + if (r[i] == 0.) { pV[k++] = HepPoint3D(0, 0, z[i]); } else { k += nVphi; } + }else{ + kk[i] = kk[i1beg]; + } + + for(i=i2beg+1; i 1) { + i = i2end; + if (ifSide2) { + kk[i] = k; + if (r[i] == 0.) pV[k] = HepPoint3D(0, 0, z[i]); + }else{ + kk[i] = kk[i1end]; + } + } + + HepDouble cosPhi, sinPhi; + + for(j=0; j 1) { + v2 = ifClosed ? nodeVis : 1; + for(i=i2beg; i i2) ? i1 : i2; // k2 = ::max(i1,i2); + + // check head of the List corresponding to k1 + cur = headList[k1]; + if (cur == 0) { + headList[k1] = freeList; + freeList = freeList->next; + cur = headList[k1]; + cur->next = 0; + cur->v2 = k2; + cur->iface = iface; + cur->iedge = iedge; + continue; + } + + if (cur->v2 == k2) { + headList[k1] = cur->next; + cur->next = freeList; + freeList = cur; + pF[iface].edge[iedge].f = cur->iface; + pF[cur->iface].edge[cur->iedge].f = iface; + i1 = (pF[iface].edge[iedge].v < 0) ? -1 : 1; + i2 = (pF[cur->iface].edge[cur->iedge].v < 0) ? -1 : 1; + if (i1 != i2) { + HepStd::cerr + << "Polyhedron::SetReferences: different edge visibility " + << iface << "/" << iedge << "/" + << pF[iface].edge[iedge].v << " and " + << cur->iface << "/" << cur->iedge << "/" + << pF[cur->iface].edge[cur->iedge].v + << HepStd::endl; + } + continue; + } + + // check List itself + for (;;) { + prev = cur; + cur = prev->next; + if (cur == 0) { + prev->next = freeList; + freeList = freeList->next; + cur = prev->next; + cur->next = 0; + cur->v2 = k2; + cur->iface = iface; + cur->iedge = iedge; + break; + } + + if (cur->v2 == k2) { + prev->next = cur->next; + cur->next = freeList; + freeList = cur; + pF[iface].edge[iedge].f = cur->iface; + pF[cur->iface].edge[cur->iedge].f = iface; + i1 = (pF[iface].edge[iedge].v < 0) ? -1 : 1; + i2 = (pF[cur->iface].edge[cur->iedge].v < 0) ? -1 : 1; + if (i1 != i2) { + HepStd::cerr + << "Polyhedron::SetReferences: different edge visibility " + << iface << "/" << iedge << "/" + << pF[iface].edge[iedge].v << " and " + << cur->iface << "/" << cur->iedge << "/" + << pF[cur->iface].edge[cur->iedge].v + << HepStd::endl; + } + break; + } + } + } + } + + // C H E C K T H A T A L L L I S T S A R E E M P T Y + + for (i=0; i 0) { + for (int i=1; i<=nvert; i++) { pV[i] = t * pV[i]; } + + // C H E C K D E T E R M I N A N T A N D + // I N V E R T F A C E T S I F I T I S N E G A T I V E + + HepVector3D d = t * HepVector3D(0,0,0); + HepVector3D x = t * HepVector3D(1,0,0) - d; + HepVector3D y = t * HepVector3D(0,1,0) - d; + HepVector3D z = t * HepVector3D(0,0,1) - d; + if ((x.cross(y))*z < 0) InvertFacets(); + } + return *this; +} + +HepBoolean HepPolyhedron::GetNextVertexIndex(int &index, int &edgeFlag) const +/*********************************************************************** + * * + * Name: HepPolyhedron::GetNextVertexIndex Date: 03.09.96 * + * Author: Yasuhide Sawada Revised: * + * * + * Function: * + * * + ***********************************************************************/ +{ + static int iFace = 1; + static int iQVertex = 0; + int vIndex = pF[iFace].edge[iQVertex].v; + + edgeFlag = (vIndex > 0) ? 1 : 0; + index = abs(vIndex); + + if (iQVertex >= 3 || pF[iFace].edge[iQVertex+1].v == 0) { + iQVertex = 0; + if (++iFace > nface) iFace = 1; + return false; // Last Edge + }else{ + ++iQVertex; + return true; // not Last Edge + } +} + +HepPoint3D HepPolyhedron::GetVertex(int index) const +/*********************************************************************** + * * + * Name: HepPolyhedron::GetVertex Date: 03.09.96 * + * Author: Yasuhide Sawada Revised: 17.11.99 * + * * + * Function: Get vertex of the index. * + * * + ***********************************************************************/ +{ + if (index <= 0 || index > nvert) { + HepStd::cerr + << "HepPolyhedron::GetVertex: irrelevant index " << index + << HepStd::endl; + return HepPoint3D(); + } + return pV[index]; +} + +HepBoolean +HepPolyhedron::GetNextVertex(HepPoint3D &vertex, int &edgeFlag) const +/*********************************************************************** + * * + * Name: HepPolyhedron::GetNextVertex Date: 22.07.96 * + * Author: John Allison Revised: * + * * + * Function: Get vertices of the quadrilaterals in order for each * + * face in face order. Returns false when finished each * + * face. * + * * + ***********************************************************************/ +{ + int index; + HepBoolean rep = GetNextVertexIndex(index, edgeFlag); + vertex = pV[index]; + return rep; +} + +HepBoolean HepPolyhedron::GetNextVertex(HepPoint3D &vertex, int &edgeFlag, + HepNormal3D &normal) const +/*********************************************************************** + * * + * Name: HepPolyhedron::GetNextVertex Date: 26.11.99 * + * Author: E.Chernyaev Revised: * + * * + * Function: Get vertices with normals of the quadrilaterals in order * + * for each face in face order. * + * Returns false when finished each face. * + * * + ***********************************************************************/ +{ + static int iFace = 1; + static int iNode = 0; + + if (nface == 0) return false; // empty polyhedron + + int k = pF[iFace].edge[iNode].v; + if (k > 0) { edgeFlag = 1; } else { edgeFlag = -1; k = -k; } + vertex = pV[k]; + normal = FindNodeNormal(iFace,k); + if (iNode >= 3 || pF[iFace].edge[iNode+1].v == 0) { + iNode = 0; + if (++iFace > nface) iFace = 1; + return false; // last node + }else{ + ++iNode; + return true; // not last node + } +} + +HepBoolean HepPolyhedron::GetNextEdgeIndeces(int &i1, int &i2, int &edgeFlag, + int &iface1, int &iface2) const +/*********************************************************************** + * * + * Name: HepPolyhedron::GetNextEdgeIndeces Date: 30.09.96 * + * Author: E.Chernyaev Revised: 17.11.99 * + * * + * Function: Get indeces of the next edge together with indeces of * + * of the faces which share the edge. * + * Returns false when the last edge. * + * * + ***********************************************************************/ +{ + static int iFace = 1; + static int iQVertex = 0; + static int iOrder = 1; + int k1, k2, kflag, kface1, kface2; + + if (iFace == 1 && iQVertex == 0) { + k2 = pF[nface].edge[0].v; + k1 = pF[nface].edge[3].v; + if (k1 == 0) k1 = pF[nface].edge[2].v; + if (abs(k1) > abs(k2)) iOrder = -1; + } + + do { + k1 = pF[iFace].edge[iQVertex].v; + kflag = k1; + k1 = abs(k1); + kface1 = iFace; + kface2 = pF[iFace].edge[iQVertex].f; + if (iQVertex >= 3 || pF[iFace].edge[iQVertex+1].v == 0) { + iQVertex = 0; + k2 = abs(pF[iFace].edge[iQVertex].v); + iFace++; + }else{ + iQVertex++; + k2 = abs(pF[iFace].edge[iQVertex].v); + } + } while (iOrder*k1 > iOrder*k2); + + i1 = k1; i2 = k2; edgeFlag = (kflag > 0) ? 1 : 0; + iface1 = kface1; iface2 = kface2; + + if (iFace > nface) { + iFace = 1; iOrder = 1; + return false; + }else{ + return true; + } +} + +HepBoolean +HepPolyhedron::GetNextEdgeIndeces(int &i1, int &i2, int &edgeFlag) const +/*********************************************************************** + * * + * Name: HepPolyhedron::GetNextEdgeIndeces Date: 17.11.99 * + * Author: E.Chernyaev Revised: * + * * + * Function: Get indeces of the next edge. * + * Returns false when the last edge. * + * * + ***********************************************************************/ +{ + int kface1, kface2; + return GetNextEdgeIndeces(i1, i2, edgeFlag, kface1, kface2); +} + +HepBoolean +HepPolyhedron::GetNextEdge(HepPoint3D &p1, + HepPoint3D &p2, + int &edgeFlag) const +/*********************************************************************** + * * + * Name: HepPolyhedron::GetNextEdge Date: 30.09.96 * + * Author: E.Chernyaev Revised: * + * * + * Function: Get next edge. * + * Returns false when the last edge. * + * * + ***********************************************************************/ +{ + int i1,i2; + HepBoolean rep = GetNextEdgeIndeces(i1,i2,edgeFlag); + p1 = pV[i1]; + p2 = pV[i2]; + return rep; +} + +HepBoolean +HepPolyhedron::GetNextEdge(HepPoint3D &p1, HepPoint3D &p2, + int &edgeFlag, int &iface1, int &iface2) const +/*********************************************************************** + * * + * Name: HepPolyhedron::GetNextEdge Date: 17.11.99 * + * Author: E.Chernyaev Revised: * + * * + * Function: Get next edge with indeces of the faces which share * + * the edge. * + * Returns false when the last edge. * + * * + ***********************************************************************/ +{ + int i1,i2; + HepBoolean rep = GetNextEdgeIndeces(i1,i2,edgeFlag,iface1,iface2); + p1 = pV[i1]; + p2 = pV[i2]; + return rep; +} + +void HepPolyhedron::GetFacet(int iFace, int &n, int *iNodes, + int *edgeFlags, int *iFaces) const +/*********************************************************************** + * * + * Name: HepPolyhedron::GetFacet Date: 15.12.99 * + * Author: E.Chernyaev Revised: * + * * + * Function: Get face by index * + * * + ***********************************************************************/ +{ + if (iFace < 1 || iFace > nface) { + HepStd::cerr + << "HepPolyhedron::GetFacet: irrelevant index " << iFace + << HepStd::endl; + n = 0; + }else{ + int i, k; + for (i=0; i<4; i++) { + k = pF[iFace].edge[i].v; + if (k == 0) break; + if (iFaces != 0) iFaces[i] = pF[iFace].edge[i].f; + if (k > 0) { + iNodes[i] = k; + if (edgeFlags != 0) edgeFlags[i] = 1; + }else{ + iNodes[i] = -k; + if (edgeFlags != 0) edgeFlags[i] = -1; + } + } + n = i; + } +} + +void HepPolyhedron::GetFacet(int index, int &n, HepPoint3D *nodes, + int *edgeFlags, HepNormal3D *normals) const +/*********************************************************************** + * * + * Name: HepPolyhedron::GetFacet Date: 17.11.99 * + * Author: E.Chernyaev Revised: * + * * + * Function: Get face by index * + * * + ***********************************************************************/ +{ + int iNodes[4]; + GetFacet(index, n, iNodes, edgeFlags); + if (n != 0) { + for (int i=0; i<4; i++) { + nodes[i] = pV[iNodes[i]]; + if (normals != 0) normals[i] = FindNodeNormal(index,iNodes[i]); + } + } +} + +HepBoolean +HepPolyhedron::GetNextFacet(int &n, HepPoint3D *nodes, + int *edgeFlags, HepNormal3D *normals) const +/*********************************************************************** + * * + * Name: HepPolyhedron::GetNextFacet Date: 19.11.99 * + * Author: E.Chernyaev Revised: * + * * + * Function: Get next face with normals of unit length at the nodes. * + * Returns false when finished all faces. * + * * + ***********************************************************************/ +{ + static int iFace = 1; + + if (edgeFlags == 0) { + GetFacet(iFace, n, nodes); + }else if (normals == 0) { + GetFacet(iFace, n, nodes, edgeFlags); + }else{ + GetFacet(iFace, n, nodes, edgeFlags, normals); + } + + if (++iFace > nface) { + iFace = 1; + return false; + }else{ + return true; + } +} + +HepNormal3D HepPolyhedron::GetNormal(int iFace) const +/*********************************************************************** + * * + * Name: HepPolyhedron::GetNormal Date: 19.11.99 * + * Author: E.Chernyaev Revised: * + * * + * Function: Get normal of the face given by index * + * * + ***********************************************************************/ +{ + if (iFace < 1 || iFace > nface) { + HepStd::cerr + << "HepPolyhedron::GetNormal: irrelevant index " << iFace + << HepStd::endl; + return HepNormal3D(); + } + + int i0 = abs(pF[iFace].edge[0].v); + int i1 = abs(pF[iFace].edge[1].v); + int i2 = abs(pF[iFace].edge[2].v); + int i3 = abs(pF[iFace].edge[3].v); + if (i3 == 0) i3 = i0; + return (pV[i2] - pV[i0]).cross(pV[i3] - pV[i1]); +} + +HepNormal3D HepPolyhedron::GetUnitNormal(int iFace) const +/*********************************************************************** + * * + * Name: HepPolyhedron::GetNormal Date: 19.11.99 * + * Author: E.Chernyaev Revised: * + * * + * Function: Get unit normal of the face given by index * + * * + ***********************************************************************/ +{ + if (iFace < 1 || iFace > nface) { + HepStd::cerr + << "HepPolyhedron::GetUnitNormal: irrelevant index " << iFace + << HepStd::endl; + return HepNormal3D(); + } + + int i0 = abs(pF[iFace].edge[0].v); + int i1 = abs(pF[iFace].edge[1].v); + int i2 = abs(pF[iFace].edge[2].v); + int i3 = abs(pF[iFace].edge[3].v); + if (i3 == 0) i3 = i0; + return ((pV[i2] - pV[i0]).cross(pV[i3] - pV[i1])).unit(); +} + +HepBoolean HepPolyhedron::GetNextNormal(HepNormal3D &normal) const +/*********************************************************************** + * * + * Name: HepPolyhedron::GetNextNormal Date: 22.07.96 * + * Author: John Allison Revised: 19.11.99 * + * * + * Function: Get normals of each face in face order. Returns false * + * when finished all faces. * + * * + ***********************************************************************/ +{ + static int iFace = 1; + normal = GetNormal(iFace); + if (++iFace > nface) { + iFace = 1; + return false; + }else{ + return true; + } +} + +HepBoolean HepPolyhedron::GetNextUnitNormal(HepNormal3D &normal) const +/*********************************************************************** + * * + * Name: HepPolyhedron::GetNextUnitNormal Date: 16.09.96 * + * Author: E.Chernyaev Revised: * + * * + * Function: Get normals of unit length of each face in face order. * + * Returns false when finished all faces. * + * * + ***********************************************************************/ +{ + HepBoolean rep = GetNextNormal(normal); + normal = normal.unit(); + return rep; +} + +HepPolyhedronTrd2::HepPolyhedronTrd2(HepDouble Dx1, HepDouble Dx2, + HepDouble Dy1, HepDouble Dy2, + HepDouble Dz) +/*********************************************************************** + * * + * Name: HepPolyhedronTrd2 Date: 22.07.96 * + * Author: E.Chernyaev (IHEP/Protvino) Revised: * + * * + * Function: Create GEANT4 TRD2-trapezoid * + * * + * Input: Dx1 - half-length along X at -Dz 8----7 * + * Dx2 - half-length along X ay +Dz 5----6 ! * + * Dy1 - half-length along Y ay -Dz ! 4-!--3 * + * Dy2 - half-length along Y ay +Dz 1----2 * + * Dz - half-length along Z * + * * + ***********************************************************************/ +{ + AllocateMemory(8,6); + + pV[1] = HepPoint3D(-Dx1,-Dy1,-Dz); + pV[2] = HepPoint3D( Dx1,-Dy1,-Dz); + pV[3] = HepPoint3D( Dx1, Dy1,-Dz); + pV[4] = HepPoint3D(-Dx1, Dy1,-Dz); + pV[5] = HepPoint3D(-Dx2,-Dy2, Dz); + pV[6] = HepPoint3D( Dx2,-Dy2, Dz); + pV[7] = HepPoint3D( Dx2, Dy2, Dz); + pV[8] = HepPoint3D(-Dx2, Dy2, Dz); + + CreatePrism(); +} + +HepPolyhedronTrap::HepPolyhedronTrap(HepDouble Dz, + HepDouble Theta, + HepDouble Phi, + HepDouble Dy1, + HepDouble Dx1, + HepDouble Dx2, + HepDouble Alp1, + HepDouble Dy2, + HepDouble Dx3, + HepDouble Dx4, + HepDouble Alp2) +/*********************************************************************** + * * + * Name: HepPolyhedronTrap Date: 20.11.96 * + * Author: E.Chernyaev Revised: * + * * + * Function: Create GEANT4 TRAP-trapezoid * + * * + * Input: DZ - half-length in Z * + * Theta,Phi - polar angles of the line joining centres of the * + * faces at Z=-Dz and Z=+Dz * + * Dy1 - half-length in Y of the face at Z=-Dz * + * Dx1 - half-length in X of low edge of the face at Z=-Dz * + * Dx2 - half-length in X of top edge of the face at Z=-Dz * + * Alp1 - angle between Y-axis and the median joining top and * + * low edges of the face at Z=-Dz * + * Dy2 - half-length in Y of the face at Z=+Dz * + * Dx3 - half-length in X of low edge of the face at Z=+Dz * + * Dx4 - half-length in X of top edge of the face at Z=+Dz * + * Alp2 - angle between Y-axis and the median joining top and * + * low edges of the face at Z=+Dz * + * * + ***********************************************************************/ +{ + HepDouble DzTthetaCphi = Dz*tan(Theta)*cos(Phi); + HepDouble DzTthetaSphi = Dz*tan(Theta)*sin(Phi); + HepDouble Dy1Talp1 = Dy1*tan(Alp1); + HepDouble Dy2Talp2 = Dy2*tan(Alp2); + + AllocateMemory(8,6); + + pV[1] = HepPoint3D(-DzTthetaCphi-Dy1Talp1-Dx1,-DzTthetaSphi-Dy1,-Dz); + pV[2] = HepPoint3D(-DzTthetaCphi-Dy1Talp1+Dx1,-DzTthetaSphi-Dy1,-Dz); + pV[3] = HepPoint3D(-DzTthetaCphi+Dy1Talp1+Dx2,-DzTthetaSphi+Dy1,-Dz); + pV[4] = HepPoint3D(-DzTthetaCphi+Dy1Talp1-Dx2,-DzTthetaSphi+Dy1,-Dz); + pV[5] = HepPoint3D( DzTthetaCphi-Dy2Talp2-Dx3, DzTthetaSphi-Dy2, Dz); + pV[6] = HepPoint3D( DzTthetaCphi-Dy2Talp2+Dx3, DzTthetaSphi-Dy2, Dz); + pV[7] = HepPoint3D( DzTthetaCphi+Dy2Talp2+Dx4, DzTthetaSphi+Dy2, Dz); + pV[8] = HepPoint3D( DzTthetaCphi+Dy2Talp2-Dx4, DzTthetaSphi+Dy2, Dz); + + CreatePrism(); +} + +HepPolyhedronCons::HepPolyhedronCons(HepDouble Rmn1, + HepDouble Rmx1, + HepDouble Rmn2, + HepDouble Rmx2, + HepDouble Dz, + HepDouble Phi1, + HepDouble Dphi) +/*********************************************************************** + * * + * Name: HepPolyhedronCons::HepPolyhedronCons Date: 15.12.96 * + * Author: E.Chernyaev (IHEP/Protvino) Revised: 15.12.96 * + * * + * Function: Constructor for CONS, TUBS, CONE, TUBE * + * * + * Input: Rmn1, Rmx1 - inside and outside radiuses at -Dz * + * Rmn2, Rmx2 - inside and outside radiuses at +Dz * + * Dz - half length in Z * + * Phi1 - starting angle of the segment * + * Dphi - segment range * + * * + ***********************************************************************/ +{ + static HepDouble wholeCircle=2*M_PI; + + // C H E C K I N P U T P A R A M E T E R S + + int k = 0; + if (Rmn1 < 0. || Rmx1 < 0. || Rmn2 < 0. || Rmx2 < 0.) k = 1; + if (Rmn1 > Rmx1 || Rmn2 > Rmx2) k = 1; + if (Rmn1 == Rmx1 && Rmn2 == Rmx2) k = 1; + + if (Dz <= 0.) k += 2; + + HepDouble phi1, phi2, dphi; + if (Dphi < 0.) { + phi2 = Phi1; phi1 = phi2 - Dphi; + }else if (Dphi == 0.) { + phi1 = Phi1; phi2 = phi1 + wholeCircle; + }else{ + phi1 = Phi1; phi2 = phi1 + Dphi; + } + dphi = phi2 - phi1; + if (abs(dphi-wholeCircle) < perMillion) dphi = wholeCircle; + if (dphi > wholeCircle) k += 4; + + if (k != 0) { + HepStd::cerr << "HepPolyhedronCone(s)/Tube(s): error in input parameters"; + if ((k & 1) != 0) HepStd::cerr << " (radiuses)"; + if ((k & 2) != 0) HepStd::cerr << " (half-length)"; + if ((k & 4) != 0) HepStd::cerr << " (angles)"; + HepStd::cerr << HepStd::endl; + HepStd::cerr << " Rmn1=" << Rmn1 << " Rmx1=" << Rmx1; + HepStd::cerr << " Rmn2=" << Rmn2 << " Rmx2=" << Rmx2; + HepStd::cerr << " Dz=" << Dz << " Phi1=" << Phi1 << " Dphi=" << Dphi + << HepStd::endl; + return; + } + + // P R E P A R E T W O P O L Y L I N E S + + HepDouble zz[4], rr[4]; + zz[0] = Dz; + zz[1] = -Dz; + zz[2] = Dz; + zz[3] = -Dz; + rr[0] = Rmx2; + rr[1] = Rmx1; + rr[2] = Rmn2; + rr[3] = Rmn1; + + // R O T A T E P O L Y L I N E S + + RotateAroundZ(0, phi1, dphi, 2, 2, zz, rr, -1, -1); + SetReferences(); +} + +HepPolyhedronPgon::HepPolyhedronPgon(HepDouble phi, + HepDouble dphi, + int npdv, + int nz, + const HepDouble *z, + const HepDouble *rmin, + const HepDouble *rmax) +/*********************************************************************** + * * + * Name: HepPolyhedronPgon Date: 09.12.96 * + * Author: E.Chernyaev Revised: * + * * + * Function: Constructor of polyhedron for PGON, PCON * + * * + * Input: phi - initial phi * + * dphi - delta phi * + * npdv - number of steps along phi * + * nz - number of z-planes (at least two) * + * z[] - z coordinates of the slices * + * rmin[] - smaller r at the slices * + * rmax[] - bigger r at the slices * + * * + ***********************************************************************/ +{ + // C H E C K I N P U T P A R A M E T E R S + + if (dphi <= 0. || dphi > 2*M_PI) { + HepStd::cerr + << "HepPolyhedronPgon/Pcon: wrong delta phi = " << dphi + << HepStd::endl; + return; + } + + if (nz < 2) { + HepStd::cerr + << "HepPolyhedronPgon/Pcon: number of z-planes less than two = " << nz + << HepStd::endl; + return; + } + + if (npdv < 0) { + HepStd::cerr + << "HepPolyhedronPgon/Pcon: error in number of phi-steps =" << npdv + << HepStd::endl; + return; + } + + int i; + for (i=0; i rmax[i]) { + HepStd::cerr + << "HepPolyhedronPgon: error in radiuses rmin[" << i << "]=" + << rmin[i] << " rmax[" << i << "]=" << rmax[i] + << HepStd::endl; + return; + } + } + + // P R E P A R E T W O P O L Y L I N E S + + HepDouble *zz, *rr; + zz = new HepDouble[2*nz]; + rr = new HepDouble[2*nz]; + + if (z[0] > z[nz-1]) { + for (i=0; i 2*M_PI) { + HepStd::cerr + << "HepPolyhedronSphere: wrong delta phi = " << dphi + << HepStd::endl; + return; + } + + if (the < 0. || the > M_PI) { + HepStd::cerr + << "HepPolyhedronSphere: wrong theta = " << the + << HepStd::endl; + return; + } + + if (dthe <= 0. || dthe > M_PI) { + HepStd::cerr + << "HepPolyhedronSphere: wrong delta theta = " << dthe + << HepStd::endl; + return; + } + + if (the+dthe > M_PI) { + HepStd::cerr + << "HepPolyhedronSphere: wrong theta + delta theta = " + << the << " " << dthe + << HepStd::endl; + return; + } + + if (rmin < 0. || rmin >= rmax) { + HepStd::cerr + << "HepPolyhedronSphere: error in radiuses" + << " rmin=" << rmin << " rmax=" << rmax + << HepStd::endl; + return; + } + + // P R E P A R E T W O P O L Y L I N E S + + int ns = (GetNumberOfRotationSteps() + 1) / 2; + int np1 = int(dthe*ns/M_PI+.5) + 1; + if (np1 <= 1) np1 = 2; + int np2 = rmin < perMillion ? 1 : np1; + + HepDouble *zz, *rr; + zz = new HepDouble[np1+np2]; + rr = new HepDouble[np1+np2]; + + HepDouble a = dthe/(np1-1); + HepDouble cosa, sina; + for (int i=0; i 1) { + zz[i+np1] = rmin*cosa; + rr[i+np1] = rmin*sina; + } + } + if (np2 == 1) { + zz[np1] = 0.; + rr[np1] = 0.; + } + + // R O T A T E P O L Y L I N E S + + RotateAroundZ(0, phi, dphi, np1, np2, zz, rr, -1, -1); + SetReferences(); + + delete [] zz; + delete [] rr; +} + +HepPolyhedronTorus::HepPolyhedronTorus(HepDouble rmin, + HepDouble rmax, + HepDouble rtor, + HepDouble phi, + HepDouble dphi) +/*********************************************************************** + * * + * Name: HepPolyhedronTorus Date: 11.12.96 * + * Author: E.Chernyaev (IHEP/Protvino) Revised: * + * * + * Function: Constructor of polyhedron for TORUS * + * * + * Input: rmin - internal radius * + * rmax - external radius * + * rtor - radius of torus * + * phi - initial phi * + * dphi - delta phi * + * * + ***********************************************************************/ +{ + // C H E C K I N P U T P A R A M E T E R S + + if (dphi <= 0. || dphi > 2*M_PI) { + HepStd::cerr + << "HepPolyhedronTorus: wrong delta phi = " << dphi + << HepStd::endl; + return; + } + + if (rmin < 0. || rmin >= rmax || rmax >= rtor) { + HepStd::cerr + << "HepPolyhedronTorus: error in radiuses" + << " rmin=" << rmin << " rmax=" << rmax << " rtorus=" << rtor + << HepStd::endl; + return; + } + + // P R E P A R E T W O P O L Y L I N E S + + int np1 = GetNumberOfRotationSteps(); + int np2 = rmin < perMillion ? 1 : np1; + + HepDouble *zz, *rr; + zz = new HepDouble[np1+np2]; + rr = new HepDouble[np1+np2]; + + HepDouble a = 2*M_PI/np1; + HepDouble cosa, sina; + for (int i=0; i 1) { + zz[i+np1] = rmin*cosa; + rr[i+np1] = rtor+rmin*sina; + } + } + if (np2 == 1) { + zz[np1] = 0.; + rr[np1] = rtor; + np2 = -1; + } + + // R O T A T E P O L Y L I N E S + + RotateAroundZ(0, phi, dphi, -np1, -np2, zz, rr, -1,-1); + SetReferences(); + + delete [] zz; + delete [] rr; +} + +int HepPolyhedron::fNumberOfRotationSteps = DEFAULT_NUMBER_OF_STEPS; +/*********************************************************************** + * * + * Name: HepPolyhedron::fNumberOfRotationSteps Date: 24.06.97 * + * Author: J.Allison (Manchester University) Revised: * + * * + * Function: Number of steps for whole circle * + * * + ***********************************************************************/ + +#include "BooleanProcessor.src" +static BooleanProcessor processor; + +HepPolyhedron HepPolyhedron::add(const HepPolyhedron & p) const +/*********************************************************************** + * * + * Name: HepPolyhedron::add Date: 19.03.00 * + * Author: E.Chernyaev Revised: * + * * + * Function: Boolean "union" of two polyhedra * + * * + ***********************************************************************/ +{ + return processor.execute(OP_UNION, *this, p); +} + +HepPolyhedron HepPolyhedron::intersect(const HepPolyhedron & p) const +/*********************************************************************** + * * + * Name: HepPolyhedron::intersect Date: 19.03.00 * + * Author: E.Chernyaev Revised: * + * * + * Function: Boolean "intersection" of two polyhedra * + * * + ***********************************************************************/ +{ + return processor.execute(OP_INTERSECTION, *this, p); +} + +HepPolyhedron HepPolyhedron::subtract(const HepPolyhedron & p) const +/*********************************************************************** + * * + * Name: HepPolyhedron::add Date: 19.03.00 * + * Author: E.Chernyaev Revised: * + * * + * Function: Boolean "subtraction" of "p" from "this" * + * * + ***********************************************************************/ +{ + return processor.execute(OP_SUBTRACTION, *this, p); +} diff --git a/source/intercoms/include/G4ApplicationState.hh b/source/intercoms/include/G4ApplicationState.hh index 1f9e25d0e4..575de2d936 100644 --- a/source/intercoms/include/G4ApplicationState.hh +++ b/source/intercoms/include/G4ApplicationState.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ApplicationState.hh,v 1.3 1999/12/15 14:50:37 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4APPLICATIONSTATE_H diff --git a/source/intercoms/include/G4StateManager.hh b/source/intercoms/include/G4StateManager.hh index 73062cf3f2..83adcc3518 100644 --- a/source/intercoms/include/G4StateManager.hh +++ b/source/intercoms/include/G4StateManager.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4StateManager.hh,v 1.5 2000/02/14 12:24:41 asaim Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/intercoms/include/G4UIbatch.hh b/source/intercoms/include/G4UIbatch.hh index f00ddb91d6..dd002fee64 100644 --- a/source/intercoms/include/G4UIbatch.hh +++ b/source/intercoms/include/G4UIbatch.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIbatch.hh,v 1.3 1999/12/15 14:50:38 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // $id$ diff --git a/source/intercoms/include/G4UIcmdWith3Vector.hh b/source/intercoms/include/G4UIcmdWith3Vector.hh index 8bd2d26473..0953b7f975 100644 --- a/source/intercoms/include/G4UIcmdWith3Vector.hh +++ b/source/intercoms/include/G4UIcmdWith3Vector.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIcmdWith3Vector.hh,v 1.3 1999/12/15 14:50:38 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/intercoms/include/G4UIcmdWith3VectorAndUnit.hh b/source/intercoms/include/G4UIcmdWith3VectorAndUnit.hh index 59190c2b92..4d75a2240c 100644 --- a/source/intercoms/include/G4UIcmdWith3VectorAndUnit.hh +++ b/source/intercoms/include/G4UIcmdWith3VectorAndUnit.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIcmdWith3VectorAndUnit.hh,v 1.3 1999/12/15 14:50:38 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/intercoms/include/G4UIcmdWithABool.hh b/source/intercoms/include/G4UIcmdWithABool.hh index a9721906d4..0d7df46501 100644 --- a/source/intercoms/include/G4UIcmdWithABool.hh +++ b/source/intercoms/include/G4UIcmdWithABool.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIcmdWithABool.hh,v 1.3 1999/12/15 14:50:38 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/intercoms/include/G4UIcmdWithADouble.hh b/source/intercoms/include/G4UIcmdWithADouble.hh index 20a8a8663e..1efdd0dfa7 100644 --- a/source/intercoms/include/G4UIcmdWithADouble.hh +++ b/source/intercoms/include/G4UIcmdWithADouble.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIcmdWithADouble.hh,v 1.3 1999/12/15 14:50:38 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/intercoms/include/G4UIcmdWithADoubleAndUnit.hh b/source/intercoms/include/G4UIcmdWithADoubleAndUnit.hh index 8a5c4ad7b5..d44665c624 100644 --- a/source/intercoms/include/G4UIcmdWithADoubleAndUnit.hh +++ b/source/intercoms/include/G4UIcmdWithADoubleAndUnit.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIcmdWithADoubleAndUnit.hh,v 1.3 1999/12/15 14:50:38 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/intercoms/include/G4UIcmdWithAString.hh b/source/intercoms/include/G4UIcmdWithAString.hh index 2593ea44e8..0021ca5397 100644 --- a/source/intercoms/include/G4UIcmdWithAString.hh +++ b/source/intercoms/include/G4UIcmdWithAString.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIcmdWithAString.hh,v 1.3 1999/12/15 14:50:38 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/intercoms/include/G4UIcmdWithAnInteger.hh b/source/intercoms/include/G4UIcmdWithAnInteger.hh index b7a9de70e8..a1de40eea9 100644 --- a/source/intercoms/include/G4UIcmdWithAnInteger.hh +++ b/source/intercoms/include/G4UIcmdWithAnInteger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIcmdWithAnInteger.hh,v 1.3 1999/12/15 14:50:39 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/intercoms/include/G4UIcmdWithoutParameter.hh b/source/intercoms/include/G4UIcmdWithoutParameter.hh index a9a34fd77c..55942d3891 100644 --- a/source/intercoms/include/G4UIcmdWithoutParameter.hh +++ b/source/intercoms/include/G4UIcmdWithoutParameter.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIcmdWithoutParameter.hh,v 1.3 1999/12/15 14:50:39 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/intercoms/include/G4UIcommand.hh b/source/intercoms/include/G4UIcommand.hh index 88aef87ed1..453bdc4c8c 100644 --- a/source/intercoms/include/G4UIcommand.hh +++ b/source/intercoms/include/G4UIcommand.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIcommand.hh,v 1.5 1999/12/15 14:50:39 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/intercoms/include/G4UIcommandStatus.hh b/source/intercoms/include/G4UIcommandStatus.hh index 428396c152..d0405d8ed3 100644 --- a/source/intercoms/include/G4UIcommandStatus.hh +++ b/source/intercoms/include/G4UIcommandStatus.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIcommandStatus.hh,v 1.2 1999/12/15 14:50:39 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4UIcommandStatus_h diff --git a/source/intercoms/include/G4UIcommandTree.hh b/source/intercoms/include/G4UIcommandTree.hh index 7b6b386f29..b968223c45 100644 --- a/source/intercoms/include/G4UIcommandTree.hh +++ b/source/intercoms/include/G4UIcommandTree.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIcommandTree.hh,v 1.5 2000/02/14 12:24:41 asaim Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4UIcommandTree_h diff --git a/source/intercoms/include/G4UIcontrolMessenger.hh b/source/intercoms/include/G4UIcontrolMessenger.hh index 3d1e2002ee..a04aae8c52 100644 --- a/source/intercoms/include/G4UIcontrolMessenger.hh +++ b/source/intercoms/include/G4UIcontrolMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIcontrolMessenger.hh,v 1.3 1999/12/15 14:50:39 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4UIcontrolMessenger_h diff --git a/source/intercoms/include/G4UIdirectory.hh b/source/intercoms/include/G4UIdirectory.hh index 5790e839f0..6afc31a1d2 100644 --- a/source/intercoms/include/G4UIdirectory.hh +++ b/source/intercoms/include/G4UIdirectory.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIdirectory.hh,v 1.3 1999/12/15 14:50:39 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/intercoms/include/G4UImanager.hh b/source/intercoms/include/G4UImanager.hh index 39d9fae224..b4ddd923bc 100644 --- a/source/intercoms/include/G4UImanager.hh +++ b/source/intercoms/include/G4UImanager.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UImanager.hh,v 1.5 2000/02/14 08:41:24 asaim Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4UImanager_h diff --git a/source/intercoms/include/G4UImessenger.hh b/source/intercoms/include/G4UImessenger.hh index b4f0f8be9e..81dd2b71a9 100644 --- a/source/intercoms/include/G4UImessenger.hh +++ b/source/intercoms/include/G4UImessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UImessenger.hh,v 1.4 1999/12/15 14:50:39 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4UImessenger_h diff --git a/source/intercoms/include/G4UIparameter.hh b/source/intercoms/include/G4UIparameter.hh index 30e80cb251..8292f20941 100644 --- a/source/intercoms/include/G4UIparameter.hh +++ b/source/intercoms/include/G4UIparameter.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIparameter.hh,v 1.3 1999/12/15 14:50:39 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // --------------------------------------------------------------------- diff --git a/source/intercoms/include/G4UIsession.hh b/source/intercoms/include/G4UIsession.hh index 8d7845fef1..3e8d78dd13 100644 --- a/source/intercoms/include/G4UIsession.hh +++ b/source/intercoms/include/G4UIsession.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIsession.hh,v 1.3 1999/12/15 14:50:39 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // $id$ diff --git a/source/intercoms/include/G4UItokenNum.hh b/source/intercoms/include/G4UItokenNum.hh index 61481c19b0..e61b2463be 100644 --- a/source/intercoms/include/G4UItokenNum.hh +++ b/source/intercoms/include/G4UItokenNum.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UItokenNum.hh,v 1.2 1999/12/15 14:50:39 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4UItokenNum.hh diff --git a/source/intercoms/include/G4UnitsMessenger.hh b/source/intercoms/include/G4UnitsMessenger.hh index dd00a9ecca..396a974efe 100644 --- a/source/intercoms/include/G4UnitsMessenger.hh +++ b/source/intercoms/include/G4UnitsMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UnitsMessenger.hh,v 1.3 1999/12/15 14:50:40 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class description // diff --git a/source/intercoms/include/G4VFlavoredParallelWorld.hh b/source/intercoms/include/G4VFlavoredParallelWorld.hh index b52061d21d..f1501f1142 100644 --- a/source/intercoms/include/G4VFlavoredParallelWorld.hh +++ b/source/intercoms/include/G4VFlavoredParallelWorld.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VFlavoredParallelWorld.hh,v 1.2 1999/12/15 14:50:40 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Abstract interface for GEANT4 Flavored Parallel World. diff --git a/source/intercoms/include/G4VGlobalFastSimulationManager.hh b/source/intercoms/include/G4VGlobalFastSimulationManager.hh index 916d02fdd1..be2a648dfc 100644 --- a/source/intercoms/include/G4VGlobalFastSimulationManager.hh +++ b/source/intercoms/include/G4VGlobalFastSimulationManager.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VGlobalFastSimulationManager.hh,v 1.2 1999/12/15 14:50:40 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Abstract interface for GEANT4 Global Fast Simulation Manager. diff --git a/source/intercoms/include/G4VGraphicsScene.hh b/source/intercoms/include/G4VGraphicsScene.hh index 68e296fc14..592988405f 100644 --- a/source/intercoms/include/G4VGraphicsScene.hh +++ b/source/intercoms/include/G4VGraphicsScene.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VGraphicsScene.hh,v 1.4 1999/12/15 14:50:40 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // John Allison 19th July 1996 // // Class Description: diff --git a/source/intercoms/include/G4VStateDependent.hh b/source/intercoms/include/G4VStateDependent.hh index 659916f107..a16f019daf 100644 --- a/source/intercoms/include/G4VStateDependent.hh +++ b/source/intercoms/include/G4VStateDependent.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VStateDependent.hh,v 1.3 1999/12/15 14:50:40 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/intercoms/include/G4VVisManager.hh b/source/intercoms/include/G4VVisManager.hh index 00cd96eb6e..8fae03c06e 100644 --- a/source/intercoms/include/G4VVisManager.hh +++ b/source/intercoms/include/G4VVisManager.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VVisManager.hh,v 1.4 1999/12/15 14:50:40 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // John Allison 19/Oct/1996. // // Class Description: diff --git a/source/intercoms/src/G4StateManager.cc b/source/intercoms/src/G4StateManager.cc index d9ec7342e4..ab3fb103e3 100644 --- a/source/intercoms/src/G4StateManager.cc +++ b/source/intercoms/src/G4StateManager.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4StateManager.cc,v 1.3 2000/02/14 12:24:42 asaim Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/intercoms/src/G4UIbatch.cc b/source/intercoms/src/G4UIbatch.cc index 71060f5dc9..93e053a69e 100644 --- a/source/intercoms/src/G4UIbatch.cc +++ b/source/intercoms/src/G4UIbatch.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIbatch.cc,v 1.2 1999/12/15 14:50:40 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4UIbatch.hh" diff --git a/source/intercoms/src/G4UIcmdWith3Vector.cc b/source/intercoms/src/G4UIcmdWith3Vector.cc index bf60159ed2..33c78fbbb4 100644 --- a/source/intercoms/src/G4UIcmdWith3Vector.cc +++ b/source/intercoms/src/G4UIcmdWith3Vector.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIcmdWith3Vector.cc,v 1.2 1999/12/15 14:50:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/intercoms/src/G4UIcmdWith3VectorAndUnit.cc b/source/intercoms/src/G4UIcmdWith3VectorAndUnit.cc index 8112a22ee7..6dda0767eb 100644 --- a/source/intercoms/src/G4UIcmdWith3VectorAndUnit.cc +++ b/source/intercoms/src/G4UIcmdWith3VectorAndUnit.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIcmdWith3VectorAndUnit.cc,v 1.2 1999/12/15 14:50:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/intercoms/src/G4UIcmdWithABool.cc b/source/intercoms/src/G4UIcmdWithABool.cc index d6d23a7f68..e27ab16ce4 100644 --- a/source/intercoms/src/G4UIcmdWithABool.cc +++ b/source/intercoms/src/G4UIcmdWithABool.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIcmdWithABool.cc,v 1.2 1999/12/15 14:50:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/intercoms/src/G4UIcmdWithADouble.cc b/source/intercoms/src/G4UIcmdWithADouble.cc index 1062402cfe..757d5c02ad 100644 --- a/source/intercoms/src/G4UIcmdWithADouble.cc +++ b/source/intercoms/src/G4UIcmdWithADouble.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIcmdWithADouble.cc,v 1.2 1999/12/15 14:50:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/intercoms/src/G4UIcmdWithADoubleAndUnit.cc b/source/intercoms/src/G4UIcmdWithADoubleAndUnit.cc index 849b54389b..32c3e29c0f 100644 --- a/source/intercoms/src/G4UIcmdWithADoubleAndUnit.cc +++ b/source/intercoms/src/G4UIcmdWithADoubleAndUnit.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIcmdWithADoubleAndUnit.cc,v 1.2 1999/12/15 14:50:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/intercoms/src/G4UIcmdWithAString.cc b/source/intercoms/src/G4UIcmdWithAString.cc index 160762af2a..04cd4849ea 100644 --- a/source/intercoms/src/G4UIcmdWithAString.cc +++ b/source/intercoms/src/G4UIcmdWithAString.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIcmdWithAString.cc,v 1.2 1999/12/15 14:50:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/intercoms/src/G4UIcmdWithAnInteger.cc b/source/intercoms/src/G4UIcmdWithAnInteger.cc index 89abcd18c2..b8f63edf84 100644 --- a/source/intercoms/src/G4UIcmdWithAnInteger.cc +++ b/source/intercoms/src/G4UIcmdWithAnInteger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIcmdWithAnInteger.cc,v 1.2 1999/12/15 14:50:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/intercoms/src/G4UIcmdWithoutParameter.cc b/source/intercoms/src/G4UIcmdWithoutParameter.cc index b833185e3f..51429c464c 100644 --- a/source/intercoms/src/G4UIcmdWithoutParameter.cc +++ b/source/intercoms/src/G4UIcmdWithoutParameter.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIcmdWithoutParameter.cc,v 1.2 1999/12/15 14:50:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/intercoms/src/G4UIcommand.cc b/source/intercoms/src/G4UIcommand.cc index cc511e2fd1..91f508263a 100644 --- a/source/intercoms/src/G4UIcommand.cc +++ b/source/intercoms/src/G4UIcommand.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIcommand.cc,v 1.5 1999/12/15 14:50:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/intercoms/src/G4UIcommandTree.cc b/source/intercoms/src/G4UIcommandTree.cc index 8df72be5c4..e5048e4883 100644 --- a/source/intercoms/src/G4UIcommandTree.cc +++ b/source/intercoms/src/G4UIcommandTree.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIcommandTree.cc,v 1.4 2000/02/14 12:24:42 asaim Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4UIcommandTree.hh" diff --git a/source/intercoms/src/G4UIcontrolMessenger.cc b/source/intercoms/src/G4UIcontrolMessenger.cc index eaf52e2355..bd4d65b950 100644 --- a/source/intercoms/src/G4UIcontrolMessenger.cc +++ b/source/intercoms/src/G4UIcontrolMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIcontrolMessenger.cc,v 1.2 1999/12/15 14:50:42 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4UIcontrolMessenger.hh" diff --git a/source/intercoms/src/G4UIdirectory.cc b/source/intercoms/src/G4UIdirectory.cc index d6da19f3a6..4f2d0daf1b 100644 --- a/source/intercoms/src/G4UIdirectory.cc +++ b/source/intercoms/src/G4UIdirectory.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIdirectory.cc,v 1.2 1999/12/15 14:50:42 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/intercoms/src/G4UImanager.cc b/source/intercoms/src/G4UImanager.cc index 54e9d2e73a..44b642d30e 100644 --- a/source/intercoms/src/G4UImanager.cc +++ b/source/intercoms/src/G4UImanager.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UImanager.cc,v 1.5 2000/02/14 08:41:25 asaim Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // --------------------------------------------------------------------- diff --git a/source/intercoms/src/G4UImessenger.cc b/source/intercoms/src/G4UImessenger.cc index e7bb7e4842..4f38ff9586 100644 --- a/source/intercoms/src/G4UImessenger.cc +++ b/source/intercoms/src/G4UImessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UImessenger.cc,v 1.2 1999/12/15 14:50:42 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4UImessenger.hh" diff --git a/source/intercoms/src/G4UIparameter.cc b/source/intercoms/src/G4UIparameter.cc index cebd82d61b..903b452aae 100644 --- a/source/intercoms/src/G4UIparameter.cc +++ b/source/intercoms/src/G4UIparameter.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIparameter.cc,v 1.4 1999/12/15 14:50:42 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4UIparameter.hh" diff --git a/source/intercoms/src/G4UIsession.cc b/source/intercoms/src/G4UIsession.cc index 0bb6be7e86..c2ed4854ae 100644 --- a/source/intercoms/src/G4UIsession.cc +++ b/source/intercoms/src/G4UIsession.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UIsession.cc,v 1.3 1999/12/15 17:52:03 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // --------------------------------------------------------------------- diff --git a/source/intercoms/src/G4UnitsMessenger.cc b/source/intercoms/src/G4UnitsMessenger.cc index 7eee08c9da..e195f8fa00 100644 --- a/source/intercoms/src/G4UnitsMessenger.cc +++ b/source/intercoms/src/G4UnitsMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UnitsMessenger.cc,v 1.2 1999/12/15 14:50:42 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/intercoms/src/G4VGlobalFastSimulationManager.cc b/source/intercoms/src/G4VGlobalFastSimulationManager.cc index 9078eab043..fcc2501e73 100644 --- a/source/intercoms/src/G4VGlobalFastSimulationManager.cc +++ b/source/intercoms/src/G4VGlobalFastSimulationManager.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VGlobalFastSimulationManager.cc,v 1.2 1999/12/15 14:50:42 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Abstract interface for GEANT4 Global Fast Simulation Manager. diff --git a/source/intercoms/src/G4VStateDependent.cc b/source/intercoms/src/G4VStateDependent.cc index 501145eb39..1f26313f07 100644 --- a/source/intercoms/src/G4VStateDependent.cc +++ b/source/intercoms/src/G4VStateDependent.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VStateDependent.cc,v 1.2 1999/12/15 14:50:42 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/intercoms/src/G4VVisManager.cc b/source/intercoms/src/G4VVisManager.cc index 382448a2b1..193db7ce88 100644 --- a/source/intercoms/src/G4VVisManager.cc +++ b/source/intercoms/src/G4VVisManager.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VVisManager.cc,v 1.3 1999/12/15 14:50:42 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Abstract interface for GEANT4 Visualization Manager. diff --git a/source/interfaces/GAG/include/G4UIGAG.hh b/source/interfaces/GAG/include/G4UIGAG.hh index d21f0233fe..06a84f8048 100644 --- a/source/interfaces/GAG/include/G4UIGAG.hh +++ b/source/interfaces/GAG/include/G4UIGAG.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4UIGAG.hh,v 1.3.4.1.2.2 1999/12/14 07:07:55 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4UIGAG.hh,v 1.4 1999/12/15 14:50:43 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 278f94e1d5..0af60d53d6 100644 --- a/source/interfaces/GAG/src/G4UIGAG.cc +++ b/source/interfaces/GAG/src/G4UIGAG.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4UIGAG.cc,v 1.6.2.1.2.1.2.7 1999/12/17 12:04:58 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4UIGAG.cc,v 1.9 1999/12/17 12:09:50 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4UIGAG.cc // 18.Feb.98 M.Nagamatu and T.Kodama created G4UIGAG from G4UIterminal diff --git a/source/interfaces/History b/source/interfaces/History index 04e21a5a74..04e52de030 100644 --- a/source/interfaces/History +++ b/source/interfaces/History @@ -1,4 +1,4 @@ -$Id: History,v 1.20 1999/11/10 16:12:19 johna Exp $ +$Id: History,v 1.31 2000/06/23 08:46:48 stesting Exp $ ------------------------------------------------------------------- ========================================================= @@ -16,6 +16,35 @@ committal in the CVS repository ! ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- + +23 June 2000 John Allison (interfaces-V01-01-06) +- Protected G4UIterminal, G4Ui[t]csh against access by index to null strings. + +21 June 2000 John Allison (interfaces-V01-01-05) +- Added include $(G4INSTALL)/config/G4VIS_BUILD.gmk to common/GNUmakefile. + +15 June 2000 John Allison (interfaces-V01-01-04) +- More ISO compliance for G4UIterminal class. + +14 June 2000 Makoto Asai (interfaces-V01-01-03) +- ISO compliance for G4UItcsh classes + +26 May 2000 Guy Barrand (interfaces-V01-01-02) +- G4UIXm.hh, G4UIWin32.hh : change comments about /gui for the doc. + +23 May 2000 John Allison (interfaces-V01-01-01-without-tcsh) +- Tag without G4UIterminal(G4UItcsh) in case it is not needed in the release. + +20 May 2000 Guy Barrand (interfaces-V01-01-01) +- common/G4InteractorMessenger : change command name "interactor" to "gui". + +19 May 2000 John Allison (interfaces-V01-01-00) +- G4UIterminal displays a candidate list in case a given parameter is + wrong (Makoto Asai). + +26 Mar 2000 Makoto Asai +- Introducing a new G4UIterminal with UNIX-like shell. + 10 Nov 1999 Hajime Yoshida (interfaces-V00-01-03) - Added less argument (Guy). - G4UIWin32.hh, G4UIXm.hh : usage of G4std::less in G4std::map. diff --git a/source/interfaces/OPACS/include/G4UIWo.hh b/source/interfaces/OPACS/include/G4UIWo.hh index c775ff0b60..879d968e7e 100644 --- a/source/interfaces/OPACS/include/G4UIWo.hh +++ b/source/interfaces/OPACS/include/G4UIWo.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4UIWo.hh,v 1.2.8.1 1999/12/07 20:49:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4UIWo.hh,v 1.3 1999/12/15 14:50:44 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4UIWo_h #define G4UIWo_h diff --git a/source/interfaces/OPACS/include/G4WoMessenger.hh b/source/interfaces/OPACS/include/G4WoMessenger.hh index 365d3519b2..66ab32bca4 100644 --- a/source/interfaces/OPACS/include/G4WoMessenger.hh +++ b/source/interfaces/OPACS/include/G4WoMessenger.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4WoMessenger.hh,v 1.2.8.1 1999/12/07 20:49:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4WoMessenger.hh,v 1.3 1999/12/15 14:50:44 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4WoMessenger_h #define G4WoMessenger_h 1 diff --git a/source/interfaces/OPACS/include/G4oCommon.hh b/source/interfaces/OPACS/include/G4oCommon.hh index 529c1e4f39..bee377a4db 100644 --- a/source/interfaces/OPACS/include/G4oCommon.hh +++ b/source/interfaces/OPACS/include/G4oCommon.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4oCommon.hh,v 1.2.8.1 1999/12/07 20:49:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4oCommon.hh,v 1.3 1999/12/15 14:50:44 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // /* Included by G4o.h. diff --git a/source/interfaces/OPACS/include/G4oCommon.icc b/source/interfaces/OPACS/include/G4oCommon.icc index 3fc3ecc655..52b91d2d69 100644 --- a/source/interfaces/OPACS/include/G4oCommon.icc +++ b/source/interfaces/OPACS/include/G4oCommon.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4oCommon.icc,v 1.2.8.1 1999/12/07 20:49:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4oCommon.icc,v 1.3 1999/12/15 14:50:44 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // /* Included by G4o.cc. diff --git a/source/interfaces/OPACS/src/G4UIWo.cc b/source/interfaces/OPACS/src/G4UIWo.cc index cdeae7c1d3..b940d1cc5d 100644 --- a/source/interfaces/OPACS/src/G4UIWo.cc +++ b/source/interfaces/OPACS/src/G4UIWo.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4UIWo.cc,v 1.2.8.1.2.1 1999/12/08 17:34:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4UIWo.cc,v 1.3 1999/12/15 14:50:46 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // //G4UIWo.cc -- copied from G4UIterminal.cc diff --git a/source/interfaces/OPACS/src/G4WoMessenger.cc b/source/interfaces/OPACS/src/G4WoMessenger.cc index f902cc1247..89e1e4d3e3 100644 --- a/source/interfaces/OPACS/src/G4WoMessenger.cc +++ b/source/interfaces/OPACS/src/G4WoMessenger.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4WoMessenger.cc,v 1.2.8.1 1999/12/07 20:49:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4WoMessenger.cc,v 1.3 1999/12/15 14:50:46 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifdef G4UI_BUILD_WO_SESSION diff --git a/source/interfaces/XVT/include/G4UIxvt.hh b/source/interfaces/XVT/include/G4UIxvt.hh index 2bf00106e8..b3cf595f29 100644 --- a/source/interfaces/XVT/include/G4UIxvt.hh +++ b/source/interfaces/XVT/include/G4UIxvt.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4UIxvt.hh,v 1.2.8.1.2.2 1999/12/14 07:07:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4UIxvt.hh,v 1.3 1999/12/15 14:50:46 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // //////////////////////////////////////////////////////////////////////// // XVT driver class header // diff --git a/source/interfaces/XVT/include/G4UIxvtMessenger.hh b/source/interfaces/XVT/include/G4UIxvtMessenger.hh index d7cd494e88..695a89b891 100644 --- a/source/interfaces/XVT/include/G4UIxvtMessenger.hh +++ b/source/interfaces/XVT/include/G4UIxvtMessenger.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4UIxvtMessenger.hh,v 1.2.8.1 1999/12/07 20:49:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4UIxvtMessenger.hh,v 1.3 1999/12/15 14:50:46 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // ////////////////////////////////////////////////////////////////////////////// // // diff --git a/source/interfaces/XVT/src/G4UIxvt.cc b/source/interfaces/XVT/src/G4UIxvt.cc index e227a844ba..1cc1874eff 100644 --- a/source/interfaces/XVT/src/G4UIxvt.cc +++ b/source/interfaces/XVT/src/G4UIxvt.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4UIxvt.cc,v 1.2.8.1.2.1 1999/12/08 17:34:03 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4UIxvt.cc,v 1.3 1999/12/15 14:50:46 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifdef G4UI_BUILD_XVT_SESSION diff --git a/source/interfaces/XVT/src/G4UIxvtMessenger.cc b/source/interfaces/XVT/src/G4UIxvtMessenger.cc index fb978b3dab..e2bd7c4f36 100644 --- a/source/interfaces/XVT/src/G4UIxvtMessenger.cc +++ b/source/interfaces/XVT/src/G4UIxvtMessenger.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4UIxvtMessenger.cc,v 1.2.8.1.2.1 1999/12/08 17:34:03 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4UIxvtMessenger.cc,v 1.3 1999/12/15 14:50:46 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifdef G4UI_BUILD_XVT_SESSION diff --git a/source/interfaces/basic/include/G4UIArrayString.hh b/source/interfaces/basic/include/G4UIArrayString.hh new file mode 100644 index 0000000000..57f6073e2f --- /dev/null +++ b/source/interfaces/basic/include/G4UIArrayString.hh @@ -0,0 +1,45 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4UIArrayString.hh,v 1.1 2000/03/26 23:02:33 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// + +#ifndef G4UIArrayString_h +#define G4UIArrayString_h + +#include "globals.hh" + +// +// Description: +// This class is a utility class for listing commands like +// UNIX "ls" command. +// + +class G4UIArrayString { +private: + G4String* stringArray; + G4int nElement; + G4int nColumn; + + G4String* GetElement(G4int icol, G4int irow) const; + // #rows in a column + G4int GetNRow(G4int icol) const; + // max field width of a column + G4int GetNField(G4int icol) const; + // calculate total column width + G4int CalculateColumnWidth() const; + +public: + G4UIArrayString(const G4String& stream); + ~G4UIArrayString(); + + void Show(G4int ncol); +}; + +#endif + diff --git a/source/interfaces/basic/include/G4UIWin32.hh b/source/interfaces/basic/include/G4UIWin32.hh index f54ae396a8..fa31d2eacc 100644 --- a/source/interfaces/basic/include/G4UIWin32.hh +++ b/source/interfaces/basic/include/G4UIWin32.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4UIWin32.hh,v 1.7.4.1 1999/12/07 20:49:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4UIWin32.hh,v 1.9 2000/05/26 14:58:29 barrand Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4UIWin32_h #define G4UIWin32_h @@ -33,10 +33,10 @@ class G4VInteractorManager; // Note that there are corresponding Geant4 commands to add a // menus in the menubar and add buttons in a menu. // Ex : -// /interactor/addMenu test Test -// /interactor/addButton test Init /run/initialize -// /interactor/addButton test "Set gun" "/control/execute gun.g4m" -// /interactor/addButton test "Run one event" "/run/beamOn 1" +// /gui/addMenu test Test +// /gui/addButton test Init /run/initialize +// /gui/addButton test "Set gun" "/control/execute gun.g4m" +// /gui/addButton test "Run one event" "/run/beamOn 1" // // Command completion, by typing "tab" key, is available on the // command line. diff --git a/source/interfaces/basic/include/G4UIXaw.hh b/source/interfaces/basic/include/G4UIXaw.hh index 33629a252f..e43e8fd0b4 100644 --- a/source/interfaces/basic/include/G4UIXaw.hh +++ b/source/interfaces/basic/include/G4UIXaw.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4UIXaw.hh,v 1.3.4.1 1999/12/07 20:49:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4UIXaw.hh,v 1.4 1999/12/15 14:50:46 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4UIXaw_h #define G4UIXaw_h diff --git a/source/interfaces/basic/include/G4UIXm.hh b/source/interfaces/basic/include/G4UIXm.hh index e4f7071fc3..44520f10d8 100644 --- a/source/interfaces/basic/include/G4UIXm.hh +++ b/source/interfaces/basic/include/G4UIXm.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4UIXm.hh,v 1.8.4.1 1999/12/07 20:49:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4UIXm.hh,v 1.10 2000/05/26 14:58:30 barrand Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4UIXm_h #define G4UIXm_h @@ -32,10 +32,10 @@ class G4UIsession; // Note that there are corresponding Geant4 commands to add a // menus in the menubar and add buttons in a menu. // Ex : -// /interactor/addMenu test Test -// /interactor/addButton test Init /run/initialize -// /interactor/addButton test "Set gun" "/control/execute gun.g4m" -// /interactor/addButton test "Run one event" "/run/beamOn 1" +// /gui/addMenu test Test +// /gui/addButton test Init /run/initialize +// /gui/addButton test "Set gun" "/control/execute gun.g4m" +// /gui/addButton test "Run one event" "/run/beamOn 1" // // Command completion, by typing "tab" key, is available on the // command line. diff --git a/source/interfaces/basic/include/G4UIcsh.hh b/source/interfaces/basic/include/G4UIcsh.hh new file mode 100644 index 0000000000..6321186e8e --- /dev/null +++ b/source/interfaces/basic/include/G4UIcsh.hh @@ -0,0 +1,34 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4UIcsh.hh,v 1.1 2000/03/26 23:03:46 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// + +#ifndef G4UIcsh_h +#define G4UIcsh_h + +#include "G4VUIshell.hh" + +// +// Description: +// This class gives csh-like shell. (same as dumb terminal) +// + +class G4UIcsh : public G4VUIshell { +protected: + +public: + G4UIcsh(const G4String& prompt="%s> "); + ~G4UIcsh(); + + virtual G4String GetCommandLine(); + +}; + +#endif + diff --git a/source/interfaces/basic/include/G4UItcsh.hh b/source/interfaces/basic/include/G4UItcsh.hh new file mode 100644 index 0000000000..eaef8f7a09 --- /dev/null +++ b/source/interfaces/basic/include/G4UItcsh.hh @@ -0,0 +1,126 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4UItcsh.hh,v 1.1 2000/03/26 23:03:47 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// + +#ifndef G4UItcsh_h +#define G4UItcsh_h 1 + +#ifndef WIN32 + +#include +#include "g4std/vector" +#include "G4VUIshell.hh" +#include "G4UIcommand.hh" +#include "G4UIcommandTree.hh" + +// +// Description: +// This class gives tcsh-like shell. +// +// If your terminal supports color code, colored strings are available +// in ListCommand(). For activating color support, +// e.g. +// tcsh-> SetLsColor(GREEN, CYAN); // (dir, command) color +// +// [key binding] +// ^A ... move cursor to the top +// ^B ... backward cursor ([LEFT]) +// ^D ... delete/exit/show matched list +// ^E ... move cursor to the end +// ^F ... forward cursor ([RIGHT]) +// ^K ... clear after the cursor +// ^L ... clear screen (not implemented) +// ^N ... next command ([DOWN]) +// ^P ... previous command ([UP]) +// TAB... command completion +// DEL... backspace +// BS ... backspace +// +// [prompt string substitution] +// %s ... current application status +// %/ ... current working directory +// %h ... history# (different from G4 history#) +// + +class G4UItcsh : public G4VUIshell { +protected: + virtual void MakePrompt(); + + G4int cursorPosition; // cursor position + G4String commandLine; // command line string; + G4String commandLineBuf; // temp. command line; + G4bool IsCursorLast() const; + // Is cursor position at the last of command line ? + + void InitializeCommandLine(); + G4String ReadLine(); + void InsertCharacter(char cc); // insert character + void BackspaceCharacter(); // backspace character + void DeleteCharacter(); // delete character + void ClearLine(); // clear command line + void ClearAfterCursor(); // clear after the cursor + void ClearScreen(); // clear screen + + void ForwardCursor(); // move cursor forward + void BackwardCursor(); // move cursor backward + void MoveCursorTop(); // move cursor to the top + void MoveCursorEnd(); // move cursor to the end + + void NextCommand(); // next command + void PreviousCommand(); // previous command + + void ListMatchedCommand(); // list matched commands + void CompleteCommand(); // complete command + + // utilities... + G4String GetFirstMatchedString(const G4String& str1, + const G4String& str2) const; + + // history functionality (history# is managed in itself) + G4std::vector commandHistory; + G4int maxHistory; // max# of histories stored + G4int currentHistoryNo; // global + G4int relativeHistoryIndex; // local index relative to current history# + + void StoreHistory(G4String aCommand); + G4String RestoreHistory(G4int index); // index is global history# + + + // (re)set termios + termios tios; // terminal mode (prestatus) + G4String clearString; // "clear code (^L)" + void SetTermToInputMode(); + void RestoreTerm(); + +public: + G4UItcsh(const G4String& prompt="%s> ", G4int maxhist=100); + ~G4UItcsh(); + + void SetLsColor(TermColorIndex dirColor, TermColorIndex cmdColor); + virtual G4String GetCommandLine(); +}; + +inline G4bool G4UItcsh::IsCursorLast() const +{ + if(cursorPosition == commandLine.length()+1) return TRUE; + else return FALSE; +} + +inline void G4UItcsh::SetLsColor(TermColorIndex dirColor, + TermColorIndex cmdColor) +{ + lsColorFlag= TRUE; + directoryColor= dirColor; + commandColor= cmdColor; +} + +#endif +#endif + diff --git a/source/interfaces/basic/include/G4UIterminal.hh b/source/interfaces/basic/include/G4UIterminal.hh index 7119177c87..5a282556d7 100644 --- a/source/interfaces/basic/include/G4UIterminal.hh +++ b/source/interfaces/basic/include/G4UIterminal.hh @@ -5,57 +5,83 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4UIterminal.hh,v 1.3.4.1.2.2 1999/12/14 07:07:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4UIterminal.hh,v 1.5 2000/03/26 23:03:48 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4UIterminal_h #define G4UIterminal_h 1 -#include "G4VBasicShell.hh" -#include "G4UImanager.hh" #include "g4std/fstream" +#include "G4UImanager.hh" +#include "G4VBasicShell.hh" +#include "G4VUIshell.hh" -// class description: // -// This class inherits the class G4UIsession. -// This is the class to use a character-terminal sesion. +// Description: +// +// This class inherits the class G4UIsession. +// This is the class to use a character-terminal sesion. +// +// Usage: +// G4UIsession* terminalSession = new G4UIterminal; +// or G4UIsession* terminalSession = new G4UIterminal(new your-shell); +// +// A character-terminal session "terminalSession" is instantiated. +// G4cout stream is redirected by default to the constructed instance. +// +// terminalSession-> SessionStart(); // "terminalSession" is started. +// delete terminalSession; // "terminalSession" is deleted. +// +// +// In default(no arguments are given), csh-like shell is instantiated. +// If you want to use another shell (e.g. tcsh-like), you can give +// your favorite shell in an argument of the constructor. +// +// Which shell? / How to define your own shell? +// Currently two kinds of shells, +// G4UIcsh / G4UItcsh +// , are presented. +// They inherit the abstract base class, G4VUIshell. +// In order to define your own shell, +// - Define your own shell class derived from G4VUIshell. +// - Implement GetCommandLine() method (pure virtual). +// - Add more functionality, if need. +// +// For more detail, see source codes. +// -class G4UIterminal : public G4VBasicShell -{ - public: // with description - G4UIterminal(); - ~G4UIterminal(); +class G4UIterminal : public G4VBasicShell { +private: + G4UImanager* UI; + // shell + G4VUIshell* shell; - G4UIsession * SessionStart(); - // A character-terminal session "terminalSession" is instantiated. - // G4cout stream is redirected by default to the constructed instance. - // Usage: G4UIsession * terminalSession = new G4UIterminal; - // "terminalSession" is started. - // Usage: terminalSession->SessionStart(); - // "terminalSession" is deleted. - // Usage: delete terminalSession; - // - void PauseSessionStart(G4String); - G4int ReceiveG4cout(G4String coutString); - G4int ReceiveG4cerr(G4String cerrString); - // These methods are implementation of corresponding virtual methods - // of G4UIsession class. - private: - G4UImanager * UI; - G4String promptCharacter; - G4bool iExit; - G4bool iCont; + // program states + G4bool iExit; + G4bool iCont; + +public: + G4UIterminal(G4VUIshell* aShell=0); + ~G4UIterminal(); + + void SetPrompt(const G4String& prompt); + +private: + void ExecuteCommand(G4String aCommand); + G4String GetCommand(); + G4bool GetHelpChoice(G4int& aInt); + void ExitHelp(); + +public: + // These methods are implementation of corresponding virtual methods + // of G4UIsession class. + virtual G4UIsession* SessionStart(); + virtual void PauseSessionStart(G4String msg); + virtual G4int ReceiveG4cout(G4String coutString); + virtual G4int ReceiveG4cerr(G4String cerrString); - private: - void ExecuteCommand(G4String); - G4String GetCommand(); - G4bool GetHelpChoice(G4int&); - void ExitHelp(); }; - - - #endif diff --git a/source/interfaces/basic/include/G4VUIshell.hh b/source/interfaces/basic/include/G4VUIshell.hh new file mode 100644 index 0000000000..335228e4ee --- /dev/null +++ b/source/interfaces/basic/include/G4VUIshell.hh @@ -0,0 +1,102 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4VUIshell.hh,v 1.1 2000/03/26 23:03:48 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// + +#ifndef G4VUIshell_h +#define G4VUIshell_h 1 + +#include "globals.hh" + +// +// Description: +// This class is the abstract base class for various UI shells. +// +// GetCommadLine() (virtual) returns a command string input from +// a commad line. +// +// Two pre-inplemented shell commands(still virtual) are also included, +// (somewhat differnt flavor from ones provided by G4VBasicShell) +// ShowCurrentDirectory() ... show current directory +// ListCommand() ... list commands +// +// [prompt string substitution] (default) +// %s ... current application status +// %/ ... current working directory +// + +// terminal color index +enum TermColorIndex{ BLACK=0, RED, GREEN, YELLOW, + BLUE, PURPLE, CYAN, WHITE}; + +class G4UIcommandTree; + +class G4VUIshell { +protected: + G4String promptString; + G4String promptSetting; // including %-directive + virtual void MakePrompt(); // make prompt string + G4int nColumn; // column size of terminal (default=80) + + // color code support (effective if your terminal supports color code.) + // default setting is off. + G4bool lsColorFlag; // color flag for list command + TermColorIndex directoryColor; + TermColorIndex commandColor; + + // for treating G4 command tree... + G4String currentCommandDir; // current command directory (absolute path) + // get tree node + G4UIcommandTree* GetCommandTree(const G4String& dir) const; + // absolute path name (ignore command) + G4String GetAbsCommandDirPath(const G4String& apath) const; + // tail of path ( xxx/xxx/zzz -> zzz, trancated //// -> /) + G4String GetCommandPathTail(const G4String& apath) const; + +public: + G4VUIshell(const G4String& prompt="> "); + ~G4VUIshell(); + + void SetNColumn(G4int ncol); + void SetPrompt(const G4String& prompt); + void SetCurrentDirectory(const G4String& ccd); + + // shell commands + virtual void ShowCurrentDirectory() const; + virtual void ListCommand(const G4String& input, + const G4String& candidate="") const; + // "candidate" is specified with full path. + + // get command string from a command line + virtual G4String GetCommandLine()= 0; +}; + + +// inlines... +inline void G4VUIshell::SetNColumn(G4int ncol) +{ + nColumn= ncol; +} + +inline void G4VUIshell::SetPrompt(const G4String& prompt) +{ + promptSetting= prompt; +} + +inline void G4VUIshell::SetCurrentDirectory(const G4String& dir) +{ + currentCommandDir= dir; +} + +inline void G4VUIshell::ShowCurrentDirectory() const +{ + G4cout << currentCommandDir << G4endl; +} + +#endif diff --git a/source/interfaces/basic/src/G4UIArrayString.cc b/source/interfaces/basic/src/G4UIArrayString.cc new file mode 100644 index 0000000000..9be590421f --- /dev/null +++ b/source/interfaces/basic/src/G4UIArrayString.cc @@ -0,0 +1,174 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4UIArrayString.cc,v 1.2 2000/06/14 03:18:59 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// + +#include "g4std/iomanip" +#include "G4UIArrayString.hh" + +static const char strESC= '\033'; + +//////////////////////////////////////////////////////// +G4UIArrayString::G4UIArrayString(const G4String& stream) +//////////////////////////////////////////////////////// +{ + nElement=0; + nColumn=5; // temporal assignment + + G4String tmpstr= stream; // G4String::strip() CONST !! + G4String astream= tmpstr.strip(G4String::both); + + // tokenize... + G4int indx=0; + while(1) { + G4int jc= astream.index(" ", indx); + nElement++; + if(jc == G4String::npos) break; + for(G4int i=1; jc+i< astream.length(); i++ ) { // skip continuing spaces + if(astream[jc+i]==' ') jc++; + else break; + } + indx= jc+1; + } + + // allocate string array + stringArray= new G4String[nElement]; + + // push... + indx=0; + for(G4int i=0; i=1 && irow>=1)) // offset of column/row is "1". + G4cerr << "G4UIArrayString: overrange" << G4endl; + if(icol>nColumn) G4cerr << "G4UIArrayString: overrange" << G4endl; + + G4int jq= (irow-1)*nColumn + icol; + if(jq> nElement) G4cerr << "G4UIArrayString: overrange" << G4endl; + + jq--; + return &stringArray[jq]; +} + +//////////////////////////////////////////// +G4int G4UIArrayString::GetNRow(int icol) const +//////////////////////////////////////////// +{ + G4int ni; + if(nElement%nColumn ==0) ni= nElement/nColumn; + else ni= nElement/nColumn + 1; + + G4int nn= nElement%nColumn; + if(nn==0) nn= nColumn; + + if(icol<= nn) return ni; + else return ni-1; +} + +//////////////////////////////////////////////// +G4int G4UIArrayString::GetNField(int icol) const +//////////////////////////////////////////////// +{ + G4int maxWidth=0; + for (G4int iy=1; iy<= GetNRow(icol); iy++) { + G4int ilen= GetElement(icol,iy)-> length(); + // care for color code + // if(GetElement(icol,iy)-> index(strESC,0) != G4String::npos) { + // if(strESC == (*GetElement(icol,iy))[0] ) { + const char tgt = (*GetElement(icol,iy))[0]; + if(strESC == tgt) { + ilen-= 5; + if(ilen<0) G4cout << "length(c) cal. error." << G4endl; + } + if(ilen> maxWidth) maxWidth= ilen; + } + + return maxWidth; +} + +///////////////////////////////////////////////// +int G4UIArrayString::CalculateColumnWidth() const +///////////////////////////////////////////////// +{ + G4int totalWidth= 0; + + for(G4int ix=1; ix<= nColumn; ix++) { + totalWidth+= GetNField(ix); + } + + const G4int nwSpace= 2; + totalWidth+= (nColumn-1)*nwSpace; // for space + + return totalWidth; +} + +////////////////////////////////////// +void G4UIArrayString::Show(G4int ncol) +////////////////////////////////////// +{ + // calculate #colums in need... + while( CalculateColumnWidth()< ncol ) { + nColumn++; + } + while( CalculateColumnWidth()> ncol && nColumn>1 ) { + nColumn--; + } + + for(G4int iy=1; iy<= GetNRow(1); iy++) { + G4int nc= nColumn; + if(iy == GetNRow(1)) { // last row + nc= nElement%nColumn; + if(nc==0) nc= nColumn; + } + for(G4int ix=1; ix<=nc; ix++) { + G4String word= GetElement(ix,iy)-> data(); + + // care for color code + G4String colorWord; + //if(word.index(strESC,0) != G4String::npos) { + //if(strESC == word[0]) { + const char tgt = word[0]; + if(strESC == tgt) { + colorWord= word(0,5); + word.erase(0,5); + } + if(!colorWord.empty()) G4cout << colorWord << G4std::flush; + + G4cout << G4std::setiosflags(G4std::ios::left) << G4std::setw(GetNField(ix)) + << word << G4std::flush; + if(ix != nc) G4cout << " " << G4std::flush; + else G4cout << G4endl; + } + } +} + diff --git a/source/interfaces/basic/src/G4UIWin32.cc b/source/interfaces/basic/src/G4UIWin32.cc index 787b831768..97a11aa63d 100644 --- a/source/interfaces/basic/src/G4UIWin32.cc +++ b/source/interfaces/basic/src/G4UIWin32.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4UIWin32.cc,v 1.5.4.1.2.2 1999/12/14 07:07:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4UIWin32.cc,v 1.6 1999/12/15 14:50:47 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // G.Barrand diff --git a/source/interfaces/basic/src/G4UIXaw.cc b/source/interfaces/basic/src/G4UIXaw.cc index 987d45e8bc..ab91d77f1a 100644 --- a/source/interfaces/basic/src/G4UIXaw.cc +++ b/source/interfaces/basic/src/G4UIXaw.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4UIXaw.cc,v 1.2.8.1 1999/12/07 20:49:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4UIXaw.cc,v 1.3 1999/12/15 14:50:47 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // G.Barrand diff --git a/source/interfaces/basic/src/G4UIXm.cc b/source/interfaces/basic/src/G4UIXm.cc index 2ae89a30b7..ecfb9995fe 100644 --- a/source/interfaces/basic/src/G4UIXm.cc +++ b/source/interfaces/basic/src/G4UIXm.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4UIXm.cc,v 1.5.4.1.2.4 1999/12/14 09:16:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4UIXm.cc,v 1.6 1999/12/15 14:50:47 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // G.Barrand diff --git a/source/interfaces/basic/src/G4UIcsh.cc b/source/interfaces/basic/src/G4UIcsh.cc new file mode 100644 index 0000000000..729af84e5a --- /dev/null +++ b/source/interfaces/basic/src/G4UIcsh.cc @@ -0,0 +1,59 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4UIcsh.cc,v 1.3 2000/06/23 08:46:49 stesting Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// + +#include "G4UIcsh.hh" + +//////////////////////////////////////// +G4UIcsh::G4UIcsh(const G4String& prompt) + : G4VUIshell(prompt) +//////////////////////////////////////// +{ +} + +/////////////////// +G4UIcsh::~G4UIcsh() +/////////////////// +{ +} + + +////////////////////////////////// +G4String G4UIcsh::GetCommandLine() +////////////////////////////////// +{ + MakePrompt(); + G4cout << promptString << G4std::flush; + + G4String newCommand; + newCommand.readLine(G4cin, FALSE); + if (!G4cin.good()) { + G4cin.clear(); + newCommand= "exit"; + return newCommand; + } + + // multi-line + while( (newCommand.length() > 0) && + (newCommand[newCommand.length()-1] == '_') ) { + G4String newLine; + newCommand.remove(newCommand.length()-1); + newLine.readLine(G4cin, FALSE); + if (!G4cin.good()) { + G4cin.clear(); + newCommand= "exit"; + return newCommand; + } + newCommand.append(newLine); + } + + return newCommand; +} + diff --git a/source/interfaces/basic/src/G4UItcsh.cc b/source/interfaces/basic/src/G4UItcsh.cc new file mode 100644 index 0000000000..d85ac730bf --- /dev/null +++ b/source/interfaces/basic/src/G4UItcsh.cc @@ -0,0 +1,684 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4UItcsh.cc,v 1.3 2000/06/23 08:46:49 stesting Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// + +#ifndef WIN32 + +#include +#include "g4std/strstream" +#include "G4StateManager.hh" +#include "G4UIcommandStatus.hh" +#include "G4UItcsh.hh" + +// ASCII character code +static const char AsciiCtrA = '\001'; +static const char AsciiCtrB = '\002'; +static const char AsciiCtrC = '\003'; +static const char AsciiCtrD = '\004'; +static const char AsciiCtrE = '\005'; +static const char AsciiCtrF = '\006'; +static const char AsciiCtrK = '\013'; +static const char AsciiCtrL = '\014'; +static const char AsciiCtrN = '\016'; +static const char AsciiCtrP = '\020'; +static const char AsciiCtrQ = '\021'; +static const char AsciiCtrS = '\023'; +static const char AsciiCtrZ = '\032'; +static const char AsciiTAB = '\011'; +static const char AsciiBS = '\010'; +static const char AsciiDEL = '\177'; +static const char AsciiESC = '\033'; + +static const int AsciiPrintableMin = 32; + +///////////////////////////////////////////////////////// +G4UItcsh::G4UItcsh(const G4String& prompt, G4int maxhist) + : G4VUIshell(prompt), + commandLine(""), cursorPosition(1), + commandHistory(maxhist), maxHistory(maxhist), + currentHistoryNo(1), relativeHistoryIndex(0) +///////////////////////////////////////////////////////// +{ + // get current terminal mode + tcgetattr(0, &tios); +} + +///////////////////// +G4UItcsh::~G4UItcsh() +///////////////////// +{ +} + +/////////////////////////// +void G4UItcsh::MakePrompt() +/////////////////////////// +{ + if(promptSetting.length()<=1) { + promptString= promptSetting; + return; + } + + promptString=""; + G4int i; + for(i=0; i GetStateString(statM->GetCurrentState()); + promptString.append(stateStr); + i++; + } + break; + case '/': // current working directory + promptString.append(currentCommandDir); + i++; + break; + case 'h': // history# + { + char st[20]; + G4std::ostrstream os(st,20); + os << currentHistoryNo << '\0'; + promptString.append(st); + i++; + } + break; + default: + break; + } + } else { + promptString.append(G4String(promptSetting[i])); + } + } + + // append last chaacter + if(i == promptSetting.length()-1) + promptString.append(G4String(promptSetting[i])); +} + +// -------------------------------------------------------------------- +// commad line operations +// -------------------------------------------------------------------- +////////////////////////////////////// +void G4UItcsh::InitializeCommandLine() +////////////////////////////////////// +{ + commandLine= ""; + cursorPosition= 1; +} + +/////////////////////////////////////// +void G4UItcsh::InsertCharacter(char cc) +/////////////////////////////////////// +{ + if( ! (cc >= AsciiPrintableMin && isprint(cc)) ) return; + + // display... + G4cout << cc; + G4int i; + for(i=cursorPosition-1; i=2; i--) G4cout << AsciiBS; + for(i=1; i<=commandLine.length(); i++) G4cout << ' '; + for(i=1; i<=commandLine.length(); i++) G4cout << AsciiBS; + G4cout << G4std::flush; + + // command line string... + commandLine.erase(); + cursorPosition= 1; +} + +///////////////////////////////// +void G4UItcsh::ClearAfterCursor() +///////////////////////////////// +{ + if(IsCursorLast()) return; + + // display... + G4int i; + for(i=cursorPosition; i<=commandLine.length(); i++) G4cout << ' '; + for(i=commandLine.length(); i>=cursorPosition; i--) G4cout << AsciiBS; + G4cout << G4std::flush; + + // command line string... + commandLine.erase(cursorPosition-1, + commandLine.length()-cursorPosition+1); +} + +//////////////////////////// +void G4UItcsh::ClearScreen() +//////////////////////////// +{ + if(! clearString.empty() ) { + G4cout << clearString; + + G4cout << promptString << commandLine << G4std::flush; + // reset cursur position + for(G4int i=commandLine.length()+1; i>=cursorPosition+1; i--) + G4cout << AsciiBS << G4std::flush; + } +} + +////////////////////////////// +void G4UItcsh::ForwardCursor() +////////////////////////////// +{ + if(IsCursorLast()) return; + + G4cout << commandLine[cursorPosition-1] << G4std::flush; + cursorPosition++; +} + +/////////////////////////////// +void G4UItcsh::BackwardCursor() +/////////////////////////////// +{ + if(cursorPosition==1) return; + + cursorPosition--; + G4cout << AsciiBS << G4std::flush; +} + +////////////////////////////// +void G4UItcsh::MoveCursorTop() +////////////////////////////// +{ + for(G4int i=cursorPosition; i>1; i--){ + G4cout << AsciiBS; + } + G4cout << G4std::flush; + cursorPosition=1; +} + +////////////////////////////// +void G4UItcsh::MoveCursorEnd() +////////////////////////////// +{ + for(G4int i=cursorPosition-1; i= maxHistory ? + maxHistory : currentHistoryNo-1; + + // retain current input + if(relativeHistoryIndex==0) commandLineBuf= commandLine; + + if(relativeHistoryIndex>=-nhmax+1 && relativeHistoryIndex<=0) { + ClearLine(); + relativeHistoryIndex--; + commandLine= RestoreHistory(currentHistoryNo+relativeHistoryIndex); + + G4cout << commandLine << G4std::flush; + cursorPosition= commandLine.length()+1; + } +} + +//////////////////////////// +void G4UItcsh::NextCommand() +//////////////////////////// +{ + G4int nhmax= currentHistoryNo-1 >= maxHistory ? + maxHistory : currentHistoryNo-1; + + if(relativeHistoryIndex>=-nhmax && relativeHistoryIndex<=-1) { + ClearLine(); + relativeHistoryIndex++; + + if(relativeHistoryIndex==0) commandLine= commandLineBuf; + else commandLine= RestoreHistory(currentHistoryNo+relativeHistoryIndex); + + G4cout << commandLine << G4std::flush; + cursorPosition= commandLine.length()+1; + } +} + + +/////////////////////////////////// +void G4UItcsh::ListMatchedCommand() +/////////////////////////////////// +{ + G4cout << G4endl; + + // input string + G4String input= G4String(commandLine).strip(G4String::leading); + // target token is last token + G4int jhead= input.last(' '); + if(jhead != G4String::npos) { + input.remove(0, jhead); + input= input.strip(G4String::leading); + } + + // command tree of "user specified directory" + G4String vpath= currentCommandDir; + G4String vcmd; + + if( !input.empty() ) { + G4int len= input.length(); + G4int indx=-1; + for(G4int i=len-1; i>=0; i--) { + if(input[i]=='/') { + indx= i; + break; + } + } + // get abs. path + if(indx != -1) vpath= GetAbsCommandDirPath(input(0,indx+1)); + if(!(indx==0 && len==1)) vcmd= input(indx+1,len-indx-1); // care for "/" + } + + // list matched dirs/commands + ListCommand(vpath, vpath+vcmd); + + G4cout << promptString << commandLine << G4std::flush; +} + +//////////////////////////////// +void G4UItcsh::CompleteCommand() +//////////////////////////////// +{ + // inputting string + G4String input= G4String(commandLine).strip(G4String::leading); + // target token is last token + G4int jhead= input.last(' '); + if(jhead != G4String::npos) { + input.remove(0, jhead); + input= input.strip(G4String::leading); + } + + // command tree of "user specified directory" + G4String vpath= currentCommandDir; + G4String vcmd; + + G4int len= input.length(); + if(!input.empty()) { + G4int indx= -1; + for(G4int i=len-1; i>=0; i--) { + if(input(i)=='/') { + indx= i; + break; + } + } + // get abs. path + if(indx != -1) vpath= GetAbsCommandDirPath(input(0,indx+1)); + if(!(indx==0 && len==1)) vcmd= input(indx+1,len-indx-1); // care for "/" + } + + G4UIcommandTree* atree= GetCommandTree(vpath); // get command tree + if(atree == NULL) return; + + // list matched directories/commands + G4String stream, strtmp; + G4String inputpath= vpath+vcmd; + G4int nMatch= 0; + + int Ndir= atree-> GetTreeEntry(); + int Ncmd= atree-> GetCommandEntry(); + + // directory ... + for(G4int idir=1; idir<=Ndir; idir++) { + G4String fpdir= atree-> GetTree(idir)-> GetPathName(); + // matching test + if( fpdir.index(inputpath, 0) == 0) { + if(nMatch==0) { + stream= GetCommandPathTail(fpdir); + } else { + strtmp= GetCommandPathTail(fpdir); + stream= GetFirstMatchedString(stream, strtmp); + } + nMatch++; + } + } + + // command ... + for(G4int icmd=1; icmd<=Ncmd; icmd++){ + G4String fpcmd= atree-> GetPathName() + + atree-> GetCommand(icmd) -> GetCommandName(); + // matching test + if( fpcmd.index(inputpath, 0) ==0) { + if(nMatch==0) { + stream= GetCommandPathTail(fpcmd) + " "; + } else { + strtmp= GetCommandPathTail(fpcmd) + " "; + stream= GetFirstMatchedString(stream, strtmp); + } + nMatch++; + } + } + + if(nMatch==0) return; // no matched + + // display... + input= commandLine; + // target token is last token + jhead= input.last(' '); + if(jhead == G4String::npos) jhead=0; + else jhead++; + + G4int jt= input.find_last_of('/'); + if(jt 0) && + ( newCommand[newCommand.length()-1] == '_') ) { + newCommand.remove(newCommand.length()-1); + G4cout << G4endl; + promptString= "? "; + G4cout << promptString << G4std::flush; + G4String newLine= ReadLine(); + newCommand.append(newLine); + } + + // update history... + G4bool isMeaningfull= FALSE; // check NULL command + for (int i=0; i= currentHistoryNo) return ""; + + G4int index= histNo%maxHistory; + if(index==0) index= maxHistory; + + return commandHistory[index-1]; // 0-offset +} + +// -------------------------------------------------------------------- +// terminal mode +// -------------------------------------------------------------------- +/////////////////////////////////// +void G4UItcsh::SetTermToInputMode() +/////////////////////////////////// +{ + termios tiosbuf= tios; + + tiosbuf.c_iflag &= ~(BRKINT | ISTRIP); + tiosbuf.c_iflag |= (IGNBRK | IGNPAR); + tiosbuf.c_lflag &= ~(ICANON | IEXTEN | ECHO); + tiosbuf.c_cc[VMIN] = 1; + tiosbuf.c_cc[VTIME] = 0; + + tcsetattr(0, TCSAFLUSH, &tiosbuf); +} + + +//////////////////////////// +void G4UItcsh::RestoreTerm() +//////////////////////////// +{ + tcsetattr(0, TCSAFLUSH, &tios); +} + +#endif + diff --git a/source/interfaces/basic/src/G4UIterminal.cc b/source/interfaces/basic/src/G4UIterminal.cc index 4c3eb39a0c..980dd97acb 100644 --- a/source/interfaces/basic/src/G4UIterminal.cc +++ b/source/interfaces/basic/src/G4UIterminal.cc @@ -5,215 +5,261 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4UIterminal.cc,v 1.4.4.1.2.1.2.7 1999/12/14 09:16:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4UIterminal.cc,v 1.13 2000/06/23 08:46:50 stesting Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -#include "G4UIterminal.hh" +#include "g4std/strstream" #include "G4StateManager.hh" #include "G4UIcommandTree.hh" #include "G4UIcommand.hh" #include "G4UIcommandStatus.hh" -#include "G4ios.hh" -#include "g4std/strstream" +#include "G4UIterminal.hh" +#include "G4UIcsh.hh" -G4UIterminal::G4UIterminal() +////////////////////////////////////////////// +G4UIterminal::G4UIterminal(G4VUIshell* aShell) +////////////////////////////////////////////// { - UI = G4UImanager::GetUIpointer(); - UI->SetSession(this); - UI->SetCoutDestination(this); - G4StateManager * statM = G4StateManager::GetStateManager(); - promptCharacter = statM->GetStateString(statM->GetCurrentState()) - + G4String("> "); - iExit = false; - iCont = false; + UI= G4UImanager::GetUIpointer(); + UI-> SetSession(this); + UI-> SetCoutDestination(this); + G4StateManager* statM= G4StateManager::GetStateManager(); + + iExit= FALSE; + iCont= FALSE; + + if(aShell) shell= aShell; + else shell= new G4UIcsh; } +///////////////////////////// G4UIterminal::~G4UIterminal() +///////////////////////////// { - if( G4UImanager::GetUIpointer() != 0) - { - UI->SetSession(NULL); - UI->SetCoutDestination(NULL); - // G4cout << "Terminal session deleted" << G4endl; + if(shell) delete shell; + + if(G4UImanager::GetUIpointer()) { + UI-> SetSession(NULL); + UI-> SetCoutDestination(NULL); } } -G4UIsession * G4UIterminal::SessionStart() + +//////////////////////////////////////////////////// +void G4UIterminal::SetPrompt(const G4String& prompt) +//////////////////////////////////////////////////// { - iExit = true; - G4StateManager * statM = G4StateManager::GetStateManager(); - promptCharacter = statM->GetStateString(statM->GetCurrentState()) - + G4String("> "); - G4String newCommand = GetCommand(); - while( iExit ) - { + shell-> SetPrompt(prompt); +} + +///////////////////////////////////////// +G4UIsession* G4UIterminal::SessionStart() +///////////////////////////////////////// +{ + iExit= TRUE; + G4StateManager* statM= G4StateManager::GetStateManager(); + + G4String newCommand= GetCommand(); + while(iExit){ ExecuteCommand(newCommand); - promptCharacter = statM->GetStateString(statM->GetCurrentState()) - + G4String("> "); - newCommand = GetCommand(); + newCommand= GetCommand(); } return NULL; } +////////////////////////////////////////////////// void G4UIterminal::PauseSessionStart(G4String msg) +////////////////////////////////////////////////// { - promptCharacter = msg; - iCont = true; - G4String newCommand = GetCommand(); - while( iCont ) - { + iCont= TRUE; + + G4String newCommand= GetCommand(); + while(iCont){ ExecuteCommand(newCommand); - newCommand = GetCommand(); + newCommand= GetCommand(); } } +//////////////////////////////////////////////////// +void G4UIterminal::ExecuteCommand(G4String aCommand) +//////////////////////////////////////////////////// +{ + if(aCommand.length()<2) return; + + G4int returnVal = UI-> ApplyCommand(aCommand); + + G4int paramIndex = returnVal % 100; + // 0 - 98 : paramIndex-th parameter is invalid + // 99 : convination of parameters is invalid + G4int commandStatus = returnVal - paramIndex; + + G4UIcommand* cmd = 0; + if(commandStatus!=fCommandSucceeded) + { cmd = FindCommand(aCommand); } + + switch(commandStatus) { + case fCommandSucceeded: + break; + case fCommandNotFound: + G4cerr << "command <" << aCommand << "> not found" << G4endl; + if( aCommand.index("@@") != G4String::npos) { + G4cout << "@@G4UIterminal" << G4endl; + } + break; + case fIllegalApplicationState: + G4cerr << "illegal application state -- command refused" << G4endl; + break; + case fParameterOutOfRange: + // if(paramIndex<99) { + // G4cerr << "Parameter is out of range (index " << paramIndex << ")" << G4endl; + // G4cerr << "Allowed range : " << cmd->GetParameter(paramIndex)->GetParameterRange() << G4endl; + // } else { + // G4cerr << "Parameter is out of range" << G4endl; + // G4cerr << "Allowed range : " << cmd->GetRange() << G4endl; + // } + break; + case fParameterOutOfCandidates: + G4cerr << "Parameter is out of candidate list (index " << paramIndex << ")" << G4endl; + G4cerr << "Candidates : " << cmd->GetParameter(paramIndex)->GetParameterCandidates() << G4endl; + break; + case fParameterUnreadable: + G4cerr << "Parameter is wrong type and/or is not omittable (index " << paramIndex << ")" << G4endl; + break; + default: + G4cerr << "command refused (" << commandStatus << ")" << G4endl; + } +} + +/////////////////////////////////// +G4String G4UIterminal::GetCommand() +/////////////////////////////////// +{ + G4String newCommand; + G4String nullString; + + newCommand= shell-> GetCommandLine(); + + G4String nC= newCommand.strip(G4String::leading); + if( nC.length() == 0 ) { + newCommand= nullString; + + } else if( nC(0) == '#' ) { + G4cout << nC << G4endl; + newCommand= nullString; + + } else if(nC=="ls" || nC(0,3)=="ls " ) { // list commands + ListDirectory(nC); + newCommand= nullString; + + } else if(nC=="lc" || nC(0,3)=="lc " ) { // ... by shell + shell-> ListCommand(nC.remove(0,2)); + newCommand= nullString; + + } else if(nC == "pwd") { // show current directory + G4cout << "Current Command Directory : " + << GetCurrentWorkingDirectory() << G4endl; + newCommand= nullString; + + } else if(nC == "cwd") { // ... by shell + shell-> ShowCurrentDirectory(); + newCommand= nullString; + + } else if(nC == "cd" || nC(0,3) == "cd ") { // "cd" + ChangeDirectoryCommand(nC); + shell-> SetCurrentDirectory(GetCurrentWorkingDirectory()); + newCommand= nullString; + + } else if(nC == "help" || nC(0,5) == "help ") { // "help" + TerminalHelp(nC); + newCommand= nullString; + + } else if(nC(0) == '?') { // "show current value of a parameter" + ShowCurrent(nC); + newCommand= nullString; + + } else if(nC == "hist" || nC == "history") { // "hist/history" + G4int nh= UI-> GetNumberOfHistory(); + for (G4int i=0; iGetPreviousCommand(i) << G4endl; + } + newCommand= nullString; + + } else if(nC(0) == '!') { // "!" + G4String ss= nC(1, nC.length()-1); + G4int vl; + const char* tt= ss; + G4std::istrstream is((char*)tt); + is >> vl; + G4int nh= UI-> GetNumberOfHistory(); + if(vl>=0 && vl GetPreviousCommand(vl); + G4cout << newCommand << G4endl; + } else { + G4cerr << "history " << vl << " is not found." << G4endl; + newCommand= nullString; + } + + } else if(nC == "exit") { // "exit" + if(iCont) { + G4cout << "You are now processing RUN." << G4endl; + G4cout << "Please abort it using \"/run/abort\" command first" << G4endl; + G4cout << " and use \"continue\" command until the application" + << G4endl; + G4cout << " becomes to Idle." << G4endl; + } else { + iExit= FALSE; + newCommand= nullString; + } + + } else if( nC == "cont" || nC == "continue"){ // "cont/continu" + iCont= FALSE; + newCommand= nullString; + + } else if( nC.empty() ){ // NULL command + newCommand= nullString; + + } else { + } + + return ModifyToFullPathCommand(newCommand); +} + + +////////////////////////////////////////////////////// G4int G4UIterminal::ReceiveG4cout(G4String coutString) +////////////////////////////////////////////////////// { G4std::cout << coutString << G4std::flush; return 0; } +////////////////////////////////////////////////////// G4int G4UIterminal::ReceiveG4cerr(G4String cerrString) +////////////////////////////////////////////////////// { G4std::cerr << cerrString << G4std::flush; return 0; } -void G4UIterminal::ExecuteCommand(G4String aCommand) +/////////////////////////////////////////////// +G4bool G4UIterminal::GetHelpChoice(G4int& aInt) +/////////////////////////////////////////////// { - - if(aCommand.length()<2) return; - - int commandStatus = UI->ApplyCommand(aCommand); - switch(commandStatus) - { - case fCommandSucceeded: - break; - case fCommandNotFound: - G4cerr << "command <" << aCommand << "> not found" << G4endl; - if ( aCommand.index("@@") != G4std::string::npos) { - G4cout << "@@G4UIterminal" << G4endl; - } - break; - case fIllegalApplicationState: - G4cerr << "illegal application state -- command refused" << G4endl; - break; - case fParameterOutOfRange: - case fParameterUnreadable: - case fParameterOutOfCandidates: - default: - G4cerr << "command refused (" << commandStatus << ")" << G4endl; - } -} -G4String G4UIterminal::GetCommand() -{ - G4String newCommand; - G4String nullString; - while( 1 ) - { - G4cout << promptCharacter; - G4cout.flush(); - newCommand.readLine( G4cin, FALSE ); - if (!G4cin.good()) { G4cin.clear(); newCommand = nullString; iExit=false; break; } - newCommand = newCommand.strip(G4String::leading); - if( newCommand.length() < 1 ) { break; } - - while( newCommand(newCommand.length()-1) == '_' ) - { - G4String newLine; - newCommand.remove(newCommand.length()-1); - newLine.readLine( G4cin ); - if (!G4cin.good()) { G4cin.clear(); newCommand = nullString; iExit=false; break; } - newCommand.append(newLine); - } - - G4String nC = newCommand.strip(G4String::leading); - - - // -------------------- nC.toUpper(); - if( nC.length() < 1 ){ break; } - if( nC(0) == '#' ) - { G4cout << nC << G4endl; } - else if( nC == "ls" || nC(0,3) == "ls " ) - { ListDirectory( nC ); } - else if( nC == "pwd" ) - { - G4cout << "Current Working Directory : " - << GetCurrentWorkingDirectory() << G4endl; - } - else if( nC == "cd" || nC(0,3) == "cd " ) - { ChangeDirectoryCommand( nC ); } - else if( nC == "help" || nC(0,5) == "help " ) - { TerminalHelp( nC ); } - else if( nC(0) == '?' ) - { ShowCurrent( nC ); } - else if( nC == "hist" || nC == "history" ) - { - G4int nh = UI->GetNumberOfHistory(); - for(int i=0;iGetPreviousCommand(i) << G4endl; } - } - else if( nC(0) == '!' ) - { - G4String ss = nC(1,nC.length()-1); - G4int vl; - const char* tt = ss; - G4std::istrstream is((char*)tt); - is >> vl; - G4int nh = UI->GetNumberOfHistory(); - if(vl>=0 && vlGetPreviousCommand(vl); - G4cout << newCommand << G4endl; - break; - } - else - { G4cerr << "history " << vl << " is not found." << G4endl; } - } - else if( nC == "exit" ) - { - if( iCont ) - { - G4cout << "You are now processing RUN." << G4endl; - G4cout << "Please abort it using \"/run/abort\" command first" << G4endl; - G4cout << " and use \"continue\" command until the application" << G4endl; - G4cout << " becomes to Idle." << G4endl; - } - else - { - iExit = false; - newCommand = nullString; - break; - } - } - else if( nC == "cont" || nC == "continue" ) - { - iCont = false; - newCommand = nullString; - break; - } - else - { break; } - } - return ModifyToFullPathCommand(newCommand); -} - -G4bool G4UIterminal::GetHelpChoice(G4int& aInt){ G4cin >> aInt; if(!G4cin.good()){ G4cin.clear(); G4cin.ignore(30,'\n'); - return false; - } - return true; + return FALSE; + } + return TRUE; } -void G4UIterminal::ExitHelp(){ - // G4cin.flush(); + +///////////////////////////// +void G4UIterminal::ExitHelp() +///////////////////////////// +{ char temp[100]; - G4cin.getline( temp, 100 ); + G4cin.getline(temp, 100); } - - - diff --git a/source/interfaces/basic/src/G4VUIshell.cc b/source/interfaces/basic/src/G4VUIshell.cc new file mode 100644 index 0000000000..a49816c9ef --- /dev/null +++ b/source/interfaces/basic/src/G4VUIshell.cc @@ -0,0 +1,284 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4VUIshell.cc,v 1.2 2000/06/14 03:19:00 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// + +#include "G4UImanager.hh" +#include "G4UIcommand.hh" +#include "G4UIcommandTree.hh" +#include "G4StateManager.hh" +#include "G4UIcommandStatus.hh" +#include "G4VUIshell.hh" +#include "G4UIArrayString.hh" + +// terminal color string +static const G4String strESC= '\033'; +static const G4String TermColorString[8] ={ + strESC+"[30m", strESC+"[31m", strESC+"[32m", strESC+"[33m", + strESC+"[34m", strESC+"[35m", strESC+"[36m", strESC+"[37m" +}; + +/////////////////////////////////////////////////////////////////// +G4VUIshell::G4VUIshell(const G4String& prompt) + : promptSetting(prompt), promptString(""), nColumn(80), + lsColorFlag(FALSE), directoryColor(BLACK), commandColor(BLACK), + currentCommandDir("/") +/////////////////////////////////////////////////////////////////// +{ +} + +///////////////////////// +G4VUIshell::~G4VUIshell() +///////////////////////// +{ +} + +///////////////////////////// +void G4VUIshell::MakePrompt() +///////////////////////////// +{ + if(promptSetting.length()<=1) { + promptString= promptSetting; + return; + } + + promptString=""; + G4int i; + for(i=0; i GetStateString(statM->GetCurrentState()); + promptString.append(stateStr); + i++; + } + break; + case '/': // current working directory + promptString.append(currentCommandDir); + i++; + break; + default: + promptString.append(G4String(promptSetting[i])); + break; + } + } else { + promptString.append(G4String(promptSetting[i])); + } + } + + // append last chaacter + if(i == promptSetting.length()-1) + promptString.append(G4String(promptSetting[i])); +} + + +// -------------------------------------------------------------------- +// G4command operations +// -------------------------------------------------------------------- +//////////////////////////////////////////////////////////////////////// +G4UIcommandTree* G4VUIshell::GetCommandTree(const G4String& input) const +//////////////////////////////////////////////////////////////////////// +{ + G4UImanager* UI= G4UImanager::GetUIpointer(); + + G4UIcommandTree* cmdTree= UI-> GetTree(); // root tree + + G4String absPath= input; // G4String::strip() CONST !! + absPath= GetAbsCommandDirPath(absPath.strip(G4String::both)); + + // parsing absolute path ... + if(absPath.length()==0) return NULL; + if(absPath[absPath.length()-1] != '/') return NULL; // error?? + if(absPath=="/") return cmdTree; + + for(G4int indx=1; indx GetTree(absPath(0,jslash+1)); + } + indx= jslash+1; + } + + if(cmdTree == NULL) return NULL; + else return cmdTree; +} + +////////////////////////////////////////////////////////////////////// +G4String G4VUIshell::GetAbsCommandDirPath(const G4String& apath) const +////////////////////////////////////////////////////////////////////// +{ + if(apath.empty()) return apath; // null string + + // if "apath" does not start with "/", + // then it is treared as relative path + G4String bpath= apath; + if(apath[0] != '/') bpath= currentCommandDir + apath; + + // parsing... + G4String absPath= "/"; + for(G4int indx=1; indx<=bpath.length()-1; ) { + G4int jslash= bpath.index("/", indx); // search index begin with "/" + if(jslash != 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); + } + } else if(bpath(indx,jslash-indx) == "."){ // nothing to do + } else { // add + if( !(jslash==indx && bpath(indx)=='/') ) // truncate "////" + absPath+= bpath(indx, jslash-indx+1); + // better to be check directory existence. (it costs!) + } + } else { // directory ONLY (ignore non-"/" terminated string) + } + indx= jslash+1; + } + return absPath; +} + + +//////////////////////////////////////////////////////////////////// +G4String G4VUIshell::GetCommandPathTail(const G4String& apath) const +//////////////////////////////////////////////////////////////////// +{ // xxx/xxx/zzz -> zzz, trancate /// -> / + if(apath.empty()) return apath; + + G4int lstr= apath.length(); + + // for trancating "/" + G4bool Qsla= FALSE; + if(apath[lstr-1]=='/') Qsla= TRUE; + + // searching last '/' from tail + G4int indx= -1; + for(G4int i=lstr-1; i>=0; i--) { + if(Qsla && apath[i]!='/') Qsla= FALSE; // break "/" flag!! + if(apath[i]=='/' && !Qsla) { + indx= i; + break; + } + } + + if(indx==-1) return apath; // not found + + if(indx==0 && lstr==1) { // "/" + G4String nullStr; + return nullStr; + } else { + //G4String newPath= apath(indx+1,lstr-indx-1); + G4String newPath= apath; + newPath= newPath(indx+1,lstr-indx-1); + return newPath; + } +} + +// -------------------------------------------------------------------- +// shell commands +// -------------------------------------------------------------------- +///////////////////////////////////////////////////////////// +void G4VUIshell::ListCommand(const G4String& dir, + const G4String& candidate) const +///////////////////////////////////////////////////////////// +{ + // specified directpry + G4String input= dir; // ... + input= input.strip(G4String::both); + + // command tree of "user specified directory" + G4String vpath= currentCommandDir; + G4String vcmd; + + G4int len= input.length(); + if(! input.empty()) { + G4int indx= -1; + for(G4int i=len-1; i>=0; i--) { // search last '/' + if(input[i]=='/') { + indx= i; + break; + } + } + // get abs. path + if(indx != -1) vpath= GetAbsCommandDirPath(input(0,indx+1)); + if(!(indx==0 && len==1)) vcmd= input(indx+1,len-indx-1); // care for "/" + } + + // check "vcmd" is directory? + G4String inputpath= vpath+vcmd; + if(! vcmd.empty()){ + G4String tmpstr= inputpath + "/"; + if(GetCommandTree(tmpstr) != NULL) { + vpath= tmpstr; + vcmd= ""; + } + } + + // check "vpath" directory exists? + G4UIcommandTree* atree= GetCommandTree(vpath); + if(atree == NULL) { + G4cout << "<" << input << ">: No such directory" << G4endl; + return; + } + + // list matched directories/commands + G4String stream; + G4bool isMatch= FALSE; + + G4int Ndir= atree-> GetTreeEntry(); + G4int Ncmd= atree-> GetCommandEntry(); + if(Ndir==0 && Ncmd==0) return; // no contents + + // directory ... + for(G4int idir=1; idir<=Ndir; idir++) { + if(idir==1 && lsColorFlag) stream+= TermColorString[directoryColor]; + G4String fpdir= atree-> GetTree(idir)-> GetPathName(); + // matching test + if(candidate.empty()) { // list all + if(vcmd=="" || fpdir==inputpath) { + stream+= GetCommandPathTail(fpdir); stream+= " "; + isMatch= TRUE; + } + } else { // list only matched with candidate + if( fpdir.index(candidate, 0) == 0) { + stream+= GetCommandPathTail(fpdir); stream+= " "; + } + } + } + + // command ... + for(G4int icmd=1; icmd<=Ncmd; icmd++){ + if(icmd==1 && lsColorFlag) stream+= TermColorString[commandColor]; + G4String fpcmd= atree-> GetPathName() + + atree-> GetCommand(icmd) -> GetCommandName(); + // matching test + if(candidate.empty()) { // list all + if(vcmd=="" || fpcmd==inputpath) { + stream+= GetCommandPathTail(fpcmd); stream+= "* "; + isMatch= TRUE; + } + } else { // list only matched with candidate + if( fpcmd.index(candidate, 0) == 0) { + stream+= GetCommandPathTail(fpcmd); stream+= "* "; + } + } + } + + // waring : not matched + if(!isMatch && candidate.empty()) + G4cout << "<" << input + << ">: No such directory or command" << G4std::flush; + + // display + G4UIArrayString arrayString(stream); + arrayString.Show(nColumn); +} diff --git a/source/interfaces/common/GNUmakefile b/source/interfaces/common/GNUmakefile index 3474515a34..d3ab6cb9e4 100644 --- a/source/interfaces/common/GNUmakefile +++ b/source/interfaces/common/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.1 1999/01/07 16:09:36 gunter Exp $ +# $Id: GNUmakefile,v 1.2 2000/06/21 17:43:37 johna Exp $ # ------------------------------------------------------------- # GNUmakefile for interfaces/common library. John Allison, 6/7/98. @@ -9,6 +9,7 @@ ifndef G4INSTALL endif include $(G4INSTALL)/config/architecture.gmk +include $(G4INSTALL)/config/G4VIS_BUILD.gmk include $(G4INSTALL)/config/G4UI_BUILD.gmk include $(G4INSTALL)/config/interactivity.gmk diff --git a/source/interfaces/common/include/G4InteractorMessenger.hh b/source/interfaces/common/include/G4InteractorMessenger.hh index f96328582f..a2af6c7534 100644 --- a/source/interfaces/common/include/G4InteractorMessenger.hh +++ b/source/interfaces/common/include/G4InteractorMessenger.hh @@ -26,6 +26,7 @@ private: G4UIdirectory* interactorDirectory; G4UIcommand* addMenu; G4UIcommand* addButton; + G4UIcommand* sys; }; #endif diff --git a/source/interfaces/common/include/G4VBasicShell.hh b/source/interfaces/common/include/G4VBasicShell.hh index e2ab5dee76..eab712af35 100644 --- a/source/interfaces/common/include/G4VBasicShell.hh +++ b/source/interfaces/common/include/G4VBasicShell.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VBasicShell.hh,v 1.4.4.1 1999/12/07 20:49:09 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VBasicShell.hh,v 1.5 1999/12/15 14:50:47 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4VBasicShell_H diff --git a/source/interfaces/common/include/G4VInteractorManager.hh b/source/interfaces/common/include/G4VInteractorManager.hh index 0d9a4f6567..1a9e9982f9 100644 --- a/source/interfaces/common/include/G4VInteractorManager.hh +++ b/source/interfaces/common/include/G4VInteractorManager.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VInteractorManager.hh,v 1.5.4.1 1999/12/07 20:49:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VInteractorManager.hh,v 1.6 1999/12/15 14:50:47 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // G.Barrand diff --git a/source/interfaces/common/include/G4Win32.hh b/source/interfaces/common/include/G4Win32.hh index 431965e4d1..e97d4782be 100644 --- a/source/interfaces/common/include/G4Win32.hh +++ b/source/interfaces/common/include/G4Win32.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Win32.hh,v 1.4.4.1 1999/12/07 20:49:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Win32.hh,v 1.5 1999/12/15 14:50:47 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 5ec3195adc..32a98968c2 100644 --- a/source/interfaces/common/include/G4Xt.hh +++ b/source/interfaces/common/include/G4Xt.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Xt.hh,v 1.3.4.1 1999/12/07 20:49:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Xt.hh,v 1.4 1999/12/15 14:50:47 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // To unify X11 event treatment between // G4/interfaces Xt sessions and G4/visualizations Xt drivers. diff --git a/source/interfaces/common/src/G4InteractorMessenger.cc b/source/interfaces/common/src/G4InteractorMessenger.cc index 2ae3528c7b..c27559ab44 100644 --- a/source/interfaces/common/src/G4InteractorMessenger.cc +++ b/source/interfaces/common/src/G4InteractorMessenger.cc @@ -28,11 +28,11 @@ G4InteractorMessenger::G4InteractorMessenger ( G4UIparameter* parameter; - interactorDirectory = new G4UIdirectory("/interactor/"); + interactorDirectory = new G4UIdirectory("/gui/"); interactorDirectory->SetGuidance("UI interactors commands."); - // /interactor/addMenu : - addMenu = new G4UIcommand("/interactor/addMenu",this); + // /gui/addMenu : + addMenu = new G4UIcommand("/gui/addMenu",this); addMenu->SetGuidance("Add a menu to menu bar."); parameter = new G4UIparameter("Name",'s',false); parameter->SetDefaultValue("dummy"); @@ -41,8 +41,8 @@ G4InteractorMessenger::G4InteractorMessenger ( parameter->SetDefaultValue("dummy"); addMenu->SetParameter (parameter); - // /interactor/addButton : - addButton = new G4UIcommand("/interactor/addButton",this); + // /gui/addButton : + addButton = new G4UIcommand("/gui/addButton",this); addButton->SetGuidance("Add a button to menu."); parameter = new G4UIparameter("Menu",'s',false); parameter->SetDefaultValue("dummy"); @@ -54,6 +54,13 @@ G4InteractorMessenger::G4InteractorMessenger ( parameter->SetDefaultValue(""); addButton->SetParameter (parameter); + // /gui/system : + sys = new G4UIcommand("/gui/system",this); + sys->SetGuidance("Send a command to the system."); + parameter = new G4UIparameter("Command",'s',false); + parameter->SetDefaultValue(""); + sys->SetParameter (parameter); + } G4InteractorMessenger::~G4InteractorMessenger() @@ -75,6 +82,8 @@ void G4InteractorMessenger::SetNewValue ( session->AddMenu((const char*)params[0],(const char*)params[1]); } else if(command==addButton) { session->AddButton((const char*)params[0],(const char*)params[1],(const char*)params[2]); + } else if(command==sys) { + system((const char*)params[0]); } } delete [] params; diff --git a/source/interfaces/common/src/G4VBasicShell.cc b/source/interfaces/common/src/G4VBasicShell.cc index f7281c7b74..bb2ca7664d 100644 --- a/source/interfaces/common/src/G4VBasicShell.cc +++ b/source/interfaces/common/src/G4VBasicShell.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VBasicShell.cc,v 1.5.4.1.2.5 1999/12/14 09:16:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VBasicShell.cc,v 1.6 1999/12/15 14:50:47 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "g4std/vector" diff --git a/source/interfaces/common/src/G4VInteractorManager.cc b/source/interfaces/common/src/G4VInteractorManager.cc index b68f07580f..287a242986 100644 --- a/source/interfaces/common/src/G4VInteractorManager.cc +++ b/source/interfaces/common/src/G4VInteractorManager.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VInteractorManager.cc,v 1.7.4.1.2.3 1999/12/15 11:43:36 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VInteractorManager.cc,v 1.8 1999/12/15 14:50:47 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // G.Barrand diff --git a/source/interfaces/common/src/G4Win32.cc b/source/interfaces/common/src/G4Win32.cc index f1f8d2ec05..7aa1ed2a0f 100644 --- a/source/interfaces/common/src/G4Win32.cc +++ b/source/interfaces/common/src/G4Win32.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Win32.cc,v 1.4.8.1.2.1 1999/12/08 17:34:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Win32.cc,v 1.5 1999/12/15 14:50:47 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // G.Barrand diff --git a/source/interfaces/common/src/G4Xt.cc b/source/interfaces/common/src/G4Xt.cc index c4b1403ee5..e1aad638ec 100644 --- a/source/interfaces/common/src/G4Xt.cc +++ b/source/interfaces/common/src/G4Xt.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Xt.cc,v 1.4.6.1.2.1 1999/12/08 17:34:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Xt.cc,v 1.5 1999/12/15 14:50:47 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // G.Barrand diff --git a/source/materials/History b/source/materials/History index 7cda0133d0..918b70b2d7 100644 --- a/source/materials/History +++ b/source/materials/History @@ -1,4 +1,4 @@ -$Id: History,v 1.3 1999/11/16 11:04:04 gcosmo Exp $ +$Id: History,v 1.5 2000/06/15 17:35:24 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,12 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +June 15, 00 G.Cosmo - materials-V01-01-00 + fixed usage of pow(double,double) in G4SandiaTable. + +March 03, 00 M.Maire - materials-V01-00-00 + const char* everywhere in G4MaterialPropertiesTable + Nov 16, 99 G.Cosmo - materials-V00-01-03 Removed useless inclusion of RW tphdict.h from G4MaterialPropertiesTable.hh. This tag includes the global diff --git a/source/materials/include/G4AtomicShells.hh b/source/materials/include/G4AtomicShells.hh index 0456c23d3d..7e5121a0d5 100644 --- a/source/materials/include/G4AtomicShells.hh +++ b/source/materials/include/G4AtomicShells.hh @@ -5,12 +5,23 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AtomicShells.hh,v 1.1.10.1 1999/12/07 20:49:15 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AtomicShells.hh,v 1.3 1999/12/16 18:11:07 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ + +// class description // -// Class consists of atomic subshell binding energies in eV !!! -// for first 100 elements +// Class consists of atomic subshell binding energies for first 100 elements. // +// The data were given from: +// +// I from Janni J.F. 1982 (I for F from estimation with formula). +// +// I(i) from T.A.Carlson, Photoelectron and Auger Spectroscopy, +// Plenum, New York, 1976, p.337. +// +// a) CRC, Handbook of Chemistry and Physics, 73rd Edition, +// 1992-1993 + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... // 24-04-98, implementation of the first version, V. Grichine @@ -29,7 +40,7 @@ class G4AtomicShells { -public : +public : //with description static G4int GetNumberOfShells(G4int Z); static G4double GetBindingEnergy (G4int Z, G4int SubshellNb); diff --git a/source/materials/include/G4Element.hh b/source/materials/include/G4Element.hh index 3b2c399a6b..240e902207 100644 --- a/source/materials/include/G4Element.hh +++ b/source/materials/include/G4Element.hh @@ -5,13 +5,11 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Element.hh,v 1.2.6.1.2.1.2.1 1999/12/08 17:34:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Element.hh,v 1.5 1999/12/16 18:11:08 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -// -// ------------------- class G4Element ------------------- -// -// Torre Wenaus, November 1995 + +// class description // // An element is a chemical element either directly defined in terms of // its charactaristics: its name, symbol, @@ -29,6 +27,7 @@ // // Elements can be assembled singly or in mixtures into materials used // in volume definitions via the G4Material class. +// //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... @@ -69,7 +68,7 @@ typedef G4RWTPtrOrderedVector G4ElementTable; class G4Element { -public: +public: // with description // // Constructor to Build an element directly; no reference to isotopes @@ -100,32 +99,52 @@ public: // G4String GetName() const {return fName;}; G4String GetSymbol() const {return fSymbol;}; - G4double GetZ() const {return fZeff;}; - G4double GetN() const {return fNeff;}; - G4double GetA() const {return fAeff;}; + 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;}; + + //vector of pointers to isotopes constituing this element: G4IsotopeVector* GetIsotopeVector() const {return theIsotopeVector;}; - size_t GetNumberOfIsotopes() const {return fNumberOfIsotopes;}; + + //vector of relative abundance of each isotope: G4double* GetRelativeAbundanceVector() const {return fRelativeAbundanceVector;}; + 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;}; + //return pointer to an element, given its name: static G4Element* GetElement(G4String name); - + + //Coulomb correction factor: G4double GetfCoulomb() const {return fCoulomb;}; + + //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); + +public: // without description G4int operator==(const G4Element&) const; G4int operator!=(const G4Element&) const; diff --git a/source/materials/include/G4ElementTable.hh b/source/materials/include/G4ElementTable.hh index 209914a677..39850bd3fd 100644 --- a/source/materials/include/G4ElementTable.hh +++ b/source/materials/include/G4ElementTable.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ElementTable.hh,v 1.1.10.1 1999/12/07 20:49:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ElementTable.hh,v 1.2 1999/12/15 14:50:49 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/materials/include/G4ElementVector.hh b/source/materials/include/G4ElementVector.hh index 0c6007b03a..6722c89298 100644 --- a/source/materials/include/G4ElementVector.hh +++ b/source/materials/include/G4ElementVector.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ElementVector.hh,v 1.1.10.1 1999/12/07 20:49:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ElementVector.hh,v 1.2 1999/12/15 14:50:49 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/materials/include/G4IonisParamElm.hh b/source/materials/include/G4IonisParamElm.hh index 38314e51ae..6f680df0c8 100644 --- a/source/materials/include/G4IonisParamElm.hh +++ b/source/materials/include/G4IonisParamElm.hh @@ -5,12 +5,16 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IonisParamElm.hh,v 1.2.8.1 1999/12/07 20:49:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IonisParamElm.hh,v 1.4 1999/12/16 18:11:08 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // + +// class description // -// ------------------- class G4IonisParamElm ------------------- +// The class contains few (physical) quantities related to the Ionisation +// process, for the Element defined by its atomic number Z // + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... // 09-07-98, data moved from G4Element. M.Maire @@ -27,25 +31,35 @@ class G4IonisParamElm { -public: +public: // with description G4IonisParamElm(G4double Z); ~G4IonisParamElm(); // retrieval methods - G4double GetZ() const {return fZ;}; - G4double GetZ3() const {return fZ3;}; - G4double GetZZ3() const {return fZZ3;}; - G4double GetlogZ3() const {return flogZ3;}; + G4double GetZ() const {return fZ;}; // atomic number Z + G4double GetZ3() const {return fZ3;}; // pow (Z,1/3) + G4double GetZZ3() const {return fZZ3;}; // pow (Z(Z+1),1/3) + G4double GetlogZ3() const {return flogZ3;}; // log(Z)/3 G4double GetTau0() const {return fTau0;}; - G4double GetTaul() const {return fTaul;}; + // 0.1*pow(Z,1/3)*MeV/proton_mass_c2 + + G4double GetTaul() const {return fTaul;}; // 2*MeV/proton mass + G4double GetAlow() const {return fAlow;}; G4double GetBlow() const {return fBlow;}; G4double GetClow() const {return fClow;}; - G4double GetMeanExcitationEnergy() const {return fMeanExcitationEnergy;}; + // parameters for the low energy ion.loss + + G4double GetMeanExcitationEnergy() const {return fMeanExcitationEnergy;}; + // 16*pow(Z,0.9)*eV + G4double* GetShellCorrectionVector() const {return fShellCorrectionVector;}; + // shell correction coefficients + +public: // without description G4int operator==(const G4IonisParamElm&) const; G4int operator!=(const G4IonisParamElm&) const; diff --git a/source/materials/include/G4IonisParamMat.hh b/source/materials/include/G4IonisParamMat.hh index 26516ab30c..2261668c1d 100644 --- a/source/materials/include/G4IonisParamMat.hh +++ b/source/materials/include/G4IonisParamMat.hh @@ -5,9 +5,16 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IonisParamMat.hh,v 1.2.8.1 1999/12/07 20:49:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IonisParamMat.hh,v 1.4 1999/12/16 18:11:09 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // + +// class description +// +// The class contains few (physical) quantities related to the Ionisation +// process, for a material defined by its pointer G4Material* +// + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... // 09-07-98, data moved from G4Material, M.Maire @@ -24,7 +31,7 @@ class G4Material; // forward declaration //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... -class G4IonisParamMat +class G4IonisParamMat // with description { public: @@ -33,19 +40,22 @@ public: // // retrieval methods - // - + // + + // parameters for mean energy loss calculation: G4double GetMeanExcitationEnergy() const {return fMeanExcitationEnergy;}; G4double GetLogMeanExcEnergy() const {return fLogMeanExcEnergy;}; G4double* GetShellCorrectionVector() const {return fShellCorrectionVector;}; G4double GetTaul() const {return fTaul;}; - + + // parameters of the density correction: G4double GetCdensity() const {return fCdensity;}; G4double GetMdensity() const {return fMdensity;}; G4double GetAdensity() const {return fAdensity;}; G4double GetX0density() const {return fX0density;}; G4double GetX1density() const {return fX1density;}; + // parameters of the energy loss fluctuation model: G4double GetF1fluct() const {return fF1fluct;}; G4double GetF2fluct() const {return fF2fluct;}; G4double GetEnergy1fluct() const {return fEnergy1fluct;}; @@ -54,6 +64,8 @@ public: G4double GetLogEnergy2fluct() const {return fLogEnergy2fluct;}; G4double GetEnergy0fluct() const {return fEnergy0fluct;}; G4double GetRateionexcfluct() const {return fRateionexcfluct;}; + +public: // without description G4int operator==(const G4IonisParamMat&) const; G4int operator!=(const G4IonisParamMat&) const; @@ -79,7 +91,7 @@ private: // G4Material* fMaterial; // this material - // parameters for energy loss calculation + // parameters for mean energy loss calculation G4double fMeanExcitationEnergy; // G4double fLogMeanExcEnergy; // G4double* fShellCorrectionVector; // shell correction coefficients @@ -92,7 +104,7 @@ private: G4double fX0density; // G4double fX1density; // - // parameters of the energy fluctuation model + // parameters of the energy loss fluctuation model G4double fF1fluct; G4double fF2fluct; G4double fEnergy1fluct; diff --git a/source/materials/include/G4Isotope.hh b/source/materials/include/G4Isotope.hh index 4290e809a5..1b12efcf59 100644 --- a/source/materials/include/G4Isotope.hh +++ b/source/materials/include/G4Isotope.hh @@ -5,19 +5,12 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Isotope.hh,v 1.1.8.1.2.1.2.1 1999/12/08 17:34:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// +// $Id: G4Isotope.hh,v 1.4 1999/12/16 18:11:09 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------ -// GEANT 4 class header file -// -// For information related to this code contact: -// CERN, CN Division, ASD group -// -// ----------------- class G4Isotope ------------------ -// -// Torre Wenaus, November 1995 + +// class description // // An isotope is a chemical isotope defined by its name, // Z (atomic number), @@ -28,6 +21,7 @@ // isotopes (an ordered vector of isotopes). // // Isotopes can be assembled into elements via the G4Element class. +// //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... @@ -51,7 +45,7 @@ typedef G4RWTPtrOrderedVector G4IsotopeTable; class G4Isotope { - public: + public: // with description // Make an isotope G4Isotope(const G4String& name, //its name @@ -83,6 +77,8 @@ class G4Isotope friend G4std::ostream& operator<<(G4std::ostream&, G4IsotopeTable); + public: // without description + G4int operator==(const G4Isotope &right) const; G4int operator!=(const G4Isotope &right) const; diff --git a/source/materials/include/G4IsotopeVector.hh b/source/materials/include/G4IsotopeVector.hh index e564dd91f5..8eeb1e77ee 100644 --- a/source/materials/include/G4IsotopeVector.hh +++ b/source/materials/include/G4IsotopeVector.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IsotopeVector.hh,v 1.1.10.1 1999/12/07 20:49:17 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IsotopeVector.hh,v 1.2 1999/12/15 14:50:49 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/materials/include/G4MPVEntry.hh b/source/materials/include/G4MPVEntry.hh index 64830868c0..ad40f23263 100644 --- a/source/materials/include/G4MPVEntry.hh +++ b/source/materials/include/G4MPVEntry.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MPVEntry.hh,v 1.3.2.1 1999/11/11 14:30:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MPVEntry.hh,v 1.4 1999/11/11 15:36:09 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //////////////////////////////////////////////////////////////////////// diff --git a/source/materials/include/G4Material.hh b/source/materials/include/G4Material.hh index 6fc371d274..04d7d53a62 100644 --- a/source/materials/include/G4Material.hh +++ b/source/materials/include/G4Material.hh @@ -5,13 +5,11 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Material.hh,v 1.4.6.1.2.1.2.1 1999/12/08 17:34:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Material.hh,v 1.7 1999/12/16 18:11:09 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -// -// ------------------- class G4Material --------------------- -// -// Torre Wenaus, November 1995 + +// class description // // Materials defined via the G4Material class are used to define the // composition of Geant volumes. @@ -20,14 +18,17 @@ // its name, // density, // state informations, -// and Z,A of the underlying Element. +// and Z,A of the underlying Element. +// // or in terms of a collection of constituent Elements with specified weights // (composition specified either by fractional mass or atom counts). // // Quantities, with physical meaning or not, which are constant in a given // material are computed and stored here as Derived data members. -// The class contains as a private static member the table of defined +// +// The class contains as a private static member the Table of defined // materials (an ordered vector of materials). +// //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... @@ -78,7 +79,7 @@ enum G4State { kStateUndefined, kStateSolid, kStateLiquid, kStateGas }; class G4Material { -public: +public: // with description // // Constructor to create a material from scratch. @@ -156,33 +157,29 @@ public: G4double GetTemperature() const {return fTemp;}; G4double GetPressure() const {return fPressure;}; + //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;}; - size_t GetNumberOfElements() const {return fNumberOfElements;}; + + //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;}; + //return a pointer to an element, given its index in the material: const G4Element* GetElement(G4int iel) const {return (*theElementVector)[iel];}; - - void SetMaterialPropertiesTable(G4MaterialPropertiesTable* anMPT) - {fMaterialPropertiesTable = anMPT;}; - - G4MaterialPropertiesTable* GetMaterialPropertiesTable() const - {return fMaterialPropertiesTable;}; - - static - const G4MaterialTable* GetMaterialTable() {return &theMaterialTable;}; - static - size_t GetNumberOfMaterials() {return theMaterialTable.length();}; - size_t GetIndex() const {return fIndexInTable;}; - - static G4Material* GetMaterial(G4String name); - + //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 @@ -190,22 +187,46 @@ public: G4double* GetAtomicNumDensityVector() const {return VecNbOfAtomsPerVolume;}; G4double GetElectronDensity() const {return TotNbOfElectPerVolume;}; + // Radiation length: G4double GetRadlen() const {return fRadlen;}; + + // 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; - friend - G4std::ostream& operator<<(G4std::ostream&, G4Material*); + //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;}; - friend - G4std::ostream& operator<<(G4std::ostream&, G4Material&); + //return pointer to a material, given its name: + static G4Material* GetMaterial(G4String name); - friend - G4std::ostream& operator<<(G4std::ostream&, G4MaterialTable); - + // + //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; diff --git a/source/materials/include/G4MaterialPropertiesTable.hh b/source/materials/include/G4MaterialPropertiesTable.hh index dc950ea13b..87a89e68b2 100644 --- a/source/materials/include/G4MaterialPropertiesTable.hh +++ b/source/materials/include/G4MaterialPropertiesTable.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MaterialPropertiesTable.hh,v 1.7.4.1 1999/12/09 10:28:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MaterialPropertiesTable.hh,v 1.9 2000/03/03 10:21:00 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //////////////////////////////////////////////////////////////////////// @@ -88,28 +88,28 @@ public: // Without description public: // With description - void AddProperty(char *key, + void AddProperty(const char *key, G4double *PhotonMomenta, G4double *PropertyValues, G4int NumEntries); // Add a new property to the table by giving a key-name and the // arrays x and y of size NumEntries. - void AddProperty(char *key, G4MaterialPropertyVector *opv); + void AddProperty(const char *key, G4MaterialPropertyVector *opv); // Add a new property to the table by giving a key-name and an // already constructed G4MaterialPropertyVector. - void RemoveProperty(char *key); + void RemoveProperty(const char *key); // Remove a property from the table. - G4MaterialPropertyVector* GetProperty(char *key); + G4MaterialPropertyVector* GetProperty(const char *key); // Get the property from the table corresponding to the key-name. - void AddEntry(char *key, G4double aPhotonMomentum, + void AddEntry(const char *key, G4double aPhotonMomentum, G4double aPropertyValue); // Add a new entry (pair of numbers) to the table for a given key. - void RemoveEntry(char *key, G4double aPhotonMomentum); + void RemoveEntry(const char *key, G4double aPhotonMomentum); // Remove an entry from the table for a given key and x-value. void DumpTable(); diff --git a/source/materials/include/G4MaterialPropertyVector.hh b/source/materials/include/G4MaterialPropertyVector.hh index 3333201db6..9f9b8e3b62 100644 --- a/source/materials/include/G4MaterialPropertyVector.hh +++ b/source/materials/include/G4MaterialPropertyVector.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MaterialPropertyVector.hh,v 1.3.2.1 1999/11/11 14:30:15 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MaterialPropertyVector.hh,v 1.4 1999/11/11 15:36:09 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //////////////////////////////////////////////////////////////////////// diff --git a/source/materials/include/G4MaterialTable.hh b/source/materials/include/G4MaterialTable.hh index 9e0cf26169..c6d57bb434 100644 --- a/source/materials/include/G4MaterialTable.hh +++ b/source/materials/include/G4MaterialTable.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MaterialTable.hh,v 1.1.10.1 1999/12/07 20:49:17 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MaterialTable.hh,v 1.2 1999/12/15 14:50:50 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/materials/include/G4OpticalSurface.hh b/source/materials/include/G4OpticalSurface.hh index 7bfa333ed0..d1fb77c807 100644 --- a/source/materials/include/G4OpticalSurface.hh +++ b/source/materials/include/G4OpticalSurface.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpticalSurface.hh,v 1.4 1999/11/05 21:12:05 gum Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //////////////////////////////////////////////////////////////////////// diff --git a/source/materials/include/G4SandiaTable.hh b/source/materials/include/G4SandiaTable.hh index ad3a893873..91f92ed942 100644 --- a/source/materials/include/G4SandiaTable.hh +++ b/source/materials/include/G4SandiaTable.hh @@ -5,9 +5,16 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4SandiaTable.hh,v 1.3.8.1 1999/12/07 20:49:17 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4SandiaTable.hh,v 1.6 2000/06/15 17:35:25 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ + +// class description // +// This class is an interface to G4StaticSandiaData. +// it provides - Sandia coeff for an element, given its Z +// - sandia coeff for a material, given a pointer to it +// + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... // // 18.11.98 simplified public interface; new methods for materials. mma @@ -29,21 +36,25 @@ class G4Material; class G4SandiaTable { -public: +public: // with description G4SandiaTable(G4int); G4SandiaTable(G4Material*); ~G4SandiaTable(); - + + //per atom of an Element: static G4int GetNbOfIntervals (G4int Z); static G4double GetSandiaCofPerAtom(G4int Z, G4int, G4int); static G4double* GetSandiaCofPerAtom(G4int Z, G4double energy); static G4double GetIonizationPot (G4int Z); static G4double GetZtoA (G4int Z); + //per volume of a material: G4int GetMatNbOfIntervals() {return fMatNbOfIntervals;}; G4double GetSandiaCofForMaterial(G4int,G4int); G4double* GetSandiaCofForMaterial(G4double energy); + +public: // without description ///////////////////////////////////////////////////////////////////// // @@ -128,7 +139,7 @@ G4double G4SandiaTable::GetSandiaCofPerAtom(G4int Z, G4int interval, G4int j) G4int row = fCumulInterval[Z-1] + interval; if (j==0) return fSandiaTable[row][0]*keV; G4double AoverAvo = Z/(fZtoAratio[Z]*Avogadro*mole); - return fSandiaTable[row][j]*AoverAvo*cm2*pow(keV,(int)j); + return fSandiaTable[row][j]*AoverAvo*cm2*pow(keV,G4double(j)); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... diff --git a/source/materials/include/G4StaticSandiaData.hh b/source/materials/include/G4StaticSandiaData.hh index 56b50c8966..2785c63981 100644 --- a/source/materials/include/G4StaticSandiaData.hh +++ b/source/materials/include/G4StaticSandiaData.hh @@ -5,13 +5,10 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4StaticSandiaData.hh,v 1.2.8.1 1999/12/07 20:49:17 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// file G4StaticSandiaData.hh -// File for static data of PhotoAbsorption cross section coefficients -// according Sandia parametrisation +// $Id: G4StaticSandiaData.hh,v 1.4 1999/12/16 18:11:09 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... // // 09.11.98 simplified public interface; removed mixting stuf. MMA @@ -22,6 +19,13 @@ #include"G4SandiaTable.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... + +// class description +// +// File for static data of PhotoAbsorption cross section coefficients +// according Sandia parametrisation +// +// const G4double G4SandiaTable::fSandiaTable[981][5] // // These are the coefficients from F. Biggs, R. Lighthill 'Analytical // Approximation for X-ray Cross Sections III', SAND-0070, May 1990. @@ -55,7 +59,19 @@ // Absolute Photoionization Cross-section Tables for Helium, Neon, Argon, // and Krypton in the VUV Spectral Regions, Atomic Data and Nuclear Data // Tables, 18(1976)497-508. +//------------------------------------------------------------------------------ // +// Ionization potentials of first 100 elements in eV +// +// const G4double G4SandiaTable::fIonizationPotentials[101] +// +// The most of ionization energies are taken from S. Ruben, Handbook of the +// Elements, 3rd ed. (Open Court, La Salle, IL, 1985). 28 of the ionization +// energies have been changed slightly to bring them up to date (changes +// from W.C. Martin and B.N. Taylor of the National Institute os Standards +// and Technology, January 1990). Here the ionization energy is the least +// energy necessary to remove to infinity one electron from an atom of the +// element. const G4double G4SandiaTable::fSandiaTable[981][5] = { diff --git a/source/materials/src/G4AtomicShells.cc b/source/materials/src/G4AtomicShells.cc index b5cdf53c57..334672c67d 100644 --- a/source/materials/src/G4AtomicShells.cc +++ b/source/materials/src/G4AtomicShells.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AtomicShells.cc,v 1.1.10.1 1999/12/07 20:49:18 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AtomicShells.cc,v 1.2 1999/12/15 14:50:50 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... diff --git a/source/materials/src/G4Element.cc b/source/materials/src/G4Element.cc index f012f44490..5c26d7de0f 100644 --- a/source/materials/src/G4Element.cc +++ b/source/materials/src/G4Element.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Element.cc,v 1.2.8.1.2.4 1999/12/14 07:07:59 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Element.cc,v 1.3 1999/12/15 14:50:51 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------ class G4Element ------------ diff --git a/source/materials/src/G4IonisParamElm.cc b/source/materials/src/G4IonisParamElm.cc index 79258dc985..13ef5641b4 100644 --- a/source/materials/src/G4IonisParamElm.cc +++ b/source/materials/src/G4IonisParamElm.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IonisParamElm.cc,v 1.2.8.1 1999/12/07 20:49:19 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IonisParamElm.cc,v 1.3 1999/12/15 14:50:51 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------ class G4IonisParamElm ------------ diff --git a/source/materials/src/G4IonisParamMat.cc b/source/materials/src/G4IonisParamMat.cc index 8dca4e85ca..93b0278f1d 100644 --- a/source/materials/src/G4IonisParamMat.cc +++ b/source/materials/src/G4IonisParamMat.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IonisParamMat.cc,v 1.2.8.1 1999/12/07 20:49:19 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IonisParamMat.cc,v 1.3 1999/12/15 14:50:51 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... diff --git a/source/materials/src/G4Isotope.cc b/source/materials/src/G4Isotope.cc index 11d15f0ac3..da0c8d76cd 100644 --- a/source/materials/src/G4Isotope.cc +++ b/source/materials/src/G4Isotope.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Isotope.cc,v 1.1.10.1.2.4 1999/12/14 07:07:59 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Isotope.cc,v 1.2 1999/12/15 14:50:51 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/materials/src/G4MPVEntry.cc b/source/materials/src/G4MPVEntry.cc index 1f3b2ca4c9..09c2033eb1 100644 --- a/source/materials/src/G4MPVEntry.cc +++ b/source/materials/src/G4MPVEntry.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MPVEntry.cc,v 1.3.2.1.4.1 1999/12/08 17:34:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MPVEntry.cc,v 1.5 1999/12/15 14:50:51 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //////////////////////////////////////////////////////////////////////// diff --git a/source/materials/src/G4Material.cc b/source/materials/src/G4Material.cc index 88aad693fd..953b939850 100644 --- a/source/materials/src/G4Material.cc +++ b/source/materials/src/G4Material.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Material.cc,v 1.5.8.1.2.4 1999/12/14 07:07:59 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Material.cc,v 1.6 1999/12/15 14:50:51 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------- class G4Material ---------- diff --git a/source/materials/src/G4MaterialPropertiesTable.cc b/source/materials/src/G4MaterialPropertiesTable.cc index fec9184b26..d3867cb632 100644 --- a/source/materials/src/G4MaterialPropertiesTable.cc +++ b/source/materials/src/G4MaterialPropertiesTable.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MaterialPropertiesTable.cc,v 1.5.2.1.4.1 1999/12/08 17:34:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MaterialPropertiesTable.cc,v 1.9 2000/03/03 10:21:02 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //////////////////////////////////////////////////////////////////////// @@ -110,7 +110,7 @@ G4MaterialPropertiesTable::~G4MaterialPropertiesTable() // Methods //////////// -void G4MaterialPropertiesTable::AddProperty(char *key, +void G4MaterialPropertiesTable::AddProperty(const char *key, G4double *PhotonMomenta, G4double *PropertyValues, G4int NumEntries) @@ -122,7 +122,7 @@ void G4MaterialPropertiesTable::AddProperty(char *key, MPT [G4String(key)] = mpv; } -void G4MaterialPropertiesTable::AddProperty(char *key, +void G4MaterialPropertiesTable::AddProperty(const char *key, G4MaterialPropertyVector *mpv) { // Provides a way of adding a property to the Material Properties @@ -131,17 +131,17 @@ void G4MaterialPropertiesTable::AddProperty(char *key, MPT [G4String(key)] = mpv; } -void G4MaterialPropertiesTable::RemoveProperty(char *key) +void G4MaterialPropertiesTable::RemoveProperty(const char *key) { MPT.erase(G4String(key)); } -G4MaterialPropertyVector* G4MaterialPropertiesTable::GetProperty(char *key) +G4MaterialPropertyVector* G4MaterialPropertiesTable::GetProperty(const char *key) { return MPT [G4String(key)]; } -void G4MaterialPropertiesTable::AddEntry(char *key, +void G4MaterialPropertiesTable::AddEntry(const char *key, G4double aPhotonMomentum, G4double aPropertyValue) { @@ -155,7 +155,7 @@ void G4MaterialPropertiesTable::AddEntry(char *key, } } -void G4MaterialPropertiesTable::RemoveEntry(char *key, +void G4MaterialPropertiesTable::RemoveEntry(const char *key, G4double aPhotonMomentum) { G4MaterialPropertyVector *targetVector=MPT [G4String(key)]; diff --git a/source/materials/src/G4MaterialPropertyVector.cc b/source/materials/src/G4MaterialPropertyVector.cc index 609cfa037f..14b79bd418 100644 --- a/source/materials/src/G4MaterialPropertyVector.cc +++ b/source/materials/src/G4MaterialPropertyVector.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MaterialPropertyVector.cc,v 1.3.2.1.4.1 1999/12/08 17:34:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MaterialPropertyVector.cc,v 1.5 1999/12/15 14:50:51 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //////////////////////////////////////////////////////////////////////// diff --git a/source/materials/src/G4OpticalSurface.cc b/source/materials/src/G4OpticalSurface.cc index 4a83fa5132..3ac8531bd7 100644 --- a/source/materials/src/G4OpticalSurface.cc +++ b/source/materials/src/G4OpticalSurface.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4OpticalSurface.cc,v 1.3.6.1 1999/12/08 17:34:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4OpticalSurface.cc,v 1.4 1999/12/15 14:50:51 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //////////////////////////////////////////////////////////////////////// diff --git a/source/materials/src/G4SandiaTable.cc b/source/materials/src/G4SandiaTable.cc index ce90ed9516..25ab83b425 100644 --- a/source/materials/src/G4SandiaTable.cc +++ b/source/materials/src/G4SandiaTable.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4SandiaTable.cc,v 1.4.4.1.2.1 1999/12/08 17:34:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4SandiaTable.cc,v 1.5 1999/12/15 14:50:51 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... // diff --git a/source/particles/History b/source/particles/History index 4c897ffa74..bd2a98c038 100644 --- a/source/particles/History +++ b/source/particles/History @@ -1,4 +1,4 @@ -$Id: History,v 1.31 1999/11/07 15:52:28 kurasige Exp $ +$Id: History,v 1.42 2000/05/29 01:34:53 kurasige Exp $ ------------------------------------------------------------------- ========================================================= @@ -16,6 +16,59 @@ committal in the CVS repository ! ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +- May 29, 00 H.Kurashige (particles-V01-01-01b) +------ partman-V01-01-00b +- Fixed problem using pow in G4VDecayChannel::GetAngularMomentum() + + +- May 12, 00 H.Kurashige (particles-V01-01-01) +------ partman-V01-01-00 +- Added GetAngularMomentum (H.Weber) + +- Mar 17, 00 H.Kurashige (particles-V01-01-00) +------ shortlived-V01-00-02 +- Fixed PDG code for anti-particle of "rho0" + +- Feb 27, 00 H.Kurashige (particles-V01-00-01) +------ hadrons-V01-00-01 +- Set particle sub-type for barions and mesons +------ bosons-V01-00-00 +- Set particle sub-type +------ leptons-V01-00-00 +- Set particle sub-type +------ shortlived-V01-00-01 +- Set particle sub-type +- Added SetMultipletName to G4ExcitedBaryons/G4ExcitedMesons +- Added GetMultipletName to G4ExcitedBaryons/G4ExcitedMesonsConstructor +------ partman-V01-00-03 +- Added sub-type information in G4ParticleDefinition::DumpTable + +- Feb 25, 00 H.Kurashige (particles-V01-00-00) +------ partman-V01-00-02 +- Remove implementation for RW from G4ParticleTable and related. +- Remove implementation for RW from G4DecayTable +- Added ParticleSubType in ParticleDefinition +------ shortlived-V01-00-00 +- Added "rho0" in G4ShortLivedConstructor +------ hadrons-V01-00-00 +- Removed G4RhoPlus, G4RhoZero, and G4RhoMinus class +- Removed G4RhoZero from G4MesonConstructor.cc +- Added GetAtomicNumber() and GetAtomicMass() to G4VIon, G4Proton, and G4Neutron. + + +- Feb 04, 00 H.Kurashige +------ partman-V01-00-01 +- Bug fix in G4NucleiProperties + +- Jan 24, 00 H.Kurashige +------ partman-V01-00-00 +- Added G4IsotopeProperty* G4VIsotopeTable::GetIsotope(G4int Z, G4int A, G4double E) +- Fixed some bugs in G4IonTable::CretaeIon() + +- Dec 06, 99 H.Kurashige +------ partman-V00-01-07 +- Bug fix in G4IonTable::elementName[] + - Nov 07, 99 H.Kurashige (particles-V00-01-02) ------ partman-V00-01-06 - Bug fix in G4DynamicTable::RemoveElectron diff --git a/source/particles/bosons/include/G4BosonConstructor.hh b/source/particles/bosons/include/G4BosonConstructor.hh index 3f064fe7ea..7dd8f16144 100644 --- a/source/particles/bosons/include/G4BosonConstructor.hh +++ b/source/particles/bosons/include/G4BosonConstructor.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4BosonConstructor.hh,v 1.1.10.1 1999/12/07 20:49:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4BosonConstructor.hh,v 1.2 1999/12/15 14:50:52 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/bosons/include/G4ChargedGeantino.hh b/source/particles/bosons/include/G4ChargedGeantino.hh index f714673c4e..1c8b4c015b 100644 --- a/source/particles/bosons/include/G4ChargedGeantino.hh +++ b/source/particles/bosons/include/G4ChargedGeantino.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ChargedGeantino.hh,v 1.2.8.1 1999/12/07 20:49:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ChargedGeantino.hh,v 1.3 1999/12/15 14:50:52 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/bosons/include/G4Gamma.hh b/source/particles/bosons/include/G4Gamma.hh index 38f69c2547..6e19c1741d 100644 --- a/source/particles/bosons/include/G4Gamma.hh +++ b/source/particles/bosons/include/G4Gamma.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Gamma.hh,v 1.2.8.1 1999/12/07 20:49:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Gamma.hh,v 1.3 1999/12/15 14:50:52 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/bosons/include/G4Geantino.hh b/source/particles/bosons/include/G4Geantino.hh index 9573b91e6c..55c6509965 100644 --- a/source/particles/bosons/include/G4Geantino.hh +++ b/source/particles/bosons/include/G4Geantino.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Geantino.hh,v 1.2.8.1 1999/12/07 20:49:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Geantino.hh,v 1.3 1999/12/15 14:50:52 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/bosons/include/G4OpticalPhoton.hh b/source/particles/bosons/include/G4OpticalPhoton.hh index b384989aea..a4c868b6c7 100644 --- a/source/particles/bosons/include/G4OpticalPhoton.hh +++ b/source/particles/bosons/include/G4OpticalPhoton.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4OpticalPhoton.hh,v 1.2.8.1 1999/12/07 20:49:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4OpticalPhoton.hh,v 1.3 1999/12/15 14:50:52 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/bosons/include/G4VBoson.hh b/source/particles/bosons/include/G4VBoson.hh index a6e634b612..3c298d8ac2 100644 --- a/source/particles/bosons/include/G4VBoson.hh +++ b/source/particles/bosons/include/G4VBoson.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VBoson.hh,v 1.1.10.1 1999/12/07 20:49:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VBoson.hh,v 1.2 1999/12/15 14:50:52 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/bosons/src/G4BosonConstructor.cc b/source/particles/bosons/src/G4BosonConstructor.cc index aafbe1386d..cc5357cbe9 100644 --- a/source/particles/bosons/src/G4BosonConstructor.cc +++ b/source/particles/bosons/src/G4BosonConstructor.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4BosonConstructor.cc,v 1.1.10.1 1999/12/07 20:49:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4BosonConstructor.cc,v 1.2 1999/12/15 14:50:53 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/bosons/src/G4ChargedGeantino.cc b/source/particles/bosons/src/G4ChargedGeantino.cc index 3031665fb3..0b62f6fb03 100644 --- a/source/particles/bosons/src/G4ChargedGeantino.cc +++ b/source/particles/bosons/src/G4ChargedGeantino.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ChargedGeantino.cc,v 1.1.10.1.2.2 1999/12/14 07:07:59 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ChargedGeantino.cc,v 1.3 2000/02/27 06:27:12 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -46,6 +46,7 @@ G4ChargedGeantino::G4ChargedGeantino( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("geantino"); // Anti-particle of ChargedGeantino is ChargedGeantino itself SetAntiPDGEncoding(encoding); } diff --git a/source/particles/bosons/src/G4Gamma.cc b/source/particles/bosons/src/G4Gamma.cc index 6c7b46bb74..8dfab3332f 100644 --- a/source/particles/bosons/src/G4Gamma.cc +++ b/source/particles/bosons/src/G4Gamma.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Gamma.cc,v 1.1.10.1.2.3 1999/12/14 07:07:59 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Gamma.cc,v 1.3 2000/02/27 06:27:12 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -49,6 +49,7 @@ G4Gamma::G4Gamma( lepton,baryon,encoding,stable,lifetime,decaytable ) //-- members initialisation for SetCuts ------------------------------ { + SetParticleSubType("photon"); const G4double DefaultLowestEnergy = 1.0*keV; const G4double DefaultHighestEnergy = 1.0*GeV; const G4int DefaultTotBin = 100; diff --git a/source/particles/bosons/src/G4Geantino.cc b/source/particles/bosons/src/G4Geantino.cc index 5faf711253..054c10db68 100644 --- a/source/particles/bosons/src/G4Geantino.cc +++ b/source/particles/bosons/src/G4Geantino.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Geantino.cc,v 1.1.10.1.2.2 1999/12/14 07:08:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Geantino.cc,v 1.3 2000/02/27 06:27:12 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -47,6 +47,7 @@ G4Geantino::G4Geantino( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("geantino"); // Anti-particle of geantino is geantino itself SetAntiPDGEncoding(encoding); } diff --git a/source/particles/bosons/src/G4OpticalPhoton.cc b/source/particles/bosons/src/G4OpticalPhoton.cc index 306cbf48de..35de276478 100644 --- a/source/particles/bosons/src/G4OpticalPhoton.cc +++ b/source/particles/bosons/src/G4OpticalPhoton.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4OpticalPhoton.cc,v 1.1.10.1.2.2 1999/12/14 07:08:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4OpticalPhoton.cc,v 1.3 2000/02/27 06:27:12 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -44,6 +44,7 @@ G4OpticalPhoton::G4OpticalPhoton( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("photon"); // Anti-particle of OpticalPhoton is OpticalPhoton itself SetAntiPDGEncoding(encoding); } diff --git a/source/particles/bosons/src/G4VBoson.cc b/source/particles/bosons/src/G4VBoson.cc index 594078fa8a..b7bd38c252 100644 --- a/source/particles/bosons/src/G4VBoson.cc +++ b/source/particles/bosons/src/G4VBoson.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VBoson.cc,v 1.1.10.1 1999/12/07 20:49:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VBoson.cc,v 1.2 1999/12/15 14:50:54 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/include/G4AntiLambda.hh b/source/particles/hadrons/barions/include/G4AntiLambda.hh index 44b8740232..5d7d6f9bb1 100644 --- a/source/particles/hadrons/barions/include/G4AntiLambda.hh +++ b/source/particles/hadrons/barions/include/G4AntiLambda.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiLambda.hh,v 1.3.6.1 1999/12/07 20:49:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiLambda.hh,v 1.4 1999/12/15 14:50:54 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiLambdacPlus.hh b/source/particles/hadrons/barions/include/G4AntiLambdacPlus.hh index 514a827c33..ddfe79cfc5 100644 --- a/source/particles/hadrons/barions/include/G4AntiLambdacPlus.hh +++ b/source/particles/hadrons/barions/include/G4AntiLambdacPlus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiLambdacPlus.hh,v 1.3.6.1 1999/12/07 20:49:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiLambdacPlus.hh,v 1.4 1999/12/15 14:50:54 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiNeutron.hh b/source/particles/hadrons/barions/include/G4AntiNeutron.hh index a47b3da0a6..022138470a 100644 --- a/source/particles/hadrons/barions/include/G4AntiNeutron.hh +++ b/source/particles/hadrons/barions/include/G4AntiNeutron.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiNeutron.hh,v 1.3.6.1 1999/12/07 20:49:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiNeutron.hh,v 1.4 1999/12/15 14:50:54 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiOmegaMinus.hh b/source/particles/hadrons/barions/include/G4AntiOmegaMinus.hh index b247efe8d1..81c10ba377 100644 --- a/source/particles/hadrons/barions/include/G4AntiOmegaMinus.hh +++ b/source/particles/hadrons/barions/include/G4AntiOmegaMinus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiOmegaMinus.hh,v 1.3.6.1 1999/12/07 20:49:23 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiOmegaMinus.hh,v 1.4 1999/12/15 14:50:54 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiOmegacZero.hh b/source/particles/hadrons/barions/include/G4AntiOmegacZero.hh index 27be65ee4c..de64bf8f06 100644 --- a/source/particles/hadrons/barions/include/G4AntiOmegacZero.hh +++ b/source/particles/hadrons/barions/include/G4AntiOmegacZero.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiOmegacZero.hh,v 1.3.6.1 1999/12/07 20:49:23 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiOmegacZero.hh,v 1.4 1999/12/15 14:50:54 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiProton.hh b/source/particles/hadrons/barions/include/G4AntiProton.hh index 4c3e55139e..2c73ae4dba 100644 --- a/source/particles/hadrons/barions/include/G4AntiProton.hh +++ b/source/particles/hadrons/barions/include/G4AntiProton.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiProton.hh,v 1.3.6.1 1999/12/07 20:49:23 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiProton.hh,v 1.4 1999/12/15 14:50:54 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiSigmaMinus.hh b/source/particles/hadrons/barions/include/G4AntiSigmaMinus.hh index 774eff05ed..813b562a52 100644 --- a/source/particles/hadrons/barions/include/G4AntiSigmaMinus.hh +++ b/source/particles/hadrons/barions/include/G4AntiSigmaMinus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiSigmaMinus.hh,v 1.3.6.1 1999/12/07 20:49:23 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiSigmaMinus.hh,v 1.4 1999/12/15 14:50:54 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiSigmaPlus.hh b/source/particles/hadrons/barions/include/G4AntiSigmaPlus.hh index ebafe2d567..8bbed58028 100644 --- a/source/particles/hadrons/barions/include/G4AntiSigmaPlus.hh +++ b/source/particles/hadrons/barions/include/G4AntiSigmaPlus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiSigmaPlus.hh,v 1.3.6.1 1999/12/07 20:49:23 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiSigmaPlus.hh,v 1.4 1999/12/15 14:50:54 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiSigmaZero.hh b/source/particles/hadrons/barions/include/G4AntiSigmaZero.hh index e4ba6c4b9f..a34005f3ac 100644 --- a/source/particles/hadrons/barions/include/G4AntiSigmaZero.hh +++ b/source/particles/hadrons/barions/include/G4AntiSigmaZero.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiSigmaZero.hh,v 1.3.6.1 1999/12/07 20:49:23 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiSigmaZero.hh,v 1.4 1999/12/15 14:50:54 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiSigmacPlus.hh b/source/particles/hadrons/barions/include/G4AntiSigmacPlus.hh index 4a856cc7ce..b22582440d 100644 --- a/source/particles/hadrons/barions/include/G4AntiSigmacPlus.hh +++ b/source/particles/hadrons/barions/include/G4AntiSigmacPlus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiSigmacPlus.hh,v 1.3.6.1 1999/12/07 20:49:24 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiSigmacPlus.hh,v 1.4 1999/12/15 14:50:54 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiSigmacPlusPlus.hh b/source/particles/hadrons/barions/include/G4AntiSigmacPlusPlus.hh index a1b78ab3c6..ab9cb39240 100644 --- a/source/particles/hadrons/barions/include/G4AntiSigmacPlusPlus.hh +++ b/source/particles/hadrons/barions/include/G4AntiSigmacPlusPlus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiSigmacPlusPlus.hh,v 1.3.6.1 1999/12/07 20:49:24 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiSigmacPlusPlus.hh,v 1.4 1999/12/15 14:50:54 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiSigmacZero.hh b/source/particles/hadrons/barions/include/G4AntiSigmacZero.hh index 4cab64421f..80bec681e2 100644 --- a/source/particles/hadrons/barions/include/G4AntiSigmacZero.hh +++ b/source/particles/hadrons/barions/include/G4AntiSigmacZero.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiSigmacZero.hh,v 1.3.6.1 1999/12/07 20:49:24 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiSigmacZero.hh,v 1.4 1999/12/15 14:50:54 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiXiMinus.hh b/source/particles/hadrons/barions/include/G4AntiXiMinus.hh index 4441d4e02a..e76a2c98ed 100644 --- a/source/particles/hadrons/barions/include/G4AntiXiMinus.hh +++ b/source/particles/hadrons/barions/include/G4AntiXiMinus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiXiMinus.hh,v 1.3.6.1 1999/12/07 20:49:24 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiXiMinus.hh,v 1.4 1999/12/15 14:50:54 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiXiZero.hh b/source/particles/hadrons/barions/include/G4AntiXiZero.hh index 546bac76af..791a1135b4 100644 --- a/source/particles/hadrons/barions/include/G4AntiXiZero.hh +++ b/source/particles/hadrons/barions/include/G4AntiXiZero.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiXiZero.hh,v 1.3.6.1 1999/12/07 20:49:24 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiXiZero.hh,v 1.4 1999/12/15 14:50:54 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiXicPlus.hh b/source/particles/hadrons/barions/include/G4AntiXicPlus.hh index f887812bf7..9f226e1183 100644 --- a/source/particles/hadrons/barions/include/G4AntiXicPlus.hh +++ b/source/particles/hadrons/barions/include/G4AntiXicPlus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiXicPlus.hh,v 1.3.6.1 1999/12/07 20:49:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiXicPlus.hh,v 1.4 1999/12/15 14:50:55 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiXicZero.hh b/source/particles/hadrons/barions/include/G4AntiXicZero.hh index 20d9c0792d..aa41a4a0a6 100644 --- a/source/particles/hadrons/barions/include/G4AntiXicZero.hh +++ b/source/particles/hadrons/barions/include/G4AntiXicZero.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiXicZero.hh,v 1.3.6.1 1999/12/07 20:49:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiXicZero.hh,v 1.4 1999/12/15 14:50:55 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4BaryonConstructor.hh b/source/particles/hadrons/barions/include/G4BaryonConstructor.hh index fe1bb3fe2d..4836e24790 100644 --- a/source/particles/hadrons/barions/include/G4BaryonConstructor.hh +++ b/source/particles/hadrons/barions/include/G4BaryonConstructor.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4BaryonConstructor.hh,v 1.1.6.1 1999/12/07 20:49:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4BaryonConstructor.hh,v 1.2 1999/12/15 14:50:55 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/include/G4Lambda.hh b/source/particles/hadrons/barions/include/G4Lambda.hh index 6e33bad55b..b6402369c8 100644 --- a/source/particles/hadrons/barions/include/G4Lambda.hh +++ b/source/particles/hadrons/barions/include/G4Lambda.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Lambda.hh,v 1.3.6.1 1999/12/07 20:49:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Lambda.hh,v 1.4 1999/12/15 14:50:55 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4LambdacPlus.hh b/source/particles/hadrons/barions/include/G4LambdacPlus.hh index e157792a59..1f53e7aa63 100644 --- a/source/particles/hadrons/barions/include/G4LambdacPlus.hh +++ b/source/particles/hadrons/barions/include/G4LambdacPlus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LambdacPlus.hh,v 1.3.6.1 1999/12/07 20:49:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LambdacPlus.hh,v 1.4 1999/12/15 14:50:55 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4Neutron.hh b/source/particles/hadrons/barions/include/G4Neutron.hh index 180dc8aea5..e501c8d8f6 100644 --- a/source/particles/hadrons/barions/include/G4Neutron.hh +++ b/source/particles/hadrons/barions/include/G4Neutron.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Neutron.hh,v 1.3.6.1 1999/12/07 20:49:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Neutron.hh,v 1.5 2000/02/25 07:37:10 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -66,6 +66,26 @@ class G4Neutron : public G4VBaryon static G4double* GetCutsInEnergy() {return theNeutronKineticEnergyCuts;}; virtual void SetCuts(G4double aCut); + + public: //With Description + G4int GetAtomicNumber() const; + G4int GetAtomicMass() const; + + G4double GetExcitationEnergy() const {return 0.;} + void SetExcitationEnergy(G4double ){} + // These two methods are dummy because all particles derived from + // G4Neutron is "groud state" nuclei }; +inline + G4int G4Neutron::GetAtomicNumber() const +{ + return 0; +} + +inline + G4int G4Neutron::GetAtomicMass() const +{ + return 1; +} #endif diff --git a/source/particles/hadrons/barions/include/G4OmegaMinus.hh b/source/particles/hadrons/barions/include/G4OmegaMinus.hh index 4890af2517..ac25042f03 100644 --- a/source/particles/hadrons/barions/include/G4OmegaMinus.hh +++ b/source/particles/hadrons/barions/include/G4OmegaMinus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4OmegaMinus.hh,v 1.3.6.1 1999/12/07 20:49:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4OmegaMinus.hh,v 1.4 1999/12/15 14:50:55 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4OmegacZero.hh b/source/particles/hadrons/barions/include/G4OmegacZero.hh index e5a4179c29..4207c285cf 100644 --- a/source/particles/hadrons/barions/include/G4OmegacZero.hh +++ b/source/particles/hadrons/barions/include/G4OmegacZero.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4OmegacZero.hh,v 1.3.6.1 1999/12/07 20:49:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4OmegacZero.hh,v 1.4 1999/12/15 14:50:55 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4Proton.hh b/source/particles/hadrons/barions/include/G4Proton.hh index 08186fad43..f3c241dd62 100644 --- a/source/particles/hadrons/barions/include/G4Proton.hh +++ b/source/particles/hadrons/barions/include/G4Proton.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Proton.hh,v 1.3.6.1 1999/12/07 20:49:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Proton.hh,v 1.5 2000/02/25 07:37:11 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -66,6 +66,16 @@ class G4Proton : public G4VBaryon static G4double* GetCutsInEnergy() {return theProtonKineticEnergyCuts;}; virtual void SetCuts(G4double aCut); + + public: //With Description + G4int GetAtomicNumber() const; + G4int GetAtomicMass() const; + + G4double GetExcitationEnergy() const {return 0.;} + void SetExcitationEnergy(G4double ){} + // These two methods are dummy because all particles derived from + // G4Proton is "groud state" nuclei + }; inline void G4Proton::SetCuts(G4double aCut) @@ -78,4 +88,16 @@ inline void G4Proton::SetCuts(G4double aCut) inline G4Proton* G4Proton::Proton() { return &theProton; } + +inline + G4int G4Proton::GetAtomicNumber() const +{ + return 1; +} + +inline + G4int G4Proton::GetAtomicMass() const +{ + return 1; +} #endif diff --git a/source/particles/hadrons/barions/include/G4SigmaMinus.hh b/source/particles/hadrons/barions/include/G4SigmaMinus.hh index 88e8dec262..c653bb19f0 100644 --- a/source/particles/hadrons/barions/include/G4SigmaMinus.hh +++ b/source/particles/hadrons/barions/include/G4SigmaMinus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4SigmaMinus.hh,v 1.3.6.1 1999/12/07 20:49:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4SigmaMinus.hh,v 1.4 1999/12/15 14:50:55 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4SigmaPlus.hh b/source/particles/hadrons/barions/include/G4SigmaPlus.hh index 6741d2894e..8f0aae9b1a 100644 --- a/source/particles/hadrons/barions/include/G4SigmaPlus.hh +++ b/source/particles/hadrons/barions/include/G4SigmaPlus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4SigmaPlus.hh,v 1.3.6.1 1999/12/07 20:49:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4SigmaPlus.hh,v 1.4 1999/12/15 14:50:55 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4SigmaZero.hh b/source/particles/hadrons/barions/include/G4SigmaZero.hh index 776b0e124d..69bc203ef3 100644 --- a/source/particles/hadrons/barions/include/G4SigmaZero.hh +++ b/source/particles/hadrons/barions/include/G4SigmaZero.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4SigmaZero.hh,v 1.3.6.1 1999/12/07 20:49:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4SigmaZero.hh,v 1.4 1999/12/15 14:50:55 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4SigmacPlus.hh b/source/particles/hadrons/barions/include/G4SigmacPlus.hh index 695fb338e6..370fb762d3 100644 --- a/source/particles/hadrons/barions/include/G4SigmacPlus.hh +++ b/source/particles/hadrons/barions/include/G4SigmacPlus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4SigmacPlus.hh,v 1.3.6.1 1999/12/07 20:49:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4SigmacPlus.hh,v 1.4 1999/12/15 14:50:55 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4SigmacPlusPlus.hh b/source/particles/hadrons/barions/include/G4SigmacPlusPlus.hh index ab5dc77589..f614ddcac3 100644 --- a/source/particles/hadrons/barions/include/G4SigmacPlusPlus.hh +++ b/source/particles/hadrons/barions/include/G4SigmacPlusPlus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4SigmacPlusPlus.hh,v 1.3.6.1 1999/12/07 20:49:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4SigmacPlusPlus.hh,v 1.4 1999/12/15 14:50:55 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4SigmacZero.hh b/source/particles/hadrons/barions/include/G4SigmacZero.hh index f073dc9b98..5ab18a154f 100644 --- a/source/particles/hadrons/barions/include/G4SigmacZero.hh +++ b/source/particles/hadrons/barions/include/G4SigmacZero.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4SigmacZero.hh,v 1.3.6.1 1999/12/07 20:49:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4SigmacZero.hh,v 1.4 1999/12/15 14:50:55 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4VBaryon.hh b/source/particles/hadrons/barions/include/G4VBaryon.hh index 6e41b901ce..49d49473b3 100644 --- a/source/particles/hadrons/barions/include/G4VBaryon.hh +++ b/source/particles/hadrons/barions/include/G4VBaryon.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VBaryon.hh,v 1.1.6.1 1999/12/07 20:49:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VBaryon.hh,v 1.2 1999/12/15 14:50:55 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4XiMinus.hh b/source/particles/hadrons/barions/include/G4XiMinus.hh index f2eabd4acf..0402a5c209 100644 --- a/source/particles/hadrons/barions/include/G4XiMinus.hh +++ b/source/particles/hadrons/barions/include/G4XiMinus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4XiMinus.hh,v 1.3.6.1 1999/12/07 20:49:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4XiMinus.hh,v 1.4 1999/12/15 14:50:56 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4XiZero.hh b/source/particles/hadrons/barions/include/G4XiZero.hh index 097d518ab9..de1fc98949 100644 --- a/source/particles/hadrons/barions/include/G4XiZero.hh +++ b/source/particles/hadrons/barions/include/G4XiZero.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4XiZero.hh,v 1.3.6.1 1999/12/07 20:49:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4XiZero.hh,v 1.4 1999/12/15 14:50:56 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4XicPlus.hh b/source/particles/hadrons/barions/include/G4XicPlus.hh index 5044852691..56b41fdd38 100644 --- a/source/particles/hadrons/barions/include/G4XicPlus.hh +++ b/source/particles/hadrons/barions/include/G4XicPlus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4XicPlus.hh,v 1.3.6.1 1999/12/07 20:49:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4XicPlus.hh,v 1.4 1999/12/15 14:50:57 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4XicZero.hh b/source/particles/hadrons/barions/include/G4XicZero.hh index 165b8d54b0..a608701ec2 100644 --- a/source/particles/hadrons/barions/include/G4XicZero.hh +++ b/source/particles/hadrons/barions/include/G4XicZero.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4XicZero.hh,v 1.3.6.1 1999/12/07 20:49:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4XicZero.hh,v 1.4 1999/12/15 14:50:57 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/src/G4AntiLambda.cc b/source/particles/hadrons/barions/src/G4AntiLambda.cc index 2706baf092..a50a1b24f2 100644 --- a/source/particles/hadrons/barions/src/G4AntiLambda.cc +++ b/source/particles/hadrons/barions/src/G4AntiLambda.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiLambda.cc,v 1.3.6.1.2.2 1999/12/14 07:08:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiLambda.cc,v 1.5 2000/02/27 06:17:02 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -46,6 +46,7 @@ G4AntiLambda::G4AntiLambda( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("lambda"); //create Decay Table G4DecayTable* table = GetDecayTable(); if (table!=NULL) delete table; diff --git a/source/particles/hadrons/barions/src/G4AntiLambdacPlus.cc b/source/particles/hadrons/barions/src/G4AntiLambdacPlus.cc index ce0feed240..1d23747ec3 100644 --- a/source/particles/hadrons/barions/src/G4AntiLambdacPlus.cc +++ b/source/particles/hadrons/barions/src/G4AntiLambdacPlus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiLambdacPlus.cc,v 1.3.6.1.2.2 1999/12/14 07:08:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiLambdacPlus.cc,v 1.5 2000/02/27 06:17:02 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -47,6 +47,7 @@ G4AntiLambdacPlus::G4AntiLambdacPlus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("lambda_c"); } // ...................................................................... diff --git a/source/particles/hadrons/barions/src/G4AntiNeutron.cc b/source/particles/hadrons/barions/src/G4AntiNeutron.cc index 7ef91f0d72..c3d71534a4 100644 --- a/source/particles/hadrons/barions/src/G4AntiNeutron.cc +++ b/source/particles/hadrons/barions/src/G4AntiNeutron.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiNeutron.cc,v 1.2.6.1.2.2 1999/12/14 07:08:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiNeutron.cc,v 1.4 2000/02/27 06:17:03 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -41,6 +41,7 @@ G4AntiNeutron::G4AntiNeutron( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("nucleon"); } // ...................................................................... diff --git a/source/particles/hadrons/barions/src/G4AntiOmegaMinus.cc b/source/particles/hadrons/barions/src/G4AntiOmegaMinus.cc index 8f5259be1c..c79edeaba9 100644 --- a/source/particles/hadrons/barions/src/G4AntiOmegaMinus.cc +++ b/source/particles/hadrons/barions/src/G4AntiOmegaMinus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiOmegaMinus.cc,v 1.3.6.1.2.2 1999/12/14 07:08:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiOmegaMinus.cc,v 1.5 2000/02/27 06:17:03 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -46,6 +46,7 @@ G4AntiOmegaMinus::G4AntiOmegaMinus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("omega"); //create Decay Table G4DecayTable* table = GetDecayTable(); if (table!=NULL) delete table; diff --git a/source/particles/hadrons/barions/src/G4AntiOmegacZero.cc b/source/particles/hadrons/barions/src/G4AntiOmegacZero.cc index f1ebd15010..69ddbd1c8a 100644 --- a/source/particles/hadrons/barions/src/G4AntiOmegacZero.cc +++ b/source/particles/hadrons/barions/src/G4AntiOmegacZero.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiOmegacZero.cc,v 1.3.6.1.2.2 1999/12/14 07:08:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiOmegacZero.cc,v 1.5 2000/02/27 06:17:03 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -47,6 +47,7 @@ G4AntiOmegacZero::G4AntiOmegacZero( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("omega_c"); } // ...................................................................... diff --git a/source/particles/hadrons/barions/src/G4AntiProton.cc b/source/particles/hadrons/barions/src/G4AntiProton.cc index abb57fc9e6..9f2c8aa2a4 100644 --- a/source/particles/hadrons/barions/src/G4AntiProton.cc +++ b/source/particles/hadrons/barions/src/G4AntiProton.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiProton.cc,v 1.2.6.1.2.2 1999/12/14 07:08:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiProton.cc,v 1.4 2000/02/27 06:17:03 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -42,6 +42,7 @@ G4AntiProton::G4AntiProton( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("nucleon"); } // ...................................................................... diff --git a/source/particles/hadrons/barions/src/G4AntiSigmaMinus.cc b/source/particles/hadrons/barions/src/G4AntiSigmaMinus.cc index 5f3decabcd..0974f37f59 100644 --- a/source/particles/hadrons/barions/src/G4AntiSigmaMinus.cc +++ b/source/particles/hadrons/barions/src/G4AntiSigmaMinus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiSigmaMinus.cc,v 1.3.6.1.2.2 1999/12/14 07:08:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiSigmaMinus.cc,v 1.5 2000/02/27 06:17:03 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -46,6 +46,7 @@ G4AntiSigmaMinus::G4AntiSigmaMinus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("sigma"); //create Decay Table G4DecayTable* table = GetDecayTable(); if (table!=NULL) delete table; diff --git a/source/particles/hadrons/barions/src/G4AntiSigmaPlus.cc b/source/particles/hadrons/barions/src/G4AntiSigmaPlus.cc index 2845660c7b..1492f65cc1 100644 --- a/source/particles/hadrons/barions/src/G4AntiSigmaPlus.cc +++ b/source/particles/hadrons/barions/src/G4AntiSigmaPlus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiSigmaPlus.cc,v 1.3.6.1.2.2 1999/12/14 07:08:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiSigmaPlus.cc,v 1.5 2000/02/27 06:17:03 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -46,6 +46,7 @@ G4AntiSigmaPlus::G4AntiSigmaPlus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("sigma"); //create Decay Table G4DecayTable* table = GetDecayTable(); if (table!=NULL) delete table; diff --git a/source/particles/hadrons/barions/src/G4AntiSigmaZero.cc b/source/particles/hadrons/barions/src/G4AntiSigmaZero.cc index c650cb3b54..ff0bd19952 100644 --- a/source/particles/hadrons/barions/src/G4AntiSigmaZero.cc +++ b/source/particles/hadrons/barions/src/G4AntiSigmaZero.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiSigmaZero.cc,v 1.3.6.1.2.2 1999/12/14 07:08:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiSigmaZero.cc,v 1.5 2000/02/27 06:17:03 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -47,6 +47,7 @@ G4AntiSigmaZero::G4AntiSigmaZero( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("sigma"); //create Decay Table G4DecayTable* table = GetDecayTable(); if (table!=NULL) delete table; diff --git a/source/particles/hadrons/barions/src/G4AntiSigmacPlus.cc b/source/particles/hadrons/barions/src/G4AntiSigmacPlus.cc index ab60fef0e8..d51218002c 100644 --- a/source/particles/hadrons/barions/src/G4AntiSigmacPlus.cc +++ b/source/particles/hadrons/barions/src/G4AntiSigmacPlus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiSigmacPlus.cc,v 1.2.6.1.2.2 1999/12/14 07:08:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiSigmacPlus.cc,v 1.4 2000/02/27 06:17:03 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -47,6 +47,7 @@ G4AntiSigmacPlus::G4AntiSigmacPlus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("sigma_c"); //create Decay Table G4DecayTable* table = GetDecayTable(); if (table!=NULL) delete table; diff --git a/source/particles/hadrons/barions/src/G4AntiSigmacPlusPlus.cc b/source/particles/hadrons/barions/src/G4AntiSigmacPlusPlus.cc index fff033a13f..626e2a9668 100644 --- a/source/particles/hadrons/barions/src/G4AntiSigmacPlusPlus.cc +++ b/source/particles/hadrons/barions/src/G4AntiSigmacPlusPlus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiSigmacPlusPlus.cc,v 1.2.6.1.2.2 1999/12/14 07:08:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiSigmacPlusPlus.cc,v 1.4 2000/02/27 06:17:03 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -47,6 +47,7 @@ G4AntiSigmacPlusPlus::G4AntiSigmacPlusPlus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("sigma_c"); //create Decay Table G4DecayTable* table = GetDecayTable(); if (table!=NULL) delete table; diff --git a/source/particles/hadrons/barions/src/G4AntiSigmacZero.cc b/source/particles/hadrons/barions/src/G4AntiSigmacZero.cc index 9e80ad9a9e..550cc393fb 100644 --- a/source/particles/hadrons/barions/src/G4AntiSigmacZero.cc +++ b/source/particles/hadrons/barions/src/G4AntiSigmacZero.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiSigmacZero.cc,v 1.2.6.1.2.2 1999/12/14 07:08:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiSigmacZero.cc,v 1.4 2000/02/27 06:17:03 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -47,6 +47,7 @@ G4AntiSigmacZero::G4AntiSigmacZero( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("sigma_c"); //create Decay Table G4DecayTable* table = GetDecayTable(); if (table!=NULL) delete table; diff --git a/source/particles/hadrons/barions/src/G4AntiXiMinus.cc b/source/particles/hadrons/barions/src/G4AntiXiMinus.cc index de55d0667f..41b5cd0e37 100644 --- a/source/particles/hadrons/barions/src/G4AntiXiMinus.cc +++ b/source/particles/hadrons/barions/src/G4AntiXiMinus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiXiMinus.cc,v 1.3.6.1.2.2 1999/12/14 07:08:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiXiMinus.cc,v 1.5 2000/02/27 06:17:04 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -46,6 +46,7 @@ G4AntiXiMinus::G4AntiXiMinus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("xi"); //create Decay Table G4DecayTable* table = GetDecayTable(); if (table!=NULL) delete table; diff --git a/source/particles/hadrons/barions/src/G4AntiXiZero.cc b/source/particles/hadrons/barions/src/G4AntiXiZero.cc index 690f2b4dc7..23e3c4afea 100644 --- a/source/particles/hadrons/barions/src/G4AntiXiZero.cc +++ b/source/particles/hadrons/barions/src/G4AntiXiZero.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiXiZero.cc,v 1.3.6.1.2.2 1999/12/14 07:08:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiXiZero.cc,v 1.5 2000/02/27 06:17:04 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -46,6 +46,7 @@ G4AntiXiZero::G4AntiXiZero( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("xi"); //create Decay Table G4DecayTable* table = GetDecayTable(); if (table!=NULL) delete table; diff --git a/source/particles/hadrons/barions/src/G4AntiXicPlus.cc b/source/particles/hadrons/barions/src/G4AntiXicPlus.cc index 5c5036d62d..8e299111c9 100644 --- a/source/particles/hadrons/barions/src/G4AntiXicPlus.cc +++ b/source/particles/hadrons/barions/src/G4AntiXicPlus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiXicPlus.cc,v 1.3.6.1.2.2 1999/12/14 07:08:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiXicPlus.cc,v 1.5 2000/02/27 06:17:04 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -48,6 +48,7 @@ G4AntiXicPlus::G4AntiXicPlus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("xi_c"); } // ...................................................................... diff --git a/source/particles/hadrons/barions/src/G4AntiXicZero.cc b/source/particles/hadrons/barions/src/G4AntiXicZero.cc index a8eb38be89..6a3b71823f 100644 --- a/source/particles/hadrons/barions/src/G4AntiXicZero.cc +++ b/source/particles/hadrons/barions/src/G4AntiXicZero.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiXicZero.cc,v 1.3.6.1.2.2 1999/12/14 07:08:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiXicZero.cc,v 1.5 2000/02/27 06:17:04 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -48,6 +48,7 @@ G4AntiXicZero::G4AntiXicZero( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("xi_c"); } // ...................................................................... diff --git a/source/particles/hadrons/barions/src/G4BaryonConstructor.cc b/source/particles/hadrons/barions/src/G4BaryonConstructor.cc index e563944d68..6e2102d779 100644 --- a/source/particles/hadrons/barions/src/G4BaryonConstructor.cc +++ b/source/particles/hadrons/barions/src/G4BaryonConstructor.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4BaryonConstructor.cc,v 1.1.6.1 1999/12/07 20:49:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4BaryonConstructor.cc,v 1.2 1999/12/15 14:51:00 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4Lambda.cc b/source/particles/hadrons/barions/src/G4Lambda.cc index 53925388c3..074821cfc6 100644 --- a/source/particles/hadrons/barions/src/G4Lambda.cc +++ b/source/particles/hadrons/barions/src/G4Lambda.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Lambda.cc,v 1.3.6.1.2.2 1999/12/14 07:08:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Lambda.cc,v 1.5 2000/02/27 06:17:04 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -46,6 +46,7 @@ G4Lambda::G4Lambda( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("lambda"); //create Decay Table G4DecayTable* table = GetDecayTable(); if (table!=NULL) delete table; diff --git a/source/particles/hadrons/barions/src/G4LambdacPlus.cc b/source/particles/hadrons/barions/src/G4LambdacPlus.cc index 673d84944c..ca52d90d54 100644 --- a/source/particles/hadrons/barions/src/G4LambdacPlus.cc +++ b/source/particles/hadrons/barions/src/G4LambdacPlus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LambdacPlus.cc,v 1.3.6.1.2.2 1999/12/14 07:08:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LambdacPlus.cc,v 1.5 2000/02/27 06:17:04 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -47,6 +47,7 @@ G4LambdacPlus::G4LambdacPlus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("lambda_c"); } // ...................................................................... diff --git a/source/particles/hadrons/barions/src/G4Neutron.cc b/source/particles/hadrons/barions/src/G4Neutron.cc index aa385f82fa..ec0fc8853c 100644 --- a/source/particles/hadrons/barions/src/G4Neutron.cc +++ b/source/particles/hadrons/barions/src/G4Neutron.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Neutron.cc,v 1.2.6.1.2.2 1999/12/14 07:08:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Neutron.cc,v 1.4 2000/02/27 06:17:04 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -41,6 +41,7 @@ G4Neutron::G4Neutron( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("nucleon"); } // ...................................................................... diff --git a/source/particles/hadrons/barions/src/G4OmegaMinus.cc b/source/particles/hadrons/barions/src/G4OmegaMinus.cc index a2f8171fbe..b3438bedbf 100644 --- a/source/particles/hadrons/barions/src/G4OmegaMinus.cc +++ b/source/particles/hadrons/barions/src/G4OmegaMinus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4OmegaMinus.cc,v 1.3.6.1.2.2 1999/12/14 07:08:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4OmegaMinus.cc,v 1.5 2000/02/27 06:17:04 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -46,6 +46,7 @@ G4OmegaMinus::G4OmegaMinus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("omega"); //create Decay Table G4DecayTable* table = GetDecayTable(); if (table!=NULL) delete table; diff --git a/source/particles/hadrons/barions/src/G4OmegacZero.cc b/source/particles/hadrons/barions/src/G4OmegacZero.cc index e8a2892868..8a47b6bf1e 100644 --- a/source/particles/hadrons/barions/src/G4OmegacZero.cc +++ b/source/particles/hadrons/barions/src/G4OmegacZero.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4OmegacZero.cc,v 1.3.6.1.2.2 1999/12/14 07:08:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4OmegacZero.cc,v 1.5 2000/02/27 06:17:04 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -47,6 +47,7 @@ G4OmegacZero::G4OmegacZero( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("omega_c"); } // ...................................................................... diff --git a/source/particles/hadrons/barions/src/G4Proton.cc b/source/particles/hadrons/barions/src/G4Proton.cc index 05b475d179..086038ea7c 100644 --- a/source/particles/hadrons/barions/src/G4Proton.cc +++ b/source/particles/hadrons/barions/src/G4Proton.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Proton.cc,v 1.2.6.1.2.2 1999/12/14 07:08:03 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Proton.cc,v 1.4 2000/02/27 06:17:05 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -45,6 +45,7 @@ G4Proton::G4Proton( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("nucleon"); } // ...................................................................... diff --git a/source/particles/hadrons/barions/src/G4SigmaMinus.cc b/source/particles/hadrons/barions/src/G4SigmaMinus.cc index 6c421d1f9a..9b24549653 100644 --- a/source/particles/hadrons/barions/src/G4SigmaMinus.cc +++ b/source/particles/hadrons/barions/src/G4SigmaMinus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4SigmaMinus.cc,v 1.3.6.1.2.2 1999/12/14 07:08:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4SigmaMinus.cc,v 1.5 2000/02/27 06:17:05 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -46,6 +46,7 @@ G4SigmaMinus::G4SigmaMinus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("sigma"); //create Decay Table G4DecayTable* table = GetDecayTable(); if (table!=NULL) delete table; diff --git a/source/particles/hadrons/barions/src/G4SigmaPlus.cc b/source/particles/hadrons/barions/src/G4SigmaPlus.cc index bcb61b40fc..ce1cf65a2b 100644 --- a/source/particles/hadrons/barions/src/G4SigmaPlus.cc +++ b/source/particles/hadrons/barions/src/G4SigmaPlus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4SigmaPlus.cc,v 1.3.6.1.2.2 1999/12/14 07:08:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4SigmaPlus.cc,v 1.5 2000/02/27 06:17:05 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -46,6 +46,7 @@ G4SigmaPlus::G4SigmaPlus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("sigma"); //create Decay Table G4DecayTable* table = GetDecayTable(); if (table!=NULL) delete table; diff --git a/source/particles/hadrons/barions/src/G4SigmaZero.cc b/source/particles/hadrons/barions/src/G4SigmaZero.cc index bd509cb917..c105654f38 100644 --- a/source/particles/hadrons/barions/src/G4SigmaZero.cc +++ b/source/particles/hadrons/barions/src/G4SigmaZero.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4SigmaZero.cc,v 1.3.6.1.2.2 1999/12/14 07:08:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4SigmaZero.cc,v 1.5 2000/02/27 06:17:05 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -45,6 +45,7 @@ G4SigmaZero::G4SigmaZero( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("sigma"); //create Decay Table G4DecayTable* table = GetDecayTable(); if (table!=NULL) delete table; diff --git a/source/particles/hadrons/barions/src/G4SigmacPlus.cc b/source/particles/hadrons/barions/src/G4SigmacPlus.cc index b4c08abd6c..6c4ff7c168 100644 --- a/source/particles/hadrons/barions/src/G4SigmacPlus.cc +++ b/source/particles/hadrons/barions/src/G4SigmacPlus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4SigmacPlus.cc,v 1.2.6.1.2.2 1999/12/14 07:08:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4SigmacPlus.cc,v 1.4 2000/02/27 06:17:05 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -47,6 +47,7 @@ G4SigmacPlus::G4SigmacPlus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("sigma_c"); //create Decay Table G4DecayTable* table = GetDecayTable(); if (table!=NULL) delete table; diff --git a/source/particles/hadrons/barions/src/G4SigmacPlusPlus.cc b/source/particles/hadrons/barions/src/G4SigmacPlusPlus.cc index 5e40fc2a29..bac1e7d720 100644 --- a/source/particles/hadrons/barions/src/G4SigmacPlusPlus.cc +++ b/source/particles/hadrons/barions/src/G4SigmacPlusPlus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4SigmacPlusPlus.cc,v 1.2.6.1.2.2 1999/12/14 07:08:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4SigmacPlusPlus.cc,v 1.4 2000/02/27 06:17:05 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -47,6 +47,7 @@ G4SigmacPlusPlus::G4SigmacPlusPlus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("sigma_c"); //create Decay Table G4DecayTable* table = GetDecayTable(); if (table!=NULL) delete table; diff --git a/source/particles/hadrons/barions/src/G4SigmacZero.cc b/source/particles/hadrons/barions/src/G4SigmacZero.cc index dbd690e9aa..bb002afcf1 100644 --- a/source/particles/hadrons/barions/src/G4SigmacZero.cc +++ b/source/particles/hadrons/barions/src/G4SigmacZero.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4SigmacZero.cc,v 1.2.6.1.2.2 1999/12/14 07:08:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4SigmacZero.cc,v 1.4 2000/02/27 06:17:05 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -47,7 +47,8 @@ G4SigmacZero::G4SigmacZero( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { -//create Decay Table + SetParticleSubType("sigma_c"); + //create Decay Table G4DecayTable* table = GetDecayTable(); if (table!=NULL) delete table; table = new G4DecayTable(); diff --git a/source/particles/hadrons/barions/src/G4VBaryon.cc b/source/particles/hadrons/barions/src/G4VBaryon.cc index ed2893c62f..f3892d5f0e 100644 --- a/source/particles/hadrons/barions/src/G4VBaryon.cc +++ b/source/particles/hadrons/barions/src/G4VBaryon.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VBaryon.cc,v 1.1.6.1 1999/12/07 20:49:33 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VBaryon.cc,v 1.2 1999/12/15 14:51:00 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4XiMinus.cc b/source/particles/hadrons/barions/src/G4XiMinus.cc index fd200d41e4..ce1e6bb532 100644 --- a/source/particles/hadrons/barions/src/G4XiMinus.cc +++ b/source/particles/hadrons/barions/src/G4XiMinus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4XiMinus.cc,v 1.3.6.1.2.2 1999/12/14 07:08:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4XiMinus.cc,v 1.5 2000/02/27 06:17:05 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -46,6 +46,7 @@ G4XiMinus::G4XiMinus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("xi"); //create Decay Table G4DecayTable* table = GetDecayTable(); if (table!=NULL) delete table; diff --git a/source/particles/hadrons/barions/src/G4XiZero.cc b/source/particles/hadrons/barions/src/G4XiZero.cc index bc4fb89405..bf71d90d46 100644 --- a/source/particles/hadrons/barions/src/G4XiZero.cc +++ b/source/particles/hadrons/barions/src/G4XiZero.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4XiZero.cc,v 1.3.6.1.2.2 1999/12/14 07:08:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4XiZero.cc,v 1.5 2000/02/27 06:17:05 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -46,6 +46,7 @@ G4XiZero::G4XiZero( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("xi"); //create Decay Table G4DecayTable* table = GetDecayTable(); if (table!=NULL) delete table; diff --git a/source/particles/hadrons/barions/src/G4XicPlus.cc b/source/particles/hadrons/barions/src/G4XicPlus.cc index 88acca8bff..bb8fba567c 100644 --- a/source/particles/hadrons/barions/src/G4XicPlus.cc +++ b/source/particles/hadrons/barions/src/G4XicPlus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4XicPlus.cc,v 1.3.6.1.2.2 1999/12/14 07:08:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4XicPlus.cc,v 1.5 2000/02/27 06:17:05 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -48,6 +48,7 @@ G4XicPlus::G4XicPlus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("xi_c"); } // ...................................................................... diff --git a/source/particles/hadrons/barions/src/G4XicZero.cc b/source/particles/hadrons/barions/src/G4XicZero.cc index 57dfcfaa24..521d6bc69b 100644 --- a/source/particles/hadrons/barions/src/G4XicZero.cc +++ b/source/particles/hadrons/barions/src/G4XicZero.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4XicZero.cc,v 1.3.6.1.2.2 1999/12/14 07:08:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4XicZero.cc,v 1.5 2000/02/27 06:17:06 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -48,6 +48,7 @@ G4XicZero::G4XicZero( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("xi_c"); } // ...................................................................... diff --git a/source/particles/hadrons/ions/include/G4Alpha.hh b/source/particles/hadrons/ions/include/G4Alpha.hh index bdbb22808b..48843a53f4 100644 --- a/source/particles/hadrons/ions/include/G4Alpha.hh +++ b/source/particles/hadrons/ions/include/G4Alpha.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Alpha.hh,v 1.2.8.1 1999/12/07 20:49:34 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Alpha.hh,v 1.3 1999/12/15 14:51:01 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/ions/include/G4Deuteron.hh b/source/particles/hadrons/ions/include/G4Deuteron.hh index 9e5ccf4794..0698fd734e 100644 --- a/source/particles/hadrons/ions/include/G4Deuteron.hh +++ b/source/particles/hadrons/ions/include/G4Deuteron.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Deuteron.hh,v 1.2.8.1 1999/12/07 20:49:34 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Deuteron.hh,v 1.3 1999/12/15 14:51:01 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/ions/include/G4GenericIon.hh b/source/particles/hadrons/ions/include/G4GenericIon.hh index ee112cf004..c632659c53 100644 --- a/source/particles/hadrons/ions/include/G4GenericIon.hh +++ b/source/particles/hadrons/ions/include/G4GenericIon.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4GenericIon.hh,v 1.2.8.1 1999/12/07 20:49:34 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4GenericIon.hh,v 1.3 1999/12/15 14:51:01 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/ions/include/G4He3.hh b/source/particles/hadrons/ions/include/G4He3.hh index e4959944df..253507978c 100644 --- a/source/particles/hadrons/ions/include/G4He3.hh +++ b/source/particles/hadrons/ions/include/G4He3.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4He3.hh,v 1.2.8.1 1999/12/07 20:49:34 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4He3.hh,v 1.3 1999/12/15 14:51:01 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/ions/include/G4IonConstructor.hh b/source/particles/hadrons/ions/include/G4IonConstructor.hh index 5a1b9490c3..5f2864c1b2 100644 --- a/source/particles/hadrons/ions/include/G4IonConstructor.hh +++ b/source/particles/hadrons/ions/include/G4IonConstructor.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IonConstructor.hh,v 1.1.10.1 1999/12/07 20:49:34 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IonConstructor.hh,v 1.2 1999/12/15 14:51:01 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/hadrons/ions/include/G4Triton.hh b/source/particles/hadrons/ions/include/G4Triton.hh index 8099e10bc1..c852dc538d 100644 --- a/source/particles/hadrons/ions/include/G4Triton.hh +++ b/source/particles/hadrons/ions/include/G4Triton.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Triton.hh,v 1.2.8.1 1999/12/07 20:49:35 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Triton.hh,v 1.3 1999/12/15 14:51:02 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/ions/include/G4VIon.hh b/source/particles/hadrons/ions/include/G4VIon.hh index c9eb4ff227..0e9d901868 100644 --- a/source/particles/hadrons/ions/include/G4VIon.hh +++ b/source/particles/hadrons/ions/include/G4VIon.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VIon.hh,v 1.1.10.1 1999/12/07 20:49:35 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VIon.hh,v 1.3 2000/02/25 07:37:15 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -67,6 +67,26 @@ class G4VIon : public G4ParticleWithCuts virtual ~G4VIon() {}; + public: //With Description + G4int GetAtomicNumber() const; + G4int GetAtomicMass() const; + + G4double GetExcitationEnergy() const {return 0.;} + void SetExcitationEnergy(G4double ){} + // These two methods are dummy because all particles derived from + // G4VIon is "groud state" nuclei + }; +inline + G4int G4VIon::GetAtomicNumber() const +{ + return int(GetPDGCharge()/eplus); +} + +inline + G4int G4VIon::GetAtomicMass() const +{ + return GetBaryonNumber(); +} #endif diff --git a/source/particles/hadrons/ions/src/G4Alpha.cc b/source/particles/hadrons/ions/src/G4Alpha.cc index 52b8f7dde5..7ac59c21b6 100644 --- a/source/particles/hadrons/ions/src/G4Alpha.cc +++ b/source/particles/hadrons/ions/src/G4Alpha.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Alpha.cc,v 1.2.8.1.2.2 1999/12/14 07:08:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Alpha.cc,v 1.3 1999/12/15 14:51:02 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/ions/src/G4Deuteron.cc b/source/particles/hadrons/ions/src/G4Deuteron.cc index c24bd15aec..5c3a936b05 100644 --- a/source/particles/hadrons/ions/src/G4Deuteron.cc +++ b/source/particles/hadrons/ions/src/G4Deuteron.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Deuteron.cc,v 1.2.8.1.2.2 1999/12/14 07:08:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Deuteron.cc,v 1.3 1999/12/15 14:51:02 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/ions/src/G4GenericIon.cc b/source/particles/hadrons/ions/src/G4GenericIon.cc index c11131b7eb..acaf0cb4c5 100644 --- a/source/particles/hadrons/ions/src/G4GenericIon.cc +++ b/source/particles/hadrons/ions/src/G4GenericIon.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4GenericIon.cc,v 1.2.8.1.2.2 1999/12/14 07:08:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4GenericIon.cc,v 1.3 1999/12/15 14:51:02 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/ions/src/G4He3.cc b/source/particles/hadrons/ions/src/G4He3.cc index acf26713d4..2099b8f497 100644 --- a/source/particles/hadrons/ions/src/G4He3.cc +++ b/source/particles/hadrons/ions/src/G4He3.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4He3.cc,v 1.2.8.1.2.2 1999/12/14 07:08:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4He3.cc,v 1.3 1999/12/15 14:51:02 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/ions/src/G4IonConstructor.cc b/source/particles/hadrons/ions/src/G4IonConstructor.cc index c0d516f358..91dc42dbdd 100644 --- a/source/particles/hadrons/ions/src/G4IonConstructor.cc +++ b/source/particles/hadrons/ions/src/G4IonConstructor.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IonConstructor.cc,v 1.1.10.1 1999/12/07 20:49:36 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IonConstructor.cc,v 1.2 1999/12/15 14:51:02 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/hadrons/ions/src/G4Triton.cc b/source/particles/hadrons/ions/src/G4Triton.cc index da2cac18ac..6bb031a378 100644 --- a/source/particles/hadrons/ions/src/G4Triton.cc +++ b/source/particles/hadrons/ions/src/G4Triton.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Triton.cc,v 1.2.8.1.2.2 1999/12/14 07:08:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Triton.cc,v 1.3 1999/12/15 14:51:02 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/ions/src/G4VIon.cc b/source/particles/hadrons/ions/src/G4VIon.cc index 284c4b2c12..482de37323 100644 --- a/source/particles/hadrons/ions/src/G4VIon.cc +++ b/source/particles/hadrons/ions/src/G4VIon.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VIon.cc,v 1.1.10.1 1999/12/07 20:49:36 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VIon.cc,v 1.2 1999/12/15 14:51:02 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/include/G4AntiBMesonZero.hh b/source/particles/hadrons/mesons/include/G4AntiBMesonZero.hh index df6166d780..1a7bfb8ff5 100644 --- a/source/particles/hadrons/mesons/include/G4AntiBMesonZero.hh +++ b/source/particles/hadrons/mesons/include/G4AntiBMesonZero.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiBMesonZero.hh,v 1.2.8.1 1999/12/07 20:49:37 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiBMesonZero.hh,v 1.3 1999/12/15 14:51:02 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4AntiBsMesonZero.hh b/source/particles/hadrons/mesons/include/G4AntiBsMesonZero.hh index 3e6818fb5c..389898ee54 100644 --- a/source/particles/hadrons/mesons/include/G4AntiBsMesonZero.hh +++ b/source/particles/hadrons/mesons/include/G4AntiBsMesonZero.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiBsMesonZero.hh,v 1.2.8.1 1999/12/07 20:49:37 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiBsMesonZero.hh,v 1.3 1999/12/15 14:51:03 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4AntiDMesonZero.hh b/source/particles/hadrons/mesons/include/G4AntiDMesonZero.hh index 4410f47085..fb24501ebf 100644 --- a/source/particles/hadrons/mesons/include/G4AntiDMesonZero.hh +++ b/source/particles/hadrons/mesons/include/G4AntiDMesonZero.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiDMesonZero.hh,v 1.2.8.1 1999/12/07 20:49:37 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiDMesonZero.hh,v 1.3 1999/12/15 14:51:03 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4AntiKaonZero.hh b/source/particles/hadrons/mesons/include/G4AntiKaonZero.hh index d4942f4e35..e17afb6081 100644 --- a/source/particles/hadrons/mesons/include/G4AntiKaonZero.hh +++ b/source/particles/hadrons/mesons/include/G4AntiKaonZero.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiKaonZero.hh,v 1.2.8.1 1999/12/07 20:49:37 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiKaonZero.hh,v 1.3 1999/12/15 14:51:03 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4BMesonMinus.hh b/source/particles/hadrons/mesons/include/G4BMesonMinus.hh index d7ff7f2051..f122282766 100644 --- a/source/particles/hadrons/mesons/include/G4BMesonMinus.hh +++ b/source/particles/hadrons/mesons/include/G4BMesonMinus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4BMesonMinus.hh,v 1.2.8.1 1999/12/07 20:49:37 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4BMesonMinus.hh,v 1.3 1999/12/15 14:51:03 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4BMesonPlus.hh b/source/particles/hadrons/mesons/include/G4BMesonPlus.hh index 56b1017532..c6b09aebd0 100644 --- a/source/particles/hadrons/mesons/include/G4BMesonPlus.hh +++ b/source/particles/hadrons/mesons/include/G4BMesonPlus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4BMesonPlus.hh,v 1.2.8.1 1999/12/07 20:49:37 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4BMesonPlus.hh,v 1.3 1999/12/15 14:51:03 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4BMesonZero.hh b/source/particles/hadrons/mesons/include/G4BMesonZero.hh index 9069dc894f..aa1aece374 100644 --- a/source/particles/hadrons/mesons/include/G4BMesonZero.hh +++ b/source/particles/hadrons/mesons/include/G4BMesonZero.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4BMesonZero.hh,v 1.2.8.1 1999/12/07 20:49:37 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4BMesonZero.hh,v 1.3 1999/12/15 14:51:03 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4BsMesonZero.hh b/source/particles/hadrons/mesons/include/G4BsMesonZero.hh index 973e1a1faf..2dd879999d 100644 --- a/source/particles/hadrons/mesons/include/G4BsMesonZero.hh +++ b/source/particles/hadrons/mesons/include/G4BsMesonZero.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4BsMesonZero.hh,v 1.2.8.1 1999/12/07 20:49:38 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4BsMesonZero.hh,v 1.3 1999/12/15 14:51:03 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4DMesonMinus.hh b/source/particles/hadrons/mesons/include/G4DMesonMinus.hh index 79b855ee1e..53a0d3db25 100644 --- a/source/particles/hadrons/mesons/include/G4DMesonMinus.hh +++ b/source/particles/hadrons/mesons/include/G4DMesonMinus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DMesonMinus.hh,v 1.2.8.1 1999/12/07 20:49:38 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DMesonMinus.hh,v 1.3 1999/12/15 14:51:03 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4DMesonPlus.hh b/source/particles/hadrons/mesons/include/G4DMesonPlus.hh index 2b6a98299a..cd8f124d57 100644 --- a/source/particles/hadrons/mesons/include/G4DMesonPlus.hh +++ b/source/particles/hadrons/mesons/include/G4DMesonPlus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DMesonPlus.hh,v 1.2.8.1 1999/12/07 20:49:39 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DMesonPlus.hh,v 1.3 1999/12/15 14:51:03 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4DMesonZero.hh b/source/particles/hadrons/mesons/include/G4DMesonZero.hh index d3130aa40d..cb7a3a6b92 100644 --- a/source/particles/hadrons/mesons/include/G4DMesonZero.hh +++ b/source/particles/hadrons/mesons/include/G4DMesonZero.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DMesonZero.hh,v 1.2.8.1 1999/12/07 20:49:39 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DMesonZero.hh,v 1.3 1999/12/15 14:51:04 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4DsMesonMinus.hh b/source/particles/hadrons/mesons/include/G4DsMesonMinus.hh index 3611a0f3f4..3d6ac480fb 100644 --- a/source/particles/hadrons/mesons/include/G4DsMesonMinus.hh +++ b/source/particles/hadrons/mesons/include/G4DsMesonMinus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DsMesonMinus.hh,v 1.2.8.1 1999/12/07 20:49:39 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DsMesonMinus.hh,v 1.3 1999/12/15 14:51:04 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4DsMesonPlus.hh b/source/particles/hadrons/mesons/include/G4DsMesonPlus.hh index b1223896af..f4e248e71c 100644 --- a/source/particles/hadrons/mesons/include/G4DsMesonPlus.hh +++ b/source/particles/hadrons/mesons/include/G4DsMesonPlus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DsMesonPlus.hh,v 1.2.8.1 1999/12/07 20:49:39 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DsMesonPlus.hh,v 1.3 1999/12/15 14:51:04 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4Eta.hh b/source/particles/hadrons/mesons/include/G4Eta.hh index 5f12aca56d..924580265f 100644 --- a/source/particles/hadrons/mesons/include/G4Eta.hh +++ b/source/particles/hadrons/mesons/include/G4Eta.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Eta.hh,v 1.2.8.1 1999/12/07 20:49:39 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Eta.hh,v 1.3 1999/12/15 14:51:04 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4EtaPrime.hh b/source/particles/hadrons/mesons/include/G4EtaPrime.hh index 5d3de19a63..8f1a26c5c9 100644 --- a/source/particles/hadrons/mesons/include/G4EtaPrime.hh +++ b/source/particles/hadrons/mesons/include/G4EtaPrime.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4EtaPrime.hh,v 1.2.8.1 1999/12/07 20:49:40 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4EtaPrime.hh,v 1.3 1999/12/15 14:51:04 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4JPsi.hh b/source/particles/hadrons/mesons/include/G4JPsi.hh index b192fe8ee7..84d95afcf0 100644 --- a/source/particles/hadrons/mesons/include/G4JPsi.hh +++ b/source/particles/hadrons/mesons/include/G4JPsi.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4JPsi.hh,v 1.2.8.1 1999/12/07 20:49:40 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4JPsi.hh,v 1.3 1999/12/15 14:51:04 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4KaonMinus.hh b/source/particles/hadrons/mesons/include/G4KaonMinus.hh index 39e39b0960..7a9d672815 100644 --- a/source/particles/hadrons/mesons/include/G4KaonMinus.hh +++ b/source/particles/hadrons/mesons/include/G4KaonMinus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4KaonMinus.hh,v 1.2.8.1 1999/12/07 20:49:40 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4KaonMinus.hh,v 1.3 1999/12/15 14:51:04 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4KaonPlus.hh b/source/particles/hadrons/mesons/include/G4KaonPlus.hh index 8bc89de6ac..26127a09b5 100644 --- a/source/particles/hadrons/mesons/include/G4KaonPlus.hh +++ b/source/particles/hadrons/mesons/include/G4KaonPlus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4KaonPlus.hh,v 1.2.8.1 1999/12/07 20:49:40 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4KaonPlus.hh,v 1.3 1999/12/15 14:51:04 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4KaonZero.hh b/source/particles/hadrons/mesons/include/G4KaonZero.hh index ed47850406..6816238dbf 100644 --- a/source/particles/hadrons/mesons/include/G4KaonZero.hh +++ b/source/particles/hadrons/mesons/include/G4KaonZero.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4KaonZero.hh,v 1.2.8.1 1999/12/07 20:49:40 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4KaonZero.hh,v 1.3 1999/12/15 14:51:04 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4KaonZeroLong.hh b/source/particles/hadrons/mesons/include/G4KaonZeroLong.hh index a2324852b8..7e0e096e13 100644 --- a/source/particles/hadrons/mesons/include/G4KaonZeroLong.hh +++ b/source/particles/hadrons/mesons/include/G4KaonZeroLong.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4KaonZeroLong.hh,v 1.2.8.1 1999/12/07 20:49:40 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4KaonZeroLong.hh,v 1.3 1999/12/15 14:51:04 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4KaonZeroShort.hh b/source/particles/hadrons/mesons/include/G4KaonZeroShort.hh index ae7d6c7d2b..01b0cb9cc5 100644 --- a/source/particles/hadrons/mesons/include/G4KaonZeroShort.hh +++ b/source/particles/hadrons/mesons/include/G4KaonZeroShort.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4KaonZeroShort.hh,v 1.2.8.1 1999/12/07 20:49:40 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4KaonZeroShort.hh,v 1.3 1999/12/15 14:51:04 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4MesonConstructor.hh b/source/particles/hadrons/mesons/include/G4MesonConstructor.hh index c25aca73da..b27899c1da 100644 --- a/source/particles/hadrons/mesons/include/G4MesonConstructor.hh +++ b/source/particles/hadrons/mesons/include/G4MesonConstructor.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MesonConstructor.hh,v 1.1.10.1 1999/12/07 20:49:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MesonConstructor.hh,v 1.2 1999/12/15 14:51:04 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/include/G4PionMinus.hh b/source/particles/hadrons/mesons/include/G4PionMinus.hh index c724107955..24960f9ba0 100644 --- a/source/particles/hadrons/mesons/include/G4PionMinus.hh +++ b/source/particles/hadrons/mesons/include/G4PionMinus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PionMinus.hh,v 1.2.8.1 1999/12/07 20:49:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PionMinus.hh,v 1.3 1999/12/15 14:51:04 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4PionPlus.hh b/source/particles/hadrons/mesons/include/G4PionPlus.hh index 667e6469f8..66d3efe161 100644 --- a/source/particles/hadrons/mesons/include/G4PionPlus.hh +++ b/source/particles/hadrons/mesons/include/G4PionPlus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PionPlus.hh,v 1.2.8.1 1999/12/07 20:49:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PionPlus.hh,v 1.3 1999/12/15 14:51:04 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4PionZero.hh b/source/particles/hadrons/mesons/include/G4PionZero.hh index 9861457fc4..2cca4eb521 100644 --- a/source/particles/hadrons/mesons/include/G4PionZero.hh +++ b/source/particles/hadrons/mesons/include/G4PionZero.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PionZero.hh,v 1.2.8.1 1999/12/07 20:49:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PionZero.hh,v 1.3 1999/12/15 14:51:04 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4RhoMinus.hh b/source/particles/hadrons/mesons/include/G4RhoMinus.hh deleted file mode 100644 index 45542b7714..0000000000 --- a/source/particles/hadrons/mesons/include/G4RhoMinus.hh +++ /dev/null @@ -1,81 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4RhoMinus.hh,v 1.2.8.1 1999/12/07 20:49:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// For information related to this code contact: -// CERN, CN Division, ASD group -// History: first implementation, Hisaya Kurashige, 8 June 1998 -// ********************************************************************** -// Change both methods to get the pointer into non-inlined H.Kurashige 4 Aug. 1998 -// ------------------------------------------------------------ - -// Each class inheriting from G4VMeson -// corresponds to a particle type; one and only one -// instance for each class is guaranteed. - -#ifndef G4RhoMinus_h -#define G4RhoMinus_h 1 - -#include "globals.hh" -#include "G4ios.hh" -#include "G4VMeson.hh" - -// ###################################################################### -// ### RhoMinus ### -// ###################################################################### - -class G4RhoMinus : public G4VMeson -{ - private: - static G4RhoMinus theRhoMinus; - static G4double theRhoMinusLengthCut; - static G4double* theRhoMinusKineticEnergyCuts; - - private: // constructors are hide as private - G4RhoMinus( - const G4String& aName, G4double mass, - G4double width, G4double charge, - G4int iSpin, G4int iParity, - G4int iConjugation, G4int iIsospin, - G4int iIsospin3, G4int gParity, - const G4String& pType, G4int lepton, - G4int baryon, G4int encoding, - G4bool stable, G4double lifetime, - G4DecayTable *decaytable - ); - - public: - virtual ~G4RhoMinus(){} - - static G4RhoMinus* RhoMinusDefinition(); - static G4RhoMinus* RhoMinus(); - static G4double GetCuts() {return theRhoMinusLengthCut;} - static G4double* GetCutsInEnergy() {return theRhoMinusKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); -}; - -inline void G4RhoMinus::SetCuts(G4double aCut) -{ - G4ParticleWithCuts::SetCuts(aCut); - theRhoMinusLengthCut = theCutInMaxInteractionLength; - theRhoMinusKineticEnergyCuts = theKineticEnergyCuts; -} - - -#endif - - - - - diff --git a/source/particles/hadrons/mesons/include/G4RhoPlus.hh b/source/particles/hadrons/mesons/include/G4RhoPlus.hh deleted file mode 100644 index 9df1a3a8e4..0000000000 --- a/source/particles/hadrons/mesons/include/G4RhoPlus.hh +++ /dev/null @@ -1,81 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4RhoPlus.hh,v 1.2.8.1 1999/12/07 20:49:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// For information related to this code contact: -// CERN, CN Division, ASD group -// History: first implementation, Hisaya Kurashige, 8 June 1998 -// ********************************************************************** -// Change both methods to get the pointer into non-inlined H.Kurashige 4 Aug. 1998 -// ------------------------------------------------------------ - -// Each class inheriting from G4VMeson -// corresponds to a particle type; one and only one -// instance for each class is guaranteed. - -#ifndef G4RhoPlus_h -#define G4RhoPlus_h 1 - -#include "globals.hh" -#include "G4ios.hh" -#include "G4VMeson.hh" - -// ###################################################################### -// ### RhoPlus ### -// ###################################################################### - -class G4RhoPlus : public G4VMeson -{ - private: - static G4RhoPlus theRhoPlus; - static G4double theRhoPlusLengthCut; - static G4double* theRhoPlusKineticEnergyCuts; - - private: // constructors are hide as private - G4RhoPlus( - const G4String& aName, G4double mass, - G4double width, G4double charge, - G4int iSpin, G4int iParity, - G4int iConjugation, G4int iIsospin, - G4int iIsospin3, G4int gParity, - const G4String& pType, G4int lepton, - G4int baryon, G4int encoding, - G4bool stable, G4double lifetime, - G4DecayTable *decaytable - ); - - public: - virtual ~G4RhoPlus(){} - - static G4RhoPlus* RhoPlusDefinition(); - static G4RhoPlus* RhoPlus(); - static G4double GetCuts() {return theRhoPlusLengthCut;} - static G4double* GetCutsInEnergy() {return theRhoPlusKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); -}; - -inline void G4RhoPlus::SetCuts(G4double aCut) -{ - G4ParticleWithCuts::SetCuts(aCut); - theRhoPlusLengthCut = theCutInMaxInteractionLength; - theRhoPlusKineticEnergyCuts = theKineticEnergyCuts; -} - - -#endif - - - - - diff --git a/source/particles/hadrons/mesons/include/G4RhoZero.hh b/source/particles/hadrons/mesons/include/G4RhoZero.hh deleted file mode 100644 index c42aa8139e..0000000000 --- a/source/particles/hadrons/mesons/include/G4RhoZero.hh +++ /dev/null @@ -1,73 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4RhoZero.hh,v 1.2.8.1 1999/12/07 20:49:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// For information related to this code contact: -// CERN, CN Division, ASD group -// History: first implementation, Hisaya Kurashige, 8 June 1998 -// ********************************************************************** -// Change both methods to get the pointer into non-inlined H.Kurashige 4 Aug. 1998 -// ------------------------------------------------------------ - -// Each class inheriting from G4VMeson -// corresponds to a particle type; one and only one -// instance for each class is guaranteed. - -#ifndef G4RhoZero_h -#define G4RhoZero_h 1 - -#include "globals.hh" -#include "G4ios.hh" -#include "G4VMeson.hh" - -// ###################################################################### -// ### RhoZero ### -// ###################################################################### - -class G4RhoZero : public G4VMeson -{ - private: - static G4RhoZero theRhoZero; - static G4double theRhoZeroLengthCut; - static G4double* theRhoZeroKineticEnergyCuts; - - private: // constructors are hide as private - G4RhoZero( - const G4String& aName, G4double mass, - G4double width, G4double charge, - G4int iSpin, G4int iParity, - G4int iConjugation, G4int iIsospin, - G4int iIsospin3, G4int gParity, - const G4String& pType, G4int lepton, - G4int baryon, G4int encoding, - G4bool stable, G4double lifetime, - G4DecayTable *decaytable - ); - - public: - virtual ~G4RhoZero(){} - - static G4RhoZero* RhoZeroDefinition(); - static G4RhoZero* RhoZero(); - static G4double GetCuts() {return theRhoZeroLengthCut;} - static G4double* GetCutsInEnergy() {return theRhoZeroKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); -}; - -#endif - - - - - diff --git a/source/particles/hadrons/mesons/include/G4VMeson.hh b/source/particles/hadrons/mesons/include/G4VMeson.hh index aa140937e9..73b7cd5bee 100644 --- a/source/particles/hadrons/mesons/include/G4VMeson.hh +++ b/source/particles/hadrons/mesons/include/G4VMeson.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VMeson.hh,v 1.1.10.1 1999/12/07 20:49:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VMeson.hh,v 1.2 1999/12/15 14:51:05 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/src/G4AntiBMesonZero.cc b/source/particles/hadrons/mesons/src/G4AntiBMesonZero.cc index 68c5c150a6..1ff1abd6d9 100644 --- a/source/particles/hadrons/mesons/src/G4AntiBMesonZero.cc +++ b/source/particles/hadrons/mesons/src/G4AntiBMesonZero.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiBMesonZero.cc,v 1.2.8.1.2.2 1999/12/14 07:08:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiBMesonZero.cc,v 1.4 2000/02/27 05:56:30 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -45,6 +45,7 @@ G4AntiBMesonZero::G4AntiBMesonZero( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("B"); } // ...................................................................... diff --git a/source/particles/hadrons/mesons/src/G4AntiBsMesonZero.cc b/source/particles/hadrons/mesons/src/G4AntiBsMesonZero.cc index e5d225abe8..393455d9e6 100644 --- a/source/particles/hadrons/mesons/src/G4AntiBsMesonZero.cc +++ b/source/particles/hadrons/mesons/src/G4AntiBsMesonZero.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiBsMesonZero.cc,v 1.2.8.1.2.2 1999/12/14 07:08:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiBsMesonZero.cc,v 1.4 2000/02/27 05:57:38 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -45,6 +45,7 @@ G4AntiBsMesonZero::G4AntiBsMesonZero( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("Bs"); } // ...................................................................... diff --git a/source/particles/hadrons/mesons/src/G4AntiDMesonZero.cc b/source/particles/hadrons/mesons/src/G4AntiDMesonZero.cc index 3e8d09fdfe..6e58e00ed5 100644 --- a/source/particles/hadrons/mesons/src/G4AntiDMesonZero.cc +++ b/source/particles/hadrons/mesons/src/G4AntiDMesonZero.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiDMesonZero.cc,v 1.2.8.1.2.2 1999/12/14 07:08:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiDMesonZero.cc,v 1.4 2000/02/27 05:57:40 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -45,6 +45,7 @@ G4AntiDMesonZero::G4AntiDMesonZero( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("D"); } // ...................................................................... diff --git a/source/particles/hadrons/mesons/src/G4AntiKaonZero.cc b/source/particles/hadrons/mesons/src/G4AntiKaonZero.cc index 8ca491db50..6e63fff872 100644 --- a/source/particles/hadrons/mesons/src/G4AntiKaonZero.cc +++ b/source/particles/hadrons/mesons/src/G4AntiKaonZero.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiKaonZero.cc,v 1.1.10.1.2.2 1999/12/14 07:08:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiKaonZero.cc,v 1.3 2000/02/27 05:57:41 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -45,6 +45,7 @@ G4AntiKaonZero::G4AntiKaonZero( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("kaon"); //create Decay Table G4DecayTable* table = GetDecayTable(); if (table!=NULL) delete table; diff --git a/source/particles/hadrons/mesons/src/G4BMesonMinus.cc b/source/particles/hadrons/mesons/src/G4BMesonMinus.cc index 2144045cec..3145ee2d41 100644 --- a/source/particles/hadrons/mesons/src/G4BMesonMinus.cc +++ b/source/particles/hadrons/mesons/src/G4BMesonMinus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4BMesonMinus.cc,v 1.2.8.1.2.2 1999/12/14 07:08:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4BMesonMinus.cc,v 1.4 2000/02/27 05:57:42 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -45,6 +45,7 @@ G4BMesonMinus::G4BMesonMinus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("B"); } // ...................................................................... diff --git a/source/particles/hadrons/mesons/src/G4BMesonPlus.cc b/source/particles/hadrons/mesons/src/G4BMesonPlus.cc index 25deb9ba61..8f4b6b0270 100644 --- a/source/particles/hadrons/mesons/src/G4BMesonPlus.cc +++ b/source/particles/hadrons/mesons/src/G4BMesonPlus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4BMesonPlus.cc,v 1.2.8.1.2.2 1999/12/14 07:08:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4BMesonPlus.cc,v 1.4 2000/02/27 05:57:42 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -45,6 +45,7 @@ G4BMesonPlus::G4BMesonPlus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("B"); } // ...................................................................... diff --git a/source/particles/hadrons/mesons/src/G4BMesonZero.cc b/source/particles/hadrons/mesons/src/G4BMesonZero.cc index 4165ade3d6..de5f8e884f 100644 --- a/source/particles/hadrons/mesons/src/G4BMesonZero.cc +++ b/source/particles/hadrons/mesons/src/G4BMesonZero.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4BMesonZero.cc,v 1.2.8.1.2.2 1999/12/14 07:08:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4BMesonZero.cc,v 1.4 2000/02/27 05:57:42 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -46,6 +46,7 @@ G4BMesonZero::G4BMesonZero( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("B"); } // ...................................................................... diff --git a/source/particles/hadrons/mesons/src/G4BsMesonZero.cc b/source/particles/hadrons/mesons/src/G4BsMesonZero.cc index 65918e0acf..1b2126d5f3 100644 --- a/source/particles/hadrons/mesons/src/G4BsMesonZero.cc +++ b/source/particles/hadrons/mesons/src/G4BsMesonZero.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4BsMesonZero.cc,v 1.2.8.1.2.2 1999/12/14 07:08:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4BsMesonZero.cc,v 1.4 2000/02/27 05:57:43 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -45,6 +45,7 @@ G4BsMesonZero::G4BsMesonZero( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("Bs"); } // ...................................................................... diff --git a/source/particles/hadrons/mesons/src/G4DMesonMinus.cc b/source/particles/hadrons/mesons/src/G4DMesonMinus.cc index 51e5c35549..49f36a144a 100644 --- a/source/particles/hadrons/mesons/src/G4DMesonMinus.cc +++ b/source/particles/hadrons/mesons/src/G4DMesonMinus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DMesonMinus.cc,v 1.2.8.1.2.2 1999/12/14 07:08:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DMesonMinus.cc,v 1.4 2000/02/27 05:57:43 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -45,6 +45,7 @@ G4DMesonMinus::G4DMesonMinus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("D"); } // ...................................................................... diff --git a/source/particles/hadrons/mesons/src/G4DMesonPlus.cc b/source/particles/hadrons/mesons/src/G4DMesonPlus.cc index 8662333ea1..d7f488ffec 100644 --- a/source/particles/hadrons/mesons/src/G4DMesonPlus.cc +++ b/source/particles/hadrons/mesons/src/G4DMesonPlus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DMesonPlus.cc,v 1.2.8.1.2.2 1999/12/14 07:08:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DMesonPlus.cc,v 1.4 2000/02/27 05:57:43 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -45,6 +45,7 @@ G4DMesonPlus::G4DMesonPlus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("D"); } // ...................................................................... diff --git a/source/particles/hadrons/mesons/src/G4DMesonZero.cc b/source/particles/hadrons/mesons/src/G4DMesonZero.cc index 03c596ff8c..6f35ab8dc8 100644 --- a/source/particles/hadrons/mesons/src/G4DMesonZero.cc +++ b/source/particles/hadrons/mesons/src/G4DMesonZero.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DMesonZero.cc,v 1.2.8.1.2.2 1999/12/14 07:08:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DMesonZero.cc,v 1.4 2000/02/27 05:57:43 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -45,6 +45,7 @@ G4DMesonZero::G4DMesonZero( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("D"); } // ...................................................................... diff --git a/source/particles/hadrons/mesons/src/G4DsMesonMinus.cc b/source/particles/hadrons/mesons/src/G4DsMesonMinus.cc index 130cdadc3e..c59c5e9a79 100644 --- a/source/particles/hadrons/mesons/src/G4DsMesonMinus.cc +++ b/source/particles/hadrons/mesons/src/G4DsMesonMinus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DsMesonMinus.cc,v 1.2.8.1.2.2 1999/12/14 07:08:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DsMesonMinus.cc,v 1.4 2000/02/27 05:57:44 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -45,6 +45,7 @@ G4DsMesonMinus::G4DsMesonMinus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("Ds"); } // ...................................................................... diff --git a/source/particles/hadrons/mesons/src/G4DsMesonPlus.cc b/source/particles/hadrons/mesons/src/G4DsMesonPlus.cc index 3886773982..c94fe13839 100644 --- a/source/particles/hadrons/mesons/src/G4DsMesonPlus.cc +++ b/source/particles/hadrons/mesons/src/G4DsMesonPlus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DsMesonPlus.cc,v 1.2.8.1.2.2 1999/12/14 07:08:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DsMesonPlus.cc,v 1.4 2000/02/27 05:57:44 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -45,6 +45,7 @@ G4DsMesonPlus::G4DsMesonPlus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("Ds"); } // ...................................................................... diff --git a/source/particles/hadrons/mesons/src/G4Eta.cc b/source/particles/hadrons/mesons/src/G4Eta.cc index 4d36c2fcce..1d40085c9f 100644 --- a/source/particles/hadrons/mesons/src/G4Eta.cc +++ b/source/particles/hadrons/mesons/src/G4Eta.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Eta.cc,v 1.2.8.1.2.2 1999/12/14 07:08:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Eta.cc,v 1.4 2000/02/27 05:57:44 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -47,6 +47,7 @@ G4Eta::G4Eta( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("eta"); // Anti-particle of Eta is Eta itself SetAntiPDGEncoding(encoding); diff --git a/source/particles/hadrons/mesons/src/G4EtaPrime.cc b/source/particles/hadrons/mesons/src/G4EtaPrime.cc index 4e68cd5ab1..05d828c865 100644 --- a/source/particles/hadrons/mesons/src/G4EtaPrime.cc +++ b/source/particles/hadrons/mesons/src/G4EtaPrime.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4EtaPrime.cc,v 1.2.8.1.2.2 1999/12/14 07:08:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4EtaPrime.cc,v 1.4 2000/02/27 05:57:44 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -45,6 +45,7 @@ G4EtaPrime::G4EtaPrime( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("eta_prime"); // Anti-particle of EtaPrime is EtaPrime itself SetAntiPDGEncoding(encoding); diff --git a/source/particles/hadrons/mesons/src/G4JPsi.cc b/source/particles/hadrons/mesons/src/G4JPsi.cc index 707b814233..4a0aa88fb8 100644 --- a/source/particles/hadrons/mesons/src/G4JPsi.cc +++ b/source/particles/hadrons/mesons/src/G4JPsi.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4JPsi.cc,v 1.2.8.1.2.2 1999/12/14 07:08:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4JPsi.cc,v 1.4 2000/02/27 05:57:44 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -45,6 +45,7 @@ G4JPsi::G4JPsi( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("J/psi"); // Anti-particle of J/Psi is J/Psi itself SetAntiPDGEncoding(encoding); diff --git a/source/particles/hadrons/mesons/src/G4KaonMinus.cc b/source/particles/hadrons/mesons/src/G4KaonMinus.cc index fdb778ed4c..a652098c94 100644 --- a/source/particles/hadrons/mesons/src/G4KaonMinus.cc +++ b/source/particles/hadrons/mesons/src/G4KaonMinus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4KaonMinus.cc,v 1.2.8.1.2.2 1999/12/14 07:08:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4KaonMinus.cc,v 1.4 2000/02/27 05:57:45 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -45,6 +45,7 @@ G4KaonMinus::G4KaonMinus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("kaon"); //create Decay Table G4DecayTable* table = GetDecayTable(); if (table!=NULL) delete table; diff --git a/source/particles/hadrons/mesons/src/G4KaonPlus.cc b/source/particles/hadrons/mesons/src/G4KaonPlus.cc index 8c43e6e333..2422fdf6c5 100644 --- a/source/particles/hadrons/mesons/src/G4KaonPlus.cc +++ b/source/particles/hadrons/mesons/src/G4KaonPlus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4KaonPlus.cc,v 1.2.8.1.2.2 1999/12/14 07:08:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4KaonPlus.cc,v 1.4 2000/02/27 05:57:45 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -46,6 +46,7 @@ G4KaonPlus::G4KaonPlus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("kaon"); //create Decay Table G4DecayTable* table = GetDecayTable(); if (table!=NULL) delete table; diff --git a/source/particles/hadrons/mesons/src/G4KaonZero.cc b/source/particles/hadrons/mesons/src/G4KaonZero.cc index 1a2f03bab9..b7e9a0ce1c 100644 --- a/source/particles/hadrons/mesons/src/G4KaonZero.cc +++ b/source/particles/hadrons/mesons/src/G4KaonZero.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4KaonZero.cc,v 1.1.10.1.2.2 1999/12/14 07:08:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4KaonZero.cc,v 1.3 2000/02/27 05:57:45 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -45,6 +45,7 @@ G4KaonZero::G4KaonZero( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("kaon"); //create Decay Table G4DecayTable* table = GetDecayTable(); if (table!=NULL) delete table; diff --git a/source/particles/hadrons/mesons/src/G4KaonZeroLong.cc b/source/particles/hadrons/mesons/src/G4KaonZeroLong.cc index 8a33091610..f5da9dd400 100644 --- a/source/particles/hadrons/mesons/src/G4KaonZeroLong.cc +++ b/source/particles/hadrons/mesons/src/G4KaonZeroLong.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4KaonZeroLong.cc,v 1.2.8.1.2.2 1999/12/14 07:08:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4KaonZeroLong.cc,v 1.4 2000/02/27 05:57:45 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -45,6 +45,7 @@ G4KaonZeroLong::G4KaonZeroLong( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("kaon"); // Anti-particle of K0Long is K0Long itself SetAntiPDGEncoding(encoding); //create Decay Table diff --git a/source/particles/hadrons/mesons/src/G4KaonZeroShort.cc b/source/particles/hadrons/mesons/src/G4KaonZeroShort.cc index d7ab80a2cb..9ab513584f 100644 --- a/source/particles/hadrons/mesons/src/G4KaonZeroShort.cc +++ b/source/particles/hadrons/mesons/src/G4KaonZeroShort.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4KaonZeroShort.cc,v 1.2.8.1.2.2 1999/12/14 07:08:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4KaonZeroShort.cc,v 1.4 2000/02/27 05:57:46 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -45,6 +45,7 @@ G4KaonZeroShort::G4KaonZeroShort( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("kaon"); // Anti-particle of K0Short is K0Short itself SetAntiPDGEncoding(encoding); diff --git a/source/particles/hadrons/mesons/src/G4MesonConstructor.cc b/source/particles/hadrons/mesons/src/G4MesonConstructor.cc index 1578296298..f54eb135c3 100644 --- a/source/particles/hadrons/mesons/src/G4MesonConstructor.cc +++ b/source/particles/hadrons/mesons/src/G4MesonConstructor.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MesonConstructor.cc,v 1.1.10.1 1999/12/07 20:49:45 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MesonConstructor.cc,v 1.3 2000/02/25 11:38:03 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- @@ -23,7 +23,6 @@ #include "G4PionZero.hh" #include "G4Eta.hh" #include "G4EtaPrime.hh" -#include "G4RhoZero.hh" #include "G4KaonPlus.hh" #include "G4KaonMinus.hh" @@ -70,7 +69,6 @@ void G4MesonConstructor::ConstructLightMesons() G4PionZero::PionZeroDefinition(); G4Eta::EtaDefinition(); G4EtaPrime::EtaPrimeDefinition(); - G4RhoZero::RhoZeroDefinition(); G4KaonPlus::KaonPlusDefinition(); G4KaonMinus::KaonMinusDefinition(); G4KaonZero::KaonZeroDefinition(); diff --git a/source/particles/hadrons/mesons/src/G4PionMinus.cc b/source/particles/hadrons/mesons/src/G4PionMinus.cc index c089963278..e1622cc1a7 100644 --- a/source/particles/hadrons/mesons/src/G4PionMinus.cc +++ b/source/particles/hadrons/mesons/src/G4PionMinus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PionMinus.cc,v 1.2.8.1.2.2 1999/12/14 07:08:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PionMinus.cc,v 1.4 2000/02/27 05:57:46 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -48,6 +48,7 @@ G4PionMinus::G4PionMinus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("pi"); SetPDGStable(false); //create Decay Table G4DecayTable* table = GetDecayTable(); diff --git a/source/particles/hadrons/mesons/src/G4PionPlus.cc b/source/particles/hadrons/mesons/src/G4PionPlus.cc index a7e42b5205..d4c2a1ba81 100644 --- a/source/particles/hadrons/mesons/src/G4PionPlus.cc +++ b/source/particles/hadrons/mesons/src/G4PionPlus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PionPlus.cc,v 1.2.8.1.2.2 1999/12/14 07:08:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PionPlus.cc,v 1.4 2000/02/27 05:57:46 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -48,6 +48,7 @@ G4PionPlus::G4PionPlus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("pi"); SetPDGStable(false); //create Decay Table G4DecayTable* table = GetDecayTable(); diff --git a/source/particles/hadrons/mesons/src/G4PionZero.cc b/source/particles/hadrons/mesons/src/G4PionZero.cc index 1c13167a13..0befd023c4 100644 --- a/source/particles/hadrons/mesons/src/G4PionZero.cc +++ b/source/particles/hadrons/mesons/src/G4PionZero.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PionZero.cc,v 1.2.8.1.2.2 1999/12/14 07:08:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PionZero.cc,v 1.4 2000/02/27 05:57:46 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -50,6 +50,7 @@ G4PionZero::G4PionZero( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("pi"); // Anti-particle of Pi0 is pi0 itself SetAntiPDGEncoding(encoding); diff --git a/source/particles/hadrons/mesons/src/G4RhoMinus.cc b/source/particles/hadrons/mesons/src/G4RhoMinus.cc deleted file mode 100644 index c877b533cd..0000000000 --- a/source/particles/hadrons/mesons/src/G4RhoMinus.cc +++ /dev/null @@ -1,92 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4RhoMinus.cc,v 1.1.10.1.2.2 1999/12/14 07:08:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// -// ---------------------------------------------------------------------- -// GEANT 4 class implementation file -// -// For information related to this code contact: -// CERN, CN Division, ASD Group -// History: first implementation Hisaya Kurashige, 8 June 1998 -// ********************************************************************** -// Change both methods to get the pointer into non-inlined H.Kurashige 4 Aug. 1998 -// ------------------------------------------------------------ - - -#include "g4std/fstream" -#include "g4std/iomanip" - -#include "G4RhoMinus.hh" - -#include "G4PhaseSpaceDecayChannel.hh" -#include "G4DecayTable.hh" - -// ###################################################################### -// ### RhoMinus ### -// ###################################################################### - - -G4RhoMinus::G4RhoMinus( - const G4String& aName, G4double mass, - G4double width, G4double charge, - G4int iSpin, G4int iParity, - G4int iConjugation, G4int iIsospin, - G4int iIsospin3, G4int gParity, - const G4String& pType, G4int lepton, - G4int baryon, G4int encoding, - G4bool stable, G4double lifetime, - G4DecayTable *decaytable ) - : G4VMeson( aName,mass,width,charge,iSpin,iParity, - iConjugation,iIsospin,iIsospin3,gParity,pType, - lepton,baryon,encoding,stable,lifetime,decaytable ) -{ - SetPDGStable(false); - //create Decay Table - G4DecayTable* table = GetDecayTable(); - if (table!=NULL) delete table; - table = new G4DecayTable(); - - // create decay channels - G4VDecayChannel** mode = new G4VDecayChannel*[1]; - // RhoMinus -> pi+ + pi- - mode[0] = new G4PhaseSpaceDecayChannel("rho+",1.000,2,"pi-","pi0"); - - table->Insert(mode[0]); - - delete [] mode; - - SetDecayTable(table); -} - -// ...................................................................... -// ... static member definitions ... -// ...................................................................... -// -// Arguments for constructor are as follows -// name mass width charge -// 2*spin parity C-conjugation -// 2*Isospin 2*Isospin3 G-parity -// type lepton number baryon number PDG encoding -// stable lifetime decay table - -G4RhoMinus G4RhoMinus::theRhoMinus( - "rho0", 0.7685*GeV, 150.7*MeV, -1.0*eplus, - 2, -1, 0, - 2, -2, +1, - "meson", 0, 0, -213, - false, 0.0*ns, NULL -); - -G4RhoMinus* G4RhoMinus::RhoMinusDefinition(){return &theRhoMinus;} -G4RhoMinus* G4RhoMinus::RhoMinus(){return &theRhoMinus;} -// initialization for static cut values -G4double G4RhoMinus::theRhoMinusLengthCut = -1.0; -G4double* G4RhoMinus::theRhoMinusKineticEnergyCuts = NULL; - diff --git a/source/particles/hadrons/mesons/src/G4RhoPlus.cc b/source/particles/hadrons/mesons/src/G4RhoPlus.cc deleted file mode 100644 index cec54681e4..0000000000 --- a/source/particles/hadrons/mesons/src/G4RhoPlus.cc +++ /dev/null @@ -1,92 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4RhoPlus.cc,v 1.2.4.1.2.2 1999/12/14 07:08:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// -// ---------------------------------------------------------------------- -// GEANT 4 class implementation file -// -// For information related to this code contact: -// CERN, CN Division, ASD Group -// History: first implementation Hisaya Kurashige, 8 June 1998 -// ********************************************************************** -// Change both methods to get the pointer into non-inlined H.Kurashige 4 Aug. 1998 -// ------------------------------------------------------------ - - -#include "g4std/fstream" -#include "g4std/iomanip" - -#include "G4RhoPlus.hh" - -#include "G4PhaseSpaceDecayChannel.hh" -#include "G4DecayTable.hh" - -// ###################################################################### -// ### RhoPlus ### -// ###################################################################### - - -G4RhoPlus::G4RhoPlus( - const G4String& aName, G4double mass, - G4double width, G4double charge, - G4int iSpin, G4int iParity, - G4int iConjugation, G4int iIsospin, - G4int iIsospin3, G4int gParity, - const G4String& pType, G4int lepton, - G4int baryon, G4int encoding, - G4bool stable, G4double lifetime, - G4DecayTable *decaytable ) - : G4VMeson( aName,mass,width,charge,iSpin,iParity, - iConjugation,iIsospin,iIsospin3,gParity,pType, - lepton,baryon,encoding,stable,lifetime,decaytable ) -{ - SetPDGStable(false); - //create Decay Table - G4DecayTable* table = GetDecayTable(); - if (table!=NULL) delete table; - table = new G4DecayTable(); - - // create decay channels - G4VDecayChannel** mode = new G4VDecayChannel*[1]; - // RhoPlus -> pi+ + pi- - mode[0] = new G4PhaseSpaceDecayChannel("rho+",1.000,2,"pi+","pi0"); - - table->Insert(mode[0]); - - delete [] mode; - - SetDecayTable(table); -} - -// ...................................................................... -// ... static member definitions ... -// ...................................................................... -// -// Arguments for constructor are as follows -// name mass width charge -// 2*spin parity C-conjugation -// 2*Isospin 2*Isospin3 G-parity -// type lepton number baryon number PDG encoding -// stable lifetime decay table - -G4RhoPlus G4RhoPlus::theRhoPlus( - "rho+", 0.7685*GeV, 150.7*MeV, +1.0*eplus, - 2, -1, 0, - 2, +2, +1, - "meson", 0, 0, 213, - false, 0.0*ns, NULL -); - -G4RhoPlus* G4RhoPlus::RhoPlusDefinition(){return &theRhoPlus;} -G4RhoPlus* G4RhoPlus::RhoPlus(){return &theRhoPlus;} -// initialization for static cut values -G4double G4RhoPlus::theRhoPlusLengthCut = -1.0; -G4double* G4RhoPlus::theRhoPlusKineticEnergyCuts = NULL; - diff --git a/source/particles/hadrons/mesons/src/G4RhoZero.cc b/source/particles/hadrons/mesons/src/G4RhoZero.cc deleted file mode 100644 index c16a29e721..0000000000 --- a/source/particles/hadrons/mesons/src/G4RhoZero.cc +++ /dev/null @@ -1,122 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4RhoZero.cc,v 1.2.8.1.2.2 1999/12/14 07:08:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// -// ---------------------------------------------------------------------- -// GEANT 4 class implementation file -// -// For information related to this code contact: -// CERN, CN Division, ASD Group -// History: first implementation Hisaya Kurashige, 8 June 1998 -// ********************************************************************** -// Change both methods to get the pointer into non-inlined H.Kurashige 4 Aug. 1998 -// ------------------------------------------------------------ - - -#include "g4std/fstream" -#include "g4std/iomanip" - -#include "G4RhoZero.hh" - -#include "G4PhaseSpaceDecayChannel.hh" -#include "G4DecayTable.hh" - -// ###################################################################### -// ### RhoZero ### -// ###################################################################### - - -G4RhoZero::G4RhoZero( - const G4String& aName, G4double mass, - G4double width, G4double charge, - G4int iSpin, G4int iParity, - G4int iConjugation, G4int iIsospin, - G4int iIsospin3, G4int gParity, - const G4String& pType, G4int lepton, - G4int baryon, G4int encoding, - G4bool stable, G4double lifetime, - G4DecayTable *decaytable ) - : G4VMeson( aName,mass,width,charge,iSpin,iParity, - iConjugation,iIsospin,iIsospin3,gParity,pType, - lepton,baryon,encoding,stable,lifetime,decaytable ) -{ - // Anti-particle of RhoZero is RhoZero itself - SetAntiPDGEncoding(encoding); - - SetPDGStable(false); - //create Decay Table - G4DecayTable* table = GetDecayTable(); - if (table!=NULL) delete table; - table = new G4DecayTable(); - - // create decay channels - G4VDecayChannel** mode = new G4VDecayChannel*[1]; - // RhoZero -> pi+ + pi- - mode[0] = new G4PhaseSpaceDecayChannel("rho0",1.000,2,"pi+","pi-"); - - table->Insert(mode[0]); - - delete [] mode; - - SetDecayTable(table); -} - -// ...................................................................... -// ... static member definitions ... -// ...................................................................... -// -// Arguments for constructor are as follows -// name mass width charge -// 2*spin parity C-conjugation -// 2*Isospin 2*Isospin3 G-parity -// type lepton number baryon number PDG encoding -// stable lifetime decay table - -G4RhoZero G4RhoZero::theRhoZero( - "rho0", 770.0*MeV, 150.7*MeV, 0.0, - 2, -1, -1, - 2, 0, +1, - "meson", 0, 0, 113, - false, 0.0*ns, NULL -); - -G4RhoZero* G4RhoZero::RhoZeroDefinition(){return &theRhoZero;} -G4RhoZero* G4RhoZero::RhoZero(){return &theRhoZero;} -// initialization for static cut values -G4double G4RhoZero::theRhoZeroLengthCut = -1.0; -G4double* G4RhoZero::theRhoZeroKineticEnergyCuts = NULL; - -// ********************************************************************** -// **************************** SetCuts ********************************* -// ********************************************************************** - -void G4RhoZero::SetCuts(G4double aCut) -{ - 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 (G4int J=0; Jlength(); J++) - { - G4Material* aMaterial = (*materialTable)[J]; - theKineticEnergyCuts[J] = LowestEnergy; - } - theRhoZeroLengthCut = theCutInMaxInteractionLength; - theRhoZeroKineticEnergyCuts = theKineticEnergyCuts; -} - - - diff --git a/source/particles/hadrons/mesons/src/G4VMeson.cc b/source/particles/hadrons/mesons/src/G4VMeson.cc index b27a77dbe0..fea8d6a5d2 100644 --- a/source/particles/hadrons/mesons/src/G4VMeson.cc +++ b/source/particles/hadrons/mesons/src/G4VMeson.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VMeson.cc,v 1.1.10.1 1999/12/07 20:49:45 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VMeson.cc,v 1.2 1999/12/15 14:51:07 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/leptons/include/G4AntiNeutrinoE.hh b/source/particles/leptons/include/G4AntiNeutrinoE.hh index 133c32b512..34b4253acb 100644 --- a/source/particles/leptons/include/G4AntiNeutrinoE.hh +++ b/source/particles/leptons/include/G4AntiNeutrinoE.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiNeutrinoE.hh,v 1.2.8.1 1999/12/07 20:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiNeutrinoE.hh,v 1.3 1999/12/15 14:51:07 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/leptons/include/G4AntiNeutrinoMu.hh b/source/particles/leptons/include/G4AntiNeutrinoMu.hh index ce2f599cd3..118d873e36 100644 --- a/source/particles/leptons/include/G4AntiNeutrinoMu.hh +++ b/source/particles/leptons/include/G4AntiNeutrinoMu.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiNeutrinoMu.hh,v 1.2.8.1 1999/12/07 20:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiNeutrinoMu.hh,v 1.3 1999/12/15 14:51:07 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/leptons/include/G4AntiNeutrinoTau.hh b/source/particles/leptons/include/G4AntiNeutrinoTau.hh index f1396ab975..aef4003ba5 100644 --- a/source/particles/leptons/include/G4AntiNeutrinoTau.hh +++ b/source/particles/leptons/include/G4AntiNeutrinoTau.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiNeutrinoTau.hh,v 1.2.8.1 1999/12/07 20:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiNeutrinoTau.hh,v 1.3 1999/12/15 14:51:07 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/leptons/include/G4Electron.hh b/source/particles/leptons/include/G4Electron.hh index a73ea5518d..0b3a159490 100644 --- a/source/particles/leptons/include/G4Electron.hh +++ b/source/particles/leptons/include/G4Electron.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Electron.hh,v 1.2.8.1 1999/12/07 20:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Electron.hh,v 1.3 1999/12/15 14:51:07 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/leptons/include/G4LeptonConstructor.hh b/source/particles/leptons/include/G4LeptonConstructor.hh index 09e5ffa1f9..85c14a1aaf 100644 --- a/source/particles/leptons/include/G4LeptonConstructor.hh +++ b/source/particles/leptons/include/G4LeptonConstructor.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LeptonConstructor.hh,v 1.1.10.1 1999/12/07 20:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LeptonConstructor.hh,v 1.2 1999/12/15 14:51:08 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/leptons/include/G4MuonMinus.hh b/source/particles/leptons/include/G4MuonMinus.hh index 3d6c1625da..c5a33ce214 100644 --- a/source/particles/leptons/include/G4MuonMinus.hh +++ b/source/particles/leptons/include/G4MuonMinus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MuonMinus.hh,v 1.2.8.1 1999/12/07 20:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MuonMinus.hh,v 1.3 1999/12/15 14:51:08 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/leptons/include/G4MuonPlus.hh b/source/particles/leptons/include/G4MuonPlus.hh index 11aec8d942..53e2a6cd82 100644 --- a/source/particles/leptons/include/G4MuonPlus.hh +++ b/source/particles/leptons/include/G4MuonPlus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MuonPlus.hh,v 1.2.8.1 1999/12/07 20:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MuonPlus.hh,v 1.3 1999/12/15 14:51:08 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/leptons/include/G4NeutrinoE.hh b/source/particles/leptons/include/G4NeutrinoE.hh index f1d627604b..5b0fb897f2 100644 --- a/source/particles/leptons/include/G4NeutrinoE.hh +++ b/source/particles/leptons/include/G4NeutrinoE.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4NeutrinoE.hh,v 1.2.8.1 1999/12/07 20:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4NeutrinoE.hh,v 1.3 1999/12/15 14:51:08 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/leptons/include/G4NeutrinoMu.hh b/source/particles/leptons/include/G4NeutrinoMu.hh index dc4d660eed..453ade2f6d 100644 --- a/source/particles/leptons/include/G4NeutrinoMu.hh +++ b/source/particles/leptons/include/G4NeutrinoMu.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4NeutrinoMu.hh,v 1.2.8.1 1999/12/07 20:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4NeutrinoMu.hh,v 1.3 1999/12/15 14:51:08 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/leptons/include/G4NeutrinoTau.hh b/source/particles/leptons/include/G4NeutrinoTau.hh index e909e5dbe0..0b16b76f90 100644 --- a/source/particles/leptons/include/G4NeutrinoTau.hh +++ b/source/particles/leptons/include/G4NeutrinoTau.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4NeutrinoTau.hh,v 1.2.8.1 1999/12/07 20:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4NeutrinoTau.hh,v 1.3 1999/12/15 14:51:08 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/leptons/include/G4Positron.hh b/source/particles/leptons/include/G4Positron.hh index 2b9dba5e6a..0c274c195a 100644 --- a/source/particles/leptons/include/G4Positron.hh +++ b/source/particles/leptons/include/G4Positron.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Positron.hh,v 1.2.8.1 1999/12/07 20:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Positron.hh,v 1.3 1999/12/15 14:51:08 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/leptons/include/G4TauMinus.hh b/source/particles/leptons/include/G4TauMinus.hh index 83085f22f3..8934478ad3 100644 --- a/source/particles/leptons/include/G4TauMinus.hh +++ b/source/particles/leptons/include/G4TauMinus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4TauMinus.hh,v 1.2.8.1 1999/12/07 20:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4TauMinus.hh,v 1.3 1999/12/15 14:51:08 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/leptons/include/G4TauPlus.hh b/source/particles/leptons/include/G4TauPlus.hh index 368b9528cf..6c051c8517 100644 --- a/source/particles/leptons/include/G4TauPlus.hh +++ b/source/particles/leptons/include/G4TauPlus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4TauPlus.hh,v 1.2.8.1 1999/12/07 20:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4TauPlus.hh,v 1.3 1999/12/15 14:51:08 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/leptons/include/G4VLepton.hh b/source/particles/leptons/include/G4VLepton.hh index 606a4c6f51..68bcfb7b55 100644 --- a/source/particles/leptons/include/G4VLepton.hh +++ b/source/particles/leptons/include/G4VLepton.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VLepton.hh,v 1.1.10.1 1999/12/07 20:49:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VLepton.hh,v 1.2 1999/12/15 14:51:08 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/leptons/src/G4AntiNeutrinoE.cc b/source/particles/leptons/src/G4AntiNeutrinoE.cc index 3eaeb5c5ae..9ded254de8 100644 --- a/source/particles/leptons/src/G4AntiNeutrinoE.cc +++ b/source/particles/leptons/src/G4AntiNeutrinoE.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiNeutrinoE.cc,v 1.1.10.1.2.2 1999/12/14 07:08:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiNeutrinoE.cc,v 1.3 2000/02/27 06:23:40 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -41,6 +41,7 @@ G4AntiNeutrinoE::G4AntiNeutrinoE( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("e"); } // ...................................................................... // ... static member definitions ... diff --git a/source/particles/leptons/src/G4AntiNeutrinoMu.cc b/source/particles/leptons/src/G4AntiNeutrinoMu.cc index f886a08184..72ad7f5a5a 100644 --- a/source/particles/leptons/src/G4AntiNeutrinoMu.cc +++ b/source/particles/leptons/src/G4AntiNeutrinoMu.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiNeutrinoMu.cc,v 1.1.10.1.2.2 1999/12/14 07:08:13 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiNeutrinoMu.cc,v 1.3 2000/02/27 06:23:41 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -42,6 +42,7 @@ G4AntiNeutrinoMu::G4AntiNeutrinoMu( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("mu"); } // ...................................................................... diff --git a/source/particles/leptons/src/G4AntiNeutrinoTau.cc b/source/particles/leptons/src/G4AntiNeutrinoTau.cc index 357e5a793d..07beb45247 100644 --- a/source/particles/leptons/src/G4AntiNeutrinoTau.cc +++ b/source/particles/leptons/src/G4AntiNeutrinoTau.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiNeutrinoTau.cc,v 1.1.10.1.2.2 1999/12/14 07:08:13 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiNeutrinoTau.cc,v 1.3 2000/02/27 06:23:41 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -42,6 +42,7 @@ G4AntiNeutrinoTau::G4AntiNeutrinoTau( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("tau"); } // ...................................................................... diff --git a/source/particles/leptons/src/G4Electron.cc b/source/particles/leptons/src/G4Electron.cc index a896666bf0..752552f977 100644 --- a/source/particles/leptons/src/G4Electron.cc +++ b/source/particles/leptons/src/G4Electron.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Electron.cc,v 1.1.10.1.2.2 1999/12/14 07:08:13 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Electron.cc,v 1.3 2000/02/27 06:23:41 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -46,6 +46,7 @@ G4Electron::G4Electron( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("e"); } // ...................................................................... diff --git a/source/particles/leptons/src/G4LeptonConstructor.cc b/source/particles/leptons/src/G4LeptonConstructor.cc index 931c046f02..2b501ac546 100644 --- a/source/particles/leptons/src/G4LeptonConstructor.cc +++ b/source/particles/leptons/src/G4LeptonConstructor.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LeptonConstructor.cc,v 1.1.10.1 1999/12/07 20:49:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LeptonConstructor.cc,v 1.2 1999/12/15 14:51:09 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/leptons/src/G4MuonMinus.cc b/source/particles/leptons/src/G4MuonMinus.cc index 3de0f59c27..e4547d8937 100644 --- a/source/particles/leptons/src/G4MuonMinus.cc +++ b/source/particles/leptons/src/G4MuonMinus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MuonMinus.cc,v 1.2.8.1.2.2 1999/12/14 07:08:13 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MuonMinus.cc,v 1.4 2000/02/27 06:23:41 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -49,6 +49,7 @@ G4MuonMinus::G4MuonMinus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("mu"); SetPDGStable(false); //create Decay Table G4DecayTable* table = GetDecayTable(); diff --git a/source/particles/leptons/src/G4MuonPlus.cc b/source/particles/leptons/src/G4MuonPlus.cc index 9c654ebe18..f1417bf01c 100644 --- a/source/particles/leptons/src/G4MuonPlus.cc +++ b/source/particles/leptons/src/G4MuonPlus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MuonPlus.cc,v 1.2.8.1.2.2 1999/12/14 07:08:13 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MuonPlus.cc,v 1.4 2000/02/27 06:23:41 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -49,6 +49,7 @@ G4MuonPlus::G4MuonPlus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("mu"); SetPDGStable(false); //create Decay Table diff --git a/source/particles/leptons/src/G4NeutrinoE.cc b/source/particles/leptons/src/G4NeutrinoE.cc index d8c98b8478..c2e2b94b45 100644 --- a/source/particles/leptons/src/G4NeutrinoE.cc +++ b/source/particles/leptons/src/G4NeutrinoE.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4NeutrinoE.cc,v 1.1.10.1.2.2 1999/12/14 07:08:13 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4NeutrinoE.cc,v 1.3 2000/02/27 06:23:41 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -42,6 +42,7 @@ G4NeutrinoE::G4NeutrinoE( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("e"); } // ...................................................................... diff --git a/source/particles/leptons/src/G4NeutrinoMu.cc b/source/particles/leptons/src/G4NeutrinoMu.cc index 96701daf9b..983882f25a 100644 --- a/source/particles/leptons/src/G4NeutrinoMu.cc +++ b/source/particles/leptons/src/G4NeutrinoMu.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4NeutrinoMu.cc,v 1.1.10.1.2.2 1999/12/14 07:08:13 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4NeutrinoMu.cc,v 1.3 2000/02/27 06:23:41 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -42,6 +42,7 @@ G4NeutrinoMu::G4NeutrinoMu( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("mu"); } // ...................................................................... diff --git a/source/particles/leptons/src/G4NeutrinoTau.cc b/source/particles/leptons/src/G4NeutrinoTau.cc index 23ccde0733..8b7aaaf228 100644 --- a/source/particles/leptons/src/G4NeutrinoTau.cc +++ b/source/particles/leptons/src/G4NeutrinoTau.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4NeutrinoTau.cc,v 1.1.10.1.2.2 1999/12/14 07:08:13 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4NeutrinoTau.cc,v 1.3 2000/02/27 06:23:41 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -42,6 +42,7 @@ G4NeutrinoTau::G4NeutrinoTau( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("tau"); } // ...................................................................... diff --git a/source/particles/leptons/src/G4Positron.cc b/source/particles/leptons/src/G4Positron.cc index b64be88882..7d66cba468 100644 --- a/source/particles/leptons/src/G4Positron.cc +++ b/source/particles/leptons/src/G4Positron.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Positron.cc,v 1.1.10.1.2.2 1999/12/14 07:08:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Positron.cc,v 1.3 2000/02/27 06:23:41 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -46,6 +46,7 @@ G4Positron::G4Positron( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("e"); } diff --git a/source/particles/leptons/src/G4TauMinus.cc b/source/particles/leptons/src/G4TauMinus.cc index 89092833cc..10eff2dc27 100644 --- a/source/particles/leptons/src/G4TauMinus.cc +++ b/source/particles/leptons/src/G4TauMinus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4TauMinus.cc,v 1.2.8.1.2.2 1999/12/14 07:08:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4TauMinus.cc,v 1.4 2000/02/27 06:23:41 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -45,6 +45,7 @@ G4TauMinus::G4TauMinus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("tau"); SetPDGStable(false); //create Decay Table diff --git a/source/particles/leptons/src/G4TauPlus.cc b/source/particles/leptons/src/G4TauPlus.cc index b05e107943..b1244cc3cd 100644 --- a/source/particles/leptons/src/G4TauPlus.cc +++ b/source/particles/leptons/src/G4TauPlus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4TauPlus.cc,v 1.2.8.1.2.2 1999/12/14 07:08:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4TauPlus.cc,v 1.4 2000/02/27 06:23:42 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -45,6 +45,7 @@ G4TauPlus::G4TauPlus( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("tau"); SetPDGStable(false); //create Decay Table diff --git a/source/particles/leptons/src/G4VLepton.cc b/source/particles/leptons/src/G4VLepton.cc index 4bbfc1dd4e..22855803eb 100644 --- a/source/particles/leptons/src/G4VLepton.cc +++ b/source/particles/leptons/src/G4VLepton.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VLepton.cc,v 1.1.10.1 1999/12/07 20:49:48 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VLepton.cc,v 1.2 1999/12/15 14:51:09 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/management/include/G4DalitzDecayChannel.hh b/source/particles/management/include/G4DalitzDecayChannel.hh index 7bdd08ed60..ca8eb02426 100644 --- a/source/particles/management/include/G4DalitzDecayChannel.hh +++ b/source/particles/management/include/G4DalitzDecayChannel.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DalitzDecayChannel.hh,v 1.2.4.1 1999/12/07 20:49:49 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DalitzDecayChannel.hh,v 1.3 1999/12/15 14:51:10 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4DecayProducts.hh b/source/particles/management/include/G4DecayProducts.hh index 3354539ec2..1f9f5bddd4 100644 --- a/source/particles/management/include/G4DecayProducts.hh +++ b/source/particles/management/include/G4DecayProducts.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DecayProducts.hh,v 1.4.4.1 1999/12/07 20:49:49 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DecayProducts.hh,v 1.5 1999/12/15 14:51:10 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4DecayTable.hh b/source/particles/management/include/G4DecayTable.hh index ad96efc193..a4c08c9de6 100644 --- a/source/particles/management/include/G4DecayTable.hh +++ b/source/particles/management/include/G4DecayTable.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DecayTable.hh,v 1.3.2.1 1999/12/07 20:49:49 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DecayTable.hh,v 1.5 2000/02/25 07:36:14 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -16,22 +16,30 @@ // CERN, CN Division, ASD group // History: first implementation, based on object model of // 7 July 1996 H.Kurashige -// 14 June 1997 H.Kurashige +// +// ---------------------------------------- +// implementation for STL 14 Feb. 2000 H.Kurashige +// // ------------------------------------------------------------ #ifndef G4DecayTable_h #define G4DecayTable_h 1 #include "G4ios.hh" -#include "g4rw/tpsrtvec.h" +#include "g4std/vector" #include "globals.hh" #include "G4ParticleDefinition.hh" #include "G4VDecayChannel.hh" class G4DecayTable { + // Class Description + // G4DecayTable is the table of pointer to G4VDecayChannel. + // Decay channels inside is sorted by using decay branching ratio + // + public: - typedef G4RWTPtrSortedVector G4VDecayChannelVector; + typedef G4std::vector G4VDecayChannelVector; //constructors public: @@ -49,14 +57,22 @@ class G4DecayTable G4int operator==(const G4DecayTable &right) const {return (this == &right);}; G4int operator!=(const G4DecayTable &right) const {return (this != &right);}; - public: + public: // With Description void Insert( G4VDecayChannel* aChannel); - G4int entries() const; + // Insert a decay channel at proper position + // (i.e. sorted by using branching ratio ) - public: + G4int entries() const; + // Returns number of decay channels inside + + public: // With Description G4VDecayChannel* SelectADecayChannel(); + // A decay channel is selected at random according to the branching ratio + G4VDecayChannel* GetDecayChannel(G4int index) const; G4VDecayChannel* operator[](G4int index); + // Get index-th Decay channel + void DumpInfo() const; private: @@ -67,21 +83,22 @@ class G4DecayTable inline G4int G4DecayTable::entries() const { - return channels->entries(); + return channels->size(); } inline G4VDecayChannel* G4DecayTable::operator[](G4int index) { - return (*channels)(index); + return (*channels)[index]; } + inline G4VDecayChannel* G4DecayTable::GetDecayChannel(G4int index) const { G4VDecayChannel* selectedChannel = 0; - if ( (index>=0) && (indexentries()) ){ - selectedChannel = (*channels)(index); + if ( (index>=0) && (indexsize()) ){ + selectedChannel = (*channels)[index]; } return selectedChannel; } diff --git a/source/particles/management/include/G4DecayTableMessenger.hh b/source/particles/management/include/G4DecayTableMessenger.hh index 76804cd902..a43e4723cc 100644 --- a/source/particles/management/include/G4DecayTableMessenger.hh +++ b/source/particles/management/include/G4DecayTableMessenger.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DecayTableMessenger.hh,v 1.3.4.1 1999/12/07 20:49:49 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DecayTableMessenger.hh,v 1.4 1999/12/15 14:51:10 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/particles/management/include/G4DynamicParticle.hh b/source/particles/management/include/G4DynamicParticle.hh index ab7100ae42..37bd9b30d9 100644 --- a/source/particles/management/include/G4DynamicParticle.hh +++ b/source/particles/management/include/G4DynamicParticle.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DynamicParticle.hh,v 1.5.4.1 1999/12/07 20:49:49 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DynamicParticle.hh,v 1.6 1999/12/15 14:51:10 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4DynamicParticle.icc b/source/particles/management/include/G4DynamicParticle.icc index 7b60cef950..d3b5f01dd1 100644 --- a/source/particles/management/include/G4DynamicParticle.icc +++ b/source/particles/management/include/G4DynamicParticle.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DynamicParticle.icc,v 1.2.4.1 1999/12/07 20:49:50 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DynamicParticle.icc,v 1.3 1999/12/15 14:51:10 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4DynamicParticleFastVector.hh b/source/particles/management/include/G4DynamicParticleFastVector.hh index ed38500098..efbe68ca9b 100644 --- a/source/particles/management/include/G4DynamicParticleFastVector.hh +++ b/source/particles/management/include/G4DynamicParticleFastVector.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DynamicParticleFastVector.hh,v 1.1.10.1 1999/12/07 20:49:50 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DynamicParticleFastVector.hh,v 1.2 1999/12/15 14:51:10 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4ElectronOccupancy.hh b/source/particles/management/include/G4ElectronOccupancy.hh index e3cd38718f..40e43673d7 100644 --- a/source/particles/management/include/G4ElectronOccupancy.hh +++ b/source/particles/management/include/G4ElectronOccupancy.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ElectronOccupancy.hh,v 1.3.4.1 1999/12/07 20:49:50 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ElectronOccupancy.hh,v 1.4 1999/12/15 14:51:10 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4IonTable.hh b/source/particles/management/include/G4IonTable.hh index b412a60ece..f2db64759e 100644 --- a/source/particles/management/include/G4IonTable.hh +++ b/source/particles/management/include/G4IonTable.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IonTable.hh,v 1.13.2.1 1999/12/07 20:49:50 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IonTable.hh,v 1.15 2000/02/25 07:36:14 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -31,11 +31,7 @@ #include "globals.hh" #include "G4ParticleDefinition.hh" -#ifdef G4USE_STL #include "g4std/vector" -#else -#include "g4rw/tpordvec.h" -#endif class G4ParticleTable; class G4VIsotopeTable; @@ -49,13 +45,8 @@ class G4IonTable // public: -#ifdef G4USE_STL // Use STL Vector as list of ions typedef G4std::vector G4IonList; -#else - // Use G4RWTPtrOrderedVector as list of ions - typedef G4RWTPtrOrderedVector G4IonList; -#endif public: // constructor @@ -169,24 +160,16 @@ class G4IonTable inline G4bool G4IonTable::Contains(const G4ParticleDefinition* particle) const { -#ifdef G4USE_STL G4IonList::iterator i; for (i = fIonList->begin(); i!= fIonList->end(); ++i) { if (**i==*particle) return true; } return false; -#else - return fIonList->contains(particle); -#endif } inline G4int G4IonTable::Entries() const { -#ifdef G4USE_STL return fIonList->size(); -#else - return fIonList->entries(); -#endif } inline G4ParticleDefinition* G4IonTable::GetParticle(G4int index) const diff --git a/source/particles/management/include/G4Ions.hh b/source/particles/management/include/G4Ions.hh index 65825d0204..63b2136a7b 100644 --- a/source/particles/management/include/G4Ions.hh +++ b/source/particles/management/include/G4Ions.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Ions.hh,v 1.5.4.1 1999/12/07 20:49:50 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Ions.hh,v 1.6 1999/12/15 14:51:10 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4IsotopeProperty.hh b/source/particles/management/include/G4IsotopeProperty.hh index c71ecae45d..87c04e2b57 100644 --- a/source/particles/management/include/G4IsotopeProperty.hh +++ b/source/particles/management/include/G4IsotopeProperty.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4IsotopeProperty.hh,v 1.2 1999/10/28 23:24:10 kurasige Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4KL3DecayChannel.hh b/source/particles/management/include/G4KL3DecayChannel.hh index 7d1aedd81b..932f434960 100644 --- a/source/particles/management/include/G4KL3DecayChannel.hh +++ b/source/particles/management/include/G4KL3DecayChannel.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4KL3DecayChannel.hh,v 1.2.4.1 1999/12/07 20:49:50 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4KL3DecayChannel.hh,v 1.3 1999/12/15 14:51:10 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4MuonDecayChannel.hh b/source/particles/management/include/G4MuonDecayChannel.hh index b10ad80c8f..d522c7435e 100644 --- a/source/particles/management/include/G4MuonDecayChannel.hh +++ b/source/particles/management/include/G4MuonDecayChannel.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MuonDecayChannel.hh,v 1.2.4.1 1999/12/07 20:49:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MuonDecayChannel.hh,v 1.4 2000/02/25 07:36:15 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -26,6 +26,13 @@ class G4MuonDecayChannel :public G4VDecayChannel { + // Class Decription + // This class describes muon decay kinemtics. + // This version neglects muon polarization + // assumes the pure V-A coupling + // gives incorrect energy spectrum for neutrinos + // + public: // With Description //Constructors G4MuonDecayChannel(const G4String& theParentName, diff --git a/source/particles/management/include/G4NucleiProperties.hh b/source/particles/management/include/G4NucleiProperties.hh index be49b645ac..845db1c341 100644 --- a/source/particles/management/include/G4NucleiProperties.hh +++ b/source/particles/management/include/G4NucleiProperties.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4NucleiProperties.hh,v 1.8.4.1.2.1 1999/12/08 17:34:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4NucleiProperties.hh,v 1.10 2000/02/04 03:05:09 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -32,18 +32,19 @@ class G4NucleiProperties { -private: + // Class Description + // G4NucleiProperties is an utility class to provide mass formula of nuclei + // (i.e. it has static member function only) - // Default constructor (singleton) - G4NucleiProperties(); - static G4NucleiProperties theInstance; - -public: +public: // Destructor ~G4NucleiProperties() { }; + // Default constructor () + G4NucleiProperties(){}; + public: // With Description diff --git a/source/particles/management/include/G4NucleiPropertiesTable.hh b/source/particles/management/include/G4NucleiPropertiesTable.hh index 1bce47adec..52db01aa7e 100644 --- a/source/particles/management/include/G4NucleiPropertiesTable.hh +++ b/source/particles/management/include/G4NucleiPropertiesTable.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4NucleiPropertiesTable.hh,v 1.7.4.1 1999/12/07 20:49:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4NucleiPropertiesTable.hh,v 1.8 1999/12/15 14:51:11 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1997 diff --git a/source/particles/management/include/G4PDGCodeChecker.hh b/source/particles/management/include/G4PDGCodeChecker.hh index cd76adc743..2a001c37ed 100644 --- a/source/particles/management/include/G4PDGCodeChecker.hh +++ b/source/particles/management/include/G4PDGCodeChecker.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PDGCodeChecker.hh,v 1.4.4.1 1999/12/07 20:49:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PDGCodeChecker.hh,v 1.5 1999/12/15 14:51:11 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4ParticleDefinition.hh b/source/particles/management/include/G4ParticleDefinition.hh index 9969081d53..fc0bd928f9 100644 --- a/source/particles/management/include/G4ParticleDefinition.hh +++ b/source/particles/management/include/G4ParticleDefinition.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ParticleDefinition.hh,v 1.5.4.1.2.1 1999/12/08 17:34:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ParticleDefinition.hh,v 1.7 2000/02/25 07:36:15 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -28,6 +28,7 @@ // added GetEnergyThreshold H.Kurashige 08 June 1998 // added ShortLived flag and ApplyCuts flag H.Kurashige 27 June 1998 // fixed some improper codings H.Kurashige 08 Apr. 1999 +// added sub-type H.Kurashige 15 Feb. 2000 // ------------------------------------------------------------ #ifndef G4ParticleDefinition_h @@ -116,7 +117,8 @@ class G4ParticleDefinition G4int GetPDGiIsospin3() const { return thePDGiIsospin3; } G4int GetPDGiGParity() const { return thePDGiGParity; } - G4String GetParticleType() const { return theParticleType; } + const G4String& GetParticleType() const { return theParticleType; } + const G4String& GetParticleSubType() const { return theParticleSubType; } G4int GetLeptonNumber() const { return theLeptonNumber; } G4int GetBaryonNumber() const { return theBaryonNumber; } @@ -166,6 +168,8 @@ class G4ParticleDefinition // It means error if the return value is deffernt from // this->thePDGEncoding. + void SetParticleSubType(const G4String& subtype); + public: void SetVerboseLevel(G4int value); G4int GetVerboseLevel() const; @@ -242,6 +246,10 @@ class G4ParticleDefinition G4String theParticleType; // More general textual type description of the particle. + G4String theParticleSubType; + // Textual type description of the particle + // eg. pion, lamda etc. + G4int thePDGEncoding; // The Particle Data Group integer identifier of this particle @@ -373,6 +381,11 @@ G4int G4ParticleDefinition::GetAntiQuarkContent(G4int flavor) const } } +inline void G4ParticleDefinition::SetParticleSubType(const G4String& subtype) +{ + theParticleSubType = subtype; +} + inline void G4ParticleDefinition::ResetCuts(){} inline void G4ParticleDefinition::SetCuts(G4double ){} diff --git a/source/particles/management/include/G4ParticleMessenger.hh b/source/particles/management/include/G4ParticleMessenger.hh index d95f0b4e24..3b3e91166f 100644 --- a/source/particles/management/include/G4ParticleMessenger.hh +++ b/source/particles/management/include/G4ParticleMessenger.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ParticleMessenger.hh,v 1.3.4.1 1999/12/07 20:49:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ParticleMessenger.hh,v 1.4 1999/12/15 14:51:11 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/particles/management/include/G4ParticleMomentum.hh b/source/particles/management/include/G4ParticleMomentum.hh index d6259ae0ca..fea6968ec9 100644 --- a/source/particles/management/include/G4ParticleMomentum.hh +++ b/source/particles/management/include/G4ParticleMomentum.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ParticleMomentum.hh,v 1.3.4.1 1999/12/07 20:49:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ParticleMomentum.hh,v 1.4 1999/12/15 14:51:11 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4ParticlePropertyMessenger.hh b/source/particles/management/include/G4ParticlePropertyMessenger.hh index 969fb7bff4..20b1f07c81 100644 --- a/source/particles/management/include/G4ParticlePropertyMessenger.hh +++ b/source/particles/management/include/G4ParticlePropertyMessenger.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ParticlePropertyMessenger.hh,v 1.3.4.1 1999/12/07 20:49:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ParticlePropertyMessenger.hh,v 1.4 1999/12/15 14:51:11 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/particles/management/include/G4ParticleTable.hh b/source/particles/management/include/G4ParticleTable.hh index 6654b174e3..6bce778480 100644 --- a/source/particles/management/include/G4ParticleTable.hh +++ b/source/particles/management/include/G4ParticleTable.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ParticleTable.hh,v 1.12.2.1 1999/12/07 20:49:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ParticleTable.hh,v 1.14 2000/02/25 07:36:15 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -35,12 +35,9 @@ #include "globals.hh" #include "G4ParticleDefinition.hh" -#ifdef G4USE_STL + #include "g4std/map" #include "G4ParticleTableIterator.hh" -#else -#include "g4rw/tphdict.h" -#endif class G4UImessenger; class G4ParticleMessenger; @@ -58,17 +55,11 @@ class G4ParticleTable // public: -#ifdef G4USE_STL + typedef G4ParticleTableIterator::Map G4PTblDictionary; typedef G4ParticleTableIterator G4PTblDicIterator; typedef G4ParticleTableIterator::Map G4PTblEncodingDictionary; typedef G4ParticleTableIterator G4PTblEncodingDicIterator; -#else - typedef G4RWTPtrHashDictionary G4PTblDictionary; - typedef G4RWTPtrHashDictionaryIterator G4PTblDicIterator; - typedef G4RWTPtrHashDictionary G4PTblEncodingDictionary; - typedef G4RWTPtrHashDictionaryIterator G4PTblEncodingDicIterator; -#endif protected: G4ParticleTable(); @@ -174,13 +165,6 @@ class G4ParticleTable // remove all particles from G4ParticleTable and // delete them if they were created dynamically (i.e. not static objects) -#ifndef G4USE_STL - protected: - static unsigned HashFun(const G4String& particle_name); - static unsigned EncodingHashFun(const G4int& aEndcoding); - // hash functions -#endif - private: G4int verboseLevel; // controle flag for output message diff --git a/source/particles/management/include/G4ParticleTable.icc b/source/particles/management/include/G4ParticleTable.icc index 3014651801..c2a5cd583c 100644 --- a/source/particles/management/include/G4ParticleTable.icc +++ b/source/particles/management/include/G4ParticleTable.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ParticleTable.icc,v 1.5.4.1 1999/12/07 20:49:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ParticleTable.icc,v 1.7 2000/02/25 07:36:15 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -64,16 +64,12 @@ inline inline G4ParticleDefinition* G4ParticleTable::FindParticle(const G4String &particle_name) { -#ifdef G4USE_STL G4PTblDictionary::iterator it = fDictionary->find(particle_name); if (it != fDictionary->end()) { return (*it).second; }else { return 0; } -#else - return fDictionary -> findValue(&particle_name); -#endif } @@ -100,12 +96,8 @@ inline inline G4bool G4ParticleTable::contains(const G4String& particle_name) { -#ifdef G4USE_STL G4PTblDictionary::iterator it = fDictionary->find(particle_name); return (it != fDictionary->end()); -#else - return fDictionary -> contains(&particle_name); -#endif } inline @@ -128,35 +120,12 @@ inline inline G4int G4ParticleTable::entries() const { -#ifdef G4USE_STL return fDictionary->size(); -#else - return fDictionary -> entries(); -#endif } inline G4int G4ParticleTable::size() const { -#ifdef G4USE_STL return fDictionary->size(); -#else - return fDictionary -> entries(); -#endif } -#ifndef G4USE_STL -inline unsigned G4ParticleTable::HashFun(const G4String& particle_name) -{ - return particle_name.hash(); -} - -inline - unsigned G4ParticleTable::EncodingHashFun(const G4int& aEncoding) -{ - G4int temp = aEncoding; - if (aEncoding <0) temp *= -1; - G4int value = ( temp & 0x0FFF)*( temp & 0x0FFF)/2; - return value; -} -#endif diff --git a/source/particles/management/include/G4ParticleTableIterator.hh b/source/particles/management/include/G4ParticleTableIterator.hh index ac8ac78140..21f21a085e 100644 --- a/source/particles/management/include/G4ParticleTableIterator.hh +++ b/source/particles/management/include/G4ParticleTableIterator.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ParticleTableIterator.hh,v 1.2.4.1.2.1 1999/12/09 10:28:49 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ParticleTableIterator.hh,v 1.3 1999/12/15 14:51:11 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4ParticleWithCuts.hh b/source/particles/management/include/G4ParticleWithCuts.hh index be8a31b7b8..87986d6606 100644 --- a/source/particles/management/include/G4ParticleWithCuts.hh +++ b/source/particles/management/include/G4ParticleWithCuts.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ParticleWithCuts.hh,v 1.4.4.1.2.1 1999/12/08 17:34:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ParticleWithCuts.hh,v 1.5 1999/12/15 14:51:11 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4PhaseSpaceDecayChannel.hh b/source/particles/management/include/G4PhaseSpaceDecayChannel.hh index 73a8248fd3..97afa69b62 100644 --- a/source/particles/management/include/G4PhaseSpaceDecayChannel.hh +++ b/source/particles/management/include/G4PhaseSpaceDecayChannel.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PhaseSpaceDecayChannel.hh,v 1.2.4.1 1999/12/07 20:49:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PhaseSpaceDecayChannel.hh,v 1.3 1999/12/15 14:51:11 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4ShortLivedTable.hh b/source/particles/management/include/G4ShortLivedTable.hh index 9b27f15eaf..a22728e3e5 100644 --- a/source/particles/management/include/G4ShortLivedTable.hh +++ b/source/particles/management/include/G4ShortLivedTable.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ShortLivedTable.hh,v 1.7.2.1 1999/12/07 20:49:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ShortLivedTable.hh,v 1.9 2000/02/25 07:36:15 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -26,12 +26,7 @@ #include "globals.hh" #include "G4ParticleDefinition.hh" - -#ifdef G4USE_STL #include "g4std/vector" -#else -#include "g4rw/tpordvec.h" -#endif class G4ParticleTable; @@ -43,13 +38,8 @@ class G4ShortLivedTable // public: -#ifdef G4USE_STL // Use STL Vector as list of shortlives typedef G4std::vector G4ShortLivedList; -#else - // Use G4RWTPtrOrderedVector as list of shortlives - typedef G4RWTPtrOrderedVector G4ShortLivedList; -#endif public: G4ShortLivedTable(); @@ -57,7 +47,7 @@ class G4ShortLivedTable protected: G4ShortLivedTable(const G4ShortLivedTable &right); - public: + public: // With Description virtual ~G4ShortLivedTable(); G4bool IsShortLived(G4ParticleDefinition*) const; @@ -82,28 +72,21 @@ class G4ShortLivedTable inline G4bool G4ShortLivedTable::Contains(const G4ParticleDefinition* particle) const { -#ifdef G4USE_STL G4ShortLivedList::iterator i; for (i = fShortLivedList->begin(); i!= fShortLivedList->end(); ++i) { if (**i==*particle) return true; } return false; -#else - return fShortLivedList->contains(particle); -#endif } inline G4int G4ShortLivedTable::Entries() const { -#ifdef G4USE_STL return fShortLivedList->size(); -#else - return fShortLivedList->entries(); -#endif } -inline G4ParticleDefinition* G4ShortLivedTable::GetParticle(G4int index) const +inline + G4ParticleDefinition* G4ShortLivedTable::GetParticle(G4int index) const { if ( (index >=0 ) && (index < Entries()) ) { return (*fShortLivedList)[index]; diff --git a/source/particles/management/include/G4VDecayChannel.hh b/source/particles/management/include/G4VDecayChannel.hh index 20a634bfec..9b3e15622b 100644 --- a/source/particles/management/include/G4VDecayChannel.hh +++ b/source/particles/management/include/G4VDecayChannel.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VDecayChannel.hh,v 1.5.4.1.2.1 1999/12/08 17:34:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VDecayChannel.hh,v 1.7 2000/03/23 16:43:41 hweber Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -17,6 +17,7 @@ // History: first implementation, based on object model of // 27 July 1996 H.Kurashige // 30 May 1997 H.Kurashige +// 23 Mar. 2000 H.Weber : add GetAngularMomentum() // ------------------------------------------------------------ #ifndef G4VDecayChannel_h #define G4VDecayChannel_h 1 @@ -78,6 +79,8 @@ class G4VDecayChannel //get the pointer to a daughter particle G4ParticleDefinition * GetDaughter(G4int anIndex); + //get the angular momentum of the decay + G4int GetAngularMomentum(); //get the name of the parent particle const G4String& GetParentName() const; //get the name of a daughter particle diff --git a/source/particles/management/include/G4VIsotopeTable.hh b/source/particles/management/include/G4VIsotopeTable.hh index c867a5d200..81e91a2e84 100644 --- a/source/particles/management/include/G4VIsotopeTable.hh +++ b/source/particles/management/include/G4VIsotopeTable.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VIsotopeTable.hh,v 1.2 1999/10/28 23:24:14 kurasige Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VIsotopeTable.hh,v 1.3 2000/01/26 10:52:04 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -40,6 +40,7 @@ class G4VIsotopeTable public: // With Description // pure virtual method virtual G4bool FindIsotope(G4IsotopeProperty* property) = 0; + virtual G4IsotopeProperty* GetIsotope(G4int Z, G4int A, G4double E) = 0; // Search the isotope in the G4VIsotopeTable. // The isotope is desingated by // G4int Z: number of proton (Atomic number) diff --git a/source/particles/management/src/G4DalitzDecayChannel.cc b/source/particles/management/src/G4DalitzDecayChannel.cc index 9ad11e2bd3..1a361ca5f8 100644 --- a/source/particles/management/src/G4DalitzDecayChannel.cc +++ b/source/particles/management/src/G4DalitzDecayChannel.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DalitzDecayChannel.cc,v 1.3.8.1.2.1 1999/12/08 17:34:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DalitzDecayChannel.cc,v 1.4 1999/12/15 14:51:12 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/src/G4DecayProducts.cc b/source/particles/management/src/G4DecayProducts.cc index 986e97aed4..d1445ceb34 100644 --- a/source/particles/management/src/G4DecayProducts.cc +++ b/source/particles/management/src/G4DecayProducts.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DecayProducts.cc,v 1.4.8.1.2.1 1999/12/08 17:34:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DecayProducts.cc,v 1.5 1999/12/15 14:51:12 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/src/G4DecayTable.cc b/source/particles/management/src/G4DecayTable.cc index d5701c230f..776543031a 100644 --- a/source/particles/management/src/G4DecayTable.cc +++ b/source/particles/management/src/G4DecayTable.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DecayTable.cc,v 1.4.8.1.2.1 1999/12/08 17:34:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DecayTable.cc,v 1.6 2000/02/25 07:36:23 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -15,8 +15,9 @@ // For information related to this code contact: // CERN, CN Division, ASD group // History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo // 27 July 1996 H.Kurashige +// ---------------------------------------- +// implementation for STL 14 Feb. 2000 H.Kurashige // ------------------------------------------------------------ #include "globals.hh" @@ -30,8 +31,14 @@ G4DecayTable::G4DecayTable():parent(0) G4DecayTable::~G4DecayTable() { - channels->clearAndDestroy(); - delete channels; + // remove and delete all contents + G4VDecayChannelVector::iterator i; + for (i = channels->begin(); i!= channels->end(); ++i) { + delete (*i); + } + channels->clear(); + delete channels; + channels = 0; } void G4DecayTable::Insert( G4VDecayChannel * aChannel){ @@ -43,43 +50,47 @@ void G4DecayTable::Insert( G4VDecayChannel * aChannel){ G4cout << " input:" << aChannel->GetParent()->GetParticleName() << G4endl; #endif } else { - channels->insert(aChannel); + G4double r = aChannel->GetBR(); + G4VDecayChannelVector::iterator i; + for (i = channels->begin(); i!= channels->end(); ++i) { + if (r > (*i)->GetBR()) { + channels->insert(i,aChannel); + return; + } + } + channels->push_back(aChannel); } } G4VDecayChannel *G4DecayTable::SelectADecayChannel() { - // make cumlative table for branching ratio - G4double sumBR = 0.0; - G4int index; - G4int numberofchannels = channels->entries(); - G4double *cumBR = new G4double[numberofchannels]; - for (index=numberofchannels-1; index >=0 ; index--) { - sumBR += ((*channels)(index))->GetBR(); - cumBR[index] = sumBR; - } + // check if contents exist + if (channels->size()<1) return 0; - // select decay channel - G4double r = sumBR* G4UniformRand(); - G4VDecayChannel *channel; - for (index= numberofchannels-1; index >=0 ; index--) { - if (r < cumBR[index]) { - channel = (*channels)(index); - break; + while (1) { + G4double sumBR = 0.0; + G4double r= G4UniformRand(); + // select decay channel + G4VDecayChannelVector::iterator i; + for (i = channels->begin(); i!= channels->end(); ++i) { + sumBR += (*i)->GetBR(); + if (r < sumBR) { + return (*i); + } } } - delete [] cumBR; - return channel; + return 0; } void G4DecayTable::DumpInfo() const { G4cout << "G4DecayTable: " << parent->GetParticleName() << G4endl; - G4int numberofchannels = channels->entries(); - for (G4int index= numberofchannels -1; index >=0 ; index -=1) - { + G4int index =0; + G4VDecayChannelVector::iterator i; + for (i = channels->begin(); i!= channels->end(); ++i) { G4cout << index << ": "; - ((*channels)(index))->DumpInfo(); + (*i)->DumpInfo(); + index +=1; } G4cout << G4endl; } diff --git a/source/particles/management/src/G4DecayTableMessenger.cc b/source/particles/management/src/G4DecayTableMessenger.cc index 0e7641bc20..6fe3f61393 100644 --- a/source/particles/management/src/G4DecayTableMessenger.cc +++ b/source/particles/management/src/G4DecayTableMessenger.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DecayTableMessenger.cc,v 1.2.8.1.2.3 1999/12/14 07:08:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DecayTableMessenger.cc,v 1.3 1999/12/15 14:51:12 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/particles/management/src/G4DynamicParticle.cc b/source/particles/management/src/G4DynamicParticle.cc index 39fd2743fd..f03dc9435e 100644 --- a/source/particles/management/src/G4DynamicParticle.cc +++ b/source/particles/management/src/G4DynamicParticle.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DynamicParticle.cc,v 1.5.6.1.2.1 1999/12/08 17:34:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DynamicParticle.cc,v 1.6 1999/12/15 14:51:12 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/management/src/G4ElectronOccupancy.cc b/source/particles/management/src/G4ElectronOccupancy.cc index 633ed050bb..f844609810 100644 --- a/source/particles/management/src/G4ElectronOccupancy.cc +++ b/source/particles/management/src/G4ElectronOccupancy.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ElectronOccupancy.cc,v 1.4.6.1.2.1 1999/12/08 17:34:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ElectronOccupancy.cc,v 1.5 1999/12/15 14:51:12 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/management/src/G4IonTable.cc b/source/particles/management/src/G4IonTable.cc index d0376449ef..acf2317fc4 100644 --- a/source/particles/management/src/G4IonTable.cc +++ b/source/particles/management/src/G4IonTable.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IonTable.cc,v 1.22.4.6 1999/12/14 09:16:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IonTable.cc,v 1.25 2000/02/25 07:36:23 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- @@ -61,15 +61,9 @@ G4IonTable::~G4IonTable() // delete ion objects G4ParticleDefinition* particle; -#ifdef G4USE_STL G4IonList::reverse_iterator i; for (i = fIonList->rbegin(); i!= fIonList->rend(); ++i) { particle = *i; -#else - G4int idx; - for (idx=(fIonList->entries()-1); idx >=0 ; idx--) { - particle = (*fIonList)(idx); -#endif if ( !IsLightIon(particle) ) { // delete if not static objects @@ -114,6 +108,7 @@ G4ParticleDefinition* G4IonTable::CreateIon(G4int Z, G4int A, G4double E, G4int G4double life = -1.0; G4DecayTable* decayTable =0; + G4bool stable = true; G4IsotopeProperty* fProperty = FindIsotope(Z, A, E, J); if (fProperty !=0 ){ @@ -122,7 +117,7 @@ G4ParticleDefinition* G4IonTable::CreateIon(G4int Z, G4int A, G4double E, G4int life = fProperty->GetLifeTime(); decayTable = fProperty->GetDecayTable(); } - + stable = (life <= 0.); G4double mass = GetNucleusMass(Z, A)+ E; G4double charge = G4double(Z)*eplus; @@ -133,7 +128,10 @@ G4ParticleDefinition* G4IonTable::CreateIon(G4int Z, G4int A, G4double E, G4int J, +1, 0, 0, 0, 0, "nucleus", 0, A, 0, - true, life, decayTable); + stable, life, decayTable); + + // Set Excitation Energy + ((G4Ions*)(ion))->SetExcitationEnergy(E); #ifdef G4VERBOSE if (GetVerboseLevel()>1) { @@ -209,15 +207,9 @@ G4ParticleDefinition* G4IonTable::FindIon(G4int Z, G4int A, G4double E, G4int J) G4bool isFound = false; // -- loop over all particles in Ion table -#ifdef G4USE_STL G4IonList::iterator idx; for (idx = fIonList->begin(); idx!= fIonList->end(); ++idx) { ion = *idx; -#else - G4int idx; - for (idx= 0; idx < fIonList->entries() ; ++idx) { - ion = (*fIonList)(idx); -#endif // Z = Atomic Number G4int anAtomicNumber = 0; @@ -373,11 +365,7 @@ G4double G4IonTable::GetIonMass(G4int Z, G4int A) const void G4IonTable::Insert(G4ParticleDefinition* particle) { if (IsIon(particle)) { -#ifdef G4USE_STL fIonList->push_back(particle); -#else - fIonList->insert(particle); -#endif } else { //#ifdef G4VERBOSE //if (GetVerboseLevel()>0) { @@ -392,17 +380,12 @@ void G4IonTable::Insert(G4ParticleDefinition* particle) void G4IonTable::Remove(G4ParticleDefinition* particle) { if (IsIon(particle)) { -#ifdef G4USE_STL G4IonList::iterator idx; for (idx = fIonList->begin(); idx!= fIonList->end(); ++idx) { if ( particle == *idx) { fIonList->erase(idx); } } -#else - fIonList->remove(particle); -#endif - } else { #ifdef G4VERBOSE if (GetVerboseLevel()>0) { @@ -422,14 +405,9 @@ void G4IonTable::Remove(G4ParticleDefinition* particle) void G4IonTable::DumpTable(const G4String &particle_name) const { G4ParticleDefinition* ion; -#ifdef G4USE_STL G4IonList::iterator idx; for (idx = fIonList->begin(); idx!= fIonList->end(); ++idx) { ion = *idx; -#else - for (G4int idx= 0; idx < fIonList->entries() ; idx++) { - ion = (*fIonList)(idx); -#endif if (( particle_name == "ALL" ) || (particle_name == "all")){ ion->DumpTable(); } else if ( particle_name == ion->GetParticleName() ) { @@ -543,25 +521,10 @@ G4VIsotopeTable* G4IonTable::GetIsotopeTable() const //////////////////// G4IsotopeProperty* G4IonTable::FindIsotope(G4int Z, G4int A, G4double E, G4int J) { - G4IsotopeProperty* fProperty = new G4IsotopeProperty(); - - // Set Isotope Property - fProperty->SetAtomicNumber(Z); - fProperty->SetAtomicMass(A); - fProperty->SetEnergy(E); - fProperty->SetiSpin(J); - fProperty->SetLifeTime(-1.0); - fProperty->SetDecayTable(0); - if (fIsotopeTable ==0) return 0; - // ask IsotopeTable - if (fIsotopeTable->FindIsotope(fProperty)) { - return fProperty; - } else { - delete fProperty; - return 0; - } + // ask IsotopeTable // ask IsotopeTable + return fIsotopeTable->GetIsotope(Z,A,E); } diff --git a/source/particles/management/src/G4Ions.cc b/source/particles/management/src/G4Ions.cc index 193c1c19d5..1a746934b0 100644 --- a/source/particles/management/src/G4Ions.cc +++ b/source/particles/management/src/G4Ions.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Ions.cc,v 1.3.6.1.2.2 1999/12/14 07:08:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Ions.cc,v 1.4 1999/12/15 14:51:12 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/management/src/G4IsotopeProperty.cc b/source/particles/management/src/G4IsotopeProperty.cc index cc7a5b2a12..3f0ddc5e5d 100644 --- a/source/particles/management/src/G4IsotopeProperty.cc +++ b/source/particles/management/src/G4IsotopeProperty.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IsotopeProperty.cc,v 1.1.8.4 1999/12/14 07:08:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IsotopeProperty.cc,v 1.2 1999/12/15 14:51:12 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/management/src/G4KL3DecayChannel.cc b/source/particles/management/src/G4KL3DecayChannel.cc index 3b0f84a986..4e8ced4015 100644 --- a/source/particles/management/src/G4KL3DecayChannel.cc +++ b/source/particles/management/src/G4KL3DecayChannel.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4KL3DecayChannel.cc,v 1.3.8.1.2.1 1999/12/08 17:34:09 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4KL3DecayChannel.cc,v 1.4 1999/12/15 14:51:13 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/src/G4MuonDecayChannel.cc b/source/particles/management/src/G4MuonDecayChannel.cc index 26e2d5936e..0afffb4df3 100644 --- a/source/particles/management/src/G4MuonDecayChannel.cc +++ b/source/particles/management/src/G4MuonDecayChannel.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MuonDecayChannel.cc,v 1.4.8.1.2.1 1999/12/08 17:34:09 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MuonDecayChannel.cc,v 1.6 2000/02/25 07:36:24 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -32,13 +32,6 @@ G4MuonDecayChannel::G4MuonDecayChannel(const G4String& theParentName, G4double theBR) :G4VDecayChannel("Muon Decay",1) { - //#ifdef G4VERBOSE - //if (GetVerboseLevel()>1) { - // G4cout << "G4MuonDecayChannel:: constructor "; - // G4cout << "addr[" << this << "]" << G4endl; - //} - //#endif - // set names for daughter particles if (theParentName == "mu+") { SetBR(theBR); @@ -55,13 +48,13 @@ G4MuonDecayChannel::G4MuonDecayChannel(const G4String& theParentName, SetDaughter(1, "anti_nu_e"); SetDaughter(2, "nu_mu"); } else { - //#ifdef G4VERBOSE - // if (GetVerboseLevel()>0) { - // G4cout << "G4MuonDecayChannel:: constructor :"; - // G4cout << " parent particle is not muon but "; - // G4cout << theParentName << G4endl; - // } - //#endif +#ifdef G4VERBOSE + if (GetVerboseLevel()>0) { + G4cout << "G4MuonDecayChannel:: constructor :"; + G4cout << " parent particle is not muon but "; + G4cout << theParentName << G4endl; + } +#endif } } diff --git a/source/particles/management/src/G4NucleiProperties.cc b/source/particles/management/src/G4NucleiProperties.cc index 8c1959f210..5449e8c2a5 100644 --- a/source/particles/management/src/G4NucleiProperties.cc +++ b/source/particles/management/src/G4NucleiProperties.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4NucleiProperties.cc,v 1.5.6.1.2.1 1999/12/08 17:34:09 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4NucleiProperties.cc,v 1.6 1999/12/15 14:51:13 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/src/G4NucleiPropertiesTableA.cc b/source/particles/management/src/G4NucleiPropertiesTableA.cc index c3a23e8f11..b039cbca01 100644 --- a/source/particles/management/src/G4NucleiPropertiesTableA.cc +++ b/source/particles/management/src/G4NucleiPropertiesTableA.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4NucleiPropertiesTableA.cc,v 1.4.6.1 1999/12/07 20:49:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4NucleiPropertiesTableA.cc,v 1.5 1999/12/15 14:51:13 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1997 diff --git a/source/particles/management/src/G4NucleiPropertiesTableB.cc b/source/particles/management/src/G4NucleiPropertiesTableB.cc index 61d622e1c1..3daff88383 100644 --- a/source/particles/management/src/G4NucleiPropertiesTableB.cc +++ b/source/particles/management/src/G4NucleiPropertiesTableB.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4NucleiPropertiesTableB.cc,v 1.3.6.1 1999/12/07 20:49:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4NucleiPropertiesTableB.cc,v 1.4 1999/12/15 14:51:14 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1997 diff --git a/source/particles/management/src/G4PDGCodeChecker.cc b/source/particles/management/src/G4PDGCodeChecker.cc index 9bbf9eaf90..957d6fb542 100644 --- a/source/particles/management/src/G4PDGCodeChecker.cc +++ b/source/particles/management/src/G4PDGCodeChecker.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PDGCodeChecker.cc,v 1.2.6.1.2.3 1999/12/14 07:08:15 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PDGCodeChecker.cc,v 1.3 1999/12/15 14:51:14 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/management/src/G4ParticleDefinition.cc b/source/particles/management/src/G4ParticleDefinition.cc index 78425d16b2..29ddfea512 100644 --- a/source/particles/management/src/G4ParticleDefinition.cc +++ b/source/particles/management/src/G4ParticleDefinition.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ParticleDefinition.cc,v 1.6.6.1.2.1 1999/12/08 17:34:09 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ParticleDefinition.cc,v 1.9 2000/02/27 06:44:29 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- @@ -72,6 +72,7 @@ G4ParticleDefinition::G4ParticleDefinition( thePDGIsospin(iIsospin*0.5), thePDGIsospin3(iIsospin3*0.5), theParticleType(pType), + theParticleSubType(""), theLeptonNumber(lepton), theBaryonNumber(baryon), thePDGEncoding(encoding), @@ -214,7 +215,8 @@ void G4ParticleDefinition::DumpTable() const G4cout << ", " << theAntiQuarkContent[5] << G4endl; G4cout << " Lepton number : " << theLeptonNumber; G4cout << " Baryon number : " << theBaryonNumber << G4endl; - G4cout << " Particle type : " << theParticleType << G4endl; + G4cout << " Particle type : " << theParticleType ; + G4cout << " [" << theParticleSubType << "]" << G4endl; if ( fShortLivedFlag ){ G4cout << " ShortLived : ON" << G4endl; diff --git a/source/particles/management/src/G4ParticleMessenger.cc b/source/particles/management/src/G4ParticleMessenger.cc index 935e6858d7..cf21c4d218 100644 --- a/source/particles/management/src/G4ParticleMessenger.cc +++ b/source/particles/management/src/G4ParticleMessenger.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ParticleMessenger.cc,v 1.3.6.1.2.3 1999/12/14 07:08:15 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ParticleMessenger.cc,v 1.4 1999/12/15 14:51:14 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/particles/management/src/G4ParticlePropertyMessenger.cc b/source/particles/management/src/G4ParticlePropertyMessenger.cc index ab469d05f0..45f7d1b63c 100644 --- a/source/particles/management/src/G4ParticlePropertyMessenger.cc +++ b/source/particles/management/src/G4ParticlePropertyMessenger.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ParticlePropertyMessenger.cc,v 1.2.8.1.2.3 1999/12/14 07:08:15 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ParticlePropertyMessenger.cc,v 1.3 1999/12/15 14:51:14 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/particles/management/src/G4ParticleTable.cc b/source/particles/management/src/G4ParticleTable.cc index 1e18e8f4c2..8b42c1016c 100644 --- a/source/particles/management/src/G4ParticleTable.cc +++ b/source/particles/management/src/G4ParticleTable.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ParticleTable.cc,v 1.14.4.1.2.1 1999/12/08 17:34:09 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ParticleTable.cc,v 1.16 2000/02/25 07:36:24 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4ParticleTable // @@ -37,24 +37,13 @@ #include "G4IonTable.hh" #include "G4ShortLivedTable.hh" -#ifndef G4USE_STL -const G4int G4ParticleTableDefaultBucket = 32; -const G4int G4ParticleTableMaxInABucket = 64; -#endif //////////////////// G4ParticleTable::G4ParticleTable():verboseLevel(0),fParticleMessenger(0),noName(" ") { -#ifdef G4USE_STL fDictionary = new G4PTblDictionary(); fIterator = new G4PTblDicIterator( *fDictionary ); fEncodingDictionary = new G4PTblEncodingDictionary(); -#else - DictionaryBucketSize = G4ParticleTableDefaultBucket; - fDictionary = new G4PTblDictionary(G4ParticleTable::HashFun,DictionaryBucketSize); - fIterator = new G4PTblDicIterator( *fDictionary ); - fEncodingDictionary = new G4PTblEncodingDictionary(G4ParticleTable::EncodingHashFun,DictionaryBucketSize); -#endif // Ion Table fIonTable = new G4IonTable(); @@ -211,29 +200,13 @@ G4ParticleDefinition* G4ParticleTable::Insert(G4ParticleDefinition *particle) G4PTblDictionary *pdic = fDictionary; G4PTblEncodingDictionary *pedic = fEncodingDictionary; -#ifdef G4USE_STL (*pdic)[GetKey(particle)] = particle; // insert into EncodingDictionary G4int code = particle->GetPDGEncoding(); if (code !=0 ) { (*pedic)[code] = particle; } -#else - pdic -> insertKeyAndValue(new G4String(GetKey(particle)), particle); - // if HashDictionary get too big, rehash all of the key - if (pdic -> entries() > G4ParticleTableMaxInABucket*DictionaryBucketSize) { - DictionaryBucketSize *= 2; - pdic -> resize(DictionaryBucketSize); - G4PTblDicIterator *piter = fIterator; - piter -> reset(); - } - // insert into EncodingDictionary - G4int code = particle->GetPDGEncoding(); - if (code !=0 ) { - pedic -> insertKeyAndValue(new G4int(code), particle); - } -#endif // insert it in IonTable if "nucleus" if (fIonTable->IsIon(particle) ){ fIonTable->Insert(particle); @@ -253,8 +226,6 @@ G4ParticleDefinition* G4ParticleTable::Insert(G4ParticleDefinition *particle) //////////////////// G4ParticleDefinition* G4ParticleTable::Remove(G4ParticleDefinition* particle) { -#ifdef G4USE_STL - G4PTblDictionary::iterator it = fDictionary->find(GetKey(particle)); if (it != fDictionary->end()) { fDictionary->erase(it); @@ -266,20 +237,7 @@ G4ParticleDefinition* G4ParticleTable::Remove(G4ParticleDefinition* particle) } else { return 0; } -#else - if (! contains(particle) ) return 0; - G4String particle_name = GetKey(particle); - fDictionary->remove(&particle_name ); - - // remove from EncodingDictionary - G4int code = particle->GetPDGEncoding(); - if (code !=0 ) { - G4PTblEncodingDictionary *pedic = fEncodingDictionary; - pedic -> remove(&code); - } -#endif - // remove it from IonTable if "nucleus" if (fIonTable->IsIon(particle) ){ fIonTable->Remove(particle); @@ -361,14 +319,11 @@ G4ParticleDefinition* G4ParticleTable::FindParticle(G4int aPDGEncoding ) G4PTblEncodingDictionary *pedic = fEncodingDictionary; G4ParticleDefinition* particle =0; -#ifdef G4USE_STL + G4PTblEncodingDictionary::iterator it = pedic->find(aPDGEncoding ); if (it != pedic->end()) { particle = (*it).second; } -#else - particle = pedic -> findValue( &aPDGEncoding ); -#endif #ifdef G4VERBOSE if ((particle == 0) && (verboseLevel>0) ){ diff --git a/source/particles/management/src/G4ParticleWithCuts.cc b/source/particles/management/src/G4ParticleWithCuts.cc index 81bb522233..f1f9f0132f 100644 --- a/source/particles/management/src/G4ParticleWithCuts.cc +++ b/source/particles/management/src/G4ParticleWithCuts.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ParticleWithCuts.cc,v 1.5.8.1.2.5 1999/12/14 09:16:48 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ParticleWithCuts.cc,v 1.6 1999/12/15 14:51:14 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/management/src/G4PhaseSpaceDecayChannel.cc b/source/particles/management/src/G4PhaseSpaceDecayChannel.cc index 747ac3e0a1..1a2889c93b 100644 --- a/source/particles/management/src/G4PhaseSpaceDecayChannel.cc +++ b/source/particles/management/src/G4PhaseSpaceDecayChannel.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PhaseSpaceDecayChannel.cc,v 1.3.8.1.2.1 1999/12/08 17:34:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PhaseSpaceDecayChannel.cc,v 1.4 1999/12/15 14:51:15 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/src/G4ShortLivedTable.cc b/source/particles/management/src/G4ShortLivedTable.cc index e25e2b9a61..97045f0a3f 100644 --- a/source/particles/management/src/G4ShortLivedTable.cc +++ b/source/particles/management/src/G4ShortLivedTable.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ShortLivedTable.cc,v 1.7.4.1.2.5 1999/12/14 09:16:48 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ShortLivedTable.cc,v 1.9 2000/02/25 07:36:24 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- @@ -37,15 +37,11 @@ G4ShortLivedTable::~G4ShortLivedTable() { if (fShortLivedList ==0) return; // remove all contents in the short lived List and delete all particles -#ifdef G4USE_STL G4ShortLivedList::iterator i; for (i = fShortLivedList->begin(); i!= fShortLivedList->end(); ++i) { delete (*i); } fShortLivedList->clear(); -#else - fShortLivedList->clearAndDestroy(); -#endif delete fShortLivedList; fShortLivedList =0; } @@ -63,35 +59,19 @@ G4bool G4ShortLivedTable::IsShortLived(G4ParticleDefinition* particle) const void G4ShortLivedTable::Insert(G4ParticleDefinition* particle) { if (IsShortLived(particle)) { -#ifdef G4USE_STL fShortLivedList->push_back(particle); -#else - fShortLivedList->insert(particle); -#endif - } else { - //#ifdef G4VERBOSE - //if (GetVerboseLevel()>0) { - // G4cout << "G4ShortLivedTable::Insert :" << particle->GetParticleName() ; - // G4cout << " is not short lived" << G4endl; - //} - //#endif - } + } } void G4ShortLivedTable::Remove(G4ParticleDefinition* particle) { if (IsShortLived(particle)) { -#ifdef G4USE_STL G4ShortLivedList::iterator idx; for (idx = fShortLivedList->begin(); idx!= fShortLivedList->end(); ++idx) { if ( particle == *idx) { fShortLivedList->erase(idx); } } -#else - fShortLivedList->remove(particle); -#endif - } else { #ifdef G4VERBOSE if (GetVerboseLevel()>0) { @@ -107,15 +87,9 @@ void G4ShortLivedTable::DumpTable(const G4String &particle_name) const { G4ParticleDefinition* particle; -#ifdef G4USE_STL G4ShortLivedList::iterator idx; for (idx = fShortLivedList->begin(); idx!= fShortLivedList->end(); ++idx) { particle = *idx; -#else - for (G4int idx= 0; idx < fShortLivedList->entries() ; idx++) { - particle = (*fShortLivedList)(idx); -#endif - if (( particle_name == "ALL" ) || (particle_name == "all")){ particle->DumpTable(); } else if ( particle_name == particle->GetParticleName() ) { diff --git a/source/particles/management/src/G4VDecayChannel.cc b/source/particles/management/src/G4VDecayChannel.cc index 6c1f68004a..fe4c0d0204 100644 --- a/source/particles/management/src/G4VDecayChannel.cc +++ b/source/particles/management/src/G4VDecayChannel.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VDecayChannel.cc,v 1.5.6.1.2.1 1999/12/08 17:34:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VDecayChannel.cc,v 1.8 2000/05/29 01:30:52 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -17,6 +17,7 @@ // History: first implementation, based on object model of // 27 July 1996 H.Kurashige // 30 May 1997 H.Kurashige +// 23 Mar. 2000 H.Weber : add GetAngularMomentum // ------------------------------------------------------------ #include "G4ParticleDefinition.hh" @@ -360,6 +361,59 @@ void G4VDecayChannel::SetParent(const G4ParticleDefinition * parent_type) if (parent_type != 0) SetParent(parent_type->GetParticleName()); } +G4int G4VDecayChannel::GetAngularMomentum() +{ + // determine angular momentum + + // fill pointers to daughter particles if not yet set + if (daughters == 0) FillDaughters(); + + const G4int PiSpin = parent->GetPDGiSpin(); + const G4int PParity = parent->GetPDGiParity(); + if (2==numberOfDaughters) { // up to now we can only handle two particle decays + const G4int D1iSpin = daughters[0]->GetPDGiSpin(); + const G4int D1Parity = daughters[0]->GetPDGiParity(); + const G4int D2iSpin = daughters[1]->GetPDGiSpin(); + const G4int D2Parity = daughters[1]->GetPDGiParity(); + const G4int MiniSpin = abs (D1iSpin - D2iSpin); + const G4int MaxiSpin = D1iSpin + D2iSpin; + const G4int lMax = (PiSpin+D1iSpin+D2iSpin)/2; // l is allways int + G4int lMin; +#ifdef G4VERBOSE + if (verboseLevel>1) { + G4cout << "iSpin: " << PiSpin << " -> " << D1iSpin << " + " << D2iSpin << G4endl; + G4cout << "2*jmin, 2*jmax, lmax " << MiniSpin << " " << MaxiSpin << " " << lMax << G4endl; + } +#endif + for (G4int j=MiniSpin; j<=MaxiSpin; j+=2){ // loop over all possible spin couplings + lMin = abs(PiSpin-j)/2; +#ifdef G4VERBOSE + if (verboseLevel>1) + G4cout << "-> checking 2*j=" << j << G4endl; +#endif + for (G4int l=lMin; l<=lMax; l++) { +#ifdef G4VERBOSE + if (verboseLevel>1) + G4cout << " checking l=" << l << G4endl; +#endif + if (l%2==0) { + if (PParity == D1Parity*D2Parity) { // check parity for this l + return l; + } + } else { + if (PParity == -1*D1Parity*D2Parity) { // check parity for this l + return l; + } + } + } + } + } else { + G4Exception ("G4VDecayChannel::GetAngularMomentum: Sorry, can't handle 3 particle decays (up to now)"); + } + G4Exception ("G4VDecayChannel::GetAngularMomentum: Can't find angular momentum for this decay!"); + return 0; +} + void G4VDecayChannel::DumpInfo() { G4cout << " BR: " << rbranch << " [" << kinematics_name << "]"; @@ -375,9 +429,3 @@ void G4VDecayChannel::DumpInfo() G4cout << G4endl; } - - - - - - diff --git a/source/particles/shortlived/include/G4DiQuarks.hh b/source/particles/shortlived/include/G4DiQuarks.hh index c2b7e80845..0f9f4ebc32 100644 --- a/source/particles/shortlived/include/G4DiQuarks.hh +++ b/source/particles/shortlived/include/G4DiQuarks.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DiQuarks.hh,v 1.2.8.1 1999/12/07 20:50:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DiQuarks.hh,v 1.3 1999/12/15 14:51:15 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/shortlived/include/G4ExcitedBaryonConstructor.hh b/source/particles/shortlived/include/G4ExcitedBaryonConstructor.hh index da693d9a8d..fd07bb9389 100644 --- a/source/particles/shortlived/include/G4ExcitedBaryonConstructor.hh +++ b/source/particles/shortlived/include/G4ExcitedBaryonConstructor.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ExcitedBaryonConstructor.hh,v 1.2.6.1 1999/12/07 20:50:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ExcitedBaryonConstructor.hh,v 1.4 2000/02/27 07:48:50 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- @@ -59,6 +59,7 @@ class G4ExcitedBaryonConstructor virtual G4bool Exist( G4int ) = 0; virtual G4int GetQuarkContents(G4int, G4int)=0; virtual G4String GetName(G4int, G4int )=0; + virtual G4String GetMultipletName(G4int)=0; virtual G4double GetMass( G4int )=0; virtual G4double GetWidth( G4int )=0; virtual G4int GetiSpin( G4int )=0; diff --git a/source/particles/shortlived/include/G4ExcitedBaryons.hh b/source/particles/shortlived/include/G4ExcitedBaryons.hh index 8f9dd06dcc..60153fba57 100644 --- a/source/particles/shortlived/include/G4ExcitedBaryons.hh +++ b/source/particles/shortlived/include/G4ExcitedBaryons.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ExcitedBaryons.hh,v 1.2.6.1 1999/12/07 20:50:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ExcitedBaryons.hh,v 1.4 2000/02/27 07:48:50 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -46,8 +46,14 @@ class G4ExcitedBaryons : public G4VShortLivedParticle ); G4ExcitedBaryons* ExcitedBaryonsDefinition(){return this;}; G4ExcitedBaryons* ExcitedBaryons(){return this;}; + void SetMultipletName(const G4String& name); }; +inline + void G4ExcitedBaryons::SetMultipletName(const G4String& name) +{ + SetParticleSubType(name); +} #endif diff --git a/source/particles/shortlived/include/G4ExcitedDeltaConstructor.hh b/source/particles/shortlived/include/G4ExcitedDeltaConstructor.hh index 8df7ac7b9e..041b686697 100644 --- a/source/particles/shortlived/include/G4ExcitedDeltaConstructor.hh +++ b/source/particles/shortlived/include/G4ExcitedDeltaConstructor.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ExcitedDeltaConstructor.hh,v 1.2.6.1 1999/12/07 20:50:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ExcitedDeltaConstructor.hh,v 1.4 2000/02/27 07:48:50 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- @@ -41,6 +41,7 @@ class G4ExcitedDeltaConstructor: public G4ExcitedBaryonConstructor virtual G4int GetQuarkContents(G4int, G4int); virtual G4String GetName(G4int iIso3, G4int iState); + virtual G4String GetMultipletName(G4int iState); virtual G4double GetMass(G4int iState); virtual G4double GetWidth(G4int iState); @@ -152,7 +153,13 @@ inline } inline - G4String G4ExcitedDeltaConstructor::GetName(G4int iIso3, G4int iState) + G4String G4ExcitedDeltaConstructor::GetMultipletName(G4int iState) +{ + return name[iState]; +} + +inline + G4String G4ExcitedDeltaConstructor::GetName(G4int iIso3, G4int iState) { G4String particle = name[iState]; if ( iIso3 == -3 ){ diff --git a/source/particles/shortlived/include/G4ExcitedLambdaConstructor.hh b/source/particles/shortlived/include/G4ExcitedLambdaConstructor.hh index 3cd6e3a86c..b00c585118 100644 --- a/source/particles/shortlived/include/G4ExcitedLambdaConstructor.hh +++ b/source/particles/shortlived/include/G4ExcitedLambdaConstructor.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ExcitedLambdaConstructor.hh,v 1.2.6.1 1999/12/07 20:50:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ExcitedLambdaConstructor.hh,v 1.4 2000/02/27 07:48:50 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- @@ -38,7 +38,7 @@ class G4ExcitedLambdaConstructor: public G4ExcitedBaryonConstructor virtual G4int GetQuarkContents(G4int, G4int); virtual G4String GetName(G4int iIso3, G4int iState); - + virtual G4String GetMultipletName(G4int iState); virtual G4double GetMass(G4int iState); virtual G4double GetWidth(G4int iState); virtual G4int GetiSpin(G4int iState); @@ -134,7 +134,13 @@ inline } inline - G4String G4ExcitedLambdaConstructor::GetName(G4int iIso3, G4int iState) + G4String G4ExcitedLambdaConstructor::GetMultipletName(G4int iState) +{ + return name[iState]; +} + +inline + G4String G4ExcitedLambdaConstructor::GetName(G4int iIso3, G4int iState) { G4String particle = name[iState]; return particle; diff --git a/source/particles/shortlived/include/G4ExcitedMesonConstructor.hh b/source/particles/shortlived/include/G4ExcitedMesonConstructor.hh index b3920c6076..b7e37e2c37 100644 --- a/source/particles/shortlived/include/G4ExcitedMesonConstructor.hh +++ b/source/particles/shortlived/include/G4ExcitedMesonConstructor.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ExcitedMesonConstructor.hh,v 1.3.6.1 1999/12/07 20:50:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ExcitedMesonConstructor.hh,v 1.5 2000/02/27 07:48:50 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- @@ -153,7 +153,7 @@ class G4ExcitedMesonConstructor inline - G4String G4ExcitedMesonConstructor::GetName(G4int iIso3, + G4String G4ExcitedMesonConstructor::GetName(G4int iIso3, G4int iState, G4int iType) { diff --git a/source/particles/shortlived/include/G4ExcitedMesons.hh b/source/particles/shortlived/include/G4ExcitedMesons.hh index cbc2faa307..2d0d1456e9 100644 --- a/source/particles/shortlived/include/G4ExcitedMesons.hh +++ b/source/particles/shortlived/include/G4ExcitedMesons.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ExcitedMesons.hh,v 1.2.6.1 1999/12/07 20:50:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ExcitedMesons.hh,v 1.4 2000/02/27 07:48:50 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -44,10 +44,19 @@ class G4ExcitedMesons : public G4VShortLivedParticle G4bool stable, G4double lifetime, G4DecayTable *decaytable ); + G4ExcitedMesons* ExcitedMesonsDefinition(){return this;}; G4ExcitedMesons* ExcitedMesons(){return this;}; + + void SetMultipletName(const G4String& ); + }; +inline + void G4ExcitedMesons::SetMultipletName(const G4String& name) +{ + SetParticleSubType(name); +} #endif diff --git a/source/particles/shortlived/include/G4ExcitedNucleonConstructor.hh b/source/particles/shortlived/include/G4ExcitedNucleonConstructor.hh index 59c1b71c8a..9b462290a7 100644 --- a/source/particles/shortlived/include/G4ExcitedNucleonConstructor.hh +++ b/source/particles/shortlived/include/G4ExcitedNucleonConstructor.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ExcitedNucleonConstructor.hh,v 1.2.6.1 1999/12/07 20:50:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ExcitedNucleonConstructor.hh,v 1.4 2000/02/27 07:48:50 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- @@ -41,7 +41,7 @@ class G4ExcitedNucleonConstructor: public G4ExcitedBaryonConstructor virtual G4int GetQuarkContents(G4int, G4int); virtual G4String GetName(G4int iIso3, G4int iState); - + virtual G4String GetMultipletName(G4int iState); virtual G4double GetMass(G4int iState); virtual G4double GetWidth(G4int iState); virtual G4int GetiSpin(G4int iState); @@ -148,6 +148,12 @@ inline return quark; } +inline + G4String G4ExcitedNucleonConstructor::GetMultipletName(G4int iState) +{ + return name[iState]; +} + inline G4String G4ExcitedNucleonConstructor::GetName(G4int iIso3, G4int iState) { diff --git a/source/particles/shortlived/include/G4ExcitedSigmaConstructor.hh b/source/particles/shortlived/include/G4ExcitedSigmaConstructor.hh index 57f61fad48..cb9e7214f8 100644 --- a/source/particles/shortlived/include/G4ExcitedSigmaConstructor.hh +++ b/source/particles/shortlived/include/G4ExcitedSigmaConstructor.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ExcitedSigmaConstructor.hh,v 1.2.6.1 1999/12/07 20:50:03 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ExcitedSigmaConstructor.hh,v 1.4 2000/02/27 07:48:50 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- @@ -38,6 +38,7 @@ class G4ExcitedSigmaConstructor: public G4ExcitedBaryonConstructor virtual G4int GetQuarkContents(G4int, G4int); virtual G4String GetName(G4int iIso3, G4int iState); + virtual G4String GetMultipletName(G4int iState); virtual G4double GetMass(G4int iState); virtual G4double GetWidth(G4int iState); @@ -146,7 +147,13 @@ inline } inline - G4String G4ExcitedSigmaConstructor::GetName(G4int iIso3, G4int iState) + G4String G4ExcitedSigmaConstructor::GetMultipletName(G4int iState) +{ + return name[iState]; +} + +inline + G4String G4ExcitedSigmaConstructor::GetName(G4int iIso3, G4int iState) { G4String particle = name[iState]; if (iIso3 == +2) { diff --git a/source/particles/shortlived/include/G4ExcitedXiConstructor.hh b/source/particles/shortlived/include/G4ExcitedXiConstructor.hh index 556286bc21..45f705261e 100644 --- a/source/particles/shortlived/include/G4ExcitedXiConstructor.hh +++ b/source/particles/shortlived/include/G4ExcitedXiConstructor.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ExcitedXiConstructor.hh,v 1.2.6.1 1999/12/07 20:50:03 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ExcitedXiConstructor.hh,v 1.4 2000/02/27 07:48:50 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- @@ -38,6 +38,7 @@ class G4ExcitedXiConstructor: public G4ExcitedBaryonConstructor virtual G4int GetQuarkContents(G4int, G4int); virtual G4String GetName(G4int iIso3, G4int iState); + virtual G4String GetMultipletName(G4int iState); virtual G4double GetMass(G4int iState); virtual G4double GetWidth(G4int iState); @@ -132,7 +133,13 @@ inline } inline - G4String G4ExcitedXiConstructor::GetName(G4int iIso3, G4int iState) + G4String G4ExcitedXiConstructor::GetMultipletName(G4int iState) +{ + return name[iState]; +} + +inline + G4String G4ExcitedXiConstructor::GetName(G4int iIso3, G4int iState) { G4String particle = name[iState]; if (iIso3 == +1) { diff --git a/source/particles/shortlived/include/G4Gluons.hh b/source/particles/shortlived/include/G4Gluons.hh index 024d5147af..535600c7dc 100644 --- a/source/particles/shortlived/include/G4Gluons.hh +++ b/source/particles/shortlived/include/G4Gluons.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Gluons.hh,v 1.2.8.1 1999/12/07 20:50:03 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Gluons.hh,v 1.3 1999/12/15 14:51:16 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/shortlived/include/G4Quarks.hh b/source/particles/shortlived/include/G4Quarks.hh index 0865cf2f00..e47ee0c1ac 100644 --- a/source/particles/shortlived/include/G4Quarks.hh +++ b/source/particles/shortlived/include/G4Quarks.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Quarks.hh,v 1.2.8.1 1999/12/07 20:50:03 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Quarks.hh,v 1.3 1999/12/15 14:51:16 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/shortlived/include/G4ShortLivedConstructor.hh b/source/particles/shortlived/include/G4ShortLivedConstructor.hh index 1e36251dea..4f993d6332 100644 --- a/source/particles/shortlived/include/G4ShortLivedConstructor.hh +++ b/source/particles/shortlived/include/G4ShortLivedConstructor.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ShortLivedConstructor.hh,v 1.2.6.1 1999/12/07 20:50:03 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ShortLivedConstructor.hh,v 1.3 1999/12/15 14:51:16 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/include/G4VShortLivedParticle.hh b/source/particles/shortlived/include/G4VShortLivedParticle.hh index d183aa41ab..a86cfebb21 100644 --- a/source/particles/shortlived/include/G4VShortLivedParticle.hh +++ b/source/particles/shortlived/include/G4VShortLivedParticle.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VShortLivedParticle.hh,v 1.2.8.1 1999/12/07 20:50:03 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VShortLivedParticle.hh,v 1.3 1999/12/15 14:51:16 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/shortlived/src/G4DiQuarks.cc b/source/particles/shortlived/src/G4DiQuarks.cc index f49ff9947c..da9b56a460 100644 --- a/source/particles/shortlived/src/G4DiQuarks.cc +++ b/source/particles/shortlived/src/G4DiQuarks.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DiQuarks.cc,v 1.1.10.1.2.2 1999/12/14 07:08:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DiQuarks.cc,v 1.3 2000/02/27 07:48:51 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -41,4 +41,5 @@ G4DiQuarks::G4DiQuarks( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("di_quark"); } diff --git a/source/particles/shortlived/src/G4ExcitedBaryonConstructor.cc b/source/particles/shortlived/src/G4ExcitedBaryonConstructor.cc index 402c80ea17..6351a2970c 100644 --- a/source/particles/shortlived/src/G4ExcitedBaryonConstructor.cc +++ b/source/particles/shortlived/src/G4ExcitedBaryonConstructor.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ExcitedBaryonConstructor.cc,v 1.2.6.1.2.1 1999/12/08 17:34:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ExcitedBaryonConstructor.cc,v 1.4 2000/02/27 07:48:51 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- @@ -90,6 +90,7 @@ void G4ExcitedBaryonConstructor::ConstructParticle(G4int idx) type, leptonNumber, baryonNumber, GetEncoding( iIso3,idx), false, 0.0, NULL ); + ((G4ExcitedBaryons*)(particle))->SetMultipletName(GetMultipletName(idx)); particle->SetDecayTable(CreateDecayTable( name, iIso3, idx, false)); } } @@ -123,6 +124,8 @@ void G4ExcitedBaryonConstructor::ConstructAntiParticle(G4int idx) -1*GetEncoding( iIso3,idx), false, 0.0, NULL ); + + ((G4ExcitedBaryons*)(particle))->SetMultipletName(GetMultipletName(idx)); particle->SetDecayTable(CreateDecayTable( name, iIso3, idx, true)); } diff --git a/source/particles/shortlived/src/G4ExcitedBaryons.cc b/source/particles/shortlived/src/G4ExcitedBaryons.cc index a9e7a6e133..716c6cb5fc 100644 --- a/source/particles/shortlived/src/G4ExcitedBaryons.cc +++ b/source/particles/shortlived/src/G4ExcitedBaryons.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ExcitedBaryons.cc,v 1.2.6.1.2.2 1999/12/14 07:08:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ExcitedBaryons.cc,v 1.3 1999/12/15 14:51:17 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4ExcitedDeltaConstructor.cc b/source/particles/shortlived/src/G4ExcitedDeltaConstructor.cc index 3ba4006a02..54a8d60491 100644 --- a/source/particles/shortlived/src/G4ExcitedDeltaConstructor.cc +++ b/source/particles/shortlived/src/G4ExcitedDeltaConstructor.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ExcitedDeltaConstructor.cc,v 1.3.6.1 1999/12/07 20:50:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ExcitedDeltaConstructor.cc,v 1.4 1999/12/15 14:51:17 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4ExcitedLambdaConstructor.cc b/source/particles/shortlived/src/G4ExcitedLambdaConstructor.cc index b94511bf2d..8c04f84541 100644 --- a/source/particles/shortlived/src/G4ExcitedLambdaConstructor.cc +++ b/source/particles/shortlived/src/G4ExcitedLambdaConstructor.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ExcitedLambdaConstructor.cc,v 1.2.6.1 1999/12/07 20:50:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ExcitedLambdaConstructor.cc,v 1.3 1999/12/15 14:51:17 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4ExcitedMesonConstructor.cc b/source/particles/shortlived/src/G4ExcitedMesonConstructor.cc index 4afd942326..35cdcc61b6 100644 --- a/source/particles/shortlived/src/G4ExcitedMesonConstructor.cc +++ b/source/particles/shortlived/src/G4ExcitedMesonConstructor.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ExcitedMesonConstructor.cc,v 1.6.6.1.2.1 1999/12/08 17:34:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ExcitedMesonConstructor.cc,v 1.8 2000/02/27 07:48:51 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- @@ -91,7 +91,7 @@ void G4ExcitedMesonConstructor::ConstructMesons(G4int iState, G4int iType) G4String aName; - G4ParticleDefinition* particle; + G4ExcitedMesons* particle; for ( G4int iIso3=(-1)*iIsoSpin[iType]; iIso3<=iIsoSpin[iType]; iIso3+=2) { aName= GetName(iIso3, iState, iType); @@ -118,7 +118,7 @@ void G4ExcitedMesonConstructor::ConstructMesons(G4int iState, G4int iType) // set same encoding for AntiParticle particle->SetAntiPDGEncoding(GetEncoding(iIso3, iState, iType)); } - + particle->SetMultipletName(name[iState][iType]); particle->SetDecayTable(CreateDecayTable( aName, iIso3, iState, iType)); } } diff --git a/source/particles/shortlived/src/G4ExcitedMesons.cc b/source/particles/shortlived/src/G4ExcitedMesons.cc index 1ec785d326..bda66c75d9 100644 --- a/source/particles/shortlived/src/G4ExcitedMesons.cc +++ b/source/particles/shortlived/src/G4ExcitedMesons.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ExcitedMesons.cc,v 1.2.6.1.2.2 1999/12/14 07:08:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ExcitedMesons.cc,v 1.3 1999/12/15 14:51:17 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4ExcitedNucleonConstructor.cc b/source/particles/shortlived/src/G4ExcitedNucleonConstructor.cc index 6d2d2d91b4..027fc97a11 100644 --- a/source/particles/shortlived/src/G4ExcitedNucleonConstructor.cc +++ b/source/particles/shortlived/src/G4ExcitedNucleonConstructor.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ExcitedNucleonConstructor.cc,v 1.3.6.1 1999/12/07 20:50:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ExcitedNucleonConstructor.cc,v 1.4 1999/12/15 14:51:17 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4ExcitedSigmaConstructor.cc b/source/particles/shortlived/src/G4ExcitedSigmaConstructor.cc index 57761aeaeb..570cb6cacc 100644 --- a/source/particles/shortlived/src/G4ExcitedSigmaConstructor.cc +++ b/source/particles/shortlived/src/G4ExcitedSigmaConstructor.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ExcitedSigmaConstructor.cc,v 1.3.6.1 1999/12/07 20:50:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ExcitedSigmaConstructor.cc,v 1.4 1999/12/15 14:51:17 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4ExcitedXiConstructor.cc b/source/particles/shortlived/src/G4ExcitedXiConstructor.cc index af58e86db0..7f0090b8b2 100644 --- a/source/particles/shortlived/src/G4ExcitedXiConstructor.cc +++ b/source/particles/shortlived/src/G4ExcitedXiConstructor.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ExcitedXiConstructor.cc,v 1.2.6.1 1999/12/07 20:50:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ExcitedXiConstructor.cc,v 1.3 1999/12/15 14:51:17 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4Gluons.cc b/source/particles/shortlived/src/G4Gluons.cc index 5917368a69..5160a62bb7 100644 --- a/source/particles/shortlived/src/G4Gluons.cc +++ b/source/particles/shortlived/src/G4Gluons.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Gluons.cc,v 1.1.10.1.2.2 1999/12/14 07:08:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Gluons.cc,v 1.3 2000/02/27 07:48:51 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -41,4 +41,5 @@ G4Gluons::G4Gluons( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("gluon"); } diff --git a/source/particles/shortlived/src/G4Quarks.cc b/source/particles/shortlived/src/G4Quarks.cc index 1142f6a33f..f4d1256c75 100644 --- a/source/particles/shortlived/src/G4Quarks.cc +++ b/source/particles/shortlived/src/G4Quarks.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Quarks.cc,v 1.1.10.1.2.2 1999/12/14 07:08:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Quarks.cc,v 1.3 2000/02/27 07:48:51 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ---------------------------------------------------------------------- @@ -41,4 +41,5 @@ G4Quarks::G4Quarks( iConjugation,iIsospin,iIsospin3,gParity,pType, lepton,baryon,encoding,stable,lifetime,decaytable ) { + SetParticleSubType("quark"); } diff --git a/source/particles/shortlived/src/G4ShortLivedConstructor.cc b/source/particles/shortlived/src/G4ShortLivedConstructor.cc index 9632fb1fe4..17dd85191e 100644 --- a/source/particles/shortlived/src/G4ShortLivedConstructor.cc +++ b/source/particles/shortlived/src/G4ShortLivedConstructor.cc @@ -5,14 +5,14 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ShortLivedConstructor.cc,v 1.3.6.1 1999/12/07 20:50:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ShortLivedConstructor.cc,v 1.7 2000/03/02 00:52:18 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- // GEANT 4 class implementation file // - +// Add "rho0" 25 Feb. 2000 H.Kurashige #include "G4ShortLivedConstructor.hh" #include "G4ParticleDefinition.hh" @@ -334,7 +334,7 @@ void G4ShortLivedConstructor::ConstructBaryons() { G4DecayTable* decayTable; G4VDecayChannel* mode; - G4ParticleDefinition* particle; + G4ExcitedBaryons* particle; // Construct Resonace particles as dynamic object // Arguments for constructor are as follows @@ -352,6 +352,8 @@ void G4ShortLivedConstructor::ConstructBaryons() 3, +3, 0, "baryon", 0, +1, 2224, false, 0.0, NULL); + // set sub type + particle->SetMultipletName("delta"); // create decay table decayTable = new G4DecayTable(); // create decay channel of delta++ -> proton + pi+ @@ -369,6 +371,8 @@ void G4ShortLivedConstructor::ConstructBaryons() 3, +1, 0, "baryon", 0, +1, 2214, false, 0.0, NULL); + // set sub type + particle->SetMultipletName("delta(1232)"); // create decay table decayTable = new G4DecayTable(); // create decay channel of delta+ -> proton + Gamma @@ -397,6 +401,8 @@ void G4ShortLivedConstructor::ConstructBaryons() 3, -1, 0, "baryon", 0, +1, 2114, false, 0.0, NULL); + // set sub type + particle->SetMultipletName("delta(1232)"); // create decay table decayTable = new G4DecayTable(); // create decay channel of delta+ -> neutron + gamma @@ -423,6 +429,8 @@ void G4ShortLivedConstructor::ConstructBaryons() 3, -3, 0, "baryon", 0, +1, 1114, false, 0.0, NULL); + // set sub type + particle->SetMultipletName("delta(1232)"); // create decay table decayTable = new G4DecayTable(); // create decay channel of delta+ -> neutron + pi- @@ -442,6 +450,8 @@ void G4ShortLivedConstructor::ConstructBaryons() 3, -3, 0, "baryon", 0, -1, -2224, false, 0.0, NULL); + // set sub type + particle->SetMultipletName("delta(1232)"); // create decay table decayTable = new G4DecayTable(); // create decay channel of delta++ -> anti_proton + pi- @@ -459,6 +469,8 @@ void G4ShortLivedConstructor::ConstructBaryons() 3, -1, 0, "baryon", 0, -1, -2214, false, 0.0, NULL); + // set sub type + particle->SetMultipletName("delta(1232)"); // create decay table decayTable = new G4DecayTable(); // create decay channel of anti_delta+ -> anti_proton + pi0 @@ -480,6 +492,8 @@ void G4ShortLivedConstructor::ConstructBaryons() 3, +1, 0, "baryon", 0, -1, -2114, false, 0.0, NULL); + // set sub type + particle->SetMultipletName("delta(1232)"); // create decay table decayTable = new G4DecayTable(); // create decay channel of anti_delta+ -> anti_proton + pi+ @@ -501,6 +515,8 @@ void G4ShortLivedConstructor::ConstructBaryons() 3, +3, 0, "baryon", 0, -1, -1114, false, 0.0, NULL); + // set sub type + particle->SetMultipletName("delta(1232)"); // create decay table decayTable = new G4DecayTable(); // create decay channel of delta- -> neutron + pi+ @@ -518,7 +534,7 @@ void G4ShortLivedConstructor::ConstructMesons() { G4DecayTable* decayTable; G4VDecayChannel* mode; - G4ParticleDefinition* particle; + G4ExcitedMesons* particle; // Construct Resonace particles as dynamic object // Arguments for constructor are as follows @@ -537,6 +553,8 @@ void G4ShortLivedConstructor::ConstructMesons() "meson", 0, 0, 223, false, 0.0, NULL); particle->SetAntiPDGEncoding(223); + // set sub type + particle->SetMultipletName("omega"); // create decay table decayTable = new G4DecayTable(); // create decay channel of omega -> pi+ + pi- + pi0 @@ -555,7 +573,9 @@ void G4ShortLivedConstructor::ConstructMesons() "meson", 0, 0, 333, false, 0.0, NULL); particle->SetAntiPDGEncoding(333); - // create decay table + // set sub type + particle->SetMultipletName("phi"); + // create decay table decayTable = new G4DecayTable(); // create decay channel of phi -> kaon+ + kaon- // parent BR #daughters @@ -583,6 +603,8 @@ void G4ShortLivedConstructor::ConstructMesons() 2, +2, +1, "meson", 0, 0, 213, false, 0.0, NULL); + // set sub type + particle->SetMultipletName("rho"); // create decay table decayTable = new G4DecayTable(); // create decay channel of rho+ -> pi+ + pi0 @@ -600,6 +622,8 @@ void G4ShortLivedConstructor::ConstructMesons() 2, -2, +1, "meson", 0, 0, -213, false, 0.0, NULL); + // set sub type + particle->SetMultipletName("rho"); // create decay table decayTable = new G4DecayTable(); // create decay channel of rho- -> pi- + pi0 @@ -610,6 +634,26 @@ void G4ShortLivedConstructor::ConstructMesons() decayTable->Insert(mode); particle->SetDecayTable(decayTable); + // rho0 + particle = new G4ExcitedMesons( + "rho0", 770.0*MeV, 150.7*MeV, 0.0, + 2, -1, -1, + 2, 0, +1, + "meson", 0, 0, 113, + false, 0.0*ns, NULL ); + particle->SetAntiPDGEncoding(113); + // set sub type + particle->SetMultipletName("rho"); + // create decay table + decayTable = new G4DecayTable(); + // create decay channel of rho0 -> pi+ + pi- + // parent BR #daughters + mode = new G4PhaseSpaceDecayChannel("rho0",1.000, 2, + "pi+","pi-"); + // add decay table + decayTable->Insert(mode); + particle->SetDecayTable(decayTable); + // k_star+ particle = new G4ExcitedMesons( "k_star+", 891.6*MeV, 50.8*MeV, +1.0*eplus, @@ -617,6 +661,8 @@ void G4ShortLivedConstructor::ConstructMesons() 1, +1, 0, "meson", 0, 0, 323, false, 0.0, NULL); + // set sub type + particle->SetMultipletName("k_star"); // create decay table decayTable = new G4DecayTable(); // create decay channel of k_star+ -> kaon+ + pi0 @@ -640,6 +686,8 @@ void G4ShortLivedConstructor::ConstructMesons() 1, -1, 0, "meson", 0, 0, 313, false, 0.0, NULL); + // set sub type + particle->SetMultipletName("k_star"); // create decay table decayTable = new G4DecayTable(); // create decay channel of k_star0 -> kaon+ + pi- @@ -663,6 +711,8 @@ void G4ShortLivedConstructor::ConstructMesons() 1, +1, 0, "meson", 0, 0, -323, false, 0.0, NULL); + // set sub type + particle->SetMultipletName("k_star"); // create decay table decayTable = new G4DecayTable(); // create decay channel of k_star- -> kaon- + pi0 @@ -687,6 +737,8 @@ void G4ShortLivedConstructor::ConstructMesons() 1, -1, 0, "meson", 0, 0, -313, false, 0.0, NULL); + // set sub type + particle->SetMultipletName("k_star"); // create decay table decayTable = new G4DecayTable(); // create decay channel of anti_k_star0 -> kaon- + pi+ diff --git a/source/particles/shortlived/src/G4VShortLivedParticle.cc b/source/particles/shortlived/src/G4VShortLivedParticle.cc index 31dc1561a9..d97ee7c8a1 100644 --- a/source/particles/shortlived/src/G4VShortLivedParticle.cc +++ b/source/particles/shortlived/src/G4VShortLivedParticle.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VShortLivedParticle.cc,v 1.2.8.1.2.1 1999/12/08 17:34:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VShortLivedParticle.cc,v 1.3 1999/12/15 14:51:18 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/persistency/GNUmakefile b/source/persistency/GNUmakefile index bb6278f92b..944dd6216e 100644 --- a/source/persistency/GNUmakefile +++ b/source/persistency/GNUmakefile @@ -19,10 +19,11 @@ G4ODBMS_INSTALLATION := true SUBDIRS = global \ digits+hits/digits digits+hits/hits events run geometry/global \ - geometry/solids/CSG geometry/solids/Boolean geometry/management \ + geometry/solids/CSG geometry/solids/specific \ + geometry/solids/Boolean geometry/management \ management SUBLIBS = G4pglobal G4pdigits G4phits G4pevents G4prun G4pgeomGlobal \ - G4pcsg G4pgeomBoolean G4pgeomn \ + G4pcsg G4pspecsolids G4pgeomBoolean G4pgeomn \ G4pmanagement ifndef G4INSTALL diff --git a/source/persistency/History b/source/persistency/History index 5fdac10ca0..5cad3033b4 100644 --- a/source/persistency/History +++ b/source/persistency/History @@ -15,6 +15,13 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +9 June, 00 Y.Morita (persistency-V01-00-02) +- added material in G4PersistentGeomMan::Retrieve() + +11 May, 00 Y.Morita (persistency-V01-00-01) +- moved G4PHype from geometry/solids/CSG to geometry/solids/specific +- modified GNUmakefile's to add G4pspecsolids + 23 Feburuary, 00 Y.Morita (persistency-V01-00-00) - fixed a minor typo in G4PersistentGeomMan.cc diff --git a/source/persistency/digits+hits/digits/include/G4PDCofThisEvent.ddl b/source/persistency/digits+hits/digits/include/G4PDCofThisEvent.ddl index 95ca66047e..70387b2e40 100644 --- a/source/persistency/digits+hits/digits/include/G4PDCofThisEvent.ddl +++ b/source/persistency/digits+hits/digits/include/G4PDCofThisEvent.ddl @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PDCofThisEvent.ddl,v 1.3 1999/12/02 16:10:19 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4PDCofThisEvent_h diff --git a/source/persistency/digits+hits/digits/include/G4PVDigit.ddl b/source/persistency/digits+hits/digits/include/G4PVDigit.ddl index 1cf762d35d..fc08a68b83 100644 --- a/source/persistency/digits+hits/digits/include/G4PVDigit.ddl +++ b/source/persistency/digits+hits/digits/include/G4PVDigit.ddl @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PVDigit.ddl,v 1.2 1999/11/24 20:28:06 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4PVDigit_h diff --git a/source/persistency/digits+hits/digits/include/G4PVDigitsCollection.ddl b/source/persistency/digits+hits/digits/include/G4PVDigitsCollection.ddl index a7f1868853..dc22add843 100644 --- a/source/persistency/digits+hits/digits/include/G4PVDigitsCollection.ddl +++ b/source/persistency/digits+hits/digits/include/G4PVDigitsCollection.ddl @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PVDigitsCollection.ddl,v 1.4 1999/12/01 14:45:10 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4PVDigitsCollection_h diff --git a/source/persistency/digits+hits/digits/include/G4PersistentDigitMan.hh b/source/persistency/digits+hits/digits/include/G4PersistentDigitMan.hh index 5276f52486..edbcfed077 100644 --- a/source/persistency/digits+hits/digits/include/G4PersistentDigitMan.hh +++ b/source/persistency/digits+hits/digits/include/G4PersistentDigitMan.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PersistentDigitMan.hh,v 1.6 1999/11/29 20:11:16 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4PersistentDigitMan // diff --git a/source/persistency/digits+hits/digits/src/G4PDCofThisEvent.cc b/source/persistency/digits+hits/digits/src/G4PDCofThisEvent.cc index a96491e662..8ee9c9b5b9 100644 --- a/source/persistency/digits+hits/digits/src/G4PDCofThisEvent.cc +++ b/source/persistency/digits+hits/digits/src/G4PDCofThisEvent.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PDCofThisEvent.cc,v 1.3 1999/12/02 16:10:20 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 6602e978b1..983c1c72ba 100644 --- a/source/persistency/digits+hits/digits/src/G4PVDigit.cc +++ b/source/persistency/digits+hits/digits/src/G4PVDigit.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PVDigit.cc,v 1.2 1999/11/24 20:28:07 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 91e4391479..f84d03f9d6 100644 --- a/source/persistency/digits+hits/digits/src/G4PVDigitsCollection.cc +++ b/source/persistency/digits+hits/digits/src/G4PVDigitsCollection.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PVDigitsCollection.cc,v 1.3 1999/11/29 20:11:17 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4PVDigitsCollection diff --git a/source/persistency/digits+hits/digits/src/G4PersistentDigitMan.cc b/source/persistency/digits+hits/digits/src/G4PersistentDigitMan.cc index c293c45bc2..3348cc969c 100644 --- a/source/persistency/digits+hits/digits/src/G4PersistentDigitMan.cc +++ b/source/persistency/digits+hits/digits/src/G4PersistentDigitMan.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PersistentDigitMan.cc,v 1.4 1999/11/28 21:54:14 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4PersistentDigitMan // diff --git a/source/persistency/digits+hits/hits/include/G4PHCofThisEvent.ddl b/source/persistency/digits+hits/hits/include/G4PHCofThisEvent.ddl index 8b8e8dbeda..a38a067ec8 100644 --- a/source/persistency/digits+hits/hits/include/G4PHCofThisEvent.ddl +++ b/source/persistency/digits+hits/hits/include/G4PHCofThisEvent.ddl @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PHCofThisEvent.ddl,v 1.8 1999/12/02 16:10:21 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4PHCofThisEvent_h diff --git a/source/persistency/digits+hits/hits/include/G4PVHit.ddl b/source/persistency/digits+hits/hits/include/G4PVHit.ddl index 352ff5829e..b9f968c4a3 100644 --- a/source/persistency/digits+hits/hits/include/G4PVHit.ddl +++ b/source/persistency/digits+hits/hits/include/G4PVHit.ddl @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PVHit.ddl,v 1.6 1999/11/24 20:27:24 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4PVHit_h diff --git a/source/persistency/digits+hits/hits/include/G4PVHitsCollection.ddl b/source/persistency/digits+hits/hits/include/G4PVHitsCollection.ddl index 660092a63a..95d6db1195 100644 --- a/source/persistency/digits+hits/hits/include/G4PVHitsCollection.ddl +++ b/source/persistency/digits+hits/hits/include/G4PVHitsCollection.ddl @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PVHitsCollection.ddl,v 1.12 1999/12/01 14:45:13 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4PVHitsCollection_h diff --git a/source/persistency/digits+hits/hits/include/G4PersistentHitMan.hh b/source/persistency/digits+hits/hits/include/G4PersistentHitMan.hh index d7ac06c374..ab7cc53892 100644 --- a/source/persistency/digits+hits/hits/include/G4PersistentHitMan.hh +++ b/source/persistency/digits+hits/hits/include/G4PersistentHitMan.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PersistentHitMan.hh,v 1.5 1999/11/28 21:54:15 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4PersistentHitMan // diff --git a/source/persistency/digits+hits/hits/src/G4PHCofThisEvent.cc b/source/persistency/digits+hits/hits/src/G4PHCofThisEvent.cc index e62595721e..309323230e 100644 --- a/source/persistency/digits+hits/hits/src/G4PHCofThisEvent.cc +++ b/source/persistency/digits+hits/hits/src/G4PHCofThisEvent.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PHCofThisEvent.cc,v 1.6 1999/12/02 16:10:22 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 3ee325bd08..fe51908c90 100644 --- a/source/persistency/digits+hits/hits/src/G4PVHit.cc +++ b/source/persistency/digits+hits/hits/src/G4PVHit.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PVHit.cc,v 1.4 1999/11/24 20:27:24 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 ecaed03537..7b52db5323 100644 --- a/source/persistency/digits+hits/hits/src/G4PVHitsCollection.cc +++ b/source/persistency/digits+hits/hits/src/G4PVHitsCollection.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PVHitsCollection.cc,v 1.8 1999/11/28 21:54:16 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4PVHitsCollection diff --git a/source/persistency/digits+hits/hits/src/G4PersistentHitMan.cc b/source/persistency/digits+hits/hits/src/G4PersistentHitMan.cc index 64e31e5c0f..1f0894d636 100644 --- a/source/persistency/digits+hits/hits/src/G4PersistentHitMan.cc +++ b/source/persistency/digits+hits/hits/src/G4PersistentHitMan.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PersistentHitMan.cc,v 1.4 1999/11/28 21:54:16 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4PersistentHitMan // diff --git a/source/persistency/events/include/G4PEvent.ddl b/source/persistency/events/include/G4PEvent.ddl index 5b9efa0295..ec283f9d59 100644 --- a/source/persistency/events/include/G4PEvent.ddl +++ b/source/persistency/events/include/G4PEvent.ddl @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PEvent.ddl,v 1.8 1999/11/28 21:54:17 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4PEvent_h diff --git a/source/persistency/events/include/G4PPrimaryParticle.ddl b/source/persistency/events/include/G4PPrimaryParticle.ddl index c084419081..6db1504a3c 100644 --- a/source/persistency/events/include/G4PPrimaryParticle.ddl +++ b/source/persistency/events/include/G4PPrimaryParticle.ddl @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PPrimaryParticle.ddl,v 1.1 1999/12/05 22:32:25 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4PPrimaryParticle_h diff --git a/source/persistency/events/include/G4PPrimaryVertex.ddl b/source/persistency/events/include/G4PPrimaryVertex.ddl index d2d5d3d9ce..ad12a95719 100644 --- a/source/persistency/events/include/G4PPrimaryVertex.ddl +++ b/source/persistency/events/include/G4PPrimaryVertex.ddl @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PPrimaryVertex.ddl,v 1.7 1999/12/05 22:32:26 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/persistency/events/include/G4PersistentEventMan.hh b/source/persistency/events/include/G4PersistentEventMan.hh index 36989936b3..c1a4da7741 100644 --- a/source/persistency/events/include/G4PersistentEventMan.hh +++ b/source/persistency/events/include/G4PersistentEventMan.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PersistentEventMan.hh,v 1.9 1999/11/28 21:54:17 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4PersistentEventMan // diff --git a/source/persistency/events/src/G4PEvent.cc b/source/persistency/events/src/G4PEvent.cc index a55d975b69..f9ba75c06b 100644 --- a/source/persistency/events/src/G4PEvent.cc +++ b/source/persistency/events/src/G4PEvent.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PEvent.cc,v 1.11 1999/12/15 14:51:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4PEvent diff --git a/source/persistency/events/src/G4PPrimaryParticle.cc b/source/persistency/events/src/G4PPrimaryParticle.cc index 53d0a39e44..9c4a022601 100644 --- a/source/persistency/events/src/G4PPrimaryParticle.cc +++ b/source/persistency/events/src/G4PPrimaryParticle.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PPrimaryParticle.cc,v 1.1 1999/12/05 22:32:26 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4PPrimaryParticle.hh" diff --git a/source/persistency/events/src/G4PPrimaryVertex.cc b/source/persistency/events/src/G4PPrimaryVertex.cc index 9ed4f5c776..26f0470e9a 100644 --- a/source/persistency/events/src/G4PPrimaryVertex.cc +++ b/source/persistency/events/src/G4PPrimaryVertex.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PPrimaryVertex.cc,v 1.7 1999/12/15 14:51:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4PPrimaryVertex.hh" diff --git a/source/persistency/events/src/G4PersistentEventMan.cc b/source/persistency/events/src/G4PersistentEventMan.cc index bc0843d87b..56535ea2e2 100644 --- a/source/persistency/events/src/G4PersistentEventMan.cc +++ b/source/persistency/events/src/G4PersistentEventMan.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PersistentEventMan.cc,v 1.15 1999/12/02 19:40:51 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4PersistentEventMan // diff --git a/source/persistency/geometry/global/include/G4PAffineTransform.ddl b/source/persistency/geometry/global/include/G4PAffineTransform.ddl index 64343b1991..f2f26e858d 100644 --- a/source/persistency/geometry/global/include/G4PAffineTransform.ddl +++ b/source/persistency/geometry/global/include/G4PAffineTransform.ddl @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PAffineTransform.ddl,v 1.4 1999/12/15 14:51:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // persistenet class of G4AffineTransform // diff --git a/source/persistency/geometry/global/include/G4PVSolid.ddl b/source/persistency/geometry/global/include/G4PVSolid.ddl index b1312af411..bec09d029a 100644 --- a/source/persistency/geometry/global/include/G4PVSolid.ddl +++ b/source/persistency/geometry/global/include/G4PVSolid.ddl @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PVSolid.ddl,v 1.3 1999/12/15 14:51:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4PVSolid diff --git a/source/persistency/geometry/global/src/G4PAffineTransform.cc b/source/persistency/geometry/global/src/G4PAffineTransform.cc index 53ad05cfcd..22c864b45c 100644 --- a/source/persistency/geometry/global/src/G4PAffineTransform.cc +++ b/source/persistency/geometry/global/src/G4PAffineTransform.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PAffineTransform.cc,v 1.2 1999/12/15 14:51:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4PAffineTransform // diff --git a/source/persistency/geometry/global/src/G4PVSolid.cc b/source/persistency/geometry/global/src/G4PVSolid.cc index 736121d8b6..f3a1d452f8 100644 --- a/source/persistency/geometry/global/src/G4PVSolid.cc +++ b/source/persistency/geometry/global/src/G4PVSolid.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PVSolid.cc,v 1.2 1999/12/15 14:51:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4PVSolid // diff --git a/source/persistency/geometry/management/GNUmakefile b/source/persistency/geometry/management/GNUmakefile index df8001fc4a..fcbb7d094c 100644 --- a/source/persistency/geometry/management/GNUmakefile +++ b/source/persistency/geometry/management/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.10 1999/12/01 15:21:06 morita Exp $ +# $Id: GNUmakefile,v 1.12 2000/06/08 11:46:43 morita Exp $ name := G4pgeomn G4ODBMS := true @@ -17,6 +17,7 @@ CPPFLAGS += \ -I$(G4SCHEMA_HEADER_DIR) \ -I$(G4TMP)/$(G4SYSTEM)/G4pgeomGlobal \ -I$(G4TMP)/$(G4SYSTEM)/G4pcsg \ + -I$(G4TMP)/$(G4SYSTEM)/G4pspecsolids \ -I$(G4TMP)/$(G4SYSTEM)/G4pgeomBoolean \ -I$(G4INSTALL)/source/persistency/global/include \ -I$(G4INSTALL)/source/persistency/geometry/global/include \ @@ -29,6 +30,7 @@ CPPFLAGS += \ -I$(G4INSTALL)/source/geometry/volumes/include \ -I$(G4INSTALL)/source/geometry/solids/CSG/include \ -I$(G4INSTALL)/source/geometry/solids/Boolean/include \ + -I$(G4INSTALL)/source/geometry/solids/specific/include \ -I$(G4INSTALL)/source/materials/include \ -I$(G4INSTALL)/source/graphics_reps/include diff --git a/source/persistency/geometry/management/include/G4PGeometryObjectMap.ddl b/source/persistency/geometry/management/include/G4PGeometryObjectMap.ddl index 466ba3f2c1..d4a54e307f 100644 --- a/source/persistency/geometry/management/include/G4PGeometryObjectMap.ddl +++ b/source/persistency/geometry/management/include/G4PGeometryObjectMap.ddl @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PGeometryObjectMap.ddl,v 1.4 1999/12/15 14:51:23 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4PGeometryObjectMap // diff --git a/source/persistency/geometry/management/include/G4PLogicalVolume.ddl b/source/persistency/geometry/management/include/G4PLogicalVolume.ddl index cd30532f97..500a69e412 100644 --- a/source/persistency/geometry/management/include/G4PLogicalVolume.ddl +++ b/source/persistency/geometry/management/include/G4PLogicalVolume.ddl @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PLogicalVolume.ddl,v 1.7 1999/12/15 14:51:23 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PLogicalVolume.ddl,v 1.8 2000/06/09 12:56:01 morita Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4PLogicalVolume @@ -18,6 +18,7 @@ #include "globals.hh" #include "G4PersistentTypes.hh" #include "G4PersistentSchema.hh" +#include "G4VMaterialMap.hh" #include "HepODBMS/odbms/HepODBMS.h" #include "G4PVSolid.hh" @@ -39,7 +40,8 @@ public: HepRef(G4PVSolid) persSolid); ~G4PLogicalVolume(); - G4LogicalVolume* MakeTransientObject(G4VSolid* aSolid); + G4LogicalVolume* MakeTransientObject(G4VSolid* aSolid, + G4Material* aMaterial); HepRef(G4PVSolid) GetSolid(); void SetSolid( HepRef(G4PVSolid) pSolid ); diff --git a/source/persistency/geometry/management/include/G4PPVParameterised.ddl b/source/persistency/geometry/management/include/G4PPVParameterised.ddl index c0966c4af9..d40eb8714f 100644 --- a/source/persistency/geometry/management/include/G4PPVParameterised.ddl +++ b/source/persistency/geometry/management/include/G4PPVParameterised.ddl @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PPVParameterised.ddl,v 1.4 1999/12/15 14:51:23 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4PPVParameterised // diff --git a/source/persistency/geometry/management/include/G4PPVPlacement.ddl b/source/persistency/geometry/management/include/G4PPVPlacement.ddl index b9040659cf..add9098163 100644 --- a/source/persistency/geometry/management/include/G4PPVPlacement.ddl +++ b/source/persistency/geometry/management/include/G4PPVPlacement.ddl @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PPVPlacement.ddl,v 1.4 1999/12/15 14:51:23 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // P-versieon of G4PVPlacement Takashi.Sasaki@kek.jp diff --git a/source/persistency/geometry/management/include/G4PPVReplica.ddl b/source/persistency/geometry/management/include/G4PPVReplica.ddl index a9b44bfca5..fd1faa8e22 100644 --- a/source/persistency/geometry/management/include/G4PPVReplica.ddl +++ b/source/persistency/geometry/management/include/G4PPVReplica.ddl @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PPVReplica.ddl,v 1.4 1999/12/15 14:51:23 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4PPVReplica diff --git a/source/persistency/geometry/management/include/G4PVPhysicalVolume.ddl b/source/persistency/geometry/management/include/G4PVPhysicalVolume.ddl index f42379340c..1cf180705a 100644 --- a/source/persistency/geometry/management/include/G4PVPhysicalVolume.ddl +++ b/source/persistency/geometry/management/include/G4PVPhysicalVolume.ddl @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PVPhysicalVolume.ddl,v 1.4 1999/12/15 14:51:23 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4PVPhysicalVolume diff --git a/source/persistency/geometry/management/include/G4PersistentGeomMan.hh b/source/persistency/geometry/management/include/G4PersistentGeomMan.hh index 7afcee7e87..2782247d2d 100644 --- a/source/persistency/geometry/management/include/G4PersistentGeomMan.hh +++ b/source/persistency/geometry/management/include/G4PersistentGeomMan.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PersistentGeomMan.hh,v 1.8 1999/12/15 14:51:23 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PersistentGeomMan.hh,v 1.9 2000/06/09 12:56:01 morita Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4PersistentGeomMan // @@ -28,6 +28,7 @@ #include "G4VPersistentSubMan.hh" #include "G4VPersistentSubDbMan.hh" #include "G4PGeometryObjectMap.hh" +#include "G4VMaterialMap.hh" #define G4_PHYS_VOLUME_DEPTH_MAX 1000000 @@ -54,6 +55,7 @@ class G4PersistentGeomMan private: HepRef(G4PGeometryObjectMap) f_GeomMap; + G4VMaterialMap* f_MaterialMap; private: // interface with G4PersistencyManager diff --git a/source/persistency/geometry/management/src/G4PGeometryObjectMap.cc b/source/persistency/geometry/management/src/G4PGeometryObjectMap.cc index aeb2ea81ba..3181e32dec 100644 --- a/source/persistency/geometry/management/src/G4PGeometryObjectMap.cc +++ b/source/persistency/geometry/management/src/G4PGeometryObjectMap.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PGeometryObjectMap.cc,v 1.5 1999/12/15 14:51:24 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4PGeometryObjectMap // diff --git a/source/persistency/geometry/management/src/G4PLogicalVolume.cc b/source/persistency/geometry/management/src/G4PLogicalVolume.cc index 46f70175d7..60f2fd47ed 100644 --- a/source/persistency/geometry/management/src/G4PLogicalVolume.cc +++ b/source/persistency/geometry/management/src/G4PLogicalVolume.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PLogicalVolume.cc,v 1.4 1999/12/15 14:51:24 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PLogicalVolume.cc,v 1.5 2000/06/09 12:56:44 morita Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Takashi.Sasaki@kek.jp @@ -76,10 +76,11 @@ class G4SmartVoxelHeader; class G4VisAttributes; class G4FastSimulationManager; -G4LogicalVolume* G4PLogicalVolume::MakeTransientObject(G4VSolid* theSolid) +G4LogicalVolume* G4PLogicalVolume::MakeTransientObject( + G4VSolid* theSolid, + G4Material* theMaterial) { // These are null poineters temporaly - G4Material* fMaterial = NULL; G4SmartVoxelHeader* fVoxel = NULL; const G4VisAttributes* fVisAttributes = NULL; @@ -89,22 +90,9 @@ G4LogicalVolume* G4PLogicalVolume::MakeTransientObject(G4VSolid* theSolid) // G4VSensitiveDetector *pSDetector=0, // G4UserLimits *pULimits=0); -//--------- Material definition --------- -// -// G4double a, iz, z, density; -// -// a = 207.19*g/mole; -// density = 11.35*g/cm3; -// G4Material* Pb = new G4Material(name="Lead", z=82., a, density); -// -// G4LogicalVolume* testvolume = new G4LogicalVolume( -// theSolid, Pb, fName, 0, 0, 0); -// -//--------- Material definition --------- - G4String name; G4LogicalVolume* aLogicalVolume = new G4LogicalVolume( - theSolid, fMaterial, name=fName, 0, 0, 0); + theSolid, theMaterial, name=fName, 0, 0, 0); // if ( aLogicalVolume ) // aLogicalVume->SetVisAttributes(*fVisAttributes); diff --git a/source/persistency/geometry/management/src/G4PPVParameterised.cc b/source/persistency/geometry/management/src/G4PPVParameterised.cc index e9d4857f12..7ede2f5427 100644 --- a/source/persistency/geometry/management/src/G4PPVParameterised.cc +++ b/source/persistency/geometry/management/src/G4PPVParameterised.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PPVParameterised.cc,v 1.2 1999/12/15 14:51:24 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // diff --git a/source/persistency/geometry/management/src/G4PPVPlacement.cc b/source/persistency/geometry/management/src/G4PPVPlacement.cc index 48cc60dca1..b36f347f7a 100644 --- a/source/persistency/geometry/management/src/G4PPVPlacement.cc +++ b/source/persistency/geometry/management/src/G4PPVPlacement.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PPVPlacement.cc,v 1.2 1999/12/15 14:51:24 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // diff --git a/source/persistency/geometry/management/src/G4PPVReplica.cc b/source/persistency/geometry/management/src/G4PPVReplica.cc index e799673f31..c4cbdf88eb 100644 --- a/source/persistency/geometry/management/src/G4PPVReplica.cc +++ b/source/persistency/geometry/management/src/G4PPVReplica.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PPVReplica.cc,v 1.2 1999/12/15 14:51:24 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // diff --git a/source/persistency/geometry/management/src/G4PVPhysicalVolume.cc b/source/persistency/geometry/management/src/G4PVPhysicalVolume.cc index 86edb149d8..1ed079305c 100644 --- a/source/persistency/geometry/management/src/G4PVPhysicalVolume.cc +++ b/source/persistency/geometry/management/src/G4PVPhysicalVolume.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PVPhysicalVolume.cc,v 1.3 1999/12/15 14:51:24 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Takashi.Sasaki@kek.jp diff --git a/source/persistency/geometry/management/src/G4PersistentGeomMan.cc b/source/persistency/geometry/management/src/G4PersistentGeomMan.cc index a27080b55e..f34a8cf4f9 100644 --- a/source/persistency/geometry/management/src/G4PersistentGeomMan.cc +++ b/source/persistency/geometry/management/src/G4PersistentGeomMan.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PersistentGeomMan.cc,v 1.11 2000/02/23 13:10:36 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PersistentGeomMan.cc,v 1.14 2000/06/09 12:56:44 morita Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4PersistentGeomMan // @@ -31,13 +31,18 @@ // other used classes #include "G4PBox.hh" #include "G4PCons.hh" -#include "G4PHype.hh" #include "G4PPara.hh" #include "G4PSphere.hh" #include "G4PTorus.hh" #include "G4PTrap.hh" #include "G4PTrd.hh" #include "G4PTubs.hh" + +//#include "G4PEllipticalTube.hh" +#include "G4PHype.hh" +//#include "G4PPolycone.hh" +//#include "G4PPolyhedra.hh" + #include "G4PDisplacedSolid.hh" #include "G4PIntersectionSolid.hh" #include "G4PSubtractionSolid.hh" @@ -124,6 +129,14 @@ G4bool G4PersistentGeomMan::Retrieve( HepDbApplication* dbApp, { theWorld = NULL; + G4VMaterialMap* f_Materialmap = G4VMaterialMap::GetMaterialMap(); + if(f_verboseLevel>0) + { + if(!f_MaterialMap) + G4cout << "G4PersistentGeomMan::Retrieve" + << " -- Material Map not provided by user code." << G4endl; + } + // ----------------------- Objectivity Feature ----------------------- // // Load the geometry object map from the database with read-only mode if ( ! f_GeomMap.lookupObj( f_DB, f_GeomMapScopeName, oocRead ) ) @@ -319,25 +332,40 @@ HepRef(G4PVSolid) G4PersistentGeomMan::MakePersistentObject ( // Construct persistent and concrete solid object // according to the entity type of theSolid - if ( theSolidType == "G4Box") + + // Pure CSG + if ( theSolidType == "G4Box") persSolid = new(f_container) G4PBox ( (G4Box*)theSolid ); - else if ( theSolidType == "G4Cons") + else if ( theSolidType == "G4Cons") persSolid = new(f_container) G4PCons ( (G4Cons*)theSolid ); - else if ( theSolidType == "G4Hype") - persSolid = new(f_container) G4PHype ( (G4Hype*)theSolid ); - else if ( theSolidType == "G4Para") + else if ( theSolidType == "G4Para") persSolid = new(f_container) G4PPara ( (G4Para*)theSolid ); - else if ( theSolidType == "G4Sphere") + else if ( theSolidType == "G4Sphere") persSolid = new(f_container) G4PSphere( (G4Sphere*)theSolid ); - else if ( theSolidType == "G4Torus") + else if ( theSolidType == "G4Torus") persSolid = new(f_container) G4PTorus ( (G4Torus*)theSolid ); - else if ( theSolidType == "G4Trap") + else if ( theSolidType == "G4Trap") persSolid = new(f_container) G4PTrap ( (G4Trap*)theSolid ); - else if ( theSolidType == "G4Trd") + else if ( theSolidType == "G4Trd") persSolid = new(f_container) G4PTrd ( (G4Trd*)theSolid ); - else if ( theSolidType == "G4Tubs") + else if ( theSolidType == "G4Tubs") persSolid = new(f_container) G4PTubs ( (G4Tubs*)theSolid ); + // Specific CSG + // else if ( theSolidType == "G4EllipticalTube") + // persSolid = new(f_container) G4PEllipticalTube + // ( (G4EllipticalTube*)theSolid ); + else if ( theSolidType == "G4Hype") + persSolid = new(f_container) G4PHype + ( (G4Hype*)theSolid ); + // else if ( theSolidType == "G4Polycone") + // persSolid = new(f_container) G4PPolycone + // ( (G4Polycone*)theSolid ); + // else if ( theSolidType == "G4Polyhedra") + // persSolid = new(f_container) G4PPolyhedra + // ( (G4Polyhedra*)theSolid ); + + // Boolian Solids else if ( theSolidType == "G4UnionSolid" || theSolidType == "G4SubtractionSolid" || theSolidType == "G4IntersectionSolid" ) @@ -473,14 +501,23 @@ G4LogicalVolume* G4PersistentGeomMan::MakeTransientObject ( // check if the transient version of persSolid exists G4VSolid* theSolid = f_GeomMap->LookUp(persSolid); +#ifdef G4DEBUG if ( theSolid == NULL ) { G4cerr << "G4PersistentGeomMan::MakeTransientObject" << " -- transient Solid not found for the persistent Solid" << G4endl; } +#endif + + // Lookup the material from name + G4Material* theMaterial = NULL; + if( f_MaterialMap ) + { + theMaterial = f_MaterialMap->LookUp(persLogVol->GetMaterialName()); + } // Construct the persistent version of theLogVol with theSolid - theLogVol = persLogVol->MakeTransientObject(theSolid); + theLogVol = persLogVol->MakeTransientObject(theSolid, theMaterial); #ifdef G4DEBUG assert( theLogVol != NULL ); #endif diff --git a/source/persistency/geometry/solids/CSG/include/G4PBox.ddl b/source/persistency/geometry/solids/CSG/include/G4PBox.ddl index 8f6b02c873..768235b685 100644 --- a/source/persistency/geometry/solids/CSG/include/G4PBox.ddl +++ b/source/persistency/geometry/solids/CSG/include/G4PBox.ddl @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PBox.ddl,v 1.3 1999/12/15 14:51:24 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4PBox // diff --git a/source/persistency/geometry/solids/CSG/include/G4PCSGSolid.ddl b/source/persistency/geometry/solids/CSG/include/G4PCSGSolid.ddl index 1d63e07169..4e42cde60f 100644 --- a/source/persistency/geometry/solids/CSG/include/G4PCSGSolid.ddl +++ b/source/persistency/geometry/solids/CSG/include/G4PCSGSolid.ddl @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PCSGSolid.ddl,v 1.3 1999/12/15 14:51:24 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4CSGSolid diff --git a/source/persistency/geometry/solids/CSG/include/G4PCons.ddl b/source/persistency/geometry/solids/CSG/include/G4PCons.ddl index 2532c87d6c..e3aca9a2b4 100644 --- a/source/persistency/geometry/solids/CSG/include/G4PCons.ddl +++ b/source/persistency/geometry/solids/CSG/include/G4PCons.ddl @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PCons.ddl,v 1.3 1999/12/15 14:51:24 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4Cons // diff --git a/source/persistency/geometry/solids/CSG/include/G4PPara.ddl b/source/persistency/geometry/solids/CSG/include/G4PPara.ddl index d5cc96a43d..8d25db61b3 100644 --- a/source/persistency/geometry/solids/CSG/include/G4PPara.ddl +++ b/source/persistency/geometry/solids/CSG/include/G4PPara.ddl @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PPara.ddl,v 1.4 1999/12/15 14:51:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4PPara // diff --git a/source/persistency/geometry/solids/CSG/include/G4PSphere.ddl b/source/persistency/geometry/solids/CSG/include/G4PSphere.ddl index f803bc4abb..cebd8539fa 100644 --- a/source/persistency/geometry/solids/CSG/include/G4PSphere.ddl +++ b/source/persistency/geometry/solids/CSG/include/G4PSphere.ddl @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PSphere.ddl,v 1.4 1999/12/15 14:51:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4PSphere // diff --git a/source/persistency/geometry/solids/CSG/include/G4PTorus.ddl b/source/persistency/geometry/solids/CSG/include/G4PTorus.ddl index 7e2a7c454f..e3476d8ded 100644 --- a/source/persistency/geometry/solids/CSG/include/G4PTorus.ddl +++ b/source/persistency/geometry/solids/CSG/include/G4PTorus.ddl @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PTorus.ddl,v 1.3 1999/12/15 14:51:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4PTorus diff --git a/source/persistency/geometry/solids/CSG/include/G4PTrap.ddl b/source/persistency/geometry/solids/CSG/include/G4PTrap.ddl index 6c1a537136..106577656b 100644 --- a/source/persistency/geometry/solids/CSG/include/G4PTrap.ddl +++ b/source/persistency/geometry/solids/CSG/include/G4PTrap.ddl @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PTrap.ddl,v 1.4 1999/12/15 14:51:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4PTrap // diff --git a/source/persistency/geometry/solids/CSG/include/G4PTrd.ddl b/source/persistency/geometry/solids/CSG/include/G4PTrd.ddl index 4bd29096ae..c0ae58d855 100644 --- a/source/persistency/geometry/solids/CSG/include/G4PTrd.ddl +++ b/source/persistency/geometry/solids/CSG/include/G4PTrd.ddl @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PTrd.ddl,v 1.3 1999/12/15 14:51:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4PTrd // diff --git a/source/persistency/geometry/solids/CSG/include/G4PTubs.ddl b/source/persistency/geometry/solids/CSG/include/G4PTubs.ddl index 893bd2f485..e76cf7c2fa 100644 --- a/source/persistency/geometry/solids/CSG/include/G4PTubs.ddl +++ b/source/persistency/geometry/solids/CSG/include/G4PTubs.ddl @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PTubs.ddl,v 1.3 1999/12/15 14:51:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4PTubs diff --git a/source/persistency/geometry/solids/CSG/src/G4PBox.cc b/source/persistency/geometry/solids/CSG/src/G4PBox.cc index 71f73a641c..21ce5a5f91 100644 --- a/source/persistency/geometry/solids/CSG/src/G4PBox.cc +++ b/source/persistency/geometry/solids/CSG/src/G4PBox.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PBox.cc,v 1.2 1999/11/17 10:49:02 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // diff --git a/source/persistency/geometry/solids/CSG/src/G4PCSGSolid.cc b/source/persistency/geometry/solids/CSG/src/G4PCSGSolid.cc index 36dd72a7e7..e524a61365 100644 --- a/source/persistency/geometry/solids/CSG/src/G4PCSGSolid.cc +++ b/source/persistency/geometry/solids/CSG/src/G4PCSGSolid.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PCSGSolid.cc,v 1.2 1999/11/17 10:49:02 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // History: diff --git a/source/persistency/geometry/solids/CSG/src/G4PCons.cc b/source/persistency/geometry/solids/CSG/src/G4PCons.cc index a6b53ad230..3f57247c66 100644 --- a/source/persistency/geometry/solids/CSG/src/G4PCons.cc +++ b/source/persistency/geometry/solids/CSG/src/G4PCons.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PCons.cc,v 1.2 1999/11/17 10:49:02 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4PCons // diff --git a/source/persistency/geometry/solids/CSG/src/G4PPara.cc b/source/persistency/geometry/solids/CSG/src/G4PPara.cc index ce0073eb14..33ff52b123 100644 --- a/source/persistency/geometry/solids/CSG/src/G4PPara.cc +++ b/source/persistency/geometry/solids/CSG/src/G4PPara.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PPara.cc,v 1.2 1999/11/17 10:49:03 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4PPara // diff --git a/source/persistency/geometry/solids/CSG/src/G4PSphere.cc b/source/persistency/geometry/solids/CSG/src/G4PSphere.cc index 058805ad49..11f5a25f06 100644 --- a/source/persistency/geometry/solids/CSG/src/G4PSphere.cc +++ b/source/persistency/geometry/solids/CSG/src/G4PSphere.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PSphere.cc,v 1.3 1999/11/17 10:49:03 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4PSphere diff --git a/source/persistency/geometry/solids/CSG/src/G4PTorus.cc b/source/persistency/geometry/solids/CSG/src/G4PTorus.cc index fab682bf04..90858fa656 100644 --- a/source/persistency/geometry/solids/CSG/src/G4PTorus.cc +++ b/source/persistency/geometry/solids/CSG/src/G4PTorus.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PTorus.cc,v 1.3 1999/12/15 14:51:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4PTorus diff --git a/source/persistency/geometry/solids/CSG/src/G4PTrap.cc b/source/persistency/geometry/solids/CSG/src/G4PTrap.cc index c2ddf74652..a37f3059b6 100644 --- a/source/persistency/geometry/solids/CSG/src/G4PTrap.cc +++ b/source/persistency/geometry/solids/CSG/src/G4PTrap.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PTrap.cc,v 1.2 1999/11/17 10:49:03 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4PTrap // diff --git a/source/persistency/geometry/solids/CSG/src/G4PTrd.cc b/source/persistency/geometry/solids/CSG/src/G4PTrd.cc index bc9ae81461..a3ef9639bd 100644 --- a/source/persistency/geometry/solids/CSG/src/G4PTrd.cc +++ b/source/persistency/geometry/solids/CSG/src/G4PTrd.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PTrd.cc,v 1.3 1999/12/15 14:51:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 856ac6b93d..dbdd2ecff8 100644 --- a/source/persistency/geometry/solids/CSG/src/G4PTubs.cc +++ b/source/persistency/geometry/solids/CSG/src/G4PTubs.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PTubs.cc,v 1.2 1999/11/17 10:49:03 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // class G4PTubs diff --git a/source/persistency/geometry/solids/specific/GNUmakefile b/source/persistency/geometry/solids/specific/GNUmakefile new file mode 100644 index 0000000000..917a0a1124 --- /dev/null +++ b/source/persistency/geometry/solids/specific/GNUmakefile @@ -0,0 +1,44 @@ +# $Id: GNUmakefile,v 1.1 2000/05/11 10:09:07 morita Exp $ + +name := G4pspecsolids +G4ODBMS := true +G4ODBMS_INSTALLATION := true + +ifndef G4INSTALL + G4INSTALL = ../../../../.. +endif + +include $(G4INSTALL)/config/architecture.gmk + +G4OODDLX_BOOT := $(G4TMPSCHEMA_BOOT) + +CPPFLAGS += \ + -Iinclude \ + -I$(G4SCHEMA_HEADER_DIR) \ + -I$(G4TMP)/$(G4SYSTEM)/G4pgeomGlobal \ + -I$(G4TMP)/$(G4SYSTEM)/G4pcsg \ + -I$(G4BASE)/persistency/global/include \ + -I$(G4BASE)/persistency/geometry/global/include \ + -I$(G4BASE)/graphics_reps/include \ + -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)/geometry/solids/CSG/include \ + -I$(G4BASE)/geometry/solids/specific/include + +#-------------------------------------------------------------------- + +include $(G4INSTALL)/config/G4ODBMS_BUILD.gmk + +include $(G4INSTALL)/config/common.gmk + +#-------------------------------------------------------------------- +# Explicit DDL dependencies: + +##$(G4SCHEMA_HEADER_DIR)/G4PBox.hh: $(G4SCHEMA_HEADER_DIR)/G4PCSGSolid.hh + +#-------------------------------------------------------------------- + diff --git a/source/persistency/geometry/solids/CSG/include/G4PHype.ddl b/source/persistency/geometry/solids/specific/include/G4PHype.ddl similarity index 94% rename from source/persistency/geometry/solids/CSG/include/G4PHype.ddl rename to source/persistency/geometry/solids/specific/include/G4PHype.ddl index 39b3409c5e..27af4f9369 100644 --- a/source/persistency/geometry/solids/CSG/include/G4PHype.ddl +++ b/source/persistency/geometry/solids/specific/include/G4PHype.ddl @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PHype.ddl,v 1.3 1999/12/15 14:51:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PHype.ddl,v 1.1 2000/05/11 10:10:11 morita Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4PHype // diff --git a/source/persistency/geometry/solids/CSG/src/G4PHype.cc b/source/persistency/geometry/solids/specific/src/G4PHype.cc similarity index 95% rename from source/persistency/geometry/solids/CSG/src/G4PHype.cc rename to source/persistency/geometry/solids/specific/src/G4PHype.cc index e34f9d1283..1aadaef634 100644 --- a/source/persistency/geometry/solids/CSG/src/G4PHype.cc +++ b/source/persistency/geometry/solids/specific/src/G4PHype.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PHype.cc,v 1.2 1999/11/17 10:49:02 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PHype.cc,v 1.1 2000/05/11 10:10:16 morita Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4PHype // diff --git a/source/persistency/global/GNUmakefile b/source/persistency/global/GNUmakefile index 1f96de823a..2da5dcf6d4 100644 --- a/source/persistency/global/GNUmakefile +++ b/source/persistency/global/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.4 1999/11/24 20:23:07 morita Exp $ +# $Id: GNUmakefile,v 1.5 2000/06/09 12:54:38 morita Exp $ name := G4pglobal G4ODBMS := true @@ -17,7 +17,8 @@ G4TMPDIR := $(G4TMP)/$(G4SYSTEM)/$(name) CPPFLAGS += \ -Iinclude \ -I$(G4TMPDIR) \ - -I$(G4INSTALL)/source/global/management/include + -I$(G4INSTALL)/source/global/management/include \ + -I$(G4INSTALL)/source/materials/include #-------------------------------------------------------------------- diff --git a/source/persistency/global/include/G4DatabaseTypes.hh b/source/persistency/global/include/G4DatabaseTypes.hh index 1ece63426f..6a703be7ee 100644 --- a/source/persistency/global/include/G4DatabaseTypes.hh +++ b/source/persistency/global/include/G4DatabaseTypes.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4DatabaseTypes.hh,v 1.3 1999/11/28 21:54:19 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // file description: diff --git a/source/persistency/global/include/G4PersistentSchema.hh b/source/persistency/global/include/G4PersistentSchema.hh index 2b290416b8..9b1e25f4b8 100644 --- a/source/persistency/global/include/G4PersistentSchema.hh +++ b/source/persistency/global/include/G4PersistentSchema.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PersistentSchema.hh,v 1.5 1999/12/05 22:32:26 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // Persistent-capable schema definitions required for ooddlx processor // diff --git a/source/persistency/global/include/G4PersistentTypes.hh b/source/persistency/global/include/G4PersistentTypes.hh index 1a4fa9db2b..72ba8f8d4c 100644 --- a/source/persistency/global/include/G4PersistentTypes.hh +++ b/source/persistency/global/include/G4PersistentTypes.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PersistentTypes.hh,v 1.2 1999/12/15 14:51:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Persistent-capable typedefs for Geant4/Persistency category diff --git a/source/persistency/global/include/G4VMaterialMap.hh b/source/persistency/global/include/G4VMaterialMap.hh new file mode 100644 index 0000000000..4b2427a264 --- /dev/null +++ b/source/persistency/global/include/G4VMaterialMap.hh @@ -0,0 +1,50 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4VMaterialMap.hh,v 1.1 2000/06/09 12:53:25 morita Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// + +#ifndef G4VMaterialMap_hh +#define G4VMaterialMap_hh 1 + +// class description: +// +// This is an abstract base class for bookkeeping the material name +// for retrieving persistent geometry. +// User must provide the appropriate class for constructing material +// objects from material name when retrieving a stored persistent +// geometry. +// The virtual method LookUp() will be invoked from G4PersistentGeomMan. +// + +#include "globals.hh" +#include "G4Material.hh" + +class G4VMaterialMap +{ + public: + static G4VMaterialMap* GetMaterialMap(); + // Static method to return the pointer to the singleton object. + // Note that this method does NOT create the singleton object. + + protected: + G4VMaterialMap(); + + public: + virtual ~G4VMaterialMap(); + + private: + static G4VMaterialMap * fMaterialMap; + + public: // with description + virtual G4Material* LookUp(const G4String aName)=0; + // Returns a pointer to the material + +}; + +#endif diff --git a/source/persistency/global/include/G4VPersistentSubDbMan.hh b/source/persistency/global/include/G4VPersistentSubDbMan.hh index b83a8a69d9..f9f8ca1030 100644 --- a/source/persistency/global/include/G4VPersistentSubDbMan.hh +++ b/source/persistency/global/include/G4VPersistentSubDbMan.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VPersistentSubDbMan.hh,v 1.3 1999/11/28 21:54:19 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4VPersistentSubDbMan // diff --git a/source/persistency/global/include/G4VPersistentSubMan.hh b/source/persistency/global/include/G4VPersistentSubMan.hh index e22a36682c..ae77dc7bb2 100644 --- a/source/persistency/global/include/G4VPersistentSubMan.hh +++ b/source/persistency/global/include/G4VPersistentSubMan.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VPersistentSubMan.hh,v 1.2 1999/11/25 11:33:07 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4VPersistentSubMan // diff --git a/source/persistency/global/src/G4VMaterialMap.cc b/source/persistency/global/src/G4VMaterialMap.cc new file mode 100644 index 0000000000..6b077814ba --- /dev/null +++ b/source/persistency/global/src/G4VMaterialMap.cc @@ -0,0 +1,31 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4VMaterialMap.cc,v 1.1 2000/06/09 12:53:51 morita Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// + +#include "G4VMaterialMap.hh" + +G4VMaterialMap* G4VMaterialMap::fMaterialMap = 0; + +G4VMaterialMap* G4VMaterialMap::GetMaterialMap() +{ + return fMaterialMap; +} + +G4VMaterialMap::G4VMaterialMap() +{ + fMaterialMap = this; +} + +G4VMaterialMap::~G4VMaterialMap() +{ + fMaterialMap = NULL; +} + + diff --git a/source/persistency/global/src/G4VPersistentSubDbMan.cc b/source/persistency/global/src/G4VPersistentSubDbMan.cc index 98bdbbf5f2..5dde8ce80e 100644 --- a/source/persistency/global/src/G4VPersistentSubDbMan.cc +++ b/source/persistency/global/src/G4VPersistentSubDbMan.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VPersistentSubDbMan.cc,v 1.2 1999/11/26 20:37:00 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4VPersistentSubDbMan // diff --git a/source/persistency/global/src/G4VPersistentSubMan.cc b/source/persistency/global/src/G4VPersistentSubMan.cc index 1559d3c595..e4655d419f 100644 --- a/source/persistency/global/src/G4VPersistentSubMan.cc +++ b/source/persistency/global/src/G4VPersistentSubMan.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VPersistentSubMan.cc,v 1.2 1999/11/25 11:33:08 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4VPersistentSubMan // diff --git a/source/persistency/management/GNUmakefile b/source/persistency/management/GNUmakefile index 9fe5d30ff9..34e8bf2431 100644 --- a/source/persistency/management/GNUmakefile +++ b/source/persistency/management/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.16 1999/12/01 15:21:07 morita Exp $ +# $Id: GNUmakefile,v 1.17 2000/06/09 12:55:01 morita Exp $ name := G4pmanagement G4ODBMS := true @@ -38,6 +38,7 @@ CPPFLAGS += \ -I$(G4INSTALL)/source/geometry/management/include \ -I$(G4INSTALL)/source/geometry/volumes/include \ -I$(G4INSTALL)/source/global/management/include \ + -I$(G4INSTALL)/source/materials/include \ -I$(G4INSTALL)/source/intercoms/include diff --git a/source/persistency/management/include/G4PersistencyManager.hh b/source/persistency/management/include/G4PersistencyManager.hh index 7ac36d1df9..f51feaac85 100644 --- a/source/persistency/management/include/G4PersistencyManager.hh +++ b/source/persistency/management/include/G4PersistencyManager.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PersistencyManager.hh,v 1.15 1999/12/15 14:51:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 9278bbefb0..f9f04c13c7 100644 --- a/source/persistency/management/include/G4PersistencyMessenger.hh +++ b/source/persistency/management/include/G4PersistencyMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PersistencyMessenger.hh,v 1.4 1999/11/26 11:19:39 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // GEANT 4 class header file diff --git a/source/persistency/management/include/G4TransactionManager.hh b/source/persistency/management/include/G4TransactionManager.hh index ee4b7b3466..720158bcfa 100644 --- a/source/persistency/management/include/G4TransactionManager.hh +++ b/source/persistency/management/include/G4TransactionManager.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4TransactionManager.hh,v 1.6 1999/12/15 14:51:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class description: diff --git a/source/persistency/management/src/G4PersistencyManager.cc b/source/persistency/management/src/G4PersistencyManager.cc index a623c44dbf..4919b1822c 100644 --- a/source/persistency/management/src/G4PersistencyManager.cc +++ b/source/persistency/management/src/G4PersistencyManager.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PersistencyManager.cc,v 1.16 1999/12/15 14:51:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4PersistencyManager // diff --git a/source/persistency/management/src/G4PersistencyMessenger.cc b/source/persistency/management/src/G4PersistencyMessenger.cc index 1e1dcf77bc..e18b3bb916 100644 --- a/source/persistency/management/src/G4PersistencyMessenger.cc +++ b/source/persistency/management/src/G4PersistencyMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PersistencyMessenger.cc,v 1.7 1999/11/26 16:50:21 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4PersistencyMessenger.hh" diff --git a/source/persistency/management/src/G4TransactionManager.cc b/source/persistency/management/src/G4TransactionManager.cc index ad2247bd7a..f478f5a1e6 100644 --- a/source/persistency/management/src/G4TransactionManager.cc +++ b/source/persistency/management/src/G4TransactionManager.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4TransactionManager.cc,v 1.6 1999/12/15 14:51:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4TransactionManager // diff --git a/source/persistency/run/include/G4PRun.ddl b/source/persistency/run/include/G4PRun.ddl index deea40b1ba..a3dea3f9ef 100644 --- a/source/persistency/run/include/G4PRun.ddl +++ b/source/persistency/run/include/G4PRun.ddl @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PRun.ddl,v 1.6 1999/12/15 14:51:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4PRun_h diff --git a/source/persistency/run/include/G4PersistentRunMan.hh b/source/persistency/run/include/G4PersistentRunMan.hh index f6932e3935..3dc25469c0 100644 --- a/source/persistency/run/include/G4PersistentRunMan.hh +++ b/source/persistency/run/include/G4PersistentRunMan.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PersistentRunMan.hh,v 1.8 1999/11/28 21:54:21 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4PersistentRunMan // diff --git a/source/persistency/run/src/G4PRun.cc b/source/persistency/run/src/G4PRun.cc index bc53307cac..c48c9f0d70 100644 --- a/source/persistency/run/src/G4PRun.cc +++ b/source/persistency/run/src/G4PRun.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PRun.cc,v 1.5 1999/12/15 14:51:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4Run.hh" diff --git a/source/persistency/run/src/G4PersistentRunMan.cc b/source/persistency/run/src/G4PersistentRunMan.cc index 30d5cd2e30..2157f9f5fa 100644 --- a/source/persistency/run/src/G4PersistentRunMan.cc +++ b/source/persistency/run/src/G4PersistentRunMan.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PersistentRunMan.cc,v 1.8 1999/11/28 21:54:22 morita Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // class G4PersistentRunMan // diff --git a/source/processes/GNUmakefile b/source/processes/GNUmakefile index be7c5b05f6..08a89a8617 100644 --- a/source/processes/GNUmakefile +++ b/source/processes/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.6 1999/11/06 17:30:42 hpw Exp $ +# $Id: GNUmakefile,v 1.10 2000/06/11 11:24:26 hpw Exp $ # ---------------------------------------------------------------------- # GNUmakefile for processes library, Gabriele Cosmo 27-Jun-1998 # ---------------------------------------------------------------------- @@ -25,6 +25,7 @@ SUBDIRS += hadronic/models/generator/quark_gluon_string SUBDIRS += hadronic/models/generator/string_common SUBDIRS += hadronic/models/generator/string_fragmentation SUBDIRS += hadronic/models/generator/util +SUBDIRS += hadronic/models/radiative_decay SUBLIBS = G4procman G4optical G4decay G4transportation G4parameterisation @@ -38,6 +39,7 @@ SUBLIBS += G4hadronic_deex G4hadronic_diffstring G4hadronic_HE_gen G4hadronic_ki SUBLIBS += G4hadronic_qgstring SUBLIBS += G4hadronic_man_gen G4hadronic_preequ G4hadronic_string_common SUBLIBS += G4hadronic_stringfrag G4hadronic_util_gen +SUBLIBS += G4hadronic_radioactivedecay ifndef G4INSTALL G4INSTALL = ../.. diff --git a/source/processes/decay/History b/source/processes/decay/History new file mode 100644 index 0000000000..7075799400 --- /dev/null +++ b/source/processes/decay/History @@ -0,0 +1,22 @@ +$Id: History,v 1.1 2000/03/01 02:06:09 kurasige 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 * + ---------------------------------------------------------- + +- Mar. 1, 00 H.Kurashige (decay-V01-00-00) +- Bug fix in G4Decay::IsApplicable() + G4Decay should be applicable to "shortlived" particles diff --git a/source/processes/decay/include/G4Decay.hh b/source/processes/decay/include/G4Decay.hh index e4b6ff7f4f..877052d8e6 100644 --- a/source/processes/decay/include/G4Decay.hh +++ b/source/processes/decay/include/G4Decay.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Decay.hh,v 1.2.8.1 1999/12/07 20:50:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Decay.hh,v 1.3 1999/12/15 14:51:27 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/decay/src/G4Decay.cc b/source/processes/decay/src/G4Decay.cc index 5281146b95..73eb2f006f 100644 --- a/source/processes/decay/src/G4Decay.cc +++ b/source/processes/decay/src/G4Decay.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Decay.cc,v 1.3.8.1.2.1 1999/12/08 17:34:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Decay.cc,v 1.5 2000/03/01 02:06:11 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- @@ -26,7 +26,8 @@ // modified IsApplicable in order to protect the decay from registered // to resonances 12 Dec. 1998 H.Kurashige // remove G4ParticleMomentum 6 Feb. 99 H.Kurashige - +// modified IsApplicable to activate G4Decay for resonances 1 Mar. 00 H.Kurashige +// #include "G4Decay.hh" #include "G4DynamicParticle.hh" #include "G4DecayProducts.hh" @@ -61,9 +62,6 @@ G4Decay::~G4Decay() G4bool G4Decay::IsApplicable(const G4ParticleDefinition& aParticleType) { - // return false if resonances - if (aParticleType.IsShortLived()) return false; - // check if the particle is stable? if (aParticleType.GetPDGLifeTime() <0.0) { return false; diff --git a/source/processes/electromagnetic/History b/source/processes/electromagnetic/History index 64bc6ce03a..36821d6fac 100644 --- a/source/processes/electromagnetic/History +++ b/source/processes/electromagnetic/History @@ -1,4 +1,4 @@ -$Id: History,v 1.3 1999/11/10 13:21:38 maire Exp $ +$Id: History,v 1.4 2000/03/02 14:04:55 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -16,6 +16,11 @@ committal in the CVS repository ! ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- + +02 mar 00 mma (em-V01-00-00) +- new G4VEnergyLoss class and related structure +- cowork with geant4-01-00-ref-06 + 10 nov 99 mma (em-V00-01-03) - migration to STL: remove RWT hash dictionnary diff --git a/source/processes/electromagnetic/lowenergy/History b/source/processes/electromagnetic/lowenergy/History index 38753e4601..448d742fe6 100644 --- a/source/processes/electromagnetic/lowenergy/History +++ b/source/processes/electromagnetic/lowenergy/History @@ -1,4 +1,4 @@ -$Id: History,v 1.2 2000/01/21 13:36:11 vnivanch Exp $ +$Id: History,v 1.22 2000/06/24 18:00:50 pia Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,139 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +24.06.2000 - MGP, tag emlowen-V01-01-22 + Modification to hTest G4Ion... classes by V. Ivanchenko to + fix crash on exit on Linux + +22.06.2000 - MGP, tag emlowen-V01-01-21 + MGP: Bug fix in G4VeLowEnergyLoss (calculation of fluctuations); + correction to prevent log of negative argument + Fixes problems with test14 in system testing on HP + To be further verified + +22.06.2000 - MGP, tag emlowen-V01-01-20 + Minor improvements in test/G4BremsstrahlungTest and + and test/G4eIonisationTest + Cosmetics (found $ tag $ in many header files, where does it + come from?) + +20.06.2000 - MGP, tag emlowen-V01-01-19 + Fixed printout in test/G4eIonisationTest + +20.06.2000 - MGP, tag emlowen-V01-01-18 + Two new unit tests created by MGP: test/G4BremsstrahlungTest + and test/G4eIonisationTest + +24.05.2000 - MGP, tag emlowen-V01-01-17 + Modifications to G4QAOLowEnergyloss and G4hLowEnergyIonisation + by Stephane Chauvie: physics fixes + Modifications to G4QAOLowEnergyloss and G4hLowEnergyIonisation + by MG Pia: fixes to the private interface, + fixes to remove compilation warnings + added protections + proper code indentation to improve legibility + Reorganization of the test directory by Petteri Nieminen: + content of eUnitTests/ moved to ePhotonIntegration/ + (indeed they were not unit tests) + content of validation/ moved to aluminumtest/ + Corrections by MG Pia to GNUmakefiles in test/ subdirectories + TestEm6, TestP, eUnitTests and validation are obsolete + directories, still in the repository but not to be used + +23.05.2000 - MGP, tag emlowen-V01-01-16 + New G4QAOLowEnergyloss class by Stephane Chauvie for + antiproton energy loss model + Modifications to G4hLowEnergyIonisation for the new + antiproton models + Physics extension to lower energies for antiprotons for a + set of materials + New test/hTest for integration/physics testing of hadrons/ions + (was previously TestEm6) + +25.05.2000 - Stephane Chauvie added class for energy loss of antiprotons + G4QAOLowEnergyloss + modifications in G4hlowEnergyIonisation + +22.05.2000 - MGP, tag emlowen-V01-01-15 + Modifications in G4VhEnergyLossModel.hh + +19.05.2000 - MGP, tag emlowen-V01-01-14 + Includes typo correction in G4VhEnergyLossModel.hh + + 8.05.2000 - MGP, tag emlowen-V01-01-13 + Includes minor modifications in G4VhEnergyLossModel.hh + + 7.05.2000 - MGP, tag emlowen-V01-01-12 + Includes the G4VhEnergyLossModel abstract class, + as part of the design iteration in the hadronic domain + + 7.05.2000 - MGP, tag emlowen-V01-01-11 + Includes Francesco Longo's fix of missing units in + G4LowEnergyGammaConversion.cc + + 7.05.2000 - MGP, tag emlowen-V01-01-10 + Includes Vladimir's test/TestEm6 and test/TestP directories + requires removing two (!) duplicate TestEm6 directories + elsewhere + Includes Stephane's unit tests G4hLETestLossTable.cc + and G4hLETestAlongPostStep.cc + +19.04.2000 - MGP, tag emlowen-V01-01-09 + same as emlowen-V01-01-08, with modifications by V.L. for + first implementation of continuous energy loss in + G4LowEnergyBremsstrahlung + +18.04.2000 - MGP, tag emlowen-V01-01-08 + same as emlowen-V01-01-06, + with modification to G4LowEnergyBremsstrahlung.cc to correct + error introduced by V.L + +18.04.2000 - MGP, tag emlowen-V01-01-07 + same as emlowen-V01-01-05 + (disregarding modifications in emlowen-V01-01-06), + with modification to G4LowEnergyBremsstrahlung.cc to correct + error introduced by V.L. + +18.04.2000 - MGP, tag emlowen-V01-01-06 + includes Veronique's modifications to + G4LowEnergyIonisation.hh + G4LowEnergyIonisation.icc + G4LowEnergyIonisation.icc + G4eLowEnergyLoss.cc + G4G4LowEnergyPhotoElectric.cc + for integration of cross sections, float/G4double conversions + and corrections of fluorescence transition probabilities + to take into account non-radiative transitions + (no Auger electron simulated yet) + + +04.04.2000 - MGP, tag emlowen-V01-01-05 + removed dependency on standard category (G4eEnergyLoss) + +04.04.2000 - MGP, tag emlowen-V01-01-04 + tag Vladimir's and Stephane's modifications for antiprotons + +03.04.2000 - Vladimir Ivanchenko and Stephane Chauvie + 1) Linearity into Barkas effect and nuclear stopping power + for antiprotons + +02.04.2000 - MGP, tag emlowen-V01-01-03 + tag V.L.'s modifications to G4LowEnergyIonisation (units) + +02.04.2000 - MGP, tag emlowen-V01-01-02 + tag V.L.'s fix of typo in G4LowEnergyGammaConversion + +02.04.2000 - MGP, tag emlowen-V01-01-01 + tag V.I.'s modifications, 31.03.2000 + +31.03.2000 - Vladimir Ivanchenko update + 1) G4hLowEnergyIonisation.cc limitation DeltaCut > Eexc + is insert in dedx, cross section calculation and sampling + 2) G4hLowEnergyLoss.cc is creating in the lowenergy as a + klon of G4hEnergyLoss.cc + 3) Spin 1/2 and spin 1 corrections are inserted is cross + section calculation, cross section sampling, de/dx + 4) IfAplicable check lepton number + 21.01.2000 - Vladimir Ivanchenko update 1) G4hLowEnergyIonisation.cc Barkas effect calculation and inicialisation diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyBremsstrahlung.hh b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyBremsstrahlung.hh index 4d9184393d..baaa7afefb 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyBremsstrahlung.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyBremsstrahlung.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LowEnergyBremsstrahlung.hh,v 1.9 2000/01/26 09:32:06 lefebure Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LowEnergyBremsstrahlung.hh,v 1.11 2000/04/19 13:20:53 lefebure Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -17,21 +17,20 @@ // CERN, IT Division, ASD group // ------------ G4LowEnergyBremsstrahlung physics process ------ // by A.Forti 1999/03/27 19:18:13 +// +// 18.04.2000 V.Lefebure +// - First implementation of continuous energy loss. +// +// // ************************************************************ #ifndef G4LowEnergyBremsstrahlung_h #define G4LowEnergyBremsstrahlung_h 1 -// Base Class Headers -//#include "G4VDiscreteProcess.hh" -#include "G4eEnergyLoss.hh" - -// Contained Variables Headers +#include "G4eLowEnergyLoss.hh" #include "G4LowEnergyUtilities.hh" -#include "G4Electron.hh" -#include "G4Positron.hh" -class G4LowEnergyBremsstrahlung : public G4eEnergyLoss{ +class G4LowEnergyBremsstrahlung : public G4eLowEnergyLoss{ public: @@ -42,8 +41,6 @@ public: G4bool IsApplicable(const G4ParticleDefinition&); void SetCutForLowEnSecPhotons(G4double); - - void SetPhysicsTableBining(G4double lowE, G4double highE, G4int nBins); void PrintInfoDefinition(); @@ -58,35 +55,34 @@ public: G4VParticleChange* PostStepDoIt(const G4Track& track, const G4Step& step); - G4double GetLambda(G4double KineticEnergy,G4Material* material); + G4double GetEnergyLossWithCut(const G4double AtomicNumber, + const G4double KineticEnergy, + const G4double Tcut) ; -protected: +private: void BuildCrossSectionTable(); void BuildMeanFreePathTable(); void BuildATable(); void BuildBTable(); void BuildZVec(); + void BuildLambdaTable(const G4ParticleDefinition& aParticleType); - void ComputePartialSumSigma(G4double KineticEnergy, - const G4Material* aMaterial); + void ComputePartialSumSigma(const G4double KineticEnergy, + const G4Material* aMaterial, + const G4double threshold); private: - G4double ComputeA(G4int Z, G4double ElectKinEnergy); // interpolation - G4double ComputeB(G4int Z, G4double ElectKinEnergy); // parametrized formula - - G4double ComputeBremLoss(G4double Z, G4double natom, G4double T, - G4double Cut, G4double x); - - G4double ComputeXYPolynomial(G4double x,G4double y,G4int xSize, - G4int ySize,const G4double coeff[]); - - G4double ComputePositronCorrFactorLoss(G4double AtomicNumber, - G4double KineticEnergy, - G4double GammaEnergyCut); - + 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; diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyBremsstrahlung.icc b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyBremsstrahlung.icc index fb7c86a421..33d2141c78 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyBremsstrahlung.icc +++ b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyBremsstrahlung.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LowEnergyBremsstrahlung.icc,v 1.12 2000/02/18 12:34:17 lefebure Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LowEnergyBremsstrahlung.icc,v 1.13 2000/04/19 13:20:53 lefebure Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // --------------------------------------------------------------- @@ -16,7 +16,12 @@ // CERN, IT Division, ASD group // ------------ 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" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -39,25 +44,42 @@ inline G4double G4LowEnergyBremsstrahlung::GetMeanFreePath(const G4Track& track, 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_MIN; + MeanFreePath = DBL_MAX; else { if (KineticEnergy > HighestKineticEnergy) KineticEnergy = 0.99*HighestKineticEnergy ; - MeanFreePath = util.DataLogInterpolation(KineticEnergy, aMaterial->GetIndex(), theMeanFreePathTable); + ///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(G4int AtomicNumber, G4double ElectronKinEnergy){ +inline G4double G4LowEnergyBremsstrahlung::ComputeA(const G4int AtomicNumber,const G4double ElectronKinEnergy){ G4double aVal; G4FirstLevel* oneAtomCoeff = (*ATable)[AtomicNumber-1]; @@ -74,7 +96,7 @@ inline G4double G4LowEnergyBremsstrahlung::ComputeA(G4int AtomicNumber, G4double return aVal; } -inline G4double G4LowEnergyBremsstrahlung::ComputeB(G4int AtomicNumber, G4double ElectronKinEnergy){ +inline G4double G4LowEnergyBremsstrahlung::ComputeB(const G4int AtomicNumber,const G4double ElectronKinEnergy){ G4double bVal; G4double constTerm = (*(*BTable)[0])[AtomicNumber-1]; diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyCompton.hh b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyCompton.hh index de500ef43f..53482da685 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyCompton.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyCompton.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LowEnergyCompton.hh,v 1.5 2000/01/26 09:43:16 lefebure Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LowEnergyCompton.hh,v 1.6 2000/06/22 02:25:24 pia Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyCompton.icc b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyCompton.icc index d68ebf3b3f..d538c061a9 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyCompton.icc +++ b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyCompton.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LowEnergyCompton.icc,v 1.10 2000/01/26 09:43:16 lefebure Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LowEnergyCompton.icc,v 1.11 2000/06/22 02:25:25 pia Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // --------------------------------------------------------------- diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyGammaConversion.hh b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyGammaConversion.hh index 12f9e49801..e54cae1bdb 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyGammaConversion.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyGammaConversion.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LowEnergyGammaConversion.hh,v 1.4 2000/01/26 09:43:16 lefebure Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LowEnergyGammaConversion.hh,v 1.5 2000/06/22 02:25:25 pia Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyGammaConversion.icc b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyGammaConversion.icc index 1885c3dd2e..9054510cea 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyGammaConversion.icc +++ b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyGammaConversion.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LowEnergyGammaConversion.icc,v 1.8 2000/01/26 09:43:16 lefebure Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LowEnergyGammaConversion.icc,v 1.9 2000/06/22 02:25:25 pia Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // --------------------------------------------------------------- diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyIonisation.hh b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyIonisation.hh index 282dc43562..6a39823e53 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyIonisation.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyIonisation.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LowEnergyIonisation.hh,v 1.12 1999/12/15 14:51:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LowEnergyIonisation.hh,v 1.14 2000/04/07 13:43:13 lefebure Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -18,6 +18,8 @@ // by Alessandra Forti July 1999 // ************************************************************ // +// 07.04.2000 Veronique Lefebure + Laszlo Urban +// - First implemention of continuous energy loss // 14/07/99: corrections , L.Urban // ------------------------------------------------------------ @@ -26,7 +28,7 @@ // Base Class Headers -#include "G4eEnergyLoss.hh" +#include "G4eLowEnergyLoss.hh" // Contained Variables Headers #include "G4LowEnergyUtilities.hh" @@ -37,7 +39,7 @@ typedef G4FirstLevel oneShellTable; typedef G4SecondLevel oneAtomTable; typedef G4ThirdLevel allAtomTable; -class G4LowEnergyIonisation : public G4eEnergyLoss{ +class G4LowEnergyIonisation : public G4eLowEnergyLoss{ public: @@ -64,10 +66,25 @@ public: void PrintInfoDefinition(); - protected: + 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) ; + + private: virtual G4double ComputeCrossSection(const G4double AtomicNumber, const G4double IncEnergy); + G4double ComputeCrossSectionWithCut(const G4double AtomIndex, + const G4double IncEnergy, + const G4double CutEnergy); void BuildLossTable(const G4ParticleDefinition& aParticleType); void BuildShellCrossSectionTable(); @@ -75,6 +92,7 @@ public: void BuildFluorTransitionTable(); void BuildSamplingCoeffTable(); void BuildZVec(); + void BuildLambdaTable(const G4ParticleDefinition& aParticleType); private: @@ -84,7 +102,9 @@ private: private: - G4int SelectRandomShell(const G4int AtomIndex, const G4double IncEnergy); + G4int SelectRandomShell(const G4int AtomIndex + , const G4double IncEnergy + , const G4double CutEnergy); G4Element* SelectRandomAtom(const G4DynamicParticle* aDynamicPhoton, G4Material* aMaterial); @@ -94,7 +114,10 @@ private: - G4double EnergySampling(const G4int, const G4int,const G4double); + G4double EnergySampling(const G4int AtomicNumber + , const G4int ShellIndex + , const G4double KinEn + , const G4double deltaRayMinE = 0.1*eV); allAtomTable* allAtomShellCrossSec; allAtomTable* theFluorTransitionTable; @@ -112,6 +135,7 @@ private: G4double CutForLowEnergySecondaryPhotons; G4double CutForLowEnergySecondaryElectrons; G4double MeanFreePath; + G4PhysicsTable* theMeanFreePathTable; }; #include "G4LowEnergyIonisation.icc" diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyIonisation.icc b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyIonisation.icc index 7e04655b9e..ebd0673018 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyIonisation.icc +++ b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyIonisation.icc @@ -5,8 +5,7 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LowEnergyIonisation.icc,v 1.9 2000/02/18 12:34:17 lefebure Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LowEnergyIonisation.icc,v 1.11 2000/04/07 13:43:13 lefebure Exp $ // // // --------------------------------------------------------------- @@ -19,6 +18,8 @@ // 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 // --------------------------------------------------------------- @@ -42,34 +43,32 @@ inline G4double G4LowEnergyIonisation::GetMeanFreePath( const G4DynamicParticle* aParticle = track.GetDynamicParticle(); G4double KineticEnergy = aParticle->GetKineticEnergy(); const G4Material* aMaterial = track.GetMaterial(); - + const G4ElementVector* theElementVector = aMaterial->GetElementVector(); + const G4double* theAtomicNumDensityVector = aMaterial->GetAtomicNumDensityVector(); + const G4int NumberOfElements = aMaterial->GetNumberOfElements() ; + G4double* DeltaCutInKineticEnergy = G4Electron::Electron()->GetCutsInEnergy() ; + G4double DeltaThreshold = DeltaCutInKineticEnergy[aMaterial->GetIndex()] ; + G4bool isOutRange ; + G4double SIGMA = 0.; if( KineticEnergy < LowestKineticEnergy ) - MeanFreePath = DBL_MIN; + MeanFreePath = DBL_MAX; else { if (KineticEnergy > HighestKineticEnergy) KineticEnergy = HighestKineticEnergy; - - const - G4ElementVector* theElementVector = aMaterial->GetElementVector(); - const - G4double* theAtomicNumDensityVector = aMaterial->GetAtomicNumDensityVector(); - - const - G4int NumberOfElements = aMaterial->GetNumberOfElements() ; - G4double SIGMA = 0; - for(G4int iel=0; ielGetZ(), KineticEnergy)*barn; - - SIGMA += theAtomicNumDensityVector[iel]*Cs; - } - - - // mean free path = 1./macroscopic cross section - MeanFreePath = SIGMA > DBL_MIN ? 1./SIGMA : DBL_MAX; - } - + ///don't use table for now + ///MeanFreePath = ((*theMeanFreePathTable)(aMaterial->GetIndex()))-> + /// GetValue( KineticEnergy, isOutRange); + SIGMA = 0.; + G4int iel; + for (iel=0; ielGetZ(), + KineticEnergy, + DeltaThreshold); + } + MeanFreePath = SIGMA > DBL_MIN ? 1./SIGMA : DBL_MAX; + } return MeanFreePath ; } diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPhotoElectric.hh b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPhotoElectric.hh index 1bd897ba60..98cd91719a 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPhotoElectric.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPhotoElectric.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LowEnergyPhotoElectric.hh,v 1.12 2000/01/26 09:43:16 lefebure Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LowEnergyPhotoElectric.hh,v 1.13 2000/06/22 02:25:26 pia Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPhotoElectric.icc b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPhotoElectric.icc index 6f30eaaaf1..925f753f5a 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPhotoElectric.icc +++ b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPhotoElectric.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LowEnergyPhotoElectric.icc,v 1.13 2000/01/26 09:43:17 lefebure Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LowEnergyPhotoElectric.icc,v 1.14 2000/06/22 02:25:26 pia Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // --------------------------------------------------------------- diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyRayleigh.hh b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyRayleigh.hh index 6bfe6241d7..9f5679641a 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyRayleigh.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyRayleigh.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LowEnergyRayleigh.hh,v 1.5 2000/01/26 09:43:17 lefebure Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LowEnergyRayleigh.hh,v 1.6 2000/06/22 02:19:01 pia Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyRayleigh.icc b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyRayleigh.icc index eea7f81d83..93e7f91261 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyRayleigh.icc +++ b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyRayleigh.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LowEnergyRayleigh.icc,v 1.9 2000/01/26 09:43:17 lefebure Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LowEnergyRayleigh.icc,v 1.10 2000/06/22 02:25:26 pia Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // --------------------------------------------------------------- diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyUtilities.hh b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyUtilities.hh index b1c343a6e3..706d717a8e 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyUtilities.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyUtilities.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LowEnergyUtilities.hh,v 1.4 2000/01/26 09:43:17 lefebure Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LowEnergyUtilities.hh,v 1.5 2000/06/22 02:25:27 pia Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/electromagnetic/lowenergy/include/G4QAOLowEnergyLoss.hh b/source/processes/electromagnetic/lowenergy/include/G4QAOLowEnergyLoss.hh new file mode 100644 index 0000000000..d62b4a707c --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4QAOLowEnergyLoss.hh @@ -0,0 +1,113 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By 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 header file +// +// For information related to this code contact: +// CERN, IT Division, ASD group +// History: New Implementation +// +// ---------- G4QAOLowEnergyLoss physics process ------- +// by Stephane Chauvie, 21 May 2000 +// +// Modified: +// 23/05/2000 MGP Made compliant to design +// +// Class Description: +// Quantal Harmonic Oscillator Model for energy loss of slow antiprotons +// Class Description - End +// +// ------------------------------------------------------------ + + +#ifndef G4QAOLowEnergyLoss_hh +#define G4QAOLowEnergyLoss_hh 1 + +#include "G4VhEnergyLossModel.hh" +#include "globals.hh" + +class G4DynamicParticle; +class G4Material; +class G4ParticleDefinition; + +class G4QAOLowEnergyLoss : public G4VhEnergyLossModel +{ +public: + + G4QAOLowEnergyLoss(); + + ~G4QAOLowEnergyLoss(); + + virtual G4double LowEnergyLimit() const {return 50*keV;}; + // returns the lower limit for model validity + + virtual G4double HighEnergyLimit() const; + // returns the higher limit for model validity + + virtual G4bool IsInCharge(G4double energy, + const G4ParticleDefinition* particleDefinition, + const G4Material* material) const; + // returns true if the model is applicable at that energy for + // that particle for that material + + virtual G4double EnergyLoss(const G4DynamicParticle* particle, + const G4Material* material) const; + // returns the energy loss via the quantal harmonic oscillator model + +private: + + // hide assignment operator + G4QAOLowEnergyLoss & operator=( G4QAOLowEnergyLoss &right); + G4QAOLowEnergyLoss( G4QAOLowEnergyLoss&); + + // get number of shell, energy and oscillator strenghts for material + G4int GetNumberOfShell(const G4Material* material) const; + G4double GetShellEnergy(const G4Material* material,G4int nbOfTheShell) const; + G4double GetShellStrength(const G4Material* material,G4int nbOfTheShell) const; + + // calculate stopping number for L's term + G4double GetL0(G4double normEnergy) const; + // terms in Z^2 + G4double GetL1(G4double normEnergy) const; + // terms in Z^3 + G4double GetL2(G4double normEnergy) const; + // terms in Z^4 + + // material at now avaliable for the model + static const G4String materialAvailable[6]; + + // number, energy and oscillator strenghts + // for an harmonic oscillator model of material + static const G4int nbofShellForMaterial[6]; + static G4double alShellEnergy[3]; + static G4double alShellStrength[3]; + static G4double siShellEnergy[3]; + static G4double siShellStrength[3]; + static G4double cuShellEnergy[4]; + static G4double cuShellStrength[4]; + static G4double taShellEnergy[6]; + static G4double taShellStrength[6]; + static G4double auShellEnergy[6]; + static G4double auShellStrength[6]; + static G4double ptShellEnergy[6]; + static G4double ptShellStrength[6]; + + G4int numberOfMaterials; + + // variable for calculation of stopping number of L's term + static const G4double L0[67][2]; + static const G4double L1[22][2]; + static const G4double L2[14][2]; + + G4int sizeL0; + G4int sizeL1; + G4int sizeL2; + +}; + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4VeLowEnergyLoss.hh b/source/processes/electromagnetic/lowenergy/include/G4VeLowEnergyLoss.hh new file mode 100644 index 0000000000..cf98bc3e88 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4VeLowEnergyLoss.hh @@ -0,0 +1,222 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4VeLowEnergyLoss.hh,v 1.1 2000/04/04 13:47:35 lefebure Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// 3.4.2000 Veronique Lefebure: +// Move utils/include/G4VEnergyLoss.hh to +// lowenergy/include/G4VeLowEnergyLoss.hh +// +// ------------------------------------------------------------ +// GEANT 4 class header file +// +// For information related to this code contact: +// CERN, CN Division, ASD group +// +// Class Description +// +// General service class for the energy loss classes +// +// It contains code needed to compute the range tables, +// time tables, the inverse range tables and some auxiliary +// tables. +// The energy loss fluctuation code is here,too. +// +// All the EnergyLoss classes are inherited from G4VeLowEnergyLoss +// class. +// +// ----------------------------------------------------------- +// created on 28 January 2000 by L. Urban +// ----------------------------------------------------------- + +#ifndef G4VeLowEnergyLoss_h +#define G4VeLowEnergyLoss_h 1 + +#include "globals.hh" +#include "G4ios.hh" +#include "Randomize.hh" +#include "G4Poisson.hh" +#include "G4Electron.hh" +#include "G4VContinuousDiscreteProcess.hh" +#include "G4PhysicsLogVector.hh" +#include "G4PhysicsLinearVector.hh" + + +class G4VeLowEnergyLoss : public G4VContinuousDiscreteProcess +{ + public: + + G4VeLowEnergyLoss(const G4String& , + G4ProcessType aType = fNotDefined ); + G4VeLowEnergyLoss(G4VeLowEnergyLoss &); + + virtual ~G4VeLowEnergyLoss(); + + virtual G4double GetContinuousStepLimit(const G4Track& track, + G4double previousStepSize, + G4double currentMinimumStep, + G4double& currentSafety) = 0 ; + + virtual G4VParticleChange* AlongStepDoIt(const G4Track& track, + const G4Step& Step) = 0 ; + + virtual G4double GetMeanFreePath(const G4Track& track, + G4double previousStepSize, + G4ForceCondition* condition) = 0; + + virtual G4VParticleChange* PostStepDoIt(const G4Track& track, + const G4Step& Step) = 0; + + + + protected:// with description + + // code for the energy loss fluctuation + + G4double GetLossWithFluct(const G4DynamicParticle* aParticle, + G4Material* aMaterial, + G4double threshold); + + + private: + + // hide default constructor and assignment operator as private + G4VeLowEnergyLoss(); + G4VeLowEnergyLoss & operator=(const G4VeLowEnergyLoss &right); + + protected: + + // data members to speed up the fluctuation calculation + G4Material* lastMaterial; + G4int imat; + G4double f1Fluct,f2Fluct,e1Fluct,e2Fluct,rateFluct,ipotFluct; + G4double e1LogFluct,e2LogFluct,ipotLogFluct; + + const G4int nmaxCont1,nmaxCont2 ; + + // static part of the class + + public: // With description + + static void SetRndmStep (G4bool value) {rndmStepFlag = value;} + // use / do not use randomisation in energy loss steplimit + // ( default = no randomisation) + + static void SetEnlossFluc (G4bool value) {EnlossFlucFlag = 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; + } + // 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. + + + 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); + + + // 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 + static G4double c1lim,c2lim,c3lim ; // coeffs for computing steplimit + + static G4bool rndmStepFlag; // control the randomization of the step + static G4bool EnlossFlucFlag; // control the energy loss fluctuation + + +}; + +#endif + + + diff --git a/source/processes/electromagnetic/lowenergy/include/G4VhEnergyLossModel.hh b/source/processes/electromagnetic/lowenergy/include/G4VhEnergyLossModel.hh new file mode 100644 index 0000000000..52de20d368 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4VhEnergyLossModel.hh @@ -0,0 +1,69 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By 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 +// +// For information related to this code contact: +// Geant4 Collaboration +// +// File name: G4VhEnergyLossModel +// +// Author: Maria Grazia Pia (MariaGrazia.Pia@ge.infn.it) +// +// Creation date: 7 May 2000 +// +// Modifications: +// 22/05/2000 MGP Version compliant with design +// +// Class Description: +// +// Abstract base class for hadron energy loss model +// +// Class Description: End +// +// ------------------------------------------------------------------- +// + +#ifndef G4VHENERGYLOSSMODEL_HH +#define G4VHENERGYLOSSMODEL_HH + +#include "globals.hh" + +class G4ParticleDefinition; +class G4DynamicParticle; +class G4Material; + +class G4VhEnergyLossModel +{ + +public: + + G4VhEnergyLossModel() {}; + + virtual ~G4VhEnergyLossModel() {}; + + virtual G4double EnergyLoss(const G4DynamicParticle* particle, + const G4Material* material) const = 0; + + virtual G4double LowEnergyLimit() const = 0; + + virtual G4double HighEnergyLimit() const = 0; + + virtual G4bool IsInCharge(G4double energy, + const G4ParticleDefinition* partDef, + const G4Material* material) const = 0; + +protected: + + +private: + +}; + +#endif diff --git a/source/processes/electromagnetic/standard/include/G4eEnergyLoss.hh b/source/processes/electromagnetic/lowenergy/include/G4eLowEnergyLoss.hh similarity index 59% rename from source/processes/electromagnetic/standard/include/G4eEnergyLoss.hh rename to source/processes/electromagnetic/lowenergy/include/G4eLowEnergyLoss.hh index a26180a193..2f835f3c48 100644 --- a/source/processes/electromagnetic/standard/include/G4eEnergyLoss.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4eLowEnergyLoss.hh @@ -5,10 +5,9 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4eEnergyLoss.hh,v 1.4.4.1 1999/12/07 20:50:53 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4eLowEnergyLoss.hh,v 1.1 2000/04/04 13:47:35 lefebure Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -// $Id: // ------------------------------------------------------------ // GEANT 4 class header file // @@ -16,22 +15,23 @@ // CERN, IT Division, ASD group // History: first implementation, based on object model of // 2nd December 1995, G.Cosmo -// ---------- G4eEnergyLoss physics process ----------- +// ---------- G4eLowEnergyLoss physics process ----------- // by Laszlo Urban, 20 March 1997 // // 27.05.98 OldGetRange removed + other corrs , L.Urban // 10.09.98 cleanup // 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 // ------------------------------------------------------------ -#ifndef G4eEnergyLoss_h -#define G4eEnergyLoss_h 1 +#ifndef G4eLowEnergyLoss_h +#define G4eLowEnergyLoss_h 1 #include "G4ios.hh" #include "globals.hh" #include "Randomize.hh" -#include "G4VContinuousDiscreteProcess.hh" +#include "G4VeLowEnergyLoss.hh" #include "G4Material.hh" #include "G4Element.hh" #include "G4ParticleChangeForLoss.hh" @@ -54,20 +54,20 @@ // 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. -// G4eEnergyLoss is the base class for the processes giving contribution +// G4eLowEnergyLoss is the base class for the processes giving contribution // to the (continuous) energy loss of e+/e- . // Class description - end class G4EnergyLossMessenger; -class G4eEnergyLoss : public G4VContinuousDiscreteProcess +class G4eLowEnergyLoss : public G4VeLowEnergyLoss { public: - G4eEnergyLoss(const G4String& ); + G4eLowEnergyLoss(const G4String& ); - ~G4eEnergyLoss(); + ~G4eLowEnergyLoss(); public: // With description @@ -103,71 +103,28 @@ class G4eEnergyLoss : public G4VContinuousDiscreteProcess private: - void BuildRangeTable(const G4ParticleDefinition& aParticleType); - - void BuildInverseRangeTable(const G4ParticleDefinition& aParticleType); - - void BuildTimeTables(const G4ParticleDefinition& aParticleType); - - void BuildRangeVector(G4int materialIndex, - G4PhysicsLogVector* rangeVector); - - void BuildLabTimeVector(G4int materialIndex, - G4PhysicsLogVector* rangeVector); - - void BuildProperTimeVector(G4int materialIndex, - G4PhysicsLogVector* rangeVector); - - void InvertRangeVector(G4int materialIndex, - G4PhysicsLogVector* rangeVector); - - G4double RangeIntLin(G4PhysicsVector* physicsVector,G4int nbin); - - G4double RangeIntLog(G4PhysicsVector* physicsVector,G4int nbin); - G4double LabTimeIntLog(G4PhysicsVector* physicsVector,G4int nbin); - G4double ProperTimeIntLog(G4PhysicsVector* physicsVector,G4int nbin); - - void BuildRangeCoeffATable(const G4ParticleDefinition& aParticleType); - void BuildRangeCoeffBTable(const G4ParticleDefinition& aParticleType); - void BuildRangeCoeffCTable(const G4ParticleDefinition& aParticleType); - G4double GetConstraints(const G4DynamicParticle* aParticle, G4Material* aMaterial); - G4double GetLossWithFluct(const G4DynamicParticle* aParticle, - G4Material* aMaterial, - G4double threshold); - // hide assignment operator - G4eEnergyLoss (G4eEnergyLoss &); - G4eEnergyLoss & operator=(const G4eEnergyLoss &right); + G4eLowEnergyLoss (G4eLowEnergyLoss &); + G4eLowEnergyLoss & operator=(const G4eLowEnergyLoss &right); protected: G4PhysicsTable* theLossTable; - G4double ParticleMass; // heavily used - G4double MinKineticEnergy ; // particle with kinetic energy // smaller than MinKineticEnergy // is stopped in AlongStepDoIt G4double Charge,lastCharge ; - G4PhysicsTable* theDEDXTable; - G4PhysicsTable* theRangeTable; - - G4PhysicsTable* theRangeCoeffATable; - G4PhysicsTable* theRangeCoeffBTable; - G4PhysicsTable* theRangeCoeffCTable; private: - G4PhysicsTable* theInverseRangeTable; + G4PhysicsTable* theDEDXTable; - G4PhysicsTable* theLabTimeTable ; - G4PhysicsTable* theProperTimeTable ; - G4int CounterOfProcess; G4PhysicsTable** RecorderOfProcess; @@ -176,25 +133,6 @@ class G4eEnergyLoss : public G4VContinuousDiscreteProcess G4double linLossLimit ; // used in AlongStepDoIt - G4int TotBin; // number of bins in table, - // calculated in BuildPhysicTable - G4double LowestKineticEnergy; - G4double HighestKineticEnergy; - G4double RTable,LOGRTable; // LOGRTable=log(HighestKineticEnergy- - // LowestKineticEnergy)/TotBin - // RTable = exp(LOGRTable) - - // variables for the integration routines - G4double taulow,tauhigh,ltaulow,ltauhigh; - - // 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 ; //New ParticleChange G4ParticleChangeForLoss fParticleChange ; @@ -202,6 +140,28 @@ class G4eEnergyLoss : public G4VContinuousDiscreteProcess // // 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: @@ -221,7 +181,7 @@ class G4eEnergyLoss : public G4VContinuousDiscreteProcess static G4PhysicsTable* theProperTimeElectronTable ; static G4PhysicsTable* theProperTimePositronTable ; - //processes inherited from G4eEnergyLoss + //processes inherited from G4eLowEnergyLoss //register themselves in the static array Recorder //for electrons/positrons separately //nb of contributing processes = NbOfProcesses @@ -233,6 +193,14 @@ class G4eEnergyLoss : public G4VContinuousDiscreteProcess private: + static G4int NbinEloss; // number of bins in table, + // calculated in BuildPhysicTable + static G4double LowerBoundEloss; + static G4double UpperBoundEloss; + static G4double RTable,LOGRTable; // LOGRTable=log(UpperBoundEloss- + // LowerBoundEloss)/NbinEloss + // RTable = exp(LOGRTable) + //for interpolation within the tables static G4PhysicsTable* theeRangeCoeffATable; static G4PhysicsTable* theeRangeCoeffBTable; @@ -241,52 +209,11 @@ class G4eEnergyLoss : public G4VContinuousDiscreteProcess static G4PhysicsTable* thepRangeCoeffBTable; static G4PhysicsTable* thepRangeCoeffCTable; - static G4double dRoverRange; // dRoverRange is the maximum allowed - // deltarange/range in one Step - static G4double finalRange; // final step before stopping - static G4double c1lim,c2lim,c3lim ; // coeffs for computing steplimit - - static G4bool rndmStepFlag; // control the randomization of the step - static G4bool EnlossFlucFlag; // control the energy loss fluctuation - static G4EnergyLossMessenger* eLossMessenger; - 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 SetRndmStep (G4bool value) {rndmStepFlag = value;} - // use / do not use randomisation in energy loss steplimit - // ( default = no randomisation) - - static void SetEnlossFluc (G4bool value) {EnlossFlucFlag = 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; - } - // 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. - }; -#include "G4eEnergyLoss.icc" +#include "G4eLowEnergyLoss.icc" #endif diff --git a/source/processes/electromagnetic/standard/include/G4eEnergyLoss.icc b/source/processes/electromagnetic/lowenergy/include/G4eLowEnergyLoss.icc similarity index 89% rename from source/processes/electromagnetic/standard/include/G4eEnergyLoss.icc rename to source/processes/electromagnetic/lowenergy/include/G4eLowEnergyLoss.icc index 30b03092de..3a93734af4 100644 --- a/source/processes/electromagnetic/standard/include/G4eEnergyLoss.icc +++ b/source/processes/electromagnetic/lowenergy/include/G4eLowEnergyLoss.icc @@ -5,10 +5,9 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4eEnergyLoss.icc,v 1.4.8.1 1999/12/07 20:50:53 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4eLowEnergyLoss.icc,v 1.1 2000/04/04 13:47:36 lefebure Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -// $Id: // --------------------------------------------------------------- // GEANT 4 class inlined methods file // @@ -16,7 +15,7 @@ // CERN, IT Division, ASD group // History: based on object model of // 2nd December 1995, G.Cosmo -// ------------ G4eEnergyLoss physics process ------------ +// ------------ G4eLowEnergyLoss physics process ------------ // by Laszlo Urban, 20 March 1997 // *************************************************************** // It is the first implementation of the NEW UNIFIED ENERGY LOSS PROCESS. @@ -27,7 +26,7 @@ // // --------------------------------------------------------------- -inline G4double G4eEnergyLoss::GetConstraints( +inline G4double G4eLowEnergyLoss::GetConstraints( const G4DynamicParticle* aParticle, G4Material* aMaterial) { @@ -67,7 +66,7 @@ inline G4double G4eEnergyLoss::GetConstraints( //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -inline G4double G4eEnergyLoss::GetContinuousStepLimit( +inline G4double G4eLowEnergyLoss::GetContinuousStepLimit( const G4Track& track, G4double, G4double currentMinimumStep, @@ -83,7 +82,7 @@ inline G4double G4eEnergyLoss::GetContinuousStepLimit( } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -inline G4bool G4eEnergyLoss::IsApplicable(const G4ParticleDefinition& +inline G4bool G4eLowEnergyLoss::IsApplicable(const G4ParticleDefinition& particle) { return( (&particle == G4Electron::Electron()) diff --git a/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyIonisation.hh b/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyIonisation.hh index 5cf6841c80..17db214cdd 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyIonisation.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyIonisation.hh @@ -23,8 +23,9 @@ // described in CERN-OPEN-99-121. User have a possibility to define // a parametrisation table via its name. // Class Description - End - +// // ************************************************************ +// 23 May 2000 MG Pia Clean up for QAO model // 28 July 1999 V.Ivanchenko cleen up // 17 August 1999 G.Mancinelli implemented ICRU parametrization (protons) // 20 August 1999 G.Mancinelli implemented ICRU parametrization (alpha) @@ -36,7 +37,9 @@ #include "G4ios.hh" #include "Randomize.hh" -#include "G4hEnergyLoss.hh" +#include "G4hLowEnergyLoss.hh" +#include "G4VhEnergyLossModel.hh" +#include "G4QAOLowEnergyLoss.hh" #include "globals.hh" #include "G4Track.hh" #include "G4Step.hh" @@ -44,7 +47,7 @@ #include "G4PhysicsLogVector.hh" #include "G4PhysicsLinearVector.hh" -class G4hLowEnergyIonisation : public G4hEnergyLoss +class G4hLowEnergyIonisation : public G4hLowEnergyLoss { public: // Without description @@ -54,14 +57,13 @@ public: // Without description G4bool IsApplicable(const G4ParticleDefinition&); - void SetPhysicsTableBining(G4double lowE, G4double highE, G4int nBins); - void BuildPhysicsTable(const G4ParticleDefinition& aParticleType); + void SetPhysicsTableBining(G4double lowE, G4double highE, G4int nBins); + void BuildLambdaTable(const G4ParticleDefinition& aParticleType); - G4double GetMeanFreePath( - const G4Track& track, + G4double GetMeanFreePath(const G4Track& track, G4double previousStepSize, G4ForceCondition* condition ) ; @@ -74,11 +76,11 @@ public: // Without description protected: - virtual G4double ComputeMicroscopicCrossSection( - const G4ParticleDefinition& aParticleType, + virtual G4double ComputeMicroscopicCrossSection(const G4ParticleDefinition& aParticleType, G4double KineticEnergy, - G4double AtomicNumber); - + G4double AtomicNumber, + G4double ExcEnergy); + public: // With description void SetStoppingPowerTableName(const G4String& dedxTable); @@ -100,12 +102,12 @@ public: // With description const G4double KinEnergy, const G4double DeltaRayCutNow); // This method returns parametrised energy loss. - + G4double GetPreciseDEDX(G4Material* aMaterial, const G4double KinEnergy, const G4ParticleDefinition* aParticleType); // This method returns electron ionisation energy loss for any energy. - + G4double GetNuclearDEDX(G4Material* aMaterial, const G4double KinEnergy, const G4ParticleDefinition* aParticleType); @@ -222,10 +224,12 @@ private: private: // private data members ............................... + G4VhEnergyLossModel* qaoLoss; protected: // protected data members ............................... + G4PhysicsTable* theMeanFreePathTable; // interval of parametrisation of electron stopping power @@ -262,6 +266,23 @@ protected: // unit [ev/(10^15 atoms/cm^2] // into the Geant4 dE/dx unit + /* + 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;}; + */ }; #include "G4hLowEnergyIonisation.icc" diff --git a/source/processes/electromagnetic/standard/include/G4hEnergyLoss.hh b/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyLoss.hh similarity index 94% rename from source/processes/electromagnetic/standard/include/G4hEnergyLoss.hh rename to source/processes/electromagnetic/lowenergy/include/G4hLowEnergyLoss.hh index 5ab7f01cbc..f5b470e93c 100644 --- a/source/processes/electromagnetic/standard/include/G4hEnergyLoss.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyLoss.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4hEnergyLoss.hh,v 1.5.6.1 1999/12/07 20:50:54 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4hLowEnergyLoss.hh,v 1.2 2000/03/31 15:17:20 vnivanch Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // ------------------------------------------------------------ @@ -37,10 +37,11 @@ // 7/10/98 some bugs fixed + some cleanup , L.Urban // 22/10/98 cleanup , L.Urban // 02/02/99 several bugs fixed, L.Urban +// 31/03/00 : rename to lowenergy subdirectory as G4hLowEnergyLoss.hh V.Ivanchenko // -#ifndef G4hEnergyLoss_h -#define G4hEnergyLoss_h 1 +#ifndef G4hLowEnergyLoss_h +#define G4hLowEnergyLoss_h 1 #include "G4ios.hh" #include "globals.hh" @@ -59,14 +60,14 @@ class G4EnergyLossMessenger; -class G4hEnergyLoss : public G4VContinuousDiscreteProcess +class G4hLowEnergyLoss : public G4VContinuousDiscreteProcess { public: - G4hEnergyLoss(const G4String& ); + G4hLowEnergyLoss(const G4String& ); - ~G4hEnergyLoss(); + ~G4hLowEnergyLoss(); G4bool IsApplicable(const G4ParticleDefinition&); @@ -101,8 +102,8 @@ class G4hEnergyLoss : public G4VContinuousDiscreteProcess // hide assignment operator - G4hEnergyLoss(G4hEnergyLoss &); - G4hEnergyLoss & operator=(const G4hEnergyLoss &right); + G4hLowEnergyLoss(G4hLowEnergyLoss &); + G4hLowEnergyLoss & operator=(const G4hLowEnergyLoss &right); // ===================================================================== @@ -223,7 +224,7 @@ class G4hEnergyLoss : public G4VContinuousDiscreteProcess static G4PhysicsTable* theProperTimepTable ; static G4PhysicsTable* theProperTimepbarTable ; - // processes inherited from G4hEnergyLoss + // processes inherited from G4hLowEnergyLoss // register themselves in the static array Recorder static G4PhysicsTable** RecorderOfpProcess; static G4PhysicsTable** RecorderOfpbarProcess; @@ -295,7 +296,7 @@ class G4hEnergyLoss : public G4VContinuousDiscreteProcess }; -#include "G4hEnergyLoss.icc" +#include "G4hLowEnergyLoss.icc" #endif diff --git a/source/processes/electromagnetic/standard/include/G4hEnergyLossPlus.icc b/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyLoss.icc similarity index 79% rename from source/processes/electromagnetic/standard/include/G4hEnergyLossPlus.icc rename to source/processes/electromagnetic/lowenergy/include/G4hLowEnergyLoss.icc index 78da7cb482..94975e5969 100644 --- a/source/processes/electromagnetic/standard/include/G4hEnergyLossPlus.icc +++ b/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyLoss.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4hEnergyLossPlus.icc,v 1.1.8.1 1999/12/07 20:50:54 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4hLowEnergyLoss.icc,v 1.1 2000/03/31 15:15:22 vnivanch Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // --------------------------------------------------------------- @@ -23,15 +23,16 @@ // It calculates the energy loss of charged hadrons. // *************************************************************** // 22/10/98: cleanup , L.Urban +// 31/03/00 : rename to lowenergy subdirectory as G4hLowEnergyLoss.icc V.Ivanchenko // --------------------------------------------------------------- -inline G4bool G4hEnergyLossPlus::IsApplicable(const G4ParticleDefinition& +inline G4bool G4hLowEnergyLoss::IsApplicable(const G4ParticleDefinition& particle) { - return(particle.GetPDGCharge()!= 0.); + return((particle.GetPDGCharge()!= 0.) && (particle.GetLeptonNumber() == 0)); } -inline G4double G4hEnergyLossPlus::GetContinuousStepLimit( +inline G4double G4hLowEnergyLoss::GetContinuousStepLimit( const G4Track& track, G4double, G4double currentMinimumStep, diff --git a/source/processes/electromagnetic/lowenergy/src/G4LowEnergyBremsstrahlung.cc b/source/processes/electromagnetic/lowenergy/src/G4LowEnergyBremsstrahlung.cc index 395181a994..c5749ec099 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4LowEnergyBremsstrahlung.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4LowEnergyBremsstrahlung.cc @@ -5,9 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LowEnergyBremsstrahlung.cc,v 1.21 2000/02/18 12:34:30 lefebure Exp $ -// $Id: G4LowEnergyBremsstrahlung.cc,v 1.21 2000/02/18 12:34:30 lefebure Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LowEnergyBremsstrahlung.cc,v 1.25 2000/06/22 02:38:12 pia Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- @@ -20,6 +19,9 @@ // by Alessandra Forti, March 1999 // // ************************************************************** +// +// 18.04.2000 V.L. +// - First implementation of continuous energy loss. // 17.02.2000 Veronique Lefebure // - correct bug : the gamma energy was not deposited when the gamma was // not produced when its energy was < CutForLowEnergySecondaryPhotons @@ -31,12 +33,10 @@ // Added map of the elements A. Forti // -------------------------------------------------------------- -// This Class Header #include "G4LowEnergyBremsstrahlung.hh" - -// Collaborating Class Headers #include "G4EnergyLossTables.hh" #include "G4UnitsTable.hh" +#include "G4Electron.hh" #include "G4Gamma.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -44,20 +44,18 @@ // constructor G4LowEnergyBremsstrahlung::G4LowEnergyBremsstrahlung(const G4String& processName) - : G4eEnergyLoss(processName), // initialization + : G4eLowEnergyLoss(processName), // initialization theCrossSectionTable(0), theMeanFreePathTable(0), ATable(0), BTable(0), ZNumVec(0), - LowestKineticEnergy (250.*eV), - HighestKineticEnergy(100.*GeV), lowEnergyCut(0.1*eV), - CutForLowEnergySecondaryPhotons(0.), - TotBin(200) + CutForLowEnergySecondaryPhotons(0.) { - - + LowestKineticEnergy = GetLowerBoundEloss(); + HighestKineticEnergy = GetUpperBoundEloss(); + TotBin = GetNbinEloss(); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -97,12 +95,6 @@ G4LowEnergyBremsstrahlung::~G4LowEnergyBremsstrahlung() } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G4LowEnergyBremsstrahlung::SetPhysicsTableBining(G4double lowE, G4double highE, G4int nBins) -{ - LowestKineticEnergy = lowE; HighestKineticEnergy = highE; TotBin = nBins; -} //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... // SET CUT FOR LOW ENERGY SECONDARY PHOTONS A. FORTI @@ -115,12 +107,20 @@ void G4LowEnergyBremsstrahlung::SetCutForLowEnSecPhotons(G4double cut){ void G4LowEnergyBremsstrahlung::BuildPhysicsTable(const G4ParticleDefinition& aParticleType) { - BuildLossTable(aParticleType) ; + BuildZVec(); + + // energy sampling formula coefficient + BuildATable(); + BuildBTable(); + BuildCrossSectionTable() ; + + BuildLossTable(aParticleType) ; if (&aParticleType==G4Electron::Electron()){ RecorderOfElectronProcess[CounterOfElectronProcess] = (*this).theLossTable ; CounterOfElectronProcess++; + PrintInfoDefinition(); } else{ @@ -128,16 +128,13 @@ void G4LowEnergyBremsstrahlung::BuildPhysicsTable(const G4ParticleDefinition& aP CounterOfPositronProcess++; } - BuildZVec(); - - BuildCrossSectionTable() ; BuildMeanFreePathTable() ; + + BuildDEDXTable(aParticleType) ; + + + - BuildDEDXTable (aParticleType) ; - - // energy sampling formula coefficient - BuildATable(); - BuildBTable(); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -225,323 +222,58 @@ void G4LowEnergyBremsstrahlung::BuildZVec(){ } } -// Build table for energy loss due to soft brems -// tables are built for *MATERIALS* already in the standard processes -// to be changed when the new energy loss will be calculated. -// -// // METHOD BELOW FROM STANDARD E_M PROCESSES LEFT BUT AT THE MOMENT NOT USED -// void G4LowEnergyBremsstrahlung::BuildLossTable(const G4ParticleDefinition& aParticleType) { - G4double KineticEnergy,TotalEnergy,bremloss,Z,x, - losslim,loss,rate,natom,Cut; - - const G4double MinKinEnergy = 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(); + // Build table for energy loss due to soft brems + // the tables are built for *MATERIALS* + // create table + if (theLossTable) { + theLossTable->clearAndDestroy(); + delete theLossTable; + } const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length() ; - - if (theLossTable) { theLossTable->clearAndDestroy(); - delete theLossTable; - } - + const G4int numOfMaterials = theMaterialTable->length(); 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>MinKinEnergy) - { - 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); - } + // loop for materials + + for (G4int J=0; Jinsert(aVector); + const G4double Tcut = G4Gamma::Gamma()->GetCutsInEnergy()[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++){ + + 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) ; + } + theLossTable->insert(aVector); } - } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -// -// METHOD BELOW FROM STANDARD E_M PROCESSES CODE LEFT BUT AT THE MOMENT NOT USED -// -G4double G4LowEnergyBremsstrahlung::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; - } + if (theMeanFreePathTable) { + theMeanFreePathTable->clearAndDestroy(); + delete theMeanFreePathTable; + } G4double NumbOfMaterials = G4Material::GetNumberOfMaterials(); const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); G4Material* material; + G4double* CutInKineticEnergy = G4Gamma::Gamma()->GetCutsInEnergy() ; PartialSumSigma.resize(NumbOfMaterials); @@ -581,7 +315,8 @@ void G4LowEnergyBremsstrahlung::BuildMeanFreePathTable() 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 ) ; @@ -591,13 +326,7 @@ void G4LowEnergyBremsstrahlung::BuildMeanFreePathTable() for ( G4int 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; - + G4double interCrsSec = GetCrossSectionWithCut(AtomIndex, LowEdgeEnergy,Threshold); SIGMA += theAtomNumDensityVector[k]*interCrsSec; } @@ -609,7 +338,7 @@ void G4LowEnergyBremsstrahlung::BuildMeanFreePathTable() theMeanFreePathTable->insert( ptrVector ); // Compute the PartialSumSigma table at a given fixed energy - ComputePartialSumSigma(FixedEnergy, material) ; + ComputePartialSumSigma(FixedEnergy, material,Threshold) ; } } @@ -619,8 +348,9 @@ void G4LowEnergyBremsstrahlung::BuildMeanFreePathTable() // 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(G4double KineticEnergy, - const G4Material* aMaterial) +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. @@ -638,12 +368,8 @@ void G4LowEnergyBremsstrahlung::ComputePartialSumSigma(G4double KineticEnergy, for ( G4int Ielem=0 ; Ielem < NbOfElements ; Ielem++ ){ G4int AtomIndex = (G4int) (*theElementVector)(Ielem)->GetZ(); - const G4FirstLevel* oneAtomCS - = (*theCrossSectionTable)[ZNumVec->index(AtomIndex)]; - G4double interCrsSec = util.DataLogInterpolation(KineticEnergy, - (*(*oneAtomCS)[0]), - (*(*oneAtomCS)[1]))*barn; + G4double interCrsSec = GetCrossSectionWithCut(AtomIndex,KineticEnergy,Threshold); SIGMA += theAtomNumDensityVector[Ielem]*interCrsSec; @@ -659,28 +385,24 @@ G4VParticleChange* G4LowEnergyBremsstrahlung::PostStepDoIt(const G4Track& trackD // This parametrization is derived from : // Migdal corrections (dielectric suppression). // Migdal: Phys Rev 103:1811 (1956); Messel & Crawford: Pergamon Press (1970) - // MIGDAL constant and LPM effect LEFT FROM STANDARD PROCESS // - 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 ElectKinEn = aDynamicParticle->GetKineticEnergy(); + // MGP debug + // G4cout << "G4LowEnergyBremsstrahlung::PostStepDoIt - ElectKinEn " + // << ElectKinEn/keV << " keV " << G4endl; + // MGP end + if(ElectKinEn <= LowestKineticEnergy){ aParticleChange.SetStatusChange(fStopAndKill); @@ -696,15 +418,12 @@ G4VParticleChange* G4LowEnergyBremsstrahlung::PostStepDoIt(const G4Track& trackD // Gamma production cut in this material G4double GammaEnergyCut = (G4Gamma::GetCutsInEnergy())[aMaterial->GetIndex()]; + // check against insufficient energy - if (ElectKinEn < GammaEnergyCut){ - - aParticleChange.SetMomentumChange( ElectDirection ); - aParticleChange.SetEnergyChange( ElectKinEn ); - aParticleChange.SetLocalEnergyDeposit (0.); - aParticleChange.SetNumberOfSecondaries(0); - - return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); + if (ElectKinEn < GammaEnergyCut){ + aParticleChange.SetEnergyChange(ElectKinEn); + aParticleChange.SetLocalEnergyDeposit(0.); + return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); } // select randomly one element constituing the material @@ -713,7 +432,6 @@ G4VParticleChange* G4LowEnergyBremsstrahlung::PostStepDoIt(const G4Track& trackD // limits of the energy sampling G4double TotalEnergy = ElectKinEn + electron_mass_c2; G4double TotalEnergysquare = TotalEnergy*TotalEnergy ; - G4double LPMGammaEnergyLimit = TotalEnergysquare/LPMEnergy ; // // The emitted gamma energy is from EEDL data fitted with A/E+B function. @@ -721,7 +439,7 @@ G4VParticleChange* G4LowEnergyBremsstrahlung::PostStepDoIt(const G4Track& trackD // formula has been modified by A. Forti and S. Giani. // - // sample the energy of the emitted gamma for electron kinetic energy + // sample the energy of the emitted gamma // G4double p1 = 0, p2 = 0; G4double coeffA = 0, coeffB = 0; @@ -729,8 +447,12 @@ G4VParticleChange* G4LowEnergyBremsstrahlung::PostStepDoIt(const G4Track& trackD coeffA = ComputeA(AtomicNum, ElectKinEn); coeffB = ComputeB(AtomicNum, ElectKinEn); - p1 = coeffA*log(ElectKinEn/lowEnergyCut); - p2 = coeffB*(ElectKinEn - lowEnergyCut); + //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; @@ -740,36 +462,30 @@ G4VParticleChange* G4LowEnergyBremsstrahlung::PostStepDoIt(const G4Track& trackD if(R1 <= p1){ G4double R2 = G4UniformRand(); - GammaEnergy = ElectKinEn*pow((lowEnergyCut/ElectKinEn),R2); + GammaEnergy = ElectKinEn*pow((minEn/ElectKinEn),R2); + /// stepanek does: GammaEnergy = exp(R2*log(ElectKinEn/minEn)+log(ElectKinEn)); } else if ((p1 < R1) && (R1 <= p1+p2)){ G4double R2 = G4UniformRand(); - GammaEnergy = ElectKinEn - R2*(ElectKinEn - lowEnergyCut); + GammaEnergy = ElectKinEn - R2*(ElectKinEn - minEn); } - - // now comes the supression due to the LPM effect (gamma production suppression - // due to the multiple scattering of the electron) SEE ABOVE - 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.){ + // MGP debug + // if (GammaEnergy > 10*keV) + // G4cout << "MGP BremPostStepDoIt eGamma = " << GammaEnergy/keV << " keV" << G4endl; + +/* + 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; +*/ - return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); - } - //**********************// // Angular distribution // //**********************// @@ -778,8 +494,12 @@ G4VParticleChange* G4LowEnergyBremsstrahlung::PostStepDoIt(const G4Track& trackD // universal distribution suggested by L. Urban (Geant3 manual (1993) Phys211), // derived from Tsai distribution (Rev Mod Phys 49,421(1977)) - if(GammaEnergy > CutForLowEnergySecondaryPhotons){ - + if(GammaEnergy < minEn){ + G4cerr<<"Problem with bremsstrahlung gamma energy sampling: Energy 0.){ aParticleChange.SetMomentumChange( ElectDirection ); aParticleChange.SetEnergyChange( NewKinEnergy ); - if(GammaEnergy < GammaEnergyCut){ - - 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); - } } else{ aParticleChange.SetEnergyChange( 0. ); - aParticleChange.SetLocalEnergyDeposit (0.); if (charge<0.){ aParticleChange.SetStatusChange(fStopAndKill); @@ -832,13 +540,25 @@ G4VParticleChange* G4LowEnergyBremsstrahlung::PostStepDoIt(const G4Track& trackD aParticleChange.SetStatusChange(fStopButAlive); } - } - } - else{ + } + // + ///emitted photon: + // + if(GammaEnergy < GammaEnergyCut){ - aParticleChange.SetNumberOfSecondaries(0); - aParticleChange.SetLocalEnergyDeposit(GammaEnergy); - } + 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){ @@ -849,6 +569,86 @@ G4VParticleChange* G4LowEnergyBremsstrahlung::PostStepDoIt(const G4Track& trackD return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); } +G4double G4LowEnergyBremsstrahlung::GetEnergyLossWithCut(const G4double AtomicNumber, + const G4double KineticEnergy, + const G4double Tcut){ + const G4double minEn = lowEnergyCut ; + if(minEn == 0.) G4cerr<<"Minimum Gamma energy should be finite"<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 = "<index(elementZ)]; ScatteringFunction = util.DataLogInterpolation(x, (*(*oneAtomSF)[0]), - (*(*oneAtomSF)[1]))/cm; - + (*(*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 ; diff --git a/source/processes/electromagnetic/lowenergy/src/G4LowEnergyGammaConversion.cc b/source/processes/electromagnetic/lowenergy/src/G4LowEnergyGammaConversion.cc index 2b6e5f256a..57b13d4402 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4LowEnergyGammaConversion.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4LowEnergyGammaConversion.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LowEnergyGammaConversion.cc,v 1.11 2000/01/26 09:50:00 lefebure Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LowEnergyGammaConversion.cc,v 1.13 2000/05/04 17:54:04 flongo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- @@ -17,6 +17,12 @@ // CERN, IT Division, ASD group // ------------ G4LowEnergyGammaConversion physics process -------- // by A.Forti 1999/03/02 +// +// 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 +// // ************************************************************** // This Class Header @@ -34,7 +40,8 @@ G4LowEnergyGammaConversion::G4LowEnergyGammaConversion(const G4String& processNa theCrossSectionTable(0), theMeanFreePathTable(0), ZNumVec(0), - LowestEnergyLimit (1.2200), + //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) { diff --git a/source/processes/electromagnetic/lowenergy/src/G4LowEnergyIonisation.cc b/source/processes/electromagnetic/lowenergy/src/G4LowEnergyIonisation.cc index 11a1bb0cdf..37828ee840 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4LowEnergyIonisation.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4LowEnergyIonisation.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LowEnergyIonisation.cc,v 1.29 2000/02/18 12:39:18 lefebure Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LowEnergyIonisation.cc,v 1.38 2000/06/22 02:38:12 pia Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------- @@ -17,6 +17,18 @@ // ---------- G4LowEnergyIonisation low energy modifications ----------- // by Alessandra Forti May 1999 // ************************************************************** +// - 11.04.2000 VL +// Changing use of float and G4float casts to G4double casts +// because of problems with optimisation (bug ?) +// 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. +// 10.04.2000 VL +// - Correction of incident electron final momentum direction +// 07.04.2000 VL+LU +// - First implementation of continuous energy loss +// 22.03.2000 VL +// - 1 bug corrected in SelectRandomAtom method (units) // 17.02.2000 Veronique Lefebure // - 5 bugs corrected: // *in Fluorescence, 2 bugs affecting @@ -51,25 +63,30 @@ typedef G4RWTPtrOrderedVector G4ParticleVector; // constructor and destructor G4LowEnergyIonisation::G4LowEnergyIonisation(const G4String& processName) - : G4eEnergyLoss(processName), + : G4eLowEnergyLoss(processName), allAtomShellCrossSec(0), theBindingEnergyTable(0), theFluorTransitionTable(0), theSamplingCoeffTable(0), - LowestKineticEnergy(10.*eV), - HighestKineticEnergy(100.*GeV), CutForLowEnergySecondaryPhotons(0.), CutForLowEnergySecondaryElectrons(0.), ZNumVec(0), ZNumVecFluor(0), - TotBin(200) + theMeanFreePathTable(0) { + LowestKineticEnergy = GetLowerBoundEloss(); + HighestKineticEnergy = GetUpperBoundEloss(); + TotBin = GetNbinEloss(); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... G4LowEnergyIonisation::~G4LowEnergyIonisation() { + if (theMeanFreePathTable) { + theMeanFreePathTable->clearAndDestroy(); + delete theMeanFreePathTable; + } if (allAtomShellCrossSec) { @@ -119,22 +136,6 @@ void G4LowEnergyIonisation::SetCutForLowEnSecElectrons(G4double cut){ void G4LowEnergyIonisation::BuildPhysicsTable(const G4ParticleDefinition& aParticleType) // just call BuildLossTable+BuildLambdaTable { - - BuildLossTable(aParticleType) ; - - if(&aParticleType==G4Electron::Electron()) - { - RecorderOfElectronProcess[CounterOfElectronProcess] = (*this).theLossTable ; - CounterOfElectronProcess++; - } - else - { - RecorderOfPositronProcess[CounterOfPositronProcess] = (*this).theLossTable ; - CounterOfPositronProcess++; - } - - BuildDEDXTable(aParticleType); - BuildZVec(); BuildShellCrossSectionTable(); @@ -145,33 +146,42 @@ void G4LowEnergyIonisation::BuildPhysicsTable(const G4ParticleDefinition& aParti BuildSamplingCoeffTable(); - PrintInfoDefinition(); + BuildLossTable(aParticleType) ; + + if(&aParticleType==G4Electron::Electron()) + { + RecorderOfElectronProcess[CounterOfElectronProcess] = (*this).theLossTable ; + CounterOfElectronProcess++; + PrintInfoDefinition(); + } + else + { + RecorderOfPositronProcess[CounterOfPositronProcess] = (*this).theLossTable ; + CounterOfPositronProcess++; + } + + BuildLambdaTable(aParticleType) ; + + BuildDEDXTable(aParticleType); + } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -// METHOD BELOW FROM STANDARD E_M PROCESSES CODELEFT BUT AT THE MOMENT NOT USED -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* - const G4double twoln10 = 2.*log(10.); - const G4double Factor = twopi_mc2_rcl2; - 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(); @@ -186,67 +196,48 @@ void G4LowEnergyIonisation::BuildLossTable(const G4ParticleDefinition& aParticle for (G4int J=0; JGetCutsInEnergy()[material->GetIndex()] ; + G4cout<<"*** LEion using Tcut ="<GetElementVector(); + const G4int NumberOfElements = material->GetNumberOfElements() ; + const G4double* theAtomicNumDensityVector = material-> + GetAtomicNumDensityVector() ; - ElectronDensity = material->GetElectronDensity(); - 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(); // now comes the loop for the kinetic energy values - for (G4int i = 0 ; i < TotBin ; i++) - { - LowEdgeEnergy = aVector->GetLowEdgeEnergy(i) ; - tau = LowEdgeEnergy/ParticleMass ; + { + LowEdgeEnergy = aVector->GetLowEdgeEnergy(i) ; - // Seltzer-Berger formula - gamma = tau + 1.; gamma2 = gamma*gamma; - bg2 = tau*(tau+2.); - beta2 = bg2/gamma2; + ionloss = 0. ; - // electron - if (&aParticleType==G4Electron::Electron()) + // 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(G4int ish=0; ishentries(); ish++) { - 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; + ionloss += GetShellEnergyLosswithCut(Z,ish,LowEdgeEnergy,Tcut)* + theAtomicNumDensityVector[iel] ; } + } + } - //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) ; - } + aVector->PutValue(i,ionloss) ; + } theLossTable->insert(aVector); } @@ -376,6 +367,73 @@ void G4LowEnergyIonisation::BuildZVec(){ } } } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +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) ; + } + theMeanFreePathTable->insert(aVector); + } + +} G4double G4LowEnergyIonisation::ComputeCrossSection(const G4double AtomIndex, const G4double IncEnergy){ @@ -403,7 +461,7 @@ G4double G4LowEnergyIonisation::ComputeCrossSection(const G4double AtomIndex, else{ - crossSec = util.DataLogInterpolation(IncEnergy, (*EnergyVector), (*CrossSecVector)); + crossSec = util.DataLogInterpolation(IncEnergy, (*EnergyVector), (*CrossSecVector))*barn; } @@ -413,6 +471,492 @@ G4double G4LowEnergyIonisation::ComputeCrossSection(const G4double AtomIndex, return TotalCrossSection ; } +G4double G4LowEnergyIonisation::ComputeCrossSectionWithCut(const G4double AtomIndex, + const G4double IncEnergy, + const G4double CutEnergy){ + G4double TotalCrossSection(0.); + + const oneAtomTable* oneAtomCS + = (*allAtomShellCrossSec)[ZNumVec->index(AtomIndex)]; + + //loop on shells + for(G4int ind = 0; ind < oneAtomCS->entries(); ind++){ + + G4double crossSec = 0; + G4Data* EnergyVector = (*(*oneAtomCS)[ind])[0]; + G4Data* 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; + + if( ind >= oneAtomCS->entries() ) return crossSec ; + + G4Data* EnergyVector = (*(*oneAtomCS)[ind])[0]; + G4Data* 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->entries(); + + const G4Data* energyVec = (*oneShellCoeffTable)[0]; + const G4int LastPar = energyVec->length()-1; + G4Data Parms; + + for(G4int ind = 1; ind < CoeffNumber-2; ind++){ + + const G4Data* oneCoeffVec = (*oneShellCoeffTable)[ind]; + + if(KineticEnergy < (*energyVec)[0]){ + Parms.insert((*oneCoeffVec)[0]); + } + + else if(KineticEnergy > (*energyVec)[LastPar]){ + + Parms.insert((*oneCoeffVec)[LastPar]); + } + + else{ + + G4double par = util.DataSemiLogInterpolation(KineticEnergy,(*energyVec),(*oneCoeffVec)); + Parms.insert(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 ; + } + } + + // 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) ; + + G4double expon = Parms[13]+1. ; + xsec += (Parms[12]/expon)*(pow(high,expon)-pow(low,expon)) ; + } + + // 2nd function + low = G4std::max(sndCut+BindingEn,Tlim) ; + high= maxEn+BindingEn ; + + 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 ; + } + } + // 2 functions , contr. from 2nd + else if(maxEn >= fstCut) + { + low = G4std::max(fstCut+BindingEn,Tlim) ; + high= maxEn+BindingEn ; + + 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 ; + } + } + + return xsec*CrossSection/norm ; +} + +G4double G4LowEnergyIonisation::GetShellEnergyLosswithCut( + const G4double AtomicNumber, + const G4int index, + const G4double KineticEnergy, + const G4double Tcut) +{ + // it computes the energy loss for the shell + // ( integrartion of T*dSigma/dT between Tmin and Tcut) + + G4double minEn = 0.1*eV ; + G4double loss = 0. ; + + // shortcut .......................... + if(Tcut <= 0.) return loss ; + + G4double CrossSection = GetShellCrossSection(AtomicNumber,index,KineticEnergy) ; + + // shortcut .......................... + if(CrossSection <= 0.) return loss ; + + 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 ; + + const G4int CoeffNumber = oneShellCoeffTable->entries(); + + const G4Data* energyVec = (*oneShellCoeffTable)[0]; + const G4int LastPar = energyVec->length()-1; + G4Data Parms; + + for(G4int ind = 1; ind < CoeffNumber-2; ind++){ + + const G4Data* oneCoeffVec = (*oneShellCoeffTable)[ind]; + + if(KineticEnergy < (*energyVec)[0]){ + Parms.insert((*oneCoeffVec)[0]); + } + + else if(KineticEnergy > (*energyVec)[LastPar]){ + + Parms.insert((*oneCoeffVec)[LastPar]); + } + + else{ + + G4double par = util.DataSemiLogInterpolation(KineticEnergy,(*energyVec),(*oneCoeffVec)); + Parms.insert(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 ; + } + + } + } + // 2 functions , contr. from 2nd + else if(maxEn >= fstCut) + { + low = fstCut+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 ; + } + + } + + } + + // return loss*CrossSection/norm ; + + loss *= CrossSection/norm ; + + loss += BindingEn*(CrossSection - + GetShellCrossSectionwithCut(AtomicNumber,index,KineticEnergy,Tcut)) ; + return loss ; +} + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... G4VParticleChange* G4LowEnergyIonisation::PostStepDoIt( const G4Track& trackData, @@ -424,6 +968,8 @@ G4VParticleChange* G4LowEnergyIonisation::PostStepDoIt( const G4Track& trackData // Comp. Phys. Comm. 1206 pp 1-19 (1997) // + G4double factor = 0.; + aParticleChange.Initialize(trackData); G4Material* aMaterial = trackData.GetMaterial() ; @@ -436,19 +982,22 @@ G4VParticleChange* G4LowEnergyIonisation::PostStepDoIt( const G4Track& trackData G4double KineticEnergy = aParticle->GetKineticEnergy(); // kill e- if Tkin is too small ...... - if(KineticEnergy <= 2.*DeltaThreshold) + if(KineticEnergy <= DeltaThreshold) { - aParticleChange.SetStatusChange(fStopAndKill); - aParticleChange.SetEnergyChange(0.); - - if(KineticEnergy < 0.) - G4cout << " 1. negative deposit:" << KineticEnergy/eV << G4endl; - aParticleChange.SetLocalEnergyDeposit(KineticEnergy); - + ////aParticleChange.SetStatusChange(fStopAndKill); + aParticleChange.SetEnergyChange(KineticEnergy); + if(KineticEnergy < 0.) G4cout << " 1. negative deposit:" << KineticEnergy/eV << G4endl; + aParticleChange.SetLocalEnergyDeposit(0.); return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); } + // Create lists of pointers to DynamicParticles (photons and electrons) + G4ParticleVector photvec; + G4int photInd = 0; + G4ParticleVector elecvec; + G4int elecInd = 0; + // select randomly one element constituing the material. G4Element* anElement = SelectRandomAtom(aParticle, aMaterial); G4int AtomIndex = (G4int) anElement->GetZ(); @@ -456,15 +1005,20 @@ G4VParticleChange* G4LowEnergyIonisation::PostStepDoIt( const G4Track& trackData // First Ionised subshell chosen basing on subshell integrated cross section EPDL97 // partial sum method // Select the subshell WARNING!!!!: it returns the subshell index in the table. - G4int subShellIndex = SelectRandomShell(AtomIndex, KineticEnergy); - + G4int subShellIndex = SelectRandomShell(AtomIndex, KineticEnergy, DeltaThreshold); + if(subShellIndex<0) { + ///aParticleChange.SetEnergyChange(KineticEnergy); + ///aParticleChange.SetLocalEnergyDeposit(0.); + return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); + } + //mv ionsubShellIndex = 20; // WARNING: REMEMBER TO REMOVE THIS CONSTRAIN G4FirstLevel* theBindEnVec = (*theBindingEnergyTable)[AtomIndex-1]; G4int thePrimaryShell = (G4int) (*(*theBindEnVec)[0])[subShellIndex]; G4double BindingEn = (*(*theBindEnVec)[1])[subShellIndex]; G4double theEnergyDeposit = BindingEn; - if(KineticEnergy <= BindingEn) + if(KineticEnergy <= BindingEn+DeltaThreshold) { G4cout << " Tkin=" << KineticEnergy/eV << " Ebind=" << BindingEn/eV << " selection of subshell ???????" << G4endl; @@ -487,7 +1041,8 @@ G4VParticleChange* G4LowEnergyIonisation::PostStepDoIt( const G4Track& trackData // **** normal case **** // Energy Sampling - G4double DeltaKineticEnergy = EnergySampling(AtomIndex, subShellIndex, KineticEnergy); + G4double DeltaKineticEnergy = EnergySampling(AtomIndex, subShellIndex + , KineticEnergy, DeltaThreshold); G4double finalKineticEnergy = KineticEnergy - DeltaKineticEnergy - BindingEn; if(finalKineticEnergy < 0.){ @@ -495,44 +1050,19 @@ G4VParticleChange* G4LowEnergyIonisation::PostStepDoIt( const G4Track& trackData G4cout << "Tkin=" << KineticEnergy/eV << " Tdel=" << DeltaKineticEnergy/eV << " BindingEn=" << BindingEn/eV << " ***********" << G4endl; } - // deposit energy if delta energy is below cut + G4ThreeVector DeltaDirection(0.,0.,0.); if(DeltaKineticEnergy <= DeltaThreshold){ - - if(finalKineticEnergy > 2.*DeltaThreshold){ - - aParticleChange.SetEnergyChange(KineticEnergy - DeltaKineticEnergy - BindingEn); - - if((DeltaKineticEnergy+BindingEn) < 0.){ - - G4cout << " 2. negative deposit:" << (DeltaKineticEnergy+BindingEn)/eV << G4endl; - } - - aParticleChange.SetLocalEnergyDeposit(DeltaKineticEnergy+BindingEn); - } - else{ - - aParticleChange.SetStatusChange(fStopAndKill); - aParticleChange.SetEnergyChange(0.); - - if(KineticEnergy < 0.){ - - G4cout << " 3. negative deposit:" << KineticEnergy/eV << G4endl; - } - - aParticleChange.SetLocalEnergyDeposit(KineticEnergy); - - } - - return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); + G4cout<<"This should not happen DeltaKineticEnergy= "<length(); TransProb++){ - - TotalSum += (*(*(*TransitionTable)[ShellNum])[ProbCol])[TransProb]; - } - - G4double PartialProb = G4UniformRand()*TotalSum; + // 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; @@ -864,6 +1411,7 @@ G4bool G4LowEnergyIonisation::SelectRandomTransition(G4int thePrimShell, TransParam[0] = (*(*(*TransitionTable)[ShellNum])[SubShellCol])[TransProb]; TransParam[1] = (*(*(*TransitionTable)[ShellNum])[ProbCol])[TransProb]; TransParam[2] = (*(*(*TransitionTable)[ShellNum])[EnergyCol])[TransProb]; + ColIsFull = TRUE; break; } @@ -881,7 +1429,8 @@ G4bool G4LowEnergyIonisation::SelectRandomTransition(G4int thePrimShell, G4double G4LowEnergyIonisation::EnergySampling(const G4int AtomicNumber, const G4int ShellIndex, - const G4double KinEn){ + 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 @@ -902,7 +1451,7 @@ G4double G4LowEnergyIonisation::EnergySampling(const G4int AtomicNumber, oneAtomTable* oneAtomCoeffTable = (*theSamplingCoeffTable)[ZNumVec->index(AtomicNumber)]; oneShellTable* oneShellCoeffTable = (*oneAtomCoeffTable)[ShellIndex]; - G4double BindingEn = (*(*(*theBindingEnergyTable)[AtomicNumber-1])[1])[ShellIndex]; + const G4double BindingEn = (*(*(*theBindingEnergyTable)[AtomicNumber-1])[1])[ShellIndex]; // 2) Interpolate coefficients (I need the incoming electron kinetic energy) const G4int CoeffNumber = oneShellCoeffTable->entries(); @@ -934,14 +1483,20 @@ G4double G4LowEnergyIonisation::EnergySampling(const G4int AtomicNumber, } } - // cuts in energy are always the same + const G4double minEn = deltaRayMinE; + + // cuts in energy are always the same // First cut - G4double fstCut = (*(*oneShellCoeffTable)[CoeffNumber-2])[0] == 0. ? DBL_MAX : (*(*oneShellCoeffTable)[CoeffNumber-2])[0]*MeV; + G4double fstCutbuf = (*(*oneShellCoeffTable)[CoeffNumber-2])[0]*MeV; + if(fstCutbuf<0.01*eV) fstCutbuf = DBL_MAX; + const G4double fstCut = fstCutbuf; // Second cut - G4double sndCut = (*(*oneShellCoeffTable)[CoeffNumber-1])[0] == 0. ? DBL_MAX : (*(*oneShellCoeffTable)[CoeffNumber-1])[0]*MeV; - + G4double sndCutbuf = (*(*oneShellCoeffTable)[CoeffNumber-1])[0]*MeV; + if(sndCutbuf=maxEn) { + G4cout<<"G4LowEnergyIonisation::EnergySampling not enought energy left !"<=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++){ + for (G4int ii = 1; ii < 7; ii++){ - // - // area1: integral of the normalized first function - // - area1 += Parms[ii-1]*(saa-sbb)/float(ii) ; - saa *= aa ; - sbb *= bb ; - - // - //function itself at the minimum value (0.1*eV) - // - rejectionMax += Parms[ii-1]/llow; - llow *= low ; + 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 = "< than the second cut + // Area of the second and third functions + // G4double whatCut = 0.; if (maxEn >= 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)/float(kk); + area3 += Parms[kk+6]*(saa-sbb)/G4double(kk); saa *= aa; sbb *= bb; } - - whatCut = sndCut; + if(area3<0) G4cerr<<"Problem: area3 = "<= fstCut){ @@ -1055,19 +1621,31 @@ G4double G4LowEnergyIonisation::EnergySampling(const G4int AtomicNumber, // 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 // - aa = 1./(fstCut+BindingEn); // equivalent to 1./low in the first function - bb = 1./(maxEn+BindingEn); // equivalent to 1./high in the first function + 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; - - for(G4int kk = 1; kk < 5; kk++){ + G4int kk; + for( kk = 1; kk < 5; kk++){ // area3: integral of the normalized third function - area3 += Parms[kk+6]*(saa-sbb)/float(kk); + G4double buf = Parms[kk+6]*(saa-sbb)/G4double(kk); + area3+= buf; saa *= aa; sbb *= bb; } + if(area3<0) { + G4cerr<<"Problem: area3 bis= "<entries()-1; + if(thePrimShell <= 0) { + G4cerr<<"*** Unvalid Primary shell: "<length(); TransProb++){ - - TotalSum += (*(*(*TransitionTable)[ShellNum])[ProbCol])[TransProb]; - } - G4double PartialProb = G4UniformRand()*TotalSum; + // 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(); + + + //vl. + + G4double PartSum = 0; TransProb = 1; @@ -691,6 +710,7 @@ G4bool G4LowEnergyPhotoElectric::SelectRandomTransition(G4int thePrimShell, TransParam[0] = (*(*(*TransitionTable)[ShellNum])[SubShellCol])[TransProb]; TransParam[1] = (*(*(*TransitionTable)[ShellNum])[ProbCol])[TransProb]; TransParam[2] = (*(*(*TransitionTable)[ShellNum])[EnergyCol])[TransProb]; + ColIsFull = TRUE; break; } diff --git a/source/processes/electromagnetic/lowenergy/src/G4LowEnergyRayleigh.cc b/source/processes/electromagnetic/lowenergy/src/G4LowEnergyRayleigh.cc index eccd525eed..3a5e602341 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4LowEnergyRayleigh.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4LowEnergyRayleigh.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LowEnergyRayleigh.cc,v 1.15 2000/01/26 09:50:01 lefebure Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LowEnergyRayleigh.cc,v 1.17 2000/03/13 11:15:32 lefebure Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- @@ -220,13 +220,13 @@ G4VParticleChange* G4LowEnergyRayleigh::PostStepDoIt(const G4Track& aTrack, cons Theta_Half = G4UniformRand()*pi/2; SinThHalf = sin(Theta_Half); - x = SinThHalf/wlGamma; + x = SinThHalf/(wlGamma/cm); const G4FirstLevel* oneAtomFF = (*theFormFactorTable)[ZNumVec->index(elementZ)]; DataFormFactor = util.DataLogInterpolation(x, (*(*oneAtomFF)[0]), - (*(*oneAtomFF)[1]))/cm; + (*(*oneAtomFF)[1])); RandomFormFactor = G4UniformRand()*elementZ*elementZ; Theta = Theta_Half*2; diff --git a/source/processes/electromagnetic/lowenergy/src/G4LowEnergyUtilities.cc b/source/processes/electromagnetic/lowenergy/src/G4LowEnergyUtilities.cc index fd276aca6c..03256785c8 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4LowEnergyUtilities.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4LowEnergyUtilities.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4LowEnergyUtilities.cc,v 1.4 2000/01/26 09:50:01 lefebure Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/processes/electromagnetic/lowenergy/src/G4QAOLowEnergyLoss.cc b/source/processes/electromagnetic/lowenergy/src/G4QAOLowEnergyLoss.cc new file mode 100644 index 0000000000..d781620596 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4QAOLowEnergyLoss.cc @@ -0,0 +1,398 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration +// +// By 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 implementation file +// +// For information related to this code contact: +// CERN, IT Division, ASD group +// History: New Implementation +// +// ---------- G4QAOLowEnergyLoss physics process ------- +// by Stephane Chauvie, 5 May 2000 +// Modified: +// 24/05/2000 MGP Modified to remove compilation warnings on Linux and DEC +// Introduced sizes of L0, L1, L2 arrays +// 23/05/2000 MGP Made compliant to design +// +// +// ************************************************************ +// It is the Quantal Harmonic Oscillator Model for energy loss +// of slow antiproton +// ************************************************************ +// -------------------------------------------------------------- + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "G4QAOLowEnergyLoss.hh" +#include "PhysicalConstants.h" +#include "SystemOfUnits.h" +#include "G4DynamicParticle.hh" +#include "G4Material.hh" +#include "G4ParticleDefinition.hh" +#include "G4AntiProton.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4QAOLowEnergyLoss::G4QAOLowEnergyLoss() +{ + numberOfMaterials = 6; + sizeL0 = 67; + sizeL1 = 22; + sizeL2 = 14; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4QAOLowEnergyLoss::~G4QAOLowEnergyLoss() +{ +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4bool G4QAOLowEnergyLoss::IsInCharge(G4double energy, + const G4ParticleDefinition* particleDefinition, + const G4Material* material) const +{ + G4bool isInCharge = false; + + G4bool hasMaterial = false; + + for (G4int m = 0; m < numberOfMaterials; m++) + { + G4String matName = material->GetName(); + if (matName == materialAvailable[m]){ + hasMaterial = true; + break;} + } + + if (particleDefinition == G4AntiProton::AntiProtonDefinition() + && + hasMaterial) + //&& energy >= LowEnergyLimit() && energy <= HighEnergyLimit() ) + isInCharge = true; + + return isInCharge; + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4double G4QAOLowEnergyLoss::EnergyLoss(const G4DynamicParticle* particle, + const G4Material* material) const +{ + G4int nbOfShell = GetNumberOfShell(material); + G4double ionisationEnergy = material->GetIonisation()->GetMeanExcitationEnergy(); + G4double kineticEnergy = particle->GetKineticEnergy(); + G4int zParticle = (G4int) particle->GetCharge(); + G4double dedx=0; + G4double v=0; + v= c_light * sqrt( 2 * kineticEnergy / proton_mass_c2 ); + G4double coeff=0; + coeff= (twopi * proton_mass_c2 * material-> GetTotNbOfElectPerVolume()) / ( electron_mass_c2); + coeff*= ( fine_structure_const * fine_structure_const * hbarc_squared ) / ( kineticEnergy ); + G4double fractionOfBetheVelocity = 0; + fractionOfBetheVelocity = ( fine_structure_const * c_light) / v; + + G4double stoppingNumber = 0, l0Term = 0, l1Term = 0, l2Term = 0; + + for (G4int nos = 0 ; nos < nbOfShell ; nos++){ + + G4double l0 = 0, l1 = 0, l2 = 0; + G4double NormalizedEnergy = 0; + NormalizedEnergy = ( 2 * electron_mass_c2 * v * v ) / ( c_squared * GetShellEnergy(material,nos) ); + l0 = GetL0(NormalizedEnergy); + l0Term += GetShellStrength(material,nos) * l0; + + l1 = GetL1(NormalizedEnergy); + l1Term += GetShellStrength(material,nos) * l1; + + l2 = GetL2(NormalizedEnergy); + l2Term += GetShellStrength(material,nos) * l2; + + } + + + stoppingNumber = zParticle * zParticle * ( l0Term + zParticle * fractionOfBetheVelocity * l1Term + zParticle * zParticle * fractionOfBetheVelocity * fractionOfBetheVelocity * l2Term); + dedx = ( coeff * stoppingNumber); + + return dedx ; + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4int G4QAOLowEnergyLoss::GetNumberOfShell(const G4Material* material) const +{ + // Set default return value + G4int nShell = nbofShellForMaterial[0]; + + if(material->GetName() == "Aluminium") nShell = nbofShellForMaterial[0]; + else if (material->GetName() == "Silicon" ) nShell = nbofShellForMaterial[1] ; + else if (material->GetName()== "Copper") nShell = nbofShellForMaterial[2]; + else if (material->GetName() == "Tantalum") nShell = nbofShellForMaterial[3]; + else if (material->GetName() == "Gold" ) nShell = nbofShellForMaterial[4]; + else if (material->GetName() == "Platinum") nShell = nbofShellForMaterial[5]; + else G4cout << "WARNING - G4QAOLowEnergyLoss::GetNumberOfShell - " + << "The model is not available for " + << material->GetName() + << G4endl; + + return nShell; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4double G4QAOLowEnergyLoss::GetShellEnergy(const G4Material* material,G4int nbOfTheShell) const +{ + // + G4double shellEnergy = alShellEnergy[0]; + + if(material->GetName() == "Aluminium") shellEnergy = alShellEnergy[nbOfTheShell]; + else if (material->GetName() == "Silicon" ) shellEnergy = siShellEnergy[nbOfTheShell]; + else if (material->GetName() == "Copper") shellEnergy = cuShellEnergy[nbOfTheShell]; + else if (material->GetName() == "Tantalum") shellEnergy = taShellEnergy[nbOfTheShell]; + else if (material->GetName() == "Gold" ) shellEnergy = auShellEnergy[nbOfTheShell]; + else if (material->GetName() == "Platinum") shellEnergy = ptShellEnergy[nbOfTheShell]; + else G4cout << "WARNING - G4QAOLowEnergyLoss::GetShellEnergy - " + << "The model is not available for " + << material->GetName() + << G4endl; + + return shellEnergy; + } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4double G4QAOLowEnergyLoss::GetShellStrength(const G4Material* material,G4int nbOfTheShell) const +{ + G4double shellStrength = alShellStrength[0]; + + if(material->GetName() == "Aluminium") shellStrength = alShellStrength[nbOfTheShell]; + else if (material->GetName() == "Silicon" ) shellStrength = siShellStrength[nbOfTheShell]; + else if (material->GetName() == "Copper") shellStrength = cuShellStrength[nbOfTheShell]; + else if (material->GetName() == "Tantalum") shellStrength = taShellStrength[nbOfTheShell]; + else if (material->GetName() == "Gold" ) shellStrength = auShellStrength[nbOfTheShell]; + else if (material->GetName() == "Platinum") shellStrength = ptShellStrength[nbOfTheShell]; + else G4cout << "WARNING - G4QAOLowEnergyLoss::GetShellEnergy - " + << "The model is not available for " + << material->GetName() + << G4endl; + + return shellStrength; + +} +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4double G4QAOLowEnergyLoss::GetL0(G4double normEnergy) const +{ + G4double l0 = 0, l0p = 0; + G4double bethe = 0; + G4int n = 0; + do{ + n++; + if ( n >= sizeL0 ) break; + l0 = L0[n][1]; + l0p = L0[n-1][1]; + bethe = (l0 - l0p) * ( normEnergy - L0[n-1][0]) / (L0[n][0] - L0[n-1][0]); + bethe+= l0p; + } while( normEnergy >= L0[n][0] ); + + return bethe ; + +} +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4double G4QAOLowEnergyLoss::GetL1(G4double normEnergy) const +{ + G4double l1 = 0, l1p = 0 ; + G4double barkas = 0; + G4int n = 0; + do{ + n++; + if ( n >= sizeL1 ) break; + l1 = L1[n][1]; + l1p = L1[n-1][1]; + barkas = (l1 - l1p) * ( normEnergy - L1[n-1][0]) / (L1[n][0] - L1[n-1][0]); + barkas+= l1p; + } while( normEnergy >= L1[n][0]); + + return barkas; + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4double G4QAOLowEnergyLoss::GetL2(G4double normEnergy) const +{ + G4double l2 = 0, l2p = 0; + G4double bloch = 0; + G4int n = 0; + do{ + n++; + if ( n >= sizeL2 ) break; + l2 = L2[n][1]; + l2p = L2[n-1][1]; + bloch = (l2 - l2p) * ( normEnergy - L2[n-1][0]) / (L2[n][0] - L2[n-1][0]); + bloch+= l2p; + } while( normEnergy >= L2[n][0] ); + + return bloch; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +const G4String G4QAOLowEnergyLoss::materialAvailable[6] = { + "Aluminium", + "Silicon", + "Copper", + "Tantalum", + "Gold", + "Platinum"}; + +const G4int G4QAOLowEnergyLoss::nbofShellForMaterial[6] = {3,3,4,6,6,6 }; + +G4double G4QAOLowEnergyLoss::alShellEnergy[3] ={ 2795e-6, 202e-6, 16.9e-6}; +G4double G4QAOLowEnergyLoss::alShellStrength[3]={ 0.1349, 0.6387, 0.2264}; +G4double G4QAOLowEnergyLoss::siShellEnergy[3] ={ 3179e-6, 249e-6, 20.3e-6 }; +G4double G4QAOLowEnergyLoss::siShellStrength[3]={ 0.1222, 0.5972, 0.2806}; +G4double G4QAOLowEnergyLoss::cuShellEnergy[4] ={ 16931e-6, 1930e-6, 199e-6, 39.6e-6}; +G4double G4QAOLowEnergyLoss::cuShellStrength[4]={ 0.0505, 0.2561, 0.4913, 0.2021}; +G4double G4QAOLowEnergyLoss::taShellEnergy[6] ={ 88926e-6, 18012e-6, 3210e-6, 575e-6, 108.7e-6, 30.8e-6}; +G4double G4QAOLowEnergyLoss::taShellStrength[6]={ 0.0126, 0.0896, 0.2599, 0.3413, 0.2057, 0.0908}; +G4double G4QAOLowEnergyLoss::auShellEnergy[6]={ 96235e-6, 25918e-6, 4116e-6, 599e-6, 87.3e-6, 36.9e-6}; +G4double G4QAOLowEnergyLoss::auShellStrength[6]={ 0.0139, 0.0803, 0.2473, 0.423, 0.1124, 0.1231}; +G4double G4QAOLowEnergyLoss::ptShellEnergy[6]={ 95017e-6, 25590e-6, 4063e-6, 576e-6, 81.9e-6, 31.4e-6}; +G4double G4QAOLowEnergyLoss::ptShellStrength[6]={ 0.0129, 0.0745, 0.2295, 0.4627, 0.1324, 0.0879}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +const G4double G4QAOLowEnergyLoss::L0[67][2] = +{ + 0.00, 0.000001, + 0.10, 0.000001, + 0.12, 0.00001, + 0.14, 0.00005, + 0.16, 0.00014, + 0.18, 0.00030, + 0.20, 0.00057, + 0.25, 0.00189, + 0.30, 0.00429, + 0.35, 0.00784, + 0.40, 0.01248, + 0.45, 0.01811, + 0.50, 0.02462, + 0.60, 0.03980, + 0.70, 0.05731, + 0.80, 0.07662, + 0.90, 0.09733, + 1.00, 0.11916, + 1.20, 0.16532, + 1.40, 0.21376, + 1.60, 0.26362, + 1.80, 0.31428, + 2.00, 0.36532, + 2.50, 0.49272, + 3.00, 0.61765, + 3.50, 0.73863, + 4.00, 0.85496, + 4.50, 0.96634, + 5.00, 1.07272, + 6.00, 1.27086, + 7.00, 1.45075, + 8.00, 1.61412, + 9.00, 1.76277, + 10.00, 1.89836, + 12.00, 2.13625, + 14.00, 2.33787, + 16.00, 2.51093, + 18.00, 2.66134, + 20.00, 2.79358, + 25.00, 3.06539, + 30.00, 3.27902, + 35.00, 3.45430, + 40.00, 3.60281, + 45.00, 3.73167, + 50.00, 3.84555, + 60.00, 4.04011, + 70.00, 4.20264, + 80.00, 4.34229, + 90.00, 4.46474, + 100.00, 4.57378, + 120.00, 4.76155, + 140.00, 4.91953, + 160.00, 5.05590, + 180.00, 5.17588, + 200.00, 5.28299, + 250.00, 5.50925, + 300.00, 5.69364, + 350.00, 5.84926, + 400.00, 5.98388, + 450.00, 6.10252, + 500.00, 6.20856, + 600.00, 6.39189, + 700.00, 6.54677, + 800.00, 6.68084, + 900.00, 6.79905, + 1000.00, 6.90474 +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +const G4double G4QAOLowEnergyLoss::L1[22][2] = +{ + 0.00, -0.000001, + 0.10, -0.00001, + 0.20, -0.00049, + 0.30, -0.00084, + 0.40, 0.00085, + 0.50, 0.00519, + 0.60, 0.01198, + 0.70, 0.02074, + 0.80, 0.03133, + 0.90, 0.04369, + 1.00, 0.06035, + 2.00, 0.24023, + 3.00, 0.44284, + 4.00, 0.62012, + 5.00, 0.77031, + 6.00, 0.90390, + 7.00, 1.02705, + 8.00, 1.10867, + 9.00, 1.17546, + 10.00, 1.21599, + 15.00, 1.24349, + 20.00, 1.16752 +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +const G4double G4QAOLowEnergyLoss::L2[14][2] = +{ + 0.00, 0.000001, + 0.10, 0.00001, + 0.20, 0.00000, + 0.40, -0.00120, + 0.60, -0.00036, + 0.80, 0.00372, + 1.00, 0.01298, + 2.00, 0.08296, + 4.00, 0.21953, + 6.00, 0.23903, + 8.00, 0.20893, + 10.00, 0.10879, + 20.00, -0.88409, + 40.00, -1.13902 +}; + + + +G4double G4QAOLowEnergyLoss::HighEnergyLimit() const +{ + G4double eMax = 2. * MeV; + return eMax; +} diff --git a/source/processes/electromagnetic/lowenergy/src/G4VeLowEnergyLoss.cc b/source/processes/electromagnetic/lowenergy/src/G4VeLowEnergyLoss.cc new file mode 100644 index 0000000000..8e48f38c97 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4VeLowEnergyLoss.cc @@ -0,0 +1,1081 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4VeLowEnergyLoss.cc,v 1.2 2000/06/22 02:38:12 pia Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// -------------------------------------------------------------- +// GEANT 4 class implementation file +// +// For information related to this code contact: +// CERN, CN Division, ASD Group +// History: first implementation, based on object model of +// 2nd December 1995, G.Cosmo +// -------------------------------------------------------------- +// ------------------------------------------------------------ + +#include "G4VeLowEnergyLoss.hh" + +G4double G4VeLowEnergyLoss::ParticleMass ; +G4double G4VeLowEnergyLoss::taulow ; +G4double G4VeLowEnergyLoss::tauhigh ; +G4double G4VeLowEnergyLoss::ltaulow ; +G4double G4VeLowEnergyLoss::ltauhigh ; + + +G4bool G4VeLowEnergyLoss::rndmStepFlag = false; +G4bool G4VeLowEnergyLoss::EnlossFlucFlag = true; +G4double G4VeLowEnergyLoss::dRoverRange = 20*perCent; +G4double G4VeLowEnergyLoss::finalRange = 200*micrometer; +G4double G4VeLowEnergyLoss::c1lim = dRoverRange ; +G4double G4VeLowEnergyLoss::c2lim = 2.*(1.-dRoverRange)*finalRange ; +G4double G4VeLowEnergyLoss::c3lim = -(1.-dRoverRange)*finalRange*finalRange; + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4VeLowEnergyLoss::G4VeLowEnergyLoss() + :G4VContinuousDiscreteProcess("No Name Loss Process"), + lastMaterial(0), + nmaxCont1(4), + nmaxCont2(16) +{ + G4Exception("G4VeLowEnergyLoss:: default constructor is called"); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4VeLowEnergyLoss::G4VeLowEnergyLoss(const G4String& aName , G4ProcessType aType) + : G4VContinuousDiscreteProcess(aName, aType), + lastMaterial(NULL), + nmaxCont1(4), + nmaxCont2(16) +{ +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4VeLowEnergyLoss::~G4VeLowEnergyLoss() +{ +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4VeLowEnergyLoss::G4VeLowEnergyLoss(G4VeLowEnergyLoss& right) + : G4VContinuousDiscreteProcess(right), + lastMaterial(NULL), + nmaxCont1(4), + nmaxCont2(16) +{ +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4PhysicsTable* G4VeLowEnergyLoss::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(); + + if(theRangeTable) + { theRangeTable->clearAndDestroy(); + delete theRangeTable; } + theRangeTable = new G4PhysicsTable(numOfMaterials); + + // loop for materials + + for (G4int J=0; Jinsert(aVector); + } + return theRangeTable ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4VeLowEnergyLoss::BuildRangeVector(G4PhysicsTable* theDEDXTable, + G4double LowestKineticEnergy,G4double HighestKineticEnergy,G4int TotBin, + G4int materialIndex,G4PhysicsLogVector* rangeVector) +// create range vector for a material +{ + G4int nbin=100,i; + G4bool isOut; + + static G4double masslimit = 0.52*MeV ; + + G4double tlim=2.*MeV,t1=0.1*MeV,t2=0.025*MeV ; + G4double tlime=10.*keV,factor=2.*electron_mass_c2 ; + G4double loss1,loss2,ca,cb,cba ; + G4double losslim,clim ; + G4double taulim,rangelim,ltaulim,ltaumax, + LowEdgeEnergy,tau,Value,tau1,sqtau1 ; + G4double oldValue,tauold ; + + G4PhysicsVector* physicsVector= (*theDEDXTable)[materialIndex]; + const G4MaterialTable* theMaterialTable = + G4Material::GetMaterialTable() ; + + // low energy part first... + // heavy particle + if(ParticleMass > masslimit) + { + 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) ; + + i=-1; + oldValue = 0. ; + + 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) + { + 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) ; + } + else + // electron/positron + { + losslim = physicsVector->GetValue(tlime,isOut) ; + taulim = tlime/electron_mass_c2; + clim = losslim/sqrt(taulim); + ltaulim = log(taulim); + ltaumax = log(HighestKineticEnergy/electron_mass_c2); + + i=-1; + oldValue = 0.; + + 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,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); + Value = oldValue+RangeIntLog(physicsVector,nbin); + rangeVector->PutValue(j,Value); + oldValue = Value ; + + tauold = tau ; + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4double G4VeLowEnergyLoss::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(ilength(); + + if(theLabTimeTable) + { theLabTimeTable->clearAndDestroy(); + delete theLabTimeTable; } + theLabTimeTable = new G4PhysicsTable(numOfMaterials); + + + for (G4int J=0; Jinsert(aVector); + + + } + return theLabTimeTable ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4PhysicsTable* G4VeLowEnergyLoss::BuildProperTimeTable(G4PhysicsTable* theDEDXTable, + G4PhysicsTable* theProperTimeTable, + G4double LowestKineticEnergy, + G4double HighestKineticEnergy,G4int TotBin) + +{ + const G4MaterialTable* theMaterialTable= + G4Material::GetMaterialTable(); + G4int numOfMaterials = theMaterialTable->length(); + + if(theProperTimeTable) + { theProperTimeTable->clearAndDestroy(); + delete theProperTimeTable; } + theProperTimeTable = new G4PhysicsTable(numOfMaterials); + + + for (G4int J=0; Jinsert(aVector); + + + } + return theProperTimeTable ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4VeLowEnergyLoss::BuildLabTimeVector(G4PhysicsTable* theDEDXTable, + G4double LowestKineticEnergy, + G4double HighestKineticEnergy,G4int TotBin, + 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 ; + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4VeLowEnergyLoss::BuildProperTimeVector(G4PhysicsTable* theDEDXTable, + G4double LowestKineticEnergy, + G4double HighestKineticEnergy,G4int TotBin, + 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 ; + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4double G4VeLowEnergyLoss::LabTimeIntLog(G4PhysicsVector* physicsVector, + G4int nbin) +// num. integration, logarithmic binning +{ + G4double ltt,dltau,Value,ui,taui,ti,lossi,ci; + G4bool isOut; + ltt = ltauhigh-ltaulow; + dltau = ltt/nbin; + Value = 0.; + + for (G4int i=0; i<=nbin; i++) + { + ui = ltaulow+dltau*i; + taui = exp(ui); + 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(ilength(); + + if(theInverseRangeTable) + { theInverseRangeTable->clearAndDestroy(); + delete theInverseRangeTable; } + theInverseRangeTable = new G4PhysicsTable(numOfMaterials); + + // 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(theRangeTable, + theRangeCoeffATable, + theRangeCoeffBTable, + theRangeCoeffCTable, + LowestKineticEnergy,HighestKineticEnergy,TotBin,J, aVector); + + theInverseRangeTable->insert(aVector); + } + return theInverseRangeTable ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4VeLowEnergyLoss::InvertRangeVector(G4PhysicsTable* theRangeTable, + G4PhysicsTable* theRangeCoeffATable, + G4PhysicsTable* theRangeCoeffBTable, + G4PhysicsTable* theRangeCoeffCTable, + G4double LowestKineticEnergy, + G4double HighestKineticEnergy,G4int TotBin, + G4int materialIndex,G4PhysicsLogVector* aVector) +// invert range vector for a material +{ + G4double LowEdgeRange,A,B,C,discr,KineticEnergy ; + G4double RTable = exp(log(HighestKineticEnergy/LowestKineticEnergy)/TotBin) ; + 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) ; + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4PhysicsTable* G4VeLowEnergyLoss::BuildRangeCoeffATable(G4PhysicsTable* theRangeTable, + G4PhysicsTable* theRangeCoeffATable, + G4double LowestKineticEnergy, + G4double HighestKineticEnergy,G4int TotBin) +// Build tables of coefficients for the energy loss calculation +// create table for coefficients "A" +{ + const G4MaterialTable* theMaterialTable= + G4Material::GetMaterialTable(); + G4int numOfMaterials = theMaterialTable->length(); + + if(theRangeCoeffATable) + { theRangeCoeffATable->clearAndDestroy(); + delete theRangeCoeffATable; } + theRangeCoeffATable = new G4PhysicsTable(numOfMaterials); + + G4double RTable = exp(log(HighestKineticEnergy/LowestKineticEnergy)/TotBin) ; + 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); + } + return theRangeCoeffATable ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4PhysicsTable* G4VeLowEnergyLoss::BuildRangeCoeffBTable(G4PhysicsTable* theRangeTable, + G4PhysicsTable* theRangeCoeffBTable, + G4double LowestKineticEnergy, + G4double HighestKineticEnergy,G4int TotBin) +// Build tables of coefficients for the energy loss calculation +// create table for coefficients "B" +{ + const G4MaterialTable* theMaterialTable= + G4Material::GetMaterialTable(); + G4int numOfMaterials = theMaterialTable->length(); + + if(theRangeCoeffBTable) + { theRangeCoeffBTable->clearAndDestroy(); + delete theRangeCoeffBTable; } + theRangeCoeffBTable = new G4PhysicsTable(numOfMaterials); + + G4double RTable = exp(log(HighestKineticEnergy/LowestKineticEnergy)/TotBin) ; + 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); + } + return theRangeCoeffBTable ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4PhysicsTable* G4VeLowEnergyLoss::BuildRangeCoeffCTable(G4PhysicsTable* theRangeTable, + G4PhysicsTable* theRangeCoeffCTable, + G4double LowestKineticEnergy, + G4double HighestKineticEnergy,G4int TotBin) +// Build tables of coefficients for the energy loss calculation +// create table for coefficients "C" +{ + const G4MaterialTable* theMaterialTable= + G4Material::GetMaterialTable(); + G4int numOfMaterials = theMaterialTable->length(); + + if(theRangeCoeffCTable) + { theRangeCoeffCTable->clearAndDestroy(); + delete theRangeCoeffCTable; } + theRangeCoeffCTable = new G4PhysicsTable(numOfMaterials); + + G4double RTable = exp(log(HighestKineticEnergy/LowestKineticEnergy)/TotBin) ; + 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); + } + return theRangeCoeffCTable ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4double G4VeLowEnergyLoss::GetLossWithFluct(const G4DynamicParticle* aParticle, + G4Material* aMaterial, + G4double MeanLoss) +// 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. ; + + + // 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; + 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(); + + // G4cout << "MGP -- Fluc Tkin " << Tkin/keV << " keV " << " MeanLoss = " << MeanLoss/keV << G4endl; + + 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); + + // G4cout << "MGP Particle mass " << ParticleMass/MeV << " Tm " << Tm << G4endl; + + if (Tm <= ipotFluct) Tm = ipotFluct ; + + if(Tm > threshold) Tm = threshold; + beta2 = tau2/(tau1*tau1); + + // Gaussian fluctuation ? + if(MeanLoss >= kappa*Tm) + { + siga = sqrt(MeanLoss*Tm*(1.-0.5*beta2)) ; + loss = RandGauss::shoot(MeanLoss,siga) ; + if(loss < 0.) loss = 0. ; + // G4cout << "MGP Gaussian: Tm = " << Tm << ", siga = " << siga << ", loss = " << loss << G4endl; + 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(); + // G4cout << "MGP e0 = " << e0/keV << G4endl; + + if(Tm == ipotFluct) + { + a3 = MeanLoss/e0; + + if(a3>alim) + { + siga=sqrt(a3) ; + p3 = G4std::max(0,G4int(RandGauss::shoot(a3,siga)+0.5)); + } + else p3 = G4Poisson(a3); + + loss = p3*e0 ; + + if(p3 > 0) loss += (1.-2.*G4UniformRand())*e0 ; + // G4cout << "MGP very small step " << loss/keV << G4endl; + } + else + { + // G4cout << "MGP old Tm = " << Tm << " " << ipotFluct << " " << e0 << G4endl; + Tm = Tm-ipotFluct+e0 ; + + // MGP ---- workaround to avoid log argument<0, TO BE CHECKED + if (Tm <= 0.) + { + loss = MeanLoss; + p3 = 0.; + // G4cout << "MGP correction loss = MeanLoss " << loss/keV << G4endl; + } + else + { + a3 = MeanLoss*(Tm-e0)/(Tm*e0*log(Tm/e0)); + + // G4cout << "MGP new Tm = " << Tm << " " << ipotFluct << " " << e0 << " a3= " << a3 << G4endl; + + if(a3>alim) + { + siga=sqrt(a3) ; + p3 = G4std::max(0,G4int(RandGauss::shoot(a3,siga)+0.5)); + } + else + p3 = G4Poisson(a3); + //G4cout << "MGP p3 " << p3 << G4endl; + + } + + if(p3 > 0) + { + w = (Tm-e0)/Tm ; + if(p3 > nmaxCont2) + { + // G4cout << "MGP dp3 " << dp3 << " p3 " << p3 << " " << nmaxCont2 << G4endl; + dp3 = G4double(p3) ; + Corrfac = dp3/G4double(nmaxCont2) ; + p3 = nmaxCont2 ; + } + else + Corrfac = 1. ; + + for(G4int i=0; iNbOfProcesses 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 G4eLowEnergyLoss.hh) + +G4int G4eLowEnergyLoss::NbOfProcesses = 2; + +G4int G4eLowEnergyLoss::CounterOfElectronProcess = 0; +G4int G4eLowEnergyLoss::CounterOfPositronProcess = 0; +G4PhysicsTable** G4eLowEnergyLoss::RecorderOfElectronProcess = + new G4PhysicsTable*[10]; +G4PhysicsTable** G4eLowEnergyLoss::RecorderOfPositronProcess = + new G4PhysicsTable*[10]; + + +G4PhysicsTable* G4eLowEnergyLoss::theDEDXElectronTable = 0; +G4PhysicsTable* G4eLowEnergyLoss::theDEDXPositronTable = 0; +G4PhysicsTable* G4eLowEnergyLoss::theRangeElectronTable = 0; +G4PhysicsTable* G4eLowEnergyLoss::theRangePositronTable = 0; +G4PhysicsTable* G4eLowEnergyLoss::theInverseRangeElectronTable = 0; +G4PhysicsTable* G4eLowEnergyLoss::theInverseRangePositronTable = 0; +G4PhysicsTable* G4eLowEnergyLoss::theLabTimeElectronTable = 0; +G4PhysicsTable* G4eLowEnergyLoss::theLabTimePositronTable = 0; +G4PhysicsTable* G4eLowEnergyLoss::theProperTimeElectronTable = 0; +G4PhysicsTable* G4eLowEnergyLoss::theProperTimePositronTable = 0; + +G4PhysicsTable* G4eLowEnergyLoss::theeRangeCoeffATable = 0; +G4PhysicsTable* G4eLowEnergyLoss::theeRangeCoeffBTable = 0; +G4PhysicsTable* G4eLowEnergyLoss::theeRangeCoeffCTable = 0; +G4PhysicsTable* G4eLowEnergyLoss::thepRangeCoeffATable = 0; +G4PhysicsTable* G4eLowEnergyLoss::thepRangeCoeffBTable = 0; +G4PhysicsTable* G4eLowEnergyLoss::thepRangeCoeffCTable = 0; + +G4double G4eLowEnergyLoss::LowerBoundEloss = 250.*eV ; +G4double G4eLowEnergyLoss::UpperBoundEloss = 100.*GeV ; +G4int G4eLowEnergyLoss::NbinEloss = 1000 ; +G4double G4eLowEnergyLoss::RTable ; +G4double G4eLowEnergyLoss::LOGRTable ; + + +G4EnergyLossMessenger* G4eLowEnergyLoss::eLossMessenger = 0; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +// constructor and destructor + +G4eLowEnergyLoss::G4eLowEnergyLoss(const G4String& processName) + : G4VeLowEnergyLoss (processName), + theLossTable(0), + theDEDXTable(0), + Charge(-1.),lastCharge(0.), + MinKineticEnergy(1.*eV), + //linLossLimit(0.02) + linLossLimit(0.05), + RecorderOfProcess(0), + fdEdx(0), + fRangeNow(0), + CounterOfProcess(0) +{ + + //create (only once) EnergyLoss messenger + if(!eLossMessenger) eLossMessenger = new G4EnergyLossMessenger(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4eLowEnergyLoss::~G4eLowEnergyLoss() +{ + if (theLossTable) + { + theLossTable->clearAndDestroy(); + delete theLossTable; + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4eLowEnergyLoss::BuildDEDXTable( + const G4ParticleDefinition& aParticleType) +{ + ParticleMass = aParticleType.GetPDGMass(); + Charge = aParticleType.GetPDGCharge()/eplus; + + // calculate data members LOGRTable,RTable first + + G4double lrate = log(UpperBoundEloss/LowerBoundEloss); + LOGRTable=lrate/NbinEloss; + 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; + + ParticleMass = aParticleType.GetPDGMass(); + + if (&aParticleType==G4Electron::Electron()) + { + // Build range table + theRangeElectronTable = BuildRangeTable(theDEDXElectronTable, + theRangeElectronTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + // Build lab/proper time tables + theLabTimeElectronTable = BuildLabTimeTable(theDEDXElectronTable, + theLabTimeElectronTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + theProperTimeElectronTable = BuildProperTimeTable(theDEDXElectronTable, + theProperTimeElectronTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + // Build coeff tables for the energy loss calculation + theeRangeCoeffATable = BuildRangeCoeffATable(theRangeElectronTable, + theeRangeCoeffATable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + theeRangeCoeffBTable = BuildRangeCoeffBTable(theRangeElectronTable, + theeRangeCoeffBTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + theeRangeCoeffCTable = BuildRangeCoeffCTable(theRangeElectronTable, + theeRangeCoeffCTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + // invert the range table + theInverseRangeElectronTable = BuildInverseRangeTable(theRangeElectronTable, + theeRangeCoeffATable, + theeRangeCoeffBTable, + theeRangeCoeffCTable, + theInverseRangeElectronTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + } + if (&aParticleType==G4Positron::Positron()) + { + // Build range table + theRangePositronTable = BuildRangeTable(theDEDXPositronTable, + theRangePositronTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + + // Build lab/proper time tables + theLabTimePositronTable = BuildLabTimeTable(theDEDXPositronTable, + theLabTimePositronTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + theProperTimePositronTable = BuildProperTimeTable(theDEDXPositronTable, + theProperTimePositronTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + // Build coeff tables for the energy loss calculation + thepRangeCoeffATable = BuildRangeCoeffATable(theRangePositronTable, + thepRangeCoeffATable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + thepRangeCoeffBTable = BuildRangeCoeffBTable(theRangePositronTable, + thepRangeCoeffBTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + thepRangeCoeffCTable = BuildRangeCoeffCTable(theRangePositronTable, + thepRangeCoeffCTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + // invert the range table + theInverseRangePositronTable = BuildInverseRangeTable(theRangePositronTable, + thepRangeCoeffATable, + thepRangeCoeffBTable, + thepRangeCoeffCTable, + theInverseRangePositronTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + } + + // make the energy loss and the range table available + 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, + LowerBoundEloss, UpperBoundEloss, 1.,NbinEloss); + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4VParticleChange* G4eLowEnergyLoss::AlongStepDoIt( const G4Track& trackData, + const G4Step& stepData) +{ + // compute the energy loss after a Step + + static const G4double faclow = 1.5 ; + + // 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); + + G4double MeanLoss, finalT; + + if (E < MinKineticEnergy) finalT = 0.; + + else if ( E< faclow*LowerBoundEloss) + { + if (Step >= fRangeNow) finalT = 0.; + // else finalT = E*(1.-Step/fRangeNow) ; + else finalT = E*(1.-sqrt(Step/fRangeNow)) ; + } + + else if (E>=UpperBoundEloss) finalT = E - Step*fdEdx; + + else if (Step >= fRangeNow) finalT = 0.; + + else + { + if(Step/fRangeNow < linLossLimit) finalT = E-Step*fdEdx ; + 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 ; + + // G4cout << "MGP AlongStepDoIt finalT before fluct = " << finalT/keV << " keV" << G4endl; + + G4double fluc = GetLossWithFluct(aParticle,aMaterial,MeanLoss); + + // G4cout << "LowerBoundEloss = " << LowerBoundEloss/keV = << " Fluc = " << fluc/keV << G4endl; + + //now the loss with fluctuation + if ((EnlossFlucFlag) && (finalT > 0.) && (finalT < E)&&(E > LowerBoundEloss)) + { + finalT = E-GetLossWithFluct(aParticle,aMaterial,MeanLoss); + if (finalT < 0.) finalT = 0.; + } + + // kill the particle if the kinetic energy <= 0 + if (finalT <= 0. ) + { + finalT = 0.; + if (Charge < 0.) fParticleChange.SetStatusChange(fStopAndKill); + else fParticleChange.SetStatusChange(fStopButAlive); + } + + // MGP debug + // G4cout << "MGP AlongStepDoIt finalT = " << finalT/keV << " keV" << G4endl; + + + fParticleChange.SetEnergyChange(finalT); + fParticleChange.SetLocalEnergyDeposit(E-finalT); + + return &fParticleChange; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + diff --git a/source/processes/electromagnetic/lowenergy/src/G4hLowEnergyIonisation.cc b/source/processes/electromagnetic/lowenergy/src/G4hLowEnergyIonisation.cc index 7ce4ae621c..14da65aa97 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4hLowEnergyIonisation.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4hLowEnergyIonisation.cc @@ -25,19 +25,26 @@ // 20 August 1999 G.Mancinelli added ICRU tables for alpha // 31 August 1999 V.Ivanchenko update and cleen up // 30 Sept. 1999 V.Ivanchenko minor upgrade +// 12 Dec. 1999 S. Chauvie added Barkas correction // 19 Jan. 2000 V.Ivanchenko minor changing in Barkas corrections +// 02 April 2000 S. Chauvie linearization of barkas effect +// 03 April 2000 V.Ivanchenko Nuclear Stopping power for antiprotons +// 23 May 2000 MG Pia Clean up for QAO model +// 24 May 2000 MG Pia Code properly indented to improve legibility // -------------------------------------------------------------- //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - #include "G4hLowEnergyIonisation.hh" #include "G4UnitsTable.hh" #include "G4EnergyLossTables.hh" +#include "G4Material.hh" +#include "G4DynamicParticle.hh" +#include "G4QAOLowEnergyLoss.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... G4hLowEnergyIonisation::G4hLowEnergyIonisation(const G4String& processName) - : G4hEnergyLoss(processName), + : G4hLowEnergyLoss(processName), theMeanFreePathTable(NULL), ParamLowEnergy(1.*keV), ParamHighEnergy(2.*MeV), @@ -56,11 +63,12 @@ G4hLowEnergyIonisation::G4hLowEnergyIonisation(const G4String& processName) HeMassAMU(4.0026), ZieglerFactor(eV*cm2*1.0e-15) { - LowestKineticEnergy = 10.*eV ; - HighestKineticEnergy = 100.*TeV ; - TotBin = 200 ; - MassRatio = 1.0 ; - DeltaCutInKineticEnergy = 0; + LowestKineticEnergy = 10.*eV ; + HighestKineticEnergy = 100.*TeV ; + TotBin = 200 ; + MassRatio = 1.0 ; + DeltaCutInKineticEnergy = 0; + qaoLoss = new G4QAOLowEnergyLoss; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -71,6 +79,10 @@ G4hLowEnergyIonisation::~G4hLowEnergyIonisation() theMeanFreePathTable->clearAndDestroy(); delete theMeanFreePathTable; } + + delete qaoLoss; + qaoLoss = 0; + } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -104,7 +116,7 @@ void G4hLowEnergyIonisation::SetStoppingPowerTableName(const G4String& dedxTable } else if(dedxTable == "ICRU_R49He") { DEDXtable = "ICRU_R49He"; ParamHighEnergy = 2.0*MeV; - + } else if(dedxTable == "ICRU_R49PowersHe") { DEDXtable = "ICRU_R49PowersHe"; ParamHighEnergy = 2.0*MeV; @@ -114,8 +126,8 @@ void G4hLowEnergyIonisation::SetStoppingPowerTableName(const G4String& dedxTable ParamHighEnergy = 2.0*MeV; } else { - G4cout << "G4hLowEnergyIonisation Warning: There is no table with the name =" - << dedxTable << G4endl; + G4cout << "G4hLowEnergyIonisation Warning: There is no table with the name =" + << dedxTable << G4endl; } } @@ -154,7 +166,7 @@ void G4hLowEnergyIonisation::BuildLossTable(const G4ParticleDefinition& aParticl // Tables for different hadrons will be different because of // small difference in Tmax connected with RateMass // RateMass = electron_mass_c2 / (aParticleType.GetPDGMass()) ; - + // cuts for electron .................... DeltaCutInKineticEnergy = theElectron->GetCutsInEnergy() ; @@ -187,23 +199,23 @@ void G4hLowEnergyIonisation::BuildLossTable(const G4ParticleDefinition& aParticl // get material parameters needed for the energy loss calculation G4Material* material= (*theMaterialTable)[J]; - + // get electron cut in kin. energy for the material DeltaCutInKineticEnergyNow = DeltaCutInKineticEnergy[J] ; - + // define constants A and B for this material paramA = GetParametrisedLoss(material, ParamLowEnergy, - DeltaCutInKineticEnergyNow) - /sqrt(ParamLowEnergy) ; - + DeltaCutInKineticEnergyNow) + /sqrt(ParamLowEnergy) ; + ionloss = GetParametrisedLoss(material, ParamHighEnergy, DeltaCutInKineticEnergyNow) ; - + ionlossBB = GetBetheBlochLoss(material, ParamHighEnergy, DeltaCutInKineticEnergyNow) ; - + paramB = ionloss/ionlossBB - 1.0 ; // now comes the loop for the kinetic energy values @@ -211,9 +223,6 @@ void G4hLowEnergyIonisation::BuildLossTable(const G4ParticleDefinition& aParticl for (G4int i = 0 ; i < TotBin ; i++) { LowEdgeEnergy = aVector->GetLowEdgeEnergy(i) ; - ionloss = GetParametrisedLoss(material, LowEdgeEnergy, - DeltaCutInKineticEnergyNow) ; - if ( LowEdgeEnergy < ParamHighEnergy ) { // low energy part , parametrised energy loss formulae @@ -235,7 +244,7 @@ void G4hLowEnergyIonisation::BuildLossTable(const G4ParticleDefinition& aParticl DeltaCutInKineticEnergyNow) ; ionloss *= (1.0 + paramB*ParamHighEnergy/LowEdgeEnergy) ; } - + // now put the loss into the vector aVector->PutValue(i,ionloss) ; } @@ -247,57 +256,57 @@ void G4hLowEnergyIonisation::BuildLossTable(const G4ParticleDefinition& aParticl //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... G4double G4hLowEnergyIonisation::GetPreciseDEDX (G4Material* aMaterial, - const G4double KinEnergy, - const G4ParticleDefinition* aParticleType) + const G4double KinEnergy, + const G4ParticleDefinition* aParticleType) { // Calculation for different hadrons will be different because of // small difference in Tmax connected with RateMass // RateMass = electron_mass_c2 / (aParticleType.GetPDGMass()) ; - + G4double ionloss, ionlossBB ; G4double paramA, paramB, dedx ; - + ParticleMass = aParticleType->GetPDGMass() ; Charge = aParticleType->GetPDGCharge()/eplus ; MassRatio = proton_mass_c2/ParticleMass ; - + G4double Tscaled = KinEnergy*MassRatio ; G4double ChargeSquare = GetIonEffChargeSquare(aMaterial,KinEnergy,Charge) ; - + if(Tscaled > ParamHighEnergy) { if(Charge>0.) { - + dedx = G4EnergyLossTables::GetPreciseDEDX( theProton,Tscaled,aMaterial) - * ChargeSquare ; - + * ChargeSquare ; + } else { - + dedx = G4EnergyLossTables::GetPreciseDEDX( theAntiProton,Tscaled,aMaterial) - * ChargeSquare ; + * ChargeSquare ; } } else { - - + + DeltaCutInKineticEnergyNow = DeltaCutInKineticEnergy[(aMaterial->GetIndex())] ; if ( Tscaled < ParamLowEnergy ) { // define constants A for this material paramA = GetParametrisedLoss(aMaterial, ParamLowEnergy, DeltaCutInKineticEnergyNow)/sqrt(ParamLowEnergy) ; - + // The model of free electron gas ionloss = GetFreeElectronGasLoss(paramA, Tscaled) ; - + } else { - + // Parametrisation for intermediate energy range ionloss = GetParametrisedLoss(aMaterial, Tscaled, DeltaCutInKineticEnergyNow) ; } ionloss *= ChargeSquare ; - + } - + return ionloss ; } @@ -313,7 +322,7 @@ void G4hLowEnergyIonisation::SetPhysicsTableBining(G4double lowE, G4double highE //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... void G4hLowEnergyIonisation::BuildPhysicsTable(const G4ParticleDefinition& aParticleType) - + // just call BuildLossTable+BuildLambdaTable { ParticleMass = aParticleType.GetPDGMass() ; @@ -323,51 +332,50 @@ void G4hLowEnergyIonisation::BuildPhysicsTable(const G4ParticleDefinition& aPart G4double ElectronCutInRange = G4Electron::Electron()->GetCuts(); DeltaCutInKineticEnergy = theElectron->GetCutsInEnergy() ; - - if(Charge>0.) - { - if( (ptableElectronCutInRange != ElectronCutInRange) - || (theDEDXpTable == NULL)) - { - BuildLossTable(aParticleType) ; - RecorderOfpProcess[CounterOfpProcess] = theLossTable ; - CounterOfpProcess++; - } - } - else - { - if( (pbartableElectronCutInRange != ElectronCutInRange) - || (theDEDXpbarTable == NULL)) - { - BuildLossTable(aParticleType) ; - RecorderOfpbarProcess[CounterOfpbarProcess] = theLossTable ; - CounterOfpbarProcess++; - } - } - + + if(Charge>0.) + { + if( (ptableElectronCutInRange != ElectronCutInRange) + || (theDEDXpTable == NULL)) + { + BuildLossTable(aParticleType) ; + RecorderOfpProcess[CounterOfpProcess] = theLossTable ; + CounterOfpProcess++; + } + } + else + { + if( (pbartableElectronCutInRange != ElectronCutInRange) + || (theDEDXpbarTable == NULL)) + { + BuildLossTable(aParticleType) ; + RecorderOfpbarProcess[CounterOfpbarProcess] = theLossTable ; + CounterOfpbarProcess++; + } + } + BuildLambdaTable(aParticleType) ; BuildDEDXTable(aParticleType) ; if((&aParticleType == G4Proton::Proton()) ) - PrintInfoDefinition(); + PrintInfoDefinition(); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... void G4hLowEnergyIonisation::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 G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + //Particle properties - + //ParticleMass = aParticleType.GetPDGMass() ; //G4double Charge = aParticle.GetPDGCharge()/eplus ; @@ -400,12 +408,10 @@ void G4hLowEnergyIonisation::BuildLambdaTable(const G4ParticleDefinition& aParti 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* theAtomicNumDensityVector = material->GetAtomicNumDensityVector(); + const G4int NumberOfElements = material->GetNumberOfElements() ; + G4double Eexc = material->GetIonisation()->GetMeanExcitationEnergy(); // get the electron kinetic energy cut for the actual material, // it will be used in ComputeMicroscopicCrossSection @@ -426,7 +432,8 @@ void G4hLowEnergyIonisation::BuildLambdaTable(const G4ParticleDefinition& aParti sigma += theAtomicNumDensityVector[iel]*ChargeSquare* ComputeMicroscopicCrossSection(aParticleType, LowEdgeEnergy, - (*theElementVector)(iel)->GetZ() ) ; + (*theElementVector)(iel)->GetZ(), + Eexc ) ; } // mean free path = 1./macroscopic cross section @@ -442,21 +449,22 @@ void G4hLowEnergyIonisation::BuildLambdaTable(const G4ParticleDefinition& aParti //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -G4double G4hLowEnergyIonisation::ComputeMicroscopicCrossSection( - const G4ParticleDefinition& aParticleType, - G4double KineticEnergy, - G4double AtomicNumber) +G4double G4hLowEnergyIonisation::ComputeMicroscopicCrossSection(const G4ParticleDefinition& aParticleType, + G4double KineticEnergy, + G4double AtomicNumber, + G4double ExcEnergy) { //****************************************************************** - // cross section formula is OK for spin=0 and 1/2 only ! + // cross section formula is OK for spin=0, 1/2, 1 only ! // ***************************************************************** // calculates the microscopic cross section in GEANT4 internal units // ( it is called for elements , AtomicNumber = Z ) - G4double TotalEnergy, - betasquare, - MaxKineticEnergyTransfer,TotalCrossSection,tempvar; + G4double TotalEnergy, Beta2, Tmax, var ; + G4double TotalCrossSection = 0.0 ; + + G4double Eexc2 = ExcEnergy*ExcEnergy ; // get particle data ................................... @@ -464,36 +472,35 @@ G4double G4hLowEnergyIonisation::ComputeMicroscopicCrossSection( // 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); + Beta2 = KineticEnergy*(TotalEnergy+ParticleMass) / (TotalEnergy*TotalEnergy); + var = ParticleMass+electron_mass_c2; + Tmax = 2.*electron_mass_c2*KineticEnergy * (TotalEnergy+ParticleMass) + / (var*var+2.*electron_mass_c2*KineticEnergy); + + // Validity range for delta electron cross section + G4double DeltaCut = G4std::max(DeltaCutInKineticEnergyNow, ExcEnergy); // 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() == 0.5) - { - TotalCrossSection += 0.5 - *(MaxKineticEnergyTransfer-DeltaCutInKineticEnergyNow) - /(TotalEnergy*TotalEnergy); - G4double Section = 0.5 - *(MaxKineticEnergyTransfer-DeltaCutInKineticEnergyNow) - /(TotalEnergy*TotalEnergy); - } - TotalCrossSection = twopi_mc2_rcl2 * AtomicNumber - *TotalCrossSection/betasquare; - } - else - TotalCrossSection= 0.0 ; + if( Tmax > DeltaCut ) { + + var=DeltaCut/Tmax; + TotalCrossSection = (1.-var*(1.-Beta2*log(var))) / DeltaCut ; + G4double spin = aParticleType.GetPDGSpin() ; + + // +term for spin=1/2 particle + if( 0.5 == spin ) + TotalCrossSection += 0.5 * (Tmax - DeltaCut) / (TotalEnergy*TotalEnergy); + + // +term for spin=1 particle + else if( 0.9 < spin ) + TotalCrossSection += -log(var)/(3.0*DeltaCut) + + (Tmax - DeltaCut) * + ( (5.0+ 1.0/var)*0.25 / (TotalEnergy*TotalEnergy) - + Beta2 / (Tmax * DeltaCut) ) / 3.0 ; + + TotalCrossSection *= twopi_mc2_rcl2 * AtomicNumber / Beta2 ; + } return TotalCrossSection ; } @@ -501,198 +508,196 @@ G4double G4hLowEnergyIonisation::ComputeMicroscopicCrossSection( //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... G4double G4hLowEnergyIonisation::GetConstraints(const G4DynamicParticle *aParticle, - G4Material *aMaterial) + G4Material *aMaterial) { // returns the Step limit // it calculates dEdx and the range as well // based on Effective charge approach - + G4double KineticEnergy,StepLimit ; G4bool isOut ; - + theParticle = aParticle->GetDefinition() ; MassRatio = proton_mass_c2/(theParticle->GetPDGMass()) ; Charge = (theParticle->GetPDGCharge())/eplus ; - + KineticEnergy = aParticle->GetKineticEnergy() ; - + // Scale the kinetic energy - + G4double Tscaled= KineticEnergy*MassRatio ; G4double ChargeSquare = GetIonEffChargeSquare(aMaterial,KineticEnergy,Charge) ; G4double dx, s ; - + if(Charge>0.) { - + fdEdx = G4EnergyLossTables::GetDEDX( theProton, Tscaled, aMaterial) - * ChargeSquare ; - + * ChargeSquare ; + fRangeNow = G4EnergyLossTables::GetRange( theProton, Tscaled, aMaterial) ; s = fRangeNow ; - + if(Tscaled < ParamHighEnergy) { // For Bragg's peak the limit in range is estimated // in order to be inside linLossLimit on each step fdEdx = GetPreciseDEDX (aMaterial, KineticEnergy, theParticle) ; - + dx = G4EnergyLossTables::GetRange( theProton, - ParamHighEnergy, aMaterial) * linLossLimit ; + ParamHighEnergy, aMaterial) * linLossLimit ; fRangeNow = G4std::min (fRangeNow, dx) ; } - + // Antiprotons and negative hadrons } else { - + fdEdx = G4EnergyLossTables::GetDEDX( theAntiProton, Tscaled, aMaterial) - * ChargeSquare ; - + * ChargeSquare ; + fRangeNow = G4EnergyLossTables::GetRange( theAntiProton, Tscaled, aMaterial) ; - + if(Tscaled < ParamHighEnergy) { // For Bragg's peak the limit in range is estimated // in order to be inside linLossLimit on each step fdEdx = GetPreciseDEDX (aMaterial, KineticEnergy, theParticle) ; dx = G4EnergyLossTables::GetRange( theAntiProton, - ParamHighEnergy, aMaterial) * linLossLimit ; + ParamHighEnergy, aMaterial) * linLossLimit ; fRangeNow = G4std::min (fRangeNow, dx) ; } } - + // fRangeNow /= (ChargeSquare*MassRatio) ; StepLimit = fRangeNow ; - + // compute the (random) Step limit .............. if(fRangeNow > finalRange) { if(Tscaled > ParamHighEnergy ) { StepLimit = (c1lim*fRangeNow+c2lim+c3lim/fRangeNow) ; - + // randomise this value if(rndmStepFlag) StepLimit = - finalRange+(StepLimit-finalRange)*G4UniformRand() ; + finalRange+(StepLimit-finalRange)*G4UniformRand() ; if(StepLimit > fRangeNow) StepLimit = fRangeNow ; } } - + return StepLimit ; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -G4VParticleChange* G4hLowEnergyIonisation::AlongStepDoIt( - const G4Track& trackData, const G4Step& stepData) - +G4VParticleChange* G4hLowEnergyIonisation::AlongStepDoIt(const G4Track& trackData, const G4Step& stepData) + { // compute the energy loss after a step - const G4DynamicParticle* aParticle; - G4Material* aMaterial; + G4double finalT = 0.0 ; - + aParticleChange.Initialize(trackData) ; - aMaterial = trackData.GetMaterial() ; + G4Material* aMaterial = trackData.GetMaterial() ; // get the actual (true) Step length from stepData const G4double Step = stepData.GetStepLength() ; - - aParticle = trackData.GetDynamicParticle() ; - + + const G4DynamicParticle* aParticle = trackData.GetDynamicParticle() ; + G4int index = aMaterial->GetIndex() ; G4double E = aParticle->GetKineticEnergy() ; - + if( (aParticle->GetDefinition()) != theParticle ) { - + theParticle = aParticle->GetDefinition() ; MassRatio = proton_mass_c2/(theParticle->GetPDGMass()) ; Charge = (theParticle->GetPDGCharge())/eplus ; } - + G4double Tscaled= E*MassRatio ; G4double ChargeSquare = Charge*Charge ; G4double Eloss = 0.0 ; G4double Nloss = 0.0 ; - - if(E < MinKineticEnergy) Eloss = E ; - else if(( E > HighestKineticEnergy)||( E <= LowestKineticEnergy)) - Eloss = Step*fdEdx ; - - else if(Tscaled < ParamHighEnergy) { - - // Nuclear Stopping Power - if(nStopping) { - Nloss = GetNuclearDEDX(aMaterial, E, theParticle) ; - } - - G4double E1 = E - Step*(fdEdx + Nloss) ; - - if(0.0 < E1) { - Eloss = (fdEdx + GetPreciseDEDX (aMaterial, E1, theParticle))*Step*0.5 ; - if(nStopping) { - Nloss = (Nloss + GetNuclearDEDX (aMaterial, E1, theParticle))*Step*0.5 ; - } - } else Eloss = E ; - - } else if(Step >= fRangeNow ) Eloss = E ; + if(E < MinKineticEnergy) Eloss = E ; + + else if(( E > HighestKineticEnergy)||( E <= LowestKineticEnergy)) + Eloss = Step*fdEdx ; + + else if(Tscaled < ParamHighEnergy) { - else { - - if(Step>linLossLimit*fRangeNow) { - - G4double rscaled= fRangeNow*MassRatio*ChargeSquare ; - G4double sscaled= Step *MassRatio*ChargeSquare ; - - if(Charge>0.) - { - Eloss = G4EnergyLossTables::GetPreciseEnergyFromRange( - theProton, - rscaled ,aMaterial) - - G4EnergyLossTables::GetPreciseEnergyFromRange( - theProton, - rscaled-sscaled,aMaterial) ; - } - else - { - Eloss = G4EnergyLossTables::GetPreciseEnergyFromRange( - theAntiProton, - rscaled ,aMaterial) - - G4EnergyLossTables::GetPreciseEnergyFromRange( - theAntiProton, - rscaled-sscaled,aMaterial) ; - } - Eloss /= (MassRatio*ChargeSquare) ; - - } else Eloss = Step*fdEdx ; + // Nuclear Stopping Power + if(nStopping) { + Nloss = GetNuclearDEDX(aMaterial, E, theParticle) ; } - + + G4double E1 = E - Step*(fdEdx + Nloss) ; + + if(0.0 < E1) { + Eloss = (fdEdx + GetPreciseDEDX (aMaterial, E1, theParticle))*Step*0.5 ; + if(nStopping) { + Nloss = (Nloss + GetNuclearDEDX (aMaterial, E1, theParticle))*Step*0.5 ; + } + } else Eloss = E ; + + } else if(Step >= fRangeNow ) Eloss = E ; + + else { + + if(Step>linLossLimit*fRangeNow) { + + G4double rscaled= fRangeNow*MassRatio*ChargeSquare ; + G4double sscaled= Step *MassRatio*ChargeSquare ; + + if(Charge>0.) + { + Eloss = G4EnergyLossTables::GetPreciseEnergyFromRange( + theProton, + rscaled ,aMaterial) - + G4EnergyLossTables::GetPreciseEnergyFromRange( + theProton, + rscaled-sscaled,aMaterial) ; + } + else + { + Eloss = G4EnergyLossTables::GetPreciseEnergyFromRange( + theAntiProton, + rscaled ,aMaterial) - + G4EnergyLossTables::GetPreciseEnergyFromRange( + theAntiProton, + rscaled-sscaled,aMaterial) ; + } + Eloss /= (MassRatio*ChargeSquare) ; + + } else Eloss = Step*fdEdx ; + } + finalT = E - Eloss - Nloss; - + if(finalT > MinKineticEnergy) { - + // now the electron loss with fluctuation if((EnlossFlucFlag) && (finalT < E) && (E > LowestKineticEnergy)) { - + Eloss = GetLossWithFluct(aParticle,aMaterial,Eloss/ChargeSquare) - * ChargeSquare ; + * ChargeSquare ; // if(nStopping) { // Nloss = GetNuclearLossWithFluct(theParticle,aMaterial,Nloss) ; // } finalT = E - Eloss - Nloss ; } } - + // kill the particle if the kinetic energy <= 0 if (finalT <= 0.0 ) - { - finalT = 0.0 ; - if(theParticle->GetParticleName() == "proton") - aParticleChange.SetStatusChange(fStopAndKill); - else - aParticleChange.SetStatusChange(fStopButAlive); - } - + { + finalT = 0.0 ; + if(theParticle->GetParticleName() == "proton") + aParticleChange.SetStatusChange(fStopAndKill); + else + aParticleChange.SetStatusChange(fStopButAlive); + } + aParticleChange.SetEnergyChange( finalT ) ; aParticleChange.SetLocalEnergyDeposit(E-finalT) ; - + return &aParticleChange ; } @@ -703,8 +708,6 @@ G4VParticleChange* G4hLowEnergyIonisation::PostStepDoIt(const G4Track& trackData { // Units are expressed in GEANT4 internal units. - const G4DynamicParticle* aParticle ; - G4Material* aMaterial; G4double KineticEnergy,TotalEnergy,TotalMomentum, betasquare,MaxKineticEnergyTransfer, DeltaKineticEnergy,DeltaTotalMomentum,costheta,sintheta,phi, @@ -712,12 +715,14 @@ G4VParticleChange* G4hLowEnergyIonisation::PostStepDoIt(const G4Track& trackData x,xc,te2,grej,Psquare,Esquare,summass,rate,grejc,finalMomentum ; aParticleChange.Initialize(trackData) ; - aMaterial = trackData.GetMaterial() ; + G4Material* aMaterial = trackData.GetMaterial() ; + G4double Eexc = aMaterial->GetIonisation()->GetMeanExcitationEnergy(); + G4double Eexc2 = Eexc*Eexc ; - aParticle = trackData.GetDynamicParticle() ; + const G4DynamicParticle* aParticle = trackData.GetDynamicParticle() ; ParticleMass=aParticle->GetDefinition()->GetPDGMass(); - KineticEnergy=aParticle->GetKineticEnergy(); + KineticEnergy=aParticle->GetKineticEnergy(); TotalEnergy=KineticEnergy + ParticleMass ; Psquare=KineticEnergy*(TotalEnergy+ParticleMass) ; Esquare=TotalEnergy*TotalEnergy ; @@ -726,16 +731,19 @@ G4VParticleChange* G4hLowEnergyIonisation::PostStepDoIt(const G4Track& trackData // 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); - + + // Validity range for delta electron cross section + G4double DeltaCut = G4std::max(DeltaCutInKineticEnergyNow,Eexc); + // sampling kinetic energy of the delta ray - if( MaxKineticEnergyTransfer <= DeltaCutInKineticEnergyNow ) + if( MaxKineticEnergyTransfer <= DeltaCut ) { // pathological case (it should not happen , // there is no change at all)..... @@ -746,21 +754,28 @@ G4VParticleChange* G4hLowEnergyIonisation::PostStepDoIt(const G4Track& trackData 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 ; + xc = DeltaCut / MaxKineticEnergyTransfer ; + rate = MaxKineticEnergyTransfer / TotalEnergy ; + rate = rate*rate ; + G4double spin = aParticle->GetDefinition()->GetPDGSpin() ; + // sampling follows ... do { x=xc/(1.-(1.-xc)*G4UniformRand()); - grej=(1.-x*(betasquare-x*te2))/grejc ; - } while( G4UniformRand()>grej ); + + if(0.0 == spin) { + grej = 1.0 - betasquare * x ; + + } else if (0.5 == spin) { + grej = (1.0 - betasquare * x + 0.5*x*x*rate) / (1.0 + 0.5 * rate) ; + + } else { + grej = (1.0 - betasquare * x ) * (1.0 + x/ (3.0*xc)) + + x * x * rate * (1.0 + 0.5 * x / xc) / 3.0 / + (1.0 + 1.0/(3.0*xc) + rate *(1.0+ 0.5/xc) /3.0) ; + } + + } while( G4UniformRand() > grej ); } DeltaKineticEnergy = x * MaxKineticEnergyTransfer ; @@ -847,9 +862,35 @@ G4double G4hLowEnergyIonisation::GetParametrisedLoss(G4Material* material, G4double ionloss, ion, ionloss125, ion125; G4int molecIndex = 0 ; ionloss = 0.0 ; - + + // start with antiproton management with quantum harmonic + // oscillator loss model + if ( pbarStop && -0.5 > Charge){ + G4ParticleDefinition* pbarDef = G4AntiProton::AntiProtonDefinition(); + if ( pbarStop && (qaoLoss->IsInCharge(KinEnergy,pbarDef,material) )) + { + G4double paramLowEnergyForAntiProtons = qaoLoss->LowEnergyLimit(); + + G4DynamicParticle dynamicPart; + dynamicPart.SetDefinition(pbarDef); + dynamicPart.SetCharge(-1); + + if(KinEnergyEnergyLoss(&dynamicPart,material)/sqrt(paramLowEnergyForAntiProtons); + ionloss = GetFreeElectronGasLoss(paramA,KinEnergy); + } else { + dynamicPart.SetKineticEnergy(KinEnergy); + ionloss = qaoLoss->EnergyLoss(&dynamicPart,material); + ionloss -= GetDeltaRaysEnergy(material,KinEnergy,DeltaRayCutNow); + } + + + return ionloss; + } + } // First of all check tables for specific materials for ICRU_49 parametrisation - + // Ziegler parametrisation in ICRU49 if ( DEDXtable == "ICRU_R49p" ) { @@ -858,11 +899,18 @@ G4double G4hLowEnergyIonisation::GetParametrisedLoss(G4Material* material, if ((molecIndex > 0)) { ionloss = GetMolecICRU_R49Loss(material, KinEnergy, DeltaRayCutNow, molecIndex); + + // Barkas corrections for negative particles + if( (-0.5 > Charge) && pbarStop) { + ionloss += ComputeBarkasTerm( material, KinEnergy ) * (Charge - 1.0) ; + } + + if ( ionloss <= 0.0) ionloss = 0.0 ; return ionloss; } } - // Powers parametrisation in ICRU49 + // Powers parametrisation in ICRU49 if ( DEDXtable == "ICRU_R49PowersHe" ) { molecIndex = (MolecIsInICRU_R49PowersHe(material))+1; @@ -870,6 +918,12 @@ G4double G4hLowEnergyIonisation::GetParametrisedLoss(G4Material* material, ionloss = GetMolecICRU_R49Loss(material, KinEnergy, DeltaRayCutNow, molecIndex) ; + // Barkas corrections for negative particles + if( (-0.5 > Charge) && pbarStop) { + ionloss += ComputeBarkasTerm( material, KinEnergy ) * (Charge - 1.0) ; + } + + if ( ionloss <= 0.0) ionloss = 0.0 ; return ionloss; } DEDXtable = "ICRU_R49He" ; @@ -880,12 +934,9 @@ G4double G4hLowEnergyIonisation::GetParametrisedLoss(G4Material* material, // Now cycle over elements - calculation based on Bragg's rule // get elements in the actual material, - const G4ElementVector* theElementVector= - material->GetElementVector() ; - const G4double* theAtomicNumDensityVector= - material->GetAtomicNumDensityVector() ; - const G4int NumberOfElements= - material->GetNumberOfElements() ; + const G4ElementVector* theElementVector =material->GetElementVector() ; + const G4double* theAtomicNumDensityVector=material->GetAtomicNumDensityVector() ; + const G4int NumberOfElements = material->GetNumberOfElements() ; ionloss = 0.0 ; ionloss125 = 0.0 ; @@ -899,10 +950,10 @@ G4double G4hLowEnergyIonisation::GetParametrisedLoss(G4Material* material, if( iz <= 0 ) iz = 1 ; if( iz > 92 ) iz = 92 ; - // Electronic Stopping Power - // Choose the parametrisation using the table name + // Electronic Stopping Power + // Choose the parametrisation using the table name - // The "Ziegler1977H" table + // The "Ziegler1977H" table if(DEDXtable == "Ziegler1977H") { ion = GetStoppingPower1977H(iz, KinEnergy) ; ion *= theAtomicNumDensityVector[iel]*ZieglerFactor ; @@ -913,11 +964,11 @@ G4double G4hLowEnergyIonisation::GetParametrisedLoss(G4Material* material, ion125 *= theAtomicNumDensityVector[iel]*ZieglerFactor ; } - // The "Ziegler1977He" table + // The "Ziegler1977He" table } else if(DEDXtable == "Ziegler1977He") { G4double HeKinEnergy = KinEnergy*HeMassAMU/ProtonMassAMU ; ion = GetStoppingPower1977He(iz, HeKinEnergy) / - GetHeEffChargeSquare(iz, HeKinEnergy) ; + GetHeEffChargeSquare(iz, HeKinEnergy) ; ion *= theAtomicNumDensityVector[iel]*ZieglerFactor ; // Chemical factor calculation @@ -926,7 +977,7 @@ G4double G4hLowEnergyIonisation::GetParametrisedLoss(G4Material* material, ion125 *= theAtomicNumDensityVector[iel]*ZieglerFactor ; } - // The "ICRU_R49p" table + // The "ICRU_R49p" table } else if(DEDXtable == "ICRU_R49p") { ion = GetStoppingPowerICRU_R49p(iz, KinEnergy, "Ele") ; ion *= theAtomicNumDensityVector[iel]*ZieglerFactor ; @@ -937,11 +988,11 @@ G4double G4hLowEnergyIonisation::GetParametrisedLoss(G4Material* material, ion125 *= theAtomicNumDensityVector[iel]*ZieglerFactor ; } - // The "ICRU_R49He" table + // The "ICRU_R49He" table } else if(DEDXtable == "ICRU_R49He") { G4double HeKinEnergy = KinEnergy*HeMassAMU/ProtonMassAMU ; ion = GetStoppingPowerICRU_R49He(iz, HeKinEnergy) / - GetHeEffChargeSquare(iz, HeKinEnergy) ; + GetHeEffChargeSquare(iz, HeKinEnergy) ; ion *= theAtomicNumDensityVector[iel]*ZieglerFactor ; // Chemical factor calculation @@ -950,7 +1001,7 @@ G4double G4hLowEnergyIonisation::GetParametrisedLoss(G4Material* material, ion125 *= theAtomicNumDensityVector[iel]*ZieglerFactor ; } - // The G4 beta version model + // The G4 beta version model } else if(DEDXtable == "UrbanModel") { ion = theAtomicNumDensityVector[iel]*GetUrbanModel(element, KinEnergy) ; @@ -982,7 +1033,7 @@ G4double G4hLowEnergyIonisation::GetParametrisedLoss(G4Material* material, // Correction term for the Barkas effect applied if pbarStop = true // and only for negative charged particles // Barkas term is taken into account in Ziegler/ICRU tables, - // so for antiprotons a correction term must be multiplied by factor 2 + // so for antiprotons a correction term must be multiplied by factor (-2) if( (-0.5 > Charge) && pbarStop) { ionloss += ComputeBarkasTerm( material, KinEnergy ) * (Charge - 1.0) ; @@ -1017,26 +1068,27 @@ G4double G4hLowEnergyIonisation::GetNuclearDEDX(G4Material* material, // loop for the elements in the material for (G4int iel=0; ielGetZ() ; - G4double A2 = element->GetA()*mole/g ; - G4int iz = int(Z2) ; - if( iz <= 0 ) iz = 1 ; - if( iz > 92 ) iz = 92 ; - // Choose the parametrisation using the table name + const G4Element* element = (*theElementVector)(iel) ; + G4double Z1 = abs(Charge) ; + G4double Z2 = element->GetZ() ; + G4double A2 = element->GetA()*mole/g ; + G4int iz = G4int(Z2) ; + if( iz <= 0 ) iz = 1 ; + if( iz > 92 ) iz = 92 ; + // Choose the parametrisation using the table name - // The "Ziegler1977H" table - if(DEDXtable == "Ziegler1977H") { - ionloss = GetStoppingPower1977n(Charge, Z2, A1, A2, KinEnergy) - * theAtomicNumDensityVector[iel]*ZieglerFactor ; + // The "Ziegler1977H" table + if(DEDXtable == "Ziegler1977H") { + ionloss = GetStoppingPower1977n(Z1, Z2, A1, A2, KinEnergy) + * theAtomicNumDensityVector[iel]*ZieglerFactor ; - // The "ICRU_R49p" table + // The "ICRU_R49p" table // } else if(DEDXtable == "ICRU_R49p") { - } else { - ionloss = GetStoppingPowerMoliere(Charge, Z2, A1, A2, KinEnergy) - * theAtomicNumDensityVector[iel]*ZieglerFactor ; - } + } else { + ionloss = GetStoppingPowerMoliere(Z1, Z2, A1, A2, KinEnergy) + * theAtomicNumDensityVector[iel]*ZieglerFactor ; } + } return ionloss; } @@ -1051,21 +1103,19 @@ G4double G4hLowEnergyIonisation::ComputeBarkasTerm(const G4Material* material, const G4double KinEnergy) { - static double FTable[47][2]={ 0.02,21.5, 0.03,20.0, 0.04,18.0, 0.05,15.6, - 0.06,15.0, 0.07,14.0, 0.08,13.5, 0.09,13, - 0.1,12.2, 0.2, 9.25, 0.3, 7.0, 0.4, 6.0, 0.5, 4.5, - 0.6, 3.5, 0.7, 3.0, 0.8, 2.5, 0.9, 2.0, - 1.0, 1.7, 1.2, 1.2, 1.3, 1.0, 1.4, 0.86, 1.5, 0.7, - 1.6, 0.61, 1.7, 0.52, 1.8, 0.5, 1.9, 0.43, - 2.0, 0.42, 2.1, 0.3, 2.4, 0.2, - 3.0, 0.13, 3.08, 0.1, 3.1, 0.09, 3.3, 0.08, - 3.5, 0.07, 3.8, 0.06, - 4.0, 0.051, 4.1, 0.04, 4.8, 0.03, - 5.0, 0.024, 5.1, 0.02, - 6.0, 0.013, 6.5, 0.01, - 7.0, 0.009, 7.1, 0.008, - 8.0, 0.006, 9.0, 0.0032, - 10.0, 0.0025}; + static double FTable[47][2] = { + 0.02, 21.5, 0.03, 20.0, 0.04, 18.0, 0.05, 15.6, + 0.06, 15.0, 0.07, 14.0, 0.08, 13.5, 0.09, 13, + 0.1, 12.2, 0.2, 9.25, 0.3, 7.0, 0.4, 6.0, + 0.5, 4.5, 0.6, 3.5, 0.7, 3.0, 0.8, 2.5, + 0.9, 2.0, 1.0, 1.7, 1.2, 1.2, 1.3, 1.0, + 1.4, 0.86, 1.5, 0.7, 1.6, 0.61, 1.7, 0.52, + 1.8, 0.5, 1.9, 0.43, 2.0, 0.42, 2.1, 0.3, + 2.4, 0.2, 3.0, 0.13, 3.08, 0.1, 3.1, 0.09, + 3.3, 0.08, 3.5, 0.07, 3.8, 0.06, 4.0, 0.051, + 4.1, 0.04, 4.8, 0.03, 5.0, 0.024, 5.1, 0.02, + 6.0, 0.013, 6.5, 0.01, 7.0, 0.009, 7.1, 0.008, + 8.0, 0.006, 9.0, 0.0032, 10.0, 0.0025 }; // Internal variable for Kinetic Energy // in order to keep Barkas correction to be constant below 500 keV @@ -1075,9 +1125,9 @@ G4double G4hLowEnergyIonisation::ComputeBarkasTerm(const G4Material* material, // Information on particle and material - G4double BarkasTerm=0.0; - G4double AMaterial=0.0; - G4double ZMaterial=0.0; + G4double BarkasTerm = 0.0; + G4double AMaterial = 0.0; + G4double ZMaterial = 0.0; G4double RoMaterial = material->GetDensity()/6.2415063631e18; const G4ElementVector* theElementVector = material->GetElementVector(); G4int i=0; @@ -1094,28 +1144,40 @@ G4double G4hLowEnergyIonisation::ComputeBarkasTerm(const G4Material* material, G4double EtaChi = Eta0Chi * ( 1.0 + 6.02*pow( ZMaterial,-1.19 ) ); G4double W = ( EtaChi * pow( ZMaterial,1.0/6.0 ) ) / sqrt(X); G4double FunctionOfW = 0.0; + for(int IndexOfFTable=0; IndexOfFTable<47; IndexOfFTable++) { + if(WGetTotNbOfAtomsPerVolume(); - const G4int NumberOfElements = material->GetNumberOfElements() ; + G4double NbOfAtomsPerVolume = material->GetTotNbOfAtomsPerVolume(); + const G4int NumberOfElements = material->GetNumberOfElements() ; - G4double A1 = ProtonMassAMU ; - G4double ionloss, ion ; + G4double ionloss = 0.0 ; - if(DEDXtable == "ICRU_R49p") { - ionloss = GetStoppingPowerICRU_R49p(molecIndex, KinEnergy, "Mol") ; + if(DEDXtable == "ICRU_R49p") { + ionloss = GetStoppingPowerICRU_R49p(molecIndex, KinEnergy, "Mol") ; - } else if(DEDXtable == "ICRU_R49PowersHe") { - G4double HeKinEnergy = KinEnergy*HeMassAMU/ProtonMassAMU ; - ionloss = GetStoppingPowerICRU_R49PowersHe(molecIndex, HeKinEnergy) - / GetIonEffChargeSquare(material, HeKinEnergy, 2.0); - } - - ionloss *= NbOfAtomsPerVolume*ZieglerFactor ; - - ion = 0.0; - G4int nAtoms = 0; - - const G4int* theAtomsVector= - material->GetAtomsVector() ; - const G4ElementVector* theElementVector= - material->GetElementVector() ; - - // to calculate nuclear stopping power - // loop for the elements in the material - - for (G4int iel=0; ielGetAtomicNumDensityVector() ; - - for (G4int iel=0; ielGetZ() ; - G4double A2 = element->GetA()*mole/g ; - G4int iz = int(Z2) ; - if( iz <= 0 ) iz = 1 ; - if( iz > 92 ) iz = 92 ; - - // use Moliere - - G4double ionn = GetStoppingPowerMoliere(1.0, Z2, A1, A2, KinEnergy) ; - ion += ionn*theAtomicNumDensityVector[iel]*ZieglerFactor ; - } - ionloss += ion ; - } - // Correction due to delta-electrons energy loss Bethe-Bloch - // formula is used. - ionloss -= GetDeltaRaysEnergy(material, KinEnergy, DeltaRayCutNow) ; - - if ( ionloss <= 0.) ionloss = 0. ; - return ionloss; + } else if(DEDXtable == "ICRU_R49PowersHe") { + G4double HeKinEnergy = KinEnergy*HeMassAMU/ProtonMassAMU ; + ionloss = GetStoppingPowerICRU_R49PowersHe(molecIndex, HeKinEnergy) + / GetIonEffChargeSquare(material, HeKinEnergy, 2.0); } + ionloss *= NbOfAtomsPerVolume*ZieglerFactor ; + + G4int nAtoms = 0; + + const G4int* theAtomsVector = material->GetAtomsVector() ; + const G4double* theAtomicNumDensityVector = material->GetAtomicNumDensityVector() ; + + // const G4ElementVector* theElementVector= + // material->GetElementVector() ; + + for (G4int iel=0; ielGetElementVector() ; - const G4double* theAtomicNumDensityVector= - material->GetAtomicNumDensityVector() ; - const G4int NumberOfElements= - material->GetNumberOfElements() ; + const G4ElementVector* theElementVector = material->GetElementVector() ; + const G4double* theAtomicNumDensityVector = material->GetAtomicNumDensityVector() ; + const G4int NumberOfElements = material->GetNumberOfElements() ; ionloss = 0. ; @@ -1233,16 +1265,18 @@ G4double G4hLowEnergyIonisation::GetBetheBlochLoss(const G4Material* material, G4double X0den = material->GetIonisation()->GetX0density(); G4double X1den = material->GetIonisation()->GetX1density(); G4double* ShellCorrectionVector; - ShellCorrectionVector = material->GetIonisation()-> - GetShellCorrectionVector(); + ShellCorrectionVector = material->GetIonisation()->GetShellCorrectionVector(); gamma = tau + 1.0 ; bg2 = tau*(tau+2.0) ; beta2 = bg2/(gamma*gamma) ; Tmax = 2.*electron_mass_c2*bg2/(1.+2.*gamma*RateMass+RateMass*RateMass) ; - if ( DeltaRayCutNow < Tmax) - rcut = DeltaRayCutNow/Tmax ; + // Validity range for delta electron cross section + G4double DeltaCut = G4std::max(DeltaRayCutNow, Eexc); + + if ( DeltaCut < Tmax) + rcut = DeltaCut/Tmax ; else rcut = 1.; @@ -1311,20 +1345,27 @@ G4double G4hLowEnergyIonisation::GetDeltaRaysEnergy(const G4Material* material, gamma = tau + 1.0 ; bg2 = tau*(tau+2.0) ; - beta2 = bg2/(gamma*gamma) ; - Tmax = 2.*electron_mass_c2*bg2/(1.+2.*gamma*RateMass+RateMass*RateMass) ; + beta2 = bg2/(gamma*gamma) ; + Tmax = 2.*electron_mass_c2*bg2/(1.+2.*gamma*RateMass+RateMass*RateMass) ; + + G4double Eexc = material->GetIonisation()->GetMeanExcitationEnergy(); + G4double Eexc2 = Eexc*Eexc ; + + // Validity range for delta electron cross section + G4double DeltaCut = G4std::max(DeltaRayCutNow, Eexc); + - if ( DeltaRayCutNow < Tmax) { - x = DeltaRayCutNow / Tmax ; - ionloss = ( beta2 * (x - 1.0) - log(x) ) * Factor * ElectronDensity / beta2 ; - } - return ionloss ; + if ( DeltaCut < Tmax) { + x = DeltaCut / Tmax ; + ionloss = ( beta2 * (x - 1.0) - log(x) ) * Factor * ElectronDensity / beta2 ; + } + return ionloss ; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... G4double G4hLowEnergyIonisation::GetUrbanModel(const G4Element* element, - G4double KinEnergy) + G4double KinEnergy) { // Parametrisation of low energy protons energy loss by L.Urban // for the class G4hIonisation for the G4 beta version @@ -1392,12 +1433,12 @@ G4int G4hLowEnergyIonisation::MolecIsInICRU_R49PowersHe(const G4Material* const size_t NumberOfMolecula = 30 ; static G4String Name[NumberOfMolecula] = { - "H_2", "Be", "C", "Graphite", "N_2", - "O_2", "Al", "Si", "Ar", "Cu", - "Ge", "W", "Au", "Pb", "C_2H_2", - "CO_2", "Cellulose-Nitrat", "C_2H_4", "LiF", - "CH_4", "Nylon", "Polycarbonate", "(CH_2)_N-Polyetilene", "PMMA", - "C_8H_8)_N", "SiO_2", "CsI", "H_2O", "H_2O-Gas"} ; + "H_2", "Be", "C", "Graphite", "N_2", + "O_2", "Al", "Si", "Ar", "Cu", + "Ge", "W", "Au", "Pb", "C_2H_2", + "CO_2", "Cellulose-Nitrat", "C_2H_4", "LiF", + "CH_4", "Nylon", "Polycarbonate", "(CH_2)_N-Polyetilene", "PMMA", + "C_8H_8)_N", "SiO_2", "CsI", "H_2O", "H_2O-Gas"} ; G4String chFormula = material->GetChemicalFormula() ; G4int iMol; @@ -1882,7 +1923,7 @@ G4double G4hLowEnergyIonisation::GetStoppingPower1977He(G4int iz, G4double KinEn if ( E < 1.0 ) { G4double Slow = A[i][0] ; G4double Shigh = log( 1.0 + A[i][3]*1000.0 + A[i][4]*0.001 ) - * A[i][2]*1000.0 ; + * A[i][2]*1000.0 ; ionloss = Slow*Shigh / (Slow + Shigh) ; ionloss *= sqrt(E) ; @@ -1921,7 +1962,7 @@ G4double G4hLowEnergyIonisation::GetStoppingPowerICRU_R49PowersHe(G4int iz, G4do G4double KinE = KinEnergy/keV ; // energy in keV static G4double A[30][7] = { - 8.0080, 3.6287, 23.0700, 14.9900, 0.8507, 0.60, 2.0 + 8.0080, 3.6287, 23.0700, 14.9900, 0.8507, 0.60, 2.0 , 13.3100, 3.7432, 39.4130, 12.1990, 1.0950, 0.38, 1.4 , 22.7240, 3.6040, 47.1810, 17.5490, 0.9040, 0.40, 1.4 , 24.4040, 2.4032, 48.9440, 27.9730, 1.2933, 0.40, 1.6 @@ -1981,7 +2022,7 @@ G4double G4hLowEnergyIonisation::GetStoppingPowerICRU_R49He(G4int iz, G4double K G4double KinE = KinEnergy/MeV ; // energy in MeV static G4double A[92][5] = { - 0.35485, 0.6456, 6.01525, 20.8933, 4.3515 + 0.35485, 0.6456, 6.01525, 20.8933, 4.3515 , 0.58, 0.59, 6.3, 130.0, 44.07 , 1.42, 0.49, 12.25, 32.0, 9.161 , 2.1895, 0.47183,7.2362, 134.30, 197.96 @@ -2075,10 +2116,10 @@ G4double G4hLowEnergyIonisation::GetStoppingPowerICRU_R49He(G4int iz, G4double K , 5.218, 0.5828, 245.0, 3.838, 1.25 }; - if ( KinE < 0.001 ) { + if ( KinE < 0.001 ) { G4double Slow = A[i][0] ; G4double Shigh = log( 1.0 + A[i][3]*1000.0 + A[i][4]*0.001 ) - * A[i][2]*1000.0 ; + * A[i][2]*1000.0 ; ionloss = Slow*Shigh / (Slow + Shigh) ; ionloss *= sqrt(KinE*1000.0) ; @@ -2339,45 +2380,45 @@ G4double G4hLowEnergyIonisation::MolecIsInZiegler1988(const G4Material* material } ; static G4double ExpStopping[NumberOfMolecula] = { - 66.1, 190.4, 258.7, 42.2, 141.5, - 210.9, 279.6, 198.8, 31.0, 267.5, - 122.8, 311.4, 260.3, 328.9, 391.3, - 206.6, 374.0, 422.0, 432.0, 398.0, - 554.0, 353.0, 326.0, 74.6, 220.5, - 197.4, 362.0, 170.0, 330.5, 211.3, - 262.3, 349.6, 51.3, 187.0, 236.9, - 121.9, 35.8, 247.0, 292.6, 268.0, - 262.3, 49.0, 398.9, 444.0, 22.91, - 68.0, 155.0, 84.0, 74.2, 254.7, - 306.8, 324.4, 420.0 + 66.1, 190.4, 258.7, 42.2, 141.5, + 210.9, 279.6, 198.8, 31.0, 267.5, + 122.8, 311.4, 260.3, 328.9, 391.3, + 206.6, 374.0, 422.0, 432.0, 398.0, + 554.0, 353.0, 326.0, 74.6, 220.5, + 197.4, 362.0, 170.0, 330.5, 211.3, + 262.3, 349.6, 51.3, 187.0, 236.9, + 121.9, 35.8, 247.0, 292.6, 268.0, + 262.3, 49.0, 398.9, 444.0, 22.91, + 68.0, 155.0, 84.0, 74.2, 254.7, + 306.8, 324.4, 420.0 } ; static G4double ExpCharge[NumberOfMolecula] = { - HeEff, HeEff, HeEff, 1.0, HeEff, - HeEff, HeEff, HeEff, 1.0, 1.0, + HeEff, HeEff, HeEff, 1.0, HeEff, + HeEff, HeEff, HeEff, 1.0, 1.0, 1.0, HeEff, HeEff, HeEff, HeEff, - HeEff, HeEff, HeEff, HeEff, HeEff, - HeEff, HeEff, HeEff, 1.0, HeEff, - HeEff, HeEff, HeEff, HeEff, HeEff, - HeEff, HeEff, 1.0, HeEff, HeEff, - HeEff, 1.0, HeEff, HeEff, HeEff, - HeEff, 1.0, HeEff, HeEff, 1.0, + HeEff, HeEff, HeEff, HeEff, HeEff, + HeEff, HeEff, HeEff, 1.0, HeEff, + HeEff, HeEff, HeEff, HeEff, HeEff, + HeEff, HeEff, 1.0, HeEff, HeEff, + HeEff, 1.0, HeEff, HeEff, HeEff, + HeEff, 1.0, HeEff, HeEff, 1.0, 1.0, 1.0, 1.0, 1.0, HeEff, - HeEff, HeEff, HeEff + HeEff, HeEff, HeEff } ; static G4double NumberOfAtomsPerMolecula[NumberOfMolecula] = { - 3.0, 7.0, 10.0, 4.0, 6.0, - 9.0, 12.0, 7.0, 4.0, 24.0, - 12.0, 14.0, 10.0, 13.0, 5.0, - 5.0, 14.0, 18.0, 17.0, 17.0, - 24.0, 15.0, 13.0, 9.0, 8.0, - 6.0, 14.0, 8.0, 8.0, 9.0, - 10.0, 15.0, 6.0, 7.0, 7.0, - 3.0, 5.0, 5.0, 5.0, 5.0, - 9.0, 3.0, 16.0, 14.0, 3.0, - 9.0, 16.0, 11.0, 9.0, 10.0, - 10.0, 9.0, 15.0 + 3.0, 7.0, 10.0, 4.0, 6.0, + 9.0, 12.0, 7.0, 4.0, 24.0, + 12.0, 14.0, 10.0, 13.0, 5.0, + 5.0, 14.0, 18.0, 17.0, 17.0, + 24.0, 15.0, 13.0, 9.0, 8.0, + 6.0, 14.0, 8.0, 8.0, 9.0, + 10.0, 15.0, 6.0, 7.0, 7.0, + 3.0, 5.0, 5.0, 5.0, 5.0, + 9.0, 3.0, 16.0, 14.0, 3.0, + 9.0, 16.0, 11.0, 9.0, 10.0, + 10.0, 9.0, 15.0 } ; // Search for the compaund in the table @@ -2385,9 +2426,9 @@ G4double G4hLowEnergyIonisation::MolecIsInZiegler1988(const G4Material* material { if(chFormula == Name[i]) { ExpStopPower125 = ExpStopping[i] * - (material-> GetTotNbOfAtomsPerVolume()) * - ZieglerFactor / - (ExpCharge[i] * NumberOfAtomsPerMolecula[i]) ; + (material-> GetTotNbOfAtomsPerVolume()) * + ZieglerFactor / + (ExpCharge[i] * NumberOfAtomsPerMolecula[i]) ; return ExpStopPower125 ; } } @@ -2413,8 +2454,8 @@ G4double G4hLowEnergyIonisation::GetChemicalFactor(const G4double ExpStopPower12 G4double beta125 = sqrt(1.0 - 1.0/(gamma125*gamma125)) ; G4double factor = 1.0 + (ExpStopPower125/BraggStopPower125 - 1.0) * - (1.0 + exp( 1.48 * ( beta125/beta25 - 7.0 ) ) ) / - (1.0 + exp( 1.48 * ( beta/beta25 - 7.0 ) ) ) ; + (1.0 + exp( 1.48 * ( beta125/beta25 - 7.0 ) ) ) / + (1.0 + exp( 1.48 * ( beta/beta25 - 7.0 ) ) ) ; return factor ; } @@ -2436,10 +2477,10 @@ G4double G4hLowEnergyIonisation::GetHeEffChargeSquare(const G4int iz, G4double E = log( G4std::max( 1.0, HeKinEnergy/(keV*HeMassAMU) ) ) ; G4double x = C[0] ; G4double y = 1.0 ; - for (G4int i=1; i<6; i++) { - y *= E ; - x += y * C[i] ; - } + for (G4int i=1; i<6; i++) { + y *= E ; + x += y * C[i] ; + } G4double z = 7.6 - E ; z = 1.0 + (0.007 + 0.00005*iz) * exp( -z*z ) ; @@ -2466,28 +2507,28 @@ G4double G4hLowEnergyIonisation::GetIonEffChargeSquare(const G4Material* aMateri (IonCharge < 1.5) ) return IonCharge*IonCharge ; static G4double VFermi[92] = { - 1.0309, 0.15976, 0.59782, 1.0781, 1.0486, 1.0, 1.058, 0.93942, 0.74562, 0.3424, - 0.45259, 0.71074, 0.90519, 0.97411, 0.97184, 0.89852, 0.70827, 0.39816, 0.36552, 0.62712, - 0.81707, 0.9943, 1.1423, 1.2381, 1.1222, 0.92705, 1.0047, 1.2, 1.0661, 0.97411, - 0.84912, 0.95, 1.0903, 1.0429, 0.49715, 0.37755, 0.35211, 0.57801, 0.77773, 1.0207, - 1.029, 1.2542, 1.122, 1.1241, 1.0882, 1.2709, 1.2542, 0.90094, 0.74093, 0.86054, - 0.93155, 1.0047, 0.55379, 0.43289, 0.32636, 0.5131, 0.695, 0.72591, 0.71202, 0.67413, - 0.71418, 0.71453, 0.5911, 0.70263, 0.68049, 0.68203, 0.68121, 0.68532, 0.68715, 0.61884, - 0.71801, 0.83048, 1.1222, 1.2381, 1.045, 1.0733, 1.0953, 1.2381, 1.2879, 0.78654, - 0.66401, 0.84912, 0.88433, 0.80746, 0.43357, 0.41923, 0.43638, 0.51464, 0.73087, 0.81065, - 1.9578, 1.0257} ; + 1.0309, 0.15976, 0.59782, 1.0781, 1.0486, 1.0, 1.058, 0.93942, 0.74562, 0.3424, + 0.45259, 0.71074, 0.90519, 0.97411, 0.97184, 0.89852, 0.70827, 0.39816, 0.36552, 0.62712, + 0.81707, 0.9943, 1.1423, 1.2381, 1.1222, 0.92705, 1.0047, 1.2, 1.0661, 0.97411, + 0.84912, 0.95, 1.0903, 1.0429, 0.49715, 0.37755, 0.35211, 0.57801, 0.77773, 1.0207, + 1.029, 1.2542, 1.122, 1.1241, 1.0882, 1.2709, 1.2542, 0.90094, 0.74093, 0.86054, + 0.93155, 1.0047, 0.55379, 0.43289, 0.32636, 0.5131, 0.695, 0.72591, 0.71202, 0.67413, + 0.71418, 0.71453, 0.5911, 0.70263, 0.68049, 0.68203, 0.68121, 0.68532, 0.68715, 0.61884, + 0.71801, 0.83048, 1.1222, 1.2381, 1.045, 1.0733, 1.0953, 1.2381, 1.2879, 0.78654, + 0.66401, 0.84912, 0.88433, 0.80746, 0.43357, 0.41923, 0.43638, 0.51464, 0.73087, 0.81065, + 1.9578, 1.0257} ; static G4double LFactor[92] = { - 1.0, 1.0, 1.1, 1.06, 1.01, 1.03, 1.04, 0.99, 0.95, 0.9, - 0.82, 0.81, 0.83, 0.88, 1.0, 0.95, 0.97, 0.99, 0.98, 0.97, - 0.98, 0.97, 0.96, 0.93, 0.91, 0.9, 0.88, 0.9, 0.9, 0.9, - 0.9, 0.85, 0.9, 0.9, 0.91, 0.92, 0.9, 0.9, 0.9, 0.9, - 0.9, 0.88, 0.9, 0.88, 0.88, 0.9, 0.9, 0.88, 0.9, 0.9, - 0.9, 0.9, 0.96, 1.2, 0.9, 0.88, 0.88, 0.85, 0.9, 0.9, - 0.92, 0.95, 0.99, 1.03, 1.05, 1.07, 1.08, 1.1, 1.08, 1.08, - 1.08, 1.08, 1.09, 1.09, 1.1, 1.11, 1.12, 1.13, 1.14, 1.15, - 1.17, 1.2, 1.18, 1.17, 1.17, 1.16, 1.16, 1.16, 1.16, 1.16, - 1.16, 1.16} ; + 1.0, 1.0, 1.1, 1.06, 1.01, 1.03, 1.04, 0.99, 0.95, 0.9, + 0.82, 0.81, 0.83, 0.88, 1.0, 0.95, 0.97, 0.99, 0.98, 0.97, + 0.98, 0.97, 0.96, 0.93, 0.91, 0.9, 0.88, 0.9, 0.9, 0.9, + 0.9, 0.85, 0.9, 0.9, 0.91, 0.92, 0.9, 0.9, 0.9, 0.9, + 0.9, 0.88, 0.9, 0.88, 0.88, 0.9, 0.9, 0.88, 0.9, 0.9, + 0.9, 0.9, 0.96, 1.2, 0.9, 0.88, 0.88, 0.85, 0.9, 0.9, + 0.92, 0.95, 0.99, 1.03, 1.05, 1.07, 1.08, 1.1, 1.08, 1.08, + 1.08, 1.08, 1.09, 1.09, 1.1, 1.11, 1.12, 1.13, 1.14, 1.15, + 1.17, 1.2, 1.18, 1.17, 1.17, 1.16, 1.16, 1.16, 1.16, 1.16, + 1.16, 1.16} ; static G4double C[6] = {0.2865, 0.1266, -0.001429, 0.02402,-0.01135, 0.001475} ; @@ -2536,15 +2577,15 @@ G4double G4hLowEnergyIonisation::GetIonEffChargeSquare(const G4Material* aMateri G4double E = log( G4std::max( 1.0, KinEnergy / (keV*HeMassAMU) ) ) ; G4double x = C[0] ; G4double y = 1.0 ; - for (G4int i=1; i<6; i++) { - y *= E ; - x += y * C[i] ; - } + for (G4int i=1; i<6; i++) { + y *= E ; + x += y * C[i] ; + } Q = 7.6 - E ; Q = 1.0 + ( 0.007 + 0.00005 * Z ) * exp( -Q*Q ) ; return 4.0 * Q * Q * (1.0 - exp(-x)) ; - // Heavy ion case + // Heavy ion case } else { // v1 is ion velocity in vF unit @@ -2556,7 +2597,7 @@ G4double G4hLowEnergyIonisation::GetIonEffChargeSquare(const G4Material* aMateri if ( v1 > 1.0 ) { y = vF * v1 * ( 1.0 + 0.2 / (v1*v1) ) / (Z13*Z13) ; - // Slower than Fermi velocity + // 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) ; } @@ -2574,7 +2615,7 @@ G4double G4hLowEnergyIonisation::GetIonEffChargeSquare(const G4Material* aMateri G4double Lambda = 10.0 * vF * pow(1.0-q, 0.6667) / (Z13 * (6.0 + q)) ; G4double Qeff = IonCharge * Q * - ( q + 0.5*(1.0-q) * log(1.0 + Lambda*Lambda) / (vF*vF) ) ; + ( q + 0.5*(1.0-q) * log(1.0 + Lambda*Lambda) / (vF*vF) ) ; if( 1.0 > Qeff ) Qeff = 1.0 ; return Qeff*Qeff ; } @@ -2598,51 +2639,9 @@ void G4hLowEnergyIonisation::PrintInfoDefinition() << " to " << ParamHighEnergy / MeV << " MeV " << "." << G4endl ; if(pbarStop){ G4cout << " Parametrization of the Barkas effect is switched on." << G4endl ; + G4cout << " Quantal Harmonic Oscillator Model is switched on " << G4endl ; } if(nStopping) { G4cout << " Simulation of nuclear stopping is switched on." << G4endl ; } } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/source/processes/electromagnetic/standard/src/G4hEnergyLoss.cc b/source/processes/electromagnetic/lowenergy/src/G4hLowEnergyLoss.cc similarity index 88% rename from source/processes/electromagnetic/standard/src/G4hEnergyLoss.cc rename to source/processes/electromagnetic/lowenergy/src/G4hLowEnergyLoss.cc index c44a45edc9..d5f8a917ff 100644 --- a/source/processes/electromagnetic/standard/src/G4hEnergyLoss.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4hLowEnergyLoss.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4hEnergyLoss.cc,v 1.14.6.1.2.1 1999/12/10 15:42:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4hLowEnergyLoss.cc,v 1.1 2000/03/31 15:15:22 vnivanch Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // ----------------------------------------------------------- @@ -28,9 +28,10 @@ // 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 +// 31/03/00 : rename to lowenergy subdirectory as G4hLowEnergyLoss.cc V.Ivanchenko // -------------------------------------------------------------- -#include "G4hEnergyLoss.hh" +#include "G4hLowEnergyLoss.hh" #include "G4EnergyLossTables.hh" #include "G4Poisson.hh" @@ -42,82 +43,82 @@ // 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 G4hEnergyLoss.hh) +// functions Get/Set/Plus/MinusNumberOfProcesses (see G4hLowEnergyLoss.hh) -G4int G4hEnergyLoss::NumberOfProcesses = 1 ; +G4int G4hLowEnergyLoss::NumberOfProcesses = 1 ; -G4int G4hEnergyLoss::CounterOfProcess = 0 ; -G4PhysicsTable** G4hEnergyLoss::RecorderOfProcess = +G4int G4hLowEnergyLoss::CounterOfProcess = 0 ; +G4PhysicsTable** G4hLowEnergyLoss::RecorderOfProcess = new G4PhysicsTable*[10] ; -G4int G4hEnergyLoss::CounterOfpProcess = 0 ; -G4PhysicsTable** G4hEnergyLoss::RecorderOfpProcess = +G4int G4hLowEnergyLoss::CounterOfpProcess = 0 ; +G4PhysicsTable** G4hLowEnergyLoss::RecorderOfpProcess = new G4PhysicsTable*[10] ; -G4int G4hEnergyLoss::CounterOfpbarProcess = 0 ; -G4PhysicsTable** G4hEnergyLoss::RecorderOfpbarProcess = +G4int G4hLowEnergyLoss::CounterOfpbarProcess = 0 ; +G4PhysicsTable** G4hLowEnergyLoss::RecorderOfpbarProcess = new G4PhysicsTable*[10] ; -G4PhysicsTable* G4hEnergyLoss::theDEDXpTable = NULL ; -G4PhysicsTable* G4hEnergyLoss::theDEDXpbarTable = NULL ; -G4PhysicsTable* G4hEnergyLoss::theRangepTable = NULL ; -G4PhysicsTable* G4hEnergyLoss::theRangepbarTable = NULL ; -G4PhysicsTable* G4hEnergyLoss::theInverseRangepTable = NULL ; -G4PhysicsTable* G4hEnergyLoss::theInverseRangepbarTable = NULL ; -G4PhysicsTable* G4hEnergyLoss::theLabTimepTable = NULL ; -G4PhysicsTable* G4hEnergyLoss::theLabTimepbarTable = NULL ; -G4PhysicsTable* G4hEnergyLoss::theProperTimepTable = NULL ; -G4PhysicsTable* G4hEnergyLoss::theProperTimepbarTable = NULL ; +G4PhysicsTable* G4hLowEnergyLoss::theDEDXpTable = NULL ; +G4PhysicsTable* G4hLowEnergyLoss::theDEDXpbarTable = NULL ; +G4PhysicsTable* G4hLowEnergyLoss::theRangepTable = NULL ; +G4PhysicsTable* G4hLowEnergyLoss::theRangepbarTable = NULL ; +G4PhysicsTable* G4hLowEnergyLoss::theInverseRangepTable = NULL ; +G4PhysicsTable* G4hLowEnergyLoss::theInverseRangepbarTable = NULL ; +G4PhysicsTable* G4hLowEnergyLoss::theLabTimepTable = NULL ; +G4PhysicsTable* G4hLowEnergyLoss::theLabTimepbarTable = NULL ; +G4PhysicsTable* G4hLowEnergyLoss::theProperTimepTable = NULL ; +G4PhysicsTable* G4hLowEnergyLoss::theProperTimepbarTable = NULL ; -G4PhysicsTable* G4hEnergyLoss::thepRangeCoeffATable = NULL ; -G4PhysicsTable* G4hEnergyLoss::thepRangeCoeffBTable = NULL ; -G4PhysicsTable* G4hEnergyLoss::thepRangeCoeffCTable = NULL ; -G4PhysicsTable* G4hEnergyLoss::thepbarRangeCoeffATable = NULL ; -G4PhysicsTable* G4hEnergyLoss::thepbarRangeCoeffBTable = NULL ; -G4PhysicsTable* G4hEnergyLoss::thepbarRangeCoeffCTable = NULL ; +G4PhysicsTable* G4hLowEnergyLoss::thepRangeCoeffATable = NULL ; +G4PhysicsTable* G4hLowEnergyLoss::thepRangeCoeffBTable = NULL ; +G4PhysicsTable* G4hLowEnergyLoss::thepRangeCoeffCTable = NULL ; +G4PhysicsTable* G4hLowEnergyLoss::thepbarRangeCoeffATable = NULL ; +G4PhysicsTable* G4hLowEnergyLoss::thepbarRangeCoeffBTable = NULL ; +G4PhysicsTable* G4hLowEnergyLoss::thepbarRangeCoeffCTable = NULL ; -G4PhysicsTable* G4hEnergyLoss::theDEDXTable = NULL ; -G4PhysicsTable* G4hEnergyLoss::theRangeTable = NULL ; -G4PhysicsTable* G4hEnergyLoss::theInverseRangeTable = NULL ; -G4PhysicsTable* G4hEnergyLoss::theLabTimeTable = NULL ; -G4PhysicsTable* G4hEnergyLoss::theProperTimeTable = NULL ; +G4PhysicsTable* G4hLowEnergyLoss::theDEDXTable = NULL ; +G4PhysicsTable* G4hLowEnergyLoss::theRangeTable = NULL ; +G4PhysicsTable* G4hLowEnergyLoss::theInverseRangeTable = NULL ; +G4PhysicsTable* G4hLowEnergyLoss::theLabTimeTable = NULL ; +G4PhysicsTable* G4hLowEnergyLoss::theProperTimeTable = NULL ; -G4PhysicsTable* G4hEnergyLoss::theRangeCoeffATable = NULL ; -G4PhysicsTable* G4hEnergyLoss::theRangeCoeffBTable = NULL ; -G4PhysicsTable* G4hEnergyLoss::theRangeCoeffCTable = NULL ; +G4PhysicsTable* G4hLowEnergyLoss::theRangeCoeffATable = NULL ; +G4PhysicsTable* G4hLowEnergyLoss::theRangeCoeffBTable = NULL ; +G4PhysicsTable* G4hLowEnergyLoss::theRangeCoeffCTable = NULL ; -const G4Proton* G4hEnergyLoss::theProton=G4Proton::Proton() ; -const G4AntiProton* G4hEnergyLoss::theAntiProton=G4AntiProton::AntiProton() ; +const G4Proton* G4hLowEnergyLoss::theProton=G4Proton::Proton() ; +const G4AntiProton* G4hLowEnergyLoss::theAntiProton=G4AntiProton::AntiProton() ; -G4double G4hEnergyLoss::ParticleMass; -G4double G4hEnergyLoss::ptableElectronCutInRange = 0.0*mm ; -G4double G4hEnergyLoss::pbartableElectronCutInRange = 0.0*mm ; +G4double G4hLowEnergyLoss::ParticleMass; +G4double G4hLowEnergyLoss::ptableElectronCutInRange = 0.0*mm ; +G4double G4hLowEnergyLoss::pbartableElectronCutInRange = 0.0*mm ; -G4double G4hEnergyLoss::Mass, - G4hEnergyLoss::taulow, - G4hEnergyLoss::tauhigh, - G4hEnergyLoss::ltaulow, - G4hEnergyLoss::ltauhigh; +G4double G4hLowEnergyLoss::Mass, + G4hLowEnergyLoss::taulow, + G4hLowEnergyLoss::tauhigh, + G4hLowEnergyLoss::ltaulow, + G4hLowEnergyLoss::ltauhigh; -G4double G4hEnergyLoss::dRoverRange = 0.20 ; -G4double G4hEnergyLoss::finalRange = 200.*micrometer ; +G4double G4hLowEnergyLoss::dRoverRange = 0.20 ; +G4double G4hLowEnergyLoss::finalRange = 200.*micrometer ; -G4double G4hEnergyLoss::c1lim = dRoverRange ; -G4double G4hEnergyLoss::c2lim = 2.*(1.-dRoverRange)*finalRange ; -G4double G4hEnergyLoss::c3lim = -(1.-dRoverRange)*finalRange*finalRange; +G4double G4hLowEnergyLoss::c1lim = dRoverRange ; +G4double G4hLowEnergyLoss::c2lim = 2.*(1.-dRoverRange)*finalRange ; +G4double G4hLowEnergyLoss::c3lim = -(1.-dRoverRange)*finalRange*finalRange; -G4double G4hEnergyLoss::Charge ; +G4double G4hLowEnergyLoss::Charge ; -G4bool G4hEnergyLoss::rndmStepFlag = false ; -G4bool G4hEnergyLoss::EnlossFlucFlag = true ; +G4bool G4hLowEnergyLoss::rndmStepFlag = false ; +G4bool G4hLowEnergyLoss::EnlossFlucFlag = true ; -G4double G4hEnergyLoss::LowestKineticEnergy,G4hEnergyLoss::HighestKineticEnergy; -G4int G4hEnergyLoss::TotBin ; -G4double G4hEnergyLoss::RTable,G4hEnergyLoss::LOGRTable; +G4double G4hLowEnergyLoss::LowestKineticEnergy,G4hLowEnergyLoss::HighestKineticEnergy; +G4int G4hLowEnergyLoss::TotBin ; +G4double G4hLowEnergyLoss::RTable,G4hLowEnergyLoss::LOGRTable; // constructor and destructor -G4hEnergyLoss::G4hEnergyLoss(const G4String& processName) +G4hLowEnergyLoss::G4hLowEnergyLoss(const G4String& processName) : G4VContinuousDiscreteProcess (processName), theLossTable (NULL), MinKineticEnergy(1.*eV), @@ -130,7 +131,7 @@ G4hEnergyLoss::G4hEnergyLoss(const G4String& processName) nmaxCont2(16) { } -G4hEnergyLoss::~G4hEnergyLoss() +G4hLowEnergyLoss::~G4hLowEnergyLoss() { if(theLossTable) { theLossTable->clearAndDestroy(); @@ -138,7 +139,7 @@ G4hEnergyLoss::~G4hEnergyLoss() } } -void G4hEnergyLoss::BuildDEDXTable( +void G4hLowEnergyLoss::BuildDEDXTable( const G4ParticleDefinition& aParticleType) { // calculate data members TotBin,LOGRTable,RTable first @@ -285,7 +286,7 @@ void G4hEnergyLoss::BuildDEDXTable( } -void G4hEnergyLoss::BuildRangeTable( +void G4hLowEnergyLoss::BuildRangeTable( const G4ParticleDefinition& aParticleType) // Build range table from the energy loss table { @@ -324,7 +325,7 @@ void G4hEnergyLoss::BuildRangeTable( } } -void G4hEnergyLoss::BuildTimeTables( +void G4hLowEnergyLoss::BuildTimeTables( const G4ParticleDefinition& aParticleType) { const G4MaterialTable* theMaterialTable= @@ -380,7 +381,7 @@ void G4hEnergyLoss::BuildTimeTables( } } -void G4hEnergyLoss::BuildRangeVector(G4int materialIndex, +void G4hLowEnergyLoss::BuildRangeVector(G4int materialIndex, G4PhysicsLogVector* rangeVector) // create range vector for a material { @@ -458,7 +459,7 @@ void G4hEnergyLoss::BuildRangeVector(G4int materialIndex, } } -void G4hEnergyLoss::BuildLabTimeVector(G4int materialIndex, +void G4hLowEnergyLoss::BuildLabTimeVector(G4int materialIndex, G4PhysicsLogVector* timeVector) // create lab time vector for a material { @@ -518,7 +519,7 @@ void G4hEnergyLoss::BuildLabTimeVector(G4int materialIndex, } } -void G4hEnergyLoss::BuildProperTimeVector(G4int materialIndex, +void G4hLowEnergyLoss::BuildProperTimeVector(G4int materialIndex, G4PhysicsLogVector* timeVector) // create proper time vector for a material { @@ -577,7 +578,7 @@ void G4hEnergyLoss::BuildProperTimeVector(G4int materialIndex, } } -G4double G4hEnergyLoss::RangeIntLin(G4PhysicsVector* physicsVector, +G4double G4hLowEnergyLoss::RangeIntLin(G4PhysicsVector* physicsVector, G4int nbin) // num. integration, linear binning { @@ -607,7 +608,7 @@ G4double G4hEnergyLoss::RangeIntLin(G4PhysicsVector* physicsVector, } -G4double G4hEnergyLoss::RangeIntLog(G4PhysicsVector* physicsVector, +G4double G4hLowEnergyLoss::RangeIntLog(G4PhysicsVector* physicsVector, G4int nbin) // num. integration, logarithmic binning { @@ -638,7 +639,7 @@ G4double G4hEnergyLoss::RangeIntLog(G4PhysicsVector* physicsVector, return Value; } -G4double G4hEnergyLoss::LabTimeIntLog(G4PhysicsVector* physicsVector, +G4double G4hLowEnergyLoss::LabTimeIntLog(G4PhysicsVector* physicsVector, G4int nbin) // num. integration, logarithmic binning { @@ -669,7 +670,7 @@ G4double G4hEnergyLoss::LabTimeIntLog(G4PhysicsVector* physicsVector, return Value; } -G4double G4hEnergyLoss::ProperTimeIntLog(G4PhysicsVector* physicsVector, +G4double G4hLowEnergyLoss::ProperTimeIntLog(G4PhysicsVector* physicsVector, G4int nbin) // num. integration, logarithmic binning { @@ -700,7 +701,7 @@ G4double G4hEnergyLoss::ProperTimeIntLog(G4PhysicsVector* physicsVector, return Value; } -void G4hEnergyLoss::BuildRangeCoeffATable( +void G4hLowEnergyLoss::BuildRangeCoeffATable( const G4ParticleDefinition& aParticleType) // Build tables of coefficients for the energy loss calculation // create table for coefficients "A" @@ -772,7 +773,7 @@ void G4hEnergyLoss::BuildRangeCoeffATable( } -void G4hEnergyLoss::BuildRangeCoeffBTable( +void G4hLowEnergyLoss::BuildRangeCoeffBTable( const G4ParticleDefinition& aParticleType) // Build tables of coefficients for the energy loss calculation // create table for coefficients "B" @@ -842,7 +843,7 @@ void G4hEnergyLoss::BuildRangeCoeffBTable( } } -void G4hEnergyLoss::BuildRangeCoeffCTable( +void G4hLowEnergyLoss::BuildRangeCoeffCTable( const G4ParticleDefinition& aParticleType) // Build tables of coefficients for the energy loss calculation // create table for coefficients "C" @@ -912,7 +913,7 @@ void G4hEnergyLoss::BuildRangeCoeffCTable( } } -void G4hEnergyLoss::BuildInverseRangeTable( +void G4hLowEnergyLoss::BuildInverseRangeTable( const G4ParticleDefinition& aParticleType) // Build inverse table of the range table { @@ -966,7 +967,7 @@ void G4hEnergyLoss::BuildInverseRangeTable( } } -void G4hEnergyLoss::InvertRangeVector(G4int materialIndex, +void G4hLowEnergyLoss::InvertRangeVector(G4int materialIndex, G4PhysicsLogVector* aVector) // invert range vector for a material { @@ -1014,7 +1015,7 @@ void G4hEnergyLoss::InvertRangeVector(G4int materialIndex, } } -G4double G4hEnergyLoss::GetConstraints(const G4DynamicParticle *aParticle, +G4double G4hLowEnergyLoss::GetConstraints(const G4DynamicParticle *aParticle, G4Material *aMaterial) { // returns the Step limit @@ -1067,7 +1068,7 @@ G4double G4hEnergyLoss::GetConstraints(const G4DynamicParticle *aParticle, return StepLimit ; } -G4VParticleChange* G4hEnergyLoss::AlongStepDoIt( +G4VParticleChange* G4hLowEnergyLoss::AlongStepDoIt( const G4Track& trackData,const G4Step& stepData) // compute the energy loss after a step { @@ -1157,7 +1158,7 @@ G4VParticleChange* G4hEnergyLoss::AlongStepDoIt( } -G4double G4hEnergyLoss::GetLossWithFluct(const G4DynamicParticle* aParticle, +G4double G4hLowEnergyLoss::GetLossWithFluct(const G4DynamicParticle* aParticle, G4Material* aMaterial, G4double MeanLoss) // calculate actual loss from the mean loss diff --git a/source/processes/electromagnetic/muons/History b/source/processes/electromagnetic/muons/History new file mode 100644 index 0000000000..e6634f025c --- /dev/null +++ b/source/processes/electromagnetic/muons/History @@ -0,0 +1,55 @@ +$Id: History,v 1.2 2000/06/07 16:54:26 maire 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 * + ---------------------------------------------------------- + +07 jun 00: mma (muons-V01-01-03) +- virtual destructor for G4VEnergyLoss + +24 may 00: mma (muons-V01-01-02) +- revision of brems,pair,ionisation,munuclear + by Laszlo, Rotislav, Andrew + +27 apr 00 mma (em-V01-01-01) +- G4endl (dec/iso) + +26 apr 00 mma (em-V01-01-00) +- all EnergyLoss classes renamed G4V... + Most classes in standard and muons affected. +- G4Muls moved in utils +- bugs fixe in MuPairProduction +- cowork with geant4-01-01-ref-02 + +02 mar 00 mma (em-V01-00-00) +- new G4VEnergyLoss class and related structure +- cowork with geant4-01-00-ref-06 + +10 nov 99 mma (em-V00-01-03) +- migration to STL: remove RWT hash dictionnary + +14th June 1999 John Allison (em-01-00-05b) +- Muon corrections in G4MultipleScattering.cc, G4MuBremsstrahlung.cc + and G4MuPairProduction.cc by Laszlo Urban, Pedro Arce. + (Also in rocesses/photoleplon_hadron/src/G4MuNuclearInteraction.cc.) + +5th June 1999 John Allison +- standard/GNUmakefile: Force non-optimised compliation of some + files on HP with aCC: HP ANSI C++ B3910B A.01.15. + +May 29, 1999: John Allison +- Added electromagnetic/lowenergy to GNUmakefile and + electromagnetic/GNUmakefile.. diff --git a/source/processes/electromagnetic/muons/documents/dif_tab.dat b/source/processes/electromagnetic/muons/documents/dif_tab.dat new file mode 100644 index 0000000000..d13d161988 --- /dev/null +++ b/source/processes/electromagnetic/muons/documents/dif_tab.dat @@ -0,0 +1,54 @@ + No.events=1000000 + X=1000 g/cm2 Fe + T=100 GeV T=10000 GeV + bc b k n p b k n p + -.950 1015.9 155842.0 .0 80340.4 1018.8 165585.0 .0 281133.8 + -.850 1015.2 123833.1 .0 75005.4 1018.8 131898.4 .0 284400.3 + -.750 1014.3 98379.0 .0 68839.1 1018.8 105052.9 .0 285790.3 + -.650 1013.1 78139.7 1002.2 62042.4 1018.8 83661.7 1760.4 285381.4 + -.550 1011.6 62048.8 901.3 54844.3 1018.8 66618.6 1590.7 283275.9 + -.450 1009.8 49257.4 811.0 47492.3 1018.8 53041.3 1439.8 279594.9 + -.350 1007.5 39090.2 730.2 40236.1 1018.7 42226.3 1305.5 274473.0 + -.250 1004.7 31009.8 657.6 33308.3 1018.7 33612.7 1186.1 268052.0 + -.150 1001.1 24588.6 592.5 26906.0 1018.7 26753.0 1079.9 260475.6 + -.050 996.7 19486.5 534.1 21179.8 1018.7 21290.8 985.6 251883.9 + .050 991.2 15433.1 481.6 16229.7 1018.7 16941.9 901.9 242410.7 + .150 984.5 12213.2 434.6 12102.7 1018.6 13479.8 827.8 232180.2 + .250 976.1 9655.8 392.4 8790.1 1018.6 10723.9 762.4 221306.5 + .350 965.9 7624.9 354.5 6229.3 1018.6 8530.4 704.6 209892.6 + .450 953.5 6012.3 320.5 4317.9 1018.5 6784.8 653.6 198031.8 + .550 938.4 4732.2 289.7 2934.4 1018.4 5395.7 608.8 185808.4 + .650 920.3 3716.2 261.8 1959.1 1018.3 4290.5 569.3 173300.2 + .750 898.6 2910.0 236.4 1286.7 1018.2 3411.2 534.5 160580.9 + .850 873.0 2270.7 212.9 831.9 1018.1 2711.8 503.9 147723.5 + .950 843.0 1764.0 191.1 529.5 1017.9 2155.4 476.9 134803.8 + 1.050 808.1 1362.6 170.7 331.4 1017.6 1712.9 452.9 121905.0 + 1.150 768.2 1045.2 151.3 203.8 1017.3 1361.1 431.7 109121.5 + 1.250 723.1 794.6 132.7 123.0 1017.0 1081.3 412.7 96562.6 + 1.350 672.9 597.4 114.8 72.7 1016.5 858.8 395.6 84354.7 + 1.450 618.4 442.8 97.6 42.1 1015.9 682.0 380.1 72639.3 + 1.550 560.7 322.7 81.1 23.9 1015.1 541.4 366.0 61567.2 + 1.650 501.8 230.4 65.5 13.5 1014.2 429.7 352.9 51286.6 + 1.750 444.1 160.9 51.1 7.7 1013.0 340.9 340.7 41928.2 + 1.850 387.1 110.4 37.8 4.6 1011.5 270.4 329.1 33591.5 + 1.950 300.1 75.6 22.1 2.8 1009.6 214.3 318.0 26338.0 + 2.050 .0 .0 .0 .0 1007.3 169.8 307.3 20189.6 + 2.150 .0 .0 .0 .0 1004.3 134.4 296.6 15126.5 + 2.250 .0 .0 .0 .0 1000.6 106.3 286.0 11085.2 + 2.350 .0 .0 .0 .0 996.0 84.0 275.3 7959.3 + 2.450 .0 .0 .0 .0 990.3 66.3 264.3 5611.7 + 2.550 .0 .0 .0 .0 983.1 52.2 253.0 3893.8 + 2.650 .0 .0 .0 .0 974.1 41.1 241.2 2663.7 + 2.750 .0 .0 .0 .0 963.0 32.2 228.8 1798.5 + 2.850 .0 .0 .0 .0 949.4 25.2 215.7 1199.0 + 2.950 .0 .0 .0 .0 932.7 19.6 201.9 788.9 + 3.050 .0 .0 .0 .0 912.4 15.2 187.2 511.9 + 3.150 .0 .0 .0 .0 887.9 11.7 171.6 327.1 + 3.250 .0 .0 .0 .0 859.0 8.9 155.1 205.6 + 3.350 .0 .0 .0 .0 825.4 6.8 137.7 126.8 + 3.450 .0 .0 .0 .0 787.7 5.1 119.8 76.7 + 3.550 .0 .0 .0 .0 747.4 3.7 101.5 45.6 + 3.650 .0 .0 .0 .0 707.8 2.7 83.5 26.8 + 3.750 .0 .0 .0 .0 675.1 2.0 66.1 15.8 + 3.850 .0 .0 .0 .0 658.6 1.4 49.5 9.8 + 3.950 .0 .0 .0 .0 655.9 1.0 29.2 6.6 diff --git a/source/processes/electromagnetic/muons/documents/ion_comm.txt b/source/processes/electromagnetic/muons/documents/ion_comm.txt new file mode 100644 index 0000000000..3bea318ad2 --- /dev/null +++ b/source/processes/electromagnetic/muons/documents/ion_comm.txt @@ -0,0 +1,21 @@ +COMMENTS ON IONISATION AND KNOCK-ON ELECTRONS WITH +CORRECTION + +1) Let us introduce Tbound (? 100 KeV); below Tbound the correction to the +differential cross section is negligibly small. +2) There also exists Tmax (= function (E)) defined by kinematics. In this case, the +following possibilities appear: +3) Tmax < Tbound; usual BBS energy loss (and Bhabha cross section – for Tcut < +Tmax, with correction or without it, it does not play any substantial role) may be +used, as it was earlier. But it takes place only for rather low muon energies. +4) Tmax > Tbound, with three possibilities for Tcut: +5) Tcut < Tbound: restricted BBS energy loss (< Tcut), numerical calculation of the total +cross section with accurate formula and sampling with accurate formula are needed. +6) Tbound < Tcut < Tmax: for energy loss it is necessary to take “usual” restricted BBS +(< Tbound) plus “twice restricted” numerically integrated energy loss for the interval +(Tbound,Tcut), total cross section and sampling being similar to preceding point. +7) Tcut > Tmax: restricted BBS (< Tbound) plus twice restricted numerical (Tbound, +Tmax); discrete interactions are not simulated. + +RPK 10.05.2000 + diff --git a/source/processes/electromagnetic/muons/documents/mcs_qst.txt b/source/processes/electromagnetic/muons/documents/mcs_qst.txt new file mode 100644 index 0000000000..bd603d78c7 --- /dev/null +++ b/source/processes/electromagnetic/muons/documents/mcs_qst.txt @@ -0,0 +1,45 @@ +By R.P.Kokoulin, May 12th, 2000 + +Multiple Coulomb Scattering – some questions and problems + +Apart from the problems of creation and development of convenient +procedure for fast simulation of the effect, some principal questions are to be +answered (possibly, most of them have already been investigated) + +General + +Is it possible to use cross section formulae without magnetic formfactor and spin effects: + +a) for nucleus (probably yes); +b) for proton (possibly yes); +c) for electron (probably no). + +Should the scattering on the screened nucleus and on atomic electrons be considered +separately? (likely, they should; they probably can be combined later, but…) + +Scattering on the nucleus: + +a) influence of the choice of the elastic atomic formfactor (TF, HF, hydrogen-like, …); +there is a hope that the difference is small (with a proper choice of the parameters) but +it should be estimated; +b) influence of the nuclear size (it should influence RMS angle and distribution shape on +the tail); +c) influence of the choice of nuclear formfactor (exponential, Gaussian, Fermi model, +etc.); probably, it is small (only RMS nucleus radius is crucial) but it is better to +compare directly; +d) contribution of inelastic nucleus formfactor (incoherent scattering on protons of the +nucleus); +e) necessity of taking into account proton formfactor (for incoherent scattering); last two +points are expected to give small effect but need evaluation. + +Scattering on atomic electrons: + +a) introduction and influence of the choice of inelastic atomic formfactor (TH, +hydrogen-like exponential, what else?) – it should be evaluated; more simple +approaches, such as Z(Z+1) substitutions, seem to be incorrect; +b) problem of a double account for scattering on electrons if explicit simulation of the +elastic scattering of the projectile on electrons (possibly, above the cut Tcut) is +included (knock-on electron production with full kinematics) – the possible way is to +consider restricted multiple scattering (below Tcut). + + diff --git a/source/processes/electromagnetic/muons/documents/mcs_refs.txt b/source/processes/electromagnetic/muons/documents/mcs_refs.txt new file mode 100644 index 0000000000..deba603356 --- /dev/null +++ b/source/processes/electromagnetic/muons/documents/mcs_refs.txt @@ -0,0 +1,27 @@ +Some references concerning multiple scattering (May, 2000; RPK) + +1) S.Hayakawa. Cosmic Ray Physics. +2) S.Striganov. Nucl.Phys.B (Proc.Suppl.) 51A (1996) 172-178. +3) B.Rossi. High Energy Particles. +4) I.S.Baishev e.a. Sov.J.Nucl.Phys. 42 (1985) 745-749. +5) G.R.Lynch, O.I.Dahl. NIM B58 (1991) 6-10. +6) A.Van Ginneken. NIM A251 (1986) 21-39. +7) A.Van Ginneken. NIM A362 (1995) 213-223. +8) D.Liljequist. J.Appl.Phys. 62 (1987) 333-341. +9) D.Liljequist, M.Ismail. J.Appl.Phys. 62 (1987) 342-350. +10) D.Liljequist e.a. J.Appl.Phys. 68 (1990) 3061-3065. +11) G.Shen e.a. Phys.Rev.D 20 (1979) 1584-1588. +12) J.M.Fernandez-Varea e.a. NIM B73 (1993) 447-473. +13) P.Arce, M.Wadhwa. CMS Note 1999/000 (?). +14) L.Urban. G4 Phys.Ref.Manual (also G3toG4/quick overview and references). +15) G.Moliere. Z.Naturforsch. 2a (1947) 133-145. +16) G.Moliere. Z.Naturforsch. 3a (1948) 78-97. +17) H.A.Bethe. Phys.Rev. 89 (1953) 1256-1266. +18) W.T.Scott. Rev.Mod.Phys. 35 (1963) 231-313. +19) L.N.Cooper, J.Rainwater. Phys.Rev. 97 (1955) 492-504. +20) U.Fano. Phys.Rev. 93 (1954) 117-120. +21) H.W.Lewis. Phys.Rev. 78 (1950) 526-529. +22) S.Goudsmit, J.L.Sounderson. Phys.Rev. 57 (1940) 24-29. +23) S.Goudsmit, J.L.Sounderson. Phys.Rev. 58 (1940) 36-42. +24) Y.S.Tsai. Rev.Mod.Phys. 46 (1974) 815-851; ibid. 49 (1977) 421 - Errata. +25) L.V.Spencer, C.H.Blanchard. Phys.Rev. 93 (1954) 114-116. diff --git a/source/processes/electromagnetic/muons/documents/summary.txt b/source/processes/electromagnetic/muons/documents/summary.txt new file mode 100644 index 0000000000..190895631d --- /dev/null +++ b/source/processes/electromagnetic/muons/documents/summary.txt @@ -0,0 +1,47 @@ +Prepared by R.Kokoulin, May 22nd, 2000 + +Brief summary of G4 muon activity, May 2nd - May 23rd, 2000 +S.Kelner, R.Kokoulin, M.Maire, A.Rybin, L.Urban + +1. G4 muon tests +The test procedure of the verification of muon interaction simulation which allows to check +both mean free path calculation and energy transfer sampling has been suggested and +implemented. +First test results revealed appreciable deviations of the distributions of the energy loss from +theoretical dependencies (for bremsstrahlung, pair production, nuclear interaction). Several bugs +have been found and eliminated; it has greatly improved the agreement. +The program of further G4 muon tests has been prepared and agreed, including thin target +tests (extending the set of materials, energies, and increasing statistics), and thick target +simulation which will allow to verify the consistency of consideration of restricted continuous +energy loss. + +2. Refinement of the processes already implemented +Simple formulae and algorithm for sampling photon and muon angles in muon +bremsstrahlung have been suggested and prepared for implementation in G4. It will be coded in +the nearest days. +Final states for other processes (pair production, photonuclear interaction) have been +clarified, fixed and introduced into documentation. +Logical scheme of a consistent inclusion of bremsstrahlung correction in high-energy knock- +on electron production and ionisation energy loss is prepared. +List of questions concerning the validity of multiple scattering model has been compiled. +After answering these questions, the "calibration" simulation of MCS for high-energy muons can +be performed. + +3. Documentation +Sections concerning three basic muon interaction processes (bremsstrahlung, pair production, +photonuclear interaction) for PRM (Phys. Ref. Manual) have been extended, updated and +corrected. +Suggestions for improvements for the section in PRM about muon ionisation, and also +comments and corrections for "Electromagnetic Physics" gallery have been prepared. + +4. Extension of the muon interactions in G4 +List of muon processes for further inclusion in G4 has been discussed. The processes of +interest are: muon pair production by photon, muon pair production by muon, diffractive +bremsstrahlung (which leads to a difference in positive/negative muon energy loss). Refinement +of multiple scattering and introduction of the screening correction to bremsstrahlung and pair +production based on recent calculations of radiation logarithm in HF model are also important +and can improve the accuracy of G4-based simulations. The level of theoretical knowledge of +these processes is sufficient for their implementation into algorithms and codes. +Theoretical clarification of LPM and Coulomb corrections for electron pair production by +muons is needed; these are important both for accelerator and high-energy cosmic ray +applications. diff --git a/source/processes/electromagnetic/muons/documents/tasklist.txt b/source/processes/electromagnetic/muons/documents/tasklist.txt new file mode 100644 index 0000000000..daea702e7f --- /dev/null +++ b/source/processes/electromagnetic/muons/documents/tasklist.txt @@ -0,0 +1,36 @@ +List of problems with G4muons 15.05.00 + +(Rostislav, Andrew, Laszlo, Michel, Stas, …, May 15th – May 22nd ) + +1) Tests electromagnetic (conduction, search of the possible +sources of disagreement,…) +a) brems +b) pairs +c) knock-on + +2) Tests photonuclear + +3) Physics Reference Manual +Brems, pairs, photonuclear, ionisation +a) to agree +b) to correct +c) to verify +d) to commission + +4)”A Quick Overview” - corrections + +5) Summary Note on HE muons in G4 +a) to prepare draft +b) to discuss and to correct +c) to prepare the iteration (pre-final) + +6) Discussions: +a) final states in the above processes +b) multiple scattering – applicability for HE muons +c) muon pairs by photon +d) muon pairs by muon +e) diffractive bremsstrahlung +f) … + +7) Concluding remarks and summary + diff --git a/source/processes/electromagnetic/muons/documents/testlist.txt b/source/processes/electromagnetic/muons/documents/testlist.txt new file mode 100644 index 0000000000..d26e105d82 --- /dev/null +++ b/source/processes/electromagnetic/muons/documents/testlist.txt @@ -0,0 +1,47 @@ +List of tests of HE muon interactions in Geant4 +(By RPK 20-21.05.00) + +Thin target (to continue the works started): + +10 TeV, 100 cm iron, 10^5 muons, 4 processes: delta, brems, pairs, photonuclear + (to compare with the expectation: X*?(T,?)*?*N?*?lg*log10) + +Remaining problems found at the moment: + +1) Knock-on electron production for high-energy muons has to be modified (including +contribution from electron bremsstrahlung diagrams and radiative corrections); now it +is not implemented properly; +2) There is a hint for a peak near the edge of the distribution of energy lost by muon in +photonuclear interaction (similar to that which was found and eliminated earlier in the +bremsstrahlung); - problem has been solved! (L.U.,May 22nd) +3) It is not clear whether the energy lost by muon is equal to the energy transferred to +secondary particles (kinetic energy of delta-electron, total energy of electron and +positron in pair production, etc.). There is a hint that they are different. +4) With high statistics simulation, an error appears sometimes in +G4HEInelastic::GenerateNBodyEvent (total mass >= total energy). + +After the general agreement is reached, to extend these calculations (with additional +energy/material): + +Muon energies: 100 GeV and 10 TeV +Materials: iron (100 cm, or 787 g/cm^2) and carbon (graphite, 500 cm x 2.265 g/cm^3) + +Again, after the agreement is reached, to perform calculations for iron and carbon target +at 10 TeV energy with increased statistics (about 10^6 muons), to compare with +expectation (also in terms of the ratio "simulated/expected"), to prepare beautiful pictures +for inclusion in EM Physics gallery and other presentations. + +Thick target (distribution of the total energy lost by muon in bulk matter, including +continuous energy loss and all 4 discrete processes), 3 m iron, 1 TeV muon energy, +statistics about 10^5, then 10^6 muons: + +- histograms of the residual muon energy (in linear scale, 2 GeV bin) and of the energy +lost by muon (in log scale, 0.10 bin in common logarithm); comparison is possible +with Van Ginneken's TRAMU (the figure given by Particle Data Group) and with +Geant 3.21** (A.Rybin); also simulation with original Geant 3.21 is of interest - to +show, where it was wrong; +- cut variation: with cut = 1 - 100 MeV the distribution should be the same (in +particular, this is one of the tests of the consistency of continuous loss calculation); +- histograms of the scattering angle and lateral displacement (nothing to compare? may +be, Geant 3.21 ?). + diff --git a/source/processes/electromagnetic/muons/include/G4IMuBremsstrahlung.hh b/source/processes/electromagnetic/muons/include/G4IMuBremsstrahlung.hh index 0437fbb7f7..aad8f196c6 100644 --- a/source/processes/electromagnetic/muons/include/G4IMuBremsstrahlung.hh +++ b/source/processes/electromagnetic/muons/include/G4IMuBremsstrahlung.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IMuBremsstrahlung.hh,v 1.1.10.1 1999/12/07 20:50:39 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IMuBremsstrahlung.hh,v 1.3 2000/04/25 14:18:57 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------ // GEANT 4 class header file @@ -25,7 +25,7 @@ #include "G4ios.hh" #include "globals.hh" #include "Randomize.hh" -#include "G4IMuEnergyLoss.hh" +#include "G4VIMuEnergyLoss.hh" #include "G4Track.hh" #include "G4Step.hh" #include "G4Gamma.hh" @@ -35,7 +35,7 @@ #include "G4PhysicsTable.hh" #include "G4PhysicsLogVector.hh" -class G4IMuBremsstrahlung : public G4IMuEnergyLoss +class G4IMuBremsstrahlung : public G4VIMuEnergyLoss { public: diff --git a/source/processes/electromagnetic/muons/include/G4IMuBremsstrahlung.icc b/source/processes/electromagnetic/muons/include/G4IMuBremsstrahlung.icc index db7ddfeb6c..eca5bb609b 100644 --- a/source/processes/electromagnetic/muons/include/G4IMuBremsstrahlung.icc +++ b/source/processes/electromagnetic/muons/include/G4IMuBremsstrahlung.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IMuBremsstrahlung.icc,v 1.1.10.1.2.1 1999/12/08 17:34:18 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IMuBremsstrahlung.icc,v 1.2 1999/12/15 14:51:41 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // --------------------------------------------------------------- // GEANT 4 class inlined methods file diff --git a/source/processes/electromagnetic/muons/include/G4IMuIonisation.hh b/source/processes/electromagnetic/muons/include/G4IMuIonisation.hh index de38bbc90f..f25e1be19a 100644 --- a/source/processes/electromagnetic/muons/include/G4IMuIonisation.hh +++ b/source/processes/electromagnetic/muons/include/G4IMuIonisation.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IMuIonisation.hh,v 1.1.10.1 1999/12/07 20:50:42 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IMuIonisation.hh,v 1.3 2000/04/25 14:18:58 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------ @@ -32,7 +32,7 @@ #include "G4ios.hh" #include "globals.hh" #include "Randomize.hh" -#include "G4IMuEnergyLoss.hh" +#include "G4VIMuEnergyLoss.hh" #include "globals.hh" #include "G4Track.hh" #include "G4Step.hh" @@ -41,7 +41,7 @@ #include "G4PhysicsLinearVector.hh" -class G4IMuIonisation : public G4IMuEnergyLoss +class G4IMuIonisation : public G4VIMuEnergyLoss { public: diff --git a/source/processes/electromagnetic/muons/include/G4IMuIonisation.icc b/source/processes/electromagnetic/muons/include/G4IMuIonisation.icc index 6159b0c549..c6b5386def 100644 --- a/source/processes/electromagnetic/muons/include/G4IMuIonisation.icc +++ b/source/processes/electromagnetic/muons/include/G4IMuIonisation.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IMuIonisation.icc,v 1.1.10.1.2.1 1999/12/08 17:34:18 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IMuIonisation.icc,v 1.2 1999/12/15 14:51:42 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // --------------------------------------------------------------- diff --git a/source/processes/electromagnetic/muons/include/G4IMuPairProduction.hh b/source/processes/electromagnetic/muons/include/G4IMuPairProduction.hh index f5674bab41..2573821511 100644 --- a/source/processes/electromagnetic/muons/include/G4IMuPairProduction.hh +++ b/source/processes/electromagnetic/muons/include/G4IMuPairProduction.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IMuPairProduction.hh,v 1.1.10.1 1999/12/07 20:50:42 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IMuPairProduction.hh,v 1.3 2000/04/25 14:18:58 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // ------------------------------------------------------------ @@ -26,7 +26,7 @@ #include "G4ios.hh" #include "globals.hh" #include "Randomize.hh" -#include "G4IMuEnergyLoss.hh" +#include "G4VIMuEnergyLoss.hh" #include "G4Track.hh" #include "G4Step.hh" #include "G4Electron.hh" @@ -37,7 +37,7 @@ #include "G4PhysicsTable.hh" #include "G4PhysicsLogVector.hh" -class G4IMuPairProduction : public G4IMuEnergyLoss +class G4IMuPairProduction : public G4VIMuEnergyLoss { public: diff --git a/source/processes/electromagnetic/muons/include/G4IMuPairProduction.icc b/source/processes/electromagnetic/muons/include/G4IMuPairProduction.icc index 458d520508..fdf68ff3eb 100644 --- a/source/processes/electromagnetic/muons/include/G4IMuPairProduction.icc +++ b/source/processes/electromagnetic/muons/include/G4IMuPairProduction.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IMuPairProduction.icc,v 1.1.10.1.2.1 1999/12/08 17:34:18 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IMuPairProduction.icc,v 1.2 1999/12/15 14:51:42 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // --------------------------------------------------------------- diff --git a/source/processes/electromagnetic/muons/include/G4MuBremsstrahlung.hh b/source/processes/electromagnetic/muons/include/G4MuBremsstrahlung.hh index 66f840b596..538a8c5538 100644 --- a/source/processes/electromagnetic/muons/include/G4MuBremsstrahlung.hh +++ b/source/processes/electromagnetic/muons/include/G4MuBremsstrahlung.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MuBremsstrahlung.hh,v 1.2.8.1 1999/12/07 20:50:43 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MuBremsstrahlung.hh,v 1.8 2000/05/23 09:55:37 urban Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------ // GEANT 4 class header file @@ -18,6 +18,8 @@ // -------- G4MuBremsstrahlung physics process --------- // by Laszlo Urban, September 1997 // ************************************************************ +// 10/02/00 modifications , new e.m. structure, L.Urban +// #ifndef G4MuBremsstrahlung_h #define G4MuBremsstrahlung_h 1 @@ -25,14 +27,14 @@ #include "G4ios.hh" #include "globals.hh" #include "Randomize.hh" -#include "G4MuEnergyLoss.hh" +#include "G4VMuEnergyLoss.hh" #include "G4Track.hh" #include "G4Step.hh" #include "G4OrderedTable.hh" #include "G4PhysicsTable.hh" #include "G4PhysicsLogVector.hh" -class G4MuBremsstrahlung : public G4MuEnergyLoss +class G4MuBremsstrahlung : public G4VMuEnergyLoss { public: @@ -43,8 +45,6 @@ class G4MuBremsstrahlung : public G4MuEnergyLoss G4bool IsApplicable(const G4ParticleDefinition&); - void SetPhysicsTableBining(G4double lowE, G4double highE, G4int nBins); - void BuildPhysicsTable(const G4ParticleDefinition& ParticleType); void BuildLossTable(const G4ParticleDefinition& ParticleType); @@ -60,6 +60,13 @@ class G4MuBremsstrahlung : public G4MuEnergyLoss G4VParticleChange *PostStepDoIt(const G4Track& track, const G4Step& Step ) ; + G4double GetDMicroscopicCrossSection( + const G4ParticleDefinition* ParticleType, + G4double KineticEnergy, + G4double AtomicNumber, + G4double AtomicMass, + G4double GammaEnergy); + protected: G4double ComputeMeanFreePath( const G4ParticleDefinition* ParticleType, @@ -103,9 +110,11 @@ class G4MuBremsstrahlung : public G4MuEnergyLoss G4OrderedTable PartialSumSigma; - G4double LowestKineticEnergy; - G4double HighestKineticEnergy; - G4int TotBin; + static G4double LowerBoundLambda ; // bining for lambda table + static G4double UpperBoundLambda ; + static G4int NbinLambda ; + G4double LowestKineticEnergy,HighestKineticEnergy ; + G4int TotBin ; const G4double* GammaCutInKineticEnergy; @@ -114,8 +123,17 @@ class G4MuBremsstrahlung : public G4MuEnergyLoss // tables for sampling .............. static G4int nzdat,ntdat,NBIN ; static G4double zdat[5],adat[5],tdat[8] ; - static G4double ya[1000],proba[5][8][1000] ; + static G4double ya[1001],proba[5][8][1001] ; + static G4double CutFixed ; + 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;}; }; diff --git a/source/processes/electromagnetic/muons/include/G4MuBremsstrahlung.icc b/source/processes/electromagnetic/muons/include/G4MuBremsstrahlung.icc index c34081a765..5e68b378f0 100644 --- a/source/processes/electromagnetic/muons/include/G4MuBremsstrahlung.icc +++ b/source/processes/electromagnetic/muons/include/G4MuBremsstrahlung.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MuBremsstrahlung.icc,v 1.2.8.1 1999/12/07 20:50:43 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MuBremsstrahlung.icc,v 1.3 1999/12/15 14:51:42 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // --------------------------------------------------------------- // GEANT 4 class inlined methods file diff --git a/source/processes/electromagnetic/muons/include/G4MuIonisation.hh b/source/processes/electromagnetic/muons/include/G4MuIonisation.hh index f2c2c39c69..93d409f9df 100644 --- a/source/processes/electromagnetic/muons/include/G4MuIonisation.hh +++ b/source/processes/electromagnetic/muons/include/G4MuIonisation.hh @@ -5,9 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MuIonisation.hh,v 1.3.8.1 1999/12/07 20:50:43 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// +// $Id: G4MuIonisation.hh,v 1.8 2000/04/25 14:18:58 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // ------------------------------------------------------------ // GEANT 4 class header file @@ -24,6 +23,7 @@ // It calculates the ionisation for muons. // ************************************************************ // +// 10/02/00 modifications , new e.m. structure, L.Urban // ------------------------------------------------------------ #ifndef G4MuIonisation_h @@ -32,7 +32,7 @@ #include "G4ios.hh" #include "globals.hh" #include "Randomize.hh" -#include "G4MuEnergyLoss.hh" +#include "G4VMuEnergyLoss.hh" #include "globals.hh" #include "G4Track.hh" #include "G4Step.hh" @@ -40,7 +40,7 @@ #include "G4PhysicsLinearVector.hh" -class G4MuIonisation : public G4MuEnergyLoss +class G4MuIonisation : public G4VMuEnergyLoss { public: @@ -49,8 +49,6 @@ class G4MuIonisation : public G4MuEnergyLoss ~G4MuIonisation(); - void SetPhysicsTableBining(G4double lowE, G4double highE, G4int nBins); - G4bool IsApplicable(const G4ParticleDefinition&); void BuildPhysicsTable(const G4ParticleDefinition& aParticleType); @@ -93,13 +91,25 @@ class G4MuIonisation : public G4MuEnergyLoss G4PhysicsTable* theMeanFreePathTable; - G4double LowestKineticEnergy; - G4double HighestKineticEnergy; - G4int TotBin; + static G4double LowerBoundLambda ; // bining for lambda table + static G4double UpperBoundLambda ; + static G4int NbinLambda ; + G4double LowestKineticEnergy,HighestKineticEnergy ; + G4int TotBin ; const G4double* DeltaCutInKineticEnergy ; G4double DeltaCutInKineticEnergyNow ; + + 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;}; + }; #include "G4MuIonisation.icc" diff --git a/source/processes/electromagnetic/muons/include/G4MuIonisation.icc b/source/processes/electromagnetic/muons/include/G4MuIonisation.icc index 9b6ab5a33d..c23e5ec931 100644 --- a/source/processes/electromagnetic/muons/include/G4MuIonisation.icc +++ b/source/processes/electromagnetic/muons/include/G4MuIonisation.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MuIonisation.icc,v 1.1.10.1 1999/12/07 20:50:43 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MuIonisation.icc,v 1.2 1999/12/15 14:51:43 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // --------------------------------------------------------------- diff --git a/source/processes/electromagnetic/muons/include/G4MuPairProduction.hh b/source/processes/electromagnetic/muons/include/G4MuPairProduction.hh index 447f708a6a..cecc09598a 100644 --- a/source/processes/electromagnetic/muons/include/G4MuPairProduction.hh +++ b/source/processes/electromagnetic/muons/include/G4MuPairProduction.hh @@ -5,10 +5,9 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MuPairProduction.hh,v 1.2.8.1 1999/12/07 20:50:43 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MuPairProduction.hh,v 1.8 2000/05/23 16:03:25 urban Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -// $Id: // ------------------------------------------------------------ // GEANT 4 class header file // @@ -19,6 +18,8 @@ // -------- G4MuPairProduction physics process --------- // by Laszlo Urban, May 1998 // ************************************************************ +// 10/02/00 modifications , new e.m. structure, L.Urban +// #ifndef G4MuPairproduction_h #define G4MuPairproduction_h 1 @@ -26,14 +27,14 @@ #include "G4ios.hh" #include "globals.hh" #include "Randomize.hh" -#include "G4MuEnergyLoss.hh" +#include "G4VMuEnergyLoss.hh" #include "G4Track.hh" #include "G4Step.hh" #include "G4OrderedTable.hh" #include "G4PhysicsTable.hh" #include "G4PhysicsLogVector.hh" -class G4MuPairProduction : public G4MuEnergyLoss +class G4MuPairProduction : public G4VMuEnergyLoss { public: @@ -44,8 +45,6 @@ class G4MuPairProduction : public G4MuEnergyLoss G4bool IsApplicable(const G4ParticleDefinition&); - void SetPhysicsTableBining(G4double lowE,G4double highE,G4int nBins); - void BuildPhysicsTable(const G4ParticleDefinition& ParticleType); void BuildLossTable(const G4ParticleDefinition& ParticleType); @@ -61,6 +60,12 @@ class G4MuPairProduction : public G4MuEnergyLoss G4VParticleChange *PostStepDoIt(const G4Track& track, const G4Step& Step ) ; + G4double GetDMicroscopicCrossSection( + const G4ParticleDefinition* ParticleType, + G4double KineticEnergy, + G4double AtomicNumber, + G4double PairEnergy); + protected: G4double ComputeMeanFreePath(const G4ParticleDefinition* ParticleType, @@ -110,9 +115,11 @@ class G4MuPairProduction : public G4MuEnergyLoss G4OrderedTable PartialSumSigma; - G4double LowestKineticEnergy; - G4double 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; @@ -123,7 +130,17 @@ class G4MuPairProduction : public G4MuEnergyLoss // tables for sampling .............. static G4int nzdat,ntdat,NBIN ; static G4double zdat[5],tdat[8] ; - static G4double ya[1000],proba[5][8][1000] ; + 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;}; }; diff --git a/source/processes/electromagnetic/muons/include/G4MuPairProduction.icc b/source/processes/electromagnetic/muons/include/G4MuPairProduction.icc index 2a6a5ee94d..faba46f473 100644 --- a/source/processes/electromagnetic/muons/include/G4MuPairProduction.icc +++ b/source/processes/electromagnetic/muons/include/G4MuPairProduction.icc @@ -5,10 +5,9 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MuPairProduction.icc,v 1.1.10.1 1999/12/07 20:50:43 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MuPairProduction.icc,v 1.3 2000/02/10 08:29:13 urban Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -// $Id: // --------------------------------------------------------------- // GEANT 4 class inlined methods file // diff --git a/source/processes/electromagnetic/muons/include/G4IMuEnergyLoss.hh b/source/processes/electromagnetic/muons/include/G4VIMuEnergyLoss.hh similarity index 94% rename from source/processes/electromagnetic/muons/include/G4IMuEnergyLoss.hh rename to source/processes/electromagnetic/muons/include/G4VIMuEnergyLoss.hh index f53035ddde..48156d8b73 100644 --- a/source/processes/electromagnetic/muons/include/G4IMuEnergyLoss.hh +++ b/source/processes/electromagnetic/muons/include/G4VIMuEnergyLoss.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IMuEnergyLoss.hh,v 1.2.8.1.2.2 1999/12/14 07:08:19 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VIMuEnergyLoss.hh,v 1.2 2000/06/07 16:50:21 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // ------------------------------------------------------------------- @@ -16,7 +16,7 @@ // CERN, CN Division, ASD group // History: first implementation, based on object model of // 2nd December 1995, G.Cosmo -// ---------- G4IMuEnergyLoss physics process ----------- +// ---------- G4VIMuEnergyLoss physics process ----------- // by Laszlo Urban, September 1997 // ******************************************************************** // It is the implementation of the NEW UNIFIED ENERGY LOSS PROCESS. @@ -32,8 +32,8 @@ // some corrections by L.Urban on 27/05/98 , (but other corrections come soon!) // ------------------------------------------------------------ -#ifndef G4IMuEnergyLoss_h -#define G4IMuEnergyLoss_h 1 +#ifndef G4VIMuEnergyLoss_h +#define G4VIMuEnergyLoss_h 1 #include "G4ios.hh" #include "g4std/fstream" @@ -56,21 +56,21 @@ #include "G4PhysicsLinearVector.hh" -class G4IMuEnergyLoss : public G4IVContinuousDiscreteProcess +class G4VIMuEnergyLoss : public G4IVContinuousDiscreteProcess { public: - G4IMuEnergyLoss(const G4String& ); - G4IMuEnergyLoss(G4IMuEnergyLoss &); + G4VIMuEnergyLoss(const G4String& ); + G4VIMuEnergyLoss(G4VIMuEnergyLoss &); - ~G4IMuEnergyLoss(); + virtual ~G4VIMuEnergyLoss(); G4bool IsApplicable(const G4ParticleDefinition&); private: // hide assignment operator - G4IMuEnergyLoss & operator=(const G4IMuEnergyLoss &right); + G4VIMuEnergyLoss & operator=(const G4VIMuEnergyLoss &right); public: @@ -141,7 +141,7 @@ class G4IMuEnergyLoss : public G4IVContinuousDiscreteProcess static G4double CutInmupluslossTable; static G4double CutInmuminuslossTable; - // processes inherited from G4IMuEnergyLoss + // processes inherited from G4VIMuEnergyLoss // register themselves in the static array Recorder // nb of contributing processes = NUMBEROFPROCESSES static G4int NUMBEROFPROCESSES ; @@ -271,6 +271,6 @@ class G4IMuEnergyLoss : public G4IVContinuousDiscreteProcess }; -#include "G4IMuEnergyLoss.icc" +#include "G4VIMuEnergyLoss.icc" #endif diff --git a/source/processes/electromagnetic/muons/include/G4IMuEnergyLoss.icc b/source/processes/electromagnetic/muons/include/G4VIMuEnergyLoss.icc similarity index 92% rename from source/processes/electromagnetic/muons/include/G4IMuEnergyLoss.icc rename to source/processes/electromagnetic/muons/include/G4VIMuEnergyLoss.icc index 7ba6eacacb..9aa75c2aa7 100644 --- a/source/processes/electromagnetic/muons/include/G4IMuEnergyLoss.icc +++ b/source/processes/electromagnetic/muons/include/G4VIMuEnergyLoss.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IMuEnergyLoss.icc,v 1.1.10.1 1999/12/07 20:50:40 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VIMuEnergyLoss.icc,v 1.1 2000/04/25 14:18:59 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // --------------------------------------------------------------- @@ -16,7 +16,7 @@ // CERN, CN Division, ASD group // History: first implementation, based on object model of // 2nd December 1995, G.Cosmo -// ------------ G4IMuEnergyLoss physics process ------------ +// ------------ G4VIMuEnergyLoss physics process ------------ // by Laszlo Urban, September 1997 // *************************************************************** // It is the implementation of the NEW UNIFIED ENERGY LOSS PROCESS. @@ -26,7 +26,7 @@ // corrections by L. Urban on 27/05/98 ( other corrs come soon!) // --------------------------------------------------------------- -inline G4double G4IMuEnergyLoss::GetConstraints(const G4DynamicParticle *aParticle, +inline G4double G4VIMuEnergyLoss::GetConstraints(const G4DynamicParticle *aParticle, G4Material *aMaterial) { @@ -121,7 +121,7 @@ inline G4double G4IMuEnergyLoss::GetConstraints(const G4DynamicParticle *aPartic } -inline G4double G4IMuEnergyLoss::GetContinuousStepLimit( +inline G4double G4VIMuEnergyLoss::GetContinuousStepLimit( const G4Track& track, G4double, G4double currentMinimumStep, @@ -137,7 +137,7 @@ inline G4double G4IMuEnergyLoss::GetContinuousStepLimit( return Step ; } -inline G4bool G4IMuEnergyLoss::IsApplicable(const G4ParticleDefinition& +inline G4bool G4VIMuEnergyLoss::IsApplicable(const G4ParticleDefinition& particle) { return ( (&particle == (const G4ParticleDefinition *)theMuonPlus) diff --git a/source/processes/electromagnetic/muons/include/G4MuEnergyLoss.hh b/source/processes/electromagnetic/muons/include/G4VMuEnergyLoss.hh similarity index 53% rename from source/processes/electromagnetic/muons/include/G4MuEnergyLoss.hh rename to source/processes/electromagnetic/muons/include/G4VMuEnergyLoss.hh index 1d94b50521..040d0250ea 100644 --- a/source/processes/electromagnetic/muons/include/G4MuEnergyLoss.hh +++ b/source/processes/electromagnetic/muons/include/G4VMuEnergyLoss.hh @@ -5,10 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MuEnergyLoss.hh,v 1.3.8.1.2.2 1999/12/14 07:08:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// $Id: +// $Id: G4VMuEnergyLoss.hh,v 1.2 2000/06/07 16:50:21 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // ------------------------------------------------------------------- // GEANT 4 class header file // @@ -16,7 +14,7 @@ // CERN, CN Division, ASD group // History: first implementation, based on object model of // 2nd December 1995, G.Cosmo -// ---------- G4MuEnergyLoss physics process ----------- +// ---------- G4VMuEnergyLoss physics process ----------- // by Laszlo Urban, September 1997 // ******************************************************************** // It is the implementation of the NEW UNIFIED ENERGY LOSS PROCESS. @@ -31,17 +29,18 @@ // ************************************************************ // 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 // ------------------------------------------------------------ -#ifndef G4MuEnergyLoss_h -#define G4MuEnergyLoss_h 1 +#ifndef G4VMuEnergyLoss_h +#define G4VMuEnergyLoss_h 1 #include "G4ios.hh" #include "g4std/fstream" #include "g4std/iomanip" #include "globals.hh" #include "Randomize.hh" -#include "G4VContinuousDiscreteProcess.hh" +#include "G4VEnergyLoss.hh" #include "G4Material.hh" #include "G4Element.hh" #include "G4VParticleChange.hh" @@ -58,13 +57,14 @@ class G4EnergyLossMessenger ; -class G4MuEnergyLoss : public G4VContinuousDiscreteProcess +class G4VMuEnergyLoss : public G4VEnergyLoss { public: - G4MuEnergyLoss(const G4String& ); - ~G4MuEnergyLoss(); + G4VMuEnergyLoss(const G4String& ); + + virtual ~G4VMuEnergyLoss(); G4bool IsApplicable(const G4ParticleDefinition&); @@ -93,47 +93,12 @@ class G4MuEnergyLoss : public G4VContinuousDiscreteProcess private: // hide assignment operator - G4MuEnergyLoss(G4MuEnergyLoss &); - G4MuEnergyLoss & operator=(const G4MuEnergyLoss &right); - - 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); + G4VMuEnergyLoss(G4VMuEnergyLoss &); + G4VMuEnergyLoss & operator=(const G4VMuEnergyLoss &right); G4double GetConstraints(const G4DynamicParticle *aParticle, G4Material *aMaterial); - G4double GetLossWithFluct(const G4DynamicParticle *aParticle, - G4Material *aMaterial,G4double MeanLoss) ; - // ===================================================================== public: @@ -149,37 +114,17 @@ class G4MuEnergyLoss : public G4VContinuousDiscreteProcess const G4MuonPlus* theMuonPlus; const G4MuonMinus* theMuonMinus; - // particle mass - G4double ParticleMass; - - // LowestKineticEnergy = lower limit of particle kinetic energy - // HighestKineticEnergy = upper limit of particle kinetic energy - // TotBin = number of bins - // ---------in the energy loss/range tables------------------- - G4double LowestKineticEnergy; - G4double HighestKineticEnergy; - G4int TotBin;// number of bins in table, calculated in BuildPhysicsTable - // from LowestKineticEnergy,HighestKineticEnergy and - // dToverTini - G4double RTable,LOGRTable; // LOGRTable=log(HighestKineticEnergy - // /LowestKineticEnergy)/TotBin - // RTable = exp(LOGRTable) private: - G4PhysicsTable* theDEDXTable; - - G4PhysicsTable* theRangeTable; - G4PhysicsTable* theInverseRangeTable; - - G4PhysicsTable* theLabTimeTable; - G4PhysicsTable* theProperTimeTable; + G4PhysicsTable* theDEDXTable ; + G4PhysicsTable* theRangeTable ; + G4PhysicsTable* theRangeCoeffATable ; + G4PhysicsTable* theRangeCoeffBTable ; + G4PhysicsTable* theRangeCoeffCTable ; G4PhysicsTable** RecorderOfProcess; G4int CounterOfProcess; - G4PhysicsTable* theRangeCoeffATable; - G4PhysicsTable* theRangeCoeffBTable; - G4PhysicsTable* theRangeCoeffCTable; // fdEdx=(-dE/dx) // computed in GetConstraints at every call; @@ -194,30 +139,29 @@ class G4MuEnergyLoss : public G4VContinuousDiscreteProcess G4double RangeCoeffA,RangeCoeffB,RangeCoeffC ; - // variables for the integration routines - G4double taulow,tauhigh,ltaulow,ltauhigh; - - // data members to speed up the fluctuation calculation - G4int imat ; - G4Material *lastMaterial ; - G4double f1Fluct,f2Fluct,e1Fluct,e2Fluct,rateFluct,ipotFluct; - G4double e1LogFluct,e2LogFluct,ipotLogFluct; - const G4double MaxExcitationNumber ; - const G4double probLimFluct ; - const long nmaxDirectFluct,nmaxCont1,nmaxCont2 ; - // static part of the class - public: + public: // With description - static G4int GetNbOfProcesses() { return NbOfProcesses; }; - static void SetNbOfProcesses(G4int number){ NbOfProcesses=number ; }; - static void PlusNbOfProcesses() { NbOfProcesses++ ; }; - static void MinusNbOfProcesses() { NbOfProcesses-- ; }; + static void SetNbOfProcesses(G4int nb) {NbOfProcesses=nb;}; + // Sets number of processes giving contribution to the energy loss - 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;} + 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 = 3) + + 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: @@ -238,8 +182,7 @@ class G4MuEnergyLoss : public G4VContinuousDiscreteProcess // processes inherited from G4muEnergyLoss // register themselves in the static array Recorder - // nb of contributing processes = NbOfProcesses - static G4int NbOfProcesses ; + static G4int NbOfProcesses ; static G4PhysicsTable** RecorderOfmuplusProcess; static G4PhysicsTable** RecorderOfmuminusProcess; static G4int CounterOfmuplusProcess ; @@ -247,6 +190,13 @@ class G4MuEnergyLoss : public G4VContinuousDiscreteProcess private: + static G4int NbinEloss; // number of bins in table + static G4double LowerBoundEloss; + static G4double UpperBoundEloss; + static G4double RTable,LOGRTable; // LOGRTable=log(UpperBoundEloss- + // LowerBoundEloss)/NbinEloss + // RTable = exp(LOGRTable) + static G4PhysicsTable* themuplusRangeCoeffATable; static G4PhysicsTable* themuplusRangeCoeffBTable; static G4PhysicsTable* themuplusRangeCoeffCTable; @@ -254,17 +204,10 @@ class G4MuEnergyLoss : public G4VContinuousDiscreteProcess static G4PhysicsTable* themuminusRangeCoeffBTable; static G4PhysicsTable* themuminusRangeCoeffCTable; - static G4double dRoverRange; // dRoverRange is the maximum allowed - // deltarange/range in one Step - static G4double finalRange; // final step before stopping - - static G4bool rndmStepFlag; // control the randomization of the step - static G4bool EnlossFlucFlag; // control the energy loss fluctuation - static G4EnergyLossMessenger* eLossMessenger; }; -#include "G4MuEnergyLoss.icc" +#include "G4VMuEnergyLoss.icc" #endif diff --git a/source/processes/electromagnetic/muons/include/G4MuEnergyLoss.icc b/source/processes/electromagnetic/muons/include/G4VMuEnergyLoss.icc similarity index 81% rename from source/processes/electromagnetic/muons/include/G4MuEnergyLoss.icc rename to source/processes/electromagnetic/muons/include/G4VMuEnergyLoss.icc index d35a6f107e..ce8c766ac1 100644 --- a/source/processes/electromagnetic/muons/include/G4MuEnergyLoss.icc +++ b/source/processes/electromagnetic/muons/include/G4VMuEnergyLoss.icc @@ -5,10 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MuEnergyLoss.icc,v 1.1.10.1 1999/12/07 20:50:43 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// $Id: +// $Id: G4VMuEnergyLoss.icc,v 1.1 2000/04/25 14:18:59 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // --------------------------------------------------------------- // GEANT 4 class inlined methods file // @@ -16,18 +14,18 @@ // CERN, CN Division, ASD group // History: first implementation, based on object model of // 2nd December 1995, G.Cosmo -// ------------ G4MuEnergyLoss physics process ------------ +// ------------ G4VMuEnergyLoss 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 +// 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 // --------------------------------------------------------------- -inline G4double G4MuEnergyLoss::GetContinuousStepLimit( +inline G4double G4VMuEnergyLoss::GetContinuousStepLimit( const G4Track& track, G4double, G4double currentMinimumStep, @@ -43,7 +41,7 @@ inline G4double G4MuEnergyLoss::GetContinuousStepLimit( return Step ; } -inline G4bool G4MuEnergyLoss::IsApplicable(const G4ParticleDefinition& +inline G4bool G4VMuEnergyLoss::IsApplicable(const G4ParticleDefinition& particle) { return ( (&particle == (const G4ParticleDefinition *)theMuonPlus) diff --git a/source/processes/electromagnetic/muons/src/G4IMuBremsstrahlung.cc b/source/processes/electromagnetic/muons/src/G4IMuBremsstrahlung.cc index daa284ec8d..1d2c643749 100644 --- a/source/processes/electromagnetic/muons/src/G4IMuBremsstrahlung.cc +++ b/source/processes/electromagnetic/muons/src/G4IMuBremsstrahlung.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IMuBremsstrahlung.cc,v 1.2.8.1.2.2 1999/12/09 16:18:02 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IMuBremsstrahlung.cc,v 1.4 2000/04/25 14:19:00 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- @@ -26,7 +26,7 @@ // constructor G4IMuBremsstrahlung::G4IMuBremsstrahlung(const G4String& processName) - : G4IMuEnergyLoss("IMuBremsstrahlung"), // initialization + : G4VIMuEnergyLoss("IMuBremsstrahlung"), // initialization LowestKineticEnergy (1.*keV), HighestKineticEnergy (1000000.*TeV), TotBin(200), @@ -82,7 +82,7 @@ void G4IMuBremsstrahlung::BuildPhysicsTable(const G4ParticleDefinition& aParticl BuildLambdaTable(aParticleType) ; - G4IMuEnergyLoss::BuildDEDXTable(aParticleType) ; + G4VIMuEnergyLoss::BuildDEDXTable(aParticleType) ; } else diff --git a/source/processes/electromagnetic/muons/src/G4IMuIonisation.cc b/source/processes/electromagnetic/muons/src/G4IMuIonisation.cc index b2a4510f5f..60a1f4504b 100644 --- a/source/processes/electromagnetic/muons/src/G4IMuIonisation.cc +++ b/source/processes/electromagnetic/muons/src/G4IMuIonisation.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IMuIonisation.cc,v 1.2.8.1.2.2 1999/12/09 16:18:02 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IMuIonisation.cc,v 1.4 2000/04/25 14:19:01 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- @@ -31,7 +31,7 @@ // constructor and destructor G4IMuIonisation::G4IMuIonisation(const G4String& processName) - : G4IMuEnergyLoss("IMuIonisation"), + : G4VIMuEnergyLoss("IMuIonisation"), LowestKineticEnergy(1.00*keV), HighestKineticEnergy(1000000.*TeV), TotBin(200), @@ -88,7 +88,7 @@ void G4IMuIonisation::BuildPhysicsTable(const G4ParticleDefinition& aParticleTyp BuildLambdaTable(aParticleType) ; } - G4IMuEnergyLoss::BuildDEDXTable(aParticleType) ; + G4VIMuEnergyLoss::BuildDEDXTable(aParticleType) ; } else { diff --git a/source/processes/electromagnetic/muons/src/G4IMuPairProduction.cc b/source/processes/electromagnetic/muons/src/G4IMuPairProduction.cc index 9d54590e5c..d73205b84b 100644 --- a/source/processes/electromagnetic/muons/src/G4IMuPairProduction.cc +++ b/source/processes/electromagnetic/muons/src/G4IMuPairProduction.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IMuPairProduction.cc,v 1.2.8.1.2.4 1999/12/12 12:31:20 gracia Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IMuPairProduction.cc,v 1.5 2000/04/25 14:19:01 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // -------------------------------------------------------------- @@ -19,7 +19,7 @@ // -------- G4IMuPairProduction physics process --------- // by Laszlo Urban, May 1998 // ************************************************************** -// 04-06-98, in DoIt, secondary production condition: range>min(threshold,safety) +// 04-06-98, in DoIt, secondary production condition: range>G4std::min(threshold,safety) // -------------------------------------------------------------- #include "G4IMuPairProduction.hh" @@ -40,7 +40,7 @@ G4double G4IMuPairProduction::proba[5][8][1000]={0.}; // constructor G4IMuPairProduction::G4IMuPairProduction(const G4String& processName) - : G4IMuEnergyLoss("IMuPairProduction"), // initialization + : G4VIMuEnergyLoss("IMuPairProduction"), // initialization LowestKineticEnergy (1.*keV), HighestKineticEnergy (1000000.*TeV), TotBin(200), @@ -53,13 +53,13 @@ G4IMuPairProduction::G4IMuPairProduction(const G4String& processName) theMuonPlus ( G4MuonPlus::MuonPlus() ) { - theMeanFreePathTable = NULL ; + theMeanFreePathTable = NULL ; G4cout << G4endl ; G4cout << "****************************************************************" << G4endl; G4cout << "****************************************************************" << G4endl; G4cout << "** **" << G4endl; - G4cout << "** G4IMuPairProduction : **" << 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; @@ -115,7 +115,7 @@ void G4IMuPairProduction::BuildPhysicsTable(const G4ParticleDefinition& aParticl MakeSamplingTables(&aParticleType) ; - G4IMuEnergyLoss::BuildDEDXTable(aParticleType) ; + G4VIMuEnergyLoss::BuildDEDXTable(aParticleType) ; } else { @@ -1411,6 +1411,6 @@ G4Element* G4IMuPairProduction::SelectRandomAtom(G4Material* aMaterial) const if (rval <= (*PartialSumSigma(Index))(i)) return ((*theElementVector)(i)); } G4cout << " WARNING !!! - The Material '"<< aMaterial->GetName() - << "' has no elements, NULL pointer returned." << G4endl; + << "' has no elements, NULL pointer returned." << G4endl; return NULL; } diff --git a/source/processes/electromagnetic/muons/src/G4MuBremsstrahlung.cc b/source/processes/electromagnetic/muons/src/G4MuBremsstrahlung.cc index c6095e7487..dd49907544 100644 --- a/source/processes/electromagnetic/muons/src/G4MuBremsstrahlung.cc +++ b/source/processes/electromagnetic/muons/src/G4MuBremsstrahlung.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MuBremsstrahlung.cc,v 1.5.8.1.2.1 1999/12/08 17:34:19 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MuBremsstrahlung.cc,v 1.12 2000/05/23 09:58:48 urban Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- @@ -19,8 +19,9 @@ // -------- G4MuBremsstrahlung physics process --------- // by Laszlo Urban, September 1997 // -// 08-04-98: remove 'tracking cut' of muon in DoIt, MMa +// 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 // -------------------------------------------------------------- #include "G4MuBremsstrahlung.hh" #include "G4UnitsTable.hh" @@ -31,25 +32,29 @@ 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 ; G4double G4MuBremsstrahlung::tdat[]={1.e3,1.e4,1.e5,1.e6,1.e7,1.e8,1.e9,1.e10}; -G4int G4MuBremsstrahlung::NBIN = 100 ; //500 ; -G4double G4MuBremsstrahlung::ya[1000]={0.}; -G4double G4MuBremsstrahlung::proba[5][8][1000]={0.}; +G4int G4MuBremsstrahlung::NBIN = 1000; // 100 ; +G4double G4MuBremsstrahlung::ya[1001]={0.}; +G4double G4MuBremsstrahlung::proba[5][8][1001]={0.}; +G4double G4MuBremsstrahlung::CutFixed=1.*keV ; + + +G4double G4MuBremsstrahlung::LowerBoundLambda = 1.*keV ; +G4double G4MuBremsstrahlung::UpperBoundLambda = 1000000.*TeV ; +G4int G4MuBremsstrahlung::NbinLambda = 150 ; // constructor G4MuBremsstrahlung::G4MuBremsstrahlung(const G4String& processName) - : G4MuEnergyLoss(processName), - theMeanFreePathTable(NULL), - LowestKineticEnergy (1.*GeV), - HighestKineticEnergy (1000000.*TeV), - TotBin(100) + : G4VMuEnergyLoss(processName), + theMeanFreePathTable(NULL) { } G4MuBremsstrahlung::~G4MuBremsstrahlung() { if (theMeanFreePathTable) { theMeanFreePathTable->clearAndDestroy(); + delete theMeanFreePathTable; } if (&PartialSumSigma) { @@ -57,15 +62,14 @@ G4MuBremsstrahlung::~G4MuBremsstrahlung() } } -void G4MuBremsstrahlung::SetPhysicsTableBining(G4double lowE, G4double highE, - G4int nBins) -{ - LowestKineticEnergy = lowE; HighestKineticEnergy = highE ; TotBin = nBins ; -} - void G4MuBremsstrahlung::BuildPhysicsTable( const G4ParticleDefinition& aParticleType) { + // get bining from EnergyLoss + LowestKineticEnergy = GetLowerBoundEloss() ; + HighestKineticEnergy = GetUpperBoundEloss() ; + TotBin = GetNbinEloss() ; + BuildLossTable(aParticleType) ; if(&aParticleType==theMuonMinus) @@ -79,14 +83,14 @@ void G4MuBremsstrahlung::BuildPhysicsTable( CounterOfmuplusProcess++; } - if(theMeanFreePathTable == NULL) + if(theMeanFreePathTable == NULL) MakeSamplingTables(&aParticleType) ; G4double gammaCutInRange = G4Gamma::Gamma()->GetCuts(); if(gammaCutInRange != lastgammaCutInRange) BuildLambdaTable(aParticleType) ; - G4MuEnergyLoss::BuildDEDXTable(aParticleType) ; + G4VMuEnergyLoss::BuildDEDXTable(aParticleType) ; if(&aParticleType == theMuonPlus) PrintInfoDefinition() ; @@ -187,6 +191,8 @@ G4double G4MuBremsstrahlung::ComputeBremLoss( } } + loss *=hhh*TotalEnergy ; + return loss ; } @@ -209,11 +215,12 @@ void G4MuBremsstrahlung::BuildLambdaTable( G4PhysicsLogVector* ptrVector; for ( G4int J=0 ; J < G4Material::GetNumberOfMaterials(); J++ ) { - ptrVector=new G4PhysicsLogVector(LowestKineticEnergy, HighestKineticEnergy, - TotBin ) ; + ptrVector = new G4PhysicsLogVector( + LowerBoundLambda,UpperBoundLambda,NbinLambda); + const G4Material* material= (*theMaterialTable)[J]; - for ( G4int i = 0 ; i < TotBin ; i++ ) + for ( G4int i = 0 ; i < NbinLambda ; i++ ) { LowEdgeEnergy = ptrVector->GetLowEdgeEnergy( i ) ; Value = ComputeMeanFreePath( &ParticleType, LowEdgeEnergy, @@ -296,9 +303,24 @@ G4double G4MuBremsstrahlung::ComputeMicroscopicCrossSection( AtomicNumber,AtomicMass,ep) ; } } + + CrossSection *= hhh ; + return CrossSection; } +G4double G4MuBremsstrahlung::GetDMicroscopicCrossSection( + const G4ParticleDefinition* ParticleType, + G4double KineticEnergy, + G4double AtomicNumber, + G4double AtomicMass, + G4double GammaEnergy) +// get differential cross section +{ + return ComputeDMicroscopicCrossSection(ParticleType,KineticEnergy, + AtomicNumber,AtomicMass,GammaEnergy) ; +} + G4double G4MuBremsstrahlung::ComputeDMicroscopicCrossSection( const G4ParticleDefinition* ParticleType, G4double KineticEnergy, @@ -359,7 +381,6 @@ G4double G4MuBremsstrahlung::ComputeDMicroscopicCrossSection( dxsection = coeff*(1.-v*(1.-0.75*v))*AtomicNumber*(fn*AtomicNumber+fe)/ GammaEnergy ; - return dxsection ; } @@ -367,8 +388,6 @@ G4double G4MuBremsstrahlung::ComputeDMicroscopicCrossSection( void G4MuBremsstrahlung::MakeSamplingTables( const G4ParticleDefinition* ParticleType) { - G4double CutFixed = 1.*keV ; - G4double epbin[1000],xbin[1000],prbin[1000] ; G4int nbin; G4double AtomicNumber,AtomicWeight,KineticEnergy, TotalEnergy,Maxep ; @@ -388,7 +407,7 @@ void G4MuBremsstrahlung::MakeSamplingTables( G4double CrossSection = 0.0 ; - G4double c,y,ymin,ymax,dy,yy,dx,x,ep ; + G4double c,y,ymin,ymax,dy,yy,dx,x,ep,ybin ; G4int NbofIntervals ; // calculate the differential cross section @@ -417,9 +436,6 @@ void G4MuBremsstrahlung::MakeSamplingTables( if(nbin GetDefinition()->GetPDGMass() ; + G4double dy = 5./G4float(NBIN) ; + + G4double ymin=log(log(GammaEnergyCut/CutFixed)/log(KineticEnergy/CutFixed)) ; + G4int iymin = G4int((ymin+5.)/dy+0.5) ; + // sampling using tables G4double v,xc,x,yc,y ; G4int iZ,iT,iy ; @@ -500,20 +521,19 @@ G4VParticleChange* G4MuBremsstrahlung::PostStepDoIt(const G4Track& trackData, G4double r = G4UniformRand() ; - iy = -1 ; + iy = iymin-1 ; + delmin = proba[izz][itt][NBINminus1]-proba[izz][itt][iymin] ; do { iy += 1 ; - } while ((proba[izz][itt][iy] < r)&&(iy < NBINminus1)) ; + } while ((r > (proba[izz][itt][iy]-proba[izz][itt][iymin])/delmin) + &&(iy < NBINminus1)) ; //sampling is Done uniformly in y in the bin - if( iy < NBIN ) y = ya[iy] + G4UniformRand() * ( ya[iy+1] - ya[iy] ) ; - else - y = ya[iy] ; x = exp(y) ; - v = GammaEnergyCut*exp(x*log(KineticEnergy/GammaEnergyCut)) ; + v = CutFixed*exp(x*log(KineticEnergy/CutFixed)) ; if( v <= 0.) return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); @@ -575,12 +595,12 @@ G4Element* G4MuBremsstrahlung::SelectRandomAtom(G4Material* aMaterial) const void G4MuBremsstrahlung::PrintInfoDefinition() { G4String comments = "theoretical cross section \n "; - comments += " Good description up to 1000 TeV."; + comments += " Good description up to 1000 PeV."; G4cout << G4endl << GetProcessName() << ": " << comments - << "\n PhysicsTables from " << G4BestUnit(LowestKineticEnergy, + << "\n PhysicsTables from " << G4BestUnit(LowerBoundLambda, "Energy") - << " to " << G4BestUnit(HighestKineticEnergy,"Energy") - << " in " << TotBin << " bins. \n"; + << " to " << G4BestUnit(UpperBoundLambda,"Energy") + << " in " << NbinLambda << " bins. \n"; } diff --git a/source/processes/electromagnetic/muons/src/G4MuEnergyLoss.cc b/source/processes/electromagnetic/muons/src/G4MuEnergyLoss.cc deleted file mode 100644 index d34c422515..0000000000 --- a/source/processes/electromagnetic/muons/src/G4MuEnergyLoss.cc +++ /dev/null @@ -1,1338 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4MuEnergyLoss.cc,v 1.8.6.1 1999/12/07 20:50:45 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// $Id: -// -------------------------------------------------------------- -// GEANT 4 class implementation file -// -// For information related to this code contact: -// CERN, CN Division, ASD group -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ---------- G4MuEnergyLoss 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!) -// cleanup L.Urban on 23/10/98 -// -------------------------------------------------------------- - - -#include "G4MuEnergyLoss.hh" -#include "G4EnergyLossTables.hh" -#include "G4Poisson.hh" - -// Initialisation of static members ******************************************* -// contributing processes : ion.loss,bremsstrahlung,pair production -// ->NbOfProcesses is initialized to 3. -// 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 cont. energy loss, -// NbOfProcesses should be 4 in this case, -// or for debugging purposes. -// The NbOfProcesses data member can be changed using the (public static) -// functions Get/Set/Plus/MinusNbOfProcesses (see G4MuEnergyLoss.hh) - -G4int G4MuEnergyLoss::NbOfProcesses = 3 ; // !!!!!!!!!!!!!!! - -G4PhysicsTable** G4MuEnergyLoss::RecorderOfmuplusProcess = - new G4PhysicsTable*[10] ; -G4PhysicsTable** G4MuEnergyLoss::RecorderOfmuminusProcess = - new G4PhysicsTable*[10] ; -G4int G4MuEnergyLoss::CounterOfmuplusProcess = 0 ; -G4int G4MuEnergyLoss::CounterOfmuminusProcess = 0 ; - -G4bool G4MuEnergyLoss::rndmStepFlag = false; -G4bool G4MuEnergyLoss::EnlossFlucFlag = true; -G4double G4MuEnergyLoss::dRoverRange = 20*perCent; -G4double G4MuEnergyLoss::finalRange = 200*micrometer; - -G4PhysicsTable* G4MuEnergyLoss::theDEDXmuplusTable = NULL ; -G4PhysicsTable* G4MuEnergyLoss::theRangemuplusTable = NULL ; -G4PhysicsTable* G4MuEnergyLoss::theInverseRangemuplusTable = NULL ; -G4PhysicsTable* G4MuEnergyLoss::theLabTimemuplusTable = NULL ; -G4PhysicsTable* G4MuEnergyLoss::theProperTimemuplusTable = NULL ; - -G4PhysicsTable* G4MuEnergyLoss::theDEDXmuminusTable = NULL ; -G4PhysicsTable* G4MuEnergyLoss::theRangemuminusTable = NULL ; -G4PhysicsTable* G4MuEnergyLoss::theInverseRangemuminusTable = NULL ; -G4PhysicsTable* G4MuEnergyLoss::theLabTimemuminusTable = NULL ; -G4PhysicsTable* G4MuEnergyLoss::theProperTimemuminusTable = NULL ; - -G4PhysicsTable* G4MuEnergyLoss::themuplusRangeCoeffATable = NULL ; -G4PhysicsTable* G4MuEnergyLoss::themuplusRangeCoeffBTable = NULL ; -G4PhysicsTable* G4MuEnergyLoss::themuplusRangeCoeffCTable = NULL ; -G4PhysicsTable* G4MuEnergyLoss::themuminusRangeCoeffATable = NULL ; -G4PhysicsTable* G4MuEnergyLoss::themuminusRangeCoeffBTable = NULL ; -G4PhysicsTable* G4MuEnergyLoss::themuminusRangeCoeffCTable = NULL ; - -G4EnergyLossMessenger* G4MuEnergyLoss::eLossMessenger = NULL ; - -// constructor and destructor - -G4MuEnergyLoss::G4MuEnergyLoss(const G4String& processName) - : G4VContinuousDiscreteProcess (processName), - LowestKineticEnergy(1.00*keV), - HighestKineticEnergy(1000000.*TeV), - MaxExcitationNumber (1.e6), - probLimFluct (0.01), - nmaxDirectFluct (100), - nmaxCont1(4), - nmaxCont2(16), - theLossTable(NULL), - theRangeCoeffATable(NULL), - theRangeCoeffBTable(NULL), - theRangeCoeffCTable(NULL), - lastMaterial(NULL), - lastgammaCutInRange(0.), - lastelectronCutInRange(0.), - theElectron ( G4Electron::Electron() ), - thePositron ( G4Positron::Positron() ), - theMuonPlus ( G4MuonPlus::MuonPlus() ), - theMuonMinus ( G4MuonMinus::MuonMinus() ) -{ } - -G4MuEnergyLoss::~G4MuEnergyLoss() -{ - if(theLossTable) { - theLossTable->clearAndDestroy(); - delete theLossTable; - } - -} - - void G4MuEnergyLoss::BuildDEDXTable( - const G4ParticleDefinition& aParticleType) -{ - // calculate data members TotBin,LOGRTable,RTable first - G4double binning = dRoverRange; - G4double lrate = log(HighestKineticEnergy/LowestKineticEnergy); - G4int nbin = G4int(lrate/log(1.+binning) + 0.5 ); - 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 ; - ParticleMass = aParticleType.GetPDGMass() ; - G4double Charge = aParticleType.GetPDGCharge() ; - G4double gammaCutInRange = G4Gamma::Gamma()->GetCuts(); - G4double electronCutInRange = G4Electron::Electron()->GetCuts(); - - MakeTable = false ; - // Create tables only if there are new cut values - if((gammaCutInRange == lastgammaCutInRange) && - (electronCutInRange == lastelectronCutInRange)) - { - ; - } - else - { - if((Charge > 0.)&&(CounterOfmuplusProcess==NbOfProcesses)) - MakeTable = true ; - if((Charge < 0.)&&(CounterOfmuminusProcess==NbOfProcesses)) - MakeTable = true ; - } - - 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=RecorderOfmuplusProcess; - CounterOfProcess=CounterOfmuplusProcess; - - if(CounterOfProcess == NbOfProcesses) - { - if(theDEDXmuplusTable) - { theDEDXmuplusTable->clearAndDestroy(); - delete theDEDXmuplusTable; } - - theDEDXmuplusTable = new G4PhysicsTable(numOfMaterials); - theDEDXTable = theDEDXmuplusTable; - } - } - else - { - RecorderOfProcess=RecorderOfmuminusProcess; - CounterOfProcess=CounterOfmuminusProcess; - - if(CounterOfProcess == NbOfProcesses) - { - if(theDEDXmuminusTable) - { theDEDXmuminusTable->clearAndDestroy(); - delete theDEDXmuminusTable; } - theDEDXmuminusTable = new G4PhysicsTable(numOfMaterials); - theDEDXTable = theDEDXmuminusTable; - } - } - - if(CounterOfProcess == NbOfProcesses) - { - // loop for materials - G4double LowEdgeEnergy , Value ; - G4bool isOutRange ; - G4int J; - G4PhysicsTable* pointer ; - - for (J=0; JGetLowEdgeEnergy(i) ; - 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( 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); - - lastgammaCutInRange = gammaCutInRange ; - lastelectronCutInRange = electronCutInRange ; - } -} - - void G4MuEnergyLoss::BuildRangeTable( - const G4ParticleDefinition& aParticleType) -// Build range table from the energy loss table -{ - G4double Charge = aParticleType.GetPDGCharge() ; - 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 ; - } - - for (G4int J=0; Jinsert(aVector); - - } - -} - - void G4MuEnergyLoss::BuildTimeTables( - const G4ParticleDefinition& aParticleType) -// Build time tables from the energy loss 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 ; - } - - for (G4int J=0; Jinsert(aVector); - - bVector = new G4PhysicsLogVector(LowestKineticEnergy, - HighestKineticEnergy,TotBin); - - BuildProperTimeVector(J, bVector); - - theProperTimeTable->insert(bVector); - - } -} - -void G4MuEnergyLoss::BuildRangeVector(G4int materialIndex, - G4PhysicsLogVector* rangeVector) -{ - 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 G4MuEnergyLoss::BuildLabTimeVector(G4int materialIndex, - G4PhysicsLogVector* timeVector) -{ - 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() ; - - 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 G4MuEnergyLoss::BuildProperTimeVector(G4int materialIndex, - G4PhysicsLogVector* timeVector) -{ - 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() ; - - 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 G4MuEnergyLoss::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 G4MuEnergyLoss::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 G4MuEnergyLoss::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 G4MuEnergyLoss::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 == 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 G4MuEnergyLoss::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 G4MuEnergyLoss::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.... - - G4double KineticEnergy,StepLimit; - 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 ; - } - - - G4double c1=dRoverRange, c2=2.*(1.-dRoverRange)*finalRange , - c3=-(1.-dRoverRange)*finalRange*finalRange ; - - G4double Thigh = HighestKineticEnergy/RTable ; - 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 > Thigh ) - { - fdEdx = (*theDEDXTable)(index)->GetValue(Thigh,isOutRange); - fRangeNow = (*theRangeTable)(index)->GetValue(Thigh,isOutRange); - if (fdEdx > 0.) fRangeNow += (KineticEnergy-Thigh)/fdEdx; - StepLimit = c1*fRangeNow; - } - 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 ; - - // compute the (random) Step limit .............. - if(fRangeNow>finalRange) - { - StepLimit = c1*fRangeNow+c2+c3/fRangeNow ; - - // randomise this value - if(rndmStepFlag) StepLimit = finalRange+(StepLimit-finalRange)* - G4UniformRand() ; - if(StepLimit > fRangeNow) StepLimit = fRangeNow ; - } - else - StepLimit = fRangeNow ; - } - - return StepLimit ; - -} - -G4VParticleChange* G4MuEnergyLoss::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; - const G4double linLossLimit = 0.02 ; - - G4double MeanLoss, finalT; - - if (E < MinKineticEnergy) finalT = 0.; - else if ( E<= LowestKineticEnergy) - { - if (Step >= fRangeNow) finalT = 0.; - else finalT = E - Step*fdEdx ; - } - - else if (E>=HighestKineticEnergy) finalT = E - Step*fdEdx; - - else if (Step >= fRangeNow) finalT = 0.; - - else - { - if(Step/fRangeNow < linLossLimit) finalT = E-Step*fdEdx ; - else - { - if (charge<0.) finalT = G4EnergyLossTables::GetPreciseEnergyFromRange( - theMuonMinus,fRangeNow-Step,aMaterial); - else finalT = G4EnergyLossTables::GetPreciseEnergyFromRange( - theMuonPlus,fRangeNow-Step,aMaterial); - } - } - - if(finalT < MinKineticEnergy) finalT = 0. ; - - MeanLoss = E-finalT ; - - //now the loss with fluctuation - if ((EnlossFlucFlag) && (finalT > 0.) && (finalT < E)&&(E > LowestKineticEnergy)) - - { - finalT = E-GetLossWithFluct(aParticle,aMaterial,MeanLoss); - if (finalT < 0.) finalT = E-MeanLoss; - } - - // 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; -} - -G4double G4MuEnergyLoss::GetLossWithFluct(const G4DynamicParticle* aParticle, - G4Material* aMaterial, - G4double MeanLoss) -// calculate actual loss from the mean loss -// The model used to get the fluctuation is the same as in Glandz in Geant3. -{ - static const G4double Tlow=10.*keV ; - - // 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,w3,lnw3,C,prob, - beta2,suma,e0,Em,loss,lossc ,w; - G4double a1,a2,a3; - G4long p1,p2,p3; - G4int nb; - G4double Corrfac, na,alfa,rfac,namean,sa,alfa1,ea,sea; - G4double dp1,dnmaxDirectFluct,dp3,dnmaxCont2; - - // get particle data - G4double Tkin = aParticle->GetKineticEnergy(); - G4double charge = aParticle->GetDefinition()->GetPDGCharge(); - 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) - -ipotFluct; - if (Tm < 0.) Tm = 0.; - else if (Tm > threshold) Tm = threshold; - - w1 = Tm+ipotFluct; - w2 = w1/ipotFluct; - w3 = 2.*electron_mass_c2*tau2; - lnw3 = log(w3); - beta2 = tau2/(tau1*tau1); - - C = (1.-rateFluct)*MeanLoss/(lnw3-ipotLogFluct-beta2); - - a1 = C*f1Fluct*(lnw3-e1LogFluct-beta2)/e1Fluct; - a2 = C*f2Fluct*(lnw3-e2LogFluct-beta2)/e2Fluct; - if (Tm > 0.) a3 = rateFluct*MeanLoss*Tm/(ipotFluct*w1*log(w2)); - else { a1 /= rateFluct; a2 /= rateFluct; a3 = 0.;} - suma = a1+a2+a3; - - //no fluctuation if the loss is too big - if (suma > MaxExcitationNumber) return MeanLoss; - - suma<50.? prob = exp(-suma) : prob = 0.; - - if (prob > probLimFluct) // very small Step - { - e0 = aMaterial->GetIonisation()->GetEnergy0fluct(); - if (Tm <= 0.) - { - a1 = MeanLoss/e0; - p1 = G4Poisson(a1); - loss = p1*e0 ; - } - else - { - Em = Tm+e0; - a1 = MeanLoss*(Em-e0)/(Em*e0*log(Em/e0)); - p1 = G4Poisson(a1); - w = (Em-e0)/Em; - // just to save time - if (p1 > nmaxDirectFluct) - { - dp1 = p1; - dnmaxDirectFluct=nmaxDirectFluct; - Corrfac = dp1/dnmaxDirectFluct; - p1 = nmaxDirectFluct; - } - else Corrfac = 1.; - - loss = 0.; - for (long i=0; i0.) loss += (1.-2.*G4UniformRand())*e1Fluct; - p3 = G4Poisson(a3); - - lossc = 0.; na = 0.; alfa = 1.; - if (p3 > nmaxCont2) - { - dp3 = p3; - dnmaxCont2 = nmaxCont2; - rfac = dp3/(dnmaxCont2+dp3); - namean = p3*rfac; - sa = nmaxCont1*rfac; - na = RandGauss::shoot(namean,sa); - if (na > 0.) - { - alfa = w2*(nmaxCont2+p3)/(w2*nmaxCont2+p3); - alfa1 = alfa*log(alfa)/(alfa-1.); - ea = na*ipotFluct*alfa1; - sea = ipotFluct*sqrt(na*(alfa-alfa1*alfa1)); - lossc += RandGauss::shoot(ea,sea); - } - } - - nb = G4int(p3-na); - if (nb > 0) - { - w2 = alfa*ipotFluct; - w = (w1-w2)/w1; - for (G4int k=0; kGetElementVector() ; @@ -275,7 +278,7 @@ void G4MuIonisation::BuildLambdaTable(const G4ParticleDefinition& aParticleType) material->GetNumberOfElements() ; DeltaCutInKineticEnergyNow = DeltaCutInKineticEnergy[J] ; - for ( G4int i = 0 ; i < TotBin ; i++ ) + for ( G4int i = 0 ; i < NbinLambda ; i++ ) { LowEdgeEnergy = aVector->GetLowEdgeEnergy(i) ; sigma = 0. ; @@ -510,9 +513,9 @@ void G4MuIonisation::PrintInfoDefinition() comments += " delta ray energy sampled from differential Xsection." ; G4cout << G4endl << GetProcessName() << ": " << comments - << "\n PhysicsTables from " << G4BestUnit(LowestKineticEnergy, + << "\n PhysicsTables from " << G4BestUnit(LowerBoundLambda, "Energy") - << " to " << G4BestUnit(HighestKineticEnergy,"Energy") - << " in " << TotBin << " bins. \n"; + << " to " << G4BestUnit(UpperBoundLambda,"Energy") + << " in " << NbinLambda << " bins. \n"; } diff --git a/source/processes/electromagnetic/muons/src/G4MuPairProduction.cc b/source/processes/electromagnetic/muons/src/G4MuPairProduction.cc index 906ef029be..6af5ea2226 100644 --- a/source/processes/electromagnetic/muons/src/G4MuPairProduction.cc +++ b/source/processes/electromagnetic/muons/src/G4MuPairProduction.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MuPairProduction.cc,v 1.6.8.1.2.2 1999/12/09 16:18:03 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MuPairProduction.cc,v 1.15 2000/05/23 09:58:49 urban Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -------------------------------------------------------------- // GEANT 4 class implementation file @@ -18,9 +18,10 @@ // -------- G4MuPairProduction physics process --------- // by Laszlo Urban, May 1998 // ************************************************************** -// 04-06-98, in DoIt,secondary production condition:range>min(threshold,safety) +// 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 // -------------------------------------------------------------- #include "G4MuPairProduction.hh" @@ -33,16 +34,19 @@ G4int G4MuPairProduction::nzdat = 5 ; G4double G4MuPairProduction::zdat[]={1.,4.,13.,26.,92.}; G4int G4MuPairProduction::ntdat = 8 ; G4double G4MuPairProduction::tdat[]={1.e3,1.e4,1.e5,1.e6,1.e7,1.e8,1.e9,1.e10}; -G4int G4MuPairProduction::NBIN = 100 ; //500 ; -G4double G4MuPairProduction::ya[1000]={0.}; -G4double G4MuPairProduction::proba[5][8][1000]={0.}; - +G4int G4MuPairProduction::NBIN = 1000 ; //100 ; +G4double G4MuPairProduction::ya[1001]={0.}; +G4double G4MuPairProduction::proba[5][8][1001]={0.}; +G4double G4MuPairProduction::MinPairEnergy = 4.*electron_mass_c2 ; + +G4double G4MuPairProduction::LowerBoundLambda = 1.*keV ; +G4double G4MuPairProduction::UpperBoundLambda = 1000000.*TeV ; +G4int G4MuPairProduction::NbinLambda = 150 ; + + G4MuPairProduction::G4MuPairProduction(const G4String& processName) - : G4MuEnergyLoss(processName), - theMeanFreePathTable(NULL), - LowestKineticEnergy (1.*GeV), - HighestKineticEnergy (1000000.*TeV), - TotBin(50) + : G4VMuEnergyLoss(processName), + theMeanFreePathTable(NULL) { } @@ -58,16 +62,16 @@ G4MuPairProduction::~G4MuPairProduction() } } -void G4MuPairProduction::SetPhysicsTableBining(G4double lowE,G4double highE, - G4int nBins) -{ - LowestKineticEnergy=lowE; HighestKineticEnergy=highE; TotBin=nBins; -} - void G4MuPairProduction::BuildPhysicsTable( const G4ParticleDefinition& aParticleType) // just call BuildLossTable+BuildLambdaTable { + + // get bining from EnergyLoss + LowestKineticEnergy = GetLowerBoundEloss() ; + HighestKineticEnergy = GetUpperBoundEloss() ; + TotBin = GetNbinEloss() ; + BuildLossTable(aParticleType) ; if(&aParticleType==theMuonMinus) @@ -89,7 +93,7 @@ void G4MuPairProduction::BuildPhysicsTable( if(electronCutInRange != lastelectronCutInRange) BuildLambdaTable(aParticleType) ; - G4MuEnergyLoss::BuildDEDXTable(aParticleType) ; + G4VMuEnergyLoss::BuildDEDXTable(aParticleType) ; if(&aParticleType==theMuonPlus) PrintInfoDefinition() ; @@ -153,7 +157,6 @@ void G4MuPairProduction::BuildLossTable( } if(pairloss<0.) pairloss = 0. ; - aVector->PutValue(i,pairloss); } @@ -183,13 +186,17 @@ G4double G4MuPairProduction::ComputePairLoss( 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(MaxPairEnergy < MinPairEnergy) + MaxPairEnergy = MinPairEnergy ; + if( CutInPairEnergy >= MaxPairEnergy ) CutInPairEnergy = MaxPairEnergy ; + if(CutInPairEnergy <= MinPairEnergy) return loss ; + G4double aaa,bbb,hhh,x,epln,ep ; G4int kkk ; // calculate the rectricted loss @@ -235,13 +242,13 @@ void G4MuPairProduction::BuildLambdaTable( G4PhysicsLogVector* ptrVector; for ( G4int J=0 ; J < G4Material::GetNumberOfMaterials(); J++ ) { - ptrVector = new - G4PhysicsLogVector(LowestKineticEnergy, HighestKineticEnergy, - TotBin ) ; + ptrVector = new G4PhysicsLogVector( + LowerBoundLambda,UpperBoundLambda,NbinLambda); + const G4Material* material= (*theMaterialTable)[J]; - for ( G4int i = 0 ; i < TotBin ; i++ ) + for ( G4int i = 0 ; i < NbinLambda ; i++ ) { LowEdgeEnergy = ptrVector->GetLowEdgeEnergy( i ) ; Value = ComputeMeanFreePath( &ParticleType, LowEdgeEnergy, @@ -313,6 +320,8 @@ G4double G4MuPairProduction::ComputeMicroscopicCrossSection( CutInPairEnergy = 4.*electron_mass_c2 ; G4double MaxPairEnergy = KineticEnergy+ParticleMass*(1.-0.75*sqrte*z13) ; + if(MaxPairEnergy < CutInPairEnergy) + MaxPairEnergy = CutInPairEnergy ; if( CutInPairEnergy >= MaxPairEnergy ) return CrossSection ; G4double aaa,bbb,hhh,x,epln,ep ; @@ -345,13 +354,10 @@ G4double G4MuPairProduction::ComputeMicroscopicCrossSection( void G4MuPairProduction::MakeSamplingTables( const G4ParticleDefinition* ParticleType) { - G4double epbin[1000],xbin[1000],prbin[1000] ; G4int nbin; - G4double AtomicNumber,KineticEnergy,MinPairEnergy ; + G4double AtomicNumber,KineticEnergy ; G4double c,y,ymin,ymax,dy,yy,dx,x,ep ; - MinPairEnergy = 4.*electron_mass_c2 ; - static const G4double sqrte = sqrt(exp(1.)) ; for (G4int iz=0; izGetIndex()]; G4double CutInPairEnergy = ElectronEnergyCut + PositronEnergyCut ; - G4double MinPairEnergy = 4.*electron_mass_c2 ; if (CutInPairEnergy < MinPairEnergy) CutInPairEnergy = MinPairEnergy ; // check against insufficient energy @@ -646,13 +662,19 @@ G4VParticleChange* G4MuPairProduction::PostStepDoIt(const G4Track& trackData, } } - xc = log(CutInPairEnergy/MinPairEnergy)/log(MaxPairEnergy/MinPairEnergy) ; - yc = log(xc) ; + if( CutInPairEnergy <= MinPairEnergy) + iy = 0 ; + else + { + xc = log(CutInPairEnergy/MinPairEnergy)/log(MaxPairEnergy/MinPairEnergy) ; + yc = log(xc) ; - iy = -1 ; - do { - iy += 1 ; - } while ((ya[iy] < yc )&&(iy < NBINminus1)) ; + iy = -1 ; + do { + iy += 1 ; + } while ((ya[iy] < yc )&&(iy < NBINminus1)) ; + } + G4double norm = proba[izz][itt][iy] ; G4double r = norm+G4UniformRand()*(1.-norm) ; @@ -787,19 +809,19 @@ G4Element* G4MuPairProduction::SelectRandomAtom(G4Material* aMaterial) const if (rval <= (*PartialSumSigma(Index))(i)) return ((*theElementVector)(i)); } G4cout << " WARNING !!! - The Material '"<< aMaterial->GetName() - << "' has no elements, NULL pointer returned." << G4endl; + << "' has no elements, NULL pointer returned." << G4endl; return NULL; } void G4MuPairProduction::PrintInfoDefinition() { G4String comments = "theoretical cross sections \n "; - comments += " Good description up to 1000 TeV."; + comments += " Good description up to 1000 PeV."; G4cout << G4endl << GetProcessName() << ": " << comments - << "\n PhysicsTables from " << G4BestUnit(LowestKineticEnergy, + << "\n PhysicsTables from " << G4BestUnit(LowerBoundLambda, "Energy") - << " to " << G4BestUnit(HighestKineticEnergy,"Energy") - << " in " << TotBin << " bins. \n"; + << " to " << G4BestUnit(UpperBoundLambda,"Energy") + << " in " << NbinLambda << " bins. \n"; } diff --git a/source/processes/electromagnetic/muons/src/G4IMuEnergyLoss.cc b/source/processes/electromagnetic/muons/src/G4VIMuEnergyLoss.cc similarity index 92% rename from source/processes/electromagnetic/muons/src/G4IMuEnergyLoss.cc rename to source/processes/electromagnetic/muons/src/G4VIMuEnergyLoss.cc index 2c0888278b..11f9de5dfe 100644 --- a/source/processes/electromagnetic/muons/src/G4IMuEnergyLoss.cc +++ b/source/processes/electromagnetic/muons/src/G4VIMuEnergyLoss.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IMuEnergyLoss.cc,v 1.3.6.1 1999/12/07 20:50:44 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VIMuEnergyLoss.cc,v 1.1 2000/04/25 14:19:02 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // -------------------------------------------------------------- @@ -16,7 +16,7 @@ // CERN, CN Division, ASD group // History: first implementation, based on object model of // 2nd December 1995, G.Cosmo -// ---------- G4IMuEnergyLoss physics process ----------- +// ---------- G4VIMuEnergyLoss physics process ----------- // by Laszlo Urban, September 1997 // ************************************************************** // It is the implementation of the NEW UNIFIED ENERGY LOSS PROCESS. @@ -27,7 +27,7 @@ // -------------------------------------------------------------- -#include "G4IMuEnergyLoss.hh" +#include "G4VIMuEnergyLoss.hh" #include "G4EnergyLossTables.hh" #include "G4Poisson.hh" @@ -41,44 +41,44 @@ // 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 G4IMuEnergyLoss.hh) +// functions Get/Set/Plus/MinusNUMBEROFPROCESSES (see G4VIMuEnergyLoss.hh) -G4int G4IMuEnergyLoss::NUMBEROFPROCESSES = 3 ; -//G4int G4IMuEnergyLoss::NUMBEROFPROCESSES = 2 ; -G4PhysicsTable** G4IMuEnergyLoss::RecorderOfmuplusProcess = +G4int G4VIMuEnergyLoss::NUMBEROFPROCESSES = 3 ; +//G4int G4VIMuEnergyLoss::NUMBEROFPROCESSES = 2 ; +G4PhysicsTable** G4VIMuEnergyLoss::RecorderOfmuplusProcess = new G4PhysicsTable*[10] ; -G4int G4IMuEnergyLoss::CounterOfmuplusProcess = 0 ; +G4int G4VIMuEnergyLoss::CounterOfmuplusProcess = 0 ; -G4PhysicsTable* G4IMuEnergyLoss::theDEDXmuplusTable = NULL ; -G4PhysicsTable* G4IMuEnergyLoss::theRangemuplusTable = NULL ; -G4PhysicsTable* G4IMuEnergyLoss::theInverseRangemuplusTable = NULL ; -G4PhysicsTable* G4IMuEnergyLoss::theLabTimemuplusTable = NULL ; -G4PhysicsTable* G4IMuEnergyLoss::theProperTimemuplusTable = NULL ; +G4PhysicsTable* G4VIMuEnergyLoss::theDEDXmuplusTable = NULL ; +G4PhysicsTable* G4VIMuEnergyLoss::theRangemuplusTable = NULL ; +G4PhysicsTable* G4VIMuEnergyLoss::theInverseRangemuplusTable = NULL ; +G4PhysicsTable* G4VIMuEnergyLoss::theLabTimemuplusTable = NULL ; +G4PhysicsTable* G4VIMuEnergyLoss::theProperTimemuplusTable = NULL ; -G4double G4IMuEnergyLoss::CutInmupluslossTable = 0. ; -G4double G4IMuEnergyLoss::CutInmuminuslossTable = 0. ; +G4double G4VIMuEnergyLoss::CutInmupluslossTable = 0. ; +G4double G4VIMuEnergyLoss::CutInmuminuslossTable = 0. ; -G4PhysicsTable* G4IMuEnergyLoss::themuplusRangeCoeffATable = NULL ; -G4PhysicsTable* G4IMuEnergyLoss::themuplusRangeCoeffBTable = NULL ; -G4PhysicsTable* G4IMuEnergyLoss::themuplusRangeCoeffCTable = NULL ; +G4PhysicsTable* G4VIMuEnergyLoss::themuplusRangeCoeffATable = NULL ; +G4PhysicsTable* G4VIMuEnergyLoss::themuplusRangeCoeffBTable = NULL ; +G4PhysicsTable* G4VIMuEnergyLoss::themuplusRangeCoeffCTable = NULL ; -G4PhysicsTable** G4IMuEnergyLoss::RecorderOfmuminusProcess = +G4PhysicsTable** G4VIMuEnergyLoss::RecorderOfmuminusProcess = new G4PhysicsTable*[10] ; -G4int G4IMuEnergyLoss::CounterOfmuminusProcess = 0 ; +G4int G4VIMuEnergyLoss::CounterOfmuminusProcess = 0 ; -G4PhysicsTable* G4IMuEnergyLoss::theDEDXmuminusTable = NULL ; -G4PhysicsTable* G4IMuEnergyLoss::theRangemuminusTable = NULL ; -G4PhysicsTable* G4IMuEnergyLoss::theInverseRangemuminusTable = NULL ; -G4PhysicsTable* G4IMuEnergyLoss::theLabTimemuminusTable = NULL ; -G4PhysicsTable* G4IMuEnergyLoss::theProperTimemuminusTable = NULL ; +G4PhysicsTable* G4VIMuEnergyLoss::theDEDXmuminusTable = NULL ; +G4PhysicsTable* G4VIMuEnergyLoss::theRangemuminusTable = NULL ; +G4PhysicsTable* G4VIMuEnergyLoss::theInverseRangemuminusTable = NULL ; +G4PhysicsTable* G4VIMuEnergyLoss::theLabTimemuminusTable = NULL ; +G4PhysicsTable* G4VIMuEnergyLoss::theProperTimemuminusTable = NULL ; -G4PhysicsTable* G4IMuEnergyLoss::themuminusRangeCoeffATable = NULL ; -G4PhysicsTable* G4IMuEnergyLoss::themuminusRangeCoeffBTable = NULL ; -G4PhysicsTable* G4IMuEnergyLoss::themuminusRangeCoeffCTable = NULL ; +G4PhysicsTable* G4VIMuEnergyLoss::themuminusRangeCoeffATable = NULL ; +G4PhysicsTable* G4VIMuEnergyLoss::themuminusRangeCoeffBTable = NULL ; +G4PhysicsTable* G4VIMuEnergyLoss::themuminusRangeCoeffCTable = NULL ; // constructor and destructor -G4IMuEnergyLoss::G4IMuEnergyLoss(const G4String& processName) +G4VIMuEnergyLoss::G4VIMuEnergyLoss(const G4String& processName) : G4IVContinuousDiscreteProcess (processName), dToverTini(0.20), // max.relative range loss in one Step = 20% LowestKineticEnergy(1.00*keV), @@ -102,7 +102,7 @@ G4IMuEnergyLoss::G4IMuEnergyLoss(const G4String& processName) lastCutInRange = 0. ; } -G4IMuEnergyLoss::~G4IMuEnergyLoss() +G4VIMuEnergyLoss::~G4VIMuEnergyLoss() { if(theLossTable) { theLossTable->clearAndDestroy(); @@ -114,7 +114,7 @@ G4IMuEnergyLoss::~G4IMuEnergyLoss() // methods............................................. - void G4IMuEnergyLoss::BuildDEDXTable( + void G4VIMuEnergyLoss::BuildDEDXTable( const G4ParticleDefinition& aParticleType) { ParticleMass = aParticleType.GetPDGMass() ; @@ -302,7 +302,7 @@ G4IMuEnergyLoss::~G4IMuEnergyLoss() } - void G4IMuEnergyLoss::BuildRangeTable( + void G4VIMuEnergyLoss::BuildRangeTable( const G4ParticleDefinition& aParticleType) // Build range table from the energy loss table { @@ -355,7 +355,7 @@ G4IMuEnergyLoss::~G4IMuEnergyLoss() } - void G4IMuEnergyLoss::BuildTimeTables( + void G4VIMuEnergyLoss::BuildTimeTables( const G4ParticleDefinition& aParticleType) // Build time tables from the energy loss table { @@ -436,7 +436,7 @@ G4IMuEnergyLoss::~G4IMuEnergyLoss() -void G4IMuEnergyLoss::BuildRangeVector(G4int materialIndex, +void G4VIMuEnergyLoss::BuildRangeVector(G4int materialIndex, G4PhysicsLogVector* rangeVector) // create range vector for a material { @@ -529,7 +529,7 @@ void G4IMuEnergyLoss::BuildRangeVector(G4int materialIndex, } -void G4IMuEnergyLoss::BuildLabTimeVector(G4int materialIndex, +void G4VIMuEnergyLoss::BuildLabTimeVector(G4int materialIndex, G4PhysicsLogVector* timeVector) // create lab time vector for a material { @@ -601,7 +601,7 @@ void G4IMuEnergyLoss::BuildLabTimeVector(G4int materialIndex, } -void G4IMuEnergyLoss::BuildProperTimeVector(G4int materialIndex, +void G4VIMuEnergyLoss::BuildProperTimeVector(G4int materialIndex, G4PhysicsLogVector* timeVector) // create proper time vector for a material { @@ -671,7 +671,7 @@ void G4IMuEnergyLoss::BuildProperTimeVector(G4int materialIndex, } -G4double G4IMuEnergyLoss::RangeIntLin(G4PhysicsVector* physicsVector, +G4double G4VIMuEnergyLoss::RangeIntLin(G4PhysicsVector* physicsVector, G4int nbin) // num. integration, linear binning { @@ -707,7 +707,7 @@ G4double G4IMuEnergyLoss::RangeIntLin(G4PhysicsVector* physicsVector, } -G4double G4IMuEnergyLoss::RangeIntLog(G4PhysicsVector* physicsVector, +G4double G4VIMuEnergyLoss::RangeIntLog(G4PhysicsVector* physicsVector, G4int nbin) // num. integration, logarithmic binning { @@ -744,7 +744,7 @@ G4double G4IMuEnergyLoss::RangeIntLog(G4PhysicsVector* physicsVector, } -G4double G4IMuEnergyLoss::LabTimeIntLog(G4PhysicsVector* physicsVector, +G4double G4VIMuEnergyLoss::LabTimeIntLog(G4PhysicsVector* physicsVector, G4int nbin) // num. integration, logarithmic binning { @@ -781,7 +781,7 @@ G4double G4IMuEnergyLoss::LabTimeIntLog(G4PhysicsVector* physicsVector, } -G4double G4IMuEnergyLoss::ProperTimeIntLog(G4PhysicsVector* physicsVector, +G4double G4VIMuEnergyLoss::ProperTimeIntLog(G4PhysicsVector* physicsVector, G4int nbin) // num. integration, logarithmic binning { @@ -819,7 +819,7 @@ G4double G4IMuEnergyLoss::ProperTimeIntLog(G4PhysicsVector* physicsVector, } -void G4IMuEnergyLoss::BuildRangeCoeffATable( +void G4VIMuEnergyLoss::BuildRangeCoeffATable( const G4ParticleDefinition& aParticleType) // Build tables of coefficients for the energy loss calculation { @@ -906,7 +906,7 @@ void G4IMuEnergyLoss::BuildRangeCoeffATable( } -void G4IMuEnergyLoss::BuildRangeCoeffBTable( +void G4VIMuEnergyLoss::BuildRangeCoeffBTable( const G4ParticleDefinition& aParticleType) // Build tables of coefficients for the energy loss calculation { @@ -993,7 +993,7 @@ void G4IMuEnergyLoss::BuildRangeCoeffBTable( } } -void G4IMuEnergyLoss::BuildRangeCoeffCTable( +void G4VIMuEnergyLoss::BuildRangeCoeffCTable( const G4ParticleDefinition& aParticleType) // Build tables of coefficients for the energy loss calculation { @@ -1079,7 +1079,7 @@ void G4IMuEnergyLoss::BuildRangeCoeffCTable( } } - void G4IMuEnergyLoss::BuildInverseRangeTable( + void G4VIMuEnergyLoss::BuildInverseRangeTable( const G4ParticleDefinition& aParticleType) // Build inverse table of the range table { @@ -1145,7 +1145,7 @@ void G4IMuEnergyLoss::BuildRangeCoeffCTable( } } -void G4IMuEnergyLoss::InvertRangeVector(G4int materialIndex, +void G4VIMuEnergyLoss::InvertRangeVector(G4int materialIndex, G4PhysicsLogVector* aVector) // invert range vector for a material { @@ -1197,7 +1197,7 @@ void G4IMuEnergyLoss::InvertRangeVector(G4int materialIndex, -G4VParticleChange* G4IMuEnergyLoss::AlongStepDoIt( +G4VParticleChange* G4VIMuEnergyLoss::AlongStepDoIt( const G4Track& trackData,const G4Step& stepData) // compute the energy loss after a Step { @@ -1337,7 +1337,7 @@ G4VParticleChange* G4IMuEnergyLoss::AlongStepDoIt( } -G4double G4IMuEnergyLoss::GetLossWithFluct(const G4DynamicParticle *aParticle, +G4double G4VIMuEnergyLoss::GetLossWithFluct(const G4DynamicParticle *aParticle, G4Material *aMaterial) // calculate actual loss from the mean loss // The model used to get the fluctuation is the same as in diff --git a/source/processes/electromagnetic/muons/src/G4VMuEnergyLoss.cc b/source/processes/electromagnetic/muons/src/G4VMuEnergyLoss.cc new file mode 100644 index 0000000000..182a8dfda6 --- /dev/null +++ b/source/processes/electromagnetic/muons/src/G4VMuEnergyLoss.cc @@ -0,0 +1,454 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4VMuEnergyLoss.cc,v 1.5 2000/06/13 16:36:25 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// -------------------------------------------------------------- +// GEANT 4 class implementation file +// +// For information related to this code contact: +// CERN, CN Division, ASD group +// History: first implementation, based on object model of +// 2nd December 1995, G.Cosmo +// ---------- G4VMuEnergyLoss 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!) +// cleanup L.Urban on 23/10/98 +// corrections due to new e.m. structure L.Urban 10/02/00 +// -------------------------------------------------------------- + + +#include "G4VMuEnergyLoss.hh" +#include "G4EnergyLossTables.hh" +#include "G4Poisson.hh" + +// Initialisation of static members ******************************************* + +G4int G4VMuEnergyLoss::NbOfProcesses = 3 ; +G4PhysicsTable** G4VMuEnergyLoss::RecorderOfmuplusProcess = + new G4PhysicsTable*[10] ; +G4PhysicsTable** G4VMuEnergyLoss::RecorderOfmuminusProcess = + new G4PhysicsTable*[10] ; +G4int G4VMuEnergyLoss::CounterOfmuplusProcess = 0 ; +G4int G4VMuEnergyLoss::CounterOfmuminusProcess = 0 ; + + +G4PhysicsTable* G4VMuEnergyLoss::theDEDXmuplusTable = NULL ; +G4PhysicsTable* G4VMuEnergyLoss::theRangemuplusTable = NULL ; +G4PhysicsTable* G4VMuEnergyLoss::theInverseRangemuplusTable = NULL ; +G4PhysicsTable* G4VMuEnergyLoss::theLabTimemuplusTable = NULL ; +G4PhysicsTable* G4VMuEnergyLoss::theProperTimemuplusTable = NULL ; + +G4PhysicsTable* G4VMuEnergyLoss::theDEDXmuminusTable = NULL ; +G4PhysicsTable* G4VMuEnergyLoss::theRangemuminusTable = NULL ; +G4PhysicsTable* G4VMuEnergyLoss::theInverseRangemuminusTable = NULL ; +G4PhysicsTable* G4VMuEnergyLoss::theLabTimemuminusTable = NULL ; +G4PhysicsTable* G4VMuEnergyLoss::theProperTimemuminusTable = NULL ; + +G4PhysicsTable* G4VMuEnergyLoss::themuplusRangeCoeffATable = NULL ; +G4PhysicsTable* G4VMuEnergyLoss::themuplusRangeCoeffBTable = NULL ; +G4PhysicsTable* G4VMuEnergyLoss::themuplusRangeCoeffCTable = NULL ; +G4PhysicsTable* G4VMuEnergyLoss::themuminusRangeCoeffATable = NULL ; +G4PhysicsTable* G4VMuEnergyLoss::themuminusRangeCoeffBTable = NULL ; +G4PhysicsTable* G4VMuEnergyLoss::themuminusRangeCoeffCTable = NULL ; + +G4double G4VMuEnergyLoss::LowerBoundEloss = 1.*keV ; +G4double G4VMuEnergyLoss::UpperBoundEloss = 1000000.*TeV ; +G4int G4VMuEnergyLoss::NbinEloss = 150 ; +G4double G4VMuEnergyLoss::RTable,G4VMuEnergyLoss::LOGRTable; + +G4EnergyLossMessenger* G4VMuEnergyLoss::eLossMessenger = NULL ; + +// constructor and destructor + +G4VMuEnergyLoss::G4VMuEnergyLoss(const G4String& processName) + : G4VEnergyLoss (processName), + theLossTable(NULL), + theRangeCoeffATable(NULL), + theRangeCoeffBTable(NULL), + theRangeCoeffCTable(NULL), + lastgammaCutInRange(0.), + lastelectronCutInRange(0.), + theElectron ( G4Electron::Electron() ), + thePositron ( G4Positron::Positron() ), + theMuonPlus ( G4MuonPlus::MuonPlus() ), + theMuonMinus ( G4MuonMinus::MuonMinus() ) +{ +} + +G4VMuEnergyLoss::~G4VMuEnergyLoss() +{ + if(theLossTable) { + theLossTable->clearAndDestroy(); + delete theLossTable; theLossTable = NULL; + } + +} + + void G4VMuEnergyLoss::BuildDEDXTable( + const G4ParticleDefinition& aParticleType) +{ + + // calculate data members LOGRTable,RTable first + G4double lrate = log(UpperBoundEloss/LowerBoundEloss); + LOGRTable=lrate/NbinEloss; + RTable =exp(LOGRTable); + + G4bool MakeTable ; + ParticleMass = aParticleType.GetPDGMass() ; + G4double Charge = aParticleType.GetPDGCharge()/eplus ; + G4double gammaCutInRange = G4Gamma::Gamma()->GetCuts(); + G4double electronCutInRange = G4Electron::Electron()->GetCuts(); + + MakeTable = false ; + // Create tables only if there are new cut values + if((gammaCutInRange == lastgammaCutInRange) && + (electronCutInRange == lastelectronCutInRange)) + { + ; + } + else + { + if((Charge > 0.)&&(CounterOfmuplusProcess==NbOfProcesses)) + MakeTable = true ; + if((Charge < 0.)&&(CounterOfmuminusProcess==NbOfProcesses)) + MakeTable = true ; + } + + 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=RecorderOfmuplusProcess; + CounterOfProcess=CounterOfmuplusProcess; + + if(CounterOfProcess == NbOfProcesses) + { + if(theDEDXmuplusTable) + { theDEDXmuplusTable->clearAndDestroy(); + delete theDEDXmuplusTable; } + + theDEDXmuplusTable = new G4PhysicsTable(numOfMaterials); + theDEDXTable = theDEDXmuplusTable; + } + } + else + { + RecorderOfProcess=RecorderOfmuminusProcess; + CounterOfProcess=CounterOfmuminusProcess; + + if(CounterOfProcess == NbOfProcesses) + { + if(theDEDXmuminusTable) + { theDEDXmuminusTable->clearAndDestroy(); + delete theDEDXmuminusTable; } + theDEDXmuminusTable = new G4PhysicsTable(numOfMaterials); + theDEDXTable = theDEDXmuminusTable; + } + } + + if(CounterOfProcess == NbOfProcesses) + { + // loop for materials + G4double LowEdgeEnergy , Value ; + G4bool isOutRange ; + G4int J; + G4PhysicsTable* pointer ; + + for (J=0; JGetLowEdgeEnergy(i) ; + 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( Charge >0.) + CounterOfmuplusProcess=0 ; + else + CounterOfmuminusProcess=0 ; + + ParticleMass = aParticleType.GetPDGMass() ; + + if(Charge > 0.) + { + // Build range table + theRangemuplusTable = BuildRangeTable( + theDEDXmuplusTable,theRangemuplusTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + // Build lab/proper time tables + theLabTimemuplusTable = BuildLabTimeTable(theDEDXmuplusTable, + theLabTimemuplusTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + theProperTimemuplusTable = BuildProperTimeTable(theDEDXmuplusTable, + theProperTimemuplusTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + // Build coeff tables for the energy loss calculation + themuplusRangeCoeffATable = BuildRangeCoeffATable(theRangemuplusTable, + themuplusRangeCoeffATable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + themuplusRangeCoeffBTable = BuildRangeCoeffBTable(theRangemuplusTable, + themuplusRangeCoeffBTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + themuplusRangeCoeffCTable = BuildRangeCoeffCTable(theRangemuplusTable, + themuplusRangeCoeffCTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + // invert the range table + theInverseRangemuplusTable = BuildInverseRangeTable(theRangemuplusTable, + themuplusRangeCoeffATable, + themuplusRangeCoeffBTable, + themuplusRangeCoeffCTable, + theInverseRangemuplusTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + } + else + { + // Build range table + theRangemuminusTable = BuildRangeTable( + theDEDXmuminusTable,theRangemuminusTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + // Build lab/proper time tables + theLabTimemuminusTable = BuildLabTimeTable(theDEDXmuminusTable, + theLabTimemuminusTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + theProperTimemuminusTable = BuildProperTimeTable(theDEDXmuminusTable, + theProperTimemuminusTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + // Build coeff tables for the energy loss calculation + themuminusRangeCoeffATable = BuildRangeCoeffATable(theRangemuminusTable, + themuminusRangeCoeffATable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + themuminusRangeCoeffBTable = BuildRangeCoeffBTable(theRangemuminusTable, + themuminusRangeCoeffBTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + themuminusRangeCoeffCTable = BuildRangeCoeffCTable(theRangemuminusTable, + themuminusRangeCoeffCTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + // invert the range table + theInverseRangemuminusTable = BuildInverseRangeTable(theRangemuminusTable, + themuminusRangeCoeffATable, + themuminusRangeCoeffBTable, + themuminusRangeCoeffCTable, + theInverseRangemuminusTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + // invert the range table + } + + } + + // make the energy loss and the range table available + G4EnergyLossTables::Register(&aParticleType, + (Charge > 0)? theDEDXmuplusTable: theDEDXmuminusTable, + (Charge > 0)? theRangemuplusTable: theRangemuminusTable, + (Charge > 0)? theInverseRangemuplusTable: theInverseRangemuminusTable, + (Charge > 0)? theLabTimemuplusTable: theLabTimemuminusTable, + (Charge > 0)? theProperTimemuplusTable: theProperTimemuminusTable, + LowerBoundEloss, UpperBoundEloss, 1.,NbinEloss); + + lastgammaCutInRange = gammaCutInRange ; + lastelectronCutInRange = electronCutInRange ; + +} + + +G4double G4VMuEnergyLoss::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.... + + G4double KineticEnergy,StepLimit; + 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 ; + } + + + G4double Thigh = UpperBoundEloss/RTable ; + KineticEnergy = aParticle->GetKineticEnergy(); + + bin = G4int(log(KineticEnergy/LowerBoundEloss)/LOGRTable) ; + EnergyBinNumber = bin ; + + index = aMaterial->GetIndex() ; + + if( KineticEnergy < LowerBoundEloss ) + { + fdEdx = sqrt(KineticEnergy/LowerBoundEloss)* + (*theDEDXTable)(index)->GetValue(LowerBoundEloss,isOutRange) ; + + fRangeNow = sqrt(KineticEnergy/LowerBoundEloss)* + (*theRangeTable)(index)->GetValue(LowerBoundEloss,isOutRange) ; + + StepLimit = fRangeNow ; + } + else if (KineticEnergy > Thigh ) + { + fdEdx = (*theDEDXTable)(index)->GetValue(Thigh,isOutRange); + fRangeNow = (*theRangeTable)(index)->GetValue(Thigh,isOutRange); + if (fdEdx > 0.) fRangeNow += (KineticEnergy-Thigh)/fdEdx; + StepLimit = c1lim*fRangeNow; + } + 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 ; + + // compute the (random) Step limit .............. + 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 ; + +} + +G4VParticleChange* G4VMuEnergyLoss::AlongStepDoIt( + const G4Track& trackData,const G4Step& stepData) +{ + // compute the energy loss after a Step + + static const G4double faclow = 1.5 ; + + // 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; + const G4double linLossLimit = 0.05 ; + + G4double MeanLoss, finalT; + + if (E < MinKineticEnergy) finalT = 0.; + else if ( E< faclow*LowerBoundEloss) + { + if (Step >= fRangeNow) finalT = 0.; + else finalT = E*(1.-Step/fRangeNow) ; + } + + else if (E>=UpperBoundEloss) finalT = E - Step*fdEdx; + + else if (Step >= fRangeNow) finalT = 0.; + + else + { + if(Step/fRangeNow < linLossLimit) finalT = E-Step*fdEdx ; + else + { + if (charge<0.) finalT = G4EnergyLossTables::GetPreciseEnergyFromRange( + theMuonMinus,fRangeNow-Step,aMaterial); + else finalT = G4EnergyLossTables::GetPreciseEnergyFromRange( + theMuonPlus,fRangeNow-Step,aMaterial); + } + } + + if(finalT < MinKineticEnergy) finalT = 0. ; + + MeanLoss = E-finalT ; + + //now the loss with fluctuation + if ((EnlossFlucFlag) && (finalT > 0.) && (finalT < E)&&(E > LowerBoundEloss)) + + { + finalT = E-GetLossWithFluct(aParticle,aMaterial,MeanLoss); + 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; +} + + + diff --git a/source/processes/electromagnetic/standard/GNUmakefile b/source/processes/electromagnetic/standard/GNUmakefile index a411b4d6a1..806b0aa482 100644 --- a/source/processes/electromagnetic/standard/GNUmakefile +++ b/source/processes/electromagnetic/standard/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.2 1999/06/05 12:45:59 stesting Exp $ +# $Id: GNUmakefile,v 1.3 2000/01/07 13:35:06 grichine Exp $ # -------------------------------------------------------------------- # GNUmakefile for electromagnetic sub-library. John Allison, 25/6/98. # -------------------------------------------------------------------- @@ -20,6 +20,7 @@ CPPFLAGS += -I$(G4BASE)/global/management/include \ -I$(G4BASE)/track/include \ -I$(G4BASE)/processes/management/include \ -I$(G4BASE)/processes/electromagnetic/utils/include \ + -I$(G4BASE)/processes/electromagnetic/muons/include \ -I$(G4BASE)/management/include \ -I$(G4BASE)/particles/management/include \ -I$(G4BASE)/particles/bosons/include \ diff --git a/source/processes/electromagnetic/standard/History b/source/processes/electromagnetic/standard/History new file mode 100644 index 0000000000..6c3162b64d --- /dev/null +++ b/source/processes/electromagnetic/standard/History @@ -0,0 +1,61 @@ +$Id: History,v 1.3 2000/06/13 16:54:07 maire 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 * + ---------------------------------------------------------- + +13 jun 00: mma (stand-V01-01-04) +- static pointer MinDeltaEnergy removed from destructor of + G4VeEnergyLoss and G4VhEnergyLoss + +07 jun 00: mma (stand-V01-01-03) +- virtual destructor for G4VEnergyLoss + +24 may 00: mma (stand-V01-01-02) +- merge 'Plus' processes into standard +- minCut=10 KeV for brems +- corrections in ionisation (Laszlo) + + +27 apr 00 mma (em-V01-01-01) +- G4endl (dec/iso) + +26 apr 00 mma (em-V01-01-00) +- all EnergyLoss classes renamed G4V... + Most classes in standard and muons affected. +- G4Muls moved in utils +- bugs fixe in MuPairProduction +- cowork with geant4-01-01-ref-02 + +02 mar 00 mma (em-V01-00-00) +- new G4VEnergyLoss class and related structure +- cowork with geant4-01-00-ref-06 + +10 nov 99 mma (em-V00-01-03) +- migration to STL: remove RWT hash dictionnary + +14th June 1999 John Allison (em-01-00-05b) +- Muon corrections in G4MultipleScattering.cc, G4MuBremsstrahlung.cc + and G4MuPairProduction.cc by Laszlo Urban, Pedro Arce. + (Also in rocesses/photoleplon_hadron/src/G4MuNuclearInteraction.cc.) + +5th June 1999 John Allison +- standard/GNUmakefile: Force non-optimised compliation of some + files on HP with aCC: HP ANSI C++ B3910B A.01.15. + +May 29, 1999: John Allison +- Added electromagnetic/lowenergy to GNUmakefile and + electromagnetic/GNUmakefile.. diff --git a/source/processes/electromagnetic/standard/include/G4ComptonScattering.hh b/source/processes/electromagnetic/standard/include/G4ComptonScattering.hh index 3eac7be262..b0cc9e71a8 100644 --- a/source/processes/electromagnetic/standard/include/G4ComptonScattering.hh +++ b/source/processes/electromagnetic/standard/include/G4ComptonScattering.hh @@ -5,21 +5,12 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ComptonScattering.hh,v 1.1.10.1 1999/12/07 20:50:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ComptonScattering.hh,v 1.4 1999/12/17 16:20:49 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -// -// ------------------------------------------------------------ -// GEANT 4 class header file --- Copyright CERN 1995 -// CERN Geneva Switzerland -// -// For information related to this code contact: -// CERN, CN Division, ASD group -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo // ------------ G4ComptonScattering physics process ------ // by Michel Maire, April 1996 -// ************************************************************ +// // 10-06-96, updated by M.Maire // 21-06-96, SetCuts implementation, M.Maire // 06-01-97, crossection table + meanfreepath table, M.Maire @@ -29,6 +20,14 @@ // 13-08-98, new methods SetBining() PrintInfo() // ------------------------------------------------------------ +// class description +// +// inherit from G4VDiscreteProcess +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #ifndef G4ComptonScattering_h #define G4ComptonScattering_h 1 @@ -43,34 +42,58 @@ #include "G4Electron.hh" #include "G4Step.hh" +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class G4ComptonScattering : public G4VDiscreteProcess { - public: + public: // with description G4ComptonScattering(const G4String& processName ="compt"); ~G4ComptonScattering(); G4bool IsApplicable(const G4ParticleDefinition&); + // true for Gamma only. void SetPhysicsTableBining(G4double lowE, G4double highE, G4int nBins); + // Allows to define the binning of the PhysicsTables, + // before to build them. void BuildPhysicsTable(const G4ParticleDefinition& GammaType); + // 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. - void PrintInfoDefinition(); + void PrintInfoDefinition(); + // Print few lines of informations about the process: validity range, + // origine ..etc.. + // Invoked by BuildPhysicsTable(). G4double GetMeanFreePath(const G4Track& aTrack, 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. + G4double GetMicroscopicCrossSection(G4DynamicParticle* aDynamicGamma, - G4Element* anElement); - + G4Element* anElement); + // It returns the total CrossSectionPerAtom of the process, + // for the current DynamicGamma (energy), in anElement. + G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); - + // 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 ComputeCrossSectionPerAtom(G4double GammaEnergy, diff --git a/source/processes/electromagnetic/standard/include/G4ComptonScattering.icc b/source/processes/electromagnetic/standard/include/G4ComptonScattering.icc index 26c70f1337..c2c4ad7a77 100644 --- a/source/processes/electromagnetic/standard/include/G4ComptonScattering.icc +++ b/source/processes/electromagnetic/standard/include/G4ComptonScattering.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ComptonScattering.icc,v 1.1.10.1 1999/12/07 20:50:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ComptonScattering.icc,v 1.2 1999/12/15 14:51:45 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // --------------------------------------------------------------- diff --git a/source/processes/electromagnetic/standard/include/G4EnergyLossMessenger.hh b/source/processes/electromagnetic/standard/include/G4EnergyLossMessenger.hh index 9422b84d28..a1b7b4edf3 100644 --- a/source/processes/electromagnetic/standard/include/G4EnergyLossMessenger.hh +++ b/source/processes/electromagnetic/standard/include/G4EnergyLossMessenger.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4EnergyLossMessenger.hh,v 1.1.10.1 1999/12/07 20:50:48 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4EnergyLossMessenger.hh,v 1.3 2000/05/23 14:39:27 urban Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // @@ -37,6 +37,7 @@ class G4EnergyLossMessenger: public G4UImessenger G4UIcmdWithABool* RndmStepCmd; G4UIcmdWithABool* EnlossFlucCmd; + G4UIcmdWithABool* SubSecCmd; G4UIcommand* StepFuncCmd; }; diff --git a/source/processes/electromagnetic/standard/include/G4GammaConversion.hh b/source/processes/electromagnetic/standard/include/G4GammaConversion.hh index cd3331f8ea..23feff4dee 100644 --- a/source/processes/electromagnetic/standard/include/G4GammaConversion.hh +++ b/source/processes/electromagnetic/standard/include/G4GammaConversion.hh @@ -5,21 +5,12 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4GammaConversion.hh,v 1.1.10.1 1999/12/07 20:50:48 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4GammaConversion.hh,v 1.4 1999/12/17 18:26:11 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// CERN Geneva Switzerland -// -// For information related to this code contact: -// CERN, CN Division, ASD group -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo // ------------ G4GammaConversion physics process ------ // by Michel Maire, 24 May 1996 -// ************************************************************ +// // 11-06-96, Added GetRandomAtom() method and new data member // for cumulative total cross section, by M.Maire // 21-06-96, SetCuts inplementation, M.Maire @@ -30,6 +21,15 @@ // 13-08-98, new methods SetBining() PrintInfo() // ------------------------------------------------------------ +// class description +// +// gamma ---> e+ e- +// inherit from G4VDiscreteProcess +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #ifndef G4GammaConversion_h #define G4GammaConversion_h 1 @@ -44,34 +44,59 @@ #include "G4Electron.hh" #include "G4Positron.hh" #include "G4Step.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class G4GammaConversion : public G4VDiscreteProcess { - public: + public: // with description G4GammaConversion(const G4String& processName ="conv"); ~G4GammaConversion(); G4bool IsApplicable(const G4ParticleDefinition&); - + // true for Gamma only. + void SetPhysicsTableBining(G4double lowE, G4double highE, G4int nBins); - - void BuildPhysicsTable(const G4ParticleDefinition& GammaType); + // Allows to define the binning of the PhysicsTables, + // before to build them. + void BuildPhysicsTable(const G4ParticleDefinition& GammaType); + // 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. + void PrintInfoDefinition(); + // Print few lines of informations about the process: validity range, + // origine ..etc.. + // Invoked by BuildPhysicsTable(). G4double GetMeanFreePath(const G4Track& aTrack, 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. + G4double GetMicroscopicCrossSection(const G4DynamicParticle* aDynamicGamma, G4Element* anElement); - + // It returns the total CrossSectionPerAtom of the process, + // for the current DynamicGamma (energy), in anElement. + G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); - + // 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(G4double GammaEnergy, diff --git a/source/processes/electromagnetic/standard/include/G4GammaConversion.icc b/source/processes/electromagnetic/standard/include/G4GammaConversion.icc index 6eabebc438..177849d7cd 100644 --- a/source/processes/electromagnetic/standard/include/G4GammaConversion.icc +++ b/source/processes/electromagnetic/standard/include/G4GammaConversion.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4GammaConversion.icc,v 1.1.10.1 1999/12/07 20:50:48 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4GammaConversion.icc,v 1.2 1999/12/15 14:51:45 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // --------------------------------------------------------------- diff --git a/source/processes/electromagnetic/standard/include/G4IeBremsstrahlung.hh b/source/processes/electromagnetic/standard/include/G4IeBremsstrahlung.hh index 2f390746b2..ed6b1a6d65 100644 --- a/source/processes/electromagnetic/standard/include/G4IeBremsstrahlung.hh +++ b/source/processes/electromagnetic/standard/include/G4IeBremsstrahlung.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IeBremsstrahlung.hh,v 1.2.8.1 1999/12/07 20:50:48 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IeBremsstrahlung.hh,v 1.4 2000/04/25 14:33:00 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // ------------------------------------------------------------ @@ -39,7 +39,7 @@ #include "G4ios.hh" #include "globals.hh" #include "Randomize.hh" -#include "G4IeEnergyLoss.hh" +#include "G4VIeEnergyLoss.hh" #include "G4EnergyLossTables.hh" #include "G4Track.hh" #include "G4Step.hh" @@ -50,7 +50,7 @@ #include "G4PhysicsTable.hh" #include "G4PhysicsLogVector.hh" -class G4IeBremsstrahlung : public G4IeEnergyLoss +class G4IeBremsstrahlung : public G4VIeEnergyLoss { public: diff --git a/source/processes/electromagnetic/standard/include/G4IeBremsstrahlung.icc b/source/processes/electromagnetic/standard/include/G4IeBremsstrahlung.icc index 357197f736..28c22cda36 100644 --- a/source/processes/electromagnetic/standard/include/G4IeBremsstrahlung.icc +++ b/source/processes/electromagnetic/standard/include/G4IeBremsstrahlung.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IeBremsstrahlung.icc,v 1.2.8.1.2.1 1999/12/08 17:34:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IeBremsstrahlung.icc,v 1.3 1999/12/15 14:51:46 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // --------------------------------------------------------------- diff --git a/source/processes/electromagnetic/standard/include/G4IeIonisation.hh b/source/processes/electromagnetic/standard/include/G4IeIonisation.hh index 249dd478a9..dc2b084b05 100644 --- a/source/processes/electromagnetic/standard/include/G4IeIonisation.hh +++ b/source/processes/electromagnetic/standard/include/G4IeIonisation.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IeIonisation.hh,v 1.2.8.1.2.2 1999/12/14 07:08:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IeIonisation.hh,v 1.4 2000/04/25 14:33:00 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // ------------------------------------------------------------ @@ -34,7 +34,7 @@ #include "g4std/iomanip" #include "globals.hh" #include "Randomize.hh" -#include "G4IeEnergyLoss.hh" +#include "G4VIeEnergyLoss.hh" #include "G4EnergyLossTables.hh" #include "globals.hh" #include "G4Track.hh" @@ -45,7 +45,7 @@ #include "G4PhysicsLogVector.hh" #include "G4PhysicsLinearVector.hh" -class G4IeIonisation : public G4IeEnergyLoss +class G4IeIonisation : public G4VIeEnergyLoss { public: diff --git a/source/processes/electromagnetic/standard/include/G4IeIonisation.icc b/source/processes/electromagnetic/standard/include/G4IeIonisation.icc index 89a5043910..311d5527ff 100644 --- a/source/processes/electromagnetic/standard/include/G4IeIonisation.icc +++ b/source/processes/electromagnetic/standard/include/G4IeIonisation.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IeIonisation.icc,v 1.2.8.1.2.1 1999/12/08 17:34:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IeIonisation.icc,v 1.3 1999/12/15 14:51:46 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // --------------------------------------------------------------- diff --git a/source/processes/electromagnetic/standard/include/G4IeplusAnnihilation.hh b/source/processes/electromagnetic/standard/include/G4IeplusAnnihilation.hh index 28037031a7..351d5fb8ed 100644 --- a/source/processes/electromagnetic/standard/include/G4IeplusAnnihilation.hh +++ b/source/processes/electromagnetic/standard/include/G4IeplusAnnihilation.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IeplusAnnihilation.hh,v 1.1.10.1 1999/12/07 20:50:49 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IeplusAnnihilation.hh,v 1.2 1999/12/15 14:51:46 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // ------------------------------------------------------------ diff --git a/source/processes/electromagnetic/standard/include/G4IeplusAnnihilation.icc b/source/processes/electromagnetic/standard/include/G4IeplusAnnihilation.icc index b87412151b..f3f8c20084 100644 --- a/source/processes/electromagnetic/standard/include/G4IeplusAnnihilation.icc +++ b/source/processes/electromagnetic/standard/include/G4IeplusAnnihilation.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IeplusAnnihilation.icc,v 1.1.10.1.2.1 1999/12/08 17:34:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IeplusAnnihilation.icc,v 1.2 1999/12/15 14:51:46 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // --------------------------------------------------------------- diff --git a/source/processes/electromagnetic/standard/include/G4IhIonisation.hh b/source/processes/electromagnetic/standard/include/G4IhIonisation.hh index f9d8f71f6d..fa613be667 100644 --- a/source/processes/electromagnetic/standard/include/G4IhIonisation.hh +++ b/source/processes/electromagnetic/standard/include/G4IhIonisation.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IhIonisation.hh,v 1.2.8.1 1999/12/07 20:50:50 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IhIonisation.hh,v 1.4 2000/04/25 14:33:01 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -34,7 +34,7 @@ #include "G4ios.hh" #include "globals.hh" #include "Randomize.hh" -#include "G4IhEnergyLoss.hh" +#include "G4VIhEnergyLoss.hh" #include "G4EnergyLossTables.hh" #include "globals.hh" #include "G4Track.hh" @@ -46,7 +46,7 @@ #include "G4PhysicsLinearVector.hh" -class G4IhIonisation : public G4IhEnergyLoss +class G4IhIonisation : public G4VIhEnergyLoss { public: diff --git a/source/processes/electromagnetic/standard/include/G4IhIonisation.icc b/source/processes/electromagnetic/standard/include/G4IhIonisation.icc index e56b13a376..108713d8bd 100644 --- a/source/processes/electromagnetic/standard/include/G4IhIonisation.icc +++ b/source/processes/electromagnetic/standard/include/G4IhIonisation.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IhIonisation.icc,v 1.1.10.1.2.1 1999/12/08 17:34:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IhIonisation.icc,v 1.2 1999/12/15 14:51:47 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // --------------------------------------------------------------- diff --git a/source/processes/electromagnetic/standard/include/G4IonisationByLogicalVolume.hh b/source/processes/electromagnetic/standard/include/G4IonisationByLogicalVolume.hh new file mode 100644 index 0000000000..28e8d40a6b --- /dev/null +++ b/source/processes/electromagnetic/standard/include/G4IonisationByLogicalVolume.hh @@ -0,0 +1,97 @@ +// It is process which allows to select PAIonisation model for some logic volume +// in an application. In other logical volumes standard ionisation models +// depending on particle type are realised. +// The process is declared in PhysicsList::ConstructEM() instead of declaration +// of ionisation processes +// +// +// +// History: +// 04.01.00 V. Grichine, first version based on recommendations of J.Apostolakis +// and S. Giani + +#ifndef G4IonisationByLogicalVolume_h +#define G4IonisationByLogicalVolume_h 1 + +#include "G4ios.hh" +#include "globals.hh" +#include "Randomize.hh" +#include "G4VPAIenergyLoss.hh" +#include "globals.hh" +#include "G4Track.hh" +#include "G4Step.hh" +#include "G4Electron.hh" +#include "G4PhysicsLogVector.hh" +#include "G4PhysicsLinearVector.hh" +#include "G4PhysicsFreeVector.hh" +#include "G4PhysicsVector.hh" +#include "G4LogicalVolume.hh" + +#include "G4VContinuousDiscreteProcess.hh" +#include "G4PAIonisation.hh" +#include "G4eIonisation.hh" +#include "G4MuIonisation.hh" +#include "G4hIonisation.hh" + + +class G4IonisationByLogicalVolume : public G4VContinuousDiscreteProcess +{ +public: + + G4IonisationByLogicalVolume( const G4String& particleName, + G4LogicalVolume* volumeForPAImodel, + const G4String& processName ); + + ~G4IonisationByLogicalVolume() ; + + + // Methods + + G4bool IsApplicable(const G4ParticleDefinition&); + + // G4double GetConstraints(const G4DynamicParticle *aParticle, + // G4Material *aMaterial ); + + G4VParticleChange* PostStepDoIt( const G4Track& track, + const G4Step& Step ) ; + + void BuildPhysicsTable(const G4ParticleDefinition& aParticleType); + + G4double + GetContinuousStepLimit( const G4Track& track, + G4double previousStepSize, + G4double currentMinimumStep, + G4double& currentSafety ) ; + + G4double GetMeanFreePath( const G4Track& track, + G4double previousStepSize, + G4ForceCondition* condition ) ; + + G4VParticleChange* AlongStepDoIt( const G4Track& track , + const G4Step& Step ) ; + + + + void SetVolumeForPAImodel( G4LogicalVolume* volumeForPAImodel ); + + + +protected: + +private: + + G4String fParticleName ; + G4String fMaterialNameForPAI ; + G4LogicalVolume* fVolumeForPAImodel ; + + G4bool fTriggerPAI ; + + G4PAIonisation* fPAIonisation ; + G4eIonisation* feIonisation ; + G4MuIonisation* fMuIonisation ; + G4hIonisation* fhIonisation ; + + +} ; + +#endif diff --git a/source/processes/electromagnetic/standard/include/G4PAIonisation.hh b/source/processes/electromagnetic/standard/include/G4PAIonisation.hh index 2c22625a84..27ffde2005 100644 --- a/source/processes/electromagnetic/standard/include/G4PAIonisation.hh +++ b/source/processes/electromagnetic/standard/include/G4PAIonisation.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PAIonisation.hh,v 1.2.8.1 1999/12/07 20:50:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PAIonisation.hh,v 1.4 2000/04/25 14:33:02 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -35,7 +35,7 @@ #include "G4ios.hh" #include "globals.hh" #include "Randomize.hh" -#include "G4PAIenergyLoss.hh" +#include "G4VPAIenergyLoss.hh" #include "globals.hh" #include "G4Track.hh" #include "G4Step.hh" @@ -46,7 +46,7 @@ #include "G4PhysicsVector.hh" -class G4PAIonisation : public G4PAIenergyLoss +class G4PAIonisation : public G4VPAIenergyLoss { public: diff --git a/source/processes/electromagnetic/standard/include/G4PAIonisation.icc b/source/processes/electromagnetic/standard/include/G4PAIonisation.icc index 3a6f863879..34d077b14f 100644 --- a/source/processes/electromagnetic/standard/include/G4PAIonisation.icc +++ b/source/processes/electromagnetic/standard/include/G4PAIonisation.icc @@ -5,8 +5,6 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PAIonisation.icc,v 1.3.8.1.2.1 1999/12/08 17:34:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ // // // --------------------------------------------------------------- @@ -21,7 +19,9 @@ // It calculates the ionisation of charged hadrons. // *************************************************************** // corrected by L.Urban on 24/09/97 -// --------------------------------------------------------------- +// 06.01.00 V.Grichine, modifications in GetConstraints and GetMenaFreePath +// +// //////////////////////////////////////////////////////////////////// @@ -44,11 +44,11 @@ inline G4double { if(aMaterial->GetState() == kStateGas) { - return 10*mm ; + return 100*mm ; } else { - return 0.01*mm ; + return 0.1*mm ; } } } @@ -97,7 +97,7 @@ inline G4double G4PAIonisation::GetMeanFreePath( } else { - return 1*mm ; + return DBL_MAX ; // 1*mm ; } } diff --git a/source/processes/electromagnetic/standard/include/G4PAIxSection.hh b/source/processes/electromagnetic/standard/include/G4PAIxSection.hh index f9ef6f09b4..c7847700f5 100644 --- a/source/processes/electromagnetic/standard/include/G4PAIxSection.hh +++ b/source/processes/electromagnetic/standard/include/G4PAIxSection.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PAIxSection.hh,v 1.3.6.1 1999/12/07 20:50:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PAIxSection.hh,v 1.4 1999/12/15 14:51:47 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // G4PAIxSection.hh -- header file diff --git a/source/processes/electromagnetic/standard/include/G4PhotoElectricEffect.hh b/source/processes/electromagnetic/standard/include/G4PhotoElectricEffect.hh index 2bbef54b3f..9a492393ba 100644 --- a/source/processes/electromagnetic/standard/include/G4PhotoElectricEffect.hh +++ b/source/processes/electromagnetic/standard/include/G4PhotoElectricEffect.hh @@ -5,21 +5,12 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PhotoElectricEffect.hh,v 1.3.8.1 1999/12/07 20:50:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PhotoElectricEffect.hh,v 1.5 1999/12/17 18:26:12 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// CERN Geneva Switzerland -// -// For information related to this code contact: -// CERN, CN Division, ASD group -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo // ------------ G4PhotoElectricEffect physics process ------ // by Michel Maire, April 1996 -// ************************************************************ +// // 12-06-96, Added SelectRandomAtom() method and new data member // for cumulative total cross section, by M.Maire // 21-06-96, SetCuts implementation, M.Maire @@ -32,6 +23,14 @@ // 06-01-99, Sandia crossSection below 50 keV, V.Grichine mma // ------------------------------------------------------------ +// class description +// +// inherit from G4VDiscreteProcess +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #ifndef G4PhotoElectricEffect_h #define G4PhotoElectricEffect_h 1 @@ -45,34 +44,59 @@ #include "G4Gamma.hh" #include "G4Electron.hh" #include "G4Step.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class G4PhotoElectricEffect : public G4VDiscreteProcess { - public: + public: // with description G4PhotoElectricEffect(const G4String& processName ="phot"); ~G4PhotoElectricEffect(); G4bool IsApplicable(const G4ParticleDefinition&); - + // true for Gamma only. + void SetPhysicsTableBining(G4double lowE, G4double highE, G4int nBins); + // Allows to define the binning of the PhysicsTables, + // before to build them. void BuildPhysicsTable(const G4ParticleDefinition& PhotonType); - + // 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. + void PrintInfoDefinition(); + // Print few lines of informations about the process: validity range, + // origine ..etc.. + // Invoked by BuildPhysicsTable(). G4double GetMeanFreePath(const G4Track& aTrack, 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. + G4double GetCrossSectionPerAtom(const G4DynamicParticle* aDynamicPhoton, G4Element* anElement); - + // It returns the total CrossSectionPerAtom of the process, + // for the current DynamicGamma (energy), in anElement. + G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); - + // 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 inline G4double ComputeKBindingEnergy(G4double AtomicNumber); diff --git a/source/processes/electromagnetic/standard/include/G4PhotoElectricEffect.icc b/source/processes/electromagnetic/standard/include/G4PhotoElectricEffect.icc index ce3fddce05..4581aaff8f 100644 --- a/source/processes/electromagnetic/standard/include/G4PhotoElectricEffect.icc +++ b/source/processes/electromagnetic/standard/include/G4PhotoElectricEffect.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PhotoElectricEffect.icc,v 1.2.8.1 1999/12/07 20:50:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PhotoElectricEffect.icc,v 1.3 1999/12/15 14:51:48 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // --------------------------------------------------------------- diff --git a/source/processes/electromagnetic/standard/include/G4PolarizedComptonScattering.hh b/source/processes/electromagnetic/standard/include/G4PolarizedComptonScattering.hh index c83d034d14..55d68ea752 100644 --- a/source/processes/electromagnetic/standard/include/G4PolarizedComptonScattering.hh +++ b/source/processes/electromagnetic/standard/include/G4PolarizedComptonScattering.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PolarizedComptonScattering.hh,v 1.1.10.1 1999/12/07 20:50:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PolarizedComptonScattering.hh,v 1.2 1999/12/15 14:51:48 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------ // GEANT 4 class header file --- Copyright CERN 1995 diff --git a/source/processes/electromagnetic/standard/include/G4SynchrotronRadiation.hh b/source/processes/electromagnetic/standard/include/G4SynchrotronRadiation.hh index e05404e61d..7e06bdd6b2 100644 --- a/source/processes/electromagnetic/standard/include/G4SynchrotronRadiation.hh +++ b/source/processes/electromagnetic/standard/include/G4SynchrotronRadiation.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4SynchrotronRadiation.hh,v 1.1.10.1 1999/12/07 20:50:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4SynchrotronRadiation.hh,v 1.2 1999/12/15 14:51:48 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------ // GEANT 4 class header file diff --git a/source/processes/electromagnetic/standard/include/G4IeEnergyLoss.hh b/source/processes/electromagnetic/standard/include/G4VIeEnergyLoss.hh similarity index 94% rename from source/processes/electromagnetic/standard/include/G4IeEnergyLoss.hh rename to source/processes/electromagnetic/standard/include/G4VIeEnergyLoss.hh index e561e5a07c..97cda5f84f 100644 --- a/source/processes/electromagnetic/standard/include/G4IeEnergyLoss.hh +++ b/source/processes/electromagnetic/standard/include/G4VIeEnergyLoss.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IeEnergyLoss.hh,v 1.1.10.1 1999/12/07 20:50:48 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VIeEnergyLoss.hh,v 1.2 2000/06/07 17:00:48 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // ------------------------------------------------------------ @@ -16,7 +16,7 @@ // CERN, IT Division, ASD group // History: first implementation, based on object model of // 2nd December 1995, G.Cosmo -// ---------- G4IeEnergyLoss physics process ----------- +// ---------- G4VIeEnergyLoss physics process ----------- // by Laszlo Urban, 20 March 1997 // ************************************************************ // It is the first implementation of the new unified Energy Loss process. @@ -33,8 +33,8 @@ // 26.10.98 revision , L.Urban // ------------------------------------------------------------ -#ifndef G4IeEnergyLoss_h -#define G4IeEnergyLoss_h 1 +#ifndef G4VIeEnergyLoss_h +#define G4VIeEnergyLoss_h 1 #include "G4ios.hh" #include "globals.hh" @@ -54,14 +54,14 @@ class G4EnergyLossMessenger; -class G4IeEnergyLoss : public G4IVContinuousDiscreteProcess +class G4VIeEnergyLoss : public G4IVContinuousDiscreteProcess { public: - G4IeEnergyLoss(const G4String& ); + G4VIeEnergyLoss(const G4String& ); - ~G4IeEnergyLoss(); + virtual ~G4VIeEnergyLoss(); G4bool IsApplicable(const G4ParticleDefinition&); @@ -120,8 +120,8 @@ class G4IeEnergyLoss : public G4IVContinuousDiscreteProcess G4double threshold); // hide assignment operator - G4IeEnergyLoss (G4IeEnergyLoss &); - G4IeEnergyLoss & operator=(const G4IeEnergyLoss &right); + G4VIeEnergyLoss (G4VIeEnergyLoss &); + G4VIeEnergyLoss & operator=(const G4VIeEnergyLoss &right); protected: @@ -193,7 +193,7 @@ class G4IeEnergyLoss : public G4IVContinuousDiscreteProcess static G4PhysicsTable* theProperTimeElectronTable ; static G4PhysicsTable* theProperTimePositronTable ; - //processes inherited from G4IeEnergyLoss + //processes inherited from G4VIeEnergyLoss //register themselves in the static array Recorder //for electrons/positrons separately //nb of contributing processes = NbOfProcesses @@ -235,7 +235,7 @@ class G4IeEnergyLoss : public G4IVContinuousDiscreteProcess {dRoverRange = c1; finalRange = c2;} }; -#include "G4IeEnergyLoss.icc" +#include "G4VIeEnergyLoss.icc" #endif diff --git a/source/processes/electromagnetic/standard/include/G4IeEnergyLoss.icc b/source/processes/electromagnetic/standard/include/G4VIeEnergyLoss.icc similarity index 86% rename from source/processes/electromagnetic/standard/include/G4IeEnergyLoss.icc rename to source/processes/electromagnetic/standard/include/G4VIeEnergyLoss.icc index abdce03224..5d8ede277d 100644 --- a/source/processes/electromagnetic/standard/include/G4IeEnergyLoss.icc +++ b/source/processes/electromagnetic/standard/include/G4VIeEnergyLoss.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IeEnergyLoss.icc,v 1.1.10.1 1999/12/07 20:50:49 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VIeEnergyLoss.icc,v 1.1 2000/04/25 14:33:02 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // --------------------------------------------------------------- @@ -16,7 +16,7 @@ // CERN, IT Division, ASD group // History: based on object model of // 2nd December 1995, G.Cosmo -// ------------ G4IeEnergyLoss physics process ------------ +// ------------ G4VIeEnergyLoss physics process ------------ // by Laszlo Urban, 20 March 1997 // *************************************************************** // It is the first implementation of the NEW UNIFIED ENERGY LOSS PROCESS. @@ -28,7 +28,7 @@ // 26-10-98: cleanup , L.Urban // --------------------------------------------------------------- -inline G4bool G4IeEnergyLoss::IsApplicable(const G4ParticleDefinition& +inline G4bool G4VIeEnergyLoss::IsApplicable(const G4ParticleDefinition& particle) { return( (&particle == G4Electron::Electron()) @@ -37,7 +37,7 @@ inline G4bool G4IeEnergyLoss::IsApplicable(const G4ParticleDefinition& //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -inline G4double G4IeEnergyLoss::GetContinuousStepLimit( +inline G4double G4VIeEnergyLoss::GetContinuousStepLimit( const G4Track& track, G4double, G4double currentMinimumStep, diff --git a/source/processes/electromagnetic/standard/include/G4IhEnergyLoss.hh b/source/processes/electromagnetic/standard/include/G4VIhEnergyLoss.hh similarity index 94% rename from source/processes/electromagnetic/standard/include/G4IhEnergyLoss.hh rename to source/processes/electromagnetic/standard/include/G4VIhEnergyLoss.hh index 299cc004ba..c387574a4f 100644 --- a/source/processes/electromagnetic/standard/include/G4IhEnergyLoss.hh +++ b/source/processes/electromagnetic/standard/include/G4VIhEnergyLoss.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IhEnergyLoss.hh,v 1.2.8.1 1999/12/07 20:50:49 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VIhEnergyLoss.hh,v 1.2 2000/06/07 17:00:48 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // ------------------------------------------------------------ @@ -16,7 +16,7 @@ // CERN, IT Division, ASD group // History: first implementation, based on object model of // 2nd December 1995, G.Cosmo -// ---------- G4IhEnergyLoss physics process ----------- +// ---------- G4VIhEnergyLoss physics process ----------- // by Laszlo Urban, 30 May 1997 // // ************************************************************ @@ -38,8 +38,8 @@ // 26/10/98 cleanup , L.Urban // -#ifndef G4IhEnergyLoss_h -#define G4IhEnergyLoss_h 1 +#ifndef G4VIhEnergyLoss_h +#define G4VIhEnergyLoss_h 1 #include "G4ios.hh" #include "globals.hh" @@ -58,14 +58,14 @@ class G4EnergyLossMessenger; -class G4IhEnergyLoss : public G4IVContinuousDiscreteProcess +class G4VIhEnergyLoss : public G4IVContinuousDiscreteProcess { public: - G4IhEnergyLoss(const G4String& ); + G4VIhEnergyLoss(const G4String& ); - ~G4IhEnergyLoss(); + virtual ~G4VIhEnergyLoss(); G4bool IsApplicable(const G4ParticleDefinition&); @@ -88,8 +88,8 @@ class G4IhEnergyLoss : public G4IVContinuousDiscreteProcess // hide assignment operator - G4IhEnergyLoss(G4IhEnergyLoss &); - G4IhEnergyLoss & operator=(const G4IhEnergyLoss &right); + G4VIhEnergyLoss(G4VIhEnergyLoss &); + G4VIhEnergyLoss & operator=(const G4VIhEnergyLoss &right); G4double GetConstraints(const G4DynamicParticle *aParticle, G4Material *aMaterial); @@ -225,7 +225,7 @@ class G4IhEnergyLoss : public G4IVContinuousDiscreteProcess static G4PhysicsTable* theProperTimepTable ; static G4PhysicsTable* theProperTimepbarTable ; - // processes inherited from G4IhEnergyLoss + // processes inherited from G4VIhEnergyLoss // register themselves in the static array Recorder static G4PhysicsTable** RecorderOfpProcess; static G4PhysicsTable** RecorderOfpbarProcess; @@ -287,7 +287,7 @@ class G4IhEnergyLoss : public G4IVContinuousDiscreteProcess }; -#include "G4IhEnergyLoss.icc" +#include "G4VIhEnergyLoss.icc" #endif diff --git a/source/processes/electromagnetic/standard/include/G4IhEnergyLoss.icc b/source/processes/electromagnetic/standard/include/G4VIhEnergyLoss.icc similarity index 83% rename from source/processes/electromagnetic/standard/include/G4IhEnergyLoss.icc rename to source/processes/electromagnetic/standard/include/G4VIhEnergyLoss.icc index 10a871574a..b1e9900537 100644 --- a/source/processes/electromagnetic/standard/include/G4IhEnergyLoss.icc +++ b/source/processes/electromagnetic/standard/include/G4VIhEnergyLoss.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IhEnergyLoss.icc,v 1.1.10.1 1999/12/07 20:50:50 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VIhEnergyLoss.icc,v 1.1 2000/04/25 14:33:02 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // --------------------------------------------------------------- @@ -16,7 +16,7 @@ // CERN, IT Division, ASD group // History: based on object model of // 2nd December 1995, G.Cosmo -// ------------ G4IhEnergyLoss physics process ------------ +// ------------ G4VIhEnergyLoss physics process ------------ // by Laszlo Urban, 30 May 1997 // *************************************************************** // It is the first implementation of the NEW UNIFIED ENERGY LOSS PROCESS. @@ -25,13 +25,13 @@ // 26/10/98: cleanup , L.Urban // --------------------------------------------------------------- -inline G4bool G4IhEnergyLoss::IsApplicable(const G4ParticleDefinition& +inline G4bool G4VIhEnergyLoss::IsApplicable(const G4ParticleDefinition& particle) { return(particle.GetPDGCharge()!= 0.); } -inline G4double G4IhEnergyLoss::GetContinuousStepLimit( +inline G4double G4VIhEnergyLoss::GetContinuousStepLimit( const G4Track& track, G4double, G4double currentMinimumStep, diff --git a/source/processes/electromagnetic/standard/include/G4PAIenergyLoss.hh b/source/processes/electromagnetic/standard/include/G4VPAIenergyLoss.hh similarity index 63% rename from source/processes/electromagnetic/standard/include/G4PAIenergyLoss.hh rename to source/processes/electromagnetic/standard/include/G4VPAIenergyLoss.hh index 6bed169760..2e4df922de 100644 --- a/source/processes/electromagnetic/standard/include/G4PAIenergyLoss.hh +++ b/source/processes/electromagnetic/standard/include/G4VPAIenergyLoss.hh @@ -5,10 +5,9 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PAIenergyLoss.hh,v 1.3.2.1.2.2 1999/12/14 07:08:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VPAIenergyLoss.hh,v 1.2 2000/06/07 17:00:48 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -// $Id: // ------------------------------------------------------------ // GEANT 4 class header file // @@ -16,7 +15,7 @@ // CERN, IT Division, ASD group // History: first implementation, based on object model of // 2nd December 1995, G.Cosmo -// ---------- G4PAIenergyLoss physics process ----------- +// ---------- G4VPAIenergyLoss physics process ----------- // by V. Grichine, 30 Nov 97 // ************************************************************ // It is the first implementation of the NEW UNIFIED ENERGY LOSS PROCESS. @@ -33,10 +32,11 @@ //******************************************************************************* // 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 // ------------------------------------------------------------ -#ifndef G4PAIenergyLoss_h -#define G4PAIenergyLoss_h 1 +#ifndef G4VPAIenergyLoss_h +#define G4VPAIenergyLoss_h 1 #include "G4ios.hh" #include "g4std/fstream" @@ -45,7 +45,7 @@ #include "globals.hh" #include "Randomize.hh" -#include "G4VContinuousDiscreteProcess.hh" +#include "G4VEnergyLoss.hh" #include "G4MaterialTable.hh" #include "G4ElementTable.hh" #include "G4ElementVector.hh" @@ -61,21 +61,21 @@ #include "G4PhysicsFreeVector.hh" -class G4PAIenergyLoss : public G4VContinuousDiscreteProcess +class G4VPAIenergyLoss : public G4VEnergyLoss { public: - G4PAIenergyLoss(const G4String& ); - G4PAIenergyLoss(G4PAIenergyLoss &); + G4VPAIenergyLoss(const G4String& ); + G4VPAIenergyLoss(G4VPAIenergyLoss &); - ~G4PAIenergyLoss(); + virtual ~G4VPAIenergyLoss(); G4bool IsApplicable(const G4ParticleDefinition&); private: // hide assignment operator - G4PAIenergyLoss & operator=(const G4PAIenergyLoss &right); + G4VPAIenergyLoss & operator=(const G4VPAIenergyLoss &right); public: @@ -109,19 +109,6 @@ class G4PAIenergyLoss : public G4VContinuousDiscreteProcess //---------------------------------------------- // 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 GetcurrentInteractionLength() const { return currentInteractionLength; } ; @@ -136,19 +123,39 @@ class G4PAIenergyLoss : public G4VContinuousDiscreteProcess G4double GetMeanLoss() const { return fMeanLoss; } ; - // don't use! - G4double OldGetRange(const G4DynamicParticle *aParticle, - G4Material *aMaterial); - G4double GetConstraints(const G4DynamicParticle *aParticle, G4Material *aMaterial); // static G4PhysicsTable* GetPAItransferBank(){ return fPAItransferBank ; } ; - static G4double GetMaxKineticEnergy() { return HighestKineticEnergy ; } ; - static G4double GetMinKineticEnergy() { return LowestKineticEnergy ; } ; - static G4int GetBinNumber() { return TotBin ; } ; + static G4double GetMaxKineticEnergy() { return UpperBoundEloss ; } ; + static G4double GetMinKineticEnergy() { return LowerBoundEloss ; } ; + static G4int GetBinNumber() { return NbinEloss ; } ; + + 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 = 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;}; + protected: @@ -180,11 +187,10 @@ class G4PAIenergyLoss : public G4VContinuousDiscreteProcess - // processes inherited from G4hEnergyLoss + // processes inherited from G4VhEnergyLoss // register themselves in the static array Recorder - // nb of contributing processes = NUMBEROFPROCESSES - static G4int NUMBEROFPROCESSES ; + static G4int NbOfProcesses ; static G4PhysicsTable** RecorderOfpProcess; static G4PhysicsTable** RecorderOfpbarProcess; static G4int CounterOfpProcess ; @@ -193,31 +199,19 @@ class G4PAIenergyLoss : public G4VContinuousDiscreteProcess private: // private functions .................................. - static void BuildRangeTable(const G4ParticleDefinition& aParticleType); - - static void BuildRangeVector(G4int materialIndex, - G4PhysicsLogVector* rangeVector); - - static G4double RangeIntLin(G4PhysicsVector* physicsVector,G4int nbin); - - static G4double RangeIntLog(G4PhysicsVector* physicsVector,G4int nbin); - - static void BuildRangeCoeffATable(const G4ParticleDefinition& aParticleType); - static void BuildRangeCoeffBTable(const G4ParticleDefinition& aParticleType); - static void BuildRangeCoeffCTable(const G4ParticleDefinition& aParticleType); - private: - static G4PhysicsTable* theDEDXTable; - // G4PhysicsTable* theRangeTable; - // private data members ............................... + static G4PhysicsTable* theDEDXTable ; + // fdEdx=(-dE/dx) // computed in GetConstraints at every call; // it can be used by other processes ( Cherenkov, ...) G4double fdEdx; + G4double dToverTini ; + // EnergyBinNumber,RangeCoeffA,... are needed to compute range G4int EnergyBinNumber ; @@ -231,34 +225,21 @@ class G4PAIenergyLoss : public G4VContinuousDiscreteProcess static G4PhysicsTable* thepbarRangeCoeffBTable; static G4PhysicsTable* thepbarRangeCoeffCTable; - //................................................................ - // G4PhysicsTable* theRangeCoeffATable; - // G4PhysicsTable* theRangeCoeffBTable; - // G4PhysicsTable* theRangeCoeffCTable; - // dToverTini is the maximum allowed relative energy loss 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 calculated in BuildPhysicsTable - // from LowestKineticEnergy,HighestKineticEnergy and - // dToverTini + // LowerBoundEloss = lower limit of particle kinetic energy + // UpperBoundEloss = upper limit of particle kinetic energy + // NbinEloss = number of bins // ---------in the energy loss/range tables------------------- - static const G4double LowestKineticEnergy; - static const G4double HighestKineticEnergy; - static G4int TotBin; + static G4double LowerBoundEloss; + static G4double UpperBoundEloss; + static G4int NbinEloss; - static G4double RTable,LOGRTable; // LOGRTable=log(HighestKineticEnergy - // /LowestKineticEnergy)/TotBin + static G4double RTable,LOGRTable; // LOGRTable=log(UpperBoundEloss + // /LowerBoundEloss)/NbinEloss // RTable = exp(LOGRTable) - // variables for the integration routines - static G4double Mass,taulow,tauhigh,ltaulow,ltauhigh; - // cut in range static G4double CutInRange; @@ -271,17 +252,10 @@ class G4PAIenergyLoss : public G4VContinuousDiscreteProcess const G4Proton* theProton; const G4AntiProton* theAntiProton; - // data members to speed up the fluctuation calculation - G4Material *lastMaterial ; - G4double f1Fluct,f2Fluct,e1Fluct,e2Fluct,rateFluct,ipotFluct; - G4double e1LogFluct,e2LogFluct,ipotLogFluct; - const G4double MaxExcitationNumber ; - const G4double probLimFluct ; - const long nmaxDirectFluct,nmaxCont1,nmaxCont2 ; }; -#include "G4PAIenergyLoss.icc" +#include "G4VPAIenergyLoss.icc" #endif @@ -294,7 +268,3 @@ class G4PAIenergyLoss : public G4VContinuousDiscreteProcess - - - - diff --git a/source/processes/electromagnetic/standard/include/G4PAIenergyLoss.icc b/source/processes/electromagnetic/standard/include/G4VPAIenergyLoss.icc similarity index 77% rename from source/processes/electromagnetic/standard/include/G4PAIenergyLoss.icc rename to source/processes/electromagnetic/standard/include/G4VPAIenergyLoss.icc index 44075cad4a..940c98ac9c 100644 --- a/source/processes/electromagnetic/standard/include/G4PAIenergyLoss.icc +++ b/source/processes/electromagnetic/standard/include/G4VPAIenergyLoss.icc @@ -5,8 +5,6 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PAIenergyLoss.icc,v 1.3.8.1.2.1 1999/12/08 17:34:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ // // $Id: // --------------------------------------------------------------- @@ -16,14 +14,14 @@ // CERN, IT Division, ASD group // History: based on object model of // 2nd December 1995, G.Cosmo -// ------------ G4PAIenergyLoss physics process ------------ +// ------------ G4VPAIenergyLoss 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. // *************************************************************** // corrected by L.Urban on 24/09/97 -// +// 06.01.00 V.Grichine, modifications in GetConstraints // //////////////////////////////////////////////////////////////////// @@ -31,12 +29,20 @@ // inline G4double - G4PAIenergyLoss::GetConstraints(const G4DynamicParticle *aParticle, + G4VPAIenergyLoss::GetConstraints(const G4DynamicParticle *aParticle, G4Material *aMaterial ) { - // G4cout<<"G4PAIenergyLoss::GetConstraints is called"<GetState() == kStateGas) + { + return 100*mm ; + } + else + { + return 0.1*mm ; + } + } ////////////////////////////////////////////////////////////////////////// @@ -45,7 +51,7 @@ inline G4double /* *********************************************************************** -inline G4double G4PAIenergyLoss::GetContinuousStepLimit( +inline G4double G4VPAIenergyLoss::GetContinuousStepLimit( const G4Track& track, G4double, G4double currentMinimumStep, @@ -62,7 +68,7 @@ inline G4double G4PAIenergyLoss::GetContinuousStepLimit( *********************************************************** */ -inline G4bool G4PAIenergyLoss::IsApplicable(const G4ParticleDefinition& +inline G4bool G4VPAIenergyLoss::IsApplicable(const G4ParticleDefinition& particle) { return(particle.GetPDGCharge()!= 0.); diff --git a/source/processes/electromagnetic/standard/include/G4eEnergyLossPlus.hh b/source/processes/electromagnetic/standard/include/G4VeEnergyLoss.hh similarity index 62% rename from source/processes/electromagnetic/standard/include/G4eEnergyLossPlus.hh rename to source/processes/electromagnetic/standard/include/G4VeEnergyLoss.hh index 775f3d2389..4185996d5d 100644 --- a/source/processes/electromagnetic/standard/include/G4eEnergyLossPlus.hh +++ b/source/processes/electromagnetic/standard/include/G4VeEnergyLoss.hh @@ -5,10 +5,9 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4eEnergyLossPlus.hh,v 1.4.4.1 1999/12/07 20:50:53 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VeEnergyLoss.hh,v 1.3 2000/06/07 17:00:49 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -// $Id: // ------------------------------------------------------------ // GEANT 4 class header file // @@ -16,21 +15,22 @@ // CERN, IT Division, ASD group // History: first implementation, based on object model of // 2nd December 1995, G.Cosmo -// ---------- G4eEnergyLossPlus physics process ----------- +// ---------- G4VeEnergyLoss physics process ----------- // by Laszlo Urban, 20 March 1997 // 18/11/98 , L. Urban -// It is a modified version of G4eEnergyLoss: +// It is a modified version of G4VeEnergyLoss: // continuous energy loss with generation of subcutoff delta rays // 02/02/99 new data members , L.Urban +// 10/02/00 modifications , new e.m. structure, L.Urban // --------------------------------------------------------------- -#ifndef G4eEnergyLossPlus_h -#define G4eEnergyLossPlus_h 1 +#ifndef G4VeEnergyLoss_h +#define G4VeEnergyLoss_h 1 #include "G4ios.hh" #include "globals.hh" #include "Randomize.hh" -#include "G4VContinuousDiscreteProcess.hh" +#include "G4VEnergyLoss.hh" #include "G4Material.hh" #include "G4Element.hh" #include "G4VParticleChange.hh" @@ -58,19 +58,19 @@ class G4EnergyLossMessenger; // 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. -// G4eEnergyLoss is the base class for the processes giving contribution +// G4VeEnergyLoss is the base class for the processes giving contribution // to the (continuous) energy loss of e+/e- . // Class description - end -class G4eEnergyLossPlus : public G4VContinuousDiscreteProcess +class G4VeEnergyLoss : public G4VEnergyLoss { public: - G4eEnergyLossPlus(const G4String& ); + G4VeEnergyLoss(const G4String& ); - ~G4eEnergyLossPlus(); + virtual ~G4VeEnergyLoss(); public: // With description @@ -115,69 +115,27 @@ class G4eEnergyLossPlus : public G4VContinuousDiscreteProcess private: - void BuildRangeTable(const G4ParticleDefinition& aParticleType); - void BuildInverseRangeTable(const G4ParticleDefinition& aParticleType); - - void BuildTimeTables(const G4ParticleDefinition& aParticleType); - - void BuildRangeVector(G4int materialIndex, - G4PhysicsLogVector* rangeVector); - - void BuildLabTimeVector(G4int materialIndex, - G4PhysicsLogVector* rangeVector); - - void BuildProperTimeVector(G4int materialIndex, - G4PhysicsLogVector* rangeVector); - - void InvertRangeVector(G4int materialIndex, - G4PhysicsLogVector* rangeVector); - - G4double RangeIntLin(G4PhysicsVector* physicsVector,G4int nbin); - - G4double RangeIntLog(G4PhysicsVector* physicsVector,G4int nbin); - G4double LabTimeIntLog(G4PhysicsVector* physicsVector,G4int nbin); - G4double ProperTimeIntLog(G4PhysicsVector* physicsVector,G4int nbin); - - void BuildRangeCoeffATable(const G4ParticleDefinition& aParticleType); - void BuildRangeCoeffBTable(const G4ParticleDefinition& aParticleType); - void BuildRangeCoeffCTable(const G4ParticleDefinition& aParticleType); - G4double GetConstraints(const G4DynamicParticle* aParticle, - G4Material* aMaterial); + G4Material* aMaterial); - G4double GetLossWithFluct(const G4DynamicParticle* aParticle, - G4Material* aMaterial, - G4double threshold); - // hide assignment operator - G4eEnergyLossPlus (G4eEnergyLossPlus &); - G4eEnergyLossPlus & operator=(const G4eEnergyLossPlus &right); + G4VeEnergyLoss (G4VeEnergyLoss &); + G4VeEnergyLoss & operator=(const G4VeEnergyLoss &right); protected: G4PhysicsTable* theLossTable; - G4double ParticleMass; // heavily used - G4double MinKineticEnergy ; // G4double Charge,lastCharge ; - G4PhysicsTable* theDEDXTable; - G4PhysicsTable* theRangeTable; - - G4PhysicsTable* theRangeCoeffATable; - G4PhysicsTable* theRangeCoeffBTable; - G4PhysicsTable* theRangeCoeffCTable; private: - G4PhysicsTable* theInverseRangeTable; + G4PhysicsTable* theDEDXTable; - G4PhysicsTable* theLabTimeTable ; - G4PhysicsTable* theProperTimeTable ; - G4int CounterOfProcess; G4PhysicsTable** RecorderOfProcess; @@ -186,32 +144,36 @@ class G4eEnergyLossPlus : public G4VContinuousDiscreteProcess G4double linLossLimit ; // - G4int TotBin; // number of bins in table, - // calculated in BuildPhysicTable - G4double LowestKineticEnergy; - G4double HighestKineticEnergy; - G4double RTable,LOGRTable; // LOGRTable=log(HighestKineticEnergy- - // LowestKineticEnergy)/TotBin - // RTable = exp(LOGRTable) - G4double c1N,c2N ; // coeffs to compute nb of deltas G4int Ndeltamax ; // upper limit for nb of subcutoff // delta rays in one step - // variables for the integration routines - G4double taulow,tauhigh,ltaulow,ltauhigh; - - // 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 ; // // 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: @@ -231,11 +193,12 @@ class G4eEnergyLossPlus : public G4VContinuousDiscreteProcess static G4PhysicsTable* theProperTimeElectronTable ; static G4PhysicsTable* theProperTimePositronTable ; - //processes inherited from G4eEnergyLossPlus + //processes inherited from G4VeEnergyLoss //register themselves in the static array Recorder //for electrons/positrons separately //nb of contributing processes = NbOfProcesses static G4int NbOfProcesses; + static G4int CounterOfElectronProcess; static G4int CounterOfPositronProcess ; static G4PhysicsTable** RecorderOfElectronProcess; @@ -244,8 +207,18 @@ class G4eEnergyLossPlus : public G4VContinuousDiscreteProcess static G4double MinDeltaCutInRange; // minimum cut for delta rays static G4double* MinDeltaEnergy ; + static G4bool setMinDeltaCutInRange ; + private: + static G4int NbinEloss; // number of bins in table, + // calculated in BuildPhysicTable + static G4double LowerBoundEloss; + static G4double UpperBoundEloss; + static G4double RTable,LOGRTable; // LOGRTable=log(UpperBoundEloss- + // LowerBoundEloss)/NbinEloss + // RTable = exp(LOGRTable) + //for interpolation within the tables static G4PhysicsTable* theeRangeCoeffATable; static G4PhysicsTable* theeRangeCoeffBTable; @@ -254,58 +227,20 @@ class G4eEnergyLossPlus : public G4VContinuousDiscreteProcess static G4PhysicsTable* thepRangeCoeffBTable; static G4PhysicsTable* thepRangeCoeffCTable; - static G4double dRoverRange; // dRoverRange is the maximum allowed - // deltarange/range in one Step - static G4double finalRange; // final step before stopping - static G4double c1lim,c2lim,c3lim ; // coeffs for computing steplimit - - static G4bool rndmStepFlag; // control the randomization of the step - static G4bool EnlossFlucFlag; // control the energy loss fluctuation static G4EnergyLossMessenger* eLossMessenger; - + 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 SetRndmStep (G4bool value) {rndmStepFlag = value;} - // use / do not use randomisation in energy loss steplimit - // ( default = no randomisation) - - static void SetEnlossFluc (G4bool value) {EnlossFlucFlag = 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; - } - // 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. - - static void SetMinDeltaCutInRange(G4double value) - {MinDeltaCutInRange = value;} + {MinDeltaCutInRange = value; + setMinDeltaCutInRange = true ;} // 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). }; -#include "G4eEnergyLossPlus.icc" +#include "G4VeEnergyLoss.icc" #endif diff --git a/source/processes/electromagnetic/standard/include/G4eEnergyLossPlus.icc b/source/processes/electromagnetic/standard/include/G4VeEnergyLoss.icc similarity index 88% rename from source/processes/electromagnetic/standard/include/G4eEnergyLossPlus.icc rename to source/processes/electromagnetic/standard/include/G4VeEnergyLoss.icc index 97496d1814..83c58ba33a 100644 --- a/source/processes/electromagnetic/standard/include/G4eEnergyLossPlus.icc +++ b/source/processes/electromagnetic/standard/include/G4VeEnergyLoss.icc @@ -5,10 +5,9 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4eEnergyLossPlus.icc,v 1.3.8.1 1999/12/07 20:50:53 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VeEnergyLoss.icc,v 1.2 2000/05/23 14:39:26 urban Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -// $Id: // --------------------------------------------------------------- // GEANT 4 class inlined methods file // @@ -16,20 +15,20 @@ // CERN, IT Division, ASD group // History: based on object model of // 2nd December 1995, G.Cosmo -// ------------ G4eEnergyLossPlus physics process ------------ +// ------------ G4VeEnergyLoss 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-. // ------------------------------------------------------------- // 18/11/98 , L. Urban -// It is a modified version of G4eEnergyLoss: +// It is a modified version of G4VeEnergyLoss: // continuous energy loss with generation of subcutoff delta rays // --------------------------------------------------------------- //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -inline G4double G4eEnergyLossPlus::GetConstraints( +inline G4double G4VeEnergyLoss::GetConstraints( const G4DynamicParticle* aParticle, G4Material* aMaterial) { @@ -71,7 +70,7 @@ inline G4double G4eEnergyLossPlus::GetConstraints( //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -inline G4double G4eEnergyLossPlus::GetContinuousStepLimit( +inline G4double G4VeEnergyLoss::GetContinuousStepLimit( const G4Track& track, G4double, G4double currentMinimumStep, @@ -88,7 +87,7 @@ inline G4double G4eEnergyLossPlus::GetContinuousStepLimit( //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -inline G4bool G4eEnergyLossPlus::IsApplicable(const G4ParticleDefinition& +inline G4bool G4VeEnergyLoss::IsApplicable(const G4ParticleDefinition& particle) { return( (&particle == G4Electron::Electron()) diff --git a/source/processes/electromagnetic/standard/include/G4hEnergyLossPlus.hh b/source/processes/electromagnetic/standard/include/G4VhEnergyLoss.hh similarity index 50% rename from source/processes/electromagnetic/standard/include/G4hEnergyLossPlus.hh rename to source/processes/electromagnetic/standard/include/G4VhEnergyLoss.hh index 9d721951aa..aed2343955 100644 --- a/source/processes/electromagnetic/standard/include/G4hEnergyLossPlus.hh +++ b/source/processes/electromagnetic/standard/include/G4VhEnergyLoss.hh @@ -5,10 +5,9 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4hEnergyLossPlus.hh,v 1.3.8.1 1999/12/07 20:50:54 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VhEnergyLoss.hh,v 1.3 2000/06/07 17:00:49 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -// $Id: // ------------------------------------------------------------ // GEANT 4 class header file // @@ -16,7 +15,7 @@ // CERN, IT Division, ASD group // History: first implementation, based on object model of // 2nd December 1995, G.Cosmo -// ---------- G4hEnergyLossPlus physics process ----------- +// ---------- G4VhEnergyLoss physics process ----------- // by Laszlo Urban, 30 May 1997 // // ************************************************************ @@ -37,15 +36,16 @@ // 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 // -#ifndef G4hEnergyLossPlus_h -#define G4hEnergyLossPlus_h 1 +#ifndef G4VhEnergyLoss_h +#define G4VhEnergyLoss_h 1 #include "G4ios.hh" #include "globals.hh" #include "Randomize.hh" -#include "G4VContinuousDiscreteProcess.hh" +#include "G4VEnergyLoss.hh" #include "G4Material.hh" #include "G4Element.hh" #include "G4Proton.hh" @@ -59,14 +59,14 @@ class G4EnergyLossMessenger; -class G4hEnergyLossPlus : public G4VContinuousDiscreteProcess +class G4VhEnergyLoss : public G4VEnergyLoss { public: - G4hEnergyLossPlus(const G4String& ); + G4VhEnergyLoss(const G4String& ); - ~G4hEnergyLossPlus(); + virtual ~G4VhEnergyLoss(); G4bool IsApplicable(const G4ParticleDefinition&); @@ -95,15 +95,12 @@ class G4hEnergyLossPlus : public G4VContinuousDiscreteProcess // hide assignment operator - G4hEnergyLossPlus(G4hEnergyLossPlus &); - G4hEnergyLossPlus & operator=(const G4hEnergyLossPlus &right); + G4VhEnergyLoss(G4VhEnergyLoss &); + G4VhEnergyLoss & operator=(const G4VhEnergyLoss &right); G4double GetConstraints(const G4DynamicParticle *aParticle, G4Material *aMaterial); - G4double GetLossWithFluct(const G4DynamicParticle *aParticle, - G4Material *aMaterial, - G4double MeanLoss) ; // ===================================================================== @@ -118,99 +115,51 @@ class G4hEnergyLossPlus : public G4VContinuousDiscreteProcess private: + static G4PhysicsTable* theDEDXTable ; + G4double fdEdx; // computed in GetContraints G4double fRangeNow ; // computed in GetContraints G4double linLossLimit ; - // variables for the integration routines - static G4double Mass,taulow,tauhigh,ltaulow,ltauhigh; - - // 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 ; // ==================================================================== -// static part of the class - +// static part of the cc: // With description public: - // get the number of processes contributing to the cont.energy loss - static G4int GetNumberOfProcesses() { return NumberOfProcesses; }; + static void SetNbOfProcesses(G4int nb) {NbOfProcesses=nb;}; + // Sets number of processes giving contribution to the energy loss - // set the number of processes contributing to the cont.energy loss - static void SetNumberOfProcesses(G4int number) - {NumberOfProcesses=number ; }; + static void PlusNbOfProcesses() {NbOfProcesses++ ;}; + // Increases number of processes giving contribution to the energy loss - // Increment the number of processes contributing to the cont.energy loss - static void PlusNumberOfProcesses() - { NumberOfProcesses++ ; }; + static void MinusNbOfProcesses() {NbOfProcesses-- ;}; + // Decreases number of processes giving contribution to the energy loss - // decrement the number of processes contributing to the cont.energy loss - static void MinusNumberOfProcesses() - { NumberOfProcesses-- ; }; - - 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 G4int GetNbOfProcesses() {return NbOfProcesses;}; + // Gets number of processes giving contribution to the energy loss + // ( default value = 1) + static void SetMinDeltaCutInRange(G4double value) - {MinDeltaCutInRange = value;} + {MinDeltaCutInRange = value; + setMinDeltaCutInRange = true ;} + + 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: static void BuildDEDXTable(const G4ParticleDefinition& aParticleType); + private: - static void BuildRangeTable(const G4ParticleDefinition& aParticleType); - - static void BuildInverseRangeTable( - const G4ParticleDefinition& aParticleType); - - static void BuildTimeTables(const G4ParticleDefinition& aParticleType); - - static void BuildLabTimeVector(G4int materialIndex, - G4PhysicsLogVector* rangeVector); - - static void BuildProperTimeVector(G4int materialIndex, - G4PhysicsLogVector* rangeVector); - - static void InvertRangeVector(G4int materialIndex, - G4PhysicsLogVector* rangeVector); - - static void BuildRangeVector(G4int materialIndex, - G4PhysicsLogVector* rangeVector); - - static G4double LabTimeIntLog(G4PhysicsVector* physicsVector - ,G4int nbin); - - static G4double ProperTimeIntLog(G4PhysicsVector* physicsVector, - G4int nbin); - - static G4double RangeIntLin(G4PhysicsVector* physicsVector - ,G4int nbin); - - static G4double RangeIntLog(G4PhysicsVector* physicsVector - ,G4int nbin); - - static void BuildRangeCoeffATable( - const G4ParticleDefinition& aParticleType); - static void BuildRangeCoeffBTable( - const G4ParticleDefinition& aParticleType); - static void BuildRangeCoeffCTable( - const G4ParticleDefinition& aParticleType); - static const G4Proton* theProton ; static const G4AntiProton* theAntiProton ; @@ -236,42 +185,35 @@ class G4hEnergyLossPlus : public G4VContinuousDiscreteProcess static G4PhysicsTable* theProperTimepTable ; static G4PhysicsTable* theProperTimepbarTable ; - // processes inherited from G4hEnergyLossPlus + // processes inherited from G4VhEnergyLoss // register themselves in the static array Recorder + static G4int NbOfProcesses ; static G4PhysicsTable** RecorderOfpProcess; static G4PhysicsTable** RecorderOfpbarProcess; static G4int CounterOfpProcess ; static G4int CounterOfpbarProcess ; - // particle mass - static G4double ParticleMass ; - // cut in range static G4double ptableElectronCutInRange; static G4double pbartableElectronCutInRange; static G4double MinDeltaCutInRange; // minimum cut for delta rays static G4double* MinDeltaEnergy ; + static G4bool setMinDeltaCutInRange ; - static G4double LowestKineticEnergy; - static G4double HighestKineticEnergy; - static G4int TotBin; // number of bins in table, - // calculated in BuildPhysicsTable - - static G4double RTable,LOGRTable; // LOGRTable=log(HighestKineticEnergy - // /LowestKineticEnergy)/TotBin - // RTable = exp(LOGRTable) - static G4double Charge ; + + static G4EnergyLossMessenger* hLossMessenger; + private: - static G4PhysicsTable* theDEDXTable; - - static G4PhysicsTable* theRangeTable; - static G4PhysicsTable* theInverseRangeTable; - - static G4PhysicsTable* theLabTimeTable; - static G4PhysicsTable* theProperTimeTable; + static G4int NbinEloss; // number of bins in table, + // calculated in BuildPhysicTable + static G4double LowerBoundEloss; + static G4double UpperBoundEloss; + static G4double RTable,LOGRTable; // LOGRTable=log(UpperBoundEloss- + // LowerBoundEloss)/NbinEloss + // RTable = exp(LOGRTable) static G4PhysicsTable** RecorderOfProcess; static G4int CounterOfProcess; @@ -284,21 +226,6 @@ class G4hEnergyLossPlus : public G4VContinuousDiscreteProcess static G4PhysicsTable* thepbarRangeCoeffBTable; static G4PhysicsTable* thepbarRangeCoeffCTable; - static G4PhysicsTable* theRangeCoeffATable; - static G4PhysicsTable* theRangeCoeffBTable; - static G4PhysicsTable* theRangeCoeffCTable; - - static G4double dRoverRange ; // maximum allowed deltarange/range - // in one step - - static G4double finalRange ; // last step before stop - static G4double c1lim,c2lim,c3lim ; // coeffs for computing steplimit - - static G4bool rndmStepFlag ; - static G4bool EnlossFlucFlag ; - - static G4int NumberOfProcesses ; - 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 @@ -306,7 +233,7 @@ class G4hEnergyLossPlus : public G4VContinuousDiscreteProcess }; -#include "G4hEnergyLossPlus.icc" +#include "G4VhEnergyLoss.icc" #endif diff --git a/source/processes/electromagnetic/standard/include/G4hEnergyLoss.icc b/source/processes/electromagnetic/standard/include/G4VhEnergyLoss.icc similarity index 83% rename from source/processes/electromagnetic/standard/include/G4hEnergyLoss.icc rename to source/processes/electromagnetic/standard/include/G4VhEnergyLoss.icc index ad34c29899..0a4b58dfd7 100644 --- a/source/processes/electromagnetic/standard/include/G4hEnergyLoss.icc +++ b/source/processes/electromagnetic/standard/include/G4VhEnergyLoss.icc @@ -5,10 +5,9 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4hEnergyLoss.icc,v 1.2.8.1 1999/12/07 20:50:54 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VhEnergyLoss.icc,v 1.2 2000/05/23 14:39:27 urban Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -// $Id: // --------------------------------------------------------------- // GEANT 4 class inlined methods file // @@ -16,7 +15,7 @@ // CERN, IT Division, ASD group // History: based on object model of // 2nd December 1995, G.Cosmo -// ------------ G4hEnergyLoss physics process ------------ +// ------------ G4VhEnergyLoss physics process ------------ // by Laszlo Urban, 30 May 1997 // *************************************************************** // It is the first implementation of the NEW UNIFIED ENERGY LOSS PROCESS. @@ -25,13 +24,13 @@ // 22/10/98: cleanup , L.Urban // --------------------------------------------------------------- -inline G4bool G4hEnergyLoss::IsApplicable(const G4ParticleDefinition& +inline G4bool G4VhEnergyLoss::IsApplicable(const G4ParticleDefinition& particle) { return(particle.GetPDGCharge()!= 0.); } -inline G4double G4hEnergyLoss::GetContinuousStepLimit( +inline G4double G4VhEnergyLoss::GetContinuousStepLimit( const G4Track& track, G4double, G4double currentMinimumStep, diff --git a/source/processes/electromagnetic/standard/include/G4eBremsstrahlung.hh b/source/processes/electromagnetic/standard/include/G4eBremsstrahlung.hh index 51a016cb38..8780792d24 100644 --- a/source/processes/electromagnetic/standard/include/G4eBremsstrahlung.hh +++ b/source/processes/electromagnetic/standard/include/G4eBremsstrahlung.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4eBremsstrahlung.hh,v 1.1.10.1 1999/12/07 20:50:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4eBremsstrahlung.hh,v 1.6 2000/05/23 15:44:01 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -22,7 +22,8 @@ // ************************************************************ // 1-10-96 : new type G4OrderedTable; ComputePartialSumSigma() // 20/03/97: new energy loss+ionisation+brems scheme, L.Urban -// 01-09-98, new methods SetBining() and PrintInfo() +// 01-09-98, new method PrintInfo() +// 10/02/00 modifications , new e.m. structure, L.Urban // ------------------------------------------------------------ #ifndef G4eBremsstrahlung_h @@ -31,7 +32,7 @@ #include "G4ios.hh" #include "globals.hh" #include "Randomize.hh" -#include "G4eEnergyLoss.hh" +#include "G4VeEnergyLoss.hh" #include "G4Track.hh" #include "G4Step.hh" #include "G4Gamma.hh" @@ -41,7 +42,7 @@ #include "G4PhysicsTable.hh" #include "G4PhysicsLogVector.hh" -class G4eBremsstrahlung : public G4eEnergyLoss +class G4eBremsstrahlung : public G4VeEnergyLoss { public: @@ -52,8 +53,6 @@ class G4eBremsstrahlung : public G4eEnergyLoss G4bool IsApplicable(const G4ParticleDefinition&); - void SetPhysicsTableBining(G4double lowE, G4double highE, G4int nBins); - void PrintInfoDefinition(); void BuildPhysicsTable(const G4ParticleDefinition& ParticleType); @@ -119,11 +118,26 @@ class G4eBremsstrahlung : public G4eEnergyLoss G4PhysicsTable* theMeanFreePathTable ; - G4OrderedTable PartialSumSigma; // partial sum of total crosssection + 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 G4int NbinLambda; // number of bins in the tables + + G4double MinThreshold; // minimun value for the production threshold + + G4double LowestKineticEnergy,HighestKineticEnergy; // bining of the Eloss table + G4int TotBin; // (from G4VeEnergyLoss) + + 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;}; - G4double LowestKineticEnergy; // low energy limit of the crossection formula - G4double HighestKineticEnergy; // high energy limit of the crossection formula - G4int TotBin; // number of bins in the tables }; #include "G4eBremsstrahlung.icc" diff --git a/source/processes/electromagnetic/standard/include/G4eBremsstrahlung.icc b/source/processes/electromagnetic/standard/include/G4eBremsstrahlung.icc index 36941be14c..6909044933 100644 --- a/source/processes/electromagnetic/standard/include/G4eBremsstrahlung.icc +++ b/source/processes/electromagnetic/standard/include/G4eBremsstrahlung.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4eBremsstrahlung.icc,v 1.1.10.1 1999/12/07 20:50:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4eBremsstrahlung.icc,v 1.3 2000/05/23 15:44:07 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // --------------------------------------------------------------- @@ -95,29 +95,6 @@ inline G4double G4eBremsstrahlung::ScreenFunction2(G4double ScreenVariable) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -inline G4double G4eBremsstrahlung::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 > DBL_MIN ? 1./SIGMA : DBL_MAX; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - inline G4double G4eBremsstrahlung::GetLambda( G4double KineticEnergy, G4Material* material) diff --git a/source/processes/electromagnetic/standard/include/G4eBremsstrahlungPlus.hh b/source/processes/electromagnetic/standard/include/G4eBremsstrahlungPlus.hh deleted file mode 100644 index 1237558f3b..0000000000 --- a/source/processes/electromagnetic/standard/include/G4eBremsstrahlungPlus.hh +++ /dev/null @@ -1,132 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4eBremsstrahlungPlus.hh,v 1.1.10.1 1999/12/07 20:50:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// CERN Geneva Switzerland -// -// For information related to this code contact: -// CERN, IT Division, ASD group -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4eBremsstrahlungPlus 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 methods SetBining() and PrintInfo() -// ------------------------------------------------------------ - -#ifndef G4eBremsstrahlungPlus_h -#define G4eBremsstrahlungPlus_h 1 - -#include "G4ios.hh" -#include "globals.hh" -#include "Randomize.hh" -#include "G4eEnergyLossPlus.hh" -#include "G4Track.hh" -#include "G4Step.hh" -#include "G4Gamma.hh" -#include "G4Electron.hh" -#include "G4Positron.hh" -#include "G4OrderedTable.hh" -#include "G4PhysicsTable.hh" -#include "G4PhysicsLogVector.hh" - -class G4eBremsstrahlungPlus : public G4eEnergyLossPlus - -{ - public: - - G4eBremsstrahlungPlus(const G4String& processName = "eBrem+"); - - ~G4eBremsstrahlungPlus(); - - G4bool IsApplicable(const G4ParticleDefinition&); - - void SetPhysicsTableBining(G4double lowE, G4double highE, G4int nBins); - - void PrintInfoDefinition(); - - void BuildPhysicsTable(const G4ParticleDefinition& ParticleType); - - void BuildLossTable(const G4ParticleDefinition& ParticleType); - - void BuildLambdaTable(const G4ParticleDefinition& ParticleType); - - G4double GetMeanFreePath(const G4Track& track, - G4double previousStepSize, - G4ForceCondition* condition ); - - G4VParticleChange *PostStepDoIt(const G4Track& track, - const G4Step& step); - - G4double GetLambda( - G4double KineticEnergy,G4Material* material); - - - protected: - - 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: - - G4double ComputeBremLoss(G4double Z,G4double natom,G4double T, - G4double Cut,G4double x); - - G4double ComputeXYPolynomial(G4double x,G4double y,G4int xSize, - G4int ySize,const G4double coeff[]); - - G4double ComputePositronCorrFactorLoss(G4double AtomicNumber, - G4double KineticEnergy, - G4double GammaEnergyCut); - - G4double ComputePositronCorrFactorSigma(G4double AtomicNumber, - G4double KineticEnergy, - G4double GammaEnergyCut); - - G4Element* SelectRandomAtom(G4Material* aMaterial) const; - - G4double ScreenFunction1(G4double ScreenVariable); - - G4double ScreenFunction2(G4double ScreenVariable); - - G4eBremsstrahlungPlus & operator=(const G4eBremsstrahlungPlus &right); - - G4eBremsstrahlungPlus(const G4eBremsstrahlungPlus&); - - private: - - G4PhysicsTable* theMeanFreePathTable ; - - G4OrderedTable PartialSumSigma; // partial sum of total crosssection - - G4double LowestKineticEnergy; // low energy limit of the crossection formula - G4double HighestKineticEnergy; // high energy limit of the crossection formula - G4int TotBin; // number of bins in the tables -}; - -#include "G4eBremsstrahlungPlus.icc" - -#endif - diff --git a/source/processes/electromagnetic/standard/include/G4eBremsstrahlungPlus.icc b/source/processes/electromagnetic/standard/include/G4eBremsstrahlungPlus.icc deleted file mode 100644 index c6f2529a5f..0000000000 --- a/source/processes/electromagnetic/standard/include/G4eBremsstrahlungPlus.icc +++ /dev/null @@ -1,135 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4eBremsstrahlungPlus.icc,v 1.1.10.1 1999/12/07 20:50:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// -// --------------------------------------------------------------- -// GEANT 4 class inlined methods file -// -// For information related to this code contact: -// CERN, IT Division, ASD group -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4eBremsstrahlungPlus 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 -// *************************************************************** - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -inline G4bool G4eBremsstrahlungPlus::IsApplicable( - const G4ParticleDefinition& particle) -{ - return( (&particle == G4Electron::Electron()) - ||(&particle == G4Positron::Positron()) ); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -inline G4double G4eBremsstrahlungPlus::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(); - - G4double MeanFreePath; - G4bool isOutRange ; - - if (KineticEnergy < LowestKineticEnergy) - MeanFreePath = DBL_MAX; - else { - if (KineticEnergy > HighestKineticEnergy) KineticEnergy = 0.99*HighestKineticEnergy ; - MeanFreePath = (*theMeanFreePathTable)(aMaterial->GetIndex())-> - GetValue( KineticEnergy, isOutRange ); - } - - return MeanFreePath; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -inline G4double G4eBremsstrahlungPlus::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; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -inline G4double G4eBremsstrahlungPlus::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; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -inline G4double G4eBremsstrahlungPlus::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 > DBL_MIN ? 1./SIGMA : DBL_MAX; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -inline G4double G4eBremsstrahlungPlus::GetLambda( - G4double KineticEnergy, - G4Material* material) -{ - G4bool isOut; - const G4MaterialTable* theMaterialTable = - G4Material::GetMaterialTable() ; - - G4double lambda = (*theMeanFreePathTable) - [material->GetIndex()]-> - GetValue(KineticEnergy,isOut); - return lambda; -} - - diff --git a/source/processes/electromagnetic/standard/include/G4eIonisation.hh b/source/processes/electromagnetic/standard/include/G4eIonisation.hh index 0a4d033285..b114c92f5e 100644 --- a/source/processes/electromagnetic/standard/include/G4eIonisation.hh +++ b/source/processes/electromagnetic/standard/include/G4eIonisation.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4eIonisation.hh,v 1.2.8.1 1999/12/07 20:50:53 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4eIonisation.hh,v 1.6 2000/04/25 14:33:05 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -24,7 +24,7 @@ // It calculates the ionisation for e+/e-. // ************************************************************ // -// 04-09-98: new methods SetBining() PrintInfo(), MMa +// 10/02/00 modifications , new e.m. structure, L.Urban // ------------------------------------------------------------ #ifndef G4eIonisation_h @@ -33,7 +33,7 @@ #include "G4ios.hh" #include "globals.hh" #include "Randomize.hh" -#include "G4eEnergyLoss.hh" +#include "G4VeEnergyLoss.hh" #include "globals.hh" #include "G4Track.hh" #include "G4Step.hh" @@ -44,7 +44,7 @@ #include "G4PhysicsLinearVector.hh" -class G4eIonisation : public G4eEnergyLoss +class G4eIonisation : public G4VeEnergyLoss { public: @@ -55,8 +55,6 @@ class G4eIonisation : public G4eEnergyLoss G4bool IsApplicable(const G4ParticleDefinition&); - void SetPhysicsTableBining(G4double lowE, G4double highE, G4int nBins); - void BuildPhysicsTable(const G4ParticleDefinition& aParticleType); void BuildLossTable(const G4ParticleDefinition& aParticleType); @@ -92,10 +90,21 @@ class G4eIonisation : public G4eEnergyLoss private: G4PhysicsTable* theMeanFreePathTable; - - G4double LowestKineticEnergy; - 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;}; }; diff --git a/source/processes/electromagnetic/standard/include/G4eIonisation.icc b/source/processes/electromagnetic/standard/include/G4eIonisation.icc index 2a78ebb597..1eb6aec85e 100644 --- a/source/processes/electromagnetic/standard/include/G4eIonisation.icc +++ b/source/processes/electromagnetic/standard/include/G4eIonisation.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4eIonisation.icc,v 1.2.8.1 1999/12/07 20:50:53 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4eIonisation.icc,v 1.3 1999/12/15 14:51:49 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // --------------------------------------------------------------- diff --git a/source/processes/electromagnetic/standard/include/G4eIonisationPlus.hh b/source/processes/electromagnetic/standard/include/G4eIonisationPlus.hh deleted file mode 100644 index 526cdaab40..0000000000 --- a/source/processes/electromagnetic/standard/include/G4eIonisationPlus.hh +++ /dev/null @@ -1,105 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4eIonisationPlus.hh,v 1.1.10.1 1999/12/07 20:50:53 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// For information related to this code contact: -// CERN, IT Division, ASD group -// History: based on object model of -// 2nd December 1995, G.Cosmo -// ---------- G4eIonisationPlus 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-. -// ************************************************************ -// -// 04-09-98: new methods SetBining() PrintInfo(), MMa -// ------------------------------------------------------------ - -#ifndef G4eIonisationPlus_h -#define G4eIonisationPlus_h 1 - -#include "G4ios.hh" -#include "globals.hh" -#include "Randomize.hh" -#include "G4eEnergyLossPlus.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 G4eIonisationPlus : public G4eEnergyLossPlus - -{ - public: - - G4eIonisationPlus(const G4String& processName = "eIoni+"); - - ~G4eIonisationPlus(); - - 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 GetMeanFreePath(const G4Track& track, - G4double previousStepSize, - G4ForceCondition* condition ) ; - - G4VParticleChange *PostStepDoIt(const G4Track& track, - const G4Step& Step ) ; - - G4double GetLambda( - G4double KineticEnergy,G4Material* material); - - protected: - - virtual G4double ComputeMicroscopicCrossSection( - const G4ParticleDefinition& aParticleType, - G4double KineticEnergy, - G4double AtomicNumber, - G4double DeltaThreshold); - - private: - - // hide assignment operator - G4eIonisationPlus & operator=(const G4eIonisationPlus &right); - G4eIonisationPlus(const G4eIonisationPlus&); - - private: - - G4PhysicsTable* theMeanFreePathTable; - - G4double LowestKineticEnergy; - G4double HighestKineticEnergy; - G4int TotBin; - -}; - -#include "G4eIonisationPlus.icc" - -#endif - diff --git a/source/processes/electromagnetic/standard/include/G4eIonisationPlus.icc b/source/processes/electromagnetic/standard/include/G4eIonisationPlus.icc deleted file mode 100644 index 51cb6ac086..0000000000 --- a/source/processes/electromagnetic/standard/include/G4eIonisationPlus.icc +++ /dev/null @@ -1,78 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4eIonisationPlus.icc,v 1.1.10.1 1999/12/07 20:50:53 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// -// --------------------------------------------------------------- -// GEANT 4 class inlined methods file -// -// For information related to this code contact: -// CERN, IT Division, ASD group -// ------------ G4eIonisationPlus 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 -// -// --------------------------------------------------------------- - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -inline G4bool G4eIonisationPlus::IsApplicable( - const G4ParticleDefinition& particle) -{ - return( (&particle == G4Electron::Electron()) - ||(&particle == G4Positron::Positron()) ); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -inline G4double G4eIonisationPlus::GetMeanFreePath( - const G4Track& track, - G4double, - G4ForceCondition*) -{ - const G4DynamicParticle* aParticle = track.GetDynamicParticle(); - G4double KineticEnergy = aParticle->GetKineticEnergy(); - G4Material* aMaterial = track.GetMaterial(); - - G4double MeanFreePath; - G4bool isOutRange ; - - 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 G4eIonisationPlus::GetLambda( - G4double KineticEnergy, - G4Material* material) -{ - G4bool isOut; - const G4MaterialTable* theMaterialTable = - G4Material::GetMaterialTable() ; - - G4double lambda = (*theMeanFreePathTable) - [material->GetIndex()]-> - GetValue(KineticEnergy,isOut); - return lambda; -} - - diff --git a/source/processes/electromagnetic/standard/include/G4eplusAnnihilation.hh b/source/processes/electromagnetic/standard/include/G4eplusAnnihilation.hh index 466a7f79b5..4bd851a1b3 100644 --- a/source/processes/electromagnetic/standard/include/G4eplusAnnihilation.hh +++ b/source/processes/electromagnetic/standard/include/G4eplusAnnihilation.hh @@ -5,26 +5,26 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4eplusAnnihilation.hh,v 1.1.10.1 1999/12/07 20:50:53 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4eplusAnnihilation.hh,v 1.3 1999/12/17 18:26:12 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// CERN Geneva Switzerland -// -// For information related to this code contact: -// CERN, IT Division, ASD group -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo // ------------ G4eplusAnnihilation process ------ // by Michel Maire, 7 july 1996 -// ************************************************************ +// // 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() // ------------------------------------------------------------ +// class description +// +// e+ e- ---> gamma gamma +// inherit from G4VRestDiscreteProcess +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #ifndef G4eplusAnnihilation_h #define G4eplusAnnihilation_h 1 @@ -39,38 +39,72 @@ #include "G4Positron.hh" #include "G4Step.hh" +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + class G4eplusAnnihilation : public G4VRestDiscreteProcess { - public: + public: // with description G4eplusAnnihilation(const G4String& processName ="annihil"); ~G4eplusAnnihilation(); G4bool IsApplicable(const G4ParticleDefinition&); - + // true for positron only. + void SetPhysicsTableBining(G4double lowE, G4double highE, G4int nBins); - + // Allows to define the binning of the PhysicsTables, + // before to build them. + void BuildPhysicsTable(const G4ParticleDefinition& PositronType); - + // 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. + void PrintInfoDefinition(); - + // Print few lines of informations about the process: validity range, + // origine ..etc.. + // Invoked by BuildPhysicsTable(). + G4double GetMeanFreePath(const G4Track& aTrack, 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. + G4double GetCrossSectionPerAtom(G4DynamicParticle* aDynamicPositron, - G4Element* anElement); + G4Element* anElement); + // It returns the total CrossSectionPerAtom of the process, + // for the current DynamicPositron (energy), in anElement. G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); + // 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 GetMeanLifeTime(const G4Track& aTrack, G4ForceCondition* condition); - + // It is invoked by the ProcessManager of the Positron if this + // e+ has a kinetic energy null. Then it return 0 to force the + // call of AtRestDoIt. + // This function overloads a virtual function of the base class. + G4VParticleChange* AtRestDoIt(const G4Track& aTrack, - const G4Step& aStep); + const G4Step& aStep); + // It computes the final state of the process: + // e+ (at rest) e- (at rest) ---> gamma gamma, + // 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: diff --git a/source/processes/electromagnetic/standard/include/G4eplusAnnihilation.icc b/source/processes/electromagnetic/standard/include/G4eplusAnnihilation.icc index 08de04c0cb..c9ff26622f 100644 --- a/source/processes/electromagnetic/standard/include/G4eplusAnnihilation.icc +++ b/source/processes/electromagnetic/standard/include/G4eplusAnnihilation.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4eplusAnnihilation.icc,v 1.1.10.1 1999/12/07 20:50:54 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4eplusAnnihilation.icc,v 1.2 1999/12/15 14:51:49 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // --------------------------------------------------------------- diff --git a/source/processes/electromagnetic/standard/include/G4hIonisation.hh b/source/processes/electromagnetic/standard/include/G4hIonisation.hh index 41fd9761fa..74b0fe6e59 100644 --- a/source/processes/electromagnetic/standard/include/G4hIonisation.hh +++ b/source/processes/electromagnetic/standard/include/G4hIonisation.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4hIonisation.hh,v 1.4.8.1 1999/12/07 20:50:54 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4hIonisation.hh,v 1.9 2000/05/23 14:46:35 urban Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -26,6 +26,7 @@ // 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 // ------------------------------------------------------------ #ifndef G4hIonisation_h @@ -34,7 +35,7 @@ #include "G4ios.hh" #include "globals.hh" #include "Randomize.hh" -#include "G4hEnergyLoss.hh" +#include "G4VhEnergyLoss.hh" #include "globals.hh" #include "G4Track.hh" #include "G4Step.hh" @@ -43,7 +44,7 @@ #include "G4PhysicsLinearVector.hh" -class G4hIonisation : public G4hEnergyLoss +class G4hIonisation : public G4VhEnergyLoss { public: @@ -54,8 +55,6 @@ class G4hIonisation : public G4hEnergyLoss G4bool IsApplicable(const G4ParticleDefinition&); - void SetPhysicsTableBining(G4double lowE, G4double highE, G4int nBins); - void BuildPhysicsTable(const G4ParticleDefinition& aParticleType); virtual void BuildLossTable(const G4ParticleDefinition& aParticleType); @@ -98,6 +97,23 @@ class G4hIonisation : public G4hEnergyLoss 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;}; + }; #include "G4hIonisation.icc" diff --git a/source/processes/electromagnetic/standard/include/G4hIonisation.icc b/source/processes/electromagnetic/standard/include/G4hIonisation.icc index 61cf09125c..5f03b5473b 100644 --- a/source/processes/electromagnetic/standard/include/G4hIonisation.icc +++ b/source/processes/electromagnetic/standard/include/G4hIonisation.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4hIonisation.icc,v 1.2.8.1 1999/12/07 20:50:55 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4hIonisation.icc,v 1.3 1999/12/15 14:51:49 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // --------------------------------------------------------------- diff --git a/source/processes/electromagnetic/standard/include/G4hIonisationPlus.hh b/source/processes/electromagnetic/standard/include/G4hIonisationPlus.hh deleted file mode 100644 index 152c507b20..0000000000 --- a/source/processes/electromagnetic/standard/include/G4hIonisationPlus.hh +++ /dev/null @@ -1,113 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4hIonisationPlus.hh,v 1.2.8.1 1999/12/07 20:50:55 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// For information related to this code contact: -// CERN, IT Division, ASD group -// History: based on object model of -// 2nd December 1995, G.Cosmo -// ---------- G4hIonisationPlus 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 -// ------------------------------------------------------------ - -#ifndef G4hIonisationPlus_h -#define G4hIonisationPlus_h 1 - -#include "G4ios.hh" -#include "globals.hh" -#include "Randomize.hh" -#include "G4hEnergyLossPlus.hh" -#include "globals.hh" -#include "G4Track.hh" -#include "G4Step.hh" -#include "G4Electron.hh" -#include "G4PhysicsLogVector.hh" -#include "G4PhysicsLinearVector.hh" - - -class G4hIonisationPlus : public G4hEnergyLossPlus - -{ - public: - - G4hIonisationPlus(const G4String& processName = "hIoni+"); - - ~G4hIonisationPlus(); - - 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 GetMeanFreePath( - 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 - G4hIonisationPlus & operator=(const G4hIonisationPlus &right); - G4hIonisationPlus(const G4hIonisationPlus&); - - private: - // private data members ............................... - - G4PhysicsTable* theMeanFreePathTable; - - // particles , cuts in kinetic energy ........ - const G4Electron* theElectron; - const G4Proton* theProton; - const G4AntiProton* theAntiProton; - - const G4double* DeltaCutInKineticEnergy ; - - G4double DeltaCutInKineticEnergyNow ; -}; - -#include "G4hIonisationPlus.icc" - -#endif - - - - - - - - diff --git a/source/processes/electromagnetic/standard/include/G4hIonisationPlus.icc b/source/processes/electromagnetic/standard/include/G4hIonisationPlus.icc deleted file mode 100644 index c791dcc224..0000000000 --- a/source/processes/electromagnetic/standard/include/G4hIonisationPlus.icc +++ /dev/null @@ -1,61 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4hIonisationPlus.icc,v 1.1.8.1 1999/12/07 20:50:55 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// -// --------------------------------------------------------------- -// GEANT 4 class inlined methods file -// -// For information related to this code contact: -// CERN, IT Division, ASD group -// ------------ G4hIonisationPlus 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 -// --------------------------------------------------------------- - -inline G4double G4hIonisationPlus::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 ; -} - -inline G4bool G4hIonisationPlus::IsApplicable( - const G4ParticleDefinition& particle) -{ - return(particle.GetPDGCharge() != 0.); -} - diff --git a/source/processes/electromagnetic/standard/include/G4ionIonisation.hh b/source/processes/electromagnetic/standard/include/G4ionIonisation.hh index 720e57cee0..ffb36a303c 100644 --- a/source/processes/electromagnetic/standard/include/G4ionIonisation.hh +++ b/source/processes/electromagnetic/standard/include/G4ionIonisation.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ionIonisation.hh,v 1.2.8.1 1999/12/07 20:50:55 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ionIonisation.hh,v 1.3 1999/12/15 14:51:49 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/electromagnetic/standard/include/G4ionIonisation.icc b/source/processes/electromagnetic/standard/include/G4ionIonisation.icc index 7691d37a0e..f434c6394c 100644 --- a/source/processes/electromagnetic/standard/include/G4ionIonisation.icc +++ b/source/processes/electromagnetic/standard/include/G4ionIonisation.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ionIonisation.icc,v 1.2.8.1 1999/12/07 20:50:55 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ionIonisation.icc,v 1.3 1999/12/15 14:51:49 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // --------------------------------------------------------------- diff --git a/source/processes/electromagnetic/standard/src/G4ComptonScattering.cc b/source/processes/electromagnetic/standard/src/G4ComptonScattering.cc index 470a744488..170f85b9e4 100644 --- a/source/processes/electromagnetic/standard/src/G4ComptonScattering.cc +++ b/source/processes/electromagnetic/standard/src/G4ComptonScattering.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ComptonScattering.cc,v 1.2.8.1.2.1 1999/12/08 17:34:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ComptonScattering.cc,v 1.3 1999/12/15 14:51:50 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- @@ -28,7 +28,7 @@ // 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>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 // -------------------------------------------------------------- diff --git a/source/processes/electromagnetic/standard/src/G4EnergyLossMessenger.cc b/source/processes/electromagnetic/standard/src/G4EnergyLossMessenger.cc index 3b91a8c437..0bcc6c5412 100644 --- a/source/processes/electromagnetic/standard/src/G4EnergyLossMessenger.cc +++ b/source/processes/electromagnetic/standard/src/G4EnergyLossMessenger.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4EnergyLossMessenger.cc,v 1.2.6.1.2.5 1999/12/14 09:16:48 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4EnergyLossMessenger.cc,v 1.5 2000/05/23 14:42:21 urban Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // @@ -15,10 +15,8 @@ #include "G4EnergyLossMessenger.hh" -#include "G4eEnergyLoss.hh" -#include "G4hEnergyLoss.hh" -#include "G4eEnergyLossPlus.hh" -#include "G4hEnergyLossPlus.hh" +#include "G4VeEnergyLoss.hh" +#include "G4VhEnergyLoss.hh" #include "G4UIcommand.hh" #include "G4UIparameter.hh" @@ -42,6 +40,12 @@ G4EnergyLossMessenger::G4EnergyLossMessenger() EnlossFlucCmd->SetDefaultValue(true); EnlossFlucCmd->AvailableForStates(Idle); + SubSecCmd = new G4UIcmdWithABool("/process/Loss/subsec",this); + SubSecCmd->SetGuidance("Switch on/off the subcutoff generation."); + SubSecCmd->SetParameterName("choice",true); + SubSecCmd->SetDefaultValue(true); + SubSecCmd->AvailableForStates(Idle); + StepFuncCmd = new G4UIcommand("/process/eLoss/StepFunction",this); StepFuncCmd->SetGuidance("Set the energy loss step limitation parameters."); StepFuncCmd->SetGuidance(" dRoverR : max Range variation per step"); @@ -69,6 +73,7 @@ G4EnergyLossMessenger::~G4EnergyLossMessenger() { delete RndmStepCmd; delete EnlossFlucCmd; + delete SubSecCmd; delete StepFuncCmd; } @@ -77,17 +82,18 @@ G4EnergyLossMessenger::~G4EnergyLossMessenger() void G4EnergyLossMessenger::SetNewValue(G4UIcommand* command,G4String newValue) { if (command == RndmStepCmd) - { G4eEnergyLoss::SetRndmStep(RndmStepCmd->GetNewBoolValue(newValue)); - G4hEnergyLoss::SetRndmStep(RndmStepCmd->GetNewBoolValue(newValue)); - G4eEnergyLossPlus::SetRndmStep(RndmStepCmd->GetNewBoolValue(newValue)); - G4hEnergyLossPlus::SetRndmStep(RndmStepCmd->GetNewBoolValue(newValue)); + { G4VeEnergyLoss::SetRndmStep(RndmStepCmd->GetNewBoolValue(newValue)); + G4VhEnergyLoss::SetRndmStep(RndmStepCmd->GetNewBoolValue(newValue)); } if (command == EnlossFlucCmd) - { G4eEnergyLoss::SetEnlossFluc(EnlossFlucCmd->GetNewBoolValue(newValue)); - G4hEnergyLoss::SetEnlossFluc(EnlossFlucCmd->GetNewBoolValue(newValue)); - G4eEnergyLossPlus::SetEnlossFluc(EnlossFlucCmd->GetNewBoolValue(newValue)); - G4hEnergyLossPlus::SetEnlossFluc(EnlossFlucCmd->GetNewBoolValue(newValue)); + { G4VeEnergyLoss::SetEnlossFluc(EnlossFlucCmd->GetNewBoolValue(newValue)); + G4VhEnergyLoss::SetEnlossFluc(EnlossFlucCmd->GetNewBoolValue(newValue)); + } + + if (command == SubSecCmd) + { G4VeEnergyLoss::SetSubSec(SubSecCmd->GetNewBoolValue(newValue)); + G4VhEnergyLoss::SetSubSec(SubSecCmd->GetNewBoolValue(newValue)); } if (command == StepFuncCmd) @@ -99,10 +105,8 @@ void G4EnergyLossMessenger::SetNewValue(G4UIcommand* command,G4String newValue) is >> v1 >> v2 >> unts; G4String unt = unts; v2 *= G4UIcommand::ValueOf(unt); - G4eEnergyLoss::SetStepFunction(v1,v2); - G4hEnergyLoss::SetStepFunction(v1,v2); - G4eEnergyLossPlus::SetStepFunction(v1,v2); - G4hEnergyLossPlus::SetStepFunction(v1,v2); + G4VeEnergyLoss::SetStepFunction(v1,v2); + G4VhEnergyLoss::SetStepFunction(v1,v2); } } diff --git a/source/processes/electromagnetic/standard/src/G4GammaConversion.cc b/source/processes/electromagnetic/standard/src/G4GammaConversion.cc index a38e5713f9..c9bf090a8a 100644 --- a/source/processes/electromagnetic/standard/src/G4GammaConversion.cc +++ b/source/processes/electromagnetic/standard/src/G4GammaConversion.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4GammaConversion.cc,v 1.2.8.1.2.2 1999/12/10 15:41:58 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4GammaConversion.cc,v 1.3 1999/12/15 14:51:50 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- @@ -35,7 +35,7 @@ // 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>min(threshold,safety) +// 04-06-98, in DoIt, secondary production condition: range>G4std::min(threshold,safety) // 13-08-98, new methods SetBining() PrintInfo() // -------------------------------------------------------------- @@ -341,7 +341,7 @@ G4VParticleChange* G4GammaConversion::PostStepDoIt(const G4Track& aTrack, G4double PositKineEnergy = G4std::max(0.,PositTotEnergy - electron_mass_c2) ; // if (G4EnergyLossTables::GetRange(G4Positron::Positron(),PositKineEnergy,aMaterial) - // < min(G4Positron::GetCuts(), aStep.GetPostStepPoint()->GetSafety()) ) + // < G4std::min(G4Positron::GetCuts(), aStep.GetPostStepPoint()->GetSafety()) ) if((G4EnergyLossTables::GetRange(G4Positron::Positron(), PositKineEnergy,aMaterial)GetSafety()) && diff --git a/source/processes/electromagnetic/standard/src/G4IeBremsstrahlung.cc b/source/processes/electromagnetic/standard/src/G4IeBremsstrahlung.cc index cbe4e55aa6..7bf04ebb0f 100644 --- a/source/processes/electromagnetic/standard/src/G4IeBremsstrahlung.cc +++ b/source/processes/electromagnetic/standard/src/G4IeBremsstrahlung.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IeBremsstrahlung.cc,v 1.3.8.1.2.3 1999/12/10 15:41:59 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IeBremsstrahlung.cc,v 1.5 2000/04/25 14:33:08 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // -------------------------------------------------------------- @@ -36,7 +36,7 @@ G4IeBremsstrahlung::G4IeBremsstrahlung(const G4String& processName) - : G4IeEnergyLoss(processName), + : G4VIeEnergyLoss(processName), theMeanFreePathTable(NULL), theNlambdaTable(NULL), theInverseNlambdaTable(NULL), diff --git a/source/processes/electromagnetic/standard/src/G4IeIonisation.cc b/source/processes/electromagnetic/standard/src/G4IeIonisation.cc index 3b2a988f9d..bf6b7787f1 100644 --- a/source/processes/electromagnetic/standard/src/G4IeIonisation.cc +++ b/source/processes/electromagnetic/standard/src/G4IeIonisation.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IeIonisation.cc,v 1.3.8.1.2.3 1999/12/10 15:41:59 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IeIonisation.cc,v 1.5 2000/04/25 14:33:08 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // ------------------------------------------------------------- @@ -33,7 +33,7 @@ G4IeIonisation::G4IeIonisation(const G4String& processName) - : G4IeEnergyLoss(processName), + : G4VIeEnergyLoss(processName), theMeanFreePathTable(NULL), theNlambdaTable(NULL), theInverseNlambdaTable(NULL), diff --git a/source/processes/electromagnetic/standard/src/G4IeplusAnnihilation.cc b/source/processes/electromagnetic/standard/src/G4IeplusAnnihilation.cc index 4a426c966f..e0fd620ffa 100644 --- a/source/processes/electromagnetic/standard/src/G4IeplusAnnihilation.cc +++ b/source/processes/electromagnetic/standard/src/G4IeplusAnnihilation.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IeplusAnnihilation.cc,v 1.5.8.1.2.2 1999/12/09 16:18:04 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IeplusAnnihilation.cc,v 1.6 1999/12/15 14:51:50 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // -------------------------------------------------------------- diff --git a/source/processes/electromagnetic/standard/src/G4IhIonisation.cc b/source/processes/electromagnetic/standard/src/G4IhIonisation.cc index 3682b4cf69..30a1ffd7bd 100644 --- a/source/processes/electromagnetic/standard/src/G4IhIonisation.cc +++ b/source/processes/electromagnetic/standard/src/G4IhIonisation.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IhIonisation.cc,v 1.5.8.1.2.2 1999/12/09 16:18:04 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IhIonisation.cc,v 1.7 2000/04/25 14:33:09 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------- // GEANT 4 class implementation file @@ -34,7 +34,7 @@ // constructor and destructor G4IhIonisation::G4IhIonisation(const G4String& processName) - : G4IhEnergyLoss(processName), + : G4VIhEnergyLoss(processName), theMeanFreePathTable(NULL), NumberOfBuildPhysicsTableCalls(0), theProton (G4Proton::Proton()), diff --git a/source/processes/electromagnetic/standard/src/G4IonisationByLogicalVolume.cc b/source/processes/electromagnetic/standard/src/G4IonisationByLogicalVolume.cc new file mode 100644 index 0000000000..7f95fa1887 --- /dev/null +++ b/source/processes/electromagnetic/standard/src/G4IonisationByLogicalVolume.cc @@ -0,0 +1,259 @@ +// Implementation of class for selecting ionisation model depending on +// logical volume +// +// + +#include "G4IonisationByLogicalVolume.hh" + +/////////////////////////////////////////////////////////////////////////// +// +// + +G4IonisationByLogicalVolume:: +G4IonisationByLogicalVolume( const G4String& particleName, + G4LogicalVolume* volumeForPAImodel, + const G4String& processName ) : + G4VContinuousDiscreteProcess(processName), + fPAIonisation(NULL),feIonisation(NULL),fMuIonisation(NULL),fhIonisation(NULL) +{ + fParticleName = particleName ; + fVolumeForPAImodel = volumeForPAImodel ; + fMaterialNameForPAI = volumeForPAImodel->GetMaterial()->GetName() ; + + fPAIonisation = new G4PAIonisation(fMaterialNameForPAI); + + if ( fParticleName == "e+" || fParticleName == "e-" ) + { + feIonisation = new G4eIonisation() ; + } + else if ( fParticleName == "mu+" || fParticleName == "mu-" ) + { + fMuIonisation = new G4MuIonisation() ; + } + else + { + fhIonisation = new G4hIonisation() ; + } + +} + +/////////////////////////////////////////////////////////////////////////// +// +// + +G4IonisationByLogicalVolume::~G4IonisationByLogicalVolume() +{ + if(fPAIonisation) delete fPAIonisation ; + if(feIonisation) delete feIonisation ; + if(fMuIonisation) delete fMuIonisation ; + if(fhIonisation) delete fhIonisation ; + +} + +/////////////////////////////////////////////////////////////////////////// +// +// Methods + +G4bool G4IonisationByLogicalVolume:: +IsApplicable( const G4ParticleDefinition& particle ) +{ + return( particle.GetPDGCharge() != 0.) ; +} + +///////////////////////////////////////////////////////////////////////// +// +// + +/* *********************************************** + +G4double G4IonisationByLogicalVolume:: +GetConstraints(const G4DynamicParticle* aParticle, + G4Material* aMaterial ) +{ + if ( aMaterial->GetName() == fMaterialNameForPAI ) + { + return fPAIonisation->GetConstraints(aParticle,aMaterial) ; + } + else + { + if ( fParticleName == "e+" || fParticleName == "e-" ) + { + return feIonisation->GetConstraints(aParticle,aMaterial) ; + } + else if ( fParticleName == "mu+" || fParticleName == "mu-" ) + { + return fMuIonisation->GetConstraints(aParticle,aMaterial) ; + } + else + { + return fhIonisation->GetConstraints(aParticle,aMaterial) ; + } + } +} + +************************************** */ + +//////////////////////////////////////////////////////////////////////////// +// +// + +G4VParticleChange* +G4IonisationByLogicalVolume::PostStepDoIt( const G4Track& track, + const G4Step& step ) +{ + if ( track.GetVolume()->GetLogicalVolume() == fVolumeForPAImodel ) + { + return fPAIonisation->PostStepDoIt(track,step) ; + } + else + { + if ( fParticleName == "e+" || fParticleName == "e-" ) + { + return feIonisation->PostStepDoIt(track,step) ; + } + else if ( fParticleName == "mu+" || fParticleName == "mu-" ) + { + return fMuIonisation->PostStepDoIt(track,step) ; + } + else + { + return fhIonisation->PostStepDoIt(track,step) ; + } + } +} + + +//////////////////////////////////////////////////////////////////////// +// +// + + +void G4IonisationByLogicalVolume:: +BuildPhysicsTable(const G4ParticleDefinition& aParticleType) +{ + fPAIonisation->BuildPhysicsTable(aParticleType) ; + + if ( fParticleName == "e+" || fParticleName == "e-" ) + { + feIonisation->BuildPhysicsTable(aParticleType) ; + } + else if ( fParticleName == "mu+" || fParticleName == "mu-" ) + { + fMuIonisation->BuildPhysicsTable(aParticleType) ; + } + else + { + fhIonisation->BuildPhysicsTable(aParticleType) ; + } +} + +//////////////////////////////////////////////////////////////////////// +// +// + +G4double G4IonisationByLogicalVolume:: +GetContinuousStepLimit( const G4Track& track, + G4double previousStepSize, + G4double currentMinimumStep, + G4double& currentSafety ) +{ + if ( track.GetVolume()->GetLogicalVolume() == fVolumeForPAImodel ) + { + return fPAIonisation->GetContinuousStepLimit(track,previousStepSize, + currentMinimumStep,currentSafety) ; + } + else + { + if ( fParticleName == "e+" || fParticleName == "e-" ) + { + return feIonisation->GetContinuousStepLimit(track,previousStepSize, + currentMinimumStep,currentSafety) ; + } + else if ( fParticleName == "mu+" || fParticleName == "mu-" ) + { + return fMuIonisation->GetContinuousStepLimit(track,previousStepSize, + currentMinimumStep,currentSafety) ; + } + else + { + return fhIonisation->GetContinuousStepLimit(track,previousStepSize, + currentMinimumStep,currentSafety) ; + } + } +} + +//////////////////////////////////////////////////////////////////////// +// +// + +G4double G4IonisationByLogicalVolume:: +GetMeanFreePath( const G4Track& track, + G4double previousStepSize, + G4ForceCondition* condition ) +{ + if ( track.GetVolume()->GetLogicalVolume() == fVolumeForPAImodel ) + { + return fPAIonisation->GetMeanFreePath(track,previousStepSize,condition) ; + } + else + { + if ( fParticleName == "e+" || fParticleName == "e-" ) + { + return feIonisation->GetMeanFreePath(track,previousStepSize,condition) ; + } + else if ( fParticleName == "mu+" || fParticleName == "mu-" ) + { + return fMuIonisation->GetMeanFreePath(track,previousStepSize,condition) ; + } + else + { + return fhIonisation->GetMeanFreePath(track,previousStepSize,condition) ; + } + } +} + +///////////////////////////////////////////////////////////////////////// +// +// + +G4VParticleChange* +G4IonisationByLogicalVolume::AlongStepDoIt( const G4Track& track , + const G4Step& step ) +{ + if ( track.GetVolume()->GetLogicalVolume() == fVolumeForPAImodel ) + { + return fPAIonisation->AlongStepDoIt(track,step) ; + } + else + { + if ( fParticleName == "e+" || fParticleName == "e-" ) + { + return feIonisation->AlongStepDoIt(track,step) ; + } + else if ( fParticleName == "mu+" || fParticleName == "mu-" ) + { + return fMuIonisation->AlongStepDoIt(track,step) ; + } + else + { + return fhIonisation->AlongStepDoIt(track,step) ; + } + } +} + +////////////////////////////////////////////////////////////////////////// +// +// + +void G4IonisationByLogicalVolume:: +SetVolumeForPAImodel( G4LogicalVolume* volumeForPAImodel ) +{ + fVolumeForPAImodel = volumeForPAImodel ; +} + + + +// +// +///////////////////////////////////////////////////////////////////////// + diff --git a/source/processes/electromagnetic/standard/src/G4PAIenergyLoss.cc b/source/processes/electromagnetic/standard/src/G4PAIenergyLoss.cc deleted file mode 100644 index cbbe0be949..0000000000 --- a/source/processes/electromagnetic/standard/src/G4PAIenergyLoss.cc +++ /dev/null @@ -1,845 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4PAIenergyLoss.cc,v 1.2.8.1 1999/12/07 20:50:59 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// $Id: -// ----------------------------------------------------------- -// GEANT 4 class implementation file -// -// For information related to this code contact: -// CERN, IT Division, ASD group -// History: based on object model of -// 2nd December 1995, G.Cosmo -// ---------- G4PAIenergyLoss physics process ----------- -// by V. Grichine, 30 Nov 1997 -// ************************************************************** -// It is the first implementation of the NEW UNIFIED ENERGY LOSS PROCESS. -// It calculates the energy loss of charged hadrons. -// ************************************************************** -// -// corrected by V. Grichine on 24/11/97 -// corrected by L. Urban on 27/05/98 ( other corrections come soon!) -// - - -#include "G4PAIenergyLoss.hh" -#include "G4PAIonisation.hh" -#include "G4EnergyLossTables.hh" - -//////////////////////////////////////////////////////////////////////////// -// -// Initialisation of static members -// ( this stuff should be defined later using RW ..........) -// contributing processes : ion.loss ->NUMBEROFPROCESSES 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 G4hEnergyLoss.hh) - -G4int G4PAIenergyLoss::NUMBEROFPROCESSES = 1 ; -G4PhysicsTable** G4PAIenergyLoss::RecorderOfpProcess = - new G4PhysicsTable*[10] ; -G4int G4PAIenergyLoss::CounterOfpProcess = 0 ; - -G4PhysicsTable* G4PAIenergyLoss::theDEDXpTable = NULL ; -G4PhysicsTable* G4PAIenergyLoss::theRangepTable = NULL ; -G4PhysicsTable* G4PAIenergyLoss::theInverseRangepTable = NULL ; -G4PhysicsTable* G4PAIenergyLoss::theLabTimepTable = NULL ; -G4PhysicsTable* G4PAIenergyLoss::theProperTimepTable = NULL ; - -G4PhysicsTable* G4PAIenergyLoss::thepRangeCoeffATable = NULL ; -G4PhysicsTable* G4PAIenergyLoss::thepRangeCoeffBTable = NULL ; -G4PhysicsTable* G4PAIenergyLoss::thepRangeCoeffCTable = NULL ; - -G4PhysicsTable** G4PAIenergyLoss::RecorderOfpbarProcess = - new G4PhysicsTable*[10] ; -G4int G4PAIenergyLoss::CounterOfpbarProcess = 0 ; - -G4PhysicsTable* G4PAIenergyLoss::theDEDXpbarTable = NULL ; -G4PhysicsTable* G4PAIenergyLoss::theRangepbarTable = NULL ; -G4PhysicsTable* G4PAIenergyLoss::theInverseRangepbarTable = NULL ; -G4PhysicsTable* G4PAIenergyLoss::theLabTimepbarTable = NULL ; -G4PhysicsTable* G4PAIenergyLoss::theProperTimepbarTable = NULL ; - -G4PhysicsTable* G4PAIenergyLoss::thepbarRangeCoeffATable = NULL ; -G4PhysicsTable* G4PAIenergyLoss::thepbarRangeCoeffBTable = NULL ; -G4PhysicsTable* G4PAIenergyLoss::thepbarRangeCoeffCTable = NULL ; - -G4PhysicsTable* G4PAIenergyLoss::theDEDXTable = NULL; - -// G4PhysicsTable* G4PAIenergyLoss::fPAItransferBank = NULL ; - -G4double G4PAIenergyLoss::Mass, - G4PAIenergyLoss::taulow, - G4PAIenergyLoss::tauhigh, - G4PAIenergyLoss::ltaulow, - G4PAIenergyLoss::ltauhigh; - -G4double G4PAIenergyLoss::CutInRange = 0; - -const G4double G4PAIenergyLoss::LowestKineticEnergy= 1.00*keV ; -const G4double G4PAIenergyLoss::HighestKineticEnergy= 100.*TeV ; -G4int G4PAIenergyLoss::TotBin ; -G4double G4PAIenergyLoss::RTable,G4PAIenergyLoss::LOGRTable; - - -// constructor and destructor - -G4PAIenergyLoss::G4PAIenergyLoss(const G4String& processName) - : G4VContinuousDiscreteProcess (processName), - dToverTini(0.20), // max.relative range loss in one Step = 20% - // LowestKineticEnergy(1.00*keV), - // HighestKineticEnergy(100.*TeV), - MaxExcitationNumber (1.e6), - probLimFluct (0.01), - nmaxDirectFluct (100), - nmaxCont1(4), - nmaxCont2(16), - theElectron ( G4Electron::Electron() ), - theProton ( G4Proton::Proton() ), - theAntiProton ( G4AntiProton::AntiProton() ) -{ - theLossTable = NULL ; - lastMaterial = NULL ; - -// 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); - -} - -G4PAIenergyLoss::~G4PAIenergyLoss() -{ - if(theLossTable) { - theLossTable->clearAndDestroy(); - delete theLossTable; - } - -} - - -///////////////////////////////////////////////////////////////////////// -// -// - -void G4PAIenergyLoss::BuildDEDXTable(const G4ParticleDefinition& aParticleType) -{ - G4bool MakeTable = false ; - - G4double newCutInRange = aParticleType.GetLengthCuts(); - -// Create tables only if there is a new cut value ! - - // create/fill proton or antiproton tables depending on the charge of the particle - 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. -// -// different processes. - - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - -// create table for the total energy loss - - G4int numOfMaterials = theMaterialTable->length(); - - G4PhysicsTable** RecorderOfProcess; - int CounterOfProcess; - - if( Charge >0.) - { - RecorderOfProcess=RecorderOfpProcess; - CounterOfProcess=CounterOfpProcess; - - if(CounterOfProcess == NUMBEROFPROCESSES) - { - // create tables - if(theDEDXpTable) - { theDEDXpTable->clearAndDestroy(); - delete theDEDXpTable; } - theDEDXpTable = new G4PhysicsTable(numOfMaterials); - theDEDXTable = theDEDXpTable; - } - } - else - { - RecorderOfProcess=RecorderOfpbarProcess; - CounterOfProcess=CounterOfpbarProcess; - - if(CounterOfProcess == NUMBEROFPROCESSES) - { - // create tables - if(theDEDXpbarTable) - { theDEDXpbarTable->clearAndDestroy(); - delete theDEDXpbarTable; } - theDEDXpbarTable = new G4PhysicsTable(numOfMaterials); - theDEDXTable = theDEDXpbarTable; - } - } - - - if(CounterOfProcess == NUMBEROFPROCESSES) - { - // 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,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.) CounterOfpProcess=0 ; - else CounterOfpbarProcess=0 ; - - // Build range table - - BuildRangeTable( aParticleType); - - // Build coeff tables for the energy loss calculation - - BuildRangeCoeffATable( aParticleType); - BuildRangeCoeffBTable( aParticleType); - BuildRangeCoeffCTable( 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); - -} - -///////////////////////////////////////////////////////////////////////// -// -// Build range table from the energy loss table - -void G4PAIenergyLoss::BuildRangeTable( const G4ParticleDefinition& aParticleType) - -{ - G4double Charge = aParticleType.GetPDGCharge() ; - - Mass = proton_mass_c2; - -// create table - - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - - - G4int numOfMaterials = theMaterialTable->length(); - - G4PhysicsTable* theRangeTable; - - 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); - - } - -} - -/////////////////////////////////////////////////////////////////// -// -// create range vector for a material -// - -void G4PAIenergyLoss::BuildRangeVector(G4int materialIndex, - G4PhysicsLogVector* rangeVector) -{ - 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/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) ; - - // loop for kinetic energy - - for (G4int i=0; iGetLowEdgeEnergy(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) - { - nbin = (G4int)(maxbint*(tau-tau1)/(taulim-tau1)) ; - if(nbin<1) nbin = 1; - taulow = tau1 ; - tauhigh = tau ; - Value += RangeIntLin(physicsVector,nbin); - } - else - { - taulow = tau1 ; - tauhigh = taulim ; - Value += RangeIntLin(physicsVector,maxbint) ; - ltaulow = ltaulim ; - ltauhigh = log(tau) ; - nbin = (G4int)(maxbint*(ltauhigh-ltaulow)/(ltaumax-ltaulow)) ; - if(nbin<1) nbin= 1 ; - Value += RangeIntLog(physicsVector,nbin); - } - } - rangeVector->PutValue(i,Value); - } -} - -/////////////////////////////////////////////////////////////////// -// -// num. integration, linear binning -// - -G4double G4PAIenergyLoss::RangeIntLin(G4PhysicsVector* physicsVector, - G4int nbin) -{ - 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(iGetDefinition()->GetPDGCharge() ; - G4double Chargesquare = Charge*Charge ; - G4double MassRatio = proton_mass_c2/aParticle->GetDefinition()->GetPDGMass() ; - - G4PhysicsTable* theRangeTable; - - if(Charge>0.) theRangeTable=theRangepTable ; - - else theRangeTable=theRangepbarTable ; - - materialIndex = aMaterial->GetIndex(); - KineticEnergy = aParticle->GetKineticEnergy()*MassRatio; - - if(KineticEnergyHighestKineticEnergy) Range = BigRange ; - - else Range = (*theRangeTable)[materialIndex]->GetValue(KineticEnergy,isOut) ; - - } - return Range/Chargesquare ; - -} - -/////////////////////////////////////////////////////////////////////// -// -// Build tables of coefficients for the energy loss calculation -// - -void G4PAIenergyLoss:: -BuildRangeCoeffATable(const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable() ; - -// create table for coefficients "A" - - G4int numOfMaterials = theMaterialTable->length(); - G4double Charge = aParticleType.GetPDGCharge() ; - - G4PhysicsTable* theRangeTable; - G4PhysicsTable* theRangeCoeffATable; - 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; - - - 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); - } -} - -//////////////////////////////////////////////////////////////////////// -// -// Build tables of coefficients for the energy loss calculation -// - -void G4PAIenergyLoss:: -BuildRangeCoeffBTable(const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable() ; - -// create table for coefficients "B" - - - G4int numOfMaterials = theMaterialTable->length(); - G4double Charge = aParticleType.GetPDGCharge() ; - - G4PhysicsTable* theRangeTable; - G4PhysicsTable* theRangeCoeffBTable; - 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) ; - } -} - -/////////////////////////////////////////////////////////////////////////// -// -// Build tables of coefficients for the energy loss calculation -// - -void G4PAIenergyLoss::BuildRangeCoeffCTable( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - -// create table for coefficients "C" - - G4int numOfMaterials = theMaterialTable->length(); - G4double Charge = aParticleType.GetPDGCharge() ; - - G4PhysicsTable* theRangeTable; - G4PhysicsTable* theRangeCoeffCTable; - 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 ; - } - - 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) ; - } -} - -// -// -///////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/source/processes/electromagnetic/standard/src/G4PAIonisation.cc b/source/processes/electromagnetic/standard/src/G4PAIonisation.cc index ef4a492cfc..90a93be71b 100644 --- a/source/processes/electromagnetic/standard/src/G4PAIonisation.cc +++ b/source/processes/electromagnetic/standard/src/G4PAIonisation.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PAIonisation.cc,v 1.2.8.1.2.1 1999/12/08 17:34:24 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PAIonisation.cc,v 1.8 2000/05/02 15:12:45 grichine Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------- @@ -52,7 +52,7 @@ G4PAIonisation::fProtonEnergyVector = new G4PhysicsLogVector(LowestKineticEnergy G4PAIonisation::G4PAIonisation( const G4String& materialName, const G4String& processName) - : G4PAIenergyLoss(processName), + : G4VPAIenergyLoss(processName), theElectron ( G4Electron::Electron() ) { G4int numberOfMat, iMat ; @@ -85,12 +85,17 @@ G4PAIonisation::G4PAIonisation( const G4String& materialName, G4PAIonisation::~G4PAIonisation() { - if (theMeanFreePathTable) - { - theMeanFreePathTable->clearAndDestroy(); - delete theMeanFreePathTable; - } - + if ( theMeanFreePathTable ) + { + theMeanFreePathTable->clearAndDestroy(); + delete theMeanFreePathTable; + } + if( fPAItransferBank ) + { + fPAItransferBank->clearAndDestroy() ; + delete fPAItransferBank ; + } + } ///////////////////////////////////////////////////////////////////////// @@ -179,7 +184,7 @@ G4PAIonisation::BuildPhysicsTable(const G4ParticleDefinition& aParticleType) lastCutInRange = CutInRange ; BuildLambdaTable(aParticleType) ; } - // G4PAIenergyLoss::BuildDEDXTable(aParticleType) ; + // G4VPAIenergyLoss::BuildDEDXTable(aParticleType) ; } //////////////////////////////////////////////////////////////////////////// @@ -195,7 +200,7 @@ G4PAIonisation::BuildLossTable(const G4ParticleDefinition& aParticleType) G4double Charge = aParticleType.GetPDGCharge() ; G4double LowEdgeEnergy , ionloss ; - G4double ParticleMass , RateMass ; + G4double RateMass ; G4bool isOutRange ; static const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); const G4double SmallIonLoss = DBL_MIN ; @@ -304,7 +309,9 @@ G4PAIonisation::BuildLossTable(const G4ParticleDefinition& aParticleType) tau = 0.01 ; } gamma = tau +1. ; - G4cout<<"gamma = "<GetIndex() ; G4bool isOutRange ; - // G4cout<<"G4PAIenergyLoss::GetLossWithFluct"<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 diff --git a/source/processes/electromagnetic/standard/src/G4PolarizedComptonScattering.cc b/source/processes/electromagnetic/standard/src/G4PolarizedComptonScattering.cc index 71ae286efc..25266d977a 100644 --- a/source/processes/electromagnetic/standard/src/G4PolarizedComptonScattering.cc +++ b/source/processes/electromagnetic/standard/src/G4PolarizedComptonScattering.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PolarizedComptonScattering.cc,v 1.1.10.1 1999/12/07 20:51:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PolarizedComptonScattering.cc,v 1.2 1999/12/15 14:51:52 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -------------------------------------------------------------- // GEANT 4 class implementation file diff --git a/source/processes/electromagnetic/standard/src/G4SynchrotronRadiation.cc b/source/processes/electromagnetic/standard/src/G4SynchrotronRadiation.cc index be9bb6f9e5..d559631ca3 100644 --- a/source/processes/electromagnetic/standard/src/G4SynchrotronRadiation.cc +++ b/source/processes/electromagnetic/standard/src/G4SynchrotronRadiation.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4SynchrotronRadiation.cc,v 1.1.10.1 1999/12/07 20:51:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4SynchrotronRadiation.cc,v 1.2 1999/12/15 14:51:52 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -------------------------------------------------------------- // GEANT 4 class implementation file diff --git a/source/processes/electromagnetic/standard/src/G4IeEnergyLoss.cc b/source/processes/electromagnetic/standard/src/G4VIeEnergyLoss.cc similarity index 92% rename from source/processes/electromagnetic/standard/src/G4IeEnergyLoss.cc rename to source/processes/electromagnetic/standard/src/G4VIeEnergyLoss.cc index 6fd4b1fff3..c3bedf907a 100644 --- a/source/processes/electromagnetic/standard/src/G4IeEnergyLoss.cc +++ b/source/processes/electromagnetic/standard/src/G4VIeEnergyLoss.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IeEnergyLoss.cc,v 1.7.6.1 1999/12/07 20:50:58 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VIeEnergyLoss.cc,v 1.1 2000/04/25 14:33:09 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // ----------------------------------------------------------- @@ -16,7 +16,7 @@ // CERN, IT Division, ASD group // History: based on object model of // 2nd December 1995, G.Cosmo -// ---------- G4IeEnergyLoss physics process ----------- +// ---------- G4VIeEnergyLoss physics process ----------- // by Laszlo Urban, 20 March 1997 // ************************************************************** // It is the first implementation of the NEW UNIFIED ENERGY LOSS PROCESS. @@ -31,7 +31,7 @@ // 26-10-98: revision, TOF tables L.Urban // -------------------------------------------------------------- -#include "G4IeEnergyLoss.hh" +#include "G4VIeEnergyLoss.hh" #include "G4EnergyLossTables.hh" #include "G4EnergyLossMessenger.hh" #include "G4Poisson.hh" @@ -46,47 +46,47 @@ // 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 G4IeEnergyLoss.hh) +// functions Get/Set/Plus/MinusNbOfProcesses (see G4VIeEnergyLoss.hh) -G4int G4IeEnergyLoss::NbOfProcesses = 2; +G4int G4VIeEnergyLoss::NbOfProcesses = 2; -G4int G4IeEnergyLoss::CounterOfElectronProcess = 0; -G4int G4IeEnergyLoss::CounterOfPositronProcess = 0; -G4PhysicsTable** G4IeEnergyLoss::RecorderOfElectronProcess = +G4int G4VIeEnergyLoss::CounterOfElectronProcess = 0; +G4int G4VIeEnergyLoss::CounterOfPositronProcess = 0; +G4PhysicsTable** G4VIeEnergyLoss::RecorderOfElectronProcess = new G4PhysicsTable*[10]; -G4PhysicsTable** G4IeEnergyLoss::RecorderOfPositronProcess = +G4PhysicsTable** G4VIeEnergyLoss::RecorderOfPositronProcess = new G4PhysicsTable*[10]; -G4bool G4IeEnergyLoss::rndmStepFlag = false; -G4bool G4IeEnergyLoss::EnlossFlucFlag = true; -G4double G4IeEnergyLoss::dRoverRange = 20*perCent; -G4double G4IeEnergyLoss::finalRange = 200*micrometer; +G4bool G4VIeEnergyLoss::rndmStepFlag = false; +G4bool G4VIeEnergyLoss::EnlossFlucFlag = true; +G4double G4VIeEnergyLoss::dRoverRange = 20*perCent; +G4double G4VIeEnergyLoss::finalRange = 200*micrometer; -G4PhysicsTable* G4IeEnergyLoss::theDEDXElectronTable = NULL; -G4PhysicsTable* G4IeEnergyLoss::theDEDXPositronTable = NULL; -G4PhysicsTable* G4IeEnergyLoss::theRangeElectronTable = NULL; -G4PhysicsTable* G4IeEnergyLoss::theRangePositronTable = NULL; -G4PhysicsTable* G4IeEnergyLoss::theInverseRangeElectronTable = NULL; -G4PhysicsTable* G4IeEnergyLoss::theInverseRangePositronTable = NULL; -G4PhysicsTable* G4IeEnergyLoss::theLabTimeElectronTable = NULL; -G4PhysicsTable* G4IeEnergyLoss::theLabTimePositronTable = NULL; -G4PhysicsTable* G4IeEnergyLoss::theProperTimeElectronTable = NULL; -G4PhysicsTable* G4IeEnergyLoss::theProperTimePositronTable = NULL; +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* G4IeEnergyLoss::theeRangeCoeffATable = NULL; -G4PhysicsTable* G4IeEnergyLoss::theeRangeCoeffBTable = NULL; -G4PhysicsTable* G4IeEnergyLoss::theeRangeCoeffCTable = NULL; -G4PhysicsTable* G4IeEnergyLoss::thepRangeCoeffATable = NULL; -G4PhysicsTable* G4IeEnergyLoss::thepRangeCoeffBTable = NULL; -G4PhysicsTable* G4IeEnergyLoss::thepRangeCoeffCTable = 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* G4IeEnergyLoss::eLossMessenger = NULL; +G4EnergyLossMessenger* G4VIeEnergyLoss::eLossMessenger = NULL; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... // constructor and destructor -G4IeEnergyLoss::G4IeEnergyLoss(const G4String& processName) +G4VIeEnergyLoss::G4VIeEnergyLoss(const G4String& processName) : G4IVContinuousDiscreteProcess (processName), theLossTable(NULL), theRangeCoeffATable(NULL), @@ -107,7 +107,7 @@ G4IeEnergyLoss::G4IeEnergyLoss(const G4String& processName) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -G4IeEnergyLoss::~G4IeEnergyLoss() +G4VIeEnergyLoss::~G4VIeEnergyLoss() { if (theLossTable) { @@ -118,7 +118,7 @@ G4IeEnergyLoss::~G4IeEnergyLoss() //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -void G4IeEnergyLoss::BuildDEDXTable( +void G4VIeEnergyLoss::BuildDEDXTable( const G4ParticleDefinition& aParticleType) { ParticleMass = aParticleType.GetPDGMass(); @@ -252,7 +252,7 @@ void G4IeEnergyLoss::BuildDEDXTable( //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -void G4IeEnergyLoss::BuildRangeTable( +void G4VIeEnergyLoss::BuildRangeTable( const G4ParticleDefinition& aParticleType) { // Build range table from the energy loss table @@ -293,7 +293,7 @@ void G4IeEnergyLoss::BuildRangeTable( //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -void G4IeEnergyLoss::BuildTimeTables( +void G4VIeEnergyLoss::BuildTimeTables( const G4ParticleDefinition& aParticleType) { // Build time tables from the energy loss table @@ -355,7 +355,7 @@ void G4IeEnergyLoss::BuildTimeTables( //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -void G4IeEnergyLoss::BuildRangeVector(G4int materialIndex, +void G4VIeEnergyLoss::BuildRangeVector(G4int materialIndex, G4PhysicsLogVector* rangeVector) { // create range vector for a material @@ -412,7 +412,7 @@ void G4IeEnergyLoss::BuildRangeVector(G4int materialIndex, //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -void G4IeEnergyLoss::BuildLabTimeVector(G4int materialIndex, +void G4VIeEnergyLoss::BuildLabTimeVector(G4int materialIndex, G4PhysicsLogVector* timeVector) // create lab time vector for a material { @@ -469,7 +469,7 @@ void G4IeEnergyLoss::BuildLabTimeVector(G4int materialIndex, //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -void G4IeEnergyLoss::BuildProperTimeVector(G4int materialIndex, +void G4VIeEnergyLoss::BuildProperTimeVector(G4int materialIndex, G4PhysicsLogVector* timeVector) { // create lab time vector for a material @@ -526,7 +526,7 @@ void G4IeEnergyLoss::BuildProperTimeVector(G4int materialIndex, //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -G4double G4IeEnergyLoss::RangeIntLog(G4PhysicsVector* physicsVector, +G4double G4VIeEnergyLoss::RangeIntLog(G4PhysicsVector* physicsVector, G4int nbin) // num. integration, logarithmic binning { @@ -550,7 +550,7 @@ G4double G4IeEnergyLoss::RangeIntLog(G4PhysicsVector* physicsVector, //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -G4double G4IeEnergyLoss::LabTimeIntLog(G4PhysicsVector* physicsVector, +G4double G4VIeEnergyLoss::LabTimeIntLog(G4PhysicsVector* physicsVector, G4int nbin) // num. integration, logarithmic binning { @@ -575,7 +575,7 @@ G4double G4IeEnergyLoss::LabTimeIntLog(G4PhysicsVector* physicsVector, //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -G4double G4IeEnergyLoss::ProperTimeIntLog(G4PhysicsVector* physicsVector, +G4double G4VIeEnergyLoss::ProperTimeIntLog(G4PhysicsVector* physicsVector, G4int nbin) // num. integration, logarithmic binning { @@ -600,7 +600,7 @@ G4double G4IeEnergyLoss::ProperTimeIntLog(G4PhysicsVector* physicsVector, //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -void G4IeEnergyLoss::BuildRangeCoeffATable( +void G4VIeEnergyLoss::BuildRangeCoeffATable( const G4ParticleDefinition& aParticleType) { // Build tables of coefficients for the energy loss calculation @@ -661,7 +661,7 @@ void G4IeEnergyLoss::BuildRangeCoeffATable( //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -void G4IeEnergyLoss::BuildRangeCoeffBTable( +void G4VIeEnergyLoss::BuildRangeCoeffBTable( const G4ParticleDefinition& aParticleType) { // Build tables of coefficients for the energy loss calculation @@ -722,7 +722,7 @@ void G4IeEnergyLoss::BuildRangeCoeffBTable( //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -void G4IeEnergyLoss::BuildRangeCoeffCTable( +void G4VIeEnergyLoss::BuildRangeCoeffCTable( const G4ParticleDefinition& aParticleType) { // Build tables of coefficients for the energy loss calculation @@ -782,7 +782,7 @@ void G4IeEnergyLoss::BuildRangeCoeffCTable( //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - void G4IeEnergyLoss::BuildInverseRangeTable( + void G4VIeEnergyLoss::BuildInverseRangeTable( const G4ParticleDefinition& aParticleType) { // Build inverse table of the range table @@ -844,7 +844,7 @@ void G4IeEnergyLoss::BuildRangeCoeffCTable( //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -void G4IeEnergyLoss::InvertRangeVector(G4int materialIndex, +void G4VIeEnergyLoss::InvertRangeVector(G4int materialIndex, G4PhysicsLogVector* aVector) { // invert range vector for a material @@ -888,7 +888,7 @@ void G4IeEnergyLoss::InvertRangeVector(G4int materialIndex, //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -G4double G4IeEnergyLoss::GetConstraints(const G4DynamicParticle* aParticle, +G4double G4VIeEnergyLoss::GetConstraints(const G4DynamicParticle* aParticle, G4Material* aMaterial) { // returns the Step limit = range here! @@ -956,7 +956,7 @@ G4double G4IeEnergyLoss::GetConstraints(const G4DynamicParticle* aParticle, //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -G4VParticleChange* G4IeEnergyLoss::AlongStepDoIt( const G4Track& trackData, +G4VParticleChange* G4VIeEnergyLoss::AlongStepDoIt( const G4Track& trackData, const G4Step& stepData) { // compute the energy loss after a Step @@ -1039,7 +1039,7 @@ G4VParticleChange* G4IeEnergyLoss::AlongStepDoIt( const G4Track& trackData, //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -G4double G4IeEnergyLoss::GetLossWithFluct(const G4DynamicParticle* aParticle, +G4double G4VIeEnergyLoss::GetLossWithFluct(const G4DynamicParticle* aParticle, G4Material* aMaterial, G4double MeanLoss) // calculate actual loss from the mean loss diff --git a/source/processes/electromagnetic/standard/src/G4IhEnergyLoss.cc b/source/processes/electromagnetic/standard/src/G4VIhEnergyLoss.cc similarity index 89% rename from source/processes/electromagnetic/standard/src/G4IhEnergyLoss.cc rename to source/processes/electromagnetic/standard/src/G4VIhEnergyLoss.cc index 0b5b92ee9b..417d94f2d9 100644 --- a/source/processes/electromagnetic/standard/src/G4IhEnergyLoss.cc +++ b/source/processes/electromagnetic/standard/src/G4VIhEnergyLoss.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IhEnergyLoss.cc,v 1.7.6.1 1999/12/07 20:50:59 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VIhEnergyLoss.cc,v 1.1 2000/04/25 14:33:10 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // ----------------------------------------------------------- @@ -16,7 +16,7 @@ // CERN, IT Division, ASD group // History: based on object model of // 2nd December 1995, G.Cosmo -// ---------- G4IhEnergyLoss physics process ----------- +// ---------- G4VIhEnergyLoss physics process ----------- // by Laszlo Urban, 30 May 1997 // // ************************************************************** @@ -28,7 +28,7 @@ // 26/10/98 : cleanup + TOF tables, L.Urban // -------------------------------------------------------------- -#include "G4IhEnergyLoss.hh" +#include "G4VIhEnergyLoss.hh" #include "G4EnergyLossTables.hh" #include "G4Poisson.hh" @@ -40,77 +40,77 @@ // 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 G4IhEnergyLoss.hh) +// functions Get/Set/Plus/MinusNumberOfProcesses (see G4VIhEnergyLoss.hh) -G4int G4IhEnergyLoss::NumberOfProcesses = 1 ; +G4int G4VIhEnergyLoss::NumberOfProcesses = 1 ; -G4int G4IhEnergyLoss::CounterOfProcess = 0 ; -G4PhysicsTable** G4IhEnergyLoss::RecorderOfProcess = +G4int G4VIhEnergyLoss::CounterOfProcess = 0 ; +G4PhysicsTable** G4VIhEnergyLoss::RecorderOfProcess = new G4PhysicsTable*[10] ; -G4int G4IhEnergyLoss::CounterOfpProcess = 0 ; -G4PhysicsTable** G4IhEnergyLoss::RecorderOfpProcess = +G4int G4VIhEnergyLoss::CounterOfpProcess = 0 ; +G4PhysicsTable** G4VIhEnergyLoss::RecorderOfpProcess = new G4PhysicsTable*[10] ; -G4int G4IhEnergyLoss::CounterOfpbarProcess = 0 ; -G4PhysicsTable** G4IhEnergyLoss::RecorderOfpbarProcess = +G4int G4VIhEnergyLoss::CounterOfpbarProcess = 0 ; +G4PhysicsTable** G4VIhEnergyLoss::RecorderOfpbarProcess = new G4PhysicsTable*[10] ; -G4PhysicsTable* G4IhEnergyLoss::theDEDXpTable = NULL ; -G4PhysicsTable* G4IhEnergyLoss::theDEDXpbarTable = NULL ; -G4PhysicsTable* G4IhEnergyLoss::theRangepTable = NULL ; -G4PhysicsTable* G4IhEnergyLoss::theRangepbarTable = NULL ; -G4PhysicsTable* G4IhEnergyLoss::theInverseRangepTable = NULL ; -G4PhysicsTable* G4IhEnergyLoss::theInverseRangepbarTable = NULL ; -G4PhysicsTable* G4IhEnergyLoss::theLabTimepTable = NULL ; -G4PhysicsTable* G4IhEnergyLoss::theLabTimepbarTable = NULL ; -G4PhysicsTable* G4IhEnergyLoss::theProperTimepTable = NULL ; -G4PhysicsTable* G4IhEnergyLoss::theProperTimepbarTable = NULL ; +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* G4IhEnergyLoss::thepRangeCoeffATable = NULL ; -G4PhysicsTable* G4IhEnergyLoss::thepRangeCoeffBTable = NULL ; -G4PhysicsTable* G4IhEnergyLoss::thepRangeCoeffCTable = NULL ; -G4PhysicsTable* G4IhEnergyLoss::thepbarRangeCoeffATable = NULL ; -G4PhysicsTable* G4IhEnergyLoss::thepbarRangeCoeffBTable = NULL ; -G4PhysicsTable* G4IhEnergyLoss::thepbarRangeCoeffCTable = 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* G4IhEnergyLoss::theDEDXTable = NULL ; -G4PhysicsTable* G4IhEnergyLoss::theRangeTable = NULL ; -G4PhysicsTable* G4IhEnergyLoss::theInverseRangeTable = NULL ; -G4PhysicsTable* G4IhEnergyLoss::theLabTimeTable = NULL ; -G4PhysicsTable* G4IhEnergyLoss::theProperTimeTable = NULL ; +G4PhysicsTable* G4VIhEnergyLoss::theDEDXTable = NULL ; +G4PhysicsTable* G4VIhEnergyLoss::theRangeTable = NULL ; +G4PhysicsTable* G4VIhEnergyLoss::theInverseRangeTable = NULL ; +G4PhysicsTable* G4VIhEnergyLoss::theLabTimeTable = NULL ; +G4PhysicsTable* G4VIhEnergyLoss::theProperTimeTable = NULL ; -G4PhysicsTable* G4IhEnergyLoss::theRangeCoeffATable = NULL ; -G4PhysicsTable* G4IhEnergyLoss::theRangeCoeffBTable = NULL ; -G4PhysicsTable* G4IhEnergyLoss::theRangeCoeffCTable = NULL ; +G4PhysicsTable* G4VIhEnergyLoss::theRangeCoeffATable = NULL ; +G4PhysicsTable* G4VIhEnergyLoss::theRangeCoeffBTable = NULL ; +G4PhysicsTable* G4VIhEnergyLoss::theRangeCoeffCTable = NULL ; -const G4Proton* G4IhEnergyLoss::theProton =G4Proton::Proton() ; -const G4AntiProton* G4IhEnergyLoss::theAntiProton=G4AntiProton::AntiProton() ; +const G4Proton* G4VIhEnergyLoss::theProton =G4Proton::Proton() ; +const G4AntiProton* G4VIhEnergyLoss::theAntiProton=G4AntiProton::AntiProton() ; -G4double G4IhEnergyLoss::ParticleMass; +G4double G4VIhEnergyLoss::ParticleMass; -G4double G4IhEnergyLoss::Mass, - G4IhEnergyLoss::taulow, - G4IhEnergyLoss::tauhigh, - G4IhEnergyLoss::ltaulow, - G4IhEnergyLoss::ltauhigh; +G4double G4VIhEnergyLoss::Mass, + G4VIhEnergyLoss::taulow, + G4VIhEnergyLoss::tauhigh, + G4VIhEnergyLoss::ltaulow, + G4VIhEnergyLoss::ltauhigh; -G4double G4IhEnergyLoss::CutInRange = 0. ; +G4double G4VIhEnergyLoss::CutInRange = 0. ; -G4double G4IhEnergyLoss::dRoverRange = 0.20 ; -G4double G4IhEnergyLoss::finalRange = 200.*micrometer ; +G4double G4VIhEnergyLoss::dRoverRange = 0.20 ; +G4double G4VIhEnergyLoss::finalRange = 200.*micrometer ; -G4bool G4IhEnergyLoss::rndmStepFlag = false ; -G4bool G4IhEnergyLoss::EnlossFlucFlag = true ; +G4bool G4VIhEnergyLoss::rndmStepFlag = false ; +G4bool G4VIhEnergyLoss::EnlossFlucFlag = true ; -G4double G4IhEnergyLoss::LowestKineticEnergy; -G4double G4IhEnergyLoss::HighestKineticEnergy; -G4int G4IhEnergyLoss::TotBin; -G4double G4IhEnergyLoss::RTable,G4IhEnergyLoss::LOGRTable; +G4double G4VIhEnergyLoss::LowestKineticEnergy; +G4double G4VIhEnergyLoss::HighestKineticEnergy; +G4int G4VIhEnergyLoss::TotBin; +G4double G4VIhEnergyLoss::RTable,G4VIhEnergyLoss::LOGRTable; // constructor and destructor -G4IhEnergyLoss::G4IhEnergyLoss(const G4String& processName) +G4VIhEnergyLoss::G4VIhEnergyLoss(const G4String& processName) : G4IVContinuousDiscreteProcess (processName), theLossTable (NULL), lastMaterial (NULL), @@ -121,7 +121,7 @@ G4IhEnergyLoss::G4IhEnergyLoss(const G4String& processName) nmaxCont2(16) { } -G4IhEnergyLoss::~G4IhEnergyLoss() +G4VIhEnergyLoss::~G4VIhEnergyLoss() { if(theLossTable) { theLossTable->clearAndDestroy(); @@ -129,7 +129,7 @@ G4IhEnergyLoss::~G4IhEnergyLoss() } } -void G4IhEnergyLoss::BuildDEDXTable( +void G4VIhEnergyLoss::BuildDEDXTable( const G4ParticleDefinition& aParticleType) { // calculate data members TotBin,LOGRTable,RTable first @@ -276,7 +276,7 @@ void G4IhEnergyLoss::BuildDEDXTable( proton_mass_c2/aParticleType.GetPDGMass(),TotBin); } -void G4IhEnergyLoss::BuildRangeTable( +void G4VIhEnergyLoss::BuildRangeTable( const G4ParticleDefinition& aParticleType) // Build range table from the energy loss table { @@ -316,7 +316,7 @@ void G4IhEnergyLoss::BuildRangeTable( } } -void G4IhEnergyLoss::BuildTimeTables( +void G4VIhEnergyLoss::BuildTimeTables( const G4ParticleDefinition& aParticleType) { const G4MaterialTable* theMaterialTable= @@ -372,7 +372,7 @@ void G4IhEnergyLoss::BuildTimeTables( } } -void G4IhEnergyLoss::BuildRangeVector(G4int materialIndex, +void G4VIhEnergyLoss::BuildRangeVector(G4int materialIndex, G4PhysicsLogVector* rangeVector) // create range vector for a material { @@ -449,7 +449,7 @@ void G4IhEnergyLoss::BuildRangeVector(G4int materialIndex, } } -void G4IhEnergyLoss::BuildLabTimeVector(G4int materialIndex, +void G4VIhEnergyLoss::BuildLabTimeVector(G4int materialIndex, G4PhysicsLogVector* timeVector) // create lab time vector for a material { @@ -509,7 +509,7 @@ void G4IhEnergyLoss::BuildLabTimeVector(G4int materialIndex, } } -void G4IhEnergyLoss::BuildProperTimeVector(G4int materialIndex, +void G4VIhEnergyLoss::BuildProperTimeVector(G4int materialIndex, G4PhysicsLogVector* timeVector) // create proper time vector for a material { @@ -568,7 +568,7 @@ void G4IhEnergyLoss::BuildProperTimeVector(G4int materialIndex, } } -G4double G4IhEnergyLoss::RangeIntLin(G4PhysicsVector* physicsVector, +G4double G4VIhEnergyLoss::RangeIntLin(G4PhysicsVector* physicsVector, G4int nbin) // num. integration, linear binning { @@ -598,7 +598,7 @@ G4double G4IhEnergyLoss::RangeIntLin(G4PhysicsVector* physicsVector, } -G4double G4IhEnergyLoss::RangeIntLog(G4PhysicsVector* physicsVector, +G4double G4VIhEnergyLoss::RangeIntLog(G4PhysicsVector* physicsVector, G4int nbin) // num. integration, logarithmic binning { @@ -629,7 +629,7 @@ G4double G4IhEnergyLoss::RangeIntLog(G4PhysicsVector* physicsVector, return Value; } -G4double G4IhEnergyLoss::LabTimeIntLog(G4PhysicsVector* physicsVector, +G4double G4VIhEnergyLoss::LabTimeIntLog(G4PhysicsVector* physicsVector, G4int nbin) // num. integration, logarithmic binning { @@ -660,7 +660,7 @@ G4double G4IhEnergyLoss::LabTimeIntLog(G4PhysicsVector* physicsVector, return Value; } -G4double G4IhEnergyLoss::ProperTimeIntLog(G4PhysicsVector* physicsVector, +G4double G4VIhEnergyLoss::ProperTimeIntLog(G4PhysicsVector* physicsVector, G4int nbin) // num. integration, logarithmic binning { @@ -691,7 +691,7 @@ G4double G4IhEnergyLoss::ProperTimeIntLog(G4PhysicsVector* physicsVector, return Value; } -void G4IhEnergyLoss::BuildRangeCoeffATable( +void G4VIhEnergyLoss::BuildRangeCoeffATable( const G4ParticleDefinition& aParticleType) // Build tables of coefficients for the energy loss calculation // create table for coefficients "A" @@ -764,7 +764,7 @@ void G4IhEnergyLoss::BuildRangeCoeffATable( } -void G4IhEnergyLoss::BuildRangeCoeffBTable( +void G4VIhEnergyLoss::BuildRangeCoeffBTable( const G4ParticleDefinition& aParticleType) // Build tables of coefficients for the energy loss calculation // create table for coefficients "B" @@ -835,7 +835,7 @@ void G4IhEnergyLoss::BuildRangeCoeffBTable( } } -void G4IhEnergyLoss::BuildRangeCoeffCTable( +void G4VIhEnergyLoss::BuildRangeCoeffCTable( const G4ParticleDefinition& aParticleType) // Build tables of coefficients for the energy loss calculation // create table for coefficients "C" @@ -906,7 +906,7 @@ void G4IhEnergyLoss::BuildRangeCoeffCTable( } } -void G4IhEnergyLoss::BuildInverseRangeTable( +void G4VIhEnergyLoss::BuildInverseRangeTable( const G4ParticleDefinition& aParticleType) // Build inverse table of the range table { @@ -960,7 +960,7 @@ void G4IhEnergyLoss::BuildInverseRangeTable( } } -void G4IhEnergyLoss::InvertRangeVector(G4int materialIndex, +void G4VIhEnergyLoss::InvertRangeVector(G4int materialIndex, G4PhysicsLogVector* aVector) // invert range vector for a material { @@ -1008,7 +1008,7 @@ void G4IhEnergyLoss::InvertRangeVector(G4int materialIndex, } } -G4double G4IhEnergyLoss::GetConstraints(const G4DynamicParticle *aParticle, +G4double G4VIhEnergyLoss::GetConstraints(const G4DynamicParticle *aParticle, G4Material *aMaterial) { // returns the Step limit = range ! @@ -1051,7 +1051,7 @@ G4double G4IhEnergyLoss::GetConstraints(const G4DynamicParticle *aParticle, return StepLimit ; } -G4VParticleChange* G4IhEnergyLoss::AlongStepDoIt( +G4VParticleChange* G4VIhEnergyLoss::AlongStepDoIt( const G4Track& trackData,const G4Step& stepData) // compute the energy loss after a step { @@ -1169,7 +1169,7 @@ G4VParticleChange* G4IhEnergyLoss::AlongStepDoIt( } -G4double G4IhEnergyLoss::GetLossWithFluct(const G4DynamicParticle* aParticle, +G4double G4VIhEnergyLoss::GetLossWithFluct(const G4DynamicParticle* aParticle, G4Material* aMaterial, G4double MeanLoss) // calculate actual loss from the mean loss diff --git a/source/processes/electromagnetic/standard/src/G4VPAIenergyLoss.cc b/source/processes/electromagnetic/standard/src/G4VPAIenergyLoss.cc new file mode 100644 index 0000000000..ae463d6385 --- /dev/null +++ b/source/processes/electromagnetic/standard/src/G4VPAIenergyLoss.cc @@ -0,0 +1,364 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4VPAIenergyLoss.cc,v 1.1 2000/04/25 14:33:10 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ----------------------------------------------------------- +// GEANT 4 class implementation file +// +// For information related to this code contact: +// CERN, IT Division, ASD group +// History: based on object model of +// 2nd December 1995, G.Cosmo +// ---------- G4VPAIenergyLoss physics process ----------- +// by V. Grichine, 30 Nov 1997 +// ************************************************************** +// It is the first implementation of the NEW UNIFIED ENERGY LOSS PROCESS. +// It calculates the energy loss of charged hadrons. +// ************************************************************** +// +// 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 +// + + +#include "G4VPAIenergyLoss.hh" +#include "G4PAIonisation.hh" +#include "G4EnergyLossTables.hh" + +//////////////////////////////////////////////////////////////////////////// +// +// Initialisation of static members + +G4int G4VPAIenergyLoss::NbOfProcesses = 1 ; +G4PhysicsTable** G4VPAIenergyLoss::RecorderOfpProcess = + new G4PhysicsTable*[10] ; +G4int G4VPAIenergyLoss::CounterOfpProcess = 0 ; + +G4PhysicsTable* G4VPAIenergyLoss::theDEDXpTable = NULL ; +G4PhysicsTable* G4VPAIenergyLoss::theRangepTable = NULL ; +G4PhysicsTable* G4VPAIenergyLoss::theInverseRangepTable = NULL ; +G4PhysicsTable* G4VPAIenergyLoss::theLabTimepTable = NULL ; +G4PhysicsTable* G4VPAIenergyLoss::theProperTimepTable = NULL ; + +G4PhysicsTable* G4VPAIenergyLoss::thepRangeCoeffATable = NULL ; +G4PhysicsTable* G4VPAIenergyLoss::thepRangeCoeffBTable = NULL ; +G4PhysicsTable* G4VPAIenergyLoss::thepRangeCoeffCTable = NULL ; + +G4PhysicsTable** G4VPAIenergyLoss::RecorderOfpbarProcess = + new G4PhysicsTable*[10] ; +G4int G4VPAIenergyLoss::CounterOfpbarProcess = 0 ; + +G4PhysicsTable* G4VPAIenergyLoss::theDEDXpbarTable = NULL ; +G4PhysicsTable* G4VPAIenergyLoss::theRangepbarTable = NULL ; +G4PhysicsTable* G4VPAIenergyLoss::theInverseRangepbarTable = NULL ; +G4PhysicsTable* G4VPAIenergyLoss::theLabTimepbarTable = NULL ; +G4PhysicsTable* G4VPAIenergyLoss::theProperTimepbarTable = NULL ; + +G4PhysicsTable* G4VPAIenergyLoss::thepbarRangeCoeffATable = NULL ; +G4PhysicsTable* G4VPAIenergyLoss::thepbarRangeCoeffBTable = NULL ; +G4PhysicsTable* G4VPAIenergyLoss::thepbarRangeCoeffCTable = NULL ; + +// G4PhysicsTable* G4VPAIenergyLoss::fPAItransferBank = NULL ; + +G4PhysicsTable* G4VPAIenergyLoss::theDEDXTable = NULL ; + +G4double G4VPAIenergyLoss::CutInRange = 0; + +G4double G4VPAIenergyLoss::LowerBoundEloss= 1.00*keV ; +G4double G4VPAIenergyLoss::UpperBoundEloss= 100.*TeV ; +G4int G4VPAIenergyLoss::NbinEloss =100 ; +G4double G4VPAIenergyLoss::RTable,G4VPAIenergyLoss::LOGRTable; + + +// constructor and destructor + +G4VPAIenergyLoss::G4VPAIenergyLoss(const G4String& processName) + : G4VEnergyLoss (processName), + dToverTini(0.20), // max.relative range loss in one Step = 20% + theElectron ( G4Electron::Electron() ), + theProton ( G4Proton::Proton() ), + theAntiProton ( G4AntiProton::AntiProton() ) +{ + theLossTable = NULL ; + + // calculate data members LOGRTable,RTable first + G4double lrate ; + lrate = log(UpperBoundEloss/LowerBoundEloss) ; + LOGRTable=lrate/NbinEloss; + RTable =exp(LOGRTable); + +} + +G4VPAIenergyLoss::~G4VPAIenergyLoss() +{ + if(theLossTable) { + theLossTable->clearAndDestroy(); + delete theLossTable; + } + +} + + +///////////////////////////////////////////////////////////////////////// +// +// + +void G4VPAIenergyLoss::BuildDEDXTable(const G4ParticleDefinition& aParticleType) +{ + + G4bool MakeTable = false ; + + G4double newCutInRange = aParticleType.GetLengthCuts(); + +// Create tables only if there is a new cut value ! + + // create/fill proton or antiproton tables depending on the charge of the particle + 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. +// +// different processes. + + const G4MaterialTable* theMaterialTable= + G4Material::GetMaterialTable(); + +// create table for the total energy loss + + G4int numOfMaterials = theMaterialTable->length(); + + G4PhysicsTable** RecorderOfProcess; + int CounterOfProcess; + + if( Charge >0.) + { + RecorderOfProcess=RecorderOfpProcess; + CounterOfProcess=CounterOfpProcess; + + if(CounterOfProcess == NbOfProcesses) + { + // create tables + if(theDEDXpTable) + { theDEDXpTable->clearAndDestroy(); + delete theDEDXpTable; } + theDEDXpTable = new G4PhysicsTable(numOfMaterials); + theDEDXTable = theDEDXpTable; + } + } + else + { + RecorderOfProcess=RecorderOfpbarProcess; + CounterOfProcess=CounterOfpbarProcess; + + if(CounterOfProcess == NbOfProcesses) + { + // create tables + if(theDEDXpbarTable) + { theDEDXpbarTable->clearAndDestroy(); + delete theDEDXpbarTable; } + theDEDXpbarTable = new G4PhysicsTable(numOfMaterials); + theDEDXTable = theDEDXpbarTable; + } + } + + + 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,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( Charge >0.) CounterOfpProcess=0 ; + else CounterOfpbarProcess=0 ; + + ParticleMass = aParticleType.GetPDGMass() ; + + if(Charge > 0.) + { + // Build range table + theRangepTable = BuildRangeTable(theDEDXpTable, + theRangepTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + // Build lab/proper time tables + theLabTimepTable = BuildLabTimeTable(theDEDXpTable, + theLabTimepTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + theProperTimepTable = BuildProperTimeTable(theDEDXpTable, + theProperTimepTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + // Build coeff tables for the energy loss calculation + thepRangeCoeffATable = BuildRangeCoeffATable(theRangepTable, + thepRangeCoeffATable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + thepRangeCoeffBTable = BuildRangeCoeffBTable(theRangepTable, + thepRangeCoeffBTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + thepRangeCoeffCTable = BuildRangeCoeffCTable(theRangepTable, + thepRangeCoeffCTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + // invert the range table + theInverseRangepTable = BuildInverseRangeTable(theRangepTable, + thepRangeCoeffATable, + thepRangeCoeffBTable, + thepRangeCoeffCTable, + theInverseRangepTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + } + else + { + // Build range table + theRangepbarTable = BuildRangeTable(theDEDXpbarTable, + theRangepbarTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + // Build lab/proper time tables + theLabTimepbarTable = BuildLabTimeTable(theDEDXpbarTable, + theLabTimepbarTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + theProperTimepbarTable = BuildProperTimeTable(theDEDXpbarTable, + theProperTimepbarTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + // Build coeff tables for the energy loss calculation + thepbarRangeCoeffATable = BuildRangeCoeffATable(theRangepbarTable, + thepbarRangeCoeffATable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + thepbarRangeCoeffBTable = BuildRangeCoeffBTable(theRangepbarTable, + thepbarRangeCoeffBTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + thepbarRangeCoeffCTable = BuildRangeCoeffCTable(theRangepbarTable, + thepbarRangeCoeffCTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + // invert the range table + theInverseRangepbarTable = BuildInverseRangeTable(theRangepbarTable, + 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); + +} + + +////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/source/processes/electromagnetic/standard/src/G4VeEnergyLoss.cc b/source/processes/electromagnetic/standard/src/G4VeEnergyLoss.cc new file mode 100644 index 0000000000..24490ac473 --- /dev/null +++ b/source/processes/electromagnetic/standard/src/G4VeEnergyLoss.cc @@ -0,0 +1,621 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4VeEnergyLoss.cc,v 1.5 2000/06/13 16:49:57 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ----------------------------------------------------------- +// GEANT 4 class implementation file +// +// For information related to this code contact: +// CERN, IT Division, ASD group +// History: based on object model of +// 2nd December 1995, G.Cosmo +// ---------- G4VeEnergyLoss 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-. +// -------------------------------------------------------------- +// 18/11/98 , L. Urban +// It is a modified version of G4VeEnergyLoss: +// continuous energy loss with generation of subcutoff delta rays +// 02/02/99 important correction in AlongStepDoIt , L.Urban +// 28/04/99 bug fixed (unit independece now),L.Urban +// 10/02/00 modifications , new e.m. structure, L.Urban +// -------------------------------------------------------------- + +#include "G4VeEnergyLoss.hh" +#include "G4EnergyLossMessenger.hh" +#include "G4Poisson.hh" +#include "G4Navigator.hh" +#include "G4TransportationManager.hh" + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +// Initialisation of static data members +// ------------------------------------- + +G4int G4VeEnergyLoss::NbOfProcesses = 2; +G4int G4VeEnergyLoss::CounterOfElectronProcess = 0; +G4int G4VeEnergyLoss::CounterOfPositronProcess = 0; +G4PhysicsTable** G4VeEnergyLoss::RecorderOfElectronProcess = + new G4PhysicsTable*[10]; +G4PhysicsTable** G4VeEnergyLoss::RecorderOfPositronProcess = + new G4PhysicsTable*[10]; + +G4double G4VeEnergyLoss::MinDeltaCutInRange = 0.100*mm ; +G4double* G4VeEnergyLoss::MinDeltaEnergy = NULL ; +G4bool G4VeEnergyLoss::setMinDeltaCutInRange = false ; + +G4PhysicsTable* G4VeEnergyLoss::theDEDXElectronTable = NULL; +G4PhysicsTable* G4VeEnergyLoss::theDEDXPositronTable = NULL; +G4PhysicsTable* G4VeEnergyLoss::theRangeElectronTable = NULL; +G4PhysicsTable* G4VeEnergyLoss::theRangePositronTable = NULL; +G4PhysicsTable* G4VeEnergyLoss::theInverseRangeElectronTable = NULL; +G4PhysicsTable* G4VeEnergyLoss::theInverseRangePositronTable = NULL; +G4PhysicsTable* G4VeEnergyLoss::theLabTimeElectronTable = NULL; +G4PhysicsTable* G4VeEnergyLoss::theLabTimePositronTable = NULL; +G4PhysicsTable* G4VeEnergyLoss::theProperTimeElectronTable = NULL; +G4PhysicsTable* G4VeEnergyLoss::theProperTimePositronTable = NULL; + +G4PhysicsTable* G4VeEnergyLoss::theeRangeCoeffATable = NULL; +G4PhysicsTable* G4VeEnergyLoss::theeRangeCoeffBTable = NULL; +G4PhysicsTable* G4VeEnergyLoss::theeRangeCoeffCTable = NULL; +G4PhysicsTable* G4VeEnergyLoss::thepRangeCoeffATable = NULL; +G4PhysicsTable* G4VeEnergyLoss::thepRangeCoeffBTable = NULL; +G4PhysicsTable* G4VeEnergyLoss::thepRangeCoeffCTable = NULL; + +G4double G4VeEnergyLoss::LowerBoundEloss =0.1*keV ; +G4double G4VeEnergyLoss::UpperBoundEloss = 100.*TeV ; +G4int G4VeEnergyLoss::NbinEloss = 150 ; +G4double G4VeEnergyLoss::RTable,G4VeEnergyLoss::LOGRTable; + +G4EnergyLossMessenger* G4VeEnergyLoss::eLossMessenger = NULL; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +// constructor and destructor + +G4VeEnergyLoss::G4VeEnergyLoss(const G4String& processName) + : G4VEnergyLoss (processName), + theLossTable(NULL), + theDEDXTable(NULL), + Charge(-1.),lastCharge(0.), + MinKineticEnergy(1.*eV), + linLossLimit(0.05), + c1N(2.86e-23*MeV*mm*mm), + c2N(c1N*MeV/10.), + Ndeltamax(100) +{ + //create (only once) EnergyLoss messenger + if(!eLossMessenger) eLossMessenger = new G4EnergyLossMessenger(); + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4VeEnergyLoss::~G4VeEnergyLoss() +{ + if (theLossTable) + { + theLossTable->clearAndDestroy(); + delete theLossTable; theLossTable = NULL; +/// if(MinDeltaEnergy) delete MinDeltaEnergy; + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4VeEnergyLoss::BuildDEDXTable( + const G4ParticleDefinition& aParticleType) +{ + ParticleMass = aParticleType.GetPDGMass(); + + // calculate data members LOGRTable,RTable first + G4double lrate = log(UpperBoundEloss/LowerBoundEloss); + LOGRTable=lrate/NbinEloss; + 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; + + ParticleMass = aParticleType.GetPDGMass(); + + if (&aParticleType==G4Electron::Electron()) + { + // Build range table + theRangeElectronTable = BuildRangeTable(theDEDXElectronTable, + theRangeElectronTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + // Build lab/proper time tables + theLabTimeElectronTable = BuildLabTimeTable(theDEDXElectronTable, + theLabTimeElectronTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + theProperTimeElectronTable = BuildProperTimeTable(theDEDXElectronTable, + theProperTimeElectronTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + // Build coeff tables for the energy loss calculation + theeRangeCoeffATable = BuildRangeCoeffATable(theRangeElectronTable, + theeRangeCoeffATable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + theeRangeCoeffBTable = BuildRangeCoeffBTable(theRangeElectronTable, + theeRangeCoeffBTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + theeRangeCoeffCTable = BuildRangeCoeffCTable(theRangeElectronTable, + theeRangeCoeffCTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + // invert the range table + theInverseRangeElectronTable = BuildInverseRangeTable(theRangeElectronTable, + theeRangeCoeffATable, + theeRangeCoeffBTable, + theeRangeCoeffCTable, + theInverseRangeElectronTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + } + if (&aParticleType==G4Positron::Positron()) + { + // Build range table + theRangePositronTable = BuildRangeTable(theDEDXPositronTable, + theRangePositronTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + + // Build lab/proper time tables + theLabTimePositronTable = BuildLabTimeTable(theDEDXPositronTable, + theLabTimePositronTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + theProperTimePositronTable = BuildProperTimeTable(theDEDXPositronTable, + theProperTimePositronTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + // Build coeff tables for the energy loss calculation + thepRangeCoeffATable = BuildRangeCoeffATable(theRangePositronTable, + thepRangeCoeffATable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + thepRangeCoeffBTable = BuildRangeCoeffBTable(theRangePositronTable, + thepRangeCoeffBTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + thepRangeCoeffCTable = BuildRangeCoeffCTable(theRangePositronTable, + thepRangeCoeffCTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + // invert the range table + theInverseRangePositronTable = BuildInverseRangeTable(theRangePositronTable, + thepRangeCoeffATable, + thepRangeCoeffBTable, + thepRangeCoeffCTable, + theInverseRangePositronTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + } + + // make the energy loss and the range table available + 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, + LowerBoundEloss, UpperBoundEloss, 1.,NbinEloss); + + // 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(&aParticleType==G4Electron::Electron()) + { + G4cout << G4endl; + G4cout.precision(5) ; + 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] ; + for(G4int mat=0; matG4Electron::Electron()->GetCutsInEnergy()[mat]) + MinDeltaEnergy[mat]=G4Electron::Electron()->GetCutsInEnergy()[mat] ; + + if(&aParticleType==G4Electron::Electron()) + { + G4cout << G4std::setw(20) << (*theMaterialTable)(mat)->GetName() + << G4std::setw(15) << MinDeltaEnergy[mat]/keV << G4endl; + } + + } + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4VParticleChange* G4VeEnergyLoss::AlongStepDoIt( const G4Track& trackData, + const G4Step& stepData) +{ + // compute the energy loss after a Step + + static const G4double faclow = 1.5 ; + static const G4double Tlow = 1.0*keV; + + // get particle and material pointers from trackData + const G4DynamicParticle* aParticle = trackData.GetDynamicParticle(); + G4double E = aParticle->GetKineticEnergy() ; + + G4Material* aMaterial = trackData.GetMaterial(); + G4int index = aMaterial->GetIndex(); + G4double Step = stepData.GetStepLength(); + + aParticleChange.Initialize(trackData); + + G4double MeanLoss, finalT; + + if (E < MinKineticEnergy) finalT = 0.; + + else if (E= fRangeNow) finalT = 0.; + else finalT = E*(1.-sqrt(Step/fRangeNow)) ; + } + + else if (E>=UpperBoundEloss) finalT = E - Step*fdEdx; + + else if (Step >= fRangeNow) finalT = 0.; + + else + { + if((Step/fRangeNow < linLossLimit)||(E < Tlow)) finalT = E-Step*fdEdx ; + 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 ; + + // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + // start of subcutoff generation + + if(subSecFlag) + { + G4double MinDeltaEnergyNow = MinDeltaEnergy[index] ; + G4double TmintoProduceDelta=0.5*(3.-Charge)*MinDeltaEnergyNow ; + if((E > TmintoProduceDelta) && (MeanLoss > MinDeltaEnergyNow) + && (finalT > MinKineticEnergy)) + { + G4double rcut,Tc,T0,presafety,postsafety,safety, + delta,fragment ; + G4double frperstep,x1,y1,z1,dx,dy,dz,dTime,time0,DeltaTime; + G4double epsil= MinKineticEnergy/2. ; + + if(Charge < 0.) + { + rcut=G4Electron::Electron()->GetCuts(); + Tc=G4Electron::Electron()->GetCutsInEnergy()[index]; + // threshold ! + if(Tc > 0.5*E) Tc=0.5*E ; + } + else + { + rcut=G4Positron::Positron()->GetCuts(); + Tc=G4Positron::Positron()->GetCutsInEnergy()[index]; + // threshold ! + if(Tc > E) Tc=E ; + } + // generate subcutoff delta rays only if Tc>MinDeltaEnergy! + if(Tc > 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(safetyGetPosition().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.) + { + // compute nb of delta rays to be generated + G4int N=int(fragment*(c1N*(1.-T0/Tc)+c2N/E)* + (aMaterial->GetTotNbOfElectPerVolume())/T0+0.5) ; + if(N > Ndeltamax) + N = Ndeltamax ; + G4double Px,Py,Pz ; + G4ThreeVector ParticleDirection ; + ParticleDirection=stepData.GetPostStepPoint()-> + 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,delToverTc, + sumT,delTkin,delLoss,rate, + urandom ; + G4StepPoint *point ; + + sumT=0.; + + Tkin = E ; + Etot = Tkin+electron_mass_c2 ; + P = sqrt(Tkin*(Etot+electron_mass_c2)) ; + + aParticleChange.SetNumberOfSecondaries(N); + do { + subdelta += 1 ; + + if((Charge<0.)&&(Tc>0.5*Tkin)) Tc=0.5*Tkin ; + if((Charge>0.)&&(Tc> Tkin)) Tc= Tkin ; + + //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.; + + phi=twopi*G4UniformRand() ; + sintheta=sqrt(1.-costheta*costheta); + dirx=sintheta*cos(phi); + diry=sintheta*sin(phi); + dirz=costheta; + + sumT += T ; + + 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 ; + ParticleDirection=stepData.GetPostStepPoint()-> + GetMomentumDirection() ; + + 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-> + SetTouchable(stepData.GetPostStepPoint()->GetTouchable()) ; + deltaTrack->SetParentID(trackData.GetTrackID()) ; + + aParticleChange.AddSecondary(deltaTrack) ; + + } + + } while (subdelta 0) + aParticleChange.SetMomentumChange(Px,Py,Pz) ; + E = Tkin ; + + } + } + // ................................................................ + } + } + } + } + + // end of subcutoff generation + // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + finalT = E - MeanLoss ; + if(finalT < MinKineticEnergy) finalT = 0. ; + + //now the loss with fluctuation + if ((EnlossFlucFlag) && (finalT > 0.) && (finalT < E)&&(E > LowerBoundEloss)) + { + finalT = E-GetLossWithFluct(aParticle,aMaterial,MeanLoss); + if (finalT < 0.) finalT = 0. ; + } + + // kill the particle if the kinetic energy <= 0 + if (finalT <= 0. ) + { + finalT = 0.; + if (Charge < 0.) aParticleChange.SetStatusChange(fStopAndKill); + else aParticleChange.SetStatusChange(fStopButAlive); + } + + aParticleChange.SetEnergyChange(finalT); + aParticleChange.SetLocalEnergyDeposit(E-finalT); + + return &aParticleChange; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + + diff --git a/source/processes/electromagnetic/standard/src/G4VhEnergyLoss.cc b/source/processes/electromagnetic/standard/src/G4VhEnergyLoss.cc new file mode 100644 index 0000000000..0723ac85a1 --- /dev/null +++ b/source/processes/electromagnetic/standard/src/G4VhEnergyLoss.cc @@ -0,0 +1,702 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4VhEnergyLoss.cc,v 1.5 2000/06/13 16:49:58 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// ----------------------------------------------------------- +// GEANT 4 class implementation file +// +// For information related to this code contact: +// CERN, IT Division, ASD group +// History: based on object model of +// 2nd December 1995, G.Cosmo +// ---------- 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. +// ************************************************************** +// +// 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 +// -------------------------------------------------------------- + +#include "G4VhEnergyLoss.hh" +#include "G4EnergyLossMessenger.hh" +#include "G4EnergyLossTables.hh" +#include "G4Poisson.hh" +#include "G4Navigator.hh" +#include "G4TransportationManager.hh" + +// Initialisation of static members ****************************************** +G4int G4VhEnergyLoss::NbOfProcesses = 1 ; + +G4int G4VhEnergyLoss::CounterOfProcess = 0 ; +G4PhysicsTable** G4VhEnergyLoss::RecorderOfProcess = + new G4PhysicsTable*[10] ; + +G4int G4VhEnergyLoss::CounterOfpProcess = 0 ; +G4PhysicsTable** G4VhEnergyLoss::RecorderOfpProcess = + new G4PhysicsTable*[10] ; + +G4int G4VhEnergyLoss::CounterOfpbarProcess = 0 ; +G4PhysicsTable** G4VhEnergyLoss::RecorderOfpbarProcess = + 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::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 ; + +const G4Proton* G4VhEnergyLoss::theProton=G4Proton::Proton() ; +const G4AntiProton* G4VhEnergyLoss::theAntiProton=G4AntiProton::AntiProton() ; + +G4double G4VhEnergyLoss::ptableElectronCutInRange = 0.0*mm ; +G4double G4VhEnergyLoss::pbartableElectronCutInRange = 0.0*mm ; + +G4double G4VhEnergyLoss::MinDeltaCutInRange = 0.1*mm ; +G4double* G4VhEnergyLoss::MinDeltaEnergy = NULL ; +G4bool G4VhEnergyLoss::setMinDeltaCutInRange = false ; + +G4double G4VhEnergyLoss::Charge ; + +G4double G4VhEnergyLoss::LowerBoundEloss = 1.*keV ; +G4double G4VhEnergyLoss::UpperBoundEloss = 100.*TeV; +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 ; + +G4EnergyLossMessenger* G4VhEnergyLoss::hLossMessenger = NULL; + +// constructor and destructor + +G4VhEnergyLoss::G4VhEnergyLoss(const G4String& processName) + : G4VEnergyLoss (processName), + theLossTable (NULL), + MinKineticEnergy(1.*eV), + linLossLimit(0.05) +{ + //create (only once) EnergyLoss messenger + if(!hLossMessenger) hLossMessenger = new G4EnergyLossMessenger(); + +} +G4VhEnergyLoss::~G4VhEnergyLoss() +{ + if(theLossTable) { + theLossTable->clearAndDestroy(); + delete theLossTable; theLossTable = NULL; + } +/// if(MinDeltaEnergy) delete MinDeltaEnergy; +} + +void G4VhEnergyLoss::BuildDEDXTable( + const G4ParticleDefinition& aParticleType) +{ + // calculate data members LOGRTable,RTable first + G4double lrate = log(UpperBoundEloss/LowerBoundEloss); + LOGRTable=lrate/NbinEloss; + RTable =exp(LOGRTable); + + // create table if there is no table or there is a new cut value + G4bool MakeTable = false ; + + G4double ElectronCutInRange = G4Electron::Electron()->GetCuts(); + + // create/fill proton or antiproton tables depending on the charge + Charge = aParticleType.GetPDGCharge()/eplus; + ParticleMass = aParticleType.GetPDGMass() ; + + if (Charge>0.) {theDEDXTable= theDEDXpTable;} + else {theDEDXTable= theDEDXpbarTable;} + + if( + ((Charge>0.) && ((theDEDXTable==NULL) || + (ElectronCutInRange != ptableElectronCutInRange))) + || + ((Charge<0.) && ((theDEDXTable==NULL) || + (ElectronCutInRange != pbartableElectronCutInRange))) + ) + MakeTable = true ; + + const G4MaterialTable* theMaterialTable= + G4Material::GetMaterialTable(); + G4int numOfMaterials = theMaterialTable->length(); + + if( MakeTable ) + { + + // 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; } + theDEDXpTable = new G4PhysicsTable(numOfMaterials); + theDEDXTable = theDEDXpTable; + ptableElectronCutInRange = ElectronCutInRange ; + } + } + else + { + RecorderOfProcess=RecorderOfpbarProcess; + CounterOfProcess=CounterOfpbarProcess; + + if(CounterOfProcess == NbOfProcesses) + { + if(theDEDXpbarTable) + { theDEDXpbarTable->clearAndDestroy(); + delete theDEDXpbarTable; } + theDEDXpbarTable = new G4PhysicsTable(numOfMaterials); + theDEDXTable = theDEDXpbarTable; + pbartableElectronCutInRange = ElectronCutInRange ; + } + } + + if(CounterOfProcess == NbOfProcesses) + { + // 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 < NbOfProcesses; 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 ; + ParticleMass = aParticleType.GetPDGMass() ; + + if(Charge > 0.) + { + // Build range table + theRangepTable = BuildRangeTable(theDEDXpTable, + theRangepTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + // Build lab/proper time tables + theLabTimepTable = BuildLabTimeTable(theDEDXpTable, + theLabTimepTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + theProperTimepTable = BuildProperTimeTable(theDEDXpTable, + theProperTimepTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + // Build coeff tables for the energy loss calculation + thepRangeCoeffATable = BuildRangeCoeffATable(theRangepTable, + thepRangeCoeffATable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + thepRangeCoeffBTable = BuildRangeCoeffBTable(theRangepTable, + thepRangeCoeffBTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + thepRangeCoeffCTable = BuildRangeCoeffCTable(theRangepTable, + thepRangeCoeffCTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + // invert the range table + theInverseRangepTable = BuildInverseRangeTable(theRangepTable, + thepRangeCoeffATable, + thepRangeCoeffBTable, + thepRangeCoeffCTable, + theInverseRangepTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + } + else + { + // Build range table + theRangepbarTable = BuildRangeTable(theDEDXpbarTable, + theRangepbarTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + // Build lab/proper time tables + theLabTimepbarTable = BuildLabTimeTable(theDEDXpbarTable, + theLabTimepbarTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + theProperTimepbarTable = BuildProperTimeTable(theDEDXpbarTable, + theProperTimepbarTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + // Build coeff tables for the energy loss calculation + thepbarRangeCoeffATable = BuildRangeCoeffATable(theRangepbarTable, + thepbarRangeCoeffATable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + thepbarRangeCoeffBTable = BuildRangeCoeffBTable(theRangepbarTable, + thepbarRangeCoeffBTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + thepbarRangeCoeffCTable = BuildRangeCoeffCTable(theRangepbarTable, + thepbarRangeCoeffCTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + + // invert the range table + theInverseRangepbarTable = BuildInverseRangeTable(theRangepbarTable, + 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); + + // create array for the min. delta cuts in kinetic energy + if(!setMinDeltaCutInRange) + MinDeltaCutInRange = G4Electron::Electron()->GetCuts()/10.; + + if(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] ; + G4double Tlowerlimit = 1.*keV ; + for(G4int mat=0; matG4Electron::Electron()->GetCutsInEnergy()[mat]) + MinDeltaEnergy[mat]=G4Electron::Electron()->GetCutsInEnergy()[mat] ; + + if(aParticleType.GetParticleName()=="proton") + G4cout << G4std::setw(20) << (*theMaterialTable)(mat)->GetName() + << G4std::setw(15) << MinDeltaEnergy[mat]/keV << G4endl; + } +} + + +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.... + + G4double KineticEnergy,StepLimit; + G4bool isOut ; + + 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) + { + 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 ; +} + +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() ; + + // get the actual (true) Step length from stepData + Step = stepData.GetStepLength() ; + + aParticle = trackData.GetDynamicParticle() ; + ChargeSquare = Charge*Charge ; + + G4int index = aMaterial->GetIndex() ; + E = aParticle->GetKineticEnergy() ; + + if(E < MinKineticEnergy) MeanLoss = E ; + else + { + if(Step >= fRangeNow ) MeanLoss = E ; + + else if(( E > UpperBoundEloss)||( E <= LowerBoundEloss)) + MeanLoss = Step*fdEdx ; + + else + { + if(Step>linLossLimit*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 ; + + // subcutoff delta ray production start + if(subSecFlag) + { + G4double MinDeltaEnergyNow,Tc,TmintoProduceDelta,w,ww ; + G4double rcut,T0,presafety,postsafety,safety, + delta,fragment,Tmax,mass ; + G4double frperstep,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) ; + + 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()->GetCuts(); + + 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(T0GetTotNbOfElectPerVolume())+0.5) ; + + G4double Px,Py,Pz ; + G4ThreeVector ParticleDirection ; + ParticleDirection=stepData.GetPostStepPoint()-> + 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,delToverTc, + delTkin,delLoss,rate, + urandom ; + 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.)) + { + 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.; + + 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-> + SetTouchable(stepData.GetPostStepPoint()->GetTouchable()) ; + + 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)) + { + MeanLoss /= ChargeSquare ; + finalT = E-GetLossWithFluct(aParticle,aMaterial,MeanLoss)*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 ; +} + + diff --git a/source/processes/electromagnetic/standard/src/G4eBremsstrahlung.cc b/source/processes/electromagnetic/standard/src/G4eBremsstrahlung.cc index 08c87da37c..56572a8add 100644 --- a/source/processes/electromagnetic/standard/src/G4eBremsstrahlung.cc +++ b/source/processes/electromagnetic/standard/src/G4eBremsstrahlung.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4eBremsstrahlung.cc,v 1.6.8.1.2.2 1999/12/10 15:41:59 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4eBremsstrahlung.cc,v 1.11 2000/05/23 15:44:29 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- @@ -29,6 +29,7 @@ // 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 // -------------------------------------------------------------- #include "G4eBremsstrahlung.hh" @@ -36,17 +37,19 @@ #include "G4ios.hh" #include "G4UnitsTable.hh" +G4double G4eBremsstrahlung::LowerBoundLambda = 1.*keV ; +G4double G4eBremsstrahlung::UpperBoundLambda = 100.*TeV ; +G4int G4eBremsstrahlung::NbinLambda = 100 ; + + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... // constructor G4eBremsstrahlung::G4eBremsstrahlung(const G4String& processName) - : G4eEnergyLoss(processName), // initialization - theMeanFreePathTable(NULL), - LowestKineticEnergy (1.*keV), - HighestKineticEnergy(100.*TeV), - TotBin(100) -{ } + : G4VeEnergyLoss(processName), // initialization + theMeanFreePathTable(NULL) +{MinThreshold = 10*keV; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -66,16 +69,13 @@ G4eBremsstrahlung::~G4eBremsstrahlung() //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -void G4eBremsstrahlung::SetPhysicsTableBining(G4double lowE, G4double highE, G4int nBins) -{ - LowestKineticEnergy = lowE; HighestKineticEnergy = highE; TotBin = nBins; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - void G4eBremsstrahlung::BuildPhysicsTable(const G4ParticleDefinition& aParticleType) // just call BuildLossTable+BuildLambdaTable { + // get bining from EnergyLoss + LowestKineticEnergy = GetLowerBoundEloss() ; + HighestKineticEnergy = GetUpperBoundEloss() ; + TotBin = GetNbinEloss() ; BuildLossTable(aParticleType) ; @@ -108,7 +108,6 @@ void G4eBremsstrahlung::BuildLossTable(const G4ParticleDefinition& aParticleType losslim,loss,rate,natom,Cut; const G4double MinKinEnergy = 1.*keV; - const G4double MinCut = 1.*keV; const G4double Thigh = 100.*GeV; const G4double Cuthigh = 50.*GeV; const G4double Factorhigh = 36./(1450.*GeV); @@ -151,15 +150,13 @@ void G4eBremsstrahlung::BuildLossTable(const G4ParticleDefinition& aParticleType TotalEnergy = KineticEnergy+ParticleMass ; Cut = GammaCutInKineticEnergy[J] ; - if (Cut < MinCut) Cut = MinCut ; - if (Cut > KineticEnergy) Cut = KineticEnergy ; + if (Cut < MinThreshold) Cut = MinThreshold; + if (Cut > KineticEnergy) Cut = KineticEnergy; bremloss = 0.; if (KineticEnergy>MinKinEnergy) { - if (Cut > KineticEnergy) Cut = KineticEnergy ; - // loop for elements in the material for (G4int iel=0; ielGetLowEdgeEnergy( i ) ; Value = ComputeMeanFreePath( &ParticleType, LowEdgeEnergy, @@ -456,31 +453,27 @@ void G4eBremsstrahlung::BuildLambdaTable(const G4ParticleDefinition& ParticleTyp //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -void G4eBremsstrahlung::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. +G4double G4eBremsstrahlung::ComputeMeanFreePath( + const G4ParticleDefinition* ParticleType, + G4double KineticEnergy, + const G4Material* aMaterial) { - G4int Imate = aMaterial->GetIndex(); - G4int NbOfElements = aMaterial->GetNumberOfElements(); - const G4ElementVector* theElementVector = aMaterial->GetElementVector(); - const G4double* theAtomNumDensityVector = aMaterial->GetAtomicNumDensityVector(); - G4double GammaEnergyCut = (G4Gamma::GetCutsInEnergy())[Imate]; + const G4ElementVector* theElementVector = aMaterial->GetElementVector() ; + const G4double* theAtomNumDensityVector = aMaterial->GetAtomicNumDensityVector(); + G4double GammaEnergyCut = (G4Gamma::GetCutsInEnergy())[aMaterial->GetIndex()]; + if (GammaEnergyCut < MinThreshold) GammaEnergyCut = MinThreshold; + + G4double SIGMA = 0 ; - PartialSumSigma(Imate) = new G4ValVector(NbOfElements); - - G4double SIGMA = 0. ; - - for ( G4int Ielem=0 ; Ielem < NbOfElements ; Ielem++ ) + for ( G4int i=0 ; i < aMaterial->GetNumberOfElements() ; i++ ) { - SIGMA += theAtomNumDensityVector[Ielem] * - ComputeMicroscopicCrossSection( ParticleType, KineticEnergy, - (*theElementVector)(Ielem)->GetZ(), - GammaEnergyCut ); - PartialSumSigma(Imate)->insertAt(Ielem, SIGMA); - } + SIGMA += theAtomNumDensityVector[i] * + ComputeMicroscopicCrossSection( ParticleType, KineticEnergy, + (*theElementVector)(i)->GetZ(), + GammaEnergyCut ); + } + + return SIGMA > DBL_MIN ? 1./SIGMA : DBL_MAX; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -677,6 +670,35 @@ G4double G4eBremsstrahlung::ComputePositronCorrFactorSigma( G4double AtomicNumbe //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +void G4eBremsstrahlung::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 G4ValVector(NbOfElements); + + G4double SIGMA = 0. ; + + for ( G4int Ielem=0 ; Ielem < NbOfElements ; Ielem++ ) + { + SIGMA += theAtomNumDensityVector[Ielem] * + ComputeMicroscopicCrossSection( ParticleType, KineticEnergy, + (*theElementVector)(Ielem)->GetZ(), + GammaEnergyCut ); + PartialSumSigma(Imate)->insertAt(Ielem, SIGMA); + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + G4VParticleChange* G4eBremsstrahlung::PostStepDoIt(const G4Track& trackData, const G4Step& stepData) // @@ -734,7 +756,8 @@ G4VParticleChange* G4eBremsstrahlung::PostStepDoIt(const G4Track& trackData, // Gamma production cut in this material G4double GammaEnergyCut = (G4Gamma::GetCutsInEnergy())[aMaterial->GetIndex()]; - + if (GammaEnergyCut < MinThreshold) GammaEnergyCut = MinThreshold; + // check against insufficient energy if (KineticEnergy < GammaEnergyCut) { @@ -933,14 +956,14 @@ G4Element* G4eBremsstrahlung::SelectRandomAtom(G4Material* aMaterial) const void G4eBremsstrahlung::PrintInfoDefinition() { G4String comments = "Total cross sections from a parametrisation. "; - comments += "Good description from 1 KeV to 100 GeV.\n"; + comments += "Good description from 10 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"; + << "\n PhysicsTables from " << G4BestUnit(LowerBoundLambda,"Energy") + << " to " << G4BestUnit(UpperBoundLambda,"Energy") + << " in " << NbinLambda << " bins. \n"; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/source/processes/electromagnetic/standard/src/G4eBremsstrahlungPlus.cc b/source/processes/electromagnetic/standard/src/G4eBremsstrahlungPlus.cc deleted file mode 100644 index 36beea3d2c..0000000000 --- a/source/processes/electromagnetic/standard/src/G4eBremsstrahlungPlus.cc +++ /dev/null @@ -1,947 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4eBremsstrahlungPlus.cc,v 1.6.8.1.2.2 1999/12/10 15:41:59 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// -// -------------------------------------------------------------- -// GEANT 4 class implementation file -// CERN Geneva Switzerland -// -// For information related to this code contact: -// CERN, IT Division, ASD group -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4eBremsstrahlungPlus 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 -// -------------------------------------------------------------- - -#include "G4eBremsstrahlungPlus.hh" -#include "G4EnergyLossTables.hh" -#include "G4ios.hh" -#include "G4UnitsTable.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -// constructor - -G4eBremsstrahlungPlus::G4eBremsstrahlungPlus(const G4String& processName) - : G4eEnergyLossPlus(processName), // initialization - theMeanFreePathTable(NULL), - LowestKineticEnergy (1.*keV), - HighestKineticEnergy(100.*TeV), - TotBin(100) -{ } - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -// destructor - -G4eBremsstrahlungPlus::~G4eBremsstrahlungPlus() -{ - if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); - delete theMeanFreePathTable; - } - - if (&PartialSumSigma) { - PartialSumSigma.clearAndDestroy(); - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G4eBremsstrahlungPlus::SetPhysicsTableBining(G4double lowE, G4double highE, G4int nBins) -{ - LowestKineticEnergy = lowE; HighestKineticEnergy = highE; TotBin = nBins; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G4eBremsstrahlungPlus::BuildPhysicsTable(const G4ParticleDefinition& aParticleType) -// just call BuildLossTable+BuildLambdaTable -{ - - BuildLossTable(aParticleType) ; - - if (&aParticleType==G4Electron::Electron()) - { - RecorderOfElectronProcess[CounterOfElectronProcess] = (*this).theLossTable ; - CounterOfElectronProcess++; - } - else - { - RecorderOfPositronProcess[CounterOfPositronProcess] = (*this).theLossTable ; - CounterOfPositronProcess++; - } - - BuildLambdaTable(aParticleType) ; - - BuildDEDXTable (aParticleType) ; - - if(&aParticleType==G4Electron::Electron()) - PrintInfoDefinition(); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G4eBremsstrahlungPlus::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 MinKinEnergy = 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(); - - // 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>MinKinEnergy) - { - if (Cut > KineticEnergy) Cut = KineticEnergy ; - - // loop for elements in the material - for (G4int iel=0; ielGetZ(); - natom = theAtomicNumDensityVector[iel] ; - if (KineticEnergy <= Thigh) - { - //loss for MinKinEnergy100 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) - { - sp=uu/(uu+MigdalConstant*TotalEnergysquare* - (material->GetElectronDensity())) ; - s2lpm=LPMEnergy*u/TotalEnergysquare ; - if(s2lpm<1.) - { - w=s2lpm*(1.+sp) ; - fac=sp*(sqrt(w*w+4.*s2lpm*sp*sp)-w)/ - (sqrt(1.+2.*sp+5.*sp*sp)-1.-sp) ; - } - else - { - fac=sp ; - } - } - 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); - } - -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4double G4eBremsstrahlungPlus::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.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) ; - } - -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G4eBremsstrahlungPlus::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 G4ValVector(NbOfElements); - - G4double SIGMA = 0. ; - - for ( G4int Ielem=0 ; Ielem < NbOfElements ; Ielem++ ) - { - SIGMA += theAtomNumDensityVector[Ielem] * - ComputeMicroscopicCrossSection( ParticleType, KineticEnergy, - (*theElementVector)(Ielem)->GetZ(), - GammaEnergyCut ); - PartialSumSigma(Imate)->insertAt(Ielem, SIGMA); - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4double G4eBremsstrahlungPlus::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 ( KineticEnergy < 1*keV ) return CrossSection; - if ( KineticEnergy <= GammaEnergyCut ) return CrossSection; - - G4double LocalKineticEnergy = KineticEnergy, LocalGammaEnergyCut = GammaEnergyCut; - - const G4double KinLimitScale = 100.*GeV, CutLimitScale = 50.*GeV; - - - const G4double Tlim = 1.*MeV; - if (KineticEnergy < Tlim) LocalKineticEnergy = Tlim; - - 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); - - if (KineticEnergy < Tlim) CrossSection *= log(KineticEnergy/GammaEnergyCut) - /log(Tlim/GammaEnergyCut); - - - // 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; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4double G4eBremsstrahlungPlus::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); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4VParticleChange* G4eBremsstrahlungPlus::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 G4VContinuousDiscreteProcess::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.+Spol) ; - G4double Supr=Spol*(sqrt(w*w+4.*S2LPM*Spol*Spol)-w)/ - (sqrt(1.+2.*Spol+5.*Spol*Spol)-1.-Spol) ; - if (G4UniformRand() > Supr) - GammaEnergy = 0. ; - } - - //protection: DO NOT PRODUCE a gamma with energy 0. ! - if (GammaEnergy <= 0.) - return G4VContinuousDiscreteProcess::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 G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4Element* G4eBremsstrahlungPlus::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; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G4eBremsstrahlungPlus::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"; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/source/processes/electromagnetic/standard/src/G4eEnergyLoss.cc b/source/processes/electromagnetic/standard/src/G4eEnergyLoss.cc deleted file mode 100644 index 95150415fd..0000000000 --- a/source/processes/electromagnetic/standard/src/G4eEnergyLoss.cc +++ /dev/null @@ -1,1141 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4eEnergyLoss.cc,v 1.10.6.1.2.1 1999/12/10 15:41:59 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// $Id: -// ----------------------------------------------------------- -// GEANT 4 class implementation file -// -// For information related to this code contact: -// CERN, IT Division, ASD group -// History: based on object model of -// 2nd December 1995, G.Cosmo -// ---------- G4eEnergyLoss 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-. -// -------------------------------------------------------------- -// -// 08-05-97: small changes by L.Urban -// 27-05-98: several bugs and inconsistencies are corrected, -// new table (the inverse of the range table) added , -// AlongStepDoit uses now this new table. L.Urban -// 08-09-98: cleanup -// 24-09-98: rndmStepFlag false by default (no randomization of the step) -// 14-10-98: messenger file added. -// 16-10-98: public method SetStepFunction() -// 20-01-99: important correction in AlongStepDoIt , L.Urban -// -------------------------------------------------------------- - -#include "G4eEnergyLoss.hh" -#include "G4EnergyLossMessenger.hh" -#include "G4Poisson.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -// Initialisation of static data members -// ------------------------------------- -// Contributing processes : ion.loss + soft brems->NbOfProcesses 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 G4eEnergyLoss.hh) - -G4int G4eEnergyLoss::NbOfProcesses = 2; - -G4int G4eEnergyLoss::CounterOfElectronProcess = 0; -G4int G4eEnergyLoss::CounterOfPositronProcess = 0; -G4PhysicsTable** G4eEnergyLoss::RecorderOfElectronProcess = - new G4PhysicsTable*[10]; -G4PhysicsTable** G4eEnergyLoss::RecorderOfPositronProcess = - new G4PhysicsTable*[10]; - -G4bool G4eEnergyLoss::rndmStepFlag = false; -G4bool G4eEnergyLoss::EnlossFlucFlag = true; -G4double G4eEnergyLoss::dRoverRange = 20*perCent; -G4double G4eEnergyLoss::finalRange = 200*micrometer; -G4double G4eEnergyLoss::c1lim = dRoverRange ; -G4double G4eEnergyLoss::c2lim = 2.*(1.-dRoverRange)*finalRange ; -G4double G4eEnergyLoss::c3lim = -(1.-dRoverRange)*finalRange*finalRange; - -G4PhysicsTable* G4eEnergyLoss::theDEDXElectronTable = NULL; -G4PhysicsTable* G4eEnergyLoss::theDEDXPositronTable = NULL; -G4PhysicsTable* G4eEnergyLoss::theRangeElectronTable = NULL; -G4PhysicsTable* G4eEnergyLoss::theRangePositronTable = NULL; -G4PhysicsTable* G4eEnergyLoss::theInverseRangeElectronTable = NULL; -G4PhysicsTable* G4eEnergyLoss::theInverseRangePositronTable = NULL; -G4PhysicsTable* G4eEnergyLoss::theLabTimeElectronTable = NULL; -G4PhysicsTable* G4eEnergyLoss::theLabTimePositronTable = NULL; -G4PhysicsTable* G4eEnergyLoss::theProperTimeElectronTable = NULL; -G4PhysicsTable* G4eEnergyLoss::theProperTimePositronTable = NULL; - -G4PhysicsTable* G4eEnergyLoss::theeRangeCoeffATable = NULL; -G4PhysicsTable* G4eEnergyLoss::theeRangeCoeffBTable = NULL; -G4PhysicsTable* G4eEnergyLoss::theeRangeCoeffCTable = NULL; -G4PhysicsTable* G4eEnergyLoss::thepRangeCoeffATable = NULL; -G4PhysicsTable* G4eEnergyLoss::thepRangeCoeffBTable = NULL; -G4PhysicsTable* G4eEnergyLoss::thepRangeCoeffCTable = NULL; - -G4EnergyLossMessenger* G4eEnergyLoss::eLossMessenger = NULL; - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -// constructor and destructor - -G4eEnergyLoss::G4eEnergyLoss(const G4String& processName) - : G4VContinuousDiscreteProcess (processName), - theLossTable(NULL), - Charge(-1.),lastCharge(0.), - theDEDXTable(NULL),theRangeTable(NULL), - theRangeCoeffATable(NULL), - theRangeCoeffBTable(NULL), - theRangeCoeffCTable(NULL), - lastMaterial(NULL), - LowestKineticEnergy(1.00*keV), - HighestKineticEnergy(100.*TeV), - MinKineticEnergy(1.*eV), - linLossLimit(0.02), - 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.... - -G4eEnergyLoss::~G4eEnergyLoss() -{ - if (theLossTable) - { - theLossTable->clearAndDestroy(); - delete theLossTable; - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G4eEnergyLoss::BuildDEDXTable( - const G4ParticleDefinition& aParticleType) -{ - ParticleMass = aParticleType.GetPDGMass(); - - // calculate data members TotBin,LOGRTable,RTable first - - G4double binning = dRoverRange; - G4double lrate = log(HighestKineticEnergy/LowestKineticEnergy); - G4int nbin = G4int(lrate/log(1.+binning) + 0.5 ); - nbin = (nbin+25)/50; - TotBin =50*nbin ; - if (TotBin<50) TotBin = 50; - 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 G4eEnergyLoss::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 G4eEnergyLoss::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 G4eEnergyLoss::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 G4eEnergyLoss::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 G4eEnergyLoss::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 G4eEnergyLoss::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 G4eEnergyLoss::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 G4eEnergyLoss::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 G4eEnergyLoss::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 G4eEnergyLoss::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 G4eEnergyLoss::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 G4eEnergyLoss::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 G4eEnergyLoss::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.... - -G4VParticleChange* G4eEnergyLoss::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() ; - - G4Material* aMaterial = trackData.GetMaterial(); - G4int index = aMaterial->GetIndex(); - - G4double Step = stepData.GetStepLength(); - - fParticleChange.Initialize(trackData); - - G4double MeanLoss, finalT; - - if (E < MinKineticEnergy) finalT = 0.; - - else if ( E<= LowestKineticEnergy) - { - if (Step >= fRangeNow) finalT = 0.; - else finalT = E - Step*fdEdx ; - } - - else if (E>=HighestKineticEnergy) finalT = E - Step*fdEdx; - - else if (Step >= fRangeNow) finalT = 0.; - - else - { - if(Step/fRangeNow < linLossLimit) finalT = E-Step*fdEdx ; - 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 ; - - //now the loss with fluctuation - if ((EnlossFlucFlag) && (finalT > 0.) && (finalT < E)&&(E > LowestKineticEnergy)) - { - finalT = E-GetLossWithFluct(aParticle,aMaterial,MeanLoss); - if (finalT < 0.) finalT = E-MeanLoss; - } - - - // kill the particle if the kinetic energy <= 0 - if (finalT <= 0. ) - { - finalT = 0.; - if (Charge < 0.) fParticleChange.SetStatusChange(fStopAndKill); - else fParticleChange.SetStatusChange(fStopButAlive); - } - - fParticleChange.SetEnergyChange(finalT); - fParticleChange.SetLocalEnergyDeposit(E-finalT); - - return &fParticleChange; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - - -G4double G4eEnergyLoss::GetLossWithFluct(const G4DynamicParticle* aParticle, - G4Material* aMaterial, - G4double MeanLoss) -// calculate actual loss from the mean loss -// The model used to get the fluctuation is the same as in Glandz in Geant3. -{ - static const G4double Tlow=10.*keV ; - - // 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,w3,lnw3,C,prob, - beta2,suma,e0,Em,loss,lossc ,w; - G4double a1,a2,a3; - G4long p1,p2,p3; - G4int nb; - G4double Corrfac, na,alfa,rfac,namean,sa,alfa1,ea,sea; - G4double dp1,dnmaxDirectFluct,dp3,dnmaxCont2; - G4double siga ; - static const G4double alim=10.; - - // get particle data - G4double Tkin = aParticle->GetKineticEnergy(); - - if (Charge<0.) threshold =((*G4Electron::Electron()).GetCutsInEnergy())[imat]; - else threshold =((*G4Positron::Positron()).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) - -ipotFluct; - if (Tm < 0.) Tm = 0.; - else if (Tm > threshold) Tm = threshold; - - w1 = Tm+ipotFluct; - w2 = w1/ipotFluct; - w3 = 2.*electron_mass_c2*tau2; - lnw3 = log(w3); - beta2 = tau2/(tau1*tau1); - - C = (1.-rateFluct)*MeanLoss/(lnw3-ipotLogFluct-beta2); - - a1 = C*f1Fluct*(lnw3-e1LogFluct-beta2)/e1Fluct; - a2 = C*f2Fluct*(lnw3-e2LogFluct-beta2)/e2Fluct; - if (Tm > 0.) a3 = rateFluct*MeanLoss*Tm/(ipotFluct*w1*log(w2)); - else { a1 /= rateFluct; a2 /= rateFluct; a3 = 0.;} - suma = a1+a2+a3; - - //no fluctuation if the loss is too big - if (suma > MaxExcitationNumber) return MeanLoss; - - suma<50.? prob = exp(-suma) : prob = 0.; - - if (prob > probLimFluct) // very small Step - { - e0 = aMaterial->GetIonisation()->GetEnergy0fluct(); - if (Tm <= 0.) - { - a1 = MeanLoss/e0; - if(a1>alim) - { - siga=sqrt(a1) ; - p1 = G4std::max(0,int(RandGauss::shoot(a1,siga)+0.5)); - } - else - p1 = G4Poisson(a1); - loss = p1*e0 ; - } - else - { - Em = Tm+e0; - a1 = MeanLoss*(Em-e0)/(Em*e0*log(Em/e0)); - if(a1>alim) - { - siga=sqrt(a1) ; - p1 = G4std::max(0,int(RandGauss::shoot(a1,siga)+0.5)); - } - else - p1 = G4Poisson(a1); - w = (Em-e0)/Em; - // just to save time - if (p1 > nmaxDirectFluct) - { - dp1 = p1; - dnmaxDirectFluct=nmaxDirectFluct; - Corrfac = dp1/dnmaxDirectFluct; - p1 = nmaxDirectFluct; - } - else Corrfac = 1.; - - loss = 0.; - for (long i=0; ialim) - { - siga=sqrt(a1) ; - p1 = G4std::max(0,int(RandGauss::shoot(a1,siga)+0.5)); - } - else - p1 = G4Poisson(a1); - if(a2>alim) - { - siga=sqrt(a2) ; - p2 = G4std::max(0,int(RandGauss::shoot(a2,siga)+0.5)); - } - else - p2 = G4Poisson(a2); - loss = p1*e1Fluct+p2*e2Fluct; - if (loss>0.) loss += (1.-2.*G4UniformRand())*e1Fluct; - if(a3>alim) - { - siga=sqrt(a3) ; - p3 = G4std::max(0,int(RandGauss::shoot(a3,siga)+0.5)); - } - else - p3 = G4Poisson(a3); - - lossc = 0.; na = 0.; alfa = 1.; - if (p3 > nmaxCont2) - { - dp3 = p3; - dnmaxCont2 = nmaxCont2; - rfac = dp3/(dnmaxCont2+dp3); - namean = p3*rfac; - sa = nmaxCont1*rfac; - na = RandGauss::shoot(namean,sa); - if (na > 0.) - { - alfa = w2*(nmaxCont2+p3)/(w2*nmaxCont2+p3); - alfa1 = alfa*log(alfa)/(alfa-1.); - ea = na*ipotFluct*alfa1; - sea = ipotFluct*sqrt(na*(alfa-alfa1*alfa1)); - lossc += RandGauss::shoot(ea,sea); - } - } - - nb = G4int(p3-na); - if (nb > 0) - { - w2 = alfa*ipotFluct; - w = (w1-w2)/w1; - 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 G4eEnergyLossPlus.hh) - -G4int G4eEnergyLossPlus::NbOfProcesses = 2; - -G4int G4eEnergyLossPlus::CounterOfElectronProcess = 0; -G4int G4eEnergyLossPlus::CounterOfPositronProcess = 0; -G4PhysicsTable** G4eEnergyLossPlus::RecorderOfElectronProcess = - new G4PhysicsTable*[10]; -G4PhysicsTable** G4eEnergyLossPlus::RecorderOfPositronProcess = - new G4PhysicsTable*[10]; - -G4bool G4eEnergyLossPlus::rndmStepFlag = false; -G4bool G4eEnergyLossPlus::EnlossFlucFlag = true; -G4double G4eEnergyLossPlus::dRoverRange = 20*perCent; -G4double G4eEnergyLossPlus::finalRange = 200*micrometer; -G4double G4eEnergyLossPlus::c1lim = dRoverRange ; -G4double G4eEnergyLossPlus::c2lim = 2.*(1.-dRoverRange)*finalRange ; -G4double G4eEnergyLossPlus::c3lim = -(1.-dRoverRange)*finalRange*finalRange; - -G4double G4eEnergyLossPlus::MinDeltaCutInRange = 0.010*mm ; -G4double* G4eEnergyLossPlus::MinDeltaEnergy = NULL ; - -G4PhysicsTable* G4eEnergyLossPlus::theDEDXElectronTable = NULL; -G4PhysicsTable* G4eEnergyLossPlus::theDEDXPositronTable = NULL; -G4PhysicsTable* G4eEnergyLossPlus::theRangeElectronTable = NULL; -G4PhysicsTable* G4eEnergyLossPlus::theRangePositronTable = NULL; -G4PhysicsTable* G4eEnergyLossPlus::theInverseRangeElectronTable = NULL; -G4PhysicsTable* G4eEnergyLossPlus::theInverseRangePositronTable = NULL; -G4PhysicsTable* G4eEnergyLossPlus::theLabTimeElectronTable = NULL; -G4PhysicsTable* G4eEnergyLossPlus::theLabTimePositronTable = NULL; -G4PhysicsTable* G4eEnergyLossPlus::theProperTimeElectronTable = NULL; -G4PhysicsTable* G4eEnergyLossPlus::theProperTimePositronTable = NULL; - -G4PhysicsTable* G4eEnergyLossPlus::theeRangeCoeffATable = NULL; -G4PhysicsTable* G4eEnergyLossPlus::theeRangeCoeffBTable = NULL; -G4PhysicsTable* G4eEnergyLossPlus::theeRangeCoeffCTable = NULL; -G4PhysicsTable* G4eEnergyLossPlus::thepRangeCoeffATable = NULL; -G4PhysicsTable* G4eEnergyLossPlus::thepRangeCoeffBTable = NULL; -G4PhysicsTable* G4eEnergyLossPlus::thepRangeCoeffCTable = NULL; - -G4EnergyLossMessenger* G4eEnergyLossPlus::eLossMessenger = NULL; - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -// constructor and destructor - -G4eEnergyLossPlus::G4eEnergyLossPlus(const G4String& processName) - : G4VContinuousDiscreteProcess (processName), - theLossTable(NULL), - Charge(-1.),lastCharge(0.), - theDEDXTable(NULL),theRangeTable(NULL), - theRangeCoeffATable(NULL), - theRangeCoeffBTable(NULL), - theRangeCoeffCTable(NULL), - lastMaterial(NULL), - LowestKineticEnergy(1.00*keV), - HighestKineticEnergy(100.*TeV), - MinKineticEnergy(1.*eV), - linLossLimit(0.02), - MaxExcitationNumber (1.e6), - probLimFluct (0.01), - nmaxDirectFluct (100), - nmaxCont1(4), - nmaxCont2(16), - c1N(2.86e-23*MeV*mm*mm), - c2N(c1N*MeV/10.), - Ndeltamax(100) -{ - //create (only once) EnergyLoss messenger - if(!eLossMessenger) eLossMessenger = new G4EnergyLossMessenger(); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4eEnergyLossPlus::~G4eEnergyLossPlus() -{ - if (theLossTable) - { - theLossTable->clearAndDestroy(); - delete theLossTable; - if(MinDeltaEnergy) delete MinDeltaEnergy ; - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G4eEnergyLossPlus::BuildDEDXTable( - const G4ParticleDefinition& aParticleType) -{ - ParticleMass = aParticleType.GetPDGMass(); - - // calculate data members TotBin,LOGRTable,RTable first - G4double binning = dRoverRange; - G4double lrate = log(HighestKineticEnergy/LowestKineticEnergy); - G4int nbin = G4int(lrate/log(1.+binning) + 0.5 ); - nbin = (nbin+25)/50; - TotBin =50*nbin ; - if (TotBin<50) TotBin = 50; - 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); - - if(&aParticleType==G4Electron::Electron()) - { - // create array for the min. delta cuts in kinetic energy - G4double absLowerLimit = 1.*keV ; - G4cout << G4endl; - G4cout.precision(5) ; - G4cout << " eIoni+ Minimum Delta cut in range=" << MinDeltaCutInRange/mm - << " mm." << G4endl; - G4cout << " min. delta energies (keV) " << G4endl; - G4cout << " material min.delta energy " << G4endl; - G4cout << G4endl; - - if(MinDeltaEnergy) delete MinDeltaEnergy ; - MinDeltaEnergy = new G4double [numOfMaterials] ; - G4double Tlowerlimit = 1.*keV ; - for(G4int mat=0; matGetName() - << G4std::setw(15) << MinDeltaEnergy[mat]/keV << G4endl; - } - } - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G4eEnergyLossPlus::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 G4eEnergyLossPlus::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 G4eEnergyLossPlus::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 G4eEnergyLossPlus::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 G4eEnergyLossPlus::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 G4eEnergyLossPlus::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 G4eEnergyLossPlus::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 G4eEnergyLossPlus::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 G4eEnergyLossPlus::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 G4eEnergyLossPlus::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 G4eEnergyLossPlus::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 G4eEnergyLossPlus::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 G4eEnergyLossPlus::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.... - - -G4VParticleChange* G4eEnergyLossPlus::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() ; - - G4Material* aMaterial = trackData.GetMaterial(); - G4int index = aMaterial->GetIndex(); - G4double Step = stepData.GetStepLength(); - - aParticleChange.Initialize(trackData); - - G4double MeanLoss, finalT; - - if (E < MinKineticEnergy) finalT = 0.; - - else if (E<=LowestKineticEnergy) - { - if (Step >= fRangeNow) finalT = 0.; - else finalT = E - Step*fdEdx; - } - - else if (E>=HighestKineticEnergy) finalT = E - Step*fdEdx; - - else if (Step >= fRangeNow) finalT = 0.; - - else - { - if(Step/fRangeNow < linLossLimit) finalT = E-Step*fdEdx ; - 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 ; - - // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - G4double MinDeltaEnergyNow = MinDeltaEnergy[index] ; - G4double TmintoProduceDelta=0.5*(3.-Charge)*MinDeltaEnergyNow ; - if((E > TmintoProduceDelta) && (MeanLoss > MinDeltaEnergyNow) - && (finalT > MinKineticEnergy)) - { - G4double rcut,Tc,T0,presafety,postsafety,safety, - delta,fragment ; - G4double frperstep,x1,y1,z1,dx,dy,dz,dTime,time0,DeltaTime; - G4double epsil= MinKineticEnergy/2. ; - - if(Charge < 0.) - { - rcut=G4Electron::Electron()->GetCuts(); - Tc=G4Electron::Electron()->GetCutsInEnergy()[index]; - // threshold ! - if(Tc > 0.5*E) Tc=0.5*E ; - } - else - { - rcut=G4Positron::Positron()->GetCuts(); - Tc=G4Positron::Positron()->GetCutsInEnergy()[index]; - // threshold ! - if(Tc > E) Tc=E ; - } - // generate subcutoff delta rays only if Tc>MinDeltaEnergy! - if(Tc > 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(safetyGetPosition().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.) - { - // compute nb of delta rays to be generated - G4int N=int(fragment*(c1N*(1.-T0/Tc)+c2N/E)* - (aMaterial->GetTotNbOfElectPerVolume())/T0+0.5) ; - if(N > Ndeltamax) - N = Ndeltamax ; - G4double Px,Py,Pz ; - G4ThreeVector ParticleDirection ; - ParticleDirection=stepData.GetPostStepPoint()-> - 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,delToverTc, - sumT,delTkin,delLoss,rate, - urandom ; - G4StepPoint *point ; - - sumT=0.; - - Tkin = E ; - Etot = Tkin+electron_mass_c2 ; - P = sqrt(Tkin*(Etot+electron_mass_c2)) ; - - aParticleChange.SetNumberOfSecondaries(N); - do { - subdelta += 1 ; - - if((Charge<0.)&&(Tc>0.5*Tkin)) Tc=0.5*Tkin ; - if((Charge>0.)&&(Tc> Tkin)) Tc= Tkin ; - - //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.; - - phi=twopi*G4UniformRand() ; - sintheta=sqrt(1.-costheta*costheta); - dirx=sintheta*cos(phi); - diry=sintheta*sin(phi); - dirz=costheta; - - sumT += T ; - - 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 ; - ParticleDirection=stepData.GetPostStepPoint()-> - GetMomentumDirection() ; - - 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-> - SetTouchable(stepData.GetPostStepPoint()->GetTouchable()) ; - deltaTrack->SetParentID(trackData.GetTrackID()) ; - - aParticleChange.AddSecondary(deltaTrack) ; - - } - - } while (subdelta 0) - aParticleChange.SetMomentumChange(Px,Py,Pz) ; - E = Tkin ; - - } - } - // ................................................................ - } - } - } - - finalT = E - MeanLoss ; - if(finalT < MinKineticEnergy) finalT = 0. ; - - // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - - //now the loss with fluctuation - if ((EnlossFlucFlag) && (finalT > 0.) && (finalT < E)&&(E > LowestKineticEnergy)) - { - finalT = E-GetLossWithFluct(aParticle,aMaterial,MeanLoss); - 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.SetEnergyChange(finalT); - aParticleChange.SetLocalEnergyDeposit(E-finalT); - - return &aParticleChange; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - - -G4double G4eEnergyLossPlus::GetLossWithFluct(const G4DynamicParticle* aParticle, - G4Material* aMaterial, - G4double MeanLoss) -// calculate actual loss from the mean loss -// The model used to get the fluctuation is the same as in Glandz in Geant3. -{ - static const G4double Tlow=10.*keV ; - - // 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,w3,lnw3,C,prob, - beta2,suma,e0,Em,loss,lossc ,w; - G4double a1,a2,a3; - G4long p1,p2,p3; - G4int nb; - G4double Corrfac, na,alfa,rfac,namean,sa,alfa1,ea,sea; - G4double dp1,dnmaxDirectFluct,dp3,dnmaxCont2; - G4double siga ; - static const G4double alim=10.; - - // get particle data - G4double Tkin = aParticle->GetKineticEnergy(); - if (Charge<0.) threshold =((*G4Electron::Electron()).GetCutsInEnergy())[imat]; - else threshold =((*G4Positron::Positron()).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) - -ipotFluct; - if (Tm < 0.) Tm = 0.; - else if (Tm > threshold) Tm = threshold; - - w1 = Tm+ipotFluct; - w2 = w1/ipotFluct; - w3 = 2.*electron_mass_c2*tau2; - lnw3 = log(w3); - beta2 = tau2/(tau1*tau1); - - C = (1.-rateFluct)*MeanLoss/(lnw3-ipotLogFluct-beta2); - - a1 = C*f1Fluct*(lnw3-e1LogFluct-beta2)/e1Fluct; - a2 = C*f2Fluct*(lnw3-e2LogFluct-beta2)/e2Fluct; - if (Tm > 0.) a3 = rateFluct*MeanLoss*Tm/(ipotFluct*w1*log(w2)); - else { a1 /= rateFluct; a2 /= rateFluct; a3 = 0.;} - suma = a1+a2+a3; - - //no fluctuation if the loss is too big - if (suma > MaxExcitationNumber) return MeanLoss; - - suma<50.? prob = exp(-suma) : prob = 0.; - - if (prob > probLimFluct) // very small Step - { - e0 = aMaterial->GetIonisation()->GetEnergy0fluct(); - if (Tm <= 0.) - { - a1 = MeanLoss/e0; - if(a1>alim) - { - siga=sqrt(a1) ; - p1 = G4std::max(0,int(RandGauss::shoot(a1,siga)+0.5)); - } - else - p1 = G4Poisson(a1); - loss = p1*e0 ; - } - else - { - Em = Tm+e0; - a1 = MeanLoss*(Em-e0)/(Em*e0*log(Em/e0)); - if(a1>alim) - { - siga=sqrt(a1) ; - p1 = G4std::max(0,int(RandGauss::shoot(a1,siga)+0.5)); - } - else - p1 = G4Poisson(a1); - w = (Em-e0)/Em; - // just to save time - if (p1 > nmaxDirectFluct) - { - dp1 = p1; - dnmaxDirectFluct=nmaxDirectFluct; - Corrfac = dp1/dnmaxDirectFluct; - p1 = nmaxDirectFluct; - } - else Corrfac = 1.; - - loss = 0.; - for (long i=0; ialim) - { - siga=sqrt(a1) ; - p1 = G4std::max(0,int(RandGauss::shoot(a1,siga)+0.5)); - } - else - p1 = G4Poisson(a1); - if(a2>alim) - { - siga=sqrt(a2) ; - p2 = G4std::max(0,int(RandGauss::shoot(a2,siga)+0.5)); - } - else - p2 = G4Poisson(a2); - loss = p1*e1Fluct+p2*e2Fluct; - if (loss>0.) loss += (1.-2.*G4UniformRand())*e1Fluct; - if(a3>alim) - { - siga=sqrt(a3) ; - p3 = G4std::max(0,int(RandGauss::shoot(a3,siga)+0.5)); - } - else - p3 = G4Poisson(a3); - - lossc = 0.; na = 0.; alfa = 1.; - if (p3 > nmaxCont2) - { - dp3 = p3; - dnmaxCont2 = nmaxCont2; - rfac = dp3/(dnmaxCont2+dp3); - namean = p3*rfac; - sa = nmaxCont1*rfac; - na = RandGauss::shoot(namean,sa); - if (na > 0.) - { - alfa = w2*(nmaxCont2+p3)/(w2*nmaxCont2+p3); - alfa1 = alfa*log(alfa)/(alfa-1.); - ea = na*ipotFluct*alfa1; - sea = ipotFluct*sqrt(na*(alfa-alfa1*alfa1)); - lossc += RandGauss::shoot(ea,sea); - } - } - - nb = G4int(p3-na); - if (nb > 0) - { - w2 = alfa*ipotFluct; - w = (w1-w2)/w1; - for (G4int k=0; kGetIonisation()->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++) { - LowEdgeEnergy = aVector->GetLowEdgeEnergy(i) ; + LowEdgeEnergy = aVector->GetLowEdgeEnergy(i) ; + // low energy ? + if(LowEdgeEnergy < Th) + { + Tsav = LowEdgeEnergy ; + LowEdgeEnergy = Th ; + } + else + Tsav = 0. ; + tau = LowEdgeEnergy/ParticleMass ; // Seltzer-Berger formula @@ -185,6 +201,15 @@ void G4eIonisation::BuildLossTable(const G4ParticleDefinition& aParticleType) 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) ; } theLossTable->insert(aVector); @@ -211,9 +236,19 @@ void G4eIonisation::BuildLambdaTable(const G4ParticleDefinition& aParticleType) 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 !!!!!!! + + if((G4Electron::Electron()->GetCutsInEnergy() == 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 !!!!!!") ; + } + G4double* DeltaCutInKineticEnergy = G4Electron::Electron()->GetCutsInEnergy() ; - // loop for materials for (G4int J=0 ; J < numOfMaterials; J++) @@ -221,7 +256,7 @@ void G4eIonisation::BuildLambdaTable(const G4ParticleDefinition& aParticleType) //create physics vector then fill it .... G4PhysicsLogVector* aVector = new G4PhysicsLogVector( - LowestKineticEnergy, HighestKineticEnergy, TotBin); + LowerBoundLambda, UpperBoundLambda, NbinLambda); // compute the (macroscopic) cross section first @@ -238,7 +273,7 @@ void G4eIonisation::BuildLambdaTable(const G4ParticleDefinition& aParticleType) // (--> it will be the same for all the elements in this material ) G4double DeltaThreshold = DeltaCutInKineticEnergy[J] ; - for (G4int i = 0 ; i < TotBin ; i++) + for (G4int i = 0 ; i < NbinLambda ; i++) { LowEdgeEnergy = aVector->GetLowEdgeEnergy(i) ; SIGMA = 0.; @@ -257,7 +292,6 @@ void G4eIonisation::BuildLambdaTable(const G4ParticleDefinition& aParticleType) } theMeanFreePathTable->insert(aVector); } - } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -450,9 +484,9 @@ void G4eIonisation::PrintInfoDefinition() 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"; + << "\n PhysicsTables from " << G4BestUnit(LowerBoundLambda,"Energy") + << " to " << G4BestUnit(UpperBoundLambda,"Energy") + << " in " << NbinLambda << " bins. \n"; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/source/processes/electromagnetic/standard/src/G4eIonisationPlus.cc b/source/processes/electromagnetic/standard/src/G4eIonisationPlus.cc deleted file mode 100644 index 1ea35191dd..0000000000 --- a/source/processes/electromagnetic/standard/src/G4eIonisationPlus.cc +++ /dev/null @@ -1,458 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4eIonisationPlus.cc,v 1.3.8.1.2.2 1999/12/10 15:42:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// -// ------------------------------------------------------------- -// GEANT 4 class implementation file -// -// For information related to this code contact: -// CERN, IT Division, ASD group -// History: based on object model of -// 2nd December 1995, G.Cosmo -// ---------- G4eIonisationPlus 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 in DoIt , L.urban -// -------------------------------------------------------------- - - -#include "G4eIonisationPlus.hh" -#include "G4EnergyLossTables.hh" -#include "G4ios.hh" -#include "G4UnitsTable.hh" - -// constructor and destructor - -G4eIonisationPlus::G4eIonisationPlus(const G4String& processName) - : G4eEnergyLossPlus(processName), - theMeanFreePathTable(NULL), - LowestKineticEnergy(1.*keV), - HighestKineticEnergy(100.*TeV), - TotBin(100) -{ } - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4eIonisationPlus::~G4eIonisationPlus() -{ - if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); - delete theMeanFreePathTable; - } - -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G4eIonisationPlus::SetPhysicsTableBining(G4double lowE, G4double highE, G4int nBins) -{ - LowestKineticEnergy = lowE; HighestKineticEnergy = highE; TotBin = nBins; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G4eIonisationPlus::BuildPhysicsTable(const G4ParticleDefinition& aParticleType) -// just call BuildLossTable+BuildLambdaTable -{ - - BuildLossTable(aParticleType) ; - - if(&aParticleType==G4Electron::Electron()) - { - RecorderOfElectronProcess[CounterOfElectronProcess] = (*this).theLossTable ; - CounterOfElectronProcess++; - } - else - { - RecorderOfPositronProcess[CounterOfPositronProcess] = (*this).theLossTable ; - CounterOfPositronProcess++; - } - - BuildLambdaTable(aParticleType) ; - - BuildDEDXTable(aParticleType) ; - - if(&aParticleType==G4Electron::Electron()) - PrintInfoDefinition(); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G4eIonisationPlus::BuildLossTable(const G4ParticleDefinition& aParticleType) -{ -// Build tables for the ionization energy loss -// the tables are built for *MATERIALS* - - const G4double twoln10 = 2.*log(10.); - const G4double Factor = twopi_mc2_rcl2; - - 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(); - - // now comes the loop for the kinetic energy values - - for (G4int i = 0 ; i < TotBin ; i++) - { - LowEdgeEnergy = aVector->GetLowEdgeEnergy(i) ; - 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.; - - aVector->PutValue(i,ionloss) ; - } - theLossTable->insert(aVector); - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G4eIonisationPlus::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(), - DeltaThreshold); - } - - // mean free path = 1./macroscopic cross section - Value = SIGMA > DBL_MIN ? 1./SIGMA : DBL_MAX; - aVector->PutValue(i, Value) ; - } - theMeanFreePathTable->insert(aVector); - } - -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4double G4eIonisationPlus::ComputeMicroscopicCrossSection( - const G4ParticleDefinition& aParticleType, - G4double KineticEnergy, - G4double AtomicNumber , - G4double DeltaThreshold) -{ - // calculates the microscopic cross section - //(it is called for elements , AtomicNumber = Z ) - - G4double MaxKineticEnergyTransfer, TotalCrossSection(0.); - - ParticleMass = aParticleType.GetPDGMass(); - G4double TotalEnergy = KineticEnergy + ParticleMass; - - G4double betasquare = KineticEnergy*(TotalEnergy+ParticleMass) - /(TotalEnergy*TotalEnergy); - G4double gamma = TotalEnergy/ParticleMass, gamma2 = gamma*gamma; - G4double x=DeltaThreshold/KineticEnergy, x2 = x*x; - - if (&aParticleType==G4Electron::Electron()) - MaxKineticEnergyTransfer = 0.5*KineticEnergy; - else MaxKineticEnergyTransfer = KineticEnergy; - - // now you can calculate the total cross section - - if (MaxKineticEnergyTransfer > DeltaThreshold) - { - if (&aParticleType==G4Electron::Electron()) //Moller (e-e-) scattering - { - TotalCrossSection = (gamma-1.)*(gamma-1.)*(0.5-x)/gamma2 + 1./x - - 1./(1.-x)-(2.*gamma-1.)*log((1.-x)/x)/gamma2; - TotalCrossSection /= betasquare; - } - else //Bhabha (e+e-) scattering - { - G4double y=1./(1.+gamma), y2 =y*y, y12=1.-2.*y; - G4double 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/KineticEnergy); - } - return TotalCrossSection ; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4VParticleChange* G4eIonisationPlus::PostStepDoIt( const G4Track& trackData, - const G4Step& stepData) -{ - aParticleChange.Initialize(trackData) ; - - G4Material* aMaterial = trackData.GetMaterial() ; - const G4DynamicParticle* aParticle = trackData.GetDynamicParticle() ; - - 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 - G4double* 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) // 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 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 G4VContinuousDiscreteProcess::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; - - 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 - { - finalKineticEnergy = 0.; - Edep = finalKineticEnergy ; - if (Charge < 0.) aParticleChange.SetStatusChange(fStopAndKill); - else aParticleChange.SetStatusChange(fStopButAlive); - } - - aParticleChange.SetEnergyChange( finalKineticEnergy ); - aParticleChange.SetNumberOfSecondaries(1); - aParticleChange.AddSecondary( theDeltaRay ); - aParticleChange.SetLocalEnergyDeposit (Edep); - - return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G4eIonisationPlus::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"; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/source/processes/electromagnetic/standard/src/G4eplusAnnihilation.cc b/source/processes/electromagnetic/standard/src/G4eplusAnnihilation.cc index 9cb6547d67..d54983a741 100644 --- a/source/processes/electromagnetic/standard/src/G4eplusAnnihilation.cc +++ b/source/processes/electromagnetic/standard/src/G4eplusAnnihilation.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4eplusAnnihilation.cc,v 1.1.10.1.2.1 1999/12/08 17:34:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4eplusAnnihilation.cc,v 1.2 1999/12/15 14:51:53 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/processes/electromagnetic/standard/src/G4hEnergyLossPlus.cc b/source/processes/electromagnetic/standard/src/G4hEnergyLossPlus.cc deleted file mode 100644 index fbe50f98ab..0000000000 --- a/source/processes/electromagnetic/standard/src/G4hEnergyLossPlus.cc +++ /dev/null @@ -1,1567 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4hEnergyLossPlus.cc,v 1.16.6.1.2.2 1999/12/10 15:42:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// $Id: -// ----------------------------------------------------------- -// GEANT 4 class implementation file -// -// For information related to this code contact: -// CERN, IT Division, ASD group -// History: based on object model of -// 2nd December 1995, G.Cosmo -// ---------- G4hEnergyLossPlus 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. -// ************************************************************** -// -// 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 -// -------------------------------------------------------------- - -#include "G4hEnergyLossPlus.hh" -#include "G4EnergyLossTables.hh" -#include "G4Poisson.hh" -#include "G4Navigator.hh" -#include "G4TransportationManager.hh" - -// Initialisation of static members ****************************************** -// contributing processes : ion.loss ->NumberOfProcesses 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 G4hEnergyLossPlus.hh) - -G4int G4hEnergyLossPlus::NumberOfProcesses = 1 ; - -G4int G4hEnergyLossPlus::CounterOfProcess = 0 ; -G4PhysicsTable** G4hEnergyLossPlus::RecorderOfProcess = - new G4PhysicsTable*[10] ; - -G4int G4hEnergyLossPlus::CounterOfpProcess = 0 ; -G4PhysicsTable** G4hEnergyLossPlus::RecorderOfpProcess = - new G4PhysicsTable*[10] ; - -G4int G4hEnergyLossPlus::CounterOfpbarProcess = 0 ; -G4PhysicsTable** G4hEnergyLossPlus::RecorderOfpbarProcess = - new G4PhysicsTable*[10] ; - -G4PhysicsTable* G4hEnergyLossPlus::theDEDXpTable = NULL ; -G4PhysicsTable* G4hEnergyLossPlus::theDEDXpbarTable = NULL ; -G4PhysicsTable* G4hEnergyLossPlus::theRangepTable = NULL ; -G4PhysicsTable* G4hEnergyLossPlus::theRangepbarTable = NULL ; -G4PhysicsTable* G4hEnergyLossPlus::theInverseRangepTable = NULL ; -G4PhysicsTable* G4hEnergyLossPlus::theInverseRangepbarTable = NULL ; -G4PhysicsTable* G4hEnergyLossPlus::theLabTimepTable = NULL ; -G4PhysicsTable* G4hEnergyLossPlus::theLabTimepbarTable = NULL ; -G4PhysicsTable* G4hEnergyLossPlus::theProperTimepTable = NULL ; -G4PhysicsTable* G4hEnergyLossPlus::theProperTimepbarTable = NULL ; - -G4PhysicsTable* G4hEnergyLossPlus::thepRangeCoeffATable = NULL ; -G4PhysicsTable* G4hEnergyLossPlus::thepRangeCoeffBTable = NULL ; -G4PhysicsTable* G4hEnergyLossPlus::thepRangeCoeffCTable = NULL ; -G4PhysicsTable* G4hEnergyLossPlus::thepbarRangeCoeffATable = NULL ; -G4PhysicsTable* G4hEnergyLossPlus::thepbarRangeCoeffBTable = NULL ; -G4PhysicsTable* G4hEnergyLossPlus::thepbarRangeCoeffCTable = NULL ; - -G4PhysicsTable* G4hEnergyLossPlus::theDEDXTable = NULL ; -G4PhysicsTable* G4hEnergyLossPlus::theRangeTable = NULL ; -G4PhysicsTable* G4hEnergyLossPlus::theInverseRangeTable = NULL ; -G4PhysicsTable* G4hEnergyLossPlus::theLabTimeTable = NULL ; -G4PhysicsTable* G4hEnergyLossPlus::theProperTimeTable = NULL ; - -G4PhysicsTable* G4hEnergyLossPlus::theRangeCoeffATable = NULL ; -G4PhysicsTable* G4hEnergyLossPlus::theRangeCoeffBTable = NULL ; -G4PhysicsTable* G4hEnergyLossPlus::theRangeCoeffCTable = NULL ; - -const G4Proton* G4hEnergyLossPlus::theProton=G4Proton::Proton() ; -const G4AntiProton* G4hEnergyLossPlus::theAntiProton=G4AntiProton::AntiProton() ; - -G4double G4hEnergyLossPlus::ParticleMass; -G4double G4hEnergyLossPlus::ptableElectronCutInRange = 0.0*mm ; -G4double G4hEnergyLossPlus::pbartableElectronCutInRange = 0.0*mm ; - -G4double G4hEnergyLossPlus::Mass, - G4hEnergyLossPlus::taulow, - G4hEnergyLossPlus::tauhigh, - G4hEnergyLossPlus::ltaulow, - G4hEnergyLossPlus::ltauhigh; - -G4double G4hEnergyLossPlus::dRoverRange = 0.20 ; -G4double G4hEnergyLossPlus::finalRange = 200.*micrometer ; - -G4double G4hEnergyLossPlus::c1lim = dRoverRange ; -G4double G4hEnergyLossPlus::c2lim = 2.*(1.-dRoverRange)*finalRange ; -G4double G4hEnergyLossPlus::c3lim = -(1.-dRoverRange)*finalRange*finalRange; - -G4double G4hEnergyLossPlus::MinDeltaCutInRange = 0.01*mm ; -G4double* G4hEnergyLossPlus::MinDeltaEnergy = NULL ; - -G4double G4hEnergyLossPlus::Charge ; - -G4bool G4hEnergyLossPlus::rndmStepFlag = false ; -G4bool G4hEnergyLossPlus::EnlossFlucFlag = true ; - -G4double G4hEnergyLossPlus::LowestKineticEnergy; -G4double G4hEnergyLossPlus::HighestKineticEnergy; -G4int G4hEnergyLossPlus::TotBin; -G4double G4hEnergyLossPlus::RTable,G4hEnergyLossPlus::LOGRTable; - -G4double G4hEnergyLossPlus::c0N = 9.0e-21*MeV*MeV*mm*mm ; -G4double G4hEnergyLossPlus::c1N = 25.0e-21*keV*mm*mm ; -G4double G4hEnergyLossPlus::c2N = 13.25e-21*keV*mm*mm ; -G4double G4hEnergyLossPlus::c3N = 0.500e-21*mm*mm ; -G4int G4hEnergyLossPlus::Ndeltamax = 100 ; - -// constructor and destructor - -G4hEnergyLossPlus::G4hEnergyLossPlus(const G4String& processName) - : G4VContinuousDiscreteProcess (processName), - theLossTable (NULL), - MinKineticEnergy(1.*eV), - linLossLimit(0.05), - lastMaterial (NULL), - MaxExcitationNumber (1.e6), - probLimFluct (0.01), - nmaxDirectFluct (100), - nmaxCont1(4), - nmaxCont2(16) -{ } - -G4hEnergyLossPlus::~G4hEnergyLossPlus() -{ - if(theLossTable) { - theLossTable->clearAndDestroy(); - delete theLossTable; - } - if(MinDeltaEnergy) delete MinDeltaEnergy ; -} - -void G4hEnergyLossPlus::BuildDEDXTable( - const G4ParticleDefinition& aParticleType) -{ - // calculate data members TotBin,LOGRTable,RTable first - G4double binning = dRoverRange; - G4double lrate = log(HighestKineticEnergy/LowestKineticEnergy); - G4int nbin = G4int(lrate/log(1.+binning) + 0.5 ); - 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 ; - - G4double ElectronCutInRange = G4Electron::Electron()->GetCuts(); - - // create/fill proton or antiproton tables depending on the charge - Charge = aParticleType.GetPDGCharge()/eplus; - ParticleMass = aParticleType.GetPDGMass() ; - - if (Charge>0.) {theDEDXTable= theDEDXpTable;} - else {theDEDXTable= theDEDXpbarTable;} - - if( - ((Charge>0.) && ((theDEDXTable==NULL) || - (ElectronCutInRange != ptableElectronCutInRange))) - || - ((Charge<0.) && ((theDEDXTable==NULL) || - (ElectronCutInRange != pbartableElectronCutInRange))) - ) - MakeTable = true ; - - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); - - if( MakeTable ) - { - - // 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 == NumberOfProcesses) - { - if(theDEDXpTable) - { theDEDXpTable->clearAndDestroy(); - delete theDEDXpTable; } - theDEDXpTable = new G4PhysicsTable(numOfMaterials); - theDEDXTable = theDEDXpTable; - ptableElectronCutInRange = ElectronCutInRange ; - } - } - else - { - RecorderOfProcess=RecorderOfpbarProcess; - CounterOfProcess=CounterOfpbarProcess; - - if(CounterOfProcess == NumberOfProcesses) - { - if(theDEDXpbarTable) - { theDEDXpbarTable->clearAndDestroy(); - delete theDEDXpbarTable; } - theDEDXpbarTable = new G4PhysicsTable(numOfMaterials); - theDEDXTable = theDEDXpbarTable; - pbartableElectronCutInRange = ElectronCutInRange ; - } - } - - 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); - - if(aParticleType.GetParticleName()=="proton") - { - // create array for the min. delta cuts in kinetic energy - G4cout << G4endl; - G4cout.precision(5) ; - G4cout << "hIoni+ Minimum Delta cut in range=" << MinDeltaCutInRange/mm - << " mm." << G4endl; - G4cout << " min. delta energies (keV) " << G4endl; - G4cout << " material min.delta energy " << G4endl; - G4cout << G4endl; - - if(MinDeltaEnergy) delete MinDeltaEnergy ; - MinDeltaEnergy = new G4double [numOfMaterials] ; - G4double Tlowerlimit = 1.*keV ; - for(G4int mat=0; matGetName() - << G4std::setw(15) << MinDeltaEnergy[mat]/keV << G4endl; - } - } -} - -void G4hEnergyLossPlus::BuildRangeTable( - const G4ParticleDefinition& aParticleType) -// Build range table from the energy loss table -{ - 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 G4hEnergyLossPlus::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 G4hEnergyLossPlus::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 G4hEnergyLossPlus::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 G4hEnergyLossPlus::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 G4hEnergyLossPlus::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(); - - 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 G4hEnergyLossPlus::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(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 G4hEnergyLossPlus::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(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 G4hEnergyLossPlus::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 G4hEnergyLossPlus::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 G4hEnergyLossPlus::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.... - - G4double KineticEnergy,StepLimit; - G4bool isOut ; - - 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) - { - 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 ; -} - -G4VParticleChange* G4hEnergyLossPlus::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() ; - - // get the actual (true) Step length from stepData - Step = stepData.GetStepLength() ; - - aParticle = trackData.GetDynamicParticle() ; - ChargeSquare = Charge*Charge ; - - G4int index = aMaterial->GetIndex() ; - E = aParticle->GetKineticEnergy() ; - - if(E < MinKineticEnergy) MeanLoss = E ; - else - { - if(Step >= fRangeNow ) MeanLoss = E ; - - else if(( E > HighestKineticEnergy)||( E <= LowestKineticEnergy)) - MeanLoss = Step*fdEdx ; - - else - { - if(Step>linLossLimit*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 ; - - // subcutoff delta ray production start - G4double MinDeltaEnergyNow,Tc,TmintoProduceDelta,w,ww ; - G4double rcut,T0,presafety,postsafety,safety, - delta,fragment,Tmax,mass ; - G4double frperstep,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) ; - - 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()->GetCuts(); - - 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(T0GetTotNbOfElectPerVolume())+0.5) ; - - G4double Px,Py,Pz ; - G4ThreeVector ParticleDirection ; - ParticleDirection=stepData.GetPostStepPoint()-> - 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,delToverTc, - delTkin,delLoss,rate, - urandom ; - 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.)) - { - 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.; - - 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-> - SetTouchable(stepData.GetPostStepPoint()->GetTouchable()) ; - - deltaTrack->SetParentID(trackData.GetTrackID()) ; - - aParticleChange.AddSecondary(deltaTrack) ; - - } - - } while (subdelta 0) - aParticleChange.SetMomentumChange(Px,Py,Pz) ; - E = Tkin ; - } - } - } - } - } - - finalT = E - MeanLoss ; - if(finalT < MinKineticEnergy) finalT = 0. ; - - // now the loss with fluctuation - if((EnlossFlucFlag) && (finalT > 0.) && (finalT < E)&&(E > LowestKineticEnergy)) - { - MeanLoss /= ChargeSquare ; - finalT = E-GetLossWithFluct(aParticle,aMaterial,MeanLoss)*ChargeSquare ; - if (finalT < 0.) finalT = E-MeanLoss ; - } - - // 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 ; -} - - -G4double G4hEnergyLossPlus::GetLossWithFluct(const G4DynamicParticle* aParticle, - G4Material* aMaterial, - G4double MeanLoss) -// calculate actual loss from the mean loss -// The model used to get the fluctuation is the same as in Glandz in Geant3. -{ - static const G4double Tlow=10.*keV ; - - // 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,w3,lnw3,C,prob, - beta2,suma,e0,Em,loss,lossc ,w; - G4double a1,a2,a3; - G4long p1,p2,p3; - G4int nb; - G4double Corrfac, na,alfa,rfac,namean,sa,alfa1,ea,sea; - G4double dp1,dnmaxDirectFluct,dp3,dnmaxCont2; - G4double siga ; - static const G4double alim=10.; - - // get particle data - G4double Tkin = aParticle->GetKineticEnergy(); - 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) - -ipotFluct; - if (Tm < 0.) Tm = 0.; - else if (Tm > threshold) Tm = threshold; - - w1 = Tm+ipotFluct; - w2 = w1/ipotFluct; - w3 = 2.*electron_mass_c2*tau2; - lnw3 = log(w3); - beta2 = tau2/(tau1*tau1); - - C = (1.-rateFluct)*MeanLoss/(lnw3-ipotLogFluct-beta2); - - a1 = C*f1Fluct*(lnw3-e1LogFluct-beta2)/e1Fluct; - a2 = C*f2Fluct*(lnw3-e2LogFluct-beta2)/e2Fluct; - if (Tm > 0.) a3 = rateFluct*MeanLoss*Tm/(ipotFluct*w1*log(w2)); - else { a1 /= rateFluct; a2 /= rateFluct; a3 = 0.;} - suma = a1+a2+a3; - - //no fluctuation if the loss is too big - if (suma > MaxExcitationNumber) return MeanLoss; - - suma<50.? prob = exp(-suma) : prob = 0.; - - if (prob > probLimFluct) // very small Step - { - e0 = aMaterial->GetIonisation()->GetEnergy0fluct(); - if (Tm <= 0.) - { - a1 = MeanLoss/e0; - if(a1>alim) - { - siga=sqrt(a1) ; - p1 = G4std::max(0,int(RandGauss::shoot(a1,siga)+0.5)); - } - else - p1 = G4Poisson(a1); - loss = p1*e0 ; - } - else - { - Em = Tm+e0; - a1 = MeanLoss*(Em-e0)/(Em*e0*log(Em/e0)); - if(a1>alim) - { - siga=sqrt(a1) ; - p1 = G4std::max(0,int(RandGauss::shoot(a1,siga)+0.5)); - } - else - p1 = G4Poisson(a1); - w = (Em-e0)/Em; - // just to save time - if (p1 > nmaxDirectFluct) - { - dp1 = p1; - dnmaxDirectFluct=nmaxDirectFluct; - - Corrfac = dp1/dnmaxDirectFluct; - p1 = nmaxDirectFluct; - } - else Corrfac = 1.; - - loss = 0.; - for (long i=0; ialim) - { - siga=sqrt(a1) ; - p1 = G4std::max(0,int(RandGauss::shoot(a1,siga)+0.5)); - } - else - p1 = G4Poisson(a1); - if(a2>alim) - { - siga=sqrt(a2) ; - p2 = G4std::max(0,int(RandGauss::shoot(a2,siga)+0.5)); - } - else - p2 = G4Poisson(a2); - loss = p1*e1Fluct+p2*e2Fluct; - if (loss>0.) loss += (1.-2.*G4UniformRand())*e1Fluct; - if(a3>alim) - { - siga=sqrt(a3) ; - p3 = G4std::max(0,int(RandGauss::shoot(a3,siga)+0.5)); - } - else - p3 = G4Poisson(a3); - - lossc = 0.; na = 0.; alfa = 1.; - if (p3 > nmaxCont2) - { - dp3 = p3; - dnmaxCont2 = nmaxCont2; - rfac = dp3/(dnmaxCont2+dp3); - namean = p3*rfac; - - sa = nmaxCont1*rfac; - na = RandGauss::shoot(namean,sa); - if (na > 0.) - { - alfa = w2*(nmaxCont2+p3)/(w2*nmaxCont2+p3); - alfa1 = alfa*log(alfa)/(alfa-1.); - ea = na*ipotFluct*alfa1; - sea = ipotFluct*sqrt(na*(alfa-alfa1*alfa1)); - lossc += RandGauss::shoot(ea,sea); - } - } - - nb = G4int(p3-na); - if (nb > 0) - { - w2 = alfa*ipotFluct; - w = (w1-w2)/w1; - for (G4int k=0; kGetLowEdgeEnergy(i) ; @@ -450,7 +450,8 @@ G4VParticleChange* G4hIonisation::PostStepDoIt( G4ParticleMomentum ParticleDirection = aParticle->GetMomentumDirection() ; // get kinetic energy cut for the electron.... - DeltaCutInKineticEnergyNow = DeltaCutInKineticEnergy[aMaterial->GetIndex()]; + DeltaCutInKineticEnergyNow = + G4std::max(DeltaCutInKineticEnergy[aMaterial->GetIndex()],Tmincut); // some kinematics...................... diff --git a/source/processes/electromagnetic/standard/src/G4hIonisationPlus.cc b/source/processes/electromagnetic/standard/src/G4hIonisationPlus.cc deleted file mode 100644 index 320c4da94e..0000000000 --- a/source/processes/electromagnetic/standard/src/G4hIonisationPlus.cc +++ /dev/null @@ -1,574 +0,0 @@ -// This code implementation is the intellectual property of -// the GEANT4 collaboration. -// -// By copying, distributing or modifying the Program (or any work -// based on the Program) you indicate your acceptance of this statement, -// and all its terms. -// -// $Id: G4hIonisationPlus.cc,v 1.3.8.1.2.1 1999/12/08 17:34:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ -// -// ------------------------------------------------------------- -// GEANT 4 class implementation file -// -// For information related to this code contact: -// CERN, IT Division, ASD group -// History: based on object model of -// 2nd December 1995, G.Cosmo -// ---------- G4hIonisationPlus 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 -// -------------------------------------------------------------- - - -#include "G4hIonisationPlus.hh" -#include "G4UnitsTable.hh" - -// constructor and destructor - -G4hIonisationPlus::G4hIonisationPlus(const G4String& processName) - : G4hEnergyLossPlus(processName), - theMeanFreePathTable(NULL), - theProton (G4Proton::Proton()), - theAntiProton (G4AntiProton::AntiProton()), - theElectron ( G4Electron::Electron() ) -{ } - -G4hIonisationPlus::~G4hIonisationPlus() -{ - if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); - delete theMeanFreePathTable; - } -} - -void G4hIonisationPlus::SetPhysicsTableBining(G4double lowE, G4double highE, - G4int nBins) -{ - LowestKineticEnergy = lowE; HighestKineticEnergy = highE; - TotBin = nBins ; -} - -// methods............................................. - -void G4hIonisationPlus::BuildPhysicsTable(const G4ParticleDefinition& aParticleType) -// just call BuildLossTable+BuildLambdaTable -{ - if(&aParticleType == G4Proton::Proton()) - { - LowestKineticEnergy= 1.00*keV; - HighestKineticEnergy= 100.*TeV; - TotBin=100 ; - } - - ParticleMass = aParticleType.GetPDGMass() ; - - Charge = aParticleType.GetPDGCharge(); - - G4double ElectronCutInRange = G4Electron::Electron()->GetCuts(); - - DeltaCutInKineticEnergy = theElectron->GetCutsInEnergy() ; - - if(Charge>0.) - { - if( (ptableElectronCutInRange != ElectronCutInRange) - || (theDEDXpTable == NULL)) - { - BuildLossTable(aParticleType) ; - RecorderOfpProcess[CounterOfpProcess] = theLossTable ; - CounterOfpProcess++; - } - } - else - { - if( (pbartableElectronCutInRange != ElectronCutInRange) - || (theDEDXpbarTable == NULL)) - { - BuildLossTable(aParticleType) ; - RecorderOfpbarProcess[CounterOfpbarProcess] = theLossTable ; - CounterOfpbarProcess++; - } - } - - BuildLambdaTable(aParticleType) ; - - BuildDEDXTable(aParticleType) ; - - if(&aParticleType == G4Proton::Proton()) - PrintInfoDefinition(); - -} - -void G4hIonisationPlus::BuildLossTable(const G4ParticleDefinition& aParticleType) -{ - // cuts for electron .................... - 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 ; - - // 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) ; - - } - theLossTable->insert(aVector); - } - -} - -void G4hIonisationPlus::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() ; - - // 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 ? DBL_MAX : 1./sigma ; - - aVector->PutValue(i, Value) ; - } - - - theMeanFreePathTable->insert(aVector); - } -} - - -G4double G4hIonisationPlus::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() == 0.5) - { - TotalCrossSection += 0.5 - *(MaxKineticEnergyTransfer-DeltaCutInKineticEnergyNow) - /(TotalEnergy*TotalEnergy); - G4double Section = 0.5 - *(MaxKineticEnergyTransfer-DeltaCutInKineticEnergyNow) - /(TotalEnergy*TotalEnergy); - } - TotalCrossSection = twopi_mc2_rcl2 * AtomicNumber - *TotalCrossSection/betasquare; - } - else - TotalCrossSection= 0. ; - - return TotalCrossSection ; -} - - - -G4VParticleChange* G4hIonisationPlus::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 = 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 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 ); - } - - 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); -} - -void G4hIonisationPlus::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/standard/src/G4ionIonisation.cc b/source/processes/electromagnetic/standard/src/G4ionIonisation.cc index 1a4b6abd46..0f4b640488 100644 --- a/source/processes/electromagnetic/standard/src/G4ionIonisation.cc +++ b/source/processes/electromagnetic/standard/src/G4ionIonisation.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ionIonisation.cc,v 1.3.8.1.2.1 1999/12/08 17:34:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ionIonisation.cc,v 1.4 1999/12/15 14:51:54 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------- // GEANT 4 class implementation file diff --git a/source/processes/electromagnetic/utils/History b/source/processes/electromagnetic/utils/History new file mode 100644 index 0000000000..f85a530912 --- /dev/null +++ b/source/processes/electromagnetic/utils/History @@ -0,0 +1,51 @@ +$Id: History,v 1.1 2000/05/24 15:36:10 maire 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 * + ---------------------------------------------------------- + +24 may 00: mma (utils-V01-01-02) +- merge "plus" processes into standard + +27 apr 00 mma (em-V01-01-01) +- G4endl (dec/iso) + +26 apr 00 mma (em-V01-01-00) +- all EnergyLoss classes renamed G4V... + Most classes in standard and muons affected. +- G4Muls moved in utils +- bugs fixe in MuPairProduction +- cowork with geant4-01-01-ref-02 + +02 mar 00 mma (em-V01-00-00) +- new G4VEnergyLoss class and related structure +- cowork with geant4-01-00-ref-06 + +10 nov 99 mma (em-V00-01-03) +- migration to STL: remove RWT hash dictionnary + +14th June 1999 John Allison (em-01-00-05b) +- Muon corrections in G4MultipleScattering.cc, G4MuBremsstrahlung.cc + and G4MuPairProduction.cc by Laszlo Urban, Pedro Arce. + (Also in rocesses/photoleplon_hadron/src/G4MuNuclearInteraction.cc.) + +5th June 1999 John Allison +- standard/GNUmakefile: Force non-optimised compliation of some + files on HP with aCC: HP ANSI C++ B3910B A.01.15. + +May 29, 1999: John Allison +- Added electromagnetic/lowenergy to GNUmakefile and + electromagnetic/GNUmakefile.. diff --git a/source/processes/electromagnetic/utils/include/G4EnergyLossTables.hh b/source/processes/electromagnetic/utils/include/G4EnergyLossTables.hh index d5cdbd7337..01d583a731 100644 --- a/source/processes/electromagnetic/utils/include/G4EnergyLossTables.hh +++ b/source/processes/electromagnetic/utils/include/G4EnergyLossTables.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4EnergyLossTables.hh,v 1.8.2.1.2.1 1999/12/09 10:28:49 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4EnergyLossTables.hh,v 1.9 1999/12/15 14:52:01 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // diff --git a/source/processes/electromagnetic/utils/include/G4EnergyLossTables.icc b/source/processes/electromagnetic/utils/include/G4EnergyLossTables.icc index e9cc90d00a..ac87607ff7 100644 --- a/source/processes/electromagnetic/utils/include/G4EnergyLossTables.icc +++ b/source/processes/electromagnetic/utils/include/G4EnergyLossTables.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4EnergyLossTables.icc,v 1.7.2.1 1999/12/07 20:51:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4EnergyLossTables.icc,v 1.11 2000/05/23 14:24:47 urban Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // Inline members of the G4EnergyLossTables class @@ -138,7 +138,8 @@ inline G4double G4EnergyLossTables::GetDEDX( if (scaledKineticEnergyGetValue( - t.theLowestKineticEnergy,isOut); + t.theLowestKineticEnergy,isOut) + *sqrt(scaledKineticEnergy/t.theLowestKineticEnergy); } else if (scaledKineticEnergy>t.theHighestKineticEnergy) { @@ -417,7 +418,7 @@ inline G4double G4EnergyLossTables::GetRange( if (scaledKineticEnergyGetValue( t.theLowestKineticEnergy,isOut); @@ -454,6 +455,7 @@ inline G4double G4EnergyLossTables::GetPreciseEnergyFromRange( Chargesquare = (aParticle->GetPDGCharge())* (aParticle->GetPDGCharge())/ QQPositron ; + oldIndex = -1 ; } const G4PhysicsTable* rangeTable= t.theRangeTable; const G4PhysicsTable* dEdxTable= t.theDEDXTable; @@ -480,7 +482,7 @@ inline G4double G4EnergyLossTables::GetPreciseEnergyFromRange( if(scaledrange < rmin) { scaledKineticEnergy = t.theLowestKineticEnergy* - scaledrange/rmin ; + scaledrange*scaledrange/(rmin*rmin) ; } else { diff --git a/source/processes/electromagnetic/standard/include/G4IMultipleScattering.hh b/source/processes/electromagnetic/utils/include/G4IMultipleScattering.hh similarity index 97% rename from source/processes/electromagnetic/standard/include/G4IMultipleScattering.hh rename to source/processes/electromagnetic/utils/include/G4IMultipleScattering.hh index 862b19f071..2807eec4b4 100644 --- a/source/processes/electromagnetic/standard/include/G4IMultipleScattering.hh +++ b/source/processes/electromagnetic/utils/include/G4IMultipleScattering.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IMultipleScattering.hh,v 1.1.10.1.2.2 1999/12/14 07:08:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IMultipleScattering.hh,v 1.1 2000/03/20 14:44:03 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // -------------------------------------------------------------- diff --git a/source/processes/electromagnetic/standard/include/G4IMultipleScattering.icc b/source/processes/electromagnetic/utils/include/G4IMultipleScattering.icc similarity index 98% rename from source/processes/electromagnetic/standard/include/G4IMultipleScattering.icc rename to source/processes/electromagnetic/utils/include/G4IMultipleScattering.icc index c5b9f358ed..e7cc67313a 100644 --- a/source/processes/electromagnetic/standard/include/G4IMultipleScattering.icc +++ b/source/processes/electromagnetic/utils/include/G4IMultipleScattering.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IMultipleScattering.icc,v 1.1.10.1 1999/12/07 20:50:48 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IMultipleScattering.icc,v 1.1 2000/03/20 14:44:03 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // ------------------------------------------------------------- diff --git a/source/processes/electromagnetic/standard/include/G4MultipleScattering.hh b/source/processes/electromagnetic/utils/include/G4MultipleScattering.hh similarity index 97% rename from source/processes/electromagnetic/standard/include/G4MultipleScattering.hh rename to source/processes/electromagnetic/utils/include/G4MultipleScattering.hh index addff1cb20..0d297372ca 100644 --- a/source/processes/electromagnetic/standard/include/G4MultipleScattering.hh +++ b/source/processes/electromagnetic/utils/include/G4MultipleScattering.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MultipleScattering.hh,v 1.6.6.1 1999/12/07 20:50:50 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MultipleScattering.hh,v 1.1 2000/03/20 14:44:04 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // -------------------------------------------------------------- diff --git a/source/processes/electromagnetic/standard/include/G4MultipleScattering.icc b/source/processes/electromagnetic/utils/include/G4MultipleScattering.icc similarity index 95% rename from source/processes/electromagnetic/standard/include/G4MultipleScattering.icc rename to source/processes/electromagnetic/utils/include/G4MultipleScattering.icc index 95c3b56771..a8000bf60b 100644 --- a/source/processes/electromagnetic/standard/include/G4MultipleScattering.icc +++ b/source/processes/electromagnetic/utils/include/G4MultipleScattering.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MultipleScattering.icc,v 1.5.6.1 1999/12/07 20:50:50 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MultipleScattering.icc,v 1.2 2000/03/24 08:08:08 urban Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // ------------------------------------------------------------- @@ -119,6 +119,7 @@ inline G4VParticleChange* G4MultipleScattering::AlongStepDoIt( const G4Track& track,const G4Step& Step) // only a geom path->true path transformation is performed { + static const G4double tfacmx = 10. ; G4double tau,geomPathLength, truePathLength ; fParticleChange.Initialize(track); @@ -138,8 +139,10 @@ inline G4VParticleChange* G4MultipleScattering::AlongStepDoIt( tau = geomPathLength/fTransportMeanFreePath ; if(tau last step for the particle. + + + 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); + + + // 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 + static G4double c1lim,c2lim,c3lim ; // coeffs for computing steplimit + + 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 + + +}; + +#endif + + + diff --git a/source/processes/electromagnetic/utils/src/G4EnergyLossTables.cc b/source/processes/electromagnetic/utils/src/G4EnergyLossTables.cc index 3fa1e2692e..68bacd2d85 100644 --- a/source/processes/electromagnetic/utils/src/G4EnergyLossTables.cc +++ b/source/processes/electromagnetic/utils/src/G4EnergyLossTables.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4EnergyLossTables.cc,v 1.9.2.1 1999/12/07 20:51:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4EnergyLossTables.cc,v 1.12 2000/05/23 14:25:26 urban Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // first version created by P.Urban , 06/04/1998 @@ -80,7 +80,8 @@ void G4EnergyLossTables::Register( if (scaledKineticEnergyGetValue( + dEdx = sqrt(scaledKineticEnergy/t.theLowestKineticEnergy) + *(*dEdxTable)(materialIndex)->GetValue( t.theLowestKineticEnergy,isOut); } else if (scaledKineticEnergy>t.theHighestKineticEnergy) { @@ -128,7 +129,7 @@ void G4EnergyLossTables::Register( if (scaledKineticEnergyGetValue( t.theLowestKineticEnergy,isOut); diff --git a/source/processes/electromagnetic/standard/src/G4IMultipleScattering.cc b/source/processes/electromagnetic/utils/src/G4IMultipleScattering.cc similarity index 99% rename from source/processes/electromagnetic/standard/src/G4IMultipleScattering.cc rename to source/processes/electromagnetic/utils/src/G4IMultipleScattering.cc index b13a91f1f3..c3184b8557 100644 --- a/source/processes/electromagnetic/standard/src/G4IMultipleScattering.cc +++ b/source/processes/electromagnetic/utils/src/G4IMultipleScattering.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IMultipleScattering.cc,v 1.2.8.1.2.1 1999/12/08 17:34:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IMultipleScattering.cc,v 1.1 2000/03/20 14:44:04 maire Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // -------------------------------------------------------------- diff --git a/source/processes/electromagnetic/standard/src/G4MultipleScattering.cc b/source/processes/electromagnetic/utils/src/G4MultipleScattering.cc similarity index 98% rename from source/processes/electromagnetic/standard/src/G4MultipleScattering.cc rename to source/processes/electromagnetic/utils/src/G4MultipleScattering.cc index 37ae2c6ea4..345d155576 100644 --- a/source/processes/electromagnetic/standard/src/G4MultipleScattering.cc +++ b/source/processes/electromagnetic/utils/src/G4MultipleScattering.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MultipleScattering.cc,v 1.16.6.1.2.1 1999/12/08 17:34:24 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MultipleScattering.cc,v 1.3 2000/03/24 08:12:26 urban Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // -------------------------------------------------------------- @@ -24,6 +24,7 @@ // 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 // -------------------------------------------------------------- #include "G4MultipleScattering.hh" @@ -51,7 +52,7 @@ Tlimit(0.*keV), scatteringparameter(0.9), tuning (1.00), - cpar (1.5), + cpar (-0.35), NuclCorrPar (0.0615),FactPar(0.40), fLatDisplFlag(true) { } @@ -455,8 +456,10 @@ tau = truestep/range ; if(tau < taulim) prob = exp(-(alpha1-1.)*tau)*(1.+scatteringparameter*tau) ; - else + else if(tau < 1.) prob = exp((alpha1-1.)*log(1.-tau))*(1.+scatteringparameter*tau) ; + else + prob = 0. ; } if(G4UniformRand()length(); + + if(theRangeTable) + { theRangeTable->clearAndDestroy(); + delete theRangeTable; } + theRangeTable = new G4PhysicsTable(numOfMaterials); + + // loop for materials + + for (G4int J=0; Jinsert(aVector); + } + return theRangeTable ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4VEnergyLoss::BuildRangeVector(G4PhysicsTable* theDEDXTable, + G4double LowestKineticEnergy,G4double HighestKineticEnergy,G4int TotBin, + G4int materialIndex,G4PhysicsLogVector* rangeVector) +// create range vector for a material +{ + G4int nbin=100,i; + G4bool isOut; + + // ?????????????????????????????????? + static const G4double small = 1.e-6 ; + + static 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 ; + G4double loss1,loss2,ca,cb,cba ; + G4double losslim,clim ; + G4double taulim,rangelim,ltaulim,ltaumax, + LowEdgeEnergy,tau,Value,tau1,sqtau1 ; + G4double oldValue,tauold ; + + G4PhysicsVector* physicsVector= (*theDEDXTable)[materialIndex]; + const G4MaterialTable* theMaterialTable = + G4Material::GetMaterialTable() ; + + // cure 'accidental' 0. dE/dx vales first ..... + G4double lossmin = +1.e10 ; + for (G4int i1=0; i1GetLowEdgeEnergy(i1) ; + Value = physicsVector->GetValue(LowEdgeEnergy,isOut); + if((Value < lossmin)&&(Value > 0.)) + lossmin = Value ; + } + for (G4int i2=0; i2GetLowEdgeEnergy(i2) ; + Value = physicsVector->GetValue(LowEdgeEnergy,isOut); + if(Value < lossmin) + physicsVector->PutValue(i2,small*lossmin) ; + } + + // low energy part first... + // heavy particle + if(ParticleMass > masslimit) + { + 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) ; + + i=-1; + oldValue = 0. ; + + 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) + { + 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) ; + } + else + // electron/positron + { + losslim = physicsVector->GetValue(tlime,isOut) ; + + taulim = tlime/electron_mass_c2; + clim = losslim; + ltaulim = log(taulim); + ltaumax = log(HighestKineticEnergy/electron_mass_c2); + + i=-1; + oldValue = 0.; + + do + { + i += 1 ; + LowEdgeEnergy = rangeVector->GetLowEdgeEnergy(i); + tau = LowEdgeEnergy/electron_mass_c2; + if (tau <= taulim) Value = factor*sqrt(tau*taulim)/clim; + else { + rangelim = factor*taulim/losslim ; + ltaulow = log(taulim); + ltauhigh = log(tau); + Value = rangelim+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); + Value = oldValue+RangeIntLog(physicsVector,nbin); + rangeVector->PutValue(j,Value); + oldValue = Value ; + + tauold = tau ; + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4double G4VEnergyLoss::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(ilength(); + + if(theLabTimeTable) + { theLabTimeTable->clearAndDestroy(); + delete theLabTimeTable; } + theLabTimeTable = new G4PhysicsTable(numOfMaterials); + + + for (G4int J=0; Jinsert(aVector); + + + } + return theLabTimeTable ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4PhysicsTable* G4VEnergyLoss::BuildProperTimeTable(G4PhysicsTable* theDEDXTable, + G4PhysicsTable* theProperTimeTable, + G4double LowestKineticEnergy, + G4double HighestKineticEnergy,G4int TotBin) + +{ + const G4MaterialTable* theMaterialTable= + G4Material::GetMaterialTable(); + G4int numOfMaterials = theMaterialTable->length(); + + if(theProperTimeTable) + { theProperTimeTable->clearAndDestroy(); + delete theProperTimeTable; } + theProperTimeTable = new G4PhysicsTable(numOfMaterials); + + + for (G4int J=0; Jinsert(aVector); + + + } + return theProperTimeTable ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4VEnergyLoss::BuildLabTimeVector(G4PhysicsTable* theDEDXTable, + G4double LowestKineticEnergy, + G4double HighestKineticEnergy,G4int TotBin, + 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 ; + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4VEnergyLoss::BuildProperTimeVector(G4PhysicsTable* theDEDXTable, + G4double LowestKineticEnergy, + G4double HighestKineticEnergy,G4int TotBin, + 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 ; + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4double G4VEnergyLoss::LabTimeIntLog(G4PhysicsVector* physicsVector, + G4int nbin) +// num. integration, logarithmic binning +{ + G4double ltt,dltau,Value,ui,taui,ti,lossi,ci; + G4bool isOut; + ltt = ltauhigh-ltaulow; + dltau = ltt/nbin; + Value = 0.; + + for (G4int i=0; i<=nbin; i++) + { + ui = ltaulow+dltau*i; + taui = exp(ui); + 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(ilength(); + + if(theInverseRangeTable) + { theInverseRangeTable->clearAndDestroy(); + delete theInverseRangeTable; } + theInverseRangeTable = new G4PhysicsTable(numOfMaterials); + + // 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(theRangeTable, + theRangeCoeffATable, + theRangeCoeffBTable, + theRangeCoeffCTable, + LowestKineticEnergy,HighestKineticEnergy,TotBin,J, aVector); + + theInverseRangeTable->insert(aVector); + } + return theInverseRangeTable ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4VEnergyLoss::InvertRangeVector(G4PhysicsTable* theRangeTable, + G4PhysicsTable* theRangeCoeffATable, + G4PhysicsTable* theRangeCoeffBTable, + G4PhysicsTable* theRangeCoeffCTable, + G4double LowestKineticEnergy, + G4double HighestKineticEnergy,G4int TotBin, + G4int materialIndex,G4PhysicsLogVector* aVector) +// invert range vector for a material +{ + G4double LowEdgeRange,A,B,C,discr,KineticEnergy ; + G4double RTable = exp(log(HighestKineticEnergy/LowestKineticEnergy)/TotBin) ; + 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) ; + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4PhysicsTable* G4VEnergyLoss::BuildRangeCoeffATable(G4PhysicsTable* theRangeTable, + G4PhysicsTable* theRangeCoeffATable, + G4double LowestKineticEnergy, + G4double HighestKineticEnergy,G4int TotBin) +// Build tables of coefficients for the energy loss calculation +// create table for coefficients "A" +{ + const G4MaterialTable* theMaterialTable= + G4Material::GetMaterialTable(); + G4int numOfMaterials = theMaterialTable->length(); + + if(theRangeCoeffATable) + { theRangeCoeffATable->clearAndDestroy(); + delete theRangeCoeffATable; } + theRangeCoeffATable = new G4PhysicsTable(numOfMaterials); + + G4double RTable = exp(log(HighestKineticEnergy/LowestKineticEnergy)/TotBin) ; + 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); + } + return theRangeCoeffATable ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4PhysicsTable* G4VEnergyLoss::BuildRangeCoeffBTable(G4PhysicsTable* theRangeTable, + G4PhysicsTable* theRangeCoeffBTable, + G4double LowestKineticEnergy, + G4double HighestKineticEnergy,G4int TotBin) +// Build tables of coefficients for the energy loss calculation +// create table for coefficients "B" +{ + const G4MaterialTable* theMaterialTable= + G4Material::GetMaterialTable(); + G4int numOfMaterials = theMaterialTable->length(); + + if(theRangeCoeffBTable) + { theRangeCoeffBTable->clearAndDestroy(); + delete theRangeCoeffBTable; } + theRangeCoeffBTable = new G4PhysicsTable(numOfMaterials); + + G4double RTable = exp(log(HighestKineticEnergy/LowestKineticEnergy)/TotBin) ; + 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); + } + return theRangeCoeffBTable ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4PhysicsTable* G4VEnergyLoss::BuildRangeCoeffCTable(G4PhysicsTable* theRangeTable, + G4PhysicsTable* theRangeCoeffCTable, + G4double LowestKineticEnergy, + G4double HighestKineticEnergy,G4int TotBin) +// Build tables of coefficients for the energy loss calculation +// create table for coefficients "C" +{ + const G4MaterialTable* theMaterialTable= + G4Material::GetMaterialTable(); + G4int numOfMaterials = theMaterialTable->length(); + + if(theRangeCoeffCTable) + { theRangeCoeffCTable->clearAndDestroy(); + delete theRangeCoeffCTable; } + theRangeCoeffCTable = new G4PhysicsTable(numOfMaterials); + + G4double RTable = exp(log(HighestKineticEnergy/LowestKineticEnergy)/TotBin) ; + 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); + } + return theRangeCoeffCTable ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4double G4VEnergyLoss::GetLossWithFluct(const G4DynamicParticle* aParticle, + G4Material* aMaterial, + G4double MeanLoss) +// 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. ; + + + // 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; + 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) + { + siga = sqrt(MeanLoss*Tm*(1.-0.5*beta2)) ; + loss = RandGauss::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(RandGauss::shoot(a3,siga)+0.5)); + } + else + 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(RandGauss::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(RandGauss::shoot(a1,siga)+0.5)); + } + else + p1 = G4Poisson(a1); + + // excitation type 2 + if(a2>alim) + { + siga=sqrt(a2) ; + p2 = G4std::max(0,int(RandGauss::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(RandGauss::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 = RandGauss::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 += RandGauss::shoot(ea,sea); + } + } + + nb = G4int(G4float(p3)-na); + if (nb > 0) + { + w2 = alfa*ipotFluct; + w = (Tm-w2)/Tm; + for (G4int k=0; kGetN()<1.1) && + ( aPart->GetKineticEnergy()/aPart->GetDefinition()->GetBaryonNumber()<20*GeV&& + aPart->GetDefinition()->GetBaryonNumber()>4) + ) result = true; + return result; + } + + virtual + G4double GetCrossSection(const G4DynamicParticle* aPart, const G4Element*anEle) + { + G4ProtonInelasticCrossSection theForward; + G4double result = theForward.GetCrossSection(aPart->GetKineticEnergy(), + aPart->GetDefinition()->GetBaryonNumber(), + aPart->GetDefinition()->GetPDGCharge()); + return result; + } + + virtual + void BuildPhysicsTable(const G4ParticleDefinition&) + {} + + virtual + void DumpPhysicsTable(const G4ParticleDefinition&) + {G4cout << "G4IonProtonCrossSection: uses formula"<GetDefinition()->GetBaryonNumber()>2.5) && + ( aPart->GetKineticEnergy()/aPart->GetDefinition()->GetBaryonNumber()<1*GeV) ) result = true; + return result; + } + + virtual + G4double GetCrossSection(const G4DynamicParticle*, const G4Element*); + + virtual + void BuildPhysicsTable(const G4ParticleDefinition&) + {} + + virtual + void DumpPhysicsTable(const G4ParticleDefinition&) + {G4cout << "G4TripathiCrossSection: uses formula"<GetN(); G4double nOfProtons = anEle->GetZ(); + return GetCrossSection(aPart->GetKineticEnergy(), atomicNumber, nOfProtons); + } + + G4double G4ProtonInelasticCrossSection:: + GetCrossSection(G4double kineticEnergy, G4double atomicNumber, G4double nOfProtons) + { G4double nOfNeutrons = atomicNumber-nOfProtons; - G4double kineticEnergy = aPart->GetKineticEnergy()/GeV; + kineticEnergy /=GeV; G4double a = atomicNumber; const G4double nuleonRadius=1.36E-15; const G4double pi=3.14159265; diff --git a/source/processes/hadronic/cross_sections/src/G4TripathiCrossSection.cc b/source/processes/hadronic/cross_sections/src/G4TripathiCrossSection.cc new file mode 100644 index 0000000000..2fcd0c87e7 --- /dev/null +++ b/source/processes/hadronic/cross_sections/src/G4TripathiCrossSection.cc @@ -0,0 +1,76 @@ +// Implementation of formulas in analogy to NASA technical paper 3621 by Tripathi, et al. + +#include "G4TripathiCrossSection.hh" +#include "G4ParticleTable.hh" +#include "G4IonTable.hh" + +G4double G4TripathiCrossSection:: +GetCrossSection(const G4DynamicParticle* aPart, const G4Element*anEle) +{ + G4double result = 0; + + const G4double targetAtomicNumber = anEle->GetN(); + 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; + + // needs target mass + G4double targetMass = G4ParticleTable::GetParticleTable() + ->GetIonTable() + ->GetIonMass(nTargetProtons, targetAtomicNumber); + G4LorentzVector pTarget(0,0,0,targetMass); + G4LorentzVector pProjectile(aPart->Get4Momentum()); + pTarget = pTarget+pProjectile; + G4double E_cm = (pTarget.mag()-targetMass-pProjectile.m())/MeV; + + // done + G4double r_rms_p = 0.6 * myNuleonRadius * pow(projectileAtomicNumber, 1./3.); + G4double r_rms_t = 0.6 * myNuleonRadius * pow(targetAtomicNumber, 1./3.); + + // done + G4double r_p = 1.29*r_rms_p/nuleonRadius ; + G4double r_t = 1.29*r_rms_t/nuleonRadius; + + // done + G4double Radius = r_p + r_t + + 1.2*(pow(targetAtomicNumber, 1./3.) + pow(projectileAtomicNumber, 1./3.))/ + pow(E_cm, 1./3.); + + //done + G4double B = 1.44*nProjProtons*nTargetProtons/Radius; + + // done + G4double Energy = kineticEnergy/projectileAtomicNumber; + + // done + G4double D = 2.77-(8.0E-3*targetAtomicNumber)+(1.8E-5*targetAtomicNumber*targetAtomicNumber) + - 0.8/(1+exp((250.-Energy)/75.)); + D = 1.75; + // done + G4double C_E = D * (1-exp(-Energy/40.)) - 0.292*exp(-Energy/792.)*cos(0.229*pow(Energy, 0.453)); + + // done + G4double S = pow(projectileAtomicNumber, 1./3.)*pow(targetAtomicNumber, 1./3.)/ + (pow(projectileAtomicNumber, 1./3.) + pow(targetAtomicNumber, 1./3.)); + + // done + G4double deltaE = 1.85*S + 0.16*S/pow(E_cm,1./3.) - C_E + + 0.91*(targetAtomicNumber-2.*nTargetProtons)*nProjProtons/ + (targetAtomicNumber*projectileAtomicNumber); + + // done + result = pi * nuleonRadius*nuleonRadius * + pow(( pow(targetAtomicNumber, 1./3.) + + pow(projectileAtomicNumber, 1./3.) + deltaE),2.) * (1-B/E_cm); + + if(result < 0) result = 0; + return result*m2; + +} diff --git a/source/processes/hadronic/cross_sections/src/G4VCrossSectionDataSet.cc b/source/processes/hadronic/cross_sections/src/G4VCrossSectionDataSet.cc index bcab35be16..60fb94f385 100644 --- a/source/processes/hadronic/cross_sections/src/G4VCrossSectionDataSet.cc +++ b/source/processes/hadronic/cross_sections/src/G4VCrossSectionDataSet.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VCrossSectionDataSet.cc,v 1.1.10.1 1999/12/07 20:51:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VCrossSectionDataSet.cc,v 1.2 1999/12/15 14:52:07 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 9c10be200a..ea21fa1aaa 100644 --- a/source/processes/hadronic/management/include/G4EnergyRangeManager.hh +++ b/source/processes/hadronic/management/include/G4EnergyRangeManager.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4EnergyRangeManager.hh,v 1.1.10.1 1999/12/07 20:51:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4EnergyRangeManager.hh,v 1.2 1999/12/15 14:52:07 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 14df03f3cc..4a762e696d 100644 --- a/source/processes/hadronic/management/include/G4HadronInelasticProcess.hh +++ b/source/processes/hadronic/management/include/G4HadronInelasticProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HadronInelasticProcess.hh,v 1.1.10.1 1999/12/07 20:51:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HadronInelasticProcess.hh,v 1.2 1999/12/15 14:52:07 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // Hadronic Inelastic Process class // The specific particle inelastic processes derive from this class diff --git a/source/processes/hadronic/management/include/G4HadronicInteraction.hh b/source/processes/hadronic/management/include/G4HadronicInteraction.hh index 9e57a3abc2..2f53b94fd5 100644 --- a/source/processes/hadronic/management/include/G4HadronicInteraction.hh +++ b/source/processes/hadronic/management/include/G4HadronicInteraction.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HadronicInteraction.hh,v 1.2.8.1 1999/12/07 20:51:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HadronicInteraction.hh,v 1.3 1999/12/15 14:52:07 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // Hadronic Interaction abstract base class // This class is the base class for the model classes. diff --git a/source/processes/hadronic/management/include/G4HadronicInteractionRegistry.hh b/source/processes/hadronic/management/include/G4HadronicInteractionRegistry.hh index 737dcb0efc..d4c23c193b 100644 --- a/source/processes/hadronic/management/include/G4HadronicInteractionRegistry.hh +++ b/source/processes/hadronic/management/include/G4HadronicInteractionRegistry.hh @@ -14,7 +14,13 @@ class G4HadronicInteractionRegistry static void RegisterMe(G4HadronicInteraction * aModel); static void RemoveMe(G4HadronicInteraction * aModel){}; + protected: + + G4HadronicInteractionRegistry(G4String aString) + { G4Exception("G4HadronicInteractionRegistry meant as a singleton; please do not inherit");} + private: + // !!! can not use "copy constructor" nor "default constructor" !!!! G4HadronicInteractionRegistry(const G4HadronicInteractionRegistry &right) { nModels = right.nModels; } diff --git a/source/processes/hadronic/management/include/G4HadronicProcess.hh b/source/processes/hadronic/management/include/G4HadronicProcess.hh index e4b5003ffc..0515a00b7c 100644 --- a/source/processes/hadronic/management/include/G4HadronicProcess.hh +++ b/source/processes/hadronic/management/include/G4HadronicProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HadronicProcess.hh,v 1.4.2.1 1999/12/07 20:51:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HadronicProcess.hh,v 1.5 1999/12/15 14:52:07 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // This is the top level Hadronic Process class // The inelastic, elastic, capture, and fission processes diff --git a/source/processes/hadronic/management/include/G4InelasticInteraction.hh b/source/processes/hadronic/management/include/G4InelasticInteraction.hh index a0b6eb9510..efd7365d13 100644 --- a/source/processes/hadronic/management/include/G4InelasticInteraction.hh +++ b/source/processes/hadronic/management/include/G4InelasticInteraction.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4InelasticInteraction.hh,v 1.1.10.1 1999/12/07 20:51:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4InelasticInteraction.hh,v 1.2 1999/12/15 14:52:07 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // Hadronic Process: Inelastic Interaction // This class is an abstract base class, since the pure virtual diff --git a/source/processes/hadronic/management/src/G4EnergyRangeManager.cc b/source/processes/hadronic/management/src/G4EnergyRangeManager.cc index 1b754dc23c..aa1a83969e 100644 --- a/source/processes/hadronic/management/src/G4EnergyRangeManager.cc +++ b/source/processes/hadronic/management/src/G4EnergyRangeManager.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4EnergyRangeManager.cc,v 1.2.8.1 1999/12/07 20:51:31 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4EnergyRangeManager.cc,v 1.3 1999/12/15 14:52:07 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 e0a36a3296..2fb487a918 100644 --- a/source/processes/hadronic/management/src/G4HadronInelasticProcess.cc +++ b/source/processes/hadronic/management/src/G4HadronInelasticProcess.cc @@ -5,8 +5,6 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HadronInelasticProcess.cc,v 1.1.8.1.2.1 1999/12/07 20:51:31 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ // // Hadronic Inelastic Process Class // J.L. Chuma, TRIUMF, 24-Mar-1997 @@ -21,6 +19,7 @@ // #include "G4HadronInelasticProcess.hh" +#include "G4GenericIon.hh" G4double G4HadronInelasticProcess::GetMeanFreePath( const G4Track &aTrack, @@ -28,7 +27,8 @@ G4ForceCondition *condition ) { const G4DynamicParticle *aParticle = aTrack.GetDynamicParticle(); - if( aParticle->GetDefinition() != theParticle ) + if( aParticle->GetDefinition() != theParticle && + theParticle != G4GenericIon::GenericIon()) G4Exception( this->GetProcessName()+ " called for "+ aParticle->GetDefinition()->GetParticleName() ); diff --git a/source/processes/hadronic/management/src/G4HadronicInteraction.cc b/source/processes/hadronic/management/src/G4HadronicInteraction.cc index 3df271ea6b..48bcba198a 100644 --- a/source/processes/hadronic/management/src/G4HadronicInteraction.cc +++ b/source/processes/hadronic/management/src/G4HadronicInteraction.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HadronicInteraction.cc,v 1.1.10.1.2.1 1999/12/08 17:34:35 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HadronicInteraction.cc,v 1.2 1999/12/15 14:52:08 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // Hadronic Interaction base class // original by H.P. Wellisch diff --git a/source/processes/hadronic/management/src/G4HadronicProcess.cc b/source/processes/hadronic/management/src/G4HadronicProcess.cc index 2df1821822..c7b12c1399 100644 --- a/source/processes/hadronic/management/src/G4HadronicProcess.cc +++ b/source/processes/hadronic/management/src/G4HadronicProcess.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HadronicProcess.cc,v 1.7.2.1.2.5 1999/12/14 09:16:48 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HadronicProcess.cc,v 1.8 1999/12/15 14:52:08 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // HPW to implement the choosing of an element for scattering. #include "g4std/fstream" diff --git a/source/processes/hadronic/management/src/G4InelasticInteraction.cc b/source/processes/hadronic/management/src/G4InelasticInteraction.cc index cf3010409a..3ab758f84d 100644 --- a/source/processes/hadronic/management/src/G4InelasticInteraction.cc +++ b/source/processes/hadronic/management/src/G4InelasticInteraction.cc @@ -81,24 +81,27 @@ { if( np+nm+nz == 0 )return; G4int i; - G4ReactionProduct *p = new G4ReactionProduct [np+nm+nz]; + G4ReactionProduct *p; for( i=0; iSetDefinition( G4PionPlus::PionPlus() ); + (G4UniformRand() < 0.5) ? p->SetSide( -1 ) : p->SetSide( 1 ); + vec.SetElement( vecLen++, p ); } for( i=np; iSetDefinition( G4PionMinus::PionMinus() ); + (G4UniformRand() < 0.5) ? p->SetSide( -1 ) : p->SetSide( 1 ); + vec.SetElement( vecLen++, p ); } for( i=np+nm; iSetDefinition( G4PionZero::PionZero() ); + (G4UniformRand() < 0.5) ? p->SetSide( -1 ) : p->SetSide( 1 ); + vec.SetElement( vecLen++, p ); } } @@ -358,6 +361,7 @@ p->SetDefinition( vec[i]->GetDefinition() ); p->SetMomentum( vec[i]->GetMomentum() ); theParticleChange.AddSecondary( p ); + delete vec[i]; } } diff --git a/source/processes/hadronic/models/GNUmakefile b/source/processes/hadronic/models/GNUmakefile index 741ae4c821..51d1552b04 100644 --- a/source/processes/hadronic/models/GNUmakefile +++ b/source/processes/hadronic/models/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.2 1999/11/06 17:29:36 hpw Exp $ +# $Id: GNUmakefile,v 1.5 2000/06/27 15:24:19 gcosmo Exp $ # -------------------------------------------------------------- # GNUmakefile for hadronic models library. G.Folger 10-Dec-97 # -------------------------------------------------------------- @@ -19,10 +19,12 @@ SUBDIRS += generator/quark_gluon_string SUBDIRS += generator/string_common SUBDIRS += generator/string_fragmentation SUBDIRS += generator/util +SUBDIRS += radiative_decay 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_qgstring G4hadronic_string_common +SUBLIBS += G4hadronic_man_gen G4hadronic_preequ G4hadronic_radioactivedecay +SUBLIBS += G4hadronic_qgstring G4hadronic_string_common SUBLIBS += G4hadronic_stringfrag G4hadronic_util_gen ifndef G4INSTALL diff --git a/source/processes/hadronic/models/generator/History b/source/processes/hadronic/models/generator/History new file mode 100644 index 0000000000..c5cff398db --- /dev/null +++ b/source/processes/hadronic/models/generator/History @@ -0,0 +1,21 @@ +$Id: History,v 1.1 1999/01/07 16:11:38 gunter Exp $ +------------------------------------------------------------------- + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + Hadronics/models/Generator History file + --------------------------------------- +This file should be used by G4 developers to briefly summarize all major +modifications introduced in the code and keep track of all 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 * + ---------------------------------------------------------- +GF 12-May-98: Add more functions to G4Fancy3DNucleus: + doLorentzContraction with algorithm given by Nicolai + give access to all nucleons with a RWTPtrOrederedVector + Required a mod to G4Nucleon, ie. add operator == diff --git a/source/processes/hadronic/models/generator/ToDo b/source/processes/hadronic/models/generator/ToDo new file mode 100644 index 0000000000..d814424284 --- /dev/null +++ b/source/processes/hadronic/models/generator/ToDo @@ -0,0 +1,18 @@ +Known problems/ missing topics + +date date who description +found fixed + +5-Nov 98 GF String models need projectile momentum along +z; + G4VPartonStringModel should do this rotation. + Nov98 Above is wrong. for the excitation the + transformation to the correct frame is done. + +5-Nov-98 GF G4VPartonStringModel must use momentum corrector + Do not forget Nucleus in this. + 9-Dec98 Done. Nucleon momenta are included by correcting + to sum of strings; these were checked to conserve + E/p. + +30-Oct GF dtor of G4VPartonStringModel should delete things; + Or should derived classes actually do this? diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4AlphaCoulombBarrier.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4AlphaCoulombBarrier.hh new file mode 100644 index 0000000000..fbd7420703 --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4AlphaCoulombBarrier.hh @@ -0,0 +1,40 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By copying, 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.1 2000/06/09 11:36:49 larazb Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// Hadronic Process: Nuclear De-excitations +// by V. Lara (Dec 1999) + +#ifndef G4AlphaCoulombBarrier_h +#define G4AlphaCoulombBarrier_h 1 + +#include "G4CoulombBarrier.hh" +#include "globals.hh" + +class G4AlphaCoulombBarrier : public G4CoulombBarrier +{ +public: + G4AlphaCoulombBarrier() : G4CoulombBarrier(4,2) {}; + ~G4AlphaCoulombBarrier() {}; + +private: + G4AlphaCoulombBarrier(const G4AlphaCoulombBarrier & right); + + const G4AlphaCoulombBarrier & operator=(const G4AlphaCoulombBarrier & right); + G4bool operator==(const G4AlphaCoulombBarrier & right) const; + G4bool operator!=(const G4AlphaCoulombBarrier & right) const; + +private: + + virtual G4double BarrierPenetrationFactor(const G4double aZ) const; + + +}; + +#endif diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4AlphaEvaporationChannel.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4AlphaEvaporationChannel.hh new file mode 100644 index 0000000000..3484a9969d --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4AlphaEvaporationChannel.hh @@ -0,0 +1,47 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By 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: Nuclear De-excitations +// by V. Lara (Nov. 1999) +// + + +#ifndef G4AlphaEvaporationChannel_h +#define G4AlphaEvaporationChannel_h 1 + +#include "G4EvaporationChannel.hh" +#include "G4AlphaCoulombBarrier.hh" +#include "G4AlphaEvaporationProbability.hh" + +class G4AlphaEvaporationChannel : public G4EvaporationChannel +{ +public: + // only available constructor + G4AlphaEvaporationChannel() : G4EvaporationChannel(4,2, + &theEvaporationProbability,&theCoulombBarrier) {}; + + // destructor + ~G4AlphaEvaporationChannel() {}; + +private: + const G4AlphaEvaporationChannel & operator=(const G4AlphaEvaporationChannel & right); + + G4AlphaEvaporationChannel(const G4AlphaEvaporationChannel & right); + + +public: + G4bool operator==(const G4AlphaEvaporationChannel & right) const; + G4bool operator!=(const G4AlphaEvaporationChannel & right) const; + +private: + + G4AlphaCoulombBarrier theCoulombBarrier; + + G4AlphaEvaporationProbability theEvaporationProbability; + +}; +#endif diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4AlphaEvaporationProbability.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4AlphaEvaporationProbability.hh new file mode 100644 index 0000000000..05416102f6 --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4AlphaEvaporationProbability.hh @@ -0,0 +1,56 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By 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: Nuclear De-excitations +// by V. Lara (Nov 1999) +// + + + +#ifndef G4AlphaEvaporationProbability_h +#define G4AlphaEvaporationProbability_h 1 + + +#include "G4EvaporationProbability.hh" + + +class G4AlphaEvaporationProbability : public G4EvaporationProbability +{ +public: + // Only available constructor is default constructor + G4AlphaEvaporationProbability(); + + ~G4AlphaEvaporationProbability() {} +private: + // Copy constructor + G4AlphaEvaporationProbability(const G4AlphaEvaporationProbability &right); + + const G4AlphaEvaporationProbability & operator=(const G4AlphaEvaporationProbability &right); + G4bool operator==(const G4AlphaEvaporationProbability &right) const; + G4bool operator!=(const G4AlphaEvaporationProbability &right) const; + + +private: + + virtual G4double CalcAlphaParam(const G4Fragment & fragment) const + { return 1.0 + CCoeficient(G4double(fragment.GetZ()-GetZ()));} + + virtual G4double CalcBetaParam(const G4Fragment & fragment) const + { return 0.0; } + + + G4double CCoeficient(const G4double aZ) const; + + // Excitation energy levels + G4RWTValVector ExcitEnergies; + // Spin of excitation energy levels + G4RWTValVector ExcitSpins; +}; + + +#endif diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4CameronGilbertPairingCorrections.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4CameronGilbertPairingCorrections.hh new file mode 100644 index 0000000000..c704be7bd9 --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4CameronGilbertPairingCorrections.hh @@ -0,0 +1,46 @@ +#ifndef G4CameronGilbertPairingCorrections_h +#define G4CameronGilbertPairingCorrections_h 1 + +#include "globals.hh" + +class G4CameronGilbertPairingCorrections +{ +private: + // Dummy constructor + G4CameronGilbertPairingCorrections(G4double dummy); + + static G4CameronGilbertPairingCorrections theInstance; + + +public: + + ~G4CameronGilbertPairingCorrections() {}; + + G4double GetPairingZ(const G4int Z) { + if (Z <= ZTableSize && Z > 1) return PairingZTable[Z-1]*MeV; + else { + G4cerr << "G4CameronGilbertPairingCorrections: out of table for Z = " << Z << G4endl; + return 0.0; + } + } + + G4double GetPairingN(const G4int N) { + if (N <= NTableSize && N > 0) return PairingNTable[N-1]*MeV; + else { + G4cerr << "G4CameronGilbertPairingCorrections: out of table for N = " << N << G4endl; + return 0.0; + } + } + + + enum { ZTableSize = 98, NTableSize = 150 }; +private: + + + + static G4double PairingZTable[ZTableSize]; + + static G4double PairingNTable[NTableSize]; + +}; +#endif diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4CameronGilbertShellCorrections.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4CameronGilbertShellCorrections.hh new file mode 100644 index 0000000000..642e34bf8b --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4CameronGilbertShellCorrections.hh @@ -0,0 +1,46 @@ +#ifndef G4CameronGilbertShellCorrections_h +#define G4CameronGilbertShellCorrections_h 1 + +#include "globals.hh" + +class G4CameronGilbertShellCorrections +{ +private: + // Dummy constructor + G4CameronGilbertShellCorrections(G4double dummy); + + static G4CameronGilbertShellCorrections theInstance; + + +public: + + ~G4CameronGilbertShellCorrections() {}; + + G4double GetShellZ(const G4int Z) const { + if (Z <= ZTableSize && Z > 1) return ShellZTable[Z-1]*MeV; + else { + G4cerr << "G4CameronGilbertShellCorrections: out of table for Z = " << Z << G4endl; + return 0.0; + } + } + + G4double GetShellN(const G4int N) const { + if (N <= NTableSize && N > 0) return ShellNTable[N-1]*MeV; + else { + G4cerr << "G4CameronGilbertShellCorrections: out of table for N = " << N << G4endl; + return 0.0; + } + } + + + enum { ZTableSize = 98, NTableSize = 150 }; +private: + + + + static const G4double ShellZTable[ZTableSize]; + + static const G4double ShellNTable[NTableSize]; + +}; +#endif diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4CameronShellPlusPairingCorrections.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4CameronShellPlusPairingCorrections.hh new file mode 100644 index 0000000000..f204bb224b --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4CameronShellPlusPairingCorrections.hh @@ -0,0 +1,45 @@ +#ifndef G4CameronShellPlusPairingCorrections_h +#define G4CameronShellPlusPairingCorrections_h 1 + +#include "globals.hh" + +class G4CameronShellPlusPairingCorrections +{ +private: + + // Dummy constructor + G4CameronShellPlusPairingCorrections(G4double dummy); + + static G4CameronShellPlusPairingCorrections theInstance; + +public: + + ~G4CameronShellPlusPairingCorrections() {}; + + static G4double GetShellPlusPairingZ(const G4int Z) { + if (Z <= TableSize && Z > 1) return SPZTable[Z-1]*MeV; + else { + G4cerr << "G4CameronShellPlusPairingCorrections: out of table for Z = " << Z << G4endl; + return 0.0; + } + } + + static G4double GetShellPlusPairingN(const G4int N) { + if (N <= TableSize && N > 0) return SPNTable[N-1]*MeV; + else { + G4cerr << "G4CameronShellPlusPairingCorrections: out of table for N = " << N << G4endl; + return 0.0; + } + } + + + enum { TableSize = 200 }; + +private: + + static G4double SPZTable[TableSize]; + + static G4double SPNTable[TableSize]; + +}; +#endif diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4CameronTruranHilfPairingCorrections.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4CameronTruranHilfPairingCorrections.hh new file mode 100644 index 0000000000..7596185f7b --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4CameronTruranHilfPairingCorrections.hh @@ -0,0 +1,46 @@ +#ifndef G4CameronTruranHilfPairingCorrections_h +#define G4CameronTruranHilfPairingCorrections_h 1 + +#include "globals.hh" + +class G4CameronTruranHilfPairingCorrections +{ +private: + // Dummy constructor + G4CameronTruranHilfPairingCorrections(G4double dummy); + + static G4CameronTruranHilfPairingCorrections theInstance; + + +public: + + ~G4CameronTruranHilfPairingCorrections() {}; + + G4double GetPairingZ(const G4int Z) const { + if (Z <= ZTableSize && Z > 1) return PairingZTable[Z-1]*MeV; + else { + G4cerr << "G4CameronTruranHilfPairingCorrections: out of table for Z = " << Z << G4endl; + return 0.0; + } + } + + G4double GetPairingN(const G4int N) const { + if (N <= NTableSize && N > 0) return PairingNTable[N-1]*MeV; + else { + G4cerr << "G4CameronTruranHilfPairingCorrections: out of table for N = " << N << G4endl; + return 0.0; + } + } + + + enum { ZTableSize = 102, NTableSize = 155 }; +private: + + + + static const G4double PairingZTable[ZTableSize]; + + static const G4double PairingNTable[NTableSize]; + +}; +#endif diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4CameronTruranHilfShellCorrections.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4CameronTruranHilfShellCorrections.hh new file mode 100644 index 0000000000..df49ae35e5 --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4CameronTruranHilfShellCorrections.hh @@ -0,0 +1,47 @@ +#ifndef G4CameronTruranHilfShellCorrections_h +#define G4CameronTruranHilfShellCorrections_h 1 + +#include "globals.hh" + +class G4CameronTruranHilfShellCorrections +{ +private: + + // Dummy constructor + G4CameronTruranHilfShellCorrections(G4double dummy); + + static G4CameronTruranHilfShellCorrections theInstance; + + +public: + + ~G4CameronTruranHilfShellCorrections() {}; + + static G4double GetShellZ(const G4int Z) { + if (Z <= ZTableSize && Z > 1) return ShellZTable[Z-1]*MeV; + else { + G4cerr << "G4CameronTruranHilfShellCorrections: out of table for Z = " << Z << G4endl; + return 0.0; + } + } + + static G4double GetShellN(const G4int N) { + if (N <= NTableSize && N > 0) return ShellNTable[N-1]*MeV; + else { + G4cerr << "G4CameronTruranHilfShellCorrections: out of table for N = " << N << G4endl; + return 0.0; + } + } + + + enum { ZTableSize = 102, NTableSize = 155 }; +private: + + + + static G4double ShellZTable[ZTableSize]; + + static G4double ShellNTable[NTableSize]; + +}; +#endif 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 61524d491c..56584f4a0b 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4CompetitiveFission.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4CompetitiveFission.hh @@ -1,5 +1,5 @@ // This code implementation is the intellectual property of -// the GEANT4 collaboration. +// the RD44 GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, @@ -128,6 +128,7 @@ private: + G4double FissionPairingCorrection(const G4int A, const G4int Z) const; diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4CoulombBarrier.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4CoulombBarrier.hh new file mode 100644 index 0000000000..b44b156a39 --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4CoulombBarrier.hh @@ -0,0 +1,48 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By copying, 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.1 2000/06/09 11:36:52 larazb Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// Hadronic Process: Nuclear De-excitations +// by V. Lara (Dec 1999) + +#ifndef G4CoulombBarrier_h +#define G4CoulombBarrier_h 1 + +#include "G4VCoulombBarrier.hh" +#include "globals.hh" + + +class G4CoulombBarrier : public G4VCoulombBarrier +{ +public: + G4CoulombBarrier() : G4VCoulombBarrier(1,0) {}; + G4CoulombBarrier(const G4int anA,const G4int aZ) : + G4VCoulombBarrier(anA,aZ) {}; + ~G4CoulombBarrier() {}; + +private: + G4CoulombBarrier(const G4CoulombBarrier & right); + + const G4CoulombBarrier & operator=(const G4CoulombBarrier & right); + G4bool operator==(const G4CoulombBarrier & right) const; + G4bool operator!=(const G4CoulombBarrier & right) const; + +public: + G4double GetCoulombBarrier(const G4int ARes, const G4int ZRes, + const G4double U) const; + + +private: + + virtual G4double BarrierPenetrationFactor(const G4double aZ) const {return 1.0;} + + +}; + +#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 new file mode 100644 index 0000000000..68509f12d2 --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4DeuteronCoulombBarrier.hh @@ -0,0 +1,40 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By copying, 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 2000/06/09 11:36:52 larazb Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// Hadronic Process: Nuclear De-excitations +// by V. Lara (Dec 1999) + +#ifndef G4DeuteronCoulombBarrier_h +#define G4DeuteronCoulombBarrier_h 1 + +#include "G4CoulombBarrier.hh" +#include "globals.hh" + +class G4DeuteronCoulombBarrier : public G4CoulombBarrier +{ +public: + G4DeuteronCoulombBarrier() : G4CoulombBarrier(2,1) {}; + ~G4DeuteronCoulombBarrier() {}; + +private: + G4DeuteronCoulombBarrier(const G4DeuteronCoulombBarrier & right); + + const G4DeuteronCoulombBarrier & operator=(const G4DeuteronCoulombBarrier & right); + G4bool operator==(const G4DeuteronCoulombBarrier & right) const; + G4bool operator!=(const G4DeuteronCoulombBarrier & right) const; + +private: + + virtual G4double BarrierPenetrationFactor(const G4double aZ) const; + + +}; + +#endif diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4DeuteronEvaporationChannel.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4DeuteronEvaporationChannel.hh new file mode 100644 index 0000000000..5924dc407d --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4DeuteronEvaporationChannel.hh @@ -0,0 +1,46 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By 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: Nuclear De-excitations +// by V. Lara (Nov. 1999) +// + + +#ifndef G4DeuteronEvaporationChannel_h +#define G4DeuteronEvaporationChannel_h 1 + +#include "G4EvaporationChannel.hh" +#include "G4DeuteronCoulombBarrier.hh" +#include "G4DeuteronEvaporationProbability.hh" + +class G4DeuteronEvaporationChannel : public G4EvaporationChannel +{ +public: + // only available constructor + G4DeuteronEvaporationChannel() : G4EvaporationChannel(2,1, + &theEvaporationProbability,&theCoulombBarrier) {}; + + // destructor + ~G4DeuteronEvaporationChannel() {}; + +private: + const G4DeuteronEvaporationChannel & operator=(const G4DeuteronEvaporationChannel & right); + + G4DeuteronEvaporationChannel(const G4DeuteronEvaporationChannel & right); + +public: + G4bool operator==(const G4DeuteronEvaporationChannel & right) const; + G4bool operator!=(const G4DeuteronEvaporationChannel & right) const; + +private: + + G4DeuteronCoulombBarrier theCoulombBarrier; + + G4DeuteronEvaporationProbability theEvaporationProbability; + +}; +#endif diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4DeuteronEvaporationProbability.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4DeuteronEvaporationProbability.hh new file mode 100644 index 0000000000..35f1f88dd5 --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4DeuteronEvaporationProbability.hh @@ -0,0 +1,55 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By 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: Nuclear De-excitations +// by V. Lara (Nov 1999) +// + + + +#ifndef G4DeuteronEvaporationProbability_h +#define G4DeuteronEvaporationProbability_h 1 + + +#include "G4EvaporationProbability.hh" + + +class G4DeuteronEvaporationProbability : public G4EvaporationProbability +{ +public: + // Only available constructor + G4DeuteronEvaporationProbability(); + + ~G4DeuteronEvaporationProbability() {} +private: + // Copy constructor + G4DeuteronEvaporationProbability(const G4DeuteronEvaporationProbability &right); + + const G4DeuteronEvaporationProbability & operator=(const G4DeuteronEvaporationProbability &right); + G4bool operator==(const G4DeuteronEvaporationProbability &right) const; + G4bool operator!=(const G4DeuteronEvaporationProbability &right) const; + + +private: + + virtual G4double CalcAlphaParam(const G4Fragment & fragment) const + { return 1.0 + CCoeficient(G4double(fragment.GetZ()-GetZ()));} + + virtual G4double CalcBetaParam(const G4Fragment & fragment) const + { return 0.0; } + + + G4double CCoeficient(const G4double aZ) const; + + // Excitation energy levels + G4RWTValVector ExcitEnergies; + // Spin of excitation energy levels + G4RWTValVector ExcitSpins; + +}; +#endif 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 d755f0c650..8069662386 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4Evaporation.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4Evaporation.hh @@ -1,5 +1,5 @@ // This code implementation is the intellectual property of -// the GEANT4 collaboration. +// the RD44 GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, @@ -13,16 +13,12 @@ #include "globals.hh" #include "g4rw/tvvector.h" #include "g4rw/tpordvec.h" - +#include "g4rw/tvordvec.h" #include "G4ios.hh" #include "G4VEvaporation.hh" #include "G4VEvaporationChannel.hh" -#include "G4EvaporationChannel.hh" -#include "G4CompetitiveFission.hh" -#include "G4PhotonEvaporation.hh" #include "G4Fragment.hh" -#include "G4NucleiPropertiesTable.hh" #include "G4NucleiProperties.hh" #include "Randomize.hh" @@ -30,101 +26,28 @@ class G4Evaporation : public G4VEvaporation { public: - G4Evaporation(); - ~G4Evaporation(); + G4Evaporation(); + G4Evaporation(G4RWTPtrOrderedVector * aChannelsVector) : + theChannels(aChannelsVector), + myOwnChannelsVector(false) + {}; + + ~G4Evaporation(); private: - G4Evaporation(const G4Evaporation &right); + G4Evaporation(const G4Evaporation &right); - const G4Evaporation & operator=(const G4Evaporation &right); - G4bool operator==(const G4Evaporation &right) const; - G4bool operator!=(const G4Evaporation &right) const; + const G4Evaporation & operator=(const G4Evaporation &right); + G4bool operator==(const G4Evaporation &right) const; + G4bool operator!=(const G4Evaporation &right) const; public: - G4FragmentVector * BreakItUp(const G4Fragment &theNucleus); - + G4FragmentVector * BreakItUp(const G4Fragment &theNucleus); + private: - enum {TotNumberOfChannels = 34, - NumberOfFissionChannel = TotNumberOfChannels-2, - NumberOfGammaChannel = TotNumberOfChannels-1, - NumExcitedStates = 35}; - - - - // Excitation energy levels for each channel - G4RWTValVector ExcitEnergyChann00; // n - G4RWTValVector ExcitEnergyChann01; // p - G4RWTValVector ExcitEnergyChann02; // deuteron - G4RWTValVector ExcitEnergyChann03; // triton - G4RWTValVector ExcitEnergyChann04; // He3 - G4RWTValVector ExcitEnergyChann05; // alpha - G4RWTValVector ExcitEnergyChann06; // He5 - G4RWTValVector ExcitEnergyChann07; // He6 - G4RWTValVector ExcitEnergyChann08; // Li5 - G4RWTValVector ExcitEnergyChann09; // Li5 - G4RWTValVector ExcitEnergyChann10; - G4RWTValVector ExcitEnergyChann11; - G4RWTValVector ExcitEnergyChann12; - G4RWTValVector ExcitEnergyChann13; - G4RWTValVector ExcitEnergyChann14; - G4RWTValVector ExcitEnergyChann15; - G4RWTValVector ExcitEnergyChann16; - G4RWTValVector ExcitEnergyChann17; - G4RWTValVector ExcitEnergyChann18; - G4RWTValVector ExcitEnergyChann19; - G4RWTValVector ExcitEnergyChann20; - G4RWTValVector ExcitEnergyChann21; - G4RWTValVector ExcitEnergyChann22; - G4RWTValVector ExcitEnergyChann23; - G4RWTValVector ExcitEnergyChann24; - G4RWTValVector ExcitEnergyChann25; - G4RWTValVector ExcitEnergyChann26; - G4RWTValVector ExcitEnergyChann27; - G4RWTValVector ExcitEnergyChann28; - G4RWTValVector ExcitEnergyChann29; - G4RWTValVector ExcitEnergyChann30; - G4RWTValVector ExcitEnergyChann31; - - - // Spin of excitation energy levels for each channel - G4RWTValVector ExcitSpinChann00; - G4RWTValVector ExcitSpinChann01; - G4RWTValVector ExcitSpinChann02; - G4RWTValVector ExcitSpinChann03; - G4RWTValVector ExcitSpinChann04; - G4RWTValVector ExcitSpinChann05; - G4RWTValVector ExcitSpinChann06; - G4RWTValVector ExcitSpinChann07; - G4RWTValVector ExcitSpinChann08; - G4RWTValVector ExcitSpinChann09; - G4RWTValVector ExcitSpinChann10; - G4RWTValVector ExcitSpinChann11; - G4RWTValVector ExcitSpinChann12; - G4RWTValVector ExcitSpinChann13; - G4RWTValVector ExcitSpinChann14; - G4RWTValVector ExcitSpinChann15; - G4RWTValVector ExcitSpinChann16; - G4RWTValVector ExcitSpinChann17; - G4RWTValVector ExcitSpinChann18; - G4RWTValVector ExcitSpinChann19; - G4RWTValVector ExcitSpinChann20; - G4RWTValVector ExcitSpinChann21; - G4RWTValVector ExcitSpinChann22; - G4RWTValVector ExcitSpinChann23; - G4RWTValVector ExcitSpinChann24; - G4RWTValVector ExcitSpinChann25; - G4RWTValVector ExcitSpinChann26; - G4RWTValVector ExcitSpinChann27; - G4RWTValVector ExcitSpinChann28; - G4RWTValVector ExcitSpinChann29; - G4RWTValVector ExcitSpinChann30; - G4RWTValVector ExcitSpinChann31; - - - G4VEvaporationChannel * theChannels[TotNumberOfChannels]; - - + G4bool myOwnChannelsVector; + G4RWTPtrOrderedVector * theChannels; }; #endif 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 0914903b6d..0f16c1529f 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4EvaporationChannel.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4EvaporationChannel.hh @@ -1,5 +1,5 @@ // This code implementation is the intellectual property of -// the GEANT4 collaboration. +// the RD44 GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, @@ -17,33 +17,43 @@ #include "G4VEmissionProbability.hh" #include "G4EvaporationProbability.hh" #include "G4VLevelDensityParameter.hh" +#include "G4VCoulombBarrier.hh" #include "G4EvaporationLevelDensityParameter.hh" #include "G4NucleiProperties.hh" #include "Randomize.hh" #include "G4ParticleTable.hh" #include "G4IonTable.hh" -#include "g4rw/tvvector.h" + class G4EvaporationChannel : public G4VEvaporationChannel { public: // only available constructor - G4EvaporationChannel(const G4int theGamma, - const G4int theA, - const G4int theZ, - G4RWTValVector * theExcitationEnergies, - G4RWTValVector * theExcitationSpins); + G4EvaporationChannel(const G4int theA, const G4int theZ, + G4VEmissionProbability * aEmissionStrategy, + G4VCoulombBarrier * aCoulombBarrier); +public: // destructor ~G4EvaporationChannel(); -private: + void SetEmissionStrategy(G4VEmissionProbability * aEmissionStrategy) + {theEvaporationProbabilityPtr = aEmissionStrategy;} + + void SetCoulombBarrierStrategy(G4VCoulombBarrier * aCoulombBarrier) + {theCoulombBarrierPtr = aCoulombBarrier;} + +protected: // default constructor G4EvaporationChannel() {}; + +private: // copy constructor G4EvaporationChannel(const G4EvaporationChannel & right); - + +private: const G4EvaporationChannel & operator=(const G4EvaporationChannel & right); + public: G4bool operator==(const G4EvaporationChannel & right) const; G4bool operator!=(const G4EvaporationChannel & right) const; @@ -53,12 +63,12 @@ public: G4FragmentVector * BreakUp(const G4Fragment & theNucleus); - inline void SetEmissionStrategy(G4VEmissionProbability * aStrategy) - { - if (MyOwnEvaporationProbability) delete theEvaporationProbabilityPtr; - theEvaporationProbabilityPtr = aStrategy; - MyOwnEvaporationProbability = false; - } +// inline void SetEmissionStrategy(G4VEmissionProbability * aStrategy) +// { +// if (MyOwnEvaporationProbability) delete theEvaporationProbabilityPtr; +// theEvaporationProbabilityPtr = aStrategy; +// MyOwnEvaporationProbability = false; +// } inline void SetLevelDensityParameter(G4VLevelDensityParameter * aLevelDensity) @@ -68,41 +78,63 @@ public: MyOwnLevelDensity = false; } - inline G4double GetLevelDensityParameter(void) const { return LevelDensityParameter;} +public: + + inline G4double GetEmissionProbability(void) const + {return EmissionProbability;} + + + inline G4double GetMaximalKineticEnergy(void) const + { return MaximalKineticEnergy; } + + // ---------------------- + +private: + + // Calculate Binding Energy for separate fragment from nucleus + G4double CalcBindingEnergy(const G4int anA, const G4int aZ); + + // Calculate maximal kinetic energy that can be carried by fragment (in MeV) + G4double CalcMaximalKineticEnergy(const G4double U); + + // Samples fragment kinetic energy. + G4double CalcKineticEnergy(void); + + // This has to be removed and put in Random Generator + G4ThreeVector IsotropicVector(const G4double Magnitude = 1.0); + + G4double PairingCorrection(const G4int A, const G4int Z) const; + + + // Data Members + // ************ private: // This data member define the channel. // They are intializated at object creation (constructor) time. - // Gamma is A_f(2S_f+1) factor, where A_f is fragment atomic number and S_f is fragment spin - G4int Gamma; - // Atomic Number G4int A; // Charge G4int Z; - // - G4RWTValVector * ExcitationEnergies; - - // - G4RWTValVector * ExcitationSpins; - // For evaporation probability calcualtion - G4bool MyOwnEvaporationProbability; G4VEmissionProbability * theEvaporationProbabilityPtr; // For Level Density calculation G4bool MyOwnLevelDensity; G4VLevelDensityParameter * theLevelDensityPtr; - G4double LevelDensityParameter; + + // For Coulomb Barrier calculation + G4VCoulombBarrier * theCoulombBarrierPtr; + G4double CoulombBarrier; //--------------------------------------------------- - // This values depends on the nucleus that is being evaporated. + // These values depend on the nucleus that is being evaporated. // They are calculated through the Initialize method which takes as parameters // the atomic number, charge and excitation energy of nucleus. @@ -112,87 +144,18 @@ private: // Residual Charge G4int ZResidual; - // Coulomb Barrier - G4double CoulombBarrier; - - // Binding Energy - G4double BindingEnergy; +// // Binding Energy +// G4double BindingEnergy; +// // Level Density Parameter +// G4double LevelDensityParameter; + // Emission Probability G4double EmissionProbability; // Maximal Kinetic Energy that can be carried by fragment G4double MaximalKineticEnergy; - - -public: - inline G4int GetGamma(void) const - {return Gamma;} - - inline G4int GetA(void) const - {return A;} - - inline G4int GetZ(void) const - {return Z;} - - inline G4double GetCoulombBarrier(void) const - {return CoulombBarrier;} - - inline G4double GetBindingEnergy(void) const - {return BindingEnergy;} - - inline G4double GetEmissionProbability(void) const - {return EmissionProbability;} - - inline G4double GetExcitationEnergy(const G4int i) const - { - if (ExcitationEnergies != 0 && i < ExcitationEnergies->length()) - return ExcitationEnergies->operator()(i); - else return 0.0; - } - - inline G4int GetExcitationSpin(const G4int i) const - { - if (ExcitationSpins != 0 && i < ExcitationSpins->length()) - return ExcitationSpins->operator()(i); - else return 0; - } - - - inline G4double GetMaximalKineticEnergy(void) const - { return MaximalKineticEnergy; } - - // ---------------------- - - inline G4int GetResidualA(void) const - { return AResidual; } - - inline G4int GetResidualZ(void) const - { return ZResidual; } - - - -private: - - // Coulomb barrier calculation - G4double CalcCoulombBarrier(const G4int ARes, const G4int ZRes); - - // Calculate Binding Energy for separate fragment from nucleus - G4double CalcBindingEnergy(const G4int anA, const G4int aZ); - - // Calculate maximal kinetic energy that can be carried by fragment (in MeV) - G4double CalcMaximalKineticEnergy(const G4double U); - - // Samples fragment kinetic energy (in MeV). - G4double CalcKineticEnergy(void); - - - - - // This has to be removed and put in Random Generator - G4ThreeVector IsotropicVector(const G4double Magnitude = 1.0); - }; 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 7813af2b58..f3b0f4f12f 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4EvaporationLevelDensityParameter.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4EvaporationLevelDensityParameter.hh @@ -1,5 +1,5 @@ // This code implementation is the intellectual property of -// the GEANT4 collaboration. +// the RD44 GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, @@ -17,28 +17,40 @@ #include "G4VLevelDensityParameter.hh" +#include "G4CameronTruranHilfShellCorrections.hh" class G4EvaporationLevelDensityParameter : public G4VLevelDensityParameter { public: - G4EvaporationLevelDensityParameter() : EvapLevelDensityParameter(0.125*(1./MeV)) {}; - virtual ~G4EvaporationLevelDensityParameter() {}; + + G4EvaporationLevelDensityParameter() {}; + + virtual ~G4EvaporationLevelDensityParameter() {}; private: - G4EvaporationLevelDensityParameter(const G4EvaporationLevelDensityParameter &right); + + G4EvaporationLevelDensityParameter(const G4EvaporationLevelDensityParameter &right); - const G4EvaporationLevelDensityParameter & operator=(const G4EvaporationLevelDensityParameter &right); - G4bool operator==(const G4EvaporationLevelDensityParameter &right) const; - G4bool operator!=(const G4EvaporationLevelDensityParameter &right) const; + const G4EvaporationLevelDensityParameter & operator=(const G4EvaporationLevelDensityParameter &right); + G4bool operator==(const G4EvaporationLevelDensityParameter &right) const; + G4bool operator!=(const G4EvaporationLevelDensityParameter &right) const; public: - G4double LevelDensityParameter(const G4int A,const G4int Z,const G4double U) const - {return EvapLevelDensityParameter;} + G4double LevelDensityParameter(const G4int A,const G4int Z,const G4double U) const; private: - const G4double EvapLevelDensityParameter; + G4double ShellCorrection(const G4int Z, const G4int N) const + { return G4CameronTruranHilfShellCorrections::GetShellZ(Z) + + G4CameronTruranHilfShellCorrections::GetShellN(N);} + +private: + static const G4double ConstEvapLevelDensityParameter; + static const G4double alpha; + static const G4double beta; + static const G4double gamma; + static const G4double Bs; }; 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 7b95559c0a..09ead1a940 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4EvaporationProbability.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4EvaporationProbability.hh @@ -1,5 +1,5 @@ // This code implementation is the intellectual property of -// the GEANT4 collaboration. +// the RD44 GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, @@ -17,43 +17,81 @@ #include "G4VEmissionProbability.hh" -#include "G4EvaporationChannel.hh" +#include "G4VLevelDensityParameter.hh" +#include "G4EvaporationLevelDensityParameter.hh" +#include "g4rw/tvvector.h" class G4EvaporationProbability : public G4VEmissionProbability { public: - // Only available constructor - G4EvaporationProbability(G4VEvaporationChannel * aChannel) - { theChannel = aChannel; }; + // Only available constructor + G4EvaporationProbability(const G4int anA, const G4int aZ, const G4double aGamma) : + theA(anA), + theZ(aZ), + Gamma(aGamma) + { + theEvapLDPptr = new G4EvaporationLevelDensityParameter; + } - ~G4EvaporationProbability() {}; -private: - // Default constructor - G4EvaporationProbability() {}; + ~G4EvaporationProbability() + { + if (theEvapLDPptr != 0) delete theEvapLDPptr; + } - // Copy constructor - G4EvaporationProbability(const G4EvaporationProbability &right); - const G4EvaporationProbability & operator=(const G4EvaporationProbability &right); - G4bool operator==(const G4EvaporationProbability &right) const; - G4bool operator!=(const G4EvaporationProbability &right) const; + + G4double GetZ(void) const { return theZ; } + + G4double GetA(void) const { return theA;} + +protected: + + void SetExcitationEnergiesPtr(G4RWTValVector * anExcitationEnergiesPtr) + {ExcitationEnergies = anExcitationEnergiesPtr;} + + void SetExcitationSpinsPtr(G4RWTValVector * anExcitationSpinsPtr) + {ExcitationSpins = anExcitationSpinsPtr;} + + + // Default constructor + G4EvaporationProbability() {} +private: + // Copy constructor + G4EvaporationProbability(const G4EvaporationProbability &right); + + const G4EvaporationProbability & operator=(const G4EvaporationProbability &right); + G4bool operator==(const G4EvaporationProbability &right) const; + G4bool operator!=(const G4EvaporationProbability &right) const; public: - G4double EmissionProbability(const G4Fragment & fragment, const G4double photonExcitation); + G4double EmissionProbability(const G4Fragment & fragment, const G4double anEnergy); private: - G4double DostrovskyApproximation(const G4int A, const G4double U); - G4double BotvinaApproximation(const G4int A, const G4double U); - G4double NikolaiApproximation(const G4int A, const G4double U); + G4double CalcProbability(const G4Fragment & fragment, const G4double MaximalKineticEnergy); + G4double PairingCorrection(const G4int A, const G4int Z) const; + virtual G4double CCoeficient(const G4double aZ) const {return 0.0;}; + virtual G4double CalcAlphaParam(const G4Fragment & fragment) const {return 1.0;} + virtual G4double CalcBetaParam(const G4Fragment & fragment) const {return 1.0;} + // Data Members + G4VLevelDensityParameter * theEvapLDPptr; + + G4int theA; + G4int theZ; - G4VEvaporationChannel * theChannel; + // Gamma is A_f(2S_f+1) factor, where A_f is fragment atomic + // number and S_f is fragment spin + G4double Gamma; + // Discrete Excitation Energies + G4RWTValVector * ExcitationEnergies; + // + G4RWTValVector * ExcitationSpins; }; 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 a6e43f0334..f879c137e2 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4ExcitationHandler.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4ExcitationHandler.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ExcitationHandler.hh,v 1.3.4.1 1999/12/07 20:51:33 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ExcitationHandler.hh,v 1.4 1999/12/15 14:52:15 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (May 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 7ff724abb0..c4e90963b9 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4FissionBarrier.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4FissionBarrier.hh @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the GEANT4 collaboration. +// the RD44 GEANT4 collaboration. // // By copying, 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.1.10.1 1999/12/07 20:51:33 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4FissionBarrier.hh,v 1.3 2000/06/09 11:36:52 larazb Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) @@ -16,6 +16,7 @@ #include "G4VFissionBarrier.hh" #include "globals.hh" +#include "G4CameronShellPlusPairingCorrections.hh" class G4FissionBarrier : public G4VFissionBarrier { @@ -31,13 +32,17 @@ private: G4bool operator!=(const G4FissionBarrier & right) const; public: - G4double FissionBarrier(const G4int A, const G4int Z); + G4double FissionBarrier(const G4int A, const G4int Z, const G4double U); private: G4double BarashenkovFissionBarrier(const G4int A, const G4int Z); + G4double SellPlusPairingCorrection(const G4int Z, const G4int N) + { return G4CameronShellPlusPairingCorrections::GetShellPlusPairingZ(Z) + + G4CameronShellPlusPairingCorrections::GetShellPlusPairingN(N); + } }; 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 8166b815d7..0137f34263 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4FissionLevelDensityParameter.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4FissionLevelDensityParameter.hh @@ -1,5 +1,5 @@ // This code implementation is the intellectual property of -// the GEANT4 collaboration. +// the RD44 GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, 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 4eda31633d..642cdd797c 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4FissionParameters.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4FissionParameters.hh @@ -1,5 +1,5 @@ // This code implementation is the intellectual property of -// the GEANT4 collaboration. +// the RD44 GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, 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 4d8232378e..8ed3bcc06f 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4FissionProbability.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4FissionProbability.hh @@ -1,5 +1,5 @@ // This code implementation is the intellectual property of -// the GEANT4 collaboration. +// the RD44 GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, @@ -17,24 +17,18 @@ #include "G4VEmissionProbability.hh" -#include "G4VEvaporationChannel.hh" #include "G4EvaporationLevelDensityParameter.hh" #include "G4FissionLevelDensityParameter.hh" class G4FissionProbability : public G4VEmissionProbability { public: - // Only available constructor - G4FissionProbability(G4VEvaporationChannel * aChannel) - { theChannel = aChannel; }; - + // Default constructor + G4FissionProbability() {}; ~G4FissionProbability() {}; private: - // Default constructor - G4FissionProbability() {}; - // Copy constructor G4FissionProbability(const G4FissionProbability &right); @@ -43,13 +37,16 @@ private: G4bool operator!=(const G4FissionProbability &right) const; public: - G4double EmissionProbability(const G4Fragment & fragment, const G4double photonExcitation); + G4double EmissionProbability(const G4Fragment & fragment, const G4double MaximalKineticEnergy); private: - G4VEvaporationChannel * theChannel; + G4double EvaporationPairingCorrection(const G4int A, const G4int Z) const; - G4EvaporationLevelDensityParameter theEvapLDP; - G4FissionLevelDensityParameter theFissLDP; + G4double FissionPairingCorrection(const G4int A, const G4int Z) const; + + + G4EvaporationLevelDensityParameter theEvapLDP; + G4FissionLevelDensityParameter theFissLDP; }; diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4He3CoulombBarrier.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4He3CoulombBarrier.hh new file mode 100644 index 0000000000..a21cda6fc2 --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4He3CoulombBarrier.hh @@ -0,0 +1,40 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By copying, 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 2000/06/09 11:36:53 larazb Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// Hadronic Process: Nuclear De-excitations +// by V. Lara (Dec 1999) + +#ifndef G4He3CoulombBarrier_h +#define G4He3CoulombBarrier_h 1 + +#include "G4CoulombBarrier.hh" +#include "globals.hh" + +class G4He3CoulombBarrier : public G4CoulombBarrier +{ +public: + G4He3CoulombBarrier() : G4CoulombBarrier(3,2) {}; + ~G4He3CoulombBarrier() {}; + +private: + G4He3CoulombBarrier(const G4He3CoulombBarrier & right); + + const G4He3CoulombBarrier & operator=(const G4He3CoulombBarrier & right); + G4bool operator==(const G4He3CoulombBarrier & right) const; + G4bool operator!=(const G4He3CoulombBarrier & right) const; + +private: + + virtual G4double BarrierPenetrationFactor(const G4double aZ) const; + + +}; + +#endif diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4He3EvaporationChannel.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4He3EvaporationChannel.hh new file mode 100644 index 0000000000..8096781874 --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4He3EvaporationChannel.hh @@ -0,0 +1,46 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By 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: Nuclear De-excitations +// by V. Lara (Nov. 1999) +// + + +#ifndef G4He3EvaporationChannel_h +#define G4He3EvaporationChannel_h 1 + +#include "G4EvaporationChannel.hh" +#include "G4He3CoulombBarrier.hh" +#include "G4He3EvaporationProbability.hh" + +class G4He3EvaporationChannel : public G4EvaporationChannel +{ +public: + // only available constructor + G4He3EvaporationChannel() : G4EvaporationChannel(3,2, + &theEvaporationProbability,&theCoulombBarrier) {}; + + // destructor + ~G4He3EvaporationChannel() {}; + +private: + const G4He3EvaporationChannel & operator=(const G4He3EvaporationChannel & right); + + G4He3EvaporationChannel(const G4He3EvaporationChannel & right); + +public: + G4bool operator==(const G4He3EvaporationChannel & right) const; + G4bool operator!=(const G4He3EvaporationChannel & right) const; + +private: + + G4He3CoulombBarrier theCoulombBarrier; + + G4He3EvaporationProbability theEvaporationProbability; + +}; +#endif diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4He3EvaporationProbability.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4He3EvaporationProbability.hh new file mode 100644 index 0000000000..fb1359d0e0 --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4He3EvaporationProbability.hh @@ -0,0 +1,56 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By 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: Nuclear De-excitations +// by V. Lara (Nov 1999) +// + + + +#ifndef G4He3EvaporationProbability_h +#define G4He3EvaporationProbability_h 1 + + +#include "G4EvaporationProbability.hh" + + +class G4He3EvaporationProbability : public G4EvaporationProbability +{ +public: + // Only available constructor + G4He3EvaporationProbability(); + + ~G4He3EvaporationProbability() {} +private: + // Copy constructor + G4He3EvaporationProbability(const G4He3EvaporationProbability &right); + + const G4He3EvaporationProbability & operator=(const G4He3EvaporationProbability &right); + G4bool operator==(const G4He3EvaporationProbability &right) const; + G4bool operator!=(const G4He3EvaporationProbability &right) const; + + +private: + + virtual G4double CalcAlphaParam(const G4Fragment & fragment) const + { return 1.0 + CCoeficient(G4double(fragment.GetZ()-GetZ()));} + + virtual G4double CalcBetaParam(const G4Fragment & fragment) const + { return 0.0; } + + + G4double CCoeficient(const G4double aZ) const; + + // Excitation energy levels + G4RWTValVector ExcitEnergies; + // Spin of excitation energy levels + G4RWTValVector ExcitSpins; +}; + + +#endif diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4NeutronCoulombBarrier.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4NeutronCoulombBarrier.hh new file mode 100644 index 0000000000..c68c8008bf --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4NeutronCoulombBarrier.hh @@ -0,0 +1,41 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By copying, 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 2000/06/09 11:36:53 larazb Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// Hadronic Process: Nuclear De-excitations +// by V. Lara (Dec 1999) + +#ifndef G4NeutronCoulombBarrier_h +#define G4NeutronCoulombBarrier_h 1 + +#include "G4CoulombBarrier.hh" +#include "globals.hh" + +class G4NeutronCoulombBarrier : public G4CoulombBarrier +{ +public: + G4NeutronCoulombBarrier() : G4CoulombBarrier(1,0) {}; + ~G4NeutronCoulombBarrier() {}; + +private: + G4NeutronCoulombBarrier(const G4NeutronCoulombBarrier & right); + + const G4NeutronCoulombBarrier & operator=(const G4NeutronCoulombBarrier & right); + G4bool operator==(const G4NeutronCoulombBarrier & right) const; + G4bool operator!=(const G4NeutronCoulombBarrier & right) const; + +private: + + virtual G4double BarrierPenetrationFactor(const G4double aZ) const + { return 1.0;} + + +}; + +#endif diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4NeutronEvaporationChannel.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4NeutronEvaporationChannel.hh new file mode 100644 index 0000000000..9ccd7e180f --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4NeutronEvaporationChannel.hh @@ -0,0 +1,46 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By 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: Nuclear De-excitations +// by V. Lara (Nov. 1999) +// + + +#ifndef G4NeutronEvaporationChannel_h +#define G4NeutronEvaporationChannel_h 1 + +#include "G4EvaporationChannel.hh" +#include "G4NeutronCoulombBarrier.hh" +#include "G4NeutronEvaporationProbability.hh" + +class G4NeutronEvaporationChannel : public G4EvaporationChannel +{ +public: + // only available constructor + G4NeutronEvaporationChannel() : G4EvaporationChannel(1,0, + &theEvaporationProbability,&theCoulombBarrier) {}; + + // destructor + ~G4NeutronEvaporationChannel() {}; + +private: + const G4NeutronEvaporationChannel & operator=(const G4NeutronEvaporationChannel & right); + + G4NeutronEvaporationChannel(const G4NeutronEvaporationChannel & right); + +public: + G4bool operator==(const G4NeutronEvaporationChannel & right) const; + G4bool operator!=(const G4NeutronEvaporationChannel & right) const; + +private: + + G4NeutronCoulombBarrier theCoulombBarrier; + + G4NeutronEvaporationProbability theEvaporationProbability; + +}; +#endif diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4NeutronEvaporationProbability.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4NeutronEvaporationProbability.hh new file mode 100644 index 0000000000..1686f64f7a --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4NeutronEvaporationProbability.hh @@ -0,0 +1,54 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By 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: Nuclear De-excitations +// by V. Lara (Nov 1999) +// + + + +#ifndef G4NeutronEvaporationProbability_h +#define G4NeutronEvaporationProbability_h 1 + + +#include "G4EvaporationProbability.hh" + + +class G4NeutronEvaporationProbability : public G4EvaporationProbability +{ +public: + // Only available constructor + G4NeutronEvaporationProbability(); + + ~G4NeutronEvaporationProbability() {} +private: + // Copy constructor + G4NeutronEvaporationProbability(const G4NeutronEvaporationProbability &right); + + const G4NeutronEvaporationProbability & operator=(const G4NeutronEvaporationProbability &right); + G4bool operator==(const G4NeutronEvaporationProbability &right) const; + G4bool operator!=(const G4NeutronEvaporationProbability &right) const; + + +private: + + virtual G4double CalcAlphaParam(const G4Fragment & fragment) const + { return 0.76+2.2/pow(G4double(fragment.GetA()-GetA()),1.0/3.0);} + + virtual G4double CalcBetaParam(const G4Fragment & fragment) const + { return (2.12/pow(G4double(fragment.GetA()-GetA()),2.0/3.0) - 0.05)*MeV/CalcAlphaParam(fragment); } + + // Excitation energy levels + G4RWTValVector ExcitEnergies; + // Spin of excitation energy levels + G4RWTValVector ExcitSpins; + +}; + + +#endif diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4ProtonCoulombBarrier.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4ProtonCoulombBarrier.hh new file mode 100644 index 0000000000..5fabb6e813 --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4ProtonCoulombBarrier.hh @@ -0,0 +1,40 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By copying, 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 2000/06/09 11:36:53 larazb Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// Hadronic Process: Nuclear De-excitations +// by V. Lara (Dec 1999) + +#ifndef G4ProtonCoulombBarrier_h +#define G4ProtonCoulombBarrier_h 1 + +#include "G4CoulombBarrier.hh" +#include "globals.hh" + +class G4ProtonCoulombBarrier : public G4CoulombBarrier +{ +public: + G4ProtonCoulombBarrier() : G4CoulombBarrier(1,1) {}; + ~G4ProtonCoulombBarrier() {}; + +private: + G4ProtonCoulombBarrier(const G4ProtonCoulombBarrier & right); + + const G4ProtonCoulombBarrier & operator=(const G4ProtonCoulombBarrier & right); + G4bool operator==(const G4ProtonCoulombBarrier & right) const; + G4bool operator!=(const G4ProtonCoulombBarrier & right) const; + +private: + + virtual G4double BarrierPenetrationFactor(const G4double aZ) const; + + +}; + +#endif diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4ProtonEvaporationChannel.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4ProtonEvaporationChannel.hh new file mode 100644 index 0000000000..1356707787 --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4ProtonEvaporationChannel.hh @@ -0,0 +1,46 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By 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: Nuclear De-excitations +// by V. Lara (Nov. 1999) +// + + +#ifndef G4ProtonEvaporationChannel_h +#define G4ProtonEvaporationChannel_h 1 + +#include "G4EvaporationChannel.hh" +#include "G4ProtonCoulombBarrier.hh" +#include "G4ProtonEvaporationProbability.hh" + +class G4ProtonEvaporationChannel : public G4EvaporationChannel +{ +public: + // only available constructor + G4ProtonEvaporationChannel() : G4EvaporationChannel(1,1, + &theEvaporationProbability,&theCoulombBarrier) {}; + + // destructor + ~G4ProtonEvaporationChannel() {}; + +private: + const G4ProtonEvaporationChannel & operator=(const G4ProtonEvaporationChannel & right); + + G4ProtonEvaporationChannel(const G4ProtonEvaporationChannel & right); + +public: + G4bool operator==(const G4ProtonEvaporationChannel & right) const; + G4bool operator!=(const G4ProtonEvaporationChannel & right) const; + + +private: + + G4ProtonEvaporationProbability theEvaporationProbability; + + G4ProtonCoulombBarrier theCoulombBarrier; +}; +#endif diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4ProtonEvaporationProbability.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4ProtonEvaporationProbability.hh new file mode 100644 index 0000000000..8ec366683f --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4ProtonEvaporationProbability.hh @@ -0,0 +1,55 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By 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: Nuclear De-excitations +// by V. Lara (Nov 1999) +// + + + +#ifndef G4ProtonEvaporationProbability_h +#define G4ProtonEvaporationProbability_h 1 + + +#include "G4EvaporationProbability.hh" + + +class G4ProtonEvaporationProbability : public G4EvaporationProbability +{ +public: + // Only available constructor + G4ProtonEvaporationProbability(); + + ~G4ProtonEvaporationProbability() {} +private: + // Copy constructor + G4ProtonEvaporationProbability(const G4ProtonEvaporationProbability &right); + + const G4ProtonEvaporationProbability & operator=(const G4ProtonEvaporationProbability &right); + G4bool operator==(const G4ProtonEvaporationProbability &right) const; + G4bool operator!=(const G4ProtonEvaporationProbability &right) const; + + +private: + + virtual G4double CalcAlphaParam(const G4Fragment & fragment) const + { return 1.0 + CCoeficient(G4double(fragment.GetZ()-GetZ()));} + + virtual G4double CalcBetaParam(const G4Fragment & fragment) const + { return 0.0; } + + + G4double CCoeficient(const G4double aZ) const; + + // Excitation energy levels + G4RWTValVector ExcitEnergies; + // Spin of excitation energy levels + G4RWTValVector ExcitSpins; + +}; +#endif diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4TritonCoulombBarrier.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4TritonCoulombBarrier.hh new file mode 100644 index 0000000000..ba67e49f58 --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4TritonCoulombBarrier.hh @@ -0,0 +1,40 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By copying, 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.1 2000/06/09 11:36:53 larazb Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// Hadronic Process: Nuclear De-excitations +// by V. Lara (Dec 1999) + +#ifndef G4TritonCoulombBarrier_h +#define G4TritonCoulombBarrier_h 1 + +#include "G4CoulombBarrier.hh" +#include "globals.hh" + +class G4TritonCoulombBarrier : public G4CoulombBarrier +{ +public: + G4TritonCoulombBarrier() : G4CoulombBarrier(3,1) {}; + ~G4TritonCoulombBarrier() {}; + +private: + G4TritonCoulombBarrier(const G4TritonCoulombBarrier & right); + + const G4TritonCoulombBarrier & operator=(const G4TritonCoulombBarrier & right); + G4bool operator==(const G4TritonCoulombBarrier & right) const; + G4bool operator!=(const G4TritonCoulombBarrier & right) const; + +private: + + virtual G4double BarrierPenetrationFactor(const G4double aZ) const; + + +}; + +#endif diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4TritonEvaporationChannel.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4TritonEvaporationChannel.hh new file mode 100644 index 0000000000..c32f19a0a0 --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4TritonEvaporationChannel.hh @@ -0,0 +1,46 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By 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: Nuclear De-excitations +// by V. Lara (Nov. 1999) +// + + +#ifndef G4TritonEvaporationChannel_h +#define G4TritonEvaporationChannel_h 1 + +#include "G4EvaporationChannel.hh" +#include "G4TritonCoulombBarrier.hh" +#include "G4TritonEvaporationProbability.hh" + +class G4TritonEvaporationChannel : public G4EvaporationChannel +{ +public: + // only available constructor + G4TritonEvaporationChannel() : G4EvaporationChannel(3,1, + &theEvaporationProbability,&theCoulombBarrier) {}; + + // destructor + ~G4TritonEvaporationChannel() {}; + +private: + const G4TritonEvaporationChannel & operator=(const G4TritonEvaporationChannel & right); + + G4TritonEvaporationChannel(const G4TritonEvaporationChannel & right); + +public: + G4bool operator==(const G4TritonEvaporationChannel & right) const; + G4bool operator!=(const G4TritonEvaporationChannel & right) const; + +private: + + G4TritonCoulombBarrier theCoulombBarrier; + + G4TritonEvaporationProbability theEvaporationProbability; + +}; +#endif diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4TritonEvaporationProbability.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4TritonEvaporationProbability.hh new file mode 100644 index 0000000000..e015429416 --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4TritonEvaporationProbability.hh @@ -0,0 +1,56 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By 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: Nuclear De-excitations +// by V. Lara (Nov 1999) +// + + + +#ifndef G4TritonEvaporationProbability_h +#define G4TritonEvaporationProbability_h 1 + + +#include "G4EvaporationProbability.hh" + + +class G4TritonEvaporationProbability : public G4EvaporationProbability +{ +public: + // Only available constructor + G4TritonEvaporationProbability(); + + ~G4TritonEvaporationProbability() {} +private: + // Copy constructor + G4TritonEvaporationProbability(const G4TritonEvaporationProbability &right); + + const G4TritonEvaporationProbability & operator=(const G4TritonEvaporationProbability &right); + G4bool operator==(const G4TritonEvaporationProbability &right) const; + G4bool operator!=(const G4TritonEvaporationProbability &right) const; + + +private: + + virtual G4double CalcAlphaParam(const G4Fragment & fragment) const + { return 1.0 + CCoeficient(G4double(fragment.GetZ()-GetZ()));} + + virtual G4double CalcBetaParam(const G4Fragment & fragment) const + { return 0.0; } + + G4double CCoeficient(const G4double aZ) const; + + // Excitation energy levels + G4RWTValVector ExcitEnergies; + // Spin of excitation energy levels + G4RWTValVector ExcitSpins; + +}; + + +#endif diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4VCoulombBarrier.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4VCoulombBarrier.hh new file mode 100644 index 0000000000..850c03ee5f --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4VCoulombBarrier.hh @@ -0,0 +1,50 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By copying, 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.1 2000/06/09 11:36:54 larazb Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// Hadronic Process: Nuclear De-excitations +// by V. Lara (Nov 1999) + +#ifndef G4VCoulombBarrier_h +#define G4VCoulombBarrier_h 1 + +#include "globals.hh" + + +class G4VCoulombBarrier +{ +public: + G4VCoulombBarrier(const G4int anA, const G4int aZ); + virtual ~G4VCoulombBarrier() {}; + +protected: + G4VCoulombBarrier() : theA(1),theZ(0) {}; + +private: + G4VCoulombBarrier(const G4VCoulombBarrier & right); + + const G4VCoulombBarrier & operator=(const G4VCoulombBarrier & right); + G4bool operator==(const G4VCoulombBarrier & right) const; + G4bool operator!=(const G4VCoulombBarrier & right) const; + +public: + virtual G4double GetCoulombBarrier(const G4int ARes, const G4int ZRes, + const G4double U) const = 0; + + G4int GetA(void) const {return theA;} + G4int GetZ(void) const {return theZ;} + +private: + + G4int theA; + G4int theZ; + +}; + +#endif 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 51c5dbf17b..c51e4c9d9a 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4VEmissionProbability.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4VEmissionProbability.hh @@ -1,5 +1,5 @@ // This code implementation is the intellectual property of -// the GEANT4 collaboration. +// the RD44 GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, @@ -23,7 +23,7 @@ class G4VEmissionProbability { public: G4VEmissionProbability() {}; - virtual ~G4VEmissionProbability() {}; // * + virtual ~G4VEmissionProbability() {}; private: G4VEmissionProbability(const G4VEmissionProbability &right); @@ -33,7 +33,7 @@ private: G4bool operator!=(const G4VEmissionProbability &right) const; public: - virtual G4double EmissionProbability(const G4Fragment & fragment, const G4double photonExcitation) = 0; + virtual G4double EmissionProbability(const G4Fragment & fragment, const G4double anEnergy) = 0; }; 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 32e5c891df..d7bf8062e8 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4VEvaporationChannel.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4VEvaporationChannel.hh @@ -1,5 +1,5 @@ // This code implementation is the intellectual property of -// the GEANT4 collaboration. +// the RD44 GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, @@ -38,16 +38,6 @@ public: virtual G4double GetEmissionProbability(void) const = 0; - - virtual inline G4int GetA(void) const { return 0; } - virtual inline G4int GetZ(void) const { return 0; } - virtual inline G4int GetResidualA(void) const { return 0; } - virtual inline G4int GetResidualZ(void) const { return 0; } - virtual inline G4int GetGamma(void) const { return 0; } - virtual inline G4double GetLevelDensityParameter(void) const { return 0.0; } - virtual inline G4double GetCoulombBarrier(void) const { return 0.0; } - virtual inline G4double GetMaximalKineticEnergy(void) const { return 0.0; }; - virtual inline G4double GetFissionBarrier(void) const { return 0.0;} }; 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 6060596a5e..e618e3a1bd 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4VFissionBarrier.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4VFissionBarrier.hh @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the GEANT4 collaboration. +// the RD44 GEANT4 collaboration. // // By copying, 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.1.10.1 1999/12/07 20:51:35 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VFissionBarrier.hh,v 1.3 2000/06/09 11:36:54 larazb Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) @@ -31,7 +31,7 @@ private: G4bool operator!=(const G4VFissionBarrier & right) const; public: - virtual G4double FissionBarrier(const G4int A, const G4int Z) = 0; + virtual G4double FissionBarrier(const G4int A, const G4int Z,const G4double U) = 0; }; diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4AlphaCoulombBarrier.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4AlphaCoulombBarrier.cc new file mode 100644 index 0000000000..483bad0833 --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4AlphaCoulombBarrier.cc @@ -0,0 +1,56 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By copying, 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.1 2000/06/09 11:43:34 larazb Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// Hadronic Process: Nuclear De-excitations +// by V. Lara (Dec 1999) + + +#include "G4AlphaCoulombBarrier.hh" + +G4AlphaCoulombBarrier::G4AlphaCoulombBarrier(const G4AlphaCoulombBarrier & right) +{ + G4Exception("G4AlphaCoulombBarrier::copy_constructor meant to not be accessable."); +} + + +const G4AlphaCoulombBarrier & G4AlphaCoulombBarrier::operator=(const G4AlphaCoulombBarrier & right) +{ + G4Exception("G4AlphaCoulombBarrier::operator= meant to not be accessable."); + return *this; +} + +G4bool G4AlphaCoulombBarrier::operator==(const G4AlphaCoulombBarrier & right) const +{ + return false; +} + +G4bool G4AlphaCoulombBarrier::operator!=(const G4AlphaCoulombBarrier & right) const +{ + return true; +} + + +G4double G4AlphaCoulombBarrier::BarrierPenetrationFactor(const G4double aZ) const +{ + // Data comes from + // Dostrovsky, Fraenkel and Friedlander + // Physical Review, vol 116, num. 3 1959 + // + // const G4int size = 5; + // const G4double Zlist[size] = {10.0, 20.0, 30.0, 50.0, 70.0}; + // const G4double Kalpha[size] = {0.68, 0.82, 0.91, 0.97, 0.98}; + G4double K = 1.0; + if (aZ>=70.0) { + K = 0.98; + } else { + K = (((0.23684e-5*aZ) - 0.42143e-3)*aZ + 0.25222e-1)*aZ + 0.46699; + } + return K; +} diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4AlphaEvaporationChannel.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4AlphaEvaporationChannel.cc new file mode 100644 index 0000000000..6203149cd8 --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4AlphaEvaporationChannel.cc @@ -0,0 +1,37 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By 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: Nuclear De-excitations +// by V. Lara (Nov. 1999) +// + +#include "G4AlphaEvaporationChannel.hh" + + +const G4AlphaEvaporationChannel & G4AlphaEvaporationChannel::operator=(const G4AlphaEvaporationChannel & right) +{ + G4Exception("G4AlphaEvaporationChannel::operator= meant to not be accessable"); + return *this; +} + +G4AlphaEvaporationChannel::G4AlphaEvaporationChannel(const G4AlphaEvaporationChannel & right) +{ + G4Exception("G4AlphaEvaporationChannel::CopyConstructor meant to not be accessable"); +} + +G4bool G4AlphaEvaporationChannel::operator==(const G4AlphaEvaporationChannel & right) const +{ + return (this == (G4AlphaEvaporationChannel *) &right); + // return false; +} + +G4bool G4AlphaEvaporationChannel::operator!=(const G4AlphaEvaporationChannel & right) const +{ + return (this != (G4AlphaEvaporationChannel *) &right); + // return true; +} + diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4AlphaEvaporationProbability.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4AlphaEvaporationProbability.cc new file mode 100644 index 0000000000..5194494291 --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4AlphaEvaporationProbability.cc @@ -0,0 +1,91 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By 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: Nuclear De-excitations +// by V. Lara (Nov 1999) +// + + +#include "G4AlphaEvaporationProbability.hh" + +G4AlphaEvaporationProbability::G4AlphaEvaporationProbability() : + G4EvaporationProbability(4,2,4) // A,Z,Gamma +{ + const G4int NumExcitedStates = 31+1; + ExcitEnergies.reshape(NumExcitedStates); + ExcitSpins.reshape(NumExcitedStates); + for (G4int i = 0; i < NumExcitedStates; i++) { + ExcitEnergies(i) = 0.0; + ExcitSpins(i) = 0; + } + + ExcitEnergies(18) = 7.98*MeV; + ExcitEnergies(20) = 6.90*MeV; + ExcitEnergies(25) = 5.83*MeV; + ExcitEnergies(26) = 8.57*MeV; + ExcitEnergies(31) = 5.33*MeV; + + ExcitSpins(18) = 4; + ExcitSpins(20) = 6; + ExcitSpins(25) = 7; + ExcitSpins(26) = 4; + ExcitSpins(31) = 13; + + SetExcitationEnergiesPtr(&ExcitEnergies); + SetExcitationSpinsPtr(&ExcitSpins); +} + + +G4AlphaEvaporationProbability::G4AlphaEvaporationProbability(const G4AlphaEvaporationProbability &right) +{ + G4Exception("G4AlphaEvaporationProbability::copy_constructor meant to not be accessable"); +} + + + + +const G4AlphaEvaporationProbability & G4AlphaEvaporationProbability:: +operator=(const G4AlphaEvaporationProbability &right) +{ + G4Exception("G4AlphaEvaporationProbability::operator= meant to not be accessable"); + return *this; +} + + +G4bool G4AlphaEvaporationProbability::operator==(const G4AlphaEvaporationProbability &right) const +{ + return false; +} + +G4bool G4AlphaEvaporationProbability::operator!=(const G4AlphaEvaporationProbability &right) const +{ + return true; +} + +G4double G4AlphaEvaporationProbability::CCoeficient(const G4double aZ) const +{ + // Data comes from + // Dostrovsky, Fraenkel and Friedlander + // Physical Review, vol 116, num. 3 1959 + // + // const G4int size = 5; + // G4double Zlist[5] = { 10.0, 20.0, 30.0, 50.0, 70.0}; + // G4double Calpha[5] = { 0.10, 0.10, 0.10, 0.08, 0.06}; + G4double C = 0.0; + + + if (aZ <= 30) { + C = 0.10; + } else if (aZ <= 50) { + C = 0.1 + -((aZ-50.)/20.)*0.02; + } else if (aZ < 70) { + C = 0.08 + -((aZ-70.)/20.)*0.02; + } else { + C = 0.06; + } + return C; +} diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4CameronGilbertPairingCorrections.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4CameronGilbertPairingCorrections.cc new file mode 100644 index 0000000000..6c14ee3471 --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4CameronGilbertPairingCorrections.cc @@ -0,0 +1,47 @@ + +#include "G4CameronGilbertPairingCorrections.hh" + + +// Data comes from: +// A. Gilbert and A.G.W. Cameron, Can. J. Phys., 43, 1446(1965) + +// P(Z) +G4double G4CameronGilbertPairingCorrections::PairingZTable +[G4CameronGilbertPairingCorrections::ZTableSize] = { +0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, +0.00, 2.46, 0.00, 2.09, 0.00, 1.62, 0.00, 1.62, 0.00, 1.83, +0.00, 1.73, 0.00, 1.35, 0.00, 1.54, 0.00, 1.20, 0.00, 1.06, +0.00, 1.36, 0.00, 1.43, 0.00, 1.17, 0.00, 1.24, 0.00, 1.20, +0.00, 1.28, 0.00, 1.28, 0.00, 1.35, 0.00, 1.36, 0.00, 1.19, +0.00, 1.14, 0.00, 1.12, 0.00, 1.58, 0.00, 1.17, 0.00, 1.18, +0.00, 1.22, 0.00, 0.97, 0.00, 0.92, 0.00, 0.62, 0.00, 0.68, +0.00, 0.64, 0.00, 0.72, 0.00, 0.75, 0.00, 0.71, 0.00, 0.87, +0.00, 0.83, 0.00, 0.89, 0.00, 0.79, 0.00, 0.89, 0.00, 0.78, +0.00, 0.69, 0.00, 0.61, 0.00, 0.72, 0.00, 0.77 +}; +// P(N) +G4double G4CameronGilbertPairingCorrections::PairingNTable +[G4CameronGilbertPairingCorrections::NTableSize] = { +0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, +0.00, 2.67, 0.00, 1.80, 0.00, 1.67, 0.00, 1.86, 0.00, 2.04, +0.00, 1.64, 0.00, 1.44, 0.00, 1.54, 0.00, 1.30, 0.00, 1.27, +0.00, 1.29, 0.00, 1.41, 0.00, 1.50, 0.00, 1.50, 0.00, 1.43, +0.00, 1.88, 0.00, 1.47, 0.00, 1.57, 0.00, 1.46, 0.00, 0.93, +0.00, 0.72, 0.00, 1.12, 0.00, 1.29, 0.00, 0.94, 0.00, 1.24, +0.00, 1.25, 0.00, 1.14, 0.00, 1.32, 0.00, 1.15, 0.00, 1.24, +0.00, 1.43, 0.00, 1.09, 0.00, 1.20, 0.00, 1.04, 0.00, 0.70, +0.00, 0.85, 0.00, 0.76, 0.00, 0.92, 0.00, 0.99, 0.00, 1.10, +0.00, 0.92, 0.00, 0.73, 0.00, 0.70, 0.00, 0.87, 0.00, 0.61, +0.00, 0.69, 0.00, 0.55, 0.00, 0.40, 0.00, 0.73, 0.00, 0.58, +0.00, 0.86, 0.00, 1.13, 0.00, 0.84, 0.00, 0.79, 0.00, 0.82, +0.00, 0.71, 0.00, 0.41, 0.00, 0.38, 0.00, 0.67, 0.00, 0.61, +0.00, 0.78, 0.00, 0.67, 0.00, 0.67, 0.00, 0.79, 0.00, 0.60, +0.00, 0.57, 0.00, 0.49, 0.00, 0.43, 0.00, 0.50, 0.00, 0.39 +}; + +G4CameronGilbertPairingCorrections G4CameronGilbertPairingCorrections::theInstance(10.0); + +G4CameronGilbertPairingCorrections::G4CameronGilbertPairingCorrections(G4double dummy) +{ + G4double even_more_dummy = dummy; +} diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4CameronGilbertShellCorrections.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4CameronGilbertShellCorrections.cc new file mode 100644 index 0000000000..20993f218d --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4CameronGilbertShellCorrections.cc @@ -0,0 +1,47 @@ + +#include "G4CameronGilbertShellCorrections.hh" + + +// Data comes from: +// A. Gilbert and A.G.W. Cameron, Can. J. Phys., 43, 1446(1965) + +// S(Z) +const G4double G4CameronGilbertShellCorrections::ShellZTable +[G4CameronGilbertShellCorrections::ZTableSize] = { + 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, + -2.91, -4.17, -5.72, -7.80, -8.97, -9.70,-10.10,-10.70,-11.38,-12.07, +-12.55,-13.24,-13.93,-14.71,-15.53,-16.37,-17.36,-18.52,-18.44,-18.19, +-17.68,-17.09,-16.65,-16.66,-16.59,-16.35,-16.18,-16.41,-16.60,-16.54, +-16.42,-16.84,-17.22,-17.42,-17.52,-17.82,-18.19,-18.58,-19.11,-19.83, +-19.14,-18.35,-17.40,-16.54,-15.68,-14.75,-13.71,-12.87,-12.18,-11.61, +-11.09,-10.78,-10.53,-10.41,-10.21, -9.85, -9.36, -8.97, -8.56, -8.13, + -7.68, -7.33, -7.11, -7.16, -7.05, -6.81, -6.56, -6.95, -7.52, -8.03, + -8.41, -8.86, -7.71, -6.38, -5.47, -4.78, -4.37, -4.17, -4.12, -4.29, + -4.61, -5.04, -5.48, -5.96, -6.40, -6.87, -7.20, -7.74 +}; +// S(N) +const G4double G4CameronGilbertShellCorrections::ShellNTable +[G4CameronGilbertShellCorrections::NTableSize] = { // 155 + 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, + 6.80, 7.53, 7.55, 7.21, 7.44, 8.07, 8.94, 9.81, 10.60, 11.39, +12.54, 13.68, 14.34, 14.19, 13.83, 13.50, 13.00, 12.13, 12.60, 13.26, +14.13, 14.92, 15.60, 16.38, 17.08, 17.55, 17.98, 18.33, 18.56, 18.71, +18.65, 18.55, 18.52, 18.34, 18.01, 17.38, 16.56, 15.62, 14.38, 12.88, +13.24, 13.71, 14.40, 15.16, 15.89, 16.43, 16.97, 17.59, 18.08, 18.72, +19.22, 19.51, 19.73, 19.91, 20.06, 20.16, 20.09, 19.83, 19.41, 19.06, +18.66, 17.73, 17.03, 16.44, 16.00, 15.33, 14.49, 13.42, 12.28, 11.14, +10.10, 9.09, 10.00, 10.64, 11.18, 11.70, 12.22, 12.71, 13.05, 12.99, +12.62, 12.11, 11.66, 11.21, 10.81, 10.38, 10.03, 9.65, 9.38, 8.99, + 8.62, 8.33, 8.10, 7.82, 7.56, 7.33, 7.15, 6.83, 6.69, 6.55, + 6.53, 6.49, 6.39, 5.82, 5.26, 4.53, 3.83, 3.08, 2.37, 1.72, + 1.05, 0.27, -0.69, -1.69, -2.58, -3.16, -1.72, -0.41, 0.71, 1.66, + 2.62, 3.22, 3.76, 4.10, 4.46, 4.83, 5.09, 5.18, 5.17, 5.10, + 5.05, 5.04, 5.03, 4.99, 4.98, 5.11, 5.27, 5.39, 5.37, 5.30 +}; + +G4CameronGilbertShellCorrections G4CameronGilbertShellCorrections::theInstance(10.0); + +G4CameronGilbertShellCorrections::G4CameronGilbertShellCorrections(G4double dummy) +{ + G4double even_more_dumy = dummy; +} diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4CameronShellPlusPairingCorrections.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4CameronShellPlusPairingCorrections.cc new file mode 100644 index 0000000000..750544c083 --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4CameronShellPlusPairingCorrections.cc @@ -0,0 +1,65 @@ + +#include "G4CameronShellPlusPairingCorrections.hh" + + +// S(Z)+P(Z) from Tab. 1 from A.G.W. Cameron, Canad. J. Phys., 35(1957)1021 +// or Delta M(Z) from Tab. 97 of book [1] +G4double G4CameronShellPlusPairingCorrections::SPZTable +[G4CameronShellPlusPairingCorrections::TableSize] = { + 20.80, 15.80, 21.00, 16.80, 19.80, 16.50, 18.80, 16.50, 18.50, 17.20, // 1 - 10 + 18.26, 15.05, 16.01, 12.04, 13.27, 11.09, 12.17, 10.26, 11.04, 8.41, // 11 - 20 + 9.79, 7.36, 8.15, 5.63, 5.88, 3.17, 3.32, .82, 1.83, .97, // 21 - 30 + 2.33, 1.27, 2.92, 1.61, 2.91, 1.35, 2.40, .89, 1.74, .36, // 31 + 0.95, -0.65, -0.04, -1.73, -0.96, -2.87, -2.05, -4.05, -3.40, -5.72, // 41 + -3.75, -4.13, -2.42, -2.85, -1.01, -1.33, 0.54, -0.02, 1.74, 0.75, // 51 + 2.24, 1.00, 1.98, 0.79, 1.54, 0.39, 1.08, 0.00, 0.78, -0.35, // 61 + 0.58, -0.55, 0.59, -0.61, 0.59, -0.35, 0.32, -0.96, -0.52, -2.08, // 71 + -2.46, -3.64, -1.55, -0.96, 0.97, 0.88, 2.37, 1.75, 2.72, 1.90, // 81 + 2.55, 1.46, 1.93, 0.86, 1.17, 0.08, 0.39, -0.76, -0.39, -1.51, // 91 - 100 + -1.17, -2.36, -1.95, -3.06, -2.62, -3.55, -2.95, -3.75, -3.07, -3.79, // 101 - 110 + -3.06, -3.77, -3.05, -3.78, -3.12, -3.90, -3.35, -4.24, -3.86, -4.92, // 111 - 120 + -5.06, -6.77, -7.41, -9.18,-10.16,-11.12, -9.76, -9.23, -7.96, -7.65, // 121 - 130 + // --------- from this point there are not tabulated values ----------------------- + 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, // 131 - 140 + 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, // 141 - 150 + 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, // 151 + 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, // 161 + 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, // 171 + 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, // 181 + 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 // 191 - 200 +}; + +// S(N)+P(N) from Tab. 1 from A.G.W. Cameron, Canad. J. Phys., 35(1957)1021 +// or Delta M(N) from Tab. 97 of book [1] +G4double G4CameronShellPlusPairingCorrections::SPNTable +[G4CameronShellPlusPairingCorrections::TableSize] = { + -8.40,-12.90, -8.00, 11.90, -9.20,-12.50,-10.80,-13.60,-11.20,-12.20, // 1 - 10 + -12.81,-15.40,-13.07,-15.80,-13.81,-14.98,-12.63,-13.76,-11.37,-12.38, // 11 - 20 + -9.23, -9.65, -7.64, -9.17, -8.05, -9.72, -8.87,-10.76, -8.64, -8.89, // 21 - 30 + -6.60, -7.13, -4.77, -5.33, -3.06, -3.79, -1.72, -2.79, -0.93, -2.19, // 31 + -0.52, -1.90, -0.45, -2.20, -1.22, -3.07, -2.42, -4.37, -3.94, -6.08, // 41 + -4.49, -4.50, -3.14, -2.93, -1.04, -1.36, 0.69, 0.21, 2.11, 1.33, // 51 + 3.29, 2.46, 4.30, 3.32, 4.79, 3.62, 4.97, 3.64, 4.63, 3.07, // 61 + 4.06, 2.49, 3.30, 1.46, 2.06, 0.51, 0.74, -1.18, -1.26, -3.54, // 71 + -3.97, -5.26, -4.18, -3.71, -2.10, -1.70, -0.08, -0.18, 0.94, 0.27, // 81 + 1.13, 0.08, 0.91, -0.31, 0.49, -0.78, 0.08, -1.15, -0.23, -1.41, // 91 - 100 + -0.42, -1.55, -0.55, -1.66, -0.66, -1.73, -0.75, -1.74, -0.78, -1.69, // 101 - 110 + -0.78, -1.60, -0.75, -1.46, -0.67, -1.26, -0.51, -1.04, -0.53, -1.84, // 111 - 120 + -2.42, -4.52, -4.76, -6.33, -6.76, -7.81, -5.80, -5.37, -3.63, -3.35, // 121 - 130 + -1.75, -1.88, -0.61, -0.90, 0.09, -0.32, 0.55, -0.13, 0.70, -0.06, // 131 - 140 + 0.49, -0.20, 0.40, -0.22, 0.36, -0.09, 0.58, 0.12, 0.75, 0.15, // 141 - 150 + 0.70, 0.17, 1.11, 0.89, 1.85, 1.62, 2.54, 2.29, 3.20, 2.91, // 151 + 3.84, 3.53, 4.48, 4.15, 5.12, 4.78, 5.75, 5.39, 6.31, 5.91, // 161 + 6.87, 6.33, 7.13, 6.61, 7.30, 6.31, 6.27, 4.83, 4.49, 2.85, // 171 + 2.32, 0.58, -0.11, -0.98, 0.81, 1.77, 3.37, 4.13, 5.60, 6.15, // 181 + 7.29, 7.35, 7.95, 7.67, 8.16, 7.83, 8.31, 8.01, 8.53, 8.27 // 191 - 200 +}; + + + +G4CameronShellPlusPairingCorrections G4CameronShellPlusPairingCorrections::theInstance(10.0); + +G4CameronShellPlusPairingCorrections::G4CameronShellPlusPairingCorrections(G4double dummy) +{ + G4double even_more_dummy = dummy; +} diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4CameronTruranHilfPairingCorrections.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4CameronTruranHilfPairingCorrections.cc new file mode 100644 index 0000000000..93306586ef --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4CameronTruranHilfPairingCorrections.cc @@ -0,0 +1,52 @@ + +#include "G4CameronTruranHilfPairingCorrections.hh" + + + +// Data comes from: +// J.W. Truran, A.G.W. Cameron, and E. Hilf, +// Proc. Int. Conf. on the Properties of Nuclei Far From the Beta-Stability, +// Leysin, Switzerland, August 31 - September 4, 1970, Vol.1, p. 275 +// S(Z) +const G4double G4CameronTruranHilfPairingCorrections::PairingZTable +[G4CameronTruranHilfPairingCorrections::ZTableSize] = { // 102 + 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , +-2.200, 0. ,-2.120, 0. ,-1.981, 0. ,-1.491, 0. ,-1.450, 0., +-1.701, 0. ,-1.344, 0. ,-1.349, 0. ,-1.397, 0. ,-1.311, 0., +-1.161, 0. ,-1.201, 0. ,-1.449, 0. ,-1.331, 0. ,-1.272, 0., +-1.198, 0. ,-1.340, 0. ,-1.407, 0. ,-1.287, 0. ,-1.334, 0., +-1.307, 0. ,-1.128, 0. ,-1.152, 0. ,-1.139, 0. ,-1.138, 0., +-1.115, 0. ,-1.070, 0. ,-1.096, 0. ,-1.123, 0. ,-0.901, 0., +-0.933, 0. ,-0.714, 0. ,-0.799, 0. ,-0.840, 0. ,-0.726, 0., +-0.815, 0. ,-0.715, 0. ,-0.788, 0. ,-0.793, 0. ,-0.663, 0., +-0.705, 0. ,-0.711, 0. ,-0.561, 0. ,-0.694, 0. ,-0.683, 0., +-0.501, 0. ,-0.491 +}; +// S(N) +const G4double G4CameronTruranHilfPairingCorrections::PairingNTable +[G4CameronTruranHilfPairingCorrections::NTableSize] = { + 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , +-2.400, 0. ,-2.358, 0. ,-2.057, 0. ,-1.462, 0. ,-1.592, 0., +-1.528, 0. ,-1.470, 0. ,-1.310, 0. ,-1.316, 0. ,-1.265, 0., +-1.279, 0. ,-1.256, 0. ,-1.285, 0. ,-1.440, 0. ,-1.517, 0., +-1.486, 0. ,-1.456, 0. ,-1.471, 0. ,-1.336, 0. ,-1.341, 0., +-1.278, 0. ,-0.821, 0. ,-0.814, 0. ,-1.095, 0. ,-1.147, 0., +-1.295, 0. ,-1.281, 0. ,-1.245, 0. ,-1.197, 0. ,-1.227, 0., +-1.291, 0. ,-1.254, 0. ,-1.310, 0. ,-1.171, 0. ,-1.092, 0., +-1.062, 0. ,-0.713, 0. ,-0.822, 0. ,-0.843, 0. ,-0.968, 0., +-1.117, 0. ,-0.999, 0. ,-0.877, 0. ,-0.844, 0. ,-0.889, 0., +-0.729, 0. ,-0.706, 0. ,-0.623, 0. ,-0.511, 0. ,-0.773, 0., +-0.662, 0. ,-0.808, 0. ,-0.889, 0. ,-0.930, 0. ,-0.771, 0., +-0.751, 0. ,-0.835, 0. ,-0.658, 0. ,-0.607, 0. ,-0.657, 0., +-0.695, 0. ,-0.457, 0. ,-0.345, 0. ,-0.452, 0. ,-0.648, 0., +-0.681, 0. ,-0.416, 0. ,-0.545, 0. ,-0.482, 0. ,-0.481, 0., +-0.611, 0. ,-0.654, 0. ,-0.557, 0. +}; + + +G4CameronTruranHilfPairingCorrections G4CameronTruranHilfPairingCorrections::theInstance(10.0); + +G4CameronTruranHilfPairingCorrections::G4CameronTruranHilfPairingCorrections(G4double dummy) +{ + G4double even_more_dummy = dummy; +} diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4CameronTruranHilfShellCorrections.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4CameronTruranHilfShellCorrections.cc new file mode 100644 index 0000000000..de835cef06 --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4CameronTruranHilfShellCorrections.cc @@ -0,0 +1,54 @@ + +#include "G4CameronTruranHilfShellCorrections.hh" + + +// Data comes from: +// J.W. Truran, A.G.W. Cameron, and E. Hilf, +// Proc. Int. Conf. on the Properties of Nuclei Far From the Beta-Stability, +// Leysin, Switzerland, August 31 - September 4, 1970, Vol.1, p. 275 +// S(Z) +G4double G4CameronTruranHilfShellCorrections::ShellZTable +[G4CameronTruranHilfShellCorrections::ZTableSize] = { // 102 + 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , + 2.349, 1.936, 1.596, 1.061, 0.341,-0.040, 0.565, 1.065, 1.536, + 1.972, 1.855, 2.043, 1.931, 1.652, 1.347, 0.973, 0.579, 0.159, +-0.487,-0.192, 0.443, 0.932, 1.387, 1.810, 1.969, 2.067, 2.064, + 1.825, 1.539, 1.251, 0.957, 1.128, 1.007, 0.603, 0.013,-0.635, +-1.258,-1.905,-2.562,-3.266,-4.099,-3.615,-3.171,-2.814,-2.337, +-1.778,-1.220,-0.694,-0.181, 0.323, 0.624, 0.841, 0.904, 0.906, + 0.930, 0.919, 0.934, 0.941, 0.978, 0.982, 1.083, 1.201, 1.281, + 1.189, 0.963, 0.781, 0.738, 0.696, 0.119,-0.619,-1.265,-1.898, +-2.431,-1.326,-0.268, 0.737, 1.451, 2.138, 2.307, 2.221, 2.041, + 1.827, 1.239, 0.747, 0.214,-0.263,-0.778,-1.272,-1.800,-2.302, +-2.846,-3.499,-3.042 +}; +// S(N) +G4double G4CameronTruranHilfShellCorrections::ShellNTable +[G4CameronTruranHilfShellCorrections::NTableSize] = { // 155 + 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , + 2.439, 1.829, 1.419, 0.746,-0.082,-0.832,-0.960,-1.006,-1.045, +-1.114,-0.900,-0.081, 0.334, 0.064,-0.639,-1.363,-2.138,-2.987, +-4.042,-4.001,-3.582,-3.120,-2.677,-2.259,-1.778,-1.315,-0.944, +-0.599,-0.285,-0.020, 0.121, 0.140, 0.149,-0.001,-0.230,-0.604, +-1.010,-1.570,-2.466,-3.489,-4.552,-4.214,-3.375,-2.526,-1.725, +-0.923,-0.164, 0.601, 1.316, 1.947, 2.482, 2.971, 3.398, 3.737, + 3.979, 4.183, 4.374, 4.517, 4.605, 4.539, 4.375, 4.043, 3.672, + 3.250, 2.776, 2.254, 1.715, 1.151, 0.463,-0.237,-1.031,-1.850, +-2.722,-1.663,-0.724, 0.035, 0.786, 1.587, 2.145, 2.669, 2.680, + 2.488, 2.243, 1.969, 1.778, 1.663, 1.487, 1.325, 1.148, 0.962, + 0.843, 0.727, 0.574, 0.436, 0.320, 0.264, 0.397, 0.507, 0.405, + 0.346, 0.369, 0.397, 0.403, 0.379, 0.184,-0.226,-0.737,-1.305, +-1.950,-2.565,-3.126,-3.721,-4.393,-5.082,-5.921,-6.712,-6.853, +-5.592,-4.413,-3.333,-2.413,-1.582,-0.966,-0.421,-0.123, 0.228, + 0.543, 0.874, 1.059, 1.181, 1.186, 1.029, 1.029, 1.153, 1.227, + 1.330, 1.449, 1.596, 1.712, 1.851, 1.949, 2.044, 2.155, 2.307, + 2.621, 3.096 +}; + +G4CameronTruranHilfShellCorrections G4CameronTruranHilfShellCorrections::theInstance(10.0); + + +G4CameronTruranHilfShellCorrections::G4CameronTruranHilfShellCorrections(G4double dummy) +{ + G4double even_more_dummy = dummy; +} 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 e1c8faaaa2..d85829a9f9 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4CompetitiveFission.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4CompetitiveFission.cc @@ -1,5 +1,5 @@ // This code implementation is the intellectual property of -// the GEANT4 collaboration. +// the RD44 GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, @@ -18,7 +18,7 @@ G4CompetitiveFission::G4CompetitiveFission() theFissionBarrierPtr = new G4FissionBarrier; MyOwnFissionBarrier = true; - theFissionProbabilityPtr = new G4FissionProbability(this); + theFissionProbabilityPtr = new G4FissionProbability; MyOwnFissionProbability = true; theLevelDensityPtr = new G4FissionLevelDensityParameter; @@ -64,150 +64,149 @@ G4bool G4CompetitiveFission::operator!=(const G4CompetitiveFission &right) const void G4CompetitiveFission::Initialize(const G4Fragment & fragment) { - G4int anA = fragment.GetA(); - G4int aZ = fragment.GetZ(); - G4double ExEnergy = fragment.GetExcitationEnergy(); + G4int anA = G4int(fragment.GetA()); + G4int aZ = G4int(fragment.GetZ()); + G4double ExEnergy = fragment.GetExcitationEnergy() - FissionPairingCorrection(anA,aZ); + - // Calculate Fission Barrier - FissionBarrier = theFissionBarrierPtr->FissionBarrier(anA,aZ); + // Saddle point excitation energy ---> A = 65 + // Fission is excluded for A < 65 + if (anA >= 65 && ExEnergy > 0.0) { + FissionBarrier = theFissionBarrierPtr->FissionBarrier(anA,aZ,ExEnergy); + MaximalKineticEnergy = ExEnergy - FissionBarrier; + LevelDensityParameter = theLevelDensityPtr->LevelDensityParameter(anA,aZ,ExEnergy); + FissionProbability = theFissionProbabilityPtr->EmissionProbability(fragment,MaximalKineticEnergy); + } + else { + MaximalKineticEnergy = -1000.0*MeV; + LevelDensityParameter = 0.0; + FissionProbability = 0.0; + } - // Saddle point excitation energy ---> A = 65 - // Fission is excluded for A < 65 - if (anA >= 65) { - MaximalKineticEnergy = ExEnergy - FissionBarrier; - LevelDensityParameter = theLevelDensityPtr->LevelDensityParameter(anA,aZ,ExEnergy); - FissionProbability = theFissionProbabilityPtr->EmissionProbability(fragment,0); - } - else { - MaximalKineticEnergy = -1000.0*MeV; - LevelDensityParameter = 0.0; - FissionProbability = 0.0; - } - - return; + return; } G4FragmentVector * G4CompetitiveFission::BreakUp(const G4Fragment & theNucleus) { + // Nucleus data + // Atomic number of nucleus + G4int A = G4int(theNucleus.GetA()); + // Charge of nucleus + G4int Z = G4int(theNucleus.GetZ()); + // Excitation energy (in MeV) + G4double U = theNucleus.GetExcitationEnergy() - FissionPairingCorrection(A,Z); + // Check that U > 0 + if (U <= 0.0) { + G4FragmentVector * theResult = new G4FragmentVector; + theResult->insert(new G4Fragment(theNucleus)); + return theResult; + } - // Nucleus data - // Excitation energy (in MeV) - G4double U = theNucleus.GetExcitationEnergy()/MeV; - // Check that U > 0 - if (U <= 0.0) { - G4FragmentVector * theResult = new G4FragmentVector; - theResult->insert(new G4Fragment(theNucleus)); - return theResult; - } - // Atomic number of nucleus - G4int A = theNucleus.GetA(); - // Charge of nucleus - G4int Z = theNucleus.GetZ(); - // Atomic Mass of Nucleus (in MeV) - G4double M = G4ParticleTable::GetParticleTable()->GetIonTable()->GetIonMass(Z,A)/MeV; - // Nucleus Momentum - G4LorentzVector theNucleusMomentum = theNucleus.GetMomentum(); + // Atomic Mass of Nucleus (in MeV) + G4double M = G4ParticleTable::GetParticleTable()->GetIonTable()->GetIonMass(Z,A)/MeV; + // Nucleus Momentum + G4LorentzVector theNucleusMomentum = theNucleus.GetMomentum(); - // Calculate fission parameters - G4FissionParameters theParameters(A,Z,U*MeV,FissionBarrier); + // Calculate fission parameters + G4FissionParameters theParameters(A,Z,U,FissionBarrier); - // First fragment - G4int A1 = 0; - G4int Z1 = 0; - G4double M1 = 0.0; + // First fragment + G4int A1 = 0; + G4int Z1 = 0; + G4double M1 = 0.0; - // Second fragment - G4int A2 = 0; - G4int Z2 = 0; - G4double M2 = 0.0; + // Second fragment + G4int A2 = 0; + G4int Z2 = 0; + G4double M2 = 0.0; - G4double FragmentsExcitationEnergy = 0.0; - G4double FragmentsKineticEnergy = 0.0; + G4double FragmentsExcitationEnergy = 0.0; + G4double FragmentsKineticEnergy = 0.0; - G4int Trials = 0; - do { + G4int Trials = 0; + do { - // First fragment - A1 = FissionAtomicNumber(A,theParameters); - Z1 = FissionCharge(A,Z,A1); - M1 = G4ParticleTable::GetParticleTable()->GetIonTable()->GetIonMass(Z1,A1)/MeV; + // First fragment + A1 = FissionAtomicNumber(A,theParameters); + Z1 = FissionCharge(A,Z,A1); + M1 = G4ParticleTable::GetParticleTable()->GetIonTable()->GetIonMass(Z1,A1); - // Second Fragment - A2 = A - A1; - Z2 = Z - Z1; - if (A2 < 1 || Z2 < 0) - G4Exception("G4CompetitiveFission::BreakUp: Can't define second fragment! "); - M2 = G4ParticleTable::GetParticleTable()->GetIonTable()->GetIonMass(Z2,A2)/MeV; + // Second Fragment + A2 = A - A1; + Z2 = Z - Z1; + if (A2 < 1 || Z2 < 0) + G4Exception("G4CompetitiveFission::BreakUp: Can't define second fragment! "); + M2 = G4ParticleTable::GetParticleTable()->GetIonTable()->GetIonMass(Z2,A2)/MeV; - // Check that fragment masses are less or equal than total energy - // if (M1 + M2 > theNucleusMomentum.mag()/MeV) - if (M1 + M2 > theNucleusMomentum.e()/MeV) - G4Exception("G4CompetitiveFission::BreakUp: Fragments Mass > Total Energy"); + // Check that fragment masses are less or equal than total energy + // if (M1 + M2 > theNucleusMomentum.mag()/MeV) + if (M1 + M2 > theNucleusMomentum.e()/MeV) + G4Exception("G4CompetitiveFission::BreakUp: Fragments Mass > Total Energy"); - // Maximal Kinetic Energy (available energy for fragments) - // G4double Tmax = theNucleusMomentum.mag()/MeV - M1 - M2; - G4double Tmax = M + U - M1 - M2; + // Maximal Kinetic Energy (available energy for fragments) + // G4double Tmax = theNucleusMomentum.mag()/MeV - M1 - M2; + G4double Tmax = M + U - M1 - M2; - FragmentsKineticEnergy = FissionKineticEnergy( A , Z, - A1, Z1, - A2, Z2, - U , Tmax, - theParameters); + FragmentsKineticEnergy = FissionKineticEnergy( A , Z, + A1, Z1, + A2, Z2, + U , Tmax, + theParameters); - // Excitation Energy - FragmentsExcitationEnergy = Tmax - FragmentsKineticEnergy; + // Excitation Energy + FragmentsExcitationEnergy = Tmax - FragmentsKineticEnergy; - } while (FragmentsExcitationEnergy < 0.0 && Trials++ < 100); + } while (FragmentsExcitationEnergy < 0.0 && Trials++ < 100); - if (FragmentsExcitationEnergy <= 0.0) - G4Exception("G4CompetitiveFission::BreakItUp: Excitation energy for fragments < 0.0!"); + if (FragmentsExcitationEnergy <= 0.0) + G4Exception("G4CompetitiveFission::BreakItUp: Excitation energy for fragments < 0.0!"); - // while (FragmentsExcitationEnergy < 0 && Trials < 100); + // while (FragmentsExcitationEnergy < 0 && Trials < 100); - // Fragment 1 - G4double U1 = FragmentsExcitationEnergy * (G4double(A1)/G4double(A)); - // Fragment 2 - G4double U2 = FragmentsExcitationEnergy * (G4double(A2)/G4double(A)); + // Fragment 1 + G4double U1 = FragmentsExcitationEnergy * (G4double(A1)/G4double(A)); + // Fragment 2 + G4double U2 = FragmentsExcitationEnergy * (G4double(A2)/G4double(A)); - G4double Pmax = sqrt( 2 * ( ( (M1+U1)*(M2+U2) ) / - ( (M1+U1)+(M2+U2) ) ) * FragmentsKineticEnergy); + G4double Pmax = sqrt( 2 * ( ( (M1+U1)*(M2+U2) ) / + ( (M1+U1)+(M2+U2) ) ) * FragmentsKineticEnergy); - G4ParticleMomentum momentum1 = IsotropicVector( Pmax ); - G4ParticleMomentum momentum2( -momentum1 ); + G4ParticleMomentum momentum1 = IsotropicVector( Pmax ); + G4ParticleMomentum momentum2( -momentum1 ); - // Perform a Galileo boost for fragments - momentum1 += (theNucleusMomentum.boostVector() * (M1+U1)); - momentum2 += (theNucleusMomentum.boostVector() * (M2+U2)); + // Perform a Galileo boost for fragments + momentum1 += (theNucleusMomentum.boostVector() * (M1+U1)); + momentum2 += (theNucleusMomentum.boostVector() * (M2+U2)); - // Create 4-momentum for first fragment - // Warning!! Energy conservation is broken - G4LorentzVector FourMomentum1( momentum1 , sqrt(momentum1.mag2() + (M1+U1)*(M1+U1))); + // Create 4-momentum for first fragment + // Warning!! Energy conservation is broken + G4LorentzVector FourMomentum1( momentum1 , sqrt(momentum1.mag2() + (M1+U1)*(M1+U1))); - // Create 4-momentum for second fragment - // Warning!! Energy conservation is broken - G4LorentzVector FourMomentum2( momentum2 , sqrt(momentum2.mag2() + (M2+U2)*(M2+U2))); + // Create 4-momentum for second fragment + // Warning!! Energy conservation is broken + G4LorentzVector FourMomentum2( momentum2 , sqrt(momentum2.mag2() + (M2+U2)*(M2+U2))); - // Create Fragments - G4Fragment * Fragment1 = new G4Fragment( A1, Z1, FourMomentum1); - if (!Fragment1) G4Exception("G4CompetitiveFission::BreakItUp: Can't create Fragment1! "); - G4Fragment * Fragment2 = new G4Fragment( A2, Z2, FourMomentum2); - if (!Fragment2) G4Exception("G4CompetitiveFission::BreakItUp: Can't create Fragment2! "); + // Create Fragments + G4Fragment * Fragment1 = new G4Fragment( A1, Z1, FourMomentum1); + if (!Fragment1) G4Exception("G4CompetitiveFission::BreakItUp: Can't create Fragment1! "); + G4Fragment * Fragment2 = new G4Fragment( A2, Z2, FourMomentum2); + if (!Fragment2) G4Exception("G4CompetitiveFission::BreakItUp: Can't create Fragment2! "); - // Create Fragment Vector - G4FragmentVector * theResult = new G4FragmentVector; + // Create Fragment Vector + G4FragmentVector * theResult = new G4FragmentVector; - theResult->insert(Fragment1); - theResult->insert(Fragment2); + theResult->insert(Fragment1); + theResult->insert(Fragment2); - return theResult; + return theResult; } @@ -217,62 +216,61 @@ G4int G4CompetitiveFission::FissionAtomicNumber(const G4int A, const G4FissionPa // Calculates the atomic number of a fission product { - // For Simplicity reading code - const G4double A1 = theParam.GetA1(); - const G4double A2 = theParam.GetA2(); - const G4double As = theParam.GetAs(); - const G4double Sigma1 = theParam.GetSigma1(); - const G4double Sigma2 = theParam.GetSigma2(); - const G4double SigmaS = theParam.GetSigmaS(); - const G4double w = theParam.GetW(); + // For Simplicity reading code + const G4double A1 = theParam.GetA1(); + const G4double A2 = theParam.GetA2(); + const G4double As = theParam.GetAs(); + 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; - G4double C2S = As + 3.72*SigmaS; + G4double C2A = A2 + 3.72*Sigma2; + G4double C2S = As + 3.72*SigmaS; - G4double C2 = 0.0; - if (w > 1000.0 ) C2 = C2S; - else if (w < 0.001) C2 = C2A; - else C2 = G4std::max(C2A,C2S); + G4double C2 = 0.0; + if (w > 1000.0 ) C2 = C2S; + else if (w < 0.001) C2 = C2A; + else C2 = G4std::max(C2A,C2S); - G4double C1 = A-C2; - if (C1 < 30.0) { - C2 = A-30.0; - C1 = 30.0; - } + G4double C1 = A-C2; + if (C1 < 30.0) { + C2 = A-30.0; + C1 = 30.0; + } - G4double Am1 = (As + A1)/2.0; - G4double Am2 = (A1 + A2)/2.0; + G4double Am1 = (As + A1)/2.0; + G4double Am2 = (A1 + A2)/2.0; - // Get Mass distributions as sum of symmetric and asymmetric Gasussians - G4double Mass1 = MassDistribution(As,A,theParam); - G4double Mass2 = MassDistribution(Am1,A,theParam); - G4double Mass3 = MassDistribution(A1,A,theParam); - G4double Mass4 = MassDistribution(Am2,A,theParam); - G4double Mass5 = MassDistribution(A2,A,theParam); - // get maximal value among Mass1,...,Mass5 - G4double MassMax = Mass1; - if (Mass2 > MassMax) MassMax = Mass2; - if (Mass3 > MassMax) MassMax = Mass3; - if (Mass4 > MassMax) MassMax = Mass4; - if (Mass5 > MassMax) MassMax = Mass5; + // Get Mass distributions as sum of symmetric and asymmetric Gasussians + G4double Mass1 = MassDistribution(As,A,theParam); + G4double Mass2 = MassDistribution(Am1,A,theParam); + G4double Mass3 = MassDistribution(A1,A,theParam); + G4double Mass4 = MassDistribution(Am2,A,theParam); + G4double Mass5 = MassDistribution(A2,A,theParam); + // get maximal value among Mass1,...,Mass5 + G4double MassMax = Mass1; + if (Mass2 > MassMax) MassMax = Mass2; + if (Mass3 > MassMax) MassMax = Mass3; + if (Mass4 > MassMax) MassMax = Mass4; + if (Mass5 > MassMax) MassMax = Mass5; - // Sample a fragment mass number, which lies between C1 and C2 - G4double m; - G4double Pm; - do { - m = C1+G4UniformRand()*(C2-C1); - Pm = MassDistribution(m,A,theParam); - } while (G4UniformRand() > Pm/MassMax); + // Sample a fragment mass number, which lies between C1 and C2 + G4double m; + G4double Pm; + do { + m = C1+G4UniformRand()*(C2-C1); + Pm = MassDistribution(m,A,theParam); + } while (G4UniformRand() > Pm/MassMax); - // return static_cast(m+0.5); - return G4int(m+0.5); + return G4int(m+0.5); } @@ -281,14 +279,14 @@ G4int G4CompetitiveFission::FissionAtomicNumber(const G4int A, const G4FissionPa G4double G4CompetitiveFission::MassDistribution(const G4double x, const G4double A, - const G4FissionParameters & theParam) - // This method gives mass distribution F(x) = F_{asym}(x)+w*F_{sym}(x) - // which consist of symmetric and asymmetric sum of gaussians components. + const G4FissionParameters & theParam) + // This method gives mass distribution F(x) = F_{asym}(x)+w*F_{sym}(x) + // which consist of symmetric and asymmetric sum of gaussians components. { - G4double Xsym = exp(-0.5*(x-theParam.GetAs())*(x-theParam.GetAs())/ - (theParam.GetSigmaS()*theParam.GetSigmaS())); + G4double Xsym = exp(-0.5*(x-theParam.GetAs())*(x-theParam.GetAs())/ + (theParam.GetSigmaS()*theParam.GetSigmaS())); - G4double Xasym = exp(-0.5*(x-theParam.GetA2())*(x-theParam.GetA2())/ + G4double Xasym = exp(-0.5*(x-theParam.GetA2())*(x-theParam.GetA2())/ (theParam.GetSigma2()*theParam.GetSigma2())) + exp(-0.5*(x-(A-theParam.GetA2()))*(x-(A-theParam.GetA2()))/ (theParam.GetSigma2()*theParam.GetSigma2())) + @@ -297,123 +295,122 @@ G4double G4CompetitiveFission::MassDistribution(const G4double x, const G4double 0.5*exp(-0.5*(x-(A-theParam.GetA1()))*(x-(A-theParam.GetA1()))/ (theParam.GetSigma1()*theParam.GetSigma1())); - if (theParam.GetW() > 1000) return Xsym; - else if (theParam.GetW() < 0.001) return Xasym; - else return theParam.GetW()*Xsym+Xasym; + if (theParam.GetW() > 1000) return Xsym; + else if (theParam.GetW() < 0.001) return Xasym; + else return theParam.GetW()*Xsym+Xasym; } G4int G4CompetitiveFission::FissionCharge(const G4double A, - const G4double Z, - const G4double Af) + const G4double Z, + const G4double Af) // Calculates the charge of a fission product for a given atomic number Af { - const G4double sigma = 0.6; - G4double DeltaZ = 0.0; - if (Af >= 134.0) DeltaZ = -0.45; // 134 <= Af - else if (A <= (A-134.0)) DeltaZ = 0.45; // Af <= (A-134) - else DeltaZ = -0.45*(Af-(A/2.0))/(134.0-(A/2.0)); // (A-134) < Af < 134 + const G4double sigma = 0.6; + G4double DeltaZ = 0.0; + if (Af >= 134.0) DeltaZ = -0.45; // 134 <= Af + else if (A <= (A-134.0)) DeltaZ = 0.45; // Af <= (A-134) + else DeltaZ = -0.45*(Af-(A/2.0))/(134.0-(A/2.0)); // (A-134) < Af < 134 - G4double Zmean = (Af/A)*Z + DeltaZ; + G4double Zmean = (Af/A)*Z + DeltaZ; - G4double theZ; - do { - theZ = RandGauss::shoot(Zmean,sigma); - } while (theZ < 1.0 || theZ > (Z-1.0) || theZ > Af); - // return static_cast(theZ+0.5); - return G4int(theZ+0.5); + G4double theZ; + do { + theZ = RandGauss::shoot(Zmean,sigma); + } while (theZ < 1.0 || theZ > (Z-1.0) || theZ > Af); + // return static_cast(theZ+0.5); + return G4int(theZ+0.5); } G4double G4CompetitiveFission::FissionKineticEnergy(const G4double A, const G4double Z, - const G4double Af1, const G4double Zf1, - const G4double Af2, const G4double Zf2, - const G4double U, const G4double Tmax, - const G4FissionParameters & theParam) + const G4double Af1, const G4double Zf1, + const G4double Af2, const G4double Zf2, + const G4double U, const G4double Tmax, + const G4FissionParameters & theParam) // Gives the kinetic energy of fission products { + // Find maximal value of A for fragments + G4double AfMax = G4std::max(Af1,Af2); + if (AfMax < (A/2.0)) AfMax = A - AfMax; - // Find maximal value of A for fragments - G4double AfMax = G4std::max(Af1,Af2); - if (AfMax < (A/2.0)) AfMax = A - AfMax; + // Weights for symmetric and asymmetric components + G4double Pas; + if (theParam.GetW() > 1000) Pas = 0.0; + else { + G4double P1 = 0.5*exp(-0.5*(AfMax-theParam.GetA1())*(AfMax-theParam.GetA1())/ + (theParam.GetSigma1()*theParam.GetSigma1())); - // Weights for symmetric and asymmetric components - G4double Pas; - if (theParam.GetW() > 1000) Pas = 0.0; - else { - G4double P1 = 0.5*exp(-0.5*(AfMax-theParam.GetA1())*(AfMax-theParam.GetA1())/ - (theParam.GetSigma1()*theParam.GetSigma1())); + G4double P2 = exp(-0.5*(AfMax-theParam.GetA2())*(AfMax-theParam.GetA2())/ + (theParam.GetSigma2()*theParam.GetSigma2())); - G4double P2 = exp(-0.5*(AfMax-theParam.GetA2())*(AfMax-theParam.GetA2())/ - (theParam.GetSigma2()*theParam.GetSigma2())); - - Pas = P1+P2; - } + Pas = P1+P2; + } - G4double Ps; - if (theParam.GetW() < 0.001) Ps = 0.0; - else - Ps = theParam.GetW()*exp(-0.5*(AfMax-theParam.GetAs())*(AfMax-theParam.GetAs())/ - (theParam.GetSigmaS()*theParam.GetSigmaS())); + G4double Ps; + if (theParam.GetW() < 0.001) Ps = 0.0; + else + Ps = theParam.GetW()*exp(-0.5*(AfMax-theParam.GetAs())*(AfMax-theParam.GetAs())/ + (theParam.GetSigmaS()*theParam.GetSigmaS())); - G4double Psy = Ps/(Pas+Ps); + G4double Psy = Ps/(Pas+Ps); - // Fission fractions Xsy and Xas formed in symmetric and asymmetric modes - G4double PPas = theParam.GetSigma1() + 2.0 * theParam.GetSigma2(); - G4double PPsy = theParam.GetW() * theParam.GetSigmaS(); - G4double Xas = PPas / (PPas+PPsy); - G4double Xsy = PPsy / (PPas+PPsy); + // Fission fractions Xsy and Xas formed in symmetric and asymmetric modes + G4double PPas = theParam.GetSigma1() + 2.0 * theParam.GetSigma2(); + G4double PPsy = theParam.GetW() * theParam.GetSigmaS(); + G4double Xas = PPas / (PPas+PPsy); + G4double Xsy = PPsy / (PPas+PPsy); - // Average kinetic energy for symmetric and asymmetric components - G4double Eaverage = 0.1071*(Z*Z)/pow(A,1.0/3.0) + 22.2; + // Average kinetic energy for symmetric and asymmetric components + G4double Eaverage = 0.1071*MeV*(Z*Z)/pow(A,1.0/3.0) + 22.2*MeV; - // Compute maximal average kinetic energy of fragments and Energy Dispersion (sqrt) - G4double TaverageAfMax; - G4double ESigma; - // Select randomly fission mode (symmetric or asymmetric) - if (G4UniformRand() > Psy) { // Asymmetric Mode - G4double A11 = theParam.GetA1()-0.7979*theParam.GetSigma1(); - G4double A12 = theParam.GetA1()+0.7979*theParam.GetSigma1(); - G4double A21 = theParam.GetA2()-0.7979*theParam.GetSigma2(); - G4double A22 = theParam.GetA2()+0.7979*theParam.GetSigma2(); - // scale factor - G4double ScaleFactor = 0.5*theParam.GetSigma1()*(AsymmetricRatio(A,A11)+AsymmetricRatio(A,A12))+ - theParam.GetSigma2()*(AsymmetricRatio(A,A21)+AsymmetricRatio(A,A22)); - // Compute average kinetic energy for fragment with AfMax - TaverageAfMax = (Eaverage + 12.5 * Xsy) * (PPas/ScaleFactor) * AsymmetricRatio(A,AfMax); - ESigma = 10.0; // MeV + // Compute maximal average kinetic energy of fragments and Energy Dispersion (sqrt) + G4double TaverageAfMax; + G4double ESigma; + // Select randomly fission mode (symmetric or asymmetric) + if (G4UniformRand() > Psy) { // Asymmetric Mode + G4double A11 = theParam.GetA1()-0.7979*theParam.GetSigma1(); + G4double A12 = theParam.GetA1()+0.7979*theParam.GetSigma1(); + G4double A21 = theParam.GetA2()-0.7979*theParam.GetSigma2(); + G4double A22 = theParam.GetA2()+0.7979*theParam.GetSigma2(); + // scale factor + G4double ScaleFactor = 0.5*theParam.GetSigma1()*(AsymmetricRatio(A,A11)+AsymmetricRatio(A,A12))+ + theParam.GetSigma2()*(AsymmetricRatio(A,A21)+AsymmetricRatio(A,A22)); + // Compute average kinetic energy for fragment with AfMax + TaverageAfMax = (Eaverage + 12.5 * Xsy) * (PPas/ScaleFactor) * AsymmetricRatio(A,AfMax); + ESigma = 10.0*MeV; // MeV - } else { // Symmetric Mode - G4double As0 = theParam.GetAs() + 0.7979*theParam.GetSigmaS(); - // scale factor - G4double ScaleFactor = theParam.GetW()*theParam.GetSigmaS()*SymmetricRatio(A,As0); - // Compute average kinetic energy for fragment with AfMax - TaverageAfMax = (Eaverage - 12.5*Xas) * (PPsy/ScaleFactor) * SymmetricRatio(A,AfMax); - ESigma = 8.0; // MeV + } else { // Symmetric Mode + G4double As0 = theParam.GetAs() + 0.7979*theParam.GetSigmaS(); + // scale factor + G4double ScaleFactor = theParam.GetW()*theParam.GetSigmaS()*SymmetricRatio(A,As0); + // Compute average kinetic energy for fragment with AfMax + TaverageAfMax = (Eaverage - 12.5*MeV*Xas) * (PPsy/ScaleFactor) * SymmetricRatio(A,AfMax); + ESigma = 8.0*MeV; } - // Select randomly, in accordance with Gaussian distribution, fragment kinetic energy - G4double KineticEnergy; - G4int i = 0; - do { - KineticEnergy = RandGauss::shoot(TaverageAfMax,ESigma); - if (i++ > 100) return Eaverage; - } while (KineticEnergy < Eaverage-3.72*ESigma || - KineticEnergy > Eaverage+3.72*ESigma || - KineticEnergy > Tmax); + // Select randomly, in accordance with Gaussian distribution, fragment kinetic energy + G4double KineticEnergy; + G4int i = 0; + do { + KineticEnergy = RandGauss::shoot(TaverageAfMax,ESigma); + if (i++ > 100) return Eaverage; + } while (KineticEnergy < Eaverage-3.72*ESigma || + KineticEnergy > Eaverage+3.72*ESigma || + KineticEnergy > Tmax); - return KineticEnergy; + return KineticEnergy; } @@ -422,24 +419,24 @@ G4double G4CompetitiveFission::FissionKineticEnergy(const G4double A, const G4do G4double G4CompetitiveFission::AsymmetricRatio(const G4double A,const G4double A11) { - const G4double B1 = 23.5; - const G4double A00 = 134.0; - return Ratio(A,A11,B1,A00); + const G4double B1 = 23.5; + const G4double A00 = 134.0; + return Ratio(A,A11,B1,A00); } G4double G4CompetitiveFission::SymmetricRatio(const G4double A,const G4double A11) { - const G4double B1 = 5.32; - const G4double A00 = A/2.0; - return Ratio(A,A11,B1,A00); + const G4double B1 = 5.32; + const G4double A00 = A/2.0; + return Ratio(A,A11,B1,A00); } G4double G4CompetitiveFission::Ratio(const G4double A,const G4double A11, const G4double B1,const G4double A00) { - if (A == 0) G4Exception("G4CompetitiveFission::Ratio: A == 0!"); - if (A11 >= A/2.0 && A11 <= (A00+10.0)) return 1.0-B1*((A11-A00)/A)*((A11-A00)/A); - else return 1.0-B1*(10.0/A)*(10.0/A)-2.0*(10.0/A)*B1*((A11-A00-10.0)/A); + if (A == 0) G4Exception("G4CompetitiveFission::Ratio: A == 0!"); + if (A11 >= A/2.0 && A11 <= (A00+10.0)) return 1.0-B1*((A11-A00)/A)*((A11-A00)/A); + else return 1.0-B1*(10.0/A)*(10.0/A)-2.0*(10.0/A)*B1*((A11-A00-10.0)/A); } @@ -458,3 +455,12 @@ G4ThreeVector G4CompetitiveFission::IsotropicVector(const G4double Magnitude) Magnitude*CosTheta); return Vector; } + +G4double G4CompetitiveFission::FissionPairingCorrection(const G4int A, const G4int Z) const +{ + const G4double PairingConstant = 14.0*MeV; + const G4int N = A - Z; + G4double Pair = (1.0 - G4double(Z) + 2.0*(Z/2)) + (1.0 - G4double(N) + 2.0*(N/2)); + G4double PCorrection = Pair*PairingConstant/sqrt(G4double(A)); + return PCorrection; +} diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4CoulombBarrier.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4CoulombBarrier.cc new file mode 100644 index 0000000000..2c03de13e7 --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4CoulombBarrier.cc @@ -0,0 +1,74 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By copying, 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.1 2000/06/09 11:43:35 larazb Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// Hadronic Process: Nuclear De-excitations +// by V. Lara (Dec 1999) + + +#include "G4CoulombBarrier.hh" +#include "g4std/strstream" + +G4CoulombBarrier::G4CoulombBarrier(const G4CoulombBarrier & right) +{ + G4Exception("G4CoulombBarrier::copy_constructor meant to not be accessable."); +} + + +const G4CoulombBarrier & G4CoulombBarrier::operator=(const G4CoulombBarrier & right) +{ + G4Exception("G4CoulombBarrier::operator= meant to not be accessable."); + return *this; +} + +G4bool G4CoulombBarrier::operator==(const G4CoulombBarrier & right) const +{ + return false; +} + +G4bool G4CoulombBarrier::operator!=(const G4CoulombBarrier & right) const +{ + return true; +} + + + +G4double G4CoulombBarrier::GetCoulombBarrier(const G4int ARes, const G4int ZRes, const G4double U) const + // Calculation of Coulomb potential energy (barrier) for outgoing fragment +{ + G4double Barrier = 0.0; + if (ZRes > ARes || ARes < 1) { + char errMessage[1024]; + G4std::ostrstream errOs(errMessage,1024); + errOs << "G4CoulombBarrier::GetCoulombBarrier: "; + errOs << "Wrong values for "; + errOs << "residual nucleus A = " << ARes << " "; + errOs << "and residual nucleus Z = " << ZRes << G4endl; + G4Exception(errMessage); + } + 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)); + Barrier = elm_coupling/CompoundRadius * G4double(GetZ())*G4double(ZRes)/ + (pow(G4double(GetA()),1./3.) + pow(G4double(ARes),1./3.)); + + // Barrier penetration coeficient + G4double K = BarrierPenetrationFactor(ZRes); + + Barrier *= K; + + Barrier /= (1.0 + sqrt(U/(2.0*G4double(ARes)))); + } + return Barrier; +} + + + diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4DeuteronCoulombBarrier.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4DeuteronCoulombBarrier.cc new file mode 100644 index 0000000000..45da62ffce --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4DeuteronCoulombBarrier.cc @@ -0,0 +1,58 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By copying, 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.1 2000/06/09 11:43:35 larazb Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// Hadronic Process: Nuclear De-excitations +// by V. Lara (Dec 1999) + + +#include "G4DeuteronCoulombBarrier.hh" + +G4DeuteronCoulombBarrier::G4DeuteronCoulombBarrier(const G4DeuteronCoulombBarrier & right) +{ + G4Exception("G4DeuteronCoulombBarrier::copy_constructor meant to not be accessable."); +} + + +const G4DeuteronCoulombBarrier & G4DeuteronCoulombBarrier::operator=(const G4DeuteronCoulombBarrier & right) +{ + G4Exception("G4DeuteronCoulombBarrier::operator= meant to not be accessable."); + return *this; +} + +G4bool G4DeuteronCoulombBarrier::operator==(const G4DeuteronCoulombBarrier & right) const +{ + return false; +} + +G4bool G4DeuteronCoulombBarrier::operator!=(const G4DeuteronCoulombBarrier & right) const +{ + return true; +} + + +G4double G4DeuteronCoulombBarrier::BarrierPenetrationFactor(const G4double aZ) const +{ + // Data comes from + // Dostrovsky, Fraenkel and Friedlander + // Physical Review, vol 116, num. 3 1959 + // + // const G4int size = 5; + // const G4double Zlist[size] = {10.0, 20.0, 30.0, 50.0, 70.0}; + // const G4double Kprot[size] = {0.42, 0.58, 0.68, 0.77, 0.80}; + // + // K for deuteron is K for protons + 0.06 + G4double K = 1.0; + if (aZ>=70.0) { + K = 0.80; + } else { + K = (((0.2357e-5*aZ) - 0.42679e-3)*aZ + 0.27035e-1)*aZ + 0.19025; + } + return K+0.06; +} diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4DeuteronEvaporationChannel.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4DeuteronEvaporationChannel.cc new file mode 100644 index 0000000000..cbf3d1b35f --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4DeuteronEvaporationChannel.cc @@ -0,0 +1,36 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By 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: Nuclear De-excitations +// by V. Lara (Nov. 1999) +// + +#include "G4DeuteronEvaporationChannel.hh" + + +const G4DeuteronEvaporationChannel & G4DeuteronEvaporationChannel::operator=(const G4DeuteronEvaporationChannel & right) +{ + G4Exception("G4DeuteronEvaporationChannel::operator= meant to not be accessable"); + return *this; +} + +G4DeuteronEvaporationChannel::G4DeuteronEvaporationChannel(const G4DeuteronEvaporationChannel & right) +{ + G4Exception("G4DeuteronEvaporationChannel::CopyConstructor meant to not be accessable"); +} + +G4bool G4DeuteronEvaporationChannel::operator==(const G4DeuteronEvaporationChannel & right) const +{ + return (this == (G4DeuteronEvaporationChannel *) &right); + // return false; +} + +G4bool G4DeuteronEvaporationChannel::operator!=(const G4DeuteronEvaporationChannel & right) const +{ + return (this != (G4DeuteronEvaporationChannel *) &right); + // return true; +} diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4DeuteronEvaporationProbability.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4DeuteronEvaporationProbability.cc new file mode 100644 index 0000000000..7d3f401525 --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4DeuteronEvaporationProbability.cc @@ -0,0 +1,106 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By 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: Nuclear De-excitations +// by V. Lara (Nov 1999) +// + + +#include "G4DeuteronEvaporationProbability.hh" + +G4DeuteronEvaporationProbability::G4DeuteronEvaporationProbability() : + G4EvaporationProbability(2,1,6) // A,Z,Gamma +{ + const G4int NumExcitedStates = 31+1; + ExcitEnergies.reshape(NumExcitedStates); + ExcitSpins.reshape(NumExcitedStates); + for (G4int i = 0; i < NumExcitedStates; i++) { + ExcitEnergies(i) = 0.0; + ExcitSpins(i) = 0; + } + + ExcitEnergies(15) = 6.18*MeV; + ExcitEnergies(17) = 2.15*MeV; + ExcitEnergies(18) = 5.02*MeV; + ExcitEnergies(19) = 2.65*MeV; + ExcitEnergies(20) = 4.80*MeV; + ExcitEnergies(22) = 3.85*MeV; + ExcitEnergies(23) = 6.96*MeV; + ExcitEnergies(25) = 4.92*MeV; + ExcitEnergies(26) = 7.22*MeV; + ExcitEnergies(27) = 0.40*MeV; + ExcitEnergies(28) = 6.83*MeV; + ExcitEnergies(29) = 7.12*MeV; + ExcitEnergies(30) = 3.84*MeV; + ExcitEnergies(31) = 3.92*MeV; + + ExcitSpins(15) = 1; + ExcitSpins(17) = 3; + ExcitSpins(18) = 4; + ExcitSpins(19) = 4; + ExcitSpins(20) = 4; + ExcitSpins(22) = 6; + ExcitSpins(23) = 6; + ExcitSpins(25) = 1; + ExcitSpins(26) = 10; + ExcitSpins(27) = 3; + ExcitSpins(28) = 10; + ExcitSpins(29) = 3; + ExcitSpins(30) = 6; + ExcitSpins(31) = 5; + + SetExcitationEnergiesPtr(&ExcitEnergies); + SetExcitationSpinsPtr(&ExcitSpins); + +} +G4DeuteronEvaporationProbability::G4DeuteronEvaporationProbability(const G4DeuteronEvaporationProbability &right) +{ + G4Exception("G4DeuteronEvaporationProbability::copy_constructor meant to not be accessable"); +} + + + + +const G4DeuteronEvaporationProbability & G4DeuteronEvaporationProbability:: +operator=(const G4DeuteronEvaporationProbability &right) +{ + G4Exception("G4DeuteronEvaporationProbability::operator= meant to not be accessable"); + return *this; +} + + +G4bool G4DeuteronEvaporationProbability::operator==(const G4DeuteronEvaporationProbability &right) const +{ + return false; +} + +G4bool G4DeuteronEvaporationProbability::operator!=(const G4DeuteronEvaporationProbability &right) const +{ + return true; +} + +G4double G4DeuteronEvaporationProbability::CCoeficient(const G4double aZ) const +{ + // Data comes from + // Dostrovsky, Fraenkel and Friedlander + // Physical Review, vol 116, num. 3 1959 + // + // const G4int size = 5; + // G4double Zlist[5] = { 10.0, 20.0, 30.0, 50.0, 70.0}; + // G4double Cp[5] = { 0.50, 0.28, 0.20, 0.15, 0.10}; + // C for deuteron is equal to C for protons divided by 2 + G4double C = 0.0; + + if (aZ >= 70) { + C = 0.10; + } else { + C = ((((0.15417e-06*aZ) - 0.29875e-04)*aZ + 0.21071e-02)*aZ - 0.66612e-01)*aZ + 0.98375; + } + + return C/2.0; + +} 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 01a5f8b7aa..a14a23ae9e 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4Evaporation.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4Evaporation.cc @@ -1,5 +1,5 @@ // This code implementation is the intellectual property of -// the GEANT4 collaboration. +// the RD44 GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, @@ -10,404 +10,42 @@ #include "G4Evaporation.hh" +#include "G4NeutronEvaporationChannel.hh" +#include "G4ProtonEvaporationChannel.hh" +#include "G4DeuteronEvaporationChannel.hh" +#include "G4TritonEvaporationChannel.hh" +#include "G4He3EvaporationChannel.hh" +#include "G4AlphaEvaporationChannel.hh" +#include "G4CompetitiveFission.hh" +#include "G4PhotonEvaporation.hh" -G4Evaporation::G4Evaporation() +G4Evaporation::G4Evaporation() : myOwnChannelsVector(true) { - ExcitEnergyChann00.reshape(NumExcitedStates); - ExcitEnergyChann01.reshape(NumExcitedStates); - ExcitEnergyChann02.reshape(NumExcitedStates); - ExcitEnergyChann03.reshape(NumExcitedStates); - ExcitEnergyChann04.reshape(NumExcitedStates); - ExcitEnergyChann05.reshape(NumExcitedStates); - ExcitEnergyChann06.reshape(NumExcitedStates); - ExcitEnergyChann07.reshape(NumExcitedStates); - ExcitEnergyChann08.reshape(NumExcitedStates); - ExcitEnergyChann09.reshape(NumExcitedStates); - ExcitEnergyChann10.reshape(NumExcitedStates); - ExcitEnergyChann11.reshape(NumExcitedStates); - ExcitEnergyChann12.reshape(NumExcitedStates); - ExcitEnergyChann13.reshape(NumExcitedStates); - ExcitEnergyChann14.reshape(NumExcitedStates); - ExcitEnergyChann15.reshape(NumExcitedStates); - ExcitEnergyChann16.reshape(NumExcitedStates); - ExcitEnergyChann17.reshape(NumExcitedStates); - ExcitEnergyChann18.reshape(NumExcitedStates); - ExcitEnergyChann19.reshape(NumExcitedStates); - ExcitEnergyChann20.reshape(NumExcitedStates); - ExcitEnergyChann21.reshape(NumExcitedStates); - ExcitEnergyChann22.reshape(NumExcitedStates); - ExcitEnergyChann23.reshape(NumExcitedStates); - ExcitEnergyChann24.reshape(NumExcitedStates); - ExcitEnergyChann25.reshape(NumExcitedStates); - ExcitEnergyChann26.reshape(NumExcitedStates); - ExcitEnergyChann27.reshape(NumExcitedStates); - ExcitEnergyChann28.reshape(NumExcitedStates); - ExcitEnergyChann29.reshape(NumExcitedStates); - ExcitEnergyChann30.reshape(NumExcitedStates); - ExcitEnergyChann31.reshape(NumExcitedStates); + theChannels = new G4RWTPtrOrderedVector; - ExcitSpinChann00.reshape(NumExcitedStates); - ExcitSpinChann01.reshape(NumExcitedStates); - ExcitSpinChann02.reshape(NumExcitedStates); - ExcitSpinChann03.reshape(NumExcitedStates); - ExcitSpinChann04.reshape(NumExcitedStates); - ExcitSpinChann05.reshape(NumExcitedStates); - ExcitSpinChann06.reshape(NumExcitedStates); - ExcitSpinChann07.reshape(NumExcitedStates); - ExcitSpinChann08.reshape(NumExcitedStates); - ExcitSpinChann09.reshape(NumExcitedStates); - ExcitSpinChann10.reshape(NumExcitedStates); - ExcitSpinChann11.reshape(NumExcitedStates); - ExcitSpinChann12.reshape(NumExcitedStates); - ExcitSpinChann13.reshape(NumExcitedStates); - ExcitSpinChann14.reshape(NumExcitedStates); - ExcitSpinChann15.reshape(NumExcitedStates); - ExcitSpinChann16.reshape(NumExcitedStates); - ExcitSpinChann17.reshape(NumExcitedStates); - ExcitSpinChann18.reshape(NumExcitedStates); - ExcitSpinChann19.reshape(NumExcitedStates); - ExcitSpinChann20.reshape(NumExcitedStates); - ExcitSpinChann21.reshape(NumExcitedStates); - ExcitSpinChann22.reshape(NumExcitedStates); - ExcitSpinChann23.reshape(NumExcitedStates); - ExcitSpinChann24.reshape(NumExcitedStates); - ExcitSpinChann25.reshape(NumExcitedStates); - ExcitSpinChann26.reshape(NumExcitedStates); - ExcitSpinChann27.reshape(NumExcitedStates); - ExcitSpinChann28.reshape(NumExcitedStates); - ExcitSpinChann29.reshape(NumExcitedStates); - ExcitSpinChann30.reshape(NumExcitedStates); - ExcitSpinChann31.reshape(NumExcitedStates); - - for (G4int i = 0; i < NumExcitedStates; i++) { - ExcitEnergyChann00(i) = 0.0; - ExcitEnergyChann01(i) = 0.0; - ExcitEnergyChann02(i) = 0.0; - ExcitEnergyChann03(i) = 0.0; - ExcitEnergyChann04(i) = 0.0; - ExcitEnergyChann05(i) = 0.0; - ExcitEnergyChann06(i) = 0.0; - ExcitEnergyChann07(i) = 0.0; - ExcitEnergyChann08(i) = 0.0; - ExcitEnergyChann09(i) = 0.0; - ExcitEnergyChann10(i) = 0.0; - ExcitEnergyChann11(i) = 0.0; - ExcitEnergyChann12(i) = 0.0; - ExcitEnergyChann13(i) = 0.0; - ExcitEnergyChann14(i) = 0.0; - ExcitEnergyChann15(i) = 0.0; - ExcitEnergyChann16(i) = 0.0; - ExcitEnergyChann17(i) = 0.0; - ExcitEnergyChann18(i) = 0.0; - ExcitEnergyChann19(i) = 0.0; - ExcitEnergyChann20(i) = 0.0; - ExcitEnergyChann21(i) = 0.0; - ExcitEnergyChann22(i) = 0.0; - ExcitEnergyChann23(i) = 0.0; - ExcitEnergyChann24(i) = 0.0; - ExcitEnergyChann25(i) = 0.0; - ExcitEnergyChann26(i) = 0.0; - ExcitEnergyChann27(i) = 0.0; - ExcitEnergyChann28(i) = 0.0; - ExcitEnergyChann29(i) = 0.0; - ExcitEnergyChann30(i) = 0.0; - ExcitEnergyChann31(i) = 0.0; - - ExcitSpinChann00(i) = 0; - ExcitSpinChann01(i) = 0; - ExcitSpinChann02(i) = 0; - ExcitSpinChann03(i) = 0; - ExcitSpinChann04(i) = 0; - ExcitSpinChann05(i) = 0; - ExcitSpinChann06(i) = 0; - ExcitSpinChann07(i) = 0; - ExcitSpinChann08(i) = 0; - ExcitSpinChann09(i) = 0; - ExcitSpinChann10(i) = 0; - ExcitSpinChann11(i) = 0; - ExcitSpinChann12(i) = 0; - ExcitSpinChann13(i) = 0; - ExcitSpinChann14(i) = 0; - ExcitSpinChann15(i) = 0; - ExcitSpinChann16(i) = 0; - ExcitSpinChann17(i) = 0; - ExcitSpinChann18(i) = 0; - ExcitSpinChann19(i) = 0; - ExcitSpinChann20(i) = 0; - ExcitSpinChann21(i) = 0; - ExcitSpinChann22(i) = 0; - ExcitSpinChann23(i) = 0; - ExcitSpinChann24(i) = 0; - ExcitSpinChann25(i) = 0; - ExcitSpinChann26(i) = 0; - ExcitSpinChann27(i) = 0; - ExcitSpinChann28(i) = 0; - ExcitSpinChann29(i) = 0; - ExcitSpinChann30(i) = 0; - ExcitSpinChann31(i) = 0; - } - - // (in MeV) - // neutrons - ExcitEnergyChann00( 9) = 3.56; - ExcitEnergyChann00(10) = 0.48; - ExcitEnergyChann00(11) = 0.98; - ExcitEnergyChann00(12) = 0.43; - ExcitEnergyChann00(15) = 3.37; - ExcitEnergyChann00(17) = 0.72; - ExcitEnergyChann00(18) = 2.13; - ExcitEnergyChann00(19) = 0.95; - ExcitEnergyChann00(20) = 2.00; - ExcitEnergyChann00(21) = 4.44; - ExcitEnergyChann00(22) = 3.09; - ExcitEnergyChann00(23) = 6.09; - ExcitEnergyChann00(25) = 2.31; - ExcitEnergyChann00(26) = 5.28; - ExcitEnergyChann00(27) = 0.12; - ExcitEnergyChann00(28) = 5.22; - ExcitEnergyChann00(29) = 6.10; - ExcitEnergyChann00(30) = 0.87; - ExcitEnergyChann00(31) = 1.98; - - // protons - ExcitEnergyChann01(15) = 5.96; - ExcitEnergyChann01(17) = 1.74; - ExcitEnergyChann01(18) = 4.44; - ExcitEnergyChann01(19) = 1.67; - ExcitEnergyChann01(20) = 4.32; - ExcitEnergyChann01(22) = 3.68; - ExcitEnergyChann01(23) = 6.69; - ExcitEnergyChann01(25) = 3.95; - ExcitEnergyChann01(26) = 6.32; - ExcitEnergyChann01(27) = 0.30; - ExcitEnergyChann01(28) = 6.18; - ExcitEnergyChann01(29) = 6.92; - ExcitEnergyChann01(30) = 3.06; - ExcitEnergyChann01(31) = 3.57; - - // deuterons - ExcitEnergyChann02(15) = 6.18; - ExcitEnergyChann02(17) = 2.15; - ExcitEnergyChann02(18) = 5.02; - ExcitEnergyChann02(19) = 2.65; - ExcitEnergyChann02(20) = 4.80; - ExcitEnergyChann02(22) = 3.85; - ExcitEnergyChann02(23) = 6.96; - ExcitEnergyChann02(25) = 4.92; - ExcitEnergyChann02(26) = 7.22; - ExcitEnergyChann02(27) = 0.40; - ExcitEnergyChann02(28) = 6.83; - ExcitEnergyChann02(29) = 7.12; - ExcitEnergyChann02(30) = 3.84; - ExcitEnergyChann02(31) = 3.92; - - // tritons - ExcitEnergyChann03(15) = 6.26; - ExcitEnergyChann03(17) = 3.59; - ExcitEnergyChann03(18) = 6.76; - ExcitEnergyChann03(20) = 6.34; - ExcitEnergyChann03(23) = 7.34; - ExcitEnergyChann03(25) = 5.11; - ExcitEnergyChann03(26) = 7.57; - ExcitEnergyChann03(28) = 7.28; - ExcitEnergyChann03(31) = 4.46; - - - // He3 - ExcitEnergyChann04(18) = 7.29; - ExcitEnergyChann04(20) = 6.48; - ExcitEnergyChann04(25) = 5.69; - ExcitEnergyChann04(26) = 8.31; - ExcitEnergyChann04(31) = 5.10; - - // alphas - ExcitEnergyChann05(18) = 7.98; - ExcitEnergyChann05(20) = 6.90; - ExcitEnergyChann05(25) = 5.83; - ExcitEnergyChann05(26) = 8.57; - ExcitEnergyChann05(31) = 5.33; - - // He5 - ExcitEnergyChann06(18) = 8.56; - ExcitEnergyChann06(20) = 7.50; - ExcitEnergyChann06(25) = 6.20; - ExcitEnergyChann06(26) = 9.15; - ExcitEnergyChann06(31) = 5.53; - - // He6 - ExcitEnergyChann07(20) = 8.10; - ExcitEnergyChann07(25) = 6.44; - ExcitEnergyChann07(26) = 9.79; - ExcitEnergyChann07(31) = 6.20; - - - // Li5 - ExcitEnergyChann08(20) = 8.42; - ExcitEnergyChann08(25) = 7.03; - ExcitEnergyChann08(26) = 10.0; - ExcitEnergyChann08(31) = 6.38; - - - // Li6 - ExcitEnergyChann09(20) = 8.66; - ExcitEnergyChann09(31) = 6.88; - - - // Spin (2s+1) - - // neutrons - ExcitSpinChann00( 9) = 1; - ExcitSpinChann00(10) = 2; - ExcitSpinChann00(11) = 3; - ExcitSpinChann00(12) = 2; - ExcitSpinChann00(15) = 5; - ExcitSpinChann00(17) = 3; - ExcitSpinChann00(18) = 2; - ExcitSpinChann00(19) = 5; - ExcitSpinChann00(20) = 2; - ExcitSpinChann00(21) = 5; - ExcitSpinChann00(22) = 2; - ExcitSpinChann00(23) = 3; - ExcitSpinChann00(25) = 1; - ExcitSpinChann00(26) = 8; - ExcitSpinChann00(27) = 1; - ExcitSpinChann00(28) = 8; - ExcitSpinChann00(29) = 8; - ExcitSpinChann00(30) = 2; - ExcitSpinChann00(31) = 5; - - // protons - ExcitSpinChann01(15) = 8; - ExcitSpinChann01(17) = 1; - ExcitSpinChann01(18) = 6; - ExcitSpinChann01(19) = 5; - ExcitSpinChann01(20) = 6; - ExcitSpinChann01(22) = 4; - ExcitSpinChann01(23) = 8; - ExcitSpinChann01(25) = 3; - ExcitSpinChann01(26) = 4; - ExcitSpinChann01(27) = 7; - ExcitSpinChann01(28) = 4; - ExcitSpinChann01(29) = 5; - ExcitSpinChann01(30) = 2; - ExcitSpinChann01(31) = 10; - - // deuterons - ExcitSpinChann02(15) = 1; - ExcitSpinChann02(17) = 3; - ExcitSpinChann02(18) = 4; - ExcitSpinChann02(19) = 4; - ExcitSpinChann02(20) = 4; - ExcitSpinChann02(22) = 6; - ExcitSpinChann02(23) = 6; - ExcitSpinChann02(25) = 1; - ExcitSpinChann02(26) = 10; - ExcitSpinChann02(27) = 3; - ExcitSpinChann02(28) = 10; - ExcitSpinChann02(29) = 3; - ExcitSpinChann02(30) = 6; - ExcitSpinChann02(31) = 5; - - // tritons - ExcitSpinChann03(15) = 5; - ExcitSpinChann03(17) = 5; - ExcitSpinChann03(18) = 10; - ExcitSpinChann03(20) = 2; - ExcitSpinChann03(23) = 5; - ExcitSpinChann03(25) = 5; - ExcitSpinChann03(26) = 8; - ExcitSpinChann03(28) = 8; - ExcitSpinChann03(31) = 3; - - - // He3 - ExcitSpinChann04(18) = 6; - ExcitSpinChann04(20) = 8; - ExcitSpinChann04(25) = 3; - ExcitSpinChann04(26) = 2; - ExcitSpinChann04(31) = 7; - - // alphas - ExcitSpinChann05(18) = 4; - ExcitSpinChann05(20) = 6; - ExcitSpinChann05(25) = 7; - ExcitSpinChann05(26) = 4; - ExcitSpinChann05(31) = 13; - - // He5 - ExcitSpinChann06(18) = 6; - ExcitSpinChann06(20) = 4; - ExcitSpinChann06(25) = 3; - ExcitSpinChann06(26) = 14; - ExcitSpinChann06(31) = 5; - - // He6 - ExcitSpinChann07(20) = 4; - ExcitSpinChann07(25) = 7; - ExcitSpinChann07(26) = 14; - ExcitSpinChann07(31) = 3; - - // Li5 - ExcitSpinChann08(20) = 6; - ExcitSpinChann08(25) = 5; - ExcitSpinChann08(26) = 8; - ExcitSpinChann08(31) = 12; - - // Li6 - ExcitSpinChann09(20) = 8; - ExcitSpinChann09(31) = 1; - - - // |Gamma|A| Z| - // +-----+-+--+ - theChannels[ 0] = new G4EvaporationChannel( 2, 1, 0, &ExcitEnergyChann00, &ExcitSpinChann00); // n - theChannels[ 1] = new G4EvaporationChannel( 2, 1, 1, &ExcitEnergyChann01, &ExcitSpinChann01); // p - theChannels[ 2] = new G4EvaporationChannel( 6, 2, 1, &ExcitEnergyChann02, &ExcitSpinChann02); // H2 - theChannels[ 3] = new G4EvaporationChannel( 6, 3, 1, &ExcitEnergyChann03, &ExcitSpinChann03); // H3 - theChannels[ 4] = new G4EvaporationChannel( 6, 3, 2, &ExcitEnergyChann04, &ExcitSpinChann04); // He3 - theChannels[ 5] = new G4EvaporationChannel( 4, 4, 2, &ExcitEnergyChann05, &ExcitSpinChann05); // He4 - theChannels[ 6] = new G4EvaporationChannel( 20, 5, 2, &ExcitEnergyChann06, &ExcitSpinChann06); // He5 - theChannels[ 7] = new G4EvaporationChannel( 30, 6, 2, &ExcitEnergyChann07, &ExcitSpinChann07); // He6 - theChannels[ 8] = new G4EvaporationChannel( 20, 5, 3, &ExcitEnergyChann08, &ExcitSpinChann08); // Li5 - theChannels[ 9] = new G4EvaporationChannel( 54, 6, 3, &ExcitEnergyChann09, &ExcitSpinChann09); // Li6 - theChannels[10] = new G4EvaporationChannel( 73, 7, 3, &ExcitEnergyChann10, &ExcitSpinChann10); // Li7 - theChannels[11] = new G4EvaporationChannel(101, 8, 3, &ExcitEnergyChann11, &ExcitSpinChann11); // Li8 - theChannels[12] = new G4EvaporationChannel( 73, 7, 4, &ExcitEnergyChann12, &ExcitSpinChann12); // Be7 - theChannels[13] = new G4EvaporationChannel( 8, 8, 4, &ExcitEnergyChann13, &ExcitSpinChann13); // Be8 - theChannels[14] = new G4EvaporationChannel(146, 9, 4, &ExcitEnergyChann14, &ExcitSpinChann14); // Be9 - theChannels[15] = new G4EvaporationChannel(100, 10, 4, &ExcitEnergyChann15, &ExcitSpinChann15); // Be10 - theChannels[16] = new G4EvaporationChannel(100, 9, 5, &ExcitEnergyChann16, &ExcitSpinChann16); // B9 - theChannels[17] = new G4EvaporationChannel(343, 10, 5, &ExcitEnergyChann17, &ExcitSpinChann17); // B10 - theChannels[18] = new G4EvaporationChannel(174, 11, 5, &ExcitEnergyChann18, &ExcitSpinChann18); // B11 - theChannels[19] = new G4EvaporationChannel(393, 12, 5, &ExcitEnergyChann19, &ExcitSpinChann19); // B12 - theChannels[20] = new G4EvaporationChannel(186, 11, 6, &ExcitEnergyChann20, &ExcitSpinChann20); // C11 - theChannels[21] = new G4EvaporationChannel( 61, 12, 6, &ExcitEnergyChann21, &ExcitSpinChann21); // C12 - theChannels[22] = new G4EvaporationChannel(202, 13, 6, &ExcitEnergyChann22, &ExcitSpinChann22); // C13 - theChannels[23] = new G4EvaporationChannel(113, 14, 6, &ExcitEnergyChann23, &ExcitSpinChann23); // C14 - theChannels[24] = new G4EvaporationChannel(213, 13, 7, &ExcitEnergyChann24, &ExcitSpinChann24); // N13 - theChannels[25] = new G4EvaporationChannel(233, 14, 7, &ExcitEnergyChann25, &ExcitSpinChann25); // N14 - theChannels[26] = new G4EvaporationChannel(180, 15, 7, &ExcitEnergyChann26, &ExcitSpinChann26); // N15 - theChannels[27] = new G4EvaporationChannel(696, 16, 7, &ExcitEnergyChann27, &ExcitSpinChann27); // N16 - theChannels[28] = new G4EvaporationChannel(194, 15, 8, &ExcitEnergyChann28, &ExcitSpinChann28); // O15 - theChannels[29] = new G4EvaporationChannel(120, 16, 8, &ExcitEnergyChann29, &ExcitSpinChann29); // O16 - theChannels[30] = new G4EvaporationChannel(458, 17, 8, &ExcitEnergyChann30, &ExcitSpinChann30); // O17 - theChannels[31] = new G4EvaporationChannel(590, 18, 8, &ExcitEnergyChann31, &ExcitSpinChann31); // O18 - theChannels[32] = new G4CompetitiveFission(); // Fission Channel - theChannels[33] = new G4PhotonEvaporation(); // Photon Channel + theChannels->insert( new G4NeutronEvaporationChannel() ); // n + theChannels->insert( new G4ProtonEvaporationChannel() ); // p + theChannels->insert( new G4DeuteronEvaporationChannel() ); // Deuteron + theChannels->insert( new G4TritonEvaporationChannel() ); // Triton + theChannels->insert( new G4He3EvaporationChannel() ); // He3 + theChannels->insert( new G4AlphaEvaporationChannel() ); // Alpha + theChannels->insert( new G4CompetitiveFission() ); // Fission Channel + theChannels->insert( new G4PhotonEvaporation() ); // Photon Channel } G4Evaporation::G4Evaporation(const G4Evaporation &right) { - G4Exception("G4Evaporation::copy_constructor meant to not be accessable."); + G4Exception("G4Evaporation::copy_constructor meant to not be accessable."); } G4Evaporation::~G4Evaporation() { - for (G4int i = 0; i < TotNumberOfChannels; i++) - delete theChannels[i]; - + if (myOwnChannelsVector) { + theChannels->clearAndDestroy(); + delete theChannels; + } } const G4Evaporation & G4Evaporation::operator=(const G4Evaporation &right) @@ -430,96 +68,92 @@ G4bool G4Evaporation::operator!=(const G4Evaporation &right) const G4FragmentVector * G4Evaporation::BreakItUp(const G4Fragment &theNucleus) { - G4FragmentVector * theResult = new G4FragmentVector; + G4FragmentVector * theResult = new G4FragmentVector; - // CHECK that Excitation Energy != 0 - if (theNucleus.GetExcitationEnergy() == 0) { - theResult->insert(new G4Fragment(theNucleus)); - return theResult; - } + // CHECK that Excitation Energy != 0 + if (theNucleus.GetExcitationEnergy() <= 0.0) { + theResult->insert(new G4Fragment(theNucleus)); + return theResult; + } - // The residual nucleus (after evaporation of each fragment) - G4Fragment theResidualNucleus = theNucleus; + // The residual nucleus (after evaporation of each fragment) + G4Fragment theResidualNucleus = theNucleus; - - // Starts loop over evaporated particles - for (;;) { - // loop over evaporation channels - G4int i; - for (i=0; i < TotNumberOfChannels; i++) - theChannels[i]->Initialize(theResidualNucleus); - - // Work out total decay probability by summing over channels - G4double TotalProbability = 0; - for (i=0; i < TotNumberOfChannels; i++) - TotalProbability += theChannels[i]->GetEmissionProbability(); - -// G4cout << "---------------- " << theResidualNucleus.GetExcitationEnergy()/MeV << "-----------------------" << G4endl; -// G4cout << "Prob of neutron: " << theChannels[0]->GetEmissionProbability()/TotalProbability << G4endl; -// G4cout << "Prob of proton : " << theChannels[1]->GetEmissionProbability()/TotalProbability<< G4endl; -// G4cout << "Prob of alpha : " << theChannels[5]->GetEmissionProbability()/TotalProbability<< G4endl; -// G4cout << "Prob of fission: " << theChannels[NumberOfFissionChannel]->GetEmissionProbability()/TotalProbability<< G4endl; - - - if (TotalProbability <= 0.0) { - // Will be no evaporation more - // write information about residual nucleus - theResult->insert(new G4Fragment(theResidualNucleus)); - break; - } else { - // Selection of evaporation channel, fission or gamma - G4double EmissionProbChannel[TotNumberOfChannels]; + // Number of channels + G4int TotNumberOfChannels = theChannels->entries(); - - EmissionProbChannel[0] = theChannels[0]->GetEmissionProbability(); + // Starts loop over evaporated particles + for (;;) { + // loop over evaporation channels + G4int i; + for (i=0; i < TotNumberOfChannels; i++) { + theChannels->at(i)->Initialize(theResidualNucleus); + } + // Work out total decay probability by summing over channels + G4double TotalProbability = 0; + for (i=0; i < TotNumberOfChannels; i++) { + TotalProbability += theChannels->at(i)->GetEmissionProbability(); + } + if (TotalProbability <= 0.0) { + // Will be no evaporation more + // write information about residual nucleus + theResult->insert(new G4Fragment(theResidualNucleus)); + break; + } else { + // Selection of evaporation channel, fission or gamma +// G4double * EmissionProbChannel = new G4double(TotNumberOfChannels); + G4RWTValOrderedVector EmissionProbChannel; + +// EmissionProbChannel[0] = theChannels->at(0)->GetEmissionProbability(); + EmissionProbChannel.insert(theChannels->at(0)->GetEmissionProbability()); // index 0 + + for (i=1; i < TotNumberOfChannels; i++) { +// EmissionProbChannel[i] = EmissionProbChannel[i-1] + +// theChannels->at(i)->GetEmissionProbability(); + EmissionProbChannel.insert(EmissionProbChannel(i-1) + + theChannels->at(i)->GetEmissionProbability()); + } - for (i=1; i < TotNumberOfChannels; i++) - EmissionProbChannel[i] = EmissionProbChannel[i-1] + theChannels[i]->GetEmissionProbability(); + G4double shoot = G4UniformRand() * TotalProbability; + for (i=0; i < TotNumberOfChannels; i++) { +// if (shoot < EmissionProbChannel[i]) + if (shoot < EmissionProbChannel(i)) + break; + } + +// delete [] EmissionProbChannel; + EmissionProbChannel.clear(); + + if( i >= TotNumberOfChannels ) { + G4Exception( "G4Evaporation::BreakItUp: Can't define emission probability of the channels!" ); + } else { + // Perform break-up + G4FragmentVector * theEvaporationResult = theChannels->at(i)->BreakUp(theResidualNucleus); - G4double shoot = G4UniformRand() * TotalProbability; + // Check if chosen channel is fission (there are only two EXCITED fragments) + // or the channel could not evaporate anything + if ( theEvaporationResult->entries() == 1 || + (theEvaporationResult->first()->GetExcitationEnergy() > 0.0 && + theEvaporationResult->last()->GetExcitationEnergy() > 0.0) ) { + // FISSION + while (theEvaporationResult->entries() > 0) theResult->insert(theEvaporationResult->removeFirst()); + theEvaporationResult->clearAndDestroy(); + delete theEvaporationResult; + break; + } else { + // EVAPORATION + while (theEvaporationResult->entries() > 1) theResult->insert(theEvaporationResult->removeFirst()); + theResidualNucleus = *(theEvaporationResult->at(0)); + theEvaporationResult->clearAndDestroy(); + delete theEvaporationResult; + } + } + } + } - for (i=0; i < TotNumberOfChannels; i++) - if (shoot < EmissionProbChannel[i]) - break; - - if( i == TotNumberOfChannels ) - G4Exception( "Can't define emission probability of the channels (G4Evaporation::BreakItUp)" ); - else if (i == NumberOfFissionChannel) { - // Fission has to be performed - G4FragmentVector * theFissionResult = theChannels[i]->BreakUp(theResidualNucleus); - while (theFissionResult->entries() > 0) - theResult->insert(theFissionResult->removeFirst()); - - theFissionResult->clearAndDestroy(); - delete theFissionResult; - break; - - } else if (i == NumberOfGammaChannel) { - // Gamma evaporation has to be performed - G4FragmentVector * theGammaResult = theChannels[i]->BreakUp(theResidualNucleus); - while (theGammaResult->entries() > 0) - theResult->insert(theGammaResult->removeFirst()); - - theGammaResult->clearAndDestroy(); - delete theGammaResult; - break; - - } else { - // Evaporation has to be performed - G4FragmentVector * theEvaporationResult = theChannels[i]->BreakUp(theResidualNucleus); - while (theEvaporationResult->entries() > 1) - theResult->insert(theEvaporationResult->removeFirst()); - - theResidualNucleus = *(theEvaporationResult->at(0)); - theEvaporationResult->clearAndDestroy(); - delete theEvaporationResult; - } - } - } - - return theResult; + return theResult; } 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 8a8dce147e..f91b732622 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4EvaporationChannel.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4EvaporationChannel.cc @@ -1,5 +1,5 @@ // This code implementation is the intellectual property of -// the GEANT4 collaboration. +// the RD44 GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, @@ -7,41 +7,28 @@ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) -// some corrections V.Krylov // #include "G4EvaporationChannel.hh" -G4EvaporationChannel::G4EvaporationChannel(const G4int theGamma, - const G4int theA, - const G4int theZ, - G4RWTValVector * theExcitationEnergies, - G4RWTValVector * theExcitationSpins): - Gamma(theGamma), - A(theA), - Z(theZ), - ExcitationEnergies(theExcitationEnergies), - ExcitationSpins(theExcitationSpins), - AResidual(0), - ZResidual(0), - CoulombBarrier(0.0), - BindingEnergy(0.0), - MaximalKineticEnergy(-1000.0), - EmissionProbability(0.0) +G4EvaporationChannel::G4EvaporationChannel(const G4int theA, const G4int theZ, + G4VEmissionProbability * aEmissionStrategy, + G4VCoulombBarrier * aCoulombBarrier): + A(theA), + Z(theZ), + theEvaporationProbabilityPtr(aEmissionStrategy), + theCoulombBarrierPtr(aCoulombBarrier), + MaximalKineticEnergy(-1000.0), + EmissionProbability(0.0) { - theEvaporationProbabilityPtr = new G4EvaporationProbability(this); - MyOwnEvaporationProbability = true; - - theLevelDensityPtr = new G4EvaporationLevelDensityParameter; - MyOwnLevelDensity = true; + theLevelDensityPtr = new G4EvaporationLevelDensityParameter; + MyOwnLevelDensity = true; } + G4EvaporationChannel::~G4EvaporationChannel() { - - if (MyOwnEvaporationProbability) delete theEvaporationProbabilityPtr; - - if (MyOwnLevelDensity) delete theLevelDensityPtr; + if (MyOwnLevelDensity) delete theLevelDensityPtr; } @@ -49,25 +36,25 @@ G4EvaporationChannel::~G4EvaporationChannel() G4EvaporationChannel::G4EvaporationChannel(const G4EvaporationChannel & right) { - G4Exception("G4EvaporationChannel::copy_costructor meant to not be accessable"); + G4Exception("G4EvaporationChannel::copy_costructor meant to not be accessable"); } const G4EvaporationChannel & G4EvaporationChannel::operator=(const G4EvaporationChannel & right) { - G4Exception("G4EvaporationChannel::operator= meant to not be accessable"); - return *this; + G4Exception("G4EvaporationChannel::operator= meant to not be accessable"); + return *this; } G4bool G4EvaporationChannel::operator==(const G4EvaporationChannel & right) const { - return (this == (G4EvaporationChannel *) &right); - // return false; + return (this == (G4EvaporationChannel *) &right); + // return false; } G4bool G4EvaporationChannel::operator!=(const G4EvaporationChannel & right) const { - return (this != (G4EvaporationChannel *) &right); - // return true; + return (this != (G4EvaporationChannel *) &right); + // return true; } @@ -75,230 +62,146 @@ G4bool G4EvaporationChannel::operator!=(const G4EvaporationChannel & right) cons void G4EvaporationChannel::Initialize(const G4Fragment & fragment) { - G4int anA = fragment.GetA(); - G4int aZ = fragment.GetZ(); - G4double ExEnergy = fragment.GetExcitationEnergy(); + G4int anA = G4int(fragment.GetA()); + G4int aZ = G4int(fragment.GetZ()); + AResidual = anA - A; + ZResidual = aZ - Z; - AResidual = anA - A; - ZResidual = aZ - Z; + // Effective excitation energy + G4double ExEnergy = fragment.GetExcitationEnergy() - PairingCorrection(anA,aZ); - // We only take into account channels which are physically allowed - if (AResidual <= 0 || ZResidual <= 0 || AResidual < ZResidual || - (AResidual == ZResidual && AResidual > 1)) { - LevelDensityParameter = 0.0; - CoulombBarrier = 0.0; - BindingEnergy = 0.0; - MaximalKineticEnergy = -1000.0*MeV; - EmissionProbability = 0.0; - } else { - // Get Level Density - LevelDensityParameter = theLevelDensityPtr->LevelDensityParameter(anA,aZ,ExEnergy); + // We only take into account channels which are physically allowed + if (AResidual <= 0 || ZResidual <= 0 || AResidual < ZResidual || + (AResidual == ZResidual && AResidual > 1) || ExEnergy <= 0.0) { +// LevelDensityParameter = 0.0; + CoulombBarrier = 0.0; +// BindingEnergy = 0.0; + MaximalKineticEnergy = -1000.0*MeV; + EmissionProbability = 0.0; + } else { +// // Get Level Density +// LevelDensityParameter = theLevelDensityPtr->LevelDensityParameter(anA,aZ,ExEnergy); - // Coulomb Barrier calculation - CoulombBarrier = CalcCoulombBarrier(AResidual,ZResidual)*MeV; + // Coulomb Barrier calculation + CoulombBarrier = theCoulombBarrierPtr->GetCoulombBarrier(AResidual,ZResidual,ExEnergy); - - // Binding Enegy (for separate fragment from nucleus) - BindingEnergy = CalcBindingEnergy(anA,aZ)*MeV; +// // Binding Enegy (for separate fragment from nucleus) +// BindingEnergy = CalcBindingEnergy(anA,aZ); - // Maximal Kinetic Energy - MaximalKineticEnergy = CalcMaximalKineticEnergy(G4ParticleTable::GetParticleTable()->GetIonTable()->GetIonMass(aZ,anA)+ExEnergy)*MeV; - - // Emission probability - if (MaximalKineticEnergy <= 0.0) EmissionProbability = 0.0; - else { - // Total emission probability for this channel - EmissionProbability = theEvaporationProbabilityPtr->EmissionProbability(fragment,0.0); - // Next is a loop over excited states for this channel summing probabilities - G4double SavedGamma = Gamma; - G4double SavedMaximalKineticEnergy = MaximalKineticEnergy; - for (G4int i = 0; i < ExcitationEnergies->length(); i++) { - if (ExcitationSpins->operator()(i) < 0.1) continue; - Gamma = ExcitationSpins->operator()(i)*A; - // substract excitation energies - MaximalKineticEnergy -= ExcitationEnergies->operator()(i)/MeV; - // update probability - G4double tmp = theEvaporationProbabilityPtr->EmissionProbability(fragment,0.0); - EmissionProbability += tmp; - } - // restore Gamma and MaximalKineticEnergy - MaximalKineticEnergy = SavedMaximalKineticEnergy; - Gamma = SavedGamma; - } - } - - return; + // Maximal Kinetic Energy + MaximalKineticEnergy = CalcMaximalKineticEnergy(G4ParticleTable::GetParticleTable()-> + GetIonTable()->GetNucleusMass(aZ,anA)+ExEnergy); + + // Emission probability + if (MaximalKineticEnergy <= 0.0) EmissionProbability = 0.0; + else { + // Total emission probability for this channel + EmissionProbability = theEvaporationProbabilityPtr->EmissionProbability(fragment,MaximalKineticEnergy); + } + } + + return; } G4FragmentVector * G4EvaporationChannel::BreakUp(const G4Fragment & theNucleus) { - // calculate kinetic energy of evaporated fragment - G4double EvaporatedKineticEnergy = CalcKineticEnergy(); // MeV - G4double EvaporatedMass = G4ParticleTable::GetParticleTable()->GetIonTable()->GetIonMass(Z,A)/MeV; // MeV - G4double EvaporatedEnergy = EvaporatedKineticEnergy + EvaporatedMass; + G4double EvaporatedKineticEnergy = CalcKineticEnergy(); + G4double EvaporatedMass = G4ParticleTable::GetParticleTable()->GetIonTable()->GetIonMass(Z,A); + G4double EvaporatedEnergy = EvaporatedKineticEnergy + EvaporatedMass; - G4ThreeVector momentum( IsotropicVector( sqrt( EvaporatedEnergy*EvaporatedEnergy - - EvaporatedMass*EvaporatedMass ) - ) ); - - G4LorentzVector EvaporatedMomentum( momentum, EvaporatedEnergy ); - EvaporatedMomentum.boost( theNucleus.GetMomentum().boostVector() ); - - // to avoid rounding errors in Lorentz boost which then produce - // evaporated fragments with excitation energies ~10^-10 eV - EvaporatedMomentum.setE(sqrt(EvaporatedMomentum.vect().mag2()+EvaporatedMass*EvaporatedMass)); - - + G4ThreeVector momentum(IsotropicVector(sqrt(EvaporatedKineticEnergy* + (EvaporatedKineticEnergy+2.0*EvaporatedMass)))); + G4LorentzVector EvaporatedMomentum(momentum,EvaporatedEnergy); + EvaporatedMomentum.boost(theNucleus.GetMomentum().boostVector()); - G4Fragment * EvaporatedFragment = new G4Fragment( A, Z, EvaporatedMomentum ); - if ( !EvaporatedFragment ) - G4Exception( "G4EvaporationChannel::BreakUp: Can't create G4Fragment! "); + G4Fragment * EvaporatedFragment = new G4Fragment(A,Z,EvaporatedMomentum); - G4LorentzVector FragmentMomentum( theNucleus.GetMomentum() ); - FragmentMomentum.boost( -theNucleus.GetMomentum().boostVector() ); - - - G4LorentzVector ResidualMomentum( -momentum, FragmentMomentum.e() - EvaporatedEnergy ); - ResidualMomentum.boost( theNucleus.GetMomentum().boostVector() ); - - - G4Fragment * ResidualFragment = new G4Fragment( AResidual, ZResidual, ResidualMomentum ); - if ( !ResidualFragment ) - G4Exception( "G4EvaporationChannel::BreakUp: Can't create G4Fragment! "); + // ** And now the residual nucleus ** + G4double theExEnergy = theNucleus.GetExcitationEnergy(); + G4double theMass = G4ParticleTable::GetParticleTable()->GetIonTable()-> + GetNucleusMass(theNucleus.GetZ(),theNucleus.GetA()); + G4double ResidualEnergy = theMass + (theExEnergy - EvaporatedKineticEnergy) - EvaporatedMass; + + G4LorentzVector ResidualMomentum(-momentum,ResidualEnergy); + ResidualMomentum.boost(theNucleus.GetMomentum().boostVector()); + + G4Fragment * ResidualFragment = new G4Fragment( AResidual, ZResidual, ResidualMomentum ); - G4FragmentVector * theResult = new G4FragmentVector; - if ( !theResult ) - G4Exception( "G4EvaporationChannel::BreakUp: Can't create G4FragmentVector! "); + G4FragmentVector * theResult = new G4FragmentVector; - theResult->insert(EvaporatedFragment); - theResult->insert(ResidualFragment); - - return theResult; + theResult->insert(EvaporatedFragment); + theResult->insert(ResidualFragment); return theResult; } -G4double G4EvaporationChannel::CalcCoulombBarrier(const G4int ARes, const G4int ZRes) - // Calculation of Coulomb potential energy (barrier) in MeV for outgoing fragment -{ - G4double Barrier = 0.0; - if (Z == 0 && A == 1) return 0.0; // for neutron - else { - G4int nZZRes = Z * ZRes; - G4double r0 = 2.173*(1.0+0.006103 * nZZRes)/(1.0+0.009443 * nZZRes); - Barrier = 1.44/r0 * nZZRes / (pow( A,1./3. ) + pow( ARes,1./3. )); - } - return Barrier; -} - - -G4double G4EvaporationChannel::CalcBindingEnergy(const G4int anA, const G4int aZ) - // Calculate Binding Energy for separate fragment from nucleus -{ - // Mass Excess for residual nucleus - G4double ResNucMassExcess = G4NucleiProperties::GetMassExcess(AResidual,ZResidual)/MeV; - // Mass Excess for fragment - G4double FragmentMassExcess = G4NucleiProperties::GetMassExcess(A,Z)/MeV; - // Mass Excess for Nucleus - G4double NucleusMassExcess = G4NucleiProperties::GetMassExcess(anA,aZ)/MeV; - - return ResNucMassExcess + FragmentMassExcess - NucleusMassExcess; -} +// G4double G4EvaporationChannel::CalcBindingEnergy(const G4int anA, const G4int aZ) +// // Calculate Binding Energy for separate fragment from nucleus +// { +// // Mass Excess for residual nucleus +// G4double ResNucMassExcess = G4NucleiProperties::GetNuclearMass(AResidual,ZResidual); +// // Mass Excess for fragment +// G4double FragmentMassExcess = G4NucleiProperties::GetNuclearMass(A,Z); +// // Mass Excess for Compound Nucleus +// G4double NucleusMassExcess = G4NucleiProperties::GetNuclearMass(anA,aZ); +// +// return ResNucMassExcess + FragmentMassExcess - NucleusMassExcess; +// } G4double G4EvaporationChannel::CalcMaximalKineticEnergy(const G4double NucleusTotalE) - // Calculate maximal kinetic energy that can be carried by fragment (in MeV) +// Calculate maximal kinetic energy that can be carried by fragment. { -// // Odd-Even term correction (for maximal kinetic energy) -// G4double odd = 0.0; -// if (A < 65) { -// G4int NCorr = A - Z; -// NCorr = 2*(NCorr/2) - NCorr; -// G4int ZCorr = 2*(Z/2) - Z; -// odd = 11.0*(2+NCorr+ZCorr)/sqrt(G4double(A)); -// } - -// if (A <= 55) return U/MeV - -// (BindingEnergy + CoulombBarrier)/MeV - odd; -// else if (A > 55 && A < 65) return U/MeV - -// (BindingEnergy + CoulombBarrier)/MeV - -// odd * (1.0 - (A-55)/10.); - -// else return U/MeV - (BindingEnergy + CoulombBarrier); - - G4double ResidualMass = G4ParticleTable::GetParticleTable()->GetIonTable()->GetIonMass( ZResidual, AResidual )/MeV; - G4double EvaporatedMass = G4ParticleTable::GetParticleTable()->GetIonTable()->GetIonMass( Z, A )/MeV; - - return ( (NucleusTotalE/MeV)*(NucleusTotalE/MeV) + - EvaporatedMass*EvaporatedMass - ResidualMass*ResidualMass)/ - (2.0*NucleusTotalE ) - - EvaporatedMass - CoulombBarrier/MeV; + G4double ResidualMass = G4ParticleTable::GetParticleTable()->GetIonTable()->GetNucleusMass( ZResidual, AResidual ); + G4double EvaporatedMass = G4ParticleTable::GetParticleTable()->GetIonTable()->GetNucleusMass( Z, A ); + + G4double T = (NucleusTotalE*NucleusTotalE + EvaporatedMass*EvaporatedMass - ResidualMass*ResidualMass)/ + (2.0*NucleusTotalE) - + EvaporatedMass - CoulombBarrier; + + return T; } G4double G4EvaporationChannel::CalcKineticEnergy(void) - // Samples fragment kinetic energy (in MeV). - // It uses Dostrovsky's approximation for the inverse reaction cross - // in the probability for fragment emisson +// Samples fragment kinetic energy. +// It uses Dostrovsky's approximation for the inverse reaction cross +// in the probability for fragment emisson { - if (MaximalKineticEnergy < 0.0) - G4Exception("G4EvaporationChannel::CalcKineticEnergy: maximal kinetic energy is less than 0"); - -// G4double Rb = 4.0*LevelDensityParameter/(1./MeV)*AResidual*MaximalKineticEnergy/MeV; -// G4double RbSqrt = sqrt(Rb); -// G4double PEX1 = 0.0; -// if (RbSqrt < 160.0) PEX1 = exp(-RbSqrt); -// G4double Rk = 0.0; -// G4double FRk = 0.0; -// do { -// G4double RandNumber = G4UniformRand(); -// Rk = 1.0 + (1./RbSqrt)*log(RandNumber + (1.0-RandNumber)*PEX1); -// G4double Q1 = 1.0; -// G4double Q2 = 1.0; -// if (Z == 0) { // for emitted neutron -// G4double Beta = (2.12/pow(AResidual,2./3.) - 0.05)/ -// (0.76 + 2.2/pow(AResidual,1./3.)); -// Q1 = 1.0 + Beta/(MaximalKineticEnergy/MeV); -// Q2 = Q1*sqrt(Q1); -// } + if (MaximalKineticEnergy < 0.0) + G4Exception("G4EvaporationChannel::CalcKineticEnergy: maximal kinetic energy is less than 0"); + + G4double Rb = 4.0*theLevelDensityPtr->LevelDensityParameter(AResidual+A,ZResidual+Z,MaximalKineticEnergy)* + MaximalKineticEnergy; + G4double RbSqrt = sqrt(Rb); + G4double PEX1 = 0.0; + if (RbSqrt < 160.0) PEX1 = exp(-RbSqrt); + G4double Rk = 0.0; + G4double FRk = 0.0; + do { + G4double RandNumber = G4UniformRand(); + Rk = 1.0 + (1./RbSqrt)*log(RandNumber + (1.0-RandNumber)*PEX1); + G4double Q1 = 1.0; + G4double Q2 = 1.0; + if (Z == 0) { // for emitted neutron + G4double Beta = (2.12/pow(AResidual,2./3.) - 0.05)*MeV/ + (0.76 + 2.2/pow(AResidual,1./3.)); + Q1 = 1.0 + Beta/(MaximalKineticEnergy); + Q2 = Q1*sqrt(Q1); + } -// FRk = (3.0*sqrt(3.0)/2.0)/Q2 * Rk * (Q1 - Rk*Rk); + FRk = (3.0*sqrt(3.0)/2.0)/Q2 * Rk * (Q1 - Rk*Rk); -// } while (FRk < G4UniformRand()); + } while (FRk < G4UniformRand()); - - G4double Rb = 4.0*LevelDensityParameter/(1./MeV)*AResidual*(MaximalKineticEnergy)/MeV; - G4double RbSqrt = sqrt(Rb); - G4double PEX1 = 0.0; - if (RbSqrt < 160.0) PEX1 = exp(-RbSqrt); - G4double Rk = 0.0; - G4double FRk = 0.0; - do { - G4double RandNumber = G4UniformRand(); - Rk = 1.0 + (1./RbSqrt)*log(RandNumber + (1.0-RandNumber)*PEX1); - G4double Q1 = 1.0; - G4double Q2 = 1.0; - if (Z == 0) { // for emitted neutron - G4double Beta = (2.12/pow(AResidual,2./3.) - 0.05)/ - (0.76 + 2.2/pow(AResidual,1./3.)); - Q1 = 1.0 + Beta/(MaximalKineticEnergy/MeV); - Q2 = Q1*sqrt(Q1); - } - - FRk = (3.0*sqrt(3.0)/2.0)/Q2 * Rk * (Q1 - Rk*Rk); - - } while (FRk < G4UniformRand()); - - - - G4double result = (MaximalKineticEnergy)/MeV * (1.0-Rk*Rk) + CoulombBarrier/MeV; + G4double result = MaximalKineticEnergy * (1.0-Rk*Rk) + CoulombBarrier; return result; } @@ -308,14 +211,21 @@ G4ThreeVector G4EvaporationChannel::IsotropicVector(const G4double Magnitude) // Samples a isotropic random vectorwith a magnitud given by Magnitude. // By default Magnitude = 1.0 { - G4double CosTheta = 1.0 - 2.0*G4UniformRand(); - G4double SinTheta = sqrt(1.0 - CosTheta*CosTheta); - G4double Phi = twopi*G4UniformRand(); - G4ThreeVector Vector(Magnitude*cos(Phi)*SinTheta, - Magnitude*sin(Phi)*SinTheta, - Magnitude*CosTheta); - return Vector; + G4double CosTheta = 1.0 - 2.0*G4UniformRand(); + G4double SinTheta = sqrt(1.0 - CosTheta*CosTheta); + G4double Phi = twopi*G4UniformRand(); + G4ThreeVector Vector(Magnitude*cos(Phi)*SinTheta, + Magnitude*sin(Phi)*SinTheta, + Magnitude*CosTheta); + return Vector; } - +G4double G4EvaporationChannel::PairingCorrection(const G4int anA, const G4int aZ) const +{ + const G4double PairingConstant = 12.0*MeV; + const G4int N = anA - aZ; + G4double Pair = (1.0 - G4double(aZ) + 2.0*(aZ/2)) + (1.0 - G4double(N) + 2.0*(N/2)); + G4double PCorrection = Pair*PairingConstant/sqrt(G4double(anA)); + return PCorrection; +} 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 c5b8d89eae..96937a2452 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4EvaporationLevelDensityParameter.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4EvaporationLevelDensityParameter.cc @@ -1,5 +1,5 @@ // This code implementation is the intellectual property of -// the GEANT4 collaboration. +// the RD44 GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, @@ -13,11 +13,15 @@ #include "G4EvaporationLevelDensityParameter.hh" -//const G4double G4EvaporationLevelDensityParameter::EvapLevelDensityParameter = 0.125*(1./MeV); +const G4double G4EvaporationLevelDensityParameter::ConstEvapLevelDensityParameter = 0.125*(1./MeV); +const G4double G4EvaporationLevelDensityParameter::alpha = 0.072*(1./MeV); +const G4double G4EvaporationLevelDensityParameter::beta = 0.275*(1./MeV); +const G4double G4EvaporationLevelDensityParameter::gamma = 0.052*(1./MeV); +const G4double G4EvaporationLevelDensityParameter::Bs = 1.0; + G4EvaporationLevelDensityParameter:: -G4EvaporationLevelDensityParameter(const G4EvaporationLevelDensityParameter &right) : - EvapLevelDensityParameter(0.125*(1./MeV)) +G4EvaporationLevelDensityParameter(const G4EvaporationLevelDensityParameter &right) { G4Exception("G4EvaporationLevelDensityParameter::copy_constructor meant to not be accessable"); } @@ -41,7 +45,22 @@ G4bool G4EvaporationLevelDensityParameter::operator!=(const G4EvaporationLevelDe return true; } +G4double G4EvaporationLevelDensityParameter::LevelDensityParameter(const G4int A,const G4int Z, + const G4double U) const +{ + G4int N = A - Z; - - + // Asymptotic Level Density Parameter + G4double AsymptoticLDP = (alpha*G4double(A) + beta*pow(G4double(A),2./3.)*Bs)/MeV; + + // Shape of the LDP U dependence + G4double exponent = -gamma*U; + G4double f = 1.; + if (exponent > -300.) f -= exp(exponent); + + // Level Density Parameter + G4double a = AsymptoticLDP*(1. + ShellCorrection(Z,N)*f/U); + + return a; +} 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 9216264334..83a90b8a4e 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4EvaporationProbability.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4EvaporationProbability.cc @@ -1,5 +1,5 @@ // This code implementation is the intellectual property of -// the GEANT4 collaboration. +// the RD44 GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, @@ -41,145 +41,80 @@ G4bool G4EvaporationProbability::operator!=(const G4EvaporationProbability &righ return true; } - -G4double G4EvaporationProbability::EmissionProbability(const G4Fragment & fragment, const G4double photonExcitation) - // Calculate integrated probability (width) for rvaporation channel: - // If fragment has A_f <= 4 it will be used Dostrovsky's - // approximation for the inverse reaction cross section. If - // fragment has A_f > 4 it will be used Botvina's approximation for - // the inverse reaction cross section. +G4double G4EvaporationProbability::EmissionProbability(const G4Fragment & fragment, const G4double anEnergy) { - // first af all a test - if (theChannel->GetMaximalKineticEnergy() <= 0.0 || fragment.GetExcitationEnergy() <= 0.0) return 0.0; - - // We take decision on which approximation we'll use. - if (theChannel->GetA() <= 4) return DostrovskyApproximation(fragment.GetA(),fragment.GetExcitationEnergy()); - else return BotvinaApproximation(fragment.GetA(),fragment.GetExcitationEnergy()); + G4double EmissionProbability = 0.0; + G4double MaximalKineticEnergy = anEnergy; + if (MaximalKineticEnergy > 0.0 && fragment.GetExcitationEnergy() > 0.0) { + EmissionProbability = CalcProbability(fragment,MaximalKineticEnergy); +// // Next there is a loop over excited states for this channel summing probabilities +// G4double SavedGamma = Gamma; +// for (G4int i = 0; i < ExcitationEnergies->length(); i++) { +// if (ExcitationSpins->operator()(i) < 0.1) continue; +// Gamma = ExcitationSpins->operator()(i)*A; // A is the channel mass number +// // substract excitation energies +// MaximalKineticEnergy -= ExcitationEnergies->operator()(i); +// // update probability +// EmissionProbability += CalcProbability(fragment,MaximalKineticEnergy); +// EmissionProbability += tmp; +// } +// // restore Gamma and MaximalKineticEnergy +// MaximalKineticEnergy = SavedMaximalKineticEnergy; +// Gamma = SavedGamma; +// } + } + return EmissionProbability; +} + +G4double G4EvaporationProbability::CalcProbability(const G4Fragment & fragment, const G4double MaximalKineticEnergy) + // Calculate integrated probability (width) for rvaporation channel +{ + G4double ResidualA = G4double(fragment.GetA() - theA); + G4double ResidualZ = G4double(fragment.GetZ() - theZ); + G4double U = fragment.GetExcitationEnergy(); + + G4double NuclearMass = G4ParticleTable::GetParticleTable()->GetIonTable()->GetNucleusMass(theZ,theA); + + + G4double delta0 = PairingCorrection(fragment.GetA(),fragment.GetZ()); + + G4double SystemEntropy = 2.0*sqrt(theEvapLDPptr->LevelDensityParameter(fragment.GetA(),fragment.GetZ(),U)*(U-delta0)); + + // compute the integrated probability of evaporation channel + G4double RN = 1.5*fermi; + + G4double Alpha = CalcAlphaParam(fragment); + G4double Beta = CalcBetaParam(fragment); + + G4double Rmax = MaximalKineticEnergy; + G4double a = theEvapLDPptr->LevelDensityParameter(ResidualA,ResidualZ,Rmax); + G4double GlobalFactor = G4double(Gamma) * (Alpha/(a*a)) * + (NuclearMass*RN*RN*pow(ResidualA,2./3.))/ + (2.*pi* hbar_Planck*hbar_Planck); + G4double Term1 = (2.0*Beta*a-3.0)/2.0 + Rmax*a; + G4double Term2 = (2.0*Beta*a-3.0)*sqrt(Rmax*a) + 2.0*a*Rmax; + + G4double ExpTerm1 = 0.0; + if (SystemEntropy <= 600.0) ExpTerm1 = exp(-SystemEntropy); + + G4double ExpTerm2 = 2.*sqrt(a*Rmax) - SystemEntropy; + if (ExpTerm2 > 700.0) ExpTerm2 = 700.0; + ExpTerm2 = exp(ExpTerm2); + + G4double Width = GlobalFactor*(Term1*ExpTerm1 + Term2*ExpTerm2); + + return Width; } -G4double G4EvaporationProbability::DostrovskyApproximation(const G4int A, const G4double U) - // Width for evaporation channel with Dostrovsky's approximation for - // inverse cross section. +G4double G4EvaporationProbability::PairingCorrection(const G4int A, const G4int Z) const { - G4double SystemEntropy = 2.0*sqrt((theChannel->GetLevelDensityParameter()/(1./MeV)) * - A * U/MeV); - // r0 -> Absorption Radius R=r0 A^(1/3) - G4double r0 = 2.173*(1.0+0.006103*theChannel->GetZ()*theChannel->GetResidualZ())/ - (1.0+0.009443*theChannel->GetZ()*theChannel->GetResidualZ()); - // compute the integrated probability of evaporation channel - - G4double RN = 1.5; - G4double CC; - if (theChannel->GetA() == 1) CC = 0.2; // neutron, proton - // deuterium, triton, alpha, - else if ((theChannel->GetZ() == 1 && (theChannel->GetA() == 2 || theChannel->GetA() == 3)) || - (theChannel->GetZ() == 2 && (theChannel->GetA() == 3 || theChannel->GetA() == 4))) - CC = 0.1; - // He5, He6, Li5, Li6, ...., O17, O18 - else CC = pow(G4double(theChannel->GetA())/G4double(theChannel->GetResidualA()),2.0/3.0); - - - G4double ALFA; - G4double BETA; - if (theChannel->GetZ() == 0) { // neutron - ALFA = 0.76+2.2/pow(theChannel->GetResidualA(),1.0/3.0); - BETA = (2.12/pow(theChannel->GetResidualA(),2.0/3.0) - 0.05)/ALFA; - } else { - ALFA = 1.0 + CC; - BETA = 0.0; - } - - - G4double Q1 = (theChannel->GetLevelDensityParameter()/(1./MeV)) * theChannel->GetResidualA(); - G4double Q2 = Q1*theChannel->GetMaximalKineticEnergy()/MeV; - G4double Q3 = (theChannel->GetGamma()*pow(theChannel->GetResidualA(),2.0/3.0))*(ALFA/(Q1*Q1))* - (G4double(theChannel->GetResidualA())/G4double(theChannel->GetResidualA()+theChannel->GetA()))* - (pi*RN*RN)/(2.0*41.5*pi2); - G4double Q4 = (2.0*BETA*Q1-3.0)/2.0 + Q2; - G4double Q5 = (2.0*BETA*Q1-3.0)*(sqrt(Q2)-0.5)+2.0*Q2; - - G4double PEX1; - if (SystemEntropy > 160.0) PEX1 = 0.0; - else PEX1 = Q4*exp(-SystemEntropy); - - G4double PP2 = SystemEntropy - 2.0*sqrt(Q2); - - G4double PEX2; - if (PP2 > 160.0) PEX2 = 0.0; - else PEX2 = Q5*exp(-PP2); - - return Q3*(PEX1+PEX2); + const G4double PairingConstant = 12.0*MeV; + const G4int N = A - Z; + G4double Pair = (1.0 - G4double(Z) + 2.0*(Z/2)) + (1.0 - G4double(N) + 2.0*(N/2)); + G4double PCorrection = Pair*PairingConstant/sqrt(G4double(A)); + return PCorrection; } - -G4double G4EvaporationProbability::BotvinaApproximation(const G4int A, const G4double U) - // Width for evaporation channel with Botvina's approximation for - // inverse cross section. -{ - - G4double SystemEntropy = 2.0*sqrt((theChannel->GetLevelDensityParameter()/(1./MeV))* - A * U/MeV); - // r0 -> Absorption Radius R=r0 A^(1/3) - G4double r0 = 2.173*(1.0+0.006103*theChannel->GetZ()*theChannel->GetResidualZ())/ - (1.0+0.009443*theChannel->GetZ()*theChannel->GetResidualZ()); - - // compute the integrated probability of evaporation channel - G4double DALF = 0.869+9.91/theChannel->GetResidualZ(); - - G4double KinPlusCoul = theChannel->GetMaximalKineticEnergy()/MeV + theChannel->GetCoulombBarrier()/MeV; - if (KinPlusCoul <= theChannel->GetCoulombBarrier()/(5.0*MeV) || theChannel->GetZ() == 0) return 0.0; - - G4double CC = pow(G4double(theChannel->GetA())/G4double(theChannel->GetResidualA()),2.0/3.0); - - G4double ALFA = 1.0+CC; - - G4double Q1 = (theChannel->GetLevelDensityParameter()/(1./MeV)) * theChannel->GetResidualA(); - - G4double Q3 = theChannel->GetGamma() * pow(theChannel->GetResidualA(),2.0/3.0) * (ALFA/(Q1*Q1)) - *(G4double(theChannel->GetResidualA())/G4double(theChannel->GetResidualA()+theChannel->GetA()))* - ((pi*r0*r0)/(2.0*41.5*pi2)); - - G4double TempMKE = theChannel->GetMaximalKineticEnergy()/MeV - 1.0; - G4double prob3 = 0.0; - if (TempMKE > 0.0) { - G4double Q2 = Q1*TempMKE; - G4double Q4 = (2.0*Q1-3.0)/2.0 + Q2; - G4double Q5 = (2.0*Q1-3.0)*(sqrt(Q2)-0.5)+2.0*Q2; - prob3 = Q3*(Q4*exp(-SystemEntropy)+Q5*exp(2.0*sqrt(Q2)-SystemEntropy)); - } - G4double EX = theChannel->GetCoulombBarrier()/MeV + 1.0; - G4double EM = KinPlusCoul-Q1/(DALF*DALF); - G4double prob4 = 0.0; - G4double SQ = 0.0; - G4double CSI = 0.0; - G4double F1CSI = 0.0; - if (EM >= EX) { - SQ = sqrt(Q1/(KinPlusCoul-EX)); - G4double F1X = DALF-SQ; - G4double F2X = SQ/(2.0*(KinPlusCoul-EX)); - if (F1X >= (0.5*F2X)) { - CSI = 0.693/F1X; - G4double SQCSI = sqrt(Q1/(KinPlusCoul-EX+CSI)); - G4double F2CSI = SQCSI/(2.0*(KinPlusCoul-EX+CSI)); - prob4 = Q3*2.0*Q1*Q1*(1.0/F1X)* - exp(2.0*sqrt(Q1*(KinPlusCoul-EX))-SystemEntropy-F2CSI*CSI*CSI/2.0); - } else { - CSI = 0.48/sqrt(0.5*F2X); - F1CSI = DALF-sqrt(Q1/(KinPlusCoul-EX+CSI)); - prob4 = Q3*Q1*Q1*sqrt(6.2832/F2X)* - exp(2.0*sqrt(Q1*(KinPlusCoul-EX))-SystemEntropy-F1CSI*CSI); - } - } else if (EM < EX && EM > theChannel->GetCoulombBarrier()/(5.0*MeV)) { - SQ = sqrt(Q1/(KinPlusCoul-EM)); - G4double F2M = SQ/(2.0*(KinPlusCoul-EM)); - CSI = 0.48/sqrt(0.5*F2M); - F1CSI = DALF - sqrt(Q1/(KinPlusCoul-EM+CSI)); - prob4 = Q3*2.0*Q1*Q1*sqrt(6.2832/F2M)* - exp(DALF*(EM-EX)+2.0*sqrt(Q1*(KinPlusCoul-EM))-SystemEntropy-F1CSI*CSI); - } else return prob3; - return prob3+prob4; -} - 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 9a63f418e0..0d585ff28e 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4ExcitationHandler.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4ExcitationHandler.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ExcitationHandler.cc,v 1.3.8.1 1999/12/07 20:51:37 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ExcitationHandler.cc,v 1.6 2000/06/21 14:26:24 stesting Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (May 1998) @@ -78,7 +78,7 @@ G4ReactionProductVector * G4ExcitationHandler::BreakItUp(const G4Fragment &theIn G4FragmentVector* theResult = 0; G4double exEnergy = theInitialState.GetExcitationEnergy(); G4double A = theInitialState.GetA(); - G4int Z = theInitialState.GetZ(); + G4int Z = G4int(theInitialState.GetZ()); G4int Zmax = GetMaxZ(); G4double Amax = GetMaxA(); @@ -113,7 +113,7 @@ G4ReactionProductVector * G4ExcitationHandler::BreakItUp(const G4Fragment &theIn exEnergy = theResult->at(i)->GetExcitationEnergy(); if (exEnergy > 0.0) { A = theResult->at(i)->GetA(); - Z = theResult->at(i)->GetZ(); + Z = G4int(theResult->at(i)->GetZ()); theExcitedNucleus = *(theResult->at(i)); // try to de-excite this fragment if(Aentries(); i++) { // theFragmentVector->at(i)->DumpInfo(); - theFragmentA = theFragmentVector->at(i)->GetA(); - theFragmentZ = theFragmentVector->at(i)->GetZ(); + theFragmentA = G4int(theFragmentVector->at(i)->GetA()); + theFragmentZ = G4int(theFragmentVector->at(i)->GetZ()); theFragmentMomentum = theFragmentVector->at(i)->GetMomentum(); theKindOfFragment = 0; if (theFragmentA == 0 && theFragmentZ == 0) { // photon @@ -246,6 +246,18 @@ G4ExcitationHandler::Transform(G4FragmentVector * theFragmentVector) const theFragmentVector->clearAndDestroy(); delete theFragmentVector; } + G4int debugit; + for(debugit=0; debugitlength(); debugit++) + { + if(theReactionProductVector->at(debugit)->GetTotalEnergy()<1.*eV) + { + G4cerr << "G4ExcitationHandler: Warning: Photonevaporation data not exact."<removeAt(debugit); + } + } return theReactionProductVector; } 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 206f771638..aae6885f1c 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4FissionBarrier.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4FissionBarrier.cc @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the GEANT4 collaboration. +// the RD44 GEANT4 collaboration. // // By copying, 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.1.10.1 1999/12/07 20:51:38 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4FissionBarrier.cc,v 1.3 2000/06/09 11:43:36 larazb Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) @@ -38,106 +38,39 @@ G4bool G4FissionBarrier::operator!=(const G4FissionBarrier & right) const -G4double G4FissionBarrier::FissionBarrier(const G4int A, const G4int Z) +G4double G4FissionBarrier::FissionBarrier(const G4int A, const G4int Z, const G4double U) // Compute fission barrier according with Barashenkov's prescription for A >= 65 { - if (A >= 65) return BarashenkovFissionBarrier(A,Z)*MeV; - else return 1.0*GeV; + if (A >= 65) return BarashenkovFissionBarrier(A,Z)/(1.0 + sqrt(U/(2.0*G4double(A)))); + else return 100.0*GeV; } G4double G4FissionBarrier::BarashenkovFissionBarrier(const G4int A, const G4int Z) - // Calculates Fission Barrier heights (in MeV), which are function of the nuclear - // fissility parameteter x = Z*Z/A. - // Barashenkov V., Iljinov A. and Toneev V. parametrization (1972) + // Calculates Fission Barrier heights { - const G4double ShellCorr1[130] = { - 20.80, 15.80, 21.00, 16.80, 19.80, - 16.50, 18.80, 16.50, 18.50, 17.20, - 18.26, 15.05, 16.01, 12.04, 13.27, - 11.09, 12.17, 10.26, 11.04, 8.41, - 9.79, 7.36, 8.15, 5.63, 5.88, - 3.17, 3.32, 0.82, 1.83, 0.97, - 2.33, 1.27, 2.92, 1.61, 2.91, - 1.35, 2.40, 0.89, 1.74, 0.36, - 0.95, -0.65, -0.04, -1.73, -0.96, - -2.87, -2.05, -4.05, -3.40, -5.72, - -3.75, -4.13, -2.42, -2.85, -1.01, - -1.33, 0.54, -0.02, 1.74, 0.75, - 2.24, 1.00, 1.98, 0.79, 1.54, - 0.39, 1.08, 0.00, 0.78, -0.35, - 0.58, -0.55, 0.59, -0.61, 0.59, - -0.35, 0.32, -0.96, -0.52, -2.08, - -2.46, -3.64, -1.55, -0.96, 0.97, - 0.88, 2.37, 1.75, 2.72, 1.90, - 2.55, 1.46, 1.93, 0.86, 1.17, - 0.08, 0.39, -0.76, -0.39, -1.51, - -1.17, -2.36, -1.95, -3.06, -2.62, - -3.55, -2.95, -3.75, -3.07, -3.79, - -3.06, -3.77, -3.05, -3.78, -3.12, - -3.90, -3.35, -4.24, -3.86, -4.92, - -5.06, -6.77, -7.41, -9.18, -10.16, - -11.12, -9.76, -9.23, -7.96, -7.65}; - const G4double ShellCorr2[200] = { - -8.40, -12.90, -8.00, -11.90, -9.20, - -12.50, -10.80, -13.60, -11.20, -12.20, - -12.81, -15.40, -13.07, -15.80, -13.81, - -14.98, -12.63, -13.76, -11.37, -12.38, - -9.23, -9.65, -7.64, -9.17, -8.05, - -9.72, -8.87, -10.76, -8.64, -8.89, - -6.60, -7.13, -4.77, -5.33, -3.06, - -3.79, -1.72, -2.79, -0.93, -2.19, - -0.52, -1.90, -0.45, -2.20, -1.22, - -3.07, -2.42, -4.37, -3.94, -6.08, - -4.49, -4.50, -3.14, -2.93, -1.04, - -1.36, 0.69, 0.21, 2.11, 1.33, - 3.29, 2.46, 4.30, 3.32, 4.79, - 3.62, 4.97, 3.64, 4.63, 3.07, - 4.06, 2.49, 3.30, 1.46, 2.06, - 0.51, 0.74, -1.18, -1.26, -3.54, - -3.97, -5.26, -4.18, -3.71, -2.10, - -1.70, -0.08, -0.18, 0.94, 0.27, - 1.13, 0.08, 0.91, -0.31, 0.49, - -0.78, 0.08, -1.15, -0.23, -1.41, - -0.42, -1.55, -0.55, -1.66, -0.66, - -1.73, -0.75, -1.74, -0.78, -1.69, - -0.78, -1.60, -0.75, -1.46, -0.67, - -1.26, -0.51, -1.04, -0.53, -1.84, - -2.42, -4.52, -4.76, -6.33, -6.76, - -7.81, -5.80, -5.37, -3.63, -3.35, - -1.75, -1.88, -0.61, -0.90, 0.09, - -0.32, 0.55, -0.13, 0.70, -0.06, - 0.49, -0.20, 0.40, -0.22, 0.36, - -0.09, 0.58, 0.12, 0.75, 0.15, - 0.70, 0.17, 1.11, 0.89, 1.85, - 1.62, 2.54, 2.29, 3.20, 2.91, - 3.84, 3.53, 4.48, 4.15, 5.12, - 4.78, 5.75, 5.39, 6.31, 5.91, - 6.87, 6.33, 7.13, 6.61, 7.30, - 6.31, 6.27, 4.83, 4.49, 2.85, - 2.32, 0.58, -0.11, -0.98, 0.81, - 1.77, 3.37, 4.13, 5.60, 6.15, - 7.29, 7.35, 7.95, 7.67, 8.16, - 7.83, 8.31, 8.01, 8.53, 8.27}; + // Liquid drop model parameters for + // surface energy of a spherical nucleus + const G4double aSurf = 17.9439*MeV; + // and coulomb energy + const G4double aCoul = 0.7053*MeV; + const G4int N = A - Z; + const G4double k = 1.7826; - const G4int N = A - Z; - // const G4double x = (static_cast(Z)*static_cast(Z))/ - // static_cast(A); - const G4double x = (G4double(Z)*G4double(Z))/G4double(A); - G4double BF0 = 0.0; - if (x <= 33.5) BF0 = 12.5 + 4.7*pow((33.5-x),0.75); - else BF0 = 12.5 - 2.7*pow((x-33.5),2.0/3.0); + // fissibility parameter + G4double x = (aCoul/(2.0*aSurf))*(G4double(Z)*G4double(Z))/G4double(A); + x /= (1.0 - k*(G4double(N-Z)/G4double(A))*(G4double(N-Z)/G4double(A))); + + // Liquid drop model part of Fission Barrier + G4double BF0 = aSurf*pow(G4double(A),2./3.); + if (x <= 2./3.) BF0 *= 0.38*(3./4.-x); + else BF0 *= 0.83*(1. - x)*(1. - x)*(1. - x); - // Determine which kind of nucleus is: even-even, odd-odd, even-odd, odd-even - G4double D = 0.0; - G4int I = 2*(Z/2); - G4int J = 2*(N/2); - if (I < Z) D = 0.0; - else D = -0.5; - if (J < N) D += 1.0; + // + G4double D = 1.248*MeV; + D *= (G4double(N)-2.0*(N/2)) + (G4double(Z)-2.0*(Z/2)); - if (Z > 130 || N > 200) return BF0 + D; - else return BF0 + D - ShellCorr1[Z-1] - ShellCorr2[N-1]; + return BF0 + D - SellPlusPairingCorrection(Z,N); } 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 3a8a2ed5d0..48a463591e 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4FissionLevelDensityParameter.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4FissionLevelDensityParameter.cc @@ -1,5 +1,5 @@ // This code implementation is the intellectual property of -// the GEANT4 collaboration. +// the RD44 GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, 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 60e48ecc23..4744f3a58a 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4FissionParameters.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4FissionParameters.cc @@ -1,5 +1,5 @@ // This code implementation is the intellectual property of -// the GEANT4 collaboration. +// the RD44 GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, @@ -20,36 +20,36 @@ const G4double G4FissionParameters::A2 = 141.0; G4FissionParameters::G4FissionParameters(const G4int A, const G4int Z, const G4double ExEnergy, const G4double FissionBarrier) { - G4double U = ExEnergy/MeV; + G4double U = ExEnergy; As = A/2.0; - if (A >= 235) Sigma2 = 5.6; // MeV + if (A <= 235) Sigma2 = 5.6; // MeV else Sigma2 = 5.6 + 0.096*(A-235); // MeV Sigma1 = 0.5*Sigma2; // MeV - SigmaS = exp(0.00553*U + 4.1386); // MeV - + SigmaS = exp(0.00553*U/MeV + 2.1386); // MeV + if (SigmaS > 20.0) SigmaS = 20.0; 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)/2.0)*(As-(A1+A2)/2.0))/(2.0*SigmaS*SigmaS)); G4double wa; G4double w1,w2; w = 0.0; if (Z >= 90) { // Z >= 90 - if (U <= 16.25) wa = exp(0.5385*U-9.9564); // U <= 16.25 MeV - else wa = exp(0.09197*U-2.7003); // U > 16.25 MeV + if (U <= 16.25) wa = exp(0.5385*U/MeV-9.9564); // U <= 16.25 MeV + else wa = exp(0.09197*U/MeV-2.7003); // U > 16.25 MeV } else if (Z == 89) { // Z == 89 wa = exp(0.09197*U-1.0808); } else if (Z >= 82) { // 82 <= Z <= 88 - G4double X = FissionBarrier/MeV - 7.5; + G4double X = FissionBarrier - 7.5*MeV; if (X < 0.0) X = 0.0; - wa = exp(0.09197*(U-X)-1.0808); + wa = exp(0.09197*(U-X)/MeV-1.0808); } else { // Z < 82 w = 1001.0; } @@ -60,7 +60,7 @@ G4FissionParameters::G4FissionParameters(const G4int A, const G4int Z, const G4d w = w1/w2; - if (82 <= Z && Z < 89 && A < 227) w *= exp(0.3*(A-227)); + if (82 <= Z && Z < 89 && A < 227) w *= exp(0.3*(227-A)); } } 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 a758b060b0..1974350b89 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4FissionProbability.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4FissionProbability.cc @@ -1,5 +1,5 @@ // This code implementation is the intellectual property of -// the GEANT4 collaboration. +// the RD44 GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, @@ -41,31 +41,45 @@ G4bool G4FissionProbability::operator!=(const G4FissionProbability &right) const } -G4double G4FissionProbability::EmissionProbability(const G4Fragment & fragment, const G4double photonExcitation) - // +G4double G4FissionProbability::EmissionProbability(const G4Fragment & fragment, const G4double MaximalKineticEnergy) + // Compute integrated probability of fission channel { - G4double A = fragment.GetA(); - G4double Z = fragment.GetZ(); - G4double U = fragment.GetExcitationEnergy(); - G4double SystemEntropy = 2.0*sqrt((theEvapLDP.LevelDensityParameter(A,Z,U)/(1./MeV))*A*U/MeV); + if (MaximalKineticEnergy <= 0.0) return 0.0; + G4double A = fragment.GetA(); + G4double Z = fragment.GetZ(); + G4double U = fragment.GetExcitationEnergy(); + + G4double Ucompound = U - EvaporationPairingCorrection(G4int(A),G4int(Z)); + G4double Ufission = U - FissionPairingCorrection(G4int(A),G4int(Z)); + + G4double SystemEntropy = 2.0*sqrt(theEvapLDP.LevelDensityParameter(A,Z,Ucompound)*Ucompound); + + G4double afission = theFissLDP.LevelDensityParameter(A,Z,Ufission); - // Compute integrated probability of fission channel - if (theChannel->GetMaximalKineticEnergy() <= 0.0) return 0.0; + G4double Cf = 2.0*sqrt(afission*MaximalKineticEnergy); - G4double Q1 = 2.0*sqrt((theFissLDP.LevelDensityParameter(A,Z,U)/(1./MeV))*A* - theChannel->GetMaximalKineticEnergy()/MeV); - - G4double Q2 = 1./(4.0*pi); - - // G4double Tfis = 21.e-6*940.0; - - - //return min(Tfis,(Q2/((theFissLDP.LevelDensityParameter(A,Z,U)/(1./MeV))*A))* - // ((Q1-1.0)*exp(Q1-SystemEntropy)+exp(-SystemEntropy))); - - - return (Q2/((theFissLDP.LevelDensityParameter(A,Z,U)/(1./MeV))*A))* - ((Q1-1.0)*exp(Q1-SystemEntropy)+exp(-SystemEntropy)); + G4double Q1 = 1.0 + (Cf - 1.0)*exp(Cf); + G4double Q2 = 4.0*pi*afission*exp(SystemEntropy); + + G4double probability = Q1/Q2; + + return probability; } +G4double G4FissionProbability::EvaporationPairingCorrection(const G4int A, const G4int Z) const +{ + const G4double PairingConstant = 12.0*MeV; + const G4int N = A - Z; + G4double Pair = (1.0 - G4double(Z) + 2.0*(Z/2)) + (1.0 - G4double(N) + 2.0*(N/2)); + G4double PCorrection = Pair*PairingConstant/sqrt(G4double(A)); + return PCorrection; +} +G4double G4FissionProbability::FissionPairingCorrection(const G4int A, const G4int Z) const +{ + const G4double PairingConstant = 14.0*MeV; + const G4int N = A - Z; + G4double Pair = (1.0 - G4double(Z) + 2.0*(Z/2)) + (1.0 - G4double(N) + 2.0*(N/2)); + G4double PCorrection = Pair*PairingConstant/sqrt(G4double(A)); + return PCorrection; +} diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4He3CoulombBarrier.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4He3CoulombBarrier.cc new file mode 100644 index 0000000000..b0a30be908 --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4He3CoulombBarrier.cc @@ -0,0 +1,58 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By copying, 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.1 2000/06/09 11:43:36 larazb Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// Hadronic Process: Nuclear De-excitations +// by V. Lara (Dec 1999) + + +#include "G4He3CoulombBarrier.hh" + +G4He3CoulombBarrier::G4He3CoulombBarrier(const G4He3CoulombBarrier & right) +{ + G4Exception("G4He3CoulombBarrier::copy_constructor meant to not be accessable."); +} + + +const G4He3CoulombBarrier & G4He3CoulombBarrier::operator=(const G4He3CoulombBarrier & right) +{ + G4Exception("G4He3CoulombBarrier::operator= meant to not be accessable."); + return *this; +} + +G4bool G4He3CoulombBarrier::operator==(const G4He3CoulombBarrier & right) const +{ + return false; +} + +G4bool G4He3CoulombBarrier::operator!=(const G4He3CoulombBarrier & right) const +{ + return true; +} + + +G4double G4He3CoulombBarrier::BarrierPenetrationFactor(const G4double aZ) const +{ + // Data comes from + // Dostrovsky, Fraenkel and Friedlander + // Physical Review, vol 116, num. 3 1959 + // + // const G4int size = 5; + // const G4double Zlist[size] = {10.0, 20.0, 30.0, 50.0, 70.0}; + // const G4double KHe3[size] = {0.68, 0.82, 0.91, 0.97, 0.98}; + // + // K for He3 is K for alphas + 0.12 + G4double K = 1.0; + if (aZ>=70.0) { + K = 0.98; + } else { + K = (((0.23684e-5*aZ) - 0.42143e-3)*aZ + 0.25222e-1)*aZ + 0.46699; + } + return K+0.12; +} diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4He3EvaporationChannel.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4He3EvaporationChannel.cc new file mode 100644 index 0000000000..658389a229 --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4He3EvaporationChannel.cc @@ -0,0 +1,37 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By 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: Nuclear De-excitations +// by V. Lara (Nov. 1999) +// + +#include "G4He3EvaporationChannel.hh" + + +const G4He3EvaporationChannel & G4He3EvaporationChannel::operator=(const G4He3EvaporationChannel & right) +{ + G4Exception("G4He3EvaporationChannel::operator= meant to not be accessable"); + return *this; +} + +G4He3EvaporationChannel::G4He3EvaporationChannel(const G4He3EvaporationChannel & right) +{ + G4Exception("G4He3EvaporationChannel::CopyConstructor meant to not be accessable"); +} + +G4bool G4He3EvaporationChannel::operator==(const G4He3EvaporationChannel & right) const +{ + return (this == (G4He3EvaporationChannel *) &right); + // return false; +} + +G4bool G4He3EvaporationChannel::operator!=(const G4He3EvaporationChannel & right) const +{ + return (this != (G4He3EvaporationChannel *) &right); + // return true; +} + diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4He3EvaporationProbability.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4He3EvaporationProbability.cc new file mode 100644 index 0000000000..6c7da98629 --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4He3EvaporationProbability.cc @@ -0,0 +1,91 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By 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: Nuclear De-excitations +// by V. Lara (Nov 1999) +// + + +#include "G4He3EvaporationProbability.hh" + +G4He3EvaporationProbability::G4He3EvaporationProbability() : + G4EvaporationProbability(3,2,6) // A,Z,Gamma +{ + const G4int NumExcitedStates = 31+1; + ExcitEnergies.reshape(NumExcitedStates); + ExcitSpins.reshape(NumExcitedStates); + for (G4int i = 0; i < NumExcitedStates; i++) { + ExcitEnergies(i) = 0.0; + ExcitSpins(i) = 0; + } + + ExcitEnergies(18) = 7.29*MeV; + ExcitEnergies(20) = 6.48*MeV; + ExcitEnergies(25) = 5.69*MeV; + ExcitEnergies(26) = 8.31*MeV; + ExcitEnergies(31) = 5.10*MeV; + + ExcitSpins(18) = 6; + ExcitSpins(20) = 8; + ExcitSpins(25) = 3; + ExcitSpins(26) = 2; + ExcitSpins(31) = 7; + + SetExcitationEnergiesPtr(&ExcitEnergies); + SetExcitationSpinsPtr(&ExcitSpins); +} + +G4He3EvaporationProbability::G4He3EvaporationProbability(const G4He3EvaporationProbability &right) +{ + G4Exception("G4He3EvaporationProbability::copy_constructor meant to not be accessable"); +} + + + + +const G4He3EvaporationProbability & G4He3EvaporationProbability:: +operator=(const G4He3EvaporationProbability &right) +{ + G4Exception("G4He3EvaporationProbability::operator= meant to not be accessable"); + return *this; +} + + +G4bool G4He3EvaporationProbability::operator==(const G4He3EvaporationProbability &right) const +{ + return false; +} + +G4bool G4He3EvaporationProbability::operator!=(const G4He3EvaporationProbability &right) const +{ + return true; +} + +G4double G4He3EvaporationProbability::CCoeficient(const G4double aZ) const +{ + // Data comes from + // Dostrovsky, Fraenkel and Friedlander + // Physical Review, vol 116, num. 3 1959 + // + // const G4int size = 5; + // G4double Zlist[5] = { 10.0, 20.0, 30.0, 50.0, 70.0}; + // G4double Calpha[5] = { 0.10, 0.10, 0.10, 0.08, 0.06}; + // C for He3 is equal to C for alpha times 4/3 + G4double C = 0.0; + + + if (aZ <= 30) { + C = 0.10; + } else if (aZ <= 50) { + C = 0.1 + -((aZ-50.)/20.)*0.02; + } else if (aZ < 70) { + C = 0.08 + -((aZ-70.)/20.)*0.02; + } else { + C = 0.06; + } + return C*(4.0/3.0); +} diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4NeutronCoulombBarrier.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4NeutronCoulombBarrier.cc new file mode 100644 index 0000000000..23a339899f --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4NeutronCoulombBarrier.cc @@ -0,0 +1,38 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By copying, 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.1 2000/06/09 11:43:36 larazb Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// Hadronic Process: Nuclear De-excitations +// by V. Lara (Dec 1999) + + +#include "G4NeutronCoulombBarrier.hh" + +G4NeutronCoulombBarrier::G4NeutronCoulombBarrier(const G4NeutronCoulombBarrier & right) +{ + G4Exception("G4NeutronCoulombBarrier::copy_constructor meant to not be accessable."); +} + + +const G4NeutronCoulombBarrier & G4NeutronCoulombBarrier::operator=(const G4NeutronCoulombBarrier & right) +{ + G4Exception("G4NeutronCoulombBarrier::operator= meant to not be accessable."); + return *this; +} + +G4bool G4NeutronCoulombBarrier::operator==(const G4NeutronCoulombBarrier & right) const +{ + return false; +} + +G4bool G4NeutronCoulombBarrier::operator!=(const G4NeutronCoulombBarrier & right) const +{ + return true; +} + diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4NeutronEvaporationChannel.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4NeutronEvaporationChannel.cc new file mode 100644 index 0000000000..efa7a66b5b --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4NeutronEvaporationChannel.cc @@ -0,0 +1,37 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By 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: Nuclear De-excitations +// by V. Lara (Nov. 1999) +// + +#include "G4NeutronEvaporationChannel.hh" + + +const G4NeutronEvaporationChannel & G4NeutronEvaporationChannel::operator=(const G4NeutronEvaporationChannel & right) +{ + G4Exception("G4NeutronEvaporationChannel::operator= meant to not be accessable"); + return *this; +} + +G4NeutronEvaporationChannel::G4NeutronEvaporationChannel(const G4NeutronEvaporationChannel & right) +{ + G4Exception("G4NeutronEvaporationChannel::CopyConstructor meant to not be accessable"); +} + +G4bool G4NeutronEvaporationChannel::operator==(const G4NeutronEvaporationChannel & right) const +{ + return (this == (G4NeutronEvaporationChannel *) &right); + // return false; +} + +G4bool G4NeutronEvaporationChannel::operator!=(const G4NeutronEvaporationChannel & right) const +{ + return (this != (G4NeutronEvaporationChannel *) &right); + // return true; +} + diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4NeutronEvaporationProbability.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4NeutronEvaporationProbability.cc new file mode 100644 index 0000000000..ab2393a9ac --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4NeutronEvaporationProbability.cc @@ -0,0 +1,96 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By 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: Nuclear De-excitations +// by V. Lara (Nov 1999) +// + + +#include "G4NeutronEvaporationProbability.hh" + +G4NeutronEvaporationProbability::G4NeutronEvaporationProbability() : + G4EvaporationProbability(1,0,2) // A,Z,Gamma +{ + const G4int NumExcitedStates = 31+1; + ExcitEnergies.reshape(NumExcitedStates); + ExcitSpins.reshape(NumExcitedStates); + for (G4int i = 0; i < NumExcitedStates; i++) { + ExcitEnergies(i) = 0.0; + ExcitSpins(i) = 0; + } + + ExcitEnergies( 9) = 3.56*MeV; + ExcitEnergies(10) = 0.48*MeV; + ExcitEnergies(11) = 0.98*MeV; + ExcitEnergies(12) = 0.43*MeV; + ExcitEnergies(15) = 3.37*MeV; + ExcitEnergies(17) = 0.72*MeV; + ExcitEnergies(18) = 2.13*MeV; + ExcitEnergies(19) = 0.95*MeV; + ExcitEnergies(20) = 2.00*MeV; + ExcitEnergies(21) = 4.44*MeV; + ExcitEnergies(22) = 3.09*MeV; + ExcitEnergies(23) = 6.09*MeV; + ExcitEnergies(25) = 2.31*MeV; + ExcitEnergies(26) = 5.28*MeV; + ExcitEnergies(27) = 0.12*MeV; + ExcitEnergies(28) = 5.22*MeV; + ExcitEnergies(29) = 6.10*MeV; + ExcitEnergies(30) = 0.87*MeV; + ExcitEnergies(31) = 1.98*MeV; + + + ExcitSpins( 9) = 1; + ExcitSpins(10) = 2; + ExcitSpins(11) = 3; + ExcitSpins(12) = 2; + ExcitSpins(15) = 5; + ExcitSpins(17) = 3; + ExcitSpins(18) = 2; + ExcitSpins(19) = 5; + ExcitSpins(20) = 2; + ExcitSpins(21) = 5; + ExcitSpins(22) = 2; + ExcitSpins(23) = 3; + ExcitSpins(25) = 1; + ExcitSpins(26) = 8; + ExcitSpins(27) = 1; + ExcitSpins(28) = 8; + ExcitSpins(29) = 8; + ExcitSpins(30) = 2; + ExcitSpins(31) = 5; + + SetExcitationEnergiesPtr(&ExcitEnergies); + SetExcitationSpinsPtr(&ExcitSpins); +} + + +G4NeutronEvaporationProbability::G4NeutronEvaporationProbability(const G4NeutronEvaporationProbability &right) +{ + G4Exception("G4NeutronEvaporationProbability::copy_constructor meant to not be accessable"); +} + + + + +const G4NeutronEvaporationProbability & G4NeutronEvaporationProbability:: +operator=(const G4NeutronEvaporationProbability &right) +{ + G4Exception("G4NeutronEvaporationProbability::operator= meant to not be accessable"); + return *this; +} + + +G4bool G4NeutronEvaporationProbability::operator==(const G4NeutronEvaporationProbability &right) const +{ + return false; +} + +G4bool G4NeutronEvaporationProbability::operator!=(const G4NeutronEvaporationProbability &right) const +{ + return true; +} diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4NuclearLevelManager.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4NuclearLevelManager.cc index 75f2999d26..cbe3979710 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4NuclearLevelManager.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4NuclearLevelManager.cc @@ -86,8 +86,12 @@ G4bool G4NuclearLevelManager::IsValid(G4int Z, G4int A) const G4std::ostrstream ost(name, 100, G4std::ios::out); ost << dirName << "/" << "z" << Z << ".a" << A; G4String file(name); - - G4std::ifstream inFile(file); + +#ifdef G4USE_STD_NAMESPACE + G4std::ifstream inFile(file, G4std::ios::in); +#else + ifstream inFile(file, ios::in|ios::nocreate); +#endif if (! inFile) valid = false; return valid; @@ -210,9 +214,11 @@ void G4NuclearLevelManager::MakeLevels() G4std::ostrstream ost(name, 100, G4std::ios::out); ost << dirName << "/" << "z" << _nucleusZ << ".a" << _nucleusA; G4String file(name); - +#ifdef G4USE_STD_NAMESPACE G4std::ifstream inFile(file, G4std::ios::in); - +#else + ifstream inFile(file, ios::in|ios::nocreate); +#endif if (! inFile) { // G4cout << " G4NuclearLevelManager: (" << _nucleusZ << "," << _nucleusA diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4ProtonCoulombBarrier.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4ProtonCoulombBarrier.cc new file mode 100644 index 0000000000..cffb40d853 --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4ProtonCoulombBarrier.cc @@ -0,0 +1,56 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By copying, 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.1 2000/06/09 11:43:36 larazb Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// Hadronic Process: Nuclear De-excitations +// by V. Lara (Dec 1999) + + +#include "G4ProtonCoulombBarrier.hh" + +G4ProtonCoulombBarrier::G4ProtonCoulombBarrier(const G4ProtonCoulombBarrier & right) +{ + G4Exception("G4ProtonCoulombBarrier::copy_constructor meant to not be accessable."); +} + + +const G4ProtonCoulombBarrier & G4ProtonCoulombBarrier::operator=(const G4ProtonCoulombBarrier & right) +{ + G4Exception("G4ProtonCoulombBarrier::operator= meant to not be accessable."); + return *this; +} + +G4bool G4ProtonCoulombBarrier::operator==(const G4ProtonCoulombBarrier & right) const +{ + return false; +} + +G4bool G4ProtonCoulombBarrier::operator!=(const G4ProtonCoulombBarrier & right) const +{ + return true; +} + + +G4double G4ProtonCoulombBarrier::BarrierPenetrationFactor(const G4double aZ) const +{ + // Data comes from + // Dostrovsky, Fraenkel and Friedlander + // Physical Review, vol 116, num. 3 1959 + // + // const G4int size = 5; + // const G4double Zlist[size] = {10.0, 20.0, 30.0, 50.0, 70.0}; + // const G4double Kprot[size] = {0.42, 0.58, 0.68, 0.77, 0.80}; + G4double K = 1.0; + if (aZ>=70.0) { + K = 0.80; + } else { + K = (((0.2357e-5*aZ) - 0.42679e-3)*aZ + 0.27035e-1)*aZ + 0.19025; + } + return K; +} diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4ProtonEvaporationChannel.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4ProtonEvaporationChannel.cc new file mode 100644 index 0000000000..a4e3a7d1fd --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4ProtonEvaporationChannel.cc @@ -0,0 +1,38 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By 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: Nuclear De-excitations +// by V. Lara (Nov. 1999) +// + +#include "G4ProtonEvaporationChannel.hh" + + +const G4ProtonEvaporationChannel & G4ProtonEvaporationChannel::operator=(const G4ProtonEvaporationChannel & right) +{ + G4Exception("G4ProtonEvaporationChannel::operator= meant to not be accessable"); + return *this; +} + +G4ProtonEvaporationChannel::G4ProtonEvaporationChannel(const G4ProtonEvaporationChannel & right) +{ + G4Exception("G4ProtonEvaporationChannel::CopyConstructor meant to not be accessable"); +} + +G4bool G4ProtonEvaporationChannel::operator==(const G4ProtonEvaporationChannel & right) const +{ + return (this == (G4ProtonEvaporationChannel *) &right); + // return false; +} + +G4bool G4ProtonEvaporationChannel::operator!=(const G4ProtonEvaporationChannel & right) const +{ + return (this != (G4ProtonEvaporationChannel *) &right); + // return true; +} + + diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4ProtonEvaporationProbability.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4ProtonEvaporationProbability.cc new file mode 100644 index 0000000000..a4e73a0674 --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4ProtonEvaporationProbability.cc @@ -0,0 +1,103 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By 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: Nuclear De-excitations +// by V. Lara (Nov 1999) +// + + +#include "G4ProtonEvaporationProbability.hh" + +G4ProtonEvaporationProbability::G4ProtonEvaporationProbability() : + G4EvaporationProbability(1,1,2) // A,Z,Gamma +{ + const G4int NumExcitedStates = 31+1; + ExcitEnergies.reshape(NumExcitedStates); + ExcitSpins.reshape(NumExcitedStates); + for (G4int i = 0; i < NumExcitedStates; i++) { + ExcitEnergies(i) = 0.0; + ExcitSpins(i) = 0; + } + ExcitEnergies(15) = 5.96*MeV; + ExcitEnergies(17) = 1.74*MeV; + ExcitEnergies(18) = 4.44*MeV; + ExcitEnergies(19) = 1.67*MeV; + ExcitEnergies(20) = 4.32*MeV; + ExcitEnergies(22) = 3.68*MeV; + ExcitEnergies(23) = 6.69*MeV; + ExcitEnergies(25) = 3.95*MeV; + ExcitEnergies(26) = 6.32*MeV; + ExcitEnergies(27) = 0.30*MeV; + ExcitEnergies(28) = 6.18*MeV; + ExcitEnergies(29) = 6.92*MeV; + ExcitEnergies(30) = 3.06*MeV; + ExcitEnergies(31) = 3.57*MeV; + + + ExcitSpins(15) = 8; + ExcitSpins(17) = 1; + ExcitSpins(18) = 6; + ExcitSpins(19) = 5; + ExcitSpins(20) = 6; + ExcitSpins(22) = 4; + ExcitSpins(23) = 8; + ExcitSpins(25) = 3; + ExcitSpins(26) = 4; + ExcitSpins(27) = 7; + ExcitSpins(28) = 4; + ExcitSpins(29) = 5; + ExcitSpins(30) = 2; + ExcitSpins(31) = 10; + + SetExcitationEnergiesPtr(&ExcitEnergies); + SetExcitationSpinsPtr(&ExcitSpins); + +} + +G4ProtonEvaporationProbability::G4ProtonEvaporationProbability(const G4ProtonEvaporationProbability &right) +{ + G4Exception("G4ProtonEvaporationProbability::copy_constructor meant to not be accessable"); +} + +const G4ProtonEvaporationProbability & G4ProtonEvaporationProbability:: +operator=(const G4ProtonEvaporationProbability &right) +{ + G4Exception("G4ProtonEvaporationProbability::operator= meant to not be accessable"); + return *this; +} + + +G4bool G4ProtonEvaporationProbability::operator==(const G4ProtonEvaporationProbability &right) const +{ + return false; +} + +G4bool G4ProtonEvaporationProbability::operator!=(const G4ProtonEvaporationProbability &right) const +{ + return true; +} + +G4double G4ProtonEvaporationProbability::CCoeficient(const G4double aZ) const +{ + // Data comes from + // Dostrovsky, Fraenkel and Friedlander + // Physical Review, vol 116, num. 3 1959 + // + // const G4int size = 5; + // G4double Zlist[5] = { 10.0, 20.0, 30.0, 50.0, 70.0}; + // G4double Cp[5] = { 0.50, 0.28, 0.20, 0.15, 0.10}; + G4double C = 0.0; + + if (aZ >= 70) { + C = 0.10; + } else { + C = ((((0.15417e-06*aZ) - 0.29875e-04)*aZ + 0.21071e-02)*aZ - 0.66612e-01)*aZ + 0.98375; + } + + return C; + +} diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4TritonCoulombBarrier.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4TritonCoulombBarrier.cc new file mode 100644 index 0000000000..c88a2e335c --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4TritonCoulombBarrier.cc @@ -0,0 +1,58 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By copying, 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.1 2000/06/09 11:43:36 larazb Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// Hadronic Process: Nuclear De-excitations +// by V. Lara (Dec 1999) + + +#include "G4TritonCoulombBarrier.hh" + +G4TritonCoulombBarrier::G4TritonCoulombBarrier(const G4TritonCoulombBarrier & right) +{ + G4Exception("G4TritonCoulombBarrier::copy_constructor meant to not be accessable."); +} + + +const G4TritonCoulombBarrier & G4TritonCoulombBarrier::operator=(const G4TritonCoulombBarrier & right) +{ + G4Exception("G4TritonCoulombBarrier::operator= meant to not be accessable."); + return *this; +} + +G4bool G4TritonCoulombBarrier::operator==(const G4TritonCoulombBarrier & right) const +{ + return false; +} + +G4bool G4TritonCoulombBarrier::operator!=(const G4TritonCoulombBarrier & right) const +{ + return true; +} + + +G4double G4TritonCoulombBarrier::BarrierPenetrationFactor(const G4double aZ) const +{ + // Data comes from + // Dostrovsky, Fraenkel and Friedlander + // Physical Review, vol 116, num. 3 1959 + // + // const G4int size = 5; + // const G4double Zlist[size] = {10.0, 20.0, 30.0, 50.0, 70.0}; + // const G4double Kprot[size] = {0.42, 0.58, 0.68, 0.77, 0.80}; + // + // K for Triton is K for protons + 0.12 + G4double K = 1.0; + if (aZ>=70.0) { + K = 0.80; + } else { + K = (((0.2357e-5*aZ) - 0.42679e-3)*aZ + 0.27035e-1)*aZ + 0.19025; + } + return K+0.12; +} diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4TritonEvaporationChannel.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4TritonEvaporationChannel.cc new file mode 100644 index 0000000000..3f756d113a --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4TritonEvaporationChannel.cc @@ -0,0 +1,36 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By 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: Nuclear De-excitations +// by V. Lara (Nov. 1999) +// + +#include "G4TritonEvaporationChannel.hh" + + +const G4TritonEvaporationChannel & G4TritonEvaporationChannel::operator=(const G4TritonEvaporationChannel & right) +{ + G4Exception("G4TritonEvaporationChannel::operator= meant to not be accessable"); + return *this; +} + +G4TritonEvaporationChannel::G4TritonEvaporationChannel(const G4TritonEvaporationChannel & right) +{ + G4Exception("G4TritonEvaporationChannel::CopyConstructor meant to not be accessable"); +} + +G4bool G4TritonEvaporationChannel::operator==(const G4TritonEvaporationChannel & right) const +{ + return (this == (G4TritonEvaporationChannel *) &right); + // return false; +} + +G4bool G4TritonEvaporationChannel::operator!=(const G4TritonEvaporationChannel & right) const +{ + return (this != (G4TritonEvaporationChannel *) &right); + // return true; +} diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4TritonEvaporationProbability.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4TritonEvaporationProbability.cc new file mode 100644 index 0000000000..eef972ecff --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4TritonEvaporationProbability.cc @@ -0,0 +1,96 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By 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: Nuclear De-excitations +// by V. Lara (Nov 1999) +// + + +#include "G4TritonEvaporationProbability.hh" + +G4TritonEvaporationProbability::G4TritonEvaporationProbability() : + G4EvaporationProbability(3,1,6) // A,Z,Gamma +{ + const G4int NumExcitedStates = 31+1; + ExcitEnergies.reshape(NumExcitedStates); + ExcitSpins.reshape(NumExcitedStates); + for (G4int i = 0; i < NumExcitedStates; i++) { + ExcitEnergies(i) = 0.0; + ExcitSpins(i) = 0; + } + + ExcitEnergies(15) = 6.26*MeV; + ExcitEnergies(17) = 3.59*MeV; + ExcitEnergies(18) = 6.76*MeV; + ExcitEnergies(20) = 6.34*MeV; + ExcitEnergies(23) = 7.34*MeV; + ExcitEnergies(25) = 5.11*MeV; + ExcitEnergies(26) = 7.57*MeV; + ExcitEnergies(28) = 7.28*MeV; + ExcitEnergies(31) = 4.46*MeV; + + ExcitSpins(15) = 5; + ExcitSpins(17) = 5; + ExcitSpins(18) = 10; + ExcitSpins(20) = 2; + ExcitSpins(23) = 5; + ExcitSpins(25) = 5; + ExcitSpins(26) = 8; + ExcitSpins(28) = 8; + ExcitSpins(31) = 3; + + SetExcitationEnergiesPtr(&ExcitEnergies); + SetExcitationSpinsPtr(&ExcitSpins); +} + +G4TritonEvaporationProbability::G4TritonEvaporationProbability(const G4TritonEvaporationProbability &right) +{ + G4Exception("G4TritonEvaporationProbability::copy_constructor meant to not be accessable"); +} + + + + +const G4TritonEvaporationProbability & G4TritonEvaporationProbability:: +operator=(const G4TritonEvaporationProbability &right) +{ + G4Exception("G4TritonEvaporationProbability::operator= meant to not be accessable"); + return *this; +} + + +G4bool G4TritonEvaporationProbability::operator==(const G4TritonEvaporationProbability &right) const +{ + return false; +} + +G4bool G4TritonEvaporationProbability::operator!=(const G4TritonEvaporationProbability &right) const +{ + return true; +} + +G4double G4TritonEvaporationProbability::CCoeficient(const G4double aZ) const +{ + // Data comes from + // Dostrovsky, Fraenkel and Friedlander + // Physical Review, vol 116, num. 3 1959 + // + // const G4int size = 5; + // G4double Zlist[5] = { 10.0, 20.0, 30.0, 50.0, 70.0}; + // G4double Cp[5] = { 0.50, 0.28, 0.20, 0.15, 0.10}; + // C for triton is equal to C for protons divided by 3 + G4double C = 0.0; + + if (aZ >= 70) { + C = 0.10; + } else { + C = ((((0.15417e-06*aZ) - 0.29875e-04)*aZ + 0.21071e-02)*aZ - 0.66612e-01)*aZ + 0.98375; + } + + return C/3.0; + +} diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4VCoulombBarrier.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4VCoulombBarrier.cc new file mode 100644 index 0000000000..1614501855 --- /dev/null +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4VCoulombBarrier.cc @@ -0,0 +1,56 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By copying, 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.1 2000/06/09 11:43:37 larazb Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// Hadronic Process: Nuclear De-excitations +// by V. Lara (Dec 1999) + + +#include "G4VCoulombBarrier.hh" +#include "g4std/strstream" + +G4VCoulombBarrier::G4VCoulombBarrier(const G4int anA, const G4int aZ) +{ + if (anA >= aZ && anA > 0) { + theA = anA; + theZ = aZ; + } else { + char errMessage[1024]; + G4std::ostrstream errOs(errMessage,1024); + errOs << "G4VCoulombBarrier::G4VCoulombBarrier: "; + errOs << "Wrong values for "; + errOs << "A = " << anA << " "; + errOs << "and Z = " << aZ << G4endl; + G4Exception(errMessage); + } +} + + +G4VCoulombBarrier::G4VCoulombBarrier(const G4VCoulombBarrier & right) +{ + G4Exception("G4VCoulombBarrier::copy_constructor meant to not be accessable."); +} + + +const G4VCoulombBarrier & G4VCoulombBarrier::operator=(const G4VCoulombBarrier & right) +{ + G4Exception("G4VCoulombBarrier::operator= meant to not be accessable."); + return *this; +} + +G4bool G4VCoulombBarrier::operator==(const G4VCoulombBarrier & right) const +{ + return false; +} + +G4bool G4VCoulombBarrier::operator!=(const G4VCoulombBarrier & right) const +{ + return true; +} + 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 75c59f8308..17b29b1865 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4VEmissionProbability.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4VEmissionProbability.cc @@ -1,5 +1,5 @@ // This code implementation is the intellectual property of -// the GEANT4 collaboration. +// the RD44 GEANT4 collaboration. // // By copying, distributing or modifying the Program (or any work // based on the Program) you indicate your acceptance of this statement, 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 4286e20b70..1a0e70a838 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4VFissionBarrier.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4VFissionBarrier.cc @@ -1,12 +1,12 @@ // This code implementation is the intellectual property of -// the GEANT4 collaboration. +// the RD44 GEANT4 collaboration. // // By copying, 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.1.10.1 1999/12/07 20:51:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VFissionBarrier.cc,v 1.3 2000/06/09 11:43:37 larazb Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) 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 655bcffe8e..7eb0fe6efe 100644 --- a/source/processes/hadronic/models/generator/diffractive_string/include/G4DiffractiveHHScatterer.hh +++ b/source/processes/hadronic/models/generator/diffractive_string/include/G4DiffractiveHHScatterer.hh @@ -5,7 +5,7 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DiffractiveHHScatterer.hh,v 1.1.10.1 1999/12/07 20:51:42 gunter Exp $ +// $Id: G4DiffractiveHHScatterer.hh,v 1.2 1999/12/15 14:52:22 gunter 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 1a9f2946b2..27e9a4a0c7 100644 --- a/source/processes/hadronic/models/generator/diffractive_string/include/G4DiffractiveSplitableHadron.hh +++ b/source/processes/hadronic/models/generator/diffractive_string/include/G4DiffractiveSplitableHadron.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DiffractiveSplitableHadron.hh,v 1.2.8.1 1999/12/07 20:51:42 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DiffractiveSplitableHadron.hh,v 1.3 1999/12/15 14:52:22 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 189f2e9ddc..9f0352689c 100644 --- a/source/processes/hadronic/models/generator/diffractive_string/include/G4FTFModel.hh +++ b/source/processes/hadronic/models/generator/diffractive_string/include/G4FTFModel.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4FTFModel.hh,v 1.2.4.1 1999/12/07 20:51:43 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4FTFModel.hh,v 1.3 1999/12/15 14:52:22 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4FTFModel_h #define G4FTFModel_h 1 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 7dc7055124..bb009633a2 100644 --- a/source/processes/hadronic/models/generator/diffractive_string/include/G4FTFParticipants.hh +++ b/source/processes/hadronic/models/generator/diffractive_string/include/G4FTFParticipants.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4FTFParticipants.hh,v 1.1.8.1.2.1 1999/12/07 20:51:43 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4FTFParticipants.hh,v 1.3 1999/12/15 14:52:23 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4FTFParticipants_h 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 1d9609130e..354b739770 100644 --- a/source/processes/hadronic/models/generator/diffractive_string/src/G4DiffractiveSplitableHadron.cc +++ b/source/processes/hadronic/models/generator/diffractive_string/src/G4DiffractiveSplitableHadron.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DiffractiveSplitableHadron.cc,v 1.1.10.1.2.1 1999/12/10 15:42:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DiffractiveSplitableHadron.cc,v 1.2 1999/12/15 14:52:23 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------ 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 9f155b996a..1e86557204 100644 --- a/source/processes/hadronic/models/generator/diffractive_string/src/G4FTFModel.cc +++ b/source/processes/hadronic/models/generator/diffractive_string/src/G4FTFModel.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4FTFModel.cc,v 1.2.2.1.2.1.2.1 1999/12/08 17:34:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4FTFModel.cc,v 1.4 1999/12/15 14:52:23 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------ 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 d0a7a927e1..866464d45c 100644 --- a/source/processes/hadronic/models/generator/diffractive_string/src/G4FTFParticipants.cc +++ b/source/processes/hadronic/models/generator/diffractive_string/src/G4FTFParticipants.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4FTFParticipants.cc,v 1.1.10.1.2.1 1999/12/08 17:34:42 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4FTFParticipants.cc,v 1.2 1999/12/15 14:52:24 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file 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 8b6710e1e3..38d9d6f07a 100644 --- a/source/processes/hadronic/models/generator/high_energy/include/G4TheoFSGenerator.hh +++ b/source/processes/hadronic/models/generator/high_energy/include/G4TheoFSGenerator.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4TheoFSGenerator.hh,v 1.2 1999/04/12 15:45:28 hpw Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4TheoFSGenerator_h #define G4TheoFSGenerator_h 1 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 4a4d5e53b2..bc9ae29691 100644 --- a/source/processes/hadronic/models/generator/high_energy/src/G4TheoFSGenerator.cc +++ b/source/processes/hadronic/models/generator/high_energy/src/G4TheoFSGenerator.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4TheoFSGenerator.cc,v 1.3 1999/04/18 11:30:49 hpw Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4TheoFSGenerator #include "G4DynamicParticle.hh" diff --git a/source/processes/hadronic/models/generator/management/include/G4V3DNucleus.hh b/source/processes/hadronic/models/generator/management/include/G4V3DNucleus.hh index 5113a71a18..632a2945be 100644 --- a/source/processes/hadronic/models/generator/management/include/G4V3DNucleus.hh +++ b/source/processes/hadronic/models/generator/management/include/G4V3DNucleus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4V3DNucleus.hh,v 1.2.8.1 1999/12/07 20:51:43 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4V3DNucleus.hh,v 1.3 1999/12/15 14:52:37 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4V3DNucleus_h #define G4V3DNucleus_h 1 diff --git a/source/processes/hadronic/models/generator/management/include/G4VHighEnergyGenerator.hh b/source/processes/hadronic/models/generator/management/include/G4VHighEnergyGenerator.hh index f25ea7b349..0598dc7ae6 100644 --- a/source/processes/hadronic/models/generator/management/include/G4VHighEnergyGenerator.hh +++ b/source/processes/hadronic/models/generator/management/include/G4VHighEnergyGenerator.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VHighEnergyGenerator.hh,v 1.2.8.1 1999/12/07 20:51:44 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VHighEnergyGenerator.hh,v 1.3 1999/12/15 14:52:37 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4VHighEnergyGenerator_h #define G4VHighEnergyGenerator_h 1 diff --git a/source/processes/hadronic/models/generator/management/include/G4VIntraNuclearTransportModel.hh b/source/processes/hadronic/models/generator/management/include/G4VIntraNuclearTransportModel.hh index 917d4c1072..54473b80bf 100644 --- a/source/processes/hadronic/models/generator/management/include/G4VIntraNuclearTransportModel.hh +++ b/source/processes/hadronic/models/generator/management/include/G4VIntraNuclearTransportModel.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VIntraNuclearTransportModel.hh,v 1.3.8.1 1999/12/07 20:51:44 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VIntraNuclearTransportModel.hh,v 1.4 1999/12/15 14:52:37 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 df4071c37b..66777abe34 100644 --- a/source/processes/hadronic/models/generator/management/include/G4VKineticNucleon.hh +++ b/source/processes/hadronic/models/generator/management/include/G4VKineticNucleon.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VKineticNucleon.hh,v 1.1.8.1 1999/12/07 20:51:44 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VKineticNucleon.hh,v 1.2 1999/12/15 14:52:37 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 d64676b006..a4019563d1 100644 --- a/source/processes/hadronic/models/generator/management/include/G4VNuclearDensity.hh +++ b/source/processes/hadronic/models/generator/management/include/G4VNuclearDensity.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VNuclearDensity.hh,v 1.1.10.1 1999/12/07 20:51:44 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VNuclearDensity.hh,v 1.3 2000/05/23 13:41:56 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4VNuclearDensity_h #define G4VNuclearDensity_h 1 @@ -28,11 +28,12 @@ class G4VNuclearDensity }; virtual G4double GetRelativeDensity(G4ThreeVector aPosition) = 0; - - virtual G4double GetRadius(const G4double maxRelativeDenisty) = 0 ; + virtual G4double GetRadius(const G4double maxRelativeDenisty) = 0; + virtual G4double GetDeriv(const G4ThreeVector & point) = 0; protected: inline void Setrho0(G4double arho0) { rho0=arho0; }; + inline G4double Getrho0() { return rho0; }; private: diff --git a/source/processes/hadronic/models/generator/management/include/G4VPreCompoundModel.hh b/source/processes/hadronic/models/generator/management/include/G4VPreCompoundModel.hh index 29ab98dc08..b5eb56e541 100644 --- a/source/processes/hadronic/models/generator/management/include/G4VPreCompoundModel.hh +++ b/source/processes/hadronic/models/generator/management/include/G4VPreCompoundModel.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VPreCompoundModel.hh,v 1.2.8.1 1999/12/07 20:51:44 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VPreCompoundModel.hh,v 1.3 1999/12/15 14:52:37 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 c3c061a666..0cde10061b 100644 --- a/source/processes/hadronic/models/generator/management/src/G4V3DNucleus.cc +++ b/source/processes/hadronic/models/generator/management/src/G4V3DNucleus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4V3DNucleus.cc,v 1.1.10.1 1999/12/07 20:51:45 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4V3DNucleus.cc,v 1.2 1999/12/15 14:52:38 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4V3DNucleus.hh" diff --git a/source/processes/hadronic/models/generator/management/src/G4VHighEnergyGenerator.cc b/source/processes/hadronic/models/generator/management/src/G4VHighEnergyGenerator.cc index 33a05779e7..34f836c8d9 100644 --- a/source/processes/hadronic/models/generator/management/src/G4VHighEnergyGenerator.cc +++ b/source/processes/hadronic/models/generator/management/src/G4VHighEnergyGenerator.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VHighEnergyGenerator.cc,v 1.1.10.1 1999/12/07 20:51:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VHighEnergyGenerator.cc,v 1.2 1999/12/15 14:52:38 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VHighEnergyGenerator #include "G4VHighEnergyGenerator.hh" diff --git a/source/processes/hadronic/models/generator/management/src/G4VIntraNuclearTransportModel.cc b/source/processes/hadronic/models/generator/management/src/G4VIntraNuclearTransportModel.cc index 7faa22c4d6..5425916ff1 100644 --- a/source/processes/hadronic/models/generator/management/src/G4VIntraNuclearTransportModel.cc +++ b/source/processes/hadronic/models/generator/management/src/G4VIntraNuclearTransportModel.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VIntraNuclearTransportModel.cc,v 1.2.8.1 1999/12/07 20:51:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VIntraNuclearTransportModel.cc,v 1.3 1999/12/15 14:52:38 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 5d2ea8ef2d..743f836354 100644 --- a/source/processes/hadronic/models/generator/management/src/G4VKineticNucleon.cc +++ b/source/processes/hadronic/models/generator/management/src/G4VKineticNucleon.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VKineticNucleon.cc,v 1.1.8.1 1999/12/07 20:51:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VKineticNucleon.cc,v 1.2 1999/12/15 14:52:38 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 ff619fffc2..7cc8c45a3d 100644 --- a/source/processes/hadronic/models/generator/management/src/G4VNuclearDensity.cc +++ b/source/processes/hadronic/models/generator/management/src/G4VNuclearDensity.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VNuclearDensity.cc,v 1.1.10.1 1999/12/07 20:51:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VNuclearDensity.cc,v 1.2 1999/12/15 14:52:38 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 53946c650f..598ad1a4a3 100644 --- a/source/processes/hadronic/models/generator/management/src/G4VPreCompoundModel.cc +++ b/source/processes/hadronic/models/generator/management/src/G4VPreCompoundModel.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VPreCompoundModel.cc,v 1.1.10.1 1999/12/07 20:51:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VPreCompoundModel.cc,v 1.2 1999/12/15 14:52:38 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4VPreCompoundModel.hh" diff --git a/source/processes/hadronic/models/generator/pre_equilibrium/include/G4PreCompoundModel.hh b/source/processes/hadronic/models/generator/pre_equilibrium/include/G4PreCompoundModel.hh index 40f18ba0d0..9ca1873a04 100644 --- a/source/processes/hadronic/models/generator/pre_equilibrium/include/G4PreCompoundModel.hh +++ b/source/processes/hadronic/models/generator/pre_equilibrium/include/G4PreCompoundModel.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PreCompoundModel.hh,v 1.4.6.1.2.1 1999/12/07 20:51:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PreCompoundModel.hh,v 1.6 1999/12/15 14:52:38 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // 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 d2e104cd62..7ea5a75d6e 100644 --- a/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundModel.cc +++ b/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundModel.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PreCompoundModel.cc,v 1.7.4.1.2.1 1999/12/08 17:34:42 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PreCompoundModel.cc,v 1.8 1999/12/15 14:52:39 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // by V. Lara diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/GNUmakefile b/source/processes/hadronic/models/generator/quark_gluon_string/GNUmakefile index 98487b3096..f31af43607 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/GNUmakefile +++ b/source/processes/hadronic/models/generator/quark_gluon_string/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.1 1999/01/08 16:33:14 gunter Exp $ +# $Id: GNUmakefile,v 1.2 1999/12/05 10:47:50 hpw Exp $ # ----------------------------------------------------------- # GNUmakefile for hadronic library. Gabriele Cosmo, 18/9/96. # ----------------------------------------------------------- @@ -28,6 +28,7 @@ CPPFLAGS += -I$(G4BASE)/global/management/include \ -I$(G4BASE)/processes/hadronic/models/generator/management/include \ -I$(G4BASE)/processes/hadronic/models/generator/string_common/include \ -I$(G4BASE)/processes/hadronic/models/generator/util/include \ + -I$(G4BASE)/processes/hadronic/models/generator/quark_gluon_string/include \ -I$(G4BASE)/particles/management/include \ -I$(G4BASE)/particles/leptons/include \ -I$(G4BASE)/particles/bosons/include \ 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 new file mode 100644 index 0000000000..b26402a432 --- /dev/null +++ b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4ASCCrossSection.hh @@ -0,0 +1,39 @@ +#ifndef G4ASCCrossSection_h +#define G4ASCCrossSection_h + +#include "globals.hh" +#include "G4VAnnihilationCrossSection.hh" + +class G4ASCCrossSection : public G4VAnnihilationCrossSection +{ + public: + G4ASCCrossSection(G4int, G4int, G4double, G4double, G4double, G4double); + G4bool InCharge(G4int aCode, G4int bCode); + G4double GetXsec(G4double s); + private: + + G4int theCode1; + G4int theCode2; + G4double theX; + G4double theY; + G4double theEta; + G4double theEps; +}; + + +inline G4bool G4ASCCrossSection:: +InCharge(G4int aCode, G4int bCode) +{ + G4bool result; + result = (aCode==theCode1&&bCode==theCode2)||(aCode==theCode2&&bCode==theCode1); + return result; +} + +inline G4double G4ASCCrossSection:: +GetXsec(G4double s) +{ + G4double result = theX*pow(s, theEps) + theY*pow(s, -theEta); + return result; +} + +#endif 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 new file mode 100644 index 0000000000..a8ea630309 --- /dev/null +++ b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4AnnihilationCrossSection.hh @@ -0,0 +1,34 @@ +#ifndef G4AnnihilationCrossSection_h +#define G4AnnihilationCrossSection_h + +#include "globals.hh" +#include "g4std/vector" +#include "G4VAnnihilationCrossSection.hh" + +class G4AnnihilationCrossSection +{ + public: + G4AnnihilationCrossSection(); + + G4double GetCrossSection(int aCode, int bCode, G4double s); + private: + + G4std::vector theDataSets; +}; + +inline G4double G4AnnihilationCrossSection::GetCrossSection(G4int aCode, G4int bCode, G4double s) +{ + G4double result = 0.; + typedef G4std::vector::iterator iter; + iter i; + for(i=theDataSets.begin(); i!=theDataSets.end(); i++) + { + if((*i)->InCharge(aCode, bCode)) + { + result = (*i)->GetXsec(s); + break; + } + } + return result; +} +#endif 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 540d527463..923a6adf5f 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 @@ -13,8 +13,9 @@ class G4BaryonSplitter { public: G4BaryonSplitter(); - G4bool SplitBarion(G4int Encoding, G4int* q_or_qqbar, G4int* qbar_or_qq); - G4bool FindDiquark(G4int Encoding, G4int Quark, G4int* Diquark); + G4bool SplitBarion(G4int PDGCode, G4int* q_or_qqbar, G4int* qbar_or_qq); + G4bool FindDiquark(G4int PDGCode, G4int Quark, G4int* Diquark); + const G4SPBaryon & GetSPBaryon(G4int PDGCode); private: 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 new file mode 100644 index 0000000000..d99a5291d4 --- /dev/null +++ b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4GammaAnnCrossSection.hh @@ -0,0 +1,21 @@ +#ifndef G4GammaAnnCrossSection_h +#define G4GammaAnnCrossSection_h + +#include "globals.hh" +#include "g4std/vector" +#include "G4VAnnihilationCrossSection.hh" +#include "G4ASCCrossSection.hh" + +class G4GammaAnnCrossSection : public G4VAnnihilationCrossSection +{ + public: + G4GammaAnnCrossSection(); + G4bool InCharge(G4int aCode, G4int bCode); + G4double GetXsec(G4double s); + + private: + + G4std::vector theGammaNucXSections; +}; + +#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 07b700a07f..ffe3f7246e 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 @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4InelasticSplitableHadron.hh,v 1.1.4.1 1999/12/07 20:51:50 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4InelasticSplitableHadron.hh,v 1.2 1999/12/15 14:52:42 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4InelasticSplitableHadron_h 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 14df0e571a..875289160b 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 @@ -5,8 +5,7 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PartonStringAnnihilator.hh,v 1.1.4.1 1999/12/07 20:51:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $Maxim Komogorov +// $Id: G4PartonStringAnnihilator.hh,v 1.3 1999/12/15 14:52:42 gunter Exp $ // ----------------------------------------------------------------------------- // GEANT 4 class implementation file // @@ -17,54 +16,38 @@ #ifndef G4PartonStringAnnihilator_h #define G4PartonStringAnnihilator_h 1 -#include "G4KineticTrackVector.hh" +#include "G4KineticTrack.hh" #include "G4ExcitedString.hh" #include "G4MesonSplitter.hh" +#include "G4BaryonSplitter.hh" -// ************************************************************************************************** - -// Barion consists from Quark and Diquark with given spin-isospin state. -// Different barion states are defined by Probability - -struct G4ACSParameters - { - G4int ProjectileEncoding; - G4int TargetEncoding; - G4double X; - G4double Y; - G4double Eta; - G4double Epsilon; - }; - -// ************************************************************************************************** class G4PartonStringAnnihilator { public: G4PartonStringAnnihilator(); - ~G4PartonStringAnnihilator(); - static G4ACSParameters ACSParametersTable[]; public: - G4bool IsAnnihilation(G4KineticTrackVector& aTarget, G4KineticTrackVector& aProjectile, G4double* CrossSection); - G4ExcitedString* Annihilator(G4KineticTrack& Target, G4KineticTrack& Projectile); + G4double GetCrossSection(G4KineticTrack& aTarget, G4KineticTrack& aProjectile); + G4ExcitedString* GetString(G4KineticTrack& Target, G4KineticTrack& Projectile); -private: -// void GetValenceQuarkFlavors(G4int PDGcode, G4int& aEnd, G4int& bEnd); - G4bool AnnihilatorEncoding(G4int Projectile, G4int Target, G4int* Left, G4int* Right); - G4bool FindDiquark(G4int Encoding, G4int Quark, G4int* Diquark); - G4bool FindQuark(G4int Encoding, G4int Diquark, G4int* Quark); -public: G4bool SplitUpBarion(G4int Encoding, G4int* q_or_qqbar, G4int* qbar_or_qq); //! G4bool isMeson(G4int Encoding); G4bool isBarion(G4int Encoding); G4bool isAntiParticle(G4int Encoding); + +private: + G4bool GetStringEnds(G4int Projectile, G4int Target, G4int* Left, G4int* Right); + G4bool FindDiquark(G4int Encoding, G4int Quark, G4int* Diquark); + G4bool FindQuark(G4int Encoding, G4int Diquark, G4int* Quark); + private: G4double widthOfPtSquare; G4MesonSplitter theMesonSplitter; + G4BaryonSplitter theBaryonSplitter; }; // ************************************************************************************************* 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 3dc970d768..d0b521ba20 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 @@ -2,6 +2,7 @@ #define G4SPBaryon_h #include "globals.hh" + #include "G4Proton.hh" #include "G4Neutron.hh" #include "G4SigmaPlus.hh" @@ -11,8 +12,20 @@ #include "G4XiZero.hh" #include "G4Lambda.hh" #include "G4OmegaMinus.hh" + +#include "G4AntiProton.hh" +#include "G4AntiNeutron.hh" +#include "G4AntiSigmaPlus.hh" +#include "G4AntiSigmaZero.hh" +#include "G4AntiSigmaMinus.hh" +#include "G4AntiXiMinus.hh" +#include "G4AntiXiZero.hh" +#include "G4AntiLambda.hh" +#include "G4AntiOmegaMinus.hh" + #include "G4ParticleDefinition.hh" -#include "g4rw/tpordvec.h" +#include "G4SPPartonInfo.hh" +#include "g4std/vector" #include "globals.hh" class G4SPBaryon @@ -20,44 +33,40 @@ class G4SPBaryon public: G4SPBaryon(G4Proton * aProton); G4SPBaryon(G4Neutron * aNeutron); + G4SPBaryon(G4Lambda * aLambda); G4SPBaryon(G4SigmaPlus * aSigmaPlus); G4SPBaryon(G4SigmaZero * aSigmaZero); G4SPBaryon(G4SigmaMinus * aSigmaMinus); G4SPBaryon(G4XiMinus * aXiMinus); G4SPBaryon(G4XiZero * aXiZero); - G4SPBaryon(G4Lambda * aLambda); G4SPBaryon(G4OmegaMinus * anOmegaMinus); + + G4SPBaryon(G4AntiProton * aAntiProton); + G4SPBaryon(G4AntiNeutron * aAntiNeutron); + G4SPBaryon(G4AntiLambda * aAntiLambda); + G4SPBaryon(G4AntiSigmaPlus * aAntiSigmaPlus); + G4SPBaryon(G4AntiSigmaZero * aAntiSigmaZero); + G4SPBaryon(G4AntiSigmaMinus * aAntiSigmaMinus); + G4SPBaryon(G4AntiXiMinus * aAntiXiMinus); + G4SPBaryon(G4AntiXiZero * aAntiXiZero); + G4SPBaryon(G4AntiOmegaMinus * anAntiOmegaMinus); + G4SPBaryon(G4ParticleDefinition * aDefinition); - G4bool operator == ( const G4SPBaryon & aBaryon) + G4bool operator == ( const G4SPBaryon & aBaryon) const {return this == &aBaryon; } G4ParticleDefinition * GetDefinition() {return theDefinition;} void SampleQuarkAndDiquark(G4int & quark, G4int & diQuark) const; void FindDiquark(G4int quark, G4int & diQuark) const; - - private: - - class G4SPPartonInfo - { - public: - G4SPPartonInfo(G4int diq, G4int q, G4double prob) - { diQuarkPDGCode = diq; quarkPDGCode = q; probability = prob; } - G4int GetQuark() const {return quarkPDGCode;} - G4int GetDiQuark() const {return diQuarkPDGCode;} - G4double GetProbability() const {return probability;} - G4bool operator == (const G4SPPartonInfo & aInfo) const - {return this == &aInfo;} - private: - G4int quarkPDGCode; - G4int diQuarkPDGCode; - G4double probability; - }; - + G4int FindQuark(G4int diQuark) const; + G4double GetProbability(G4int diQuark) const; + G4int MatchDiQuarkAndGetQuark(const G4SPBaryon & aBaryon, G4int & aDiQuark) const; + private: G4ParticleDefinition * theDefinition; - G4RWTPtrOrderedVector thePartonInfo; + G4std::vector thePartonInfo; }; #endif 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 new file mode 100644 index 0000000000..00e739563d --- /dev/null +++ b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4SPPartonInfo.hh @@ -0,0 +1,20 @@ +#ifndef G4SPPartonInfo_h +#define G4SPPartonInfo_h + +class G4SPPartonInfo +{ + public: + G4SPPartonInfo(G4int diq, G4int q, G4double prob) + { diQuarkPDGCode = diq; quarkPDGCode = q; probability = prob; } + G4int GetQuark() const {return quarkPDGCode;} + G4int GetDiQuark() const {return diQuarkPDGCode;} + G4double GetProbability() const {return probability;} + G4bool operator == (const G4SPPartonInfo & aInfo) const + {return this == &aInfo;} + private: + G4int quarkPDGCode; + G4int diQuarkPDGCode; + G4double probability; +}; + +#endif 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 new file mode 100644 index 0000000000..07cec17913 --- /dev/null +++ b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4VAnnihilationCrossSection.hh @@ -0,0 +1,13 @@ +#ifndef G4VAnnihilationCrossSection_h +#define G4VAnnihilationCrossSection_h + +#include "globals.hh" + +class G4VAnnihilationCrossSection +{ + public: + virtual G4bool InCharge(G4int aCode, G4int bCode) = 0; + virtual G4double GetXsec(G4double s) = 0; +}; + +#endif 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 new file mode 100644 index 0000000000..ededfc5479 --- /dev/null +++ b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4ASCCrossSection.cc @@ -0,0 +1,13 @@ +#include "G4ASCCrossSection.hh" + +G4ASCCrossSection:: +G4ASCCrossSection(G4int aCode1, G4int aCode2, G4double aX, G4double aY, + G4double aEta, G4double aEps) +{ + theCode1 = aCode1; + theCode2 = aCode2; + theX = aX; + theY = aY; + theEta = aEta; + theEps = aEps; +} 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 new file mode 100644 index 0000000000..7e8f866d35 --- /dev/null +++ b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4AnnihilationCrossSection.cc @@ -0,0 +1,38 @@ +#include "G4AnnihilationCrossSection.hh" +#include "G4ASCCrossSection.hh" +#include "G4GammaAnnCrossSection.hh" + +G4AnnihilationCrossSection:: +G4AnnihilationCrossSection() +{ +// pi+ p + theDataSets.push_back(new G4ASCCrossSection(211, 2212, 13.7, 27.8, 0.45, 0.079)); +// pi+ n + theDataSets.push_back(new G4ASCCrossSection(211, 2112, 13.7, 27.8, 0.45, 0.079)); +// pi- p + theDataSets.push_back(new G4ASCCrossSection(-211, 2212, 13.7, 35.9, 0.45, 0.079)); +// pi- n + theDataSets.push_back(new G4ASCCrossSection(-211, 2112, 13.7, 35.9, 0.45, 0.079)); +// pi0 p + theDataSets.push_back(new G4ASCCrossSection(111, 2212, 13.7, 35.9, 0.45, 0.079)); +// pi0 n + theDataSets.push_back(new G4ASCCrossSection(111, 2112, 13.7, 35.9, 0.45, 0.079)); +// K- p + theDataSets.push_back(new G4ASCCrossSection(-321, 2212, 12.2, 26.4, 0.50, 0.079)); +// K- n + theDataSets.push_back(new G4ASCCrossSection(-321, 2112, 12.2, 26.4, 0.50, 0.079)); +// K0 p + theDataSets.push_back(new G4ASCCrossSection(-311, 2212, 12.2, 26.4, 0.50, 0.079)); +// K0 n + theDataSets.push_back(new G4ASCCrossSection(-311, 2112, 12.2, 26.4, 0.50, 0.079)); +// p- p + theDataSets.push_back(new G4ASCCrossSection(-2212, 2212, 22.0, 98.2, 0.46, 0.079)); +// p- n + theDataSets.push_back(new G4ASCCrossSection(-2212, 2112, 22.3, 92.7, 0.46, 0.079)); +// n- n + theDataSets.push_back(new G4ASCCrossSection(-2112, 2112, 22.0, 98.2, 0.46, 0.079)); +// n- p + theDataSets.push_back(new G4ASCCrossSection(-2112, 2212, 22.3, 92.7, 0.46, 0.079)); +// gamma+n and gamma+p + theDataSets.push_back(new G4GammaAnnCrossSection); +} 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 03d399181b..01b67c43f3 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 @@ -1,5 +1,7 @@ // Split barion (antibarion) into quark and diquark (antidiquark and antiqaurk ) // based on prototype, needs clean up of interfaces HPW Feb 1999 +// Numbers verified and errors corrected, HPW Dec 1999 + #include "G4BaryonSplitter.hh" #include "G4ParticleTable.hh" @@ -8,28 +10,46 @@ G4BaryonSplitter() { theBaryons.insert(new G4SPBaryon(G4Proton::Proton())); theBaryons.insert(new G4SPBaryon(G4Neutron::Neutron())); - theBaryons.insert(new G4SPBaryon(G4SigmaPlus::SigmaPlus())); - theBaryons.insert(new G4SPBaryon(G4SigmaZero::SigmaZero())); - theBaryons.insert(new G4SPBaryon(G4SigmaMinus::SigmaMinus())); - theBaryons.insert(new G4SPBaryon(G4XiMinus::XiMinus())); - theBaryons.insert(new G4SPBaryon(G4XiZero::XiZero())); - theBaryons.insert(new G4SPBaryon(G4Lambda::Lambda())); - theBaryons.insert(new G4SPBaryon(G4OmegaMinus::OmegaMinus())); + theBaryons.insert(new G4SPBaryon(G4AntiProton::AntiProton())); + theBaryons.insert(new G4SPBaryon(G4AntiNeutron::AntiNeutron())); theBaryons.insert(new G4SPBaryon(G4ParticleTable::GetParticleTable()->FindParticle(2224))); // D++ theBaryons.insert(new G4SPBaryon(G4ParticleTable::GetParticleTable()->FindParticle(2214))); // D+ theBaryons.insert(new G4SPBaryon(G4ParticleTable::GetParticleTable()->FindParticle(2114))); // D0 theBaryons.insert(new G4SPBaryon(G4ParticleTable::GetParticleTable()->FindParticle(1114))); // D- + theBaryons.insert(new G4SPBaryon(G4ParticleTable::GetParticleTable()->FindParticle(-2224))); // anti D++ + theBaryons.insert(new G4SPBaryon(G4ParticleTable::GetParticleTable()->FindParticle(-2214))); // anti D+ + theBaryons.insert(new G4SPBaryon(G4ParticleTable::GetParticleTable()->FindParticle(-2114))); // anti D0 + theBaryons.insert(new G4SPBaryon(G4ParticleTable::GetParticleTable()->FindParticle(-1114))); // anti D- + theBaryons.insert(new G4SPBaryon(G4Lambda::Lambda())); + theBaryons.insert(new G4SPBaryon(G4AntiLambda::AntiLambda())); + theBaryons.insert(new G4SPBaryon(G4SigmaPlus::SigmaPlus())); + theBaryons.insert(new G4SPBaryon(G4SigmaZero::SigmaZero())); + theBaryons.insert(new G4SPBaryon(G4SigmaMinus::SigmaMinus())); + theBaryons.insert(new G4SPBaryon(G4AntiSigmaPlus::AntiSigmaPlus())); + theBaryons.insert(new G4SPBaryon(G4AntiSigmaZero::AntiSigmaZero())); + theBaryons.insert(new G4SPBaryon(G4AntiSigmaMinus::AntiSigmaMinus())); theBaryons.insert(new G4SPBaryon(G4ParticleTable::GetParticleTable()->FindParticle(3224))); // S+* theBaryons.insert(new G4SPBaryon(G4ParticleTable::GetParticleTable()->FindParticle(3214))); // S0* - theBaryons.insert(new G4SPBaryon(G4ParticleTable::GetParticleTable()->FindParticle(3224))); // S-* + theBaryons.insert(new G4SPBaryon(G4ParticleTable::GetParticleTable()->FindParticle(3114))); // S-* + theBaryons.insert(new G4SPBaryon(G4ParticleTable::GetParticleTable()->FindParticle(-3224))); // anti S+* + theBaryons.insert(new G4SPBaryon(G4ParticleTable::GetParticleTable()->FindParticle(-3214))); // anti S0* + theBaryons.insert(new G4SPBaryon(G4ParticleTable::GetParticleTable()->FindParticle(-3114))); // anti S-* + theBaryons.insert(new G4SPBaryon(G4XiMinus::XiMinus())); + theBaryons.insert(new G4SPBaryon(G4XiZero::XiZero())); + theBaryons.insert(new G4SPBaryon(G4AntiXiMinus::AntiXiMinus())); + theBaryons.insert(new G4SPBaryon(G4AntiXiZero::AntiXiZero())); + theBaryons.insert(new G4SPBaryon(G4OmegaMinus::OmegaMinus())); + theBaryons.insert(new G4SPBaryon(G4AntiOmegaMinus::AntiOmegaMinus())); theBaryons.insert(new G4SPBaryon(G4ParticleTable::GetParticleTable()->FindParticle(3324))); // X0* theBaryons.insert(new G4SPBaryon(G4ParticleTable::GetParticleTable()->FindParticle(3314))); // X-* + theBaryons.insert(new G4SPBaryon(G4ParticleTable::GetParticleTable()->FindParticle(-3324))); // anti X0* + theBaryons.insert(new G4SPBaryon(G4ParticleTable::GetParticleTable()->FindParticle(-3314))); // anti X-* } G4bool G4BaryonSplitter:: -SplitBarion(G4int Encoding, G4int* q_or_qqbar, G4int* qbar_or_qq) +SplitBarion(G4int PDGCode, G4int* q_or_qqbar, G4int* qbar_or_qq) { - const G4SPBaryon * aBaryon = theBaryons.GetBaryon(G4ParticleTable::GetParticleTable()->FindParticle(Encoding)); + const G4SPBaryon * aBaryon = theBaryons.GetBaryon(G4ParticleTable::GetParticleTable()->FindParticle(PDGCode)); if(aBaryon==NULL) { return FALSE; @@ -42,11 +62,19 @@ SplitBarion(G4int Encoding, G4int* q_or_qqbar, G4int* qbar_or_qq) } +// Get the splittable baryon for a PDG code. +const G4SPBaryon & G4BaryonSplitter:: +GetSPBaryon(G4int PDGCode) +{ +return *theBaryons.GetBaryon(G4ParticleTable::GetParticleTable()->FindParticle(PDGCode)); +} + + // Find rest diquark in given barion after quark - antiquark annihilation G4bool G4BaryonSplitter:: -FindDiquark(G4int Encoding, G4int Quark, G4int* Diquark) +FindDiquark(G4int PDGCode, G4int Quark, G4int* Diquark) { - const G4SPBaryon * aBaryon = theBaryons.GetBaryon(G4ParticleTable::GetParticleTable()->FindParticle(Encoding)); + const G4SPBaryon * aBaryon = theBaryons.GetBaryon(G4ParticleTable::GetParticleTable()->FindParticle(PDGCode)); if(aBaryon==NULL) { return FALSE; @@ -58,18 +86,3 @@ FindDiquark(G4int Encoding, G4int Quark, G4int* Diquark) } } -//const CBarionState * G4BaryonSplitter:: -//FindBaryonComposition(PDGCode) -//{ -// CBarionState * result = NULL; -// G4int AbsPDGCode = abs(PDGCode); -// for(G4int i = 0; i < sizeof(BarionContentTable)/sizeof(CBarionContent); i++) -// { -// if (BarionContentTable[i].AbsEncoding == AbsPDGCode) -// { -// result = BarionContentTable[i].Content; -// break; -// } -// } -// return result; -//} 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 new file mode 100644 index 0000000000..ba4a5a6c93 --- /dev/null +++ b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4GammaAnnCrossSection.cc @@ -0,0 +1,47 @@ +#include "G4GammaAnnCrossSection.hh" +#include "G4Gamma.hh" + +G4GammaAnnCrossSection:: +G4GammaAnnCrossSection() +{ +// pho0 Nucleon + theGammaNucXSections.push_back(new G4ASCCrossSection(113, 2212, 13.7, 35.9, 0.45, 0.079)); +// omega0 Nucleon + theGammaNucXSections.push_back(new G4ASCCrossSection(223, 2212, 13.7, 35.9, 0.45, 0.079)); +// phi0 Nucleon + theGammaNucXSections.push_back(new G4ASCCrossSection(333, 2212, 12.2, 26.4, 0.50, 0.079)); +} + +G4bool G4GammaAnnCrossSection:: +InCharge(G4int aCode, G4int bCode) +{ + G4bool result = false; + if(aCode==G4Gamma::Gamma()->GetPDGEncoding()) + { + result=true; + } + else if(bCode==G4Gamma::Gamma()->GetPDGEncoding()) + { + result = true; + } + return result; +} + +G4double G4GammaAnnCrossSection:: +GetXsec(G4double s) +{ + G4double result = 0; + // ratios from Phys.Lett.B40:121-126,1972; 22% assigned to higher resonances + + typedef G4std::vector::iterator iter; + iter i; + for(i=theGammaNucXSections.begin(); i!=theGammaNucXSections.end(); i++) + { + result += (*i)->GetXsec(s); + } + + // Account for higher resonances. + result /= 0.78; + + return result; +} 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 new file mode 100644 index 0000000000..6cbe792530 --- /dev/null +++ b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4PartonStringAnnihilator.cc @@ -0,0 +1,185 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// implementation file +// +// For information related to this code contact: +// CERN, CN Division, ASD Group +// History: first partial implementation, Maxim Komogorov, 9-Oct-1998 +// +// new OO design and implementation, largely replaces the +// initial prototype, H.P. Wellisch, Dec 1999. +// ----------------------------------------------------------------------------- +#include "G4PartonStringAnnihilator.hh" + + +G4PartonStringAnnihilator::G4PartonStringAnnihilator() +{ + widthOfPtSquare = 0.1*GeV*GeV; +} + + +G4bool G4PartonStringAnnihilator::isMeson(G4int Encoding) +{ + return (abs(Encoding)%10000 < 1000) && abs(Encoding) > 100; +} + +G4bool G4PartonStringAnnihilator::isBarion(G4int Encoding) +{ + return (abs(Encoding)%10000 > 1000) && abs(Encoding)%100 > 10; +} + +G4bool G4PartonStringAnnihilator::isAntiParticle(G4int Encoding) +{ + return (Encoding < 0); +} + + +G4bool G4PartonStringAnnihilator::GetStringEnds(G4int Projectile, G4int Target, G4int* Left, G4int* Right) +{ + G4int LeftProjectile, RightProjectile; + G4int LeftTarget, RightTarget; + G4bool result = FALSE; + + if (isBarion(Projectile) && isMeson(Target)) + G4SwapObj(&Projectile, &Target); + + // meson - meson annihilation + if (isMeson(Projectile) && isMeson(Target)) + { + theMesonSplitter.SplitMeson(Projectile, &LeftProjectile, &RightProjectile); + theMesonSplitter.SplitMeson(Target, &LeftTarget, &RightTarget); + if (LeftProjectile == -RightTarget) + { + if (RightProjectile == -LeftTarget && G4UniformRand() < 0.5) + { + *Left = LeftProjectile; + *Right = RightTarget; + } + else + { + *Left = LeftTarget; + *Right = RightProjectile; + } + result = TRUE; + } + else if (-RightProjectile == LeftTarget) + { + *Left = LeftProjectile; + *Right = RightTarget; + result = TRUE; + } + } + + // meson - barion(antibarion) annihilation + else if (isMeson(Projectile) && isBarion(Target)) + { + theMesonSplitter.SplitMeson (Projectile, &LeftProjectile, &RightProjectile); + G4int Diquark; + if (isAntiParticle(Target)) + { + if (theBaryonSplitter.FindDiquark(Target, LeftProjectile, &Diquark)) // assumes that LeftProjectile from mesonsplitter is quark. + { + *Left = -Diquark; + *Right = RightProjectile; + result = TRUE; + } + } + else if (theBaryonSplitter.FindDiquark(Target, RightProjectile, &Diquark)) + { + *Left = LeftProjectile; + *Right = Diquark; + result = TRUE; + } + } + + // barion-antibarion annihilation + if (isAntiParticle(Projectile)) + G4SwapObj(&Projectile, &Target); + if (!(isAntiParticle(Projectile) || !isAntiParticle(Target))) result = TRUE; + + if(!result) return FALSE; + + + const G4SPBaryon & theProjectile = theBaryonSplitter.GetSPBaryon(Projectile); + const G4SPBaryon & theTarget = theBaryonSplitter.GetSPBaryon(Target); + + // Assumes that di-quarks always annihilate. Good only for nucleon + // annihilation; not for strange baryons, etc.. (mass is higher) + G4int activeDiquark=0; + + *Left = theProjectile.MatchDiQuarkAndGetQuark(theTarget, activeDiquark); + + *Right = theTarget.FindQuark(activeDiquark); + + return result; +} + + +//************************************************************************************************************************** + +G4ExcitedString* G4PartonStringAnnihilator::GetString(G4KineticTrack& Target, G4KineticTrack& Projectile) +{ + G4LorentzVector Mom = Target.Get4Momentum() + Projectile.Get4Momentum(); + G4ThreeVector Pos = Target.GetPosition(); + + // Convert the hadrons into one highmass colorneutral object with axis. + + G4int LeftEncoding; + G4int RightEncoding; + G4bool canAnnihilate = GetStringEnds(Projectile.GetDefinition()->GetPDGEncoding(), + Target.GetDefinition()->GetPDGEncoding(), + &LeftEncoding, &RightEncoding); + if (!canAnnihilate) return 0; + + G4Parton* Left = new G4Parton(LeftEncoding); + Left->SetPosition(Pos); + + G4Parton* Right = new G4Parton(RightEncoding); + Right->SetPosition(Pos); + + // momenta of string ends + G4double pt2 = Mom.perp2(); + G4double transverseMass2 = Mom.plus()*Mom.minus(); + G4double maxAvailMomentum2 = sqr(sqrt(transverseMass2) - sqrt(pt2)); + + G4double R; + while((R = -widthOfPtSquare*log(G4UniformRand())) > maxAvailMomentum2); + R = sqrt(R); + G4double phi = twopi*G4UniformRand(); + G4ThreeVector pt(R*cos(phi), R*sin(phi), 0.); + + G4LorentzVector LeftMom(pt, 0.); + G4LorentzVector RightMom; + RightMom.setPx(Mom.px() - pt.x()); + RightMom.setPy(Mom.py() - pt.y()); + + G4double Local1 = Mom.minus() + (RightMom.perp2() - LeftMom.perp2())/Mom.plus(); + G4double Local2 = sqrt(G4std::max(0., sqr(Local1) - 4.*RightMom.perp2()*Mom.minus()/Mom.plus())); + G4double RightMinus = 0.5*(Local1 + Local2); + G4double LeftMinus = Mom.minus() - RightMinus; + + G4double LeftPlus = LeftMom.perp2()/LeftMinus; + G4double RightPlus = Mom.plus() - LeftPlus; + LeftMom.setPz(0.5*(LeftPlus - LeftMinus)); + LeftMom.setE (0.5*(LeftPlus + LeftMinus)); + RightMom.setPz(0.5*(RightPlus - RightMinus)); + RightMom.setE (0.5*(RightPlus + RightMinus)); + + Left->Set4Momentum(LeftMom); + Right->Set4Momentum(RightMom); + G4int aDirection=1; + if(G4UniformRand()<0.5) aDirection = -1; + return new G4ExcitedString(Left, Right, aDirection); +} + +//************************************************************************************************************************** + + + + + + + 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 09d423dfbc..005cdf4ed2 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 @@ -2,25 +2,89 @@ #include "Randomize.hh" #include "G4ParticleTable.hh" +// correcting numbers, HPW Dec 1999 + +G4int G4SPBaryon::FindQuark(G4int diQuark) const +{ + G4double sum = GetProbability(diQuark); + G4double random = G4UniformRand(); + G4double running = 0; + typedef G4std::vector::const_iterator iter; + iter i; + for(i = thePartonInfo.begin(); i!=thePartonInfo.end(); i++) + { + if (abs((*i)->GetDiQuark()) == abs(diQuark)) + { + running += (*i)->GetProbability(); + if (running/sum >= random) + { + diQuark = (*i)->GetDiQuark(); + break; + } + } + } + return (*i)->GetQuark(); +} + +G4double G4SPBaryon::GetProbability(G4int diQuark) const +{ + G4double sum = 0; + typedef G4std::vector::const_iterator iter; + iter i; + for(i = thePartonInfo.begin(); i!=thePartonInfo.end(); i++) + { + if (abs((*i)->GetDiQuark()) == abs(diQuark)) + { + sum += (*i)->GetProbability(); + } + } + return sum; +} + +G4int G4SPBaryon:: +MatchDiQuarkAndGetQuark(const G4SPBaryon & aBaryon, G4int & aDiQuark) const +{ + G4double result=0; + typedef G4std::vector::const_iterator iter; + iter i; + G4double running = 0; + G4double total = 0; + for(i = thePartonInfo.begin(); i!=thePartonInfo.end(); i++) + { + total += aBaryon.GetProbability((*i)->GetDiQuark()); + } + G4double random = G4UniformRand()*total; + for(i = thePartonInfo.begin(); i!=thePartonInfo.end(); i++) + { + running += aBaryon.GetProbability((*i)->GetDiQuark()); + if(random/totalGetQuark(); // (diquark annihilated) + aDiQuark = (*i)->GetDiQuark(); + return result; +} + void G4SPBaryon:: SampleQuarkAndDiquark(G4int & quark, G4int & diQuark) const { - G4double random = 0.999999*G4UniformRand(); + typedef G4std::vector::const_iterator iter; + G4double random = G4UniformRand(); G4double sum = 0; - for(G4int i=0; iGetProbability(); + sum += (*i)->GetProbability(); if (sum > random) { if (theDefinition->GetPDGEncoding() < 0) { - quark = -thePartonInfo[i]->GetDiQuark(); - diQuark = -thePartonInfo[i]->GetQuark(); + quark = -(*i)->GetDiQuark(); + diQuark = -(*i)->GetQuark(); } else { - quark = thePartonInfo[i]->GetQuark(); - diQuark = thePartonInfo[i]->GetDiQuark(); + quark = (*i)->GetQuark(); + diQuark = (*i)->GetDiQuark(); } break; } @@ -30,25 +94,26 @@ SampleQuarkAndDiquark(G4int & quark, G4int & diQuark) const void G4SPBaryon:: FindDiquark(G4int quark, G4int & diQuark) const { + typedef G4std::vector::const_iterator iter; G4double sum = 0; - G4int i; - for(i = 0; iGetQuark()) == abs(quark)) + if (abs((*i)->GetQuark()) == abs(quark)) { - sum += thePartonInfo[i]->GetProbability(); + sum += (*i)->GetProbability(); } } - G4double random = 0.999999*G4UniformRand(); + G4double random = G4UniformRand(); G4double running = 0; - for(i = 0; thePartonInfo[i]->GetQuark() != 0 && i < 6; i++) + for(i=thePartonInfo.begin() ; i!=thePartonInfo.end(); i++) { - if (abs(thePartonInfo[i]->GetQuark()) == abs(quark)) + if (abs((*i)->GetQuark()) == abs(quark)) { - running += thePartonInfo[i]->GetProbability(); + running += (*i)->GetProbability(); if (running/sum >= random) { - diQuark = thePartonInfo[i]->GetDiQuark(); + diQuark = (*i)->GetDiQuark(); break; } } @@ -60,81 +125,169 @@ G4SPBaryon:: G4SPBaryon(G4Proton * aProton) { theDefinition = aProton; -thePartonInfo.insert(new G4SPPartonInfo(2203, 1, 1./3.)); -thePartonInfo.insert(new G4SPPartonInfo(2103, 2, 1./6.)); -thePartonInfo.insert(new G4SPPartonInfo(2101, 2, 1./2.)); +thePartonInfo.push_back(new G4SPPartonInfo(2203, 1, 1./3.)); // uu_1, d +thePartonInfo.push_back(new G4SPPartonInfo(2103, 2, 1./6.)); // ud_1, u +thePartonInfo.push_back(new G4SPPartonInfo(2101, 2, 1./2.)); // ud_0, u +} + +G4SPBaryon:: +G4SPBaryon(G4AntiProton * aAntiProton) +{ +theDefinition = aAntiProton; +thePartonInfo.push_back(new G4SPPartonInfo(-2203, -1, 1./3.)); +thePartonInfo.push_back(new G4SPPartonInfo(-2103, -2, 1./6.)); +thePartonInfo.push_back(new G4SPPartonInfo(-2101, -2, 1./2.)); } G4SPBaryon:: G4SPBaryon(G4Neutron * aNeutron) { theDefinition = aNeutron; -thePartonInfo.insert(new G4SPPartonInfo(2103, 1, 1./6.)); -thePartonInfo.insert(new G4SPPartonInfo(2101, 1, 1./2.)); -thePartonInfo.insert(new G4SPPartonInfo(1103, 2, 1./3.)); +thePartonInfo.push_back(new G4SPPartonInfo(2103, 1, 1./6.)); // ud_1, d +thePartonInfo.push_back(new G4SPPartonInfo(2101, 1, 1./2.)); // ud_0, d +thePartonInfo.push_back(new G4SPPartonInfo(1103, 2, 1./3.)); // dd_1, u +} + +G4SPBaryon:: +G4SPBaryon(G4AntiNeutron * aAntiNeutron) +{ +theDefinition = aAntiNeutron; +thePartonInfo.push_back(new G4SPPartonInfo(-2103, -1, 1./6.)); +thePartonInfo.push_back(new G4SPPartonInfo(-2101, -1, 1./2.)); +thePartonInfo.push_back(new G4SPPartonInfo(-1103, -2, 1./3.)); +} + +G4SPBaryon:: +G4SPBaryon(G4Lambda * aLambda) +{ +theDefinition = aLambda; +thePartonInfo.push_back(new G4SPPartonInfo(2103, 3, 1./3.)); // ud_1, s +thePartonInfo.push_back(new G4SPPartonInfo(3203, 1, 1./4.)); // su_1, d +thePartonInfo.push_back(new G4SPPartonInfo(3201, 1, 1./12.)); // su_0, d +thePartonInfo.push_back(new G4SPPartonInfo(3103, 2, 1./4.)); // sd_1, u +thePartonInfo.push_back(new G4SPPartonInfo(3101, 2, 1./12.)); // sd_0, u +} + +G4SPBaryon:: +G4SPBaryon(G4AntiLambda * aAntiLambda) +{ +theDefinition = aAntiLambda; +thePartonInfo.push_back(new G4SPPartonInfo(-2103, -3, 1./3.)); +thePartonInfo.push_back(new G4SPPartonInfo(-3203, -1, 1./4.)); +thePartonInfo.push_back(new G4SPPartonInfo(-3201, -1, 1./12.)); +thePartonInfo.push_back(new G4SPPartonInfo(-3103, -2, 1./4.)); +thePartonInfo.push_back(new G4SPPartonInfo(-3101, -2, 1./12.)); } G4SPBaryon:: G4SPBaryon(G4SigmaPlus * aSigmaPlus) { theDefinition = aSigmaPlus; -thePartonInfo.insert(new G4SPPartonInfo(2203, 3, 1./3.)); -thePartonInfo.insert(new G4SPPartonInfo(3203, 2, 1./6.)); -thePartonInfo.insert(new G4SPPartonInfo(3201, 2, 1./2.)); +thePartonInfo.push_back(new G4SPPartonInfo(2203, 3, 1./3.)); +thePartonInfo.push_back(new G4SPPartonInfo(3203, 2, 1./6.)); +thePartonInfo.push_back(new G4SPPartonInfo(3201, 2, 1./2.)); +} + +G4SPBaryon:: +G4SPBaryon(G4AntiSigmaPlus * aAntiSigmaPlus) +{ +theDefinition = aAntiSigmaPlus; +thePartonInfo.push_back(new G4SPPartonInfo(-2203, -3, 1./3.)); +thePartonInfo.push_back(new G4SPPartonInfo(-3203, -2, 1./6.)); +thePartonInfo.push_back(new G4SPPartonInfo(-3201, -2, 1./2.)); } G4SPBaryon:: G4SPBaryon(G4SigmaZero * aSigmaZero) { theDefinition = aSigmaZero; -thePartonInfo.insert(new G4SPPartonInfo(2103, 3, 1./3.)); -thePartonInfo.insert(new G4SPPartonInfo(3203, 1, 1./12.)); -thePartonInfo.insert(new G4SPPartonInfo(3201, 1, 1./4.)); -thePartonInfo.insert(new G4SPPartonInfo(3103, 2, 1./12.)); -thePartonInfo.insert(new G4SPPartonInfo(3101, 2, 1./4.)); +thePartonInfo.push_back(new G4SPPartonInfo(2103, 3, 1./3.)); +thePartonInfo.push_back(new G4SPPartonInfo(3203, 1, 1./12.)); +thePartonInfo.push_back(new G4SPPartonInfo(3201, 1, 1./4.)); +thePartonInfo.push_back(new G4SPPartonInfo(3103, 2, 1./12.)); +thePartonInfo.push_back(new G4SPPartonInfo(3101, 2, 1./4.)); +} + +G4SPBaryon:: +G4SPBaryon(G4AntiSigmaZero * aAntiSigmaZero) +{ +theDefinition = aAntiSigmaZero; +thePartonInfo.push_back(new G4SPPartonInfo(-2103, -3, 1./3.)); +thePartonInfo.push_back(new G4SPPartonInfo(-3203, -1, 1./12.)); +thePartonInfo.push_back(new G4SPPartonInfo(-3201, -1, 1./4.)); +thePartonInfo.push_back(new G4SPPartonInfo(-3103, -2, 1./12.)); +thePartonInfo.push_back(new G4SPPartonInfo(-3101, -2, 1./4.)); } G4SPBaryon:: G4SPBaryon(G4SigmaMinus * aSigmaMinus) { theDefinition = aSigmaMinus; -thePartonInfo.insert(new G4SPPartonInfo(1103, 3, 1./3.)); -thePartonInfo.insert(new G4SPPartonInfo(3103, 1, 1./6.)); -thePartonInfo.insert(new G4SPPartonInfo(3101, 1, 1./2.)); +thePartonInfo.push_back(new G4SPPartonInfo(1103, 3, 1./3.)); +thePartonInfo.push_back(new G4SPPartonInfo(3103, 1, 1./6.)); +thePartonInfo.push_back(new G4SPPartonInfo(3101, 1, 1./2.)); +} + +G4SPBaryon:: +G4SPBaryon(G4AntiSigmaMinus * aAntiSigmaMinus) +{ +theDefinition = aAntiSigmaMinus; +thePartonInfo.push_back(new G4SPPartonInfo(-1103, -3, 1./3.)); +thePartonInfo.push_back(new G4SPPartonInfo(-3103, -1, 1./6.)); +thePartonInfo.push_back(new G4SPPartonInfo(-3101, -1, 1./2.)); } G4SPBaryon:: G4SPBaryon(G4XiMinus * aXiMinus) { theDefinition = aXiMinus; -thePartonInfo.insert(new G4SPPartonInfo(3103, 3, 1./6.)); -thePartonInfo.insert(new G4SPPartonInfo(3101, 3, 1./2.)); -thePartonInfo.insert(new G4SPPartonInfo(3303, 1, 1./3.)); +thePartonInfo.push_back(new G4SPPartonInfo(3103, 3, 1./6.)); +thePartonInfo.push_back(new G4SPPartonInfo(3101, 3, 1./2.)); +thePartonInfo.push_back(new G4SPPartonInfo(3303, 1, 1./3.)); } + +G4SPBaryon:: +G4SPBaryon(G4AntiXiMinus * aAntiXiMinus) +{ +theDefinition = aAntiXiMinus; +thePartonInfo.push_back(new G4SPPartonInfo(-3103, -3, 1./6.)); +thePartonInfo.push_back(new G4SPPartonInfo(-3101, -3, 1./2.)); +thePartonInfo.push_back(new G4SPPartonInfo(-3303, -1, 1./3.)); +} + G4SPBaryon:: G4SPBaryon(G4XiZero * aXiZero) { theDefinition = aXiZero; -thePartonInfo.insert(new G4SPPartonInfo(3203, 3, 1./6.)); -thePartonInfo.insert(new G4SPPartonInfo(3201, 3, 1./2.)); -thePartonInfo.insert(new G4SPPartonInfo(3303, 2, 1./3.)); +thePartonInfo.push_back(new G4SPPartonInfo(3203, 3, 1./6.)); +thePartonInfo.push_back(new G4SPPartonInfo(3201, 3, 1./2.)); +thePartonInfo.push_back(new G4SPPartonInfo(3303, 2, 1./3.)); } + G4SPBaryon:: -G4SPBaryon(G4Lambda * aLambda) +G4SPBaryon(G4AntiXiZero * aAntiXiZero) { -theDefinition = aLambda; -thePartonInfo.insert(new G4SPPartonInfo(2103, 3, 1./3.)); -thePartonInfo.insert(new G4SPPartonInfo(3203, 1, 1./4.)); -thePartonInfo.insert(new G4SPPartonInfo(3201, 1, 1./12.)); -thePartonInfo.insert(new G4SPPartonInfo(3103, 2, 1./4.)); -thePartonInfo.insert(new G4SPPartonInfo(3101, 2, 1./12.)); +theDefinition = aAntiXiZero; +thePartonInfo.push_back(new G4SPPartonInfo(-3203, -3, 1./6.)); +thePartonInfo.push_back(new G4SPPartonInfo(-3201, -3, 1./2.)); +thePartonInfo.push_back(new G4SPPartonInfo(-3303, -2, 1./3.)); } + G4SPBaryon:: G4SPBaryon(G4OmegaMinus * anOmegaMinus) { theDefinition = anOmegaMinus; -thePartonInfo.insert(new G4SPPartonInfo(3303, 3, 1.)); +thePartonInfo.push_back(new G4SPPartonInfo(3303, 3, 1.)); } + + +G4SPBaryon:: +G4SPBaryon(G4AntiOmegaMinus * anAntiOmegaMinus) +{ +theDefinition = anAntiOmegaMinus; +thePartonInfo.push_back(new G4SPPartonInfo(-3303, -3, 1.)); +} + // non static particles G4SPBaryon:: G4SPBaryon(G4ParticleDefinition * aDefinition) @@ -143,54 +296,107 @@ G4SPBaryon(G4ParticleDefinition * aDefinition) if(theDefinition == G4ParticleTable::GetParticleTable()->FindParticle(2224))// D++ { - thePartonInfo.insert(new G4SPPartonInfo(2203, 2, 1.)); + thePartonInfo.push_back(new G4SPPartonInfo(2203, 2, 1.)); + } + else if(theDefinition == + G4ParticleTable::GetParticleTable()->FindParticle(-2224))// anti D++ + { + thePartonInfo.push_back(new G4SPPartonInfo(-2203, -2, 1.)); } else if(theDefinition == G4ParticleTable::GetParticleTable()->FindParticle(2214))// D+ { - thePartonInfo.insert(new G4SPPartonInfo(2203, 1, 1./3.)); - thePartonInfo.insert(new G4SPPartonInfo(2103, 2, 2./3.)); + thePartonInfo.push_back(new G4SPPartonInfo(2203, 1, 1./3.)); + thePartonInfo.push_back(new G4SPPartonInfo(2103, 2, 2./3.)); + } + else if(theDefinition == + G4ParticleTable::GetParticleTable()->FindParticle(-2214))// anti D+ + { + thePartonInfo.push_back(new G4SPPartonInfo(-2203, -1, 1./3.)); + thePartonInfo.push_back(new G4SPPartonInfo(-2103, -2, 2./3.)); } else if(theDefinition == G4ParticleTable::GetParticleTable()->FindParticle(2114))// D0 { - thePartonInfo.insert(new G4SPPartonInfo(2103, 1, 2./3.)); - thePartonInfo.insert(new G4SPPartonInfo(2103, 2, 1./3.)); + thePartonInfo.push_back(new G4SPPartonInfo(2103, 1, 2./3.)); + thePartonInfo.push_back(new G4SPPartonInfo(2103, 2, 1./3.)); + } + else if(theDefinition == + G4ParticleTable::GetParticleTable()->FindParticle(-2114))// anti D0 + { + thePartonInfo.push_back(new G4SPPartonInfo(-2103, -1, 2./3.)); + thePartonInfo.push_back(new G4SPPartonInfo(-2103, -2, 1./3.)); } else if(theDefinition == G4ParticleTable::GetParticleTable()->FindParticle(1114))// D- { - thePartonInfo.insert(new G4SPPartonInfo(1103, 1, 1.)); + thePartonInfo.push_back(new G4SPPartonInfo(1103, 1, 1.)); + } + else if(theDefinition == + G4ParticleTable::GetParticleTable()->FindParticle(-1114))// anti D- + { + thePartonInfo.push_back(new G4SPPartonInfo(-1103, -1, 1.)); } else if(theDefinition == G4ParticleTable::GetParticleTable()->FindParticle(3224))// S*+ { - thePartonInfo.insert(new G4SPPartonInfo(2203, 3, 1./3.)); - thePartonInfo.insert(new G4SPPartonInfo(3203, 2, 2./3.)); + thePartonInfo.push_back(new G4SPPartonInfo(2203, 3, 1./3.)); + thePartonInfo.push_back(new G4SPPartonInfo(3203, 2, 2./3.)); + } + else if(theDefinition == + G4ParticleTable::GetParticleTable()->FindParticle(-3224))// anti S*+ + { + thePartonInfo.push_back(new G4SPPartonInfo(-2203, -3, 1./3.)); + thePartonInfo.push_back(new G4SPPartonInfo(-3203, -2, 2./3.)); } else if(theDefinition == G4ParticleTable::GetParticleTable()->FindParticle(3214))// S*0 { - thePartonInfo.insert(new G4SPPartonInfo(2103, 3, 1./3.)); - thePartonInfo.insert(new G4SPPartonInfo(3203, 1, 1./3.)); - thePartonInfo.insert(new G4SPPartonInfo(3103, 2, 1./3.)); + thePartonInfo.push_back(new G4SPPartonInfo(2103, 3, 1./3.)); + thePartonInfo.push_back(new G4SPPartonInfo(3203, 1, 1./3.)); + thePartonInfo.push_back(new G4SPPartonInfo(3103, 2, 1./3.)); } else if(theDefinition == - G4ParticleTable::GetParticleTable()->FindParticle(3224))// S*- + G4ParticleTable::GetParticleTable()->FindParticle(-3214))// anti S*0 { - thePartonInfo.insert(new G4SPPartonInfo(1103, 3, 1./3.)); - thePartonInfo.insert(new G4SPPartonInfo(3103, 1, 2./3.)); + thePartonInfo.push_back(new G4SPPartonInfo(-2103, -3, 1./3.)); + thePartonInfo.push_back(new G4SPPartonInfo(-3203, -1, 1./3.)); + thePartonInfo.push_back(new G4SPPartonInfo(-3103, -2, 1./3.)); + } + else if(theDefinition == + G4ParticleTable::GetParticleTable()->FindParticle(3114))// S*- + { + thePartonInfo.push_back(new G4SPPartonInfo(1103, 3, 1./3.)); + thePartonInfo.push_back(new G4SPPartonInfo(3103, 1, 2./3.)); + } + else if(theDefinition == + G4ParticleTable::GetParticleTable()->FindParticle(-3224))// anti S*- + { + thePartonInfo.push_back(new G4SPPartonInfo(-1103, -3, 1./3.)); + thePartonInfo.push_back(new G4SPPartonInfo(-3103, -1, 2./3.)); } else if(theDefinition == G4ParticleTable::GetParticleTable()->FindParticle(3324))// Xi*0 { - thePartonInfo.insert(new G4SPPartonInfo(3203, 3, 1./3.)); - thePartonInfo.insert(new G4SPPartonInfo(3303, 2, 2./3.)); + thePartonInfo.push_back(new G4SPPartonInfo(3203, 3, 1./3.)); + thePartonInfo.push_back(new G4SPPartonInfo(3303, 2, 2./3.)); + } + else if(theDefinition == + G4ParticleTable::GetParticleTable()->FindParticle(-3324))// anti Xi*0 + { + thePartonInfo.push_back(new G4SPPartonInfo(-3203, -3, 1./3.)); + thePartonInfo.push_back(new G4SPPartonInfo(-3303, -2, 2./3.)); } else if(theDefinition == G4ParticleTable::GetParticleTable()->FindParticle(3314))// Xi*- { - thePartonInfo.insert(new G4SPPartonInfo(3103, 3, 2./3.)); - thePartonInfo.insert(new G4SPPartonInfo(3303, 1, 1./3.)); + thePartonInfo.push_back(new G4SPPartonInfo(3103, 3, 2./3.)); + thePartonInfo.push_back(new G4SPPartonInfo(3303, 1, 1./3.)); + } + else if(theDefinition == + G4ParticleTable::GetParticleTable()->FindParticle(-3314))// anti Xi*- + { + thePartonInfo.push_back(new G4SPPartonInfo(-3103, -3, 2./3.)); + thePartonInfo.push_back(new G4SPPartonInfo(-3303, -1, 1./3.)); } } 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 fee4b0bc14..999288a3dc 100644 --- a/source/processes/hadronic/models/generator/string_common/include/G4DiffractiveExcitation.hh +++ b/source/processes/hadronic/models/generator/string_common/include/G4DiffractiveExcitation.hh @@ -5,7 +5,7 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DiffractiveExcitation.hh,v 1.3.4.1 1999/12/07 20:51:51 gunter Exp $ +// $Id: G4DiffractiveExcitation.hh,v 1.4 1999/12/15 14:52:45 gunter 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 69b2fe91b9..c432e03319 100644 --- a/source/processes/hadronic/models/generator/string_common/include/G4EventGenerator.hh +++ b/source/processes/hadronic/models/generator/string_common/include/G4EventGenerator.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4EventGenerator.hh,v 1.1.10.1 1999/12/07 20:51:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4EventGenerator.hh,v 1.2 1999/12/15 14:52:45 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 d2eaa50da2..3dd6cd6445 100644 --- a/source/processes/hadronic/models/generator/string_common/include/G4InteractionCode.hh +++ b/source/processes/hadronic/models/generator/string_common/include/G4InteractionCode.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4InteractionCode.hh,v 1.1.10.1 1999/12/07 20:51:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4InteractionCode.hh,v 1.2 1999/12/15 14:52:45 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 cb87cc81f9..8d5220b067 100644 --- a/source/processes/hadronic/models/generator/string_common/include/G4InteractionContent.hh +++ b/source/processes/hadronic/models/generator/string_common/include/G4InteractionContent.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4InteractionContent.hh,v 1.1.10.1 1999/12/07 20:51:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4InteractionContent.hh,v 1.2 1999/12/15 14:52:45 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 f080b8c3bc..b5fb069838 100644 --- a/source/processes/hadronic/models/generator/string_common/include/G4PomeronCrossSection.hh +++ b/source/processes/hadronic/models/generator/string_common/include/G4PomeronCrossSection.hh @@ -7,8 +7,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PomeronCrossSection.hh,v 1.2.8.1 1999/12/07 20:51:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PomeronCrossSection.hh,v 1.3 1999/12/15 14:52:45 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4Proton.hh" #include "G4Neutron.hh" 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 4c56258448..29f1bec053 100644 --- a/source/processes/hadronic/models/generator/string_common/include/G4SingleDiffractiveExcitation.hh +++ b/source/processes/hadronic/models/generator/string_common/include/G4SingleDiffractiveExcitation.hh @@ -5,7 +5,7 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4SingleDiffractiveExcitation.hh,v 1.1.4.1 1999/12/07 20:51:51 gunter Exp $ +// $Id: G4SingleDiffractiveExcitation.hh,v 1.2 1999/12/15 14:52:46 gunter 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 e4fca2a7c5..bffe62a39b 100644 --- a/source/processes/hadronic/models/generator/string_common/include/G4StringModel.hh +++ b/source/processes/hadronic/models/generator/string_common/include/G4StringModel.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4StringModel.hh,v 1.2.8.1 1999/12/07 20:51:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4StringModel.hh,v 1.3 1999/12/15 14:52:46 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 c79d13b66b..3788d9e818 100644 --- a/source/processes/hadronic/models/generator/string_common/include/G4VParticipants.hh +++ b/source/processes/hadronic/models/generator/string_common/include/G4VParticipants.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VParticipants.hh,v 1.1.8.1 1999/12/07 20:51:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VParticipants.hh,v 1.2 1999/12/15 14:52:46 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 b959aa30f2..def616ef81 100644 --- a/source/processes/hadronic/models/generator/string_common/include/G4VPartonStringModel.hh +++ b/source/processes/hadronic/models/generator/string_common/include/G4VPartonStringModel.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VPartonStringModel.hh,v 1.2.8.1 1999/12/07 20:51:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VPartonStringModel.hh,v 1.3 1999/12/15 14:52:46 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 4116c176e9..02f08a8420 100644 --- a/source/processes/hadronic/models/generator/string_common/include/G4VSplitableHadron.hh +++ b/source/processes/hadronic/models/generator/string_common/include/G4VSplitableHadron.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VSplitableHadron.hh,v 1.1.6.1.2.1 1999/12/07 20:51:53 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VSplitableHadron.hh,v 1.3 1999/12/15 14:52:46 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4VSplitableHadron_h 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 63b0c551b2..273b048359 100644 --- a/source/processes/hadronic/models/generator/string_common/include/G4VStringFragmentation.hh +++ b/source/processes/hadronic/models/generator/string_common/include/G4VStringFragmentation.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VStringFragmentation.hh,v 1.1.8.1 1999/12/07 20:51:53 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VStringFragmentation.hh,v 1.2 1999/12/15 14:52:46 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4VStringFragmentation_h #define G4VStringFragmentation_h 1 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 761f8a253f..90fe8f6381 100644 --- a/source/processes/hadronic/models/generator/string_common/include/G4VertexCode.hh +++ b/source/processes/hadronic/models/generator/string_common/include/G4VertexCode.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VertexCode.hh,v 1.1.10.1 1999/12/07 20:51:53 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VertexCode.hh,v 1.2 1999/12/15 14:52:46 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 9997b27045..a097a18e7a 100644 --- a/source/processes/hadronic/models/generator/string_common/src/G4DiffractiveExcitation.cc +++ b/source/processes/hadronic/models/generator/string_common/src/G4DiffractiveExcitation.cc @@ -5,7 +5,7 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DiffractiveExcitation.cc,v 1.5.4.1.2.3 1999/12/10 15:42:06 gunter Exp $ +// $Id: G4DiffractiveExcitation.cc,v 1.7 1999/12/15 17:51:26 gcosmo Exp $ // ------------------------------------------------------------ // GEANT 4 class implemetation file // @@ -262,7 +262,7 @@ G4double G4DiffractiveExcitation::ChooseX(G4double Xmin, G4double Xmax) const x=Xmin + G4UniformRand() * range; } while ( Xmin/x < G4UniformRand() ); -//debug-hpw G4cout << "DiffractiveX "< aVector); + void SetVectorMesonMixings( G4std::vector aVector); + protected: // Additional protected declarations virtual G4double GetLightConeZ(G4double zmin, G4double zmax, G4int PartonEncoding, G4ParticleDefinition* pHadron, G4double Px, G4double Py) = 0; @@ -73,8 +84,13 @@ private: G4int ClusterLoopInterrupt; void ConstructParticle(); + + G4double pspin_meson; + G4double pspin_barion; + G4double pmix_meson1[6]; + G4double pmix_meson0[6]; - + G4bool PastInitPhase; class SimpleString { @@ -105,7 +121,7 @@ public: void update(); private: - SimpleString(){G4cout << " error calling bad ctor for class SimpleString"<< G4endl;} + SimpleString(){G4cout << " error calling bad ctor for class SimpleString"<< G4endl;}; SideOfString * left, * right; SideOfString * decay, * stable; 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 464c0c0911..1e46ab2136 100644 --- a/source/processes/hadronic/models/generator/string_fragmentation/src/G4ExcitedStringDecay.cc +++ b/source/processes/hadronic/models/generator/string_fragmentation/src/G4ExcitedStringDecay.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ExcitedStringDecay.cc,v 1.1.10.1 1999/12/07 20:51:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ExcitedStringDecay.cc,v 1.2 1999/12/15 14:52:47 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4ExcitedStringDecay 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 bcaaec21f1..cfc870ee06 100644 --- a/source/processes/hadronic/models/generator/string_fragmentation/src/G4LundStringFragmentation.cc +++ b/source/processes/hadronic/models/generator/string_fragmentation/src/G4LundStringFragmentation.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LundStringFragmentation.cc,v 1.1.10.1 1999/12/07 20:51:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LundStringFragmentation.cc,v 1.2 1999/12/15 14:52:47 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 d56e7b9156..80d612c6ba 100644 --- a/source/processes/hadronic/models/generator/string_fragmentation/src/G4QGSMFragmentation.cc +++ b/source/processes/hadronic/models/generator/string_fragmentation/src/G4QGSMFragmentation.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4QGSMFragmentation.cc,v 1.3.8.1 1999/12/07 20:51:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4QGSMFragmentation.cc,v 1.4 1999/12/15 14:52:47 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 index 88e800be88..2c7cc20ee7 100644 --- a/source/processes/hadronic/models/generator/string_fragmentation/src/G4VKinkyStringDecay.cc +++ b/source/processes/hadronic/models/generator/string_fragmentation/src/G4VKinkyStringDecay.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VKinkyStringDecay.cc,v 1.2.8.1 1999/12/07 20:51:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VKinkyStringDecay.cc,v 1.3 1999/12/15 14:52:48 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // Maxim Komogorov // // ----------------------------------------------------------------------------- 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 9a8c66e939..22cf760660 100644 --- a/source/processes/hadronic/models/generator/string_fragmentation/src/G4VLongitudinalStringDecay.cc +++ b/source/processes/hadronic/models/generator/string_fragmentation/src/G4VLongitudinalStringDecay.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VLongitudinalStringDecay.cc,v 1.4.6.1.2.2 1999/12/10 15:42:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VLongitudinalStringDecay.cc,v 1.6 1999/12/15 14:52:48 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // Maxim Komogorov // // ----------------------------------------------------------------------------- @@ -40,9 +40,15 @@ // Constructors G4VLongitudinalStringDecay::G4VLongitudinalStringDecay() - { +{ MassCut = 0.35*GeV; ClusterMass = 0.15*GeV; + + SmoothParam = 0.9; + StringLoopInterrupt = 1000; + ClusterLoopInterrupt = 500; + +// Changable Parameters below. SigmaQT = 0.5 * GeV; @@ -50,10 +56,33 @@ G4VLongitudinalStringDecay::G4VLongitudinalStringDecay() DiquarkSuppress = 0.1; DiquarkBreakProb = 0.1; - SmoothParam = 0.9; - StringLoopInterrupt = 1000; - ClusterLoopInterrupt = 500; - } + //... pspin_meson is probability to create vector meson + pspin_meson = 0.5; + + //... 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; + + //... 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; + +// Parameters may be changed until the first fragmentation starts + PastInitPhase=false; + +} + G4VLongitudinalStringDecay::~G4VLongitudinalStringDecay() { @@ -62,18 +91,22 @@ G4VLongitudinalStringDecay::~G4VLongitudinalStringDecay() //******************************************************************************** // Operators -//const G4VLongitudinalStringDecay & G4VLongitudinalStringDecay::operator=(const G4VLongitudinalStringDecay &right) +//const & G4VLongitudinalStringDecay::operator=(const G4VLongitudinalStringDecay &right) // { // } int G4VLongitudinalStringDecay::operator==(const G4VLongitudinalStringDecay &right) const { - return !memcmp(this, &right, sizeof(G4VLongitudinalStringDecay)); + G4Exception("G4VLongitudinalStringDecay::operator== forbidden"); + return false; +// return !memcmp(this, &right, sizeof(G4VLongitudinalStringDecay)); } int G4VLongitudinalStringDecay::operator!=(const G4VLongitudinalStringDecay &right) const { - return memcmp(this, &right, sizeof(G4VLongitudinalStringDecay)); + G4Exception("G4VLongitudinalStringDecay::operator!= forbidden"); + return true; +// return memcmp(this, &right, sizeof(G4VLongitudinalStringDecay)); } @@ -148,14 +181,6 @@ void G4VLongitudinalStringDecay::CalculateHadronTimePosition(G4double theInitial G4ParticleDefinition* G4VLongitudinalStringDecay::CreateHadron(G4int id1, G4int id2, G4bool theGivenSpin, G4int theSpin) { - //... pmix_meson0[] is quark mixing parameters for mesons with spin = 1 - const G4double pmix_meson1[] = {0.5, 0., 0.5, 0., 1.0, 1.0}; - //... pmix_meson1[] is quark mixing parameters for mesons with spin = 3 - const G4double pmix_meson0[] = {0.5, 0.25, 0.5, 0.25, 1.0, 0.5}; - //... pspin_meson is probability to create vector meson - const G4double pspin_meson = 0.5; - //... pspin_barion is probability to create 3/2 barion - const G4double pspin_barion = 0.5; G4int PDGEncoding; if (abs(id1) < abs(id2)) @@ -410,7 +435,9 @@ G4bool G4VLongitudinalStringDecay::SimpleString::SplitLast(G4KineticTrackVector //---------------------------------------------------------------------------------------------------------- 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); if ( LeftVector != 0 ) return LeftVector; @@ -732,3 +759,90 @@ void G4VLongitudinalStringDecay::Sample4Momentum(G4LorentzVector* Mom, G4double } //*********************************************************************************************************** + +void G4VLongitudinalStringDecay::SetSigmaTransverseMomentum(G4double aValue) +{ + if ( PastInitPhase ) { + G4Exception("4VLongitudinalStringDecay::SetSigmaTransverseMomentum after FragmentString() not allowed"); + } else { + SigmaQT = aValue; + } +} + +void G4VLongitudinalStringDecay::SetStrangenessSuppression(G4double aValue) +{ + if ( PastInitPhase ) { + G4Exception("4VLongitudinalStringDecay::SetStrangenessSuppression after FragmentString() not allowed"); + } else { + StrangeSuppress = aValue; + } +} + +void G4VLongitudinalStringDecay::SetDiquarkSuppression(G4double aValue) +{ + if ( PastInitPhase ) { + G4Exception("4VLongitudinalStringDecay::SetDiquarkSuppression after FragmentString() not allowed"); + } else { + DiquarkSuppress = aValue; + } +} + +void G4VLongitudinalStringDecay::SetDiquarkBreakProbability(G4double aValue) +{ + if ( PastInitPhase ) { + G4Exception("4VLongitudinalStringDecay::SetDiquarkBreakProbability after FragmentString() not allowed"); + } else { + DiquarkBreakProb = aValue; + } +} + + +void G4VLongitudinalStringDecay::SetVectorMesonProbability(G4double aValue) +{ + if ( PastInitPhase ) { + G4Exception("4VLongitudinalStringDecay::SetVectorMesonProbability after FragmentString() not allowed"); + } else { + pspin_meson = aValue; + } +} + +void G4VLongitudinalStringDecay::SetSpinThreeHalfBarionProbability(G4double aValue) +{ + if ( PastInitPhase ) { + G4Exception("4VLongitudinalStringDecay::SetSpinThreeHalfBarionProbability after FragmentString() not allowed"); + } else { + pspin_barion = aValue; + } +} + +void G4VLongitudinalStringDecay::SetScalarMesonMixings(G4std::vector aVector) +{ + if ( PastInitPhase ) { + G4Exception("4VLongitudinalStringDecay::SetScalarMesonMixings after FragmentString() not allowed"); + } 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]; + } +} + +void G4VLongitudinalStringDecay::SetVectorMesonMixings(G4std::vector aVector) +{ + if ( PastInitPhase ) { + G4Exception("4VLongitudinalStringDecay::SetVectorMesonMixings after FragmentString() not allowed"); + } 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]; + } +} diff --git a/source/processes/hadronic/models/generator/util/include/G4ExcitedString.hh b/source/processes/hadronic/models/generator/util/include/G4ExcitedString.hh index 5f741532d7..059d031420 100644 --- a/source/processes/hadronic/models/generator/util/include/G4ExcitedString.hh +++ b/source/processes/hadronic/models/generator/util/include/G4ExcitedString.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ExcitedString.hh,v 1.3.2.1.2.1 1999/12/07 20:51:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ExcitedString.hh,v 1.5 1999/12/15 14:52:50 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4ExcitedString_h diff --git a/source/processes/hadronic/models/generator/util/include/G4ExcitedStringVector.hh b/source/processes/hadronic/models/generator/util/include/G4ExcitedStringVector.hh index 10b41a8cf7..f1e018ef7a 100644 --- a/source/processes/hadronic/models/generator/util/include/G4ExcitedStringVector.hh +++ b/source/processes/hadronic/models/generator/util/include/G4ExcitedStringVector.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ExcitedStringVector.hh,v 1.1.8.1.2.1 1999/12/07 20:51:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ExcitedStringVector.hh,v 1.3 1999/12/15 14:52:50 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4ExcitedStringVector_h #define G4ExcitedStringPartonVector_h 1 diff --git a/source/processes/hadronic/models/generator/util/include/G4Fancy3DNucleus.hh b/source/processes/hadronic/models/generator/util/include/G4Fancy3DNucleus.hh index b7aa2a7f4a..9c1defead7 100644 --- a/source/processes/hadronic/models/generator/util/include/G4Fancy3DNucleus.hh +++ b/source/processes/hadronic/models/generator/util/include/G4Fancy3DNucleus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Fancy3DNucleus.hh,v 1.4.6.1.2.1 1999/12/07 20:51:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Fancy3DNucleus.hh,v 1.6 1999/12/15 14:52:50 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4Fancy3DNucleus_h #define G4Fancy3DNucleus_h 1 diff --git a/source/processes/hadronic/models/generator/util/include/G4FermiMomentum.hh b/source/processes/hadronic/models/generator/util/include/G4FermiMomentum.hh index 6bf6b005bc..b94e3dbe37 100644 --- a/source/processes/hadronic/models/generator/util/include/G4FermiMomentum.hh +++ b/source/processes/hadronic/models/generator/util/include/G4FermiMomentum.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4FermiMomentum.hh,v 1.1.10.1 1999/12/07 20:51:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4FermiMomentum.hh,v 1.2 1999/12/15 14:52:50 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 cf8e223015..5e764e3481 100644 --- a/source/processes/hadronic/models/generator/util/include/G4Fragment.hh +++ b/source/processes/hadronic/models/generator/util/include/G4Fragment.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Fragment.hh,v 1.5.6.1.2.1.2.3 1999/12/14 07:08:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Fragment.hh,v 1.7 1999/12/15 14:52:50 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (May 1998) diff --git a/source/processes/hadronic/models/generator/util/include/G4FragmentVector.hh b/source/processes/hadronic/models/generator/util/include/G4FragmentVector.hh index 8be003d490..5efb4a9a2d 100644 --- a/source/processes/hadronic/models/generator/util/include/G4FragmentVector.hh +++ b/source/processes/hadronic/models/generator/util/include/G4FragmentVector.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4FragmentVector.hh,v 1.1.10.1 1999/12/07 20:51:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4FragmentVector.hh,v 1.2 1999/12/15 14:52:50 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 fb55dd6607..03080b925a 100644 --- a/source/processes/hadronic/models/generator/util/include/G4GeneralPhaseSpaceDecay.hh +++ b/source/processes/hadronic/models/generator/util/include/G4GeneralPhaseSpaceDecay.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4GeneralPhaseSpaceDecay.hh,v 1.2.4.1 1999/12/07 20:51:58 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4GeneralPhaseSpaceDecay.hh,v 1.3 1999/12/15 14:52:50 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 64b93bb186..ae5cb04633 100644 --- a/source/processes/hadronic/models/generator/util/include/G4KineticTrack.hh +++ b/source/processes/hadronic/models/generator/util/include/G4KineticTrack.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4KineticTrack.hh,v 1.1.10.1 1999/12/07 20:51:59 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4KineticTrack.hh,v 1.3 1999/12/15 14:52:50 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: G4KineticTrack.hh,v 1.0 1998/05/20 // ----------------------------------------------------------------------------- @@ -35,10 +35,6 @@ class G4KineticTrackVector; -G4double G4KineticTrackIntegrandFunction1 (G4double xmass); - -G4double G4KineticTrackIntegrandFunction2 (G4double xmass); - class G4KineticTrack : public G4VKineticNucleon @@ -80,16 +76,17 @@ class G4KineticTrack : public G4VKineticNucleon G4KineticTrackVector* Decay(); - + // LB move to public (before was private) LB + G4double* GetActualWidth() const; private: + G4int GetnChannels() const; void SetnChannels(const G4int aChannel); G4double GetActualMass() const; - G4double* GetActualWidth() const; void SetActualWidth(G4double* anActualWidth); G4double EvaluateTotalActualWidth(); @@ -101,14 +98,25 @@ class G4KineticTrack : public G4VKineticNucleon G4double IntegrateCMMomentum(const G4double polemass) const; + G4double IntegrateCMMomentum2() const; public: - friend G4double G4KineticTrackIntegrandFunction1 (G4double xmass); + G4double BrWig(const G4double Gamma, + const G4double rmass, + const G4double mass) const; - friend G4double G4KineticTrackIntegrandFunction2 (G4double xmass); + friend G4double IntegrandFunction1 (G4double xmass); + + friend G4double IntegrandFunction2 (G4double xmass); + + friend G4double IntegrandFunction3 (G4double xmass); + + friend G4double IntegrandFunction4 (G4double xmass); + // LB new variable created LB + G4int chosench; private: @@ -261,11 +269,23 @@ inline G4double G4KineticTrack::SampleResidualLifetime() inline G4double G4KineticTrack::EvaluateCMMomentum(const G4double m, const G4double* m_ij) const { - G4double theCMMomentum = 1 / (2 * m) * + G4double theCMMomentum; + if((m_ij[0]+m_ij[1])theA-G4int(theA) ) ? G4int(theA) : G4int(theA)+1; theNucleons = new G4Nucleon[myA]; diff --git a/source/processes/hadronic/models/generator/util/src/G4FermiMomentum.cc b/source/processes/hadronic/models/generator/util/src/G4FermiMomentum.cc index a5268986bb..b2bd01d352 100644 --- a/source/processes/hadronic/models/generator/util/src/G4FermiMomentum.cc +++ b/source/processes/hadronic/models/generator/util/src/G4FermiMomentum.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4FermiMomentum.cc,v 1.1.10.1 1999/12/07 20:52:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4FermiMomentum.cc,v 1.2 1999/12/15 14:52:51 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 efecef2573..85ea641885 100644 --- a/source/processes/hadronic/models/generator/util/src/G4Fragment.cc +++ b/source/processes/hadronic/models/generator/util/src/G4Fragment.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Fragment.cc,v 1.4.8.1.2.3 1999/12/09 17:45:00 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Fragment.cc,v 1.6 1999/12/15 17:51:28 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (May 1998) diff --git a/source/processes/hadronic/models/generator/util/src/G4GeneralPhaseSpaceDecay.cc b/source/processes/hadronic/models/generator/util/src/G4GeneralPhaseSpaceDecay.cc index 61b841e810..157a925545 100644 --- a/source/processes/hadronic/models/generator/util/src/G4GeneralPhaseSpaceDecay.cc +++ b/source/processes/hadronic/models/generator/util/src/G4GeneralPhaseSpaceDecay.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4GeneralPhaseSpaceDecay.cc,v 1.1.10.1.2.1 1999/12/08 17:34:44 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4GeneralPhaseSpaceDecay.cc,v 1.2 1999/12/15 14:52:51 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: G4GeneralSpaceDecay.cc,v 1.0 1998/05/21 // ---------------------------------------------------------------- diff --git a/source/processes/hadronic/models/generator/util/src/G4KineticTrack.cc b/source/processes/hadronic/models/generator/util/src/G4KineticTrack.cc index db31616dcc..3053a35cf8 100644 --- a/source/processes/hadronic/models/generator/util/src/G4KineticTrack.cc +++ b/source/processes/hadronic/models/generator/util/src/G4KineticTrack.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4KineticTrack.cc,v 1.3.8.1.2.1 1999/12/08 17:34:44 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4KineticTrack.cc,v 1.8 2000/06/09 13:59:56 jwellisc Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: G4KineticTrack.cc,v 1.0 1998/05/20 // ----------------------------------------------------------------------------- @@ -33,6 +33,12 @@ #include "G4DecayProducts.hh" #include "G4LorentzRotation.hh" +// +// Some static clobal for integration +// + +static G4double G4KineticTrack_Gmass, G4KineticTrack_Gmass1, G4KineticTrack_Gmass2,G4KineticTrack_Ggamma1,G4KineticTrack_Ggamma2,G4KineticTrack_xmass1; + // // Default constructor // @@ -96,7 +102,6 @@ G4KineticTrack::G4KineticTrack(const G4KineticTrack &right) } - // // By argument constructor // @@ -150,16 +155,18 @@ G4KineticTrack::G4KineticTrack(G4ParticleDefinition* aDefinition, if(nChannels!=0) theActualWidth = new G4double[nChannels]; + // 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) { - G4double thePoleMass = theDefinition->GetPDGMass(); - G4double thePoleWidth = theChannel->GetBR(); + G4double thePoleMass = theDefinition->GetPDGMass(); + theMotherWidth = theDefinition->GetPDGWidth(); + G4double thePoleWidth = theChannel->GetBR()*theMotherWidth; G4ParticleDefinition* aDaughter; theDaughterMass = new G4double[nDaughters]; theDaughterWidth = new G4double[nDaughters]; @@ -183,30 +190,59 @@ G4KineticTrack::G4KineticTrack(G4ParticleDefinition* aDefinition, if ( !theDaughterIsShortLived[0] && !theDaughterIsShortLived[1] ) { -// G4cout << G4endl << "Both the " << nDaughters << -// " decay products are stable!"; + // 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!"; + // 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!"; + // " 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!!! @@ -215,8 +251,22 @@ G4KineticTrack::G4KineticTrack(G4ParticleDefinition* aDefinition, 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] ) @@ -224,14 +274,33 @@ G4KineticTrack::G4KineticTrack(G4ParticleDefinition* aDefinition, // 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; - /* @@@@@@ code has to be implemented */ +// 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; G4double theMomRatio = theActualMom / thePoleMom; - G4int l = 1; /* code has to be made more general */ + G4int l = 0; /* code has to be made more general */ // // Evaluate tha "actual widths" @@ -239,7 +308,12 @@ G4KineticTrack::G4KineticTrack(G4ParticleDefinition* aDefinition, theActualWidth[index] = thePoleWidth * theMassRatio * pow(theMomRatio, (2 * l + 1)) * - (1.2 / (0.2 + pow(theMomRatio, (2 * l)))); + (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 = NULL; @@ -248,7 +322,8 @@ G4KineticTrack::G4KineticTrack(G4ParticleDefinition* aDefinition, } else { - theActualWidth[index] = theChannel->GetBR(); + theMotherWidth = theDefinition->GetPDGWidth(); + theActualWidth[index] = theChannel->GetBR()*theMotherWidth; } } @@ -291,12 +366,12 @@ const G4KineticTrack& G4KineticTrack::operator=(const G4KineticTrack& right) thePosition = right.GetPosition(); the4Momentum = right.Get4Momentum(); if (theActualWidth != NULL) delete [] theActualWidth; + nChannels = right.GetnChannels(); theActualWidth = new G4double[nChannels]; for (i = 0; i < nChannels; i++) { theActualWidth[i] = right.theActualWidth[i]; } - nChannels = right.GetnChannels(); } return *this; } @@ -322,6 +397,10 @@ G4KineticTrackVector* G4KineticTrack::Decay() // // Select a possible decay channel // + // G4int index1; + // for (index1 = nChannels - 1; index1 >= 0; index1--) + // cout << "DECAY Actual Width IND/ActualW " << index1 << " " << theActualWidth[index1] << G4endl; + // cout << "DECAY Actual Mass " << theActualMass << G4endl; G4double theTotalActualWidth = this->EvaluateTotalActualWidth(); if (theTotalActualWidth !=0) @@ -333,7 +412,10 @@ G4KineticTrackVector* G4KineticTrack::Decay() { theSumActualWidth += theActualWidth[index]; theCumActualWidth[index] = theSumActualWidth; - } + // cout << "DECAY Cum. Width " << index << " " << theCumActualWidth[index] << G4endl; + } + // cout << "DECAY Total Width " << theSumActualWidth << G4endl; + // cout << "DECAY Total Width " << theTotalActualWidth << G4endl; G4double r = theTotalActualWidth * G4UniformRand(); G4ParticleDefinition* theDefinition = this->GetDefinition(); G4DecayTable* theDecayTable = theDefinition->GetDecayTable(); @@ -343,6 +425,8 @@ G4KineticTrackVector* G4KineticTrack::Decay() if (r < theCumActualWidth[index]) { theDecayChannel = theDecayTable->GetDecayChannel(index); + // cout << "DECAY SELECTED CHANNEL" << index << G4endl; + chosench=index; break; } } @@ -350,6 +434,8 @@ G4KineticTrackVector* G4KineticTrack::Decay() G4String theParentName = theDecayChannel->GetParentName(); G4double theParentMass = this->GetActualMass(); G4double theBR = theActualWidth[index]; + // cout << "**BR*** DECAYNEW " << theBR << G4endl; + // cout << "**PMass*** DECAYNEW " << theParentMass << G4endl; G4int theNumberOfDaughters = theDecayChannel->GetNumberOfDaughters(); G4String theDaughtersName1 = ""; G4String theDaughtersName2 = ""; @@ -419,67 +505,141 @@ G4KineticTrackVector* G4KineticTrack::Decay() } } - - -G4double G4KineticTrackIntegrandFunction1(G4double xmass) +G4double G4KineticTrack_IntegrandFunction1(G4double xmass) { - G4double result = 1.0; -// G4double mass = theActualMass; /* the actual mass value */ -// G4double mass1 = theDaughterMass[0]; -// G4double mass2 = theDaughterMass[1]; -// G4double gamma2 = theDaughtherWidth[1]; -// result = (mass1 / (2 * mass)) * -// sqrt(((mass * mass) - (mass1 + xmass) * (mass1 + xmass)) * -// ((mass * mass) - (mass1 - xmass) * (mass1 - xmass))) * -// twopi * (gamma2 / ((mass1 - xmass) * (mass2 - xmass) + ((gamma2 * gamma2) / 4))); + // 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); return result; } -G4double G4KineticTrackIntegrandFunction2(G4double xmass) +G4double G4KineticTrack_IntegrandFunction2(G4double xmass) { - G4double result = 2.0; -// G4double mass = theDefinition->GetPDGMass(); /* the pole mass value */ -// G4double mass1 = theDaughterMass[0]; -// G4double mass2 = theDaughterMass[1]; -// G4double gamma2 = theDaughtherWidth[1]; -// result = (mass1 / (2 * mass)) * -// sqrt(((mass * mass) - (mass1 + xmass) * (mass1 + xmass)) * -// ((mass * mass) - (mass1 - xmass) * (mass1 - xmass))) * -// twopi * (gamma2 / ((mass1 - xmass) * (mass2 - xmass) + ((gamma2 * gamma2) / 4))); -// + // 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; } +G4double G4KineticTrack_IntegrandFunction3(G4double xmass) +{ + 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; +} +G4double G4KineticTrack_IntegrandFunction4(G4double xmass) +{ + 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; +} G4double G4KineticTrack::IntegrateCMMomentum() const { G4double theLowerLimit = 0.0; G4double theUpperLimit = theActualMass - theDaughterMass[0]; G4int nIterations = 100; - G4SimpleIntegration theIntegrandMomentum(&G4KineticTrackIntegrandFunction1); - G4double theIntegralOverMass2 = theIntegrandMomentum.Simpson(theLowerLimit, + G4SimpleIntegration theIntegrandMomentum(&G4KineticTrack_IntegrandFunction1); + G4double theIntegralOverMass2; + if(theUpperLimit>0.) + theIntegralOverMass2 = theIntegrandMomentum.Simpson(theLowerLimit, theUpperLimit, nIterations); + else + theIntegralOverMass2 = 0.; -// G4cout << G4endl << "Inside IntegrateCMMomentum (actual mass case): "; -// G4cout << G4endl << " Integration result = " << theIntegralOverMass2; - + // G4cout << G4endl << "Inside IntegrateCMMomentum (actual mass case): "; + // G4cout << G4endl << " Integration result = " << theIntegralOverMass2 << G4endl ; return theIntegralOverMass2; } G4double G4KineticTrack::IntegrateCMMomentum(const G4double polemass) const { G4double theLowerLimit = 0.0; - G4double theUpperLimit = theActualMass - theDaughterMass[0]; + G4double theUpperLimit = polemass - theDaughterMass[0]; G4int nIterations = 100; - G4SimpleIntegration theIntegrandMomentum(&G4KineticTrackIntegrandFunction2); - G4double theIntegralOverMass2 = theIntegrandMomentum.Simpson(theLowerLimit, + G4SimpleIntegration theIntegrandMomentum(&G4KineticTrack_IntegrandFunction1); + G4double theIntegralOverMass2; + if(theUpperLimit>0.) + theIntegralOverMass2 = theIntegrandMomentum.Simpson(theLowerLimit, theUpperLimit, - nIterations); + nIterations); + else + theIntegralOverMass2 = 0.; -// G4cout << G4endl << "Inside IntegrateCMMomentum (pole mass case): "; -// G4cout << G4endl << " Integration result = " << theIntegralOverMass2; + // 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; +} + + + + + + + + diff --git a/source/processes/hadronic/models/generator/util/src/G4NuclearFermiDensity.cc b/source/processes/hadronic/models/generator/util/src/G4NuclearFermiDensity.cc index fac8620544..6ed755f786 100644 --- a/source/processes/hadronic/models/generator/util/src/G4NuclearFermiDensity.cc +++ b/source/processes/hadronic/models/generator/util/src/G4NuclearFermiDensity.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4NuclearFermiDensity.cc,v 1.1.10.1 1999/12/07 20:52:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4NuclearFermiDensity.cc,v 1.6 2000/05/23 13:41:42 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4NuclearFermiDensity.hh" @@ -14,11 +14,12 @@ G4NuclearFermiDensity::G4NuclearFermiDensity(G4double anA, G4double aZ) : a(0.545 * fermi) { - const G4double r0=1.14*fermi; - theA = anA; - theZ = aZ; +// const G4double r0=1.14*fermi; + const G4double r0=1.16 * ( 1. - 1.16 * pow(anA, -2./3.)) * fermi; + theA = G4int(anA); + theZ = G4int(aZ); theR= r0 * pow(theA, 1./3. ); - Setrho0(3./4./pi/pow(r0,3.)/theA * ( 1. + sqr(a/theR)*pi2 )); + Setrho0(3./ (4. * pi * pow(r0,3.) * theA * ( 1. + sqr(a/theR)*pi2 ))); } G4NuclearFermiDensity::~G4NuclearFermiDensity() {} @@ -33,4 +34,8 @@ G4double G4NuclearFermiDensity::GetRadius(const G4double maxRelativeDensity) return (maxRelativeDensity>0 && maxRelativeDensity <= 1 ) ? (theR + a*log((1-maxRelativeDensity+exp(-1*theR/a))/maxRelativeDensity)) : DBL_MAX; } - + +G4double G4NuclearFermiDensity::GetDeriv(const G4ThreeVector & aPosition) +{ + return -exp((aPosition.mag()-theR)/a) * sqr(GetDensity(aPosition)) / (a*Getrho0()); +} diff --git a/source/processes/hadronic/models/generator/util/src/G4NuclearShellModelDensity.cc b/source/processes/hadronic/models/generator/util/src/G4NuclearShellModelDensity.cc index f93300f812..1b45a755c6 100644 --- a/source/processes/hadronic/models/generator/util/src/G4NuclearShellModelDensity.cc +++ b/source/processes/hadronic/models/generator/util/src/G4NuclearShellModelDensity.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4NuclearShellModelDensity.cc,v 1.1.10.1 1999/12/07 20:52:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4NuclearShellModelDensity.cc,v 1.4 2000/05/23 13:41:42 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4NuclearShellModelDensity.hh" @@ -14,8 +14,8 @@ G4NuclearShellModelDensity::G4NuclearShellModelDensity(G4double anA, G4double aZ) { const G4double r0sq=0.8133*fermi*fermi; - theA = anA; - theZ = aZ; + theA = G4int(anA); + theZ = G4int(aZ); theRsquare= r0sq * pow(theA, 2./3. ); Setrho0(pow(1./(pi*theRsquare),3./2.)); } @@ -34,3 +34,7 @@ G4double G4NuclearShellModelDensity::GetRadius(const G4double maxRelativeDensity sqrt(theRsquare * log(1/maxRelativeDensity) ) : DBL_MAX; } +G4double G4NuclearShellModelDensity::GetDeriv(const G4ThreeVector & aPosition) +{ + return -2* aPosition.mag() / theRsquare * GetDensity(aPosition); +} diff --git a/source/processes/hadronic/models/generator/util/src/G4Nucleon.cc b/source/processes/hadronic/models/generator/util/src/G4Nucleon.cc index 34df09731c..30f0a74e41 100644 --- a/source/processes/hadronic/models/generator/util/src/G4Nucleon.cc +++ b/source/processes/hadronic/models/generator/util/src/G4Nucleon.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Nucleon.cc,v 1.2.8.1.2.3 1999/12/14 07:08:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Nucleon.cc,v 1.3 1999/12/15 14:52:51 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 114d1cdc73..e8c4fc12a7 100644 --- a/source/processes/hadronic/models/generator/util/src/G4Parton.cc +++ b/source/processes/hadronic/models/generator/util/src/G4Parton.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Parton.cc,v 1.3.8.1.2.2 1999/12/09 17:44:08 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Parton.cc,v 1.5 1999/12/15 17:51:29 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEAntiKaonZeroInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEAntiKaonZeroInelastic.hh index 28aca2b8b7..1c3af1f50d 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiKaonZeroInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiKaonZeroInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEAntiKaonZeroInelastic.hh,v 1.2.8.1 1999/12/07 20:52:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEAntiKaonZeroInelastic.hh,v 1.3 1999/12/15 14:52:52 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 50c6b13c86..f33ba5c0f6 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiLambdaInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiLambdaInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEAntiLambdaInelastic.hh,v 1.2.8.1 1999/12/07 20:52:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEAntiLambdaInelastic.hh,v 1.3 1999/12/15 14:52:52 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 468e8dfede..fd0391bb61 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiNeutronInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiNeutronInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEAntiNeutronInelastic.hh,v 1.2.8.1 1999/12/07 20:52:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEAntiNeutronInelastic.hh,v 1.3 1999/12/15 14:52:52 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 4e4dead6cd..62fb4d30bd 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiOmegaMinusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiOmegaMinusInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEAntiOmegaMinusInelastic.hh,v 1.2.8.1 1999/12/07 20:52:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEAntiOmegaMinusInelastic.hh,v 1.3 1999/12/15 14:52:52 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 cdcfb7f3db..e3b38f8b9d 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiProtonInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiProtonInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEAntiProtonInelastic.hh,v 1.2.8.1 1999/12/07 20:52:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEAntiProtonInelastic.hh,v 1.3 1999/12/15 14:52:52 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 3bd4ed7fd5..7cd1465fc2 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaMinusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaMinusInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEAntiSigmaMinusInelastic.hh,v 1.2.8.1 1999/12/07 20:52:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEAntiSigmaMinusInelastic.hh,v 1.3 1999/12/15 14:52:52 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 d60e6c02a5..9cb192d8f4 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaPlusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaPlusInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEAntiSigmaPlusInelastic.hh,v 1.2.8.1 1999/12/07 20:52:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEAntiSigmaPlusInelastic.hh,v 1.3 1999/12/15 14:52:52 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 349fce5c78..42b08cd529 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaZeroInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaZeroInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEAntiSigmaZeroInelastic.hh,v 1.2.8.1 1999/12/07 20:52:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEAntiSigmaZeroInelastic.hh,v 1.3 1999/12/15 14:52:52 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 55754abf26..3d83b62615 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiXiMinusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiXiMinusInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEAntiXiMinusInelastic.hh,v 1.2.8.1 1999/12/07 20:52:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEAntiXiMinusInelastic.hh,v 1.3 1999/12/15 14:52:52 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 72b38a22ed..b90320debe 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiXiZeroInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiXiZeroInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEAntiXiZeroInelastic.hh,v 1.2.8.1 1999/12/07 20:52:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEAntiXiZeroInelastic.hh,v 1.3 1999/12/15 14:52:52 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 eae5329f06..b23576e8f2 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEInelastic.hh,v 1.2.8.1 1999/12/07 20:52:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEInelastic.hh,v 1.3 1999/12/15 14:52:52 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 2e40387eaf..70f2901569 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEKaonMinusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEKaonMinusInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEKaonMinusInelastic.hh,v 1.2.8.1 1999/12/07 20:52:03 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEKaonMinusInelastic.hh,v 1.3 1999/12/15 14:52:52 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 1e00d91e09..7f4daa9834 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEKaonPlusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEKaonPlusInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEKaonPlusInelastic.hh,v 1.2.8.1 1999/12/07 20:52:03 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEKaonPlusInelastic.hh,v 1.3 1999/12/15 14:52:53 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 0b6f474356..f2c3b1d56e 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEKaonZeroInelastic.hh,v 1.2.8.1 1999/12/07 20:52:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEKaonZeroInelastic.hh,v 1.3 1999/12/15 14:52:53 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 d4d2a50a09..29831bee3e 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroLongInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroLongInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEKaonZeroLongInelastic.hh,v 1.2.8.1 1999/12/07 20:52:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEKaonZeroLongInelastic.hh,v 1.3 1999/12/15 14:52:53 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 627a590380..043f1a1228 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroShortInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroShortInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEKaonZeroShortInelastic.hh,v 1.2.8.1 1999/12/07 20:52:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEKaonZeroShortInelastic.hh,v 1.3 1999/12/15 14:52:53 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 02b608b9a5..ba56282cf5 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HELambdaInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HELambdaInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HELambdaInelastic.hh,v 1.2.8.1 1999/12/07 20:52:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HELambdaInelastic.hh,v 1.3 1999/12/15 14:52:53 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 4e4c42328d..7bb894d86d 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HENeutronInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HENeutronInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HENeutronInelastic.hh,v 1.2.8.1 1999/12/07 20:52:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HENeutronInelastic.hh,v 1.3 1999/12/15 14:52:54 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 988617b667..b614e880a3 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEOmegaMinusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEOmegaMinusInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEOmegaMinusInelastic.hh,v 1.2.8.1 1999/12/07 20:52:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEOmegaMinusInelastic.hh,v 1.3 1999/12/15 14:52:54 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 dd3e74b1e0..46b17fbd53 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEPionMinusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEPionMinusInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEPionMinusInelastic.hh,v 1.2.8.1 1999/12/07 20:52:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEPionMinusInelastic.hh,v 1.3 1999/12/15 14:52:54 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 b594e830d3..9b0cf27c50 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEPionPlusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEPionPlusInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEPionPlusInelastic.hh,v 1.2.8.1 1999/12/07 20:52:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEPionPlusInelastic.hh,v 1.3 1999/12/15 14:52:54 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 6425aa98a0..3fe892bbec 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEPlot.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEPlot.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEPlot.hh,v 1.2.8.1 1999/12/07 20:52:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEPlot.hh,v 1.3 1999/12/15 14:52:54 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 daedf01ca1..84fac80401 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEProtonInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEProtonInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEProtonInelastic.hh,v 1.2.8.1 1999/12/07 20:52:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEProtonInelastic.hh,v 1.3 1999/12/15 14:52:54 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 2bbdb83fcf..43ab79d268 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HESigmaMinusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HESigmaMinusInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HESigmaMinusInelastic.hh,v 1.2.8.1 1999/12/07 20:52:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HESigmaMinusInelastic.hh,v 1.3 1999/12/15 14:52:54 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 edb905fb54..4911802859 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HESigmaPlusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HESigmaPlusInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HESigmaPlusInelastic.hh,v 1.2.8.1 1999/12/07 20:52:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HESigmaPlusInelastic.hh,v 1.3 1999/12/15 14:52:54 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 49ff9224b7..997a3afa6d 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HESigmaZeroInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HESigmaZeroInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HESigmaZeroInelastic.hh,v 1.2.8.1 1999/12/07 20:52:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HESigmaZeroInelastic.hh,v 1.3 1999/12/15 14:52:54 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 265e723f8f..69381f61d5 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEVector.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEVector.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEVector.hh,v 1.2.8.1.2.1 1999/12/13 16:33:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEVector.hh,v 1.4 1999/12/15 16:42:00 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 492c64bbff..34073ef585 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEXiMinusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEXiMinusInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEXiMinusInelastic.hh,v 1.2.8.1 1999/12/07 20:52:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEXiMinusInelastic.hh,v 1.3 1999/12/15 14:52:54 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 11ed4ee314..0d2d412efe 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEXiZeroInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEXiZeroInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEXiZeroInelastic.hh,v 1.2.8.1 1999/12/07 20:52:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEXiZeroInelastic.hh,v 1.3 1999/12/15 14:52:54 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 3971bcb42b..182f6be8e2 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiKaonZeroInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiKaonZeroInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEAntiKaonZeroInelastic.cc,v 1.2.8.1.2.2 1999/12/10 15:42:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEAntiKaonZeroInelastic.cc,v 1.3 1999/12/15 14:52:55 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEAntiLambdaInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEAntiLambdaInelastic.cc index 1008c1a081..115436789d 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiLambdaInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiLambdaInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEAntiLambdaInelastic.cc,v 1.2.8.1.2.2 1999/12/10 15:42:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEAntiLambdaInelastic.cc,v 1.3 1999/12/15 14:52:55 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEAntiNeutronInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEAntiNeutronInelastic.cc index 03a61308fe..7fe61c1201 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiNeutronInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiNeutronInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEAntiNeutronInelastic.cc,v 1.2.8.1.2.2 1999/12/10 15:42:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEAntiNeutronInelastic.cc,v 1.3 1999/12/15 14:52:55 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEAntiOmegaMinusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEAntiOmegaMinusInelastic.cc index a819f5fb87..89b18c4f48 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiOmegaMinusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiOmegaMinusInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEAntiOmegaMinusInelastic.cc,v 1.2.8.1.2.2 1999/12/10 15:42:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEAntiOmegaMinusInelastic.cc,v 1.3 1999/12/15 14:52:55 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEAntiProtonInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEAntiProtonInelastic.cc index ff08ea0f6c..4aeb3a12de 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiProtonInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiProtonInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEAntiProtonInelastic.cc,v 1.2.8.1.2.2 1999/12/10 15:42:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEAntiProtonInelastic.cc,v 1.3 1999/12/15 14:52:55 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaMinusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaMinusInelastic.cc index c3b6746598..6afaee7599 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaMinusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaMinusInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEAntiSigmaMinusInelastic.cc,v 1.2.8.1.2.2 1999/12/10 15:42:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEAntiSigmaMinusInelastic.cc,v 1.3 1999/12/15 14:52:55 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaPlusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaPlusInelastic.cc index 58d3614439..56efbe7724 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaPlusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaPlusInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEAntiSigmaPlusInelastic.cc,v 1.2.8.1.2.2 1999/12/10 15:42:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEAntiSigmaPlusInelastic.cc,v 1.3 1999/12/15 14:52:55 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaZeroInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaZeroInelastic.cc index 559b66c533..ce712ccc40 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaZeroInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaZeroInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEAntiSigmaZeroInelastic.cc,v 1.2.8.1 1999/12/07 20:52:09 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEAntiSigmaZeroInelastic.cc,v 1.3 1999/12/15 14:52:55 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEAntiXiMinusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEAntiXiMinusInelastic.cc index 2cffd88042..99977f8255 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiXiMinusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiXiMinusInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEAntiXiMinusInelastic.cc,v 1.2.8.1.2.2 1999/12/10 15:42:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEAntiXiMinusInelastic.cc,v 1.3 1999/12/15 14:52:55 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEAntiXiZeroInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEAntiXiZeroInelastic.cc index 7d3f9822d9..925fbc87c9 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiXiZeroInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiXiZeroInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEAntiXiZeroInelastic.cc,v 1.2.8.1.2.2 1999/12/10 15:42:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEAntiXiZeroInelastic.cc,v 1.3 1999/12/15 14:52:55 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEInelastic.cc index a6df577ab1..e7d2f9c470 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEInelastic.cc,v 1.3.8.1.2.2 1999/12/10 15:42:09 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEInelastic.cc,v 1.4 1999/12/15 14:52:55 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEKaonMinusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEKaonMinusInelastic.cc index 8c26f22207..c2a7d80f5b 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEKaonMinusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEKaonMinusInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEKaonMinusInelastic.cc,v 1.2.8.1.2.2 1999/12/10 15:42:09 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEKaonMinusInelastic.cc,v 1.3 1999/12/15 14:52:56 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEKaonPlusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEKaonPlusInelastic.cc index 4384817f7a..5d82289216 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEKaonPlusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEKaonPlusInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEKaonPlusInelastic.cc,v 1.2.8.1.2.2 1999/12/10 15:42:09 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEKaonPlusInelastic.cc,v 1.3 1999/12/15 14:52:56 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroInelastic.cc index fea44e83d0..b856f4a37c 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEKaonZeroInelastic.cc,v 1.2.8.1.2.2 1999/12/10 15:42:09 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEKaonZeroInelastic.cc,v 1.3 1999/12/15 14:52:56 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroLongInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroLongInelastic.cc index aafcae7a59..bebb819fd3 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroLongInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroLongInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEKaonZeroLongInelastic.cc,v 1.2.8.1 1999/12/07 20:52:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEKaonZeroLongInelastic.cc,v 1.3 1999/12/15 14:52:56 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroShortInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroShortInelastic.cc index fd8eec2ea5..d47e2a6793 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroShortInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroShortInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEKaonZeroShortInelastic.cc,v 1.2.8.1 1999/12/07 20:52:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEKaonZeroShortInelastic.cc,v 1.3 1999/12/15 14:52:56 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HELambdaInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HELambdaInelastic.cc index a0dccc5e1b..5319ba3588 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HELambdaInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HELambdaInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HELambdaInelastic.cc,v 1.2.8.1.2.2 1999/12/10 15:42:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HELambdaInelastic.cc,v 1.3 1999/12/15 14:52:56 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HENeutronInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HENeutronInelastic.cc index 111055a175..0f0ff3b634 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HENeutronInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HENeutronInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HENeutronInelastic.cc,v 1.2.8.1.2.2 1999/12/10 15:42:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HENeutronInelastic.cc,v 1.3 1999/12/15 14:52:56 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEOmegaMinusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEOmegaMinusInelastic.cc index 0db67af67a..c6764277c7 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEOmegaMinusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEOmegaMinusInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEOmegaMinusInelastic.cc,v 1.2.8.1.2.2 1999/12/10 15:42:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEOmegaMinusInelastic.cc,v 1.3 1999/12/15 14:52:57 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEPionMinusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEPionMinusInelastic.cc index a34613b6a1..552c71e40f 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEPionMinusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEPionMinusInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEPionMinusInelastic.cc,v 1.2.8.1.2.2 1999/12/10 15:42:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEPionMinusInelastic.cc,v 1.3 1999/12/15 14:52:57 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEPionPlusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEPionPlusInelastic.cc index 8d25120456..dff1b3e6dc 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEPionPlusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEPionPlusInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEPionPlusInelastic.cc,v 1.2.8.1.2.2 1999/12/10 15:42:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEPionPlusInelastic.cc,v 1.3 1999/12/15 14:52:57 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEPlot.cc b/source/processes/hadronic/models/high_energy/src/G4HEPlot.cc index 06853047b6..d3c8cd4aa4 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEPlot.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEPlot.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEPlot.cc,v 1.2.8.1.2.1 1999/12/08 17:34:50 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEPlot.cc,v 1.3 1999/12/15 14:52:57 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEProtonInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEProtonInelastic.cc index ebf5a36044..693f8236e2 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEProtonInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEProtonInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEProtonInelastic.cc,v 1.2.8.1.2.2 1999/12/10 15:42:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEProtonInelastic.cc,v 1.3 1999/12/15 14:52:57 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HESigmaMinusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HESigmaMinusInelastic.cc index ad6590a3b3..ba2a324537 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HESigmaMinusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HESigmaMinusInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HESigmaMinusInelastic.cc,v 1.2.8.1.2.2 1999/12/10 15:42:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HESigmaMinusInelastic.cc,v 1.3 1999/12/15 14:52:57 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HESigmaPlusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HESigmaPlusInelastic.cc index 3f7f99ea91..51fa932588 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HESigmaPlusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HESigmaPlusInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HESigmaPlusInelastic.cc,v 1.2.8.1.2.2 1999/12/10 15:42:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HESigmaPlusInelastic.cc,v 1.3 1999/12/15 14:52:57 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HESigmaZeroInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HESigmaZeroInelastic.cc index 1e7fa79ff6..06fc441e05 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HESigmaZeroInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HESigmaZeroInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HESigmaZeroInelastic.cc,v 1.2.8.1 1999/12/07 20:52:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HESigmaZeroInelastic.cc,v 1.3 1999/12/15 14:52:57 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEVector.cc b/source/processes/hadronic/models/high_energy/src/G4HEVector.cc index f47172afd1..87b3037d68 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEVector.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEVector.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEVector.cc,v 1.2.8.1.2.3 1999/12/13 16:33:53 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEVector.cc,v 1.4 1999/12/15 16:42:01 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEXiMinusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEXiMinusInelastic.cc index aef714d0de..63c11a70a9 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEXiMinusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEXiMinusInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEXiMinusInelastic.cc,v 1.2.8.1.2.2 1999/12/10 15:42:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEXiMinusInelastic.cc,v 1.3 1999/12/15 14:52:57 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEXiZeroInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEXiZeroInelastic.cc index 207b30a1e2..721e3e9ebb 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEXiZeroInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEXiZeroInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HEXiZeroInelastic.cc,v 1.2.8.1.2.2 1999/12/10 15:42:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HEXiZeroInelastic.cc,v 1.3 1999/12/15 14:52:57 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/hadronic/models/isotope_production/include/G4NeutronElementIsoCrossSections.hh b/source/processes/hadronic/models/isotope_production/include/G4ElementIsoCrossSections.hh similarity index 55% rename from source/processes/hadronic/models/isotope_production/include/G4NeutronElementIsoCrossSections.hh rename to source/processes/hadronic/models/isotope_production/include/G4ElementIsoCrossSections.hh index cfa192512b..278e707462 100644 --- a/source/processes/hadronic/models/isotope_production/include/G4NeutronElementIsoCrossSections.hh +++ b/source/processes/hadronic/models/isotope_production/include/G4ElementIsoCrossSections.hh @@ -1,18 +1,18 @@ -#ifndef G4NeutronElementIsoCrossSections_h -#define G4NeutronElementIsoCrossSections_h +#ifndef G4ElementIsoCrossSections_h +#define G4ElementIsoCrossSections_h -#include "G4NeutronIsoIsoCrossSections.hh" #include "G4StableIsotopes.hh" #include "G4IsoResult.hh" #include "Randomize.hh" -class G4NeutronElementIsoCrossSections +template +class G4ElementIsoCrossSections { public: - G4NeutronElementIsoCrossSections(); - ~G4NeutronElementIsoCrossSections(); + G4ElementIsoCrossSections(); + ~G4ElementIsoCrossSections(); void Init(const G4Element * anElement); G4double GetCrossSection(G4double anEnergy); @@ -20,11 +20,13 @@ public: private: - G4NeutronIsoIsoCrossSections ** theData; + IsoIsoCrossSectionType ** theData; G4int nIsotopes; G4StableIsotopes theStableOnes; G4double crossSectionBuffer; }; +#include "G4ElementIsoCrossSections.icc" + #endif diff --git a/source/processes/hadronic/models/isotope_production/src/G4NeutronElementIsoCrossSections.cc b/source/processes/hadronic/models/isotope_production/include/G4ElementIsoCrossSections.icc similarity index 64% rename from source/processes/hadronic/models/isotope_production/src/G4NeutronElementIsoCrossSections.cc rename to source/processes/hadronic/models/isotope_production/include/G4ElementIsoCrossSections.icc index 783f6e5423..8759d63b33 100644 --- a/source/processes/hadronic/models/isotope_production/src/G4NeutronElementIsoCrossSections.cc +++ b/source/processes/hadronic/models/isotope_production/include/G4ElementIsoCrossSections.icc @@ -1,14 +1,16 @@ -#include "G4NeutronElementIsoCrossSections.hh" +#include "G4ElementIsoCrossSections.hh" -G4NeutronElementIsoCrossSections:: -G4NeutronElementIsoCrossSections() +template +G4ElementIsoCrossSections:: +G4ElementIsoCrossSections() { nIsotopes = 0; theData = NULL; } -G4NeutronElementIsoCrossSections:: -~G4NeutronElementIsoCrossSections() +template +G4ElementIsoCrossSections:: +~G4ElementIsoCrossSections() { for(G4int i=0; i +void G4ElementIsoCrossSections:: Init(const G4Element * anElement) { - G4int Z = anElement->GetZ(); + G4int Z = G4int(anElement->GetZ()+0.001); nIsotopes = anElement->GetNumberOfIsotopes(); G4bool useIsotopesFromElement = true; if( nIsotopes == 0 ) @@ -28,14 +31,14 @@ Init(const G4Element * anElement) nIsotopes += theStableOnes.GetNumberOfIsotopes(Z); useIsotopesFromElement = false; } - theData = new G4NeutronIsoIsoCrossSections * [nIsotopes]; + theData = new IsoIsoCrossSectionType * [nIsotopes]; if(useIsotopesFromElement) { for (G4int i=0; iGetIsotope(i)->GetN(); G4double frac = anElement->GetRelativeAbundanceVector()[i]/perCent; - theData[i] = new G4NeutronIsoIsoCrossSections; + theData[i] = new IsoIsoCrossSectionType; theData[i]->Init(A, Z, frac); } } @@ -46,25 +49,27 @@ Init(const G4Element * anElement) { G4int A = theStableOnes.GetIsotopeNucleonCount(first+i); G4double frac = theStableOnes.GetAbundance(first+i); - theData[i] = new G4NeutronIsoIsoCrossSections; + theData[i] = new IsoIsoCrossSectionType; theData[i]->Init(A, Z, frac); } } } -G4double G4NeutronElementIsoCrossSections:: +template +G4double G4ElementIsoCrossSections:: GetCrossSection(G4double anEnergy) { G4double result = 0; for(G4int i=0; iGetCrossSection(anEnergy); + result += theData[i]->GetCrossSection(anEnergy); // this is already weighted with relative abundance } crossSectionBuffer = result; return result; } -G4IsoResult * G4NeutronElementIsoCrossSections:: +template +G4IsoResult * G4ElementIsoCrossSections:: GetProductIsotope(G4double anEnergy) { G4double running = 0; diff --git a/source/processes/hadronic/models/isotope_production/include/G4NeutronIsoProdCrossSections.hh b/source/processes/hadronic/models/isotope_production/include/G4IsoProdCrossSections.hh similarity index 66% rename from source/processes/hadronic/models/isotope_production/include/G4NeutronIsoProdCrossSections.hh rename to source/processes/hadronic/models/isotope_production/include/G4IsoProdCrossSections.hh index aca1744a05..9cf8872aec 100644 --- a/source/processes/hadronic/models/isotope_production/include/G4NeutronIsoProdCrossSections.hh +++ b/source/processes/hadronic/models/isotope_production/include/G4IsoProdCrossSections.hh @@ -1,13 +1,13 @@ -#ifndef G4NeutronIsoProdCrossSections_h -#define G4NeutronIsoProdCrossSections_h +#ifndef G4IsoProdCrossSections_h +#define G4IsoProdCrossSections_h #include "globals.hh" #include "G4NeutronHPVector.hh" -class G4NeutronIsoProdCrossSections +class G4IsoProdCrossSections { public: - G4NeutronIsoProdCrossSections(G4String aString) + G4IsoProdCrossSections(G4String aString) { theProductName=aString; } void Init(G4std::ifstream & aDataSet); G4double GetProductionCrossSection(G4double anEnergy); diff --git a/source/processes/hadronic/models/isotope_production/include/G4NeutronElementCrossSections.hh b/source/processes/hadronic/models/isotope_production/include/G4NeutronElementCrossSections.hh deleted file mode 100644 index 3bab7616f4..0000000000 --- a/source/processes/hadronic/models/isotope_production/include/G4NeutronElementCrossSections.hh +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef G4NeutronElementCrossSections_h -#define G4NeutronElementCrossSections_h - -class G4NeutronElementCrossSections -{ - -public: - -private: - -}; -#endif diff --git a/source/processes/hadronic/models/isotope_production/include/G4NeutronIsoIsoCrossSections.hh b/source/processes/hadronic/models/isotope_production/include/G4NeutronIsoIsoCrossSections.hh index 5bad25154b..f818df8cbf 100644 --- a/source/processes/hadronic/models/isotope_production/include/G4NeutronIsoIsoCrossSections.hh +++ b/source/processes/hadronic/models/isotope_production/include/G4NeutronIsoIsoCrossSections.hh @@ -2,7 +2,7 @@ #define G4NeutronIsoIsoCrossSections_h #include "G4NeutronHPVector.hh" -#include "G4NeutronIsoProdCrossSections.hh" +#include "G4IsoProdCrossSections.hh" #include "G4NeutronHPNames.hh" class G4NeutronIsoIsoCrossSections @@ -22,7 +22,7 @@ public: private: G4int theNumberOfProducts; - G4NeutronIsoProdCrossSections ** theProductionData; + G4IsoProdCrossSections ** theProductionData; G4NeutronHPVector theCrossSection; G4NeutronHPNames theNames; G4bool hasData; diff --git a/source/processes/hadronic/models/isotope_production/include/G4NeutronIsotopeProduction.hh b/source/processes/hadronic/models/isotope_production/include/G4NeutronIsotopeProduction.hh index 1ad7fa0bfb..4c00f5649a 100644 --- a/source/processes/hadronic/models/isotope_production/include/G4NeutronIsotopeProduction.hh +++ b/source/processes/hadronic/models/isotope_production/include/G4NeutronIsotopeProduction.hh @@ -3,7 +3,8 @@ #include "globals.hh" #include "G4VIsotopeProduction.hh" -#include "G4NeutronElementIsoCrossSections.hh" +#include "G4ElementIsoCrossSections.hh" +#include "G4NeutronIsoIsoCrossSections.hh" #include "Randomize.hh" class G4NeutronIsotopeProduction : public G4VIsotopeProduction @@ -17,7 +18,7 @@ class G4NeutronIsotopeProduction : public G4VIsotopeProduction private: - G4NeutronElementIsoCrossSections ** theData; + G4ElementIsoCrossSections ** theData; G4int numberOfElements; }; diff --git a/source/processes/hadronic/models/isotope_production/include/G4ProtonIsoIsoCrossSections.hh b/source/processes/hadronic/models/isotope_production/include/G4ProtonIsoIsoCrossSections.hh new file mode 100644 index 0000000000..aa0b8f2305 --- /dev/null +++ b/source/processes/hadronic/models/isotope_production/include/G4ProtonIsoIsoCrossSections.hh @@ -0,0 +1,33 @@ +#ifndef G4ProtonIsoIsoCrossSections_h +#define G4ProtonIsoIsoCrossSections_h + +#include "G4NeutronHPVector.hh" +#include "G4IsoProdCrossSections.hh" +#include "G4NeutronHPNames.hh" + +class G4ProtonIsoIsoCrossSections +{ + +public: + + G4ProtonIsoIsoCrossSections(); + ~G4ProtonIsoIsoCrossSections(); + void Init(G4int A, G4int Z, G4double frac); + G4double GetCrossSection(G4double anEnergy); + G4String GetProductIsotope(G4double anEnergy); + + G4int GetZ() { return theZ; } + G4int GetA() { return theA; } + +private: + + G4int theNumberOfProducts; + G4IsoProdCrossSections ** theProductionData; + G4NeutronHPVector theCrossSection; + G4NeutronHPNames theNames; + G4bool hasData; + G4int theA; + G4int theZ; +}; + +#endif diff --git a/source/processes/hadronic/models/isotope_production/include/G4ProtonIsotopeProduction.hh b/source/processes/hadronic/models/isotope_production/include/G4ProtonIsotopeProduction.hh new file mode 100644 index 0000000000..c7127138d4 --- /dev/null +++ b/source/processes/hadronic/models/isotope_production/include/G4ProtonIsotopeProduction.hh @@ -0,0 +1,25 @@ +#ifndef G4ProtonIsotopeProduction_h +#define G4ProtonIsotopeProduction_h + +#include "globals.hh" +#include "G4VIsotopeProduction.hh" +#include "G4ElementIsoCrossSections.hh" +#include "G4ProtonIsoIsoCrossSections.hh" +#include "Randomize.hh" + +class G4ProtonIsotopeProduction : public G4VIsotopeProduction +{ + public: + + G4ProtonIsotopeProduction(); + ~G4ProtonIsotopeProduction(); + + G4IsoResult * GetIsotope(const G4Track & aTrack, const G4Nucleus & aNucleus); + + private: + + G4ElementIsoCrossSections ** theData; + G4int numberOfElements; +}; + +#endif diff --git a/source/processes/hadronic/models/isotope_production/src/G4NeutronIsoProdCrossSections.cc b/source/processes/hadronic/models/isotope_production/src/G4IsoProdCrossSection.cc similarity index 68% rename from source/processes/hadronic/models/isotope_production/src/G4NeutronIsoProdCrossSections.cc rename to source/processes/hadronic/models/isotope_production/src/G4IsoProdCrossSection.cc index 0465b0cdaf..397d8561c7 100644 --- a/source/processes/hadronic/models/isotope_production/src/G4NeutronIsoProdCrossSections.cc +++ b/source/processes/hadronic/models/isotope_production/src/G4IsoProdCrossSection.cc @@ -1,6 +1,6 @@ -#include "G4NeutronIsoProdCrossSections.hh" +#include "G4IsoProdCrossSections.hh" -void G4NeutronIsoProdCrossSections:: +void G4IsoProdCrossSections:: Init(G4std::ifstream & aDataSet) { G4int aNumberOfPoints; @@ -8,7 +8,7 @@ Init(G4std::ifstream & aDataSet) theProductionCrossSections.Init(aDataSet, aNumberOfPoints, eV); } -G4double G4NeutronIsoProdCrossSections:: +G4double G4IsoProdCrossSections:: GetProductionCrossSection(G4double anEnergy) { G4double result; @@ -16,7 +16,7 @@ GetProductionCrossSection(G4double anEnergy) return result; } -G4String G4NeutronIsoProdCrossSections:: +G4String G4IsoProdCrossSections:: GetProductIsotope() { return theProductName; diff --git a/source/processes/hadronic/models/isotope_production/src/G4NeutronIsoIsoCrossSections.cc b/source/processes/hadronic/models/isotope_production/src/G4NeutronIsoIsoCrossSections.cc index 69359fbe2d..2e1dfcf612 100644 --- a/source/processes/hadronic/models/isotope_production/src/G4NeutronIsoIsoCrossSections.cc +++ b/source/processes/hadronic/models/isotope_production/src/G4NeutronIsoIsoCrossSections.cc @@ -142,13 +142,13 @@ Init(G4int A, G4int Z, G4double frac) { G4std::ifstream aDataSet(aName, G4std::ios::in); aDataSet>>theNumberOfProducts; - theProductionData = new G4NeutronIsoProdCrossSections * [theNumberOfProducts]; + theProductionData = new G4IsoProdCrossSections * [theNumberOfProducts]; for(G4int i=0; i> aName; aDataSet >> dummy >> dummy; - theProductionData[i] = new G4NeutronIsoProdCrossSections(aName); + theProductionData[i] = new G4IsoProdCrossSections(aName); theProductionData[i]->Init(aDataSet); } } diff --git a/source/processes/hadronic/models/isotope_production/src/G4NeutronIsotopeProduction.cc b/source/processes/hadronic/models/isotope_production/src/G4NeutronIsotopeProduction.cc index ec70155d3e..6bc779feda 100644 --- a/source/processes/hadronic/models/isotope_production/src/G4NeutronIsotopeProduction.cc +++ b/source/processes/hadronic/models/isotope_production/src/G4NeutronIsotopeProduction.cc @@ -4,10 +4,10 @@ G4NeutronIsotopeProduction:: G4NeutronIsotopeProduction() { numberOfElements = G4Element::GetNumberOfElements(); - theData = new G4NeutronElementIsoCrossSections * [numberOfElements]; + theData = new G4ElementIsoCrossSections * [numberOfElements]; for(G4int i=0; i< numberOfElements; i++) { - theData[i] = new G4NeutronElementIsoCrossSections; + theData[i] = new G4ElementIsoCrossSections; if((*(G4Element::GetElementTable()))(i)->GetZ()>12 && (*(G4Element::GetElementTable()))(i)->GetZ()<84) // @@@@@@ workaround to ne fixed in G4NeutronHPNames. { diff --git a/source/processes/hadronic/models/low_energy/include/G4LCapture.hh b/source/processes/hadronic/models/low_energy/include/G4LCapture.hh index 7ee28ab7b7..ebd706adfb 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LCapture.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LCapture.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LCapture.hh,v 1.3.2.1 1999/12/07 20:52:15 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LCapture.hh,v 1.4 1999/12/15 14:53:04 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 82b3d35e31..549e456cb8 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEAlphaInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEAlphaInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEAlphaInelastic.hh,v 1.1.10.1 1999/12/07 20:52:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEAlphaInelastic.hh,v 1.2 1999/12/15 14:53:05 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 77190f4422..00b811410e 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEAntiLambdaInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEAntiLambdaInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEAntiLambdaInelastic.hh,v 1.1.10.1 1999/12/07 20:52:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEAntiLambdaInelastic.hh,v 1.2 1999/12/15 14:53:05 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 d3ca228331..8b1545a867 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEAntiNeutronInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEAntiNeutronInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEAntiNeutronInelastic.hh,v 1.1.10.1 1999/12/07 20:52:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEAntiNeutronInelastic.hh,v 1.2 1999/12/15 14:53:05 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 e3fc009775..ca79d0db54 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEAntiOmegaMinusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEAntiOmegaMinusInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEAntiOmegaMinusInelastic.hh,v 1.1.10.1 1999/12/07 20:52:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEAntiOmegaMinusInelastic.hh,v 1.2 1999/12/15 14:53:05 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 bf9ea7468b..6ff8b08f9e 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEAntiProtonInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEAntiProtonInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEAntiProtonInelastic.hh,v 1.1.10.1 1999/12/07 20:52:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEAntiProtonInelastic.hh,v 1.2 1999/12/15 14:53:05 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 b8fd924f75..de9124a0f7 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEAntiSigmaMinusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEAntiSigmaMinusInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEAntiSigmaMinusInelastic.hh,v 1.1.10.1 1999/12/07 20:52:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEAntiSigmaMinusInelastic.hh,v 1.2 1999/12/15 14:53:05 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 7cc0f1724b..baf90ec740 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEAntiSigmaPlusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEAntiSigmaPlusInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEAntiSigmaPlusInelastic.hh,v 1.1.10.1 1999/12/07 20:52:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEAntiSigmaPlusInelastic.hh,v 1.2 1999/12/15 14:53:05 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 7d545f61e0..dd052184d0 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEAntiXiMinusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEAntiXiMinusInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEAntiXiMinusInelastic.hh,v 1.1.10.1 1999/12/07 20:52:17 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEAntiXiMinusInelastic.hh,v 1.2 1999/12/15 14:53:05 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 44930d9978..737fbe7d76 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEAntiXiZeroInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEAntiXiZeroInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEAntiXiZeroInelastic.hh,v 1.1.10.1 1999/12/07 20:52:17 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEAntiXiZeroInelastic.hh,v 1.2 1999/12/15 14:53:05 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 81208c6548..972d84c979 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEDeuteronInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEDeuteronInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEDeuteronInelastic.hh,v 1.1.10.1 1999/12/07 20:52:17 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEDeuteronInelastic.hh,v 1.2 1999/12/15 14:53:05 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 b8cbefb818..249997e350 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEKaonMinusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEKaonMinusInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEKaonMinusInelastic.hh,v 1.1.10.1 1999/12/07 20:52:17 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEKaonMinusInelastic.hh,v 1.2 1999/12/15 14:53:05 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 959c521a22..c45c609f85 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEKaonPlusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEKaonPlusInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEKaonPlusInelastic.hh,v 1.1.10.1 1999/12/07 20:52:17 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEKaonPlusInelastic.hh,v 1.2 1999/12/15 14:53:05 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 2388cb2b80..09723400e6 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEKaonZeroLInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEKaonZeroLInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEKaonZeroLInelastic.hh,v 1.1.10.1 1999/12/07 20:52:17 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEKaonZeroLInelastic.hh,v 1.2 1999/12/15 14:53:05 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 f61a0ee176..589651cf7a 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEKaonZeroSInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEKaonZeroSInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEKaonZeroSInelastic.hh,v 1.1.10.1 1999/12/07 20:52:17 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEKaonZeroSInelastic.hh,v 1.2 1999/12/15 14:53:06 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 c9a8584686..492567b447 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LELambdaInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LELambdaInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LELambdaInelastic.hh,v 1.1.10.1 1999/12/07 20:52:18 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LELambdaInelastic.hh,v 1.2 1999/12/15 14:53:06 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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/G4LEOmegaMinusInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEOmegaMinusInelastic.hh index 5eb643613c..a7637ae45b 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEOmegaMinusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEOmegaMinusInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEOmegaMinusInelastic.hh,v 1.1.10.1 1999/12/07 20:52:18 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEOmegaMinusInelastic.hh,v 1.2 1999/12/15 14:53:06 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 2577979d62..dd803c8a97 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEPionMinusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEPionMinusInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEPionMinusInelastic.hh,v 1.1.10.1 1999/12/07 20:52:18 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEPionMinusInelastic.hh,v 1.2 1999/12/15 14:53:06 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 f578853ff5..40821f73ef 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEPionPlusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEPionPlusInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEPionPlusInelastic.hh,v 1.1.10.1 1999/12/07 20:52:18 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEPionPlusInelastic.hh,v 1.2 1999/12/15 14:53:06 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 3033c0e40f..b4c1c759a9 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEProtonInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEProtonInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEProtonInelastic.hh,v 1.1.10.1 1999/12/07 20:52:18 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEProtonInelastic.hh,v 1.2 1999/12/15 14:53:06 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 9915a066d2..93781f1b38 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LESigmaMinusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LESigmaMinusInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LESigmaMinusInelastic.hh,v 1.1.10.1 1999/12/07 20:52:18 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LESigmaMinusInelastic.hh,v 1.2 1999/12/15 14:53:06 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 32aaca4855..9d27c0c2a3 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LESigmaPlusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LESigmaPlusInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LESigmaPlusInelastic.hh,v 1.1.10.1 1999/12/07 20:52:18 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LESigmaPlusInelastic.hh,v 1.2 1999/12/15 14:53:06 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 e95a89546b..86dfa83447 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LETritonInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LETritonInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LETritonInelastic.hh,v 1.1.10.1 1999/12/07 20:52:18 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LETritonInelastic.hh,v 1.2 1999/12/15 14:53:06 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 bf651b7bab..0f240dd5a0 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEXiMinusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEXiMinusInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEXiMinusInelastic.hh,v 1.1.10.1 1999/12/07 20:52:18 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEXiMinusInelastic.hh,v 1.2 1999/12/15 14:53:06 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 cc622ea9f2..692512a763 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEXiZeroInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEXiZeroInelastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEXiZeroInelastic.hh,v 1.1.10.1 1999/12/07 20:52:18 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEXiZeroInelastic.hh,v 1.2 1999/12/15 14:53:06 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 41017ad0d4..e55effa5fe 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LElastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LElastic.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LElastic.hh,v 1.3.2.1 1999/12/07 20:52:19 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LElastic.hh,v 1.4 1999/12/15 14:53:06 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 daaab2bf43..774aefd3ef 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LFission.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LFission.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LFission.hh,v 1.3.2.1 1999/12/07 20:52:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LFission.hh,v 1.4 1999/12/15 14:53:06 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 9c23103d84..4ff7c3d983 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LCapture.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LCapture.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LCapture.cc,v 1.2.4.1.2.1 1999/12/08 17:34:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LCapture.cc,v 1.3 1999/12/15 14:53:07 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // G4 Model: Low-energy Neutron Capture diff --git a/source/processes/hadronic/models/low_energy/src/G4LEAlphaInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEAlphaInelastic.cc index 96f18a5fe2..d02cbafbd7 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEAlphaInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEAlphaInelastic.cc @@ -5,8 +5,6 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEAlphaInelastic.cc,v 1.1.10.1.2.1 1999/12/08 17:34:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ // // Hadronic Process: Alpha Inelastic Process // J.L. Chuma, TRIUMF, 25-Feb-1997 @@ -69,6 +67,7 @@ pd->SetDefinition( vec[i]->GetDefinition() ); pd->SetMomentum( vec[i]->GetMomentum() ); 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 f249a0fe1b..fa843c2633 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEAntiLambdaInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEAntiLambdaInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEAntiLambdaInelastic.cc,v 1.1.10.1.2.2 1999/12/10 15:42:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEAntiLambdaInelastic.cc,v 1.2 1999/12/15 14:53:07 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 c1d50a0309..bbeb80c8d5 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEAntiNeutronInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEAntiNeutronInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEAntiNeutronInelastic.cc,v 1.1.10.1.2.2 1999/12/10 15:42:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEAntiNeutronInelastic.cc,v 1.2 1999/12/15 14:53:07 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // Hadronic Process: AntiNeutron Inelastic Process // J.L. Chuma, TRIUMF, 18-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEAntiOmegaMinusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEAntiOmegaMinusInelastic.cc index f591c7c9ed..370f755d61 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEAntiOmegaMinusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEAntiOmegaMinusInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEAntiOmegaMinusInelastic.cc,v 1.1.10.1.2.2 1999/12/10 15:42:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEAntiOmegaMinusInelastic.cc,v 1.2 1999/12/15 14:53:07 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // Hadronic Process: AntiOmegaMinus Inelastic Process // J.L. Chuma, TRIUMF, 20-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEAntiProtonInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEAntiProtonInelastic.cc index 7e60e43caf..3ba8a42eda 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEAntiProtonInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEAntiProtonInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEAntiProtonInelastic.cc,v 1.1.10.1.2.2 1999/12/10 15:42:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEAntiProtonInelastic.cc,v 1.2 1999/12/15 14:53:07 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // Hadronic Process: AntiProton Inelastic Process // J.L. Chuma, TRIUMF, 13-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEAntiSigmaMinusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEAntiSigmaMinusInelastic.cc index 9636db9ada..eae965b786 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEAntiSigmaMinusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEAntiSigmaMinusInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEAntiSigmaMinusInelastic.cc,v 1.1.10.1.2.2 1999/12/10 15:42:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEAntiSigmaMinusInelastic.cc,v 1.2 1999/12/15 14:53:07 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 d30e1c92e2..714357c0a4 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEAntiSigmaPlusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEAntiSigmaPlusInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEAntiSigmaPlusInelastic.cc,v 1.1.10.1.2.2 1999/12/10 15:42:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEAntiSigmaPlusInelastic.cc,v 1.2 1999/12/15 14:53:07 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 5fc7a9b92a..15edda6f5d 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEAntiXiMinusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEAntiXiMinusInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEAntiXiMinusInelastic.cc,v 1.1.10.1.2.2 1999/12/10 15:42:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEAntiXiMinusInelastic.cc,v 1.2 1999/12/15 14:53:07 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 a936337cf8..5f93383441 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEAntiXiZeroInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEAntiXiZeroInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEAntiXiZeroInelastic.cc,v 1.1.10.1.2.2 1999/12/10 15:42:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEAntiXiZeroInelastic.cc,v 1.2 1999/12/15 14:53:07 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 2a6123bbc7..9ac2697eb3 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEDeuteronInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEDeuteronInelastic.cc @@ -5,8 +5,6 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEDeuteronInelastic.cc,v 1.1.10.1.2.1 1999/12/08 17:34:54 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ // // Hadronic Process: Deuteron Inelastic Process // J.L. Chuma, TRIUMF, 25-Feb-1997 @@ -69,6 +67,7 @@ pd->SetDefinition( vec[i]->GetDefinition() ); pd->SetMomentum( vec[i]->GetMomentum() ); theParticleChange.AddSecondary( pd ); + delete vec[i]; } return &theParticleChange; } diff --git a/source/processes/hadronic/models/low_energy/src/G4LEKaonMinusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEKaonMinusInelastic.cc index fec9da53da..74b1fde090 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEKaonMinusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEKaonMinusInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEKaonMinusInelastic.cc,v 1.1.10.1.2.2 1999/12/10 15:42:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEKaonMinusInelastic.cc,v 1.2 1999/12/15 14:53:08 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // Hadronic Process: Low Energy KaonMinus Inelastic Process // J.L. Chuma, TRIUMF, 12-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEKaonPlusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEKaonPlusInelastic.cc index 73ea4fb7d8..469e27b9c9 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEKaonPlusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEKaonPlusInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEKaonPlusInelastic.cc,v 1.1.10.1.2.2 1999/12/10 15:42:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEKaonPlusInelastic.cc,v 1.2 1999/12/15 14:53:08 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // Hadronic Process: Low Energy KaonPlus Inelastic Process // J.L. Chuma, TRIUMF, 05-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEKaonZeroLInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEKaonZeroLInelastic.cc index 371f478bd0..518635b103 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEKaonZeroLInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEKaonZeroLInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEKaonZeroLInelastic.cc,v 1.1.10.1.2.2 1999/12/10 15:42:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEKaonZeroLInelastic.cc,v 1.2 1999/12/15 14:53:08 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // Hadronic Process: Low Energy KaonZeroLong Inelastic Process // J.L. Chuma, TRIUMF, 11-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEKaonZeroSInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEKaonZeroSInelastic.cc index 874c8b7e91..44d363f59f 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEKaonZeroSInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEKaonZeroSInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEKaonZeroSInelastic.cc,v 1.1.10.1.2.2 1999/12/10 15:42:13 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEKaonZeroSInelastic.cc,v 1.2 1999/12/15 14:53:08 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 ce875d5967..6cca42c3bf 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LELambdaInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LELambdaInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LELambdaInelastic.cc,v 1.1.10.1.2.2 1999/12/10 15:42:13 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LELambdaInelastic.cc,v 1.2 1999/12/15 14:53:08 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 f18905c68a..21b7ff8fa5 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LENeutronInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LENeutronInelastic.cc @@ -5,8 +5,6 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LENeutronInelastic.cc,v 1.2.8.1.2.2 1999/12/10 15:42:13 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ // // Hadronic Process: Low Energy Neutron Inelastic Process // J.L. Chuma, TRIUMF, 04-Feb-1997 @@ -238,6 +236,7 @@ pd->SetDefinition( vec[i]->GetDefinition() ); pd->SetMomentum( vec[i]->GetMomentum() ); theParticleChange.AddSecondary( pd ); + delete vec[i]; } } diff --git a/source/processes/hadronic/models/low_energy/src/G4LEOmegaMinusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEOmegaMinusInelastic.cc index 3f165b22ff..c48e753b0f 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEOmegaMinusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEOmegaMinusInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEOmegaMinusInelastic.cc,v 1.1.10.1.2.2 1999/12/10 15:42:13 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEOmegaMinusInelastic.cc,v 1.2 1999/12/15 14:53:08 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // Hadronic Process: OmegaMinus Inelastic Process // J.L. Chuma, TRIUMF, 20-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEPionMinusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEPionMinusInelastic.cc index b52e20fc6a..5194ac2c01 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEPionMinusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEPionMinusInelastic.cc @@ -5,8 +5,6 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEPionMinusInelastic.cc,v 1.1.10.1.2.2 1999/12/10 15:42:13 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ // // Hadronic Process: PionMinus Inelastic Process // J.L. Chuma, TRIUMF, 19-Nov-1996 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEPionPlusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEPionPlusInelastic.cc index 11308575c5..d27d047147 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEPionPlusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEPionPlusInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEPionPlusInelastic.cc,v 1.1.10.1.2.2 1999/12/10 15:42:13 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEPionPlusInelastic.cc,v 1.2 1999/12/15 14:53:08 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // Hadronic Process: PionPlus Inelastic Process // J.L. Chuma, TRIUMF, 19-Nov-1996 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEProtonInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEProtonInelastic.cc index 446098337d..8eceb9f18f 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEProtonInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEProtonInelastic.cc @@ -5,8 +5,6 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEProtonInelastic.cc,v 1.1.10.1.2.2 1999/12/10 15:42:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ // // Hadronic Process: Low Energy Proton Inelastic Process // J.L. Chuma, TRIUMF, 19-Nov-1996 @@ -152,6 +150,7 @@ pd->SetDefinition( vec[i]->GetDefinition() ); pd->SetMomentum( vec[i]->GetMomentum() ); theParticleChange.AddSecondary( pd ); + delete vec[i]; } } diff --git a/source/processes/hadronic/models/low_energy/src/G4LESigmaMinusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LESigmaMinusInelastic.cc index 02569a6442..62c71d1b84 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LESigmaMinusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LESigmaMinusInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LESigmaMinusInelastic.cc,v 1.1.10.1.2.2 1999/12/10 15:42:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LESigmaMinusInelastic.cc,v 1.2 1999/12/15 14:53:08 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 e95fd9c031..451dab55f7 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LESigmaPlusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LESigmaPlusInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LESigmaPlusInelastic.cc,v 1.1.10.1.2.2 1999/12/10 15:42:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LESigmaPlusInelastic.cc,v 1.2 1999/12/15 14:53:09 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 48922c00a7..8e2e885cc4 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LETritonInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LETritonInelastic.cc @@ -4,9 +4,6 @@ // By copying, 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.cc,v 1.1.10.1.2.1 1999/12/08 17:34:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ // // Hadronic Process: Triton Inelastic Process // J.L. Chuma, TRIUMF, 25-Feb-1997 @@ -70,6 +67,7 @@ pd->SetDefinition( vec[i]->GetDefinition() ); pd->SetMomentum( vec[i]->GetMomentum() ); theParticleChange.AddSecondary( pd ); + delete vec[i]; } return &theParticleChange; diff --git a/source/processes/hadronic/models/low_energy/src/G4LEXiMinusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEXiMinusInelastic.cc index 7ec50267a4..1a8ad12542 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEXiMinusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEXiMinusInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEXiMinusInelastic.cc,v 1.1.10.1.2.2 1999/12/10 15:42:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEXiMinusInelastic.cc,v 1.2 1999/12/15 14:53:09 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 e1eaa1a526..15253aede4 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEXiZeroInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEXiZeroInelastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LEXiZeroInelastic.cc,v 1.1.10.1.2.2 1999/12/10 15:42:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LEXiZeroInelastic.cc,v 1.2 1999/12/15 14:53:09 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 1c4beb5e49..31802a2c6b 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LElastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LElastic.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LElastic.cc,v 1.2.4.1.2.2 1999/12/10 15:42:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LElastic.cc,v 1.3 1999/12/15 14:53:09 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // Physics model class G4LElastic // diff --git a/source/processes/hadronic/models/low_energy/src/G4LFission.cc b/source/processes/hadronic/models/low_energy/src/G4LFission.cc index 003e207a3f..71a5ac44c3 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LFission.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LFission.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LFission.cc,v 1.2.4.1.2.1 1999/12/08 17:34:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LFission.cc,v 1.3 1999/12/15 14:53:09 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // G4 Model: Low Energy Fission diff --git a/source/processes/hadronic/models/neutron_hp/include/G4InterpolationIterator.hh b/source/processes/hadronic/models/neutron_hp/include/G4InterpolationIterator.hh index aba77dd630..a56871eba3 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4InterpolationIterator.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4InterpolationIterator.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4InterpolationIterator.hh,v 1.3 1999/07/02 09:58:02 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 09b0c00476..dea5b617b7 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4InterpolationManager.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4InterpolationManager.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4InterpolationManager.hh,v 1.5 1999/12/15 14:53:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 c44ed276e8..c1e4f53bb3 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4InterpolationScheme.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4InterpolationScheme.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4InterpolationScheme.hh,v 1.2 1999/07/02 09:58:05 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 667aabdd70..a88516dfa9 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2AInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2AInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHP2AInelasticFS.hh,v 1.3 1999/07/02 09:58:07 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 81cbd3c2c2..17cfb19397 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2N2AInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2N2AInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHP2N2AInelasticFS.hh,v 1.3 1999/07/02 09:58:08 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 63812b838b..15753d81bb 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NAInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NAInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHP2NAInelasticFS.hh,v 1.3 1999/07/02 09:58:09 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 211bfc479a..5ba04b9236 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NDInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NDInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHP2NDInelasticFS.hh,v 1.3 1999/07/02 09:58:10 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 ab2eddc3f8..4516f33c6b 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHP2NInelasticFS.hh,v 1.3 1999/07/02 09:58:11 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 3f21ecad29..57791ace85 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NPInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NPInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHP2NPInelasticFS.hh,v 1.3 1999/07/02 09:58:13 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 53f11a6ad9..e6ef96ffd9 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2PInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2PInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHP2PInelasticFS.hh,v 1.3 1999/07/02 09:58:14 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 fc35d66803..b5544fd58d 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3AInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3AInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHP3AInelasticFS.hh,v 1.3 1999/07/02 09:58:15 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 73eddfd64c..33ce8031be 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NAInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NAInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHP3NAInelasticFS.hh,v 1.3 1999/07/02 09:58:16 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 af8d555872..745cd5b490 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHP3NInelasticFS.hh,v 1.3 1999/07/02 09:58:17 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 07da91c995..c18e0943d7 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NPInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NPInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHP3NPInelasticFS.hh,v 1.3 1999/07/02 09:58:19 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 ff7c7eae04..3836e68063 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP4NInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP4NInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHP4NInelasticFS.hh,v 1.3 1999/07/02 09:58:20 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 a30e311d2c..d8b563f61d 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPAInelasticFS.hh,v 1.3 1999/07/02 09:58:21 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 e6bee8de97..c6ba6b8b12 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAngular.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAngular.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPAngular.hh,v 1.4 1999/12/15 14:53:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 73f48ab513..cc231b6764 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAngularP.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAngularP.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPAngularP.hh,v 1.4 1999/12/15 14:53:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 3fe18c3a1e..f1f2ecf054 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPArbitaryTab.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPArbitaryTab.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPArbitaryTab.hh,v 1.4 1999/12/15 14:53:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4NeutronHPArbitaryTab_h #define G4NeutronHPArbitaryTab_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCapture.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCapture.hh index 964273261f..5b29b94b69 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCapture.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCapture.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPCapture.hh,v 1.2 1999/07/02 09:58:27 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 5d0c7986bf..1783c9b76f 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCaptureData.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCaptureData.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPCaptureData.hh,v 1.2 1999/07/02 09:58:28 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 037703010c..5b2a6f266a 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCaptureFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCaptureFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPCaptureFS.hh,v 1.4 1999/07/06 14:16:55 hpw Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 ab5277a3f2..a34e123433 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPChannel.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPChannel.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPChannel.hh,v 1.4 1999/07/06 16:56:21 stesting Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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/G4NeutronHPChannelList.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPChannelList.hh index c2d2887a4a..128a573e1f 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPChannelList.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPChannelList.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPChannelList.hh,v 1.2 1999/07/02 09:58:32 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 6b5862b149..3884f0382b 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPContAngularPar.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPContAngularPar.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPContAngularPar.hh,v 1.4 1999/12/15 14:53:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 4bbb51564c..c3683ed717 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPContEnergyAngular.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPContEnergyAngular.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPContEnergyAngular.hh,v 1.4 1999/12/15 14:53:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 9b73b3d05d..6d07bd36d1 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPD2AInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPD2AInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPD2AInelasticFS.hh,v 1.3 1999/07/02 09:58:35 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 d3fee98791..7446ba9c66 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDAInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDAInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPDAInelasticFS.hh,v 1.3 1999/07/02 09:58:36 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 14098f3f00..177164baaa 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPDInelasticFS.hh,v 1.3 1999/07/02 09:58:38 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 4cc13a4846..2be98b735d 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPData.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPData.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPData.hh,v 1.3 1999/12/15 14:53:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 c332ddce8c..46a95559ba 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDataPoint.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDataPoint.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPDataPoint.hh,v 1.3 1999/07/02 09:58:40 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4NeutronHPDataPoint_h #define G4NeutronHPDataPoint_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDeExGammas.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDeExGammas.hh index 55991cb25b..444579ce22 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDeExGammas.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDeExGammas.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPDeExGammas.hh,v 1.4 1999/12/15 14:53:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4NeutronHPDeExGammas_h #define G4NeutronHPDeExGammas_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDiscreteTwoBody.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDiscreteTwoBody.hh index f0cf85e550..943ee5218b 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDiscreteTwoBody.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDiscreteTwoBody.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPDiscreteTwoBody.hh,v 1.4 1999/12/15 14:53:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 de9c91bf78..e85a61659e 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElastic.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElastic.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPElastic.hh,v 1.2 1999/07/02 09:58:45 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 173d4fccbc..089093fba9 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElasticData.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElasticData.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPElasticData.hh,v 1.2 1999/07/02 09:58:46 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 f2db4391c9..23c546ed36 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPElasticFS.hh,v 1.3 1999/07/02 09:58:48 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 12e74fb4b2..799df40a7c 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElementData.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElementData.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPElementData.hh,v 1.3 1999/10/22 08:24:57 hpw Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 d8999cc438..9fd6bc95d9 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEnAngCorrelation.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEnAngCorrelation.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPEnAngCorrelation.hh,v 1.4 1999/12/15 14:53:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 1cc29f858c..c94d43a453 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEnergyDistribution.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEnergyDistribution.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPEnergyDistribution.hh,v 1.4 1999/12/15 14:53:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 a611ce4ed7..081b81e153 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEvapSpectrum.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEvapSpectrum.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPEvapSpectrum.hh,v 1.4 1999/12/15 14:53:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 4451b567e0..d18b456279 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFCFissionFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFCFissionFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPFCFissionFS.hh,v 1.3 1999/07/02 09:58:54 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 48c8b5735f..a508a0867a 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFSFissionFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFSFissionFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPFSFissionFS.hh,v 1.3 1999/07/02 09:58:55 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 be3f968f5d..7d9cfedd33 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFastLegendre.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFastLegendre.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPFastLegendre.hh,v 1.5 1999/12/15 14:53:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4NeutronHPFastLegendre_h #define G4NeutronHPFastLegendre_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPField.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPField.hh index 54d4696b2e..dd7d678a1e 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPField.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPField.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPField.hh,v 1.3 1999/07/02 09:58:58 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 593c381c7d..fecd895509 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFieldPoint.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFieldPoint.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPFieldPoint.hh,v 1.3 1999/07/02 09:58:59 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 42c3cc9491..9dd24afbfc 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFinalState.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFinalState.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPFinalState.hh,v 1.3 1999/07/02 09:59:00 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 8f3aa14d89..ff17466dd5 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFission.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFission.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPFission.hh,v 1.2 1999/07/02 09:59:01 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 3a98190ccc..f353bb34ff 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionBaseFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionBaseFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPFissionBaseFS.hh,v 1.3 1999/07/02 09:59:02 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 002e80e347..599f1fde75 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionData.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionData.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPFissionData.hh,v 1.2 1999/07/02 09:59:03 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 0cb54f8121..a1649f0551 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionERelease.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionERelease.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPFissionERelease.hh,v 1.4 1999/12/15 14:53:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 b46c935687..075c12d755 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPFissionFS.hh,v 1.3 1999/07/02 09:59:06 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 6490ccc5c7..44b37e426e 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionSpectrum.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionSpectrum.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPFissionSpectrum.hh,v 1.4 1999/12/15 14:53:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 05c7ca42d9..7e30c4f8bc 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPGamma.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPGamma.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPGamma.hh,v 1.4 1999/12/15 14:53:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4NeutronHPGamma_h #define G4NeutronHPGamma_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPHe3InelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPHe3InelasticFS.hh index 46d8b5f320..ede55028ed 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPHe3InelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPHe3InelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPHe3InelasticFS.hh,v 1.3 1999/07/02 09:59:09 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 19dec3d1d8..a34fb255a8 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelastic.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelastic.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPInelastic.hh,v 1.2 1999/07/02 09:59:10 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 4565e4e40e..2f704fc823 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticBaseFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticBaseFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPInelasticBaseFS.hh,v 1.3 1999/07/02 09:59:11 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 4a448cdc1d..c032074750 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticCompFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticCompFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPInelasticCompFS.hh,v 1.3 1999/07/02 09:59:12 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 55a67b0212..6ca27eabd3 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticData.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticData.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPInelasticData.hh,v 1.2 1999/07/02 09:59:14 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 4d8846132b..f8b2bcd424 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInterpolator.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInterpolator.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPInterpolator.hh,v 1.5 1999/12/15 14:53:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 0f7d0d220d..a34d405e23 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPIsoData.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPIsoData.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPIsoData.hh,v 1.6 1999/12/15 14:53:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 e68dae819e..b289cc1405 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPIsotropic.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPIsotropic.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPIsotropic.hh,v 1.4 1999/12/15 14:53:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 d259750fd2..caf106e26a 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPKallbachMannSyst.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPKallbachMannSyst.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPKallbachMannSyst.hh,v 1.3 1999/07/02 09:59:18 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 5f6db6288d..0d36900ad2 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLCFissionFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLCFissionFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPLCFissionFS.hh,v 1.3 1999/07/02 09:59:19 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 38c8dc5d55..8a040ab9b5 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLabAngularEnergy.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLabAngularEnergy.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPLabAngularEnergy.hh,v 1.4 1999/12/15 14:53:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 f92d401fff..6b307fe9fa 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLegendreStore.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLegendreStore.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPLegendreStore.hh,v 1.4 1999/12/15 14:53:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 a11a448cd9..a2b01e8a6c 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLegendreTable.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLegendreTable.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPLegendreTable.hh,v 1.4 1999/12/15 14:53:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 e9cf4159e9..cc90c20eb5 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLevel.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLevel.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPLevel.hh,v 1.4 1999/12/15 14:53:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 f22c3438bd..ea8acb075f 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPList.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPList.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPList.hh,v 1.4 1999/12/15 14:53:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4NeutronHPList_h #define G4NeutronHPList_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPMadlandNixSpectrum.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPMadlandNixSpectrum.hh index c17bec1cb6..67f1d00757 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPMadlandNixSpectrum.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPMadlandNixSpectrum.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPMadlandNixSpectrum.hh,v 1.4 1999/12/15 14:53:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 b6c59a8b62..f30a29ff20 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN2AInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN2AInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPN2AInelasticFS.hh,v 1.3 1999/07/02 09:59:27 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 a3fd762b8b..5e771a04e7 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN2PInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN2PInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPN2PInelasticFS.hh,v 1.3 1999/07/02 09:59:28 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 5dca212432..3cbcd89432 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN3AInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN3AInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPN3AInelasticFS.hh,v 1.3 1999/07/02 09:59:29 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 48d5fc4895..8087962c65 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNAInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNAInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPNAInelasticFS.hh,v 1.3 1999/07/02 09:59:30 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 06c9d45485..311597d6b9 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNBodyPhaseSpace.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNBodyPhaseSpace.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPNBodyPhaseSpace.hh,v 1.4 1999/12/15 14:53:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 ea449ebb9d..71aff4a6d2 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPND2AInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPND2AInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPND2AInelasticFS.hh,v 1.3 1999/07/02 09:59:33 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 bac7186953..8e30144beb 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNDInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNDInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPNDInelasticFS.hh,v 1.3 1999/07/02 09:59:34 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 02ff541dde..f97a8ab250 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNHe3InelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNHe3InelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPNHe3InelasticFS.hh,v 1.3 1999/07/02 09:59:35 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 7895ff0e3d..c2e04209b7 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPNInelasticFS.hh,v 1.3 1999/07/02 09:59:36 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 d7e5c1cf19..82f6a05496 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNPAInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNPAInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPNPAInelasticFS.hh,v 1.3 1999/07/02 09:59:37 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 d53f9f4dd8..60eb47be9f 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNPInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNPInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPNPInelasticFS.hh,v 1.3 1999/07/02 09:59:38 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 2fe1fdf178..b3a537f0c3 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNT2AInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNT2AInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPNT2AInelasticFS.hh,v 1.3 1999/07/02 09:59:40 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 e7f431f175..dd3143628f 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNTInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNTInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPNTInelasticFS.hh,v 1.3 1999/07/02 09:59:41 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 50abfc4de7..bc2873dd96 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNXInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNXInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPNXInelasticFS.hh,v 1.3 1999/07/02 09:59:42 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 8a1567629c..cfc5d65a1e 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNames.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNames.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPNames.hh,v 1.6 1999/12/15 14:53:13 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4NeutronHPNames_h #define G4NeutronHPNames_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNeutronYield.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNeutronYield.hh index 30e89931ae..20b11a2bdf 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNeutronYield.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNeutronYield.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPNeutronYield.hh,v 1.4 1999/12/15 14:53:13 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 1a42401b2d..ffbce4937d 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPAInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPAInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPPAInelasticFS.hh,v 1.3 1999/07/02 09:59:45 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 afe1f27c2b..620106e003 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPDInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPDInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPPDInelasticFS.hh,v 1.3 1999/07/02 09:59:46 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 bcc78bac24..7ab078adbe 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPPInelasticFS.hh,v 1.3 1999/07/02 09:59:47 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 97ada93cda..41a5c6e7ba 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPTInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPTInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPPTInelasticFS.hh,v 1.3 1999/07/02 09:59:49 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 537c66f263..7e591e9099 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPartial.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPartial.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPPartial.hh,v 1.4 1999/12/15 14:53:13 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4NeutronHPPartial_h #define G4NeutronHPPartial_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPhotonDist.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPhotonDist.hh index f46ee131f3..67a49587b8 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPhotonDist.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPhotonDist.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPPhotonDist.hh,v 1.4 1999/12/15 14:53:13 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 b4ded77d46..5ecb384307 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPhotonXSection.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPhotonXSection.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPPhotonXSection.hh,v 1.4 1999/12/15 14:53:13 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 958fc2fd1b..515a32111b 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPolynomExpansion.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPolynomExpansion.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPPolynomExpansion.hh,v 1.4 1999/12/15 14:53:13 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 72d7a37e9d..6c0d17d0f1 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPProduct.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPProduct.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPProduct.hh,v 1.4 1999/12/15 14:53:13 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 fa19143466..c82cd43999 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPSCFissionFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPSCFissionFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPSCFissionFS.hh,v 1.3 1999/07/02 09:59:56 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 0926ffb5ed..06e31f827a 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPSimpleEvapSpectrum.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPSimpleEvapSpectrum.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPSimpleEvapSpectrum.hh,v 1.4 1999/12/15 14:53:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 d4b3cf10e6..d7a1e73ca7 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPT2AInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPT2AInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPT2AInelasticFS.hh,v 1.3 1999/07/02 09:59:58 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 80fb5ebdcf..641b8611a5 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPTCFissionFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPTCFissionFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPTCFissionFS.hh,v 1.3 1999/07/02 09:59:59 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 a26f00585c..d3d5bfb3ed 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPTInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPTInelasticFS.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPTInelasticFS.hh,v 1.3 1999/07/02 10:00:00 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4NeutronHPTInelasticFS_h #define G4NeutronHPTInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPVector.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPVector.hh index 92f947e9e4..841d291068 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPVector.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPVector.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPVector.hh,v 1.8 1999/12/15 14:53:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4NeutronHPVector_h #define G4NeutronHPVector_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPWattSpectrum.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPWattSpectrum.hh index 7db079927c..72416571dc 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPWattSpectrum.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPWattSpectrum.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPWattSpectrum.hh,v 1.4 1999/12/15 14:53:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 7f6ad4481e..7a1ff009fc 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4VNeutronHPEDis.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4VNeutronHPEDis.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4VNeutronHPEDis.hh,v 1.4 1999/12/15 14:53:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 593b51fd2f..515f0d3611 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4VNeutronHPEnergyAngular.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4VNeutronHPEnergyAngular.hh @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4VNeutronHPEnergyAngular.hh,v 1.4 1999/12/15 14:53:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4VNeutronHPEnergyAngular_h #define G4VNeutronHPEnergyAngular_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPCaptureData.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPCaptureData.cc index 4a8a85a1c5..83e65e63f5 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPCaptureData.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPCaptureData.cc @@ -55,6 +55,6 @@ G4double G4NeutronHPCaptureData::GetCrossSection(const G4DynamicParticle* aP, co G4int index = anE->GetIndex(); result = (*((*theCrossSections)(index))).GetValue( - aP->GetTotalMomentum()/GeV, outOfRange); + aP->GetKineticEnergy(), outOfRange); return result; } diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFissionData.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFissionData.cc index c02c6d612a..014c5eb63a 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFissionData.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFissionData.cc @@ -57,6 +57,6 @@ G4double G4NeutronHPFissionData::GetCrossSection(const G4DynamicParticle* aP, co if(anE->GetZ()<90) return 0; result = (*((*theCrossSections)(index))).GetValue( - aP->GetTotalMomentum()/GeV, outOfRange); + aP->GetKineticEnergy(), outOfRange); return result; } diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPInelastic.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPInelastic.cc index 67eb427c10..50d8802ae1 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPInelastic.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPInelastic.cc @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPInelastic.cc,v 1.4 1999/12/15 14:53:17 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4NeutronHPInelastic.hh" diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPInelasticCompFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPInelasticCompFS.cc index b90c693e86..3c3ec65a5f 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPInelasticCompFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPInelasticCompFS.cc @@ -9,6 +9,7 @@ #include "G4Alpha.hh" #include "G4Electron.hh" #include "G4NeutronHPDataUsed.hh" +#include "G4ParticleTable.hh" void G4NeutronHPInelasticCompFS::InitGammas(G4double AR, G4double ZR) { @@ -134,11 +135,14 @@ G4int G4NeutronHPInelasticCompFS::SelectExitChannel(G4double eKinetic) } G4double random = G4UniformRand(); G4double sum = running[49]; - G4int it = 0; - for(i=0; i<50; i++) + G4int it = 50; + if(0!=sum) { - it = i; - if(random < running[i]/sum) break; + for(i=0; i<50; i++) + { + it = i; + if(random < running[i]/sum) break; + } } //debug: it = 1; return it; @@ -146,7 +150,7 @@ G4int G4NeutronHPInelasticCompFS::SelectExitChannel(G4double eKinetic) void G4NeutronHPInelasticCompFS::CompositeApply(const G4Track & theTrack, G4ParticleDefinition * aDefinition) { - theResult.Initialize(theTrack); + theResult.Initialize(theTrack); // prepare neutron G4double eKinetic = theTrack.GetKineticEnergy(); @@ -160,15 +164,14 @@ void G4NeutronHPInelasticCompFS::CompositeApply(const G4Track & theTrack, G4Part for(i=0; i<50; i++) if(theXsection[i] != NULL) break; G4double targetMass=0; G4double eps = 0.0001; - targetMass = ( G4NucleiPropertiesTable::GetAtomicMass(theBaseZ+eps, theBaseA+eps)- - theBaseZ*G4Electron::ElectronDefinition()->GetPDGMass() ) / - G4Neutron::Neutron()->GetPDGMass(); - if(theEnergyAngData[i]!=NULL) - targetMass = theEnergyAngData[i]->GetTargetMass(); - else if(theAngularDistribution[i]!=NULL) - targetMass = theAngularDistribution[i]->GetTargetMass(); - else if(theFinalStatePhotons[50]!=NULL) - targetMass = theFinalStatePhotons[50]->GetTargetMass(); + targetMass = ( G4NucleiPropertiesTable::GetNuclearMass(theBaseZ+eps, theBaseA+eps)) / + G4Neutron::Neutron()->GetPDGMass(); +// if(theEnergyAngData[i]!=NULL) +// targetMass = theEnergyAngData[i]->GetTargetMass(); +// else if(theAngularDistribution[i]!=NULL) +// targetMass = theAngularDistribution[i]->GetTargetMass(); +// else if(theFinalStatePhotons[50]!=NULL) +// targetMass = theFinalStatePhotons[50]->GetTargetMass(); G4Nucleus aNucleus; G4ReactionProduct theTarget; theTarget = aNucleus.GetThermalNucleus(targetMass); @@ -177,14 +180,14 @@ void G4NeutronHPInelasticCompFS::CompositeApply(const G4Track & theTrack, G4Part G4double residualMass=0; G4double residualZ = theBaseZ - aDefinition->GetPDGCharge(); G4double residualA = theBaseA - aDefinition->GetBaryonNumber()+1; - residualMass = ( G4NucleiPropertiesTable::GetAtomicMass(residualZ+eps, residualA+eps)- - residualZ*G4Electron::ElectronDefinition()->GetPDGMass() ) / + residualMass = ( G4NucleiPropertiesTable::GetNuclearMass(residualZ+eps, residualA+eps) ) / G4Neutron::Neutron()->GetPDGMass(); // prepare energy in target rest frame G4ReactionProduct boosted; boosted.Lorentz(theNeutron, theTarget); eKinetic = boosted.GetKineticEnergy(); + G4double momentumInCMS = boosted.GetTotalMomentum(); // select exit channel for composite FS class. G4int it = SelectExitChannel(eKinetic); @@ -196,18 +199,26 @@ void G4NeutronHPInelasticCompFS::CompositeApply(const G4Track & theTrack, G4Part G4ReactionProductVector * theParticles = NULL; G4ReactionProduct aHadron; aHadron.SetDefinition(aDefinition); // what if only cross-sections exist ==> Na 23 11 @@@@ - aHadron.SetKineticEnergy(theNeutron.GetKineticEnergy() + - theNeutron.GetMass() - aHadron.GetMass() + - (targetMass - residualMass)*G4Neutron::Neutron()->GetPDGMass()); - aHadron.SetMomentum(theNeutron.GetMomentum()*(1./theNeutron.GetTotalMomentum())* - sqrt(aHadron.GetTotalEnergy()*aHadron.GetTotalEnergy()- - aHadron.GetMass()*aHadron.GetMass()) - ); + G4double availableEnergy = theNeutron.GetKineticEnergy() + theNeutron.GetMass() - aHadron.GetMass() + + (targetMass - residualMass)*G4Neutron::Neutron()->GetPDGMass(); + G4int nothingWasKnownOnHadron = 0; G4int dummy; G4int nSecGamma = 0; G4double eGamm = 0; G4int iLevel=it-1; - while( iLevel!=-1 && theGammas.GetLevel(iLevel)==NULL ) iLevel--; + if(50==it) + { + iLevel=-1; + aHadron.SetKineticEnergy(availableEnergy*residualMass*G4Neutron::Neutron()->GetPDGMass()/ + (aHadron.GetMass()+residualMass*G4Neutron::Neutron()->GetPDGMass())); + aHadron.SetMomentum(theNeutron.GetMomentum()*(1./theNeutron.GetTotalMomentum())* + sqrt(aHadron.GetTotalEnergy()*aHadron.GetTotalEnergy()- + aHadron.GetMass()*aHadron.GetMass())); + } + else + { + while( iLevel!=-1 && theGammas.GetLevel(iLevel)==NULL ) iLevel--; + } if(theAngularDistribution[it]!= NULL) { if(theEnergyDistribution[it]!=NULL) @@ -227,7 +238,10 @@ void G4NeutronHPInelasticCompFS::CompositeApply(const G4Track & theTrack, G4Part { G4double eExcitation = 0; if(iLevel>=0) eExcitation = theGammas.GetLevel(iLevel)->GetLevelEnergy(); - aHadron.SetKineticEnergy(eKinetic - eExcitation); + + aHadron.SetKineticEnergy(aHadron.GetKineticEnergy() - eExcitation); + // consistency of data assumed....@@@@@ + } theAngularDistribution[it]->SampleAndUpdate(aHadron); if(theFinalStatePhotons[it] == NULL) @@ -249,13 +263,14 @@ void G4NeutronHPInelasticCompFS::CompositeApply(const G4Track & theTrack, G4Part } } } - else if(theEnergyAngData[it]!= NULL) + else if(theEnergyAngData[it] != NULL) { theParticles = theEnergyAngData[it]->Sample(eKinetic); } else { - // @@@ what to do, if we have photon data, but no info on the proton itself + // @@@ what to do, if we have photon data, but no info on the hadron itself + nothingWasKnownOnHadron = 1; } if(theFinalStatePhotons[it]!=NULL) { @@ -269,10 +284,13 @@ void G4NeutronHPInelasticCompFS::CompositeApply(const G4Track & theTrack, G4Part if(thePhotons!=NULL && thePhotons->entries()!=0) aBaseEnergy-=thePhotons->at(0)->GetTotalEnergy(); if(theFinalStatePhotons[it]->NeedsCascade()) { - while(abs(aBaseEnergy)>0.01*keV) + while(aBaseEnergy>0.01*keV) { // cascade down the levels - for(G4int i=1; iGetPhotons(anEnergy); thePhotons->insert(theNext->at(0)); aBaseEnergy = testEnergy-theNext->at(0)->GetTotalEnergy(); delete theNext; - break; + foundMatchingLevel = true; + break; // ===> } - } - } // <=== the break goes here. + if(deltaEGetPhotons(anEnergy); + thePhotons->insert(theNext->at(0)); + testEnergy = theFinalStatePhotons[closest]->GetLevelEnergy(); + aBaseEnergy = testEnergy-theNext->at(0)->GetTotalEnergy(); + delete theNext; + } + } } } if(thePhotons!=NULL) @@ -303,9 +337,31 @@ void G4NeutronHPInelasticCompFS::CompositeApply(const G4Track & theTrack, G4Part thePhotons->at(i)->Lorentz(*(thePhotons->at(i)), -1.*theTarget); } } + if(nothingWasKnownOnHadron) + { + G4double totalPhotonEnergy = 0; + if(thePhotons!=NULL) + { + G4int nPhotons = thePhotons->length(); + for(i=0; iat(i)->GetTotalEnergy(); + } + } + availableEnergy -= totalPhotonEnergy; + residualMass += totalPhotonEnergy/G4Neutron::Neutron()->GetPDGMass(); + aHadron.SetKineticEnergy(availableEnergy*residualMass*G4Neutron::Neutron()->GetPDGMass()/ + (aHadron.GetMass()+residualMass*G4Neutron::Neutron()->GetPDGMass())); + G4double CosTheta = 1.0 - 2.0*G4UniformRand(); + G4double SinTheta = sqrt(1.0 - CosTheta*CosTheta); + G4double Phi = twopi*G4UniformRand(); + G4ThreeVector Vector(cos(Phi)*SinTheta, sin(Phi)*SinTheta, CosTheta); + aHadron.SetMomentum(Vector* sqrt(aHadron.GetTotalEnergy()*aHadron.GetTotalEnergy()- + aHadron.GetMass()*aHadron.GetMass())); + } // fill the result - G4int nSecondaries = 1; // the hadron + G4int nSecondaries = 2; // the hadron and the recoil if(theParticles != NULL) nSecondaries = theParticles->length(); G4int nPhotons = 0; if(thePhotons!=NULL) nPhotons = thePhotons->length(); @@ -320,6 +376,25 @@ void G4NeutronHPInelasticCompFS::CompositeApply(const G4Track & theTrack, G4Part theSec->SetDefinition(aHadron.GetDefinition()); theSec->SetMomentum(aHadron.GetMomentum()); theResult.AddSecondary(theSec); + + aHadron.Lorentz(aHadron, theTarget); + G4ReactionProduct theResidual; + theResidual.SetDefinition(G4ParticleTable::GetParticleTable()->GetIon(residualZ, residualA, 0)); + theResidual.SetKineticEnergy(aHadron.GetKineticEnergy()*aHadron.GetMass()/theResidual.GetMass()); + theResidual.SetMomentum(-1.*aHadron.GetMomentum()); + theResidual.Lorentz(theResidual, -1.*theTarget); + G4ThreeVector totalPhotonMomentum(0,0,0); + if(thePhotons!=NULL) + { + for(i=0; iat(i)->GetMomentum(); + } + } + theSec = new G4DynamicParticle; + theSec->SetDefinition(theResidual.GetDefinition()); + theSec->SetMomentum(theResidual.GetMomentum()-totalPhotonMomentum); + theResult.AddSecondary(theSec); } else { diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPInelasticData.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPInelasticData.cc index 661524cac7..d7f0a4ee48 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPInelasticData.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPInelasticData.cc @@ -55,6 +55,6 @@ G4double G4NeutronHPInelasticData::GetCrossSection(const G4DynamicParticle* aP, G4int index = anE->GetIndex(); result = (*((*theCrossSections)(index))).GetValue( - aP->GetTotalMomentum()/GeV, outOfRange); + aP->GetKineticEnergy(), outOfRange); return result; } diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNBodyPhaseSpace.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNBodyPhaseSpace.cc index 9a0bdc0c6f..162c9be341 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNBodyPhaseSpace.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNBodyPhaseSpace.cc @@ -8,7 +8,7 @@ // and all its terms. // // $Id: G4NeutronHPNBodyPhaseSpace.cc,v 1.2 1999/07/02 10:01:14 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4NeutronHPNBodyPhaseSpace.hh" #include "G4Gamma.hh" diff --git a/source/processes/hadronic/models/radiative_decay/GNUmakefile b/source/processes/hadronic/models/radiative_decay/GNUmakefile new file mode 100644 index 0000000000..9a16bbb98d --- /dev/null +++ b/source/processes/hadronic/models/radiative_decay/GNUmakefile @@ -0,0 +1,37 @@ +# $Id: GNUmakefile,v 1.5 2000/06/27 15:25:48 gcosmo Exp $ +# ----------------------------------------------------------- +# GNUmakefile for hadronic library. Gabriele Cosmo, 18/9/96. +# ----------------------------------------------------------- + +name := G4hadronic_radioactivedecay + +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)/intercoms/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/processes/include \ + -I$(G4BASE)/processes/hadronic/cross_sections/include \ + -I$(G4BASE)/processes/hadronic/models/generator/de_excitation/include \ + -I$(G4BASE)/processes/hadronic/models/generator/util/include \ + -I$(G4BASE)/processes/hadronic/generator/management/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/radiative_decay/History b/source/processes/hadronic/models/radiative_decay/History new file mode 100644 index 0000000000..f5ef2a51ab --- /dev/null +++ b/source/processes/hadronic/models/radiative_decay/History @@ -0,0 +1,29 @@ +------------------------------------------------------------------- + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + Radiative decay History file + ------------------------------------- +This file should be used by responsible rdm developers to briefly +summarize all major modifications introduced in the code and keep +track of all tags. + + ---------------------------------------------------------- + * Reverse chronological order (last date on top), please * + ---------------------------------------------------------- + +27th June 2000 Fan Lei (radiative_decay-V01-01-04) +- fix for DEC-cxx debug non-ISO. +- update test log files. + +15th June 2000 Fan Lei (radiative_decay_V01-01-03) +- Minor fix on Linux + +15th June 2000 Fan Lei (radiative_decay_V01-01-02) +- ISO compliance. + +initial tag by Hans_Pete (radiative_decay_V01-01-00) + + diff --git a/source/processes/hadronic/models/radiative_decay/include/G4AlphaDecayChannel.hh b/source/processes/hadronic/models/radiative_decay/include/G4AlphaDecayChannel.hh new file mode 100644 index 0000000000..69e1428efe --- /dev/null +++ b/source/processes/hadronic/models/radiative_decay/include/G4AlphaDecayChannel.hh @@ -0,0 +1,58 @@ +#ifndef G4AlphaDecayChannel_h +#define G4AlphaDecayChannel_h 1 +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// MODULE: G4AlphaDecayChannel.hh +// +// Version: 0.b.3 +// Date: 29/02/00 +// Author: F Lei & P R Truscott +// Organisation: DERA UK +// Customer: ESA/ESTEC, NOORDWIJK +// Contract: 12115/96/JG/NL Work Order No. 3 +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// CHANGE HISTORY +// -------------- +// +// 29 February 2000, P R Truscott, DERA UK +// 0.b.3 release. +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +//////////////////////////////////////////////////////////////////////////////// +// +#include "globals.hh" +#include "G4NuclearDecayChannel.hh" +#include "G4RadioactiveDecayMode.hh" +//////////////////////////////////////////////////////////////////////////////// +// +class G4AlphaDecayChannel : public G4NuclearDecayChannel +{ + // class description + // + // Derived class from G4NuclearDecayChannel. It is specific for + // Alpha decay proceess. + // + // class description - end + public: + G4AlphaDecayChannel (G4int Verbose, + const G4ParticleDefinition *theParentNucleus, + G4double theBR, + G4double theEndPointEnergy=0.0, + G4double theDaughterExcitation=0.0) : + G4NuclearDecayChannel (Alpha, Verbose, theParentNucleus, theBR, + theEndPointEnergy, + (theParentNucleus->GetBaryonNumber())-4, + int(theParentNucleus->GetPDGCharge()/eplus)-2, + theDaughterExcitation, "alpha") + { +#ifdef G4VERBOSE + if (GetVerboseLevel()>1) + G4cout <<"G4AlphaDecayChannel constructor" << G4endl; +#endif + } + ~G4AlphaDecayChannel () {;} +}; +#endif + diff --git a/source/processes/hadronic/models/radiative_decay/include/G4BetaFermiFunction.hh b/source/processes/hadronic/models/radiative_decay/include/G4BetaFermiFunction.hh new file mode 100644 index 0000000000..b549280098 --- /dev/null +++ b/source/processes/hadronic/models/radiative_decay/include/G4BetaFermiFunction.hh @@ -0,0 +1,61 @@ +#ifndef G4BetaFermiFunction_h +#define G4BetaFermiFunction_h 1 + +#include "globals.hh" + +class G4BetaFermiFunction +{ + // class description + // It is to calculate the Coulomb correction to beta particles + // + +public: // with description + + G4BetaFermiFunction(G4int const fA, G4int const fZ) : + A(fA), Z(fZ) + {}; + // constructor: fA the daughter nucleus mass. + // fZ the daughter nucleus charge. Negative value for + // beta+ decays. + // + ~G4BetaFermiFunction() + // desctructor + // + {}; + G4double GetFF(const G4double E); + // Returns the BetaFermi factor at energy E. + // E kinetic energy of the beta particle in unit of Me. + // + G4double GetFFN(const G4double E0); + // Returns the BetaFermi factor normalisation, i.e. the maximum + // value for beta decay with end-point energy E0. + // E0 dose not including beta particle rest mass in unit + // of Me. + // +private: + + G4int A; + G4int Z; + + static const G4double PI; + +private: + + G4double Gamma(G4double X); + +}; +#endif + + + + + + + + + + + + + + diff --git a/source/processes/hadronic/models/radiative_decay/include/G4BetaMinusDecayChannel.hh b/source/processes/hadronic/models/radiative_decay/include/G4BetaMinusDecayChannel.hh new file mode 100644 index 0000000000..a1b70c2053 --- /dev/null +++ b/source/processes/hadronic/models/radiative_decay/include/G4BetaMinusDecayChannel.hh @@ -0,0 +1,59 @@ +#ifndef G4BetaMinusDecayChannel_h +#define G4BetaMinusDecayChannel_h 1 +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// MODULE: G4BetaMinusDecayChannel.hh +// +// Version: 0.b.3 +// Date: 29/02/00 +// Author: F Lei & P R Truscott +// Organisation: DERA UK +// Customer: ESA/ESTEC, NOORDWIJK +// Contract: 12115/96/JG/NL Work Order No. 3 +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// CHANGE HISTORY +// -------------- +// +// 29 February 2000, P R Truscott, DERA UK +// 0.b.3 release. +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +//////////////////////////////////////////////////////////////////////////////// +// +#include "globals.hh" +#include "G4NuclearDecayChannel.hh" +#include "G4RadioactiveDecayMode.hh" + //////////////////////////////////////////////////////////////////////////////// +// +class G4BetaMinusDecayChannel : public G4NuclearDecayChannel +{ + // class description + // + // Derived class from G4NuclearDecayChannel. It is specific for + // Beta- decay proceess. + // + // class description - end + public: + G4BetaMinusDecayChannel (G4int Verbose, + const G4ParticleDefinition *theParentNucleus, + G4double theBR, + G4double theEndPointEnergy=0.0, + G4double theDaughterExcitation=0.0, + G4double theFFN=1.0): + G4NuclearDecayChannel (BetaMinus, Verbose, theParentNucleus, theBR, + theFFN, theEndPointEnergy, + theParentNucleus->GetBaryonNumber(), + int(theParentNucleus->GetPDGCharge()/eplus)+1, + theDaughterExcitation, "e-", "anti_nu_e") + { +#ifdef G4VERBOSE + if (GetVerboseLevel()>1) + G4cout <<"G4BetaMinusDecayChannel constructor" <GetBaryonNumber(), + int(theParentNucleus->GetPDGCharge()/eplus)-1, + theDaughterExcitation, "e+", "nu_e") + { +#ifdef G4VERBOSE + if (GetVerboseLevel()>1) + G4cout <<"G4BetaPlusDecayChannel constructor" <GetBaryonNumber(), + int(theParentNucleus->GetPDGCharge()/eplus), + ((const G4Ions*) theParentNucleus)->GetExcitationEnergy()) + { +#ifdef G4VERBOSE + if (GetVerboseLevel()>1) + G4cout <<"G4ITDecayChannel constructor" << G4endl; +#endif + } + ~G4ITDecayChannel () {;} +}; +#endif + diff --git a/source/processes/hadronic/models/radiative_decay/include/G4KshellECDecayChannel.hh b/source/processes/hadronic/models/radiative_decay/include/G4KshellECDecayChannel.hh new file mode 100644 index 0000000000..26b73e7234 --- /dev/null +++ b/source/processes/hadronic/models/radiative_decay/include/G4KshellECDecayChannel.hh @@ -0,0 +1,58 @@ +#ifndef G4KshellECDecayChannel_h +#define G4KshellECDecayChannel_h 1 +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// MODULE: G4KshellECDecayChannel.hh +// +// Version: 0.b.3 +// Date: 29/02/00 +// Author: F Lei & P R Truscott +// Organisation: DERA UK +// Customer: ESA/ESTEC, NOORDWIJK +// Contract: 12115/96/JG/NL Work Order No. 3 +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// CHANGE HISTORY +// -------------- +// +// 29 February 2000, P R Truscott, DERA UK +// 0.b.3 release. +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +//////////////////////////////////////////////////////////////////////////////// +// +#include "globals.hh" +#include "G4NuclearDecayChannel.hh" +#include "G4RadioactiveDecayMode.hh" +//////////////////////////////////////////////////////////////////////////////// +// +class G4KshellECDecayChannel : public G4NuclearDecayChannel +{ + // class description + // + // Derived class from G4NuclearDecayChannel. It is specific for + // Electron Capture proceess with electron from the K shell + // + // class description - end + + public: + G4KshellECDecayChannel (G4int Verbose, + const G4ParticleDefinition *theParentNucleus, + G4double theBR, + G4double theQtransit=0.0, + G4double theDaughterExcitation=0.0) : + G4NuclearDecayChannel (KshellEC, Verbose, theParentNucleus, theBR, + theQtransit, theParentNucleus->GetBaryonNumber(), + int(theParentNucleus->GetPDGCharge()/eplus)-1, + theDaughterExcitation, "nu_e") + { +#ifdef G4VERBOSE + if (GetVerboseLevel()>1) + G4cout <<"G4KshellECDecayChannel constructor" << G4endl; +#endif + } + ~G4KshellECDecayChannel () {;} +}; +#endif + diff --git a/source/processes/hadronic/models/radiative_decay/include/G4LshellECDecayChannel.hh b/source/processes/hadronic/models/radiative_decay/include/G4LshellECDecayChannel.hh new file mode 100644 index 0000000000..685c9f0bf7 --- /dev/null +++ b/source/processes/hadronic/models/radiative_decay/include/G4LshellECDecayChannel.hh @@ -0,0 +1,37 @@ +#ifndef G4LshellECDecayChannel_h +#define G4LshellECDecayChannel_h 1 + +#include "globals.hh" +#include "G4NuclearDecayChannel.hh" +#include "G4RadioactiveDecayMode.hh" +//////////////////////////////////////////////////////////////////////////////// +// +class G4LshellECDecayChannel : public G4NuclearDecayChannel +{ + // class description + // + // Derived class from G4NuclearDecayChannel. It is specific for + // Electron Capture proceess with electron from the L shell + // + // class description - end + +public: + G4LshellECDecayChannel (G4int Verbose, + const G4ParticleDefinition *theParentNucleus, + G4double theBR,G4double theQtransit=0.0, + G4double theDaughterExcitation=0.0) : + G4NuclearDecayChannel (LshellEC, Verbose, theParentNucleus, theBR, + theQtransit, theParentNucleus->GetBaryonNumber(), + int(theParentNucleus->GetPDGCharge()/eplus)-1, + theDaughterExcitation, + "nu_e") + { +#ifdef G4VERBOSE + if (GetVerboseLevel()>1) + G4cerr <<"G4LshellECDecayChannel constructor" << G4endl; +#endif + } + ~G4LshellECDecayChannel () {;} +}; +#endif + diff --git a/source/processes/hadronic/models/radiative_decay/include/G4NuclearDecayChannel.hh b/source/processes/hadronic/models/radiative_decay/include/G4NuclearDecayChannel.hh new file mode 100644 index 0000000000..093cf15056 --- /dev/null +++ b/source/processes/hadronic/models/radiative_decay/include/G4NuclearDecayChannel.hh @@ -0,0 +1,112 @@ +#ifndef G4NuclearDecayChannel_h +#define G4NuclearDecayChannel_h 1 + +#include "globals.hh" +#include "G4VDecayChannel.hh" +#include "G4Ions.hh" +#include "G4IonTable.hh" +#include "G4DynamicParticle.hh" +#include "G4ParticleTable.hh" +#include "G4GeneralPhaseSpaceDecay.hh" +#include "G4RadioactiveDecayMode.hh" + +//////////////////////////////////////////////////////////////////////////////// +// +class G4NuclearDecayChannel : public G4GeneralPhaseSpaceDecay +{ + // class description + // + // G4NuclearDecayChannel is a derived class from G4GeneralPhaseSpaceDecay, + // itself a derived class from G4VDecayChannel. It provides the required + // decay channels for all nuclear decay modes and through the DecayIt() + // member function returns the decay products. + // + // class description - end + +public: // with description + + G4NuclearDecayChannel (const G4RadioactiveDecayMode &theMode, G4int Verbose) : + G4GeneralPhaseSpaceDecay (Verbose) {;} + // default constructor + // + G4NuclearDecayChannel (const G4RadioactiveDecayMode &theMode, G4int Verbose, + const G4ParticleDefinition *theParentNucleus, + G4double theBR, G4double theQtransition, G4int A, + G4int Z, G4double theDaughterExcitation); + // constructor decay channel with one decay product + // + G4NuclearDecayChannel (const G4RadioactiveDecayMode &theMode, G4int Verbose, + const G4ParticleDefinition *theParentNucleus, + G4double theBR, G4double theQtransition, G4int A, + G4int Z, G4double theDaughterExcitation, + const G4String theDaughterName1); + // constructor decay channel with two decay products + // + G4NuclearDecayChannel (const G4RadioactiveDecayMode &theMode, G4int Verbose, + const G4ParticleDefinition *theParentNucleus, + G4double theBR, G4double theFFN, + G4double theQtransition, G4int A, G4int Z, + G4double theDaughterExcitation, + const G4String theDaughterName1, + const G4String theDaughterName2); + // constructor decay channel with three decay product + // + + ~G4NuclearDecayChannel () {;} + // destructor + // + G4DecayProducts *DecayIt (G4double theParentMass); + // Returns the decay products + // + inline G4RadioactiveDecayMode GetDecayMode () {return decayMode;} + // Returns the decay mode + // + inline G4double GetDaughterExcitation () {return daughterExcitation;} + // Returns the excitaion energy of the daughter nuclide + // + inline G4ParticleDefinition* GetDaughterNucleus () {return daughterNucleus;} + // Returns the daughter nuclide. + // +private: + G4NuclearDecayChannel (const G4String &theName, const G4String &theParentName, + G4double theBR, G4int theNumberOfDaughters, + const G4String theDaughterName1, + const G4String theDaughterName2, + const G4String theDaughterName3, + const G4String theDaughterName4); + + G4NuclearDecayChannel (const G4String &theParentName, + G4double theBR, G4int theNumberOfDaughters, + const G4String& theDaughterName1, + const G4String& theDaughterName2 = "", + const G4String& theDaughterName3 = ""); + + G4NuclearDecayChannel (const G4String &theParentName, + G4double theParentMass, G4double theBR, + G4int theNumberOfDaughters, + const G4String& theDaughterName1, + const G4String& theDaughterName2 = "", + const G4String& theDaughterName3 = ""); + + void FillDaughterNucleus (G4int index, G4int A, G4int Z, + G4double theDaughterExcitation); + + G4DecayProducts* BetaDecayIt(); + // to replace the ThreeBodyDecayIt() to generate the correct beta spectrum + +protected: + G4RadioactiveDecayMode decayMode; + static const G4double pTolerance; + static const G4double levelTolerance; + G4double daughterExcitation; + G4int daughterA; + G4int daughterZ; + G4ParticleDefinition *daughterNucleus; + G4DynamicParticle *dynamicDaughter; + G4double Qtransition; + G4double FermiFN; + static const G4bool FermiOn; +}; +#endif + + diff --git a/source/processes/hadronic/models/radiative_decay/include/G4NucleusLimits.hh b/source/processes/hadronic/models/radiative_decay/include/G4NucleusLimits.hh new file mode 100644 index 0000000000..929d29ee25 --- /dev/null +++ b/source/processes/hadronic/models/radiative_decay/include/G4NucleusLimits.hh @@ -0,0 +1,85 @@ +#ifndef G4NucleusLimits_h +#define G4NucleusLimits_h 1 +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// MODULE: G4NucleusLimits.hh +// +// Version: 0.b.4 +// Date: 14/04/00 +// Author: F Lei & P R Truscott +// Organisation: DERA UK +// Customer: ESA/ESTEC, NOORDWIJK +// Contract: 12115/96/JG/NL Work Order No. 3 +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// CHANGE HISTORY +// -------------- +// +// 29 February 2000, P R Truscott, DERA UK +// 0.b.3 release. +// +// 13 April 2000, F Lei, DERA UK +// 0.b.4 release. No change to this file +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +//////////////////////////////////////////////////////////////////////////////// +// +#include "globals.hh" +#include "g4std/iostream" + +//////////////////////////////////////////////////////////////////////////////// +// +class G4NucleusLimits +{ + // class description + // The G4NucleusLimits class is used to contain information identifying a + // range bounded by A [aMin, aMax], and Z on [zMin, zMax]. + // + // class description - end + +public: // with description + G4NucleusLimits (); + // Default constructor where: aMin=1, aMax=240, aMin=1, and + // zMax=100. + // + G4NucleusLimits + (G4int aMin1, G4int aMax1, G4int zMin1, G4int zMax1); + // Constructor defining new values for aMin, aMax, zMin, and zMax + // respectively. + // + ~G4NucleusLimits(); + // Destructor + +private: + G4int aMin; + G4int aMax; + G4int zMin; + G4int zMax; + + // + // + // INLINE DECLARATIONS/DEFINTIONS: + // +public: // with description + + inline G4int GetAMin () const {return aMin;} + // Returns the value of aMin. + // + inline G4int GetAMax () const {return aMax;} + // Returns the value of aMax. + // + inline G4int GetZMin () const {return zMin;} + // Returns the value of zMin. + // + inline G4int GetZMax () const {return zMax;} + // Return the value of zmax. + // + + + friend G4std::ostream &operator << (G4std::ostream &s, const G4NucleusLimits &q); + +}; +//////////////////////////////////////////////////////////////////////////////// +#endif + diff --git a/source/processes/hadronic/models/radiative_decay/include/G4ParticleChangeForRadDecay.hh b/source/processes/hadronic/models/radiative_decay/include/G4ParticleChangeForRadDecay.hh new file mode 100644 index 0000000000..f917330578 --- /dev/null +++ b/source/processes/hadronic/models/radiative_decay/include/G4ParticleChangeForRadDecay.hh @@ -0,0 +1,89 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ParticleChangeForRadDecay.hh,v 1.5 2000/06/14 17:51:32 flei Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// ------------------------------------------------------------ +// GEANT 4 class header file +// +// For information related to this code contact: +// CERN, CN Division, ASD group +// +// ------------------------------------------------------------ +// Implemented for the new scheme 25 Jan. 2000 H.Kurahige +// +// Class Description +// This class is a concrete class for ParticleChange for RadDecay +// +#ifndef G4ParticleChangeForRadDecay_h +#define G4ParticleChangeForRadDecay_h 1 + +#include "globals.hh" +#include "G4ios.hh" +class G4VTouchable; +#include "G4ParticleChange.hh" + +class G4ParticleChangeForRadDecay: public G4ParticleChange +{ + public: + // default constructor + G4ParticleChangeForRadDecay(){} + + // destructor + virtual ~G4ParticleChangeForRadDecay(){} + + protected: + // hide copy constructor and assignment operaor as protected + G4ParticleChangeForRadDecay(const G4ParticleChangeForRadDecay &right){} + G4ParticleChangeForRadDecay & operator=(const G4ParticleChangeForRadDecay &right){return *this;} + + public: // with description + void AddSecondary(G4Track* aSecondary); + // Add a secondary particle to theListOfSecondaries. + // ------------------------------------------------------ + + +}; + +inline void G4ParticleChangeForRadDecay::AddSecondary(G4Track *aTrack) +{ + // add a secondary after size check + if (theSizeOftheListOfSecondaries > 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 new file mode 100644 index 0000000000..ef6e829cc0 --- /dev/null +++ b/source/processes/hadronic/models/radiative_decay/include/G4RIsotopeTable.hh @@ -0,0 +1,120 @@ +#ifndef G4RIsotopeTable_h +#define G4RIsotopeTable_h 1 +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// MODULE: G4RIsotopeTable.hh +// +// Version: 0.b.4 +// Date: 14/04/00 +// Author: F Lei & P R Truscott +// Organisation: DERA UK +// Customer: ESA/ESTEC, NOORDWIJK +// Contract: 12115/96/JG/NL Work Order No. 3 +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// CHANGE HISTORY +// -------------- +// +// 29 February 2000, P R Truscott, DERA UK +// 0.b.3 release. +// +// 13 April 2000, F Lei, DERA UK +// 0.b.4 release. No change to this file +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +//////////////////////////////////////////////////////////////////////////////// +// +#include "globals.hh" +#include "G4IsotopeProperty.hh" +#include "G4VIsotopeTable.hh" +#include "G4Ions.hh" +#include "G4IonTable.hh" +#include "G4DecayTable.hh" + +#include "g4std/vector" + +//////////////////////////////////////////////////////////////////////////////// +// +class G4RIsotopeTable : public G4VIsotopeTable +{ + // class description + // G4RIsotopeTable is the table of pointers to G4IsotopeProperty. + // It is derived from the abstract base class G4VIsotopeTable + // class description - end +public: + // + typedef G4std::vector G4IsotopeList; + typedef G4std::vector G4IsotopeNameList; + +public: + // constructor + // + G4RIsotopeTable (); + +protected: + // hide copy construictor as protected + G4RIsotopeTable(const G4RIsotopeTable &right); + +public: + // destructor + virtual ~G4RIsotopeTable(); + +public: + // with description + // + virtual G4bool FindIsotope(G4IsotopeProperty* property); + // The FindIsotope function will replace the pure virtual one defined in the + // abstract base class G4VIstopeTable. We don't use this fuction in this + // implementation, instead we use the next function. + // + virtual G4IsotopeProperty* GetIsotope(G4int Z, G4int A, G4double E); + // + // again it will replace the pure virtual one in the abstract base class. + // + // Z: Atomic Number + // A: Atomic Mass + // E: Excitaion energy + +private: + + G4String GetIsotopeName(G4int Z, G4int A, G4double E); + // + // To generate a name for the isotope + G4double GetMeanLifeTime (G4int Z, G4int A, G4double& E); + // to get the mean life time and its decaytable from the database + // + G4IsotopeProperty* GetIsotope(G4int index) const; + // Return the pointer of index-th isotope in the table + + G4int GetVerboseLevel() const; + // get Verbose Level defined in G4ParticleTable + + G4int Entries() const; + +private: + + G4IsotopeList fIsotopeList; + G4IsotopeNameList fIsotopeNameList; + static const G4double levelTolerance; +}; + +inline G4int G4RIsotopeTable::Entries() const + {return fIsotopeNameList.size();} + +inline G4IsotopeProperty* G4RIsotopeTable::GetIsotope(G4int index) const +{ + if ( (index >=0 ) && (index < Entries()) ){ + return fIsotopeList[index]; + } else { + return 0; + } +} + +#endif + + + + + + diff --git a/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecay.hh b/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecay.hh new file mode 100644 index 0000000000..f4aa4eece2 --- /dev/null +++ b/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecay.hh @@ -0,0 +1,257 @@ +#ifndef G4RadioactiveDecay_h +#define G4RadioactiveDecay_h 1 +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// MODULE: G4RadioactiveDecay.hh +// +// Version: 0.b.4 +// Date: 14/04/00 +// Author: F Lei & P R Truscott +// Organisation: DERA UK +// Customer: ESA/ESTEC, NOORDWIJK +// Contract: 12115/96/JG/NL Work Order No. 3 +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// CHANGE HISTORY +// -------------- +// +// 29 February 2000, P R Truscott, DERA UK +// 0.b.3 release. +// +// 13 April 2000, F Lei, DERA UK +// 0.b.4 release. No change to this file +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +//////////////////////////////////////////////////////////////////////////////// +// +#include "G4ios.hh" +#include "globals.hh" +#include "G4VRestDiscreteProcess.hh" +#include "G4ParticleChangeForRadDecay.hh" +#include "G4RadioactiveDecaymessenger.hh" + +#include "G4NucleusLimits.hh" +#include "G4RadioactiveDecayRate.hh" +#include "G4RadioactiveDecayRateVector.hh" +#include "G4RIsotopeTable.hh" +#include "g4std/vector" + +//class G4UserlimitsForRD; + +//////////////////////////////////////////////////////////////////////////////// +// +class G4RadioactiveDecaymessenger; + +typedef G4std::vector G4RadioactiveDecayRateTable; +typedef G4std::vector G4RadioactiveDecayRates; + +class G4RadioactiveDecay : public G4VRestDiscreteProcess +{ + // class description + + // Implementation of nuclear radioactive decay process. + // It simulates the decays of radioactive nuclei, which is submitted to RDM in the form + // of G4Ions. Half-liffe and decay schemes are hold in the Radioactivity database + // All decay products are submitted back to the particle tracking process through + // the G4ParticleChangeForRadDecay object. + + // class description - end + +public: // with description + + G4RadioactiveDecay (const G4String& processName="RadioactiveDecay"); + ~G4RadioactiveDecay(); + // constructor and destructor + // + + G4bool IsApplicable(const G4ParticleDefinition &); + // Returns true if the specified isotope is + // 1) defined as "nucleus" and + // 2) it is within theNucleusLimit + // + G4bool IsLoaded (const G4ParticleDefinition &); + // Returns true if the decay table of the specified nuclei is ready. + // + void SelectAVolume(const G4String aVolume); + // Select a logical volume in which RDM applies. + // + void DeselectAVolume(const G4String aVolume); + // remove a logical volume from the RDM applied list + // + void SelectAllVolumes(); + // Select all logical volumes for the application of RDM. + // + void DeselectAllVolumes(); + // Remove all logical volumes from RDM applications. + // + void SetDecayBias (G4String filename); + // Sets the decay biasing scheme using the data in "filename" + // + void SetSourceTimeProfile (G4String filename) ; + // Sets source exposure function using histograms in "filename" + // + G4bool IsRateTableReady(const G4ParticleDefinition &); + // Returns true if the coefficient and decay time table for all the + // descendants of the specified isotope are ready. + // + // used in VR decay mode only + // + void AddDecayRateTable(const G4ParticleDefinition &); + // Calculates the coefficient and decay time table for all the descendants + // of the specified isotope. Adds the calculated table to the private data + // member "theDecayRateTableVector". + // + // + // used in VR decay mode only + // + void GetDecayRateTable(const G4ParticleDefinition &); + // Used to retrieve the coefficient and decay time table for all the + // descendants of the specified isotope from "theDecayRateTableVector" + // and place it in "theDecayRateTable". + // + // + // used in VR decay mode only + // + void SetDecayRate(G4int,G4int,G4double, G4int, G4std::vector, + G4std::vector); + // Sets "theDecayRate" with data supplied in the arguements. + // + // // + // used in VR decay mode only + // + + G4DecayTable *LoadDecayTable (G4ParticleDefinition & theParentNucleus); + // Load the decay data of isotope theParentNucleus. + // + inline void SetVerboseLevel(G4int value) {verboseLevel = value;} + // Sets the VerboseLevel which controls duggering display. + // + inline G4int GetVerboseLevel() const {return verboseLevel;} + // Returns the VerboseLevel which controls level of debugging output. + // + inline void SetNucleusLimits(G4NucleusLimits theNucleusLimits1) + {theNucleusLimits = theNucleusLimits1 ;} + // Sets theNucleusLimits which specifies the range of isotopes + // the G4RadioactiveDecay applies. + // + inline G4NucleusLimits GetNucleusLimits() const + {return theNucleusLimits;} + // Returns theNucleusLimits which specifies the range of isotopes + // the G4RadioactiveDecay applies. + // + inline void SetAnalogueMonteCarlo (G4bool r ) { AnalogueMC = r; } + // Controls whether G4RadioactiveDecay runs in analogue mode or + // variance reduction mode. + // + inline G4bool IsAnalogueMonteCarlo () {return AnalogueMC;} + // Returns true if the simulation is an analogue Monte Carlo, and false if + // any of the biassing schemes have been selected. + // + inline void SetBRBias (G4bool r ) { BRBias = r; + SetAnalogueMonteCarlo(0);} + // Sets whether branching ration bias scheme applies. + // + inline void SetSplitNuclei (G4int r) { NSplit = r; SetAnalogueMonteCarlo(0); } + // Sets the N number for the Nuclei spliting bias scheme + // + inline G4int GetSplitNuclei () {return NSplit;} + // Returns the N number used for the Nuclei spliting bias scheme + // +public: + + void BuildPhysicsTable(const G4ParticleDefinition &); + +protected: + + G4VParticleChange* DecayIt( const G4Track& theTrack, + const G4Step& theStep); + + G4DecayProducts* DoDecay(G4ParticleDefinition& theParticleDef); + + G4double GetMeanFreePath(const G4Track& theTrack, + G4double previousStepSize, + G4ForceCondition* condition); + + G4double GetMeanLifeTime(const G4Track& theTrack, + G4ForceCondition* condition); + + G4double GetTaoTime(G4double,G4double); + + G4double GetDecayTime(); + + G4int GetDecayTimeBin(const G4double aDecayTime); + +private: + + G4RadioactiveDecay(const G4RadioactiveDecay &right); + G4RadioactiveDecay & operator=(const G4RadioactiveDecay &right); + +private: + + G4RadioactiveDecaymessenger *theRadioactiveDecaymessenger; + + G4PhysicsTable *aPhysicsTable; + + G4RIsotopeTable *theIsotopeTable; + + G4int verboseLevel; + + G4NucleusLimits theNucleusLimits; + + const G4double LowestBinValue; + const G4double HighestBinValue; + const G4int TotBin; + + G4bool AnalogueMC; + G4bool BRBias; + G4int NSplit; + + G4int NSourceBin; + G4double SBin[99]; + G4double SProfile[99]; + + G4int NDecayBin; + G4double DBin[99]; + G4double DProfile[99]; + + // vector ValidNuclei; + G4std::vector LoadedNuclei; + G4std::vector ValidVolumes; + + G4RadioactiveDecayRate theDecayRate; + G4RadioactiveDecayRates theDecayRateVector; + G4RadioactiveDecayRateVector theDecayRateTable; + G4RadioactiveDecayRateTable theDecayRateTableVector; + + static const G4double levelTolerance; + + // Remainder of life time at rest + G4double fRemainderLifeTime; + + // ParticleChange for decay process + G4ParticleChangeForRadDecay fParticleChangeForRadDecay; + + inline G4double AtRestGetPhysicalInteractionLengt + (const G4Track& track, G4ForceCondition* condition) + {fRemainderLifeTime = G4VRestDiscreteProcess:: + AtRestGetPhysicalInteractionLength(track, condition ); + return fRemainderLifeTime;} + + inline G4VParticleChange* AtRestDoIt + (const G4Track& theTrack, const G4Step& theStep) + {return DecayIt(theTrack, theStep);} + + inline G4VParticleChange* PostStepDoIt + (const G4Track& theTrack, const G4Step& theStep) + {return DecayIt(theTrack, theStep);} + +}; +#endif + + + + + + + diff --git a/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecayMode.hh b/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecayMode.hh new file mode 100644 index 0000000000..c39ce4dca4 --- /dev/null +++ b/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecayMode.hh @@ -0,0 +1,52 @@ +#ifndef G4RadioactiveDecayMode_h +#define G4RadioactiveDecayMode_h 1 +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// MODULE: RadioactiveDecayMode.hh +// +// Version: 0.b.4 +// Date: 14/04/00 +// Author: F Lei & P R Truscott +// Organisation: DERA UK +// Customer: ESA/ESTEC, NOORDWIJK +// Contract: 12115/96/JG/NL Work Order No. 3 +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// DESCRIPTION +// ----------- +// +// Identifies a type G4RadioactiveDecayMode to assign a specific decay mode +// description to decay channels. +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// CHANGE HISTORY +// -------------- +// +// 29 February 2000, P R Truscott, DERA UK +// 0.b.3 release. +// +// 13 April 2000, F Lei, DERA UK +// 0.b.4 release. No change to this file +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +//////////////////////////////////////////////////////////////////////////////// +// +#include "globals.hh" +//////////////////////////////////////////////////////////////////////////////// +// +enum G4RadioactiveDecayMode + {ERROR=-1, IT=0, BetaMinus=1, BetaPlus=2, KshellEC=3, LshellEC=4, MshellEC=5, Alpha=6}; + +G4std::istream &operator >> (G4std::istream &s, G4RadioactiveDecayMode &q); + +//////////////////////////////////////////////////////////////////////////////// +#endif + + + + + + + diff --git a/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecayRate.hh b/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecayRate.hh new file mode 100644 index 0000000000..a9454d1466 --- /dev/null +++ b/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecayRate.hh @@ -0,0 +1,109 @@ +#ifndef G4RadioactiveDecayRate_h +#define G4RadioactiveDecayRate_h 1 +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// MODULE: RadioactiveDecayRate.hh +// +// Version: 0.b.4 +// Date: 14/04/00 +// Author: F Lei & P R Truscott +// Organisation: DERA UK +// Customer: ESA/ESTEC, NOORDWIJK +// Contract: 12115/96/JG/NL Work Order No. 3 +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// CHANGE HISTORY +// -------------- +// +// 29 February 2000, P R Truscott, DERA UK +// 0.b.3 release. +// +// 13 April 2000, F Lei, DERA UK +// 0.b.4 release. No change to this file +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +//////////////////////////////////////////////////////////////////////////////// +// +#include "G4ios.hh" +#include "globals.hh" + +#include "g4std/vector" +//////////////////////////////////////////////////////////////////////////////// +// +class G4RadioactiveDecayRate +{ + // class description + // This class contains the coefficient and decay times of the + // progeny of a give isotope (A,Z,E). + // + // class description - end +public: + // Constructors + G4RadioactiveDecayRate(); + + // Destructor + virtual ~G4RadioactiveDecayRate(); + +public: + // copy constructor and assignment operator + G4RadioactiveDecayRate(const G4RadioactiveDecayRate &); + G4RadioactiveDecayRate & operator=(const G4RadioactiveDecayRate &); + +public: + // equality operators + G4int operator==(const G4RadioactiveDecayRate &right) const + {return (this == &right);}; + G4int operator!=(const G4RadioactiveDecayRate &right) const + {return (this != &right);}; + + // less-than operator is defined for G4DecayTable + // G4int operator<(const G4RadioactiveDecayRate &right) const; + +public: // with description + // + // the inline member functions are self explanatory. + // + inline G4int GetZ() const {return Z;} + inline G4int GetA() const { return A;} + inline G4double GetE() const { return E;} + inline G4int GetGeneration() const { return generation;} + inline G4std::vector GetDecayRateC() const + { return decayRateC; } + inline G4std::vector GetTaos() const { return taos; } + + inline void SetZ(G4int value) {Z = value;} + inline void SetA(G4int value) {A = value;} + inline void SetE(G4double value) {E = value;} + inline void SetGeneration(G4int value) {generation = value;} + inline void SetDecayRateC(G4std::vector value) + {decayRateC = value;} + inline void SetTaos(G4std::vector value) {taos = value;} + +protected: + + G4int Z; + G4int A; + G4double E; + G4int generation; + G4std::vector decayRateC; + G4std::vector taos; + +public: + + inline void SetVerboseLevel(G4int value) + { verboseLevel = value; } + inline G4int GetVerboseLevel() const + { return verboseLevel; } + void DumpInfo(); + +private: + G4int verboseLevel; + // control flag for output message + // G4int verboseLevel; + // 0: Silent + // 1: Warning message + // 2: More + +}; +#endif diff --git a/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecayRateVector.hh b/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecayRateVector.hh new file mode 100644 index 0000000000..c968306e96 --- /dev/null +++ b/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecayRateVector.hh @@ -0,0 +1,88 @@ +#ifndef G4RadioactiveDecayRateVector_h +#define G4RadioactiveDecayRateVector_h 1 +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// MODULE: RadioactiveDecayRateVector.hh +// +// Version: 0.b.4 +// Date: 14/04/00 +// Author: F Lei & P R Truscott +// Organisation: DERA UK +// Customer: ESA/ESTEC, NOORDWIJK +// Contract: 12115/96/JG/NL Work Order No. 3 +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// CHANGE HISTORY +// -------------- +// +// 29 February 2000, P R Truscott, DERA UK +// 0.b.3 release. +// +// 13 April 2000, F Lei, DERA UK +// 0.b.4 release. No change to this file +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +//////////////////////////////////////////////////////////////////////////////// +// +#include "G4ios.hh" +#include "globals.hh" +#include "G4RadioactiveDecayRate.hh" + +#include "g4std/vector" +//////////////////////////////////////////////////////////////////////////////// +// +class G4RadioactiveDecayRateVector +{ + // class description + // This class contains the decay times and coefficients for calculating + // all the descendants of the named isotope. These data can be used to + // calculate their radioactivity at any given time + // class description - end +public: + typedef G4std::vector G4RadioactiveDecayRates; + +public: + //Constructors + G4RadioactiveDecayRateVector(); + + // Destructor + virtual ~G4RadioactiveDecayRateVector(); + +public: + // copy constructor and assignment operatotr + G4RadioactiveDecayRateVector(const G4RadioactiveDecayRateVector &); + G4RadioactiveDecayRateVector + & operator=(const G4RadioactiveDecayRateVector &); + +public: + // equality operators + G4int operator==(const G4RadioactiveDecayRateVector &right) const + {return (this == &right);} + G4int operator!=(const G4RadioactiveDecayRateVector &right) const + {return (this != &right);} + +public: // with description + + inline G4String GetIonName() const {return ionName;} + // + // To retrieve the name of the isotope. + inline G4RadioactiveDecayRates GetItsRates() const {return itsRates; } + // + // To retrieve the coefficients and decays of all its descendants along the + // decay chain. + inline void SetIonName(G4String name) {ionName = name;} + // + // To set the name of the isotope. + inline void SetItsRates(G4RadioactiveDecayRates arate) {itsRates = arate;} + // + // To fill the coefficient and decay time table + +protected: + + G4String ionName; + G4RadioactiveDecayRates itsRates; + +}; +#endif + diff --git a/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecaymessenger.hh b/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecaymessenger.hh new file mode 100644 index 0000000000..4c4ee64ca0 --- /dev/null +++ b/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecaymessenger.hh @@ -0,0 +1,86 @@ +#ifndef G4RadioactiveDecaymessenger_h +#define G4RadioactiveDecaymessenger_h 1 +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// MODULE: RadioactiveDecaymessenger.hh +// +// Version: 0.b.4 +// Date: 14/04/00 +// Author: F Lei & P R Truscott +// Organisation: DERA UK +// Customer: ESA/ESTEC, NOORDWIJK +// Contract: 12115/96/JG/NL Work Order No. 3 +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// CHANGE HISTORY +// -------------- +// +// 29 February 2000, P R Truscott, DERA UK +// 0.b.3 release. +// +// 13 April 2000, F Lei, DERA UK +// 0.b.4 release. No change to this file +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +//////////////////////////////////////////////////////////////////////////////// +// +#include "G4UImessenger.hh" +#include "G4UIdirectory.hh" +#include "G4UIcmdWith3VectorAndUnit.hh" +#include "G4UIcmdWith3Vector.hh" +#include "G4UIcmdWithABool.hh" +#include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithoutParameter.hh" +#include "globals.hh" + +#include "G4RadioactiveDecay.hh" +#include "G4UIcmdWithNucleusLimits.hh" + +class G4RadioactiveDecay; +//////////////////////////////////////////////////////////////////////////////// +// +class G4RadioactiveDecaymessenger: public G4UImessenger +{ + // class description + // The G4RadioactiveDecaymessenger is instantiated by the G4RadioactiveDecay + // process and introduces into the UI menu commands to control the running + // of G4RadioactiveDecay + +public: //with description + G4RadioactiveDecaymessenger (G4RadioactiveDecay* + theRadioactiveDecayContainer); + // Constructor introduces commands into the UI menu to control + // G4RadioactiveDecay. theRadioactiveDecayContainer1 is used to identify + // to this class (when instatiated) the associated G4RadioactiveDecay + // process whose parameters are going to be changed as a result + // of the UI commands. + ~G4RadioactiveDecaymessenger (); + // Destructor deletes G4UIdirectory and G4UIcommand objects. + // + void SetNewValue (G4UIcommand *command, G4String newValues); + // Identifies the command which has been invoked by the user, extracts the + // parameters associated with that command (held in newValues, and uses + // these values with the appropriate member function of G4RadioactiveDecay. + // + private: + G4RadioactiveDecay *theRadioactiveDecayContainer; + + G4UIdirectory *grdmDirectory; + G4UIcmdWithNucleusLimits *nucleuslimitsCmd; + G4UIcmdWithAString *sourcetimeprofileCmd; + G4UIcmdWithAString *decaybiasprofileCmd; + G4UIcmdWithABool *analoguemcCmd; + G4UIcmdWithABool *brbiasCmd; + G4UIcmdWithAnInteger *splitnucleiCmd; + G4UIcmdWithAnInteger *verboseCmd; + G4UIcmdWithAString *avolumeCmd; + G4UIcmdWithAString *deavolumeCmd; + G4UIcmdWithoutParameter *allvolumesCmd; + G4UIcmdWithoutParameter *deallvolumesCmd; +}; + +#endif + diff --git a/source/processes/hadronic/models/radiative_decay/include/G4UIcmdWithNucleusLimits.hh b/source/processes/hadronic/models/radiative_decay/include/G4UIcmdWithNucleusLimits.hh new file mode 100644 index 0000000000..b22a5c4b22 --- /dev/null +++ b/source/processes/hadronic/models/radiative_decay/include/G4UIcmdWithNucleusLimits.hh @@ -0,0 +1,79 @@ +#ifndef G4UIcmdWithNucleusLimits_h +#define G4UIcmdWithNucleusLimits_h 1 +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// MODULE: G4UIcmdWithNucleusAndUnit.hh +// +// Version: 0.b.4 +// Date: 14/04/00 +// Author: F Lei & P R Truscott +// Organisation: DERA UK +// Customer: ESA/ESTEC, NOORDWIJK +// Contract: 12115/96/JG/NL Work Order No. 3 +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// Class Description +// +// The G4UIcmdWithNucleusLimits permits input of the range of nuclides +// that will be treated in the G4RadioactiveDecay Class. Input is expected in +// the form: +// +// AMin AMax ZMin ZMax +// +// where AMin, AMax, ZMin, ZMax are respectively the upper and lower limits +// in A (atomic mass), and the upper and lower limits in Z (atomic number) +// which define the range of nuclides treated by the G4RadioactiveDecay. +// +// Class Description - end: +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// CHANGE HISTORY +// -------------- +// +// 29 February 2000, P R Truscott, DERA UK +// 0.b.3 release. +// +// +// 13 April 2000, F Lei, DERA UK +// 0.b.4 release. No change to this file +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +//////////////////////////////////////////////////////////////////////////////// +// +#include "G4UIcommand.hh" +#include "globals.hh" + +#include "G4NucleusLimits.hh" +//////////////////////////////////////////////////////////////////////////////// +// +class G4UIcmdWithNucleusLimits : public G4UIcommand +{ +public: // With description + G4UIcmdWithNucleusLimits + (const char * theCommandPath,G4UImessenger * theMessenger); + // Constructor identifying the command path in the User Interface and the + // associated G4UImessenger which will use this G4UIcommand object. + // + ~G4UIcmdWithNucleusLimits(); + // Destructor + // + G4NucleusLimits GetNewNucleusLimitsValue(G4String paramString); + // Extracts the values aMin, aMax, zMin, zMax from paramString. + // Values returned have aMin, aMax, zMin, and zMax (within the + // G4NucleusLimits variable). + G4String ConvertToString(G4NucleusLimits nuclimit); + // Converts the G4NucleusLimits defined by vec into a G4String. + void SetParameterName(const char * theNameAMin,const char * theNameAMax, + const char * theNameZMin, const char * theNameZMax, + G4bool omittable, G4bool currentAsDefault=true); + // Identifies the parameter names associated with each of the G4doubles + // used to define the G4NucleusLimits variable. + void SetDefaultValue(G4NucleusLimits defVal); + // Sets the default G4NucleusLimits if the command is invoked without any + // parameters. +}; +//////////////////////////////////////////////////////////////////////////////// +#endif + diff --git a/source/processes/hadronic/models/radiative_decay/include/G4UserLimitsForRD.hh b/source/processes/hadronic/models/radiative_decay/include/G4UserLimitsForRD.hh new file mode 100644 index 0000000000..fc1e671421 --- /dev/null +++ b/source/processes/hadronic/models/radiative_decay/include/G4UserLimitsForRD.hh @@ -0,0 +1,34 @@ +#ifndef G4UserLimitsForRD_h +#define G4UserLimitsForRD_h 1 + +#include "globals.hh" +#include "G4UserLimits.hh" + +class G4Track; + +//////////////////////////////////////////////////////////////////////////////// +// +class G4UserLimitsForRD : public G4UserLimits +{ + // class description + // + // Derived class from G4UserLimits. It is specific for + // RDM to select and deselect volumes in which RDM is applied + // + // class description - end + +public: + G4UserLimitsForRD ( const G4String aType="RD") : + G4UserLimits (aType) + { +#ifdef G4VERBOSE + if (GetVerboseLevel()>1) + G4cerr <<"G4UserLimitsForRD constructor" < F1) F1 = F2; + } + return F1; +} + + + + + + + + + + + + + + + + + + + diff --git a/source/processes/hadronic/models/radiative_decay/src/G4NuclearDecayChannel.cc b/source/processes/hadronic/models/radiative_decay/src/G4NuclearDecayChannel.cc new file mode 100644 index 0000000000..17fa405ded --- /dev/null +++ b/source/processes/hadronic/models/radiative_decay/src/G4NuclearDecayChannel.cc @@ -0,0 +1,543 @@ +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// MODULE: G4NuclearDecayChannel.cc +// +// Version: 0.b.4 +// Date: 14/04/00 +// Author: F Lei & P R Truscott +// Organisation: DERA UK +// Customer: ESA/ESTEC, NOORDWIJK +// Contract: 12115/96/JG/NL Work Order No. 3 +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// CHANGE HISTORY +// -------------- +// +// 29 February 2000, P R Truscott, DERA UK +// 0.b.3 release. +// +// 13 April 2000, F Lei, DERA UK +// Changes made are: +// 1) Use PhotonEvaporation instead of DiscreteGammaDeexcitation +// 2) verbose control +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +/////////////////////////////////////////////////////////////////////////////// +// +#include "G4NuclearDecayChannel.hh" +#include "G4DynamicParticle.hh" +#include "G4DecayProducts.hh" +#include "G4DecayTable.hh" +#include "G4PhysicsLogVector.hh" +#include "G4ParticleChangeForRadDecay.hh" +#include "G4IonTable.hh" + +#include "G4BetaFermiFunction.hh" +#include "G4DiscreteGammaDeexcitation.hh" +#include "G4PhotonEvaporation.hh" +#include "G4VGammaDeexcitation.hh" +#include "G4Gamma.hh" +#include "Randomize.hh" + +const G4double G4NuclearDecayChannel:: pTolerance = 0.001; +const G4double G4NuclearDecayChannel:: levelTolerance = 2.0*keV; +const G4bool G4NuclearDecayChannel:: FermiOn = true; + +/////////////////////////////////////////////////////////////////////////////// +// +// +// Constructor for one decay product (the nucleus). +// +G4NuclearDecayChannel::G4NuclearDecayChannel + (const G4RadioactiveDecayMode &theMode, + G4int Verbose, + const G4ParticleDefinition *theParentNucleus, + G4double theBR, + G4double theQtransition, + G4int A, + G4int Z, + G4double theDaughterExcitation) : + G4GeneralPhaseSpaceDecay(Verbose), decayMode(theMode) +{ +#ifdef G4VERBOSE + if (GetVerboseLevel()>1) + {G4cout <<"G4NuclearDecayChannel constructor for " <GetPDGMass(); + SetBR (theBR); + SetNumberOfDaughters (1); + FillDaughterNucleus (0, A, Z, theDaughterExcitation); + Qtransition = theQtransition; +} +/////////////////////////////////////////////////////////////////////////////// +// +// +// Constructor for a daughter nucleus and one other particle. +// +G4NuclearDecayChannel::G4NuclearDecayChannel + (const G4RadioactiveDecayMode &theMode, + G4int Verbose, + const G4ParticleDefinition *theParentNucleus, + G4double theBR, + G4double theQtransition, + G4int A, + G4int Z, + G4double theDaughterExcitation, + const G4String theDaughterName1) : + G4GeneralPhaseSpaceDecay(Verbose), decayMode(theMode) +{ +#ifdef G4VERBOSE + if (GetVerboseLevel()>1) + {G4cout <<"G4NuclearDecayChannel constructor for " <GetPDGMass(); + SetBR (theBR); + SetNumberOfDaughters (2); + SetDaughter(0, theDaughterName1); + FillDaughterNucleus (1, A, Z, theDaughterExcitation); + Qtransition = theQtransition; +} +/////////////////////////////////////////////////////////////////////////////// +// +// +// Constructor for a daughter nucleus and two other particles. +// +G4NuclearDecayChannel::G4NuclearDecayChannel + (const G4RadioactiveDecayMode &theMode, + G4int Verbose, + const G4ParticleDefinition *theParentNucleus, + G4double theBR, + G4double theFFN, + G4double theQtransition, + G4int A, + G4int Z, + G4double theDaughterExcitation, + const G4String theDaughterName1, + const G4String theDaughterName2) : + G4GeneralPhaseSpaceDecay(Verbose), decayMode(theMode) +{ +#ifdef G4VERBOSE + if (GetVerboseLevel()>1) + {G4cout <<"G4NuclearDecayChannel constructor for " <GetPDGMass(); + SetBR (theBR); + SetNumberOfDaughters (3); + SetDaughter(0, theDaughterName1); + SetDaughter(2, theDaughterName2); + FillDaughterNucleus(1, A, Z, theDaughterExcitation); + Qtransition = theQtransition; + FermiFN = theFFN; +} + +//////////////////////////////////////////////////////////////////////////////// +// +// +// +// +void G4NuclearDecayChannel::FillDaughterNucleus (G4int index, G4int A, G4int Z, + G4double theDaughterExcitation) +{ + // + // + // Determine if the proposed daughter nucleus has a sensible A, Z and excitation + // energy. + // + if (A<1 || Z<0 || theDaughterExcitation <0.0) + { + G4cerr <<"Error in G4NuclearDecayChannel::FillDaughterNucleus"; + G4cerr <<"Inappropriate values of daughter A, Z or excitation" <GetIonTable()); + // daughterNucleus = theIonTable->GetIon(daughterZ, daughterA, 0.0*keV); + // + // + // Determine the excitation state corresponds to an actual level in the + // photo-evaporation data. Flag an error if the difference is too large. + // + if (theDaughterExcitation > 0.0) { + G4NuclearLevelManager levelManager = G4NuclearLevelManager + (daughterZ, daughterA); + if ( levelManager.NumberOfLevels() ) { + const G4NuclearLevel* level = levelManager.NearestLevel (theDaughterExcitation); + + daughterExcitation = level->Energy(); + + if (abs(daughterExcitation-theDaughterExcitation)>levelTolerance){ +#ifdef G4VERBOSE + if (GetVerboseLevel()>1){ + G4cout <<"In G4NuclearDecayChannel::FillDaughterNucleus" <HalfLife() <= 1000. || index == 0) { + daughterNucleus = theIonTable->GetIon(daughterZ, daughterA, 0.0*keV); + } + else{ + daughterNucleus = theIonTable->GetIon(daughterZ, daughterA, daughterExcitation); + daughterExcitation = 0.0; + } + } + else{ +#ifdef G4VERBOSE + if (GetVerboseLevel()>0){ + G4cout << "Error in G4NuclearDecayChannel::FillDaughterNucleus" <GetIon(daughterZ, daughterA, 0.0*keV); + daughterExcitation = theDaughterExcitation; + } + } + else { + daughterExcitation = 0.0; + daughterNucleus = theIonTable->GetIon(daughterZ, daughterA, 0.0*keV); + } + SetDaughter(index, daughterNucleus); +} + +/////////////////////////////////////////////////////////////////////////////// +// +// +// +// +G4DecayProducts *G4NuclearDecayChannel::DecayIt (G4double theParentMass) +{ + // + // + // Load-up the details of the parent and daughter particles if they have not + // been defined properly. + // + if (parent == NULL) FillParent(); + if (daughters == NULL) FillDaughters(); + // + // + // THIS IS A CHEAT! We want to ensure that the difference between the total + // parent and daughter masses equals the energy liberated by the transition. + // + theParentMass = 0.0; + for( G4int index=0; index < numberOfDaughters; index++) + {theParentMass += daughters[index]->GetPDGMass();} + theParentMass += Qtransition ; + + if (GetVerboseLevel()>1) { + G4cout << "G4NuclearDecayChannel::DecayIt "; + G4cout << "the decay mass = " << theParentMass << G4endl; + } + + SetParentMass (theParentMass); + + // + // + // Define a product vector. + // + G4DecayProducts *products = NULL; + // + // + // Depending upon the number of daughters, select the appropriate decay + // kinematics scheme. + // + switch (numberOfDaughters) + { + case 0: + if (GetVerboseLevel()>0) + { + G4cout << "G4NuclearDecayChannel::DecayIt "; + G4cout << " daughters not defined " <0)) { + G4cerr << "G4NuclearDecayChannel::DecayIt "; + G4cerr << *parent_name << " can not decay " << G4endl; + DumpInfo(); + } + // + // + // If the decay is to an excited state of the daughter nuclide, we need + // to apply the photo-evaporation process. + // + if (daughterExcitation > 0.0) + { + // + // + // Pop the daughter nucleus off the product vector - we need to retain + // the momentum of this particle. + // + dynamicDaughter = products->PopProducts(); + G4LorentzVector daughterMomentum = dynamicDaughter->Get4Momentum(); + G4ThreeVector daughterMomentum1 = dynamicDaughter->Get4Momentum(); + // + // + // Now define a G4Fragment with the correct A, Z and excitation, and declare and + // initialise a G4DiscreteGammaDeexcitation object. + // + + // daughterMomentum.setT(daughterMomentum.t()+G4ParticleTable::GetParticleTable()->GetIonTable()->GetIonMass( daughterZ, daughterA )+daughterExcitation); + + daughterMomentum.setT(daughterMomentum.t()+daughterExcitation); + G4Fragment nucleus(daughterA, daughterZ, daughterMomentum); + //G4LorentzVector p4(0.,0.,0.,G4NucleiProperties::GetNuclearMass(daughterA,daughterZ) + // +daughterExcitation); + //G4Fragment nucleus(daughterA, daughterZ, p4); + // nucleus.SetExcitationEnergy(daughterExcitation); + + + // G4VGammaDeexcitation* deexcitation = new G4DiscreteGammaDeexcitation; + G4PhotonEvaporation* deexcitation = new G4PhotonEvaporation; + deexcitation->SetVerboseLevel(GetVerboseLevel()); + deexcitation->Initialize(nucleus); + // + // + // Get the gammas by deexciting the nucleus. + // + G4FragmentVector* gammas = deexcitation->BreakItUp(nucleus); + G4int nGammas=0; + // if (gammas!=0) nGammas=gammas->entries(); + // in the case of BreakItUp(nucleus), the returned G4FragmentVector contains the residual nuclide + // as its last entry. + if (gammas > 0) nGammas=gammas->entries()-1; + // + // + // Go through each gamma and add it to the decay product. The angular distribution + // of the gammas is isotropic, and the residual nucleus is assumed not to suffer + // any recoil as a result of this de-excitation. + // + for (G4int ig=0; igat(ig)->GetMomentum().e(); + G4DynamicParticle *theGammaRay = new + G4DynamicParticle (G4Gamma::GammaDefinition(), gDirection, gEnergy); + products->PushProducts (theGammaRay); + } + // + // + // Delete/reset variables associated with the gammas. + // + // if (nGammas != 0) gammas->clearAndDestroy(); + gammas->clearAndDestroy(); + delete gammas; + delete deexcitation; + // + // + // Finally, add the residual nucleus to the product vector. Note that for the + // moment the daughter is assumed to end-up in the GROUND STATE, since + // G4PhotoEvaporation cannot be made to stop when it reaches a long-lived + // isomer. + // + G4double finalDaughterExcitation = 0.0*MeV; + G4IonTable *theIonTable = (G4IonTable*)(G4ParticleTable::GetParticleTable()->GetIonTable()); + dynamicDaughter = new G4DynamicParticle + (theIonTable->GetIon(daughterZ,daughterA,finalDaughterExcitation), + daughterMomentum1); + products->PushProducts (dynamicDaughter); + } + return products; +} +//////////////////////////////////////////////////////////////////////////////// +// + + +G4DecayProducts *G4NuclearDecayChannel::BetaDecayIt() +{ + if (GetVerboseLevel()>1) G4cout << "G4Decay::BetaDecayIt()"<GetPDGMass(); + sumofdaughtermass += daughtermass[index]; + } + + //create parent G4DynamicParticle at rest + G4ParticleMomentum dummy; + G4DynamicParticle * parentparticle = new G4DynamicParticle( parent, dummy, 0.0); + + //create G4Decayproducts + G4DecayProducts *products = new G4DecayProducts(*parentparticle); + delete parentparticle; + + + //calculate daughter momentum + // Generate two + G4double rd1, rd2, rd; + G4double daughtermomentum[3]; + G4double daughterenergy[3]; + G4double momentummax=0.0, momentumsum = 0.0; + G4double Q = pmass - sumofdaughtermass; + G4double fermif; + G4BetaFermiFunction* aBetaFermiFunction; + if (decayMode == 1) { + // beta-decay + aBetaFermiFunction = new G4BetaFermiFunction (daughterA, daughterZ); + } else { + // beta+decay + aBetaFermiFunction = new G4BetaFermiFunction (daughterA, -daughterZ); + } + if (GetVerboseLevel()>1) { + G4cout<< " Q = " <PushProducts(daughterparticle); + + costhetan = (daughtermomentum[1]*daughtermomentum[1]- + daughtermomentum[2]*daughtermomentum[2]- + daughtermomentum[0]*daughtermomentum[0])/ + (2.0*daughtermomentum[2]*daughtermomentum[0]); + sinthetan = sqrt((1.0-costhetan)*(1.0+costhetan)); + phin = 2.0*M_PI*G4UniformRand()*rad; + sinphin = sin(phin); + cosphin = cos(phin); + G4ParticleMomentum direction2; + direction2.setX( sinthetan*cosphin*costheta*cosphi - + sinthetan*sinphin*sinphi + costhetan*sintheta*cosphi); + direction2.setY( sinthetan*cosphin*costheta*sinphi + + sinthetan*sinphin*cosphi + costhetan*sintheta*sinphi); + direction2.setZ( -sinthetan*cosphin*sintheta + + costhetan*costheta); + daughterparticle = new G4DynamicParticle + ( daughters[2], direction2*(daughtermomentum[2]/direction2.mag())); + products->PushProducts(daughterparticle); + + daughterparticle = + new G4DynamicParticle (daughters[1], + (direction0*daughtermomentum[0] + + direction2*(daughtermomentum[2]/direction2.mag()))*(-1.0)); + products->PushProducts(daughterparticle); + + // delete daughterparticle; + + if (GetVerboseLevel()>1) { + G4cout << "G4NuclearDecayChannel::BetaDecayIt "; + G4cout << " create decay products in rest frame " <DumpInfo(); + } + return products;} + + + + + + + + + diff --git a/source/processes/hadronic/models/radiative_decay/src/G4NucleusLimits.cc b/source/processes/hadronic/models/radiative_decay/src/G4NucleusLimits.cc new file mode 100644 index 0000000000..613cb2429a --- /dev/null +++ b/source/processes/hadronic/models/radiative_decay/src/G4NucleusLimits.cc @@ -0,0 +1,114 @@ +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// MODULE: G4NucleusLimits.cc +// +// Version: 0.b.4 +// Date: 14/04/00 +// Author: F Lei & P R Truscott +// Organisation: DERA UK +// Customer: ESA/ESTEC, NOORDWIJK +// Contract: 12115/96/JG/NL Work Order No. 3 +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// CHANGE HISTORY +// -------------- +// +// 29 February 2000, P R Truscott, DERA UK +// 0.b.3 release. +// +// 14 April 2000, F Lei, DERA UK +// 0.b.4 release. No change in this class + +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +/////////////////////////////////////////////////////////////////////////////// +// +#include "G4NucleusLimits.hh" +//////////////////////////////////////////////////////////////////////////////// +// +G4NucleusLimits::G4NucleusLimits () + : aMin(1), aMax(240), zMin(0), zMax(100) + // + // + // Default constructor sets the limits to cover all nuclei with Z<100. + // +{;} +//////////////////////////////////////////////////////////////////////////////// +// +G4NucleusLimits::G4NucleusLimits + (G4int aMin1, G4int aMax1, G4int zMin1, G4int zMax1) +{ + // + // + // check that aMin1 is within [1, 240]. + // + if (aMin1 < 1) {aMin = 1;} + else if (aMin1 > 240) {aMin = 240;} + else {aMin = aMin1;} + + // + // + // check that aMax1 is within [1, 240]. + // + if (aMax1 < 1) {aMax = 1;} + else if (aMax1 > 240) {aMax = 240;} + else {aMax = aMax1;} + + // + // + // If aMin > aMax then swap them. + // + if (aMin > aMax) { + G4int t = aMin; + aMin = aMax; + aMax = t; + } + // + // + // check that zMin1 is within [0, 100]. + // + if (zMin1 < 0) {zMin = 0;} + else if (zMin1 > 100) {zMin = 100;} + else {zMin = zMin1;} + + // + // + // check that zMax1 is within [0, 100]. + // + if (zMax1 < 0) {zMax = 0;} + else if (zMax1 > 100) {zMax = 100;} + else {zMax = zMax1;} + + // + // + // If zMin > zMax then swap them. + // + if (zMin > zMax) { + G4int t = zMin; + zMin = zMax; + zMax = t; + } + +} +//////////////////////////////////////////////////////////////////////////////// +// +G4NucleusLimits::~G4NucleusLimits () +{;} +//////////////////////////////////////////////////////////////////////////////// +// +G4std::ostream &operator << (G4std::ostream &s, const G4NucleusLimits &q) +// +// +// Definition of the insertion operator << to provide the nucleus limits to +// ostream. +// +{ + s <<"Atomic weight: " <" <" <GetVerboseLevel(); +} +/////////////////////////////////////////////////////////////////////////////// +// +G4bool G4RIsotopeTable::FindIsotope(G4IsotopeProperty* property) +{ + // do nothing, it is here just for the compiler + // it is required by the base class + return true; +} +/////////////////////////////////////////////////////////////////////////////// +// +G4IsotopeProperty* G4RIsotopeTable::GetIsotope(G4int Z, G4int A, G4double E) +{ + G4String fname = GetIsotopeName(Z, A, E); + G4int j = -1; + for (G4int i = 0 ; i< Entries(); i++) { + if(fIsotopeNameList[i] == fname) j = i;} + if (j >=0) { + +#ifdef G4VERBOSE + if (GetVerboseLevel()>0) { + G4cout <<"G4RIsotopeTable::GetIsotope No. : "; + G4cout <SetLifeTime(meanlife); + fProperty->SetAtomicNumber(Z); + fProperty->SetAtomicMass(A); + // Notic that the value of E may have been changed + fProperty->SetEnergy(E); + // The spin is not being used in the current implementation + fProperty->SetiSpin(0); + // the decaytable will be loaded later in G4RadioactiveDecay when it is needed + fProperty->SetDecayTable(0); + + fIsotopeList.push_back(fProperty); + fname = GetIsotopeName(Z, A, E); + fIsotopeNameList.push_back(fname); +#ifdef G4VERBOSE + if (GetVerboseLevel()>0) { + G4cout <<"G4RIsotopeTable::GetIsotope create: "; + G4cout <0) { + G4cerr <<"G4RIsotopeTable::GetIsotope Name: "; + G4cerr <>recordType >>a >>b; + if (recordType == "P") + { + if (abs(a*keV-aE) < levelTolerance) + { + found = true; + lifetime = b/0.693147*s ; + // in the database was half-life! + aE = a*keV; + // pass back the correct energy + } + } + } + } + if (!found && aE ) + { + G4cout <<"G4RIsotopeTable::GetMeanLife() : "; + G4cout <<"cannot find ion of required excitation E = " << aE << G4endl; + G4cout <<"state in radioactive data file " <0) { + G4cout <<"G4RIsotopeTable::GetMeanLifeTime: "; + G4cout <1) { + G4cout <<"G4RadioactiveDecay constructor Name: "; + G4cout <GetIonTable()); + G4VIsotopeTable *aVirtualTable = theIsotopeTable; + theIonTable->RegisterIsotopeTable(aVirtualTable); + // + // + // Reset the contents of the list of nuclei for which decay scheme data + // have been loaded. + // + LoadedNuclei.clear(); + // + // + // Apply default values. + // + NSourceBin = 1; + SBin[0] = 0.* s; + SBin[1] = 1e10 * s; + SProfile[0] = 1.; + SProfile[1] = 1.; + NDecayBin = 1; + DBin[0] = (1e10 -1.) * s ; + DBin[1] = 1e10 * s; + DProfile[0] = 1.; + DProfile[1] = 0.; + NSplit = 1; + AnalogueMC = true ; + BRBias = true ; + // + // RDM applies to xall logical volumes as default + SelectAllVolumes(); +} +//////////////////////////////////////////////////////////////////////////////// +// +// +// Destructor +// +G4RadioactiveDecay::~G4RadioactiveDecay() +{ + if (aPhysicsTable != NULL) + { + aPhysicsTable->clearAndDestroy(); + delete aPhysicsTable; + } + // delete theIsotopeTable; + delete theRadioactiveDecaymessenger; +} + +/////////////////////////////////////////////////////////////////////////////// +// +// +// IsApplicable +// +G4bool G4RadioactiveDecay::IsApplicable(const G4ParticleDefinition & + aParticle) +{ + // + // + // All particles, other than G4Ions, are rejected by default. + // + if (!(aParticle.GetParticleType() == "nucleus")) {return false;} + else if (aParticle.GetPDGLifeTime() < 0. && + aParticle.GetParticleName() != "GenericIon") { + return false; + } + // + // + // Determine whether the nuclide falls into the correct A and Z range. + // + G4int A = ((const G4Ions*) (&aParticle))->GetAtomicMass(); + G4int Z = ((const G4Ions*) (&aParticle))->GetAtomicNumber(); + if( A> theNucleusLimits.GetAMax() || A< theNucleusLimits.GetAMin()) + {return false;} + else if( Z> theNucleusLimits.GetZMax() || Z< theNucleusLimits.GetZMin()) + {return false;} + return true; +} +/////////////////////////////////////////////////////////////////////////////// +// +// +// IsLoaded +// +G4bool G4RadioactiveDecay::IsLoaded(const G4ParticleDefinition & + aParticle) +{ + // + // + // Check whether the radioactive decay data on the ion have already been + // loaded. + // + return G4std::binary_search(LoadedNuclei.begin(), + LoadedNuclei.end(), + aParticle.GetParticleName()); +} +//////////////////////////////////////////////////////////////////////////////// +// +// +// SelectAVolume +// +void G4RadioactiveDecay::SelectAVolume(const G4String aVolume) +{ + + G4LogicalVolumeStore *theLogicalVolumes; + G4LogicalVolume *volume; + theLogicalVolumes=G4LogicalVolumeStore::GetInstance(); + for (G4int i = 0; i < theLogicalVolumes->entries(); i++){ + volume=theLogicalVolumes->operator()(i); + if (volume->GetName() == aVolume) { + ValidVolumes.push_back(aVolume); + G4std::sort(ValidVolumes.begin(), ValidVolumes.end()); + // sort need for performing binary_search +#ifdef G4VERBOSE + if (GetVerboseLevel()>0) + G4cout << " RDM Applies to : " << aVolume << G4endl; +#endif + }else if(i == theLogicalVolumes->entries()) + { + G4cerr << "SelectAVolume: "<entries(); i++){ + volume=theLogicalVolumes->operator()(i); + if (volume->GetName() == aVolume) { + G4std::vector::iterator location; + location = G4std::find(ValidVolumes.begin(),ValidVolumes.end(),aVolume); + if (location != ValidVolumes.end()) { + ValidVolumes.erase(location); + G4std::sort(ValidVolumes.begin(), ValidVolumes.end()); + }else{ + G4cerr << " DeselectVolume:" << aVolume << " is not in the list"<< G4endl; + } +#ifdef G4VERBOSE + if (GetVerboseLevel()>0) + G4cout << " DeselectVolume: " << aVolume << " is removed from list"<entries()) + { + G4cerr << " DeselectVolume:" << aVolume << "is not a valid logical volume name"<< G4endl; + } + } +} +//////////////////////////////////////////////////////////////////////////////// +// +// +// SelectAllVolumes +// +void G4RadioactiveDecay::SelectAllVolumes() +{ + G4LogicalVolumeStore *theLogicalVolumes; + G4LogicalVolume *volume; + theLogicalVolumes=G4LogicalVolumeStore::GetInstance(); + ValidVolumes.clear(); +#ifdef G4VERBOSE + if (GetVerboseLevel()>0) + G4cout << " RDM Applies to all Volumes" << G4endl; +#endif + for (G4int i = 0; i < theLogicalVolumes->entries(); i++){ + volume=theLogicalVolumes->operator()(i); + ValidVolumes.push_back(volume->GetName()); +#ifdef G4VERBOSE + if (GetVerboseLevel()>0) + G4cout << " RDM Applies to Volume " << volume->GetName() << G4endl; +#endif + } + G4std::sort(ValidVolumes.begin(), ValidVolumes.end()); + // sort needed in order to allow binary_search +} +//////////////////////////////////////////////////////////////////////////////// +// +// +// DeSelectAllVolumes +// +void G4RadioactiveDecay::DeselectAllVolumes() +{ + ValidVolumes.clear(); +#ifdef G4VERBOSE + if (GetVerboseLevel()>0) + G4cout << " RDM removed from all volumes" << G4endl; +#endif + +} + +/////////////////////////////////////////////////////////////////////////////// +// +// +// IsRateTableReady +// +G4bool G4RadioactiveDecay::IsRateTableReady(const G4ParticleDefinition & + aParticle) +{ + // + // + // Check whether the radioactive decay rates table on the ion has already + // been calculated. + // + G4String aParticleName = aParticle.GetParticleName(); + for (G4int i = 0; i < theDecayRateTableVector.size(); i++) + { + if (theDecayRateTableVector[i].GetIonName() == aParticleName) + return true ; + } + return false; +} +//////////////////////////////////////////////////////////////////////////////// +// +// +// GetDecayRateTable +// +// retrieve the decayratetable for the specified aParticle +// +void G4RadioactiveDecay::GetDecayRateTable(const G4ParticleDefinition & + aParticle) +{ + + G4String aParticleName = aParticle.GetParticleName(); + + for (G4int i = 0; i < theDecayRateTableVector.size(); i++) + { + if (theDecayRateTableVector[i].GetIonName() == aParticleName) + { + theDecayRateVector = theDecayRateTableVector[i].GetItsRates() ; + } + } +#ifdef G4VERBOSE + if (GetVerboseLevel()>0) + { + G4cout <<"The DecayRate Table for " + << aParticleName << " is selected." << G4endl; + } +#endif +} +//////////////////////////////////////////////////////////////////////////////// +// +// +// GetTaoTime +// +// to perform the convilution of the sourcetimeprofile function with the +// decay constants in the decay chain. +// +G4double G4RadioactiveDecay::GetTaoTime(G4double t, G4double tao) +{ + G4double taotime =0.; + G4int nbin; + if ( t > SBin[NSourceBin]) { + nbin = NSourceBin;} + else { + nbin = 0; + while (t > SBin[nbin]) nbin++; + nbin--;} + if (nbin > 0) { + for (G4int i = 0; i < nbin; i++) + { + taotime += SProfile[i] * (exp(-(t-SBin[i+1])/tao)-exp(-(t-SBin[i])/tao)); + } + } + taotime += SProfile[nbin] * (1-exp(-(t-SBin[nbin])/tao)); +#ifdef G4VERBOSE + if (GetVerboseLevel()>1) + {G4cout <<" Tao time: " <1) + {G4cout <<" Decay time: " < DBin[i]) return i+1; + } + return 1; +} +//////////////////////////////////////////////////////////////////////////////// +// +// +// GetMeanLifeTime +// +// this is required by the base class +// +G4double G4RadioactiveDecay::GetMeanLifeTime(const G4Track& theTrack, + G4ForceCondition* ) +{ + // For varience reduction implementation the time is set to 0 so as to + // force the particle to decay immediately. + // in analogueMC mode it return the particles meanlife. + // + G4double meanlife = 0.; + if (AnalogueMC) { + const G4DynamicParticle* theParticle = theTrack.GetDynamicParticle(); + G4ParticleDefinition* theParticleDef = theParticle->GetDefinition(); + G4double theLife = theParticleDef->GetPDGLifeTime(); + +#ifdef G4VERBOSE + if (GetVerboseLevel()>2) + { + G4cout <<"G4RadioactiveDecay::GetMeanLifeTime() " <GetKineticEnergy()/GeV <<"[GeV]"; + G4cout <<"Mass:" <GetMass()/GeV <<"[GeV]"; + G4cout <<"Life time: " <GetPDGStable()) {meanlife = DBL_MAX;} + else if (theLife < 0.0) {meanlife = DBL_MAX;} + else {meanlife = theLife;} + } +#ifdef G4VERBOSE + if (GetVerboseLevel()>1) + {G4cout <<"mean life time: " <GetDefinition(); + G4double aCtau = c_light * aParticleDef->GetPDGLifeTime(); + G4double aMass = aParticle->GetMass(); + +#ifdef G4VERBOSE + if (GetVerboseLevel()>2) { + G4cout << "G4RadioactiveDecay::GetMeanFreePath() "<< G4endl; + G4cout << "KineticEnergy:" << aParticle->GetKineticEnergy()/GeV <<"[GeV]"; + G4cout << "Mass:" << aMass/GeV <<"[GeV]"; + G4cout << "c*Tau:" << aCtau/m <<"[m]" <GetPDGStable()) { + pathlength = DBL_MAX; + + } else if (aCtau < 0.0) { + pathlength = DBL_MAX; + + //check if the particle has very short life time ? + } else if (aCtau < DBL_MIN) { + pathlength = DBL_MIN; + + //check if zero mass + } else if (aMass < DBL_MIN) { + pathlength = DBL_MAX; +#ifdef G4VERBOSE + if (GetVerboseLevel()>1) { + G4cerr << " Zero Mass particle " << G4endl; + } +#endif + } else { + //calculate the mean free path + // by using normalized kinetic energy (= Ekin/mass) + G4double rKineticEnergy = aParticle->GetKineticEnergy()/aMass; + if ( rKineticEnergy > HighestBinValue) { + // beta >> 1 + pathlength = ( rKineticEnergy + 1.0)* aCtau; + } else if ( rKineticEnergy > LowestBinValue) { + // check if aPhysicsTable exists + if (aPhysicsTable == NULL) BuildPhysicsTable(*aParticleDef); + // beta is in the range valid for PhysicsTable + pathlength = aCtau * + ((*aPhysicsTable)(0))-> GetValue(rKineticEnergy,isOutRange); + } else if ( rKineticEnergy < DBL_MIN ) { + // too slow particle +#ifdef G4VERBOSE + if (GetVerboseLevel()>2) { + G4cout << "G4Decay::GetMeanFreePath() !!particle stops!!"; + G4cout << aParticleDef->GetParticleName() << G4endl; + G4cout << "KineticEnergy:" << aParticle->GetKineticEnergy()/GeV <<"[GeV]"; + } +#endif + pathlength = DBL_MIN; + } else { + // beta << 1 + pathlength = (aParticle->GetTotalMomentum())/aMass*aCtau ; + } + } +#ifdef G4VERBOSE + if (GetVerboseLevel()>1) { + G4cout << "mean free path: "<< pathlength/m << "[m]" << G4endl; + } +#endif + return pathlength; +} +//////////////////////////////////////////////////////////////////////////////// +// +// +// +// +void G4RadioactiveDecay::BuildPhysicsTable(const G4ParticleDefinition&) +{ + // if aPhysicsTableis has already been created, do nothing + if (aPhysicsTable != NULL) return; + + // create aPhysicsTable + if (GetVerboseLevel()>1) G4cerr <<" G4Decay::BuildPhysicsTable() "<< G4endl; + aPhysicsTable = new G4PhysicsTable(1); + + //create physics vector + G4PhysicsLogVector* aVector = new G4PhysicsLogVector( + LowestBinValue, + HighestBinValue, + TotBin); + + G4double beta, gammainv; + // fill physics Vector + G4int i; + for ( i = 0 ; i < TotBin ; i++ ) { + gammainv = 1.0/(aVector->GetLowEdgeEnergy(i) + 1.0); + beta = sqrt((1.0 - gammainv)*(1.0 +gammainv)); + aVector->PutValue(i, beta/gammainv); + } + aPhysicsTable->insert(aVector); +} +/////////////////////////////////////////////////////////////////////////////// +// +// LoadDecayTable +// +// To load the decay scheme from the Radioactivity database for +// theParentNucleus. +// +G4DecayTable *G4RadioactiveDecay::LoadDecayTable (G4ParticleDefinition + &theParentNucleus) +{ + // + // + // Create and initialise variables used in the method. + // + G4DecayTable *theDecayTable = new G4DecayTable(); + // + // + // Determine the filename of the file containing radioactive decay data. Open + // it. + // + G4int A = ((const G4Ions*)(&theParentNucleus))->GetAtomicMass(); + G4int Z = ((const G4Ions*)(&theParentNucleus))->GetAtomicNumber(); + G4double E = ((const G4Ions*)(&theParentNucleus))->GetExcitationEnergy(); + + G4String dirName = getenv("G4RADIOACTIVEDATA"); + LoadedNuclei.push_back(theParentNucleus.GetParticleName()); + G4std::sort( LoadedNuclei.begin(), LoadedNuclei.end() ); + // sort needed to allow binary_search + + char val[100]; + G4std::ostrstream os(val,100); + os <>recordType >>a >>b; + if (found) {complete = true;} + else {found = (abs(a*keV - E)0) { + // a comment line identified and print out the message + // + G4cout << " Warning in G4RadioactiveDecay::LoadDecayTable " << G4endl; + G4cout << " In data file " << file << G4endl; + G4cout << " " << inputLine << G4endl; + } +#endif + } + else + { + tmpStream >>theDecayMode >>a >>b >>c; + a/=1000.; + c/=1000.; + + // cout<< "The decay mode is [LoadTable] "<Insert(anITChannel); + break; + } + case BetaMinus: + // + // + // Decay mode is beta-. + // + if (modeFirstRecord[1]) + {modeFirstRecord[1] = false; modeTotalBR[1] = b;} + else + { + // to work out the Fermi function normalization factor first + G4BetaFermiFunction* aBetaFermiFunction = new G4BetaFermiFunction (A, (Z+1)); + e0 = c*MeV/0.511; + n = aBetaFermiFunction->GetFFN(e0); + + G4BetaMinusDecayChannel *aBetaMinusChannel = new + G4BetaMinusDecayChannel (GetVerboseLevel(), &theParentNucleus, + b, c*MeV, a*MeV, n); + theDecayTable->Insert(aBetaMinusChannel); + modeSumBR[1] += b; + delete aBetaFermiFunction; + } + break; + case BetaPlus: + // + // + // Decay mode is beta+. + // + if (modeFirstRecord[2]) + {modeFirstRecord[2] = false; modeTotalBR[2] = b;} + else + { + G4BetaFermiFunction* aBetaFermiFunction = new G4BetaFermiFunction (A, -(Z-1)); + e0 = c*MeV/0.511; + n = aBetaFermiFunction->GetFFN(e0); + G4BetaPlusDecayChannel *aBetaPlusChannel = new + G4BetaPlusDecayChannel (GetVerboseLevel(), &theParentNucleus, + b, c*MeV, a*MeV, n); + theDecayTable->Insert(aBetaPlusChannel); + modeSumBR[2] += b; + delete aBetaFermiFunction; + } + break; + case KshellEC: + // + // + // Decay mode is K-electron capture. + // + if (modeFirstRecord[3]) + {modeFirstRecord[3] = false; modeTotalBR[3] = b;} + else + { + G4KshellECDecayChannel *aKECChannel = new + G4KshellECDecayChannel (GetVerboseLevel(), &theParentNucleus, + b, c*MeV, a*MeV); + theDecayTable->Insert(aKECChannel); + //delete aKECChannel; + modeSumBR[3] += b; + } + break; + case LshellEC: + // + // + // Decay mode is L-electron capture. + // + if (modeFirstRecord[4]) + {modeFirstRecord[4] = false; modeTotalBR[4] = b;} + else + { + G4LshellECDecayChannel *aLECChannel = new + G4LshellECDecayChannel (GetVerboseLevel(), &theParentNucleus, + b, c*MeV, a*MeV); + theDecayTable->Insert(aLECChannel); + //delete aLECChannel; + modeSumBR[4] += b; + } + break; + case MshellEC: + // + // + // Decay mode is M-electron capture. In this implementation it is added to L-shell case + // + if (modeFirstRecord[5]) + {modeFirstRecord[5] = false; modeTotalBR[5] = b;} + else + { + G4LshellECDecayChannel *aLECChannel = new + G4LshellECDecayChannel (GetVerboseLevel(), &theParentNucleus, + b, c*MeV, a*MeV); + theDecayTable->Insert(aLECChannel); + //delete aLECChannel; + modeSumBR[5] += b; + } + break; + case Alpha: + // + // + // Decay mode is alpha. + // + if (modeFirstRecord[6]) + {modeFirstRecord[6] = false; modeTotalBR[6] = b;} + else + { + G4AlphaDecayChannel *anAlphaChannel = new + G4AlphaDecayChannel (GetVerboseLevel(), &theParentNucleus, + b, c*MeV, a*MeV); + theDecayTable->Insert(anAlphaChannel); + // delete anAlphaChannel; + modeSumBR[6] += b; + } + break; + } + } + } + } + } + DecaySchemeFile.close(); + + // + // + // Go through the decay table and make sure that the branching ratios are + // correctly normalised. + // + G4VDecayChannel *theChannel = NULL; + G4NuclearDecayChannel *theNuclearDecayChannel = NULL; + G4String mode = ""; + G4int j = 0; + G4double theBR = 0.0; + for (i=0; ientries(); i++) + { + theChannel = theDecayTable->GetDecayChannel(i); + theNuclearDecayChannel = static_cast(theChannel); + theDecayMode = theNuclearDecayChannel->GetDecayMode(); + j = 0; + if (theDecayMode != IT) + { + theBR = theChannel->GetBR(); + theChannel->SetBR(theBR*modeTotalBR[theDecayMode]/modeSumBR[theDecayMode]); + } + } + return theDecayTable; +} + +//////////////////////////////////////////////////////////////////////// +// +// +void G4RadioactiveDecay::SetDecayRate(G4int theZ, G4int theA, G4double theE, + G4int theG, G4std::vector theRates, + G4std::vector theTaos) +{ + //fill the decay rate vector + theDecayRate.SetZ(theZ); + theDecayRate.SetA(theA); + theDecayRate.SetE(theE); + theDecayRate.SetGeneration(theG); + theDecayRate.SetDecayRateC(theRates); + theDecayRate.SetTaos(theTaos); +} +////////////////////////////////////////////////////////////////////////// +// +// +void G4RadioactiveDecay::AddDecayRateTable(const G4ParticleDefinition &theParentNucleus) +{ + // 1) To calculate all the coefficiecies required to derive the radioactivities for all + // progeny of theParentNucleus + // + // 2) Add the coefficiencies to the decay rate table vector + // + + // + // Create and initialise variables used in the method. + // + + theDecayRateVector.clear(); + + G4int nGeneration = 0; + G4std::vector rates; + G4std::vector taos; + + // start rate is -1. + rates.push_back(-1.); + // + // + G4int A = ((const G4Ions*)(&theParentNucleus))->GetAtomicMass(); + G4int Z = ((const G4Ions*)(&theParentNucleus))->GetAtomicNumber(); + G4double E = ((const G4Ions*)(&theParentNucleus))->GetExcitationEnergy(); + G4double tao = theParentNucleus.GetPDGLifeTime(); + taos.push_back(tao); + G4int nEntry = 0; + + //fill the decay rate with the intial isotope data + SetDecayRate(Z,A,E,nGeneration,rates,taos); + + // store the decay rate in decay rate vector + theDecayRateVector.push_back(theDecayRate); + nEntry++; + + // now start treating the sencondary generations.. + + G4bool stable = false; + G4int i; + G4int j; + G4int k; + G4VDecayChannel *theChannel = NULL; + G4NuclearDecayChannel *theNuclearDecayChannel = NULL; + G4ITDecayChannel *theITChannel = NULL; + G4BetaMinusDecayChannel *theBetaMinusChannel = NULL; + G4BetaPlusDecayChannel *theBetaPlusChannel = NULL; + G4AlphaDecayChannel *theAlphaChannel = NULL; + G4RadioactiveDecayMode theDecayMode; + // G4NuclearLevelManager levelManager; + //const G4NuclearLevel* level; + G4double theBR = 0.0; + G4int AP = 0; + G4int ZP = 0; + G4int AD = 0; + G4int ZD = 0; + G4double EP = 0.; + G4std::vector TP; + G4std::vector RP; + G4ParticleDefinition *theDaughterNucleus; + G4double daughterExcitation; + G4ParticleDefinition *aParentNucleus; + G4IonTable* theIonTable; + G4DecayTable *aTempDecayTable; + G4double theRate; + G4double TaoPlus; + G4int nS = 0; + G4int nT = nEntry; + G4double brs[7]; + + while (!stable) { + nGeneration++; + for (j = nS; j< nT; j++) { + ZP = theDecayRateVector[j].GetZ(); + AP = theDecayRateVector[j].GetA(); + EP = theDecayRateVector[j].GetE(); + RP = theDecayRateVector[j].GetDecayRateC(); + TP = theDecayRateVector[j].GetTaos(); + +#ifdef G4VERBOSE + if (GetVerboseLevel()>0){ + G4cout <<"G4RadioactiveDecay::AddDecayRateTable : " + << " daughters of ("<< ZP <<", "<> bin >> flux ) { + NSourceBin++; + if (NSourceBin > 99) G4Exception ( "input source data file too big (>100 rows)" ); + SBin[NSourceBin] = bin * s; + SProfile[NSourceBin] = flux; + } + SetAnalogueMonteCarlo(0); +#ifdef G4VERBOSE + if (GetVerboseLevel()>1) + {G4cout <<" Source Timeprofile Nbin = " << NSourceBin <> bin >> flux ) { + NDecayBin++; + if (NDecayBin > 99) G4Exception ( "input bias data file too big (>100 rows)" ); + DBin[NDecayBin] = bin * s; + DProfile[NDecayBin] = flux; + } + G4int i ; + for ( i = 1; i<= NDecayBin; i++) DProfile[i] += DProfile[i-1]; + for ( i = 0; i<= NDecayBin; i++) DProfile[i] /= DProfile[NDecayBin]; + SetAnalogueMonteCarlo(0); +#ifdef G4VERBOSE + if (GetVerboseLevel()>1) + {G4cout <<" Decay Bias Profile Nbin = " << NDecayBin <GetDefinition(); + + // First check whether RDM applies to the current logical volume + // + if(!G4std::binary_search(ValidVolumes.begin(), + ValidVolumes.end(), + theTrack.GetVolume()->GetLogicalVolume()->GetName())) + { +#ifdef G4VERBOSE + if (GetVerboseLevel()>0) + { + G4cout <<"G4RadioactiveDecay::DoIt : " + << theTrack.GetVolume()->GetLogicalVolume()->GetName() + << " 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++) + G4cout << ValidVolumes[i] << G4endl; + } +#endif + fParticleChangeForRadDecay.SetNumberOfSecondaries(0); + // + // + // Kill the parent particle. + // + fParticleChangeForRadDecay.SetStatusChange( fStopAndKill ) ; + fParticleChangeForRadDecay.SetLocalEnergyDeposit(0.0); + ClearNumberOfInteractionLengthLeft(); + return &fParticleChangeForRadDecay; + } + + // now check is the particle is valid for RDM + // + if (!(IsApplicable(*theParticleDef))) + { + // + // The particle is not a Ion or outside the nucleuslimits for decay + // +#ifdef G4VERBOSE + if (GetVerboseLevel()>0) + { + G4cerr <<"G4RadioactiveDecay::DoIt : " + <GetParticleName() + << " is not a valid nucleus for the RDM"<< G4endl; + } +#endif + fParticleChangeForRadDecay.SetNumberOfSecondaries(0); + // + // + // Kill the parent particle. + // + fParticleChangeForRadDecay.SetStatusChange( fStopAndKill ) ; + fParticleChangeForRadDecay.SetLocalEnergyDeposit(0.0); + ClearNumberOfInteractionLengthLeft(); + return &fParticleChangeForRadDecay; + } + + if (!IsLoaded(*theParticleDef)) + { + theParticleDef->SetDecayTable(LoadDecayTable(*theParticleDef)); + } + G4DecayTable *theDecayTable = theParticleDef->GetDecayTable(); + + if (theDecayTable == NULL || theDecayTable->entries() == 0 ) + { + // + // + // There are no data in the decay table. Set the particle change parameters + // to indicate this. + // +#ifdef G4VERBOSE + if (GetVerboseLevel()>0) + { + G4cerr <<"G4RadioactiveDecay::DoIt : decay table not defined for"; + G4cerr <GetParticleName() <0) + { + G4cout <<"DecayIt: Analogue MC version " << G4endl; + } +#endif + // + G4DecayProducts *products = DoDecay(*theParticleDef); + // + // + // Get parent particle information and boost the decay products to the + // laboratory frame based on this information. + // + G4double ParentEnergy = theParticle->GetTotalEnergy(); + G4ThreeVector ParentDirection(theParticle->GetMomentumDirection()); + + if (theTrack.GetTrackStatus() == fStopButAlive ) + { + // + // + // The particle is decayed at rest. + // + // since the time is still for rest particle in G4 we need to add the additional + // time lapsed between the particle come to rest and the actual decay. This time + // is simply sampled with the mean-life of the particle. + // + finalGlobalTime += -log( G4UniformRand()) * theParticleDef->GetPDGLifeTime() ; + energyDeposit += theParticle->GetKineticEnergy(); + } + else + { + // + // + // The particle is decayed in flight (PostStep case). + // + products->Boost( ParentEnergy, ParentDirection); + } + // + // + // Add products in theParticleChangeForRadDecay. + // + G4int numberOfSecondaries = products->entries(); + fParticleChangeForRadDecay.SetNumberOfSecondaries(numberOfSecondaries); +#ifdef G4VERBOSE + if (GetVerboseLevel()>1) { + G4cout <<"G4RadioactiveDecay::DoIt : Decay vertex :"; + G4cout <<" Time: " <DumpInfo(); + } +#endif + for (index=0; index < numberOfSecondaries; index++) + { + G4Track* secondary = new G4Track + (products->PopProducts(), finalGlobalTime, currentPosition); + secondary->SetGoodForTrackingFlag(); + fParticleChangeForRadDecay.AddSecondary(secondary); + } + delete products; + // + // end of analogue MC algarithm + // + } + else { + // + // Varaice Reduction Method + // +#ifdef G4VERBOSE + if (GetVerboseLevel()>0) + { + G4cout <<"DecayIt: Variance Reduction version " << G4endl; + } +#endif + if (!IsRateTableReady(*theParticleDef)) { + // if the decayrates are not ready, calculate them and + // add to the rate table vector + AddDecayRateTable(*theParticleDef); + } + //retrieve the rates + GetDecayRateTable(*theParticleDef); + // + // declare some of the variables required in the implementation + // + G4ParticleDefinition* parentNucleus; + G4IonTable *theIonTable; + G4int PZ; + G4int PA; + G4double PE; + G4std::vector PT; + G4std::vector PR; + G4double taotime; + G4double decayRate; + + G4int i; + G4int j; + G4int numberOfSecondaries; + G4int totalNumberOfSecondaries = 0; + G4double currentTime; + G4int ndecaych; + G4DynamicParticle* asecondaryparticle; + G4DecayProducts* products = NULL; + G4std::vector secondaryparticles; + G4std::vector pw; + pw.clear(); + //now apply the nucleus splitting + // + // + for (G4int n = 0; n < NSplit; n++) + { + // + // Get the decay time following the decay probability function + // suppllied by user + // + G4double theDecayTime = GetDecayTime(); + + G4int nbin = GetDecayTimeBin(theDecayTime); + + // claculate the first part of the weight function + + G4double weight1 =1./DProfile[nbin-1] + *(DBin[nbin]-DBin[nbin-1]) + /NSplit; + if (nbin > 1) { + weight1 = 1./(DProfile[nbin]-DProfile[nbin-2]) + *(DBin[nbin]-DBin[nbin-1]) + /NSplit;} + // it should be calculated in seconds + weight1 /= s ; + // + // loop over all the possible secondaries of the nucleus + // the first one is itself. + // + for ( i = 0; iGetIonTable()); + parentNucleus = theIonTable->GetIon(PZ,PA,PE); + + // decide whther to apply branching ratio bias or not + // + if (BRBias){ + G4DecayTable *theDecayTable = parentNucleus->GetDecayTable(); + ndecaych = G4int(theDecayTable->entries()*G4UniformRand()); + G4VDecayChannel *theDecayChannel = theDecayTable->GetDecayChannel(ndecaych); + if (theDecayChannel == NULL) + { + // Decay channel not found. +#ifdef G4VERBOSE + if (GetVerboseLevel()>0) + { + G4cerr <<"G4RadioactiveDecay::DoIt : can not determine decay channel"; + G4cerr <DumpInfo(); + } +#endif + } + else + { + // A decay channel has been identified, so execute the DecayIt. + G4double tempmass = parentNucleus->GetPDGMass(); + tempprods = theDecayChannel->DecayIt(tempmass); + weight *= (theDecayChannel->GetBR())*(theDecayTable->entries()); + } + } + else { + tempprods = DoDecay(*parentNucleus); + } + // + // save the secondaries for buffers + // + numberOfSecondaries = tempprods->entries(); + currentTime = finalGlobalTime + theDecayTime; + for (index=0; index < numberOfSecondaries; index++) + { + asecondaryparticle = tempprods->PopProducts(); + if (asecondaryparticle->GetDefinition()->GetBaryonNumber() < 5){ + pw.push_back(weight); + secondaryparticles.push_back(asecondaryparticle); + } + } + // + delete tempprods; + + //end of i loop + } + + // end of n loop + } + // now deal with the secondaries in the two stl containers + // and submmit them back to the tracking manager + // + totalNumberOfSecondaries = pw.size(); + fParticleChangeForRadDecay.SetNumberOfSecondaries(totalNumberOfSecondaries); + for (index=0; index < totalNumberOfSecondaries; index++) + { + G4Track* secondary = new G4Track( + secondaryparticles[index], currentTime, currentPosition); + secondary->SetGoodForTrackingFlag(); + secondary->SetWeight(pw[index]); + fParticleChangeForRadDecay.AddSecondary(secondary); + } + // + // make sure the original track is set to stop and its kinematic energy collected + // + //theTrack.SetTrackStatus(fStopButAlive); + //energyDeposit += theParticle->GetKineticEnergy(); + + } + + // + // Kill the parent particle. + // + fParticleChangeForRadDecay.SetStatusChange( fStopAndKill ) ; + fParticleChangeForRadDecay.SetLocalEnergyDeposit(energyDeposit); + // + fParticleChangeForRadDecay.SetTimeChange( finalGlobalTime ); + // + // Reset NumberOfInteractionLengthLeft. + // + ClearNumberOfInteractionLengthLeft(); + + return &fParticleChangeForRadDecay ; + } +} + +//////////////////////////////////////////////////////////////////////////////// +// +// +// DoDecay +// +G4DecayProducts* G4RadioactiveDecay::DoDecay( G4ParticleDefinition& theParticleDef ) +{ + G4DecayProducts *products = 0; + // + // + // follow the decaytable and generate the secondaries... + // + // +#ifdef G4VERBOSE + if (GetVerboseLevel()>0) + { + G4cout<<"Begin of DoDecay..."<0) + { + G4cout <<"Selecte a channel..."<SelectADecayChannel(); + if (theDecayChannel == 0) + { + // Decay channel not found. + // + G4cerr <<"G4RadioactiveDecay::DoIt : can not determine decay channel"; + G4cerr <DumpInfo(); + } + else + { + // + // A decay channel has been identified, so execute the DecayIt. + // +#ifdef G4VERBOSE + if (GetVerboseLevel()>1) + { + G4cerr <<"G4RadioactiveDecay::DoIt : selected decay channel addr:"; + G4cerr <DecayIt(tempmass); + + } + return products; + +} + + + + + + + + + diff --git a/source/processes/hadronic/models/radiative_decay/src/G4RadioactiveDecayMode.cc b/source/processes/hadronic/models/radiative_decay/src/G4RadioactiveDecayMode.cc new file mode 100644 index 0000000000..30d0247ed1 --- /dev/null +++ b/source/processes/hadronic/models/radiative_decay/src/G4RadioactiveDecayMode.cc @@ -0,0 +1,27 @@ + +#include "G4RadioactiveDecayMode.hh" + +G4std::istream &operator >> (G4std::istream &s, G4RadioactiveDecayMode &q) +{ + G4String a; + s >> a; + if (a == "IT") + {q = IT;} + else if (a == "BetaMinus") + {q = BetaMinus;} + else if (a == "BetaPlus") + {q = BetaPlus;} + else if (a == "KshellEC") + {q = KshellEC;} + else if (a == "LshellEC") + {q = LshellEC;} + else if (a == "MshellEC") + {q = MshellEC;} + else if (a == "Alpha") + {q = Alpha;} + else + {q = ERROR;} + return s; +} +//////////////////////////////////////////////////////////////////////////////// + diff --git a/source/processes/hadronic/models/radiative_decay/src/G4RadioactiveDecayRate.cc b/source/processes/hadronic/models/radiative_decay/src/G4RadioactiveDecayRate.cc new file mode 100644 index 0000000000..a73298b6b9 --- /dev/null +++ b/source/processes/hadronic/models/radiative_decay/src/G4RadioactiveDecayRate.cc @@ -0,0 +1,64 @@ +// G4RadioactiveDecayRate.cc + +#include "G4ParticleDefinition.hh" +#include "G4ParticleTable.hh" +#include "G4DecayTable.hh" +#include "G4DecayProducts.hh" +#include "G4RadioactiveDecayRate.hh" + + +G4RadioactiveDecayRate::G4RadioactiveDecayRate() +{ + ; + //do nothing at the momment +} + + + +G4RadioactiveDecayRate::G4RadioactiveDecayRate(const G4RadioactiveDecayRate &right) +{ + Z = right.Z; + A = right.A; + E = right.E; + generation = right.generation; + decayRateC = right.decayRateC; + taos = right.taos; + // verboseLevel = right.verboseLevel; +} + +G4RadioactiveDecayRate & G4RadioactiveDecayRate::operator=(const G4RadioactiveDecayRate &right) +{ + if (this != &right) { + Z = right.Z; + A = right.A; + E = right.E; + generation = right.generation; + decayRateC = right.decayRateC; + taos = right.taos; + // verboseLevel = right.verboseLevel; + } + return *this; +} + + +G4RadioactiveDecayRate::~G4RadioactiveDecayRate() +{ ;} + + +void G4RadioactiveDecayRate::DumpInfo() +{ + G4cout << " Z: " << Z << " A: " << A << " E: " << E <SetGuidance("Controls for the Radioactive Decay Module."); + // + // + // Command to define the limits on nucleus the RDM will treat. + // + nucleuslimitsCmd = new + G4UIcmdWithNucleusLimits("/grdm/nucleusLimits",this); + nucleuslimitsCmd->SetGuidance + ("Set the amotic weight and number limits for the RDM."); + nucleuslimitsCmd->SetParameterName("aMin","aMax","zMin","zMax",true); + // + + // + // The next command contols whether the decay will be treated analoguely or + // with variance reduction + // + analoguemcCmd = new G4UIcmdWithABool ("/grdm/analogueMC",this); + analoguemcCmd->SetGuidance("false: variance reduction method; true: analogue method"); + analoguemcCmd->SetParameterName("AnalogueMC",true); + analoguemcCmd->SetDefaultValue(true); + + // + // + // Command to selete a logical volume for RDM. + // + avolumeCmd = new + G4UIcmdWithAString("/grdm/selectVolume",this); + avolumeCmd->SetGuidance + ("Suppply a logical volumes name to add it to the RDM apply list"); + avolumeCmd->SetParameterName("aVolume",false); + // + // + // + // Command to de-selete a logical volume for RDM. + // + deavolumeCmd = new + G4UIcmdWithAString("/grdm/deselectVolume",this); + deavolumeCmd->SetGuidance + ("Suppply a logical volumes name to remove it from the RDM apply list"); + deavolumeCmd->SetParameterName("aVolume",false); + // + // + // Command to selete all logical volumes for RDM. + // + allvolumesCmd = new + G4UIcmdWithoutParameter("/grdm/allVolumes",this); + allvolumesCmd->SetGuidance + (" apply RDM to all logical volumes. No parameter required."); + // allvolumeCmd->SetParameterName("AddAVolume",true); + + // + // Command to de-selete a logical volume for RDM. + // + deallvolumesCmd = new + G4UIcmdWithoutParameter("/grdm/noVolumes",this); + deallvolumesCmd->SetGuidance + (" RDM is not applied to any logical volumes"); + + // deallvolumesCmd->SetParameterName("RemoveAVolume",true); + // + // The next command contols whether the branching ratio biasing will be applied or not + // + brbiasCmd = new G4UIcmdWithABool ("/grdm/BRbias",this); + brbiasCmd->SetGuidance("false: no biasing; true: all branches are treated as equal"); + brbiasCmd->SetParameterName("BRBias",true); + brbiasCmd->SetDefaultValue(true); + + // + // Command to define the incident particle source time profile. + // + sourcetimeprofileCmd = new + G4UIcmdWithAString("/grdm/sourceTimeProfile",this); + sourcetimeprofileCmd->SetGuidance + ("Supply the name of the ascii file containing the source particle time profile"); + sourcetimeprofileCmd->SetParameterName("STimeProfile",true); + sourcetimeprofileCmd->SetDefaultValue("source.data"); + // + // + // Command to define the incident particle source time profile. + // + decaybiasprofileCmd = new + G4UIcmdWithAString("/grdm/decayBiasProfile",this); + decaybiasprofileCmd->SetGuidance + ("Supply the name of the ascii file containing the decay bias time profile"); + decaybiasprofileCmd->SetParameterName("DBiasProfile",true); + decaybiasprofileCmd->SetDefaultValue("bias.data"); + // + + // + // This command setup the nuclei spliting parameter + // + splitnucleiCmd = new G4UIcmdWithAnInteger("/grdm/splitNuclei",this); + splitnucleiCmd->SetGuidance("Set number of spliting for the isotopes."); + splitnucleiCmd->SetParameterName("NSplit",true); + splitnucleiCmd->SetDefaultValue(1); + splitnucleiCmd->SetRange("NSplit>=1"); + + // + // This command setup the verbose level of radioactive decay + // + verboseCmd = new G4UIcmdWithAnInteger("/grdm/verbose",this); + verboseCmd->SetGuidance("Set verbose level: 0, 1, 2 or 3"); + verboseCmd->SetParameterName("VerboseLevel",true); + verboseCmd->SetDefaultValue(1); + verboseCmd->SetRange("VerboseLevel>=0"); + +} +//////////////////////////////////////////////////////////////////////////////// +// +G4RadioactiveDecaymessenger::~G4RadioactiveDecaymessenger () +{ + delete grdmDirectory; + delete nucleuslimitsCmd; + delete sourcetimeprofileCmd; + delete decaybiasprofileCmd; + delete analoguemcCmd; + delete brbiasCmd; + delete splitnucleiCmd; + delete verboseCmd; + delete avolumeCmd; + delete deavolumeCmd; + delete allvolumesCmd; + delete deallvolumesCmd; +} +//////////////////////////////////////////////////////////////////////////////// +// +void G4RadioactiveDecaymessenger::SetNewValue (G4UIcommand *command, G4String newValues) +{ + if (command==nucleuslimitsCmd) {theRadioactiveDecayContainer-> + SetNucleusLimits(nucleuslimitsCmd->GetNewNucleusLimitsValue(newValues));} + else if (command==analoguemcCmd) { + G4int vl; + const char* t = newValues; + G4std::istrstream is((char*)t); + is >> vl; + theRadioactiveDecayContainer->SetAnalogueMonteCarlo(vl!=0);} + else if (command==avolumeCmd) {theRadioactiveDecayContainer-> + SelectAVolume(newValues);} + else if (command==deavolumeCmd) {theRadioactiveDecayContainer-> + DeselectAVolume(newValues);} + else if (command==allvolumesCmd) {theRadioactiveDecayContainer-> + SelectAllVolumes();} + else if (command==deallvolumesCmd) {theRadioactiveDecayContainer-> + DeselectAllVolumes();} + else if (command==brbiasCmd) { + G4int vl; + const char* t = newValues; + G4std::istrstream is((char*)t); + is >> vl; + theRadioactiveDecayContainer->SetBRBias(vl!=0);} + else if (command==sourcetimeprofileCmd) {theRadioactiveDecayContainer-> + SetSourceTimeProfile(newValues);} + else if (command==decaybiasprofileCmd) {theRadioactiveDecayContainer-> + SetDecayBias(newValues);} + else if (command==splitnucleiCmd) {theRadioactiveDecayContainer-> + SetSplitNuclei(splitnucleiCmd->GetNewIntValue(newValues));} + else if (command==verboseCmd) {theRadioactiveDecayContainer-> + SetVerboseLevel(verboseCmd->GetNewIntValue(newValues));} +} + + + + + + diff --git a/source/processes/hadronic/models/radiative_decay/src/G4UIcmdWithNucleusLimits.cc b/source/processes/hadronic/models/radiative_decay/src/G4UIcmdWithNucleusLimits.cc new file mode 100644 index 0000000000..8fbaf689db --- /dev/null +++ b/source/processes/hadronic/models/radiative_decay/src/G4UIcmdWithNucleusLimits.cc @@ -0,0 +1,93 @@ +// +#include "G4UIcmdWithNucleusLimits.hh" +#include "g4std/strstream" +//////////////////////////////////////////////////////////////////////////////// +// +G4UIcmdWithNucleusLimits::G4UIcmdWithNucleusLimits +(const char * theCommandPath,G4UImessenger * theMessenger) +:G4UIcommand(theCommandPath,theMessenger) +{ + G4UIparameter * intParamAMin = new G4UIparameter('i'); + SetParameter(intParamAMin); + G4UIparameter * intParamAMax = new G4UIparameter('i'); + SetParameter(intParamAMax); + G4UIparameter * intParamZMin = new G4UIparameter('i'); + SetParameter(intParamZMin); + G4UIparameter * intParamZMax = new G4UIparameter('i'); + SetParameter(intParamZMax); +} + +//////////////////////////////////////////////////////////////////////////////// +// +G4UIcmdWithNucleusLimits::~G4UIcmdWithNucleusLimits() +{ + ; +} +//////////////////////////////////////////////////////////////////////////////// +// +G4NucleusLimits G4UIcmdWithNucleusLimits:: + GetNewNucleusLimitsValue(G4String paramString) +{ + G4int aMin; + G4int aMax; + G4int zMin; + G4int zMax; + const char* t = paramString; + G4std::istrstream is((char*)t); + is >> aMin >> aMax >> zMin >> zMax; + return G4NucleusLimits(aMin,aMax,zMin,zMax); +} +//////////////////////////////////////////////////////////////////////////////// +// +G4String G4UIcmdWithNucleusLimits::ConvertToString +(G4NucleusLimits defLimits) +{ + char st[100]; + G4std::ostrstream os(st,100); + os << defLimits.GetAMin() << " " << defLimits.GetAMax() + << defLimits.GetZMin() << " " << defLimits.GetZMax()<< '\0'; + G4String vl = st; + return vl; +} +//////////////////////////////////////////////////////////////////////////////// +// +void G4UIcmdWithNucleusLimits::SetParameterName +(const char * theNameAMin,const char * theNameAMax,const char * theNameZMin, +const char * theNameZMax,G4bool omittable,G4bool currentAsDefault) +{ + G4UIparameter * theParamAMin = GetParameter(0); + theParamAMin->SetParameterName(theNameAMin); + theParamAMin->SetOmittable(omittable); + theParamAMin->SetCurrentAsDefault(currentAsDefault); + G4UIparameter * theParamAMax = GetParameter(1); + theParamAMax->SetParameterName(theNameAMax); + theParamAMax->SetOmittable(omittable); + theParamAMax->SetCurrentAsDefault(currentAsDefault); + G4UIparameter * theParamZMin = GetParameter(2); + theParamZMin->SetParameterName(theNameZMin); + theParamZMin->SetOmittable(omittable); + theParamZMin->SetCurrentAsDefault(currentAsDefault); + G4UIparameter * theParamZMax = GetParameter(3); + theParamZMax->SetParameterName(theNameZMax); + theParamZMax->SetOmittable(omittable); + theParamZMax->SetCurrentAsDefault(currentAsDefault); +} +//////////////////////////////////////////////////////////////////////////////// +// +void G4UIcmdWithNucleusLimits::SetDefaultValue(G4NucleusLimits defLimits) +{ + G4UIparameter * theParamAMin = GetParameter(0); + theParamAMin->SetDefaultValue(defLimits.GetAMin()); + G4UIparameter * theParamAMax = GetParameter(1); + theParamAMax->SetDefaultValue(defLimits.GetAMax()); + G4UIparameter * theParamZMin = GetParameter(2); + theParamZMin->SetDefaultValue(defLimits.GetZMin()); + G4UIparameter * theParamZMax = GetParameter(3); + theParamZMax->SetDefaultValue(defLimits.GetZMax()); +} + + + + + + diff --git a/source/processes/hadronic/processes/include/G4AlphaInelasticProcess.hh b/source/processes/hadronic/processes/include/G4AlphaInelasticProcess.hh index dbdadc8b6d..df9d72af4d 100644 --- a/source/processes/hadronic/processes/include/G4AlphaInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4AlphaInelasticProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AlphaInelasticProcess.hh,v 1.1.10.1 1999/12/07 20:52:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AlphaInelasticProcess.hh,v 1.2 1999/12/15 14:53:33 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 479971f3e1..f944438392 100644 --- a/source/processes/hadronic/processes/include/G4AntiLambdaInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4AntiLambdaInelasticProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiLambdaInelasticProcess.hh,v 1.1.10.1 1999/12/07 20:52:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiLambdaInelasticProcess.hh,v 1.2 1999/12/15 14:53:33 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 6785226007..dd1e1edaa7 100644 --- a/source/processes/hadronic/processes/include/G4AntiNeutronInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4AntiNeutronInelasticProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiNeutronInelasticProcess.hh,v 1.1.10.1 1999/12/07 20:52:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiNeutronInelasticProcess.hh,v 1.2 1999/12/15 14:53:33 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 4bbdf09bc8..9ca574a74f 100644 --- a/source/processes/hadronic/processes/include/G4AntiOmegaMinusInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4AntiOmegaMinusInelasticProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiOmegaMinusInelasticProcess.hh,v 1.1.10.1 1999/12/07 20:52:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiOmegaMinusInelasticProcess.hh,v 1.2 1999/12/15 14:53:33 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 f7780bfb40..cdc16ba198 100644 --- a/source/processes/hadronic/processes/include/G4AntiProtonInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4AntiProtonInelasticProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiProtonInelasticProcess.hh,v 1.1.10.1 1999/12/07 20:52:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiProtonInelasticProcess.hh,v 1.2 1999/12/15 14:53:33 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 29b1e24681..2df1463423 100644 --- a/source/processes/hadronic/processes/include/G4AntiSigmaMinusInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4AntiSigmaMinusInelasticProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiSigmaMinusInelasticProcess.hh,v 1.1.10.1 1999/12/07 20:52:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiSigmaMinusInelasticProcess.hh,v 1.2 1999/12/15 14:53:33 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 e975623b60..926219539f 100644 --- a/source/processes/hadronic/processes/include/G4AntiSigmaPlusInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4AntiSigmaPlusInelasticProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiSigmaPlusInelasticProcess.hh,v 1.1.10.1 1999/12/07 20:52:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiSigmaPlusInelasticProcess.hh,v 1.2 1999/12/15 14:53:34 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 cc8c5808e0..83ee45b40e 100644 --- a/source/processes/hadronic/processes/include/G4AntiXiMinusInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4AntiXiMinusInelasticProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiXiMinusInelasticProcess.hh,v 1.1.10.1 1999/12/07 20:52:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiXiMinusInelasticProcess.hh,v 1.2 1999/12/15 14:53:34 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 e9acd5f54f..a61278586b 100644 --- a/source/processes/hadronic/processes/include/G4AntiXiZeroInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4AntiXiZeroInelasticProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiXiZeroInelasticProcess.hh,v 1.1.10.1 1999/12/07 20:52:28 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiXiZeroInelasticProcess.hh,v 1.2 1999/12/15 14:53:34 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 fb9ea6c270..5bee7e19a8 100644 --- a/source/processes/hadronic/processes/include/G4DeuteronInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4DeuteronInelasticProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DeuteronInelasticProcess.hh,v 1.1.10.1 1999/12/07 20:52:28 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DeuteronInelasticProcess.hh,v 1.2 1999/12/15 14:53:34 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // Hadronic Process: Deuteron Inelastic Process // J.L. Chuma, TRIUMF, 25-Feb-1997 diff --git a/source/processes/hadronic/processes/include/G4HadronCaptureProcess.hh b/source/processes/hadronic/processes/include/G4HadronCaptureProcess.hh index 1043de968c..04032b6745 100644 --- a/source/processes/hadronic/processes/include/G4HadronCaptureProcess.hh +++ b/source/processes/hadronic/processes/include/G4HadronCaptureProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HadronCaptureProcess.hh,v 1.1.8.1.2.1 1999/12/07 20:52:28 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HadronCaptureProcess.hh,v 1.3 1999/12/15 14:53:34 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // G4 Neutron capture process -- header file diff --git a/source/processes/hadronic/processes/include/G4HadronElasticProcess.hh b/source/processes/hadronic/processes/include/G4HadronElasticProcess.hh index 20fdacdcdd..5c24c7cc4d 100644 --- a/source/processes/hadronic/processes/include/G4HadronElasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4HadronElasticProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HadronElasticProcess.hh,v 1.1.8.1.2.1 1999/12/07 20:52:28 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HadronElasticProcess.hh,v 1.3 1999/12/15 14:53:34 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // G4 Hadron Elastic Scattering Process -- header file diff --git a/source/processes/hadronic/processes/include/G4HadronFissionProcess.hh b/source/processes/hadronic/processes/include/G4HadronFissionProcess.hh index 1d66943b95..6646a6208b 100644 --- a/source/processes/hadronic/processes/include/G4HadronFissionProcess.hh +++ b/source/processes/hadronic/processes/include/G4HadronFissionProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HadronFissionProcess.hh,v 1.1.8.1.2.1 1999/12/07 20:52:28 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HadronFissionProcess.hh,v 1.3 1999/12/15 14:53:34 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // G4 Fission Process -- header file diff --git a/source/processes/hadronic/processes/include/G4IonInelasticProcess.hh b/source/processes/hadronic/processes/include/G4IonInelasticProcess.hh new file mode 100644 index 0000000000..926d48fe4f --- /dev/null +++ b/source/processes/hadronic/processes/include/G4IonInelasticProcess.hh @@ -0,0 +1,35 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By 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 G4IonInelasticProcess_h +#define G4IonInelasticProcess_h 1 + +#include "G4HadronInelasticProcess.hh" +#include "G4GenericIon.hh" + + + class G4IonInelasticProcess : public G4HadronInelasticProcess + { + public: + + G4IonInelasticProcess( + const G4String& processName = "IonInelastic" ) : + + G4HadronInelasticProcess( processName, G4GenericIon::GenericIon() ) + { } + + ~G4IonInelasticProcess() + { } + }; + +#endif + diff --git a/source/processes/hadronic/processes/include/G4KaonMinusInelasticProcess.hh b/source/processes/hadronic/processes/include/G4KaonMinusInelasticProcess.hh index 520de7f18e..9ff8a851f5 100644 --- a/source/processes/hadronic/processes/include/G4KaonMinusInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4KaonMinusInelasticProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4KaonMinusInelasticProcess.hh,v 1.1.10.1 1999/12/07 20:52:28 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4KaonMinusInelasticProcess.hh,v 1.2 1999/12/15 14:53:34 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 ae6dcb0e91..bb863b90bf 100644 --- a/source/processes/hadronic/processes/include/G4KaonPlusInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4KaonPlusInelasticProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4KaonPlusInelasticProcess.hh,v 1.1.10.1 1999/12/07 20:52:28 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4KaonPlusInelasticProcess.hh,v 1.2 1999/12/15 14:53:34 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 b62d3c4cd6..20b939bba3 100644 --- a/source/processes/hadronic/processes/include/G4KaonZeroLInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4KaonZeroLInelasticProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4KaonZeroLInelasticProcess.hh,v 1.1.10.1 1999/12/07 20:52:29 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4KaonZeroLInelasticProcess.hh,v 1.2 1999/12/15 14:53:34 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 7e8bc202de..338da94c1f 100644 --- a/source/processes/hadronic/processes/include/G4KaonZeroSInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4KaonZeroSInelasticProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4KaonZeroSInelasticProcess.hh,v 1.1.10.1 1999/12/07 20:52:29 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4KaonZeroSInelasticProcess.hh,v 1.2 1999/12/15 14:53:34 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 cfd073e8d3..059b174599 100644 --- a/source/processes/hadronic/processes/include/G4LambdaInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4LambdaInelasticProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LambdaInelasticProcess.hh,v 1.1.10.1 1999/12/07 20:52:29 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LambdaInelasticProcess.hh,v 1.2 1999/12/15 14:53:34 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 24adbf9c37..f2bcb82c2b 100644 --- a/source/processes/hadronic/processes/include/G4NeutronInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4NeutronInelasticProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4NeutronInelasticProcess.hh,v 1.1.10.1 1999/12/07 20:52:29 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4NeutronInelasticProcess.hh,v 1.2 1999/12/15 14:53:34 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 32af724cb1..258f18e7b2 100644 --- a/source/processes/hadronic/processes/include/G4OmegaMinusInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4OmegaMinusInelasticProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4OmegaMinusInelasticProcess.hh,v 1.1.10.1 1999/12/07 20:52:29 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4OmegaMinusInelasticProcess.hh,v 1.2 1999/12/15 14:53:34 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // Hadronic Process: OmegaMinus Inelastic Process // J.L. Chuma, TRIUMF, 05-Nov-1996 diff --git a/source/processes/hadronic/processes/include/G4PionMinusInelasticProcess.hh b/source/processes/hadronic/processes/include/G4PionMinusInelasticProcess.hh index afdb966405..49b7f8cb87 100644 --- a/source/processes/hadronic/processes/include/G4PionMinusInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4PionMinusInelasticProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PionMinusInelasticProcess.hh,v 1.1.10.1 1999/12/07 20:52:29 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PionMinusInelasticProcess.hh,v 1.2 1999/12/15 14:53:34 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 a87b019313..129db9c6fe 100644 --- a/source/processes/hadronic/processes/include/G4PionPlusInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4PionPlusInelasticProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PionPlusInelasticProcess.hh,v 1.1.10.1 1999/12/07 20:52:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PionPlusInelasticProcess.hh,v 1.2 1999/12/15 14:53:34 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // PionPlus Inelastic Process // J.L. Chuma, TRIUMF, 05-Nov-1996 diff --git a/source/processes/hadronic/processes/include/G4ProtonInelasticProcess.hh b/source/processes/hadronic/processes/include/G4ProtonInelasticProcess.hh index 6e0e82d465..4ff6580063 100644 --- a/source/processes/hadronic/processes/include/G4ProtonInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4ProtonInelasticProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ProtonInelasticProcess.hh,v 1.1.10.1 1999/12/07 20:52:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ProtonInelasticProcess.hh,v 1.2 1999/12/15 14:53:34 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 85eb1190de..c375aa04be 100644 --- a/source/processes/hadronic/processes/include/G4SigmaMinusInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4SigmaMinusInelasticProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4SigmaMinusInelasticProcess.hh,v 1.1.10.1 1999/12/07 20:52:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4SigmaMinusInelasticProcess.hh,v 1.2 1999/12/15 14:53:34 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 2c13004110..a8e7d035ac 100644 --- a/source/processes/hadronic/processes/include/G4SigmaPlusInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4SigmaPlusInelasticProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4SigmaPlusInelasticProcess.hh,v 1.1.10.1 1999/12/07 20:52:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4SigmaPlusInelasticProcess.hh,v 1.2 1999/12/15 14:53:34 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 c94b5a4e33..e31c4f4348 100644 --- a/source/processes/hadronic/processes/include/G4TritonInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4TritonInelasticProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4TritonInelasticProcess.hh,v 1.1.10.1 1999/12/07 20:52:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4TritonInelasticProcess.hh,v 1.2 1999/12/15 14:53:34 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 5571136ca1..ad0aa00e37 100644 --- a/source/processes/hadronic/processes/include/G4XiMinusInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4XiMinusInelasticProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4XiMinusInelasticProcess.hh,v 1.1.10.1 1999/12/07 20:52:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4XiMinusInelasticProcess.hh,v 1.2 1999/12/15 14:53:35 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 71696034eb..fa3c7bf432 100644 --- a/source/processes/hadronic/processes/include/G4XiZeroInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4XiZeroInelasticProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4XiZeroInelasticProcess.hh,v 1.1.10.1 1999/12/07 20:52:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4XiZeroInelasticProcess.hh,v 1.2 1999/12/15 14:53:35 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 9abff4cc38..d535aa0668 100644 --- a/source/processes/hadronic/processes/src/G4HadronCaptureProcess.cc +++ b/source/processes/hadronic/processes/src/G4HadronCaptureProcess.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HadronCaptureProcess.cc,v 1.1.10.1.2.1 1999/12/08 17:35:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HadronCaptureProcess.cc,v 1.2 1999/12/15 14:53:35 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // G4 Process: Low-energy Neutron Capture diff --git a/source/processes/hadronic/processes/src/G4HadronElasticProcess.cc b/source/processes/hadronic/processes/src/G4HadronElasticProcess.cc index 80570cdd4a..5f70dfe587 100644 --- a/source/processes/hadronic/processes/src/G4HadronElasticProcess.cc +++ b/source/processes/hadronic/processes/src/G4HadronElasticProcess.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HadronElasticProcess.cc,v 1.1.10.1.2.1 1999/12/08 17:35:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HadronElasticProcess.cc,v 1.2 1999/12/15 14:53:35 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // G4 Process: Low-energy Elastic scattering diff --git a/source/processes/hadronic/processes/src/G4HadronFissionProcess.cc b/source/processes/hadronic/processes/src/G4HadronFissionProcess.cc index d845297e50..de3a61acfb 100644 --- a/source/processes/hadronic/processes/src/G4HadronFissionProcess.cc +++ b/source/processes/hadronic/processes/src/G4HadronFissionProcess.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4HadronFissionProcess.cc,v 1.1.10.1.2.1 1999/12/08 17:35:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4HadronFissionProcess.cc,v 1.2 1999/12/15 14:53:35 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // F.W. Jones, TRIUMF, 03-DEC-96 diff --git a/source/processes/hadronic/stopping/include/G4AntiNeutronAnnihilationAtRest.hh b/source/processes/hadronic/stopping/include/G4AntiNeutronAnnihilationAtRest.hh index e8cf9660c1..e01a41b73a 100644 --- a/source/processes/hadronic/stopping/include/G4AntiNeutronAnnihilationAtRest.hh +++ b/source/processes/hadronic/stopping/include/G4AntiNeutronAnnihilationAtRest.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiNeutronAnnihilationAtRest.hh,v 1.1.10.1 1999/12/07 20:52:32 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiNeutronAnnihilationAtRest.hh,v 1.2 1999/12/15 14:53:35 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 2937210199..6e687b5526 100644 --- a/source/processes/hadronic/stopping/include/G4AntiProtonAnnihilationAtRest.hh +++ b/source/processes/hadronic/stopping/include/G4AntiProtonAnnihilationAtRest.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiProtonAnnihilationAtRest.hh,v 1.1.10.1 1999/12/07 20:52:32 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiProtonAnnihilationAtRest.hh,v 1.2 1999/12/15 14:53:35 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 bd5fd6648b..385fca49dc 100644 --- a/source/processes/hadronic/stopping/include/G4DistributionGenerator.hh +++ b/source/processes/hadronic/stopping/include/G4DistributionGenerator.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DistributionGenerator.hh,v 1.1.8.1.2.1 1999/12/07 20:52:32 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DistributionGenerator.hh,v 1.3 1999/12/15 14:53:35 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/include/G4KaonMinusAbsorption.hh b/source/processes/hadronic/stopping/include/G4KaonMinusAbsorption.hh index c11447f6e4..32f03e839b 100644 --- a/source/processes/hadronic/stopping/include/G4KaonMinusAbsorption.hh +++ b/source/processes/hadronic/stopping/include/G4KaonMinusAbsorption.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4KaonMinusAbsorption.hh,v 1.1.10.1 1999/12/07 20:52:33 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4KaonMinusAbsorption.hh,v 1.2 1999/12/15 14:53:35 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 5f5531b01f..f201894c35 100644 --- a/source/processes/hadronic/stopping/include/G4KaonMinusAbsorptionAtRest.hh +++ b/source/processes/hadronic/stopping/include/G4KaonMinusAbsorptionAtRest.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4KaonMinusAbsorptionAtRest.hh,v 1.1.8.1.2.1 1999/12/07 20:52:33 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4KaonMinusAbsorptionAtRest.hh,v 1.3 1999/12/15 14:53:35 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1997 diff --git a/source/processes/hadronic/stopping/include/G4MuMinusCaptureCascade.hh b/source/processes/hadronic/stopping/include/G4MuMinusCaptureCascade.hh new file mode 100644 index 0000000000..4618228271 --- /dev/null +++ b/source/processes/hadronic/stopping/include/G4MuMinusCaptureCascade.hh @@ -0,0 +1,85 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By 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 implementation file --- Copyright CERN 1998 +// CERN Geneva Switzerland +// +// For information related to this code contact: +// CERN, CN Division, ASD group +// History: first implementation, based on object model of +// 2nd December 1995, G.Cosmo +// ------------ G4MuMinusCaptureCascade physics process -------- +// by Vladimir Ivanchenko +// E-mail: Vladimir.Ivantchenko@cern.ch +// April 2000 +// ************************************************************** +//----------------------------------------------------------------------------- + +#ifndef G4MuMinusCaptureCascade_h +#define G4MuMinusCaptureCascade_h 1 +#include "g4std/iomanip" +#include "globals.hh" +#include "Randomize.hh" + +#include "G4ThreeVector.hh" +#include "G4LorentzVector.hh" +#include "G4MuonMinus.hh" +#include "G4Electron.hh" +#include "G4Gamma.hh" +#include "G4VParticleChange.hh" +#include "G4ParticleDefinition.hh" +#include "G4GHEKinematicsVector.hh" +#include "G4ParticleTypes.hh" +#include "G4DynamicParticle.hh" + +class G4MuMinusCaptureCascade + +{ + private: + // hide assignment operator as private + G4MuMinusCaptureCascade& operator=(const G4MuMinusCaptureCascade &right); + G4MuMinusCaptureCascade(const G4MuMinusCaptureCascade& ); + + public: + + G4MuMinusCaptureCascade(); + + ~G4MuMinusCaptureCascade(); + + G4int DoCascade(const G4double Z, const G4double massA, + G4GHEKinematicsVector* Cascade); + + void DoBoundMuonMinusDecay(G4double Z, G4double massA, + G4int* nCascade, G4GHEKinematicsVector* Cascade); + + private: + + G4double GetKShellEnergy(G4double Z); + + G4double GetLinApprox(const size_t N, const G4double X[], const G4double Y[], + G4double Xuser); + + G4ThreeVector GetRandomVec(); + + + void AddNewParticle(G4ParticleDefinition* aParticle, + G4ThreeVector Momentum, + G4double mass, + G4int* nParticle, + G4GHEKinematicsVector* Cascade); + + G4double Emass, MuMass; + G4ParticleDefinition* theElectron; + G4ParticleDefinition* theGamma; + +}; + +#endif + + diff --git a/source/processes/hadronic/stopping/include/G4MuonMinusCaptureAtRest.hh b/source/processes/hadronic/stopping/include/G4MuonMinusCaptureAtRest.hh index adb9ac7a4a..2cd2224091 100644 --- a/source/processes/hadronic/stopping/include/G4MuonMinusCaptureAtRest.hh +++ b/source/processes/hadronic/stopping/include/G4MuonMinusCaptureAtRest.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MuonMinusCaptureAtRest.hh,v 1.1.10.1 1999/12/07 20:52:33 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MuonMinusCaptureAtRest.hh,v 1.3 2000/04/07 16:06:47 vnivanch Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------ // GEANT 4 class header file --- Copyright CERN 1998 @@ -34,6 +34,8 @@ #include "G4VParticleChange.hh" #include "G4ParticleDefinition.hh" #include "G4GHEKinematicsVector.hh" +#include "G4StopElementSelector.hh" +#include "G4MuMinusCaptureCascade.hh" class G4MuonMinusCaptureAtRest : public G4VRestProcess @@ -115,8 +117,10 @@ class G4MuonMinusCaptureAtRest : public G4VRestProcess G4GHEKinematicsVector* Secondaries; G4GHEKinematicsVector* Evaporates; G4GHEKinematicsVector* Gkin; + G4GHEKinematicsVector* Cascade; G4int nGkine; + G4int nCascade; G4int nSecPart; G4int nallFragm; @@ -176,7 +180,15 @@ class G4MuonMinusCaptureAtRest : public G4VRestProcess G4ParticleDefinition* pdefNeutron; G4ParticleDefinition* pdefFragm[6]; + G4StopElementSelector* pSelector; + G4MuMinusCaptureCascade* pEMCascade; + }; #endif + + + + + diff --git a/source/processes/hadronic/stopping/include/G4NeutronCaptureAtRest.hh b/source/processes/hadronic/stopping/include/G4NeutronCaptureAtRest.hh index 3b0f48d893..9b8913f6f7 100644 --- a/source/processes/hadronic/stopping/include/G4NeutronCaptureAtRest.hh +++ b/source/processes/hadronic/stopping/include/G4NeutronCaptureAtRest.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4NeutronCaptureAtRest.hh,v 1.1.10.1 1999/12/07 20:52:33 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4NeutronCaptureAtRest.hh,v 1.2 1999/12/15 14:53:36 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 1d438a81ed..0555abf322 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusAbsorptionAtRest.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusAbsorptionAtRest.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PiMinusAbsorptionAtRest.hh,v 1.1.10.1 1999/12/07 20:52:34 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PiMinusAbsorptionAtRest.hh,v 1.2 1999/12/15 14:53:36 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 1423488472..546172adac 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopAbsorption.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopAbsorption.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PiMinusStopAbsorption.hh,v 1.2.6.1.2.1 1999/12/07 20:52:34 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PiMinusStopAbsorption.hh,v 1.4 1999/12/15 14:53:36 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopAl.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopAl.hh index 203e397137..a6a2983bd0 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopAl.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopAl.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PiMinusStopAl.hh,v 1.1.8.1.2.1 1999/12/07 20:52:34 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PiMinusStopAl.hh,v 1.3 1999/12/15 14:53:36 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopC.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopC.hh index 6d83bf7ae3..8a1144dafb 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopC.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopC.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PiMinusStopC.hh,v 1.1.8.1.2.1 1999/12/07 20:52:34 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PiMinusStopC.hh,v 1.3 1999/12/15 14:53:36 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopCo.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopCo.hh index 82fabd6420..ab66d42438 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopCo.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopCo.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PiMinusStopCo.hh,v 1.1.8.1.2.1 1999/12/07 20:52:34 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PiMinusStopCo.hh,v 1.3 1999/12/15 14:53:36 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopCu.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopCu.hh index e527a081c6..e18297d935 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopCu.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopCu.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PiMinusStopCu.hh,v 1.1.8.1.2.1 1999/12/07 20:52:34 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PiMinusStopCu.hh,v 1.3 1999/12/15 14:53:36 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopLi.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopLi.hh index 73b75a3da7..9bfef084f0 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopLi.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopLi.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PiMinusStopLi.hh,v 1.1.8.1.2.1 1999/12/07 20:52:34 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PiMinusStopLi.hh,v 1.3 1999/12/15 14:53:36 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopMaterial.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopMaterial.hh index 92b339202f..6a9ce91fe7 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopMaterial.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopMaterial.hh @@ -5,8 +5,7 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PiMinusStopMaterial.hh,v 1.1.8.1.2.1 1999/12/07 20:52:35 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PiMinusStopMaterial.hh,v 1.4 2000/04/18 17:18:35 pia Exp $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -74,7 +73,7 @@ protected: G4RWTPtrOrderedVector* _momenta; G4DistributionGenerator* _distributionE; G4DistributionGenerator* _distributionAngle; - G4double _R; + G4double theR; G4double GenerateAngle(G4double range); G4LorentzVector MakeP4(G4double p, G4double theta, diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopN.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopN.hh index 095a4487b6..fc8b22c922 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopN.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopN.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PiMinusStopN.hh,v 1.1.8.1.2.1 1999/12/07 20:52:35 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PiMinusStopN.hh,v 1.3 1999/12/15 14:53:36 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopO.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopO.hh index d7b724fc76..033f681c66 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopO.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopO.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PiMinusStopO.hh,v 1.1.8.1.2.1 1999/12/07 20:52:35 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PiMinusStopO.hh,v 1.3 1999/12/15 14:53:36 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopPb.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopPb.hh index 9f992167cc..dd08e59ecf 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopPb.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopPb.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PiMinusStopPb.hh,v 1.1.8.1.2.1 1999/12/07 20:52:35 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PiMinusStopPb.hh,v 1.3 1999/12/15 14:53:36 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopTa.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopTa.hh index 4b3d04f0d4..56e2d43b08 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopTa.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopTa.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PiMinusStopTa.hh,v 1.1.8.1.2.1 1999/12/07 20:52:35 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PiMinusStopTa.hh,v 1.3 1999/12/15 14:53:36 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/include/G4PionMinusAbsorptionAtRest.hh b/source/processes/hadronic/stopping/include/G4PionMinusAbsorptionAtRest.hh index cc88e44df8..7c1a1993d8 100644 --- a/source/processes/hadronic/stopping/include/G4PionMinusAbsorptionAtRest.hh +++ b/source/processes/hadronic/stopping/include/G4PionMinusAbsorptionAtRest.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PionMinusAbsorptionAtRest.hh,v 1.1.10.1 1999/12/07 20:52:35 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PionMinusAbsorptionAtRest.hh,v 1.2 1999/12/15 14:53:36 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 54112ad457..f063505c14 100644 --- a/source/processes/hadronic/stopping/include/G4StopDeexcitation.hh +++ b/source/processes/hadronic/stopping/include/G4StopDeexcitation.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4StopDeexcitation.hh,v 1.2.8.1 1999/12/07 20:52:36 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4StopDeexcitation.hh,v 1.3 1999/12/15 14:53:36 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 58b246a469..82492e9376 100644 --- a/source/processes/hadronic/stopping/include/G4StopDeexcitationAlgorithm.hh +++ b/source/processes/hadronic/stopping/include/G4StopDeexcitationAlgorithm.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4StopDeexcitationAlgorithm.hh,v 1.2.8.1 1999/12/07 20:52:36 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4StopDeexcitationAlgorithm.hh,v 1.3 1999/12/15 14:53:36 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 94d0ede6e9..0c138accbe 100644 --- a/source/processes/hadronic/stopping/include/G4StopDummyDeexcitation.hh +++ b/source/processes/hadronic/stopping/include/G4StopDummyDeexcitation.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4StopDummyDeexcitation.hh,v 1.2.8.1 1999/12/07 20:52:36 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4StopDummyDeexcitation.hh,v 1.3 1999/12/15 14:53:36 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 new file mode 100644 index 0000000000..a36cf24922 --- /dev/null +++ b/source/processes/hadronic/stopping/include/G4StopElementSelector.hh @@ -0,0 +1,60 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By 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 implementation file --- Copyright CERN 1998 +// CERN Geneva Switzerland +// +// For information related to this code contact: +// CERN, CN Division, ASD group +// History: first implementation, based on object model of +// 2nd December 1995, G.Cosmo +// ------------ G4MuonMinusCaptureAtRest physics process -------- +// by Vladimir Ivanchenko +// E-mail: Vladimir.Ivantchenko@cern.ch +// April 2000 +// ************************************************************** +//----------------------------------------------------------------------------- + +#ifndef G4StopElementSelector_h +#define G4StopElementSelector_h 1 + +#include "globals.hh" +#include "Randomize.hh" +#include "G4ParticleDefinition.hh" +#include "g4std/iomanip" +#include "G4Element.hh" +#include "G4Material.hh" +#include "G4MaterialTable.hh" +#include "G4MuonMinus.hh" + +class G4StopElementSelector + +{ + private: + // hide assignment operator as private + G4StopElementSelector& operator=(const G4StopElementSelector &right); + G4StopElementSelector(const G4StopElementSelector& ); + + public: + + G4StopElementSelector(); + + ~G4StopElementSelector(); + + G4Element* GetElement(const G4Material* aMaterial); + G4double GetMuonCaptureRate(G4double Z, G4double A); + G4double GetMuonDecayRate(G4double Z, G4double A); + + private: + + +}; + +#endif + diff --git a/source/processes/hadronic/stopping/include/G4StopTheoDeexcitation.hh b/source/processes/hadronic/stopping/include/G4StopTheoDeexcitation.hh index 294cb7c6f8..86b9975e59 100644 --- a/source/processes/hadronic/stopping/include/G4StopTheoDeexcitation.hh +++ b/source/processes/hadronic/stopping/include/G4StopTheoDeexcitation.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4StopTheoDeexcitation.hh,v 1.2.8.1 1999/12/07 20:52:36 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4StopTheoDeexcitation.hh,v 1.3 1999/12/15 14:53:36 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 27cd36dfed..1531fd1748 100644 --- a/source/processes/hadronic/stopping/src/G4AntiNeutronAnnihilationAtRest.cc +++ b/source/processes/hadronic/stopping/src/G4AntiNeutronAnnihilationAtRest.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiNeutronAnnihilationAtRest.cc,v 1.1.10.1.2.4 1999/12/15 11:43:38 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiNeutronAnnihilationAtRest.cc,v 1.2 1999/12/15 14:53:37 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -------------------------------------------------------------- // GEANT 4 class implementation file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/src/G4AntiProtonAnnihilationAtRest.cc b/source/processes/hadronic/stopping/src/G4AntiProtonAnnihilationAtRest.cc index b6718dac96..bc971de7da 100644 --- a/source/processes/hadronic/stopping/src/G4AntiProtonAnnihilationAtRest.cc +++ b/source/processes/hadronic/stopping/src/G4AntiProtonAnnihilationAtRest.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4AntiProtonAnnihilationAtRest.cc,v 1.1.10.1.2.4 1999/12/15 11:43:38 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4AntiProtonAnnihilationAtRest.cc,v 1.2 1999/12/15 14:53:37 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -------------------------------------------------------------- // GEANT 4 class implementation file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/src/G4DistributionGenerator.cc b/source/processes/hadronic/stopping/src/G4DistributionGenerator.cc index 383e01ac20..797d5bf141 100644 --- a/source/processes/hadronic/stopping/src/G4DistributionGenerator.cc +++ b/source/processes/hadronic/stopping/src/G4DistributionGenerator.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DistributionGenerator.cc,v 1.2.6.1.2.1.2.1 1999/12/08 17:35:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DistributionGenerator.cc,v 1.4 1999/12/15 14:53:37 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/src/G4KaonMinusAbsorption.cc b/source/processes/hadronic/stopping/src/G4KaonMinusAbsorption.cc index b2dcdd8469..9551c368dc 100644 --- a/source/processes/hadronic/stopping/src/G4KaonMinusAbsorption.cc +++ b/source/processes/hadronic/stopping/src/G4KaonMinusAbsorption.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4KaonMinusAbsorption.cc,v 1.1.10.1.2.4 1999/12/15 11:43:39 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4KaonMinusAbsorption.cc,v 1.2 1999/12/15 14:53:37 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -------------------------------------------------------------- // GEANT 4 class implementation file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/src/G4MuMinusCaptureCascade.cc b/source/processes/hadronic/stopping/src/G4MuMinusCaptureCascade.cc new file mode 100644 index 0000000000..ab7d622701 --- /dev/null +++ b/source/processes/hadronic/stopping/src/G4MuMinusCaptureCascade.cc @@ -0,0 +1,276 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By 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 implementation file --- Copyright CERN 1998 +// CERN Geneva Switzerland +// +// For information related to this code contact: +// CERN, CN Division, ASD group +// History: first implementation, based on object model of +// 2nd December 1995, G.Cosmo +// ------------ G4MuonMinusCaptureAtRest physics process -------- +// by Vladimir Ivanchenko +// E-mail: Vladimir.Ivantchenko@cern.ch +// April 2000 +// ************************************************************** +//----------------------------------------------------------------------------- + +#include "G4MuMinusCaptureCascade.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +// constructor +G4MuMinusCaptureCascade::G4MuMinusCaptureCascade() +{ + theElectron = G4Electron::Electron(); + theGamma = G4Gamma::Gamma(); + Emass = theElectron->GetPDGMass(); + MuMass = G4MuonMinus::MuonMinus()->GetPDGMass(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +// destructor +G4MuMinusCaptureCascade::~G4MuMinusCaptureCascade() +{ } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4double G4MuMinusCaptureCascade::GetKShellEnergy(G4double Z) +{ + + // Calculate the Energy of K Mesoatom Level for this Element using + // the Energy of Hydrogen Atom taken into account finite size of the + // nucleus (V.Ivanchenko) + const size_t ListK = 27; + static G4double ListZK[ListK] = { + 2., 4., 6., 8., 11., 14., 17., 18., 21., 24., + 26., 29., 32., 38., 40., 41., 44., 49., 53., 55., + 60., 65., 70., 75., 81., 85., 92.}; + static G4double ListKEnergy[ListK] = { + 0.011, 0.043, 0.098, 0.173, 0.326, + 0.524, 0.765, 0.853, 1.146, 1.472, + 1.708, 2.081, 2.475, 3.323, 3.627, + 3.779, 4.237, 5.016, 5.647, 5.966, + 6.793, 7.602, 8.421, 9.249, 10.222, + 10.923,11.984}; + + // Energy with finit size corrections + G4double KEnergy = GetLinApprox(ListK,ListZK,ListKEnergy,Z); + + + return KEnergy; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + G4double G4MuMinusCaptureCascade::GetLinApprox(const size_t N, + const G4double X[], + const G4double Y[], + G4double Xuser) +{ + G4double Yuser = 0.0; + G4int i; + + if(N < 1) return Yuser; + + else if(Xuser < X[0]) Yuser = Y[0]; + + else if(Xuser > X[N-1]) Yuser = Y[N-1]; + + else { + for (i = 1; i < N - 1; i++){ + if(Xuser < X[i]) {break;} + } + + Yuser = X[i] - X[i-1]; + if(Yuser != 0.0){ + Yuser = Y[i-1] + (Y[i] - Y[i-1]) * (Xuser - X[i-1]) / Yuser; + } + } + return Yuser; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4ThreeVector G4MuMinusCaptureCascade::GetRandomVec() +{ + // + // generate uniform vector + // + + G4double Theta = (2.0 * G4UniformRand() - 1.0) * pi ; + G4double Phi = twopi * G4UniformRand() ; + G4double sinTheta = sin(Theta); + G4double dirx = sinTheta * cos(Phi); + G4double diry = sinTheta * sin(Phi); + G4double dirz = cos(Theta); + + return G4ThreeVector(dirx, diry, dirz); +} +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4MuMinusCaptureCascade::AddNewParticle(G4ParticleDefinition* aParticle, + G4ThreeVector Momentum, + G4double mass, + G4int* nParticle, + G4GHEKinematicsVector* Cascade) +{ + + // Store particle in the HEK vector and increment counter + + Cascade[*nParticle].SetZero(); + Cascade[*nParticle].SetMass( mass ); + Cascade[*nParticle].SetMomentumAndUpdate(Momentum.x(), Momentum.y(), Momentum.z()); + Cascade[*nParticle].SetParticleDef( aParticle ); + (*nParticle)++; + + return; +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4int G4MuMinusCaptureCascade::DoCascade(const G4double Z, const G4double massA, + G4GHEKinematicsVector* Cascade) +{ + // Inicialization - cascade start from 14th level + // N.C.Mukhopadhyay Phy. Rep. 30 (1977) 1. + G4int nPart = 0; + G4double EnergyLevel[14]; + + G4double mass = MuMass * massA / (MuMass + massA) ; + + const G4double KEnergy = 13.6 * eV * Z * Z * mass/ electron_mass_c2; + + EnergyLevel[0] = GetKShellEnergy(Z); + for( G4int i = 2; i < 15; i++ ) { + EnergyLevel[i-1] = KEnergy / (i*i) ; + } + + G4int nElec = G4int(Z); + G4int nAuger = 1; + G4int nLevel = 13; + G4double DeltaE; + G4double pGamma = Z*Z*Z*Z; + + // Capture on 14-th level + G4double ptot = sqrt(EnergyLevel[13]*(EnergyLevel[13] + 2.0*Emass)); + G4ThreeVector moment = ptot * GetRandomVec(); + + AddNewParticle(theElectron,moment,Emass,&nPart,Cascade); + + // Emit new photon or electron + // Simplified model for probabilities + // N.C.Mukhopadhyay Phy. Rep. 30 (1977) 1. + do { + + // case of Auger electrons + if((nAuger < nElec) && ((pGamma + 10000.0) * G4UniformRand() < 10000.0) ) { + nAuger++; + DeltaE = EnergyLevel[nLevel-1] - EnergyLevel[nLevel]; + nLevel--; + + ptot = sqrt(DeltaE * (DeltaE + 2.0*Emass)); + moment = ptot * GetRandomVec(); + + AddNewParticle(theElectron, moment, Emass, &nPart, Cascade); + + } else { + + // Case of photon cascade, probabilities from + // C.S.Wu and L.Wilets, Ann. Rev. Nuclear Sci. 19 (1969) 527. + + G4double var = (10.0 + G4double(nLevel - 1) ) * G4UniformRand(); + G4int iLevel = nLevel - 1 ; + if(var > 10.0) iLevel -= G4int(var-10.0) + 1; + if( iLevel < 0 ) iLevel = 0; + DeltaE = EnergyLevel[iLevel] - EnergyLevel[nLevel]; + nLevel = iLevel; + moment = DeltaE * GetRandomVec(); + AddNewParticle(theGamma, moment, 0.0, &nPart, Cascade); + } + + } while( nLevel > 0 ); + + return nPart; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4MuMinusCaptureCascade::DoBoundMuonMinusDecay(G4double Z, G4double massA, + G4int* nCascade, + G4GHEKinematicsVector* Cascade) +{ + // Simulation on Decay of mu- on a K-shell of the muonic atom + + G4double Energy, r, x; + G4double xmax = ( 1.0 + Emass*Emass/ (MuMass*MuMass) ); + G4double KEnergy = GetKShellEnergy(Z); + + // Calculate electron energy + do { + do { + x = xmax*G4UniformRand(); + } while (G4UniformRand() < (3.0 - 2.0*x)*x*x ); + Energy = x*MuMass*0.5 - Emass - KEnergy; + } while (Energy < 0.0); + + // + // generate uniform vector + // + G4double ptot = sqrt(Energy * (Energy + 2.0*Emass)); + G4ThreeVector moment = ptot * GetRandomVec(); + + AddNewParticle(theElectron, moment, Emass, nCascade, Cascade); + + // Calculate rest frame parameters of 2 neutrinos + G4double E = MuMass*( 1.0 - x*0.5 ); + G4double P = sqrt( MuMass*MuMass*x*x*0.25 - Emass*Emass ); + + if(P >= E) {P = E;} + G4double ecm = 0.5 * sqrt( E*E - P*P ); + + // + // generate uniform vector + // + + moment *= -P / (ptot * E); + G4ThreeVector p1 = ecm * GetRandomVec(); + + // Create Neutrinos + G4LorentzVector N1 = G4LorentzVector(p1,ecm); + N1.boost(moment); + + + AddNewParticle(G4AntiNeutrinoE::AntiNeutrinoE(),G4ThreeVector(N1),0.0,nCascade,Cascade); + + G4LorentzVector N2 = G4LorentzVector(-p1,ecm); + N2.boost(moment); + + AddNewParticle(G4NeutrinoMu::NeutrinoMu(),G4ThreeVector(N2),0.0,nCascade,Cascade); + + return; +} + + + + + + + + + + + + + + + + diff --git a/source/processes/hadronic/stopping/src/G4MuonMinusCaptureAtRest.cc b/source/processes/hadronic/stopping/src/G4MuonMinusCaptureAtRest.cc index f1bb820de4..b22a402ae5 100644 --- a/source/processes/hadronic/stopping/src/G4MuonMinusCaptureAtRest.cc +++ b/source/processes/hadronic/stopping/src/G4MuonMinusCaptureAtRest.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4MuonMinusCaptureAtRest.cc,v 1.1.10.1.2.4 1999/12/15 11:43:39 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4MuonMinusCaptureAtRest.cc,v 1.3 2000/04/07 16:06:48 vnivanch Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -------------------------------------------------------------- // GEANT 4 class implementation file --- Copyright CERN 1998 @@ -23,6 +23,8 @@ // E-mail: olin@triumf.ca // April 1998 // ************************************************************** +// V.Ivanchenko 7 Apr 2000 Advance model for electromagnetic +// capture and cascade //----------------------------------------------------------------------------- #include "G4MuonMinusCaptureAtRest.hh" @@ -36,6 +38,7 @@ #include #include "G4He3.hh" + #define NINT(x) ((x)>=0 ? (G4int)floor((x) + .5) : -(G4int)floor(.5 - (x))) #define Y0 1.5 @@ -116,17 +119,20 @@ G4MuonMinusCaptureAtRest::G4MuonMinusCaptureAtRest(const G4String& processName) pdefFragm[4] = G4He3::He3(); pdefFragm[5] = G4Alpha::Alpha(); - if (verboseLevel>0) { + if (verboseLevel>=0) { G4cout << GetProcessName() << " is created "<< G4endl; } Fragments = new G4GHEKinematicsVector [MXFRAG]; - Secondaries = new G4GHEKinematicsVector [MXSECS]; - Evaporates = new G4GHEKinematicsVector [MXEVAP*6]; - Gkin = new G4GHEKinematicsVector [MXGKIN]; + Secondaries = new G4GHEKinematicsVector [MXSECS]; + Evaporates = new G4GHEKinematicsVector [MXEVAP*6]; + Gkin = new G4GHEKinematicsVector [MXGKIN]; + Cascade = new G4GHEKinematicsVector [17]; InitializeMuCapture(); + pSelector = new G4StopElementSelector(); + pEMCascade = new G4MuMinusCaptureCascade(); } // destructor @@ -137,6 +143,7 @@ G4MuonMinusCaptureAtRest::~G4MuonMinusCaptureAtRest() delete [] Secondaries; delete [] Evaporates; delete [] Gkin; + delete [] Cascade; } @@ -182,7 +189,9 @@ G4double G4MuonMinusCaptureAtRest::AtRestGetPhysicalInteractionLength( ResetNumberOfInteractionLengthLeft(); // condition is set to "Not Forced" - *condition = NotForced; + // *condition = NotForced; + // condition is set to "ExclusivelyForced" by V.Ivanchenko + *condition = ExclusivelyForced; // get mean life time currentInteractionLength = GetMeanLifeTime(track, condition); @@ -195,7 +204,11 @@ G4double G4MuonMinusCaptureAtRest::AtRestGetPhysicalInteractionLength( G4cout << "MeanLifeTime = " << currentInteractionLength/ns << "[ns]" <1) { - G4cout << "G4MuonMinusCaptureAtRest::AtRestDoIt is invoked " < 1) { + G4cout << "G4MuonMinusCaptureAtRest::AtRestDoIt is invoked " << G4endl; } G4ParticleMomentum momentum; @@ -229,24 +242,58 @@ G4VParticleChange* G4MuonMinusCaptureAtRest::AtRestDoIt( G4ThreeVector position = track.GetPosition(); - // Generate secondaries - DoMuCapture(); + // Generate secondaries from electromagnetic cascade + nCascade = 0; + G4double mass = GetIsotopicMass(targetAtomicMass,targetCharge) * GeV; + nCascade = pEMCascade->DoCascade(targetCharge, mass, Cascade); - aParticleChange.SetNumberOfSecondaries( nGkine ); + // Decay or Capture? + G4double lambdac = pSelector->GetMuonCaptureRate(targetCharge,targetAtomicMass); + G4double lambdad = pSelector->GetMuonDecayRate(targetCharge,targetAtomicMass); + + if( G4UniformRand()*(lambdac + lambdad) > lambdac) { - for ( G4int isec = 0; isec < nGkine; isec++ ) { - G4DynamicParticle* aNewParticle = new G4DynamicParticle; - aNewParticle->SetDefinition( Gkin[isec].GetParticleDef() ); - aNewParticle->SetMomentum( Gkin[isec].GetMomentum() * GeV ); + // Decay + pEMCascade->DoBoundMuonMinusDecay(targetCharge,mass,&nCascade,Cascade); - localtime = globalTime + Gkin[isec].GetTOF(); + // Generate secondaries from capture + } else { - G4Track* aNewTrack = new G4Track( aNewParticle, localtime*s, position ); - aParticleChange.AddSecondary( aNewTrack ); + DoMuCapture(); + } + + aParticleChange.SetNumberOfSecondaries( nGkine + nCascade ); + // Store nuclear cascade + if(nGkine > 0) { + for ( G4int isec = 0; isec < nGkine; isec++ ) { + G4DynamicParticle* aNewParticle = new G4DynamicParticle; + aNewParticle->SetDefinition( Gkin[isec].GetParticleDef() ); + aNewParticle->SetMomentum( Gkin[isec].GetMomentum() * GeV ); + + localtime = globalTime + Gkin[isec].GetTOF(); + + G4Track* aNewTrack = new G4Track( aNewParticle, localtime*s, position ); + aParticleChange.AddSecondary( aNewTrack ); + } } - aParticleChange.SetLocalEnergyDeposit( 0.0*GeV ); + // Store electromagnetic cascade + + if(nCascade > 0) { + localtime = globalTime*s + tDelay; + + for ( G4int isec = 0; isec < nCascade; isec++ ) { + G4DynamicParticle* aNewParticle = new G4DynamicParticle; + aNewParticle->SetDefinition( Cascade[isec].GetParticleDef() ); + aNewParticle->SetMomentum( Cascade[isec].GetMomentum() ); + + G4Track* aNewTrack = new G4Track( aNewParticle, localtime, position ); + aParticleChange.AddSecondary( aNewTrack ); + } + } + + aParticleChange.SetLocalEnergyDeposit(0.0); aParticleChange.SetStatusChange(fStopAndKill); // Kill the incident MuonMinus @@ -259,7 +306,6 @@ G4VParticleChange* G4MuonMinusCaptureAtRest::AtRestDoIt( } - void G4MuonMinusCaptureAtRest::CascadeCorrection(G4double zztar, G4double bbtar) { @@ -3117,78 +3163,23 @@ G4double G4MuonMinusCaptureAtRest::LevelDensity(G4int jz, G4int jn, void G4MuonMinusCaptureAtRest::GetCaptureIsotope(const G4Track& track) { - // Initialized data - static G4double b0a = -.03; - static G4double b0b = -.25; - static G4double b0c = 3.24; - static G4double t1 = 875.; - static G4double zeff[100] = { - 1.,1.98,2.95,3.89,4.8,5.72,6.61,7.49,8.32,9.12,9.95,10.69,11.48,12.22, - 12.91,13.64,14.24,14.89,15.53,16.15,16.75,17.38,18.04,18.49, - 19.06,19.59,20.1,20.66,21.12,21.61,22.02,22.43,22.84,23.24, - 23.65,24.06,24.47,24.85,25.23,25.61,25.99,26.37,26.69,27., - 27.32,27.63,27.95,28.2,28.42,28.64,28.79,29.03,29.27,29.51, - 29.75,29.99,30.2,30.36,30.53,30.69,30.85,31.01,31.18,31.34, - 31.48,31.62,31.76,31.9,32.05,32.19,32.33,32.47,32.61,32.76, - 32.94,33.11,33.29,33.46,33.64,33.81,34.21,34.18,34.,34.1, - 34.21,34.31,34.42,34.52,34.63,34.73,34.84,34.94,35.04,35.15, - 35.25,35.36,35.46,35.57,35.67,35.78 }; - - // System generated locals - G4double r__1, r__2; - - // Local variables - static G4double xmu, a2ze, rndm[4]; - static G4double lambdac; - - G4int i; + // Ask selector to choose the element G4Material * aMaterial = track.GetMaterial(); - const G4int numberOfElements = aMaterial->GetNumberOfElements(); - const G4ElementVector* theElementVector = aMaterial->GetElementVector(); + G4Element* theElement = pSelector->GetElement(aMaterial); + targetCharge = theElement->GetZ(); + targetAtomicMass = theElement->GetN(); - const G4double* theAtomicNumberDensity = - aMaterial->GetAtomicNumDensityVector(); - G4double normalization = 0; - for ( i=0; i < numberOfElements; i++ ) { - normalization += theAtomicNumberDensity[i] ; // change when nucleon specific - // probabilities are included. - } - G4double runningSum= 0.; - G4double random = G4UniformRand()*normalization; - for ( i=0; i < numberOfElements; i++ ) { - runningSum += theAtomicNumberDensity[i]; // change when nucleon specific - // probabilities are included. - if ( random <= runningSum ) { - targetCharge = (*theElementVector)(i)->GetZ(); - targetAtomicMass = (*theElementVector)(i)->GetN(); - } - } - if ( random > runningSum ) { - targetCharge = (*theElementVector)(numberOfElements-1)->GetZ(); - targetAtomicMass = (*theElementVector)(numberOfElements-1)->GetN(); - } + // Calculate total capture velosity + + G4double lambdac = pSelector->GetMuonCaptureRate(targetCharge,targetAtomicMass); + lambdac += pSelector->GetMuonDecayRate(targetCharge,targetAtomicMass); - // == Simulation of Neutrons from muon capture in heavy nuclei. - // == Effective charges from Ford and Wills Nucl Phys 35(1962)295. - // == Untabulated charges are interpolated. - // == Look up Zeff from table - // == Mu capture lifetime (Goulard and Primakoff PRC10(1974)2034. - r__1 = zeff[G4int(targetCharge) - 1]; - zeff2 = r__1 * r__1; - xmu = zeff2 * 2.663e-4; - a2ze = targetAtomicMass / targetCharge * .5; - r__2 = 1 - xmu; - lambdac = - t1 * zeff2 * zeff2 * (r__2 * r__2) * (1 - (1 - xmu) * .75704) * - (a2ze * b0a + 1. - (a2ze - 1.) * b0b - - ((targetAtomicMass - targetCharge) / targetAtomicMass * - .5 + (r__1 = a2ze - 1., abs(r__1)) / - (targetAtomicMass * 4.)) * b0c); // === Throw for capture time. - rndm[0] = G4UniformRand(); - tDelay = -(G4double)log(rndm[0]) / lambdac; + + tDelay = -(G4double)log(G4UniformRand()) / lambdac; + return; } // GetCaptureIsotope @@ -3813,3 +3804,4 @@ void G4MuonMinusCaptureAtRest::RanAzimuthalAng(G4double *sfe, G4double *cfe) return; } // RanAzimuthalAng + diff --git a/source/processes/hadronic/stopping/src/G4NeutronCaptureAtRest.cc b/source/processes/hadronic/stopping/src/G4NeutronCaptureAtRest.cc index fe54796fd8..707db221ad 100644 --- a/source/processes/hadronic/stopping/src/G4NeutronCaptureAtRest.cc +++ b/source/processes/hadronic/stopping/src/G4NeutronCaptureAtRest.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4NeutronCaptureAtRest.cc,v 1.1.10.1.2.4 1999/12/15 11:43:41 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4NeutronCaptureAtRest.cc,v 1.2 1999/12/15 14:53:37 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -------------------------------------------------------------- // GEANT 4 class implementation file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/src/G4PiMinusAbsorptionAtRest.cc b/source/processes/hadronic/stopping/src/G4PiMinusAbsorptionAtRest.cc index d440c4a513..b81907a0d9 100644 --- a/source/processes/hadronic/stopping/src/G4PiMinusAbsorptionAtRest.cc +++ b/source/processes/hadronic/stopping/src/G4PiMinusAbsorptionAtRest.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PiMinusAbsorptionAtRest.cc,v 1.3.8.1.2.1 1999/12/08 17:35:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PiMinusAbsorptionAtRest.cc,v 1.4 1999/12/15 14:53:38 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/src/G4PiMinusStopAbsorption.cc b/source/processes/hadronic/stopping/src/G4PiMinusStopAbsorption.cc index 2fa30f17aa..443196d21a 100644 --- a/source/processes/hadronic/stopping/src/G4PiMinusStopAbsorption.cc +++ b/source/processes/hadronic/stopping/src/G4PiMinusStopAbsorption.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PiMinusStopAbsorption.cc,v 1.3.6.1.2.1.2.2 1999/12/09 16:58:27 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PiMinusStopAbsorption.cc,v 1.6 1999/12/15 17:51:30 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/src/G4PiMinusStopAl.cc b/source/processes/hadronic/stopping/src/G4PiMinusStopAl.cc index 561690c902..b9889ebf73 100644 --- a/source/processes/hadronic/stopping/src/G4PiMinusStopAl.cc +++ b/source/processes/hadronic/stopping/src/G4PiMinusStopAl.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PiMinusStopAl.cc,v 1.1.8.1.2.1 1999/12/07 20:52:40 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PiMinusStopAl.cc,v 1.4 2000/04/18 17:18:36 pia Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -91,7 +91,7 @@ G4PiMinusStopAl::G4PiMinusStopAl() _clusterSize = 2; // R ratio - _R = 1. / (1. + npRatio); + theR = 1. / (1. + npRatio); _definitions = new G4RWTPtrOrderedVector(); _momenta = new G4RWTPtrOrderedVector(); diff --git a/source/processes/hadronic/stopping/src/G4PiMinusStopC.cc b/source/processes/hadronic/stopping/src/G4PiMinusStopC.cc index f62643c18e..3e5e8121f3 100644 --- a/source/processes/hadronic/stopping/src/G4PiMinusStopC.cc +++ b/source/processes/hadronic/stopping/src/G4PiMinusStopC.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PiMinusStopC.cc,v 1.1.8.1.2.1 1999/12/07 20:52:40 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PiMinusStopC.cc,v 1.4 2000/04/18 17:18:36 pia Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -107,7 +107,7 @@ G4PiMinusStopC::G4PiMinusStopC() _clusterSize = 2; // R ratio - _R = 1. / (1. + npRatio); + theR = 1. / (1. + npRatio); _definitions = new G4RWTPtrOrderedVector(); _momenta = new G4RWTPtrOrderedVector(); diff --git a/source/processes/hadronic/stopping/src/G4PiMinusStopCo.cc b/source/processes/hadronic/stopping/src/G4PiMinusStopCo.cc index 15d7afaf2e..6a228ab3bd 100644 --- a/source/processes/hadronic/stopping/src/G4PiMinusStopCo.cc +++ b/source/processes/hadronic/stopping/src/G4PiMinusStopCo.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PiMinusStopCo.cc,v 1.1.8.1.2.1 1999/12/07 20:52:40 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PiMinusStopCo.cc,v 1.4 2000/04/18 17:18:36 pia Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -93,7 +93,7 @@ G4PiMinusStopCo::G4PiMinusStopCo() _clusterSize = 2; // R ratio - _R = 1. / (1. + npRatio); + theR = 1. / (1. + npRatio); _definitions = new G4RWTPtrOrderedVector(); _momenta = new G4RWTPtrOrderedVector(); diff --git a/source/processes/hadronic/stopping/src/G4PiMinusStopCu.cc b/source/processes/hadronic/stopping/src/G4PiMinusStopCu.cc index 67216da042..efabd86ca0 100644 --- a/source/processes/hadronic/stopping/src/G4PiMinusStopCu.cc +++ b/source/processes/hadronic/stopping/src/G4PiMinusStopCu.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PiMinusStopCu.cc,v 1.1.8.1.2.1 1999/12/07 20:52:40 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PiMinusStopCu.cc,v 1.4 2000/04/18 17:18:37 pia Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -92,7 +92,7 @@ G4PiMinusStopCu::G4PiMinusStopCu() _clusterSize = 2; // R ratio - _R = 1. / (1. + npRatio); + theR = 1. / (1. + npRatio); _definitions = new G4RWTPtrOrderedVector(); _momenta = new G4RWTPtrOrderedVector(); diff --git a/source/processes/hadronic/stopping/src/G4PiMinusStopLi.cc b/source/processes/hadronic/stopping/src/G4PiMinusStopLi.cc index 5fa51d7079..1b3e7611a5 100644 --- a/source/processes/hadronic/stopping/src/G4PiMinusStopLi.cc +++ b/source/processes/hadronic/stopping/src/G4PiMinusStopLi.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PiMinusStopLi.cc,v 1.1.8.1.2.1 1999/12/07 20:52:40 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PiMinusStopLi.cc,v 1.4 2000/04/18 17:18:37 pia Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -97,7 +97,7 @@ G4PiMinusStopLi::G4PiMinusStopLi() _clusterSize = 2; // R ratio - _R = 1. / (1. + npRatio); + theR = 1. / (1. + npRatio); _definitions = new G4RWTPtrOrderedVector(); _momenta = new G4RWTPtrOrderedVector(); diff --git a/source/processes/hadronic/stopping/src/G4PiMinusStopMaterial.cc b/source/processes/hadronic/stopping/src/G4PiMinusStopMaterial.cc index 7fef17a7be..7736ecfcdd 100644 --- a/source/processes/hadronic/stopping/src/G4PiMinusStopMaterial.cc +++ b/source/processes/hadronic/stopping/src/G4PiMinusStopMaterial.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PiMinusStopMaterial.cc,v 1.1.8.1.2.1.2.1 1999/12/08 17:35:09 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PiMinusStopMaterial.cc,v 1.4 2000/04/18 17:18:37 pia Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -82,7 +82,7 @@ G4RWTPtrOrderedVector* G4PiMinusStopMaterial::DefinitionVe _definitions->append(G4Neutron::Neutron()); G4double ranflat = G4UniformRand(); - if (ranflat < _R) + if (ranflat < theR) { _definitions->append(G4Proton::Proton()); } else { _definitions->append(G4Neutron::Neutron()); } diff --git a/source/processes/hadronic/stopping/src/G4PiMinusStopN.cc b/source/processes/hadronic/stopping/src/G4PiMinusStopN.cc index 8af29560ae..646f6ed294 100644 --- a/source/processes/hadronic/stopping/src/G4PiMinusStopN.cc +++ b/source/processes/hadronic/stopping/src/G4PiMinusStopN.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PiMinusStopN.cc,v 1.1.8.1.2.1 1999/12/07 20:52:40 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PiMinusStopN.cc,v 1.4 2000/04/18 17:18:37 pia Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -91,7 +91,7 @@ G4PiMinusStopN::G4PiMinusStopN() _clusterSize = 2; // R ratio - _R = 1. / (1. + npRatio); + theR = 1. / (1. + npRatio); _definitions = new G4RWTPtrOrderedVector(); _momenta = new G4RWTPtrOrderedVector(); diff --git a/source/processes/hadronic/stopping/src/G4PiMinusStopO.cc b/source/processes/hadronic/stopping/src/G4PiMinusStopO.cc index a926e5799b..2af1c3f7a2 100644 --- a/source/processes/hadronic/stopping/src/G4PiMinusStopO.cc +++ b/source/processes/hadronic/stopping/src/G4PiMinusStopO.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PiMinusStopO.cc,v 1.1.8.1.2.1 1999/12/07 20:52:40 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PiMinusStopO.cc,v 1.4 2000/04/18 17:18:37 pia Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -91,7 +91,7 @@ G4PiMinusStopO::G4PiMinusStopO() _clusterSize = 2; // R ratio - _R = 1. / (1. + npRatio); + theR = 1. / (1. + npRatio); _definitions = new G4RWTPtrOrderedVector(); _momenta = new G4RWTPtrOrderedVector(); diff --git a/source/processes/hadronic/stopping/src/G4PiMinusStopPb.cc b/source/processes/hadronic/stopping/src/G4PiMinusStopPb.cc index 1703161a50..ca3afc5e83 100644 --- a/source/processes/hadronic/stopping/src/G4PiMinusStopPb.cc +++ b/source/processes/hadronic/stopping/src/G4PiMinusStopPb.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PiMinusStopPb.cc,v 1.1.8.1.2.1 1999/12/07 20:52:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PiMinusStopPb.cc,v 1.4 2000/04/18 17:18:37 pia Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -91,7 +91,7 @@ G4PiMinusStopPb::G4PiMinusStopPb() _clusterSize = 2; // R ratio - _R = 1. / (1. + npRatio); + theR = 1. / (1. + npRatio); _definitions = new G4RWTPtrOrderedVector(); _momenta = new G4RWTPtrOrderedVector(); diff --git a/source/processes/hadronic/stopping/src/G4PiMinusStopTa.cc b/source/processes/hadronic/stopping/src/G4PiMinusStopTa.cc index 67a37eb0d3..0d4d50456a 100644 --- a/source/processes/hadronic/stopping/src/G4PiMinusStopTa.cc +++ b/source/processes/hadronic/stopping/src/G4PiMinusStopTa.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PiMinusStopTa.cc,v 1.1.8.1.2.1 1999/12/07 20:52:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PiMinusStopTa.cc,v 1.4 2000/04/18 17:18:37 pia Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -91,7 +91,7 @@ G4PiMinusStopTa::G4PiMinusStopTa() _clusterSize = 2; // R ratio - _R = 1. / (1. + npRatio); + theR = 1. / (1. + npRatio); _definitions = new G4RWTPtrOrderedVector(); _momenta = new G4RWTPtrOrderedVector(); diff --git a/source/processes/hadronic/stopping/src/G4PionMinusAbsorptionAtRest.cc b/source/processes/hadronic/stopping/src/G4PionMinusAbsorptionAtRest.cc index ea4fabed64..fbb57389ed 100644 --- a/source/processes/hadronic/stopping/src/G4PionMinusAbsorptionAtRest.cc +++ b/source/processes/hadronic/stopping/src/G4PionMinusAbsorptionAtRest.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PionMinusAbsorptionAtRest.cc,v 1.1.10.1.2.4 1999/12/15 11:43:41 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PionMinusAbsorptionAtRest.cc,v 1.2 1999/12/15 14:53:38 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -------------------------------------------------------------- // GEANT 4 class implementation file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/src/G4StopDeexcitation.cc b/source/processes/hadronic/stopping/src/G4StopDeexcitation.cc index 897a333361..4947e07be6 100644 --- a/source/processes/hadronic/stopping/src/G4StopDeexcitation.cc +++ b/source/processes/hadronic/stopping/src/G4StopDeexcitation.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4StopDeexcitation.cc,v 1.2.6.1.2.1 1999/12/07 20:52:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4StopDeexcitation.cc,v 1.4 1999/12/15 14:53:38 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/src/G4StopDummyDeexcitation.cc b/source/processes/hadronic/stopping/src/G4StopDummyDeexcitation.cc index aaf1e7d300..bbf309c768 100644 --- a/source/processes/hadronic/stopping/src/G4StopDummyDeexcitation.cc +++ b/source/processes/hadronic/stopping/src/G4StopDummyDeexcitation.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4StopDummyDeexcitation.cc,v 1.2.6.1.2.1 1999/12/07 20:52:41 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4StopDummyDeexcitation.cc,v 1.4 1999/12/15 14:53:39 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/src/G4StopElementSelector.cc b/source/processes/hadronic/stopping/src/G4StopElementSelector.cc new file mode 100644 index 0000000000..123509a9ae --- /dev/null +++ b/source/processes/hadronic/stopping/src/G4StopElementSelector.cc @@ -0,0 +1,264 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By 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 implementation file --- Copyright CERN 1998 +// CERN Geneva Switzerland +// +// For information related to this code contact: +// CERN, CN Division, ASD group +// History: first implementation, based on object model of +// 2nd December 1995, G.Cosmo +// ------------ G4MuonMinusCaptureAtRest physics process -------- +// by Vladimir Ivanchenko +// E-mail: Vladimir.Ivantchenko@cern.ch +// April 2000 +// ************************************************************** +// 25.04.00 V.Ivanchenko replace arrays by STL vectors +//----------------------------------------------------------------------------- + +#include "G4StopElementSelector.hh" +#include "g4std/vector" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +// constructor +G4StopElementSelector::G4StopElementSelector() +{ } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +// destructor +G4StopElementSelector::~G4StopElementSelector() +{ } + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4Element* G4StopElementSelector::GetElement(const G4Material* aMaterial) +{ + // Fermi-Teller Z-low of mu- capture and exceptions + // for halogens and oxigen. + // N.C.Mukhopadhyay Phy. Rep. 30 (1977) 1. + G4int i; + G4double Z; + const G4int numberOfElements = aMaterial->GetNumberOfElements(); + const G4ElementVector* theElementVector = aMaterial->GetElementVector(); + + 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(); + + // Halogens + if( (9.0 == Z) || (17.0 == Z) || (35.0 == Z) || (53.0 == Z) || (85.0 == Z) ) { + sum += 0.66 * Z * theAtomicNumberDensity[i] ; + + // Oxigen + } else if( 8.0 == Z ) { + sum += 0.56 * Z * theAtomicNumberDensity[i] ; + + // Others + } else { + sum += Z * theAtomicNumberDensity[i] ; + } + } + + G4double random = G4UniformRand() * sum; + sum = 0.0 ; + i = -1; + + // Selection of element + do { + i++; + Z = (*theElementVector)(i)->GetZ(); + + // Galogens + if( (9.0 == Z) || (17.0 == Z) || (35.0 == Z) || (53.0 == Z) || (85.0 == Z) ) { + sum += 0.66 * Z * theAtomicNumberDensity[i] ; + + // Oxigen + } else if( 8.0 == Z ) { + sum += 0.56 * Z * theAtomicNumberDensity[i] ; + + // Others + } else { + sum += Z * theAtomicNumberDensity[i] ; + } + } while ( (sum < random) && (i < numberOfElements - 1) ); + + return (*theElementVector)(i); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4double G4StopElementSelector::GetMuonCaptureRate(G4double Z, G4double A) +{ + // Initialized data + + // static G4std::vector zeff(100); + static G4double zeff[100] = { + 1.,1.98,2.95,3.89,4.8,5.72,6.61,7.49,8.32,9.12,9.95,10.69,11.48,12.22, + 12.91,13.64,14.24,14.89,15.53,16.15,16.75,17.38,18.04,18.49, + 19.06,19.59,20.1,20.66,21.12,21.61,22.02,22.43,22.84,23.24, + 23.65,24.06,24.47,24.85,25.23,25.61,25.99,26.37,26.69,27., + 27.32,27.63,27.95,28.2,28.42,28.64,28.79,29.03,29.27,29.51, + 29.75,29.99,30.2,30.36,30.53,30.69,30.85,31.01,31.18,31.34, + 31.48,31.62,31.76,31.9,32.05,32.19,32.33,32.47,32.61,32.76, + 32.94,33.11,33.29,33.46,33.64,33.81,34.21,34.18,34.,34.1, + 34.21,34.31,34.42,34.52,34.63,34.73,34.84,34.94,35.04,35.15, + 35.25,35.36,35.46,35.57,35.67,35.78 }; + + // Mu- capture data from B.B.Balashov, G.Ya.Korenman, P.A.Eramgan + // Atomizdat, 1978. (Experimental capture velocities) + + const size_t ListZE = 65; + // static G4std::vector ListZExp[ListZE] = { + static G4int ListZExp[ListZE] = { + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, + 24, 25, 26, 27, 28, 31, 32, 33, 34, 37, + 38, 39, 40, 41, 42, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, + 62, 64, 65, 67, 72, 73, 74, 80, 81, 82, + 83, 90, 92, 93}; + // static G4std::vector ListCaptureVel[ListZE] = { + static G4double ListCaptureVel[ListZE] = { + 0.0057, 0.010, 0.0258, 0.0371, 0.0644, + 0.0974, 0.144, 0.250, 0.386, 0.479, + 0.700, 0.849, 1.119, 1.338, 1.40, + 1.30, 1.98, 2.45, 2.60, 3.19, + 3.29, 3.91, 4.41, 4.96, 5.74, + 5.68, 5.53, 6.06, 5.69, 6.89, + 7.25, 7.89, 8.59, 10.40, 9.22, + 10.01, 10.00, 10.88, 10.62, 11.37, + 10.68, 10.49, 9.06, 11.20, 10.98, + 10.18, 10.71, 11.44, 13.45, 12.32, + 12.22, 12.09, 12.73, 12.95, 13.03, + 12.86, 13.13, 13.39, 12.74, 13.78, + 13.02, 13.26, 13.10, 14.00, 14.70}; + + + // Local variables + G4double zeff2, xmu, a2ze, r1, r2; + G4double lambda; + + // == Effective charges from Ford and Wills Nucl Phys 35(1962)295. + // == Untabulated charges are interpolated. + // == Mu capture lifetime (Goulard and Primakoff PRC10(1974)2034. + + G4int i = G4int(Z) - 1 ; + if(i > 99) i = 99; + + const G4double b0a = -.03; + const G4double b0b = -.25; + const G4double b0c = 3.24; + const G4double t1 = 875.e-10; + r1 = zeff[i]; + zeff2 = r1 * r1; + xmu = zeff2 * 2.663e-4; + a2ze = 0.5 * A / Z; + r2 = 1.0 - xmu; + lambda = t1 * zeff2 * zeff2 * (r2 * r2) * (1.0 - (1.0 - xmu) * .75704) * + (a2ze * b0a + 1.0 - (a2ze - 1.0) * b0b - + (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++) { + if( ListZExp[j] == i + 1) { + lambda = ListCaptureVel[j] / microsecond; + break; + } + } + + return lambda; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4double G4StopElementSelector::GetMuonDecayRate(G4double Z, G4double A) +{ + // Decay time on K-shell + // N.C.Mukhopadhyay Phy. Rep. 30 (1977) 1. + + G4double lambda = 1.0 - 2.5 * Z * Z / (137.0*137.0); + if( 0.5 > lambda ) lambda = 0.5; + return lambda * 0.445 / microsecond; +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/source/processes/hadronic/stopping/src/G4StopTheoDeexcitation.cc b/source/processes/hadronic/stopping/src/G4StopTheoDeexcitation.cc index cdc82daec0..01098a4da6 100644 --- a/source/processes/hadronic/stopping/src/G4StopTheoDeexcitation.cc +++ b/source/processes/hadronic/stopping/src/G4StopTheoDeexcitation.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4StopTheoDeexcitation.cc,v 1.2.6.1.2.1.2.1 1999/12/08 17:35:09 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4StopTheoDeexcitation.cc,v 1.4 1999/12/15 14:53:39 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/util/include/G4DynamicParticleVector.hh b/source/processes/hadronic/util/include/G4DynamicParticleVector.hh index fc1d94cf59..4988976c67 100644 --- a/source/processes/hadronic/util/include/G4DynamicParticleVector.hh +++ b/source/processes/hadronic/util/include/G4DynamicParticleVector.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DynamicParticleVector.hh,v 1.1.8.1.2.1 1999/12/07 20:52:42 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DynamicParticleVector.hh,v 1.3 1999/12/15 14:53:40 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // For information related to this code contact: diff --git a/source/processes/hadronic/util/include/G4GHEKinematicsVector.hh b/source/processes/hadronic/util/include/G4GHEKinematicsVector.hh index 3757649787..16e1b60470 100644 --- a/source/processes/hadronic/util/include/G4GHEKinematicsVector.hh +++ b/source/processes/hadronic/util/include/G4GHEKinematicsVector.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4GHEKinematicsVector.hh,v 1.1.10.1.2.2 1999/12/10 15:42:17 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4GHEKinematicsVector.hh,v 1.2 1999/12/15 14:53:40 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------ // GEANT 4 class header file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/util/include/G4LightMedia.hh b/source/processes/hadronic/util/include/G4LightMedia.hh index 62a5c0f97b..16614a3e12 100644 --- a/source/processes/hadronic/util/include/G4LightMedia.hh +++ b/source/processes/hadronic/util/include/G4LightMedia.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LightMedia.hh,v 1.1.10.1 1999/12/07 20:52:42 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LightMedia.hh,v 1.2 1999/12/15 14:53:40 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 61c2020c69..e962110602 100644 --- a/source/processes/hadronic/util/include/G4Nucleus.hh +++ b/source/processes/hadronic/util/include/G4Nucleus.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Nucleus.hh,v 1.1.10.1 1999/12/07 20:52:42 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Nucleus.hh,v 1.2 1999/12/15 14:53:40 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // original by H.P. Wellisch // modified by J.L. Chuma, TRIUMF, 19-Nov-1996 diff --git a/source/processes/hadronic/util/include/G4ParticleVector.hh b/source/processes/hadronic/util/include/G4ParticleVector.hh index cb52946170..75d8efccd3 100644 --- a/source/processes/hadronic/util/include/G4ParticleVector.hh +++ b/source/processes/hadronic/util/include/G4ParticleVector.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ParticleVector.hh,v 1.1.8.1.2.1 1999/12/07 20:52:43 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ParticleVector.hh,v 1.3 1999/12/15 14:53:40 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // ------------------------------------------------------------ // HPW decoupling theo models from RW (Mon Mar 16 1998) diff --git a/source/processes/hadronic/util/include/G4ReactionDynamics.hh b/source/processes/hadronic/util/include/G4ReactionDynamics.hh index 4ab8c0bbf8..85bea3361c 100644 --- a/source/processes/hadronic/util/include/G4ReactionDynamics.hh +++ b/source/processes/hadronic/util/include/G4ReactionDynamics.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ReactionDynamics.hh,v 1.1.10.1 1999/12/07 20:52:43 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ReactionDynamics.hh,v 1.2 1999/12/15 14:53:40 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // Hadronic Process: Reaction Dynamics // original by H.P. Wellisch diff --git a/source/processes/hadronic/util/include/G4ReactionKinematics.hh b/source/processes/hadronic/util/include/G4ReactionKinematics.hh index ee34190f8d..f6164e6892 100644 --- a/source/processes/hadronic/util/include/G4ReactionKinematics.hh +++ b/source/processes/hadronic/util/include/G4ReactionKinematics.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ReactionKinematics.hh,v 1.1.10.1 1999/12/07 20:52:43 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ReactionKinematics.hh,v 1.2 1999/12/15 14:53:40 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 d18023faca..7b1ddd48bc 100644 --- a/source/processes/hadronic/util/include/G4ReactionProduct.hh +++ b/source/processes/hadronic/util/include/G4ReactionProduct.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ReactionProduct.hh,v 1.1.10.1 1999/12/07 20:52:43 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ReactionProduct.hh,v 1.2 1999/12/15 14:53:40 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 f5149332e0..f8dbe90915 100644 --- a/source/processes/hadronic/util/include/G4ReactionProductVector.hh +++ b/source/processes/hadronic/util/include/G4ReactionProductVector.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ReactionProductVector.hh,v 1.1.8.1.2.1 1999/12/07 20:52:43 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ReactionProductVector.hh,v 1.3 1999/12/15 14:53:40 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // For information related to this code contact: diff --git a/source/processes/hadronic/util/include/G4StableIsotopes.hh b/source/processes/hadronic/util/include/G4StableIsotopes.hh index d899489a77..fec9318654 100644 --- a/source/processes/hadronic/util/include/G4StableIsotopes.hh +++ b/source/processes/hadronic/util/include/G4StableIsotopes.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4StableIsotopes.hh,v 1.1.10.1 1999/12/07 20:52:43 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4StableIsotopes.hh,v 1.3 1999/12/15 14:53:40 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4StableIsotopes_h #define G4StableIsotopes_h 1 @@ -36,7 +36,7 @@ G4int GetIsotopeNucleonCount(G4int number) {return nucleonCount[number];} G4double GetAbundance(G4int number) {return abundance[number];} G4int GetProtonCount(G4int Z) {return protonCount[Z-1];} -public: +private: static const G4int protonCount[92]; static const G4String elementName[92]; diff --git a/source/processes/hadronic/util/src/G4LightMedia.cc b/source/processes/hadronic/util/src/G4LightMedia.cc index 31a6ea09d3..f781f2486b 100644 --- a/source/processes/hadronic/util/src/G4LightMedia.cc +++ b/source/processes/hadronic/util/src/G4LightMedia.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LightMedia.cc,v 1.1.10.1.2.1 1999/12/10 15:42:17 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LightMedia.cc,v 1.2 1999/12/15 14:53:40 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // Hadronic Process: Light Media Charge and/or Strangeness Exchange // J.L. Chuma, TRIUMF, 21-Feb-1997 diff --git a/source/processes/hadronic/util/src/G4Nucleus.cc b/source/processes/hadronic/util/src/G4Nucleus.cc index d22e3774eb..157b059f76 100644 --- a/source/processes/hadronic/util/src/G4Nucleus.cc +++ b/source/processes/hadronic/util/src/G4Nucleus.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Nucleus.cc,v 1.3.8.1.2.1 1999/12/10 15:42:18 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Nucleus.cc,v 1.4 1999/12/15 14:53:40 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // original by H.P. Wellisch // modified by J.L. Chuma, TRIUMF, 19-Nov-1996 diff --git a/source/processes/hadronic/util/src/G4ReactionDynamics.cc b/source/processes/hadronic/util/src/G4ReactionDynamics.cc index 206b385721..4b2ce4920a 100644 --- a/source/processes/hadronic/util/src/G4ReactionDynamics.cc +++ b/source/processes/hadronic/util/src/G4ReactionDynamics.cc @@ -1331,6 +1331,9 @@ currentParticle = *vec[0]; targetParticle = *vec[1]; for( i=0; i<(vecLen-2); ++i )*vec[i] = *vec[i+2]; + if(vecLen<2) G4Exception("G4ReactionDynamics::TwoCluster: Negative number of particles"); + delete vec[vecLen-1]; + delete vec[vecLen-2]; vecLen -= 2; currentMass = currentParticle.GetMass()/GeV; targetMass = targetParticle.GetMass()/GeV; @@ -1375,7 +1378,9 @@ // // nucleons and some pions from intranuclear cascade // - const G4double afc = 0.312 + 0.2 * log(log(centerofmassEnergy*centerofmassEnergy)); + G4double term1 = log(centerofmassEnergy*centerofmassEnergy); + if(term1 < 0) term1 = 0.0001; // making sure xtarg<0; + const G4double afc = 0.312 + 0.2 * log(term1); G4double xtarg; if( centerofmassEnergy < 2.0+G4UniformRand() ) // added +2 below, JLC 4Jul97 xtarg = afc * (pow(atomicWeight,0.33)-1.0) * (2*backwardCount+vecLen+2)/2.0; @@ -1465,7 +1470,10 @@ } else { - if( vecLen == 0 )return false; // all secondaries have been eliminated + if( vecLen == 0 ) + { + return false; // all secondaries have been eliminated + } if( targetParticle.GetSide() == -1 ) { pMass = targetParticle.GetMass()/GeV; @@ -3578,45 +3586,49 @@ G4int nt = 2; if( (index>=6) || (G4UniformRand()SetMass( mass[index]*MeV ); switch( index ) { case 0: - v[1].SetDefinition( aGamma ); - v[2].SetDefinition( aGamma ); + v[1]->SetDefinition( aGamma ); + v[2]->SetDefinition( aGamma ); break; case 1: - v[1].SetDefinition( aNeutron ); - v[2].SetDefinition( aGamma ); + v[1]->SetDefinition( aNeutron ); + v[2]->SetDefinition( aGamma ); break; case 2: - v[1].SetDefinition( aProton ); - v[2].SetDefinition( aGamma ); + v[1]->SetDefinition( aProton ); + v[2]->SetDefinition( aGamma ); break; case 3: - v[1].SetDefinition( aDeuteron ); - v[2].SetDefinition( aGamma ); + v[1]->SetDefinition( aDeuteron ); + v[2]->SetDefinition( aGamma ); break; case 4: - v[1].SetDefinition( aTriton ); - v[2].SetDefinition( aGamma ); + v[1]->SetDefinition( aTriton ); + v[2]->SetDefinition( aGamma ); break; case 5: - v[1].SetDefinition( anAlpha ); - v[2].SetDefinition( aGamma ); + v[1]->SetDefinition( anAlpha ); + v[2]->SetDefinition( aGamma ); break; case 6: - v[1].SetDefinition( aNeutron ); - v[2].SetDefinition( aNeutron ); + v[1]->SetDefinition( aNeutron ); + v[2]->SetDefinition( aNeutron ); break; case 7: - v[1].SetDefinition( aNeutron ); - v[2].SetDefinition( aProton ); + v[1]->SetDefinition( aNeutron ); + v[2]->SetDefinition( aProton ); break; case 8: - v[1].SetDefinition( aProton ); - v[2].SetDefinition( aProton ); + v[1]->SetDefinition( aProton ); + v[2]->SetDefinition( aProton ); break; } // @@ -3633,40 +3645,40 @@ G4FastVector tempV; tempV.Initialize( nt ); G4int tempLen = 0; - tempV.SetElement( tempLen++, &v[0] ); - tempV.SetElement( tempLen++, &v[1] ); - if( nt == 3 )tempV.SetElement( tempLen++, &v[2] ); + tempV.SetElement( tempLen++, v[0] ); + 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 ); - v[0].Lorentz( v[0], pseudo2 ); - v[1].Lorentz( v[1], pseudo2 ); - if( nt == 3 )v[2].Lorentz( v[2], pseudo2 ); + v[0]->Lorentz( *v[0], pseudo2 ); + v[1]->Lorentz( *v[1], pseudo2 ); + if( nt == 3 )v[2]->Lorentz( *v[2], pseudo2 ); G4bool particleIsDefined = false; - if( v[0].GetMass()/MeV - aProtonMass < 0.1 ) + if( v[0]->GetMass()/MeV - aProtonMass < 0.1 ) { - v[0].SetDefinition( aProton ); + v[0]->SetDefinition( aProton ); particleIsDefined = true; } - else if( v[0].GetMass()/MeV - aNeutronMass < 0.1 ) + else if( v[0]->GetMass()/MeV - aNeutronMass < 0.1 ) { - v[0].SetDefinition( aNeutron ); + v[0]->SetDefinition( aNeutron ); particleIsDefined = true; } - else if( v[0].GetMass()/MeV - aDeuteronMass < 0.1 ) + else if( v[0]->GetMass()/MeV - aDeuteronMass < 0.1 ) { - v[0].SetDefinition( aDeuteron ); + v[0]->SetDefinition( aDeuteron ); particleIsDefined = true; } - else if( v[0].GetMass()/MeV - aTritonMass < 0.1 ) + else if( v[0]->GetMass()/MeV - aTritonMass < 0.1 ) { - v[0].SetDefinition( aTriton ); + v[0]->SetDefinition( aTriton ); particleIsDefined = true; } - else if( v[0].GetMass()/MeV - anAlphaMass < 0.1 ) + else if( v[0]->GetMass()/MeV - anAlphaMass < 0.1 ) { - v[0].SetDefinition( anAlpha ); + v[0]->SetDefinition( anAlpha ); particleIsDefined = true; } currentParticle.SetKineticEnergy( @@ -3686,69 +3698,84 @@ if( particleIsDefined ) { - v[0].SetKineticEnergy( - G4std::max( 0.001, 0.5*G4UniformRand()*v[0].GetKineticEnergy()/MeV ) ); - p = v[0].GetTotalMomentum(); - pp = v[0].GetMomentum().mag(); + v[0]->SetKineticEnergy( + G4std::max( 0.001, 0.5*G4UniformRand()*v[0]->GetKineticEnergy()/MeV ) ); + p = v[0]->GetTotalMomentum(); + pp = v[0]->GetMomentum().mag(); if( pp <= 0.001*MeV ) { G4double phinve = twopi*G4UniformRand(); G4double rthnve = acos( G4std::max(-1.0,G4std::min(1.0,-1.0+2.0*G4UniformRand())) ); - v[0].SetMomentum( p*sin(rthnve)*cos(phinve), + v[0]->SetMomentum( p*sin(rthnve)*cos(phinve), p*sin(rthnve)*sin(phinve), p*cos(rthnve) ); } else - v[0].SetMomentum( v[0].GetMomentum() * (p/pp) ); + v[0]->SetMomentum( v[0]->GetMomentum() * (p/pp) ); } - if( (v[1].GetDefinition() == aDeuteron) || - (v[1].GetDefinition() == aTriton) || - (v[1].GetDefinition() == anAlpha) ) - v[1].SetKineticEnergy( - G4std::max( 0.001, 0.5*G4UniformRand()*v[1].GetKineticEnergy()/MeV ) ); + if( (v[1]->GetDefinition() == aDeuteron) || + (v[1]->GetDefinition() == aTriton) || + (v[1]->GetDefinition() == anAlpha) ) + v[1]->SetKineticEnergy( + G4std::max( 0.001, 0.5*G4UniformRand()*v[1]->GetKineticEnergy()/MeV ) ); else - v[1].SetKineticEnergy( G4std::max( 0.001, v[1].GetKineticEnergy()/MeV ) ); + v[1]->SetKineticEnergy( G4std::max( 0.001, v[1]->GetKineticEnergy()/MeV ) ); - p = v[1].GetTotalMomentum(); - pp = v[1].GetMomentum().mag(); + p = v[1]->GetTotalMomentum(); + pp = v[1]->GetMomentum().mag(); if( pp <= 0.001*MeV ) { G4double phinve = twopi*G4UniformRand(); G4double rthnve = acos( G4std::max(-1.0,G4std::min(1.0,-1.0+2.0*G4UniformRand())) ); - v[1].SetMomentum( p*sin(rthnve)*cos(phinve), + v[1]->SetMomentum( p*sin(rthnve)*cos(phinve), p*sin(rthnve)*sin(phinve), p*cos(rthnve) ); } else - v[1].SetMomentum( v[1].GetMomentum() * (p/pp) ); + v[1]->SetMomentum( v[1]->GetMomentum() * (p/pp) ); if( nt == 3 ) { - if( (v[2].GetDefinition() == aDeuteron) || - (v[2].GetDefinition() == aTriton) || - (v[2].GetDefinition() == anAlpha) ) - v[2].SetKineticEnergy( - G4std::max( 0.001, 0.5*G4UniformRand()*v[2].GetKineticEnergy()/MeV ) ); + if( (v[2]->GetDefinition() == aDeuteron) || + (v[2]->GetDefinition() == aTriton) || + (v[2]->GetDefinition() == anAlpha) ) + v[2]->SetKineticEnergy( + G4std::max( 0.001, 0.5*G4UniformRand()*v[2]->GetKineticEnergy()/MeV ) ); else - v[2].SetKineticEnergy( G4std::max( 0.001, v[2].GetKineticEnergy()/MeV ) ); + v[2]->SetKineticEnergy( G4std::max( 0.001, v[2]->GetKineticEnergy()/MeV ) ); - p = v[2].GetTotalMomentum(); - pp = v[2].GetMomentum().mag(); + p = v[2]->GetTotalMomentum(); + pp = v[2]->GetMomentum().mag(); if( pp <= 0.001*MeV ) { G4double phinve = twopi*G4UniformRand(); G4double rthnve = acos( G4std::max(-1.0,G4std::min(1.0,-1.0+2.0*G4UniformRand())) ); - v[2].SetMomentum( p*sin(rthnve)*cos(phinve), + v[2]->SetMomentum( p*sin(rthnve)*cos(phinve), p*sin(rthnve)*sin(phinve), p*cos(rthnve) ); } else - v[2].SetMomentum( v[2].GetMomentum() * (p/pp) ); + v[2]->SetMomentum( v[2]->GetMomentum() * (p/pp) ); } vecLen = 0; - if( particleIsDefined )vec.SetElement( vecLen++, &v[0] ); - vec.SetElement( vecLen++, &v[1] ); - if( nt == 3 )vec.SetElement( vecLen++, &v[2] ); + if( particleIsDefined ) + { + vec.SetElement( vecLen++, v[0] ); + } + else + { + delete v[0]; + } + vec.SetElement( vecLen++, v[1] ); + if( nt == 3 ) + { + vec.SetElement( vecLen++, v[2] ); + } + else + { + delete v[2]; + } + delete [] v; return; } diff --git a/source/processes/hadronic/util/src/G4ReactionKinematics.cc b/source/processes/hadronic/util/src/G4ReactionKinematics.cc index 8c1644ed8a..0e895134b2 100644 --- a/source/processes/hadronic/util/src/G4ReactionKinematics.cc +++ b/source/processes/hadronic/util/src/G4ReactionKinematics.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ReactionKinematics.cc,v 1.1.10.1 1999/12/07 20:52:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ReactionKinematics.cc,v 1.2 1999/12/15 14:53:41 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // CERN Geneva Switzerland // diff --git a/source/processes/hadronic/util/src/G4ReactionProduct.cc b/source/processes/hadronic/util/src/G4ReactionProduct.cc index 2b4dca89ea..4d0afae510 100644 --- a/source/processes/hadronic/util/src/G4ReactionProduct.cc +++ b/source/processes/hadronic/util/src/G4ReactionProduct.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ReactionProduct.cc,v 1.1.10.1 1999/12/07 20:52:46 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ReactionProduct.cc,v 1.2 1999/12/15 14:53:41 gunter Exp $ +// GEANT4 tag $Name: geant4-02-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 2d58923c12..f4fb7ce20a 100644 --- a/source/processes/hadronic/util/src/G4StableIsotopes.cc +++ b/source/processes/hadronic/util/src/G4StableIsotopes.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4StableIsotopes.cc,v 1.1.10.1 1999/12/07 20:52:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4StableIsotopes.cc,v 1.2 1999/12/15 14:53:41 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4StableIsotopes.hh" diff --git a/source/processes/management/History b/source/processes/management/History index c063f0e602..2df0d334c9 100644 --- a/source/processes/management/History +++ b/source/processes/management/History @@ -1,4 +1,4 @@ -$Id: History,v 1.8 1999/11/07 17:11:38 kurasige Exp $ +$Id: History,v 1.12 2000/05/12 14:27:06 kurasige Exp $ ------------------------------------------------------------------- ========================================================= @@ -16,6 +16,17 @@ committal in the CVS repository ! ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +- May 12 ,00 H.Kurashige (procman-V01-01-00) +- small bug fix in G4ProcessManager.cc + +- Mar. 02, 00 H.Kurashige (procman-V01-00-01) +- Use STL vector instead of RW vectors (except for G4PhysicsVector) +- Add registration of process into ProcessTable in copy constructor + +- Feb. 25, 00 H.Kurashige (procman-V01-00-00) +- Remove G4RhoZero from G4ParticleTypes.hh + + - Nov. 7, 99 H.Kurashige (procman-V00-01-01) - Added comments in header files for "Software Reference Manual" diff --git a/source/processes/management/include/G4IVContinuousDiscreteProcess.hh b/source/processes/management/include/G4IVContinuousDiscreteProcess.hh index 36cd45b570..8ffdfc9c0f 100644 --- a/source/processes/management/include/G4IVContinuousDiscreteProcess.hh +++ b/source/processes/management/include/G4IVContinuousDiscreteProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IVContinuousDiscreteProcess.hh,v 1.5.6.1 1999/12/08 17:35:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IVContinuousDiscreteProcess.hh,v 1.6 1999/12/15 14:53:42 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4IVRestDiscreteProcess.hh b/source/processes/management/include/G4IVRestDiscreteProcess.hh index d5f03d5c76..1276fa5773 100644 --- a/source/processes/management/include/G4IVRestDiscreteProcess.hh +++ b/source/processes/management/include/G4IVRestDiscreteProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IVRestDiscreteProcess.hh,v 1.5.6.1 1999/12/08 17:35:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IVRestDiscreteProcess.hh,v 1.6 1999/12/15 14:53:42 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4ParticleTypes.hh b/source/processes/management/include/G4ParticleTypes.hh index 8f147a6dd2..8cfd2ef04d 100644 --- a/source/processes/management/include/G4ParticleTypes.hh +++ b/source/processes/management/include/G4ParticleTypes.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ParticleTypes.hh,v 1.3 1999/11/07 17:11:43 kurasige Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ParticleTypes.hh,v 1.4 2000/02/25 10:11:18 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -56,7 +56,6 @@ #include "G4PionZero.hh" #include "G4Eta.hh" #include "G4EtaPrime.hh" -#include "G4RhoZero.hh" #include "G4KaonPlus.hh" #include "G4KaonMinus.hh" diff --git a/source/processes/management/include/G4ProcTblElement.hh b/source/processes/management/include/G4ProcTblElement.hh index 5e50c9d1eb..96a112c66a 100644 --- a/source/processes/management/include/G4ProcTblElement.hh +++ b/source/processes/management/include/G4ProcTblElement.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ProcTblElement.hh,v 1.4.2.1 1999/11/11 14:31:29 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ProcTblElement.hh,v 1.7 2000/03/02 01:45:10 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -17,6 +17,8 @@ // History: first implementation, based on object model of // 4th Aug 1998, H.Kurashige // ------------------------------------------------------------ +// Use STL vector instead of RW vector 1. Mar 00 H.Kurashige +// // Class Description // This class is used by G4ProcessTable ONLY for booking !!! // @@ -26,7 +28,7 @@ #include "globals.hh" #include "G4ios.hh" -#include "g4rw/tpordvec.h" +#include "g4std/vector" #include "G4ParticleDefinition.hh" #include "G4VProcess.hh" @@ -55,20 +57,24 @@ class G4ProcTblElement // equal / unequal operator protected: - typedef G4RWTPtrOrderedVector G4ProcMgrVector; + // Use STL Vector + typedef G4std::vector G4ProcMgrVector; - inline G4int Length() const ; - inline void Insert(G4ProcessManager* aProcMgr); - inline void Remove(G4ProcessManager* aProcMgr); + G4int Length() const ; + void Insert(G4ProcessManager* aProcMgr); + void Remove(G4ProcessManager* aProcMgr); - inline G4VProcess* GetProcess() const; - inline const G4String& GetProcessName() const; + G4VProcess* GetProcess() const; + const G4String& GetProcessName() const; - inline G4ProcessManager* GetProcessManager(G4int index) const; - const G4ProcMgrVector* GetProcMgrVector() const { return pProcMgrVector; } + G4ProcessManager* GetProcessManager(G4int index) const; + + inline + const G4ProcMgrVector* GetProcMgrVector() const + { return pProcMgrVector;} - inline G4int GetIndex(const G4ProcessManager* pManager) const ; - inline G4bool Contains(const G4ProcessManager* pManager) const ; + G4int GetIndex(const G4ProcessManager* pManager) const ; + G4bool Contains(const G4ProcessManager* pManager) const ; private: G4VProcess* pProcess; diff --git a/source/processes/management/include/G4ProcTblElement.icc b/source/processes/management/include/G4ProcTblElement.icc index ccd40b6f6a..c6928067df 100644 --- a/source/processes/management/include/G4ProcTblElement.icc +++ b/source/processes/management/include/G4ProcTblElement.icc @@ -1,16 +1,46 @@ -////////////////////////// +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ProcTblElement.icc,v 1.5 2000/03/02 01:45:10 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// ------------------------------------------------------------ +// GEANT 4 class header file +// +// For information related to this code contact: +// CERN, IT Division, ASD group +// History: first implementation, based on object model of +// 4th Aug 1998, H.Kurashige +// ------------------------------------------------------------ +// Use STL vector instead of RW vector 1. Mar 00 H.Kurashige + +///////////// inline G4bool G4ProcTblElement::Contains(const G4ProcessManager* pManager) const { - return pProcMgrVector->contains(pManager); + G4ProcMgrVector::iterator i; + for (i = pProcMgrVector->begin(); i!= pProcMgrVector->end(); ++i) { + if (*i==pManager) return true; + } + return false; } ////////////////////////// inline G4int G4ProcTblElement::GetIndex(const G4ProcessManager* pManager) const { - if ( Contains(pManager) ) return pProcMgrVector->index(pManager); - else return -1; + G4int index = 0; + G4ProcMgrVector::iterator i; + for (i = pProcMgrVector->begin(); i!= pProcMgrVector->end(); ++i) { + if (*i==pManager) return index; + index +=1; + } + return -1; } @@ -18,20 +48,15 @@ inline inline G4int G4ProcTblElement::Length() const { - if (pProcMgrVector != 0) return pProcMgrVector->length(); - else return -1; + return pProcMgrVector->size(); } ////////////////////////// inline G4ProcessManager* G4ProcTblElement::GetProcessManager(G4int index) const { - if (pProcMgrVector != 0) { - if ((index < pProcMgrVector->length()) && (index>=0)){ - return (*pProcMgrVector)(index); - } else { - return 0; - } + if ((index < pProcMgrVector->size()) && (index>=0)){ + return (*pProcMgrVector)[index]; } else { return 0; } @@ -50,14 +75,20 @@ inline inline void G4ProcTblElement::Insert(G4ProcessManager* aProcMgr) { - if (pProcMgrVector != 0) pProcMgrVector->insert(aProcMgr); + pProcMgrVector->push_back(aProcMgr); } ////////////////////////// inline void G4ProcTblElement::Remove(G4ProcessManager* aProcMgr) { - if (pProcMgrVector != 0) pProcMgrVector->remove(aProcMgr); + G4ProcMgrVector::iterator i; + for (i = pProcMgrVector->begin(); i!= pProcMgrVector->end(); ++i) { + if (*i==aProcMgr){ + pProcMgrVector->erase(i); + break; + } + } } ////////////////////////// diff --git a/source/processes/management/include/G4ProcessAttribute.hh b/source/processes/management/include/G4ProcessAttribute.hh index a2e6bdae39..41465127be 100644 --- a/source/processes/management/include/G4ProcessAttribute.hh +++ b/source/processes/management/include/G4ProcessAttribute.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ProcessAttribute.hh,v 1.3 1999/11/07 17:11:43 kurasige Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4ProcessManager.hh b/source/processes/management/include/G4ProcessManager.hh index 0eb355db02..0723718038 100644 --- a/source/processes/management/include/G4ProcessManager.hh +++ b/source/processes/management/include/G4ProcessManager.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ProcessManager.hh,v 1.5.2.1 1999/11/11 14:31:29 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ProcessManager.hh,v 1.7 2000/03/02 01:16:05 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -45,6 +45,7 @@ // Add SetProcessOrdering methods 27 Mar 1998 H.Kurahige // Add copy constructor (deep copy) 28 June 1998 H.Kurashige // Add GetProcessActivation 3 May. 1999 H.Kurashige +// Use STL vector instead of RW vector 1. Mar 00 H.Kurashige // ------------------------------------------------------------ #ifndef G4ProcessManager_h @@ -52,7 +53,7 @@ #include "globals.hh" #include "G4ios.hh" -#include "g4rw/tpordvec.h" +#include "g4std/vector" #include "G4VProcess.hh" #include "G4ProcessVector.hh" @@ -258,7 +259,7 @@ class G4ProcessManager G4ProcessVector* theProcVector[SizeOfProcVectorArray]; // vector for processes with GetPhysicalInteractionLength/DoIt - typedef G4RWTPtrOrderedVector G4ProcessAttrVector; + typedef G4std::vector G4ProcessAttrVector; G4ProcessAttrVector* theAttrVector; // vector for process attribute diff --git a/source/processes/management/include/G4ProcessManager.icc b/source/processes/management/include/G4ProcessManager.icc index 574ecb138a..14cb41fe16 100644 --- a/source/processes/management/include/G4ProcessManager.icc +++ b/source/processes/management/include/G4ProcessManager.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ProcessManager.icc,v 1.1.4.1 1999/12/07 20:52:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ProcessManager.icc,v 1.2 1999/12/15 14:53:42 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/processes/management/include/G4ProcessManagerMessenger.hh b/source/processes/management/include/G4ProcessManagerMessenger.hh index 9ca5a6af64..a662235c55 100644 --- a/source/processes/management/include/G4ProcessManagerMessenger.hh +++ b/source/processes/management/include/G4ProcessManagerMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ProcessManagerMessenger.hh,v 1.4 1999/11/07 17:11:44 kurasige Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/processes/management/include/G4ProcessTable.hh b/source/processes/management/include/G4ProcessTable.hh index 9eb807479b..117a89585c 100644 --- a/source/processes/management/include/G4ProcessTable.hh +++ b/source/processes/management/include/G4ProcessTable.hh @@ -6,8 +6,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ProcessTable.hh,v 1.4.2.1 1999/11/11 14:31:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ProcessTable.hh,v 1.6 2000/03/02 01:16:05 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -23,7 +23,8 @@ // which are registered in all particles // // History: -// Added G4ProcessTableMesseneger 16 Aug. 1998, H.Kurashige +// Added G4ProcessTableMesseneger 16 Aug. 1998, H.Kurashige +// Use STL vector instead of RW vector 1. Mar 00 H.Kurashige // // ------------------------------------------------------------ @@ -32,8 +33,7 @@ #include "globals.hh" #include "G4ios.hh" -#include "g4rw/tpordvec.h" -#include "g4rw/tvordvec.h" +#include "g4std/vector" #include "G4ProcTblElement.hh" #include "G4ProcessVector.hh" @@ -112,8 +112,8 @@ class G4ProcessTable // These methods are provided to activate or inactivate processes public: - typedef G4RWTPtrOrderedVector G4ProcTableVector; - typedef G4RWTValOrderedVector G4ProcNameVector; + typedef G4std::vector G4ProcTableVector; + typedef G4std::vector G4ProcNameVector; public: // with description G4ProcNameVector* GetNameList(); @@ -171,23 +171,5 @@ class G4ProcessTable }; -inline - void G4ProcessTable::SetVerboseLevel(G4int value) -{ - verboseLevel = value; -} - -inline - G4int G4ProcessTable::GetVerboseLevel() const -{ - return verboseLevel; -} - -inline - G4int G4ProcessTable::Length() const -{ - return fProcTblVector->length(); -} - #include "G4ProcessTable.icc" #endif diff --git a/source/processes/management/include/G4ProcessTable.icc b/source/processes/management/include/G4ProcessTable.icc index 3d9150d8c2..ab35747534 100644 --- a/source/processes/management/include/G4ProcessTable.icc +++ b/source/processes/management/include/G4ProcessTable.icc @@ -1,5 +1,39 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ProcessTable.icc,v 1.3 2000/03/02 01:16:05 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// History: +// Use STL vector instead of RW vector 1. Mar 00 H.Kurashige +// #include "G4ParticleTable.hh" +////////////////////////// +inline + void G4ProcessTable::SetVerboseLevel(G4int value) +{ + verboseLevel = value; +} + +////////////////////////// +inline + G4int G4ProcessTable::GetVerboseLevel() const +{ + return verboseLevel; +} + +////////////////////////// +inline + G4int G4ProcessTable::Length() const +{ + return fProcTblVector->size(); +} + ////////////////////////// inline G4ProcessTable::G4ProcNameVector* G4ProcessTable::GetNameList() diff --git a/source/processes/management/include/G4ProcessTableMessenger.hh b/source/processes/management/include/G4ProcessTableMessenger.hh index ddd6efbb53..e89cd4f52f 100644 --- a/source/processes/management/include/G4ProcessTableMessenger.hh +++ b/source/processes/management/include/G4ProcessTableMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ProcessTableMessenger.hh,v 1.3 1999/11/07 17:11:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/processes/management/include/G4ProcessType.hh b/source/processes/management/include/G4ProcessType.hh index c2a18218ba..caeba8e936 100644 --- a/source/processes/management/include/G4ProcessType.hh +++ b/source/processes/management/include/G4ProcessType.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ProcessType.hh,v 1.3 1999/11/07 17:11:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/processes/management/include/G4ProcessVector.hh b/source/processes/management/include/G4ProcessVector.hh index a0aac4f832..d5e627a0a0 100644 --- a/source/processes/management/include/G4ProcessVector.hh +++ b/source/processes/management/include/G4ProcessVector.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ProcessVector.hh,v 1.3.2.1 1999/11/11 14:31:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ProcessVector.hh,v 1.5 1999/11/15 10:39:47 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4VContinuousDiscreteProcess.hh b/source/processes/management/include/G4VContinuousDiscreteProcess.hh index bc4a948d2f..411f472613 100644 --- a/source/processes/management/include/G4VContinuousDiscreteProcess.hh +++ b/source/processes/management/include/G4VContinuousDiscreteProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VContinuousDiscreteProcess.hh,v 1.3.6.1 1999/12/08 17:35:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VContinuousDiscreteProcess.hh,v 1.4 1999/12/15 14:53:42 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4VContinuousProcess.hh b/source/processes/management/include/G4VContinuousProcess.hh index 5cdb10f2cc..92b1adeb28 100644 --- a/source/processes/management/include/G4VContinuousProcess.hh +++ b/source/processes/management/include/G4VContinuousProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VContinuousProcess.hh,v 1.3.6.1 1999/12/08 17:35:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VContinuousProcess.hh,v 1.4 1999/12/15 14:53:42 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4VDiscreteProcess.hh b/source/processes/management/include/G4VDiscreteProcess.hh index 3205ce1bf2..5370ec9f5d 100644 --- a/source/processes/management/include/G4VDiscreteProcess.hh +++ b/source/processes/management/include/G4VDiscreteProcess.hh @@ -6,8 +6,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VDiscreteProcess.hh,v 1.3.6.1 1999/12/08 17:35:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VDiscreteProcess.hh,v 1.4 1999/12/15 14:53:42 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4VProcess.hh b/source/processes/management/include/G4VProcess.hh index fd9c79128c..5d27981d79 100644 --- a/source/processes/management/include/G4VProcess.hh +++ b/source/processes/management/include/G4VProcess.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VProcess.hh,v 1.5 1999/11/07 17:11:47 kurasige Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4VRestContinuousDiscreteProcess.hh b/source/processes/management/include/G4VRestContinuousDiscreteProcess.hh index 195aee1a97..4998ebc56f 100644 --- a/source/processes/management/include/G4VRestContinuousDiscreteProcess.hh +++ b/source/processes/management/include/G4VRestContinuousDiscreteProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VRestContinuousDiscreteProcess.hh,v 1.3.6.1 1999/12/08 17:35:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VRestContinuousDiscreteProcess.hh,v 1.4 1999/12/15 14:53:42 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4VRestContinuousProcess.hh b/source/processes/management/include/G4VRestContinuousProcess.hh index a01e646698..6a69f6eca6 100644 --- a/source/processes/management/include/G4VRestContinuousProcess.hh +++ b/source/processes/management/include/G4VRestContinuousProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VRestContinuousProcess.hh,v 1.3.6.1 1999/12/08 17:35:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VRestContinuousProcess.hh,v 1.4 1999/12/15 14:53:42 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4VRestDiscreteProcess.hh b/source/processes/management/include/G4VRestDiscreteProcess.hh index 5a68fdb05e..b8d6f87371 100644 --- a/source/processes/management/include/G4VRestDiscreteProcess.hh +++ b/source/processes/management/include/G4VRestDiscreteProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VRestDiscreteProcess.hh,v 1.3.6.1 1999/12/08 17:35:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VRestDiscreteProcess.hh,v 1.4 1999/12/15 14:53:42 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4VRestProcess.hh b/source/processes/management/include/G4VRestProcess.hh index 8d426f56cd..86b906efe8 100644 --- a/source/processes/management/include/G4VRestProcess.hh +++ b/source/processes/management/include/G4VRestProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VRestProcess.hh,v 1.3.6.1 1999/12/08 17:35:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VRestProcess.hh,v 1.4 1999/12/15 14:53:42 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/src/G4IVContinuousDiscreteProcess.cc b/source/processes/management/src/G4IVContinuousDiscreteProcess.cc index e3a0ccd1ee..b3130fcd9a 100644 --- a/source/processes/management/src/G4IVContinuousDiscreteProcess.cc +++ b/source/processes/management/src/G4IVContinuousDiscreteProcess.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IVContinuousDiscreteProcess.cc,v 1.4.8.1 1999/12/07 20:52:47 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IVContinuousDiscreteProcess.cc,v 1.5 1999/12/15 14:53:42 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // -------------------------------------------------------------- diff --git a/source/processes/management/src/G4IVRestDiscreteProcess.cc b/source/processes/management/src/G4IVRestDiscreteProcess.cc index d2e7990f6b..4e4cc57225 100644 --- a/source/processes/management/src/G4IVRestDiscreteProcess.cc +++ b/source/processes/management/src/G4IVRestDiscreteProcess.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4IVRestDiscreteProcess.cc,v 1.4.8.1 1999/12/07 20:52:48 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4IVRestDiscreteProcess.cc,v 1.5 1999/12/15 14:53:42 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // $Id: // -------------------------------------------------------------- diff --git a/source/processes/management/src/G4ProcTblElement.cc b/source/processes/management/src/G4ProcTblElement.cc index 52e5431155..ac342e2d6d 100644 --- a/source/processes/management/src/G4ProcTblElement.cc +++ b/source/processes/management/src/G4ProcTblElement.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ProcTblElement.cc,v 1.2.8.1 1999/12/07 20:52:48 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ProcTblElement.cc,v 1.4 2000/03/02 01:16:06 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -17,7 +17,8 @@ // History: first implementation, based on object model of // 4th Aug 1998, H.Kurashige // ------------------------------------------------------------ - +// Use STL vector instead of RW vector 1. Mar 00 H.Kurashige +// #include "G4ProcTblElement.hh" @@ -41,8 +42,9 @@ G4ProcTblElement::G4ProcTblElement(const G4ProcTblElement &right) pProcess = right.pProcess; // copy all contents in pProcMgrVector pProcMgrVector = new G4ProcMgrVector(); - for (G4int idx=0; idxlength(); idx++){ - pProcMgrVector->insert((*(right.pProcMgrVector))[idx]); + G4ProcMgrVector::iterator i; + for (i = pProcMgrVector->begin(); i!= pProcMgrVector->end(); ++i) { + pProcMgrVector->push_back(*i); } } @@ -68,8 +70,9 @@ G4ProcTblElement & G4ProcTblElement::operator=(G4ProcTblElement &right) delete pProcMgrVector; } pProcMgrVector = new G4ProcMgrVector(); - for (G4int idx=0; idxlength(); idx++){ - pProcMgrVector->insert((*(right.pProcMgrVector))[idx]); + G4ProcMgrVector::iterator i; + for (i = pProcMgrVector->begin(); i!= pProcMgrVector->end(); ++i) { + pProcMgrVector->push_back(*i); } } return *this; diff --git a/source/processes/management/src/G4ProcessAttribute.cc b/source/processes/management/src/G4ProcessAttribute.cc index 238c15fbbf..9badf1428f 100644 --- a/source/processes/management/src/G4ProcessAttribute.cc +++ b/source/processes/management/src/G4ProcessAttribute.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ProcessAttribute.cc,v 1.2.8.1 1999/12/07 20:52:48 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ProcessAttribute.cc,v 1.3 1999/12/15 14:53:43 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/src/G4ProcessManager.cc b/source/processes/management/src/G4ProcessManager.cc index ebfba3a26e..7cd23d41c2 100644 --- a/source/processes/management/src/G4ProcessManager.cc +++ b/source/processes/management/src/G4ProcessManager.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ProcessManager.cc,v 1.10.4.1.2.5 1999/12/14 09:16:49 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ProcessManager.cc,v 1.15 2000/03/11 00:58:47 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- @@ -21,6 +21,7 @@ // remove sprintf 14 Nov 1997 H.Kurahige // fixed bugs in FindInsertPosition // 18 July 1998 H.Kurashige +// Use STL vector instead of RW vector 1. Mar 00 H.Kurashige // ------------------------------------------------------------ #include "G4ProcessManagerMessenger.hh" @@ -39,6 +40,7 @@ // --------------------------------- G4ProcessManagerMessenger* G4ProcessManager::fProcessManagerMessenger = 0; G4int G4ProcessManager::counterOfObjects = 0; + // /////////////////////////////////////// G4ProcessManager::G4ProcessManager(const G4ParticleDefinition* aParticleType): theParticleType(aParticleType), @@ -106,7 +108,7 @@ G4ProcessManager::G4ProcessManager(G4ProcessManager &right) G4ProcessAttribute* sAttr = (*right.theAttrVector)[idx]; G4ProcessAttribute* dAttr = new G4ProcessAttribute(*sAttr); // adds a G4ProcessAttribute object - theAttrVector->insert(dAttr); + theAttrVector->push_back(dAttr); numberOfProcesses +=1; } @@ -119,10 +121,14 @@ G4ProcessManager::G4ProcessManager(G4ProcessManager &right) G4String aErrorMessage("G4ProcessManager::G4ProcessManager():"); G4Exception((const char*)(aErrorMessage)); } + + G4ProcessTable* theProcessTable = G4ProcessTable::GetProcessTable(); G4ProcessVector* src = right.theProcVector[i]; for (G4int j=0; j< src->entries() ; j++){ // copy j-th process in i-th ProcessVector theProcVector[i]->insert((*src)[j]); + //add aProcess and this ProcessManager into ProcesssTable + theProcessTable->Insert((*src)[j], this); } } @@ -159,7 +165,11 @@ G4ProcessManager::~G4ProcessManager() theProcessList->clear(); delete theProcessList; - theAttrVector->clearAndDestroy(); + G4ProcessAttrVector::iterator itr; + for (itr = theAttrVector->begin(); itr!= theAttrVector->end(); ++itr) { + delete (*itr); + } + theAttrVector->clear(); delete theAttrVector; counterOfObjects-=1; @@ -253,9 +263,10 @@ G4ProcessAttribute* G4ProcessManager::GetAttribute(G4int index) const #endif // re-ordering attribute vector G4ProcessAttribute *pAttr = 0; - for (G4int i=0; ientries(); i++){ - if ( ((*theAttrVector)[i])->idxProcessList == index) { - pAttr = (*theAttrVector)[i]; + G4ProcessAttrVector::iterator itr; + for (itr = theAttrVector->begin(); itr!= theAttrVector->end(); ++itr) { + if ( (*itr)->idxProcessList == index) { + pAttr = (*itr); break; } } @@ -442,7 +453,7 @@ G4int G4ProcessManager::AddProcess( } //add ProcessAttribute to ProcessAttrVector - theAttrVector->insert(pAttr); + theAttrVector->push_back(pAttr); numberOfProcesses += 1; @@ -507,7 +518,13 @@ G4VProcess* G4ProcessManager::RemoveProcess(G4int index) } // remove from the process List and delete the attribute theProcessList->removeAt(index); - theAttrVector->remove(pAttr); + G4ProcessAttrVector::iterator itr; + for (itr = theAttrVector->begin(); itr!= theAttrVector->end(); ++itr) { + if ( (*itr) == pAttr) { + theAttrVector->erase(itr); + break; + } + } delete pAttr; numberOfProcesses -= 1; @@ -540,23 +557,12 @@ G4int G4ProcessManager::GetProcessOrdering( { // get Process Vector Id G4int ivec = GetProcessVectorId(idDoIt, typeDoIt); - if (ivec <0 ) { -#ifdef G4VERBOSE - if (verboseLevel>0) { - G4cout << "G4ProcessManager::SetProcessOrdering: "; - G4cout << " illegal DoIt Index [= " << idDoIt << "]"; - G4cout << G4endl; + if (ivec >=0 ) { + // get attribute + G4ProcessAttribute* pAttr = GetAttribute(aProcess); + if (pAttr != 0) { + return pAttr->ordProcVector[ivec]; } -#endif - return -1; - } - - // get attribute - G4ProcessAttribute* pAttr = GetAttribute(aProcess); - if (pAttr != 0) { - return pAttr->ordProcVector[ivec]; - } else { - return -1; } return -1; } @@ -775,16 +781,6 @@ G4VProcess* G4ProcessManager::InActivateProcess(G4int index) } } pAttr->isActive = false; - - } else { -#ifdef G4VERBOSE - if (GetVerboseLevel()>0) { - G4cout << aErrorMessage; - G4cout << "particle["<GetParticleName()<<"] " ; - G4cout << "process["<GetProcessName()<<"] " ; - G4cout << "The process is already inactive" << G4endl; - } -#endif } return pProcess; } @@ -818,14 +814,7 @@ G4VProcess* G4ProcessManager::ActivateProcess(G4int index) const G4String aErrorMessage(" G4ProcessManager::ActivateProcess():"); - if (pAttr->isActive) { -#ifdef G4VERBOSE - if (GetVerboseLevel()>0) { - G4cout << aErrorMessage << G4endl; - G4cout << "The process is already active" << G4endl; - } -#endif - } else { + if (!pAttr->isActive) { // remove process from vectors if the process is active for (G4int i=0; iGetProcessType() )<< "]"; // process attribute - G4ProcessAttribute* pAttr = (*theAttrVector)(idx); + G4ProcessAttribute* pAttr = (*theAttrVector)[idx]; // status if ( pAttr-> isActive ) { G4cout << " Active "; @@ -1019,7 +1008,7 @@ void G4ProcessManager::EndTracking() return false; } // process attribute - G4ProcessAttribute* pAttr = (*theAttrVector)(index); + G4ProcessAttribute* pAttr = (*theAttrVector)[index]; // status return pAttr-> isActive; } diff --git a/source/processes/management/src/G4ProcessManagerMessenger.cc b/source/processes/management/src/G4ProcessManagerMessenger.cc index 325ddd68bf..08f6b388ce 100644 --- a/source/processes/management/src/G4ProcessManagerMessenger.cc +++ b/source/processes/management/src/G4ProcessManagerMessenger.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ProcessManagerMessenger.cc,v 1.3.8.1.2.5 1999/12/14 09:16:50 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ProcessManagerMessenger.cc,v 1.4 1999/12/15 14:53:43 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/processes/management/src/G4ProcessTable.cc b/source/processes/management/src/G4ProcessTable.cc index 72bdf16295..c82e348bda 100644 --- a/source/processes/management/src/G4ProcessTable.cc +++ b/source/processes/management/src/G4ProcessTable.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ProcessTable.cc,v 1.3.8.1.2.1 1999/12/08 17:35:13 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ProcessTable.cc,v 1.5 2000/03/02 01:16:06 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -17,6 +17,9 @@ // History: first implementation, based on object model of // 4th Aug 1998, H.Kurashige // ------------------------------------------------------------ +// History: +// Use STL vector instead of RW vector 1. Mar 00 H.Kurashige +// #include "G4ProcessTableMessenger.hh" #include "G4ProcessTable.hh" @@ -54,19 +57,22 @@ G4ProcessTable::~G4ProcessTable() } #endif - // delete all processes - for (G4int idxTbl =0; idxTbl length(); idxTbl++){ - delete ((*fProcTblVector)(idxTbl))->GetProcess(); - } - if ( tmpTblVector != 0) { tmpTblVector ->clear(); delete tmpTblVector; } + if ( fProcTblVector != 0) { - fProcTblVector ->clearAndDestroy(); + G4ProcTableVector::iterator idx; + for (idx=fProcTblVector->begin(); idx!=fProcTblVector->end(); ++idx) { + // delete all processes + delete (*idx)->GetProcess(); + delete (*idx); + } + fProcTblVector ->clear(); delete fProcTblVector; } + if ( fProcNameVector != 0) { fProcNameVector ->clear(); delete fProcNameVector; @@ -151,37 +157,20 @@ G4int G4ProcessTable::Insert(G4VProcess* aProcess, } #endif - G4int idxTbl; + G4ProcTableVector::iterator itr; + G4int idxTbl=0; G4ProcTblElement* anElement; G4bool isFoundInTbl = false; // loop over all elements - for (idxTbl =0; idxTbl length(); idxTbl++){ - anElement = (*fProcTblVector)(idxTbl); - G4int idx; + for (itr=fProcTblVector->begin(); itr!=fProcTblVector->end(); ++itr, ++idxTbl) { + anElement = (*itr); // check if this process is included if (aProcess == anElement->GetProcess()) { isFoundInTbl = true; -#ifdef G4VERBOSE - if (verboseLevel>2){ - G4cout << " This Process has been already registered !! " << G4endl; - } -#endif - // - G4bool isFound = false; - // check if this process manager is included - for (idx=0; idxLength(); idx++){ - if ( aProcMgr == anElement->GetProcessManager(idx) ){ - isFound = true; -#ifdef G4VERBOSE - if (verboseLevel>1){ - G4cout << " This Process Manager has been already registered !! " << G4endl; - } -#endif - break; - } - } - // add the process manager into the element - if (!isFound) { + + // add the process manager into the element + // unless this process manager is included + if (!anElement->Contains(aProcMgr)) { anElement->Insert(aProcMgr); #ifdef G4VERBOSE if (verboseLevel>2){ @@ -192,20 +181,25 @@ G4int G4ProcessTable::Insert(G4VProcess* aProcess, break; } } - // add this process into the table + // add this process into the table by creating a new element if (!isFoundInTbl) { G4ProcTblElement* newElement = new G4ProcTblElement(aProcess); newElement->Insert(aProcMgr); - fProcTblVector->insert(newElement); + fProcTblVector->push_back(newElement); // add into name vector - if (!fProcNameVector->contains(aProcess->GetProcessName()) ){ - fProcNameVector->insert(aProcess->GetProcessName() ); + G4ProcNameVector::iterator ip; + G4bool isFound = false; + for (ip=fProcNameVector->begin(); ip!=fProcNameVector->end(); ++ip) { + isFound |= (aProcess->GetProcessName() == (*ip)); } + if (!isFound) { + fProcNameVector->push_back(aProcess->GetProcessName() ); #ifdef G4VERBOSE - if (verboseLevel>2){ - G4cout << " This Process is registered !! " << G4endl; - } + if (verboseLevel>2){ + G4cout << " This Process is registered !! " << G4endl; + } #endif + } } return idxTbl; } @@ -231,69 +225,66 @@ G4int G4ProcessTable::Remove( G4VProcess* aProcess, } #endif - G4int idxTbl; + G4ProcTableVector::iterator itr; + G4int idxTbl=0; G4ProcTblElement* anElement; - G4bool isFoundInTbl = false; G4bool isFound = false; // loop over all elements - for (idxTbl =0; idxTbl length(); idxTbl++){ - anElement = (*fProcTblVector)(idxTbl); + for (itr=fProcTblVector->begin(); itr!=fProcTblVector->end(); ++itr, ++idxTbl) { + anElement = (*itr); G4int idx; // check if this process is included if (aProcess == anElement->GetProcess()) { - isFoundInTbl = true; - - // check if this process manager is included - for (idx=0; idxLength(); idx++){ - if ( aProcMgr == anElement->GetProcessManager(idx) ){ - isFound = true; - break; - } - } - // add the process manager into the element - if (isFound) { - anElement->Remove(aProcMgr); + isFound = anElement->Contains(aProcMgr); + // remove the process manager from the element + anElement->Remove(aProcMgr); #ifdef G4VERBOSE - if (verboseLevel>2){ - G4cout << " This Process Manager is removed !! " << G4endl; - } -#endif + if (verboseLevel>2){ + G4cout << " This Process Manager is removed !! " << G4endl; } +#endif break; } } - if (isFound) { - if (anElement->Length() == 0){ - fProcTblVector->remove(anElement); - delete anElement; - // check other prcesses with same name exist or not - G4bool isSameName = false; - for (idxTbl =0; idxTbl length(); idxTbl++){ - anElement = (*fProcTblVector)(idxTbl); - if (anElement->GetProcessName() == aProcess->GetProcessName()) { - isSameName = true; + // + if (!isFound) { +#ifdef G4VERBOSE + if (verboseLevel>0){ + G4cout << " This Process Manager is not registered !! " << G4endl; + } +#endif + return -1; + } + // remove the element if it has no entry + if (anElement->Length() == 0){ + fProcTblVector->erase(itr); + delete anElement; + // check other prcesses with same name exist or not + G4bool isSameName = false; + for (itr=fProcTblVector->begin(); itr!=fProcTblVector->end(); ++itr) { + anElement = (*itr); + if (anElement->GetProcessName() == aProcess->GetProcessName()) { + isSameName = true; + break; + } + } + // remove from name vector + if (!isSameName ) { + G4ProcNameVector::iterator i; + for (i=fProcNameVector->begin(); i!=fProcNameVector->end(); ++i) { + if ( *i == aProcess->GetProcessName() ) { + fProcNameVector->erase(i); break; } } - // remove from name vector - if (!isSameName ) { - fProcNameVector->remove(aProcess->GetProcessName() ); - } -#ifdef G4VERBOSE - if (verboseLevel>1){ - G4cout << " This Process is removed !! " << G4endl; - } -#endif } - return idxTbl; - } else { #ifdef G4VERBOSE - if (verboseLevel>0){ - G4cout << " This Process is not registered !! " << G4endl; + if (verboseLevel>1){ + G4cout << " This Process is removed !! " << G4endl; } #endif } - return -1; + return idxTbl; } ////////////////////////// @@ -301,11 +292,12 @@ G4VProcess* G4ProcessTable::FindProcess(const G4String& processName, const G4ProcessManager* processManager) const { - G4int idxTblVec; + G4ProcTableVector::iterator itr; + G4int idxTbl = 0; G4bool isFound = false; G4ProcTblElement* anElement; - for ( idxTblVec = 0; idxTblVec < fProcTblVector->length(); idxTblVec++){ - anElement = (*fProcTblVector)(idxTblVec); + for (itr=fProcTblVector->begin(); itr!=fProcTblVector->end(); ++itr, ++idxTbl) { + anElement = (*itr); // check name if ( anElement->GetProcessName() == processName ) { // check if the processManage is included @@ -332,17 +324,17 @@ G4ProcessTable::G4ProcTableVector* G4ProcessTable::Find( G4ProcTableVector* procTblVector, const G4String& processName ) { - tmpTblVector-> clear(); + tmpTblVector->clear(); - G4int idxTblVec; + G4ProcTableVector::iterator itr; G4bool isFound = false; G4ProcTblElement* anElement; - for ( idxTblVec = 0; idxTblVec < procTblVector->length(); idxTblVec++){ - anElement = (*procTblVector)(idxTblVec); + for (itr=fProcTblVector->begin(); itr!=fProcTblVector->end(); ++itr) { + anElement = (*itr); // check name if ( anElement->GetProcessName() == processName ) { isFound = true; - tmpTblVector->insert(anElement); + tmpTblVector->push_back(anElement); } } @@ -363,15 +355,15 @@ G4ProcessTable::G4ProcTableVector* G4ProcessTable::Find( { tmpTblVector->clear(); - G4int idxTblVec; + G4ProcTableVector::iterator itr; G4bool isFound = false; G4ProcTblElement* anElement; - for ( idxTblVec = 0; idxTblVec < procTblVector->length(); idxTblVec++){ - anElement = (*procTblVector)(idxTblVec); + for (itr=fProcTblVector->begin(); itr!=fProcTblVector->end(); ++itr) { + anElement = (*itr); // check name if ( anElement->GetProcess()->GetProcessType() == processType ) { isFound = true; - tmpTblVector->insert(anElement); + tmpTblVector->push_back(anElement); } } @@ -390,9 +382,10 @@ G4ProcessTable::G4ProcTableVector* G4ProcessTable::Find( G4ProcessVector* G4ProcessTable::ExtractProcesses( G4ProcTableVector* procTblVector) { G4ProcessVector* procList = new G4ProcessVector(); - G4int idxTblVec; - for ( idxTblVec = 0; idxTblVec < procTblVector->length(); idxTblVec++){ - G4ProcTblElement* anElement = (*procTblVector)(idxTblVec); + G4ProcTableVector::iterator itr; + // loop over all elements + for (itr=procTblVector->begin(); itr!=procTblVector->end(); ++itr) { + G4ProcTblElement* anElement = (*itr); procList->insert( anElement->GetProcess() ); } return procList; @@ -437,10 +430,11 @@ void G4ProcessTable::SetProcessActivation( const G4String& processName, #endif G4ProcTableVector* pTblVector = Find(fProcTblVector, processName); - G4int idxTblVec; + G4ProcTableVector::iterator itr; G4ProcTblElement* anElement; - for ( idxTblVec = 0; idxTblVec < pTblVector->length(); idxTblVec++){ - anElement = (*pTblVector)(idxTblVec); + // loop over all elements + for (itr=pTblVector->begin(); itr!=pTblVector->end(); ++itr) { + anElement = (*itr); G4VProcess* process = anElement->GetProcess(); for (G4int idx = 0 ; idx < anElement->Length(); idx++) { G4ProcessManager* manager = anElement->GetProcessManager(idx); @@ -494,10 +488,11 @@ void G4ProcessTable::SetProcessActivation( G4ProcessType processType, #endif G4ProcTableVector* pTblVector = Find(fProcTblVector, processType); - G4int idxTblVec; + G4ProcTableVector::iterator itr; G4ProcTblElement* anElement; - for ( idxTblVec = 0; idxTblVec < pTblVector->length(); idxTblVec++){ - anElement = (*pTblVector)(idxTblVec); + // loop over all elements + for (itr=pTblVector->begin(); itr!=pTblVector->end(); ++itr) { + anElement = (*itr); G4VProcess* process = anElement->GetProcess(); #ifdef G4VERBOSE if (verboseLevel>1){ @@ -551,19 +546,17 @@ void G4ProcessTable::SetProcessActivation( void G4ProcessTable::DumpInfo(G4VProcess* process, G4ParticleDefinition* particle) { - G4int idxTbl; + G4ProcTableVector::iterator itr; + G4int idxTbl=0; G4ProcTblElement* anElement; G4bool isFoundInTbl = false; G4ProcessManager* manager; G4int idx; // loop over all elements - for (idxTbl =0; idxTbl length(); idxTbl++){ - anElement = (*fProcTblVector)(idxTbl); + for (itr=fProcTblVector->begin(); itr!=fProcTblVector->end(); ++itr, ++idxTbl) { + anElement = (*itr); if (process == anElement->GetProcess() ){ - if (particle==0) { - isFoundInTbl = true; - break; - } else { + if (particle!=0) { for (idx=0; idxLength(); idx++){ manager = anElement->GetProcessManager(idx); if (particle == manager->GetParticleType()) { @@ -571,7 +564,10 @@ void G4ProcessTable::DumpInfo(G4VProcess* process, break; } } + } else { + isFoundInTbl = true; } + break; } } if (!isFoundInTbl ) return; diff --git a/source/processes/management/src/G4ProcessTableMessenger.cc b/source/processes/management/src/G4ProcessTableMessenger.cc index 032e544a06..87151bdd9a 100644 --- a/source/processes/management/src/G4ProcessTableMessenger.cc +++ b/source/processes/management/src/G4ProcessTableMessenger.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ProcessTableMessenger.cc,v 1.3.6.1.2.1.2.5 1999/12/14 09:16:50 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ProcessTableMessenger.cc,v 1.7 2000/03/02 01:16:06 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -20,6 +20,8 @@ // // History: // 15 Aug. 1998, H. Kurashige +// Use STL vector instead of RW vector 1. Mar 00 H.Kurashige +// //--------------------------------------------------------------- #include "G4ProcessTableMessenger.hh" @@ -161,12 +163,14 @@ void G4ProcessTableMessenger::SetNewValue(G4UIcommand * command,G4String newValu } } G4int counter = 0; - for (idx = 0; idx < procNameVector->length(); idx++) { - G4String name = (*procNameVector)(idx); - tmpVector = theProcessTable->FindProcesses(name); + idx =0; + G4ProcessTable::G4ProcNameVector::iterator itr; + for (itr=procNameVector->begin(); itr!=procNameVector->end(); ++itr) { + idx +=1; + tmpVector = theProcessTable->FindProcesses(*itr); if ( (type <0) || ( ((*tmpVector)(0)->GetProcessType()) == type) ) { if ( counter%4 != 0) G4cout << ","; - G4cout << G4std::setw(19) << name; + G4cout << G4std::setw(19) <<*itr; if ((counter++)%4 == 3) { G4cout << G4endl; } @@ -188,10 +192,15 @@ void G4ProcessTableMessenger::SetNewValue(G4UIcommand * command,G4String newValu currentProcessName = G4String(next()); G4bool isNameFound = false; G4bool isProcName = false; - if ( procNameVector->contains(currentProcessName) ){ - isNameFound = true; - isProcName = true; - } else { + G4ProcessTable::G4ProcNameVector::iterator itr; + for (itr=procNameVector->begin(); itr!=procNameVector->end(); ++itr) { + if ( (*itr) == currentProcessName ) { + isNameFound = true; + isProcName = true; + break; + } + } + if (!isProcName) { type = GetProcessType(currentProcessName); if (type >=0) { isNameFound = true; @@ -301,8 +310,9 @@ G4String G4ProcessTableMessenger::GetCurrentValue(G4UIcommand * command) // process name param = command->GetParameter(0); candidates = ""; - for (idx = 0; idx < procNameVector->length() ; idx ++ ) { - candidates += " " + (*procNameVector)(idx); + G4ProcessTable::G4ProcNameVector::iterator itr; + for (itr=procNameVector->begin(); itr!=procNameVector->end(); ++itr) { + candidates += " " + (*itr); } param->SetParameterCandidates((const char*)(candidates)); // particle name diff --git a/source/processes/management/src/G4VContinuousDiscreteProcess.cc b/source/processes/management/src/G4VContinuousDiscreteProcess.cc index fb23309949..2f76428170 100644 --- a/source/processes/management/src/G4VContinuousDiscreteProcess.cc +++ b/source/processes/management/src/G4VContinuousDiscreteProcess.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VContinuousDiscreteProcess.cc,v 1.1.10.1 1999/12/07 20:52:50 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VContinuousDiscreteProcess.cc,v 1.2 1999/12/15 14:53:43 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/processes/management/src/G4VContinuousProcess.cc b/source/processes/management/src/G4VContinuousProcess.cc index 07503c9df6..f514bf85de 100644 --- a/source/processes/management/src/G4VContinuousProcess.cc +++ b/source/processes/management/src/G4VContinuousProcess.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VContinuousProcess.cc,v 1.1.10.1 1999/12/07 20:52:50 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VContinuousProcess.cc,v 1.2 1999/12/15 14:53:43 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/processes/management/src/G4VDiscreteProcess.cc b/source/processes/management/src/G4VDiscreteProcess.cc index 40cf5c20e3..ccb4d1c778 100644 --- a/source/processes/management/src/G4VDiscreteProcess.cc +++ b/source/processes/management/src/G4VDiscreteProcess.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VDiscreteProcess.cc,v 1.1.10.1 1999/12/07 20:52:50 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VDiscreteProcess.cc,v 1.2 1999/12/15 14:53:44 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/processes/management/src/G4VProcess.cc b/source/processes/management/src/G4VProcess.cc index 9dafa449ed..b9bd502587 100644 --- a/source/processes/management/src/G4VProcess.cc +++ b/source/processes/management/src/G4VProcess.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VProcess.cc,v 1.3.8.1.2.1 1999/12/08 17:35:13 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VProcess.cc,v 1.4 1999/12/15 14:53:44 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/processes/management/src/G4VRestContinuousDiscreteProcess.cc b/source/processes/management/src/G4VRestContinuousDiscreteProcess.cc index 2465c1e1c5..1ac64fa86c 100644 --- a/source/processes/management/src/G4VRestContinuousDiscreteProcess.cc +++ b/source/processes/management/src/G4VRestContinuousDiscreteProcess.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VRestContinuousDiscreteProcess.cc,v 1.1.10.1 1999/12/07 20:52:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VRestContinuousDiscreteProcess.cc,v 1.2 1999/12/15 14:53:44 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/processes/management/src/G4VRestContinuousProcess.cc b/source/processes/management/src/G4VRestContinuousProcess.cc index f36bff5c26..fd596fb717 100644 --- a/source/processes/management/src/G4VRestContinuousProcess.cc +++ b/source/processes/management/src/G4VRestContinuousProcess.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VRestContinuousProcess.cc,v 1.1.10.1 1999/12/07 20:52:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VRestContinuousProcess.cc,v 1.2 1999/12/15 14:53:44 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/processes/management/src/G4VRestDiscreteProcess.cc b/source/processes/management/src/G4VRestDiscreteProcess.cc index 893b9e25c8..2d424e0706 100644 --- a/source/processes/management/src/G4VRestDiscreteProcess.cc +++ b/source/processes/management/src/G4VRestDiscreteProcess.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VRestDiscreteProcess.cc,v 1.1.10.1 1999/12/07 20:52:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VRestDiscreteProcess.cc,v 1.2 1999/12/15 14:53:44 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/processes/management/src/G4VRestProcess.cc b/source/processes/management/src/G4VRestProcess.cc index 73b200cb39..943a44b4de 100644 --- a/source/processes/management/src/G4VRestProcess.cc +++ b/source/processes/management/src/G4VRestProcess.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VRestProcess.cc,v 1.1.10.1 1999/12/07 20:52:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VRestProcess.cc,v 1.2 1999/12/15 14:53:44 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/processes/optical/include/G4OpAbsorption.hh b/source/processes/optical/include/G4OpAbsorption.hh index feba6710fd..f572b81c82 100644 --- a/source/processes/optical/include/G4OpAbsorption.hh +++ b/source/processes/optical/include/G4OpAbsorption.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpAbsorption.hh,v 1.4.4.1 1999/12/07 20:52:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // //////////////////////////////////////////////////////////////////////// // Optical Photon Absorption Class Definition diff --git a/source/processes/optical/include/G4OpBoundaryProcess.hh b/source/processes/optical/include/G4OpBoundaryProcess.hh index 2c37d6120e..08d587db25 100644 --- a/source/processes/optical/include/G4OpBoundaryProcess.hh +++ b/source/processes/optical/include/G4OpBoundaryProcess.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpBoundaryProcess.hh,v 1.4.4.1 1999/12/07 20:52:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //////////////////////////////////////////////////////////////////////// diff --git a/source/processes/optical/include/G4OpRayleigh.hh b/source/processes/optical/include/G4OpRayleigh.hh index 18fb9d799b..53a0b097da 100644 --- a/source/processes/optical/include/G4OpRayleigh.hh +++ b/source/processes/optical/include/G4OpRayleigh.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpRayleigh.hh,v 1.3.4.1 1999/12/07 20:52:51 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //////////////////////////////////////////////////////////////////////// diff --git a/source/processes/optical/src/G4OpAbsorption.cc b/source/processes/optical/src/G4OpAbsorption.cc index 82fff679fa..0bdf77dfca 100644 --- a/source/processes/optical/src/G4OpAbsorption.cc +++ b/source/processes/optical/src/G4OpAbsorption.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpAbsorption.cc,v 1.1.10.1.2.1 1999/12/08 17:35:13 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // //////////////////////////////////////////////////////////////////////// // Optical Photon Absorption Class Implementation diff --git a/source/processes/optical/src/G4OpRayleigh.cc b/source/processes/optical/src/G4OpRayleigh.cc index 7689869d48..497c3a29bf 100644 --- a/source/processes/optical/src/G4OpRayleigh.cc +++ b/source/processes/optical/src/G4OpRayleigh.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpRayleigh.cc,v 1.1.10.1.2.1 1999/12/08 17:35:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //////////////////////////////////////////////////////////////////////// diff --git a/source/processes/parameterisation/GNUmakefile b/source/processes/parameterisation/GNUmakefile index 983a048470..ec9f8f2e54 100644 --- a/source/processes/parameterisation/GNUmakefile +++ b/source/processes/parameterisation/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.1 1999/01/07 16:14:02 gunter Exp $ +# $Id: GNUmakefile,v 1.2 2000/05/16 13:40:30 grichine Exp $ # ------------------------------------------------------------ # GNUmakefile for transportation library. G.Folger 10-Dec-97. # ------------------------------------------------------------ @@ -14,6 +14,7 @@ include $(G4INSTALL)/config/architecture.gmk CPPFLAGS += -I$(G4BASE)/global/management/include \ -I$(G4BASE)/global/HEPRandom/include \ -I$(G4BASE)/global/HEPGeometry/include \ + -I$(G4BASE)/global/HEPNumerics/include \ -I$(G4BASE)/geometry/management/include \ -I$(G4BASE)/geometry/volumes/include \ -I$(G4BASE)/geometry/magneticfield/include \ @@ -22,6 +23,7 @@ CPPFLAGS += -I$(G4BASE)/global/management/include \ -I$(G4BASE)/track/include \ -I$(G4BASE)/processes/management/include \ -I$(G4BASE)/particles/management/include \ + -I$(G4BASE)/particles/bosons/include \ -I$(G4BASE)/materials/include \ include $(G4INSTALL)/config/common.gmk diff --git a/source/processes/parameterisation/History b/source/processes/parameterisation/History index 363ec38ecd..d5c219a941 100644 --- a/source/processes/parameterisation/History +++ b/source/processes/parameterisation/History @@ -1,4 +1,4 @@ -$Id: History,v 1.5.4.1 1999/11/11 14:31:32 gunter Exp $ +$Id: History,v 1.9 2000/06/15 17:38:13 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,24 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +Jun 15, 2000 G. Cosmo - param-V01-01-04 +- The tag coworks with global-V01-01-04 and materials-V01-01-00: + o Fixed usage of G4complex type for ISO and non-ISO compilers. + Affected files: G4FoamXrayTRmodel.cc, G4GamDistrXrayTRmodel.cc, G4PlateIrrGasXrayTRmodel.cc + and G4RegularXrayTRmodel.cc. + In case of G4complex types passed to mathematical functions, use G4std:: prefix. + o Fixed usage of G4Integrator class, now changed to templated to allow porting of the + code on SUN-CC compiler which does not implement templated member functions. + Affected files: G4VXrayTRmodel[.hh.cc] + +Jun 6, 2000 M. Verderi & P. Mora de Freitas +- fixed compilation errors with HP-aCC for the files G4RegularXrayTRmodel.cc, + G4GamDistrXrayTRmodel.cc and G4FoamXrayTRmodel.cc. + +May 30, 2000 M. Verderi & P. Mora de Freitas + +- parameterisation category is now RW free. + September 16, 1999 M. Verderi & P. Mora de Freitas - Fixed bug in G4FastStep::CheckIt() method. diff --git a/source/processes/parameterisation/include/G4FastSimulationManager.hh b/source/processes/parameterisation/include/G4FastSimulationManager.hh index c60fd42f17..404233bb93 100644 --- a/source/processes/parameterisation/include/G4FastSimulationManager.hh +++ b/source/processes/parameterisation/include/G4FastSimulationManager.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4FastSimulationManager.hh,v 1.3.2.1.2.1 1999/12/07 20:52:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4FastSimulationManager.hh,v 1.6 2000/05/30 08:30:31 mora Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -25,9 +25,8 @@ #ifndef G4FastSimulationManager_h #define G4FastSimulationManager_h 1 -#include "g4rw/tpordvec.h" - #include "globals.hh" + #include "G4LogicalVolume.hh" #include "G4VPhysicalVolume.hh" #include "G4ParticleTable.hh" @@ -39,6 +38,7 @@ #include "G4RotationMatrix.hh" #include "G4ThreeVector.hh" #include "G4Transform3D.hh" +#include "G4FastSimulationVector.hh" #include "G4ios.hh" @@ -155,7 +155,7 @@ public: // without description const G4Navigator* a = 0); G4VParticleChange* InvokeAtRestDoIt(); - // For RW management + // For management G4bool operator == ( const G4FastSimulationManager&) const; private: @@ -163,18 +163,18 @@ private: G4FastTrack fFastTrack; G4FastStep fFastStep; G4VFastSimulationModel* fTriggedFastSimulationModel; - G4RWTPtrOrderedVector ModelList; - G4RWTPtrOrderedVector fInactivatedModels; - G4RWTPtrOrderedVector GhostPlacements; + G4FastSimulationVector ModelList; + G4FastSimulationVector fInactivatedModels; + G4FastSimulationVector GhostPlacements; G4ParticleDefinition* fLastCrossedParticle; - G4RWTPtrOrderedVector fApplicableModelList; + G4FastSimulationVector fApplicableModelList; }; inline void G4FastSimulationManager::AddFastSimulationModel(G4VFastSimulationModel* fsm) { - ModelList.insert(fsm); + ModelList.push_back(fsm); // forces the fApplicableModelList to be rebuild fLastCrossedParticle = 0; } diff --git a/source/processes/parameterisation/include/G4FastSimulationManagerProcess.hh b/source/processes/parameterisation/include/G4FastSimulationManagerProcess.hh index 6437abc302..4b85b2419a 100644 --- a/source/processes/parameterisation/include/G4FastSimulationManagerProcess.hh +++ b/source/processes/parameterisation/include/G4FastSimulationManagerProcess.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4FastSimulationManagerProcess.hh,v 1.4.2.1.2.1 1999/12/07 20:52:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4FastSimulationManagerProcess.hh,v 1.7 2000/05/30 08:30:32 mora Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -30,8 +30,6 @@ #ifndef G4FastSimulationManagerProcess_h #define G4FastSimulationManagerProcess_h 1 -#include "g4rw/tpordvec.h" - #include "globals.hh" #include "G4VProcess.hh" #include "G4FastSimulationManager.hh" diff --git a/source/processes/parameterisation/include/G4FastSimulationMessenger.hh b/source/processes/parameterisation/include/G4FastSimulationMessenger.hh index 00c8e3637f..7e916eddc5 100644 --- a/source/processes/parameterisation/include/G4FastSimulationMessenger.hh +++ b/source/processes/parameterisation/include/G4FastSimulationMessenger.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4FastSimulationMessenger.hh,v 1.2.8.1 1999/12/07 20:52:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4FastSimulationMessenger.hh,v 1.3 1999/12/15 14:53:45 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // GEANT 4 class header file diff --git a/source/processes/parameterisation/include/G4FastSimulationVector.hh b/source/processes/parameterisation/include/G4FastSimulationVector.hh new file mode 100644 index 0000000000..e381d2436d --- /dev/null +++ b/source/processes/parameterisation/include/G4FastSimulationVector.hh @@ -0,0 +1,49 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: +// GEANT4 tag $Name: +// +// +//--------------------------------------------------------------- +// +// G4FastSimulationVector.hh +// +// Description: +// Extends the STL vector to replace RW. +// +// History: +// May 00: Verderi && MoraDeFreitas - First Implementation. +// +//--------------------------------------------------------------- + +#ifndef G4FastSimulationVector_h +#define G4FastSimulationVector_h 1 + +#include "g4std/vector" + +template +class G4FastSimulationVector : public G4std::vector +{ + typedef G4std::vector std_pvector; + typedef typename std_pvector::iterator iterator; + typedef typename std_pvector::const_iterator const_iterator; + +public: + + G4FastSimulationVector(){}; + // G4FastSimulationVector(const G4FastSimulationVector&){}; + + virtual ~G4FastSimulationVector(){}; + T* remove (const T*); + T* removeAt (G4int); + void clearAndDestroy (); +}; + +#include "G4FastSimulationVector.icc" + +#endif diff --git a/source/processes/parameterisation/include/G4FastSimulationVector.icc b/source/processes/parameterisation/include/G4FastSimulationVector.icc new file mode 100644 index 0000000000..3a2e30f61c --- /dev/null +++ b/source/processes/parameterisation/include/G4FastSimulationVector.icc @@ -0,0 +1,61 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: +// GEANT4 tag $Name: +// +// +//--------------------------------------------------------------- +// +// G4FastSimulationVector.hh +// +// Description: +// Extends the STL vector to replace RW. +// +// History: +// May 00: Verderi && MoraDeFreitas - First Implementation. +// +//--------------------------------------------------------------- + +template +T* G4FastSimulationVector::remove (const T* a) +{ + for (iterator it = std_pvector::begin();it +T* G4FastSimulationVector::removeAt (G4int i) +{ + iterator it=std_pvector::begin(); + int j; + for(j=0;j +void G4FastSimulationVector::clearAndDestroy () +{ + for (iterator it = std_pvector::begin();it)^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: +// 11.02.00 V. Grichine, first version +// + + +#ifndef G4GamDistrXrayTRmodel_h +#define G4GamDistrXrayTRmodel_h 1 + +#include "G4VFastSimulationModel.hh" +// #include "G4ForwardXrayTR.hh" + +#include "G4VXrayTRmodel.hh" + +class G4GamDistrXrayTRmodel : public G4VXrayTRmodel +{ +public: + + G4GamDistrXrayTRmodel (G4LogicalVolume *anEnvelope, + G4double,G4double, + G4double,G4double ); + ~G4GamDistrXrayTRmodel (); + + // Pure virtual function from base class + + G4double GetStackFactor( G4double energy, G4double gamma, G4double varAngle); + +private: + + G4double fAlphaPlate, fAlphaGas ; +}; + +#endif diff --git a/source/processes/parameterisation/include/G4GlobalFastSimulationManager.hh b/source/processes/parameterisation/include/G4GlobalFastSimulationManager.hh index 4dc697f15b..63f5270e75 100644 --- a/source/processes/parameterisation/include/G4GlobalFastSimulationManager.hh +++ b/source/processes/parameterisation/include/G4GlobalFastSimulationManager.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4GlobalFastSimulationManager.hh,v 1.4.2.1.2.1 1999/12/07 20:52:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4GlobalFastSimulationManager.hh,v 1.7 2000/05/30 08:30:35 mora Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -29,7 +29,8 @@ #ifndef G4GlobalFastSimulationManager_hh #define G4GlobalFastSimulationManager_hh -#include "g4rw/tpordvec.h" +#include "globals.hh" +#include "G4FastSimulationVector.hh" #include "G4VGlobalFastSimulationManager.hh" #include "G4FastSimulationManager.hh" @@ -121,14 +122,14 @@ private: G4FastSimulationMessenger* fTheFastSimulationMessenger; // List of G4FastSimulationManagers - G4RWTPtrOrderedVector ManagedManagers; + G4FastSimulationVector ManagedManagers; // fClosed flags if the NeededFlavoredWorlds List was Build. G4bool fClosed; // List of needed ParallelWorlds after close - G4RWTPtrOrderedVector NeededFlavoredWorlds; - + G4FastSimulationVector NeededFlavoredWorlds; + // Internal fonction to Build world volume clones. G4VPhysicalVolume* GiveMeAWorldVolumeClone(); }; diff --git a/source/processes/parameterisation/include/G4IrregularXrayTRmodel.hh b/source/processes/parameterisation/include/G4IrregularXrayTRmodel.hh new file mode 100644 index 0000000000..f30af65cb4 --- /dev/null +++ b/source/processes/parameterisation/include/G4IrregularXrayTRmodel.hh @@ -0,0 +1,49 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4IrregularXrayTRmodel.hh,v 1.1 2000/05/16 13:45:44 grichine Exp $ +// GEANT4 tag $Name: geant4-02-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: +// 23.01.00 V. Grichine first version based on ExN05PiModel class +// 08.02.00 V. Grichine, DoIt was placed in base class +// + + +#ifndef G4IrregularXrayTRmodel_h +#define G4IrregularXrayTRmodel_h 1 + +#include "G4VFastSimulationModel.hh" +// #include "G4ForwardXrayTR.hh" + +#include "G4VXrayTRmodel.hh" + +class G4IrregularXrayTRmodel : public G4VXrayTRmodel +{ +public: + + G4IrregularXrayTRmodel (G4LogicalVolume *anEnvelope,G4double,G4double); + ~G4IrregularXrayTRmodel (); + + // Pure virtual function from base class + + // void DoIt(const G4FastTrack&, G4FastStep&); + G4double GetStackFactor( G4double energy, G4double gamma, G4double varAngle); +}; + +#endif diff --git a/source/processes/parameterisation/include/G4PlateIrrGasXrayTRmodel.hh b/source/processes/parameterisation/include/G4PlateIrrGasXrayTRmodel.hh new file mode 100644 index 0000000000..467b15b8e9 --- /dev/null +++ b/source/processes/parameterisation/include/G4PlateIrrGasXrayTRmodel.hh @@ -0,0 +1,47 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4PlateIrrGasXrayTRmodel.hh,v 1.1 2000/05/16 13:46:04 grichine Exp $ +// GEANT4 tag $Name: geant4-02-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: +// 10.02.00 V. Grichine, first version +// + + +#ifndef G4PlateIrrGasXrayTRmodel_h +#define G4PlateIrrGasXrayTRmodel_h 1 + +#include "G4VFastSimulationModel.hh" +// #include "G4ForwardXrayTR.hh" + +#include "G4VXrayTRmodel.hh" + +class G4PlateIrrGasXrayTRmodel : public G4VXrayTRmodel +{ +public: + + G4PlateIrrGasXrayTRmodel (G4LogicalVolume *anEnvelope,G4double,G4double); + ~G4PlateIrrGasXrayTRmodel (); + + // Pure virtual function from base class + + G4double GetStackFactor( G4double energy, G4double gamma, G4double varAngle); +}; + +#endif diff --git a/source/processes/parameterisation/include/G4RegularXrayTRmodel.hh b/source/processes/parameterisation/include/G4RegularXrayTRmodel.hh new file mode 100644 index 0000000000..77dea22f52 --- /dev/null +++ b/source/processes/parameterisation/include/G4RegularXrayTRmodel.hh @@ -0,0 +1,47 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RegularXrayTRmodel.hh,v 1.1 2000/05/16 13:46:16 grichine Exp $ +// GEANT4 tag $Name: geant4-02-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: +// 10.02.00 V. Grichine, first version +// + + +#ifndef G4RegularXrayTRmodel_h +#define G4RegularXrayTRmodel_h 1 + +#include "G4VFastSimulationModel.hh" +// #include "G4ForwardXrayTR.hh" + +#include "G4VXrayTRmodel.hh" + +class G4RegularXrayTRmodel : public G4VXrayTRmodel +{ +public: + + G4RegularXrayTRmodel (G4LogicalVolume *anEnvelope,G4double,G4double); + ~G4RegularXrayTRmodel (); + + // Pure virtual function from base class + + G4double GetStackFactor( G4double energy, G4double gamma, G4double varAngle); +}; + +#endif diff --git a/source/processes/parameterisation/include/G4VFastSimulationModel.hh b/source/processes/parameterisation/include/G4VFastSimulationModel.hh index 859a3aadfe..f4e4cfe559 100644 --- a/source/processes/parameterisation/include/G4VFastSimulationModel.hh +++ b/source/processes/parameterisation/include/G4VFastSimulationModel.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VFastSimulationModel.hh,v 1.2.4.1 1999/12/07 20:52:52 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VFastSimulationModel.hh,v 1.3 1999/12/15 14:53:45 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/processes/parameterisation/include/G4VXrayTRmodel.hh b/source/processes/parameterisation/include/G4VXrayTRmodel.hh new file mode 100644 index 0000000000..fe17532f8e --- /dev/null +++ b/source/processes/parameterisation/include/G4VXrayTRmodel.hh @@ -0,0 +1,144 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4VXrayTRmodel.hh,v 1.2 2000/06/15 17:38:33 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +/////////////////////////////////////////////////////////////////////////// +// +// base class for 'fast' parametrisation model describing X-ray transition +// created in some G4Envelope. Anglur distribuiton is very rough !!! (see DoIt +// method +// +// History: +// 23.01.00 V. Grichine first version +// 09.02.00 V. Grichine, DoIt was transformed from virtual +// + + +#ifndef G4VXrayTRmodel_h +#define G4VXrayTRmodel_h 1 + + +#include "globals.hh" +#include "templates.hh" +#include "G4PhysicsTable.hh" +#include "G4PhysicsLogVector.hh" +#include "G4Gamma.hh" + +#include "G4VFastSimulationModel.hh" +// #include "G4ForwardXrayTR.hh" + +class G4VXrayTRmodel : public G4VFastSimulationModel +// , public G4ForwardXrayTR +{ +public: + + G4VXrayTRmodel (G4LogicalVolume *anEnvelope,G4double,G4double); + virtual ~G4VXrayTRmodel (); + + // Pure virtual functions from base class + + G4bool IsApplicable(const G4ParticleDefinition&); + + G4bool ModelTrigger(const G4FastTrack &); + + // Pure virtuals must be implemented in inherited particular TR radiators + + void DoIt(const G4FastTrack&, G4FastStep&) ; + + virtual G4double GetStackFactor( G4double energy, G4double gamma, + G4double varAngle ) = 0 ; + + G4double OneBoundaryXTRNdensity( G4double energy, + G4double gamma, + G4double varAngle ) const ; + + void BuildTable() ; + void BuildEnergyTable() ; + void BuildAngleTable() ; + + // for photon energy distribution tables + + G4double XTRNSpectralAngleDensity(G4double varAngle) ; + G4double XTRNSpectralDensity(G4double energy) ; + + // for photon angle distribution tables + + G4double XTRNAngleSpectralDensity(G4double energy) ; + G4double XTRNAngleDensity(G4double varAngle) ; + + void GetNumberOfPhotons() ; + + void ExampleDoIt(const G4FastTrack&, G4FastStep&) ; + + // 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 GetGasFormationZone(G4double,G4double,G4double) ; + void ComputeGasPhotoAbsCof() ; + G4double GetGasLinearPhotoAbs(G4double) ; + void GetGasZmuProduct() ; + G4double GetGasZmuProduct(G4double,G4double,G4double) ; + + +protected: + + G4Gamma* fPtrGamma ; // pointer to TR photon + + G4double* fGammaCutInKineticEnergy ; // TR photon cut in energy array + G4double fGammaTkinCut ; // Tkin cut of TR photon in current mat. + + G4PhysicsTable* fAngleDistrTable ; + G4PhysicsTable* fEnergyDistrTable ; + + static G4PhysicsLogVector* fProtonEnergyVector ; + + + static G4double fTheMinEnergyTR ; // static min TR energy + static G4double fTheMaxEnergyTR ; // static max TR energy + G4double fMinEnergyTR ; // min TR energy in material + G4double fMaxEnergyTR ; // max TR energy in material + static G4double fTheMaxAngle ; // max theta of TR quanta + static G4double fTheMinAngle ; // max theta of TR quanta + G4double fMaxThetaTR ; // max theta of TR quanta + static G4int fBinTR ; // number of bins in TR vectors + + static G4double fMinProtonTkin ; // min Tkin of proton in tables + static G4double fMaxProtonTkin ; // max Tkin of proton in tables + static G4int fTotBin ; // number of bins in log scale + G4double fGamma ; // current Lorentz factor + G4double fEnergy ; // energy and + G4double fVarAngle ; // angle squared + + static G4double fPlasmaCof ; // physical consts for plasma energy + static G4double fCofTR ; + + G4double fSigma1, fSigma2 ; // plasma energy Sq of matter1/2 + + G4int fMatIndex1, fMatIndex2 ; + + G4int fPlateNumber ; + + G4double** fPlatePhotoAbsCof ; + G4int fPlateIntervalNumber ; + G4double fPlateThick ; + + G4double** fGasPhotoAbsCof ; + G4int fGasIntervalNumber ; + G4double fGasThick ; + + +}; + +#endif diff --git a/source/processes/parameterisation/src/G4FastSimulationManager.cc b/source/processes/parameterisation/src/G4FastSimulationManager.cc index f609191106..4c7f10267b 100644 --- a/source/processes/parameterisation/src/G4FastSimulationManager.cc +++ b/source/processes/parameterisation/src/G4FastSimulationManager.cc @@ -5,10 +5,9 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4FastSimulationManager.cc,v 1.2.8.1.2.1 1999/12/08 17:35:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4FastSimulationManager.cc,v 1.4 2000/05/30 08:30:35 mora Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -//$Id: //--------------------------------------------------------------- // // G4FastSimulationManager.cc @@ -70,16 +69,16 @@ G4FastSimulationManager::ActivateFastSimulationModel(const G4String& aName) G4int iModel; // If the model is already active, do nothing. - for (iModel=0; iModelGetName() == aName) + for (iModel=0; iModelGetName() == aName) return true; - // Look for in the fInactivatedModels list, if found insert it back to + // Look for in the fInactivatedModels list, if found push_back it back to // the ModelList - for (iModel=0; iModelGetName() == aName) { + for (iModel=0; iModelGetName() == aName) { ModelList. - insert(fInactivatedModels.removeAt(iModel)); + push_back (fInactivatedModels.removeAt(iModel)); // forces the fApplicableModelList to be rebuild fLastCrossedParticle=0; return true; @@ -92,10 +91,10 @@ G4FastSimulationManager::InActivateFastSimulationModel(const G4String& aName) { // Look for in the ModelList, if found remove from it and keep the pointer // on the fInactivatedModels list. - for (G4int iModel=0; iModelGetName() == aName) { + for (G4int iModel=0; iModelGetName() == aName) { fInactivatedModels. - insert(ModelList.removeAt(iModel)); + push_back (ModelList.removeAt(iModel)); // forces the fApplicableModelList to be rebuild fLastCrossedParticle=0; return true; @@ -121,7 +120,7 @@ G4FastSimulationManager::AddGhostPlacement(G4RotationMatrix *prot, G4Transform3D* G4FastSimulationManager::AddGhostPlacement(G4Transform3D *trans3d) { - GhostPlacements.insert(trans3d); + GhostPlacements.push_back (trans3d); G4GlobalFastSimulationManager::GetGlobalFastSimulationManager()-> FastSimulationNeedsToBeClosed(); return trans3d; @@ -173,14 +172,14 @@ PostStepGetFastSimulationManagerTrigger(const G4Track& track, fLastCrossedParticle=track.GetDefinition(); fApplicableModelList.clear(); // If Model List is empty, do nothing ! - if(ModelList.length()==0) return false; - for (iModel=0; iModelIsApplicable(*(track.GetDefinition()))) - fApplicableModelList.insert(ModelList(iModel)); + if(ModelList.size()==0) return false; + for (iModel=0; iModelIsApplicable(*(track.GetDefinition()))) + fApplicableModelList.push_back (ModelList[iModel]); } // If Applicable Model List is empty, do nothing ! - if(fApplicableModelList.length()==0) return false; + if(fApplicableModelList.size()==0) return false; // -- Register current track fFastTrack.SetCurrentTrack(track,theNavigator); @@ -190,13 +189,13 @@ PostStepGetFastSimulationManagerTrigger(const G4Track& track, if(fFastTrack.OnTheBoundaryButExiting()) return false; // Loops on the ModelTrigger() methods - for (iModel=0; iModelModelTrigger(fFastTrack)) { + if(fApplicableModelList[iModel]->ModelTrigger(fFastTrack)) { //-------------------------------------------------- // The model will be applied. Initializes the G4FastStep // with the current state of the G4Track and @@ -207,7 +206,7 @@ PostStepGetFastSimulationManagerTrigger(const G4Track& track, // Keeps the FastSimulationModel pointer to call the // DoIt() method. - fTriggedFastSimulationModel=fApplicableModelList(iModel); + fTriggedFastSimulationModel=fApplicableModelList[iModel]; return true; } @@ -238,14 +237,14 @@ G4FastSimulationManager::AtRestGetFastSimulationManagerTrigger(const G4Track& tr fLastCrossedParticle=track.GetDefinition(); fApplicableModelList.clear(); // If Model List is empty, do nothing ! - if(ModelList.length()==0) return false; - for (iModel=0; iModelIsApplicable(*(track.GetDefinition()))) - fApplicableModelList.insert(ModelList(iModel)); + if(ModelList.size()==0) return false; + for (iModel=0; iModelIsApplicable(*(track.GetDefinition()))) + fApplicableModelList.push_back (ModelList[iModel]); } // If Applicable Model List is empty, do nothing ! - if(fApplicableModelList.length()==0) return false; + if(fApplicableModelList.size()==0) return false; // -- Register current track fFastTrack.SetCurrentTrack(track,theNavigator); @@ -255,11 +254,11 @@ G4FastSimulationManager::AtRestGetFastSimulationManagerTrigger(const G4Track& tr // -- is irrelevant here) // Loops on the models to see if one of them wants to trigger: - for (iModel=0; iModel < fApplicableModelList.length(); iModel++) - if(fApplicableModelList(iModel)->AtRestModelTrigger(fFastTrack)) + for (iModel=0; iModel < fApplicableModelList.size(); iModel++) + if(fApplicableModelList[iModel]->AtRestModelTrigger(fFastTrack)) { fFastStep.Initialize(fFastTrack); - fTriggedFastSimulationModel=fApplicableModelList(iModel); + fTriggedFastSimulationModel=fApplicableModelList[iModel]; return true; } @@ -282,16 +281,16 @@ InsertGhostHereIfNecessary(G4VPhysicalVolume* theClone, { G4PVPlacement *GhostPhysical; // Not to do if there aren't glost placements - if(GhostPlacements.length()==0) return false; + if(GhostPlacements.size()==0) return false; // If there are, verifies if at least one model is applicable // for theParticle. - for (G4int iModel=0; iModelIsApplicable(theParticle)) { + for (G4int iModel=0; iModelIsApplicable(theParticle)) { // Ok, we find one. Place the ghost(s). - for (G4int ighost=0; ighostGetName(), fFastTrack.GetEnvelope(), theClone, @@ -307,7 +306,7 @@ void G4FastSimulationManager::ListTitle() const { G4cout << fFastTrack.GetEnvelope()->GetName(); - if(GhostPlacements.length()!=0) G4cout << " (ghost)"; + if(GhostPlacements.size()!=0) G4cout << " (ghost)"; } void @@ -319,11 +318,11 @@ G4FastSimulationManager::ListModels() const ListTitle(); G4cout << " Envelope:\n"; - for (iModel=0; iModelGetName() << "\n"; + for (iModel=0; iModelGetName() << "\n"; - for (iModel=0; iModelGetName() + for (iModel=0; iModelGetName() << "(inactivated)\n"; } @@ -336,21 +335,21 @@ G4FastSimulationManager::ListModels(const G4String& aName) const G4ParticleTable::GetParticleTable(); // Active Models - for (iModel=0; iModelGetName() == aName || + for (iModel=0; iModelGetName() == aName || aName == "all" ) { if(!(titled++)){ G4cout << "In the envelope "; ListTitle(); G4cout << ",\n"; } - G4cout << " the model " << ModelList(iModel)->GetName() + G4cout << " the model " << ModelList[iModel]->GetName() << " is applicable for :\n "; G4int list_started=0; for (G4int iParticle=0; iParticleentries(); iParticle++) - if(ModelList(iModel)-> + if(ModelList[iModel]-> IsApplicable(*(theParticleTable-> GetParticle(iParticle)))) { if(list_started++) G4cout << ", "; @@ -361,21 +360,21 @@ G4FastSimulationManager::ListModels(const G4String& aName) const } // Inactive Models - for (iModel=0; iModelGetName() == aName || + for (iModel=0; iModelGetName() == aName || aName == "all" ) { if(!(titled++)){ G4cout << "In the envelope "; ListTitle(); G4cout << ",\n"; } - G4cout << " the model " << fInactivatedModels(iModel)->GetName() + G4cout << " the model " << fInactivatedModels[iModel]->GetName() << " (inactivated) is applicable for :\n "; G4int list_started=0; for (G4int iParticle=0; iParticleentries(); iParticle++) - if(fInactivatedModels(iModel)-> + if(fInactivatedModels[iModel]-> IsApplicable(*(theParticleTable-> GetParticle(iParticle)))) { if(list_started++) G4cout << ", "; @@ -393,21 +392,21 @@ G4FastSimulationManager::ListModels(const G4ParticleDefinition* aPD) const G4bool unique=true; // Active Models - for (iModel=0; iModelIsApplicable(*aPD)) { + for (iModel=0; iModelIsApplicable(*aPD)) { G4cout << "Envelope "; ListTitle(); G4cout << ", Model " - << ModelList(iModel)->GetName() + << ModelList[iModel]->GetName() << "." << G4endl; } // inactive Models - for (iModel=0; iModelIsApplicable(*aPD)) { + for (iModel=0; iModelIsApplicable(*aPD)) { G4cout << "Envelope "; ListTitle(); G4cout << ", Model " - << fInactivatedModels(iModel)->GetName() + << fInactivatedModels[iModel]->GetName() << " (inactivated)." << G4endl; } diff --git a/source/processes/parameterisation/src/G4FastSimulationManagerProcess.cc b/source/processes/parameterisation/src/G4FastSimulationManagerProcess.cc index c983a74568..22258338ef 100644 --- a/source/processes/parameterisation/src/G4FastSimulationManagerProcess.cc +++ b/source/processes/parameterisation/src/G4FastSimulationManagerProcess.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4FastSimulationManagerProcess.cc,v 1.3.8.1.2.1 1999/12/08 17:35:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4FastSimulationManagerProcess.cc,v 1.4 1999/12/15 14:53:46 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/processes/parameterisation/src/G4FastSimulationMessenger.cc b/source/processes/parameterisation/src/G4FastSimulationMessenger.cc index ed7e3adfe0..d32961d252 100644 --- a/source/processes/parameterisation/src/G4FastSimulationMessenger.cc +++ b/source/processes/parameterisation/src/G4FastSimulationMessenger.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4FastSimulationMessenger.cc,v 1.2.8.1 1999/12/07 20:52:53 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4FastSimulationMessenger.cc,v 1.3 1999/12/15 14:53:46 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4FastSimulationMessenger.hh" diff --git a/source/processes/parameterisation/src/G4FastStep.cc b/source/processes/parameterisation/src/G4FastStep.cc index 06a577f55e..5364df74b4 100644 --- a/source/processes/parameterisation/src/G4FastStep.cc +++ b/source/processes/parameterisation/src/G4FastStep.cc @@ -5,10 +5,9 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4FastStep.cc,v 1.5.6.1.2.1 1999/12/08 17:35:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4FastStep.cc,v 1.7 2000/05/30 08:30:36 mora Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -//$Id: //--------------------------------------------------------------- // // G4FastStep.cc diff --git a/source/processes/parameterisation/src/G4FastTrack.cc b/source/processes/parameterisation/src/G4FastTrack.cc index 5ba46861a7..d56aefb4e5 100644 --- a/source/processes/parameterisation/src/G4FastTrack.cc +++ b/source/processes/parameterisation/src/G4FastTrack.cc @@ -5,10 +5,9 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4FastTrack.cc,v 1.2.8.1.2.1 1999/12/08 17:35:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4FastTrack.cc,v 1.4 2000/05/30 08:30:37 mora Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // -//$Id: //--------------------------------------------------------------- // // G4FastTrack.cc diff --git a/source/processes/parameterisation/src/G4FoamXrayTRmodel.cc b/source/processes/parameterisation/src/G4FoamXrayTRmodel.cc new file mode 100644 index 0000000000..007bb5bb8e --- /dev/null +++ b/source/processes/parameterisation/src/G4FoamXrayTRmodel.cc @@ -0,0 +1,101 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4FoamXrayTRmodel.cc,v 1.3 2000/06/15 17:38:39 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// + +#include "g4std/complex" + +#include "G4FoamXrayTRmodel.hh" +#include "Randomize.hh" + +#include "G4Gamma.hh" + +//////////////////////////////////////////////////////////////////////////// +// +// Constructor, destructor + +G4FoamXrayTRmodel::G4FoamXrayTRmodel(G4Envelope *anEnvelope, + G4double a, G4double b) : + G4VXrayTRmodel(anEnvelope,a,b) +{ + G4cout<<"Foam X-ray TR radiator model is called"<entries(); iParticle++) { G4bool Needed = false; - for (G4int ifsm=0; ifsm + for (G4int ifsm=0; ifsm InsertGhostHereIfNecessary(aClone, *(theParticleTable-> GetParticle(iParticle))); // if some FSM inserted a ghost, keep this clone. if(Needed) { - NeededFlavoredWorlds.insert(new + NeededFlavoredWorlds.push_back(new G4FlavoredParallelWorld(theParticleTable-> GetParticle(iParticle), aClone)); @@ -124,9 +124,9 @@ G4VFlavoredParallelWorld* G4GlobalFastSimulationManager:: GetFlavoredWorldForThis(G4ParticleDefinition* particle) { - for (G4int ipw=0; ipwGetTheParticleType()==particle) - return NeededFlavoredWorlds(ipw); + for (G4int ipw=0; ipwGetTheParticleType()==particle) + return NeededFlavoredWorlds[ipw]; return 0; } @@ -134,8 +134,8 @@ void G4GlobalFastSimulationManager::ActivateFastSimulationModel(const G4String& aName) { G4bool result = false; - for (G4int ifsm=0; ifsmActivateFastSimulationModel(aName); + for (G4int ifsm=0; ifsmActivateFastSimulationModel(aName); if(result) G4cout << "Model " << aName << " activated."; else @@ -147,8 +147,8 @@ void G4GlobalFastSimulationManager::InActivateFastSimulationModel(const G4String& aName) { G4bool result = false; - for (G4int ifsm=0; ifsmInActivateFastSimulationModel(aName); + for (G4int ifsm=0; ifsmInActivateFastSimulationModel(aName); if(result) G4cout << "Model " << aName << " inactivated."; else @@ -161,29 +161,29 @@ G4GlobalFastSimulationManager::ListEnvelopes(const G4String& aName, listType theType) { if(theType == ISAPPLICABLE) { - for (G4int ifsm=0; ifsmListModels(aName); + for (G4int ifsm=0; ifsmListModels(aName); return; } if(aName == "all") { G4int titled = 0; - for (G4int ifsm=0; ifsmListTitle(); + ManagedManagers[ifsm]->ListTitle(); G4cout << G4endl; } - else ManagedManagers(ifsm)->ListModels(); + else ManagedManagers[ifsm]->ListModels(); } } else { - for (G4int ifsm=0; ifsm + for (G4int ifsm=0; ifsm GetEnvelope()->GetName()){ - ManagedManagers(ifsm)->ListModels(); + ManagedManagers[ifsm]->ListModels(); break; } } @@ -192,8 +192,8 @@ G4GlobalFastSimulationManager::ListEnvelopes(const G4String& aName, void G4GlobalFastSimulationManager::ListEnvelopes(const G4ParticleDefinition* aPD) { - for (G4int ifsm=0; ifsmListModels(aPD); + for (G4int ifsm=0; ifsmListModels(aPD); } G4VPhysicalVolume* diff --git a/source/processes/parameterisation/src/G4IrregularXrayTRmodel.cc b/source/processes/parameterisation/src/G4IrregularXrayTRmodel.cc new file mode 100644 index 0000000000..5bbfef33a6 --- /dev/null +++ b/source/processes/parameterisation/src/G4IrregularXrayTRmodel.cc @@ -0,0 +1,229 @@ +// This code implementation is the intellectual property of +// the RD44 GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4IrregularXrayTRmodel.cc,v 1.1 2000/05/16 13:44:16 grichine Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// + + + +#include "G4IrregularXrayTRmodel.hh" +#include "Randomize.hh" + +#include "G4Gamma.hh" + +//////////////////////////////////////////////////////////////////////////// +// +// Constructor, destructor + +G4IrregularXrayTRmodel::G4IrregularXrayTRmodel(G4Envelope *anEnvelope, + G4double a, G4double b) : + G4VXrayTRmodel(anEnvelope,a,b) +{ + G4cout<<"Irregular X-ray TR model is called"<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 ; +} + +***************************************************** */ + + +/////////////////////////////////////////////////////////////////////////// +// +// Very rough approximation for radiator interference factor for the case of +// fully irregular radiator. The plate and gas gap thicknesses are distributed +// according to exponent. The mean values of the plate and gas gap thicknesses +// are supposed to be much more than XTR formation zones but much less than +// mean absorption length of XTR photons in coresponding material. + +G4double +G4IrregularXrayTRmodel::GetStackFactor( G4double energy, + G4double gamma, G4double varAngle ) +{ + G4double result, plateFactor, gasFactor, factor ; + + plateFactor = 1.0/( 1.0 + fPlateThick*GetPlateLinearPhotoAbs(energy) ) ; + + gasFactor = 1.0/( 1.0 + fGasThick*GetGasLinearPhotoAbs(energy) ) ; + + factor = plateFactor*gasFactor ; + + result = ( 1 - pow(factor,fPlateNumber) )/( 1 - factor ) ; + + result *= 1 + plateFactor ; + + return result ; +} + + +// +// +//////////////////////////////////////////////////////////////////////////// + + + + + + + + diff --git a/source/processes/parameterisation/src/G4PlateIrrGasXrayTRmodel.cc b/source/processes/parameterisation/src/G4PlateIrrGasXrayTRmodel.cc new file mode 100644 index 0000000000..00e440a321 --- /dev/null +++ b/source/processes/parameterisation/src/G4PlateIrrGasXrayTRmodel.cc @@ -0,0 +1,112 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4PlateIrrGasXrayTRmodel.cc,v 1.2 2000/06/15 17:38:39 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// + +#include "g4std/complex" + +#include "G4PlateIrrGasXrayTRmodel.hh" +#include "Randomize.hh" + +#include "G4Gamma.hh" + +//////////////////////////////////////////////////////////////////////////// +// +// Constructor, destructor + +G4PlateIrrGasXrayTRmodel::G4PlateIrrGasXrayTRmodel(G4Envelope *anEnvelope, + G4double a, G4double b) : + G4VXrayTRmodel(anEnvelope,a,b) +{ + G4cout<<"PlateIrrGas X-ray TR radiator model is called"<GetNoDaughters() ; + G4cout<<"the number of TR radiator plates = "<GetDaughter(0)->GetLogicalVolume()-> + GetMaterial()->GetIndex() ; + // index of gas material + fMatIndex2 = anEnvelope->GetMaterial()->GetIndex() ; + + // plasma energy squared for plate material + + fSigma1 = fPlasmaCof*anEnvelope->GetDaughter(0)->GetLogicalVolume()-> + GetMaterial()->GetElectronDensity() ; + // fSigma1 = (20.9*eV)*(20.9*eV) ; + G4cout<<"plate plasma energy = "<GetMaterial()->GetElectronDensity() ; + G4cout<<"gas plasma energy = "<GetDefinition()->GetPDGMass() ; + // G4double kinEnergy = fastTrack.GetPrimaryTrack()->GetKineticEnergy() ; + // G4double gamma = 1.0 + kinEnergy/mass ; // Lorentz factor + // G4cout << "gamma = " << gamma << G4endl ; + // if (gamma >= 100.0) return true ; + // else return false ; + + return true ; +} + +////////////////////////////////////////////////////////////////////////////// +// +// + +void G4VXrayTRmodel::DoIt( const G4FastTrack& fastTrack , + G4FastStep& fastStep ) +{ + G4int iTkin, iPlace, numOfTR, iTR, iTransfer ; + G4double energyPos, 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 ; +} + +////////////////////////////////////////////////////////////////////////// +// +// User method to code the parameterisation properly +// said. This is simple example of creation of one X-ray photon with the +// energy in the range of around 5 keV produced by relativistic charged +// particle +// + +void G4VXrayTRmodel::ExampleDoIt( const G4FastTrack& fastTrack , + G4FastStep& fastStep ) +{ + + // The primary track continues along its direction. + // One secondary (a photon) is added: + + // G4cout << " TR `model' applied \n " << endl; + + // Primary: idem as in "DefaultModel": + // + + G4double distance = fastTrack.GetEnvelopeSolid()-> + DistanceToOut(fastTrack.GetPrimaryTrackLocalPosition(), + fastTrack.GetPrimaryTrackLocalDirection()) ; + + G4ThreeVector position = fastTrack.GetPrimaryTrackLocalPosition() + + distance*fastTrack.GetPrimaryTrackLocalDirection() ; + + // Set final position: + + fastStep.SetPrimaryTrackFinalPosition(position); + + //--------------------------- + // Secondary: Adds one "secondary": + // + // First, user has to say how many secondaries will be created: + + fastStep.SetNumberOfSecondaryTracks(1); + + // Build the secondary direction: + + G4ParticleMomentum direction(fastTrack.GetPrimaryTrackLocalDirection()); + // direction.setZ(direction.z()*0.5); + // direction.setY(direction.y()+direction.z()*0.1); + direction = direction.unit(); // necessary !? + + // Dynamics (Note that many constructors exists for G4DynamicParticle + + G4double gammaEnergy = 3.0*keV + G4UniformRand()*2*keV ; + + G4DynamicParticle dynamique(G4Gamma::GammaDefinition(), + direction, + // fastTrack.GetPrimaryTrack()->GetKineticEnergy()/2. + gammaEnergy ); + // -- position: + + G4double Dist = fastTrack.GetEnvelopeSolid()-> + DistanceToOut(fastTrack.GetPrimaryTrackLocalPosition(),direction) ; + + G4ThreeVector posi = fastTrack.GetPrimaryTrackLocalPosition() + Dist*direction ; + + // Creation of the secondary Track: + + fastStep.CreateSecondaryTrack( dynamique, + posi, + fastTrack.GetPrimaryTrack()->GetGlobalTime()); + +} + +////////////////////////////////////////////////////////////////////// +// +// Calculates formation zone for plates. Omega is energy !!! + +G4double G4VXrayTRmodel::GetPlateFormationZone( G4double omega , + G4double gamma , + G4double varAngle ) +{ + G4double cof, lambda ; + lambda = 1.0/gamma/gamma + varAngle + fSigma1/omega/omega ; + cof = 2.0*hbarc/omega/lambda ; + return cof ; +} + +//////////////////////////////////////////////////////////////////////// +// +// Computes matrix of Sandia photo absorption cross section coefficients for +// plate material + +void G4VXrayTRmodel::ComputePlatePhotoAbsCof() +{ + G4int i, j, numberOfElements ; + static const G4MaterialTable* + theMaterialTable = G4Material::GetMaterialTable(); + + G4SandiaTable thisMaterialSandiaTable(fMatIndex1) ; + numberOfElements = (*theMaterialTable)[fMatIndex1]->GetNumberOfElements() ; + G4int* thisMaterialZ = new G4int[numberOfElements] ; + + for(i=0;i + GetElement(i)->GetZ() ; + } + fPlateIntervalNumber = thisMaterialSandiaTable.SandiaIntervals + (thisMaterialZ,numberOfElements) ; + + fPlateIntervalNumber = thisMaterialSandiaTable.SandiaMixing + ( thisMaterialZ , + (*theMaterialTable)[fMatIndex1]->GetFractionVector() , + numberOfElements,fPlateIntervalNumber) ; + + fPlatePhotoAbsCof = new G4double*[fPlateIntervalNumber] ; + + for(i=0;iGetDensity() ; + } + } + delete[] thisMaterialZ ; + return ; +} + +////////////////////////////////////////////////////////////////////// +// +// Returns the value of linear photo absorption coefficient (in reciprocal +// length) for plate for given energy of X-ray photon omega + +G4double G4VXrayTRmodel::GetPlateLinearPhotoAbs(G4double omega) +{ + G4int i ; + G4double omega2, omega3, omega4 ; + + omega2 = omega*omega ; + omega3 = omega2*omega ; + omega4 = omega2*omega2 ; + + for(i=0;iGetNumberOfElements() ; + G4int* thisMaterialZ = new G4int[numberOfElements] ; + + for(i=0;i + GetElement(i)->GetZ() ; + } + fGasIntervalNumber = thisMaterialSandiaTable.SandiaIntervals + (thisMaterialZ,numberOfElements) ; + + fGasIntervalNumber = thisMaterialSandiaTable.SandiaMixing + ( thisMaterialZ , + (*theMaterialTable)[fMatIndex2]->GetFractionVector() , + numberOfElements,fGasIntervalNumber) ; + + fGasPhotoAbsCof = new G4double*[fGasIntervalNumber] ; + + for(i=0;iGetDensity() ; + } + } + delete[] thisMaterialZ ; + return ; +} + +////////////////////////////////////////////////////////////////////// +// +// Returns the value of linear photo absorption coefficient (in reciprocal +// length) for gas + +G4double G4VXrayTRmodel::GetGasLinearPhotoAbs(G4double omega) +{ + G4int i ; + G4double omega2, omega3, omega4 ; + + omega2 = omega*omega ; + omega3 = omega2*omega ; + omega4 = omega2*omega2 ; + + for(i=0;i matter2, or 2->1) +// varAngle =2* (1 - cos(theta)) or approximately = theta*theta +// + +G4double +G4VXrayTRmodel::OneBoundaryXTRNdensity( G4double energy,G4double gamma, + G4double varAngle ) const +{ + G4double formationLength1, formationLength2 ; + formationLength1 = 1.0/ + (1.0/(gamma*gamma) + + fSigma1/(energy*energy) + + varAngle) ; + formationLength2 = 1.0/ + (1.0/(gamma*gamma) + + fSigma2/(energy*energy) + + varAngle) ; + return (varAngle/energy)*(formationLength1 - formationLength2) + *(formationLength1 - formationLength2) ; + +} + +////////////////////////////////////////////////////////////////////////// +// +// + +void G4VXrayTRmodel::BuildTable() +{ + G4int iMat, jMat, 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< integral ; + return integral.Legendre96(this,&G4VXrayTRmodel::XTRNSpectralAngleDensity, + 0.0,0.2*fMaxThetaTR) + + integral.Legendre10(this,&G4VXrayTRmodel::XTRNSpectralAngleDensity, + 0.2*fMaxThetaTR,fMaxThetaTR) ; +} + +////////////////////////////////////////////////////////////////////////// +// +// for photon angle distribution tables +// + +G4double G4VXrayTRmodel::XTRNAngleSpectralDensity(G4double energy) +{ + return OneBoundaryXTRNdensity(energy,fGamma,fVarAngle)* + GetStackFactor(energy,fGamma,fVarAngle) ; +} + +/////////////////////////////////////////////////////////////////////////// +// +// + +G4double G4VXrayTRmodel::XTRNAngleDensity(G4double varAngle) +{ + fVarAngle = varAngle ; + G4Integrator integral ; + return integral.Legendre96(this,&G4VXrayTRmodel::XTRNAngleSpectralDensity, + fMinEnergyTR,fMaxEnergyTR) ; +} + +////////////////////////////////////////////////////////////////////////////// +// +// Check number of photons for a range of Lorentz factors from both energy +// and angular tables + +void G4VXrayTRmodel::GetNumberOfPhotons() +{ + G4int iTkin ; + G4double gamma, numberE, numberA ; + + G4std::ofstream outEn("numberE.dat", G4std::ios::out ) ; + outEn.setf( G4std::ios::scientific, G4std::ios::floatfield ); + + G4std::ofstream outAng("numberAng.dat", G4std::ios::out ) ; + outAng.setf( G4std::ios::scientific, G4std::ios::floatfield ); + + for(iTkin=0;iTkin + GetLowEdgeEnergy(iTkin)/proton_mass_c2) ; + numberE = (*(*fEnergyDistrTable)(iTkin))(0) ; + // numberA = (*(*fAngleDistrTable)(iTkin))(0) ; + G4cout<GetVolume()->GetName() == track.GetVolume()->GetName() ); retCurrentTouchable = fCurrentTouchable; + fParticleChange.SetTouchableChange( fCurrentTouchable ); + }else{ retCurrentTouchable = track.GetTouchable(); + fParticleChange.SetTouchableChange( track.GetTouchable() ); } // This must be done in the above if ( AtSur ) fails // We also do it for if (true) in order to get debug/opt to @@ -476,11 +483,22 @@ G4VParticleChange* G4Transportation::PostStepDoIt( // overwrite the (unset) one in particle change) // Although in general this is fCurrentTouchable, at the start of // a step it could be different ... ?? + fParticleChange.SetTouchableChange( track.GetTouchable() ); retCurrentTouchable = track.GetTouchable(); #endif } // endif ( fGeometryLimitedStep ) + const G4VPhysicalVolume *pNewVol = retCurrentTouchable->GetVolume(); + const G4Material *pNewMaterial=0; + if( pNewVol != 0 ) pNewMaterial= pNewVol->GetLogicalVolume()->GetMaterial(); + + // ( pNewMaterial ); + fParticleChange.SetMaterialChange( (G4Material *) pNewMaterial ); + // temporarily until Get/Set Material of ParticleChange, + // and StepPoint can be made const. + + // Set the touchable in ParticleChange // this must always be done because the particle change always // uses this value to overwrite the current touchable pointer. diff --git a/source/processes/transportation/src/G4UserSpecialCuts.cc b/source/processes/transportation/src/G4UserSpecialCuts.cc index 9ef9e2ff0b..783c658077 100644 --- a/source/processes/transportation/src/G4UserSpecialCuts.cc +++ b/source/processes/transportation/src/G4UserSpecialCuts.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4UserSpecialCuts.cc,v 1.2.2.1.2.1 1999/12/08 17:35:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4UserSpecialCuts.cc,v 1.3 1999/12/15 14:53:51 gunter Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // -------------------------------------------------------------- // History diff --git a/source/readout/include/G4DCtable.hh b/source/readout/include/G4DCtable.hh index cf30ef58ae..e6482bd134 100644 --- a/source/readout/include/G4DCtable.hh +++ b/source/readout/include/G4DCtable.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4DCtable.hh,v 1.2.2.1.2.1 1999/12/07 20:52:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4DCtable_H diff --git a/source/readout/include/G4DMmessenger.hh b/source/readout/include/G4DMmessenger.hh index 7fee53d3e1..34f7d8456a 100644 --- a/source/readout/include/G4DMmessenger.hh +++ b/source/readout/include/G4DMmessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4DMmessenger.hh,v 1.2.4.1 1999/12/07 20:52:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4DMmessenger_h diff --git a/source/readout/include/G4DigiManager.hh b/source/readout/include/G4DigiManager.hh index 5b7db0f591..b8413ad9d9 100644 --- a/source/readout/include/G4DigiManager.hh +++ b/source/readout/include/G4DigiManager.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4DigiManager.hh,v 1.2.2.1.2.1 1999/12/07 20:52:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4DigiManager_h diff --git a/source/readout/include/G4VDigitizerModule.hh b/source/readout/include/G4VDigitizerModule.hh index 6708cc1561..ff26d5aaef 100644 --- a/source/readout/include/G4VDigitizerModule.hh +++ b/source/readout/include/G4VDigitizerModule.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VDigitizerModule.hh,v 1.2.2.1.2.1 1999/12/07 20:52:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4VDigitizerModule_H diff --git a/source/readout/src/G4DCtable.cc b/source/readout/src/G4DCtable.cc index a9382a7ef6..65d0457ef6 100644 --- a/source/readout/src/G4DCtable.cc +++ b/source/readout/src/G4DCtable.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4DCtable.cc,v 1.1.8.1.2.1 1999/12/07 20:52:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4DCtable.hh" diff --git a/source/readout/src/G4DMmessenger.cc b/source/readout/src/G4DMmessenger.cc index b54dff8c19..5d78dfff17 100644 --- a/source/readout/src/G4DMmessenger.cc +++ b/source/readout/src/G4DMmessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4DMmessenger.cc,v 1.1.10.1 1999/12/07 20:52:58 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // --------------------------------------------------------------------- diff --git a/source/readout/src/G4DigiManager.cc b/source/readout/src/G4DigiManager.cc index 872356dd2c..3861ee975f 100644 --- a/source/readout/src/G4DigiManager.cc +++ b/source/readout/src/G4DigiManager.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4DigiManager.cc,v 1.1.8.1.2.1.2.1 1999/12/08 17:35:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4DigiManager.hh" diff --git a/source/readout/src/G4VDigitizerModule.cc b/source/readout/src/G4VDigitizerModule.cc index 5086663f85..5b48ea1ece 100644 --- a/source/readout/src/G4VDigitizerModule.cc +++ b/source/readout/src/G4VDigitizerModule.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VDigitizerModule.cc,v 1.1.10.1 1999/12/07 20:52:58 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4VDigitizerModule.hh" diff --git a/source/run/include/G4Run.hh b/source/run/include/G4Run.hh index a8b2672fe2..a860659131 100644 --- a/source/run/include/G4Run.hh +++ b/source/run/include/G4Run.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Run.hh,v 1.2.4.1 1999/12/07 20:52:58 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4Run_h diff --git a/source/run/include/G4RunManager.hh b/source/run/include/G4RunManager.hh index 3019424b75..f746f0ecb4 100644 --- a/source/run/include/G4RunManager.hh +++ b/source/run/include/G4RunManager.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4RunManager.hh,v 1.7.2.1 1999/12/07 20:52:58 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/run/include/G4RunMessenger.hh b/source/run/include/G4RunMessenger.hh index d57d13b659..ac27568b19 100644 --- a/source/run/include/G4RunMessenger.hh +++ b/source/run/include/G4RunMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4RunMessenger.hh,v 1.4.4.1 1999/12/07 20:52:58 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // GEANT 4 class header file diff --git a/source/run/include/G4UserPhysicsListMessenger.hh b/source/run/include/G4UserPhysicsListMessenger.hh index 9c22d39cbb..29760fa62e 100644 --- a/source/run/include/G4UserPhysicsListMessenger.hh +++ b/source/run/include/G4UserPhysicsListMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UserPhysicsListMessenger.hh,v 1.4.4.1 1999/12/07 20:52:58 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/run/include/G4UserRunAction.hh b/source/run/include/G4UserRunAction.hh index 172f7651d3..745b03934d 100644 --- a/source/run/include/G4UserRunAction.hh +++ b/source/run/include/G4UserRunAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UserRunAction.hh,v 1.3.4.1 1999/12/07 20:52:58 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4UserRunAction_h diff --git a/source/run/include/G4VPersistencyManager.hh b/source/run/include/G4VPersistencyManager.hh index 67aa601ddb..34af07e48b 100644 --- a/source/run/include/G4VPersistencyManager.hh +++ b/source/run/include/G4VPersistencyManager.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VPersistencyManager.hh,v 1.2.4.1 1999/12/07 20:52:58 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4VPersistencyManager_h diff --git a/source/run/include/G4VUserDetectorConstruction.hh b/source/run/include/G4VUserDetectorConstruction.hh index 129549fde3..394bb4cab3 100644 --- a/source/run/include/G4VUserDetectorConstruction.hh +++ b/source/run/include/G4VUserDetectorConstruction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VUserDetectorConstruction.hh,v 1.2.4.1 1999/12/07 20:52:59 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4VUserDetectorConstruction_h diff --git a/source/run/include/G4VUserPhysicsList.hh b/source/run/include/G4VUserPhysicsList.hh index ef4d718488..c4f8261509 100644 --- a/source/run/include/G4VUserPhysicsList.hh +++ b/source/run/include/G4VUserPhysicsList.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VUserPhysicsList.hh,v 1.5.6.1 1999/12/08 17:35:17 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/run/include/G4VUserPrimaryGeneratorAction.hh b/source/run/include/G4VUserPrimaryGeneratorAction.hh index b5d197dceb..715b197c0d 100644 --- a/source/run/include/G4VUserPrimaryGeneratorAction.hh +++ b/source/run/include/G4VUserPrimaryGeneratorAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VUserPrimaryGeneratorAction.hh,v 1.2.4.1 1999/12/07 20:52:59 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4VUserPrimaryGeneratorAction_h diff --git a/source/run/src/G4Run.cc b/source/run/src/G4Run.cc index 0c02b7c711..91d00729bb 100644 --- a/source/run/src/G4Run.cc +++ b/source/run/src/G4Run.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Run.cc,v 1.1.10.1 1999/12/07 20:52:59 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4Run.hh" diff --git a/source/run/src/G4RunManager.cc b/source/run/src/G4RunManager.cc index e6a501490e..3802cf38b7 100644 --- a/source/run/src/G4RunManager.cc +++ b/source/run/src/G4RunManager.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4RunManager.cc,v 1.12 2000/03/09 17:07:02 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4RunManager.cc,v 1.15 2000/06/28 10:25:54 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // @@ -68,8 +68,8 @@ G4RunManager::G4RunManager() G4ProcessTable::GetProcessTable()->CreateMessenger(); G4cout << "**********************************************" << G4endl - << " Geant4 version $Name: geant4-01-01 $" << G4endl - << " (10-Mar-2000)" << G4endl + << " Geant4 version $Name: geant4-02-00 $" << G4endl + << " (30-Jun-2000)" << G4endl << " Copyright : Geant4 Collaboration" << G4endl << "**********************************************" << G4endl; } @@ -177,6 +177,7 @@ void G4RunManager::RunInitialization() { currentRun = new G4Run(); currentRun->SetRunID(runIDCounter); + currentRun->SetDCtable(DCtable); G4SDManager* fSDM = G4SDManager::GetSDMpointerIfExist(); if(fSDM) diff --git a/source/run/src/G4RunMessenger.cc b/source/run/src/G4RunMessenger.cc index 3175ceedb6..e25958a6fa 100644 --- a/source/run/src/G4RunMessenger.cc +++ b/source/run/src/G4RunMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4RunMessenger.cc,v 1.4.8.1.2.5 1999/12/14 09:16:50 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4RunMessenger.hh" diff --git a/source/run/src/G4UserPhysicsListMessenger.cc b/source/run/src/G4UserPhysicsListMessenger.cc index 073ec22c22..5283256c1c 100644 --- a/source/run/src/G4UserPhysicsListMessenger.cc +++ b/source/run/src/G4UserPhysicsListMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UserPhysicsListMessenger.cc,v 1.2.8.1 1999/12/07 20:52:59 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/run/src/G4UserRunAction.cc b/source/run/src/G4UserRunAction.cc index 967da7afa1..3349552187 100644 --- a/source/run/src/G4UserRunAction.cc +++ b/source/run/src/G4UserRunAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UserRunAction.cc,v 1.2.8.1 1999/12/07 20:53:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4UserRunAction.hh" diff --git a/source/run/src/G4VPersistencyManager.cc b/source/run/src/G4VPersistencyManager.cc index de30a2fee1..1f6bf3dd9d 100644 --- a/source/run/src/G4VPersistencyManager.cc +++ b/source/run/src/G4VPersistencyManager.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VPersistencyManager.cc,v 1.1.10.1 1999/12/07 20:53:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4VPersistencyManager.hh" diff --git a/source/run/src/G4VUserDetectorConstruction.cc b/source/run/src/G4VUserDetectorConstruction.cc index d86b9b4810..8229e8bd10 100644 --- a/source/run/src/G4VUserDetectorConstruction.cc +++ b/source/run/src/G4VUserDetectorConstruction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VUserDetectorConstruction.cc,v 1.1.10.1 1999/12/07 20:53:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4VUserDetectorConstruction.hh" diff --git a/source/run/src/G4VUserPhysicsList.cc b/source/run/src/G4VUserPhysicsList.cc index 8442548711..04d5e26828 100644 --- a/source/run/src/G4VUserPhysicsList.cc +++ b/source/run/src/G4VUserPhysicsList.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VUserPhysicsList.cc,v 1.7.8.1.2.3 1999/12/14 07:08:32 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/run/src/G4VUserPrimaryGeneratorAction.cc b/source/run/src/G4VUserPrimaryGeneratorAction.cc index 06b7b8159b..3ab47feb68 100644 --- a/source/run/src/G4VUserPrimaryGeneratorAction.cc +++ b/source/run/src/G4VUserPrimaryGeneratorAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VUserPrimaryGeneratorAction.cc,v 1.1.10.1 1999/12/07 20:53:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4VUserPrimaryGeneratorAction.hh" diff --git a/source/track/GNUmakefile b/source/track/GNUmakefile index 085200cd05..f91676e274 100644 --- a/source/track/GNUmakefile +++ b/source/track/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.1 1999/01/07 16:14:19 gunter Exp $ +# $Id: GNUmakefile,v 1.2 2000/01/31 09:18:39 gcosmo Exp $ # ---------------------------------------------------------- # GNUmakefile for track library. Gabriele Cosmo, 3/4/1997. # ---------------------------------------------------------- @@ -15,7 +15,6 @@ CPPFLAGS += \ -I$(G4BASE)/global/management/include \ -I$(G4BASE)/global/HEPRandom/include \ -I$(G4BASE)/global/HEPGeometry/include \ - -I$(G4BASE)/processes/management/include \ -I$(G4BASE)/intercoms/include \ -I$(G4BASE)/particles/management/include \ -I$(G4BASE)/materials/include \ diff --git a/source/track/History b/source/track/History index 1584017ec3..bc36554b01 100644 --- a/source/track/History +++ b/source/track/History @@ -1,4 +1,4 @@ -$Id: History,v 1.14 2000/01/18 02:54:07 kurasige Exp $ +$Id: History,v 1.21 2000/06/02 10:24:58 kurasige Exp $ ------------------------------------------------------------------- ========================================================= @@ -16,6 +16,30 @@ committal in the CVS repository ! ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- + +June 2, 2000 M.Asai (track-V01-01-02) +- Add G4VUserTrackInformation class and its pointer data member in G4Track +- Add "const" to pointer to G4Step in G4Track (Hisaya) + +June 1 2000 H.Kurashige (track-V01-01-01a) +- Removed "const" from the return value type of G4StepPoint::GetPhysicalVolume() + +May 16 2000 H.Kurashige (track-V01-01-01) +- Added thePolarizationChange in G4ParticleChangeForTransportation + +May 12 2000 H.Kurashige (track-V01-01-00) +- SetTouchable methods has been changed to get "const" pointer + +Feb. 16, 2000 H.Kurashige +- Added cashing mechanism of pointer to material in G4StepPoint +- Added theMaterialChange in G4ParticleChangeForTransportation +- GetTouchable methods has been changed to give "const" pointer + +Feb 13, 2000 H.Kurashige (track-V01-00-01) +- Added G4ParticleChangeForRadDecay +- Changed G4VParticleChange::AddSecondary to set secondary track weight equal to the primary's one +- Removed printing pointers of ParticleChange object in CheckIt methods + Jan 18, 2000 H.Kurashige (track-V01-00-00) - Fixed bugs in treatment of secondary track weight diff --git a/source/track/include/G4EvtBiasMechanism.hh b/source/track/include/G4EvtBiasMechanism.hh index acf27a5098..0b24c7b230 100644 --- a/source/track/include/G4EvtBiasMechanism.hh +++ b/source/track/include/G4EvtBiasMechanism.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4EvtBiasMechanism.hh,v 1.3 1999/11/07 16:31:57 kurasige Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/track/include/G4ForceCondition.hh b/source/track/include/G4ForceCondition.hh index 68513e4ac7..cfdeb5760e 100644 --- a/source/track/include/G4ForceCondition.hh +++ b/source/track/include/G4ForceCondition.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ForceCondition.hh,v 1.2 1999/11/07 16:31:57 kurasige Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/track/include/G4GPILSelection.hh b/source/track/include/G4GPILSelection.hh index 2f91e0fc34..e7ea4a6a28 100644 --- a/source/track/include/G4GPILSelection.hh +++ b/source/track/include/G4GPILSelection.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4GPILSelection.hh,v 1.2 1999/11/07 16:31:58 kurasige Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/track/include/G4Mars5GeVMechanism.hh b/source/track/include/G4Mars5GeVMechanism.hh index 9b71c4d603..0639fd9271 100644 --- a/source/track/include/G4Mars5GeVMechanism.hh +++ b/source/track/include/G4Mars5GeVMechanism.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Mars5GeVMechanism.hh,v 1.3 1999/11/07 16:31:58 kurasige Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/track/include/G4ParticleChange.hh b/source/track/include/G4ParticleChange.hh index fa00aade6b..635e538826 100644 --- a/source/track/include/G4ParticleChange.hh +++ b/source/track/include/G4ParticleChange.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ParticleChange.hh,v 1.5 1999/11/07 16:31:59 kurasige Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ParticleChange.hh,v 1.6 2000/02/13 15:08:20 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -152,7 +152,6 @@ class G4ParticleChange: public G4VParticleChange G4double GetWeightChange() const; void SetWeightChange(G4double w); // Get/Set theWeightChange - // these methods are valid if fUseEB is true; // -- Utility functions -- G4ThreeVector GetGlobalPosition(const G4ThreeVector& displacement) const; diff --git a/source/track/include/G4ParticleChange.icc b/source/track/include/G4ParticleChange.icc index dc0638bd4c..19dbd53739 100644 --- a/source/track/include/G4ParticleChange.icc +++ b/source/track/include/G4ParticleChange.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ParticleChange.icc,v 1.6 2000/01/18 02:54:12 kurasige Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ParticleChange.icc,v 1.7 2000/02/13 15:08:20 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // inline @@ -191,6 +191,7 @@ inline void G4ParticleChange::SetWeightChange(G4double w) { theWeightChange = w; + theParentWeight = w; } inline diff --git a/source/track/include/G4ParticleChangeForDecay.hh b/source/track/include/G4ParticleChangeForDecay.hh index 48b0394c24..1c69cef29e 100644 --- a/source/track/include/G4ParticleChangeForDecay.hh +++ b/source/track/include/G4ParticleChangeForDecay.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ParticleChangeForDecay.hh,v 1.4 1999/11/07 16:31:59 kurasige Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/track/include/G4ParticleChangeForLoss.hh b/source/track/include/G4ParticleChangeForLoss.hh index 0b08c61b14..c875017c68 100644 --- a/source/track/include/G4ParticleChangeForLoss.hh +++ b/source/track/include/G4ParticleChangeForLoss.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ParticleChangeForLoss.hh,v 1.3 1999/11/07 16:32:00 kurasige Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/track/include/G4ParticleChangeForMSC.icc b/source/track/include/G4ParticleChangeForMSC.icc index da463ca2b8..5c9651fc5a 100644 --- a/source/track/include/G4ParticleChangeForMSC.icc +++ b/source/track/include/G4ParticleChangeForMSC.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ParticleChangeForMSC.icc,v 1.3 1999/12/15 14:53:55 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/track/include/G4ParticleChangeForRadDecay.hh b/source/track/include/G4ParticleChangeForRadDecay.hh new file mode 100644 index 0000000000..19649d20a4 --- /dev/null +++ b/source/track/include/G4ParticleChangeForRadDecay.hh @@ -0,0 +1,89 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4ParticleChangeForRadDecay.hh,v 1.2 2000/02/13 15:08:20 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// ------------------------------------------------------------ +// GEANT 4 class header file +// +// For information related to this code contact: +// CERN, CN Division, ASD group +// +// ------------------------------------------------------------ +// Implemented for the new scheme 25 Jan. 2000 H.Kurahige +// +// Class Description +// This class is a concrete class for ParticleChange for RadDecay +// +#ifndef G4ParticleChangeForRadDecay_h +#define G4ParticleChangeForRadDecay_h 1 + +#include "globals.hh" +#include "G4ios.hh" +class G4VTouchable; +#include "G4ParticleChange.hh" + +class G4ParticleChangeForRadDecay: public G4ParticleChange +{ + public: + // default constructor + G4ParticleChangeForRadDecay(){} + + // destructor + virtual ~G4ParticleChangeForRadDecay(){} + + protected: + // hide copy constructor and assignment operaor as protected + G4ParticleChangeForRadDecay(const G4ParticleChangeForRadDecay &right){} + G4ParticleChangeForRadDecay & operator=(const G4ParticleChangeForRadDecay &right){} + + public: // with description + void AddSecondary(G4Track* aSecondary); + // Add a secondary particle to theListOfSecondaries. + // ------------------------------------------------------ + + +}; + +inline void G4ParticleChangeForRadDecay::AddSecondary(G4Track *aTrack) +{ + // add a secondary after size check + if (theSizeOftheListOfSecondaries > 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/track/include/G4ParticleChangeForTransport.hh b/source/track/include/G4ParticleChangeForTransport.hh index cca47f2125..9c9448dc4c 100644 --- a/source/track/include/G4ParticleChangeForTransport.hh +++ b/source/track/include/G4ParticleChangeForTransport.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ParticleChangeForTransport.hh,v 1.2 1999/11/07 16:32:01 kurasige Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ParticleChangeForTransport.hh,v 1.5 2000/05/16 00:34:27 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ @@ -17,6 +17,7 @@ // // ------------------------------------------------------------ // Implemented for the new scheme 10 May. 1998 H.Kurahige +// Added theMaterialChange 16 FEb. 2000 H.Kurahige // // Class Description // This class is a concrete class for ParticleChange for transportation @@ -64,11 +65,20 @@ class G4ParticleChangeForTransport: public G4ParticleChange // "Change", what it stores (and returns in get) are the "FINAL" // values of the Position, Momentum, etc. - G4VTouchable* GetTouchableChange() const; - void SetTouchableChange(G4VTouchable* fTouchable); + const G4VTouchable* GetTouchableChange() const; + void SetTouchableChange(const G4VTouchable* fTouchable); // Get/Set the touchable of the current particle. // Note: Touchable in PostStepPoint will be updated only after PostStepDoIt + G4Material* GetMaterialChange() const; + void SetMaterialChange(G4Material* fMaterial); + // Get/Set the material in the touchable of the current particle. + + const G4ThreeVector* GetPolarizationChange() const; + void SetPolarizationChange(G4double Px, G4double Py, G4double Pz); + void SetPolarizationChange(const G4ThreeVector& finalPoralization); + // Get/Set thePolarizationChange vector. + G4bool GetMomentumChanged() const; void SetMomentumChanged(G4bool b); @@ -76,12 +86,16 @@ class G4ParticleChangeForTransport: public G4ParticleChange virtual void DumpInfo() const; protected: - G4VTouchable* theTouchableChange; + const G4VTouchable* theTouchableChange; // The changed touchable of a given particle. private: - G4bool isMomentumChanged; - + G4bool isMomentumChanged; + // The flag which is set if mometum is changed in this stepi + G4Material* theMaterialChange; + // The material where given track currently locates + G4ThreeVector thePolarizationChange; + // The changed (final) polarization of a given track }; #include "G4ParticleChangeForTransport.icc" diff --git a/source/track/include/G4ParticleChangeForTransport.icc b/source/track/include/G4ParticleChangeForTransport.icc index 0e829f6e98..abceaada8c 100644 --- a/source/track/include/G4ParticleChangeForTransport.icc +++ b/source/track/include/G4ParticleChangeForTransport.icc @@ -5,23 +5,35 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ParticleChangeForTransport.icc,v 1.2 1999/12/15 14:53:55 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ParticleChangeForTransport.icc,v 1.5 2000/05/16 00:34:27 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // inline - void G4ParticleChangeForTransport::SetTouchableChange(G4VTouchable* fTouchable) + void G4ParticleChangeForTransport::SetTouchableChange(const G4VTouchable* fTouchable) { theTouchableChange = fTouchable; } inline - G4VTouchable* G4ParticleChangeForTransport::GetTouchableChange() const + const G4VTouchable* G4ParticleChangeForTransport::GetTouchableChange() const { return theTouchableChange; } +inline + void G4ParticleChangeForTransport::SetMaterialChange(G4Material* fMaterial) +{ + theMaterialChange = fMaterial; +} + +inline + G4Material* G4ParticleChangeForTransport::GetMaterialChange() const +{ + return theMaterialChange; +} + inline G4bool G4ParticleChangeForTransport::GetMomentumChanged() const { @@ -48,10 +60,10 @@ inline void G4ParticleChangeForTransport::Initialize(const G4Track& track) // InitializeSecondaries(track); // set Energy/Momentum etc. equal to those of the parent particle -// const G4DynamicParticle* pParticle = track.GetDynamicParticle(); + const G4DynamicParticle* pParticle = track.GetDynamicParticle(); // theEnergyChange = pParticle->GetKineticEnergy(); // theMomentumChange = pParticle->GetMomentumDirection(); -// thePolarizationChange = pParticle->GetPolarization(); + thePolarizationChange = pParticle->GetPolarization(); // theProperTimeChange = pParticle->GetProperTime(); // set Position/Time etc. equal to those of the parent track diff --git a/source/track/include/G4Step.hh b/source/track/include/G4Step.hh index 97f0683e13..536c51f124 100644 --- a/source/track/include/G4Step.hh +++ b/source/track/include/G4Step.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Step.hh,v 1.7 1999/12/15 14:53:55 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/track/include/G4Step.icc b/source/track/include/G4Step.icc index 3da710b45e..a8f9e527c3 100644 --- a/source/track/include/G4Step.icc +++ b/source/track/include/G4Step.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Step.icc,v 1.1 1999/10/06 01:21:48 kurasige Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Step.icc,v 1.2 2000/02/16 16:10:04 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -119,7 +119,6 @@ inline inline void G4Step::CopyPostToPreStepPoint( ) { - // Default equal operator is used for copy *(fpPreStepPoint) = *(fpPostStepPoint); } @@ -164,6 +163,7 @@ inline fpPreStepPoint->SetMomentumDirection(fpTrack->GetMomentumDirection()); fpPreStepPoint->SetKineticEnergy(fpTrack->GetKineticEnergy()); fpPreStepPoint->SetTouchable(fpTrack->GetTouchable()); + fpPreStepPoint->SetMaterial( fpTrack->GetTouchable()->GetVolume()->GetLogicalVolume()->GetMaterial()); fpPreStepPoint->SetPolarization(fpTrack->GetPolarization()); fpPreStepPoint->SetSafety(0.); fpPreStepPoint->SetStepStatus(fUndefined); @@ -171,6 +171,7 @@ inline fpPreStepPoint->SetMass(fpTrack->GetDynamicParticle()->GetMass()); fpPreStepPoint->SetWeight(fpTrack->GetWeight()); + (*fpPostStepPoint) = (*fpPreStepPoint); } diff --git a/source/track/include/G4StepPoint.hh b/source/track/include/G4StepPoint.hh index cef0c91497..e12ca9dd78 100644 --- a/source/track/include/G4StepPoint.hh +++ b/source/track/include/G4StepPoint.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4StepPoint.hh,v 1.4 1999/11/07 16:32:02 kurasige Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4StepPoint.hh,v 1.6 2000/06/01 02:28:57 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -24,6 +24,7 @@ // Takashi Sasaki (e-mail: Takashi.Sasaki@kek.jp) // // --------------------------------------------------------------- +// Added fpMaterial 16 FEb. 2000 H.Kurahige #ifndef G4StepPoint_h #define G4StepPoint_h 1 @@ -50,90 +51,51 @@ class G4StepPoint // Constructor/Destructor G4StepPoint(); - ~G4StepPoint(); + + ~G4StepPoint(){}; //-------- - public: // with description + + public: // with description // Get/Set functions - inline const G4ThreeVector& GetPosition() const - { return fPosition; } - inline void SetPosition(const G4ThreeVector& aValue) - { fPosition = aValue; } - inline void AddPosition(const G4ThreeVector& aValue) - { fPosition += aValue; } - // Position where the track locates - - inline G4double GetLocalTime() const - { return fLocalTime; } - inline void SetLocalTime(const G4double aValue) - { fLocalTime = aValue; } - inline void AddLocalTime(const G4double aValue) - { fLocalTime += aValue; } + const G4ThreeVector& GetPosition() const; + void SetPosition(const G4ThreeVector& aValue); + void AddPosition(const G4ThreeVector& aValue); + + G4double GetLocalTime() const; + void SetLocalTime(const G4double aValue); + void AddLocalTime(const G4double aValue); // Time since the track is created. - inline G4double GetGlobalTime() const - { return fGlobalTime; } - inline void SetGlobalTime(const G4double aValue) - { fGlobalTime = aValue; } - inline void AddGlobalTime(const G4double aValue) - { fGlobalTime += aValue; } + G4double GetGlobalTime() const; + void SetGlobalTime(const G4double aValue); + void AddGlobalTime(const G4double aValue); // Time since the event in which the track belongs is created. - inline G4double GetProperTime() const - { return fProperTime; } - inline void SetProperTime(const G4double aValue) - { fProperTime = aValue; } - inline void AddProperTime(const G4double aValue) - { fProperTime += aValue; } + G4double GetProperTime() const; + void SetProperTime(const G4double aValue); + void AddProperTime(const G4double aValue); // Proper time of the particle. - inline const G4ThreeVector& GetMomentumDirection() const - { return fMomentumDirection; } - inline void SetMomentumDirection(const G4ThreeVector& aValue) - { fMomentumDirection = aValue; - } - inline void AddMomentumDirection(const G4ThreeVector& aValue) - { fMomentumDirection += aValue; - } + const G4ThreeVector& GetMomentumDirection() const; + void SetMomentumDirection(const G4ThreeVector& aValue); + void AddMomentumDirection(const G4ThreeVector& aValue); // Direction of momentum (should be an unit vector) - inline G4ThreeVector GetMomentum() const - { - G4double tMomentum = sqrt(fKineticEnergy*fKineticEnergy + - 2*fKineticEnergy*fMass); - return G4ThreeVector(fMomentumDirection.x()*tMomentum, - fMomentumDirection.y()*tMomentum, - fMomentumDirection.z()*tMomentum); - } - // Total momentum of the track + G4ThreeVector GetMomentum() const; + // Total momentum of the track - inline G4double GetTotalEnergy() const - { - return fKineticEnergy + fMass; - } + + G4double GetTotalEnergy() const; // Total energy of the track - inline G4double GetKineticEnergy() const - { return fKineticEnergy; } - inline void SetKineticEnergy(const G4double aValue) - { fKineticEnergy = aValue; } - inline void AddKineticEnergy(const G4double aValue) - { fKineticEnergy += aValue; } + G4double GetKineticEnergy() const; + void SetKineticEnergy(const G4double aValue); + void AddKineticEnergy(const G4double aValue); // Kinetic Energy of the track - inline G4double GetVelocity() const - { - if(fMass==0.){ - return c_light; - } - else{ - G4double tMomentum = sqrt(fKineticEnergy*fKineticEnergy + - 2.0*fKineticEnergy*fMass); - G4double tTotalEnergy = fKineticEnergy + fMass; - return tMomentum/tTotalEnergy*c_light; - } - } + G4double GetVelocity() const; // This velocity is the velocity as if in vacuum. // (So it is not corrected for the refraction index // in the case of photons - optical or X-rays.) @@ -141,68 +103,51 @@ class G4StepPoint // GetVelocity of G4Track. // - inline G4double GetBeta() const - { return (fMass==0.) ? - 1.0 : - sqrt(fKineticEnergy*fKineticEnergy + 2.0*fKineticEnergy*fMass) - /(fKineticEnergy+fMass); } + G4double GetBeta() const; // Velocity of the track in unit of c(light velocity) - inline G4double GetGamma() const - { return (fMass==0.) ? DBL_MAX : (fKineticEnergy+fMass)/fMass; } + G4double GetGamma() const; // Gamma factor (1/sqrt[1-beta*beta]) of the track - inline G4VPhysicalVolume* GetPhysicalVolume() - { return fpTouchable->GetVolume(); } + G4VPhysicalVolume* GetPhysicalVolume() const; - inline G4VTouchable* GetTouchable() const - { return fpTouchable; } - inline void SetTouchable(G4VTouchable* apValue) - { fpTouchable = apValue; } + const G4VTouchable* GetTouchable() const; + void SetTouchable(const G4VTouchable* apValue); - inline G4double GetSafety() const - { return fSafety; } - inline void SetSafety(const G4double aValue) - { fSafety = aValue; } + G4Material* GetMaterial() const; + void SetMaterial(G4Material*); - inline const G4ThreeVector& GetPolarization() const - { return fPolarization; } - inline void SetPolarization(const G4ThreeVector& aValue) - { fPolarization = aValue; } - inline void AddPolarization(const G4ThreeVector& aValue) - { fPolarization += aValue; } + G4double GetSafety() const; + void SetSafety(const G4double aValue); - inline G4StepStatus GetStepStatus() const - { return fStepStatus; } - inline void SetStepStatus(const G4StepStatus aValue) - { fStepStatus = aValue; } + const G4ThreeVector& GetPolarization() const; + void SetPolarization(const G4ThreeVector& aValue); + void AddPolarization(const G4ThreeVector& aValue); - inline const G4VProcess* GetProcessDefinedStep() const - { return fpProcessDefinedStep; } + G4StepStatus GetStepStatus() const; + void SetStepStatus(const G4StepStatus aValue); + + const G4VProcess* GetProcessDefinedStep() const; // If the pointer is 0, this means the Step is defined // by the user defined limit in the current volume. - inline void SetProcessDefinedStep(G4VProcess* aValue) - { fpProcessDefinedStep = aValue; } + void SetProcessDefinedStep(G4VProcess* aValue); - inline G4double GetMass() const - { return fMass; } - inline void SetMass(G4double value) - { fMass = value; } + + G4double GetMass() const; + void SetMass(G4double value); - inline G4double GetCharge() const - { return fCharge; } - inline void SetCharge(G4double value) - { fCharge = value; } + G4double GetCharge() const; + void SetCharge(G4double value); - inline G4Material* GetMaterial() - { return fpTouchable->GetVolume()->GetLogicalVolume()->GetMaterial(); } - - inline void SetWeight(G4double aValue) - { fWeight = aValue; } - inline G4double GetWeight() const - { return fWeight; } + void SetWeight(G4double aValue); + G4double GetWeight() const; + public: + // copy constructor and assignment operaor as protected + G4StepPoint(const G4StepPoint &right); + G4StepPoint & operator=(const G4StepPoint &right); + //--------- private: @@ -218,7 +163,9 @@ class G4StepPoint // Time since track is created (in rest frame of particle) G4ThreeVector fMomentumDirection; G4double fKineticEnergy; - G4VTouchable* fpTouchable; + const G4VTouchable* fpTouchable; + G4Material* fpMaterial; + // Material of the volmue G4double fSafety; G4ThreeVector fPolarization; G4StepStatus fStepStatus; @@ -230,8 +177,9 @@ class G4StepPoint G4double fCharge; // Dynamical Charge of the particle G4double fWeight; + // Track Weight }; - +#include "G4StepPoint.icc" #endif diff --git a/source/track/include/G4StepPoint.icc b/source/track/include/G4StepPoint.icc new file mode 100644 index 0000000000..79d269182b --- /dev/null +++ b/source/track/include/G4StepPoint.icc @@ -0,0 +1,158 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4StepPoint.icc,v 1.2 2000/06/01 02:28:57 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// + inline const G4ThreeVector& G4StepPoint::GetPosition() const + { return fPosition; } + inline void G4StepPoint::SetPosition(const G4ThreeVector& aValue) + { fPosition = aValue; } + inline void G4StepPoint::AddPosition(const G4ThreeVector& aValue) + { fPosition += aValue; } + // Position where the track locates + + inline G4double G4StepPoint::GetLocalTime() const + { return fLocalTime; } + inline void G4StepPoint::SetLocalTime(const G4double aValue) + { fLocalTime = aValue; } + inline void G4StepPoint::AddLocalTime(const G4double aValue) + { fLocalTime += aValue; } + // Time since the track is created. + + inline G4double G4StepPoint::GetGlobalTime() const + { return fGlobalTime; } + inline void G4StepPoint::SetGlobalTime(const G4double aValue) + { fGlobalTime = aValue; } + inline void G4StepPoint::AddGlobalTime(const G4double aValue) + { fGlobalTime += aValue; } + // Time since the event in which the track belongs is created. + + inline G4double G4StepPoint::GetProperTime() const + { return fProperTime; } + inline void G4StepPoint::SetProperTime(const G4double aValue) + { fProperTime = aValue; } + inline void G4StepPoint::AddProperTime(const G4double aValue) + { fProperTime += aValue; } + // Proper time of the particle. + + inline const G4ThreeVector& G4StepPoint::GetMomentumDirection() const + { return fMomentumDirection; } + inline void G4StepPoint::SetMomentumDirection(const G4ThreeVector& aValue) + { fMomentumDirection = aValue; + } + inline void G4StepPoint::AddMomentumDirection(const G4ThreeVector& aValue) + { fMomentumDirection += aValue; + } + // Direction of momentum (should be an unit vector) + + inline G4ThreeVector G4StepPoint::GetMomentum() const + { + G4double tMomentum = sqrt(fKineticEnergy*fKineticEnergy + + 2*fKineticEnergy*fMass); + return G4ThreeVector(fMomentumDirection.x()*tMomentum, + fMomentumDirection.y()*tMomentum, + fMomentumDirection.z()*tMomentum); + } + // Total momentum of the track + + inline G4double G4StepPoint::GetTotalEnergy() const + { + return fKineticEnergy + fMass; + } + // Total energy of the track + + inline G4double G4StepPoint::GetKineticEnergy() const + { return fKineticEnergy; } + inline void G4StepPoint::SetKineticEnergy(const G4double aValue) + { fKineticEnergy = aValue; } + inline void G4StepPoint::AddKineticEnergy(const G4double aValue) + { fKineticEnergy += aValue; } + // Kinetic Energy of the track + + inline G4double G4StepPoint::GetVelocity() const + { + if(fMass==0.){ + return c_light; + } + else{ + G4double tMomentum = sqrt(fKineticEnergy*fKineticEnergy + + 2.0*fKineticEnergy*fMass); + G4double tTotalEnergy = fKineticEnergy + fMass; + return tMomentum/tTotalEnergy*c_light; + } + } + // This velocity is the velocity as if in vacuum. + // (So it is not corrected for the refraction index + // in the case of photons - optical or X-rays.) + // In order to get the velocity in the material, use + // GetVelocity of G4Track. + // + + inline G4double G4StepPoint::GetBeta() const + { return (fMass==0.) ? + 1.0 : + sqrt(fKineticEnergy*fKineticEnergy + 2.0*fKineticEnergy*fMass) + /(fKineticEnergy+fMass); } + // Velocity of the track in unit of c(light velocity) + + inline G4double G4StepPoint::GetGamma() const + { return (fMass==0.) ? DBL_MAX : (fKineticEnergy+fMass)/fMass; } + // Gamma factor (1/sqrt[1-beta*beta]) of the track + + inline G4VPhysicalVolume* G4StepPoint::GetPhysicalVolume() const + { return fpTouchable->GetVolume(); } + + inline const G4VTouchable* G4StepPoint::GetTouchable() const + { return fpTouchable; } + inline void G4StepPoint::SetTouchable(const G4VTouchable* apValue) + { fpTouchable = apValue; } + + inline G4double G4StepPoint::GetSafety() const + { return fSafety; } + inline void G4StepPoint::SetSafety(const G4double aValue) + { fSafety = aValue; } + + inline const G4ThreeVector& G4StepPoint::GetPolarization() const + { return fPolarization; } + inline void G4StepPoint::SetPolarization(const G4ThreeVector& aValue) + { fPolarization = aValue; } + inline void G4StepPoint::AddPolarization(const G4ThreeVector& aValue) + { fPolarization += aValue; } + + inline G4StepStatus G4StepPoint::GetStepStatus() const + { return fStepStatus; } + inline void G4StepPoint::SetStepStatus(const G4StepStatus aValue) + { fStepStatus = aValue; } + + inline const G4VProcess* G4StepPoint::GetProcessDefinedStep() const + { return fpProcessDefinedStep; } + // If the pointer is 0, this means the Step is defined + // by the user defined limit in the current volume. + inline void G4StepPoint::SetProcessDefinedStep(G4VProcess* aValue) + { fpProcessDefinedStep = aValue; } + + inline G4double G4StepPoint::GetMass() const + { return fMass; } + inline void G4StepPoint::SetMass(G4double value) + { fMass = value; } + + inline G4double G4StepPoint::GetCharge() const + { return fCharge; } + inline void G4StepPoint::SetCharge(G4double value) + { fCharge = value; } + + inline G4Material* G4StepPoint::GetMaterial() const + { return fpMaterial; } + inline void G4StepPoint::SetMaterial(G4Material* material) + {fpMaterial = material; } + + inline void G4StepPoint::SetWeight(G4double aValue) + { fWeight = aValue; } + inline G4double G4StepPoint::GetWeight() const + { return fWeight; } diff --git a/source/track/include/G4StepStatus.hh b/source/track/include/G4StepStatus.hh index 6673b5b363..4396eb7b7e 100644 --- a/source/track/include/G4StepStatus.hh +++ b/source/track/include/G4StepStatus.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4StepStatus.hh,v 1.2 1999/11/07 16:32:02 kurasige Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/track/include/G4SteppingControl.hh b/source/track/include/G4SteppingControl.hh index c298e09312..394ae17be0 100644 --- a/source/track/include/G4SteppingControl.hh +++ b/source/track/include/G4SteppingControl.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4SteppingControl.hh,v 1.2 1999/11/07 16:32:03 kurasige Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/track/include/G4Track.hh b/source/track/include/G4Track.hh index d8ba601921..4d0a9487ca 100644 --- a/source/track/include/G4Track.hh +++ b/source/track/include/G4Track.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Track.hh,v 1.5 1999/11/07 16:32:03 kurasige Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Track.hh,v 1.8 2000/06/02 10:16:38 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -39,6 +39,7 @@ #include "G4DynamicParticle.hh" // Include from 'particle+matter' #include "G4TrackStatus.hh" // Include from 'tracking' #include "G4VTouchable.hh" // Include from 'geometry' +#include "G4VUserTrackInformation.hh" #include "G4Material.hh" @@ -115,11 +116,11 @@ public: // With description G4Material* GetMaterial() const; G4Material* GetNextMaterial() const; - G4VTouchable* GetTouchable() const; - void SetTouchable(G4VTouchable* apValue); + const G4VTouchable* GetTouchable() const; + void SetTouchable(const G4VTouchable* apValue); - G4VTouchable* GetNextTouchable() const; - void SetNextTouchable(G4VTouchable* apValue); + const G4VTouchable* GetNextTouchable() const; + void SetNextTouchable(const G4VTouchable* apValue); // energy G4double GetKineticEnergy() const; @@ -163,8 +164,8 @@ public: // With description // Accumulated the track length // step information - G4Step* GetStep() const; - void SetStep(G4Step* aValue); + const G4Step* GetStep() const; + void SetStep(const G4Step* aValue); G4int GetCurrentStepNumber() const; void IncrementCurrentStepNumber(); @@ -200,6 +201,10 @@ public: // With description G4double GetWeight() const; void SetWeight(G4double aValue); + // User information + G4VUserTrackInformation* GetUserInformation() const; + void SetUserInformation(G4VUserTrackInformation* aValue); + //--------- private: //--------- @@ -213,8 +218,8 @@ public: // With description G4int fParentID; G4int fTrackID; - G4VTouchable* fpTouchable; - G4VTouchable* fpNextTouchable; + const G4VTouchable* fpTouchable; + const G4VTouchable* fpNextTouchable; G4DynamicParticle* fpDynamicParticle; G4TrackStatus fTrackStatus; @@ -237,7 +242,7 @@ public: // With description // to execute inclusive simulation for hadronic/electomagnetic shower // and neutron transportation etc. - G4Step* fpStep; + const G4Step* fpStep; G4ThreeVector fVtxPosition; // (x,y,z) of the vertex G4ThreeVector fVtxMomentumDirection; // Momentum direction at the vertex @@ -245,7 +250,9 @@ public: // With description G4LogicalVolume* fpLVAtVertex; //Logical Volume at the vertex G4VProcess* fpCreatorProcess; // Process which created the track + G4VUserTrackInformation* fpUserInformation; }; +#include "G4Step.hh" #include "G4Track.icc" #endif diff --git a/source/track/include/G4Track.icc b/source/track/include/G4Track.icc index 1079f3e0a2..fe1ac9a54c 100644 --- a/source/track/include/G4Track.icc +++ b/source/track/include/G4Track.icc @@ -5,13 +5,14 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Track.icc,v 1.1 1999/10/06 01:21:50 kurasige Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Track.icc,v 1.5 2000/06/02 10:16:38 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // //----------------------------------------------------------------- // Definitions of inline functions //----------------------------------------------------------------- - +// change GetMaterial 16 Feb. 2000 H.Kurashige + // Operators extern G4Allocator aTrackAllocator; inline void* G4Track::operator new(size_t) @@ -93,22 +94,23 @@ // material inline G4Material* G4Track::GetMaterial() const - { return fpTouchable->GetVolume()->GetLogicalVolume()->GetMaterial(); } + { return fpStep->GetPreStepPoint()->GetMaterial(); } inline G4Material* G4Track::GetNextMaterial() const - { return fpNextTouchable->GetVolume()->GetLogicalVolume()->GetMaterial(); } + { return fpStep->GetPostStepPoint()->GetMaterial(); } + // touchable - inline G4VTouchable* G4Track::GetTouchable() const + inline const G4VTouchable* G4Track::GetTouchable() const { return fpTouchable; } - inline void G4Track::SetTouchable(G4VTouchable* apValue) + inline void G4Track::SetTouchable(const G4VTouchable* apValue) { fpTouchable = apValue; } - inline G4VTouchable* G4Track::GetNextTouchable() const + inline const G4VTouchable* G4Track::GetNextTouchable() const { return fpNextTouchable; } - inline void G4Track::SetNextTouchable(G4VTouchable* apValue) + inline void G4Track::SetNextTouchable(const G4VTouchable* apValue) { fpNextTouchable = apValue; } // kinetic energy @@ -225,7 +227,11 @@ inline G4double G4Track::GetWeight() const { return fWeight; } - +// user information + inline G4VUserTrackInformation* G4Track::GetUserInformation() const + { return fpUserInformation; } + inline void G4Track::SetUserInformation(G4VUserTrackInformation* aValue) + { fpUserInformation = aValue; } @@ -236,11 +242,11 @@ //------------------------------------------------------------- #include "G4Step.hh" - inline G4Step* G4Track::GetStep() const + inline const G4Step* G4Track::GetStep() const { return fpStep; } - inline void G4Track::SetStep(G4Step* aValue) - { fpStep = aValue; } + inline void G4Track::SetStep(const G4Step* aValue) + { fpStep = (aValue); } diff --git a/source/track/include/G4TrackFastVector.hh b/source/track/include/G4TrackFastVector.hh index 5929d4ee6d..0251659cdd 100644 --- a/source/track/include/G4TrackFastVector.hh +++ b/source/track/include/G4TrackFastVector.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4TrackFastVector.hh,v 1.3 1999/11/07 16:32:04 kurasige Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/track/include/G4TrackStatus.hh b/source/track/include/G4TrackStatus.hh index abd001e23d..6e29318e51 100644 --- a/source/track/include/G4TrackStatus.hh +++ b/source/track/include/G4TrackStatus.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4TrackStatus.hh,v 1.2 1999/11/07 16:32:04 kurasige Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/track/include/G4VEvtBiasMechanism.hh b/source/track/include/G4VEvtBiasMechanism.hh index 18f6c2c383..d9fdb67ec7 100644 --- a/source/track/include/G4VEvtBiasMechanism.hh +++ b/source/track/include/G4VEvtBiasMechanism.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VEvtBiasMechanism.hh,v 1.3 1999/11/07 16:32:05 kurasige Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/track/include/G4VParticleChange.hh b/source/track/include/G4VParticleChange.hh index 89684aec6f..41cca819c3 100644 --- a/source/track/include/G4VParticleChange.hh +++ b/source/track/include/G4VParticleChange.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VParticleChange.hh,v 1.4 1999/11/07 16:32:05 kurasige Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/track/include/G4VParticleChange.icc b/source/track/include/G4VParticleChange.icc index c3e0a6c460..688eaafee1 100644 --- a/source/track/include/G4VParticleChange.icc +++ b/source/track/include/G4VParticleChange.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VParticleChange.icc,v 1.4 2000/01/18 02:54:12 kurasige Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VParticleChange.icc,v 1.5 2000/02/13 15:08:20 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // //---------------------------------------------------------------- // Virtual methods for updating G4Step @@ -203,8 +203,8 @@ inline void G4VParticleChange::InitializeSecondaries(const G4Track&) inline void G4VParticleChange::AddSecondary(G4Track *aTrack) { - // pass the weight of parent track if the weight is larger than parent weight - if (aTrack->GetWeight()>theParentWeight) aTrack->SetWeight(theParentWeight); + // pass the weight of parent track + aTrack->SetWeight(theParentWeight); // add a secondary after size check if (theSizeOftheListOfSecondaries > theNumberOfSecondaries) { diff --git a/source/track/include/G4VUserTrackInformation.hh b/source/track/include/G4VUserTrackInformation.hh new file mode 100644 index 0000000000..17beb3c5ac --- /dev/null +++ b/source/track/include/G4VUserTrackInformation.hh @@ -0,0 +1,51 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4VUserTrackInformation.hh,v 1.2 2000/06/02 09:09:47 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +//--------------------------------------------------------------- +// +// G4VUserTrackInformation +// +// Class Description: +// +// Abstract class which the user can derive his/her own concrete +// class for toring user's information associating with a G4Track +// class object. +// +// It is user's responsibility that +// 1) Concrete class derived from this class MUST use G4Allocator +// for memory management +// 2) Construct a concrete class object and set the pointer to +// proper G4Track object +// +// To set a pointer of a concrete class object to G4Track in +// G4UserTrackingAction concrete implementation, given the G4Track +// object is available only by "pointer to const", SetUserTrackInformation() +// method of G4TrackingManager is available. +// +// The concrete class object is deleted by Geant4 kernel when +// associated G4Track object is deleted. + + +#ifndef G4VUserTrackInformation_H +#define G4VUserTrackInformation_H 1 + +class G4VUserTrackInformation +{ + public: + G4VUserTrackInformation() {;} + virtual ~G4VUserTrackInformation() {;} + + public: + virtual void Print() const = 0; +}; + +#endif + diff --git a/source/track/src/G4EvtBiasMechanism.cc b/source/track/src/G4EvtBiasMechanism.cc index f907561428..fc49cf0b17 100644 --- a/source/track/src/G4EvtBiasMechanism.cc +++ b/source/track/src/G4EvtBiasMechanism.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4EvtBiasMechanism.cc,v 1.3 1999/12/15 14:53:55 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/track/src/G4Mars5GeVMechanism.cc b/source/track/src/G4Mars5GeVMechanism.cc index 5607adb5df..c78bc5fa20 100644 --- a/source/track/src/G4Mars5GeVMechanism.cc +++ b/source/track/src/G4Mars5GeVMechanism.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Mars5GeVMechanism.cc,v 1.4 1999/12/15 14:53:55 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // ------------------------------------------------------------ diff --git a/source/track/src/G4ParticleChange.cc b/source/track/src/G4ParticleChange.cc index f90eeabc05..1c6742a39c 100644 --- a/source/track/src/G4ParticleChange.cc +++ b/source/track/src/G4ParticleChange.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ParticleChange.cc,v 1.9 2000/01/18 02:54:14 kurasige Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ParticleChange.cc,v 1.10 2000/02/13 15:08:27 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- @@ -471,7 +471,6 @@ G4bool G4ParticleChange::CheckIt(const G4Track& aTrack) // dump out information of this particle change if (!itsOK) { G4cout << " G4ParticleChange::CheckIt " <AddPolarization( thePolarizationChange - // - pPreStepPoint->GetPolarization()); + pPostStepPoint->AddPolarization( thePolarizationChange + - pPreStepPoint->GetPolarization()); // update position and time pPostStepPoint->AddPosition( thePositionChange @@ -176,6 +177,8 @@ G4Step* G4ParticleChangeForTransport::UpdateStepForPostStep(G4Step* pStep) // (touchable can be changed only at PostStepDoIt) pPostStepPoint->SetTouchable( theTouchableChange ); + pPostStepPoint->SetMaterial( theMaterialChange ); + // It used to call base class's method // - but this would copy uninitialised data members // return G4ParticleChange::UpdateStepForPostStep(pStep); diff --git a/source/track/src/G4Step.cc b/source/track/src/G4Step.cc index 3a28fa68bc..c22523b2a5 100644 --- a/source/track/src/G4Step.cc +++ b/source/track/src/G4Step.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Step.cc,v 1.4 1999/12/15 14:53:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/track/src/G4StepPoint.cc b/source/track/src/G4StepPoint.cc index 01401eb38e..d5de649dfd 100644 --- a/source/track/src/G4StepPoint.cc +++ b/source/track/src/G4StepPoint.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4StepPoint.cc,v 1.2 1999/12/15 14:53:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4StepPoint.cc,v 1.3 2000/02/16 16:10:06 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -28,20 +28,58 @@ #include "G4StepPoint.hh" ////////////////////////// -G4StepPoint::G4StepPoint() +G4StepPoint::G4StepPoint(): +////////////////////////// + fpTouchable(0),fpMaterial(0),fpProcessDefinedStep(0) +{ + +} + +////////////////////////// +G4StepPoint::G4StepPoint(const G4StepPoint &right): +////////////////////////// + fPosition(right.fPosition), + fGlobalTime(right.fGlobalTime), + fLocalTime(right.fLocalTime), + fProperTime(right.fProperTime), + fMomentumDirection(right.fMomentumDirection), + fKineticEnergy(right.fKineticEnergy), + fpTouchable(right.fpTouchable), + fpMaterial(right.fpMaterial), + fSafety(right.fSafety), + fPolarization(right.fPolarization), + fStepStatus(right.fStepStatus), + fpProcessDefinedStep(right.fpProcessDefinedStep), + fMass(right.fMass), + fCharge(right.fCharge), + fWeight(right.fWeight) +{} + + +////////////////////////// +G4StepPoint & G4StepPoint::operator=(const G4StepPoint &right) ////////////////////////// { - -} - -/////////////////////////// -G4StepPoint::~G4StepPoint() -/////////////////////////// -{ - + if (this != &right) { + fPosition = right.fPosition; + fGlobalTime = right.fGlobalTime; + fLocalTime = right.fLocalTime; + fProperTime = right.fProperTime; + fMomentumDirection = right.fMomentumDirection; + fKineticEnergy = right.fKineticEnergy; + fpTouchable = right.fpTouchable; + fpMaterial = right.fpMaterial; + fSafety = right.fSafety; + fPolarization = right.fPolarization; + fStepStatus = right.fStepStatus; + fpProcessDefinedStep = right.fpProcessDefinedStep; + fMass = right.fMass; + fCharge = right.fCharge; + fWeight = right.fWeight; + } + return *this; } - diff --git a/source/track/src/G4Track.cc b/source/track/src/G4Track.cc index fb508e58ca..2e8366a69c 100644 --- a/source/track/src/G4Track.cc +++ b/source/track/src/G4Track.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Track.cc,v 1.3 1999/12/15 14:53:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Track.cc,v 1.4 2000/06/02 05:36:53 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -47,6 +47,8 @@ G4Track::G4Track(G4DynamicParticle* apValueDynamicParticle, fBelowThreshold = false; fGoodForTracking = false; fWeight = 1.0; + + fpUserInformation = 0; } ////////////////// @@ -70,6 +72,8 @@ G4Track::G4Track() fBelowThreshold = false; fGoodForTracking = false; fWeight = 1.0; + + fpUserInformation = 0; } /////////////////// @@ -77,6 +81,7 @@ G4Track::~G4Track() /////////////////// { delete fpDynamicParticle; + delete fpUserInformation; } /////////////////// diff --git a/source/track/src/G4VEvtBiasMechanism.cc b/source/track/src/G4VEvtBiasMechanism.cc index a2e7f3f14f..9b407df95b 100644 --- a/source/track/src/G4VEvtBiasMechanism.cc +++ b/source/track/src/G4VEvtBiasMechanism.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VEvtBiasMechanism.cc,v 1.2 1999/12/15 14:53:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- diff --git a/source/track/src/G4VParticleChange.cc b/source/track/src/G4VParticleChange.cc index bad915791f..9da18b78c8 100644 --- a/source/track/src/G4VParticleChange.cc +++ b/source/track/src/G4VParticleChange.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VParticleChange.cc,v 1.4 1999/12/15 14:53:56 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VParticleChange.cc,v 1.5 2000/02/13 15:08:28 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // -------------------------------------------------------------- @@ -240,7 +240,6 @@ G4bool G4VParticleChange::CheckIt(const G4Track& aTrack) // dump out information of this particle change if (! itsOK ){ G4cout << " G4VParticleChange::CheckIt " <SetUserInformation(aValue); + } #endif diff --git a/source/tracking/include/G4TrackingMessenger.hh b/source/tracking/include/G4TrackingMessenger.hh index 4d37b86f5b..9b08012984 100644 --- a/source/tracking/include/G4TrackingMessenger.hh +++ b/source/tracking/include/G4TrackingMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4TrackingMessenger.hh,v 1.5 1999/12/15 14:53:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/tracking/include/G4Trajectory.hh b/source/tracking/include/G4Trajectory.hh index 59fd43db10..d7b32ebe85 100644 --- a/source/tracking/include/G4Trajectory.hh +++ b/source/tracking/include/G4Trajectory.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Trajectory.hh,v 1.9 2000/01/26 04:20:31 asaim Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/tracking/include/G4TrajectoryPoint.hh b/source/tracking/include/G4TrajectoryPoint.hh index d85097e2cc..204e14d1c9 100644 --- a/source/tracking/include/G4TrajectoryPoint.hh +++ b/source/tracking/include/G4TrajectoryPoint.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4TrajectoryPoint.hh,v 1.5 1999/12/15 14:53:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/tracking/include/G4UserSteppingAction.hh b/source/tracking/include/G4UserSteppingAction.hh index adf9480680..404e44a8d9 100644 --- a/source/tracking/include/G4UserSteppingAction.hh +++ b/source/tracking/include/G4UserSteppingAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UserSteppingAction.hh,v 1.5 1999/12/15 14:53:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/tracking/include/G4UserTrackingAction.hh b/source/tracking/include/G4UserTrackingAction.hh index 1687b322f0..098bbc8c16 100644 --- a/source/tracking/include/G4UserTrackingAction.hh +++ b/source/tracking/include/G4UserTrackingAction.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UserTrackingAction.hh,v 1.5 1999/12/15 14:53:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/tracking/include/G4VSteppingVerbose.hh b/source/tracking/include/G4VSteppingVerbose.hh index 53405608a8..e9f7817cbd 100644 --- a/source/tracking/include/G4VSteppingVerbose.hh +++ b/source/tracking/include/G4VSteppingVerbose.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VSteppingVerbose.hh,v 1.4 1999/12/15 14:53:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VSteppingVerbose.hh,v 1.5 2000/06/01 03:17:39 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -159,8 +159,8 @@ protected: G4double fPreviousStepSize; - G4VTouchable* fTouchable1; - G4VTouchable* fTouchable2; + const G4VTouchable* fTouchable1; + const G4VTouchable* fTouchable2; G4bool fIsTouchable1Free; G4bool fIsTouchable2Free; diff --git a/source/tracking/include/G4VTrajectory.hh b/source/tracking/include/G4VTrajectory.hh index 7f5806fac4..1f87f16758 100644 --- a/source/tracking/include/G4VTrajectory.hh +++ b/source/tracking/include/G4VTrajectory.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VTrajectory.hh,v 1.4 2000/01/26 04:20:31 asaim Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/tracking/include/G4VTrajectoryPoint.hh b/source/tracking/include/G4VTrajectoryPoint.hh index 319d43da77..fa2fc430e9 100644 --- a/source/tracking/include/G4VTrajectoryPoint.hh +++ b/source/tracking/include/G4VTrajectoryPoint.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VTrajectoryPoint.hh,v 1.3 1999/12/15 14:53:57 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4VTrajectoryPoint_h diff --git a/source/tracking/src/G4SteppingManager.cc b/source/tracking/src/G4SteppingManager.cc index 63ff7e873f..872cfe6330 100644 --- a/source/tracking/src/G4SteppingManager.cc +++ b/source/tracking/src/G4SteppingManager.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4SteppingManager.cc,v 1.8 1999/12/15 14:53:58 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4SteppingManager.cc,v 1.10 2000/06/02 09:53:29 kurasige Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -82,8 +82,8 @@ G4SteppingManager::~G4SteppingManager() delete fSelectedAtRestDoItVector; delete fSelectedAlongStepDoItVector; delete fSelectedPostStepDoItVector; - delete fTouchable1; - delete fTouchable2; + delete (G4VTouchable*)(fTouchable1); + delete (G4VTouchable*)(fTouchable2); if (fUserSteppingAction) delete fUserSteppingAction; #ifdef G4VERBOSE if(KillVerbose) delete fVerbose; @@ -252,7 +252,7 @@ void G4SteppingManager::SetInitialStep(G4Track* valueTrack) // Initialize VTouchable using the point in the global coordinate // system. - G4VTouchable* pTouchableFree = GetFreeTouchable(); + G4VTouchable* pTouchableFree = (G4VTouchable*)(GetFreeTouchable()); fNavigator->LocateGlobalPointAndUpdateTouchable( fTrack->GetPosition(), pTouchableFree, diff --git a/source/tracking/src/G4SteppingVerbose.cc b/source/tracking/src/G4SteppingVerbose.cc index 626e86f932..256f7c21e2 100644 --- a/source/tracking/src/G4SteppingVerbose.cc +++ b/source/tracking/src/G4SteppingVerbose.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4SteppingVerbose.cc,v 1.6 1999/12/15 14:53:58 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/tracking/src/G4TrackingManager.cc b/source/tracking/src/G4TrackingManager.cc index 876233879d..919e69f65e 100644 --- a/source/tracking/src/G4TrackingManager.cc +++ b/source/tracking/src/G4TrackingManager.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4TrackingManager.cc,v 1.5 1999/12/15 14:53:59 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/tracking/src/G4TrackingMessenger.cc b/source/tracking/src/G4TrackingMessenger.cc index 7164d5bb9e..0f76ea78cf 100644 --- a/source/tracking/src/G4TrackingMessenger.cc +++ b/source/tracking/src/G4TrackingMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4TrackingMessenger.cc,v 1.6 2000/01/23 09:51:36 tsasaki Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- diff --git a/source/tracking/src/G4Trajectory.cc b/source/tracking/src/G4Trajectory.cc index 8f9a9cb317..a7242ce283 100644 --- a/source/tracking/src/G4Trajectory.cc +++ b/source/tracking/src/G4Trajectory.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Trajectory.cc,v 1.8 2000/01/26 04:20:34 asaim Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // --------------------------------------------------------------- diff --git a/source/tracking/src/G4TrajectoryPoint.cc b/source/tracking/src/G4TrajectoryPoint.cc index 4ad7acb484..5b6cc4e024 100644 --- a/source/tracking/src/G4TrajectoryPoint.cc +++ b/source/tracking/src/G4TrajectoryPoint.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4TrajectoryPoint.cc,v 1.4 1999/12/15 14:53:59 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // --------------------------------------------------------------- diff --git a/source/tracking/src/G4UserSteppingAction.cc b/source/tracking/src/G4UserSteppingAction.cc index df05ced678..753cec2db6 100644 --- a/source/tracking/src/G4UserSteppingAction.cc +++ b/source/tracking/src/G4UserSteppingAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UserSteppingAction.cc,v 1.4 1999/12/15 14:54:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // --------------------------------------------------------------- diff --git a/source/tracking/src/G4UserTrackingAction.cc b/source/tracking/src/G4UserTrackingAction.cc index 233e3a9cc3..44640996a7 100644 --- a/source/tracking/src/G4UserTrackingAction.cc +++ b/source/tracking/src/G4UserTrackingAction.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4UserTrackingAction.cc,v 1.4 1999/12/15 14:54:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // --------------------------------------------------------------- diff --git a/source/tracking/src/G4VSteppingVerbose.cc b/source/tracking/src/G4VSteppingVerbose.cc index 4ae42f203f..177e873bd1 100644 --- a/source/tracking/src/G4VSteppingVerbose.cc +++ b/source/tracking/src/G4VSteppingVerbose.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VSteppingVerbose.cc,v 1.3 1999/12/15 14:54:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VSteppingVerbose.cc,v 1.4 2000/06/14 08:21:00 tsasaki Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // //--------------------------------------------------------------- @@ -35,7 +35,7 @@ void G4VSteppingVerbose::SetManager(G4SteppingManager* const fMan) ////////////////////////////////////////////////////////////////// { fManager=fMan; -}; +} diff --git a/source/visualization/FukuiRenderer/GNUmakefile b/source/visualization/FukuiRenderer/GNUmakefile index ea6987d893..c275c17d0d 100644 --- a/source/visualization/FukuiRenderer/GNUmakefile +++ b/source/visualization/FukuiRenderer/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.2 1999/04/15 15:27:55 johna Exp $ +# $Id: GNUmakefile,v 1.3 2000/04/07 13:32:40 gcosmo Exp $ name := G4FR @@ -17,6 +17,7 @@ CPPFLAGS += -I$(G4BASE)/graphics_reps/include CPPFLAGS += -I$(G4BASE)/intercoms/include CPPFLAGS += -I$(G4BASE)/global/HEPGeometry/include CPPFLAGS += -I$(G4BASE)/geometry/solids/CSG/include +CPPFLAGS += -I$(G4BASE)/geometry/solids/specific/include CPPFLAGS += -I$(G4BASE)/geometry/management/include CPPFLAGS += -I$(G4BASE)/geometry/volumes/include diff --git a/source/visualization/FukuiRenderer/History b/source/visualization/FukuiRenderer/History index 7d0c737a3c..bd9e5640e6 100644 --- a/source/visualization/FukuiRenderer/History +++ b/source/visualization/FukuiRenderer/History @@ -1,3 +1,18 @@ +DAWN-V01-01-04 +- Target = standard target in scene + + relative target in view + (G4DAWNFILEView.cc, G4FukuiRendererView.cc) +- Automatic filename incrementation is made default. + g4_00.prim, g4_01.prim, ... , g4_99.prim + g4_00.eps , g4_01.eps , ... , g4_99.eps + +DAWN-V01-01-03 Satoshi TANAKA May 11, 2000 +- In G4DAWNFILEViewer.cc, + < strcpy( fPSViewer, "ghostview" ); + --- + > // strcpy( fPSViewer, "ghostview" ); + > strcpy( fPSViewer, "gv" ); + DAWN-V00-01-08 - Removed implicit casting from the previous updation diff --git a/source/visualization/FukuiRenderer/include/G4DAWNFILE.hh b/source/visualization/FukuiRenderer/include/G4DAWNFILE.hh index ab4859340a..7cf917189b 100644 --- a/source/visualization/FukuiRenderer/include/G4DAWNFILE.hh +++ b/source/visualization/FukuiRenderer/include/G4DAWNFILE.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4DAWNFILE.hh,v 1.5 1999/12/15 14:54:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // Satoshi TANAKA // DAWNFILE driver factory. diff --git a/source/visualization/FukuiRenderer/include/G4DAWNFILESceneHandler.hh b/source/visualization/FukuiRenderer/include/G4DAWNFILESceneHandler.hh index ffe475014a..71eeefce53 100644 --- a/source/visualization/FukuiRenderer/include/G4DAWNFILESceneHandler.hh +++ b/source/visualization/FukuiRenderer/include/G4DAWNFILESceneHandler.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4DAWNFILESceneHandler.hh,v 1.5 1999/12/16 17:24:48 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // Satoshi TANAKA diff --git a/source/visualization/FukuiRenderer/include/G4DAWNFILEViewer.hh b/source/visualization/FukuiRenderer/include/G4DAWNFILEViewer.hh index bf5a4cee6a..42a0bbf24d 100644 --- a/source/visualization/FukuiRenderer/include/G4DAWNFILEViewer.hh +++ b/source/visualization/FukuiRenderer/include/G4DAWNFILEViewer.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4DAWNFILEViewer.hh,v 1.5 1999/12/15 14:54:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // Satoshi TANAKA // DAWNFILE viewer - opens window, hard copy, etc. diff --git a/source/visualization/FukuiRenderer/include/G4FRClientServer.hh b/source/visualization/FukuiRenderer/include/G4FRClientServer.hh index e167069350..43f9e3ae9b 100644 --- a/source/visualization/FukuiRenderer/include/G4FRClientServer.hh +++ b/source/visualization/FukuiRenderer/include/G4FRClientServer.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4FRClientServer.hh,v 1.3 1999/12/15 14:54:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4FRClientServer.hh,v 1.4 2000/02/29 09:54:38 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // Satoshi TANAKA, Wed Jul 3 14:13:52 JST 1996 //////////////////////////////// @@ -59,7 +59,7 @@ class G4FRClientServer { protected: - void Err( char* message ) { perror(message) ;} + void Err( const char* message ) { perror(message) ;} void SetSendingMessage( const char* message ) { strcpy( fSendingMessage, message );} void Send() ; // send command in fSendingMessage diff --git a/source/visualization/FukuiRenderer/include/G4FRConst.hh b/source/visualization/FukuiRenderer/include/G4FRConst.hh index 91d01d2535..b040c1cf68 100644 --- a/source/visualization/FukuiRenderer/include/G4FRConst.hh +++ b/source/visualization/FukuiRenderer/include/G4FRConst.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4FRConst.hh,v 1.4 1999/12/15 14:54:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 56852f586d..b72678bc1a 100644 --- a/source/visualization/FukuiRenderer/include/G4FRFeatures.hh +++ b/source/visualization/FukuiRenderer/include/G4FRFeatures.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4FRFeatures.hh,v 1.3 1999/12/15 14:54:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #if !defined G4_FR_FEATURES_HH #define G4_FR_FEATURES_HH diff --git a/source/visualization/FukuiRenderer/include/G4FRSocketConfig.hh b/source/visualization/FukuiRenderer/include/G4FRSocketConfig.hh index e92003f93e..6837e3d509 100644 --- a/source/visualization/FukuiRenderer/include/G4FRSocketConfig.hh +++ b/source/visualization/FukuiRenderer/include/G4FRSocketConfig.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4FRSocketConfig.hh,v 1.3 1999/12/15 14:54:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // //////////////////////////////// ///// G4FRSocketConfig.h ///// diff --git a/source/visualization/FukuiRenderer/include/G4FRSocketMacro.hh b/source/visualization/FukuiRenderer/include/G4FRSocketMacro.hh index d731de72c9..65f3311076 100644 --- a/source/visualization/FukuiRenderer/include/G4FRSocketMacro.hh +++ b/source/visualization/FukuiRenderer/include/G4FRSocketMacro.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4FRSocketMacro.hh,v 1.3 1999/12/15 14:54:00 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // /////////////////////////////// ///// G4FRSocketMacro.hh ///// diff --git a/source/visualization/FukuiRenderer/include/G4FRofstream.hh b/source/visualization/FukuiRenderer/include/G4FRofstream.hh index e259a437f3..99ad6fc94e 100644 --- a/source/visualization/FukuiRenderer/include/G4FRofstream.hh +++ b/source/visualization/FukuiRenderer/include/G4FRofstream.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4FRofstream.hh,v 1.3 1999/12/15 14:54:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include"g4std/fstream" diff --git a/source/visualization/FukuiRenderer/include/G4FukuiRenderer.hh b/source/visualization/FukuiRenderer/include/G4FukuiRenderer.hh index 36bcbcdcbe..87336846da 100644 --- a/source/visualization/FukuiRenderer/include/G4FukuiRenderer.hh +++ b/source/visualization/FukuiRenderer/include/G4FukuiRenderer.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4FukuiRenderer.hh,v 1.5 1999/12/15 14:54:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Satoshi TANAKA diff --git a/source/visualization/FukuiRenderer/include/G4FukuiRendererSceneHandler.hh b/source/visualization/FukuiRenderer/include/G4FukuiRendererSceneHandler.hh index f4c4ccf192..1106a88975 100644 --- a/source/visualization/FukuiRenderer/include/G4FukuiRendererSceneHandler.hh +++ b/source/visualization/FukuiRenderer/include/G4FukuiRendererSceneHandler.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4FukuiRendererSceneHandler.hh,v 1.5 1999/12/16 17:24:49 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Satoshi TANAKA, Fri Jun 28 11:19:19 JST 1996 diff --git a/source/visualization/FukuiRenderer/include/G4FukuiRendererViewer.hh b/source/visualization/FukuiRenderer/include/G4FukuiRendererViewer.hh index b033a8995d..8357cf8fda 100644 --- a/source/visualization/FukuiRenderer/include/G4FukuiRendererViewer.hh +++ b/source/visualization/FukuiRenderer/include/G4FukuiRendererViewer.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4FukuiRendererViewer.hh,v 1.5 1999/12/15 14:54:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 6a2790dc29..e9eb658a4d 100644 --- a/source/visualization/FukuiRenderer/src/G4DAWNFILE.cc +++ b/source/visualization/FukuiRenderer/src/G4DAWNFILE.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4DAWNFILE.cc,v 1.5 1999/12/15 14:54:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // Satoshi TANAKA // DAWNFILE factory. diff --git a/source/visualization/FukuiRenderer/src/G4DAWNFILESceneHandler.cc b/source/visualization/FukuiRenderer/src/G4DAWNFILESceneHandler.cc index b1a68bd222..cb17735e31 100644 --- a/source/visualization/FukuiRenderer/src/G4DAWNFILESceneHandler.cc +++ b/source/visualization/FukuiRenderer/src/G4DAWNFILESceneHandler.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DAWNFILESceneHandler.cc,v 1.3 1999/12/15 14:54:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DAWNFILESceneHandler.cc,v 1.5 2000/05/16 15:56:43 stanaka Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // Satoshi TANAKA // DAWNFILE scene. @@ -32,6 +32,7 @@ #include "G4DAWNFILEViewer.hh" #include "G4Point3D.hh" #include "G4VisAttributes.hh" +#include "G4Scene.hh" #include "G4Transform3D.hh" #include "G4Polyhedron.hh" #include "G4Box.hh" @@ -39,6 +40,10 @@ #include "G4Polyline.hh" #include "G4Trd.hh" #include "G4Tubs.hh" +#include "G4Trap.hh" +#include "G4Torus.hh" +#include "G4Sphere.hh" +#include "G4Para.hh" #include "G4Text.hh" #include "G4Circle.hh" #include "G4Square.hh" @@ -48,7 +53,14 @@ //----- constants const char FR_ENV_CULL_INVISIBLE_OBJECTS [] = "G4DAWN_CULL_INVISIBLE_OBJECTS"; const char G4PRIM_FILE_HEADER [] = "g4_"; -const char DEFAULT_G4PRIM_FILE_NAME[] = "g4.prim"; +const char DEFAULT_G4PRIM_FILE_NAME[] = "g4_00.prim"; + +// const int FR_MAX_FILE_NUM = 1 ; +// const int FR_MAX_FILE_NUM = 5 ; +// 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 ; /////////////////////////// @@ -70,21 +82,21 @@ COMMAND_BUF_SIZE (G4FRofstream::SEND_BUFMAX) // g4.prim filename and its directory if ( getenv( "G4DAWNFILE_DEST_DIR" ) == NULL ) { - strcpy( fG4PrimDestDir , "" ); - strcpy( fG4PrimFileName, DEFAULT_G4PRIM_FILE_NAME ); + strcpy( fG4PrimDestDir , "" ) ; // output dir + strcpy( fG4PrimFileName, DEFAULT_G4PRIM_FILE_NAME ); // filename } else { - strcpy( fG4PrimDestDir , getenv( "G4DAWNFILE_DEST_DIR" ) ); - strcpy( fG4PrimFileName, DEFAULT_G4PRIM_FILE_NAME ); + strcpy( fG4PrimDestDir , getenv( "G4DAWNFILE_DEST_DIR" ) ); // output dir + strcpy( fG4PrimFileName, DEFAULT_G4PRIM_FILE_NAME ); // filename } // maximum number of g4.prim files in the dest directory - fMaxFileNum = 1 ; // initialization + fMaxFileNum = FR_MAX_FILE_NUM ; // initialization if ( getenv( "G4DAWNFILE_MAX_FILE_NUM" ) != NULL ) { sscanf( getenv("G4DAWNFILE_MAX_FILE_NUM"), "%d", &fMaxFileNum ) ; } else { - fMaxFileNum = 1 ; + fMaxFileNum = FR_MAX_FILE_NUM ; } if( fMaxFileNum < 1 ) { fMaxFileNum = 1 ; } @@ -105,7 +117,7 @@ G4DAWNFILESceneHandler::~G4DAWNFILESceneHandler () //----- void G4DAWNFILESceneHandler::SetG4PrimFileName() { - // g4.prim, g4_1.prim, ..., g4_MAX_FILE_INDEX.prim + // g4_00.prim, g4_01.prim, ..., g4_MAX_FILE_INDEX.prim const int MAX_FILE_INDEX = fMaxFileNum - 1 ; // dest directory (null if no environmental variables is set) @@ -117,19 +129,22 @@ void G4DAWNFILESceneHandler::SetG4PrimFileName() // Automatic updation of file names 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 DAWNFILE 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.prim and g4_XX.eps " << G4endl; G4cerr << "===========================================" << G4endl; } - // re-determine file to G4DAWNFILE_DEST_DIR/g4_i.prim for i>0 - if( i > 0 ) { + // re-determine file name as G4DAWNFILE_DEST_DIR/g4_XX.prim + if( i >= 0 && i <= 9 ) { + sprintf( fG4PrimFileName, "%s%s%s%d.prim" , fG4PrimDestDir, G4PRIM_FILE_HEADER, "0", i ); + } else { sprintf( fG4PrimFileName, "%s%s%d.prim" , fG4PrimDestDir, G4PRIM_FILE_HEADER, i ); } @@ -138,7 +153,7 @@ void G4DAWNFILESceneHandler::SetG4PrimFileName() fin.open(fG4PrimFileName) ; if(!fin) { // new file - fin.close(); // error recovery + fin.close(); break; } else { // already exists (try next) @@ -147,11 +162,18 @@ void G4DAWNFILESceneHandler::SetG4PrimFileName() } // for - G4cerr << "===========================================" << G4endl; - G4cerr << "Output file: " << fG4PrimFileName << G4endl; - G4cerr << "Muximal number of file in the destination directory: " << fMaxFileNum << G4endl; - G4cerr << " (Customizable as: setenv G4DAWNFILE_MAX_FILE_NUM number) " << G4endl; - G4cerr << "===========================================" << G4endl; + G4cerr << "=========================================== " << G4endl; + G4cerr << "Output file: " << fG4PrimFileName << G4endl; + G4cerr << "Destination directory (current dir if NULL): " << fG4PrimDestDir << G4endl; + G4cerr << "Maximal number of files in the destination directory: " << fMaxFileNum << G4endl; + G4cerr << "Note: " << G4endl; + G4cerr << " * The maximal number is customizable as: " << G4endl; + G4cerr << " % setenv G4DAWNFILE_MAX_FILE_NUM number " << G4endl; + G4cerr << " * The destination directory is customizable as:" << G4endl; + G4cerr << " % setenv G4DAWNFILE_DEST_DIR dir_name/ " << G4endl; + G4cerr << " ** Do not forget \"/\" at the end of the " << G4endl; + G4cerr << " dir_name, e.g. \"./tmp/\". " << G4endl; + G4cerr << "=========================================== " << G4endl; } // G4DAWNFILESceneHandler::SetG4PrimFileName() @@ -169,7 +191,7 @@ void G4DAWNFILESceneHandler::BeginSavingG4Prim( void ) G4cerr << "***** (started) " ; G4cerr << "(open g4.prim, ##)" << G4endl; #endif - SetG4PrimFileName() ; // returned to fG4PrimFileName + SetG4PrimFileName() ; // result set to fG4PrimFileName fPrimDest.Open(fG4PrimFileName) ; SendStr( FR_G4_PRIM_HEADER ) ; diff --git a/source/visualization/FukuiRenderer/src/G4DAWNFILEViewer.cc b/source/visualization/FukuiRenderer/src/G4DAWNFILEViewer.cc index a973d84b49..6c693802b2 100644 --- a/source/visualization/FukuiRenderer/src/G4DAWNFILEViewer.cc +++ b/source/visualization/FukuiRenderer/src/G4DAWNFILEViewer.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4DAWNFILEViewer.cc,v 1.6 1999/12/15 14:54:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4DAWNFILEViewer.cc,v 1.9 2000/05/15 07:48:27 stanaka Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // Satoshi TANAKA // DAWNFILE view - opens window, hard copy, etc. @@ -66,7 +66,8 @@ G4DAWNFILEViewer::G4DAWNFILEViewer (G4DAWNFILESceneHandler& scene, } // Set a PostScript Viewer - strcpy( fPSViewer, "ghostview" ); +// strcpy( fPSViewer, "ghostview" ); + strcpy( fPSViewer, "gv" ); if( getenv( "G4DAWNFILE_PS_VIEWER" ) != NULL ) { strcpy( fPSViewer, getenv( "G4DAWNFILE_PS_VIEWER" ) ) ; } @@ -148,6 +149,7 @@ void G4DAWNFILEViewer::ShowView( void ) //----- Invoke DAWN + G4cout << G4endl ; if( false == G4FRofstream::DoesFileExist( fSceneHandler.GetG4PrimFileName() ) ) { G4cout << "ERROR: Failed to generate file "; @@ -268,7 +270,9 @@ void G4DAWNFILEViewer::SendViewParameters () gui_out << "0" << G4endl ; // auto target //----- target point - const G4Point3D& target_point = fVP.GetCurrentTargetPoint(); + const G4Point3D& target_point + = fSceneHandler.GetScene()->GetStandardTargetPoint() + + fVP.GetCurrentTargetPoint(); gui_out << target_point.x() << G4endl ; gui_out << target_point.y() << G4endl ; gui_out << target_point.z() << G4endl ; diff --git a/source/visualization/FukuiRenderer/src/G4FRClientServer.cc b/source/visualization/FukuiRenderer/src/G4FRClientServer.cc index 53131dd2d1..8b5e1e1e28 100644 --- a/source/visualization/FukuiRenderer/src/G4FRClientServer.cc +++ b/source/visualization/FukuiRenderer/src/G4FRClientServer.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4FRClientServer.cc,v 1.3 1999/12/15 14:54:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // Satoshi TANAKA, Wed Jul 3 14:14:29 JST 1996 //////////////////////////////// diff --git a/source/visualization/FukuiRenderer/src/G4FRSceneFunc.icc b/source/visualization/FukuiRenderer/src/G4FRSceneFunc.icc index 31200f713a..ef19e3f77d 100644 --- a/source/visualization/FukuiRenderer/src/G4FRSceneFunc.icc +++ b/source/visualization/FukuiRenderer/src/G4FRSceneFunc.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4FRSceneFunc.icc,v 1.10 1999/12/15 14:54:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // diff --git a/source/visualization/FukuiRenderer/src/G4FukuiRenderer.cc b/source/visualization/FukuiRenderer/src/G4FukuiRenderer.cc index a5cb364621..bfb6fae932 100644 --- a/source/visualization/FukuiRenderer/src/G4FukuiRenderer.cc +++ b/source/visualization/FukuiRenderer/src/G4FukuiRenderer.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4FukuiRenderer.cc,v 1.4 1999/12/15 14:54:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Satoshi TANAKA diff --git a/source/visualization/FukuiRenderer/src/G4FukuiRendererSceneHandler.cc b/source/visualization/FukuiRenderer/src/G4FukuiRendererSceneHandler.cc index 6d9926d9ca..fe533616b5 100644 --- a/source/visualization/FukuiRenderer/src/G4FukuiRendererSceneHandler.cc +++ b/source/visualization/FukuiRenderer/src/G4FukuiRendererSceneHandler.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4FukuiRendererSceneHandler.cc,v 1.3 1999/12/15 14:54:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4FukuiRendererSceneHandler.cc,v 1.4 2000/04/12 13:08:22 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Satoshi TANAKA, Fri Jun 28 11:34:24 JST 1996 @@ -33,6 +33,7 @@ #include "G4FukuiRendererViewer.hh" #include "G4Point3D.hh" #include "G4VisAttributes.hh" +#include "G4Scene.hh" #include "G4Transform3D.hh" #include "G4Polyhedron.hh" #include "G4Box.hh" @@ -40,6 +41,10 @@ #include "G4Polyline.hh" #include "G4Trd.hh" #include "G4Tubs.hh" +#include "G4Trap.hh" +#include "G4Torus.hh" +#include "G4Sphere.hh" +#include "G4Para.hh" #include "G4Text.hh" #include "G4Circle.hh" #include "G4Square.hh" diff --git a/source/visualization/FukuiRenderer/src/G4FukuiRendererViewer.cc b/source/visualization/FukuiRenderer/src/G4FukuiRendererViewer.cc index e09a6f3acb..61337d6631 100644 --- a/source/visualization/FukuiRenderer/src/G4FukuiRendererViewer.cc +++ b/source/visualization/FukuiRenderer/src/G4FukuiRendererViewer.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4FukuiRendererViewer.cc,v 1.4 1999/12/15 14:54:01 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4FukuiRendererViewer.cc,v 1.5 2000/05/13 10:57:51 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Satoshi TANAKA, Fri Jun 28 12:09:11 JST 1996 @@ -224,7 +224,9 @@ void G4FukuiRendererViewer::SendViewParameters () h_angle ); //----- (4A) CALC target point - const G4Point3D& target_point = fVP.GetCurrentTargetPoint(); + const G4Point3D& target_point + = fSceneHandler.GetScene()->GetStandardTargetPoint() + + fVP.GetCurrentTargetPoint(); //----- (4B) SEND target point fSceneHandler.SendStrDouble3( FR_TARGET_POINT, diff --git a/source/visualization/GNUmakefile b/source/visualization/GNUmakefile index 4ca16823d5..0fc75f789a 100644 --- a/source/visualization/GNUmakefile +++ b/source/visualization/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.4 1999/09/15 16:49:59 johna Exp $ +# $Id: GNUmakefile,v 1.5 2000/01/29 00:42:44 asaim Exp $ # ----------------------------------------------------------------------- # GNUmakefile for visualization and modeling. John Allison, 5/7/95. # Modeling is always made. Others by environment. John Allison 4/7/98. @@ -40,6 +40,11 @@ ifdef G4VIS_BUILD_DAWNFILE_DRIVER endif # End of DAWN and DAWNFILE drivers +ifdef G4VIS_BUILD_RAYTRACER_DRIVER + SUBDIRS += RayTracer + SUBLIBS += G4RayTracer +endif + ifdef G4VIS_BUILD_OPACS_DRIVER SUBDIRS += OPACS SUBLIBS += G4OPACS diff --git a/source/visualization/History b/source/visualization/History index eb46ce746d..042456d967 100644 --- a/source/visualization/History +++ b/source/visualization/History @@ -1,4 +1,4 @@ -$Id: History,v 1.59 2000/01/17 10:36:40 johna Exp $ +$Id: History,v 1.88 2000/06/09 08:42:46 johna Exp $ ------------------------------------------------------------------- ========================================================= @@ -24,6 +24,170 @@ committal in the CVS repository ! History file for visualization category --------------------------------------- +9th June 2000 John Allison (vis-V01-01-06) +- Tagged for system testing. + +8th June 2000 Guy Barrand +- OPACS/src/G4GoSceneHandler.cc : correct polyhedron + wire-frame in order to remove some edges. Now the + rendering is the same than for OpenGL driver. + This was requested for long by ALICE, and had been + requested for ATLAS by Gaston Parrour recently. + +7th June 2000 John Allison +- /vis/viewer/update preferred, synonym /vis/viewer/show deprecated. + +7th June 2000 Makoto Asai +- Fix the flip view of RayTracer. + +2nd June May 2000 John Allison +- Forced /control/verbose 2 for compound commands. + +20th May 2000 John Allison +- Bug fix in G4PhysicalVolumeModel for replicas (Guy Barrand). + +26 May 2000 Guy Barrand +- management/src/G4VisCommandsScene. + Protect against a null pointer for aScene in NotifyHandlers::SetNewValue. +- OPACS/src/G4WoViewer.cc : + Change camera name checking so that a viewer created + by the GUI (Wo) could be hooked. +- OPACS/src/G4GoSceneHandler.cc : + Change circle rendering. +- OpenInventor/G4OpenInventorSceneHandler : protect against null pointers. + +22nd May 2000 John Allison (vis-V01-01-05) +- Many bug fixes from in OpenGL (opengl-V01-01-00) - see OpenGL/History. Main + features: + o workaround for bug in Mesa which slowed OpenGLXm (Guy Barrand). + o multiple OpenGLXm windows no longer cause crash on exit (Guy). +- modeling-V01-01-00: Added G4VTreeGraphicsScene (DTREE). +- G4Scene::IsEmpty if empty of RunDurationModels - VisManager adds world in + this case. + +18th/19th May 2000 John Allison +- Introduced some /vis/viewer/set commands. +- /vis/scene/include/trajectories changed to /vis/scene/add/trajectories. + Similarly hits. (Old commands kept but deprecated.) +- G4ViewParameters.cc: bug fix in density culling printing. +- G4VisCommandsSceneHandler.cc: bug fix in /vis/sceneHandler/create. +- G4VisManagerRegisterMessengers.cc: improved comments. + +18th May 2000 John Allison vis-V01-01-04 +- Included DAWN-V01-01-04: Automatic filename incrementation is made default. + +15th May 2000 John Allison +- Added compound commands /vis/open, /vis/drawVolume and /vis/specify. +- /vis/viewer/reset now resets *all* view parameters. +- Fixed double application of transformation in /vis/scene/add/volume. +- Fixed verbosity parameter in /vis/scene/list. +- Made G4BoundingSphereScene::PreAddThis non-inline. + +13th May 2000 John Allison +- Redefined current target point to be *relative* to standard target point. + (No longer necessary to initialize current target point in G4VViewer + constructor. The fix of 4th May is reversed.) + +11th May 2000 Satoshi Tanaka vis-V01-01-03 +- In G4DAWNFILEViewer.cc, + < strcpy( fPSViewer, "ghostview" ); + --- + > // strcpy( fPSViewer, "ghostview" ); + > strcpy( fPSViewer, "gv" ); + + +4th May 2000 John Allison +- Tidied comments in G4VisManagerRegisterMessengers.cc. +- Initialize current target point in G4VViewer constructor. +- Re-implemented /vis/viewer/reset to change view parameters of + viewer directly. + +2nd May 2000 John Allison vis-V01-01-02 +- Added /vis/viewer/reset. +- G4VSceneHandler, G4VViewer, G4OpenGLXmMainMenubarCallbacks: corrected + some name anomolies - "scene" was still being used in places where it + meant "scene handler". +- G4VViewer: added GetShortName(), corrected SetName(...). +- G4ViewParameters.hh: improved class description. +- G4VisManager: added ViewerShortName(...) and GetViewer(...) utilities. +- G4RayTracer: set out-of-world ray to black. +- G4RayTracerViewer: corrected trapping of orthogonal projection. +- Some minor enhancements to tests. + +27th April 2000 Gabriele Cosmo +- Removed unnecessary #include "G4Transform.hh" from VRML. (Since + geometry-V01-01-02 G4Transform.hh no longer exists.) + +27th April 2000 John Allison +- Updated README file. + +12th April 2000 John Allison vis-V01-01-01 +- Made G4PhysicalVolumeModel::DescribeSolid virtual. +- G4PhysicalVolumeModel::DescribeSolid no longer deals with composite + solids - now programmed into CompositeSolid::CreatePolyhedron, where + CompositeSolid means G4IntersectionSolid, G4SubtractionSolid and + G4UnionSolid. +- G4PhysicalVolumeModel::DescribeSolid no longer deals with displaced + solids - now programmed into G4DisplacedSolid::CreatePolyhedron. +- Added G4LogicalVolumeModel::DescribeSolid, which explicitly adds + components of composite solids as white forced-wireframe objects. +- Removed unnecessary #includes from G4VSceneHandler.hh which required + consequent inclusion in many other scene handlers and viewers. + +7th April 2000 John Allison vis-V01-01-00 +- Modified GNUmakefiles for restructured geometry. + +29th February 2000 John Allison vis-V01-00-06 +- Changed `char*' to `const char*' in G4FRClientServer::Err(...). + +28th February 2000 John Allison +- Cosmetic improvements to G4RayTracerSceneHandler.hh and G4RayTracerViewer.hh. + +24th February 2000 John Allison +- Minor inmprovement of messages from /vis/viewer/refresh. +- Cosmetic tidying in G4OpenGLViewer.cc. +- Added protection for null viewer in G4RTSteppingAction.cc and + G4RayTrajectory.cc. +- Corrected for zoom, etc., in G4RayTracerViewer.cc. + +23rd February 2000 John Allison +- Added G4RayTracerSceneHandler and Viewer. +- Some modifications to other RayTracer routines for vis compliance. +- (Note: headAngle still not right - ray traced views are sometimes tipped.) + +23rd February 2000 John Allison vis-V01-00-05 +- Includes raytracer-V01-00-01a which is original version plus fixes for + ISO compliance. + +21st February 2000 John Allison +- /vis/viewer/refresh no longer invokes ShowView(). +- G4VViewer: introduced data member fShortName. +- Added G4RTSteppingAction and G4RayTrajectory to list of G4VisManager's + friends. +- Improved G4VisManager::CreateSceneHandler() and CreateViewer() and + handling of error in G4VisCommandSceneHandler::Create() and + G4VisCommandViewer::Create(). +- OpenGL: char* becomes const char*. Small output text improvement. +- test: some changes for Ray Tracer. Boolean intersection instead of union. + +02 February 2000 Guy Barrand +- OPACS/src/G4XoViewer.cc : change WaitForNotify signature to + be able to compile with DEC-cxx 6.1. + +vis-V01-00-04 29th January 2000 Satoshi Tanaka +- CVS tag is assigned to the Makoto's committing below. + +29th January 2000 Makoto Asai +- Introduction of G4RayTracer (visualization/RayTracer/...) +- Migration of G4RayTracer + affected files : + visualization/GNUmakefile + visualization/management/include/MyVisManager.cc + visualization/management/src/G4VisManager.cc + affected files in other directory : + config/G4VIS_BUILD.gmk + config/G4VIS_USE.gmk + vis-V01-00-03 17th January 2000 John Allison - Added protection for no voxelisation in G4LogicalVolumeModel.cc. - Changed endl to G4endl in G4VisCommandsViewer.cc and G4GoSceneHandler.cc. diff --git a/source/visualization/OPACS/GNUmakefile b/source/visualization/OPACS/GNUmakefile index 4b870f6aa8..0436ecd967 100644 --- a/source/visualization/OPACS/GNUmakefile +++ b/source/visualization/OPACS/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.2 1999/04/15 15:27:56 johna Exp $ +# $Id: GNUmakefile,v 1.3 2000/04/07 14:52:49 johna Exp $ name := G4OPACS @@ -15,6 +15,7 @@ CPPFLAGS += -I$(G4BASE)/visualization/modeling/include CPPFLAGS += -I$(G4BASE)/global/management/include CPPFLAGS += -I$(G4BASE)/global/HEPGeometry/include CPPFLAGS += -I$(G4BASE)/geometry/solids/CSG/include +CPPFLAGS += -I$(G4BASE)/geometry/solids/specific/include CPPFLAGS += -I$(G4BASE)/graphics_reps/include CPPFLAGS += -I$(G4BASE)/geometry/management/include CPPFLAGS += -I$(G4BASE)/geometry/volumes/include diff --git a/source/visualization/OPACS/include/G4GoSceneHandler.hh b/source/visualization/OPACS/include/G4GoSceneHandler.hh index 7951f0d721..ae75440fd1 100644 --- a/source/visualization/OPACS/include/G4GoSceneHandler.hh +++ b/source/visualization/OPACS/include/G4GoSceneHandler.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4GoSceneHandler.hh,v 1.5 1999/12/16 17:25:02 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Guy Barrand 04 November 1996 diff --git a/source/visualization/OPACS/include/G4Wo.hh b/source/visualization/OPACS/include/G4Wo.hh index 0d451b11f7..f3f3912f7b 100644 --- a/source/visualization/OPACS/include/G4Wo.hh +++ b/source/visualization/OPACS/include/G4Wo.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Wo.hh,v 1.5 1999/12/15 14:54:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Guy Barrand 04 November 1996 diff --git a/source/visualization/OPACS/include/G4WoViewer.hh b/source/visualization/OPACS/include/G4WoViewer.hh index 75c013bc03..b7b2537fbd 100644 --- a/source/visualization/OPACS/include/G4WoViewer.hh +++ b/source/visualization/OPACS/include/G4WoViewer.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4WoViewer.hh,v 1.4 1999/12/15 14:54:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Guy Barrand 04 November 1996 diff --git a/source/visualization/OPACS/include/G4Xo.hh b/source/visualization/OPACS/include/G4Xo.hh index 786523ac60..92cf941d0a 100644 --- a/source/visualization/OPACS/include/G4Xo.hh +++ b/source/visualization/OPACS/include/G4Xo.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Xo.hh,v 1.5 1999/12/15 14:54:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Guy Barrand 04 November 1996 diff --git a/source/visualization/OPACS/include/G4XoViewer.hh b/source/visualization/OPACS/include/G4XoViewer.hh index e2513560ac..ed78b5315b 100644 --- a/source/visualization/OPACS/include/G4XoViewer.hh +++ b/source/visualization/OPACS/include/G4XoViewer.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4XoViewer.hh,v 1.4 1999/12/15 14:54:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Guy Barrand 04 November 1996 diff --git a/source/visualization/OPACS/src/G4GoSceneHandler.cc b/source/visualization/OPACS/src/G4GoSceneHandler.cc index 0e6ea131aa..10ae763e0d 100644 --- a/source/visualization/OPACS/src/G4GoSceneHandler.cc +++ b/source/visualization/OPACS/src/G4GoSceneHandler.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4GoSceneHandler.cc,v 1.7 2000/01/17 10:28:50 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4GoSceneHandler.cc,v 1.9 2000/06/07 22:36:02 barrand Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Guy Barrand 04 November 1996 @@ -146,6 +146,8 @@ void G4GoSceneHandler::AddPrimitive ( #endif // Direction of circle ? //GoAddCircleToNode (fGoNode,radius,center.x(),center.y(),center.z(),0.,0.,1.); + OContextSetMarkerStyle (OContextGetStaticInstance(),OMarkerStyleCircle); + OContextSetMarkerSize (OContextGetStaticInstance(),5); GoAddMarkerToNode (fGoNode,center.x(),center.y(),center.z()); } /***************************************************************************/ @@ -174,48 +176,78 @@ void G4GoSceneHandler::AddPrimitive ( break; } - G4bool notLastFace; - G4Normal3D SurfaceNormal; - double xs[5]; - double ys[5]; - double zs[5]; + double xs[5]; + double ys[5]; + double zs[5]; + G4Normal3D SurfaceNormal; + G4Point3D vertex; - do - { - G4bool notLastEdge; - G4Point3D vertex; - G4int edgeFlag = 1; - int iPoint; - iPoint = 0; - notLastFace = polyhedron.GetNextNormal (SurfaceNormal); - do - { - notLastEdge = polyhedron.GetNextVertex (vertex, edgeFlag); - xs[iPoint] = vertex.x(); - ys[iPoint] = vertex.y(); - zs[iPoint] = vertex.z(); - iPoint++; - } while (notLastEdge); - if( (iPoint!=3) && (iPoint!=4) ) - { - CWarnF ("G4GoSceneHandler::AddPrimitive G4Polyhedron : not a quad or a triangle : %d\n",iPoint); - } - else - { - if (modeling==OModelingWireFrame) - { - xs[iPoint] = xs[0]; - ys[iPoint] = ys[0]; - zs[iPoint] = zs[0]; - iPoint++; - ONodeAddLines (fGoNode,OContextGetStaticInstance(),iPoint,xs,ys,zs); - } - else if (modeling==OModelingSolid) - { - ONodeAddPolygon (fGoNode,OContextGetStaticInstance(),iPoint,xs,ys,zs); + G4bool notLastFace; + do { + G4int edgeFlag = 1; + G4int lastEdgeFlag = edgeFlag; + int iPoint = 0; + notLastFace = polyhedron.GetNextNormal (SurfaceNormal); + G4bool notLastEdge; + do { + notLastEdge = polyhedron.GetNextVertex (vertex, edgeFlag); + if (modeling==OModelingWireFrame) { + if (edgeFlag != lastEdgeFlag) { + if (edgeFlag) { + // Pass to visible edges, restart to accumulate : + iPoint = 0; + xs[iPoint] = vertex.x(); + ys[iPoint] = vertex.y(); + zs[iPoint] = vertex.z(); + iPoint++; + } else { + // Pass to invisible edges, flush the visible ones : + xs[iPoint] = vertex.x(); + ys[iPoint] = vertex.y(); + zs[iPoint] = vertex.z(); + iPoint++; + if(iPoint>=2) { + ONodeAddLines(fGoNode,OContextGetStaticInstance(), + iPoint,xs,ys,zs); } + } + lastEdgeFlag = edgeFlag; + } else { + if (edgeFlag) { + xs[iPoint] = vertex.x(); + ys[iPoint] = vertex.y(); + zs[iPoint] = vertex.z(); + iPoint++; + } else { + } } - } while (notLastFace); + } else { + xs[iPoint] = vertex.x(); + ys[iPoint] = vertex.y(); + zs[iPoint] = vertex.z(); + iPoint++; + } + } while (notLastEdge); + if (modeling==OModelingWireFrame) { + if(iPoint!=0) { // Some line started, flush it : + /* + xs[iPoint] = xs[0]; + ys[iPoint] = ys[0]; + zs[iPoint] = zs[0]; + iPoint++; + */ + if(iPoint>=2) { + ONodeAddLines(fGoNode,OContextGetStaticInstance(),iPoint,xs,ys,zs); + } + } + } else if (modeling==OModelingSolid) { + if( (iPoint!=3) && (iPoint!=4) ) { + CWarnF ("G4GoSceneHandler::AddPrimitive G4Polyhedron : not a quad or a triangle : %d\n",iPoint); + } else { + ONodeAddPolygon (fGoNode,OContextGetStaticInstance(),iPoint,xs,ys,zs); + } + } + } while (notLastFace); } /***************************************************************************/ void G4GoSceneHandler::AddPrimitive ( @@ -444,15 +476,24 @@ void G4GoSceneHandler::BeginPrimitives ( fGoNode = nodeName!=NULL ? ONodeCreate (nodeName) : ONodeMake (); if(ONodeIsValid(fRootGoNode)==0) { +#ifdef DEBUG + G4cout << " build Root, Static, Transient nodes" << G4endl; +#endif fRootGoNode = ONodeMake (); fStaticRootGoNode = ONodeMake (); fTransientRootGoNode = ONodeMake (); ONodeAddChild (fRootGoNode,fStaticRootGoNode); ONodeAddChild (fRootGoNode,fTransientRootGoNode); - } + } if (fReadyForTransients) { +#ifdef DEBUG + G4cout << " add node to transient scene graph" << G4endl; +#endif ONodeAddChild (fTransientRootGoNode,fGoNode); } else { +#ifdef DEBUG + G4cout << " add node to static scene graph" << G4endl; +#endif ONodeAddChild (fStaticRootGoNode,fGoNode); } } diff --git a/source/visualization/OPACS/src/G4Wo.cc b/source/visualization/OPACS/src/G4Wo.cc index 2b410db547..5de07e545c 100644 --- a/source/visualization/OPACS/src/G4Wo.cc +++ b/source/visualization/OPACS/src/G4Wo.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Wo.cc,v 1.4 1999/12/15 14:54:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Guy Barrand 04 November 1996 diff --git a/source/visualization/OPACS/src/G4WoViewer.cc b/source/visualization/OPACS/src/G4WoViewer.cc index 8e699e9f03..36283bfd0b 100644 --- a/source/visualization/OPACS/src/G4WoViewer.cc +++ b/source/visualization/OPACS/src/G4WoViewer.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4WoViewer.cc,v 1.3 1999/12/15 14:54:02 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4WoViewer.cc,v 1.6 2000/05/28 13:35:14 barrand Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Guy Barrand 04 November 1996 @@ -27,6 +27,7 @@ #include //G4 #include "G4VInteractorManager.hh" +#include "G4Scene.hh" #include "G4Wo.hh" #include "G4GoSceneHandler.hh" //This @@ -54,8 +55,10 @@ G4WoViewer::G4WoViewer ( CWarn ("G4WoViewer : Wo is not initialized !\n"); return; } - - char* defName = CStringDuplicate((char*)fName.data()); + char* defNameGS = CStringDuplicate((char*)fName.data()); + char* defName = CStringGetFirstWord(defNameGS); + CStringDelete(defNameGS); + CStringReplacePart (&defName,"-","_"); fGoCamera = OCameraGetIdentifier (defName); @@ -141,7 +144,9 @@ void G4WoViewer::SetView ( // later due to user interaction via visualization system's GUI.) /*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ { - const G4Point3D target = fVP.GetCurrentTargetPoint (); + const G4Point3D target + = fSceneHandler.GetScene()->GetStandardTargetPoint() + + fVP.GetCurrentTargetPoint (); G4double radius = fSceneHandler.GetScene()->GetExtent().GetExtentRadius(); if(radius<=0.) radius = 1. * m; const G4double cameraDistance = fVP.GetCameraDistance (radius); diff --git a/source/visualization/OPACS/src/G4Xo.cc b/source/visualization/OPACS/src/G4Xo.cc index 41c6d21fc5..3fb79f101a 100644 --- a/source/visualization/OPACS/src/G4Xo.cc +++ b/source/visualization/OPACS/src/G4Xo.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Xo.cc,v 1.5 1999/12/15 14:54:03 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Guy Barrand 04 November 1996 diff --git a/source/visualization/OPACS/src/G4XoViewer.cc b/source/visualization/OPACS/src/G4XoViewer.cc index ef9fb598ad..c1a57ec568 100644 --- a/source/visualization/OPACS/src/G4XoViewer.cc +++ b/source/visualization/OPACS/src/G4XoViewer.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4XoViewer.cc,v 1.4 1999/12/15 14:54:03 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4XoViewer.cc,v 1.7 2000/05/13 10:57:31 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Guy Barrand 04 November 1996 @@ -29,13 +29,17 @@ /*Xo*/ #include //G4 +#include "G4Scene.hh" #include "G4GoSceneHandler.hh" #include "G4Xo.hh" #include "G4VInteractorManager.hh" //This #include "G4XoViewer.hh" -static Bool WaitForNotify (Display*,XEvent*,char*); +extern "C" { +Bool WaitForNotify (Display*,XEvent*,XPointer); +} + static void ActivateCallback (Widget,XtPointer,XtPointer); static void CollectCallback (Widget,XtPointer,XtPointer); /***************************************************************************/ @@ -145,7 +149,9 @@ void G4XoViewer::SetView ( // later due to user interaction via visualization system's GUI.) /*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ { - const G4Point3D target = fVP.GetCurrentTargetPoint (); + const G4Point3D target + = fSceneHandler.GetScene()->GetStandardTargetPoint() + + fVP.GetCurrentTargetPoint (); G4double radius = fSceneHandler.GetScene()->GetExtent().GetExtentRadius(); if(radius<=0.) radius = 1. * m; const G4double cameraDistance = fVP.GetCameraDistance (radius); @@ -206,7 +212,7 @@ void G4XoViewer::ShowView ( Bool WaitForNotify ( Display* d ,XEvent* e -,char* arg +,XPointer arg ) /***************************************************************************/ /*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ diff --git a/source/visualization/OpenGL/GNUmakefile b/source/visualization/OpenGL/GNUmakefile index 62e35389f7..6ae11d916d 100644 --- a/source/visualization/OpenGL/GNUmakefile +++ b/source/visualization/OpenGL/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.1 1999/01/07 16:14:47 gunter Exp $ +# $Id: GNUmakefile,v 1.2 2000/04/07 13:32:41 gcosmo Exp $ name := G4OpenGL @@ -15,6 +15,7 @@ CPPFLAGS += -I$(G4BASE)/visualization/modeling/include CPPFLAGS += -I$(G4BASE)/global/management/include CPPFLAGS += -I$(G4BASE)/global/HEPGeometry/include CPPFLAGS += -I$(G4BASE)/geometry/solids/CSG/include +CPPFLAGS += -I$(G4BASE)/geometry/solids/specific/include CPPFLAGS += -I$(G4BASE)/graphics_reps/include CPPFLAGS += -I$(G4BASE)/geometry/management/include CPPFLAGS += -I$(G4BASE)/geometry/volumes/include diff --git a/source/visualization/OpenGL/History b/source/visualization/OpenGL/History new file mode 100644 index 0000000000..14ccdf850a --- /dev/null +++ b/source/visualization/OpenGL/History @@ -0,0 +1,34 @@ +$Id: History,v 1.2 2000/05/22 08:34:58 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/OpenGL +------------------------------------- + +22nd May 2000 John Allison (opengl-V01-01-00) +- Fixed slow response of 2nd window of OpenGLXm. Worked around Mesa bug + by sharing static visuals in G4OpenGLXViewer (Guy Barrand): + static XVisualInfo* vi_single_buffer; + static XVisualInfo* vi_double_buffer; +- Removed ChooseVisual from G4OpenGLXmViewer.cc - done in base class + G4OpenGLXViewer. +- Protected double deletion of window in destructors of G4OpenGLXmViewer + and G4OpenGLXViewer (Guy Barrand). +- Changed requested bits per colour to r,g,b = 1,1,1 in G4OpenGLViewer.cc. +- Corrected order of CreateMainWindow() and InitializeGLView() in X*Viewer + constructors. diff --git a/source/visualization/OpenGL/include/G4OpenGLImmediateSceneHandler.hh b/source/visualization/OpenGL/include/G4OpenGLImmediateSceneHandler.hh index 3490313cd1..9780d5a791 100644 --- a/source/visualization/OpenGL/include/G4OpenGLImmediateSceneHandler.hh +++ b/source/visualization/OpenGL/include/G4OpenGLImmediateSceneHandler.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLImmediateSceneHandler.hh,v 1.3 1999/12/15 14:54:03 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLImmediateViewer.hh b/source/visualization/OpenGL/include/G4OpenGLImmediateViewer.hh index be63ba3456..2b7d4961ca 100644 --- a/source/visualization/OpenGL/include/G4OpenGLImmediateViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLImmediateViewer.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLImmediateViewer.hh,v 1.4 1999/12/15 14:54:03 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 7th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLImmediateWin32.hh b/source/visualization/OpenGL/include/G4OpenGLImmediateWin32.hh index 76da1ed560..b3427f7bd4 100644 --- a/source/visualization/OpenGL/include/G4OpenGLImmediateWin32.hh +++ b/source/visualization/OpenGL/include/G4OpenGLImmediateWin32.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLImmediateWin32.hh,v 1.4 1999/12/15 14:54:03 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // OpenGLImmediateWin32 graphics system factory. diff --git a/source/visualization/OpenGL/include/G4OpenGLImmediateWin32Viewer.hh b/source/visualization/OpenGL/include/G4OpenGLImmediateWin32Viewer.hh index e73cd0ec37..0778c1ba34 100644 --- a/source/visualization/OpenGL/include/G4OpenGLImmediateWin32Viewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLImmediateWin32Viewer.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLImmediateWin32Viewer.hh,v 1.3 1999/12/15 14:54:03 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Class G4OpenGLImmediateWin32Viewer : a class derived from diff --git a/source/visualization/OpenGL/include/G4OpenGLImmediateX.hh b/source/visualization/OpenGL/include/G4OpenGLImmediateX.hh index 8ff402fa7d..071c71bc6b 100644 --- a/source/visualization/OpenGL/include/G4OpenGLImmediateX.hh +++ b/source/visualization/OpenGL/include/G4OpenGLImmediateX.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLImmediateX.hh,v 1.5 1999/12/15 14:54:03 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLImmediateXViewer.hh b/source/visualization/OpenGL/include/G4OpenGLImmediateXViewer.hh index 20a0954174..d32d0522ba 100644 --- a/source/visualization/OpenGL/include/G4OpenGLImmediateXViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLImmediateXViewer.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLImmediateXViewer.hh,v 1.4 1999/12/15 14:54:03 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 7th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLImmediateXm.hh b/source/visualization/OpenGL/include/G4OpenGLImmediateXm.hh index 9b058dbd5d..f71fc43b6a 100644 --- a/source/visualization/OpenGL/include/G4OpenGLImmediateXm.hh +++ b/source/visualization/OpenGL/include/G4OpenGLImmediateXm.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLImmediateXm.hh,v 1.4 1999/12/15 14:54:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLImmediateXmViewer.hh b/source/visualization/OpenGL/include/G4OpenGLImmediateXmViewer.hh index 06e4e16f60..71a064ef34 100644 --- a/source/visualization/OpenGL/include/G4OpenGLImmediateXmViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLImmediateXmViewer.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLImmediateXmViewer.hh,v 1.3 1999/12/15 14:54:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLSceneHandler.hh b/source/visualization/OpenGL/include/G4OpenGLSceneHandler.hh index 227ee36ff5..c0badf64a9 100644 --- a/source/visualization/OpenGL/include/G4OpenGLSceneHandler.hh +++ b/source/visualization/OpenGL/include/G4OpenGLSceneHandler.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLSceneHandler.hh,v 1.5 1999/12/16 17:25:05 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 27th March 1996 diff --git a/source/visualization/OpenGL/include/G4OpenGLSceneHandler.icc b/source/visualization/OpenGL/include/G4OpenGLSceneHandler.icc index 12d3dd1a5c..f06fb631c1 100644 --- a/source/visualization/OpenGL/include/G4OpenGLSceneHandler.icc +++ b/source/visualization/OpenGL/include/G4OpenGLSceneHandler.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLSceneHandler.icc,v 1.3 1999/12/16 17:25:06 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 20th January 1998 diff --git a/source/visualization/OpenGL/include/G4OpenGLStoredSceneHandler.hh b/source/visualization/OpenGL/include/G4OpenGLStoredSceneHandler.hh index 1f0466f754..509d147123 100644 --- a/source/visualization/OpenGL/include/G4OpenGLStoredSceneHandler.hh +++ b/source/visualization/OpenGL/include/G4OpenGLStoredSceneHandler.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLStoredSceneHandler.hh,v 1.7 1999/12/15 14:54:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLStoredViewer.hh b/source/visualization/OpenGL/include/G4OpenGLStoredViewer.hh index 5fa1abee49..7a8f40d809 100644 --- a/source/visualization/OpenGL/include/G4OpenGLStoredViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLStoredViewer.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLStoredViewer.hh,v 1.5 1999/12/15 14:54:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 7th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLStoredWin32.hh b/source/visualization/OpenGL/include/G4OpenGLStoredWin32.hh index 3d3c9e4129..e36f22929f 100644 --- a/source/visualization/OpenGL/include/G4OpenGLStoredWin32.hh +++ b/source/visualization/OpenGL/include/G4OpenGLStoredWin32.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLStoredWin32.hh,v 1.4 1999/12/15 14:54:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // OpenGLStoredWin32 graphics system factory. diff --git a/source/visualization/OpenGL/include/G4OpenGLStoredWin32Viewer.hh b/source/visualization/OpenGL/include/G4OpenGLStoredWin32Viewer.hh index 738afee5d2..7ac27c5a15 100644 --- a/source/visualization/OpenGL/include/G4OpenGLStoredWin32Viewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLStoredWin32Viewer.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLStoredWin32Viewer.hh,v 1.2 1999/12/15 14:54:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Class G4OpenGLStoredWin32Viewer : a class derived from diff --git a/source/visualization/OpenGL/include/G4OpenGLStoredX.hh b/source/visualization/OpenGL/include/G4OpenGLStoredX.hh index 05c3bfcb42..736319fc9c 100644 --- a/source/visualization/OpenGL/include/G4OpenGLStoredX.hh +++ b/source/visualization/OpenGL/include/G4OpenGLStoredX.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLStoredX.hh,v 1.5 1999/12/15 14:54:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLStoredXViewer.hh b/source/visualization/OpenGL/include/G4OpenGLStoredXViewer.hh index b0c011e215..7c8e95d2f1 100644 --- a/source/visualization/OpenGL/include/G4OpenGLStoredXViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLStoredXViewer.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLStoredXViewer.hh,v 1.3 1999/12/15 14:54:04 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 7th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLStoredXm.hh b/source/visualization/OpenGL/include/G4OpenGLStoredXm.hh index 4d07983484..07b5168e09 100644 --- a/source/visualization/OpenGL/include/G4OpenGLStoredXm.hh +++ b/source/visualization/OpenGL/include/G4OpenGLStoredXm.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLStoredXm.hh,v 1.4 1999/12/15 14:54:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLStoredXmViewer.hh b/source/visualization/OpenGL/include/G4OpenGLStoredXmViewer.hh index 9fb220d1e5..3f2a0f5ad4 100644 --- a/source/visualization/OpenGL/include/G4OpenGLStoredXmViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLStoredXmViewer.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLStoredXmViewer.hh,v 1.2 1999/12/15 14:54:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLTransform3D.hh b/source/visualization/OpenGL/include/G4OpenGLTransform3D.hh index 913341ac79..8ee0854b39 100644 --- a/source/visualization/OpenGL/include/G4OpenGLTransform3D.hh +++ b/source/visualization/OpenGL/include/G4OpenGLTransform3D.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLTransform3D.hh,v 1.3 1999/12/15 14:54:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 24th October 1996 diff --git a/source/visualization/OpenGL/include/G4OpenGLViewer.hh b/source/visualization/OpenGL/include/G4OpenGLViewer.hh index 2a3099fb08..4ca54a722b 100644 --- a/source/visualization/OpenGL/include/G4OpenGLViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLViewer.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLViewer.hh,v 1.5 1999/12/15 14:54:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 27th March 1996 diff --git a/source/visualization/OpenGL/include/G4OpenGLWin32Viewer.hh b/source/visualization/OpenGL/include/G4OpenGLWin32Viewer.hh index 3fd4c0070c..e455a18ee0 100644 --- a/source/visualization/OpenGL/include/G4OpenGLWin32Viewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLWin32Viewer.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLWin32Viewer.hh,v 1.3 1999/12/15 14:54:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // G4OpenGLWin32Viewer : Class to provide WindowsNT specific diff --git a/source/visualization/OpenGL/include/G4OpenGLXViewer.hh b/source/visualization/OpenGL/include/G4OpenGLXViewer.hh index 39445c0ba0..c145a84f20 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXViewer.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4OpenGLXViewer.hh,v 1.6 1999/12/15 14:54:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4OpenGLXViewer.hh,v 1.8 2000/05/22 08:06:50 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 7th February 1997 @@ -56,7 +56,7 @@ protected: void printBuffer(GLint, GLfloat*); GLfloat* spewPrimitiveEPS (FILE*, GLfloat*); void spewSortedFeedback (FILE*, GLint, GLfloat*); - void spewWireframeEPS (FILE*, GLint, GLfloat*, char*); + void spewWireframeEPS (FILE*, GLint, GLfloat*, const char*); void print3DcolorVertex(GLint, GLint*, GLfloat*); G4float pointSize; @@ -73,6 +73,8 @@ protected: XWindowAttributes xwa; Display *dpy; + static XVisualInfo *vi_single_buffer; + static XVisualInfo *vi_double_buffer; XVisualInfo *vi_immediate, *vi_stored, *vi; diff --git a/source/visualization/OpenGL/include/G4OpenGLXmBox.hh b/source/visualization/OpenGL/include/G4OpenGLXmBox.hh index 1b4b31a90f..cf3da9c2a5 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmBox.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmBox.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmBox.hh,v 1.3 1999/12/15 14:54:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //Box container class diff --git a/source/visualization/OpenGL/include/G4OpenGLXmConvenienceRoutines.hh b/source/visualization/OpenGL/include/G4OpenGLXmConvenienceRoutines.hh index 5b9f2262ee..deb63fb5a6 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmConvenienceRoutines.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmConvenienceRoutines.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmConvenienceRoutines.hh,v 1.3 1999/12/15 14:54:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/visualization/OpenGL/include/G4OpenGLXmFourArrowButtons.hh b/source/visualization/OpenGL/include/G4OpenGLXmFourArrowButtons.hh index 2869389dad..c5f5b44d66 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmFourArrowButtons.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmFourArrowButtons.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmFourArrowButtons.hh,v 1.3 1999/12/15 14:54:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 970e907358..2d46af5a2b 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmFramedBox.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmFramedBox.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmFramedBox.hh,v 1.3 1999/12/15 14:54:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //Framed box container class diff --git a/source/visualization/OpenGL/include/G4OpenGLXmMainMenubarCallbacks.hh b/source/visualization/OpenGL/include/G4OpenGLXmMainMenubarCallbacks.hh index bcefd66a4c..871600f1c1 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmMainMenubarCallbacks.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmMainMenubarCallbacks.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmMainMenubarCallbacks.hh,v 1.3 1999/12/15 14:54:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/visualization/OpenGL/include/G4OpenGLXmPanningCallbacks.hh b/source/visualization/OpenGL/include/G4OpenGLXmPanningCallbacks.hh index b828ac982d..7ce46d8f49 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmPanningCallbacks.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmPanningCallbacks.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmPanningCallbacks.hh,v 1.3 1999/12/15 14:54:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/visualization/OpenGL/include/G4OpenGLXmPushButton.hh b/source/visualization/OpenGL/include/G4OpenGLXmPushButton.hh index 9cb1b904ea..2018bd39fc 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmPushButton.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmPushButton.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmPushButton.hh,v 1.3 1999/12/15 14:54:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //Push button class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/include/G4OpenGLXmRadioButton.hh b/source/visualization/OpenGL/include/G4OpenGLXmRadioButton.hh index ed6a32493b..2c667de9f1 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmRadioButton.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmRadioButton.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmRadioButton.hh,v 1.3 1999/12/15 14:54:05 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //Radio button class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/include/G4OpenGLXmResources.hh b/source/visualization/OpenGL/include/G4OpenGLXmResources.hh index c4b08ec3b1..51abfbf6af 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmResources.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmResources.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmResources.hh,v 1.3 1999/12/15 14:54:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Default resources file for GEANT4 OpenGL Motif windows. diff --git a/source/visualization/OpenGL/include/G4OpenGLXmRotationCallbacks.hh b/source/visualization/OpenGL/include/G4OpenGLXmRotationCallbacks.hh index 2e1430ed64..e9504ac29c 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmRotationCallbacks.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmRotationCallbacks.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmRotationCallbacks.hh,v 1.3 1999/12/15 14:54:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/visualization/OpenGL/include/G4OpenGLXmSeparator.hh b/source/visualization/OpenGL/include/G4OpenGLXmSeparator.hh index 4b854426ba..86ac209ce8 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmSeparator.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmSeparator.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmSeparator.hh,v 1.3 1999/12/15 14:54:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //Separator class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/include/G4OpenGLXmSliderBar.hh b/source/visualization/OpenGL/include/G4OpenGLXmSliderBar.hh index 62177229ab..eb8a9b274e 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmSliderBar.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmSliderBar.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmSliderBar.hh,v 1.3 1999/12/15 14:54:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //Slider bar class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/include/G4OpenGLXmStyleCallbacks.hh b/source/visualization/OpenGL/include/G4OpenGLXmStyleCallbacks.hh index 37e03d94f1..d2969bf7ff 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmStyleCallbacks.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmStyleCallbacks.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmStyleCallbacks.hh,v 1.3 1999/12/15 14:54:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/visualization/OpenGL/include/G4OpenGLXmTextField.hh b/source/visualization/OpenGL/include/G4OpenGLXmTextField.hh index 6d6a13f843..f6e678bc46 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmTextField.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmTextField.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmTextField.hh,v 1.3 1999/12/15 14:54:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //Text field class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/include/G4OpenGLXmTopLevelShell.hh b/source/visualization/OpenGL/include/G4OpenGLXmTopLevelShell.hh index f765b2a277..d7c593b5c8 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmTopLevelShell.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmTopLevelShell.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmTopLevelShell.hh,v 1.3 1999/12/15 14:54:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // //Top level shell class diff --git a/source/visualization/OpenGL/include/G4OpenGLXmVWidgetComponent.hh b/source/visualization/OpenGL/include/G4OpenGLXmVWidgetComponent.hh index ebc7c15af2..b17c8c85a3 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmVWidgetComponent.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmVWidgetComponent.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmVWidgetComponent.hh,v 1.3 1999/12/15 14:54:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 c6bd941c80..ab882b9f18 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmVWidgetContainer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmVWidgetContainer.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmVWidgetContainer.hh,v 1.3 1999/12/15 14:54:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 913eecd00c..d18cbde02c 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmVWidgetObject.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmVWidgetObject.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmVWidgetObject.hh,v 1.3 1999/12/15 14:54:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 a44dcb2c86..933f9bde7e 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmVWidgetShell.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmVWidgetShell.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmVWidgetShell.hh,v 1.3 1999/12/15 14:54:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 f91592b08e..115b0810bb 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmViewer.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmViewer.hh,v 1.3 1999/12/15 14:54:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLXmWindowHandlingCallbacks.hh b/source/visualization/OpenGL/include/G4OpenGLXmWindowHandlingCallbacks.hh index 2411e8e4af..ec6792e457 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmWindowHandlingCallbacks.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmWindowHandlingCallbacks.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmWindowHandlingCallbacks.hh,v 1.3 1999/12/15 14:54:06 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateSceneHandler.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateSceneHandler.cc index 9af65edfdb..584096f13f 100644 --- a/source/visualization/OpenGL/src/G4OpenGLImmediateSceneHandler.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateSceneHandler.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLImmediateSceneHandler.cc,v 1.3 1999/12/15 14:54:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateViewer.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateViewer.cc index 59b769274c..f80a6bf72a 100644 --- a/source/visualization/OpenGL/src/G4OpenGLImmediateViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateViewer.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLImmediateViewer.cc,v 1.3 1999/12/15 14:54:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 7th February 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateWin32.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateWin32.cc index 5d56d4d5ee..2e6c3deb46 100644 --- a/source/visualization/OpenGL/src/G4OpenGLImmediateWin32.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateWin32.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLImmediateWin32.cc,v 1.4 1999/12/15 14:54:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // OpenGLImmediateWin32 graphics system factory. diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateWin32Viewer.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateWin32Viewer.cc index eeda456dde..c6f75f36c2 100644 --- a/source/visualization/OpenGL/src/G4OpenGLImmediateWin32Viewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateWin32Viewer.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLImmediateWin32Viewer.cc,v 1.2 1999/12/15 14:54:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Class G4OpenGLImmediateWin32Viewer : a class derived from G4OpenGLWin32Viewer and diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateX.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateX.cc index 08ce55cf6b..0483e1fcef 100644 --- a/source/visualization/OpenGL/src/G4OpenGLImmediateX.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateX.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLImmediateX.cc,v 1.5 1999/12/15 14:54:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 27th March 1996 diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateXViewer.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateXViewer.cc index 3cfbfccbb5..36674ca889 100644 --- a/source/visualization/OpenGL/src/G4OpenGLImmediateXViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateXViewer.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4OpenGLImmediateXViewer.cc,v 1.3 1999/12/15 14:54:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4OpenGLImmediateXViewer.cc,v 1.4 2000/05/22 08:16:25 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 7th February 1997 @@ -47,10 +47,10 @@ G4VViewer (scene, scene.IncrementViewCount (), name) { CreateGLXContext (vi_immediate); - InitializeGLView (); - CreateMainWindow (); + InitializeGLView (); + // clear the buffers and window. ClearView (); FinishView (); diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateXm.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateXm.cc index 1ecfb88384..74c6532140 100644 --- a/source/visualization/OpenGL/src/G4OpenGLImmediateXm.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateXm.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLImmediateXm.cc,v 1.4 1999/12/15 14:54:07 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateXmViewer.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateXmViewer.cc index 7322594a88..e5174f1ca7 100644 --- a/source/visualization/OpenGL/src/G4OpenGLImmediateXmViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateXmViewer.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4OpenGLImmediateXmViewer.cc,v 1.2 1999/12/15 14:54:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4OpenGLImmediateXmViewer.cc,v 1.3 2000/05/22 08:16:29 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 10th February 1997 @@ -45,10 +45,10 @@ G4VViewer (scene, scene.IncrementViewCount (), name) { CreateGLXContext (vi_immediate); - InitializeGLView (); - CreateMainWindow (); + InitializeGLView (); + // clear the buffers and window. ClearView (); FinishView (); diff --git a/source/visualization/OpenGL/src/G4OpenGLSceneHandler.cc b/source/visualization/OpenGL/src/G4OpenGLSceneHandler.cc index 0e3444416b..14617e068c 100644 --- a/source/visualization/OpenGL/src/G4OpenGLSceneHandler.cc +++ b/source/visualization/OpenGL/src/G4OpenGLSceneHandler.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4OpenGLSceneHandler.cc,v 1.4 1999/12/15 14:54:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4OpenGLSceneHandler.cc,v 1.5 2000/02/21 16:03:18 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 27th March 1996 @@ -85,8 +85,8 @@ void G4OpenGLSceneHandler::AddPrimitive (const G4Text& text) { G4double size = GetMarkerSize (text, sizeType); G4cerr << "G4OpenGLSceneHandler::AddPrimitive (const G4Text& text) not implemented yet." - << "\n Called with text " << text.GetText () - << " at " << text.GetPosition () + << "\n Called with text \"" << text.GetText () + << "\" at " << text.GetPosition () << ", size " << size << ", offsets " << text.GetXOffset () << ", " << text.GetYOffset () << ", type " << sizeType diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredSceneHandler.cc b/source/visualization/OpenGL/src/G4OpenGLStoredSceneHandler.cc index d49e62ed26..48b306faeb 100644 --- a/source/visualization/OpenGL/src/G4OpenGLStoredSceneHandler.cc +++ b/source/visualization/OpenGL/src/G4OpenGLStoredSceneHandler.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4OpenGLStoredSceneHandler.cc,v 1.6 1999/12/15 14:54:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4OpenGLStoredSceneHandler.cc,v 1.7 2000/04/12 13:09:07 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 10th February 1997 @@ -40,7 +40,7 @@ #include "G4VisAttributes.hh" #include "G4VPhysicalVolume.hh" #include "G4ModelingParameters.hh" - +#include "G4VModel.hh" #include "G4OpenGLStoredSceneHandler.hh" G4OpenGLStoredSceneHandler::G4OpenGLStoredSceneHandler (G4VGraphicsSystem& system, diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredViewer.cc b/source/visualization/OpenGL/src/G4OpenGLStoredViewer.cc index 3279336b29..4c606dc05a 100644 --- a/source/visualization/OpenGL/src/G4OpenGLStoredViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLStoredViewer.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLStoredViewer.cc,v 1.4 1999/12/15 14:54:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 7th February 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredWin32.cc b/source/visualization/OpenGL/src/G4OpenGLStoredWin32.cc index c09585eea7..93c4cd7bf3 100644 --- a/source/visualization/OpenGL/src/G4OpenGLStoredWin32.cc +++ b/source/visualization/OpenGL/src/G4OpenGLStoredWin32.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLStoredWin32.cc,v 1.4 1999/12/15 14:54:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // OpenGLStoredWin32 graphics system factory. diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredWin32Viewer.cc b/source/visualization/OpenGL/src/G4OpenGLStoredWin32Viewer.cc index 753871bd7d..0c7db84025 100644 --- a/source/visualization/OpenGL/src/G4OpenGLStoredWin32Viewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLStoredWin32Viewer.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLStoredWin32Viewer.cc,v 1.2 1999/12/15 14:54:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Class G4OpenGLStoredWin32Viewer : a class derived from G4OpenGLWin32Viewer and diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredX.cc b/source/visualization/OpenGL/src/G4OpenGLStoredX.cc index a5d41b9085..d649790527 100644 --- a/source/visualization/OpenGL/src/G4OpenGLStoredX.cc +++ b/source/visualization/OpenGL/src/G4OpenGLStoredX.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLStoredX.cc,v 1.5 1999/12/15 14:54:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredXViewer.cc b/source/visualization/OpenGL/src/G4OpenGLStoredXViewer.cc index 0bfcbb7f1f..0ca1945c64 100644 --- a/source/visualization/OpenGL/src/G4OpenGLStoredXViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLStoredXViewer.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4OpenGLStoredXViewer.cc,v 1.3 1999/12/15 14:54:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4OpenGLStoredXViewer.cc,v 1.4 2000/05/22 08:16:36 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 7th February 1997 @@ -46,10 +46,10 @@ G4VViewer (scene, scene.IncrementViewCount (), name) { CreateGLXContext (vi_stored); - InitializeGLView (); - CreateMainWindow (); + InitializeGLView (); + // clear the buffers and window. ClearView (); FinishView (); diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredXm.cc b/source/visualization/OpenGL/src/G4OpenGLStoredXm.cc index a9acdb599e..fdffc3f052 100644 --- a/source/visualization/OpenGL/src/G4OpenGLStoredXm.cc +++ b/source/visualization/OpenGL/src/G4OpenGLStoredXm.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLStoredXm.cc,v 1.4 1999/12/15 14:54:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredXmViewer.cc b/source/visualization/OpenGL/src/G4OpenGLStoredXmViewer.cc index 411f16c826..3cf8415833 100644 --- a/source/visualization/OpenGL/src/G4OpenGLStoredXmViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLStoredXmViewer.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4OpenGLStoredXmViewer.cc,v 1.2 1999/12/15 14:54:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4OpenGLStoredXmViewer.cc,v 1.3 2000/05/22 08:16:42 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 10th February 1997 @@ -43,10 +43,10 @@ G4VViewer (scene, scene.IncrementViewCount (), name) { CreateGLXContext (vi_stored); - InitializeGLView (); - CreateMainWindow (); + InitializeGLView (); + // clear the buffers and window. ClearView (); FinishView (); @@ -57,7 +57,6 @@ G4VViewer (scene, scene.IncrementViewCount (), name) { glEnable (GL_BLEND); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glShadeModel (GL_FLAT); - } void G4OpenGLStoredXmViewer::DrawView () { diff --git a/source/visualization/OpenGL/src/G4OpenGLTransform3D.cc b/source/visualization/OpenGL/src/G4OpenGLTransform3D.cc index 8e7069a2d0..a8ea6b9a43 100644 --- a/source/visualization/OpenGL/src/G4OpenGLTransform3D.cc +++ b/source/visualization/OpenGL/src/G4OpenGLTransform3D.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLTransform3D.cc,v 1.3 1999/12/15 14:54:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 24th October 1996 diff --git a/source/visualization/OpenGL/src/G4OpenGLViewer.cc b/source/visualization/OpenGL/src/G4OpenGLViewer.cc index a4498ed438..c820f697ff 100644 --- a/source/visualization/OpenGL/src/G4OpenGLViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLViewer.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4OpenGLViewer.cc,v 1.4 1999/12/15 14:54:08 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4OpenGLViewer.cc,v 1.8 2000/05/22 08:09:15 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 27th March 1996 @@ -25,6 +25,7 @@ #include #include +#include "G4Scene.hh" #include "G4VisExtent.hh" #include "G4LogicalVolume.hh" #include "G4VSolid.hh" @@ -33,12 +34,12 @@ #include "G4Plane3D.hh" int G4OpenGLViewer::snglBuf_RGBA[10] = -{ GLX_RGBA, GLX_RED_SIZE, 3, GLX_GREEN_SIZE, 3, - GLX_BLUE_SIZE, 2, GLX_DEPTH_SIZE, 1, None }; +{ GLX_RGBA, GLX_RED_SIZE, 1, GLX_GREEN_SIZE, 1, + GLX_BLUE_SIZE, 1, GLX_DEPTH_SIZE, 1, None }; int G4OpenGLViewer::dblBuf_RGBA[11] = -{ GLX_RGBA, GLX_RED_SIZE, 3, GLX_GREEN_SIZE, 3, - GLX_BLUE_SIZE, 2, GLX_DOUBLEBUFFER, GLX_DEPTH_SIZE, 1, None }; +{ GLX_RGBA, GLX_RED_SIZE, 1, GLX_GREEN_SIZE, 1, + GLX_BLUE_SIZE, 1, GLX_DOUBLEBUFFER, GLX_DEPTH_SIZE, 1, None }; G4OpenGLViewer::G4OpenGLViewer (G4OpenGLSceneHandler& scene): G4VViewer (scene, -1), @@ -95,16 +96,16 @@ void G4OpenGLViewer::SetView () { glLightfv (GL_LIGHT0, GL_AMBIENT, ambient); glLightfv (GL_LIGHT0, GL_DIFFUSE, diffuse); - const G4Point3D& target = fVP.GetCurrentTargetPoint (); - - // Get radius of scene. + // Get radius of scene, etc. + // Note that this procedure properly takes into account zoom, dolly and pan. + const G4Point3D& targetPoint + = fSceneHandler.GetScene()->GetStandardTargetPoint() + + fVP.GetCurrentTargetPoint (); G4double radius = fSceneHandler.GetScene()->GetExtent().GetExtentRadius(); if(radius<=0.) radius = 1.; const G4double cameraDistance = fVP.GetCameraDistance (radius); - - const G4Point3D& pCamera = - target + cameraDistance * fVP.GetViewpointDirection().unit(); - + const G4Point3D cameraPosition = + targetPoint + cameraDistance * fVP.GetViewpointDirection().unit(); const GLdouble near = fVP.GetNearDistance (cameraDistance, radius); const GLdouble far = fVP.GetFarDistance (cameraDistance, near, radius); const GLdouble right = fVP.GetFrontHalfHeight (near, radius); @@ -128,12 +129,13 @@ void G4OpenGLViewer::SetView () { const G4Normal3D& upVector = fVP.GetUpVector (); G4Point3D gltarget; if (cameraDistance > 1.e-6 * radius) { - gltarget = target; + gltarget = targetPoint; } else { - gltarget = target - radius * fVP.GetViewpointDirection().unit(); + gltarget = targetPoint - radius * fVP.GetViewpointDirection().unit(); } - + + const G4Point3D& pCamera = cameraPosition; // An alias for brevity. gluLookAt (pCamera.x(), pCamera.y(), pCamera.z(), // Viewpoint. gltarget.x(), gltarget.y(), gltarget.z(), // Target point. upVector.x(), upVector.y(), upVector.z()); // Up vector. diff --git a/source/visualization/OpenGL/src/G4OpenGLWin32Viewer.cc b/source/visualization/OpenGL/src/G4OpenGLWin32Viewer.cc index 80e2bebb47..e3411d2d97 100644 --- a/source/visualization/OpenGL/src/G4OpenGLWin32Viewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLWin32Viewer.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLWin32Viewer.cc,v 1.2 1999/12/15 14:54:09 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // G4OpenGLWin32Viewer : Class to provide WindowsNT specific diff --git a/source/visualization/OpenGL/src/G4OpenGLXViewer.cc b/source/visualization/OpenGL/src/G4OpenGLXViewer.cc index fd806254f4..9afbd3c0e9 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXViewer.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4OpenGLXViewer.cc,v 1.6 1999/12/15 18:08:30 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4OpenGLXViewer.cc,v 1.8 2000/05/22 08:07:20 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 7th February 1997 @@ -44,6 +44,9 @@ #define USE_DEFAULT_COLORMAP 1 #define USE_STANDARD_COLORMAP 0 +XVisualInfo* G4OpenGLXViewer::vi_single_buffer = 0; +XVisualInfo* G4OpenGLXViewer::vi_double_buffer = 0; + extern "C" { static Bool WaitForNotify (Display*, XEvent* e, char* arg) { @@ -237,16 +240,34 @@ vectored_ps (true) // Try for a visual suitable for OpenGLImmediate.. // first try for a single buffered RGB window - if (vi_immediate = - glXChooseVisual (dpy, XDefaultScreen (dpy), snglBuf_RGBA)) { + if (!vi_single_buffer) { + vi_single_buffer = + glXChooseVisual (dpy, XDefaultScreen (dpy), snglBuf_RGBA); + } + if (!vi_single_buffer) { + G4cout << + "G4OpenGLXViewer::G4OpenGLXViewer: unable to get a single buffer visual." + << G4endl; + } + + if (!vi_double_buffer) { + vi_double_buffer = + glXChooseVisual (dpy, XDefaultScreen (dpy), dblBuf_RGBA); + } + if (!vi_double_buffer) { + G4cout << + "G4OpenGLXViewer::G4OpenGLXViewer: unable to get a double buffer visual." + << G4endl; + } + + if (vi_immediate = vi_single_buffer) { attributeList = snglBuf_RGBA; doublebuffer = false; } if (!vi_immediate){ // next try for a double buffered RGB, but Draw to top buffer - if (vi_immediate = - glXChooseVisual (dpy, XDefaultScreen (dpy), dblBuf_RGBA)) { + if (vi_immediate = vi_double_buffer) { attributeList = dblBuf_RGBA; doublebuffer = true; } @@ -254,7 +275,7 @@ vectored_ps (true) // Now try for a visual suitable for OpenGLStored... // Try for a double buffered RGB window - if (vi_stored = glXChooseVisual (dpy, XDefaultScreen (dpy), dblBuf_RGBA)) { + if (vi_stored = vi_double_buffer) { attributeList = dblBuf_RGBA; doublebuffer = true; } @@ -269,7 +290,8 @@ G4OpenGLXViewer::~G4OpenGLXViewer () { //Close a window from here glXDestroyContext (dpy, cx); glXMakeCurrent (dpy, None, NULL); - XDestroyWindow (dpy, win); + if (win) XDestroyWindow (dpy, win); // ...if already deleted in + // sub-class G4OpenGLXmViewer. XFlush (dpy); } } @@ -367,7 +389,7 @@ void G4OpenGLXViewer::print3DcolorVertex(GLint size, GLint * count, GLfloat * bu printf("\n"); } -void G4OpenGLXViewer::spewWireframeEPS (FILE* file, GLint size, GLfloat* buffer, char* cr) { +void G4OpenGLXViewer::spewWireframeEPS (FILE* file, GLint size, GLfloat* buffer, const char* cr) { GLfloat EPS_GOURAUD_THRESHOLD=0.1; diff --git a/source/visualization/OpenGL/src/G4OpenGLXmBox.cc b/source/visualization/OpenGL/src/G4OpenGLXmBox.cc index 79b31e7250..132bb9d087 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmBox.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmBox.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmBox.cc,v 1.3 1999/12/15 14:54:09 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // //Box container class diff --git a/source/visualization/OpenGL/src/G4OpenGLXmConvenienceRoutines.cc b/source/visualization/OpenGL/src/G4OpenGLXmConvenienceRoutines.cc index 7cabe78eb3..5075bfe88c 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmConvenienceRoutines.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmConvenienceRoutines.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmConvenienceRoutines.cc,v 1.3 1999/12/15 14:54:09 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 16th April 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLXmFourArrowButtons.cc b/source/visualization/OpenGL/src/G4OpenGLXmFourArrowButtons.cc index 23ddf0ed75..f9cee0bbd7 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmFourArrowButtons.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmFourArrowButtons.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmFourArrowButtons.cc,v 1.3 1999/12/15 14:54:09 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 f37d9c7dbb..a84e2abfb2 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmFramedBox.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmFramedBox.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmFramedBox.cc,v 1.3 1999/12/15 14:54:09 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // //Framed box container class diff --git a/source/visualization/OpenGL/src/G4OpenGLXmMainMenubarCallbacks.cc b/source/visualization/OpenGL/src/G4OpenGLXmMainMenubarCallbacks.cc index de231f82b4..efcdfadc41 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmMainMenubarCallbacks.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmMainMenubarCallbacks.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4OpenGLXmMainMenubarCallbacks.cc,v 1.4 1999/12/15 14:54:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4OpenGLXmMainMenubarCallbacks.cc,v 1.6 2000/05/02 10:09:04 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 16th April 1997 @@ -24,6 +24,8 @@ #include "G4OpenGLXmViewer.hh" +#include "G4Scene.hh" + #include "G4OpenGLXmRadioButton.hh" #include "G4OpenGLXmSliderBar.hh" #include "G4OpenGLXmFourArrowButtons.hh" @@ -60,7 +62,7 @@ void G4OpenGLXmViewer::actions_callback (Widget w, char* frot_Name = new char [rot_len]; G4std::ostrstream rot_ost (frot_Name, rot_len); rot_ost.seekp (G4std::ios::beg); - rot_ost << pView->GetScene()->GetSceneId() << '-' << pView->fViewId << G4std::ends; + rot_ost << pView->GetSceneHandler()->GetSceneHandlerId() << '-' << pView->fViewId << G4std::ends; pView->fprotation_top = new G4OpenGLXmTopLevelShell (pView, frot_Name); @@ -145,7 +147,7 @@ void G4OpenGLXmViewer::actions_callback (Widget w, char* fpan_Name = new char [pan_len]; G4std::ostrstream pan_ost (fpan_Name, pan_len); pan_ost.seekp (G4std::ios::beg); - pan_ost << pView->GetScene()->GetSceneId() << '-' << pView->fViewId << G4std::ends; + pan_ost << pView->GetSceneHandler()->GetSceneHandlerId() << '-' << pView->fViewId << G4std::ends; pView->fppanning_top = new G4OpenGLXmTopLevelShell (pView, fpan_Name); @@ -188,8 +190,8 @@ void G4OpenGLXmViewer::actions_callback (Widget w, pan_slider_list, True, 2, - pView->pan_sens = pView->GetScene()->GetScene()->GetExtent().GetExtentRadius() / 10.0, - pView->pan_sens_limit = pView->GetScene()->GetScene()->GetExtent().GetExtentRadius(), + pView->pan_sens = pView->GetSceneHandler()->GetScene()->GetExtent().GetExtentRadius() / 10.0, + pView->pan_sens_limit = pView->GetSceneHandler()->GetScene()->GetExtent().GetExtentRadius(), 0); pView->fppanning_box->AddChild (pView->fppanning_slider); @@ -225,8 +227,8 @@ void G4OpenGLXmViewer::actions_callback (Widget w, True, 2, pView->fVP.GetDolly(), - pView->dolly_high = pView->GetScene()->GetScene()->GetExtent().GetExtentRadius(), - pView->dolly_low = -(pView->GetScene()->GetScene()->GetExtent().GetExtentRadius())); + pView->dolly_high = pView->GetSceneHandler()->GetScene()->GetExtent().GetExtentRadius(), + pView->dolly_low = -(pView->GetSceneHandler()->GetScene()->GetExtent().GetExtentRadius())); // pView->dolly_high, // pView->dolly_low); pView->fpdolly_box->AddChild (pView->fpdolly_slider); @@ -245,7 +247,7 @@ void G4OpenGLXmViewer::actions_callback (Widget w, char* fset_Name = new char [set_len]; G4std::ostrstream set_ost (fset_Name, set_len); set_ost.seekp (G4std::ios::beg); - set_ost << pView->GetScene()->GetSceneId() << '-' << pView->fViewId << G4std::ends; + set_ost << pView->GetSceneHandler()->GetSceneHandlerId() << '-' << pView->fViewId << G4std::ends; pView->fpsetting_top = new G4OpenGLXmTopLevelShell(pView, fset_Name); @@ -326,7 +328,7 @@ void G4OpenGLXmViewer::misc_callback (Widget w, char* fmisc_Name = new char [misc_len]; G4std::ostrstream misc_ost (fmisc_Name, misc_len); misc_ost.seekp (G4std::ios::beg); - misc_ost << pView->GetScene()->GetSceneId() << '-' << pView->fViewId << G4std::ends; + misc_ost << pView->GetSceneHandler()->GetSceneHandlerId() << '-' << pView->fViewId << G4std::ends; pView->fpmiscellany_top = new G4OpenGLXmTopLevelShell (pView, fmisc_Name); @@ -421,7 +423,7 @@ void G4OpenGLXmViewer::misc_callback (Widget w, char* fprint_Name = new char [print_len]; G4std::ostrstream print_ost (fprint_Name, print_len); print_ost.seekp (G4std::ios::beg); - print_ost << pView->GetScene()->GetSceneId() << '-' << pView->fViewId << G4std::ends; + print_ost << pView->GetSceneHandler()->GetSceneHandlerId() << '-' << pView->fViewId << G4std::ends; pView->fpprint_top = new G4OpenGLXmTopLevelShell (pView, fprint_Name); diff --git a/source/visualization/OpenGL/src/G4OpenGLXmPanningCallbacks.cc b/source/visualization/OpenGL/src/G4OpenGLXmPanningCallbacks.cc index 5dc3cfcc3c..6dfc5bf1bd 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmPanningCallbacks.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmPanningCallbacks.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4OpenGLXmPanningCallbacks.cc,v 1.3 1999/12/15 14:54:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4OpenGLXmPanningCallbacks.cc,v 1.4 2000/05/13 10:47:52 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 16th April 1997 @@ -20,6 +20,7 @@ #ifdef G4VIS_BUILD_OPENGLXM_DRIVER #include "G4OpenGLXmViewer.hh" +#include "G4Scene.hh" void G4OpenGLXmViewer::zoom_callback (Widget w, XtPointer clientData, @@ -119,7 +120,10 @@ void G4OpenGLXmViewer::left_right_pan_callback (XtPointer clientData, delta = -((G4double)pView->pan_sens); } - G4Point3D tp = pView -> fVP.GetCurrentTargetPoint (); + G4Point3D stp + = pView -> GetSceneHandler()->GetScene()->GetStandardTargetPoint(); + + G4Point3D tp = stp + pView -> fVP.GetCurrentTargetPoint (); const G4Vector3D& upVector = pView->fVP.GetUpVector (); const G4Vector3D& vpVector = pView->fVP.GetViewpointDirection (); @@ -128,7 +132,7 @@ void G4OpenGLXmViewer::left_right_pan_callback (XtPointer clientData, G4Vector3D unitUp = (vpVector.cross (unitRight)).unit(); tp += delta * unitRight; - pView->fVP.SetCurrentTargetPoint (tp); + pView->fVP.SetCurrentTargetPoint (tp - stp); pView->SetView (); pView->ClearView (); @@ -169,14 +173,16 @@ void G4OpenGLXmViewer::up_down_pan_callback (XtPointer clientData, delta = -((G4double)pView->pan_sens); } - G4Point3D tp = pView->fVP.GetCurrentTargetPoint (); + G4Point3D stp + = pView -> GetSceneHandler()->GetScene()->GetStandardTargetPoint(); + G4Point3D tp = stp + pView -> fVP.GetCurrentTargetPoint (); const G4Vector3D& upVector = pView->fVP.GetUpVector (); const G4Vector3D& vpVector = pView->fVP.GetViewpointDirection (); G4Vector3D unitRight = (upVector.cross (vpVector)).unit(); G4Vector3D unitUp = (vpVector.cross (unitRight)).unit(); tp += delta * unitUp; - pView->fVP.SetCurrentTargetPoint (tp); + pView->fVP.SetCurrentTargetPoint (tp - stp); pView->SetView (); pView->ClearView (); diff --git a/source/visualization/OpenGL/src/G4OpenGLXmPushButton.cc b/source/visualization/OpenGL/src/G4OpenGLXmPushButton.cc index 79458b24e2..8ee8403b77 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmPushButton.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmPushButton.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmPushButton.cc,v 1.3 1999/12/15 14:54:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // //Push button class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/src/G4OpenGLXmRadioButton.cc b/source/visualization/OpenGL/src/G4OpenGLXmRadioButton.cc index dc3b6cea8c..c344800f5b 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmRadioButton.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmRadioButton.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmRadioButton.cc,v 1.3 1999/12/15 14:54:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // //Radio button class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/src/G4OpenGLXmRotationCallbacks.cc b/source/visualization/OpenGL/src/G4OpenGLXmRotationCallbacks.cc index aa23bec3d9..d54486178d 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmRotationCallbacks.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmRotationCallbacks.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4OpenGLXmRotationCallbacks.cc,v 1.5 1999/12/15 14:54:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4OpenGLXmRotationCallbacks.cc,v 1.7 2000/05/13 10:48:03 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 16th April 1997 @@ -19,6 +19,7 @@ #include "G4OpenGLXmViewer.hh" +#include "G4Scene.hh" #include "G4UImanager.hh" #include "G4ios.hh" @@ -269,7 +270,7 @@ void G4OpenGLXmViewer::reset_callback (Widget w, XmNuserData, &pView, NULL); - pView->fVP.SetCurrentTargetPoint(pView->fSceneHandler.GetScene()->GetStandardTargetPoint()); + pView->fVP.SetCurrentTargetPoint(G4Point3D()); pView->fVP.SetZoomFactor(1.0); pView->fVP.SetDolly(0.0); pView->SetView (); diff --git a/source/visualization/OpenGL/src/G4OpenGLXmSeparator.cc b/source/visualization/OpenGL/src/G4OpenGLXmSeparator.cc index 155d171e32..f7f5090280 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmSeparator.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmSeparator.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmSeparator.cc,v 1.3 1999/12/15 14:54:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // //Separator class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/src/G4OpenGLXmSliderBar.cc b/source/visualization/OpenGL/src/G4OpenGLXmSliderBar.cc index 69deb62e46..9df65b441e 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmSliderBar.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmSliderBar.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmSliderBar.cc,v 1.3 1999/12/15 14:54:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // //Slider bar class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/src/G4OpenGLXmStyleCallbacks.cc b/source/visualization/OpenGL/src/G4OpenGLXmStyleCallbacks.cc index 6e5fd46c85..9ed63535ad 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmStyleCallbacks.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmStyleCallbacks.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmStyleCallbacks.cc,v 1.3 1999/12/15 14:54:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 16th April 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLXmTextField.cc b/source/visualization/OpenGL/src/G4OpenGLXmTextField.cc index 6fc6d4306f..7ea7f8891a 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmTextField.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmTextField.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmTextField.cc,v 1.3 1999/12/15 14:54:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // //Text field class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/src/G4OpenGLXmTopLevelShell.cc b/source/visualization/OpenGL/src/G4OpenGLXmTopLevelShell.cc index 973ab97687..7ec972b864 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmTopLevelShell.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmTopLevelShell.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmTopLevelShell.cc,v 1.3 1999/12/15 14:54:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // //Top level shell class diff --git a/source/visualization/OpenGL/src/G4OpenGLXmVWidgetComponent.cc b/source/visualization/OpenGL/src/G4OpenGLXmVWidgetComponent.cc index 47d758da3f..b3336c4435 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmVWidgetComponent.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmVWidgetComponent.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmVWidgetComponent.cc,v 1.3 1999/12/15 14:54:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 45226a7c4b..5747f64e86 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmVWidgetContainer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmVWidgetContainer.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmVWidgetContainer.cc,v 1.3 1999/12/15 14:54:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 e9d9ea2fb4..555f3b8b4d 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmVWidgetObject.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmVWidgetObject.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmVWidgetObject.cc,v 1.3 1999/12/15 14:54:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 918a88ca50..c6fc093807 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmVWidgetShell.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmVWidgetShell.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmVWidgetShell.cc,v 1.3 1999/12/15 14:54:10 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 b141f1e6c8..930ac34cda 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmViewer.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4OpenGLXmViewer.cc,v 1.3 1999/12/15 14:54:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4OpenGLXmViewer.cc,v 1.4 2000/05/22 08:14:00 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 10th February 1997 @@ -587,40 +587,17 @@ fpdolly_slider (NULL) WinSize_x = 100; WinSize_y = 100; - vi_immediate = 0; - vi_stored = 0; GetXmConnection (); if (fViewId < 0) return; - // Try for a visual suitable for OpenGLImmediate.. - // first try for a single buffered RGB window - if (vi_immediate = - glXChooseVisual (dpy, XDefaultScreen (dpy), snglBuf_RGBA)) { - attributeList = snglBuf_RGBA; - doublebuffer = false; - } - - if (!vi_immediate){ - // next try for a double buffered RGB, but Draw to top buffer - if (vi_immediate = - glXChooseVisual (dpy, XDefaultScreen (dpy), dblBuf_RGBA)) { - attributeList = dblBuf_RGBA; - doublebuffer = true; - } - } - - // Now try for a visual suitable for OpenGLStored... - // Try for a double buffered RGB window - if (vi_stored = glXChooseVisual (dpy, XDefaultScreen (dpy), dblBuf_RGBA)) { - attributeList = dblBuf_RGBA; - doublebuffer = true; - } - } + G4OpenGLXmViewer::~G4OpenGLXmViewer () { XtDestroyWidget (shell); + win = 0; // ...to avoid XDestroyWindow in G4OpenGLXViewer base class + // because XtDestroyWidget has already destroyed it. G4Xt::getInstance () ->RemoveShell (shell); /****************************** diff --git a/source/visualization/OpenGL/src/G4OpenGLXmWindowHandlingCallbacks.cc b/source/visualization/OpenGL/src/G4OpenGLXmWindowHandlingCallbacks.cc index 87f6a3392d..4285ce9aa9 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmWindowHandlingCallbacks.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmWindowHandlingCallbacks.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenGLXmWindowHandlingCallbacks.cc,v 1.3 1999/12/15 14:54:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 16th June 1997 diff --git a/source/visualization/OpenInventor/GNUmakefile b/source/visualization/OpenInventor/GNUmakefile index 66edd73279..b64c8e5325 100644 --- a/source/visualization/OpenInventor/GNUmakefile +++ b/source/visualization/OpenInventor/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.2 1999/04/15 15:27:58 johna Exp $ +# $Id: GNUmakefile,v 1.3 2000/04/07 14:52:50 johna Exp $ name := G4OpenInventor @@ -15,6 +15,7 @@ CPPFLAGS += -I$(G4BASE)/visualization/modeling/include CPPFLAGS += -I$(G4BASE)/global/management/include CPPFLAGS += -I$(G4BASE)/global/HEPGeometry/include CPPFLAGS += -I$(G4BASE)/geometry/solids/CSG/include +CPPFLAGS += -I$(G4BASE)/geometry/solids/specific/include CPPFLAGS += -I$(G4BASE)/graphics_reps/include CPPFLAGS += -I$(G4BASE)/geometry/management/include CPPFLAGS += -I$(G4BASE)/geometry/volumes/include diff --git a/source/visualization/OpenInventor/include/G4OpenInventor.hh b/source/visualization/OpenInventor/include/G4OpenInventor.hh index 5adb48b3a3..cab29e198d 100644 --- a/source/visualization/OpenInventor/include/G4OpenInventor.hh +++ b/source/visualization/OpenInventor/include/G4OpenInventor.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenInventor.hh,v 1.5 1999/12/15 14:54:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 e0f87cac23..827876a0d5 100644 --- a/source/visualization/OpenInventor/include/G4OpenInventorSceneHandler.hh +++ b/source/visualization/OpenInventor/include/G4OpenInventorSceneHandler.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenInventorSceneHandler.hh,v 1.8 1999/12/16 17:25:08 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // J Kallenbach 27th Aug 1996 diff --git a/source/visualization/OpenInventor/include/G4OpenInventorSceneHandler.icc b/source/visualization/OpenInventor/include/G4OpenInventorSceneHandler.icc index e96d16d4c3..2d51c2a8ee 100644 --- a/source/visualization/OpenInventor/include/G4OpenInventorSceneHandler.icc +++ b/source/visualization/OpenInventor/include/G4OpenInventorSceneHandler.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenInventorSceneHandler.icc,v 1.3 1999/12/16 17:25:10 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // J Kallenbach 27th Aug 1996 diff --git a/source/visualization/OpenInventor/include/G4OpenInventorTransform3D.hh b/source/visualization/OpenInventor/include/G4OpenInventorTransform3D.hh index 37662c6d88..23039965b0 100644 --- a/source/visualization/OpenInventor/include/G4OpenInventorTransform3D.hh +++ b/source/visualization/OpenInventor/include/G4OpenInventorTransform3D.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenInventorTransform3D.hh,v 1.3 1999/12/15 14:54:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // jck 17 Dec 1996 diff --git a/source/visualization/OpenInventor/include/G4OpenInventorViewer.hh b/source/visualization/OpenInventor/include/G4OpenInventorViewer.hh index c725823b4a..9c00540943 100644 --- a/source/visualization/OpenInventor/include/G4OpenInventorViewer.hh +++ b/source/visualization/OpenInventor/include/G4OpenInventorViewer.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenInventorViewer.hh,v 1.6 1999/12/15 14:54:11 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Jeff Kallenbach 01 Aug 1996 diff --git a/source/visualization/OpenInventor/include/G4OpenInventorWin32.hh b/source/visualization/OpenInventor/include/G4OpenInventorWin32.hh index 937cf5559b..0183d378df 100644 --- a/source/visualization/OpenInventor/include/G4OpenInventorWin32.hh +++ b/source/visualization/OpenInventor/include/G4OpenInventorWin32.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenInventorWin32.hh,v 1.4 1999/12/15 14:54:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // OpenInventor graphics system factory. diff --git a/source/visualization/OpenInventor/include/G4OpenInventorX.hh b/source/visualization/OpenInventor/include/G4OpenInventorX.hh index eca77545e0..2a8477c8a4 100644 --- a/source/visualization/OpenInventor/include/G4OpenInventorX.hh +++ b/source/visualization/OpenInventor/include/G4OpenInventorX.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenInventorX.hh,v 1.4 1999/12/15 14:54:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Andrew Walkden 27th March 1996 diff --git a/source/visualization/OpenInventor/src/G4OpenInventor.cc b/source/visualization/OpenInventor/src/G4OpenInventor.cc index e7965702a2..d6eed6ad98 100644 --- a/source/visualization/OpenInventor/src/G4OpenInventor.cc +++ b/source/visualization/OpenInventor/src/G4OpenInventor.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenInventor.cc,v 1.6 1999/12/15 14:54:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifdef G4VIS_BUILD_OI_DRIVER diff --git a/source/visualization/OpenInventor/src/G4OpenInventorSceneHandler.cc b/source/visualization/OpenInventor/src/G4OpenInventorSceneHandler.cc index 71a27090c1..c08571497c 100644 --- a/source/visualization/OpenInventor/src/G4OpenInventorSceneHandler.cc +++ b/source/visualization/OpenInventor/src/G4OpenInventorSceneHandler.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4OpenInventorSceneHandler.cc,v 1.6 1999/12/15 14:54:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4OpenInventorSceneHandler.cc,v 1.8 2000/05/28 13:42:34 barrand Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Jeff Kallenbach 01 Aug 1996 @@ -45,6 +45,7 @@ #include #include +#include "G4Scene.hh" #include "G4NURBS.hh" #include "G4OpenInventor.hh" #include "G4OpenInventorSceneHandler.hh" @@ -59,6 +60,11 @@ #include "G4Circle.hh" #include "G4Square.hh" #include "G4Polyhedron.hh" +#include "G4Box.hh" +#include "G4Tubs.hh" +#include "G4Cons.hh" +#include "G4Trap.hh" +#include "G4Trd.hh" #include "G4PhysicalVolumeModel.hh" #include "G4ModelingParameters.hh" #include "G4VPhysicalVolume.hh" @@ -75,6 +81,7 @@ G4OpenInventorSceneHandler::G4OpenInventorSceneHandler (G4OpenInventor& system, ,root(NULL) ,staticRoot(NULL) ,transientRoot(NULL) +,currentSeparator(NULL) { // root = new SoSeparator; @@ -90,6 +97,8 @@ G4OpenInventorSceneHandler::G4OpenInventorSceneHandler (G4OpenInventor& system, root->addChild(transientRoot); // fSceneCount++; + // + currentSeparator=transientRoot; } G4OpenInventorSceneHandler::~G4OpenInventorSceneHandler () @@ -102,6 +111,8 @@ G4OpenInventorSceneHandler::~G4OpenInventorSceneHandler () // Method for handling G4Polyline objects (from tracking or wireframe). // void G4OpenInventorSceneHandler::AddPrimitive (const G4Polyline& line) { + if(currentSeparator==NULL) return; + G4int nPoints = line.entries(); SbVec3f* pCoords = new SbVec3f[nPoints]; @@ -154,7 +165,7 @@ void G4OpenInventorSceneHandler::AddPrimitive (const G4Polyline& line) { // Method for handling G4Text objects // void G4OpenInventorSceneHandler::AddPrimitive (const G4Text& text) { - + if(currentSeparator==NULL) return; // // Color // @@ -189,6 +200,7 @@ void G4OpenInventorSceneHandler::AddPrimitive (const G4Text& text) { // Method for handling G4Circle objects // void G4OpenInventorSceneHandler::AddPrimitive (const G4Circle& circle) { + if(currentSeparator==NULL) return; // // Color // @@ -229,7 +241,7 @@ void G4OpenInventorSceneHandler::AddPrimitive (const G4Circle& circle) { // Method for handling G4Square objects - defaults to wireframe // void G4OpenInventorSceneHandler::AddPrimitive (const G4Square& Square) { - + if(currentSeparator==NULL) return; // // Color // @@ -264,6 +276,7 @@ void G4OpenInventorSceneHandler::AddPrimitive (const G4Square& Square) { // Method for handling G4Polyhedron objects for drawing solids. // void G4OpenInventorSceneHandler::AddPrimitive (const G4Polyhedron& polyhedron) { + if(currentSeparator==NULL) return; #define MAXPOLYH 32767 // // Assume all facets are convex quadrilaterals. @@ -368,6 +381,7 @@ void G4OpenInventorSceneHandler::AddPrimitive (const G4Polyhedron& polyhedron) { // Knots and Ctrl Pnts MUST be arrays of GLfloats. // void G4OpenInventorSceneHandler::AddPrimitive (const G4NURBS& nurb) { + if(currentSeparator==NULL) return; G4float *u_knot_array, *u_knot_array_ptr; u_knot_array = u_knot_array_ptr = new G4float [nurb.GetnbrKnots(G4NURBS::U)]; @@ -508,6 +522,7 @@ G4int G4OpenInventorSceneHandler::fSceneCount = 0; // These methods add primitives using the HEPVis classes // void G4OpenInventorSceneHandler::AddThis (const G4Box & Box) { + if(currentSeparator==NULL) return; SoCube *g4Box = new SoCube(); g4Box->width =2*Box.GetXHalfLength(); g4Box->height=2*Box.GetYHalfLength(); @@ -515,6 +530,7 @@ void G4OpenInventorSceneHandler::AddThis (const G4Box & Box) { currentSeparator->addChild(g4Box); } void G4OpenInventorSceneHandler::AddThis (const G4Tubs & Tubs) { + if(currentSeparator==NULL) return; SoG4Tubs *g4Tubs = new SoG4Tubs(); g4Tubs->pRMin = Tubs.GetRMin(); g4Tubs->pRMax = Tubs.GetRMax(); @@ -524,6 +540,7 @@ void G4OpenInventorSceneHandler::AddThis (const G4Tubs & Tubs) { currentSeparator->addChild(g4Tubs); } void G4OpenInventorSceneHandler::AddThis (const G4Cons &cons) { + if(currentSeparator==NULL) return; SoG4Cons *g4Cons = new SoG4Cons(); g4Cons->fRmin1 = cons.GetRmin1(); g4Cons->fRmin2 = cons.GetRmin2(); @@ -536,9 +553,9 @@ void G4OpenInventorSceneHandler::AddThis (const G4Cons &cons) { } void G4OpenInventorSceneHandler::AddThis (const G4Trap &trap) { + if(currentSeparator==NULL) return; G4ThreeVector SymAxis=trap.GetSymAxis(); - - SoG4Trap *g4Trap = new SoG4Trap(); + SoG4Trap *g4Trap = new SoG4Trap(); g4Trap->pDz = trap.GetZHalfLength(); g4Trap->pPhi = atan2(SymAxis(kYAxis),SymAxis(kXAxis)); g4Trap->pTheta = acos(SymAxis(kZAxis)); @@ -552,6 +569,7 @@ void G4OpenInventorSceneHandler::AddThis (const G4Trap &trap) { } void G4OpenInventorSceneHandler::AddThis (const G4Trd &trd) { + if(currentSeparator==NULL) return; SoG4Trd *g4Trd = new SoG4Trd(); g4Trd->fDx1 = trd.GetXHalfLength1(); g4Trd->fDx2 = trd.GetXHalfLength2(); @@ -575,28 +593,37 @@ void G4OpenInventorSceneHandler::PreAddThis // This routines prepares to add solids to the scene database. // We are expecting two // kinds of solids: leaf parts and non-leaf parts. For non-leaf parts, - // we create a detector tree kit. This has two separators. The solid itself - // goes in the preview separator, the full separator is forseen for daughters. + // we create a detector tree kit. This has two separators. + // The solid itself + // goes in the preview separator, the full separator is + // forseen for daughters. // This separator is not only created--it is also put in a dictionary for // future use by the leaf part. // For leaf parts, we first locate the mother volume and find its separator // through the dictionary. - // The private member currentSeparator is set to the proper location on in the - // scene database so that when the solid is actually added (in addthis), it is + // The private member currentSeparator is set to the proper + // location on in the + // scene database so that when the solid is actually + // added (in addthis), it is // put in the right place. // First find the color attributes. // const G4VisAttributes* pVisAttribs = - fpViewer -> GetApplicableVisAttributes (&visAttribs); + fpViewer -> GetApplicableVisAttributes (&visAttribs); const G4Colour& g4Col = pVisAttribs -> GetColour (); const double red=g4Col.GetRed (); const double green=g4Col.GetGreen (); const double blue=g4Col.GetBlue (); - + if(!fpCurrentLV || !fpCurrentPV) return; //GB + + //printf("debug : OIV : LV : %lx %s : %g %g %g\n", + // fpCurrentLV, + // fpCurrentLV->GetName().c_str(), + // red,green,blue); // // This block of code is executed for non-leaf parts: // @@ -635,6 +662,7 @@ void G4OpenInventorSceneHandler::PreAddThis break; } else { + // Could happen if some non-leaf is invisible ! G4cerr << "OIScene non-leaf protocol error. Mother volume " << MotherVolume->GetName() << " missing." << G4endl; G4cerr << " Daughter volume was: " @@ -645,11 +673,10 @@ void G4OpenInventorSceneHandler::PreAddThis } if (!MotherVolume) staticRoot->addChild(g4DetectorTreeKit); currentSeparator = previewSeparator; - } - // - // This block of code is executed for leaf parts. - // - else { + } else { + // + // This block of code is executed for leaf parts. + // // // Locate the mother volume and find it's corresponding full separator // diff --git a/source/visualization/OpenInventor/src/G4OpenInventorTransform3D.cc b/source/visualization/OpenInventor/src/G4OpenInventorTransform3D.cc index 5a1cf12668..5ad48ce718 100644 --- a/source/visualization/OpenInventor/src/G4OpenInventorTransform3D.cc +++ b/source/visualization/OpenInventor/src/G4OpenInventorTransform3D.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenInventorTransform3D.cc,v 1.3 1999/12/15 14:54:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // jck 17 Dec 1996 diff --git a/source/visualization/OpenInventor/src/G4OpenInventorViewer.cc b/source/visualization/OpenInventor/src/G4OpenInventorViewer.cc index 21c5877b40..5f022d6a4f 100644 --- a/source/visualization/OpenInventor/src/G4OpenInventorViewer.cc +++ b/source/visualization/OpenInventor/src/G4OpenInventorViewer.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenInventorViewer.cc,v 1.3 1999/12/15 14:54:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // /* * jck 05 Feb 1997 - Initial Implementation diff --git a/source/visualization/OpenInventor/src/G4OpenInventorWin32.cc b/source/visualization/OpenInventor/src/G4OpenInventorWin32.cc index 345df34ad4..a2febd9dd2 100644 --- a/source/visualization/OpenInventor/src/G4OpenInventorWin32.cc +++ b/source/visualization/OpenInventor/src/G4OpenInventorWin32.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenInventorWin32.cc,v 1.4 1999/12/15 14:54:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // OpenInventor graphics system factory. diff --git a/source/visualization/OpenInventor/src/G4OpenInventorX.cc b/source/visualization/OpenInventor/src/G4OpenInventorX.cc index fa789660dd..68989ced4d 100644 --- a/source/visualization/OpenInventor/src/G4OpenInventorX.cc +++ b/source/visualization/OpenInventor/src/G4OpenInventorX.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4OpenInventorX.cc,v 1.4 1999/12/15 14:54:12 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Jeff Kallenbach 01 Aug 1996 diff --git a/source/visualization/README b/source/visualization/README index f17e9940ea..ce22f65f5c 100644 --- a/source/visualization/README +++ b/source/visualization/README @@ -1,32 +1,9 @@ -$Id: README,v 1.6 1999/08/27 07:57:12 johna Exp $ +$Id: README,v 1.8 2000/05/20 10:18:38 johna Exp $ -Below are some steps for making GEANT4 with visualization run on -rsplus.cern.ch. - -On other machines, in other locations, you will have to check the -availability and location of graphics libraries. Also, you will need -RogueWave tools.h++ - headers usually in /usr/local/include/rw/, -library in /usr/local/lib. Instead of RogueWave tools.h++, -you can also use STL. See global/GNUmakefile.architecture for clues -to what is required. - -We will assume that you have a checked-out or updated version of -geant4 with the visualization/ directory and sub-directories. For -that you will needed to have done the following. - -1) Set the following environment variables: - - setenv CVSROOT /afs/cern.ch/sw/geant4/cvs - setenv G4SYSTEM AIX-xlC - setenv G4INSTALL /geant4 - setenv G4WORKDIR /geant4_workdir - setenv G4LIB $G4WORKDIR - -Now, here are the visualization-specific actions. - -2) Decide which graphics systems drivers you want. The choice depends +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: + 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 @@ -43,6 +20,8 @@ Now, here are the visualization-specific actions. 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) @@ -61,8 +40,10 @@ Now, here are the visualization-specific actions. setenv OPACS_HOME ~/private/GEANT4/OPACS - setenv OGLHOME /afs/cern.ch/rd44/dev/Mesa/Mesa-1.2.8 - + setenv OGLHOME /usr/local + setenv OGLFLAGS "-I$(OGLHOME)/include" + setenv OGLLIBS "-L$OGLHOME/lib -lMesaGLU -lMesaGL" + If you are going to use widgets, then you might need to set the environment variable: @@ -77,19 +58,34 @@ Now, here are the visualization-specific actions. Such setting is not necessary on other machines, where only one version of Tcl/Tk is installed. -3) Compile and build the visualization and interfaces libraries from clean. + +2) Compile and build the Geant4 libraries: + + cd $G4INSTALL/source + gmake + + If you have already built the Geant4 libraries and only wish to + include/change visualization, you need to rebuild visualization and + interfaces (since some graphics drivers share resources, such as X + event handling, with interfaces) and rebuild the libary map (in + case new libraries have been made): + + cd $G4INSTALL/source/visualization + gmake clean + gmake + cd $G4INSTALL/source/interfaces + gmake clean + gmake + cd $G4INSTALL/source + gmake libmap ******************************************************************* NOTE THAT IF YOU CHANGE ANY OF THE ABOVE ENVIRONMENT VARIABLES THEN - YOU WILL HAVE TO: - a) "gmake clean" IN THE APPROPRIATE SUBDIRECTORY - E.G., - (cd visualization/OpenGL/; gmake clean; gmake) - b) TOUCH AND RECOMPILE G4VisManager - E.G. - (cd visualization/; touch management/src/G4VisManager.cc; gmake) + YOU WILL HAVE TO REPEAT THE ABOVE OPERATIONS. ******************************************************************* -4) Decide which graphics systems you want to use in your particular +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: @@ -99,7 +95,7 @@ Now, here are the visualization-specific actions. setenv G4VIS_USE_OPENGLX 1 setenv G4VIS_USE_OPENGLXM 1 setenv G4VIS_USE_OIX 1 - setenv G4VIS_USE_VRMLFILE 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. @@ -114,49 +110,49 @@ Now, here are the visualization-specific actions. pVisManager->RegisterGraphicsSystem (new MyGraphicsSystem). -5) Compile and link your code. +4) Compile and link your code. This assumes, in the current + directory, you have a GNUmakefile like + $G4INSTALL/examples/novice/N01/GNUmakefile and your main program. + Also your header files are in include/ and your source files are in + src/ - see, e.g., $G4INSTALL/examples/novice/N01 (this is the + "canonical" user code structure). + + gmake clean + gmake ******************************************************************* NOTE THAT IF YOU CHANGE ANY OF THE ABOVE ENVIRONMENT VARIABLES THEN - YOU WILL HAVE TO RECOMPILE YOUR DERIVED VIS MANAGER CLASS, E.G., - touch src/MyVisManager.cc; gmake + YOU WILL HAVE TO REPEAT THE ABOVE gmake clean AND gmake COMMANDS, OR + AT THE VERY LEAST, RECOMPILE YOUR MAIN PROGRAM AND YOUR DERIVED VIS + MANAGER CLASS, E.G., + touch myprog.cc; touch src/MyVisManager.cc; gmake ******************************************************************* -6) To compile and link your program, e.g.: - - cd examples/novice/N03 - gmake - -7) To run: +5) To run: setenv DISPLAY :0 - $G4WORKDIR/bin/$G4SYSTEM/exampleN03 + $G4WORKDIR/bin/$G4SYSTEM/myprog -On other machines. ------------------- -OpenGL: If you are using Mesa, you might need: - ln -s libMesaGL.a libGL.a - ln -s libMesaGLU.a libGLU.a +Appendix A: An "rc" example +--------------------------- -As an example of a setup file on another machine ------------------------------------------------- +---------------------- g4rc ------------------------------------------ +## Must be installed one level above $G4INSTALL and "sourced", i.e., +## using '. g4rc'. -export G4SYSTEM=Linux-g++ -export G4INSTALL=~/GEANT4/geant4_my_development/geant4 -export G4WORKDIR=/scratch/geant4_workdir +if [ -e `pwd`/geant4 ]; then + +export G4INSTALL=`pwd`/geant4 +export G4WORKDIR=$G4INSTALL export G4LIB=$G4INSTALL/lib +export G4SYSTEM=Linux-g++ export G4LEVELGAMMADATA=$G4INSTALL/data/PhotonEvaporation export CLHEP_BASE_DIR=/usr/local -export RWBASE=/usr/local - -export G4DEBUG=1 - -#export TCL_LIBRARY=/usr/lib/tcl7.5 # DAWN works OK without... -#export TK_LIBRARY=/usr/lib/tk4.1 # ...these two lines! +##export CVSROOT=:pserver:allison@g4cvs.cern.ch:/afs/cern.ch/sw/geant4/cvs export CVSROOT=/afs/cern.ch/sw/geant4/cvs export CVSEDITOR=emacs @@ -169,16 +165,22 @@ 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 +#export PATH=$PATH:$DAWN_HOME ###### Moved to .g4profile ?????????????? + +############ Ray Tracer +export G4VIS_BUILD_RAYTRACER_DRIVER=1 +export G4VIS_USE_RAYTRACER=1 ########## OPACS graphics export G4VIS_BUILD_OPACS_DRIVER=1 export G4VIS_USE_OPACS=1 -export OPACS_HOME=/export/data26//OPACS +export OPACS_HOME=/disc2/OPACS export OPACS_VERSION=v3 export OPACS_SYSTEM=Linux-gxx export OCONFIG=Linux -. /export/data26/OPACS/OPACS/v3/setup.sh +. /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" ########### OpenGL @@ -189,14 +191,12 @@ export G4VIS_USE_OPENGLXM=1 export XKEYSYMDB=/usr/lib/X11/XKeysymDB export OGLHOME=/usr/X11 -########### OpenInventor (with SoFree implementation on Linux) +########### OpenInventor export G4VIS_BUILD_OIX_DRIVER=1 export G4VIS_USE_OIX=1 -export OIVFLAGS="-I/export/data26/HEPVis/v5r0/include -DINVENTOR2_1 -I/export/data26/SoFree/v2r2/include" -export OIVLIBS="-L/export/data26/HEPVis/v5r0/Linux-gxx-SF -lHEPVis -L/export/data26/SoFree/v2r2/Linux-gxx -lSoFree" -export SOFREEUSER=/export/data26/SoFree/v2r2/user/ -LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/export/data26/HEPVis/v5r0/Linux-gxx-SF -LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/export/data26/SoFree/v2r2/Linux-gxx +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 @@ -213,12 +213,25 @@ 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 --------------------------------------------------------------------- -Here is a sample session (with the Visualization Manager constructed -with verbosity == 1). +############ Persistency +# export G4USE_HEPODBMS=1 +# . $G4INSTALL/examples/extended/persistency/PersistentEx01/g4odbms_setup.sh +# export OS=`uname` +# oocheckls -notitle `hostname` || \ +# oolockserver -notitle -noauto + +else + echo No geant4 here. +fi + + +Appendix B: Sample session +-------------------------- + +The Visualization Manager has been constructed with verbosity == 1. $ test19 dumb 1 RunManager is constructing.... diff --git a/source/visualization/RayTracer/GNUmakefile b/source/visualization/RayTracer/GNUmakefile new file mode 100644 index 0000000000..7fc03350f3 --- /dev/null +++ b/source/visualization/RayTracer/GNUmakefile @@ -0,0 +1,42 @@ +# $Id: GNUmakefile,v 1.3 2000/04/07 13:32:41 gcosmo Exp $ + +name := G4RayTracer + +ifndef G4INSTALL + G4INSTALL = ../../.. +endif + +include $(G4INSTALL)/config/architecture.gmk +include $(G4INSTALL)/config/G4VIS_BUILD.gmk +include $(G4INSTALL)/config/interactivity.gmk + +CPPFLAGS += -I$(G4BASE)/graphics_reps/include \ + -I$(G4BASE)/event/include \ + -I$(G4BASE)/digits+hits/detector/include \ + -I$(G4BASE)/global/management/include \ + -I$(G4BASE)/global/HEPRandom/include \ + -I$(G4BASE)/global/HEPGeometry/include \ + -I$(G4BASE)/track/include \ + -I$(G4BASE)/tracking/include \ + -I$(G4BASE)/processes/management/include \ + -I$(G4BASE)/processes/electromagnetic/utils/include \ + -I$(G4BASE)/particles/management/include \ + -I$(G4BASE)/particles/leptons/include \ + -I$(G4BASE)/particles/leptons/include \ + -I$(G4BASE)/particles/bosons/include \ + -I$(G4BASE)/particles/hadrons/barions/include \ + -I$(G4BASE)/particles/hadrons/ions/include \ + -I$(G4BASE)/particles/hadrons/mesons/include \ + -I$(G4BASE)/materials/include \ + -I$(G4BASE)/geometry/management/include \ + -I$(G4BASE)/geometry/volumes/include \ + -I$(G4BASE)/geometry/solids/CSG/include \ + -I$(G4BASE)/geometry/solids/specific/include \ + -I$(G4BASE)/digits+hits/detector/include \ + -I$(G4BASE)/digits+hits/hits/include \ + -I$(G4BASE)/digits+hits/digits/include \ + -I$(G4BASE)/intercoms/include \ + -I$(G4BASE)/visualization/management/include \ + -I$(G4BASE)/visualization/modeling/include + +include $(G4INSTALL)/config/common.gmk diff --git a/source/visualization/RayTracer/History b/source/visualization/RayTracer/History new file mode 100644 index 0000000000..5859a2bd5b --- /dev/null +++ b/source/visualization/RayTracer/History @@ -0,0 +1,65 @@ +$Id: History,v 1.7 2000/05/02 10:07:08 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 ! + + ************************************************************* + * Note that modeling and test have their own History files. * + ************************************************************* + + ---------------------------------------------------------- + * Reverse chronological order (last date on top), please * + ---------------------------------------------------------- + +History file for visualization category +--------------------------------------- + +2nd May 2000 John Allison +- G4RayTracer: set out-of-world ray to black. +- G4RayTracerViewer: corrected trapping of orthogonal projection. + +10th March 2000 Makoto Asai +- Added some comments for copyright notice and for the software reference manual. + +24th February 2000 John Allison +- Added protection for null viewer in G4RTSteppingAction.cc and + G4RayTrajectory.cc. +- Corrected for zoom, etc., in G4RayTracerViewer.cc. + +23rd February 2000 John Allison +- Added G4RayTracerSceneHandler and Viewer. +- Some modifications to other RayTracer routines for vis compliance. +- (Note: headAngle still not right - ray traced views are sometimes tipped.) + +22nd February 2000 John Allison (raytracer-V01-00-01a) +- Added G4std:: in a few places to obtain ISO compliance. +- Change "char*" to "const char*" in G4OutBitStream::CopyByte(...). + +22nd February 2000 Makoto Asai (raytracer-V01-00-01) +- Change "char*" to "const char*" +- use g4std/fstream + +17th February 2000 Makoto Asai (raytracer-V01-00-00) +- Primary tag of sub-category + +29th January 2000 Makoto Asai +- Introduction of G4RayTracer (visualization/RayTracer/...) +- Migration of G4RayTracer + affected files : + visualization/GNUmakefile + visualization/management/include/MyVisManager.cc + visualization/management/src/G4VisManager.cc + affected files in other directory : + config/G4VIS_BUILD.gmk + config/G4VIS_USE.gmk + diff --git a/source/visualization/RayTracer/README b/source/visualization/RayTracer/README new file mode 100644 index 0000000000..608fb3db7d --- /dev/null +++ b/source/visualization/RayTracer/README @@ -0,0 +1,82 @@ + +G4RayTracer version 1.0 (29/Jan/00) + +1. Introduction + + G4RayTracer is a "ray tracing" package which uses Geant4 kernel mechanism +of tracking/navigation. It visualizes any kinds of solids that Geant4 +kernel can navigate. + +2. Building a library + + G4RayTracer is one of visualization driver which Geant4 supports. To build +a library of G4RayTracer (library name G4RayTracer), set an environment +variable G4VIS_BUILD_RAYTRACER_DRIVER. + + $ setenv G4VIS_BUILD_RAYTRACER_DRIVER 1 + +3. Using G4RayTracer + + To use G4RayTracer, set an environment variable G4VIS_USE_RAYTRACER. + + $ setenv G4VIS_USE_RAYTRACER 1 + +Also, G4RayTracer has to be registored to the user's concrete VisManager. +Refer an example given in + geant4/source/visualization/management/include/MyVisManager.cc. + +4. Notes + +a) G4RayTracer generates JPEG file(s). To visualize these files, use your +local program such as NetScape or xview, etc. + +b) The eye position must be inside of the defined world volume. If you want +to draw your detector setup from very far position, you need to enlarge +your world volume. + +c) G4RayTracer ignores volumes without G4VisAttributes, volumes which are +set as "forced wire frame", and volumes which are set as "invisible". + +d) In case you get unexpected figure, check + d.1) eye position and target position are properly set, + d.2) light direction is properly set (note light direction is from + illumination light source to the objects), + d.3) span angle (given by angle for 100 pixels) is reasonable, + d.4) there is no surrounding volume(s) without transparency. + +e) G4RayTracer can be executed ONLY AT "Idle" state. + +5. Basic UI commands + +a) /vis/rayTracer/eyePosition x y z unit + eye position + +b) /vis/rayTracer/target x y z unit + target position + in default it is set to the origine + +c) /vis/rayTracer/lightDirection ex ey ez + vector of the illuminating light (need not to be a unit vector) + note light direction is from illumination light source to the objects + +d) /vis/rayTracer/column nColumn + number of holizontal pixels + in default 640 pixels + +e) /vis/rayTracer/row nRow + number of virtical pixels + in default 640 pixels + +f) /vis/rayTracer/span angle unit + angle for 100 pixels + in default 5 degree + +g) /vis/rayTracer/trace fileName + execution of G4RayTracer + "fileName" is the out put JPEG file name + in default "g4RayTracer.jpeg" + NOTE THAT THIS COMMAND IS AVAILABLE ONLY AT IDLE STATE + + + + diff --git a/source/visualization/RayTracer/include/G4RTJpeg.hh b/source/visualization/RayTracer/include/G4RTJpeg.hh new file mode 100644 index 0000000000..3cd25be545 --- /dev/null +++ b/source/visualization/RayTracer/include/G4RTJpeg.hh @@ -0,0 +1,191 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RTJpeg.hh,v 1.4 2000/03/09 17:38:31 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// + +// class description: +// +// This header file defines some static constant variables and error classes +// used internally by G4JpegMaker and related classes +// + +#ifndef G4RTJpeg_H +#define G4RTJpeg_H 1 + +typedef unsigned char u_char; +typedef unsigned int u_int; + +const char JFIF[] = "JFIF"; +const char JFXX[] = "JFXX"; + +const double Sqrt2 = 1.41421356; +const double DisSqrt2 = 1.0 / Sqrt2; +const double PaiDiv16 = 3.14159265 / 16; + +//Zigzag +static const int Zigzag[64] = { + 0, 1, 8, 16, 9, 2, 3, 10, + 17, 24, 32, 25, 18, 11, 4, 5, + 12, 19, 26, 33, 40, 48, 41, 34, + 27, 20, 13, 6, 7, 14, 21, 28, + 35, 42, 49, 56, 57, 50, 43, 36, + 29, 22, 15, 23, 30, 37, 44, 51, + 58, 59, 52, 45, 38, 31, 39, 46, + 53, 60, 61, 54, 47, 55, 62, 63 +}; + +//ProcessResult +enum +jProcessResult{ + M_NoError = 0, + M_RuntimeError = -1, + M_DataError = -2 +}; + +// JpegMarkerCode +enum +jMarker{ + + M_SOF0 = 0xc0, + M_SOF1 = 0xc1, + M_SOF2 = 0xc2, + M_SOF3 = 0xc3, + + M_SOF5 = 0xc5, + M_SOF6 = 0xc6, + M_SOF7 = 0xc7, + + M_JPG = 0xc8, + M_SOF9 = 0xc9, + M_SOF10 = 0xca, + M_SOF11 = 0xcb, + + M_SOF13 = 0xcd, + M_SOF14 = 0xce, + M_SOF15 = 0xcf, + + M_DHT = 0xc4, + + M_DAC = 0xcc, + + M_RST0 = 0xd0, M_RST1 = 0xd1, + M_RST2 = 0xd2, M_RST3 = 0xd3, + M_RST4 = 0xd4, M_RST5 = 0xd5, + M_RST6 = 0xd6, M_RST7 = 0xd7, + + M_SOI = 0xd8, + M_EOI = 0xd9, + M_SOS = 0xda, + M_DQT = 0xdb, + M_DNL = 0xdc, + M_DRI = 0xdd, + M_DHP = 0xde, + M_EXP = 0xdf, + M_COM = 0xfe, + + M_APP0 = 0xe0, M_APP1 = 0xe1, + M_APP2 = 0xe2, M_APP3 = 0xe3, + M_APP4 = 0xe4, M_APP5 = 0xe5, + M_APP6 = 0xe6, M_APP7 = 0xe7, + M_APP8 = 0xe8, M_APP9 = 0xe9, + M_APP10 = 0xea, M_APP11 = 0xeb, + M_APP12 = 0xec, M_APP13 = 0xed, + M_APP14 = 0xee, M_APP15 = 0xef, + + + M_JPG0 = 0xf0, M_JPG1 = 0xf1, + M_JPG2 = 0xf2, M_JPG3 = 0xf3, + M_JPG4 = 0xf4, M_JPG5 = 0xf5, + M_JPG6 = 0xf6, M_JPG7 = 0xf7, + M_JPG8 = 0xf8, M_JPG9 = 0xf9, + M_JPG10 = 0xfa, M_JPG11 = 0xfb, + M_JPG12 = 0xfc, M_JPG13 = 0xfd, + + + M_TEM = 0x01, + M_RESst = 0x02, + M_RESend = 0xbf, + + M_Error = 0xff, + M_Marker = 0xff +}; + +//JpegProperty +struct +G4JpegProperty{ + int nRow; + int nColumn; + int Dimension; + int SamplePrecision; + const char * Comment; + int Format; + u_char MajorRevisions; + u_char MinorRevisions; + int Units; + int HDensity; + int VDensity; + int HThumbnail; + int VThumbnail; + int ExtensionCode; +}; + + +//MemoryError +class G4MemoryError +{ + public: + G4MemoryError(int size, const char* message) + {mSize = size; mMessage = message;}; + int mSize; + const char* mMessage; +}; + +//IndexError +class G4IndexError +{ + public: + G4IndexError(int maxIndex, int errorIndex, const char* mes) + {mMaxIndex = maxIndex; mErrorIndex = errorIndex; mMessage = mes;}; + int mMaxIndex; + int mErrorIndex; + const char* mMessage; +}; + +//BufferError +class G4BufferError +{ + public: + G4BufferError(const char* mes) + {mMessage = mes;}; + const char* mMessage; +}; + +//DataFormatError +class G4DataFormatError +{ + public: + G4DataFormatError(void* address, const char* message) + {mAddress = address; mMessage = message;}; + void* mAddress; + const char* mMessage; +}; + + +//NotSupported +class G4NotSupported +{ + public: + G4NotSupported(jMarker aMark, void* address) + {mMark = aMark; mAddress = address;}; + jMarker mMark; + void* mAddress; +}; + +#endif diff --git a/source/visualization/RayTracer/include/G4RTJpegCoder.hh b/source/visualization/RayTracer/include/G4RTJpegCoder.hh new file mode 100644 index 0000000000..2f9f186426 --- /dev/null +++ b/source/visualization/RayTracer/include/G4RTJpegCoder.hh @@ -0,0 +1,80 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RTJpegCoder.hh,v 1.4 2000/03/09 17:38:31 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// + +// class description: +// +// This class converts 8 bit unsighned ints array to JPEG code. +// + +#ifndef G4RTJpegCoder_H +#define G4RTJpegCoder_H 1 +#include "G4RTJpeg.hh" + +//HuffmanTable +struct +G4HuffmanCodeTable +{ + int numOfElement; + int* SizeT; + int* CodeT; +}; + +class G4OutBitStream; + +class G4JpegCoder +{ + public: + G4JpegCoder(u_char* colorR,u_char* colorG,u_char* colorB); + ~G4JpegCoder(void); + + void GetJpegData(char** aJpegData,int& size); + + void SetJpegProperty(const G4JpegProperty& aProperty); + + int DoCoding(void); + + + protected: + u_char* mRgb[3]; + int mYBlock[4][64]; + int mCbBlock[64]; + int mCrBlock[64]; + double mCosT[8][8]; + int mDCTData[64]; + int mPreDC[3]; + + G4JpegProperty mProperty; + int mNumVUnits; + int mNumHUnits; + + G4OutBitStream *mOBSP; + + void CodeMCU(); + + void makeYCC(int ux,int uy); + + void CodeHuffman(int cs); + + void ForwardDCT(int* picData); + + void Quantization(int cs); + + void WriteHeader(void); + void WriteEOI(void); +}; + +const u_int JFIFLength = 16; +const u_int JFIFVersion = 0x0102; //JFIF Ver 1.02 +const u_char YSampleF = 0x22; +const u_char CSampleF = 0x11; + +#endif diff --git a/source/visualization/RayTracer/include/G4RTJpegCoderTables.hh b/source/visualization/RayTracer/include/G4RTJpegCoderTables.hh new file mode 100644 index 0000000000..2ae4087aa5 --- /dev/null +++ b/source/visualization/RayTracer/include/G4RTJpegCoderTables.hh @@ -0,0 +1,316 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RTJpegCoderTables.hh,v 1.4 2000/03/09 17:38:32 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// + +// class description: +// +// This header file defines some hard coded numbers used by G4RTJpegCoder +// to convert 8 bits RGB to JPEG. +// + +#ifndef G4RTJpegCoderTable_H +#define G4RTJpegCoderTable_H 1 + +#include "G4RTJpeg.hh" + +//QuantumTable + +static const int YQuantumT[] = { + + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, +}; + +static const int CQuantumT[] = { + + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, +}; + +//HuffmanCode + +static const int YDcSizeT[] = { + 0x0002, 0x0003, 0x0003, 0x0003, + 0x0003, 0x0003, 0x0004, 0x0005, + 0x0006, 0x0007, 0x0008, 0x0009 }; +static const int YDcCodeT[] = { + 0x0000, 0x0002, 0x0003, 0x0004, + 0x0005, 0x0006, 0x000e, 0x001e, + 0x003e, 0x007e, 0x00fe, 0x01fe }; +static const G4HuffmanCodeTable YDcHuffmanT = { + 12, + (int*)YDcSizeT, + (int*)YDcCodeT +}; + + +static const int CDcSizeT[] = { + 0x0002, 0x0002, 0x0002, 0x0003, + 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b }; +static const int CDcCodeT[] = { + 0x0000, 0x0001, 0x0002, 0x0006, + 0x000e, 0x001e, 0x003e, 0x007e, + 0x00fe, 0x01fe, 0x03fe, 0x07fe }; +static const G4HuffmanCodeTable CDcHuffmanT = { + 12, + (int*)CDcSizeT, + (int*)CDcCodeT +}; + + +static const int YAcSizeT[] = { + 4, 2, 2, 3, 4, 5, 7, 8, + 10, 16, 16, 4, 5, 7, 9, 11, + 16, 16, 16, 16, 16, 5, 8, 10, + 12, 16, 16, 16, 16, 16, 16, 6, + 9, 12, 16, 16, 16, 16, 16, 16, + 16, 6, 10, 16, 16, 16, 16, 16, + 16, 16, 16, 7, 11, 16, 16, 16, + 16, 16, 16, 16, 16, 7, 12, 16, + 16, 16, 16, 16, 16, 16, 16, 8, + 12, 16, 16, 16, 16, 16, 16, 16, + 16, 9, 15, 16, 16, 16, 16, 16, + 16, 16, 16, 9, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 9, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 10, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 10, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 11, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 11, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16 }; +static const int YAcCodeT[] = { + 0x000a, 0x0000, 0x0001, 0x0004, + 0x000b, 0x001a, 0x0078, 0x00f8, + 0x03f6, 0xff82, 0xff83, 0x000c, + 0x001b, 0x0079, 0x01f6, 0x07f6, + 0xff84, 0xff85, 0xff86, 0xff87, + 0xff88, 0x001c, 0x00f9, 0x03f7, + 0x0ff4, 0xff89, 0xff8a, 0xff8b, + 0xff8c, 0xff8d, 0xff8e, 0x003a, + 0x01f7, 0x0ff5, 0xff8f, 0xff90, + 0xff91, 0xff92, 0xff93, 0xff94, + 0xff95, 0x003b, 0x03f8, 0xff96, + 0xff97, 0xff98, 0xff99, 0xff9a, + 0xff9b, 0xff9c, 0xff9d, 0x007a, + 0x07f7, 0xff9e, 0xff9f, 0xffa0, + 0xffa1, 0xffa2, 0xffa3, 0xffa4, + 0xffa5, 0x007b, 0x0ff6, 0xffa6, + 0xffa7, 0xffa8, 0xffa9, 0xffaa, + 0xffab, 0xffac, 0xffad, 0x00fa, + 0x0ff7, 0xffae, 0xffaf, 0xffb0, + 0xffb1, 0xffb2, 0xffb3, 0xffb4, + 0xffb5, 0x01f8, 0x7fc0, 0xffb6, + 0xffb7, 0xffb8, 0xffb9, 0xffba, + 0xffbb, 0xffbc, 0xffbd, 0x01f9, + 0xffbe, 0xffbf, 0xffc0, 0xffc1, + 0xffc2, 0xffc3, 0xffc4, 0xffc5, + 0xffc6, 0x01fa, 0xffc7, 0xffc8, + 0xffc9, 0xffca, 0xffcb, 0xffcc, + 0xffcd, 0xffce, 0xffcf, 0x03f9, + 0xffd0, 0xffd1, 0xffd2, 0xffd3, + 0xffd4, 0xffd5, 0xffd6, 0xffd7, + 0xffd8, 0x03fa, 0xffd9, 0xffda, + 0xffdb, 0xffdc, 0xffdd, 0xffde, + 0xffdf, 0xffe0, 0xffe1, 0x07f8, + 0xffe2, 0xffe3, 0xffe4, 0xffe5, + 0xffe6, 0xffe7, 0xffe8, 0xffe9, + 0xffea, 0xffeb, 0xffec, 0xffed, + 0xffee, 0xffef, 0xfff0, 0xfff1, + 0xfff2, 0xfff3, 0xfff4, 0x07f9, + 0xfff5, 0xfff6, 0xfff7, 0xfff8, + 0xfff9, 0xfffa, 0xfffb, 0xfffc, + 0xfffd, 0xfffe }; +static const G4HuffmanCodeTable YAcHuffmanT = { + 162, + (int*)YAcSizeT, + (int*)YAcCodeT +}; + +static const int YEOBidx = 0; +static const int YZRLidx = 151; + + +static const int CAcSizeT[] = { + 2, 2, 3, 4, 5, 5, 6, 7, + 9, 10, 12, 4, 6, 8, 9, 11, + 12, 16, 16, 16, 16, 5, 8, 10, + 12, 15, 16, 16, 16, 16, 16, 5, + 8, 10, 12, 16, 16, 16, 16, 16, + 16, 6, 9, 16, 16, 16, 16, 16, + 16, 16, 16, 6, 10, 16, 16, 16, + 16, 16, 16, 16, 16, 7, 11, 16, + 16, 16, 16, 16, 16, 16, 16, 7, + 11, 16, 16, 16, 16, 16, 16, 16, + 16, 8, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 9, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 9, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 9, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 9, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 11, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 14, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 10, + 15, 16, 16, 16, 16, 16, 16, 16, + 16, 16 }; +static const int CAcCodeT[] = { + 0x0000, 0x0001, 0x0004, 0x000a, + 0x0018, 0x0019, 0x0038, 0x0078, + 0x01f4, 0x03f6, 0x0ff4, 0x000b, + 0x0039, 0x00f6, 0x01f5, 0x07f6, + 0x0ff5, 0xff88, 0xff89, 0xff8a, + 0xff8b, 0x001a, 0x00f7, 0x03f7, + 0x0ff6, 0x7fc2, 0xff8c, 0xff8d, + 0xff8e, 0xff8f, 0xff90, 0x001b, + 0x00f8, 0x03f8, 0x0ff7, 0xff91, + 0xff92, 0xff93, 0xff94, 0xff95, + 0xff96, 0x003a, 0x01f6, 0xff97, + 0xff98, 0xff99, 0xff9a, 0xff9b, + 0xff9c, 0xff9d, 0xff9e, 0x003b, + 0x03f9, 0xff9f, 0xffa0, 0xffa1, + 0xffa2, 0xffa3, 0xffa4, 0xffa5, + 0xffa6, 0x0079, 0x07f7, 0xffa7, + 0xffa8, 0xffa9, 0xffaa, 0xffab, + 0xffac, 0xffad, 0xffae, 0x007a, + 0x07f8, 0xffaf, 0xffb0, 0xffb1, + 0xffb2, 0xffb3, 0xffb4, 0xffb5, + 0xffb6, 0x00f9, 0xffb7, 0xffb8, + 0xffb9, 0xffba, 0xffbb, 0xffbc, + 0xffbd, 0xffbe, 0xffbf, 0x01f7, + 0xffc0, 0xffc1, 0xffc2, 0xffc3, + 0xffc4, 0xffc5, 0xffc6, 0xffc7, + 0xffc8, 0x01f8, 0xffc9, 0xffca, + 0xffcb, 0xffcc, 0xffcd, 0xffce, + 0xffcf, 0xffd0, 0xffd1, 0x01f9, + 0xffd2, 0xffd3, 0xffd4, 0xffd5, + 0xffd6, 0xffd7, 0xffd8, 0xffd9, + 0xffda, 0x01fa, 0xffdb, 0xffdc, + 0xffdd, 0xffde, 0xffdf, 0xffe0, + 0xffe1, 0xffe2, 0xffe3, 0x07f9, + 0xffe4, 0xffe5, 0xffe6, 0xffe7, + 0xffe8, 0xffe9, 0xffea, 0xffeb, + 0xffec, 0x3fe0, 0xffed, 0xffee, + 0xffef, 0xfff0, 0xfff1, 0xfff2, + 0xfff3, 0xfff4, 0xfff5, 0x03fa, + 0x7fc3, 0xfff6, 0xfff7, 0xfff8, + 0xfff9, 0xfffa, 0xfffb, 0xfffc, + 0xfffd, 0xfffe }; +static const G4HuffmanCodeTable CAcHuffmanT = { + 162, + (int*)CAcSizeT, + (int*)CAcCodeT +}; + +static const int CEOBidx = 0; +static const int CZRLidx = 151; + +//HuffmanCode + +static const int DcDhtLength = 0x21; +static const int AcDhtLength = 0xb7; + +static const u_char YDcDht[] = { + 0xff, 0xc4, + 0x00, 0x1f, + 0x00, + 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b +}; + +static const u_char CDcDht[] = { + 0xff, 0xc4, + 0x00, 0x1f, + 0x01, + 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b +}; + +static const u_char YAcDht[] = { + 0xff, 0xc4, + 0x00, 0xb5, + 0x10, + + 0x00, 0x02, 0x01, 0x03, 0x03, 0x02, 0x04, 0x03, + 0x05, 0x05, 0x04, 0x04, 0x00, 0x00, 0x01, 0x7d, + + 0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12, + 0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07, + 0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xa1, 0x08, + 0x23, 0x42, 0xb1, 0xc1, 0x15, 0x52, 0xd1, 0xf0, + 0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16, + 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, + 0x29, 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, + 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, + 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, + 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, + 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, + 0x7a, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, + 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, + 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, + 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, + 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, + 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, + 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe1, 0xe2, + 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, + 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, + 0xf9, 0xfa +}; + +static const u_char CAcDht[] = { + 0xff, 0xc4, + 0x00, 0xb5, + 0x11, + + 0x00, 0x02, 0x01, 0x02, 0x04, 0x04, 0x03, 0x04, + 0x07, 0x05, 0x04, 0x04, 0x00, 0x01, 0x02, 0x77, + + 0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21, + 0x31, 0x06, 0x12, 0x41, 0x51, 0x07, 0x61, 0x71, + 0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91, + 0xa1, 0xb1, 0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0, + 0x15, 0x62, 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34, + 0xe1, 0x25, 0xf1, 0x17, 0x18, 0x19, 0x1a, 0x26, + 0x27, 0x28, 0x29, 0x2a, 0x35, 0x36, 0x37, 0x38, + 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, + 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, + 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, + 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, + 0x79, 0x7a, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, + 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, + 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, + 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, + 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, + 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, + 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, + 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, + 0xea, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, + 0xf9, 0xfa +}; + +#endif + diff --git a/source/visualization/RayTracer/include/G4RTJpegMaker.hh b/source/visualization/RayTracer/include/G4RTJpegMaker.hh new file mode 100644 index 0000000000..ac24773b29 --- /dev/null +++ b/source/visualization/RayTracer/include/G4RTJpegMaker.hh @@ -0,0 +1,41 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RTJpegMaker.hh,v 1.4 2000/03/09 17:38:32 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// + +// class description: +// +// This is a concrete class of G4VFigureFileMaker. +// This class converts 8 bits unsighned integer arrays which represent RGB of +// each pixel to JPEG code and stores it to a file. The only one public method +// of this class will be invoked by G4RayTracer. +// + +#ifndef G4RTJpegMaker_H +#define G4RTJpegMaker_H 1 + +#include "G4VFigureFileMaker.hh" +#include "G4RTJpeg.hh" + +class G4RTJpegMaker : public G4VFigureFileMaker +{ + public: + G4RTJpegMaker(); + virtual ~G4RTJpegMaker(); + + public: + virtual void CreateFigureFile(G4String fileName, + int nColumn,int nRow, + u_char* colorR, u_char* colorG, + u_char* colorB); +}; + +#endif + diff --git a/source/visualization/RayTracer/include/G4RTMessenger.hh b/source/visualization/RayTracer/include/G4RTMessenger.hh new file mode 100644 index 0000000000..ecc2ffa58b --- /dev/null +++ b/source/visualization/RayTracer/include/G4RTMessenger.hh @@ -0,0 +1,64 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RTMessenger.hh,v 1.3 2000/03/09 17:38:32 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// + +// class description: +// +// This is a concrete class of G4UImessenger. This class defines various +// UI commands which are unique to G4RayTracer. +// + + +#ifndef G4RTMessenger_HH +#define G4RTMessenger_HH 1 + +#include "G4UImessenger.hh" +class G4UIdirectory; +class G4UIcmdWithABool; +class G4UIcmdWith3Vector; +class G4UIcmdWith3VectorAndUnit; +class G4UIcmdWithADoubleAndUnit; +class G4UIcmdWithAnInteger; +class G4UIcmdWithAString; +class G4RayTracer; +class G4RTSteppingAction; + +class G4RTMessenger : public G4UImessenger +{ + public: + G4RTMessenger(G4RayTracer* p1,G4RTSteppingAction* p2); + virtual ~G4RTMessenger(); + + virtual G4String GetCurrentValue(G4UIcommand * command); + virtual void SetNewValue(G4UIcommand * command,G4String newValue); + + private: + G4RayTracer* theTracer; + G4RTSteppingAction* theSteppingAction; + + G4UIdirectory* rayDirectory; + G4UIcmdWithAnInteger* columnCmd; + G4UIcmdWithAnInteger* rowCmd; + G4UIcmdWith3VectorAndUnit* targetCmd; + G4UIcmdWith3VectorAndUnit* eyePosCmd; + G4UIcmdWith3Vector* lightCmd; + G4UIcmdWithADoubleAndUnit* spanXCmd; + G4UIcmdWithADoubleAndUnit* headCmd; + G4UIcmdWithADoubleAndUnit* attCmd; + G4UIcmdWithABool* distCmd; + G4UIcmdWithABool* transCmd; + G4UIcmdWithAString* fileCmd; +}; + +#endif + + + diff --git a/source/visualization/RayTracer/include/G4RTOutBitStream.hh b/source/visualization/RayTracer/include/G4RTOutBitStream.hh new file mode 100644 index 0000000000..642e5154e0 --- /dev/null +++ b/source/visualization/RayTracer/include/G4RTOutBitStream.hh @@ -0,0 +1,53 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RTOutBitStream.hh,v 1.5 2000/03/09 17:38:32 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// + +// class description: +// +// This class represents a line of JPEG code. This class must be used exclusively +// by G4RTJpegCoder. +// + +#ifndef G4RTOutBitStream_H +#define G4RTOutBitStream_H 1 +#include "G4RTJpeg.hh" + +static const u_char BitFullMaskT[8] = {0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f +, 0xff}; + +class G4OutBitStream +{ + public: + G4OutBitStream(int size); + void SetBits(int v, int numBits); + void SetByte(u_char dat); + void SetWord(u_int dat); + void CopyByte(const char* src, int n); + + u_char* GetStreamAddress(void){return mHeadOfBuf;}; + int GetStreamSize(void){return mBuf - mHeadOfBuf;}; + + + protected: + u_char* mHeadOfBuf; + u_char* mBuf; + u_char* mEndOfBuf; + int mBitPos; + int mWriteFlag; + + void IncBuf(void); + void FullBit(void); + void Set8Bits(u_char v, int numBits); + void SetFewBits(u_char v, int numBits); + void SetBits2Byte(u_char v, int numBits); +}; + +#endif diff --git a/source/visualization/RayTracer/include/G4RTSteppingAction.hh b/source/visualization/RayTracer/include/G4RTSteppingAction.hh new file mode 100644 index 0000000000..58caa9c252 --- /dev/null +++ b/source/visualization/RayTracer/include/G4RTSteppingAction.hh @@ -0,0 +1,52 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RTSteppingAction.hh,v 1.3 2000/03/09 17:38:32 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// + +// class description: +// +// This is a concrete class of G4UserSteppingAction. This class is used +// by G4RayTracer for managing a ray tracked through volumes. An object +// of this class is constructed by G4RayTracer and set to G4SteppingManager +// with replacement of user defined stepping action during the period of +// ray tracing. +// + +////////////////////// +//G4RTSteppingAction +///////////////////// + + +#ifndef G4RTSteppingAction_h +#define G4RTSteppingAction_h 1 + + +#include "G4UserSteppingAction.hh" +#include "globals.hh" + +class G4RTSteppingAction : public G4UserSteppingAction +{ + public: + G4RTSteppingAction(); + virtual ~G4RTSteppingAction(){;} + + virtual void UserSteppingAction(const G4Step*); + + private: + G4bool ignoreTransparency; + + public: + inline void SetIgnoreTransparency(G4bool val) + { ignoreTransparency = val; } + inline G4bool GetIgnoreTransparency() const + { return ignoreTransparency; } +}; + +#endif diff --git a/source/visualization/RayTracer/include/G4RTTrackingAction.hh b/source/visualization/RayTracer/include/G4RTTrackingAction.hh new file mode 100644 index 0000000000..fcbd4eb427 --- /dev/null +++ b/source/visualization/RayTracer/include/G4RTTrackingAction.hh @@ -0,0 +1,56 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RTTrackingAction.hh,v 1.3 2000/03/09 17:38:32 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// + +// class description: +// +// This is a concrete class of G4UserTrackingAction. This class is used +// by G4RayTracer for managing a ray tracked through volumes. An object +// of this class is constructed by G4RayTracer and set to G4TrackingManager +// with replacement of user defined tracking action during the period of +// ray tracing. +// + +/////////////////////// +//G4RTTrackingAction.hh +/////////////////////// + + +#ifndef G4RTTrackingAction_h +#define G4RTTrackingAction_h 1 + +#include "G4UserTrackingAction.hh" + +class G4Track; + +/////////////////////////// +class G4RTTrackingAction : public G4UserTrackingAction +/////////////////////////// +{ + +//-------- + public: +//-------- + +// Constructor & Destructor + G4RTTrackingAction(){;} + virtual ~G4RTTrackingAction(){;} + +// Member functions + virtual void PreUserTrackingAction(const G4Track* aTrack); + virtual void PostUserTrackingAction(const G4Track* aTrack){;} + + +}; + +#endif + + diff --git a/source/visualization/RayTracer/include/G4RayShooter.hh b/source/visualization/RayTracer/include/G4RayShooter.hh new file mode 100644 index 0000000000..ab7ed0d86e --- /dev/null +++ b/source/visualization/RayTracer/include/G4RayShooter.hh @@ -0,0 +1,62 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RayShooter.hh,v 1.2 2000/03/09 17:38:33 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// + +// class description: +// +// the object of this class shoots a ray (actually geantino) primary particle +// associated with a G4Event object. This slass must be used exclusively by +// G4RayTracer. +// + +#ifndef G4RayShooter_h +#define G4RayShooter_h 1 + + +#include "globals.hh" +#include "G4ThreeVector.hh" +#include "G4ParticleDefinition.hh" +#include "G4PrimaryVertex.hh" +#include "G4ParticleMomentum.hh" + +class G4Event; + +class G4RayShooter +{ + public: + G4RayShooter(); + public: + virtual ~G4RayShooter(); + + public: // with description + void Shoot(G4Event* evt,G4ThreeVector vtx,G4ThreeVector direc); + // This method generates a primary vertex and a primary particle at the + // given vertex point and with the given direction. This method is invoked + // by G4RayTracer. + + private: + void SetInitialValues(); + + G4ParticleDefinition* particle_definition; + G4ParticleMomentum particle_momentum_direction; + G4double particle_energy; + G4ThreeVector particle_position; + G4double particle_time; + G4ThreeVector particle_polarization; +}; + +#endif + + + + + + + diff --git a/source/visualization/RayTracer/include/G4RayTracer.hh b/source/visualization/RayTracer/include/G4RayTracer.hh new file mode 100644 index 0000000000..d49dfe034f --- /dev/null +++ b/source/visualization/RayTracer/include/G4RayTracer.hh @@ -0,0 +1,165 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RayTracer.hh,v 1.5 2000/03/09 17:38:33 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// + + +#ifndef G4RayTracer_H +#define G4RayTracer_H 1 + +// class description: +// +// G4RayTracer +// This is a graphics driver of Geant4 which generates a figure file by +// ray tracing technique. The format of output figure file can be selected +// by assigning a pointer of G4VFigureFileMaker concrete class object. +// The main entry of ray tracing is Trace() method, which is available +// only at Idle state. G4RayTracer shoots rays and controls its own event +// loop. It generates G4Event objects used for its own purpose. When ray +// tracing is working, all sensitive detectors are inactivated and all +// user action classes are swapped out. Still, verbosities set to Geant4 +// manager classes are concerned. Thus, it is recommended to set verbosities +// to minimum (usually zero). +// G4RayTracer can visualise absolutely all kinds of geometrical shapes +// which G4Navigator can deal with. Instead, it can NOT visualise hits +// nor trajectories generated by usual simulation. +// To make G4RayTracer library, G4VIS_BUILD_RAYTRACER_DRIVER environment +// variable must be set before compiling visualization category. To use +// G4RayTracer with your program, G4VIS_USE_RAYTRACER environment variable +// must be set before compiling your program and your VisManager concrete +// implementation must contain +// RegisterGraphicsSystem (new G4RayTracer); +// + +#if defined (G4VIS_BUILD_RAYTRACER_DRIVER) || defined (G4VIS_USE_RAYTRACER) + +#include "globals.hh" +#include "G4ThreeVector.hh" +#include "G4VGraphicsSystem.hh" + +class G4Event; +class G4EventManager; +class G4UserEventAction; +class G4UserStackingAction; +class G4UserTrackingAction; +class G4UserSteppingAction; +class G4RTTrackingAction; +class G4RTSteppingAction; +class G4Colour; +class G4RTMessenger; +class G4RayShooter; +class G4VFigureFileMaker; +class G4RayTrajectoryPoint; +class G4VisAttributes; + + +class G4RayTracer : public G4VGraphicsSystem +{ + public: // with description + G4RayTracer(G4VFigureFileMaker* figMaker = 0); + // Constructor. The argument is the pointer to G4VFigureFileMaker concrete + // class object. If it is not set and SetFigureFileMaker() method is not + // invoked before Trace() command is invoked, then G4RTJpegMaker will be + // used and JPEG file will be generated. + + public: + ~G4RayTracer(); + + public: // with description + void Trace(G4String fileName); + // The main entry point which triggers ray tracing. "fileName" is output + // file name, and it must contain extention (e.g. myFigure.jpg). This + // method is available only if Geant4 is at Idle state. + + public: + virtual G4VSceneHandler* CreateSceneHandler (const G4String& ); + virtual G4VViewer* CreateViewer (G4VSceneHandler&, const G4String& ); + + private: + G4bool CreateBitMap(); + // Event loop + void CreateFigureFile(G4String fileName); + // Create figure file after an event loop + G4bool GenerateColour(G4Event* anEvent); + // Calcurate RGB for one trajectory + void StoreUserActions(); + void RestoreUserActions(); + // Store and restore user action classes if defined + + G4Colour GetSurfaceColour(G4RayTrajectoryPoint* point); + G4Colour GetMixedColour(G4Colour surfCol,G4Colour transCol,G4double weight=0.5); + G4Colour Attenuate(G4RayTrajectoryPoint* point, G4Colour sourceCol); + G4bool ValidColour(const G4VisAttributes* visAtt); + + public: // with description + inline void SetFigureFileMaker(G4VFigureFileMaker* figMaker) + // Set a concrete class of G4VFigureFileMaker for assigning the format of + // output figure file. + { theFigMaker = figMaker; } + + private: + G4RayShooter * theRayShooter; + G4VFigureFileMaker * theFigMaker; + G4RTMessenger * theMessenger; + + G4EventManager * theEventManager; + + G4UserEventAction * theUserEventAction; + G4UserStackingAction * theUserStackingAction; + G4UserTrackingAction * theUserTrackingAction; + G4UserSteppingAction * theUserSteppingAction; + + G4UserEventAction * theRayTracerEventAction; + G4UserStackingAction * theRayTracerStackingAction; + G4RTTrackingAction * theRayTracerTrackingAction; + G4RTSteppingAction * theRayTracerSteppingAction; + + unsigned char* colorR; + unsigned char* colorG; + unsigned char* colorB; + + G4int nColumn; + G4int nRow; + + G4ThreeVector eyePosition; + G4ThreeVector targetPosition; + G4ThreeVector eyeDirection; + G4ThreeVector lightDirection; + G4double headAngle; + G4double viewSpan; // Angle per 100 pixels + G4double attenuationLength; + + G4bool distortionOn; + + public: + inline void SetNColumn(G4int val) { nColumn = val; } + 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 G4ThreeVector GetEyePosition() const { return eyePosition; } + inline void SetTargetPosition(G4ThreeVector val) { targetPosition = val; } + inline G4ThreeVector GetTargetPosition() const { return targetPosition; } + inline void SetLightDirection(G4ThreeVector val) { lightDirection = val.unit(); } + inline G4ThreeVector GetLightDirection() const { return lightDirection; } + inline void SetHeadAngle(G4double val) { headAngle = val; } + inline G4double GetHeadAngle() const { return headAngle; } + inline void SetViewSpan(G4double val) { viewSpan = val; } + inline G4double GetViewSpan() const { return viewSpan; } + inline void SetAttenuationLength(G4double val) { attenuationLength = val; } + inline G4double GetAttenuationLength() const { return attenuationLength; } + inline void SetDistortion(G4bool val) { distortionOn = val; } + inline G4bool GetDistortion() const { return distortionOn; } +}; + +#endif +#endif + + diff --git a/source/visualization/RayTracer/include/G4RayTracerFeatures.hh b/source/visualization/RayTracer/include/G4RayTracerFeatures.hh new file mode 100644 index 0000000000..ad19347415 --- /dev/null +++ b/source/visualization/RayTracer/include/G4RayTracerFeatures.hh @@ -0,0 +1,28 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RayTracerFeatures.hh,v 1.2 2000/03/09 15:36:35 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// + + +#ifndef G4RayTracerFeatures_HH +#define G4RayTracerFeatures_HH 1 + +// To make John Allison happy........... + +const char RAYTRACER_FEATURES[] = +"Low quality high speed visualization using Geant4 kernel tracking mechanism.\ +\n Features: Generate JPEG file(s) as default \ +\n Visualize all kinds of solids including boolean solids \ +\n Disadvantages : Conceptually trajectories and hits cannot be drawn \ +\n No direct visualization"; + +#endif + + diff --git a/source/visualization/RayTracer/include/G4RayTracerSceneHandler.hh b/source/visualization/RayTracer/include/G4RayTracerSceneHandler.hh new file mode 100644 index 0000000000..74f378438d --- /dev/null +++ b/source/visualization/RayTracer/include/G4RayTracerSceneHandler.hh @@ -0,0 +1,53 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RayTracerSceneHandler.hh,v 1.2 2000/02/28 15:19:49 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ + +// John Allison 17th March 2000 + +#ifndef G4RAYTRACERSCENEHANDLER_HH +#define G4RAYTRACERSCENEHANDLER_HH + +#include "G4VSceneHandler.hh" + +class G4RayTracerSceneHandler: public G4VSceneHandler { + +public: + + G4RayTracerSceneHandler(G4VGraphicsSystem& system, + const G4String& name = ""); + virtual ~G4RayTracerSceneHandler(); + + void AddPrimitive(const G4Polyline&){} + void AddPrimitive(const G4Text&){} + void AddPrimitive(const G4Circle&){} + void AddPrimitive(const G4Square&){} + void AddPrimitive(const G4Polyhedron&){} + void AddPrimitive(const G4NURBS&){} + void AddPrimitive(const G4Polymarker&){} + + 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&){} + + static G4int GetSceneCount(); + +private: + static G4int fSceneIdCount; // Counter for RayTracer scene handlers. + static G4int fSceneCount; // No. of extanct scenes. +}; + +#endif diff --git a/source/visualization/RayTracer/include/G4RayTracerViewer.hh b/source/visualization/RayTracer/include/G4RayTracerViewer.hh new file mode 100644 index 0000000000..6179e8e372 --- /dev/null +++ b/source/visualization/RayTracer/include/G4RayTracerViewer.hh @@ -0,0 +1,29 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RayTracerViewer.hh,v 1.2 2000/02/28 15:19:49 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ + +// John Allison 17th March 2000 + +#ifndef G4RAYTRACERVIEWER_HH +#define G4RAYTRACERVIEWER_HH + +#include "G4VViewer.hh" + +class G4RayTracerViewer: virtual public G4VViewer { +public: + G4RayTracerViewer(G4VSceneHandler&,const G4String& name); + virtual ~G4RayTracerViewer(); + void SetView(); + void ClearView(); + void DrawView(); +private: + G4int fFileCount; +}; + +#endif diff --git a/source/visualization/RayTracer/include/G4RayTrajectory.hh b/source/visualization/RayTracer/include/G4RayTrajectory.hh new file mode 100644 index 0000000000..395347ccce --- /dev/null +++ b/source/visualization/RayTracer/include/G4RayTrajectory.hh @@ -0,0 +1,83 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RayTrajectory.hh,v 1.5 2000/03/09 17:38:33 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// + +// class description: +// +// This is a concrete class of G4VTrajectory which represents a trajectory of a ray. +// This class is used by G4RayTracer. Objects of this class are created by G4RTTrackingAction. +// This class does not have concrete implementations of draw and print methods but +// information stored in this class is used by determining a colour of a pixel of the picture. +// + +/////////////////// +//G4RayTrajectory.hh +/////////////////// + +#ifndef G4RayTrajectory_h +#define G4RayTrajectory_h 1 + +class G4Step; + +#include "G4VTrajectory.hh" +#include "G4Allocator.hh" +#include +#include +#include "globals.hh" +#include "G4Track.hh" +#include "G4RayTrajectoryPoint.hh" + + +class G4RayTrajectory : public G4VTrajectory +{ + public: + + G4RayTrajectory(); + G4RayTrajectory(G4RayTrajectory & right); + virtual ~G4RayTrajectory(); + + inline void* operator new(size_t); + inline void operator delete(void*); + inline int operator == (const G4RayTrajectory& right){return (this==&right);} + + virtual void AppendStep(const G4Step*); + virtual void ShowTrajectory() const; + virtual void DrawTrajectory(G4int i_mode=0) const {;} + virtual int GetPointEntries() const {return positionRecord->entries();} + virtual G4VTrajectoryPoint* GetPoint(G4int i) const + { return (*positionRecord)[i]; } + G4RayTrajectoryPoint* GetPointC(G4int i) const + { return (*positionRecord)[i]; } + virtual void MergeTrajectory(G4VTrajectory* secondTrajectory); + + private: + + G4RWTPtrOrderedVector* positionRecord; +}; + + +extern G4Allocator G4RayTrajectoryAllocator; + +inline void* G4RayTrajectory::operator new(size_t) +{ + void* aTrajectory; + aTrajectory = (void*)G4RayTrajectoryAllocator.MallocSingle(); + return aTrajectory; +} + +inline void G4RayTrajectory::operator delete(void* aTrajectory) +{ + G4RayTrajectoryAllocator.FreeSingle((G4RayTrajectory*)aTrajectory); +} + + +#endif + diff --git a/source/visualization/RayTracer/include/G4RayTrajectoryPoint.hh b/source/visualization/RayTracer/include/G4RayTrajectoryPoint.hh new file mode 100644 index 0000000000..3968e53d7b --- /dev/null +++ b/source/visualization/RayTracer/include/G4RayTrajectoryPoint.hh @@ -0,0 +1,77 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RayTrajectoryPoint.hh,v 1.3 2000/03/09 17:38:33 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// + +// class description: +// +// This is a concrete class of G4VTrajectoryPoint which represents a point where +// a ray crosses upon a surface of a volume regardless of its visibility. Objects +// of this class are created by G4RayTrajectory class object. +// + +///////////////////////// +//G4RayTrajectoryPoint.hh +///////////////////////// + +#ifndef G4RayTrajectoryPoint_h +#define G4RayTrajectoryPoint_h 1 + +class G4VisAttributes; +#include "globals.hh" +#include "G4VTrajectoryPoint.hh" +#include "G4Allocator.hh" +#include "G4ThreeVector.hh" + +class G4RayTrajectoryPoint :public G4VTrajectoryPoint +{ + public: + G4RayTrajectoryPoint(); + virtual ~G4RayTrajectoryPoint(); + + inline void *operator new(size_t); + inline void operator delete(void *aTrajectoryPoint); + inline int operator==(const G4RayTrajectoryPoint& right) const + { return (this==&right); }; + + private: + const G4VisAttributes* preStepAtt; + const G4VisAttributes* postStepAtt; + G4ThreeVector surfaceNormal; + G4double stepLength; + + public: + inline void SetPreStepAtt(const G4VisAttributes* val) { preStepAtt = val; } + inline const G4VisAttributes* GetPreStepAtt() const { return preStepAtt; } + inline void SetPostStepAtt(const G4VisAttributes* val) { postStepAtt = val; } + inline const G4VisAttributes* GetPostStepAtt() const { return postStepAtt; } + inline void SetSurfaceNormal(G4ThreeVector val) { surfaceNormal = val; } + inline G4ThreeVector GetSurfaceNormal() const { return surfaceNormal; } + inline void SetStepLength(G4double val) { stepLength = val; } + inline G4double GetStepLength() const { return stepLength; } + +}; + +extern G4Allocator G4RayTrajectoryPointAllocator; + +inline void* G4RayTrajectoryPoint::operator new(size_t) +{ + void *aTrajectoryPoint; + aTrajectoryPoint = (void *) G4RayTrajectoryPointAllocator.MallocSingle(); + return aTrajectoryPoint; +} + +inline void G4RayTrajectoryPoint::operator delete(void *aTrajectoryPoint) +{ + G4RayTrajectoryPointAllocator.FreeSingle((G4RayTrajectoryPoint *) aTrajectoryPoint); +} + +#endif + diff --git a/source/visualization/RayTracer/include/G4VFigureFileMaker.hh b/source/visualization/RayTracer/include/G4VFigureFileMaker.hh new file mode 100644 index 0000000000..9d7c24abb1 --- /dev/null +++ b/source/visualization/RayTracer/include/G4VFigureFileMaker.hh @@ -0,0 +1,38 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4VFigureFileMaker.hh,v 1.3 2000/03/09 17:38:33 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// + +// class description: +// +// This is an abstract class represents a class which generates a figure file +// converting from RGB 8 bits unsigned integers to a kind of picture format. +// + +#ifndef G4VFigureFileMaker_H +#define G4VFigureFileMaker_H 1 + +#include "globals.hh" + +class G4VFigureFileMaker +{ + public: + G4VFigureFileMaker() {;} + virtual ~G4VFigureFileMaker() {;} + + public: + virtual void CreateFigureFile(G4String fileName, + int nColumn,int nRow, + unsigned char* colorR, unsigned char* colorG, + unsigned char* colorB) = 0; +}; + +#endif + diff --git a/source/visualization/RayTracer/src/G4RTJpegCoder.cc b/source/visualization/RayTracer/src/G4RTJpegCoder.cc new file mode 100644 index 0000000000..f130256d81 --- /dev/null +++ b/source/visualization/RayTracer/src/G4RTJpegCoder.cc @@ -0,0 +1,363 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RTJpegCoder.cc,v 1.3 2000/03/09 15:36:37 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// + +#include +#include +#include + +#include "G4RTJpeg.hh" +#include "G4RTOutBitStream.hh" +#include "G4RTJpegMaker.hh" +#include "G4RTJpegCoder.hh" +#include "G4RTJpegCoderTables.hh" + + +G4JpegCoder::G4JpegCoder(u_char* colorR,u_char* colorG,u_char* colorB) +{ + mRgb[0] = colorR; + mRgb[1] = colorG; + mRgb[2] = colorB; + + mPreDC[0] = mPreDC[1] = mPreDC[2] = 0; + mOBSP = 0; + + for(int n=0; n<8; n++) + for(int m=0; m<8; m++) + mCosT[n][m] = cos((2 * m + 1) * n * PaiDiv16); +} + +G4JpegCoder::~G4JpegCoder(void) +{ + if(mOBSP != 0) + delete mOBSP; +} + +void +G4JpegCoder::GetJpegData(char** aJpegData, int& size) +{ + if (mOBSP != 0){ + *aJpegData = (char*)mOBSP->GetStreamAddress(); + size = mOBSP->GetStreamSize(); + } + else{ + *aJpegData = 0; + size = 0; + } + +} + +int +G4JpegCoder::DoCoding(void) +{ + mNumVUnits = (mProperty.nRow / 16) + ((mProperty.nRow % 16) ? 1 : 0); + mNumHUnits = (mProperty.nColumn / 16) + ((mProperty.nColumn % 16) ? 1 : 0); + + int size = mProperty.nColumn * mProperty.nRow * 3; + if(size < 10240) + size = 10240; + + try{ + mOBSP = new G4OutBitStream(size); + WriteHeader(); + for(int yu=0; yuYCrCb + #ifdef GRAY + for(int i=0; i<64; i++) + mCbBlock[i] = mCrBlock[i] = 0; + #endif + CodeMCU(); + } + } + WriteEOI(); + return M_NoError; + } + + catch(G4MemoryError &me){ + return M_RuntimeError; + } + catch(G4BufferError &be){ + return M_RuntimeError; + } + catch(G4IndexError &ie){ + return M_RuntimeError; + } +} + +//MCU +void +G4JpegCoder::CodeMCU(void) +{ + for(int n=0; n<4; n++){ + ForwardDCT(mYBlock[n]); + Quantization(0); + CodeHuffman(0); + } + ForwardDCT(mCbBlock); + Quantization(1); + CodeHuffman(1); + + ForwardDCT(mCrBlock); + Quantization(2); + CodeHuffman(2); +} + +void +G4JpegCoder::makeYCC(int ux, int uy) +{ + u_char rv, gv, bv; + int tCrBlock[4][64]; + int tCbBlock[4][64]; + + for(int u=0; u<4; u++){ + int *yp = mYBlock[u]; + int *cbp = tCbBlock[u]; + int *crp = tCrBlock[u]; + + int sx = ux * 16 + ((u&1) ? 8 : 0); + int ex = sx + 8; + int sy = uy * 16 + ((u>1) ? 8 : 0); + int ey = sy + 8; + + for(int iv=sy; iv 0){ + absDiff >>= 1; + dIdx++; + } + if(dIdx > dcT.numOfElement) + throw(G4IndexError(dcT.numOfElement, dIdx, "CodeHuffman:DC")); + mOBSP->SetBits((dcT.CodeT)[dIdx], (dcT.SizeT)[dIdx]); + + if(dIdx){ + if(diff < 0) + diff--; + mOBSP->SetBits(diff, dIdx); + } + + int run = 0; + for(int n=1; n<64; n++){ + int absCoefficient = abs( mDCTData[ Zigzag[n] ] ); + if( absCoefficient ){ + while( run > 15 ){ + mOBSP->SetBits((acT.CodeT)[zrlIdx], (acT.SizeT)[zrlIdx]); + run -= 16; + } + int s = 0; + while( absCoefficient > 0 ){ + absCoefficient >>= 1; + s++; + } + int aIdx = run * 10 + s + (run == 15); + if( aIdx >= acT.numOfElement ) + throw( G4IndexError( acT.numOfElement, aIdx, "CodeHuffman:AC" ) + ); + mOBSP->SetBits( (acT.CodeT)[aIdx], (acT.SizeT)[aIdx] ); + int v = mDCTData[ Zigzag[n] ]; + if( v < 0 ) + v--; + mOBSP->SetBits( v, s ); + run = 0; + } + else{ + if(n == 63) + mOBSP->SetBits( (acT.CodeT)[eobIdx], (acT.SizeT)[eobIdx] ); + else + run++; + } + } +} + + +void +G4JpegCoder::Quantization(int cs) +{ + int* qt = (int*)(cs ? CQuantumT : YQuantumT); + for( int i=0; i<64; i++ ){ + mDCTData[i] /= qt[i]; + } +} + + +void +G4JpegCoder::ForwardDCT(int* picData) +{ + for( int v=0; v<8; v++ ){ + double cv = v ? 1.0 : DisSqrt2; + for( int u=0; u<8; u++ ){ + double cu = u ? 1.0 : DisSqrt2; + double sum = 0; + + for( int y=0; y<8; y++ ) + for( int x=0; x<8; x++ ) + sum += picData[ y * 8 + x ] * mCosT[u][x] * mCosT[v][y]; + mDCTData[ v * 8 + u ] = int( sum * cu * cv / 4 ); + } + } +} + + +void +G4JpegCoder::WriteHeader( void ) +{ + int i = 0; //counter + //SOI + mOBSP->SetByte( M_Marker ); //FF + mOBSP->SetByte( M_SOI ); //SOI + + //APP0(JFIF Header) + mOBSP->SetByte( M_Marker ); //FF + mOBSP->SetByte( M_APP0 ); //APP0 + mOBSP->SetWord( JFIFLength ); //parameter + mOBSP->CopyByte( (char*)JFIF, 5 ); //"JFIF\0" + mOBSP->SetWord( JFIFVersion ); //Version + mOBSP->SetByte( mProperty.Units ); + mOBSP->SetWord( mProperty.HDensity ); + mOBSP->SetWord( mProperty.VDensity ); + mOBSP->SetByte( 0 ); + mOBSP->SetByte( 0 ); + + //comment + if( mProperty.Comment != 0 ){ + mOBSP->SetByte( M_Marker ); //FF + mOBSP->SetByte( M_COM ); //comment + int length = strlen( mProperty.Comment ) + 1; + mOBSP->SetWord( length + 2 ); + mOBSP->CopyByte( mProperty.Comment, length ); + } + + //DQT + mOBSP->SetByte( M_Marker ); + mOBSP->SetByte( M_DQT ); + mOBSP->SetWord( 67 ); + mOBSP->SetByte( 0 ); + for( i=0; i<64; i++ ) + mOBSP->SetByte( u_char( YQuantumT[Zigzag[i]] ) ); + mOBSP->SetByte( M_Marker ); + mOBSP->SetByte( M_DQT ); + mOBSP->SetWord( 67 ); + mOBSP->SetByte( 1 ); + for( i=0; i<64; i++ ) + mOBSP->SetByte( u_char( CQuantumT[Zigzag[i]] ) ); + // DHT + mOBSP->CopyByte( (char*)YDcDht, DcDhtLength ); + mOBSP->CopyByte( (char*)CDcDht, DcDhtLength ); + mOBSP->CopyByte( (char*)YAcDht, AcDhtLength ); + mOBSP->CopyByte( (char*)CAcDht, AcDhtLength ); + + // Frame Header + mOBSP->SetByte( M_Marker ); // FF + mOBSP->SetByte( M_SOF0 ); + mOBSP->SetWord( 3 * mProperty.Dimension + 8 ); + mOBSP->SetByte( mProperty.SamplePrecision ); + mOBSP->SetWord( mProperty.nRow ); + mOBSP->SetWord( mProperty.nColumn ); + mOBSP->SetByte( mProperty.Dimension ); + + mOBSP->SetByte( 0 ); + mOBSP->SetByte( YSampleF ); + mOBSP->SetByte( 0 ); + + mOBSP->SetByte( 1 ); + mOBSP->SetByte( CSampleF ); + + mOBSP->SetByte( 1 ); + mOBSP->SetByte( 2 ); + mOBSP->SetByte( CSampleF ); + mOBSP->SetByte( 1 ); + + //Scan Header + mOBSP->SetByte( M_Marker ); + mOBSP->SetByte( M_SOS ); + mOBSP->SetWord( 2 * mProperty.Dimension + 6 ); + mOBSP->SetByte( mProperty.Dimension ); + for( i=0; iSetByte( i ); + mOBSP->SetByte( i==0 ? 0 : 0x11 ); + } + mOBSP->SetByte( 0 ); //Ss + mOBSP->SetByte( 63 ); //Se + mOBSP->SetByte( 0 ); //Ah,Al +} + +//EOI +void +G4JpegCoder::WriteEOI( void ) +{ + mOBSP->SetByte( M_Marker ); + mOBSP->SetByte( M_EOI ); +} + +//SetJpegProperty +void +G4JpegCoder::SetJpegProperty(const G4JpegProperty& aProperty ) +{ + mProperty = aProperty; + mProperty.Dimension = 3; + mProperty.SamplePrecision = 8; + mProperty.Format = 1; + mProperty.MajorRevisions = 1; + mProperty.MinorRevisions = 2; + mProperty.HThumbnail = 0; + mProperty.VThumbnail = 0; +} diff --git a/source/visualization/RayTracer/src/G4RTJpegMaker.cc b/source/visualization/RayTracer/src/G4RTJpegMaker.cc new file mode 100644 index 0000000000..d4491750da --- /dev/null +++ b/source/visualization/RayTracer/src/G4RTJpegMaker.cc @@ -0,0 +1,54 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RTJpegMaker.cc,v 1.4 2000/03/09 15:36:37 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// + +#include "G4RTJpeg.hh" +#include "G4RTJpegMaker.hh" +#include "G4RTJpegCoder.hh" +#include + +G4RTJpegMaker::G4RTJpegMaker() +{;} + +G4RTJpegMaker::~G4RTJpegMaker() +{;} + +void G4RTJpegMaker::CreateFigureFile(G4String fileName, + int nColumn, int nRow, + u_char* colorR, + u_char* colorG, + u_char* colorB) +{ + G4JpegCoder aFigure(colorR,colorG,colorB); + G4JpegProperty aProperty; + aProperty.nColumn = nColumn; + aProperty.nRow = nRow; + aProperty.Units = 0; + aProperty.HDensity = 1; + aProperty.VDensity = 1; + aProperty.ExtensionCode = 0; + aProperty.Comment = "Geant4 Ray Tracer Version 1.0 by M.Asai K.Minamimoto C.Kishinaga"; + + aFigure.SetJpegProperty(aProperty); + aFigure.DoCoding(); + + char* jpegAddress; + int jpegSize; + + aFigure.GetJpegData(&jpegAddress,jpegSize); + + G4std::ofstream ofs; + ofs.open(fileName,G4std::ios::out); + ofs.write(jpegAddress,jpegSize); + ofs.close(); + +} diff --git a/source/visualization/RayTracer/src/G4RTMessenger.cc b/source/visualization/RayTracer/src/G4RTMessenger.cc new file mode 100644 index 0000000000..6e0e4fbb8b --- /dev/null +++ b/source/visualization/RayTracer/src/G4RTMessenger.cc @@ -0,0 +1,177 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RTMessenger.cc,v 1.4 2000/06/07 02:52:45 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// + + +#include "G4RTMessenger.hh" + +#include "G4UIdirectory.hh" +#include "G4UIcmdWithABool.hh" +#include "G4UIcmdWith3Vector.hh" +#include "G4UIcmdWith3VectorAndUnit.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" +#include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithAString.hh" +#include "G4RayTracer.hh" +#include "G4RTSteppingAction.hh" +#include "G4ThreeVector.hh" + +G4RTMessenger::G4RTMessenger(G4RayTracer* p1,G4RTSteppingAction* p2) +{ + theTracer = p1; + theSteppingAction = p2; + + rayDirectory = new G4UIdirectory("/vis/rayTracer/"); + rayDirectory->SetGuidance("RayTracer commands."); + + fileCmd = new G4UIcmdWithAString("/vis/rayTracer/trace",this); + fileCmd->SetGuidance("Start the ray tracing."); + fileCmd->SetGuidance("Define the name of output JPEG file."); + fileCmd->SetParameterName("fileName",true); + fileCmd->SetDefaultValue("g4RayTracer.jpeg"); + fileCmd->AvailableForStates(Idle); + + columnCmd = new G4UIcmdWithAnInteger("/vis/rayTracer/column",this); + columnCmd->SetGuidance("Define the number of horizontal pixels."); + columnCmd->SetParameterName("nPixel",false); + columnCmd->SetRange("nPixel > 0"); + + rowCmd = new G4UIcmdWithAnInteger("/vis/rayTracer/row",this); + rowCmd->SetGuidance("Define the number of virtical pixels."); + rowCmd->SetParameterName("nPixel",false); + rowCmd->SetRange("nPixel > 0"); + + targetCmd = new G4UIcmdWith3VectorAndUnit("/vis/rayTracer/target",this); + targetCmd->SetGuidance("Define the center position of the target."); + targetCmd->SetParameterName("X","Y","Z",true); + targetCmd->SetDefaultValue(G4ThreeVector(0.,0.,0.)); + targetCmd->SetDefaultUnit("m"); + + eyePosCmd = new G4UIcmdWith3VectorAndUnit("/vis/rayTracer/eyePosition",this); + eyePosCmd->SetGuidance("Define the eye position."); + eyePosCmd->SetGuidance("Eye direction is calsurated from (target - eyePosition)."); + eyePosCmd->SetParameterName("X","Y","Z",true); + eyePosCmd->SetDefaultValue(G4ThreeVector(0.,0.,0.)); + eyePosCmd->SetDefaultUnit("m"); + + lightCmd = new G4UIcmdWith3Vector("/vis/rayTracer/lightDirection",this); + lightCmd->SetGuidance("Define the direction of illumination light."); + lightCmd->SetGuidance("The vector needs not to be a unit vector, but it must not be a zero vector."); + lightCmd->SetParameterName("Px","Py","Pz",true); + lightCmd->SetDefaultValue(G4ThreeVector(0.1,0.2,0.3)); + lightCmd->SetRange("Px != 0 || Py != 0 || Pz != 0"); + + spanXCmd = new G4UIcmdWithADoubleAndUnit("/vis/rayTracer/span",this); + spanXCmd->SetGuidance("Define the angle per 100 pixels."); + spanXCmd->SetParameterName("span",true); + spanXCmd->SetDefaultValue(50.); + spanXCmd->SetDefaultUnit("deg"); + spanXCmd->SetRange("span>0."); + + headCmd = new G4UIcmdWithADoubleAndUnit("/vis/rayTracer/headAngle",this); + headCmd->SetGuidance("Define the head direction."); + headCmd->SetParameterName("headAngle",true); + headCmd->SetDefaultValue(270.); + headCmd->SetDefaultUnit("deg"); + headCmd->SetRange("headAngle>=0. && headAngle<360."); + + attCmd = new G4UIcmdWithADoubleAndUnit("/vis/rayTracer/attenuation",this); + attCmd->SetGuidance("Define the attenuation length for transparent material."); + attCmd->SetGuidance("Note that this value is independent to the attenuation length for the optical photon processes."); + attCmd->SetParameterName("Length",true); + attCmd->SetDefaultValue(1.0); + attCmd->SetDefaultUnit("m"); + attCmd->SetRange("Length > 0."); + + distCmd = new G4UIcmdWithABool("/vis/rayTracer/distortion",this); + distCmd->SetGuidance("Distortion effect of the fish eye lens."); + distCmd->SetParameterName("flag",true); + distCmd->SetDefaultValue(false); + + transCmd = new G4UIcmdWithABool("/vis/rayTracer/ignoreTransparency",this); + transCmd->SetGuidance("Ignore transparency even if the alpha of G4Colour < 1."); + transCmd->SetParameterName("flag",true); + transCmd->SetDefaultValue(false); +} + +G4RTMessenger::~G4RTMessenger() +{ + delete columnCmd; + delete rowCmd; + delete targetCmd; + delete eyePosCmd; + delete lightCmd; + delete spanXCmd; + delete headCmd; + delete attCmd; + delete distCmd; + delete transCmd; + delete fileCmd; + delete rayDirectory; +} + +G4String G4RTMessenger::GetCurrentValue(G4UIcommand * command) +{ + G4String currentValue; + if(command==columnCmd) + { currentValue = columnCmd->ConvertToString(theTracer->GetNColumn()); } + else if(command==rowCmd) + { currentValue = rowCmd->ConvertToString(theTracer->GetNRow()); } + else if(command==targetCmd) + { currentValue = targetCmd->ConvertToString(theTracer->GetTargetPosition(),"m"); } + else if(command==eyePosCmd) + { currentValue = eyePosCmd->ConvertToString(theTracer->GetEyePosition(),"m"); } + else if(command==lightCmd) + { currentValue = lightCmd->ConvertToString(theTracer->GetLightDirection()); } + else if(command==spanXCmd) + { currentValue = spanXCmd->ConvertToString(theTracer->GetViewSpan(),"deg"); } + else if(command==headCmd) + { currentValue = headCmd->ConvertToString(theTracer->GetHeadAngle(),"deg"); } + else if(command==attCmd) + { currentValue = attCmd->ConvertToString(theTracer->GetAttenuationLength(),"m");} + else if(command==distCmd) + { currentValue = distCmd->ConvertToString(theTracer->GetDistortion()); } + else if(command==transCmd) + { currentValue = transCmd->ConvertToString(theSteppingAction->GetIgnoreTransparency()); } + return currentValue; +} + +void G4RTMessenger::SetNewValue(G4UIcommand * command,G4String newValue) +{ + if(command==columnCmd) + { theTracer->SetNColumn(columnCmd->GetNewIntValue(newValue)); } + else if(command==rowCmd) + { theTracer->SetNRow(rowCmd->GetNewIntValue(newValue)); } + else if(command==targetCmd) + { theTracer->SetTargetPosition(targetCmd->GetNew3VectorValue(newValue)); } + else if(command==eyePosCmd) + { theTracer->SetEyePosition(eyePosCmd->GetNew3VectorValue(newValue)); } + else if(command==lightCmd) + { theTracer->SetLightDirection(lightCmd->GetNew3VectorValue(newValue)); } + else if(command==spanXCmd) + { theTracer->SetViewSpan(spanXCmd->GetNewDoubleValue(newValue)); } + else if(command==headCmd) + { theTracer->SetHeadAngle(headCmd->GetNewDoubleValue(newValue)); } + else if(command==attCmd) + { theTracer->SetAttenuationLength(attCmd->GetNewDoubleValue(newValue)); } + else if(command==distCmd) + { theTracer->SetDistortion(distCmd->GetNewBoolValue(newValue)); } + else if(command==transCmd) + { theSteppingAction->SetIgnoreTransparency(transCmd->GetNewBoolValue(newValue)); } + else if(command==fileCmd) + { theTracer->Trace(newValue); } +} + + + + + diff --git a/source/visualization/RayTracer/src/G4RTOutBitStream.cc b/source/visualization/RayTracer/src/G4RTOutBitStream.cc new file mode 100644 index 0000000000..bad4731d92 --- /dev/null +++ b/source/visualization/RayTracer/src/G4RTOutBitStream.cc @@ -0,0 +1,145 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RTOutBitStream.cc,v 1.3 2000/03/09 15:36:37 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// + +#include +#include "G4RTJpeg.hh" +#include "G4RTOutBitStream.hh" + + + +G4OutBitStream::G4OutBitStream(int size) +{ + if(size < 1) + throw( G4MemoryError( size, "G4OutBitStream" ) ); + + mHeadOfBuf = mBuf = new u_char[size]; + if( mHeadOfBuf == 0 ) + throw( G4MemoryError( size, "G4OutBitStream" ) ); + + mEndOfBuf = mBuf + size; + + memset( mHeadOfBuf, 0, size ); + + mBitPos = 7; + mWriteFlag = 1; +} + +void +G4OutBitStream::IncBuf( void ) +{ + if( ++mBuf >= mEndOfBuf ) + mWriteFlag = 0; +} + + + +void +G4OutBitStream::SetBits(int v, int numBits) +{ + if( numBits == 0 ) + return; + if( numBits > 16 ) + throw( G4BufferError( "SetBits:Max Bit Over" ) ); + if( numBits > 8 ){ + Set8Bits( u_char(v>>8), numBits-8 ); + numBits = 8; + } + Set8Bits( u_char(v), numBits ); +} + +void +G4OutBitStream::SetFewBits(u_char v, int numBits) +{ + v &= BitFullMaskT[numBits-1]; + *mBuf |= v << (mBitPos + 1 - numBits); + if( (mBitPos -= numBits) < 0 ){ + if( *mBuf == 0xff ){ + IncBuf(); + *mBuf = 0; + } + IncBuf(); + mBitPos = 7; + } +} + +void +G4OutBitStream::SetBits2Byte(u_char v, int numBits) +{ + v &= BitFullMaskT[numBits-1]; + int nextBits = numBits - (mBitPos + 1); + *mBuf |= ( v >> nextBits ) & BitFullMaskT[mBitPos]; + if( *mBuf == 0xff ){ + IncBuf(); + *mBuf = 0; + } + IncBuf(); + + *mBuf = v << 8 - nextBits; + mBitPos = 7 - nextBits; +} + +void +G4OutBitStream::Set8Bits(u_char v, int numBits) +{ + if( mBitPos + 1 >= numBits ) + SetFewBits( (u_char)v, numBits ); + else + SetBits2Byte( (u_char)v, numBits ); +} + + +void +G4OutBitStream::FullBit( void ) +{ + if( mBitPos != 7 ) + SetFewBits( BitFullMaskT[mBitPos], mBitPos+1 ); +} + +void +G4OutBitStream::SetByte(u_char dat) +{ + if( mWriteFlag ){ + FullBit(); + *mBuf = dat; + IncBuf(); + return; + } + throw( G4BufferError( "SetByte" ) ); +} + +void +G4OutBitStream::SetWord(u_int dat) +{ + if( mWriteFlag ){ + FullBit(); + *mBuf = (dat >> 8) & 0xff; + IncBuf(); + *mBuf = dat & 0xff; + IncBuf(); + return; + } + throw( G4BufferError( "SetWord" ) ); +} + +void +G4OutBitStream::CopyByte(const char* src, int n) +{ + if( mBuf+n < mEndOfBuf ){ + FullBit(); + memcpy( mBuf, src, n ); + mBuf += n; + return; + } + throw( G4BufferError( "CopyByte" ) ); +} + diff --git a/source/visualization/RayTracer/src/G4RTSteppingAction.cc b/source/visualization/RayTracer/src/G4RTSteppingAction.cc new file mode 100644 index 0000000000..e98f9b14f4 --- /dev/null +++ b/source/visualization/RayTracer/src/G4RTSteppingAction.cc @@ -0,0 +1,63 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RTSteppingAction.cc,v 1.5 2000/03/09 15:36:37 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// + + +#include "G4RTSteppingAction.hh" + +#include "G4SteppingManager.hh" +#include "G4VisManager.hh" +#include "G4VisAttributes.hh" +#include "G4Colour.hh" +#include "G4Track.hh" +#include "G4StepStatus.hh" +#include "G4TransportationManager.hh" + +G4RTSteppingAction::G4RTSteppingAction() +{ + ignoreTransparency=false; +} + +void G4RTSteppingAction::UserSteppingAction(const G4Step* aStep) +{ + // Stop the ray particle if it reaches to the coloured volume with its alpha = 1 + // or coloured volume and the user request to ignore transparency + + G4StepPoint* fpStepPoint = aStep -> GetPostStepPoint(); + G4VPhysicalVolume* postVolume_phys=fpStepPoint->GetPhysicalVolume(); + + if(!postVolume_phys) return; // Reach to out of the world + + const G4LogicalVolume* postVolume_log = postVolume_phys->GetLogicalVolume(); + const G4VisAttributes* postVisAtt = postVolume_log -> GetVisAttributes(); + G4VisManager* visManager = G4VisManager::GetInstance(); + if(visManager) { + G4VViewer* viewer = visManager->GetCurrentViewer(); + if (viewer) { + postVisAtt = viewer->GetApplicableVisAttributes(postVisAtt); + } + } + if((!postVisAtt) || (!(postVisAtt->IsVisible()))) return; // Invisible volume, continue tracking + + if((postVisAtt->IsForceDrawingStyle()) + &&(postVisAtt->GetForcedDrawingStyle()==G4VisAttributes::wireframe)) return; + // Wire frame volume, continue tracking + + G4double postAlpha=(postVisAtt->GetColour()).GetAlpha(); + + if(postAlpha==1.0 || ignoreTransparency) // Stop stepping + { + G4Track* currentTrack = aStep -> GetTrack(); + currentTrack -> SetTrackStatus(fStopAndKill); + } +} + diff --git a/source/visualization/RayTracer/src/G4RTTrackingAction.cc b/source/visualization/RayTracer/src/G4RTTrackingAction.cc new file mode 100644 index 0000000000..42713055a6 --- /dev/null +++ b/source/visualization/RayTracer/src/G4RTTrackingAction.cc @@ -0,0 +1,37 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RTTrackingAction.cc,v 1.2 2000/03/09 15:36:38 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// + +/////////////////////// +//G4RTTrackingAction.cc +/////////////////////// + + +#include "G4RTTrackingAction.hh" +#include "G4RayTrajectory.hh" +#include "G4TrackingManager.hh" +#include "G4ios.hh" + + +void G4RTTrackingAction :: PreUserTrackingAction(const G4Track* aTrack) +{ + G4RayTrajectory* aTrajectory=new G4RayTrajectory; + fpTrackingManager->SetTrajectory(aTrajectory); + +} + + + + + + + diff --git a/source/visualization/RayTracer/src/G4RayShooter.cc b/source/visualization/RayTracer/src/G4RayShooter.cc new file mode 100644 index 0000000000..26f5aa8c45 --- /dev/null +++ b/source/visualization/RayTracer/src/G4RayShooter.cc @@ -0,0 +1,60 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RayShooter.cc,v 1.1 2000/01/29 00:44:53 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// + +#include "G4RayShooter.hh" +#include "G4PrimaryParticle.hh" +#include "G4Event.hh" +#include "G4Geantino.hh" + +G4RayShooter::G4RayShooter() +{ + SetInitialValues(); +} + +void G4RayShooter::SetInitialValues() +{ + particle_definition = G4Geantino::GeantinoDefinition(); + G4ThreeVector zero; + particle_momentum_direction = (G4ParticleMomentum)zero; + particle_energy = 1.0*GeV; + particle_position = zero; + particle_time = 0.0; + particle_polarization = zero; +} + +G4RayShooter::~G4RayShooter() +{ +} + +void G4RayShooter::Shoot(G4Event* evt,G4ThreeVector vtx,G4ThreeVector direc) +{ + // create a new vertex + G4PrimaryVertex* vertex = new G4PrimaryVertex(vtx,particle_time); + + // 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*direc.x(); + G4double py = pmom*direc.y(); + G4double pz = pmom*direc.z(); + G4PrimaryParticle* particle = + new G4PrimaryParticle(particle_definition,px,py,pz); + particle->SetMass( mass ); + particle->SetPolarization(particle_polarization.x(), + particle_polarization.y(), + particle_polarization.z()); + vertex->SetPrimary( particle ); + + evt->AddPrimaryVertex( vertex ); +} + + diff --git a/source/visualization/RayTracer/src/G4RayTracer.cc b/source/visualization/RayTracer/src/G4RayTracer.cc new file mode 100644 index 0000000000..87787ba3a2 --- /dev/null +++ b/source/visualization/RayTracer/src/G4RayTracer.cc @@ -0,0 +1,358 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RayTracer.cc,v 1.6 2000/06/07 02:52:45 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// + + +#include "G4RayTracer.hh" +#include "G4RayTracerFeatures.hh" +#include "G4RayTracerSceneHandler.hh" +#include "G4RayTracerViewer.hh" +#include "G4EventManager.hh" +#include "G4RTMessenger.hh" +#include "G4RayShooter.hh" +#include "G4VFigureFileMaker.hh" +#include "G4RTTrackingAction.hh" +#include "G4RTSteppingAction.hh" +#include "G4RayTrajectory.hh" +#include "G4RayTrajectoryPoint.hh" +#include "G4RTJpegMaker.hh" +#include "G4GeometryManager.hh" +#include "G4SDManager.hh" +#include "G4StateManager.hh" +#include "G4Event.hh" +#include "G4TrajectoryContainer.hh" +#include "G4Colour.hh" +#include "G4VisAttributes.hh" +#include "G4UImanager.hh" +#include "G4TransportationManager.hh" + +G4RayTracer::G4RayTracer(G4VFigureFileMaker* figMaker) +:G4VGraphicsSystem("RayTracer","RayTracer",RAYTRACER_FEATURES, + G4VGraphicsSystem::threeD) +{ + theFigMaker = figMaker; + if(!theFigMaker) theFigMaker = new G4RTJpegMaker(); + theRayShooter = new G4RayShooter(); + theRayTracerEventAction = 0; + theRayTracerStackingAction = 0; + theRayTracerTrackingAction = new G4RTTrackingAction(); + theRayTracerSteppingAction = new G4RTSteppingAction(); + theMessenger = new G4RTMessenger(this,theRayTracerSteppingAction); + theEventManager = G4EventManager::GetEventManager(); + + nColumn = 640; + nRow = 640; + + eyePosition = G4ThreeVector(1.*m,1.*m,1.*m); + targetPosition = G4ThreeVector(0.,0.,0.); + lightDirection = G4ThreeVector(-0.1,-0.2,-0.3).unit(); + viewSpan = 5.0*deg; + headAngle = 270.*deg; + attenuationLength = 1.0*m; + + distortionOn = false; +} + +G4RayTracer::~G4RayTracer() +{ + delete theRayShooter; + delete theRayTracerTrackingAction; + delete theRayTracerSteppingAction; + delete theMessenger; +} + +void G4RayTracer::Trace(G4String fileName) +{ + G4StateManager* theStateMan = G4StateManager::GetStateManager(); + G4ApplicationState currentState = theStateMan->GetCurrentState(); + if(currentState!=Idle) + { + G4cerr << "Illegal application state - Trace() ignored." << G4endl; + return; + } + + if(!theFigMaker) + { + G4cerr << "Figure file maker class is not specified - Trace() ignored." << G4endl; + return; + } + + G4UImanager* UI = G4UImanager::GetUIpointer(); + G4int storeTrajectory = UI->GetCurrentIntValue("/tracking/storeTrajectory"); + if(storeTrajectory==0) UI->ApplyCommand("/tracking/storeTrajectory 1"); + + + G4ThreeVector tmpVec = targetPosition - eyePosition; + eyeDirection = tmpVec.unit(); + colorR = new unsigned char[nColumn*nRow]; + colorG = new unsigned char[nColumn*nRow]; + colorB = new unsigned char[nColumn*nRow]; + + StoreUserActions(); + G4bool succeeded = CreateBitMap(); + if(succeeded) + { CreateFigureFile(fileName); } + else + { G4cerr << "Could not create figure file" << G4endl; + G4cerr << "You might set the eye position outside of the world volume" << G4endl; } + RestoreUserActions(); + + if(storeTrajectory==0) UI->ApplyCommand("/tracking/storeTrajectory 0"); + + delete [] colorR; + delete [] colorG; + delete [] colorB; +} + +G4VSceneHandler* G4RayTracer::CreateSceneHandler (const G4String& name) { + G4VSceneHandler* pScene = new G4RayTracerSceneHandler (*this, name); + G4cout << G4RayTracerSceneHandler::GetSceneCount () + << ' ' << fName << " scenes extanct." << G4endl; + return pScene; +} + +G4VViewer* G4RayTracer::CreateViewer (G4VSceneHandler& sceneHandler, + const G4String& name) { + G4VViewer* pView = new G4RayTracerViewer (sceneHandler, name); + return pView; +} + +void G4RayTracer::StoreUserActions() +{ + theUserEventAction = theEventManager->GetUserEventAction(); + theUserStackingAction = theEventManager->GetUserStackingAction(); + theUserTrackingAction = theEventManager->GetUserTrackingAction(); + theUserSteppingAction = theEventManager->GetUserSteppingAction(); + + theEventManager->SetUserAction(theRayTracerEventAction); + theEventManager->SetUserAction(theRayTracerStackingAction); + theEventManager->SetUserAction(theRayTracerTrackingAction); + theEventManager->SetUserAction(theRayTracerSteppingAction); + + G4SDManager* theSDMan = G4SDManager::GetSDMpointerIfExist(); + if(theSDMan) + { theSDMan->Activate("/",false); } + + G4GeometryManager* theGeomMan = G4GeometryManager::GetInstance(); + theGeomMan->OpenGeometry(); + theGeomMan->CloseGeometry(true); +} + +void G4RayTracer::RestoreUserActions() +{ + theEventManager->SetUserAction(theUserEventAction); + theEventManager->SetUserAction(theUserStackingAction); + theEventManager->SetUserAction(theUserTrackingAction); + theEventManager->SetUserAction(theUserSteppingAction); + + G4SDManager* theSDMan = G4SDManager::GetSDMpointerIfExist(); + if(theSDMan) + { theSDMan->Activate("/",true); } +} + +G4bool G4RayTracer::CreateBitMap() +{ + G4int iEvent = 0; + G4double stepAngle = viewSpan/100.; + G4double viewSpanX = stepAngle*nColumn; + G4double viewSpanY = stepAngle*nRow; + G4bool succeeded; + for(int iRow=0;iRow + GetNavigatorForTracking()->GetWorldVolume (); + EInside whereisit = + pWorld->GetLogicalVolume()->GetSolid()->Inside(rayPosition); + if (whereisit != kInside) { + // It's outside the world, so move it inside. + G4double outsideDistance = + pWorld->GetLogicalVolume()->GetSolid()-> + DistanceToIn(rayPosition,rayDirection); + if (outsideDistance != kInfinity) { + rayPosition = rayPosition+outsideDistance*rayDirection; + } + else { + interceptable = false; + } + } + if (interceptable) { + theRayShooter->Shoot(anEvent,rayPosition,rayDirection); + theEventManager->ProcessOneEvent(anEvent); + succeeded = GenerateColour(anEvent); + //G4cout << iColumn << " " << iRow << " " << anEvent->GetEventID() << G4endl; + } + else { // Ray does not intercept world at all. + // Generate background colour... + G4int iEvent = anEvent->GetEventID(); + colorR[iEvent] = 0; + colorG[iEvent] = 0; + colorB[iEvent] = 0; + succeeded = true; + } + delete anEvent; + if(!succeeded) return false; + } + } + return true; +} + +void G4RayTracer::CreateFigureFile(G4String fileName) +{ + //G4cout << nColumn << " " << nRow << G4endl; + theFigMaker->CreateFigureFile(fileName,nColumn,nRow,colorR,colorG,colorB); +} + +G4bool G4RayTracer::GenerateColour(G4Event* anEvent) +{ + G4TrajectoryContainer * trajectoryContainer = anEvent->GetTrajectoryContainer(); + + G4RayTrajectory* trajectory = (G4RayTrajectory*)( (*trajectoryContainer)[0] ); + if(!trajectory) return false; + + G4int nPoint = trajectory->GetPointEntries(); + if(nPoint==0) return false; + + G4Colour rayColour; + G4Colour initialColour(1.,1.,1.); + if( trajectory->GetPointC(nPoint-1)->GetPostStepAtt() ) + { initialColour = GetSurfaceColour(trajectory->GetPointC(nPoint-1)); } + rayColour = Attenuate(trajectory->GetPointC(nPoint-1),initialColour); + + for(int i=nPoint-2;i>=0;i--) + { + G4Colour surfaceColour = GetSurfaceColour(trajectory->GetPointC(i)); + G4double weight = 1.0 - surfaceColour.GetAlpha(); + G4Colour mixedColour = GetMixedColour(rayColour,surfaceColour,weight); + rayColour = Attenuate(trajectory->GetPointC(i),mixedColour); + } + + G4int iEvent = anEvent->GetEventID(); + colorR[iEvent] = (unsigned char)(int(255*rayColour.GetRed())); + colorG[iEvent] = (unsigned char)(int(255*rayColour.GetGreen())); + colorB[iEvent] = (unsigned char)(int(255*rayColour.GetBlue())); + return true; +} + +G4Colour G4RayTracer::GetMixedColour(G4Colour surfCol,G4Colour transCol,G4double weight) +{ + G4double r = weight*surfCol.GetRed() + (1.-weight)*transCol.GetRed(); + G4double g = weight*surfCol.GetGreen() + (1.-weight)*transCol.GetGreen(); + G4double b = weight*surfCol.GetBlue() + (1.-weight)*transCol.GetBlue(); + G4double a = weight*surfCol.GetAlpha() + (1.-weight)*transCol.GetAlpha(); + return G4Colour(r,g,b,a); +} + +G4Colour G4RayTracer::GetSurfaceColour(G4RayTrajectoryPoint* point) +{ + const G4VisAttributes* preAtt = point->GetPreStepAtt(); + const G4VisAttributes* postAtt = point->GetPostStepAtt(); + + G4bool preVis = ValidColour(preAtt); + G4bool postVis = ValidColour(postAtt); + + G4Colour transparent(1.,1.,1.,0.); + + if(!preVis&&!postVis) return transparent; + + G4ThreeVector normal = point->GetSurfaceNormal(); + + G4Colour preCol(1.,1.,1.); + G4Colour postCol(1.,1.,1.); + + if(preVis) + { + G4double brill = (1.0-(-lightDirection).dot(normal))/2.0; + G4double r = preAtt->GetColour().GetRed(); + G4double g = preAtt->GetColour().GetGreen(); + G4double b = preAtt->GetColour().GetBlue(); + preCol = G4Colour(r*brill,g*brill,b*brill,preAtt->GetColour().GetAlpha()); + } + else + { preCol = transparent; } + + if(postVis) + { + G4double brill = (1.0-(-lightDirection).dot(-normal))/2.0; + G4double r = postAtt->GetColour().GetRed(); + G4double g = postAtt->GetColour().GetGreen(); + G4double b = postAtt->GetColour().GetBlue(); + postCol = G4Colour(r*brill,g*brill,b*brill,postAtt->GetColour().GetAlpha()); + } + else + { postCol = transparent; } + + if(!preVis) return postCol; + if(!postVis) return preCol; + + G4double weight = 0.5; + return GetMixedColour(preCol,postCol,weight); +} + +G4Colour G4RayTracer::Attenuate(G4RayTrajectoryPoint* point, G4Colour sourceCol) +{ + const G4VisAttributes* preAtt = point->GetPreStepAtt(); + + G4bool visible = ValidColour(preAtt); + if(!visible) return sourceCol; + + G4Colour objCol = preAtt->GetColour(); + G4double stepRed = objCol.GetRed(); + G4double stepGreen = objCol.GetGreen(); + G4double stepBlue = objCol.GetBlue(); + G4double stepAlpha = objCol.GetAlpha(); + G4double stepLength = point->GetStepLength(); + + G4double attenuationFuctor = -stepAlpha/(1.0-stepAlpha)*stepLength/attenuationLength; + G4double KtRed = exp((1.0-stepRed)*attenuationFuctor); + G4double KtGreen = exp((1.0-stepGreen)*attenuationFuctor); + G4double KtBlue = exp((1.0-stepBlue)*attenuationFuctor); + if(KtRed>1.0){KtRed=1.0;} + if(KtGreen>1.0){KtGreen=1.0;} + if(KtBlue>1.0){KtBlue=1.0;} + return G4Colour(sourceCol.GetRed()*KtRed, + sourceCol.GetGreen()*KtGreen,sourceCol.GetBlue()*KtBlue); +} + +G4bool G4RayTracer::ValidColour(const G4VisAttributes* visAtt) +{ + G4bool val = true; + if(!visAtt) + { val = false; } + else if(!(visAtt->IsVisible())) + { val = false; } + else if(visAtt->IsForceDrawingStyle() + &&(visAtt->GetForcedDrawingStyle()==G4VisAttributes::wireframe)) + { val = false; } + return val; +} + diff --git a/source/visualization/RayTracer/src/G4RayTracerSceneHandler.cc b/source/visualization/RayTracer/src/G4RayTracerSceneHandler.cc new file mode 100644 index 0000000000..b6d35a9821 --- /dev/null +++ b/source/visualization/RayTracer/src/G4RayTracerSceneHandler.cc @@ -0,0 +1,31 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RayTracerSceneHandler.cc,v 1.1 2000/02/23 16:03:53 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ + +#include "G4RayTracerSceneHandler.hh" + +G4RayTracerSceneHandler::G4RayTracerSceneHandler(G4VGraphicsSystem& system, + const G4String& name): + G4VSceneHandler(system, fSceneIdCount++, name) +{ + fSceneCount++; +} + +G4RayTracerSceneHandler::~G4RayTracerSceneHandler() +{ + fSceneCount--; +} + +G4int G4RayTracerSceneHandler::GetSceneCount() { + return fSceneCount; +} + +G4int G4RayTracerSceneHandler::fSceneIdCount = 0; + +G4int G4RayTracerSceneHandler::fSceneCount = 0; diff --git a/source/visualization/RayTracer/src/G4RayTracerViewer.cc b/source/visualization/RayTracer/src/G4RayTracerViewer.cc new file mode 100644 index 0000000000..977e389cc9 --- /dev/null +++ b/source/visualization/RayTracer/src/G4RayTracerViewer.cc @@ -0,0 +1,74 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RayTracerViewer.cc,v 1.6 2000/05/13 10:55:56 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ + +#include "G4RayTracerViewer.hh" + +#include "G4ios.hh" +#include "g4std/strstream" + +#include "G4VSceneHandler.hh" +#include "G4Scene.hh" +#include "G4RayTracer.hh" +#include "G4UImanager.hh" + +G4RayTracerViewer::G4RayTracerViewer +(G4VSceneHandler& sceneHandler, const G4String& name): + fFileCount(0), + G4VViewer(sceneHandler, sceneHandler.IncrementViewCount(), name) {} + +G4RayTracerViewer::~G4RayTracerViewer() {} + +void G4RayTracerViewer::SetView() { + G4RayTracer* theTracer = + (G4RayTracer*) fSceneHandler.GetGraphicsSystem(); + + // Get radius of scene, etc. (See G4OpenGLViewer::SetView().) + // Note that this procedure properly takes into account zoom, dolly and pan. + const G4Point3D& targetPoint + = fSceneHandler.GetScene()->GetStandardTargetPoint() + + fVP.GetCurrentTargetPoint(); + G4double radius = // See G4ViewParameters for following procedure. + fSceneHandler.GetScene()->GetExtent().GetExtentRadius(); + if(radius<=0.) radius = 1.; + const G4double cameraDistance = fVP.GetCameraDistance(radius); + const G4Point3D cameraPosition = + targetPoint + cameraDistance * fVP.GetViewpointDirection().unit(); + const G4double nearDistance = fVP.GetNearDistance(cameraDistance,radius); + const G4double frontHalfHeight = fVP.GetFrontHalfHeight(nearDistance,radius); + const G4double frontHalfAngle = atan(frontHalfHeight / nearDistance); + + // Calculate and set ray tracer parameters. + theTracer-> + SetViewSpan(200. * frontHalfAngle / theTracer->GetNColumn()); + theTracer->SetTargetPosition(targetPoint); + theTracer->SetEyePosition(cameraPosition); + theTracer->SetHeadAngle(fVP.GetViewpointDirection().phi()); + theTracer->SetLightDirection(-fVP.GetActualLightpointDirection()); +} + + +void G4RayTracerViewer::ClearView() {} + +void G4RayTracerViewer::DrawView() { + if (fVP.GetFieldHalfAngle() == 0.) { // Orthogonal (parallel) projection. + G4cout << + "G4RayTracerViewer::SetView: orthogonal projection not yet implemented." + << G4endl; + return; + } + SetView(); // Special graphics system - bypass ProcessView(). + G4RayTracer* theTracer = + (G4RayTracer*) fSceneHandler.GetGraphicsSystem(); + char fileName [100]; + G4std::ostrstream ost(fileName, 100); + ost << "g4RayTracer." << fShortName << '_' << fFileCount++ << ".jpeg" + << G4std::ends; + theTracer->Trace(fileName); +} diff --git a/source/visualization/RayTracer/src/G4RayTrajectory.cc b/source/visualization/RayTracer/src/G4RayTrajectory.cc new file mode 100644 index 0000000000..d4465ea899 --- /dev/null +++ b/source/visualization/RayTracer/src/G4RayTrajectory.cc @@ -0,0 +1,108 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RayTrajectory.cc,v 1.4 2000/03/09 15:36:38 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// + +/////////////////// +//G4RayTrajectory.cc +/////////////////// + + +#include "G4RayTrajectory.hh" +#include "G4RayTrajectoryPoint.hh" +#include "G4Step.hh" +#include "G4VPhysicalVolume.hh" +#include "G4VisManager.hh" +#include "G4VisAttributes.hh" +#include "G4Colour.hh" +#include "G4TransportationManager.hh" +#include "G4ios.hh" + +G4Allocator G4RayTrajectoryAllocator; + + +G4RayTrajectory :: G4RayTrajectory() +{ + positionRecord = new G4RWTPtrOrderedVector; +} + +G4RayTrajectory :: G4RayTrajectory(G4RayTrajectory & right) +{ + positionRecord = new G4RWTPtrOrderedVector; + for(int i=0;ientries();i++) + { + G4RayTrajectoryPoint* rightPoint = (G4RayTrajectoryPoint*) + ((*(right.positionRecord))[i]); + positionRecord->insert(new G4RayTrajectoryPoint(*rightPoint)); + } +} + +G4RayTrajectory :: ~G4RayTrajectory() +{ + positionRecord->clearAndDestroy(); + delete positionRecord; +} + +void G4RayTrajectory::AppendStep(const G4Step* aStep) +{ + G4RayTrajectoryPoint* trajectoryPoint = new G4RayTrajectoryPoint(); + + trajectoryPoint->SetStepLength(aStep->GetStepLength()); + + G4Navigator* theNavigator + = G4TransportationManager::GetTransportationManager()->GetNavigatorForTracking(); + G4bool valid; + G4ThreeVector theLocalNormal = theNavigator->GetLocalExitNormal(&valid); + if(valid) { theLocalNormal = -theLocalNormal; } + G4ThreeVector theGrobalNormal + = theNavigator->GetLocalToGlobalTransform().TransformAxis(theLocalNormal); + trajectoryPoint->SetSurfaceNormal(theGrobalNormal); + + G4VPhysicalVolume* prePhys = aStep->GetPreStepPoint()->GetPhysicalVolume(); + const G4VisAttributes* preVisAtt = prePhys->GetLogicalVolume()->GetVisAttributes(); + G4VisManager* visManager = G4VisManager::GetInstance(); + if(visManager) { + G4VViewer* viewer = visManager->GetCurrentViewer(); + if (viewer) { + preVisAtt = viewer->GetApplicableVisAttributes(preVisAtt); + } + } + trajectoryPoint->SetPreStepAtt(preVisAtt); + + const G4VPhysicalVolume* postPhys = aStep->GetPostStepPoint()->GetPhysicalVolume(); + const G4VisAttributes* postVisAtt = NULL; + if(postPhys) { + postVisAtt = postPhys->GetLogicalVolume()->GetVisAttributes(); + if(visManager) { + G4VViewer* viewer = visManager->GetCurrentViewer(); + if (viewer) { + postVisAtt = viewer->GetApplicableVisAttributes(postVisAtt); + } + } + } + trajectoryPoint->SetPostStepAtt(postVisAtt); + + positionRecord->append(trajectoryPoint); +} + +void G4RayTrajectory::ShowTrajectory() const +{ } + +void G4RayTrajectory::MergeTrajectory(G4VTrajectory* secondTrajectory) +{ + if(!secondTrajectory) return; + + G4RayTrajectory* seco = (G4RayTrajectory*)secondTrajectory; + G4int ent = seco->GetPointEntries(); + for(G4int i=0;iappend(seco->positionRecord->removeAt(0)); } +} + diff --git a/source/visualization/RayTracer/src/G4RayTrajectoryPoint.cc b/source/visualization/RayTracer/src/G4RayTrajectoryPoint.cc new file mode 100644 index 0000000000..62f309db53 --- /dev/null +++ b/source/visualization/RayTracer/src/G4RayTrajectoryPoint.cc @@ -0,0 +1,28 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4RayTrajectoryPoint.cc,v 1.2 2000/03/09 15:36:38 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// + +/////////////////////// +//G4RayTrajectoryPoint.cc +/////////////////////// + + +#include"G4RayTrajectoryPoint.hh" + +G4Allocator G4RayTrajectoryPointAllocator; + +G4RayTrajectoryPoint :: G4RayTrajectoryPoint() +{;} + +G4RayTrajectoryPoint :: ~G4RayTrajectoryPoint() +{;} + diff --git a/source/visualization/VRML/GNUmakefile b/source/visualization/VRML/GNUmakefile index fb462c1d33..8dfbcb521d 100644 --- a/source/visualization/VRML/GNUmakefile +++ b/source/visualization/VRML/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.2 1999/04/15 15:28:00 johna Exp $ +# $Id: GNUmakefile,v 1.3 2000/04/07 13:32:42 gcosmo Exp $ # lib name name := G4VRML @@ -16,6 +16,7 @@ CPPFLAGS += -I$(G4BASE)/visualization/modeling/include CPPFLAGS += -I$(G4BASE)/global/management/include CPPFLAGS += -I$(G4BASE)/global/HEPGeometry/include CPPFLAGS += -I$(G4BASE)/geometry/solids/CSG/include +CPPFLAGS += -I$(G4BASE)/geometry/solids/specific/include CPPFLAGS += -I$(G4BASE)/graphics_reps/include CPPFLAGS += -I$(G4BASE)/intercoms/include CPPFLAGS += -I$(G4BASE)/geometry/management/include diff --git a/source/visualization/VRML/History b/source/visualization/VRML/History index 68074fe5ad..80391bf6a8 100644 --- a/source/visualization/VRML/History +++ b/source/visualization/VRML/History @@ -1,3 +1,6 @@ +27th April 2000 Gabriele Cosmo +- Removed unnecessary #include "G4Transform.hh". + VRML-V01-00-00 27th December 1999 Satoshi Tanaka - G4endl ==> "\n" for fDest objects diff --git a/source/visualization/VRML/g4vrmlview/g4mini.java b/source/visualization/VRML/g4vrmlview/g4mini.java index 50b04f22b8..9b647b34f4 100644 --- a/source/visualization/VRML/g4vrmlview/g4mini.java +++ b/source/visualization/VRML/g4vrmlview/g4mini.java @@ -6,7 +6,7 @@ // and all its terms. // // $Id: g4mini.java,v 1.2 1999/12/15 14:54:13 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // import java.io.*; import java.net.*; diff --git a/source/visualization/VRML/g4vrmlview/g4vrmlview.java b/source/visualization/VRML/g4vrmlview/g4vrmlview.java index ded0555048..da70e3beca 100644 --- a/source/visualization/VRML/g4vrmlview/g4vrmlview.java +++ b/source/visualization/VRML/g4vrmlview/g4vrmlview.java @@ -6,7 +6,7 @@ // and all its terms. // // $Id: g4vrmlview.java,v 1.2 1999/12/15 14:54:13 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // import java.io.*; import java.net.*; diff --git a/source/visualization/VRML/include/FRClient.h b/source/visualization/VRML/include/FRClient.h index 07455e1c09..c915ed39c6 100644 --- a/source/visualization/VRML/include/FRClient.h +++ b/source/visualization/VRML/include/FRClient.h @@ -6,7 +6,7 @@ // and all its terms. // // $Id: FRClient.h,v 1.2 1999/12/15 14:54:13 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // FRClient.h // FukuiRenderer Client diff --git a/source/visualization/VRML/include/G4FRClient.hh b/source/visualization/VRML/include/G4FRClient.hh index 221ca26571..cc2ec919bc 100644 --- a/source/visualization/VRML/include/G4FRClient.hh +++ b/source/visualization/VRML/include/G4FRClient.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4FRClient.hh,v 1.4 1999/12/27 07:49:11 stanaka Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 08b1527902..679f31aa52 100644 --- a/source/visualization/VRML/include/G4VRML1.hh +++ b/source/visualization/VRML/include/G4VRML1.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VRML1.hh,v 1.6 1999/12/15 14:54:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 269f380785..2e3eb7d6a3 100644 --- a/source/visualization/VRML/include/G4VRML1File.hh +++ b/source/visualization/VRML/include/G4VRML1File.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VRML1File.hh,v 1.6 1999/12/15 14:54:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VRML1File.hh // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/include/G4VRML1FileSceneHandler.hh b/source/visualization/VRML/include/G4VRML1FileSceneHandler.hh index f94e5b2edc..db1bd8a4c8 100644 --- a/source/visualization/VRML/include/G4VRML1FileSceneHandler.hh +++ b/source/visualization/VRML/include/G4VRML1FileSceneHandler.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VRML1FileSceneHandler.hh,v 1.6 1999/12/16 17:25:11 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VRML1FileSceneHandler.hh // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/include/G4VRML1FileViewer.hh b/source/visualization/VRML/include/G4VRML1FileViewer.hh index 3810d99da7..2639ce2c98 100644 --- a/source/visualization/VRML/include/G4VRML1FileViewer.hh +++ b/source/visualization/VRML/include/G4VRML1FileViewer.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VRML1FileViewer.hh,v 1.4 1999/12/15 14:54:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VRML1FileViewer.hh // Satoshi Tanaka and Yasuhide Sawada diff --git a/source/visualization/VRML/include/G4VRML1SceneHandler.hh b/source/visualization/VRML/include/G4VRML1SceneHandler.hh index 984abfc4ef..7fe3c89b51 100644 --- a/source/visualization/VRML/include/G4VRML1SceneHandler.hh +++ b/source/visualization/VRML/include/G4VRML1SceneHandler.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VRML1SceneHandler.hh,v 1.6 1999/12/16 17:25:12 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VRML1SceneHandler.hh // Yasuhide Sawada & Satoshi Tanaka diff --git a/source/visualization/VRML/include/G4VRML1Viewer.hh b/source/visualization/VRML/include/G4VRML1Viewer.hh index 01d3c82d9c..30e0cc9f0d 100644 --- a/source/visualization/VRML/include/G4VRML1Viewer.hh +++ b/source/visualization/VRML/include/G4VRML1Viewer.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VRML1Viewer.hh,v 1.4 1999/12/15 14:54:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VRML1Viewer.hh // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/include/G4VRML2.hh b/source/visualization/VRML/include/G4VRML2.hh index 8a45e3489d..b274e56390 100644 --- a/source/visualization/VRML/include/G4VRML2.hh +++ b/source/visualization/VRML/include/G4VRML2.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VRML2.hh,v 1.6 1999/12/15 14:54:14 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 9cff92651a..183705775f 100644 --- a/source/visualization/VRML/include/G4VRML2File.hh +++ b/source/visualization/VRML/include/G4VRML2File.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VRML2File.hh,v 1.6 1999/12/15 14:54:15 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VRML2File.hh // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/include/G4VRML2FileSceneHandler.hh b/source/visualization/VRML/include/G4VRML2FileSceneHandler.hh index f3bf073cf4..a610285af1 100644 --- a/source/visualization/VRML/include/G4VRML2FileSceneHandler.hh +++ b/source/visualization/VRML/include/G4VRML2FileSceneHandler.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VRML2FileSceneHandler.hh,v 1.5 1999/12/16 17:25:14 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VRML2FileSceneHandler.hh // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/include/G4VRML2FileViewer.hh b/source/visualization/VRML/include/G4VRML2FileViewer.hh index 06b29131fc..feb01e0216 100644 --- a/source/visualization/VRML/include/G4VRML2FileViewer.hh +++ b/source/visualization/VRML/include/G4VRML2FileViewer.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VRML2FileViewer.hh,v 1.4 1999/12/15 14:54:15 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VRML2FileViewer.hh // Satoshi Tanaka and Yasuhide Sawada diff --git a/source/visualization/VRML/include/G4VRML2SceneHandler.hh b/source/visualization/VRML/include/G4VRML2SceneHandler.hh index 0f6b9fbb24..e3ada29d9f 100644 --- a/source/visualization/VRML/include/G4VRML2SceneHandler.hh +++ b/source/visualization/VRML/include/G4VRML2SceneHandler.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VRML2SceneHandler.hh,v 1.5 1999/12/16 17:25:16 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VRML2SceneHandler.hh // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/include/G4VRML2Viewer.hh b/source/visualization/VRML/include/G4VRML2Viewer.hh index 7a55e5058f..9d6ca070ee 100644 --- a/source/visualization/VRML/include/G4VRML2Viewer.hh +++ b/source/visualization/VRML/include/G4VRML2Viewer.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VRML2Viewer.hh,v 1.4 1999/12/15 14:54:15 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VRML2Viewer.hh // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/include/G4VRMLNetConfig.hh b/source/visualization/VRML/include/G4VRMLNetConfig.hh index a4e1036ee6..866e8b0979 100644 --- a/source/visualization/VRML/include/G4VRMLNetConfig.hh +++ b/source/visualization/VRML/include/G4VRMLNetConfig.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VRMLNetConfig.hh,v 1.3 1999/12/15 14:54:15 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VRMLNetConfig.hh // Satoshi Tanaka diff --git a/source/visualization/VRML/src/FRClient.cc b/source/visualization/VRML/src/FRClient.cc index 818cddfde9..eeec648f81 100644 --- a/source/visualization/VRML/src/FRClient.cc +++ b/source/visualization/VRML/src/FRClient.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: FRClient.cc,v 1.3 1999/12/15 14:54:15 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // FRClient.cc // FukuiRenderer Client diff --git a/source/visualization/VRML/src/G4FRClient.cc b/source/visualization/VRML/src/G4FRClient.cc index 2a16cc98ef..2f7c863eda 100644 --- a/source/visualization/VRML/src/G4FRClient.cc +++ b/source/visualization/VRML/src/G4FRClient.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4FRClient.cc,v 1.4 1999/12/27 07:49:22 stanaka Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4FRClient.cc // Yasuhide Sawada & Satoshi Tanaka diff --git a/source/visualization/VRML/src/G4VRML1.cc b/source/visualization/VRML/src/G4VRML1.cc index b8988f0eb2..d70a52d1db 100644 --- a/source/visualization/VRML/src/G4VRML1.cc +++ b/source/visualization/VRML/src/G4VRML1.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VRML1.cc,v 1.4 1999/12/15 14:54:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VRML1.cc // Yasuhide Sawada & Satoshi Tanaka diff --git a/source/visualization/VRML/src/G4VRML1File.cc b/source/visualization/VRML/src/G4VRML1File.cc index c6bb947409..0d8633d7d3 100644 --- a/source/visualization/VRML/src/G4VRML1File.cc +++ b/source/visualization/VRML/src/G4VRML1File.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VRML1File.cc,v 1.4 1999/12/15 14:54:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VRML1File.cc // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/src/G4VRML1FileSceneHandler.cc b/source/visualization/VRML/src/G4VRML1FileSceneHandler.cc index edb045e280..6e45b565c7 100644 --- a/source/visualization/VRML/src/G4VRML1FileSceneHandler.cc +++ b/source/visualization/VRML/src/G4VRML1FileSceneHandler.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VRML1FileSceneHandler.cc,v 1.2 1999/12/15 14:54:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VRML1FileSceneHandler.cc,v 1.4 2000/04/27 13:56:16 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VRML1FileSceneHandler.cc // Satoshi Tanaka & Yasuhide Sawada @@ -24,17 +24,21 @@ #include #include "globals.hh" +#include "G4Scene.hh" #include "G4VPhysicalVolume.hh" #include "G4LogicalVolume.hh" #include "G4Point3D.hh" #include "G4VisAttributes.hh" -#include "G4Transform.hh" #include "G4Polyhedron.hh" #include "G4Box.hh" #include "G4Cons.hh" #include "G4Polyline.hh" #include "G4Trd.hh" #include "G4Tubs.hh" +#include "G4Trap.hh" +#include "G4Para.hh" +#include "G4Torus.hh" +#include "G4Sphere.hh" #include "G4Text.hh" #include "G4Circle.hh" #include "G4Square.hh" diff --git a/source/visualization/VRML/src/G4VRML1FileViewer.cc b/source/visualization/VRML/src/G4VRML1FileViewer.cc index eb2aebee0a..e572296f31 100644 --- a/source/visualization/VRML/src/G4VRML1FileViewer.cc +++ b/source/visualization/VRML/src/G4VRML1FileViewer.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VRML1FileViewer.cc,v 1.4 1999/12/15 14:54:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VRMLView.cc // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/src/G4VRML1SceneHandler.cc b/source/visualization/VRML/src/G4VRML1SceneHandler.cc index e99374eb37..0321afccb8 100644 --- a/source/visualization/VRML/src/G4VRML1SceneHandler.cc +++ b/source/visualization/VRML/src/G4VRML1SceneHandler.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VRML1SceneHandler.cc,v 1.2 1999/12/15 14:54:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VRML1SceneHandler.cc,v 1.4 2000/04/27 13:56:16 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VRML1SceneHandler.cc // Yasuhide Sawada and Satoshi Tanaka @@ -25,14 +25,18 @@ #include "G4VPhysicalVolume.hh" #include "G4LogicalVolume.hh" #include "G4Point3D.hh" +#include "G4Scene.hh" #include "G4VisAttributes.hh" -#include "G4Transform.hh" #include "G4Polyhedron.hh" #include "G4Box.hh" #include "G4Cons.hh" #include "G4Polyline.hh" #include "G4Trd.hh" #include "G4Tubs.hh" +#include "G4Trap.hh" +#include "G4Para.hh" +#include "G4Torus.hh" +#include "G4Sphere.hh" #include "G4Text.hh" #include "G4Circle.hh" #include "G4Square.hh" diff --git a/source/visualization/VRML/src/G4VRML1SceneHandlerFunc.icc b/source/visualization/VRML/src/G4VRML1SceneHandlerFunc.icc index 429502296e..2e3c1949a8 100644 --- a/source/visualization/VRML/src/G4VRML1SceneHandlerFunc.icc +++ b/source/visualization/VRML/src/G4VRML1SceneHandlerFunc.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VRML1SceneHandlerFunc.icc,v 1.5 1999/12/27 07:49:22 stanaka Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VRML1SceneHandlerFunc.icc // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/src/G4VRML1Viewer.cc b/source/visualization/VRML/src/G4VRML1Viewer.cc index dca482dd97..a4848da898 100644 --- a/source/visualization/VRML/src/G4VRML1Viewer.cc +++ b/source/visualization/VRML/src/G4VRML1Viewer.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VRML1Viewer.cc,v 1.4 1999/12/15 14:54:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VRMLView.cc // Yasuhide Sawada & Satoshi Tanaka diff --git a/source/visualization/VRML/src/G4VRML2.cc b/source/visualization/VRML/src/G4VRML2.cc index b740761d97..ca7006eee7 100644 --- a/source/visualization/VRML/src/G4VRML2.cc +++ b/source/visualization/VRML/src/G4VRML2.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VRML2.cc,v 1.4 1999/12/15 14:54:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VRML2.cc // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/src/G4VRML2File.cc b/source/visualization/VRML/src/G4VRML2File.cc index 517aa8139f..bd8f164647 100644 --- a/source/visualization/VRML/src/G4VRML2File.cc +++ b/source/visualization/VRML/src/G4VRML2File.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VRML2File.cc,v 1.4 1999/12/15 14:54:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VRML2File.cc // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/src/G4VRML2FileSceneHandler.cc b/source/visualization/VRML/src/G4VRML2FileSceneHandler.cc index 31a77d712a..b2a3549268 100644 --- a/source/visualization/VRML/src/G4VRML2FileSceneHandler.cc +++ b/source/visualization/VRML/src/G4VRML2FileSceneHandler.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VRML2FileSceneHandler.cc,v 1.2 1999/12/15 14:54:16 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VRML2FileSceneHandler.cc,v 1.4 2000/04/27 13:56:16 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VRML2FileSceneHandler.cc // Satoshi Tanaka & Yasuhide Sawada @@ -29,7 +29,8 @@ #include "G4LogicalVolume.hh" #include "G4Point3D.hh" #include "G4VisAttributes.hh" -#include "G4Transform.hh" +#include "G4VModel.hh" +#include "G4Scene.hh" #include "G4Polyhedron.hh" #include "G4Box.hh" #include "G4Cons.hh" diff --git a/source/visualization/VRML/src/G4VRML2FileViewer.cc b/source/visualization/VRML/src/G4VRML2FileViewer.cc index a0d3b62e89..3b4ec12949 100644 --- a/source/visualization/VRML/src/G4VRML2FileViewer.cc +++ b/source/visualization/VRML/src/G4VRML2FileViewer.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VRML2FileViewer.cc,v 1.4 1999/12/15 14:54:17 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VRML2FileViewer.cc,v 1.5 2000/05/13 10:55:30 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VRML2FileViewer.cc // Satoshi Tanaka & Yasuhide Sawada @@ -107,7 +107,9 @@ void G4VRML2FileViewer::SendViewParameters () G4double camera_distance = extent_radius / fsin_VHA ; // camera position on Z axis - const G4Point3D& target_point = fVP.GetCurrentTargetPoint(); + const G4Point3D& target_point + = fSceneHandler.GetScene()->GetStandardTargetPoint() + + fVP.GetCurrentTargetPoint(); G4double E_z = target_point.z() + camera_distance; G4Point3D E(0.0, 0.0, E_z ); diff --git a/source/visualization/VRML/src/G4VRML2SceneHandler.cc b/source/visualization/VRML/src/G4VRML2SceneHandler.cc index 1522669d62..ba314432da 100644 --- a/source/visualization/VRML/src/G4VRML2SceneHandler.cc +++ b/source/visualization/VRML/src/G4VRML2SceneHandler.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VRML2SceneHandler.cc,v 1.2 1999/12/15 14:54:17 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VRML2SceneHandler.cc,v 1.4 2000/04/27 13:56:16 gcosmo Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VRML2SceneHandler.cc // Satoshi Tanaka & Yasuhide Sawada @@ -26,8 +26,9 @@ #include "G4VPhysicalVolume.hh" #include "G4LogicalVolume.hh" #include "G4Point3D.hh" +#include "G4VModel.hh" +#include "G4Scene.hh" #include "G4VisAttributes.hh" -#include "G4Transform.hh" #include "G4Polyhedron.hh" #include "G4Box.hh" #include "G4Cons.hh" diff --git a/source/visualization/VRML/src/G4VRML2SceneHandlerFunc.icc b/source/visualization/VRML/src/G4VRML2SceneHandlerFunc.icc index 23d55cc6f4..86c5a0e8df 100644 --- a/source/visualization/VRML/src/G4VRML2SceneHandlerFunc.icc +++ b/source/visualization/VRML/src/G4VRML2SceneHandlerFunc.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VRML2SceneHandlerFunc.icc,v 1.5 1999/12/27 07:49:22 stanaka Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VRML2SceneHandlerFunc.icc // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/src/G4VRML2Viewer.cc b/source/visualization/VRML/src/G4VRML2Viewer.cc index ac44fdc5b6..b54cb8bfcd 100644 --- a/source/visualization/VRML/src/G4VRML2Viewer.cc +++ b/source/visualization/VRML/src/G4VRML2Viewer.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VRML2Viewer.cc,v 1.5 1999/12/27 07:49:22 stanaka Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VRML2Viewer.cc,v 1.6 2000/05/13 10:55:15 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // G4VRML2Viewer.cc // Satoshi Tanaka & Yasuhide Sawada @@ -105,7 +105,9 @@ void G4VRML2Viewer::SendViewParameters () G4double camera_distance = extent_radius / fsin_VHA ; // camera position on Z axis - const G4Point3D& target_point = fVP.GetCurrentTargetPoint(); + const G4Point3D& target_point + = fSceneHandler.GetScene()->GetStandardTargetPoint() + + fVP.GetCurrentTargetPoint(); G4double E_z = target_point.z() + camera_distance; G4Point3D E(0.0, 0.0, E_z ); diff --git a/source/visualization/management/GNUmakefile b/source/visualization/management/GNUmakefile index 6ff7d06a76..a089ac8931 100644 --- a/source/visualization/management/GNUmakefile +++ b/source/visualization/management/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.2 1999/04/16 09:06:07 mora Exp $ +# $Id: GNUmakefile,v 1.3 2000/04/07 13:32:42 gcosmo Exp $ # ------------------------------------------------------------- # GNUmakefile for visualization library. John Allison, 5/7/95. @@ -25,6 +25,7 @@ CPPFLAGS += -I$(G4BASE)/global/management/include CPPFLAGS += -I$(G4BASE)/global/HEPGeometry/include CPPFLAGS += -I$(G4BASE)/global/HEPRandom/include CPPFLAGS += -I$(G4BASE)/geometry/solids/CSG/include +CPPFLAGS += -I$(G4BASE)/geometry/solids/specific/include CPPFLAGS += -I$(G4BASE)/geometry/management/include CPPFLAGS += -I$(G4BASE)/geometry/volumes/include CPPFLAGS += -I$(G4BASE)/geometry/magneticfield/include diff --git a/source/visualization/management/include/G4GraphicsSystemList.hh b/source/visualization/management/include/G4GraphicsSystemList.hh index 8556828b27..481c9da57f 100644 --- a/source/visualization/management/include/G4GraphicsSystemList.hh +++ b/source/visualization/management/include/G4GraphicsSystemList.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4GraphicsSystemList.hh,v 1.4 1999/12/15 14:54:17 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 2nd April 1996 diff --git a/source/visualization/management/include/G4Scene.hh b/source/visualization/management/include/G4Scene.hh index 4350f15714..00a6b4fe18 100644 --- a/source/visualization/management/include/G4Scene.hh +++ b/source/visualization/management/include/G4Scene.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Scene.hh,v 1.7 1999/12/15 14:54:17 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Scene John Allison 19th July 1996. diff --git a/source/visualization/management/include/G4Scene.icc b/source/visualization/management/include/G4Scene.icc index 8313053def..1f4512ad79 100644 --- a/source/visualization/management/include/G4Scene.icc +++ b/source/visualization/management/include/G4Scene.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4Scene.icc,v 1.5 1999/12/15 14:54:17 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4Scene.icc,v 1.6 2000/05/22 08:25:34 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Scene data John Allison 19th July 1996. @@ -20,8 +20,7 @@ inline const G4String& G4Scene::GetName () const { } inline G4bool G4Scene::IsEmpty () const { - return fRunDurationModelList.entries () == 0 && - fEndOfEventModelList.entries () == 0; + return fRunDurationModelList.entries () == 0; } inline const G4RWTPtrOrderedVector & diff --git a/source/visualization/management/include/G4SceneHandlerList.hh b/source/visualization/management/include/G4SceneHandlerList.hh index 8087980ced..edaabd9059 100644 --- a/source/visualization/management/include/G4SceneHandlerList.hh +++ b/source/visualization/management/include/G4SceneHandlerList.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4SceneHandlerList.hh,v 1.3 1999/12/15 14:54:17 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison May 1996 diff --git a/source/visualization/management/include/G4SceneList.hh b/source/visualization/management/include/G4SceneList.hh index b08000b401..6c444bb83d 100644 --- a/source/visualization/management/include/G4SceneList.hh +++ b/source/visualization/management/include/G4SceneList.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4SceneList.hh,v 1.5 1999/12/15 14:54:18 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 9th August 1998 diff --git a/source/visualization/management/include/G4VGraphicsSystem.hh b/source/visualization/management/include/G4VGraphicsSystem.hh index c35edf75ef..e30f9301de 100644 --- a/source/visualization/management/include/G4VGraphicsSystem.hh +++ b/source/visualization/management/include/G4VGraphicsSystem.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VGraphicsSystem.hh,v 1.6 1999/12/15 14:54:18 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 27th March 1996 diff --git a/source/visualization/management/include/G4VGraphicsSystem.icc b/source/visualization/management/include/G4VGraphicsSystem.icc index 9a084f54aa..f71d242b37 100644 --- a/source/visualization/management/include/G4VGraphicsSystem.icc +++ b/source/visualization/management/include/G4VGraphicsSystem.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VGraphicsSystem.icc,v 1.4 1999/12/15 14:54:18 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 27th March 1996 diff --git a/source/visualization/management/include/G4VSceneHandler.hh b/source/visualization/management/include/G4VSceneHandler.hh index a954a5c90b..d9c1a35091 100644 --- a/source/visualization/management/include/G4VSceneHandler.hh +++ b/source/visualization/management/include/G4VSceneHandler.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VSceneHandler.hh,v 1.9 1999/12/15 14:54:19 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VSceneHandler.hh,v 1.11 2000/05/02 09:49:27 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 19th July 1996. @@ -23,31 +23,18 @@ #include "globals.hh" #include "G4VGraphicsScene.hh" -#include "G4Scene.hh" #include "G4ViewerList.hh" #include "G4ViewParameters.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" -#include "G4Transform3D.hh" -#include "G4VModel.hh" -class G4VGraphicsSystem; +class G4Scene; class G4VViewer; -class G4VSolid; -class G4VisAttributes; class G4Colour; class G4Visible; -class G4VSolid; class G4ModelingParameters; +class G4VModel; +class G4VGraphicsSystem; class G4LogicalVolume; +class G4VPhysicalVolume; class G4VSceneHandler: public G4VGraphicsScene { @@ -160,7 +147,7 @@ public: // With description // Access functions. const G4String& GetName () const; void SetName (const G4String&); - G4int GetSceneId () const; + G4int GetSceneHandlerId () const; G4int GetViewCount () const; G4VGraphicsSystem* GetGraphicsSystem () const; G4Scene* GetScene () const; @@ -248,13 +235,13 @@ protected: ////////////////////////////////////////////////////////////// // Data members - G4VGraphicsSystem& fSystem; // Graphics system. - const G4int fSceneId; // Id of this instance. + G4VGraphicsSystem& fSystem; // Graphics system. + const G4int fSceneHandlerId; // Id of this instance. G4String fName; - G4int fViewCount; // To determine view ids. - G4ViewerList fViewerList; // Viewers. - G4VViewer* fpViewer; // Current viewer. - G4Scene* fpScene; // Scene for this scene handler. + G4int fViewCount; // To determine view ids. + G4ViewerList fViewerList; // Viewers. + G4VViewer* fpViewer; // Current viewer. + G4Scene* fpScene; // Scene for this scene handler. ////////////////////////////////////////////////////////////// // Workspace... diff --git a/source/visualization/management/include/G4VSceneHandler.icc b/source/visualization/management/include/G4VSceneHandler.icc index 4452b7ad5e..5a47f96f09 100644 --- a/source/visualization/management/include/G4VSceneHandler.icc +++ b/source/visualization/management/include/G4VSceneHandler.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VSceneHandler.icc,v 1.7 1999/12/15 14:54:19 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VSceneHandler.icc,v 1.8 2000/05/02 09:49:28 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 19th July 1996. @@ -20,8 +20,8 @@ inline G4VGraphicsSystem* G4VSceneHandler::GetGraphicsSystem () const { return &fSystem; } -inline G4int G4VSceneHandler::GetSceneId () const { - return fSceneId; +inline G4int G4VSceneHandler::GetSceneHandlerId () const { + return fSceneHandlerId; } inline G4int G4VSceneHandler::GetViewCount () const { diff --git a/source/visualization/management/include/G4VViewer.hh b/source/visualization/management/include/G4VViewer.hh index 29856e1855..b3bc6ce5c8 100644 --- a/source/visualization/management/include/G4VViewer.hh +++ b/source/visualization/management/include/G4VViewer.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VViewer.hh,v 1.5 1999/12/15 14:54:19 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VViewer.hh,v 1.7 2000/05/02 09:51:22 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 27th March 1996 @@ -64,9 +64,10 @@ public: // With description ////////////////////////////////////////////////////////////// // Access functions. const G4String& GetName () const; + const G4String& GetShortName () const; void SetName (const G4String&); G4int GetViewId () const; - G4VSceneHandler* GetScene () const; + G4VSceneHandler* GetSceneHandler () const; const G4ViewParameters& GetViewParameters () const; void SetViewParameters (const G4ViewParameters& vp); @@ -93,6 +94,7 @@ protected: G4VSceneHandler& fSceneHandler; // Abstract scene for this view. G4int fViewId; // Id of this instance. G4String fName; + G4String fShortName; // Up to first ' ' character, if any. G4ViewParameters fVP; // Viewing parameters. ////////////////////////////////////////////////////////////// diff --git a/source/visualization/management/include/G4VViewer.icc b/source/visualization/management/include/G4VViewer.icc index 989fe213bf..288242f623 100644 --- a/source/visualization/management/include/G4VViewer.icc +++ b/source/visualization/management/include/G4VViewer.icc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VViewer.icc,v 1.3 1999/12/15 14:54:19 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VViewer.icc,v 1.4 2000/05/02 09:51:22 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 30th December 1996 @@ -23,11 +23,11 @@ inline const G4String& G4VViewer::GetName () const { return fName; } -inline void G4VViewer::SetName (const G4String& name) { - fName = name; +inline const G4String& G4VViewer::GetShortName () const { + return fShortName; } -inline G4VSceneHandler* G4VViewer::GetScene () const { +inline G4VSceneHandler* G4VViewer::GetSceneHandler () const { return &fSceneHandler; } diff --git a/source/visualization/management/include/G4VVisCommand.hh b/source/visualization/management/include/G4VVisCommand.hh index e26bdb31df..243c91ae92 100644 --- a/source/visualization/management/include/G4VVisCommand.hh +++ b/source/visualization/management/include/G4VVisCommand.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VVisCommand.hh,v 1.6 1999/12/16 17:19:15 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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/G4VVisCommand.icc b/source/visualization/management/include/G4VVisCommand.icc index dc268995c9..ab8e388c11 100644 --- a/source/visualization/management/include/G4VVisCommand.icc +++ b/source/visualization/management/include/G4VVisCommand.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VVisCommand.icc,v 1.3 1999/12/15 14:54:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 260aeba649..bfbed305e6 100644 --- a/source/visualization/management/include/G4ViewParameters.hh +++ b/source/visualization/management/include/G4ViewParameters.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ViewParameters.hh,v 1.6 1999/12/15 14:54:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ViewParameters.hh,v 1.8 2000/05/13 10:51:31 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 19th July 1996 @@ -17,46 +17,41 @@ // // 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 +// 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 +// 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 +// 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'', initially -// set to the Standard Target Point, is incremented by the ``dolly'' -// and ``zoom'' commands, and can be reset to the Standard Target -// Point with the {\tt /vis~/camera/reset} command. +// 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 +// 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 {\tt fFieldHalfAngle}. It is not stored -// explicitly because of the singularity at {\tt fFieldHalfAngle} = 0, +// 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 +// 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 {\em beyond} the Current Target Point, which is +// 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, {\tt -// G4OpenGLView::SetView ()}. +// setting up the view matrix - see, for example, G4OpenGLView::SetView (). // -// All viewers are expected to keep the ``Up Vector'' vertical. +// 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 \linebreak {\tt /vis~/camera/reset} command. -// -// Note: the camera movements pan, dolly and zoom, are currently coded -// in \linebreak {\tt G4VisManMessenger.cc}. +// Finally, the view is magnified by the "Zoom Factor" which is +// reset to 1 by the "/vis/viewer/reset" command. // // The algorithms for calculating various useful quantities from the -// View Parameters are encapsulated in the functions described in -// Appendix \ref{ap:useful}. +// View Parameters, such as GetCameraDistance, are described below. #ifndef G4VIEWPARAMETERS_HH #define G4VIEWPARAMETERS_HH @@ -213,11 +208,11 @@ private: // to fViewpointDirection!) G4double fFieldHalfAngle; // Radius / camara distance, 0 for parallel. G4double fZoomFactor; // Magnification relative to Standard View. - G4Point3D fCurrentTargetPoint; + G4Point3D fCurrentTargetPoint; // Relative to standard target point. G4double fDolly; // Distance towards current target point. G4bool fLightsMoveWithCamera; G4Vector3D fRelativeLightpointDirection; - // i.e., rel. to object or camera accoding to G4bool LightsMoveWithCamera. + // i.e., rel. to object or camera accoding to G4bool fLightsMoveWithCamera. G4Vector3D fActualLightpointDirection; G4bool fViewGeom; // View geometry objects. G4bool fViewHits; // View hits, if any. @@ -238,4 +233,3 @@ private: #include "G4ViewParameters.icc" #endif - diff --git a/source/visualization/management/include/G4ViewParameters.icc b/source/visualization/management/include/G4ViewParameters.icc index b390f5d6ae..05ef62334a 100644 --- a/source/visualization/management/include/G4ViewParameters.icc +++ b/source/visualization/management/include/G4ViewParameters.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ViewParameters.icc,v 1.3 1999/12/15 14:54:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 20th October 1996 diff --git a/source/visualization/management/include/G4ViewerList.hh b/source/visualization/management/include/G4ViewerList.hh index 2cd99a1540..02a246cf10 100644 --- a/source/visualization/management/include/G4ViewerList.hh +++ b/source/visualization/management/include/G4ViewerList.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ViewerList.hh,v 1.3 1999/12/15 14:54:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison May 1996 diff --git a/source/visualization/management/include/G4VisCommandTemplates.hh b/source/visualization/management/include/G4VisCommandTemplates.hh index 36a6d779c3..e9a8338592 100644 --- a/source/visualization/management/include/G4VisCommandTemplates.hh +++ b/source/visualization/management/include/G4VisCommandTemplates.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisCommandTemplates.hh,v 1.3 1999/12/15 14:54:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Visualization Command Messenger Templates. diff --git a/source/visualization/management/include/G4VisCommandTemplates.icc b/source/visualization/management/include/G4VisCommandTemplates.icc index 83a5d96630..336b3925f8 100644 --- a/source/visualization/management/include/G4VisCommandTemplates.icc +++ b/source/visualization/management/include/G4VisCommandTemplates.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisCommandTemplates.icc,v 1.3 1999/12/15 14:54:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Command Messenger Templates. diff --git a/source/visualization/management/include/G4VisCommandsCamera.hh b/source/visualization/management/include/G4VisCommandsCamera.hh index d72e0ef2a5..76e9269f88 100644 --- a/source/visualization/management/include/G4VisCommandsCamera.hh +++ b/source/visualization/management/include/G4VisCommandsCamera.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisCommandsCamera.hh,v 1.3 1999/12/15 14:54:20 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // /vis~/camera/ commands diff --git a/source/visualization/management/include/G4VisCommandsCameraMessengers.hh b/source/visualization/management/include/G4VisCommandsCameraMessengers.hh index aff56ed8d9..dc1a97220f 100644 --- a/source/visualization/management/include/G4VisCommandsCameraMessengers.hh +++ b/source/visualization/management/include/G4VisCommandsCameraMessengers.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisCommandsCameraMessengers.hh,v 1.3 1999/12/15 14:54:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Messengers for /vis~/camera commands - John Allison 6th April 1998. diff --git a/source/visualization/management/include/G4VisCommandsClear.hh b/source/visualization/management/include/G4VisCommandsClear.hh index efd0cb9859..733a4699bc 100644 --- a/source/visualization/management/include/G4VisCommandsClear.hh +++ b/source/visualization/management/include/G4VisCommandsClear.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisCommandsClear.hh,v 1.4 1999/12/15 14:54:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // /vis~/clear/ commands diff --git a/source/visualization/management/include/G4VisCommandsCompound.hh b/source/visualization/management/include/G4VisCommandsCompound.hh new file mode 100644 index 0000000000..220938c211 --- /dev/null +++ b/source/visualization/management/include/G4VisCommandsCompound.hh @@ -0,0 +1,48 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4VisCommandsCompound.hh,v 1.2 2000/05/15 11:49:02 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ + +// Compound /vis/ commands - John Allison 15th May 2000 + +#ifndef G4VISCOMMANDSCOMPOUND_HH +#define G4VISCOMMANDSCOMPOUND_HH + +#include "G4VVisCommand.hh" + +class G4VisCommandDrawVolume: public G4VVisCommand { +public: + // Uses compiler defaults for copy constructor and assignment. + G4VisCommandDrawVolume (); + ~G4VisCommandDrawVolume (); + void SetNewValue (G4UIcommand* command, G4String newValue); +private: + G4UIcmdWithAString* fpCommand; +}; + +class G4VisCommandOpen: public G4VVisCommand { +public: + // Uses compiler defaults for copy constructor and assignment. + G4VisCommandOpen (); + ~G4VisCommandOpen (); + void SetNewValue (G4UIcommand* command, G4String newValue); +private: + G4UIcmdWithAString* fpCommand; +}; + +class G4VisCommandSpecify: public G4VVisCommand { +public: + // Uses compiler defaults for copy constructor and assignment. + G4VisCommandSpecify (); + ~G4VisCommandSpecify (); + void SetNewValue (G4UIcommand* command, G4String newValue); +private: + G4UIcmdWithAString* fpCommand; +}; + +#endif diff --git a/source/visualization/management/include/G4VisCommandsCopy.hh b/source/visualization/management/include/G4VisCommandsCopy.hh index b6f7f87854..b6bec775bc 100644 --- a/source/visualization/management/include/G4VisCommandsCopy.hh +++ b/source/visualization/management/include/G4VisCommandsCopy.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisCommandsCopy.hh,v 1.4 1999/12/15 14:54:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // /vis~/copy/ commands diff --git a/source/visualization/management/include/G4VisCommandsCreateScene.hh b/source/visualization/management/include/G4VisCommandsCreateScene.hh index 0285ff9f79..5db85338a6 100644 --- a/source/visualization/management/include/G4VisCommandsCreateScene.hh +++ b/source/visualization/management/include/G4VisCommandsCreateScene.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisCommandsCreateScene.hh,v 1.3 1999/12/15 14:54:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // /vis~/create_scene/ commands diff --git a/source/visualization/management/include/G4VisCommandsCreateView.hh b/source/visualization/management/include/G4VisCommandsCreateView.hh index 98e6ab9574..19df65eaaa 100644 --- a/source/visualization/management/include/G4VisCommandsCreateView.hh +++ b/source/visualization/management/include/G4VisCommandsCreateView.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisCommandsCreateView.hh,v 1.4 1999/12/15 14:54:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // /vis~/create_view/ commands diff --git a/source/visualization/management/include/G4VisCommandsDelete.hh b/source/visualization/management/include/G4VisCommandsDelete.hh index ca1f5b07a5..4f13a0828e 100644 --- a/source/visualization/management/include/G4VisCommandsDelete.hh +++ b/source/visualization/management/include/G4VisCommandsDelete.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisCommandsDelete.hh,v 1.4 1999/12/15 14:54:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // /vis~/delete/ commands diff --git a/source/visualization/management/include/G4VisCommandsDraw.hh b/source/visualization/management/include/G4VisCommandsDraw.hh index 09c2ae3bc0..8a015e3a72 100644 --- a/source/visualization/management/include/G4VisCommandsDraw.hh +++ b/source/visualization/management/include/G4VisCommandsDraw.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisCommandsDraw.hh,v 1.3 1999/12/15 14:54:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // /vis~/draw/ commands diff --git a/source/visualization/management/include/G4VisCommandsLights.hh b/source/visualization/management/include/G4VisCommandsLights.hh index 5467bc330b..bb0641ab69 100644 --- a/source/visualization/management/include/G4VisCommandsLights.hh +++ b/source/visualization/management/include/G4VisCommandsLights.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisCommandsLights.hh,v 1.4 1999/12/15 14:54:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // /vis~/lights/ commands diff --git a/source/visualization/management/include/G4VisCommandsPrint.hh b/source/visualization/management/include/G4VisCommandsPrint.hh index dbf4b8dbde..e41e0b1baf 100644 --- a/source/visualization/management/include/G4VisCommandsPrint.hh +++ b/source/visualization/management/include/G4VisCommandsPrint.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisCommandsPrint.hh,v 1.3 1999/12/15 14:54:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // /vis~/print/ commands diff --git a/source/visualization/management/include/G4VisCommandsRefresh.hh b/source/visualization/management/include/G4VisCommandsRefresh.hh index 57f20c8f81..cc154989a4 100644 --- a/source/visualization/management/include/G4VisCommandsRefresh.hh +++ b/source/visualization/management/include/G4VisCommandsRefresh.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisCommandsRefresh.hh,v 1.3 1999/12/15 14:54:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // /vis~/refresh/ commands diff --git a/source/visualization/management/include/G4VisCommandsScene.hh b/source/visualization/management/include/G4VisCommandsScene.hh index 87dae00329..658f64195d 100644 --- a/source/visualization/management/include/G4VisCommandsScene.hh +++ b/source/visualization/management/include/G4VisCommandsScene.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisCommandsScene.hh,v 1.8 1999/12/15 14:54:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // /vis/scene commands - John Allison 9th August 1998 diff --git a/source/visualization/management/include/G4VisCommandsSceneAdd.hh b/source/visualization/management/include/G4VisCommandsSceneAdd.hh index 827b8f521e..27ca2ebc1f 100644 --- a/source/visualization/management/include/G4VisCommandsSceneAdd.hh +++ b/source/visualization/management/include/G4VisCommandsSceneAdd.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VisCommandsSceneAdd.hh,v 1.4 1999/12/15 14:54:21 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VisCommandsSceneAdd.hh,v 1.5 2000/05/19 09:17:42 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // /vis/scene commands - John Allison 9th August 1998 @@ -15,15 +15,26 @@ #include "G4VisCommandsScene.hh" -class G4VisCommandSceneAddVolume: public G4VVisCommandScene { +class G4VisCommandSceneAddGhosts: public G4VVisCommandScene { public: // Uses compiler defaults for copy constructor and assignment. - G4VisCommandSceneAddVolume (); - ~G4VisCommandSceneAddVolume (); + G4VisCommandSceneAddGhosts (); + ~G4VisCommandSceneAddGhosts (); G4String GetCurrentValue (G4UIcommand* command); void SetNewValue (G4UIcommand* command, G4String newValue); private: - G4UIcommand* fpCommand; + G4UIcmdWithAString* fpCommand; +}; + +class G4VisCommandSceneAddHits: public G4VVisCommandScene { +public: + // Uses compiler defaults for copy constructor and assignment. + G4VisCommandSceneAddHits (); + ~G4VisCommandSceneAddHits (); + G4String GetCurrentValue (G4UIcommand* command); + void SetNewValue (G4UIcommand* command, G4String newValue); +private: + G4UIcmdWithoutParameter* fpCommand; }; class G4VisCommandSceneAddLogicalVolume: public G4VVisCommandScene { @@ -37,15 +48,26 @@ private: G4UIcommand* fpCommand; }; -class G4VisCommandSceneAddGhosts: public G4VVisCommandScene { +class G4VisCommandSceneAddTrajectories: public G4VVisCommandScene { public: // Uses compiler defaults for copy constructor and assignment. - G4VisCommandSceneAddGhosts (); - ~G4VisCommandSceneAddGhosts (); + G4VisCommandSceneAddTrajectories (); + ~G4VisCommandSceneAddTrajectories (); G4String GetCurrentValue (G4UIcommand* command); void SetNewValue (G4UIcommand* command, G4String newValue); private: - G4UIcmdWithAString* fpCommand; + G4UIcmdWithoutParameter* fpCommand; +}; + +class G4VisCommandSceneAddVolume: public G4VVisCommandScene { +public: + // Uses compiler defaults for copy constructor and assignment. + G4VisCommandSceneAddVolume (); + ~G4VisCommandSceneAddVolume (); + G4String GetCurrentValue (G4UIcommand* command); + void SetNewValue (G4UIcommand* command, G4String newValue); +private: + G4UIcommand* fpCommand; }; #endif diff --git a/source/visualization/management/include/G4VisCommandsSceneHandler.hh b/source/visualization/management/include/G4VisCommandsSceneHandler.hh index 4c793b9c61..1ec24ebcaa 100644 --- a/source/visualization/management/include/G4VisCommandsSceneHandler.hh +++ b/source/visualization/management/include/G4VisCommandsSceneHandler.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisCommandsSceneHandler.hh,v 1.5 1999/12/16 17:19:16 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 index 7f96d8e913..af6e1332ec 100644 --- a/source/visualization/management/include/G4VisCommandsSceneInclude.hh +++ b/source/visualization/management/include/G4VisCommandsSceneInclude.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisCommandsSceneInclude.hh,v 1.3 1999/12/15 14:54:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // /vis/scene commands - John Allison 9th August 1998 diff --git a/source/visualization/management/include/G4VisCommandsSet.hh b/source/visualization/management/include/G4VisCommandsSet.hh index df283f8c7d..b773cc1346 100644 --- a/source/visualization/management/include/G4VisCommandsSet.hh +++ b/source/visualization/management/include/G4VisCommandsSet.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisCommandsSet.hh,v 1.4 1999/12/15 14:54:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // /vis~/set/ commands diff --git a/source/visualization/management/include/G4VisCommandsShow.hh b/source/visualization/management/include/G4VisCommandsShow.hh index 39ca41177b..2234c78687 100644 --- a/source/visualization/management/include/G4VisCommandsShow.hh +++ b/source/visualization/management/include/G4VisCommandsShow.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisCommandsShow.hh,v 1.3 1999/12/15 14:54:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // /vis~/show/ commands diff --git a/source/visualization/management/include/G4VisCommandsViewer.hh b/source/visualization/management/include/G4VisCommandsViewer.hh index 789a27ddc9..5c2c3aff6d 100644 --- a/source/visualization/management/include/G4VisCommandsViewer.hh +++ b/source/visualization/management/include/G4VisCommandsViewer.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VisCommandsViewer.hh,v 1.7 2000/01/11 17:22:29 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VisCommandsViewer.hh,v 1.9 2000/06/07 08:43:28 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // /vis/viewer commands - John Allison 25th October 1998 @@ -24,7 +24,6 @@ public: G4VVisCommandViewer (); ~G4VVisCommandViewer (); protected: - G4String ShortName (const G4String &); void UpdateCandidateLists (); }; @@ -74,6 +73,17 @@ private: G4UIcmdWithAString* fpCommand; }; +class G4VisCommandViewerReset: public G4VVisCommandViewer { +public: + // Uses compiler defaults for copy constructor and assignment. + G4VisCommandViewerReset (); + ~G4VisCommandViewerReset (); + G4String GetCurrentValue (G4UIcommand* command); + void SetNewValue (G4UIcommand* command, G4String newValue); +private: + G4UIcmdWithAString* fpCommand; +}; + class G4VisCommandViewerSelect: public G4VVisCommandViewer { public: // Uses compiler defaults for copy constructor and assignment. @@ -85,11 +95,11 @@ private: G4UIcmdWithAString* fpCommand; }; -class G4VisCommandViewerShow: public G4VVisCommandViewer { +class G4VisCommandViewerUpdate: public G4VVisCommandViewer { public: // Uses compiler defaults for copy constructor and assignment. - G4VisCommandViewerShow (); - ~G4VisCommandViewerShow (); + G4VisCommandViewerUpdate (); + ~G4VisCommandViewerUpdate (); G4String GetCurrentValue (G4UIcommand* command); void SetNewValue (G4UIcommand* command, G4String newValue); private: diff --git a/source/visualization/management/include/G4VisCommandsViewerSet.hh b/source/visualization/management/include/G4VisCommandsViewerSet.hh new file mode 100644 index 0000000000..a74552a5a9 --- /dev/null +++ b/source/visualization/management/include/G4VisCommandsViewerSet.hh @@ -0,0 +1,41 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4VisCommandsViewerSet.hh,v 1.3 2000/05/19 09:17:47 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ + +// /vis/viewer/set commands - John Allison 16th May 2000 + +#ifndef G4VISCOMMANDSVIEWERSET_HH +#define G4VISCOMMANDSVIEWERSET_HH + +#include "G4VVisCommand.hh" + +#include "g4std/vector" + +class G4UIcommand; +class G4UIcmdWithAString; +class G4UIcmdWithABool; + +class G4VisCommandsViewerSet: public G4VVisCommand { +public: + // Uses compiler defaults for copy constructor and assignment. + G4VisCommandsViewerSet (); + ~G4VisCommandsViewerSet (); + G4String GetCurrentValue (G4UIcommand* command); + void SetNewValue (G4UIcommand* command, G4String newValue); +private: + G4String ConvertToString(G4bool blValue); + G4bool GetNewBoolValue(const G4String& paramString); + G4UIcmdWithAString* fpCommandAll; + G4UIcmdWithAString* fpCommandStyle; + G4UIcmdWithABool* fpCommandEdge; + G4UIcmdWithABool* fpCommandHiddenEdge; + G4UIcommand* fpCommandCulling; +}; + +#endif diff --git a/source/visualization/management/include/G4VisFeaturesOfDAWNFILE.hh b/source/visualization/management/include/G4VisFeaturesOfDAWNFILE.hh index 307affee3d..a15e9b4f3f 100644 --- a/source/visualization/management/include/G4VisFeaturesOfDAWNFILE.hh +++ b/source/visualization/management/include/G4VisFeaturesOfDAWNFILE.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisFeaturesOfDAWNFILE.hh,v 1.3 1999/12/15 14:54:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #ifndef G4VISFEATURESOFDAWNFILE_HH #define G4VISFEATURESOFDAWNFILE_HH diff --git a/source/visualization/management/include/G4VisFeaturesOfFukuiRenderer.hh b/source/visualization/management/include/G4VisFeaturesOfFukuiRenderer.hh index 1f2a41ddc0..66d29be10d 100644 --- a/source/visualization/management/include/G4VisFeaturesOfFukuiRenderer.hh +++ b/source/visualization/management/include/G4VisFeaturesOfFukuiRenderer.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisFeaturesOfFukuiRenderer.hh,v 1.3 1999/12/15 14:54:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/visualization/management/include/G4VisFeaturesOfOpenGL.hh b/source/visualization/management/include/G4VisFeaturesOfOpenGL.hh index fabb438f34..bae529c174 100644 --- a/source/visualization/management/include/G4VisFeaturesOfOpenGL.hh +++ b/source/visualization/management/include/G4VisFeaturesOfOpenGL.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisFeaturesOfOpenGL.hh,v 1.3 1999/12/15 14:54:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/visualization/management/include/G4VisFeaturesOfOpenInventor.hh b/source/visualization/management/include/G4VisFeaturesOfOpenInventor.hh index e547706cad..98303e84e0 100644 --- a/source/visualization/management/include/G4VisFeaturesOfOpenInventor.hh +++ b/source/visualization/management/include/G4VisFeaturesOfOpenInventor.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisFeaturesOfOpenInventor.hh,v 1.3 1999/12/15 14:54:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/visualization/management/include/G4VisManMessenger.hh b/source/visualization/management/include/G4VisManMessenger.hh index 929056c2af..9a9690298e 100644 --- a/source/visualization/management/include/G4VisManMessenger.hh +++ b/source/visualization/management/include/G4VisManMessenger.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisManMessenger.hh,v 1.4 1999/12/15 14:54:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // GEANT4 Visualization Manager Messenger - John Allison 22nd July 1996. diff --git a/source/visualization/management/include/G4VisManager.hh b/source/visualization/management/include/G4VisManager.hh index 356afb0bf8..304db98d55 100644 --- a/source/visualization/management/include/G4VisManager.hh +++ b/source/visualization/management/include/G4VisManager.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VisManager.hh,v 1.11 1999/12/15 18:27:14 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VisManager.hh,v 1.13 2000/05/02 09:57:15 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // @@ -98,8 +98,12 @@ class G4VisManager: public G4VVisManager { // G4VVisManager::GetConcreteInstance (), always testing for // non-zero. + // Odd friends that need access to various methods of the G4VisManager... friend void G4OpenGLXmViewerSecondaryLoopPostAction (); // Mmmm! + friend class G4RTSteppingAction; + friend class G4RayTrajectory; + // Management friends... friend class G4VSceneHandler; friend class G4VViewer; @@ -266,7 +270,6 @@ public: // With description const G4SceneHandlerList& GetAvailableSceneHandlers () const; const G4SceneList& GetSceneList () const; G4int GetVerboseLevel () const; - G4bool IsValidView (); void SetCurrentGraphicsSystemAndCreateViewer (G4VGraphicsSystem* pSystem); void SetCurrentGraphicsSystem (G4VGraphicsSystem* pSystem); @@ -278,6 +281,21 @@ public: // With description G4SceneList& SetSceneList (); // Returns lvalue. void SetVerboseLevel (G4int vLevel); + + ///////////////////////////////////////////////////////////////////// + // Utility functions. + + G4String ViewerShortName (const G4String& viewerName) const; + // Returns shortened version of viewer name, i.e., up to first space, + // if any. + + G4VViewer* GetViewer (const G4String& viewerName) const; + // 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. + protected: virtual void RegisterGraphicsSystems () = 0; diff --git a/source/visualization/management/include/G4VisManager.icc b/source/visualization/management/include/G4VisManager.icc index dfeeba0867..e332a2dad7 100644 --- a/source/visualization/management/include/G4VisManager.icc +++ b/source/visualization/management/include/G4VisManager.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisManager.icc,v 1.5 1999/12/15 14:54:22 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // GEANT4 Visualization Manager - John Allison 02/Jan/1996. diff --git a/source/visualization/management/include/G4VisStateDependent.hh b/source/visualization/management/include/G4VisStateDependent.hh index 9f023e8429..65c1b86253 100644 --- a/source/visualization/management/include/G4VisStateDependent.hh +++ b/source/visualization/management/include/G4VisStateDependent.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisStateDependent.hh,v 1.3 1999/12/15 14:54:23 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 b254f47ac2..98f906d84f 100644 --- a/source/visualization/management/include/G4VisToOldVisCommands.hh +++ b/source/visualization/management/include/G4VisToOldVisCommands.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisToOldVisCommands.hh,v 1.4 1999/12/15 14:54:23 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 3521403620..ce5c19fef6 100644 --- a/source/visualization/management/include/MyVisManager.cc +++ b/source/visualization/management/include/MyVisManager.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: MyVisManager.cc,v 1.4 1999/12/15 14:54:23 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: MyVisManager.cc,v 1.5 2000/01/29 00:43:10 asaim Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 24th January 1998. @@ -23,6 +23,10 @@ #include "G4DAWNFILE.hh" #endif +#ifdef G4VIS_USE_RAYTRACER +#include "G4RayTracer.hh" +#endif + #ifdef G4VIS_USE_OPACS #include "G4Wo.hh" #include "G4Xo.hh" @@ -73,6 +77,10 @@ void MyVisManager::RegisterGraphicsSystems () { RegisterGraphicsSystem (new G4DAWNFILE); #endif +#ifdef G4VIS_USE_RAYTRACER + RegisterGraphicsSystem (new G4RayTracer); +#endif + #ifdef G4VIS_USE_OPACS RegisterGraphicsSystem (new G4Wo); RegisterGraphicsSystem (new G4Xo); diff --git a/source/visualization/management/include/MyVisManager.hh b/source/visualization/management/include/MyVisManager.hh index c13af70cf6..fbdb81b0e1 100644 --- a/source/visualization/management/include/MyVisManager.hh +++ b/source/visualization/management/include/MyVisManager.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: MyVisManager.hh,v 1.4 1999/12/15 14:54:23 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 24th January 1998. diff --git a/source/visualization/management/src/G4Scene.cc b/source/visualization/management/src/G4Scene.cc index cdb0bef395..3f31a8918b 100644 --- a/source/visualization/management/src/G4Scene.cc +++ b/source/visualization/management/src/G4Scene.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4Scene.cc,v 1.5 1999/12/15 14:54:24 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Scene data John Allison 19th July 1996. diff --git a/source/visualization/management/src/G4VGraphicsSystem.cc b/source/visualization/management/src/G4VGraphicsSystem.cc index 0d07edb3f1..f8847044b4 100644 --- a/source/visualization/management/src/G4VGraphicsSystem.cc +++ b/source/visualization/management/src/G4VGraphicsSystem.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VGraphicsSystem.cc,v 1.5 1999/12/15 14:54:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 27th March 1996 diff --git a/source/visualization/management/src/G4VSceneHandler.cc b/source/visualization/management/src/G4VSceneHandler.cc index e83a69c982..5e75039996 100644 --- a/source/visualization/management/src/G4VSceneHandler.cc +++ b/source/visualization/management/src/G4VSceneHandler.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VSceneHandler.cc,v 1.8 1999/12/15 14:54:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VSceneHandler.cc,v 1.11 2000/05/22 08:27:29 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 19th July 1996 @@ -35,12 +35,23 @@ #include "G4Visible.hh" #include "G4VisAttributes.hh" #include "G4VModel.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" +#include "G4LogicalVolume.hh" #include "G4PhysicalVolumeModel.hh" #include "G4ModelingParameters.hh" G4VSceneHandler::G4VSceneHandler (G4VGraphicsSystem& system, G4int id, const G4String& name): fSystem (system), - fSceneId (id), + fSceneHandlerId (id), fViewCount (0), fpViewer (0), fReadyForTransients (false), @@ -56,7 +67,7 @@ G4VSceneHandler::G4VSceneHandler (G4VGraphicsSystem& system, G4int id, const G4S if (name == "") { char charname [50]; G4std::ostrstream ost (charname, 50); - ost << fSystem.GetName () << '-' << fSceneId << G4std::ends; + ost << fSystem.GetName () << '-' << fSceneHandlerId << G4std::ends; fName = charname; } else { @@ -459,12 +470,10 @@ G4double G4VSceneHandler::GetMarkerSize (const G4VMarker& marker, G4std::ostream& operator << (G4std::ostream& os, const G4VSceneHandler& s) { - G4VisManager* pVMan = G4VisManager::GetInstance (); - os << "Scene " << s.fName << " has " << s.fViewerList.entries () << " viewers:"; for (int i = 0; i < s.fViewerList.entries (); i++) { - os << "\n " << s.fViewerList [i]; + os << "\n " << *(s.fViewerList [i]); } os << "\n " << *s.fpScene; diff --git a/source/visualization/management/src/G4VViewer.cc b/source/visualization/management/src/G4VViewer.cc index 90ec855b6f..88c376545e 100644 --- a/source/visualization/management/src/G4VViewer.cc +++ b/source/visualization/management/src/G4VViewer.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VViewer.cc,v 1.5 1999/12/15 14:54:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VViewer.cc,v 1.9 2000/05/13 10:52:51 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 27th March 1996 @@ -17,21 +17,20 @@ #include "G4ios.hh" #include "g4std/strstream" -#include "G4VisManager.hh" #include "G4VGraphicsSystem.hh" #include "G4VSceneHandler.hh" +#include "G4Scene.hh" #include "G4VPhysicalVolume.hh" #include "G4Transform3D.hh" #include "G4Event.hh" -G4VViewer::G4VViewer (G4VSceneHandler& scene, G4int id, const G4String& name): -fSceneHandler (scene), +G4VViewer::G4VViewer (G4VSceneHandler& sceneHandler, + G4int id, const G4String& name): +fSceneHandler (sceneHandler), fViewId (id), fModified (true), fNeedKernelVisit (true) { - G4VisManager* pVMan = G4VisManager::GetInstance (); - fVP = pVMan -> GetCurrentViewParameters (); if (name == "") { char charname [50]; G4std::ostrstream ost (charname, 50); @@ -41,10 +40,18 @@ fNeedKernelVisit (true) else { fName = name; } + fShortName = fName (0, fName.find (' ')); + fShortName.strip (); } G4VViewer::~G4VViewer () {} +void G4VViewer::SetName (const G4String& name) { + fName = name; + fShortName = fName (0, fName.find (' ')); + fShortName.strip (); +} + const G4VisAttributes* G4VViewer::GetApplicableVisAttributes (const G4VisAttributes* pVisAttribs) const { // If the pointer is null, pick up the default vis attributes from diff --git a/source/visualization/management/src/G4VVisCommand.cc b/source/visualization/management/src/G4VVisCommand.cc index 4bb2595cd3..c8f16a0385 100644 --- a/source/visualization/management/src/G4VVisCommand.cc +++ b/source/visualization/management/src/G4VVisCommand.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VVisCommand.cc,v 1.6 1999/12/16 17:19:31 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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/src/G4ViewParameters.cc b/source/visualization/management/src/G4ViewParameters.cc index f7873d6f50..0d27e6f047 100644 --- a/source/visualization/management/src/G4ViewParameters.cc +++ b/source/visualization/management/src/G4ViewParameters.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ViewParameters.cc,v 1.5 1999/12/15 14:54:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4ViewParameters.cc,v 1.6 2000/05/18 13:45:12 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 19th July 1996 @@ -15,6 +15,7 @@ #include "G4ViewParameters.hh" #include "G4VisManager.hh" +#include "G4UnitsTable.hh" #include "G4ios.hh" G4ViewParameters::G4ViewParameters (): @@ -131,11 +132,11 @@ void G4ViewParameters::SetVisibleDensity (G4double visibleDensity) { "density - ignored." << G4endl; } else { - if (fVisibleDensity > reasonableMaximum) { + if (visibleDensity > reasonableMaximum) { G4cout << "G4ViewParameters::SetVisibleDensity: density > " - << reasonableMaximum - << " g / cm3 - did you mean this?" - << G4endl; + << G4BestUnit (reasonableMaximum, "Volumic Mass") + << " - did you mean this?" + << G4endl; } fVisibleDensity = visibleDensity; } diff --git a/source/visualization/management/src/G4VisCommandTemplates.cc b/source/visualization/management/src/G4VisCommandTemplates.cc index c2cc1cca6e..3a254ec455 100644 --- a/source/visualization/management/src/G4VisCommandTemplates.cc +++ b/source/visualization/management/src/G4VisCommandTemplates.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisCommandTemplates.cc,v 1.4 1999/12/15 14:54:25 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Visualization Command Messenger Template private functions. diff --git a/source/visualization/management/src/G4VisCommandsCamera.cc b/source/visualization/management/src/G4VisCommandsCamera.cc index 0b5ef82e26..f2eef1c9bc 100644 --- a/source/visualization/management/src/G4VisCommandsCamera.cc +++ b/source/visualization/management/src/G4VisCommandsCamera.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VisCommandsCamera.cc,v 1.5 2000/01/11 17:23:25 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VisCommandsCamera.cc,v 1.7 2000/05/13 10:52:14 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // @@ -19,17 +19,13 @@ void G4VisCommandCameraReset::SetValue () { if (pVMan -> IsValidView ()) { const G4Scene* pScene = pVMan -> GetCurrentScene (); G4ViewParameters& vp = pVMan -> SetCurrentViewParameters (); - vp.SetCurrentTargetPoint (pScene -> GetStandardTargetPoint ()); + 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 ().x(), "Length") - << ", " - << G4BestUnit (pScene -> GetStandardTargetPoint ().y(), "Length") - << ", " - << G4BestUnit (pScene -> GetStandardTargetPoint ().z(), "Length") + << G4BestUnit (pScene -> GetStandardTargetPoint (), "Length") << ")"; G4cout << "\nZoom factor reset to 1."; G4cout << "\nDolly distance reset to 0."; diff --git a/source/visualization/management/src/G4VisCommandsCameraMessengers.cc b/source/visualization/management/src/G4VisCommandsCameraMessengers.cc index b41f8d3cbf..63b7d53bfc 100644 --- a/source/visualization/management/src/G4VisCommandsCameraMessengers.cc +++ b/source/visualization/management/src/G4VisCommandsCameraMessengers.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisCommandsCameraMessengers.cc,v 1.3 1999/12/15 14:54:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Messengers for /vis~/camera commands - John Allison 6th April 1998. diff --git a/source/visualization/management/src/G4VisCommandsCompound.cc b/source/visualization/management/src/G4VisCommandsCompound.cc new file mode 100644 index 0000000000..7a28e879e1 --- /dev/null +++ b/source/visualization/management/src/G4VisCommandsCompound.cc @@ -0,0 +1,122 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4VisCommandsCompound.cc,v 1.4 2000/06/07 08:43:28 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ + +// Compound /vis/ commands - John Allison 15th May 2000 + +#include "G4VisCommandsCompound.hh" + +#include "G4VisManager.hh" +#include "G4UImanager.hh" +#include "G4UIcmdWithAString.hh" + +////////////// /vis/drawVolume /////////////////////////////////////// + +G4VisCommandDrawVolume::G4VisCommandDrawVolume() { + G4bool omitable; + fpCommand = new G4UIcmdWithAString("/vis/drawVolume", this); + fpCommand->AvailableForStates(Idle, GeomClosed); + fpCommand->SetGuidance("/vis/drawVolume []"); + fpCommand->SetGuidance("Default: world volume"); + fpCommand->SetGuidance + ("Creates a scene consisting of this physical volume and asks the" + "\n current viewer to draw it."); + fpCommand->SetGuidance("The scene becomes current."); + fpCommand->SetParameterName("physical-volume-name", omitable = true); + fpCommand->SetDefaultValue("world"); +} + +G4VisCommandDrawVolume::~G4VisCommandDrawVolume() { + delete fpCommand; +} + +void G4VisCommandDrawVolume::SetNewValue +(G4UIcommand* command, G4String newValue) { + G4UImanager* UImanager = G4UImanager::GetUIpointer(); + G4int keepVerbose = UImanager->GetVerboseLevel(); + UImanager->SetVerboseLevel(2); + UImanager->ApplyCommand("/vis/scene/create"); + UImanager->ApplyCommand("/vis/scene/add/volume " + newValue); + UImanager->ApplyCommand("/vis/sceneHandler/attach"); + UImanager->ApplyCommand("/vis/viewer/refresh"); + UImanager->ApplyCommand("/vis/viewer/update"); + UImanager->SetVerboseLevel(keepVerbose); +} + +////////////// /vis/open /////////////////////////////////////// + +G4VisCommandOpen::G4VisCommandOpen() { + G4bool omitable; + fpCommand = new G4UIcmdWithAString("/vis/open", this); + fpCommand->SetGuidance("/vis/open "); + fpCommand->SetGuidance + ("For this graphics system, creates a scene handler ready for drawing."); + fpCommand->SetGuidance("The scene handler becomes current."); + fpCommand->SetGuidance("The scene handler name is auto-generated."); + fpCommand->SetParameterName("graphics-system-name", omitable = false); + const G4GraphicsSystemList& gslist = + fpVisManager->GetAvailableGraphicsSystems(); + G4String candidates; + for (int igslist = 0; igslist < gslist.entries(); igslist++) { + const G4String& name = gslist(igslist)->GetName(); + const G4String& nickname = gslist(igslist)->GetNickname(); + if (nickname.isNull()) { + candidates += name; + } + else { + candidates += nickname; + } + candidates += " "; + } + candidates = candidates.strip(); + fpCommand->SetCandidates(candidates); +} + +G4VisCommandOpen::~G4VisCommandOpen() { + delete fpCommand; +} + +void G4VisCommandOpen::SetNewValue (G4UIcommand* command, G4String newValue) { + G4UImanager* UImanager = G4UImanager::GetUIpointer(); + UImanager->ApplyCommand("/vis/sceneHandler/create " + newValue); + UImanager->ApplyCommand("/vis/viewer/create"); +} + +////////////// /vis/specify /////////////////////////////////////// + +G4VisCommandSpecify::G4VisCommandSpecify() { + G4bool omitable; + fpCommand = new G4UIcmdWithAString("/vis/specify", this); + fpCommand->AvailableForStates(Idle, GeomClosed); + fpCommand->SetGuidance("/vis/specify "); + fpCommand->SetGuidance + ("Creates a scene consisting of this logical volume and asks the" + "\n current viewer to draw it and the geometry to print the" + "\n specification."); + fpCommand->SetGuidance("The scene becomes current."); + fpCommand->SetParameterName("logical-volume-name", omitable = false); +} + +G4VisCommandSpecify::~G4VisCommandSpecify() { + delete fpCommand; +} + +void G4VisCommandSpecify::SetNewValue +(G4UIcommand* command, G4String newValue) { + G4UImanager* UImanager = G4UImanager::GetUIpointer(); + G4int keepVerbose = UImanager->GetVerboseLevel(); + UImanager->SetVerboseLevel(2); + UImanager->ApplyCommand("/vis/scene/create"); + UImanager->ApplyCommand("/vis/scene/add/logicalVolume " + newValue); + UImanager->ApplyCommand("/vis/sceneHandler/attach"); + UImanager->ApplyCommand("/vis/viewer/refresh"); + UImanager->ApplyCommand("/vis/viewer/update"); + UImanager->ApplyCommand("/geometry/print " + newValue); + UImanager->SetVerboseLevel(keepVerbose); +} diff --git a/source/visualization/management/src/G4VisCommandsScene.cc b/source/visualization/management/src/G4VisCommandsScene.cc index fde860ffcc..d5ed7a919d 100644 --- a/source/visualization/management/src/G4VisCommandsScene.cc +++ b/source/visualization/management/src/G4VisCommandsScene.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VisCommandsScene.cc,v 1.11 1999/12/16 17:19:32 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VisCommandsScene.cc,v 1.15 2000/05/29 09:21:40 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // /vis/scene commands - John Allison 9th August 1998 @@ -196,6 +196,7 @@ G4VisCommandSceneList::G4VisCommandSceneList () { omitable = true); parameter -> SetCurrentAsDefault (false); parameter -> SetDefaultValue (0); + fpCommand -> SetParameter (parameter); sceneNameCommands.push_back (fpCommand); } @@ -317,26 +318,34 @@ void G4VisCommandSceneNotifyHandlers::SetNewValue (G4UIcommand* command, for (G4int iSH = 0; iSH < nSceneHandlers; iSH++) { G4VSceneHandler* aSceneHandler = sceneHandlerList [iSH]; G4Scene* aScene = aSceneHandler -> GetScene (); - const G4String& aSceneName = aScene -> GetName (); - if (sceneName == aSceneName) { - aSceneHandler -> ClearStore (); - aSceneHandler -> ClearTransientStore (); - G4ViewerList& viewerList = aSceneHandler -> SetViewerList (); - const G4int nViewers = viewerList.entries (); - for (G4int iV = 0; iV < nViewers; iV++) { - G4VViewer* aViewer = viewerList [iV]; - 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 (aScene) { + const G4String& aSceneName = aScene -> GetName (); + if (sceneName == aSceneName) { + aSceneHandler -> ClearStore (); + aSceneHandler -> ClearTransientStore (); + G4ViewerList& viewerList = aSceneHandler -> SetViewerList (); + const G4int nViewers = viewerList.entries (); + for (G4int iV = 0; iV < nViewers; iV++) { + G4VViewer* aViewer = viewerList [iV]; + 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; + } } } + else { + G4cout << "G4VisCommandSceneNotifyHandlers: scene handler \"" + << aSceneHandler->GetName() + << "\" has a null scene." + << G4endl; + } } } diff --git a/source/visualization/management/src/G4VisCommandsSceneAdd.cc b/source/visualization/management/src/G4VisCommandsSceneAdd.cc index 21add0dad5..6e6514a64a 100644 --- a/source/visualization/management/src/G4VisCommandsSceneAdd.cc +++ b/source/visualization/management/src/G4VisCommandsSceneAdd.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VisCommandsSceneAdd.cc,v 1.9 1999/12/15 14:54:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VisCommandsSceneAdd.cc,v 1.11 2000/05/19 09:17:56 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // /vis/scene commands - John Allison 9th August 1998 @@ -18,6 +18,8 @@ #include "G4PhysicalVolumeModel.hh" #include "G4LogicalVolumeModel.hh" #include "G4ModelingParameters.hh" +#include "G4HitsModel.hh" +#include "G4TrajectoriesModel.hh" #include "G4PhysicalVolumeSearchScene.hh" #include "G4VGlobalFastSimulationManager.hh" #include "G4ParticleTable.hh" @@ -26,200 +28,10 @@ #include "G4ApplicationState.hh" #include "G4UIcommand.hh" #include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithoutParameter.hh" #include "G4ios.hh" #include "g4std/strstream" -////////////// /vis/scene/add/volume /////////////////////////////////////// - -G4VisCommandSceneAddVolume::G4VisCommandSceneAddVolume () { - G4bool omitable; - fpCommand = new G4UIcommand ("/vis/scene/add/volume", this); - fpCommand -> AvailableForStates (Idle, GeomClosed); - fpCommand -> SetGuidance - ("/vis/scene/add/volume [] [] []"); - fpCommand -> SetGuidance ("Adds a physical volume to the current scene."); - fpCommand -> SetGuidance - ("1st parameter: volume name (default \"world\")."); - // fpCommand -> SetGuidance // Not implemented - should be in geom? - // (" \"list\" to list all volumes."); - fpCommand -> SetGuidance - ("2nd parameter: copy number (default 0)."); - fpCommand -> SetGuidance - ("3rd parameter: depth of descending geometry hierarchy" - " (default G4Scene::UNLIMITED (-1))."); - G4UIparameter* parameter; - parameter = new G4UIparameter ("volume", 's', omitable = true); - parameter -> SetDefaultValue ("world"); - fpCommand -> SetParameter (parameter); - parameter = new G4UIparameter ("copy-no", 'i', omitable = true); - parameter -> SetDefaultValue (0); - fpCommand -> SetParameter (parameter); - parameter = new G4UIparameter ("depth", 'i', omitable = true); - parameter -> SetDefaultValue (G4Scene::UNLIMITED); - fpCommand -> SetParameter (parameter); -} - -G4VisCommandSceneAddVolume::~G4VisCommandSceneAddVolume () { - delete fpCommand; -} - -G4String G4VisCommandSceneAddVolume::GetCurrentValue (G4UIcommand* command) { - return "world 0 -1"; -} - -void G4VisCommandSceneAddVolume::SetNewValue (G4UIcommand* command, - G4String newValue) { - G4SceneList& sceneList = fpVisManager -> SetSceneList (); - if (sceneList.isEmpty ()) { - G4cout << "No scenes - please create one before adding anything." - << G4endl; - return; - } - - G4String name; - G4int copyNo; - G4int requestedDepthOfDescent; - const char* s = newValue; - G4std::istrstream is ((char*)s); - is >> name >> copyNo >> requestedDepthOfDescent; - G4VPhysicalVolume* world = - G4TransportationManager::GetTransportationManager () - -> GetNavigatorForTracking () -> GetWorldVolume (); - G4PhysicalVolumeModel* model = 0; - G4VPhysicalVolume* foundVolume = 0; - G4int foundDepth = 0; - - if (name == "world") { - if (world) { - model = new G4PhysicalVolumeModel (world); - foundVolume = world; - } - else { - G4cerr << "G4VisCommandSceneAddVolume::SetNewValue: *** ERROR ***" - << "\n No world - shouldn't happen if G4ApplicationState is" - << " being properly handled!!" << G4endl; - } - } - else { - - // Create search scene, model and modeling parameters with - // long-enough life... - G4PhysicalVolumeSearchScene searchScene (name, copyNo); - G4PhysicalVolumeModel searchModel (world); - G4ModelingParameters mp; - searchModel.SetModelingParameters (&mp); - - // Initiate search... - searchModel.DescribeYourselfTo (searchScene); - - // OK, what have we got...? - foundVolume = searchScene.GetFoundVolume (); - const G4Transform3D& - transformation = searchScene.GetFoundTransformation (); - foundDepth = searchScene.GetFoundDepth (); - - if (foundVolume) { - model = new G4PhysicalVolumeModel (foundVolume, - requestedDepthOfDescent, - transformation); - } - else { - G4cout << "Volume \"" << name << "\", copy no. " << copyNo - << " not found." << G4endl; - } - } - - if (model) { - G4Scene* pScene = fpVisManager -> GetCurrentScene (); - const G4String& currentSceneName = pScene -> GetName (); - G4bool successful = pScene -> AddRunDurationModel (model); - UpdateVisManagerScene (currentSceneName); - if (successful) { - G4cout << "First occurrence of \"" << foundVolume -> GetName () - << "\", copy no. " << copyNo - << ", found at depth " << foundDepth - << ",\n with further requested depth of descent " - << requestedDepthOfDescent - << ", has been added to scene \"" << currentSceneName << "\"" - << G4endl; - } - } -} - -////////////// /vis/scene/add/logicalVolume /////////////////////////////////////// - -G4VisCommandSceneAddLogicalVolume::G4VisCommandSceneAddLogicalVolume () { - G4bool omitable; - fpCommand = new G4UIcommand ("/vis/scene/add/logicalVolume", this); - fpCommand -> AvailableForStates (Idle, GeomClosed); - fpCommand -> SetGuidance - ("/vis/scene/add/logicalVolume []"); - fpCommand -> SetGuidance ("Adds a logical volume to the current scene."); - fpCommand -> SetGuidance - ("1st parameter: volume name."); - // fpCommand -> SetGuidance // Not implemented - should be in geom? - // (" \"list\" to list all volumes."); - fpCommand -> SetGuidance - ("2nd parameter: depth of descending geometry hierarchy (default 1)."); - G4UIparameter* parameter; - parameter = new G4UIparameter ("volume", 's', omitable = false); - fpCommand -> SetParameter (parameter); - parameter = new G4UIparameter ("depth", 'i', omitable = true); - parameter -> SetDefaultValue (1); - fpCommand -> SetParameter (parameter); -} - -G4VisCommandSceneAddLogicalVolume::~G4VisCommandSceneAddLogicalVolume () { - delete fpCommand; -} - -G4String G4VisCommandSceneAddLogicalVolume::GetCurrentValue (G4UIcommand*) { - return ""; -} - -void G4VisCommandSceneAddLogicalVolume::SetNewValue (G4UIcommand* command, - G4String newValue) { - G4SceneList& sceneList = fpVisManager -> SetSceneList (); - if (sceneList.isEmpty ()) { - G4cout << "No scenes - please create one before adding anything." - << G4endl; - return; - } - - G4String name; - G4int requestedDepthOfDescent; - const char* s = newValue; - G4std::istrstream is ((char*)s); - is >> name >> requestedDepthOfDescent; - - G4LogicalVolumeStore *pLVStore = G4LogicalVolumeStore::GetInstance(); - int nLV = pLVStore -> entries (); - int iLV; - G4LogicalVolume* pLV; - 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; - 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; - } -} - ////////////// /vis/scene/add/ghosts /////////////////////////////////////// @@ -304,3 +116,275 @@ void G4VisCommandSceneAddGhosts::SetNewValue (G4UIcommand* command, } else G4cout << "There are no ghosts for \""< AvailableForStates (Idle, GeomClosed); + fpCommand -> SetGuidance + ("Adds hits to current scene."); + fpCommand -> SetGuidance + ("Hits are drawn at end of event when the scene in which" + " they are added is current."); +} + +G4VisCommandSceneAddHits::~G4VisCommandSceneAddHits () { + delete fpCommand; +} + +G4String G4VisCommandSceneAddHits::GetCurrentValue (G4UIcommand* command) { + return ""; +} + +void G4VisCommandSceneAddHits::SetNewValue (G4UIcommand* command, + G4String newValue) { + G4SceneList& list = fpVisManager -> SetSceneList (); + if (list.isEmpty ()) { + G4cout << "No scenes - please create one before adding anything." + << 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; +} + +////////////// /vis/scene/add/logicalVolume ////////////////////////////////// + +G4VisCommandSceneAddLogicalVolume::G4VisCommandSceneAddLogicalVolume () { + G4bool omitable; + fpCommand = new G4UIcommand ("/vis/scene/add/logicalVolume", this); + fpCommand -> AvailableForStates (Idle, GeomClosed); + fpCommand -> SetGuidance + ("/vis/scene/add/logicalVolume " + " []"); + fpCommand -> SetGuidance ("Adds a logical volume to the current scene."); + fpCommand -> SetGuidance + ("1st parameter: volume name."); + // fpCommand -> SetGuidance // Not implemented - should be in geom? + // (" \"list\" to list all volumes."); + fpCommand -> SetGuidance + ("2nd parameter: depth of descending geometry hierarchy (default 1)."); + G4UIparameter* parameter; + parameter = new G4UIparameter ("volume", 's', omitable = false); + fpCommand -> SetParameter (parameter); + parameter = new G4UIparameter ("depth", 'i', omitable = true); + parameter -> SetDefaultValue (1); + fpCommand -> SetParameter (parameter); +} + +G4VisCommandSceneAddLogicalVolume::~G4VisCommandSceneAddLogicalVolume () { + delete fpCommand; +} + +G4String G4VisCommandSceneAddLogicalVolume::GetCurrentValue (G4UIcommand*) { + return ""; +} + +void G4VisCommandSceneAddLogicalVolume::SetNewValue (G4UIcommand* command, + G4String newValue) { + G4SceneList& sceneList = fpVisManager -> SetSceneList (); + if (sceneList.isEmpty ()) { + G4cout << "No scenes - please create one before adding anything." + << G4endl; + return; + } + + G4String name; + G4int requestedDepthOfDescent; + const char* s = newValue; + G4std::istrstream is ((char*)s); + is >> name >> requestedDepthOfDescent; + + G4LogicalVolumeStore *pLVStore = G4LogicalVolumeStore::GetInstance(); + int nLV = pLVStore -> entries (); + int iLV; + G4LogicalVolume* pLV; + 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; + 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; + } +} + + +////////////// /vis/scene/add/trajectories /////////////////////////////////// + +G4VisCommandSceneAddTrajectories::G4VisCommandSceneAddTrajectories () { + fpCommand = new G4UIcmdWithoutParameter + ("/vis/scene/add/trajectories", this); + fpCommand -> AvailableForStates (Idle, GeomClosed); + fpCommand -> SetGuidance + ("Adds trajectories to current scene."); + fpCommand -> SetGuidance + ("Trajectories are drawn at end of event when the scene in which" + " they are added is current."); +} + +G4VisCommandSceneAddTrajectories::~G4VisCommandSceneAddTrajectories () { + delete fpCommand; +} + +G4String G4VisCommandSceneAddTrajectories::GetCurrentValue (G4UIcommand* command) { + return ""; +} + +void G4VisCommandSceneAddTrajectories::SetNewValue (G4UIcommand* command, + G4String newValue) { + G4SceneList& list = fpVisManager -> SetSceneList (); + if (list.isEmpty ()) { + G4cout << "No scenes - please create one before adding anything." + << 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; +} + +////////////// /vis/scene/add/volume /////////////////////////////////////// + +G4VisCommandSceneAddVolume::G4VisCommandSceneAddVolume () { + G4bool omitable; + fpCommand = new G4UIcommand ("/vis/scene/add/volume", this); + fpCommand -> AvailableForStates (Idle, GeomClosed); + fpCommand -> SetGuidance + ("/vis/scene/add/volume [] [] []"); + fpCommand -> SetGuidance ("Adds a physical volume to the current scene."); + fpCommand -> SetGuidance + ("1st parameter: volume name (default \"world\")."); + // fpCommand -> SetGuidance // Not implemented - should be in geom? + // (" \"list\" to list all volumes."); + fpCommand -> SetGuidance + ("2nd parameter: copy number (default 0)."); + fpCommand -> SetGuidance + ("3rd parameter: depth of descending geometry hierarchy" + " (default G4Scene::UNLIMITED (-1))."); + G4UIparameter* parameter; + parameter = new G4UIparameter ("volume", 's', omitable = true); + parameter -> SetDefaultValue ("world"); + fpCommand -> SetParameter (parameter); + parameter = new G4UIparameter ("copy-no", 'i', omitable = true); + parameter -> SetDefaultValue (0); + fpCommand -> SetParameter (parameter); + parameter = new G4UIparameter ("depth", 'i', omitable = true); + parameter -> SetDefaultValue (G4Scene::UNLIMITED); + fpCommand -> SetParameter (parameter); +} + +G4VisCommandSceneAddVolume::~G4VisCommandSceneAddVolume () { + delete fpCommand; +} + +G4String G4VisCommandSceneAddVolume::GetCurrentValue (G4UIcommand* command) { + return "world 0 -1"; +} + +void G4VisCommandSceneAddVolume::SetNewValue (G4UIcommand* command, + G4String newValue) { + G4SceneList& sceneList = fpVisManager -> SetSceneList (); + if (sceneList.isEmpty ()) { + G4cout << "No scenes - please create one before adding anything." + << G4endl; + return; + } + + G4String name; + G4int copyNo; + G4int requestedDepthOfDescent; + const char* s = newValue; + G4std::istrstream is ((char*)s); + is >> name >> copyNo >> requestedDepthOfDescent; + G4VPhysicalVolume* world = + G4TransportationManager::GetTransportationManager () + -> GetNavigatorForTracking () -> GetWorldVolume (); + G4PhysicalVolumeModel* model = 0; + G4VPhysicalVolume* foundVolume = 0; + G4int foundDepth = 0; + + if (name == "world") { + if (world) { + model = new G4PhysicalVolumeModel (world); + foundVolume = world; + } + else { + G4cerr << "G4VisCommandSceneAddVolume::SetNewValue: *** ERROR ***" + << "\n No world - shouldn't happen if G4ApplicationState is" + << " being properly noted!!" << G4endl; + } + } + else { + + // Create search scene, model and modeling parameters with + // long-enough life... + G4PhysicalVolumeSearchScene searchScene (name, copyNo); + G4PhysicalVolumeModel searchModel (world); + G4ModelingParameters mp; + searchModel.SetModelingParameters (&mp); + + // Initiate search... + searchModel.DescribeYourselfTo (searchScene); + + // OK, what have we got...? + foundVolume = searchScene.GetFoundVolume (); + foundDepth = searchScene.GetFoundDepth (); + //const G4Transform3D& + // transformation = searchScene.GetFoundTransformation (); + // Note: a physical volume carries its own transformation and + // does not need an additional model transformation. + + if (foundVolume) { + model = new G4PhysicalVolumeModel (foundVolume, + requestedDepthOfDescent); + } + else { + G4cout << "Volume \"" << name << "\", copy no. " << copyNo + << " not found." << G4endl; + } + } + + if (model) { + G4Scene* pScene = fpVisManager -> GetCurrentScene (); + const G4String& currentSceneName = pScene -> GetName (); + G4bool successful = pScene -> AddRunDurationModel (model); + UpdateVisManagerScene (currentSceneName); + if (successful) { + G4cout << "First occurrence of \"" << foundVolume -> GetName () + << "\", copy no. " << copyNo + << ", found at depth " << foundDepth + << ",\n with further requested depth of descent " + << requestedDepthOfDescent + << ", has been added to scene \"" << currentSceneName << "\"" + << G4endl; + } + } +} diff --git a/source/visualization/management/src/G4VisCommandsSceneHandler.cc b/source/visualization/management/src/G4VisCommandsSceneHandler.cc index 97b6ecd451..f69b49e749 100644 --- a/source/visualization/management/src/G4VisCommandsSceneHandler.cc +++ b/source/visualization/management/src/G4VisCommandsSceneHandler.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VisCommandsSceneHandler.cc,v 1.10 1999/12/16 17:19:33 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VisCommandsSceneHandler.cc,v 1.13 2000/05/18 13:45:45 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // /vis/sceneHandler commands - John Allison 10th October 1998 @@ -39,7 +39,10 @@ void G4VVisCommandSceneHandler::UpdateCandidateLists () { sceneHandlerNameCommandsIterator i; for (i = sceneHandlerNameCommands.begin (); i != sceneHandlerNameCommands.end (); ++i) { - (*i)->GetParameter (0) -> SetParameterCandidates (sceneHandlerNameList); + G4String candidates = sceneHandlerNameList; + if ((*i) -> GetCommandPath () == G4String ("/vis/sceneHandler/list")) + candidates += " all"; + (*i) -> GetParameter (0) -> SetParameterCandidates (candidates); } } @@ -127,24 +130,22 @@ G4VisCommandSceneHandlerCreate::G4VisCommandSceneHandlerCreate (): fId (0) { fpCommand -> SetGuidance ("/vis/sceneHandler/create"); fpCommand -> SetGuidance - (" [] []"); + (" []"); fpCommand -> SetGuidance ("Creates an scene handler for a specific graphics system."); fpCommand -> SetGuidance - ("Attaches specified scene."); - fpCommand -> SetGuidance - ("Default graphics system is current graphics system."); - fpCommand -> SetGuidance - ("Invents a name if not supplied."); - fpCommand -> SetGuidance - ("Default scene is current scene. You can change attached scenes with"); + ("Attaches current scene, if any. You can change attached scenes with"); fpCommand -> SetGuidance (" /vis/sceneHandler/attach []."); fpCommand -> SetGuidance - ("This graphics system, scene handler and scene become current."); + ("Default graphics system is current graphics system."); + fpCommand -> SetGuidance + ("Invents a scene handler name if not supplied."); + fpCommand -> SetGuidance + ("This scene handler becomes current."); G4UIparameter* parameter; - parameter = new G4UIparameter ("graphics-system", 's', omitable = false); - //parameter -> SetCurrentAsDefault (true); + parameter = new G4UIparameter ("graphics-system-name", + 's', omitable = false); const G4GraphicsSystemList& gslist = fpVisManager -> GetAvailableGraphicsSystems (); G4String candidates; @@ -199,23 +200,14 @@ G4String G4VisCommandSceneHandlerCreate::GetCurrentValue } } - G4String sceneName; - const G4VSceneHandler* scene = fpVisManager -> GetCurrentSceneHandler (); - if (scene) { - sceneName = scene -> GetName (); - } - else { - sceneName = "none"; - } - - return graphicsSystemName + " " + NextName () + " " + sceneName; + return graphicsSystemName + " " + NextName (); } void G4VisCommandSceneHandlerCreate::SetNewValue (G4UIcommand* command, G4String newValue) { - G4String graphicsSystem, newName, sceneName; + G4String graphicsSystem, newName; G4std::istrstream is ((char*)newValue.data()); - is >> graphicsSystem >> newName >> sceneName; + is >> graphicsSystem >> newName; const G4GraphicsSystemList& gsl = fpVisManager -> GetAvailableGraphicsSystems (); @@ -272,11 +264,13 @@ void G4VisCommandSceneHandlerCreate::SetNewValue (G4UIcommand* command, //Create scene handler. fpVisManager -> CreateSceneHandler (newName); + if (fpVisManager -> GetCurrentSceneHandler () -> GetName () != newName) + return; + G4cout << "New scene handler \"" << newName << "\" created." << G4endl; // Attach scene. - G4String commandString = "/vis/sceneHandler/attach " + sceneName; - G4UImanager::GetUIpointer () -> ApplyCommand (commandString); + G4UImanager::GetUIpointer () -> ApplyCommand ("/vis/sceneHandler/attach"); UpdateCandidateLists (); } @@ -302,6 +296,7 @@ G4VisCommandSceneHandlerList::G4VisCommandSceneHandlerList () { omitable = true); parameter -> SetCurrentAsDefault (false); parameter -> SetDefaultValue (0); + fpCommand -> SetParameter (parameter); sceneHandlerNameCommands.push_back (fpCommand); } diff --git a/source/visualization/management/src/G4VisCommandsSceneInclude.cc b/source/visualization/management/src/G4VisCommandsSceneInclude.cc index 9983f4bc43..8781b57c9b 100644 --- a/source/visualization/management/src/G4VisCommandsSceneInclude.cc +++ b/source/visualization/management/src/G4VisCommandsSceneInclude.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VisCommandsSceneInclude.cc,v 1.4 1999/12/15 14:54:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VisCommandsSceneInclude.cc,v 1.5 2000/05/19 09:18:01 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // /vis/scene commands - John Allison 9th August 1998 @@ -22,6 +22,8 @@ G4VisCommandSceneIncludeHits::G4VisCommandSceneIncludeHits () { fpCommand = new G4UIcmdWithoutParameter ("/vis/scene/include/hits", this); fpCommand -> AvailableForStates (Idle, GeomClosed); + fpCommand -> SetGuidance + ("Deprecated command - please use /vis/scene/add/hits."); fpCommand -> SetGuidance ("Includes hits in current scene."); fpCommand -> SetGuidance @@ -39,6 +41,11 @@ G4String G4VisCommandSceneIncludeHits::GetCurrentValue (G4UIcommand* command) { void G4VisCommandSceneIncludeHits::SetNewValue (G4UIcommand* command, G4String newValue) { + G4cout << + "/vis/scene/include/hits is a deprecated command - please use" + " /vis/scene/add/hits." + << G4endl; + G4SceneList& list = fpVisManager -> SetSceneList (); if (list.isEmpty ()) { G4cout << "No scenes - please create one before adding anything." @@ -60,6 +67,8 @@ void G4VisCommandSceneIncludeHits::SetNewValue (G4UIcommand* command, G4VisCommandSceneIncludeTrajectories::G4VisCommandSceneIncludeTrajectories () { fpCommand = new G4UIcmdWithoutParameter ("/vis/scene/include/trajectories", this); + fpCommand -> SetGuidance + ("Deprecated command - please use /vis/scene/add/trajectories."); fpCommand -> AvailableForStates (Idle, GeomClosed); fpCommand -> SetGuidance ("Includes trajectories in current scene."); @@ -78,6 +87,11 @@ G4String G4VisCommandSceneIncludeTrajectories::GetCurrentValue (G4UIcommand* com void G4VisCommandSceneIncludeTrajectories::SetNewValue (G4UIcommand* command, G4String newValue) { + G4cout << + "/vis/scene/include/trajectories is a deprecated command - please use" + "\n /vis/scene/add/trajectories." + << G4endl; + G4SceneList& list = fpVisManager -> SetSceneList (); if (list.isEmpty ()) { G4cout << "No scenes - please create one before adding anything." diff --git a/source/visualization/management/src/G4VisCommandsViewer.cc b/source/visualization/management/src/G4VisCommandsViewer.cc index 7b1b1f6945..ce8c189a34 100644 --- a/source/visualization/management/src/G4VisCommandsViewer.cc +++ b/source/visualization/management/src/G4VisCommandsViewer.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VisCommandsViewer.cc,v 1.12 2000/01/17 10:29:37 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VisCommandsViewer.cc,v 1.19 2000/06/07 08:43:28 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // /vis/viewer commands - John Allison 25th October 1998 @@ -17,6 +17,7 @@ #include "G4VisCommandsScene.hh" #include "G4UIcommand.hh" #include "G4UIcmdWithAString.hh" +#include "G4UnitsTable.hh" #include "G4ios.hh" #include "g4std/strstream" @@ -24,14 +25,6 @@ G4VVisCommandViewer::G4VVisCommandViewer () {} G4VVisCommandViewer::~G4VVisCommandViewer () {} -G4String G4VVisCommandViewer::ShortName (const G4String& name) { - G4String shortName (name); - if (shortName.contains (' ')) { - shortName = shortName (0, shortName.first (' ')); - } - return shortName; -} - void G4VVisCommandViewer::UpdateCandidateLists () { const G4SceneHandlerList& sceneHandlerList = @@ -43,8 +36,7 @@ void G4VVisCommandViewer::UpdateCandidateLists () { G4VSceneHandler* sceneHandler = sceneHandlerList [iHandler]; const G4ViewerList& viewerList = sceneHandler -> GetViewerList (); for (int iViewer = 0; iViewer < viewerList.entries (); iViewer++) { - const G4String& viewerName = viewerList [iViewer] -> GetName (); - viewerNameList += ShortName (viewerName) + " "; + viewerNameList += viewerList [iViewer] -> GetShortName () + " "; } } viewerNameList = viewerNameList.strip (); @@ -144,7 +136,8 @@ void G4VisCommandViewerCreate::SetNewValue (G4UIcommand* command, newName = newName.strip (G4String::both, ' '); newName = newName.strip (G4String::both, '"'); - const G4SceneHandlerList& sceneHandlerList = fpVisManager -> GetAvailableSceneHandlers (); + const G4SceneHandlerList& sceneHandlerList = + fpVisManager -> GetAvailableSceneHandlers (); G4int nHandlers = sceneHandlerList.entries (); if (nHandlers <= 0) { G4cout << "G4VisCommandViewerCreate::SetNewValue: no scene handlers." @@ -180,13 +173,15 @@ void G4VisCommandViewerCreate::SetNewValue (G4UIcommand* command, newName = nextName; } if (newName == nextName) fId++; + G4String newShortName = fpVisManager -> ViewerShortName (newName); for (iHandler = 0; iHandler < nHandlers; iHandler++) { G4VSceneHandler* sceneHandler = sceneHandlerList [iHandler]; const G4ViewerList& viewerList = sceneHandler -> GetViewerList (); for (int iViewer = 0; iViewer < viewerList.entries (); iViewer++) { - if (viewerList [iViewer] -> GetName () == newName ) { - G4cout << "Viewer \"" << newName << "\" already exists." << G4endl; + if (viewerList [iViewer] -> GetShortName () == newShortName ) { + G4cout << "Viewer \"" << newShortName << "\" already exists." + << G4endl; return; } } @@ -194,9 +189,10 @@ void G4VisCommandViewerCreate::SetNewValue (G4UIcommand* command, // Create viewer. fpVisManager -> CreateViewer (newName); - G4cout << "New viewer \"" << newName << "\" created." << G4endl; - - UpdateCandidateLists (); + if (fpVisManager -> GetCurrentViewer () -> GetName () == newName) { + G4cout << "New viewer \"" << newName << "\" created." << G4endl; + UpdateCandidateLists (); + } } ////////////// /vis/viewer/list /////////////////////////////////////// @@ -237,12 +233,12 @@ void G4VisCommandViewerList::SetNewValue (G4UIcommand* command, G4int verbosity; G4std::istrstream is ((char*)newValue.data()); is >> name >> verbosity; - G4String shortName = ShortName (name); + G4String shortName = fpVisManager -> ViewerShortName (name); const G4VViewer* currentViewer = fpVisManager -> GetCurrentViewer (); G4String currentViewerShortName; if (currentViewer) { - currentViewerShortName = ShortName (currentViewer -> GetName ()); + currentViewerShortName = currentViewer -> GetShortName (); } else { currentViewerShortName = "none"; @@ -266,7 +262,7 @@ void G4VisCommandViewerList::SetNewValue (G4UIcommand* command, for (int iViewer = 0; iViewer < nViewers; iViewer++) { const G4VViewer* thisViewer = viewerList [iViewer]; G4String thisName = thisViewer -> GetName (); - G4String thisShortName = ShortName (thisName); + G4String thisShortName = thisViewer -> GetShortName (); if (name != "all") { if (thisShortName != shortName) continue; } @@ -289,7 +285,8 @@ void G4VisCommandViewerList::SetNewValue (G4UIcommand* command, } if (!foundCurrent) { - G4cout << "No valid current viewer - please create or select one." << G4endl; + G4cout << "No valid current viewer - please create or select one." + << G4endl; } if (!found) { @@ -337,45 +334,20 @@ G4String G4VisCommandViewerRefresh::GetCurrentValue void G4VisCommandViewerRefresh::SetNewValue (G4UIcommand* command, G4String newValue) { G4String& refreshName = newValue; - G4String refreshShortName = ShortName (refreshName); - - G4VViewer* viewer = fpVisManager -> GetCurrentViewer (); - G4bool found = false; - if (viewer && refreshShortName == ShortName (viewer -> GetName ())) { - found = true; - } - else { - const G4SceneHandlerList& sceneHandlerList = - fpVisManager -> GetAvailableSceneHandlers (); - G4int nHandlers = sceneHandlerList.entries (); - for (G4int iHandler = 0; iHandler < nHandlers; iHandler++) { - G4VSceneHandler* sceneHandler = sceneHandlerList [iHandler]; - const G4ViewerList& viewerList = sceneHandler -> GetViewerList (); - for (G4int iViewer = 0; iViewer < viewerList.entries (); iViewer++) { - viewer = viewerList [iViewer]; - if (refreshShortName == ShortName (viewer -> GetName ())) { - found = true; - fpVisManager -> SetCurrentViewer (viewer); - break; - } - } - if (found) break; - } - } - - G4cout << "Viewer \"" << refreshName << "\""; - if (found) { + G4VViewer* viewer = fpVisManager -> GetViewer (refreshName); + if (viewer) { + G4cout << "Refreshing viewer \"" << viewer -> GetName () << "\"..." + << G4endl; viewer -> ClearView (); - viewer -> SetViewParameters (fpVisManager -> GetCurrentViewParameters ()); viewer -> DrawView (); - viewer -> ShowView (); - G4cout << " refreshed."; + G4cout << "Viewer \"" << viewer -> GetName () << "\"" << " refreshed." + "\n (You might also need \"/vis/viewer/update\".)" << G4endl; } else { - G4cout << " not found - \"/vis/viewer/list\"" - "\n to see possibilities."; + G4cout << "Viewer \"" << refreshName << "\"" << + " not found - \"/vis/viewer/list\"\n to see possibilities." + << G4endl; } - G4cout << G4endl; } ////////////// /vis/viewer/remove /////////////////////////////////////// @@ -384,7 +356,7 @@ G4VisCommandViewerRemove::G4VisCommandViewerRemove () { G4bool omitable, currentAsDefault; fpCommand = new G4UIcmdWithAString ("/vis/viewer/remove", this); fpCommand -> SetGuidance ("/vis/viewer/remove "); - fpCommand -> SetGuidance ("Removes viewers."); + fpCommand -> SetGuidance ("Removes viewer."); fpCommand -> SetGuidance ("Specify viewer by name (\"/vis/viewer/list\"" "\n to see possibilities)."); @@ -411,67 +383,102 @@ G4String G4VisCommandViewerRemove::GetCurrentValue (G4UIcommand* command) { void G4VisCommandViewerRemove::SetNewValue (G4UIcommand* command, G4String newValue) { G4String& removeName = newValue; - G4String removeShortName = ShortName (removeName); + G4VViewer* currentViewer = fpVisManager -> GetCurrentViewer (); - G4String currentName; + G4String currentShortName; if (currentViewer) { - currentName = currentViewer -> GetName (); + currentShortName = currentViewer -> GetShortName (); } else { - currentName = "none"; - } - G4String currentShortName = ShortName (currentName); - - const G4SceneHandlerList& sceneHandlerList = fpVisManager -> GetAvailableSceneHandlers (); - G4int nHandlers = sceneHandlerList.entries (); - G4int iHandler, iViewer; - G4VSceneHandler* sceneHandler; - G4VViewer* viewer; - G4bool found = false; - for (iHandler = 0; iHandler < nHandlers; iHandler++) { - sceneHandler = sceneHandlerList [iHandler]; - const G4ViewerList& viewerList = sceneHandler -> GetViewerList (); - for (iViewer = 0; iViewer < viewerList.entries (); iViewer++) { - viewer = viewerList [iViewer]; - const G4String& viewerName = viewer -> GetName (); - if (removeShortName == ShortName (viewerName)) { - found = true; - break; - } - } + currentShortName = "none"; } - if (!found) { + G4VViewer* viewer = fpVisManager -> GetViewer (removeName); + if (!viewer) { G4cout << "Viewer \"" << removeName << "\" not found - \"/vis/viewer/list\" to see possibilities." << G4endl; return; } - G4cout << "Viewer \"" << removeName << "\" removed." << G4endl; - if (removeShortName == currentShortName) { + G4cout << "Viewer \"" << viewer -> GetName () << "\" removed." << G4endl; + if (viewer -> GetShortName () == currentShortName) { fpVisManager -> DeleteCurrentViewer (); } else { + G4VSceneHandler* sceneHandler = viewer -> GetSceneHandler (); sceneHandler -> SetViewerList ().remove (viewer); - G4cout << "Current viewer unchanged." << G4endl; + G4cout << "Current viewer is unchanged (\"" + << currentViewer -> GetName () << "\")." << G4endl; } UpdateCandidateLists (); } +////////////// /vis/viewer/reset /////////////////////////////////////// + +G4VisCommandViewerReset::G4VisCommandViewerReset () { + G4bool omitable, currentAsDefault; + fpCommand = new G4UIcmdWithAString ("/vis/viewer/reset", this); + fpCommand -> SetGuidance ("/vis/viewer/reset []"); + fpCommand -> SetGuidance ("Resets viewer."); + fpCommand -> SetGuidance ("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); +} + +G4VisCommandViewerReset::~G4VisCommandViewerReset () { + delete fpCommand; +} + +G4String G4VisCommandViewerReset::GetCurrentValue (G4UIcommand* command) { + G4VViewer* viewer = fpVisManager -> GetCurrentViewer (); + if (viewer) { + return viewer -> GetName (); + } + else { + return "none"; + } +} + +void G4VisCommandViewerReset::SetNewValue (G4UIcommand* command, + G4String newValue) { + G4String& resetName = newValue; + G4VViewer* viewer = fpVisManager -> GetViewer (resetName); + if (!viewer) { + G4cout << "Viewer \"" << resetName + << "\" not found - \"/vis/viewer/list\" to see possibilities." + << G4endl; + return; + } + + if (fpVisManager -> IsValidView ()) { + G4ViewParameters vp; // Default view parameters. + viewer->SetViewParameters(vp); + G4cout << "Viewer \"" << viewer -> GetName () << "\" reset."; + G4cout << "\nIssue \"/vis/viewer/refresh\" to see effect." << G4endl; + // For now... + fpVisManager->SetCurrentViewParameters() = vp; + } +} + ////////////// /vis/viewer/select /////////////////////////////////////// G4VisCommandViewerSelect::G4VisCommandViewerSelect () { G4bool omitable, currentAsDefault; fpCommand = new G4UIcmdWithAString ("/vis/viewer/select", this); - fpCommand -> SetGuidance ("/vis/viewer/select []"); + fpCommand -> SetGuidance ("/vis/viewer/select "); fpCommand -> SetGuidance ("Selects current viewer."); fpCommand -> SetGuidance ("Specify viewer by name (\"/vis/viewer/list\"" "\n to see possibilities)."); fpCommand -> SetParameterName ("viewer-name", - omitable = true, + omitable = false, currentAsDefault = true); viewerNameCommands.push_back (fpCommand); } @@ -494,33 +501,11 @@ G4String G4VisCommandViewerSelect::GetCurrentValue void G4VisCommandViewerSelect::SetNewValue (G4UIcommand* command, G4String newValue) { G4String& selectName = newValue; - G4String selectShortName = ShortName (selectName); + G4VViewer* viewer = fpVisManager -> GetViewer (selectName); - const G4SceneHandlerList& sceneHandlerList = - fpVisManager -> GetAvailableSceneHandlers (); - G4int nHandlers = sceneHandlerList.entries (); - G4int iHandler, iViewer; - G4VSceneHandler* sceneHandler; - G4VViewer* viewer; - G4bool found = false; - for (iHandler = 0; iHandler < nHandlers; iHandler++) { - sceneHandler = sceneHandlerList [iHandler]; - const G4ViewerList& viewerList = sceneHandler -> GetViewerList (); - for (iViewer = 0; iViewer < viewerList.entries (); iViewer++) { - viewer = viewerList [iViewer]; - if (selectShortName == ShortName (viewer -> GetName ())) { - found = true; - break; - } - } - if (found) break; - } - - G4cout << "Viewer \"" << selectName << "\""; - if (found) { - G4VViewer* currentViewer = fpVisManager -> GetCurrentViewer (); - if (currentViewer && - ShortName (currentViewer -> GetName ()) == selectShortName) { + if (viewer) { + G4cout << "Viewer \"" << viewer -> GetName () << "\""; + if (viewer == fpVisManager -> GetCurrentViewer ()) { G4cout << " already selected." << G4endl; } else { @@ -529,19 +514,20 @@ void G4VisCommandViewerSelect::SetNewValue (G4UIcommand* command, } } else { + G4cout << "Viewer \"" << selectName << "\""; G4cout << " not found - \"/vis/viewer/list\"" "\n to see possibilities." << G4endl; } } -////////////// /vis/viewer/show /////////////////////////////////////// -// Synonym (deprecated): /vis/viewer/update /////////////////////////// +////////////// /vis/viewer/update /////////////////////////////////////// +// Synonym (deprecated): /vis/viewer/show /////////////////////////// -G4VisCommandViewerShow::G4VisCommandViewerShow () { +G4VisCommandViewerUpdate::G4VisCommandViewerUpdate () { G4bool omitable, currentAsDefault; - fpCommand = new G4UIcmdWithAString ("/vis/viewer/show", this); - fpCommand -> SetGuidance ("/vis/viewer/show []"); + fpCommand = new G4UIcmdWithAString ("/vis/viewer/update", this); + fpCommand -> SetGuidance ("/vis/viewer/update []"); fpCommand -> SetGuidance ("Triggers graphical database post-processing for viewers" " using that technique."); @@ -555,21 +541,21 @@ G4VisCommandViewerShow::G4VisCommandViewerShow () { omitable = true, currentAsDefault = true); viewerNameCommands.push_back (fpCommand); - fpCommand1 = new G4UIcmdWithAString ("/vis/viewer/update", this); + fpCommand1 = new G4UIcmdWithAString ("/vis/viewer/show", this); fpCommand1 -> SetGuidance - ("Synonym for \"/vis/viewer/show\" - see that command for guidance."); + ("Synonym for \"/vis/viewer/update\" - see that command for guidance."); fpCommand1 -> SetParameterName ("viewer-name", omitable = true, currentAsDefault = true); viewerNameCommands.push_back (fpCommand1); } -G4VisCommandViewerShow::~G4VisCommandViewerShow () { +G4VisCommandViewerUpdate::~G4VisCommandViewerUpdate () { delete fpCommand; delete fpCommand1; } -G4String G4VisCommandViewerShow::GetCurrentValue +G4String G4VisCommandViewerUpdate::GetCurrentValue (G4UIcommand* command) { G4VViewer* viewer = fpVisManager -> GetCurrentViewer (); if (viewer) { @@ -580,43 +566,19 @@ G4String G4VisCommandViewerShow::GetCurrentValue } } -void G4VisCommandViewerShow::SetNewValue (G4UIcommand* command, +void G4VisCommandViewerUpdate::SetNewValue (G4UIcommand* command, G4String newValue) { - G4String& showName = newValue; - G4String showShortName = ShortName (showName); + G4String& updateName = newValue; + G4VViewer* viewer = fpVisManager -> GetViewer (updateName); - G4VViewer* viewer = fpVisManager -> GetCurrentViewer (); - G4bool found = false; - if (viewer && showShortName == ShortName (viewer -> GetName ())) { - found = true; - } - else { - const G4SceneHandlerList& sceneHandlerList = - fpVisManager -> GetAvailableSceneHandlers (); - G4int nHandlers = sceneHandlerList.entries (); - for (G4int iHandler = 0; iHandler < nHandlers; iHandler++) { - G4VSceneHandler* sceneHandler = sceneHandlerList [iHandler]; - const G4ViewerList& viewerList = sceneHandler -> GetViewerList (); - for (G4int iViewer = 0; iViewer < viewerList.entries (); iViewer++) { - viewer = viewerList [iViewer]; - if (showShortName == ShortName (viewer -> GetName ())) { - found = true; - fpVisManager -> SetCurrentViewer (viewer); - break; - } - } - if (found) break; - } - } - - G4cout << "Viewer \"" << showName << "\""; - if (found) { + if (viewer) { + G4cout << "Viewer \"" << viewer -> GetName () << "\""; + G4cout << " post-processing triggered." << G4endl; viewer -> ShowView (); - G4cout << " post-processing triggered."; } else { + G4cout << "Viewer \"" << updateName << "\""; G4cout << " not found - \"/vis/viewer/list\"" - "\n to see possibilities."; + "\n to see possibilities." << G4endl; } - G4cout << G4endl; } diff --git a/source/visualization/management/src/G4VisCommandsViewerSet.cc b/source/visualization/management/src/G4VisCommandsViewerSet.cc new file mode 100644 index 0000000000..4c32544cd9 --- /dev/null +++ b/source/visualization/management/src/G4VisCommandsViewerSet.cc @@ -0,0 +1,314 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4VisCommandsViewerSet.cc,v 1.3 2000/05/19 09:18:09 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ + +// /vis/viewer/set commands - John Allison 16th May 2000 + +#include "G4VisCommandsViewerSet.hh" + +#include "G4UIcommand.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithABool.hh" +#include "G4VisManager.hh" +#include "G4UnitsTable.hh" +#include "g4std/strstream" + +G4String G4VisCommandsViewerSet::ConvertToString(G4bool blValue) +{ + G4String vl = "false"; + if(blValue) vl = "true"; + return vl; +} + +G4bool G4VisCommandsViewerSet::GetNewBoolValue(const G4String& paramString) +{ + G4String v = paramString; + v.toUpper(); + G4bool vl = false; + if( v=="Y" || v=="YES" || v=="1" || v=="T" || v=="TRUE" ) + { vl = true; } + return vl; +} + +G4VisCommandsViewerSet::G4VisCommandsViewerSet () { + G4bool omitable; + G4UIparameter* parameter; + + fpCommandAll = new G4UIcmdWithAString ("/vis/viewer/set/all",this); + fpCommandAll->SetGuidance + ("/vis/viewer/set/all " + "\nCopies view parameters from from-viewer to current viewer."); + fpCommandAll->SetParameterName ("from-viewer-name",omitable = false); + viewerNameCommands.push_back (fpCommandAll); + + fpCommandStyle = new G4UIcmdWithAString ("/vis/viewer/set/style",this); + fpCommandStyle->SetGuidance ("/vis/viewer/set/style wireframe|surface"); + fpCommandStyle->SetParameterName ("style",omitable = false); + fpCommandStyle->SetCandidates("wireframe surface"); + + fpCommandEdge = new G4UIcmdWithABool("/vis/viewer/set/edge",this); + fpCommandEdge->SetGuidance("/vis/viewer/set/edge [true|false]"); + fpCommandEdge->SetParameterName("edge",omitable = true); + fpCommandEdge->SetDefaultValue(true); + + fpCommandHiddenEdge = + new G4UIcmdWithABool("/vis/viewer/set/hiddenEdge",this); + fpCommandHiddenEdge->SetGuidance("/vis/viewer/set/edge [true|false]"); + fpCommandHiddenEdge->SetParameterName("hidden-edge",omitable = true); + fpCommandHiddenEdge->SetDefaultValue(true); + + fpCommandCulling = new G4UIcommand("/vis/viewer/set/culling",this); + fpCommandCulling->SetGuidance + ("/vis/viewer/set/culling global|coveredDaughters|invisible|density" + " [true|false] [density] [unit]"); + fpCommandCulling->SetGuidance + ("If density option is true, provide threshold density and unit"); + fpCommandCulling->SetGuidance + ("Unit is g/cm3, mg/cm3 or kg/m3"); + parameter = new G4UIparameter("culling-option",'s',omitable = false); + parameter->SetParameterCandidates + ("global coveredDaughters invisible density"); + fpCommandCulling->SetParameter(parameter); + parameter = new G4UIparameter("flag",'b',omitable = true); + parameter->SetDefaultValue("true"); + fpCommandCulling->SetParameter(parameter); + parameter = new G4UIparameter("density",'d',omitable = true); + parameter->SetDefaultValue("0.01"); + fpCommandCulling->SetParameter(parameter); + parameter = new G4UIparameter("unit",'s',omitable = true); + parameter->SetDefaultValue("g/cm3"); + fpCommandCulling->SetParameter(parameter); +} + +G4VisCommandsViewerSet::~G4VisCommandsViewerSet() { + delete fpCommandAll; + delete fpCommandStyle; + delete fpCommandEdge; + delete fpCommandHiddenEdge; + delete fpCommandCulling; +} + +G4String G4VisCommandsViewerSet::GetCurrentValue(G4UIcommand* command) { + return "invalid"; +} + +void G4VisCommandsViewerSet::SetNewValue +(G4UIcommand* command,G4String newValue) { + + G4VViewer* currentViewer = fpVisManager->GetCurrentViewer(); + if (!currentViewer) { + G4cout << "G4VisCommandsViewerSet::SetNewValue: no current viewer." + << G4endl; + return; + } + + G4ViewParameters vp = currentViewer->GetViewParameters(); + + if (command == fpCommandAll) { + G4VViewer* fromViewer = fpVisManager->GetViewer(newValue); + if (!fromViewer) { + G4cout << + "G4VisCommandsViewerSet::SetNewValue: all: unrecognised from-viewer." + << G4endl; + return; + } + if (fromViewer == currentViewer) { + G4cout << + "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; + } + + else if (command == fpCommandStyle) { + G4ViewParameters::DrawingStyle existingStyle = vp.GetDrawingStyle(); + if (newValue == "wireframe") { + switch (existingStyle) { + case G4ViewParameters::wireframe: + break; + case G4ViewParameters::hlr: + break; + case G4ViewParameters::hsr: + vp.SetDrawingStyle(G4ViewParameters::wireframe); + break; + case G4ViewParameters::hlhsr: + vp.SetDrawingStyle(G4ViewParameters::hlr); + break; + } + } + else if (newValue == "surface") { + switch (existingStyle) { + case G4ViewParameters::wireframe: + vp.SetDrawingStyle(G4ViewParameters::hsr); + break; + case G4ViewParameters::hlr: + vp.SetDrawingStyle(G4ViewParameters::hlhsr); + break; + case G4ViewParameters::hsr: + break; + case G4ViewParameters::hlhsr: + break; + } + } + else { + G4cout << + "G4VisCommandsViewerSet::SetNewValue: style: unrecognised style." + << G4endl; + return; + } + G4cout << "Drawing style of viewer \"" << currentViewer->GetName() + << "\" set to " << vp.GetDrawingStyle() + << G4endl; + } + + else if (command == fpCommandEdge) { + G4ViewParameters::DrawingStyle existingStyle = vp.GetDrawingStyle(); + if (GetNewBoolValue(newValue)) { + switch (existingStyle) { + case G4ViewParameters::wireframe: + break; + case G4ViewParameters::hlr: + break; + case G4ViewParameters::hsr: + vp.SetDrawingStyle(G4ViewParameters::hlhsr); + break; + case G4ViewParameters::hlhsr: + break; + } + } + else { + switch (existingStyle) { + case G4ViewParameters::wireframe: + break; + case G4ViewParameters::hlr: + break; + case G4ViewParameters::hsr: + break; + case G4ViewParameters::hlhsr: + vp.SetDrawingStyle(G4ViewParameters::hsr); + break; + } + } + G4cout << "Drawing style of viewer \"" << currentViewer->GetName() + << "\" set to " << vp.GetDrawingStyle() + << G4endl; + } + + else if (command == fpCommandHiddenEdge) { + G4ViewParameters::DrawingStyle existingStyle = vp.GetDrawingStyle(); + if (GetNewBoolValue(newValue)) { + switch (existingStyle) { + case G4ViewParameters::wireframe: + vp.SetDrawingStyle(G4ViewParameters::hlr); + break; + case G4ViewParameters::hlr: + break; + case G4ViewParameters::hsr: + vp.SetDrawingStyle(G4ViewParameters::hlhsr); + break; + case G4ViewParameters::hlhsr: + break; + } + } + else { + switch (existingStyle) { + case G4ViewParameters::wireframe: + break; + case G4ViewParameters::hlr: + vp.SetDrawingStyle(G4ViewParameters::wireframe); + break; + case G4ViewParameters::hsr: + break; + case G4ViewParameters::hlhsr: + vp.SetDrawingStyle(G4ViewParameters::hsr); + break; + } + } + G4cout << "Drawing style of viewer \"" << currentViewer->GetName() + << "\" set to " << vp.GetDrawingStyle() + << G4endl; + } + + else if (command == fpCommandCulling) { + G4String cullingOption, stringFlag, unit; + G4double density; + G4bool boolFlag; + G4std::istrstream is ((char*)newValue.data()); + is >> cullingOption >> stringFlag >> density >> unit; + 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; + } + 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; + } + 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; + } + else if (cullingOption == "density") { + vp.SetDensityCulling(boolFlag); + if (boolFlag) { + density *= G4UnitDefinition::GetValueOf(unit); + vp.SetVisibleDensity(density); + } + 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; + } + else { + G4cout << + "G4VisCommandsViewerSet::SetNewValue: culling: option not recognised." + << G4endl; + } + } + + else { + G4cout << "G4VisCommandsViewerSet::SetNewValue: unrecognised command." + << G4endl; + return; + } + + currentViewer->SetViewParameters(vp); + G4cout << "Issue /vis/viewer/refresh to see effect." << G4endl; + // For now... + fpVisManager->SetCurrentViewParameters() = vp; +} diff --git a/source/visualization/management/src/G4VisFeaturesOfDAWNFILE.cc b/source/visualization/management/src/G4VisFeaturesOfDAWNFILE.cc index 41de1b13f6..0341b07d4c 100644 --- a/source/visualization/management/src/G4VisFeaturesOfDAWNFILE.cc +++ b/source/visualization/management/src/G4VisFeaturesOfDAWNFILE.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisFeaturesOfDAWNFILE.cc,v 1.3 1999/12/15 14:54:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // #include "G4VisFeaturesOfDAWNFILE.hh" diff --git a/source/visualization/management/src/G4VisFeaturesOfFukuiRenderer.cc b/source/visualization/management/src/G4VisFeaturesOfFukuiRenderer.cc index 243c2f0671..2a60519e9c 100644 --- a/source/visualization/management/src/G4VisFeaturesOfFukuiRenderer.cc +++ b/source/visualization/management/src/G4VisFeaturesOfFukuiRenderer.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisFeaturesOfFukuiRenderer.cc,v 1.3 1999/12/15 14:54:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/visualization/management/src/G4VisFeaturesOfOpenGL.cc b/source/visualization/management/src/G4VisFeaturesOfOpenGL.cc index fd2f5f8366..b5f8992936 100644 --- a/source/visualization/management/src/G4VisFeaturesOfOpenGL.cc +++ b/source/visualization/management/src/G4VisFeaturesOfOpenGL.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisFeaturesOfOpenGL.cc,v 1.3 1999/12/15 14:54:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/visualization/management/src/G4VisFeaturesOfOpenInventor.cc b/source/visualization/management/src/G4VisFeaturesOfOpenInventor.cc index 922253a1f2..634a663869 100644 --- a/source/visualization/management/src/G4VisFeaturesOfOpenInventor.cc +++ b/source/visualization/management/src/G4VisFeaturesOfOpenInventor.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisFeaturesOfOpenInventor.cc,v 1.3 1999/12/15 14:54:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // diff --git a/source/visualization/management/src/G4VisManMessCamera.cc b/source/visualization/management/src/G4VisManMessCamera.cc index 0d57a7be00..27b0edfcdc 100644 --- a/source/visualization/management/src/G4VisManMessCamera.cc +++ b/source/visualization/management/src/G4VisManMessCamera.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisManMessCamera.cc,v 1.4 1999/12/15 14:54:26 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // GEANT4 Visualization Manager Messenger - John Allison 22nd July 1996. diff --git a/source/visualization/management/src/G4VisManMessCreateView.cc b/source/visualization/management/src/G4VisManMessCreateView.cc index 6c9344c4f5..295b01e4e0 100644 --- a/source/visualization/management/src/G4VisManMessCreateView.cc +++ b/source/visualization/management/src/G4VisManMessCreateView.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisManMessCreateView.cc,v 1.5 1999/12/15 14:54:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // GEANT4 Visualization Manager Messenger - John Allison 22nd July 1996. diff --git a/source/visualization/management/src/G4VisManMessDraw.cc b/source/visualization/management/src/G4VisManMessDraw.cc index 8c0f90315c..83ec92380b 100644 --- a/source/visualization/management/src/G4VisManMessDraw.cc +++ b/source/visualization/management/src/G4VisManMessDraw.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisManMessDraw.cc,v 1.5 1999/12/15 14:54:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // GEANT4 Visualization Manager Messenger - John Allison 22nd July 1996. diff --git a/source/visualization/management/src/G4VisManMessExpert.cc b/source/visualization/management/src/G4VisManMessExpert.cc index 7124b7bb52..79a3011ca6 100644 --- a/source/visualization/management/src/G4VisManMessExpert.cc +++ b/source/visualization/management/src/G4VisManMessExpert.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisManMessExpert.cc,v 1.4 1999/12/15 14:54:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // GEANT4 Visualization Manager Messenger - John Allison 22nd July 1996. diff --git a/source/visualization/management/src/G4VisManMessLights.cc b/source/visualization/management/src/G4VisManMessLights.cc index 3c9de91d94..a38207c69f 100644 --- a/source/visualization/management/src/G4VisManMessLights.cc +++ b/source/visualization/management/src/G4VisManMessLights.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisManMessLights.cc,v 1.4 1999/12/15 14:54:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // GEANT4 Visualization Manager Messenger - John Allison 22nd July 1996. diff --git a/source/visualization/management/src/G4VisManMessSet.cc b/source/visualization/management/src/G4VisManMessSet.cc index ae65fd2bf5..8bc9d621d5 100644 --- a/source/visualization/management/src/G4VisManMessSet.cc +++ b/source/visualization/management/src/G4VisManMessSet.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VisManMessSet.cc,v 1.6 1999/12/15 14:54:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VisManMessSet.cc,v 1.7 2000/05/02 09:58:11 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // GEANT4 Visualization Manager Messenger - John Allison 22nd July 1996. @@ -656,7 +656,7 @@ void G4VisManMessenger::DoCommandSet (const G4String& commandPath, G4cout << "Available views:"; for (int iView = 0; iView < nViewTotal; iView++) { const G4VViewer* pView = vList [iView]; - const G4VSceneHandler* pScene = pView -> GetScene (); + const G4VSceneHandler* pScene = pView -> GetSceneHandler (); const G4VGraphicsSystem* pSystem = pScene -> GetGraphicsSystem (); G4cout << "\n " << iView << ") " << pView -> GetName (); } diff --git a/source/visualization/management/src/G4VisManMessenger.cc b/source/visualization/management/src/G4VisManMessenger.cc index 93b397b76d..8a7dad7db3 100644 --- a/source/visualization/management/src/G4VisManMessenger.cc +++ b/source/visualization/management/src/G4VisManMessenger.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisManMessenger.cc,v 1.3 1999/12/15 14:54:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // GEANT4 Visualization Manager Messenger - John Allison 22nd July 1996. diff --git a/source/visualization/management/src/G4VisManager.cc b/source/visualization/management/src/G4VisManager.cc index e540de310a..bfbe6b001d 100644 --- a/source/visualization/management/src/G4VisManager.cc +++ b/source/visualization/management/src/G4VisManager.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VisManager.cc,v 1.13 1999/12/15 14:54:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VisManager.cc,v 1.17 2000/05/04 08:52:10 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // GEANT4 Visualization Manager - John Allison 02/Jan/1996. @@ -127,6 +127,9 @@ void G4VisManager::Initialise () { #endif #ifdef G4VIS_BUILD_VRMLFILE_DRIVER "\n G4VIS_USE_VRMLFILE" +#endif +#ifdef G4VIS_BUILD_RAYTRACER_DRIVER + "\n G4VIS_USE_RAYTRACER" #endif "\n Thus, in your main() you have something like:" "\n G4VisManager* visManager = new MyVisManager;" @@ -150,6 +153,9 @@ void G4VisManager::Initialise () { fInitialised = true; } +// void G4VisManager::RegisterMessengers () - see separate file, +// G4VisManagerRegisterMessengers.cc. + const G4GraphicsSystemList& G4VisManager::GetAvailableGraphicsSystems () { G4int nSystems = fAvailableGraphicsSystems.entries (); if (nSystems == 0) { @@ -437,13 +443,9 @@ void G4VisManager::CreateSceneHandler (G4String name) { } else { G4cout << "Error in G4VisManager::CreateSceneHandler during " - << fpGraphicsSystem -> GetName () - << " scene creation." - << G4endl; - fpSceneHandler = 0; - fpViewer = 0; - // Make it impossible for user action code to Draw. - fpConcreteInstance = 0; + << fpGraphicsSystem -> GetName () + << " scene creation.\n No action taken." + << G4endl; } } else PrintInvalidPointers (); @@ -472,7 +474,7 @@ void G4VisManager::CreateViewer (G4String name) { G4cout << "\n NOTE: objects with visibility flag set to \"false\"" " will not be drawn!" - "\n \"/vis~/set/culling off\" to Draw such objects."; + "\n \"/vis/set/culling off\" to Draw such objects."; } if (fVP.IsCullingCovered ()) { if (!warnings) { @@ -482,13 +484,18 @@ void G4VisManager::CreateViewer (G4String name) { 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."; + "\n \"/vis/set/cull_covered_daughters off\" to reverse this."; } if (warnings) { - G4cout << "\n Also see other \"/vis~/set\" commands." + G4cout << "\n Also see other \"/vis/set\" commands." << G4endl; } - + } + else { + G4cout << "Error in G4VisManager::CreateViewer during " + << fpGraphicsSystem -> GetName () + << " viewer creation.\n No action taken." + << G4endl; } } else PrintInvalidPointers (); @@ -545,7 +552,7 @@ void G4VisManager::DeleteCurrentViewer () { << fpViewer -> GetName () << "\" being deleted."; if (fpViewer ) { - fpViewer -> GetScene () -> RemoveViewerFromList (fpViewer); + fpViewer -> GetSceneHandler () -> RemoveViewerFromList (fpViewer); delete fpViewer; } const G4ViewerList& viewerList = fpSceneHandler -> GetViewerList (); @@ -661,7 +668,7 @@ void G4VisManager::SetCurrentGraphicsSystem (G4VGraphicsSystem* pSystem) { for (iSH = nSH - 1; iSH >= 0; iSH--) { if (sceneHandlerList [iSH] -> GetGraphicsSystem () == pSystem) break; } - if (iSH >= nSH) { + if (iSH >= 0) { fpSceneHandler = sceneHandlerList [iSH]; G4cout << "\n Scene Handler now " << fpSceneHandler -> GetName (); @@ -680,7 +687,7 @@ void G4VisManager::SetCurrentGraphicsSystem (G4VGraphicsSystem* pSystem) { fpSceneHandler = 0; fpViewer = 0; // Make it impossible for user action code to Draw. - fpConcreteInstance = 0; + fpConcreteInstance = 0; } } G4cout << G4endl; @@ -722,7 +729,7 @@ void G4VisManager::SetCurrentViewer (G4VViewer* pViewer) { G4cout << "G4VisManager::SetCurrentViewer: viewer now " << pViewer -> GetName () << G4endl; - fpSceneHandler = fpViewer -> GetScene (); + fpSceneHandler = fpViewer -> GetSceneHandler (); fpSceneHandler -> SetCurrentViewer (pViewer); fpGraphicsSystem = fpSceneHandler -> GetGraphicsSystem (); IsValidView (); // Checks. @@ -762,7 +769,7 @@ void G4VisManager::PrintCurrentView () const { if (fpGraphicsSystem && fpSceneHandler && fpViewer) { G4cout << "Current View is: "; G4cout << fpGraphicsSystem -> GetName () << '-' - << fpSceneHandler -> GetSceneId () << '-' + << fpSceneHandler -> GetSceneHandlerId () << '-' << fpViewer -> GetViewId () << " selected (check: " << fpViewer -> GetName () << ")."; G4cout << '\n' << *fpViewer; @@ -796,9 +803,10 @@ void G4VisManager::PrintAllGraphicsSystems () const { << "\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), in preparation" - << "\n\n VRML2File (produces VRML 2 file locally ), in preparation" + << "\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)" << G4endl; } @@ -830,11 +838,14 @@ void G4VisManager::PrintInstalledGraphicsSystems () const { #endif #ifdef G4VIS_BUILD_VRML_DRIVER << "\n VRML1 (produces VRML 1 file over network)" - << "\n VRML2 (produces VRML 2 file over network), in preparation" + << "\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), in preparation" + << "\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 << G4endl; } @@ -897,6 +908,35 @@ void G4VisManager::EndOfEvent () { } } +G4String G4VisManager::ViewerShortName (const G4String& viewerName) const { + G4String viewerShortName (viewerName); + viewerShortName = viewerShortName (0, viewerShortName.find (' ')); + return viewerShortName.strip (); +} + +G4VViewer* G4VisManager::GetViewer (const G4String& viewerName) const { + G4String viewerShortName = ViewerShortName (viewerName); + G4int nHandlers = fAvailableSceneHandlers.entries (); + G4int iHandler, iViewer; + G4VSceneHandler* sceneHandler; + G4VViewer* viewer; + G4bool found = false; + for (iHandler = 0; iHandler < nHandlers; iHandler++) { + sceneHandler = fAvailableSceneHandlers [iHandler]; + const G4ViewerList& viewerList = sceneHandler -> GetViewerList (); + for (iViewer = 0; iViewer < viewerList.entries (); iViewer++) { + viewer = viewerList [iViewer]; + if (viewerShortName == viewer -> GetShortName ()) { + found = true; + break; + } + } + if (found) break; + } + if (found) return viewer; + else return 0; +} + G4bool G4VisManager::IsValidView () { if (!fInitialised) Initialise (); @@ -1012,6 +1052,19 @@ G4DAWNFILE::G4DAWNFILE (): #endif +#ifndef G4VIS_BUILD_RAYTRACER_DRIVER + +class G4RayTracer: public G4VGraphicsSystem { +public: + G4RayTracer (); +}; +G4RayTracer::G4RayTracer (): + G4VGraphicsSystem ("RayTracer", + "RayTracer", + G4VGraphicsSystem::noFunctionality) {} + +#endif + #ifndef G4VIS_BUILD_OPACS_DRIVER class G4Wo: public G4VGraphicsSystem { diff --git a/source/visualization/management/src/G4VisManagerRegisterMessengers.cc b/source/visualization/management/src/G4VisManagerRegisterMessengers.cc index d0d31bef77..6b3b393f70 100644 --- a/source/visualization/management/src/G4VisManagerRegisterMessengers.cc +++ b/source/visualization/management/src/G4VisManagerRegisterMessengers.cc @@ -5,19 +5,21 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VisManagerRegisterMessengers.cc,v 1.11 2000/01/11 17:22:32 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4VisManagerRegisterMessengers.cc,v 1.20 2000/06/07 08:43:29 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // G4VisManager::RegisterMessengers - John Allison 30/July/1998. #include "G4VisManager.hh" #include "G4VVisCommand.hh" +#include "G4VisCommandsCompound.hh" #include "G4VisCommandsScene.hh" #include "G4VisCommandsSceneAdd.hh" -#include "G4VisCommandsSceneInclude.hh" +#include "G4VisCommandsSceneInclude.hh" // Deprecated #include "G4VisCommandsSceneHandler.hh" #include "G4VisCommandsViewer.hh" +#include "G4VisCommandsViewerSet.hh" // OLD STYLE!! #include "G4VisManMessenger.hh" @@ -34,6 +36,7 @@ #include "G4VisCommandsRefresh.hh" #include "G4VisCommandsSet.hh" #include "G4VisCommandsShow.hh" +// END OLD STYLE!! #include "G4ios.hh" #include @@ -44,157 +47,408 @@ void G4VisManager::RegisterMessengers () { (Extract for working note.) +* means "not implemented yet". + + Introduction ============ -This note defines the concepts of scene, scene handler and viewers. +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 ====== -We introduce the concept of a graphics-system-independent scene, which -is a list of visualizable objects, such as detector components -(G4PhysicalVolumeModels), hits, trajectories. The G4VisManager -manages a list of scenes. +A scene is a list of visualizable objects, such as detector components, +hits, trajectories, axes, etc. -* means "not implemented yet". +Scenes are graphics-system-independent. + +The G4VisManager has a list of scenes. /vis/scene/create [] -/vis/scene/list [-l] [] + 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. + * /vis/scene/edit + /vis/scene/remove + Current scene can change or become invalid. + /vis/scene/add/ghosts [] + default: all + Adds to current scene. + * /vis/scene/add/ghost [] [] * [] [] + /vis/scene/add/logicalVolume [] -/vis/scene/add/volume [] [] [] -/vis/scene/include/hits [] (argument not impl'd yet.) -/vis/scene/include/trajectories [] (do.) -* /vis/scene/include/transientObjects + default: 1 + Adds to current scene. + +/vis/scene/add/volume [] [] [] + default: world 0 -1 + Adds to current scene. + +/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. + +* /vis/scene/add/transientObjects + Adds in current scene. + * /vis/scene/set/hitOption accumulate|byEvent + Affects current scene. + * /vis/scene/set/notifyOption immediate|delayed + Affects current scene. + * /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 a graphics-system-specific thing that turns a scene -into something that the graphics system can understand. +A scene handler is an object which knows how to interpret a scene for a +specific graphics system. -The commands would look something like: +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: auto-generated name + This scene handler becomes current. + The current scene, if any, is attached. -/vis/sceneHandler/create - [] [] /vis/sceneHandler/attach [] -/vis/sceneHandler/list + 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. + * /vis/sceneHandler/processScene + Refreshes all viewers of current scene handler. + Does not issue "update" (see /vis/viewer/update). + * /vis/sceneHandler/notifyEndOfProcessing + Issues "update" for each viewer of current scene handler. Viewers ======= -A viewer opens windows and draws to the screen, hardcopy, etc. It can -be dumb (a non-interactive window) or intelligent (respond to mouse -clicks, spawn other windows, change viewpoint, etc.). +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. -/vis/viewer/create [] [] -/vis/viewer/list -/vis/viewer/select [] -/vis/viewer/refresh [] -/vis/viewer/remove -* /vis/viewer/set/style wireframe|surface|logical -* /vis/viewer/set/viewpoint -* /vis/viewer/set/notifyOption immediate|delayed -* /vis/viewer/notifyHandler * /vis/viewer/clone -/vis/viewer/show [] -/vis/viewer/update - synonym for /vis/viewer/show. + 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/list [] [] + default: all 0 + Current viewer remains current. + +/vis/viewer/select + default: no default + This viewer becomes current. + +/vis/viewer/refresh [] + default: current viewer name + 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. + +(Now follow some viewer/set commands. A possible syntax is: + +* /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/style wireframe|surface + 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/culling global|coveredDaughters|invisible|density [true|false] + [density] [unit] + default: true + 0.01 g/cm3 + Affects current viewer. + +* /vis/viewer/set/hiddenMarker [true|false] + default: true + 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. + +* /vis/viewer/set/cutawayPlane ... + Set plane(s) for cutaway views. + Affects current viewer. + +* /vis/viewer/set/circleApproximationParameter [] +*or* 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/dolly [] +*or* /vis/viewer/dolly [] + default: 0 + Moves the camera incrementally in by this distance. + Affects current viewer. + +* /vis/viewer/set/dollyTo [] +*or* /vis/viewer/dollyTo [] + default: 0 + Moves the camera in this distance relative to standard target point. + Affects current viewer. + +*special* /vis/viewer/set/orbit + 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/pan [] [] +*or* /vis/viewer/pan [] [] + default: 0 0 + Moves the camera incrementatly right and up by these amounts. + Affects current viewer. + +* /vis/viewer/set/panTo [] [] +*or* /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/set/projection_style orthogonal|perspective [] [deg|rad] + default: 30 deg +*or* /vis/viewer/set/orthgonal +*or* /vis/viewer/set/perspective [] [deg|rad] + default: 30 deg + Affects current viewer. + +*special* /vis/viewer/set/spin + 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/viewpoint [deg|rad] + default: 0 0 deg +*or* /vis/viewer/set/viewpointVector [] [] [] + default: 0 0 1 + 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. + +* /vis/viewer/set/lights move-with-camera|move-with-object +*or* /vis/viewer/set/lightsMoveWithCamera ) ( Opposites, i.e., one +*or* /vis/viewer/set/lightsMoveWithObject ) ( negates the other. + Affects current viewer. + +* /vis/viewer/set/lights [deg|rad] + default: 0 0 deg +* /vis/viewer/set/lightsVector [] [] [] + default: 0 0 1 + Affects current viewer. + +* /vis/viewer/notifyOption immediate|delayed ?Issue of "update" after "set"? + +* /vis/viewer/notifyHandler ?? + +/vis/viewer/update [] + default: current viewer name + This viewer becomes current. -Global Commands -=============== +Attributes (nothing implemented yet) +========== -* /vis/copy/sceneAndView +The G4VisManager also keeps a list of visualization attributes which can +be created and changed and attributed to visualizable objects. + +* /vis/attributes/create [] + default: auto-generated name + These attributes become current. + +* /vis/attributes/set/colour [] [] [] [] [] +* /vis/attributes/set/color [] [] [] [] [] + default: current attributes name 1 1 1 1 + Sets colour (red, green, blue, opacity). + Affects current vis attributes. + +* /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/verbose [] + default: 0 + +* /vis/activate [true|false] + default: true + Activates/deactivates visualization system. + (Should this apply to user code only or all vis commands?) Compound Commands ================= -* /vis/create/view OGLSXM +/vis/open /vis/sceneHandler/create $1 + /vis/viewer/create -would be +* /vis/draw but this clashes with old /vis~/draw/, so... +/vis/drawVolume /vis/scene/create +Default: world /vis/scene/add/volume $1 + /vis/sceneHandler/attach + /vis/viewer/refresh + /vis/viewer/update -/vis/scene/create -/vis/sceneHandler/create $1 -/vis/sceneHandler/attach -/vis/viewer/create - -and - -* /vis/draw Calorimiter - -would be - -/vis/scene/add/volume $1 -/vis/scene/notifyHandlers -/vis/viewer/show - -or some such. +/vis/specify /vis/scene/create + /vis/scene/add/logicalVolume $1 + /vis/sceneHandler/attach + /vis/viewer/refresh + /vis/viewer/update + /geometry/print $1 ******************************************************************/ // Instantiate individual messengers/commands (usually one command // per messenger). - //A The GEANT4 commands available with the GEANT4 Visualization - //A System. - - // Introduction - - //I The GEANT4 Visualization System consists of a Visualization - //I Manager and a Visualization Interface. The problem is to design - //I a set of commands which offer the GEANT4 user good functionality - //I and, at the same time, maximally exploit the power of modern - //I graphics systems. The chief concept is the scene, a - //I graphics-system-independent list of visualizable GEANT4 objects, - //I which can be rendered to any graphics system in a variety of - //I ways. If the graphics system has its own graphical database, - //I this is used. - G4VVisCommand::SetVisManager (this); G4UIcommand* command; command = new G4UIdirectory ("/vis/"); command -> SetGuidance ("Visualization commands."); - //S \subsection {Scenes} - //S - //S A GEANT4 scene is a set of visualizable objects which can be created, - //S edited and copied independent of any graphics system. - command = new G4UIdirectory ("/vis/scene/"); command -> SetGuidance ("Operations on Geant4 scenes."); fMessengerList.append (new G4VisCommandSceneCreate); - // fMessengerList.append (new G4VisCommandSceneEdit); fMessengerList.append (new G4VisCommandSceneList); fMessengerList.append (new G4VisCommandSceneNotifyHandlers); fMessengerList.append (new G4VisCommandSceneSelect); fMessengerList.append (new G4VisCommandSceneRemove); + command = new G4UIdirectory ("/vis/scene/add/"); command -> SetGuidance ("Add model to current scene."); - fMessengerList.append (new G4VisCommandSceneAddVolume); fMessengerList.append (new G4VisCommandSceneAddGhosts); + fMessengerList.append (new G4VisCommandSceneAddHits); fMessengerList.append (new G4VisCommandSceneAddLogicalVolume); + fMessengerList.append (new G4VisCommandSceneAddTrajectories); + fMessengerList.append (new G4VisCommandSceneAddVolume); + command = new G4UIdirectory ("/vis/scene/include/"); - command -> SetGuidance ("Include drawing option in current scene."); + command -> SetGuidance ("Deprecated commands; now in /vis/scene/add/."); fMessengerList.append (new G4VisCommandSceneIncludeHits); fMessengerList.append (new G4VisCommandSceneIncludeTrajectories); + command = new G4UIdirectory ("/vis/sceneHandler/"); command -> SetGuidance ("Operations on Geant4 scene handlers."); fMessengerList.append (new G4VisCommandSceneHandlerAttach); @@ -202,14 +456,25 @@ or some such. fMessengerList.append (new G4VisCommandSceneHandlerList); fMessengerList.append (new G4VisCommandSceneHandlerSelect); fMessengerList.append (new G4VisCommandSceneHandlerRemove); + command = new G4UIdirectory ("/vis/viewer/"); command -> SetGuidance ("Operations on Geant4 viewers."); fMessengerList.append (new G4VisCommandViewerCreate); fMessengerList.append (new G4VisCommandViewerList); fMessengerList.append (new G4VisCommandViewerRefresh); fMessengerList.append (new G4VisCommandViewerRemove); + fMessengerList.append (new G4VisCommandViewerReset); fMessengerList.append (new G4VisCommandViewerSelect); - fMessengerList.append (new G4VisCommandViewerShow); + fMessengerList.append (new G4VisCommandViewerUpdate); + + command = new G4UIdirectory ("/vis/viewer/set/"); + command -> SetGuidance ("Set view parameters of current viewer."); + fMessengerList.append (new G4VisCommandsViewerSet); + + // Compound commands... + fMessengerList.append (new G4VisCommandOpen); + fMessengerList.append (new G4VisCommandDrawVolume); + fMessengerList.append (new G4VisCommandSpecify); // Camera - OLD STYLE!! fMessengerList.append diff --git a/source/visualization/management/src/G4VisStateDependent.cc b/source/visualization/management/src/G4VisStateDependent.cc index 22e1d97500..3bec71a218 100644 --- a/source/visualization/management/src/G4VisStateDependent.cc +++ b/source/visualization/management/src/G4VisStateDependent.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisStateDependent.cc,v 1.2 1999/12/15 14:54:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ #include "G4VisStateDependent.hh" diff --git a/source/visualization/management/src/G4VisToOldVisCommands.cc b/source/visualization/management/src/G4VisToOldVisCommands.cc index f520d84ebd..073fa42a03 100644 --- a/source/visualization/management/src/G4VisToOldVisCommands.cc +++ b/source/visualization/management/src/G4VisToOldVisCommands.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VisToOldVisCommands.cc,v 1.4 1999/12/15 14:54:27 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // Implements some /vis/ commands as /vis~/ temporarily. diff --git a/source/visualization/modeling/GNUmakefile b/source/visualization/modeling/GNUmakefile index ac3fe17ee1..7596a1ac47 100644 --- a/source/visualization/modeling/GNUmakefile +++ b/source/visualization/modeling/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.3 1999/11/10 18:20:55 johna Exp $ +# $Id: GNUmakefile,v 1.4 2000/04/07 13:32:42 gcosmo Exp $ # -------------------------------------------------------------- # GNUmakefile for modeling library. John Allison, 31/12/1997. # -------------------------------------------------------------- @@ -17,6 +17,7 @@ CPPFLAGS += -I$(G4BASE)/global/HEPGeometry/include CPPFLAGS += -I$(G4BASE)/geometry/management/include CPPFLAGS += -I$(G4BASE)/geometry/volumes/include CPPFLAGS += -I$(G4BASE)/geometry/solids/CSG/include +CPPFLAGS += -I$(G4BASE)/geometry/solids/specific/include CPPFLAGS += -I$(G4BASE)/geometry/solids/Boolean/include CPPFLAGS += -I$(G4BASE)/materials/include CPPFLAGS += -I$(G4BASE)/global/HEPRandom/include diff --git a/source/visualization/modeling/History b/source/visualization/modeling/History index 5d99d00b3d..756298b984 100644 --- a/source/visualization/modeling/History +++ b/source/visualization/modeling/History @@ -1,4 +1,4 @@ -$Id: History,v 1.3 1999/11/25 14:18:40 johna Exp $ +$Id: History,v 1.7 2000/05/29 09:59:14 johna Exp $ ------------------------------------------------------------------- ========================================================= @@ -20,6 +20,27 @@ committal in the CVS repository ! History file for visualization/modeling --------------------------------------- +29th May 2000 John Allison +- Moved code for maintaining depth, physical and logical volume + pointers from VisitGeometryAndGetVisReps to DescribeAndDescend to + handle daughters of replicas correctly (Guy Barrand). + +22nd May 2000 John Allison (modeling-V01-01-00) +- Added G4VTreeGraphicsScene (DTREE). +- Commented out pVPV->SetCopyNo(n) on Makoto's advice in + G4PhysicalVolumeModel.cc. + +vis-V01-01-01 12th April 2000 John Allison +- Made G4PhysicalVolumeModel::DescribeSolid virtual. +- G4PhysicalVolumeModel::DescribeSolid no longer deals with composite + solids - now programmed into CompositeSolid::CreatePolyhedron, where + CompositeSolid means G4IntersectionSolid, G4SubtractionSolid and + G4UnionSolid. +- G4PhysicalVolumeModel::DescribeSolid no longer deals with displaced + solids - now programmed into G4DisplacedSolid::CreatePolyhedron. +- Added G4LogicalVolumeModel::DescribeSolid, which explicitly adds + components of composite solids as white forced-wireframe objects. + vis-V00-01-10 25th November 1999 John Allison - Adapted header files of modeling for Software Reference Manual. diff --git a/source/visualization/modeling/include/G4BoundingSphereScene.hh b/source/visualization/modeling/include/G4BoundingSphereScene.hh index 812a0f718d..c33f59bf32 100644 --- a/source/visualization/modeling/include/G4BoundingSphereScene.hh +++ b/source/visualization/modeling/include/G4BoundingSphereScene.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4BoundingSphereScene.hh,v 1.6 1999/12/15 14:54:28 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4BoundingSphereScene.hh,v 1.7 2000/05/15 11:08:49 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 7th June 1997 @@ -45,9 +45,7 @@ public: void AddThis (const G4Polyhedra& s) {Accrue (s);} void AddThis (const G4VSolid& s) {Accrue (s);} void PreAddThis (const G4Transform3D& objectTransformation, - const G4VisAttributes&) { - fpObjectTransformation = &objectTransformation; - } + const G4VisAttributes&); void PostAddThis () {} G4VisExtent GetBoundingSphereExtent (); diff --git a/source/visualization/modeling/include/G4FlavoredParallelWorldModel.hh b/source/visualization/modeling/include/G4FlavoredParallelWorldModel.hh index b09a457941..1989496bf5 100644 --- a/source/visualization/modeling/include/G4FlavoredParallelWorldModel.hh +++ b/source/visualization/modeling/include/G4FlavoredParallelWorldModel.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4FlavoredParallelWorldModel.hh,v 1.5 1999/12/15 14:54:29 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 6069564fb9..fc518e9f97 100644 --- a/source/visualization/modeling/include/G4HitsModel.hh +++ b/source/visualization/modeling/include/G4HitsModel.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4HitsModel.hh,v 1.4 1999/12/15 14:54:29 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 26th August 1998. diff --git a/source/visualization/modeling/include/G4HitsModel.icc b/source/visualization/modeling/include/G4HitsModel.icc index 7a3a105f09..4931aa5576 100644 --- a/source/visualization/modeling/include/G4HitsModel.icc +++ b/source/visualization/modeling/include/G4HitsModel.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4HitsModel.icc,v 1.4 1999/12/15 14:54:29 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ inline G4String G4HitsModel::GetCurrentTag () const { return fGlobalTag; diff --git a/source/visualization/modeling/include/G4LogicalVolumeModel.hh b/source/visualization/modeling/include/G4LogicalVolumeModel.hh index cd075fdd9e..9fa11032b5 100644 --- a/source/visualization/modeling/include/G4LogicalVolumeModel.hh +++ b/source/visualization/modeling/include/G4LogicalVolumeModel.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LogicalVolumeModel.hh,v 1.3 1999/12/15 14:54:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LogicalVolumeModel.hh,v 1.4 2000/04/12 13:02:36 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 26th July 1999. @@ -49,6 +49,14 @@ public: // With description protected: + // This called from G4PhysicalVolumeModel::DescribeAndDescend by the + // virtual function mechanism. + void DescribeSolid + (const G4Transform3D& theAT, + G4VSolid* pSol, + const G4VisAttributes* pVisAttribs, + G4VGraphicsScene& sceneHandler); + ///////////////////////////////////////////////////////// // Data members... diff --git a/source/visualization/modeling/include/G4ModelingParameters.hh b/source/visualization/modeling/include/G4ModelingParameters.hh index 582e202b30..e3b3a23984 100644 --- a/source/visualization/modeling/include/G4ModelingParameters.hh +++ b/source/visualization/modeling/include/G4ModelingParameters.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ModelingParameters.hh,v 1.5 1999/12/15 14:54:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 31st December 1997. diff --git a/source/visualization/modeling/include/G4ModelingParameters.icc b/source/visualization/modeling/include/G4ModelingParameters.icc index 6d7d68e20a..4615d420fb 100644 --- a/source/visualization/modeling/include/G4ModelingParameters.icc +++ b/source/visualization/modeling/include/G4ModelingParameters.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ModelingParameters.icc,v 1.3 1999/12/15 14:54:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 31st December 1997. diff --git a/source/visualization/modeling/include/G4NullModel.hh b/source/visualization/modeling/include/G4NullModel.hh index ba3dfd095e..7c8b57d7fd 100644 --- a/source/visualization/modeling/include/G4NullModel.hh +++ b/source/visualization/modeling/include/G4NullModel.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4NullModel.hh,v 1.4 1999/12/15 14:54:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 4th April 1998. diff --git a/source/visualization/modeling/include/G4PhysicalVolumeModel.hh b/source/visualization/modeling/include/G4PhysicalVolumeModel.hh index 482a6cffcf..3c0234a90a 100644 --- a/source/visualization/modeling/include/G4PhysicalVolumeModel.hh +++ b/source/visualization/modeling/include/G4PhysicalVolumeModel.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PhysicalVolumeModel.hh,v 1.8 2000/01/11 17:19:04 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PhysicalVolumeModel.hh,v 1.9 2000/04/12 13:02:03 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 31st December 1997. @@ -93,10 +93,10 @@ protected: const G4Transform3D&, G4VGraphicsScene&); - void DescribeSolid (const G4Transform3D& theAT, - G4VSolid* pSol, - const G4VisAttributes* pVisAttribs, - G4VGraphicsScene& sceneHandler); + virtual void DescribeSolid (const G4Transform3D& theAT, + G4VSolid* pSol, + const G4VisAttributes* pVisAttribs, + G4VGraphicsScene& sceneHandler); G4bool IsThisCulled (const G4LogicalVolume*, const G4Material*); diff --git a/source/visualization/modeling/include/G4PhysicalVolumeSearchScene.hh b/source/visualization/modeling/include/G4PhysicalVolumeSearchScene.hh index b89e652f44..3fd5f829b2 100644 --- a/source/visualization/modeling/include/G4PhysicalVolumeSearchScene.hh +++ b/source/visualization/modeling/include/G4PhysicalVolumeSearchScene.hh @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PhysicalVolumeSearchScene.hh,v 1.6 1999/12/15 14:54:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PhysicalVolumeSearchScene.hh,v 1.7 2000/05/22 07:36:57 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 10th August 1998. @@ -56,7 +56,7 @@ public: const G4Transform3D& GetFoundTransformation () const; //////////////////////////////////////////////////////////////// - // Functions not used by required by the abstract interface. + // Functions not used but required by the abstract interface. virtual void BeginPrimitives (const G4Transform3D& objectTransformation) {} virtual void EndPrimitives () {} diff --git a/source/visualization/modeling/include/G4PhysicalVolumeSearchScene.icc b/source/visualization/modeling/include/G4PhysicalVolumeSearchScene.icc index d3c48688aa..0b1c789be8 100644 --- a/source/visualization/modeling/include/G4PhysicalVolumeSearchScene.icc +++ b/source/visualization/modeling/include/G4PhysicalVolumeSearchScene.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PhysicalVolumeSearchScene.icc,v 1.3 1999/12/15 14:54:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 10th August 1998. diff --git a/source/visualization/modeling/include/G4TrajectoriesModel.hh b/source/visualization/modeling/include/G4TrajectoriesModel.hh index d0a75d27f3..7a7fa0c6ab 100644 --- a/source/visualization/modeling/include/G4TrajectoriesModel.hh +++ b/source/visualization/modeling/include/G4TrajectoriesModel.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4TrajectoriesModel.hh,v 1.4 1999/12/15 14:54:30 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 26th August 1998. diff --git a/source/visualization/modeling/include/G4TrajectoriesModel.icc b/source/visualization/modeling/include/G4TrajectoriesModel.icc index 1e4e3237c4..d0058a674a 100644 --- a/source/visualization/modeling/include/G4TrajectoriesModel.icc +++ b/source/visualization/modeling/include/G4TrajectoriesModel.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4TrajectoriesModel.icc,v 1.4 1999/12/15 14:54:31 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ inline G4String G4TrajectoriesModel::GetCurrentTag () const { return fGlobalTag; diff --git a/source/visualization/modeling/include/G4VModel.hh b/source/visualization/modeling/include/G4VModel.hh index 8ec18ecbac..8a3526a007 100644 --- a/source/visualization/modeling/include/G4VModel.hh +++ b/source/visualization/modeling/include/G4VModel.hh @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VModel.hh,v 1.5 1999/12/15 14:54:31 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 31st December 1997. diff --git a/source/visualization/modeling/include/G4VModel.icc b/source/visualization/modeling/include/G4VModel.icc index 3ff866e15a..bd7f9fe8d6 100644 --- a/source/visualization/modeling/include/G4VModel.icc +++ b/source/visualization/modeling/include/G4VModel.icc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VModel.icc,v 1.4 1999/12/15 14:54:31 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 31st December 1997. diff --git a/source/visualization/modeling/include/G4VTreeGraphicsScene.hh b/source/visualization/modeling/include/G4VTreeGraphicsScene.hh new file mode 100644 index 0000000000..40ee8a3df0 --- /dev/null +++ b/source/visualization/modeling/include/G4VTreeGraphicsScene.hh @@ -0,0 +1,80 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4VTreeGraphicsScene.hh,v 1.1 2000/05/22 07:39:25 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// John Allison 18th May 2000 +// An artificial graphics scene to find dump geometry hierarchy. + +#ifndef G4VTREEGRAPHICSSCENE_HH +#define G4VTREEGRAPHICSSCENE_HH + +#include "G4VGraphicsScene.hh" +#include "G4VisExtent.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" +#include "G4VPhysicalVolume.hh" +#include "G4LogicalVolume.hh" + +class G4VTreeGraphicsScene: public G4VGraphicsScene { + +public: + G4VTreeGraphicsScene(); + virtual ~G4VTreeGraphicsScene (); + 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&) {} + +protected: + void Dump (const G4VSolid&); + G4int fCurrentDepth; // Current depth of geom. hierarchy. + G4VPhysicalVolume* fpCurrentPV; // Current physical volume. + G4LogicalVolume* fpCurrentLV; // Current logical volume. + const G4Transform3D* fpCurrentObjectTransformation; +}; + +#include "G4VTreeGraphicsScene.icc" + +#endif diff --git a/source/visualization/modeling/include/G4VTreeGraphicsScene.icc b/source/visualization/modeling/include/G4VTreeGraphicsScene.icc new file mode 100644 index 0000000000..f3bcd83495 --- /dev/null +++ b/source/visualization/modeling/include/G4VTreeGraphicsScene.icc @@ -0,0 +1,21 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4VTreeGraphicsScene.icc,v 1.1 2000/05/22 07:39:32 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// John Allison 18th May 2000 +// An artificial graphics scene to find dump geometry hierarchy. + +inline void G4VTreeGraphicsScene::PreAddThis +(const G4Transform3D& objectTransformation, + const G4VisAttributes&) { + fpCurrentObjectTransformation = &objectTransformation; +} + +inline void G4VTreeGraphicsScene::PostAddThis () {} diff --git a/source/visualization/modeling/src/G4BoundingSphereScene.cc b/source/visualization/modeling/src/G4BoundingSphereScene.cc index 75d9f39bdc..fae7d47f66 100644 --- a/source/visualization/modeling/src/G4BoundingSphereScene.cc +++ b/source/visualization/modeling/src/G4BoundingSphereScene.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4BoundingSphereScene.cc,v 1.3 1999/12/15 14:54:31 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4BoundingSphereScene.cc,v 1.4 2000/05/15 11:09:32 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 7th June 1997 @@ -24,6 +24,12 @@ G4BoundingSphereScene::G4BoundingSphereScene (): G4BoundingSphereScene::~G4BoundingSphereScene () {} +void G4BoundingSphereScene::PreAddThis +(const G4Transform3D& objectTransformation, + const G4VisAttributes&) { + fpObjectTransformation = &objectTransformation; +} + G4VisExtent G4BoundingSphereScene::GetBoundingSphereExtent () { return G4VisExtent (fCentre, fRadius); } @@ -73,3 +79,4 @@ void G4BoundingSphereScene::AccrueBoundingSphere } } } + diff --git a/source/visualization/modeling/src/G4FlavoredParallelWorldModel.cc b/source/visualization/modeling/src/G4FlavoredParallelWorldModel.cc index 19227db092..9f4ea71e9e 100644 --- a/source/visualization/modeling/src/G4FlavoredParallelWorldModel.cc +++ b/source/visualization/modeling/src/G4FlavoredParallelWorldModel.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4FlavoredParallelWorldModel.cc,v 1.4 1999/12/15 14:54:31 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-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 08249aef9a..be75c5d405 100644 --- a/source/visualization/modeling/src/G4HitsModel.cc +++ b/source/visualization/modeling/src/G4HitsModel.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4HitsModel.cc,v 1.4 1999/12/15 14:54:31 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 26th August 1998. diff --git a/source/visualization/modeling/src/G4LogicalVolumeModel.cc b/source/visualization/modeling/src/G4LogicalVolumeModel.cc index 3dca16de14..3ed83bc5cd 100644 --- a/source/visualization/modeling/src/G4LogicalVolumeModel.cc +++ b/source/visualization/modeling/src/G4LogicalVolumeModel.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4LogicalVolumeModel.cc,v 1.4 2000/01/17 10:34:48 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4LogicalVolumeModel.cc,v 1.5 2000/04/12 13:02:40 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 26th July 1999. @@ -66,7 +66,7 @@ void G4LogicalVolumeModel::DescribeYourselfTo G4PhysicalVolumeModel::DescribeYourselfTo (sceneHandler); fpMP = tpMP; - if (fpTopPV -> GetLogicalVolume () -> GetVoxelHeader ()) { + if (fpTopPV->GetLogicalVolume()->GetVoxelHeader()) { // Add Voxels. G4DrawVoxels dv; G4PlacedPolyhedronList* pPPL = @@ -81,3 +81,31 @@ void G4LogicalVolumeModel::DescribeYourselfTo delete pPPL; } } + +// This called from G4PhysicalVolumeModel::DescribeAndDescend by the +// virtual function mechanism. +void G4LogicalVolumeModel::DescribeSolid +(const G4Transform3D& theAT, + G4VSolid* pSol, + const G4VisAttributes* pVisAttribs, + G4VGraphicsScene& sceneHandler) { + // Look for "constituents". Could be a Boolean solid. + G4VSolid* pSol0 = pSol -> GetConstituentSolid (0); + if (pSol0) { // Composite solid... + G4VSolid* pSol1 = pSol -> GetConstituentSolid (1); + if (!pSol1) { + G4Exception + ("G4PhysicalVolumeModel::DescribeSolid:" + " 2nd component solid is missing."); + } + // Draw these constituents white and "forced wireframe"... + G4VisAttributes constituentAttributes; + constituentAttributes.SetForceWireframe(true); + DescribeSolid (theAT, pSol0, &constituentAttributes, sceneHandler); + DescribeSolid (theAT, pSol1, &constituentAttributes, sceneHandler); + } + // In any case draw the original/resultant solid... + sceneHandler.PreAddThis (theAT, *pVisAttribs); + pSol -> DescribeYourselfTo (sceneHandler); + sceneHandler.PostAddThis (); +} diff --git a/source/visualization/modeling/src/G4ModelingParameters.cc b/source/visualization/modeling/src/G4ModelingParameters.cc index cd914017d5..17b96f70be 100644 --- a/source/visualization/modeling/src/G4ModelingParameters.cc +++ b/source/visualization/modeling/src/G4ModelingParameters.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4ModelingParameters.cc,v 1.4 1999/12/15 14:54:31 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 31st December 1997. diff --git a/source/visualization/modeling/src/G4NullModel.cc b/source/visualization/modeling/src/G4NullModel.cc index f057aabbd3..86f7921c56 100644 --- a/source/visualization/modeling/src/G4NullModel.cc +++ b/source/visualization/modeling/src/G4NullModel.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4NullModel.cc,v 1.3 1999/12/15 14:54:32 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 4th April 1998. diff --git a/source/visualization/modeling/src/G4PhysicalVolumeModel.cc b/source/visualization/modeling/src/G4PhysicalVolumeModel.cc index db98cf8cde..96ef7a5181 100644 --- a/source/visualization/modeling/src/G4PhysicalVolumeModel.cc +++ b/source/visualization/modeling/src/G4PhysicalVolumeModel.cc @@ -5,8 +5,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4PhysicalVolumeModel.cc,v 1.8 2000/01/11 17:19:07 johna Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// $Id: G4PhysicalVolumeModel.cc,v 1.11 2000/05/29 09:59:15 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 31st December 1997. @@ -20,8 +20,6 @@ #include "G4VPVParameterisation.hh" #include "G4LogicalVolume.hh" #include "G4VSolid.hh" -#include "G4BooleanSolid.hh" -#include "G4DisplacedSolid.hh" #include "G4Material.hh" #include "G4VisAttributes.hh" #include "G4BoundingSphereScene.hh" @@ -158,14 +156,6 @@ void G4PhysicalVolumeModel::VisitGeometryAndGetVisReps // local variables to preserve re-entrancy. G4LogicalVolume* pLV = pVPV -> GetLogicalVolume (); - // Maintain data members and store in working space (via pointers to - // working space). - if (fpCurrentDepth) *fpCurrentDepth = fCurrentDepth; - fpCurrentPV = pVPV; - fpCurrentLV = pLV; - if (fppCurrentPV) *fppCurrentPV = fpCurrentPV; - if (fppCurrentLV) *fppCurrentLV = fpCurrentLV; - G4VSolid* pSol; G4Material* pMaterial; @@ -191,7 +181,7 @@ void G4PhysicalVolumeModel::VisitGeometryAndGetVisReps pMaterial = pP -> ComputeMaterial (n, pVPV); pP -> ComputeTransformation (n, pVPV); pSol -> ComputeDimensions (pP, n, pVPV); - pVPV -> SetCopyNo (n); + // pVPV -> SetCopyNo (n); // Uncertain of effect of this. DescribeAndDescend (pVPV, soughtDepth, pLV, pSol, pMaterial, theAT, sceneHandler); } @@ -249,7 +239,8 @@ void G4PhysicalVolumeModel::VisitGeometryAndGetVisReps } pVPV -> SetTranslation (translation); pVPV -> SetRotation (pRotation); - pVPV -> SetCopyNo (n); + // pVPV -> SetCopyNo (n); // Has no effect and might even be + // dangerous. pSol = pLV -> GetSolid (); pMaterial = pLV -> GetMaterial (); DescribeAndDescend (pVPV, soughtDepth, pLV, pSol, pMaterial, @@ -270,6 +261,14 @@ void G4PhysicalVolumeModel::DescribeAndDescend const G4Transform3D& theAT, G4VGraphicsScene& sceneHandler) { + // Maintain data members and store in working space (via pointers to + // working space). + if (fpCurrentDepth) *fpCurrentDepth = fCurrentDepth; + fpCurrentPV = pVPV; + fpCurrentLV = pLV; + if (fppCurrentPV) *fppCurrentPV = fpCurrentPV; + if (fppCurrentLV) *fppCurrentLV = fpCurrentLV; + const HepRotation* pObjectRotation = pVPV -> GetObjectRotation (); const Hep3Vector& translation = pVPV -> GetTranslation (); G4Transform3D theLT (G4Transform3D (*pObjectRotation, translation)); @@ -338,34 +337,9 @@ void G4PhysicalVolumeModel::DescribeSolid G4VSolid* pSol, const G4VisAttributes* pVisAttribs, G4VGraphicsScene& sceneHandler) { - // Look for "constituents". Could be a Boolean solid. - G4VSolid* pSol0 = pSol -> GetConstituentSolid (0); - if (pSol0) { - // Composite solid - describe components... - DescribeSolid (theAT, pSol0, pVisAttribs, sceneHandler); - G4VSolid* pSol1 = pSol -> GetConstituentSolid (1); - if (!pSol1) { - G4Exception - ("G4PhysicalVolumeModel::DescribeSolid:" - " 2nd component solid is missing."); - } - DescribeSolid (theAT, pSol1, pVisAttribs, sceneHandler); - } - else { // Non-composite solid. - G4DisplacedSolid* pDisSol = pSol -> GetDisplacedSolidPtr (); - if (pDisSol) { - sceneHandler.PreAddThis - (theAT * - G4Transform3D (pDisSol -> GetObjectRotation ().inverse (), - pDisSol -> GetObjectTranslation ()), - *pVisAttribs); - } - else { - sceneHandler.PreAddThis (theAT, *pVisAttribs); - } - pSol -> DescribeYourselfTo (sceneHandler); - sceneHandler.PostAddThis (); - } + sceneHandler.PreAddThis (theAT, *pVisAttribs); + pSol -> DescribeYourselfTo (sceneHandler); + sceneHandler.PostAddThis (); } G4bool G4PhysicalVolumeModel::IsThisCulled (const G4LogicalVolume* pLV, diff --git a/source/visualization/modeling/src/G4PhysicalVolumeSearchScene.cc b/source/visualization/modeling/src/G4PhysicalVolumeSearchScene.cc index 2d0d650f12..1676319d2a 100644 --- a/source/visualization/modeling/src/G4PhysicalVolumeSearchScene.cc +++ b/source/visualization/modeling/src/G4PhysicalVolumeSearchScene.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4PhysicalVolumeSearchScene.cc,v 1.4 1999/12/15 14:54:32 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 10th August 1998. diff --git a/source/visualization/modeling/src/G4TrajectoriesModel.cc b/source/visualization/modeling/src/G4TrajectoriesModel.cc index a846a149d4..b9950f52c2 100644 --- a/source/visualization/modeling/src/G4TrajectoriesModel.cc +++ b/source/visualization/modeling/src/G4TrajectoriesModel.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4TrajectoriesModel.cc,v 1.6 1999/12/15 14:54:32 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 26th August 1998. diff --git a/source/visualization/modeling/src/G4VModel.cc b/source/visualization/modeling/src/G4VModel.cc index 889dcb96ec..488ec7e1cb 100644 --- a/source/visualization/modeling/src/G4VModel.cc +++ b/source/visualization/modeling/src/G4VModel.cc @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G4VModel.cc,v 1.4 1999/12/15 14:54:32 gunter Exp $ -// GEANT4 tag $Name: geant4-01-01 $ +// GEANT4 tag $Name: geant4-02-00 $ // // // John Allison 31st December 1997. diff --git a/source/visualization/modeling/src/G4VTreeGraphicsScene.cc b/source/visualization/modeling/src/G4VTreeGraphicsScene.cc new file mode 100644 index 0000000000..81682fe136 --- /dev/null +++ b/source/visualization/modeling/src/G4VTreeGraphicsScene.cc @@ -0,0 +1,43 @@ +// This code implementation is the intellectual property of +// the GEANT4 collaboration. +// +// By copying, distributing or modifying the Program (or any work +// based on the Program) you indicate your acceptance of this statement, +// and all its terms. +// +// $Id: G4VTreeGraphicsScene.cc,v 1.1 2000/05/22 07:39:41 johna Exp $ +// GEANT4 tag $Name: geant4-02-00 $ +// +// +// John Allison 18th May 2000 +// An artificial graphics scene to find dump geometry hierarchy. + +#include "G4VTreeGraphicsScene.hh" + +#include "G4VSolid.hh" +#include "G4Vector3D.hh" +#include "G4PhysicalVolumeModel.hh" + +G4VTreeGraphicsScene::G4VTreeGraphicsScene(): + fCurrentDepth (0), + fpCurrentPV (0), + fpCurrentLV (0), + fpCurrentObjectTransformation (0) +{} + +G4VTreeGraphicsScene::~G4VTreeGraphicsScene () {} + +void G4VTreeGraphicsScene::EstablishSpecials +(G4PhysicalVolumeModel& pvModel) { + pvModel.DefinePointersToWorkingSpace (&fCurrentDepth, + &fpCurrentPV, + &fpCurrentLV); +} + +void G4VTreeGraphicsScene::Dump (const G4VSolid& solid) { + for (G4int i = 0; i < fCurrentDepth; i++ ) G4cout << " "; + G4cout << "\"" << fpCurrentPV -> GetName () + << "\", copy no. " << fpCurrentPV -> GetCopyNo () + << G4endl; + return; +}